<?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>196083</bug_id>
          
          <creation_ts>2019-03-21 10:14:23 -0700</creation_ts>
          <short_desc>Remove the SVG tear off objects for SVGLength, SVGLengthList and SVGAnimatedLengthList</short_desc>
          <delta_ts>2019-03-26 18:06:20 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>SVG</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>191237</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Said Abou-Hallawa">sabouhallawa</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>jonlee</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>sroberts</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1519698</commentid>
    <comment_count>0</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-03-21 10:14:23 -0700</bug_when>
    <thetext>This is part of removing the tear off objects of the SVG properties.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1519890</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-03-21 13:42:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/49121836&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1521017</commentid>
    <comment_count>2</comment_count>
      <attachid>365900</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-03-25 14:21:28 -0700</bug_when>
    <thetext>Created attachment 365900
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1521381</commentid>
    <comment_count>3</comment_count>
      <attachid>365981</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-03-26 11:57:46 -0700</bug_when>
    <thetext>Created attachment 365981
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1521411</commentid>
    <comment_count>4</comment_count>
      <attachid>365981</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-03-26 13:14:40 -0700</bug_when>
    <thetext>Comment on attachment 365981
Patch

Clearing flags on attachment: 365981

Committed r243515: &lt;https://trac.webkit.org/changeset/243515&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1521412</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-03-26 13:14:42 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1521551</commentid>
    <comment_count>6</comment_count>
    <who name="Shawn Roberts">sroberts</who>
    <bug_when>2019-03-26 17:19:20 -0700</bug_when>
    <thetext>It looks like https://trac.webkit.org/changeset/243515 is causing windows 10 build failures.

https://build.webkit.org/builders/Apple%20Win%2010%20Release%20%28Build%29/builds/3228

https://build.webkit.org/builders/Apple%20Win%2010%20Release%20%28Build%29/builds/3228/steps/compile-webkit/logs/stdio

Please let me know if it&apos;s a quick fix or we can roll out if you need more time?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1521569</commentid>
    <comment_count>7</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-03-26 18:06:20 -0700</bug_when>
    <thetext>Windows build fix: &lt;https://trac.webkit.org/changeset/243532&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>365900</attachid>
            <date>2019-03-25 14:21:28 -0700</date>
            <delta_ts>2019-03-26 11:57:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-196083-20190325142127.patch</filename>
            <type>text/plain</type>
            <size>289663</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQzNDQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzcyYWRkOWE5YzY3ZDM1
ODkyNjc4YzJjNjBiZjM1ZjlhMzdiZDlkOS4uNWNjMTU4MjdiMmEzMGIyNWQwYzU4ZDgyMmE2Mzc3
ZDA3MmFiMTcyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4MCBAQAorMjAxOS0wMy0yNSAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgdGhlIFNW
RyB0ZWFyIG9mZiBvYmplY3RzIGZvciBTVkdMZW5ndGgsIFNWR0xlbmd0aExpc3QgYW5kIFNWR0Fu
aW1hdGVkTGVuZ3RoTGlzdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTk2MDgzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgLS0gU1ZHTGVuZ3RoIHdpbGwgYmUgYSBzdXBlcmNsYXNzIG9mIFNWR1ZhbHVlUHJv
cGVydHk8U1ZHTGVuZ3RoVmFsdWU+LiBJdAorICAgICAgICAgICBpcyBhIHdyYXBwZXIgb2YgU1ZH
TGVuZ3RoVmFsdWUuIEl0IHdpbGwgYmUgcHJvdmlkZSB0aGUgRE9NIG1ldGhvZHMuIEl0CisgICAg
ICAgICAgIGNhbiBzZXRWYWx1ZUFzU3RyaW5nKCkgYW5kIHJldHVybiB2YWx1ZUFzU3RyaW5nKCku
CisKKyAgICAgICAgLS0gU1ZHTGVuZ3RoTGlzdCB3aWxsIGJlIGEgc3VwZXJjbGFzcyBvZiBTVkdW
YWx1ZVByb3BlcnR5TGlzdDxTVkdMZW5ndGg+LgorICAgICAgICAgICBUaGUgYmFzZSBjbGFzcyB3
aWxsIHByb3ZpZGUgYWxsIHRoZSBET00gbWV0aG9kcy4gU1ZHTGVuZ3RoTGlzdCB3aWxsIGJlCisg
ICAgICAgICAgIHJlc3BvbnNpYmxlIGZvciBwYXJzaW5nIGEgU3RyaW5nIHRvIGEgU1ZHTGVuZ3Ro
IGl0ZW1zLiBJdCBjYW4gYWxzbyAKKyAgICAgICAgICAgYnVpbGQgYSBzdHJpbmcgcmVwcmVzZW50
aW5nIHRoZSBzdG9yZWQgaXRlbXMuCisKKyAgICAgICAgLS0gU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0
IHdpbGwgYmUgZGVmaW5lZCBhcyBTVkdBbmltYXRlZFByb3BlcnR5TGlzdDxTVkdMZW5ndGhMaXN0
Pi4KKyAgICAgICAgICAgTGlrZSBTVkdBbmltYXRlZFBvaW50TGlzdCwgYWxsIHRoZSByZXF1aXJl
ZCBtZXRob2RzIGFuZCBhdHRyaWJ1dGVzCisgICAgICAgICAgIHdpbGwgYmUgaGFuZGxlZCBieSBT
VkdBbmltYXRlZFByb3BlcnR5TGlzdC4KKworICAgICAgICAtLSBTVkdBbmltYXRlZExlbmd0aEFj
Y2Vzc29yIGFuZCBTVkdBbmltYXRlZExlbmd0aExpc3RBY2Nlc3NvciB3aWxsIGJlCisgICAgICAg
ICAgIGFkZGVkIHRvIGFjY2VzcyB0aGUgbWVtYmVycyBvZiB0eXBlIFNWR0FuaW1hdGVkTGVuZ3Ro
IGFuZCAKKyAgICAgICAgICAgU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0LgorCisgICAgICAgIC0tIFNW
R0FuaW1hdGVkTGVuZ3RoQW5pbWF0b3IgYW5kIFNWR0FuaW1hdGVkTGVuZ3RoTGlzdEFuaW1hdG9y
IHdpbGwgYmUKKyAgICAgICAgICAgY3JlYXRlZCBieSB0aGUgdGhlIG5ldyBhY2Nlc3NvcnMgdG8g
YW5pbWF0ZSBhdHRyaWJ1dGVzIG9mIHR5cGVzCisgICAgICAgICAgIFNWR0FuaW1hdGVkTGVuZ3Ro
IGFuZCBTVkdBbmltYXRlZExlbmd0aExpc3QuCisKKyAgICAgICAgLS0gU1ZHQW5pbWF0aW9uTGVu
Z3RoRnVuY3Rpb24gYW5kIFNWR0FuaW1hdGlvbkxlbmd0aExpc3RGdW5jdGlvbiB3aWxsIGJlCisg
ICAgICAgICAgIHJlc3BvbnNpYmxlIGZvciBwcm9ncmVzc2luZyB0aGUgYW5pbVZhbCgpIG9mIGF0
dHJpYnV0ZXMgb2YgdHlwZXMKKyAgICAgICAgICAgU1ZHQW5pbWF0ZWRMZW5ndGggYW5kIFNWR0Fu
aW1hdGVkTGVuZ3RoTGlzdC4KKworICAgICAgICAtLSBTVkdWYWx1ZVByb3BlcnR5QW5pbWF0b3Ig
aXMgYSBuZXcgdGVtcGxhdGUgY2xhc3Mgd2hpY2ggY2FuIGFuaW1hdGUgYQorICAgICAgICAgICBu
b25lIHJlZmxlY3RpbmcgYXR0cmlidXRlIHdoaWNoIHNob3VsZCBiZSBiYWNrZWQgYnkgYSB2YWx1
ZSBwcm9wZXJ0eSwKKyAgICAgICAgICAgZS5nLiBTVkdMZW5ndGguCisKKyAgICAgICAgLS0gU1ZH
VmFsdWVQcm9wZXJ0eUxpc3RBbmltYXRvciBpcyBhIG5ldyB0ZW1wbGF0ZSBjbGFzcyB3aGljaCBj
YW4gYW5pbWF0ZSBhCisgICAgICAgICAgIG5vbmUgcmVmbGVjdGluZyBhdHRyaWJ1dGUgd2hpY2gg
c2hvdWxkIGJlIGJhY2tlZCBieSBhIHZhbHVlIHByb3BlcnR5CisgICAgICAgICAgIGxpc3QsIGUu
Zy4gU1ZHTGVuZ3RoTGlzdC4KKworICAgICAgICBOb3RlczoKKworICAgICAgICAgICAgLS0gU1ZH
RWxlbWVudDo6aXNBbmltYXRlZFN0eWxlQXR0cmlidXRlKCkgd2lsbCByZXR1cm4gdHJ5IGlmIHRo
ZQorICAgICAgICAgICAgICAgYXR0cmlidXRlIGlzIGtub3duIGJ5IFNWR1Byb3BlcnR5QW5pbWF0
b3JGYWN0b3J5LiBPciBpdCdzIGhhcyAKKyAgICAgICAgICAgICAgIGEgcmVmbGVjdGluZyBTVkdB
bmltYXRlZFByb3BlcnR5TGVuZ3RoIHByb3BlcnR5IGFuZCBpdHMgbmFtZSBpcworICAgICAgICAg
ICAgICAgb25lIG9mIHRoZSBuYW1lcyBsaXN0ZWQgaW4gaXNBbmltYXRlZFN0eWxlUHJvcGVydHlB
dHRyaWJ1dGUoKSBvZgorICAgICAgICAgICAgICAgdGhlIHByb3BlcnR5UmVnaXN0cnkoKSBvZiB0
aGUgU1ZHRWxlbWVudC4KKworICAgICAgICAgICAgLS0gU1ZHRWxlbWVudDo6Y29tbWl0UHJvcGVy
dHlDaGFuZ2UoKSBoYXMgdG8gaGFuZGxlIHRoZSBhdHRyaWJ1dGVzCisgICAgICAgICAgICAgICBm
b3Igd2hpY2ggaXNBbmltYXRlZFN0eWxlUHJvcGVydHlBdHRyaWJ1dGUoKSByZXR1cm5zIHRydWUg
ZGlmZmVyZW50CisgICAgICAgICAgICAgICBmcm9tIHRoZSBvdGhlciBvbmVzLiBzdHlsZVJlY2xh
YygpIG5lZWRzIHVwZGF0ZWQgYXR0cmlidXRlcyBzaW5jZQorICAgICAgICAgICAgICAgaXQgZG9l
cyBub3QgYWNjZXNzIHRoZSByZWZsZWN0aW5nIHByb3BlcnRpZXMgaW4gdGhlIFNWR0VMZW1lbnQu
CisKKyAgICAgICAgICAgIC0tIFNWR1RleHRDb250ZW50RWxlbWVudCBkb2VzIG5vdCBuZWVkIGEg
Y3VzdG9taXplZCBTVkdBbmltYXRlZExlbmd0aC4KKyAgICAgICAgICAgICAgIEFsbCBTVkdUZXh0
Q29udGVudEVsZW1lbnQ6OnRleHRMZW5ndGhBbmltYXRlZCgpIG5lZWRzIHRvIGtub3cgaXMKKyAg
ICAgICAgICAgICAgIHdoZXRoZXIgbV90ZXh0TGVuZ3RoLT5iYXNlVmFsKCkgaG9sZHMgYW4gZW1w
dHkgU1ZHTGVuZ3RoLiBJZiBpdAorICAgICAgICAgICAgICAgZG9lcywgaXQgc2V0cyBpdHMgdmFs
dWUgdG8gZ2V0Q29tcHV0ZWRUZXh0TGVuZ3RoKCkuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoK
KyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
cmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0QXR0cmlidXRlc0J1aWxkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6dXBkYXRlQ2hhcmFjdGVyRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdU
ZXh0TGF5b3V0QXR0cmlidXRlc0J1aWxkZXI6OmZpbGxDaGFyYWN0ZXJEYXRhTWFwKToKKyAgICAg
ICAgKiBzdmcvU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0FuaW1hdGVFbGVtZW50QmFzZTo6aGFzVmFsaWRBdHRyaWJ1dGVUeXBlIGNvbnN0KToKKyAgICAg
ICAgKiBzdmcvU1ZHQW5pbWF0ZWRMZW5ndGguY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHN2Zy9T
VkdBbmltYXRlZExlbmd0aC5oOiBSZW1vdmVkLgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZExl
bmd0aExpc3QuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZExlbmd0aExp
c3QuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRUeXBlLmg6CisgICAgICAg
IChXZWJDb3JlOjpTVkdBbmltYXRlZFR5cGU6OnR5cGUgY29uc3QpOgorICAgICAgICAqIHN2Zy9T
VkdBbmltYXRpb25FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGlvbkVs
ZW1lbnQ6OmlzVGFyZ2V0QXR0cmlidXRlQ1NTUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6
aW5oZXJpdHNGcm9tUHJvcGVydHkpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRvckZhY3Rvcnku
aDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdG9yRmFjdG9yeTo6aXNTdXBwb3J0ZWRBdHRy
aWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0b3JGYWN0b3J5OjpjcmVhdGUpOgor
ICAgICAgICBUaGVzZSBjaGFuZ2VzIHdlcmUgcmVxdWlyZWQgYmVjYXVzZSBzb21lIG9mIHRoZSB0
ZXN0cyB3ZXJlIHRyeWluZyB0bworICAgICAgICBhbmltYXRlZCB1bnN1cHBvcnRlZCBhdHRyaWJ1
dGVzLiBUbyBkaWZmZXJlbnRpYXRlIGJldHdlZW4gYmV0d2VlbiB0aGUKKyAgICAgICAgdGhlc2Ug
dHdvIGNhc2VzOgorICAgICAgICAgICAgMSkgdGhlIGF0dHJpYnV0ZSBpcyBhbmltYXRlLWFibGUg
YnkgdGhlIGxlZ2FjeSBjb250cm9sbGVyLgorICAgICAgICAgICAgMikgYW5pbWF0aW5nIHRoZSBh
dHRyaWJ1dGUgb3IgdGhlIGF0dHJpYnV0ZSBpdHNlbGYgaXMgbm90IHN1cHBvcnRlZAorICAgICAg
ICAgICAgICAgYnkgdGhlIGVsZW1lbnQuCisKKyAgICAgICAgV2Ugd2FudCBTVkdBbmltYXRvckZh
Y3RvcnkgdGVsbCB1cyB3aGV0aGVyIGl0IGNhbiBjcmVhdGUgYW4gYW5pbWF0b3IgZm9yCisgICAg
ICAgIGEgZ2l2ZW4gYXR0cmlidXRlIG9yIG5vdC4KKworICAgICAgICAqIHN2Zy9TVkdDaXJjbGVF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0NpcmNsZUVsZW1lbnQ6OlNWR0NpcmNs
ZUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ2lyY2xlRWxlbWVudDo6cGFyc2VBdHRy
aWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ2lyY2xlRWxlbWVudDo6c3ZnQXR0cmlidXRl
Q2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdDaXJjbGVFbGVtZW50OjpyZWdpc3RlckF0
dHJpYnV0ZXMpOiBEZWxldGVkLgorICAgICAgICAqIHN2Zy9TVkdDaXJjbGVFbGVtZW50Lmg6Cisg
ICAgICAgICogc3ZnL1NWR0N1cnNvckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
Q3Vyc29yRWxlbWVudDo6U1ZHQ3Vyc29yRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdD
dXJzb3JFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdDdXJz
b3JFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0N1
cnNvckVsZW1lbnQ6OnJlZ2lzdGVyQXR0cmlidXRlcyk6IERlbGV0ZWQuCisgICAgICAgICogc3Zn
L1NWR0N1cnNvckVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdFbGVtZW50Ojpjb21taXRQcm9wZXJ0eUNoYW5nZSk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdFbGVtZW50Ojppc0FuaW1hdGVkU3R5bGVBdHRyaWJ1dGUgY29uc3QpOgor
ICAgICAgICAqIHN2Zy9TVkdFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0VsbGlwc2VFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsbGlwc2VFbGVtZW50OjpTVkdFbGxpcHNl
RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGxpcHNlRWxlbWVudDo6cGFyc2VBdHRy
aWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxsaXBzZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0
ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxsaXBzZUVsZW1lbnQ6OnJlZ2lzdGVy
QXR0cmlidXRlcyk6IERlbGV0ZWQuCisgICAgICAgICogc3ZnL1NWR0VsbGlwc2VFbGVtZW50Lmg6
CisgICAgICAgICogc3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRmlsdGVyRWxlbWVudDo6U1ZHRmlsdGVyRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdGaWx0ZXJFbGVtZW50OjpyZWdpc3RlckF0dHJpYnV0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRmlsdGVyRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAqIHN2Zy9TVkdGaWx0
ZXJFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0
cmlidXRlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFy
ZEF0dHJpYnV0ZXM6OlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnBhcnNl
QXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJk
QXR0cmlidXRlczo6cmVnaXN0ZXJBdHRyaWJ1dGVzKTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcv
U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmg6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnggY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjp5IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRl
czo6d2lkdGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRmlsdGVyUHJpbWl0aXZlU3Rh
bmRhcmRBdHRyaWJ1dGVzOjpoZWlnaHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRmls
dGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjp4QW5pbWF0ZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjp5QW5pbWF0ZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjp3
aWR0aEFuaW1hdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5k
YXJkQXR0cmlidXRlczo6aGVpZ2h0QW5pbWF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRmls
dGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjppc0tub3duQXR0cmlidXRlKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBzdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ6OlNWR0ZvcmVpZ25PYmplY3RFbGVtZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZvcmVpZ25PYmplY3RFbGVtZW50OjpwYXJzZUF0dHJp
YnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGb3JlaWduT2JqZWN0RWxlbWVudDo6cmVnaXN0
ZXJBdHRyaWJ1dGVzKTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZHRm9yZWlnbk9iamVjdEVs
ZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ltYWdlRWxlbWVudDo6U1ZHSW1hZ2VFbGVtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0ltYWdlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHSW1hZ2VFbGVtZW50OjpyZWdpc3RlckF0dHJpYnV0ZXMpOiBEZWxldGVkLgorICAgICAgICAq
IHN2Zy9TVkdJbWFnZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHTGVuZ3RoLmg6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdMZW5ndGg6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdM
ZW5ndGg6OmNsb25lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0aDo6dW5pdFR5
cGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGVuZ3RoOjp2YWx1ZUZvckJpbmRpbmdzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0aDo6c2V0VmFsdWVGb3JCaW5kaW5ncyk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdMZW5ndGg6OnZhbHVlSW5TcGVjaWZpZWRVbml0cyk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdMZW5ndGg6OnNldFZhbHVlSW5TcGVjaWZpZWRVbml0cyk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdMZW5ndGg6OnNldFZhbHVlQXNTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHTGVuZ3RoOjpuZXdWYWx1ZVNwZWNpZmllZFVuaXRzKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0xlbmd0aDo6Y29udmVydFRvU3BlY2lmaWVkVW5pdHMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
TGVuZ3RoOjp2YWx1ZUFzU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0xl
bmd0aDo6U1ZHTGVuZ3RoKTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZHTGVuZ3RoTGlzdC5o
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGVuZ3RoTGlzdDo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0xlbmd0aExpc3Q6Omxlbmd0aE1vZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHTGVuZ3RoTGlzdDo6cGFyc2UpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGVuZ3RoTGlz
dDo6U1ZHTGVuZ3RoTGlzdCk6CisgICAgICAgICogc3ZnL1NWR0xlbmd0aExpc3RWYWx1ZXMuY3Bw
OiBSZW1vdmVkLgorICAgICAgICAqIHN2Zy9TVkdMZW5ndGhMaXN0VmFsdWVzLmg6IFJlbW92ZWQu
CisgICAgICAgICogc3ZnL1NWR0xpbmVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0xpbmVFbGVtZW50OjpTVkdMaW5lRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdMaW5l
RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGluZUVsZW1l
bnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGluZUVsZW1l
bnQ6OnJlZ2lzdGVyQXR0cmlidXRlcyk6IERlbGV0ZWQuCisgICAgICAgICogc3ZnL1NWR0xpbmVF
bGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ6OlNWR0xpbmVhckdyYWRp
ZW50RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ6
OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xpbmVhckdyYWRpZW50RWxl
bWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdMaW5lYXJH
cmFkaWVudEVsZW1lbnQ6OnJlZ2lzdGVyQXR0cmlidXRlcyk6IERlbGV0ZWQuCisgICAgICAgICog
c3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdNYXJrZXJF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hcmtlckVsZW1lbnQ6OlNWR01hcmtl
ckVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWFya2VyRWxlbWVudDo6cmVnaXN0ZXJB
dHRyaWJ1dGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hcmtlckVsZW1lbnQ6OnBhcnNlQXR0
cmlidXRlKToKKyAgICAgICAgKiBzdmcvU1ZHTWFya2VyRWxlbWVudC5oOgorICAgICAgICAqIHN2
Zy9TVkdNYXNrRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXNrRWxlbWVudDo6
U1ZHTWFza0VsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWFza0VsZW1lbnQ6OnJlZ2lz
dGVyQXR0cmlidXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXNrRWxlbWVudDo6cGFyc2VB
dHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWFza0VsZW1lbnQ6OnN2Z0F0dHJpYnV0
ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdNYXNrRWxlbWVudC5oOgorICAgICAgICAqIHN2
Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXR0ZXJuRWxl
bWVudDo6U1ZHUGF0dGVybkVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0dGVybkVs
ZW1lbnQ6OnJlZ2lzdGVyQXR0cmlidXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXR0ZXJu
RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAqIHN2Zy9TVkdQYXR0ZXJuRWxlbWVu
dC5oOgorICAgICAgICAqIHN2Zy9TVkdQb2ludC5oOgorICAgICAgICAqIHN2Zy9TVkdSYWRpYWxH
cmFkaWVudEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmFkaWFsR3JhZGllbnRF
bGVtZW50OjpTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
UmFkaWFsR3JhZGllbnRFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50OjpyZWdpc3RlckF0dHJpYnV0ZXMp
OiBEZWxldGVkLgorICAgICAgICAqIHN2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuaDoKKyAg
ICAgICAgKiBzdmcvU1ZHUmVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVj
dEVsZW1lbnQ6OlNWR1JlY3RFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlY3RFbGVt
ZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZWN0RWxlbWVudDo6
c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZWN0RWxlbWVudDo6
cmVnaXN0ZXJBdHRyaWJ1dGVzKTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZHUmVjdEVsZW1l
bnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHU1ZHRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdTVkdFbGVtZW50OjpTVkdTVkdFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NW
R0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1l
bnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU1ZHRWxlbWVu
dDo6cmVnaXN0ZXJBdHRyaWJ1dGVzKTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZHU1ZHRWxl
bWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHVGV4dENvbnRlbnRFbGVtZW50OjpTVkdUZXh0Q29udGVudEVsZW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dENvbnRlbnRFbGVtZW50OjpyZWdpc3RlckF0dHJp
YnV0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dENvbnRlbnRFbGVtZW50OjpwYXJzZUF0
dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0Q29udGVudEVsZW1lbnQ6OnN2Z0F0
dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dENvbnRlbnRFbGVtZW50
Ojp0ZXh0TGVuZ3RoQW5pbWF0ZWQpOgorICAgICAgICAqIHN2Zy9TVkdUZXh0Q29udGVudEVsZW1l
bnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRDb250ZW50RWxlbWVudDo6c3BlY2lmaWVk
VGV4dExlbmd0aCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0Q29udGVudEVsZW1l
bnQ6OnRleHRMZW5ndGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dENvbnRlbnRF
bGVtZW50OjpzcGVjaWZpZWRUZXh0TGVuZ3RoKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlNWR1RleHRDb250ZW50RWxlbWVudDo6dGV4dExlbmd0aEFuaW1hdGVkKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1RleHRDb250ZW50RWxlbWVudDo6U1ZHQW5pbWF0ZWRDdXN0b21M
ZW5ndGhBdHRyaWJ1dGU6OlNWR0FuaW1hdGVkQ3VzdG9tTGVuZ3RoQXR0cmlidXRlKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRDb250ZW50RWxlbWVudDo6U1ZHQW5pbWF0ZWRD
dXN0b21MZW5ndGhBdHRyaWJ1dGU6OnN5bmNocm9uaXplKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlNWR1RleHRDb250ZW50RWxlbWVudDo6U1ZHQW5pbWF0ZWRDdXN0b21MZW5ndGhBdHRy
aWJ1dGU6OmFuaW1hdGVkUHJvcGVydHkpOiBEZWxldGVkLgorICAgICAgICAqIHN2Zy9TVkdUZXh0
UGF0aEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dFBhdGhFbGVtZW50OjpT
VkdUZXh0UGF0aEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dFBhdGhFbGVtZW50
OjpyZWdpc3RlckF0dHJpYnV0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dFBhdGhFbGVt
ZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5o
OgorICAgICAgICAqIHN2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQ6OlNWR1RleHRQb3NpdGlvbmluZ0Vs
ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudDo6cGFy
c2VBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVu
dDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0UG9zaXRp
b25pbmdFbGVtZW50OjpyZWdpc3RlckF0dHJpYnV0ZXMpOiBEZWxldGVkLgorICAgICAgICAqIHN2
Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0
UG9zaXRpb25pbmdFbGVtZW50Ojp4IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRQ
b3NpdGlvbmluZ0VsZW1lbnQ6OnkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dFBv
c2l0aW9uaW5nRWxlbWVudDo6ZHggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dFBv
c2l0aW9uaW5nRWxlbWVudDo6ZHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dFBv
c2l0aW9uaW5nRWxlbWVudDo6eEFuaW1hdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRQ
b3NpdGlvbmluZ0VsZW1lbnQ6OnlBbmltYXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0
UG9zaXRpb25pbmdFbGVtZW50OjpkeEFuaW1hdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Rl
eHRQb3NpdGlvbmluZ0VsZW1lbnQ6OmR5QW5pbWF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
VGV4dFBvc2l0aW9uaW5nRWxlbWVudDo6aXNLbm93bkF0dHJpYnV0ZSk6IERlbGV0ZWQuCisgICAg
ICAgICogc3ZnL1NWR1VzZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVXNlRWxl
bWVudDo6U1ZHVXNlRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdVc2VFbGVtZW50Ojpw
YXJzZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdVc2VFbGVtZW50OjpzdmdBdHRy
aWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1VzZUVsZW1lbnQ6OnJlZ2lzdGVy
QXR0cmlidXRlcyk6IERlbGV0ZWQuCisgICAgICAgICogc3ZnL1NWR1VzZUVsZW1lbnQuaDoKKyAg
ICAgICAgKiBzdmcvU1ZHVmFsdWUuaDoKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdBbmlt
YXRlZFByb3BlcnR5QWNjZXNzb3JJbXBsLmg6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZH
QW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9yLmg6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZH
QW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9ySW1wbC5oOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVz
L1NWR0FuaW1hdGVkUHJvcGVydHlJbXBsLmg6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZH
QW5pbWF0aW9uQWRkaXRpdmVMaXN0RnVuY3Rpb25JbXBsLmg6CisgICAgICAgIChXZWJDb3JlOjpT
VkdBbmltYXRpb25MZW5ndGhMaXN0RnVuY3Rpb246OlNWR0FuaW1hdGlvbkxlbmd0aExpc3RGdW5j
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRpb25MZW5ndGhMaXN0RnVuY3Rpb246
OnByb2dyZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGlvbk51bWJlckxpc3RGdW5j
dGlvbjo6cHJvZ3Jlc3MpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0aW9uUG9pbnRMaXN0
RnVuY3Rpb246OnByb2dyZXNzKToKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdBbmltYXRp
b25BZGRpdGl2ZVZhbHVlRnVuY3Rpb25JbXBsLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmlt
YXRpb25MZW5ndGhGdW5jdGlvbjo6U1ZHQW5pbWF0aW9uTGVuZ3RoRnVuY3Rpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHQW5pbWF0aW9uTGVuZ3RoRnVuY3Rpb246OnByb2dyZXNzKToKKyAgICAg
ICAgKiBzdmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1dGVBbmltYXRvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdBdHRyaWJ1dGVBbmltYXRvcjo6aXNBbmltYXRlZFN0eWxlUHJvcGVydHlBbmlh
bXRvciBjb25zdCk6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlQW5pbWF0
b3IuaDoKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1dGVSZWdpc3RyeS5oOgor
ICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5QW5pbWF0b3JGYWN0b3J5Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdQcm9wZXJ0eUFuaW1hdG9yRmFjdG9yeTo6Y3JlYXRlTGVuZ3Ro
QW5pbWF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUHJvcGVydHlBbmltYXRvckZhY3Rvcnk6
OmNyZWF0ZUxlbmd0aExpc3RBbmltYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdQcm9wZXJ0
eUFuaW1hdG9yRmFjdG9yeTo6YXR0cmlidXRlQW5pbWF0b3JDcmVhdG9yKToKKyAgICAgICAgKiBz
dmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnkuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1Byb3BlcnR5T3duZXJSZWdpc3RyeTo6cmVnaXN0ZXJQcm9wZXJ0eSk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk6OmlzQW5pbWF0ZWRMZW5ndGhBdHRy
aWJ1dGUpOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5UmVnaXN0cnkuaDoK
KyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdWYWx1ZVByb3BlcnR5QW5pbWF0b3IuaDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpTVkdWYWx1ZVByb3BlcnR5QW5pbWF0b3I6OlNWR1ZhbHVl
UHJvcGVydHlBbmltYXRvcik6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHVmFsdWVQcm9w
ZXJ0eUFuaW1hdG9ySW1wbC5oOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdW
YWx1ZVByb3BlcnR5TGlzdEFuaW1hdG9yLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZH
VmFsdWVQcm9wZXJ0eUxpc3RBbmltYXRvcjo6U1ZHVmFsdWVQcm9wZXJ0eUxpc3RBbmltYXRvcik6
CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHVmFsdWVQcm9wZXJ0eUxpc3RBbmltYXRvcklt
cGwuaDogQWRkZWQuCisKIDIwMTktMDMtMjUgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUu
Y29tPgogCiAgICAgICAgIFRvZ2dsaW5nICJkaXNwbGF5OiBjb250ZW50cyIgdG8gImRpc3BsYXk6
IG5vbmUiIGZhaWxzIHRvIGhpZGUgdGhlIGVsZW1lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggNWNkZTc4
YmNlMTVlMmIzNWJmMzhhM2NkMTU5YTcwY2Y1ZmVlMTc3NS4uMDIzZTljODcxODg3NmU0NWU0Njdl
NTFiNzU2ODQ2MDBhNTFlYThjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50
eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTIyNzMsOCArMjI3Myw2IEBA
IHN2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHAKIHN2Zy9TVkdBbmltYXRlVHJhbnNmb3Jt
RWxlbWVudC5jcHAKIHN2Zy9TVkdBbmltYXRlZEFuZ2xlLmNwcAogc3ZnL1NWR0FuaW1hdGVkRW51
bWVyYXRpb24uY3BwCi1zdmcvU1ZHQW5pbWF0ZWRMZW5ndGguY3BwCi1zdmcvU1ZHQW5pbWF0ZWRM
ZW5ndGhMaXN0LmNwcAogc3ZnL1NWR0FuaW1hdGVkUGF0aC5jcHAKIHN2Zy9TVkdBbmltYXRlZFRy
YW5zZm9ybUxpc3QuY3BwCiBzdmcvU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IuY3BwCkBAIC0yMzQw
LDcgKzIzMzgsNiBAQCBzdmcvU1ZHSW1hZ2VMb2FkZXIuY3BwCiBzdmcvU1ZHTGFuZ1NwYWNlLmNw
cAogc3ZnL1NWR0xlZ2FjeUF0dHJpYnV0ZUFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwCiBzdmcvU1ZH
TGVuZ3RoQ29udGV4dC5jcHAKLXN2Zy9TVkdMZW5ndGhMaXN0VmFsdWVzLmNwcAogc3ZnL1NWR0xl
bmd0aFZhbHVlLmNwcAogc3ZnL1NWR0xpbmVFbGVtZW50LmNwcAogc3ZnL1NWR0xpbmVhckdyYWRp
ZW50RWxlbWVudC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCA5YjBmNTNhYzU0OTI4ZTg3OGUzMDBhZDJjYzg1MDVlMzBkYWYw
MDkyLi40OGMxOTU3MGQ0ZTQ1YjBhZWZjMjZlMzA5M2E3N2NmZjI3ZWIzMTNlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yNzQs
OCArMjc0LDYgQEAKIAkJMDg4QTBFMEIxMjZFRjFEQjAwOTc4RjdBIC8qIFNWR1Byb3BlcnR5VGVh
ck9mZi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg4
QTBFMDIxMjZFRjFEQjAwOTc4RjdBIC8qIFNWR1Byb3BlcnR5VGVhck9mZi5oICovOyB9OwogCQkw
ODhBMEUwQzEyNkVGMURCMDA5NzhGN0EgLyogU1ZHUHJvcGVydHlUcmFpdHMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4OEEwRTAzMTI2RUYxREIwMDk3
OEY3QSAvKiBTVkdQcm9wZXJ0eVRyYWl0cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTA4OEMyRjdBMTIzOTAwODEwMDNENjVDRSAvKiBTVkdUZXh0
TGF5b3V0QXR0cmlidXRlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMDg4QzJGNzYxMjM5MDA4MDAwM0Q2NUNFIC8qIFNWR1RleHRMYXlvdXRBdHRyaWJ1
dGVzLmggKi87IH07Ci0JCTA4OTAyMUE5MTI2RUY1REUwMDkyRDVFQSAvKiBTVkdBbmltYXRlZExl
bmd0aC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg5
MDIxQTgxMjZFRjVERTAwOTJENUVBIC8qIFNWR0FuaW1hdGVkTGVuZ3RoLmggKi87IH07Ci0JCTA4
OTAyMUFEMTI2RUY1RTkwMDkyRDVFQSAvKiBTVkdBbmltYXRlZExlbmd0aExpc3QuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4OTAyMUFDMTI2RUY1RTkw
MDkyRDVFQSAvKiBTVkdBbmltYXRlZExlbmd0aExpc3QuaCAqLzsgfTsKIAkJMDg5NTgyNTYwRTg1
N0E3RTAwRjgyQzgzIC8qIEltYWdlTG9hZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwODk1ODI1NDBFODU3QTdFMDBGODJDODMgLyogSW1hZ2VMb2Fk
ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkw
ODlBOEUwNzEyOEQ4QjNEMDBFN0E1MzQgLyogU1ZHQW5pbWF0ZWRQYXRoU2VnTGlzdFByb3BlcnR5
VGVhck9mZi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDg5QThFMDYxMjhEOEIzRDAwRTdBNTM0IC8qIFNWR0FuaW1hdGVkUGF0aFNlZ0xpc3RQcm9wZXJ0
eVRlYXJPZmYuaCAqLzsgfTsKIAkJMDhBNDg0NzgwRTUyNzJDNTAwQzNGRTc2IC8qIFNjcmlwdEVs
ZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4
QTQ4NDc2MEU1MjcyQzUwMEMzRkU3NiAvKiBTY3JpcHRFbGVtZW50LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTIyMzEsNyArMjIyOSw2IEBACiAJ
CTdDMzBEOTg2MUY4MTVBRUMwMDI2ODM1NiAvKiBKU0Fib3J0U2lnbmFsLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzMwRDk4MTFGODE1QUMxMDAyNjgz
NTYgLyogSlNBYm9ydFNpZ25hbC5oICovOyB9OwogCQk3QzMzMEEwMjFERjhGQUM2MDBEMzM5NUMg
LyogR3JhcGhpY3NDb250ZXh0M0RBdHRyaWJ1dGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzMzMEEwMTFERjhGQUM2MDBEMzM5NUMgLyogR3JhcGhp
Y3NDb250ZXh0M0RBdHRyaWJ1dGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJN0MzMzBBMDgxREY5Rjk1MTAwRDMzOTVDIC8qIEpTUG9zaXRpb25P
cHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
QzMzMEEwNjFERjlGOTUxMDBEMzM5NUMgLyogSlNQb3NpdGlvbk9wdGlvbnMuaCAqLzsgfTsKLQkJ
N0MzOUMzNjUxRERBODY1MjAwRkVGQjI5IC8qIFNWR0xlbmd0aExpc3RWYWx1ZXMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMzlDMzYzMUREQTg2NDkw
MEZFRkIyOSAvKiBTVkdMZW5ndGhMaXN0VmFsdWVzLmggKi87IH07CiAJCTdDM0E5MUU2MUM5NjNC
ODgwMEQxQTdFMyAvKiBDbGlwYm9hcmRBY2Nlc3NQb2xpY3kuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDM0E5MUU1MUM5NjNCODgwMEQxQTdFMyAvKiBD
bGlwYm9hcmRBY2Nlc3NQb2xpY3kuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk3QzNCNzk3MTE5MDg3NTdCMDBCNDdBMkQgLyogVXNlck1lc3NhZ2VI
YW5kbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDdDM0I3OTZGMTkwODc1N0IwMEI0N0EyRCAvKiBVc2VyTWVzc2FnZUhhbmRsZXIuY3BwICovOyB9
OwogCQk3QzNCNzk3MjE5MDg3NTdCMDBCNDdBMkQgLyogVXNlck1lc3NhZ2VIYW5kbGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzNCNzk3MDE5MDg3
NTdCMDBCNDdBMkQgLyogVXNlck1lc3NhZ2VIYW5kbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTU2NDcsOCArNTY0NCw2IEBACiAJCTA4OEEw
RTAzMTI2RUYxREIwMDk3OEY3QSAvKiBTVkdQcm9wZXJ0eVRyYWl0cy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTVkdQcm9wZXJ0eVRyYWl0cy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwODhDMkY3NTEyMzkwMDgwMDAzRDY1Q0UgLyogU1ZHVGV4dExheW91dEF0
dHJpYnV0ZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHVGV4
dExheW91dEF0dHJpYnV0ZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwODhD
MkY3NjEyMzkwMDgwMDAzRDY1Q0UgLyogU1ZHVGV4dExheW91dEF0dHJpYnV0ZXMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHVGV4dExheW91dEF0dHJpYnV0ZXMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMDg5MDIxQTgxMjZFRjVERTAwOTJENUVBIC8qIFNW
R0FuaW1hdGVkTGVuZ3RoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0Fu
aW1hdGVkTGVuZ3RoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTA4OTAyMUFDMTI2
RUY1RTkwMDkyRDVFQSAvKiBTVkdBbmltYXRlZExlbmd0aExpc3QuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTA4OTU4MjUzMEU4NTdBN0UwMEY4MkM4MyAvKiBJbWFnZUxvYWRlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbWFnZUxvYWRlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4OTU4MjU0MEU4NTdBN0UwMEY4MkM4MyAv
KiBJbWFnZUxvYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZUxv
YWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwODlBOEUwNjEyOEQ4QjNEMDBF
N0E1MzQgLyogU1ZHQW5pbWF0ZWRQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZi5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdBbmltYXRlZFBhdGhTZWdMaXN0UHJvcGVydHlU
ZWFyT2ZmLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03NTY2LDcgKzc1NjEsNiBA
QAogCQk0MjdEQTcxQjEzNzM1REZBMDA3QzU3RkIgLyogSlNTZXJ2aWNlV29ya2VySW50ZXJuYWxz
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU2VydmljZVdvcmtl
ckludGVybmFscy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQyN0RBNzFDMTM3
MzVERkEwMDdDNTdGQiAvKiBKU1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTZXJ2aWNlV29ya2VySW50ZXJuYWxzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQzMTA3QkUxMThDQzE5REUwMENDMThFOCAvKiBTZWxlY3Rv
clBzZXVkb1R5cGVNYXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2VsZWN0
b3JQc2V1ZG9UeXBlTWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQzMUEyRkQ2
MTNCNzcwN0EwMDc3OTFFNCAvKiBTVkdBbmltYXRlZExlbmd0aExpc3QuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDMyRDNGRTcxOEE4NjU4NDAwRDdEQzAzIC8qIFNl
bGVjdG9yQ2hlY2tlclRlc3RGdW5jdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU2VsZWN0b3JDaGVja2VyVGVzdEZ1bmN0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0MzU4RTg3QTEzNjBBMkVFMDBFNDc0OEMgLyogSlNTVkdGRURyb3BTaGFkb3dF
bGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU1ZHRkVE
cm9wU2hhZG93RWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQzNThF
ODdCMTM2MEEyRUUwMEU0NzQ4QyAvKiBKU1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTVkdGRURyb3BTaGFkb3dFbGVtZW50Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03NjI5LDcgKzc2MjMsNiBAQAogCQk0MzY3MDhC
OTEyRDlDQTRCMDAwNDQyMzQgLyogU1ZHUmVzb3VyY2VzQ2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU1ZHUmVzb3VyY2VzQ2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDM2NzA4QkExMkQ5Q0E0QjAwMDQ0MjM0IC8qIFNWR1Jlc291cmNlc0N5Y2xl
U29sdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR1Jlc291
cmNlc0N5Y2xlU29sdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDM2NzA4
QkIxMkQ5Q0E0QjAwMDQ0MjM0IC8qIFNWR1Jlc291cmNlc0N5Y2xlU29sdmVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1Jlc291cmNlc0N5Y2xlU29sdmVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQzODE3NjNBMTNBNjk3RDQwMDdEMTE4NyAvKiBTVkdB
bmltYXRlZExlbmd0aC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBT
VkdBbmltYXRlZExlbmd0aC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQzOTA0
NkMzMTJEQTI1RTgwMEFGODBBMiAvKiBSZW5kZXJNYXRoTUxCbG9jay5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJNYXRoTUxCbG9jay5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQzOTA0NkM0MTJEQTI1RTgwMEFGODBBMiAvKiBSZW5kZXJN
YXRoTUxCbG9jay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJNYXRo
TUxCbG9jay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MzkwNDZDNTEyREEyNUU4
MDBBRjgwQTIgLyogUmVuZGVyTWF0aE1MRmVuY2VkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFJlbmRlck1hdGhNTEZlbmNlZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC05NTMxLDYgKzk1MjQsMTAgQEAKIAkJNzJGMUFEQTExQTM5MDRDMzAwMDE0
RTE4IC8qIEVYVEZyYWdEZXB0aC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRVhURnJhZ0Rl
cHRoLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJGMUFEQTMxQTM5MEI5RjAw
MDE0RTE4IC8qIEpTRVhURnJhZ0RlcHRoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTRVhURnJhZ0RlcHRoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNzJGMUFEQTQxQTM5MEI5RjAwMDE0RTE4IC8qIEpTRVhURnJhZ0RlcHRoLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRVhURnJhZ0RlcHRoLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTcyRkIyMzg0MjI0OTdBRDQwMDdFNUFDNyAvKiBTVkdWYWx1ZVByb3Bl
cnR5QW5pbWF0b3JJbXBsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1Zh
bHVlUHJvcGVydHlBbmltYXRvckltcGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NzJGQjIzODYyMjQ5N0FENTAwN0U1QUM3IC8qIFNWR1ZhbHVlUHJvcGVydHlBbmltYXRvci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdWYWx1ZVByb3BlcnR5QW5pbWF0b3Iu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzJGQjIzODcyMjQ5N0IxNTAwN0U1QUM3
IC8qIFNWR1ZhbHVlUHJvcGVydHlMaXN0QW5pbWF0b3JJbXBsLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFNWR1ZhbHVlUHJvcGVydHlMaXN0QW5pbWF0b3JJbXBsLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyRkIyMzg4MjI0OTdCMTUwMDdFNUFDNyAvKiBTVkdW
YWx1ZVByb3BlcnR5TGlzdEFuaW1hdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFNWR1ZhbHVlUHJvcGVydHlMaXN0QW5pbWF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNzU1M0NGRTYxMDhGNDczRjAwRUEyODFFIC8qIFRpbWVsaW5lUmVjb3JkRmFjdG9y
eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUaW1lbGluZVJlY29yZEZhY3Rv
cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzU1M0NGRTcxMDhGNDczRjAwRUEy
ODFFIC8qIFRpbWVsaW5lUmVjb3JkRmFjdG9yeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBUaW1lbGluZVJlY29yZEZhY3RvcnkuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3NTc5M0U4MDBEMENFMEIzMDA3RkMwQUMgLyogTWVzc2FnZUV2ZW50LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZXNzYWdlRXZlbnQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTczMSwxMCArOTcyOCw2IEBACiAJCTdD
MzMwQTA1MURGOUY5NTEwMEQzMzk1QyAvKiBKU1Bvc2l0aW9uT3B0aW9ucy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1Bvc2l0aW9uT3B0aW9ucy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMzMwQTA2MURGOUY5NTEwMEQzMzk1QyAvKiBKU1Bv
c2l0aW9uT3B0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1Bvc2l0
aW9uT3B0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzMzRjM2MDFCNEEw
NTA0MDA1MDJDQUYgLyogSlNEb2N1bWVudEZyYWdtZW50Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRG9jdW1lbnRGcmFnbWVudEN1c3RvbS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTdDMzlDMzYyMUREQTg2NDkwMEZFRkIyOSAvKiBT
VkdMZW5ndGhMaXN0VmFsdWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFNWR0xlbmd0aExpc3RWYWx1ZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQk3QzM5QzM2MzFEREE4NjQ5MDBGRUZCMjkgLyogU1ZHTGVuZ3RoTGlzdFZhbHVlcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdMZW5ndGhMaXN0VmFsdWVzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTdDMzlDMzY4MUREQjg2RDMwMEZFRkIyOSAvKiBTVkdO
dW1iZXJMaXN0VmFsdWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFNWR051bWJlckxpc3RWYWx1ZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3
QzM5QzM2OTFEREI4NkQzMDBGRUZCMjkgLyogU1ZHTnVtYmVyTGlzdFZhbHVlcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdOdW1iZXJMaXN0VmFsdWVzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMzlDMzZDMUREQjhCQjAwMEZFRkIyOSAvKiBTVkdUcmFu
c2Zvcm1MaXN0VmFsdWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFNWR1RyYW5zZm9ybUxpc3RWYWx1ZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3QzM5QzM2RDFEREI4QkIwMDBGRUZCMjkgLyogU1ZHVHJhbnNmb3JtTGlzdFZhbHVlcy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdUcmFuc2Zvcm1MaXN0VmFsdWVzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMzlDMzZFMUREQkEzRTAwMEZFRkIyOSAv
KiBTVkdQYXRoU2VnTGlzdFZhbHVlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBTVkdQYXRoU2VnTGlzdFZhbHVlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xNjI4Miw3ICsxNjI3NSwxMSBAQAogCQkJCTA4OEEwRTAzMTI2RUYxREIwMDk3OEY3
QSAvKiBTVkdQcm9wZXJ0eVRyYWl0cy5oICovLAogCQkJCTA4MTNBNEU5MTI4NDEzMjYwMDk5MjUx
MSAvKiBTVkdTdGF0aWNQcm9wZXJ0eVRlYXJPZmYuaCAqLywKIAkJCQk3MjE0NDM0NjIyNDBDQUQy
MDBGMTJGRjcgLyogU1ZHVmFsdWVQcm9wZXJ0eS5oICovLAorCQkJCTcyRkIyMzg2MjI0OTdBRDUw
MDdFNUFDNyAvKiBTVkdWYWx1ZVByb3BlcnR5QW5pbWF0b3IuaCAqLywKKwkJCQk3MkZCMjM4NDIy
NDk3QUQ0MDA3RTVBQzcgLyogU1ZHVmFsdWVQcm9wZXJ0eUFuaW1hdG9ySW1wbC5oICovLAogCQkJ
CTcyNjZGMDI1MjI0MzBGOEMwMDgzMzk3NSAvKiBTVkdWYWx1ZVByb3BlcnR5TGlzdC5oICovLAor
CQkJCTcyRkIyMzg4MjI0OTdCMTUwMDdFNUFDNyAvKiBTVkdWYWx1ZVByb3BlcnR5TGlzdEFuaW1h
dG9yLmggKi8sCisJCQkJNzJGQjIzODcyMjQ5N0IxNTAwN0U1QUM3IC8qIFNWR1ZhbHVlUHJvcGVy
dHlMaXN0QW5pbWF0b3JJbXBsLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IHByb3BlcnRpZXM7CiAJ
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjQxNTMsMTUgKzI0MTUwLDkgQEAKIAkJCQkw
OEQ0NkNFMjEyN0FENUZDMDA4OTY5NEIgLyogU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbi5oICovLAog
CQkJCUIyMjI3N0U4MEQwMEJGMUYwMDcxQjc4MiAvKiBTVkdBbmltYXRlZEVudW1lcmF0aW9uLmlk
bCAqLywKIAkJCQlCMjIyNzdFOTBEMDBCRjFGMDA3MUI3ODIgLyogU1ZHQW5pbWF0ZWRJbnRlZ2Vy
LmlkbCAqLywKLQkJCQk0MzgxNzYzQTEzQTY5N0Q0MDA3RDExODcgLyogU1ZHQW5pbWF0ZWRMZW5n
dGguY3BwICovLAotCQkJCTA4OTAyMUE4MTI2RUY1REUwMDkyRDVFQSAvKiBTVkdBbmltYXRlZExl
bmd0aC5oICovLAogCQkJCUIyMjI3N0VBMEQwMEJGMUYwMDcxQjc4MiAvKiBTVkdBbmltYXRlZExl
bmd0aC5pZGwgKi8sCi0JCQkJNDMxQTJGRDYxM0I3NzA3QTAwNzc5MUU0IC8qIFNWR0FuaW1hdGVk
TGVuZ3RoTGlzdC5jcHAgKi8sCi0JCQkJMDg5MDIxQUMxMjZFRjVFOTAwOTJENUVBIC8qIFNWR0Fu
aW1hdGVkTGVuZ3RoTGlzdC5oICovLAogCQkJCUIyMjI3N0VCMEQwMEJGMUYwMDcxQjc4MiAvKiBT
VkdBbmltYXRlZExlbmd0aExpc3QuaWRsICovLAogCQkJCUIyMjI3N0VDMEQwMEJGMUYwMDcxQjc4
MiAvKiBTVkdBbmltYXRlZE51bWJlci5pZGwgKi8sCi0JCQkJNDMzMUFDNzcxM0I2ODcwMDAwQTlF
NUFFIC8qIFNWR0FuaW1hdGVkTnVtYmVyTGlzdC5jcHAgKi8sCi0JCQkJMDhCMzVCMTYxMjdCNkE4
ODAwNTMxNEREIC8qIFNWR0FuaW1hdGVkTnVtYmVyTGlzdC5oICovLAogCQkJCUIyMjI3N0VEMEQw
MEJGMUYwMDcxQjc4MiAvKiBTVkdBbmltYXRlZE51bWJlckxpc3QuaWRsICovLAogCQkJCTA4NjM5
NTEzMTNCNUZFNTcwMEJCMzQ0RCAvKiBTVkdBbmltYXRlZFBhdGguY3BwICovLAogCQkJCTA4NjM5
NTE0MTNCNUZFNTcwMEJCMzQ0RCAvKiBTVkdBbmltYXRlZFBhdGguaCAqLywKQEAgLTI0MzcwLDgg
KzI0MzYxLDYgQEAKIAkJCQk3MTM0NDk2QzE0Njk0MUIzMDA3MjAzMTIgLyogU1ZHTGVuZ3RoQ29u
dGV4dC5oICovLAogCQkJCUIyMjI3OEEwMEQwMEJGMjAwMDcxQjc4MiAvKiBTVkdMZW5ndGhMaXN0
LmggKi8sCiAJCQkJQjIyMjc4QTEwRDAwQkYyMDAwNzFCNzgyIC8qIFNWR0xlbmd0aExpc3QuaWRs
ICovLAotCQkJCTdDMzlDMzYyMUREQTg2NDkwMEZFRkIyOSAvKiBTVkdMZW5ndGhMaXN0VmFsdWVz
LmNwcCAqLywKLQkJCQk3QzM5QzM2MzFEREE4NjQ5MDBGRUZCMjkgLyogU1ZHTGVuZ3RoTGlzdFZh
bHVlcy5oICovLAogCQkJCTdDRTU4RDUyMUREN0IwOTMwMDEyODU1MiAvKiBTVkdMZW5ndGhWYWx1
ZS5jcHAgKi8sCiAJCQkJN0NFNThENTMxREQ3QjA5MzAwMTI4NTUyIC8qIFNWR0xlbmd0aFZhbHVl
LmggKi8sCiAJCQkJQjIyMjc4QTIwRDAwQkYyMDAwNzFCNzgyIC8qIFNWR0xpbmVhckdyYWRpZW50
RWxlbWVudC5jcHAgKi8sCkBAIC0zMTk0MSwxMCArMzE5MzAsNyBAQAogCQkJCTA4N0I4NDk2MTI3
MkNFQzgwMEExNDQxNyAvKiBTVkdBbmltYXRlZEFuZ2xlLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
OEQ0NkNFMzEyN0FENUZDMDA4OTY5NEIgLyogU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNzFGQjk2N0IxMzgzRDY0NjAwQUM4QTRDIC8qIFNWR0FuaW1hdGVkRW51
bWVyYXRpb25Qcm9wZXJ0eVRlYXJPZmYuaCBpbiBIZWFkZXJzICovLAotCQkJCTA4OTAyMUE5MTI2
RUY1REUwMDkyRDVFQSAvKiBTVkdBbmltYXRlZExlbmd0aC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
MDg5MDIxQUQxMjZFRjVFOTAwOTJENUVBIC8qIFNWR0FuaW1hdGVkTGVuZ3RoTGlzdC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMDg4QTBFMDQxMjZFRjFEQjAwOTc4RjdBIC8qIFNWR0FuaW1hdGVkTGlz
dFByb3BlcnR5VGVhck9mZi5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMDhCMzVCMTcxMjdCNkE4ODAw
NTMxNEREIC8qIFNWR0FuaW1hdGVkTnVtYmVyTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDg2
Mzk1MTYxM0I1RkU1NzAwQkIzNDREIC8qIFNWR0FuaW1hdGVkUGF0aC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMDg5QThFMDcxMjhEOEIzRDAwRTdBNTM0IC8qIFNWR0FuaW1hdGVkUGF0aFNlZ0xpc3RQ
cm9wZXJ0eVRlYXJPZmYuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4OEEwRTA2MTI2RUYxREIwMDk3
OEY3QSAvKiBTVkdBbmltYXRlZFByb3BlcnR5RGVzY3JpcHRpb24uaCBpbiBIZWFkZXJzICovLApA
QCAtMzIwMzYsNyArMzIwMjIsNiBAQAogCQkJCTU1RDcwRDIzMjIzQjAxN0MwMDA0NEI4RSAvKiBT
VkdMZWdhY3lBbmltYXRlZFByb3BlcnR5LmggaW4gSGVhZGVycyAqLywKIAkJCQk3MTM0NDk2RTE0
Njk0MUIzMDA3MjAzMTIgLyogU1ZHTGVuZ3RoQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QjIyMjdBMzYwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0xlbmd0aExpc3QuaCBpbiBIZWFkZXJzICov
LAotCQkJCTdDMzlDMzY1MUREQTg2NTIwMEZFRkIyOSAvKiBTVkdMZW5ndGhMaXN0VmFsdWVzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk3Q0NFQkZDMDFERDhGNkFCMDAyQzQwQjggLyogU1ZHTGVuZ3Ro
VmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QTM5MEQwMEJGMjIwMDcxQjc4MiAvKiBT
VkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QTNDMEQw
MEJGMjIwMDcxQjc4MiAvKiBTVkdMaW5lRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRMYXlvdXRBdHRyaWJ1dGVz
QnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRMYXlvdXRB
dHRyaWJ1dGVzQnVpbGRlci5jcHAKaW5kZXggOGE1NzE4NWRmZTYxZjRlYjg1ODIxZGM1MGUwYzky
NTBjNTE1YmNmYi4uODRmMDQyNzIxMTk2YTY4M2M1YjU3MTg3OWEyNjA4ZjI4MjkwZWU4MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0QXR0cmli
dXRlc0J1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4
dExheW91dEF0dHJpYnV0ZXNCdWlsZGVyLmNwcApAQCAtMTYwLDE2ICsxNjAsMTYgQEAgdm9pZCBT
VkdUZXh0TGF5b3V0QXR0cmlidXRlc0J1aWxkZXI6OmJ1aWxkQ2hhcmFjdGVyRGF0YU1hcChSZW5k
ZXJTVkdUZXh0JiB0ZXh0Um8KICAgICAgICAgZmlsbENoYXJhY3RlckRhdGFNYXAobV90ZXh0UG9z
aXRpb25zW2ldKTsKIH0KIAotc3RhdGljIGlubGluZSB2b2lkIHVwZGF0ZUNoYXJhY3RlckRhdGEo
dW5zaWduZWQgaSwgZmxvYXQmIGxhc3RSb3RhdGlvbiwgU1ZHQ2hhcmFjdGVyRGF0YSYgZGF0YSwg
Y29uc3QgU1ZHTGVuZ3RoQ29udGV4dCYgbGVuZ3RoQ29udGV4dCwgY29uc3QgU1ZHTGVuZ3RoTGlz
dFZhbHVlcyogeExpc3QsIGNvbnN0IFNWR0xlbmd0aExpc3RWYWx1ZXMqIHlMaXN0LCBjb25zdCBT
VkdMZW5ndGhMaXN0VmFsdWVzKiBkeExpc3QsIGNvbnN0IFNWR0xlbmd0aExpc3RWYWx1ZXMqIGR5
TGlzdCwgY29uc3QgU1ZHTnVtYmVyTGlzdCogcm90YXRlTGlzdCkKK3N0YXRpYyBpbmxpbmUgdm9p
ZCB1cGRhdGVDaGFyYWN0ZXJEYXRhKHVuc2lnbmVkIGksIGZsb2F0JiBsYXN0Um90YXRpb24sIFNW
R0NoYXJhY3RlckRhdGEmIGRhdGEsIGNvbnN0IFNWR0xlbmd0aENvbnRleHQmIGxlbmd0aENvbnRl
eHQsIGNvbnN0IFNWR0xlbmd0aExpc3QqIHhMaXN0LCBjb25zdCBTVkdMZW5ndGhMaXN0KiB5TGlz
dCwgY29uc3QgU1ZHTGVuZ3RoTGlzdCogZHhMaXN0LCBjb25zdCBTVkdMZW5ndGhMaXN0KiBkeUxp
c3QsIGNvbnN0IFNWR051bWJlckxpc3QqIHJvdGF0ZUxpc3QpCiB7CiAgICAgaWYgKHhMaXN0KQot
ICAgICAgICBkYXRhLnggPSB4TGlzdC0+YXQoaSkudmFsdWUobGVuZ3RoQ29udGV4dCk7CisgICAg
ICAgIGRhdGEueCA9IHhMaXN0LT5pdGVtcygpW2ldLT52YWx1ZSgpLnZhbHVlKGxlbmd0aENvbnRl
eHQpOwogICAgIGlmICh5TGlzdCkKLSAgICAgICAgZGF0YS55ID0geUxpc3QtPmF0KGkpLnZhbHVl
KGxlbmd0aENvbnRleHQpOworICAgICAgICBkYXRhLnkgPSB5TGlzdC0+aXRlbXMoKVtpXS0+dmFs
dWUoKS52YWx1ZShsZW5ndGhDb250ZXh0KTsKICAgICBpZiAoZHhMaXN0KQotICAgICAgICBkYXRh
LmR4ID0gZHhMaXN0LT5hdChpKS52YWx1ZShsZW5ndGhDb250ZXh0KTsKKyAgICAgICAgZGF0YS5k
eCA9IGR4TGlzdC0+aXRlbXMoKVtpXS0+dmFsdWUoKS52YWx1ZShsZW5ndGhDb250ZXh0KTsKICAg
ICBpZiAoZHlMaXN0KQotICAgICAgICBkYXRhLmR5ID0gZHlMaXN0LT5hdChpKS52YWx1ZShsZW5n
dGhDb250ZXh0KTsKKyAgICAgICAgZGF0YS5keSA9IGR5TGlzdC0+aXRlbXMoKVtpXS0+dmFsdWUo
KS52YWx1ZShsZW5ndGhDb250ZXh0KTsKICAgICBpZiAocm90YXRlTGlzdCkgewogICAgICAgICBk
YXRhLnJvdGF0ZSA9IHJvdGF0ZUxpc3QtPml0ZW1zKClbaV0tPnZhbHVlKCk7CiAgICAgICAgIGxh
c3RSb3RhdGlvbiA9IGRhdGEucm90YXRlOwpAQCAtMTk1LDEwICsxOTUsMTAgQEAgdm9pZCBTVkdU
ZXh0TGF5b3V0QXR0cmlidXRlc0J1aWxkZXI6OmZpbGxDaGFyYWN0ZXJEYXRhTWFwKGNvbnN0IFRl
eHRQb3NpdGlvbiYgcG8KICAgICBmbG9hdCBsYXN0Um90YXRpb24gPSBTVkdUZXh0TGF5b3V0QXR0
cmlidXRlczo6ZW1wdHlWYWx1ZSgpOwogICAgIFNWR0xlbmd0aENvbnRleHQgbGVuZ3RoQ29udGV4
dChwb3NpdGlvbi5lbGVtZW50KTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcG9zaXRp
b24ubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgY29uc3QgU1ZHTGVuZ3RoTGlzdFZhbHVlcyogeExp
c3RQdHIgPSBpIDwgeExpc3RTaXplID8gJnhMaXN0IDogMDsKLSAgICAgICAgY29uc3QgU1ZHTGVu
Z3RoTGlzdFZhbHVlcyogeUxpc3RQdHIgPSBpIDwgeUxpc3RTaXplID8gJnlMaXN0IDogMDsKLSAg
ICAgICAgY29uc3QgU1ZHTGVuZ3RoTGlzdFZhbHVlcyogZHhMaXN0UHRyID0gaSA8IGR4TGlzdFNp
emUgPyAmZHhMaXN0IDogMDsKLSAgICAgICAgY29uc3QgU1ZHTGVuZ3RoTGlzdFZhbHVlcyogZHlM
aXN0UHRyID0gaSA8IGR5TGlzdFNpemUgPyAmZHlMaXN0IDogMDsKKyAgICAgICAgY29uc3QgU1ZH
TGVuZ3RoTGlzdCogeExpc3RQdHIgPSBpIDwgeExpc3RTaXplID8gJnhMaXN0IDogbnVsbHB0cjsK
KyAgICAgICAgY29uc3QgU1ZHTGVuZ3RoTGlzdCogeUxpc3RQdHIgPSBpIDwgeUxpc3RTaXplID8g
JnlMaXN0IDogbnVsbHB0cjsKKyAgICAgICAgY29uc3QgU1ZHTGVuZ3RoTGlzdCogZHhMaXN0UHRy
ID0gaSA8IGR4TGlzdFNpemUgPyAmZHhMaXN0IDogbnVsbHB0cjsKKyAgICAgICAgY29uc3QgU1ZH
TGVuZ3RoTGlzdCogZHlMaXN0UHRyID0gaSA8IGR5TGlzdFNpemUgPyAmZHlMaXN0IDogbnVsbHB0
cjsKICAgICAgICAgY29uc3QgU1ZHTnVtYmVyTGlzdCogcm90YXRlTGlzdFB0ciA9IGkgPCByb3Rh
dGVMaXN0U2l6ZSA/ICZyb3RhdGVMaXN0IDogbnVsbHB0cjsKICAgICAgICAgaWYgKCF4TGlzdFB0
ciAmJiAheUxpc3RQdHIgJiYgIWR4TGlzdFB0ciAmJiAhZHlMaXN0UHRyICYmICFyb3RhdGVMaXN0
UHRyKQogICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRl
RWxlbWVudEJhc2UuY3BwCmluZGV4IDA0ZDM1YTBkNzhmMjljOGM1ZWVjNzYzNmE2OWVkNDc2Njc0
Nzc0NzUuLjRhNTdiYWNjZmQ5M2VhZTFlYzRjNzc0NWMzYzQ4OGMyYjc1ZTZkYjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudEJhc2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudEJhc2UuY3BwCkBAIC0yNSw2ICsyNSw3
IEBACiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmgiCiAKICNpbmNsdWRlICJRdWFs
aWZpZWROYW1lLmgiCisjaW5jbHVkZSAiU1ZHQW5pbWF0b3JGYWN0b3J5LmgiCiAjaW5jbHVkZSAi
U1ZHQXR0cmlidXRlQW5pbWF0aW9uQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNWR0VsZW1lbnQu
aCIKICNpbmNsdWRlICJTVkdMZWdhY3lBdHRyaWJ1dGVBbmltYXRpb25Db250cm9sbGVyLmgiCkBA
IC02Myw3ICs2NCw3IEBAIGJvb2wgU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlOjpoYXNWYWxpZEF0dHJp
YnV0ZVR5cGUoKSBjb25zdAogICAgIGlmICghdGFyZ2V0RWxlbWVudCgpIHx8IGhhc0ludmFsaWRD
U1NBdHRyaWJ1dGVUeXBlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmIChkZXRl
cm1pbmVBbmltYXRlZFByb3BlcnR5VHlwZSgqdGFyZ2V0RWxlbWVudCgpKSAhPSBBbmltYXRlZFVu
a25vd24pCisgICAgaWYgKFNWR0FuaW1hdG9yRmFjdG9yeTo6aXNTdXBwb3J0ZWRBdHRyaWJ1dGUo
ZGV0ZXJtaW5lQW5pbWF0ZWRQcm9wZXJ0eVR5cGUoKnRhcmdldEVsZW1lbnQoKSkpKQogICAgICAg
ICByZXR1cm4gdHJ1ZTsKIAogICAgIHJldHVybiB0YXJnZXRFbGVtZW50KCktPmlzQW5pbWF0ZWRB
dHRyaWJ1dGUoYXR0cmlidXRlTmFtZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdBbmltYXRlZExlbmd0aC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRM
ZW5ndGguY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1OGYxMDAzMzI5ZjQ5MjUy
MzlhZGU3N2RlMTlhYjcyMzk5ZmYzMjk1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZExlbmd0aC5jcHAK
KysrIC9kZXYvbnVsbApAQCAtMSwxMTYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgUmVz
ZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENv
cHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
LSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0
aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlICJTVkdBbmltYXRlZExlbmd0aC5oIgotCi0jaW5jbHVkZSAi
U1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotU1ZHQW5p
bWF0ZWRMZW5ndGhBbmltYXRvcjo6U1ZHQW5pbWF0ZWRMZW5ndGhBbmltYXRvcihTVkdBbmltYXRp
b25FbGVtZW50KiBhbmltYXRpb25FbGVtZW50LCBTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCkK
LSAgICA6IFNWR0FuaW1hdGVkVHlwZUFuaW1hdG9yKEFuaW1hdGVkTGVuZ3RoLCBhbmltYXRpb25F
bGVtZW50LCBjb250ZXh0RWxlbWVudCkKLSAgICAsIG1fbGVuZ3RoTW9kZShTVkdMZW5ndGhWYWx1
ZTo6bGVuZ3RoTW9kZUZvckFuaW1hdGVkTGVuZ3RoQXR0cmlidXRlKGFuaW1hdGlvbkVsZW1lbnQt
PmF0dHJpYnV0ZU5hbWUoKSkpCi17Ci19Ci0KLXN0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5
cGU+IFNWR0FuaW1hdGVkTGVuZ3RoQW5pbWF0b3I6OmNvbnN0cnVjdEZyb21TdHJpbmcoY29uc3Qg
U3RyaW5nJiBzdHJpbmcpCi17Ci0gICAgcmV0dXJuIFNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRlKFNW
R0xlbmd0aFZhbHVlKG1fbGVuZ3RoTW9kZSwgc3RyaW5nKSk7Ci19Ci0KLXN0ZDo6dW5pcXVlX3B0
cjxTVkdBbmltYXRlZFR5cGU+IFNWR0FuaW1hdGVkTGVuZ3RoQW5pbWF0b3I6OnN0YXJ0QW5pbVZh
bEFuaW1hdGlvbihjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmIGFuaW1hdGVk
VHlwZXMpCi17Ci0gICAgcmV0dXJuIGNvbnN0cnVjdEZyb21CYXNlVmFsdWU8U1ZHQW5pbWF0ZWRM
ZW5ndGg+KGFuaW1hdGVkVHlwZXMpOwotfQotCi12b2lkIFNWR0FuaW1hdGVkTGVuZ3RoQW5pbWF0
b3I6OnN0b3BBbmltVmFsQW5pbWF0aW9uKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5
TGlzdCYgYW5pbWF0ZWRUeXBlcykKLXsKLSAgICBzdG9wQW5pbVZhbEFuaW1hdGlvbkZvclR5cGU8
U1ZHQW5pbWF0ZWRMZW5ndGg+KGFuaW1hdGVkVHlwZXMpOwotfQotCi12b2lkIFNWR0FuaW1hdGVk
TGVuZ3RoQW5pbWF0b3I6OnJlc2V0QW5pbVZhbFRvQmFzZVZhbChjb25zdCBTVkdFbGVtZW50QW5p
bWF0ZWRQcm9wZXJ0eUxpc3QmIGFuaW1hdGVkVHlwZXMsIFNWR0FuaW1hdGVkVHlwZSYgdHlwZSkK
LXsKLSAgICByZXNldEZyb21CYXNlVmFsdWU8U1ZHQW5pbWF0ZWRMZW5ndGg+KGFuaW1hdGVkVHlw
ZXMsIHR5cGUpOwotfQotCi12b2lkIFNWR0FuaW1hdGVkTGVuZ3RoQW5pbWF0b3I6OmFuaW1WYWxX
aWxsQ2hhbmdlKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYgYW5pbWF0ZWRU
eXBlcykKLXsKLSAgICBhbmltVmFsV2lsbENoYW5nZUZvclR5cGU8U1ZHQW5pbWF0ZWRMZW5ndGg+
KGFuaW1hdGVkVHlwZXMpOwotfQotCi12b2lkIFNWR0FuaW1hdGVkTGVuZ3RoQW5pbWF0b3I6OmFu
aW1WYWxEaWRDaGFuZ2UoY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0JiBhbmlt
YXRlZFR5cGVzKQotewotICAgIGFuaW1WYWxEaWRDaGFuZ2VGb3JUeXBlPFNWR0FuaW1hdGVkTGVu
Z3RoPihhbmltYXRlZFR5cGVzKTsKLX0KLQotdm9pZCBTVkdBbmltYXRlZExlbmd0aEFuaW1hdG9y
OjphZGRBbmltYXRlZFR5cGVzKFNWR0FuaW1hdGVkVHlwZSogZnJvbSwgU1ZHQW5pbWF0ZWRUeXBl
KiB0bykKLXsKLSAgICBBU1NFUlQoZnJvbS0+dHlwZSgpID09IEFuaW1hdGVkTGVuZ3RoKTsKLSAg
ICBBU1NFUlQoZnJvbS0+dHlwZSgpID09IHRvLT50eXBlKCkpOwotCi0gICAgU1ZHTGVuZ3RoQ29u
dGV4dCBsZW5ndGhDb250ZXh0KG1fY29udGV4dEVsZW1lbnQpOwotICAgIGNvbnN0IGF1dG8mIGZy
b21MZW5ndGggPSBmcm9tLT5hczxTVkdMZW5ndGhWYWx1ZT4oKTsKLSAgICBhdXRvJiB0b0xlbmd0
aCA9IHRvLT5hczxTVkdMZW5ndGhWYWx1ZT4oKTsKLQotICAgIHRvTGVuZ3RoLnNldFZhbHVlKHRv
TGVuZ3RoLnZhbHVlKGxlbmd0aENvbnRleHQpICsgZnJvbUxlbmd0aC52YWx1ZShsZW5ndGhDb250
ZXh0KSwgbGVuZ3RoQ29udGV4dCk7Ci19Ci0KLXN0YXRpYyBTVkdMZW5ndGhWYWx1ZSBwYXJzZUxl
bmd0aEZyb21TdHJpbmcoU1ZHQW5pbWF0aW9uRWxlbWVudCogYW5pbWF0aW9uRWxlbWVudCwgY29u
c3QgU3RyaW5nJiBzdHJpbmcpCi17Ci0gICAgU1ZHTGVuZ3RoVmFsdWUgbGVuZ3RoOwotICAgIGxl
bmd0aC5zZXRWYWx1ZUFzU3RyaW5nKHN0cmluZywgU1ZHTGVuZ3RoVmFsdWU6Omxlbmd0aE1vZGVG
b3JBbmltYXRlZExlbmd0aEF0dHJpYnV0ZShhbmltYXRpb25FbGVtZW50LT5hdHRyaWJ1dGVOYW1l
KCkpKTsKLSAgICByZXR1cm4gbGVuZ3RoOwotfQotCi12b2lkIFNWR0FuaW1hdGVkTGVuZ3RoQW5p
bWF0b3I6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQg
cmVwZWF0Q291bnQsIFNWR0FuaW1hdGVkVHlwZSogZnJvbSwgU1ZHQW5pbWF0ZWRUeXBlKiB0bywg
U1ZHQW5pbWF0ZWRUeXBlKiB0b0F0RW5kT2ZEdXJhdGlvbiwgU1ZHQW5pbWF0ZWRUeXBlKiBhbmlt
YXRlZCkKLXsKLSAgICBBU1NFUlQobV9hbmltYXRpb25FbGVtZW50KTsKLSAgICBBU1NFUlQobV9j
b250ZXh0RWxlbWVudCk7Ci0KLSAgICBhdXRvIGZyb21TVkdMZW5ndGggPSAobV9hbmltYXRpb25F
bGVtZW50LT5hbmltYXRpb25Nb2RlKCkgPT0gQW5pbWF0aW9uTW9kZTo6VG8gPyBhbmltYXRlZCA6
IGZyb20pLT5hczxTVkdMZW5ndGhWYWx1ZT4oKTsKLSAgICBhdXRvIHRvU1ZHTGVuZ3RoID0gdG8t
PmFzPFNWR0xlbmd0aFZhbHVlPigpOwotICAgIGNvbnN0IGF1dG8mIHRvQXRFbmRPZkR1cmF0aW9u
U1ZHTGVuZ3RoID0gdG9BdEVuZE9mRHVyYXRpb24tPmFzPFNWR0xlbmd0aFZhbHVlPigpOwotICAg
IGF1dG8mIGFuaW1hdGVkU1ZHTGVuZ3RoID0gYW5pbWF0ZWQtPmFzPFNWR0xlbmd0aFZhbHVlPigp
OwotCi0gICAgLy8gQXBwbHkgQ1NTIGluaGVyaXRhbmNlIHJ1bGVzLgotICAgIG1fYW5pbWF0aW9u
RWxlbWVudC0+YWRqdXN0Rm9ySW5oZXJpdGFuY2U8U1ZHTGVuZ3RoVmFsdWU+KHBhcnNlTGVuZ3Ro
RnJvbVN0cmluZywgbV9hbmltYXRpb25FbGVtZW50LT5mcm9tUHJvcGVydHlWYWx1ZVR5cGUoKSwg
ZnJvbVNWR0xlbmd0aCwgbV9jb250ZXh0RWxlbWVudCk7Ci0gICAgbV9hbmltYXRpb25FbGVtZW50
LT5hZGp1c3RGb3JJbmhlcml0YW5jZTxTVkdMZW5ndGhWYWx1ZT4ocGFyc2VMZW5ndGhGcm9tU3Ry
aW5nLCBtX2FuaW1hdGlvbkVsZW1lbnQtPnRvUHJvcGVydHlWYWx1ZVR5cGUoKSwgdG9TVkdMZW5n
dGgsIG1fY29udGV4dEVsZW1lbnQpOwotCi0gICAgU1ZHTGVuZ3RoQ29udGV4dCBsZW5ndGhDb250
ZXh0KG1fY29udGV4dEVsZW1lbnQpOwotICAgIGZsb2F0IGFuaW1hdGVkTnVtYmVyID0gYW5pbWF0
ZWRTVkdMZW5ndGgudmFsdWUobGVuZ3RoQ29udGV4dCk7Ci0gICAgU1ZHTGVuZ3RoVHlwZSB1bml0
VHlwZSA9IHBlcmNlbnRhZ2UgPCAwLjUgPyBmcm9tU1ZHTGVuZ3RoLnVuaXRUeXBlKCkgOiB0b1NW
R0xlbmd0aC51bml0VHlwZSgpOwotICAgIG1fYW5pbWF0aW9uRWxlbWVudC0+YW5pbWF0ZUFkZGl0
aXZlTnVtYmVyKHBlcmNlbnRhZ2UsIHJlcGVhdENvdW50LCBmcm9tU1ZHTGVuZ3RoLnZhbHVlKGxl
bmd0aENvbnRleHQpLCB0b1NWR0xlbmd0aC52YWx1ZShsZW5ndGhDb250ZXh0KSwgdG9BdEVuZE9m
RHVyYXRpb25TVkdMZW5ndGgudmFsdWUobGVuZ3RoQ29udGV4dCksIGFuaW1hdGVkTnVtYmVyKTsK
LQotICAgIGFuaW1hdGVkU1ZHTGVuZ3RoLnNldFZhbHVlKGxlbmd0aENvbnRleHQsIGFuaW1hdGVk
TnVtYmVyLCBtX2xlbmd0aE1vZGUsIHVuaXRUeXBlKTsKLX0KLQotZmxvYXQgU1ZHQW5pbWF0ZWRM
ZW5ndGhBbmltYXRvcjo6Y2FsY3VsYXRlRGlzdGFuY2UoY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5n
LCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKQotewotICAgIEFTU0VSVChtX2FuaW1hdGlvbkVsZW1l
bnQpOwotICAgIEFTU0VSVChtX2NvbnRleHRFbGVtZW50KTsKLSAgICBhdXRvIGxlbmd0aE1vZGUg
PSBTVkdMZW5ndGhWYWx1ZTo6bGVuZ3RoTW9kZUZvckFuaW1hdGVkTGVuZ3RoQXR0cmlidXRlKG1f
YW5pbWF0aW9uRWxlbWVudC0+YXR0cmlidXRlTmFtZSgpKTsKLSAgICBhdXRvIGZyb20gPSBTVkdM
ZW5ndGhWYWx1ZShsZW5ndGhNb2RlLCBmcm9tU3RyaW5nKTsKLSAgICBhdXRvIHRvID0gU1ZHTGVu
Z3RoVmFsdWUobGVuZ3RoTW9kZSwgdG9TdHJpbmcpOwotICAgIFNWR0xlbmd0aENvbnRleHQgbGVu
Z3RoQ29udGV4dChtX2NvbnRleHRFbGVtZW50KTsKLSAgICByZXR1cm4gZmFic2YodG8udmFsdWUo
bGVuZ3RoQ29udGV4dCkgLSBmcm9tLnZhbHVlKGxlbmd0aENvbnRleHQpKTsKLX0KLQotfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoLmggYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRMZW5ndGguaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMTAwNGVjNWQ5ZDZjNmY4OWQ1MzBmYzZjY2RkMmY0MzJiMmIzZTRjZS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQW5pbWF0ZWRMZW5ndGguaAorKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTAuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0g
KiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICog
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5v
dCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIlNWR0FuaW1hdGVkUHJvcGVydHlU
ZWFyT2ZmLmgiCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IuaCIKLSNpbmNsdWRl
ICJTVkdBdHRyaWJ1dGVBY2Nlc3Nvci5oIgotI2luY2x1ZGUgIlNWR0xlbmd0aC5oIgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFNWR0FuaW1hdGlvbkVsZW1lbnQ7Ci0KLXVzaW5nIFNW
R0FuaW1hdGVkTGVuZ3RoID0gU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRlYXJPZmY8U1ZHTGVuZ3RoPjsK
LXVzaW5nIFNWR0FuaW1hdGVkTGVuZ3RoQXR0cmlidXRlID0gU1ZHQW5pbWF0ZWRBdHRyaWJ1dGU8
U1ZHQW5pbWF0ZWRMZW5ndGg+OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBPd25lclR5cGU+Ci11c2lu
ZyBTVkdBbmltYXRlZExlbmd0aEF0dHJpYnV0ZUFjY2Vzc29yID0gU1ZHQW5pbWF0ZWRBdHRyaWJ1
dGVBY2Nlc3NvcjxPd25lclR5cGUsIFNWR0FuaW1hdGVkTGVuZ3RoQXR0cmlidXRlLCBBbmltYXRl
ZExlbmd0aD47Ci0KLWNsYXNzIFNWR0FuaW1hdGVkTGVuZ3RoQW5pbWF0b3IgZmluYWwgOiBwdWJs
aWMgU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IgewotcHVibGljOgotICAgIFNWR0FuaW1hdGVkTGVu
Z3RoQW5pbWF0b3IoU1ZHQW5pbWF0aW9uRWxlbWVudCosIFNWR0VsZW1lbnQqKTsKLQotICAgIHN0
ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+IGNvbnN0cnVjdEZyb21TdHJpbmcoY29uc3Qg
U3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4g
c3RhcnRBbmltVmFsQW5pbWF0aW9uKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlz
dCYpIG92ZXJyaWRlOwotICAgIHZvaWQgc3RvcEFuaW1WYWxBbmltYXRpb24oY29uc3QgU1ZHRWxl
bWVudEFuaW1hdGVkUHJvcGVydHlMaXN0Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZXNldEFuaW1W
YWxUb0Jhc2VWYWwoY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0JiwgU1ZHQW5p
bWF0ZWRUeXBlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBhbmltVmFsV2lsbENoYW5nZShjb25zdCBT
VkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKSBvdmVycmlkZTsKLSAgICB2b2lkIGFuaW1W
YWxEaWRDaGFuZ2UoY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0Jikgb3ZlcnJp
ZGU7Ci0KLSAgICB2b2lkIGFkZEFuaW1hdGVkVHlwZXMoU1ZHQW5pbWF0ZWRUeXBlKiwgU1ZHQW5p
bWF0ZWRUeXBlKikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZs
b2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVkIHJlcGVhdENvdW50LCBTVkdBbmltYXRlZFR5cGUqLCBT
VkdBbmltYXRlZFR5cGUqLCBTVkdBbmltYXRlZFR5cGUqLCBTVkdBbmltYXRlZFR5cGUqKSBvdmVy
cmlkZTsKLSAgICBmbG9hdCBjYWxjdWxhdGVEaXN0YW5jZShjb25zdCBTdHJpbmcmIGZyb21TdHJp
bmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpIG92ZXJyaWRlOwotCi1wcml2YXRlOgotICAgIFNW
R0xlbmd0aE1vZGUgbV9sZW5ndGhNb2RlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoTGlzdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0LmNwcApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggM2E3ZGRmZjIzNjM5Njc2YTIxNTRkYjExNmJkNmUwMmE3N2Ez
ZWQwNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0LmNwcAorKysgL2Rldi9udWxsCkBA
IC0xLDEzMSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24g
TGltaXRlZCAyMDExLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0g
KiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQot
ICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgot
ICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAiU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0LmgiCi0KLSNpbmNsdWRlICJTVkdBbmltYXRl
RWxlbWVudEJhc2UuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1TVkdBbmltYXRlZExlbmd0
aExpc3RBbmltYXRvcjo6U1ZHQW5pbWF0ZWRMZW5ndGhMaXN0QW5pbWF0b3IoU1ZHQW5pbWF0aW9u
RWxlbWVudCogYW5pbWF0aW9uRWxlbWVudCwgU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQpCi0g
ICAgOiBTVkdBbmltYXRlZFR5cGVBbmltYXRvcihBbmltYXRlZExlbmd0aExpc3QsIGFuaW1hdGlv
bkVsZW1lbnQsIGNvbnRleHRFbGVtZW50KQotICAgICwgbV9sZW5ndGhNb2RlKFNWR0xlbmd0aFZh
bHVlOjpsZW5ndGhNb2RlRm9yQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUoYW5pbWF0aW9uRWxlbWVu
dC0+YXR0cmlidXRlTmFtZSgpKSkKLXsKLX0KLQotc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVk
VHlwZT4gU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0QW5pbWF0b3I6OmNvbnN0cnVjdEZyb21TdHJpbmco
Y29uc3QgU3RyaW5nJiBzdHJpbmcpCi17Ci0gICAgcmV0dXJuIFNWR0FuaW1hdGVkVHlwZTo6Y3Jl
YXRlKFNWR1Byb3BlcnR5VHJhaXRzPFNWR0xlbmd0aExpc3RWYWx1ZXM+Ojpmcm9tU3RyaW5nKHN0
cmluZywgbV9sZW5ndGhNb2RlKSk7Ci19Ci0KLXN0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5
cGU+IFNWR0FuaW1hdGVkTGVuZ3RoTGlzdEFuaW1hdG9yOjpzdGFydEFuaW1WYWxBbmltYXRpb24o
Y29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0JiBhbmltYXRlZFR5cGVzKQotewot
ICAgIHJldHVybiBjb25zdHJ1Y3RGcm9tQmFzZVZhbHVlPFNWR0FuaW1hdGVkTGVuZ3RoTGlzdD4o
YW5pbWF0ZWRUeXBlcyk7Ci19Ci0KLXZvaWQgU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0QW5pbWF0b3I6
OnN0b3BBbmltVmFsQW5pbWF0aW9uKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlz
dCYgYW5pbWF0ZWRUeXBlcykKLXsKLSAgICBzdG9wQW5pbVZhbEFuaW1hdGlvbkZvclR5cGU8U1ZH
QW5pbWF0ZWRMZW5ndGhMaXN0PihhbmltYXRlZFR5cGVzKTsKLX0KLQotdm9pZCBTVkdBbmltYXRl
ZExlbmd0aExpc3RBbmltYXRvcjo6cmVzZXRBbmltVmFsVG9CYXNlVmFsKGNvbnN0IFNWR0VsZW1l
bnRBbmltYXRlZFByb3BlcnR5TGlzdCYgYW5pbWF0ZWRUeXBlcywgU1ZHQW5pbWF0ZWRUeXBlJiB0
eXBlKQotewotICAgIHJlc2V0RnJvbUJhc2VWYWx1ZTxTVkdBbmltYXRlZExlbmd0aExpc3Q+KGFu
aW1hdGVkVHlwZXMsIHR5cGUpOwotfQotCi12b2lkIFNWR0FuaW1hdGVkTGVuZ3RoTGlzdEFuaW1h
dG9yOjphbmltVmFsV2lsbENoYW5nZShjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxp
c3QmIGFuaW1hdGVkVHlwZXMpCi17Ci0gICAgYW5pbVZhbFdpbGxDaGFuZ2VGb3JUeXBlPFNWR0Fu
aW1hdGVkTGVuZ3RoTGlzdD4oYW5pbWF0ZWRUeXBlcyk7Ci19Ci0KLXZvaWQgU1ZHQW5pbWF0ZWRM
ZW5ndGhMaXN0QW5pbWF0b3I6OmFuaW1WYWxEaWRDaGFuZ2UoY29uc3QgU1ZHRWxlbWVudEFuaW1h
dGVkUHJvcGVydHlMaXN0JiBhbmltYXRlZFR5cGVzKQotewotICAgIGFuaW1WYWxEaWRDaGFuZ2VG
b3JUeXBlPFNWR0FuaW1hdGVkTGVuZ3RoTGlzdD4oYW5pbWF0ZWRUeXBlcyk7Ci19Ci0KLXZvaWQg
U1ZHQW5pbWF0ZWRMZW5ndGhMaXN0QW5pbWF0b3I6OmFkZEFuaW1hdGVkVHlwZXMoU1ZHQW5pbWF0
ZWRUeXBlKiBmcm9tLCBTVkdBbmltYXRlZFR5cGUqIHRvKQotewotICAgIEFTU0VSVChmcm9tLT50
eXBlKCkgPT0gQW5pbWF0ZWRMZW5ndGhMaXN0KTsKLSAgICBBU1NFUlQoZnJvbS0+dHlwZSgpID09
IHRvLT50eXBlKCkpOwotCi0gICAgY29uc3QgYXV0byYgZnJvbUxlbmd0aExpc3QgPSBmcm9tLT5h
czxTVkdMZW5ndGhMaXN0VmFsdWVzPigpOwotICAgIGF1dG8mIHRvTGVuZ3RoTGlzdCA9IHRvLT5h
czxTVkdMZW5ndGhMaXN0VmFsdWVzPigpOwotCi0gICAgdW5zaWduZWQgZnJvbUxlbmd0aExpc3RT
aXplID0gZnJvbUxlbmd0aExpc3Quc2l6ZSgpOwotICAgIGlmICghZnJvbUxlbmd0aExpc3RTaXpl
IHx8IGZyb21MZW5ndGhMaXN0U2l6ZSAhPSB0b0xlbmd0aExpc3Quc2l6ZSgpKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBTVkdMZW5ndGhDb250ZXh0IGxlbmd0aENvbnRleHQobV9jb250ZXh0RWxl
bWVudCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGZyb21MZW5ndGhMaXN0U2l6ZTsg
KytpKQotICAgICAgICB0b0xlbmd0aExpc3RbaV0uc2V0VmFsdWUodG9MZW5ndGhMaXN0W2ldLnZh
bHVlKGxlbmd0aENvbnRleHQpICsgZnJvbUxlbmd0aExpc3RbaV0udmFsdWUobGVuZ3RoQ29udGV4
dCksIGxlbmd0aENvbnRleHQpOwotfQotCi1zdGF0aWMgU1ZHTGVuZ3RoTGlzdFZhbHVlcyBwYXJz
ZUxlbmd0aExpc3RGcm9tU3RyaW5nKFNWR0FuaW1hdGlvbkVsZW1lbnQqIGFuaW1hdGlvbkVsZW1l
bnQsIGNvbnN0IFN0cmluZyYgc3RyaW5nKQotewotICAgIFNWR0xlbmd0aExpc3RWYWx1ZXMgbGVu
Z3RoTGlzdDsKLSAgICBsZW5ndGhMaXN0LnBhcnNlKHN0cmluZywgU1ZHTGVuZ3RoVmFsdWU6Omxl
bmd0aE1vZGVGb3JBbmltYXRlZExlbmd0aEF0dHJpYnV0ZShhbmltYXRpb25FbGVtZW50LT5hdHRy
aWJ1dGVOYW1lKCkpKTsKLSAgICByZXR1cm4gbGVuZ3RoTGlzdDsKLX0KLQotdm9pZCBTVkdBbmlt
YXRlZExlbmd0aExpc3RBbmltYXRvcjo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJj
ZW50YWdlLCB1bnNpZ25lZCByZXBlYXRDb3VudCwgU1ZHQW5pbWF0ZWRUeXBlKiBmcm9tLCBTVkdB
bmltYXRlZFR5cGUqIHRvLCBTVkdBbmltYXRlZFR5cGUqIHRvQXRFbmRPZkR1cmF0aW9uLCBTVkdB
bmltYXRlZFR5cGUqIGFuaW1hdGVkKQotewotICAgIEFTU0VSVChtX2FuaW1hdGlvbkVsZW1lbnQp
OwotICAgIEFTU0VSVChtX2NvbnRleHRFbGVtZW50KTsKLQotICAgIGF1dG8gZnJvbUxlbmd0aExp
c3QgPSAobV9hbmltYXRpb25FbGVtZW50LT5hbmltYXRpb25Nb2RlKCkgPT0gQW5pbWF0aW9uTW9k
ZTo6VG8gPyBhbmltYXRlZCA6IGZyb20pLT5hczxTVkdMZW5ndGhMaXN0VmFsdWVzPigpOwotICAg
IGF1dG8gdG9MZW5ndGhMaXN0ID0gdG8tPmFzPFNWR0xlbmd0aExpc3RWYWx1ZXM+KCk7Ci0gICAg
Y29uc3QgYXV0byYgdG9BdEVuZE9mRHVyYXRpb25MZW5ndGhMaXN0ID0gdG9BdEVuZE9mRHVyYXRp
b24tPmFzPFNWR0xlbmd0aExpc3RWYWx1ZXM+KCk7Ci0gICAgYXV0byYgYW5pbWF0ZWRMZW5ndGhM
aXN0ID0gYW5pbWF0ZWQtPmFzPFNWR0xlbmd0aExpc3RWYWx1ZXM+KCk7Ci0KLSAgICAvLyBBcHBs
eSBDU1MgaW5oZXJpdGFuY2UgcnVsZXMuCi0gICAgbV9hbmltYXRpb25FbGVtZW50LT5hZGp1c3RG
b3JJbmhlcml0YW5jZTxTVkdMZW5ndGhMaXN0VmFsdWVzPihwYXJzZUxlbmd0aExpc3RGcm9tU3Ry
aW5nLCBtX2FuaW1hdGlvbkVsZW1lbnQtPmZyb21Qcm9wZXJ0eVZhbHVlVHlwZSgpLCBmcm9tTGVu
Z3RoTGlzdCwgbV9jb250ZXh0RWxlbWVudCk7Ci0gICAgbV9hbmltYXRpb25FbGVtZW50LT5hZGp1
c3RGb3JJbmhlcml0YW5jZTxTVkdMZW5ndGhMaXN0VmFsdWVzPihwYXJzZUxlbmd0aExpc3RGcm9t
U3RyaW5nLCBtX2FuaW1hdGlvbkVsZW1lbnQtPnRvUHJvcGVydHlWYWx1ZVR5cGUoKSwgdG9MZW5n
dGhMaXN0LCBtX2NvbnRleHRFbGVtZW50KTsKLQotICAgIGlmICghbV9hbmltYXRpb25FbGVtZW50
LT5hZGp1c3RGcm9tVG9MaXN0VmFsdWVzPFNWR0xlbmd0aExpc3RWYWx1ZXM+KGZyb21MZW5ndGhM
aXN0LCB0b0xlbmd0aExpc3QsIGFuaW1hdGVkTGVuZ3RoTGlzdCwgcGVyY2VudGFnZSkpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIHVuc2lnbmVkIGZyb21MZW5ndGhMaXN0U2l6ZSA9IGZyb21MZW5n
dGhMaXN0LnNpemUoKTsKLSAgICB1bnNpZ25lZCB0b0xlbmd0aExpc3RTaXplID0gdG9MZW5ndGhM
aXN0LnNpemUoKTsKLSAgICB1bnNpZ25lZCB0b0F0RW5kT2ZEdXJhdGlvbkxpc3RTaXplID0gdG9B
dEVuZE9mRHVyYXRpb25MZW5ndGhMaXN0LnNpemUoKTsKLQotICAgIFNWR0xlbmd0aENvbnRleHQg
bGVuZ3RoQ29udGV4dChtX2NvbnRleHRFbGVtZW50KTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgdG9MZW5ndGhMaXN0U2l6ZTsgKytpKSB7Ci0gICAgICAgIGZsb2F0IGFuaW1hdGVkTnVt
YmVyID0gYW5pbWF0ZWRMZW5ndGhMaXN0W2ldLnZhbHVlKGxlbmd0aENvbnRleHQpOwotICAgICAg
ICBTVkdMZW5ndGhUeXBlIHVuaXRUeXBlID0gdG9MZW5ndGhMaXN0W2ldLnVuaXRUeXBlKCk7Ci0g
ICAgICAgIGZsb2F0IGVmZmVjdGl2ZUZyb20gPSAwOwotICAgICAgICBpZiAoZnJvbUxlbmd0aExp
c3RTaXplKSB7Ci0gICAgICAgICAgICBpZiAocGVyY2VudGFnZSA8IDAuNSkKLSAgICAgICAgICAg
ICAgICB1bml0VHlwZSA9IGZyb21MZW5ndGhMaXN0W2ldLnVuaXRUeXBlKCk7Ci0gICAgICAgICAg
ICBlZmZlY3RpdmVGcm9tID0gZnJvbUxlbmd0aExpc3RbaV0udmFsdWUobGVuZ3RoQ29udGV4dCk7
Ci0gICAgICAgIH0KLSAgICAgICAgZmxvYXQgZWZmZWN0aXZlVG9BdEVuZCA9IGkgPCB0b0F0RW5k
T2ZEdXJhdGlvbkxpc3RTaXplID8gdG9BdEVuZE9mRHVyYXRpb25MZW5ndGhMaXN0W2ldLnZhbHVl
KGxlbmd0aENvbnRleHQpIDogMDsKLQotICAgICAgICBtX2FuaW1hdGlvbkVsZW1lbnQtPmFuaW1h
dGVBZGRpdGl2ZU51bWJlcihwZXJjZW50YWdlLCByZXBlYXRDb3VudCwgZWZmZWN0aXZlRnJvbSwg
dG9MZW5ndGhMaXN0W2ldLnZhbHVlKGxlbmd0aENvbnRleHQpLCBlZmZlY3RpdmVUb0F0RW5kLCBh
bmltYXRlZE51bWJlcik7Ci0gICAgICAgIGFuaW1hdGVkTGVuZ3RoTGlzdFtpXS5zZXRWYWx1ZShs
ZW5ndGhDb250ZXh0LCBhbmltYXRlZE51bWJlciwgbV9sZW5ndGhNb2RlLCB1bml0VHlwZSk7Ci0g
ICAgfQotfQotCi1mbG9hdCBTVkdBbmltYXRlZExlbmd0aExpc3RBbmltYXRvcjo6Y2FsY3VsYXRl
RGlzdGFuY2UoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikKLXsKLSAgICAvLyBGSVhNRTog
RGlzdGFuY2UgY2FsY3VsYXRpb24gaXMgbm90IHBvc3NpYmxlIGZvciBTVkdMZW5ndGhMaXN0VmFs
dWVzIHJpZ2h0IG5vdy4gV2UgbmVlZCB0aGUgZGlzdGFuY2UgZm9yIGV2ZXJ5IHNpbmdsZSB2YWx1
ZS4KLSAgICByZXR1cm4gLTE7Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdBbmltYXRlZExlbmd0aExpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRl
ZExlbmd0aExpc3QuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTY1YmM0OGFlNjQw
ZTJkZGI5NzIzNDFiYThiNTFkNTFhZWNiMjE0ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRMZW5ndGhM
aXN0LmgKKysrIC9kZXYvbnVsbApAQCAtMSw1OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhp
cyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0g
KiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI3By
YWdtYSBvbmNlCi0KLSNpbmNsdWRlICJTVkdBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmYuaCIK
LSNpbmNsdWRlICJTVkdBbmltYXRlZFR5cGVBbmltYXRvci5oIgotI2luY2x1ZGUgIlNWR0F0dHJp
YnV0ZUFjY2Vzc29yLmgiCi0jaW5jbHVkZSAiU1ZHTGVuZ3RoLmgiCi0jaW5jbHVkZSAiU1ZHTGVu
Z3RoTGlzdC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFNWR0FuaW1hdGlvbkVs
ZW1lbnQ7Ci0KLXVzaW5nIFNWR0FuaW1hdGVkTGVuZ3RoTGlzdCA9IFNWR0FuaW1hdGVkTGlzdFBy
b3BlcnR5VGVhck9mZjxTVkdMZW5ndGhMaXN0VmFsdWVzPjsKLXVzaW5nIFNWR0FuaW1hdGVkTGVu
Z3RoTGlzdEF0dHJpYnV0ZSA9IFNWR0FuaW1hdGVkQXR0cmlidXRlTGlzdDxTVkdBbmltYXRlZExl
bmd0aExpc3Q+OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBPd25lclR5cGU+Ci11c2luZyBTVkdBbmlt
YXRlZExlbmd0aExpc3RBdHRyaWJ1dGVBY2Nlc3NvciA9IFNWR0FuaW1hdGVkQXR0cmlidXRlQWNj
ZXNzb3I8T3duZXJUeXBlLCBTVkdBbmltYXRlZExlbmd0aExpc3RBdHRyaWJ1dGUsIEFuaW1hdGVk
TGVuZ3RoTGlzdD47Ci0KLWNsYXNzIFNWR0FuaW1hdGVkTGVuZ3RoTGlzdEFuaW1hdG9yIGZpbmFs
IDogcHVibGljIFNWR0FuaW1hdGVkVHlwZUFuaW1hdG9yIHsKLXB1YmxpYzoKLSAgICBTVkdBbmlt
YXRlZExlbmd0aExpc3RBbmltYXRvcihTVkdBbmltYXRpb25FbGVtZW50KiwgU1ZHRWxlbWVudCop
OwotCi0gICAgc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gY29uc3RydWN0RnJvbVN0
cmluZyhjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5p
bWF0ZWRUeXBlPiBzdGFydEFuaW1WYWxBbmltYXRpb24oY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVk
UHJvcGVydHlMaXN0Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzdG9wQW5pbVZhbEFuaW1hdGlvbihj
b25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKSBvdmVycmlkZTsKLSAgICB2b2lk
IHJlc2V0QW5pbVZhbFRvQmFzZVZhbChjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxp
c3QmLCBTVkdBbmltYXRlZFR5cGUmKSBvdmVycmlkZTsKLSAgICB2b2lkIGFuaW1WYWxXaWxsQ2hh
bmdlKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYpIG92ZXJyaWRlOwotICAg
IHZvaWQgYW5pbVZhbERpZENoYW5nZShjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxp
c3QmKSBvdmVycmlkZTsKLQotICAgIHZvaWQgYWRkQW5pbWF0ZWRUeXBlcyhTVkdBbmltYXRlZFR5
cGUqLCBTVkdBbmltYXRlZFR5cGUqKSBvdmVycmlkZTsKLSAgICB2b2lkIGNhbGN1bGF0ZUFuaW1h
dGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQgcmVwZWF0Q291bnQsIFNWR0FuaW1h
dGVkVHlwZSosIFNWR0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVk
VHlwZSopIG92ZXJyaWRlOwotICAgIGZsb2F0IGNhbGN1bGF0ZURpc3RhbmNlKGNvbnN0IFN0cmlu
ZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZykgb3ZlcnJpZGU7Ci0KLXByaXZh
dGU6Ci0gICAgU1ZHTGVuZ3RoTW9kZSBtX2xlbmd0aE1vZGU7Ci19OwotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBl
LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlLmgKaW5kZXggNjllODZmNTdj
NDM2NmU1OGIyM2I1MDc5NmMwNWQ4OTU3ZTViZGEwMy4uOWZkMzAyYzI4YTRjMmI1Y2FlMDQ0NDcx
NDMyMGIyZmZkNzJmMWI2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1h
dGVkVHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGUuaApAQCAt
MjAsNiArMjAsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIlNWR01hcmtlclR5cGVz
LmgiCiAjaW5jbHVkZSAiU1ZHVmFsdWUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTEz
LDggKzExNCw2IEBAIHB1YmxpYzoKICAgICAgICAgc3RhdGljIEFuaW1hdGVkUHJvcGVydHlUeXBl
IGFuaW1hdGVkVHlwZXNbXSA9IHsKICAgICAgICAgICAgIEFuaW1hdGVkQW5nbGUsCiAgICAgICAg
ICAgICBBbmltYXRlZEVudW1lcmF0aW9uLAotICAgICAgICAgICAgQW5pbWF0ZWRMZW5ndGgsCi0g
ICAgICAgICAgICBBbmltYXRlZExlbmd0aExpc3QsCiAgICAgICAgICAgICBBbmltYXRlZFBhdGgs
CiAgICAgICAgICAgICBBbmltYXRlZFRyYW5zZm9ybUxpc3QKICAgICAgICAgfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmNwcAppbmRleCAyOTgyYzQzYzc0NDQ2ZDI0
ZGZlMWY3MzExMjE0OGQ3YTVjZjEyNmVmLi4yNmRkM2E0ZmZiNDBhNGYwMTI2ZjZkNDhjMzFjZWY3
NmYzMDM5MjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuY3Bw
CkBAIC0zMzYsMTMgKzMzNiw5IEBAIGJvb2wgU1ZHQW5pbWF0aW9uRWxlbWVudDo6aXNBY2N1bXVs
YXRlZCgpIGNvbnN0CiAgICAgcmV0dXJuIHZhbHVlID09IHN1bSAmJiBhbmltYXRpb25Nb2RlKCkg
IT0gQW5pbWF0aW9uTW9kZTo6VG87CiB9CiAKLWJvb2wgU1ZHQW5pbWF0aW9uRWxlbWVudDo6aXNU
YXJnZXRBdHRyaWJ1dGVDU1NQcm9wZXJ0eShTVkdFbGVtZW50KiBlbGVtZW50LCBjb25zdCBRdWFs
aWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKQorYm9vbCBTVkdBbmltYXRpb25FbGVtZW50Ojppc1Rh
cmdldEF0dHJpYnV0ZUNTU1Byb3BlcnR5KFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQsIGNvbnN0
IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCiB7Ci0gICAgaWYgKGVsZW1lbnQtPmlzVGV4
dENvbnRlbnQoKQotICAgICAgICAmJiAoYXR0cmlidXRlTmFtZSA9PSBTVkdOYW1lczo6eEF0dHIg
fHwgYXR0cmlidXRlTmFtZSA9PSBTVkdOYW1lczo6eUF0dHIpKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KLSAgICByZXR1cm4gU1ZHRWxlbWVudDo6aXNBbmltYXRhYmxlQ1NTUHJvcGVydHkoYXR0
cmlidXRlTmFtZSk7CisgICAgcmV0dXJuIHRhcmdldEVsZW1lbnQtPmlzQW5pbWF0ZWRTdHlsZUF0
dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsKIH0KIAogU1ZHQW5pbWF0aW9uRWxlbWVudDo6U2hvdWxk
QXBwbHlBbmltYXRpb24gU1ZHQW5pbWF0aW9uRWxlbWVudDo6c2hvdWxkQXBwbHlBbmltYXRpb24o
U1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRl
TmFtZSkKQEAgLTY0NSwxMyArNjQxLDEzIEBAIHZvaWQgU1ZHQW5pbWF0aW9uRWxlbWVudDo6YWRq
dXN0Rm9ySW5oZXJpdGFuY2UoU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCwgY29uc3QKICAgICBj
b21wdXRlQ1NTUHJvcGVydHlWYWx1ZSgmc3ZnUGFyZW50LCBjc3NQcm9wZXJ0eUlEKGF0dHJpYnV0
ZU5hbWUubG9jYWxOYW1lKCkpLCB2YWx1ZSk7CiB9CiAKLXN0YXRpYyBib29sIGluaGVyaXRzRnJv
bVByb3BlcnR5KFNWR0VsZW1lbnQqLCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1l
LCBjb25zdCBTdHJpbmcmIHZhbHVlKQorc3RhdGljIGJvb2wgaW5oZXJpdHNGcm9tUHJvcGVydHko
U1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRl
TmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
Y29uc3QgQXRvbWljU3RyaW5nPiBpbmhlcml0KCJpbmhlcml0IiwgQXRvbWljU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgCiAgICAgaWYgKHZhbHVlLmlzRW1wdHkoKSB8fCB2YWx1
ZSAhPSBpbmhlcml0KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIFNWR0VsZW1l
bnQ6OmlzQW5pbWF0YWJsZUNTU1Byb3BlcnR5KGF0dHJpYnV0ZU5hbWUpOworICAgIHJldHVybiB0
YXJnZXRFbGVtZW50LT5pc0FuaW1hdGVkU3R5bGVBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7CiB9
CiAKIHZvaWQgU1ZHQW5pbWF0aW9uRWxlbWVudDo6ZGV0ZXJtaW5lUHJvcGVydHlWYWx1ZVR5cGVz
KGNvbnN0IFN0cmluZyYgZnJvbSwgY29uc3QgU3RyaW5nJiB0bykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRvckZhY3RvcnkuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdBbmltYXRvckZhY3RvcnkuaAppbmRleCBjOTQ0NTdkMGI0ZGY3NWIxNjZlZWMwZDhhMDM1NjQ4
YzdmMTkzYTk5Li4xZGU5MTE0OWY5NDJhNTYzYWI3NzEzM2Y3YjJmMmVhM2VhMjQ3NWFjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0b3JGYWN0b3J5LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdG9yRmFjdG9yeS5oCkBAIC0yMSw4ICsyMSw2IEBACiAK
ICNpbmNsdWRlICJTVkdBbmltYXRlZEFuZ2xlLmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRFbnVt
ZXJhdGlvbi5oIgotI2luY2x1ZGUgIlNWR0FuaW1hdGVkTGVuZ3RoLmgiCi0jaW5jbHVkZSAiU1ZH
QW5pbWF0ZWRMZW5ndGhMaXN0LmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRQYXRoLmgiCiAjaW5j
bHVkZSAiU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0LmgiCiAKQEAgLTMyLDYgKzMwLDMzIEBAIGNs
YXNzIFNWR0FuaW1hdGlvbkVsZW1lbnQ7CiAKIGNsYXNzIFNWR0FuaW1hdG9yRmFjdG9yeSB7CiBw
dWJsaWM6CisgICAgc3RhdGljIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoQW5pbWF0ZWRQcm9w
ZXJ0eVR5cGUgYXR0cmlidXRlVHlwZSkKKyAgICB7CisgICAgICAgIHN3aXRjaCAoYXR0cmlidXRl
VHlwZSkgeworICAgICAgICBjYXNlIEFuaW1hdGVkQm9vbGVhbjoKKyAgICAgICAgY2FzZSBBbmlt
YXRlZENvbG9yOgorICAgICAgICBjYXNlIEFuaW1hdGVkSW50ZWdlcjoKKyAgICAgICAgY2FzZSBB
bmltYXRlZEludGVnZXJPcHRpb25hbEludGVnZXI6CisgICAgICAgIGNhc2UgQW5pbWF0ZWRMZW5n
dGg6CisgICAgICAgIGNhc2UgQW5pbWF0ZWRMZW5ndGhMaXN0OgorICAgICAgICBjYXNlIEFuaW1h
dGVkTnVtYmVyOgorICAgICAgICBjYXNlIEFuaW1hdGVkTnVtYmVyTGlzdDoKKyAgICAgICAgY2Fz
ZSBBbmltYXRlZE51bWJlck9wdGlvbmFsTnVtYmVyOgorICAgICAgICBjYXNlIEFuaW1hdGVkUG9p
bnRzOgorICAgICAgICBjYXNlIEFuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbzoKKyAgICAgICAg
Y2FzZSBBbmltYXRlZFJlY3Q6CisgICAgICAgIGNhc2UgQW5pbWF0ZWRTdHJpbmc6CisgICAgICAg
IGNhc2UgQW5pbWF0ZWRVbmtub3duOgorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
ICAgIGNhc2UgQW5pbWF0ZWRBbmdsZToKKyAgICAgICAgY2FzZSBBbmltYXRlZEVudW1lcmF0aW9u
OgorICAgICAgICBjYXNlIEFuaW1hdGVkUGF0aDoKKyAgICAgICAgY2FzZSBBbmltYXRlZFRyYW5z
Zm9ybUxpc3Q6CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKwog
ICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3I+IGNyZWF0
ZShTVkdBbmltYXRpb25FbGVtZW50KiBhbmltYXRpb25FbGVtZW50LCBTVkdFbGVtZW50KiBjb250
ZXh0RWxlbWVudCwgQW5pbWF0ZWRQcm9wZXJ0eVR5cGUgYXR0cmlidXRlVHlwZSkKICAgICB7CiAg
ICAgICAgIEFTU0VSVChhbmltYXRpb25FbGVtZW50KTsKQEAgLTQyLDYgKzY3LDggQEAgcHVibGlj
OgogICAgICAgICBjYXNlIEFuaW1hdGVkQ29sb3I6CiAgICAgICAgIGNhc2UgQW5pbWF0ZWRJbnRl
Z2VyOgogICAgICAgICBjYXNlIEFuaW1hdGVkSW50ZWdlck9wdGlvbmFsSW50ZWdlcjoKKyAgICAg
ICAgY2FzZSBBbmltYXRlZExlbmd0aDoKKyAgICAgICAgY2FzZSBBbmltYXRlZExlbmd0aExpc3Q6
CiAgICAgICAgIGNhc2UgQW5pbWF0ZWROdW1iZXI6CiAgICAgICAgIGNhc2UgQW5pbWF0ZWROdW1i
ZXJMaXN0OgogICAgICAgICBjYXNlIEFuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXI6CkBAIC00
OSwyNiArNzYsMTkgQEAgcHVibGljOgogICAgICAgICBjYXNlIEFuaW1hdGVkUHJlc2VydmVBc3Bl
Y3RSYXRpbzoKICAgICAgICAgY2FzZSBBbmltYXRlZFJlY3Q6CiAgICAgICAgIGNhc2UgQW5pbWF0
ZWRTdHJpbmc6CisgICAgICAgIGNhc2UgQW5pbWF0ZWRVbmtub3duOgorICAgICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgICAg
ICBjYXNlIEFuaW1hdGVkQW5nbGU6CiAgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxTVkdBbmltYXRlZEFuZ2xlQW5pbWF0b3I+KGFuaW1hdGlvbkVsZW1lbnQsIGNvbnRleHRFbGVt
ZW50KTsKICAgICAgICAgY2FzZSBBbmltYXRlZEVudW1lcmF0aW9uOgogICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbkFuaW1hdG9yPihhbmlt
YXRpb25FbGVtZW50LCBjb250ZXh0RWxlbWVudCk7Ci0gICAgICAgIGNhc2UgQW5pbWF0ZWRMZW5n
dGg6Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZExlbmd0
aEFuaW1hdG9yPihhbmltYXRpb25FbGVtZW50LCBjb250ZXh0RWxlbWVudCk7Ci0gICAgICAgIGNh
c2UgQW5pbWF0ZWRMZW5ndGhMaXN0OgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8U1ZHQW5pbWF0ZWRMZW5ndGhMaXN0QW5pbWF0b3I+KGFuaW1hdGlvbkVsZW1lbnQsIGNvbnRl
eHRFbGVtZW50KTsKICAgICAgICAgY2FzZSBBbmltYXRlZFBhdGg6CiAgICAgICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZFBhdGhBbmltYXRvcj4oYW5pbWF0aW9uRWxl
bWVudCwgY29udGV4dEVsZW1lbnQpOwogICAgICAgICBjYXNlIEFuaW1hdGVkVHJhbnNmb3JtTGlz
dDoKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVkVHJhbnNm
b3JtTGlzdEFuaW1hdG9yPihhbmltYXRpb25FbGVtZW50LCBjb250ZXh0RWxlbWVudCk7Ci0gICAg
ICAgIGNhc2UgQW5pbWF0ZWRVbmtub3duOgotICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
LQotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Np
cmNsZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NpcmNsZUVsZW1lbnQuY3Bw
CmluZGV4IGVmM2RhYTZhODhmYTM5YmU4OWYyY2M2M2M1OTFhMmQ4ZDAwODg4ZjkuLjBiZTY4Mjdh
MTYxZTQ0YTgxZGYxNWYxMjViZWY3MjljYjdjNzFkMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdDaXJjbGVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
Q2lyY2xlRWxlbWVudC5jcHAKQEAgLTEsNyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAy
MDA0LCAyMDA1LCAyMDA2LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUu
b3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3IFJvYiBCdWlzIDxi
dWlzQGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0zNSw3ICszNSwxMyBAQCBpbmxp
bmUgU1ZHQ2lyY2xlRWxlbWVudDo6U1ZHQ2lyY2xlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1l
JiB0YWdOYW1lLCBEb2N1bWVudAogICAgICwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCh0
aGlzKQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpjaXJjbGVUYWcpKTsKLSAg
ICByZWdpc3RlckF0dHJpYnV0ZXMoKTsKKworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNl
RmxhZzsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10geworICAgICAgICBQcm9wZXJ0
eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5PFNWR05hbWVzOjpjeEF0dHIsICZTVkdDaXJjbGVF
bGVtZW50OjptX2N4PigpOworICAgICAgICBQcm9wZXJ0eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3Bl
cnR5PFNWR05hbWVzOjpjeUF0dHIsICZTVkdDaXJjbGVFbGVtZW50OjptX2N5PigpOworICAgICAg
ICBQcm9wZXJ0eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5PFNWR05hbWVzOjpyQXR0ciwgJlNW
R0NpcmNsZUVsZW1lbnQ6Om1fcj4oKTsKKyAgICB9KTsKIH0KIAogUmVmPFNWR0NpcmNsZUVsZW1l
bnQ+IFNWR0NpcmNsZUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1l
LCBEb2N1bWVudCYgZG9jdW1lbnQpCkBAIC00MywyNiArNDksMTYgQEAgUmVmPFNWR0NpcmNsZUVs
ZW1lbnQ+IFNWR0NpcmNsZUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdO
YW1lLCBEb2MKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdDaXJjbGVFbGVtZW50KHRhZ05h
bWUsIGRvY3VtZW50KSk7CiB9CiAKLXZvaWQgU1ZHQ2lyY2xlRWxlbWVudDo6cmVnaXN0ZXJBdHRy
aWJ1dGVzKCkKLXsKLSAgICBhdXRvJiByZWdpc3RyeSA9IGF0dHJpYnV0ZVJlZ2lzdHJ5KCk7Ci0g
ICAgaWYgKCFyZWdpc3RyeS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLSAgICByZWdpc3Ry
eS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1lczo6Y3hBdHRyLCAmU1ZHQ2lyY2xlRWxlbWVudDo6
bV9jeD4oKTsKLSAgICByZWdpc3RyeS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1lczo6Y3lBdHRy
LCAmU1ZHQ2lyY2xlRWxlbWVudDo6bV9jeT4oKTsKLSAgICByZWdpc3RyeS5yZWdpc3RlckF0dHJp
YnV0ZTxTVkdOYW1lczo6ckF0dHIsICZTVkdDaXJjbGVFbGVtZW50OjptX3I+KCk7Ci19Ci0KIHZv
aWQgU1ZHQ2lyY2xlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
bmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBTVkdQYXJzaW5nRXJyb3Ig
cGFyc2VFcnJvciA9IE5vRXJyb3I7CiAKICAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6Y3hBdHRy
KQotICAgICAgICBtX2N4LnNldFZhbHVlKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3Ro
TW9kZVdpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAgICAgICBtX2N4LT5zZXRCYXNlVmFs
SW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlV2lkdGgsIHZhbHVl
LCBwYXJzZUVycm9yKSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6Y3lBdHRyKQot
ICAgICAgICBtX2N5LnNldFZhbHVlKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9k
ZUhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKKyAgICAgICAgbV9jeS0+c2V0QmFzZVZhbElu
dGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUs
IHBhcnNlRXJyb3IpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjpyQXR0cikKLSAg
ICAgICAgbV9yLnNldFZhbHVlKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZU90
aGVyLCB2YWx1ZSwgcGFyc2VFcnJvciwgRm9yYmlkTmVnYXRpdmVMZW5ndGhzKSk7CisgICAgICAg
IG1fci0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3Ro
TW9kZU90aGVyLCB2YWx1ZSwgcGFyc2VFcnJvciwgRm9yYmlkTmVnYXRpdmVMZW5ndGhzKSk7CiAK
ICAgICByZXBvcnRBdHRyaWJ1dGVQYXJzaW5nRXJyb3IocGFyc2VFcnJvciwgbmFtZSwgdmFsdWUp
OwogCkBAIC03Miw3ICs2OCw3IEBAIHZvaWQgU1ZHQ2lyY2xlRWxlbWVudDo6cGFyc2VBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyCiAKIHZvaWQgU1ZH
Q2lyY2xlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBh
dHRyTmFtZSkKIHsKLSAgICBpZiAoaXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKKyAgICBp
ZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAg
ICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7CiAgICAgICAgIGludmFs
aWRhdGVTVkdQcmVzZW50YXRpb25BdHRyaWJ1dGVTdHlsZSgpOwogICAgICAgICByZXR1cm47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2lyY2xlRWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0NpcmNsZUVsZW1lbnQuaAppbmRleCA1ZmUwNjNiMDE0YjI1MTZiYjFl
YWUwMjYyYjRjOTU4YzA5ZDFmYzE2Li45M2NkNjBkMDQwZmQ0OTkwY2RhOWM3MDk5YTNkNTg4ODE0
Yjc0ZjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2lyY2xlRWxlbWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDaXJjbGVFbGVtZW50LmgKQEAgLTIxLDcgKzIx
LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJTVkdBbmltYXRlZExlbmd0aC5oIgog
I2luY2x1ZGUgIlNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQuaCIKICNpbmNsdWRlICJTVkdH
ZW9tZXRyeUVsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgpAQCAtMzMsMzAgKzMyLDIz
IEBAIGNsYXNzIFNWR0NpcmNsZUVsZW1lbnQgZmluYWwgOiBwdWJsaWMgU1ZHR2VvbWV0cnlFbGVt
ZW50LCBwdWJsaWMgU1ZHRXh0ZXJuYWxSZXNvCiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxTVkdD
aXJjbGVFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAK
LSAgICBjb25zdCBTVkdMZW5ndGhWYWx1ZSYgY3goKSBjb25zdCB7IHJldHVybiBtX2N4LmN1cnJl
bnRWYWx1ZShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9Ci0gICAgY29uc3QgU1ZHTGVuZ3RoVmFs
dWUmIGN5KCkgY29uc3QgeyByZXR1cm4gbV9jeS5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQ
cm94eSgpKTsgfQotICAgIGNvbnN0IFNWR0xlbmd0aFZhbHVlJiByKCkgY29uc3QgeyByZXR1cm4g
bV9yLmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CisgICAgY29uc3QgU1ZH
TGVuZ3RoVmFsdWUmIGN4KCkgY29uc3QgeyByZXR1cm4gbV9jeC0+Y3VycmVudFZhbHVlKCk7IH0K
KyAgICBjb25zdCBTVkdMZW5ndGhWYWx1ZSYgY3koKSBjb25zdCB7IHJldHVybiBtX2N5LT5jdXJy
ZW50VmFsdWUoKTsgfQorICAgIGNvbnN0IFNWR0xlbmd0aFZhbHVlJiByKCkgY29uc3QgeyByZXR1
cm4gbV9yLT5jdXJyZW50VmFsdWUoKTsgfQogCi0gICAgUmVmUHRyPFNWR0FuaW1hdGVkTGVuZ3Ro
PiBjeEFuaW1hdGVkKCkgeyByZXR1cm4gbV9jeC5hbmltYXRlZFByb3BlcnR5KGF0dHJpYnV0ZU93
bmVyUHJveHkoKSk7IH0KLSAgICBSZWZQdHI8U1ZHQW5pbWF0ZWRMZW5ndGg+IGN5QW5pbWF0ZWQo
KSB7IHJldHVybiBtX2N5LmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsg
fQotICAgIFJlZlB0cjxTVkdBbmltYXRlZExlbmd0aD4gckFuaW1hdGVkKCkgeyByZXR1cm4gbV9y
LmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQorICAgIFNWR0FuaW1h
dGVkTGVuZ3RoJiBjeEFuaW1hdGVkKCkgeyByZXR1cm4gbV9jeDsgfQorICAgIFNWR0FuaW1hdGVk
TGVuZ3RoJiBjeUFuaW1hdGVkKCkgeyByZXR1cm4gbV9jeTsgfQorICAgIFNWR0FuaW1hdGVkTGVu
Z3RoJiByQW5pbWF0ZWQoKSB7IHJldHVybiBtX3I7IH0KIAogcHJpdmF0ZToKICAgICBTVkdDaXJj
bGVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCiAgICAgdXNpbmcg
QXR0cmlidXRlT3duZXJQcm94eSA9IFNWR0F0dHJpYnV0ZU93bmVyUHJveHlJbXBsPFNWR0NpcmNs
ZUVsZW1lbnQsIFNWR0dlb21ldHJ5RWxlbWVudCwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZD47Ci0gICAgc3RhdGljIGF1dG8mIGF0dHJpYnV0ZVJlZ2lzdHJ5KCkgeyByZXR1cm4gQXR0cmli
dXRlT3duZXJQcm94eTo6YXR0cmlidXRlUmVnaXN0cnkoKTsgfQotICAgIHN0YXRpYyB2b2lkIHJl
Z2lzdGVyQXR0cmlidXRlcygpOwogICAgIGNvbnN0IFNWR0F0dHJpYnV0ZU93bmVyUHJveHkmIGF0
dHJpYnV0ZU93bmVyUHJveHkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2F0dHJpYnV0ZU93bmVy
UHJveHk7IH0KIAogICAgIHVzaW5nIFByb3BlcnR5UmVnaXN0cnkgPSBTVkdQcm9wZXJ0eU93bmVy
UmVnaXN0cnk8U1ZHQ2lyY2xlRWxlbWVudCwgU1ZHR2VvbWV0cnlFbGVtZW50LCBTVkdFeHRlcm5h
bFJlc291cmNlc1JlcXVpcmVkPjsKICAgICBjb25zdCBTVkdQcm9wZXJ0eVJlZ2lzdHJ5JiBwcm9w
ZXJ0eVJlZ2lzdHJ5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wcm9wZXJ0eVJlZ2lzdHJ5OyB9
CiAKLSAgICBzdGF0aWMgYm9vbCBpc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IGF0dHJpYnV0ZU5hbWUpCi0gICAgewotICAgICAgICByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94
eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKSB8fCBQcm9wZXJ0eVJlZ2lzdHJ5Ojpp
c0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOwotICAgIH0KLQogICAgIHZvaWQgcGFyc2VB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIGZpbmFs
OwogICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgZmlu
YWw7CiAKQEAgLTY3LDkgKzU5LDkgQEAgcHJpdmF0ZToKIAogICAgIEF0dHJpYnV0ZU93bmVyUHJv
eHkgbV9hdHRyaWJ1dGVPd25lclByb3h5IHsgKnRoaXMgfTsKICAgICBQcm9wZXJ0eVJlZ2lzdHJ5
IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07Ci0gICAgU1ZHQW5pbWF0ZWRMZW5ndGhBdHRy
aWJ1dGUgbV9jeCB7IExlbmd0aE1vZGVXaWR0aCB9OwotICAgIFNWR0FuaW1hdGVkTGVuZ3RoQXR0
cmlidXRlIG1fY3kgeyBMZW5ndGhNb2RlSGVpZ2h0IH07Ci0gICAgU1ZHQW5pbWF0ZWRMZW5ndGhB
dHRyaWJ1dGUgbV9yIHsgTGVuZ3RoTW9kZU90aGVyIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVu
Z3RoPiBtX2N4IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlV2lk
dGgpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX2N5IHsgU1ZHQW5pbWF0ZWRMZW5n
dGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0KSB9OworICAgIFJlZjxTVkdBbmltYXRl
ZExlbmd0aD4gbV9yIHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2Rl
T3RoZXIpIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQ3Vyc29yRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQ3Vyc29yRWxlbWVudC5jcHAKaW5kZXggY2Q4MDhjOTk4NGI1OTliMGE0NTc5NTRmYWY0MmVh
M2ZkOTNkYTE0ZS4uZDIwYTNhNDZiNWY1MDM3YTZlODEyOWQyNWM3MTZiNTk5OWJjMzcyNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0N1cnNvckVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmNwcApAQCAtMSw3ICsxLDcgQEAKIC8q
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDggTmlrb2xhcyBaaW1tZXJt
YW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIw
MDYsIDIwMDcgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAxOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAg
LTQwLDcgKzQwLDEyIEBAIGlubGluZSBTVkdDdXJzb3JFbGVtZW50OjpTVkdDdXJzb3JFbGVtZW50
KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50CiAgICAgLCBTVkdVUklSZWZl
cmVuY2UodGhpcykKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6Y3Vyc29yVGFn
KSk7Ci0gICAgcmVnaXN0ZXJBdHRyaWJ1dGVzKCk7CisKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2Zs
YWcgb25jZUZsYWc7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKKyAgICAgICAg
UHJvcGVydHlSZWdpc3RyeTo6cmVnaXN0ZXJQcm9wZXJ0eTxTVkdOYW1lczo6eEF0dHIsICZTVkdD
dXJzb3JFbGVtZW50OjptX3g+KCk7CisgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVy
UHJvcGVydHk8U1ZHTmFtZXM6OnlBdHRyLCAmU1ZHQ3Vyc29yRWxlbWVudDo6bV95PigpOworICAg
IH0pOwogfQogCiBSZWY8U1ZHQ3Vyc29yRWxlbWVudD4gU1ZHQ3Vyc29yRWxlbWVudDo6Y3JlYXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKQEAgLTU0
LDIzICs1OSwxNCBAQCBTVkdDdXJzb3JFbGVtZW50Ojp+U1ZHQ3Vyc29yRWxlbWVudCgpCiAgICAg
ICAgIGNsaWVudC0+Y3Vyc29yRWxlbWVudFJlbW92ZWQoKnRoaXMpOwogfQogCi12b2lkIFNWR0N1
cnNvckVsZW1lbnQ6OnJlZ2lzdGVyQXR0cmlidXRlcygpCi17Ci0gICAgYXV0byYgcmVnaXN0cnkg
PSBhdHRyaWJ1dGVSZWdpc3RyeSgpOwotICAgIGlmICghcmVnaXN0cnkuaXNFbXB0eSgpKQotICAg
ICAgICByZXR1cm47Ci0gICAgcmVnaXN0cnkucmVnaXN0ZXJBdHRyaWJ1dGU8U1ZHTmFtZXM6OnhB
dHRyLCAmU1ZHQ3Vyc29yRWxlbWVudDo6bV94PigpOwotICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0
cmlidXRlPFNWR05hbWVzOjp5QXR0ciwgJlNWR0N1cnNvckVsZW1lbnQ6Om1feT4oKTsKLX0KLQog
dm9pZCBTVkdDdXJzb3JFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogewogICAgIFNWR1BhcnNpbmdFcnJv
ciBwYXJzZUVycm9yID0gTm9FcnJvcjsKIAogICAgIGlmIChuYW1lID09IFNWR05hbWVzOjp4QXR0
cikKLSAgICAgICAgbV94LnNldFZhbHVlKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3Ro
TW9kZVdpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAgICAgICBtX3gtPnNldEJhc2VWYWxJ
bnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVXaWR0aCwgdmFsdWUs
IHBhcnNlRXJyb3IpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjp5QXR0cikKLSAg
ICAgICAgbV95LnNldFZhbHVlKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZUhl
aWdodCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKKyAgICAgICAgbV95LT5zZXRCYXNlVmFsSW50ZXJu
YWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSwgcGFy
c2VFcnJvcikpOwogCiAgICAgcmVwb3J0QXR0cmlidXRlUGFyc2luZ0Vycm9yKHBhcnNlRXJyb3Is
IG5hbWUsIHZhbHVlKTsKIApAQCAtOTIsNyArODgsNyBAQCB2b2lkIFNWR0N1cnNvckVsZW1lbnQ6
OnJlbW92ZUNsaWVudChDU1NDdXJzb3JJbWFnZVZhbHVlJiB2YWx1ZSkKIAogdm9pZCBTVkdDdXJz
b3JFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJO
YW1lKQogewotICAgIGlmIChpc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgeworICAgIGlmIChQ
cm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewogICAgICAgICBJ
bnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKICAgICAgICAgZm9yIChhdXRv
JiBjbGllbnQgOiBtX2NsaWVudHMpCiAgICAgICAgICAgICBjbGllbnQtPmN1cnNvckVsZW1lbnRD
aGFuZ2VkKCp0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDdXJzb3JF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ3Vyc29yRWxlbWVudC5oCmluZGV4IDY0
NTFlY2UxOWU1M2M4ZDI1YTM4OGQwYzIwNTYzY2U3YTFmYjBiM2MuLmUxMmYyNGNjZDVmYTgzNjlm
ODY1MWUzZThiZGFkOTU0MWVlNThiMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdDdXJzb3JFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0N1cnNvckVsZW1l
bnQuaApAQCAtMjEsNyArMjEsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlNWR0Fu
aW1hdGVkTGVuZ3RoLmgiCiAjaW5jbHVkZSAiU1ZHRWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR0V4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQuaCIKICNpbmNsdWRlICJTVkdUZXN0cy5oIgpAQCAtNDEs
MjggKzQwLDIxIEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZENsaWVudChDU1NDdXJzb3JJbWFnZVZh
bHVlJik7CiAgICAgdm9pZCByZW1vdmVDbGllbnQoQ1NTQ3Vyc29ySW1hZ2VWYWx1ZSYpOwogCi0g
ICAgY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIHgoKSBjb25zdCB7IHJldHVybiBtX3guY3VycmVudFZh
bHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBjb25zdCBTVkdMZW5ndGhWYWx1ZSYg
eSgpIGNvbnN0IHsgcmV0dXJuIG1feS5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgp
KTsgfQorICAgIGNvbnN0IFNWR0xlbmd0aFZhbHVlJiB4KCkgY29uc3QgeyByZXR1cm4gbV94LT5j
dXJyZW50VmFsdWUoKTsgfQorICAgIGNvbnN0IFNWR0xlbmd0aFZhbHVlJiB5KCkgY29uc3QgeyBy
ZXR1cm4gbV95LT5jdXJyZW50VmFsdWUoKTsgfQogCi0gICAgUmVmUHRyPFNWR0FuaW1hdGVkTGVu
Z3RoPiB4QW5pbWF0ZWQoKSB7IHJldHVybiBtX3guYW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVP
d25lclByb3h5KCkpOyB9Ci0gICAgUmVmUHRyPFNWR0FuaW1hdGVkTGVuZ3RoPiB5QW5pbWF0ZWQo
KSB7IHJldHVybiBtX3kuYW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9
CisgICAgU1ZHQW5pbWF0ZWRMZW5ndGgmIHhBbmltYXRlZCgpIHsgcmV0dXJuIG1feDsgfQorICAg
IFNWR0FuaW1hdGVkTGVuZ3RoJiB5QW5pbWF0ZWQoKSB7IHJldHVybiBtX3k7IH0KIAogcHJpdmF0
ZToKICAgICBTVkdDdXJzb3JFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYp
OwogCiAgICAgdXNpbmcgQXR0cmlidXRlT3duZXJQcm94eSA9IFNWR0F0dHJpYnV0ZU93bmVyUHJv
eHlJbXBsPFNWR0N1cnNvckVsZW1lbnQsIFNWR0VsZW1lbnQsIFNWR0V4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWQsIFNWR1Rlc3RzLCBTVkdVUklSZWZlcmVuY2U+OwotICAgIHN0YXRpYyBBdHRyaWJ1
dGVPd25lclByb3h5OjpBdHRyaWJ1dGVSZWdpc3RyeSYgYXR0cmlidXRlUmVnaXN0cnkoKSB7IHJl
dHVybiBBdHRyaWJ1dGVPd25lclByb3h5OjphdHRyaWJ1dGVSZWdpc3RyeSgpOyB9Ci0gICAgc3Rh
dGljIHZvaWQgcmVnaXN0ZXJBdHRyaWJ1dGVzKCk7CiAgICAgY29uc3QgU1ZHQXR0cmlidXRlT3du
ZXJQcm94eSYgYXR0cmlidXRlT3duZXJQcm94eSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYXR0
cmlidXRlT3duZXJQcm94eTsgfQogCiAgICAgdXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9IFNWR1By
b3BlcnR5T3duZXJSZWdpc3RyeTxTVkdDdXJzb3JFbGVtZW50LCBTVkdFbGVtZW50LCBTVkdFeHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkLCBTVkdUZXN0cywgU1ZHVVJJUmVmZXJlbmNlPjsKICAgICBj
b25zdCBTVkdQcm9wZXJ0eVJlZ2lzdHJ5JiBwcm9wZXJ0eVJlZ2lzdHJ5KCkgY29uc3QgZmluYWwg
eyByZXR1cm4gbV9wcm9wZXJ0eVJlZ2lzdHJ5OyB9CiAgICAgCi0gICAgc3RhdGljIGJvb2wgaXNL
bm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmlzS25vd25BdHRyaWJ1dGUoYXR0
cmlidXRlTmFtZSkgfHwgUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1
dGVOYW1lKTsKLSAgICB9Ci0KICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBmaW5hbDsKICAgICB2b2lkIHN2Z0F0dHJpYnV0
ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGZpbmFsOwogCkBAIC03Myw4ICs2NSw4IEBA
IHByaXZhdGU6CiAKICAgICBBdHRyaWJ1dGVPd25lclByb3h5IG1fYXR0cmlidXRlT3duZXJQcm94
eSB7ICp0aGlzIH07CiAgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAq
dGhpcyB9OwotICAgIFNWR0FuaW1hdGVkTGVuZ3RoQXR0cmlidXRlIG1feCB7IExlbmd0aE1vZGVX
aWR0aCB9OwotICAgIFNWR0FuaW1hdGVkTGVuZ3RoQXR0cmlidXRlIG1feSB7IExlbmd0aE1vZGVI
ZWlnaHQgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feCB7IFNWR0FuaW1hdGVkTGVu
Z3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZVdpZHRoKSB9OworICAgIFJlZjxTVkdBbmltYXRl
ZExlbmd0aD4gbV95IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2Rl
SGVpZ2h0KSB9OwogICAgIEhhc2hTZXQ8Q1NTQ3Vyc29ySW1hZ2VWYWx1ZSo+IG1fY2xpZW50czsK
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAppbmRleCAyYzFmMmZkYTY4NTQyNWQyNTBk
MjExYzgyNTE3ZDFjYWE2ZWQ5OTUyLi5hYTEwZTgyNjk1ZDc2YTE1YzY5NjFiMzkwZDM0NmVmOWE2
YjJkNjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCkBAIC03NDAsNyArNzQwLDEzIEBA
IHZvaWQgU1ZHRWxlbWVudDo6Y29tbWl0UHJvcGVydHlDaGFuZ2UoU1ZHUHJvcGVydHkqIHByb3Bl
cnR5KQogdm9pZCBTVkdFbGVtZW50Ojpjb21taXRQcm9wZXJ0eUNoYW5nZShTVkdBbmltYXRlZFBy
b3BlcnR5JiBhbmltYXRlZFByb3BlcnR5KQogewogICAgIFF1YWxpZmllZE5hbWUgYXR0cmlidXRl
TmFtZSA9IHByb3BlcnR5UmVnaXN0cnkoKS5hbmltYXRlZFByb3BlcnR5QXR0cmlidXRlTmFtZShh
bmltYXRlZFByb3BlcnR5KTsKLSAgICBzZXRTeW5jaHJvbml6ZWRMYXp5QXR0cmlidXRlKGF0dHJp
YnV0ZU5hbWUsIGFuaW1hdGVkUHJvcGVydHkuYmFzZVZhbEFzU3RyaW5nKCkpOworCisgICAgLy8g
QSBjaGFuZ2UgaW4gYSBzdHlsZSBwcm9wZXJ0eSwgZS5nIFNWR1JlY3RFbGVtZW50Ojp4IHNob3Vs
ZCBiZSBzZXJpYWxpemVkIHRvCisgICAgLy8gdGhlIGF0dHJpYnV0ZSBpbW1lZGlhdGVseS4gT3Ro
ZXJ3aXNlIGl0IGlzIG9rYXkgdG8gYmUgbGF6eSBpbiB0aGlzIHJlZ2FyZC4KKyAgICBpZiAoIXBy
b3BlcnR5UmVnaXN0cnkoKS5pc0FuaW1hdGVkU3R5bGVQcm9wZXJ0eUF0dHJpYnV0ZShhdHRyaWJ1
dGVOYW1lKSkKKyAgICAgICAgYW5pbWF0ZWRQcm9wZXJ0eS5zZXREaXJ0eSgpOworICAgIGVsc2UK
KyAgICAgICAgc2V0U3luY2hyb25pemVkTGF6eUF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lLCBhbmlt
YXRlZFByb3BlcnR5LmJhc2VWYWxBc1N0cmluZygpKTsKIAogICAgIGludmFsaWRhdGVTVkdBdHRy
aWJ1dGVzKCk7CiAgICAgc3ZnQXR0cmlidXRlQ2hhbmdlZChhdHRyaWJ1dGVOYW1lKTsKQEAgLTc1
Niw2ICs3NjIsMTEgQEAgYm9vbCBTVkdFbGVtZW50Ojppc0FuaW1hdGVkQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpIGNvbnN0CiAgICAgcmV0dXJuIFNWR1Byb3Bl
cnR5QW5pbWF0b3JGYWN0b3J5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpIHx8IGlz
QW5pbWF0ZWRQcm9wZXJ0eUF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsKIH0KIAorYm9vbCBTVkdF
bGVtZW50Ojppc0FuaW1hdGVkU3R5bGVBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0
cmlidXRlTmFtZSkgY29uc3QKK3sKKyAgICByZXR1cm4gU1ZHUHJvcGVydHlBbmltYXRvckZhY3Rv
cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSkgfHwgcHJvcGVydHlSZWdpc3RyeSgp
LmlzQW5pbWF0ZWRTdHlsZVByb3BlcnR5QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOworfQorCiBz
dGQ6OnVuaXF1ZV9wdHI8U1ZHQXR0cmlidXRlQW5pbWF0b3I+IFNWR0VsZW1lbnQ6OmNyZWF0ZUFu
aW1hdG9yKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIEFuaW1hdGlvbk1vZGUg
YW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9v
bCBpc0FkZGl0aXZlKQogewogICAgIC8vIFByb3BlcnR5IGFuaW1hdG9yLCBlLmcuICJmaWxsIiBv
ciAiZmlsbC1vcGFjaXR5Ii4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCmluZGV4IDBmNzVlOTBiYzZh
MzkyOTRkNzBhZGY1Y2UyZTdkOTllMTY2YjNkZmYuLmU4MmJkYmFmODMyZGFjYTZjOWIxZWFlOWRm
NDVkZWJkZjg0NGE3OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaApAQCAtMTU2LDYgKzE1Niw3
IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNBbmltYXRlZFByb3BlcnR5QXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKICAgICBib29sIGlzQW5pbWF0ZWRBdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OworICAgIGJvb2wgaXNBbmltYXRlZFN0eWxlQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKIAogICAgIHZvaWQgY29tbWl0UHJvcGVy
dHlDaGFuZ2UoU1ZHUHJvcGVydHkqKSBvdmVycmlkZTsKICAgICB2b2lkIGNvbW1pdFByb3BlcnR5
Q2hhbmdlKFNWR0FuaW1hdGVkUHJvcGVydHkmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdFbGxpcHNlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxsaXBz
ZUVsZW1lbnQuY3BwCmluZGV4IDBhNTRiMTg3NWQ4YTNjZmQ5OWE0ZTVkOGM0ZTYxMDE5NDRmY2Uw
YjcuLjIzZTRhZGFhNDA4MzgwMTExZTlhYzE5YjlkYmY3NmRmOTRjY2RjYjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGxpcHNlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmNwcApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6
aW1tZXJtYW5uQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIw
MDcgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTM1LDcg
KzM1LDE0IEBAIGlubGluZSBTVkdFbGxpcHNlRWxlbWVudDo6U1ZHRWxsaXBzZUVsZW1lbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lCiAgICAgLCBTVkdFeHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkKHRoaXMpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmVs
bGlwc2VUYWcpKTsKLSAgICByZWdpc3RlckF0dHJpYnV0ZXMoKTsKKworICAgIHN0YXRpYyBzdGQ6
Om9uY2VfZmxhZyBvbmNlRmxhZzsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10gewor
ICAgICAgICBQcm9wZXJ0eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5PFNWR05hbWVzOjpjeEF0
dHIsICZTVkdFbGxpcHNlRWxlbWVudDo6bV9jeD4oKTsKKyAgICAgICAgUHJvcGVydHlSZWdpc3Ry
eTo6cmVnaXN0ZXJQcm9wZXJ0eTxTVkdOYW1lczo6Y3lBdHRyLCAmU1ZHRWxsaXBzZUVsZW1lbnQ6
Om1fY3k+KCk7CisgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZH
TmFtZXM6OnJ4QXR0ciwgJlNWR0VsbGlwc2VFbGVtZW50OjptX3J4PigpOworICAgICAgICBQcm9w
ZXJ0eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5PFNWR05hbWVzOjpyeUF0dHIsICZTVkdFbGxp
cHNlRWxlbWVudDo6bV9yeT4oKTsKKyAgICB9KTsKIH0gICAgCiAKIFJlZjxTVkdFbGxpcHNlRWxl
bWVudD4gU1ZHRWxsaXBzZUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdO
YW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCkBAIC00MywyOSArNTAsMTggQEAgUmVmPFNWR0VsbGlw
c2VFbGVtZW50PiBTVkdFbGxpcHNlRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IHRhZ05hbWUsIEQKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdFbGxpcHNlRWxlbWVudCh0
YWdOYW1lLCBkb2N1bWVudCkpOwogfQogCi12b2lkIFNWR0VsbGlwc2VFbGVtZW50OjpyZWdpc3Rl
ckF0dHJpYnV0ZXMoKQotewotICAgIGF1dG8mIHJlZ2lzdHJ5ID0gYXR0cmlidXRlUmVnaXN0cnko
KTsKLSAgICBpZiAoIXJlZ2lzdHJ5LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIHJl
Z2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjpjeEF0dHIsICZTVkdFbGxpcHNlRWxl
bWVudDo6bV9jeD4oKTsKLSAgICByZWdpc3RyeS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1lczo6
Y3lBdHRyLCAmU1ZHRWxsaXBzZUVsZW1lbnQ6Om1fY3k+KCk7Ci0gICAgcmVnaXN0cnkucmVnaXN0
ZXJBdHRyaWJ1dGU8U1ZHTmFtZXM6OnJ4QXR0ciwgJlNWR0VsbGlwc2VFbGVtZW50OjptX3J4Pigp
OwotICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjpyeUF0dHIsICZTVkdF
bGxpcHNlRWxlbWVudDo6bV9yeT4oKTsKLX0KLQogdm9pZCBTVkdFbGxpcHNlRWxlbWVudDo6cGFy
c2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5n
JiB2YWx1ZSkKIHsKICAgICBTVkdQYXJzaW5nRXJyb3IgcGFyc2VFcnJvciA9IE5vRXJyb3I7CiAK
ICAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6Y3hBdHRyKQotICAgICAgICBtX2N4LnNldFZhbHVl
KFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSwgcGFyc2VF
cnJvcikpOworICAgICAgICBtX2N4LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6
OmNvbnN0cnVjdChMZW5ndGhNb2RlV2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yKSk7CiAgICAgZWxz
ZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6Y3lBdHRyKQotICAgICAgICBtX2N5LnNldFZhbHVlKFNW
R0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUsIHBhcnNlRXJy
b3IpKTsKKyAgICAgICAgbV9jeS0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpj
b25zdHJ1Y3QoTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKICAgICBlbHNl
IGlmIChuYW1lID09IFNWR05hbWVzOjpyeEF0dHIpCi0gICAgICAgIG1fcnguc2V0VmFsdWUoU1ZH
TGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlV2lkdGgsIHZhbHVlLCBwYXJzZUVycm9y
LCBGb3JiaWROZWdhdGl2ZUxlbmd0aHMpKTsKKyAgICAgICAgbV9yeC0+c2V0QmFzZVZhbEludGVy
bmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSwgcGFy
c2VFcnJvciwgRm9yYmlkTmVnYXRpdmVMZW5ndGhzKSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBT
VkdOYW1lczo6cnlBdHRyKQotICAgICAgICBtX3J5LnNldFZhbHVlKFNWR0xlbmd0aFZhbHVlOjpj
b25zdHJ1Y3QoTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3IsIEZvcmJpZE5lZ2F0
aXZlTGVuZ3RocykpOworICAgICAgICBtX3J5LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3Ro
VmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvciwgRm9y
YmlkTmVnYXRpdmVMZW5ndGhzKSk7CiAKICAgICByZXBvcnRBdHRyaWJ1dGVQYXJzaW5nRXJyb3Io
cGFyc2VFcnJvciwgbmFtZSwgdmFsdWUpOwogCkBAIC03NSw3ICs3MSw3IEBAIHZvaWQgU1ZHRWxs
aXBzZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNv
bnN0IEF0b21pY1N0CiAKIHZvaWQgU1ZHRWxsaXBzZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5n
ZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7Ci0gICAgaWYgKGlzS25vd25BdHRy
aWJ1dGUoYXR0ck5hbWUpKSB7CisgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRy
aWJ1dGUoYXR0ck5hbWUpKSB7CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3Vh
cmQoKnRoaXMpOwogICAgICAgICBpbnZhbGlkYXRlU1ZHUHJlc2VudGF0aW9uQXR0cmlidXRlU3R5
bGUoKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0VsbGlwc2VFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQu
aAppbmRleCAzYzliY2ZjN2Q5YmExY2VmMWE0YzI1YzljNzFhZjU3ODRiYzQxMTVhLi43MTJhMzg4
ODA4NWY0ZDcwMjcxODNhYTBiZWIyMDZkYWUyZjJlYmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RWxsaXBzZUVsZW1lbnQuaApAQCAtMjEsNyArMjEsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lu
Y2x1ZGUgIlNWR0FuaW1hdGVkTGVuZ3RoLmgiCiAjaW5jbHVkZSAiU1ZHRXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZC5oIgogI2luY2x1ZGUgIlNWR0dlb21ldHJ5RWxlbWVudC5oIgogI2luY2x1ZGUg
IlNWR05hbWVzLmgiCkBAIC0zMywzMiArMzIsMjUgQEAgY2xhc3MgU1ZHRWxsaXBzZUVsZW1lbnQg
ZmluYWwgOiBwdWJsaWMgU1ZHR2VvbWV0cnlFbGVtZW50LCBwdWJsaWMgU1ZHRXh0ZXJuYWxSZXMK
IHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFNWR0VsbGlwc2VFbGVtZW50PiBjcmVhdGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKLSAgICBjb25zdCBTVkdMZW5ndGhWYWx1ZSYg
Y3goKSBjb25zdCB7IHJldHVybiBtX2N4LmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25lclByb3h5
KCkpOyB9Ci0gICAgY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIGN5KCkgY29uc3QgeyByZXR1cm4gbV9j
eS5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAgIGNvbnN0IFNWR0xl
bmd0aFZhbHVlJiByeCgpIGNvbnN0IHsgcmV0dXJuIG1fcnguY3VycmVudFZhbHVlKGF0dHJpYnV0
ZU93bmVyUHJveHkoKSk7IH0KLSAgICBjb25zdCBTVkdMZW5ndGhWYWx1ZSYgcnkoKSBjb25zdCB7
IHJldHVybiBtX3J5LmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CisgICAg
Y29uc3QgU1ZHTGVuZ3RoVmFsdWUmIGN4KCkgY29uc3QgeyByZXR1cm4gbV9jeC0+Y3VycmVudFZh
bHVlKCk7IH0KKyAgICBjb25zdCBTVkdMZW5ndGhWYWx1ZSYgY3koKSBjb25zdCB7IHJldHVybiBt
X2N5LT5jdXJyZW50VmFsdWUoKTsgfQorICAgIGNvbnN0IFNWR0xlbmd0aFZhbHVlJiByeCgpIGNv
bnN0IHsgcmV0dXJuIG1fcngtPmN1cnJlbnRWYWx1ZSgpOyB9CisgICAgY29uc3QgU1ZHTGVuZ3Ro
VmFsdWUmIHJ5KCkgY29uc3QgeyByZXR1cm4gbV9yeS0+Y3VycmVudFZhbHVlKCk7IH0KIAotICAg
IFJlZlB0cjxTVkdBbmltYXRlZExlbmd0aD4gY3hBbmltYXRlZCgpIHsgcmV0dXJuIG1fY3guYW5p
bWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9Ci0gICAgUmVmUHRyPFNWR0Fu
aW1hdGVkTGVuZ3RoPiBjeUFuaW1hdGVkKCkgeyByZXR1cm4gbV9jeS5hbmltYXRlZFByb3BlcnR5
KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBSZWZQdHI8U1ZHQW5pbWF0ZWRMZW5ndGg+
IHJ4QW5pbWF0ZWQoKSB7IHJldHVybiBtX3J4LmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3du
ZXJQcm94eSgpKTsgfQotICAgIFJlZlB0cjxTVkdBbmltYXRlZExlbmd0aD4gcnlBbmltYXRlZCgp
IHsgcmV0dXJuIG1fcnkuYW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9
CisgICAgU1ZHQW5pbWF0ZWRMZW5ndGgmIGN4QW5pbWF0ZWQoKSB7IHJldHVybiBtX2N4OyB9Cisg
ICAgU1ZHQW5pbWF0ZWRMZW5ndGgmIGN5QW5pbWF0ZWQoKSB7IHJldHVybiBtX2N5OyB9CisgICAg
U1ZHQW5pbWF0ZWRMZW5ndGgmIHJ4QW5pbWF0ZWQoKSB7IHJldHVybiBtX3J4OyB9CisgICAgU1ZH
QW5pbWF0ZWRMZW5ndGgmIHJ5QW5pbWF0ZWQoKSB7IHJldHVybiBtX3J5OyB9CiAKIHByaXZhdGU6
CiAgICAgU1ZHRWxsaXBzZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7
CiAKICAgICB1c2luZyBBdHRyaWJ1dGVPd25lclByb3h5ID0gU1ZHQXR0cmlidXRlT3duZXJQcm94
eUltcGw8U1ZHRWxsaXBzZUVsZW1lbnQsIFNWR0dlb21ldHJ5RWxlbWVudCwgU1ZHRXh0ZXJuYWxS
ZXNvdXJjZXNSZXF1aXJlZD47Ci0gICAgc3RhdGljIEF0dHJpYnV0ZU93bmVyUHJveHk6OkF0dHJp
YnV0ZVJlZ2lzdHJ5JiBhdHRyaWJ1dGVSZWdpc3RyeSgpIHsgcmV0dXJuIEF0dHJpYnV0ZU93bmVy
UHJveHk6OmF0dHJpYnV0ZVJlZ2lzdHJ5KCk7IH0KLSAgICBzdGF0aWMgdm9pZCByZWdpc3RlckF0
dHJpYnV0ZXMoKTsKICAgICBjb25zdCBTVkdBdHRyaWJ1dGVPd25lclByb3h5JiBhdHRyaWJ1dGVP
d25lclByb3h5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9hdHRyaWJ1dGVPd25lclByb3h5OyB9
CiAgICAgCiAgICAgdXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9IFNWR1Byb3BlcnR5T3duZXJSZWdp
c3RyeTxTVkdFbGxpcHNlRWxlbWVudCwgU1ZHR2VvbWV0cnlFbGVtZW50LCBTVkdFeHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkPjsKICAgICBjb25zdCBTVkdQcm9wZXJ0eVJlZ2lzdHJ5JiBwcm9wZXJ0
eVJlZ2lzdHJ5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wcm9wZXJ0eVJlZ2lzdHJ5OyB9CiAK
LSAgICBzdGF0aWMgYm9vbCBpc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0
dHJpYnV0ZU5hbWUpCi0gICAgewotICAgICAgICByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6
aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKSB8fCBQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tu
b3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOwotICAgIH0KLQogICAgIHZvaWQgcGFyc2VBdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIGZpbmFsOwog
ICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgZmluYWw7
CiAKQEAgLTY5LDEwICs2MSwxMCBAQCBwcml2YXRlOgogCiAgICAgQXR0cmlidXRlT3duZXJQcm94
eSBtX2F0dHJpYnV0ZU93bmVyUHJveHkgeyAqdGhpcyB9OwogICAgIFByb3BlcnR5UmVnaXN0cnkg
bV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKLSAgICBTVkdBbmltYXRlZExlbmd0aEF0dHJp
YnV0ZSBtX2N4IHsgTGVuZ3RoTW9kZVdpZHRoIH07Ci0gICAgU1ZHQW5pbWF0ZWRMZW5ndGhBdHRy
aWJ1dGUgbV9jeSB7IExlbmd0aE1vZGVIZWlnaHQgfTsKLSAgICBTVkdBbmltYXRlZExlbmd0aEF0
dHJpYnV0ZSBtX3J4IHsgTGVuZ3RoTW9kZVdpZHRoIH07Ci0gICAgU1ZHQW5pbWF0ZWRMZW5ndGhB
dHRyaWJ1dGUgbV9yeSB7IExlbmd0aE1vZGVIZWlnaHQgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRM
ZW5ndGg+IG1fY3ggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVX
aWR0aCkgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fY3kgeyBTVkdBbmltYXRlZExl
bmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQpIH07CisgICAgUmVmPFNWR0FuaW1h
dGVkTGVuZ3RoPiBtX3J4IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhN
b2RlV2lkdGgpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3J5IHsgU1ZHQW5pbWF0
ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0KSB9OwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRl
ckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3BwCmlu
ZGV4IGNkZWFhMzhkZjZkZjczZmIyZjBlYjlmNDcyOGE1NDUzNzYzMjE0ZDAuLjkyZGExNDFlMDQy
OGRhOWZhNjQxMGVjYzlkYWQxMzZiZTc0Mjk1ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmls
dGVyRWxlbWVudC5jcHAKQEAgLTUsNyArNSw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgRGly
ayBTY2h1bHplIDxrcml0QHdlYmtpdC5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIElu
IE1vdGlvbiBMaW1pdGVkIDIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMTQgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC00Nyw2ICs0NywxNCBAQCBpbmxpbmUgU1ZHRmlsdGVy
RWxlbWVudDo6U1ZHRmlsdGVyRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBE
b2N1bWVudAogICAgIC8vIFNwZWM6IElmIHRoZSB3aWR0aC9oZWlnaHQgYXR0cmlidXRlIGlzIG5v
dCBzcGVjaWZpZWQsIHRoZSBlZmZlY3QgaXMgYXMgaWYgYSB2YWx1ZSBvZiAiMTIwJSIgd2VyZSBz
cGVjaWZpZWQuCiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZpbHRlclRhZykpOwog
ICAgIHJlZ2lzdGVyQXR0cmlidXRlcygpOworICAgIAorICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxh
ZyBvbmNlRmxhZzsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10geworICAgICAgICBQ
cm9wZXJ0eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5PFNWR05hbWVzOjp4QXR0ciwgJlNWR0Zp
bHRlckVsZW1lbnQ6Om1feD4oKTsKKyAgICAgICAgUHJvcGVydHlSZWdpc3RyeTo6cmVnaXN0ZXJQ
cm9wZXJ0eTxTVkdOYW1lczo6eUF0dHIsICZTVkdGaWx0ZXJFbGVtZW50OjptX3k+KCk7CisgICAg
ICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6OndpZHRoQXR0
ciwgJlNWR0ZpbHRlckVsZW1lbnQ6Om1fd2lkdGg+KCk7CisgICAgICAgIFByb3BlcnR5UmVnaXN0
cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6OmhlaWdodEF0dHIsICZTVkdGaWx0ZXJFbGVt
ZW50OjptX2hlaWdodD4oKTsKKyAgICB9KTsKIH0KIAogUmVmPFNWR0ZpbHRlckVsZW1lbnQ+IFNW
R0ZpbHRlckVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1
bWVudCYgZG9jdW1lbnQpCkBAIC02MSwxMCArNjksNiBAQCB2b2lkIFNWR0ZpbHRlckVsZW1lbnQ6
OnJlZ2lzdGVyQXR0cmlidXRlcygpCiAgICAgICAgIHJldHVybjsKICAgICByZWdpc3RyeS5yZWdp
c3RlckF0dHJpYnV0ZTxTVkdOYW1lczo6ZmlsdGVyVW5pdHNBdHRyLCBTVkdVbml0VHlwZXM6OlNW
R1VuaXRUeXBlLCAmU1ZHRmlsdGVyRWxlbWVudDo6bV9maWx0ZXJVbml0cz4oKTsKICAgICByZWdp
c3RyeS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1lczo6cHJpbWl0aXZlVW5pdHNBdHRyLCBTVkdV
bml0VHlwZXM6OlNWR1VuaXRUeXBlLCAmU1ZHRmlsdGVyRWxlbWVudDo6bV9wcmltaXRpdmVVbml0
cz4oKTsKLSAgICByZWdpc3RyeS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1lczo6eEF0dHIsICZT
VkdGaWx0ZXJFbGVtZW50OjptX3g+KCk7Ci0gICAgcmVnaXN0cnkucmVnaXN0ZXJBdHRyaWJ1dGU8
U1ZHTmFtZXM6OnlBdHRyLCAmU1ZHRmlsdGVyRWxlbWVudDo6bV95PigpOwotICAgIHJlZ2lzdHJ5
LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjp3aWR0aEF0dHIsICZTVkdGaWx0ZXJFbGVtZW50
OjptX3dpZHRoPigpOwotICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjpo
ZWlnaHRBdHRyLCAmU1ZHRmlsdGVyRWxlbWVudDo6bV9oZWlnaHQ+KCk7CiB9CiAKIHZvaWQgU1ZH
RmlsdGVyRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwg
Y29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKQEAgLTgwLDEzICs4NCwxMyBAQCB2b2lkIFNWR0Zp
bHRlckVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNv
bnN0IEF0b21pY1N0cgogICAgICAgICBpZiAocHJvcGVydHlWYWx1ZSA+IDApCiAgICAgICAgICAg
ICBtX3ByaW1pdGl2ZVVuaXRzLnNldFZhbHVlKHByb3BlcnR5VmFsdWUpOwogICAgIH0gZWxzZSBp
ZiAobmFtZSA9PSBTVkdOYW1lczo6eEF0dHIpCi0gICAgICAgIG1feC5zZXRWYWx1ZShTVkdMZW5n
dGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsK
KyAgICAgICAgbV94LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVj
dChMZW5ndGhNb2RlV2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yKSk7CiAgICAgZWxzZSBpZiAobmFt
ZSA9PSBTVkdOYW1lczo6eUF0dHIpCi0gICAgICAgIG1feS5zZXRWYWx1ZShTVkdMZW5ndGhWYWx1
ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7CisgICAg
ICAgIG1feS0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVu
Z3RoTW9kZUhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKICAgICBlbHNlIGlmIChuYW1lID09
IFNWR05hbWVzOjp3aWR0aEF0dHIpCi0gICAgICAgIG1fd2lkdGguc2V0VmFsdWUoU1ZHTGVuZ3Ro
VmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlV2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yKSk7Cisg
ICAgICAgIG1fd2lkdGgtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3Ry
dWN0KExlbmd0aE1vZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKICAgICBlbHNlIGlmIChu
YW1lID09IFNWR05hbWVzOjpoZWlnaHRBdHRyKQotICAgICAgICBtX2hlaWdodC5zZXRWYWx1ZShT
VkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlLCBwYXJzZUVy
cm9yKSk7CisgICAgICAgIG1faGVpZ2h0LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFs
dWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikpOwogCiAg
ICAgcmVwb3J0QXR0cmlidXRlUGFyc2luZ0Vycm9yKHBhcnNlRXJyb3IsIG5hbWUsIHZhbHVlKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmgKaW5kZXggOGI0OTg5OTUzYzRlNTky
ZDBlYjExMGE2YTk2NWU5YTMwZGNiMWVkZC4uNDA0YWFmODVkNTQwYjQwOTRmMjBhYmYwN2Q0YTNj
N2U5Yjg3MTg3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5oCkBAIC0yNCw3
ICsyNCw2IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIlNWR0FuaW1hdGVkRW51bWVyYXRp
b24uaCIKLSNpbmNsdWRlICJTVkdBbmltYXRlZExlbmd0aC5oIgogI2luY2x1ZGUgIlNWR0VsZW1l
bnQuaCIKICNpbmNsdWRlICJTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLmgiCiAjaW5jbHVk
ZSAiU1ZHVVJJUmVmZXJlbmNlLmgiCkBAIC0zOSwxNyArMzgsMTcgQEAgcHVibGljOgogCiAgICAg
U1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSBmaWx0ZXJVbml0cygpIGNvbnN0IHsgcmV0dXJuIG1f
ZmlsdGVyVW5pdHMuY3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KICAgICBT
VkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlIHByaW1pdGl2ZVVuaXRzKCkgY29uc3QgeyByZXR1cm4g
bV9wcmltaXRpdmVVbml0cy5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQot
ICAgIGNvbnN0IFNWR0xlbmd0aFZhbHVlJiB4KCkgY29uc3QgeyByZXR1cm4gbV94LmN1cnJlbnRW
YWx1ZShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9Ci0gICAgY29uc3QgU1ZHTGVuZ3RoVmFsdWUm
IHkoKSBjb25zdCB7IHJldHVybiBtX3kuY3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHko
KSk7IH0KLSAgICBjb25zdCBTVkdMZW5ndGhWYWx1ZSYgd2lkdGgoKSBjb25zdCB7IHJldHVybiBt
X3dpZHRoLmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9Ci0gICAgY29uc3Qg
U1ZHTGVuZ3RoVmFsdWUmIGhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1faGVpZ2h0LmN1cnJlbnRW
YWx1ZShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CisgICAgY29uc3QgU1ZHTGVuZ3RoVmFsdWUm
IHgoKSBjb25zdCB7IHJldHVybiBtX3gtPmN1cnJlbnRWYWx1ZSgpOyB9CisgICAgY29uc3QgU1ZH
TGVuZ3RoVmFsdWUmIHkoKSBjb25zdCB7IHJldHVybiBtX3ktPmN1cnJlbnRWYWx1ZSgpOyB9Cisg
ICAgY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIHdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV93aWR0aC0+
Y3VycmVudFZhbHVlKCk7IH0KKyAgICBjb25zdCBTVkdMZW5ndGhWYWx1ZSYgaGVpZ2h0KCkgY29u
c3QgeyByZXR1cm4gbV9oZWlnaHQtPmN1cnJlbnRWYWx1ZSgpOyB9CiAKICAgICBSZWZQdHI8U1ZH
QW5pbWF0ZWRFbnVtZXJhdGlvbj4gZmlsdGVyVW5pdHNBbmltYXRlZCgpIHsgcmV0dXJuIG1fZmls
dGVyVW5pdHMuYW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CiAgICAg
UmVmUHRyPFNWR0FuaW1hdGVkRW51bWVyYXRpb24+IHByaW1pdGl2ZVVuaXRzQW5pbWF0ZWQoKSB7
IHJldHVybiBtX3ByaW1pdGl2ZVVuaXRzLmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQ
cm94eSgpKTsgfQotICAgIFJlZlB0cjxTVkdBbmltYXRlZExlbmd0aD4geEFuaW1hdGVkKCkgeyBy
ZXR1cm4gbV94LmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAg
IFJlZlB0cjxTVkdBbmltYXRlZExlbmd0aD4geUFuaW1hdGVkKCkgeyByZXR1cm4gbV95LmFuaW1h
dGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAgIFJlZlB0cjxTVkdBbmlt
YXRlZExlbmd0aD4gd2lkdGhBbmltYXRlZCgpIHsgcmV0dXJuIG1fd2lkdGguYW5pbWF0ZWRQcm9w
ZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9Ci0gICAgUmVmUHRyPFNWR0FuaW1hdGVkTGVu
Z3RoPiBoZWlnaHRBbmltYXRlZCgpIHsgcmV0dXJuIG1faGVpZ2h0LmFuaW1hdGVkUHJvcGVydHko
YXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQorICAgIFNWR0FuaW1hdGVkTGVuZ3RoJiB4QW5pbWF0
ZWQoKSB7IHJldHVybiBtX3g7IH0KKyAgICBTVkdBbmltYXRlZExlbmd0aCYgeUFuaW1hdGVkKCkg
eyByZXR1cm4gbV95OyB9CisgICAgU1ZHQW5pbWF0ZWRMZW5ndGgmIHdpZHRoQW5pbWF0ZWQoKSB7
IHJldHVybiBtX3dpZHRoOyB9CisgICAgU1ZHQW5pbWF0ZWRMZW5ndGgmIGhlaWdodEFuaW1hdGVk
KCkgeyByZXR1cm4gbV9oZWlnaHQ7IH0KIAogcHJpdmF0ZToKICAgICBTVkdGaWx0ZXJFbGVtZW50
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwpAQCAtODQsMTAgKzgzLDEwIEBAIHBy
aXZhdGU6CiAgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9
OwogICAgIFNWR0FuaW1hdGVkRW51bWVyYXRpb25BdHRyaWJ1dGU8U1ZHVW5pdFR5cGVzOjpTVkdV
bml0VHlwZT4gbV9maWx0ZXJVbml0cyB7IFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9PQkpF
Q1RCT1VORElOR0JPWCB9OwogICAgIFNWR0FuaW1hdGVkRW51bWVyYXRpb25BdHRyaWJ1dGU8U1ZH
VW5pdFR5cGVzOjpTVkdVbml0VHlwZT4gbV9wcmltaXRpdmVVbml0cyB7IFNWR1VuaXRUeXBlczo6
U1ZHX1VOSVRfVFlQRV9VU0VSU1BBQ0VPTlVTRSB9OwotICAgIFNWR0FuaW1hdGVkTGVuZ3RoQXR0
cmlidXRlIG1feCB7IExlbmd0aE1vZGVXaWR0aCwgIi0xMCUiIH07Ci0gICAgU1ZHQW5pbWF0ZWRM
ZW5ndGhBdHRyaWJ1dGUgbV95IHsgTGVuZ3RoTW9kZUhlaWdodCwgIi0xMCUiIH07Ci0gICAgU1ZH
QW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUgbV93aWR0aCB7IExlbmd0aE1vZGVXaWR0aCwgIjEyMCUi
IH07Ci0gICAgU1ZHQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUgbV9oZWlnaHQgeyBMZW5ndGhNb2Rl
SGVpZ2h0LCAiMTIwJSIgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feCB7IFNWR0Fu
aW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZVdpZHRoLCAiLTEwJSIpIH07Cisg
ICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3kgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRl
KHRoaXMsIExlbmd0aE1vZGVIZWlnaHQsICItMTAlIikgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRM
ZW5ndGg+IG1fd2lkdGggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1v
ZGVXaWR0aCwgIjEyMCUiKSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV9oZWlnaHQg
eyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQsICIxMjAl
IikgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAK
aW5kZXggNzVmZWRlMzdhN2Y1NmYzYTc5Yzk5ZWMxOGE3OTJjZWNjYzMzMDFkNC4uMzVjZWM5Y2I2
Njc3MDM4NTg4NDlhMmI5MWU1ZTk4MmMyMzJkNmU4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAK
QEAgLTIsNyArMiw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcg
Tmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMp
IDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KICAqIENvcHlyaWdodCAo
QykgMjAwOSBEaXJrIFNjaHVsemUgPGtyaXRAd2Via2l0Lm9yZz4KLSAqIENvcHlyaWdodCAoQykg
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICog
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKQEAgLTM2LDM3ICszNiwyOCBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoU1ZHRmls
dGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKTsKIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5k
YXJkQXR0cmlidXRlczo6U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKICAgICA6IFNWR0Vs
ZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7Ci0gICAgcmVnaXN0ZXJBdHRyaWJ1dGVzKCk7Ci0K
ICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CiAgICAgc3RkOjpjYWxsX29uY2Uo
b25jZUZsYWcsIFtdIHsKKyAgICAgICAgUHJvcGVydHlSZWdpc3RyeTo6cmVnaXN0ZXJQcm9wZXJ0
eTxTVkdOYW1lczo6eEF0dHIsICZTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6
Om1feD4oKTsKKyAgICAgICAgUHJvcGVydHlSZWdpc3RyeTo6cmVnaXN0ZXJQcm9wZXJ0eTxTVkdO
YW1lczo6eUF0dHIsICZTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6Om1feT4o
KTsKKyAgICAgICAgUHJvcGVydHlSZWdpc3RyeTo6cmVnaXN0ZXJQcm9wZXJ0eTxTVkdOYW1lczo6
d2lkdGhBdHRyLCAmU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjptX3dpZHRo
PigpOworICAgICAgICBQcm9wZXJ0eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5PFNWR05hbWVz
OjpoZWlnaHRBdHRyLCAmU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjptX2hl
aWdodD4oKTsKICAgICAgICAgUHJvcGVydHlSZWdpc3RyeTo6cmVnaXN0ZXJQcm9wZXJ0eTxTVkdO
YW1lczo6cmVzdWx0QXR0ciwgJlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6
bV9yZXN1bHQ+KCk7CiAgICAgfSk7CiB9CiAKLXZvaWQgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRh
cmRBdHRyaWJ1dGVzOjpyZWdpc3RlckF0dHJpYnV0ZXMoKQotewotICAgIGF1dG8mIHJlZ2lzdHJ5
ID0gYXR0cmlidXRlUmVnaXN0cnkoKTsKLSAgICBpZiAoIXJlZ2lzdHJ5LmlzRW1wdHkoKSkKLSAg
ICAgICAgcmV0dXJuOwotICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjp4
QXR0ciwgJlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6bV94PigpOwotICAg
IHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjp5QXR0ciwgJlNWR0ZpbHRlclBy
aW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6bV95PigpOwotICAgIHJlZ2lzdHJ5LnJlZ2lzdGVy
QXR0cmlidXRlPFNWR05hbWVzOjp3aWR0aEF0dHIsICZTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFy
ZEF0dHJpYnV0ZXM6Om1fd2lkdGg+KCk7Ci0gICAgcmVnaXN0cnkucmVnaXN0ZXJBdHRyaWJ1dGU8
U1ZHTmFtZXM6OmhlaWdodEF0dHIsICZTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0
ZXM6Om1faGVpZ2h0PigpOwotfQotCiB2b2lkIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0
cmlidXRlczo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3Qg
QXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBTVkdQYXJzaW5nRXJyb3IgcGFyc2VFcnJvciA9
IE5vRXJyb3I7CiAKICAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6eEF0dHIpCi0gICAgICAgIG1f
eC5zZXRWYWx1ZShTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVXaWR0aCwgdmFs
dWUsIHBhcnNlRXJyb3IpKTsKKyAgICAgICAgbV94LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVu
Z3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlV2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yKSk7
CiAgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6eUF0dHIpCi0gICAgICAgIG1feS5zZXRW
YWx1ZShTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlLCBw
YXJzZUVycm9yKSk7CisgICAgICAgIG1feS0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZh
bHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKICAg
ICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjp3aWR0aEF0dHIpCi0gICAgICAgIG1fd2lkdGgu
c2V0VmFsdWUoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlV2lkdGgsIHZhbHVl
LCBwYXJzZUVycm9yKSk7CisgICAgICAgIG1fd2lkdGgtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdM
ZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3Ip
KTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjpoZWlnaHRBdHRyKQotICAgICAgICBt
X2hlaWdodC5zZXRWYWx1ZShTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVIZWln
aHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7CisgICAgICAgIG1faGVpZ2h0LT5zZXRCYXNlVmFsSW50
ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSwg
cGFyc2VFcnJvcikpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnJlc3VsdEF0dHIp
CiAgICAgICAgIG1fcmVzdWx0LT5zZXRCYXNlVmFsSW50ZXJuYWwodmFsdWUpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1
dGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRy
aWJ1dGVzLmgKaW5kZXggYTgxYmIwZGQ4MzA4NDc0Zjk2NjUxY2M3YjdjZTIwODg2M2FjZWI5NS4u
MTQzM2IyNTAyMTYxNjlhNWY2M2MwN2E0ZWE2ZWNhZmM3MWIxMDQ4MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0
ZXMuaApAQCAtMjMsNyArMjMsNiBAQAogCiAjaW5jbHVkZSAiUmVuZGVyU1ZHUmVzb3VyY2VGaWx0
ZXIuaCIKICNpbmNsdWRlICJSZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZS5oIgotI2lu
Y2x1ZGUgIlNWR0FuaW1hdGVkTGVuZ3RoLmgiCiAjaW5jbHVkZSAiU1ZHRWxlbWVudC5oIgogI2lu
Y2x1ZGUgIlNWR05hbWVzLmgiCiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAtNDgsMTYgKzQ3
LDE2IEBAIHB1YmxpYzoKIAogICAgIHVzaW5nIFByb3BlcnR5UmVnaXN0cnkgPSBTVkdQcm9wZXJ0
eU93bmVyUmVnaXN0cnk8U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLCBTVkdF
bGVtZW50PjsKIAotICAgIGNvbnN0IFNWR0xlbmd0aFZhbHVlJiB4KCkgY29uc3QgeyByZXR1cm4g
bV94LmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9Ci0gICAgY29uc3QgU1ZH
TGVuZ3RoVmFsdWUmIHkoKSBjb25zdCB7IHJldHVybiBtX3kuY3VycmVudFZhbHVlKGF0dHJpYnV0
ZU93bmVyUHJveHkoKSk7IH0KLSAgICBjb25zdCBTVkdMZW5ndGhWYWx1ZSYgd2lkdGgoKSBjb25z
dCB7IHJldHVybiBtX3dpZHRoLmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9
Ci0gICAgY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIGhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1faGVp
Z2h0LmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CisgICAgY29uc3QgU1ZH
TGVuZ3RoVmFsdWUmIHgoKSBjb25zdCB7IHJldHVybiBtX3gtPmN1cnJlbnRWYWx1ZSgpOyB9Cisg
ICAgY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIHkoKSBjb25zdCB7IHJldHVybiBtX3ktPmN1cnJlbnRW
YWx1ZSgpOyB9CisgICAgY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIHdpZHRoKCkgY29uc3QgeyByZXR1
cm4gbV93aWR0aC0+Y3VycmVudFZhbHVlKCk7IH0KKyAgICBjb25zdCBTVkdMZW5ndGhWYWx1ZSYg
aGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9oZWlnaHQtPmN1cnJlbnRWYWx1ZSgpOyB9CiAgICAg
U3RyaW5nIHJlc3VsdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzdWx0LT5jdXJyZW50VmFsdWUoKTsg
fQogCi0gICAgUmVmUHRyPFNWR0FuaW1hdGVkTGVuZ3RoPiB4QW5pbWF0ZWQoKSB7IHJldHVybiBt
X3guYW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9Ci0gICAgUmVmUHRy
PFNWR0FuaW1hdGVkTGVuZ3RoPiB5QW5pbWF0ZWQoKSB7IHJldHVybiBtX3kuYW5pbWF0ZWRQcm9w
ZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9Ci0gICAgUmVmUHRyPFNWR0FuaW1hdGVkTGVu
Z3RoPiB3aWR0aEFuaW1hdGVkKCkgeyByZXR1cm4gbV93aWR0aC5hbmltYXRlZFByb3BlcnR5KGF0
dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBSZWZQdHI8U1ZHQW5pbWF0ZWRMZW5ndGg+IGhl
aWdodEFuaW1hdGVkKCkgeyByZXR1cm4gbV9oZWlnaHQuYW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1
dGVPd25lclByb3h5KCkpOyB9CisgICAgU1ZHQW5pbWF0ZWRMZW5ndGgmIHhBbmltYXRlZCgpIHsg
cmV0dXJuIG1feDsgfQorICAgIFNWR0FuaW1hdGVkTGVuZ3RoJiB5QW5pbWF0ZWQoKSB7IHJldHVy
biBtX3k7IH0KKyAgICBTVkdBbmltYXRlZExlbmd0aCYgd2lkdGhBbmltYXRlZCgpIHsgcmV0dXJu
IG1fd2lkdGg7IH0KKyAgICBTVkdBbmltYXRlZExlbmd0aCYgaGVpZ2h0QW5pbWF0ZWQoKSB7IHJl
dHVybiBtX2hlaWdodDsgfQogICAgIFNWR0FuaW1hdGVkU3RyaW5nJiByZXN1bHRBbmltYXRlZCgp
IHsgcmV0dXJuIG1fcmVzdWx0OyB9CiAKIHByb3RlY3RlZDoKQEAgLTcxLDE2ICs3MCw5IEBAIHBy
b3RlY3RlZDoKICAgICB2b2lkIHByaW1pdGl2ZUF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlm
aWVkTmFtZSYgYXR0cmlidXRlTmFtZSk7CiAKIHByaXZhdGU6Ci0gICAgc3RhdGljIHZvaWQgcmVn
aXN0ZXJBdHRyaWJ1dGVzKCk7CiAgICAgY29uc3QgU1ZHQXR0cmlidXRlT3duZXJQcm94eSYgYXR0
cmlidXRlT3duZXJQcm94eSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fYXR0cmlidXRlT3du
ZXJQcm94eTsgfQotCiAgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYgcHJvcGVydHlSZWdp
c3RyeSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3RyeTsgfQogCi0g
ICAgc3RhdGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRy
aWJ1dGVOYW1lKQotICAgIHsKLSAgICAgICAgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6Omlz
S25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSkgfHwgUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93
bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsKLSAgICB9Ci0KICAgICBib29sIGlzRmlsdGVyRWZm
ZWN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgUmVuZGVyUHRyPFJl
bmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBS
ZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKQEAgLTkxLDEwICs4MywxMCBAQCBwcml2YXRl
OgogICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKICAg
ICAvLyBTcGVjOiBJZiB0aGUgeC95IGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVkLCB0aGUgZWZm
ZWN0IGlzIGFzIGlmIGEgdmFsdWUgb2YgIjAlIiB3ZXJlIHNwZWNpZmllZC4KICAgICAvLyBTcGVj
OiBJZiB0aGUgd2lkdGgvaGVpZ2h0IGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVkLCB0aGUgZWZm
ZWN0IGlzIGFzIGlmIGEgdmFsdWUgb2YgIjEwMCUiIHdlcmUgc3BlY2lmaWVkLgotICAgIFNWR0Fu
aW1hdGVkTGVuZ3RoQXR0cmlidXRlIG1feCB7IExlbmd0aE1vZGVXaWR0aCwgIjAlIiB9OwotICAg
IFNWR0FuaW1hdGVkTGVuZ3RoQXR0cmlidXRlIG1feSB7IExlbmd0aE1vZGVIZWlnaHQsICIwJSIg
fTsKLSAgICBTVkdBbmltYXRlZExlbmd0aEF0dHJpYnV0ZSBtX3dpZHRoIHsgTGVuZ3RoTW9kZVdp
ZHRoLCAiMTAwJSIgfTsKLSAgICBTVkdBbmltYXRlZExlbmd0aEF0dHJpYnV0ZSBtX2hlaWdodCB7
IExlbmd0aE1vZGVIZWlnaHQsICIxMDAlIiB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4g
bV94IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlV2lkdGgsICIw
JSIpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3kgeyBTVkdBbmltYXRlZExlbmd0
aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQsICIwJSIpIH07CisgICAgUmVmPFNWR0Fu
aW1hdGVkTGVuZ3RoPiBtX3dpZHRoIHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBM
ZW5ndGhNb2RlV2lkdGgsICIxMDAlIikgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1f
aGVpZ2h0IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0
LCAiMTAwJSIpIH07CiAgICAgUmVmPFNWR0FuaW1hdGVkU3RyaW5nPiBtX3Jlc3VsdCB7IFNWR0Fu
aW1hdGVkU3RyaW5nOjpjcmVhdGUodGhpcykgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwCmluZGV4IDAwNmE3NzMxMWE4NTgzOThmNzll
NmFlZmVlODc2ZjBmYmIxOGQ0NzYuLmJhNjkwZWQ2ZTI1MjBhYThiNzI2ZDhiYTMzZGE5ZmEwNGNi
YzI0MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50
LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggTmlr
b2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIw
MTQgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgpA
QCAtNDAsNyArNDAsMTMgQEAgaW5saW5lIFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50OjpTVkdGb3Jl
aWduT2JqZWN0RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWcKICAgICAsIFNWR0V4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWQodGhpcykKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdO
YW1lczo6Zm9yZWlnbk9iamVjdFRhZykpOwotICAgIHJlZ2lzdGVyQXR0cmlidXRlcygpOworICAg
IHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNl
RmxhZywgW10geworICAgICAgICBQcm9wZXJ0eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5PFNW
R05hbWVzOjp4QXR0ciwgJlNWR0ZvcmVpZ25PYmplY3RFbGVtZW50OjptX3g+KCk7CisgICAgICAg
IFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6OnlBdHRyLCAmU1ZH
Rm9yZWlnbk9iamVjdEVsZW1lbnQ6Om1feT4oKTsKKyAgICAgICAgUHJvcGVydHlSZWdpc3RyeTo6
cmVnaXN0ZXJQcm9wZXJ0eTxTVkdOYW1lczo6d2lkdGhBdHRyLCAmU1ZHRm9yZWlnbk9iamVjdEVs
ZW1lbnQ6Om1fd2lkdGg+KCk7CisgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJv
cGVydHk8U1ZHTmFtZXM6OmhlaWdodEF0dHIsICZTVkdGb3JlaWduT2JqZWN0RWxlbWVudDo6bV9o
ZWlnaHQ+KCk7CisgICAgfSk7CiB9CiAKIFJlZjxTVkdGb3JlaWduT2JqZWN0RWxlbWVudD4gU1ZH
Rm9yZWlnbk9iamVjdEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1l
LCBEb2N1bWVudCYgZG9jdW1lbnQpCkBAIC00OCwyOSArNTQsMTggQEAgUmVmPFNWR0ZvcmVpZ25P
YmplY3RFbGVtZW50PiBTVkdGb3JlaWduT2JqZWN0RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdGb3JlaWduT2JqZWN0RWxlbWVu
dCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQogCi12b2lkIFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50
OjpyZWdpc3RlckF0dHJpYnV0ZXMoKQotewotICAgIGF1dG8mIHJlZ2lzdHJ5ID0gYXR0cmlidXRl
UmVnaXN0cnkoKTsKLSAgICBpZiAoIXJlZ2lzdHJ5LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJu
OwotICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjp4QXR0ciwgJlNWR0Zv
cmVpZ25PYmplY3RFbGVtZW50OjptX3g+KCk7Ci0gICAgcmVnaXN0cnkucmVnaXN0ZXJBdHRyaWJ1
dGU8U1ZHTmFtZXM6OnlBdHRyLCAmU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ6Om1feT4oKTsKLSAg
ICByZWdpc3RyeS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1lczo6d2lkdGhBdHRyLCAmU1ZHRm9y
ZWlnbk9iamVjdEVsZW1lbnQ6Om1fd2lkdGg+KCk7Ci0gICAgcmVnaXN0cnkucmVnaXN0ZXJBdHRy
aWJ1dGU8U1ZHTmFtZXM6OmhlaWdodEF0dHIsICZTVkdGb3JlaWduT2JqZWN0RWxlbWVudDo6bV9o
ZWlnaHQ+KCk7Ci19Ci0KIHZvaWQgU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ6OnBhcnNlQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUp
CiB7CiAgICAgU1ZHUGFyc2luZ0Vycm9yIHBhcnNlRXJyb3IgPSBOb0Vycm9yOwogCiAgICAgaWYg
KG5hbWUgPT0gU1ZHTmFtZXM6OnhBdHRyKQotICAgICAgICBtX3guc2V0VmFsdWUoU1ZHTGVuZ3Ro
VmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlV2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yKSk7Cisg
ICAgICAgIG1feC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3Qo
TGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvcikpOwogICAgIGVsc2UgaWYgKG5hbWUg
PT0gU1ZHTmFtZXM6OnlBdHRyKQotICAgICAgICBtX3kuc2V0VmFsdWUoU1ZHTGVuZ3RoVmFsdWU6
OmNvbnN0cnVjdChMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAgICAg
ICBtX3ktPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0
aE1vZGVIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBT
VkdOYW1lczo6d2lkdGhBdHRyKQotICAgICAgICBtX3dpZHRoLnNldFZhbHVlKFNWR0xlbmd0aFZh
bHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAg
ICAgICBtX3dpZHRoLT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVj
dChMZW5ndGhNb2RlV2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yKSk7CiAgICAgZWxzZSBpZiAobmFt
ZSA9PSBTVkdOYW1lczo6aGVpZ2h0QXR0cikKLSAgICAgICAgbV9oZWlnaHQuc2V0VmFsdWUoU1ZH
TGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJv
cikpOworICAgICAgICBtX2hlaWdodC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVl
Ojpjb25zdHJ1Y3QoTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKIAogICAg
IHJlcG9ydEF0dHJpYnV0ZVBhcnNpbmdFcnJvcihwYXJzZUVycm9yLCBuYW1lLCB2YWx1ZSk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmgKaW5kZXggNzk5
ZmM4MjNhYTkzMTU0NTc5MDFkZWI2ZDM1YzJiYTc1MzhiNTgzZS4uNTJiZDQxZWY3YTUyYzFhNGY3
NzNkZDlmYmRmODg4MWQzNDM4ZjM2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZvcmVpZ25PYmplY3RFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVp
Z25PYmplY3RFbGVtZW50LmgKQEAgLTE5LDcgKzE5LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNp
bmNsdWRlICJTVkdBbmltYXRlZExlbmd0aC5oIgogI2luY2x1ZGUgIlNWR0V4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQuaCIKICNpbmNsdWRlICJTVkdHcmFwaGljc0VsZW1lbnQuaCIKICNpbmNsdWRl
ICJTVkdOYW1lcy5oIgpAQCAtMzIsMzIgKzMxLDI1IEBAIGNsYXNzIFNWR0ZvcmVpZ25PYmplY3RF
bGVtZW50IGZpbmFsIDogcHVibGljIFNWR0dyYXBoaWNzRWxlbWVudCwgcHVibGljIFNWR0V4dGVy
CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxTVkdGb3JlaWduT2JqZWN0RWxlbWVudD4gY3JlYXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCi0gICAgY29uc3QgU1ZHTGVuZ3Ro
VmFsdWUmIHgoKSBjb25zdCB7IHJldHVybiBtX3guY3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVy
UHJveHkoKSk7IH0KLSAgICBjb25zdCBTVkdMZW5ndGhWYWx1ZSYgeSgpIGNvbnN0IHsgcmV0dXJu
IG1feS5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAgIGNvbnN0IFNW
R0xlbmd0aFZhbHVlJiB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fd2lkdGguY3VycmVudFZhbHVl
KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBjb25zdCBTVkdMZW5ndGhWYWx1ZSYgaGVp
Z2h0KCkgY29uc3QgeyByZXR1cm4gbV9oZWlnaHQuY3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVy
UHJveHkoKSk7IH0KKyAgICBjb25zdCBTVkdMZW5ndGhWYWx1ZSYgeCgpIGNvbnN0IHsgcmV0dXJu
IG1feC0+Y3VycmVudFZhbHVlKCk7IH0KKyAgICBjb25zdCBTVkdMZW5ndGhWYWx1ZSYgeSgpIGNv
bnN0IHsgcmV0dXJuIG1feS0+Y3VycmVudFZhbHVlKCk7IH0KKyAgICBjb25zdCBTVkdMZW5ndGhW
YWx1ZSYgd2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3dpZHRoLT5jdXJyZW50VmFsdWUoKTsgfQor
ICAgIGNvbnN0IFNWR0xlbmd0aFZhbHVlJiBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX2hlaWdo
dC0+Y3VycmVudFZhbHVlKCk7IH0KIAotICAgIFJlZlB0cjxTVkdBbmltYXRlZExlbmd0aD4geEFu
aW1hdGVkKCkgeyByZXR1cm4gbV94LmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94
eSgpKTsgfQotICAgIFJlZlB0cjxTVkdBbmltYXRlZExlbmd0aD4geUFuaW1hdGVkKCkgeyByZXR1
cm4gbV95LmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAgIFJl
ZlB0cjxTVkdBbmltYXRlZExlbmd0aD4gd2lkdGhBbmltYXRlZCgpIHsgcmV0dXJuIG1fd2lkdGgu
YW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9Ci0gICAgUmVmUHRyPFNW
R0FuaW1hdGVkTGVuZ3RoPiBoZWlnaHRBbmltYXRlZCgpIHsgcmV0dXJuIG1faGVpZ2h0LmFuaW1h
dGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQorICAgIFNWR0FuaW1hdGVkTGVu
Z3RoJiB4QW5pbWF0ZWQoKSB7IHJldHVybiBtX3g7IH0KKyAgICBTVkdBbmltYXRlZExlbmd0aCYg
eUFuaW1hdGVkKCkgeyByZXR1cm4gbV95OyB9CisgICAgU1ZHQW5pbWF0ZWRMZW5ndGgmIHdpZHRo
QW5pbWF0ZWQoKSB7IHJldHVybiBtX3dpZHRoOyB9CisgICAgU1ZHQW5pbWF0ZWRMZW5ndGgmIGhl
aWdodEFuaW1hdGVkKCkgeyByZXR1cm4gbV9oZWlnaHQ7IH0KIAogcHJpdmF0ZToKICAgICBTVkdG
b3JlaWduT2JqZWN0RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAog
ICAgIHVzaW5nIEF0dHJpYnV0ZU93bmVyUHJveHkgPSBTVkdBdHRyaWJ1dGVPd25lclByb3h5SW1w
bDxTVkdGb3JlaWduT2JqZWN0RWxlbWVudCwgU1ZHR3JhcGhpY3NFbGVtZW50LCBTVkdFeHRlcm5h
bFJlc291cmNlc1JlcXVpcmVkPjsKLSAgICBzdGF0aWMgQXR0cmlidXRlT3duZXJQcm94eTo6QXR0
cmlidXRlUmVnaXN0cnkmIGF0dHJpYnV0ZVJlZ2lzdHJ5KCkgeyByZXR1cm4gQXR0cmlidXRlT3du
ZXJQcm94eTo6YXR0cmlidXRlUmVnaXN0cnkoKTsgfQotICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVy
QXR0cmlidXRlcygpOwogICAgIGNvbnN0IFNWR0F0dHJpYnV0ZU93bmVyUHJveHkmIGF0dHJpYnV0
ZU93bmVyUHJveHkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2F0dHJpYnV0ZU93bmVyUHJveHk7
IH0KIAogICAgIHVzaW5nIFByb3BlcnR5UmVnaXN0cnkgPSBTVkdQcm9wZXJ0eU93bmVyUmVnaXN0
cnk8U1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQsIFNWR0dyYXBoaWNzRWxlbWVudCwgU1ZHRXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZD47CiAgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYgcHJv
cGVydHlSZWdpc3RyeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3RyeTsg
fQogCi0gICAgc3RhdGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyaWJ1dGVOYW1lKQotICAgIHsKLSAgICAgICAgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJv
eHk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSkgfHwgUHJvcGVydHlSZWdpc3RyeTo6
aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsKLSAgICB9Ci0KICAgICB2b2lkIHBhcnNl
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBmaW5h
bDsKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGZp
bmFsOwogCkBAIC03MCwxMCArNjIsMTAgQEAgcHJpdmF0ZToKIAogICAgIEF0dHJpYnV0ZU93bmVy
UHJveHkgbV9hdHRyaWJ1dGVPd25lclByb3h5IHsgKnRoaXMgfTsKICAgICBQcm9wZXJ0eVJlZ2lz
dHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07Ci0gICAgU1ZHQW5pbWF0ZWRMZW5ndGhB
dHRyaWJ1dGUgbV94IHsgTGVuZ3RoTW9kZVdpZHRoIH07Ci0gICAgU1ZHQW5pbWF0ZWRMZW5ndGhB
dHRyaWJ1dGUgbV95IHsgTGVuZ3RoTW9kZUhlaWdodCB9OwotICAgIFNWR0FuaW1hdGVkTGVuZ3Ro
QXR0cmlidXRlIG1fd2lkdGggeyBMZW5ndGhNb2RlV2lkdGggfTsKLSAgICBTVkdBbmltYXRlZExl
bmd0aEF0dHJpYnV0ZSBtX2hlaWdodCB7IExlbmd0aE1vZGVIZWlnaHQgfTsKKyAgICBSZWY8U1ZH
QW5pbWF0ZWRMZW5ndGg+IG1feCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVu
Z3RoTW9kZVdpZHRoKSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV95IHsgU1ZHQW5p
bWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0KSB9OworICAgIFJlZjxT
VkdBbmltYXRlZExlbmd0aD4gbV93aWR0aCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhp
cywgTGVuZ3RoTW9kZVdpZHRoKSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV9oZWln
aHQgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQpIH07
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVs
ZW1lbnQuY3BwCmluZGV4IGQyYjE0YTU2YzI0NjUxMjlhMTMxNDljN2RkODViMjFlYWViN2Q5MzMu
LmNhYTY1NjI4YzBhYzA3OTE3NTU5NmQxM2ViNjY3ZmY2ZmJlM2M3MzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCkBAIC0zLDcgKzMsNyBAQAogICogQ29weXJpZ2h0IChD
KSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IFJvYiBCdWlzIDxidWlzQGtkZS5v
cmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQWxleGFuZGVyIEtlbGxldHQgPGx5cGFub3ZAa2Rl
Lm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAxNCBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTQzLDEwICs0Mywx
MiBAQCBpbmxpbmUgU1ZHSW1hZ2VFbGVtZW50OjpTVkdJbWFnZUVsZW1lbnQoY29uc3QgUXVhbGlm
aWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmCiAgICAgLCBTVkdVUklSZWZlcmVuY2UodGhpcykK
ICAgICAsIG1faW1hZ2VMb2FkZXIoKnRoaXMpCiB7Ci0gICAgcmVnaXN0ZXJBdHRyaWJ1dGVzKCk7
Ci0KICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CiAgICAgc3RkOjpjYWxsX29u
Y2Uob25jZUZsYWcsIFtdIHsKKyAgICAgICAgUHJvcGVydHlSZWdpc3RyeTo6cmVnaXN0ZXJQcm9w
ZXJ0eTxTVkdOYW1lczo6eEF0dHIsICZTVkdJbWFnZUVsZW1lbnQ6Om1feD4oKTsKKyAgICAgICAg
UHJvcGVydHlSZWdpc3RyeTo6cmVnaXN0ZXJQcm9wZXJ0eTxTVkdOYW1lczo6eUF0dHIsICZTVkdJ
bWFnZUVsZW1lbnQ6Om1feT4oKTsKKyAgICAgICAgUHJvcGVydHlSZWdpc3RyeTo6cmVnaXN0ZXJQ
cm9wZXJ0eTxTVkdOYW1lczo6d2lkdGhBdHRyLCAmU1ZHSW1hZ2VFbGVtZW50OjptX3dpZHRoPigp
OworICAgICAgICBQcm9wZXJ0eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5PFNWR05hbWVzOjpo
ZWlnaHRBdHRyLCAmU1ZHSW1hZ2VFbGVtZW50OjptX2hlaWdodD4oKTsKICAgICAgICAgUHJvcGVy
dHlSZWdpc3RyeTo6cmVnaXN0ZXJQcm9wZXJ0eTxTVkdOYW1lczo6cHJlc2VydmVBc3BlY3RSYXRp
b0F0dHIsICZTVkdJbWFnZUVsZW1lbnQ6Om1fcHJlc2VydmVBc3BlY3RSYXRpbz4oKTsKICAgICB9
KTsKIH0KQEAgLTY1LDE3ICs2Nyw2IEBAIGJvb2wgU1ZHSW1hZ2VFbGVtZW50OjpoYXNTaW5nbGVT
ZWN1cml0eU9yaWdpbigpIGNvbnN0CiAgICAgcmV0dXJuICFpbWFnZSB8fCBpbWFnZS0+aGFzU2lu
Z2xlU2VjdXJpdHlPcmlnaW4oKTsKIH0KIAotdm9pZCBTVkdJbWFnZUVsZW1lbnQ6OnJlZ2lzdGVy
QXR0cmlidXRlcygpCi17Ci0gICAgYXV0byYgcmVnaXN0cnkgPSBhdHRyaWJ1dGVSZWdpc3RyeSgp
OwotICAgIGlmICghcmVnaXN0cnkuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0gICAgcmVn
aXN0cnkucmVnaXN0ZXJBdHRyaWJ1dGU8U1ZHTmFtZXM6OnhBdHRyLCAmU1ZHSW1hZ2VFbGVtZW50
OjptX3g+KCk7Ci0gICAgcmVnaXN0cnkucmVnaXN0ZXJBdHRyaWJ1dGU8U1ZHTmFtZXM6OnlBdHRy
LCAmU1ZHSW1hZ2VFbGVtZW50OjptX3k+KCk7Ci0gICAgcmVnaXN0cnkucmVnaXN0ZXJBdHRyaWJ1
dGU8U1ZHTmFtZXM6OndpZHRoQXR0ciwgJlNWR0ltYWdlRWxlbWVudDo6bV93aWR0aD4oKTsKLSAg
ICByZWdpc3RyeS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1lczo6aGVpZ2h0QXR0ciwgJlNWR0lt
YWdlRWxlbWVudDo6bV9oZWlnaHQ+KCk7Ci19Ci0KIHZvaWQgU1ZHSW1hZ2VFbGVtZW50OjpwYXJz
ZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcm
IHZhbHVlKQogewogICAgIGlmIChuYW1lID09IFNWR05hbWVzOjpwcmVzZXJ2ZUFzcGVjdFJhdGlv
QXR0cikgewpAQCAtODgsMTMgKzc5LDEzIEBAIHZvaWQgU1ZHSW1hZ2VFbGVtZW50OjpwYXJzZUF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpCiAgICAg
U1ZHUGFyc2luZ0Vycm9yIHBhcnNlRXJyb3IgPSBOb0Vycm9yOwogCiAgICAgaWYgKG5hbWUgPT0g
U1ZHTmFtZXM6OnhBdHRyKQotICAgICAgICBtX3guc2V0VmFsdWUoU1ZHTGVuZ3RoVmFsdWU6OmNv
bnN0cnVjdChMZW5ndGhNb2RlV2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yKSk7CisgICAgICAgIG1f
eC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9k
ZVdpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvcikpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFt
ZXM6OnlBdHRyKQotICAgICAgICBtX3kuc2V0VmFsdWUoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVj
dChMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAgICAgICBtX3ktPnNl
dEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVIZWln
aHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6
d2lkdGhBdHRyKQotICAgICAgICBtX3dpZHRoLnNldFZhbHVlKFNWR0xlbmd0aFZhbHVlOjpjb25z
dHJ1Y3QoTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvciwgRm9yYmlkTmVnYXRpdmVM
ZW5ndGhzKSk7CisgICAgICAgIG1fd2lkdGgtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhW
YWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IsIEZvcmJp
ZE5lZ2F0aXZlTGVuZ3RocykpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OmhlaWdo
dEF0dHIpCi0gICAgICAgIG1faGVpZ2h0LnNldFZhbHVlKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1
Y3QoTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3IsIEZvcmJpZE5lZ2F0aXZlTGVu
Z3RocykpOworICAgICAgICBtX2hlaWdodC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZh
bHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3IsIEZvcmJp
ZE5lZ2F0aXZlTGVuZ3RocykpOwogCiAgICAgcmVwb3J0QXR0cmlidXRlUGFyc2luZ0Vycm9yKHBh
cnNlRXJyb3IsIG5hbWUsIHZhbHVlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ltYWdlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5o
CmluZGV4IGVjZmM2YjYyMmYyZWQzZWEzM2IxZjhkNzIyODYxNzg3ZjU0ODkwODUuLjVjNDA3NTJi
OTNjMTk4Y2VhMWU0Y2E3OTU0MTgwYWE2ODM0OGE1NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1h
Z2VFbGVtZW50LmgKQEAgLTIxLDcgKzIxLDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRl
ICJTVkdBbmltYXRlZExlbmd0aC5oIgogI2luY2x1ZGUgIlNWR0V4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQuaCIKICNpbmNsdWRlICJTVkdHcmFwaGljc0VsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdJ
bWFnZUxvYWRlci5oIgpAQCAtMzcsMzQgKzM2LDI3IEBAIHB1YmxpYzoKICAgICBib29sIGhhc1Np
bmdsZVNlY3VyaXR5T3JpZ2luKCkgY29uc3Q7CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBpbWFn
ZVNvdXJjZVVSTCgpIGNvbnN0IGZpbmFsOwogCi0gICAgY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIHgo
KSBjb25zdCB7IHJldHVybiBtX3guY3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7
IH0KLSAgICBjb25zdCBTVkdMZW5ndGhWYWx1ZSYgeSgpIGNvbnN0IHsgcmV0dXJuIG1feS5jdXJy
ZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAgIGNvbnN0IFNWR0xlbmd0aFZh
bHVlJiB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fd2lkdGguY3VycmVudFZhbHVlKGF0dHJpYnV0
ZU93bmVyUHJveHkoKSk7IH0KLSAgICBjb25zdCBTVkdMZW5ndGhWYWx1ZSYgaGVpZ2h0KCkgY29u
c3QgeyByZXR1cm4gbV9oZWlnaHQuY3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7
IH0KKyAgICBjb25zdCBTVkdMZW5ndGhWYWx1ZSYgeCgpIGNvbnN0IHsgcmV0dXJuIG1feC0+Y3Vy
cmVudFZhbHVlKCk7IH0KKyAgICBjb25zdCBTVkdMZW5ndGhWYWx1ZSYgeSgpIGNvbnN0IHsgcmV0
dXJuIG1feS0+Y3VycmVudFZhbHVlKCk7IH0KKyAgICBjb25zdCBTVkdMZW5ndGhWYWx1ZSYgd2lk
dGgoKSBjb25zdCB7IHJldHVybiBtX3dpZHRoLT5jdXJyZW50VmFsdWUoKTsgfQorICAgIGNvbnN0
IFNWR0xlbmd0aFZhbHVlJiBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX2hlaWdodC0+Y3VycmVu
dFZhbHVlKCk7IH0KICAgICBjb25zdCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWUmIHByZXNl
cnZlQXNwZWN0UmF0aW8oKSBjb25zdCB7IHJldHVybiBtX3ByZXNlcnZlQXNwZWN0UmF0aW8tPmN1
cnJlbnRWYWx1ZSgpOyB9CiAKLSAgICBSZWZQdHI8U1ZHQW5pbWF0ZWRMZW5ndGg+IHhBbmltYXRl
ZCgpIHsgcmV0dXJuIG1feC5hbmltYXRlZFByb3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7
IH0KLSAgICBSZWZQdHI8U1ZHQW5pbWF0ZWRMZW5ndGg+IHlBbmltYXRlZCgpIHsgcmV0dXJuIG1f
eS5hbmltYXRlZFByb3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBSZWZQdHI8
U1ZHQW5pbWF0ZWRMZW5ndGg+IHdpZHRoQW5pbWF0ZWQoKSB7IHJldHVybiBtX3dpZHRoLmFuaW1h
dGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAgIFJlZlB0cjxTVkdBbmlt
YXRlZExlbmd0aD4gaGVpZ2h0QW5pbWF0ZWQoKSB7IHJldHVybiBtX2hlaWdodC5hbmltYXRlZFBy
b3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KKyAgICBTVkdBbmltYXRlZExlbmd0aCYg
eEFuaW1hdGVkKCkgeyByZXR1cm4gbV94OyB9CisgICAgU1ZHQW5pbWF0ZWRMZW5ndGgmIHlBbmlt
YXRlZCgpIHsgcmV0dXJuIG1feTsgfQorICAgIFNWR0FuaW1hdGVkTGVuZ3RoJiB3aWR0aEFuaW1h
dGVkKCkgeyByZXR1cm4gbV93aWR0aDsgfQorICAgIFNWR0FuaW1hdGVkTGVuZ3RoJiBoZWlnaHRB
bmltYXRlZCgpIHsgcmV0dXJuIG1faGVpZ2h0OyB9CiAgICAgU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFz
cGVjdFJhdGlvJiBwcmVzZXJ2ZUFzcGVjdFJhdGlvQW5pbWF0ZWQoKSB7IHJldHVybiBtX3ByZXNl
cnZlQXNwZWN0UmF0aW87IH0KIAogcHJpdmF0ZToKICAgICBTVkdJbWFnZUVsZW1lbnQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAgICAgCiAgICAgdXNpbmcgQXR0cmlidXRlT3du
ZXJQcm94eSA9IFNWR0F0dHJpYnV0ZU93bmVyUHJveHlJbXBsPFNWR0ltYWdlRWxlbWVudCwgU1ZH
R3JhcGhpY3NFbGVtZW50LCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBTVkdVUklSZWZl
cmVuY2U+OwotICAgIHN0YXRpYyBBdHRyaWJ1dGVPd25lclByb3h5OjpBdHRyaWJ1dGVSZWdpc3Ry
eSYgYXR0cmlidXRlUmVnaXN0cnkoKSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5OjphdHRy
aWJ1dGVSZWdpc3RyeSgpOyB9Ci0gICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJBdHRyaWJ1dGVzKCk7
CiAgICAgY29uc3QgU1ZHQXR0cmlidXRlT3duZXJQcm94eSYgYXR0cmlidXRlT3duZXJQcm94eSgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYXR0cmlidXRlT3duZXJQcm94eTsgfQogCiAgICAgdXNp
bmcgUHJvcGVydHlSZWdpc3RyeSA9IFNWR1Byb3BlcnR5T3duZXJSZWdpc3RyeTxTVkdJbWFnZUVs
ZW1lbnQsIFNWR0dyYXBoaWNzRWxlbWVudCwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwg
U1ZHVVJJUmVmZXJlbmNlPjsKICAgICBjb25zdCBTVkdQcm9wZXJ0eVJlZ2lzdHJ5JiBwcm9wZXJ0
eVJlZ2lzdHJ5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wcm9wZXJ0eVJlZ2lzdHJ5OyB9CiAK
LSAgICBzdGF0aWMgYm9vbCBpc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0
dHJpYnV0ZU5hbWUpCi0gICAgewotICAgICAgICByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6
aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKSB8fCBQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tu
b3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOwotICAgIH0KLQogICAgIHZvaWQgcGFyc2VBdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIGZpbmFsOwog
ICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgZmluYWw7
CiAKQEAgLTgxLDEwICs3MywxMCBAQCBwcml2YXRlOgogCiAgICAgQXR0cmlidXRlT3duZXJQcm94
eSBtX2F0dHJpYnV0ZU93bmVyUHJveHkgeyAqdGhpcyB9OwogICAgIFByb3BlcnR5UmVnaXN0cnkg
bV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKLSAgICBTVkdBbmltYXRlZExlbmd0aEF0dHJp
YnV0ZSBtX3ggeyBMZW5ndGhNb2RlV2lkdGggfTsKLSAgICBTVkdBbmltYXRlZExlbmd0aEF0dHJp
YnV0ZSBtX3kgeyBMZW5ndGhNb2RlSGVpZ2h0IH07Ci0gICAgU1ZHQW5pbWF0ZWRMZW5ndGhBdHRy
aWJ1dGUgbV93aWR0aCB7IExlbmd0aE1vZGVXaWR0aCB9OwotICAgIFNWR0FuaW1hdGVkTGVuZ3Ro
QXR0cmlidXRlIG1faGVpZ2h0IHsgTGVuZ3RoTW9kZUhlaWdodCB9OworICAgIFJlZjxTVkdBbmlt
YXRlZExlbmd0aD4gbV94IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhN
b2RlV2lkdGgpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3kgeyBTVkdBbmltYXRl
ZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQpIH07CisgICAgUmVmPFNWR0Fu
aW1hdGVkTGVuZ3RoPiBtX3dpZHRoIHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBM
ZW5ndGhNb2RlV2lkdGgpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX2hlaWdodCB7
IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZUhlaWdodCkgfTsKICAg
ICBSZWY8U1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvPiBtX3ByZXNlcnZlQXNwZWN0UmF0
aW8geyBTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW86OmNyZWF0ZSh0aGlzKSB9OwogICAg
IFNWR0ltYWdlTG9hZGVyIG1faW1hZ2VMb2FkZXI7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0xlbmd0aC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aC5oCmlu
ZGV4IDExYTdjZmFiYjY4MjM1NmUyMmVhMzE5ZDhjMGQ5N2E0Y2NmOWE5NjQuLmZmMGZkMzUxNGIy
NjNlMTM4ZDVjY2E5MDdmM2E3OTg3YjZmM2I5ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdMZW5ndGguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoLmgKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYs
MTEgKzI2LDE1IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIlNWR0xlbmd0aFZhbHVlLmgi
Ci0jaW5jbHVkZSAiU1ZHUHJvcGVydHlUZWFyT2ZmLmgiCisjaW5jbHVkZSAiU1ZHVmFsdWVQcm9w
ZXJ0eS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNWR0xlbmd0aCA6IHB1Ymxp
YyBTVkdQcm9wZXJ0eVRlYXJPZmY8U1ZHTGVuZ3RoVmFsdWU+IHsKK2NsYXNzIFNWR0xlbmd0aCA6
IHB1YmxpYyBTVkdWYWx1ZVByb3BlcnR5PFNWR0xlbmd0aFZhbHVlPiB7CisgICAgdXNpbmcgQmFz
ZSA9IFNWR1ZhbHVlUHJvcGVydHk8U1ZHTGVuZ3RoVmFsdWU+OworICAgIHVzaW5nIEJhc2U6OkJh
c2U7CisgICAgdXNpbmcgQmFzZTo6bV92YWx1ZTsKKwogcHVibGljOgogICAgIC8vIEZvcndhcmQg
ZGVjbGFyZSB0aGVzZSBlbnVtcyBpbiB0aGUgdzNjIG5hbWluZyBzY2hlbWUsIGZvciBJREwgZ2Vu
ZXJhdGlvbgogICAgIGVudW0gewpAQCAtNDcsMzEgKzUxLDQyIEBAIHB1YmxpYzoKICAgICAgICAg
U1ZHX0xFTkdUSFRZUEVfUEMgPSBMZW5ndGhUeXBlUEMKICAgICB9OwogCi0gICAgc3RhdGljIFJl
ZjxTVkdMZW5ndGg+IGNyZWF0ZShTVkdMZWdhY3lBbmltYXRlZFByb3BlcnR5JiBhbmltYXRlZFBy
b3BlcnR5LCBTVkdQcm9wZXJ0eVJvbGUgcm9sZSwgU1ZHTGVuZ3RoVmFsdWUmIHZhbHVlKQorICAg
IHN0YXRpYyBSZWY8U1ZHTGVuZ3RoPiBjcmVhdGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgU1ZHTGVuZ3RoKCkpOworICAgIH0KKworICAgIHN0YXRpYyBSZWY8U1ZHTGVu
Z3RoPiBjcmVhdGUoY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIHZhbHVlKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgU1ZHTGVuZ3RoKGFuaW1hdGVkUHJvcGVydHksIHJvbGUsIHZh
bHVlKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNWR0xlbmd0aCh2YWx1ZSkpOwog
ICAgIH0KIAotICAgIHN0YXRpYyBSZWY8U1ZHTGVuZ3RoPiBjcmVhdGUoY29uc3QgU1ZHTGVuZ3Ro
VmFsdWUmIGluaXRpYWxWYWx1ZSA9IHsgfSkKKyAgICBzdGF0aWMgUmVmPFNWR0xlbmd0aD4gY3Jl
YXRlKFNWR1Byb3BlcnR5T3duZXIqIG93bmVyLCBTVkdQcm9wZXJ0eUFjY2VzcyBhY2Nlc3MsIGNv
bnN0IFNWR0xlbmd0aFZhbHVlJiB2YWx1ZSA9IHsgfSkKICAgICB7Ci0gICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFNWR0xlbmd0aChpbml0aWFsVmFsdWUpKTsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgU1ZHTGVuZ3RoKG93bmVyLCBhY2Nlc3MsIHZhbHVlKSk7CiAgICAgfQogCi0g
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxTVkdMZW5ndGg+
PiBjcmVhdGUoRXhjZXB0aW9uT3I8VD4mJiBpbml0aWFsVmFsdWUpCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4KKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPFNWR0xlbmd0aD4+IGNyZWF0ZShF
eGNlcHRpb25PcjxUPiYmIHZhbHVlKQogICAgIHsKLSAgICAgICAgaWYgKGluaXRpYWxWYWx1ZS5o
YXNFeGNlcHRpb24oKSkKLSAgICAgICAgICAgIHJldHVybiBpbml0aWFsVmFsdWUucmVsZWFzZUV4
Y2VwdGlvbigpOwotICAgICAgICByZXR1cm4gY3JlYXRlKGluaXRpYWxWYWx1ZS5yZWxlYXNlUmV0
dXJuVmFsdWUoKSk7CisgICAgICAgIGlmICh2YWx1ZS5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAg
ICAgIHJldHVybiB2YWx1ZS5yZWxlYXNlRXhjZXB0aW9uKCk7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFNWR0xlbmd0aCh2YWx1ZS5yZWxlYXNlUmV0dXJuVmFsdWUoKSkpOworICAgIH0K
KworICAgIFJlZjxTVkdMZW5ndGg+IGNsb25lKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVy
biBTVkdMZW5ndGg6OmNyZWF0ZShtX3ZhbHVlKTsKICAgICB9CiAKICAgICB1bnNpZ25lZCBzaG9y
dCB1bml0VHlwZSgpCiAgICAgewotICAgICAgICByZXR1cm4gcHJvcGVydHlSZWZlcmVuY2UoKS51
bml0VHlwZSgpOworICAgICAgICByZXR1cm4gbV92YWx1ZS51bml0VHlwZSgpOwogICAgIH0KIAog
ICAgIEV4Y2VwdGlvbk9yPGZsb2F0PiB2YWx1ZUZvckJpbmRpbmdzKCkKICAgICB7Ci0gICAgICAg
IHJldHVybiBwcm9wZXJ0eVJlZmVyZW5jZSgpLnZhbHVlRm9yQmluZGluZ3MoU1ZHTGVuZ3RoQ29u
dGV4dCB7IGNvbnRleHRFbGVtZW50KCkgfSk7CisgICAgICAgIHJldHVybiBtX3ZhbHVlLnZhbHVl
Rm9yQmluZGluZ3MoU1ZHTGVuZ3RoQ29udGV4dCB7IGNvbnRleHRFbGVtZW50KCkgfSk7CiAgICAg
fQogCiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0VmFsdWVGb3JCaW5kaW5ncyhmbG9hdCB2YWx1
ZSkKQEAgLTc5LDcgKzk0LDcgQEAgcHVibGljOgogICAgICAgICBpZiAoaXNSZWFkT25seSgpKQog
ICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vTW9kaWZpY2F0aW9uQWxsb3dlZEVycm9y
IH07CiAKLSAgICAgICAgYXV0byByZXN1bHQgPSBwcm9wZXJ0eVJlZmVyZW5jZSgpLnNldFZhbHVl
KHZhbHVlLCBTVkdMZW5ndGhDb250ZXh0IHsgY29udGV4dEVsZW1lbnQoKSB9KTsKKyAgICAgICAg
YXV0byByZXN1bHQgPSBtX3ZhbHVlLnNldFZhbHVlKHZhbHVlLCBTVkdMZW5ndGhDb250ZXh0IHsg
Y29udGV4dEVsZW1lbnQoKSB9KTsKICAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkK
ICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIApAQCAtODksNyArMTA0LDcgQEAg
cHVibGljOgogICAgIAogICAgIGZsb2F0IHZhbHVlSW5TcGVjaWZpZWRVbml0cygpCiAgICAgewot
ICAgICAgICByZXR1cm4gcHJvcGVydHlSZWZlcmVuY2UoKS52YWx1ZUluU3BlY2lmaWVkVW5pdHMo
KTsKKyAgICAgICAgcmV0dXJuIG1fdmFsdWUudmFsdWVJblNwZWNpZmllZFVuaXRzKCk7CiAgICAg
fQogCiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0VmFsdWVJblNwZWNpZmllZFVuaXRzKGZsb2F0
IHZhbHVlSW5TcGVjaWZpZWRVbml0cykKQEAgLTk3LDIzICsxMTIsMTcgQEAgcHVibGljOgogICAg
ICAgICBpZiAoaXNSZWFkT25seSgpKQogICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5v
TW9kaWZpY2F0aW9uQWxsb3dlZEVycm9yIH07CiAKLSAgICAgICAgcHJvcGVydHlSZWZlcmVuY2Uo
KS5zZXRWYWx1ZUluU3BlY2lmaWVkVW5pdHModmFsdWVJblNwZWNpZmllZFVuaXRzKTsKKyAgICAg
ICAgbV92YWx1ZS5zZXRWYWx1ZUluU3BlY2lmaWVkVW5pdHModmFsdWVJblNwZWNpZmllZFVuaXRz
KTsKICAgICAgICAgY29tbWl0Q2hhbmdlKCk7Ci0gICAgICAgIAogICAgICAgICByZXR1cm4geyB9
OwogICAgIH0KICAgICAKLSAgICBTdHJpbmcgdmFsdWVBc1N0cmluZygpCi0gICAgewotICAgICAg
ICByZXR1cm4gcHJvcGVydHlSZWZlcmVuY2UoKS52YWx1ZUFzU3RyaW5nKCk7Ci0gICAgfQotCiAg
ICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0VmFsdWVBc1N0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVl
KQogICAgIHsKICAgICAgICAgaWYgKGlzUmVhZE9ubHkoKSkKICAgICAgICAgICAgIHJldHVybiBF
eGNlcHRpb24geyBOb01vZGlmaWNhdGlvbkFsbG93ZWRFcnJvciB9OwogCi0gICAgICAgIGF1dG8g
cmVzdWx0ID0gcHJvcGVydHlSZWZlcmVuY2UoKS5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVlKTsKKyAg
ICAgICAgYXV0byByZXN1bHQgPSBtX3ZhbHVlLnNldFZhbHVlQXNTdHJpbmcodmFsdWUpOwogICAg
ICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICAgICAgCkBAIC0xMjYsNyArMTM1LDcgQEAgcHVibGljOgogICAgICAgICBpZiAoaXNS
ZWFkT25seSgpKQogICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vTW9kaWZpY2F0aW9u
QWxsb3dlZEVycm9yIH07CiAKLSAgICAgICAgYXV0byByZXN1bHQgPSBwcm9wZXJ0eVJlZmVyZW5j
ZSgpLm5ld1ZhbHVlU3BlY2lmaWVkVW5pdHModW5pdFR5cGUsIHZhbHVlSW5TcGVjaWZpZWRVbml0
cyk7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gbV92YWx1ZS5uZXdWYWx1ZVNwZWNpZmllZFVuaXRz
KHVuaXRUeXBlLCB2YWx1ZUluU3BlY2lmaWVkVW5pdHMpOwogICAgICAgICBpZiAocmVzdWx0Lmhh
c0V4Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgCkBAIC0x
MzksMjMgKzE0OCwxNyBAQCBwdWJsaWM6CiAgICAgICAgIGlmIChpc1JlYWRPbmx5KCkpCiAgICAg
ICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm9Nb2RpZmljYXRpb25BbGxvd2VkRXJyb3IgfTsK
IAotICAgICAgICBhdXRvIHJlc3VsdCA9IHByb3BlcnR5UmVmZXJlbmNlKCkuY29udmVydFRvU3Bl
Y2lmaWVkVW5pdHModW5pdFR5cGUsIFNWR0xlbmd0aENvbnRleHQgeyBjb250ZXh0RWxlbWVudCgp
IH0pOworICAgICAgICBhdXRvIHJlc3VsdCA9IG1fdmFsdWUuY29udmVydFRvU3BlY2lmaWVkVW5p
dHModW5pdFR5cGUsIFNWR0xlbmd0aENvbnRleHQgeyBjb250ZXh0RWxlbWVudCgpIH0pOwogICAg
ICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICAgICAgCiAgICAgICAgIGNvbW1pdENoYW5nZSgpOwogICAgICAgICByZXR1cm4gcmVz
dWx0OwogICAgIH0KLQotcHJpdmF0ZToKLSAgICBTVkdMZW5ndGgoU1ZHTGVnYWN5QW5pbWF0ZWRQ
cm9wZXJ0eSYgYW5pbWF0ZWRQcm9wZXJ0eSwgU1ZHUHJvcGVydHlSb2xlIHJvbGUsIFNWR0xlbmd0
aFZhbHVlJiB2YWx1ZSkKLSAgICAgICAgOiBTVkdQcm9wZXJ0eVRlYXJPZmY8U1ZHTGVuZ3RoVmFs
dWU+KCZhbmltYXRlZFByb3BlcnR5LCByb2xlLCB2YWx1ZSkKLSAgICB7Ci0gICAgfQotCi0gICAg
ZXhwbGljaXQgU1ZHTGVuZ3RoKGNvbnN0IFNWR0xlbmd0aFZhbHVlJiBpbml0aWFsVmFsdWUpCi0g
ICAgICAgIDogU1ZHUHJvcGVydHlUZWFyT2ZmPFNWR0xlbmd0aFZhbHVlPihpbml0aWFsVmFsdWUp
CisgICAgCisgICAgU3RyaW5nIHZhbHVlQXNTdHJpbmcoKSBjb25zdCBvdmVycmlkZQogICAgIHsK
KyAgICAgICAgcmV0dXJuIG1fdmFsdWUudmFsdWVBc1N0cmluZygpOwogICAgIH0KIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGhMaXN0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHTGVuZ3RoTGlzdC5oCmluZGV4IDlhYmFhNGZmZTgzN2E4YTM5ODQ5ZjdlYmEx
MzhhMDFiM2ZiNmJmMDEuLmIwMTQ3ZmEyMzRmNGQ5YTg4ZjlmYzlmMzFkNWYzODg5NzMxNjc2OTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGhMaXN0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aExpc3QuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNSwyNyArMjUsOTIgQEAKIAogI3ByYWdt
YSBvbmNlCiAKLSNpbmNsdWRlICJTVkdBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmYuaCIKLSNp
bmNsdWRlICJTVkdMZW5ndGhMaXN0VmFsdWVzLmgiCi0jaW5jbHVkZSAiU1ZHTGlzdFByb3BlcnR5
VGVhck9mZi5oIgorI2luY2x1ZGUgIlNWR0xlbmd0aC5oIgorI2luY2x1ZGUgIlNWR1ZhbHVlUHJv
cGVydHlMaXN0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU1ZHTGVuZ3RoTGlz
dCA6IHB1YmxpYyBTVkdMaXN0UHJvcGVydHlUZWFyT2ZmPFNWR0xlbmd0aExpc3RWYWx1ZXM+IHsK
K2NsYXNzIFNWR0xlbmd0aExpc3QgOiBwdWJsaWMgU1ZHVmFsdWVQcm9wZXJ0eUxpc3Q8U1ZHTGVu
Z3RoPiB7CisgICAgdXNpbmcgQmFzZSA9IFNWR1ZhbHVlUHJvcGVydHlMaXN0PFNWR0xlbmd0aD47
CisgICAgdXNpbmcgQmFzZTo6QmFzZTsKKwogcHVibGljOgotICAgIHVzaW5nIEFuaW1hdGVkTGlz
dFByb3BlcnR5VGVhck9mZiA9IFNWR0FuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZjxTVkdMZW5n
dGhMaXN0VmFsdWVzPjsKLSAgICB1c2luZyBMaXN0V3JhcHBlckNhY2hlID0gQW5pbWF0ZWRMaXN0
UHJvcGVydHlUZWFyT2ZmOjpMaXN0V3JhcHBlckNhY2hlOworICAgIHN0YXRpYyBSZWY8U1ZHTGVu
Z3RoTGlzdD4gY3JlYXRlKFNWR0xlbmd0aE1vZGUgbGVuZ3RoTW9kZSA9IExlbmd0aE1vZGVPdGhl
cikKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNWR0xlbmd0aExpc3QobGVu
Z3RoTW9kZSkpOworICAgIH0KIAotICAgIHN0YXRpYyBSZWY8U1ZHTGVuZ3RoTGlzdD4gY3JlYXRl
KEFuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZiYgYW5pbWF0ZWRQcm9wZXJ0eSwgU1ZHUHJvcGVy
dHlSb2xlIHJvbGUsIFNWR0xlbmd0aExpc3RWYWx1ZXMmIHZhbHVlcywgTGlzdFdyYXBwZXJDYWNo
ZSYgd3JhcHBlcnMpCisgICAgc3RhdGljIFJlZjxTVkdMZW5ndGhMaXN0PiBjcmVhdGUoU1ZHUHJv
cGVydHlPd25lciogb3duZXIsIFNWR1Byb3BlcnR5QWNjZXNzIGFjY2VzcywgU1ZHTGVuZ3RoTW9k
ZSBsZW5ndGhNb2RlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU1ZHTGVu
Z3RoTGlzdChhbmltYXRlZFByb3BlcnR5LCByb2xlLCB2YWx1ZXMsIHdyYXBwZXJzKSk7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNWR0xlbmd0aExpc3Qob3duZXIsIGFjY2VzcywgbGVu
Z3RoTW9kZSkpOworICAgIH0KKworICAgIHN0YXRpYyBSZWY8U1ZHTGVuZ3RoTGlzdD4gY3JlYXRl
KGNvbnN0IFNWR0xlbmd0aExpc3QmIG90aGVyLCBTVkdQcm9wZXJ0eUFjY2VzcyBhY2Nlc3MpCisg
ICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdMZW5ndGhMaXN0KG90aGVyLCBh
Y2Nlc3MpKTsKKyAgICB9CisKKyAgICBTVkdMZW5ndGhNb2RlIGxlbmd0aE1vZGUoKSBjb25zdCB7
IHJldHVybiBtX2xlbmd0aE1vZGU7IH0KKworICAgIGJvb2wgcGFyc2UoY29uc3QgU3RyaW5nJiB2
YWx1ZSkKKyAgICB7CisgICAgICAgIGNsZWFySXRlbXMoKTsKKworICAgICAgICBhdXRvIHVwY29u
dmVydGVkQ2hhcmFjdGVycyA9IFN0cmluZ1ZpZXcodmFsdWUpLnVwY29udmVydGVkQ2hhcmFjdGVy
cygpOworICAgICAgICBjb25zdCBVQ2hhciogcHRyID0gdXBjb252ZXJ0ZWRDaGFyYWN0ZXJzOwor
ICAgICAgICBjb25zdCBVQ2hhciogZW5kID0gcHRyICsgdmFsdWUubGVuZ3RoKCk7CisgICAgICAg
IHdoaWxlIChwdHIgPCBlbmQpIHsKKyAgICAgICAgICAgIGNvbnN0IFVDaGFyKiBzdGFydCA9IHB0
cjsKKyAgICAgICAgICAgIHdoaWxlIChwdHIgPCBlbmQgJiYgKnB0ciAhPSAnLCcgJiYgIWlzU1ZH
U3BhY2UoKnB0cikpCisgICAgICAgICAgICAgICAgcHRyKys7CisgICAgICAgICAgICBpZiAocHRy
ID09IHN0YXJ0KQorICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBTdHJpbmcg
dmFsdWVTdHJpbmcoc3RhcnQsIHB0ciAtIHN0YXJ0KTsKKyAgICAgICAgICAgIFNWR0xlbmd0aFZh
bHVlIHZhbHVlKG1fbGVuZ3RoTW9kZSk7CisgICAgICAgICAgICBpZiAodmFsdWUuc2V0VmFsdWVB
c1N0cmluZyh2YWx1ZVN0cmluZykuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgICAgICAgICAgYnJl
YWs7CisKKyAgICAgICAgICAgIGFwcGVuZChTVkdMZW5ndGg6OmNyZWF0ZSh2YWx1ZSkpOworICAg
ICAgICAgICAgc2tpcE9wdGlvbmFsU1ZHU3BhY2VzT3JEZWxpbWl0ZXIocHRyLCBlbmQpOworICAg
ICAgICB9CisKKyAgICAgICAgcmV0dXJuIHB0ciA9PSBlbmQ7CiAgICAgfQogCisgICAgU3RyaW5n
IHZhbHVlQXNTdHJpbmcoKSBjb25zdCBvdmVycmlkZQorICAgIHsKKyAgICAgICAgU3RyaW5nQnVp
bGRlciBidWlsZGVyOworCisgICAgICAgIGZvciAoY29uc3QgYXV0byYgbGVuZ3RoIDogbV9pdGVt
cykgeworICAgICAgICAgICAgaWYgKGJ1aWxkZXIubGVuZ3RoKCkpCisgICAgICAgICAgICAgICAg
YnVpbGRlci5hcHBlbmQoJyAnKTsKKworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQobGVuZ3Ro
LT52YWx1ZSgpLnZhbHVlQXNTdHJpbmcoKSk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4g
YnVpbGRlci50b1N0cmluZygpOworICAgIH0KKyAgICAKIHByaXZhdGU6Ci0gICAgU1ZHTGVuZ3Ro
TGlzdChBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmYmIGFuaW1hdGVkUHJvcGVydHksIFNWR1By
b3BlcnR5Um9sZSByb2xlLCBTVkdMZW5ndGhMaXN0VmFsdWVzJiB2YWx1ZXMsIExpc3RXcmFwcGVy
Q2FjaGUmIHdyYXBwZXJzKQotICAgICAgICA6IFNWR0xpc3RQcm9wZXJ0eVRlYXJPZmY8U1ZHTGVu
Z3RoTGlzdFZhbHVlcz4oYW5pbWF0ZWRQcm9wZXJ0eSwgcm9sZSwgdmFsdWVzLCB3cmFwcGVycykK
KyAgICBTVkdMZW5ndGhMaXN0KFNWR0xlbmd0aE1vZGUgbGVuZ3RoTW9kZSkKKyAgICAgICAgOiBt
X2xlbmd0aE1vZGUobGVuZ3RoTW9kZSkKICAgICB7CiAgICAgfQorCisgICAgU1ZHTGVuZ3RoTGlz
dChTVkdQcm9wZXJ0eU93bmVyKiBvd25lciwgU1ZHUHJvcGVydHlBY2Nlc3MgYWNjZXNzLCBTVkdM
ZW5ndGhNb2RlIGxlbmd0aE1vZGUpCisgICAgICAgIDogQmFzZShvd25lciwgYWNjZXNzKQorICAg
ICAgICAsIG1fbGVuZ3RoTW9kZShsZW5ndGhNb2RlKQorICAgIHsKKyAgICB9CisKKyAgICBTVkdM
ZW5ndGhMaXN0KGNvbnN0IFNWR0xlbmd0aExpc3QmIG90aGVyLCBTVkdQcm9wZXJ0eUFjY2VzcyBh
Y2Nlc3MpCisgICAgICAgIDogQmFzZShvdGhlciwgYWNjZXNzKQorICAgICAgICAsIG1fbGVuZ3Ro
TW9kZShvdGhlci5sZW5ndGhNb2RlKCkpCisgICAgeworICAgIH0KKworICAgIFNWR0xlbmd0aE1v
ZGUgbV9sZW5ndGhNb2RlIHsgTGVuZ3RoTW9kZU90aGVyIH07CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoTGlzdFZh
bHVlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoTGlzdFZhbHVlcy5jcHAKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJhMjA2NDgyM2EyODMyMWE3M2FlNTRjNjAzNzll
NWNmOTJiMWIzNDMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aExpc3RWYWx1ZXMuY3BwCisrKyAvZGV2L251
bGwKQEAgLTEsNjkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAw
OCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KLSAqIENvcHlyaWdodCAo
QykgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgotICoKLSAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
LSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSAiU1ZHTGVuZ3RoTGlzdFZhbHVlcy5oIgotCi0jaW5jbHVkZSAiU1ZH
UGFyc2VyVXRpbGl0aWVzLmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXZvaWQgU1ZHTGVuZ3RoTGlzdFZhbHVlczo6cGFyc2Uo
Y29uc3QgU3RyaW5nJiB2YWx1ZSwgU1ZHTGVuZ3RoTW9kZSBtb2RlKQotewotICAgIGNsZWFyKCk7
Ci0KLSAgICBhdXRvIHVwY29udmVydGVkQ2hhcmFjdGVycyA9IFN0cmluZ1ZpZXcodmFsdWUpLnVw
Y29udmVydGVkQ2hhcmFjdGVycygpOwotICAgIGNvbnN0IFVDaGFyKiBwdHIgPSB1cGNvbnZlcnRl
ZENoYXJhY3RlcnM7Ci0gICAgY29uc3QgVUNoYXIqIGVuZCA9IHB0ciArIHZhbHVlLmxlbmd0aCgp
OwotICAgIHdoaWxlIChwdHIgPCBlbmQpIHsKLSAgICAgICAgY29uc3QgVUNoYXIqIHN0YXJ0ID0g
cHRyOwotICAgICAgICB3aGlsZSAocHRyIDwgZW5kICYmICpwdHIgIT0gJywnICYmICFpc1NWR1Nw
YWNlKCpwdHIpKQotICAgICAgICAgICAgcHRyKys7Ci0gICAgICAgIGlmIChwdHIgPT0gc3RhcnQp
Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBTVkdMZW5ndGhWYWx1ZSBsZW5ndGgobW9k
ZSk7Ci0gICAgICAgIFN0cmluZyB2YWx1ZVN0cmluZyhzdGFydCwgcHRyIC0gc3RhcnQpOwotICAg
ICAgICBpZiAodmFsdWVTdHJpbmcuaXNFbXB0eSgpKQotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICBpZiAobGVuZ3RoLnNldFZhbHVlQXNTdHJpbmcodmFsdWVTdHJpbmcpLmhhc0V4Y2VwdGlv
bigpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBhcHBlbmQobGVuZ3RoKTsKLSAgICAg
ICAgc2tpcE9wdGlvbmFsU1ZHU3BhY2VzT3JEZWxpbWl0ZXIocHRyLCBlbmQpOwotICAgIH0KLX0K
LQotU3RyaW5nIFNWR0xlbmd0aExpc3RWYWx1ZXM6OnZhbHVlQXNTdHJpbmcoKSBjb25zdAotewot
ICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLQotICAgIHVuc2lnbmVkIHNpemUgPSB0aGlzLT5z
aXplKCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7ICsraSkgewotICAgICAg
ICBpZiAoaSA+IDApCi0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcpOwotCi0gICAgICAg
IGJ1aWxkZXIuYXBwZW5kKGF0KGkpLnZhbHVlQXNTdHJpbmcoKSk7Ci0gICAgfQotCi0gICAgcmV0
dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0xlbmd0aExpc3RWYWx1ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5n
dGhMaXN0VmFsdWVzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ4NDJlN2MwNWJk
ODA0ZGJmY2ZhNmQ4M2QwYTQ0YjJlZjlkNzNkYTguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aExpc3RWYWx1
ZXMuaAorKysgL2Rldi9udWxsCkBAIC0xLDU5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDQsIDIwMDUsIDIwMDYsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtk
ZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNA
a2RlLm9yZz4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICog
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0Eu
Ci0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJTVkdMZW5ndGhWYWx1ZS5oIgotI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBTVkdM
ZW5ndGg7Ci1jbGFzcyBTVkdMZW5ndGhMaXN0OwotCi1jbGFzcyBTVkdMZW5ndGhMaXN0VmFsdWVz
IGZpbmFsIDogcHVibGljIFZlY3RvcjxTVkdMZW5ndGhWYWx1ZT4gewotcHVibGljOgotICAgIHZv
aWQgcGFyc2UoY29uc3QgU3RyaW5nJiB2YWx1ZSwgU1ZHTGVuZ3RoTW9kZSk7Ci0gICAgU3RyaW5n
IHZhbHVlQXNTdHJpbmcoKSBjb25zdDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBTVkdQcm9w
ZXJ0eVRyYWl0czxTVkdMZW5ndGhMaXN0VmFsdWVzPiB7Ci0gICAgc3RhdGljIFNWR0xlbmd0aExp
c3RWYWx1ZXMgaW5pdGlhbFZhbHVlKCkgeyByZXR1cm4geyB9OyB9Ci0gICAgc3RhdGljIFNWR0xl
bmd0aExpc3RWYWx1ZXMgZnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZywgU1ZHTGVuZ3Ro
TW9kZSBsZW5ndGhNb2RlKQotICAgIHsKLSAgICAgICAgU1ZHTGVuZ3RoTGlzdFZhbHVlcyBsaXN0
OwotICAgICAgICBsaXN0LnBhcnNlKHN0cmluZywgbGVuZ3RoTW9kZSk7Ci0gICAgICAgIHJldHVy
biBsaXN0OwotICAgIH0KLSAgICBzdGF0aWMgT3B0aW9uYWw8U1ZHTGVuZ3RoTGlzdFZhbHVlcz4g
cGFyc2UoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUsIGNvbnN0IFN0cmluZyYgc3RyaW5n
KQotICAgIHsKLSAgICAgICAgU1ZHTGVuZ3RoTGlzdFZhbHVlcyBsaXN0OwotICAgICAgICBsaXN0
LnBhcnNlKHN0cmluZywgU1ZHTGVuZ3RoVmFsdWU6Omxlbmd0aE1vZGVGb3JBbmltYXRlZExlbmd0
aEF0dHJpYnV0ZShhdHRyTmFtZSkpOwotICAgICAgICByZXR1cm4gbGlzdDsKLSAgICB9Ci0gICAg
c3RhdGljIFN0cmluZyB0b1N0cmluZyhjb25zdCBTVkdMZW5ndGhMaXN0VmFsdWVzJiB0eXBlKSB7
IHJldHVybiB0eXBlLnZhbHVlQXNTdHJpbmcoKTsgfQotCi0gICAgdXNpbmcgTGlzdEl0ZW1UeXBl
ID0gU1ZHTGVuZ3RoVmFsdWU7Ci0gICAgdXNpbmcgTGlzdEl0ZW1UZWFyT2ZmID0gU1ZHTGVuZ3Ro
OwotICAgIHVzaW5nIExpc3RQcm9wZXJ0eVRlYXJPZmYgPSBTVkdMZW5ndGhMaXN0OwotfTsKLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0xpbmVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lRWxlbWVudC5jcHAK
aW5kZXggZGE1NDA2N2I0MDVjOTBmNDJlNTY1MDNlY2QwNTYyMGYyMTI2Mzk0MS4uODk3MzQ0Y2M5
Yzk1M2NiYjgyMzQ4NWUwYTBjZmM1OWJmYTZjNzg5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0xpbmVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGlu
ZUVsZW1lbnQuY3BwCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNCwg
MjAwNSwgMjAwNiwgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4K
ICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNyBSb2IgQnVpcyA8YnVpc0Br
ZGUub3JnPgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMzUsNyArMzUsMTQgQEAgaW5saW5lIFNW
R0xpbmVFbGVtZW50OjpTVkdMaW5lRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1l
LCBEb2N1bWVudCYgZG8KICAgICAsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQodGhpcykK
IHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6bGluZVRhZykpOwotICAgIHJlZ2lz
dGVyQXR0cmlidXRlcygpOworCisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwor
ICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7CisgICAgICAgIFByb3BlcnR5UmVnaXN0
cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6OngxQXR0ciwgJlNWR0xpbmVFbGVtZW50Ojpt
X3gxPigpOworICAgICAgICBQcm9wZXJ0eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5PFNWR05h
bWVzOjp5MUF0dHIsICZTVkdMaW5lRWxlbWVudDo6bV95MT4oKTsKKyAgICAgICAgUHJvcGVydHlS
ZWdpc3RyeTo6cmVnaXN0ZXJQcm9wZXJ0eTxTVkdOYW1lczo6eDJBdHRyLCAmU1ZHTGluZUVsZW1l
bnQ6Om1feDI+KCk7CisgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8
U1ZHTmFtZXM6OnkyQXR0ciwgJlNWR0xpbmVFbGVtZW50OjptX3kyPigpOworICAgIH0pOwogfQog
CiBSZWY8U1ZHTGluZUVsZW1lbnQ+IFNWR0xpbmVFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQpAQCAtNDMsMjkgKzUwLDE4IEBA
IFJlZjxTVkdMaW5lRWxlbWVudD4gU1ZHTGluZUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVuCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU1ZHTGlu
ZUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAotdm9pZCBTVkdMaW5lRWxlbWVudDo6
cmVnaXN0ZXJBdHRyaWJ1dGVzKCkKLXsKLSAgICBhdXRvJiByZWdpc3RyeSA9IGF0dHJpYnV0ZVJl
Z2lzdHJ5KCk7Ci0gICAgaWYgKCFyZWdpc3RyeS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsK
LSAgICByZWdpc3RyeS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1lczo6eDFBdHRyLCAmU1ZHTGlu
ZUVsZW1lbnQ6Om1feDE+KCk7Ci0gICAgcmVnaXN0cnkucmVnaXN0ZXJBdHRyaWJ1dGU8U1ZHTmFt
ZXM6OnkxQXR0ciwgJlNWR0xpbmVFbGVtZW50OjptX3kxPigpOwotICAgIHJlZ2lzdHJ5LnJlZ2lz
dGVyQXR0cmlidXRlPFNWR05hbWVzOjp4MkF0dHIsICZTVkdMaW5lRWxlbWVudDo6bV94Mj4oKTsK
LSAgICByZWdpc3RyeS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1lczo6eTJBdHRyLCAmU1ZHTGlu
ZUVsZW1lbnQ6Om1feTI+KCk7Ci19Ci0KIHZvaWQgU1ZHTGluZUVsZW1lbnQ6OnBhcnNlQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUp
CiB7CiAgICAgU1ZHUGFyc2luZ0Vycm9yIHBhcnNlRXJyb3IgPSBOb0Vycm9yOwogCiAgICAgaWYg
KG5hbWUgPT0gU1ZHTmFtZXM6OngxQXR0cikKLSAgICAgICAgbV94MS5zZXRWYWx1ZShTVkdMZW5n
dGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsK
KyAgICAgICAgbV94MS0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1
Y3QoTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvcikpOwogICAgIGVsc2UgaWYgKG5h
bWUgPT0gU1ZHTmFtZXM6OnkxQXR0cikKLSAgICAgICAgbV95MS5zZXRWYWx1ZShTVkdMZW5ndGhW
YWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7Cisg
ICAgICAgIG1feTEtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0
KExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7CiAgICAgZWxzZSBpZiAobmFt
ZSA9PSBTVkdOYW1lczo6eDJBdHRyKQotICAgICAgICBtX3gyLnNldFZhbHVlKFNWR0xlbmd0aFZh
bHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAg
ICAgICBtX3gyLT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChM
ZW5ndGhNb2RlV2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yKSk7CiAgICAgZWxzZSBpZiAobmFtZSA9
PSBTVkdOYW1lczo6eTJBdHRyKQotICAgICAgICBtX3kyLnNldFZhbHVlKFNWR0xlbmd0aFZhbHVl
Ojpjb25zdHJ1Y3QoTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKKyAgICAg
ICAgbV95Mi0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVu
Z3RoTW9kZUhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKIAogICAgIHJlcG9ydEF0dHJpYnV0
ZVBhcnNpbmdFcnJvcihwYXJzZUVycm9yLCBuYW1lLCB2YWx1ZSk7CiAKQEAgLTc1LDcgKzcxLDcg
QEAgdm9pZCBTVkdMaW5lRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW4KIAogdm9pZCBTVkdMaW5lRWxlbWVudDo6c3ZnQXR0
cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsKLSAgICBpZiAo
aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKKyAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6
aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRp
b25HdWFyZCBndWFyZCgqdGhpcyk7CiAgICAgICAgIHVwZGF0ZVJlbGF0aXZlTGVuZ3Roc0luZm9y
bWF0aW9uKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lRWxlbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVFbGVtZW50LmgKaW5kZXggMTc1MmVjODEy
OWMwYzZiMWM1YWNkZTRkMWRiNDYwNWRmYTIyZDFkMi4uMDgwMTQwNzZlZWE1OWZkMjk1ZDAyNDUw
YzBlYTEzN2UwMTFjMmZmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVF
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVFbGVtZW50LmgKQEAgLTIx
LDcgKzIxLDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJTVkdBbmltYXRlZExlbmd0
aC5oIgogI2luY2x1ZGUgIlNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQuaCIKICNpbmNsdWRl
ICJTVkdHZW9tZXRyeUVsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgpAQCAtMzMsMzIg
KzMyLDI1IEBAIGNsYXNzIFNWR0xpbmVFbGVtZW50IGZpbmFsIDogcHVibGljIFNWR0dlb21ldHJ5
RWxlbWVudCwgcHVibGljIFNWR0V4dGVybmFsUmVzb3VyCiBwdWJsaWM6CiAgICAgc3RhdGljIFJl
ZjxTVkdMaW5lRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYp
OwogCi0gICAgY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIHgxKCkgY29uc3QgeyByZXR1cm4gbV94MS5j
dXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAgIGNvbnN0IFNWR0xlbmd0
aFZhbHVlJiB5MSgpIGNvbnN0IHsgcmV0dXJuIG1feTEuY3VycmVudFZhbHVlKGF0dHJpYnV0ZU93
bmVyUHJveHkoKSk7IH0KLSAgICBjb25zdCBTVkdMZW5ndGhWYWx1ZSYgeDIoKSBjb25zdCB7IHJl
dHVybiBtX3gyLmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9Ci0gICAgY29u
c3QgU1ZHTGVuZ3RoVmFsdWUmIHkyKCkgY29uc3QgeyByZXR1cm4gbV95Mi5jdXJyZW50VmFsdWUo
YXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQorICAgIGNvbnN0IFNWR0xlbmd0aFZhbHVlJiB4MSgp
IGNvbnN0IHsgcmV0dXJuIG1feDEtPmN1cnJlbnRWYWx1ZSgpOyB9CisgICAgY29uc3QgU1ZHTGVu
Z3RoVmFsdWUmIHkxKCkgY29uc3QgeyByZXR1cm4gbV95MS0+Y3VycmVudFZhbHVlKCk7IH0KKyAg
ICBjb25zdCBTVkdMZW5ndGhWYWx1ZSYgeDIoKSBjb25zdCB7IHJldHVybiBtX3gyLT5jdXJyZW50
VmFsdWUoKTsgfQorICAgIGNvbnN0IFNWR0xlbmd0aFZhbHVlJiB5MigpIGNvbnN0IHsgcmV0dXJu
IG1feTItPmN1cnJlbnRWYWx1ZSgpOyB9CiAKLSAgICBSZWZQdHI8U1ZHQW5pbWF0ZWRMZW5ndGg+
IHgxQW5pbWF0ZWQoKSB7IHJldHVybiBtX3gxLmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3du
ZXJQcm94eSgpKTsgfQotICAgIFJlZlB0cjxTVkdBbmltYXRlZExlbmd0aD4geTFBbmltYXRlZCgp
IHsgcmV0dXJuIG1feTEuYW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9
Ci0gICAgUmVmUHRyPFNWR0FuaW1hdGVkTGVuZ3RoPiB4MkFuaW1hdGVkKCkgeyByZXR1cm4gbV94
Mi5hbmltYXRlZFByb3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBSZWZQdHI8
U1ZHQW5pbWF0ZWRMZW5ndGg+IHkyQW5pbWF0ZWQoKSB7IHJldHVybiBtX3kyLmFuaW1hdGVkUHJv
cGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQorICAgIFNWR0FuaW1hdGVkTGVuZ3RoJiB4
MUFuaW1hdGVkKCkgeyByZXR1cm4gbV94MTsgfQorICAgIFNWR0FuaW1hdGVkTGVuZ3RoJiB5MUFu
aW1hdGVkKCkgeyByZXR1cm4gbV95MTsgfQorICAgIFNWR0FuaW1hdGVkTGVuZ3RoJiB4MkFuaW1h
dGVkKCkgeyByZXR1cm4gbV94MjsgfQorICAgIFNWR0FuaW1hdGVkTGVuZ3RoJiB5MkFuaW1hdGVk
KCkgeyByZXR1cm4gbV95MjsgfQogCiBwcml2YXRlOgogICAgIFNWR0xpbmVFbGVtZW50KGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCiAgICAgdXNpbmcgQXR0cmlidXRlT3duZXJQ
cm94eSA9IFNWR0F0dHJpYnV0ZU93bmVyUHJveHlJbXBsPFNWR0xpbmVFbGVtZW50LCBTVkdHZW9t
ZXRyeUVsZW1lbnQsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ+OwotICAgIHN0YXRpYyBB
dHRyaWJ1dGVPd25lclByb3h5OjpBdHRyaWJ1dGVSZWdpc3RyeSYgYXR0cmlidXRlUmVnaXN0cnko
KSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5OjphdHRyaWJ1dGVSZWdpc3RyeSgpOyB9Ci0g
ICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJBdHRyaWJ1dGVzKCk7CiAgICAgY29uc3QgU1ZHQXR0cmli
dXRlT3duZXJQcm94eSYgYXR0cmlidXRlT3duZXJQcm94eSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IG1fYXR0cmlidXRlT3duZXJQcm94eTsgfQogCiAgICAgdXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9
IFNWR1Byb3BlcnR5T3duZXJSZWdpc3RyeTxTVkdMaW5lRWxlbWVudCwgU1ZHR2VvbWV0cnlFbGVt
ZW50LCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkPjsKICAgICBjb25zdCBTVkdQcm9wZXJ0
eVJlZ2lzdHJ5JiBwcm9wZXJ0eVJlZ2lzdHJ5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wcm9w
ZXJ0eVJlZ2lzdHJ5OyB9CiAKLSAgICBzdGF0aWMgYm9vbCBpc0tub3duQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCi0gICAgewotICAgICAgICByZXR1cm4gQXR0
cmlidXRlT3duZXJQcm94eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKSB8fCBQcm9w
ZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOwotICAgIH0KLQog
ICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21p
Y1N0cmluZyYpIGZpbmFsOwogICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFs
aWZpZWROYW1lJikgZmluYWw7CiAKQEAgLTY4LDEwICs2MCwxMCBAQCBwcml2YXRlOgogCiAgICAg
QXR0cmlidXRlT3duZXJQcm94eSBtX2F0dHJpYnV0ZU93bmVyUHJveHkgeyAqdGhpcyB9OwogICAg
IFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKLSAgICBTVkdB
bmltYXRlZExlbmd0aEF0dHJpYnV0ZSBtX3gxIHsgTGVuZ3RoTW9kZVdpZHRoIH07Ci0gICAgU1ZH
QW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUgbV95MSB7IExlbmd0aE1vZGVIZWlnaHQgfTsKLSAgICBT
VkdBbmltYXRlZExlbmd0aEF0dHJpYnV0ZSBtX3gyIHsgTGVuZ3RoTW9kZVdpZHRoIH07Ci0gICAg
U1ZHQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUgbV95MiB7IExlbmd0aE1vZGVIZWlnaHQgfTsKKyAg
ICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feDEgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRl
KHRoaXMsIExlbmd0aE1vZGVXaWR0aCkgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1f
eTEgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQpIH07
CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3gyIHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNy
ZWF0ZSh0aGlzLCBMZW5ndGhNb2RlV2lkdGgpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3Ro
PiBtX3kyIHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0
KSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmNwcAppbmRleCBlZWZkZmI1NDJiOGU4N2UyZjUz
OGQ2YjdiOWIyZDI1OGVjYzVjOWZmLi43MWI5NWUzYzI5YWZmN2IyMmMxZDE4YmM4Zjc0N2MxZmIz
NmExNjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZWFyR3JhZGllbnRF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVt
ZW50LmNwcApAQCAtNCw3ICs0LDcgQEAKICAqIENvcHlyaWdodCAoQykgMjAwOCBFcmljIFNlaWRl
bCA8ZXJpY0B3ZWJraXQub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA4IERpcmsgU2NodWx6ZSA8
a3JpdEB3ZWJraXQub3JnPgogICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGlt
aXRlZCAyMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAt
NDQsNyArNDQsMTQgQEAgaW5saW5lIFNWR0xpbmVhckdyYWRpZW50RWxlbWVudDo6U1ZHTGluZWFy
R3JhZGllbnRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHQKIHsKICAgICAvLyBTcGVjOiBJ
ZiB0aGUgeDIgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBlZmZlY3QgaXMgYXMgaWYg
YSB2YWx1ZSBvZiAiMTAwJSIgd2VyZSBzcGVjaWZpZWQuCiAgICAgQVNTRVJUKGhhc1RhZ05hbWUo
U1ZHTmFtZXM6OmxpbmVhckdyYWRpZW50VGFnKSk7Ci0gICAgcmVnaXN0ZXJBdHRyaWJ1dGVzKCk7
CisKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CisgICAgc3RkOjpjYWxsX29u
Y2Uob25jZUZsYWcsIFtdIHsKKyAgICAgICAgUHJvcGVydHlSZWdpc3RyeTo6cmVnaXN0ZXJQcm9w
ZXJ0eTxTVkdOYW1lczo6eDFBdHRyLCAmU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50OjptX3gxPigp
OworICAgICAgICBQcm9wZXJ0eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5PFNWR05hbWVzOjp5
MUF0dHIsICZTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ6Om1feTE+KCk7CisgICAgICAgIFByb3Bl
cnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6OngyQXR0ciwgJlNWR0xpbmVh
ckdyYWRpZW50RWxlbWVudDo6bV94Mj4oKTsKKyAgICAgICAgUHJvcGVydHlSZWdpc3RyeTo6cmVn
aXN0ZXJQcm9wZXJ0eTxTVkdOYW1lczo6eTJBdHRyLCAmU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50
OjptX3kyPigpOworICAgIH0pOwogfQogCiBSZWY8U1ZHTGluZWFyR3JhZGllbnRFbGVtZW50PiBT
VkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdO
YW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCkBAIC01MiwyOSArNTksMTggQEAgUmVmPFNWR0xpbmVh
ckdyYWRpZW50RWxlbWVudD4gU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50OjpjcmVhdGUoY29uc3Qg
UXVhbGlmaWVkTmEKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdMaW5lYXJHcmFkaWVudEVs
ZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAotdm9pZCBTVkdMaW5lYXJHcmFkaWVudEVs
ZW1lbnQ6OnJlZ2lzdGVyQXR0cmlidXRlcygpCi17Ci0gICAgYXV0byYgcmVnaXN0cnkgPSBhdHRy
aWJ1dGVSZWdpc3RyeSgpOwotICAgIGlmICghcmVnaXN0cnkuaXNFbXB0eSgpKQotICAgICAgICBy
ZXR1cm47Ci0gICAgcmVnaXN0cnkucmVnaXN0ZXJBdHRyaWJ1dGU8U1ZHTmFtZXM6OngxQXR0ciwg
JlNWR0xpbmVhckdyYWRpZW50RWxlbWVudDo6bV94MT4oKTsKLSAgICByZWdpc3RyeS5yZWdpc3Rl
ckF0dHJpYnV0ZTxTVkdOYW1lczo6eTFBdHRyLCAmU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50Ojpt
X3kxPigpOwotICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjp4MkF0dHIs
ICZTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ6Om1feDI+KCk7Ci0gICAgcmVnaXN0cnkucmVnaXN0
ZXJBdHRyaWJ1dGU8U1ZHTmFtZXM6OnkyQXR0ciwgJlNWR0xpbmVhckdyYWRpZW50RWxlbWVudDo6
bV95Mj4oKTsKLX0KLQogdm9pZCBTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ6OnBhcnNlQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUp
CiB7CiAgICAgU1ZHUGFyc2luZ0Vycm9yIHBhcnNlRXJyb3IgPSBOb0Vycm9yOwogCiAgICAgaWYg
KG5hbWUgPT0gU1ZHTmFtZXM6OngxQXR0cikKLSAgICAgICAgbV94MS5zZXRWYWx1ZShTVkdMZW5n
dGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsK
KyAgICAgICAgbV94MS0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1
Y3QoTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvcikpOwogICAgIGVsc2UgaWYgKG5h
bWUgPT0gU1ZHTmFtZXM6OnkxQXR0cikKLSAgICAgICAgbV95MS5zZXRWYWx1ZShTVkdMZW5ndGhW
YWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7Cisg
ICAgICAgIG1feTEtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0
KExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7CiAgICAgZWxzZSBpZiAobmFt
ZSA9PSBTVkdOYW1lczo6eDJBdHRyKQotICAgICAgICBtX3gyLnNldFZhbHVlKFNWR0xlbmd0aFZh
bHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAg
ICAgICBtX3gyLT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChM
ZW5ndGhNb2RlV2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yKSk7CiAgICAgZWxzZSBpZiAobmFtZSA9
PSBTVkdOYW1lczo6eTJBdHRyKQotICAgICAgICBtX3kyLnNldFZhbHVlKFNWR0xlbmd0aFZhbHVl
Ojpjb25zdHJ1Y3QoTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKKyAgICAg
ICAgbV95Mi0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVu
Z3RoTW9kZUhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKIAogICAgIHJlcG9ydEF0dHJpYnV0
ZVBhcnNpbmdFcnJvcihwYXJzZUVycm9yLCBuYW1lLCB2YWx1ZSk7CiAKQEAgLTgzLDcgKzc5LDcg
QEAgdm9pZCBTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEEKIAogdm9pZCBTVkdMaW5lYXJHcmFkaWVudEVsZW1l
bnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7
Ci0gICAgaWYgKGlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CisgICAgaWYgKFByb3BlcnR5
UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CiAgICAgICAgIEluc3RhbmNl
SW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwogICAgICAgICB1cGRhdGVSZWxhdGl2ZUxl
bmd0aHNJbmZvcm1hdGlvbigpOwogICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiBvYmplY3QgPSBy
ZW5kZXJlcigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVhckdyYWRp
ZW50RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVu
dC5oCmluZGV4IDkyMGNkZDFjNzBhYjg0MTQ1ZTQxMTg0NTkyMGU0ZjhlYTI0NTRjNTUuLjgzYzVk
ZDM4YWU4ZTBhOTkxMGI3N2YzMzQ4NGZjNTUyN2VlMmEwZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmgKQEAgLTIxLDcgKzIxLDYgQEAKIAogI3By
YWdtYSBvbmNlCiAKLSNpbmNsdWRlICJTVkdBbmltYXRlZExlbmd0aC5oIgogI2luY2x1ZGUgIlNW
R0dyYWRpZW50RWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR05hbWVzLmgiCiAKQEAgLTM2LDMyICsz
NSwyNSBAQCBwdWJsaWM6CiAKICAgICBib29sIGNvbGxlY3RHcmFkaWVudEF0dHJpYnV0ZXMoTGlu
ZWFyR3JhZGllbnRBdHRyaWJ1dGVzJik7CiAKLSAgICBjb25zdCBTVkdMZW5ndGhWYWx1ZSYgeDEo
KSBjb25zdCB7IHJldHVybiBtX3gxLmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25lclByb3h5KCkp
OyB9Ci0gICAgY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIHkxKCkgY29uc3QgeyByZXR1cm4gbV95MS5j
dXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAgIGNvbnN0IFNWR0xlbmd0
aFZhbHVlJiB4MigpIGNvbnN0IHsgcmV0dXJuIG1feDIuY3VycmVudFZhbHVlKGF0dHJpYnV0ZU93
bmVyUHJveHkoKSk7IH0KLSAgICBjb25zdCBTVkdMZW5ndGhWYWx1ZSYgeTIoKSBjb25zdCB7IHJl
dHVybiBtX3kyLmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CisgICAgY29u
c3QgU1ZHTGVuZ3RoVmFsdWUmIHgxKCkgY29uc3QgeyByZXR1cm4gbV94MS0+Y3VycmVudFZhbHVl
KCk7IH0KKyAgICBjb25zdCBTVkdMZW5ndGhWYWx1ZSYgeTEoKSBjb25zdCB7IHJldHVybiBtX3kx
LT5jdXJyZW50VmFsdWUoKTsgfQorICAgIGNvbnN0IFNWR0xlbmd0aFZhbHVlJiB4MigpIGNvbnN0
IHsgcmV0dXJuIG1feDItPmN1cnJlbnRWYWx1ZSgpOyB9CisgICAgY29uc3QgU1ZHTGVuZ3RoVmFs
dWUmIHkyKCkgY29uc3QgeyByZXR1cm4gbV95Mi0+Y3VycmVudFZhbHVlKCk7IH0KIAotICAgIFJl
ZlB0cjxTVkdBbmltYXRlZExlbmd0aD4geDFBbmltYXRlZCgpIHsgcmV0dXJuIG1feDEuYW5pbWF0
ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9Ci0gICAgUmVmUHRyPFNWR0FuaW1h
dGVkTGVuZ3RoPiB5MUFuaW1hdGVkKCkgeyByZXR1cm4gbV95MS5hbmltYXRlZFByb3BlcnR5KGF0
dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBSZWZQdHI8U1ZHQW5pbWF0ZWRMZW5ndGg+IHgy
QW5pbWF0ZWQoKSB7IHJldHVybiBtX3gyLmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQ
cm94eSgpKTsgfQotICAgIFJlZlB0cjxTVkdBbmltYXRlZExlbmd0aD4geTJBbmltYXRlZCgpIHsg
cmV0dXJuIG1feTIuYW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9Cisg
ICAgU1ZHQW5pbWF0ZWRMZW5ndGgmIHgxQW5pbWF0ZWQoKSB7IHJldHVybiBtX3gxOyB9CisgICAg
U1ZHQW5pbWF0ZWRMZW5ndGgmIHkxQW5pbWF0ZWQoKSB7IHJldHVybiBtX3kxOyB9CisgICAgU1ZH
QW5pbWF0ZWRMZW5ndGgmIHgyQW5pbWF0ZWQoKSB7IHJldHVybiBtX3gyOyB9CisgICAgU1ZHQW5p
bWF0ZWRMZW5ndGgmIHkyQW5pbWF0ZWQoKSB7IHJldHVybiBtX3kyOyB9CiAKIHByaXZhdGU6CiAg
ICAgU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVu
dCYpOwogCiAgICAgdXNpbmcgQXR0cmlidXRlT3duZXJQcm94eSA9IFNWR0F0dHJpYnV0ZU93bmVy
UHJveHlJbXBsPFNWR0xpbmVhckdyYWRpZW50RWxlbWVudCwgU1ZHR3JhZGllbnRFbGVtZW50PjsK
LSAgICBzdGF0aWMgQXR0cmlidXRlT3duZXJQcm94eTo6QXR0cmlidXRlUmVnaXN0cnkmIGF0dHJp
YnV0ZVJlZ2lzdHJ5KCkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6YXR0cmlidXRlUmVn
aXN0cnkoKTsgfQotICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQXR0cmlidXRlcygpOwogICAgIGNv
bnN0IFNWR0F0dHJpYnV0ZU93bmVyUHJveHkmIGF0dHJpYnV0ZU93bmVyUHJveHkoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBtX2F0dHJpYnV0ZU93bmVyUHJveHk7IH0KIAogICAgIHVzaW5nIFByb3Bl
cnR5UmVnaXN0cnkgPSBTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk8U1ZHTGluZWFyR3JhZGllbnRF
bGVtZW50LCBTVkdHcmFkaWVudEVsZW1lbnQ+OwogICAgIGNvbnN0IFNWR1Byb3BlcnR5UmVnaXN0
cnkmIHByb3BlcnR5UmVnaXN0cnkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Byb3BlcnR5UmVn
aXN0cnk7IH0KIAotICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBBdHRyaWJ1dGVP
d25lclByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpIHx8IFByb3BlcnR5UmVn
aXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7Ci0gICAgfQotCiAgICAgdm9p
ZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5n
Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmll
ZE5hbWUmKSBvdmVycmlkZTsKIApAQCAtNzEsMTAgKzYzLDEwIEBAIHByaXZhdGU6CiAKICAgICBB
dHRyaWJ1dGVPd25lclByb3h5IG1fYXR0cmlidXRlT3duZXJQcm94eSB7ICp0aGlzIH07CiAgICAg
UHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwotICAgIFNWR0Fu
aW1hdGVkTGVuZ3RoQXR0cmlidXRlIG1feDEgeyBMZW5ndGhNb2RlV2lkdGggfTsKLSAgICBTVkdB
bmltYXRlZExlbmd0aEF0dHJpYnV0ZSBtX3kxIHsgTGVuZ3RoTW9kZUhlaWdodCB9OwotICAgIFNW
R0FuaW1hdGVkTGVuZ3RoQXR0cmlidXRlIG1feDIgeyBMZW5ndGhNb2RlV2lkdGgsICIxMDAlIiB9
OwotICAgIFNWR0FuaW1hdGVkTGVuZ3RoQXR0cmlidXRlIG1feTIgeyBMZW5ndGhNb2RlSGVpZ2h0
IH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3gxIHsgU1ZHQW5pbWF0ZWRMZW5ndGg6
OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlV2lkdGgpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVu
Z3RoPiBtX3kxIHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlSGVp
Z2h0KSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV94MiB7IFNWR0FuaW1hdGVkTGVu
Z3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZVdpZHRoLCAiMTAwJSIpIH07CisgICAgUmVmPFNW
R0FuaW1hdGVkTGVuZ3RoPiBtX3kyIHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBM
ZW5ndGhNb2RlSGVpZ2h0KSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwCmluZGV4IDZhYjJiN2ZmMjJjOTAzZTYyZjNj
YTBiYjVjZjU2YTIzNDhkNGFlNzYuLjIwNTdjM2Q3Y2UxNjczYzA1MmY2OTkyNDliMDRmNGMyMmZk
YmZmYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5jcHAKQEAgLTIsNyAr
Miw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDggTmlr
b2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIw
MDQsIDIwMDUsIDIwMDYsIDIwMDcgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KICAqIENvcHlyaWdo
dCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAwOS0yMDEwLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtNDEsNiArNDEsMTQgQEAgaW5saW5lIFNW
R01hcmtlckVsZW1lbnQ6OlNWR01hcmtlckVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFn
TmFtZSwgRG9jdW1lbnQKICAgICAvLyBTcGVjOiBJZiB0aGUgbWFya2VyV2lkdGgvbWFya2VySGVp
Z2h0IGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVkLCB0aGUgZWZmZWN0IGlzIGFzIGlmIGEgdmFs
dWUgb2YgIjMiIHdlcmUgc3BlY2lmaWVkLgogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVz
OjptYXJrZXJUYWcpKTsKICAgICByZWdpc3RlckF0dHJpYnV0ZXMoKTsKKworICAgIHN0YXRpYyBz
dGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10g
eworICAgICAgICBQcm9wZXJ0eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5PFNWR05hbWVzOjpy
ZWZYQXR0ciwgJlNWR01hcmtlckVsZW1lbnQ6Om1fcmVmWD4oKTsKKyAgICAgICAgUHJvcGVydHlS
ZWdpc3RyeTo6cmVnaXN0ZXJQcm9wZXJ0eTxTVkdOYW1lczo6cmVmWUF0dHIsICZTVkdNYXJrZXJF
bGVtZW50OjptX3JlZlk+KCk7CisgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJv
cGVydHk8U1ZHTmFtZXM6Om1hcmtlcldpZHRoQXR0ciwgJlNWR01hcmtlckVsZW1lbnQ6Om1fbWFy
a2VyV2lkdGg+KCk7CisgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8
U1ZHTmFtZXM6Om1hcmtlckhlaWdodEF0dHIsICZTVkdNYXJrZXJFbGVtZW50OjptX21hcmtlckhl
aWdodD4oKTsKKyAgICB9KTsKIH0KIAogUmVmPFNWR01hcmtlckVsZW1lbnQ+IFNWR01hcmtlckVs
ZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9j
dW1lbnQpCkBAIC03MCwxMCArNzgsNiBAQCB2b2lkIFNWR01hcmtlckVsZW1lbnQ6OnJlZ2lzdGVy
QXR0cmlidXRlcygpCiAgICAgYXV0byYgcmVnaXN0cnkgPSBhdHRyaWJ1dGVSZWdpc3RyeSgpOwog
ICAgIGlmICghcmVnaXN0cnkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47Ci0gICAgcmVnaXN0
cnkucmVnaXN0ZXJBdHRyaWJ1dGU8U1ZHTmFtZXM6OnJlZlhBdHRyLCAmU1ZHTWFya2VyRWxlbWVu
dDo6bV9yZWZYPigpOwotICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjpy
ZWZZQXR0ciwgJlNWR01hcmtlckVsZW1lbnQ6Om1fcmVmWT4oKTsKLSAgICByZWdpc3RyeS5yZWdp
c3RlckF0dHJpYnV0ZTxTVkdOYW1lczo6bWFya2VyV2lkdGhBdHRyLCAmU1ZHTWFya2VyRWxlbWVu
dDo6bV9tYXJrZXJXaWR0aD4oKTsKLSAgICByZWdpc3RyeS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdO
YW1lczo6bWFya2VySGVpZ2h0QXR0ciwgJlNWR01hcmtlckVsZW1lbnQ6Om1fbWFya2VySGVpZ2h0
PigpOwogICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjptYXJrZXJVbml0
c0F0dHIsIFNWR01hcmtlclVuaXRzVHlwZSwgJlNWR01hcmtlckVsZW1lbnQ6Om1fbWFya2VyVW5p
dHM+KCk7CiAgICAgcmVnaXN0cnkucmVnaXN0ZXJBdHRyaWJ1dGUoU1ZHQW5pbWF0ZWRDdXN0b21B
bmdsZUF0dHJpYnV0ZUFjY2Vzc29yOjpzaW5nbGV0b248U1ZHTmFtZXM6Om9yaWVudEF0dHIsCiAg
ICAgICAgICZTVkdNYXJrZXJFbGVtZW50OjpvcmllbnRBbmdsZUlkZW50aWZpZXIsICZTVkdNYXJr
ZXJFbGVtZW50OjptX29yaWVudEFuZ2xlLApAQCAtMTAyLDEzICsxMDYsMTMgQEAgdm9pZCBTVkdN
YXJrZXJFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBj
b25zdCBBdG9taWNTdHIKICAgICBTVkdQYXJzaW5nRXJyb3IgcGFyc2VFcnJvciA9IE5vRXJyb3I7
CiAKICAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6cmVmWEF0dHIpCi0gICAgICAgIG1fcmVmWC5z
ZXRWYWx1ZShTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVXaWR0aCwgdmFsdWUs
IHBhcnNlRXJyb3IpKTsKKyAgICAgICAgbV9yZWZYLT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVu
Z3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlV2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yKSk7
CiAgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6cmVmWUF0dHIpCi0gICAgICAgIG1fcmVm
WS5zZXRWYWx1ZShTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVIZWlnaHQsIHZh
bHVlLCBwYXJzZUVycm9yKSk7CisgICAgICAgIG1fcmVmWS0+c2V0QmFzZVZhbEludGVybmFsKFNW
R0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUsIHBhcnNlRXJy
b3IpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjptYXJrZXJXaWR0aEF0dHIpCi0g
ICAgICAgIG1fbWFya2VyV2lkdGguc2V0VmFsdWUoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChM
ZW5ndGhNb2RlV2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yKSk7CisgICAgICAgIG1fbWFya2VyV2lk
dGgtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1v
ZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05h
bWVzOjptYXJrZXJIZWlnaHRBdHRyKQotICAgICAgICBtX21hcmtlckhlaWdodC5zZXRWYWx1ZShT
VkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlLCBwYXJzZUVy
cm9yKSk7CisgICAgICAgIG1fbWFya2VySGVpZ2h0LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVu
Z3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikp
OwogCiAgICAgcmVwb3J0QXR0cmlidXRlUGFyc2luZ0Vycm9yKHBhcnNlRXJyb3IsIG5hbWUsIHZh
bHVlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmgKaW5kZXggMTA3NjY1N2Y5
OTg5NDhjOTYwZDcyM2QyMzQ4ZTQ0YjQ5MGEzZTRhZi4uNDI4NjExYWViNWQ5M2Y0MTRmYWFhNzcw
ZWY3ODkyM2U3Y2Q3NzI2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtl
ckVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5oCkBA
IC0yMyw3ICsyMyw2IEBACiAKICNpbmNsdWRlICJTVkdBbmltYXRlZEFuZ2xlLmgiCiAjaW5jbHVk
ZSAiU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbi5oIgotI2luY2x1ZGUgIlNWR0FuaW1hdGVkTGVuZ3Ro
LmgiCiAjaW5jbHVkZSAiU1ZHRWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR0V4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQuaCIKICNpbmNsdWRlICJTVkdGaXRUb1ZpZXdCb3guaCIKQEAgLTU1LDE4ICs1
NCwxOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRPcmllbnRUb0F1dG8oKTsKICAgICB2b2lkIHNl
dE9yaWVudFRvQW5nbGUoU1ZHQW5nbGUmKTsKIAotICAgIGNvbnN0IFNWR0xlbmd0aFZhbHVlJiBy
ZWZYKCkgY29uc3QgeyByZXR1cm4gbV9yZWZYLmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25lclBy
b3h5KCkpOyB9Ci0gICAgY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIHJlZlkoKSBjb25zdCB7IHJldHVy
biBtX3JlZlkuY3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBjb25z
dCBTVkdMZW5ndGhWYWx1ZSYgbWFya2VyV2lkdGgoKSBjb25zdCB7IHJldHVybiBtX21hcmtlcldp
ZHRoLmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9Ci0gICAgY29uc3QgU1ZH
TGVuZ3RoVmFsdWUmIG1hcmtlckhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fbWFya2VySGVpZ2h0
LmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CisgICAgY29uc3QgU1ZHTGVu
Z3RoVmFsdWUmIHJlZlgoKSBjb25zdCB7IHJldHVybiBtX3JlZlgtPmN1cnJlbnRWYWx1ZSgpOyB9
CisgICAgY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIHJlZlkoKSBjb25zdCB7IHJldHVybiBtX3JlZlkt
PmN1cnJlbnRWYWx1ZSgpOyB9CisgICAgY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIG1hcmtlcldpZHRo
KCkgY29uc3QgeyByZXR1cm4gbV9tYXJrZXJXaWR0aC0+Y3VycmVudFZhbHVlKCk7IH0KKyAgICBj
b25zdCBTVkdMZW5ndGhWYWx1ZSYgbWFya2VySGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9tYXJr
ZXJIZWlnaHQtPmN1cnJlbnRWYWx1ZSgpOyB9CiAgICAgU1ZHTWFya2VyVW5pdHNUeXBlIG1hcmtl
clVuaXRzKCkgY29uc3QgeyByZXR1cm4gbV9tYXJrZXJVbml0cy5jdXJyZW50VmFsdWUoYXR0cmli
dXRlT3duZXJQcm94eSgpKTsgfQogICAgIGNvbnN0IFNWR0FuZ2xlVmFsdWUmIG9yaWVudEFuZ2xl
KCkgY29uc3QgeyByZXR1cm4gbV9vcmllbnRBbmdsZS5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3du
ZXJQcm94eSgpKTsgfQogICAgIFNWR01hcmtlck9yaWVudFR5cGUgb3JpZW50VHlwZSgpIGNvbnN0
IHsgcmV0dXJuIG1fb3JpZW50VHlwZS5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgp
KTsgfQogCi0gICAgUmVmUHRyPFNWR0FuaW1hdGVkTGVuZ3RoPiByZWZYQW5pbWF0ZWQoKSB7IHJl
dHVybiBtX3JlZlguYW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9Ci0g
ICAgUmVmUHRyPFNWR0FuaW1hdGVkTGVuZ3RoPiByZWZZQW5pbWF0ZWQoKSB7IHJldHVybiBtX3Jl
ZlkuYW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9Ci0gICAgUmVmUHRy
PFNWR0FuaW1hdGVkTGVuZ3RoPiBtYXJrZXJXaWR0aEFuaW1hdGVkKCkgeyByZXR1cm4gbV9tYXJr
ZXJXaWR0aC5hbmltYXRlZFByb3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBS
ZWZQdHI8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1hcmtlckhlaWdodEFuaW1hdGVkKCkgeyByZXR1cm4g
bV9tYXJrZXJIZWlnaHQuYW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9
CisgICAgU1ZHQW5pbWF0ZWRMZW5ndGgmIHJlZlhBbmltYXRlZCgpIHsgcmV0dXJuIG1fcmVmWDsg
fQorICAgIFNWR0FuaW1hdGVkTGVuZ3RoJiByZWZZQW5pbWF0ZWQoKSB7IHJldHVybiBtX3JlZlk7
IH0KKyAgICBTVkdBbmltYXRlZExlbmd0aCYgbWFya2VyV2lkdGhBbmltYXRlZCgpIHsgcmV0dXJu
IG1fbWFya2VyV2lkdGg7IH0KKyAgICBTVkdBbmltYXRlZExlbmd0aCYgbWFya2VySGVpZ2h0QW5p
bWF0ZWQoKSB7IHJldHVybiBtX21hcmtlckhlaWdodDsgfQogICAgIFJlZlB0cjxTVkdBbmltYXRl
ZEVudW1lcmF0aW9uPiBtYXJrZXJVbml0c0FuaW1hdGVkKCkgeyByZXR1cm4gbV9tYXJrZXJVbml0
cy5hbmltYXRlZFByb3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KICAgICBSZWZQdHI8
U1ZHQW5pbWF0ZWRBbmdsZT4gb3JpZW50QW5nbGVBbmltYXRlZCgpIHsgcmV0dXJuIG1fb3JpZW50
QW5nbGUuYW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CiAgICAgUmVm
UHRyPFNWR0FuaW1hdGVkRW51bWVyYXRpb24+IG9yaWVudFR5cGVBbmltYXRlZCgpIHsgcmV0dXJu
IG1fb3JpZW50VHlwZS5hbmltYXRlZFByb3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0K
QEAgLTEzMSwxMCArMTMwLDEwIEBAIHByaXZhdGU6CiAgICAgdXNpbmcgU1ZHQW5pbWF0ZWRDdXN0
b21BbmdsZUF0dHJpYnV0ZUFjY2Vzc29yID0gU1ZHQW5pbWF0ZWRQYWlyQXR0cmlidXRlQWNjZXNz
b3I8U1ZHTWFya2VyRWxlbWVudCwgU1ZHQW5pbWF0ZWRBbmdsZUF0dHJpYnV0ZSwgQW5pbWF0ZWRB
bmdsZSwgU1ZHQW5pbWF0ZWRDdXN0b21PcmllbnRUeXBlQXR0cmlidXRlLCBBbmltYXRlZEVudW1l
cmF0aW9uPjsKIAogICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRo
aXMgfTsKLSAgICBTVkdBbmltYXRlZExlbmd0aEF0dHJpYnV0ZSBtX3JlZlggeyBMZW5ndGhNb2Rl
V2lkdGggfTsKLSAgICBTVkdBbmltYXRlZExlbmd0aEF0dHJpYnV0ZSBtX3JlZlkgeyBMZW5ndGhN
b2RlSGVpZ2h0IH07Ci0gICAgU1ZHQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUgbV9tYXJrZXJXaWR0
aCB7IExlbmd0aE1vZGVXaWR0aCwgIjMiIH07Ci0gICAgU1ZHQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1
dGUgbV9tYXJrZXJIZWlnaHQgeyBMZW5ndGhNb2RlSGVpZ2h0LCAiMyIgfTsKKyAgICBSZWY8U1ZH
QW5pbWF0ZWRMZW5ndGg+IG1fcmVmWCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywg
TGVuZ3RoTW9kZVdpZHRoKSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV9yZWZZIHsg
U1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0KSB9OworICAg
IFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV9tYXJrZXJXaWR0aCB7IFNWR0FuaW1hdGVkTGVuZ3Ro
OjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZVdpZHRoLCAiMyIpIH07CisgICAgUmVmPFNWR0FuaW1h
dGVkTGVuZ3RoPiBtX21hcmtlckhlaWdodCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhp
cywgTGVuZ3RoTW9kZUhlaWdodCwgIjMiKSB9OwogICAgIFNWR0FuaW1hdGVkRW51bWVyYXRpb25B
dHRyaWJ1dGU8U1ZHTWFya2VyVW5pdHNUeXBlPiBtX21hcmtlclVuaXRzIHsgU1ZHTWFya2VyVW5p
dHNTdHJva2VXaWR0aCB9OwogICAgIFNWR0FuaW1hdGVkQW5nbGVBdHRyaWJ1dGUgbV9vcmllbnRB
bmdsZTsKICAgICBTVkdBbmltYXRlZEN1c3RvbU9yaWVudFR5cGVBdHRyaWJ1dGUgbV9vcmllbnRU
eXBlIHsgU1ZHTWFya2VyT3JpZW50QW5nbGUgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdNYXNrRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1l
bnQuY3BwCmluZGV4IGNkNDNmYTYzMGUyMzUyNzI1MjhkY2Y1NjJjODg0NjAxNWI5YTU0YjQuLmQx
NzhjOGFkNTQ2OWUzYmZiYTk3ODU5MzA0NjVlN2U3YTAyYmRkZmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR01hc2tFbGVtZW50LmNwcApAQCAtNSw3ICs1LDcgQEAKICAqIENvcHlyaWdodCAoQykgMjAw
OSBEaXJrIFNjaHVsemUgPGtyaXRAd2Via2l0Lm9yZz4KICAqIENvcHlyaWdodCAoQykgUmVzZWFy
Y2ggSW4gTW90aW9uIExpbWl0ZWQgMjAwOS0yMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICog
Q29weXJpZ2h0IChDKSAyMDE0IEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtNDgsNiArNDgsMTQgQEAgaW5saW5l
IFNWR01hc2tFbGVtZW50OjpTVkdNYXNrRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdO
YW1lLCBEb2N1bWVudCYgZG8KICAgICAvLyBTcGVjOiBJZiB0aGUgd2lkdGgvaGVpZ2h0IGF0dHJp
YnV0ZSBpcyBub3Qgc3BlY2lmaWVkLCB0aGUgZWZmZWN0IGlzIGFzIGlmIGEgdmFsdWUgb2YgIjEy
MCUiIHdlcmUgc3BlY2lmaWVkLgogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjptYXNr
VGFnKSk7CiAgICAgcmVnaXN0ZXJBdHRyaWJ1dGVzKCk7CisgICAgCisgICAgc3RhdGljIHN0ZDo6
b25jZV9mbGFnIG9uY2VGbGFnOworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7Cisg
ICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6OnhBdHRy
LCAmU1ZHTWFza0VsZW1lbnQ6Om1feD4oKTsKKyAgICAgICAgUHJvcGVydHlSZWdpc3RyeTo6cmVn
aXN0ZXJQcm9wZXJ0eTxTVkdOYW1lczo6eUF0dHIsICZTVkdNYXNrRWxlbWVudDo6bV95PigpOwor
ICAgICAgICBQcm9wZXJ0eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5PFNWR05hbWVzOjp3aWR0
aEF0dHIsICZTVkdNYXNrRWxlbWVudDo6bV93aWR0aD4oKTsKKyAgICAgICAgUHJvcGVydHlSZWdp
c3RyeTo6cmVnaXN0ZXJQcm9wZXJ0eTxTVkdOYW1lczo6aGVpZ2h0QXR0ciwgJlNWR01hc2tFbGVt
ZW50OjptX2hlaWdodD4oKTsKKyAgICB9KTsKIH0KIAogUmVmPFNWR01hc2tFbGVtZW50PiBTVkdN
YXNrRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50
JiBkb2N1bWVudCkKQEAgLTYwLDEwICs2OCw2IEBAIHZvaWQgU1ZHTWFza0VsZW1lbnQ6OnJlZ2lz
dGVyQXR0cmlidXRlcygpCiAgICAgYXV0byYgcmVnaXN0cnkgPSBhdHRyaWJ1dGVSZWdpc3RyeSgp
OwogICAgIGlmICghcmVnaXN0cnkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47Ci0gICAgcmVn
aXN0cnkucmVnaXN0ZXJBdHRyaWJ1dGU8U1ZHTmFtZXM6OnhBdHRyLCAmU1ZHTWFza0VsZW1lbnQ6
Om1feD4oKTsKLSAgICByZWdpc3RyeS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1lczo6eUF0dHIs
ICZTVkdNYXNrRWxlbWVudDo6bV95PigpOwotICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRl
PFNWR05hbWVzOjp3aWR0aEF0dHIsICZTVkdNYXNrRWxlbWVudDo6bV93aWR0aD4oKTsKLSAgICBy
ZWdpc3RyeS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1lczo6aGVpZ2h0QXR0ciwgJlNWR01hc2tF
bGVtZW50OjptX2hlaWdodD4oKTsKICAgICByZWdpc3RyeS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdO
YW1lczo6bWFza1VuaXRzQXR0ciwgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSwgJlNWR01hc2tF
bGVtZW50OjptX21hc2tVbml0cz4oKTsKICAgICByZWdpc3RyeS5yZWdpc3RlckF0dHJpYnV0ZTxT
VkdOYW1lczo6bWFza0NvbnRlbnRVbml0c0F0dHIsIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUs
ICZTVkdNYXNrRWxlbWVudDo6bV9tYXNrQ29udGVudFVuaXRzPigpOwogfQpAQCAtODYsMTMgKzkw
LDEzIEBAIHZvaWQgU1ZHTWFza0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluCiAgICAgU1ZHUGFyc2luZ0Vycm9yIHBhcnNl
RXJyb3IgPSBOb0Vycm9yOwogCiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnhBdHRyKQotICAg
ICAgICBtX3guc2V0VmFsdWUoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlV2lk
dGgsIHZhbHVlLCBwYXJzZUVycm9yKSk7CisgICAgICAgIG1feC0+c2V0QmFzZVZhbEludGVybmFs
KFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSwgcGFyc2VF
cnJvcikpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnlBdHRyKQotICAgICAgICBt
X3kuc2V0VmFsdWUoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlSGVpZ2h0LCB2
YWx1ZSwgcGFyc2VFcnJvcikpOworICAgICAgICBtX3ktPnNldEJhc2VWYWxJbnRlcm5hbChTVkdM
ZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9y
KSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6d2lkdGhBdHRyKQotICAgICAgICBt
X3dpZHRoLnNldFZhbHVlKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZVdpZHRo
LCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAgICAgICBtX3dpZHRoLT5zZXRCYXNlVmFsSW50ZXJu
YWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlV2lkdGgsIHZhbHVlLCBwYXJz
ZUVycm9yKSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6aGVpZ2h0QXR0cikKLSAg
ICAgICAgbV9oZWlnaHQuc2V0VmFsdWUoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhN
b2RlSGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAgICAgICBtX2hlaWdodC0+c2V0QmFz
ZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZUhlaWdodCwg
dmFsdWUsIHBhcnNlRXJyb3IpKTsKIAogICAgIHJlcG9ydEF0dHJpYnV0ZVBhcnNpbmdFcnJvcihw
YXJzZUVycm9yLCBuYW1lLCB2YWx1ZSk7CiAKQEAgLTEwMyw3ICsxMDcsNyBAQCB2b2lkIFNWR01h
c2tFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25z
dCBBdG9taWNTdHJpbgogCiB2b2lkIFNWR01hc2tFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2Vk
KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogewotICAgIGlmIChpc0FuaW1hdGVkTGVu
Z3RoQXR0cmlidXRlKGF0dHJOYW1lKSkgeworICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0Fu
aW1hdGVkTGVuZ3RoQXR0cmlidXRlKGF0dHJOYW1lKSkgewogICAgICAgICBJbnN0YW5jZUludmFs
aWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKICAgICAgICAgaW52YWxpZGF0ZVNWR1ByZXNlbnRh
dGlvbkF0dHJpYnV0ZVN0eWxlKCk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01h
c2tFbGVtZW50LmgKaW5kZXggZDg2ZjYyMzg4MjBiMzg1ODBlMzcyODgxNzRhMDdlZGNiN2U2MDJk
Yi4uNjQ4NDBmNTE2NGJlZjI4MWQyMWIwOTM4YTIxZTNiYTQwY2ZjNTUwMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR01hc2tFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR01hc2tFbGVtZW50LmgKQEAgLTIxLDcgKzIxLDYgQEAKICNwcmFnbWEgb25jZQogCiAj
aW5jbHVkZSAiU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbi5oIgotI2luY2x1ZGUgIlNWR0FuaW1hdGVk
TGVuZ3RoLmgiCiAjaW5jbHVkZSAiU1ZHRWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR0V4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWQuaCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgpAQCAtMzUsMTcgKzM0
LDE3IEBAIGNsYXNzIFNWR01hc2tFbGVtZW50IGZpbmFsIDogcHVibGljIFNWR0VsZW1lbnQsIHB1
YmxpYyBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpCiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxT
VkdNYXNrRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwog
Ci0gICAgY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIHgoKSBjb25zdCB7IHJldHVybiBtX3guY3VycmVu
dFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBjb25zdCBTVkdMZW5ndGhWYWx1
ZSYgeSgpIGNvbnN0IHsgcmV0dXJuIG1feS5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94
eSgpKTsgfQotICAgIGNvbnN0IFNWR0xlbmd0aFZhbHVlJiB3aWR0aCgpIGNvbnN0IHsgcmV0dXJu
IG1fd2lkdGguY3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBjb25z
dCBTVkdMZW5ndGhWYWx1ZSYgaGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9oZWlnaHQuY3VycmVu
dFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KKyAgICBjb25zdCBTVkdMZW5ndGhWYWx1
ZSYgeCgpIGNvbnN0IHsgcmV0dXJuIG1feC0+Y3VycmVudFZhbHVlKCk7IH0KKyAgICBjb25zdCBT
VkdMZW5ndGhWYWx1ZSYgeSgpIGNvbnN0IHsgcmV0dXJuIG1feS0+Y3VycmVudFZhbHVlKCk7IH0K
KyAgICBjb25zdCBTVkdMZW5ndGhWYWx1ZSYgd2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3dpZHRo
LT5jdXJyZW50VmFsdWUoKTsgfQorICAgIGNvbnN0IFNWR0xlbmd0aFZhbHVlJiBoZWlnaHQoKSBj
b25zdCB7IHJldHVybiBtX2hlaWdodC0+Y3VycmVudFZhbHVlKCk7IH0KICAgICBTVkdVbml0VHlw
ZXM6OlNWR1VuaXRUeXBlIG1hc2tVbml0cygpIGNvbnN0IHsgcmV0dXJuIG1fbWFza1VuaXRzLmN1
cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CiAgICAgU1ZHVW5pdFR5cGVzOjpT
VkdVbml0VHlwZSBtYXNrQ29udGVudFVuaXRzKCkgY29uc3QgeyByZXR1cm4gbV9tYXNrQ29udGVu
dFVuaXRzLmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CiAKLSAgICBSZWZQ
dHI8U1ZHQW5pbWF0ZWRMZW5ndGg+IHhBbmltYXRlZCgpIHsgcmV0dXJuIG1feC5hbmltYXRlZFBy
b3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBSZWZQdHI8U1ZHQW5pbWF0ZWRM
ZW5ndGg+IHlBbmltYXRlZCgpIHsgcmV0dXJuIG1feS5hbmltYXRlZFByb3BlcnR5KGF0dHJpYnV0
ZU93bmVyUHJveHkoKSk7IH0KLSAgICBSZWZQdHI8U1ZHQW5pbWF0ZWRMZW5ndGg+IHdpZHRoQW5p
bWF0ZWQoKSB7IHJldHVybiBtX3dpZHRoLmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQ
cm94eSgpKTsgfQotICAgIFJlZlB0cjxTVkdBbmltYXRlZExlbmd0aD4gaGVpZ2h0QW5pbWF0ZWQo
KSB7IHJldHVybiBtX2hlaWdodC5hbmltYXRlZFByb3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHko
KSk7IH0KKyAgICBTVkdBbmltYXRlZExlbmd0aCYgeEFuaW1hdGVkKCkgeyByZXR1cm4gbV94OyB9
CisgICAgU1ZHQW5pbWF0ZWRMZW5ndGgmIHlBbmltYXRlZCgpIHsgcmV0dXJuIG1feTsgfQorICAg
IFNWR0FuaW1hdGVkTGVuZ3RoJiB3aWR0aEFuaW1hdGVkKCkgeyByZXR1cm4gbV93aWR0aDsgfQor
ICAgIFNWR0FuaW1hdGVkTGVuZ3RoJiBoZWlnaHRBbmltYXRlZCgpIHsgcmV0dXJuIG1faGVpZ2h0
OyB9CiAgICAgUmVmUHRyPFNWR0FuaW1hdGVkRW51bWVyYXRpb24+IG1hc2tVbml0c0FuaW1hdGVk
KCkgeyByZXR1cm4gbV9tYXNrVW5pdHMuYW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25lclBy
b3h5KCkpOyB9CiAgICAgUmVmUHRyPFNWR0FuaW1hdGVkRW51bWVyYXRpb24+IG1hc2tDb250ZW50
VW5pdHNBbmltYXRlZCgpIHsgcmV0dXJuIG1fbWFza0NvbnRlbnRVbml0cy5hbmltYXRlZFByb3Bl
cnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KIApAQCAtNjAsNyArNTksNiBAQCBwcml2YXRl
OgogICAgIHVzaW5nIFByb3BlcnR5UmVnaXN0cnkgPSBTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk8
U1ZHTWFza0VsZW1lbnQsIFNWR0VsZW1lbnQsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQs
IFNWR1Rlc3RzPjsKICAgICBjb25zdCBTVkdQcm9wZXJ0eVJlZ2lzdHJ5JiBwcm9wZXJ0eVJlZ2lz
dHJ5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wcm9wZXJ0eVJlZ2lzdHJ5OyB9CiAKLSAgICBz
dGF0aWMgYm9vbCBpc0FuaW1hdGVkTGVuZ3RoQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IGF0dHJpYnV0ZU5hbWUpIHsgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmlzQW5pbWF0ZWRM
ZW5ndGhBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7IH0KICAgICBzdGF0aWMgYm9vbCBpc0tub3du
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCiAgICAgewogICAg
ICAgICByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1
dGVOYW1lKSB8fCBQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5h
bWUpOwpAQCAtNzgsMTAgKzc2LDEwIEBAIHByaXZhdGU6CiAKICAgICBBdHRyaWJ1dGVPd25lclBy
b3h5IG1fYXR0cmlidXRlT3duZXJQcm94eSB7ICp0aGlzIH07CiAgICAgUHJvcGVydHlSZWdpc3Ry
eSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwotICAgIFNWR0FuaW1hdGVkTGVuZ3RoQXR0
cmlidXRlIG1feCB7IExlbmd0aE1vZGVXaWR0aCwgIi0xMCUiIH07Ci0gICAgU1ZHQW5pbWF0ZWRM
ZW5ndGhBdHRyaWJ1dGUgbV95IHsgTGVuZ3RoTW9kZUhlaWdodCwgIi0xMCUiIH07Ci0gICAgU1ZH
QW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUgbV93aWR0aCB7IExlbmd0aE1vZGVXaWR0aCwgIjEyMCUi
IH07Ci0gICAgU1ZHQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUgbV9oZWlnaHQgeyBMZW5ndGhNb2Rl
SGVpZ2h0LCAiMTIwJSIgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feCB7IFNWR0Fu
aW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZVdpZHRoLCAiLTEwJSIpIH07Cisg
ICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3kgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRl
KHRoaXMsIExlbmd0aE1vZGVIZWlnaHQsICItMTAlIikgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRM
ZW5ndGg+IG1fd2lkdGggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1v
ZGVXaWR0aCwgIjEyMCUiKSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV9oZWlnaHQg
eyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQsICIxMjAl
IikgfTsKICAgICBTVkdBbmltYXRlZEVudW1lcmF0aW9uQXR0cmlidXRlPFNWR1VuaXRUeXBlczo6
U1ZHVW5pdFR5cGU+IG1fbWFza1VuaXRzIHsgU1ZHVW5pdFR5cGVzOjpTVkdfVU5JVF9UWVBFX09C
SkVDVEJPVU5ESU5HQk9YIH07CiAgICAgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbkF0dHJpYnV0ZTxT
VkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlPiBtX21hc2tDb250ZW50VW5pdHMgeyBTVkdVbml0VHlw
ZXM6OlNWR19VTklUX1RZUEVfVVNFUlNQQUNFT05VU0UgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1BhdHRlcm5FbGVtZW50LmNwcAppbmRleCA3MDBmMjZiNmExYTQyMDRlMTE2NjVmNGJkZmU0
YjQ1YTM2NjFjMThkLi5iZjczNGYwMTdkNGFlODQxNzAxNDJhYjQ4NWQyY2IzNGY5OGY3MTM4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHAKQEAgLTMsNyArMyw3IEBA
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcgUm9iIEJ1aXMgPGJ1aXNA
a2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAx
MC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxNCBBZG9iZSBTeXN0
ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykg
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICog
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKQEAgLTU0LDYgKzU0LDE0IEBAIGlubGluZSBTVkdQYXR0ZXJuRWxlbWVudDo6U1ZHUGF0dGVy
bkVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lCiB7CiAgICAgQVNT
RVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OnBhdHRlcm5UYWcpKTsKICAgICByZWdpc3RlckF0dHJp
YnV0ZXMoKTsKKyAgICAKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CisgICAg
c3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKKyAgICAgICAgUHJvcGVydHlSZWdpc3RyeTo6
cmVnaXN0ZXJQcm9wZXJ0eTxTVkdOYW1lczo6eEF0dHIsICZTVkdQYXR0ZXJuRWxlbWVudDo6bV94
PigpOworICAgICAgICBQcm9wZXJ0eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5PFNWR05hbWVz
Ojp5QXR0ciwgJlNWR1BhdHRlcm5FbGVtZW50OjptX3k+KCk7CisgICAgICAgIFByb3BlcnR5UmVn
aXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6OndpZHRoQXR0ciwgJlNWR1BhdHRlcm5F
bGVtZW50OjptX3dpZHRoPigpOworICAgICAgICBQcm9wZXJ0eVJlZ2lzdHJ5OjpyZWdpc3RlclBy
b3BlcnR5PFNWR05hbWVzOjpoZWlnaHRBdHRyLCAmU1ZHUGF0dGVybkVsZW1lbnQ6Om1faGVpZ2h0
PigpOworICAgIH0pOwogfQogCiBSZWY8U1ZHUGF0dGVybkVsZW1lbnQ+IFNWR1BhdHRlcm5FbGVt
ZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3Vt
ZW50KQpAQCAtNjYsMTAgKzc0LDYgQEAgdm9pZCBTVkdQYXR0ZXJuRWxlbWVudDo6cmVnaXN0ZXJB
dHRyaWJ1dGVzKCkKICAgICBhdXRvJiByZWdpc3RyeSA9IGF0dHJpYnV0ZVJlZ2lzdHJ5KCk7CiAg
ICAgaWYgKCFyZWdpc3RyeS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKLSAgICByZWdpc3Ry
eS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1lczo6eEF0dHIsICZTVkdQYXR0ZXJuRWxlbWVudDo6
bV94PigpOwotICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjp5QXR0ciwg
JlNWR1BhdHRlcm5FbGVtZW50OjptX3k+KCk7Ci0gICAgcmVnaXN0cnkucmVnaXN0ZXJBdHRyaWJ1
dGU8U1ZHTmFtZXM6OndpZHRoQXR0ciwgJlNWR1BhdHRlcm5FbGVtZW50OjptX3dpZHRoPigpOwot
ICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjpoZWlnaHRBdHRyLCAmU1ZH
UGF0dGVybkVsZW1lbnQ6Om1faGVpZ2h0PigpOwogICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmli
dXRlPFNWR05hbWVzOjpwYXR0ZXJuVW5pdHNBdHRyLCBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBl
LCAmU1ZHUGF0dGVybkVsZW1lbnQ6Om1fcGF0dGVyblVuaXRzPigpOwogICAgIHJlZ2lzdHJ5LnJl
Z2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjpwYXR0ZXJuQ29udGVudFVuaXRzQXR0ciwgU1ZHVW5p
dFR5cGVzOjpTVkdVbml0VHlwZSwgJlNWR1BhdHRlcm5FbGVtZW50OjptX3BhdHRlcm5Db250ZW50
VW5pdHM+KCk7CiAgICAgcmVnaXN0cnkucmVnaXN0ZXJBdHRyaWJ1dGU8U1ZHTmFtZXM6OnBhdHRl
cm5UcmFuc2Zvcm1BdHRyLCAmU1ZHUGF0dGVybkVsZW1lbnQ6Om1fcGF0dGVyblRyYW5zZm9ybT4o
KTsKQEAgLTEwMCwxMyArMTA0LDEzIEBAIHZvaWQgU1ZHUGF0dGVybkVsZW1lbnQ6OnBhcnNlQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0CiAgICAgU1ZH
UGFyc2luZ0Vycm9yIHBhcnNlRXJyb3IgPSBOb0Vycm9yOwogCiAgICAgaWYgKG5hbWUgPT0gU1ZH
TmFtZXM6OnhBdHRyKQotICAgICAgICBtX3guc2V0VmFsdWUoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0
cnVjdChMZW5ndGhNb2RlV2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yKSk7CisgICAgICAgIG1feC0+
c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZVdp
ZHRoLCB2YWx1ZSwgcGFyc2VFcnJvcikpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6
OnlBdHRyKQotICAgICAgICBtX3kuc2V0VmFsdWUoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChM
ZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAgICAgICBtX3ktPnNldEJh
c2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVIZWlnaHQs
IHZhbHVlLCBwYXJzZUVycm9yKSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6d2lk
dGhBdHRyKQotICAgICAgICBtX3dpZHRoLnNldFZhbHVlKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1
Y3QoTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvciwgRm9yYmlkTmVnYXRpdmVMZW5n
dGhzKSk7CisgICAgICAgIG1fd2lkdGgtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1
ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IsIEZvcmJpZE5l
Z2F0aXZlTGVuZ3RocykpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OmhlaWdodEF0
dHIpCi0gICAgICAgIG1faGVpZ2h0LnNldFZhbHVlKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3Qo
TGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3IsIEZvcmJpZE5lZ2F0aXZlTGVuZ3Ro
cykpOworICAgICAgICBtX2hlaWdodC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVl
Ojpjb25zdHJ1Y3QoTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3IsIEZvcmJpZE5l
Z2F0aXZlTGVuZ3RocykpOwogCiAgICAgcmVwb3J0QXR0cmlidXRlUGFyc2luZ0Vycm9yKHBhcnNl
RXJyb3IsIG5hbWUsIHZhbHVlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1BhdHRlcm5FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQu
aAppbmRleCAzMjE0YWI1NjVhMjAyMjc4ZDRmYmRmMjRkNmYyNjU3MzQ0NDNkOWM1Li43ZGU4MTk5
NzdjOTFiMTA5ZWQ4YmQzNGRiOGFmYjA4M2FhN2MyY2IzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
UGF0dGVybkVsZW1lbnQuaApAQCAtMjIsNyArMjIsNiBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNs
dWRlICJTVkdBbmltYXRlZEVudW1lcmF0aW9uLmgiCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRMZW5n
dGguaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3QuaCIKICNpbmNsdWRlICJT
VkdFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5oIgpA
QCAtNDUsMTggKzQ0LDE4IEBAIHB1YmxpYzoKIAogICAgIEFmZmluZVRyYW5zZm9ybSBsb2NhbENv
b3JkaW5hdGVTcGFjZVRyYW5zZm9ybShTVkdMb2NhdGFibGU6OkNUTVNjb3BlKSBjb25zdCBmaW5h
bDsKIAotICAgIGNvbnN0IFNWR0xlbmd0aFZhbHVlJiB4KCkgY29uc3QgeyByZXR1cm4gbV94LmN1
cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9Ci0gICAgY29uc3QgU1ZHTGVuZ3Ro
VmFsdWUmIHkoKSBjb25zdCB7IHJldHVybiBtX3kuY3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVy
UHJveHkoKSk7IH0KLSAgICBjb25zdCBTVkdMZW5ndGhWYWx1ZSYgd2lkdGgoKSBjb25zdCB7IHJl
dHVybiBtX3dpZHRoLmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9Ci0gICAg
Y29uc3QgU1ZHTGVuZ3RoVmFsdWUmIGhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1faGVpZ2h0LmN1
cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CisgICAgY29uc3QgU1ZHTGVuZ3Ro
VmFsdWUmIHgoKSBjb25zdCB7IHJldHVybiBtX3gtPmN1cnJlbnRWYWx1ZSgpOyB9CisgICAgY29u
c3QgU1ZHTGVuZ3RoVmFsdWUmIHkoKSBjb25zdCB7IHJldHVybiBtX3ktPmN1cnJlbnRWYWx1ZSgp
OyB9CisgICAgY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIHdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV93
aWR0aC0+Y3VycmVudFZhbHVlKCk7IH0KKyAgICBjb25zdCBTVkdMZW5ndGhWYWx1ZSYgaGVpZ2h0
KCkgY29uc3QgeyByZXR1cm4gbV9oZWlnaHQtPmN1cnJlbnRWYWx1ZSgpOyB9CiAgICAgU1ZHVW5p
dFR5cGVzOjpTVkdVbml0VHlwZSBwYXR0ZXJuVW5pdHMoKSBjb25zdCB7IHJldHVybiBtX3BhdHRl
cm5Vbml0cy5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQogICAgIFNWR1Vu
aXRUeXBlczo6U1ZHVW5pdFR5cGUgcGF0dGVybkNvbnRlbnRVbml0cygpIGNvbnN0IHsgcmV0dXJu
IG1fcGF0dGVybkNvbnRlbnRVbml0cy5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgp
KTsgfQogICAgIGNvbnN0IFNWR1RyYW5zZm9ybUxpc3RWYWx1ZXMmIHBhdHRlcm5UcmFuc2Zvcm0o
KSBjb25zdCB7IHJldHVybiBtX3BhdHRlcm5UcmFuc2Zvcm0uY3VycmVudFZhbHVlKGF0dHJpYnV0
ZU93bmVyUHJveHkoKSk7IH0KIAotICAgIFJlZlB0cjxTVkdBbmltYXRlZExlbmd0aD4geEFuaW1h
dGVkKCkgeyByZXR1cm4gbV94LmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgp
KTsgfQotICAgIFJlZlB0cjxTVkdBbmltYXRlZExlbmd0aD4geUFuaW1hdGVkKCkgeyByZXR1cm4g
bV95LmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAgIFJlZlB0
cjxTVkdBbmltYXRlZExlbmd0aD4gd2lkdGhBbmltYXRlZCgpIHsgcmV0dXJuIG1fd2lkdGguYW5p
bWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9Ci0gICAgUmVmUHRyPFNWR0Fu
aW1hdGVkTGVuZ3RoPiBoZWlnaHRBbmltYXRlZCgpIHsgcmV0dXJuIG1faGVpZ2h0LmFuaW1hdGVk
UHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQorICAgIFNWR0FuaW1hdGVkTGVuZ3Ro
JiB4QW5pbWF0ZWQoKSB7IHJldHVybiBtX3g7IH0KKyAgICBTVkdBbmltYXRlZExlbmd0aCYgeUFu
aW1hdGVkKCkgeyByZXR1cm4gbV95OyB9CisgICAgU1ZHQW5pbWF0ZWRMZW5ndGgmIHdpZHRoQW5p
bWF0ZWQoKSB7IHJldHVybiBtX3dpZHRoOyB9CisgICAgU1ZHQW5pbWF0ZWRMZW5ndGgmIGhlaWdo
dEFuaW1hdGVkKCkgeyByZXR1cm4gbV9oZWlnaHQ7IH0KICAgICBSZWZQdHI8U1ZHQW5pbWF0ZWRF
bnVtZXJhdGlvbj4gcGF0dGVyblVuaXRzQW5pbWF0ZWQoKSB7IHJldHVybiBtX3BhdHRlcm5Vbml0
cy5hbmltYXRlZFByb3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KICAgICBSZWZQdHI8
U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbj4gcGF0dGVybkNvbnRlbnRVbml0c0FuaW1hdGVkKCkgeyBy
ZXR1cm4gbV9wYXR0ZXJuQ29udGVudFVuaXRzLmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3du
ZXJQcm94eSgpKTsgfQogICAgIFJlZlB0cjxTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3Q+IHBhdHRl
cm5UcmFuc2Zvcm1BbmltYXRlZCgpIHsgcmV0dXJuIG1fcGF0dGVyblRyYW5zZm9ybS5hbmltYXRl
ZFByb3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KQEAgLTkwLDEwICs4OSwxMCBAQCBw
cml2YXRlOgogCiAgICAgQXR0cmlidXRlT3duZXJQcm94eSBtX2F0dHJpYnV0ZU93bmVyUHJveHkg
eyAqdGhpcyB9OwogICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRo
aXMgfTsKLSAgICBTVkdBbmltYXRlZExlbmd0aEF0dHJpYnV0ZSBtX3ggeyBMZW5ndGhNb2RlV2lk
dGggfTsKLSAgICBTVkdBbmltYXRlZExlbmd0aEF0dHJpYnV0ZSBtX3kgeyBMZW5ndGhNb2RlSGVp
Z2h0IH07Ci0gICAgU1ZHQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUgbV93aWR0aCB7IExlbmd0aE1v
ZGVXaWR0aCB9OwotICAgIFNWR0FuaW1hdGVkTGVuZ3RoQXR0cmlidXRlIG1faGVpZ2h0IHsgTGVu
Z3RoTW9kZUhlaWdodCB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV94IHsgU1ZHQW5p
bWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlV2lkdGgpIH07CisgICAgUmVmPFNW
R0FuaW1hdGVkTGVuZ3RoPiBtX3kgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExl
bmd0aE1vZGVIZWlnaHQpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3dpZHRoIHsg
U1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlV2lkdGgpIH07CisgICAg
UmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX2hlaWdodCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVh
dGUodGhpcywgTGVuZ3RoTW9kZUhlaWdodCkgfTsKICAgICBTVkdBbmltYXRlZEVudW1lcmF0aW9u
QXR0cmlidXRlPFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGU+IG1fcGF0dGVyblVuaXRzIHsgU1ZH
VW5pdFR5cGVzOjpTVkdfVU5JVF9UWVBFX09CSkVDVEJPVU5ESU5HQk9YIH07CiAgICAgU1ZHQW5p
bWF0ZWRFbnVtZXJhdGlvbkF0dHJpYnV0ZTxTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlPiBtX3Bh
dHRlcm5Db250ZW50VW5pdHMgeyBTVkdVbml0VHlwZXM6OlNWR19VTklUX1RZUEVfVVNFUlNQQUNF
T05VU0UgfTsKICAgICBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RBdHRyaWJ1dGUgbV9wYXR0ZXJu
VHJhbnNmb3JtOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvaW50LmggYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9pbnQuaAppbmRleCA1MjY1MjliZGE2ZDg3ZGNmYzUzNTc5
MWViZDVmYjMwMGJkNDg3ZTU4Li4yZGQ1ZTJlYjM4ZTAwN2UxYWQ1ZThmYTJkYTJhOWRkNjY3NDdj
NTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9pbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHUG9pbnQuaApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAi
RmxvYXRQb2ludC5oIgogI2luY2x1ZGUgIlNWR01hdHJpeC5oIgorI2luY2x1ZGUgIlNWR1Byb3Bl
cnR5VHJhaXRzLmgiCiAjaW5jbHVkZSAiU1ZHVmFsdWVQcm9wZXJ0eS5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmFkaWFsR3JhZGll
bnRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1l
bnQuY3BwCmluZGV4IGI4OGRkNTZiYmQwOWU3N2JkZjlkNDdlNDgzNGRiOTk3ZThhNWM2YTYuLjJi
NmE4OTNmYjY4NWJmNWYzZDM4OWIwZDU4NjA5MGZjMmE5MmQyNzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwCkBAIC00LDcgKzQsNyBAQAog
ICogQ29weXJpZ2h0IChDKSAyMDA4IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+CiAgKiBD
b3B5cmlnaHQgKEMpIDIwMDggRGlyayBTY2h1bHplIDxrcml0QHdlYmtpdC5vcmc+CiAgKiBDb3B5
cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTAuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC00NCw3ICs0NCwxNiBAQCBpbmxpbmUgU1ZH
UmFkaWFsR3JhZGllbnRFbGVtZW50OjpTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdAogewogICAgIC8vIFNwZWM6IElmIHRoZSBjeC9jeS9yL2ZyIGF0dHJpYnV0
ZSBpcyBub3Qgc3BlY2lmaWVkLCB0aGUgZWZmZWN0IGlzIGFzIGlmIGEgdmFsdWUgb2YgIjUwJSIg
d2VyZSBzcGVjaWZpZWQuCiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OnJhZGlhbEdy
YWRpZW50VGFnKSk7Ci0gICAgcmVnaXN0ZXJBdHRyaWJ1dGVzKCk7CisKKyAgICBzdGF0aWMgc3Rk
OjpvbmNlX2ZsYWcgb25jZUZsYWc7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsK
KyAgICAgICAgUHJvcGVydHlSZWdpc3RyeTo6cmVnaXN0ZXJQcm9wZXJ0eTxTVkdOYW1lczo6Y3hB
dHRyLCAmU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50OjptX2N4PigpOworICAgICAgICBQcm9wZXJ0
eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5PFNWR05hbWVzOjpjeUF0dHIsICZTVkdSYWRpYWxH
cmFkaWVudEVsZW1lbnQ6Om1fY3k+KCk7CisgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lz
dGVyUHJvcGVydHk8U1ZHTmFtZXM6OnJBdHRyLCAmU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50Ojpt
X3I+KCk7CisgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFt
ZXM6OmZ4QXR0ciwgJlNWR1JhZGlhbEdyYWRpZW50RWxlbWVudDo6bV9meD4oKTsKKyAgICAgICAg
UHJvcGVydHlSZWdpc3RyeTo6cmVnaXN0ZXJQcm9wZXJ0eTxTVkdOYW1lczo6ZnlBdHRyLCAmU1ZH
UmFkaWFsR3JhZGllbnRFbGVtZW50OjptX2Z5PigpOworICAgICAgICBQcm9wZXJ0eVJlZ2lzdHJ5
OjpyZWdpc3RlclByb3BlcnR5PFNWR05hbWVzOjpmckF0dHIsICZTVkdSYWRpYWxHcmFkaWVudEVs
ZW1lbnQ6Om1fZnI+KCk7CisgICAgfSk7CiB9CiAKIFJlZjxTVkdSYWRpYWxHcmFkaWVudEVsZW1l
bnQ+IFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKQEAgLTUyLDM1ICs2MSwyMiBAQCBSZWY8U1ZH
UmFkaWFsR3JhZGllbnRFbGVtZW50PiBTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ6OmNyZWF0ZShj
b25zdCBRdWFsaWZpZWROYQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNWR1JhZGlhbEdyYWRp
ZW50RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQogCi12b2lkIFNWR1JhZGlhbEdyYWRp
ZW50RWxlbWVudDo6cmVnaXN0ZXJBdHRyaWJ1dGVzKCkKLXsKLSAgICBhdXRvJiByZWdpc3RyeSA9
IGF0dHJpYnV0ZVJlZ2lzdHJ5KCk7Ci0gICAgaWYgKCFyZWdpc3RyeS5pc0VtcHR5KCkpCi0gICAg
ICAgIHJldHVybjsKLSAgICByZWdpc3RyeS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1lczo6Y3hB
dHRyLCAmU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50OjptX2N4PigpOwotICAgIHJlZ2lzdHJ5LnJl
Z2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjpjeUF0dHIsICZTVkdSYWRpYWxHcmFkaWVudEVsZW1l
bnQ6Om1fY3k+KCk7Ci0gICAgcmVnaXN0cnkucmVnaXN0ZXJBdHRyaWJ1dGU8U1ZHTmFtZXM6OnJB
dHRyLCAmU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50OjptX3I+KCk7Ci0gICAgcmVnaXN0cnkucmVn
aXN0ZXJBdHRyaWJ1dGU8U1ZHTmFtZXM6OmZ4QXR0ciwgJlNWR1JhZGlhbEdyYWRpZW50RWxlbWVu
dDo6bV9meD4oKTsKLSAgICByZWdpc3RyeS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1lczo6ZnlB
dHRyLCAmU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50OjptX2Z5PigpOwotICAgIHJlZ2lzdHJ5LnJl
Z2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjpmckF0dHIsICZTVkdSYWRpYWxHcmFkaWVudEVsZW1l
bnQ6Om1fZnI+KCk7Ci19Ci0KIHZvaWQgU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50OjpwYXJzZUF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZh
bHVlKQogewogICAgIFNWR1BhcnNpbmdFcnJvciBwYXJzZUVycm9yID0gTm9FcnJvcjsKIAogICAg
IGlmIChuYW1lID09IFNWR05hbWVzOjpjeEF0dHIpCi0gICAgICAgIG1fY3guc2V0VmFsdWUoU1ZH
TGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlV2lkdGgsIHZhbHVlLCBwYXJzZUVycm9y
KSk7CisgICAgICAgIG1fY3gtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29u
c3RydWN0KExlbmd0aE1vZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKICAgICBlbHNlIGlm
IChuYW1lID09IFNWR05hbWVzOjpjeUF0dHIpCi0gICAgICAgIG1fY3kuc2V0VmFsdWUoU1ZHTGVu
Z3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikp
OworICAgICAgICBtX2N5LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0
cnVjdChMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikpOwogICAgIGVsc2UgaWYg
KG5hbWUgPT0gU1ZHTmFtZXM6OnJBdHRyKQotICAgICAgICBtX3Iuc2V0VmFsdWUoU1ZHTGVuZ3Ro
VmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlT3RoZXIsIHZhbHVlLCBwYXJzZUVycm9yLCBGb3Ji
aWROZWdhdGl2ZUxlbmd0aHMpKTsKKyAgICAgICAgbV9yLT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZH
TGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlT3RoZXIsIHZhbHVlLCBwYXJzZUVycm9y
LCBGb3JiaWROZWdhdGl2ZUxlbmd0aHMpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVz
OjpmeEF0dHIpCi0gICAgICAgIG1fZnguc2V0VmFsdWUoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVj
dChMZW5ndGhNb2RlV2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yKSk7CisgICAgICAgIG1fZngtPnNl
dEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVXaWR0
aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjpm
eUF0dHIpCi0gICAgICAgIG1fZnkuc2V0VmFsdWUoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChM
ZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAgICAgICBtX2Z5LT5zZXRC
YXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlSGVpZ2h0
LCB2YWx1ZSwgcGFyc2VFcnJvcikpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OmZy
QXR0cikKLSAgICAgICAgbV9mci5zZXRWYWx1ZShTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExl
bmd0aE1vZGVPdGhlciwgdmFsdWUsIHBhcnNlRXJyb3IsIEZvcmJpZE5lZ2F0aXZlTGVuZ3Rocykp
OworICAgICAgICBtX2ZyLT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0
cnVjdChMZW5ndGhNb2RlT3RoZXIsIHZhbHVlLCBwYXJzZUVycm9yLCBGb3JiaWROZWdhdGl2ZUxl
bmd0aHMpKTsKIAogICAgIHJlcG9ydEF0dHJpYnV0ZVBhcnNpbmdFcnJvcihwYXJzZUVycm9yLCBu
YW1lLCB2YWx1ZSk7CiAKQEAgLTg5LDcgKzg1LDcgQEAgdm9pZCBTVkdSYWRpYWxHcmFkaWVudEVs
ZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEEK
IAogdm9pZCBTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29u
c3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7Ci0gICAgaWYgKGlzS25vd25BdHRyaWJ1dGUo
YXR0ck5hbWUpKSB7CisgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUo
YXR0ck5hbWUpKSB7CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRo
aXMpOwogICAgICAgICB1cGRhdGVSZWxhdGl2ZUxlbmd0aHNJbmZvcm1hdGlvbigpOwogICAgICAg
ICBpZiAoUmVuZGVyT2JqZWN0KiBvYmplY3QgPSByZW5kZXJlcigpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5oCmluZGV4IDU0ZThlMWM0ZjFkZDNmOWJi
MzViMGQwYjk3MGViMWFiYzMyZDFjNzAuLjY4NWYxYmE5ZjNkODRhOTIwOWQyZjkwZjRkZDdkYTgw
MDI0YzBmNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVu
dEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVt
ZW50LmgKQEAgLTIxLDcgKzIxLDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJTVkdB
bmltYXRlZExlbmd0aC5oIgogI2luY2x1ZGUgIlNWR0dyYWRpZW50RWxlbWVudC5oIgogI2luY2x1
ZGUgIlNWR05hbWVzLmgiCiAKQEAgLTM2LDI2ICszNSwyNCBAQCBwdWJsaWM6CiAKICAgICBib29s
IGNvbGxlY3RHcmFkaWVudEF0dHJpYnV0ZXMoUmFkaWFsR3JhZGllbnRBdHRyaWJ1dGVzJik7CiAK
LSAgICBjb25zdCBTVkdMZW5ndGhWYWx1ZSYgY3goKSBjb25zdCB7IHJldHVybiBtX2N4LmN1cnJl
bnRWYWx1ZShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9Ci0gICAgY29uc3QgU1ZHTGVuZ3RoVmFs
dWUmIGN5KCkgY29uc3QgeyByZXR1cm4gbV9jeS5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQ
cm94eSgpKTsgfQotICAgIGNvbnN0IFNWR0xlbmd0aFZhbHVlJiByKCkgY29uc3QgeyByZXR1cm4g
bV9yLmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9Ci0gICAgY29uc3QgU1ZH
TGVuZ3RoVmFsdWUmIGZ4KCkgY29uc3QgeyByZXR1cm4gbV9meC5jdXJyZW50VmFsdWUoYXR0cmli
dXRlT3duZXJQcm94eSgpKTsgfQotICAgIGNvbnN0IFNWR0xlbmd0aFZhbHVlJiBmeSgpIGNvbnN0
IHsgcmV0dXJuIG1fZnkuY3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAg
ICBjb25zdCBTVkdMZW5ndGhWYWx1ZSYgZnIoKSBjb25zdCB7IHJldHVybiBtX2ZyLmN1cnJlbnRW
YWx1ZShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CisgICAgY29uc3QgU1ZHTGVuZ3RoVmFsdWUm
IGN4KCkgY29uc3QgeyByZXR1cm4gbV9jeC0+Y3VycmVudFZhbHVlKCk7IH0KKyAgICBjb25zdCBT
VkdMZW5ndGhWYWx1ZSYgY3koKSBjb25zdCB7IHJldHVybiBtX2N5LT5jdXJyZW50VmFsdWUoKTsg
fQorICAgIGNvbnN0IFNWR0xlbmd0aFZhbHVlJiByKCkgY29uc3QgeyByZXR1cm4gbV9yLT5jdXJy
ZW50VmFsdWUoKTsgfQorICAgIGNvbnN0IFNWR0xlbmd0aFZhbHVlJiBmeCgpIGNvbnN0IHsgcmV0
dXJuIG1fZngtPmN1cnJlbnRWYWx1ZSgpOyB9CisgICAgY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIGZ5
KCkgY29uc3QgeyByZXR1cm4gbV9meS0+Y3VycmVudFZhbHVlKCk7IH0KKyAgICBjb25zdCBTVkdM
ZW5ndGhWYWx1ZSYgZnIoKSBjb25zdCB7IHJldHVybiBtX2ZyLT5jdXJyZW50VmFsdWUoKTsgfQog
Ci0gICAgUmVmUHRyPFNWR0FuaW1hdGVkTGVuZ3RoPiBjeEFuaW1hdGVkKCkgeyByZXR1cm4gbV9j
eC5hbmltYXRlZFByb3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBSZWZQdHI8
U1ZHQW5pbWF0ZWRMZW5ndGg+IGN5QW5pbWF0ZWQoKSB7IHJldHVybiBtX2N5LmFuaW1hdGVkUHJv
cGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAgIFJlZlB0cjxTVkdBbmltYXRlZExl
bmd0aD4gckFuaW1hdGVkKCkgeyByZXR1cm4gbV9yLmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRl
T3duZXJQcm94eSgpKTsgfQotICAgIFJlZlB0cjxTVkdBbmltYXRlZExlbmd0aD4gZnhBbmltYXRl
ZCgpIHsgcmV0dXJuIG1fZnguYW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkp
OyB9Ci0gICAgUmVmUHRyPFNWR0FuaW1hdGVkTGVuZ3RoPiBmeUFuaW1hdGVkKCkgeyByZXR1cm4g
bV9meS5hbmltYXRlZFByb3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBSZWZQ
dHI8U1ZHQW5pbWF0ZWRMZW5ndGg+IGZyQW5pbWF0ZWQoKSB7IHJldHVybiBtX2ZyLmFuaW1hdGVk
UHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQorICAgIFNWR0FuaW1hdGVkTGVuZ3Ro
JiBjeEFuaW1hdGVkKCkgeyByZXR1cm4gbV9jeDsgfQorICAgIFNWR0FuaW1hdGVkTGVuZ3RoJiBj
eUFuaW1hdGVkKCkgeyByZXR1cm4gbV9jeTsgfQorICAgIFNWR0FuaW1hdGVkTGVuZ3RoJiByQW5p
bWF0ZWQoKSB7IHJldHVybiBtX3I7IH0KKyAgICBTVkdBbmltYXRlZExlbmd0aCYgZnhBbmltYXRl
ZCgpIHsgcmV0dXJuIG1fZng7IH0KKyAgICBTVkdBbmltYXRlZExlbmd0aCYgZnlBbmltYXRlZCgp
IHsgcmV0dXJuIG1fZnk7IH0KKyAgICBTVkdBbmltYXRlZExlbmd0aCYgZnJBbmltYXRlZCgpIHsg
cmV0dXJuIG1fZnI7IH0KIAogcHJpdmF0ZToKICAgICBTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKICAgICB1c2luZyBBdHRyaWJ1dGVP
d25lclByb3h5ID0gU1ZHQXR0cmlidXRlT3duZXJQcm94eUltcGw8U1ZHUmFkaWFsR3JhZGllbnRF
bGVtZW50LCBTVkdHcmFkaWVudEVsZW1lbnQ+OwotICAgIHN0YXRpYyBBdHRyaWJ1dGVPd25lclBy
b3h5OjpBdHRyaWJ1dGVSZWdpc3RyeSYgYXR0cmlidXRlUmVnaXN0cnkoKSB7IHJldHVybiBBdHRy
aWJ1dGVPd25lclByb3h5OjphdHRyaWJ1dGVSZWdpc3RyeSgpOyB9Ci0gICAgc3RhdGljIHZvaWQg
cmVnaXN0ZXJBdHRyaWJ1dGVzKCk7CiAgICAgY29uc3QgU1ZHQXR0cmlidXRlT3duZXJQcm94eSYg
YXR0cmlidXRlT3duZXJQcm94eSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYXR0cmlidXRlT3du
ZXJQcm94eTsgfQogICAgIAogICAgIHVzaW5nIFByb3BlcnR5UmVnaXN0cnkgPSBTVkdQcm9wZXJ0
eU93bmVyUmVnaXN0cnk8U1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LCBTVkdHcmFkaWVudEVsZW1l
bnQ+OwpAQCAtNzAsMTIgKzY3LDEyIEBAIHByaXZhdGU6CiAKICAgICBBdHRyaWJ1dGVPd25lclBy
b3h5IG1fYXR0cmlidXRlT3duZXJQcm94eSB7ICp0aGlzIH07CiAgICAgUHJvcGVydHlSZWdpc3Ry
eSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwotICAgIFNWR0FuaW1hdGVkTGVuZ3RoQXR0
cmlidXRlIG1fY3ggeyBMZW5ndGhNb2RlV2lkdGgsICI1MCUiIH07Ci0gICAgU1ZHQW5pbWF0ZWRM
ZW5ndGhBdHRyaWJ1dGUgbV9jeSB7IExlbmd0aE1vZGVIZWlnaHQsICI1MCUiIH07Ci0gICAgU1ZH
QW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUgbV9yIHsgTGVuZ3RoTW9kZU90aGVyLCAiNTAlIiB9Owot
ICAgIFNWR0FuaW1hdGVkTGVuZ3RoQXR0cmlidXRlIG1fZnggeyBMZW5ndGhNb2RlV2lkdGggfTsK
LSAgICBTVkdBbmltYXRlZExlbmd0aEF0dHJpYnV0ZSBtX2Z5IHsgTGVuZ3RoTW9kZUhlaWdodCB9
OwotICAgIFNWR0FuaW1hdGVkTGVuZ3RoQXR0cmlidXRlIG1fZnIgeyBMZW5ndGhNb2RlT3RoZXIs
ICIwJSIgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fY3ggeyBTVkdBbmltYXRlZExl
bmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVXaWR0aCwgIjUwJSIpIH07CisgICAgUmVmPFNW
R0FuaW1hdGVkTGVuZ3RoPiBtX2N5IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBM
ZW5ndGhNb2RlSGVpZ2h0LCAiNTAlIikgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1f
ciB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZU90aGVyLCAiNTAl
IikgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fZnggeyBTVkdBbmltYXRlZExlbmd0
aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVXaWR0aCkgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRM
ZW5ndGg+IG1fZnkgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVI
ZWlnaHQpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX2ZyIHsgU1ZHQW5pbWF0ZWRM
ZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlT3RoZXIsICIwJSIpIH07CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmVj
dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JlY3RFbGVtZW50LmNwcAppbmRl
eCBjZmRmMTk2ZDAzNTE5MTA5MmQyMDNkNmIxZjZkYTg4ZDQyMmQwYTFmLi40ZTE0Y2M2ZDc5ODhm
NWI4NjJiYTVmYTgxMjIzZWFjYmM4YTBkYTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHUmVjdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSZWN0RWxl
bWVudC5jcHAKQEAgLTIsNyArMiw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIw
MDYsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgKiBDb3B5
cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4K
ICAqIENvcHlyaWdodCAoQykgMjAxNCBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTM2LDcgKzM2LDE2IEBAIGlu
bGluZSBTVkdSZWN0RWxlbWVudDo6U1ZHUmVjdEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmFtZSwgRG9jdW1lbnQmIGRvCiAgICAgLCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
KHRoaXMpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OnJlY3RUYWcpKTsKLSAg
ICByZWdpc3RlckF0dHJpYnV0ZXMoKTsKKworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNl
RmxhZzsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10geworICAgICAgICBQcm9wZXJ0
eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5PFNWR05hbWVzOjp4QXR0ciwgJlNWR1JlY3RFbGVt
ZW50OjptX3g+KCk7CisgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8
U1ZHTmFtZXM6OnlBdHRyLCAmU1ZHUmVjdEVsZW1lbnQ6Om1feT4oKTsKKyAgICAgICAgUHJvcGVy
dHlSZWdpc3RyeTo6cmVnaXN0ZXJQcm9wZXJ0eTxTVkdOYW1lczo6d2lkdGhBdHRyLCAmU1ZHUmVj
dEVsZW1lbnQ6Om1fd2lkdGg+KCk7CisgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVy
UHJvcGVydHk8U1ZHTmFtZXM6OmhlaWdodEF0dHIsICZTVkdSZWN0RWxlbWVudDo6bV9oZWlnaHQ+
KCk7CisgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6
OnJ4QXR0ciwgJlNWR1JlY3RFbGVtZW50OjptX3J4PigpOworICAgICAgICBQcm9wZXJ0eVJlZ2lz
dHJ5OjpyZWdpc3RlclByb3BlcnR5PFNWR05hbWVzOjpyeUF0dHIsICZTVkdSZWN0RWxlbWVudDo6
bV9yeT4oKTsKKyAgICB9KTsKIH0KIAogUmVmPFNWR1JlY3RFbGVtZW50PiBTVkdSZWN0RWxlbWVu
dDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVu
dCkKQEAgLTQ0LDM1ICs1MywyMiBAQCBSZWY8U1ZHUmVjdEVsZW1lbnQ+IFNWR1JlY3RFbGVtZW50
OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbgogICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFNWR1JlY3RFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAK
LXZvaWQgU1ZHUmVjdEVsZW1lbnQ6OnJlZ2lzdGVyQXR0cmlidXRlcygpCi17Ci0gICAgYXV0byYg
cmVnaXN0cnkgPSBhdHRyaWJ1dGVSZWdpc3RyeSgpOwotICAgIGlmICghcmVnaXN0cnkuaXNFbXB0
eSgpKQotICAgICAgICByZXR1cm47Ci0gICAgcmVnaXN0cnkucmVnaXN0ZXJBdHRyaWJ1dGU8U1ZH
TmFtZXM6OnhBdHRyLCAmU1ZHUmVjdEVsZW1lbnQ6Om1feD4oKTsKLSAgICByZWdpc3RyeS5yZWdp
c3RlckF0dHJpYnV0ZTxTVkdOYW1lczo6eUF0dHIsICZTVkdSZWN0RWxlbWVudDo6bV95PigpOwot
ICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjp3aWR0aEF0dHIsICZTVkdS
ZWN0RWxlbWVudDo6bV93aWR0aD4oKTsKLSAgICByZWdpc3RyeS5yZWdpc3RlckF0dHJpYnV0ZTxT
VkdOYW1lczo6aGVpZ2h0QXR0ciwgJlNWR1JlY3RFbGVtZW50OjptX2hlaWdodD4oKTsKLSAgICBy
ZWdpc3RyeS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1lczo6cnhBdHRyLCAmU1ZHUmVjdEVsZW1l
bnQ6Om1fcng+KCk7Ci0gICAgcmVnaXN0cnkucmVnaXN0ZXJBdHRyaWJ1dGU8U1ZHTmFtZXM6OnJ5
QXR0ciwgJlNWR1JlY3RFbGVtZW50OjptX3J5PigpOwotfQotCiB2b2lkIFNWR1JlY3RFbGVtZW50
OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNT
dHJpbmcmIHZhbHVlKQogewogICAgIFNWR1BhcnNpbmdFcnJvciBwYXJzZUVycm9yID0gTm9FcnJv
cjsKIAogICAgIGlmIChuYW1lID09IFNWR05hbWVzOjp4QXR0cikKLSAgICAgICAgbV94LnNldFZh
bHVlKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSwgcGFy
c2VFcnJvcikpOworICAgICAgICBtX3gtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1
ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKICAgICBl
bHNlIGlmIChuYW1lID09IFNWR05hbWVzOjp5QXR0cikKLSAgICAgICAgbV95LnNldFZhbHVlKFNW
R0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUsIHBhcnNlRXJy
b3IpKTsKKyAgICAgICAgbV95LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNv
bnN0cnVjdChMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikpOwogICAgIGVsc2Ug
aWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnJ4QXR0cikKLSAgICAgICAgbV9yeC5zZXRWYWx1ZShTVkdM
ZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3Is
IEZvcmJpZE5lZ2F0aXZlTGVuZ3RocykpOworICAgICAgICBtX3J4LT5zZXRCYXNlVmFsSW50ZXJu
YWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlV2lkdGgsIHZhbHVlLCBwYXJz
ZUVycm9yLCBGb3JiaWROZWdhdGl2ZUxlbmd0aHMpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNW
R05hbWVzOjpyeUF0dHIpCi0gICAgICAgIG1fcnkuc2V0VmFsdWUoU1ZHTGVuZ3RoVmFsdWU6OmNv
bnN0cnVjdChMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvciwgRm9yYmlkTmVnYXRp
dmVMZW5ndGhzKSk7CisgICAgICAgIG1fcnktPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhW
YWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yLCBGb3Ji
aWROZWdhdGl2ZUxlbmd0aHMpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjp3aWR0
aEF0dHIpCi0gICAgICAgIG1fd2lkdGguc2V0VmFsdWUoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVj
dChMZW5ndGhNb2RlV2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yLCBGb3JiaWROZWdhdGl2ZUxlbmd0
aHMpKTsKKyAgICAgICAgbV93aWR0aC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVl
Ojpjb25zdHJ1Y3QoTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvciwgRm9yYmlkTmVn
YXRpdmVMZW5ndGhzKSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6aGVpZ2h0QXR0
cikKLSAgICAgICAgbV9oZWlnaHQuc2V0VmFsdWUoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChM
ZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvciwgRm9yYmlkTmVnYXRpdmVMZW5ndGhz
KSk7CisgICAgICAgIG1faGVpZ2h0LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6
OmNvbnN0cnVjdChMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvciwgRm9yYmlkTmVn
YXRpdmVMZW5ndGhzKSk7CiAKICAgICByZXBvcnRBdHRyaWJ1dGVQYXJzaW5nRXJyb3IocGFyc2VF
cnJvciwgbmFtZSwgdmFsdWUpOwogCkBAIC04Miw3ICs3OCw3IEBAIHZvaWQgU1ZHUmVjdEVsZW1l
bnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21p
Y1N0cmluCiAKIHZvaWQgU1ZHUmVjdEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7Ci0gICAgaWYgKGlzS25vd25BdHRyaWJ1dGUoYXR0
ck5hbWUpKSB7CisgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0
ck5hbWUpKSB7CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMp
OwogICAgICAgICBpbnZhbGlkYXRlU1ZHUHJlc2VudGF0aW9uQXR0cmlidXRlU3R5bGUoKTsKICAg
ICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JlY3RFbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmVjdEVsZW1lbnQuaAppbmRleCBhNjk3NDdj
ZjUzYmFlZWU4ZjMyNTlhOTU0MGQ5ZjcyOGU5ZmVkYzQxLi41NzI2OWFhM2ZmNmRiY2Q0OTQ2YTEx
OTBiZWNhODk1ZDQ1NjRjODFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmVj
dEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmVjdEVsZW1lbnQuaApAQCAt
MjEsNyArMjEsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlNWR0FuaW1hdGVkTGVu
Z3RoLmgiCiAjaW5jbHVkZSAiU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5oIgogI2luY2x1
ZGUgIlNWR0dlb21ldHJ5RWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR05hbWVzLmgiCkBAIC0zMywz
NiArMzIsMjkgQEAgY2xhc3MgU1ZHUmVjdEVsZW1lbnQgZmluYWwgOiBwdWJsaWMgU1ZHR2VvbWV0
cnlFbGVtZW50LCBwdWJsaWMgU1ZHRXh0ZXJuYWxSZXNvdXIKIHB1YmxpYzoKICAgICBzdGF0aWMg
UmVmPFNWR1JlY3RFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50
Jik7CiAKLSAgICBjb25zdCBTVkdMZW5ndGhWYWx1ZSYgeCgpIGNvbnN0IHsgcmV0dXJuIG1feC5j
dXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAgIGNvbnN0IFNWR0xlbmd0
aFZhbHVlJiB5KCkgY29uc3QgeyByZXR1cm4gbV95LmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25l
clByb3h5KCkpOyB9Ci0gICAgY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIHdpZHRoKCkgY29uc3QgeyBy
ZXR1cm4gbV93aWR0aC5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAg
IGNvbnN0IFNWR0xlbmd0aFZhbHVlJiBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX2hlaWdodC5j
dXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAgIGNvbnN0IFNWR0xlbmd0
aFZhbHVlJiByeCgpIGNvbnN0IHsgcmV0dXJuIG1fcnguY3VycmVudFZhbHVlKGF0dHJpYnV0ZU93
bmVyUHJveHkoKSk7IH0KLSAgICBjb25zdCBTVkdMZW5ndGhWYWx1ZSYgcnkoKSBjb25zdCB7IHJl
dHVybiBtX3J5LmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CisgICAgY29u
c3QgU1ZHTGVuZ3RoVmFsdWUmIHgoKSBjb25zdCB7IHJldHVybiBtX3gtPmN1cnJlbnRWYWx1ZSgp
OyB9CisgICAgY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIHkoKSBjb25zdCB7IHJldHVybiBtX3ktPmN1
cnJlbnRWYWx1ZSgpOyB9CisgICAgY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIHdpZHRoKCkgY29uc3Qg
eyByZXR1cm4gbV93aWR0aC0+Y3VycmVudFZhbHVlKCk7IH0KKyAgICBjb25zdCBTVkdMZW5ndGhW
YWx1ZSYgaGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9oZWlnaHQtPmN1cnJlbnRWYWx1ZSgpOyB9
CisgICAgY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIHJ4KCkgY29uc3QgeyByZXR1cm4gbV9yeC0+Y3Vy
cmVudFZhbHVlKCk7IH0KKyAgICBjb25zdCBTVkdMZW5ndGhWYWx1ZSYgcnkoKSBjb25zdCB7IHJl
dHVybiBtX3J5LT5jdXJyZW50VmFsdWUoKTsgfQogCi0gICAgUmVmUHRyPFNWR0FuaW1hdGVkTGVu
Z3RoPiB4QW5pbWF0ZWQoKSB7IHJldHVybiBtX3guYW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVP
d25lclByb3h5KCkpOyB9Ci0gICAgUmVmUHRyPFNWR0FuaW1hdGVkTGVuZ3RoPiB5QW5pbWF0ZWQo
KSB7IHJldHVybiBtX3kuYW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9
Ci0gICAgUmVmUHRyPFNWR0FuaW1hdGVkTGVuZ3RoPiB3aWR0aEFuaW1hdGVkKCkgeyByZXR1cm4g
bV93aWR0aC5hbmltYXRlZFByb3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBS
ZWZQdHI8U1ZHQW5pbWF0ZWRMZW5ndGg+IGhlaWdodEFuaW1hdGVkKCkgeyByZXR1cm4gbV9oZWln
aHQuYW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9Ci0gICAgUmVmUHRy
PFNWR0FuaW1hdGVkTGVuZ3RoPiByeEFuaW1hdGVkKCkgeyByZXR1cm4gbV9yeC5hbmltYXRlZFBy
b3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBSZWZQdHI8U1ZHQW5pbWF0ZWRM
ZW5ndGg+IHJ5QW5pbWF0ZWQoKSB7IHJldHVybiBtX3J5LmFuaW1hdGVkUHJvcGVydHkoYXR0cmli
dXRlT3duZXJQcm94eSgpKTsgfQorICAgIFNWR0FuaW1hdGVkTGVuZ3RoJiB4QW5pbWF0ZWQoKSB7
IHJldHVybiBtX3g7IH0KKyAgICBTVkdBbmltYXRlZExlbmd0aCYgeUFuaW1hdGVkKCkgeyByZXR1
cm4gbV95OyB9CisgICAgU1ZHQW5pbWF0ZWRMZW5ndGgmIHdpZHRoQW5pbWF0ZWQoKSB7IHJldHVy
biBtX3dpZHRoOyB9CisgICAgU1ZHQW5pbWF0ZWRMZW5ndGgmIGhlaWdodEFuaW1hdGVkKCkgeyBy
ZXR1cm4gbV9oZWlnaHQ7IH0KKyAgICBTVkdBbmltYXRlZExlbmd0aCYgcnhBbmltYXRlZCgpIHsg
cmV0dXJuIG1fcng7IH0KKyAgICBTVkdBbmltYXRlZExlbmd0aCYgcnlBbmltYXRlZCgpIHsgcmV0
dXJuIG1fcnk7IH0KIAogcHJpdmF0ZToKICAgICBTVkdSZWN0RWxlbWVudChjb25zdCBRdWFsaWZp
ZWROYW1lJiwgRG9jdW1lbnQmKTsKIAogICAgIHVzaW5nIEF0dHJpYnV0ZU93bmVyUHJveHkgPSBT
VkdBdHRyaWJ1dGVPd25lclByb3h5SW1wbDxTVkdSZWN0RWxlbWVudCwgU1ZHR2VvbWV0cnlFbGVt
ZW50LCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkPjsKLSAgICBzdGF0aWMgYXV0byYgYXR0
cmlidXRlUmVnaXN0cnkoKSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5OjphdHRyaWJ1dGVS
ZWdpc3RyeSgpOyB9Ci0gICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJBdHRyaWJ1dGVzKCk7CiAgICAg
Y29uc3QgU1ZHQXR0cmlidXRlT3duZXJQcm94eSYgYXR0cmlidXRlT3duZXJQcm94eSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG1fYXR0cmlidXRlT3duZXJQcm94eTsgfQogCiAgICAgdXNpbmcgUHJv
cGVydHlSZWdpc3RyeSA9IFNWR1Byb3BlcnR5T3duZXJSZWdpc3RyeTxTVkdSZWN0RWxlbWVudCwg
U1ZHR2VvbWV0cnlFbGVtZW50LCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkPjsKICAgICBj
b25zdCBTVkdQcm9wZXJ0eVJlZ2lzdHJ5JiBwcm9wZXJ0eVJlZ2lzdHJ5KCkgY29uc3QgZmluYWwg
eyByZXR1cm4gbV9wcm9wZXJ0eVJlZ2lzdHJ5OyB9CiAKLSAgICBzdGF0aWMgYm9vbCBpc0tub3du
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCi0gICAgewotICAg
ICAgICByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1
dGVOYW1lKSB8fCBQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5h
bWUpOwotICAgIH0KLQogICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIGZpbmFsOwogICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hh
bmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgZmluYWw7CiAKQEAgLTczLDEyICs2NSwxMiBAQCBw
cml2YXRlOgogCiAgICAgQXR0cmlidXRlT3duZXJQcm94eSBtX2F0dHJpYnV0ZU93bmVyUHJveHkg
eyAqdGhpcyB9OwogICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRo
aXMgfTsKLSAgICBTVkdBbmltYXRlZExlbmd0aEF0dHJpYnV0ZSBtX3ggeyBMZW5ndGhNb2RlV2lk
dGggfTsKLSAgICBTVkdBbmltYXRlZExlbmd0aEF0dHJpYnV0ZSBtX3kgeyBMZW5ndGhNb2RlSGVp
Z2h0IH07Ci0gICAgU1ZHQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUgbV93aWR0aCB7IExlbmd0aE1v
ZGVXaWR0aCB9OwotICAgIFNWR0FuaW1hdGVkTGVuZ3RoQXR0cmlidXRlIG1faGVpZ2h0IHsgTGVu
Z3RoTW9kZUhlaWdodCB9OwotICAgIFNWR0FuaW1hdGVkTGVuZ3RoQXR0cmlidXRlIG1fcnggeyBM
ZW5ndGhNb2RlV2lkdGggfTsKLSAgICBTVkdBbmltYXRlZExlbmd0aEF0dHJpYnV0ZSBtX3J5IHsg
TGVuZ3RoTW9kZUhlaWdodH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3ggeyBTVkdB
bmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVXaWR0aCkgfTsKKyAgICBSZWY8
U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feSB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywg
TGVuZ3RoTW9kZUhlaWdodCkgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fd2lkdGgg
eyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVXaWR0aCkgfTsKKyAg
ICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1faGVpZ2h0IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNy
ZWF0ZSh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0KSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0
aD4gbV9yeCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZVdpZHRo
KSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV9yeSB7IFNWR0FuaW1hdGVkTGVuZ3Ro
OjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZUhlaWdodCkgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAppbmRleCA0ODQyNWZkMDBj
ZDUwMTJmMGVkODIzN2ZlYmE3MjA1ZjkxYjY5ZWM0Li42NTcxOWZiMWJiYWY4YjVjMTczNjc3OWFj
ZDQyMTIzNjY1N2Y0MGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCkBAIC0x
LDcgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBOaWtvbGFz
IFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAwNCwg
MjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAxMCBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgotICog
Q29weXJpZ2h0IChDKSAyMDA3LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICogQ29weXJpZ2h0IChDKSAyMDE0IEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTU5LDggKzU5LDE1IEBAIGlubGluZSBT
VkdTVkdFbGVtZW50OjpTVkdTVkdFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUs
IERvY3VtZW50JiBkb2N1CiAgICAgLCBtX3RpbWVDb250YWluZXIoU01JTFRpbWVDb250YWluZXI6
OmNyZWF0ZSgqdGhpcykpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OnN2Z1Rh
ZykpOwotICAgIHJlZ2lzdGVyQXR0cmlidXRlcygpOwogICAgIGRvY3VtZW50LnJlZ2lzdGVyRm9y
RG9jdW1lbnRTdXNwZW5zaW9uQ2FsbGJhY2tzKCp0aGlzKTsKKworICAgIHN0YXRpYyBzdGQ6Om9u
Y2VfZmxhZyBvbmNlRmxhZzsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10geworICAg
ICAgICBQcm9wZXJ0eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5PFNWR05hbWVzOjp4QXR0ciwg
JlNWR1NWR0VsZW1lbnQ6Om1feD4oKTsKKyAgICAgICAgUHJvcGVydHlSZWdpc3RyeTo6cmVnaXN0
ZXJQcm9wZXJ0eTxTVkdOYW1lczo6eUF0dHIsICZTVkdTVkdFbGVtZW50OjptX3k+KCk7CisgICAg
ICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6OndpZHRoQXR0
ciwgJlNWR1NWR0VsZW1lbnQ6Om1fd2lkdGg+KCk7CisgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6
OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6OmhlaWdodEF0dHIsICZTVkdTVkdFbGVtZW50Ojpt
X2hlaWdodD4oKTsKKyAgICB9KTsKIH0KIAogUmVmPFNWR1NWR0VsZW1lbnQ+IFNWR1NWR0VsZW1l
bnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1l
bnQpCkBAIC0xODcsMTcgKzE5NCw2IEBAIHZvaWQgU1ZHU1ZHRWxlbWVudDo6dXBkYXRlQ3VycmVu
dFRyYW5zbGF0ZSgpCiAgICAgICAgIGRvY3VtZW50KCkucmVuZGVyVmlldygpLT5yZXBhaW50KCk7
CiB9CiAKLXZvaWQgU1ZHU1ZHRWxlbWVudDo6cmVnaXN0ZXJBdHRyaWJ1dGVzKCkKLXsKLSAgICBh
dXRvJiByZWdpc3RyeSA9IGF0dHJpYnV0ZVJlZ2lzdHJ5KCk7Ci0gICAgaWYgKCFyZWdpc3RyeS5p
c0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLSAgICByZWdpc3RyeS5yZWdpc3RlckF0dHJpYnV0
ZTxTVkdOYW1lczo6eEF0dHIsICZTVkdTVkdFbGVtZW50OjptX3g+KCk7Ci0gICAgcmVnaXN0cnku
cmVnaXN0ZXJBdHRyaWJ1dGU8U1ZHTmFtZXM6OnlBdHRyLCAmU1ZHU1ZHRWxlbWVudDo6bV95Pigp
OwotICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjp3aWR0aEF0dHIsICZT
VkdTVkdFbGVtZW50OjptX3dpZHRoPigpOwotICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRl
PFNWR05hbWVzOjpoZWlnaHRBdHRyLCAmU1ZHU1ZHRWxlbWVudDo6bV9oZWlnaHQ+KCk7Ci19Ci0K
IHZvaWQgU1ZHU1ZHRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
bmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAoIW5lYXJlc3RWaWV3
cG9ydEVsZW1lbnQoKSkgewpAQCAtMjM2LDkgKzIzMiw5IEBAIHZvaWQgU1ZHU1ZHRWxlbWVudDo6
cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3Ry
aW5nCiAgICAgU1ZHUGFyc2luZ0Vycm9yIHBhcnNlRXJyb3IgPSBOb0Vycm9yOwogCiAgICAgaWYg
KG5hbWUgPT0gU1ZHTmFtZXM6OnhBdHRyKQotICAgICAgICBtX3guc2V0VmFsdWUoU1ZHTGVuZ3Ro
VmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlV2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yKSk7Cisg
ICAgICAgIG1feC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3Qo
TGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvcikpOwogICAgIGVsc2UgaWYgKG5hbWUg
PT0gU1ZHTmFtZXM6OnlBdHRyKQotICAgICAgICBtX3kuc2V0VmFsdWUoU1ZHTGVuZ3RoVmFsdWU6
OmNvbnN0cnVjdChMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAgICAg
ICBtX3ktPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0
aE1vZGVIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBT
VkdOYW1lczo6d2lkdGhBdHRyKSB7CiAgICAgICAgIGF1dG8gbGVuZ3RoID0gU1ZHTGVuZ3RoVmFs
dWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlV2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yLCBGb3JiaWRO
ZWdhdGl2ZUxlbmd0aHMpOwogICAgICAgICBpZiAocGFyc2VFcnJvciAhPSBOb0Vycm9yIHx8IHZh
bHVlLmlzRW1wdHkoKSkgewpAQCAtMjQ2LDcgKzI0Miw3IEBAIHZvaWQgU1ZHU1ZHRWxlbWVudDo6
cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3Ry
aW5nCiAgICAgICAgICAgICAvLyBOb3Qgc3VyZSBpdCdzIGNvcnJlY3QgZm9yIHRoZSBlbXB0eSBz
dHJpbmcgb3IgZm9yIHNvbWV0aGluZyB0aGF0IGNhbid0IGJlIHBhcnNlZC4KICAgICAgICAgICAg
IGxlbmd0aCA9IFNWR0xlbmd0aFZhbHVlKExlbmd0aE1vZGVXaWR0aCwgIjEwMCUiX3MpOwogICAg
ICAgICB9Ci0gICAgICAgIG1fd2lkdGguc2V0VmFsdWUobGVuZ3RoKTsKKyAgICAgICAgbV93aWR0
aC0+c2V0QmFzZVZhbEludGVybmFsKGxlbmd0aCk7CiAgICAgfSBlbHNlIGlmIChuYW1lID09IFNW
R05hbWVzOjpoZWlnaHRBdHRyKSB7CiAgICAgICAgIGF1dG8gbGVuZ3RoID0gU1ZHTGVuZ3RoVmFs
dWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvciwgRm9yYmlk
TmVnYXRpdmVMZW5ndGhzKTsKICAgICAgICAgaWYgKHBhcnNlRXJyb3IgIT0gTm9FcnJvciB8fCB2
YWx1ZS5pc0VtcHR5KCkpIHsKQEAgLTI1NCw3ICsyNTAsNyBAQCB2b2lkIFNWR1NWR0VsZW1lbnQ6
OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0
cmluZwogICAgICAgICAgICAgLy8gTm90IHN1cmUgaXQncyBjb3JyZWN0IGZvciB0aGUgZW1wdHkg
c3RyaW5nIG9yIGZvciBzb21ldGhpbmcgdGhhdCBjYW4ndCBiZSBwYXJzZWQuCiAgICAgICAgICAg
ICBsZW5ndGggPSBTVkdMZW5ndGhWYWx1ZShMZW5ndGhNb2RlSGVpZ2h0LCAiMTAwJSJfcyk7CiAg
ICAgICAgIH0KLSAgICAgICAgbV9oZWlnaHQuc2V0VmFsdWUobGVuZ3RoKTsKKyAgICAgICAgbV9o
ZWlnaHQtPnNldEJhc2VWYWxJbnRlcm5hbChsZW5ndGgpOwogICAgIH0KIAogICAgIHJlcG9ydEF0
dHJpYnV0ZVBhcnNpbmdFcnJvcihwYXJzZUVycm9yLCBuYW1lLCB2YWx1ZSk7CkBAIC0yNjcsNyAr
MjYzLDcgQEAgdm9pZCBTVkdTVkdFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcKIAogdm9pZCBTVkdTVkdFbGVtZW50Ojpz
dmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogewotICAg
IGlmIChpc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgeworICAgIGlmIChQcm9wZXJ0eVJlZ2lz
dHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewogICAgICAgICBJbnN0YW5jZUludmFs
aWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKICAgICAgICAgaW52YWxpZGF0ZVNWR1ByZXNlbnRh
dGlvbkF0dHJpYnV0ZVN0eWxlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdTVkdFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5oCmluZGV4
IGIwZDk0ZmM5OTc4ZjcwODA4MDUyOWI0NDkzZDZkOGQzZWUzYTUzY2EuLmYyZjk0NWVlYTI3MTJl
MTEzOTEwOWM5Yzk2M2VhODM0M2MyODE0NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdTVkdFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQu
aApAQCAtMjIsNyArMjIsNiBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJGbG9hdFBvaW50
LmgiCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRMZW5ndGguaCIKICNpbmNsdWRlICJTVkdFeHRlcm5h
bFJlc291cmNlc1JlcXVpcmVkLmgiCiAjaW5jbHVkZSAiU1ZHRml0VG9WaWV3Qm94LmgiCiAjaW5j
bHVkZSAiU1ZHR3JhcGhpY3NFbGVtZW50LmgiCkBAIC0xMTgsMzMgKzExNywyNiBAQCBwdWJsaWM6
CiAKICAgICBBZmZpbmVUcmFuc2Zvcm0gdmlld0JveFRvVmlld1RyYW5zZm9ybShmbG9hdCB2aWV3
V2lkdGgsIGZsb2F0IHZpZXdIZWlnaHQpIGNvbnN0OwogCi0gICAgY29uc3QgU1ZHTGVuZ3RoVmFs
dWUmIHgoKSBjb25zdCB7IHJldHVybiBtX3guY3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJv
eHkoKSk7IH0KLSAgICBjb25zdCBTVkdMZW5ndGhWYWx1ZSYgeSgpIGNvbnN0IHsgcmV0dXJuIG1f
eS5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAgIGNvbnN0IFNWR0xl
bmd0aFZhbHVlJiB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fd2lkdGguY3VycmVudFZhbHVlKGF0
dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBjb25zdCBTVkdMZW5ndGhWYWx1ZSYgaGVpZ2h0
KCkgY29uc3QgeyByZXR1cm4gbV9oZWlnaHQuY3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJv
eHkoKSk7IH0KKyAgICBjb25zdCBTVkdMZW5ndGhWYWx1ZSYgeCgpIGNvbnN0IHsgcmV0dXJuIG1f
eC0+Y3VycmVudFZhbHVlKCk7IH0KKyAgICBjb25zdCBTVkdMZW5ndGhWYWx1ZSYgeSgpIGNvbnN0
IHsgcmV0dXJuIG1feS0+Y3VycmVudFZhbHVlKCk7IH0KKyAgICBjb25zdCBTVkdMZW5ndGhWYWx1
ZSYgd2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3dpZHRoLT5jdXJyZW50VmFsdWUoKTsgfQorICAg
IGNvbnN0IFNWR0xlbmd0aFZhbHVlJiBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX2hlaWdodC0+
Y3VycmVudFZhbHVlKCk7IH0KIAotICAgIFJlZlB0cjxTVkdBbmltYXRlZExlbmd0aD4geEFuaW1h
dGVkKCkgeyByZXR1cm4gbV94LmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgp
KTsgfQotICAgIFJlZlB0cjxTVkdBbmltYXRlZExlbmd0aD4geUFuaW1hdGVkKCkgeyByZXR1cm4g
bV95LmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAgIFJlZlB0
cjxTVkdBbmltYXRlZExlbmd0aD4gd2lkdGhBbmltYXRlZCgpIHsgcmV0dXJuIG1fd2lkdGguYW5p
bWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9Ci0gICAgUmVmUHRyPFNWR0Fu
aW1hdGVkTGVuZ3RoPiBoZWlnaHRBbmltYXRlZCgpIHsgcmV0dXJuIG1faGVpZ2h0LmFuaW1hdGVk
UHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQorICAgIFNWR0FuaW1hdGVkTGVuZ3Ro
JiB4QW5pbWF0ZWQoKSB7IHJldHVybiBtX3g7IH0KKyAgICBTVkdBbmltYXRlZExlbmd0aCYgeUFu
aW1hdGVkKCkgeyByZXR1cm4gbV95OyB9CisgICAgU1ZHQW5pbWF0ZWRMZW5ndGgmIHdpZHRoQW5p
bWF0ZWQoKSB7IHJldHVybiBtX3dpZHRoOyB9CisgICAgU1ZHQW5pbWF0ZWRMZW5ndGgmIGhlaWdo
dEFuaW1hdGVkKCkgeyByZXR1cm4gbV9oZWlnaHQ7IH0KIAogcHJpdmF0ZToKICAgICBTVkdTVkdF
bGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogICAgIHZpcnR1YWwgflNW
R1NWR0VsZW1lbnQoKTsKIAogICAgIHVzaW5nIEF0dHJpYnV0ZU93bmVyUHJveHkgPSBTVkdBdHRy
aWJ1dGVPd25lclByb3h5SW1wbDxTVkdTVkdFbGVtZW50LCBTVkdHcmFwaGljc0VsZW1lbnQsIFNW
R0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIFNWR0ZpdFRvVmlld0JveD47Ci0gICAgc3RhdGlj
IEF0dHJpYnV0ZU93bmVyUHJveHk6OkF0dHJpYnV0ZVJlZ2lzdHJ5JiBhdHRyaWJ1dGVSZWdpc3Ry
eSgpIHsgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmF0dHJpYnV0ZVJlZ2lzdHJ5KCk7IH0K
LSAgICBzdGF0aWMgdm9pZCByZWdpc3RlckF0dHJpYnV0ZXMoKTsKICAgICBjb25zdCBTVkdBdHRy
aWJ1dGVPd25lclByb3h5JiBhdHRyaWJ1dGVPd25lclByb3h5KCkgY29uc3QgZmluYWwgeyByZXR1
cm4gbV9hdHRyaWJ1dGVPd25lclByb3h5OyB9CiAgICAgCiAgICAgdXNpbmcgUHJvcGVydHlSZWdp
c3RyeSA9IFNWR1Byb3BlcnR5T3duZXJSZWdpc3RyeTxTVkdTVkdFbGVtZW50LCBTVkdHcmFwaGlj
c0VsZW1lbnQsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIFNWR0ZpdFRvVmlld0JveD47
CiAgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYgcHJvcGVydHlSZWdpc3RyeSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3RyeTsgfQogICAgIAotICAgIHN0YXRpYyBi
b29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkK
LSAgICB7Ci0gICAgICAgIHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3duQXR0cmli
dXRlKGF0dHJpYnV0ZU5hbWUpIHx8IFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUo
YXR0cmlidXRlTmFtZSk7Ci0gICAgfQotCiAgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBz
dmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKICAgICBi
b29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdCBvdmVycmlkZTsKQEAgLTE3NiwxMCAr
MTY4LDEwIEBAIHByaXZhdGU6CiAKICAgICBBdHRyaWJ1dGVPd25lclByb3h5IG1fYXR0cmlidXRl
T3duZXJQcm94eSB7ICp0aGlzIH07CiAgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVn
aXN0cnkgeyAqdGhpcyB9OwotICAgIFNWR0FuaW1hdGVkTGVuZ3RoQXR0cmlidXRlIG1feCB7IExl
bmd0aE1vZGVXaWR0aCB9OwotICAgIFNWR0FuaW1hdGVkTGVuZ3RoQXR0cmlidXRlIG1feSB7IExl
bmd0aE1vZGVIZWlnaHR9OwotICAgIFNWR0FuaW1hdGVkTGVuZ3RoQXR0cmlidXRlIG1fd2lkdGgg
eyBMZW5ndGhNb2RlV2lkdGgsICIxMDAlIl9zIH07Ci0gICAgU1ZHQW5pbWF0ZWRMZW5ndGhBdHRy
aWJ1dGUgbV9oZWlnaHQgeyBMZW5ndGhNb2RlSGVpZ2h0LCAiMTAwJSJfcyB9OworICAgIFJlZjxT
VkdBbmltYXRlZExlbmd0aD4gbV94IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBM
ZW5ndGhNb2RlV2lkdGgpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3kgeyBTVkdB
bmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQpIH07CisgICAgUmVm
PFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3dpZHRoIHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0
aGlzLCBMZW5ndGhNb2RlV2lkdGgsICIxMDAlIl9zKSB9OworICAgIFJlZjxTVkdBbmltYXRlZExl
bmd0aD4gbV9oZWlnaHQgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1v
ZGVIZWlnaHQsICIxMDAlIl9zKSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNwcAppbmRleCA4YmU1NjA1
MjhkZTA3N2U5NDhlZTYzN2E4NTFkYjcxMWQ4YjQ4MWRmLi44N2NmYTFhM2Q0ZTNiODliZTlkODQ4
NTIzNjBmMzk1MTJhYjIxZWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4
dENvbnRlbnRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRl
bnRFbGVtZW50LmNwcApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQs
IDIwMDUsIDIwMDcsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDggUm9iIEJ1aXMg
PGJ1aXNAa2RlLm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTQ4LDYgKzQ4LDExIEBAIFNW
R1RleHRDb250ZW50RWxlbWVudDo6U1ZHVGV4dENvbnRlbnRFbGVtZW50KGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHRhZ05hbWUsIERvY3VtCiAgICAgLCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
KHRoaXMpCiB7CiAgICAgcmVnaXN0ZXJBdHRyaWJ1dGVzKCk7CisgICAgCisgICAgc3RhdGljIHN0
ZDo6b25jZV9mbGFnIG9uY2VGbGFnOworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7
CisgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6OnRl
eHRMZW5ndGhBdHRyLCAmU1ZHVGV4dENvbnRlbnRFbGVtZW50OjptX3RleHRMZW5ndGg+KCk7Cisg
ICAgfSk7CiB9CiAKIHVuc2lnbmVkIFNWR1RleHRDb250ZW50RWxlbWVudDo6Z2V0TnVtYmVyT2ZD
aGFycygpCkBAIC0xNjMsNyArMTY4LDYgQEAgdm9pZCBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OnJl
Z2lzdGVyQXR0cmlidXRlcygpCiAgICAgYXV0byYgcmVnaXN0cnkgPSBhdHRyaWJ1dGVSZWdpc3Ry
eSgpOwogICAgIGlmICghcmVnaXN0cnkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47Ci0gICAg
cmVnaXN0cnkucmVnaXN0ZXJBdHRyaWJ1dGUoU1ZHQW5pbWF0ZWRDdXN0b21MZW5ndGhBdHRyaWJ1
dGVBY2Nlc3Nvcjo6c2luZ2xldG9uPFNWR05hbWVzOjp0ZXh0TGVuZ3RoQXR0ciwgJlNWR1RleHRD
b250ZW50RWxlbWVudDo6bV90ZXh0TGVuZ3RoPigpKTsKICAgICByZWdpc3RyeS5yZWdpc3RlckF0
dHJpYnV0ZTxTVkdOYW1lczo6bGVuZ3RoQWRqdXN0QXR0ciwgU1ZHTGVuZ3RoQWRqdXN0VHlwZSwg
JlNWR1RleHRDb250ZW50RWxlbWVudDo6bV9sZW5ndGhBZGp1c3Q+KCk7CiB9CiAKQEAgLTE3Niw3
ICsxODAsNyBAQCB2b2lkIFNWR1RleHRDb250ZW50RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbQogICAgICAgICBpZiAocHJvcGVydHlW
YWx1ZSA+IDApCiAgICAgICAgICAgICBtX2xlbmd0aEFkanVzdC5zZXRWYWx1ZShwcm9wZXJ0eVZh
bHVlKTsKICAgICB9IGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnRleHRMZW5ndGhBdHRyKQot
ICAgICAgICBtX3RleHRMZW5ndGguc2V0VmFsdWUoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChM
ZW5ndGhNb2RlT3RoZXIsIHZhbHVlLCBwYXJzZUVycm9yLCBGb3JiaWROZWdhdGl2ZUxlbmd0aHMp
KTsKKyAgICAgICAgbV90ZXh0TGVuZ3RoLT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFs
dWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlT3RoZXIsIHZhbHVlLCBwYXJzZUVycm9yLCBGb3JiaWRO
ZWdhdGl2ZUxlbmd0aHMpKTsKIAogICAgIHJlcG9ydEF0dHJpYnV0ZVBhcnNpbmdFcnJvcihwYXJz
ZUVycm9yLCBuYW1lLCB2YWx1ZSk7CiAKQEAgLTE4OCw3ICsxOTIsNyBAQCB2b2lkIFNWR1RleHRD
b250ZW50RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBh
dHRyTmFtZSkKIHsKICAgICBpZiAoaXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAg
ICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp0ZXh0TGVuZ3RoQXR0cikKLSAgICAgICAgICAg
IG1fc3BlY2lmaWVkVGV4dExlbmd0aCA9IG1fdGV4dExlbmd0aC52YWx1ZSgpOworICAgICAgICAg
ICAgbV9zcGVjaWZpZWRUZXh0TGVuZ3RoID0gbV90ZXh0TGVuZ3RoLT5iYXNlVmFsKCktPnZhbHVl
KCk7CiAKICAgICAgICAgaWYgKGF1dG8gcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKSB7CiAg
ICAgICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKQEAgLTIw
MSw2ICsyMDUsMTQgQEAgdm9pZCBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNo
YW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAgICAgU1ZHRXh0ZXJuYWxSZXNv
dXJjZXNSZXF1aXJlZDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7CiB9CiAKK1NWR0Fu
aW1hdGVkTGVuZ3RoJiBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OnRleHRMZW5ndGhBbmltYXRlZCgp
Cit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFNWR0xlbmd0aFZhbHVlPiBkZWZhdWx0VGV4
dExlbmd0aChMZW5ndGhNb2RlT3RoZXIpOworICAgIGlmIChtX3RleHRMZW5ndGgtPmJhc2VWYWwo
KS0+dmFsdWUoKSA9PSBkZWZhdWx0VGV4dExlbmd0aCkKKyAgICAgICAgbV90ZXh0TGVuZ3RoLT5i
YXNlVmFsKCktPnZhbHVlKCkubmV3VmFsdWVTcGVjaWZpZWRVbml0cyhMZW5ndGhUeXBlTnVtYmVy
LCBnZXRDb21wdXRlZFRleHRMZW5ndGgoKSk7CisgICAgcmV0dXJuIG1fdGV4dExlbmd0aDsKK30K
KwogYm9vbCBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OnNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBj
b25zdAogewogICAgIC8vIEFueSBlbGVtZW50IG9mIHRoZSA8dGV4dD4gc3VidHJlZSBpcyBhZHZl
cnRpemVkIGFzIHVzaW5nIHJlbGF0aXZlIGxlbmd0aHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
VGV4dENvbnRlbnRFbGVtZW50LmgKaW5kZXggMmIxMjgzODY3MTYzNDJlMjcyNDI4M2ZjNGVmOTUw
Nzk4YjZhZmIxZS4uOWNiYjY2N2M5NzkwMGE1Zjk5ZThhYzUwYWRlYTI2MGUwYTk0OTQ2NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuaApAQCAtMjIsNyArMjIs
NiBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJTVkdBbmltYXRlZEVudW1lcmF0aW9uLmgi
Ci0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRMZW5ndGguaCIKICNpbmNsdWRlICJTVkdFeHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkLmgiCiAjaW5jbHVkZSAiU1ZHR3JhcGhpY3NFbGVtZW50LmgiCiAKQEAg
LTg0LDE3ICs4MywxNyBAQCBwdWJsaWM6CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2VsZWN0U3Vi
U3RyaW5nKHVuc2lnbmVkIGNoYXJudW0sIHVuc2lnbmVkIG5jaGFycyk7CiAKICAgICBzdGF0aWMg
U1ZHVGV4dENvbnRlbnRFbGVtZW50KiBlbGVtZW50RnJvbVJlbmRlcmVyKFJlbmRlck9iamVjdCop
OwotICAgIGNvbnN0IFNWR0xlbmd0aFZhbHVlJiBzcGVjaWZpZWRUZXh0TGVuZ3RoKCkgeyByZXR1
cm4gbV9zcGVjaWZpZWRUZXh0TGVuZ3RoOyB9CiAKICAgICB1c2luZyBBdHRyaWJ1dGVPd25lclBy
b3h5ID0gU1ZHQXR0cmlidXRlT3duZXJQcm94eUltcGw8U1ZHVGV4dENvbnRlbnRFbGVtZW50LCBT
VkdHcmFwaGljc0VsZW1lbnQsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ+OwogICAgIHN0
YXRpYyBBdHRyaWJ1dGVPd25lclByb3h5OjpBdHRyaWJ1dGVSZWdpc3RyeSYgYXR0cmlidXRlUmVn
aXN0cnkoKSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5OjphdHRyaWJ1dGVSZWdpc3RyeSgp
OyB9CiAgICAgCiAgICAgdXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9IFNWR1Byb3BlcnR5T3duZXJS
ZWdpc3RyeTxTVkdUZXh0Q29udGVudEVsZW1lbnQsIFNWR0dyYXBoaWNzRWxlbWVudCwgU1ZHRXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZD47CiAKLSAgICBjb25zdCBTVkdMZW5ndGhWYWx1ZSYgdGV4
dExlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dExlbmd0aC5jdXJyZW50VmFsdWUoYXR0cmli
dXRlT3duZXJQcm94eSgpKTsgfQorICAgIGNvbnN0IFNWR0xlbmd0aFZhbHVlJiBzcGVjaWZpZWRU
ZXh0TGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9zcGVjaWZpZWRUZXh0TGVuZ3RoOyB9CisgICAg
Y29uc3QgU1ZHTGVuZ3RoVmFsdWUmIHRleHRMZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX3RleHRM
ZW5ndGgtPmN1cnJlbnRWYWx1ZSgpOyB9CiAgICAgU1ZHTGVuZ3RoQWRqdXN0VHlwZSBsZW5ndGhB
ZGp1c3QoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aEFkanVzdC5jdXJyZW50VmFsdWUoYXR0cmli
dXRlT3duZXJQcm94eSgpKTsgfQogCi0gICAgUmVmUHRyPFNWR0FuaW1hdGVkTGVuZ3RoPiB0ZXh0
TGVuZ3RoQW5pbWF0ZWQoKSB7IHJldHVybiBtX3RleHRMZW5ndGguYW5pbWF0ZWRQcm9wZXJ0eShh
dHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CisgICAgU1ZHQW5pbWF0ZWRMZW5ndGgmIHRleHRMZW5n
dGhBbmltYXRlZCgpOwogICAgIFJlZlB0cjxTVkdBbmltYXRlZEVudW1lcmF0aW9uPiBsZW5ndGhB
ZGp1c3RBbmltYXRlZCgpIHsgcmV0dXJuIG1fbGVuZ3RoQWRqdXN0LmFuaW1hdGVkUHJvcGVydHko
YXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQogCiBwcm90ZWN0ZWQ6CkBAIC0xMjIsNDMgKzEyMSw5
IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3du
QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpIHx8IFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRy
aWJ1dGUoYXR0cmlidXRlTmFtZSk7CiAgICAgfQogCi0gICAgY2xhc3MgU1ZHQW5pbWF0ZWRDdXN0
b21MZW5ndGhBdHRyaWJ1dGUgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUgewot
ICAgIHB1YmxpYzoKLSAgICAgICAgdXNpbmcgU1ZHQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGU6Om9w
ZXJhdG9yPTsKLQotICAgICAgICBTVkdBbmltYXRlZEN1c3RvbUxlbmd0aEF0dHJpYnV0ZShTVkdU
ZXh0Q29udGVudEVsZW1lbnQmIGVsZW1lbnQsIFNWR0xlbmd0aE1vZGUgbGVuZ3RoTW9kZSkKLSAg
ICAgICAgICAgIDogU1ZHQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUobGVuZ3RoTW9kZSkKLSAgICAg
ICAgICAgICwgbV9lbGVtZW50KGVsZW1lbnQpCi0gICAgICAgIHsKLSAgICAgICAgfQotCi0gICAg
ICAgIHZvaWQgc3luY2hyb25pemUoRWxlbWVudCYsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJp
YnV0ZU5hbWUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghc2hvdWxkU3luY2hyb25pemUo
KSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBTdHJpbmcgc3RyaW5nKFNW
R1Byb3BlcnR5VHJhaXRzPFNWR0xlbmd0aFZhbHVlPjo6dG9TdHJpbmcobV9lbGVtZW50Lm1fc3Bl
Y2lmaWVkVGV4dExlbmd0aCkpOwotICAgICAgICAgICAgc3RhdGljX2Nhc3Q8RWxlbWVudCY+KG1f
ZWxlbWVudCkuc2V0U3luY2hyb25pemVkTGF6eUF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lLCBzdHJp
bmcpOwotICAgICAgICB9Ci0KLSAgICAgICAgUmVmUHRyPFNWR0FuaW1hdGVkTGVuZ3RoPiBhbmlt
YXRlZFByb3BlcnR5KGNvbnN0IFNWR0F0dHJpYnV0ZU93bmVyUHJveHkmIGF0dHJpYnV0ZU93bmVy
UHJveHkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTVkdM
ZW5ndGhWYWx1ZT4gZGVmYXVsdFRleHRMZW5ndGgoTGVuZ3RoTW9kZU90aGVyKTsKLSAgICAgICAg
ICAgIGlmIChtX2VsZW1lbnQubV9zcGVjaWZpZWRUZXh0TGVuZ3RoID09IGRlZmF1bHRUZXh0TGVu
Z3RoKQotICAgICAgICAgICAgICAgIG1fZWxlbWVudC5tX3RleHRMZW5ndGgudmFsdWUoKS5uZXdW
YWx1ZVNwZWNpZmllZFVuaXRzKExlbmd0aFR5cGVOdW1iZXIsIG1fZWxlbWVudC5nZXRDb21wdXRl
ZFRleHRMZW5ndGgoKSk7Ci0KLSAgICAgICAgICAgIHNldFNob3VsZFN5bmNocm9uaXplKHRydWUp
OwotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19yZWZlcmVuY2VfY2FzdDxTVkdBbmltYXRlZExl
bmd0aD4oYXR0cmlidXRlT3duZXJQcm94eS5sb29rdXBPckNyZWF0ZUFuaW1hdGVkUHJvcGVydHko
KnRoaXMpLnJlbGVhc2VOb25OdWxsKCkpOwotICAgICAgICB9Ci0KLSAgICBwcml2YXRlOgotICAg
ICAgICBTVkdUZXh0Q29udGVudEVsZW1lbnQmIG1fZWxlbWVudDsKLSAgICB9OwotCi0gICAgdXNp
bmcgU1ZHQW5pbWF0ZWRDdXN0b21MZW5ndGhBdHRyaWJ1dGVBY2Nlc3NvciA9IFNWR0FuaW1hdGVk
QXR0cmlidXRlQWNjZXNzb3I8U1ZHVGV4dENvbnRlbnRFbGVtZW50LCBTVkdBbmltYXRlZEN1c3Rv
bUxlbmd0aEF0dHJpYnV0ZSwgQW5pbWF0ZWRMZW5ndGg+OwotCiAgICAgQXR0cmlidXRlT3duZXJQ
cm94eSBtX2F0dHJpYnV0ZU93bmVyUHJveHkgeyAqdGhpcyB9OwogICAgIFByb3BlcnR5UmVnaXN0
cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKLSAgICBTVkdBbmltYXRlZEN1c3RvbUxl
bmd0aEF0dHJpYnV0ZSBtX3RleHRMZW5ndGggeyAqdGhpcywgTGVuZ3RoTW9kZU90aGVyIH07Cisg
ICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3RleHRMZW5ndGggeyBTVkdBbmltYXRlZExlbmd0
aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVPdGhlcikgfTsKICAgICBTVkdBbmltYXRlZEVudW1l
cmF0aW9uQXR0cmlidXRlPFNWR0xlbmd0aEFkanVzdFR5cGU+IG1fbGVuZ3RoQWRqdXN0IHsgU1ZH
TGVuZ3RoQWRqdXN0U3BhY2luZyB9OwogICAgIFNWR0xlbmd0aFZhbHVlIG1fc3BlY2lmaWVkVGV4
dExlbmd0aCB7IExlbmd0aE1vZGVPdGhlciB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Rl
eHRQYXRoRWxlbWVudC5jcHAKaW5kZXggNTU4OTVhOTZkZTc4M2MxNGM3NzI4ODg5MTUxNTdhYjZk
YzQxZDQyNS4uMzJlOWY3YTU3ZDU2NWE1N2U1YmE2ZWU5MWI2YTcxOWQ1NWRhMmRjNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5jcHAKQEAgLTEsNyArMSw3IEBACiAv
KgogICogQ29weXJpZ2h0IChDKSAyMDA3IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBr
ZGUub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDEwIFJvYiBCdWlzIDxyd2xidWlzQGdtYWlsLmNv
bT4KLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTM5LDYgKzM5LDExIEBAIGlubGluZSBTVkdUZXh0
UGF0aEVsZW1lbnQ6OlNWR1RleHRQYXRoRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdO
YW1lLCBEb2N1CiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OnRleHRQYXRoVGFn
KSk7CiAgICAgcmVnaXN0ZXJBdHRyaWJ1dGVzKCk7CisgICAgCisgICAgc3RhdGljIHN0ZDo6b25j
ZV9mbGFnIG9uY2VGbGFnOworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7CisgICAg
ICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6OnN0YXJ0T2Zm
c2V0QXR0ciwgJlNWR1RleHRQYXRoRWxlbWVudDo6bV9zdGFydE9mZnNldD4oKTsKKyAgICB9KTsK
IH0KIAogUmVmPFNWR1RleHRQYXRoRWxlbWVudD4gU1ZHVGV4dFBhdGhFbGVtZW50OjpjcmVhdGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQpAQCAtNjEs
NyArNjYsNiBAQCB2b2lkIFNWR1RleHRQYXRoRWxlbWVudDo6cmVnaXN0ZXJBdHRyaWJ1dGVzKCkK
ICAgICBhdXRvJiByZWdpc3RyeSA9IGF0dHJpYnV0ZVJlZ2lzdHJ5KCk7CiAgICAgaWYgKCFyZWdp
c3RyeS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKLSAgICByZWdpc3RyeS5yZWdpc3RlckF0
dHJpYnV0ZTxTVkdOYW1lczo6c3RhcnRPZmZzZXRBdHRyLCAmU1ZHVGV4dFBhdGhFbGVtZW50Ojpt
X3N0YXJ0T2Zmc2V0PigpOwogICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVz
OjptZXRob2RBdHRyLCBTVkdUZXh0UGF0aE1ldGhvZFR5cGUsICZTVkdUZXh0UGF0aEVsZW1lbnQ6
Om1fbWV0aG9kPigpOwogICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjpz
cGFjaW5nQXR0ciwgU1ZHVGV4dFBhdGhTcGFjaW5nVHlwZSwgJlNWR1RleHRQYXRoRWxlbWVudDo6
bV9zcGFjaW5nPigpOwogfQpAQCAtNzEsNyArNzUsNyBAQCB2b2lkIFNWR1RleHRQYXRoRWxlbWVu
dDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWlj
UwogICAgIFNWR1BhcnNpbmdFcnJvciBwYXJzZUVycm9yID0gTm9FcnJvcjsKIAogICAgIGlmIChu
YW1lID09IFNWR05hbWVzOjpzdGFydE9mZnNldEF0dHIpCi0gICAgICAgIG1fc3RhcnRPZmZzZXQu
c2V0VmFsdWUoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlT3RoZXIsIHZhbHVl
LCBwYXJzZUVycm9yKSk7CisgICAgICAgIG1fc3RhcnRPZmZzZXQtPnNldEJhc2VWYWxJbnRlcm5h
bChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVPdGhlciwgdmFsdWUsIHBhcnNl
RXJyb3IpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjptZXRob2RBdHRyKSB7CiAg
ICAgICAgIFNWR1RleHRQYXRoTWV0aG9kVHlwZSBwcm9wZXJ0eVZhbHVlID0gU1ZHUHJvcGVydHlU
cmFpdHM8U1ZHVGV4dFBhdGhNZXRob2RUeXBlPjo6ZnJvbVN0cmluZyh2YWx1ZSk7CiAgICAgICAg
IGlmIChwcm9wZXJ0eVZhbHVlID4gMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdUZXh0UGF0aEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1l
bnQuaAppbmRleCAzOTMxNTAyMTNmOTlmNTZmODQ1MjMyMDg4MzRkNzgxZWNmZTEwY2EwLi45MGIz
OGFhNmZkZWRjOTkxMzZhMjFiMzFiMzg3NmYyZDQxNDJiZjRiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1RleHRQYXRoRWxlbWVudC5oCkBAIC0xMTEsMTEgKzExMSwxMSBAQCBwdWJsaWM6CiAKICAg
ICBzdGF0aWMgUmVmPFNWR1RleHRQYXRoRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmLCBEb2N1bWVudCYpOwogCi0gICAgY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIHN0YXJ0T2Zmc2V0
KCkgY29uc3QgeyByZXR1cm4gbV9zdGFydE9mZnNldC5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3du
ZXJQcm94eSgpKTsgfQorICAgIGNvbnN0IFNWR0xlbmd0aFZhbHVlJiBzdGFydE9mZnNldCgpIGNv
bnN0IHsgcmV0dXJuIG1fc3RhcnRPZmZzZXQtPmN1cnJlbnRWYWx1ZSgpOyB9CiAgICAgU1ZHVGV4
dFBhdGhNZXRob2RUeXBlIG1ldGhvZCgpIGNvbnN0IHsgcmV0dXJuIG1fbWV0aG9kLmN1cnJlbnRW
YWx1ZShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CiAgICAgU1ZHVGV4dFBhdGhTcGFjaW5nVHlw
ZSBzcGFjaW5nKCkgY29uc3QgeyByZXR1cm4gbV9zcGFjaW5nLmN1cnJlbnRWYWx1ZShhdHRyaWJ1
dGVPd25lclByb3h5KCkpOyB9CiAKLSAgICBSZWZQdHI8U1ZHQW5pbWF0ZWRMZW5ndGg+IHN0YXJ0
T2Zmc2V0QW5pbWF0ZWQoKSB7IHJldHVybiBtX3N0YXJ0T2Zmc2V0LmFuaW1hdGVkUHJvcGVydHko
YXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQorICAgIFNWR0FuaW1hdGVkTGVuZ3RoJiBzdGFydE9m
ZnNldEFuaW1hdGVkKCkgeyByZXR1cm4gbV9zdGFydE9mZnNldDsgfQogICAgIFJlZlB0cjxTVkdB
bmltYXRlZEVudW1lcmF0aW9uPiBtZXRob2RBbmltYXRlZCgpIHsgcmV0dXJuIG1fbWV0aG9kLmFu
aW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQogICAgIFJlZlB0cjxTVkdB
bmltYXRlZEVudW1lcmF0aW9uPiBzcGFjaW5nQW5pbWF0ZWQoKSB7IHJldHVybiBtX3NwYWNpbmcu
YW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CiAKQEAgLTE1NSw3ICsx
NTUsNyBAQCBwcml2YXRlOgogCiAgICAgQXR0cmlidXRlT3duZXJQcm94eSBtX2F0dHJpYnV0ZU93
bmVyUHJveHkgeyAqdGhpcyB9OwogICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lz
dHJ5IHsgKnRoaXMgfTsKLSAgICBTVkdBbmltYXRlZExlbmd0aEF0dHJpYnV0ZSBtX3N0YXJ0T2Zm
c2V0IHsgTGVuZ3RoTW9kZU90aGVyIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3N0
YXJ0T2Zmc2V0IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlT3Ro
ZXIpIH07CiAgICAgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbkF0dHJpYnV0ZTxTVkdUZXh0UGF0aE1l
dGhvZFR5cGU+IG1fbWV0aG9kIHsgU1ZHVGV4dFBhdGhNZXRob2RBbGlnbiB9OwogICAgIFNWR0Fu
aW1hdGVkRW51bWVyYXRpb25BdHRyaWJ1dGU8U1ZHVGV4dFBhdGhTcGFjaW5nVHlwZT4gbV9zcGFj
aW5nIHsgU1ZHVGV4dFBhdGhTcGFjaW5nRXhhY3QgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5jcHAKaW5kZXggNDQ5NjQ2NjdhMzk3MjM0
NTEwMGQ3YThiYzZjZjM3ODEyMTY2OGZkYi4uYTY2NDJhMDE0Y2U3MTA3YTBkOWZjNDRlMWQyZDI3
NmI2OTVmYTFhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQb3NpdGlv
bmluZ0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UG9zaXRpb25p
bmdFbGVtZW50LmNwcApAQCAtMjcsNyArMjcsNiBAQAogI2luY2x1ZGUgIlJlbmRlclNWR1Jlc291
cmNlLmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZHVGV4dC5oIgogI2luY2x1ZGUgIlNWR0FsdEdseXBo
RWxlbWVudC5oIgotI2luY2x1ZGUgIlNWR0xlbmd0aExpc3RWYWx1ZXMuaCIKICNpbmNsdWRlICJT
VkdOYW1lcy5oIgogI2luY2x1ZGUgIlNWR1RSZWZFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHVFNw
YW5FbGVtZW50LmgiCkBAIC00MSw1NiArNDAsMzUgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9J
TVBMKFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQpOwogU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVu
dDo6U1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1l
LCBEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgOiBTVkdUZXh0Q29udGVudEVsZW1lbnQodGFnTmFt
ZSwgZG9jdW1lbnQpCiB7Ci0gICAgcmVnaXN0ZXJBdHRyaWJ1dGVzKCk7Ci0gICAgCiAgICAgc3Rh
dGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwogICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFn
LCBbXSB7CisgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFt
ZXM6OnhBdHRyLCAmU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudDo6bV94PigpOworICAgICAgICBQ
cm9wZXJ0eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5PFNWR05hbWVzOjp5QXR0ciwgJlNWR1Rl
eHRQb3NpdGlvbmluZ0VsZW1lbnQ6Om1feT4oKTsKKyAgICAgICAgUHJvcGVydHlSZWdpc3RyeTo6
cmVnaXN0ZXJQcm9wZXJ0eTxTVkdOYW1lczo6ZHhBdHRyLCAmU1ZHVGV4dFBvc2l0aW9uaW5nRWxl
bWVudDo6bV9keD4oKTsKKyAgICAgICAgUHJvcGVydHlSZWdpc3RyeTo6cmVnaXN0ZXJQcm9wZXJ0
eTxTVkdOYW1lczo6ZHlBdHRyLCAmU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudDo6bV9keT4oKTsK
ICAgICAgICAgUHJvcGVydHlSZWdpc3RyeTo6cmVnaXN0ZXJQcm9wZXJ0eTxTVkdOYW1lczo6cm90
YXRlQXR0ciwgJlNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQ6Om1fcm90YXRlPigpOwogICAgIH0p
OwogfQogCi12b2lkIFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQ6OnJlZ2lzdGVyQXR0cmlidXRl
cygpCi17Ci0gICAgYXV0byYgcmVnaXN0cnkgPSBhdHRyaWJ1dGVSZWdpc3RyeSgpOwotICAgIGlm
ICghcmVnaXN0cnkuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0gICAgcmVnaXN0cnkucmVn
aXN0ZXJBdHRyaWJ1dGU8U1ZHTmFtZXM6OnhBdHRyLCAmU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVu
dDo6bV94PigpOwotICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjp5QXR0
ciwgJlNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQ6Om1feT4oKTsKLSAgICByZWdpc3RyeS5yZWdp
c3RlckF0dHJpYnV0ZTxTVkdOYW1lczo6ZHhBdHRyLCAmU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVu
dDo6bV9keD4oKTsKLSAgICByZWdpc3RyeS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1lczo6ZHlB
dHRyLCAmU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudDo6bV9keT4oKTsKLX0KLQogdm9pZCBTVkdU
ZXh0UG9zaXRpb25pbmdFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogewogICAgIGlmIChuYW1lID09IFNW
R05hbWVzOjp4QXR0cikgewotICAgICAgICBTVkdMZW5ndGhMaXN0VmFsdWVzIG5ld0xpc3Q7Ci0g
ICAgICAgIG5ld0xpc3QucGFyc2UodmFsdWUsIExlbmd0aE1vZGVXaWR0aCk7Ci0gICAgICAgIG1f
eC5kZXRhY2hBbmltYXRlZExpc3RXcmFwcGVycyhhdHRyaWJ1dGVPd25lclByb3h5KCksIG5ld0xp
c3Quc2l6ZSgpKTsKLSAgICAgICAgbV94LnNldFZhbHVlKFdURk1vdmUobmV3TGlzdCkpOworICAg
ICAgICBtX3gtPmJhc2VWYWwoKS0+cGFyc2UodmFsdWUpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnlBdHRyKSB7Ci0gICAgICAgIFNWR0xlbmd0
aExpc3RWYWx1ZXMgbmV3TGlzdDsKLSAgICAgICAgbmV3TGlzdC5wYXJzZSh2YWx1ZSwgTGVuZ3Ro
TW9kZUhlaWdodCk7Ci0gICAgICAgIG1feS5kZXRhY2hBbmltYXRlZExpc3RXcmFwcGVycyhhdHRy
aWJ1dGVPd25lclByb3h5KCksIG5ld0xpc3Quc2l6ZSgpKTsKLSAgICAgICAgbV95LnNldFZhbHVl
KFdURk1vdmUobmV3TGlzdCkpOworICAgICAgICBtX3ktPmJhc2VWYWwoKS0+cGFyc2UodmFsdWUp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OmR4
QXR0cikgewotICAgICAgICBTVkdMZW5ndGhMaXN0VmFsdWVzIG5ld0xpc3Q7Ci0gICAgICAgIG5l
d0xpc3QucGFyc2UodmFsdWUsIExlbmd0aE1vZGVXaWR0aCk7Ci0gICAgICAgIG1fZHguZGV0YWNo
QW5pbWF0ZWRMaXN0V3JhcHBlcnMoYXR0cmlidXRlT3duZXJQcm94eSgpLCBuZXdMaXN0LnNpemUo
KSk7Ci0gICAgICAgIG1fZHguc2V0VmFsdWUoV1RGTW92ZShuZXdMaXN0KSk7CisgICAgICAgIG1f
ZHgtPmJhc2VWYWwoKS0+cGFyc2UodmFsdWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAg
ICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OmR5QXR0cikgewotICAgICAgICBTVkdMZW5ndGhMaXN0
VmFsdWVzIG5ld0xpc3Q7Ci0gICAgICAgIG5ld0xpc3QucGFyc2UodmFsdWUsIExlbmd0aE1vZGVI
ZWlnaHQpOwotICAgICAgICBtX2R5LmRldGFjaEFuaW1hdGVkTGlzdFdyYXBwZXJzKGF0dHJpYnV0
ZU93bmVyUHJveHkoKSwgbmV3TGlzdC5zaXplKCkpOwotICAgICAgICBtX2R5LnNldFZhbHVlKFdU
Rk1vdmUobmV3TGlzdCkpOworICAgICAgICBtX2R5LT5iYXNlVmFsKCktPnBhcnNlKHZhbHVlKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTE4LDcgKzk2LDcgQEAgYm9vbCBTVkdUZXh0
UG9zaXRpb25pbmdFbGVtZW50Ojppc1ByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiBuYW0KIAogdm9pZCBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50OjpzdmdBdHRyaWJ1
dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogewotICAgIGlmIChpc0tu
b3duQXR0cmlidXRlKGF0dHJOYW1lKSkgeworICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tu
b3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewogICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1
YXJkIGd1YXJkKCp0aGlzKTsKIAogICAgICAgICBpZiAoYXR0ck5hbWUgIT0gU1ZHTmFtZXM6OnJv
dGF0ZUF0dHIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBvc2l0aW9u
aW5nRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQb3NpdGlvbmluZ0VsZW1l
bnQuaAppbmRleCAzOGJhNGMwZWNkMjc0OTliMDY5YWQzY2YwNDlkMWY2NzMxYjBjYTRiLi40NWQ1
YzkzNDYzOTdhOTNlMDljMDg2ZmQ3NDQ2MmQ0NWQ4Yjg5YzFmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LmgKQEAgLTIxLDcgKzIxLDYgQEAKIAog
I3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJTVkdBbmltYXRlZExlbmd0aExpc3QuaCIKICNpbmNs
dWRlICJTVkdUZXh0Q29udGVudEVsZW1lbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAt
MzYsMTYgKzM1LDE2IEBAIHB1YmxpYzoKICAgICAKICAgICB1c2luZyBQcm9wZXJ0eVJlZ2lzdHJ5
ID0gU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5PFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQsIFNW
R1RleHRDb250ZW50RWxlbWVudD47CiAKLSAgICBjb25zdCBTVkdMZW5ndGhMaXN0VmFsdWVzJiB4
KCkgY29uc3QgeyByZXR1cm4gbV94LmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25lclByb3h5KCkp
OyB9Ci0gICAgY29uc3QgU1ZHTGVuZ3RoTGlzdFZhbHVlcyYgeSgpIGNvbnN0IHsgcmV0dXJuIG1f
eS5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAgIGNvbnN0IFNWR0xl
bmd0aExpc3RWYWx1ZXMmIGR4KCkgY29uc3QgeyByZXR1cm4gbV9keC5jdXJyZW50VmFsdWUoYXR0
cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAgIGNvbnN0IFNWR0xlbmd0aExpc3RWYWx1ZXMmIGR5
KCkgY29uc3QgeyByZXR1cm4gbV9keS5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgp
KTsgfQorICAgIGNvbnN0IFNWR0xlbmd0aExpc3QmIHgoKSBjb25zdCB7IHJldHVybiBtX3gtPmN1
cnJlbnRWYWx1ZSgpOyB9CisgICAgY29uc3QgU1ZHTGVuZ3RoTGlzdCYgeSgpIGNvbnN0IHsgcmV0
dXJuIG1feS0+Y3VycmVudFZhbHVlKCk7IH0KKyAgICBjb25zdCBTVkdMZW5ndGhMaXN0JiBkeCgp
IGNvbnN0IHsgcmV0dXJuIG1fZHgtPmN1cnJlbnRWYWx1ZSgpOyB9CisgICAgY29uc3QgU1ZHTGVu
Z3RoTGlzdCYgZHkoKSBjb25zdCB7IHJldHVybiBtX2R5LT5jdXJyZW50VmFsdWUoKTsgfQogICAg
IGNvbnN0IFNWR051bWJlckxpc3QmIHJvdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcm90YXRlLT5j
dXJyZW50VmFsdWUoKTsgfQogCi0gICAgUmVmUHRyPFNWR0FuaW1hdGVkTGVuZ3RoTGlzdD4geEFu
aW1hdGVkKCkgeyByZXR1cm4gbV94LmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94
eSgpKTsgfQotICAgIFJlZlB0cjxTVkdBbmltYXRlZExlbmd0aExpc3Q+IHlBbmltYXRlZCgpIHsg
cmV0dXJuIG1feS5hbmltYXRlZFByb3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAg
ICBSZWZQdHI8U1ZHQW5pbWF0ZWRMZW5ndGhMaXN0PiBkeEFuaW1hdGVkKCkgeyByZXR1cm4gbV9k
eC5hbmltYXRlZFByb3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBSZWZQdHI8
U1ZHQW5pbWF0ZWRMZW5ndGhMaXN0PiBkeUFuaW1hdGVkKCkgeyByZXR1cm4gbV9keS5hbmltYXRl
ZFByb3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KKyAgICBTVkdBbmltYXRlZExlbmd0
aExpc3QmIHhBbmltYXRlZCgpIHsgcmV0dXJuIG1feDsgfQorICAgIFNWR0FuaW1hdGVkTGVuZ3Ro
TGlzdCYgeUFuaW1hdGVkKCkgeyByZXR1cm4gbV95OyB9CisgICAgU1ZHQW5pbWF0ZWRMZW5ndGhM
aXN0JiBkeEFuaW1hdGVkKCkgeyByZXR1cm4gbV9keDsgfQorICAgIFNWR0FuaW1hdGVkTGVuZ3Ro
TGlzdCYgZHlBbmltYXRlZCgpIHsgcmV0dXJuIG1fZHk7IH0KICAgICBTVkdBbmltYXRlZE51bWJl
ckxpc3QmIHJvdGF0ZUFuaW1hdGVkKCkgeyByZXR1cm4gbV9yb3RhdGU7IH0KIAogcHJvdGVjdGVk
OgpAQCAtNTksMjEgKzU4LDE0IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb2xsZWN0U3R5bGVGb3JQ
cmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0
cmluZyYsIE11dGFibGVTdHlsZVByb3BlcnRpZXMmKSBmaW5hbDsKIAogICAgIGNvbnN0IFNWR0F0
dHJpYnV0ZU93bmVyUHJveHkmIGF0dHJpYnV0ZU93bmVyUHJveHkoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBtX2F0dHJpYnV0ZU93bmVyUHJveHk7IH0KLSAgICBzdGF0aWMgdm9pZCByZWdpc3Rl
ckF0dHJpYnV0ZXMoKTsKLQogICAgIGNvbnN0IFNWR1Byb3BlcnR5UmVnaXN0cnkmIHByb3BlcnR5
UmVnaXN0cnkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3Byb3BlcnR5UmVnaXN0cnk7IH0K
IAotICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
YXR0cmlidXRlTmFtZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5
Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpIHx8IFByb3BlcnR5UmVnaXN0cnk6Omlz
S25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7Ci0gICAgfQotCiAgICAgQXR0cmlidXRlT3du
ZXJQcm94eSBtX2F0dHJpYnV0ZU93bmVyUHJveHkgeyAqdGhpcyB9OwogICAgIFByb3BlcnR5UmVn
aXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKLSAgICBTVkdBbmltYXRlZExlbmd0
aExpc3RBdHRyaWJ1dGUgbV94OwotICAgIFNWR0FuaW1hdGVkTGVuZ3RoTGlzdEF0dHJpYnV0ZSBt
X3k7Ci0gICAgU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0QXR0cmlidXRlIG1fZHg7Ci0gICAgU1ZHQW5p
bWF0ZWRMZW5ndGhMaXN0QXR0cmlidXRlIG1fZHk7CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3Ro
TGlzdD4gbV94IHsgU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0OjpjcmVhdGUodGhpcywgTGVuZ3RoTW9k
ZVdpZHRoKSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aExpc3Q+IG1feSB7IFNWR0FuaW1h
dGVkTGVuZ3RoTGlzdDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQpIH07CisgICAgUmVm
PFNWR0FuaW1hdGVkTGVuZ3RoTGlzdD4gbV9keCB7IFNWR0FuaW1hdGVkTGVuZ3RoTGlzdDo6Y3Jl
YXRlKHRoaXMsIExlbmd0aE1vZGVXaWR0aCkgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGhM
aXN0PiBtX2R5IHsgU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0OjpjcmVhdGUodGhpcywgTGVuZ3RoTW9k
ZUhlaWdodCkgfTsKICAgICBSZWY8U1ZHQW5pbWF0ZWROdW1iZXJMaXN0PiBtX3JvdGF0ZSB7IFNW
R0FuaW1hdGVkTnVtYmVyTGlzdDo6Y3JlYXRlKHRoaXMpIH07CiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHVXNlRWxlbWVudC5jcHAKaW5kZXggMDYxNDJhNGNmYzk5OTc5YTQ4ZGJhZTY0YWMyMTZlNzI5
MmJjMDU2ZS4uYTlhZTM1MzZiZmY4YzU2MWNiM2QzYTRjZmRiOTcyN2Y1MzFmMmZlMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcApAQCAtNSw3ICs1LDcgQEAKICAqIENvcHlyaWdo
dCAoQykgMjAxMSBUb3JjaCBNb2JpbGUgKEJlaWppbmcpIENvLiBMdGQuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTIgVW5pdmVyc2l0eSBvZiBTemVnZWQKICAqIENv
cHlyaWdodCAoQykgMjAxMiBSZW5hdGEgSG9kb3ZhbiA8cmVuaUB3ZWJraXQub3JnPgotICogQ29w
eXJpZ2h0IChDKSAyMDE1LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDE1LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCkBAIC01NCw3ICs1NCwxNCBAQCBpbmxpbmUgU1ZHVXNlRWxlbWVu
dDo6U1ZHVXNlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYg
ZG9jdQogewogICAgIEFTU0VSVChoYXNDdXN0b21TdHlsZVJlc29sdmVDYWxsYmFja3MoKSk7CiAg
ICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OnVzZVRhZykpOwotICAgIHJlZ2lzdGVyQXR0
cmlidXRlcygpOworCisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOworICAgIHN0
ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7CisgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJl
Z2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6OnhBdHRyLCAmU1ZHVXNlRWxlbWVudDo6bV94PigpOwor
ICAgICAgICBQcm9wZXJ0eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5PFNWR05hbWVzOjp5QXR0
ciwgJlNWR1VzZUVsZW1lbnQ6Om1feT4oKTsKKyAgICAgICAgUHJvcGVydHlSZWdpc3RyeTo6cmVn
aXN0ZXJQcm9wZXJ0eTxTVkdOYW1lczo6d2lkdGhBdHRyLCAmU1ZHVXNlRWxlbWVudDo6bV93aWR0
aD4oKTsKKyAgICAgICAgUHJvcGVydHlSZWdpc3RyeTo6cmVnaXN0ZXJQcm9wZXJ0eTxTVkdOYW1l
czo6aGVpZ2h0QXR0ciwgJlNWR1VzZUVsZW1lbnQ6Om1faGVpZ2h0PigpOworICAgIH0pOwogfQog
CiBSZWY8U1ZHVXNlRWxlbWVudD4gU1ZHVXNlRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKQEAgLTY4LDI5ICs3NSwxOCBAQCBT
VkdVc2VFbGVtZW50Ojp+U1ZHVXNlRWxlbWVudCgpCiAgICAgICAgIG1fZXh0ZXJuYWxEb2N1bWVu
dC0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsKIH0KIAotdm9pZCBTVkdVc2VFbGVtZW50OjpyZWdpc3Rl
ckF0dHJpYnV0ZXMoKQotewotICAgIGF1dG8mIHJlZ2lzdHJ5ID0gYXR0cmlidXRlUmVnaXN0cnko
KTsKLSAgICBpZiAoIXJlZ2lzdHJ5LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIHJl
Z2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjp4QXR0ciwgJlNWR1VzZUVsZW1lbnQ6
Om1feD4oKTsKLSAgICByZWdpc3RyeS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1lczo6eUF0dHIs
ICZTVkdVc2VFbGVtZW50OjptX3k+KCk7Ci0gICAgcmVnaXN0cnkucmVnaXN0ZXJBdHRyaWJ1dGU8
U1ZHTmFtZXM6OndpZHRoQXR0ciwgJlNWR1VzZUVsZW1lbnQ6Om1fd2lkdGg+KCk7Ci0gICAgcmVn
aXN0cnkucmVnaXN0ZXJBdHRyaWJ1dGU8U1ZHTmFtZXM6OmhlaWdodEF0dHIsICZTVkdVc2VFbGVt
ZW50OjptX2hlaWdodD4oKTsKLX0KLQogdm9pZCBTVkdVc2VFbGVtZW50OjpwYXJzZUF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQog
ewogICAgIFNWR1BhcnNpbmdFcnJvciBwYXJzZUVycm9yID0gTm9FcnJvcjsKIAogICAgIGlmIChu
YW1lID09IFNWR05hbWVzOjp4QXR0cikKLSAgICAgICAgbV94LnNldFZhbHVlKFNWR0xlbmd0aFZh
bHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAg
ICAgICBtX3gtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExl
bmd0aE1vZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKICAgICBlbHNlIGlmIChuYW1lID09
IFNWR05hbWVzOjp5QXR0cikKLSAgICAgICAgbV95LnNldFZhbHVlKFNWR0xlbmd0aFZhbHVlOjpj
b25zdHJ1Y3QoTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKKyAgICAgICAg
bV95LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhN
b2RlSGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZH
TmFtZXM6OndpZHRoQXR0cikKLSAgICAgICAgbV93aWR0aC5zZXRWYWx1ZShTVkdMZW5ndGhWYWx1
ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IsIEZvcmJpZE5l
Z2F0aXZlTGVuZ3RocykpOworICAgICAgICBtX3dpZHRoLT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZH
TGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlV2lkdGgsIHZhbHVlLCBwYXJzZUVycm9y
LCBGb3JiaWROZWdhdGl2ZUxlbmd0aHMpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVz
OjpoZWlnaHRBdHRyKQotICAgICAgICBtX2hlaWdodC5zZXRWYWx1ZShTVkdMZW5ndGhWYWx1ZTo6
Y29uc3RydWN0KExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yLCBGb3JiaWROZWdh
dGl2ZUxlbmd0aHMpKTsKKyAgICAgICAgbV9oZWlnaHQtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdM
ZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9y
LCBGb3JiaWROZWdhdGl2ZUxlbmd0aHMpKTsKIAogICAgIHJlcG9ydEF0dHJpYnV0ZVBhcnNpbmdF
cnJvcihwYXJzZUVycm9yLCBuYW1lLCB2YWx1ZSk7CiAKQEAgLTE2Myw3ICsxNTksNyBAQCB2b2lk
IFNWR1VzZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYg
YXR0ck5hbWUpCiB7CiAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7
CiAKLSAgICBpZiAoaXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKKyAgICBpZiAoUHJvcGVy
dHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAgICAgdXBkYXRl
UmVsYXRpdmVMZW5ndGhzSW5mb3JtYXRpb24oKTsKICAgICAgICAgaWYgKGF0dHJOYW1lID09IFNW
R05hbWVzOjp3aWR0aEF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmhlaWdodEF0dHIpIHsK
ICAgICAgICAgICAgIC8vIEZJWE1FOiBJdCdzIHVubmVjZXNzYXJpbHkgaW5lZmZpY2llbnQgdG8g
dXBkYXRlIGJvdGggd2lkdGggYW5kIGhlaWdodCBlYWNoIHRpbWUgZWl0aGVyIGlzIGNoYW5nZWQu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuaAppbmRleCBkNmVkYWZlYzdkYTY3OWZlNTFlZGEx
YjE3MWQ5NDE2YTkxODAxNTBjLi42MjFjZTU5MGM3MWYyOWM5YmE0ZTRjYzE0YmU1M2MxNDZkMzJj
YTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmgKQEAgLTIzLDcgKzIzLDYgQEAKIAog
I2luY2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAiQ2FjaGVkU1ZHRG9j
dW1lbnRDbGllbnQuaCIKLSNpbmNsdWRlICJTVkdBbmltYXRlZExlbmd0aC5oIgogI2luY2x1ZGUg
IlNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQuaCIKICNpbmNsdWRlICJTVkdHcmFwaGljc0Vs
ZW1lbnQuaCIKICNpbmNsdWRlICJTVkdVUklSZWZlcmVuY2UuaCIKQEAgLTQ1LDE1ICs0NCwxNSBA
QCBwdWJsaWM6CiAKICAgICBSZW5kZXJFbGVtZW50KiByZW5kZXJlckNsaXBDaGlsZCgpIGNvbnN0
OwogCi0gICAgY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIHgoKSBjb25zdCB7IHJldHVybiBtX3guY3Vy
cmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBjb25zdCBTVkdMZW5ndGhW
YWx1ZSYgeSgpIGNvbnN0IHsgcmV0dXJuIG1feS5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQ
cm94eSgpKTsgfQotICAgIGNvbnN0IFNWR0xlbmd0aFZhbHVlJiB3aWR0aCgpIGNvbnN0IHsgcmV0
dXJuIG1fd2lkdGguY3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBj
b25zdCBTVkdMZW5ndGhWYWx1ZSYgaGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9oZWlnaHQuY3Vy
cmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KKyAgICBjb25zdCBTVkdMZW5ndGhW
YWx1ZSYgeCgpIGNvbnN0IHsgcmV0dXJuIG1feC0+Y3VycmVudFZhbHVlKCk7IH0KKyAgICBjb25z
dCBTVkdMZW5ndGhWYWx1ZSYgeSgpIGNvbnN0IHsgcmV0dXJuIG1feS0+Y3VycmVudFZhbHVlKCk7
IH0KKyAgICBjb25zdCBTVkdMZW5ndGhWYWx1ZSYgd2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3dp
ZHRoLT5jdXJyZW50VmFsdWUoKTsgfQorICAgIGNvbnN0IFNWR0xlbmd0aFZhbHVlJiBoZWlnaHQo
KSBjb25zdCB7IHJldHVybiBtX2hlaWdodC0+Y3VycmVudFZhbHVlKCk7IH0KIAotICAgIFJlZlB0
cjxTVkdBbmltYXRlZExlbmd0aD4geEFuaW1hdGVkKCkgeyByZXR1cm4gbV94LmFuaW1hdGVkUHJv
cGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAgIFJlZlB0cjxTVkdBbmltYXRlZExl
bmd0aD4geUFuaW1hdGVkKCkgeyByZXR1cm4gbV95LmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRl
T3duZXJQcm94eSgpKTsgfQotICAgIFJlZlB0cjxTVkdBbmltYXRlZExlbmd0aD4gd2lkdGhBbmlt
YXRlZCgpIHsgcmV0dXJuIG1fd2lkdGguYW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25lclBy
b3h5KCkpOyB9Ci0gICAgUmVmUHRyPFNWR0FuaW1hdGVkTGVuZ3RoPiBoZWlnaHRBbmltYXRlZCgp
IHsgcmV0dXJuIG1faGVpZ2h0LmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgp
KTsgfQorICAgIFNWR0FuaW1hdGVkTGVuZ3RoJiB4QW5pbWF0ZWQoKSB7IHJldHVybiBtX3g7IH0K
KyAgICBTVkdBbmltYXRlZExlbmd0aCYgeUFuaW1hdGVkKCkgeyByZXR1cm4gbV95OyB9CisgICAg
U1ZHQW5pbWF0ZWRMZW5ndGgmIHdpZHRoQW5pbWF0ZWQoKSB7IHJldHVybiBtX3dpZHRoOyB9Cisg
ICAgU1ZHQW5pbWF0ZWRMZW5ndGgmIGhlaWdodEFuaW1hdGVkKCkgeyByZXR1cm4gbV9oZWlnaHQ7
IH0KIAogcHJpdmF0ZToKICAgICBTVkdVc2VFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBE
b2N1bWVudCYpOwpAQCAtNjUsMTggKzY0LDExIEBAIHByaXZhdGU6CiAgICAgdm9pZCBidWlsZFBl
bmRpbmdSZXNvdXJjZSgpIG92ZXJyaWRlOwogCiAgICAgdXNpbmcgQXR0cmlidXRlT3duZXJQcm94
eSA9IFNWR0F0dHJpYnV0ZU93bmVyUHJveHlJbXBsPFNWR1VzZUVsZW1lbnQsIFNWR0dyYXBoaWNz
RWxlbWVudCwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgU1ZHVVJJUmVmZXJlbmNlPjsK
LSAgICBzdGF0aWMgQXR0cmlidXRlT3duZXJQcm94eTo6QXR0cmlidXRlUmVnaXN0cnkmIGF0dHJp
YnV0ZVJlZ2lzdHJ5KCkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6YXR0cmlidXRlUmVn
aXN0cnkoKTsgfQotICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQXR0cmlidXRlcygpOwogICAgIGNv
bnN0IFNWR0F0dHJpYnV0ZU93bmVyUHJveHkmIGF0dHJpYnV0ZU93bmVyUHJveHkoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBtX2F0dHJpYnV0ZU93bmVyUHJveHk7IH0KIAogICAgIHVzaW5nIFByb3Bl
cnR5UmVnaXN0cnkgPSBTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk8U1ZHVXNlRWxlbWVudCwgU1ZH
R3JhcGhpY3NFbGVtZW50LCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBTVkdVUklSZWZl
cmVuY2U+OwogICAgIGNvbnN0IFNWR1Byb3BlcnR5UmVnaXN0cnkmIHByb3BlcnR5UmVnaXN0cnko
KSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Byb3BlcnR5UmVnaXN0cnk7IH0KIAotICAgIHN0YXRp
YyBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFt
ZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3duQXR0
cmlidXRlKGF0dHJpYnV0ZU5hbWUpIHx8IFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1
dGUoYXR0cmlidXRlTmFtZSk7Ci0gICAgfQotCiAgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKIApA
QCAtMTA4LDEwICsxMDAsMTAgQEAgcHJpdmF0ZToKIAogICAgIEF0dHJpYnV0ZU93bmVyUHJveHkg
bV9hdHRyaWJ1dGVPd25lclByb3h5IHsgKnRoaXMgfTsKICAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1f
cHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07Ci0gICAgU1ZHQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1
dGUgbV94IHsgTGVuZ3RoTW9kZVdpZHRoIH07Ci0gICAgU1ZHQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1
dGUgbV95IHsgTGVuZ3RoTW9kZUhlaWdodCB9OwotICAgIFNWR0FuaW1hdGVkTGVuZ3RoQXR0cmli
dXRlIG1fd2lkdGggeyBMZW5ndGhNb2RlV2lkdGggfTsKLSAgICBTVkdBbmltYXRlZExlbmd0aEF0
dHJpYnV0ZSBtX2hlaWdodCB7IExlbmd0aE1vZGVIZWlnaHQgfTsKKyAgICBSZWY8U1ZHQW5pbWF0
ZWRMZW5ndGg+IG1feCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9k
ZVdpZHRoKSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV95IHsgU1ZHQW5pbWF0ZWRM
ZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0KSB9OworICAgIFJlZjxTVkdBbmlt
YXRlZExlbmd0aD4gbV93aWR0aCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVu
Z3RoTW9kZVdpZHRoKSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV9oZWlnaHQgeyBT
VkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQpIH07CiAKICAg
ICBib29sIG1faGF2ZUZpcmVkTG9hZEV2ZW50IHsgZmFsc2UgfTsKICAgICBib29sIG1fc2hhZG93
VHJlZU5lZWRzVXBkYXRlIHsgdHJ1ZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1ZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmFsdWUuaAppbmRleCA3ZDBkOThl
ODI3MmNiMTQ5OGRkNjhhYjA1NDFkOTNhZTNjZWEwYTA5Li41M2YxZTVmZDM1YWYzNjJmY2UwZmZi
YjYyYzg5ZmJjY2MwOTIyMWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmFs
dWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmFsdWUuaApAQCAtMjUsMTUgKzI1LDgg
QEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJDb2xvci5oIgotI2luY2x1ZGUgIkZsb2F0
UmVjdC5oIgogI2luY2x1ZGUgIlNWR0FuZ2xlVmFsdWUuaCIKLSNpbmNsdWRlICJTVkdMZW5ndGhM
aXN0VmFsdWVzLmgiCi0jaW5jbHVkZSAiU1ZHTGVuZ3RoVmFsdWUuaCIKLSNpbmNsdWRlICJTVkdN
YXJrZXJUeXBlcy5oIgogI2luY2x1ZGUgIlNWR1BhdGhCeXRlU3RyZWFtLmgiCi0jaW5jbHVkZSAi
U1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlLmgiCi0jaW5jbHVkZSAiU1ZHUHJvcGVydHlUcmFp
dHMuaCIKICNpbmNsdWRlICJTVkdUcmFuc2Zvcm1MaXN0VmFsdWVzLmgiCiAKICNpbmNsdWRlIDx3
dGYvVmFyaWFudC5oPgpAQCAtNDMsOCArMzYsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2lu
ZyBTVkdWYWx1ZVZhcmlhbnQgPSBWYXJpYW50PAogICAgIHN0ZDo6cGFpcjxTVkdBbmdsZVZhbHVl
LCB1bnNpZ25lZD4qLAogICAgIHVuc2lnbmVkKiwKLSAgICBTVkdMZW5ndGhWYWx1ZSosCi0gICAg
U1ZHTGVuZ3RoTGlzdFZhbHVlcyosCiAgICAgU1ZHUGF0aEJ5dGVTdHJlYW0qLAogICAgIFNWR1Ry
YW5zZm9ybUxpc3RWYWx1ZXMqCiA+OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3By
b3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFjY2Vzc29ySW1wbC5oIGIvU291cmNlL1dlYkNv
cmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFjY2Vzc29ySW1wbC5oCmluZGV4
IGE0ODUwM2MzYmQyMjY1ZTc0MTMxZWQzOWQzMGU2NjQ0ZmUxNGE0MTIuLjM0NGU2YzYwOWM4MjQy
OWYxOWNhM2EzNDQ1MDZkMTAwZGYzYWI1NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlBY2Nlc3NvckltcGwuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5QWNjZXNzb3JJbXBs
LmgKQEAgLTc2LDYgKzc2LDUzIEBAIHByaXZhdGU6CiAgICAgfQogfTsKIAordGVtcGxhdGU8dHlw
ZW5hbWUgT3duZXJUeXBlPgorY2xhc3MgU1ZHQW5pbWF0ZWRMZW5ndGhBY2Nlc3NvciBmaW5hbCA6
IHB1YmxpYyBTVkdBbmltYXRlZFByb3BlcnR5QWNjZXNzb3I8T3duZXJUeXBlLCBTVkdBbmltYXRl
ZExlbmd0aD4geworICAgIHVzaW5nIEJhc2UgPSBTVkdBbmltYXRlZFByb3BlcnR5QWNjZXNzb3I8
T3duZXJUeXBlLCBTVkdBbmltYXRlZExlbmd0aD47CisgICAgdXNpbmcgQmFzZTo6cHJvcGVydHk7
CisKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlOjpCYXNlOworICAgIHRlbXBsYXRlPFJlZjxTVkdB
bmltYXRlZExlbmd0aD4gT3duZXJUeXBlOjoqcHJvcGVydHk+CisgICAgY29uc3RleHByIHN0YXRp
YyBjb25zdCBTVkdNZW1iZXJBY2Nlc3NvcjxPd25lclR5cGU+JiBzaW5nbGV0b24oKSB7IHJldHVy
biBCYXNlOjp0ZW1wbGF0ZSBzaW5nbGV0b248U1ZHQW5pbWF0ZWRMZW5ndGhBY2Nlc3NvciwgcHJv
cGVydHk+KCk7IH0KKworcHJpdmF0ZToKKyAgICBib29sIGlzQW5pbWF0ZWRMZW5ndGgoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQXR0
cmlidXRlQW5pbWF0b3I+IGNyZWF0ZUFuaW1hdG9yKE93bmVyVHlwZSYgb3duZXIsIGNvbnN0IFF1
YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwg
Q2FsY01vZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKSBj
b25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgU1ZHTGVuZ3RoTW9kZSBsZW5ndGhNb2RlID0gcHJv
cGVydHkob3duZXIpLT5iYXNlVmFsKCktPnZhbHVlKCkudW5pdE1vZGUoKTsKKyAgICAgICAgcmV0
dXJuIFNWR0FuaW1hdGVkTGVuZ3RoQW5pbWF0b3I6OmNyZWF0ZShhdHRyaWJ1dGVOYW1lLCBwcm9w
ZXJ0eShvd25lciksIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0Fk
ZGl0aXZlLCBsZW5ndGhNb2RlKTsKKyAgICB9CisKKyAgICB2b2lkIGFwcGVuZEFuaW1hdGVkSW5z
dGFuY2UoT3duZXJUeXBlJiBvd25lciwgU1ZHQXR0cmlidXRlQW5pbWF0b3ImIGFuaW1hdG9yKSBj
b25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgc3RhdGljX2Nhc3Q8U1ZHQW5pbWF0ZWRMZW5ndGhB
bmltYXRvciY+KGFuaW1hdG9yKS5hcHBlbmRBbmltYXRlZEluc3RhbmNlKHByb3BlcnR5KG93bmVy
KSk7CisgICAgfQorfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgT3duZXJUeXBlPgorY2xhc3MgU1ZH
QW5pbWF0ZWRMZW5ndGhMaXN0QWNjZXNzb3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9w
ZXJ0eUFjY2Vzc29yPE93bmVyVHlwZSwgU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0PiB7CisgICAgdXNp
bmcgQmFzZSA9IFNWR0FuaW1hdGVkUHJvcGVydHlBY2Nlc3NvcjxPd25lclR5cGUsIFNWR0FuaW1h
dGVkTGVuZ3RoTGlzdD47CisgICAgdXNpbmcgQmFzZTo6cHJvcGVydHk7CisKK3B1YmxpYzoKKyAg
ICB1c2luZyBCYXNlOjpCYXNlOworICAgIHRlbXBsYXRlPFJlZjxTVkdBbmltYXRlZExlbmd0aExp
c3Q+IE93bmVyVHlwZTo6KnByb3BlcnR5PgorICAgIGNvbnN0ZXhwciBzdGF0aWMgY29uc3QgU1ZH
TWVtYmVyQWNjZXNzb3I8T3duZXJUeXBlPiYgc2luZ2xldG9uKCkgeyByZXR1cm4gQmFzZTo6dGVt
cGxhdGUgc2luZ2xldG9uPFNWR0FuaW1hdGVkTGVuZ3RoTGlzdEFjY2Vzc29yLCBwcm9wZXJ0eT4o
KTsgfQorCitwcml2YXRlOgorICAgIHN0ZDo6dW5pcXVlX3B0cjxTVkdBdHRyaWJ1dGVBbmltYXRv
cj4gY3JlYXRlQW5pbWF0b3IoT3duZXJUeXBlJiBvd25lciwgY29uc3QgUXVhbGlmaWVkTmFtZSYg
YXR0cmlidXRlTmFtZSwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxj
TW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUpIGNvbnN0IGZpbmFsCisg
ICAgeworICAgICAgICByZXR1cm4gU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0QW5pbWF0b3I6OmNyZWF0
ZShhdHRyaWJ1dGVOYW1lLCBwcm9wZXJ0eShvd25lciksIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2Rl
LCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlLCBMZW5ndGhNb2RlV2lkdGgpOworICAgIH0KKwor
ICAgIHZvaWQgYXBwZW5kQW5pbWF0ZWRJbnN0YW5jZShPd25lclR5cGUmIG93bmVyLCBTVkdBdHRy
aWJ1dGVBbmltYXRvciYgYW5pbWF0b3IpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICBzdGF0
aWNfY2FzdDxTVkdBbmltYXRlZExlbmd0aExpc3RBbmltYXRvciY+KGFuaW1hdG9yKS5hcHBlbmRB
bmltYXRlZEluc3RhbmNlKHByb3BlcnR5KG93bmVyKSk7CisgICAgfQorfTsKKwogdGVtcGxhdGU8
dHlwZW5hbWUgT3duZXJUeXBlPgogY2xhc3MgU1ZHQW5pbWF0ZWROdW1iZXJBY2Nlc3NvciBmaW5h
bCA6IHB1YmxpYyBTVkdBbmltYXRlZFByb3BlcnR5QWNjZXNzb3I8T3duZXJUeXBlLCBTVkdBbmlt
YXRlZE51bWJlcj4gewogICAgIHVzaW5nIEJhc2UgPSBTVkdBbmltYXRlZFByb3BlcnR5QWNjZXNz
b3I8T3duZXJUeXBlLCBTVkdBbmltYXRlZE51bWJlcj47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3IuaCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvci5oCmlu
ZGV4IDhkNGFhNmJmZWY4MTJkODI0MjI3NWI2ZjMxNTI0ZjdiMDI4NTljZWMuLmExOTc5NDEyYzQ2
NzQ4YTI3YWNhNzhhZmQ3MDk0YjQ1MGIxNTA4MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvci5oCkBA
IC03NSw2ICs3NSw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYXBwbHkoU1ZHRWxlbWVudCogdGFy
Z2V0RWxlbWVudCkgb3ZlcnJpZGUKICAgICB7CisgICAgICAgIGlmIChpc0FuaW1hdGVkU3R5bGVQ
cm9wZXJ0eUFuaWFtdG9yKHRhcmdldEVsZW1lbnQpKQorICAgICAgICAgICAgYXBwbHlBbmltYXRl
ZFN0eWxlUHJvcGVydHlDaGFuZ2UodGFyZ2V0RWxlbWVudCwgbV9hbmltYXRlZC0+YW5pbVZhbEFz
U3RyaW5nKCkpOwogICAgICAgICBhcHBseUFuaW1hdGVkUHJvcGVydHlDaGFuZ2UodGFyZ2V0RWxl
bWVudCk7CiAgICAgfQogCkBAIC04OCw2ICs5MCw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGlu
c3RhbmNlLT5pbnN0YW5jZVN0b3BBbmltYXRpb24oKTsKIAogICAgICAgICBhcHBseUFuaW1hdGVk
UHJvcGVydHlDaGFuZ2UodGFyZ2V0RWxlbWVudCk7CisgICAgICAgIGlmIChpc0FuaW1hdGVkU3R5
bGVQcm9wZXJ0eUFuaWFtdG9yKHRhcmdldEVsZW1lbnQpKQorICAgICAgICAgICAgcmVtb3ZlQW5p
bWF0ZWRTdHlsZVByb3BlcnR5KHRhcmdldEVsZW1lbnQpOwogICAgIH0KIAogICAgIGZsb2F0IGNh
bGN1bGF0ZURpc3RhbmNlKFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQsIGNvbnN0IFN0cmluZyYg
ZnJvbSwgY29uc3QgU3RyaW5nJiB0bykgY29uc3Qgb3ZlcnJpZGUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvckltcGwu
aCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlBbmlt
YXRvckltcGwuaAppbmRleCA1ZDkxMjVmNmI4YTcxMmM1OTk3NjE1MTEzN2FiNzgxYmY2ZmFiODhl
Li4wNWE4NTgzY2QyNmY3NTA3NGFhZTJlOTgzM2E3MmMyYjVhYWI3ODVjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3JJ
bXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9w
ZXJ0eUFuaW1hdG9ySW1wbC5oCkBAIC03Nyw2ICs3Nyw0OCBAQCBwcml2YXRlOgogICAgIH0KIH07
CiAKK2NsYXNzIFNWR0FuaW1hdGVkTGVuZ3RoQW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5p
bWF0ZWRQcm9wZXJ0eUFuaW1hdG9yPFNWR0FuaW1hdGVkTGVuZ3RoLCBTVkdBbmltYXRpb25MZW5n
dGhGdW5jdGlvbj4geworICAgIHVzaW5nIEJhc2UgPSBTVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0
b3I8U1ZHQW5pbWF0ZWRMZW5ndGgsIFNWR0FuaW1hdGlvbkxlbmd0aEZ1bmN0aW9uPjsKKworcHVi
bGljOgorICAgIFNWR0FuaW1hdGVkTGVuZ3RoQW5pbWF0b3IoY29uc3QgUXVhbGlmaWVkTmFtZSYg
YXR0cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiYgYW5pbWF0ZWQsIEFuaW1hdGlv
bk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRl
ZCwgYm9vbCBpc0FkZGl0aXZlLCBTVkdMZW5ndGhNb2RlIGxlbmd0aE1vZGUpCisgICAgICAgIDog
QmFzZShhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlz
QWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUsIGxlbmd0aE1vZGUpCisgICAgeworICAgIH0KKworICAg
IHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBS
ZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+JiBhbmltYXRlZCwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25N
b2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRp
dmUsIFNWR0xlbmd0aE1vZGUgbGVuZ3RoTW9kZSkKKyAgICB7CisgICAgICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVkTGVuZ3RoQW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFu
aW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2
ZSwgbGVuZ3RoTW9kZSk7CisgICAgfQorCitwcml2YXRlOgorICAgIHZvaWQgcHJvZ3Jlc3MoU1ZH
RWxlbWVudCogdGFyZ2V0RWxlbWVudCwgZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQgcmVwZWF0
Q291bnQpIGZpbmFsCisgICAgeworICAgICAgICBtX2Z1bmN0aW9uLnByb2dyZXNzKHRhcmdldEVs
ZW1lbnQsIHBlcmNlbnRhZ2UsIHJlcGVhdENvdW50LCBtX2FuaW1hdGVkLT5hbmltVmFsKCktPnZh
bHVlKCkpOworICAgIH0KK307CisKK2NsYXNzIFNWR0FuaW1hdGVkTGVuZ3RoTGlzdEFuaW1hdG9y
IGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjxTVkdBbmltYXRlZExl
bmd0aExpc3QsIFNWR0FuaW1hdGlvbkxlbmd0aExpc3RGdW5jdGlvbj4geworICAgIHVzaW5nIEJh
c2UgPSBTVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3I8U1ZHQW5pbWF0ZWRMZW5ndGhMaXN0LCBT
VkdBbmltYXRpb25MZW5ndGhMaXN0RnVuY3Rpb24+OworCitwdWJsaWM6CisgICAgU1ZHQW5pbWF0
ZWRMZW5ndGhMaXN0QW5pbWF0b3IoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwg
UmVmPFNWR0FuaW1hdGVkTGVuZ3RoTGlzdD4mIGFuaW1hdGVkLCBBbmltYXRpb25Nb2RlIGFuaW1h
dGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNB
ZGRpdGl2ZSwgU1ZHTGVuZ3RoTW9kZSBsZW5ndGhNb2RlKQorICAgICAgICA6IEJhc2UoYXR0cmli
dXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVk
LCBpc0FkZGl0aXZlLCBsZW5ndGhNb2RlKQorICAgIHsKKyAgICB9CisKKyAgICBzdGF0aWMgYXV0
byBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1h
dGVkTGVuZ3RoTGlzdD4mIGFuaW1hdGVkLCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENh
bGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSwgU1ZH
TGVuZ3RoTW9kZSBsZW5ndGhNb2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8U1ZHQW5pbWF0ZWRMZW5ndGhMaXN0QW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1h
dGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSwg
bGVuZ3RoTW9kZSk7CisgICAgfQorCitwcml2YXRlOgorICAgIHZvaWQgcHJvZ3Jlc3MoU1ZHRWxl
bWVudCogdGFyZ2V0RWxlbWVudCwgZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQgcmVwZWF0Q291
bnQpIGZpbmFsCisgICAgeworICAgICAgICBtX2Z1bmN0aW9uLnByb2dyZXNzKHRhcmdldEVsZW1l
bnQsIHBlcmNlbnRhZ2UsIHJlcGVhdENvdW50LCBtX2FuaW1hdGVkLT5hbmltVmFsKCkpOworICAg
IH0KK307CisKIGNsYXNzIFNWR0FuaW1hdGVkTnVtYmVyQW5pbWF0b3IgZmluYWwgOiBwdWJsaWMg
U1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9yPFNWR0FuaW1hdGVkTnVtYmVyLCBTVkdBbmltYXRp
b25OdW1iZXJGdW5jdGlvbj4gewogICAgIGZyaWVuZCBjbGFzcyBTVkdBbmltYXRlZFByb3BlcnR5
UGFpckFuaW1hdG9yPFNWR0FuaW1hdGVkTnVtYmVyQW5pbWF0b3IsIFNWR0FuaW1hdGVkTnVtYmVy
QW5pbWF0b3I+OwogICAgIGZyaWVuZCBjbGFzcyBTVkdBbmltYXRlZE51bWJlclBhaXJBbmltYXRv
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVk
UHJvcGVydHlJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRl
ZFByb3BlcnR5SW1wbC5oCmluZGV4IDNhNjc2MjIyOGU1MmFlNGU2NzVkN2RmY2ZiNmRjZTAwNWQw
YTVjMDQuLmNkZjAwOTk3YjczOTdjODkxOGMyYzQ2NTRjZWVlNDBjZTBlMTQ4M2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlJbXBs
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0
eUltcGwuaApAQCAtMjcsMTIgKzI3LDEyIEBACiAKICNpbmNsdWRlICJTVkdBbmltYXRlZEFuZ2xl
LmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbi5oIgotI2luY2x1ZGUgIlNWR0Fu
aW1hdGVkTGVuZ3RoLmgiCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0LmgiCiAjaW5j
bHVkZSAiU1ZHQW5pbWF0ZWRQcmltaXRpdmVQcm9wZXJ0eS5oIgogI2luY2x1ZGUgIlNWR0FuaW1h
dGVkUHJvcGVydHlMaXN0LmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0Lmgi
CiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRWYWx1ZVByb3BlcnR5LmgiCisjaW5jbHVkZSAiU1ZHTGVu
Z3RoLmgiCisjaW5jbHVkZSAiU1ZHTGVuZ3RoTGlzdC5oIgogI2luY2x1ZGUgIlNWR051bWJlckxp
c3QuaCIKICNpbmNsdWRlICJTVkdQb2ludExpc3QuaCIKICNpbmNsdWRlICJTVkdQcmVzZXJ2ZUFz
cGVjdFJhdGlvLmgiCkBAIC00NSw4ICs0NSwxMiBAQCB1c2luZyBTVkdBbmltYXRlZEludGVnZXIg
PSBTVkdBbmltYXRlZFByaW1pdGl2ZVByb3BlcnR5PGludD47CiB1c2luZyBTVkdBbmltYXRlZE51
bWJlciA9IFNWR0FuaW1hdGVkUHJpbWl0aXZlUHJvcGVydHk8ZmxvYXQ+OwogdXNpbmcgU1ZHQW5p
bWF0ZWRTdHJpbmcgPSBTVkdBbmltYXRlZFByaW1pdGl2ZVByb3BlcnR5PFN0cmluZz47CiAKLXVz
aW5nIFNWR0FuaW1hdGVkUmVjdCA9IFNWR0FuaW1hdGVkVmFsdWVQcm9wZXJ0eTxTVkdSZWN0PjsK
K3VzaW5nIFNWR0FuaW1hdGVkTGVuZ3RoID0gU1ZHQW5pbWF0ZWRWYWx1ZVByb3BlcnR5PFNWR0xl
bmd0aD47CiB1c2luZyBTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8gPSBTVkdBbmltYXRl
ZFZhbHVlUHJvcGVydHk8U1ZHUHJlc2VydmVBc3BlY3RSYXRpbz47Cit1c2luZyBTVkdBbmltYXRl
ZFJlY3QgPSBTVkdBbmltYXRlZFZhbHVlUHJvcGVydHk8U1ZHUmVjdD47CisKK3VzaW5nIFNWR0Fu
aW1hdGVkTGVuZ3RoTGlzdCA9IFNWR0FuaW1hdGVkUHJvcGVydHlMaXN0PFNWR0xlbmd0aExpc3Q+
OwordXNpbmcgU1ZHQW5pbWF0ZWRQb2ludExpc3QgPSBTVkdBbmltYXRlZFByb3BlcnR5TGlzdDxT
VkdQb2ludExpc3Q+OwogCiB1c2luZyBTVkdBbmltYXRlZE51bWJlckxpc3QgPSBTVkdBbmltYXRl
ZFByb3BlcnR5TGlzdDxTVkdOdW1iZXJMaXN0PjsKIHVzaW5nIFNWR0FuaW1hdGVkUG9pbnRMaXN0
ID0gU1ZHQW5pbWF0ZWRQcm9wZXJ0eUxpc3Q8U1ZHUG9pbnRMaXN0PjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGlvbkFkZGl0aXZlTGlzdEZ1bmN0
aW9uSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uQWRk
aXRpdmVMaXN0RnVuY3Rpb25JbXBsLmgKaW5kZXggNDhmZmE4N2ViOWRjNjcxNDhkOGE5YTE2NTBh
OTczMDYyM2U1YjY2NS4uOGZkOTU0MzQwM2FkNzMwNWI0ZTVlYzZiMDkwMjhiOWQ1YWFiZjZjMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uQWRk
aXRpdmVMaXN0RnVuY3Rpb25JbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRp
ZXMvU1ZHQW5pbWF0aW9uQWRkaXRpdmVMaXN0RnVuY3Rpb25JbXBsLmgKQEAgLTI2LDEyICsyNiw3
NiBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJTVkdBbmltYXRpb25BZGRpdGl2ZUxpc3RG
dW5jdGlvbi5oIgorI2luY2x1ZGUgIlNWR0xlbmd0aExpc3QuaCIKICNpbmNsdWRlICJTVkdQb2lu
dExpc3QuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTVkdFbGVtZW50OwogCitj
bGFzcyBTVkdBbmltYXRpb25MZW5ndGhMaXN0RnVuY3Rpb24gOiBwdWJsaWMgU1ZHQW5pbWF0aW9u
QWRkaXRpdmVMaXN0RnVuY3Rpb248U1ZHTGVuZ3RoTGlzdD4geworICAgIHVzaW5nIEJhc2UgPSBT
VkdBbmltYXRpb25BZGRpdGl2ZUxpc3RGdW5jdGlvbjxTVkdMZW5ndGhMaXN0PjsKKworcHVibGlj
OgorICAgIFNWR0FuaW1hdGlvbkxlbmd0aExpc3RGdW5jdGlvbihBbmltYXRpb25Nb2RlIGFuaW1h
dGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNB
ZGRpdGl2ZSwgU1ZHTGVuZ3RoTW9kZSBsZW5ndGhNb2RlKQorICAgICAgICA6IEJhc2UoYW5pbWF0
aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUsIGxlbmd0aE1vZGUp
CisgICAgeworICAgIH0KKworICAgIHZvaWQgc2V0RnJvbUFuZFRvVmFsdWVzKFNWR0VsZW1lbnQq
LCBjb25zdCBTdHJpbmcmIGZyb20sIGNvbnN0IFN0cmluZyYgdG8pIG92ZXJyaWRlCisgICAgewor
ICAgICAgICBtX2Zyb20tPnBhcnNlKGZyb20pOworICAgICAgICBtX3RvLT5wYXJzZSh0byk7Cisg
ICAgfQorCisgICAgdm9pZCBzZXRUb0F0RW5kT2ZEdXJhdGlvblZhbHVlKGNvbnN0IFN0cmluZyYg
dG9BdEVuZE9mRHVyYXRpb24pIG92ZXJyaWRlCisgICAgeworICAgICAgICBtX3RvQXRFbmRPZkR1
cmF0aW9uLT5wYXJzZSh0b0F0RW5kT2ZEdXJhdGlvbik7CisgICAgfQorCisgICAgdm9pZCBwcm9n
cmVzcyhTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50LCBmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25l
ZCByZXBlYXRDb3VudCwgUmVmUHRyPFNWR0xlbmd0aExpc3Q+JiBhbmltYXRlZCkKKyAgICB7Cisg
ICAgICAgIGlmICghYWRqdXN0QW5pbWF0ZWRMaXN0KG1fYW5pbWF0aW9uTW9kZSwgcGVyY2VudGFn
ZSwgYW5pbWF0ZWQpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGNvbnN0IFZlY3Rv
cjxSZWY8U1ZHTGVuZ3RoPj4mIGZyb21JdGVtcyA9IG1fYW5pbWF0aW9uTW9kZSA9PSBBbmltYXRp
b25Nb2RlOjpUbyA/IGFuaW1hdGVkLT5pdGVtcygpIDogbV9mcm9tLT5pdGVtcygpOworICAgICAg
ICBjb25zdCBWZWN0b3I8UmVmPFNWR0xlbmd0aD4+JiB0b0l0ZW1zID0gbV90by0+aXRlbXMoKTsK
KyAgICAgICAgY29uc3QgVmVjdG9yPFJlZjxTVkdMZW5ndGg+PiYgdG9BdEVuZE9mRHVyYXRpb25J
dGVtcyA9IHRvQXRFbmRPZkR1cmF0aW9uKCktPml0ZW1zKCk7CisgICAgICAgIFZlY3RvcjxSZWY8
U1ZHTGVuZ3RoPj4mIGFuaW1hdGVkSXRlbXMgPSBhbmltYXRlZC0+aXRlbXMoKTsKKyAgICAgICAg
U1ZHTGVuZ3RoTW9kZSBsZW5ndGhNb2RlID0gYW5pbWF0ZWQtPmxlbmd0aE1vZGUoKTsKKworICAg
ICAgICBTVkdMZW5ndGhDb250ZXh0IGxlbmd0aENvbnRleHQodGFyZ2V0RWxlbWVudCk7CisgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0b0l0ZW1zLnNpemUoKTsgKytpKSB7CisgICAg
ICAgICAgICBTVkdMZW5ndGhUeXBlIHVuaXRUeXBlID0gKGkgPCBmcm9tSXRlbXMuc2l6ZSgpICYm
IHBlcmNlbnRhZ2UgPCAwLjUgPyBmcm9tSXRlbXMgOiB0b0l0ZW1zKVtpXS0+dmFsdWUoKS51bml0
VHlwZSgpOworCisgICAgICAgICAgICBmbG9hdCBmcm9tID0gaSA8IGZyb21JdGVtcy5zaXplKCkg
PyBmcm9tSXRlbXNbaV0tPnZhbHVlKCkudmFsdWUobGVuZ3RoQ29udGV4dCkgOiAwOworICAgICAg
ICAgICAgZmxvYXQgdG8gPSB0b0l0ZW1zW2ldLT52YWx1ZSgpLnZhbHVlKGxlbmd0aENvbnRleHQp
OworICAgICAgICAgICAgZmxvYXQgdG9BdEVuZE9mRHVyYXRpb24gPSBpIDwgdG9BdEVuZE9mRHVy
YXRpb25JdGVtcy5zaXplKCkgPyB0b0F0RW5kT2ZEdXJhdGlvbkl0ZW1zW2ldLT52YWx1ZSgpLnZh
bHVlKGxlbmd0aENvbnRleHQpIDogMDsKKyAgICAgICAgICAgIGZsb2F0IHZhbHVlID0gYW5pbWF0
ZWRJdGVtc1tpXS0+dmFsdWUoKS52YWx1ZShsZW5ndGhDb250ZXh0KTsKKworICAgICAgICAgICAg
dmFsdWUgPSBCYXNlOjpwcm9ncmVzcyhwZXJjZW50YWdlLCByZXBlYXRDb3VudCwgZnJvbSwgdG8s
IHRvQXRFbmRPZkR1cmF0aW9uLCB2YWx1ZSk7CisgICAgICAgICAgICBhbmltYXRlZEl0ZW1zW2ld
LT52YWx1ZSgpLnNldFZhbHVlKGxlbmd0aENvbnRleHQsIHZhbHVlLCBsZW5ndGhNb2RlLCB1bml0
VHlwZSk7CisgICAgICAgIH0KKyAgICB9CisKK3ByaXZhdGU6CisgICAgdm9pZCBhZGRGcm9tQW5k
VG9WYWx1ZXMoU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCkgb3ZlcnJpZGUKKyAgICB7CisgICAg
ICAgIGNvbnN0IFZlY3RvcjxSZWY8U1ZHTGVuZ3RoPj4mIGZyb21JdGVtcyA9IG1fZnJvbS0+aXRl
bXMoKTsKKyAgICAgICAgY29uc3QgVmVjdG9yPFJlZjxTVkdMZW5ndGg+PiYgdG9JdGVtcyA9IG1f
dG8tPml0ZW1zKCk7CisKKyAgICAgICAgaWYgKCFmcm9tSXRlbXMuc2l6ZSgpIHx8IGZyb21JdGVt
cy5zaXplKCkgIT0gdG9JdGVtcy5zaXplKCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgU1ZHTGVuZ3RoQ29udGV4dCBsZW5ndGhDb250ZXh0KHRhcmdldEVsZW1lbnQpOworICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZnJvbUl0ZW1zLnNpemUoKTsgKytpKSB7CisgICAg
ICAgICAgICBjb25zdCBTVkdMZW5ndGhWYWx1ZSYgZnJvbVZhbHVlID0gZnJvbUl0ZW1zW2ldLT52
YWx1ZSgpOworICAgICAgICAgICAgU1ZHTGVuZ3RoVmFsdWUmIHRvVmFsdWUgPSB0b0l0ZW1zW2ld
LT52YWx1ZSgpOworICAgICAgICAgICAgdG9WYWx1ZS5zZXRWYWx1ZSh0b1ZhbHVlLnZhbHVlKGxl
bmd0aENvbnRleHQpICsgZnJvbVZhbHVlLnZhbHVlKGxlbmd0aENvbnRleHQpLCBsZW5ndGhDb250
ZXh0KTsKKyAgICAgICAgfQorICAgIH0KK307CisKIGNsYXNzIFNWR0FuaW1hdGlvbk51bWJlckxp
c3RGdW5jdGlvbiA6IHB1YmxpYyBTVkdBbmltYXRpb25BZGRpdGl2ZUxpc3RGdW5jdGlvbjxTVkdO
dW1iZXJMaXN0PiB7CiBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IFNWR0FuaW1hdGlvbkFkZGl0
aXZlTGlzdEZ1bmN0aW9uPFNWR051bWJlckxpc3Q+OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uQWRkaXRpdmVWYWx1ZUZ1bmN0aW9uSW1wbC5o
IGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uQWRkaXRpdmVWYWx1
ZUZ1bmN0aW9uSW1wbC5oCmluZGV4IGVmMmNlNmQ1MGZjOTE3ZWMyNDlmOWIzYWZmNWU1NGQwMTk5
OGFlMDMuLjEwZTI2ODAxNzNlODRjZDdjZjNlYTBmNmMxZGRlMGVjNWU1YjFlNGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGlvbkFkZGl0aXZlVmFs
dWVGdW5jdGlvbkltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdB
bmltYXRpb25BZGRpdGl2ZVZhbHVlRnVuY3Rpb25JbXBsLmgKQEAgLTEyMSw2ICsxMjEsNTkgQEAg
cHJpdmF0ZToKICAgICB9CiB9OwogCitjbGFzcyBTVkdBbmltYXRpb25MZW5ndGhGdW5jdGlvbiA6
IHB1YmxpYyBTVkdBbmltYXRpb25BZGRpdGl2ZVZhbHVlRnVuY3Rpb248U1ZHTGVuZ3RoVmFsdWU+
IHsKKyAgICB1c2luZyBCYXNlID0gU1ZHQW5pbWF0aW9uQWRkaXRpdmVWYWx1ZUZ1bmN0aW9uPFNW
R0xlbmd0aFZhbHVlPjsKKworcHVibGljOgorICAgIFNWR0FuaW1hdGlvbkxlbmd0aEZ1bmN0aW9u
KEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJvb2wgaXNB
Y2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlLCBTVkdMZW5ndGhNb2RlIGxlbmd0aE1vZGUpCisg
ICAgICAgIDogQmFzZShhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNB
ZGRpdGl2ZSkKKyAgICAgICAgLCBtX2xlbmd0aE1vZGUobGVuZ3RoTW9kZSkKKyAgICB7CisgICAg
fQorCisgICAgdm9pZCBzZXRGcm9tQW5kVG9WYWx1ZXMoU1ZHRWxlbWVudCosIGNvbnN0IFN0cmlu
ZyYgZnJvbSwgY29uc3QgU3RyaW5nJiB0bykgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIG1fZnJv
bSA9IFNWR0xlbmd0aFZhbHVlKG1fbGVuZ3RoTW9kZSwgZnJvbSk7CisgICAgICAgIG1fdG8gPSBT
VkdMZW5ndGhWYWx1ZShtX2xlbmd0aE1vZGUsIHRvKTsKKyAgICB9CisKKyAgICB2b2lkIHNldFRv
QXRFbmRPZkR1cmF0aW9uVmFsdWUoY29uc3QgU3RyaW5nJiB0b0F0RW5kT2ZEdXJhdGlvbikgb3Zl
cnJpZGUKKyAgICB7CisgICAgICAgIG1fdG9BdEVuZE9mRHVyYXRpb24gPSBTVkdMZW5ndGhWYWx1
ZShtX2xlbmd0aE1vZGUsIHRvQXRFbmRPZkR1cmF0aW9uKTsKKyAgICB9CisKKyAgICB2b2lkIHBy
b2dyZXNzKFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQsIGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2ln
bmVkIHJlcGVhdENvdW50LCBTVkdMZW5ndGhWYWx1ZSYgYW5pbWF0ZWQpCisgICAgeworICAgICAg
ICBTVkdMZW5ndGhDb250ZXh0IGxlbmd0aENvbnRleHQodGFyZ2V0RWxlbWVudCk7CisgICAgICAg
IFNWR0xlbmd0aFR5cGUgdW5pdFR5cGUgPSBwZXJjZW50YWdlIDwgMC41ID8gbV9mcm9tLnVuaXRU
eXBlKCkgOiBtX3RvLnVuaXRUeXBlKCk7CisKKyAgICAgICAgZmxvYXQgZnJvbSA9IChtX2FuaW1h
dGlvbk1vZGUgPT0gQW5pbWF0aW9uTW9kZTo6VG8gPyBhbmltYXRlZCA6IG1fZnJvbSkudmFsdWUo
bGVuZ3RoQ29udGV4dCk7CisgICAgICAgIGZsb2F0IHRvID0gbV90by52YWx1ZShsZW5ndGhDb250
ZXh0KTsKKyAgICAgICAgZmxvYXQgdG9BdEVuZE9mRHVyYXRpb24gPSB0aGlzLT50b0F0RW5kT2ZE
dXJhdGlvbigpLnZhbHVlKGxlbmd0aENvbnRleHQpOworICAgICAgICBmbG9hdCB2YWx1ZSA9IGFu
aW1hdGVkLnZhbHVlKGxlbmd0aENvbnRleHQpOworCisgICAgICAgIHZhbHVlID0gQmFzZTo6cHJv
Z3Jlc3MocGVyY2VudGFnZSwgcmVwZWF0Q291bnQsIGZyb20sIHRvLCB0b0F0RW5kT2ZEdXJhdGlv
biwgdmFsdWUpOworICAgICAgICBhbmltYXRlZCA9IHsgbGVuZ3RoQ29udGV4dCwgdmFsdWUsIG1f
bGVuZ3RoTW9kZSwgdW5pdFR5cGUgfTsKKyAgICB9CisKKyAgICBmbG9hdCBjYWxjdWxhdGVEaXN0
YW5jZShTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50LCBjb25zdCBTdHJpbmcmIGZyb20sIGNvbnN0
IFN0cmluZyYgdG8pIGNvbnN0IG92ZXJyaWRlCisgICAgeworICAgICAgICBTVkdMZW5ndGhDb250
ZXh0IGxlbmd0aENvbnRleHQodGFyZ2V0RWxlbWVudCk7CisgICAgICAgIGF1dG8gZnJvbUxlbmd0
aCA9IFNWR0xlbmd0aFZhbHVlKG1fbGVuZ3RoTW9kZSwgZnJvbSk7CisgICAgICAgIGF1dG8gdG9M
ZW5ndGggPSBTVkdMZW5ndGhWYWx1ZShtX2xlbmd0aE1vZGUsIHRvKTsKKyAgICAgICAgcmV0dXJu
IGZhYnNmKHRvTGVuZ3RoLnZhbHVlKGxlbmd0aENvbnRleHQpIC0gZnJvbUxlbmd0aC52YWx1ZShs
ZW5ndGhDb250ZXh0KSk7CisgICAgfQorCitwcml2YXRlOgorICAgIHZvaWQgYWRkRnJvbUFuZFRv
VmFsdWVzKFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQpIG92ZXJyaWRlCisgICAgeworICAgICAg
ICBTVkdMZW5ndGhDb250ZXh0IGxlbmd0aENvbnRleHQodGFyZ2V0RWxlbWVudCk7CisgICAgICAg
IG1fdG8uc2V0VmFsdWUobV90by52YWx1ZShsZW5ndGhDb250ZXh0KSArIG1fZnJvbS52YWx1ZShs
ZW5ndGhDb250ZXh0KSwgbGVuZ3RoQ29udGV4dCk7CisgICAgfQorCisgICAgU1ZHTGVuZ3RoTW9k
ZSBtX2xlbmd0aE1vZGU7Cit9OworCiBjbGFzcyBTVkdBbmltYXRpb25OdW1iZXJGdW5jdGlvbiA6
IHB1YmxpYyBTVkdBbmltYXRpb25BZGRpdGl2ZVZhbHVlRnVuY3Rpb248ZmxvYXQ+IHsKICAgICBm
cmllbmQgY2xhc3MgU1ZHQW5pbWF0ZWROdW1iZXJQYWlyQW5pbWF0b3I7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZUFuaW1hdG9yLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZUFuaW1hdG9yLmNwcApp
bmRleCBkYzQ2YTBmYzM3MDUwY2Q5MDc3NjQyM2NmNDFkYWVmZWFkYzk0ZWMyLi4yNTZhZmQwZDNi
MTMxZmVhYmE3ZWJiMWNjYWExZTc2YzNjNGEzZjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1dGVBbmltYXRvci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlQW5pbWF0b3IuY3BwCkBAIC0zMiw2ICsz
MiwxMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2Jvb2wgU1ZHQXR0cmlidXRlQW5pbWF0
b3I6OmlzQW5pbWF0ZWRTdHlsZVByb3BlcnR5QW5pYW10b3IoY29uc3QgU1ZHRWxlbWVudCogdGFy
Z2V0RWxlbWVudCkgY29uc3QKK3sKKyAgICByZXR1cm4gdGFyZ2V0RWxlbWVudC0+aXNBbmltYXRl
ZFN0eWxlQXR0cmlidXRlKG1fYXR0cmlidXRlTmFtZSk7Cit9CisKIHZvaWQgU1ZHQXR0cmlidXRl
QW5pbWF0b3I6OmFwcGx5QW5pbWF0ZWRTdHlsZVByb3BlcnR5Q2hhbmdlKFNWR0VsZW1lbnQqIGVs
ZW1lbnQsIENTU1Byb3BlcnR5SUQgaWQsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgQVNT
RVJUKGVsZW1lbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMv
U1ZHQXR0cmlidXRlQW5pbWF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NW
R0F0dHJpYnV0ZUFuaW1hdG9yLmgKaW5kZXggODk0ZDVlN2I2OGUwYzhhZWZkNGViZmU4MzQ1OWE1
Nzg2ZDkxYTRmMy4uODI3ODI2ZTc2ZDQ1MGQwYmZkZmQzMGMyOTdmMWVkNzVjOGE2NmVkNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlQW5pbWF0
b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1dGVBbmlt
YXRvci5oCkBAIC03NCw2ICs3NCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGZsb2F0IGNhbGN1
bGF0ZURpc3RhbmNlKFNWR0VsZW1lbnQqLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKSBj
b25zdCB7IHJldHVybiAtMTsgfQogCiBwcm90ZWN0ZWQ6CisgICAgYm9vbCBpc0FuaW1hdGVkU3R5
bGVQcm9wZXJ0eUFuaWFtdG9yKGNvbnN0IFNWR0VsZW1lbnQqKSBjb25zdDsKKwogICAgIHN0YXRp
YyB2b2lkIGFwcGx5QW5pbWF0ZWRTdHlsZVByb3BlcnR5Q2hhbmdlKFNWR0VsZW1lbnQqLCBDU1NQ
cm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKICAgICBzdGF0aWMgdm9pZCByZW1vdmVB
bmltYXRlZFN0eWxlUHJvcGVydHkoU1ZHRWxlbWVudCosIENTU1Byb3BlcnR5SUQpOwogICAgIHN0
YXRpYyB2b2lkIGFwcGx5QW5pbWF0ZWRQcm9wZXJ0eUNoYW5nZShTVkdFbGVtZW50KiwgY29uc3Qg
UXVhbGlmaWVkTmFtZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRp
ZXMvU1ZHQXR0cmlidXRlUmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVz
L1NWR0F0dHJpYnV0ZVJlZ2lzdHJ5LmgKaW5kZXggMDQyODkxY2E5ZTIwMzBkNDYzN2M2YmYwMGE1
MjY4ZDBmZDc4NzIwZi4uNTAyNTY2MmFhZGM4Y2E4YjkyZTRmMmJkN2RiMzFmZWJiMmU5YWFkOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlUmVn
aXN0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1dGVS
ZWdpc3RyeS5oCkBAIC0yNiw4ICsyNiw2IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIlNW
R0FuaW1hdGVkRW51bWVyYXRpb24uaCIKLSNpbmNsdWRlICJTVkdBbmltYXRlZExlbmd0aC5oIgot
I2luY2x1ZGUgIlNWR0FuaW1hdGVkTGVuZ3RoTGlzdC5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVk
VHJhbnNmb3JtTGlzdC5oIgogI2luY2x1ZGUgIlNWR0F0dHJpYnV0ZUFjY2Vzc29yLmgiCiAjaW5j
bHVkZSAiU1ZHTGVnYWN5QW5pbWF0ZWRQcm9wZXJ0eS5oIgpAQCAtNTgsMTggKzU2LDYgQEAgcHVi
bGljOgogICAgICAgICByZWdpc3RlckF0dHJpYnV0ZShTVkdBbmltYXRlZEVudW1lcmF0aW9uQXR0
cmlidXRlQWNjZXNzb3I8T3duZXJUeXBlLCBFbnVtVHlwZT46OnRlbXBsYXRlIHNpbmdsZXRvbjxh
dHRyaWJ1dGVOYW1lLCBhdHRyaWJ1dGU+KCkpOwogICAgIH0KIAotICAgIHRlbXBsYXRlPGNvbnN0
IExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBRdWFsaWZpZWROYW1lPiYgYXR0cmlidXRlTmFtZSwg
U1ZHQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUgT3duZXJUeXBlOjoqYXR0cmlidXRlPgotICAgIHZv
aWQgcmVnaXN0ZXJBdHRyaWJ1dGUoKQotICAgIHsKLSAgICAgICAgcmVnaXN0ZXJBdHRyaWJ1dGUo
U1ZHQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGVBY2Nlc3NvcjxPd25lclR5cGU+Ojp0ZW1wbGF0ZSBz
aW5nbGV0b248YXR0cmlidXRlTmFtZSwgYXR0cmlidXRlPigpKTsKLSAgICB9Ci0KLSAgICB0ZW1w
bGF0ZTxjb25zdCBMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgUXVhbGlmaWVkTmFtZT4mIGF0dHJp
YnV0ZU5hbWUsIFNWR0FuaW1hdGVkTGVuZ3RoTGlzdEF0dHJpYnV0ZSBPd25lclR5cGU6OiphdHRy
aWJ1dGU+Ci0gICAgdm9pZCByZWdpc3RlckF0dHJpYnV0ZSgpCi0gICAgewotICAgICAgICByZWdp
c3RlckF0dHJpYnV0ZShTVkdBbmltYXRlZExlbmd0aExpc3RBdHRyaWJ1dGVBY2Nlc3NvcjxPd25l
clR5cGU+Ojp0ZW1wbGF0ZSBzaW5nbGV0b248YXR0cmlidXRlTmFtZSwgYXR0cmlidXRlPigpKTsK
LSAgICB9Ci0KICAgICB0ZW1wbGF0ZTxjb25zdCBMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgUXVh
bGlmaWVkTmFtZT4mIGF0dHJpYnV0ZU5hbWUsIFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdEF0dHJp
YnV0ZSBPd25lclR5cGU6OiphdHRyaWJ1dGU+CiAgICAgdm9pZCByZWdpc3RlckF0dHJpYnV0ZSgp
CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJv
cGVydHlBbmltYXRvckZhY3RvcnkuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NW
R1Byb3BlcnR5QW5pbWF0b3JGYWN0b3J5LmgKaW5kZXggNTM5ZDQ2YTgwOWM1NWNlYWZiNzk5NDQ5
MTgyMWVjZDA3NDVlODk5MS4uYWQ1MGQ0MjM2Mjk2OTQyZDFkYzg3MThhMmRhOGU2YWRmOGQxYmNj
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlB
bmltYXRvckZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQ
cm9wZXJ0eUFuaW1hdG9yRmFjdG9yeS5oCkBAIC0yNSw4ICsyNSwxMSBAQAogCiAjcHJhZ21hIG9u
Y2UKIAorI2luY2x1ZGUgIlNWR0xlbmd0aC5oIgogI2luY2x1ZGUgIlNWR05hbWVzLmgiCiAjaW5j
bHVkZSAiU1ZHUHJpbWl0aXZlUHJvcGVydHlBbmltYXRvckltcGwuaCIKKyNpbmNsdWRlICJTVkdW
YWx1ZVByb3BlcnR5QW5pbWF0b3JJbXBsLmgiCisjaW5jbHVkZSAiU1ZHVmFsdWVQcm9wZXJ0eUxp
c3RBbmltYXRvckltcGwuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC04MCw2ICs4Mywx
NiBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gU1ZHQ29sb3JBbmltYXRvcjo6Y3JlYXRlKGF0
dHJpYnV0ZU5hbWUsIFdURk1vdmUocHJvcGVydHkpLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwg
aXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CiAgICAgfQogCisgICAgc3RhdGljIGF1dG8gY3Jl
YXRlTGVuZ3RoQW5pbWF0b3IoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVm
PFNWR1Byb3BlcnR5PiYmIHByb3BlcnR5LCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENh
bGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKKyAg
ICB7CisgICAgICAgIHJldHVybiBTVkdMZW5ndGhBbmltYXRvcjo6Y3JlYXRlKGF0dHJpYnV0ZU5h
bWUsIFdURk1vdmUocHJvcGVydHkpLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVs
YXRlZCwgaXNBZGRpdGl2ZSk7CisgICAgfQorCisgICAgc3RhdGljIGF1dG8gY3JlYXRlTGVuZ3Ro
TGlzdEFuaW1hdG9yKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdQ
cm9wZXJ0eT4mJiBwcm9wZXJ0eSwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9k
ZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUpCisgICAgewor
ICAgICAgICByZXR1cm4gU1ZHTGVuZ3RoTGlzdEFuaW1hdG9yOjpjcmVhdGUoYXR0cmlidXRlTmFt
ZSwgV1RGTW92ZShwcm9wZXJ0eSksIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxh
dGVkLCBpc0FkZGl0aXZlKTsKKyAgICB9CisKICAgICBzdGF0aWMgYXV0byBjcmVhdGVOdW1iZXJB
bmltYXRvcihjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHUHJvcGVy
dHk+JiYgcHJvcGVydHksIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2Fs
Y01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIFNWR051bWJlckFuaW1hdG9yOjpjcmVhdGUoYXR0cmlidXRlTmFtZSwgIFdURk1v
dmUocHJvcGVydHkpLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNB
ZGRpdGl2ZSk7CkBAIC05MywxMyArMTA2LDIyIEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGNvbnN0
IEF0dHJpYnV0ZUFuaW1hdG9yQ3JlYXRvciYgYXR0cmlidXRlQW5pbWF0b3JDcmVhdG9yKCkKICAg
ICB7CiAgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdHRyaWJ1dGVBbmltYXRvckNyZWF0
b3I+IG1hcCA9IEF0dHJpYnV0ZUFuaW1hdG9yQ3JlYXRvcih7Ci0gICAgICAgICAgICB7IFNWR05h
bWVzOjpjb2xvckF0dHItPmltcGwoKSwgICAgICAgICAgc3RkOjptYWtlX3BhaXIoU1ZHVmFsdWVQ
cm9wZXJ0eTxDb2xvcj46OmNyZWF0ZSwgU1ZHUHJvcGVydHlBbmltYXRvckZhY3Rvcnk6OmNyZWF0
ZUNvbG9yQW5pbWF0b3IpIH0sCi0gICAgICAgICAgICB7IFNWR05hbWVzOjpmaWxsQXR0ci0+aW1w
bCgpLCAgICAgICAgICAgc3RkOjptYWtlX3BhaXIoU1ZHVmFsdWVQcm9wZXJ0eTxDb2xvcj46OmNy
ZWF0ZSwgU1ZHUHJvcGVydHlBbmltYXRvckZhY3Rvcnk6OmNyZWF0ZUNvbG9yQW5pbWF0b3IpIH0s
Ci0gICAgICAgICAgICB7IFNWR05hbWVzOjpmbG9vZF9jb2xvckF0dHItPmltcGwoKSwgICAgc3Rk
OjptYWtlX3BhaXIoU1ZHVmFsdWVQcm9wZXJ0eTxDb2xvcj46OmNyZWF0ZSwgU1ZHUHJvcGVydHlB
bmltYXRvckZhY3Rvcnk6OmNyZWF0ZUNvbG9yQW5pbWF0b3IpIH0sCi0gICAgICAgICAgICB7IFNW
R05hbWVzOjpsaWdodGluZ19jb2xvckF0dHItPmltcGwoKSwgc3RkOjptYWtlX3BhaXIoU1ZHVmFs
dWVQcm9wZXJ0eTxDb2xvcj46OmNyZWF0ZSwgU1ZHUHJvcGVydHlBbmltYXRvckZhY3Rvcnk6OmNy
ZWF0ZUNvbG9yQW5pbWF0b3IpIH0sCi0gICAgICAgICAgICB7IFNWR05hbWVzOjpzdG9wX2NvbG9y
QXR0ci0+aW1wbCgpLCAgICAgc3RkOjptYWtlX3BhaXIoU1ZHVmFsdWVQcm9wZXJ0eTxDb2xvcj46
OmNyZWF0ZSwgU1ZHUHJvcGVydHlBbmltYXRvckZhY3Rvcnk6OmNyZWF0ZUNvbG9yQW5pbWF0b3Ip
IH0sCi0gICAgICAgICAgICB7IFNWR05hbWVzOjpzdHJva2VBdHRyLT5pbXBsKCksICAgICAgICAg
c3RkOjptYWtlX3BhaXIoU1ZHVmFsdWVQcm9wZXJ0eTxDb2xvcj46OmNyZWF0ZSwgU1ZHUHJvcGVy
dHlBbmltYXRvckZhY3Rvcnk6OmNyZWF0ZUNvbG9yQW5pbWF0b3IpIH0sCisgICAgICAgICAgICB7
IFNWR05hbWVzOjpjb2xvckF0dHItPmltcGwoKSwgICAgICAgICAgICAgIHN0ZDo6bWFrZV9wYWly
KFNWR1ZhbHVlUHJvcGVydHk8Q29sb3I+OjpjcmVhdGUsIFNWR1Byb3BlcnR5QW5pbWF0b3JGYWN0
b3J5OjpjcmVhdGVDb2xvckFuaW1hdG9yKSB9LAorICAgICAgICAgICAgeyBTVkdOYW1lczo6Zmls
bEF0dHItPmltcGwoKSwgICAgICAgICAgICAgICBzdGQ6Om1ha2VfcGFpcihTVkdWYWx1ZVByb3Bl
cnR5PENvbG9yPjo6Y3JlYXRlLCBTVkdQcm9wZXJ0eUFuaW1hdG9yRmFjdG9yeTo6Y3JlYXRlQ29s
b3JBbmltYXRvcikgfSwKKyAgICAgICAgICAgIHsgU1ZHTmFtZXM6OmZsb29kX2NvbG9yQXR0ci0+
aW1wbCgpLCAgICAgICAgc3RkOjptYWtlX3BhaXIoU1ZHVmFsdWVQcm9wZXJ0eTxDb2xvcj46OmNy
ZWF0ZSwgU1ZHUHJvcGVydHlBbmltYXRvckZhY3Rvcnk6OmNyZWF0ZUNvbG9yQW5pbWF0b3IpIH0s
CisgICAgICAgICAgICB7IFNWR05hbWVzOjpsaWdodGluZ19jb2xvckF0dHItPmltcGwoKSwgICAg
IHN0ZDo6bWFrZV9wYWlyKFNWR1ZhbHVlUHJvcGVydHk8Q29sb3I+OjpjcmVhdGUsIFNWR1Byb3Bl
cnR5QW5pbWF0b3JGYWN0b3J5OjpjcmVhdGVDb2xvckFuaW1hdG9yKSB9LAorICAgICAgICAgICAg
eyBTVkdOYW1lczo6c3RvcF9jb2xvckF0dHItPmltcGwoKSwgICAgICAgICBzdGQ6Om1ha2VfcGFp
cihTVkdWYWx1ZVByb3BlcnR5PENvbG9yPjo6Y3JlYXRlLCBTVkdQcm9wZXJ0eUFuaW1hdG9yRmFj
dG9yeTo6Y3JlYXRlQ29sb3JBbmltYXRvcikgfSwKKyAgICAgICAgICAgIHsgU1ZHTmFtZXM6OnN0
cm9rZUF0dHItPmltcGwoKSwgICAgICAgICAgICAgc3RkOjptYWtlX3BhaXIoU1ZHVmFsdWVQcm9w
ZXJ0eTxDb2xvcj46OmNyZWF0ZSwgU1ZHUHJvcGVydHlBbmltYXRvckZhY3Rvcnk6OmNyZWF0ZUNv
bG9yQW5pbWF0b3IpIH0sCiAKKyAgICAgICAgICAgIHsgU1ZHTmFtZXM6OmZvbnRfc2l6ZUF0dHIt
PmltcGwoKSwgICAgICAgICAgc3RkOjptYWtlX3BhaXIoW10oKSB7IHJldHVybiBTVkdMZW5ndGg6
OmNyZWF0ZSgpOyB9LCBTVkdQcm9wZXJ0eUFuaW1hdG9yRmFjdG9yeTo6Y3JlYXRlTGVuZ3RoQW5p
bWF0b3IpIH0sCisgICAgICAgICAgICB7IFNWR05hbWVzOjprZXJuaW5nQXR0ci0+aW1wbCgpLCAg
ICAgICAgICAgIHN0ZDo6bWFrZV9wYWlyKFtdKCkgeyByZXR1cm4gU1ZHTGVuZ3RoOjpjcmVhdGUo
KTsgfSwgU1ZHUHJvcGVydHlBbmltYXRvckZhY3Rvcnk6OmNyZWF0ZUxlbmd0aEFuaW1hdG9yKSB9
LAorICAgICAgICAgICAgeyBTVkdOYW1lczo6bGV0dGVyX3NwYWNpbmdBdHRyLT5pbXBsKCksICAg
ICBzdGQ6Om1ha2VfcGFpcihbXSgpIHsgcmV0dXJuIFNWR0xlbmd0aDo6Y3JlYXRlKCk7IH0sIFNW
R1Byb3BlcnR5QW5pbWF0b3JGYWN0b3J5OjpjcmVhdGVMZW5ndGhBbmltYXRvcikgfSwKKyAgICAg
ICAgICAgIHsgU1ZHTmFtZXM6OnN0cm9rZV9kYXNob2Zmc2V0QXR0ci0+aW1wbCgpLCAgc3RkOjpt
YWtlX3BhaXIoW10oKSB7IHJldHVybiBTVkdMZW5ndGg6OmNyZWF0ZSgpOyB9LCBTVkdQcm9wZXJ0
eUFuaW1hdG9yRmFjdG9yeTo6Y3JlYXRlTGVuZ3RoQW5pbWF0b3IpIH0sCisgICAgICAgICAgICB7
IFNWR05hbWVzOjpzdHJva2Vfd2lkdGhBdHRyLT5pbXBsKCksICAgICAgIHN0ZDo6bWFrZV9wYWly
KFtdKCkgeyByZXR1cm4gU1ZHTGVuZ3RoOjpjcmVhdGUoKTsgfSwgU1ZHUHJvcGVydHlBbmltYXRv
ckZhY3Rvcnk6OmNyZWF0ZUxlbmd0aEFuaW1hdG9yKSB9LAorICAgICAgICAgICAgeyBTVkdOYW1l
czo6d29yZF9zcGFjaW5nQXR0ci0+aW1wbCgpLCAgICAgICBzdGQ6Om1ha2VfcGFpcihbXSgpIHsg
cmV0dXJuIFNWR0xlbmd0aDo6Y3JlYXRlKCk7IH0sIFNWR1Byb3BlcnR5QW5pbWF0b3JGYWN0b3J5
OjpjcmVhdGVMZW5ndGhBbmltYXRvcikgfSwKKworICAgICAgICAgICAgeyBTVkdOYW1lczo6c3Ry
b2tlX2Rhc2hhcnJheUF0dHItPmltcGwoKSwgICBzdGQ6Om1ha2VfcGFpcihbXSgpIHsgcmV0dXJu
IFNWR0xlbmd0aExpc3Q6OmNyZWF0ZSgpOyB9LCBTVkdQcm9wZXJ0eUFuaW1hdG9yRmFjdG9yeTo6
Y3JlYXRlTGVuZ3RoTGlzdEFuaW1hdG9yKSB9LAorICAgICAgICAgICAgCiAgICAgICAgICAgICB7
IFNWR05hbWVzOjpmaWxsX29wYWNpdHlBdHRyLT5pbXBsKCksICAgICAgIHN0ZDo6bWFrZV9wYWly
KFNWR1ZhbHVlUHJvcGVydHk8ZmxvYXQ+OjpjcmVhdGUsIFNWR1Byb3BlcnR5QW5pbWF0b3JGYWN0
b3J5OjpjcmVhdGVOdW1iZXJBbmltYXRvcikgfSwKICAgICAgICAgICAgIHsgU1ZHTmFtZXM6OmZs
b29kX29wYWNpdHlBdHRyLT5pbXBsKCksICAgICAgc3RkOjptYWtlX3BhaXIoU1ZHVmFsdWVQcm9w
ZXJ0eTxmbG9hdD46OmNyZWF0ZSwgU1ZHUHJvcGVydHlBbmltYXRvckZhY3Rvcnk6OmNyZWF0ZU51
bWJlckFuaW1hdG9yKSB9LAogICAgICAgICAgICAgeyBTVkdOYW1lczo6b3BhY2l0eUF0dHItPmlt
cGwoKSwgICAgICAgICAgICBzdGQ6Om1ha2VfcGFpcihTVkdWYWx1ZVByb3BlcnR5PGZsb2F0Pjo6
Y3JlYXRlLCBTVkdQcm9wZXJ0eUFuaW1hdG9yRmFjdG9yeTo6Y3JlYXRlTnVtYmVyQW5pbWF0b3Ip
IH0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0
eU93bmVyUmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3Bl
cnR5T3duZXJSZWdpc3RyeS5oCmluZGV4IDA3NGM2NTJmNjA1MGQwOWYzMjY3ZjExYzczY2Y4YTI1
Y2Y5M2NiNDcuLjljM2I5MDY1MGU1MjE3M2Q5ODExZDViZjQxZTc5NDcwZThmNzg5ODYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5T3duZXJSZWdp
c3RyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5T3du
ZXJSZWdpc3RyeS5oCkBAIC02MCw2ICs2MCwxOCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBy
ZWdpc3RlclByb3BlcnR5KGF0dHJpYnV0ZU5hbWUsIFNWR0FuaW1hdGVkSW50ZWdlckFjY2Vzc29y
PE93bmVyVHlwZT46OnRlbXBsYXRlIHNpbmdsZXRvbjxwcm9wZXJ0eT4oKSk7CiAgICAgfQorICAg
IAorICAgIHRlbXBsYXRlPGNvbnN0IExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBRdWFsaWZpZWRO
YW1lPiYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBPd25lclR5cGU6Oipw
cm9wZXJ0eT4KKyAgICBzdGF0aWMgdm9pZCByZWdpc3RlclByb3BlcnR5KCkKKyAgICB7CisgICAg
ICAgIHJlZ2lzdGVyUHJvcGVydHkoYXR0cmlidXRlTmFtZSwgU1ZHQW5pbWF0ZWRMZW5ndGhBY2Nl
c3NvcjxPd25lclR5cGU+Ojp0ZW1wbGF0ZSBzaW5nbGV0b248cHJvcGVydHk+KCkpOworICAgIH0K
KworICAgIHRlbXBsYXRlPGNvbnN0IExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBRdWFsaWZpZWRO
YW1lPiYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoTGlzdD4gT3duZXJUeXBl
OjoqcHJvcGVydHk+CisgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJQcm9wZXJ0eSgpCisgICAgewor
ICAgICAgICByZWdpc3RlclByb3BlcnR5KGF0dHJpYnV0ZU5hbWUsIFNWR0FuaW1hdGVkTGVuZ3Ro
TGlzdEFjY2Vzc29yPE93bmVyVHlwZT46OnRlbXBsYXRlIHNpbmdsZXRvbjxwcm9wZXJ0eT4oKSk7
CisgICAgfQogCiAgICAgdGVtcGxhdGU8Y29uc3QgTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IFF1
YWxpZmllZE5hbWU+JiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWROdW1iZXI+IE93bmVy
VHlwZTo6KnByb3BlcnR5PgogICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyUHJvcGVydHkoKQpAQCAt
MTI3LDYgKzEzOSwxNSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBmaW5kQWNjZXNzb3IoYXR0
cmlidXRlTmFtZSk7CiAgICAgfQogCisgICAgLy8gUmV0dXJucyB0cnVlIGlmIE93bmVyVHlwZSBv
d25zIGEgcHJvcGVydHkgd2hvc2UgbmFtZSBpcyBhdHRyaWJ1dGVOYW1lCisgICAgLy8gYW5kIGl0
cyB0eXBlIGlzIFNWR0FuaW1hdGVkTGVuZ3RoLgorICAgIHN0YXRpYyBib29sIGlzQW5pbWF0ZWRM
ZW5ndGhBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKKyAgICB7
CisgICAgICAgIGlmIChjb25zdCBhdXRvKiBhY2Nlc3NvciA9IGZpbmRBY2Nlc3NvcihhdHRyaWJ1
dGVOYW1lKSkKKyAgICAgICAgICAgIHJldHVybiBhY2Nlc3Nvci0+aXNBbmltYXRlZExlbmd0aCgp
OworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCiAgICAgUXVhbGlmaWVkTmFtZSBwcm9w
ZXJ0eUF0dHJpYnV0ZU5hbWUoY29uc3QgU1ZHUHJvcGVydHkmIHByb3BlcnR5KSBjb25zdCBvdmVy
cmlkZQogICAgIHsKICAgICAgICAgUXVhbGlmaWVkTmFtZSBhdHRyaWJ1dGVOYW1lID0gbnVsbFFO
YW1lKCk7CkBAIC0xOTksNiArMjIwLDIyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGlzQW5p
bWF0ZWRQcm9wZXJ0eUF0dHJpYnV0ZTsKICAgICB9CiAKKyAgICBib29sIGlzQW5pbWF0ZWRTdHls
ZVByb3BlcnR5QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpIGNv
bnN0IG92ZXJyaWRlCisgICAgeworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNl
dDxRdWFsaWZpZWROYW1lOjpRdWFsaWZpZWROYW1lSW1wbCo+PiBhbmltYXRlZFN0eWxlQXR0cmli
dXRlcyA9IHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxRdWFsaWZpZWROYW1lOjpRdWFsaWZpZWROYW1l
SW1wbCo+IHsKKyAgICAgICAgICAgIFNWR05hbWVzOjpjeEF0dHItPmltcGwoKSwKKyAgICAgICAg
ICAgIFNWR05hbWVzOjpjeUF0dHItPmltcGwoKSwKKyAgICAgICAgICAgIFNWR05hbWVzOjpyQXR0
ci0+aW1wbCgpLAorICAgICAgICAgICAgU1ZHTmFtZXM6OnJ4QXR0ci0+aW1wbCgpLAorICAgICAg
ICAgICAgU1ZHTmFtZXM6OnJ5QXR0ci0+aW1wbCgpLAorICAgICAgICAgICAgU1ZHTmFtZXM6Omhl
aWdodEF0dHItPmltcGwoKSwKKyAgICAgICAgICAgIFNWR05hbWVzOjp3aWR0aEF0dHItPmltcGwo
KSwKKyAgICAgICAgICAgIFNWR05hbWVzOjp4QXR0ci0+aW1wbCgpLAorICAgICAgICAgICAgU1ZH
TmFtZXM6OnlBdHRyLT5pbXBsKCkKKyAgICAgICAgfTsKKyAgICAgICAgcmV0dXJuIGlzQW5pbWF0
ZWRMZW5ndGhBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSkgJiYgYW5pbWF0ZWRTdHlsZUF0dHJpYnV0
ZXMuZ2V0KCkuY29udGFpbnMoYXR0cmlidXRlTmFtZS5pbXBsKCkpOworICAgIH0KKwogICAgIHN0
ZDo6dW5pcXVlX3B0cjxTVkdBdHRyaWJ1dGVBbmltYXRvcj4gY3JlYXRlQW5pbWF0b3IoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2Rl
LCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUp
IGNvbnN0IG92ZXJyaWRlCiAgICAgewogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQXR0cmli
dXRlQW5pbWF0b3I+IGFuaW1hdG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3By
b3BlcnRpZXMvU1ZHUHJvcGVydHlSZWdpc3RyeS5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3Bl
cnRpZXMvU1ZHUHJvcGVydHlSZWdpc3RyeS5oCmluZGV4IDUzYTAzNDU1ZmFkZTUyYWM2Y2VmOWY0
MjVhM2Q5ZTEwOGJhN2NkZmMuLjkyZjdhYjAxMzBjNTFmNzk5MzgxMDkyYjg5YjBlZTFmODA1Nzdh
M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5
UmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0
eVJlZ2lzdHJ5LmgKQEAgLTQzLDYgKzQzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgSGFzaE1h
cDxRdWFsaWZpZWROYW1lLCBTdHJpbmc+IHN5bmNocm9uaXplQWxsQXR0cmlidXRlcygpIGNvbnN0
ID0gMDsKIAogICAgIHZpcnR1YWwgYm9vbCBpc0FuaW1hdGVkUHJvcGVydHlBdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNBbmltYXRl
ZFN0eWxlUHJvcGVydHlBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0ID0gMDsK
ICAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxTVkdBdHRyaWJ1dGVBbmltYXRvcj4gY3JlYXRl
QW5pbWF0b3IoY29uc3QgUXVhbGlmaWVkTmFtZSYsIEFuaW1hdGlvbk1vZGUsIENhbGNNb2RlLCBi
b29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkgY29uc3QgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBhcHBlbmRBbmltYXRlZEluc3RhbmNlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJp
YnV0ZU5hbWUsIFNWR0F0dHJpYnV0ZUFuaW1hdG9yJikgY29uc3QgPSAwOwogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1ZhbHVlUHJvcGVydHlBbmltYXRv
ci5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHVmFsdWVQcm9wZXJ0eUFuaW1h
dG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNTM3OThkMWFjNGRkNWQ0YWFlMjk4ZWE0YmVlM2Y3NGIxYmY4NDBm
NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Zh
bHVlUHJvcGVydHlBbmltYXRvci5oCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgIlNWR1Byb3BlcnR5QW5pbWF0b3IuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit0ZW1w
bGF0ZTx0eXBlbmFtZSBQcm9wZXJ0eVR5cGUsIHR5cGVuYW1lIEFuaW1hdGlvbkZ1bmN0aW9uPgor
Y2xhc3MgU1ZHVmFsdWVQcm9wZXJ0eUFuaW1hdG9yIDogcHVibGljIFNWR1Byb3BlcnR5QW5pbWF0
b3I8QW5pbWF0aW9uRnVuY3Rpb24+IHsKKyAgICB1c2luZyBCYXNlID0gU1ZHUHJvcGVydHlBbmlt
YXRvcjxBbmltYXRpb25GdW5jdGlvbj47CisgICAgdXNpbmcgQmFzZTo6QmFzZTsKKyAgICB1c2lu
ZyBCYXNlOjphcHBseUFuaW1hdGVkU3R5bGVQcm9wZXJ0eUNoYW5nZTsKKyAgICB1c2luZyBCYXNl
OjptX2Z1bmN0aW9uOworCitwdWJsaWM6CisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1l
bnRzPgorICAgIFNWR1ZhbHVlUHJvcGVydHlBbmltYXRvcihjb25zdCBRdWFsaWZpZWROYW1lJiBh
dHRyaWJ1dGVOYW1lLCBSZWY8U1ZHUHJvcGVydHk+JiYgcHJvcGVydHksIEFyZ3VtZW50cyYmLi4u
IGFyZ3VtZW50cykKKyAgICAgICAgOiBCYXNlKGF0dHJpYnV0ZU5hbWUsIHN0ZDo6Zm9yd2FyZDxB
cmd1bWVudHM+KGFyZ3VtZW50cykuLi4pCisgICAgICAgICwgbV9wcm9wZXJ0eShzdGF0aWNfcmVm
ZXJlbmNlX2Nhc3Q8UHJvcGVydHlUeXBlPihXVEZNb3ZlKHByb3BlcnR5KSkpCisgICAgeworICAg
IH0KKworICAgIHZvaWQgcHJvZ3Jlc3MoU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCwgZmxvYXQg
cGVyY2VudGFnZSwgdW5zaWduZWQgcmVwZWF0Q291bnQpIG92ZXJyaWRlCisgICAgeworICAgICAg
ICBtX2Z1bmN0aW9uLnByb2dyZXNzKHRhcmdldEVsZW1lbnQsIHBlcmNlbnRhZ2UsIHJlcGVhdENv
dW50LCBtX3Byb3BlcnR5LT52YWx1ZSgpKTsKKyAgICB9CisKKyAgICB2b2lkIGFwcGx5KFNWR0Vs
ZW1lbnQqIHRhcmdldEVsZW1lbnQpIG92ZXJyaWRlCisgICAgeworICAgICAgICBhcHBseUFuaW1h
dGVkU3R5bGVQcm9wZXJ0eUNoYW5nZSh0YXJnZXRFbGVtZW50LCBtX3Byb3BlcnR5LT52YWx1ZUFz
U3RyaW5nKCkpOworICAgIH0KKworcHJvdGVjdGVkOgorICAgIHVzaW5nIEJhc2U6OmNvbXB1dGVD
U1NQcm9wZXJ0eVZhbHVlOworICAgIHVzaW5nIEJhc2U6Om1fYXR0cmlidXRlTmFtZTsKKworICAg
IFJlZjxQcm9wZXJ0eVR5cGU+IG1fcHJvcGVydHk7Cit9OworCit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdWYWx1ZVByb3BlcnR5QW5pbWF0b3JJbXBsLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdWYWx1ZVByb3BlcnR5QW5pbWF0b3JJ
bXBsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMTE4ODg2YzRmOGJiNzIzNmE0NDZmZmFkMDM4NjlmZjBiMGRjZGU5
NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Zh
bHVlUHJvcGVydHlBbmltYXRvckltcGwuaApAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE4LTIwMTkgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlICJTVkdBbmltYXRpb25GdW5jdGlvbi5oIgorI2luY2x1ZGUgIlNWR1ZhbHVlUHJvcGVy
dHlBbmltYXRvci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNWR0xlbmd0aEFu
aW1hdG9yIGZpbmFsIDogcHVibGljIFNWR1ZhbHVlUHJvcGVydHlBbmltYXRvcjxTVkdMZW5ndGgs
IFNWR0FuaW1hdGlvbkxlbmd0aEZ1bmN0aW9uPiB7CisgICAgdXNpbmcgQmFzZSA9IFNWR1ZhbHVl
UHJvcGVydHlBbmltYXRvcjxTVkdMZW5ndGgsIFNWR0FuaW1hdGlvbkxlbmd0aEZ1bmN0aW9uPjsK
KyAgICB1c2luZyBCYXNlOjpCYXNlOworICAgIHVzaW5nIEJhc2U6Om1fYXR0cmlidXRlTmFtZTsK
KyAgICB1c2luZyBCYXNlOjptX3Byb3BlcnR5OworCitwdWJsaWM6CisgICAgc3RhdGljIGF1dG8g
Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdQcm9wZXJ0
eT4mJiBwcm9wZXJ0eSwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxj
TW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUpCisgICAgeworICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdMZW5ndGhBbmltYXRvcj4oYXR0cmlidXRlTmFt
ZSwgV1RGTW92ZShwcm9wZXJ0eSksIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxh
dGVkLCBpc0FkZGl0aXZlLCBMZW5ndGhNb2RlT3RoZXIpOworICAgIH0KKworICAgIHZvaWQgc3Rh
cnQoU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIFN0
cmluZyBiYXNlVmFsdWUgPSBjb21wdXRlQ1NTUHJvcGVydHlWYWx1ZSh0YXJnZXRFbGVtZW50LCBj
c3NQcm9wZXJ0eUlEKG1fYXR0cmlidXRlTmFtZS5sb2NhbE5hbWUoKSkpOworICAgICAgICBTVkdM
ZW5ndGhWYWx1ZSB2YWx1ZShMZW5ndGhNb2RlT3RoZXIpOworICAgICAgICBpZiAoIXZhbHVlLnNl
dFZhbHVlQXNTdHJpbmcoYmFzZVZhbHVlKS5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgICAgIG1f
cHJvcGVydHktPnNldFZhbHVlKHZhbHVlKTsKKyAgICB9Cit9OworCit9CisKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1ZhbHVlUHJvcGVydHlMaXN0QW5pbWF0
b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1ZhbHVlUHJvcGVydHlMaXN0
QW5pbWF0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMjc0ZjE4NmViYmZkYjIwZGEwZjY4NjI0ZGJjMzRiNGU1
OTllMTg5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMv
U1ZHVmFsdWVQcm9wZXJ0eUxpc3RBbmltYXRvci5oCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2luY2x1ZGUgIlNWR1Byb3BlcnR5QW5pbWF0b3IuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCit0ZW1wbGF0ZTx0eXBlbmFtZSBMaXN0VHlwZSwgdHlwZW5hbWUgQW5pbWF0aW9uRnVuY3Rp
b24+CitjbGFzcyBTVkdWYWx1ZVByb3BlcnR5TGlzdEFuaW1hdG9yIDogcHVibGljIFNWR1Byb3Bl
cnR5QW5pbWF0b3I8QW5pbWF0aW9uRnVuY3Rpb24+IHsKKyAgICB1c2luZyBCYXNlID0gU1ZHUHJv
cGVydHlBbmltYXRvcjxBbmltYXRpb25GdW5jdGlvbj47CisgICAgdXNpbmcgQmFzZTo6QmFzZTsK
KyAgICB1c2luZyBCYXNlOjphcHBseUFuaW1hdGVkU3R5bGVQcm9wZXJ0eUNoYW5nZTsKKyAgICB1
c2luZyBCYXNlOjptX2Z1bmN0aW9uOworCitwdWJsaWM6CisgICAgdGVtcGxhdGU8dHlwZW5hbWUu
Li4gQXJndW1lbnRzPgorICAgIFNWR1ZhbHVlUHJvcGVydHlMaXN0QW5pbWF0b3IoY29uc3QgUXVh
bGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR1Byb3BlcnR5PiYmIHByb3BlcnR5LCBB
cmd1bWVudHMmJi4uLiBhcmd1bWVudHMpCisgICAgICAgIDogQmFzZShhdHRyaWJ1dGVOYW1lLCBz
dGQ6OmZvcndhcmQ8QXJndW1lbnRzPihhcmd1bWVudHMpLi4uKQorICAgICAgICAsIG1fbGlzdChz
dGF0aWNfcmVmZXJlbmNlX2Nhc3Q8TGlzdFR5cGU+KFdURk1vdmUocHJvcGVydHkpKSkKKyAgICB7
CisgICAgfQorCisgICAgdm9pZCBwcm9ncmVzcyhTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50LCBm
bG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZCByZXBlYXRDb3VudCkgb3ZlcnJpZGUKKyAgICB7Cisg
ICAgICAgIG1fZnVuY3Rpb24ucHJvZ3Jlc3ModGFyZ2V0RWxlbWVudCwgcGVyY2VudGFnZSwgcmVw
ZWF0Q291bnQsIG1fbGlzdCk7CisgICAgfQorCisgICAgdm9pZCBhcHBseShTVkdFbGVtZW50KiB0
YXJnZXRFbGVtZW50KSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgYXBwbHlBbmltYXRlZFN0eWxl
UHJvcGVydHlDaGFuZ2UodGFyZ2V0RWxlbWVudCwgbV9saXN0LT52YWx1ZUFzU3RyaW5nKCkpOwor
ICAgIH0KKworcHJvdGVjdGVkOgorICAgIHVzaW5nIEJhc2U6OmNvbXB1dGVDU1NQcm9wZXJ0eVZh
bHVlOworICAgIHVzaW5nIEJhc2U6Om1fYXR0cmlidXRlTmFtZTsKKworICAgIFJlZlB0cjxMaXN0
VHlwZT4gbV9saXN0OworfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3By
b3BlcnRpZXMvU1ZHVmFsdWVQcm9wZXJ0eUxpc3RBbmltYXRvckltcGwuaCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1ZhbHVlUHJvcGVydHlMaXN0QW5pbWF0b3JJbXBsLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNWVlOGFjM2QwZjRlMTJjNjJhNWVmYzAwZmY1M2I1OTBlNDAwZjM2OAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1ZhbHVlUHJvcGVy
dHlMaXN0QW5pbWF0b3JJbXBsLmgKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxOC0yMDE5IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSAiU1ZHQW5pbWF0aW9uRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJTVkdWYWx1ZVByb3BlcnR5TGlz
dEFuaW1hdG9yLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU1ZHTGVuZ3RoTGlz
dEFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNWR1ZhbHVlUHJvcGVydHlMaXN0QW5pbWF0b3I8U1ZH
TGVuZ3RoTGlzdCwgU1ZHQW5pbWF0aW9uTGVuZ3RoTGlzdEZ1bmN0aW9uPiB7CisgICAgdXNpbmcg
QmFzZSA9IFNWR1ZhbHVlUHJvcGVydHlMaXN0QW5pbWF0b3I8U1ZHTGVuZ3RoTGlzdCwgU1ZHQW5p
bWF0aW9uTGVuZ3RoTGlzdEZ1bmN0aW9uPjsKKyAgICB1c2luZyBCYXNlOjpCYXNlOworICAgIHVz
aW5nIEJhc2U6Om1fYXR0cmlidXRlTmFtZTsKKyAgICB1c2luZyBCYXNlOjptX2xpc3Q7CisKK3B1
YmxpYzoKKyAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmli
dXRlTmFtZSwgUmVmPFNWR1Byb3BlcnR5PiYmIHByb3BlcnR5LCBBbmltYXRpb25Nb2RlIGFuaW1h
dGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNB
ZGRpdGl2ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR0xlbmd0
aExpc3RBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgV1RGTW92ZShwcm9wZXJ0eSksIGFuaW1hdGlv
bk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlLCBMZW5ndGhNb2RlT3Ro
ZXIpOworICAgIH0KKworICAgIHZvaWQgc3RhcnQoU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCkg
b3ZlcnJpZGUKKyAgICB7CisgICAgICAgIFN0cmluZyBiYXNlVmFsdWUgPSBjb21wdXRlQ1NTUHJv
cGVydHlWYWx1ZSh0YXJnZXRFbGVtZW50LCBjc3NQcm9wZXJ0eUlEKG1fYXR0cmlidXRlTmFtZS5s
b2NhbE5hbWUoKSkpOworICAgICAgICBpZiAoIW1fbGlzdC0+cGFyc2UoYmFzZVZhbHVlKSkKKyAg
ICAgICAgICAgIG1fbGlzdC0+Y2xlYXJJdGVtcygpOworICAgIH0KK307CisKK30KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBk
MGUwZDY4NDM1OTVjMzU1ZWRjMTBlMzg5NjQzNTMyMjdkYzlhZDg2Li45ZDhmNjE2ODIyM2ViNjBj
OWE1NjIxNjNkMDNmMzcyODdjZjM2ZjkwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTktMDMt
MjUgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3Zl
IHRoZSBTVkcgdGVhciBvZmYgb2JqZWN0cyBmb3IgU1ZHTGVuZ3RoLCBTVkdMZW5ndGhMaXN0IGFu
ZCBTVkdBbmltYXRlZExlbmd0aExpc3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE5NjA4MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAg
ICogc3ZnL2FuaW1hdGlvbnMvc3ZnbGVuZ3RoLWVsZW1lbnQtcmVtb3ZlZC1jcmFzaC5zdmc6Cisg
ICAgICAgICogc3ZnL2RvbS9TVkdMZW5ndGhMaXN0LWFwcGVuZEl0ZW0tZXhwZWN0ZWQudHh0Ogor
ICAgICAgICAqIHN2Zy9kb20vU1ZHTGVuZ3RoTGlzdC1hcHBlbmRJdGVtLnhodG1sOgorICAgICAg
ICAqIHN2Zy9kb20vU1ZHTGVuZ3RoTGlzdC1iYXNpY3MtZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IHN2Zy9kb20vU1ZHTGVuZ3RoTGlzdC1iYXNpY3MueGh0bWw6CisgICAgICAgICogc3ZnL2RvbS9T
VkdMZW5ndGhMaXN0LWluaXRpYWxpemUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHN2Zy9kb20v
U1ZHTGVuZ3RoTGlzdC1pbml0aWFsaXplLnhodG1sOgorICAgICAgICAqIHN2Zy9kb20vU1ZHTGVu
Z3RoTGlzdC1pbnNlcnRJdGVtQmVmb3JlLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzdmcvZG9t
L1NWR0xlbmd0aExpc3QtaW5zZXJ0SXRlbUJlZm9yZS54aHRtbDoKKyAgICAgICAgKiBzdmcvZG9t
L1NWR0xlbmd0aExpc3QtcmVtb3ZlSXRlbS1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3ZnL2Rv
bS9TVkdMZW5ndGhMaXN0LXJlbW92ZUl0ZW0ueGh0bWw6CisgICAgICAgICogc3ZnL2RvbS9TVkdM
ZW5ndGhMaXN0LXJlcGxhY2VJdGVtLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzdmcvZG9tL1NW
R0xlbmd0aExpc3QtcmVwbGFjZUl0ZW0ueGh0bWw6CisgICAgICAgIFRoaXMgY2hhbmdlcyBhcmUg
cmVxdWlyZWQgYmVjYXVzZSBTVkdMZW5ndGhMaXN0IHdpbGwgYmUgZm9sbG93aW5nIHRoZSBTVkcy
CisgICAgICAgIHNwZWNzIHJlZ2FyZGluZyBhZGRpbmcgbmV3IGl0ZW1zIHRvIHRoZSBsaXN0LiAK
KworICAgICAgICBTZWUgaHR0cHM6Ly93d3cudzMub3JnL1RSL1NWRy90eXBlcy5odG1sI1Rlcm1M
aXN0SW50ZXJmYWNlLgorCiAyMDE5LTAzLTI1ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxl
LmNvbT4KIAogICAgICAgICBUb2dnbGluZyAiZGlzcGxheTogY29udGVudHMiIHRvICJkaXNwbGF5
OiBub25lIiBmYWlscyB0byBoaWRlIHRoZSBlbGVtZW50CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dp
bi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDhhMzBiOWM3MjVlZjcyZTE5OTAxYmUxZWE5NzM2MDAx
MDE4ZTU4ZDMuLmE0ODJhZTIzYjg0ZjRkZmQ1OGJlODYxNjA3ZjEzZjBjZDhkNWZkOWUgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zCkBAIC0xOTU0LDYgKzE5NTQs
OSBAQCBpbXBvcnRlZC9tb3ppbGxhL3N2Zy9zdmctZWZmZWN0cy1hcmVhLXpvb21lZC1pbi54aHRt
bAogaW1wb3J0ZWQvbW96aWxsYS9zdmcvc3ZnLWVmZmVjdHMtYXJlYS16b29tZWQtb3V0LnhodG1s
CiBzdmcvZmlsdGVycy9mZUltYWdlLXNlbGYtYW5kLW90aGVyLXJlZmVyZW5jaW5nLmh0bWwKIAor
IyBHQ0NvbnRyb2xsZXIuY29sbGVjdCgpIGlzc3Vlcy4KK3N2Zy9hbmltYXRpb25zL3N2Z2xlbmd0
aC1lbGVtZW50LXJlbW92ZWQtY3Jhc2guc3ZnIFsgRmFpbHVyZSBdCisKICMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjCiAjIyMjIyMjIyMjIyMjIyMjIyMjICAgICAgICAgIEVuZCBTVkcgSXNzdWVzICAg
ICAgICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL3N2Z2xlbmd0aC1lbGVt
ZW50LXJlbW92ZWQtY3Jhc2guc3ZnIGIvTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMvc3ZnbGVu
Z3RoLWVsZW1lbnQtcmVtb3ZlZC1jcmFzaC5zdmcKaW5kZXggNTExY2Q2M2YyYTMwOTVjOTIzZWIw
MmMyNzZkOGYyZjAzN2QxMzA0MS4uYjEzMmM3NmZiMWEwMzgyMjgwODJlZDVkYWExYjFiNjMxNjNm
MWVjNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMvc3ZnbGVuZ3RoLWVs
ZW1lbnQtcmVtb3ZlZC1jcmFzaC5zdmcKKysrIGIvTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMv
c3ZnbGVuZ3RoLWVsZW1lbnQtcmVtb3ZlZC1jcmFzaC5zdmcKQEAgLTMyLDggKzMyLDggQEAgZnVu
Y3Rpb24gbG9hZCgpIHsKICAgICAvLyBUaGUgcmVzdCBvZiB0aGlzIHRlc3Qgc2hvdWxkIEZBSUwg
d2l0aG91dCByZXF1aXJpbmcgZ21hbGxvYyBpZiB0aGlzIHRlc3QgaGFzIHJlZ3Jlc3NlZC4KICAg
ICB2YXIgbGl2ZURlbHRhID0gd2luZG93LmludGVybmFscy5udW1iZXJPZkxpdmVOb2RlcygpIC0g
b3JpZ2luYWxMaXZlRWxlbWVudHM7CiAgICAgCi0gICAgLy8gTWFrZSBzdXJlIHRoYXQgdGhlIDxy
ZWN0PiBpcyBzdGlsbCBhbGl2ZTsgaWYgaXQncyBub3QsIGxpdmVEZWx0YSB3aWxsIGJlIC0xLgot
ICAgIGlmIChsaXZlRGVsdGEgPT0gMCkKKyAgICAvLyBNYWtlIHN1cmUgdGhhdCB0aGUgPHJlY3Q+
IGlzIGRlbGV0ZWQ7IGlmIGl0J3Mgbm90LCBsaXZlRGVsdGEgd2lsbCBiZSAwLgorICAgIGlmIChs
aXZlRGVsdGEgPT0gLTEpCiAgICAgICAgIGxvZygiIFBBU1MiKTsKICAgICBlbHNlCiAgICAgICAg
IGxvZygiIEZBSUw6ICIgKyBsaXZlRGVsdGEgKyAiIGV4dHJhIGxpdmUgbm9kZShzKSIpOwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3ZnL2RvbS9TVkdMZW5ndGhMaXN0LWFwcGVuZEl0ZW0tZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3ZnL2RvbS9TVkdMZW5ndGhMaXN0LWFwcGVuZEl0ZW0t
ZXhwZWN0ZWQudHh0CmluZGV4IGQ0NWE5OTQwYTM0Mzk3MDZiMGRhNWM4YmYxZWMxYjI4MTY3ZTZk
YWIuLmU2YTY5ZDlhMzgyNTAwYjhmZWI5NzA0NjNmNzEzYzgzMmY0MDAxYmUgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3N2Zy9kb20vU1ZHTGVuZ3RoTGlzdC1hcHBlbmRJdGVtLWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9zdmcvZG9tL1NWR0xlbmd0aExpc3QtYXBwZW5kSXRlbS1leHBl
Y3RlZC50eHQKQEAgLTI3LDcgKzI3LDggQEAgUEFTUyB0ZXh0Mi54LmJhc2VWYWwuZ2V0SXRlbSgy
KS52YWx1ZSBpcyAxMDAwCiBQQVNTIHRleHQyLnguYmFzZVZhbC5nZXRJdGVtKDMpIHRocmV3IGV4
Y2VwdGlvbiBJbmRleFNpemVFcnJvcjogVGhlIGluZGV4IGlzIG5vdCBpbiB0aGUgYWxsb3dlZCBy
YW5nZS4uCiAKIEFwcGVuZCBmb3VydGggaXRlbSB4PTkwMCB0byB0aGUgdGV4dDEgeCBsaXN0Ci1Q
QVNTIHRleHQxLnguYmFzZVZhbC5hcHBlbmRJdGVtKHRleHQxLnguYmFzZVZhbC5nZXRJdGVtKDMp
KSBpcyB0ZXh0MS54LmJhc2VWYWwuZ2V0SXRlbSg0KQorUEFTUyB0ZXh0MS54LmJhc2VWYWwuYXBw
ZW5kSXRlbSh0ZXh0MS54LmJhc2VWYWwuZ2V0SXRlbSgzKSkgaXMgdGV4dDEueC5iYXNlVmFsLmdl
dEl0ZW0oNSkKK1BBU1MgdGV4dDEueC5iYXNlVmFsLnJlbW92ZUl0ZW0oMykudG9TdHJpbmcoKSBp
cyAiW29iamVjdCBTVkdMZW5ndGhdIgogUEFTUyB0ZXh0MS54LmJhc2VWYWwubnVtYmVyT2ZJdGVt
cyBpcyA1CiBQQVNTIHRleHQxLnguYmFzZVZhbC5nZXRJdGVtKDApLnZhbHVlIGlzIDUwMAogUEFT
UyB0ZXh0MS54LmJhc2VWYWwuZ2V0SXRlbSgxKS52YWx1ZSBpcyA1MApAQCAtMzcsNyArMzgsOCBA
QCBQQVNTIHRleHQxLnguYmFzZVZhbC5nZXRJdGVtKDQpLnZhbHVlIGlzIDkwMAogUEFTUyB0ZXh0
MS54LmJhc2VWYWwuZ2V0SXRlbSg1KSB0aHJldyBleGNlcHRpb24gSW5kZXhTaXplRXJyb3I6IFRo
ZSBpbmRleCBpcyBub3QgaW4gdGhlIGFsbG93ZWQgcmFuZ2UuLgogCiBBcHBlbmQgZmlyc3QgaXRl
bSB4PTUwMCB0byB0aGUgdGV4dDEgeCBsaXN0Ci1QQVNTIHRleHQxLnguYmFzZVZhbC5hcHBlbmRJ
dGVtKHRleHQxLnguYmFzZVZhbC5nZXRJdGVtKDApKSBpcyB0ZXh0MS54LmJhc2VWYWwuZ2V0SXRl
bSg0KQorUEFTUyB0ZXh0MS54LmJhc2VWYWwuYXBwZW5kSXRlbSh0ZXh0MS54LmJhc2VWYWwuZ2V0
SXRlbSgwKSkgaXMgdGV4dDEueC5iYXNlVmFsLmdldEl0ZW0oNSkKK1BBU1MgdGV4dDEueC5iYXNl
VmFsLnJlbW92ZUl0ZW0oMCkudG9TdHJpbmcoKSBpcyAiW29iamVjdCBTVkdMZW5ndGhdIgogUEFT
UyB0ZXh0MS54LmJhc2VWYWwubnVtYmVyT2ZJdGVtcyBpcyA1CiBQQVNTIHRleHQxLnguYmFzZVZh
bC5nZXRJdGVtKDApLnZhbHVlIGlzIDUwCiBQQVNTIHRleHQxLnguYmFzZVZhbC5nZXRJdGVtKDEp
LnZhbHVlIGlzIDEwMApAQCAtNTksNyArNjEsOSBAQCBQQVNTIHRleHQxLnguYmFzZVZhbC5nZXRJ
dGVtKDYpIHRocmV3IGV4Y2VwdGlvbiBJbmRleFNpemVFcnJvcjogVGhlIGluZGV4IGlzIG5vdAog
CiBBcHBlbmQgdGhpcmQgYW5kIGZvdXJ0aCBpdGVtIG9mIHRoZSB0ZXh0MSB4IGxpc3QgdG8gdGhl
IHRleHQyIHggbGlzdAogUEFTUyB0ZXh0Mi54LmJhc2VWYWwuYXBwZW5kSXRlbSh0ZXh0MS54LmJh
c2VWYWwuZ2V0SXRlbSgyKSkudmFsdWUgaXMgMTAwMAorUEFTUyB0ZXh0MS54LmJhc2VWYWwucmVt
b3ZlSXRlbSgyKS50b1N0cmluZygpIGlzICJbb2JqZWN0IFNWR0xlbmd0aF0iCiBQQVNTIHRleHQy
LnguYmFzZVZhbC5hcHBlbmRJdGVtKHRleHQxLnguYmFzZVZhbC5nZXRJdGVtKDIpKS52YWx1ZSBp
cyA5MDAKK1BBU1MgdGV4dDEueC5iYXNlVmFsLnJlbW92ZUl0ZW0oMikudG9TdHJpbmcoKSBpcyAi
W29iamVjdCBTVkdMZW5ndGhdIgogUEFTUyB0ZXh0MS54LmJhc2VWYWwubnVtYmVyT2ZJdGVtcyBp
cyA0CiBQQVNTIHRleHQxLnguYmFzZVZhbC5nZXRJdGVtKDApLnZhbHVlIGlzIDUwCiBQQVNTIHRl
eHQxLnguYmFzZVZhbC5nZXRJdGVtKDEpLnZhbHVlIGlzIDEwMApAQCAtNzcsMTAgKzgxLDE0IEBA
IFBBU1MgbmV3TGVuZ3RoMi52YWx1ZSBpcyAxNTAKIAogU2h1ZmZsZSBhcm91bmQgaXRlbXMgaW4g
dGV4dDEgYW5kIHRleHQyIGxpc3QgdXNpbmcgYXBwZW5kSXRlbSwgdG8gZ2V0IHg9NTAsMTAwLDE1
MCwuLi4gaW4gYm90aCBsaXN0cwogUEFTUyB0ZXh0MS54LmJhc2VWYWwuYXBwZW5kSXRlbSh0ZXh0
MS54LmJhc2VWYWwuZ2V0SXRlbSgyKSkudmFsdWUgaXMgNTAwCitQQVNTIHRleHQxLnguYmFzZVZh
bC5yZW1vdmVJdGVtKDIpLnRvU3RyaW5nKCkgaXMgIltvYmplY3QgU1ZHTGVuZ3RoXSIKIFBBU1Mg
dGV4dDIueC5iYXNlVmFsLmFwcGVuZEl0ZW0obmV3TGVuZ3RoMikudmFsdWUgaXMgMTUwCiBQQVNT
IHRleHQyLnguYmFzZVZhbC5hcHBlbmRJdGVtKHRleHQyLnguYmFzZVZhbC5nZXRJdGVtKDIpKS52
YWx1ZSBpcyAxMDAwCitQQVNTIHRleHQyLnguYmFzZVZhbC5yZW1vdmVJdGVtKDIpLnRvU3RyaW5n
KCkgaXMgIltvYmplY3QgU1ZHTGVuZ3RoXSIKIFBBU1MgdGV4dDIueC5iYXNlVmFsLmFwcGVuZEl0
ZW0odGV4dDIueC5iYXNlVmFsLmdldEl0ZW0oMykpLnZhbHVlIGlzIDkwMAorUEFTUyB0ZXh0Mi54
LmJhc2VWYWwucmVtb3ZlSXRlbSgzKS50b1N0cmluZygpIGlzICJbb2JqZWN0IFNWR0xlbmd0aF0i
CiBQQVNTIHRleHQyLnguYmFzZVZhbC5hcHBlbmRJdGVtKHRleHQyLnguYmFzZVZhbC5nZXRJdGVt
KDIpKS52YWx1ZSBpcyAxMDAwCitQQVNTIHRleHQyLnguYmFzZVZhbC5yZW1vdmVJdGVtKDIpLnRv
U3RyaW5nKCkgaXMgIltvYmplY3QgU1ZHTGVuZ3RoXSIKIFBBU1MgdGV4dDEueC5iYXNlVmFsLm51
bWJlck9mSXRlbXMgaXMgNAogUEFTUyB0ZXh0MS54LmJhc2VWYWwuZ2V0SXRlbSgwKS52YWx1ZSBp
cyA1MAogUEFTUyB0ZXh0MS54LmJhc2VWYWwuZ2V0SXRlbSgxKS52YWx1ZSBpcyAxMDAKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3N2Zy9kb20vU1ZHTGVuZ3RoTGlzdC1hcHBlbmRJdGVtLnhodG1s
IGIvTGF5b3V0VGVzdHMvc3ZnL2RvbS9TVkdMZW5ndGhMaXN0LWFwcGVuZEl0ZW0ueGh0bWwKaW5k
ZXggNDllYzgwMmJlZTczZGY2MTYxMjIyNGFhYWIxMTg1YWFjZGE4ZTE5NS4uZWI1NGI5NTEyNTAz
OWI0N2E2NDFhOTcwNDI1NTRhNWNmM2IxNTczMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3Zn
L2RvbS9TVkdMZW5ndGhMaXN0LWFwcGVuZEl0ZW0ueGh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3Zn
L2RvbS9TVkdMZW5ndGhMaXN0LWFwcGVuZEl0ZW0ueGh0bWwKQEAgLTQ2LDcgKzQ2LDggQEAKIAog
ICAgIGRlYnVnKCIiKTsKICAgICBkZWJ1ZygiQXBwZW5kIGZvdXJ0aCBpdGVtIHg9OTAwIHRvIHRo
ZSB0ZXh0MSB4IGxpc3QiKTsKLSAgICBzaG91bGRCZSgidGV4dDEueC5iYXNlVmFsLmFwcGVuZEl0
ZW0odGV4dDEueC5iYXNlVmFsLmdldEl0ZW0oMykpIiwgInRleHQxLnguYmFzZVZhbC5nZXRJdGVt
KDQpIik7CisgICAgc2hvdWxkQmUoInRleHQxLnguYmFzZVZhbC5hcHBlbmRJdGVtKHRleHQxLngu
YmFzZVZhbC5nZXRJdGVtKDMpKSIsICJ0ZXh0MS54LmJhc2VWYWwuZ2V0SXRlbSg1KSIpOworICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygidGV4dDEueC5iYXNlVmFsLnJlbW92ZUl0ZW0oMykudG9T
dHJpbmcoKSIsICJbb2JqZWN0IFNWR0xlbmd0aF0iKTsKICAgICBzaG91bGRCZSgidGV4dDEueC5i
YXNlVmFsLm51bWJlck9mSXRlbXMiLCAiNSIpOwogICAgIHNob3VsZEJlKCJ0ZXh0MS54LmJhc2VW
YWwuZ2V0SXRlbSgwKS52YWx1ZSIsICI1MDAiKTsKICAgICBzaG91bGRCZSgidGV4dDEueC5iYXNl
VmFsLmdldEl0ZW0oMSkudmFsdWUiLCAiNTAiKTsKQEAgLTU3LDcgKzU4LDggQEAKIAogICAgIGRl
YnVnKCIiKTsKICAgICBkZWJ1ZygiQXBwZW5kIGZpcnN0IGl0ZW0geD01MDAgdG8gdGhlIHRleHQx
IHggbGlzdCIpOwotICAgIHNob3VsZEJlKCJ0ZXh0MS54LmJhc2VWYWwuYXBwZW5kSXRlbSh0ZXh0
MS54LmJhc2VWYWwuZ2V0SXRlbSgwKSkiLCAidGV4dDEueC5iYXNlVmFsLmdldEl0ZW0oNCkiKTsK
KyAgICBzaG91bGRCZSgidGV4dDEueC5iYXNlVmFsLmFwcGVuZEl0ZW0odGV4dDEueC5iYXNlVmFs
LmdldEl0ZW0oMCkpIiwgInRleHQxLnguYmFzZVZhbC5nZXRJdGVtKDUpIik7CisgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJ0ZXh0MS54LmJhc2VWYWwucmVtb3ZlSXRlbSgwKS50b1N0cmluZygp
IiwgIltvYmplY3QgU1ZHTGVuZ3RoXSIpOwogICAgIHNob3VsZEJlKCJ0ZXh0MS54LmJhc2VWYWwu
bnVtYmVyT2ZJdGVtcyIsICI1Iik7CiAgICAgc2hvdWxkQmUoInRleHQxLnguYmFzZVZhbC5nZXRJ
dGVtKDApLnZhbHVlIiwgIjUwIik7CiAgICAgc2hvdWxkQmUoInRleHQxLnguYmFzZVZhbC5nZXRJ
dGVtKDEpLnZhbHVlIiwgIjEwMCIpOwpAQCAtODEsNyArODMsOSBAQAogICAgIGRlYnVnKCIiKTsK
ICAgICBkZWJ1ZygiQXBwZW5kIHRoaXJkIGFuZCBmb3VydGggaXRlbSBvZiB0aGUgdGV4dDEgeCBs
aXN0IHRvIHRoZSB0ZXh0MiB4IGxpc3QiKTsKICAgICBzaG91bGRCZSgidGV4dDIueC5iYXNlVmFs
LmFwcGVuZEl0ZW0odGV4dDEueC5iYXNlVmFsLmdldEl0ZW0oMikpLnZhbHVlIiwgIjEwMDAiKTsK
KyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInRleHQxLnguYmFzZVZhbC5yZW1vdmVJdGVtKDIp
LnRvU3RyaW5nKCkiLCAiW29iamVjdCBTVkdMZW5ndGhdIik7CiAgICAgc2hvdWxkQmUoInRleHQy
LnguYmFzZVZhbC5hcHBlbmRJdGVtKHRleHQxLnguYmFzZVZhbC5nZXRJdGVtKDIpKS52YWx1ZSIs
ICI5MDAiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInRleHQxLnguYmFzZVZhbC5yZW1v
dmVJdGVtKDIpLnRvU3RyaW5nKCkiLCAiW29iamVjdCBTVkdMZW5ndGhdIik7CiAgICAgc2hvdWxk
QmUoInRleHQxLnguYmFzZVZhbC5udW1iZXJPZkl0ZW1zIiwgIjQiKTsKICAgICBzaG91bGRCZSgi
dGV4dDEueC5iYXNlVmFsLmdldEl0ZW0oMCkudmFsdWUiLCAiNTAiKTsKICAgICBzaG91bGRCZSgi
dGV4dDEueC5iYXNlVmFsLmdldEl0ZW0oMSkudmFsdWUiLCAiMTAwIik7CkBAIC0xMDMsMTAgKzEw
NywxNCBAQAogICAgIGRlYnVnKCIiKTsKICAgICBkZWJ1ZygiU2h1ZmZsZSBhcm91bmQgaXRlbXMg
aW4gdGV4dDEgYW5kIHRleHQyIGxpc3QgdXNpbmcgYXBwZW5kSXRlbSwgdG8gZ2V0IHg9NTAsMTAw
LDE1MCwuLi4gaW4gYm90aCBsaXN0cyIpOwogICAgIHNob3VsZEJlKCJ0ZXh0MS54LmJhc2VWYWwu
YXBwZW5kSXRlbSh0ZXh0MS54LmJhc2VWYWwuZ2V0SXRlbSgyKSkudmFsdWUiLCAiNTAwIik7Cisg
ICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ0ZXh0MS54LmJhc2VWYWwucmVtb3ZlSXRlbSgyKS50
b1N0cmluZygpIiwgIltvYmplY3QgU1ZHTGVuZ3RoXSIpOwogICAgIHNob3VsZEJlKCJ0ZXh0Mi54
LmJhc2VWYWwuYXBwZW5kSXRlbShuZXdMZW5ndGgyKS52YWx1ZSIsICIxNTAiKTsKICAgICBzaG91
bGRCZSgidGV4dDIueC5iYXNlVmFsLmFwcGVuZEl0ZW0odGV4dDIueC5iYXNlVmFsLmdldEl0ZW0o
MikpLnZhbHVlIiwgIjEwMDAiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInRleHQyLngu
YmFzZVZhbC5yZW1vdmVJdGVtKDIpLnRvU3RyaW5nKCkiLCAiW29iamVjdCBTVkdMZW5ndGhdIik7
CiAgICAgc2hvdWxkQmUoInRleHQyLnguYmFzZVZhbC5hcHBlbmRJdGVtKHRleHQyLnguYmFzZVZh
bC5nZXRJdGVtKDMpKS52YWx1ZSIsICI5MDAiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmco
InRleHQyLnguYmFzZVZhbC5yZW1vdmVJdGVtKDMpLnRvU3RyaW5nKCkiLCAiW29iamVjdCBTVkdM
ZW5ndGhdIik7CiAgICAgc2hvdWxkQmUoInRleHQyLnguYmFzZVZhbC5hcHBlbmRJdGVtKHRleHQy
LnguYmFzZVZhbC5nZXRJdGVtKDIpKS52YWx1ZSIsICIxMDAwIik7CisgICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJ0ZXh0Mi54LmJhc2VWYWwucmVtb3ZlSXRlbSgyKS50b1N0cmluZygpIiwgIltv
YmplY3QgU1ZHTGVuZ3RoXSIpOwogICAgIHNob3VsZEJlKCJ0ZXh0MS54LmJhc2VWYWwubnVtYmVy
T2ZJdGVtcyIsICI0Iik7CiAgICAgc2hvdWxkQmUoInRleHQxLnguYmFzZVZhbC5nZXRJdGVtKDAp
LnZhbHVlIiwgIjUwIik7CiAgICAgc2hvdWxkQmUoInRleHQxLnguYmFzZVZhbC5nZXRJdGVtKDEp
LnZhbHVlIiwgIjEwMCIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3ZnL2RvbS9TVkdMZW5n
dGhMaXN0LWJhc2ljcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdmcvZG9tL1NWR0xlbmd0
aExpc3QtYmFzaWNzLWV4cGVjdGVkLnR4dAppbmRleCA3MDI1NmM4ODI4YWFkOTdhNDZkMmRjZGEw
NjQ0ZjRiNzFlNWIwYzJmLi5hZmY5MGIyM2E5MDk5NWIxOTI1MWVhNzY2OWRkZDlhOTIxOGY3MDdk
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdmcvZG9tL1NWR0xlbmd0aExpc3QtYmFzaWNzLWV4
cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdmcvZG9tL1NWR0xlbmd0aExpc3QtYmFzaWNz
LWV4cGVjdGVkLnR4dApAQCAtMjksMjQgKzI5LDI4IEBAIFBBU1MgdGV4dDEueC5iYXNlVmFsLmlu
c2VydEl0ZW1CZWZvcmUoJ2FTdHJpbmcnKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBOb3QK
IFBBU1MgdGV4dDEueC5iYXNlVmFsLmluc2VydEl0ZW1CZWZvcmUodGV4dDEpIHRocmV3IGV4Y2Vw
dGlvbiBUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzLgogUEFTUyB0ZXh0MS54LmJhc2VW
YWwuaW5zZXJ0SXRlbUJlZm9yZShudWxsKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBOb3Qg
ZW5vdWdoIGFyZ3VtZW50cy4KIFBBU1MgdGV4dDEueC5iYXNlVmFsLmluc2VydEl0ZW1CZWZvcmUo
dGV4dDEueC5iYXNlVmFsLmdldEl0ZW0oMSksICdhU3RyaW5nJykgaXMgdGV4dDEueC5iYXNlVmFs
LmdldEl0ZW0oMCkKK1BBU1MgdGV4dDEueC5iYXNlVmFsLnJlbW92ZUl0ZW0oMikudG9TdHJpbmco
KSBpcyAiW29iamVjdCBTVkdMZW5ndGhdIgogUEFTUyB0ZXh0MS54LmJhc2VWYWwubnVtYmVyT2ZJ
dGVtcyBpcyAzCiBQQVNTIHRleHQxLnguYmFzZVZhbC5nZXRJdGVtKDApLnZhbHVlIGlzIDEwMDAK
IFBBU1MgdGV4dDEueC5iYXNlVmFsLmdldEl0ZW0oMSkudmFsdWUgaXMgNTAwCiBQQVNTIHRleHQx
LnguYmFzZVZhbC5nZXRJdGVtKDIpLnZhbHVlIGlzIDE1MDAKIFBBU1MgdGV4dDEuZ2V0QXR0cmli
dXRlKCd4JykgaXMgIjEwMDAgNTAwIDE1MDAiCiBQQVNTIHRleHQxLnguYmFzZVZhbC5pbnNlcnRJ
dGVtQmVmb3JlKHRleHQxLnguYmFzZVZhbC5nZXRJdGVtKDEpLCB0ZXh0MSkgaXMgdGV4dDEueC5i
YXNlVmFsLmdldEl0ZW0oMCkKK1BBU1MgdGV4dDEueC5iYXNlVmFsLnJlbW92ZUl0ZW0oMikudG9T
dHJpbmcoKSBpcyAiW29iamVjdCBTVkdMZW5ndGhdIgogUEFTUyB0ZXh0MS54LmJhc2VWYWwubnVt
YmVyT2ZJdGVtcyBpcyAzCiBQQVNTIHRleHQxLnguYmFzZVZhbC5nZXRJdGVtKDApLnZhbHVlIGlz
IDUwMAogUEFTUyB0ZXh0MS54LmJhc2VWYWwuZ2V0SXRlbSgxKS52YWx1ZSBpcyAxMDAwCiBQQVNT
IHRleHQxLnguYmFzZVZhbC5nZXRJdGVtKDIpLnZhbHVlIGlzIDE1MDAKIFBBU1MgdGV4dDEuZ2V0
QXR0cmlidXRlKCd4JykgaXMgIjUwMCAxMDAwIDE1MDAiCiBQQVNTIHRleHQxLnguYmFzZVZhbC5p
bnNlcnRJdGVtQmVmb3JlKHRleHQxLnguYmFzZVZhbC5nZXRJdGVtKDEpLCBudWxsKSBpcyB0ZXh0
MS54LmJhc2VWYWwuZ2V0SXRlbSgwKQorUEFTUyB0ZXh0MS54LmJhc2VWYWwucmVtb3ZlSXRlbSgy
KS50b1N0cmluZygpIGlzICJbb2JqZWN0IFNWR0xlbmd0aF0iCiBQQVNTIHRleHQxLnguYmFzZVZh
bC5udW1iZXJPZkl0ZW1zIGlzIDMKIFBBU1MgdGV4dDEueC5iYXNlVmFsLmdldEl0ZW0oMCkudmFs
dWUgaXMgMTAwMAogUEFTUyB0ZXh0MS54LmJhc2VWYWwuZ2V0SXRlbSgxKS52YWx1ZSBpcyA1MDAK
IFBBU1MgdGV4dDEueC5iYXNlVmFsLmdldEl0ZW0oMikudmFsdWUgaXMgMTUwMAogUEFTUyB0ZXh0
MS5nZXRBdHRyaWJ1dGUoJ3gnKSBpcyAiMTAwMCA1MDAgMTUwMCIKIFBBU1MgdGV4dDEueC5iYXNl
VmFsLmluc2VydEl0ZW1CZWZvcmUodGV4dDEueC5iYXNlVmFsLmdldEl0ZW0oMSksIDApIGlzIHRl
eHQxLnguYmFzZVZhbC5nZXRJdGVtKDApCitQQVNTIHRleHQxLnguYmFzZVZhbC5yZW1vdmVJdGVt
KDIpLnRvU3RyaW5nKCkgaXMgIltvYmplY3QgU1ZHTGVuZ3RoXSIKIFBBU1MgdGV4dDEueC5iYXNl
VmFsLm51bWJlck9mSXRlbXMgaXMgMwogUEFTUyB0ZXh0MS54LmJhc2VWYWwuZ2V0SXRlbSgwKS52
YWx1ZSBpcyA1MDAKIFBBU1MgdGV4dDEueC5iYXNlVmFsLmdldEl0ZW0oMSkudmFsdWUgaXMgMTAw
MApAQCAtNjIsMTAgKzY2LDEzIEBAIFBBU1MgdGV4dDEuc2V0QXR0cmlidXRlKCd4JywgJzEgMiAz
IDQnKSBpcyB1bmRlZmluZWQuCiAKIFRlc3QgZWRnZSBjYXNlcyBmb3IgaW5zZXJ0SXRlbUJlZm9y
ZSgpCiBQQVNTIHRleHQxLnguYmFzZVZhbC5pbnNlcnRJdGVtQmVmb3JlKHRleHQxLnguYmFzZVZh
bC5nZXRJdGVtKDMpLCAzKSBpcyB0ZXh0MS54LmJhc2VWYWwuZ2V0SXRlbSgzKQorUEFTUyB0ZXh0
MS54LmJhc2VWYWwucmVtb3ZlSXRlbSg0KS50b1N0cmluZygpIGlzICJbb2JqZWN0IFNWR0xlbmd0
aF0iCiBQQVNTIHRleHQxLmdldEF0dHJpYnV0ZSgneCcpIGlzICIxIDIgMyA0IgotUEFTUyB0ZXh0
MS54LmJhc2VWYWwuaW5zZXJ0SXRlbUJlZm9yZSh0ZXh0MS54LmJhc2VWYWwuZ2V0SXRlbSgxKSwg
NSkgaXMgdGV4dDEueC5iYXNlVmFsLmdldEl0ZW0oMykKK1BBU1MgdGV4dDEueC5iYXNlVmFsLmlu
c2VydEl0ZW1CZWZvcmUodGV4dDEueC5iYXNlVmFsLmdldEl0ZW0oMSksIDUpIGlzIHRleHQxLngu
YmFzZVZhbC5nZXRJdGVtKDQpCitQQVNTIHRleHQxLnguYmFzZVZhbC5yZW1vdmVJdGVtKDEpLnRv
U3RyaW5nKCkgaXMgIltvYmplY3QgU1ZHTGVuZ3RoXSIKIFBBU1MgdGV4dDEuZ2V0QXR0cmlidXRl
KCd4JykgaXMgIjEgMyA0IDIiCiBQQVNTIHRleHQxLnguYmFzZVZhbC5pbnNlcnRJdGVtQmVmb3Jl
KHRleHQxLnguYmFzZVZhbC5nZXRJdGVtKDEpLCAwKSBpcyB0ZXh0MS54LmJhc2VWYWwuZ2V0SXRl
bSgwKQorUEFTUyB0ZXh0MS54LmJhc2VWYWwucmVtb3ZlSXRlbSgyKS50b1N0cmluZygpIGlzICJb
b2JqZWN0IFNWR0xlbmd0aF0iCiBQQVNTIHRleHQxLmdldEF0dHJpYnV0ZSgneCcpIGlzICIzIDEg
NCAyIgogCiBTZXQgeD0nMSAyIDMgNCcgZm9yIHRleHQxCkBAIC0xMTEsNyArMTE4LDggQEAgVGVz
dCBlZGdlIGNhc2VzIGZvciByZXBsYWNlSXRlbSgpCiBQQVNTIHRleHQxLnguYmFzZVZhbC5yZXBs
YWNlSXRlbSh0ZXh0MS54LmJhc2VWYWwuZ2V0SXRlbSgzKSwgMykgaXMgdGV4dDEueC5iYXNlVmFs
LmdldEl0ZW0oMykKIFBBU1MgdGV4dDEueC5iYXNlVmFsLm51bWJlck9mSXRlbXMgaXMgNAogUEFT
UyB0ZXh0MS5nZXRBdHRyaWJ1dGUoJ3gnKSBpcyAiMSAyIDMgNCIKLVBBU1MgdGV4dDEueC5iYXNl
VmFsLnJlcGxhY2VJdGVtKHRleHQxLnguYmFzZVZhbC5nZXRJdGVtKDEpLCAzKSBpcyB0ZXh0MS54
LmJhc2VWYWwuZ2V0SXRlbSgyKQorUEFTUyB0ZXh0MS54LmJhc2VWYWwucmVwbGFjZUl0ZW0odGV4
dDEueC5iYXNlVmFsLmdldEl0ZW0oMSksIDMpIGlzIHRleHQxLnguYmFzZVZhbC5nZXRJdGVtKDMp
CitQQVNTIHRleHQxLnguYmFzZVZhbC5yZW1vdmVJdGVtKDEpLnRvU3RyaW5nKCkgaXMgIltvYmpl
Y3QgU1ZHTGVuZ3RoXSIKIFBBU1MgdGV4dDEueC5iYXNlVmFsLm51bWJlck9mSXRlbXMgaXMgMwog
UEFTUyB0ZXh0MS5nZXRBdHRyaWJ1dGUoJ3gnKSBpcyAiMSAzIDIiCiBQQVNTIHRleHQxLnguYmFz
ZVZhbC5yZXBsYWNlSXRlbSh0ZXh0MS54LmJhc2VWYWwuZ2V0SXRlbSgzKSwgNCkgdGhyZXcgZXhj
ZXB0aW9uIEluZGV4U2l6ZUVycm9yOiBUaGUgaW5kZXggaXMgbm90IGluIHRoZSBhbGxvd2VkIHJh
bmdlLi4KQEAgLTEyMCwxMyArMTI4LDE2IEBAIFNldCB4PScxIDIgMyA0JyBmb3IgdGV4dDEKIFBB
U1MgdGV4dDEuc2V0QXR0cmlidXRlKCd4JywgJzEgMiAzIDQnKSBpcyB1bmRlZmluZWQuCiAKIFRl
c3Qgb3ZlcmxhcHBpbmcgZWRnZSBjYXNlcyBmb3IgcmVwbGFjZUl0ZW0oKQotUEFTUyB0ZXh0MS54
LmJhc2VWYWwucmVwbGFjZUl0ZW0odGV4dDEueC5iYXNlVmFsLmdldEl0ZW0oMCksIDMpIGlzIHRl
eHQxLnguYmFzZVZhbC5nZXRJdGVtKDIpCitQQVNTIHRleHQxLnguYmFzZVZhbC5yZXBsYWNlSXRl
bSh0ZXh0MS54LmJhc2VWYWwuZ2V0SXRlbSgwKSwgMykgaXMgdGV4dDEueC5iYXNlVmFsLmdldEl0
ZW0oMykKK1BBU1MgdGV4dDEueC5iYXNlVmFsLnJlbW92ZUl0ZW0oMCkudG9TdHJpbmcoKSBpcyAi
W29iamVjdCBTVkdMZW5ndGhdIgogUEFTUyB0ZXh0MS54LmJhc2VWYWwubnVtYmVyT2ZJdGVtcyBp
cyAzCiBQQVNTIHRleHQxLnguYmFzZVZhbC5nZXRJdGVtKDIpLnZhbHVlIGlzIDIKLVBBU1MgdGV4
dDEueC5iYXNlVmFsLnJlcGxhY2VJdGVtKHRleHQxLnguYmFzZVZhbC5nZXRJdGVtKDApLCAyKSBp
cyB0ZXh0MS54LmJhc2VWYWwuZ2V0SXRlbSgxKQorUEFTUyB0ZXh0MS54LmJhc2VWYWwucmVwbGFj
ZUl0ZW0odGV4dDEueC5iYXNlVmFsLmdldEl0ZW0oMCksIDIpIGlzIHRleHQxLnguYmFzZVZhbC5n
ZXRJdGVtKDIpCitQQVNTIHRleHQxLnguYmFzZVZhbC5yZW1vdmVJdGVtKDApLnRvU3RyaW5nKCkg
aXMgIltvYmplY3QgU1ZHTGVuZ3RoXSIKIFBBU1MgdGV4dDEueC5iYXNlVmFsLm51bWJlck9mSXRl
bXMgaXMgMgogUEFTUyB0ZXh0MS54LmJhc2VWYWwuZ2V0SXRlbSgxKS52YWx1ZSBpcyA0Ci1QQVNT
IHRleHQxLnguYmFzZVZhbC5yZXBsYWNlSXRlbSh0ZXh0MS54LmJhc2VWYWwuZ2V0SXRlbSgwKSwg
MSkgaXMgdGV4dDEueC5iYXNlVmFsLmdldEl0ZW0oMCkKK1BBU1MgdGV4dDEueC5iYXNlVmFsLnJl
cGxhY2VJdGVtKHRleHQxLnguYmFzZVZhbC5nZXRJdGVtKDApLCAxKSBpcyB0ZXh0MS54LmJhc2VW
YWwuZ2V0SXRlbSgxKQorUEFTUyB0ZXh0MS54LmJhc2VWYWwucmVtb3ZlSXRlbSgxKS50b1N0cmlu
ZygpIGlzICJbb2JqZWN0IFNWR0xlbmd0aF0iCiBQQVNTIHRleHQxLnguYmFzZVZhbC5udW1iZXJP
Zkl0ZW1zIGlzIDEKIFBBU1MgdGV4dDEueC5iYXNlVmFsLmdldEl0ZW0oMCkudmFsdWUgaXMgNgog
UEFTUyB0ZXh0MS54LmJhc2VWYWwucmVwbGFjZUl0ZW0odGV4dDEueC5iYXNlVmFsLmdldEl0ZW0o
MCksIDApIGlzIHRleHQxLnguYmFzZVZhbC5nZXRJdGVtKDApCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9zdmcvZG9tL1NWR0xlbmd0aExpc3QtYmFzaWNzLnhodG1sIGIvTGF5b3V0VGVzdHMvc3Zn
L2RvbS9TVkdMZW5ndGhMaXN0LWJhc2ljcy54aHRtbAppbmRleCA0MTVlZDkwZTg2YzFjMjk1MDBm
ZjRiMmY2Yjg4YWJhOThjZDdiYzc5Li5hNzgzMTAxYWIzMzc5MjI0ZjEwYzU5MTUwMDMxMjBhYTYx
ZGJkYzdkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdmcvZG9tL1NWR0xlbmd0aExpc3QtYmFz
aWNzLnhodG1sCisrKyBiL0xheW91dFRlc3RzL3N2Zy9kb20vU1ZHTGVuZ3RoTGlzdC1iYXNpY3Mu
eGh0bWwKQEAgLTUwLDYgKzUwLDcgQEAKICAgICBzaG91bGRUaHJvdygidGV4dDEueC5iYXNlVmFs
Lmluc2VydEl0ZW1CZWZvcmUobnVsbCkiKTsKIAogICAgIHNob3VsZEJlKCJ0ZXh0MS54LmJhc2VW
YWwuaW5zZXJ0SXRlbUJlZm9yZSh0ZXh0MS54LmJhc2VWYWwuZ2V0SXRlbSgxKSwgJ2FTdHJpbmcn
KSIsICJ0ZXh0MS54LmJhc2VWYWwuZ2V0SXRlbSgwKSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0
cmluZygidGV4dDEueC5iYXNlVmFsLnJlbW92ZUl0ZW0oMikudG9TdHJpbmcoKSIsICJbb2JqZWN0
IFNWR0xlbmd0aF0iKTsKICAgICBzaG91bGRCZSgidGV4dDEueC5iYXNlVmFsLm51bWJlck9mSXRl
bXMiLCAiMyIpOwogICAgIHNob3VsZEJlKCJ0ZXh0MS54LmJhc2VWYWwuZ2V0SXRlbSgwKS52YWx1
ZSIsICIxMDAwIik7CiAgICAgc2hvdWxkQmUoInRleHQxLnguYmFzZVZhbC5nZXRJdGVtKDEpLnZh
bHVlIiwgIjUwMCIpOwpAQCAtNTcsNiArNTgsNyBAQAogICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
ZygidGV4dDEuZ2V0QXR0cmlidXRlKCd4JykiLCAiMTAwMCA1MDAgMTUwMCIpOwogCiAgICAgc2hv
dWxkQmUoInRleHQxLnguYmFzZVZhbC5pbnNlcnRJdGVtQmVmb3JlKHRleHQxLnguYmFzZVZhbC5n
ZXRJdGVtKDEpLCB0ZXh0MSkiLCAidGV4dDEueC5iYXNlVmFsLmdldEl0ZW0oMCkiKTsKKyAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoInRleHQxLnguYmFzZVZhbC5yZW1vdmVJdGVtKDIpLnRvU3Ry
aW5nKCkiLCAiW29iamVjdCBTVkdMZW5ndGhdIik7CiAgICAgc2hvdWxkQmUoInRleHQxLnguYmFz
ZVZhbC5udW1iZXJPZkl0ZW1zIiwgIjMiKTsKICAgICBzaG91bGRCZSgidGV4dDEueC5iYXNlVmFs
LmdldEl0ZW0oMCkudmFsdWUiLCAiNTAwIik7CiAgICAgc2hvdWxkQmUoInRleHQxLnguYmFzZVZh
bC5nZXRJdGVtKDEpLnZhbHVlIiwgIjEwMDAiKTsKQEAgLTY0LDYgKzY2LDcgQEAKICAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoInRleHQxLmdldEF0dHJpYnV0ZSgneCcpIiwgIjUwMCAxMDAwIDE1
MDAiKTsKIAogICAgIHNob3VsZEJlKCJ0ZXh0MS54LmJhc2VWYWwuaW5zZXJ0SXRlbUJlZm9yZSh0
ZXh0MS54LmJhc2VWYWwuZ2V0SXRlbSgxKSwgbnVsbCkiLCAidGV4dDEueC5iYXNlVmFsLmdldEl0
ZW0oMCkiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInRleHQxLnguYmFzZVZhbC5yZW1v
dmVJdGVtKDIpLnRvU3RyaW5nKCkiLCAiW29iamVjdCBTVkdMZW5ndGhdIik7CiAgICAgc2hvdWxk
QmUoInRleHQxLnguYmFzZVZhbC5udW1iZXJPZkl0ZW1zIiwgIjMiKTsKICAgICBzaG91bGRCZSgi
dGV4dDEueC5iYXNlVmFsLmdldEl0ZW0oMCkudmFsdWUiLCAiMTAwMCIpOwogICAgIHNob3VsZEJl
KCJ0ZXh0MS54LmJhc2VWYWwuZ2V0SXRlbSgxKS52YWx1ZSIsICI1MDAiKTsKQEAgLTcxLDYgKzc0
LDcgQEAKICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInRleHQxLmdldEF0dHJpYnV0ZSgneCcp
IiwgIjEwMDAgNTAwIDE1MDAiKTsKIAogICAgIHNob3VsZEJlKCJ0ZXh0MS54LmJhc2VWYWwuaW5z
ZXJ0SXRlbUJlZm9yZSh0ZXh0MS54LmJhc2VWYWwuZ2V0SXRlbSgxKSwgMCkiLCAidGV4dDEueC5i
YXNlVmFsLmdldEl0ZW0oMCkiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInRleHQxLngu
YmFzZVZhbC5yZW1vdmVJdGVtKDIpLnRvU3RyaW5nKCkiLCAiW29iamVjdCBTVkdMZW5ndGhdIik7
CiAgICAgc2hvdWxkQmUoInRleHQxLnguYmFzZVZhbC5udW1iZXJPZkl0ZW1zIiwgIjMiKTsKICAg
ICBzaG91bGRCZSgidGV4dDEueC5iYXNlVmFsLmdldEl0ZW0oMCkudmFsdWUiLCAiNTAwIik7CiAg
ICAgc2hvdWxkQmUoInRleHQxLnguYmFzZVZhbC5nZXRJdGVtKDEpLnZhbHVlIiwgIjEwMDAiKTsK
QEAgLTg5LDEwICs5MywxMyBAQAogICAgIGRlYnVnKCIiKTsKICAgICBkZWJ1ZygiVGVzdCBlZGdl
IGNhc2VzIGZvciBpbnNlcnRJdGVtQmVmb3JlKCkiKTsKICAgICBzaG91bGRCZSgidGV4dDEueC5i
YXNlVmFsLmluc2VydEl0ZW1CZWZvcmUodGV4dDEueC5iYXNlVmFsLmdldEl0ZW0oMyksIDMpIiwg
InRleHQxLnguYmFzZVZhbC5nZXRJdGVtKDMpIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJ0ZXh0MS54LmJhc2VWYWwucmVtb3ZlSXRlbSg0KS50b1N0cmluZygpIiwgIltvYmplY3QgU1ZH
TGVuZ3RoXSIpOwogICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygidGV4dDEuZ2V0QXR0cmlidXRl
KCd4JykiLCAiMSAyIDMgNCIpOwotICAgIHNob3VsZEJlKCJ0ZXh0MS54LmJhc2VWYWwuaW5zZXJ0
SXRlbUJlZm9yZSh0ZXh0MS54LmJhc2VWYWwuZ2V0SXRlbSgxKSwgNSkiLCAidGV4dDEueC5iYXNl
VmFsLmdldEl0ZW0oMykiKTsKKyAgICBzaG91bGRCZSgidGV4dDEueC5iYXNlVmFsLmluc2VydEl0
ZW1CZWZvcmUodGV4dDEueC5iYXNlVmFsLmdldEl0ZW0oMSksIDUpIiwgInRleHQxLnguYmFzZVZh
bC5nZXRJdGVtKDQpIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ0ZXh0MS54LmJhc2VW
YWwucmVtb3ZlSXRlbSgxKS50b1N0cmluZygpIiwgIltvYmplY3QgU1ZHTGVuZ3RoXSIpOwogICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygidGV4dDEuZ2V0QXR0cmlidXRlKCd4JykiLCAiMSAzIDQg
MiIpOwogICAgIHNob3VsZEJlKCJ0ZXh0MS54LmJhc2VWYWwuaW5zZXJ0SXRlbUJlZm9yZSh0ZXh0
MS54LmJhc2VWYWwuZ2V0SXRlbSgxKSwgMCkiLCAidGV4dDEueC5iYXNlVmFsLmdldEl0ZW0oMCki
KTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInRleHQxLnguYmFzZVZhbC5yZW1vdmVJdGVt
KDIpLnRvU3RyaW5nKCkiLCAiW29iamVjdCBTVkdMZW5ndGhdIik7CiAgICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJ0ZXh0MS5nZXRBdHRyaWJ1dGUoJ3gnKSIsICIzIDEgNCAyIik7CiAKICAgICBk
ZWJ1ZygiIik7CkBAIC0xNDUsNyArMTUyLDggQEAKICAgICBzaG91bGRCZSgidGV4dDEueC5iYXNl
VmFsLnJlcGxhY2VJdGVtKHRleHQxLnguYmFzZVZhbC5nZXRJdGVtKDMpLCAzKSIsICJ0ZXh0MS54
LmJhc2VWYWwuZ2V0SXRlbSgzKSIpOwogICAgIHNob3VsZEJlKCJ0ZXh0MS54LmJhc2VWYWwubnVt
YmVyT2ZJdGVtcyIsICI0Iik7CiAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ0ZXh0MS5nZXRB
dHRyaWJ1dGUoJ3gnKSIsICIxIDIgMyA0Iik7Ci0gICAgc2hvdWxkQmUoInRleHQxLnguYmFzZVZh
bC5yZXBsYWNlSXRlbSh0ZXh0MS54LmJhc2VWYWwuZ2V0SXRlbSgxKSwgMykiLCAidGV4dDEueC5i
YXNlVmFsLmdldEl0ZW0oMikiKTsKKyAgICBzaG91bGRCZSgidGV4dDEueC5iYXNlVmFsLnJlcGxh
Y2VJdGVtKHRleHQxLnguYmFzZVZhbC5nZXRJdGVtKDEpLCAzKSIsICJ0ZXh0MS54LmJhc2VWYWwu
Z2V0SXRlbSgzKSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygidGV4dDEueC5iYXNlVmFs
LnJlbW92ZUl0ZW0oMSkudG9TdHJpbmcoKSIsICJbb2JqZWN0IFNWR0xlbmd0aF0iKTsKICAgICBz
aG91bGRCZSgidGV4dDEueC5iYXNlVmFsLm51bWJlck9mSXRlbXMiLCAiMyIpOwogICAgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygidGV4dDEuZ2V0QXR0cmlidXRlKCd4JykiLCAiMSAzIDIiKTsKICAg
ICBzaG91bGRUaHJvdygidGV4dDEueC5iYXNlVmFsLnJlcGxhY2VJdGVtKHRleHQxLnguYmFzZVZh
bC5nZXRJdGVtKDMpLCA0KSIpOwpAQCAtMTU3LDE3ICsxNjUsMjAgQEAKICAgICBkZWJ1ZygiIik7
CiAgICAgZGVidWcoIlRlc3Qgb3ZlcmxhcHBpbmcgZWRnZSBjYXNlcyBmb3IgcmVwbGFjZUl0ZW0o
KSIpOwogICAgIHZhciBpdGVtID0gdGV4dDEueC5iYXNlVmFsLmdldEl0ZW0oMyk7Ci0gICAgc2hv
dWxkQmUoInRleHQxLnguYmFzZVZhbC5yZXBsYWNlSXRlbSh0ZXh0MS54LmJhc2VWYWwuZ2V0SXRl
bSgwKSwgMykiLCAidGV4dDEueC5iYXNlVmFsLmdldEl0ZW0oMikiKTsKKyAgICBzaG91bGRCZSgi
dGV4dDEueC5iYXNlVmFsLnJlcGxhY2VJdGVtKHRleHQxLnguYmFzZVZhbC5nZXRJdGVtKDApLCAz
KSIsICJ0ZXh0MS54LmJhc2VWYWwuZ2V0SXRlbSgzKSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0
cmluZygidGV4dDEueC5iYXNlVmFsLnJlbW92ZUl0ZW0oMCkudG9TdHJpbmcoKSIsICJbb2JqZWN0
IFNWR0xlbmd0aF0iKTsKICAgICBzaG91bGRCZSgidGV4dDEueC5iYXNlVmFsLm51bWJlck9mSXRl
bXMiLCAiMyIpOyAgICAKICAgICBpdGVtID0gdGV4dDEueC5iYXNlVmFsLmdldEl0ZW0oMik7CiAg
ICAgaXRlbS5uZXdWYWx1ZVNwZWNpZmllZFVuaXRzKGl0ZW0udW5pdFR5cGUsIGl0ZW0udmFsdWUg
KiAyKTsKICAgICBzaG91bGRCZSgidGV4dDEueC5iYXNlVmFsLmdldEl0ZW0oMikudmFsdWUiLCAi
MiIpOwotICAgIHNob3VsZEJlKCJ0ZXh0MS54LmJhc2VWYWwucmVwbGFjZUl0ZW0odGV4dDEueC5i
YXNlVmFsLmdldEl0ZW0oMCksIDIpIiwgInRleHQxLnguYmFzZVZhbC5nZXRJdGVtKDEpIik7Cisg
ICAgc2hvdWxkQmUoInRleHQxLnguYmFzZVZhbC5yZXBsYWNlSXRlbSh0ZXh0MS54LmJhc2VWYWwu
Z2V0SXRlbSgwKSwgMikiLCAidGV4dDEueC5iYXNlVmFsLmdldEl0ZW0oMikiKTsKKyAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoInRleHQxLnguYmFzZVZhbC5yZW1vdmVJdGVtKDApLnRvU3RyaW5n
KCkiLCAiW29iamVjdCBTVkdMZW5ndGhdIik7CiAgICAgc2hvdWxkQmUoInRleHQxLnguYmFzZVZh
bC5udW1iZXJPZkl0ZW1zIiwgIjIiKTsKICAgICBpdGVtID0gdGV4dDEueC5iYXNlVmFsLmdldEl0
ZW0oMSk7CiAgICAgaXRlbS5uZXdWYWx1ZVNwZWNpZmllZFVuaXRzKGl0ZW0udW5pdFR5cGUsIGl0
ZW0udmFsdWUgKiAyKTsKICAgICBzaG91bGRCZSgidGV4dDEueC5iYXNlVmFsLmdldEl0ZW0oMSku
dmFsdWUiLCAiNCIpOwotICAgIHNob3VsZEJlKCJ0ZXh0MS54LmJhc2VWYWwucmVwbGFjZUl0ZW0o
dGV4dDEueC5iYXNlVmFsLmdldEl0ZW0oMCksIDEpIiwgInRleHQxLnguYmFzZVZhbC5nZXRJdGVt
KDApIik7CisgICAgc2hvdWxkQmUoInRleHQxLnguYmFzZVZhbC5yZXBsYWNlSXRlbSh0ZXh0MS54
LmJhc2VWYWwuZ2V0SXRlbSgwKSwgMSkiLCAidGV4dDEueC5iYXNlVmFsLmdldEl0ZW0oMSkiKTsK
KyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInRleHQxLnguYmFzZVZhbC5yZW1vdmVJdGVtKDEp
LnRvU3RyaW5nKCkiLCAiW29iamVjdCBTVkdMZW5ndGhdIik7CiAgICAgc2hvdWxkQmUoInRleHQx
LnguYmFzZVZhbC5udW1iZXJPZkl0ZW1zIiwgIjEiKTsKICAgICBpdGVtID0gdGV4dDEueC5iYXNl
VmFsLmdldEl0ZW0oMCk7CiAgICAgaXRlbS5uZXdWYWx1ZVNwZWNpZmllZFVuaXRzKGl0ZW0udW5p
dFR5cGUsIGl0ZW0udmFsdWUgKiAyKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N2Zy9kb20v
U1ZHTGVuZ3RoTGlzdC1pbml0aWFsaXplLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N2Zy9k
b20vU1ZHTGVuZ3RoTGlzdC1pbml0aWFsaXplLWV4cGVjdGVkLnR4dAppbmRleCA4YzZmZTJkMmY4
MTI0NGQxYWVlODlhZTg4Mzc4Mjk1NjNmNzdkODNiLi45ZDkwMDZlNzFkZjY1NjE0Mjk4MjI4MTMz
NzVjY2RlNzA3OGMyMGVhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdmcvZG9tL1NWR0xlbmd0
aExpc3QtaW5pdGlhbGl6ZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvc3ZnL2RvbS9T
VkdMZW5ndGhMaXN0LWluaXRpYWxpemUtZXhwZWN0ZWQudHh0CkBAIC00NSw3ICs0NSw4IEBAIFBB
U1MgdGV4dDIueC5iYXNlVmFsLmdldEl0ZW0oMSkudmFsdWUgaXMgNTAwCiBQQVNTIHRleHQyLngu
YmFzZVZhbC5nZXRJdGVtKDEpLnZhbHVlIGlzIDUwCiAKIE92ZXJyaWRlIHRoZSB0aGlyZCB0ZXh0
IGVsZW1lbnRzIHggbGlzdCB3aXRoIHRoZSBpdGVtIHg9NTAgZnJvbSB0aGUgc2Vjb25kIHRleHQg
ZWxlbWVudCwgd2hlcmUgaXQgc2hvdWxkIGJlIHJlbW92ZWQgYWZ0ZXJ3YXJkcwotUEFTUyB0ZXh0
My54LmJhc2VWYWwuaW5pdGlhbGl6ZShpdGVtSW5Bbm90aGVyTGlzdCkgaXMgaXRlbUluQW5vdGhl
ckxpc3QKK1BBU1MgdGV4dDMueC5iYXNlVmFsLmluaXRpYWxpemUoaXRlbUluQW5vdGhlckxpc3Qp
IGlzIHRleHQzLnguYmFzZVZhbC5nZXRJdGVtKDApCitQQVNTIHRleHQyLnguYmFzZVZhbC5yZW1v
dmVJdGVtKDEpLnRvU3RyaW5nKCkgaXMgIltvYmplY3QgU1ZHTGVuZ3RoXSIKIFBBU1MgdGV4dDMu
eC5iYXNlVmFsLmdldEl0ZW0oMCkudmFsdWUgaXMgNTAKIFBBU1MgdGV4dDIueC5iYXNlVmFsLmdl
dEl0ZW0oMCkudmFsdWUgaXMgNTAKIFBBU1MgdGV4dDIueC5iYXNlVmFsLmdldEl0ZW0oMSkgdGhy
ZXcgZXhjZXB0aW9uIEluZGV4U2l6ZUVycm9yOiBUaGUgaW5kZXggaXMgbm90IGluIHRoZSBhbGxv
d2VkIHJhbmdlLi4KQEAgLTU5LDcgKzYwLDggQEAgUEFTUyBpdGVtSW5Bbm90aGVyTGlzdC52YWx1
ZSBpcyA1MAogUEFTUyB0ZXh0My54LmJhc2VWYWwuZ2V0SXRlbSgwKS52YWx1ZSBpcyA1MAogCiBN
b3ZlIGl0ZW0gZnJvbSB0ZXh0MyB0byB0ZXh0NAotUEFTUyB0ZXh0NC54LmJhc2VWYWwuaW5pdGlh
bGl6ZSh0ZXh0My54LmJhc2VWYWwuZ2V0SXRlbSgwKSkgaXMgaXRlbUluQW5vdGhlckxpc3QKK1BB
U1MgdGV4dDQueC5iYXNlVmFsLmluaXRpYWxpemUodGV4dDMueC5iYXNlVmFsLmdldEl0ZW0oMCkp
IGlzIHRleHQ0LnguYmFzZVZhbC5nZXRJdGVtKDApCitQQVNTIHRleHQzLnguYmFzZVZhbC5yZW1v
dmVJdGVtKDApLnRvU3RyaW5nKCkgaXMgIltvYmplY3QgU1ZHTGVuZ3RoXSIKIFBBU1MgdGV4dDQu
eC5iYXNlVmFsLmdldEl0ZW0oMCkudmFsdWUgaXMgNTAKIFBBU1MgdGV4dDMueC5iYXNlVmFsLmdl
dEl0ZW0oMCkgdGhyZXcgZXhjZXB0aW9uIEluZGV4U2l6ZUVycm9yOiBUaGUgaW5kZXggaXMgbm90
IGluIHRoZSBhbGxvd2VkIHJhbmdlLi4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3ZnL2Rv
bS9TVkdMZW5ndGhMaXN0LWluaXRpYWxpemUueGh0bWwgYi9MYXlvdXRUZXN0cy9zdmcvZG9tL1NW
R0xlbmd0aExpc3QtaW5pdGlhbGl6ZS54aHRtbAppbmRleCA2M2ViZjNmYTY1MmZhZDQ1ZTRjMjgz
MmYzNjJhMDQyZDE0Y2QyMjFiLi5lZDI3ZDA0NDVlOGI5YjMwYTBkOWMyYzgxZWUzM2YwYmVlMDM4
MjgzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdmcvZG9tL1NWR0xlbmd0aExpc3QtaW5pdGlh
bGl6ZS54aHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdmcvZG9tL1NWR0xlbmd0aExpc3QtaW5pdGlh
bGl6ZS54aHRtbApAQCAtNzEsMTEgKzcxLDEyIEBACiAgICAgaXRlbUluQW5vdGhlckxpc3QudmFs
dWUgPSA1MDsKICAgICBzaG91bGRCZSgidGV4dDIueC5iYXNlVmFsLmdldEl0ZW0oMSkudmFsdWUi
LCAiNTAiKTsKIAotICAgIC8vIFNwZWM6IElmIHRoZSBpbnNlcnRlZCBpdGVtIGlzIGFscmVhZHkg
aW4gYSBsaXN0LCBpdCBpcyByZW1vdmVkIGZyb20gaXRzIHByZXZpb3VzIGxpc3QgYmVmb3JlIGl0
IGlzIGluc2VydGVkIGludG8gdGhpcyBsaXN0LgotICAgIC8vICAgICAgIFRoZSBpbnNlcnRlZCBp
dGVtIGlzIHRoZSBpdGVtIGl0c2VsZiBhbmQgbm90IGEgY29weS4KKyAgICAvLyBTcGVjOiBJZiB0
aGUgaW5zZXJ0ZWQgaXRlbSBpcyBhbHJlYWR5IGluIGEgbGlzdCwgYSBjb3B5IG9mIHRoZSBpdGVt
IHdpbGwgYmUgaW5zZXJ0ZWQuCiAgICAgZGVidWcoIiIpOwogICAgIGRlYnVnKCJPdmVycmlkZSB0
aGUgdGhpcmQgdGV4dCBlbGVtZW50cyB4IGxpc3Qgd2l0aCB0aGUgaXRlbSB4PTUwIGZyb20gdGhl
IHNlY29uZCB0ZXh0IGVsZW1lbnQsIHdoZXJlIGl0IHNob3VsZCBiZSByZW1vdmVkIGFmdGVyd2Fy
ZHMiKTsKLSAgICBzaG91bGRCZSgidGV4dDMueC5iYXNlVmFsLmluaXRpYWxpemUoaXRlbUluQW5v
dGhlckxpc3QpIiwgIml0ZW1JbkFub3RoZXJMaXN0Iik7CisgICAgc2hvdWxkQmUoInRleHQzLngu
YmFzZVZhbC5pbml0aWFsaXplKGl0ZW1JbkFub3RoZXJMaXN0KSIsICJ0ZXh0My54LmJhc2VWYWwu
Z2V0SXRlbSgwKSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygidGV4dDIueC5iYXNlVmFs
LnJlbW92ZUl0ZW0oMSkudG9TdHJpbmcoKSIsICJbb2JqZWN0IFNWR0xlbmd0aF0iKTsKKyAgICBp
dGVtSW5Bbm90aGVyTGlzdCA9IHRleHQzLnguYmFzZVZhbC5nZXRJdGVtKDApOwogICAgIHNob3Vs
ZEJlKCJ0ZXh0My54LmJhc2VWYWwuZ2V0SXRlbSgwKS52YWx1ZSIsICI1MCIpOwogICAgIHNob3Vs
ZEJlKCJ0ZXh0Mi54LmJhc2VWYWwuZ2V0SXRlbSgwKS52YWx1ZSIsICI1MCIpOwogICAgIHNob3Vs
ZFRocm93KCJ0ZXh0Mi54LmJhc2VWYWwuZ2V0SXRlbSgxKSIpOwpAQCAtOTEsNyArOTIsOCBAQAog
CiAgICAgZGVidWcoIiIpOwogICAgIGRlYnVnKCJNb3ZlIGl0ZW0gZnJvbSB0ZXh0MyB0byB0ZXh0
NCIpOwotICAgIHNob3VsZEJlKCJ0ZXh0NC54LmJhc2VWYWwuaW5pdGlhbGl6ZSh0ZXh0My54LmJh
c2VWYWwuZ2V0SXRlbSgwKSkiLCAiaXRlbUluQW5vdGhlckxpc3QiKTsKKyAgICBzaG91bGRCZSgi
dGV4dDQueC5iYXNlVmFsLmluaXRpYWxpemUodGV4dDMueC5iYXNlVmFsLmdldEl0ZW0oMCkpIiwg
InRleHQ0LnguYmFzZVZhbC5nZXRJdGVtKDApIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJ0ZXh0My54LmJhc2VWYWwucmVtb3ZlSXRlbSgwKS50b1N0cmluZygpIiwgIltvYmplY3QgU1ZH
TGVuZ3RoXSIpOwogICAgIHNob3VsZEJlKCJ0ZXh0NC54LmJhc2VWYWwuZ2V0SXRlbSgwKS52YWx1
ZSIsICI1MCIpOwogICAgIHNob3VsZFRocm93KCJ0ZXh0My54LmJhc2VWYWwuZ2V0SXRlbSgwKSIp
OwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdmcvZG9tL1NWR0xlbmd0aExpc3QtaW5zZXJ0
SXRlbUJlZm9yZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdmcvZG9tL1NWR0xlbmd0aExp
c3QtaW5zZXJ0SXRlbUJlZm9yZS1leHBlY3RlZC50eHQKaW5kZXggMTkxZjM0NjRhMWQ0ODRkZmI2
NWU5MDMyYzgyNmM1YjhmNGIyZTg0OC4uYmE4MjViZjE3NjZhZGQ2MGNlNzk4ZmRiMzcxNzI5YjJj
NTBjNWVkNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3ZnL2RvbS9TVkdMZW5ndGhMaXN0LWlu
c2VydEl0ZW1CZWZvcmUtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N2Zy9kb20vU1ZH
TGVuZ3RoTGlzdC1pbnNlcnRJdGVtQmVmb3JlLWV4cGVjdGVkLnR4dApAQCAtNjIsNyArNjIsOCBA
QCBQQVNTIHRleHQxLnguYmFzZVZhbC5nZXRJdGVtKDUpLnZhbHVlIGlzIDUwCiBQQVNTIHRleHQx
LnguYmFzZVZhbC5nZXRJdGVtKDYpIHRocmV3IGV4Y2VwdGlvbiBJbmRleFNpemVFcnJvcjogVGhl
IGluZGV4IGlzIG5vdCBpbiB0aGUgYWxsb3dlZCByYW5nZS4uCiAKIEluc2VydCBpdGVtICduZXdM
ZW5ndGgzJyBhdCBwb3NpdGlvbj0xLCBiZXR3ZWVuICcxMDAnIGFuZCAnNTAwJywgcmVtb3ZlIGl0
IGZyb20gdGhlIG9sZCBwb3NpdGlvbj0yIGFmdGVyd2FyZHMuCi1QQVNTIHRleHQxLnguYmFzZVZh
bC5pbnNlcnRJdGVtQmVmb3JlKG5ld0xlbmd0aDMsIDEpIGlzIG5ld0xlbmd0aDMKK1BBU1MgdGV4
dDEueC5iYXNlVmFsLmluc2VydEl0ZW1CZWZvcmUobmV3TGVuZ3RoMywgMSkgaXMgdGV4dDEueC5i
YXNlVmFsLmdldEl0ZW0oMSkKK1BBU1MgdGV4dDEueC5iYXNlVmFsLnJlbW92ZUl0ZW0oMykudG9T
dHJpbmcoKSBpcyAiW29iamVjdCBTVkdMZW5ndGhdIgogUEFTUyB0ZXh0MS54LmJhc2VWYWwubnVt
YmVyT2ZJdGVtcyBpcyA2CiBQQVNTIHRleHQxLnguYmFzZVZhbC5nZXRJdGVtKDApLnZhbHVlIGlz
IDEwMAogUEFTUyB0ZXh0MS54LmJhc2VWYWwuZ2V0SXRlbSgxKS52YWx1ZSBpcyAxNTAKQEAgLTcz
LDcgKzc0LDggQEAgUEFTUyB0ZXh0MS54LmJhc2VWYWwuZ2V0SXRlbSg1KS52YWx1ZSBpcyA1MAog
UEFTUyB0ZXh0MS54LmJhc2VWYWwuZ2V0SXRlbSg2KSB0aHJldyBleGNlcHRpb24gSW5kZXhTaXpl
RXJyb3I6IFRoZSBpbmRleCBpcyBub3QgaW4gdGhlIGFsbG93ZWQgcmFuZ2UuLgogCiBJbnNlcnQg
aXRlbSAnbmV3TGVuZ3RoMycgYXQgcG9zaXRpb249MCwgYmVmb3JlICcxMDAnLCByZW1vdmUgaXQg
ZnJvbSB0aGUgb2xkIHBvc2l0aW9uPTUgYWZ0ZXJ3YXJkcy4KLVBBU1MgdGV4dDEueC5iYXNlVmFs
Lmluc2VydEl0ZW1CZWZvcmUobmV3TGVuZ3RoMSwgMCkgaXMgbmV3TGVuZ3RoMQorUEFTUyB0ZXh0
MS54LmJhc2VWYWwuaW5zZXJ0SXRlbUJlZm9yZShuZXdMZW5ndGgxLCAwKSBpcyB0ZXh0MS54LmJh
c2VWYWwuZ2V0SXRlbSgwKQorUEFTUyB0ZXh0MS54LmJhc2VWYWwucmVtb3ZlSXRlbSg2KS50b1N0
cmluZygpIGlzICJbb2JqZWN0IFNWR0xlbmd0aF0iCiBQQVNTIHRleHQxLnguYmFzZVZhbC5udW1i
ZXJPZkl0ZW1zIGlzIDYKIFBBU1MgdGV4dDEueC5iYXNlVmFsLmdldEl0ZW0oMCkudmFsdWUgaXMg
NTAKIFBBU1MgdGV4dDEueC5iYXNlVmFsLmdldEl0ZW0oMSkudmFsdWUgaXMgMTAwCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9zdmcvZG9tL1NWR0xlbmd0aExpc3QtaW5zZXJ0SXRlbUJlZm9yZS54
aHRtbCBiL0xheW91dFRlc3RzL3N2Zy9kb20vU1ZHTGVuZ3RoTGlzdC1pbnNlcnRJdGVtQmVmb3Jl
LnhodG1sCmluZGV4IGUxZGZlMTg4YTY4ZGUwZTg4M2YxMTcyZjNjNjU4NjNiMDQ4ZTBhMTkuLmFj
Njc4ZWE1OWQ4ZjNlZDEzOGYzNTJmYWFhZjg0ODNiMDBhNGU0M2MgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3N2Zy9kb20vU1ZHTGVuZ3RoTGlzdC1pbnNlcnRJdGVtQmVmb3JlLnhodG1sCisrKyBi
L0xheW91dFRlc3RzL3N2Zy9kb20vU1ZHTGVuZ3RoTGlzdC1pbnNlcnRJdGVtQmVmb3JlLnhodG1s
CkBAIC05NiwxMSArOTYsMTEgQEAKICAgICBzaG91bGRCZSgidGV4dDEueC5iYXNlVmFsLmdldEl0
ZW0oNSkudmFsdWUiLCAiNTAiKTsKICAgICBzaG91bGRUaHJvdygidGV4dDEueC5iYXNlVmFsLmdl
dEl0ZW0oNikiKTsKIAotICAgIC8vIFNwZWM6IElmIG5ld0l0ZW0gaXMgYWxyZWFkeSBpbiBhIGxp
c3QsIGl0IGlzIHJlbW92ZWQgZnJvbSBpdHMgcHJldmlvdXMgbGlzdCBiZWZvcmUgaXQgaXMgaW5z
ZXJ0ZWQgaW50byB0aGlzIGxpc3QuCi0gICAgLy8gU3BlYzogSWYgdGhlIGl0ZW0gaXMgYWxyZWFk
eSBpbiB0aGlzIGxpc3QsIG5vdGUgdGhhdCB0aGUgaW5kZXggb2YgdGhlIGl0ZW0gdG8gaW5zZXJ0
IGJlZm9yZSBpcyBiZWZvcmUgdGhlIHJlbW92YWwgb2YgdGhlIGl0ZW0uIAorICAgIC8vIFNwZWM6
IElmIG5ld0l0ZW0gaXMgYWxyZWFkeSBpbiBhIGxpc3QsIGEgY2xvbmUgb2YgbmV3SXRlbSBpbnNl
cnRlZCBpbnRvIHRoaXMgbGlzdC4KICAgICBkZWJ1ZygiIik7CiAgICAgZGVidWcoIkluc2VydCBp
dGVtICduZXdMZW5ndGgzJyBhdCBwb3NpdGlvbj0xLCBiZXR3ZWVuICcxMDAnIGFuZCAnNTAwJywg
cmVtb3ZlIGl0IGZyb20gdGhlIG9sZCBwb3NpdGlvbj0yIGFmdGVyd2FyZHMuIik7Ci0gICAgc2hv
dWxkQmUoInRleHQxLnguYmFzZVZhbC5pbnNlcnRJdGVtQmVmb3JlKG5ld0xlbmd0aDMsIDEpIiwg
Im5ld0xlbmd0aDMiKTsKKyAgICBzaG91bGRCZSgidGV4dDEueC5iYXNlVmFsLmluc2VydEl0ZW1C
ZWZvcmUobmV3TGVuZ3RoMywgMSkiLCAidGV4dDEueC5iYXNlVmFsLmdldEl0ZW0oMSkiKTsKKyAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInRleHQxLnguYmFzZVZhbC5yZW1vdmVJdGVtKDMpLnRv
U3RyaW5nKCkiLCAiW29iamVjdCBTVkdMZW5ndGhdIik7CiAgICAgc2hvdWxkQmUoInRleHQxLngu
YmFzZVZhbC5udW1iZXJPZkl0ZW1zIiwgIjYiKTsKICAgICBzaG91bGRCZSgidGV4dDEueC5iYXNl
VmFsLmdldEl0ZW0oMCkudmFsdWUiLCAiMTAwIik7CiAgICAgc2hvdWxkQmUoInRleHQxLnguYmFz
ZVZhbC5nZXRJdGVtKDEpLnZhbHVlIiwgIjE1MCIpOwpAQCAtMTEyLDcgKzExMiw4IEBACiAKICAg
ICBkZWJ1ZygiIik7CiAgICAgZGVidWcoIkluc2VydCBpdGVtICduZXdMZW5ndGgzJyBhdCBwb3Np
dGlvbj0wLCBiZWZvcmUgJzEwMCcsIHJlbW92ZSBpdCBmcm9tIHRoZSBvbGQgcG9zaXRpb249NSBh
ZnRlcndhcmRzLiIpOwotICAgIHNob3VsZEJlKCJ0ZXh0MS54LmJhc2VWYWwuaW5zZXJ0SXRlbUJl
Zm9yZShuZXdMZW5ndGgxLCAwKSIsICJuZXdMZW5ndGgxIik7CisgICAgc2hvdWxkQmUoInRleHQx
LnguYmFzZVZhbC5pbnNlcnRJdGVtQmVmb3JlKG5ld0xlbmd0aDEsIDApIiwgInRleHQxLnguYmFz
ZVZhbC5nZXRJdGVtKDApIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ0ZXh0MS54LmJh
c2VWYWwucmVtb3ZlSXRlbSg2KS50b1N0cmluZygpIiwgIltvYmplY3QgU1ZHTGVuZ3RoXSIpOwog
ICAgIHNob3VsZEJlKCJ0ZXh0MS54LmJhc2VWYWwubnVtYmVyT2ZJdGVtcyIsICI2Iik7CiAgICAg
c2hvdWxkQmUoInRleHQxLnguYmFzZVZhbC5nZXRJdGVtKDApLnZhbHVlIiwgIjUwIik7CiAgICAg
c2hvdWxkQmUoInRleHQxLnguYmFzZVZhbC5nZXRJdGVtKDEpLnZhbHVlIiwgIjEwMCIpOwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3ZnL2RvbS9TVkdMZW5ndGhMaXN0LXJlbW92ZUl0ZW0tZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3ZnL2RvbS9TVkdMZW5ndGhMaXN0LXJlbW92ZUl0ZW0t
ZXhwZWN0ZWQudHh0CmluZGV4IGQ0NWE5OTQwYTM0Mzk3MDZiMGRhNWM4YmYxZWMxYjI4MTY3ZTZk
YWIuLmU2YTY5ZDlhMzgyNTAwYjhmZWI5NzA0NjNmNzEzYzgzMmY0MDAxYmUgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3N2Zy9kb20vU1ZHTGVuZ3RoTGlzdC1yZW1vdmVJdGVtLWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9zdmcvZG9tL1NWR0xlbmd0aExpc3QtcmVtb3ZlSXRlbS1leHBl
Y3RlZC50eHQKQEAgLTI3LDcgKzI3LDggQEAgUEFTUyB0ZXh0Mi54LmJhc2VWYWwuZ2V0SXRlbSgy
KS52YWx1ZSBpcyAxMDAwCiBQQVNTIHRleHQyLnguYmFzZVZhbC5nZXRJdGVtKDMpIHRocmV3IGV4
Y2VwdGlvbiBJbmRleFNpemVFcnJvcjogVGhlIGluZGV4IGlzIG5vdCBpbiB0aGUgYWxsb3dlZCBy
YW5nZS4uCiAKIEFwcGVuZCBmb3VydGggaXRlbSB4PTkwMCB0byB0aGUgdGV4dDEgeCBsaXN0Ci1Q
QVNTIHRleHQxLnguYmFzZVZhbC5hcHBlbmRJdGVtKHRleHQxLnguYmFzZVZhbC5nZXRJdGVtKDMp
KSBpcyB0ZXh0MS54LmJhc2VWYWwuZ2V0SXRlbSg0KQorUEFTUyB0ZXh0MS54LmJhc2VWYWwuYXBw
ZW5kSXRlbSh0ZXh0MS54LmJhc2VWYWwuZ2V0SXRlbSgzKSkgaXMgdGV4dDEueC5iYXNlVmFsLmdl
dEl0ZW0oNSkKK1BBU1MgdGV4dDEueC5iYXNlVmFsLnJlbW92ZUl0ZW0oMykudG9TdHJpbmcoKSBp
cyAiW29iamVjdCBTVkdMZW5ndGhdIgogUEFTUyB0ZXh0MS54LmJhc2VWYWwubnVtYmVyT2ZJdGVt
cyBpcyA1CiBQQVNTIHRleHQxLnguYmFzZVZhbC5nZXRJdGVtKDApLnZhbHVlIGlzIDUwMAogUEFT
UyB0ZXh0MS54LmJhc2VWYWwuZ2V0SXRlbSgxKS52YWx1ZSBpcyA1MApAQCAtMzcsNyArMzgsOCBA
QCBQQVNTIHRleHQxLnguYmFzZVZhbC5nZXRJdGVtKDQpLnZhbHVlIGlzIDkwMAogUEFTUyB0ZXh0
MS54LmJhc2VWYWwuZ2V0SXRlbSg1KSB0aHJldyBleGNlcHRpb24gSW5kZXhTaXplRXJyb3I6IFRo
ZSBpbmRleCBpcyBub3QgaW4gdGhlIGFsbG93ZWQgcmFuZ2UuLgogCiBBcHBlbmQgZmlyc3QgaXRl
bSB4PTUwMCB0byB0aGUgdGV4dDEgeCBsaXN0Ci1QQVNTIHRleHQxLnguYmFzZVZhbC5hcHBlbmRJ
dGVtKHRleHQxLnguYmFzZVZhbC5nZXRJdGVtKDApKSBpcyB0ZXh0MS54LmJhc2VWYWwuZ2V0SXRl
bSg0KQorUEFTUyB0ZXh0MS54LmJhc2VWYWwuYXBwZW5kSXRlbSh0ZXh0MS54LmJhc2VWYWwuZ2V0
SXRlbSgwKSkgaXMgdGV4dDEueC5iYXNlVmFsLmdldEl0ZW0oNSkKK1BBU1MgdGV4dDEueC5iYXNl
VmFsLnJlbW92ZUl0ZW0oMCkudG9TdHJpbmcoKSBpcyAiW29iamVjdCBTVkdMZW5ndGhdIgogUEFT
UyB0ZXh0MS54LmJhc2VWYWwubnVtYmVyT2ZJdGVtcyBpcyA1CiBQQVNTIHRleHQxLnguYmFzZVZh
bC5nZXRJdGVtKDApLnZhbHVlIGlzIDUwCiBQQVNTIHRleHQxLnguYmFzZVZhbC5nZXRJdGVtKDEp
LnZhbHVlIGlzIDEwMApAQCAtNTksNyArNjEsOSBAQCBQQVNTIHRleHQxLnguYmFzZVZhbC5nZXRJ
dGVtKDYpIHRocmV3IGV4Y2VwdGlvbiBJbmRleFNpemVFcnJvcjogVGhlIGluZGV4IGlzIG5vdAog
CiBBcHBlbmQgdGhpcmQgYW5kIGZvdXJ0aCBpdGVtIG9mIHRoZSB0ZXh0MSB4IGxpc3QgdG8gdGhl
IHRleHQyIHggbGlzdAogUEFTUyB0ZXh0Mi54LmJhc2VWYWwuYXBwZW5kSXRlbSh0ZXh0MS54LmJh
c2VWYWwuZ2V0SXRlbSgyKSkudmFsdWUgaXMgMTAwMAorUEFTUyB0ZXh0MS54LmJhc2VWYWwucmVt
b3ZlSXRlbSgyKS50b1N0cmluZygpIGlzICJbb2JqZWN0IFNWR0xlbmd0aF0iCiBQQVNTIHRleHQy
LnguYmFzZVZhbC5hcHBlbmRJdGVtKHRleHQxLnguYmFzZVZhbC5nZXRJdGVtKDIpKS52YWx1ZSBp
cyA5MDAKK1BBU1MgdGV4dDEueC5iYXNlVmFsLnJlbW92ZUl0ZW0oMikudG9TdHJpbmcoKSBpcyAi
W29iamVjdCBTVkdMZW5ndGhdIgogUEFTUyB0ZXh0MS54LmJhc2VWYWwubnVtYmVyT2ZJdGVtcyBp
cyA0CiBQQVNTIHRleHQxLnguYmFzZVZhbC5nZXRJdGVtKDApLnZhbHVlIGlzIDUwCiBQQVNTIHRl
eHQxLnguYmFzZVZhbC5nZXRJdGVtKDEpLnZhbHVlIGlzIDEwMApAQCAtNzcsMTAgKzgxLDE0IEBA
IFBBU1MgbmV3TGVuZ3RoMi52YWx1ZSBpcyAxNTAKIAogU2h1ZmZsZSBhcm91bmQgaXRlbXMgaW4g
dGV4dDEgYW5kIHRleHQyIGxpc3QgdXNpbmcgYXBwZW5kSXRlbSwgdG8gZ2V0IHg9NTAsMTAwLDE1
MCwuLi4gaW4gYm90aCBsaXN0cwogUEFTUyB0ZXh0MS54LmJhc2VWYWwuYXBwZW5kSXRlbSh0ZXh0
MS54LmJhc2VWYWwuZ2V0SXRlbSgyKSkudmFsdWUgaXMgNTAwCitQQVNTIHRleHQxLnguYmFzZVZh
bC5yZW1vdmVJdGVtKDIpLnRvU3RyaW5nKCkgaXMgIltvYmplY3QgU1ZHTGVuZ3RoXSIKIFBBU1Mg
dGV4dDIueC5iYXNlVmFsLmFwcGVuZEl0ZW0obmV3TGVuZ3RoMikudmFsdWUgaXMgMTUwCiBQQVNT
IHRleHQyLnguYmFzZVZhbC5hcHBlbmRJdGVtKHRleHQyLnguYmFzZVZhbC5nZXRJdGVtKDIpKS52
YWx1ZSBpcyAxMDAwCitQQVNTIHRleHQyLnguYmFzZVZhbC5yZW1vdmVJdGVtKDIpLnRvU3RyaW5n
KCkgaXMgIltvYmplY3QgU1ZHTGVuZ3RoXSIKIFBBU1MgdGV4dDIueC5iYXNlVmFsLmFwcGVuZEl0
ZW0odGV4dDIueC5iYXNlVmFsLmdldEl0ZW0oMykpLnZhbHVlIGlzIDkwMAorUEFTUyB0ZXh0Mi54
LmJhc2VWYWwucmVtb3ZlSXRlbSgzKS50b1N0cmluZygpIGlzICJbb2JqZWN0IFNWR0xlbmd0aF0i
CiBQQVNTIHRleHQyLnguYmFzZVZhbC5hcHBlbmRJdGVtKHRleHQyLnguYmFzZVZhbC5nZXRJdGVt
KDIpKS52YWx1ZSBpcyAxMDAwCitQQVNTIHRleHQyLnguYmFzZVZhbC5yZW1vdmVJdGVtKDIpLnRv
U3RyaW5nKCkgaXMgIltvYmplY3QgU1ZHTGVuZ3RoXSIKIFBBU1MgdGV4dDEueC5iYXNlVmFsLm51
bWJlck9mSXRlbXMgaXMgNAogUEFTUyB0ZXh0MS54LmJhc2VWYWwuZ2V0SXRlbSgwKS52YWx1ZSBp
cyA1MAogUEFTUyB0ZXh0MS54LmJhc2VWYWwuZ2V0SXRlbSgxKS52YWx1ZSBpcyAxMDAKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3N2Zy9kb20vU1ZHTGVuZ3RoTGlzdC1yZW1vdmVJdGVtLnhodG1s
IGIvTGF5b3V0VGVzdHMvc3ZnL2RvbS9TVkdMZW5ndGhMaXN0LXJlbW92ZUl0ZW0ueGh0bWwKaW5k
ZXggNDllYzgwMmJlZTczZGY2MTYxMjIyNGFhYWIxMTg1YWFjZGE4ZTE5NS4uZWI1NGI5NTEyNTAz
OWI0N2E2NDFhOTcwNDI1NTRhNWNmM2IxNTczMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3Zn
L2RvbS9TVkdMZW5ndGhMaXN0LXJlbW92ZUl0ZW0ueGh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3Zn
L2RvbS9TVkdMZW5ndGhMaXN0LXJlbW92ZUl0ZW0ueGh0bWwKQEAgLTQ2LDcgKzQ2LDggQEAKIAog
ICAgIGRlYnVnKCIiKTsKICAgICBkZWJ1ZygiQXBwZW5kIGZvdXJ0aCBpdGVtIHg9OTAwIHRvIHRo
ZSB0ZXh0MSB4IGxpc3QiKTsKLSAgICBzaG91bGRCZSgidGV4dDEueC5iYXNlVmFsLmFwcGVuZEl0
ZW0odGV4dDEueC5iYXNlVmFsLmdldEl0ZW0oMykpIiwgInRleHQxLnguYmFzZVZhbC5nZXRJdGVt
KDQpIik7CisgICAgc2hvdWxkQmUoInRleHQxLnguYmFzZVZhbC5hcHBlbmRJdGVtKHRleHQxLngu
YmFzZVZhbC5nZXRJdGVtKDMpKSIsICJ0ZXh0MS54LmJhc2VWYWwuZ2V0SXRlbSg1KSIpOworICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygidGV4dDEueC5iYXNlVmFsLnJlbW92ZUl0ZW0oMykudG9T
dHJpbmcoKSIsICJbb2JqZWN0IFNWR0xlbmd0aF0iKTsKICAgICBzaG91bGRCZSgidGV4dDEueC5i
YXNlVmFsLm51bWJlck9mSXRlbXMiLCAiNSIpOwogICAgIHNob3VsZEJlKCJ0ZXh0MS54LmJhc2VW
YWwuZ2V0SXRlbSgwKS52YWx1ZSIsICI1MDAiKTsKICAgICBzaG91bGRCZSgidGV4dDEueC5iYXNl
VmFsLmdldEl0ZW0oMSkudmFsdWUiLCAiNTAiKTsKQEAgLTU3LDcgKzU4LDggQEAKIAogICAgIGRl
YnVnKCIiKTsKICAgICBkZWJ1ZygiQXBwZW5kIGZpcnN0IGl0ZW0geD01MDAgdG8gdGhlIHRleHQx
IHggbGlzdCIpOwotICAgIHNob3VsZEJlKCJ0ZXh0MS54LmJhc2VWYWwuYXBwZW5kSXRlbSh0ZXh0
MS54LmJhc2VWYWwuZ2V0SXRlbSgwKSkiLCAidGV4dDEueC5iYXNlVmFsLmdldEl0ZW0oNCkiKTsK
KyAgICBzaG91bGRCZSgidGV4dDEueC5iYXNlVmFsLmFwcGVuZEl0ZW0odGV4dDEueC5iYXNlVmFs
LmdldEl0ZW0oMCkpIiwgInRleHQxLnguYmFzZVZhbC5nZXRJdGVtKDUpIik7CisgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJ0ZXh0MS54LmJhc2VWYWwucmVtb3ZlSXRlbSgwKS50b1N0cmluZygp
IiwgIltvYmplY3QgU1ZHTGVuZ3RoXSIpOwogICAgIHNob3VsZEJlKCJ0ZXh0MS54LmJhc2VWYWwu
bnVtYmVyT2ZJdGVtcyIsICI1Iik7CiAgICAgc2hvdWxkQmUoInRleHQxLnguYmFzZVZhbC5nZXRJ
dGVtKDApLnZhbHVlIiwgIjUwIik7CiAgICAgc2hvdWxkQmUoInRleHQxLnguYmFzZVZhbC5nZXRJ
dGVtKDEpLnZhbHVlIiwgIjEwMCIpOwpAQCAtODEsNyArODMsOSBAQAogICAgIGRlYnVnKCIiKTsK
ICAgICBkZWJ1ZygiQXBwZW5kIHRoaXJkIGFuZCBmb3VydGggaXRlbSBvZiB0aGUgdGV4dDEgeCBs
aXN0IHRvIHRoZSB0ZXh0MiB4IGxpc3QiKTsKICAgICBzaG91bGRCZSgidGV4dDIueC5iYXNlVmFs
LmFwcGVuZEl0ZW0odGV4dDEueC5iYXNlVmFsLmdldEl0ZW0oMikpLnZhbHVlIiwgIjEwMDAiKTsK
KyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInRleHQxLnguYmFzZVZhbC5yZW1vdmVJdGVtKDIp
LnRvU3RyaW5nKCkiLCAiW29iamVjdCBTVkdMZW5ndGhdIik7CiAgICAgc2hvdWxkQmUoInRleHQy
LnguYmFzZVZhbC5hcHBlbmRJdGVtKHRleHQxLnguYmFzZVZhbC5nZXRJdGVtKDIpKS52YWx1ZSIs
ICI5MDAiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInRleHQxLnguYmFzZVZhbC5yZW1v
dmVJdGVtKDIpLnRvU3RyaW5nKCkiLCAiW29iamVjdCBTVkdMZW5ndGhdIik7CiAgICAgc2hvdWxk
QmUoInRleHQxLnguYmFzZVZhbC5udW1iZXJPZkl0ZW1zIiwgIjQiKTsKICAgICBzaG91bGRCZSgi
dGV4dDEueC5iYXNlVmFsLmdldEl0ZW0oMCkudmFsdWUiLCAiNTAiKTsKICAgICBzaG91bGRCZSgi
dGV4dDEueC5iYXNlVmFsLmdldEl0ZW0oMSkudmFsdWUiLCAiMTAwIik7CkBAIC0xMDMsMTAgKzEw
NywxNCBAQAogICAgIGRlYnVnKCIiKTsKICAgICBkZWJ1ZygiU2h1ZmZsZSBhcm91bmQgaXRlbXMg
aW4gdGV4dDEgYW5kIHRleHQyIGxpc3QgdXNpbmcgYXBwZW5kSXRlbSwgdG8gZ2V0IHg9NTAsMTAw
LDE1MCwuLi4gaW4gYm90aCBsaXN0cyIpOwogICAgIHNob3VsZEJlKCJ0ZXh0MS54LmJhc2VWYWwu
YXBwZW5kSXRlbSh0ZXh0MS54LmJhc2VWYWwuZ2V0SXRlbSgyKSkudmFsdWUiLCAiNTAwIik7Cisg
ICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ0ZXh0MS54LmJhc2VWYWwucmVtb3ZlSXRlbSgyKS50
b1N0cmluZygpIiwgIltvYmplY3QgU1ZHTGVuZ3RoXSIpOwogICAgIHNob3VsZEJlKCJ0ZXh0Mi54
LmJhc2VWYWwuYXBwZW5kSXRlbShuZXdMZW5ndGgyKS52YWx1ZSIsICIxNTAiKTsKICAgICBzaG91
bGRCZSgidGV4dDIueC5iYXNlVmFsLmFwcGVuZEl0ZW0odGV4dDIueC5iYXNlVmFsLmdldEl0ZW0o
MikpLnZhbHVlIiwgIjEwMDAiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInRleHQyLngu
YmFzZVZhbC5yZW1vdmVJdGVtKDIpLnRvU3RyaW5nKCkiLCAiW29iamVjdCBTVkdMZW5ndGhdIik7
CiAgICAgc2hvdWxkQmUoInRleHQyLnguYmFzZVZhbC5hcHBlbmRJdGVtKHRleHQyLnguYmFzZVZh
bC5nZXRJdGVtKDMpKS52YWx1ZSIsICI5MDAiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmco
InRleHQyLnguYmFzZVZhbC5yZW1vdmVJdGVtKDMpLnRvU3RyaW5nKCkiLCAiW29iamVjdCBTVkdM
ZW5ndGhdIik7CiAgICAgc2hvdWxkQmUoInRleHQyLnguYmFzZVZhbC5hcHBlbmRJdGVtKHRleHQy
LnguYmFzZVZhbC5nZXRJdGVtKDIpKS52YWx1ZSIsICIxMDAwIik7CisgICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJ0ZXh0Mi54LmJhc2VWYWwucmVtb3ZlSXRlbSgyKS50b1N0cmluZygpIiwgIltv
YmplY3QgU1ZHTGVuZ3RoXSIpOwogICAgIHNob3VsZEJlKCJ0ZXh0MS54LmJhc2VWYWwubnVtYmVy
T2ZJdGVtcyIsICI0Iik7CiAgICAgc2hvdWxkQmUoInRleHQxLnguYmFzZVZhbC5nZXRJdGVtKDAp
LnZhbHVlIiwgIjUwIik7CiAgICAgc2hvdWxkQmUoInRleHQxLnguYmFzZVZhbC5nZXRJdGVtKDEp
LnZhbHVlIiwgIjEwMCIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3ZnL2RvbS9TVkdMZW5n
dGhMaXN0LXJlcGxhY2VJdGVtLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N2Zy9kb20vU1ZH
TGVuZ3RoTGlzdC1yZXBsYWNlSXRlbS1leHBlY3RlZC50eHQKaW5kZXggYjEzODkxNjdhMThhYzc1
MTc5Mzc1Yjg5MWJhZWRhYTM1YzQ0OTY3YS4uNWJhNjEwMzIxNjEyZjhkZTcxMDVjOGI3OGNhOWRj
ZjQyYzY2YTQzMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3ZnL2RvbS9TVkdMZW5ndGhMaXN0
LXJlcGxhY2VJdGVtLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdmcvZG9tL1NWR0xl
bmd0aExpc3QtcmVwbGFjZUl0ZW0tZXhwZWN0ZWQudHh0CkBAIC00Niw2ICs0Niw3IEBAIFBBU1Mg
dGV4dDIueC5iYXNlVmFsLmdldEl0ZW0oNCkgdGhyZXcgZXhjZXB0aW9uIEluZGV4U2l6ZUVycm9y
OiBUaGUgaW5kZXggaXMgbm90CiAKIFJlcGxhY2UgdGhlIGZpcnN0IGl0ZW0gaW4gdGV4dDIgeCBs
aXN0IHdpdGggdGhlIHRoaXJkIGl0ZW0gaW4gdGhlIGxpc3QKIFBBU1MgdGV4dDIueC5iYXNlVmFs
LnJlcGxhY2VJdGVtKHRleHQyLnguYmFzZVZhbC5nZXRJdGVtKDIpLCAwKS52YWx1ZSBpcyA1MAor
UEFTUyB0ZXh0Mi54LmJhc2VWYWwucmVtb3ZlSXRlbSgyKS50b1N0cmluZygpIGlzICJbb2JqZWN0
IFNWR0xlbmd0aF0iCiBQQVNTIHRleHQyLnguYmFzZVZhbC5udW1iZXJPZkl0ZW1zIGlzIDMKIFBB
U1MgdGV4dDIueC5iYXNlVmFsLmdldEl0ZW0oMCkudmFsdWUgaXMgNTAKIFBBU1MgdGV4dDIueC5i
YXNlVmFsLmdldEl0ZW0oMSkudmFsdWUgaXMgMTAwCkBAIC03MCw2ICs3MSw3IEBAIFBBU1MgdGV4
dDQueC5iYXNlVmFsLmdldEl0ZW0oNCkgdGhyZXcgZXhjZXB0aW9uIEluZGV4U2l6ZUVycm9yOiBU
aGUgaW5kZXggaXMgbm90CiAKIFJlcGxhY2UgdGhlIGZpcnN0IGl0ZW0gaW4gdGV4dDQgeCBsaXN0
IHdpdGggdGhlIHNlY29uZCBpdGVtIGluIHRoZSB0ZXh0MyB4IGxpc3QKIFBBU1MgdGV4dDQueC5i
YXNlVmFsLnJlcGxhY2VJdGVtKHRleHQzLnguYmFzZVZhbC5nZXRJdGVtKDEpLCAwKS52YWx1ZSBp
cyA1MAorUEFTUyB0ZXh0My54LmJhc2VWYWwucmVtb3ZlSXRlbSgxKS50b1N0cmluZygpIGlzICJb
b2JqZWN0IFNWR0xlbmd0aF0iCiBQQVNTIHRleHQzLnguYmFzZVZhbC5udW1iZXJPZkl0ZW1zIGlz
IDQKIFBBU1MgdGV4dDMueC5iYXNlVmFsLmdldEl0ZW0oMCkudmFsdWUgaXMgNTAKIFBBU1MgdGV4
dDMueC5iYXNlVmFsLmdldEl0ZW0oMSkudmFsdWUgaXMgMTAwCkBAIC04NSw2ICs4Nyw3IEBAIFBB
U1MgdGV4dDQueC5iYXNlVmFsLmdldEl0ZW0oNCkgdGhyZXcgZXhjZXB0aW9uIEluZGV4U2l6ZUVy
cm9yOiBUaGUgaW5kZXggaXMgbm90CiAKIFJlcGxhY2UgdGhlIHNlY29uZCBpdGVtIGluIHRleHQ0
IHggbGlzdCB3aXRoIHRoZSBzZWNvbmQgaXRlbSBpbiB0aGUgdGV4dDQgeCBsaXN0CiBQQVNTIHRl
eHQ0LnguYmFzZVZhbC5yZXBsYWNlSXRlbSh0ZXh0My54LmJhc2VWYWwuZ2V0SXRlbSgyKSwgMSku
dmFsdWUgaXMgMTAwCitQQVNTIHRleHQzLnguYmFzZVZhbC5yZW1vdmVJdGVtKDIpLnRvU3RyaW5n
KCkgaXMgIltvYmplY3QgU1ZHTGVuZ3RoXSIKIFBBU1MgdGV4dDQueC5iYXNlVmFsLm51bWJlck9m
SXRlbXMgaXMgNAogUEFTUyB0ZXh0NC54LmJhc2VWYWwuZ2V0SXRlbSgwKS52YWx1ZSBpcyA1MAog
UEFTUyB0ZXh0NC54LmJhc2VWYWwuZ2V0SXRlbSgxKS52YWx1ZSBpcyAxMDAKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3N2Zy9kb20vU1ZHTGVuZ3RoTGlzdC1yZXBsYWNlSXRlbS54aHRtbCBiL0xh
eW91dFRlc3RzL3N2Zy9kb20vU1ZHTGVuZ3RoTGlzdC1yZXBsYWNlSXRlbS54aHRtbAppbmRleCBi
NjgyNGE0YzlhYTcxNjU5NDg0ZGYwNmQ4YTVlOGZhOTgyYjI3MTFjLi5jYjc0ZDQzYjE1OWE2NWNj
YzI3ZDYyMDBkMTExNzYyYWRmNTk2ZTIxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdmcvZG9t
L1NWR0xlbmd0aExpc3QtcmVwbGFjZUl0ZW0ueGh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3ZnL2Rv
bS9TVkdMZW5ndGhMaXN0LXJlcGxhY2VJdGVtLnhodG1sCkBAIC03NSw2ICs3NSw3IEBACiAgICAg
ZGVidWcoIiIpOwogICAgIGRlYnVnKCJSZXBsYWNlIHRoZSBmaXJzdCBpdGVtIGluIHRleHQyIHgg
bGlzdCB3aXRoIHRoZSB0aGlyZCBpdGVtIGluIHRoZSBsaXN0Iik7CiAgICAgc2hvdWxkQmUoInRl
eHQyLnguYmFzZVZhbC5yZXBsYWNlSXRlbSh0ZXh0Mi54LmJhc2VWYWwuZ2V0SXRlbSgyKSwgMCku
dmFsdWUiLCAiNTAiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInRleHQyLnguYmFzZVZh
bC5yZW1vdmVJdGVtKDIpLnRvU3RyaW5nKCkiLCAiW29iamVjdCBTVkdMZW5ndGhdIik7CiAgICAg
c2hvdWxkQmUoInRleHQyLnguYmFzZVZhbC5udW1iZXJPZkl0ZW1zIiwgIjMiKTsKICAgICBzaG91
bGRCZSgidGV4dDIueC5iYXNlVmFsLmdldEl0ZW0oMCkudmFsdWUiLCAiNTAiKTsKICAgICBzaG91
bGRCZSgidGV4dDIueC5iYXNlVmFsLmdldEl0ZW0oMSkudmFsdWUiLCAiMTAwIik7CkBAIC0xMDIs
NiArMTAzLDcgQEAKICAgICBkZWJ1ZygiIik7CiAgICAgZGVidWcoIlJlcGxhY2UgdGhlIGZpcnN0
IGl0ZW0gaW4gdGV4dDQgeCBsaXN0IHdpdGggdGhlIHNlY29uZCBpdGVtIGluIHRoZSB0ZXh0MyB4
IGxpc3QiKTsKICAgICBzaG91bGRCZSgidGV4dDQueC5iYXNlVmFsLnJlcGxhY2VJdGVtKHRleHQz
LnguYmFzZVZhbC5nZXRJdGVtKDEpLCAwKS52YWx1ZSIsICI1MCIpOworICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygidGV4dDMueC5iYXNlVmFsLnJlbW92ZUl0ZW0oMSkudG9TdHJpbmcoKSIsICJb
b2JqZWN0IFNWR0xlbmd0aF0iKTsKICAgICBzaG91bGRCZSgidGV4dDMueC5iYXNlVmFsLm51bWJl
ck9mSXRlbXMiLCAiNCIpOwogICAgIHNob3VsZEJlKCJ0ZXh0My54LmJhc2VWYWwuZ2V0SXRlbSgw
KS52YWx1ZSIsICI1MCIpOwogICAgIHNob3VsZEJlKCJ0ZXh0My54LmJhc2VWYWwuZ2V0SXRlbSgx
KS52YWx1ZSIsICIxMDAiKTsKQEAgLTExOCw2ICsxMjAsNyBAQAogICAgIGRlYnVnKCIiKTsKICAg
ICBkZWJ1ZygiUmVwbGFjZSB0aGUgc2Vjb25kIGl0ZW0gaW4gdGV4dDQgeCBsaXN0IHdpdGggdGhl
IHNlY29uZCBpdGVtIGluIHRoZSB0ZXh0NCB4IGxpc3QiKTsKICAgICBzaG91bGRCZSgidGV4dDQu
eC5iYXNlVmFsLnJlcGxhY2VJdGVtKHRleHQzLnguYmFzZVZhbC5nZXRJdGVtKDIpLCAxKS52YWx1
ZSIsICIxMDAiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInRleHQzLnguYmFzZVZhbC5y
ZW1vdmVJdGVtKDIpLnRvU3RyaW5nKCkiLCAiW29iamVjdCBTVkdMZW5ndGhdIik7CiAgICAgc2hv
dWxkQmUoInRleHQ0LnguYmFzZVZhbC5udW1iZXJPZkl0ZW1zIiwgIjQiKTsKICAgICBzaG91bGRC
ZSgidGV4dDQueC5iYXNlVmFsLmdldEl0ZW0oMCkudmFsdWUiLCAiNTAiKTsKICAgICBzaG91bGRC
ZSgidGV4dDQueC5iYXNlVmFsLmdldEl0ZW0oMSkudmFsdWUiLCAiMTAwIik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>365981</attachid>
            <date>2019-03-26 11:57:46 -0700</date>
            <delta_ts>2019-03-26 13:14:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-196083-20190326115745.patch</filename>
            <type>text/plain</type>
            <size>287508</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQzNDk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGZmYjE5MzJmNTc2MDM3
NWE1ZTU1MzkzYzNhMjBkMDYwMjI2N2RhZS4uYTRhM2IwZWYxMDYzODBjMjQ4MWIzMDVjZDJlMDNk
NzExZGQyYWViOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4MCBAQAorMjAxOS0wMy0yNiAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgdGhlIFNW
RyB0ZWFyIG9mZiBvYmplY3RzIGZvciBTVkdMZW5ndGgsIFNWR0xlbmd0aExpc3QgYW5kIFNWR0Fu
aW1hdGVkTGVuZ3RoTGlzdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTk2MDgzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgorCisg
ICAgICAgIC0tIFNWR0xlbmd0aCB3aWxsIGJlIGEgc3VwZXJjbGFzcyBvZiBTVkdWYWx1ZVByb3Bl
cnR5PFNWR0xlbmd0aFZhbHVlPi4gSXQKKyAgICAgICAgICAgaXMgYSB3cmFwcGVyIG9mIFNWR0xl
bmd0aFZhbHVlLiBJdCB3aWxsIGJlIHByb3ZpZGUgdGhlIERPTSBtZXRob2RzLiBJdAorICAgICAg
ICAgICBjYW4gc2V0VmFsdWVBc1N0cmluZygpIGFuZCByZXR1cm4gdmFsdWVBc1N0cmluZygpLgor
CisgICAgICAgIC0tIFNWR0xlbmd0aExpc3Qgd2lsbCBiZSBhIHN1cGVyY2xhc3Mgb2YgU1ZHVmFs
dWVQcm9wZXJ0eUxpc3Q8U1ZHTGVuZ3RoPi4KKyAgICAgICAgICAgVGhlIGJhc2UgY2xhc3Mgd2ls
bCBwcm92aWRlIGFsbCB0aGUgRE9NIG1ldGhvZHMuIFNWR0xlbmd0aExpc3Qgd2lsbCBiZQorICAg
ICAgICAgICByZXNwb25zaWJsZSBmb3IgcGFyc2luZyBhIFN0cmluZyB0byBhIFNWR0xlbmd0aCBp
dGVtcy4gSXQgY2FuIGFsc28gCisgICAgICAgICAgIGJ1aWxkIGEgc3RyaW5nIHJlcHJlc2VudGlu
ZyB0aGUgc3RvcmVkIGl0ZW1zLgorCisgICAgICAgIC0tIFNWR0FuaW1hdGVkTGVuZ3RoTGlzdCB3
aWxsIGJlIGRlZmluZWQgYXMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUxpc3Q8U1ZHTGVuZ3RoTGlzdD4u
CisgICAgICAgICAgIExpa2UgU1ZHQW5pbWF0ZWRQb2ludExpc3QsIGFsbCB0aGUgcmVxdWlyZWQg
bWV0aG9kcyBhbmQgYXR0cmlidXRlcworICAgICAgICAgICB3aWxsIGJlIGhhbmRsZWQgYnkgU1ZH
QW5pbWF0ZWRQcm9wZXJ0eUxpc3QuCisKKyAgICAgICAgLS0gU1ZHQW5pbWF0ZWRMZW5ndGhBY2Nl
c3NvciBhbmQgU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0QWNjZXNzb3Igd2lsbCBiZQorICAgICAgICAg
ICBhZGRlZCB0byBhY2Nlc3MgdGhlIG1lbWJlcnMgb2YgdHlwZXMgU1ZHQW5pbWF0ZWRMZW5ndGgg
YW5kIAorICAgICAgICAgICBTVkdBbmltYXRlZExlbmd0aExpc3QuCisKKyAgICAgICAgLS0gU1ZH
QW5pbWF0ZWRMZW5ndGhBbmltYXRvciBhbmQgU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0QW5pbWF0b3Ig
d2lsbCBiZQorICAgICAgICAgICBjcmVhdGVkIGJ5IHRoZSB0aGUgbmV3IGFjY2Vzc29ycyB0byBh
bmltYXRlIGF0dHJpYnV0ZXMgb2YgdHlwZXMKKyAgICAgICAgICAgU1ZHQW5pbWF0ZWRMZW5ndGgg
YW5kIFNWR0FuaW1hdGVkTGVuZ3RoTGlzdC4KKworICAgICAgICAtLSBTVkdBbmltYXRpb25MZW5n
dGhGdW5jdGlvbiBhbmQgU1ZHQW5pbWF0aW9uTGVuZ3RoTGlzdEZ1bmN0aW9uIHdpbGwgYmUKKyAg
ICAgICAgICAgcmVzcG9uc2libGUgZm9yIHByb2dyZXNzaW5nIHRoZSBhbmltVmFsKCkgb2YgYXR0
cmlidXRlcyBvZiB0eXBlcworICAgICAgICAgICBTVkdBbmltYXRlZExlbmd0aCBhbmQgU1ZHQW5p
bWF0ZWRMZW5ndGhMaXN0LgorCisgICAgICAgIC0tIFNWR1ZhbHVlUHJvcGVydHlBbmltYXRvciBp
cyBhIG5ldyB0ZW1wbGF0ZSBjbGFzcyB3aGljaCBjYW4gYW5pbWF0ZSBhCisgICAgICAgICAgIG5v
bmUgcmVmbGVjdGluZyBhdHRyaWJ1dGUgd2hpY2ggc2hvdWxkIGJlIGJhY2tlZCBieSBhIHZhbHVl
IHByb3BlcnR5LAorICAgICAgICAgICBlLmcuIFNWR0xlbmd0aC4KKworICAgICAgICAtLSBTVkdW
YWx1ZVByb3BlcnR5TGlzdEFuaW1hdG9yIGlzIGEgbmV3IHRlbXBsYXRlIGNsYXNzIHdoaWNoIGNh
biBhbmltYXRlIGEKKyAgICAgICAgICAgbm9uZSByZWZsZWN0aW5nIGF0dHJpYnV0ZSB3aGljaCBz
aG91bGQgYmUgYmFja2VkIGJ5IGEgdmFsdWUgcHJvcGVydHkKKyAgICAgICAgICAgbGlzdCwgZS5n
LiBTVkdMZW5ndGhMaXN0LgorCisgICAgICAgIE5vdGVzOgorCisgICAgICAgICAgICAtLSBTVkdF
bGVtZW50Ojppc0FuaW1hdGVkU3R5bGVBdHRyaWJ1dGUoKSB3aWxsIHJldHVybiB0cnVlIGlmIHRo
ZQorICAgICAgICAgICAgICAgYXR0cmlidXRlIGlzIGtub3duIGJ5IFNWR1Byb3BlcnR5QW5pbWF0
b3JGYWN0b3J5LiBPciBpdCdzIGhhcyAKKyAgICAgICAgICAgICAgIGEgcmVmbGVjdGluZyBTVkdB
bmltYXRlZFByb3BlcnR5TGVuZ3RoIHByb3BlcnR5IGFuZCBpdHMgbmFtZSBpcworICAgICAgICAg
ICAgICAgb25lIG9mIHRoZSBuYW1lcyBsaXN0ZWQgaW4gaXNBbmltYXRlZFN0eWxlUHJvcGVydHlB
dHRyaWJ1dGUoKSBvZgorICAgICAgICAgICAgICAgdGhlIHByb3BlcnR5UmVnaXN0cnkoKSBvZiB0
aGUgU1ZHRWxlbWVudC4KKworICAgICAgICAgICAgLS0gU1ZHRWxlbWVudDo6Y29tbWl0UHJvcGVy
dHlDaGFuZ2UoKSBoYXMgdG8gaGFuZGxlIHRoZSBhdHRyaWJ1dGVzCisgICAgICAgICAgICAgICBm
b3Igd2hpY2ggaXNBbmltYXRlZFN0eWxlUHJvcGVydHlBdHRyaWJ1dGUoKSByZXR1cm5zIHRydWUg
ZGlmZmVyZW50CisgICAgICAgICAgICAgICBmcm9tIHRoZSBvdGhlciBvbmVzLiBzdHlsZVJlY2xh
YygpIG5lZWRzIHVwZGF0ZWQgYXR0cmlidXRlcyBzaW5jZQorICAgICAgICAgICAgICAgaXQgZG9l
cyBub3QgYWNjZXNzIHRoZSByZWZsZWN0aW5nIHByb3BlcnRpZXMgaW4gdGhlIFNWR0VMZW1lbnQu
CisKKyAgICAgICAgICAgIC0tIFNWR1RleHRDb250ZW50RWxlbWVudCBkb2VzIG5vdCBuZWVkIGEg
Y3VzdG9taXplZCBTVkdBbmltYXRlZExlbmd0aC4KKyAgICAgICAgICAgICAgIEFsbCBTVkdUZXh0
Q29udGVudEVsZW1lbnQ6OnRleHRMZW5ndGhBbmltYXRlZCgpIG5lZWRzIHRvIGtub3cgaXMKKyAg
ICAgICAgICAgICAgIHdoZXRoZXIgbV90ZXh0TGVuZ3RoLT5iYXNlVmFsKCkgaG9sZHMgYW4gZW1w
dHkgU1ZHTGVuZ3RoLiBJZiBpdAorICAgICAgICAgICAgICAgZG9lcywgaXQgc2V0cyBpdHMgdmFs
dWUgdG8gZ2V0Q29tcHV0ZWRUZXh0TGVuZ3RoKCkuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoK
KyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
cmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0QXR0cmlidXRlc0J1aWxkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6dXBkYXRlQ2hhcmFjdGVyRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdU
ZXh0TGF5b3V0QXR0cmlidXRlc0J1aWxkZXI6OmZpbGxDaGFyYWN0ZXJEYXRhTWFwKToKKyAgICAg
ICAgKiBzdmcvU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0FuaW1hdGVFbGVtZW50QmFzZTo6aGFzVmFsaWRBdHRyaWJ1dGVUeXBlIGNvbnN0KToKKyAgICAg
ICAgKiBzdmcvU1ZHQW5pbWF0ZWRMZW5ndGguY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHN2Zy9T
VkdBbmltYXRlZExlbmd0aC5oOiBSZW1vdmVkLgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZExl
bmd0aExpc3QuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZExlbmd0aExp
c3QuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRUeXBlLmg6CisgICAgICAg
IChXZWJDb3JlOjpTVkdBbmltYXRlZFR5cGU6OnR5cGUgY29uc3QpOgorICAgICAgICAqIHN2Zy9T
VkdBbmltYXRpb25FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGlvbkVs
ZW1lbnQ6OmlzVGFyZ2V0QXR0cmlidXRlQ1NTUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6
aW5oZXJpdHNGcm9tUHJvcGVydHkpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRvckZhY3Rvcnku
aDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdG9yRmFjdG9yeTo6aXNTdXBwb3J0ZWRBdHRy
aWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0b3JGYWN0b3J5OjpjcmVhdGUpOgor
ICAgICAgICBUaGVzZSBjaGFuZ2VzIHdlcmUgcmVxdWlyZWQgYmVjYXVzZSBzb21lIG9mIHRoZSB0
ZXN0cyB3ZXJlIHRyeWluZyB0bworICAgICAgICBhbmltYXRlZCB1bnN1cHBvcnRlZCBhdHRyaWJ1
dGVzLiBUbyBkaWZmZXJlbnRpYXRlIGJldHdlZW4gYmV0d2VlbiB0aGUKKyAgICAgICAgdGhlc2Ug
dHdvIGNhc2VzOgorICAgICAgICAgICAgMSkgdGhlIGF0dHJpYnV0ZSBpcyBhbmltYXRlLWFibGUg
YnkgdGhlIGxlZ2FjeSBjb250cm9sbGVyLgorICAgICAgICAgICAgMikgYW5pbWF0aW5nIHRoZSBh
dHRyaWJ1dGUgb3IgdGhlIGF0dHJpYnV0ZSBpdHNlbGYgaXMgbm90IHN1cHBvcnRlZAorICAgICAg
ICAgICAgICAgYnkgdGhlIGVsZW1lbnQuCisKKyAgICAgICAgV2Ugd2FudCBTVkdBbmltYXRvckZh
Y3RvcnkgdGVsbCB1cyB3aGV0aGVyIGl0IGNhbiBjcmVhdGUgYW4gYW5pbWF0b3IgZm9yCisgICAg
ICAgIGEgZ2l2ZW4gYXR0cmlidXRlIG9yIG5vdC4KKworICAgICAgICAqIHN2Zy9TVkdDaXJjbGVF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0NpcmNsZUVsZW1lbnQ6OlNWR0NpcmNs
ZUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ2lyY2xlRWxlbWVudDo6cGFyc2VBdHRy
aWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ2lyY2xlRWxlbWVudDo6c3ZnQXR0cmlidXRl
Q2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdDaXJjbGVFbGVtZW50OjpyZWdpc3RlckF0
dHJpYnV0ZXMpOiBEZWxldGVkLgorICAgICAgICAqIHN2Zy9TVkdDaXJjbGVFbGVtZW50Lmg6Cisg
ICAgICAgICogc3ZnL1NWR0N1cnNvckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
Q3Vyc29yRWxlbWVudDo6U1ZHQ3Vyc29yRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdD
dXJzb3JFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdDdXJz
b3JFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0N1
cnNvckVsZW1lbnQ6OnJlZ2lzdGVyQXR0cmlidXRlcyk6IERlbGV0ZWQuCisgICAgICAgICogc3Zn
L1NWR0N1cnNvckVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdFbGVtZW50Ojpjb21taXRQcm9wZXJ0eUNoYW5nZSk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdFbGVtZW50Ojppc0FuaW1hdGVkU3R5bGVBdHRyaWJ1dGUgY29uc3QpOgor
ICAgICAgICAqIHN2Zy9TVkdFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0VsbGlwc2VFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsbGlwc2VFbGVtZW50OjpTVkdFbGxpcHNl
RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGxpcHNlRWxlbWVudDo6cGFyc2VBdHRy
aWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxsaXBzZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0
ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxsaXBzZUVsZW1lbnQ6OnJlZ2lzdGVy
QXR0cmlidXRlcyk6IERlbGV0ZWQuCisgICAgICAgICogc3ZnL1NWR0VsbGlwc2VFbGVtZW50Lmg6
CisgICAgICAgICogc3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRmlsdGVyRWxlbWVudDo6U1ZHRmlsdGVyRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdGaWx0ZXJFbGVtZW50OjpyZWdpc3RlckF0dHJpYnV0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRmlsdGVyRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAqIHN2Zy9TVkdGaWx0
ZXJFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0
cmlidXRlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFy
ZEF0dHJpYnV0ZXM6OlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnBhcnNl
QXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJk
QXR0cmlidXRlczo6cmVnaXN0ZXJBdHRyaWJ1dGVzKTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcv
U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmg6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnggY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjp5IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRl
czo6d2lkdGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRmlsdGVyUHJpbWl0aXZlU3Rh
bmRhcmRBdHRyaWJ1dGVzOjpoZWlnaHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRmls
dGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjp4QW5pbWF0ZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjp5QW5pbWF0ZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjp3
aWR0aEFuaW1hdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5k
YXJkQXR0cmlidXRlczo6aGVpZ2h0QW5pbWF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRmls
dGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjppc0tub3duQXR0cmlidXRlKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBzdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ6OlNWR0ZvcmVpZ25PYmplY3RFbGVtZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZvcmVpZ25PYmplY3RFbGVtZW50OjpwYXJzZUF0dHJp
YnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGb3JlaWduT2JqZWN0RWxlbWVudDo6cmVnaXN0
ZXJBdHRyaWJ1dGVzKTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZHRm9yZWlnbk9iamVjdEVs
ZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ltYWdlRWxlbWVudDo6U1ZHSW1hZ2VFbGVtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0ltYWdlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHSW1hZ2VFbGVtZW50OjpyZWdpc3RlckF0dHJpYnV0ZXMpOiBEZWxldGVkLgorICAgICAgICAq
IHN2Zy9TVkdJbWFnZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHTGVuZ3RoLmg6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdMZW5ndGg6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdM
ZW5ndGg6OmNsb25lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0aDo6dW5pdFR5
cGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGVuZ3RoOjp2YWx1ZUZvckJpbmRpbmdzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0aDo6c2V0VmFsdWVGb3JCaW5kaW5ncyk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdMZW5ndGg6OnZhbHVlSW5TcGVjaWZpZWRVbml0cyk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdMZW5ndGg6OnNldFZhbHVlSW5TcGVjaWZpZWRVbml0cyk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdMZW5ndGg6OnNldFZhbHVlQXNTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHTGVuZ3RoOjpuZXdWYWx1ZVNwZWNpZmllZFVuaXRzKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0xlbmd0aDo6Y29udmVydFRvU3BlY2lmaWVkVW5pdHMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
TGVuZ3RoOjp2YWx1ZUFzU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0xl
bmd0aDo6U1ZHTGVuZ3RoKTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZHTGVuZ3RoTGlzdC5o
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGVuZ3RoTGlzdDo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0xlbmd0aExpc3Q6Omxlbmd0aE1vZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHTGVuZ3RoTGlzdDo6cGFyc2UpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGVuZ3RoTGlz
dDo6U1ZHTGVuZ3RoTGlzdCk6CisgICAgICAgICogc3ZnL1NWR0xlbmd0aExpc3RWYWx1ZXMuY3Bw
OiBSZW1vdmVkLgorICAgICAgICAqIHN2Zy9TVkdMZW5ndGhMaXN0VmFsdWVzLmg6IFJlbW92ZWQu
CisgICAgICAgICogc3ZnL1NWR0xpbmVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0xpbmVFbGVtZW50OjpTVkdMaW5lRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdMaW5l
RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGluZUVsZW1l
bnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGluZUVsZW1l
bnQ6OnJlZ2lzdGVyQXR0cmlidXRlcyk6IERlbGV0ZWQuCisgICAgICAgICogc3ZnL1NWR0xpbmVF
bGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ6OlNWR0xpbmVhckdyYWRp
ZW50RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ6
OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xpbmVhckdyYWRpZW50RWxl
bWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdMaW5lYXJH
cmFkaWVudEVsZW1lbnQ6OnJlZ2lzdGVyQXR0cmlidXRlcyk6IERlbGV0ZWQuCisgICAgICAgICog
c3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdNYXJrZXJF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hcmtlckVsZW1lbnQ6OlNWR01hcmtl
ckVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWFya2VyRWxlbWVudDo6cmVnaXN0ZXJB
dHRyaWJ1dGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hcmtlckVsZW1lbnQ6OnBhcnNlQXR0
cmlidXRlKToKKyAgICAgICAgKiBzdmcvU1ZHTWFya2VyRWxlbWVudC5oOgorICAgICAgICAqIHN2
Zy9TVkdNYXNrRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXNrRWxlbWVudDo6
U1ZHTWFza0VsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWFza0VsZW1lbnQ6OnJlZ2lz
dGVyQXR0cmlidXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXNrRWxlbWVudDo6cGFyc2VB
dHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWFza0VsZW1lbnQ6OnN2Z0F0dHJpYnV0
ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdNYXNrRWxlbWVudC5oOgorICAgICAgICAqIHN2
Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXR0ZXJuRWxl
bWVudDo6U1ZHUGF0dGVybkVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0dGVybkVs
ZW1lbnQ6OnJlZ2lzdGVyQXR0cmlidXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXR0ZXJu
RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAqIHN2Zy9TVkdQYXR0ZXJuRWxlbWVu
dC5oOgorICAgICAgICAqIHN2Zy9TVkdQb2ludC5oOgorICAgICAgICAqIHN2Zy9TVkdSYWRpYWxH
cmFkaWVudEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmFkaWFsR3JhZGllbnRF
bGVtZW50OjpTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
UmFkaWFsR3JhZGllbnRFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50OjpyZWdpc3RlckF0dHJpYnV0ZXMp
OiBEZWxldGVkLgorICAgICAgICAqIHN2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuaDoKKyAg
ICAgICAgKiBzdmcvU1ZHUmVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVj
dEVsZW1lbnQ6OlNWR1JlY3RFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlY3RFbGVt
ZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZWN0RWxlbWVudDo6
c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZWN0RWxlbWVudDo6
cmVnaXN0ZXJBdHRyaWJ1dGVzKTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZHUmVjdEVsZW1l
bnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHU1ZHRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdTVkdFbGVtZW50OjpTVkdTVkdFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NW
R0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1l
bnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU1ZHRWxlbWVu
dDo6cmVnaXN0ZXJBdHRyaWJ1dGVzKTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZHU1ZHRWxl
bWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHVGV4dENvbnRlbnRFbGVtZW50OjpTVkdUZXh0Q29udGVudEVsZW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dENvbnRlbnRFbGVtZW50OjpyZWdpc3RlckF0dHJp
YnV0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dENvbnRlbnRFbGVtZW50OjpwYXJzZUF0
dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0Q29udGVudEVsZW1lbnQ6OnN2Z0F0
dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dENvbnRlbnRFbGVtZW50
Ojp0ZXh0TGVuZ3RoQW5pbWF0ZWQpOgorICAgICAgICAqIHN2Zy9TVkdUZXh0Q29udGVudEVsZW1l
bnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRDb250ZW50RWxlbWVudDo6c3BlY2lmaWVk
VGV4dExlbmd0aCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0Q29udGVudEVsZW1l
bnQ6OnRleHRMZW5ndGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dENvbnRlbnRF
bGVtZW50OjpzcGVjaWZpZWRUZXh0TGVuZ3RoKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlNWR1RleHRDb250ZW50RWxlbWVudDo6dGV4dExlbmd0aEFuaW1hdGVkKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1RleHRDb250ZW50RWxlbWVudDo6U1ZHQW5pbWF0ZWRDdXN0b21M
ZW5ndGhBdHRyaWJ1dGU6OlNWR0FuaW1hdGVkQ3VzdG9tTGVuZ3RoQXR0cmlidXRlKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRDb250ZW50RWxlbWVudDo6U1ZHQW5pbWF0ZWRD
dXN0b21MZW5ndGhBdHRyaWJ1dGU6OnN5bmNocm9uaXplKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlNWR1RleHRDb250ZW50RWxlbWVudDo6U1ZHQW5pbWF0ZWRDdXN0b21MZW5ndGhBdHRy
aWJ1dGU6OmFuaW1hdGVkUHJvcGVydHkpOiBEZWxldGVkLgorICAgICAgICAqIHN2Zy9TVkdUZXh0
UGF0aEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dFBhdGhFbGVtZW50OjpT
VkdUZXh0UGF0aEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dFBhdGhFbGVtZW50
OjpyZWdpc3RlckF0dHJpYnV0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dFBhdGhFbGVt
ZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5o
OgorICAgICAgICAqIHN2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQ6OlNWR1RleHRQb3NpdGlvbmluZ0Vs
ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudDo6cGFy
c2VBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVu
dDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0UG9zaXRp
b25pbmdFbGVtZW50OjpyZWdpc3RlckF0dHJpYnV0ZXMpOiBEZWxldGVkLgorICAgICAgICAqIHN2
Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0
UG9zaXRpb25pbmdFbGVtZW50Ojp4IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRQ
b3NpdGlvbmluZ0VsZW1lbnQ6OnkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dFBv
c2l0aW9uaW5nRWxlbWVudDo6ZHggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dFBv
c2l0aW9uaW5nRWxlbWVudDo6ZHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dFBv
c2l0aW9uaW5nRWxlbWVudDo6eEFuaW1hdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRQ
b3NpdGlvbmluZ0VsZW1lbnQ6OnlBbmltYXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0
UG9zaXRpb25pbmdFbGVtZW50OjpkeEFuaW1hdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Rl
eHRQb3NpdGlvbmluZ0VsZW1lbnQ6OmR5QW5pbWF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
VGV4dFBvc2l0aW9uaW5nRWxlbWVudDo6aXNLbm93bkF0dHJpYnV0ZSk6IERlbGV0ZWQuCisgICAg
ICAgICogc3ZnL1NWR1VzZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVXNlRWxl
bWVudDo6U1ZHVXNlRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdVc2VFbGVtZW50Ojpw
YXJzZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdVc2VFbGVtZW50OjpzdmdBdHRy
aWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1VzZUVsZW1lbnQ6OnJlZ2lzdGVy
QXR0cmlidXRlcyk6IERlbGV0ZWQuCisgICAgICAgICogc3ZnL1NWR1VzZUVsZW1lbnQuaDoKKyAg
ICAgICAgKiBzdmcvU1ZHVmFsdWUuaDoKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdBbmlt
YXRlZFByb3BlcnR5QWNjZXNzb3JJbXBsLmg6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZH
QW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9yLmg6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZH
QW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9ySW1wbC5oOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVz
L1NWR0FuaW1hdGVkUHJvcGVydHlJbXBsLmg6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZH
QW5pbWF0aW9uQWRkaXRpdmVMaXN0RnVuY3Rpb25JbXBsLmg6CisgICAgICAgIChXZWJDb3JlOjpT
VkdBbmltYXRpb25MZW5ndGhMaXN0RnVuY3Rpb246OlNWR0FuaW1hdGlvbkxlbmd0aExpc3RGdW5j
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRpb25MZW5ndGhMaXN0RnVuY3Rpb246
OnByb2dyZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGlvbk51bWJlckxpc3RGdW5j
dGlvbjo6cHJvZ3Jlc3MpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0aW9uUG9pbnRMaXN0
RnVuY3Rpb246OnByb2dyZXNzKToKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdBbmltYXRp
b25BZGRpdGl2ZVZhbHVlRnVuY3Rpb25JbXBsLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmlt
YXRpb25MZW5ndGhGdW5jdGlvbjo6U1ZHQW5pbWF0aW9uTGVuZ3RoRnVuY3Rpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHQW5pbWF0aW9uTGVuZ3RoRnVuY3Rpb246OnByb2dyZXNzKToKKyAgICAg
ICAgKiBzdmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1dGVBbmltYXRvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdBdHRyaWJ1dGVBbmltYXRvcjo6aXNBbmltYXRlZFN0eWxlUHJvcGVydHlBbmlh
bXRvciBjb25zdCk6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlQW5pbWF0
b3IuaDoKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1dGVSZWdpc3RyeS5oOgor
ICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5QW5pbWF0b3JGYWN0b3J5Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdQcm9wZXJ0eUFuaW1hdG9yRmFjdG9yeTo6Y3JlYXRlTGVuZ3Ro
QW5pbWF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUHJvcGVydHlBbmltYXRvckZhY3Rvcnk6
OmNyZWF0ZUxlbmd0aExpc3RBbmltYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdQcm9wZXJ0
eUFuaW1hdG9yRmFjdG9yeTo6YXR0cmlidXRlQW5pbWF0b3JDcmVhdG9yKToKKyAgICAgICAgKiBz
dmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnkuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1Byb3BlcnR5T3duZXJSZWdpc3RyeTo6cmVnaXN0ZXJQcm9wZXJ0eSk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk6OmlzQW5pbWF0ZWRMZW5ndGhBdHRy
aWJ1dGUpOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5UmVnaXN0cnkuaDoK
KyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdWYWx1ZVByb3BlcnR5QW5pbWF0b3IuaDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpTVkdWYWx1ZVByb3BlcnR5QW5pbWF0b3I6OlNWR1ZhbHVl
UHJvcGVydHlBbmltYXRvcik6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHVmFsdWVQcm9w
ZXJ0eUFuaW1hdG9ySW1wbC5oOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdW
YWx1ZVByb3BlcnR5TGlzdEFuaW1hdG9yLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZH
VmFsdWVQcm9wZXJ0eUxpc3RBbmltYXRvcjo6U1ZHVmFsdWVQcm9wZXJ0eUxpc3RBbmltYXRvcik6
CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHVmFsdWVQcm9wZXJ0eUxpc3RBbmltYXRvcklt
cGwuaDogQWRkZWQuCisKIDIwMTktMDMtMjYgIE1pa2UgR29yc2UgIDxtZ29yc2VAYWx1bS53cGku
ZWR1PgogCiAgICAgICAgIEJ1aWxkIGZhaWx1cmUgd2l0aCBnc3RyZWFtZXIgMS4xMi41IGlmIFVT
RV9HU1RSRUFNRVJfR0wgaXMgZW5hYmxlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCA1ZTJkZjg4YWVlMzMx
ZWRmYzk2NWZmMzQ4ZjliOWMzODdmYWU3MjUyLi44ODcyYTMyYWM1NTBhYWE4ZDZmNWMzNTc4ZThm
NGViMTFkMDYxOGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMjI2Nyw4ICsyMjY3LDYgQEAgc3ZnL1NW
R0FuaW1hdGVFbGVtZW50LmNwcAogc3ZnL1NWR0FuaW1hdGVFbGVtZW50QmFzZS5jcHAKIHN2Zy9T
VkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHAKIHN2Zy9TVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVu
dC5jcHAKLXN2Zy9TVkdBbmltYXRlZExlbmd0aC5jcHAKLXN2Zy9TVkdBbmltYXRlZExlbmd0aExp
c3QuY3BwCiBzdmcvU1ZHQW5pbWF0ZWRQYXRoLmNwcAogc3ZnL1NWR0FuaW1hdGVkVHJhbnNmb3Jt
TGlzdC5jcHAKIHN2Zy9TVkdBbmltYXRlZFR5cGVBbmltYXRvci5jcHAKQEAgLTIzMzQsNyArMjMz
Miw2IEBAIHN2Zy9TVkdJbWFnZUxvYWRlci5jcHAKIHN2Zy9TVkdMYW5nU3BhY2UuY3BwCiBzdmcv
U1ZHTGVnYWN5QXR0cmlidXRlQW5pbWF0aW9uQ29udHJvbGxlci5jcHAKIHN2Zy9TVkdMZW5ndGhD
b250ZXh0LmNwcAotc3ZnL1NWR0xlbmd0aExpc3RWYWx1ZXMuY3BwCiBzdmcvU1ZHTGVuZ3RoVmFs
dWUuY3BwCiBzdmcvU1ZHTGluZUVsZW1lbnQuY3BwCiBzdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVt
ZW50LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IDYzMGFmM2E2YWVlZjRmNGVmMWU4YWE1ZmJjZjgzZjViNDJjMDA0OTMuLmJi
YzE4ODNkOTEzMWVjZTNmNDFhZTRhNDg1YWE4ZmZlMjEyMTRkYmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI3MSw4ICsyNzEs
NiBAQAogCQkwODhBMEUwQjEyNkVGMURCMDA5NzhGN0EgLyogU1ZHUHJvcGVydHlUZWFyT2ZmLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODhBMEUwMjEy
NkVGMURCMDA5NzhGN0EgLyogU1ZHUHJvcGVydHlUZWFyT2ZmLmggKi87IH07CiAJCTA4OEEwRTBD
MTI2RUYxREIwMDk3OEY3QSAvKiBTVkdQcm9wZXJ0eVRyYWl0cy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg4QTBFMDMxMjZFRjFEQjAwOTc4RjdBIC8q
IFNWR1Byb3BlcnR5VHJhaXRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJMDg4QzJGN0ExMjM5MDA4MTAwM0Q2NUNFIC8qIFNWR1RleHRMYXlvdXRB
dHRyaWJ1dGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwODhDMkY3NjEyMzkwMDgwMDAzRDY1Q0UgLyogU1ZHVGV4dExheW91dEF0dHJpYnV0ZXMuaCAq
LzsgfTsKLQkJMDg5MDIxQTkxMjZFRjVERTAwOTJENUVBIC8qIFNWR0FuaW1hdGVkTGVuZ3RoLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODkwMjFBODEy
NkVGNURFMDA5MkQ1RUEgLyogU1ZHQW5pbWF0ZWRMZW5ndGguaCAqLzsgfTsKLQkJMDg5MDIxQUQx
MjZFRjVFOTAwOTJENUVBIC8qIFNWR0FuaW1hdGVkTGVuZ3RoTGlzdC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg5MDIxQUMxMjZFRjVFOTAwOTJENUVB
IC8qIFNWR0FuaW1hdGVkTGVuZ3RoTGlzdC5oICovOyB9OwogCQkwODk1ODI1NjBFODU3QTdFMDBG
ODJDODMgLyogSW1hZ2VMb2FkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDA4OTU4MjU0MEU4NTdBN0UwMEY4MkM4MyAvKiBJbWFnZUxvYWRlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA4OUE4RTA3
MTI4RDhCM0QwMEU3QTUzNCAvKiBTVkdBbmltYXRlZFBhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2Zm
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODlBOEUw
NjEyOEQ4QjNEMDBFN0E1MzQgLyogU1ZHQW5pbWF0ZWRQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9m
Zi5oICovOyB9OwogCQkwOEE0ODQ3ODBFNTI3MkM1MDBDM0ZFNzYgLyogU2NyaXB0RWxlbWVudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhBNDg0NzYw
RTUyNzJDNTAwQzNGRTc2IC8qIFNjcmlwdEVsZW1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMjIyNiw3ICsyMjI0LDYgQEAKIAkJN0MzMEQ5
ODYxRjgxNUFFQzAwMjY4MzU2IC8qIEpTQWJvcnRTaWduYWwuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMzBEOTgxMUY4MTVBQzEwMDI2ODM1NiAvKiBK
U0Fib3J0U2lnbmFsLmggKi87IH07CiAJCTdDMzMwQTAyMURGOEZBQzYwMEQzMzk1QyAvKiBHcmFw
aGljc0NvbnRleHQzREF0dHJpYnV0ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdDMzMwQTAxMURGOEZBQzYwMEQzMzk1QyAvKiBHcmFwaGljc0NvbnRl
eHQzREF0dHJpYnV0ZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk3QzMzMEEwODFERjlGOTUxMDBEMzM5NUMgLyogSlNQb3NpdGlvbk9wdGlvbnMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMzMwQTA2
MURGOUY5NTEwMEQzMzk1QyAvKiBKU1Bvc2l0aW9uT3B0aW9ucy5oICovOyB9OwotCQk3QzM5QzM2
NTFEREE4NjUyMDBGRUZCMjkgLyogU1ZHTGVuZ3RoTGlzdFZhbHVlcy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MzOUMzNjMxRERBODY0OTAwRkVGQjI5
IC8qIFNWR0xlbmd0aExpc3RWYWx1ZXMuaCAqLzsgfTsKIAkJN0MzQTkxRTYxQzk2M0I4ODAwRDFB
N0UzIC8qIENsaXBib2FyZEFjY2Vzc1BvbGljeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gN0MzQTkxRTUxQzk2M0I4ODAwRDFBN0UzIC8qIENsaXBib2Fy
ZEFjY2Vzc1BvbGljeS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTdDM0I3OTcxMTkwODc1N0IwMEI0N0EyRCAvKiBVc2VyTWVzc2FnZUhhbmRsZXIu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MzQjc5
NkYxOTA4NzU3QjAwQjQ3QTJEIC8qIFVzZXJNZXNzYWdlSGFuZGxlci5jcHAgKi87IH07CiAJCTdD
M0I3OTcyMTkwODc1N0IwMEI0N0EyRCAvKiBVc2VyTWVzc2FnZUhhbmRsZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDM0I3OTcwMTkwODc1N0IwMEI0
N0EyRCAvKiBVc2VyTWVzc2FnZUhhbmRsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNTYzOSw4ICs1NjM2LDYgQEAKIAkJMDg4QTBFMDMxMjZF
RjFEQjAwOTc4RjdBIC8qIFNWR1Byb3BlcnR5VHJhaXRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNWR1Byb3BlcnR5VHJhaXRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTA4OEMyRjc1MTIzOTAwODAwMDNENjVDRSAvKiBTVkdUZXh0TGF5b3V0QXR0cmlidXRl
cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdUZXh0TGF5b3V0
QXR0cmlidXRlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4OEMyRjc2MTIz
OTAwODAwMDNENjVDRSAvKiBTVkdUZXh0TGF5b3V0QXR0cmlidXRlcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTVkdUZXh0TGF5b3V0QXR0cmlidXRlcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQkwODkwMjFBODEyNkVGNURFMDA5MkQ1RUEgLyogU1ZHQW5pbWF0
ZWRMZW5ndGguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHQW5pbWF0ZWRM
ZW5ndGguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMDg5MDIxQUMxMjZFRjVFOTAw
OTJENUVBIC8qIFNWR0FuaW1hdGVkTGVuZ3RoTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTVkdBbmltYXRlZExlbmd0aExpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMDg5NTgyNTMwRTg1N0E3RTAwRjgyQzgzIC8qIEltYWdlTG9hZGVyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdlTG9hZGVyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDg5NTgyNTQwRTg1N0E3RTAwRjgyQzgzIC8qIEltYWdl
TG9hZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlTG9hZGVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4OUE4RTA2MTI4RDhCM0QwMEU3QTUzNCAv
KiBTVkdBbmltYXRlZFBhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0FuaW1hdGVkUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc1NTcsNyArNzU1Miw2IEBACiAJCTQy
N0RBNzFCMTM3MzVERkEwMDdDNTdGQiAvKiBKU1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTZXJ2aWNlV29ya2VySW50ZXJu
YWxzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDI3REE3MUMxMzczNURGQTAw
N0M1N0ZCIC8qIEpTU2VydmljZVdvcmtlckludGVybmFscy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDMxMDdCRTExOENDMTlERTAwQ0MxOEU4IC8qIFNlbGVjdG9yUHNldWRv
VHlwZU1hcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZWxlY3RvclBzZXVk
b1R5cGVNYXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDMxQTJGRDYxM0I3NzA3
QTAwNzc5MUU0IC8qIFNWR0FuaW1hdGVkTGVuZ3RoTGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBTVkdBbmltYXRlZExlbmd0aExpc3QuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0MzJEM0ZFNzE4QTg2NTg0MDBEN0RDMDMgLyogU2VsZWN0b3JD
aGVja2VyVGVzdEZ1bmN0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
ZWxlY3RvckNoZWNrZXJUZXN0RnVuY3Rpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQzNThFODdBMTM2MEEyRUUwMEU0NzQ4QyAvKiBKU1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTVkdGRURyb3BTaGFk
b3dFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDM1OEU4N0IxMzYw
QTJFRTAwRTQ3NDhDIC8qIEpTU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc2MTksNyArNzYxMyw2IEBACiAJCTQzNjcwOEI5MTJEOUNB
NEIwMDA0NDIzNCAvKiBTVkdSZXNvdXJjZXNDYWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTVkdSZXNvdXJjZXNDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0MzY3MDhCQTEyRDlDQTRCMDAwNDQyMzQgLyogU1ZHUmVzb3VyY2VzQ3ljbGVTb2x2ZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHUmVzb3VyY2VzQ3lj
bGVTb2x2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MzY3MDhCQjEyRDlD
QTRCMDAwNDQyMzQgLyogU1ZHUmVzb3VyY2VzQ3ljbGVTb2x2ZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU1ZHUmVzb3VyY2VzQ3ljbGVTb2x2ZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJNDM4MTc2M0ExM0E2OTdENDAwN0QxMTg3IC8qIFNWR0FuaW1hdGVk
TGVuZ3RoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR0FuaW1h
dGVkTGVuZ3RoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDM5MDQ2QzMxMkRB
MjVFODAwQUY4MEEyIC8qIFJlbmRlck1hdGhNTEJsb2NrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlck1hdGhNTEJsb2NrLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDM5MDQ2QzQxMkRBMjVFODAwQUY4MEEyIC8qIFJlbmRlck1hdGhNTEJs
b2NrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlck1hdGhNTEJsb2Nr
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQzOTA0NkM1MTJEQTI1RTgwMEFGODBB
MiAvKiBSZW5kZXJNYXRoTUxGZW5jZWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUmVuZGVyTWF0aE1MRmVuY2VkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTk1MjMsNiArOTUxNiwxMCBAQAogCQk3MkYxQURBMTFBMzkwNEMzMDAwMTRFMTggLyog
RVhURnJhZ0RlcHRoLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBFWFRGcmFnRGVwdGguaWRs
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MkYxQURBMzFBMzkwQjlGMDAwMTRFMTgg
LyogSlNFWFRGcmFnRGVwdGguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNFWFRGcmFnRGVwdGguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MkYx
QURBNDFBMzkwQjlGMDAwMTRFMTggLyogSlNFWFRGcmFnRGVwdGguaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSlNFWFRGcmFnRGVwdGguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNzJGQjIzODQyMjQ5N0FENDAwN0U1QUM3IC8qIFNWR1ZhbHVlUHJvcGVydHlBbmlt
YXRvckltcGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHVmFsdWVQcm9w
ZXJ0eUFuaW1hdG9ySW1wbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MkZCMjM4
NjIyNDk3QUQ1MDA3RTVBQzcgLyogU1ZHVmFsdWVQcm9wZXJ0eUFuaW1hdG9yLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1ZhbHVlUHJvcGVydHlBbmltYXRvci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MkZCMjM4NzIyNDk3QjE1MDA3RTVBQzcgLyogU1ZH
VmFsdWVQcm9wZXJ0eUxpc3RBbmltYXRvckltcGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU1ZHVmFsdWVQcm9wZXJ0eUxpc3RBbmltYXRvckltcGwuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNzJGQjIzODgyMjQ5N0IxNTAwN0U1QUM3IC8qIFNWR1ZhbHVlUHJv
cGVydHlMaXN0QW5pbWF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZH
VmFsdWVQcm9wZXJ0eUxpc3RBbmltYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3NTUzQ0ZFNjEwOEY0NzNGMDBFQTI4MUUgLyogVGltZWxpbmVSZWNvcmRGYWN0b3J5LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRpbWVsaW5lUmVjb3JkRmFjdG9yeS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3NTUzQ0ZFNzEwOEY0NzNGMDBFQTI4MUUgLyog
VGltZWxpbmVSZWNvcmRGYWN0b3J5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFRpbWVsaW5lUmVjb3JkRmFjdG9yeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTc1NzkzRTgwMEQwQ0UwQjMwMDdGQzBBQyAvKiBNZXNzYWdlRXZlbnQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lc3NhZ2VFdmVudC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNjI1OSw3ICsxNjI1NiwxMSBAQAogCQkJCTA4OEEw
RTAyMTI2RUYxREIwMDk3OEY3QSAvKiBTVkdQcm9wZXJ0eVRlYXJPZmYuaCAqLywKIAkJCQkwODhB
MEUwMzEyNkVGMURCMDA5NzhGN0EgLyogU1ZHUHJvcGVydHlUcmFpdHMuaCAqLywKIAkJCQk3MjE0
NDM0NjIyNDBDQUQyMDBGMTJGRjcgLyogU1ZHVmFsdWVQcm9wZXJ0eS5oICovLAorCQkJCTcyRkIy
Mzg2MjI0OTdBRDUwMDdFNUFDNyAvKiBTVkdWYWx1ZVByb3BlcnR5QW5pbWF0b3IuaCAqLywKKwkJ
CQk3MkZCMjM4NDIyNDk3QUQ0MDA3RTVBQzcgLyogU1ZHVmFsdWVQcm9wZXJ0eUFuaW1hdG9ySW1w
bC5oICovLAogCQkJCTcyNjZGMDI1MjI0MzBGOEMwMDgzMzk3NSAvKiBTVkdWYWx1ZVByb3BlcnR5
TGlzdC5oICovLAorCQkJCTcyRkIyMzg4MjI0OTdCMTUwMDdFNUFDNyAvKiBTVkdWYWx1ZVByb3Bl
cnR5TGlzdEFuaW1hdG9yLmggKi8sCisJCQkJNzJGQjIzODcyMjQ5N0IxNTAwN0U1QUM3IC8qIFNW
R1ZhbHVlUHJvcGVydHlMaXN0QW5pbWF0b3JJbXBsLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IHBy
b3BlcnRpZXM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjQzMzgsOCArMjQzMzks
NiBAQAogCQkJCTcxMzQ0OTZDMTQ2OTQxQjMwMDcyMDMxMiAvKiBTVkdMZW5ndGhDb250ZXh0Lmgg
Ki8sCiAJCQkJQjIyMjc4QTAwRDAwQkYyMDAwNzFCNzgyIC8qIFNWR0xlbmd0aExpc3QuaCAqLywK
IAkJCQlCMjIyNzhBMTBEMDBCRjIwMDA3MUI3ODIgLyogU1ZHTGVuZ3RoTGlzdC5pZGwgKi8sCi0J
CQkJN0MzOUMzNjIxRERBODY0OTAwRkVGQjI5IC8qIFNWR0xlbmd0aExpc3RWYWx1ZXMuY3BwICov
LAotCQkJCTdDMzlDMzYzMUREQTg2NDkwMEZFRkIyOSAvKiBTVkdMZW5ndGhMaXN0VmFsdWVzLmgg
Ki8sCiAJCQkJN0NFNThENTIxREQ3QjA5MzAwMTI4NTUyIC8qIFNWR0xlbmd0aFZhbHVlLmNwcCAq
LywKIAkJCQk3Q0U1OEQ1MzFERDdCMDkzMDAxMjg1NTIgLyogU1ZHTGVuZ3RoVmFsdWUuaCAqLywK
IAkJCQlCMjIyNzhBMjBEMDBCRjIwMDA3MUI3ODIgLyogU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50
LmNwcCAqLywKQEAgLTMxOTg4LDcgKzMxOTg3LDYgQEAKIAkJCQk1NUQ3MEQyMzIyM0IwMTdDMDAw
NDRCOEUgLyogU1ZHTGVnYWN5QW5pbWF0ZWRQcm9wZXJ0eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NzEzNDQ5NkUxNDY5NDFCMzAwNzIwMzEyIC8qIFNWR0xlbmd0aENvbnRleHQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUIyMjI3QTM2MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdMZW5ndGhMaXN0LmggaW4g
SGVhZGVycyAqLywKLQkJCQk3QzM5QzM2NTFEREE4NjUyMDBGRUZCMjkgLyogU1ZHTGVuZ3RoTGlz
dFZhbHVlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NDRUJGQzAxREQ4RjZBQjAwMkM0MEI4IC8q
IFNWR0xlbmd0aFZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0EzOTBEMDBCRjIyMDA3
MUI3ODIgLyogU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlC
MjIyN0EzQzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHTGluZUVsZW1lbnQuaCBpbiBIZWFkZXJzICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0
QXR0cmlidXRlc0J1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdU
ZXh0TGF5b3V0QXR0cmlidXRlc0J1aWxkZXIuY3BwCmluZGV4IDhhNTcxODVkZmU2MWY0ZWI4NTgy
MWRjNTBlMGM5MjUwYzUxNWJjZmIuLjg0ZjA0MjcyMTE5NmE2ODNjNWI1NzE4NzlhMjYwOGYyODI5
MGVlODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dExh
eW91dEF0dHJpYnV0ZXNCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1NWR1RleHRMYXlvdXRBdHRyaWJ1dGVzQnVpbGRlci5jcHAKQEAgLTE2MCwxNiArMTYwLDE2
IEBAIHZvaWQgU1ZHVGV4dExheW91dEF0dHJpYnV0ZXNCdWlsZGVyOjpidWlsZENoYXJhY3RlckRh
dGFNYXAoUmVuZGVyU1ZHVGV4dCYgdGV4dFJvCiAgICAgICAgIGZpbGxDaGFyYWN0ZXJEYXRhTWFw
KG1fdGV4dFBvc2l0aW9uc1tpXSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCB1cGRhdGVDaGFy
YWN0ZXJEYXRhKHVuc2lnbmVkIGksIGZsb2F0JiBsYXN0Um90YXRpb24sIFNWR0NoYXJhY3RlckRh
dGEmIGRhdGEsIGNvbnN0IFNWR0xlbmd0aENvbnRleHQmIGxlbmd0aENvbnRleHQsIGNvbnN0IFNW
R0xlbmd0aExpc3RWYWx1ZXMqIHhMaXN0LCBjb25zdCBTVkdMZW5ndGhMaXN0VmFsdWVzKiB5TGlz
dCwgY29uc3QgU1ZHTGVuZ3RoTGlzdFZhbHVlcyogZHhMaXN0LCBjb25zdCBTVkdMZW5ndGhMaXN0
VmFsdWVzKiBkeUxpc3QsIGNvbnN0IFNWR051bWJlckxpc3QqIHJvdGF0ZUxpc3QpCitzdGF0aWMg
aW5saW5lIHZvaWQgdXBkYXRlQ2hhcmFjdGVyRGF0YSh1bnNpZ25lZCBpLCBmbG9hdCYgbGFzdFJv
dGF0aW9uLCBTVkdDaGFyYWN0ZXJEYXRhJiBkYXRhLCBjb25zdCBTVkdMZW5ndGhDb250ZXh0JiBs
ZW5ndGhDb250ZXh0LCBjb25zdCBTVkdMZW5ndGhMaXN0KiB4TGlzdCwgY29uc3QgU1ZHTGVuZ3Ro
TGlzdCogeUxpc3QsIGNvbnN0IFNWR0xlbmd0aExpc3QqIGR4TGlzdCwgY29uc3QgU1ZHTGVuZ3Ro
TGlzdCogZHlMaXN0LCBjb25zdCBTVkdOdW1iZXJMaXN0KiByb3RhdGVMaXN0KQogewogICAgIGlm
ICh4TGlzdCkKLSAgICAgICAgZGF0YS54ID0geExpc3QtPmF0KGkpLnZhbHVlKGxlbmd0aENvbnRl
eHQpOworICAgICAgICBkYXRhLnggPSB4TGlzdC0+aXRlbXMoKVtpXS0+dmFsdWUoKS52YWx1ZShs
ZW5ndGhDb250ZXh0KTsKICAgICBpZiAoeUxpc3QpCi0gICAgICAgIGRhdGEueSA9IHlMaXN0LT5h
dChpKS52YWx1ZShsZW5ndGhDb250ZXh0KTsKKyAgICAgICAgZGF0YS55ID0geUxpc3QtPml0ZW1z
KClbaV0tPnZhbHVlKCkudmFsdWUobGVuZ3RoQ29udGV4dCk7CiAgICAgaWYgKGR4TGlzdCkKLSAg
ICAgICAgZGF0YS5keCA9IGR4TGlzdC0+YXQoaSkudmFsdWUobGVuZ3RoQ29udGV4dCk7CisgICAg
ICAgIGRhdGEuZHggPSBkeExpc3QtPml0ZW1zKClbaV0tPnZhbHVlKCkudmFsdWUobGVuZ3RoQ29u
dGV4dCk7CiAgICAgaWYgKGR5TGlzdCkKLSAgICAgICAgZGF0YS5keSA9IGR5TGlzdC0+YXQoaSku
dmFsdWUobGVuZ3RoQ29udGV4dCk7CisgICAgICAgIGRhdGEuZHkgPSBkeUxpc3QtPml0ZW1zKClb
aV0tPnZhbHVlKCkudmFsdWUobGVuZ3RoQ29udGV4dCk7CiAgICAgaWYgKHJvdGF0ZUxpc3QpIHsK
ICAgICAgICAgZGF0YS5yb3RhdGUgPSByb3RhdGVMaXN0LT5pdGVtcygpW2ldLT52YWx1ZSgpOwog
ICAgICAgICBsYXN0Um90YXRpb24gPSBkYXRhLnJvdGF0ZTsKQEAgLTE5NSwxMCArMTk1LDEwIEBA
IHZvaWQgU1ZHVGV4dExheW91dEF0dHJpYnV0ZXNCdWlsZGVyOjpmaWxsQ2hhcmFjdGVyRGF0YU1h
cChjb25zdCBUZXh0UG9zaXRpb24mIHBvCiAgICAgZmxvYXQgbGFzdFJvdGF0aW9uID0gU1ZHVGV4
dExheW91dEF0dHJpYnV0ZXM6OmVtcHR5VmFsdWUoKTsKICAgICBTVkdMZW5ndGhDb250ZXh0IGxl
bmd0aENvbnRleHQocG9zaXRpb24uZWxlbWVudCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IHBvc2l0aW9uLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgIGNvbnN0IFNWR0xlbmd0aExpc3RW
YWx1ZXMqIHhMaXN0UHRyID0gaSA8IHhMaXN0U2l6ZSA/ICZ4TGlzdCA6IDA7Ci0gICAgICAgIGNv
bnN0IFNWR0xlbmd0aExpc3RWYWx1ZXMqIHlMaXN0UHRyID0gaSA8IHlMaXN0U2l6ZSA/ICZ5TGlz
dCA6IDA7Ci0gICAgICAgIGNvbnN0IFNWR0xlbmd0aExpc3RWYWx1ZXMqIGR4TGlzdFB0ciA9IGkg
PCBkeExpc3RTaXplID8gJmR4TGlzdCA6IDA7Ci0gICAgICAgIGNvbnN0IFNWR0xlbmd0aExpc3RW
YWx1ZXMqIGR5TGlzdFB0ciA9IGkgPCBkeUxpc3RTaXplID8gJmR5TGlzdCA6IDA7CisgICAgICAg
IGNvbnN0IFNWR0xlbmd0aExpc3QqIHhMaXN0UHRyID0gaSA8IHhMaXN0U2l6ZSA/ICZ4TGlzdCA6
IG51bGxwdHI7CisgICAgICAgIGNvbnN0IFNWR0xlbmd0aExpc3QqIHlMaXN0UHRyID0gaSA8IHlM
aXN0U2l6ZSA/ICZ5TGlzdCA6IG51bGxwdHI7CisgICAgICAgIGNvbnN0IFNWR0xlbmd0aExpc3Qq
IGR4TGlzdFB0ciA9IGkgPCBkeExpc3RTaXplID8gJmR4TGlzdCA6IG51bGxwdHI7CisgICAgICAg
IGNvbnN0IFNWR0xlbmd0aExpc3QqIGR5TGlzdFB0ciA9IGkgPCBkeUxpc3RTaXplID8gJmR5TGlz
dCA6IG51bGxwdHI7CiAgICAgICAgIGNvbnN0IFNWR051bWJlckxpc3QqIHJvdGF0ZUxpc3RQdHIg
PSBpIDwgcm90YXRlTGlzdFNpemUgPyAmcm90YXRlTGlzdCA6IG51bGxwdHI7CiAgICAgICAgIGlm
ICgheExpc3RQdHIgJiYgIXlMaXN0UHRyICYmICFkeExpc3RQdHIgJiYgIWR5TGlzdFB0ciAmJiAh
cm90YXRlTGlzdFB0cikKICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmNwcAppbmRleCAwNGQzNWEwZDc4ZjI5YzhjNWVlYzc2MzZh
NjllZDQ3NjY3NDc3NDc1Li44MzRhOTI5MjJhOGVkNWRjNmZhMjhhMDE5YmZjM2NlY2ZhY2MzYTFk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmNwcApAQCAt
MjUsNiArMjUsNyBAQAogI2luY2x1ZGUgIlNWR0FuaW1hdGVFbGVtZW50QmFzZS5oIgogCiAjaW5j
bHVkZSAiUXVhbGlmaWVkTmFtZS5oIgorI2luY2x1ZGUgIlNWR0FuaW1hdG9yRmFjdG9yeS5oIgog
I2luY2x1ZGUgIlNWR0F0dHJpYnV0ZUFuaW1hdGlvbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJT
VkdFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHTGVnYWN5QXR0cmlidXRlQW5pbWF0aW9uQ29udHJv
bGxlci5oIgpAQCAtNjMsNyArNjQsNyBAQCBib29sIFNWR0FuaW1hdGVFbGVtZW50QmFzZTo6aGFz
VmFsaWRBdHRyaWJ1dGVUeXBlKCkgY29uc3QKICAgICBpZiAoIXRhcmdldEVsZW1lbnQoKSB8fCBo
YXNJbnZhbGlkQ1NTQXR0cmlidXRlVHlwZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICBpZiAoZGV0ZXJtaW5lQW5pbWF0ZWRQcm9wZXJ0eVR5cGUoKnRhcmdldEVsZW1lbnQoKSkgIT0g
QW5pbWF0ZWRVbmtub3duKQorICAgIGlmIChTVkdBbmltYXRvckZhY3Rvcnk6OmlzU3VwcG9ydGVk
QXR0cmlidXRlVHlwZShkZXRlcm1pbmVBbmltYXRlZFByb3BlcnR5VHlwZSgqdGFyZ2V0RWxlbWVu
dCgpKSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgcmV0dXJuIHRhcmdldEVsZW1lbnQo
KS0+aXNBbmltYXRlZEF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdBbmltYXRlZExlbmd0aC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU4
ZjEwMDMzMjlmNDkyNTIzOWFkZTc3ZGUxOWFiNzIzOTlmZjMyOTUuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1h
dGVkTGVuZ3RoLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDExNiArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDExLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdy
aXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNWR0FuaW1hdGVkTGVuZ3RoLmgi
Ci0KLSNpbmNsdWRlICJTVkdBbmltYXRlRWxlbWVudEJhc2UuaCIKLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1TVkdBbmltYXRlZExlbmd0aEFuaW1hdG9yOjpTVkdBbmltYXRlZExlbmd0aEFuaW1h
dG9yKFNWR0FuaW1hdGlvbkVsZW1lbnQqIGFuaW1hdGlvbkVsZW1lbnQsIFNWR0VsZW1lbnQqIGNv
bnRleHRFbGVtZW50KQotICAgIDogU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IoQW5pbWF0ZWRMZW5n
dGgsIGFuaW1hdGlvbkVsZW1lbnQsIGNvbnRleHRFbGVtZW50KQotICAgICwgbV9sZW5ndGhNb2Rl
KFNWR0xlbmd0aFZhbHVlOjpsZW5ndGhNb2RlRm9yQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUoYW5p
bWF0aW9uRWxlbWVudC0+YXR0cmlidXRlTmFtZSgpKSkKLXsKLX0KLQotc3RkOjp1bmlxdWVfcHRy
PFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRMZW5ndGhBbmltYXRvcjo6Y29uc3RydWN0RnJv
bVN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZykKLXsKLSAgICByZXR1cm4gU1ZHQW5pbWF0ZWRU
eXBlOjpjcmVhdGUoU1ZHTGVuZ3RoVmFsdWUobV9sZW5ndGhNb2RlLCBzdHJpbmcpKTsKLX0KLQot
c3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRMZW5ndGhBbmltYXRv
cjo6c3RhcnRBbmltVmFsQW5pbWF0aW9uKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5
TGlzdCYgYW5pbWF0ZWRUeXBlcykKLXsKLSAgICByZXR1cm4gY29uc3RydWN0RnJvbUJhc2VWYWx1
ZTxTVkdBbmltYXRlZExlbmd0aD4oYW5pbWF0ZWRUeXBlcyk7Ci19Ci0KLXZvaWQgU1ZHQW5pbWF0
ZWRMZW5ndGhBbmltYXRvcjo6c3RvcEFuaW1WYWxBbmltYXRpb24oY29uc3QgU1ZHRWxlbWVudEFu
aW1hdGVkUHJvcGVydHlMaXN0JiBhbmltYXRlZFR5cGVzKQotewotICAgIHN0b3BBbmltVmFsQW5p
bWF0aW9uRm9yVHlwZTxTVkdBbmltYXRlZExlbmd0aD4oYW5pbWF0ZWRUeXBlcyk7Ci19Ci0KLXZv
aWQgU1ZHQW5pbWF0ZWRMZW5ndGhBbmltYXRvcjo6cmVzZXRBbmltVmFsVG9CYXNlVmFsKGNvbnN0
IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYgYW5pbWF0ZWRUeXBlcywgU1ZHQW5pbWF0
ZWRUeXBlJiB0eXBlKQotewotICAgIHJlc2V0RnJvbUJhc2VWYWx1ZTxTVkdBbmltYXRlZExlbmd0
aD4oYW5pbWF0ZWRUeXBlcywgdHlwZSk7Ci19Ci0KLXZvaWQgU1ZHQW5pbWF0ZWRMZW5ndGhBbmlt
YXRvcjo6YW5pbVZhbFdpbGxDaGFuZ2UoY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlM
aXN0JiBhbmltYXRlZFR5cGVzKQotewotICAgIGFuaW1WYWxXaWxsQ2hhbmdlRm9yVHlwZTxTVkdB
bmltYXRlZExlbmd0aD4oYW5pbWF0ZWRUeXBlcyk7Ci19Ci0KLXZvaWQgU1ZHQW5pbWF0ZWRMZW5n
dGhBbmltYXRvcjo6YW5pbVZhbERpZENoYW5nZShjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9w
ZXJ0eUxpc3QmIGFuaW1hdGVkVHlwZXMpCi17Ci0gICAgYW5pbVZhbERpZENoYW5nZUZvclR5cGU8
U1ZHQW5pbWF0ZWRMZW5ndGg+KGFuaW1hdGVkVHlwZXMpOwotfQotCi12b2lkIFNWR0FuaW1hdGVk
TGVuZ3RoQW5pbWF0b3I6OmFkZEFuaW1hdGVkVHlwZXMoU1ZHQW5pbWF0ZWRUeXBlKiBmcm9tLCBT
VkdBbmltYXRlZFR5cGUqIHRvKQotewotICAgIEFTU0VSVChmcm9tLT50eXBlKCkgPT0gQW5pbWF0
ZWRMZW5ndGgpOwotICAgIEFTU0VSVChmcm9tLT50eXBlKCkgPT0gdG8tPnR5cGUoKSk7Ci0KLSAg
ICBTVkdMZW5ndGhDb250ZXh0IGxlbmd0aENvbnRleHQobV9jb250ZXh0RWxlbWVudCk7Ci0gICAg
Y29uc3QgYXV0byYgZnJvbUxlbmd0aCA9IGZyb20tPmFzPFNWR0xlbmd0aFZhbHVlPigpOwotICAg
IGF1dG8mIHRvTGVuZ3RoID0gdG8tPmFzPFNWR0xlbmd0aFZhbHVlPigpOwotCi0gICAgdG9MZW5n
dGguc2V0VmFsdWUodG9MZW5ndGgudmFsdWUobGVuZ3RoQ29udGV4dCkgKyBmcm9tTGVuZ3RoLnZh
bHVlKGxlbmd0aENvbnRleHQpLCBsZW5ndGhDb250ZXh0KTsKLX0KLQotc3RhdGljIFNWR0xlbmd0
aFZhbHVlIHBhcnNlTGVuZ3RoRnJvbVN0cmluZyhTVkdBbmltYXRpb25FbGVtZW50KiBhbmltYXRp
b25FbGVtZW50LCBjb25zdCBTdHJpbmcmIHN0cmluZykKLXsKLSAgICBTVkdMZW5ndGhWYWx1ZSBs
ZW5ndGg7Ci0gICAgbGVuZ3RoLnNldFZhbHVlQXNTdHJpbmcoc3RyaW5nLCBTVkdMZW5ndGhWYWx1
ZTo6bGVuZ3RoTW9kZUZvckFuaW1hdGVkTGVuZ3RoQXR0cmlidXRlKGFuaW1hdGlvbkVsZW1lbnQt
PmF0dHJpYnV0ZU5hbWUoKSkpOwotICAgIHJldHVybiBsZW5ndGg7Ci19Ci0KLXZvaWQgU1ZHQW5p
bWF0ZWRMZW5ndGhBbmltYXRvcjo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW50
YWdlLCB1bnNpZ25lZCByZXBlYXRDb3VudCwgU1ZHQW5pbWF0ZWRUeXBlKiBmcm9tLCBTVkdBbmlt
YXRlZFR5cGUqIHRvLCBTVkdBbmltYXRlZFR5cGUqIHRvQXRFbmRPZkR1cmF0aW9uLCBTVkdBbmlt
YXRlZFR5cGUqIGFuaW1hdGVkKQotewotICAgIEFTU0VSVChtX2FuaW1hdGlvbkVsZW1lbnQpOwot
ICAgIEFTU0VSVChtX2NvbnRleHRFbGVtZW50KTsKLQotICAgIGF1dG8gZnJvbVNWR0xlbmd0aCA9
IChtX2FuaW1hdGlvbkVsZW1lbnQtPmFuaW1hdGlvbk1vZGUoKSA9PSBBbmltYXRpb25Nb2RlOjpU
byA/IGFuaW1hdGVkIDogZnJvbSktPmFzPFNWR0xlbmd0aFZhbHVlPigpOwotICAgIGF1dG8gdG9T
VkdMZW5ndGggPSB0by0+YXM8U1ZHTGVuZ3RoVmFsdWU+KCk7Ci0gICAgY29uc3QgYXV0byYgdG9B
dEVuZE9mRHVyYXRpb25TVkdMZW5ndGggPSB0b0F0RW5kT2ZEdXJhdGlvbi0+YXM8U1ZHTGVuZ3Ro
VmFsdWU+KCk7Ci0gICAgYXV0byYgYW5pbWF0ZWRTVkdMZW5ndGggPSBhbmltYXRlZC0+YXM8U1ZH
TGVuZ3RoVmFsdWU+KCk7Ci0KLSAgICAvLyBBcHBseSBDU1MgaW5oZXJpdGFuY2UgcnVsZXMuCi0g
ICAgbV9hbmltYXRpb25FbGVtZW50LT5hZGp1c3RGb3JJbmhlcml0YW5jZTxTVkdMZW5ndGhWYWx1
ZT4ocGFyc2VMZW5ndGhGcm9tU3RyaW5nLCBtX2FuaW1hdGlvbkVsZW1lbnQtPmZyb21Qcm9wZXJ0
eVZhbHVlVHlwZSgpLCBmcm9tU1ZHTGVuZ3RoLCBtX2NvbnRleHRFbGVtZW50KTsKLSAgICBtX2Fu
aW1hdGlvbkVsZW1lbnQtPmFkanVzdEZvckluaGVyaXRhbmNlPFNWR0xlbmd0aFZhbHVlPihwYXJz
ZUxlbmd0aEZyb21TdHJpbmcsIG1fYW5pbWF0aW9uRWxlbWVudC0+dG9Qcm9wZXJ0eVZhbHVlVHlw
ZSgpLCB0b1NWR0xlbmd0aCwgbV9jb250ZXh0RWxlbWVudCk7Ci0KLSAgICBTVkdMZW5ndGhDb250
ZXh0IGxlbmd0aENvbnRleHQobV9jb250ZXh0RWxlbWVudCk7Ci0gICAgZmxvYXQgYW5pbWF0ZWRO
dW1iZXIgPSBhbmltYXRlZFNWR0xlbmd0aC52YWx1ZShsZW5ndGhDb250ZXh0KTsKLSAgICBTVkdM
ZW5ndGhUeXBlIHVuaXRUeXBlID0gcGVyY2VudGFnZSA8IDAuNSA/IGZyb21TVkdMZW5ndGgudW5p
dFR5cGUoKSA6IHRvU1ZHTGVuZ3RoLnVuaXRUeXBlKCk7Ci0gICAgbV9hbmltYXRpb25FbGVtZW50
LT5hbmltYXRlQWRkaXRpdmVOdW1iZXIocGVyY2VudGFnZSwgcmVwZWF0Q291bnQsIGZyb21TVkdM
ZW5ndGgudmFsdWUobGVuZ3RoQ29udGV4dCksIHRvU1ZHTGVuZ3RoLnZhbHVlKGxlbmd0aENvbnRl
eHQpLCB0b0F0RW5kT2ZEdXJhdGlvblNWR0xlbmd0aC52YWx1ZShsZW5ndGhDb250ZXh0KSwgYW5p
bWF0ZWROdW1iZXIpOwotCi0gICAgYW5pbWF0ZWRTVkdMZW5ndGguc2V0VmFsdWUobGVuZ3RoQ29u
dGV4dCwgYW5pbWF0ZWROdW1iZXIsIG1fbGVuZ3RoTW9kZSwgdW5pdFR5cGUpOwotfQotCi1mbG9h
dCBTVkdBbmltYXRlZExlbmd0aEFuaW1hdG9yOjpjYWxjdWxhdGVEaXN0YW5jZShjb25zdCBTdHJp
bmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpCi17Ci0gICAgQVNTRVJUKG1f
YW5pbWF0aW9uRWxlbWVudCk7Ci0gICAgQVNTRVJUKG1fY29udGV4dEVsZW1lbnQpOwotICAgIGF1
dG8gbGVuZ3RoTW9kZSA9IFNWR0xlbmd0aFZhbHVlOjpsZW5ndGhNb2RlRm9yQW5pbWF0ZWRMZW5n
dGhBdHRyaWJ1dGUobV9hbmltYXRpb25FbGVtZW50LT5hdHRyaWJ1dGVOYW1lKCkpOwotICAgIGF1
dG8gZnJvbSA9IFNWR0xlbmd0aFZhbHVlKGxlbmd0aE1vZGUsIGZyb21TdHJpbmcpOwotICAgIGF1
dG8gdG8gPSBTVkdMZW5ndGhWYWx1ZShsZW5ndGhNb2RlLCB0b1N0cmluZyk7Ci0gICAgU1ZHTGVu
Z3RoQ29udGV4dCBsZW5ndGhDb250ZXh0KG1fY29udGV4dEVsZW1lbnQpOwotICAgIHJldHVybiBm
YWJzZih0by52YWx1ZShsZW5ndGhDb250ZXh0KSAtIGZyb20udmFsdWUobGVuZ3RoQ29udGV4dCkp
OwotfQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRMZW5n
dGguaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZExlbmd0aC5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAxMDA0ZWM1ZDlkNmM2Zjg5ZDUzMGZjNmNjZGQyZjQzMmIyYjNl
NGNlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZExlbmd0aC5oCisrKyAvZGV2L251bGwKQEAgLTEsNTcg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQg
MjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICog
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJ
TkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiU1ZHQW5p
bWF0ZWRQcm9wZXJ0eVRlYXJPZmYuaCIKLSNpbmNsdWRlICJTVkdBbmltYXRlZFR5cGVBbmltYXRv
ci5oIgotI2luY2x1ZGUgIlNWR0F0dHJpYnV0ZUFjY2Vzc29yLmgiCi0jaW5jbHVkZSAiU1ZHTGVu
Z3RoLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgU1ZHQW5pbWF0aW9uRWxlbWVu
dDsKLQotdXNpbmcgU1ZHQW5pbWF0ZWRMZW5ndGggPSBTVkdBbmltYXRlZFByb3BlcnR5VGVhck9m
ZjxTVkdMZW5ndGg+OwotdXNpbmcgU1ZHQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUgPSBTVkdBbmlt
YXRlZEF0dHJpYnV0ZTxTVkdBbmltYXRlZExlbmd0aD47Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIE93
bmVyVHlwZT4KLXVzaW5nIFNWR0FuaW1hdGVkTGVuZ3RoQXR0cmlidXRlQWNjZXNzb3IgPSBTVkdB
bmltYXRlZEF0dHJpYnV0ZUFjY2Vzc29yPE93bmVyVHlwZSwgU1ZHQW5pbWF0ZWRMZW5ndGhBdHRy
aWJ1dGUsIEFuaW1hdGVkTGVuZ3RoPjsKLQotY2xhc3MgU1ZHQW5pbWF0ZWRMZW5ndGhBbmltYXRv
ciBmaW5hbCA6IHB1YmxpYyBTVkdBbmltYXRlZFR5cGVBbmltYXRvciB7Ci1wdWJsaWM6Ci0gICAg
U1ZHQW5pbWF0ZWRMZW5ndGhBbmltYXRvcihTVkdBbmltYXRpb25FbGVtZW50KiwgU1ZHRWxlbWVu
dCopOwotCi0gICAgc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gY29uc3RydWN0RnJv
bVN0cmluZyhjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8U1ZH
QW5pbWF0ZWRUeXBlPiBzdGFydEFuaW1WYWxBbmltYXRpb24oY29uc3QgU1ZHRWxlbWVudEFuaW1h
dGVkUHJvcGVydHlMaXN0Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzdG9wQW5pbVZhbEFuaW1hdGlv
bihjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKSBvdmVycmlkZTsKLSAgICB2
b2lkIHJlc2V0QW5pbVZhbFRvQmFzZVZhbChjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0
eUxpc3QmLCBTVkdBbmltYXRlZFR5cGUmKSBvdmVycmlkZTsKLSAgICB2b2lkIGFuaW1WYWxXaWxs
Q2hhbmdlKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYpIG92ZXJyaWRlOwot
ICAgIHZvaWQgYW5pbVZhbERpZENoYW5nZShjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0
eUxpc3QmKSBvdmVycmlkZTsKLQotICAgIHZvaWQgYWRkQW5pbWF0ZWRUeXBlcyhTVkdBbmltYXRl
ZFR5cGUqLCBTVkdBbmltYXRlZFR5cGUqKSBvdmVycmlkZTsKLSAgICB2b2lkIGNhbGN1bGF0ZUFu
aW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQgcmVwZWF0Q291bnQsIFNWR0Fu
aW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlwZSosIFNWR0FuaW1h
dGVkVHlwZSopIG92ZXJyaWRlOwotICAgIGZsb2F0IGNhbGN1bGF0ZURpc3RhbmNlKGNvbnN0IFN0
cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZykgb3ZlcnJpZGU7Ci0KLXBy
aXZhdGU6Ci0gICAgU1ZHTGVuZ3RoTW9kZSBtX2xlbmd0aE1vZGU7Ci19OwotCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRM
ZW5ndGhMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZExlbmd0aExpc3Qu
Y3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYTdkZGZmMjM2Mzk2NzZhMjE1NGRi
MTE2YmQ2ZTAyYTc3YTNlZDA2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZExlbmd0aExpc3QuY3BwCisr
KyAvZGV2L251bGwKQEAgLTEsMTMxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIFJlc2Vh
cmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTEuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
LSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0
aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlICJTVkdBbmltYXRlZExlbmd0aExpc3QuaCIKLQotI2luY2x1
ZGUgIlNWR0FuaW1hdGVFbGVtZW50QmFzZS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVNW
R0FuaW1hdGVkTGVuZ3RoTGlzdEFuaW1hdG9yOjpTVkdBbmltYXRlZExlbmd0aExpc3RBbmltYXRv
cihTVkdBbmltYXRpb25FbGVtZW50KiBhbmltYXRpb25FbGVtZW50LCBTVkdFbGVtZW50KiBjb250
ZXh0RWxlbWVudCkKLSAgICA6IFNWR0FuaW1hdGVkVHlwZUFuaW1hdG9yKEFuaW1hdGVkTGVuZ3Ro
TGlzdCwgYW5pbWF0aW9uRWxlbWVudCwgY29udGV4dEVsZW1lbnQpCi0gICAgLCBtX2xlbmd0aE1v
ZGUoU1ZHTGVuZ3RoVmFsdWU6Omxlbmd0aE1vZGVGb3JBbmltYXRlZExlbmd0aEF0dHJpYnV0ZShh
bmltYXRpb25FbGVtZW50LT5hdHRyaWJ1dGVOYW1lKCkpKQotewotfQotCi1zdGQ6OnVuaXF1ZV9w
dHI8U1ZHQW5pbWF0ZWRUeXBlPiBTVkdBbmltYXRlZExlbmd0aExpc3RBbmltYXRvcjo6Y29uc3Ry
dWN0RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZykKLXsKLSAgICByZXR1cm4gU1ZHQW5p
bWF0ZWRUeXBlOjpjcmVhdGUoU1ZHUHJvcGVydHlUcmFpdHM8U1ZHTGVuZ3RoTGlzdFZhbHVlcz46
OmZyb21TdHJpbmcoc3RyaW5nLCBtX2xlbmd0aE1vZGUpKTsKLX0KLQotc3RkOjp1bmlxdWVfcHRy
PFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0QW5pbWF0b3I6OnN0YXJ0QW5p
bVZhbEFuaW1hdGlvbihjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmIGFuaW1h
dGVkVHlwZXMpCi17Ci0gICAgcmV0dXJuIGNvbnN0cnVjdEZyb21CYXNlVmFsdWU8U1ZHQW5pbWF0
ZWRMZW5ndGhMaXN0PihhbmltYXRlZFR5cGVzKTsKLX0KLQotdm9pZCBTVkdBbmltYXRlZExlbmd0
aExpc3RBbmltYXRvcjo6c3RvcEFuaW1WYWxBbmltYXRpb24oY29uc3QgU1ZHRWxlbWVudEFuaW1h
dGVkUHJvcGVydHlMaXN0JiBhbmltYXRlZFR5cGVzKQotewotICAgIHN0b3BBbmltVmFsQW5pbWF0
aW9uRm9yVHlwZTxTVkdBbmltYXRlZExlbmd0aExpc3Q+KGFuaW1hdGVkVHlwZXMpOwotfQotCi12
b2lkIFNWR0FuaW1hdGVkTGVuZ3RoTGlzdEFuaW1hdG9yOjpyZXNldEFuaW1WYWxUb0Jhc2VWYWwo
Y29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0JiBhbmltYXRlZFR5cGVzLCBTVkdB
bmltYXRlZFR5cGUmIHR5cGUpCi17Ci0gICAgcmVzZXRGcm9tQmFzZVZhbHVlPFNWR0FuaW1hdGVk
TGVuZ3RoTGlzdD4oYW5pbWF0ZWRUeXBlcywgdHlwZSk7Ci19Ci0KLXZvaWQgU1ZHQW5pbWF0ZWRM
ZW5ndGhMaXN0QW5pbWF0b3I6OmFuaW1WYWxXaWxsQ2hhbmdlKGNvbnN0IFNWR0VsZW1lbnRBbmlt
YXRlZFByb3BlcnR5TGlzdCYgYW5pbWF0ZWRUeXBlcykKLXsKLSAgICBhbmltVmFsV2lsbENoYW5n
ZUZvclR5cGU8U1ZHQW5pbWF0ZWRMZW5ndGhMaXN0PihhbmltYXRlZFR5cGVzKTsKLX0KLQotdm9p
ZCBTVkdBbmltYXRlZExlbmd0aExpc3RBbmltYXRvcjo6YW5pbVZhbERpZENoYW5nZShjb25zdCBT
VkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmIGFuaW1hdGVkVHlwZXMpCi17Ci0gICAgYW5p
bVZhbERpZENoYW5nZUZvclR5cGU8U1ZHQW5pbWF0ZWRMZW5ndGhMaXN0PihhbmltYXRlZFR5cGVz
KTsKLX0KLQotdm9pZCBTVkdBbmltYXRlZExlbmd0aExpc3RBbmltYXRvcjo6YWRkQW5pbWF0ZWRU
eXBlcyhTVkdBbmltYXRlZFR5cGUqIGZyb20sIFNWR0FuaW1hdGVkVHlwZSogdG8pCi17Ci0gICAg
QVNTRVJUKGZyb20tPnR5cGUoKSA9PSBBbmltYXRlZExlbmd0aExpc3QpOwotICAgIEFTU0VSVChm
cm9tLT50eXBlKCkgPT0gdG8tPnR5cGUoKSk7Ci0KLSAgICBjb25zdCBhdXRvJiBmcm9tTGVuZ3Ro
TGlzdCA9IGZyb20tPmFzPFNWR0xlbmd0aExpc3RWYWx1ZXM+KCk7Ci0gICAgYXV0byYgdG9MZW5n
dGhMaXN0ID0gdG8tPmFzPFNWR0xlbmd0aExpc3RWYWx1ZXM+KCk7Ci0KLSAgICB1bnNpZ25lZCBm
cm9tTGVuZ3RoTGlzdFNpemUgPSBmcm9tTGVuZ3RoTGlzdC5zaXplKCk7Ci0gICAgaWYgKCFmcm9t
TGVuZ3RoTGlzdFNpemUgfHwgZnJvbUxlbmd0aExpc3RTaXplICE9IHRvTGVuZ3RoTGlzdC5zaXpl
KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIFNWR0xlbmd0aENvbnRleHQgbGVuZ3RoQ29udGV4
dChtX2NvbnRleHRFbGVtZW50KTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZnJvbUxl
bmd0aExpc3RTaXplOyArK2kpCi0gICAgICAgIHRvTGVuZ3RoTGlzdFtpXS5zZXRWYWx1ZSh0b0xl
bmd0aExpc3RbaV0udmFsdWUobGVuZ3RoQ29udGV4dCkgKyBmcm9tTGVuZ3RoTGlzdFtpXS52YWx1
ZShsZW5ndGhDb250ZXh0KSwgbGVuZ3RoQ29udGV4dCk7Ci19Ci0KLXN0YXRpYyBTVkdMZW5ndGhM
aXN0VmFsdWVzIHBhcnNlTGVuZ3RoTGlzdEZyb21TdHJpbmcoU1ZHQW5pbWF0aW9uRWxlbWVudCog
YW5pbWF0aW9uRWxlbWVudCwgY29uc3QgU3RyaW5nJiBzdHJpbmcpCi17Ci0gICAgU1ZHTGVuZ3Ro
TGlzdFZhbHVlcyBsZW5ndGhMaXN0OwotICAgIGxlbmd0aExpc3QucGFyc2Uoc3RyaW5nLCBTVkdM
ZW5ndGhWYWx1ZTo6bGVuZ3RoTW9kZUZvckFuaW1hdGVkTGVuZ3RoQXR0cmlidXRlKGFuaW1hdGlv
bkVsZW1lbnQtPmF0dHJpYnV0ZU5hbWUoKSkpOwotICAgIHJldHVybiBsZW5ndGhMaXN0OwotfQot
Ci12b2lkIFNWR0FuaW1hdGVkTGVuZ3RoTGlzdEFuaW1hdG9yOjpjYWxjdWxhdGVBbmltYXRlZFZh
bHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVkIHJlcGVhdENvdW50LCBTVkdBbmltYXRlZFR5
cGUqIGZyb20sIFNWR0FuaW1hdGVkVHlwZSogdG8sIFNWR0FuaW1hdGVkVHlwZSogdG9BdEVuZE9m
RHVyYXRpb24sIFNWR0FuaW1hdGVkVHlwZSogYW5pbWF0ZWQpCi17Ci0gICAgQVNTRVJUKG1fYW5p
bWF0aW9uRWxlbWVudCk7Ci0gICAgQVNTRVJUKG1fY29udGV4dEVsZW1lbnQpOwotCi0gICAgYXV0
byBmcm9tTGVuZ3RoTGlzdCA9IChtX2FuaW1hdGlvbkVsZW1lbnQtPmFuaW1hdGlvbk1vZGUoKSA9
PSBBbmltYXRpb25Nb2RlOjpUbyA/IGFuaW1hdGVkIDogZnJvbSktPmFzPFNWR0xlbmd0aExpc3RW
YWx1ZXM+KCk7Ci0gICAgYXV0byB0b0xlbmd0aExpc3QgPSB0by0+YXM8U1ZHTGVuZ3RoTGlzdFZh
bHVlcz4oKTsKLSAgICBjb25zdCBhdXRvJiB0b0F0RW5kT2ZEdXJhdGlvbkxlbmd0aExpc3QgPSB0
b0F0RW5kT2ZEdXJhdGlvbi0+YXM8U1ZHTGVuZ3RoTGlzdFZhbHVlcz4oKTsKLSAgICBhdXRvJiBh
bmltYXRlZExlbmd0aExpc3QgPSBhbmltYXRlZC0+YXM8U1ZHTGVuZ3RoTGlzdFZhbHVlcz4oKTsK
LQotICAgIC8vIEFwcGx5IENTUyBpbmhlcml0YW5jZSBydWxlcy4KLSAgICBtX2FuaW1hdGlvbkVs
ZW1lbnQtPmFkanVzdEZvckluaGVyaXRhbmNlPFNWR0xlbmd0aExpc3RWYWx1ZXM+KHBhcnNlTGVu
Z3RoTGlzdEZyb21TdHJpbmcsIG1fYW5pbWF0aW9uRWxlbWVudC0+ZnJvbVByb3BlcnR5VmFsdWVU
eXBlKCksIGZyb21MZW5ndGhMaXN0LCBtX2NvbnRleHRFbGVtZW50KTsKLSAgICBtX2FuaW1hdGlv
bkVsZW1lbnQtPmFkanVzdEZvckluaGVyaXRhbmNlPFNWR0xlbmd0aExpc3RWYWx1ZXM+KHBhcnNl
TGVuZ3RoTGlzdEZyb21TdHJpbmcsIG1fYW5pbWF0aW9uRWxlbWVudC0+dG9Qcm9wZXJ0eVZhbHVl
VHlwZSgpLCB0b0xlbmd0aExpc3QsIG1fY29udGV4dEVsZW1lbnQpOwotCi0gICAgaWYgKCFtX2Fu
aW1hdGlvbkVsZW1lbnQtPmFkanVzdEZyb21Ub0xpc3RWYWx1ZXM8U1ZHTGVuZ3RoTGlzdFZhbHVl
cz4oZnJvbUxlbmd0aExpc3QsIHRvTGVuZ3RoTGlzdCwgYW5pbWF0ZWRMZW5ndGhMaXN0LCBwZXJj
ZW50YWdlKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgdW5zaWduZWQgZnJvbUxlbmd0aExpc3RT
aXplID0gZnJvbUxlbmd0aExpc3Quc2l6ZSgpOwotICAgIHVuc2lnbmVkIHRvTGVuZ3RoTGlzdFNp
emUgPSB0b0xlbmd0aExpc3Quc2l6ZSgpOwotICAgIHVuc2lnbmVkIHRvQXRFbmRPZkR1cmF0aW9u
TGlzdFNpemUgPSB0b0F0RW5kT2ZEdXJhdGlvbkxlbmd0aExpc3Quc2l6ZSgpOwotCi0gICAgU1ZH
TGVuZ3RoQ29udGV4dCBsZW5ndGhDb250ZXh0KG1fY29udGV4dEVsZW1lbnQpOwotICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCB0b0xlbmd0aExpc3RTaXplOyArK2kpIHsKLSAgICAgICAgZmxv
YXQgYW5pbWF0ZWROdW1iZXIgPSBhbmltYXRlZExlbmd0aExpc3RbaV0udmFsdWUobGVuZ3RoQ29u
dGV4dCk7Ci0gICAgICAgIFNWR0xlbmd0aFR5cGUgdW5pdFR5cGUgPSB0b0xlbmd0aExpc3RbaV0u
dW5pdFR5cGUoKTsKLSAgICAgICAgZmxvYXQgZWZmZWN0aXZlRnJvbSA9IDA7Ci0gICAgICAgIGlm
IChmcm9tTGVuZ3RoTGlzdFNpemUpIHsKLSAgICAgICAgICAgIGlmIChwZXJjZW50YWdlIDwgMC41
KQotICAgICAgICAgICAgICAgIHVuaXRUeXBlID0gZnJvbUxlbmd0aExpc3RbaV0udW5pdFR5cGUo
KTsKLSAgICAgICAgICAgIGVmZmVjdGl2ZUZyb20gPSBmcm9tTGVuZ3RoTGlzdFtpXS52YWx1ZShs
ZW5ndGhDb250ZXh0KTsKLSAgICAgICAgfQotICAgICAgICBmbG9hdCBlZmZlY3RpdmVUb0F0RW5k
ID0gaSA8IHRvQXRFbmRPZkR1cmF0aW9uTGlzdFNpemUgPyB0b0F0RW5kT2ZEdXJhdGlvbkxlbmd0
aExpc3RbaV0udmFsdWUobGVuZ3RoQ29udGV4dCkgOiAwOwotCi0gICAgICAgIG1fYW5pbWF0aW9u
RWxlbWVudC0+YW5pbWF0ZUFkZGl0aXZlTnVtYmVyKHBlcmNlbnRhZ2UsIHJlcGVhdENvdW50LCBl
ZmZlY3RpdmVGcm9tLCB0b0xlbmd0aExpc3RbaV0udmFsdWUobGVuZ3RoQ29udGV4dCksIGVmZmVj
dGl2ZVRvQXRFbmQsIGFuaW1hdGVkTnVtYmVyKTsKLSAgICAgICAgYW5pbWF0ZWRMZW5ndGhMaXN0
W2ldLnNldFZhbHVlKGxlbmd0aENvbnRleHQsIGFuaW1hdGVkTnVtYmVyLCBtX2xlbmd0aE1vZGUs
IHVuaXRUeXBlKTsKLSAgICB9Ci19Ci0KLWZsb2F0IFNWR0FuaW1hdGVkTGVuZ3RoTGlzdEFuaW1h
dG9yOjpjYWxjdWxhdGVEaXN0YW5jZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKQotewot
ICAgIC8vIEZJWE1FOiBEaXN0YW5jZSBjYWxjdWxhdGlvbiBpcyBub3QgcG9zc2libGUgZm9yIFNW
R0xlbmd0aExpc3RWYWx1ZXMgcmlnaHQgbm93LiBXZSBuZWVkIHRoZSBkaXN0YW5jZSBmb3IgZXZl
cnkgc2luZ2xlIHZhbHVlLgotICAgIHJldHVybiAtMTsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoTGlzdC5oIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0FuaW1hdGVkTGVuZ3RoTGlzdC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAxNjViYzQ4YWU2NDBlMmRkYjk3MjM0MWJhOGI1MWQ1MWFlY2IyMTRkLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdB
bmltYXRlZExlbmd0aExpc3QuaAorKysgL2Rldi9udWxsCkBAIC0xLDU4ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTAuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0g
KiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICog
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5v
dCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIlNWR0FuaW1hdGVkTGlzdFByb3Bl
cnR5VGVhck9mZi5oIgotI2luY2x1ZGUgIlNWR0FuaW1hdGVkVHlwZUFuaW1hdG9yLmgiCi0jaW5j
bHVkZSAiU1ZHQXR0cmlidXRlQWNjZXNzb3IuaCIKLSNpbmNsdWRlICJTVkdMZW5ndGguaCIKLSNp
bmNsdWRlICJTVkdMZW5ndGhMaXN0LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3Mg
U1ZHQW5pbWF0aW9uRWxlbWVudDsKLQotdXNpbmcgU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0ID0gU1ZH
QW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmPFNWR0xlbmd0aExpc3RWYWx1ZXM+OwotdXNpbmcg
U1ZHQW5pbWF0ZWRMZW5ndGhMaXN0QXR0cmlidXRlID0gU1ZHQW5pbWF0ZWRBdHRyaWJ1dGVMaXN0
PFNWR0FuaW1hdGVkTGVuZ3RoTGlzdD47Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIE93bmVyVHlwZT4K
LXVzaW5nIFNWR0FuaW1hdGVkTGVuZ3RoTGlzdEF0dHJpYnV0ZUFjY2Vzc29yID0gU1ZHQW5pbWF0
ZWRBdHRyaWJ1dGVBY2Nlc3NvcjxPd25lclR5cGUsIFNWR0FuaW1hdGVkTGVuZ3RoTGlzdEF0dHJp
YnV0ZSwgQW5pbWF0ZWRMZW5ndGhMaXN0PjsKLQotY2xhc3MgU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0
QW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IgewotcHVibGlj
OgotICAgIFNWR0FuaW1hdGVkTGVuZ3RoTGlzdEFuaW1hdG9yKFNWR0FuaW1hdGlvbkVsZW1lbnQq
LCBTVkdFbGVtZW50Kik7Ci0KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBj
b25zdHJ1Y3RGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIHN0ZDo6dW5p
cXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+IHN0YXJ0QW5pbVZhbEFuaW1hdGlvbihjb25zdCBTVkdF
bGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKSBvdmVycmlkZTsKLSAgICB2b2lkIHN0b3BBbmlt
VmFsQW5pbWF0aW9uKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYpIG92ZXJy
aWRlOwotICAgIHZvaWQgcmVzZXRBbmltVmFsVG9CYXNlVmFsKGNvbnN0IFNWR0VsZW1lbnRBbmlt
YXRlZFByb3BlcnR5TGlzdCYsIFNWR0FuaW1hdGVkVHlwZSYpIG92ZXJyaWRlOwotICAgIHZvaWQg
YW5pbVZhbFdpbGxDaGFuZ2UoY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0Jikg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBhbmltVmFsRGlkQ2hhbmdlKGNvbnN0IFNWR0VsZW1lbnRBbmlt
YXRlZFByb3BlcnR5TGlzdCYpIG92ZXJyaWRlOwotCi0gICAgdm9pZCBhZGRBbmltYXRlZFR5cGVz
KFNWR0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlwZSopIG92ZXJyaWRlOwotICAgIHZvaWQg
Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZCByZXBlYXRD
b3VudCwgU1ZHQW5pbWF0ZWRUeXBlKiwgU1ZHQW5pbWF0ZWRUeXBlKiwgU1ZHQW5pbWF0ZWRUeXBl
KiwgU1ZHQW5pbWF0ZWRUeXBlKikgb3ZlcnJpZGU7Ci0gICAgZmxvYXQgY2FsY3VsYXRlRGlzdGFu
Y2UoY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKSBvdmVy
cmlkZTsKLQotcHJpdmF0ZToKLSAgICBTVkdMZW5ndGhNb2RlIG1fbGVuZ3RoTW9kZTsKLX07Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdBbmltYXRlZFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGUuaApp
bmRleCBhMTE5ZDMxNTQ5ZTJlOGRmYTM3YjhkMzY4MGE2N2E2OTA4ODIyNzAzLi44NWRmYzA0YmFk
MTgwYzdmYmRiNDAxMmJlNzVhOWU3ZTFmNjZmY2M5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1h
dGVkVHlwZS5oCkBAIC04MSw4ICs4MSw2IEBAIHB1YmxpYzoKICAgICBBbmltYXRlZFByb3BlcnR5
VHlwZSB0eXBlKCkgY29uc3QKICAgICB7CiAgICAgICAgIHN0YXRpYyBBbmltYXRlZFByb3BlcnR5
VHlwZSBhbmltYXRlZFR5cGVzW10gPSB7Ci0gICAgICAgICAgICBBbmltYXRlZExlbmd0aCwKLSAg
ICAgICAgICAgIEFuaW1hdGVkTGVuZ3RoTGlzdCwKICAgICAgICAgICAgIEFuaW1hdGVkUGF0aCwK
ICAgICAgICAgICAgIEFuaW1hdGVkVHJhbnNmb3JtTGlzdAogICAgICAgICB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuY3BwCmluZGV4IDI5ODJjNDNjNzQ0NDZkMjRk
ZmUxZjczMTEyMTQ4ZDdhNWNmMTI2ZWYuLjI2ZGQzYTRmZmI0MGE0ZjAxMjZmNmQ0OGMzMWNlZjc2
ZjMwMzkyMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHAK
QEAgLTMzNiwxMyArMzM2LDkgQEAgYm9vbCBTVkdBbmltYXRpb25FbGVtZW50Ojppc0FjY3VtdWxh
dGVkKCkgY29uc3QKICAgICByZXR1cm4gdmFsdWUgPT0gc3VtICYmIGFuaW1hdGlvbk1vZGUoKSAh
PSBBbmltYXRpb25Nb2RlOjpUbzsKIH0KIAotYm9vbCBTVkdBbmltYXRpb25FbGVtZW50Ojppc1Rh
cmdldEF0dHJpYnV0ZUNTU1Byb3BlcnR5KFNWR0VsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCitib29sIFNWR0FuaW1hdGlvbkVsZW1lbnQ6OmlzVGFy
Z2V0QXR0cmlidXRlQ1NTUHJvcGVydHkoU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCwgY29uc3Qg
UXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKIHsKLSAgICBpZiAoZWxlbWVudC0+aXNUZXh0
Q29udGVudCgpCi0gICAgICAgICYmIChhdHRyaWJ1dGVOYW1lID09IFNWR05hbWVzOjp4QXR0ciB8
fCBhdHRyaWJ1dGVOYW1lID09IFNWR05hbWVzOjp5QXR0cikpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLQotICAgIHJldHVybiBTVkdFbGVtZW50Ojppc0FuaW1hdGFibGVDU1NQcm9wZXJ0eShhdHRy
aWJ1dGVOYW1lKTsKKyAgICByZXR1cm4gdGFyZ2V0RWxlbWVudC0+aXNBbmltYXRlZFN0eWxlQXR0
cmlidXRlKGF0dHJpYnV0ZU5hbWUpOwogfQogCiBTVkdBbmltYXRpb25FbGVtZW50OjpTaG91bGRB
cHBseUFuaW1hdGlvbiBTVkdBbmltYXRpb25FbGVtZW50OjpzaG91bGRBcHBseUFuaW1hdGlvbihT
VkdFbGVtZW50KiB0YXJnZXRFbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVO
YW1lKQpAQCAtNjQ1LDEzICs2NDEsMTMgQEAgdm9pZCBTVkdBbmltYXRpb25FbGVtZW50OjphZGp1
c3RGb3JJbmhlcml0YW5jZShTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50LCBjb25zdAogICAgIGNv
bXB1dGVDU1NQcm9wZXJ0eVZhbHVlKCZzdmdQYXJlbnQsIGNzc1Byb3BlcnR5SUQoYXR0cmlidXRl
TmFtZS5sb2NhbE5hbWUoKSksIHZhbHVlKTsKIH0KIAotc3RhdGljIGJvb2wgaW5oZXJpdHNGcm9t
UHJvcGVydHkoU1ZHRWxlbWVudCosIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUs
IGNvbnN0IFN0cmluZyYgdmFsdWUpCitzdGF0aWMgYm9vbCBpbmhlcml0c0Zyb21Qcm9wZXJ0eShT
VkdFbGVtZW50KiB0YXJnZXRFbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVO
YW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxj
b25zdCBBdG9taWNTdHJpbmc+IGluaGVyaXQoImluaGVyaXQiLCBBdG9taWNTdHJpbmc6OkNvbnN0
cnVjdEZyb21MaXRlcmFsKTsKICAgICAKICAgICBpZiAodmFsdWUuaXNFbXB0eSgpIHx8IHZhbHVl
ICE9IGluaGVyaXQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gU1ZHRWxlbWVu
dDo6aXNBbmltYXRhYmxlQ1NTUHJvcGVydHkoYXR0cmlidXRlTmFtZSk7CisgICAgcmV0dXJuIHRh
cmdldEVsZW1lbnQtPmlzQW5pbWF0ZWRTdHlsZUF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsKIH0K
IAogdm9pZCBTVkdBbmltYXRpb25FbGVtZW50OjpkZXRlcm1pbmVQcm9wZXJ0eVZhbHVlVHlwZXMo
Y29uc3QgU3RyaW5nJiBmcm9tLCBjb25zdCBTdHJpbmcmIHRvKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0FuaW1hdG9yRmFjdG9yeS5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0FuaW1hdG9yRmFjdG9yeS5oCmluZGV4IDk0OGVhNzQxNjQ2YWIxOWZiZDg0OGFjMDBlZGQ1Mzhm
MjFhMjAwNGMuLjE5ZTUwYzQwODE5MThhZDM2MDQ1YzQ1OWU1MGY1ZWYyM2QxMjkzOGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRvckZhY3RvcnkuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0b3JGYWN0b3J5LmgKQEAgLTE5LDggKzE5LDYgQEAKIAog
I3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJTVkdBbmltYXRlZExlbmd0aC5oIgotI2luY2x1ZGUg
IlNWR0FuaW1hdGVkTGVuZ3RoTGlzdC5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkUGF0aC5oIgog
I2luY2x1ZGUgIlNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdC5oIgogCkBAIC0zMCw2ICsyOCwzMyBA
QCBjbGFzcyBTVkdBbmltYXRpb25FbGVtZW50OwogCiBjbGFzcyBTVkdBbmltYXRvckZhY3Rvcnkg
ewogcHVibGljOgorICAgIHN0YXRpYyBib29sIGlzU3VwcG9ydGVkQXR0cmlidXRlVHlwZShBbmlt
YXRlZFByb3BlcnR5VHlwZSBhdHRyaWJ1dGVUeXBlKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChh
dHRyaWJ1dGVUeXBlKSB7CisgICAgICAgIGNhc2UgQW5pbWF0ZWRBbmdsZToKKyAgICAgICAgY2Fz
ZSBBbmltYXRlZEJvb2xlYW46CisgICAgICAgIGNhc2UgQW5pbWF0ZWRDb2xvcjoKKyAgICAgICAg
Y2FzZSBBbmltYXRlZEVudW1lcmF0aW9uOgorICAgICAgICBjYXNlIEFuaW1hdGVkSW50ZWdlcjoK
KyAgICAgICAgY2FzZSBBbmltYXRlZEludGVnZXJPcHRpb25hbEludGVnZXI6CisgICAgICAgIGNh
c2UgQW5pbWF0ZWRMZW5ndGg6CisgICAgICAgIGNhc2UgQW5pbWF0ZWRMZW5ndGhMaXN0OgorICAg
ICAgICBjYXNlIEFuaW1hdGVkTnVtYmVyOgorICAgICAgICBjYXNlIEFuaW1hdGVkTnVtYmVyTGlz
dDoKKyAgICAgICAgY2FzZSBBbmltYXRlZE51bWJlck9wdGlvbmFsTnVtYmVyOgorICAgICAgICBj
YXNlIEFuaW1hdGVkUG9pbnRzOgorICAgICAgICBjYXNlIEFuaW1hdGVkUHJlc2VydmVBc3BlY3RS
YXRpbzoKKyAgICAgICAgY2FzZSBBbmltYXRlZFJlY3Q6CisgICAgICAgIGNhc2UgQW5pbWF0ZWRT
dHJpbmc6CisgICAgICAgIGNhc2UgQW5pbWF0ZWRVbmtub3duOgorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgICAgIGNhc2UgQW5pbWF0ZWRQYXRoOgorICAgICAgICBjYXNlIEFuaW1h
dGVkVHJhbnNmb3JtTGlzdDoKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9Cisg
ICAgfQorCiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGVBbmltYXRv
cj4gY3JlYXRlKFNWR0FuaW1hdGlvbkVsZW1lbnQqIGFuaW1hdGlvbkVsZW1lbnQsIFNWR0VsZW1l
bnQqIGNvbnRleHRFbGVtZW50LCBBbmltYXRlZFByb3BlcnR5VHlwZSBhdHRyaWJ1dGVUeXBlKQog
ICAgIHsKICAgICAgICAgQVNTRVJUKGFuaW1hdGlvbkVsZW1lbnQpOwpAQCAtNDIsNiArNjcsOCBA
QCBwdWJsaWM6CiAgICAgICAgIGNhc2UgQW5pbWF0ZWRFbnVtZXJhdGlvbjoKICAgICAgICAgY2Fz
ZSBBbmltYXRlZEludGVnZXI6CiAgICAgICAgIGNhc2UgQW5pbWF0ZWRJbnRlZ2VyT3B0aW9uYWxJ
bnRlZ2VyOgorICAgICAgICBjYXNlIEFuaW1hdGVkTGVuZ3RoOgorICAgICAgICBjYXNlIEFuaW1h
dGVkTGVuZ3RoTGlzdDoKICAgICAgICAgY2FzZSBBbmltYXRlZE51bWJlcjoKICAgICAgICAgY2Fz
ZSBBbmltYXRlZE51bWJlckxpc3Q6CiAgICAgICAgIGNhc2UgQW5pbWF0ZWROdW1iZXJPcHRpb25h
bE51bWJlcjoKQEAgLTQ5LDE4ICs3NiwxMyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgQW5pbWF0
ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvOgogICAgICAgICBjYXNlIEFuaW1hdGVkUmVjdDoKICAgICAg
ICAgY2FzZSBBbmltYXRlZFN0cmluZzoKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAg
ICAgICBjYXNlIEFuaW1hdGVkVW5rbm93bjoKKyAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAg
IGNhc2UgQW5pbWF0ZWRMZW5ndGg6Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxTVkdBbmltYXRlZExlbmd0aEFuaW1hdG9yPihhbmltYXRpb25FbGVtZW50LCBjb250ZXh0RWxl
bWVudCk7Ci0gICAgICAgIGNhc2UgQW5pbWF0ZWRMZW5ndGhMaXN0OgotICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRMZW5ndGhMaXN0QW5pbWF0b3I+KGFuaW1h
dGlvbkVsZW1lbnQsIGNvbnRleHRFbGVtZW50KTsKICAgICAgICAgY2FzZSBBbmltYXRlZFBhdGg6
CiAgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZFBhdGhBbmlt
YXRvcj4oYW5pbWF0aW9uRWxlbWVudCwgY29udGV4dEVsZW1lbnQpOwogICAgICAgICBjYXNlIEFu
aW1hdGVkVHJhbnNmb3JtTGlzdDoKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdEFuaW1hdG9yPihhbmltYXRpb25FbGVtZW50LCBjb250
ZXh0RWxlbWVudCk7Ci0gICAgICAgIGNhc2UgQW5pbWF0ZWRVbmtub3duOgotICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KIAogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDaXJjbGVFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdDaXJjbGVFbGVtZW50LmNwcAppbmRleCBlZjNkYWE2YTg4ZmEzOWJlODlm
MmNjNjNjNTkxYTJkOGQwMDg4OGY5Li4wYmU2ODI3YTE2MWU0NGE4MWRmMTVmMTI1YmVmNzI5Y2I3
YzcxZDE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2lyY2xlRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NpcmNsZUVsZW1lbnQuY3BwCkBAIC0xLDcg
KzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwOCBOaWtv
bGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAw
NCwgMjAwNSwgMjAwNiwgMjAwNyBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgotICogQ29weXJpZ2h0
IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYwpAQCAtMzUsNyArMzUsMTMgQEAgaW5saW5lIFNWR0NpcmNsZUVsZW1lbnQ6OlNWR0Np
cmNsZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQKICAgICAs
IFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQodGhpcykKIHsKICAgICBBU1NFUlQoaGFzVGFn
TmFtZShTVkdOYW1lczo6Y2lyY2xlVGFnKSk7Ci0gICAgcmVnaXN0ZXJBdHRyaWJ1dGVzKCk7CisK
KyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CisgICAgc3RkOjpjYWxsX29uY2Uo
b25jZUZsYWcsIFtdIHsKKyAgICAgICAgUHJvcGVydHlSZWdpc3RyeTo6cmVnaXN0ZXJQcm9wZXJ0
eTxTVkdOYW1lczo6Y3hBdHRyLCAmU1ZHQ2lyY2xlRWxlbWVudDo6bV9jeD4oKTsKKyAgICAgICAg
UHJvcGVydHlSZWdpc3RyeTo6cmVnaXN0ZXJQcm9wZXJ0eTxTVkdOYW1lczo6Y3lBdHRyLCAmU1ZH
Q2lyY2xlRWxlbWVudDo6bV9jeT4oKTsKKyAgICAgICAgUHJvcGVydHlSZWdpc3RyeTo6cmVnaXN0
ZXJQcm9wZXJ0eTxTVkdOYW1lczo6ckF0dHIsICZTVkdDaXJjbGVFbGVtZW50OjptX3I+KCk7Cisg
ICAgfSk7CiB9CiAKIFJlZjxTVkdDaXJjbGVFbGVtZW50PiBTVkdDaXJjbGVFbGVtZW50OjpjcmVh
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQpAQCAt
NDMsMjYgKzQ5LDE2IEBAIFJlZjxTVkdDaXJjbGVFbGVtZW50PiBTVkdDaXJjbGVFbGVtZW50Ojpj
cmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jCiAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgU1ZHQ2lyY2xlRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQogCi12b2lk
IFNWR0NpcmNsZUVsZW1lbnQ6OnJlZ2lzdGVyQXR0cmlidXRlcygpCi17Ci0gICAgYXV0byYgcmVn
aXN0cnkgPSBhdHRyaWJ1dGVSZWdpc3RyeSgpOwotICAgIGlmICghcmVnaXN0cnkuaXNFbXB0eSgp
KQotICAgICAgICByZXR1cm47Ci0gICAgcmVnaXN0cnkucmVnaXN0ZXJBdHRyaWJ1dGU8U1ZHTmFt
ZXM6OmN4QXR0ciwgJlNWR0NpcmNsZUVsZW1lbnQ6Om1fY3g+KCk7Ci0gICAgcmVnaXN0cnkucmVn
aXN0ZXJBdHRyaWJ1dGU8U1ZHTmFtZXM6OmN5QXR0ciwgJlNWR0NpcmNsZUVsZW1lbnQ6Om1fY3k+
KCk7Ci0gICAgcmVnaXN0cnkucmVnaXN0ZXJBdHRyaWJ1dGU8U1ZHTmFtZXM6OnJBdHRyLCAmU1ZH
Q2lyY2xlRWxlbWVudDo6bV9yPigpOwotfQotCiB2b2lkIFNWR0NpcmNsZUVsZW1lbnQ6OnBhcnNl
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYg
dmFsdWUpCiB7CiAgICAgU1ZHUGFyc2luZ0Vycm9yIHBhcnNlRXJyb3IgPSBOb0Vycm9yOwogCiAg
ICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OmN4QXR0cikKLSAgICAgICAgbV9jeC5zZXRWYWx1ZShT
VkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJy
b3IpKTsKKyAgICAgICAgbV9jeC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpj
b25zdHJ1Y3QoTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvcikpOwogICAgIGVsc2Ug
aWYgKG5hbWUgPT0gU1ZHTmFtZXM6OmN5QXR0cikKLSAgICAgICAgbV9jeS5zZXRWYWx1ZShTVkdM
ZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9y
KSk7CisgICAgICAgIG1fY3ktPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29u
c3RydWN0KExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7CiAgICAgZWxzZSBp
ZiAobmFtZSA9PSBTVkdOYW1lczo6ckF0dHIpCi0gICAgICAgIG1fci5zZXRWYWx1ZShTVkdMZW5n
dGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVPdGhlciwgdmFsdWUsIHBhcnNlRXJyb3IsIEZv
cmJpZE5lZ2F0aXZlTGVuZ3RocykpOworICAgICAgICBtX3ItPnNldEJhc2VWYWxJbnRlcm5hbChT
VkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVPdGhlciwgdmFsdWUsIHBhcnNlRXJy
b3IsIEZvcmJpZE5lZ2F0aXZlTGVuZ3RocykpOwogCiAgICAgcmVwb3J0QXR0cmlidXRlUGFyc2lu
Z0Vycm9yKHBhcnNlRXJyb3IsIG5hbWUsIHZhbHVlKTsKIApAQCAtNzIsNyArNjgsNyBAQCB2b2lk
IFNWR0NpcmNsZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5h
bWUsIGNvbnN0IEF0b21pY1N0cgogCiB2b2lkIFNWR0NpcmNsZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0
ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7Ci0gICAgaWYgKGlzS25v
d25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CisgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25v
d25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3Vh
cmQgZ3VhcmQoKnRoaXMpOwogICAgICAgICBpbnZhbGlkYXRlU1ZHUHJlc2VudGF0aW9uQXR0cmli
dXRlU3R5bGUoKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0NpcmNsZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDaXJjbGVFbGVt
ZW50LmgKaW5kZXggNWZlMDYzYjAxNGIyNTE2YmIxZWFlMDI2MmI0Yzk1OGMwOWQxZmMxNi4uOTNj
ZDYwZDA0MGZkNDk5MGNkYTljNzA5OWEzZDU4ODgxNGI3NGY1NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0NpcmNsZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQ2lyY2xlRWxlbWVudC5oCkBAIC0yMSw3ICsyMSw2IEBACiAKICNwcmFnbWEgb25jZQogCi0j
aW5jbHVkZSAiU1ZHQW5pbWF0ZWRMZW5ndGguaCIKICNpbmNsdWRlICJTVkdFeHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkLmgiCiAjaW5jbHVkZSAiU1ZHR2VvbWV0cnlFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiU1ZHTmFtZXMuaCIKQEAgLTMzLDMwICszMiwyMyBAQCBjbGFzcyBTVkdDaXJjbGVFbGVtZW50
IGZpbmFsIDogcHVibGljIFNWR0dlb21ldHJ5RWxlbWVudCwgcHVibGljIFNWR0V4dGVybmFsUmVz
bwogcHVibGljOgogICAgIHN0YXRpYyBSZWY8U1ZHQ2lyY2xlRWxlbWVudD4gY3JlYXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCi0gICAgY29uc3QgU1ZHTGVuZ3RoVmFsdWUm
IGN4KCkgY29uc3QgeyByZXR1cm4gbV9jeC5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94
eSgpKTsgfQotICAgIGNvbnN0IFNWR0xlbmd0aFZhbHVlJiBjeSgpIGNvbnN0IHsgcmV0dXJuIG1f
Y3kuY3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBjb25zdCBTVkdM
ZW5ndGhWYWx1ZSYgcigpIGNvbnN0IHsgcmV0dXJuIG1fci5jdXJyZW50VmFsdWUoYXR0cmlidXRl
T3duZXJQcm94eSgpKTsgfQorICAgIGNvbnN0IFNWR0xlbmd0aFZhbHVlJiBjeCgpIGNvbnN0IHsg
cmV0dXJuIG1fY3gtPmN1cnJlbnRWYWx1ZSgpOyB9CisgICAgY29uc3QgU1ZHTGVuZ3RoVmFsdWUm
IGN5KCkgY29uc3QgeyByZXR1cm4gbV9jeS0+Y3VycmVudFZhbHVlKCk7IH0KKyAgICBjb25zdCBT
VkdMZW5ndGhWYWx1ZSYgcigpIGNvbnN0IHsgcmV0dXJuIG1fci0+Y3VycmVudFZhbHVlKCk7IH0K
IAotICAgIFJlZlB0cjxTVkdBbmltYXRlZExlbmd0aD4gY3hBbmltYXRlZCgpIHsgcmV0dXJuIG1f
Y3guYW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9Ci0gICAgUmVmUHRy
PFNWR0FuaW1hdGVkTGVuZ3RoPiBjeUFuaW1hdGVkKCkgeyByZXR1cm4gbV9jeS5hbmltYXRlZFBy
b3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBSZWZQdHI8U1ZHQW5pbWF0ZWRM
ZW5ndGg+IHJBbmltYXRlZCgpIHsgcmV0dXJuIG1fci5hbmltYXRlZFByb3BlcnR5KGF0dHJpYnV0
ZU93bmVyUHJveHkoKSk7IH0KKyAgICBTVkdBbmltYXRlZExlbmd0aCYgY3hBbmltYXRlZCgpIHsg
cmV0dXJuIG1fY3g7IH0KKyAgICBTVkdBbmltYXRlZExlbmd0aCYgY3lBbmltYXRlZCgpIHsgcmV0
dXJuIG1fY3k7IH0KKyAgICBTVkdBbmltYXRlZExlbmd0aCYgckFuaW1hdGVkKCkgeyByZXR1cm4g
bV9yOyB9CiAKIHByaXZhdGU6CiAgICAgU1ZHQ2lyY2xlRWxlbWVudChjb25zdCBRdWFsaWZpZWRO
YW1lJiwgRG9jdW1lbnQmKTsKIAogICAgIHVzaW5nIEF0dHJpYnV0ZU93bmVyUHJveHkgPSBTVkdB
dHRyaWJ1dGVPd25lclByb3h5SW1wbDxTVkdDaXJjbGVFbGVtZW50LCBTVkdHZW9tZXRyeUVsZW1l
bnQsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ+OwotICAgIHN0YXRpYyBhdXRvJiBhdHRy
aWJ1dGVSZWdpc3RyeSgpIHsgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmF0dHJpYnV0ZVJl
Z2lzdHJ5KCk7IH0KLSAgICBzdGF0aWMgdm9pZCByZWdpc3RlckF0dHJpYnV0ZXMoKTsKICAgICBj
b25zdCBTVkdBdHRyaWJ1dGVPd25lclByb3h5JiBhdHRyaWJ1dGVPd25lclByb3h5KCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbV9hdHRyaWJ1dGVPd25lclByb3h5OyB9CiAKICAgICB1c2luZyBQcm9w
ZXJ0eVJlZ2lzdHJ5ID0gU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5PFNWR0NpcmNsZUVsZW1lbnQs
IFNWR0dlb21ldHJ5RWxlbWVudCwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZD47CiAgICAg
Y29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYgcHJvcGVydHlSZWdpc3RyeSgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3RyeTsgfQogCi0gICAgc3RhdGljIGJvb2wgaXNLbm93
bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmli
dXRlTmFtZSkgfHwgUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVO
YW1lKTsKLSAgICB9Ci0KICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBmaW5hbDsKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNo
YW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGZpbmFsOwogCkBAIC02Nyw5ICs1OSw5IEBAIHBy
aXZhdGU6CiAKICAgICBBdHRyaWJ1dGVPd25lclByb3h5IG1fYXR0cmlidXRlT3duZXJQcm94eSB7
ICp0aGlzIH07CiAgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhp
cyB9OwotICAgIFNWR0FuaW1hdGVkTGVuZ3RoQXR0cmlidXRlIG1fY3ggeyBMZW5ndGhNb2RlV2lk
dGggfTsKLSAgICBTVkdBbmltYXRlZExlbmd0aEF0dHJpYnV0ZSBtX2N5IHsgTGVuZ3RoTW9kZUhl
aWdodCB9OwotICAgIFNWR0FuaW1hdGVkTGVuZ3RoQXR0cmlidXRlIG1fciB7IExlbmd0aE1vZGVP
dGhlciB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV9jeCB7IFNWR0FuaW1hdGVkTGVu
Z3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZVdpZHRoKSB9OworICAgIFJlZjxTVkdBbmltYXRl
ZExlbmd0aD4gbV9jeSB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9k
ZUhlaWdodCkgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fciB7IFNWR0FuaW1hdGVk
TGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZU90aGVyKSB9OwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0N1cnNvckVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0N1cnNvckVsZW1lbnQuY3BwCmluZGV4
IGNkODA4Yzk5ODRiNTk5YjBhNDU3OTU0ZmFmNDJlYTNmZDkzZGExNGUuLmQyMGEzYTQ2YjVmNTAz
N2E2ZTgxMjlkMjVjNzE2YjU5OTliYzM3MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdDdXJzb3JFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ3Vyc29y
RWxlbWVudC5jcHAKQEAgLTEsNyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAy
MDA1LCAyMDA2LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgog
ICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3IFJvYiBCdWlzIDxidWlzQGtk
ZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC00MCw3ICs0MCwxMiBAQCBpbmxpbmUgU1ZH
Q3Vyc29yRWxlbWVudDo6U1ZHQ3Vyc29yRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdO
YW1lLCBEb2N1bWVudAogICAgICwgU1ZHVVJJUmVmZXJlbmNlKHRoaXMpCiB7CiAgICAgQVNTRVJU
KGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmN1cnNvclRhZykpOwotICAgIHJlZ2lzdGVyQXR0cmlidXRl
cygpOworCisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOworICAgIHN0ZDo6Y2Fs
bF9vbmNlKG9uY2VGbGFnLCBbXSB7CisgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVy
UHJvcGVydHk8U1ZHTmFtZXM6OnhBdHRyLCAmU1ZHQ3Vyc29yRWxlbWVudDo6bV94PigpOworICAg
ICAgICBQcm9wZXJ0eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5PFNWR05hbWVzOjp5QXR0ciwg
JlNWR0N1cnNvckVsZW1lbnQ6Om1feT4oKTsKKyAgICB9KTsKIH0KIAogUmVmPFNWR0N1cnNvckVs
ZW1lbnQ+IFNWR0N1cnNvckVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdO
YW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCkBAIC01NCwyMyArNTksMTQgQEAgU1ZHQ3Vyc29yRWxl
bWVudDo6flNWR0N1cnNvckVsZW1lbnQoKQogICAgICAgICBjbGllbnQtPmN1cnNvckVsZW1lbnRS
ZW1vdmVkKCp0aGlzKTsKIH0KIAotdm9pZCBTVkdDdXJzb3JFbGVtZW50OjpyZWdpc3RlckF0dHJp
YnV0ZXMoKQotewotICAgIGF1dG8mIHJlZ2lzdHJ5ID0gYXR0cmlidXRlUmVnaXN0cnkoKTsKLSAg
ICBpZiAoIXJlZ2lzdHJ5LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIHJlZ2lzdHJ5
LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjp4QXR0ciwgJlNWR0N1cnNvckVsZW1lbnQ6Om1f
eD4oKTsKLSAgICByZWdpc3RyeS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1lczo6eUF0dHIsICZT
VkdDdXJzb3JFbGVtZW50OjptX3k+KCk7Ci19Ci0KIHZvaWQgU1ZHQ3Vyc29yRWxlbWVudDo6cGFy
c2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5n
JiB2YWx1ZSkKIHsKICAgICBTVkdQYXJzaW5nRXJyb3IgcGFyc2VFcnJvciA9IE5vRXJyb3I7CiAK
ICAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6eEF0dHIpCi0gICAgICAgIG1feC5zZXRWYWx1ZShT
VkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJy
b3IpKTsKKyAgICAgICAgbV94LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNv
bnN0cnVjdChMZW5ndGhNb2RlV2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yKSk7CiAgICAgZWxzZSBp
ZiAobmFtZSA9PSBTVkdOYW1lczo6eUF0dHIpCi0gICAgICAgIG1feS5zZXRWYWx1ZShTVkdMZW5n
dGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7
CisgICAgICAgIG1feS0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1
Y3QoTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKIAogICAgIHJlcG9ydEF0
dHJpYnV0ZVBhcnNpbmdFcnJvcihwYXJzZUVycm9yLCBuYW1lLCB2YWx1ZSk7CiAKQEAgLTkyLDcg
Kzg4LDcgQEAgdm9pZCBTVkdDdXJzb3JFbGVtZW50OjpyZW1vdmVDbGllbnQoQ1NTQ3Vyc29ySW1h
Z2VWYWx1ZSYgdmFsdWUpCiAKIHZvaWQgU1ZHQ3Vyc29yRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hh
bmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsKLSAgICBpZiAoaXNLbm93bkF0
dHJpYnV0ZShhdHRyTmFtZSkpIHsKKyAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0
dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBn
dWFyZCgqdGhpcyk7CiAgICAgICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9jbGllbnRzKQogICAg
ICAgICAgICAgY2xpZW50LT5jdXJzb3JFbGVtZW50Q2hhbmdlZCgqdGhpcyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ3Vyc29yRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0N1cnNvckVsZW1lbnQuaAppbmRleCA2NDUxZWNlMTllNTNjOGQyNWEzODhkMGMyMDU2
M2NlN2ExZmIwYjNjLi5lMTJmMjRjY2Q1ZmE4MzY5Zjg2NTFlM2U4YmRhZDk1NDFlZTU4YjBmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ3Vyc29yRWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmgKQEAgLTIxLDcgKzIxLDYgQEAKIAog
I3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJTVkdBbmltYXRlZExlbmd0aC5oIgogI2luY2x1ZGUg
IlNWR0VsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLmgi
CiAjaW5jbHVkZSAiU1ZHVGVzdHMuaCIKQEAgLTQxLDI4ICs0MCwyMSBAQCBwdWJsaWM6CiAgICAg
dm9pZCBhZGRDbGllbnQoQ1NTQ3Vyc29ySW1hZ2VWYWx1ZSYpOwogICAgIHZvaWQgcmVtb3ZlQ2xp
ZW50KENTU0N1cnNvckltYWdlVmFsdWUmKTsKIAotICAgIGNvbnN0IFNWR0xlbmd0aFZhbHVlJiB4
KCkgY29uc3QgeyByZXR1cm4gbV94LmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25lclByb3h5KCkp
OyB9Ci0gICAgY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIHkoKSBjb25zdCB7IHJldHVybiBtX3kuY3Vy
cmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KKyAgICBjb25zdCBTVkdMZW5ndGhW
YWx1ZSYgeCgpIGNvbnN0IHsgcmV0dXJuIG1feC0+Y3VycmVudFZhbHVlKCk7IH0KKyAgICBjb25z
dCBTVkdMZW5ndGhWYWx1ZSYgeSgpIGNvbnN0IHsgcmV0dXJuIG1feS0+Y3VycmVudFZhbHVlKCk7
IH0KIAotICAgIFJlZlB0cjxTVkdBbmltYXRlZExlbmd0aD4geEFuaW1hdGVkKCkgeyByZXR1cm4g
bV94LmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAgIFJlZlB0
cjxTVkdBbmltYXRlZExlbmd0aD4geUFuaW1hdGVkKCkgeyByZXR1cm4gbV95LmFuaW1hdGVkUHJv
cGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQorICAgIFNWR0FuaW1hdGVkTGVuZ3RoJiB4
QW5pbWF0ZWQoKSB7IHJldHVybiBtX3g7IH0KKyAgICBTVkdBbmltYXRlZExlbmd0aCYgeUFuaW1h
dGVkKCkgeyByZXR1cm4gbV95OyB9CiAKIHByaXZhdGU6CiAgICAgU1ZHQ3Vyc29yRWxlbWVudChj
b25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAogICAgIHVzaW5nIEF0dHJpYnV0ZU93
bmVyUHJveHkgPSBTVkdBdHRyaWJ1dGVPd25lclByb3h5SW1wbDxTVkdDdXJzb3JFbGVtZW50LCBT
VkdFbGVtZW50LCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBTVkdUZXN0cywgU1ZHVVJJ
UmVmZXJlbmNlPjsKLSAgICBzdGF0aWMgQXR0cmlidXRlT3duZXJQcm94eTo6QXR0cmlidXRlUmVn
aXN0cnkmIGF0dHJpYnV0ZVJlZ2lzdHJ5KCkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6
YXR0cmlidXRlUmVnaXN0cnkoKTsgfQotICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQXR0cmlidXRl
cygpOwogICAgIGNvbnN0IFNWR0F0dHJpYnV0ZU93bmVyUHJveHkmIGF0dHJpYnV0ZU93bmVyUHJv
eHkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2F0dHJpYnV0ZU93bmVyUHJveHk7IH0KIAogICAg
IHVzaW5nIFByb3BlcnR5UmVnaXN0cnkgPSBTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk8U1ZHQ3Vy
c29yRWxlbWVudCwgU1ZHRWxlbWVudCwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgU1ZH
VGVzdHMsIFNWR1VSSVJlZmVyZW5jZT47CiAgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYg
cHJvcGVydHlSZWdpc3RyeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3Ry
eTsgfQogICAgIAotICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBBdHRyaWJ1dGVP
d25lclByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpIHx8IFByb3BlcnR5UmVn
aXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7Ci0gICAgfQotCiAgICAgdm9p
ZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5n
JikgZmluYWw7CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5h
bWUmKSBmaW5hbDsKIApAQCAtNzMsOCArNjUsOCBAQCBwcml2YXRlOgogCiAgICAgQXR0cmlidXRl
T3duZXJQcm94eSBtX2F0dHJpYnV0ZU93bmVyUHJveHkgeyAqdGhpcyB9OwogICAgIFByb3BlcnR5
UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKLSAgICBTVkdBbmltYXRlZExl
bmd0aEF0dHJpYnV0ZSBtX3ggeyBMZW5ndGhNb2RlV2lkdGggfTsKLSAgICBTVkdBbmltYXRlZExl
bmd0aEF0dHJpYnV0ZSBtX3kgeyBMZW5ndGhNb2RlSGVpZ2h0IH07CisgICAgUmVmPFNWR0FuaW1h
dGVkTGVuZ3RoPiBtX3ggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1v
ZGVXaWR0aCkgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feSB7IFNWR0FuaW1hdGVk
TGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZUhlaWdodCkgfTsKICAgICBIYXNoU2V0PENT
U0N1cnNvckltYWdlVmFsdWUqPiBtX2NsaWVudHM7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVu
dC5jcHAKaW5kZXggMWNlYmZiMzI0NDViYzc4NGQ5NDQ5ZWVkNWMwOWFmNDA3ZDAzOGI1Yi4uYWEx
MGU4MjY5NWQ3NmExNWM2OTYxYjM5MGQzNDZlZjlhNmIyZDY0NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdF
bGVtZW50LmNwcApAQCAtNzYyLDYgKzc2MiwxMSBAQCBib29sIFNWR0VsZW1lbnQ6OmlzQW5pbWF0
ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkgY29uc3QKICAg
ICByZXR1cm4gU1ZHUHJvcGVydHlBbmltYXRvckZhY3Rvcnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0
cmlidXRlTmFtZSkgfHwgaXNBbmltYXRlZFByb3BlcnR5QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUp
OwogfQogCitib29sIFNWR0VsZW1lbnQ6OmlzQW5pbWF0ZWRTdHlsZUF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKSBjb25zdAoreworICAgIHJldHVybiBTVkdQcm9w
ZXJ0eUFuaW1hdG9yRmFjdG9yeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKSB8fCBw
cm9wZXJ0eVJlZ2lzdHJ5KCkuaXNBbmltYXRlZFN0eWxlUHJvcGVydHlBdHRyaWJ1dGUoYXR0cmli
dXRlTmFtZSk7Cit9CisKIHN0ZDo6dW5pcXVlX3B0cjxTVkdBdHRyaWJ1dGVBbmltYXRvcj4gU1ZH
RWxlbWVudDo6Y3JlYXRlQW5pbWF0b3IoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFt
ZSwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBp
c0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUpCiB7CiAgICAgLy8gUHJvcGVydHkgYW5pbWF0
b3IsIGUuZy4gImZpbGwiIG9yICJmaWxsLW9wYWNpdHkiLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgK
aW5kZXggMGY3NWU5MGJjNmEzOTI5NGQ3MGFkZjVjZTJlN2Q5OWUxNjZiM2RmZi4uZTgyYmRiYWY4
MzJkYWNhNmM5YjFlYWU5ZGY0NWRlYmRmODQ0YTc5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5o
CkBAIC0xNTYsNiArMTU2LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc0FuaW1hdGVkUHJvcGVy
dHlBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OwogICAgIGJvb2wgaXNBbmlt
YXRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7CisgICAgYm9vbCBpc0Fu
aW1hdGVkU3R5bGVBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OwogCiAgICAg
dm9pZCBjb21taXRQcm9wZXJ0eUNoYW5nZShTVkdQcm9wZXJ0eSopIG92ZXJyaWRlOwogICAgIHZv
aWQgY29tbWl0UHJvcGVydHlDaGFuZ2UoU1ZHQW5pbWF0ZWRQcm9wZXJ0eSYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdFbGxpcHNlRWxlbWVudC5jcHAKaW5kZXggMGE1NGIxODc1ZDhhM2NmZDk5YTRl
NWQ4YzRlNjEwMTk0NGZjZTBiNy4uMjNlNGFkYWE0MDgzODAxMTFlOWFjMTliOWRiZjc2ZGY5NGNj
ZGNiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQuY3BwCkBAIC0xLDcg
KzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwOCBOaWtv
bGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAw
NCwgMjAwNSwgMjAwNiwgMjAwNyBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgotICogQ29weXJpZ2h0
IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYwpAQCAtMzUsNyArMzUsMTQgQEAgaW5saW5lIFNWR0VsbGlwc2VFbGVtZW50OjpTVkdF
bGxpcHNlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWUKICAgICAs
IFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQodGhpcykKIHsKICAgICBBU1NFUlQoaGFzVGFn
TmFtZShTVkdOYW1lczo6ZWxsaXBzZVRhZykpOwotICAgIHJlZ2lzdGVyQXR0cmlidXRlcygpOwor
CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOworICAgIHN0ZDo6Y2FsbF9vbmNl
KG9uY2VGbGFnLCBbXSB7CisgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVy
dHk8U1ZHTmFtZXM6OmN4QXR0ciwgJlNWR0VsbGlwc2VFbGVtZW50OjptX2N4PigpOworICAgICAg
ICBQcm9wZXJ0eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5PFNWR05hbWVzOjpjeUF0dHIsICZT
VkdFbGxpcHNlRWxlbWVudDo6bV9jeT4oKTsKKyAgICAgICAgUHJvcGVydHlSZWdpc3RyeTo6cmVn
aXN0ZXJQcm9wZXJ0eTxTVkdOYW1lczo6cnhBdHRyLCAmU1ZHRWxsaXBzZUVsZW1lbnQ6Om1fcng+
KCk7CisgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6
OnJ5QXR0ciwgJlNWR0VsbGlwc2VFbGVtZW50OjptX3J5PigpOworICAgIH0pOwogfSAgICAKIAog
UmVmPFNWR0VsbGlwc2VFbGVtZW50PiBTVkdFbGxpcHNlRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKQEAgLTQzLDI5ICs1MCwx
OCBAQCBSZWY8U1ZHRWxsaXBzZUVsZW1lbnQ+IFNWR0VsbGlwc2VFbGVtZW50OjpjcmVhdGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRAogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNW
R0VsbGlwc2VFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKLXZvaWQgU1ZHRWxsaXBz
ZUVsZW1lbnQ6OnJlZ2lzdGVyQXR0cmlidXRlcygpCi17Ci0gICAgYXV0byYgcmVnaXN0cnkgPSBh
dHRyaWJ1dGVSZWdpc3RyeSgpOwotICAgIGlmICghcmVnaXN0cnkuaXNFbXB0eSgpKQotICAgICAg
ICByZXR1cm47Ci0gICAgcmVnaXN0cnkucmVnaXN0ZXJBdHRyaWJ1dGU8U1ZHTmFtZXM6OmN4QXR0
ciwgJlNWR0VsbGlwc2VFbGVtZW50OjptX2N4PigpOwotICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0
cmlidXRlPFNWR05hbWVzOjpjeUF0dHIsICZTVkdFbGxpcHNlRWxlbWVudDo6bV9jeT4oKTsKLSAg
ICByZWdpc3RyeS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1lczo6cnhBdHRyLCAmU1ZHRWxsaXBz
ZUVsZW1lbnQ6Om1fcng+KCk7Ci0gICAgcmVnaXN0cnkucmVnaXN0ZXJBdHRyaWJ1dGU8U1ZHTmFt
ZXM6OnJ5QXR0ciwgJlNWR0VsbGlwc2VFbGVtZW50OjptX3J5PigpOwotfQotCiB2b2lkIFNWR0Vs
bGlwc2VFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBj
b25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogewogICAgIFNWR1BhcnNpbmdFcnJvciBwYXJzZUVy
cm9yID0gTm9FcnJvcjsKIAogICAgIGlmIChuYW1lID09IFNWR05hbWVzOjpjeEF0dHIpCi0gICAg
ICAgIG1fY3guc2V0VmFsdWUoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlV2lk
dGgsIHZhbHVlLCBwYXJzZUVycm9yKSk7CisgICAgICAgIG1fY3gtPnNldEJhc2VWYWxJbnRlcm5h
bChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVXaWR0aCwgdmFsdWUsIHBhcnNl
RXJyb3IpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjpjeUF0dHIpCi0gICAgICAg
IG1fY3kuc2V0VmFsdWUoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlSGVpZ2h0
LCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAgICAgICBtX2N5LT5zZXRCYXNlVmFsSW50ZXJuYWwo
U1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSwgcGFyc2VF
cnJvcikpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnJ4QXR0cikKLSAgICAgICAg
bV9yeC5zZXRWYWx1ZShTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVXaWR0aCwg
dmFsdWUsIHBhcnNlRXJyb3IsIEZvcmJpZE5lZ2F0aXZlTGVuZ3RocykpOworICAgICAgICBtX3J4
LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2Rl
V2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yLCBGb3JiaWROZWdhdGl2ZUxlbmd0aHMpKTsKICAgICBl
bHNlIGlmIChuYW1lID09IFNWR05hbWVzOjpyeUF0dHIpCi0gICAgICAgIG1fcnkuc2V0VmFsdWUo
U1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSwgcGFyc2VF
cnJvciwgRm9yYmlkTmVnYXRpdmVMZW5ndGhzKSk7CisgICAgICAgIG1fcnktPnNldEJhc2VWYWxJ
bnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVIZWlnaHQsIHZhbHVl
LCBwYXJzZUVycm9yLCBGb3JiaWROZWdhdGl2ZUxlbmd0aHMpKTsKIAogICAgIHJlcG9ydEF0dHJp
YnV0ZVBhcnNpbmdFcnJvcihwYXJzZUVycm9yLCBuYW1lLCB2YWx1ZSk7CiAKQEAgLTc1LDcgKzcx
LDcgQEAgdm9pZCBTVkdFbGxpcHNlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3QKIAogdm9pZCBTVkdFbGxpcHNlRWxlbWVudDo6
c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsKLSAg
ICBpZiAoaXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKKyAgICBpZiAoUHJvcGVydHlSZWdp
c3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAgICAgSW5zdGFuY2VJbnZh
bGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7CiAgICAgICAgIGludmFsaWRhdGVTVkdQcmVzZW50
YXRpb25BdHRyaWJ1dGVTdHlsZSgpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdFbGxpcHNlRWxlbWVudC5oCmluZGV4IDNjOWJjZmM3ZDliYTFjZWYxYTRjMjVjOWM3MWFmNTc4
NGJjNDExNWEuLjcxMmEzODg4MDg1ZjRkNzAyNzE4M2FhMGJlYjIwNmRhZTJmMmViYzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGxpcHNlRWxlbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdFbGxpcHNlRWxlbWVudC5oCkBAIC0yMSw3ICsyMSw2IEBACiAKICNw
cmFnbWEgb25jZQogCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRMZW5ndGguaCIKICNpbmNsdWRlICJT
VkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLmgiCiAjaW5jbHVkZSAiU1ZHR2VvbWV0cnlFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKQEAgLTMzLDMyICszMiwyNSBAQCBjbGFzcyBT
VkdFbGxpcHNlRWxlbWVudCBmaW5hbCA6IHB1YmxpYyBTVkdHZW9tZXRyeUVsZW1lbnQsIHB1Ymxp
YyBTVkdFeHRlcm5hbFJlcwogcHVibGljOgogICAgIHN0YXRpYyBSZWY8U1ZHRWxsaXBzZUVsZW1l
bnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAotICAgIGNvbnN0
IFNWR0xlbmd0aFZhbHVlJiBjeCgpIGNvbnN0IHsgcmV0dXJuIG1fY3guY3VycmVudFZhbHVlKGF0
dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBjb25zdCBTVkdMZW5ndGhWYWx1ZSYgY3koKSBj
b25zdCB7IHJldHVybiBtX2N5LmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9
Ci0gICAgY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIHJ4KCkgY29uc3QgeyByZXR1cm4gbV9yeC5jdXJy
ZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAgIGNvbnN0IFNWR0xlbmd0aFZh
bHVlJiByeSgpIGNvbnN0IHsgcmV0dXJuIG1fcnkuY3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVy
UHJveHkoKSk7IH0KKyAgICBjb25zdCBTVkdMZW5ndGhWYWx1ZSYgY3goKSBjb25zdCB7IHJldHVy
biBtX2N4LT5jdXJyZW50VmFsdWUoKTsgfQorICAgIGNvbnN0IFNWR0xlbmd0aFZhbHVlJiBjeSgp
IGNvbnN0IHsgcmV0dXJuIG1fY3ktPmN1cnJlbnRWYWx1ZSgpOyB9CisgICAgY29uc3QgU1ZHTGVu
Z3RoVmFsdWUmIHJ4KCkgY29uc3QgeyByZXR1cm4gbV9yeC0+Y3VycmVudFZhbHVlKCk7IH0KKyAg
ICBjb25zdCBTVkdMZW5ndGhWYWx1ZSYgcnkoKSBjb25zdCB7IHJldHVybiBtX3J5LT5jdXJyZW50
VmFsdWUoKTsgfQogCi0gICAgUmVmUHRyPFNWR0FuaW1hdGVkTGVuZ3RoPiBjeEFuaW1hdGVkKCkg
eyByZXR1cm4gbV9jeC5hbmltYXRlZFByb3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0K
LSAgICBSZWZQdHI8U1ZHQW5pbWF0ZWRMZW5ndGg+IGN5QW5pbWF0ZWQoKSB7IHJldHVybiBtX2N5
LmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAgIFJlZlB0cjxT
VkdBbmltYXRlZExlbmd0aD4gcnhBbmltYXRlZCgpIHsgcmV0dXJuIG1fcnguYW5pbWF0ZWRQcm9w
ZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9Ci0gICAgUmVmUHRyPFNWR0FuaW1hdGVkTGVu
Z3RoPiByeUFuaW1hdGVkKCkgeyByZXR1cm4gbV9yeS5hbmltYXRlZFByb3BlcnR5KGF0dHJpYnV0
ZU93bmVyUHJveHkoKSk7IH0KKyAgICBTVkdBbmltYXRlZExlbmd0aCYgY3hBbmltYXRlZCgpIHsg
cmV0dXJuIG1fY3g7IH0KKyAgICBTVkdBbmltYXRlZExlbmd0aCYgY3lBbmltYXRlZCgpIHsgcmV0
dXJuIG1fY3k7IH0KKyAgICBTVkdBbmltYXRlZExlbmd0aCYgcnhBbmltYXRlZCgpIHsgcmV0dXJu
IG1fcng7IH0KKyAgICBTVkdBbmltYXRlZExlbmd0aCYgcnlBbmltYXRlZCgpIHsgcmV0dXJuIG1f
cnk7IH0KIAogcHJpdmF0ZToKICAgICBTVkdFbGxpcHNlRWxlbWVudChjb25zdCBRdWFsaWZpZWRO
YW1lJiwgRG9jdW1lbnQmKTsKIAogICAgIHVzaW5nIEF0dHJpYnV0ZU93bmVyUHJveHkgPSBTVkdB
dHRyaWJ1dGVPd25lclByb3h5SW1wbDxTVkdFbGxpcHNlRWxlbWVudCwgU1ZHR2VvbWV0cnlFbGVt
ZW50LCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkPjsKLSAgICBzdGF0aWMgQXR0cmlidXRl
T3duZXJQcm94eTo6QXR0cmlidXRlUmVnaXN0cnkmIGF0dHJpYnV0ZVJlZ2lzdHJ5KCkgeyByZXR1
cm4gQXR0cmlidXRlT3duZXJQcm94eTo6YXR0cmlidXRlUmVnaXN0cnkoKTsgfQotICAgIHN0YXRp
YyB2b2lkIHJlZ2lzdGVyQXR0cmlidXRlcygpOwogICAgIGNvbnN0IFNWR0F0dHJpYnV0ZU93bmVy
UHJveHkmIGF0dHJpYnV0ZU93bmVyUHJveHkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2F0dHJp
YnV0ZU93bmVyUHJveHk7IH0KICAgICAKICAgICB1c2luZyBQcm9wZXJ0eVJlZ2lzdHJ5ID0gU1ZH
UHJvcGVydHlPd25lclJlZ2lzdHJ5PFNWR0VsbGlwc2VFbGVtZW50LCBTVkdHZW9tZXRyeUVsZW1l
bnQsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ+OwogICAgIGNvbnN0IFNWR1Byb3BlcnR5
UmVnaXN0cnkmIHByb3BlcnR5UmVnaXN0cnkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Byb3Bl
cnR5UmVnaXN0cnk7IH0KIAotICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBBdHRy
aWJ1dGVPd25lclByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpIHx8IFByb3Bl
cnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7Ci0gICAgfQotCiAg
ICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWlj
U3RyaW5nJikgZmluYWw7CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxp
ZmllZE5hbWUmKSBmaW5hbDsKIApAQCAtNjksMTAgKzYxLDEwIEBAIHByaXZhdGU6CiAKICAgICBB
dHRyaWJ1dGVPd25lclByb3h5IG1fYXR0cmlidXRlT3duZXJQcm94eSB7ICp0aGlzIH07CiAgICAg
UHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwotICAgIFNWR0Fu
aW1hdGVkTGVuZ3RoQXR0cmlidXRlIG1fY3ggeyBMZW5ndGhNb2RlV2lkdGggfTsKLSAgICBTVkdB
bmltYXRlZExlbmd0aEF0dHJpYnV0ZSBtX2N5IHsgTGVuZ3RoTW9kZUhlaWdodCB9OwotICAgIFNW
R0FuaW1hdGVkTGVuZ3RoQXR0cmlidXRlIG1fcnggeyBMZW5ndGhNb2RlV2lkdGggfTsKLSAgICBT
VkdBbmltYXRlZExlbmd0aEF0dHJpYnV0ZSBtX3J5IHsgTGVuZ3RoTW9kZUhlaWdodCB9OworICAg
IFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV9jeCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUo
dGhpcywgTGVuZ3RoTW9kZVdpZHRoKSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV9j
eSB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZUhlaWdodCkgfTsK
KyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fcnggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3Jl
YXRlKHRoaXMsIExlbmd0aE1vZGVXaWR0aCkgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+
IG1fcnkgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQp
IH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmls
dGVyRWxlbWVudC5jcHAKaW5kZXggYjk5NDMwMTRkOWFkMzNmNzIwY2E1MzBkYmFkZWQwYmNiMDc4
Zjc2ZC4uNzY1NWMwNzY5NzU3MDM5NmQ5ZTdiMWUxYTc2ZGNkMGNhN2Y4YWZmYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcApAQCAtNDYsMTIgKzQ2LDE1IEBAIGlubGlu
ZSBTVkdGaWx0ZXJFbGVtZW50OjpTVkdGaWx0ZXJFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUm
IHRhZ05hbWUsIERvY3VtZW50CiAgICAgLy8gU3BlYzogSWYgdGhlIHgveSBhdHRyaWJ1dGUgaXMg
bm90IHNwZWNpZmllZCwgdGhlIGVmZmVjdCBpcyBhcyBpZiBhIHZhbHVlIG9mICItMTAlIiB3ZXJl
IHNwZWNpZmllZC4KICAgICAvLyBTcGVjOiBJZiB0aGUgd2lkdGgvaGVpZ2h0IGF0dHJpYnV0ZSBp
cyBub3Qgc3BlY2lmaWVkLCB0aGUgZWZmZWN0IGlzIGFzIGlmIGEgdmFsdWUgb2YgIjEyMCUiIHdl
cmUgc3BlY2lmaWVkLgogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpmaWx0ZXJUYWcp
KTsKLSAgICByZWdpc3RlckF0dHJpYnV0ZXMoKTsKIAogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxh
ZyBvbmNlRmxhZzsKICAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10gewogICAgICAgICBQ
cm9wZXJ0eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5PFNWR05hbWVzOjpmaWx0ZXJVbml0c0F0
dHIsIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUsICZTVkdGaWx0ZXJFbGVtZW50OjptX2ZpbHRl
clVuaXRzPigpOwogICAgICAgICBQcm9wZXJ0eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5PFNW
R05hbWVzOjpwcmltaXRpdmVVbml0c0F0dHIsIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUsICZT
VkdGaWx0ZXJFbGVtZW50OjptX3ByaW1pdGl2ZVVuaXRzPigpOworICAgICAgICBQcm9wZXJ0eVJl
Z2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5PFNWR05hbWVzOjp4QXR0ciwgJlNWR0ZpbHRlckVsZW1l
bnQ6Om1feD4oKTsKKyAgICAgICAgUHJvcGVydHlSZWdpc3RyeTo6cmVnaXN0ZXJQcm9wZXJ0eTxT
VkdOYW1lczo6eUF0dHIsICZTVkdGaWx0ZXJFbGVtZW50OjptX3k+KCk7CisgICAgICAgIFByb3Bl
cnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6OndpZHRoQXR0ciwgJlNWR0Zp
bHRlckVsZW1lbnQ6Om1fd2lkdGg+KCk7CisgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lz
dGVyUHJvcGVydHk8U1ZHTmFtZXM6OmhlaWdodEF0dHIsICZTVkdGaWx0ZXJFbGVtZW50OjptX2hl
aWdodD4oKTsKICAgICB9KTsKIH0KIApAQCAtNjAsMTcgKzYzLDYgQEAgUmVmPFNWR0ZpbHRlckVs
ZW1lbnQ+IFNWR0ZpbHRlckVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdO
YW1lLCBEb2MKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdGaWx0ZXJFbGVtZW50KHRhZ05h
bWUsIGRvY3VtZW50KSk7CiB9CiAKLXZvaWQgU1ZHRmlsdGVyRWxlbWVudDo6cmVnaXN0ZXJBdHRy
aWJ1dGVzKCkKLXsKLSAgICBhdXRvJiByZWdpc3RyeSA9IGF0dHJpYnV0ZVJlZ2lzdHJ5KCk7Ci0g
ICAgaWYgKCFyZWdpc3RyeS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLSAgICByZWdpc3Ry
eS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1lczo6eEF0dHIsICZTVkdGaWx0ZXJFbGVtZW50Ojpt
X3g+KCk7Ci0gICAgcmVnaXN0cnkucmVnaXN0ZXJBdHRyaWJ1dGU8U1ZHTmFtZXM6OnlBdHRyLCAm
U1ZHRmlsdGVyRWxlbWVudDo6bV95PigpOwotICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRl
PFNWR05hbWVzOjp3aWR0aEF0dHIsICZTVkdGaWx0ZXJFbGVtZW50OjptX3dpZHRoPigpOwotICAg
IHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjpoZWlnaHRBdHRyLCAmU1ZHRmls
dGVyRWxlbWVudDo6bV9oZWlnaHQ+KCk7Ci19Ci0KIHZvaWQgU1ZHRmlsdGVyRWxlbWVudDo6cGFy
c2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5n
JiB2YWx1ZSkKIHsKICAgICBTVkdQYXJzaW5nRXJyb3IgcGFyc2VFcnJvciA9IE5vRXJyb3I7CkBA
IC04NCwxMyArNzYsMTMgQEAgdm9pZCBTVkdGaWx0ZXJFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHIKICAgICAgICAgaWYgKHBy
b3BlcnR5VmFsdWUgPiAwKQogICAgICAgICAgICAgbV9wcmltaXRpdmVVbml0cy0+c2V0QmFzZVZh
bEludGVybmFsPFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGU+KHByb3BlcnR5VmFsdWUpOwogICAg
IH0gZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6eEF0dHIpCi0gICAgICAgIG1feC5zZXRWYWx1
ZShTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVXaWR0aCwgdmFsdWUsIHBhcnNl
RXJyb3IpKTsKKyAgICAgICAgbV94LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6
OmNvbnN0cnVjdChMZW5ndGhNb2RlV2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yKSk7CiAgICAgZWxz
ZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6eUF0dHIpCi0gICAgICAgIG1feS5zZXRWYWx1ZShTVkdM
ZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9y
KSk7CisgICAgICAgIG1feS0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25z
dHJ1Y3QoTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKICAgICBlbHNlIGlm
IChuYW1lID09IFNWR05hbWVzOjp3aWR0aEF0dHIpCi0gICAgICAgIG1fd2lkdGguc2V0VmFsdWUo
U1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlV2lkdGgsIHZhbHVlLCBwYXJzZUVy
cm9yKSk7CisgICAgICAgIG1fd2lkdGgtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1
ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKICAgICBl
bHNlIGlmIChuYW1lID09IFNWR05hbWVzOjpoZWlnaHRBdHRyKQotICAgICAgICBtX2hlaWdodC5z
ZXRWYWx1ZShTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVIZWlnaHQsIHZhbHVl
LCBwYXJzZUVycm9yKSk7CisgICAgICAgIG1faGVpZ2h0LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZH
TGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJv
cikpOwogCiAgICAgcmVwb3J0QXR0cmlidXRlUGFyc2luZ0Vycm9yKHBhcnNlRXJyb3IsIG5hbWUs
IHZhbHVlKTsKIApAQCAtMTAxLDEzICs5MywxMyBAQCB2b2lkIFNWR0ZpbHRlckVsZW1lbnQ6OnBh
cnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cgog
CiB2b2lkIFNWR0ZpbHRlckVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlm
aWVkTmFtZSYgYXR0ck5hbWUpCiB7Ci0gICAgaWYgKGlzQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUo
YXR0ck5hbWUpKSB7CisgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzQW5pbWF0ZWRMZW5ndGhB
dHRyaWJ1dGUoYXR0ck5hbWUpKSB7CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQg
Z3VhcmQoKnRoaXMpOwogICAgICAgICBpbnZhbGlkYXRlU1ZHUHJlc2VudGF0aW9uQXR0cmlidXRl
U3R5bGUoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChpc0tub3duQXR0cmli
dXRlKGF0dHJOYW1lKSB8fCBTVkdVUklSZWZlcmVuY2U6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5h
bWUpKSB7CisgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5h
bWUpIHx8IFNWR1VSSVJlZmVyZW5jZTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAg
ICAgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkKICAgICAgICAgICAg
IHJlbmRlcmVyLT5zZXROZWVkc0xheW91dCgpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZpbHRlckVsZW1lbnQuaAppbmRleCA5ZjhmYjMwYmU4NDk1YTkwNzY2NTY5YjZhOTRl
ZmZlNTE4ZmE2YzdkLi4xYTc2YmQwYTFhNmFmMDJiZjIwMTQzNjllYjFhNTAxM2IxMjgyY2FmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmgKQEAgLTIzLDcgKzIzLDYgQEAKIAog
I3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJTVkdBbmltYXRlZExlbmd0aC5oIgogI2luY2x1ZGUg
IlNWR0VsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLmgi
CiAjaW5jbHVkZSAiU1ZHVVJJUmVmZXJlbmNlLmgiCkBAIC0zOCwzNiArMzcsMjcgQEAgcHVibGlj
OgogCiAgICAgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSBmaWx0ZXJVbml0cygpIGNvbnN0IHsg
cmV0dXJuIG1fZmlsdGVyVW5pdHMtPmN1cnJlbnRWYWx1ZTxTVkdVbml0VHlwZXM6OlNWR1VuaXRU
eXBlPigpOyB9CiAgICAgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSBwcmltaXRpdmVVbml0cygp
IGNvbnN0IHsgcmV0dXJuIG1fcHJpbWl0aXZlVW5pdHMtPmN1cnJlbnRWYWx1ZTxTVkdVbml0VHlw
ZXM6OlNWR1VuaXRUeXBlPigpOyB9Ci0gICAgY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIHgoKSBjb25z
dCB7IHJldHVybiBtX3guY3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAg
ICBjb25zdCBTVkdMZW5ndGhWYWx1ZSYgeSgpIGNvbnN0IHsgcmV0dXJuIG1feS5jdXJyZW50VmFs
dWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAgIGNvbnN0IFNWR0xlbmd0aFZhbHVlJiB3
aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fd2lkdGguY3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVy
UHJveHkoKSk7IH0KLSAgICBjb25zdCBTVkdMZW5ndGhWYWx1ZSYgaGVpZ2h0KCkgY29uc3QgeyBy
ZXR1cm4gbV9oZWlnaHQuY3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KKyAg
ICBjb25zdCBTVkdMZW5ndGhWYWx1ZSYgeCgpIGNvbnN0IHsgcmV0dXJuIG1feC0+Y3VycmVudFZh
bHVlKCk7IH0KKyAgICBjb25zdCBTVkdMZW5ndGhWYWx1ZSYgeSgpIGNvbnN0IHsgcmV0dXJuIG1f
eS0+Y3VycmVudFZhbHVlKCk7IH0KKyAgICBjb25zdCBTVkdMZW5ndGhWYWx1ZSYgd2lkdGgoKSBj
b25zdCB7IHJldHVybiBtX3dpZHRoLT5jdXJyZW50VmFsdWUoKTsgfQorICAgIGNvbnN0IFNWR0xl
bmd0aFZhbHVlJiBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX2hlaWdodC0+Y3VycmVudFZhbHVl
KCk7IH0KIAogICAgIFNWR0FuaW1hdGVkRW51bWVyYXRpb24mIGZpbHRlclVuaXRzQW5pbWF0ZWQo
KSB7IHJldHVybiBtX2ZpbHRlclVuaXRzOyB9CiAgICAgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiYg
cHJpbWl0aXZlVW5pdHNBbmltYXRlZCgpIHsgcmV0dXJuIG1fcHJpbWl0aXZlVW5pdHM7IH0KLSAg
ICBSZWZQdHI8U1ZHQW5pbWF0ZWRMZW5ndGg+IHhBbmltYXRlZCgpIHsgcmV0dXJuIG1feC5hbmlt
YXRlZFByb3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBSZWZQdHI8U1ZHQW5p
bWF0ZWRMZW5ndGg+IHlBbmltYXRlZCgpIHsgcmV0dXJuIG1feS5hbmltYXRlZFByb3BlcnR5KGF0
dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBSZWZQdHI8U1ZHQW5pbWF0ZWRMZW5ndGg+IHdp
ZHRoQW5pbWF0ZWQoKSB7IHJldHVybiBtX3dpZHRoLmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRl
T3duZXJQcm94eSgpKTsgfQotICAgIFJlZlB0cjxTVkdBbmltYXRlZExlbmd0aD4gaGVpZ2h0QW5p
bWF0ZWQoKSB7IHJldHVybiBtX2hlaWdodC5hbmltYXRlZFByb3BlcnR5KGF0dHJpYnV0ZU93bmVy
UHJveHkoKSk7IH0KKyAgICBTVkdBbmltYXRlZExlbmd0aCYgeEFuaW1hdGVkKCkgeyByZXR1cm4g
bV94OyB9CisgICAgU1ZHQW5pbWF0ZWRMZW5ndGgmIHlBbmltYXRlZCgpIHsgcmV0dXJuIG1feTsg
fQorICAgIFNWR0FuaW1hdGVkTGVuZ3RoJiB3aWR0aEFuaW1hdGVkKCkgeyByZXR1cm4gbV93aWR0
aDsgfQorICAgIFNWR0FuaW1hdGVkTGVuZ3RoJiBoZWlnaHRBbmltYXRlZCgpIHsgcmV0dXJuIG1f
aGVpZ2h0OyB9CiAKIHByaXZhdGU6CiAgICAgU1ZHRmlsdGVyRWxlbWVudChjb25zdCBRdWFsaWZp
ZWROYW1lJiwgRG9jdW1lbnQmKTsKIAogICAgIHVzaW5nIEF0dHJpYnV0ZU93bmVyUHJveHkgPSBT
VkdBdHRyaWJ1dGVPd25lclByb3h5SW1wbDxTVkdGaWx0ZXJFbGVtZW50LCBTVkdFbGVtZW50LCBT
VkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBTVkdVUklSZWZlcmVuY2U+OwotICAgIHN0YXRp
YyBBdHRyaWJ1dGVPd25lclByb3h5OjpBdHRyaWJ1dGVSZWdpc3RyeSYgYXR0cmlidXRlUmVnaXN0
cnkoKSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5OjphdHRyaWJ1dGVSZWdpc3RyeSgpOyB9
Ci0gICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJBdHRyaWJ1dGVzKCk7CiAgICAgY29uc3QgU1ZHQXR0
cmlidXRlT3duZXJQcm94eSYgYXR0cmlidXRlT3duZXJQcm94eSgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG1fYXR0cmlidXRlT3duZXJQcm94eTsgfQogCiAgICAgdXNpbmcgUHJvcGVydHlSZWdpc3Ry
eSA9IFNWR1Byb3BlcnR5T3duZXJSZWdpc3RyeTxTVkdGaWx0ZXJFbGVtZW50LCBTVkdFbGVtZW50
LCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBTVkdVUklSZWZlcmVuY2U+OwogICAgIGNv
bnN0IFNWR1Byb3BlcnR5UmVnaXN0cnkmIHByb3BlcnR5UmVnaXN0cnkoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBtX3Byb3BlcnR5UmVnaXN0cnk7IH0KIAotICAgIHN0YXRpYyBib29sIGlzS25vd25B
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0
ZU5hbWUpIHx8IFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFt
ZSk7Ci0gICAgfQotCi0gICAgc3RhdGljIGJvb2wgaXNBbmltYXRlZExlbmd0aEF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKSB7IHJldHVybiBBdHRyaWJ1dGVPd25l
clByb3h5Ojppc0FuaW1hdGVkTGVuZ3RoQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOyB9Ci0KICAg
ICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNT
dHJpbmcmKSBmaW5hbDsKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlm
aWVkTmFtZSYpIGZpbmFsOwogICAgIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hh
bmdlJikgZmluYWw7CkBAIC04MywxMCArNzMsMTAgQEAgcHJpdmF0ZToKICAgICBQcm9wZXJ0eVJl
Z2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07CiAgICAgUmVmPFNWR0FuaW1hdGVk
RW51bWVyYXRpb24+IG1fZmlsdGVyVW5pdHMgeyBTVkdBbmltYXRlZEVudW1lcmF0aW9uOjpjcmVh
dGUodGhpcywgU1ZHVW5pdFR5cGVzOjpTVkdfVU5JVF9UWVBFX09CSkVDVEJPVU5ESU5HQk9YKSB9
OwogICAgIFJlZjxTVkdBbmltYXRlZEVudW1lcmF0aW9uPiBtX3ByaW1pdGl2ZVVuaXRzIHsgU1ZH
QW5pbWF0ZWRFbnVtZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRf
VFlQRV9VU0VSU1BBQ0VPTlVTRSkgfTsKLSAgICBTVkdBbmltYXRlZExlbmd0aEF0dHJpYnV0ZSBt
X3ggeyBMZW5ndGhNb2RlV2lkdGgsICItMTAlIiB9OwotICAgIFNWR0FuaW1hdGVkTGVuZ3RoQXR0
cmlidXRlIG1feSB7IExlbmd0aE1vZGVIZWlnaHQsICItMTAlIiB9OwotICAgIFNWR0FuaW1hdGVk
TGVuZ3RoQXR0cmlidXRlIG1fd2lkdGggeyBMZW5ndGhNb2RlV2lkdGgsICIxMjAlIiB9OwotICAg
IFNWR0FuaW1hdGVkTGVuZ3RoQXR0cmlidXRlIG1faGVpZ2h0IHsgTGVuZ3RoTW9kZUhlaWdodCwg
IjEyMCUiIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3ggeyBTVkdBbmltYXRlZExl
bmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVXaWR0aCwgIi0xMCUiKSB9OworICAgIFJlZjxT
VkdBbmltYXRlZExlbmd0aD4gbV95IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBM
ZW5ndGhNb2RlSGVpZ2h0LCAiLTEwJSIpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBt
X3dpZHRoIHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlV2lkdGgs
ICIxMjAlIikgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1faGVpZ2h0IHsgU1ZHQW5p
bWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0LCAiMTIwJSIpIH07CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuY3BwCmluZGV4IDc1
ZmVkZTM3YTdmNTZmM2E3OWM5OWVjMThhNzkyY2VjY2MzMzAxZDQuLjM1Y2VjOWNiNjY3NzAzODU4
ODQ5YTJiOTFlNWU5ODJjMjMyZDZlODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuY3BwCkBAIC0yLDcg
KzIsNyBAQAogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3IE5pa29sYXMg
WmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAy
MDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkg
RGlyayBTY2h1bHplIDxrcml0QHdlYmtpdC5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0z
NiwzNyArMzYsMjggQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFNWR0ZpbHRlclByaW1p
dGl2ZVN0YW5kYXJkQXR0cmlidXRlcyk7CiBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJp
YnV0ZXM6OlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyhjb25zdCBRdWFsaWZp
ZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgOiBTVkdFbGVtZW50KHRh
Z05hbWUsIGRvY3VtZW50KQogewotICAgIHJlZ2lzdGVyQXR0cmlidXRlcygpOwotCiAgICAgc3Rh
dGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwogICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFn
LCBbXSB7CisgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFt
ZXM6OnhBdHRyLCAmU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjptX3g+KCk7
CisgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6OnlB
dHRyLCAmU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjptX3k+KCk7CisgICAg
ICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6OndpZHRoQXR0
ciwgJlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6bV93aWR0aD4oKTsKKyAg
ICAgICAgUHJvcGVydHlSZWdpc3RyeTo6cmVnaXN0ZXJQcm9wZXJ0eTxTVkdOYW1lczo6aGVpZ2h0
QXR0ciwgJlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6bV9oZWlnaHQ+KCk7
CiAgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6OnJl
c3VsdEF0dHIsICZTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6Om1fcmVzdWx0
PigpOwogICAgIH0pOwogfQogCi12b2lkIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmli
dXRlczo6cmVnaXN0ZXJBdHRyaWJ1dGVzKCkKLXsKLSAgICBhdXRvJiByZWdpc3RyeSA9IGF0dHJp
YnV0ZVJlZ2lzdHJ5KCk7Ci0gICAgaWYgKCFyZWdpc3RyeS5pc0VtcHR5KCkpCi0gICAgICAgIHJl
dHVybjsKLSAgICByZWdpc3RyeS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1lczo6eEF0dHIsICZT
VkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6Om1feD4oKTsKLSAgICByZWdpc3Ry
eS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1lczo6eUF0dHIsICZTVkdGaWx0ZXJQcmltaXRpdmVT
dGFuZGFyZEF0dHJpYnV0ZXM6Om1feT4oKTsKLSAgICByZWdpc3RyeS5yZWdpc3RlckF0dHJpYnV0
ZTxTVkdOYW1lczo6d2lkdGhBdHRyLCAmU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1
dGVzOjptX3dpZHRoPigpOwotICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVz
OjpoZWlnaHRBdHRyLCAmU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjptX2hl
aWdodD4oKTsKLX0KLQogdm9pZCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6
OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0
cmluZyYgdmFsdWUpCiB7CiAgICAgU1ZHUGFyc2luZ0Vycm9yIHBhcnNlRXJyb3IgPSBOb0Vycm9y
OwogCiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnhBdHRyKQotICAgICAgICBtX3guc2V0VmFs
dWUoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlV2lkdGgsIHZhbHVlLCBwYXJz
ZUVycm9yKSk7CisgICAgICAgIG1feC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVl
Ojpjb25zdHJ1Y3QoTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvcikpOwogICAgIGVs
c2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnlBdHRyKQotICAgICAgICBtX3kuc2V0VmFsdWUoU1ZH
TGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJv
cikpOworICAgICAgICBtX3ktPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29u
c3RydWN0KExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7CiAgICAgZWxzZSBp
ZiAobmFtZSA9PSBTVkdOYW1lczo6d2lkdGhBdHRyKQotICAgICAgICBtX3dpZHRoLnNldFZhbHVl
KFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSwgcGFyc2VF
cnJvcikpOworICAgICAgICBtX3dpZHRoLT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFs
dWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlV2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yKSk7CiAgICAg
ZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6aGVpZ2h0QXR0cikKLSAgICAgICAgbV9oZWlnaHQu
c2V0VmFsdWUoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1
ZSwgcGFyc2VFcnJvcikpOworICAgICAgICBtX2hlaWdodC0+c2V0QmFzZVZhbEludGVybmFsKFNW
R0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUsIHBhcnNlRXJy
b3IpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjpyZXN1bHRBdHRyKQogICAgICAg
ICBtX3Jlc3VsdC0+c2V0QmFzZVZhbEludGVybmFsKHZhbHVlKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5o
CmluZGV4IGE4MWJiMGRkODMwODQ3NGY5NjY1MWNjN2I3Y2UyMDg4NjNhY2ViOTUuLjE0MzNiMjUw
MjE2MTY5YTVmNjNjMDdhNGVhNmVjYWZjNzFiMTA0ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgKQEAg
LTIzLDcgKzIzLDYgQEAKIAogI2luY2x1ZGUgIlJlbmRlclNWR1Jlc291cmNlRmlsdGVyLmgiCiAj
aW5jbHVkZSAiUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUuaCIKLSNpbmNsdWRlICJT
VkdBbmltYXRlZExlbmd0aC5oIgogI2luY2x1ZGUgIlNWR0VsZW1lbnQuaCIKICNpbmNsdWRlICJT
VkdOYW1lcy5oIgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTQ4LDE2ICs0NywxNiBAQCBw
dWJsaWM6CiAKICAgICB1c2luZyBQcm9wZXJ0eVJlZ2lzdHJ5ID0gU1ZHUHJvcGVydHlPd25lclJl
Z2lzdHJ5PFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcywgU1ZHRWxlbWVudD47
CiAKLSAgICBjb25zdCBTVkdMZW5ndGhWYWx1ZSYgeCgpIGNvbnN0IHsgcmV0dXJuIG1feC5jdXJy
ZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAgIGNvbnN0IFNWR0xlbmd0aFZh
bHVlJiB5KCkgY29uc3QgeyByZXR1cm4gbV95LmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25lclBy
b3h5KCkpOyB9Ci0gICAgY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIHdpZHRoKCkgY29uc3QgeyByZXR1
cm4gbV93aWR0aC5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAgIGNv
bnN0IFNWR0xlbmd0aFZhbHVlJiBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX2hlaWdodC5jdXJy
ZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQorICAgIGNvbnN0IFNWR0xlbmd0aFZh
bHVlJiB4KCkgY29uc3QgeyByZXR1cm4gbV94LT5jdXJyZW50VmFsdWUoKTsgfQorICAgIGNvbnN0
IFNWR0xlbmd0aFZhbHVlJiB5KCkgY29uc3QgeyByZXR1cm4gbV95LT5jdXJyZW50VmFsdWUoKTsg
fQorICAgIGNvbnN0IFNWR0xlbmd0aFZhbHVlJiB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fd2lk
dGgtPmN1cnJlbnRWYWx1ZSgpOyB9CisgICAgY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIGhlaWdodCgp
IGNvbnN0IHsgcmV0dXJuIG1faGVpZ2h0LT5jdXJyZW50VmFsdWUoKTsgfQogICAgIFN0cmluZyBy
ZXN1bHQoKSBjb25zdCB7IHJldHVybiBtX3Jlc3VsdC0+Y3VycmVudFZhbHVlKCk7IH0KIAotICAg
IFJlZlB0cjxTVkdBbmltYXRlZExlbmd0aD4geEFuaW1hdGVkKCkgeyByZXR1cm4gbV94LmFuaW1h
dGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAgIFJlZlB0cjxTVkdBbmlt
YXRlZExlbmd0aD4geUFuaW1hdGVkKCkgeyByZXR1cm4gbV95LmFuaW1hdGVkUHJvcGVydHkoYXR0
cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAgIFJlZlB0cjxTVkdBbmltYXRlZExlbmd0aD4gd2lk
dGhBbmltYXRlZCgpIHsgcmV0dXJuIG1fd2lkdGguYW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVP
d25lclByb3h5KCkpOyB9Ci0gICAgUmVmUHRyPFNWR0FuaW1hdGVkTGVuZ3RoPiBoZWlnaHRBbmlt
YXRlZCgpIHsgcmV0dXJuIG1faGVpZ2h0LmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQ
cm94eSgpKTsgfQorICAgIFNWR0FuaW1hdGVkTGVuZ3RoJiB4QW5pbWF0ZWQoKSB7IHJldHVybiBt
X3g7IH0KKyAgICBTVkdBbmltYXRlZExlbmd0aCYgeUFuaW1hdGVkKCkgeyByZXR1cm4gbV95OyB9
CisgICAgU1ZHQW5pbWF0ZWRMZW5ndGgmIHdpZHRoQW5pbWF0ZWQoKSB7IHJldHVybiBtX3dpZHRo
OyB9CisgICAgU1ZHQW5pbWF0ZWRMZW5ndGgmIGhlaWdodEFuaW1hdGVkKCkgeyByZXR1cm4gbV9o
ZWlnaHQ7IH0KICAgICBTVkdBbmltYXRlZFN0cmluZyYgcmVzdWx0QW5pbWF0ZWQoKSB7IHJldHVy
biBtX3Jlc3VsdDsgfQogCiBwcm90ZWN0ZWQ6CkBAIC03MSwxNiArNzAsOSBAQCBwcm90ZWN0ZWQ6
CiAgICAgdm9pZCBwcmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUm
IGF0dHJpYnV0ZU5hbWUpOwogCiBwcml2YXRlOgotICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQXR0
cmlidXRlcygpOwogICAgIGNvbnN0IFNWR0F0dHJpYnV0ZU93bmVyUHJveHkmIGF0dHJpYnV0ZU93
bmVyUHJveHkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2F0dHJpYnV0ZU93bmVyUHJveHk7
IH0KLQogICAgIGNvbnN0IFNWR1Byb3BlcnR5UmVnaXN0cnkmIHByb3BlcnR5UmVnaXN0cnkoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBtX3Byb3BlcnR5UmVnaXN0cnk7IH0KIAotICAgIHN0YXRp
YyBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFt
ZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3duQXR0
cmlidXRlKGF0dHJpYnV0ZU5hbWUpIHx8IFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1
dGUoYXR0cmlidXRlTmFtZSk7Ci0gICAgfQotCiAgICAgYm9vbCBpc0ZpbHRlckVmZmVjdCgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIFJlbmRlclB0cjxSZW5kZXJFbGVt
ZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJl
ZVBvc2l0aW9uJikgb3ZlcnJpZGU7CkBAIC05MSwxMCArODMsMTAgQEAgcHJpdmF0ZToKICAgICBQ
cm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07CiAgICAgLy8gU3Bl
YzogSWYgdGhlIHgveSBhdHRyaWJ1dGUgaXMgbm90IHNwZWNpZmllZCwgdGhlIGVmZmVjdCBpcyBh
cyBpZiBhIHZhbHVlIG9mICIwJSIgd2VyZSBzcGVjaWZpZWQuCiAgICAgLy8gU3BlYzogSWYgdGhl
IHdpZHRoL2hlaWdodCBhdHRyaWJ1dGUgaXMgbm90IHNwZWNpZmllZCwgdGhlIGVmZmVjdCBpcyBh
cyBpZiBhIHZhbHVlIG9mICIxMDAlIiB3ZXJlIHNwZWNpZmllZC4KLSAgICBTVkdBbmltYXRlZExl
bmd0aEF0dHJpYnV0ZSBtX3ggeyBMZW5ndGhNb2RlV2lkdGgsICIwJSIgfTsKLSAgICBTVkdBbmlt
YXRlZExlbmd0aEF0dHJpYnV0ZSBtX3kgeyBMZW5ndGhNb2RlSGVpZ2h0LCAiMCUiIH07Ci0gICAg
U1ZHQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUgbV93aWR0aCB7IExlbmd0aE1vZGVXaWR0aCwgIjEw
MCUiIH07Ci0gICAgU1ZHQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUgbV9oZWlnaHQgeyBMZW5ndGhN
b2RlSGVpZ2h0LCAiMTAwJSIgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feCB7IFNW
R0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZVdpZHRoLCAiMCUiKSB9Owor
ICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV95IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0
ZSh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0LCAiMCUiKSB9OworICAgIFJlZjxTVkdBbmltYXRlZExl
bmd0aD4gbV93aWR0aCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9k
ZVdpZHRoLCAiMTAwJSIpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX2hlaWdodCB7
IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZUhlaWdodCwgIjEwMCUi
KSB9OwogICAgIFJlZjxTVkdBbmltYXRlZFN0cmluZz4gbV9yZXN1bHQgeyBTVkdBbmltYXRlZFN0
cmluZzo6Y3JlYXRlKHRoaXMpIH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Zv
cmVpZ25PYmplY3RFbGVtZW50LmNwcAppbmRleCAwMDZhNzczMTFhODU4Mzk4Zjc5ZTZhZWZlZTg3
NmYwZmJiMThkNDc2Li5iYTY5MGVkNmUyNTIwYWE4YjcyNmQ4YmEzM2RhOWZhMDRjYmMyNDFmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5jcHAKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMTggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA4IE5pa29sYXMgWmlt
bWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDE0IEFkb2Jl
IFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKQEAgLTQwLDcg
KzQwLDEzIEBAIGlubGluZSBTVkdGb3JlaWduT2JqZWN0RWxlbWVudDo6U1ZHRm9yZWlnbk9iamVj
dEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnCiAgICAgLCBTVkdFeHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkKHRoaXMpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZv
cmVpZ25PYmplY3RUYWcpKTsKLSAgICByZWdpc3RlckF0dHJpYnV0ZXMoKTsKKyAgICBzdGF0aWMg
c3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtd
IHsKKyAgICAgICAgUHJvcGVydHlSZWdpc3RyeTo6cmVnaXN0ZXJQcm9wZXJ0eTxTVkdOYW1lczo6
eEF0dHIsICZTVkdGb3JlaWduT2JqZWN0RWxlbWVudDo6bV94PigpOworICAgICAgICBQcm9wZXJ0
eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5PFNWR05hbWVzOjp5QXR0ciwgJlNWR0ZvcmVpZ25P
YmplY3RFbGVtZW50OjptX3k+KCk7CisgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVy
UHJvcGVydHk8U1ZHTmFtZXM6OndpZHRoQXR0ciwgJlNWR0ZvcmVpZ25PYmplY3RFbGVtZW50Ojpt
X3dpZHRoPigpOworICAgICAgICBQcm9wZXJ0eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5PFNW
R05hbWVzOjpoZWlnaHRBdHRyLCAmU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ6Om1faGVpZ2h0Pigp
OworICAgIH0pOwogfQogCiBSZWY8U1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ+IFNWR0ZvcmVpZ25P
YmplY3RFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1l
bnQmIGRvY3VtZW50KQpAQCAtNDgsMjkgKzU0LDE4IEBAIFJlZjxTVkdGb3JlaWduT2JqZWN0RWxl
bWVudD4gU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1l
CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQodGFnTmFt
ZSwgZG9jdW1lbnQpKTsKIH0KIAotdm9pZCBTVkdGb3JlaWduT2JqZWN0RWxlbWVudDo6cmVnaXN0
ZXJBdHRyaWJ1dGVzKCkKLXsKLSAgICBhdXRvJiByZWdpc3RyeSA9IGF0dHJpYnV0ZVJlZ2lzdHJ5
KCk7Ci0gICAgaWYgKCFyZWdpc3RyeS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLSAgICBy
ZWdpc3RyeS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1lczo6eEF0dHIsICZTVkdGb3JlaWduT2Jq
ZWN0RWxlbWVudDo6bV94PigpOwotICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05h
bWVzOjp5QXR0ciwgJlNWR0ZvcmVpZ25PYmplY3RFbGVtZW50OjptX3k+KCk7Ci0gICAgcmVnaXN0
cnkucmVnaXN0ZXJBdHRyaWJ1dGU8U1ZHTmFtZXM6OndpZHRoQXR0ciwgJlNWR0ZvcmVpZ25PYmpl
Y3RFbGVtZW50OjptX3dpZHRoPigpOwotICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRlPFNW
R05hbWVzOjpoZWlnaHRBdHRyLCAmU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ6Om1faGVpZ2h0Pigp
OwotfQotCiB2b2lkIFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogewogICAg
IFNWR1BhcnNpbmdFcnJvciBwYXJzZUVycm9yID0gTm9FcnJvcjsKIAogICAgIGlmIChuYW1lID09
IFNWR05hbWVzOjp4QXR0cikKLSAgICAgICAgbV94LnNldFZhbHVlKFNWR0xlbmd0aFZhbHVlOjpj
b25zdHJ1Y3QoTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAgICAgICBt
X3gtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1v
ZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05h
bWVzOjp5QXR0cikKLSAgICAgICAgbV95LnNldFZhbHVlKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1
Y3QoTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKKyAgICAgICAgbV95LT5z
ZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlSGVp
Z2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6
OndpZHRoQXR0cikKLSAgICAgICAgbV93aWR0aC5zZXRWYWx1ZShTVkdMZW5ndGhWYWx1ZTo6Y29u
c3RydWN0KExlbmd0aE1vZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKKyAgICAgICAgbV93
aWR0aC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3Ro
TW9kZVdpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvcikpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZH
TmFtZXM6OmhlaWdodEF0dHIpCi0gICAgICAgIG1faGVpZ2h0LnNldFZhbHVlKFNWR0xlbmd0aFZh
bHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKKyAg
ICAgICAgbV9oZWlnaHQtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3Ry
dWN0KExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7CiAKICAgICByZXBvcnRB
dHRyaWJ1dGVQYXJzaW5nRXJyb3IocGFyc2VFcnJvciwgbmFtZSwgdmFsdWUpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5oCmluZGV4IDc5OWZjODIzYWE5
MzE1NDU3OTAxZGViNmQzNWMyYmE3NTM4YjU4M2UuLjUyYmQ0MWVmN2E1MmMxYTRmNzczZGQ5ZmJk
Zjg4ODFkMzQzOGYzNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWdu
T2JqZWN0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0
RWxlbWVudC5oCkBAIC0xOSw3ICsxOSw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAi
U1ZHQW5pbWF0ZWRMZW5ndGguaCIKICNpbmNsdWRlICJTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkLmgiCiAjaW5jbHVkZSAiU1ZHR3JhcGhpY3NFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHTmFt
ZXMuaCIKQEAgLTMyLDMyICszMSwyNSBAQCBjbGFzcyBTVkdGb3JlaWduT2JqZWN0RWxlbWVudCBm
aW5hbCA6IHB1YmxpYyBTVkdHcmFwaGljc0VsZW1lbnQsIHB1YmxpYyBTVkdFeHRlcgogcHVibGlj
OgogICAgIHN0YXRpYyBSZWY8U1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAotICAgIGNvbnN0IFNWR0xlbmd0aFZhbHVlJiB4
KCkgY29uc3QgeyByZXR1cm4gbV94LmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25lclByb3h5KCkp
OyB9Ci0gICAgY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIHkoKSBjb25zdCB7IHJldHVybiBtX3kuY3Vy
cmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBjb25zdCBTVkdMZW5ndGhW
YWx1ZSYgd2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3dpZHRoLmN1cnJlbnRWYWx1ZShhdHRyaWJ1
dGVPd25lclByb3h5KCkpOyB9Ci0gICAgY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIGhlaWdodCgpIGNv
bnN0IHsgcmV0dXJuIG1faGVpZ2h0LmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25lclByb3h5KCkp
OyB9CisgICAgY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIHgoKSBjb25zdCB7IHJldHVybiBtX3gtPmN1
cnJlbnRWYWx1ZSgpOyB9CisgICAgY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIHkoKSBjb25zdCB7IHJl
dHVybiBtX3ktPmN1cnJlbnRWYWx1ZSgpOyB9CisgICAgY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIHdp
ZHRoKCkgY29uc3QgeyByZXR1cm4gbV93aWR0aC0+Y3VycmVudFZhbHVlKCk7IH0KKyAgICBjb25z
dCBTVkdMZW5ndGhWYWx1ZSYgaGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9oZWlnaHQtPmN1cnJl
bnRWYWx1ZSgpOyB9CiAKLSAgICBSZWZQdHI8U1ZHQW5pbWF0ZWRMZW5ndGg+IHhBbmltYXRlZCgp
IHsgcmV0dXJuIG1feC5hbmltYXRlZFByb3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0K
LSAgICBSZWZQdHI8U1ZHQW5pbWF0ZWRMZW5ndGg+IHlBbmltYXRlZCgpIHsgcmV0dXJuIG1feS5h
bmltYXRlZFByb3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBSZWZQdHI8U1ZH
QW5pbWF0ZWRMZW5ndGg+IHdpZHRoQW5pbWF0ZWQoKSB7IHJldHVybiBtX3dpZHRoLmFuaW1hdGVk
UHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAgIFJlZlB0cjxTVkdBbmltYXRl
ZExlbmd0aD4gaGVpZ2h0QW5pbWF0ZWQoKSB7IHJldHVybiBtX2hlaWdodC5hbmltYXRlZFByb3Bl
cnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KKyAgICBTVkdBbmltYXRlZExlbmd0aCYgeEFu
aW1hdGVkKCkgeyByZXR1cm4gbV94OyB9CisgICAgU1ZHQW5pbWF0ZWRMZW5ndGgmIHlBbmltYXRl
ZCgpIHsgcmV0dXJuIG1feTsgfQorICAgIFNWR0FuaW1hdGVkTGVuZ3RoJiB3aWR0aEFuaW1hdGVk
KCkgeyByZXR1cm4gbV93aWR0aDsgfQorICAgIFNWR0FuaW1hdGVkTGVuZ3RoJiBoZWlnaHRBbmlt
YXRlZCgpIHsgcmV0dXJuIG1faGVpZ2h0OyB9CiAKIHByaXZhdGU6CiAgICAgU1ZHRm9yZWlnbk9i
amVjdEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKICAgICB1c2lu
ZyBBdHRyaWJ1dGVPd25lclByb3h5ID0gU1ZHQXR0cmlidXRlT3duZXJQcm94eUltcGw8U1ZHRm9y
ZWlnbk9iamVjdEVsZW1lbnQsIFNWR0dyYXBoaWNzRWxlbWVudCwgU1ZHRXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZD47Ci0gICAgc3RhdGljIEF0dHJpYnV0ZU93bmVyUHJveHk6OkF0dHJpYnV0ZVJl
Z2lzdHJ5JiBhdHRyaWJ1dGVSZWdpc3RyeSgpIHsgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6
OmF0dHJpYnV0ZVJlZ2lzdHJ5KCk7IH0KLSAgICBzdGF0aWMgdm9pZCByZWdpc3RlckF0dHJpYnV0
ZXMoKTsKICAgICBjb25zdCBTVkdBdHRyaWJ1dGVPd25lclByb3h5JiBhdHRyaWJ1dGVPd25lclBy
b3h5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9hdHRyaWJ1dGVPd25lclByb3h5OyB9CiAKICAg
ICB1c2luZyBQcm9wZXJ0eVJlZ2lzdHJ5ID0gU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5PFNWR0Zv
cmVpZ25PYmplY3RFbGVtZW50LCBTVkdHcmFwaGljc0VsZW1lbnQsIFNWR0V4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQ+OwogICAgIGNvbnN0IFNWR1Byb3BlcnR5UmVnaXN0cnkmIHByb3BlcnR5UmVn
aXN0cnkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Byb3BlcnR5UmVnaXN0cnk7IH0KIAotICAg
IHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmli
dXRlTmFtZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tu
b3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpIHx8IFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25B
dHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7Ci0gICAgfQotCiAgICAgdm9pZCBwYXJzZUF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgZmluYWw7CiAgICAg
dm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBmaW5hbDsKIApA
QCAtNzAsMTAgKzYyLDEwIEBAIHByaXZhdGU6CiAKICAgICBBdHRyaWJ1dGVPd25lclByb3h5IG1f
YXR0cmlidXRlT3duZXJQcm94eSB7ICp0aGlzIH07CiAgICAgUHJvcGVydHlSZWdpc3RyeSBtX3By
b3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwotICAgIFNWR0FuaW1hdGVkTGVuZ3RoQXR0cmlidXRl
IG1feCB7IExlbmd0aE1vZGVXaWR0aCB9OwotICAgIFNWR0FuaW1hdGVkTGVuZ3RoQXR0cmlidXRl
IG1feSB7IExlbmd0aE1vZGVIZWlnaHQgfTsKLSAgICBTVkdBbmltYXRlZExlbmd0aEF0dHJpYnV0
ZSBtX3dpZHRoIHsgTGVuZ3RoTW9kZVdpZHRoIH07Ci0gICAgU1ZHQW5pbWF0ZWRMZW5ndGhBdHRy
aWJ1dGUgbV9oZWlnaHQgeyBMZW5ndGhNb2RlSGVpZ2h0IH07CisgICAgUmVmPFNWR0FuaW1hdGVk
TGVuZ3RoPiBtX3ggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVX
aWR0aCkgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feSB7IFNWR0FuaW1hdGVkTGVu
Z3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZUhlaWdodCkgfTsKKyAgICBSZWY8U1ZHQW5pbWF0
ZWRMZW5ndGg+IG1fd2lkdGggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0
aE1vZGVXaWR0aCkgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1faGVpZ2h0IHsgU1ZH
QW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0KSB9OwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNw
cAppbmRleCBkMmIxNGE1NmMyNDY1MTI5YTEzMTQ5YzdkZDg1YjIxZWFlYjdkOTMzLi5jYWE2NTYy
OGMwYWMwNzkxNzU1OTZkMTNlYjY2N2ZmNmZiZTNjNzMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
SW1hZ2VFbGVtZW50LmNwcApAQCAtMyw3ICszLDcgQEAKICAqIENvcHlyaWdodCAoQykgMjAwNCwg
MjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogICog
Q29weXJpZ2h0IChDKSAyMDA2IEFsZXhhbmRlciBLZWxsZXR0IDxseXBhbm92QGtkZS5vcmc+CiAg
KiBDb3B5cmlnaHQgKEMpIDIwMTQgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC00MywxMCArNDMsMTIgQEAgaW5s
aW5lIFNWR0ltYWdlRWxlbWVudDo6U1ZHSW1hZ2VFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUm
IHRhZ05hbWUsIERvY3VtZW50JgogICAgICwgU1ZHVVJJUmVmZXJlbmNlKHRoaXMpCiAgICAgLCBt
X2ltYWdlTG9hZGVyKCp0aGlzKQogewotICAgIHJlZ2lzdGVyQXR0cmlidXRlcygpOwotCiAgICAg
c3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwogICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VG
bGFnLCBbXSB7CisgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZH
TmFtZXM6OnhBdHRyLCAmU1ZHSW1hZ2VFbGVtZW50OjptX3g+KCk7CisgICAgICAgIFByb3BlcnR5
UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6OnlBdHRyLCAmU1ZHSW1hZ2VFbGVt
ZW50OjptX3k+KCk7CisgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8
U1ZHTmFtZXM6OndpZHRoQXR0ciwgJlNWR0ltYWdlRWxlbWVudDo6bV93aWR0aD4oKTsKKyAgICAg
ICAgUHJvcGVydHlSZWdpc3RyeTo6cmVnaXN0ZXJQcm9wZXJ0eTxTVkdOYW1lczo6aGVpZ2h0QXR0
ciwgJlNWR0ltYWdlRWxlbWVudDo6bV9oZWlnaHQ+KCk7CiAgICAgICAgIFByb3BlcnR5UmVnaXN0
cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6OnByZXNlcnZlQXNwZWN0UmF0aW9BdHRyLCAm
U1ZHSW1hZ2VFbGVtZW50OjptX3ByZXNlcnZlQXNwZWN0UmF0aW8+KCk7CiAgICAgfSk7CiB9CkBA
IC02NSwxNyArNjcsNiBAQCBib29sIFNWR0ltYWdlRWxlbWVudDo6aGFzU2luZ2xlU2VjdXJpdHlP
cmlnaW4oKSBjb25zdAogICAgIHJldHVybiAhaW1hZ2UgfHwgaW1hZ2UtPmhhc1NpbmdsZVNlY3Vy
aXR5T3JpZ2luKCk7CiB9CiAKLXZvaWQgU1ZHSW1hZ2VFbGVtZW50OjpyZWdpc3RlckF0dHJpYnV0
ZXMoKQotewotICAgIGF1dG8mIHJlZ2lzdHJ5ID0gYXR0cmlidXRlUmVnaXN0cnkoKTsKLSAgICBp
ZiAoIXJlZ2lzdHJ5LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIHJlZ2lzdHJ5LnJl
Z2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjp4QXR0ciwgJlNWR0ltYWdlRWxlbWVudDo6bV94Pigp
OwotICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjp5QXR0ciwgJlNWR0lt
YWdlRWxlbWVudDo6bV95PigpOwotICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05h
bWVzOjp3aWR0aEF0dHIsICZTVkdJbWFnZUVsZW1lbnQ6Om1fd2lkdGg+KCk7Ci0gICAgcmVnaXN0
cnkucmVnaXN0ZXJBdHRyaWJ1dGU8U1ZHTmFtZXM6OmhlaWdodEF0dHIsICZTVkdJbWFnZUVsZW1l
bnQ6Om1faGVpZ2h0PigpOwotfQotCiB2b2lkIFNWR0ltYWdlRWxlbWVudDo6cGFyc2VBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkK
IHsKICAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6cHJlc2VydmVBc3BlY3RSYXRpb0F0dHIpIHsK
QEAgLTg4LDEzICs3OSwxMyBAQCB2b2lkIFNWR0ltYWdlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaQogICAgIFNWR1BhcnNp
bmdFcnJvciBwYXJzZUVycm9yID0gTm9FcnJvcjsKIAogICAgIGlmIChuYW1lID09IFNWR05hbWVz
Ojp4QXR0cikKLSAgICAgICAgbV94LnNldFZhbHVlKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3Qo
TGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAgICAgICBtX3gtPnNldEJh
c2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVXaWR0aCwg
dmFsdWUsIHBhcnNlRXJyb3IpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjp5QXR0
cikKLSAgICAgICAgbV95LnNldFZhbHVlKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3Ro
TW9kZUhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKKyAgICAgICAgbV95LT5zZXRCYXNlVmFs
SW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1
ZSwgcGFyc2VFcnJvcikpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OndpZHRoQXR0
cikKLSAgICAgICAgbV93aWR0aC5zZXRWYWx1ZShTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExl
bmd0aE1vZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IsIEZvcmJpZE5lZ2F0aXZlTGVuZ3Rocykp
OworICAgICAgICBtX3dpZHRoLT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNv
bnN0cnVjdChMZW5ndGhNb2RlV2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yLCBGb3JiaWROZWdhdGl2
ZUxlbmd0aHMpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjpoZWlnaHRBdHRyKQot
ICAgICAgICBtX2hlaWdodC5zZXRWYWx1ZShTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0
aE1vZGVIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yLCBGb3JiaWROZWdhdGl2ZUxlbmd0aHMpKTsK
KyAgICAgICAgbV9oZWlnaHQtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29u
c3RydWN0KExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yLCBGb3JiaWROZWdhdGl2
ZUxlbmd0aHMpKTsKIAogICAgIHJlcG9ydEF0dHJpYnV0ZVBhcnNpbmdFcnJvcihwYXJzZUVycm9y
LCBuYW1lLCB2YWx1ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFn
ZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuaAppbmRleCBl
Y2ZjNmI2MjJmMmVkM2VhMzNiMWY4ZDcyMjg2MTc4N2Y1NDg5MDg1Li41YzQwNzUyYjkzYzE5OGNl
YTFlNGNhNzk1NDE4MGFhNjgzNDhhNTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHSW1hZ2VFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVu
dC5oCkBAIC0yMSw3ICsyMSw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiU1ZHQW5p
bWF0ZWRMZW5ndGguaCIKICNpbmNsdWRlICJTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLmgi
CiAjaW5jbHVkZSAiU1ZHR3JhcGhpY3NFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHSW1hZ2VMb2Fk
ZXIuaCIKQEAgLTM3LDM0ICszNiwyNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNTaW5nbGVTZWN1
cml0eU9yaWdpbigpIGNvbnN0OwogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgaW1hZ2VTb3VyY2VV
UkwoKSBjb25zdCBmaW5hbDsKIAotICAgIGNvbnN0IFNWR0xlbmd0aFZhbHVlJiB4KCkgY29uc3Qg
eyByZXR1cm4gbV94LmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9Ci0gICAg
Y29uc3QgU1ZHTGVuZ3RoVmFsdWUmIHkoKSBjb25zdCB7IHJldHVybiBtX3kuY3VycmVudFZhbHVl
KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBjb25zdCBTVkdMZW5ndGhWYWx1ZSYgd2lk
dGgoKSBjb25zdCB7IHJldHVybiBtX3dpZHRoLmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25lclBy
b3h5KCkpOyB9Ci0gICAgY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIGhlaWdodCgpIGNvbnN0IHsgcmV0
dXJuIG1faGVpZ2h0LmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CisgICAg
Y29uc3QgU1ZHTGVuZ3RoVmFsdWUmIHgoKSBjb25zdCB7IHJldHVybiBtX3gtPmN1cnJlbnRWYWx1
ZSgpOyB9CisgICAgY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIHkoKSBjb25zdCB7IHJldHVybiBtX3kt
PmN1cnJlbnRWYWx1ZSgpOyB9CisgICAgY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIHdpZHRoKCkgY29u
c3QgeyByZXR1cm4gbV93aWR0aC0+Y3VycmVudFZhbHVlKCk7IH0KKyAgICBjb25zdCBTVkdMZW5n
dGhWYWx1ZSYgaGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9oZWlnaHQtPmN1cnJlbnRWYWx1ZSgp
OyB9CiAgICAgY29uc3QgU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlJiBwcmVzZXJ2ZUFzcGVj
dFJhdGlvKCkgY29uc3QgeyByZXR1cm4gbV9wcmVzZXJ2ZUFzcGVjdFJhdGlvLT5jdXJyZW50VmFs
dWUoKTsgfQogCi0gICAgUmVmUHRyPFNWR0FuaW1hdGVkTGVuZ3RoPiB4QW5pbWF0ZWQoKSB7IHJl
dHVybiBtX3guYW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9Ci0gICAg
UmVmUHRyPFNWR0FuaW1hdGVkTGVuZ3RoPiB5QW5pbWF0ZWQoKSB7IHJldHVybiBtX3kuYW5pbWF0
ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9Ci0gICAgUmVmUHRyPFNWR0FuaW1h
dGVkTGVuZ3RoPiB3aWR0aEFuaW1hdGVkKCkgeyByZXR1cm4gbV93aWR0aC5hbmltYXRlZFByb3Bl
cnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBSZWZQdHI8U1ZHQW5pbWF0ZWRMZW5n
dGg+IGhlaWdodEFuaW1hdGVkKCkgeyByZXR1cm4gbV9oZWlnaHQuYW5pbWF0ZWRQcm9wZXJ0eShh
dHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CisgICAgU1ZHQW5pbWF0ZWRMZW5ndGgmIHhBbmltYXRl
ZCgpIHsgcmV0dXJuIG1feDsgfQorICAgIFNWR0FuaW1hdGVkTGVuZ3RoJiB5QW5pbWF0ZWQoKSB7
IHJldHVybiBtX3k7IH0KKyAgICBTVkdBbmltYXRlZExlbmd0aCYgd2lkdGhBbmltYXRlZCgpIHsg
cmV0dXJuIG1fd2lkdGg7IH0KKyAgICBTVkdBbmltYXRlZExlbmd0aCYgaGVpZ2h0QW5pbWF0ZWQo
KSB7IHJldHVybiBtX2hlaWdodDsgfQogICAgIFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRp
byYgcHJlc2VydmVBc3BlY3RSYXRpb0FuaW1hdGVkKCkgeyByZXR1cm4gbV9wcmVzZXJ2ZUFzcGVj
dFJhdGlvOyB9CiAKIHByaXZhdGU6CiAgICAgU1ZHSW1hZ2VFbGVtZW50KGNvbnN0IFF1YWxpZmll
ZE5hbWUmLCBEb2N1bWVudCYpOwogICAgIAogICAgIHVzaW5nIEF0dHJpYnV0ZU93bmVyUHJveHkg
PSBTVkdBdHRyaWJ1dGVPd25lclByb3h5SW1wbDxTVkdJbWFnZUVsZW1lbnQsIFNWR0dyYXBoaWNz
RWxlbWVudCwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgU1ZHVVJJUmVmZXJlbmNlPjsK
LSAgICBzdGF0aWMgQXR0cmlidXRlT3duZXJQcm94eTo6QXR0cmlidXRlUmVnaXN0cnkmIGF0dHJp
YnV0ZVJlZ2lzdHJ5KCkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6YXR0cmlidXRlUmVn
aXN0cnkoKTsgfQotICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQXR0cmlidXRlcygpOwogICAgIGNv
bnN0IFNWR0F0dHJpYnV0ZU93bmVyUHJveHkmIGF0dHJpYnV0ZU93bmVyUHJveHkoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBtX2F0dHJpYnV0ZU93bmVyUHJveHk7IH0KIAogICAgIHVzaW5nIFByb3Bl
cnR5UmVnaXN0cnkgPSBTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk8U1ZHSW1hZ2VFbGVtZW50LCBT
VkdHcmFwaGljc0VsZW1lbnQsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIFNWR1VSSVJl
ZmVyZW5jZT47CiAgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYgcHJvcGVydHlSZWdpc3Ry
eSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3RyeTsgfQogCi0gICAgc3Rh
dGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVO
YW1lKQotICAgIHsKLSAgICAgICAgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmlzS25vd25B
dHRyaWJ1dGUoYXR0cmlidXRlTmFtZSkgfHwgUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJp
YnV0ZShhdHRyaWJ1dGVOYW1lKTsKLSAgICB9Ci0KICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBmaW5hbDsKICAgICB2b2lk
IHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGZpbmFsOwogCkBAIC04
MSwxMCArNzMsMTAgQEAgcHJpdmF0ZToKIAogICAgIEF0dHJpYnV0ZU93bmVyUHJveHkgbV9hdHRy
aWJ1dGVPd25lclByb3h5IHsgKnRoaXMgfTsKICAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVy
dHlSZWdpc3RyeSB7ICp0aGlzIH07Ci0gICAgU1ZHQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUgbV94
IHsgTGVuZ3RoTW9kZVdpZHRoIH07Ci0gICAgU1ZHQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUgbV95
IHsgTGVuZ3RoTW9kZUhlaWdodCB9OwotICAgIFNWR0FuaW1hdGVkTGVuZ3RoQXR0cmlidXRlIG1f
d2lkdGggeyBMZW5ndGhNb2RlV2lkdGggfTsKLSAgICBTVkdBbmltYXRlZExlbmd0aEF0dHJpYnV0
ZSBtX2hlaWdodCB7IExlbmd0aE1vZGVIZWlnaHQgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5n
dGg+IG1feCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZVdpZHRo
KSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV95IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6
OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0KSB9OworICAgIFJlZjxTVkdBbmltYXRlZExl
bmd0aD4gbV93aWR0aCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9k
ZVdpZHRoKSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV9oZWlnaHQgeyBTVkdBbmlt
YXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQpIH07CiAgICAgUmVmPFNW
R0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbz4gbV9wcmVzZXJ2ZUFzcGVjdFJhdGlvIHsgU1ZH
QW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvOjpjcmVhdGUodGhpcykgfTsKICAgICBTVkdJbWFn
ZUxvYWRlciBtX2ltYWdlTG9hZGVyOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdMZW5ndGguaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGguaAppbmRleCAxMWE3
Y2ZhYmI2ODIzNTZlMjJlYTMxOWQ4YzBkOTdhNGNjZjlhOTY0Li5mZjBmZDM1MTRiMjYzZTEzOGQ1
Y2NhOTA3ZjNhNzk4N2I2ZjNiOWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
TGVuZ3RoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aC5oCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDExICsyNiwx
NSBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJTVkdMZW5ndGhWYWx1ZS5oIgotI2luY2x1
ZGUgIlNWR1Byb3BlcnR5VGVhck9mZi5oIgorI2luY2x1ZGUgIlNWR1ZhbHVlUHJvcGVydHkuaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTVkdMZW5ndGggOiBwdWJsaWMgU1ZHUHJv
cGVydHlUZWFyT2ZmPFNWR0xlbmd0aFZhbHVlPiB7CitjbGFzcyBTVkdMZW5ndGggOiBwdWJsaWMg
U1ZHVmFsdWVQcm9wZXJ0eTxTVkdMZW5ndGhWYWx1ZT4geworICAgIHVzaW5nIEJhc2UgPSBTVkdW
YWx1ZVByb3BlcnR5PFNWR0xlbmd0aFZhbHVlPjsKKyAgICB1c2luZyBCYXNlOjpCYXNlOworICAg
IHVzaW5nIEJhc2U6Om1fdmFsdWU7CisKIHB1YmxpYzoKICAgICAvLyBGb3J3YXJkIGRlY2xhcmUg
dGhlc2UgZW51bXMgaW4gdGhlIHczYyBuYW1pbmcgc2NoZW1lLCBmb3IgSURMIGdlbmVyYXRpb24K
ICAgICBlbnVtIHsKQEAgLTQ3LDMxICs1MSw0MiBAQCBwdWJsaWM6CiAgICAgICAgIFNWR19MRU5H
VEhUWVBFX1BDID0gTGVuZ3RoVHlwZVBDCiAgICAgfTsKIAotICAgIHN0YXRpYyBSZWY8U1ZHTGVu
Z3RoPiBjcmVhdGUoU1ZHTGVnYWN5QW5pbWF0ZWRQcm9wZXJ0eSYgYW5pbWF0ZWRQcm9wZXJ0eSwg
U1ZHUHJvcGVydHlSb2xlIHJvbGUsIFNWR0xlbmd0aFZhbHVlJiB2YWx1ZSkKKyAgICBzdGF0aWMg
UmVmPFNWR0xlbmd0aD4gY3JlYXRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFNWR0xlbmd0aCgpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgUmVmPFNWR0xlbmd0aD4gY3Jl
YXRlKGNvbnN0IFNWR0xlbmd0aFZhbHVlJiB2YWx1ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFNWR0xlbmd0aChhbmltYXRlZFByb3BlcnR5LCByb2xlLCB2YWx1ZSkpOwor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdMZW5ndGgodmFsdWUpKTsKICAgICB9CiAK
LSAgICBzdGF0aWMgUmVmPFNWR0xlbmd0aD4gY3JlYXRlKGNvbnN0IFNWR0xlbmd0aFZhbHVlJiBp
bml0aWFsVmFsdWUgPSB7IH0pCisgICAgc3RhdGljIFJlZjxTVkdMZW5ndGg+IGNyZWF0ZShTVkdQ
cm9wZXJ0eU93bmVyKiBvd25lciwgU1ZHUHJvcGVydHlBY2Nlc3MgYWNjZXNzLCBjb25zdCBTVkdM
ZW5ndGhWYWx1ZSYgdmFsdWUgPSB7IH0pCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBTVkdMZW5ndGgoaW5pdGlhbFZhbHVlKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFNWR0xlbmd0aChvd25lciwgYWNjZXNzLCB2YWx1ZSkpOwogICAgIH0KIAotICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8U1ZHTGVuZ3RoPj4gY3JlYXRl
KEV4Y2VwdGlvbk9yPFQ+JiYgaW5pdGlhbFZhbHVlKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
CisgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxTVkdMZW5ndGg+PiBjcmVhdGUoRXhjZXB0aW9u
T3I8VD4mJiB2YWx1ZSkKICAgICB7Ci0gICAgICAgIGlmIChpbml0aWFsVmFsdWUuaGFzRXhjZXB0
aW9uKCkpCi0gICAgICAgICAgICByZXR1cm4gaW5pdGlhbFZhbHVlLnJlbGVhc2VFeGNlcHRpb24o
KTsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZShpbml0aWFsVmFsdWUucmVsZWFzZVJldHVyblZhbHVl
KCkpOworICAgICAgICBpZiAodmFsdWUuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgICAgICByZXR1
cm4gdmFsdWUucmVsZWFzZUV4Y2VwdGlvbigpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBTVkdMZW5ndGgodmFsdWUucmVsZWFzZVJldHVyblZhbHVlKCkpKTsKKyAgICB9CisKKyAgICBS
ZWY8U1ZHTGVuZ3RoPiBjbG9uZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gU1ZHTGVu
Z3RoOjpjcmVhdGUobV92YWx1ZSk7CiAgICAgfQogCiAgICAgdW5zaWduZWQgc2hvcnQgdW5pdFR5
cGUoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHByb3BlcnR5UmVmZXJlbmNlKCkudW5pdFR5cGUo
KTsKKyAgICAgICAgcmV0dXJuIG1fdmFsdWUudW5pdFR5cGUoKTsKICAgICB9CiAKICAgICBFeGNl
cHRpb25PcjxmbG9hdD4gdmFsdWVGb3JCaW5kaW5ncygpCiAgICAgewotICAgICAgICByZXR1cm4g
cHJvcGVydHlSZWZlcmVuY2UoKS52YWx1ZUZvckJpbmRpbmdzKFNWR0xlbmd0aENvbnRleHQgeyBj
b250ZXh0RWxlbWVudCgpIH0pOworICAgICAgICByZXR1cm4gbV92YWx1ZS52YWx1ZUZvckJpbmRp
bmdzKFNWR0xlbmd0aENvbnRleHQgeyBjb250ZXh0RWxlbWVudCgpIH0pOwogICAgIH0KIAogICAg
IEV4Y2VwdGlvbk9yPHZvaWQ+IHNldFZhbHVlRm9yQmluZGluZ3MoZmxvYXQgdmFsdWUpCkBAIC03
OSw3ICs5NCw3IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKGlzUmVhZE9ubHkoKSkKICAgICAgICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBOb01vZGlmaWNhdGlvbkFsbG93ZWRFcnJvciB9OwogCi0g
ICAgICAgIGF1dG8gcmVzdWx0ID0gcHJvcGVydHlSZWZlcmVuY2UoKS5zZXRWYWx1ZSh2YWx1ZSwg
U1ZHTGVuZ3RoQ29udGV4dCB7IGNvbnRleHRFbGVtZW50KCkgfSk7CisgICAgICAgIGF1dG8gcmVz
dWx0ID0gbV92YWx1ZS5zZXRWYWx1ZSh2YWx1ZSwgU1ZHTGVuZ3RoQ29udGV4dCB7IGNvbnRleHRF
bGVtZW50KCkgfSk7CiAgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAg
ICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAKQEAgLTg5LDcgKzEwNCw3IEBAIHB1YmxpYzoK
ICAgICAKICAgICBmbG9hdCB2YWx1ZUluU3BlY2lmaWVkVW5pdHMoKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIHByb3BlcnR5UmVmZXJlbmNlKCkudmFsdWVJblNwZWNpZmllZFVuaXRzKCk7CisgICAg
ICAgIHJldHVybiBtX3ZhbHVlLnZhbHVlSW5TcGVjaWZpZWRVbml0cygpOwogICAgIH0KIAogICAg
IEV4Y2VwdGlvbk9yPHZvaWQ+IHNldFZhbHVlSW5TcGVjaWZpZWRVbml0cyhmbG9hdCB2YWx1ZUlu
U3BlY2lmaWVkVW5pdHMpCkBAIC05NywyMyArMTEyLDE3IEBAIHB1YmxpYzoKICAgICAgICAgaWYg
KGlzUmVhZE9ubHkoKSkKICAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb01vZGlmaWNh
dGlvbkFsbG93ZWRFcnJvciB9OwogCi0gICAgICAgIHByb3BlcnR5UmVmZXJlbmNlKCkuc2V0VmFs
dWVJblNwZWNpZmllZFVuaXRzKHZhbHVlSW5TcGVjaWZpZWRVbml0cyk7CisgICAgICAgIG1fdmFs
dWUuc2V0VmFsdWVJblNwZWNpZmllZFVuaXRzKHZhbHVlSW5TcGVjaWZpZWRVbml0cyk7CiAgICAg
ICAgIGNvbW1pdENoYW5nZSgpOwotICAgICAgICAKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9
CiAgICAgCi0gICAgU3RyaW5nIHZhbHVlQXNTdHJpbmcoKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IHByb3BlcnR5UmVmZXJlbmNlKCkudmFsdWVBc1N0cmluZygpOwotICAgIH0KLQogICAgIEV4Y2Vw
dGlvbk9yPHZvaWQ+IHNldFZhbHVlQXNTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICB7
CiAgICAgICAgIGlmIChpc1JlYWRPbmx5KCkpCiAgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9u
IHsgTm9Nb2RpZmljYXRpb25BbGxvd2VkRXJyb3IgfTsKIAotICAgICAgICBhdXRvIHJlc3VsdCA9
IHByb3BlcnR5UmVmZXJlbmNlKCkuc2V0VmFsdWVBc1N0cmluZyh2YWx1ZSk7CisgICAgICAgIGF1
dG8gcmVzdWx0ID0gbV92YWx1ZS5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVlKTsKICAgICAgICAgaWYg
KHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAg
ICAgIApAQCAtMTI2LDcgKzEzNSw3IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKGlzUmVhZE9ubHko
KSkKICAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb01vZGlmaWNhdGlvbkFsbG93ZWRF
cnJvciB9OwogCi0gICAgICAgIGF1dG8gcmVzdWx0ID0gcHJvcGVydHlSZWZlcmVuY2UoKS5uZXdW
YWx1ZVNwZWNpZmllZFVuaXRzKHVuaXRUeXBlLCB2YWx1ZUluU3BlY2lmaWVkVW5pdHMpOworICAg
ICAgICBhdXRvIHJlc3VsdCA9IG1fdmFsdWUubmV3VmFsdWVTcGVjaWZpZWRVbml0cyh1bml0VHlw
ZSwgdmFsdWVJblNwZWNpZmllZFVuaXRzKTsKICAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRp
b24oKSkKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIApAQCAtMTM5LDIzICsx
NDgsMTcgQEAgcHVibGljOgogICAgICAgICBpZiAoaXNSZWFkT25seSgpKQogICAgICAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IE5vTW9kaWZpY2F0aW9uQWxsb3dlZEVycm9yIH07CiAKLSAgICAg
ICAgYXV0byByZXN1bHQgPSBwcm9wZXJ0eVJlZmVyZW5jZSgpLmNvbnZlcnRUb1NwZWNpZmllZFVu
aXRzKHVuaXRUeXBlLCBTVkdMZW5ndGhDb250ZXh0IHsgY29udGV4dEVsZW1lbnQoKSB9KTsKKyAg
ICAgICAgYXV0byByZXN1bHQgPSBtX3ZhbHVlLmNvbnZlcnRUb1NwZWNpZmllZFVuaXRzKHVuaXRU
eXBlLCBTVkdMZW5ndGhDb250ZXh0IHsgY29udGV4dEVsZW1lbnQoKSB9KTsKICAgICAgICAgaWYg
KHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAg
ICAgIAogICAgICAgICBjb21taXRDaGFuZ2UoKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAg
ICB9Ci0KLXByaXZhdGU6Ci0gICAgU1ZHTGVuZ3RoKFNWR0xlZ2FjeUFuaW1hdGVkUHJvcGVydHkm
IGFuaW1hdGVkUHJvcGVydHksIFNWR1Byb3BlcnR5Um9sZSByb2xlLCBTVkdMZW5ndGhWYWx1ZSYg
dmFsdWUpCi0gICAgICAgIDogU1ZHUHJvcGVydHlUZWFyT2ZmPFNWR0xlbmd0aFZhbHVlPigmYW5p
bWF0ZWRQcm9wZXJ0eSwgcm9sZSwgdmFsdWUpCi0gICAgewotICAgIH0KLQotICAgIGV4cGxpY2l0
IFNWR0xlbmd0aChjb25zdCBTVkdMZW5ndGhWYWx1ZSYgaW5pdGlhbFZhbHVlKQotICAgICAgICA6
IFNWR1Byb3BlcnR5VGVhck9mZjxTVkdMZW5ndGhWYWx1ZT4oaW5pdGlhbFZhbHVlKQorICAgIAor
ICAgIFN0cmluZyB2YWx1ZUFzU3RyaW5nKCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7CisgICAgICAg
IHJldHVybiBtX3ZhbHVlLnZhbHVlQXNTdHJpbmcoKTsKICAgICB9CiB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0xlbmd0aExpc3QuaAppbmRleCA5YWJhYTRmZmU4MzdhOGEzOTg0OWY3ZWJhMTM4YTAxYjNm
YjZiZjAxLi5iMDE0N2ZhMjM0ZjRkOWE4OGY5ZmM5ZjMxZDVmMzg4OTczMTY3Njk1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdMZW5ndGhMaXN0LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxNi0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjUsMjcgKzI1LDkyIEBACiAKICNwcmFnbWEgb25jZQog
Ci0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmLmgiCi0jaW5jbHVkZSAi
U1ZHTGVuZ3RoTGlzdFZhbHVlcy5oIgotI2luY2x1ZGUgIlNWR0xpc3RQcm9wZXJ0eVRlYXJPZmYu
aCIKKyNpbmNsdWRlICJTVkdMZW5ndGguaCIKKyNpbmNsdWRlICJTVkdWYWx1ZVByb3BlcnR5TGlz
dC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNWR0xlbmd0aExpc3QgOiBwdWJs
aWMgU1ZHTGlzdFByb3BlcnR5VGVhck9mZjxTVkdMZW5ndGhMaXN0VmFsdWVzPiB7CitjbGFzcyBT
VkdMZW5ndGhMaXN0IDogcHVibGljIFNWR1ZhbHVlUHJvcGVydHlMaXN0PFNWR0xlbmd0aD4gewor
ICAgIHVzaW5nIEJhc2UgPSBTVkdWYWx1ZVByb3BlcnR5TGlzdDxTVkdMZW5ndGg+OworICAgIHVz
aW5nIEJhc2U6OkJhc2U7CisKIHB1YmxpYzoKLSAgICB1c2luZyBBbmltYXRlZExpc3RQcm9wZXJ0
eVRlYXJPZmYgPSBTVkdBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmY8U1ZHTGVuZ3RoTGlzdFZh
bHVlcz47Ci0gICAgdXNpbmcgTGlzdFdyYXBwZXJDYWNoZSA9IEFuaW1hdGVkTGlzdFByb3BlcnR5
VGVhck9mZjo6TGlzdFdyYXBwZXJDYWNoZTsKKyAgICBzdGF0aWMgUmVmPFNWR0xlbmd0aExpc3Q+
IGNyZWF0ZShTVkdMZW5ndGhNb2RlIGxlbmd0aE1vZGUgPSBMZW5ndGhNb2RlT3RoZXIpCisgICAg
eworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdMZW5ndGhMaXN0KGxlbmd0aE1vZGUp
KTsKKyAgICB9CiAKLSAgICBzdGF0aWMgUmVmPFNWR0xlbmd0aExpc3Q+IGNyZWF0ZShBbmltYXRl
ZExpc3RQcm9wZXJ0eVRlYXJPZmYmIGFuaW1hdGVkUHJvcGVydHksIFNWR1Byb3BlcnR5Um9sZSBy
b2xlLCBTVkdMZW5ndGhMaXN0VmFsdWVzJiB2YWx1ZXMsIExpc3RXcmFwcGVyQ2FjaGUmIHdyYXBw
ZXJzKQorICAgIHN0YXRpYyBSZWY8U1ZHTGVuZ3RoTGlzdD4gY3JlYXRlKFNWR1Byb3BlcnR5T3du
ZXIqIG93bmVyLCBTVkdQcm9wZXJ0eUFjY2VzcyBhY2Nlc3MsIFNWR0xlbmd0aE1vZGUgbGVuZ3Ro
TW9kZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNWR0xlbmd0aExpc3Qo
YW5pbWF0ZWRQcm9wZXJ0eSwgcm9sZSwgdmFsdWVzLCB3cmFwcGVycykpOworICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBTVkdMZW5ndGhMaXN0KG93bmVyLCBhY2Nlc3MsIGxlbmd0aE1vZGUp
KTsKKyAgICB9CisKKyAgICBzdGF0aWMgUmVmPFNWR0xlbmd0aExpc3Q+IGNyZWF0ZShjb25zdCBT
VkdMZW5ndGhMaXN0JiBvdGhlciwgU1ZHUHJvcGVydHlBY2Nlc3MgYWNjZXNzKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU1ZHTGVuZ3RoTGlzdChvdGhlciwgYWNjZXNzKSk7
CisgICAgfQorCisgICAgU1ZHTGVuZ3RoTW9kZSBsZW5ndGhNb2RlKCkgY29uc3QgeyByZXR1cm4g
bV9sZW5ndGhNb2RlOyB9CisKKyAgICBib29sIHBhcnNlKGNvbnN0IFN0cmluZyYgdmFsdWUpCisg
ICAgeworICAgICAgICBjbGVhckl0ZW1zKCk7CisKKyAgICAgICAgYXV0byB1cGNvbnZlcnRlZENo
YXJhY3RlcnMgPSBTdHJpbmdWaWV3KHZhbHVlKS51cGNvbnZlcnRlZENoYXJhY3RlcnMoKTsKKyAg
ICAgICAgY29uc3QgVUNoYXIqIHB0ciA9IHVwY29udmVydGVkQ2hhcmFjdGVyczsKKyAgICAgICAg
Y29uc3QgVUNoYXIqIGVuZCA9IHB0ciArIHZhbHVlLmxlbmd0aCgpOworICAgICAgICB3aGlsZSAo
cHRyIDwgZW5kKSB7CisgICAgICAgICAgICBjb25zdCBVQ2hhciogc3RhcnQgPSBwdHI7CisgICAg
ICAgICAgICB3aGlsZSAocHRyIDwgZW5kICYmICpwdHIgIT0gJywnICYmICFpc1NWR1NwYWNlKCpw
dHIpKQorICAgICAgICAgICAgICAgIHB0cisrOworICAgICAgICAgICAgaWYgKHB0ciA9PSBzdGFy
dCkKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgU3RyaW5nIHZhbHVlU3Ry
aW5nKHN0YXJ0LCBwdHIgLSBzdGFydCk7CisgICAgICAgICAgICBTVkdMZW5ndGhWYWx1ZSB2YWx1
ZShtX2xlbmd0aE1vZGUpOworICAgICAgICAgICAgaWYgKHZhbHVlLnNldFZhbHVlQXNTdHJpbmco
dmFsdWVTdHJpbmcpLmhhc0V4Y2VwdGlvbigpKQorICAgICAgICAgICAgICAgIGJyZWFrOworCisg
ICAgICAgICAgICBhcHBlbmQoU1ZHTGVuZ3RoOjpjcmVhdGUodmFsdWUpKTsKKyAgICAgICAgICAg
IHNraXBPcHRpb25hbFNWR1NwYWNlc09yRGVsaW1pdGVyKHB0ciwgZW5kKTsKKyAgICAgICAgfQor
CisgICAgICAgIHJldHVybiBwdHIgPT0gZW5kOwogICAgIH0KIAorICAgIFN0cmluZyB2YWx1ZUFz
U3RyaW5nKCkgY29uc3Qgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIFN0cmluZ0J1aWxkZXIgYnVp
bGRlcjsKKworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGxlbmd0aCA6IG1faXRlbXMpIHsKKyAg
ICAgICAgICAgIGlmIChidWlsZGVyLmxlbmd0aCgpKQorICAgICAgICAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKCcgJyk7CisKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGxlbmd0aC0+dmFsdWUo
KS52YWx1ZUFzU3RyaW5nKCkpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGJ1aWxkZXIu
dG9TdHJpbmcoKTsKKyAgICB9CisgICAgCiBwcml2YXRlOgotICAgIFNWR0xlbmd0aExpc3QoQW5p
bWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmJiBhbmltYXRlZFByb3BlcnR5LCBTVkdQcm9wZXJ0eVJv
bGUgcm9sZSwgU1ZHTGVuZ3RoTGlzdFZhbHVlcyYgdmFsdWVzLCBMaXN0V3JhcHBlckNhY2hlJiB3
cmFwcGVycykKLSAgICAgICAgOiBTVkdMaXN0UHJvcGVydHlUZWFyT2ZmPFNWR0xlbmd0aExpc3RW
YWx1ZXM+KGFuaW1hdGVkUHJvcGVydHksIHJvbGUsIHZhbHVlcywgd3JhcHBlcnMpCisgICAgU1ZH
TGVuZ3RoTGlzdChTVkdMZW5ndGhNb2RlIGxlbmd0aE1vZGUpCisgICAgICAgIDogbV9sZW5ndGhN
b2RlKGxlbmd0aE1vZGUpCiAgICAgewogICAgIH0KKworICAgIFNWR0xlbmd0aExpc3QoU1ZHUHJv
cGVydHlPd25lciogb3duZXIsIFNWR1Byb3BlcnR5QWNjZXNzIGFjY2VzcywgU1ZHTGVuZ3RoTW9k
ZSBsZW5ndGhNb2RlKQorICAgICAgICA6IEJhc2Uob3duZXIsIGFjY2VzcykKKyAgICAgICAgLCBt
X2xlbmd0aE1vZGUobGVuZ3RoTW9kZSkKKyAgICB7CisgICAgfQorCisgICAgU1ZHTGVuZ3RoTGlz
dChjb25zdCBTVkdMZW5ndGhMaXN0JiBvdGhlciwgU1ZHUHJvcGVydHlBY2Nlc3MgYWNjZXNzKQor
ICAgICAgICA6IEJhc2Uob3RoZXIsIGFjY2VzcykKKyAgICAgICAgLCBtX2xlbmd0aE1vZGUob3Ro
ZXIubGVuZ3RoTW9kZSgpKQorICAgIHsKKyAgICB9CisKKyAgICBTVkdMZW5ndGhNb2RlIG1fbGVu
Z3RoTW9kZSB7IExlbmd0aE1vZGVPdGhlciB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aExpc3RWYWx1ZXMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aExpc3RWYWx1ZXMuY3BwCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBiYTIwNjQ4MjNhMjgzMjFhNzNhZTU0YzYwMzc5ZTVjZjkyYjFi
MzQzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGhMaXN0VmFsdWVzLmNwcAorKysgL2Rldi9udWxsCkBAIC0x
LDY5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDggTmlrb2xh
cyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDQs
IDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KLSAqCi0gKiBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwot
ICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
LSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoK
LSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhl
IGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICog
Qm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgIlNWR0xlbmd0aExpc3RWYWx1ZXMuaCIKLQotI2luY2x1ZGUgIlNWR1BhcnNlclV0
aWxpdGllcy5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi12b2lkIFNWR0xlbmd0aExpc3RWYWx1ZXM6OnBhcnNlKGNvbnN0IFN0
cmluZyYgdmFsdWUsIFNWR0xlbmd0aE1vZGUgbW9kZSkKLXsKLSAgICBjbGVhcigpOwotCi0gICAg
YXV0byB1cGNvbnZlcnRlZENoYXJhY3RlcnMgPSBTdHJpbmdWaWV3KHZhbHVlKS51cGNvbnZlcnRl
ZENoYXJhY3RlcnMoKTsKLSAgICBjb25zdCBVQ2hhciogcHRyID0gdXBjb252ZXJ0ZWRDaGFyYWN0
ZXJzOwotICAgIGNvbnN0IFVDaGFyKiBlbmQgPSBwdHIgKyB2YWx1ZS5sZW5ndGgoKTsKLSAgICB3
aGlsZSAocHRyIDwgZW5kKSB7Ci0gICAgICAgIGNvbnN0IFVDaGFyKiBzdGFydCA9IHB0cjsKLSAg
ICAgICAgd2hpbGUgKHB0ciA8IGVuZCAmJiAqcHRyICE9ICcsJyAmJiAhaXNTVkdTcGFjZSgqcHRy
KSkKLSAgICAgICAgICAgIHB0cisrOwotICAgICAgICBpZiAocHRyID09IHN0YXJ0KQotICAgICAg
ICAgICAgYnJlYWs7Ci0KLSAgICAgICAgU1ZHTGVuZ3RoVmFsdWUgbGVuZ3RoKG1vZGUpOwotICAg
ICAgICBTdHJpbmcgdmFsdWVTdHJpbmcoc3RhcnQsIHB0ciAtIHN0YXJ0KTsKLSAgICAgICAgaWYg
KHZhbHVlU3RyaW5nLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgaWYg
KGxlbmd0aC5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVlU3RyaW5nKS5oYXNFeGNlcHRpb24oKSkKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgYXBwZW5kKGxlbmd0aCk7Ci0gICAgICAgIHNraXBP
cHRpb25hbFNWR1NwYWNlc09yRGVsaW1pdGVyKHB0ciwgZW5kKTsKLSAgICB9Ci19Ci0KLVN0cmlu
ZyBTVkdMZW5ndGhMaXN0VmFsdWVzOjp2YWx1ZUFzU3RyaW5nKCkgY29uc3QKLXsKLSAgICBTdHJp
bmdCdWlsZGVyIGJ1aWxkZXI7Ci0KLSAgICB1bnNpZ25lZCBzaXplID0gdGhpcy0+c2l6ZSgpOwot
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgaWYgKGkg
PiAwKQotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKLQotICAgICAgICBidWlsZGVy
LmFwcGVuZChhdChpKS52YWx1ZUFzU3RyaW5nKCkpOwotICAgIH0KLQotICAgIHJldHVybiBidWls
ZGVyLnRvU3RyaW5nKCk7Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdMZW5ndGhMaXN0VmFsdWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoTGlzdFZh
bHVlcy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ODQyZTdjMDViZDgwNGRiZmNm
YTZkODNkMGE0NGIyZWY5ZDczZGE4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGhMaXN0VmFsdWVzLmgKKysr
IC9kZXYvbnVsbApAQCAtMSw1OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAy
MDA1LCAyMDA2LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgot
ICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+
Ci0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAot
ICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0K
LSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiU1ZHTGVuZ3RoVmFsdWUuaCIKLSNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgU1ZHTGVuZ3RoOwot
Y2xhc3MgU1ZHTGVuZ3RoTGlzdDsKLQotY2xhc3MgU1ZHTGVuZ3RoTGlzdFZhbHVlcyBmaW5hbCA6
IHB1YmxpYyBWZWN0b3I8U1ZHTGVuZ3RoVmFsdWU+IHsKLXB1YmxpYzoKLSAgICB2b2lkIHBhcnNl
KGNvbnN0IFN0cmluZyYgdmFsdWUsIFNWR0xlbmd0aE1vZGUpOwotICAgIFN0cmluZyB2YWx1ZUFz
U3RyaW5nKCkgY29uc3Q7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgU1ZHUHJvcGVydHlUcmFp
dHM8U1ZHTGVuZ3RoTGlzdFZhbHVlcz4gewotICAgIHN0YXRpYyBTVkdMZW5ndGhMaXN0VmFsdWVz
IGluaXRpYWxWYWx1ZSgpIHsgcmV0dXJuIHsgfTsgfQotICAgIHN0YXRpYyBTVkdMZW5ndGhMaXN0
VmFsdWVzIGZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcsIFNWR0xlbmd0aE1vZGUgbGVu
Z3RoTW9kZSkKLSAgICB7Ci0gICAgICAgIFNWR0xlbmd0aExpc3RWYWx1ZXMgbGlzdDsKLSAgICAg
ICAgbGlzdC5wYXJzZShzdHJpbmcsIGxlbmd0aE1vZGUpOwotICAgICAgICByZXR1cm4gbGlzdDsK
LSAgICB9Ci0gICAgc3RhdGljIE9wdGlvbmFsPFNWR0xlbmd0aExpc3RWYWx1ZXM+IHBhcnNlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lLCBjb25zdCBTdHJpbmcmIHN0cmluZykKLSAgICB7
Ci0gICAgICAgIFNWR0xlbmd0aExpc3RWYWx1ZXMgbGlzdDsKLSAgICAgICAgbGlzdC5wYXJzZShz
dHJpbmcsIFNWR0xlbmd0aFZhbHVlOjpsZW5ndGhNb2RlRm9yQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1
dGUoYXR0ck5hbWUpKTsKLSAgICAgICAgcmV0dXJuIGxpc3Q7Ci0gICAgfQotICAgIHN0YXRpYyBT
dHJpbmcgdG9TdHJpbmcoY29uc3QgU1ZHTGVuZ3RoTGlzdFZhbHVlcyYgdHlwZSkgeyByZXR1cm4g
dHlwZS52YWx1ZUFzU3RyaW5nKCk7IH0KLQotICAgIHVzaW5nIExpc3RJdGVtVHlwZSA9IFNWR0xl
bmd0aFZhbHVlOwotICAgIHVzaW5nIExpc3RJdGVtVGVhck9mZiA9IFNWR0xlbmd0aDsKLSAgICB1
c2luZyBMaXN0UHJvcGVydHlUZWFyT2ZmID0gU1ZHTGVuZ3RoTGlzdDsKLX07Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZUVsZW1lbnQuY3BwCmluZGV4IGRh
NTQwNjdiNDA1YzkwZjQyZTU2NTAzZWNkMDU2MjBmMjEyNjM5NDEuLjg5NzM0NGNjOWM5NTNjYmI4
MjM0ODVlMGEwY2ZjNTliZmE2Yzc4OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdMaW5lRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVFbGVtZW50
LmNwcApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIw
MDYsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgKiBDb3B5
cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4K
LSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTM1LDcgKzM1LDE0IEBAIGlubGluZSBTVkdMaW5lRWxl
bWVudDo6U1ZHTGluZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1l
bnQmIGRvCiAgICAgLCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKHRoaXMpCiB7CiAgICAg
QVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmxpbmVUYWcpKTsKLSAgICByZWdpc3RlckF0dHJp
YnV0ZXMoKTsKKworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKKyAgICBzdGQ6
OmNhbGxfb25jZShvbmNlRmxhZywgW10geworICAgICAgICBQcm9wZXJ0eVJlZ2lzdHJ5OjpyZWdp
c3RlclByb3BlcnR5PFNWR05hbWVzOjp4MUF0dHIsICZTVkdMaW5lRWxlbWVudDo6bV94MT4oKTsK
KyAgICAgICAgUHJvcGVydHlSZWdpc3RyeTo6cmVnaXN0ZXJQcm9wZXJ0eTxTVkdOYW1lczo6eTFB
dHRyLCAmU1ZHTGluZUVsZW1lbnQ6Om1feTE+KCk7CisgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6
OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6OngyQXR0ciwgJlNWR0xpbmVFbGVtZW50OjptX3gy
PigpOworICAgICAgICBQcm9wZXJ0eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5PFNWR05hbWVz
Ojp5MkF0dHIsICZTVkdMaW5lRWxlbWVudDo6bV95Mj4oKTsKKyAgICB9KTsKIH0KIAogUmVmPFNW
R0xpbmVFbGVtZW50PiBTVkdMaW5lRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKQEAgLTQzLDI5ICs1MCwxOCBAQCBSZWY8U1ZH
TGluZUVsZW1lbnQ+IFNWR0xpbmVFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmFtZSwgRG9jdW1lbgogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNWR0xpbmVFbGVtZW50
KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKLXZvaWQgU1ZHTGluZUVsZW1lbnQ6OnJlZ2lzdGVy
QXR0cmlidXRlcygpCi17Ci0gICAgYXV0byYgcmVnaXN0cnkgPSBhdHRyaWJ1dGVSZWdpc3RyeSgp
OwotICAgIGlmICghcmVnaXN0cnkuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0gICAgcmVn
aXN0cnkucmVnaXN0ZXJBdHRyaWJ1dGU8U1ZHTmFtZXM6OngxQXR0ciwgJlNWR0xpbmVFbGVtZW50
OjptX3gxPigpOwotICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjp5MUF0
dHIsICZTVkdMaW5lRWxlbWVudDo6bV95MT4oKTsKLSAgICByZWdpc3RyeS5yZWdpc3RlckF0dHJp
YnV0ZTxTVkdOYW1lczo6eDJBdHRyLCAmU1ZHTGluZUVsZW1lbnQ6Om1feDI+KCk7Ci0gICAgcmVn
aXN0cnkucmVnaXN0ZXJBdHRyaWJ1dGU8U1ZHTmFtZXM6OnkyQXR0ciwgJlNWR0xpbmVFbGVtZW50
OjptX3kyPigpOwotfQotCiB2b2lkIFNWR0xpbmVFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogewogICAg
IFNWR1BhcnNpbmdFcnJvciBwYXJzZUVycm9yID0gTm9FcnJvcjsKIAogICAgIGlmIChuYW1lID09
IFNWR05hbWVzOjp4MUF0dHIpCi0gICAgICAgIG1feDEuc2V0VmFsdWUoU1ZHTGVuZ3RoVmFsdWU6
OmNvbnN0cnVjdChMZW5ndGhNb2RlV2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yKSk7CisgICAgICAg
IG1feDEtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0
aE1vZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNW
R05hbWVzOjp5MUF0dHIpCi0gICAgICAgIG1feTEuc2V0VmFsdWUoU1ZHTGVuZ3RoVmFsdWU6OmNv
bnN0cnVjdChMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAgICAgICBt
X3kxLT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhN
b2RlSGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZH
TmFtZXM6OngyQXR0cikKLSAgICAgICAgbV94Mi5zZXRWYWx1ZShTVkdMZW5ndGhWYWx1ZTo6Y29u
c3RydWN0KExlbmd0aE1vZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKKyAgICAgICAgbV94
Mi0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9k
ZVdpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvcikpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFt
ZXM6OnkyQXR0cikKLSAgICAgICAgbV95Mi5zZXRWYWx1ZShTVkdMZW5ndGhWYWx1ZTo6Y29uc3Ry
dWN0KExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7CisgICAgICAgIG1feTIt
PnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVI
ZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7CiAKICAgICByZXBvcnRBdHRyaWJ1dGVQYXJzaW5n
RXJyb3IocGFyc2VFcnJvciwgbmFtZSwgdmFsdWUpOwogCkBAIC03NSw3ICs3MSw3IEBAIHZvaWQg
U1ZHTGluZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUs
IGNvbnN0IEF0b21pY1N0cmluCiAKIHZvaWQgU1ZHTGluZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNo
YW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7Ci0gICAgaWYgKGlzS25vd25B
dHRyaWJ1dGUoYXR0ck5hbWUpKSB7CisgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25B
dHRyaWJ1dGUoYXR0ck5hbWUpKSB7CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQg
Z3VhcmQoKnRoaXMpOwogICAgICAgICB1cGRhdGVSZWxhdGl2ZUxlbmd0aHNJbmZvcm1hdGlvbigp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZUVsZW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lRWxlbWVudC5oCmluZGV4IDE3NTJlYzgxMjljMGM2YjFj
NWFjZGU0ZDFkYjQ2MDVkZmEyMmQxZDIuLjA4MDE0MDc2ZWVhNTlmZDI5NWQwMjQ1MGMwZWExMzdl
MDExYzJmZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lRWxlbWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lRWxlbWVudC5oCkBAIC0yMSw3ICsyMSw2
IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRMZW5ndGguaCIKICNp
bmNsdWRlICJTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLmgiCiAjaW5jbHVkZSAiU1ZHR2Vv
bWV0cnlFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKQEAgLTMzLDMyICszMiwyNSBA
QCBjbGFzcyBTVkdMaW5lRWxlbWVudCBmaW5hbCA6IHB1YmxpYyBTVkdHZW9tZXRyeUVsZW1lbnQs
IHB1YmxpYyBTVkdFeHRlcm5hbFJlc291cgogcHVibGljOgogICAgIHN0YXRpYyBSZWY8U1ZHTGlu
ZUVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAotICAg
IGNvbnN0IFNWR0xlbmd0aFZhbHVlJiB4MSgpIGNvbnN0IHsgcmV0dXJuIG1feDEuY3VycmVudFZh
bHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBjb25zdCBTVkdMZW5ndGhWYWx1ZSYg
eTEoKSBjb25zdCB7IHJldHVybiBtX3kxLmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25lclByb3h5
KCkpOyB9Ci0gICAgY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIHgyKCkgY29uc3QgeyByZXR1cm4gbV94
Mi5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAgIGNvbnN0IFNWR0xl
bmd0aFZhbHVlJiB5MigpIGNvbnN0IHsgcmV0dXJuIG1feTIuY3VycmVudFZhbHVlKGF0dHJpYnV0
ZU93bmVyUHJveHkoKSk7IH0KKyAgICBjb25zdCBTVkdMZW5ndGhWYWx1ZSYgeDEoKSBjb25zdCB7
IHJldHVybiBtX3gxLT5jdXJyZW50VmFsdWUoKTsgfQorICAgIGNvbnN0IFNWR0xlbmd0aFZhbHVl
JiB5MSgpIGNvbnN0IHsgcmV0dXJuIG1feTEtPmN1cnJlbnRWYWx1ZSgpOyB9CisgICAgY29uc3Qg
U1ZHTGVuZ3RoVmFsdWUmIHgyKCkgY29uc3QgeyByZXR1cm4gbV94Mi0+Y3VycmVudFZhbHVlKCk7
IH0KKyAgICBjb25zdCBTVkdMZW5ndGhWYWx1ZSYgeTIoKSBjb25zdCB7IHJldHVybiBtX3kyLT5j
dXJyZW50VmFsdWUoKTsgfQogCi0gICAgUmVmUHRyPFNWR0FuaW1hdGVkTGVuZ3RoPiB4MUFuaW1h
dGVkKCkgeyByZXR1cm4gbV94MS5hbmltYXRlZFByb3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHko
KSk7IH0KLSAgICBSZWZQdHI8U1ZHQW5pbWF0ZWRMZW5ndGg+IHkxQW5pbWF0ZWQoKSB7IHJldHVy
biBtX3kxLmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAgIFJl
ZlB0cjxTVkdBbmltYXRlZExlbmd0aD4geDJBbmltYXRlZCgpIHsgcmV0dXJuIG1feDIuYW5pbWF0
ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9Ci0gICAgUmVmUHRyPFNWR0FuaW1h
dGVkTGVuZ3RoPiB5MkFuaW1hdGVkKCkgeyByZXR1cm4gbV95Mi5hbmltYXRlZFByb3BlcnR5KGF0
dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KKyAgICBTVkdBbmltYXRlZExlbmd0aCYgeDFBbmltYXRl
ZCgpIHsgcmV0dXJuIG1feDE7IH0KKyAgICBTVkdBbmltYXRlZExlbmd0aCYgeTFBbmltYXRlZCgp
IHsgcmV0dXJuIG1feTE7IH0KKyAgICBTVkdBbmltYXRlZExlbmd0aCYgeDJBbmltYXRlZCgpIHsg
cmV0dXJuIG1feDI7IH0KKyAgICBTVkdBbmltYXRlZExlbmd0aCYgeTJBbmltYXRlZCgpIHsgcmV0
dXJuIG1feTI7IH0KIAogcHJpdmF0ZToKICAgICBTVkdMaW5lRWxlbWVudChjb25zdCBRdWFsaWZp
ZWROYW1lJiwgRG9jdW1lbnQmKTsKIAogICAgIHVzaW5nIEF0dHJpYnV0ZU93bmVyUHJveHkgPSBT
VkdBdHRyaWJ1dGVPd25lclByb3h5SW1wbDxTVkdMaW5lRWxlbWVudCwgU1ZHR2VvbWV0cnlFbGVt
ZW50LCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkPjsKLSAgICBzdGF0aWMgQXR0cmlidXRl
T3duZXJQcm94eTo6QXR0cmlidXRlUmVnaXN0cnkmIGF0dHJpYnV0ZVJlZ2lzdHJ5KCkgeyByZXR1
cm4gQXR0cmlidXRlT3duZXJQcm94eTo6YXR0cmlidXRlUmVnaXN0cnkoKTsgfQotICAgIHN0YXRp
YyB2b2lkIHJlZ2lzdGVyQXR0cmlidXRlcygpOwogICAgIGNvbnN0IFNWR0F0dHJpYnV0ZU93bmVy
UHJveHkmIGF0dHJpYnV0ZU93bmVyUHJveHkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2F0dHJp
YnV0ZU93bmVyUHJveHk7IH0KIAogICAgIHVzaW5nIFByb3BlcnR5UmVnaXN0cnkgPSBTVkdQcm9w
ZXJ0eU93bmVyUmVnaXN0cnk8U1ZHTGluZUVsZW1lbnQsIFNWR0dlb21ldHJ5RWxlbWVudCwgU1ZH
RXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZD47CiAgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3Ry
eSYgcHJvcGVydHlSZWdpc3RyeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdp
c3RyeTsgfQogCi0gICAgc3RhdGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiBhdHRyaWJ1dGVOYW1lKQotICAgIHsKLSAgICAgICAgcmV0dXJuIEF0dHJpYnV0ZU93
bmVyUHJveHk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSkgfHwgUHJvcGVydHlSZWdp
c3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsKLSAgICB9Ci0KICAgICB2b2lk
IHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcm
KSBmaW5hbDsKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYpIGZpbmFsOwogCkBAIC02OCwxMCArNjAsMTAgQEAgcHJpdmF0ZToKIAogICAgIEF0dHJpYnV0
ZU93bmVyUHJveHkgbV9hdHRyaWJ1dGVPd25lclByb3h5IHsgKnRoaXMgfTsKICAgICBQcm9wZXJ0
eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07Ci0gICAgU1ZHQW5pbWF0ZWRM
ZW5ndGhBdHRyaWJ1dGUgbV94MSB7IExlbmd0aE1vZGVXaWR0aCB9OwotICAgIFNWR0FuaW1hdGVk
TGVuZ3RoQXR0cmlidXRlIG1feTEgeyBMZW5ndGhNb2RlSGVpZ2h0IH07Ci0gICAgU1ZHQW5pbWF0
ZWRMZW5ndGhBdHRyaWJ1dGUgbV94MiB7IExlbmd0aE1vZGVXaWR0aCB9OwotICAgIFNWR0FuaW1h
dGVkTGVuZ3RoQXR0cmlidXRlIG1feTIgeyBMZW5ndGhNb2RlSGVpZ2h0IH07CisgICAgUmVmPFNW
R0FuaW1hdGVkTGVuZ3RoPiBtX3gxIHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBM
ZW5ndGhNb2RlV2lkdGgpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3kxIHsgU1ZH
QW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0KSB9OworICAgIFJl
ZjxTVkdBbmltYXRlZExlbmd0aD4gbV94MiB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhp
cywgTGVuZ3RoTW9kZVdpZHRoKSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV95MiB7
IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZUhlaWdodCkgfTsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xp
bmVhckdyYWRpZW50RWxlbWVudC5jcHAKaW5kZXggZWVmZGZiNTQyYjhlODdlMmY1MzhkNmI3Yjli
MmQyNThlY2M1YzlmZi4uNzFiOTVlM2MyOWFmZjdiMjJjMWQxOGJjOGY3NDdjMWZiMzZhMTY3NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5jcHAK
QEAgLTQsNyArNCw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggRXJpYyBTZWlkZWwgPGVyaWNA
d2Via2l0Lm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAwOCBEaXJrIFNjaHVsemUgPGtyaXRAd2Vi
a2l0Lm9yZz4KICAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAx
MC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTQ0LDcgKzQ0
LDE0IEBAIGlubGluZSBTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ6OlNWR0xpbmVhckdyYWRpZW50
RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0CiB7CiAgICAgLy8gU3BlYzogSWYgdGhlIHgy
IGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVkLCB0aGUgZWZmZWN0IGlzIGFzIGlmIGEgdmFsdWUg
b2YgIjEwMCUiIHdlcmUgc3BlY2lmaWVkLgogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVz
OjpsaW5lYXJHcmFkaWVudFRhZykpOwotICAgIHJlZ2lzdGVyQXR0cmlidXRlcygpOworCisgICAg
c3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VG
bGFnLCBbXSB7CisgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZH
TmFtZXM6OngxQXR0ciwgJlNWR0xpbmVhckdyYWRpZW50RWxlbWVudDo6bV94MT4oKTsKKyAgICAg
ICAgUHJvcGVydHlSZWdpc3RyeTo6cmVnaXN0ZXJQcm9wZXJ0eTxTVkdOYW1lczo6eTFBdHRyLCAm
U1ZHTGluZWFyR3JhZGllbnRFbGVtZW50OjptX3kxPigpOworICAgICAgICBQcm9wZXJ0eVJlZ2lz
dHJ5OjpyZWdpc3RlclByb3BlcnR5PFNWR05hbWVzOjp4MkF0dHIsICZTVkdMaW5lYXJHcmFkaWVu
dEVsZW1lbnQ6Om1feDI+KCk7CisgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJv
cGVydHk8U1ZHTmFtZXM6OnkyQXR0ciwgJlNWR0xpbmVhckdyYWRpZW50RWxlbWVudDo6bV95Mj4o
KTsKKyAgICB9KTsKIH0KIAogUmVmPFNWR0xpbmVhckdyYWRpZW50RWxlbWVudD4gU1ZHTGluZWFy
R3JhZGllbnRFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9j
dW1lbnQmIGRvY3VtZW50KQpAQCAtNTIsMjkgKzU5LDE4IEBAIFJlZjxTVkdMaW5lYXJHcmFkaWVu
dEVsZW1lbnQ+IFNWR0xpbmVhckdyYWRpZW50RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmll
ZE5hCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50KHRh
Z05hbWUsIGRvY3VtZW50KSk7CiB9CiAKLXZvaWQgU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50Ojpy
ZWdpc3RlckF0dHJpYnV0ZXMoKQotewotICAgIGF1dG8mIHJlZ2lzdHJ5ID0gYXR0cmlidXRlUmVn
aXN0cnkoKTsKLSAgICBpZiAoIXJlZ2lzdHJ5LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwot
ICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjp4MUF0dHIsICZTVkdMaW5l
YXJHcmFkaWVudEVsZW1lbnQ6Om1feDE+KCk7Ci0gICAgcmVnaXN0cnkucmVnaXN0ZXJBdHRyaWJ1
dGU8U1ZHTmFtZXM6OnkxQXR0ciwgJlNWR0xpbmVhckdyYWRpZW50RWxlbWVudDo6bV95MT4oKTsK
LSAgICByZWdpc3RyeS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1lczo6eDJBdHRyLCAmU1ZHTGlu
ZWFyR3JhZGllbnRFbGVtZW50OjptX3gyPigpOwotICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmli
dXRlPFNWR05hbWVzOjp5MkF0dHIsICZTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ6Om1feTI+KCk7
Ci19Ci0KIHZvaWQgU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogewogICAg
IFNWR1BhcnNpbmdFcnJvciBwYXJzZUVycm9yID0gTm9FcnJvcjsKIAogICAgIGlmIChuYW1lID09
IFNWR05hbWVzOjp4MUF0dHIpCi0gICAgICAgIG1feDEuc2V0VmFsdWUoU1ZHTGVuZ3RoVmFsdWU6
OmNvbnN0cnVjdChMZW5ndGhNb2RlV2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yKSk7CisgICAgICAg
IG1feDEtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0
aE1vZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNW
R05hbWVzOjp5MUF0dHIpCi0gICAgICAgIG1feTEuc2V0VmFsdWUoU1ZHTGVuZ3RoVmFsdWU6OmNv
bnN0cnVjdChMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAgICAgICBt
X3kxLT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhN
b2RlSGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZH
TmFtZXM6OngyQXR0cikKLSAgICAgICAgbV94Mi5zZXRWYWx1ZShTVkdMZW5ndGhWYWx1ZTo6Y29u
c3RydWN0KExlbmd0aE1vZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKKyAgICAgICAgbV94
Mi0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9k
ZVdpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvcikpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFt
ZXM6OnkyQXR0cikKLSAgICAgICAgbV95Mi5zZXRWYWx1ZShTVkdMZW5ndGhWYWx1ZTo6Y29uc3Ry
dWN0KExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7CisgICAgICAgIG1feTIt
PnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVI
ZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7CiAKICAgICByZXBvcnRBdHRyaWJ1dGVQYXJzaW5n
RXJyb3IocGFyc2VFcnJvciwgbmFtZSwgdmFsdWUpOwogCkBAIC04Myw3ICs3OSw3IEBAIHZvaWQg
U1ZHTGluZWFyR3JhZGllbnRFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiBuYW1lLCBjb25zdCBBCiAKIHZvaWQgU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50OjpzdmdB
dHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogewotICAgIGlm
IChpc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgeworICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5
Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewogICAgICAgICBJbnN0YW5jZUludmFsaWRh
dGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKICAgICAgICAgdXBkYXRlUmVsYXRpdmVMZW5ndGhzSW5m
b3JtYXRpb24oKTsKICAgICAgICAgaWYgKFJlbmRlck9iamVjdCogb2JqZWN0ID0gcmVuZGVyZXIo
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuaAppbmRl
eCA5MjBjZGQxYzcwYWI4NDE0NWU0MTE4NDU5MjBlNGY4ZWEyNDU0YzU1Li44M2M1ZGQzOGFlOGUw
YTk5MTBiNzdmMzM0ODRmYzU1MjdlZTJhMGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0xpbmVhckdyYWRpZW50RWxlbWVudC5oCkBAIC0yMSw3ICsyMSw2IEBACiAKICNwcmFnbWEgb25j
ZQogCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRMZW5ndGguaCIKICNpbmNsdWRlICJTVkdHcmFkaWVu
dEVsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgogCkBAIC0zNiwzMiArMzUsMjUgQEAg
cHVibGljOgogCiAgICAgYm9vbCBjb2xsZWN0R3JhZGllbnRBdHRyaWJ1dGVzKExpbmVhckdyYWRp
ZW50QXR0cmlidXRlcyYpOwogCi0gICAgY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIHgxKCkgY29uc3Qg
eyByZXR1cm4gbV94MS5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAg
IGNvbnN0IFNWR0xlbmd0aFZhbHVlJiB5MSgpIGNvbnN0IHsgcmV0dXJuIG1feTEuY3VycmVudFZh
bHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBjb25zdCBTVkdMZW5ndGhWYWx1ZSYg
eDIoKSBjb25zdCB7IHJldHVybiBtX3gyLmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25lclByb3h5
KCkpOyB9Ci0gICAgY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIHkyKCkgY29uc3QgeyByZXR1cm4gbV95
Mi5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQorICAgIGNvbnN0IFNWR0xl
bmd0aFZhbHVlJiB4MSgpIGNvbnN0IHsgcmV0dXJuIG1feDEtPmN1cnJlbnRWYWx1ZSgpOyB9Cisg
ICAgY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIHkxKCkgY29uc3QgeyByZXR1cm4gbV95MS0+Y3VycmVu
dFZhbHVlKCk7IH0KKyAgICBjb25zdCBTVkdMZW5ndGhWYWx1ZSYgeDIoKSBjb25zdCB7IHJldHVy
biBtX3gyLT5jdXJyZW50VmFsdWUoKTsgfQorICAgIGNvbnN0IFNWR0xlbmd0aFZhbHVlJiB5Migp
IGNvbnN0IHsgcmV0dXJuIG1feTItPmN1cnJlbnRWYWx1ZSgpOyB9CiAKLSAgICBSZWZQdHI8U1ZH
QW5pbWF0ZWRMZW5ndGg+IHgxQW5pbWF0ZWQoKSB7IHJldHVybiBtX3gxLmFuaW1hdGVkUHJvcGVy
dHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAgIFJlZlB0cjxTVkdBbmltYXRlZExlbmd0
aD4geTFBbmltYXRlZCgpIHsgcmV0dXJuIG1feTEuYW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVP
d25lclByb3h5KCkpOyB9Ci0gICAgUmVmUHRyPFNWR0FuaW1hdGVkTGVuZ3RoPiB4MkFuaW1hdGVk
KCkgeyByZXR1cm4gbV94Mi5hbmltYXRlZFByb3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7
IH0KLSAgICBSZWZQdHI8U1ZHQW5pbWF0ZWRMZW5ndGg+IHkyQW5pbWF0ZWQoKSB7IHJldHVybiBt
X3kyLmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQorICAgIFNWR0Fu
aW1hdGVkTGVuZ3RoJiB4MUFuaW1hdGVkKCkgeyByZXR1cm4gbV94MTsgfQorICAgIFNWR0FuaW1h
dGVkTGVuZ3RoJiB5MUFuaW1hdGVkKCkgeyByZXR1cm4gbV95MTsgfQorICAgIFNWR0FuaW1hdGVk
TGVuZ3RoJiB4MkFuaW1hdGVkKCkgeyByZXR1cm4gbV94MjsgfQorICAgIFNWR0FuaW1hdGVkTGVu
Z3RoJiB5MkFuaW1hdGVkKCkgeyByZXR1cm4gbV95MjsgfQogCiBwcml2YXRlOgogICAgIFNWR0xp
bmVhckdyYWRpZW50RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAog
ICAgIHVzaW5nIEF0dHJpYnV0ZU93bmVyUHJveHkgPSBTVkdBdHRyaWJ1dGVPd25lclByb3h5SW1w
bDxTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQsIFNWR0dyYWRpZW50RWxlbWVudD47Ci0gICAgc3Rh
dGljIEF0dHJpYnV0ZU93bmVyUHJveHk6OkF0dHJpYnV0ZVJlZ2lzdHJ5JiBhdHRyaWJ1dGVSZWdp
c3RyeSgpIHsgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmF0dHJpYnV0ZVJlZ2lzdHJ5KCk7
IH0KLSAgICBzdGF0aWMgdm9pZCByZWdpc3RlckF0dHJpYnV0ZXMoKTsKICAgICBjb25zdCBTVkdB
dHRyaWJ1dGVPd25lclByb3h5JiBhdHRyaWJ1dGVPd25lclByb3h5KCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbV9hdHRyaWJ1dGVPd25lclByb3h5OyB9CiAKICAgICB1c2luZyBQcm9wZXJ0eVJlZ2lz
dHJ5ID0gU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5PFNWR0xpbmVhckdyYWRpZW50RWxlbWVudCwg
U1ZHR3JhZGllbnRFbGVtZW50PjsKICAgICBjb25zdCBTVkdQcm9wZXJ0eVJlZ2lzdHJ5JiBwcm9w
ZXJ0eVJlZ2lzdHJ5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wcm9wZXJ0eVJlZ2lzdHJ5OyB9
CiAKLSAgICBzdGF0aWMgYm9vbCBpc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IGF0dHJpYnV0ZU5hbWUpCi0gICAgewotICAgICAgICByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94
eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKSB8fCBQcm9wZXJ0eVJlZ2lzdHJ5Ojpp
c0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOwotICAgIH0KLQogICAgIHZvaWQgcGFyc2VB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJy
aWRlOwogICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikg
b3ZlcnJpZGU7CiAKQEAgLTcxLDEwICs2MywxMCBAQCBwcml2YXRlOgogCiAgICAgQXR0cmlidXRl
T3duZXJQcm94eSBtX2F0dHJpYnV0ZU93bmVyUHJveHkgeyAqdGhpcyB9OwogICAgIFByb3BlcnR5
UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKLSAgICBTVkdBbmltYXRlZExl
bmd0aEF0dHJpYnV0ZSBtX3gxIHsgTGVuZ3RoTW9kZVdpZHRoIH07Ci0gICAgU1ZHQW5pbWF0ZWRM
ZW5ndGhBdHRyaWJ1dGUgbV95MSB7IExlbmd0aE1vZGVIZWlnaHQgfTsKLSAgICBTVkdBbmltYXRl
ZExlbmd0aEF0dHJpYnV0ZSBtX3gyIHsgTGVuZ3RoTW9kZVdpZHRoLCAiMTAwJSIgfTsKLSAgICBT
VkdBbmltYXRlZExlbmd0aEF0dHJpYnV0ZSBtX3kyIHsgTGVuZ3RoTW9kZUhlaWdodCB9OworICAg
IFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV94MSB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUo
dGhpcywgTGVuZ3RoTW9kZVdpZHRoKSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV95
MSB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZUhlaWdodCkgfTsK
KyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feDIgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3Jl
YXRlKHRoaXMsIExlbmd0aE1vZGVXaWR0aCwgIjEwMCUiKSB9OworICAgIFJlZjxTVkdBbmltYXRl
ZExlbmd0aD4gbV95MiB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9k
ZUhlaWdodCkgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdNYXJrZXJFbGVtZW50LmNwcAppbmRleCBhMWZlN2I1ZWNhYTc1OGI3ZjRmNWVhMGU4MDMx
MGJjNDg4YjBlN2VkLi44YjZhMTJlNmNjMTQwZTlkMGUyMDRmYzgwMWQ0Y2QwN2IyZTE4MDcyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwCkBAIC00MCwxMCArNDAsMTMg
QEAgaW5saW5lIFNWR01hcmtlckVsZW1lbnQ6OlNWR01hcmtlckVsZW1lbnQoY29uc3QgUXVhbGlm
aWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQKIHsKICAgICAvLyBTcGVjOiBJZiB0aGUgbWFya2Vy
V2lkdGgvbWFya2VySGVpZ2h0IGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVkLCB0aGUgZWZmZWN0
IGlzIGFzIGlmIGEgdmFsdWUgb2YgIjMiIHdlcmUgc3BlY2lmaWVkLgogICAgIEFTU0VSVChoYXNU
YWdOYW1lKFNWR05hbWVzOjptYXJrZXJUYWcpKTsKLSAgICByZWdpc3RlckF0dHJpYnV0ZXMoKTsK
IAogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKICAgICBzdGQ6OmNhbGxfb25j
ZShvbmNlRmxhZywgW10geworICAgICAgICBQcm9wZXJ0eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3Bl
cnR5PFNWR05hbWVzOjpyZWZYQXR0ciwgJlNWR01hcmtlckVsZW1lbnQ6Om1fcmVmWD4oKTsKKyAg
ICAgICAgUHJvcGVydHlSZWdpc3RyeTo6cmVnaXN0ZXJQcm9wZXJ0eTxTVkdOYW1lczo6cmVmWUF0
dHIsICZTVkdNYXJrZXJFbGVtZW50OjptX3JlZlk+KCk7CisgICAgICAgIFByb3BlcnR5UmVnaXN0
cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6Om1hcmtlcldpZHRoQXR0ciwgJlNWR01hcmtl
ckVsZW1lbnQ6Om1fbWFya2VyV2lkdGg+KCk7CisgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJl
Z2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6Om1hcmtlckhlaWdodEF0dHIsICZTVkdNYXJrZXJFbGVt
ZW50OjptX21hcmtlckhlaWdodD4oKTsKICAgICAgICAgUHJvcGVydHlSZWdpc3RyeTo6cmVnaXN0
ZXJQcm9wZXJ0eTxTVkdOYW1lczo6bWFya2VyVW5pdHNBdHRyLCBTVkdNYXJrZXJVbml0c1R5cGUs
ICZTVkdNYXJrZXJFbGVtZW50OjptX21hcmtlclVuaXRzPigpOwogICAgICAgICBQcm9wZXJ0eVJl
Z2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5PFNWR05hbWVzOjpvcmllbnRBdHRyLCAmU1ZHTWFya2Vy
RWxlbWVudDo6bV9vcmllbnRBbmdsZSwgJlNWR01hcmtlckVsZW1lbnQ6Om1fb3JpZW50VHlwZT4o
KTsKICAgICB9KTsKQEAgLTU5LDE3ICs2Miw2IEBAIEFmZmluZVRyYW5zZm9ybSBTVkdNYXJrZXJF
bGVtZW50Ojp2aWV3Qm94VG9WaWV3VHJhbnNmb3JtKGZsb2F0IHZpZXdXaWR0aCwgZmxvYXQKICAg
ICByZXR1cm4gU1ZHRml0VG9WaWV3Qm94Ojp2aWV3Qm94VG9WaWV3VHJhbnNmb3JtKHZpZXdCb3go
KSwgcHJlc2VydmVBc3BlY3RSYXRpbygpLCB2aWV3V2lkdGgsIHZpZXdIZWlnaHQpOwogfQogCi12
b2lkIFNWR01hcmtlckVsZW1lbnQ6OnJlZ2lzdGVyQXR0cmlidXRlcygpCi17Ci0gICAgYXV0byYg
cmVnaXN0cnkgPSBhdHRyaWJ1dGVSZWdpc3RyeSgpOwotICAgIGlmICghcmVnaXN0cnkuaXNFbXB0
eSgpKQotICAgICAgICByZXR1cm47Ci0gICAgcmVnaXN0cnkucmVnaXN0ZXJBdHRyaWJ1dGU8U1ZH
TmFtZXM6OnJlZlhBdHRyLCAmU1ZHTWFya2VyRWxlbWVudDo6bV9yZWZYPigpOwotICAgIHJlZ2lz
dHJ5LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjpyZWZZQXR0ciwgJlNWR01hcmtlckVsZW1l
bnQ6Om1fcmVmWT4oKTsKLSAgICByZWdpc3RyeS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1lczo6
bWFya2VyV2lkdGhBdHRyLCAmU1ZHTWFya2VyRWxlbWVudDo6bV9tYXJrZXJXaWR0aD4oKTsKLSAg
ICByZWdpc3RyeS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1lczo6bWFya2VySGVpZ2h0QXR0ciwg
JlNWR01hcmtlckVsZW1lbnQ6Om1fbWFya2VySGVpZ2h0PigpOwotfQotCiB2b2lkIFNWR01hcmtl
ckVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0
IEF0b21pY1N0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6Om1hcmtl
clVuaXRzQXR0cikgewpAQCAtODksMTMgKzgxLDEzIEBAIHZvaWQgU1ZHTWFya2VyRWxlbWVudDo6
cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3Ry
CiAgICAgU1ZHUGFyc2luZ0Vycm9yIHBhcnNlRXJyb3IgPSBOb0Vycm9yOwogCiAgICAgaWYgKG5h
bWUgPT0gU1ZHTmFtZXM6OnJlZlhBdHRyKQotICAgICAgICBtX3JlZlguc2V0VmFsdWUoU1ZHTGVu
Z3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlV2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yKSk7
CisgICAgICAgIG1fcmVmWC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25z
dHJ1Y3QoTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvcikpOwogICAgIGVsc2UgaWYg
KG5hbWUgPT0gU1ZHTmFtZXM6OnJlZllBdHRyKQotICAgICAgICBtX3JlZlkuc2V0VmFsdWUoU1ZH
TGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJv
cikpOworICAgICAgICBtX3JlZlktPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6
Y29uc3RydWN0KExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7CiAgICAgZWxz
ZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6bWFya2VyV2lkdGhBdHRyKQotICAgICAgICBtX21hcmtl
cldpZHRoLnNldFZhbHVlKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZVdpZHRo
LCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAgICAgICBtX21hcmtlcldpZHRoLT5zZXRCYXNlVmFs
SW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlV2lkdGgsIHZhbHVl
LCBwYXJzZUVycm9yKSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6bWFya2VySGVp
Z2h0QXR0cikKLSAgICAgICAgbV9tYXJrZXJIZWlnaHQuc2V0VmFsdWUoU1ZHTGVuZ3RoVmFsdWU6
OmNvbnN0cnVjdChMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAgICAg
ICBtX21hcmtlckhlaWdodC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25z
dHJ1Y3QoTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKIAogICAgIHJlcG9y
dEF0dHJpYnV0ZVBhcnNpbmdFcnJvcihwYXJzZUVycm9yLCBuYW1lLCB2YWx1ZSk7CiAKQEAgLTEw
Niw5ICs5OCw5IEBAIHZvaWQgU1ZHTWFya2VyRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyCiAKIHZvaWQgU1ZHTWFya2VyRWxl
bWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkK
IHsKLSAgICBpZiAoaXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKKyAgICBpZiAoUHJvcGVy
dHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAgICAgSW5zdGFu
Y2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7Ci0gICAgICAgIGlmIChpc0FuaW1hdGVk
TGVuZ3RoQXR0cmlidXRlKGF0dHJOYW1lKSkKKyAgICAgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6
OmlzQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUoYXR0ck5hbWUpKQogICAgICAgICAgICAgdXBkYXRl
UmVsYXRpdmVMZW5ndGhzSW5mb3JtYXRpb24oKTsKICAgICAgICAgaWYgKFJlbmRlck9iamVjdCog
b2JqZWN0ID0gcmVuZGVyZXIoKSkKICAgICAgICAgICAgIG9iamVjdC0+c2V0TmVlZHNMYXlvdXQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5oCmluZGV4IDdjZDUxMWIwZTU1YTBm
NzNjZTFmMDk1YmViMzhhM2RlOWMzNGFiNjcuLmVmMzYwZTliYjUyYTkwYTE0MWE2ZWE0N2Q5MzZj
MmFjOWY3OTJlYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuaApAQCAtMjEs
NyArMjEsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlNWR0FuaW1hdGVkTGVuZ3Ro
LmgiCiAjaW5jbHVkZSAiU1ZHRWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR0V4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQuaCIKICNpbmNsdWRlICJTVkdGaXRUb1ZpZXdCb3guaCIKQEAgLTUzLDE4ICs1
MiwxOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRPcmllbnRUb0F1dG8oKTsKICAgICB2b2lkIHNl
dE9yaWVudFRvQW5nbGUoU1ZHQW5nbGUmKTsKIAotICAgIGNvbnN0IFNWR0xlbmd0aFZhbHVlJiBy
ZWZYKCkgY29uc3QgeyByZXR1cm4gbV9yZWZYLmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25lclBy
b3h5KCkpOyB9Ci0gICAgY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIHJlZlkoKSBjb25zdCB7IHJldHVy
biBtX3JlZlkuY3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBjb25z
dCBTVkdMZW5ndGhWYWx1ZSYgbWFya2VyV2lkdGgoKSBjb25zdCB7IHJldHVybiBtX21hcmtlcldp
ZHRoLmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9Ci0gICAgY29uc3QgU1ZH
TGVuZ3RoVmFsdWUmIG1hcmtlckhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fbWFya2VySGVpZ2h0
LmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CisgICAgY29uc3QgU1ZHTGVu
Z3RoVmFsdWUmIHJlZlgoKSBjb25zdCB7IHJldHVybiBtX3JlZlgtPmN1cnJlbnRWYWx1ZSgpOyB9
CisgICAgY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIHJlZlkoKSBjb25zdCB7IHJldHVybiBtX3JlZlkt
PmN1cnJlbnRWYWx1ZSgpOyB9CisgICAgY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIG1hcmtlcldpZHRo
KCkgY29uc3QgeyByZXR1cm4gbV9tYXJrZXJXaWR0aC0+Y3VycmVudFZhbHVlKCk7IH0KKyAgICBj
b25zdCBTVkdMZW5ndGhWYWx1ZSYgbWFya2VySGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9tYXJr
ZXJIZWlnaHQtPmN1cnJlbnRWYWx1ZSgpOyB9CiAgICAgU1ZHTWFya2VyVW5pdHNUeXBlIG1hcmtl
clVuaXRzKCkgY29uc3QgeyByZXR1cm4gbV9tYXJrZXJVbml0cy0+Y3VycmVudFZhbHVlPFNWR01h
cmtlclVuaXRzVHlwZT4oKTsgfQogICAgIGNvbnN0IFNWR0FuZ2xlVmFsdWUmIG9yaWVudEFuZ2xl
KCkgY29uc3QgeyByZXR1cm4gbV9vcmllbnRBbmdsZS0+Y3VycmVudFZhbHVlKCk7IH0KICAgICBT
VkdNYXJrZXJPcmllbnRUeXBlIG9yaWVudFR5cGUoKSBjb25zdCB7IHJldHVybiBtX29yaWVudFR5
cGUtPmN1cnJlbnRWYWx1ZTxTVkdNYXJrZXJPcmllbnRUeXBlPigpOyB9CiAKLSAgICBSZWZQdHI8
U1ZHQW5pbWF0ZWRMZW5ndGg+IHJlZlhBbmltYXRlZCgpIHsgcmV0dXJuIG1fcmVmWC5hbmltYXRl
ZFByb3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBSZWZQdHI8U1ZHQW5pbWF0
ZWRMZW5ndGg+IHJlZllBbmltYXRlZCgpIHsgcmV0dXJuIG1fcmVmWS5hbmltYXRlZFByb3BlcnR5
KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBSZWZQdHI8U1ZHQW5pbWF0ZWRMZW5ndGg+
IG1hcmtlcldpZHRoQW5pbWF0ZWQoKSB7IHJldHVybiBtX21hcmtlcldpZHRoLmFuaW1hdGVkUHJv
cGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAgIFJlZlB0cjxTVkdBbmltYXRlZExl
bmd0aD4gbWFya2VySGVpZ2h0QW5pbWF0ZWQoKSB7IHJldHVybiBtX21hcmtlckhlaWdodC5hbmlt
YXRlZFByb3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KKyAgICBTVkdBbmltYXRlZExl
bmd0aCYgcmVmWEFuaW1hdGVkKCkgeyByZXR1cm4gbV9yZWZYOyB9CisgICAgU1ZHQW5pbWF0ZWRM
ZW5ndGgmIHJlZllBbmltYXRlZCgpIHsgcmV0dXJuIG1fcmVmWTsgfQorICAgIFNWR0FuaW1hdGVk
TGVuZ3RoJiBtYXJrZXJXaWR0aEFuaW1hdGVkKCkgeyByZXR1cm4gbV9tYXJrZXJXaWR0aDsgfQor
ICAgIFNWR0FuaW1hdGVkTGVuZ3RoJiBtYXJrZXJIZWlnaHRBbmltYXRlZCgpIHsgcmV0dXJuIG1f
bWFya2VySGVpZ2h0OyB9CiAgICAgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiYgbWFya2VyVW5pdHNB
bmltYXRlZCgpIHsgcmV0dXJuIG1fbWFya2VyVW5pdHM7IH0KICAgICBTVkdBbmltYXRlZEFuZ2xl
JiBvcmllbnRBbmdsZUFuaW1hdGVkKCkgeyByZXR1cm4gbV9vcmllbnRBbmdsZTsgfQogICAgIFJl
ZjxTVkdBbmltYXRlZEVudW1lcmF0aW9uPiBvcmllbnRUeXBlQW5pbWF0ZWQoKSB7IHJldHVybiBt
X29yaWVudFR5cGUuY29weVJlZigpOyB9CkBAIC03MywxOSArNzIsMTEgQEAgcHJpdmF0ZToKICAg
ICBTVkdNYXJrZXJFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCiAg
ICAgdXNpbmcgQXR0cmlidXRlT3duZXJQcm94eSA9IFNWR0F0dHJpYnV0ZU93bmVyUHJveHlJbXBs
PFNWR01hcmtlckVsZW1lbnQsIFNWR0VsZW1lbnQsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWQsIFNWR0ZpdFRvVmlld0JveD47Ci0gICAgc3RhdGljIEF0dHJpYnV0ZU93bmVyUHJveHk6OkF0
dHJpYnV0ZVJlZ2lzdHJ5JiBhdHRyaWJ1dGVSZWdpc3RyeSgpIHsgcmV0dXJuIEF0dHJpYnV0ZU93
bmVyUHJveHk6OmF0dHJpYnV0ZVJlZ2lzdHJ5KCk7IH0KLSAgICBzdGF0aWMgdm9pZCByZWdpc3Rl
ckF0dHJpYnV0ZXMoKTsKICAgICBjb25zdCBTVkdBdHRyaWJ1dGVPd25lclByb3h5JiBhdHRyaWJ1
dGVPd25lclByb3h5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9hdHRyaWJ1dGVPd25lclByb3h5
OyB9CiAKICAgICB1c2luZyBQcm9wZXJ0eVJlZ2lzdHJ5ID0gU1ZHUHJvcGVydHlPd25lclJlZ2lz
dHJ5PFNWR01hcmtlckVsZW1lbnQsIFNWR0VsZW1lbnQsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQsIFNWR0ZpdFRvVmlld0JveD47CiAgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYg
cHJvcGVydHlSZWdpc3RyeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3Ry
eTsgfQogCi0gICAgc3RhdGljIGJvb2wgaXNBbmltYXRlZExlbmd0aEF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5
Ojppc0FuaW1hdGVkTGVuZ3RoQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOyB9Ci0gICAgc3RhdGlj
IGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1l
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmlzS25vd25BdHRy
aWJ1dGUoYXR0cmlidXRlTmFtZSkgfHwgUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0
ZShhdHRyaWJ1dGVOYW1lKTsKLSAgICB9Ci0KICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lk
IHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogICAg
IHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJikgb3ZlcnJpZGU7CkBAIC0x
MDIsMTAgKzkzLDEwIEBAIHByaXZhdGU6CiAgICAgQXR0cmlidXRlT3duZXJQcm94eSBtX2F0dHJp
YnV0ZU93bmVyUHJveHkgeyAqdGhpcyB9OwogCiAgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3Bl
cnR5UmVnaXN0cnkgeyAqdGhpcyB9OwotICAgIFNWR0FuaW1hdGVkTGVuZ3RoQXR0cmlidXRlIG1f
cmVmWCB7IExlbmd0aE1vZGVXaWR0aCB9OwotICAgIFNWR0FuaW1hdGVkTGVuZ3RoQXR0cmlidXRl
IG1fcmVmWSB7IExlbmd0aE1vZGVIZWlnaHQgfTsKLSAgICBTVkdBbmltYXRlZExlbmd0aEF0dHJp
YnV0ZSBtX21hcmtlcldpZHRoIHsgTGVuZ3RoTW9kZVdpZHRoLCAiMyIgfTsKLSAgICBTVkdBbmlt
YXRlZExlbmd0aEF0dHJpYnV0ZSBtX21hcmtlckhlaWdodCB7IExlbmd0aE1vZGVIZWlnaHQsICIz
IiB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV9yZWZYIHsgU1ZHQW5pbWF0ZWRMZW5n
dGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlV2lkdGgpIH07CisgICAgUmVmPFNWR0FuaW1hdGVk
TGVuZ3RoPiBtX3JlZlkgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1v
ZGVIZWlnaHQpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX21hcmtlcldpZHRoIHsg
U1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlV2lkdGgsICIzIikgfTsK
KyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fbWFya2VySGVpZ2h0IHsgU1ZHQW5pbWF0ZWRM
ZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0LCAiMyIpIH07CiAgICAgUmVmPFNW
R0FuaW1hdGVkRW51bWVyYXRpb24+IG1fbWFya2VyVW5pdHMgeyBTVkdBbmltYXRlZEVudW1lcmF0
aW9uOjpjcmVhdGUodGhpcywgU1ZHTWFya2VyVW5pdHNTdHJva2VXaWR0aCkgfTsKICAgICBSZWY8
U1ZHQW5pbWF0ZWRBbmdsZT4gbV9vcmllbnRBbmdsZSB7IFNWR0FuaW1hdGVkQW5nbGU6OmNyZWF0
ZSh0aGlzKSB9OwogICAgIFJlZjxTVkdBbmltYXRlZE9yaWVudFR5cGU+IG1fb3JpZW50VHlwZSB7
IFNWR0FuaW1hdGVkT3JpZW50VHlwZTo6Y3JlYXRlKHRoaXMsIFNWR01hcmtlck9yaWVudEFuZ2xl
KSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hc2tFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5jcHAKaW5kZXggZjM3NzE1ODFmNjQy
ZDRmYjllNDAwZjQzOGQxNGNiNzg1YjU4YzVhNS4uNTZlMGNkMWIwOTZlYmIwYWQ5ZjE5NWJkNTE4
YjAyYjRmN2YyMWZkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hc2tFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuY3BwCkBAIC01
LDcgKzUsNyBAQAogICogQ29weXJpZ2h0IChDKSAyMDA5IERpcmsgU2NodWx6ZSA8a3JpdEB3ZWJr
aXQub3JnPgogICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDA5
LTIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQWRvYmUg
U3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDE4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
ICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCkBAIC00NywxMCArNDcsMTMgQEAgaW5saW5lIFNWR01hc2tFbGVtZW50OjpTVkdNYXNr
RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG8KICAgICAv
LyBTcGVjOiBJZiB0aGUgeC95IGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVkLCB0aGUgZWZmZWN0
IGlzIGFzIGlmIGEgdmFsdWUgb2YgIi0xMCUiIHdlcmUgc3BlY2lmaWVkLgogICAgIC8vIFNwZWM6
IElmIHRoZSB3aWR0aC9oZWlnaHQgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBlZmZl
Y3QgaXMgYXMgaWYgYSB2YWx1ZSBvZiAiMTIwJSIgd2VyZSBzcGVjaWZpZWQuCiAgICAgQVNTRVJU
KGhhc1RhZ05hbWUoU1ZHTmFtZXM6Om1hc2tUYWcpKTsKLSAgICByZWdpc3RlckF0dHJpYnV0ZXMo
KTsKIAogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKICAgICBzdGQ6OmNhbGxf
b25jZShvbmNlRmxhZywgW10geworICAgICAgICBQcm9wZXJ0eVJlZ2lzdHJ5OjpyZWdpc3RlclBy
b3BlcnR5PFNWR05hbWVzOjp4QXR0ciwgJlNWR01hc2tFbGVtZW50OjptX3g+KCk7CisgICAgICAg
IFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6OnlBdHRyLCAmU1ZH
TWFza0VsZW1lbnQ6Om1feT4oKTsKKyAgICAgICAgUHJvcGVydHlSZWdpc3RyeTo6cmVnaXN0ZXJQ
cm9wZXJ0eTxTVkdOYW1lczo6d2lkdGhBdHRyLCAmU1ZHTWFza0VsZW1lbnQ6Om1fd2lkdGg+KCk7
CisgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6Omhl
aWdodEF0dHIsICZTVkdNYXNrRWxlbWVudDo6bV9oZWlnaHQ+KCk7CiAgICAgICAgIFByb3BlcnR5
UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6Om1hc2tVbml0c0F0dHIsIFNWR1Vu
aXRUeXBlczo6U1ZHVW5pdFR5cGUsICZTVkdNYXNrRWxlbWVudDo6bV9tYXNrVW5pdHM+KCk7CiAg
ICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6Om1hc2tD
b250ZW50VW5pdHNBdHRyLCBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlLCAmU1ZHTWFza0VsZW1l
bnQ6Om1fbWFza0NvbnRlbnRVbml0cz4oKTsKICAgICB9KTsKQEAgLTYxLDE3ICs2NCw2IEBAIFJl
ZjxTVkdNYXNrRWxlbWVudD4gU1ZHTWFza0VsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiB0YWdOYW1lLCBEb2N1bWVuCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU1ZHTWFza0Vs
ZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAotdm9pZCBTVkdNYXNrRWxlbWVudDo6cmVn
aXN0ZXJBdHRyaWJ1dGVzKCkKLXsKLSAgICBhdXRvJiByZWdpc3RyeSA9IGF0dHJpYnV0ZVJlZ2lz
dHJ5KCk7Ci0gICAgaWYgKCFyZWdpc3RyeS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLSAg
ICByZWdpc3RyeS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1lczo6eEF0dHIsICZTVkdNYXNrRWxl
bWVudDo6bV94PigpOwotICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjp5
QXR0ciwgJlNWR01hc2tFbGVtZW50OjptX3k+KCk7Ci0gICAgcmVnaXN0cnkucmVnaXN0ZXJBdHRy
aWJ1dGU8U1ZHTmFtZXM6OndpZHRoQXR0ciwgJlNWR01hc2tFbGVtZW50OjptX3dpZHRoPigpOwot
ICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjpoZWlnaHRBdHRyLCAmU1ZH
TWFza0VsZW1lbnQ6Om1faGVpZ2h0PigpOwotfQotCiB2b2lkIFNWR01hc2tFbGVtZW50OjpwYXJz
ZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcm
IHZhbHVlKQogewogICAgIGlmIChuYW1lID09IFNWR05hbWVzOjptYXNrVW5pdHNBdHRyKSB7CkBA
IC05MCwxMyArODIsMTMgQEAgdm9pZCBTVkdNYXNrRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW4KICAgICBTVkdQYXJzaW5n
RXJyb3IgcGFyc2VFcnJvciA9IE5vRXJyb3I7CiAKICAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6
eEF0dHIpCi0gICAgICAgIG1feC5zZXRWYWx1ZShTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExl
bmd0aE1vZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKKyAgICAgICAgbV94LT5zZXRCYXNl
VmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlV2lkdGgsIHZh
bHVlLCBwYXJzZUVycm9yKSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6eUF0dHIp
Ci0gICAgICAgIG1feS5zZXRWYWx1ZShTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1v
ZGVIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7CisgICAgICAgIG1feS0+c2V0QmFzZVZhbElu
dGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUs
IHBhcnNlRXJyb3IpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjp3aWR0aEF0dHIp
Ci0gICAgICAgIG1fd2lkdGguc2V0VmFsdWUoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5n
dGhNb2RlV2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yKSk7CisgICAgICAgIG1fd2lkdGgtPnNldEJh
c2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVXaWR0aCwg
dmFsdWUsIHBhcnNlRXJyb3IpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjpoZWln
aHRBdHRyKQotICAgICAgICBtX2hlaWdodC5zZXRWYWx1ZShTVkdMZW5ndGhWYWx1ZTo6Y29uc3Ry
dWN0KExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7CisgICAgICAgIG1faGVp
Z2h0LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhN
b2RlSGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikpOwogCiAgICAgcmVwb3J0QXR0cmlidXRlUGFy
c2luZ0Vycm9yKHBhcnNlRXJyb3IsIG5hbWUsIHZhbHVlKTsKIApAQCAtMTA3LDEzICs5OSwxMyBA
QCB2b2lkIFNWR01hc2tFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbgogCiB2b2lkIFNWR01hc2tFbGVtZW50OjpzdmdBdHRy
aWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogewotICAgIGlmIChp
c0FuaW1hdGVkTGVuZ3RoQXR0cmlidXRlKGF0dHJOYW1lKSkgeworICAgIGlmIChQcm9wZXJ0eVJl
Z2lzdHJ5Ojppc0FuaW1hdGVkTGVuZ3RoQXR0cmlidXRlKGF0dHJOYW1lKSkgewogICAgICAgICBJ
bnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKICAgICAgICAgaW52YWxpZGF0
ZVNWR1ByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxlKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBpZiAoaXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKKyAgICBpZiAoUHJvcGVy
dHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAgICAgaWYgKGF1
dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkKICAgICAgICAgICAgIHJlbmRlcmVyLT5z
ZXROZWVkc0xheW91dCgpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxl
bWVudC5oCmluZGV4IDM5MmExM2NmZjhlZjQ0MDk5YWY3YmE0NzRlZTM0OGIyMGEwZjY2ZDUuLmFi
MTc2MGIxYTFmOGJiMmY2ZDAxNmFlOWJkODIwZTM2MmRlMzg4NWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdNYXNrRWxlbWVudC5oCkBAIC0yMCw3ICsyMCw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5j
bHVkZSAiU1ZHQW5pbWF0ZWRMZW5ndGguaCIKICNpbmNsdWRlICJTVkdFbGVtZW50LmgiCiAjaW5j
bHVkZSAiU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5oIgogI2luY2x1ZGUgIlNWR05hbWVz
LmgiCkBAIC0zNCwxNyArMzMsMTcgQEAgY2xhc3MgU1ZHTWFza0VsZW1lbnQgZmluYWwgOiBwdWJs
aWMgU1ZHRWxlbWVudCwgcHVibGljIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWkKIHB1YmxpYzoK
ICAgICBzdGF0aWMgUmVmPFNWR01hc2tFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIERvY3VtZW50Jik7CiAKLSAgICBjb25zdCBTVkdMZW5ndGhWYWx1ZSYgeCgpIGNvbnN0IHsg
cmV0dXJuIG1feC5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAgIGNv
bnN0IFNWR0xlbmd0aFZhbHVlJiB5KCkgY29uc3QgeyByZXR1cm4gbV95LmN1cnJlbnRWYWx1ZShh
dHRyaWJ1dGVPd25lclByb3h5KCkpOyB9Ci0gICAgY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIHdpZHRo
KCkgY29uc3QgeyByZXR1cm4gbV93aWR0aC5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94
eSgpKTsgfQotICAgIGNvbnN0IFNWR0xlbmd0aFZhbHVlJiBoZWlnaHQoKSBjb25zdCB7IHJldHVy
biBtX2hlaWdodC5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQorICAgIGNv
bnN0IFNWR0xlbmd0aFZhbHVlJiB4KCkgY29uc3QgeyByZXR1cm4gbV94LT5jdXJyZW50VmFsdWUo
KTsgfQorICAgIGNvbnN0IFNWR0xlbmd0aFZhbHVlJiB5KCkgY29uc3QgeyByZXR1cm4gbV95LT5j
dXJyZW50VmFsdWUoKTsgfQorICAgIGNvbnN0IFNWR0xlbmd0aFZhbHVlJiB3aWR0aCgpIGNvbnN0
IHsgcmV0dXJuIG1fd2lkdGgtPmN1cnJlbnRWYWx1ZSgpOyB9CisgICAgY29uc3QgU1ZHTGVuZ3Ro
VmFsdWUmIGhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1faGVpZ2h0LT5jdXJyZW50VmFsdWUoKTsg
fQogICAgIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUgbWFza1VuaXRzKCkgY29uc3QgeyByZXR1
cm4gbV9tYXNrVW5pdHMtPmN1cnJlbnRWYWx1ZTxTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlPigp
OyB9CiAgICAgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSBtYXNrQ29udGVudFVuaXRzKCkgY29u
c3QgeyByZXR1cm4gbV9tYXNrQ29udGVudFVuaXRzLT5jdXJyZW50VmFsdWU8U1ZHVW5pdFR5cGVz
OjpTVkdVbml0VHlwZT4oKTsgfQogCi0gICAgUmVmUHRyPFNWR0FuaW1hdGVkTGVuZ3RoPiB4QW5p
bWF0ZWQoKSB7IHJldHVybiBtX3guYW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5
KCkpOyB9Ci0gICAgUmVmUHRyPFNWR0FuaW1hdGVkTGVuZ3RoPiB5QW5pbWF0ZWQoKSB7IHJldHVy
biBtX3kuYW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9Ci0gICAgUmVm
UHRyPFNWR0FuaW1hdGVkTGVuZ3RoPiB3aWR0aEFuaW1hdGVkKCkgeyByZXR1cm4gbV93aWR0aC5h
bmltYXRlZFByb3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBSZWZQdHI8U1ZH
QW5pbWF0ZWRMZW5ndGg+IGhlaWdodEFuaW1hdGVkKCkgeyByZXR1cm4gbV9oZWlnaHQuYW5pbWF0
ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CisgICAgU1ZHQW5pbWF0ZWRMZW5n
dGgmIHhBbmltYXRlZCgpIHsgcmV0dXJuIG1feDsgfQorICAgIFNWR0FuaW1hdGVkTGVuZ3RoJiB5
QW5pbWF0ZWQoKSB7IHJldHVybiBtX3k7IH0KKyAgICBTVkdBbmltYXRlZExlbmd0aCYgd2lkdGhB
bmltYXRlZCgpIHsgcmV0dXJuIG1fd2lkdGg7IH0KKyAgICBTVkdBbmltYXRlZExlbmd0aCYgaGVp
Z2h0QW5pbWF0ZWQoKSB7IHJldHVybiBtX2hlaWdodDsgfQogICAgIFNWR0FuaW1hdGVkRW51bWVy
YXRpb24mIG1hc2tVbml0c0FuaW1hdGVkKCkgeyByZXR1cm4gbV9tYXNrVW5pdHM7IH0KICAgICBT
VkdBbmltYXRlZEVudW1lcmF0aW9uJiBtYXNrQ29udGVudFVuaXRzQW5pbWF0ZWQoKSB7IHJldHVy
biBtX21hc2tDb250ZW50VW5pdHM7IH0KIApAQCAtNTksNyArNTgsNiBAQCBwcml2YXRlOgogICAg
IHVzaW5nIFByb3BlcnR5UmVnaXN0cnkgPSBTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk8U1ZHTWFz
a0VsZW1lbnQsIFNWR0VsZW1lbnQsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIFNWR1Rl
c3RzPjsKICAgICBjb25zdCBTVkdQcm9wZXJ0eVJlZ2lzdHJ5JiBwcm9wZXJ0eVJlZ2lzdHJ5KCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gbV9wcm9wZXJ0eVJlZ2lzdHJ5OyB9CiAKLSAgICBzdGF0aWMg
Ym9vbCBpc0FuaW1hdGVkTGVuZ3RoQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJp
YnV0ZU5hbWUpIHsgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmlzQW5pbWF0ZWRMZW5ndGhB
dHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7IH0KICAgICBzdGF0aWMgYm9vbCBpc0tub3duQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCiAgICAgewogICAgICAgICBy
ZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1l
KSB8fCBQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOwpA
QCAtNzcsMTAgKzc1LDEwIEBAIHByaXZhdGU6CiAKICAgICBBdHRyaWJ1dGVPd25lclByb3h5IG1f
YXR0cmlidXRlT3duZXJQcm94eSB7ICp0aGlzIH07CiAgICAgUHJvcGVydHlSZWdpc3RyeSBtX3By
b3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwotICAgIFNWR0FuaW1hdGVkTGVuZ3RoQXR0cmlidXRl
IG1feCB7IExlbmd0aE1vZGVXaWR0aCwgIi0xMCUiIH07Ci0gICAgU1ZHQW5pbWF0ZWRMZW5ndGhB
dHRyaWJ1dGUgbV95IHsgTGVuZ3RoTW9kZUhlaWdodCwgIi0xMCUiIH07Ci0gICAgU1ZHQW5pbWF0
ZWRMZW5ndGhBdHRyaWJ1dGUgbV93aWR0aCB7IExlbmd0aE1vZGVXaWR0aCwgIjEyMCUiIH07Ci0g
ICAgU1ZHQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUgbV9oZWlnaHQgeyBMZW5ndGhNb2RlSGVpZ2h0
LCAiMTIwJSIgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feCB7IFNWR0FuaW1hdGVk
TGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZVdpZHRoLCAiLTEwJSIpIH07CisgICAgUmVm
PFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3kgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMs
IExlbmd0aE1vZGVIZWlnaHQsICItMTAlIikgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+
IG1fd2lkdGggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVXaWR0
aCwgIjEyMCUiKSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV9oZWlnaHQgeyBTVkdB
bmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQsICIxMjAlIikgfTsK
ICAgICBSZWY8U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbj4gbV9tYXNrVW5pdHMgeyBTVkdBbmltYXRl
ZEVudW1lcmF0aW9uOjpjcmVhdGUodGhpcywgU1ZHVW5pdFR5cGVzOjpTVkdfVU5JVF9UWVBFX09C
SkVDVEJPVU5ESU5HQk9YKSB9OwogICAgIFJlZjxTVkdBbmltYXRlZEVudW1lcmF0aW9uPiBtX21h
c2tDb250ZW50VW5pdHMgeyBTVkdBbmltYXRlZEVudW1lcmF0aW9uOjpjcmVhdGUodGhpcywgU1ZH
VW5pdFR5cGVzOjpTVkdfVU5JVF9UWVBFX1VTRVJTUEFDRU9OVVNFKSB9OwogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3BwCmluZGV4IGEzY2I3ODU1OTUyOTRmNjUwNWRm
MmI3MDUyNDFiMTJkNDZjYzQ5MGYuLmEwNTUzYzYxZWUwYWMyMzUyMThmZTk4NTE1ZWYzNmQ0N2U5
MGE5NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmNwcApAQCAtNTcs
NiArNTcsMTAgQEAgaW5saW5lIFNWR1BhdHRlcm5FbGVtZW50OjpTVkdQYXR0ZXJuRWxlbWVudChj
b25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWUKIAogICAgIHN0YXRpYyBzdGQ6Om9u
Y2VfZmxhZyBvbmNlRmxhZzsKICAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10geworICAg
ICAgICBQcm9wZXJ0eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5PFNWR05hbWVzOjp4QXR0ciwg
JlNWR1BhdHRlcm5FbGVtZW50OjptX3g+KCk7CisgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJl
Z2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6OnlBdHRyLCAmU1ZHUGF0dGVybkVsZW1lbnQ6Om1feT4o
KTsKKyAgICAgICAgUHJvcGVydHlSZWdpc3RyeTo6cmVnaXN0ZXJQcm9wZXJ0eTxTVkdOYW1lczo6
d2lkdGhBdHRyLCAmU1ZHUGF0dGVybkVsZW1lbnQ6Om1fd2lkdGg+KCk7CisgICAgICAgIFByb3Bl
cnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6OmhlaWdodEF0dHIsICZTVkdQ
YXR0ZXJuRWxlbWVudDo6bV9oZWlnaHQ+KCk7CiAgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJl
Z2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6OnBhdHRlcm5Vbml0c0F0dHIsIFNWR1VuaXRUeXBlczo6
U1ZHVW5pdFR5cGUsICZTVkdQYXR0ZXJuRWxlbWVudDo6bV9wYXR0ZXJuVW5pdHM+KCk7CiAgICAg
ICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6OnBhdHRlcm5D
b250ZW50VW5pdHNBdHRyLCBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlLCAmU1ZHUGF0dGVybkVs
ZW1lbnQ6Om1fcGF0dGVybkNvbnRlbnRVbml0cz4oKTsKICAgICB9KTsKQEAgLTcyLDEwICs3Niw2
IEBAIHZvaWQgU1ZHUGF0dGVybkVsZW1lbnQ6OnJlZ2lzdGVyQXR0cmlidXRlcygpCiAgICAgYXV0
byYgcmVnaXN0cnkgPSBhdHRyaWJ1dGVSZWdpc3RyeSgpOwogICAgIGlmICghcmVnaXN0cnkuaXNF
bXB0eSgpKQogICAgICAgICByZXR1cm47Ci0gICAgcmVnaXN0cnkucmVnaXN0ZXJBdHRyaWJ1dGU8
U1ZHTmFtZXM6OnhBdHRyLCAmU1ZHUGF0dGVybkVsZW1lbnQ6Om1feD4oKTsKLSAgICByZWdpc3Ry
eS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1lczo6eUF0dHIsICZTVkdQYXR0ZXJuRWxlbWVudDo6
bV95PigpOwotICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjp3aWR0aEF0
dHIsICZTVkdQYXR0ZXJuRWxlbWVudDo6bV93aWR0aD4oKTsKLSAgICByZWdpc3RyeS5yZWdpc3Rl
ckF0dHJpYnV0ZTxTVkdOYW1lczo6aGVpZ2h0QXR0ciwgJlNWR1BhdHRlcm5FbGVtZW50OjptX2hl
aWdodD4oKTsKICAgICByZWdpc3RyeS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1lczo6cGF0dGVy
blRyYW5zZm9ybUF0dHIsICZTVkdQYXR0ZXJuRWxlbWVudDo6bV9wYXR0ZXJuVHJhbnNmb3JtPigp
OwogfQogCkBAIC0xMDQsMTMgKzEwNCwxMyBAQCB2b2lkIFNWR1BhdHRlcm5FbGVtZW50OjpwYXJz
ZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdAogICAg
IFNWR1BhcnNpbmdFcnJvciBwYXJzZUVycm9yID0gTm9FcnJvcjsKIAogICAgIGlmIChuYW1lID09
IFNWR05hbWVzOjp4QXR0cikKLSAgICAgICAgbV94LnNldFZhbHVlKFNWR0xlbmd0aFZhbHVlOjpj
b25zdHJ1Y3QoTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAgICAgICBt
X3gtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1v
ZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05h
bWVzOjp5QXR0cikKLSAgICAgICAgbV95LnNldFZhbHVlKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1
Y3QoTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKKyAgICAgICAgbV95LT5z
ZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlSGVp
Z2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6
OndpZHRoQXR0cikKLSAgICAgICAgbV93aWR0aC5zZXRWYWx1ZShTVkdMZW5ndGhWYWx1ZTo6Y29u
c3RydWN0KExlbmd0aE1vZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IsIEZvcmJpZE5lZ2F0aXZl
TGVuZ3RocykpOworICAgICAgICBtX3dpZHRoLT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3Ro
VmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlV2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yLCBGb3Ji
aWROZWdhdGl2ZUxlbmd0aHMpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjpoZWln
aHRBdHRyKQotICAgICAgICBtX2hlaWdodC5zZXRWYWx1ZShTVkdMZW5ndGhWYWx1ZTo6Y29uc3Ry
dWN0KExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yLCBGb3JiaWROZWdhdGl2ZUxl
bmd0aHMpKTsKKyAgICAgICAgbV9oZWlnaHQtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhW
YWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yLCBGb3Ji
aWROZWdhdGl2ZUxlbmd0aHMpKTsKIAogICAgIHJlcG9ydEF0dHJpYnV0ZVBhcnNpbmdFcnJvcihw
YXJzZUVycm9yLCBuYW1lLCB2YWx1ZSk7CiAKQEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lkIFNWR1Bh
dHRlcm5FbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBj
b25zdCBBdG9taWNTdAogCiB2b2lkIFNWR1BhdHRlcm5FbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFu
Z2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogewotICAgIGlmIChpc0FuaW1hdGVk
TGVuZ3RoQXR0cmlidXRlKGF0dHJOYW1lKSkgeworICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojpp
c0FuaW1hdGVkTGVuZ3RoQXR0cmlidXRlKGF0dHJOYW1lKSkgewogICAgICAgICBJbnN0YW5jZUlu
dmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKICAgICAgICAgaW52YWxpZGF0ZVNWR1ByZXNl
bnRhdGlvbkF0dHJpYnV0ZVN0eWxlKCk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1BhdHRlcm5FbGVtZW50LmgKaW5kZXggNGNjMGFjMTQxYjdhZWVmNGY0OWY4ZWMzM2RkN2Jj
OGI1YWRlOGJiZC4uZmRjMjZlNTRhOGU1YjFjNmU3NmE4YzJiNzBmMWQ3NDczZGI5NWY1OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmgKQEAgLTIxLDcgKzIxLDYgQEAKIAog
I3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJTVkdBbmltYXRlZExlbmd0aC5oIgogI2luY2x1ZGUg
IlNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdC5oIgogI2luY2x1ZGUgIlNWR0VsZW1lbnQuaCIKICNp
bmNsdWRlICJTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLmgiCkBAIC00NCwxOCArNDMsMTgg
QEAgcHVibGljOgogCiAgICAgQWZmaW5lVHJhbnNmb3JtIGxvY2FsQ29vcmRpbmF0ZVNwYWNlVHJh
bnNmb3JtKFNWR0xvY2F0YWJsZTo6Q1RNU2NvcGUpIGNvbnN0IGZpbmFsOwogCi0gICAgY29uc3Qg
U1ZHTGVuZ3RoVmFsdWUmIHgoKSBjb25zdCB7IHJldHVybiBtX3guY3VycmVudFZhbHVlKGF0dHJp
YnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBjb25zdCBTVkdMZW5ndGhWYWx1ZSYgeSgpIGNvbnN0
IHsgcmV0dXJuIG1feS5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAg
IGNvbnN0IFNWR0xlbmd0aFZhbHVlJiB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fd2lkdGguY3Vy
cmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBjb25zdCBTVkdMZW5ndGhW
YWx1ZSYgaGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9oZWlnaHQuY3VycmVudFZhbHVlKGF0dHJp
YnV0ZU93bmVyUHJveHkoKSk7IH0KKyAgICBjb25zdCBTVkdMZW5ndGhWYWx1ZSYgeCgpIGNvbnN0
IHsgcmV0dXJuIG1feC0+Y3VycmVudFZhbHVlKCk7IH0KKyAgICBjb25zdCBTVkdMZW5ndGhWYWx1
ZSYgeSgpIGNvbnN0IHsgcmV0dXJuIG1feS0+Y3VycmVudFZhbHVlKCk7IH0KKyAgICBjb25zdCBT
VkdMZW5ndGhWYWx1ZSYgd2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3dpZHRoLT5jdXJyZW50VmFs
dWUoKTsgfQorICAgIGNvbnN0IFNWR0xlbmd0aFZhbHVlJiBoZWlnaHQoKSBjb25zdCB7IHJldHVy
biBtX2hlaWdodC0+Y3VycmVudFZhbHVlKCk7IH0KICAgICBTVkdVbml0VHlwZXM6OlNWR1VuaXRU
eXBlIHBhdHRlcm5Vbml0cygpIGNvbnN0IHsgcmV0dXJuIG1fcGF0dGVyblVuaXRzLT5jdXJyZW50
VmFsdWU8U1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZT4oKTsgfQogICAgIFNWR1VuaXRUeXBlczo6
U1ZHVW5pdFR5cGUgcGF0dGVybkNvbnRlbnRVbml0cygpIGNvbnN0IHsgcmV0dXJuIG1fcGF0dGVy
bkNvbnRlbnRVbml0cy0+Y3VycmVudFZhbHVlPFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGU+KCk7
IH0KICAgICBjb25zdCBTVkdUcmFuc2Zvcm1MaXN0VmFsdWVzJiBwYXR0ZXJuVHJhbnNmb3JtKCkg
Y29uc3QgeyByZXR1cm4gbV9wYXR0ZXJuVHJhbnNmb3JtLmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVP
d25lclByb3h5KCkpOyB9CiAKLSAgICBSZWZQdHI8U1ZHQW5pbWF0ZWRMZW5ndGg+IHhBbmltYXRl
ZCgpIHsgcmV0dXJuIG1feC5hbmltYXRlZFByb3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7
IH0KLSAgICBSZWZQdHI8U1ZHQW5pbWF0ZWRMZW5ndGg+IHlBbmltYXRlZCgpIHsgcmV0dXJuIG1f
eS5hbmltYXRlZFByb3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBSZWZQdHI8
U1ZHQW5pbWF0ZWRMZW5ndGg+IHdpZHRoQW5pbWF0ZWQoKSB7IHJldHVybiBtX3dpZHRoLmFuaW1h
dGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAgIFJlZlB0cjxTVkdBbmlt
YXRlZExlbmd0aD4gaGVpZ2h0QW5pbWF0ZWQoKSB7IHJldHVybiBtX2hlaWdodC5hbmltYXRlZFBy
b3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KKyAgICBTVkdBbmltYXRlZExlbmd0aCYg
eEFuaW1hdGVkKCkgeyByZXR1cm4gbV94OyB9CisgICAgU1ZHQW5pbWF0ZWRMZW5ndGgmIHlBbmlt
YXRlZCgpIHsgcmV0dXJuIG1feTsgfQorICAgIFNWR0FuaW1hdGVkTGVuZ3RoJiB3aWR0aEFuaW1h
dGVkKCkgeyByZXR1cm4gbV93aWR0aDsgfQorICAgIFNWR0FuaW1hdGVkTGVuZ3RoJiBoZWlnaHRB
bmltYXRlZCgpIHsgcmV0dXJuIG1faGVpZ2h0OyB9CiAgICAgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlv
biYgcGF0dGVyblVuaXRzQW5pbWF0ZWQoKSB7IHJldHVybiBtX3BhdHRlcm5Vbml0czsgfQogICAg
IFNWR0FuaW1hdGVkRW51bWVyYXRpb24mIHBhdHRlcm5Db250ZW50VW5pdHNBbmltYXRlZCgpIHsg
cmV0dXJuIG1fcGF0dGVybkNvbnRlbnRVbml0czsgfQogICAgIFJlZlB0cjxTVkdBbmltYXRlZFRy
YW5zZm9ybUxpc3Q+IHBhdHRlcm5UcmFuc2Zvcm1BbmltYXRlZCgpIHsgcmV0dXJuIG1fcGF0dGVy
blRyYW5zZm9ybS5hbmltYXRlZFByb3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KQEAg
LTcxLDcgKzcwLDYgQEAgcHJpdmF0ZToKICAgICB1c2luZyBQcm9wZXJ0eVJlZ2lzdHJ5ID0gU1ZH
UHJvcGVydHlPd25lclJlZ2lzdHJ5PFNWR1BhdHRlcm5FbGVtZW50LCBTVkdFbGVtZW50LCBTVkdF
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBTVkdGaXRUb1ZpZXdCb3gsIFNWR1Rlc3RzLCBTVkdV
UklSZWZlcmVuY2U+OwogICAgIGNvbnN0IFNWR1Byb3BlcnR5UmVnaXN0cnkmIHByb3BlcnR5UmVn
aXN0cnkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Byb3BlcnR5UmVnaXN0cnk7IH0KIAotICAg
IHN0YXRpYyBib29sIGlzQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgYXR0cmlidXRlTmFtZSkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6aXNBbmltYXRl
ZExlbmd0aEF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsgfQogICAgIHN0YXRpYyBib29sIGlzS25v
d25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKICAgICB7CiAg
ICAgICAgIHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJp
YnV0ZU5hbWUpIHx8IFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRl
TmFtZSk7CkBAIC04OSwxMCArODcsMTAgQEAgcHJpdmF0ZToKIAogICAgIEF0dHJpYnV0ZU93bmVy
UHJveHkgbV9hdHRyaWJ1dGVPd25lclByb3h5IHsgKnRoaXMgfTsKICAgICBQcm9wZXJ0eVJlZ2lz
dHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07Ci0gICAgU1ZHQW5pbWF0ZWRMZW5ndGhB
dHRyaWJ1dGUgbV94IHsgTGVuZ3RoTW9kZVdpZHRoIH07Ci0gICAgU1ZHQW5pbWF0ZWRMZW5ndGhB
dHRyaWJ1dGUgbV95IHsgTGVuZ3RoTW9kZUhlaWdodCB9OwotICAgIFNWR0FuaW1hdGVkTGVuZ3Ro
QXR0cmlidXRlIG1fd2lkdGggeyBMZW5ndGhNb2RlV2lkdGggfTsKLSAgICBTVkdBbmltYXRlZExl
bmd0aEF0dHJpYnV0ZSBtX2hlaWdodCB7IExlbmd0aE1vZGVIZWlnaHQgfTsKKyAgICBSZWY8U1ZH
QW5pbWF0ZWRMZW5ndGg+IG1feCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVu
Z3RoTW9kZVdpZHRoKSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV95IHsgU1ZHQW5p
bWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0KSB9OworICAgIFJlZjxT
VkdBbmltYXRlZExlbmd0aD4gbV93aWR0aCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhp
cywgTGVuZ3RoTW9kZVdpZHRoKSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV9oZWln
aHQgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQpIH07
CiAgICAgUmVmPFNWR0FuaW1hdGVkRW51bWVyYXRpb24+IG1fcGF0dGVyblVuaXRzIHsgU1ZHQW5p
bWF0ZWRFbnVtZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQ
RV9PQkpFQ1RCT1VORElOR0JPWCkgfTsKICAgICBSZWY8U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbj4g
bV9wYXR0ZXJuQ29udGVudFVuaXRzIHsgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbjo6Y3JlYXRlKHRo
aXMsIFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9VU0VSU1BBQ0VPTlVTRSkgfTsKICAgICBT
VkdBbmltYXRlZFRyYW5zZm9ybUxpc3RBdHRyaWJ1dGUgbV9wYXR0ZXJuVHJhbnNmb3JtOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvaW50LmggYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHUG9pbnQuaAppbmRleCA1MjY1MjliZGE2ZDg3ZGNmYzUzNTc5MWViZDVmYjMwMGJkNDg3
ZTU4Li4yZGQ1ZTJlYjM4ZTAwN2UxYWQ1ZThmYTJkYTJhOWRkNjY3NDdjNTMyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9pbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHUG9pbnQuaApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgog
I2luY2x1ZGUgIlNWR01hdHJpeC5oIgorI2luY2x1ZGUgIlNWR1Byb3BlcnR5VHJhaXRzLmgiCiAj
aW5jbHVkZSAiU1ZHVmFsdWVQcm9wZXJ0eS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwCmluZGV4IGI4
OGRkNTZiYmQwOWU3N2JkZjlkNDdlNDgzNGRiOTk3ZThhNWM2YTYuLjJiNmE4OTNmYjY4NWJmNWYz
ZDM4OWIwZDU4NjA5MGZjMmE5MmQyNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdS
YWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwCkBAIC00LDcgKzQsNyBAQAogICogQ29weXJpZ2h0IChD
KSAyMDA4IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIw
MDggRGlyayBTY2h1bHplIDxrcml0QHdlYmtpdC5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIFJlc2Vh
cmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCkBAIC00NCw3ICs0NCwxNiBAQCBpbmxpbmUgU1ZHUmFkaWFsR3JhZGllbnRF
bGVtZW50OjpTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdAog
ewogICAgIC8vIFNwZWM6IElmIHRoZSBjeC9jeS9yL2ZyIGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lm
aWVkLCB0aGUgZWZmZWN0IGlzIGFzIGlmIGEgdmFsdWUgb2YgIjUwJSIgd2VyZSBzcGVjaWZpZWQu
CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OnJhZGlhbEdyYWRpZW50VGFnKSk7Ci0g
ICAgcmVnaXN0ZXJBdHRyaWJ1dGVzKCk7CisKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25j
ZUZsYWc7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKKyAgICAgICAgUHJvcGVy
dHlSZWdpc3RyeTo6cmVnaXN0ZXJQcm9wZXJ0eTxTVkdOYW1lczo6Y3hBdHRyLCAmU1ZHUmFkaWFs
R3JhZGllbnRFbGVtZW50OjptX2N4PigpOworICAgICAgICBQcm9wZXJ0eVJlZ2lzdHJ5OjpyZWdp
c3RlclByb3BlcnR5PFNWR05hbWVzOjpjeUF0dHIsICZTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ6
Om1fY3k+KCk7CisgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZH
TmFtZXM6OnJBdHRyLCAmU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50OjptX3I+KCk7CisgICAgICAg
IFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6OmZ4QXR0ciwgJlNW
R1JhZGlhbEdyYWRpZW50RWxlbWVudDo6bV9meD4oKTsKKyAgICAgICAgUHJvcGVydHlSZWdpc3Ry
eTo6cmVnaXN0ZXJQcm9wZXJ0eTxTVkdOYW1lczo6ZnlBdHRyLCAmU1ZHUmFkaWFsR3JhZGllbnRF
bGVtZW50OjptX2Z5PigpOworICAgICAgICBQcm9wZXJ0eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3Bl
cnR5PFNWR05hbWVzOjpmckF0dHIsICZTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ6Om1fZnI+KCk7
CisgICAgfSk7CiB9CiAKIFJlZjxTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ+IFNWR1JhZGlhbEdy
YWRpZW50RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3Vt
ZW50JiBkb2N1bWVudCkKQEAgLTUyLDM1ICs2MSwyMiBAQCBSZWY8U1ZHUmFkaWFsR3JhZGllbnRF
bGVtZW50PiBTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWRO
YQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudCh0YWdO
YW1lLCBkb2N1bWVudCkpOwogfQogCi12b2lkIFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudDo6cmVn
aXN0ZXJBdHRyaWJ1dGVzKCkKLXsKLSAgICBhdXRvJiByZWdpc3RyeSA9IGF0dHJpYnV0ZVJlZ2lz
dHJ5KCk7Ci0gICAgaWYgKCFyZWdpc3RyeS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLSAg
ICByZWdpc3RyeS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1lczo6Y3hBdHRyLCAmU1ZHUmFkaWFs
R3JhZGllbnRFbGVtZW50OjptX2N4PigpOwotICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRl
PFNWR05hbWVzOjpjeUF0dHIsICZTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ6Om1fY3k+KCk7Ci0g
ICAgcmVnaXN0cnkucmVnaXN0ZXJBdHRyaWJ1dGU8U1ZHTmFtZXM6OnJBdHRyLCAmU1ZHUmFkaWFs
R3JhZGllbnRFbGVtZW50OjptX3I+KCk7Ci0gICAgcmVnaXN0cnkucmVnaXN0ZXJBdHRyaWJ1dGU8
U1ZHTmFtZXM6OmZ4QXR0ciwgJlNWR1JhZGlhbEdyYWRpZW50RWxlbWVudDo6bV9meD4oKTsKLSAg
ICByZWdpc3RyeS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1lczo6ZnlBdHRyLCAmU1ZHUmFkaWFs
R3JhZGllbnRFbGVtZW50OjptX2Z5PigpOwotICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRl
PFNWR05hbWVzOjpmckF0dHIsICZTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ6Om1fZnI+KCk7Ci19
Ci0KIHZvaWQgU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogewogICAgIFNW
R1BhcnNpbmdFcnJvciBwYXJzZUVycm9yID0gTm9FcnJvcjsKIAogICAgIGlmIChuYW1lID09IFNW
R05hbWVzOjpjeEF0dHIpCi0gICAgICAgIG1fY3guc2V0VmFsdWUoU1ZHTGVuZ3RoVmFsdWU6OmNv
bnN0cnVjdChMZW5ndGhNb2RlV2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yKSk7CisgICAgICAgIG1f
Y3gtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1v
ZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05h
bWVzOjpjeUF0dHIpCi0gICAgICAgIG1fY3kuc2V0VmFsdWUoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0
cnVjdChMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAgICAgICBtX2N5
LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2Rl
SGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFt
ZXM6OnJBdHRyKQotICAgICAgICBtX3Iuc2V0VmFsdWUoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVj
dChMZW5ndGhNb2RlT3RoZXIsIHZhbHVlLCBwYXJzZUVycm9yLCBGb3JiaWROZWdhdGl2ZUxlbmd0
aHMpKTsKKyAgICAgICAgbV9yLT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNv
bnN0cnVjdChMZW5ndGhNb2RlT3RoZXIsIHZhbHVlLCBwYXJzZUVycm9yLCBGb3JiaWROZWdhdGl2
ZUxlbmd0aHMpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjpmeEF0dHIpCi0gICAg
ICAgIG1fZnguc2V0VmFsdWUoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlV2lk
dGgsIHZhbHVlLCBwYXJzZUVycm9yKSk7CisgICAgICAgIG1fZngtPnNldEJhc2VWYWxJbnRlcm5h
bChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVXaWR0aCwgdmFsdWUsIHBhcnNl
RXJyb3IpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjpmeUF0dHIpCi0gICAgICAg
IG1fZnkuc2V0VmFsdWUoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlSGVpZ2h0
LCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAgICAgICBtX2Z5LT5zZXRCYXNlVmFsSW50ZXJuYWwo
U1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSwgcGFyc2VF
cnJvcikpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OmZyQXR0cikKLSAgICAgICAg
bV9mci5zZXRWYWx1ZShTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVPdGhlciwg
dmFsdWUsIHBhcnNlRXJyb3IsIEZvcmJpZE5lZ2F0aXZlTGVuZ3RocykpOworICAgICAgICBtX2Zy
LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2Rl
T3RoZXIsIHZhbHVlLCBwYXJzZUVycm9yLCBGb3JiaWROZWdhdGl2ZUxlbmd0aHMpKTsKIAogICAg
IHJlcG9ydEF0dHJpYnV0ZVBhcnNpbmdFcnJvcihwYXJzZUVycm9yLCBuYW1lLCB2YWx1ZSk7CiAK
QEAgLTg5LDcgKzg1LDcgQEAgdm9pZCBTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ6OnBhcnNlQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEEKIAogdm9pZCBTVkdSYWRp
YWxHcmFkaWVudEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgYXR0ck5hbWUpCiB7Ci0gICAgaWYgKGlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Cisg
ICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CiAg
ICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwogICAgICAgICB1
cGRhdGVSZWxhdGl2ZUxlbmd0aHNJbmZvcm1hdGlvbigpOwogICAgICAgICBpZiAoUmVuZGVyT2Jq
ZWN0KiBvYmplY3QgPSByZW5kZXJlcigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JhZGlh
bEdyYWRpZW50RWxlbWVudC5oCmluZGV4IDU0ZThlMWM0ZjFkZDNmOWJiMzViMGQwYjk3MGViMWFi
YzMyZDFjNzAuLjY4NWYxYmE5ZjNkODRhOTIwOWQyZjkwZjRkZDdkYTgwMDI0YzBmNzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmgKQEAgLTIxLDcg
KzIxLDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJTVkdBbmltYXRlZExlbmd0aC5o
IgogI2luY2x1ZGUgIlNWR0dyYWRpZW50RWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR05hbWVzLmgi
CiAKQEAgLTM2LDI2ICszNSwyNCBAQCBwdWJsaWM6CiAKICAgICBib29sIGNvbGxlY3RHcmFkaWVu
dEF0dHJpYnV0ZXMoUmFkaWFsR3JhZGllbnRBdHRyaWJ1dGVzJik7CiAKLSAgICBjb25zdCBTVkdM
ZW5ndGhWYWx1ZSYgY3goKSBjb25zdCB7IHJldHVybiBtX2N4LmN1cnJlbnRWYWx1ZShhdHRyaWJ1
dGVPd25lclByb3h5KCkpOyB9Ci0gICAgY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIGN5KCkgY29uc3Qg
eyByZXR1cm4gbV9jeS5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAg
IGNvbnN0IFNWR0xlbmd0aFZhbHVlJiByKCkgY29uc3QgeyByZXR1cm4gbV9yLmN1cnJlbnRWYWx1
ZShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9Ci0gICAgY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIGZ4
KCkgY29uc3QgeyByZXR1cm4gbV9meC5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgp
KTsgfQotICAgIGNvbnN0IFNWR0xlbmd0aFZhbHVlJiBmeSgpIGNvbnN0IHsgcmV0dXJuIG1fZnku
Y3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBjb25zdCBTVkdMZW5n
dGhWYWx1ZSYgZnIoKSBjb25zdCB7IHJldHVybiBtX2ZyLmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVP
d25lclByb3h5KCkpOyB9CisgICAgY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIGN4KCkgY29uc3QgeyBy
ZXR1cm4gbV9jeC0+Y3VycmVudFZhbHVlKCk7IH0KKyAgICBjb25zdCBTVkdMZW5ndGhWYWx1ZSYg
Y3koKSBjb25zdCB7IHJldHVybiBtX2N5LT5jdXJyZW50VmFsdWUoKTsgfQorICAgIGNvbnN0IFNW
R0xlbmd0aFZhbHVlJiByKCkgY29uc3QgeyByZXR1cm4gbV9yLT5jdXJyZW50VmFsdWUoKTsgfQor
ICAgIGNvbnN0IFNWR0xlbmd0aFZhbHVlJiBmeCgpIGNvbnN0IHsgcmV0dXJuIG1fZngtPmN1cnJl
bnRWYWx1ZSgpOyB9CisgICAgY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIGZ5KCkgY29uc3QgeyByZXR1
cm4gbV9meS0+Y3VycmVudFZhbHVlKCk7IH0KKyAgICBjb25zdCBTVkdMZW5ndGhWYWx1ZSYgZnIo
KSBjb25zdCB7IHJldHVybiBtX2ZyLT5jdXJyZW50VmFsdWUoKTsgfQogCi0gICAgUmVmUHRyPFNW
R0FuaW1hdGVkTGVuZ3RoPiBjeEFuaW1hdGVkKCkgeyByZXR1cm4gbV9jeC5hbmltYXRlZFByb3Bl
cnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBSZWZQdHI8U1ZHQW5pbWF0ZWRMZW5n
dGg+IGN5QW5pbWF0ZWQoKSB7IHJldHVybiBtX2N5LmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRl
T3duZXJQcm94eSgpKTsgfQotICAgIFJlZlB0cjxTVkdBbmltYXRlZExlbmd0aD4gckFuaW1hdGVk
KCkgeyByZXR1cm4gbV9yLmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsg
fQotICAgIFJlZlB0cjxTVkdBbmltYXRlZExlbmd0aD4gZnhBbmltYXRlZCgpIHsgcmV0dXJuIG1f
ZnguYW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9Ci0gICAgUmVmUHRy
PFNWR0FuaW1hdGVkTGVuZ3RoPiBmeUFuaW1hdGVkKCkgeyByZXR1cm4gbV9meS5hbmltYXRlZFBy
b3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBSZWZQdHI8U1ZHQW5pbWF0ZWRM
ZW5ndGg+IGZyQW5pbWF0ZWQoKSB7IHJldHVybiBtX2ZyLmFuaW1hdGVkUHJvcGVydHkoYXR0cmli
dXRlT3duZXJQcm94eSgpKTsgfQorICAgIFNWR0FuaW1hdGVkTGVuZ3RoJiBjeEFuaW1hdGVkKCkg
eyByZXR1cm4gbV9jeDsgfQorICAgIFNWR0FuaW1hdGVkTGVuZ3RoJiBjeUFuaW1hdGVkKCkgeyBy
ZXR1cm4gbV9jeTsgfQorICAgIFNWR0FuaW1hdGVkTGVuZ3RoJiByQW5pbWF0ZWQoKSB7IHJldHVy
biBtX3I7IH0KKyAgICBTVkdBbmltYXRlZExlbmd0aCYgZnhBbmltYXRlZCgpIHsgcmV0dXJuIG1f
Zng7IH0KKyAgICBTVkdBbmltYXRlZExlbmd0aCYgZnlBbmltYXRlZCgpIHsgcmV0dXJuIG1fZnk7
IH0KKyAgICBTVkdBbmltYXRlZExlbmd0aCYgZnJBbmltYXRlZCgpIHsgcmV0dXJuIG1fZnI7IH0K
IAogcHJpdmF0ZToKICAgICBTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQoY29uc3QgUXVhbGlmaWVk
TmFtZSYsIERvY3VtZW50Jik7CiAKICAgICB1c2luZyBBdHRyaWJ1dGVPd25lclByb3h5ID0gU1ZH
QXR0cmlidXRlT3duZXJQcm94eUltcGw8U1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LCBTVkdHcmFk
aWVudEVsZW1lbnQ+OwotICAgIHN0YXRpYyBBdHRyaWJ1dGVPd25lclByb3h5OjpBdHRyaWJ1dGVS
ZWdpc3RyeSYgYXR0cmlidXRlUmVnaXN0cnkoKSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5
OjphdHRyaWJ1dGVSZWdpc3RyeSgpOyB9Ci0gICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJBdHRyaWJ1
dGVzKCk7CiAgICAgY29uc3QgU1ZHQXR0cmlidXRlT3duZXJQcm94eSYgYXR0cmlidXRlT3duZXJQ
cm94eSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYXR0cmlidXRlT3duZXJQcm94eTsgfQogICAg
IAogICAgIHVzaW5nIFByb3BlcnR5UmVnaXN0cnkgPSBTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk8
U1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LCBTVkdHcmFkaWVudEVsZW1lbnQ+OwpAQCAtNzAsMTIg
KzY3LDEyIEBAIHByaXZhdGU6CiAKICAgICBBdHRyaWJ1dGVPd25lclByb3h5IG1fYXR0cmlidXRl
T3duZXJQcm94eSB7ICp0aGlzIH07CiAgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVn
aXN0cnkgeyAqdGhpcyB9OwotICAgIFNWR0FuaW1hdGVkTGVuZ3RoQXR0cmlidXRlIG1fY3ggeyBM
ZW5ndGhNb2RlV2lkdGgsICI1MCUiIH07Ci0gICAgU1ZHQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUg
bV9jeSB7IExlbmd0aE1vZGVIZWlnaHQsICI1MCUiIH07Ci0gICAgU1ZHQW5pbWF0ZWRMZW5ndGhB
dHRyaWJ1dGUgbV9yIHsgTGVuZ3RoTW9kZU90aGVyLCAiNTAlIiB9OwotICAgIFNWR0FuaW1hdGVk
TGVuZ3RoQXR0cmlidXRlIG1fZnggeyBMZW5ndGhNb2RlV2lkdGggfTsKLSAgICBTVkdBbmltYXRl
ZExlbmd0aEF0dHJpYnV0ZSBtX2Z5IHsgTGVuZ3RoTW9kZUhlaWdodCB9OwotICAgIFNWR0FuaW1h
dGVkTGVuZ3RoQXR0cmlidXRlIG1fZnIgeyBMZW5ndGhNb2RlT3RoZXIsICIwJSIgfTsKKyAgICBS
ZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fY3ggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRo
aXMsIExlbmd0aE1vZGVXaWR0aCwgIjUwJSIpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3Ro
PiBtX2N5IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0
LCAiNTAlIikgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fciB7IFNWR0FuaW1hdGVk
TGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZU90aGVyLCAiNTAlIikgfTsKKyAgICBSZWY8
U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fZnggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMs
IExlbmd0aE1vZGVXaWR0aCkgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fZnkgeyBT
VkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQpIH07CisgICAg
UmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX2ZyIHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0
aGlzLCBMZW5ndGhNb2RlT3RoZXIsICIwJSIpIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmVjdEVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1JlY3RFbGVtZW50LmNwcAppbmRleCBjZmRmMTk2ZDAzNTE5
MTA5MmQyMDNkNmIxZjZkYTg4ZDQyMmQwYTFmLi40ZTE0Y2M2ZDc5ODhmNWI4NjJiYTVmYTgxMjIz
ZWFjYmM4YTBkYTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmVjdEVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSZWN0RWxlbWVudC5jcHAKQEAgLTIs
NyArMiw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDggTmlrb2xh
cyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQs
IDIwMDUsIDIwMDYsIDIwMDcgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KICAqIENvcHlyaWdodCAo
QykgMjAxNCBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTM2LDcgKzM2LDE2IEBAIGlubGluZSBTVkdSZWN0RWxl
bWVudDo6U1ZHUmVjdEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1l
bnQmIGRvCiAgICAgLCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKHRoaXMpCiB7CiAgICAg
QVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OnJlY3RUYWcpKTsKLSAgICByZWdpc3RlckF0dHJp
YnV0ZXMoKTsKKworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKKyAgICBzdGQ6
OmNhbGxfb25jZShvbmNlRmxhZywgW10geworICAgICAgICBQcm9wZXJ0eVJlZ2lzdHJ5OjpyZWdp
c3RlclByb3BlcnR5PFNWR05hbWVzOjp4QXR0ciwgJlNWR1JlY3RFbGVtZW50OjptX3g+KCk7Cisg
ICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6OnlBdHRy
LCAmU1ZHUmVjdEVsZW1lbnQ6Om1feT4oKTsKKyAgICAgICAgUHJvcGVydHlSZWdpc3RyeTo6cmVn
aXN0ZXJQcm9wZXJ0eTxTVkdOYW1lczo6d2lkdGhBdHRyLCAmU1ZHUmVjdEVsZW1lbnQ6Om1fd2lk
dGg+KCk7CisgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFt
ZXM6OmhlaWdodEF0dHIsICZTVkdSZWN0RWxlbWVudDo6bV9oZWlnaHQ+KCk7CisgICAgICAgIFBy
b3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6OnJ4QXR0ciwgJlNWR1Jl
Y3RFbGVtZW50OjptX3J4PigpOworICAgICAgICBQcm9wZXJ0eVJlZ2lzdHJ5OjpyZWdpc3RlclBy
b3BlcnR5PFNWR05hbWVzOjpyeUF0dHIsICZTVkdSZWN0RWxlbWVudDo6bV9yeT4oKTsKKyAgICB9
KTsKIH0KIAogUmVmPFNWR1JlY3RFbGVtZW50PiBTVkdSZWN0RWxlbWVudDo6Y3JlYXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKQEAgLTQ0LDM1ICs1
MywyMiBAQCBSZWY8U1ZHUmVjdEVsZW1lbnQ+IFNWR1JlY3RFbGVtZW50OjpjcmVhdGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbgogICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFNWR1JlY3RFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKLXZvaWQgU1ZHUmVjdEVs
ZW1lbnQ6OnJlZ2lzdGVyQXR0cmlidXRlcygpCi17Ci0gICAgYXV0byYgcmVnaXN0cnkgPSBhdHRy
aWJ1dGVSZWdpc3RyeSgpOwotICAgIGlmICghcmVnaXN0cnkuaXNFbXB0eSgpKQotICAgICAgICBy
ZXR1cm47Ci0gICAgcmVnaXN0cnkucmVnaXN0ZXJBdHRyaWJ1dGU8U1ZHTmFtZXM6OnhBdHRyLCAm
U1ZHUmVjdEVsZW1lbnQ6Om1feD4oKTsKLSAgICByZWdpc3RyeS5yZWdpc3RlckF0dHJpYnV0ZTxT
VkdOYW1lczo6eUF0dHIsICZTVkdSZWN0RWxlbWVudDo6bV95PigpOwotICAgIHJlZ2lzdHJ5LnJl
Z2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjp3aWR0aEF0dHIsICZTVkdSZWN0RWxlbWVudDo6bV93
aWR0aD4oKTsKLSAgICByZWdpc3RyeS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1lczo6aGVpZ2h0
QXR0ciwgJlNWR1JlY3RFbGVtZW50OjptX2hlaWdodD4oKTsKLSAgICByZWdpc3RyeS5yZWdpc3Rl
ckF0dHJpYnV0ZTxTVkdOYW1lczo6cnhBdHRyLCAmU1ZHUmVjdEVsZW1lbnQ6Om1fcng+KCk7Ci0g
ICAgcmVnaXN0cnkucmVnaXN0ZXJBdHRyaWJ1dGU8U1ZHTmFtZXM6OnJ5QXR0ciwgJlNWR1JlY3RF
bGVtZW50OjptX3J5PigpOwotfQotCiB2b2lkIFNWR1JlY3RFbGVtZW50OjpwYXJzZUF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQog
ewogICAgIFNWR1BhcnNpbmdFcnJvciBwYXJzZUVycm9yID0gTm9FcnJvcjsKIAogICAgIGlmIChu
YW1lID09IFNWR05hbWVzOjp4QXR0cikKLSAgICAgICAgbV94LnNldFZhbHVlKFNWR0xlbmd0aFZh
bHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAg
ICAgICBtX3gtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExl
bmd0aE1vZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKICAgICBlbHNlIGlmIChuYW1lID09
IFNWR05hbWVzOjp5QXR0cikKLSAgICAgICAgbV95LnNldFZhbHVlKFNWR0xlbmd0aFZhbHVlOjpj
b25zdHJ1Y3QoTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKKyAgICAgICAg
bV95LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhN
b2RlSGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZH
TmFtZXM6OnJ4QXR0cikKLSAgICAgICAgbV9yeC5zZXRWYWx1ZShTVkdMZW5ndGhWYWx1ZTo6Y29u
c3RydWN0KExlbmd0aE1vZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IsIEZvcmJpZE5lZ2F0aXZl
TGVuZ3RocykpOworICAgICAgICBtX3J4LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFs
dWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlV2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yLCBGb3JiaWRO
ZWdhdGl2ZUxlbmd0aHMpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjpyeUF0dHIp
Ci0gICAgICAgIG1fcnkuc2V0VmFsdWUoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhN
b2RlSGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvciwgRm9yYmlkTmVnYXRpdmVMZW5ndGhzKSk7Cisg
ICAgICAgIG1fcnktPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0
KExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yLCBGb3JiaWROZWdhdGl2ZUxlbmd0
aHMpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjp3aWR0aEF0dHIpCi0gICAgICAg
IG1fd2lkdGguc2V0VmFsdWUoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlV2lk
dGgsIHZhbHVlLCBwYXJzZUVycm9yLCBGb3JiaWROZWdhdGl2ZUxlbmd0aHMpKTsKKyAgICAgICAg
bV93aWR0aC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVu
Z3RoTW9kZVdpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvciwgRm9yYmlkTmVnYXRpdmVMZW5ndGhzKSk7
CiAgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6aGVpZ2h0QXR0cikKLSAgICAgICAgbV9o
ZWlnaHQuc2V0VmFsdWUoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlSGVpZ2h0
LCB2YWx1ZSwgcGFyc2VFcnJvciwgRm9yYmlkTmVnYXRpdmVMZW5ndGhzKSk7CisgICAgICAgIG1f
aGVpZ2h0LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5n
dGhNb2RlSGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvciwgRm9yYmlkTmVnYXRpdmVMZW5ndGhzKSk7
CiAKICAgICByZXBvcnRBdHRyaWJ1dGVQYXJzaW5nRXJyb3IocGFyc2VFcnJvciwgbmFtZSwgdmFs
dWUpOwogCkBAIC04Miw3ICs3OCw3IEBAIHZvaWQgU1ZHUmVjdEVsZW1lbnQ6OnBhcnNlQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluCiAKIHZvaWQg
U1ZHUmVjdEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYg
YXR0ck5hbWUpCiB7Ci0gICAgaWYgKGlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CisgICAg
aWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CiAgICAg
ICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwogICAgICAgICBpbnZh
bGlkYXRlU1ZHUHJlc2VudGF0aW9uQXR0cmlidXRlU3R5bGUoKTsKICAgICAgICAgcmV0dXJuOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JlY3RFbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHUmVjdEVsZW1lbnQuaAppbmRleCBhNjk3NDdjZjUzYmFlZWU4ZjMyNTlh
OTU0MGQ5ZjcyOGU5ZmVkYzQxLi41NzI2OWFhM2ZmNmRiY2Q0OTQ2YTExOTBiZWNhODk1ZDQ1NjRj
ODFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmVjdEVsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmVjdEVsZW1lbnQuaApAQCAtMjEsNyArMjEsNiBAQAog
CiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlNWR0FuaW1hdGVkTGVuZ3RoLmgiCiAjaW5jbHVk
ZSAiU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5oIgogI2luY2x1ZGUgIlNWR0dlb21ldHJ5
RWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR05hbWVzLmgiCkBAIC0zMywzNiArMzIsMjkgQEAgY2xh
c3MgU1ZHUmVjdEVsZW1lbnQgZmluYWwgOiBwdWJsaWMgU1ZHR2VvbWV0cnlFbGVtZW50LCBwdWJs
aWMgU1ZHRXh0ZXJuYWxSZXNvdXIKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFNWR1JlY3RFbGVt
ZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKLSAgICBjb25z
dCBTVkdMZW5ndGhWYWx1ZSYgeCgpIGNvbnN0IHsgcmV0dXJuIG1feC5jdXJyZW50VmFsdWUoYXR0
cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAgIGNvbnN0IFNWR0xlbmd0aFZhbHVlJiB5KCkgY29u
c3QgeyByZXR1cm4gbV95LmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9Ci0g
ICAgY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIHdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV93aWR0aC5j
dXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAgIGNvbnN0IFNWR0xlbmd0
aFZhbHVlJiBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX2hlaWdodC5jdXJyZW50VmFsdWUoYXR0
cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAgIGNvbnN0IFNWR0xlbmd0aFZhbHVlJiByeCgpIGNv
bnN0IHsgcmV0dXJuIG1fcnguY3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0K
LSAgICBjb25zdCBTVkdMZW5ndGhWYWx1ZSYgcnkoKSBjb25zdCB7IHJldHVybiBtX3J5LmN1cnJl
bnRWYWx1ZShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CisgICAgY29uc3QgU1ZHTGVuZ3RoVmFs
dWUmIHgoKSBjb25zdCB7IHJldHVybiBtX3gtPmN1cnJlbnRWYWx1ZSgpOyB9CisgICAgY29uc3Qg
U1ZHTGVuZ3RoVmFsdWUmIHkoKSBjb25zdCB7IHJldHVybiBtX3ktPmN1cnJlbnRWYWx1ZSgpOyB9
CisgICAgY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIHdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV93aWR0
aC0+Y3VycmVudFZhbHVlKCk7IH0KKyAgICBjb25zdCBTVkdMZW5ndGhWYWx1ZSYgaGVpZ2h0KCkg
Y29uc3QgeyByZXR1cm4gbV9oZWlnaHQtPmN1cnJlbnRWYWx1ZSgpOyB9CisgICAgY29uc3QgU1ZH
TGVuZ3RoVmFsdWUmIHJ4KCkgY29uc3QgeyByZXR1cm4gbV9yeC0+Y3VycmVudFZhbHVlKCk7IH0K
KyAgICBjb25zdCBTVkdMZW5ndGhWYWx1ZSYgcnkoKSBjb25zdCB7IHJldHVybiBtX3J5LT5jdXJy
ZW50VmFsdWUoKTsgfQogCi0gICAgUmVmUHRyPFNWR0FuaW1hdGVkTGVuZ3RoPiB4QW5pbWF0ZWQo
KSB7IHJldHVybiBtX3guYW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9
Ci0gICAgUmVmUHRyPFNWR0FuaW1hdGVkTGVuZ3RoPiB5QW5pbWF0ZWQoKSB7IHJldHVybiBtX3ku
YW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9Ci0gICAgUmVmUHRyPFNW
R0FuaW1hdGVkTGVuZ3RoPiB3aWR0aEFuaW1hdGVkKCkgeyByZXR1cm4gbV93aWR0aC5hbmltYXRl
ZFByb3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBSZWZQdHI8U1ZHQW5pbWF0
ZWRMZW5ndGg+IGhlaWdodEFuaW1hdGVkKCkgeyByZXR1cm4gbV9oZWlnaHQuYW5pbWF0ZWRQcm9w
ZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9Ci0gICAgUmVmUHRyPFNWR0FuaW1hdGVkTGVu
Z3RoPiByeEFuaW1hdGVkKCkgeyByZXR1cm4gbV9yeC5hbmltYXRlZFByb3BlcnR5KGF0dHJpYnV0
ZU93bmVyUHJveHkoKSk7IH0KLSAgICBSZWZQdHI8U1ZHQW5pbWF0ZWRMZW5ndGg+IHJ5QW5pbWF0
ZWQoKSB7IHJldHVybiBtX3J5LmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgp
KTsgfQorICAgIFNWR0FuaW1hdGVkTGVuZ3RoJiB4QW5pbWF0ZWQoKSB7IHJldHVybiBtX3g7IH0K
KyAgICBTVkdBbmltYXRlZExlbmd0aCYgeUFuaW1hdGVkKCkgeyByZXR1cm4gbV95OyB9CisgICAg
U1ZHQW5pbWF0ZWRMZW5ndGgmIHdpZHRoQW5pbWF0ZWQoKSB7IHJldHVybiBtX3dpZHRoOyB9Cisg
ICAgU1ZHQW5pbWF0ZWRMZW5ndGgmIGhlaWdodEFuaW1hdGVkKCkgeyByZXR1cm4gbV9oZWlnaHQ7
IH0KKyAgICBTVkdBbmltYXRlZExlbmd0aCYgcnhBbmltYXRlZCgpIHsgcmV0dXJuIG1fcng7IH0K
KyAgICBTVkdBbmltYXRlZExlbmd0aCYgcnlBbmltYXRlZCgpIHsgcmV0dXJuIG1fcnk7IH0KIAog
cHJpdmF0ZToKICAgICBTVkdSZWN0RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1l
bnQmKTsKIAogICAgIHVzaW5nIEF0dHJpYnV0ZU93bmVyUHJveHkgPSBTVkdBdHRyaWJ1dGVPd25l
clByb3h5SW1wbDxTVkdSZWN0RWxlbWVudCwgU1ZHR2VvbWV0cnlFbGVtZW50LCBTVkdFeHRlcm5h
bFJlc291cmNlc1JlcXVpcmVkPjsKLSAgICBzdGF0aWMgYXV0byYgYXR0cmlidXRlUmVnaXN0cnko
KSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5OjphdHRyaWJ1dGVSZWdpc3RyeSgpOyB9Ci0g
ICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJBdHRyaWJ1dGVzKCk7CiAgICAgY29uc3QgU1ZHQXR0cmli
dXRlT3duZXJQcm94eSYgYXR0cmlidXRlT3duZXJQcm94eSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IG1fYXR0cmlidXRlT3duZXJQcm94eTsgfQogCiAgICAgdXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9
IFNWR1Byb3BlcnR5T3duZXJSZWdpc3RyeTxTVkdSZWN0RWxlbWVudCwgU1ZHR2VvbWV0cnlFbGVt
ZW50LCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkPjsKICAgICBjb25zdCBTVkdQcm9wZXJ0
eVJlZ2lzdHJ5JiBwcm9wZXJ0eVJlZ2lzdHJ5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wcm9w
ZXJ0eVJlZ2lzdHJ5OyB9CiAKLSAgICBzdGF0aWMgYm9vbCBpc0tub3duQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCi0gICAgewotICAgICAgICByZXR1cm4gQXR0
cmlidXRlT3duZXJQcm94eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKSB8fCBQcm9w
ZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOwotICAgIH0KLQog
ICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21p
Y1N0cmluZyYpIGZpbmFsOwogICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFs
aWZpZWROYW1lJikgZmluYWw7CiAKQEAgLTczLDEyICs2NSwxMiBAQCBwcml2YXRlOgogCiAgICAg
QXR0cmlidXRlT3duZXJQcm94eSBtX2F0dHJpYnV0ZU93bmVyUHJveHkgeyAqdGhpcyB9OwogICAg
IFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKLSAgICBTVkdB
bmltYXRlZExlbmd0aEF0dHJpYnV0ZSBtX3ggeyBMZW5ndGhNb2RlV2lkdGggfTsKLSAgICBTVkdB
bmltYXRlZExlbmd0aEF0dHJpYnV0ZSBtX3kgeyBMZW5ndGhNb2RlSGVpZ2h0IH07Ci0gICAgU1ZH
QW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUgbV93aWR0aCB7IExlbmd0aE1vZGVXaWR0aCB9OwotICAg
IFNWR0FuaW1hdGVkTGVuZ3RoQXR0cmlidXRlIG1faGVpZ2h0IHsgTGVuZ3RoTW9kZUhlaWdodCB9
OwotICAgIFNWR0FuaW1hdGVkTGVuZ3RoQXR0cmlidXRlIG1fcnggeyBMZW5ndGhNb2RlV2lkdGgg
fTsKLSAgICBTVkdBbmltYXRlZExlbmd0aEF0dHJpYnV0ZSBtX3J5IHsgTGVuZ3RoTW9kZUhlaWdo
dH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3ggeyBTVkdBbmltYXRlZExlbmd0aDo6
Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVXaWR0aCkgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5n
dGg+IG1feSB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZUhlaWdo
dCkgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fd2lkdGggeyBTVkdBbmltYXRlZExl
bmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVXaWR0aCkgfTsKKyAgICBSZWY8U1ZHQW5pbWF0
ZWRMZW5ndGg+IG1faGVpZ2h0IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5n
dGhNb2RlSGVpZ2h0KSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV9yeCB7IFNWR0Fu
aW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZVdpZHRoKSB9OworICAgIFJlZjxT
VkdBbmltYXRlZExlbmd0aD4gbV9yeSB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywg
TGVuZ3RoTW9kZUhlaWdodCkgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAppbmRleCAwNWQ5MmYwNjA1ZDgzMDViOWVjZWQwMDNm
NzkxMzQ3YTVmODZkYmFmLi42YzdkZTAyYWViOTY5OWQ5YzQ0YzhmN2Y3ZWVjMDk5NGEyNTE1YjAz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCkBAIC0xLDcgKzEsNyBAQAogLyoK
ICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHpp
bW1lcm1hbm5Aa2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAw
NywgMjAwOCwgMjAxMCBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgotICogQ29weXJpZ2h0IChDKSAy
MDA3LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDA3LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0
IChDKSAyMDE0IEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKQEAgLTU4LDggKzU4LDE1IEBAIGlubGluZSBTVkdTVkdFbGVtZW50OjpT
VkdTVkdFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1
CiAgICAgLCBtX3RpbWVDb250YWluZXIoU01JTFRpbWVDb250YWluZXI6OmNyZWF0ZSgqdGhpcykp
CiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OnN2Z1RhZykpOwotICAgIHJlZ2lz
dGVyQXR0cmlidXRlcygpOwogICAgIGRvY3VtZW50LnJlZ2lzdGVyRm9yRG9jdW1lbnRTdXNwZW5z
aW9uQ2FsbGJhY2tzKCp0aGlzKTsKKworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxh
ZzsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10geworICAgICAgICBQcm9wZXJ0eVJl
Z2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5PFNWR05hbWVzOjp4QXR0ciwgJlNWR1NWR0VsZW1lbnQ6
Om1feD4oKTsKKyAgICAgICAgUHJvcGVydHlSZWdpc3RyeTo6cmVnaXN0ZXJQcm9wZXJ0eTxTVkdO
YW1lczo6eUF0dHIsICZTVkdTVkdFbGVtZW50OjptX3k+KCk7CisgICAgICAgIFByb3BlcnR5UmVn
aXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6OndpZHRoQXR0ciwgJlNWR1NWR0VsZW1l
bnQ6Om1fd2lkdGg+KCk7CisgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVy
dHk8U1ZHTmFtZXM6OmhlaWdodEF0dHIsICZTVkdTVkdFbGVtZW50OjptX2hlaWdodD4oKTsKKyAg
ICB9KTsKIH0KIAogUmVmPFNWR1NWR0VsZW1lbnQ+IFNWR1NWR0VsZW1lbnQ6OmNyZWF0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCkBAIC0xODYsMTcg
KzE5Myw2IEBAIHZvaWQgU1ZHU1ZHRWxlbWVudDo6dXBkYXRlQ3VycmVudFRyYW5zbGF0ZSgpCiAg
ICAgICAgIGRvY3VtZW50KCkucmVuZGVyVmlldygpLT5yZXBhaW50KCk7CiB9CiAKLXZvaWQgU1ZH
U1ZHRWxlbWVudDo6cmVnaXN0ZXJBdHRyaWJ1dGVzKCkKLXsKLSAgICBhdXRvJiByZWdpc3RyeSA9
IGF0dHJpYnV0ZVJlZ2lzdHJ5KCk7Ci0gICAgaWYgKCFyZWdpc3RyeS5pc0VtcHR5KCkpCi0gICAg
ICAgIHJldHVybjsKLSAgICByZWdpc3RyeS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1lczo6eEF0
dHIsICZTVkdTVkdFbGVtZW50OjptX3g+KCk7Ci0gICAgcmVnaXN0cnkucmVnaXN0ZXJBdHRyaWJ1
dGU8U1ZHTmFtZXM6OnlBdHRyLCAmU1ZHU1ZHRWxlbWVudDo6bV95PigpOwotICAgIHJlZ2lzdHJ5
LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjp3aWR0aEF0dHIsICZTVkdTVkdFbGVtZW50Ojpt
X3dpZHRoPigpOwotICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjpoZWln
aHRBdHRyLCAmU1ZHU1ZHRWxlbWVudDo6bV9oZWlnaHQ+KCk7Ci19Ci0KIHZvaWQgU1ZHU1ZHRWxl
bWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRv
bWljU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAoIW5lYXJlc3RWaWV3cG9ydEVsZW1lbnQoKSkg
ewpAQCAtMjM1LDkgKzIzMSw5IEBAIHZvaWQgU1ZHU1ZHRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nCiAgICAgU1ZHUGFy
c2luZ0Vycm9yIHBhcnNlRXJyb3IgPSBOb0Vycm9yOwogCiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFt
ZXM6OnhBdHRyKQotICAgICAgICBtX3guc2V0VmFsdWUoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVj
dChMZW5ndGhNb2RlV2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yKSk7CisgICAgICAgIG1feC0+c2V0
QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZVdpZHRo
LCB2YWx1ZSwgcGFyc2VFcnJvcikpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnlB
dHRyKQotICAgICAgICBtX3kuc2V0VmFsdWUoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5n
dGhNb2RlSGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAgICAgICBtX3ktPnNldEJhc2VW
YWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVIZWlnaHQsIHZh
bHVlLCBwYXJzZUVycm9yKSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6d2lkdGhB
dHRyKSB7CiAgICAgICAgIGF1dG8gbGVuZ3RoID0gU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChM
ZW5ndGhNb2RlV2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yLCBGb3JiaWROZWdhdGl2ZUxlbmd0aHMp
OwogICAgICAgICBpZiAocGFyc2VFcnJvciAhPSBOb0Vycm9yIHx8IHZhbHVlLmlzRW1wdHkoKSkg
ewpAQCAtMjQ1LDcgKzI0MSw3IEBAIHZvaWQgU1ZHU1ZHRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nCiAgICAgICAgICAg
ICAvLyBOb3Qgc3VyZSBpdCdzIGNvcnJlY3QgZm9yIHRoZSBlbXB0eSBzdHJpbmcgb3IgZm9yIHNv
bWV0aGluZyB0aGF0IGNhbid0IGJlIHBhcnNlZC4KICAgICAgICAgICAgIGxlbmd0aCA9IFNWR0xl
bmd0aFZhbHVlKExlbmd0aE1vZGVXaWR0aCwgIjEwMCUiX3MpOwogICAgICAgICB9Ci0gICAgICAg
IG1fd2lkdGguc2V0VmFsdWUobGVuZ3RoKTsKKyAgICAgICAgbV93aWR0aC0+c2V0QmFzZVZhbElu
dGVybmFsKGxlbmd0aCk7CiAgICAgfSBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjpoZWlnaHRB
dHRyKSB7CiAgICAgICAgIGF1dG8gbGVuZ3RoID0gU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChM
ZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvciwgRm9yYmlkTmVnYXRpdmVMZW5ndGhz
KTsKICAgICAgICAgaWYgKHBhcnNlRXJyb3IgIT0gTm9FcnJvciB8fCB2YWx1ZS5pc0VtcHR5KCkp
IHsKQEAgLTI1Myw3ICsyNDksNyBAQCB2b2lkIFNWR1NWR0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZwogICAgICAgICAg
ICAgLy8gTm90IHN1cmUgaXQncyBjb3JyZWN0IGZvciB0aGUgZW1wdHkgc3RyaW5nIG9yIGZvciBz
b21ldGhpbmcgdGhhdCBjYW4ndCBiZSBwYXJzZWQuCiAgICAgICAgICAgICBsZW5ndGggPSBTVkdM
ZW5ndGhWYWx1ZShMZW5ndGhNb2RlSGVpZ2h0LCAiMTAwJSJfcyk7CiAgICAgICAgIH0KLSAgICAg
ICAgbV9oZWlnaHQuc2V0VmFsdWUobGVuZ3RoKTsKKyAgICAgICAgbV9oZWlnaHQtPnNldEJhc2VW
YWxJbnRlcm5hbChsZW5ndGgpOwogICAgIH0KIAogICAgIHJlcG9ydEF0dHJpYnV0ZVBhcnNpbmdF
cnJvcihwYXJzZUVycm9yLCBuYW1lLCB2YWx1ZSk7CkBAIC0yNjYsNyArMjYyLDcgQEAgdm9pZCBT
VkdTVkdFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBj
b25zdCBBdG9taWNTdHJpbmcKIAogdm9pZCBTVkdTVkdFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFu
Z2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogewotICAgIGlmIChpc0tub3duQXR0
cmlidXRlKGF0dHJOYW1lKSkgeworICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0
cmlidXRlKGF0dHJOYW1lKSkgewogICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1
YXJkKCp0aGlzKTsKICAgICAgICAgaW52YWxpZGF0ZVNWR1ByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0
eWxlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5oCmluZGV4IGIwZDk0ZmM5OTc4Zjcw
ODA4MDUyOWI0NDkzZDZkOGQzZWUzYTUzY2EuLmYyZjk0NWVlYTI3MTJlMTEzOTEwOWM5Yzk2M2Vh
ODM0M2MyODE0NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuaApAQCAtMjIsNyArMjIs
NiBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJGbG9hdFBvaW50LmgiCi0jaW5jbHVkZSAi
U1ZHQW5pbWF0ZWRMZW5ndGguaCIKICNpbmNsdWRlICJTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkLmgiCiAjaW5jbHVkZSAiU1ZHRml0VG9WaWV3Qm94LmgiCiAjaW5jbHVkZSAiU1ZHR3JhcGhp
Y3NFbGVtZW50LmgiCkBAIC0xMTgsMzMgKzExNywyNiBAQCBwdWJsaWM6CiAKICAgICBBZmZpbmVU
cmFuc2Zvcm0gdmlld0JveFRvVmlld1RyYW5zZm9ybShmbG9hdCB2aWV3V2lkdGgsIGZsb2F0IHZp
ZXdIZWlnaHQpIGNvbnN0OwogCi0gICAgY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIHgoKSBjb25zdCB7
IHJldHVybiBtX3guY3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBj
b25zdCBTVkdMZW5ndGhWYWx1ZSYgeSgpIGNvbnN0IHsgcmV0dXJuIG1feS5jdXJyZW50VmFsdWUo
YXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAgIGNvbnN0IFNWR0xlbmd0aFZhbHVlJiB3aWR0
aCgpIGNvbnN0IHsgcmV0dXJuIG1fd2lkdGguY3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJv
eHkoKSk7IH0KLSAgICBjb25zdCBTVkdMZW5ndGhWYWx1ZSYgaGVpZ2h0KCkgY29uc3QgeyByZXR1
cm4gbV9oZWlnaHQuY3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KKyAgICBj
b25zdCBTVkdMZW5ndGhWYWx1ZSYgeCgpIGNvbnN0IHsgcmV0dXJuIG1feC0+Y3VycmVudFZhbHVl
KCk7IH0KKyAgICBjb25zdCBTVkdMZW5ndGhWYWx1ZSYgeSgpIGNvbnN0IHsgcmV0dXJuIG1feS0+
Y3VycmVudFZhbHVlKCk7IH0KKyAgICBjb25zdCBTVkdMZW5ndGhWYWx1ZSYgd2lkdGgoKSBjb25z
dCB7IHJldHVybiBtX3dpZHRoLT5jdXJyZW50VmFsdWUoKTsgfQorICAgIGNvbnN0IFNWR0xlbmd0
aFZhbHVlJiBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX2hlaWdodC0+Y3VycmVudFZhbHVlKCk7
IH0KIAotICAgIFJlZlB0cjxTVkdBbmltYXRlZExlbmd0aD4geEFuaW1hdGVkKCkgeyByZXR1cm4g
bV94LmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAgIFJlZlB0
cjxTVkdBbmltYXRlZExlbmd0aD4geUFuaW1hdGVkKCkgeyByZXR1cm4gbV95LmFuaW1hdGVkUHJv
cGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAgIFJlZlB0cjxTVkdBbmltYXRlZExl
bmd0aD4gd2lkdGhBbmltYXRlZCgpIHsgcmV0dXJuIG1fd2lkdGguYW5pbWF0ZWRQcm9wZXJ0eShh
dHRyaWJ1dGVPd25lclByb3h5KCkpOyB9Ci0gICAgUmVmUHRyPFNWR0FuaW1hdGVkTGVuZ3RoPiBo
ZWlnaHRBbmltYXRlZCgpIHsgcmV0dXJuIG1faGVpZ2h0LmFuaW1hdGVkUHJvcGVydHkoYXR0cmli
dXRlT3duZXJQcm94eSgpKTsgfQorICAgIFNWR0FuaW1hdGVkTGVuZ3RoJiB4QW5pbWF0ZWQoKSB7
IHJldHVybiBtX3g7IH0KKyAgICBTVkdBbmltYXRlZExlbmd0aCYgeUFuaW1hdGVkKCkgeyByZXR1
cm4gbV95OyB9CisgICAgU1ZHQW5pbWF0ZWRMZW5ndGgmIHdpZHRoQW5pbWF0ZWQoKSB7IHJldHVy
biBtX3dpZHRoOyB9CisgICAgU1ZHQW5pbWF0ZWRMZW5ndGgmIGhlaWdodEFuaW1hdGVkKCkgeyBy
ZXR1cm4gbV9oZWlnaHQ7IH0KIAogcHJpdmF0ZToKICAgICBTVkdTVkdFbGVtZW50KGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogICAgIHZpcnR1YWwgflNWR1NWR0VsZW1lbnQoKTsK
IAogICAgIHVzaW5nIEF0dHJpYnV0ZU93bmVyUHJveHkgPSBTVkdBdHRyaWJ1dGVPd25lclByb3h5
SW1wbDxTVkdTVkdFbGVtZW50LCBTVkdHcmFwaGljc0VsZW1lbnQsIFNWR0V4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQsIFNWR0ZpdFRvVmlld0JveD47Ci0gICAgc3RhdGljIEF0dHJpYnV0ZU93bmVy
UHJveHk6OkF0dHJpYnV0ZVJlZ2lzdHJ5JiBhdHRyaWJ1dGVSZWdpc3RyeSgpIHsgcmV0dXJuIEF0
dHJpYnV0ZU93bmVyUHJveHk6OmF0dHJpYnV0ZVJlZ2lzdHJ5KCk7IH0KLSAgICBzdGF0aWMgdm9p
ZCByZWdpc3RlckF0dHJpYnV0ZXMoKTsKICAgICBjb25zdCBTVkdBdHRyaWJ1dGVPd25lclByb3h5
JiBhdHRyaWJ1dGVPd25lclByb3h5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9hdHRyaWJ1dGVP
d25lclByb3h5OyB9CiAgICAgCiAgICAgdXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9IFNWR1Byb3Bl
cnR5T3duZXJSZWdpc3RyeTxTVkdTVkdFbGVtZW50LCBTVkdHcmFwaGljc0VsZW1lbnQsIFNWR0V4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIFNWR0ZpdFRvVmlld0JveD47CiAgICAgY29uc3QgU1ZH
UHJvcGVydHlSZWdpc3RyeSYgcHJvcGVydHlSZWdpc3RyeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IG1fcHJvcGVydHlSZWdpc3RyeTsgfQogICAgIAotICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKLSAgICB7Ci0gICAgICAg
IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5h
bWUpIHx8IFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7
Ci0gICAgfQotCiAgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwg
Y29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFu
Z2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKICAgICBib29sIHNlbGZIYXNSZWxh
dGl2ZUxlbmd0aHMoKSBjb25zdCBvdmVycmlkZTsKQEAgLTE3NiwxMCArMTY4LDEwIEBAIHByaXZh
dGU6CiAKICAgICBBdHRyaWJ1dGVPd25lclByb3h5IG1fYXR0cmlidXRlT3duZXJQcm94eSB7ICp0
aGlzIH07CiAgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9
OwotICAgIFNWR0FuaW1hdGVkTGVuZ3RoQXR0cmlidXRlIG1feCB7IExlbmd0aE1vZGVXaWR0aCB9
OwotICAgIFNWR0FuaW1hdGVkTGVuZ3RoQXR0cmlidXRlIG1feSB7IExlbmd0aE1vZGVIZWlnaHR9
OwotICAgIFNWR0FuaW1hdGVkTGVuZ3RoQXR0cmlidXRlIG1fd2lkdGggeyBMZW5ndGhNb2RlV2lk
dGgsICIxMDAlIl9zIH07Ci0gICAgU1ZHQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUgbV9oZWlnaHQg
eyBMZW5ndGhNb2RlSGVpZ2h0LCAiMTAwJSJfcyB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0
aD4gbV94IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlV2lkdGgp
IH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3kgeyBTVkdBbmltYXRlZExlbmd0aDo6
Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVu
Z3RoPiBtX3dpZHRoIHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2Rl
V2lkdGgsICIxMDAlIl9zKSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV9oZWlnaHQg
eyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQsICIxMDAl
Il9zKSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNwcAppbmRleCAyZjNhMGUzNDEyZjlhMGY2OTJhN2I0
NGFlMzI4NjBlYzQ4YzIzZTg1Li4yNmRjNjRlMGE0YzU1Y2U4NDZhZTQ3NTg4ZTNjN2I3NTVjZjU0
ODEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNwcApA
QCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDcsIDIw
MDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQg
KEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDggUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4K
LSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTQ3LDEwICs0Nyw5IEBAIFNWR1RleHRDb250ZW50RWxl
bWVudDo6U1ZHVGV4dENvbnRlbnRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUs
IERvY3VtCiAgICAgOiBTVkdHcmFwaGljc0VsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiAgICAg
LCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKHRoaXMpCiB7Ci0gICAgcmVnaXN0ZXJBdHRy
aWJ1dGVzKCk7Ci0KICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CiAgICAgc3Rk
OjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKKyAgICAgICAgUHJvcGVydHlSZWdpc3RyeTo6cmVn
aXN0ZXJQcm9wZXJ0eTxTVkdOYW1lczo6dGV4dExlbmd0aEF0dHIsICZTVkdUZXh0Q29udGVudEVs
ZW1lbnQ6Om1fdGV4dExlbmd0aD4oKTsKICAgICAgICAgUHJvcGVydHlSZWdpc3RyeTo6cmVnaXN0
ZXJQcm9wZXJ0eTxTVkdOYW1lczo6bGVuZ3RoQWRqdXN0QXR0ciwgU1ZHTGVuZ3RoQWRqdXN0VHlw
ZSwgJlNWR1RleHRDb250ZW50RWxlbWVudDo6bV9sZW5ndGhBZGp1c3Q+KCk7CiAgICAgfSk7CiB9
CkBAIC0xNjMsMTQgKzE2Miw2IEBAIHZvaWQgU1ZHVGV4dENvbnRlbnRFbGVtZW50Ojpjb2xsZWN0
U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkCiAgICAgU1ZHR3Jh
cGhpY3NFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUobmFtZSwg
dmFsdWUsIHN0eWxlKTsKIH0KIAotdm9pZCBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OnJlZ2lzdGVy
QXR0cmlidXRlcygpCi17Ci0gICAgYXV0byYgcmVnaXN0cnkgPSBhdHRyaWJ1dGVSZWdpc3RyeSgp
OwotICAgIGlmICghcmVnaXN0cnkuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0gICAgcmVn
aXN0cnkucmVnaXN0ZXJBdHRyaWJ1dGUoU1ZHQW5pbWF0ZWRDdXN0b21MZW5ndGhBdHRyaWJ1dGVB
Y2Nlc3Nvcjo6c2luZ2xldG9uPFNWR05hbWVzOjp0ZXh0TGVuZ3RoQXR0ciwgJlNWR1RleHRDb250
ZW50RWxlbWVudDo6bV90ZXh0TGVuZ3RoPigpKTsKLX0KLQogdm9pZCBTVkdUZXh0Q29udGVudEVs
ZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0
b21pY1N0cmluZyYgdmFsdWUpCiB7CiAgICAgU1ZHUGFyc2luZ0Vycm9yIHBhcnNlRXJyb3IgPSBO
b0Vycm9yOwpAQCAtMTgwLDcgKzE3MSw3IEBAIHZvaWQgU1ZHVGV4dENvbnRlbnRFbGVtZW50Ojpw
YXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tCiAgICAg
ICAgIGlmIChwcm9wZXJ0eVZhbHVlID4gMCkKICAgICAgICAgICAgIG1fbGVuZ3RoQWRqdXN0LT5z
ZXRCYXNlVmFsSW50ZXJuYWw8U1ZHTGVuZ3RoQWRqdXN0VHlwZT4ocHJvcGVydHlWYWx1ZSk7CiAg
ICAgfSBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjp0ZXh0TGVuZ3RoQXR0cikKLSAgICAgICAg
bV90ZXh0TGVuZ3RoLnNldFZhbHVlKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9k
ZU90aGVyLCB2YWx1ZSwgcGFyc2VFcnJvciwgRm9yYmlkTmVnYXRpdmVMZW5ndGhzKSk7CisgICAg
ICAgIG1fdGV4dExlbmd0aC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25z
dHJ1Y3QoTGVuZ3RoTW9kZU90aGVyLCB2YWx1ZSwgcGFyc2VFcnJvciwgRm9yYmlkTmVnYXRpdmVM
ZW5ndGhzKSk7CiAKICAgICByZXBvcnRBdHRyaWJ1dGVQYXJzaW5nRXJyb3IocGFyc2VFcnJvciwg
bmFtZSwgdmFsdWUpOwogCkBAIC0xOTAsOSArMTgxLDkgQEAgdm9pZCBTVkdUZXh0Q29udGVudEVs
ZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0
b20KIAogdm9pZCBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29u
c3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7Ci0gICAgaWYgKGlzS25vd25BdHRyaWJ1dGUo
YXR0ck5hbWUpKSB7CisgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUo
YXR0ck5hbWUpKSB7CiAgICAgICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6dGV4dExlbmd0
aEF0dHIpCi0gICAgICAgICAgICBtX3NwZWNpZmllZFRleHRMZW5ndGggPSBtX3RleHRMZW5ndGgu
dmFsdWUoKTsKKyAgICAgICAgICAgIG1fc3BlY2lmaWVkVGV4dExlbmd0aCA9IG1fdGV4dExlbmd0
aC0+YmFzZVZhbCgpLT52YWx1ZSgpOwogCiAgICAgICAgIGlmIChhdXRvIHJlbmRlcmVyID0gdGhp
cy0+cmVuZGVyZXIoKSkgewogICAgICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBn
dWFyZCgqdGhpcyk7CkBAIC0yMDUsNiArMTk2LDE0IEBAIHZvaWQgU1ZHVGV4dENvbnRlbnRFbGVt
ZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQog
ICAgIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoYXR0
ck5hbWUpOwogfQogCitTVkdBbmltYXRlZExlbmd0aCYgU1ZHVGV4dENvbnRlbnRFbGVtZW50Ojp0
ZXh0TGVuZ3RoQW5pbWF0ZWQoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTVkdMZW5n
dGhWYWx1ZT4gZGVmYXVsdFRleHRMZW5ndGgoTGVuZ3RoTW9kZU90aGVyKTsKKyAgICBpZiAobV90
ZXh0TGVuZ3RoLT5iYXNlVmFsKCktPnZhbHVlKCkgPT0gZGVmYXVsdFRleHRMZW5ndGgpCisgICAg
ICAgIG1fdGV4dExlbmd0aC0+YmFzZVZhbCgpLT52YWx1ZSgpLm5ld1ZhbHVlU3BlY2lmaWVkVW5p
dHMoTGVuZ3RoVHlwZU51bWJlciwgZ2V0Q29tcHV0ZWRUZXh0TGVuZ3RoKCkpOworICAgIHJldHVy
biBtX3RleHRMZW5ndGg7Cit9CisKIGJvb2wgU1ZHVGV4dENvbnRlbnRFbGVtZW50OjpzZWxmSGFz
UmVsYXRpdmVMZW5ndGhzKCkgY29uc3QKIHsKICAgICAvLyBBbnkgZWxlbWVudCBvZiB0aGUgPHRl
eHQ+IHN1YnRyZWUgaXMgYWR2ZXJ0aXplZCBhcyB1c2luZyByZWxhdGl2ZSBsZW5ndGhzLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5oCmluZGV4IGJlOTQ2MWYyZmZk
ZDFmMzE0MDQ0ZjYzYjUyZjIxOGNiZjZjZGRiMmEuLjZlZDc4ZDM4NzVhMWIyNzZkNDlmMjllZGIw
MTUwODY4MmYxNzNmYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0Q29u
dGVudEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVt
ZW50LmgKQEAgLTIxLDcgKzIxLDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJTVkdB
bmltYXRlZExlbmd0aC5oIgogI2luY2x1ZGUgIlNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQu
aCIKICNpbmNsdWRlICJTVkdHcmFwaGljc0VsZW1lbnQuaCIKIApAQCAtODMsMTcgKzgyLDE3IEBA
IHB1YmxpYzoKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZWxlY3RTdWJTdHJpbmcodW5zaWduZWQg
Y2hhcm51bSwgdW5zaWduZWQgbmNoYXJzKTsKIAogICAgIHN0YXRpYyBTVkdUZXh0Q29udGVudEVs
ZW1lbnQqIGVsZW1lbnRGcm9tUmVuZGVyZXIoUmVuZGVyT2JqZWN0Kik7Ci0gICAgY29uc3QgU1ZH
TGVuZ3RoVmFsdWUmIHNwZWNpZmllZFRleHRMZW5ndGgoKSB7IHJldHVybiBtX3NwZWNpZmllZFRl
eHRMZW5ndGg7IH0KIAogICAgIHVzaW5nIEF0dHJpYnV0ZU93bmVyUHJveHkgPSBTVkdBdHRyaWJ1
dGVPd25lclByb3h5SW1wbDxTVkdUZXh0Q29udGVudEVsZW1lbnQsIFNWR0dyYXBoaWNzRWxlbWVu
dCwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZD47CiAgICAgc3RhdGljIEF0dHJpYnV0ZU93
bmVyUHJveHk6OkF0dHJpYnV0ZVJlZ2lzdHJ5JiBhdHRyaWJ1dGVSZWdpc3RyeSgpIHsgcmV0dXJu
IEF0dHJpYnV0ZU93bmVyUHJveHk6OmF0dHJpYnV0ZVJlZ2lzdHJ5KCk7IH0KICAgICAKICAgICB1
c2luZyBQcm9wZXJ0eVJlZ2lzdHJ5ID0gU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5PFNWR1RleHRD
b250ZW50RWxlbWVudCwgU1ZHR3JhcGhpY3NFbGVtZW50LCBTVkdFeHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkPjsKIAotICAgIGNvbnN0IFNWR0xlbmd0aFZhbHVlJiB0ZXh0TGVuZ3RoKCkgY29uc3Qg
eyByZXR1cm4gbV90ZXh0TGVuZ3RoLmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25lclByb3h5KCkp
OyB9CisgICAgY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIHNwZWNpZmllZFRleHRMZW5ndGgoKSBjb25z
dCB7IHJldHVybiBtX3NwZWNpZmllZFRleHRMZW5ndGg7IH0KKyAgICBjb25zdCBTVkdMZW5ndGhW
YWx1ZSYgdGV4dExlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dExlbmd0aC0+Y3VycmVudFZh
bHVlKCk7IH0KICAgICBTVkdMZW5ndGhBZGp1c3RUeXBlIGxlbmd0aEFkanVzdCgpIGNvbnN0IHsg
cmV0dXJuIG1fbGVuZ3RoQWRqdXN0LT5jdXJyZW50VmFsdWU8U1ZHTGVuZ3RoQWRqdXN0VHlwZT4o
KTsgfQogCi0gICAgUmVmUHRyPFNWR0FuaW1hdGVkTGVuZ3RoPiB0ZXh0TGVuZ3RoQW5pbWF0ZWQo
KSB7IHJldHVybiBtX3RleHRMZW5ndGguYW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25lclBy
b3h5KCkpOyB9CisgICAgU1ZHQW5pbWF0ZWRMZW5ndGgmIHRleHRMZW5ndGhBbmltYXRlZCgpOwog
ICAgIFNWR0FuaW1hdGVkRW51bWVyYXRpb24mIGxlbmd0aEFkanVzdEFuaW1hdGVkKCkgeyByZXR1
cm4gbV9sZW5ndGhBZGp1c3Q7IH0KIAogcHJvdGVjdGVkOgpAQCAtMTEyLDUyICsxMTEsMTEgQEAg
cHJpdmF0ZToKICAgICBib29sIGlzVGV4dENvbnRlbnQoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0
cnVlOyB9CiAKICAgICBjb25zdCBTVkdBdHRyaWJ1dGVPd25lclByb3h5JiBhdHRyaWJ1dGVPd25l
clByb3h5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9hdHRyaWJ1dGVPd25lclByb3h5OyB9
Ci0gICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJBdHRyaWJ1dGVzKCk7Ci0KICAgICBjb25zdCBTVkdQ
cm9wZXJ0eVJlZ2lzdHJ5JiBwcm9wZXJ0eVJlZ2lzdHJ5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gbV9wcm9wZXJ0eVJlZ2lzdHJ5OyB9CiAKLSAgICBzdGF0aWMgYm9vbCBpc0tub3duQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCi0gICAgewotICAgICAgICBy
ZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1l
KSB8fCBQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOwot
ICAgIH0KLQotICAgIGNsYXNzIFNWR0FuaW1hdGVkQ3VzdG9tTGVuZ3RoQXR0cmlidXRlIDogcHVi
bGljIFNWR0FuaW1hdGVkTGVuZ3RoQXR0cmlidXRlIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIHVz
aW5nIFNWR0FuaW1hdGVkTGVuZ3RoQXR0cmlidXRlOjpvcGVyYXRvcj07Ci0KLSAgICAgICAgU1ZH
QW5pbWF0ZWRDdXN0b21MZW5ndGhBdHRyaWJ1dGUoU1ZHVGV4dENvbnRlbnRFbGVtZW50JiBlbGVt
ZW50LCBTVkdMZW5ndGhNb2RlIGxlbmd0aE1vZGUpCi0gICAgICAgICAgICA6IFNWR0FuaW1hdGVk
TGVuZ3RoQXR0cmlidXRlKGxlbmd0aE1vZGUpCi0gICAgICAgICAgICAsIG1fZWxlbWVudChlbGVt
ZW50KQotICAgICAgICB7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIHN5bmNocm9uaXplKEVs
ZW1lbnQmLCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBpZiAoIXNob3VsZFN5bmNocm9uaXplKCkpCi0gICAgICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICAgICAgU3RyaW5nIHN0cmluZyhTVkdQcm9wZXJ0eVRyYWl0czxTVkdMZW5n
dGhWYWx1ZT46OnRvU3RyaW5nKG1fZWxlbWVudC5tX3NwZWNpZmllZFRleHRMZW5ndGgpKTsKLSAg
ICAgICAgICAgIHN0YXRpY19jYXN0PEVsZW1lbnQmPihtX2VsZW1lbnQpLnNldFN5bmNocm9uaXpl
ZExhenlBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSwgc3RyaW5nKTsKLSAgICAgICAgfQotCi0gICAg
ICAgIFJlZlB0cjxTVkdBbmltYXRlZExlbmd0aD4gYW5pbWF0ZWRQcm9wZXJ0eShjb25zdCBTVkdB
dHRyaWJ1dGVPd25lclByb3h5JiBhdHRyaWJ1dGVPd25lclByb3h5KQotICAgICAgICB7Ci0gICAg
ICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U1ZHTGVuZ3RoVmFsdWU+IGRlZmF1bHRUZXh0
TGVuZ3RoKExlbmd0aE1vZGVPdGhlcik7Ci0gICAgICAgICAgICBpZiAobV9lbGVtZW50Lm1fc3Bl
Y2lmaWVkVGV4dExlbmd0aCA9PSBkZWZhdWx0VGV4dExlbmd0aCkKLSAgICAgICAgICAgICAgICBt
X2VsZW1lbnQubV90ZXh0TGVuZ3RoLnZhbHVlKCkubmV3VmFsdWVTcGVjaWZpZWRVbml0cyhMZW5n
dGhUeXBlTnVtYmVyLCBtX2VsZW1lbnQuZ2V0Q29tcHV0ZWRUZXh0TGVuZ3RoKCkpOwotCi0gICAg
ICAgICAgICBzZXRTaG91bGRTeW5jaHJvbml6ZSh0cnVlKTsKLSAgICAgICAgICAgIHJldHVybiBz
dGF0aWNfcmVmZXJlbmNlX2Nhc3Q8U1ZHQW5pbWF0ZWRMZW5ndGg+KGF0dHJpYnV0ZU93bmVyUHJv
eHkubG9va3VwT3JDcmVhdGVBbmltYXRlZFByb3BlcnR5KCp0aGlzKS5yZWxlYXNlTm9uTnVsbCgp
KTsKLSAgICAgICAgfQotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgU1ZHVGV4dENvbnRlbnRFbGVt
ZW50JiBtX2VsZW1lbnQ7Ci0gICAgfTsKLQotICAgIHVzaW5nIFNWR0FuaW1hdGVkQ3VzdG9tTGVu
Z3RoQXR0cmlidXRlQWNjZXNzb3IgPSBTVkdBbmltYXRlZEF0dHJpYnV0ZUFjY2Vzc29yPFNWR1Rl
eHRDb250ZW50RWxlbWVudCwgU1ZHQW5pbWF0ZWRDdXN0b21MZW5ndGhBdHRyaWJ1dGUsIEFuaW1h
dGVkTGVuZ3RoPjsKLQogICAgIEF0dHJpYnV0ZU93bmVyUHJveHkgbV9hdHRyaWJ1dGVPd25lclBy
b3h5IHsgKnRoaXMgfTsKICAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7
ICp0aGlzIH07Ci0gICAgU1ZHQW5pbWF0ZWRDdXN0b21MZW5ndGhBdHRyaWJ1dGUgbV90ZXh0TGVu
Z3RoIHsgKnRoaXMsIExlbmd0aE1vZGVPdGhlciB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0
aD4gbV90ZXh0TGVuZ3RoIHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhN
b2RlT3RoZXIpIH07CiAgICAgUmVmPFNWR0FuaW1hdGVkRW51bWVyYXRpb24+IG1fbGVuZ3RoQWRq
dXN0IHsgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0aEFkanVz
dFNwYWNpbmcpIH07CiAgICAgU1ZHTGVuZ3RoVmFsdWUgbV9zcGVjaWZpZWRUZXh0TGVuZ3RoIHsg
TGVuZ3RoTW9kZU90aGVyIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1RleHRQYXRoRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVt
ZW50LmNwcAppbmRleCA2NWI0MGU1YmQxY2EwMjE4Mjc5MWVmYjFmMDY4MmUyNTM1MzVkNmRkLi5m
MjBjNjdiZGVhZTQxNzdjNGIzODU0NjkyZWQ0ODU0OGYyMTI3ZWUxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmNwcApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMDcgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAg
KiBDb3B5cmlnaHQgKEMpIDIwMTAgUm9iIEJ1aXMgPHJ3bGJ1aXNAZ21haWwuY29tPgotICogQ29w
eXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYwpAQCAtMzgsMTAgKzM4LDEwIEBAIGlubGluZSBTVkdUZXh0UGF0aEVsZW1l
bnQ6OlNWR1RleHRQYXRoRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1
CiAgICAgLCBTVkdVUklSZWZlcmVuY2UodGhpcykKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShT
VkdOYW1lczo6dGV4dFBhdGhUYWcpKTsKLSAgICByZWdpc3RlckF0dHJpYnV0ZXMoKTsKIAogICAg
IHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKICAgICBzdGQ6OmNhbGxfb25jZShvbmNl
RmxhZywgW10geworICAgICAgICBQcm9wZXJ0eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5PFNW
R05hbWVzOjpzdGFydE9mZnNldEF0dHIsICZTVkdUZXh0UGF0aEVsZW1lbnQ6Om1fc3RhcnRPZmZz
ZXQ+KCk7CiAgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFt
ZXM6Om1ldGhvZEF0dHIsIFNWR1RleHRQYXRoTWV0aG9kVHlwZSwgJlNWR1RleHRQYXRoRWxlbWVu
dDo6bV9tZXRob2Q+KCk7CiAgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVy
dHk8U1ZHTmFtZXM6OnNwYWNpbmdBdHRyLCBTVkdUZXh0UGF0aFNwYWNpbmdUeXBlLCAmU1ZHVGV4
dFBhdGhFbGVtZW50OjptX3NwYWNpbmc+KCk7CiAgICAgfSk7CkBAIC02MiwyMCArNjIsMTIgQEAg
dm9pZCBTVkdUZXh0UGF0aEVsZW1lbnQ6OmNsZWFyUmVzb3VyY2VSZWZlcmVuY2VzKCkKICAgICBk
b2N1bWVudCgpLmFjY2Vzc1NWR0V4dGVuc2lvbnMoKS5yZW1vdmVBbGxUYXJnZXRSZWZlcmVuY2Vz
Rm9yRWxlbWVudCgqdGhpcyk7CiB9CiAKLXZvaWQgU1ZHVGV4dFBhdGhFbGVtZW50OjpyZWdpc3Rl
ckF0dHJpYnV0ZXMoKQotewotICAgIGF1dG8mIHJlZ2lzdHJ5ID0gYXR0cmlidXRlUmVnaXN0cnko
KTsKLSAgICBpZiAoIXJlZ2lzdHJ5LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIHJl
Z2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjpzdGFydE9mZnNldEF0dHIsICZTVkdU
ZXh0UGF0aEVsZW1lbnQ6Om1fc3RhcnRPZmZzZXQ+KCk7Ci19Ci0KIHZvaWQgU1ZHVGV4dFBhdGhF
bGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBB
dG9taWNTdHJpbmcmIHZhbHVlKQogewogICAgIFNWR1BhcnNpbmdFcnJvciBwYXJzZUVycm9yID0g
Tm9FcnJvcjsKIAogICAgIGlmIChuYW1lID09IFNWR05hbWVzOjpzdGFydE9mZnNldEF0dHIpCi0g
ICAgICAgIG1fc3RhcnRPZmZzZXQuc2V0VmFsdWUoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChM
ZW5ndGhNb2RlT3RoZXIsIHZhbHVlLCBwYXJzZUVycm9yKSk7CisgICAgICAgIG1fc3RhcnRPZmZz
ZXQtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1v
ZGVPdGhlciwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05h
bWVzOjptZXRob2RBdHRyKSB7CiAgICAgICAgIFNWR1RleHRQYXRoTWV0aG9kVHlwZSBwcm9wZXJ0
eVZhbHVlID0gU1ZHUHJvcGVydHlUcmFpdHM8U1ZHVGV4dFBhdGhNZXRob2RUeXBlPjo6ZnJvbVN0
cmluZyh2YWx1ZSk7CiAgICAgICAgIGlmIChwcm9wZXJ0eVZhbHVlID4gMCkKQEAgLTk0LDcgKzg2
LDcgQEAgdm9pZCBTVkdUZXh0UGF0aEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1MKIAogdm9pZCBTVkdUZXh0UGF0aEVsZW1lbnQ6
OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7Ci0g
ICAgaWYgKGlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CisgICAgaWYgKFByb3BlcnR5UmVn
aXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CiAgICAgICAgIEluc3RhbmNlSW52
YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwogCiAgICAgICAgIGlmIChhdHRyTmFtZSA9PSBT
VkdOYW1lczo6c3RhcnRPZmZzZXRBdHRyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1RleHRQYXRoRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxl
bWVudC5oCmluZGV4IGE1N2I3MjJmZjk2NGNlZTAyMjA1OWU1ZTJhZjY2MTQ1MzE5ZmEzMDQuLjE4
ZmU1YTNlMTJhZTVmMDQ3ZWJkN2E0MTcyODZiNjcwNzdlNDk0YTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHVGV4dFBhdGhFbGVtZW50LmgKQEAgLTExMSwxMSArMTExLDExIEBAIHB1YmxpYzoKIAog
ICAgIHN0YXRpYyBSZWY8U1ZHVGV4dFBhdGhFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYsIERvY3VtZW50Jik7CiAKLSAgICBjb25zdCBTVkdMZW5ndGhWYWx1ZSYgc3RhcnRPZmZz
ZXQoKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0T2Zmc2V0LmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVP
d25lclByb3h5KCkpOyB9CisgICAgY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIHN0YXJ0T2Zmc2V0KCkg
Y29uc3QgeyByZXR1cm4gbV9zdGFydE9mZnNldC0+Y3VycmVudFZhbHVlKCk7IH0KICAgICBTVkdU
ZXh0UGF0aE1ldGhvZFR5cGUgbWV0aG9kKCkgY29uc3QgeyByZXR1cm4gbV9tZXRob2QtPmN1cnJl
bnRWYWx1ZTxTVkdUZXh0UGF0aE1ldGhvZFR5cGU+KCk7IH0KICAgICBTVkdUZXh0UGF0aFNwYWNp
bmdUeXBlIHNwYWNpbmcoKSBjb25zdCB7IHJldHVybiBtX3NwYWNpbmctPmN1cnJlbnRWYWx1ZTxT
VkdUZXh0UGF0aFNwYWNpbmdUeXBlPigpOyB9CiAKLSAgICBSZWZQdHI8U1ZHQW5pbWF0ZWRMZW5n
dGg+IHN0YXJ0T2Zmc2V0QW5pbWF0ZWQoKSB7IHJldHVybiBtX3N0YXJ0T2Zmc2V0LmFuaW1hdGVk
UHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQorICAgIFNWR0FuaW1hdGVkTGVuZ3Ro
JiBzdGFydE9mZnNldEFuaW1hdGVkKCkgeyByZXR1cm4gbV9zdGFydE9mZnNldDsgfQogICAgIFNW
R0FuaW1hdGVkRW51bWVyYXRpb24mIG1ldGhvZEFuaW1hdGVkKCkgeyByZXR1cm4gbV9tZXRob2Q7
IH0KICAgICBTVkdBbmltYXRlZEVudW1lcmF0aW9uJiBzcGFjaW5nQW5pbWF0ZWQoKSB7IHJldHVy
biBtX3NwYWNpbmc7IH0KIApAQCAtMTI3LDE4ICsxMjcsMTEgQEAgcHJpdmF0ZToKICAgICB2aXJ0
dWFsIH5TVkdUZXh0UGF0aEVsZW1lbnQoKTsKIAogICAgIHVzaW5nIEF0dHJpYnV0ZU93bmVyUHJv
eHkgPSBTVkdBdHRyaWJ1dGVPd25lclByb3h5SW1wbDxTVkdUZXh0UGF0aEVsZW1lbnQsIFNWR1Rl
eHRDb250ZW50RWxlbWVudCwgU1ZHVVJJUmVmZXJlbmNlPjsKLSAgICBzdGF0aWMgQXR0cmlidXRl
T3duZXJQcm94eTo6QXR0cmlidXRlUmVnaXN0cnkmIGF0dHJpYnV0ZVJlZ2lzdHJ5KCkgeyByZXR1
cm4gQXR0cmlidXRlT3duZXJQcm94eTo6YXR0cmlidXRlUmVnaXN0cnkoKTsgfQotICAgIHN0YXRp
YyB2b2lkIHJlZ2lzdGVyQXR0cmlidXRlcygpOwogICAgIGNvbnN0IFNWR0F0dHJpYnV0ZU93bmVy
UHJveHkmIGF0dHJpYnV0ZU93bmVyUHJveHkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2F0dHJp
YnV0ZU93bmVyUHJveHk7IH0KIAogICAgIHVzaW5nIFByb3BlcnR5UmVnaXN0cnkgPSBTVkdQcm9w
ZXJ0eU93bmVyUmVnaXN0cnk8U1ZHVGV4dFBhdGhFbGVtZW50LCBTVkdUZXh0Q29udGVudEVsZW1l
bnQsIFNWR1VSSVJlZmVyZW5jZT47CiAgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYgcHJv
cGVydHlSZWdpc3RyeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3RyeTsg
fQogCi0gICAgc3RhdGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyaWJ1dGVOYW1lKQotICAgIHsKLSAgICAgICAgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJv
eHk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSkgfHwgUHJvcGVydHlSZWdpc3RyeTo6
aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsKLSAgICB9Ci0KICAgICB2b2lkIHBhcnNl
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVy
cmlkZTsKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYp
IG92ZXJyaWRlOwogCkBAIC0xNTUsNyArMTQ4LDcgQEAgcHJpdmF0ZToKIAogICAgIEF0dHJpYnV0
ZU93bmVyUHJveHkgbV9hdHRyaWJ1dGVPd25lclByb3h5IHsgKnRoaXMgfTsKICAgICBQcm9wZXJ0
eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07Ci0gICAgU1ZHQW5pbWF0ZWRM
ZW5ndGhBdHRyaWJ1dGUgbV9zdGFydE9mZnNldCB7IExlbmd0aE1vZGVPdGhlciB9OworICAgIFJl
ZjxTVkdBbmltYXRlZExlbmd0aD4gbV9zdGFydE9mZnNldCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpj
cmVhdGUodGhpcywgTGVuZ3RoTW9kZU90aGVyKSB9OwogICAgIFJlZjxTVkdBbmltYXRlZEVudW1l
cmF0aW9uPiBtX21ldGhvZCB7IFNWR0FuaW1hdGVkRW51bWVyYXRpb246OmNyZWF0ZSh0aGlzLCBT
VkdUZXh0UGF0aE1ldGhvZEFsaWduKSB9OwogICAgIFJlZjxTVkdBbmltYXRlZEVudW1lcmF0aW9u
PiBtX3NwYWNpbmcgeyBTVkdBbmltYXRlZEVudW1lcmF0aW9uOjpjcmVhdGUodGhpcywgU1ZHVGV4
dFBhdGhTcGFjaW5nRXhhY3QpIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Rl
eHRQb3NpdGlvbmluZ0VsZW1lbnQuY3BwCmluZGV4IDQ0OTY0NjY3YTM5NzIzNDUxMDBkN2E4YmM2
Y2YzNzgxMjE2NjhmZGIuLmE2NjQyYTAxNGNlNzEwN2EwZDlmYzQ0ZTFkMmQyNzZiNjk1ZmExYWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5j
cHAKQEAgLTI3LDcgKzI3LDYgQEAKICNpbmNsdWRlICJSZW5kZXJTVkdSZXNvdXJjZS5oIgogI2lu
Y2x1ZGUgIlJlbmRlclNWR1RleHQuaCIKICNpbmNsdWRlICJTVkdBbHRHbHlwaEVsZW1lbnQuaCIK
LSNpbmNsdWRlICJTVkdMZW5ndGhMaXN0VmFsdWVzLmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIK
ICNpbmNsdWRlICJTVkdUUmVmRWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR1RTcGFuRWxlbWVudC5o
IgpAQCAtNDEsNTYgKzQwLDM1IEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChTVkdUZXh0
UG9zaXRpb25pbmdFbGVtZW50KTsKIFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQ6OlNWR1RleHRQ
b3NpdGlvbmluZ0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQm
IGRvY3VtZW50KQogICAgIDogU1ZHVGV4dENvbnRlbnRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50
KQogewotICAgIHJlZ2lzdGVyQXR0cmlidXRlcygpOwotICAgIAogICAgIHN0YXRpYyBzdGQ6Om9u
Y2VfZmxhZyBvbmNlRmxhZzsKICAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10geworICAg
ICAgICBQcm9wZXJ0eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5PFNWR05hbWVzOjp4QXR0ciwg
JlNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQ6Om1feD4oKTsKKyAgICAgICAgUHJvcGVydHlSZWdp
c3RyeTo6cmVnaXN0ZXJQcm9wZXJ0eTxTVkdOYW1lczo6eUF0dHIsICZTVkdUZXh0UG9zaXRpb25p
bmdFbGVtZW50OjptX3k+KCk7CisgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJv
cGVydHk8U1ZHTmFtZXM6OmR4QXR0ciwgJlNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQ6Om1fZHg+
KCk7CisgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6
OmR5QXR0ciwgJlNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQ6Om1fZHk+KCk7CiAgICAgICAgIFBy
b3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6OnJvdGF0ZUF0dHIsICZT
VkdUZXh0UG9zaXRpb25pbmdFbGVtZW50OjptX3JvdGF0ZT4oKTsKICAgICB9KTsKIH0KIAotdm9p
ZCBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50OjpyZWdpc3RlckF0dHJpYnV0ZXMoKQotewotICAg
IGF1dG8mIHJlZ2lzdHJ5ID0gYXR0cmlidXRlUmVnaXN0cnkoKTsKLSAgICBpZiAoIXJlZ2lzdHJ5
LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmli
dXRlPFNWR05hbWVzOjp4QXR0ciwgJlNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQ6Om1feD4oKTsK
LSAgICByZWdpc3RyeS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1lczo6eUF0dHIsICZTVkdUZXh0
UG9zaXRpb25pbmdFbGVtZW50OjptX3k+KCk7Ci0gICAgcmVnaXN0cnkucmVnaXN0ZXJBdHRyaWJ1
dGU8U1ZHTmFtZXM6OmR4QXR0ciwgJlNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQ6Om1fZHg+KCk7
Ci0gICAgcmVnaXN0cnkucmVnaXN0ZXJBdHRyaWJ1dGU8U1ZHTmFtZXM6OmR5QXR0ciwgJlNWR1Rl
eHRQb3NpdGlvbmluZ0VsZW1lbnQ6Om1fZHk+KCk7Ci19Ci0KIHZvaWQgU1ZHVGV4dFBvc2l0aW9u
aW5nRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29u
c3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6eEF0
dHIpIHsKLSAgICAgICAgU1ZHTGVuZ3RoTGlzdFZhbHVlcyBuZXdMaXN0OwotICAgICAgICBuZXdM
aXN0LnBhcnNlKHZhbHVlLCBMZW5ndGhNb2RlV2lkdGgpOwotICAgICAgICBtX3guZGV0YWNoQW5p
bWF0ZWRMaXN0V3JhcHBlcnMoYXR0cmlidXRlT3duZXJQcm94eSgpLCBuZXdMaXN0LnNpemUoKSk7
Ci0gICAgICAgIG1feC5zZXRWYWx1ZShXVEZNb3ZlKG5ld0xpc3QpKTsKKyAgICAgICAgbV94LT5i
YXNlVmFsKCktPnBhcnNlKHZhbHVlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlm
IChuYW1lID09IFNWR05hbWVzOjp5QXR0cikgewotICAgICAgICBTVkdMZW5ndGhMaXN0VmFsdWVz
IG5ld0xpc3Q7Ci0gICAgICAgIG5ld0xpc3QucGFyc2UodmFsdWUsIExlbmd0aE1vZGVIZWlnaHQp
OwotICAgICAgICBtX3kuZGV0YWNoQW5pbWF0ZWRMaXN0V3JhcHBlcnMoYXR0cmlidXRlT3duZXJQ
cm94eSgpLCBuZXdMaXN0LnNpemUoKSk7Ci0gICAgICAgIG1feS5zZXRWYWx1ZShXVEZNb3ZlKG5l
d0xpc3QpKTsKKyAgICAgICAgbV95LT5iYXNlVmFsKCktPnBhcnNlKHZhbHVlKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAogICAgIGlmIChuYW1lID09IFNWR05hbWVzOjpkeEF0dHIpIHsKLSAg
ICAgICAgU1ZHTGVuZ3RoTGlzdFZhbHVlcyBuZXdMaXN0OwotICAgICAgICBuZXdMaXN0LnBhcnNl
KHZhbHVlLCBMZW5ndGhNb2RlV2lkdGgpOwotICAgICAgICBtX2R4LmRldGFjaEFuaW1hdGVkTGlz
dFdyYXBwZXJzKGF0dHJpYnV0ZU93bmVyUHJveHkoKSwgbmV3TGlzdC5zaXplKCkpOwotICAgICAg
ICBtX2R4LnNldFZhbHVlKFdURk1vdmUobmV3TGlzdCkpOworICAgICAgICBtX2R4LT5iYXNlVmFs
KCktPnBhcnNlKHZhbHVlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmIChuYW1l
ID09IFNWR05hbWVzOjpkeUF0dHIpIHsKLSAgICAgICAgU1ZHTGVuZ3RoTGlzdFZhbHVlcyBuZXdM
aXN0OwotICAgICAgICBuZXdMaXN0LnBhcnNlKHZhbHVlLCBMZW5ndGhNb2RlSGVpZ2h0KTsKLSAg
ICAgICAgbV9keS5kZXRhY2hBbmltYXRlZExpc3RXcmFwcGVycyhhdHRyaWJ1dGVPd25lclByb3h5
KCksIG5ld0xpc3Quc2l6ZSgpKTsKLSAgICAgICAgbV9keS5zZXRWYWx1ZShXVEZNb3ZlKG5ld0xp
c3QpKTsKKyAgICAgICAgbV9keS0+YmFzZVZhbCgpLT5wYXJzZSh2YWx1ZSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKQEAgLTExOCw3ICs5Niw3IEBAIGJvb2wgU1ZHVGV4dFBvc2l0aW9uaW5n
RWxlbWVudDo6aXNQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFt
CiAKIHZvaWQgU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChj
b25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsKLSAgICBpZiAoaXNLbm93bkF0dHJpYnV0
ZShhdHRyTmFtZSkpIHsKKyAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0
ZShhdHRyTmFtZSkpIHsKICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgq
dGhpcyk7CiAKICAgICAgICAgaWYgKGF0dHJOYW1lICE9IFNWR05hbWVzOjpyb3RhdGVBdHRyKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LmgKaW5kZXgg
MzhiYTRjMGVjZDI3NDk5YjA2OWFkM2NmMDQ5ZDFmNjczMWIwY2E0Yi4uNDVkNWM5MzQ2Mzk3YTkz
ZTA5YzA4NmZkNzQ0NjJkNDVkOGI4OWMxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
VGV4dFBvc2l0aW9uaW5nRWxlbWVudC5oCkBAIC0yMSw3ICsyMSw2IEBACiAKICNwcmFnbWEgb25j
ZQogCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0LmgiCiAjaW5jbHVkZSAiU1ZHVGV4
dENvbnRlbnRFbGVtZW50LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM2LDE2ICszNSwx
NiBAQCBwdWJsaWM6CiAgICAgCiAgICAgdXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9IFNWR1Byb3Bl
cnR5T3duZXJSZWdpc3RyeTxTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LCBTVkdUZXh0Q29udGVu
dEVsZW1lbnQ+OwogCi0gICAgY29uc3QgU1ZHTGVuZ3RoTGlzdFZhbHVlcyYgeCgpIGNvbnN0IHsg
cmV0dXJuIG1feC5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAgIGNv
bnN0IFNWR0xlbmd0aExpc3RWYWx1ZXMmIHkoKSBjb25zdCB7IHJldHVybiBtX3kuY3VycmVudFZh
bHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBjb25zdCBTVkdMZW5ndGhMaXN0VmFs
dWVzJiBkeCgpIGNvbnN0IHsgcmV0dXJuIG1fZHguY3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVy
UHJveHkoKSk7IH0KLSAgICBjb25zdCBTVkdMZW5ndGhMaXN0VmFsdWVzJiBkeSgpIGNvbnN0IHsg
cmV0dXJuIG1fZHkuY3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KKyAgICBj
b25zdCBTVkdMZW5ndGhMaXN0JiB4KCkgY29uc3QgeyByZXR1cm4gbV94LT5jdXJyZW50VmFsdWUo
KTsgfQorICAgIGNvbnN0IFNWR0xlbmd0aExpc3QmIHkoKSBjb25zdCB7IHJldHVybiBtX3ktPmN1
cnJlbnRWYWx1ZSgpOyB9CisgICAgY29uc3QgU1ZHTGVuZ3RoTGlzdCYgZHgoKSBjb25zdCB7IHJl
dHVybiBtX2R4LT5jdXJyZW50VmFsdWUoKTsgfQorICAgIGNvbnN0IFNWR0xlbmd0aExpc3QmIGR5
KCkgY29uc3QgeyByZXR1cm4gbV9keS0+Y3VycmVudFZhbHVlKCk7IH0KICAgICBjb25zdCBTVkdO
dW1iZXJMaXN0JiByb3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3JvdGF0ZS0+Y3VycmVudFZhbHVl
KCk7IH0KIAotICAgIFJlZlB0cjxTVkdBbmltYXRlZExlbmd0aExpc3Q+IHhBbmltYXRlZCgpIHsg
cmV0dXJuIG1feC5hbmltYXRlZFByb3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAg
ICBSZWZQdHI8U1ZHQW5pbWF0ZWRMZW5ndGhMaXN0PiB5QW5pbWF0ZWQoKSB7IHJldHVybiBtX3ku
YW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9Ci0gICAgUmVmUHRyPFNW
R0FuaW1hdGVkTGVuZ3RoTGlzdD4gZHhBbmltYXRlZCgpIHsgcmV0dXJuIG1fZHguYW5pbWF0ZWRQ
cm9wZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9Ci0gICAgUmVmUHRyPFNWR0FuaW1hdGVk
TGVuZ3RoTGlzdD4gZHlBbmltYXRlZCgpIHsgcmV0dXJuIG1fZHkuYW5pbWF0ZWRQcm9wZXJ0eShh
dHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CisgICAgU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0JiB4QW5p
bWF0ZWQoKSB7IHJldHVybiBtX3g7IH0KKyAgICBTVkdBbmltYXRlZExlbmd0aExpc3QmIHlBbmlt
YXRlZCgpIHsgcmV0dXJuIG1feTsgfQorICAgIFNWR0FuaW1hdGVkTGVuZ3RoTGlzdCYgZHhBbmlt
YXRlZCgpIHsgcmV0dXJuIG1fZHg7IH0KKyAgICBTVkdBbmltYXRlZExlbmd0aExpc3QmIGR5QW5p
bWF0ZWQoKSB7IHJldHVybiBtX2R5OyB9CiAgICAgU1ZHQW5pbWF0ZWROdW1iZXJMaXN0JiByb3Rh
dGVBbmltYXRlZCgpIHsgcmV0dXJuIG1fcm90YXRlOyB9CiAKIHByb3RlY3RlZDoKQEAgLTU5LDIx
ICs1OCwxNCBAQCBwcml2YXRlOgogICAgIHZvaWQgY29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9u
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmLCBNdXRh
YmxlU3R5bGVQcm9wZXJ0aWVzJikgZmluYWw7CiAKICAgICBjb25zdCBTVkdBdHRyaWJ1dGVPd25l
clByb3h5JiBhdHRyaWJ1dGVPd25lclByb3h5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9h
dHRyaWJ1dGVPd25lclByb3h5OyB9Ci0gICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJBdHRyaWJ1dGVz
KCk7Ci0KICAgICBjb25zdCBTVkdQcm9wZXJ0eVJlZ2lzdHJ5JiBwcm9wZXJ0eVJlZ2lzdHJ5KCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9wcm9wZXJ0eVJlZ2lzdHJ5OyB9CiAKLSAgICBzdGF0
aWMgYm9vbCBpc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5h
bWUpCi0gICAgewotICAgICAgICByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6aXNLbm93bkF0
dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKSB8fCBQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmli
dXRlKGF0dHJpYnV0ZU5hbWUpOwotICAgIH0KLQogICAgIEF0dHJpYnV0ZU93bmVyUHJveHkgbV9h
dHRyaWJ1dGVPd25lclByb3h5IHsgKnRoaXMgfTsKICAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJv
cGVydHlSZWdpc3RyeSB7ICp0aGlzIH07Ci0gICAgU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0QXR0cmli
dXRlIG1feDsKLSAgICBTVkdBbmltYXRlZExlbmd0aExpc3RBdHRyaWJ1dGUgbV95OwotICAgIFNW
R0FuaW1hdGVkTGVuZ3RoTGlzdEF0dHJpYnV0ZSBtX2R4OwotICAgIFNWR0FuaW1hdGVkTGVuZ3Ro
TGlzdEF0dHJpYnV0ZSBtX2R5OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aExpc3Q+IG1feCB7
IFNWR0FuaW1hdGVkTGVuZ3RoTGlzdDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVXaWR0aCkgfTsK
KyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGhMaXN0PiBtX3kgeyBTVkdBbmltYXRlZExlbmd0aExp
c3Q6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0KSB9OworICAgIFJlZjxTVkdBbmltYXRl
ZExlbmd0aExpc3Q+IG1fZHggeyBTVkdBbmltYXRlZExlbmd0aExpc3Q6OmNyZWF0ZSh0aGlzLCBM
ZW5ndGhNb2RlV2lkdGgpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoTGlzdD4gbV9keSB7
IFNWR0FuaW1hdGVkTGVuZ3RoTGlzdDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQpIH07
CiAgICAgUmVmPFNWR0FuaW1hdGVkTnVtYmVyTGlzdD4gbV9yb3RhdGUgeyBTVkdBbmltYXRlZE51
bWJlckxpc3Q6OmNyZWF0ZSh0aGlzKSB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1l
bnQuY3BwCmluZGV4IDA2MTQyYTRjZmM5OTk3OWE0OGRiYWU2NGFjMjE2ZTcyOTJiYzA1NmUuLmE5
YWUzNTM2YmZmOGM1NjFjYjNkM2E0Y2ZkYjk3MjdmNTMxZjJmZTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHVXNlRWxlbWVudC5jcHAKQEAgLTUsNyArNSw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
VG9yY2ggTW9iaWxlIChCZWlqaW5nKSBDby4gTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICog
Q29weXJpZ2h0IChDKSAyMDEyIFVuaXZlcnNpdHkgb2YgU3plZ2VkCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgUmVuYXRhIEhvZG92YW4gPHJlbmlAd2Via2l0Lm9yZz4KLSAqIENvcHlyaWdodCAoQykg
MjAxNS0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxNS0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYwpAQCAtNTQsNyArNTQsMTQgQEAgaW5saW5lIFNWR1VzZUVsZW1lbnQ6OlNWR1VzZUVs
ZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3UKIHsKICAg
ICBBU1NFUlQoaGFzQ3VzdG9tU3R5bGVSZXNvbHZlQ2FsbGJhY2tzKCkpOwogICAgIEFTU0VSVCho
YXNUYWdOYW1lKFNWR05hbWVzOjp1c2VUYWcpKTsKLSAgICByZWdpc3RlckF0dHJpYnV0ZXMoKTsK
KworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKKyAgICBzdGQ6OmNhbGxfb25j
ZShvbmNlRmxhZywgW10geworICAgICAgICBQcm9wZXJ0eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3Bl
cnR5PFNWR05hbWVzOjp4QXR0ciwgJlNWR1VzZUVsZW1lbnQ6Om1feD4oKTsKKyAgICAgICAgUHJv
cGVydHlSZWdpc3RyeTo6cmVnaXN0ZXJQcm9wZXJ0eTxTVkdOYW1lczo6eUF0dHIsICZTVkdVc2VF
bGVtZW50OjptX3k+KCk7CisgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVy
dHk8U1ZHTmFtZXM6OndpZHRoQXR0ciwgJlNWR1VzZUVsZW1lbnQ6Om1fd2lkdGg+KCk7CisgICAg
ICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6OmhlaWdodEF0
dHIsICZTVkdVc2VFbGVtZW50OjptX2hlaWdodD4oKTsKKyAgICB9KTsKIH0KIAogUmVmPFNWR1Vz
ZUVsZW1lbnQ+IFNWR1VzZUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdO
YW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCkBAIC02OCwyOSArNzUsMTggQEAgU1ZHVXNlRWxlbWVu
dDo6flNWR1VzZUVsZW1lbnQoKQogICAgICAgICBtX2V4dGVybmFsRG9jdW1lbnQtPnJlbW92ZUNs
aWVudCgqdGhpcyk7CiB9CiAKLXZvaWQgU1ZHVXNlRWxlbWVudDo6cmVnaXN0ZXJBdHRyaWJ1dGVz
KCkKLXsKLSAgICBhdXRvJiByZWdpc3RyeSA9IGF0dHJpYnV0ZVJlZ2lzdHJ5KCk7Ci0gICAgaWYg
KCFyZWdpc3RyeS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLSAgICByZWdpc3RyeS5yZWdp
c3RlckF0dHJpYnV0ZTxTVkdOYW1lczo6eEF0dHIsICZTVkdVc2VFbGVtZW50OjptX3g+KCk7Ci0g
ICAgcmVnaXN0cnkucmVnaXN0ZXJBdHRyaWJ1dGU8U1ZHTmFtZXM6OnlBdHRyLCAmU1ZHVXNlRWxl
bWVudDo6bV95PigpOwotICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjp3
aWR0aEF0dHIsICZTVkdVc2VFbGVtZW50OjptX3dpZHRoPigpOwotICAgIHJlZ2lzdHJ5LnJlZ2lz
dGVyQXR0cmlidXRlPFNWR05hbWVzOjpoZWlnaHRBdHRyLCAmU1ZHVXNlRWxlbWVudDo6bV9oZWln
aHQ+KCk7Ci19Ci0KIHZvaWQgU1ZHVXNlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBTVkdQ
YXJzaW5nRXJyb3IgcGFyc2VFcnJvciA9IE5vRXJyb3I7CiAKICAgICBpZiAobmFtZSA9PSBTVkdO
YW1lczo6eEF0dHIpCi0gICAgICAgIG1feC5zZXRWYWx1ZShTVkdMZW5ndGhWYWx1ZTo6Y29uc3Ry
dWN0KExlbmd0aE1vZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKKyAgICAgICAgbV94LT5z
ZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlV2lk
dGgsIHZhbHVlLCBwYXJzZUVycm9yKSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6
eUF0dHIpCi0gICAgICAgIG1feS5zZXRWYWx1ZShTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExl
bmd0aE1vZGVIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7CisgICAgICAgIG1feS0+c2V0QmFz
ZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZUhlaWdodCwg
dmFsdWUsIHBhcnNlRXJyb3IpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjp3aWR0
aEF0dHIpCi0gICAgICAgIG1fd2lkdGguc2V0VmFsdWUoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVj
dChMZW5ndGhNb2RlV2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yLCBGb3JiaWROZWdhdGl2ZUxlbmd0
aHMpKTsKKyAgICAgICAgbV93aWR0aC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVl
Ojpjb25zdHJ1Y3QoTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvciwgRm9yYmlkTmVn
YXRpdmVMZW5ndGhzKSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6aGVpZ2h0QXR0
cikKLSAgICAgICAgbV9oZWlnaHQuc2V0VmFsdWUoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChM
ZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvciwgRm9yYmlkTmVnYXRpdmVMZW5ndGhz
KSk7CisgICAgICAgIG1faGVpZ2h0LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6
OmNvbnN0cnVjdChMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvciwgRm9yYmlkTmVn
YXRpdmVMZW5ndGhzKSk7CiAKICAgICByZXBvcnRBdHRyaWJ1dGVQYXJzaW5nRXJyb3IocGFyc2VF
cnJvciwgbmFtZSwgdmFsdWUpOwogCkBAIC0xNjMsNyArMTU5LDcgQEAgdm9pZCBTVkdVc2VFbGVt
ZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQog
ewogICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwogCi0gICAgaWYg
KGlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CisgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6
OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CiAgICAgICAgIHVwZGF0ZVJlbGF0aXZlTGVu
Z3Roc0luZm9ybWF0aW9uKCk7CiAgICAgICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6d2lk
dGhBdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjpoZWlnaHRBdHRyKSB7CiAgICAgICAgICAg
ICAvLyBGSVhNRTogSXQncyB1bm5lY2Vzc2FyaWx5IGluZWZmaWNpZW50IHRvIHVwZGF0ZSBib3Ro
IHdpZHRoIGFuZCBoZWlnaHQgZWFjaCB0aW1lIGVpdGhlciBpcyBjaGFuZ2VkLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdVc2VFbGVtZW50LmgKaW5kZXggZDZlZGFmZWM3ZGE2NzlmZTUxZWRhMWIxNzFkOTQxNmE5
MTgwMTUwYy4uNjIxY2U1OTBjNzFmMjljOWJhNGU0Y2MxNGJlNTNjMTQ2ZDMyY2EwZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVXNlRWxlbWVudC5oCkBAIC0yMyw3ICsyMyw2IEBACiAKICNpbmNsdWRlICJD
YWNoZWRSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIkNhY2hlZFNWR0RvY3VtZW50Q2xpZW50
LmgiCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRMZW5ndGguaCIKICNpbmNsdWRlICJTVkdFeHRlcm5h
bFJlc291cmNlc1JlcXVpcmVkLmgiCiAjaW5jbHVkZSAiU1ZHR3JhcGhpY3NFbGVtZW50LmgiCiAj
aW5jbHVkZSAiU1ZHVVJJUmVmZXJlbmNlLmgiCkBAIC00NSwxNSArNDQsMTUgQEAgcHVibGljOgog
CiAgICAgUmVuZGVyRWxlbWVudCogcmVuZGVyZXJDbGlwQ2hpbGQoKSBjb25zdDsKIAotICAgIGNv
bnN0IFNWR0xlbmd0aFZhbHVlJiB4KCkgY29uc3QgeyByZXR1cm4gbV94LmN1cnJlbnRWYWx1ZShh
dHRyaWJ1dGVPd25lclByb3h5KCkpOyB9Ci0gICAgY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIHkoKSBj
b25zdCB7IHJldHVybiBtX3kuY3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0K
LSAgICBjb25zdCBTVkdMZW5ndGhWYWx1ZSYgd2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3dpZHRo
LmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9Ci0gICAgY29uc3QgU1ZHTGVu
Z3RoVmFsdWUmIGhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1faGVpZ2h0LmN1cnJlbnRWYWx1ZShh
dHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CisgICAgY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIHgoKSBj
b25zdCB7IHJldHVybiBtX3gtPmN1cnJlbnRWYWx1ZSgpOyB9CisgICAgY29uc3QgU1ZHTGVuZ3Ro
VmFsdWUmIHkoKSBjb25zdCB7IHJldHVybiBtX3ktPmN1cnJlbnRWYWx1ZSgpOyB9CisgICAgY29u
c3QgU1ZHTGVuZ3RoVmFsdWUmIHdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV93aWR0aC0+Y3VycmVu
dFZhbHVlKCk7IH0KKyAgICBjb25zdCBTVkdMZW5ndGhWYWx1ZSYgaGVpZ2h0KCkgY29uc3QgeyBy
ZXR1cm4gbV9oZWlnaHQtPmN1cnJlbnRWYWx1ZSgpOyB9CiAKLSAgICBSZWZQdHI8U1ZHQW5pbWF0
ZWRMZW5ndGg+IHhBbmltYXRlZCgpIHsgcmV0dXJuIG1feC5hbmltYXRlZFByb3BlcnR5KGF0dHJp
YnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBSZWZQdHI8U1ZHQW5pbWF0ZWRMZW5ndGg+IHlBbmlt
YXRlZCgpIHsgcmV0dXJuIG1feS5hbmltYXRlZFByb3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHko
KSk7IH0KLSAgICBSZWZQdHI8U1ZHQW5pbWF0ZWRMZW5ndGg+IHdpZHRoQW5pbWF0ZWQoKSB7IHJl
dHVybiBtX3dpZHRoLmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQot
ICAgIFJlZlB0cjxTVkdBbmltYXRlZExlbmd0aD4gaGVpZ2h0QW5pbWF0ZWQoKSB7IHJldHVybiBt
X2hlaWdodC5hbmltYXRlZFByb3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KKyAgICBT
VkdBbmltYXRlZExlbmd0aCYgeEFuaW1hdGVkKCkgeyByZXR1cm4gbV94OyB9CisgICAgU1ZHQW5p
bWF0ZWRMZW5ndGgmIHlBbmltYXRlZCgpIHsgcmV0dXJuIG1feTsgfQorICAgIFNWR0FuaW1hdGVk
TGVuZ3RoJiB3aWR0aEFuaW1hdGVkKCkgeyByZXR1cm4gbV93aWR0aDsgfQorICAgIFNWR0FuaW1h
dGVkTGVuZ3RoJiBoZWlnaHRBbmltYXRlZCgpIHsgcmV0dXJuIG1faGVpZ2h0OyB9CiAKIHByaXZh
dGU6CiAgICAgU1ZHVXNlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsK
QEAgLTY1LDE4ICs2NCwxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgYnVpbGRQZW5kaW5nUmVzb3Vy
Y2UoKSBvdmVycmlkZTsKIAogICAgIHVzaW5nIEF0dHJpYnV0ZU93bmVyUHJveHkgPSBTVkdBdHRy
aWJ1dGVPd25lclByb3h5SW1wbDxTVkdVc2VFbGVtZW50LCBTVkdHcmFwaGljc0VsZW1lbnQsIFNW
R0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIFNWR1VSSVJlZmVyZW5jZT47Ci0gICAgc3RhdGlj
IEF0dHJpYnV0ZU93bmVyUHJveHk6OkF0dHJpYnV0ZVJlZ2lzdHJ5JiBhdHRyaWJ1dGVSZWdpc3Ry
eSgpIHsgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmF0dHJpYnV0ZVJlZ2lzdHJ5KCk7IH0K
LSAgICBzdGF0aWMgdm9pZCByZWdpc3RlckF0dHJpYnV0ZXMoKTsKICAgICBjb25zdCBTVkdBdHRy
aWJ1dGVPd25lclByb3h5JiBhdHRyaWJ1dGVPd25lclByb3h5KCkgY29uc3QgZmluYWwgeyByZXR1
cm4gbV9hdHRyaWJ1dGVPd25lclByb3h5OyB9CiAKICAgICB1c2luZyBQcm9wZXJ0eVJlZ2lzdHJ5
ID0gU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5PFNWR1VzZUVsZW1lbnQsIFNWR0dyYXBoaWNzRWxl
bWVudCwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgU1ZHVVJJUmVmZXJlbmNlPjsKICAg
ICBjb25zdCBTVkdQcm9wZXJ0eVJlZ2lzdHJ5JiBwcm9wZXJ0eVJlZ2lzdHJ5KCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gbV9wcm9wZXJ0eVJlZ2lzdHJ5OyB9CiAKLSAgICBzdGF0aWMgYm9vbCBpc0tu
b3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCi0gICAgewot
ICAgICAgICByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRy
aWJ1dGVOYW1lKSB8fCBQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0
ZU5hbWUpOwotICAgIH0KLQogICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgc3ZnQXR0cmli
dXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAKQEAgLTEwOCwxMCAr
MTAwLDEwIEBAIHByaXZhdGU6CiAKICAgICBBdHRyaWJ1dGVPd25lclByb3h5IG1fYXR0cmlidXRl
T3duZXJQcm94eSB7ICp0aGlzIH07CiAgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVn
aXN0cnkgeyAqdGhpcyB9OwotICAgIFNWR0FuaW1hdGVkTGVuZ3RoQXR0cmlidXRlIG1feCB7IExl
bmd0aE1vZGVXaWR0aCB9OwotICAgIFNWR0FuaW1hdGVkTGVuZ3RoQXR0cmlidXRlIG1feSB7IExl
bmd0aE1vZGVIZWlnaHQgfTsKLSAgICBTVkdBbmltYXRlZExlbmd0aEF0dHJpYnV0ZSBtX3dpZHRo
IHsgTGVuZ3RoTW9kZVdpZHRoIH07Ci0gICAgU1ZHQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUgbV9o
ZWlnaHQgeyBMZW5ndGhNb2RlSGVpZ2h0IH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBt
X3ggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVXaWR0aCkgfTsK
KyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feSB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVh
dGUodGhpcywgTGVuZ3RoTW9kZUhlaWdodCkgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+
IG1fd2lkdGggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVXaWR0
aCkgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1faGVpZ2h0IHsgU1ZHQW5pbWF0ZWRM
ZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0KSB9OwogCiAgICAgYm9vbCBtX2hh
dmVGaXJlZExvYWRFdmVudCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3NoYWRvd1RyZWVOZWVkc1Vw
ZGF0ZSB7IHRydWUgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWYWx1ZS5o
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZhbHVlLmgKaW5kZXggZDM2MjRjMjJjOWMwM2ZiZDQ4
MmU0ZjVhYjg1ODQ3NWM4Yzk0YTJmZC4uNzlmZDJmY2EwMThkYjZiZTdhYmI4ZWU0MjE0Y2VhM2Nm
NWVjODI2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZhbHVlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZhbHVlLmgKQEAgLTI1LDggKzI1LDYgQEAKIAogI3ByYWdt
YSBvbmNlCiAKLSNpbmNsdWRlICJTVkdMZW5ndGhMaXN0VmFsdWVzLmgiCi0jaW5jbHVkZSAiU1ZH
TGVuZ3RoVmFsdWUuaCIKICNpbmNsdWRlICJTVkdQYXRoQnl0ZVN0cmVhbS5oIgogI2luY2x1ZGUg
IlNWR1RyYW5zZm9ybUxpc3RWYWx1ZXMuaCIKIApAQCAtMzUsOCArMzMsNiBAQAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiB1c2luZyBTVkdWYWx1ZVZhcmlhbnQgPSBWYXJpYW50PAotICAgIFNWR0xl
bmd0aFZhbHVlKiwKLSAgICBTVkdMZW5ndGhMaXN0VmFsdWVzKiwKICAgICBTVkdQYXRoQnl0ZVN0
cmVhbSosCiAgICAgU1ZHVHJhbnNmb3JtTGlzdFZhbHVlcyoKID47CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5QWNjZXNzb3JJbXBs
LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5QWNj
ZXNzb3JJbXBsLmgKaW5kZXggNzBmMTlmZGRmMjMyMjljODQwZWNjMDk0NjRmMDY3ZWJkOWE2Mzg5
ZS4uYTc2NmEyNzYxYWQ5YTljYTZhYzBjMGE0ZDUyYzM1NWE5MmUxMTAzOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFjY2Vzc29y
SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJv
cGVydHlBY2Nlc3NvckltcGwuaApAQCAtMTA4LDYgKzEwOCw1MyBAQCBwcml2YXRlOgogICAgIH0K
IH07CiAKK3RlbXBsYXRlPHR5cGVuYW1lIE93bmVyVHlwZT4KK2NsYXNzIFNWR0FuaW1hdGVkTGVu
Z3RoQWNjZXNzb3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFjY2Vzc29yPE93
bmVyVHlwZSwgU1ZHQW5pbWF0ZWRMZW5ndGg+IHsKKyAgICB1c2luZyBCYXNlID0gU1ZHQW5pbWF0
ZWRQcm9wZXJ0eUFjY2Vzc29yPE93bmVyVHlwZSwgU1ZHQW5pbWF0ZWRMZW5ndGg+OworICAgIHVz
aW5nIEJhc2U6OnByb3BlcnR5OworCitwdWJsaWM6CisgICAgdXNpbmcgQmFzZTo6QmFzZTsKKyAg
ICB0ZW1wbGF0ZTxSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IE93bmVyVHlwZTo6KnByb3BlcnR5Pgor
ICAgIGNvbnN0ZXhwciBzdGF0aWMgY29uc3QgU1ZHTWVtYmVyQWNjZXNzb3I8T3duZXJUeXBlPiYg
c2luZ2xldG9uKCkgeyByZXR1cm4gQmFzZTo6dGVtcGxhdGUgc2luZ2xldG9uPFNWR0FuaW1hdGVk
TGVuZ3RoQWNjZXNzb3IsIHByb3BlcnR5PigpOyB9CisKK3ByaXZhdGU6CisgICAgYm9vbCBpc0Fu
aW1hdGVkTGVuZ3RoKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAgc3Rk
Ojp1bmlxdWVfcHRyPFNWR0F0dHJpYnV0ZUFuaW1hdG9yPiBjcmVhdGVBbmltYXRvcihPd25lclR5
cGUmIG93bmVyLCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBBbmltYXRpb25N
b2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQs
IGJvb2wgaXNBZGRpdGl2ZSkgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIFNWR0xlbmd0aE1v
ZGUgbGVuZ3RoTW9kZSA9IHByb3BlcnR5KG93bmVyKS0+YmFzZVZhbCgpLT52YWx1ZSgpLnVuaXRN
b2RlKCk7CisgICAgICAgIHJldHVybiBTVkdBbmltYXRlZExlbmd0aEFuaW1hdG9yOjpjcmVhdGUo
YXR0cmlidXRlTmFtZSwgcHJvcGVydHkob3duZXIpLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwg
aXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSwgbGVuZ3RoTW9kZSk7CisgICAgfQorCisgICAgdm9p
ZCBhcHBlbmRBbmltYXRlZEluc3RhbmNlKE93bmVyVHlwZSYgb3duZXIsIFNWR0F0dHJpYnV0ZUFu
aW1hdG9yJiBhbmltYXRvcikgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHN0YXRpY19jYXN0
PFNWR0FuaW1hdGVkTGVuZ3RoQW5pbWF0b3ImPihhbmltYXRvcikuYXBwZW5kQW5pbWF0ZWRJbnN0
YW5jZShwcm9wZXJ0eShvd25lcikpOworICAgIH0KK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIE93
bmVyVHlwZT4KK2NsYXNzIFNWR0FuaW1hdGVkTGVuZ3RoTGlzdEFjY2Vzc29yIGZpbmFsIDogcHVi
bGljIFNWR0FuaW1hdGVkUHJvcGVydHlBY2Nlc3NvcjxPd25lclR5cGUsIFNWR0FuaW1hdGVkTGVu
Z3RoTGlzdD4geworICAgIHVzaW5nIEJhc2UgPSBTVkdBbmltYXRlZFByb3BlcnR5QWNjZXNzb3I8
T3duZXJUeXBlLCBTVkdBbmltYXRlZExlbmd0aExpc3Q+OworICAgIHVzaW5nIEJhc2U6OnByb3Bl
cnR5OworCitwdWJsaWM6CisgICAgdXNpbmcgQmFzZTo6QmFzZTsKKyAgICB0ZW1wbGF0ZTxSZWY8
U1ZHQW5pbWF0ZWRMZW5ndGhMaXN0PiBPd25lclR5cGU6Oipwcm9wZXJ0eT4KKyAgICBjb25zdGV4
cHIgc3RhdGljIGNvbnN0IFNWR01lbWJlckFjY2Vzc29yPE93bmVyVHlwZT4mIHNpbmdsZXRvbigp
IHsgcmV0dXJuIEJhc2U6OnRlbXBsYXRlIHNpbmdsZXRvbjxTVkdBbmltYXRlZExlbmd0aExpc3RB
Y2Nlc3NvciwgcHJvcGVydHk+KCk7IH0KKworcHJpdmF0ZToKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
U1ZHQXR0cmlidXRlQW5pbWF0b3I+IGNyZWF0ZUFuaW1hdG9yKE93bmVyVHlwZSYgb3duZXIsIGNv
bnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9u
TW9kZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0
aXZlKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIFNWR0FuaW1hdGVkTGVuZ3Ro
TGlzdEFuaW1hdG9yOjpjcmVhdGUoYXR0cmlidXRlTmFtZSwgcHJvcGVydHkob3duZXIpLCBhbmlt
YXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSwgTGVuZ3RoTW9k
ZVdpZHRoKTsKKyAgICB9CisKKyAgICB2b2lkIGFwcGVuZEFuaW1hdGVkSW5zdGFuY2UoT3duZXJU
eXBlJiBvd25lciwgU1ZHQXR0cmlidXRlQW5pbWF0b3ImIGFuaW1hdG9yKSBjb25zdCBmaW5hbAor
ICAgIHsKKyAgICAgICAgc3RhdGljX2Nhc3Q8U1ZHQW5pbWF0ZWRMZW5ndGhMaXN0QW5pbWF0b3Im
PihhbmltYXRvcikuYXBwZW5kQW5pbWF0ZWRJbnN0YW5jZShwcm9wZXJ0eShvd25lcikpOworICAg
IH0KK307CisKIHRlbXBsYXRlPHR5cGVuYW1lIE93bmVyVHlwZT4KIGNsYXNzIFNWR0FuaW1hdGVk
TnVtYmVyQWNjZXNzb3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFjY2Vzc29y
PE93bmVyVHlwZSwgU1ZHQW5pbWF0ZWROdW1iZXI+IHsKICAgICB1c2luZyBCYXNlID0gU1ZHQW5p
bWF0ZWRQcm9wZXJ0eUFjY2Vzc29yPE93bmVyVHlwZSwgU1ZHQW5pbWF0ZWROdW1iZXI+OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0
eUFuaW1hdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFBy
b3BlcnR5QW5pbWF0b3IuaAppbmRleCA4ZDRhYTZiZmVmODEyZDgyNDIyNzViNmYzMTUyNGY3YjAy
ODU5Y2VjLi5hMTk3OTQxMmM0Njc0OGEyN2FjYTc4YWZkNzA5NGI0NTBiMTUwODI0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5QW5p
bWF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFBy
b3BlcnR5QW5pbWF0b3IuaApAQCAtNzUsNiArNzUsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFw
cGx5KFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQpIG92ZXJyaWRlCiAgICAgeworICAgICAgICBp
ZiAoaXNBbmltYXRlZFN0eWxlUHJvcGVydHlBbmlhbXRvcih0YXJnZXRFbGVtZW50KSkKKyAgICAg
ICAgICAgIGFwcGx5QW5pbWF0ZWRTdHlsZVByb3BlcnR5Q2hhbmdlKHRhcmdldEVsZW1lbnQsIG1f
YW5pbWF0ZWQtPmFuaW1WYWxBc1N0cmluZygpKTsKICAgICAgICAgYXBwbHlBbmltYXRlZFByb3Bl
cnR5Q2hhbmdlKHRhcmdldEVsZW1lbnQpOwogICAgIH0KIApAQCAtODgsNiArOTAsOCBAQCBwdWJs
aWM6CiAgICAgICAgICAgICBpbnN0YW5jZS0+aW5zdGFuY2VTdG9wQW5pbWF0aW9uKCk7CiAKICAg
ICAgICAgYXBwbHlBbmltYXRlZFByb3BlcnR5Q2hhbmdlKHRhcmdldEVsZW1lbnQpOworICAgICAg
ICBpZiAoaXNBbmltYXRlZFN0eWxlUHJvcGVydHlBbmlhbXRvcih0YXJnZXRFbGVtZW50KSkKKyAg
ICAgICAgICAgIHJlbW92ZUFuaW1hdGVkU3R5bGVQcm9wZXJ0eSh0YXJnZXRFbGVtZW50KTsKICAg
ICB9CiAKICAgICBmbG9hdCBjYWxjdWxhdGVEaXN0YW5jZShTVkdFbGVtZW50KiB0YXJnZXRFbGVt
ZW50LCBjb25zdCBTdHJpbmcmIGZyb20sIGNvbnN0IFN0cmluZyYgdG8pIGNvbnN0IG92ZXJyaWRl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFBy
b3BlcnR5QW5pbWF0b3JJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdB
bmltYXRlZFByb3BlcnR5QW5pbWF0b3JJbXBsLmgKaW5kZXggYTdmMzVkMzM4YWY5ZWRlNWQyOTFi
ZTBkZDNjMzZkMzkyNDdmNTEzZS4uOTViY2JkNjJhYThmNDI3MWJhYWFiYzQxMGUyMjg2ZTRlNWVk
MjViNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0
ZWRQcm9wZXJ0eUFuaW1hdG9ySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0
aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvckltcGwuaApAQCAtMTIwLDYgKzEyMCw0OCBA
QCBwcml2YXRlOgogICAgIH0KIH07CiAKK2NsYXNzIFNWR0FuaW1hdGVkTGVuZ3RoQW5pbWF0b3Ig
ZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9yPFNWR0FuaW1hdGVkTGVu
Z3RoLCBTVkdBbmltYXRpb25MZW5ndGhGdW5jdGlvbj4geworICAgIHVzaW5nIEJhc2UgPSBTVkdB
bmltYXRlZFByb3BlcnR5QW5pbWF0b3I8U1ZHQW5pbWF0ZWRMZW5ndGgsIFNWR0FuaW1hdGlvbkxl
bmd0aEZ1bmN0aW9uPjsKKworcHVibGljOgorICAgIFNWR0FuaW1hdGVkTGVuZ3RoQW5pbWF0b3Io
Y29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVkTGVuZ3Ro
PiYgYW5pbWF0ZWQsIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01v
ZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlLCBTVkdMZW5ndGhNb2RlIGxl
bmd0aE1vZGUpCisgICAgICAgIDogQmFzZShhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0
aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUsIGxlbmd0aE1vZGUp
CisgICAgeworICAgIH0KKworICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+JiBhbmltYXRlZCwgQW5p
bWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3Vt
dWxhdGVkLCBib29sIGlzQWRkaXRpdmUsIFNWR0xlbmd0aE1vZGUgbGVuZ3RoTW9kZSkKKyAgICB7
CisgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVkTGVuZ3RoQW5pbWF0
b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNB
Y2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSwgbGVuZ3RoTW9kZSk7CisgICAgfQorCitwcml2YXRlOgor
ICAgIHZvaWQgcHJvZ3Jlc3MoU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCwgZmxvYXQgcGVyY2Vu
dGFnZSwgdW5zaWduZWQgcmVwZWF0Q291bnQpIGZpbmFsCisgICAgeworICAgICAgICBtX2Z1bmN0
aW9uLnByb2dyZXNzKHRhcmdldEVsZW1lbnQsIHBlcmNlbnRhZ2UsIHJlcGVhdENvdW50LCBtX2Fu
aW1hdGVkLT5hbmltVmFsKCktPnZhbHVlKCkpOworICAgIH0KK307CisKK2NsYXNzIFNWR0FuaW1h
dGVkTGVuZ3RoTGlzdEFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlB
bmltYXRvcjxTVkdBbmltYXRlZExlbmd0aExpc3QsIFNWR0FuaW1hdGlvbkxlbmd0aExpc3RGdW5j
dGlvbj4geworICAgIHVzaW5nIEJhc2UgPSBTVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3I8U1ZH
QW5pbWF0ZWRMZW5ndGhMaXN0LCBTVkdBbmltYXRpb25MZW5ndGhMaXN0RnVuY3Rpb24+OworCitw
dWJsaWM6CisgICAgU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0QW5pbWF0b3IoY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoTGlzdD4mIGFuaW1hdGVk
LCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlz
QWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSwgU1ZHTGVuZ3RoTW9kZSBsZW5ndGhNb2RlKQor
ICAgICAgICA6IEJhc2UoYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNh
bGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlLCBsZW5ndGhNb2RlKQorICAgIHsKKyAg
ICB9CisKKyAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmli
dXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoTGlzdD4mIGFuaW1hdGVkLCBBbmltYXRpb25N
b2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQs
IGJvb2wgaXNBZGRpdGl2ZSwgU1ZHTGVuZ3RoTW9kZSBsZW5ndGhNb2RlKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRMZW5ndGhMaXN0QW5pbWF0b3I+
KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1
bXVsYXRlZCwgaXNBZGRpdGl2ZSwgbGVuZ3RoTW9kZSk7CisgICAgfQorCitwcml2YXRlOgorICAg
IHZvaWQgcHJvZ3Jlc3MoU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCwgZmxvYXQgcGVyY2VudGFn
ZSwgdW5zaWduZWQgcmVwZWF0Q291bnQpIGZpbmFsCisgICAgeworICAgICAgICBtX2Z1bmN0aW9u
LnByb2dyZXNzKHRhcmdldEVsZW1lbnQsIHBlcmNlbnRhZ2UsIHJlcGVhdENvdW50LCBtX2FuaW1h
dGVkLT5hbmltVmFsKCkpOworICAgIH0KK307CisKIGNsYXNzIFNWR0FuaW1hdGVkTnVtYmVyQW5p
bWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9yPFNWR0FuaW1h
dGVkTnVtYmVyLCBTVkdBbmltYXRpb25OdW1iZXJGdW5jdGlvbj4gewogICAgIGZyaWVuZCBjbGFz
cyBTVkdBbmltYXRlZFByb3BlcnR5UGFpckFuaW1hdG9yPFNWR0FuaW1hdGVkTnVtYmVyQW5pbWF0
b3IsIFNWR0FuaW1hdGVkTnVtYmVyQW5pbWF0b3I+OwogICAgIGZyaWVuZCBjbGFzcyBTVkdBbmlt
YXRlZE51bWJlclBhaXJBbmltYXRvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9w
cm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
cHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5SW1wbC5oCmluZGV4IDk2MTIwZmQ2NDdkYzIz
MjJmMGYxZThjYzE2YzMyNDc5OTM5YWQ2ZGEuLmZlMmJlMWEzNjhiODAwNDhkYmNlNDY0MTE5ZWU5
MzhkNTcwNTIxMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NW
R0FuaW1hdGVkUHJvcGVydHlJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRp
ZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eUltcGwuaApAQCAtMjcsMTMgKzI3LDEzIEBACiAKICNpbmNs
dWRlICJTVkdBbmdsZS5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkRGVjb3JhdGVkUHJvcGVydHku
aCIKLSNpbmNsdWRlICJTVkdBbmltYXRlZExlbmd0aC5oIgotI2luY2x1ZGUgIlNWR0FuaW1hdGVk
TGVuZ3RoTGlzdC5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkUHJpbWl0aXZlUHJvcGVydHkuaCIK
ICNpbmNsdWRlICJTVkdBbmltYXRlZFByb3BlcnR5TGlzdC5oIgogI2luY2x1ZGUgIlNWR0FuaW1h
dGVkVHJhbnNmb3JtTGlzdC5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkVmFsdWVQcm9wZXJ0eS5o
IgogI2luY2x1ZGUgIlNWR0RlY29yYXRlZEVudW1lcmF0aW9uLmgiCisjaW5jbHVkZSAiU1ZHTGVu
Z3RoLmgiCisjaW5jbHVkZSAiU1ZHTGVuZ3RoTGlzdC5oIgogI2luY2x1ZGUgIlNWR01hcmtlclR5
cGVzLmgiCiAjaW5jbHVkZSAiU1ZHTnVtYmVyTGlzdC5oIgogI2luY2x1ZGUgIlNWR1BvaW50TGlz
dC5oIgpAQCAtNTAsOSArNTAsMTEgQEAgdXNpbmcgU1ZHQW5pbWF0ZWRTdHJpbmcgPSBTVkdBbmlt
YXRlZFByaW1pdGl2ZVByb3BlcnR5PFN0cmluZz47CiB1c2luZyBTVkdBbmltYXRlZEVudW1lcmF0
aW9uID0gU1ZHQW5pbWF0ZWREZWNvcmF0ZWRQcm9wZXJ0eTxTVkdEZWNvcmF0ZWRFbnVtZXJhdGlv
biwgdW5zaWduZWQ+OwogCiB1c2luZyBTVkdBbmltYXRlZEFuZ2xlID0gU1ZHQW5pbWF0ZWRWYWx1
ZVByb3BlcnR5PFNWR0FuZ2xlPjsKK3VzaW5nIFNWR0FuaW1hdGVkTGVuZ3RoID0gU1ZHQW5pbWF0
ZWRWYWx1ZVByb3BlcnR5PFNWR0xlbmd0aD47CiB1c2luZyBTVkdBbmltYXRlZFJlY3QgPSBTVkdB
bmltYXRlZFZhbHVlUHJvcGVydHk8U1ZHUmVjdD47CiB1c2luZyBTVkdBbmltYXRlZFByZXNlcnZl
QXNwZWN0UmF0aW8gPSBTVkdBbmltYXRlZFZhbHVlUHJvcGVydHk8U1ZHUHJlc2VydmVBc3BlY3RS
YXRpbz47CiAKK3VzaW5nIFNWR0FuaW1hdGVkTGVuZ3RoTGlzdCA9IFNWR0FuaW1hdGVkUHJvcGVy
dHlMaXN0PFNWR0xlbmd0aExpc3Q+OwogdXNpbmcgU1ZHQW5pbWF0ZWROdW1iZXJMaXN0ID0gU1ZH
QW5pbWF0ZWRQcm9wZXJ0eUxpc3Q8U1ZHTnVtYmVyTGlzdD47CiB1c2luZyBTVkdBbmltYXRlZFBv
aW50TGlzdCA9IFNWR0FuaW1hdGVkUHJvcGVydHlMaXN0PFNWR1BvaW50TGlzdD47CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGlvbkFkZGl0aXZl
TGlzdEZ1bmN0aW9uSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5p
bWF0aW9uQWRkaXRpdmVMaXN0RnVuY3Rpb25JbXBsLmgKaW5kZXggNDhmZmE4N2ViOWRjNjcxNDhk
OGE5YTE2NTBhOTczMDYyM2U1YjY2NS4uOGZkOTU0MzQwM2FkNzMwNWI0ZTVlYzZiMDkwMjhiOWQ1
YWFiZjZjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5p
bWF0aW9uQWRkaXRpdmVMaXN0RnVuY3Rpb25JbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uQWRkaXRpdmVMaXN0RnVuY3Rpb25JbXBsLmgKQEAgLTI2
LDEyICsyNiw3NiBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJTVkdBbmltYXRpb25BZGRp
dGl2ZUxpc3RGdW5jdGlvbi5oIgorI2luY2x1ZGUgIlNWR0xlbmd0aExpc3QuaCIKICNpbmNsdWRl
ICJTVkdQb2ludExpc3QuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTVkdFbGVt
ZW50OwogCitjbGFzcyBTVkdBbmltYXRpb25MZW5ndGhMaXN0RnVuY3Rpb24gOiBwdWJsaWMgU1ZH
QW5pbWF0aW9uQWRkaXRpdmVMaXN0RnVuY3Rpb248U1ZHTGVuZ3RoTGlzdD4geworICAgIHVzaW5n
IEJhc2UgPSBTVkdBbmltYXRpb25BZGRpdGl2ZUxpc3RGdW5jdGlvbjxTVkdMZW5ndGhMaXN0PjsK
KworcHVibGljOgorICAgIFNWR0FuaW1hdGlvbkxlbmd0aExpc3RGdW5jdGlvbihBbmltYXRpb25N
b2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQs
IGJvb2wgaXNBZGRpdGl2ZSwgU1ZHTGVuZ3RoTW9kZSBsZW5ndGhNb2RlKQorICAgICAgICA6IEJh
c2UoYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUsIGxl
bmd0aE1vZGUpCisgICAgeworICAgIH0KKworICAgIHZvaWQgc2V0RnJvbUFuZFRvVmFsdWVzKFNW
R0VsZW1lbnQqLCBjb25zdCBTdHJpbmcmIGZyb20sIGNvbnN0IFN0cmluZyYgdG8pIG92ZXJyaWRl
CisgICAgeworICAgICAgICBtX2Zyb20tPnBhcnNlKGZyb20pOworICAgICAgICBtX3RvLT5wYXJz
ZSh0byk7CisgICAgfQorCisgICAgdm9pZCBzZXRUb0F0RW5kT2ZEdXJhdGlvblZhbHVlKGNvbnN0
IFN0cmluZyYgdG9BdEVuZE9mRHVyYXRpb24pIG92ZXJyaWRlCisgICAgeworICAgICAgICBtX3Rv
QXRFbmRPZkR1cmF0aW9uLT5wYXJzZSh0b0F0RW5kT2ZEdXJhdGlvbik7CisgICAgfQorCisgICAg
dm9pZCBwcm9ncmVzcyhTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50LCBmbG9hdCBwZXJjZW50YWdl
LCB1bnNpZ25lZCByZXBlYXRDb3VudCwgUmVmUHRyPFNWR0xlbmd0aExpc3Q+JiBhbmltYXRlZCkK
KyAgICB7CisgICAgICAgIGlmICghYWRqdXN0QW5pbWF0ZWRMaXN0KG1fYW5pbWF0aW9uTW9kZSwg
cGVyY2VudGFnZSwgYW5pbWF0ZWQpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGNv
bnN0IFZlY3RvcjxSZWY8U1ZHTGVuZ3RoPj4mIGZyb21JdGVtcyA9IG1fYW5pbWF0aW9uTW9kZSA9
PSBBbmltYXRpb25Nb2RlOjpUbyA/IGFuaW1hdGVkLT5pdGVtcygpIDogbV9mcm9tLT5pdGVtcygp
OworICAgICAgICBjb25zdCBWZWN0b3I8UmVmPFNWR0xlbmd0aD4+JiB0b0l0ZW1zID0gbV90by0+
aXRlbXMoKTsKKyAgICAgICAgY29uc3QgVmVjdG9yPFJlZjxTVkdMZW5ndGg+PiYgdG9BdEVuZE9m
RHVyYXRpb25JdGVtcyA9IHRvQXRFbmRPZkR1cmF0aW9uKCktPml0ZW1zKCk7CisgICAgICAgIFZl
Y3RvcjxSZWY8U1ZHTGVuZ3RoPj4mIGFuaW1hdGVkSXRlbXMgPSBhbmltYXRlZC0+aXRlbXMoKTsK
KyAgICAgICAgU1ZHTGVuZ3RoTW9kZSBsZW5ndGhNb2RlID0gYW5pbWF0ZWQtPmxlbmd0aE1vZGUo
KTsKKworICAgICAgICBTVkdMZW5ndGhDb250ZXh0IGxlbmd0aENvbnRleHQodGFyZ2V0RWxlbWVu
dCk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0b0l0ZW1zLnNpemUoKTsgKytp
KSB7CisgICAgICAgICAgICBTVkdMZW5ndGhUeXBlIHVuaXRUeXBlID0gKGkgPCBmcm9tSXRlbXMu
c2l6ZSgpICYmIHBlcmNlbnRhZ2UgPCAwLjUgPyBmcm9tSXRlbXMgOiB0b0l0ZW1zKVtpXS0+dmFs
dWUoKS51bml0VHlwZSgpOworCisgICAgICAgICAgICBmbG9hdCBmcm9tID0gaSA8IGZyb21JdGVt
cy5zaXplKCkgPyBmcm9tSXRlbXNbaV0tPnZhbHVlKCkudmFsdWUobGVuZ3RoQ29udGV4dCkgOiAw
OworICAgICAgICAgICAgZmxvYXQgdG8gPSB0b0l0ZW1zW2ldLT52YWx1ZSgpLnZhbHVlKGxlbmd0
aENvbnRleHQpOworICAgICAgICAgICAgZmxvYXQgdG9BdEVuZE9mRHVyYXRpb24gPSBpIDwgdG9B
dEVuZE9mRHVyYXRpb25JdGVtcy5zaXplKCkgPyB0b0F0RW5kT2ZEdXJhdGlvbkl0ZW1zW2ldLT52
YWx1ZSgpLnZhbHVlKGxlbmd0aENvbnRleHQpIDogMDsKKyAgICAgICAgICAgIGZsb2F0IHZhbHVl
ID0gYW5pbWF0ZWRJdGVtc1tpXS0+dmFsdWUoKS52YWx1ZShsZW5ndGhDb250ZXh0KTsKKworICAg
ICAgICAgICAgdmFsdWUgPSBCYXNlOjpwcm9ncmVzcyhwZXJjZW50YWdlLCByZXBlYXRDb3VudCwg
ZnJvbSwgdG8sIHRvQXRFbmRPZkR1cmF0aW9uLCB2YWx1ZSk7CisgICAgICAgICAgICBhbmltYXRl
ZEl0ZW1zW2ldLT52YWx1ZSgpLnNldFZhbHVlKGxlbmd0aENvbnRleHQsIHZhbHVlLCBsZW5ndGhN
b2RlLCB1bml0VHlwZSk7CisgICAgICAgIH0KKyAgICB9CisKK3ByaXZhdGU6CisgICAgdm9pZCBh
ZGRGcm9tQW5kVG9WYWx1ZXMoU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCkgb3ZlcnJpZGUKKyAg
ICB7CisgICAgICAgIGNvbnN0IFZlY3RvcjxSZWY8U1ZHTGVuZ3RoPj4mIGZyb21JdGVtcyA9IG1f
ZnJvbS0+aXRlbXMoKTsKKyAgICAgICAgY29uc3QgVmVjdG9yPFJlZjxTVkdMZW5ndGg+PiYgdG9J
dGVtcyA9IG1fdG8tPml0ZW1zKCk7CisKKyAgICAgICAgaWYgKCFmcm9tSXRlbXMuc2l6ZSgpIHx8
IGZyb21JdGVtcy5zaXplKCkgIT0gdG9JdGVtcy5zaXplKCkpCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgU1ZHTGVuZ3RoQ29udGV4dCBsZW5ndGhDb250ZXh0KHRhcmdldEVsZW1lbnQp
OworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZnJvbUl0ZW1zLnNpemUoKTsgKytp
KSB7CisgICAgICAgICAgICBjb25zdCBTVkdMZW5ndGhWYWx1ZSYgZnJvbVZhbHVlID0gZnJvbUl0
ZW1zW2ldLT52YWx1ZSgpOworICAgICAgICAgICAgU1ZHTGVuZ3RoVmFsdWUmIHRvVmFsdWUgPSB0
b0l0ZW1zW2ldLT52YWx1ZSgpOworICAgICAgICAgICAgdG9WYWx1ZS5zZXRWYWx1ZSh0b1ZhbHVl
LnZhbHVlKGxlbmd0aENvbnRleHQpICsgZnJvbVZhbHVlLnZhbHVlKGxlbmd0aENvbnRleHQpLCBs
ZW5ndGhDb250ZXh0KTsKKyAgICAgICAgfQorICAgIH0KK307CisKIGNsYXNzIFNWR0FuaW1hdGlv
bk51bWJlckxpc3RGdW5jdGlvbiA6IHB1YmxpYyBTVkdBbmltYXRpb25BZGRpdGl2ZUxpc3RGdW5j
dGlvbjxTVkdOdW1iZXJMaXN0PiB7CiBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IFNWR0FuaW1h
dGlvbkFkZGl0aXZlTGlzdEZ1bmN0aW9uPFNWR051bWJlckxpc3Q+OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uQWRkaXRpdmVWYWx1ZUZ1bmN0
aW9uSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uQWRk
aXRpdmVWYWx1ZUZ1bmN0aW9uSW1wbC5oCmluZGV4IDUxZGU5MmRjNmE0N2VjOGY3NTRhMTU2YTE2
ODRkNDIyZDA2N2YxMDIuLjZkYzVmNmQwYWM4ODQwMGZlZWQ1OTIyZGJmNWY1MzJiMzMyYzgwMTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGlvbkFk
ZGl0aXZlVmFsdWVGdW5jdGlvbkltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVy
dGllcy9TVkdBbmltYXRpb25BZGRpdGl2ZVZhbHVlRnVuY3Rpb25JbXBsLmgKQEAgLTE0OCw2ICsx
NDgsNTkgQEAgcHJpdmF0ZToKICAgICB9CiB9OwogCitjbGFzcyBTVkdBbmltYXRpb25MZW5ndGhG
dW5jdGlvbiA6IHB1YmxpYyBTVkdBbmltYXRpb25BZGRpdGl2ZVZhbHVlRnVuY3Rpb248U1ZHTGVu
Z3RoVmFsdWU+IHsKKyAgICB1c2luZyBCYXNlID0gU1ZHQW5pbWF0aW9uQWRkaXRpdmVWYWx1ZUZ1
bmN0aW9uPFNWR0xlbmd0aFZhbHVlPjsKKworcHVibGljOgorICAgIFNWR0FuaW1hdGlvbkxlbmd0
aEZ1bmN0aW9uKEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUs
IGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlLCBTVkdMZW5ndGhNb2RlIGxlbmd0
aE1vZGUpCisgICAgICAgIDogQmFzZShhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVs
YXRlZCwgaXNBZGRpdGl2ZSkKKyAgICAgICAgLCBtX2xlbmd0aE1vZGUobGVuZ3RoTW9kZSkKKyAg
ICB7CisgICAgfQorCisgICAgdm9pZCBzZXRGcm9tQW5kVG9WYWx1ZXMoU1ZHRWxlbWVudCosIGNv
bnN0IFN0cmluZyYgZnJvbSwgY29uc3QgU3RyaW5nJiB0bykgb3ZlcnJpZGUKKyAgICB7CisgICAg
ICAgIG1fZnJvbSA9IFNWR0xlbmd0aFZhbHVlKG1fbGVuZ3RoTW9kZSwgZnJvbSk7CisgICAgICAg
IG1fdG8gPSBTVkdMZW5ndGhWYWx1ZShtX2xlbmd0aE1vZGUsIHRvKTsKKyAgICB9CisKKyAgICB2
b2lkIHNldFRvQXRFbmRPZkR1cmF0aW9uVmFsdWUoY29uc3QgU3RyaW5nJiB0b0F0RW5kT2ZEdXJh
dGlvbikgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIG1fdG9BdEVuZE9mRHVyYXRpb24gPSBTVkdM
ZW5ndGhWYWx1ZShtX2xlbmd0aE1vZGUsIHRvQXRFbmRPZkR1cmF0aW9uKTsKKyAgICB9CisKKyAg
ICB2b2lkIHByb2dyZXNzKFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQsIGZsb2F0IHBlcmNlbnRh
Z2UsIHVuc2lnbmVkIHJlcGVhdENvdW50LCBTVkdMZW5ndGhWYWx1ZSYgYW5pbWF0ZWQpCisgICAg
eworICAgICAgICBTVkdMZW5ndGhDb250ZXh0IGxlbmd0aENvbnRleHQodGFyZ2V0RWxlbWVudCk7
CisgICAgICAgIFNWR0xlbmd0aFR5cGUgdW5pdFR5cGUgPSBwZXJjZW50YWdlIDwgMC41ID8gbV9m
cm9tLnVuaXRUeXBlKCkgOiBtX3RvLnVuaXRUeXBlKCk7CisKKyAgICAgICAgZmxvYXQgZnJvbSA9
IChtX2FuaW1hdGlvbk1vZGUgPT0gQW5pbWF0aW9uTW9kZTo6VG8gPyBhbmltYXRlZCA6IG1fZnJv
bSkudmFsdWUobGVuZ3RoQ29udGV4dCk7CisgICAgICAgIGZsb2F0IHRvID0gbV90by52YWx1ZShs
ZW5ndGhDb250ZXh0KTsKKyAgICAgICAgZmxvYXQgdG9BdEVuZE9mRHVyYXRpb24gPSB0aGlzLT50
b0F0RW5kT2ZEdXJhdGlvbigpLnZhbHVlKGxlbmd0aENvbnRleHQpOworICAgICAgICBmbG9hdCB2
YWx1ZSA9IGFuaW1hdGVkLnZhbHVlKGxlbmd0aENvbnRleHQpOworCisgICAgICAgIHZhbHVlID0g
QmFzZTo6cHJvZ3Jlc3MocGVyY2VudGFnZSwgcmVwZWF0Q291bnQsIGZyb20sIHRvLCB0b0F0RW5k
T2ZEdXJhdGlvbiwgdmFsdWUpOworICAgICAgICBhbmltYXRlZCA9IHsgbGVuZ3RoQ29udGV4dCwg
dmFsdWUsIG1fbGVuZ3RoTW9kZSwgdW5pdFR5cGUgfTsKKyAgICB9CisKKyAgICBmbG9hdCBjYWxj
dWxhdGVEaXN0YW5jZShTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50LCBjb25zdCBTdHJpbmcmIGZy
b20sIGNvbnN0IFN0cmluZyYgdG8pIGNvbnN0IG92ZXJyaWRlCisgICAgeworICAgICAgICBTVkdM
ZW5ndGhDb250ZXh0IGxlbmd0aENvbnRleHQodGFyZ2V0RWxlbWVudCk7CisgICAgICAgIGF1dG8g
ZnJvbUxlbmd0aCA9IFNWR0xlbmd0aFZhbHVlKG1fbGVuZ3RoTW9kZSwgZnJvbSk7CisgICAgICAg
IGF1dG8gdG9MZW5ndGggPSBTVkdMZW5ndGhWYWx1ZShtX2xlbmd0aE1vZGUsIHRvKTsKKyAgICAg
ICAgcmV0dXJuIGZhYnNmKHRvTGVuZ3RoLnZhbHVlKGxlbmd0aENvbnRleHQpIC0gZnJvbUxlbmd0
aC52YWx1ZShsZW5ndGhDb250ZXh0KSk7CisgICAgfQorCitwcml2YXRlOgorICAgIHZvaWQgYWRk
RnJvbUFuZFRvVmFsdWVzKFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQpIG92ZXJyaWRlCisgICAg
eworICAgICAgICBTVkdMZW5ndGhDb250ZXh0IGxlbmd0aENvbnRleHQodGFyZ2V0RWxlbWVudCk7
CisgICAgICAgIG1fdG8uc2V0VmFsdWUobV90by52YWx1ZShsZW5ndGhDb250ZXh0KSArIG1fZnJv
bS52YWx1ZShsZW5ndGhDb250ZXh0KSwgbGVuZ3RoQ29udGV4dCk7CisgICAgfQorCisgICAgU1ZH
TGVuZ3RoTW9kZSBtX2xlbmd0aE1vZGU7Cit9OworCiBjbGFzcyBTVkdBbmltYXRpb25OdW1iZXJG
dW5jdGlvbiA6IHB1YmxpYyBTVkdBbmltYXRpb25BZGRpdGl2ZVZhbHVlRnVuY3Rpb248ZmxvYXQ+
IHsKICAgICBmcmllbmQgY2xhc3MgU1ZHQW5pbWF0ZWROdW1iZXJQYWlyQW5pbWF0b3I7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZUFuaW1h
dG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZUFuaW1h
dG9yLmNwcAppbmRleCBkYzQ2YTBmYzM3MDUwY2Q5MDc3NjQyM2NmNDFkYWVmZWFkYzk0ZWMyLi4y
NTZhZmQwZDNiMTMxZmVhYmE3ZWJiMWNjYWExZTc2YzNjNGEzZjgzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1dGVBbmltYXRvci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlQW5pbWF0b3IuY3BwCkBA
IC0zMiw2ICszMiwxMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2Jvb2wgU1ZHQXR0cmli
dXRlQW5pbWF0b3I6OmlzQW5pbWF0ZWRTdHlsZVByb3BlcnR5QW5pYW10b3IoY29uc3QgU1ZHRWxl
bWVudCogdGFyZ2V0RWxlbWVudCkgY29uc3QKK3sKKyAgICByZXR1cm4gdGFyZ2V0RWxlbWVudC0+
aXNBbmltYXRlZFN0eWxlQXR0cmlidXRlKG1fYXR0cmlidXRlTmFtZSk7Cit9CisKIHZvaWQgU1ZH
QXR0cmlidXRlQW5pbWF0b3I6OmFwcGx5QW5pbWF0ZWRTdHlsZVByb3BlcnR5Q2hhbmdlKFNWR0Vs
ZW1lbnQqIGVsZW1lbnQsIENTU1Byb3BlcnR5SUQgaWQsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7
CiAgICAgQVNTRVJUKGVsZW1lbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3By
b3BlcnRpZXMvU1ZHQXR0cmlidXRlQW5pbWF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9w
ZXJ0aWVzL1NWR0F0dHJpYnV0ZUFuaW1hdG9yLmgKaW5kZXggODk0ZDVlN2I2OGUwYzhhZWZkNGVi
ZmU4MzQ1OWE1Nzg2ZDkxYTRmMy4uODI3ODI2ZTc2ZDQ1MGQwYmZkZmQzMGMyOTdmMWVkNzVjOGE2
NmVkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmli
dXRlQW5pbWF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBdHRy
aWJ1dGVBbmltYXRvci5oCkBAIC03NCw2ICs3NCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGZs
b2F0IGNhbGN1bGF0ZURpc3RhbmNlKFNWR0VsZW1lbnQqLCBjb25zdCBTdHJpbmcmLCBjb25zdCBT
dHJpbmcmKSBjb25zdCB7IHJldHVybiAtMTsgfQogCiBwcm90ZWN0ZWQ6CisgICAgYm9vbCBpc0Fu
aW1hdGVkU3R5bGVQcm9wZXJ0eUFuaWFtdG9yKGNvbnN0IFNWR0VsZW1lbnQqKSBjb25zdDsKKwog
ICAgIHN0YXRpYyB2b2lkIGFwcGx5QW5pbWF0ZWRTdHlsZVByb3BlcnR5Q2hhbmdlKFNWR0VsZW1l
bnQqLCBDU1NQcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKICAgICBzdGF0aWMgdm9p
ZCByZW1vdmVBbmltYXRlZFN0eWxlUHJvcGVydHkoU1ZHRWxlbWVudCosIENTU1Byb3BlcnR5SUQp
OwogICAgIHN0YXRpYyB2b2lkIGFwcGx5QW5pbWF0ZWRQcm9wZXJ0eUNoYW5nZShTVkdFbGVtZW50
KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlUmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9w
cm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZVJlZ2lzdHJ5LmgKaW5kZXggZTU3ZWMxNjM3ZWU3MTFlMmEy
MWJhN2E4MGMwZTg1YTQ5NDJhNTM0Mi4uMTk0ZjYzOWRmYTM1YWViNTVmZDg4NWEzNTVmZDVmMDk1
MDViMGJmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0
cmlidXRlUmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdB
dHRyaWJ1dGVSZWdpc3RyeS5oCkBAIC0yNSw4ICsyNSw2IEBACiAKICNwcmFnbWEgb25jZQogCi0j
aW5jbHVkZSAiU1ZHQW5pbWF0ZWRMZW5ndGguaCIKLSNpbmNsdWRlICJTVkdBbmltYXRlZExlbmd0
aExpc3QuaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3QuaCIKICNpbmNsdWRl
ICJTVkdBdHRyaWJ1dGVBY2Nlc3Nvci5oIgogI2luY2x1ZGUgIlNWR0xlZ2FjeUFuaW1hdGVkUHJv
cGVydHkuaCIKQEAgLTUxLDE4ICs0OSw2IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICAvLyBBbmlt
YXRhYmxlIGF0dHJpYnV0ZXMKLSAgICB0ZW1wbGF0ZTxjb25zdCBMYXp5TmV2ZXJEZXN0cm95ZWQ8
Y29uc3QgUXVhbGlmaWVkTmFtZT4mIGF0dHJpYnV0ZU5hbWUsIFNWR0FuaW1hdGVkTGVuZ3RoQXR0
cmlidXRlIE93bmVyVHlwZTo6KmF0dHJpYnV0ZT4KLSAgICB2b2lkIHJlZ2lzdGVyQXR0cmlidXRl
KCkKLSAgICB7Ci0gICAgICAgIHJlZ2lzdGVyQXR0cmlidXRlKFNWR0FuaW1hdGVkTGVuZ3RoQXR0
cmlidXRlQWNjZXNzb3I8T3duZXJUeXBlPjo6dGVtcGxhdGUgc2luZ2xldG9uPGF0dHJpYnV0ZU5h
bWUsIGF0dHJpYnV0ZT4oKSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y29uc3QgTGF6eU5ldmVy
RGVzdHJveWVkPGNvbnN0IFF1YWxpZmllZE5hbWU+JiBhdHRyaWJ1dGVOYW1lLCBTVkdBbmltYXRl
ZExlbmd0aExpc3RBdHRyaWJ1dGUgT3duZXJUeXBlOjoqYXR0cmlidXRlPgotICAgIHZvaWQgcmVn
aXN0ZXJBdHRyaWJ1dGUoKQotICAgIHsKLSAgICAgICAgcmVnaXN0ZXJBdHRyaWJ1dGUoU1ZHQW5p
bWF0ZWRMZW5ndGhMaXN0QXR0cmlidXRlQWNjZXNzb3I8T3duZXJUeXBlPjo6dGVtcGxhdGUgc2lu
Z2xldG9uPGF0dHJpYnV0ZU5hbWUsIGF0dHJpYnV0ZT4oKSk7Ci0gICAgfQotCiAgICAgdGVtcGxh
dGU8Y29uc3QgTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IFF1YWxpZmllZE5hbWU+JiBhdHRyaWJ1
dGVOYW1lLCBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RBdHRyaWJ1dGUgT3duZXJUeXBlOjoqYXR0
cmlidXRlPgogICAgIHZvaWQgcmVnaXN0ZXJBdHRyaWJ1dGUoKQogICAgIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5QW5pbWF0b3JGYWN0b3J5
LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eUFuaW1hdG9yRmFj
dG9yeS5oCmluZGV4IDUzOWQ0NmE4MDljNTVjZWFmYjc5OTQ0OTE4MjFlY2QwNzQ1ZTg5OTEuLmFk
NTBkNDIzNjI5Njk0MmQxZGM4NzE4YTJkYThlNmFkZjhkMWJjY2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5QW5pbWF0b3JGYWN0b3J5LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlBbmltYXRvckZhY3Rv
cnkuaApAQCAtMjUsOCArMjUsMTEgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJTVkdM
ZW5ndGguaCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgogI2luY2x1ZGUgIlNWR1ByaW1pdGl2ZVBy
b3BlcnR5QW5pbWF0b3JJbXBsLmgiCisjaW5jbHVkZSAiU1ZHVmFsdWVQcm9wZXJ0eUFuaW1hdG9y
SW1wbC5oIgorI2luY2x1ZGUgIlNWR1ZhbHVlUHJvcGVydHlMaXN0QW5pbWF0b3JJbXBsLmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtODAsNiArODMsMTYgQEAgcHJpdmF0ZToKICAgICAg
ICAgcmV0dXJuIFNWR0NvbG9yQW5pbWF0b3I6OmNyZWF0ZShhdHRyaWJ1dGVOYW1lLCBXVEZNb3Zl
KHByb3BlcnR5KSwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRk
aXRpdmUpOwogICAgIH0KIAorICAgIHN0YXRpYyBhdXRvIGNyZWF0ZUxlbmd0aEFuaW1hdG9yKGNv
bnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdQcm9wZXJ0eT4mJiBwcm9w
ZXJ0eSwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9v
bCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUpCisgICAgeworICAgICAgICByZXR1cm4g
U1ZHTGVuZ3RoQW5pbWF0b3I6OmNyZWF0ZShhdHRyaWJ1dGVOYW1lLCBXVEZNb3ZlKHByb3BlcnR5
KSwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOwor
ICAgIH0KKworICAgIHN0YXRpYyBhdXRvIGNyZWF0ZUxlbmd0aExpc3RBbmltYXRvcihjb25zdCBR
dWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHUHJvcGVydHk+JiYgcHJvcGVydHks
IEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJvb2wgaXNB
Y2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFNWR0xl
bmd0aExpc3RBbmltYXRvcjo6Y3JlYXRlKGF0dHJpYnV0ZU5hbWUsIFdURk1vdmUocHJvcGVydHkp
LCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7Cisg
ICAgfQorCiAgICAgc3RhdGljIGF1dG8gY3JlYXRlTnVtYmVyQW5pbWF0b3IoY29uc3QgUXVhbGlm
aWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR1Byb3BlcnR5PiYmIHByb3BlcnR5LCBBbmlt
YXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11
bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBTVkdOdW1iZXJB
bmltYXRvcjo6Y3JlYXRlKGF0dHJpYnV0ZU5hbWUsICBXVEZNb3ZlKHByb3BlcnR5KSwgYW5pbWF0
aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOwpAQCAtOTMsMTMg
KzEwNiwyMiBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBjb25zdCBBdHRyaWJ1dGVBbmltYXRvckNy
ZWF0b3ImIGF0dHJpYnV0ZUFuaW1hdG9yQ3JlYXRvcigpCiAgICAgewogICAgICAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8QXR0cmlidXRlQW5pbWF0b3JDcmVhdG9yPiBtYXAgPSBBdHRyaWJ1dGVB
bmltYXRvckNyZWF0b3IoewotICAgICAgICAgICAgeyBTVkdOYW1lczo6Y29sb3JBdHRyLT5pbXBs
KCksICAgICAgICAgIHN0ZDo6bWFrZV9wYWlyKFNWR1ZhbHVlUHJvcGVydHk8Q29sb3I+OjpjcmVh
dGUsIFNWR1Byb3BlcnR5QW5pbWF0b3JGYWN0b3J5OjpjcmVhdGVDb2xvckFuaW1hdG9yKSB9LAot
ICAgICAgICAgICAgeyBTVkdOYW1lczo6ZmlsbEF0dHItPmltcGwoKSwgICAgICAgICAgIHN0ZDo6
bWFrZV9wYWlyKFNWR1ZhbHVlUHJvcGVydHk8Q29sb3I+OjpjcmVhdGUsIFNWR1Byb3BlcnR5QW5p
bWF0b3JGYWN0b3J5OjpjcmVhdGVDb2xvckFuaW1hdG9yKSB9LAotICAgICAgICAgICAgeyBTVkdO
YW1lczo6Zmxvb2RfY29sb3JBdHRyLT5pbXBsKCksICAgIHN0ZDo6bWFrZV9wYWlyKFNWR1ZhbHVl
UHJvcGVydHk8Q29sb3I+OjpjcmVhdGUsIFNWR1Byb3BlcnR5QW5pbWF0b3JGYWN0b3J5OjpjcmVh
dGVDb2xvckFuaW1hdG9yKSB9LAotICAgICAgICAgICAgeyBTVkdOYW1lczo6bGlnaHRpbmdfY29s
b3JBdHRyLT5pbXBsKCksIHN0ZDo6bWFrZV9wYWlyKFNWR1ZhbHVlUHJvcGVydHk8Q29sb3I+Ojpj
cmVhdGUsIFNWR1Byb3BlcnR5QW5pbWF0b3JGYWN0b3J5OjpjcmVhdGVDb2xvckFuaW1hdG9yKSB9
LAotICAgICAgICAgICAgeyBTVkdOYW1lczo6c3RvcF9jb2xvckF0dHItPmltcGwoKSwgICAgIHN0
ZDo6bWFrZV9wYWlyKFNWR1ZhbHVlUHJvcGVydHk8Q29sb3I+OjpjcmVhdGUsIFNWR1Byb3BlcnR5
QW5pbWF0b3JGYWN0b3J5OjpjcmVhdGVDb2xvckFuaW1hdG9yKSB9LAotICAgICAgICAgICAgeyBT
VkdOYW1lczo6c3Ryb2tlQXR0ci0+aW1wbCgpLCAgICAgICAgIHN0ZDo6bWFrZV9wYWlyKFNWR1Zh
bHVlUHJvcGVydHk8Q29sb3I+OjpjcmVhdGUsIFNWR1Byb3BlcnR5QW5pbWF0b3JGYWN0b3J5Ojpj
cmVhdGVDb2xvckFuaW1hdG9yKSB9LAorICAgICAgICAgICAgeyBTVkdOYW1lczo6Y29sb3JBdHRy
LT5pbXBsKCksICAgICAgICAgICAgICBzdGQ6Om1ha2VfcGFpcihTVkdWYWx1ZVByb3BlcnR5PENv
bG9yPjo6Y3JlYXRlLCBTVkdQcm9wZXJ0eUFuaW1hdG9yRmFjdG9yeTo6Y3JlYXRlQ29sb3JBbmlt
YXRvcikgfSwKKyAgICAgICAgICAgIHsgU1ZHTmFtZXM6OmZpbGxBdHRyLT5pbXBsKCksICAgICAg
ICAgICAgICAgc3RkOjptYWtlX3BhaXIoU1ZHVmFsdWVQcm9wZXJ0eTxDb2xvcj46OmNyZWF0ZSwg
U1ZHUHJvcGVydHlBbmltYXRvckZhY3Rvcnk6OmNyZWF0ZUNvbG9yQW5pbWF0b3IpIH0sCisgICAg
ICAgICAgICB7IFNWR05hbWVzOjpmbG9vZF9jb2xvckF0dHItPmltcGwoKSwgICAgICAgIHN0ZDo6
bWFrZV9wYWlyKFNWR1ZhbHVlUHJvcGVydHk8Q29sb3I+OjpjcmVhdGUsIFNWR1Byb3BlcnR5QW5p
bWF0b3JGYWN0b3J5OjpjcmVhdGVDb2xvckFuaW1hdG9yKSB9LAorICAgICAgICAgICAgeyBTVkdO
YW1lczo6bGlnaHRpbmdfY29sb3JBdHRyLT5pbXBsKCksICAgICBzdGQ6Om1ha2VfcGFpcihTVkdW
YWx1ZVByb3BlcnR5PENvbG9yPjo6Y3JlYXRlLCBTVkdQcm9wZXJ0eUFuaW1hdG9yRmFjdG9yeTo6
Y3JlYXRlQ29sb3JBbmltYXRvcikgfSwKKyAgICAgICAgICAgIHsgU1ZHTmFtZXM6OnN0b3BfY29s
b3JBdHRyLT5pbXBsKCksICAgICAgICAgc3RkOjptYWtlX3BhaXIoU1ZHVmFsdWVQcm9wZXJ0eTxD
b2xvcj46OmNyZWF0ZSwgU1ZHUHJvcGVydHlBbmltYXRvckZhY3Rvcnk6OmNyZWF0ZUNvbG9yQW5p
bWF0b3IpIH0sCisgICAgICAgICAgICB7IFNWR05hbWVzOjpzdHJva2VBdHRyLT5pbXBsKCksICAg
ICAgICAgICAgIHN0ZDo6bWFrZV9wYWlyKFNWR1ZhbHVlUHJvcGVydHk8Q29sb3I+OjpjcmVhdGUs
IFNWR1Byb3BlcnR5QW5pbWF0b3JGYWN0b3J5OjpjcmVhdGVDb2xvckFuaW1hdG9yKSB9LAogCisg
ICAgICAgICAgICB7IFNWR05hbWVzOjpmb250X3NpemVBdHRyLT5pbXBsKCksICAgICAgICAgIHN0
ZDo6bWFrZV9wYWlyKFtdKCkgeyByZXR1cm4gU1ZHTGVuZ3RoOjpjcmVhdGUoKTsgfSwgU1ZHUHJv
cGVydHlBbmltYXRvckZhY3Rvcnk6OmNyZWF0ZUxlbmd0aEFuaW1hdG9yKSB9LAorICAgICAgICAg
ICAgeyBTVkdOYW1lczo6a2VybmluZ0F0dHItPmltcGwoKSwgICAgICAgICAgICBzdGQ6Om1ha2Vf
cGFpcihbXSgpIHsgcmV0dXJuIFNWR0xlbmd0aDo6Y3JlYXRlKCk7IH0sIFNWR1Byb3BlcnR5QW5p
bWF0b3JGYWN0b3J5OjpjcmVhdGVMZW5ndGhBbmltYXRvcikgfSwKKyAgICAgICAgICAgIHsgU1ZH
TmFtZXM6OmxldHRlcl9zcGFjaW5nQXR0ci0+aW1wbCgpLCAgICAgc3RkOjptYWtlX3BhaXIoW10o
KSB7IHJldHVybiBTVkdMZW5ndGg6OmNyZWF0ZSgpOyB9LCBTVkdQcm9wZXJ0eUFuaW1hdG9yRmFj
dG9yeTo6Y3JlYXRlTGVuZ3RoQW5pbWF0b3IpIH0sCisgICAgICAgICAgICB7IFNWR05hbWVzOjpz
dHJva2VfZGFzaG9mZnNldEF0dHItPmltcGwoKSwgIHN0ZDo6bWFrZV9wYWlyKFtdKCkgeyByZXR1
cm4gU1ZHTGVuZ3RoOjpjcmVhdGUoKTsgfSwgU1ZHUHJvcGVydHlBbmltYXRvckZhY3Rvcnk6OmNy
ZWF0ZUxlbmd0aEFuaW1hdG9yKSB9LAorICAgICAgICAgICAgeyBTVkdOYW1lczo6c3Ryb2tlX3dp
ZHRoQXR0ci0+aW1wbCgpLCAgICAgICBzdGQ6Om1ha2VfcGFpcihbXSgpIHsgcmV0dXJuIFNWR0xl
bmd0aDo6Y3JlYXRlKCk7IH0sIFNWR1Byb3BlcnR5QW5pbWF0b3JGYWN0b3J5OjpjcmVhdGVMZW5n
dGhBbmltYXRvcikgfSwKKyAgICAgICAgICAgIHsgU1ZHTmFtZXM6OndvcmRfc3BhY2luZ0F0dHIt
PmltcGwoKSwgICAgICAgc3RkOjptYWtlX3BhaXIoW10oKSB7IHJldHVybiBTVkdMZW5ndGg6OmNy
ZWF0ZSgpOyB9LCBTVkdQcm9wZXJ0eUFuaW1hdG9yRmFjdG9yeTo6Y3JlYXRlTGVuZ3RoQW5pbWF0
b3IpIH0sCisKKyAgICAgICAgICAgIHsgU1ZHTmFtZXM6OnN0cm9rZV9kYXNoYXJyYXlBdHRyLT5p
bXBsKCksICAgc3RkOjptYWtlX3BhaXIoW10oKSB7IHJldHVybiBTVkdMZW5ndGhMaXN0OjpjcmVh
dGUoKTsgfSwgU1ZHUHJvcGVydHlBbmltYXRvckZhY3Rvcnk6OmNyZWF0ZUxlbmd0aExpc3RBbmlt
YXRvcikgfSwKKyAgICAgICAgICAgIAogICAgICAgICAgICAgeyBTVkdOYW1lczo6ZmlsbF9vcGFj
aXR5QXR0ci0+aW1wbCgpLCAgICAgICBzdGQ6Om1ha2VfcGFpcihTVkdWYWx1ZVByb3BlcnR5PGZs
b2F0Pjo6Y3JlYXRlLCBTVkdQcm9wZXJ0eUFuaW1hdG9yRmFjdG9yeTo6Y3JlYXRlTnVtYmVyQW5p
bWF0b3IpIH0sCiAgICAgICAgICAgICB7IFNWR05hbWVzOjpmbG9vZF9vcGFjaXR5QXR0ci0+aW1w
bCgpLCAgICAgIHN0ZDo6bWFrZV9wYWlyKFNWR1ZhbHVlUHJvcGVydHk8ZmxvYXQ+OjpjcmVhdGUs
IFNWR1Byb3BlcnR5QW5pbWF0b3JGYWN0b3J5OjpjcmVhdGVOdW1iZXJBbmltYXRvcikgfSwKICAg
ICAgICAgICAgIHsgU1ZHTmFtZXM6Om9wYWNpdHlBdHRyLT5pbXBsKCksICAgICAgICAgICAgc3Rk
OjptYWtlX3BhaXIoU1ZHVmFsdWVQcm9wZXJ0eTxmbG9hdD46OmNyZWF0ZSwgU1ZHUHJvcGVydHlB
bmltYXRvckZhY3Rvcnk6OmNyZWF0ZU51bWJlckFuaW1hdG9yKSB9LApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5LmggYi9T
b3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnkuaApp
bmRleCA1N2Y3OTg1MzI1ZDk5MGUzYjk5YmRmNmU5ZmJlNjAyYzFlOThmYzAzLi5kMWI5M2EyZTll
NTc0YmIxNzIxMjc5NjM3ZjU5MTQ0Yjk2ODcxNzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnkuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnkuaApAQCAtNjYs
NiArNjYsMTggQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmVnaXN0ZXJQcm9wZXJ0eShhdHRy
aWJ1dGVOYW1lLCBTVkdBbmltYXRlZEludGVnZXJBY2Nlc3NvcjxPd25lclR5cGU+Ojp0ZW1wbGF0
ZSBzaW5nbGV0b248cHJvcGVydHk+KCkpOwogICAgIH0KKyAgICAKKyAgICB0ZW1wbGF0ZTxjb25z
dCBMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgUXVhbGlmaWVkTmFtZT4mIGF0dHJpYnV0ZU5hbWUs
IFJlZjxTVkdBbmltYXRlZExlbmd0aD4gT3duZXJUeXBlOjoqcHJvcGVydHk+CisgICAgc3RhdGlj
IHZvaWQgcmVnaXN0ZXJQcm9wZXJ0eSgpCisgICAgeworICAgICAgICByZWdpc3RlclByb3BlcnR5
KGF0dHJpYnV0ZU5hbWUsIFNWR0FuaW1hdGVkTGVuZ3RoQWNjZXNzb3I8T3duZXJUeXBlPjo6dGVt
cGxhdGUgc2luZ2xldG9uPHByb3BlcnR5PigpKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxjb25z
dCBMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgUXVhbGlmaWVkTmFtZT4mIGF0dHJpYnV0ZU5hbWUs
IFJlZjxTVkdBbmltYXRlZExlbmd0aExpc3Q+IE93bmVyVHlwZTo6KnByb3BlcnR5PgorICAgIHN0
YXRpYyB2b2lkIHJlZ2lzdGVyUHJvcGVydHkoKQorICAgIHsKKyAgICAgICAgcmVnaXN0ZXJQcm9w
ZXJ0eShhdHRyaWJ1dGVOYW1lLCBTVkdBbmltYXRlZExlbmd0aExpc3RBY2Nlc3NvcjxPd25lclR5
cGU+Ojp0ZW1wbGF0ZSBzaW5nbGV0b248cHJvcGVydHk+KCkpOworICAgIH0KIAogICAgIHRlbXBs
YXRlPGNvbnN0IExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBRdWFsaWZpZWROYW1lPiYgYXR0cmli
dXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVkTnVtYmVyPiBPd25lclR5cGU6Oipwcm9wZXJ0eT4KICAg
ICBzdGF0aWMgdm9pZCByZWdpc3RlclByb3BlcnR5KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1ZhbHVlUHJvcGVydHlBbmltYXRvci5oIGIvU291cmNlL1dl
YkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHVmFsdWVQcm9wZXJ0eUFuaW1hdG9yLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNTM3OThkMWFjNGRkNWQ0YWFlMjk4ZWE0YmVlM2Y3NGIxYmY4NDBmNwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1ZhbHVlUHJvcGVydHlBbmlt
YXRvci5oCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBB
cHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIlNWR1Byb3BlcnR5
QW5pbWF0b3IuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBQ
cm9wZXJ0eVR5cGUsIHR5cGVuYW1lIEFuaW1hdGlvbkZ1bmN0aW9uPgorY2xhc3MgU1ZHVmFsdWVQ
cm9wZXJ0eUFuaW1hdG9yIDogcHVibGljIFNWR1Byb3BlcnR5QW5pbWF0b3I8QW5pbWF0aW9uRnVu
Y3Rpb24+IHsKKyAgICB1c2luZyBCYXNlID0gU1ZHUHJvcGVydHlBbmltYXRvcjxBbmltYXRpb25G
dW5jdGlvbj47CisgICAgdXNpbmcgQmFzZTo6QmFzZTsKKyAgICB1c2luZyBCYXNlOjphcHBseUFu
aW1hdGVkU3R5bGVQcm9wZXJ0eUNoYW5nZTsKKyAgICB1c2luZyBCYXNlOjptX2Z1bmN0aW9uOwor
CitwdWJsaWM6CisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRzPgorICAgIFNWR1Zh
bHVlUHJvcGVydHlBbmltYXRvcihjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBS
ZWY8U1ZHUHJvcGVydHk+JiYgcHJvcGVydHksIEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50cykKKyAg
ICAgICAgOiBCYXNlKGF0dHJpYnV0ZU5hbWUsIHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+KGFyZ3Vt
ZW50cykuLi4pCisgICAgICAgICwgbV9wcm9wZXJ0eShzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8UHJv
cGVydHlUeXBlPihXVEZNb3ZlKHByb3BlcnR5KSkpCisgICAgeworICAgIH0KKworICAgIHZvaWQg
cHJvZ3Jlc3MoU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCwgZmxvYXQgcGVyY2VudGFnZSwgdW5z
aWduZWQgcmVwZWF0Q291bnQpIG92ZXJyaWRlCisgICAgeworICAgICAgICBtX2Z1bmN0aW9uLnBy
b2dyZXNzKHRhcmdldEVsZW1lbnQsIHBlcmNlbnRhZ2UsIHJlcGVhdENvdW50LCBtX3Byb3BlcnR5
LT52YWx1ZSgpKTsKKyAgICB9CisKKyAgICB2b2lkIGFwcGx5KFNWR0VsZW1lbnQqIHRhcmdldEVs
ZW1lbnQpIG92ZXJyaWRlCisgICAgeworICAgICAgICBhcHBseUFuaW1hdGVkU3R5bGVQcm9wZXJ0
eUNoYW5nZSh0YXJnZXRFbGVtZW50LCBtX3Byb3BlcnR5LT52YWx1ZUFzU3RyaW5nKCkpOworICAg
IH0KKworcHJvdGVjdGVkOgorICAgIHVzaW5nIEJhc2U6OmNvbXB1dGVDU1NQcm9wZXJ0eVZhbHVl
OworICAgIHVzaW5nIEJhc2U6Om1fYXR0cmlidXRlTmFtZTsKKworICAgIFJlZjxQcm9wZXJ0eVR5
cGU+IG1fcHJvcGVydHk7Cit9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
cHJvcGVydGllcy9TVkdWYWx1ZVByb3BlcnR5QW5pbWF0b3JJbXBsLmggYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvcHJvcGVydGllcy9TVkdWYWx1ZVByb3BlcnR5QW5pbWF0b3JJbXBsLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMTE4ODg2YzRmOGJiNzIzNmE0NDZmZmFkMDM4NjlmZjBiMGRjZGU5NQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1ZhbHVlUHJvcGVydHlBbmlt
YXRvckltcGwuaApAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIw
MTkgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJTVkdBbmlt
YXRpb25GdW5jdGlvbi5oIgorI2luY2x1ZGUgIlNWR1ZhbHVlUHJvcGVydHlBbmltYXRvci5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNWR0xlbmd0aEFuaW1hdG9yIGZpbmFsIDog
cHVibGljIFNWR1ZhbHVlUHJvcGVydHlBbmltYXRvcjxTVkdMZW5ndGgsIFNWR0FuaW1hdGlvbkxl
bmd0aEZ1bmN0aW9uPiB7CisgICAgdXNpbmcgQmFzZSA9IFNWR1ZhbHVlUHJvcGVydHlBbmltYXRv
cjxTVkdMZW5ndGgsIFNWR0FuaW1hdGlvbkxlbmd0aEZ1bmN0aW9uPjsKKyAgICB1c2luZyBCYXNl
OjpCYXNlOworICAgIHVzaW5nIEJhc2U6Om1fYXR0cmlidXRlTmFtZTsKKyAgICB1c2luZyBCYXNl
OjptX3Byb3BlcnR5OworCitwdWJsaWM6CisgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdQcm9wZXJ0eT4mJiBwcm9wZXJ0eSwg
QW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0Fj
Y3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUpCisgICAgeworICAgICAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxTVkdMZW5ndGhBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgV1RGTW92ZShwcm9w
ZXJ0eSksIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZl
LCBMZW5ndGhNb2RlT3RoZXIpOworICAgIH0KKworICAgIHZvaWQgc3RhcnQoU1ZHRWxlbWVudCog
dGFyZ2V0RWxlbWVudCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIFN0cmluZyBiYXNlVmFsdWUg
PSBjb21wdXRlQ1NTUHJvcGVydHlWYWx1ZSh0YXJnZXRFbGVtZW50LCBjc3NQcm9wZXJ0eUlEKG1f
YXR0cmlidXRlTmFtZS5sb2NhbE5hbWUoKSkpOworICAgICAgICBTVkdMZW5ndGhWYWx1ZSB2YWx1
ZShMZW5ndGhNb2RlT3RoZXIpOworICAgICAgICBpZiAoIXZhbHVlLnNldFZhbHVlQXNTdHJpbmco
YmFzZVZhbHVlKS5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgICAgIG1fcHJvcGVydHktPnNldFZh
bHVlKHZhbHVlKTsKKyAgICB9Cit9OworCit9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9wcm9wZXJ0aWVzL1NWR1ZhbHVlUHJvcGVydHlMaXN0QW5pbWF0b3IuaCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1ZhbHVlUHJvcGVydHlMaXN0QW5pbWF0b3IuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5mMjc0ZjE4NmViYmZkYjIwZGEwZjY4NjI0ZGJjMzRiNGU1OTllMTg5Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHVmFsdWVQcm9wZXJ0
eUxpc3RBbmltYXRvci5oCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTgtMjAxOSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIlNW
R1Byb3BlcnR5QW5pbWF0b3IuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit0ZW1wbGF0ZTx0
eXBlbmFtZSBMaXN0VHlwZSwgdHlwZW5hbWUgQW5pbWF0aW9uRnVuY3Rpb24+CitjbGFzcyBTVkdW
YWx1ZVByb3BlcnR5TGlzdEFuaW1hdG9yIDogcHVibGljIFNWR1Byb3BlcnR5QW5pbWF0b3I8QW5p
bWF0aW9uRnVuY3Rpb24+IHsKKyAgICB1c2luZyBCYXNlID0gU1ZHUHJvcGVydHlBbmltYXRvcjxB
bmltYXRpb25GdW5jdGlvbj47CisgICAgdXNpbmcgQmFzZTo6QmFzZTsKKyAgICB1c2luZyBCYXNl
OjphcHBseUFuaW1hdGVkU3R5bGVQcm9wZXJ0eUNoYW5nZTsKKyAgICB1c2luZyBCYXNlOjptX2Z1
bmN0aW9uOworCitwdWJsaWM6CisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRzPgor
ICAgIFNWR1ZhbHVlUHJvcGVydHlMaXN0QW5pbWF0b3IoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0
cmlidXRlTmFtZSwgUmVmPFNWR1Byb3BlcnR5PiYmIHByb3BlcnR5LCBBcmd1bWVudHMmJi4uLiBh
cmd1bWVudHMpCisgICAgICAgIDogQmFzZShhdHRyaWJ1dGVOYW1lLCBzdGQ6OmZvcndhcmQ8QXJn
dW1lbnRzPihhcmd1bWVudHMpLi4uKQorICAgICAgICAsIG1fbGlzdChzdGF0aWNfcmVmZXJlbmNl
X2Nhc3Q8TGlzdFR5cGU+KFdURk1vdmUocHJvcGVydHkpKSkKKyAgICB7CisgICAgfQorCisgICAg
dm9pZCBwcm9ncmVzcyhTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50LCBmbG9hdCBwZXJjZW50YWdl
LCB1bnNpZ25lZCByZXBlYXRDb3VudCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIG1fZnVuY3Rp
b24ucHJvZ3Jlc3ModGFyZ2V0RWxlbWVudCwgcGVyY2VudGFnZSwgcmVwZWF0Q291bnQsIG1fbGlz
dCk7CisgICAgfQorCisgICAgdm9pZCBhcHBseShTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50KSBv
dmVycmlkZQorICAgIHsKKyAgICAgICAgYXBwbHlBbmltYXRlZFN0eWxlUHJvcGVydHlDaGFuZ2Uo
dGFyZ2V0RWxlbWVudCwgbV9saXN0LT52YWx1ZUFzU3RyaW5nKCkpOworICAgIH0KKworcHJvdGVj
dGVkOgorICAgIHVzaW5nIEJhc2U6OmNvbXB1dGVDU1NQcm9wZXJ0eVZhbHVlOworICAgIHVzaW5n
IEJhc2U6Om1fYXR0cmlidXRlTmFtZTsKKworICAgIFJlZlB0cjxMaXN0VHlwZT4gbV9saXN0Owor
fTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHVmFs
dWVQcm9wZXJ0eUxpc3RBbmltYXRvckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0
aWVzL1NWR1ZhbHVlUHJvcGVydHlMaXN0QW5pbWF0b3JJbXBsLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWVlOGFj
M2QwZjRlMTJjNjJhNWVmYzAwZmY1M2I1OTBlNDAwZjM2OAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1ZhbHVlUHJvcGVydHlMaXN0QW5pbWF0b3JJ
bXBsLmgKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFw
cGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiU1ZHQW5pbWF0aW9u
RnVuY3Rpb24uaCIKKyNpbmNsdWRlICJTVkdWYWx1ZVByb3BlcnR5TGlzdEFuaW1hdG9yLmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU1ZHTGVuZ3RoTGlzdEFuaW1hdG9yIGZpbmFs
IDogcHVibGljIFNWR1ZhbHVlUHJvcGVydHlMaXN0QW5pbWF0b3I8U1ZHTGVuZ3RoTGlzdCwgU1ZH
QW5pbWF0aW9uTGVuZ3RoTGlzdEZ1bmN0aW9uPiB7CisgICAgdXNpbmcgQmFzZSA9IFNWR1ZhbHVl
UHJvcGVydHlMaXN0QW5pbWF0b3I8U1ZHTGVuZ3RoTGlzdCwgU1ZHQW5pbWF0aW9uTGVuZ3RoTGlz
dEZ1bmN0aW9uPjsKKyAgICB1c2luZyBCYXNlOjpCYXNlOworICAgIHVzaW5nIEJhc2U6Om1fYXR0
cmlidXRlTmFtZTsKKyAgICB1c2luZyBCYXNlOjptX2xpc3Q7CisKK3B1YmxpYzoKKyAgICBzdGF0
aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNW
R1Byb3BlcnR5PiYmIHByb3BlcnR5LCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNN
b2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKKyAgICB7
CisgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR0xlbmd0aExpc3RBbmltYXRvcj4o
YXR0cmlidXRlTmFtZSwgV1RGTW92ZShwcm9wZXJ0eSksIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2Rl
LCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlLCBMZW5ndGhNb2RlT3RoZXIpOworICAgIH0KKwor
ICAgIHZvaWQgc3RhcnQoU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCkgb3ZlcnJpZGUKKyAgICB7
CisgICAgICAgIFN0cmluZyBiYXNlVmFsdWUgPSBjb21wdXRlQ1NTUHJvcGVydHlWYWx1ZSh0YXJn
ZXRFbGVtZW50LCBjc3NQcm9wZXJ0eUlEKG1fYXR0cmlidXRlTmFtZS5sb2NhbE5hbWUoKSkpOwor
ICAgICAgICBpZiAoIW1fbGlzdC0+cGFyc2UoYmFzZVZhbHVlKSkKKyAgICAgICAgICAgIG1fbGlz
dC0+Y2xlYXJJdGVtcygpOworICAgIH0KK307CisKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBjNTNkZGY3NzZiYTA3Y2Yx
MjAyMTNhMjMxNTk0ZWVjM2VkOTgxYTAyLi41MTZmOWVkM2Y1YWIxZTIyYmE4OWE5ZGI1MjA0ZDRj
MzkyZWFjZGU4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTktMDMtMjYgIFNhaWQgQWJvdS1I
YWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIHRoZSBTVkcgdGVhciBv
ZmYgb2JqZWN0cyBmb3IgU1ZHTGVuZ3RoLCBTVkdMZW5ndGhMaXN0IGFuZCBTVkdBbmltYXRlZExl
bmd0aExpc3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE5NjA4MworCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAgICAq
IHBsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIHN2Zy9hbmltYXRpb25z
L3N2Z2xlbmd0aC1lbGVtZW50LXJlbW92ZWQtY3Jhc2guc3ZnOgorICAgICAgICAqIHN2Zy9kb20v
U1ZHTGVuZ3RoTGlzdC1hcHBlbmRJdGVtLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzdmcvZG9t
L1NWR0xlbmd0aExpc3QtYXBwZW5kSXRlbS54aHRtbDoKKyAgICAgICAgKiBzdmcvZG9tL1NWR0xl
bmd0aExpc3QtYmFzaWNzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzdmcvZG9tL1NWR0xlbmd0
aExpc3QtYmFzaWNzLnhodG1sOgorICAgICAgICAqIHN2Zy9kb20vU1ZHTGVuZ3RoTGlzdC1pbml0
aWFsaXplLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzdmcvZG9tL1NWR0xlbmd0aExpc3QtaW5p
dGlhbGl6ZS54aHRtbDoKKyAgICAgICAgKiBzdmcvZG9tL1NWR0xlbmd0aExpc3QtaW5zZXJ0SXRl
bUJlZm9yZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3ZnL2RvbS9TVkdMZW5ndGhMaXN0LWlu
c2VydEl0ZW1CZWZvcmUueGh0bWw6CisgICAgICAgICogc3ZnL2RvbS9TVkdMZW5ndGhMaXN0LXJl
bW92ZUl0ZW0tZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHN2Zy9kb20vU1ZHTGVuZ3RoTGlzdC1y
ZW1vdmVJdGVtLnhodG1sOgorICAgICAgICAqIHN2Zy9kb20vU1ZHTGVuZ3RoTGlzdC1yZXBsYWNl
SXRlbS1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3ZnL2RvbS9TVkdMZW5ndGhMaXN0LXJlcGxh
Y2VJdGVtLnhodG1sOgorICAgICAgICBUaGlzIGNoYW5nZXMgYXJlIHJlcXVpcmVkIGJlY2F1c2Ug
U1ZHTGVuZ3RoTGlzdCB3aWxsIGJlIGZvbGxvd2luZyB0aGUgU1ZHMgorICAgICAgICBzcGVjcyBy
ZWdhcmRpbmcgYWRkaW5nIG5ldyBpdGVtcyB0byB0aGUgbGlzdC4gCisKKyAgICAgICAgU2VlIGh0
dHBzOi8vd3d3LnczLm9yZy9UUi9TVkcvdHlwZXMuaHRtbCNUZXJtTGlzdEludGVyZmFjZS4KKwog
MjAxOS0wMy0yNiAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgTGF5b3V0IFRlc3QganMvbWF0aC1jbHozMi5odG1sIGlzIGZhaWxpbmcKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggZDE2ZjZlMThiYWEyMjA1YWZkZDc4
ODA2YzYwNTlhOGM1ZWU4NzVjOS4uYmU3NGU2Y2FmMjY1NWJkMjI0OTEyNDlhYWFjOWRiNTQ4YjRl
NTVjNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlv
bnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTE5
NTQsNiArMTk1NCw5IEBAIGltcG9ydGVkL21vemlsbGEvc3ZnL3N2Zy1lZmZlY3RzLWFyZWEtem9v
bWVkLWluLnhodG1sCiBpbXBvcnRlZC9tb3ppbGxhL3N2Zy9zdmctZWZmZWN0cy1hcmVhLXpvb21l
ZC1vdXQueGh0bWwKIHN2Zy9maWx0ZXJzL2ZlSW1hZ2Utc2VsZi1hbmQtb3RoZXItcmVmZXJlbmNp
bmcuaHRtbAogCisjIEdDQ29udHJvbGxlci5jb2xsZWN0KCkgaXNzdWVzLgorc3ZnL2FuaW1hdGlv
bnMvc3ZnbGVuZ3RoLWVsZW1lbnQtcmVtb3ZlZC1jcmFzaC5zdmcgWyBGYWlsdXJlIF0KKwogIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMKICMjIyMjIyMjIyMjIyMjIyMjIyMgICAgICAgICAgRW5kIFNW
RyBJc3N1ZXMgICAgICAgICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMvc3Zn
bGVuZ3RoLWVsZW1lbnQtcmVtb3ZlZC1jcmFzaC5zdmcgYi9MYXlvdXRUZXN0cy9zdmcvYW5pbWF0
aW9ucy9zdmdsZW5ndGgtZWxlbWVudC1yZW1vdmVkLWNyYXNoLnN2ZwppbmRleCA1MTFjZDYzZjJh
MzA5NWM5MjNlYjAyYzI3NmQ4ZjJmMDM3ZDEzMDQxLi5iMTMyYzc2ZmIxYTAzODIyODA4MmVkNWRh
YTFiMWI2MzE2M2YxZWM2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9z
dmdsZW5ndGgtZWxlbWVudC1yZW1vdmVkLWNyYXNoLnN2ZworKysgYi9MYXlvdXRUZXN0cy9zdmcv
YW5pbWF0aW9ucy9zdmdsZW5ndGgtZWxlbWVudC1yZW1vdmVkLWNyYXNoLnN2ZwpAQCAtMzIsOCAr
MzIsOCBAQCBmdW5jdGlvbiBsb2FkKCkgewogICAgIC8vIFRoZSByZXN0IG9mIHRoaXMgdGVzdCBz
aG91bGQgRkFJTCB3aXRob3V0IHJlcXVpcmluZyBnbWFsbG9jIGlmIHRoaXMgdGVzdCBoYXMgcmVn
cmVzc2VkLgogICAgIHZhciBsaXZlRGVsdGEgPSB3aW5kb3cuaW50ZXJuYWxzLm51bWJlck9mTGl2
ZU5vZGVzKCkgLSBvcmlnaW5hbExpdmVFbGVtZW50czsKICAgICAKLSAgICAvLyBNYWtlIHN1cmUg
dGhhdCB0aGUgPHJlY3Q+IGlzIHN0aWxsIGFsaXZlOyBpZiBpdCdzIG5vdCwgbGl2ZURlbHRhIHdp
bGwgYmUgLTEuCi0gICAgaWYgKGxpdmVEZWx0YSA9PSAwKQorICAgIC8vIE1ha2Ugc3VyZSB0aGF0
IHRoZSA8cmVjdD4gaXMgZGVsZXRlZDsgaWYgaXQncyBub3QsIGxpdmVEZWx0YSB3aWxsIGJlIDAu
CisgICAgaWYgKGxpdmVEZWx0YSA9PSAtMSkKICAgICAgICAgbG9nKCIgUEFTUyIpOwogICAgIGVs
c2UKICAgICAgICAgbG9nKCIgRkFJTDogIiArIGxpdmVEZWx0YSArICIgZXh0cmEgbGl2ZSBub2Rl
KHMpIik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdmcvZG9tL1NWR0xlbmd0aExpc3QtYXBw
ZW5kSXRlbS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdmcvZG9tL1NWR0xlbmd0aExpc3Qt
YXBwZW5kSXRlbS1leHBlY3RlZC50eHQKaW5kZXggZDQ1YTk5NDBhMzQzOTcwNmIwZGE1YzhiZjFl
YzFiMjgxNjdlNmRhYi4uZTZhNjlkOWEzODI1MDBiOGZlYjk3MDQ2M2Y3MTNjODMyZjQwMDFiZSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3ZnL2RvbS9TVkdMZW5ndGhMaXN0LWFwcGVuZEl0ZW0t
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N2Zy9kb20vU1ZHTGVuZ3RoTGlzdC1hcHBl
bmRJdGVtLWV4cGVjdGVkLnR4dApAQCAtMjcsNyArMjcsOCBAQCBQQVNTIHRleHQyLnguYmFzZVZh
bC5nZXRJdGVtKDIpLnZhbHVlIGlzIDEwMDAKIFBBU1MgdGV4dDIueC5iYXNlVmFsLmdldEl0ZW0o
MykgdGhyZXcgZXhjZXB0aW9uIEluZGV4U2l6ZUVycm9yOiBUaGUgaW5kZXggaXMgbm90IGluIHRo
ZSBhbGxvd2VkIHJhbmdlLi4KIAogQXBwZW5kIGZvdXJ0aCBpdGVtIHg9OTAwIHRvIHRoZSB0ZXh0
MSB4IGxpc3QKLVBBU1MgdGV4dDEueC5iYXNlVmFsLmFwcGVuZEl0ZW0odGV4dDEueC5iYXNlVmFs
LmdldEl0ZW0oMykpIGlzIHRleHQxLnguYmFzZVZhbC5nZXRJdGVtKDQpCitQQVNTIHRleHQxLngu
YmFzZVZhbC5hcHBlbmRJdGVtKHRleHQxLnguYmFzZVZhbC5nZXRJdGVtKDMpKSBpcyB0ZXh0MS54
LmJhc2VWYWwuZ2V0SXRlbSg1KQorUEFTUyB0ZXh0MS54LmJhc2VWYWwucmVtb3ZlSXRlbSgzKS50
b1N0cmluZygpIGlzICJbb2JqZWN0IFNWR0xlbmd0aF0iCiBQQVNTIHRleHQxLnguYmFzZVZhbC5u
dW1iZXJPZkl0ZW1zIGlzIDUKIFBBU1MgdGV4dDEueC5iYXNlVmFsLmdldEl0ZW0oMCkudmFsdWUg
aXMgNTAwCiBQQVNTIHRleHQxLnguYmFzZVZhbC5nZXRJdGVtKDEpLnZhbHVlIGlzIDUwCkBAIC0z
Nyw3ICszOCw4IEBAIFBBU1MgdGV4dDEueC5iYXNlVmFsLmdldEl0ZW0oNCkudmFsdWUgaXMgOTAw
CiBQQVNTIHRleHQxLnguYmFzZVZhbC5nZXRJdGVtKDUpIHRocmV3IGV4Y2VwdGlvbiBJbmRleFNp
emVFcnJvcjogVGhlIGluZGV4IGlzIG5vdCBpbiB0aGUgYWxsb3dlZCByYW5nZS4uCiAKIEFwcGVu
ZCBmaXJzdCBpdGVtIHg9NTAwIHRvIHRoZSB0ZXh0MSB4IGxpc3QKLVBBU1MgdGV4dDEueC5iYXNl
VmFsLmFwcGVuZEl0ZW0odGV4dDEueC5iYXNlVmFsLmdldEl0ZW0oMCkpIGlzIHRleHQxLnguYmFz
ZVZhbC5nZXRJdGVtKDQpCitQQVNTIHRleHQxLnguYmFzZVZhbC5hcHBlbmRJdGVtKHRleHQxLngu
YmFzZVZhbC5nZXRJdGVtKDApKSBpcyB0ZXh0MS54LmJhc2VWYWwuZ2V0SXRlbSg1KQorUEFTUyB0
ZXh0MS54LmJhc2VWYWwucmVtb3ZlSXRlbSgwKS50b1N0cmluZygpIGlzICJbb2JqZWN0IFNWR0xl
bmd0aF0iCiBQQVNTIHRleHQxLnguYmFzZVZhbC5udW1iZXJPZkl0ZW1zIGlzIDUKIFBBU1MgdGV4
dDEueC5iYXNlVmFsLmdldEl0ZW0oMCkudmFsdWUgaXMgNTAKIFBBU1MgdGV4dDEueC5iYXNlVmFs
LmdldEl0ZW0oMSkudmFsdWUgaXMgMTAwCkBAIC01OSw3ICs2MSw5IEBAIFBBU1MgdGV4dDEueC5i
YXNlVmFsLmdldEl0ZW0oNikgdGhyZXcgZXhjZXB0aW9uIEluZGV4U2l6ZUVycm9yOiBUaGUgaW5k
ZXggaXMgbm90CiAKIEFwcGVuZCB0aGlyZCBhbmQgZm91cnRoIGl0ZW0gb2YgdGhlIHRleHQxIHgg
bGlzdCB0byB0aGUgdGV4dDIgeCBsaXN0CiBQQVNTIHRleHQyLnguYmFzZVZhbC5hcHBlbmRJdGVt
KHRleHQxLnguYmFzZVZhbC5nZXRJdGVtKDIpKS52YWx1ZSBpcyAxMDAwCitQQVNTIHRleHQxLngu
YmFzZVZhbC5yZW1vdmVJdGVtKDIpLnRvU3RyaW5nKCkgaXMgIltvYmplY3QgU1ZHTGVuZ3RoXSIK
IFBBU1MgdGV4dDIueC5iYXNlVmFsLmFwcGVuZEl0ZW0odGV4dDEueC5iYXNlVmFsLmdldEl0ZW0o
MikpLnZhbHVlIGlzIDkwMAorUEFTUyB0ZXh0MS54LmJhc2VWYWwucmVtb3ZlSXRlbSgyKS50b1N0
cmluZygpIGlzICJbb2JqZWN0IFNWR0xlbmd0aF0iCiBQQVNTIHRleHQxLnguYmFzZVZhbC5udW1i
ZXJPZkl0ZW1zIGlzIDQKIFBBU1MgdGV4dDEueC5iYXNlVmFsLmdldEl0ZW0oMCkudmFsdWUgaXMg
NTAKIFBBU1MgdGV4dDEueC5iYXNlVmFsLmdldEl0ZW0oMSkudmFsdWUgaXMgMTAwCkBAIC03Nywx
MCArODEsMTQgQEAgUEFTUyBuZXdMZW5ndGgyLnZhbHVlIGlzIDE1MAogCiBTaHVmZmxlIGFyb3Vu
ZCBpdGVtcyBpbiB0ZXh0MSBhbmQgdGV4dDIgbGlzdCB1c2luZyBhcHBlbmRJdGVtLCB0byBnZXQg
eD01MCwxMDAsMTUwLC4uLiBpbiBib3RoIGxpc3RzCiBQQVNTIHRleHQxLnguYmFzZVZhbC5hcHBl
bmRJdGVtKHRleHQxLnguYmFzZVZhbC5nZXRJdGVtKDIpKS52YWx1ZSBpcyA1MDAKK1BBU1MgdGV4
dDEueC5iYXNlVmFsLnJlbW92ZUl0ZW0oMikudG9TdHJpbmcoKSBpcyAiW29iamVjdCBTVkdMZW5n
dGhdIgogUEFTUyB0ZXh0Mi54LmJhc2VWYWwuYXBwZW5kSXRlbShuZXdMZW5ndGgyKS52YWx1ZSBp
cyAxNTAKIFBBU1MgdGV4dDIueC5iYXNlVmFsLmFwcGVuZEl0ZW0odGV4dDIueC5iYXNlVmFsLmdl
dEl0ZW0oMikpLnZhbHVlIGlzIDEwMDAKK1BBU1MgdGV4dDIueC5iYXNlVmFsLnJlbW92ZUl0ZW0o
MikudG9TdHJpbmcoKSBpcyAiW29iamVjdCBTVkdMZW5ndGhdIgogUEFTUyB0ZXh0Mi54LmJhc2VW
YWwuYXBwZW5kSXRlbSh0ZXh0Mi54LmJhc2VWYWwuZ2V0SXRlbSgzKSkudmFsdWUgaXMgOTAwCitQ
QVNTIHRleHQyLnguYmFzZVZhbC5yZW1vdmVJdGVtKDMpLnRvU3RyaW5nKCkgaXMgIltvYmplY3Qg
U1ZHTGVuZ3RoXSIKIFBBU1MgdGV4dDIueC5iYXNlVmFsLmFwcGVuZEl0ZW0odGV4dDIueC5iYXNl
VmFsLmdldEl0ZW0oMikpLnZhbHVlIGlzIDEwMDAKK1BBU1MgdGV4dDIueC5iYXNlVmFsLnJlbW92
ZUl0ZW0oMikudG9TdHJpbmcoKSBpcyAiW29iamVjdCBTVkdMZW5ndGhdIgogUEFTUyB0ZXh0MS54
LmJhc2VWYWwubnVtYmVyT2ZJdGVtcyBpcyA0CiBQQVNTIHRleHQxLnguYmFzZVZhbC5nZXRJdGVt
KDApLnZhbHVlIGlzIDUwCiBQQVNTIHRleHQxLnguYmFzZVZhbC5nZXRJdGVtKDEpLnZhbHVlIGlz
IDEwMApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3ZnL2RvbS9TVkdMZW5ndGhMaXN0LWFwcGVu
ZEl0ZW0ueGh0bWwgYi9MYXlvdXRUZXN0cy9zdmcvZG9tL1NWR0xlbmd0aExpc3QtYXBwZW5kSXRl
bS54aHRtbAppbmRleCA0OWVjODAyYmVlNzNkZjYxNjEyMjI0YWFhYjExODVhYWNkYThlMTk1Li5l
YjU0Yjk1MTI1MDM5YjQ3YTY0MWE5NzA0MjU1NGE1Y2YzYjE1NzMwIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9zdmcvZG9tL1NWR0xlbmd0aExpc3QtYXBwZW5kSXRlbS54aHRtbAorKysgYi9MYXlv
dXRUZXN0cy9zdmcvZG9tL1NWR0xlbmd0aExpc3QtYXBwZW5kSXRlbS54aHRtbApAQCAtNDYsNyAr
NDYsOCBAQAogCiAgICAgZGVidWcoIiIpOwogICAgIGRlYnVnKCJBcHBlbmQgZm91cnRoIGl0ZW0g
eD05MDAgdG8gdGhlIHRleHQxIHggbGlzdCIpOwotICAgIHNob3VsZEJlKCJ0ZXh0MS54LmJhc2VW
YWwuYXBwZW5kSXRlbSh0ZXh0MS54LmJhc2VWYWwuZ2V0SXRlbSgzKSkiLCAidGV4dDEueC5iYXNl
VmFsLmdldEl0ZW0oNCkiKTsKKyAgICBzaG91bGRCZSgidGV4dDEueC5iYXNlVmFsLmFwcGVuZEl0
ZW0odGV4dDEueC5iYXNlVmFsLmdldEl0ZW0oMykpIiwgInRleHQxLnguYmFzZVZhbC5nZXRJdGVt
KDUpIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ0ZXh0MS54LmJhc2VWYWwucmVtb3Zl
SXRlbSgzKS50b1N0cmluZygpIiwgIltvYmplY3QgU1ZHTGVuZ3RoXSIpOwogICAgIHNob3VsZEJl
KCJ0ZXh0MS54LmJhc2VWYWwubnVtYmVyT2ZJdGVtcyIsICI1Iik7CiAgICAgc2hvdWxkQmUoInRl
eHQxLnguYmFzZVZhbC5nZXRJdGVtKDApLnZhbHVlIiwgIjUwMCIpOwogICAgIHNob3VsZEJlKCJ0
ZXh0MS54LmJhc2VWYWwuZ2V0SXRlbSgxKS52YWx1ZSIsICI1MCIpOwpAQCAtNTcsNyArNTgsOCBA
QAogCiAgICAgZGVidWcoIiIpOwogICAgIGRlYnVnKCJBcHBlbmQgZmlyc3QgaXRlbSB4PTUwMCB0
byB0aGUgdGV4dDEgeCBsaXN0Iik7Ci0gICAgc2hvdWxkQmUoInRleHQxLnguYmFzZVZhbC5hcHBl
bmRJdGVtKHRleHQxLnguYmFzZVZhbC5nZXRJdGVtKDApKSIsICJ0ZXh0MS54LmJhc2VWYWwuZ2V0
SXRlbSg0KSIpOworICAgIHNob3VsZEJlKCJ0ZXh0MS54LmJhc2VWYWwuYXBwZW5kSXRlbSh0ZXh0
MS54LmJhc2VWYWwuZ2V0SXRlbSgwKSkiLCAidGV4dDEueC5iYXNlVmFsLmdldEl0ZW0oNSkiKTsK
KyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInRleHQxLnguYmFzZVZhbC5yZW1vdmVJdGVtKDAp
LnRvU3RyaW5nKCkiLCAiW29iamVjdCBTVkdMZW5ndGhdIik7CiAgICAgc2hvdWxkQmUoInRleHQx
LnguYmFzZVZhbC5udW1iZXJPZkl0ZW1zIiwgIjUiKTsKICAgICBzaG91bGRCZSgidGV4dDEueC5i
YXNlVmFsLmdldEl0ZW0oMCkudmFsdWUiLCAiNTAiKTsKICAgICBzaG91bGRCZSgidGV4dDEueC5i
YXNlVmFsLmdldEl0ZW0oMSkudmFsdWUiLCAiMTAwIik7CkBAIC04MSw3ICs4Myw5IEBACiAgICAg
ZGVidWcoIiIpOwogICAgIGRlYnVnKCJBcHBlbmQgdGhpcmQgYW5kIGZvdXJ0aCBpdGVtIG9mIHRo
ZSB0ZXh0MSB4IGxpc3QgdG8gdGhlIHRleHQyIHggbGlzdCIpOwogICAgIHNob3VsZEJlKCJ0ZXh0
Mi54LmJhc2VWYWwuYXBwZW5kSXRlbSh0ZXh0MS54LmJhc2VWYWwuZ2V0SXRlbSgyKSkudmFsdWUi
LCAiMTAwMCIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygidGV4dDEueC5iYXNlVmFsLnJl
bW92ZUl0ZW0oMikudG9TdHJpbmcoKSIsICJbb2JqZWN0IFNWR0xlbmd0aF0iKTsKICAgICBzaG91
bGRCZSgidGV4dDIueC5iYXNlVmFsLmFwcGVuZEl0ZW0odGV4dDEueC5iYXNlVmFsLmdldEl0ZW0o
MikpLnZhbHVlIiwgIjkwMCIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygidGV4dDEueC5i
YXNlVmFsLnJlbW92ZUl0ZW0oMikudG9TdHJpbmcoKSIsICJbb2JqZWN0IFNWR0xlbmd0aF0iKTsK
ICAgICBzaG91bGRCZSgidGV4dDEueC5iYXNlVmFsLm51bWJlck9mSXRlbXMiLCAiNCIpOwogICAg
IHNob3VsZEJlKCJ0ZXh0MS54LmJhc2VWYWwuZ2V0SXRlbSgwKS52YWx1ZSIsICI1MCIpOwogICAg
IHNob3VsZEJlKCJ0ZXh0MS54LmJhc2VWYWwuZ2V0SXRlbSgxKS52YWx1ZSIsICIxMDAiKTsKQEAg
LTEwMywxMCArMTA3LDE0IEBACiAgICAgZGVidWcoIiIpOwogICAgIGRlYnVnKCJTaHVmZmxlIGFy
b3VuZCBpdGVtcyBpbiB0ZXh0MSBhbmQgdGV4dDIgbGlzdCB1c2luZyBhcHBlbmRJdGVtLCB0byBn
ZXQgeD01MCwxMDAsMTUwLC4uLiBpbiBib3RoIGxpc3RzIik7CiAgICAgc2hvdWxkQmUoInRleHQx
LnguYmFzZVZhbC5hcHBlbmRJdGVtKHRleHQxLnguYmFzZVZhbC5nZXRJdGVtKDIpKS52YWx1ZSIs
ICI1MDAiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInRleHQxLnguYmFzZVZhbC5yZW1v
dmVJdGVtKDIpLnRvU3RyaW5nKCkiLCAiW29iamVjdCBTVkdMZW5ndGhdIik7CiAgICAgc2hvdWxk
QmUoInRleHQyLnguYmFzZVZhbC5hcHBlbmRJdGVtKG5ld0xlbmd0aDIpLnZhbHVlIiwgIjE1MCIp
OwogICAgIHNob3VsZEJlKCJ0ZXh0Mi54LmJhc2VWYWwuYXBwZW5kSXRlbSh0ZXh0Mi54LmJhc2VW
YWwuZ2V0SXRlbSgyKSkudmFsdWUiLCAiMTAwMCIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
ZygidGV4dDIueC5iYXNlVmFsLnJlbW92ZUl0ZW0oMikudG9TdHJpbmcoKSIsICJbb2JqZWN0IFNW
R0xlbmd0aF0iKTsKICAgICBzaG91bGRCZSgidGV4dDIueC5iYXNlVmFsLmFwcGVuZEl0ZW0odGV4
dDIueC5iYXNlVmFsLmdldEl0ZW0oMykpLnZhbHVlIiwgIjkwMCIpOworICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygidGV4dDIueC5iYXNlVmFsLnJlbW92ZUl0ZW0oMykudG9TdHJpbmcoKSIsICJb
b2JqZWN0IFNWR0xlbmd0aF0iKTsKICAgICBzaG91bGRCZSgidGV4dDIueC5iYXNlVmFsLmFwcGVu
ZEl0ZW0odGV4dDIueC5iYXNlVmFsLmdldEl0ZW0oMikpLnZhbHVlIiwgIjEwMDAiKTsKKyAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoInRleHQyLnguYmFzZVZhbC5yZW1vdmVJdGVtKDIpLnRvU3Ry
aW5nKCkiLCAiW29iamVjdCBTVkdMZW5ndGhdIik7CiAgICAgc2hvdWxkQmUoInRleHQxLnguYmFz
ZVZhbC5udW1iZXJPZkl0ZW1zIiwgIjQiKTsKICAgICBzaG91bGRCZSgidGV4dDEueC5iYXNlVmFs
LmdldEl0ZW0oMCkudmFsdWUiLCAiNTAiKTsKICAgICBzaG91bGRCZSgidGV4dDEueC5iYXNlVmFs
LmdldEl0ZW0oMSkudmFsdWUiLCAiMTAwIik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdmcv
ZG9tL1NWR0xlbmd0aExpc3QtYmFzaWNzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N2Zy9k
b20vU1ZHTGVuZ3RoTGlzdC1iYXNpY3MtZXhwZWN0ZWQudHh0CmluZGV4IDcwMjU2Yzg4MjhhYWQ5
N2E0NmQyZGNkYTA2NDRmNGI3MWU1YjBjMmYuLmFmZjkwYjIzYTkwOTk1YjE5MjUxZWE3NjY5ZGRk
OWE5MjE4ZjcwN2QgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N2Zy9kb20vU1ZHTGVuZ3RoTGlz
dC1iYXNpY3MtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N2Zy9kb20vU1ZHTGVuZ3Ro
TGlzdC1iYXNpY3MtZXhwZWN0ZWQudHh0CkBAIC0yOSwyNCArMjksMjggQEAgUEFTUyB0ZXh0MS54
LmJhc2VWYWwuaW5zZXJ0SXRlbUJlZm9yZSgnYVN0cmluZycpIHRocmV3IGV4Y2VwdGlvbiBUeXBl
RXJyb3I6IE5vdAogUEFTUyB0ZXh0MS54LmJhc2VWYWwuaW5zZXJ0SXRlbUJlZm9yZSh0ZXh0MSkg
dGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMuCiBQQVNTIHRl
eHQxLnguYmFzZVZhbC5pbnNlcnRJdGVtQmVmb3JlKG51bGwpIHRocmV3IGV4Y2VwdGlvbiBUeXBl
RXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzLgogUEFTUyB0ZXh0MS54LmJhc2VWYWwuaW5zZXJ0
SXRlbUJlZm9yZSh0ZXh0MS54LmJhc2VWYWwuZ2V0SXRlbSgxKSwgJ2FTdHJpbmcnKSBpcyB0ZXh0
MS54LmJhc2VWYWwuZ2V0SXRlbSgwKQorUEFTUyB0ZXh0MS54LmJhc2VWYWwucmVtb3ZlSXRlbSgy
KS50b1N0cmluZygpIGlzICJbb2JqZWN0IFNWR0xlbmd0aF0iCiBQQVNTIHRleHQxLnguYmFzZVZh
bC5udW1iZXJPZkl0ZW1zIGlzIDMKIFBBU1MgdGV4dDEueC5iYXNlVmFsLmdldEl0ZW0oMCkudmFs
dWUgaXMgMTAwMAogUEFTUyB0ZXh0MS54LmJhc2VWYWwuZ2V0SXRlbSgxKS52YWx1ZSBpcyA1MDAK
IFBBU1MgdGV4dDEueC5iYXNlVmFsLmdldEl0ZW0oMikudmFsdWUgaXMgMTUwMAogUEFTUyB0ZXh0
MS5nZXRBdHRyaWJ1dGUoJ3gnKSBpcyAiMTAwMCA1MDAgMTUwMCIKIFBBU1MgdGV4dDEueC5iYXNl
VmFsLmluc2VydEl0ZW1CZWZvcmUodGV4dDEueC5iYXNlVmFsLmdldEl0ZW0oMSksIHRleHQxKSBp
cyB0ZXh0MS54LmJhc2VWYWwuZ2V0SXRlbSgwKQorUEFTUyB0ZXh0MS54LmJhc2VWYWwucmVtb3Zl
SXRlbSgyKS50b1N0cmluZygpIGlzICJbb2JqZWN0IFNWR0xlbmd0aF0iCiBQQVNTIHRleHQxLngu
YmFzZVZhbC5udW1iZXJPZkl0ZW1zIGlzIDMKIFBBU1MgdGV4dDEueC5iYXNlVmFsLmdldEl0ZW0o
MCkudmFsdWUgaXMgNTAwCiBQQVNTIHRleHQxLnguYmFzZVZhbC5nZXRJdGVtKDEpLnZhbHVlIGlz
IDEwMDAKIFBBU1MgdGV4dDEueC5iYXNlVmFsLmdldEl0ZW0oMikudmFsdWUgaXMgMTUwMAogUEFT
UyB0ZXh0MS5nZXRBdHRyaWJ1dGUoJ3gnKSBpcyAiNTAwIDEwMDAgMTUwMCIKIFBBU1MgdGV4dDEu
eC5iYXNlVmFsLmluc2VydEl0ZW1CZWZvcmUodGV4dDEueC5iYXNlVmFsLmdldEl0ZW0oMSksIG51
bGwpIGlzIHRleHQxLnguYmFzZVZhbC5nZXRJdGVtKDApCitQQVNTIHRleHQxLnguYmFzZVZhbC5y
ZW1vdmVJdGVtKDIpLnRvU3RyaW5nKCkgaXMgIltvYmplY3QgU1ZHTGVuZ3RoXSIKIFBBU1MgdGV4
dDEueC5iYXNlVmFsLm51bWJlck9mSXRlbXMgaXMgMwogUEFTUyB0ZXh0MS54LmJhc2VWYWwuZ2V0
SXRlbSgwKS52YWx1ZSBpcyAxMDAwCiBQQVNTIHRleHQxLnguYmFzZVZhbC5nZXRJdGVtKDEpLnZh
bHVlIGlzIDUwMAogUEFTUyB0ZXh0MS54LmJhc2VWYWwuZ2V0SXRlbSgyKS52YWx1ZSBpcyAxNTAw
CiBQQVNTIHRleHQxLmdldEF0dHJpYnV0ZSgneCcpIGlzICIxMDAwIDUwMCAxNTAwIgogUEFTUyB0
ZXh0MS54LmJhc2VWYWwuaW5zZXJ0SXRlbUJlZm9yZSh0ZXh0MS54LmJhc2VWYWwuZ2V0SXRlbSgx
KSwgMCkgaXMgdGV4dDEueC5iYXNlVmFsLmdldEl0ZW0oMCkKK1BBU1MgdGV4dDEueC5iYXNlVmFs
LnJlbW92ZUl0ZW0oMikudG9TdHJpbmcoKSBpcyAiW29iamVjdCBTVkdMZW5ndGhdIgogUEFTUyB0
ZXh0MS54LmJhc2VWYWwubnVtYmVyT2ZJdGVtcyBpcyAzCiBQQVNTIHRleHQxLnguYmFzZVZhbC5n
ZXRJdGVtKDApLnZhbHVlIGlzIDUwMAogUEFTUyB0ZXh0MS54LmJhc2VWYWwuZ2V0SXRlbSgxKS52
YWx1ZSBpcyAxMDAwCkBAIC02MiwxMCArNjYsMTMgQEAgUEFTUyB0ZXh0MS5zZXRBdHRyaWJ1dGUo
J3gnLCAnMSAyIDMgNCcpIGlzIHVuZGVmaW5lZC4KIAogVGVzdCBlZGdlIGNhc2VzIGZvciBpbnNl
cnRJdGVtQmVmb3JlKCkKIFBBU1MgdGV4dDEueC5iYXNlVmFsLmluc2VydEl0ZW1CZWZvcmUodGV4
dDEueC5iYXNlVmFsLmdldEl0ZW0oMyksIDMpIGlzIHRleHQxLnguYmFzZVZhbC5nZXRJdGVtKDMp
CitQQVNTIHRleHQxLnguYmFzZVZhbC5yZW1vdmVJdGVtKDQpLnRvU3RyaW5nKCkgaXMgIltvYmpl
Y3QgU1ZHTGVuZ3RoXSIKIFBBU1MgdGV4dDEuZ2V0QXR0cmlidXRlKCd4JykgaXMgIjEgMiAzIDQi
Ci1QQVNTIHRleHQxLnguYmFzZVZhbC5pbnNlcnRJdGVtQmVmb3JlKHRleHQxLnguYmFzZVZhbC5n
ZXRJdGVtKDEpLCA1KSBpcyB0ZXh0MS54LmJhc2VWYWwuZ2V0SXRlbSgzKQorUEFTUyB0ZXh0MS54
LmJhc2VWYWwuaW5zZXJ0SXRlbUJlZm9yZSh0ZXh0MS54LmJhc2VWYWwuZ2V0SXRlbSgxKSwgNSkg
aXMgdGV4dDEueC5iYXNlVmFsLmdldEl0ZW0oNCkKK1BBU1MgdGV4dDEueC5iYXNlVmFsLnJlbW92
ZUl0ZW0oMSkudG9TdHJpbmcoKSBpcyAiW29iamVjdCBTVkdMZW5ndGhdIgogUEFTUyB0ZXh0MS5n
ZXRBdHRyaWJ1dGUoJ3gnKSBpcyAiMSAzIDQgMiIKIFBBU1MgdGV4dDEueC5iYXNlVmFsLmluc2Vy
dEl0ZW1CZWZvcmUodGV4dDEueC5iYXNlVmFsLmdldEl0ZW0oMSksIDApIGlzIHRleHQxLnguYmFz
ZVZhbC5nZXRJdGVtKDApCitQQVNTIHRleHQxLnguYmFzZVZhbC5yZW1vdmVJdGVtKDIpLnRvU3Ry
aW5nKCkgaXMgIltvYmplY3QgU1ZHTGVuZ3RoXSIKIFBBU1MgdGV4dDEuZ2V0QXR0cmlidXRlKCd4
JykgaXMgIjMgMSA0IDIiCiAKIFNldCB4PScxIDIgMyA0JyBmb3IgdGV4dDEKQEAgLTExMSw3ICsx
MTgsOCBAQCBUZXN0IGVkZ2UgY2FzZXMgZm9yIHJlcGxhY2VJdGVtKCkKIFBBU1MgdGV4dDEueC5i
YXNlVmFsLnJlcGxhY2VJdGVtKHRleHQxLnguYmFzZVZhbC5nZXRJdGVtKDMpLCAzKSBpcyB0ZXh0
MS54LmJhc2VWYWwuZ2V0SXRlbSgzKQogUEFTUyB0ZXh0MS54LmJhc2VWYWwubnVtYmVyT2ZJdGVt
cyBpcyA0CiBQQVNTIHRleHQxLmdldEF0dHJpYnV0ZSgneCcpIGlzICIxIDIgMyA0IgotUEFTUyB0
ZXh0MS54LmJhc2VWYWwucmVwbGFjZUl0ZW0odGV4dDEueC5iYXNlVmFsLmdldEl0ZW0oMSksIDMp
IGlzIHRleHQxLnguYmFzZVZhbC5nZXRJdGVtKDIpCitQQVNTIHRleHQxLnguYmFzZVZhbC5yZXBs
YWNlSXRlbSh0ZXh0MS54LmJhc2VWYWwuZ2V0SXRlbSgxKSwgMykgaXMgdGV4dDEueC5iYXNlVmFs
LmdldEl0ZW0oMykKK1BBU1MgdGV4dDEueC5iYXNlVmFsLnJlbW92ZUl0ZW0oMSkudG9TdHJpbmco
KSBpcyAiW29iamVjdCBTVkdMZW5ndGhdIgogUEFTUyB0ZXh0MS54LmJhc2VWYWwubnVtYmVyT2ZJ
dGVtcyBpcyAzCiBQQVNTIHRleHQxLmdldEF0dHJpYnV0ZSgneCcpIGlzICIxIDMgMiIKIFBBU1Mg
dGV4dDEueC5iYXNlVmFsLnJlcGxhY2VJdGVtKHRleHQxLnguYmFzZVZhbC5nZXRJdGVtKDMpLCA0
KSB0aHJldyBleGNlcHRpb24gSW5kZXhTaXplRXJyb3I6IFRoZSBpbmRleCBpcyBub3QgaW4gdGhl
IGFsbG93ZWQgcmFuZ2UuLgpAQCAtMTIwLDEzICsxMjgsMTYgQEAgU2V0IHg9JzEgMiAzIDQnIGZv
ciB0ZXh0MQogUEFTUyB0ZXh0MS5zZXRBdHRyaWJ1dGUoJ3gnLCAnMSAyIDMgNCcpIGlzIHVuZGVm
aW5lZC4KIAogVGVzdCBvdmVybGFwcGluZyBlZGdlIGNhc2VzIGZvciByZXBsYWNlSXRlbSgpCi1Q
QVNTIHRleHQxLnguYmFzZVZhbC5yZXBsYWNlSXRlbSh0ZXh0MS54LmJhc2VWYWwuZ2V0SXRlbSgw
KSwgMykgaXMgdGV4dDEueC5iYXNlVmFsLmdldEl0ZW0oMikKK1BBU1MgdGV4dDEueC5iYXNlVmFs
LnJlcGxhY2VJdGVtKHRleHQxLnguYmFzZVZhbC5nZXRJdGVtKDApLCAzKSBpcyB0ZXh0MS54LmJh
c2VWYWwuZ2V0SXRlbSgzKQorUEFTUyB0ZXh0MS54LmJhc2VWYWwucmVtb3ZlSXRlbSgwKS50b1N0
cmluZygpIGlzICJbb2JqZWN0IFNWR0xlbmd0aF0iCiBQQVNTIHRleHQxLnguYmFzZVZhbC5udW1i
ZXJPZkl0ZW1zIGlzIDMKIFBBU1MgdGV4dDEueC5iYXNlVmFsLmdldEl0ZW0oMikudmFsdWUgaXMg
MgotUEFTUyB0ZXh0MS54LmJhc2VWYWwucmVwbGFjZUl0ZW0odGV4dDEueC5iYXNlVmFsLmdldEl0
ZW0oMCksIDIpIGlzIHRleHQxLnguYmFzZVZhbC5nZXRJdGVtKDEpCitQQVNTIHRleHQxLnguYmFz
ZVZhbC5yZXBsYWNlSXRlbSh0ZXh0MS54LmJhc2VWYWwuZ2V0SXRlbSgwKSwgMikgaXMgdGV4dDEu
eC5iYXNlVmFsLmdldEl0ZW0oMikKK1BBU1MgdGV4dDEueC5iYXNlVmFsLnJlbW92ZUl0ZW0oMCku
dG9TdHJpbmcoKSBpcyAiW29iamVjdCBTVkdMZW5ndGhdIgogUEFTUyB0ZXh0MS54LmJhc2VWYWwu
bnVtYmVyT2ZJdGVtcyBpcyAyCiBQQVNTIHRleHQxLnguYmFzZVZhbC5nZXRJdGVtKDEpLnZhbHVl
IGlzIDQKLVBBU1MgdGV4dDEueC5iYXNlVmFsLnJlcGxhY2VJdGVtKHRleHQxLnguYmFzZVZhbC5n
ZXRJdGVtKDApLCAxKSBpcyB0ZXh0MS54LmJhc2VWYWwuZ2V0SXRlbSgwKQorUEFTUyB0ZXh0MS54
LmJhc2VWYWwucmVwbGFjZUl0ZW0odGV4dDEueC5iYXNlVmFsLmdldEl0ZW0oMCksIDEpIGlzIHRl
eHQxLnguYmFzZVZhbC5nZXRJdGVtKDEpCitQQVNTIHRleHQxLnguYmFzZVZhbC5yZW1vdmVJdGVt
KDEpLnRvU3RyaW5nKCkgaXMgIltvYmplY3QgU1ZHTGVuZ3RoXSIKIFBBU1MgdGV4dDEueC5iYXNl
VmFsLm51bWJlck9mSXRlbXMgaXMgMQogUEFTUyB0ZXh0MS54LmJhc2VWYWwuZ2V0SXRlbSgwKS52
YWx1ZSBpcyA2CiBQQVNTIHRleHQxLnguYmFzZVZhbC5yZXBsYWNlSXRlbSh0ZXh0MS54LmJhc2VW
YWwuZ2V0SXRlbSgwKSwgMCkgaXMgdGV4dDEueC5iYXNlVmFsLmdldEl0ZW0oMCkKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3N2Zy9kb20vU1ZHTGVuZ3RoTGlzdC1iYXNpY3MueGh0bWwgYi9MYXlv
dXRUZXN0cy9zdmcvZG9tL1NWR0xlbmd0aExpc3QtYmFzaWNzLnhodG1sCmluZGV4IDQxNWVkOTBl
ODZjMWMyOTUwMGZmNGIyZjZiODhhYmE5OGNkN2JjNzkuLmE3ODMxMDFhYjMzNzkyMjRmMTBjNTkx
NTAwMzEyMGFhNjFkYmRjN2QgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N2Zy9kb20vU1ZHTGVu
Z3RoTGlzdC1iYXNpY3MueGh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3ZnL2RvbS9TVkdMZW5ndGhM
aXN0LWJhc2ljcy54aHRtbApAQCAtNTAsNiArNTAsNyBAQAogICAgIHNob3VsZFRocm93KCJ0ZXh0
MS54LmJhc2VWYWwuaW5zZXJ0SXRlbUJlZm9yZShudWxsKSIpOwogCiAgICAgc2hvdWxkQmUoInRl
eHQxLnguYmFzZVZhbC5pbnNlcnRJdGVtQmVmb3JlKHRleHQxLnguYmFzZVZhbC5nZXRJdGVtKDEp
LCAnYVN0cmluZycpIiwgInRleHQxLnguYmFzZVZhbC5nZXRJdGVtKDApIik7CisgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJ0ZXh0MS54LmJhc2VWYWwucmVtb3ZlSXRlbSgyKS50b1N0cmluZygp
IiwgIltvYmplY3QgU1ZHTGVuZ3RoXSIpOwogICAgIHNob3VsZEJlKCJ0ZXh0MS54LmJhc2VWYWwu
bnVtYmVyT2ZJdGVtcyIsICIzIik7CiAgICAgc2hvdWxkQmUoInRleHQxLnguYmFzZVZhbC5nZXRJ
dGVtKDApLnZhbHVlIiwgIjEwMDAiKTsKICAgICBzaG91bGRCZSgidGV4dDEueC5iYXNlVmFsLmdl
dEl0ZW0oMSkudmFsdWUiLCAiNTAwIik7CkBAIC01Nyw2ICs1OCw3IEBACiAgICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJ0ZXh0MS5nZXRBdHRyaWJ1dGUoJ3gnKSIsICIxMDAwIDUwMCAxNTAwIik7
CiAKICAgICBzaG91bGRCZSgidGV4dDEueC5iYXNlVmFsLmluc2VydEl0ZW1CZWZvcmUodGV4dDEu
eC5iYXNlVmFsLmdldEl0ZW0oMSksIHRleHQxKSIsICJ0ZXh0MS54LmJhc2VWYWwuZ2V0SXRlbSgw
KSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygidGV4dDEueC5iYXNlVmFsLnJlbW92ZUl0
ZW0oMikudG9TdHJpbmcoKSIsICJbb2JqZWN0IFNWR0xlbmd0aF0iKTsKICAgICBzaG91bGRCZSgi
dGV4dDEueC5iYXNlVmFsLm51bWJlck9mSXRlbXMiLCAiMyIpOwogICAgIHNob3VsZEJlKCJ0ZXh0
MS54LmJhc2VWYWwuZ2V0SXRlbSgwKS52YWx1ZSIsICI1MDAiKTsKICAgICBzaG91bGRCZSgidGV4
dDEueC5iYXNlVmFsLmdldEl0ZW0oMSkudmFsdWUiLCAiMTAwMCIpOwpAQCAtNjQsNiArNjYsNyBA
QAogICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygidGV4dDEuZ2V0QXR0cmlidXRlKCd4JykiLCAi
NTAwIDEwMDAgMTUwMCIpOwogCiAgICAgc2hvdWxkQmUoInRleHQxLnguYmFzZVZhbC5pbnNlcnRJ
dGVtQmVmb3JlKHRleHQxLnguYmFzZVZhbC5nZXRJdGVtKDEpLCBudWxsKSIsICJ0ZXh0MS54LmJh
c2VWYWwuZ2V0SXRlbSgwKSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygidGV4dDEueC5i
YXNlVmFsLnJlbW92ZUl0ZW0oMikudG9TdHJpbmcoKSIsICJbb2JqZWN0IFNWR0xlbmd0aF0iKTsK
ICAgICBzaG91bGRCZSgidGV4dDEueC5iYXNlVmFsLm51bWJlck9mSXRlbXMiLCAiMyIpOwogICAg
IHNob3VsZEJlKCJ0ZXh0MS54LmJhc2VWYWwuZ2V0SXRlbSgwKS52YWx1ZSIsICIxMDAwIik7CiAg
ICAgc2hvdWxkQmUoInRleHQxLnguYmFzZVZhbC5nZXRJdGVtKDEpLnZhbHVlIiwgIjUwMCIpOwpA
QCAtNzEsNiArNzQsNyBAQAogICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygidGV4dDEuZ2V0QXR0
cmlidXRlKCd4JykiLCAiMTAwMCA1MDAgMTUwMCIpOwogCiAgICAgc2hvdWxkQmUoInRleHQxLngu
YmFzZVZhbC5pbnNlcnRJdGVtQmVmb3JlKHRleHQxLnguYmFzZVZhbC5nZXRJdGVtKDEpLCAwKSIs
ICJ0ZXh0MS54LmJhc2VWYWwuZ2V0SXRlbSgwKSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
ZygidGV4dDEueC5iYXNlVmFsLnJlbW92ZUl0ZW0oMikudG9TdHJpbmcoKSIsICJbb2JqZWN0IFNW
R0xlbmd0aF0iKTsKICAgICBzaG91bGRCZSgidGV4dDEueC5iYXNlVmFsLm51bWJlck9mSXRlbXMi
LCAiMyIpOwogICAgIHNob3VsZEJlKCJ0ZXh0MS54LmJhc2VWYWwuZ2V0SXRlbSgwKS52YWx1ZSIs
ICI1MDAiKTsKICAgICBzaG91bGRCZSgidGV4dDEueC5iYXNlVmFsLmdldEl0ZW0oMSkudmFsdWUi
LCAiMTAwMCIpOwpAQCAtODksMTAgKzkzLDEzIEBACiAgICAgZGVidWcoIiIpOwogICAgIGRlYnVn
KCJUZXN0IGVkZ2UgY2FzZXMgZm9yIGluc2VydEl0ZW1CZWZvcmUoKSIpOwogICAgIHNob3VsZEJl
KCJ0ZXh0MS54LmJhc2VWYWwuaW5zZXJ0SXRlbUJlZm9yZSh0ZXh0MS54LmJhc2VWYWwuZ2V0SXRl
bSgzKSwgMykiLCAidGV4dDEueC5iYXNlVmFsLmdldEl0ZW0oMykiKTsKKyAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoInRleHQxLnguYmFzZVZhbC5yZW1vdmVJdGVtKDQpLnRvU3RyaW5nKCkiLCAi
W29iamVjdCBTVkdMZW5ndGhdIik7CiAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ0ZXh0MS5n
ZXRBdHRyaWJ1dGUoJ3gnKSIsICIxIDIgMyA0Iik7Ci0gICAgc2hvdWxkQmUoInRleHQxLnguYmFz
ZVZhbC5pbnNlcnRJdGVtQmVmb3JlKHRleHQxLnguYmFzZVZhbC5nZXRJdGVtKDEpLCA1KSIsICJ0
ZXh0MS54LmJhc2VWYWwuZ2V0SXRlbSgzKSIpOworICAgIHNob3VsZEJlKCJ0ZXh0MS54LmJhc2VW
YWwuaW5zZXJ0SXRlbUJlZm9yZSh0ZXh0MS54LmJhc2VWYWwuZ2V0SXRlbSgxKSwgNSkiLCAidGV4
dDEueC5iYXNlVmFsLmdldEl0ZW0oNCkiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInRl
eHQxLnguYmFzZVZhbC5yZW1vdmVJdGVtKDEpLnRvU3RyaW5nKCkiLCAiW29iamVjdCBTVkdMZW5n
dGhdIik7CiAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ0ZXh0MS5nZXRBdHRyaWJ1dGUoJ3gn
KSIsICIxIDMgNCAyIik7CiAgICAgc2hvdWxkQmUoInRleHQxLnguYmFzZVZhbC5pbnNlcnRJdGVt
QmVmb3JlKHRleHQxLnguYmFzZVZhbC5nZXRJdGVtKDEpLCAwKSIsICJ0ZXh0MS54LmJhc2VWYWwu
Z2V0SXRlbSgwKSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygidGV4dDEueC5iYXNlVmFs
LnJlbW92ZUl0ZW0oMikudG9TdHJpbmcoKSIsICJbb2JqZWN0IFNWR0xlbmd0aF0iKTsKICAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoInRleHQxLmdldEF0dHJpYnV0ZSgneCcpIiwgIjMgMSA0IDIi
KTsKIAogICAgIGRlYnVnKCIiKTsKQEAgLTE0NSw3ICsxNTIsOCBAQAogICAgIHNob3VsZEJlKCJ0
ZXh0MS54LmJhc2VWYWwucmVwbGFjZUl0ZW0odGV4dDEueC5iYXNlVmFsLmdldEl0ZW0oMyksIDMp
IiwgInRleHQxLnguYmFzZVZhbC5nZXRJdGVtKDMpIik7CiAgICAgc2hvdWxkQmUoInRleHQxLngu
YmFzZVZhbC5udW1iZXJPZkl0ZW1zIiwgIjQiKTsKICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmco
InRleHQxLmdldEF0dHJpYnV0ZSgneCcpIiwgIjEgMiAzIDQiKTsKLSAgICBzaG91bGRCZSgidGV4
dDEueC5iYXNlVmFsLnJlcGxhY2VJdGVtKHRleHQxLnguYmFzZVZhbC5nZXRJdGVtKDEpLCAzKSIs
ICJ0ZXh0MS54LmJhc2VWYWwuZ2V0SXRlbSgyKSIpOworICAgIHNob3VsZEJlKCJ0ZXh0MS54LmJh
c2VWYWwucmVwbGFjZUl0ZW0odGV4dDEueC5iYXNlVmFsLmdldEl0ZW0oMSksIDMpIiwgInRleHQx
LnguYmFzZVZhbC5nZXRJdGVtKDMpIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ0ZXh0
MS54LmJhc2VWYWwucmVtb3ZlSXRlbSgxKS50b1N0cmluZygpIiwgIltvYmplY3QgU1ZHTGVuZ3Ro
XSIpOwogICAgIHNob3VsZEJlKCJ0ZXh0MS54LmJhc2VWYWwubnVtYmVyT2ZJdGVtcyIsICIzIik7
CiAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ0ZXh0MS5nZXRBdHRyaWJ1dGUoJ3gnKSIsICIx
IDMgMiIpOwogICAgIHNob3VsZFRocm93KCJ0ZXh0MS54LmJhc2VWYWwucmVwbGFjZUl0ZW0odGV4
dDEueC5iYXNlVmFsLmdldEl0ZW0oMyksIDQpIik7CkBAIC0xNTcsMTcgKzE2NSwyMCBAQAogICAg
IGRlYnVnKCIiKTsKICAgICBkZWJ1ZygiVGVzdCBvdmVybGFwcGluZyBlZGdlIGNhc2VzIGZvciBy
ZXBsYWNlSXRlbSgpIik7CiAgICAgdmFyIGl0ZW0gPSB0ZXh0MS54LmJhc2VWYWwuZ2V0SXRlbSgz
KTsKLSAgICBzaG91bGRCZSgidGV4dDEueC5iYXNlVmFsLnJlcGxhY2VJdGVtKHRleHQxLnguYmFz
ZVZhbC5nZXRJdGVtKDApLCAzKSIsICJ0ZXh0MS54LmJhc2VWYWwuZ2V0SXRlbSgyKSIpOworICAg
IHNob3VsZEJlKCJ0ZXh0MS54LmJhc2VWYWwucmVwbGFjZUl0ZW0odGV4dDEueC5iYXNlVmFsLmdl
dEl0ZW0oMCksIDMpIiwgInRleHQxLnguYmFzZVZhbC5nZXRJdGVtKDMpIik7CisgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJ0ZXh0MS54LmJhc2VWYWwucmVtb3ZlSXRlbSgwKS50b1N0cmluZygp
IiwgIltvYmplY3QgU1ZHTGVuZ3RoXSIpOwogICAgIHNob3VsZEJlKCJ0ZXh0MS54LmJhc2VWYWwu
bnVtYmVyT2ZJdGVtcyIsICIzIik7ICAgIAogICAgIGl0ZW0gPSB0ZXh0MS54LmJhc2VWYWwuZ2V0
SXRlbSgyKTsKICAgICBpdGVtLm5ld1ZhbHVlU3BlY2lmaWVkVW5pdHMoaXRlbS51bml0VHlwZSwg
aXRlbS52YWx1ZSAqIDIpOwogICAgIHNob3VsZEJlKCJ0ZXh0MS54LmJhc2VWYWwuZ2V0SXRlbSgy
KS52YWx1ZSIsICIyIik7Ci0gICAgc2hvdWxkQmUoInRleHQxLnguYmFzZVZhbC5yZXBsYWNlSXRl
bSh0ZXh0MS54LmJhc2VWYWwuZ2V0SXRlbSgwKSwgMikiLCAidGV4dDEueC5iYXNlVmFsLmdldEl0
ZW0oMSkiKTsKKyAgICBzaG91bGRCZSgidGV4dDEueC5iYXNlVmFsLnJlcGxhY2VJdGVtKHRleHQx
LnguYmFzZVZhbC5nZXRJdGVtKDApLCAyKSIsICJ0ZXh0MS54LmJhc2VWYWwuZ2V0SXRlbSgyKSIp
OworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygidGV4dDEueC5iYXNlVmFsLnJlbW92ZUl0ZW0o
MCkudG9TdHJpbmcoKSIsICJbb2JqZWN0IFNWR0xlbmd0aF0iKTsKICAgICBzaG91bGRCZSgidGV4
dDEueC5iYXNlVmFsLm51bWJlck9mSXRlbXMiLCAiMiIpOwogICAgIGl0ZW0gPSB0ZXh0MS54LmJh
c2VWYWwuZ2V0SXRlbSgxKTsKICAgICBpdGVtLm5ld1ZhbHVlU3BlY2lmaWVkVW5pdHMoaXRlbS51
bml0VHlwZSwgaXRlbS52YWx1ZSAqIDIpOwogICAgIHNob3VsZEJlKCJ0ZXh0MS54LmJhc2VWYWwu
Z2V0SXRlbSgxKS52YWx1ZSIsICI0Iik7Ci0gICAgc2hvdWxkQmUoInRleHQxLnguYmFzZVZhbC5y
ZXBsYWNlSXRlbSh0ZXh0MS54LmJhc2VWYWwuZ2V0SXRlbSgwKSwgMSkiLCAidGV4dDEueC5iYXNl
VmFsLmdldEl0ZW0oMCkiKTsKKyAgICBzaG91bGRCZSgidGV4dDEueC5iYXNlVmFsLnJlcGxhY2VJ
dGVtKHRleHQxLnguYmFzZVZhbC5nZXRJdGVtKDApLCAxKSIsICJ0ZXh0MS54LmJhc2VWYWwuZ2V0
SXRlbSgxKSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygidGV4dDEueC5iYXNlVmFsLnJl
bW92ZUl0ZW0oMSkudG9TdHJpbmcoKSIsICJbb2JqZWN0IFNWR0xlbmd0aF0iKTsKICAgICBzaG91
bGRCZSgidGV4dDEueC5iYXNlVmFsLm51bWJlck9mSXRlbXMiLCAiMSIpOwogICAgIGl0ZW0gPSB0
ZXh0MS54LmJhc2VWYWwuZ2V0SXRlbSgwKTsKICAgICBpdGVtLm5ld1ZhbHVlU3BlY2lmaWVkVW5p
dHMoaXRlbS51bml0VHlwZSwgaXRlbS52YWx1ZSAqIDIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvc3ZnL2RvbS9TVkdMZW5ndGhMaXN0LWluaXRpYWxpemUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvc3ZnL2RvbS9TVkdMZW5ndGhMaXN0LWluaXRpYWxpemUtZXhwZWN0ZWQudHh0CmluZGV4
IDhjNmZlMmQyZjgxMjQ0ZDFhZWU4OWFlODgzNzgyOTU2M2Y3N2Q4M2IuLjlkOTAwNmU3MWRmNjU2
MTQyOTgyMjgxMzM3NWNjZGU3MDc4YzIwZWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N2Zy9k
b20vU1ZHTGVuZ3RoTGlzdC1pbml0aWFsaXplLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9zdmcvZG9tL1NWR0xlbmd0aExpc3QtaW5pdGlhbGl6ZS1leHBlY3RlZC50eHQKQEAgLTQ1LDcg
KzQ1LDggQEAgUEFTUyB0ZXh0Mi54LmJhc2VWYWwuZ2V0SXRlbSgxKS52YWx1ZSBpcyA1MDAKIFBB
U1MgdGV4dDIueC5iYXNlVmFsLmdldEl0ZW0oMSkudmFsdWUgaXMgNTAKIAogT3ZlcnJpZGUgdGhl
IHRoaXJkIHRleHQgZWxlbWVudHMgeCBsaXN0IHdpdGggdGhlIGl0ZW0geD01MCBmcm9tIHRoZSBz
ZWNvbmQgdGV4dCBlbGVtZW50LCB3aGVyZSBpdCBzaG91bGQgYmUgcmVtb3ZlZCBhZnRlcndhcmRz
Ci1QQVNTIHRleHQzLnguYmFzZVZhbC5pbml0aWFsaXplKGl0ZW1JbkFub3RoZXJMaXN0KSBpcyBp
dGVtSW5Bbm90aGVyTGlzdAorUEFTUyB0ZXh0My54LmJhc2VWYWwuaW5pdGlhbGl6ZShpdGVtSW5B
bm90aGVyTGlzdCkgaXMgdGV4dDMueC5iYXNlVmFsLmdldEl0ZW0oMCkKK1BBU1MgdGV4dDIueC5i
YXNlVmFsLnJlbW92ZUl0ZW0oMSkudG9TdHJpbmcoKSBpcyAiW29iamVjdCBTVkdMZW5ndGhdIgog
UEFTUyB0ZXh0My54LmJhc2VWYWwuZ2V0SXRlbSgwKS52YWx1ZSBpcyA1MAogUEFTUyB0ZXh0Mi54
LmJhc2VWYWwuZ2V0SXRlbSgwKS52YWx1ZSBpcyA1MAogUEFTUyB0ZXh0Mi54LmJhc2VWYWwuZ2V0
SXRlbSgxKSB0aHJldyBleGNlcHRpb24gSW5kZXhTaXplRXJyb3I6IFRoZSBpbmRleCBpcyBub3Qg
aW4gdGhlIGFsbG93ZWQgcmFuZ2UuLgpAQCAtNTksNyArNjAsOCBAQCBQQVNTIGl0ZW1JbkFub3Ro
ZXJMaXN0LnZhbHVlIGlzIDUwCiBQQVNTIHRleHQzLnguYmFzZVZhbC5nZXRJdGVtKDApLnZhbHVl
IGlzIDUwCiAKIE1vdmUgaXRlbSBmcm9tIHRleHQzIHRvIHRleHQ0Ci1QQVNTIHRleHQ0LnguYmFz
ZVZhbC5pbml0aWFsaXplKHRleHQzLnguYmFzZVZhbC5nZXRJdGVtKDApKSBpcyBpdGVtSW5Bbm90
aGVyTGlzdAorUEFTUyB0ZXh0NC54LmJhc2VWYWwuaW5pdGlhbGl6ZSh0ZXh0My54LmJhc2VWYWwu
Z2V0SXRlbSgwKSkgaXMgdGV4dDQueC5iYXNlVmFsLmdldEl0ZW0oMCkKK1BBU1MgdGV4dDMueC5i
YXNlVmFsLnJlbW92ZUl0ZW0oMCkudG9TdHJpbmcoKSBpcyAiW29iamVjdCBTVkdMZW5ndGhdIgog
UEFTUyB0ZXh0NC54LmJhc2VWYWwuZ2V0SXRlbSgwKS52YWx1ZSBpcyA1MAogUEFTUyB0ZXh0My54
LmJhc2VWYWwuZ2V0SXRlbSgwKSB0aHJldyBleGNlcHRpb24gSW5kZXhTaXplRXJyb3I6IFRoZSBp
bmRleCBpcyBub3QgaW4gdGhlIGFsbG93ZWQgcmFuZ2UuLgogCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9zdmcvZG9tL1NWR0xlbmd0aExpc3QtaW5pdGlhbGl6ZS54aHRtbCBiL0xheW91dFRlc3Rz
L3N2Zy9kb20vU1ZHTGVuZ3RoTGlzdC1pbml0aWFsaXplLnhodG1sCmluZGV4IDYzZWJmM2ZhNjUy
ZmFkNDVlNGMyODMyZjM2MmEwNDJkMTRjZDIyMWIuLmVkMjdkMDQ0NWU4YjliMzBhMGQ5YzJjODFl
ZTMzZjBiZWUwMzgyODMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N2Zy9kb20vU1ZHTGVuZ3Ro
TGlzdC1pbml0aWFsaXplLnhodG1sCisrKyBiL0xheW91dFRlc3RzL3N2Zy9kb20vU1ZHTGVuZ3Ro
TGlzdC1pbml0aWFsaXplLnhodG1sCkBAIC03MSwxMSArNzEsMTIgQEAKICAgICBpdGVtSW5Bbm90
aGVyTGlzdC52YWx1ZSA9IDUwOwogICAgIHNob3VsZEJlKCJ0ZXh0Mi54LmJhc2VWYWwuZ2V0SXRl
bSgxKS52YWx1ZSIsICI1MCIpOwogCi0gICAgLy8gU3BlYzogSWYgdGhlIGluc2VydGVkIGl0ZW0g
aXMgYWxyZWFkeSBpbiBhIGxpc3QsIGl0IGlzIHJlbW92ZWQgZnJvbSBpdHMgcHJldmlvdXMgbGlz
dCBiZWZvcmUgaXQgaXMgaW5zZXJ0ZWQgaW50byB0aGlzIGxpc3QuCi0gICAgLy8gICAgICAgVGhl
IGluc2VydGVkIGl0ZW0gaXMgdGhlIGl0ZW0gaXRzZWxmIGFuZCBub3QgYSBjb3B5LgorICAgIC8v
IFNwZWM6IElmIHRoZSBpbnNlcnRlZCBpdGVtIGlzIGFscmVhZHkgaW4gYSBsaXN0LCBhIGNvcHkg
b2YgdGhlIGl0ZW0gd2lsbCBiZSBpbnNlcnRlZC4KICAgICBkZWJ1ZygiIik7CiAgICAgZGVidWco
Ik92ZXJyaWRlIHRoZSB0aGlyZCB0ZXh0IGVsZW1lbnRzIHggbGlzdCB3aXRoIHRoZSBpdGVtIHg9
NTAgZnJvbSB0aGUgc2Vjb25kIHRleHQgZWxlbWVudCwgd2hlcmUgaXQgc2hvdWxkIGJlIHJlbW92
ZWQgYWZ0ZXJ3YXJkcyIpOwotICAgIHNob3VsZEJlKCJ0ZXh0My54LmJhc2VWYWwuaW5pdGlhbGl6
ZShpdGVtSW5Bbm90aGVyTGlzdCkiLCAiaXRlbUluQW5vdGhlckxpc3QiKTsKKyAgICBzaG91bGRC
ZSgidGV4dDMueC5iYXNlVmFsLmluaXRpYWxpemUoaXRlbUluQW5vdGhlckxpc3QpIiwgInRleHQz
LnguYmFzZVZhbC5nZXRJdGVtKDApIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ0ZXh0
Mi54LmJhc2VWYWwucmVtb3ZlSXRlbSgxKS50b1N0cmluZygpIiwgIltvYmplY3QgU1ZHTGVuZ3Ro
XSIpOworICAgIGl0ZW1JbkFub3RoZXJMaXN0ID0gdGV4dDMueC5iYXNlVmFsLmdldEl0ZW0oMCk7
CiAgICAgc2hvdWxkQmUoInRleHQzLnguYmFzZVZhbC5nZXRJdGVtKDApLnZhbHVlIiwgIjUwIik7
CiAgICAgc2hvdWxkQmUoInRleHQyLnguYmFzZVZhbC5nZXRJdGVtKDApLnZhbHVlIiwgIjUwIik7
CiAgICAgc2hvdWxkVGhyb3coInRleHQyLnguYmFzZVZhbC5nZXRJdGVtKDEpIik7CkBAIC05MSw3
ICs5Miw4IEBACiAKICAgICBkZWJ1ZygiIik7CiAgICAgZGVidWcoIk1vdmUgaXRlbSBmcm9tIHRl
eHQzIHRvIHRleHQ0Iik7Ci0gICAgc2hvdWxkQmUoInRleHQ0LnguYmFzZVZhbC5pbml0aWFsaXpl
KHRleHQzLnguYmFzZVZhbC5nZXRJdGVtKDApKSIsICJpdGVtSW5Bbm90aGVyTGlzdCIpOworICAg
IHNob3VsZEJlKCJ0ZXh0NC54LmJhc2VWYWwuaW5pdGlhbGl6ZSh0ZXh0My54LmJhc2VWYWwuZ2V0
SXRlbSgwKSkiLCAidGV4dDQueC5iYXNlVmFsLmdldEl0ZW0oMCkiKTsKKyAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoInRleHQzLnguYmFzZVZhbC5yZW1vdmVJdGVtKDApLnRvU3RyaW5nKCkiLCAi
W29iamVjdCBTVkdMZW5ndGhdIik7CiAgICAgc2hvdWxkQmUoInRleHQ0LnguYmFzZVZhbC5nZXRJ
dGVtKDApLnZhbHVlIiwgIjUwIik7CiAgICAgc2hvdWxkVGhyb3coInRleHQzLnguYmFzZVZhbC5n
ZXRJdGVtKDApIik7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N2Zy9kb20vU1ZHTGVuZ3Ro
TGlzdC1pbnNlcnRJdGVtQmVmb3JlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N2Zy9kb20v
U1ZHTGVuZ3RoTGlzdC1pbnNlcnRJdGVtQmVmb3JlLWV4cGVjdGVkLnR4dAppbmRleCAxOTFmMzQ2
NGExZDQ4NGRmYjY1ZTkwMzJjODI2YzViOGY0YjJlODQ4Li5iYTgyNWJmMTc2NmFkZDYwY2U3OThm
ZGIzNzE3MjliMmM1MGM1ZWQ1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdmcvZG9tL1NWR0xl
bmd0aExpc3QtaW5zZXJ0SXRlbUJlZm9yZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
c3ZnL2RvbS9TVkdMZW5ndGhMaXN0LWluc2VydEl0ZW1CZWZvcmUtZXhwZWN0ZWQudHh0CkBAIC02
Miw3ICs2Miw4IEBAIFBBU1MgdGV4dDEueC5iYXNlVmFsLmdldEl0ZW0oNSkudmFsdWUgaXMgNTAK
IFBBU1MgdGV4dDEueC5iYXNlVmFsLmdldEl0ZW0oNikgdGhyZXcgZXhjZXB0aW9uIEluZGV4U2l6
ZUVycm9yOiBUaGUgaW5kZXggaXMgbm90IGluIHRoZSBhbGxvd2VkIHJhbmdlLi4KIAogSW5zZXJ0
IGl0ZW0gJ25ld0xlbmd0aDMnIGF0IHBvc2l0aW9uPTEsIGJldHdlZW4gJzEwMCcgYW5kICc1MDAn
LCByZW1vdmUgaXQgZnJvbSB0aGUgb2xkIHBvc2l0aW9uPTIgYWZ0ZXJ3YXJkcy4KLVBBU1MgdGV4
dDEueC5iYXNlVmFsLmluc2VydEl0ZW1CZWZvcmUobmV3TGVuZ3RoMywgMSkgaXMgbmV3TGVuZ3Ro
MworUEFTUyB0ZXh0MS54LmJhc2VWYWwuaW5zZXJ0SXRlbUJlZm9yZShuZXdMZW5ndGgzLCAxKSBp
cyB0ZXh0MS54LmJhc2VWYWwuZ2V0SXRlbSgxKQorUEFTUyB0ZXh0MS54LmJhc2VWYWwucmVtb3Zl
SXRlbSgzKS50b1N0cmluZygpIGlzICJbb2JqZWN0IFNWR0xlbmd0aF0iCiBQQVNTIHRleHQxLngu
YmFzZVZhbC5udW1iZXJPZkl0ZW1zIGlzIDYKIFBBU1MgdGV4dDEueC5iYXNlVmFsLmdldEl0ZW0o
MCkudmFsdWUgaXMgMTAwCiBQQVNTIHRleHQxLnguYmFzZVZhbC5nZXRJdGVtKDEpLnZhbHVlIGlz
IDE1MApAQCAtNzMsNyArNzQsOCBAQCBQQVNTIHRleHQxLnguYmFzZVZhbC5nZXRJdGVtKDUpLnZh
bHVlIGlzIDUwCiBQQVNTIHRleHQxLnguYmFzZVZhbC5nZXRJdGVtKDYpIHRocmV3IGV4Y2VwdGlv
biBJbmRleFNpemVFcnJvcjogVGhlIGluZGV4IGlzIG5vdCBpbiB0aGUgYWxsb3dlZCByYW5nZS4u
CiAKIEluc2VydCBpdGVtICduZXdMZW5ndGgzJyBhdCBwb3NpdGlvbj0wLCBiZWZvcmUgJzEwMCcs
IHJlbW92ZSBpdCBmcm9tIHRoZSBvbGQgcG9zaXRpb249NSBhZnRlcndhcmRzLgotUEFTUyB0ZXh0
MS54LmJhc2VWYWwuaW5zZXJ0SXRlbUJlZm9yZShuZXdMZW5ndGgxLCAwKSBpcyBuZXdMZW5ndGgx
CitQQVNTIHRleHQxLnguYmFzZVZhbC5pbnNlcnRJdGVtQmVmb3JlKG5ld0xlbmd0aDEsIDApIGlz
IHRleHQxLnguYmFzZVZhbC5nZXRJdGVtKDApCitQQVNTIHRleHQxLnguYmFzZVZhbC5yZW1vdmVJ
dGVtKDYpLnRvU3RyaW5nKCkgaXMgIltvYmplY3QgU1ZHTGVuZ3RoXSIKIFBBU1MgdGV4dDEueC5i
YXNlVmFsLm51bWJlck9mSXRlbXMgaXMgNgogUEFTUyB0ZXh0MS54LmJhc2VWYWwuZ2V0SXRlbSgw
KS52YWx1ZSBpcyA1MAogUEFTUyB0ZXh0MS54LmJhc2VWYWwuZ2V0SXRlbSgxKS52YWx1ZSBpcyAx
MDAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N2Zy9kb20vU1ZHTGVuZ3RoTGlzdC1pbnNlcnRJ
dGVtQmVmb3JlLnhodG1sIGIvTGF5b3V0VGVzdHMvc3ZnL2RvbS9TVkdMZW5ndGhMaXN0LWluc2Vy
dEl0ZW1CZWZvcmUueGh0bWwKaW5kZXggZTFkZmUxODhhNjhkZTBlODgzZjExNzJmM2M2NTg2M2Iw
NDhlMGExOS4uYWM2NzhlYTU5ZDhmM2VkMTM4ZjM1MmZhYWFmODQ4M2IwMGE0ZTQzYyAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvc3ZnL2RvbS9TVkdMZW5ndGhMaXN0LWluc2VydEl0ZW1CZWZvcmUu
eGh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3ZnL2RvbS9TVkdMZW5ndGhMaXN0LWluc2VydEl0ZW1C
ZWZvcmUueGh0bWwKQEAgLTk2LDExICs5NiwxMSBAQAogICAgIHNob3VsZEJlKCJ0ZXh0MS54LmJh
c2VWYWwuZ2V0SXRlbSg1KS52YWx1ZSIsICI1MCIpOwogICAgIHNob3VsZFRocm93KCJ0ZXh0MS54
LmJhc2VWYWwuZ2V0SXRlbSg2KSIpOwogCi0gICAgLy8gU3BlYzogSWYgbmV3SXRlbSBpcyBhbHJl
YWR5IGluIGEgbGlzdCwgaXQgaXMgcmVtb3ZlZCBmcm9tIGl0cyBwcmV2aW91cyBsaXN0IGJlZm9y
ZSBpdCBpcyBpbnNlcnRlZCBpbnRvIHRoaXMgbGlzdC4KLSAgICAvLyBTcGVjOiBJZiB0aGUgaXRl
bSBpcyBhbHJlYWR5IGluIHRoaXMgbGlzdCwgbm90ZSB0aGF0IHRoZSBpbmRleCBvZiB0aGUgaXRl
bSB0byBpbnNlcnQgYmVmb3JlIGlzIGJlZm9yZSB0aGUgcmVtb3ZhbCBvZiB0aGUgaXRlbS4gCisg
ICAgLy8gU3BlYzogSWYgbmV3SXRlbSBpcyBhbHJlYWR5IGluIGEgbGlzdCwgYSBjbG9uZSBvZiBu
ZXdJdGVtIGluc2VydGVkIGludG8gdGhpcyBsaXN0LgogICAgIGRlYnVnKCIiKTsKICAgICBkZWJ1
ZygiSW5zZXJ0IGl0ZW0gJ25ld0xlbmd0aDMnIGF0IHBvc2l0aW9uPTEsIGJldHdlZW4gJzEwMCcg
YW5kICc1MDAnLCByZW1vdmUgaXQgZnJvbSB0aGUgb2xkIHBvc2l0aW9uPTIgYWZ0ZXJ3YXJkcy4i
KTsKLSAgICBzaG91bGRCZSgidGV4dDEueC5iYXNlVmFsLmluc2VydEl0ZW1CZWZvcmUobmV3TGVu
Z3RoMywgMSkiLCAibmV3TGVuZ3RoMyIpOworICAgIHNob3VsZEJlKCJ0ZXh0MS54LmJhc2VWYWwu
aW5zZXJ0SXRlbUJlZm9yZShuZXdMZW5ndGgzLCAxKSIsICJ0ZXh0MS54LmJhc2VWYWwuZ2V0SXRl
bSgxKSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygidGV4dDEueC5iYXNlVmFsLnJlbW92
ZUl0ZW0oMykudG9TdHJpbmcoKSIsICJbb2JqZWN0IFNWR0xlbmd0aF0iKTsKICAgICBzaG91bGRC
ZSgidGV4dDEueC5iYXNlVmFsLm51bWJlck9mSXRlbXMiLCAiNiIpOwogICAgIHNob3VsZEJlKCJ0
ZXh0MS54LmJhc2VWYWwuZ2V0SXRlbSgwKS52YWx1ZSIsICIxMDAiKTsKICAgICBzaG91bGRCZSgi
dGV4dDEueC5iYXNlVmFsLmdldEl0ZW0oMSkudmFsdWUiLCAiMTUwIik7CkBAIC0xMTIsNyArMTEy
LDggQEAKIAogICAgIGRlYnVnKCIiKTsKICAgICBkZWJ1ZygiSW5zZXJ0IGl0ZW0gJ25ld0xlbmd0
aDMnIGF0IHBvc2l0aW9uPTAsIGJlZm9yZSAnMTAwJywgcmVtb3ZlIGl0IGZyb20gdGhlIG9sZCBw
b3NpdGlvbj01IGFmdGVyd2FyZHMuIik7Ci0gICAgc2hvdWxkQmUoInRleHQxLnguYmFzZVZhbC5p
bnNlcnRJdGVtQmVmb3JlKG5ld0xlbmd0aDEsIDApIiwgIm5ld0xlbmd0aDEiKTsKKyAgICBzaG91
bGRCZSgidGV4dDEueC5iYXNlVmFsLmluc2VydEl0ZW1CZWZvcmUobmV3TGVuZ3RoMSwgMCkiLCAi
dGV4dDEueC5iYXNlVmFsLmdldEl0ZW0oMCkiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmco
InRleHQxLnguYmFzZVZhbC5yZW1vdmVJdGVtKDYpLnRvU3RyaW5nKCkiLCAiW29iamVjdCBTVkdM
ZW5ndGhdIik7CiAgICAgc2hvdWxkQmUoInRleHQxLnguYmFzZVZhbC5udW1iZXJPZkl0ZW1zIiwg
IjYiKTsKICAgICBzaG91bGRCZSgidGV4dDEueC5iYXNlVmFsLmdldEl0ZW0oMCkudmFsdWUiLCAi
NTAiKTsKICAgICBzaG91bGRCZSgidGV4dDEueC5iYXNlVmFsLmdldEl0ZW0oMSkudmFsdWUiLCAi
MTAwIik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdmcvZG9tL1NWR0xlbmd0aExpc3QtcmVt
b3ZlSXRlbS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdmcvZG9tL1NWR0xlbmd0aExpc3Qt
cmVtb3ZlSXRlbS1leHBlY3RlZC50eHQKaW5kZXggZDQ1YTk5NDBhMzQzOTcwNmIwZGE1YzhiZjFl
YzFiMjgxNjdlNmRhYi4uZTZhNjlkOWEzODI1MDBiOGZlYjk3MDQ2M2Y3MTNjODMyZjQwMDFiZSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3ZnL2RvbS9TVkdMZW5ndGhMaXN0LXJlbW92ZUl0ZW0t
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N2Zy9kb20vU1ZHTGVuZ3RoTGlzdC1yZW1v
dmVJdGVtLWV4cGVjdGVkLnR4dApAQCAtMjcsNyArMjcsOCBAQCBQQVNTIHRleHQyLnguYmFzZVZh
bC5nZXRJdGVtKDIpLnZhbHVlIGlzIDEwMDAKIFBBU1MgdGV4dDIueC5iYXNlVmFsLmdldEl0ZW0o
MykgdGhyZXcgZXhjZXB0aW9uIEluZGV4U2l6ZUVycm9yOiBUaGUgaW5kZXggaXMgbm90IGluIHRo
ZSBhbGxvd2VkIHJhbmdlLi4KIAogQXBwZW5kIGZvdXJ0aCBpdGVtIHg9OTAwIHRvIHRoZSB0ZXh0
MSB4IGxpc3QKLVBBU1MgdGV4dDEueC5iYXNlVmFsLmFwcGVuZEl0ZW0odGV4dDEueC5iYXNlVmFs
LmdldEl0ZW0oMykpIGlzIHRleHQxLnguYmFzZVZhbC5nZXRJdGVtKDQpCitQQVNTIHRleHQxLngu
YmFzZVZhbC5hcHBlbmRJdGVtKHRleHQxLnguYmFzZVZhbC5nZXRJdGVtKDMpKSBpcyB0ZXh0MS54
LmJhc2VWYWwuZ2V0SXRlbSg1KQorUEFTUyB0ZXh0MS54LmJhc2VWYWwucmVtb3ZlSXRlbSgzKS50
b1N0cmluZygpIGlzICJbb2JqZWN0IFNWR0xlbmd0aF0iCiBQQVNTIHRleHQxLnguYmFzZVZhbC5u
dW1iZXJPZkl0ZW1zIGlzIDUKIFBBU1MgdGV4dDEueC5iYXNlVmFsLmdldEl0ZW0oMCkudmFsdWUg
aXMgNTAwCiBQQVNTIHRleHQxLnguYmFzZVZhbC5nZXRJdGVtKDEpLnZhbHVlIGlzIDUwCkBAIC0z
Nyw3ICszOCw4IEBAIFBBU1MgdGV4dDEueC5iYXNlVmFsLmdldEl0ZW0oNCkudmFsdWUgaXMgOTAw
CiBQQVNTIHRleHQxLnguYmFzZVZhbC5nZXRJdGVtKDUpIHRocmV3IGV4Y2VwdGlvbiBJbmRleFNp
emVFcnJvcjogVGhlIGluZGV4IGlzIG5vdCBpbiB0aGUgYWxsb3dlZCByYW5nZS4uCiAKIEFwcGVu
ZCBmaXJzdCBpdGVtIHg9NTAwIHRvIHRoZSB0ZXh0MSB4IGxpc3QKLVBBU1MgdGV4dDEueC5iYXNl
VmFsLmFwcGVuZEl0ZW0odGV4dDEueC5iYXNlVmFsLmdldEl0ZW0oMCkpIGlzIHRleHQxLnguYmFz
ZVZhbC5nZXRJdGVtKDQpCitQQVNTIHRleHQxLnguYmFzZVZhbC5hcHBlbmRJdGVtKHRleHQxLngu
YmFzZVZhbC5nZXRJdGVtKDApKSBpcyB0ZXh0MS54LmJhc2VWYWwuZ2V0SXRlbSg1KQorUEFTUyB0
ZXh0MS54LmJhc2VWYWwucmVtb3ZlSXRlbSgwKS50b1N0cmluZygpIGlzICJbb2JqZWN0IFNWR0xl
bmd0aF0iCiBQQVNTIHRleHQxLnguYmFzZVZhbC5udW1iZXJPZkl0ZW1zIGlzIDUKIFBBU1MgdGV4
dDEueC5iYXNlVmFsLmdldEl0ZW0oMCkudmFsdWUgaXMgNTAKIFBBU1MgdGV4dDEueC5iYXNlVmFs
LmdldEl0ZW0oMSkudmFsdWUgaXMgMTAwCkBAIC01OSw3ICs2MSw5IEBAIFBBU1MgdGV4dDEueC5i
YXNlVmFsLmdldEl0ZW0oNikgdGhyZXcgZXhjZXB0aW9uIEluZGV4U2l6ZUVycm9yOiBUaGUgaW5k
ZXggaXMgbm90CiAKIEFwcGVuZCB0aGlyZCBhbmQgZm91cnRoIGl0ZW0gb2YgdGhlIHRleHQxIHgg
bGlzdCB0byB0aGUgdGV4dDIgeCBsaXN0CiBQQVNTIHRleHQyLnguYmFzZVZhbC5hcHBlbmRJdGVt
KHRleHQxLnguYmFzZVZhbC5nZXRJdGVtKDIpKS52YWx1ZSBpcyAxMDAwCitQQVNTIHRleHQxLngu
YmFzZVZhbC5yZW1vdmVJdGVtKDIpLnRvU3RyaW5nKCkgaXMgIltvYmplY3QgU1ZHTGVuZ3RoXSIK
IFBBU1MgdGV4dDIueC5iYXNlVmFsLmFwcGVuZEl0ZW0odGV4dDEueC5iYXNlVmFsLmdldEl0ZW0o
MikpLnZhbHVlIGlzIDkwMAorUEFTUyB0ZXh0MS54LmJhc2VWYWwucmVtb3ZlSXRlbSgyKS50b1N0
cmluZygpIGlzICJbb2JqZWN0IFNWR0xlbmd0aF0iCiBQQVNTIHRleHQxLnguYmFzZVZhbC5udW1i
ZXJPZkl0ZW1zIGlzIDQKIFBBU1MgdGV4dDEueC5iYXNlVmFsLmdldEl0ZW0oMCkudmFsdWUgaXMg
NTAKIFBBU1MgdGV4dDEueC5iYXNlVmFsLmdldEl0ZW0oMSkudmFsdWUgaXMgMTAwCkBAIC03Nywx
MCArODEsMTQgQEAgUEFTUyBuZXdMZW5ndGgyLnZhbHVlIGlzIDE1MAogCiBTaHVmZmxlIGFyb3Vu
ZCBpdGVtcyBpbiB0ZXh0MSBhbmQgdGV4dDIgbGlzdCB1c2luZyBhcHBlbmRJdGVtLCB0byBnZXQg
eD01MCwxMDAsMTUwLC4uLiBpbiBib3RoIGxpc3RzCiBQQVNTIHRleHQxLnguYmFzZVZhbC5hcHBl
bmRJdGVtKHRleHQxLnguYmFzZVZhbC5nZXRJdGVtKDIpKS52YWx1ZSBpcyA1MDAKK1BBU1MgdGV4
dDEueC5iYXNlVmFsLnJlbW92ZUl0ZW0oMikudG9TdHJpbmcoKSBpcyAiW29iamVjdCBTVkdMZW5n
dGhdIgogUEFTUyB0ZXh0Mi54LmJhc2VWYWwuYXBwZW5kSXRlbShuZXdMZW5ndGgyKS52YWx1ZSBp
cyAxNTAKIFBBU1MgdGV4dDIueC5iYXNlVmFsLmFwcGVuZEl0ZW0odGV4dDIueC5iYXNlVmFsLmdl
dEl0ZW0oMikpLnZhbHVlIGlzIDEwMDAKK1BBU1MgdGV4dDIueC5iYXNlVmFsLnJlbW92ZUl0ZW0o
MikudG9TdHJpbmcoKSBpcyAiW29iamVjdCBTVkdMZW5ndGhdIgogUEFTUyB0ZXh0Mi54LmJhc2VW
YWwuYXBwZW5kSXRlbSh0ZXh0Mi54LmJhc2VWYWwuZ2V0SXRlbSgzKSkudmFsdWUgaXMgOTAwCitQ
QVNTIHRleHQyLnguYmFzZVZhbC5yZW1vdmVJdGVtKDMpLnRvU3RyaW5nKCkgaXMgIltvYmplY3Qg
U1ZHTGVuZ3RoXSIKIFBBU1MgdGV4dDIueC5iYXNlVmFsLmFwcGVuZEl0ZW0odGV4dDIueC5iYXNl
VmFsLmdldEl0ZW0oMikpLnZhbHVlIGlzIDEwMDAKK1BBU1MgdGV4dDIueC5iYXNlVmFsLnJlbW92
ZUl0ZW0oMikudG9TdHJpbmcoKSBpcyAiW29iamVjdCBTVkdMZW5ndGhdIgogUEFTUyB0ZXh0MS54
LmJhc2VWYWwubnVtYmVyT2ZJdGVtcyBpcyA0CiBQQVNTIHRleHQxLnguYmFzZVZhbC5nZXRJdGVt
KDApLnZhbHVlIGlzIDUwCiBQQVNTIHRleHQxLnguYmFzZVZhbC5nZXRJdGVtKDEpLnZhbHVlIGlz
IDEwMApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3ZnL2RvbS9TVkdMZW5ndGhMaXN0LXJlbW92
ZUl0ZW0ueGh0bWwgYi9MYXlvdXRUZXN0cy9zdmcvZG9tL1NWR0xlbmd0aExpc3QtcmVtb3ZlSXRl
bS54aHRtbAppbmRleCA0OWVjODAyYmVlNzNkZjYxNjEyMjI0YWFhYjExODVhYWNkYThlMTk1Li5l
YjU0Yjk1MTI1MDM5YjQ3YTY0MWE5NzA0MjU1NGE1Y2YzYjE1NzMwIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9zdmcvZG9tL1NWR0xlbmd0aExpc3QtcmVtb3ZlSXRlbS54aHRtbAorKysgYi9MYXlv
dXRUZXN0cy9zdmcvZG9tL1NWR0xlbmd0aExpc3QtcmVtb3ZlSXRlbS54aHRtbApAQCAtNDYsNyAr
NDYsOCBAQAogCiAgICAgZGVidWcoIiIpOwogICAgIGRlYnVnKCJBcHBlbmQgZm91cnRoIGl0ZW0g
eD05MDAgdG8gdGhlIHRleHQxIHggbGlzdCIpOwotICAgIHNob3VsZEJlKCJ0ZXh0MS54LmJhc2VW
YWwuYXBwZW5kSXRlbSh0ZXh0MS54LmJhc2VWYWwuZ2V0SXRlbSgzKSkiLCAidGV4dDEueC5iYXNl
VmFsLmdldEl0ZW0oNCkiKTsKKyAgICBzaG91bGRCZSgidGV4dDEueC5iYXNlVmFsLmFwcGVuZEl0
ZW0odGV4dDEueC5iYXNlVmFsLmdldEl0ZW0oMykpIiwgInRleHQxLnguYmFzZVZhbC5nZXRJdGVt
KDUpIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ0ZXh0MS54LmJhc2VWYWwucmVtb3Zl
SXRlbSgzKS50b1N0cmluZygpIiwgIltvYmplY3QgU1ZHTGVuZ3RoXSIpOwogICAgIHNob3VsZEJl
KCJ0ZXh0MS54LmJhc2VWYWwubnVtYmVyT2ZJdGVtcyIsICI1Iik7CiAgICAgc2hvdWxkQmUoInRl
eHQxLnguYmFzZVZhbC5nZXRJdGVtKDApLnZhbHVlIiwgIjUwMCIpOwogICAgIHNob3VsZEJlKCJ0
ZXh0MS54LmJhc2VWYWwuZ2V0SXRlbSgxKS52YWx1ZSIsICI1MCIpOwpAQCAtNTcsNyArNTgsOCBA
QAogCiAgICAgZGVidWcoIiIpOwogICAgIGRlYnVnKCJBcHBlbmQgZmlyc3QgaXRlbSB4PTUwMCB0
byB0aGUgdGV4dDEgeCBsaXN0Iik7Ci0gICAgc2hvdWxkQmUoInRleHQxLnguYmFzZVZhbC5hcHBl
bmRJdGVtKHRleHQxLnguYmFzZVZhbC5nZXRJdGVtKDApKSIsICJ0ZXh0MS54LmJhc2VWYWwuZ2V0
SXRlbSg0KSIpOworICAgIHNob3VsZEJlKCJ0ZXh0MS54LmJhc2VWYWwuYXBwZW5kSXRlbSh0ZXh0
MS54LmJhc2VWYWwuZ2V0SXRlbSgwKSkiLCAidGV4dDEueC5iYXNlVmFsLmdldEl0ZW0oNSkiKTsK
KyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInRleHQxLnguYmFzZVZhbC5yZW1vdmVJdGVtKDAp
LnRvU3RyaW5nKCkiLCAiW29iamVjdCBTVkdMZW5ndGhdIik7CiAgICAgc2hvdWxkQmUoInRleHQx
LnguYmFzZVZhbC5udW1iZXJPZkl0ZW1zIiwgIjUiKTsKICAgICBzaG91bGRCZSgidGV4dDEueC5i
YXNlVmFsLmdldEl0ZW0oMCkudmFsdWUiLCAiNTAiKTsKICAgICBzaG91bGRCZSgidGV4dDEueC5i
YXNlVmFsLmdldEl0ZW0oMSkudmFsdWUiLCAiMTAwIik7CkBAIC04MSw3ICs4Myw5IEBACiAgICAg
ZGVidWcoIiIpOwogICAgIGRlYnVnKCJBcHBlbmQgdGhpcmQgYW5kIGZvdXJ0aCBpdGVtIG9mIHRo
ZSB0ZXh0MSB4IGxpc3QgdG8gdGhlIHRleHQyIHggbGlzdCIpOwogICAgIHNob3VsZEJlKCJ0ZXh0
Mi54LmJhc2VWYWwuYXBwZW5kSXRlbSh0ZXh0MS54LmJhc2VWYWwuZ2V0SXRlbSgyKSkudmFsdWUi
LCAiMTAwMCIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygidGV4dDEueC5iYXNlVmFsLnJl
bW92ZUl0ZW0oMikudG9TdHJpbmcoKSIsICJbb2JqZWN0IFNWR0xlbmd0aF0iKTsKICAgICBzaG91
bGRCZSgidGV4dDIueC5iYXNlVmFsLmFwcGVuZEl0ZW0odGV4dDEueC5iYXNlVmFsLmdldEl0ZW0o
MikpLnZhbHVlIiwgIjkwMCIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygidGV4dDEueC5i
YXNlVmFsLnJlbW92ZUl0ZW0oMikudG9TdHJpbmcoKSIsICJbb2JqZWN0IFNWR0xlbmd0aF0iKTsK
ICAgICBzaG91bGRCZSgidGV4dDEueC5iYXNlVmFsLm51bWJlck9mSXRlbXMiLCAiNCIpOwogICAg
IHNob3VsZEJlKCJ0ZXh0MS54LmJhc2VWYWwuZ2V0SXRlbSgwKS52YWx1ZSIsICI1MCIpOwogICAg
IHNob3VsZEJlKCJ0ZXh0MS54LmJhc2VWYWwuZ2V0SXRlbSgxKS52YWx1ZSIsICIxMDAiKTsKQEAg
LTEwMywxMCArMTA3LDE0IEBACiAgICAgZGVidWcoIiIpOwogICAgIGRlYnVnKCJTaHVmZmxlIGFy
b3VuZCBpdGVtcyBpbiB0ZXh0MSBhbmQgdGV4dDIgbGlzdCB1c2luZyBhcHBlbmRJdGVtLCB0byBn
ZXQgeD01MCwxMDAsMTUwLC4uLiBpbiBib3RoIGxpc3RzIik7CiAgICAgc2hvdWxkQmUoInRleHQx
LnguYmFzZVZhbC5hcHBlbmRJdGVtKHRleHQxLnguYmFzZVZhbC5nZXRJdGVtKDIpKS52YWx1ZSIs
ICI1MDAiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInRleHQxLnguYmFzZVZhbC5yZW1v
dmVJdGVtKDIpLnRvU3RyaW5nKCkiLCAiW29iamVjdCBTVkdMZW5ndGhdIik7CiAgICAgc2hvdWxk
QmUoInRleHQyLnguYmFzZVZhbC5hcHBlbmRJdGVtKG5ld0xlbmd0aDIpLnZhbHVlIiwgIjE1MCIp
OwogICAgIHNob3VsZEJlKCJ0ZXh0Mi54LmJhc2VWYWwuYXBwZW5kSXRlbSh0ZXh0Mi54LmJhc2VW
YWwuZ2V0SXRlbSgyKSkudmFsdWUiLCAiMTAwMCIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
ZygidGV4dDIueC5iYXNlVmFsLnJlbW92ZUl0ZW0oMikudG9TdHJpbmcoKSIsICJbb2JqZWN0IFNW
R0xlbmd0aF0iKTsKICAgICBzaG91bGRCZSgidGV4dDIueC5iYXNlVmFsLmFwcGVuZEl0ZW0odGV4
dDIueC5iYXNlVmFsLmdldEl0ZW0oMykpLnZhbHVlIiwgIjkwMCIpOworICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygidGV4dDIueC5iYXNlVmFsLnJlbW92ZUl0ZW0oMykudG9TdHJpbmcoKSIsICJb
b2JqZWN0IFNWR0xlbmd0aF0iKTsKICAgICBzaG91bGRCZSgidGV4dDIueC5iYXNlVmFsLmFwcGVu
ZEl0ZW0odGV4dDIueC5iYXNlVmFsLmdldEl0ZW0oMikpLnZhbHVlIiwgIjEwMDAiKTsKKyAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoInRleHQyLnguYmFzZVZhbC5yZW1vdmVJdGVtKDIpLnRvU3Ry
aW5nKCkiLCAiW29iamVjdCBTVkdMZW5ndGhdIik7CiAgICAgc2hvdWxkQmUoInRleHQxLnguYmFz
ZVZhbC5udW1iZXJPZkl0ZW1zIiwgIjQiKTsKICAgICBzaG91bGRCZSgidGV4dDEueC5iYXNlVmFs
LmdldEl0ZW0oMCkudmFsdWUiLCAiNTAiKTsKICAgICBzaG91bGRCZSgidGV4dDEueC5iYXNlVmFs
LmdldEl0ZW0oMSkudmFsdWUiLCAiMTAwIik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdmcv
ZG9tL1NWR0xlbmd0aExpc3QtcmVwbGFjZUl0ZW0tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
c3ZnL2RvbS9TVkdMZW5ndGhMaXN0LXJlcGxhY2VJdGVtLWV4cGVjdGVkLnR4dAppbmRleCBiMTM4
OTE2N2ExOGFjNzUxNzkzNzViODkxYmFlZGFhMzVjNDQ5NjdhLi41YmE2MTAzMjE2MTJmOGRlNzEw
NWM4Yjc4Y2E5ZGNmNDJjNjZhNDMwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdmcvZG9tL1NW
R0xlbmd0aExpc3QtcmVwbGFjZUl0ZW0tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N2
Zy9kb20vU1ZHTGVuZ3RoTGlzdC1yZXBsYWNlSXRlbS1leHBlY3RlZC50eHQKQEAgLTQ2LDYgKzQ2
LDcgQEAgUEFTUyB0ZXh0Mi54LmJhc2VWYWwuZ2V0SXRlbSg0KSB0aHJldyBleGNlcHRpb24gSW5k
ZXhTaXplRXJyb3I6IFRoZSBpbmRleCBpcyBub3QKIAogUmVwbGFjZSB0aGUgZmlyc3QgaXRlbSBp
biB0ZXh0MiB4IGxpc3Qgd2l0aCB0aGUgdGhpcmQgaXRlbSBpbiB0aGUgbGlzdAogUEFTUyB0ZXh0
Mi54LmJhc2VWYWwucmVwbGFjZUl0ZW0odGV4dDIueC5iYXNlVmFsLmdldEl0ZW0oMiksIDApLnZh
bHVlIGlzIDUwCitQQVNTIHRleHQyLnguYmFzZVZhbC5yZW1vdmVJdGVtKDIpLnRvU3RyaW5nKCkg
aXMgIltvYmplY3QgU1ZHTGVuZ3RoXSIKIFBBU1MgdGV4dDIueC5iYXNlVmFsLm51bWJlck9mSXRl
bXMgaXMgMwogUEFTUyB0ZXh0Mi54LmJhc2VWYWwuZ2V0SXRlbSgwKS52YWx1ZSBpcyA1MAogUEFT
UyB0ZXh0Mi54LmJhc2VWYWwuZ2V0SXRlbSgxKS52YWx1ZSBpcyAxMDAKQEAgLTcwLDYgKzcxLDcg
QEAgUEFTUyB0ZXh0NC54LmJhc2VWYWwuZ2V0SXRlbSg0KSB0aHJldyBleGNlcHRpb24gSW5kZXhT
aXplRXJyb3I6IFRoZSBpbmRleCBpcyBub3QKIAogUmVwbGFjZSB0aGUgZmlyc3QgaXRlbSBpbiB0
ZXh0NCB4IGxpc3Qgd2l0aCB0aGUgc2Vjb25kIGl0ZW0gaW4gdGhlIHRleHQzIHggbGlzdAogUEFT
UyB0ZXh0NC54LmJhc2VWYWwucmVwbGFjZUl0ZW0odGV4dDMueC5iYXNlVmFsLmdldEl0ZW0oMSks
IDApLnZhbHVlIGlzIDUwCitQQVNTIHRleHQzLnguYmFzZVZhbC5yZW1vdmVJdGVtKDEpLnRvU3Ry
aW5nKCkgaXMgIltvYmplY3QgU1ZHTGVuZ3RoXSIKIFBBU1MgdGV4dDMueC5iYXNlVmFsLm51bWJl
ck9mSXRlbXMgaXMgNAogUEFTUyB0ZXh0My54LmJhc2VWYWwuZ2V0SXRlbSgwKS52YWx1ZSBpcyA1
MAogUEFTUyB0ZXh0My54LmJhc2VWYWwuZ2V0SXRlbSgxKS52YWx1ZSBpcyAxMDAKQEAgLTg1LDYg
Kzg3LDcgQEAgUEFTUyB0ZXh0NC54LmJhc2VWYWwuZ2V0SXRlbSg0KSB0aHJldyBleGNlcHRpb24g
SW5kZXhTaXplRXJyb3I6IFRoZSBpbmRleCBpcyBub3QKIAogUmVwbGFjZSB0aGUgc2Vjb25kIGl0
ZW0gaW4gdGV4dDQgeCBsaXN0IHdpdGggdGhlIHNlY29uZCBpdGVtIGluIHRoZSB0ZXh0NCB4IGxp
c3QKIFBBU1MgdGV4dDQueC5iYXNlVmFsLnJlcGxhY2VJdGVtKHRleHQzLnguYmFzZVZhbC5nZXRJ
dGVtKDIpLCAxKS52YWx1ZSBpcyAxMDAKK1BBU1MgdGV4dDMueC5iYXNlVmFsLnJlbW92ZUl0ZW0o
MikudG9TdHJpbmcoKSBpcyAiW29iamVjdCBTVkdMZW5ndGhdIgogUEFTUyB0ZXh0NC54LmJhc2VW
YWwubnVtYmVyT2ZJdGVtcyBpcyA0CiBQQVNTIHRleHQ0LnguYmFzZVZhbC5nZXRJdGVtKDApLnZh
bHVlIGlzIDUwCiBQQVNTIHRleHQ0LnguYmFzZVZhbC5nZXRJdGVtKDEpLnZhbHVlIGlzIDEwMApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3ZnL2RvbS9TVkdMZW5ndGhMaXN0LXJlcGxhY2VJdGVt
LnhodG1sIGIvTGF5b3V0VGVzdHMvc3ZnL2RvbS9TVkdMZW5ndGhMaXN0LXJlcGxhY2VJdGVtLnho
dG1sCmluZGV4IGI2ODI0YTRjOWFhNzE2NTk0ODRkZjA2ZDhhNWU4ZmE5ODJiMjcxMWMuLmNiNzRk
NDNiMTU5YTY1Y2NjMjdkNjIwMGQxMTE3NjJhZGY1OTZlMjEgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3N2Zy9kb20vU1ZHTGVuZ3RoTGlzdC1yZXBsYWNlSXRlbS54aHRtbAorKysgYi9MYXlvdXRU
ZXN0cy9zdmcvZG9tL1NWR0xlbmd0aExpc3QtcmVwbGFjZUl0ZW0ueGh0bWwKQEAgLTc1LDYgKzc1
LDcgQEAKICAgICBkZWJ1ZygiIik7CiAgICAgZGVidWcoIlJlcGxhY2UgdGhlIGZpcnN0IGl0ZW0g
aW4gdGV4dDIgeCBsaXN0IHdpdGggdGhlIHRoaXJkIGl0ZW0gaW4gdGhlIGxpc3QiKTsKICAgICBz
aG91bGRCZSgidGV4dDIueC5iYXNlVmFsLnJlcGxhY2VJdGVtKHRleHQyLnguYmFzZVZhbC5nZXRJ
dGVtKDIpLCAwKS52YWx1ZSIsICI1MCIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygidGV4
dDIueC5iYXNlVmFsLnJlbW92ZUl0ZW0oMikudG9TdHJpbmcoKSIsICJbb2JqZWN0IFNWR0xlbmd0
aF0iKTsKICAgICBzaG91bGRCZSgidGV4dDIueC5iYXNlVmFsLm51bWJlck9mSXRlbXMiLCAiMyIp
OwogICAgIHNob3VsZEJlKCJ0ZXh0Mi54LmJhc2VWYWwuZ2V0SXRlbSgwKS52YWx1ZSIsICI1MCIp
OwogICAgIHNob3VsZEJlKCJ0ZXh0Mi54LmJhc2VWYWwuZ2V0SXRlbSgxKS52YWx1ZSIsICIxMDAi
KTsKQEAgLTEwMiw2ICsxMDMsNyBAQAogICAgIGRlYnVnKCIiKTsKICAgICBkZWJ1ZygiUmVwbGFj
ZSB0aGUgZmlyc3QgaXRlbSBpbiB0ZXh0NCB4IGxpc3Qgd2l0aCB0aGUgc2Vjb25kIGl0ZW0gaW4g
dGhlIHRleHQzIHggbGlzdCIpOwogICAgIHNob3VsZEJlKCJ0ZXh0NC54LmJhc2VWYWwucmVwbGFj
ZUl0ZW0odGV4dDMueC5iYXNlVmFsLmdldEl0ZW0oMSksIDApLnZhbHVlIiwgIjUwIik7CisgICAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ0ZXh0My54LmJhc2VWYWwucmVtb3ZlSXRlbSgxKS50b1N0
cmluZygpIiwgIltvYmplY3QgU1ZHTGVuZ3RoXSIpOwogICAgIHNob3VsZEJlKCJ0ZXh0My54LmJh
c2VWYWwubnVtYmVyT2ZJdGVtcyIsICI0Iik7CiAgICAgc2hvdWxkQmUoInRleHQzLnguYmFzZVZh
bC5nZXRJdGVtKDApLnZhbHVlIiwgIjUwIik7CiAgICAgc2hvdWxkQmUoInRleHQzLnguYmFzZVZh
bC5nZXRJdGVtKDEpLnZhbHVlIiwgIjEwMCIpOwpAQCAtMTE4LDYgKzEyMCw3IEBACiAgICAgZGVi
dWcoIiIpOwogICAgIGRlYnVnKCJSZXBsYWNlIHRoZSBzZWNvbmQgaXRlbSBpbiB0ZXh0NCB4IGxp
c3Qgd2l0aCB0aGUgc2Vjb25kIGl0ZW0gaW4gdGhlIHRleHQ0IHggbGlzdCIpOwogICAgIHNob3Vs
ZEJlKCJ0ZXh0NC54LmJhc2VWYWwucmVwbGFjZUl0ZW0odGV4dDMueC5iYXNlVmFsLmdldEl0ZW0o
MiksIDEpLnZhbHVlIiwgIjEwMCIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygidGV4dDMu
eC5iYXNlVmFsLnJlbW92ZUl0ZW0oMikudG9TdHJpbmcoKSIsICJbb2JqZWN0IFNWR0xlbmd0aF0i
KTsKICAgICBzaG91bGRCZSgidGV4dDQueC5iYXNlVmFsLm51bWJlck9mSXRlbXMiLCAiNCIpOwog
ICAgIHNob3VsZEJlKCJ0ZXh0NC54LmJhc2VWYWwuZ2V0SXRlbSgwKS52YWx1ZSIsICI1MCIpOwog
ICAgIHNob3VsZEJlKCJ0ZXh0NC54LmJhc2VWYWwuZ2V0SXRlbSgxKS52YWx1ZSIsICIxMDAiKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>