<?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>124822</bug_id>
          
          <creation_ts>2013-11-24 18:12:18 -0800</creation_ts>
          <short_desc>ImageBuffer::create should return a unique_ptr instead of OwnPtr.</short_desc>
          <delta_ts>2013-11-26 14:55:46 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Images</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>124325</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brian Burg">burg</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>d-r</cc>
    
    <cc>eflews.bot</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>fmalita</cc>
    
    <cc>glenn</cc>
    
    <cc>gtk-ews</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>luiz</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>noam</cc>
    
    <cc>pdr</cc>
    
    <cc>philn</cc>
    
    <cc>rego+ews</cc>
    
    <cc>roger_fong</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>953881</commentid>
    <comment_count>0</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2013-11-24 18:12:18 -0800</bug_when>
    <thetext>Suggested by darin in review of: https://bugs.webkit.org/show_bug.cgi?id=124325</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>953897</commentid>
    <comment_count>1</comment_count>
      <attachid>217772</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2013-11-24 22:22:35 -0800</bug_when>
    <thetext>Created attachment 217772
v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>953898</commentid>
    <comment_count>2</comment_count>
      <attachid>217772</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-11-24 22:29:15 -0800</bug_when>
    <thetext>Comment on attachment 217772
v1

Attachment 217772 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/35168398</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>953899</commentid>
    <comment_count>3</comment_count>
      <attachid>217772</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-11-24 22:33:49 -0800</bug_when>
    <thetext>Comment on attachment 217772
v1

Attachment 217772 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/35318405</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>953900</commentid>
    <comment_count>4</comment_count>
      <attachid>217773</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2013-11-24 22:36:47 -0800</bug_when>
    <thetext>Created attachment 217773
v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>953901</commentid>
    <comment_count>5</comment_count>
      <attachid>217773</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-11-24 22:41:23 -0800</bug_when>
    <thetext>Comment on attachment 217773
v2

Attachment 217773 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/36148162</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>953902</commentid>
    <comment_count>6</comment_count>
      <attachid>217773</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-11-24 22:43:17 -0800</bug_when>
    <thetext>Comment on attachment 217773
v2

Attachment 217773 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/35188428</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>953904</commentid>
    <comment_count>7</comment_count>
      <attachid>217775</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2013-11-24 22:57:55 -0800</bug_when>
    <thetext>Created attachment 217775
v3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>953905</commentid>
    <comment_count>8</comment_count>
      <attachid>217775</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-11-24 23:02:15 -0800</bug_when>
    <thetext>Comment on attachment 217775
v3

Attachment 217775 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/35358389</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>953906</commentid>
    <comment_count>9</comment_count>
      <attachid>217775</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-11-24 23:03:59 -0800</bug_when>
    <thetext>Comment on attachment 217775
v3

Attachment 217775 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/35318411</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>953914</commentid>
    <comment_count>10</comment_count>
      <attachid>217775</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2013-11-25 01:07:26 -0800</bug_when>
    <thetext>Comment on attachment 217775
v3

Attachment 217775 did not pass gtk-ews (gtk):
Output: http://webkit-queues.appspot.com/results/35328394</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>953997</commentid>
    <comment_count>11</comment_count>
      <attachid>217805</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2013-11-25 07:21:11 -0800</bug_when>
    <thetext>Created attachment 217805
v3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>954003</commentid>
    <comment_count>12</comment_count>
      <attachid>217805</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-11-25 07:40:18 -0800</bug_when>
    <thetext>Comment on attachment 217805
v3

Attachment 217805 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/36468068</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>954006</commentid>
    <comment_count>13</comment_count>
      <attachid>217805</attachid>
    <who name="Sergio Correia (qrwteyrutiyoup)">sergio</who>
    <bug_when>2013-11-25 07:45:46 -0800</bug_when>
    <thetext>Comment on attachment 217805
v3

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

&gt; Source/WebCore/platform/graphics/ImageBuffer.h:84
&gt; +            std::unique_ptr&lt;ImageBuffer&gt; buffer(new ImageBuffer(size, resolutionScale, colorSpace, renderingMode, success));

It might be better to use std::make_unique here: 
auto buffer = std::make_unique&lt;ImageBuffer&gt;(size, resolutionScale, colorSpace, renderingMode, success);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>954009</commentid>
    <comment_count>14</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2013-11-25 08:05:05 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 217805 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=217805&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/ImageBuffer.h:84
&gt; &gt; +            std::unique_ptr&lt;ImageBuffer&gt; buffer(new ImageBuffer(size, resolutionScale, colorSpace, renderingMode, success));
&gt; 
&gt; It might be better to use std::make_unique here: 
&gt; auto buffer = std::make_unique&lt;ImageBuffer&gt;(size, resolutionScale, colorSpace, renderingMode, success);

Ah, true. Thanks for pointing it out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>954011</commentid>
    <comment_count>15</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2013-11-25 08:07:03 -0800</bug_when>
    <thetext>Not sure why WK2 EFL bot is hitting an ICE, or why the preflight test is crashy. :-/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>954013</commentid>
    <comment_count>16</comment_count>
    <who name="Sergio Correia (qrwteyrutiyoup)">sergio</who>
    <bug_when>2013-11-25 08:13:54 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; Not sure why WK2 EFL bot is hitting an ICE, or why the preflight test is crashy. :-/

By the looks of the error message, looks like it hit an OOM condition, which in general isn&apos;t related to the patch being tested. Just to make your life harder :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>954342</commentid>
    <comment_count>17</comment_count>
      <attachid>217805</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-11-26 14:19:05 -0800</bug_when>
    <thetext>Comment on attachment 217805
v3

r=me.
EFL EWS has been ICE&apos;ing randomly for ages, nothing to do with your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>954351</commentid>
    <comment_count>18</comment_count>
      <attachid>217805</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-11-26 14:55:42 -0800</bug_when>
    <thetext>Comment on attachment 217805
v3

Clearing flags on attachment: 217805

Committed r159791: &lt;http://trac.webkit.org/changeset/159791&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>954352</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-11-26 14:55:46 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217772</attachid>
            <date>2013-11-24 22:22:35 -0800</date>
            <delta_ts>2013-11-24 22:36:42 -0800</delta_ts>
            <desc>v1</desc>
            <filename>bug-124822-20131124222234.patch</filename>
            <type>text/plain</type>
            <size>53218</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU5NzMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDU1OWU4MWZhZWZiMjRi
MzQwZWRjMTM2OWNiMzVlZDhmZTliNzVjOC4uNDk2ZGIxOGFlNmY4MDhmODY5MDk0ZmQwZGYxMjI1
OGI5NTEyOTgxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk4IEBACisyMDEzLTExLTI0ICBCcmlh
biBKLiBCdXJnICA8YnVyZ0Bjcy53YXNoaW5ndG9uLmVkdT4KKworICAgICAgICBJbWFnZUJ1ZmZl
cjo6Y3JlYXRlIHNob3VsZCByZXR1cm4gYSBzdGQ6OnVuaXF1ZV9wdHIgaW5zdGVhZCBvZiBPd25Q
dHIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQ4
MjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBs
YWNlIGFsbCB1c2VzIG9mIE93blB0cjxJbWFnZUJ1ZmZlcj4gYW5kIFBhc3NPd25QdHI8SW1hZ2VC
dWZmZXI+IHdpdGgKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPi4gUmVwbGFj
ZSBjYWxscyB0byBPd25QdHI6OmNsZWFyKCkgYW5kCisgICAgICAgIE93blB0cjo6cmVsZWFzZSgp
IHdpdGggcmVzZXQoKSBhbmQgc3RkOjptb3ZlKCkuIFJlbW92ZSB1bm5lY2Vzc2FyeSBpbmNsdWRl
cy4KKworICAgICAgICBObyBuZXcgdGVzdHMuIFRoaXMgaXMgYSBtZWNoYW5pY2FsIHJlZmFjdG9y
aW5nLgorCisgICAgICAgICogY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTRmlsdGVySW1hZ2VWYWx1ZTo6aW1hZ2UpOgorICAgICAgICAqIGh0bWwvSFRN
TENhbnZhc0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6
OnNldFN1cmZhY2VTaXplKToKKyAgICAgICAgKiBodG1sL0hUTUxDYW52YXNFbGVtZW50Lmg6Cisg
ICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Y3JlYXRlQ29tcG9zaXRpbmdC
dWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpmdWxs
Q2FudmFzQ29tcG9zaXRlZERyYXdJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQ6OmZ1bGxDYW52YXNDb21wb3NpdGVkRmlsbCk6CisgICAgICAgIChXZWJD
b3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdUZXh0SW50ZXJuYWwpOgorICAgICAg
ICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oOgorICAgICAgICAqIGh0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OkxSVUltYWdlQnVmZmVyQ2FjaGU6OkxSVUltYWdlQnVmZmVy
Q2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpMUlVJbWFn
ZUJ1ZmZlckNhY2hlOjppbWFnZUJ1ZmZlcik6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0Lmg6CisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxl
bWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFp
bmVyRWxlbWVudDo6Y3JlYXRlVGV4dFRyYWNrUmVwcmVzZW50YXRpb25JbWFnZSk6CisgICAgICAg
ICogcGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzbmFwc2hv
dEZyYW1lUmVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTo6ZHJhd1BhdHRlcm4pOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0OjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZUJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29t
cGF0aWJsZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpjcmVhdGUpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6
OnB1dEJ5dGVBcnJheSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1l
bnRJbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZFVGlsZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5oOgorICAgICAgICAoV2Vi
Q29yZTo6RmlsdGVyOjpzZXRTb3VyY2VJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZm
ZWN0OjpjbGVhclJlc3VsdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
aWx0ZXJFZmZlY3QuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94OjpwYWludERlY29yYXRpb24pOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZCk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGhlbWVNYWM6OnBhaW50UHJvZ3Jlc3NCYXIpOgorICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMv
U2hhcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcGU6OmNyZWF0ZVNoYXBlKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclNWR0ltYWdlOjppbnZhbGlkYXRlQnVmZmVyZWRGb3JlZ3JvdW5kKToKKyAgICAgICAg
KiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U1ZHUmVzb3VyY2VDbGlwcGVyOjphcHBseUNsaXBwaW5nVG9Db250ZXh0KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5oOgorICAgICAgICAqIHJlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmFwcGx5UmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OnBvc3RBcHBseVJlc291cmNlKToKKyAgICAgICAg
KiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmg6CisgICAgICAgICogcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcDogUmVtb3ZlIG1ldGhvZCBw
YXJhbWV0ZXIgd3JhcHBpbmcvaW5kZW50YXRpb24uCisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVN
YXNrQW5kU3dhcENvbnRleHRGb3JUZXh0R3JhZGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6Y2xp
cFRvVGV4dE1hc2spOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVu
dDo6YXBwbHlSZXNvdXJjZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZUdyYWRpZW50Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZU1hc2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6
YXBwbHlSZXNvdXJjZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZU1hc2tlci5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0
ZXJuLmNwcDogUmVtb3ZlIG1ldGhvZCBwYXJhbWV0ZXIgd3JhcHBpbmcvaW5kZW50YXRpb24uCisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm46OmJ1aWxkUGF0dGVybik6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm46OmNyZWF0ZVRpbGVJ
bWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4u
aDogUmVtb3ZlIG1ldGhvZCBwYXJhbWV0ZXIgd3JhcHBpbmcvaW5kZW50YXRpb24uCisgICAgICAg
ICogcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyRm9yUGF0dGVybik6
CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJpbmdDb250ZXh0OjpjbGlwVG9JbWFnZUJ1ZmZl
cik6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJpbmdDb250ZXh0OjpidWZmZXJGb3JlZ3Jv
dW5kKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuaDoKKyAg
ICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
SW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0ltYWdlOjpkcmF3UGF0dGVybkZvckNvbnRhaW5lcik6CisKIDIwMTMtMTEtMjMgIFhhYmllciBS
b2RyaWd1ZXogQ2FsdmFyICA8Y2FsdmFyaXNAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1N0cmVh
bWVyXSBSZW1vdmUgMC4xMCBjb2RlcGF0aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlcklt
YWdlVmFsdWUuY3BwCmluZGV4IGY3NDk1ZDk3MzM5MWFjOWY1ZGVlNjVkZTYzNzJiMDgzYTQ5NTNl
YjEuLmYyMTdhOGE2OTIzYWVhOTJkZWZhYjQ4NWRmNzY4MjZiOGJiOWFkNDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHAKQEAgLTExMywxMyArMTEzLDEzIEBA
IFBhc3NSZWZQdHI8SW1hZ2U+IENTU0ZpbHRlckltYWdlVmFsdWU6OmltYWdlKFJlbmRlckVsZW1l
bnQqIHJlbmRlcmVyLCBjb25zdCBJbnRTCiAgICAgICAgIHJldHVybiBJbWFnZTo6bnVsbEltYWdl
KCk7CiAKICAgICAvLyBUcmFuc2Zvcm0gSW1hZ2UgaW50byBJbWFnZUJ1ZmZlci4KLSAgICBPd25Q
dHI8SW1hZ2VCdWZmZXI+IHRleHR1cmUgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUpOworICAg
IHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gdGV4dHVyZSA9IEltYWdlQnVmZmVyOjpjcmVh
dGUoc2l6ZSk7CiAgICAgaWYgKCF0ZXh0dXJlKQogICAgICAgICByZXR1cm4gSW1hZ2U6Om51bGxJ
bWFnZSgpOwogICAgIHRleHR1cmUtPmNvbnRleHQoKS0+ZHJhd0ltYWdlKGltYWdlLCBDb2xvclNw
YWNlRGV2aWNlUkdCLCBJbnRQb2ludCgpKTsKIAogICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3RSZW5k
ZXJlcj4gZmlsdGVyUmVuZGVyZXIgPSBGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6Y3JlYXRlKCk7Ci0g
ICAgZmlsdGVyUmVuZGVyZXItPnNldFNvdXJjZUltYWdlKHRleHR1cmUucmVsZWFzZSgpKTsKKyAg
ICBmaWx0ZXJSZW5kZXJlci0+c2V0U291cmNlSW1hZ2Uoc3RkOjptb3ZlKHRleHR1cmUpKTsKICAg
ICBmaWx0ZXJSZW5kZXJlci0+c2V0U291cmNlSW1hZ2VSZWN0KEZsb2F0UmVjdChGbG9hdFBvaW50
KCksIHNpemUpKTsKICAgICBmaWx0ZXJSZW5kZXJlci0+c2V0RmlsdGVyUmVnaW9uKEZsb2F0UmVj
dChGbG9hdFBvaW50KCksIHNpemUpKTsKICAgICBpZiAoIWZpbHRlclJlbmRlcmVyLT5idWlsZChy
ZW5kZXJlciwgbV9maWx0ZXJPcGVyYXRpb25zLCBGaWx0ZXJGdW5jdGlvbikpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCmluZGV4IGVkY2VjNjQzYWRmMjBiYTQxZmZk
ZTlmNzA0ZGRjODU1NTU0MzIwYzcuLjlmOGFjZWM5NTNjNGRmNmNiMjUyYjA3NzhjODIwMGU3Mzdh
YTU0MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCkBAIC00
NDcsNyArNDQ3LDcgQEAgdm9pZCBIVE1MQ2FudmFzRWxlbWVudDo6c2V0U3VyZmFjZVNpemUoY29u
c3QgSW50U2l6ZSYgc2l6ZSkKICAgICBtX3NpemUgPSBzaXplOwogICAgIG1faGFzQ3JlYXRlZElt
YWdlQnVmZmVyID0gZmFsc2U7CiAgICAgbV9jb250ZXh0U3RhdGVTYXZlci5jbGVhcigpOwotICAg
IG1faW1hZ2VCdWZmZXIuY2xlYXIoKTsKKyAgICBtX2ltYWdlQnVmZmVyLnJlc2V0KCk7CiAgICAg
Y2xlYXJDb3BpZWRJbWFnZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxDYW52YXNFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVt
ZW50LmgKaW5kZXggNjU5M2I1MWNlOGE0NWY0ODFkNWZmZWQxMjA4OTMzZDgwYzQ2Y2Q2NC4uYzQy
MWFlZWMwOTk5MWE2NTc5ZjY1ZmZkNDg4YmM1NDk5Zjk1MjVhMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTENhbnZhc0VsZW1lbnQuaApAQCAtMTc5LDcgKzE3OSw3IEBAIHByaXZhdGU6CiAgICAg
Ly8gbV9jcmVhdGVkSW1hZ2VCdWZmZXIgbWVhbnMgd2UgdHJpZWQgdG8gbWFsbG9jIHRoZSBidWZm
ZXIuICBXZSBkaWRuJ3QgbmVjZXNzYXJpbHkgZ2V0IGl0LgogICAgIG11dGFibGUgYm9vbCBtX2hh
c0NyZWF0ZWRJbWFnZUJ1ZmZlcjsKICAgICBtdXRhYmxlIGJvb2wgbV9kaWRDbGVhckltYWdlQnVm
ZmVyOwotICAgIG11dGFibGUgT3duUHRyPEltYWdlQnVmZmVyPiBtX2ltYWdlQnVmZmVyOworICAg
IG11dGFibGUgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBtX2ltYWdlQnVmZmVyOwogICAg
IG11dGFibGUgT3duUHRyPEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXI+IG1fY29udGV4dFN0YXRl
U2F2ZXI7CiAgICAgCiAgICAgbXV0YWJsZSBSZWZQdHI8SW1hZ2U+IG1fcHJlc2VudGVkSW1hZ2U7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJELmNwcAppbmRleCA3ODkwZWI4YWJhZDc4MzY1YzNkNzM3ZTdhMDVhODJmOGE3NmQ2
NTVhLi41ZGVhM2NhYzNiMmUxZmExNTU5NjdmMzQwOGRkM2JhZjNiYjVhNmFiIDEwMDc1NQotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RC5jcHAKQEAgLTE1NDQsNyArMTU0NCw3IEBAIHRlbXBsYXRlPGNsYXNzIFQ+IEludFJlY3QgQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEOjpjYWxjdWxhdGVDb21wb3NpdGluZ0J1ZmZlclJlCiAgICAg
cmV0dXJuIGJ1ZmZlclJlY3Q7CiB9CiAKLU93blB0cjxJbWFnZUJ1ZmZlcj4gQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEOjpjcmVhdGVDb21wb3NpdGluZ0J1ZmZlcihjb25zdCBJbnRSZWN0JiBidWZm
ZXJSZWN0KQorc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQ6OmNyZWF0ZUNvbXBvc2l0aW5nQnVmZmVyKGNvbnN0IEludFJlY3QmIGJ1ZmZlclJlY3Qp
CiB7CiAgICAgUmVuZGVyaW5nTW9kZSByZW5kZXJNb2RlID0gaXNBY2NlbGVyYXRlZCgpID8gQWNj
ZWxlcmF0ZWQgOiBVbmFjY2VsZXJhdGVkOwogICAgIHJldHVybiBJbWFnZUJ1ZmZlcjo6Y3JlYXRl
KGJ1ZmZlclJlY3Quc2l6ZSgpLCAxLCBDb2xvclNwYWNlRGV2aWNlUkdCLCByZW5kZXJNb2RlKTsK
QEAgLTE1OTMsNyArMTU5Myw3IEBAIHRlbXBsYXRlPGNsYXNzIFQ+IHZvaWQgIENhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRDo6ZnVsbENhbnZhc0NvbXBvc2l0ZWREcmF3SW1hZ2UoCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IGJ1ZmZlciA9IGNyZWF0ZUNv
bXBvc2l0aW5nQnVmZmVyKGJ1ZmZlclJlY3QpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1
ZmZlcj4gYnVmZmVyID0gY3JlYXRlQ29tcG9zaXRpbmdCdWZmZXIoYnVmZmVyUmVjdCk7CiAgICAg
aWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTYyMyw3ICsxNjIzLDcgQEAgdGVt
cGxhdGU8Y2xhc3MgVD4gdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZ1bGxDYW52YXND
b21wb3NpdGVkRmlsbChjb25zdAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgT3duUHRy
PEltYWdlQnVmZmVyPiBidWZmZXIgPSBjcmVhdGVDb21wb3NpdGluZ0J1ZmZlcihidWZmZXJSZWN0
KTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGJ1ZmZlciA9IGNyZWF0ZUNvbXBv
c2l0aW5nQnVmZmVyKGJ1ZmZlclJlY3QpOwogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1
cm47CiAKQEAgLTIyMzQsNyArMjIzNCw3IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
OjpkcmF3VGV4dEludGVybmFsKGNvbnN0IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxvCiAgICAg
aWYgKGRyYXdTdHlsZS5jYW52YXNHcmFkaWVudCgpIHx8IGRyYXdTdHlsZS5jYW52YXNQYXR0ZXJu
KCkpIHsKICAgICAgICAgSW50UmVjdCBtYXNrUmVjdCA9IGVuY2xvc2luZ0ludFJlY3QodGV4dFJl
Y3QpOwogCi0gICAgICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gbWFza0ltYWdlID0gYy0+Y3JlYXRl
Q29tcGF0aWJsZUJ1ZmZlcihtYXNrUmVjdC5zaXplKCkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9w
dHI8SW1hZ2VCdWZmZXI+IG1hc2tJbWFnZSA9IGMtPmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIobWFz
a1JlY3Quc2l6ZSgpKTsKIAogICAgICAgICBHcmFwaGljc0NvbnRleHQqIG1hc2tJbWFnZUNvbnRl
eHQgPSBtYXNrSW1hZ2UtPmNvbnRleHQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaAppbmRleCBkMTY3YTdkODcxMTMw
OTcwZTJlOWVmMzYxZDViNDAxZDVkYjRkZWNkLi45MjQ4NWE5ZTAwZGI1NTg5MmE1Mjk5NzgyMTg0
ODA5ZTg0ZTk5NTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9D
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaApAQCAtMzEyLDcgKzMxMiw3IEBAIHByaXZhdGU6CiAg
ICAgYm9vbCByZWN0Q29udGFpbnNDYW52YXMoY29uc3QgRmxvYXRSZWN0JikgY29uc3Q7CiAKICAg
ICB0ZW1wbGF0ZTxjbGFzcyBUPiBJbnRSZWN0IGNhbGN1bGF0ZUNvbXBvc2l0aW5nQnVmZmVyUmVj
dChjb25zdCBUJiwgSW50U2l6ZSopOwotICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlQ29t
cG9zaXRpbmdCdWZmZXIoY29uc3QgSW50UmVjdCYpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFn
ZUJ1ZmZlcj4gY3JlYXRlQ29tcG9zaXRpbmdCdWZmZXIoY29uc3QgSW50UmVjdCYpOwogICAgIHZv
aWQgY29tcG9zaXRlQnVmZmVyKEltYWdlQnVmZmVyKiwgY29uc3QgSW50UmVjdCYsIENvbXBvc2l0
ZU9wZXJhdG9yKTsKIAogICAgIHZvaWQgaW5mbGF0ZVN0cm9rZVJlY3QoRmxvYXRSZWN0JikgY29u
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmlu
Z0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdD
b250ZXh0LmNwcAppbmRleCA3NDQyYTU0NWJjZTQ3OWMxNDQxYTM4ZGY0OGFhYjI1ODJlY2Y4ZjE3
Li5mOGVjMjE5NzNkMTg2NjQ5MDQ2N2NmZjQ5MTAwZjE2ZDNmZTVhNzZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAg
LTU5MzEsNyArNTkzMSw3IEBAIFN0cmluZyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmVuc3VyZU5v
dE51bGwoY29uc3QgU3RyaW5nJiB0ZXh0KSBjb25zdAogfQogCiBXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OkxSVUltYWdlQnVmZmVyQ2FjaGU6OkxSVUltYWdlQnVmZmVyQ2FjaGUoaW50IGNhcGFjaXR5
KQotICAgIDogbV9idWZmZXJzKHN0ZDo6bWFrZV91bmlxdWU8T3duUHRyPEltYWdlQnVmZmVyPltd
PihjYXBhY2l0eSkpCisgICAgOiBtX2J1ZmZlcnMoc3RkOjptYWtlX3VuaXF1ZTxzdGQ6OnVuaXF1
ZV9wdHI8SW1hZ2VCdWZmZXI+W10+KGNhcGFjaXR5KSkKICAgICAsIG1fY2FwYWNpdHkoY2FwYWNp
dHkpCiB7CiB9CkBAIC01OTQ5LDExICs1OTQ5LDExIEBAIEltYWdlQnVmZmVyKiBXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OkxSVUltYWdlQnVmZmVyQ2FjaGU6OmltYWdlQnVmZmVyKGNvbnN0IEludFNp
CiAgICAgICAgIHJldHVybiBidWY7CiAgICAgfQogCi0gICAgT3duUHRyPEltYWdlQnVmZmVyPiB0
ZW1wID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCAxKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
SW1hZ2VCdWZmZXI+IHRlbXAgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIDEpOwogICAgIGlm
ICghdGVtcCkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgaSA9IHN0ZDo6bWluKG1fY2FwYWNpdHkg
LSAxLCBpKTsKLSAgICBtX2J1ZmZlcnNbaV0gPSB0ZW1wLnJlbGVhc2UoKTsKKyAgICBtX2J1ZmZl
cnNbaV0gPSBzdGQ6Om1vdmUodGVtcCk7CiAKICAgICBJbWFnZUJ1ZmZlciogYnVmID0gbV9idWZm
ZXJzW2ldLmdldCgpOwogICAgIGJ1YmJsZVRvRnJvbnQoaSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oCmluZGV4IDRmODhiNDRlMGU1
NDQwYzkxYmJjMjFjNGRjZTk1MjQwMTRjZWI0N2EuLjVkZTY4YzNlMzE5M2MzNDU3YzcxMGQ0NTQw
MWEzOWVjMTk5NDE3NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMUmVuZGVyaW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMUmVuZGVyaW5nQ29udGV4dC5oCkBAIC00NzEsNyArNDcxLDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgSW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVyKGNvbnN0IEludFNpemUmIHNpemUpOwogICAgIHBy
aXZhdGU6CiAgICAgICAgIHZvaWQgYnViYmxlVG9Gcm9udChpbnQgaWR4KTsKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfcHRyPE93blB0cjxJbWFnZUJ1ZmZlcj5bXT4gbV9idWZmZXJzOworICAgICAgICBz
dGQ6OnVuaXF1ZV9wdHI8c3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPltdPiBtX2J1ZmZlcnM7
CiAgICAgICAgIGludCBtX2NhcGFjaXR5OwogICAgIH07CiAgICAgTFJVSW1hZ2VCdWZmZXJDYWNo
ZSBtX2dlbmVyYXRlZEltYWdlQ2FjaGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKaW5kZXggY2FiYzVkZGNhNGFmNjM0Y2IzZThm
MjFhY2RlOTRjZjk5NTNkMWI2NC4uOTZkZGViNWVjOGM3YjNlYTFjNDkzNjI0NjMzOThhZTAyNWJl
Y2M5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9s
RWxlbWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJv
bEVsZW1lbnRzLmNwcApAQCAtMTQxNSw3ICsxNDE1LDcgQEAgUGFzc1JlZlB0cjxJbWFnZT4gTWVk
aWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlVGV4dFRyYWNrUmVwcmVz
ZW4KIAogICAgIEludFJlY3QgcGFpbnRpbmdSZWN0ID0gSW50UmVjdChJbnRQb2ludCgpLCBsYXll
ci0+c2l6ZSgpKTsKIAotICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gYnVmZmVyKEltYWdlQnVmZmVy
OjpjcmVhdGUocGFpbnRpbmdSZWN0LnNpemUoKSwgZGV2aWNlU2NhbGVGYWN0b3IsIENvbG9yU3Bh
Y2VEZXZpY2VSR0IpKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGJ1ZmZlcihJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlKHBhaW50aW5nUmVjdC5zaXplKCksIGRldmljZVNjYWxlRmFjdG9y
LCBDb2xvclNwYWNlRGV2aWNlUkdCKSk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9CaXRtYXBJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRt
YXBJbWFnZS5jcHAKaW5kZXggZjI0ZDY1OTA2NzY2NDFlNmNiZTk2N2RkMDNhNzlhZTY0N2YyNjcz
My4uNmZiMWNmYjI3ZGYxN2Q3NzFjOTk3NTVhODE2M2VlZGVkZDc5MmU4OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcApAQCAtNTE1LDcg
KzUxNSw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCog
Y3R4dCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwKICAgICAgICAgcmV0dXJuOwogICAgIH0K
ICAgICBpZiAoIW1fY2FjaGVkSW1hZ2UpIHsKLSAgICAgICAgT3duUHRyPEltYWdlQnVmZmVyPiBi
dWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGV4cGFuZGVkSW50U2l6ZSh0aWxlUmVjdC5zaXpl
KCkpKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBidWZmZXIgPSBJbWFn
ZUJ1ZmZlcjo6Y3JlYXRlKGV4cGFuZGVkSW50U2l6ZSh0aWxlUmVjdC5zaXplKCkpKTsKICAgICAg
ICAgQVNTRVJUKGJ1ZmZlci5nZXQoKSk7CiAKICAgICAgICAgSW1hZ2VPYnNlcnZlciogb2JzZXJ2
ZXIgPSBpbWFnZU9ic2VydmVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAKaW5kZXggYjBkYjJk
ZmVkYzM4MTNjODcwMmI3MDU1NDI5YzFlNjU1NTU2ZjJmOC4uZGIxNjU0MTczZjUzODliNzk5NzQ0
NDdjY2Y5YjQ5MDVjNmE2MTM4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmNwcApAQCAtOTgsNyAr
OTgsNyBAQCB2b2lkIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkcwogCiB2b2lkIENyb3NzZmFkZUdlbmVyYXRl
ZEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBj
b25zdCBGbG9hdFBvaW50JiBwaGFzZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBv
c2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIEJsZW5k
TW9kZSkKIHsKLSAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyID0gSW1hZ2VCdWZm
ZXI6OmNyZWF0ZShzaXplKCksIDEsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGNvbnRleHQtPmlzQWNj
ZWxlcmF0ZWRDb250ZXh0KCkgPyBBY2NlbGVyYXRlZCA6IFVuYWNjZWxlcmF0ZWQpOworICAgIHN0
ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3Jl
YXRlKHNpemUoKSwgMSwgQ29sb3JTcGFjZURldmljZVJHQiwgY29udGV4dC0+aXNBY2NlbGVyYXRl
ZENvbnRleHQoKSA/IEFjY2VsZXJhdGVkIDogVW5hY2NlbGVyYXRlZCk7CiAgICAgaWYgKCFpbWFn
ZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmgKaW5kZXggYWFiYTI3MzI3YzYwYWM4MDFhZjc2ODcw
MzdhMzU0YTA1NTlmNGU4NS4uMTRjODJhOGNkOTc5ODU5YmM2MjNlOGJiZTZjOTYwMjYxNGE3Njk2
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJ
bWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1h
Z2UuaApAQCAtNTcsNyArNTcsNyBAQCBwcm90ZWN0ZWQ6CiAKIHByaXZhdGU6CiAgICAgUmVmUHRy
PEdyYWRpZW50PiBtX2dyYWRpZW50OwotICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gbV9jYWNoZWRJ
bWFnZUJ1ZmZlcjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IG1fY2FjaGVkSW1h
Z2VCdWZmZXI7CiAgICAgSW50U2l6ZSBtX2NhY2hlZEFkanVzdGVkU2l6ZTsKICAgICB1bnNpZ25l
ZCBtX2NhY2hlZEdlbmVyYXRvckhhc2g7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKaW5kZXggZjIxZjkxNGQxNmE2OWIx
ZjkzOTBmMTUzNmQ2OTJlNGM0YTQ4YTljYi4uMGM0NWViZTA3NzIyODA3YzI3MzUyMGQ4MThlNTZh
NGE4YmRhMTFlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuY3BwCkBAIC04MDMsNyArODAzLDcgQEAgc3RhdGljIGJvb2wgc2Nh
bGVzTWF0Y2goQWZmaW5lVHJhbnNmb3JtIGEsIEFmZmluZVRyYW5zZm9ybSBiKQogICAgIHJldHVy
biBhLnhTY2FsZSgpID09IGIueFNjYWxlKCkgJiYgYS55U2NhbGUoKSA9PSBiLnlTY2FsZSgpOwog
fQogCi1QYXNzT3duUHRyPEltYWdlQnVmZmVyPiBHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZUNvbXBh
dGlibGVCdWZmZXIoY29uc3QgSW50U2l6ZSYgc2l6ZSwgYm9vbCBoYXNBbHBoYSkgY29uc3QKK3N0
ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0OjpjcmVhdGVDb21wYXRp
YmxlQnVmZmVyKGNvbnN0IEludFNpemUmIHNpemUsIGJvb2wgaGFzQWxwaGEpIGNvbnN0CiB7CiAg
ICAgLy8gTWFrZSB0aGUgYnVmZmVyIGxhcmdlciBpZiB0aGUgY29udGV4dCdzIHRyYW5zZm9ybSBp
cyBzY2FsaW5nIGl0IHNvIHdlIG5lZWQgYSBoaWdoZXIKICAgICAvLyByZXNvbHV0aW9uIHRoYW4g
b25lIHBpeGVsIHBlciB1bml0LiBBbHNvIHNldCB1cCBhIGNvcnJlc3BvbmRpbmcgc2NhbGUgZmFj
dG9yIG9uIHRoZQpAQCAtODEyLDE0ICs4MTIsMTQgQEAgUGFzc093blB0cjxJbWFnZUJ1ZmZlcj4g
R3JhcGhpY3NDb250ZXh0OjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0IEludFNpemUmIHMK
ICAgICBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtID0gZ2V0Q1RNKERlZmluaXRlbHlJbmNsdWRl
RGV2aWNlU2NhbGUpOwogICAgIEludFNpemUgc2NhbGVkU2l6ZShzdGF0aWNfY2FzdDxpbnQ+KGNl
aWwoc2l6ZS53aWR0aCgpICogdHJhbnNmb3JtLnhTY2FsZSgpKSksIHN0YXRpY19jYXN0PGludD4o
Y2VpbChzaXplLmhlaWdodCgpICogdHJhbnNmb3JtLnlTY2FsZSgpKSkpOwogCi0gICAgT3duUHRy
PEltYWdlQnVmZmVyPiBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZl
cihzY2FsZWRTaXplLCAxLCBDb2xvclNwYWNlRGV2aWNlUkdCLCB0aGlzLCBoYXNBbHBoYSk7Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3Jl
YXRlQ29tcGF0aWJsZUJ1ZmZlcihzY2FsZWRTaXplLCAxLCBDb2xvclNwYWNlRGV2aWNlUkdCLCB0
aGlzLCBoYXNBbHBoYSk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCiAgICAgYnVmZmVyLT5jb250ZXh0KCktPnNjYWxlKEZsb2F0U2l6ZShzdGF0aWNfY2FzdDxm
bG9hdD4oc2NhbGVkU2l6ZS53aWR0aCgpKSAvIHNpemUud2lkdGgoKSwKICAgICAgICAgc3RhdGlj
X2Nhc3Q8ZmxvYXQ+KHNjYWxlZFNpemUuaGVpZ2h0KCkpIC8gc2l6ZS5oZWlnaHQoKSkpOwogCi0g
ICAgcmV0dXJuIGJ1ZmZlci5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGJ1ZmZlcjsKIH0KIAogYm9v
bCBHcmFwaGljc0NvbnRleHQ6OmlzQ29tcGF0aWJsZVdpdGhCdWZmZXIoSW1hZ2VCdWZmZXIqIGJ1
ZmZlcikgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0LmgKaW5kZXggNDg1MzUxMTgzZjg1ZTRkNmUzOWRiNjc3Y2I4MzBhYzIzZWY5
ZDE3Yi4uMTdjNGNlNGRkNzMxZTMzNDM4M2ZjZjE0ZDY3YjU1M2VmMzNlMmQzYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAg
LTQxNCw3ICs0MTQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjZW5kaWYKICAgICAgICAgLy8g
Q3JlYXRlIGFuIGltYWdlIGJ1ZmZlciBjb21wYXRpYmxlIHdpdGggdGhpcyBjb250ZXh0LCB3aXRo
IHN1aXRhYmxlIHJlc29sdXRpb24KICAgICAgICAgLy8gZm9yIGRyYXdpbmcgaW50byB0aGUgYnVm
ZmVyIGFuZCB0aGVuIGludG8gdGhpcyBjb250ZXh0LgotICAgICAgICBQYXNzT3duUHRyPEltYWdl
QnVmZmVyPiBjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0IEludFNpemUmLCBib29sIGhhc0Fs
cGhhID0gdHJ1ZSkgY29uc3Q7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4g
Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjb25zdCBJbnRTaXplJiwgYm9vbCBoYXNBbHBoYSA9IHRy
dWUpIGNvbnN0OwogICAgICAgICBib29sIGlzQ29tcGF0aWJsZVdpdGhCdWZmZXIoSW1hZ2VCdWZm
ZXIqKSBjb25zdDsKIAogICAgICAgICAvLyBUaGlzIGZ1bmN0aW9uIGFwcGxpZXMgdGhlIGRldmlj
ZSBzY2FsZSBmYWN0b3IgdG8gdGhlIGNvbnRleHQsIG1ha2luZyB0aGUgY29udGV4dCBjYXBhYmxl
IG9mCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1
ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5j
cHAKaW5kZXggNmNmN2NjYTk0NDNlYzY0YjE0ZDEwYjIyZjVkNzlkNDk0NWIzMzUyNC4uOTFkNjBh
YWVkMmYwOGFhMjgzNWEyNTRiMzM5MWNhMzFkOTJhYmY3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcApAQCAtMTEwLDcgKzExMCw3IEBA
IGJvb2wgSW1hZ2VCdWZmZXI6OmNvcHlUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHQz
RCYsIFBsYXRmb3JtM0RPYmplY3QsIEdDCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1QYXNzT3du
UHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjb25z
dCBJbnRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JT
cGFjZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBib29sKQorc3RkOjp1bmlxdWVf
cHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjb25z
dCBJbnRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JT
cGFjZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBib29sKQogewogICAgIHJldHVy
biBjcmVhdGUoc2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBjb250ZXh0LT5pc0Fj
Y2VsZXJhdGVkQ29udGV4dCgpID8gQWNjZWxlcmF0ZWQgOiBVbmFjY2VsZXJhdGVkKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCmluZGV4IDFk
NGYwODVmZDFmNDcyYjRhODNhZWFlNjkzOGZhYzBjNmNmNDlkYjIuLmFiZjhhNmNlNDE4MmVhYzVj
YWYwYWQzYmI0ZjNiYzZlN2FiOTk2NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VCdWZmZXIuaApAQCAtNDIsNyArNDIsNiBAQAogI2luY2x1ZGUgPHJ1bnRp
bWUvVWludDhDbGFtcGVkQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1
ZGUgPHd0Zi9Pd25QdHIuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC03OSwxNiAr
NzgsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShJbWFnZUJ1ZmZlcik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKICAg
ICAgICAgLy8gV2lsbCByZXR1cm4gYSBudWxsIHBvaW50ZXIgb24gYWxsb2NhdGlvbiBmYWlsdXJl
LgotICAgICAgICBzdGF0aWMgUGFzc093blB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlKGNvbnN0IElu
dFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSA9IDEsIENvbG9yU3BhY2UgY29sb3JT
cGFjZSA9IENvbG9yU3BhY2VEZXZpY2VSR0IsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSA9
IFVuYWNjZWxlcmF0ZWQpCisgICAgICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZm
ZXI+IGNyZWF0ZShjb25zdCBJbnRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUgPSAx
LCBDb2xvclNwYWNlIGNvbG9yU3BhY2UgPSBDb2xvclNwYWNlRGV2aWNlUkdCLCBSZW5kZXJpbmdN
b2RlIHJlbmRlcmluZ01vZGUgPSBVbmFjY2VsZXJhdGVkKQogICAgICAgICB7CiAgICAgICAgICAg
ICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsKLSAgICAgICAgICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4g
YnVmID0gYWRvcHRQdHIobmV3IEltYWdlQnVmZmVyKHNpemUsIHJlc29sdXRpb25TY2FsZSwgY29s
b3JTcGFjZSwgcmVuZGVyaW5nTW9kZSwgc3VjY2VzcykpOworICAgICAgICAgICAgc3RkOjp1bmlx
dWVfcHRyPEltYWdlQnVmZmVyPiBidWZmZXIobmV3IEltYWdlQnVmZmVyKHNpemUsIHJlc29sdXRp
b25TY2FsZSwgY29sb3JTcGFjZSwgcmVuZGVyaW5nTW9kZSwgc3VjY2VzcykpOwogICAgICAgICAg
ICAgaWYgKCFzdWNjZXNzKQogICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAg
ICAgICAgcmV0dXJuIGJ1Zi5yZWxlYXNlKCk7CisgICAgICAgICAgICByZXR1cm4gYnVmZmVyOwog
ICAgICAgICB9CiAKLSAgICAgICAgc3RhdGljIFBhc3NPd25QdHI8SW1hZ2VCdWZmZXI+IGNyZWF0
ZUNvbXBhdGlibGVCdWZmZXIoY29uc3QgSW50U2l6ZSYsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwg
Q29sb3JTcGFjZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiwgYm9vbCBoYXNBbHBoYSk7CisgICAg
ICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUNvbXBhdGlibGVC
dWZmZXIoY29uc3QgSW50U2l6ZSYsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSwg
Y29uc3QgR3JhcGhpY3NDb250ZXh0KiwgYm9vbCBoYXNBbHBoYSk7CiAKICAgICAgICAgfkltYWdl
QnVmZmVyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1NoYWRvd0JsdXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93
Qmx1ci5jcHAKaW5kZXggNzM4NzI3MzBlNWQxMmQyNWJkMTdhY2U2ZWE4NDk0YmFhZWE3NWE4Yy4u
ODlhNDQ5ZGIyMDZkY2NiZGYxNzRiYTg1MTk4NWMxMWI1YmIyYjZmNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKQEAgLTE0MSw3ICsxNDEs
NyBAQCBwcml2YXRlOgogICAgICAgICBtX2xhc3RSYWRpdXMgPSBGbG9hdFNpemUoKTsKICAgICB9
CiAKLSAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IG1faW1hZ2VCdWZmZXI7CisgICAgc3RkOjp1bmlx
dWVfcHRyPEltYWdlQnVmZmVyPiBtX2ltYWdlQnVmZmVyOwogICAgIFRpbWVyPFNjcmF0Y2hCdWZm
ZXI+IG1fcHVyZ2VUaW1lcjsKICAgICAKICAgICBGbG9hdFJlY3QgbV9sYXN0SW5zZXRCb3VuZHM7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1
ZmZlckNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVm
ZmVyQ0cuY3BwCmluZGV4IGQ3YTk3ZTZmMWMxODFiNWQ1MzMyYzZiOTEwYTVkM2U5ZjhmMzk2MWYu
LmEyOTQyM2I2NGEzYzI4ZjVjYTNhYjEzYjYwZmNiOTdmYTU5M2EzMGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCkBA
IC0zMTUsNyArMzE1LDcgQEAgdm9pZCBJbWFnZUJ1ZmZlcjo6cHV0Qnl0ZUFycmF5KE11bHRpcGx5
IG11bHRpcGxpZWQsIFVpbnQ4Q2xhbXBlZEFycmF5KiBzb3VyY2UsIGMKICNpZiBVU0UoSU9TVVJG
QUNFX0NBTlZBU19CQUNLSU5HX1NUT1JFKQogICAgIC8vIE1ha2UgYSBjb3B5IG9mIHRoZSBzb3Vy
Y2UgdG8gZW5zdXJlIHRoZSBiaXRzIGRvbid0IGNoYW5nZSBiZWZvcmUgYmVpbmcgZHJhd24KICAg
ICBJbnRTaXplIHNvdXJjZUNvcHlTaXplKHNvdXJjZVJlY3Qud2lkdGgoKSwgc291cmNlUmVjdC5o
ZWlnaHQoKSk7Ci0gICAgT3duUHRyPEltYWdlQnVmZmVyPiBzb3VyY2VDb3B5ID0gSW1hZ2VCdWZm
ZXI6OmNyZWF0ZShzb3VyY2VDb3B5U2l6ZSwgMSwgQ29sb3JTcGFjZURldmljZVJHQiwgVW5hY2Nl
bGVyYXRlZCk7CisgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBzb3VyY2VDb3B5ID0g
SW1hZ2VCdWZmZXI6OmNyZWF0ZShzb3VyY2VDb3B5U2l6ZSwgMSwgQ29sb3JTcGFjZURldmljZVJH
QiwgVW5hY2NlbGVyYXRlZCk7CiAgICAgaWYgKCFzb3VyY2VDb3B5KQogICAgICAgICByZXR1cm47
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRv
Y3VtZW50SW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRv
Y3VtZW50SW1hZ2UuaAppbmRleCAwZGUyNjgxZjZkMzQxMzgzNWIzZjNlMTYyMDQzMGIwYTczNjFk
ODA4Li40NjFhOTlkNmY2YTk1YWMyNThlYzYzZGRlYmI5MTY3MWYxODEwZTg3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFn
ZS5oCkBAIC05MSw3ICs5MSw3IEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPENHUERGRG9jdW1l
bnRSZWY+IG1fZG9jdW1lbnQ7CiAjZW5kaWYKIAotICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gbV9j
YWNoZWRJbWFnZUJ1ZmZlcjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IG1fY2Fj
aGVkSW1hZ2VCdWZmZXI7CiAgICAgQWZmaW5lVHJhbnNmb3JtIG1fY2FjaGVkVHJhbnNmb3JtOwog
ICAgIEZsb2F0U2l6ZSBtX2NhY2hlZERlc3RpbmF0aW9uU2l6ZTsKICAgICBGbG9hdFJlY3QgbV9j
YWNoZWRTb3VyY2VSZWN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRVRpbGUuY3BwCmluZGV4IDNkYjdhN2MzODdkMDBlNWM0NWVmMWJiZDgyNjMy
YzllZTFlYjhmNTAuLjRhNmM2YTRmOWZlOWE4YTg1ZWVmZjA4ZWUzZWNlYTc0MDUwMWJmODkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGls
ZS5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgdm9pZCBGRVRpbGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2Fy
ZSgpCiAgICAgICAgIHRpbGVSZWN0LnNjYWxlKGZpbHRlci0+ZmlsdGVyUmVzb2x1dGlvbigpLndp
ZHRoKCksIGZpbHRlci0+ZmlsdGVyUmVzb2x1dGlvbigpLmhlaWdodCgpKTsKICAgICB9CiAKLSAg
ICBPd25QdHI8SW1hZ2VCdWZmZXI+IHRpbGVJbWFnZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1h
Z2VCdWZmZXI+IHRpbGVJbWFnZTsKICAgICBpZiAoIVNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0
ZUltYWdlQnVmZmVyRm9yUGF0dGVybih0aWxlUmVjdCwgdGlsZVJlY3QsIHRpbGVJbWFnZSwgQ29s
b3JTcGFjZURldmljZVJHQiwgZmlsdGVyKCktPnJlbmRlcmluZ01vZGUoKSkpCiAgICAgICAgIHJl
dHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GaWx0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RmlsdGVyLmgKaW5kZXggMzJhMjc1ZTY0OWY4ZWQ3M2EwYzE3NThlY2FlMjI0NzVkNTdjMWNjYy4u
MDc0YjMwYzJhMzNhNzVlOTU1NDI2MWU0MjU2OTEyYmQxNjNkYTBiNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5oCkBAIC0zNSw3ICsz
NSw3IEBAIHB1YmxpYzoKICAgICBGaWx0ZXIoKSA6IG1fcmVuZGVyaW5nTW9kZShVbmFjY2VsZXJh
dGVkKSB7IH0KICAgICB2aXJ0dWFsIH5GaWx0ZXIoKSB7IH0KIAotICAgIHZvaWQgc2V0U291cmNl
SW1hZ2UoUGFzc093blB0cjxJbWFnZUJ1ZmZlcj4gc291cmNlSW1hZ2UpIHsgbV9zb3VyY2VJbWFn
ZSA9IHNvdXJjZUltYWdlOyB9CisgICAgdm9pZCBzZXRTb3VyY2VJbWFnZShzdGQ6OnVuaXF1ZV9w
dHI8SW1hZ2VCdWZmZXI+IHNvdXJjZUltYWdlKSB7IG1fc291cmNlSW1hZ2UgPSBzdGQ6Om1vdmUo
c291cmNlSW1hZ2UpOyB9CiAgICAgSW1hZ2VCdWZmZXIqIHNvdXJjZUltYWdlKCkgeyByZXR1cm4g
bV9zb3VyY2VJbWFnZS5nZXQoKTsgfQogCiAgICAgRmxvYXRTaXplIGZpbHRlclJlc29sdXRpb24o
KSBjb25zdCB7IHJldHVybiBtX2ZpbHRlclJlc29sdXRpb247IH0KQEAgLTU1LDcgKzU1LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgRmxvYXRQb2ludCBtYXBBYnNvbHV0ZVBvaW50VG9Mb2NhbFBv
aW50KGNvbnN0IEZsb2F0UG9pbnQmKSBjb25zdCB7IHJldHVybiBGbG9hdFBvaW50KCk7IH0KIAog
cHJpdmF0ZToKLSAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IG1fc291cmNlSW1hZ2U7CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBtX3NvdXJjZUltYWdlOwogICAgIEZsb2F0U2l6ZSBt
X2ZpbHRlclJlc29sdXRpb247CiAgICAgUmVuZGVyaW5nTW9kZSBtX3JlbmRlcmluZ01vZGU7CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
aWx0ZXJFZmZlY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GaWx0ZXJFZmZlY3QuY3BwCmluZGV4IGY5OWVhMmRkZGJmYzlmNzY3ZDNmMzc4MzlhMWNjMmZh
ZDRmZjY2YTIuLjYzZGU0YTRmZWViMjBhYzNjNDM0MGNjNmY0NTE3YzdiODk4ZjFmMDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZm
ZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Zp
bHRlckVmZmVjdC5jcHAKQEAgLTIyOCw3ICsyMjgsNyBAQCB2b2lkIEZpbHRlckVmZmVjdDo6Zm9y
Y2VWYWxpZFByZU11bHRpcGxpZWRQaXhlbHMoKQogdm9pZCBGaWx0ZXJFZmZlY3Q6OmNsZWFyUmVz
dWx0KCkKIHsKICAgICBpZiAobV9pbWFnZUJ1ZmZlclJlc3VsdCkKLSAgICAgICAgbV9pbWFnZUJ1
ZmZlclJlc3VsdC5jbGVhcigpOworICAgICAgICBtX2ltYWdlQnVmZmVyUmVzdWx0LnJlc2V0KCk7
CiAgICAgaWYgKG1fdW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQpCiAgICAgICAgIG1fdW5tdWx0aXBs
aWVkSW1hZ2VSZXN1bHQuY2xlYXIoKTsKICAgICBpZiAobV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1
bHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZpbHRlckVmZmVjdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GaWx0ZXJFZmZlY3QuaAppbmRleCBiMWMxMTg2MjcwZjA5YjI1NDc2ZWYwMGRiNDgyY2MxYzMz
ZTRhYmJkLi40MmQ3NDUyMDM2OWRiZmRkN2JjYmVkZDA1NTc4NzgxNzEzYWU3YzMxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVj
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVy
RWZmZWN0LmgKQEAgLTI5LDcgKzI5LDYgQEAKIAogI2luY2x1ZGUgPHJ1bnRpbWUvVWludDhDbGFt
cGVkQXJyYXkuaD4KIAotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgpAQCAtMTc5LDcgKzE3OCw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGZvcmNlVmFs
aWRQcmVNdWx0aXBsaWVkUGl4ZWxzKCk7CiAKIHByaXZhdGU6Ci0gICAgT3duUHRyPEltYWdlQnVm
ZmVyPiBtX2ltYWdlQnVmZmVyUmVzdWx0OworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZl
cj4gbV9pbWFnZUJ1ZmZlclJlc3VsdDsKICAgICBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IG1f
dW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQ7CiAgICAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBt
X3ByZW11bHRpcGxpZWRJbWFnZVJlc3VsdDsKICAgICBGaWx0ZXJFZmZlY3RWZWN0b3IgbV9pbnB1
dEVmZmVjdHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4
dEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKaW5k
ZXggNmFlMWM3YTA0ZDE2YTBiZGI2NjUzY2Y1ZDI0MGMxMzVhNjA2MTRhYi4uYTA5OGYzNWExZGE2
YTA0Njk4MTc2ZTU5OTFlOGU2NGUxNGI5MDkwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9JbmxpbmVUZXh0Qm94LmNwcApAQCAtMTA2MSw3ICsxMDYxLDcgQEAgdm9pZCBJbmxpbmVUZXh0
Qm94OjpwYWludERlY29yYXRpb24oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9h
dFBvaW50JgogCiAgICAgICAgICAgICBGbG9hdFJlY3QgdW5kZXJsaW5lUmVjdCA9IGJvdW5kaW5n
Qm94Rm9yQWxsQWN0aXZlRGVjb3JhdGlvbnMoKnRoaXMsIGNvbnRleHQsIGRlY29yYXRpb24sIHRl
eHREZWNvcmF0aW9uVGhpY2tuZXNzLCB3aWR0aCwgZG91YmxlT2Zmc2V0LCBkZWNvcmF0aW9uU3R5
bGUsIGxvY2FsT3JpZ2luLCBsaW5lU3R5bGUsIGlzUHJpbnRpbmcsIGJhc2VsaW5lKTsKICAgICAg
ICAgICAgIEludFJlY3QgZW5jbG9zaW5nRGV2aWNlUmVjdCA9IGVuY2xvc2luZ0ludFJlY3QodW5k
ZXJsaW5lUmVjdCk7Ci0gICAgICAgICAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVy
ID0gY29udGV4dC5jcmVhdGVDb21wYXRpYmxlQnVmZmVyKGVuY2xvc2luZ0RldmljZVJlY3Quc2l6
ZSgpKTsKKyAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZm
ZXIgPSBjb250ZXh0LmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoZW5jbG9zaW5nRGV2aWNlUmVjdC5z
aXplKCkpOwogCiAgICAgICAgICAgICBpZiAoaW1hZ2VCdWZmZXIuZ2V0KCkpIHsKICAgICAgICAg
ICAgICAgICBHcmFwaGljc0NvbnRleHQmIG1hc2tDb250ZXh0ID0gKmltYWdlQnVmZmVyLT5jb250
ZXh0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9k
ZWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2Jq
ZWN0LmNwcAppbmRleCBlNzg1MWQxN2Y0YWEwNWI1ZGQ5ZGI1MTk3NzJmZmM1NDU0NjM5MTA2Li5j
ZWY3NDNmYTdhM2MzZWNlMDVkMjllMzcwMTNlMDVjYTJmYWU1YTJjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKQEAgLTcwMSw3ICs3
MDEsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVk
KGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjbwogICAgIH0KICAgICAKICAgICBHcmFwaGlj
c0NvbnRleHRTdGF0ZVNhdmVyIGJhY2tncm91bmRDbGlwU3RhdGVTYXZlcigqY29udGV4dCwgZmFs
c2UpOwotICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gbWFza0ltYWdlOworICAgIHN0ZDo6dW5pcXVl
X3B0cjxJbWFnZUJ1ZmZlcj4gbWFza0ltYWdlOwogICAgIEludFJlY3QgbWFza1JlY3Q7CiAKICAg
ICBpZiAoYmdMYXllci0+Y2xpcCgpID09IFBhZGRpbmdGaWxsQm94IHx8IGJnTGF5ZXItPmNsaXAo
KSA9PSBDb250ZW50RmlsbEJveCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRoZW1lTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lTWFjLm1tCmluZGV4IDUyN2VmODY0Y2EzZjAyNDFhYzhkNjlhMDBkY2ExOGNjODIyZDgyNGUu
LjMzNDg1N2JiZWIzYTY2MTgwYzJhOWVkMGM5NGU3NTlkNDczYmVhMmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KQEAgLTEwNTIsNyArMTA1Miw3IEBAIGJv
b2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50UHJvZ3Jlc3NCYXIoUmVuZGVyT2JqZWN0KiByZW5kZXJP
YmplY3QsIGNvbnN0IFBhaW50SW5mCiAgICAgdHJhY2tJbmZvLnJlc2VydmVkID0gMDsKICAgICB0
cmFja0luZm8uZmlsbGVyMSA9IDA7CiAKLSAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVm
ZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShpbmZsYXRlZFJlY3Quc2l6ZSgpLCBkZXZpY2VTY2Fs
ZUZhY3Rvcik7CisgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlciA9
IEltYWdlQnVmZmVyOjpjcmVhdGUoaW5mbGF0ZWRSZWN0LnNpemUoKSwgZGV2aWNlU2NhbGVGYWN0
b3IpOwogICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVybiB0cnVlOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwCmluZGV4IGM4ZmJiOGY2NTBiZWY4
NGFlMmFmNDdiYzgwZjQ5Y2ZjNjllYjcxODcuLmViMjY5MDJjMWVjMDMwMmQzZDY3Zjk4YWJlNTUy
ODE1NmJjYjRiOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMv
U2hhcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3Bw
CkBAIC0yMjUsNyArMjI1LDcgQEAgUGFzc093blB0cjxTaGFwZT4gU2hhcGU6OmNyZWF0ZVNoYXBl
KGNvbnN0IFN0eWxlSW1hZ2UqIHN0eWxlSW1hZ2UsIGZsb2F0IHRocmVzaG8KIAogICAgIE93blB0
cjxSYXN0ZXJTaGFwZUludGVydmFscz4gaW50ZXJ2YWxzID0gYWRvcHRQdHIobmV3IFJhc3RlclNo
YXBlSW50ZXJ2YWxzKGltYWdlU2l6ZS5oZWlnaHQoKSkpOwogCi0gICAgT3duUHRyPEltYWdlQnVm
ZmVyPiBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoaW1hZ2VTaXplKTsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNy
ZWF0ZShpbWFnZVNpemUpOwogICAgIGlmIChpbWFnZUJ1ZmZlcikgewogICAgICAgICBHcmFwaGlj
c0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCA9IGltYWdlQnVmZmVyLT5jb250ZXh0KCk7CiAgICAg
ICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd0ltYWdlKGltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdC
LCBJbnRQb2ludCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdJbWFnZS5jcHAKaW5kZXggNmNmODMwYmNlZmQ4MjdkYThjZDNiOWMzYzBjOWEyYmRkNzYwNGUw
Mi4uNTdmYzliZTkyNjMyZTBmZjBjMmQ3ZDY2OWQzYjhhM2IyMTA3MzkyOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAKQEAgLTE2Miw3ICsx
NjIsNyBAQCB2b2lkIFJlbmRlclNWR0ltYWdlOjpwYWludEZvcmVncm91bmQoUGFpbnRJbmZvJiBw
YWludEluZm8pCiAKIHZvaWQgUmVuZGVyU1ZHSW1hZ2U6OmludmFsaWRhdGVCdWZmZXJlZEZvcmVn
cm91bmQoKQogewotICAgIG1fYnVmZmVyZWRGb3JlZ3JvdW5kLmNsZWFyKCk7CisgICAgbV9idWZm
ZXJlZEZvcmVncm91bmQucmVzZXQoKTsKIH0KIAogYm9vbCBSZW5kZXJTVkdJbWFnZTo6bm9kZUF0
RmxvYXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3VsdCYg
cmVzdWx0LCBjb25zdCBGbG9hdFBvaW50JiBwb2ludEluUGFyZW50LCBIaXRUZXN0QWN0aW9uIGhp
dFRlc3RBY3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lt
YWdlLmgKaW5kZXggMWQwYWNkMjAxNGEyOGY3NjU3YTJjMTVkZjIwYWNiNmE4NzJhM2VkOS4uN2Yw
NDFhZDkzMjlkZWQyNmM2MGI5MTMyYTYxNmU4Y2QxMWNmYmFlMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuaApAQCAtOTAsNyArOTAsNyBAQCBwcml2
YXRlOgogICAgIEZsb2F0UmVjdCBtX3JlcGFpbnRCb3VuZGluZ0JveEV4Y2x1ZGluZ1NoYWRvdzsK
ICAgICBPd25QdHI8UmVuZGVySW1hZ2VSZXNvdXJjZT4gbV9pbWFnZVJlc291cmNlOwogCi0gICAg
T3duUHRyPEltYWdlQnVmZmVyPiBtX2J1ZmZlcmVkRm9yZWdyb3VuZDsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8SW1hZ2VCdWZmZXI+IG1fYnVmZmVyZWRGb3JlZ3JvdW5kOwogfTsKIAogUkVOREVSX09C
SkVDVF9UWVBFX0NBU1RTKFJlbmRlclNWR0ltYWdlLCBpc1NWR0ltYWdlKCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBl
ci5jcHAKaW5kZXggZjkwMzEzMTdlZjgzNTdmNjZjZjgwMDE4MTk2ODA5ZjU4NWZmNThjYi4uMzY5
MmIyZWU1ZjBkOTc0OTgwMzIwODVjZWM2MDkwZWRlMzVjNDZlNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNw
cApAQCAtMTg2LDcgKzE4Niw3IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyOjphcHBs
eUNsaXBwaW5nVG9Db250ZXh0KFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjCiAgICAgICAgICAg
ICBzdWNjZWVkZWQgPSBkcmF3Q29udGVudEludG9NYXNrSW1hZ2UoY2xpcHBlckRhdGEsIG9iamVj
dEJvdW5kaW5nQm94KTsKIAogICAgICAgICBpZiAoIXN1Y2NlZWRlZCkKLSAgICAgICAgICAgIGNs
aXBwZXJEYXRhLT5jbGlwTWFza0ltYWdlLmNsZWFyKCk7CisgICAgICAgICAgICBjbGlwcGVyRGF0
YS0+Y2xpcE1hc2tJbWFnZS5yZXNldCgpOwogICAgIH0KIAogICAgIGlmICghY2xpcHBlckRhdGEt
PmNsaXBNYXNrSW1hZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuaAppbmRleCA2ZGI4NzAyMjc4MWNlMWUxNGIwMmQz
ZTYxNWU4MGQ4ZGExNWEzNDdmLi41Yzk0MjZhZTY4NmY5ODdmNzRlMGNmNGRhOWIyOGRiMzdmN2Iz
N2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlQ2xpcHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VDbGlwcGVyLmgKQEAgLTMxLDE0ICszMSwxMyBAQAogI2luY2x1ZGUgIlNWR1Vu
aXRUeXBlcy5oIgogCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvT3du
UHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IENsaXBwZXJEYXRhIHsKICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBPd25QdHI8SW1hZ2VCdWZm
ZXI+IGNsaXBNYXNrSW1hZ2U7CisgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBjbGlw
TWFza0ltYWdlOwogfTsKIAogY2xhc3MgUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyIEZJTkFMIDog
cHVibGljIFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKaW5kZXgg
OWY3NjkwOGUxMWNlZjZkY2Q1NzY4ZjNlZjBiNjYzYTRkMjRmMThkMi4uNjE3ZTIwYTA1NDFjYmUy
ODcyM2Q4MjgxMDY0NDUwOTdiOWRiNGJkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKQEAgLTIxMyw3ICsy
MTMsNyBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjphcHBseVJlc291cmNlKFJlbmRl
ckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBSZW5kZQogICAgIGVmZmVjdGl2ZVRyYW5zZm9ybS5z
Y2FsZShzY2FsZS53aWR0aCgpLCBzY2FsZS5oZWlnaHQoKSk7CiAgICAgZWZmZWN0aXZlVHJhbnNm
b3JtLm11bHRpcGx5KGZpbHRlckRhdGEtPnNoZWFyRnJlZUFic29sdXRlVHJhbnNmb3JtKTsKIAot
ICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gc291cmNlR3JhcGhpYzsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8SW1hZ2VCdWZmZXI+IHNvdXJjZUdyYXBoaWM7CiAgICAgUmVuZGVyaW5nTW9kZSByZW5kZXJp
bmdNb2RlID0gcmVuZGVyZXIuZnJhbWUoKS5zZXR0aW5ncygpLmFjY2VsZXJhdGVkRmlsdGVyc0Vu
YWJsZWQoKSA/IEFjY2VsZXJhdGVkIDogVW5hY2NlbGVyYXRlZDsKICAgICBpZiAoIVNWR1JlbmRl
cmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKGZpbHRlckRhdGEtPmRyYXdpbmdSZWdpb24s
IGVmZmVjdGl2ZVRyYW5zZm9ybSwgc291cmNlR3JhcGhpYywgQ29sb3JTcGFjZUxpbmVhclJHQiwg
cmVuZGVyaW5nTW9kZSkpIHsKICAgICAgICAgQVNTRVJUKCFtX2ZpbHRlci5jb250YWlucygmcmVu
ZGVyZXIpKTsKQEAgLTIyOCw3ICsyMjgsNyBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlRmlsdGVy
OjphcHBseVJlc291cmNlKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBSZW5kZQogICAg
IEdyYXBoaWNzQ29udGV4dCogc291cmNlR3JhcGhpY0NvbnRleHQgPSBzb3VyY2VHcmFwaGljLT5j
b250ZXh0KCk7CiAgICAgQVNTRVJUKHNvdXJjZUdyYXBoaWNDb250ZXh0KTsKICAgCi0gICAgZmls
dGVyRGF0YS0+c291cmNlR3JhcGhpY0J1ZmZlciA9IHNvdXJjZUdyYXBoaWMucmVsZWFzZSgpOwor
ICAgIGZpbHRlckRhdGEtPnNvdXJjZUdyYXBoaWNCdWZmZXIgPSBzdGQ6Om1vdmUoc291cmNlR3Jh
cGhpYyk7CiAgICAgZmlsdGVyRGF0YS0+c2F2ZWRDb250ZXh0ID0gY29udGV4dDsKIAogICAgIGNv
bnRleHQgPSBzb3VyY2VHcmFwaGljQ29udGV4dDsKQEAgLTI4Miw3ICsyODIsNyBAQCB2b2lkIFJl
bmRlclNWR1Jlc291cmNlRmlsdGVyOjpwb3N0QXBwbHlSZXNvdXJjZShSZW5kZXJFbGVtZW50JiBy
ZW5kZXJlciwgR3JhcGhpYwogICAgICAgICAvLyBpbml0aWFsIGZpbHRlcmluZyBwcm9jZXNzLiBX
ZSBqdXN0IHRha2UgdGhlIHN0b3JlZCBmaWx0ZXIgcmVzdWx0IG9uIGEKICAgICAgICAgLy8gc2Vj
b25kIGRyYXdpbmcuCiAgICAgICAgIGlmIChmaWx0ZXJEYXRhLT5zdGF0ZSAhPSBGaWx0ZXJEYXRh
OjpCdWlsdCkKLSAgICAgICAgICAgIGZpbHRlckRhdGEtPmZpbHRlci0+c2V0U291cmNlSW1hZ2Uo
ZmlsdGVyRGF0YS0+c291cmNlR3JhcGhpY0J1ZmZlci5yZWxlYXNlKCkpOworICAgICAgICAgICAg
ZmlsdGVyRGF0YS0+ZmlsdGVyLT5zZXRTb3VyY2VJbWFnZShzdGQ6Om1vdmUoZmlsdGVyRGF0YS0+
c291cmNlR3JhcGhpY0J1ZmZlcikpOwogCiAgICAgICAgIC8vIEFsd2F5cyB0cnVlIGlmIGZpbHRl
ckRhdGEgaXMganVzdCBidWlsdCAoZmlsdGVyRGF0YS0+c3RhdGUgPT0gRmlsdGVyRGF0YTo6QnVp
bHQpLgogICAgICAgICBpZiAoIWxhc3RFZmZlY3QtPmhhc1Jlc3VsdCgpKSB7CkBAIC0zMDQsNyAr
MzA0LDcgQEAgdm9pZCBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6cG9zdEFwcGx5UmVzb3VyY2Uo
UmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIEdyYXBoaWMKICAgICAgICAgICAgIGNvbnRleHQtPmNv
bmNhdENUTShmaWx0ZXJEYXRhLT5zaGVhckZyZWVBYnNvbHV0ZVRyYW5zZm9ybSk7CiAgICAgICAg
IH0KICAgICB9Ci0gICAgZmlsdGVyRGF0YS0+c291cmNlR3JhcGhpY0J1ZmZlci5jbGVhcigpOwor
ICAgIGZpbHRlckRhdGEtPnNvdXJjZUdyYXBoaWNCdWZmZXIucmVzZXQoKTsKIH0KIAogRmxvYXRS
ZWN0IFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpyZXNvdXJjZUJvdW5kaW5nQm94KGNvbnN0IFJl
bmRlck9iamVjdCYgb2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5oCmluZGV4IGM2ODk5Y2M5YjA3MzA0YTI1NjBj
ZDEwMGY0ZGE5ZWM5NjY1NmMyZTcuLmZlZDQ4NzhlMzI3YTM5Nzc0ZmUyYTdiYTFjMmRkMDcyZWFh
YWE2NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VGaWx0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jlc291cmNlRmlsdGVyLmgKQEAgLTMzLDggKzMzLDYgQEAKICNpbmNsdWRlICJTVkdGaWx0
ZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHVW5pdFR5cGVzLmgiCiAKLSNpbmNsdWRlIDx3dGYv
T3duUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTUzLDcgKzUxLDcgQEAgcHVibGljOgog
CiAgICAgUmVmUHRyPFNWR0ZpbHRlcj4gZmlsdGVyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxTVkdG
aWx0ZXJCdWlsZGVyPiBidWlsZGVyOwotICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gc291cmNlR3Jh
cGhpY0J1ZmZlcjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IHNvdXJjZUdyYXBo
aWNCdWZmZXI7CiAgICAgR3JhcGhpY3NDb250ZXh0KiBzYXZlZENvbnRleHQ7CiAgICAgQWZmaW5l
VHJhbnNmb3JtIHNoZWFyRnJlZUFic29sdXRlVHJhbnNmb3JtOwogICAgIEZsb2F0UmVjdCBib3Vu
ZGFyaWVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZUdyYWRpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHAKaW5kZXggOTEzYWIzNTEyZjlmNmNhYjUyYzc0YzNj
YzYyNmZlYzNmZjUwZjM5NC4uNzE4OGU2NTY1ODY2MTcwNjU0MDc5MmQ5M2NkY2Q0MjEzMDZlNWQ4
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZUdyYWRpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jlc291cmNlR3JhZGllbnQuY3BwCkBAIC01OCwxMCArNTgsNyBAQCB2b2lkIFJlbmRlclNW
R1Jlc291cmNlR3JhZGllbnQ6OnJlbW92ZUNsaWVudEZyb21DYWNoZShSZW5kZXJPYmplY3QqIGNs
aWVudCwgYm9vbAogfQogCiAjaWYgVVNFKENHKQotc3RhdGljIGlubGluZSBib29sIGNyZWF0ZU1h
c2tBbmRTd2FwQ29udGV4dEZvclRleHRHcmFkaWVudChHcmFwaGljc0NvbnRleHQqJiBjb250ZXh0
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHcmFwaGljc0NvbnRleHQqJiBzYXZlZENvbnRleHQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE93blB0cjxJbWFnZUJ1ZmZl
cj4mIGltYWdlQnVmZmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBSZW5kZXJPYmplY3QqIG9iamVjdCkKK3N0YXRpYyBpbmxpbmUg
Ym9vbCBjcmVhdGVNYXNrQW5kU3dhcENvbnRleHRGb3JUZXh0R3JhZGllbnQoR3JhcGhpY3NDb250
ZXh0KiYgY29udGV4dCwgR3JhcGhpY3NDb250ZXh0KiYgc2F2ZWRDb250ZXh0LCBzdGQ6OnVuaXF1
ZV9wdHI8SW1hZ2VCdWZmZXI+JiBpbWFnZUJ1ZmZlciwgUmVuZGVyT2JqZWN0KiBvYmplY3QpCiB7
CiAgICAgUmVuZGVyT2JqZWN0KiB0ZXh0Um9vdEJsb2NrID0gUmVuZGVyU1ZHVGV4dDo6bG9jYXRl
UmVuZGVyU1ZHVGV4dEFuY2VzdG9yKG9iamVjdCk7CiAgICAgQVNTRVJUKHRleHRSb290QmxvY2sp
OwpAQCAtNzAsNyArNjcsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgY3JlYXRlTWFza0FuZFN3YXBD
b250ZXh0Rm9yVGV4dEdyYWRpZW50KEdyYXBoaWNzQ29udGV4dComIGNvbgogICAgIFNWR1JlbmRl
cmluZ0NvbnRleHQ6OmNhbGN1bGF0ZVRyYW5zZm9ybWF0aW9uVG9PdXRlcm1vc3RDb29yZGluYXRl
U3lzdGVtKHRleHRSb290QmxvY2ssIGFic29sdXRlVHJhbnNmb3JtKTsKIAogICAgIEZsb2F0UmVj
dCByZXBhaW50UmVjdCA9IHRleHRSb290QmxvY2stPnJlcGFpbnRSZWN0SW5Mb2NhbENvb3JkaW5h
dGVzKCk7Ci0gICAgT3duUHRyPEltYWdlQnVmZmVyPiBtYXNrSW1hZ2U7CisgICAgc3RkOjp1bmlx
dWVfcHRyPEltYWdlQnVmZmVyPiBtYXNrSW1hZ2U7CiAgICAgaWYgKCFTVkdSZW5kZXJpbmdDb250
ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihyZXBhaW50UmVjdCwgYWJzb2x1dGVUcmFuc2Zvcm0sIG1h
c2tJbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgVW5hY2NlbGVyYXRlZCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIApAQCAtNzksMTYgKzc2LDExIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBjcmVh
dGVNYXNrQW5kU3dhcENvbnRleHRGb3JUZXh0R3JhZGllbnQoR3JhcGhpY3NDb250ZXh0KiYgY29u
CiAgICAgQVNTRVJUKG1hc2tJbWFnZSk7CiAgICAgc2F2ZWRDb250ZXh0ID0gY29udGV4dDsKICAg
ICBjb250ZXh0ID0gbWFza0ltYWdlQ29udGV4dDsKLSAgICBpbWFnZUJ1ZmZlciA9IG1hc2tJbWFn
ZS5yZWxlYXNlKCk7CisgICAgaW1hZ2VCdWZmZXIgPSBzdGQ6Om1vdmUobWFza0ltYWdlKTsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIGlubGluZSBBZmZpbmVUcmFuc2Zvcm0gY2xpcFRv
VGV4dE1hc2soR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgT3duUHRyPEltYWdlQnVmZmVyPiYgaW1hZ2VCdWZmZXIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGbG9hdFJlY3Qm
IHRhcmdldFJlY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBSZW5kZXJPYmplY3QqIG9iamVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJvb2wgYm91bmRpbmdCb3hNb2RlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBncmFkaWVudFRy
YW5zZm9ybSkKK3N0YXRpYyBpbmxpbmUgQWZmaW5lVHJhbnNmb3JtIGNsaXBUb1RleHRNYXNrKEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCwgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiYgaW1h
Z2VCdWZmZXIsIEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgUmVuZGVyT2JqZWN0KiBvYmplY3QsIGJv
b2wgYm91bmRpbmdCb3hNb2RlLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGdyYWRpZW50VHJhbnNm
b3JtKQogewogICAgIFJlbmRlck9iamVjdCogdGV4dFJvb3RCbG9jayA9IFJlbmRlclNWR1RleHQ6
OmxvY2F0ZVJlbmRlclNWR1RleHRBbmNlc3RvcihvYmplY3QpOwogICAgIEFTU0VSVCh0ZXh0Um9v
dEJsb2NrKTsKQEAgLTIyNSw3ICsyMTcsNyBAQCB2b2lkIFJlbmRlclNWR1Jlc291cmNlR3JhZGll
bnQ6OnBvc3RBcHBseVJlc291cmNlKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBHcmFwaAogICAg
ICAgICAgICAgY29udGV4dC0+c2V0RmlsbEdyYWRpZW50KGdyYWRpZW50RGF0YS0+Z3JhZGllbnQp
OwogCiAgICAgICAgICAgICBjb250ZXh0LT5maWxsUmVjdCh0YXJnZXRSZWN0KTsKLSAgICAgICAg
ICAgIG1faW1hZ2VCdWZmZXIuY2xlYXIoKTsKKyAgICAgICAgICAgIG1faW1hZ2VCdWZmZXIucmVz
ZXQoKTsKICAgICAgICAgfQogI2Vsc2UKICAgICAgICAgVU5VU0VEX1BBUkFNKHJlbmRlcmVyKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3Vy
Y2VHcmFkaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZUdyYWRpZW50LmgKaW5kZXggODZjZTc3MDI4NjMzMTNlYzA1OTY4ZGJlODAyZjI4ZWViMjc0
MjJmNS4uNGJmOWQwOTQzODUyNjJkNWMxOWFjZGNmOTdmYTJjOWRhYzhhMDlmYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdy
YWRpZW50LmgKQEAgLTc0LDcgKzc0LDcgQEAgcHJpdmF0ZToKIAogI2lmIFVTRShDRykKICAgICBH
cmFwaGljc0NvbnRleHQqIG1fc2F2ZWRDb250ZXh0OwotICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4g
bV9pbWFnZUJ1ZmZlcjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IG1faW1hZ2VC
dWZmZXI7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAKaW5kZXggMTJiN2VkMDlhZjAyOWVm
Y2JmMDMzMDhlNGFjODkwODFkYThiMWUzNC4uZWQ5MzI3ODQ5NzY0NTA1ODk5NTVlNjBhZTMxZDg5
MjRlODc0Mjg0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAKQEAgLTkwLDcgKzkwLDcgQEAgYm9vbCBSZW5k
ZXJTVkdSZXNvdXJjZU1hc2tlcjo6YXBwbHlSZXNvdXJjZShSZW5kZXJFbGVtZW50JiByZW5kZXJl
ciwgY29uc3QgUmVuZGUKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICBpZiAo
IWRyYXdDb250ZW50SW50b01hc2tJbWFnZShtYXNrZXJEYXRhLCBjb2xvclNwYWNlLCAmcmVuZGVy
ZXIpKSB7Ci0gICAgICAgICAgICBtYXNrZXJEYXRhLT5tYXNrSW1hZ2UuY2xlYXIoKTsKKyAgICAg
ICAgICAgIG1hc2tlckRhdGEtPm1hc2tJbWFnZS5yZXNldCgpOwogICAgICAgICB9CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlTWFza2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlTWFza2VyLmgKaW5kZXggYmZiY2M5ZTlmYzQ4YjZkYTc0YzhmZDY4YmFiZDQyNjIyNjlmMDZh
Zi4uNTJiMTU1NzdjMTRjZTQxZjZmNDc1MDM5MGE0MGE4Y2ZiYTk1YTIwZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIu
aApAQCAtMzAsMTIgKzMwLDExIEBACiAjaW5jbHVkZSAiU1ZHVW5pdFR5cGVzLmgiCiAKICNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBzdHJ1Y3QgTWFza2VyRGF0YSB7Ci0gICAgT3duUHRyPEltYWdlQnVmZmVy
PiBtYXNrSW1hZ2U7CisgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBtYXNrSW1hZ2U7
CiB9OwogCiBjbGFzcyBSZW5kZXJTVkdSZXNvdXJjZU1hc2tlciBGSU5BTCA6IHB1YmxpYyBSZW5k
ZXJTVkdSZXNvdXJjZUNvbnRhaW5lciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAKaW5kZXggZTBkNDMwNjJj
ZGVkNzQ0N2M4ZjZhZDhmZGJhNDRjZjRhNDIzY2I4YS4uZjAxODg3NmY1ZjZkMDU2YWVhNTlhNDIw
YmUyNDRhZTMyMmVlYjU3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcApAQCAtMTAyLDcgKzEwMiw3IEBA
IFBhdHRlcm5EYXRhKiBSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm46OmJ1aWxkUGF0dGVybihSZW5k
ZXJPYmplY3QqIG9iamVjdCwgdW5zaWduCiAgICAgICAgIHN0YXRpY19jYXN0PGZsb2F0PihtX2F0
dHJpYnV0ZXMucGF0dGVyblRyYW5zZm9ybSgpLnlTY2FsZSgpKSk7CiAKICAgICAvLyBCdWlsZCB0
aWxlIGltYWdlLgotICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gdGlsZUltYWdlID0gY3JlYXRlVGls
ZUltYWdlKG1fYXR0cmlidXRlcywgdGlsZUJvdW5kYXJpZXMsIGFic29sdXRlVGlsZUJvdW5kYXJp
ZXMsIHRpbGVJbWFnZVRyYW5zZm9ybSwgY2xhbXBlZEFic29sdXRlVGlsZUJvdW5kYXJpZXMpOwor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gdGlsZUltYWdlID0gY3JlYXRlVGlsZUlt
YWdlKG1fYXR0cmlidXRlcywgdGlsZUJvdW5kYXJpZXMsIGFic29sdXRlVGlsZUJvdW5kYXJpZXMs
IHRpbGVJbWFnZVRyYW5zZm9ybSwgY2xhbXBlZEFic29sdXRlVGlsZUJvdW5kYXJpZXMpOwogICAg
IGlmICghdGlsZUltYWdlKQogICAgICAgICByZXR1cm4gMDsKIApAQCAtMjQwLDE1ICsyNDAsMTEg
QEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm46OmJ1aWxkVGlsZUltYWdlVHJhbnNmb3Jt
KFJlbmRlck9iamVjdCogcmVuZGVyZXIsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVBhc3NPd25Q
dHI8SW1hZ2VCdWZmZXI+IFJlbmRlclNWR1Jlc291cmNlUGF0dGVybjo6Y3JlYXRlVGlsZUltYWdl
KGNvbnN0IFBhdHRlcm5BdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRmxv
YXRSZWN0JiB0aWxlQm91bmRhcmllcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZsb2F0UmVjdCYgYWJzb2x1
dGVUaWxlQm91bmRhcmllcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdGlsZUlt
YWdlVHJhbnNmb3JtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRmxvYXRSZWN0JiBjbGFtcGVkQWJzb2x1dGVUaWxlQm91
bmRhcmllcykgY29uc3QKK3N0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gUmVuZGVyU1ZHUmVz
b3VyY2VQYXR0ZXJuOjpjcmVhdGVUaWxlSW1hZ2UoY29uc3QgUGF0dGVybkF0dHJpYnV0ZXMmIGF0
dHJpYnV0ZXMsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZUJvdW5kYXJpZXMsIGNvbnN0IEZsb2F0UmVj
dCYgYWJzb2x1dGVUaWxlQm91bmRhcmllcywgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0aWxlSW1h
Z2VUcmFuc2Zvcm0sIEZsb2F0UmVjdCYgY2xhbXBlZEFic29sdXRlVGlsZUJvdW5kYXJpZXMpIGNv
bnN0CiB7CiAgICAgY2xhbXBlZEFic29sdXRlVGlsZUJvdW5kYXJpZXMgPSBTVkdSZW5kZXJpbmdD
b250ZXh0OjpjbGFtcGVkQWJzb2x1dGVUYXJnZXRSZWN0KGFic29sdXRlVGlsZUJvdW5kYXJpZXMp
OwogCi0gICAgT3duUHRyPEltYWdlQnVmZmVyPiB0aWxlSW1hZ2U7CisgICAgc3RkOjp1bmlxdWVf
cHRyPEltYWdlQnVmZmVyPiB0aWxlSW1hZ2U7CiAKICAgICBpZiAoIVNWR1JlbmRlcmluZ0NvbnRl
eHQ6OmNyZWF0ZUltYWdlQnVmZmVyRm9yUGF0dGVybihhYnNvbHV0ZVRpbGVCb3VuZGFyaWVzLCBj
bGFtcGVkQWJzb2x1dGVUaWxlQm91bmRhcmllcywgdGlsZUltYWdlLCBDb2xvclNwYWNlRGV2aWNl
UkdCLCBVbmFjY2VsZXJhdGVkKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yNzksNyAr
Mjc1LDcgQEAgUGFzc093blB0cjxJbWFnZUJ1ZmZlcj4gUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJu
OjpjcmVhdGVUaWxlSW1hZ2UoY29uc3QgUGF0dGVybkEKICAgICAgICAgU1ZHUmVuZGVyaW5nQ29u
dGV4dDo6cmVuZGVyU3VidHJlZVRvSW1hZ2VCdWZmZXIodGlsZUltYWdlLmdldCgpLCAqY2hpbGQu
cmVuZGVyZXIoKSwgY29udGVudFRyYW5zZm9ybWF0aW9uKTsKICAgICB9CiAKLSAgICByZXR1cm4g
dGlsZUltYWdlLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gdGlsZUltYWdlOwogfQogCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0
dGVybi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBh
dHRlcm4uaAppbmRleCAxZjczMmU0NjM1NzZkOWM5NWM2MGEzYjUyOWEzZDkzYWRkZGRmMDk1Li5i
ODkwZDIyM2NhOGJmYjM2NDlkMTdiM2IyYTgyMDYwM2FjM2ViZTQxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmgK
QEAgLTY0LDkgKzY0LDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgYnVpbGRUaWxlSW1hZ2VUcmFu
c2Zvcm0oUmVuZGVyT2JqZWN0KiwgY29uc3QgUGF0dGVybkF0dHJpYnV0ZXMmLCBjb25zdCBTVkdQ
YXR0ZXJuRWxlbWVudCYsIEZsb2F0UmVjdCYgcGF0dGVybkJvdW5kYXJpZXMsIEFmZmluZVRyYW5z
Zm9ybSYgdGlsZUltYWdlVHJhbnNmb3JtKSBjb25zdDsKIAotICAgIFBhc3NPd25QdHI8SW1hZ2VC
dWZmZXI+IGNyZWF0ZVRpbGVJbWFnZShjb25zdCBQYXR0ZXJuQXR0cmlidXRlcyYsIGNvbnN0IEZs
b2F0UmVjdCYgdGlsZUJvdW5kYXJpZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEZsb2F0UmVjdCYgYWJzb2x1dGVUaWxlQm91bmRhcmllcywgY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiB0aWxlSW1hZ2VUcmFuc2Zvcm0sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZsb2F0UmVjdCYgY2xhbXBlZEFic29sdXRlVGls
ZUJvdW5kYXJpZXMpIGNvbnN0OworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gY3Jl
YXRlVGlsZUltYWdlKGNvbnN0IFBhdHRlcm5BdHRyaWJ1dGVzJiwgY29uc3QgRmxvYXRSZWN0JiB0
aWxlQm91bmRhcmllcywgY29uc3QgRmxvYXRSZWN0JiBhYnNvbHV0ZVRpbGVCb3VuZGFyaWVzLCBj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRpbGVJbWFnZVRyYW5zZm9ybSwgRmxvYXRSZWN0JiBjbGFt
cGVkQWJzb2x1dGVUaWxlQm91bmRhcmllcykgY29uc3Q7CiAKICAgICBQYXR0ZXJuRGF0YSogYnVp
bGRQYXR0ZXJuKFJlbmRlck9iamVjdCosIHVuc2lnbmVkIHNob3J0IHJlc291cmNlTW9kZSk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29u
dGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRl
eHQuY3BwCmluZGV4IGUxOWQ2MGYzNzcxYjhhNmQ5MjJiMTZhYTc2ZDY1YjVlOGM1NGIzYTEuLjY5
YmNkZmFkZmE4ZjFlNDI4ZDBjZDM5ZWRlZDhkMjI3NWEzNWNkMWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtMjIz
LDcgKzIyMyw3IEBAIHZvaWQgU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y2FsY3VsYXRlVHJhbnNmb3Jt
YXRpb25Ub091dGVybW9zdENvb3JkaW5hdGVTeXN0ZW0oY29uCiAgICAgYWJzb2x1dGVUcmFuc2Zv
cm0uc2NhbGUoZGV2aWNlU2NhbGVGYWN0b3IpOwogfQogCi1ib29sIFNWR1JlbmRlcmluZ0NvbnRl
eHQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiBhYnNvbHV0ZVRyYW5zZm9ybSwgT3duUHRyPEltYWdlQnVmZmVyPiYg
aW1hZ2VCdWZmZXIsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJp
bmdNb2RlKQorYm9vbCBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25z
dCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgYWJzb2x1dGVU
cmFuc2Zvcm0sIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4mIGltYWdlQnVmZmVyLCBDb2xv
clNwYWNlIGNvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSkKIHsKICAgICBJ
bnRSZWN0IHBhaW50UmVjdCA9IGNhbGN1bGF0ZUltYWdlQnVmZmVyUmVjdCh0YXJnZXRSZWN0LCBh
YnNvbHV0ZVRyYW5zZm9ybSk7CiAgICAgLy8gRG9uJ3QgY3JlYXRlIGVtcHR5IEltYWdlQnVmZmVy
cy4KQEAgLTIzMSw3ICsyMzEsNyBAQCBib29sIFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUlt
YWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgQQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKICAgICBJbnRTaXplIGNsYW1wZWRTaXplID0gY2xhbXBlZEFic29sdXRl
U2l6ZShwYWludFJlY3Quc2l6ZSgpKTsKLSAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IGltYWdlID0g
SW1hZ2VCdWZmZXI6OmNyZWF0ZShjbGFtcGVkU2l6ZSwgMSwgY29sb3JTcGFjZSwgcmVuZGVyaW5n
TW9kZSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBpbWFnZSA9IEltYWdlQnVm
ZmVyOjpjcmVhdGUoY2xhbXBlZFNpemUsIDEsIGNvbG9yU3BhY2UsIHJlbmRlcmluZ01vZGUpOwog
ICAgIGlmICghaW1hZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMjQzLDExICsyNDMs
MTEgQEAgYm9vbCBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBG
bG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IEEKICAgICBpbWFnZUNvbnRleHQtPnRyYW5zbGF0
ZSgtcGFpbnRSZWN0LngoKSwgLXBhaW50UmVjdC55KCkpOwogICAgIGltYWdlQ29udGV4dC0+Y29u
Y2F0Q1RNKGFic29sdXRlVHJhbnNmb3JtKTsKIAotICAgIGltYWdlQnVmZmVyID0gaW1hZ2UucmVs
ZWFzZSgpOworICAgIGltYWdlQnVmZmVyID0gc3RkOjptb3ZlKGltYWdlKTsKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotYm9vbCBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlckZv
clBhdHRlcm4oY29uc3QgRmxvYXRSZWN0JiBhYnNvbHV0ZVRhcmdldFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgY2xhbXBlZEFic29sdXRlVGFyZ2V0UmVjdCwgT3duUHRyPEltYWdlQnVmZmVyPiYgaW1h
Z2VCdWZmZXIsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdN
b2RlKQorYm9vbCBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlckZvclBhdHRl
cm4oY29uc3QgRmxvYXRSZWN0JiBhYnNvbHV0ZVRhcmdldFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
Y2xhbXBlZEFic29sdXRlVGFyZ2V0UmVjdCwgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiYg
aW1hZ2VCdWZmZXIsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJp
bmdNb2RlKQogewogICAgIEludFNpemUgaW1hZ2VTaXplKHJvdW5kZWRJbnRTaXplKGNsYW1wZWRB
YnNvbHV0ZVRhcmdldFJlY3Quc2l6ZSgpKSk7CiAgICAgSW50U2l6ZSB1bmNsYW1wZWRJbWFnZVNp
emUocm91bmRlZEludFNpemUoYWJzb2x1dGVUYXJnZXRSZWN0LnNpemUoKSkpOwpAQCAtMjU2LDcg
KzI1Niw3IEBAIGJvb2wgU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXJGb3JQ
YXR0ZXJuKGNvbnN0IEZsb2F0UmVjdCYgYWJzb2x1dGVUCiAgICAgaWYgKGltYWdlU2l6ZS5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4g
aW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGltYWdlU2l6ZSwgMSwgY29sb3JTcGFjZSwgcmVu
ZGVyaW5nTW9kZSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBpbWFnZSA9IElt
YWdlQnVmZmVyOjpjcmVhdGUoaW1hZ2VTaXplLCAxLCBjb2xvclNwYWNlLCByZW5kZXJpbmdNb2Rl
KTsKICAgICBpZiAoIWltYWdlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTI2Niw3ICsy
NjYsNyBAQCBib29sIFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyRm9yUGF0
dGVybihjb25zdCBGbG9hdFJlY3QmIGFic29sdXRlVAogICAgIC8vIENvbXBlbnNhdGUgcm91bmRp
bmcgZWZmZWN0cywgYXMgdGhlIGFic29sdXRlIHRhcmdldCByZWN0IGlzIHVzaW5nIGZsb2F0aW5n
LXBvaW50IG51bWJlcnMgYW5kIHRoZSBpbWFnZSBidWZmZXIgc2l6ZSBpcyBpbnRlZ2VyLgogICAg
IGltYWdlQ29udGV4dC0+c2NhbGUoRmxvYXRTaXplKHVuY2xhbXBlZEltYWdlU2l6ZS53aWR0aCgp
IC8gYWJzb2x1dGVUYXJnZXRSZWN0LndpZHRoKCksIHVuY2xhbXBlZEltYWdlU2l6ZS5oZWlnaHQo
KSAvIGFic29sdXRlVGFyZ2V0UmVjdC5oZWlnaHQoKSkpOwogCi0gICAgaW1hZ2VCdWZmZXIgPSBp
bWFnZS5yZWxlYXNlKCk7CisgICAgaW1hZ2VCdWZmZXIgPSBzdGQ6Om1vdmUoaW1hZ2UpOwogICAg
IHJldHVybiB0cnVlOwogfQogCkBAIC0yODcsNyArMjg3LDcgQEAgdm9pZCBTVkdSZW5kZXJpbmdD
b250ZXh0OjpyZW5kZXJTdWJ0cmVlVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciogaW1hZ2UsIFJl
bmRlckUKICAgICBjb250ZW50VHJhbnNmb3JtYXRpb24gPSBzYXZlZENvbnRlbnRUcmFuc2Zvcm1h
dGlvbjsKIH0KIAotdm9pZCBTVkdSZW5kZXJpbmdDb250ZXh0OjpjbGlwVG9JbWFnZUJ1ZmZlcihH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgYWJzb2x1dGVU
cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgT3duUHRyPEltYWdlQnVmZmVy
PiYgaW1hZ2VCdWZmZXIsIGJvb2wgc2FmZVRvQ2xlYXIpCit2b2lkIFNWR1JlbmRlcmluZ0NvbnRl
eHQ6OmNsaXBUb0ltYWdlQnVmZmVyKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgQWZm
aW5lVHJhbnNmb3JtJiBhYnNvbHV0ZVRyYW5zZm9ybSwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRS
ZWN0LCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+JiBpbWFnZUJ1ZmZlciwgYm9vbCBzYWZl
VG9DbGVhcikKIHsKICAgICBBU1NFUlQoY29udGV4dCk7CiAgICAgQVNTRVJUKGltYWdlQnVmZmVy
KTsKQEAgLTMwMyw3ICszMDMsNyBAQCB2b2lkIFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNsaXBUb0lt
YWdlQnVmZmVyKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgQWZmaQogICAgIC8vIFdo
ZW4gbmVzdGluZyByZXNvdXJjZXMsIHdpdGggb2JqZWN0Qm91bmRpbmdCb3ggYXMgY29udGVudCB1
bml0IHR5cGVzLCB0aGVyZSdzIG5vIHVzZSBpbiBjYWNoaW5nIHRoZQogICAgIC8vIHJlc3VsdGlu
ZyBpbWFnZSBidWZmZXIgYXMgdGhlIHBhcmVudCByZXNvdXJjZSBhbHJlYWR5IGNhY2hlcyB0aGUg
cmVzdWx0LgogICAgIGlmIChzYWZlVG9DbGVhciAmJiAhY3VycmVudENvbnRlbnRUcmFuc2Zvcm1h
dGlvbigpLmlzSWRlbnRpdHkoKSkKLSAgICAgICAgaW1hZ2VCdWZmZXIuY2xlYXIoKTsKKyAgICAg
ICAgaW1hZ2VCdWZmZXIucmVzZXQoKTsKIH0KIAogRmxvYXRSZWN0IFNWR1JlbmRlcmluZ0NvbnRl
eHQ6OmNsYW1wZWRBYnNvbHV0ZVRhcmdldFJlY3QoY29uc3QgRmxvYXRSZWN0JiBhYnNvbHV0ZVRh
cmdldFJlY3QpCkBAIC0zMjYsNyArMzI2LDcgQEAgdm9pZCBTVkdSZW5kZXJpbmdDb250ZXh0Ojpj
bGVhcjJEUm90YXRpb24oQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0pCiAgICAgdHJhbnNmb3Jt
LnJlY29tcG9zZShkZWNvbXBvc2l0aW9uKTsKIH0KIAotYm9vbCBTVkdSZW5kZXJpbmdDb250ZXh0
OjpidWZmZXJGb3JlZ3JvdW5kKE93blB0cjxJbWFnZUJ1ZmZlcj4mIGltYWdlQnVmZmVyKQorYm9v
bCBTVkdSZW5kZXJpbmdDb250ZXh0OjpidWZmZXJGb3JlZ3JvdW5kKHN0ZDo6dW5pcXVlX3B0cjxJ
bWFnZUJ1ZmZlcj4mIGltYWdlQnVmZmVyKQogewogICAgIEFTU0VSVChtX3BhaW50SW5mbyk7CiAg
ICAgQVNTRVJUKG1fcmVuZGVyZXItPmlzU1ZHSW1hZ2UoKSk7CkBAIC0zMzgsNyArMzM4LDcgQEAg
Ym9vbCBTVkdSZW5kZXJpbmdDb250ZXh0OjpidWZmZXJGb3JlZ3JvdW5kKE93blB0cjxJbWFnZUJ1
ZmZlcj4mIGltYWdlQnVmZmVyKQogICAgICAgICBJbnRTaXplIGV4cGFuZGVkQm91bmRpbmdCb3gg
PSBleHBhbmRlZEludFNpemUoYm91bmRpbmdCb3guc2l6ZSgpKTsKICAgICAgICAgSW50U2l6ZSBi
dWZmZXJTaXplKHN0YXRpY19jYXN0PGludD4oY2VpbChleHBhbmRlZEJvdW5kaW5nQm94LndpZHRo
KCkgKiB0cmFuc2Zvcm0ueFNjYWxlKCkpKSwgc3RhdGljX2Nhc3Q8aW50PihjZWlsKGV4cGFuZGVk
Qm91bmRpbmdCb3guaGVpZ2h0KCkgKiB0cmFuc2Zvcm0ueVNjYWxlKCkpKSk7CiAgICAgICAgIGlm
IChidWZmZXJTaXplICE9IGltYWdlQnVmZmVyLT5pbnRlcm5hbFNpemUoKSkKLSAgICAgICAgICAg
IGltYWdlQnVmZmVyLmNsZWFyKCk7CisgICAgICAgICAgICBpbWFnZUJ1ZmZlci5yZXNldCgpOwog
ICAgIH0KIAogICAgIC8vIENyZWF0ZSBhIG5ldyBidWZmZXIgYW5kIHBhaW50IHRoZSBmb3JlZ3Jv
dW5kIGludG8gaXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NW
R1JlbmRlcmluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVu
ZGVyaW5nQ29udGV4dC5oCmluZGV4IDJkYTcwY2Q4NmJkNzUwOTkyMWY0MmMxOGIzNzNlMjFkNzA3
OTRmYTUuLmY2ZDhjZjdiN2M2ZjFmN2IwZTgwYzBkYzg4MmNkNmY3MWIzMGJkMTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5oCkBA
IC03NiwxMiArNzYsMTIgQEAgcHVibGljOgogICAgIHZvaWQgcHJlcGFyZVRvUmVuZGVyU1ZHQ29u
dGVudChSZW5kZXJFbGVtZW50JiwgUGFpbnRJbmZvJiwgTmVlZHNHcmFwaGljc0NvbnRleHRTYXZl
ID0gRG9udFNhdmVHcmFwaGljc0NvbnRleHQpOwogICAgIGJvb2wgaXNSZW5kZXJpbmdQcmVwYXJl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyaW5nRmxhZ3MgJiBSZW5kZXJpbmdQcmVwYXJlZDsg
fQogCi0gICAgc3RhdGljIGJvb2wgY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRSZWN0JiBw
YWludFJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgYWJzb2x1dGVUcmFuc2Zvcm0sIE93blB0
cjxJbWFnZUJ1ZmZlcj4mLCBDb2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlKTsKKyAgICBzdGF0aWMg
Ym9vbCBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHBhaW50UmVjdCwgY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiBhYnNvbHV0ZVRyYW5zZm9ybSwgc3RkOjp1bmlxdWVfcHRyPEltYWdl
QnVmZmVyPiYsIENvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGUpOwogICAgIC8vIFBhdHRlcm5zIG5l
ZWQgYSBkaWZmZXJlbnQgZmxvYXQtdG8taW50ZWdlciBjb29yZGluYXRlIG1hcHBpbmcuCi0gICAg
c3RhdGljIGJvb2wgY3JlYXRlSW1hZ2VCdWZmZXJGb3JQYXR0ZXJuKGNvbnN0IEZsb2F0UmVjdCYg
YWJzb2x1dGVUYXJnZXRSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGNsYW1wZWRBYnNvbHV0ZVRhcmdl
dFJlY3QsIE93blB0cjxJbWFnZUJ1ZmZlcj4mLCBDb2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlKTsK
KyAgICBzdGF0aWMgYm9vbCBjcmVhdGVJbWFnZUJ1ZmZlckZvclBhdHRlcm4oY29uc3QgRmxvYXRS
ZWN0JiBhYnNvbHV0ZVRhcmdldFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgY2xhbXBlZEFic29sdXRl
VGFyZ2V0UmVjdCwgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiYsIENvbG9yU3BhY2UsIFJl
bmRlcmluZ01vZGUpOwogCiAgICAgc3RhdGljIHZvaWQgcmVuZGVyU3VidHJlZVRvSW1hZ2VCdWZm
ZXIoSW1hZ2VCdWZmZXIqLCBSZW5kZXJFbGVtZW50JiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJik7
Ci0gICAgc3RhdGljIHZvaWQgY2xpcFRvSW1hZ2VCdWZmZXIoR3JhcGhpY3NDb250ZXh0KiwgY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiBhYnNvbHV0ZVRyYW5zZm9ybSwgY29uc3QgRmxvYXRSZWN0JiB0
YXJnZXRSZWN0LCBPd25QdHI8SW1hZ2VCdWZmZXI+JiwgYm9vbCBzYWZlVG9DbGVhcik7CisgICAg
c3RhdGljIHZvaWQgY2xpcFRvSW1hZ2VCdWZmZXIoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgQWZm
aW5lVHJhbnNmb3JtJiBhYnNvbHV0ZVRyYW5zZm9ybSwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRS
ZWN0LCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+JiwgYm9vbCBzYWZlVG9DbGVhcik7CiAK
ICAgICBzdGF0aWMgZmxvYXQgY2FsY3VsYXRlU2NyZWVuRm9udFNpemVTY2FsaW5nRmFjdG9yKGNv
bnN0IFJlbmRlck9iamVjdCopOwogICAgIHN0YXRpYyB2b2lkIGNhbGN1bGF0ZVRyYW5zZm9ybWF0
aW9uVG9PdXRlcm1vc3RDb29yZGluYXRlU3lzdGVtKGNvbnN0IFJlbmRlck9iamVjdCosIEFmZmlu
ZVRyYW5zZm9ybSYgYWJzb2x1dGVUcmFuc2Zvcm0pOwpAQCAtOTUsNyArOTUsNyBAQCBwdWJsaWM6
CiAgICAgfQogCiAgICAgLy8gU3VwcG9ydCBmb3IgdGhlIGJ1ZmZlcmVkLXJlbmRlcmluZyBoaW50
LgotICAgIGJvb2wgYnVmZmVyRm9yZWdyb3VuZChPd25QdHI8SW1hZ2VCdWZmZXI+Jik7CisgICAg
Ym9vbCBidWZmZXJGb3JlZ3JvdW5kKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4mKTsKIAog
cHJpdmF0ZToKICAgICAvLyBUbyBwcm9wZXJseSByZXZlcnQgcGFydGlhbGx5IHN1Y2Nlc3NmdWwg
aW5pdGlhbGl6dGlvbnMgaW4gdGhlIGRlc3RydWN0b3IsIHdlIHJlY29yZCBhbGwgc3VjY2Vzc2Z1
bCBzdGVwcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFn
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCmluZGV4IDUw
NTk4YmJjZTc3Y2YwODU1Y2E1NzNmZjNjMjFkMTg0ZmViYjdmNTcuLjZkN2IyNTZmNjQ4N2E3YTFk
NzYyMmZjZjZkMWU1YWM5YWUyNDJhOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9n
cmFwaGljcy9TVkdJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NW
R0ltYWdlLmNwcApAQCAtMTcwLDcgKzE3MCw3IEBAIFBhc3NOYXRpdmVJbWFnZVB0ciBTVkdJbWFn
ZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKQogICAgIGlmICghbV9wYWdlKQogICAgICAg
ICByZXR1cm4gMDsKIAotICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gYnVmZmVyID0gSW1hZ2VCdWZm
ZXI6OmNyZWF0ZShzaXplKCksIDEpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4g
YnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplKCksIDEpOwogICAgIGlmICghYnVmZmVy
KSAvLyBmYWlsZWQgdG8gYWxsb2NhdGUgaW1hZ2UKICAgICAgICAgcmV0dXJuIDA7CiAKQEAgLTE5
Niw3ICsxOTYsNyBAQCB2b2lkIFNWR0ltYWdlOjpkcmF3UGF0dGVybkZvckNvbnRhaW5lcihHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0U2l6ZQogICAgIEZsb2F0UmVjdCBpbWFn
ZUJ1ZmZlclNpemUgPSB6b29tZWRDb250YWluZXJSZWN0OwogICAgIGltYWdlQnVmZmVyU2l6ZS5z
Y2FsZShpbWFnZUJ1ZmZlclNjYWxlLndpZHRoKCksIGltYWdlQnVmZmVyU2NhbGUuaGVpZ2h0KCkp
OwogCi0gICAgT3duUHRyPEltYWdlQnVmZmVyPiBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRl
KGV4cGFuZGVkSW50U2l6ZShpbWFnZUJ1ZmZlclNpemUuc2l6ZSgpKSwgMSk7CisgICAgc3RkOjp1
bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGV4cGFu
ZGVkSW50U2l6ZShpbWFnZUJ1ZmZlclNpemUuc2l6ZSgpKSwgMSk7CiAgICAgaWYgKCFidWZmZXIp
IC8vIEZhaWxlZCB0byBhbGxvY2F0ZSBidWZmZXIuCiAgICAgICAgIHJldHVybjsKICAgICBkcmF3
Rm9yQ29udGFpbmVyKGJ1ZmZlci0+Y29udGV4dCgpLCBjb250YWluZXJTaXplLCB6b29tLCBpbWFn
ZUJ1ZmZlclNpemUsIHpvb21lZENvbnRhaW5lclJlY3QsIENvbG9yU3BhY2VEZXZpY2VSR0IsIENv
bXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZU5vcm1hbCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217773</attachid>
            <date>2013-11-24 22:36:47 -0800</date>
            <delta_ts>2013-11-24 22:57:50 -0800</delta_ts>
            <desc>v2</desc>
            <filename>bug-124822-20131124223646.patch</filename>
            <type>text/plain</type>
            <size>55235</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU5NzMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDU1OWU4MWZhZWZiMjRi
MzQwZWRjMTM2OWNiMzVlZDhmZTliNzVjOC4uYTIwYTg2YjYxZTNiNzIwNTdlZjE0NDgyOGU3NGY5
NTFjZjE3YWYwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMCBAQAorMjAxMy0xMS0yNCAgQnJp
YW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rvbi5lZHU+CisKKyAgICAgICAgSW1hZ2VCdWZm
ZXI6OmNyZWF0ZSBzaG91bGQgcmV0dXJuIGEgc3RkOjp1bmlxdWVfcHRyIGluc3RlYWQgb2YgT3du
UHRyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0
ODIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVw
bGFjZSBhbGwgdXNlcyBvZiBPd25QdHI8SW1hZ2VCdWZmZXI+IGFuZCBQYXNzT3duUHRyPEltYWdl
QnVmZmVyPiB3aXRoCisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4uIFJlcGxh
Y2UgY2FsbHMgdG8gT3duUHRyOjpjbGVhcigpIGFuZAorICAgICAgICBPd25QdHI6OnJlbGVhc2Uo
KSB3aXRoIHJlc2V0KCkgYW5kIHN0ZDo6bW92ZSgpLiBSZW1vdmUgdW5uZWNlc3NhcnkgaW5jbHVk
ZXMuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBUaGlzIGlzIGEgbWVjaGFuaWNhbCByZWZhY3Rv
cmluZy4KKworICAgICAgICAqIGNzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNTU0ZpbHRlckltYWdlVmFsdWU6OmltYWdlKToKKyAgICAgICAgKiBodG1sL0hU
TUxDYW52YXNFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDYW52YXNFbGVtZW50
OjpzZXRTdXJmYWNlU2l6ZSk6CisgICAgICAgICogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oOgor
ICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNyZWF0ZUNvbXBvc2l0aW5n
QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZnVs
bENhbnZhc0NvbXBvc2l0ZWREcmF3SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjpmdWxsQ2FudmFzQ29tcG9zaXRlZEZpbGwpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3VGV4dEludGVybmFsKToKKyAgICAg
ICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaDoKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpMUlVJbWFnZUJ1ZmZlckNhY2hlOjpMUlVJbWFnZUJ1ZmZl
ckNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6TFJVSW1h
Z2VCdWZmZXJDYWNoZTo6aW1hZ2VCdWZmZXIpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAqIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbEVs
ZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRh
aW5lckVsZW1lbnQ6OmNyZWF0ZVRleHRUcmFja1JlcHJlc2VudGF0aW9uSW1hZ2UpOgorICAgICAg
ICAqIHBhZ2UvRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6Om5vZGVJbWFnZSk6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6ZHJhZ0ltYWdlRm9yU2VsZWN0aW9uKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpCaXRtYXBJbWFnZTo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyb3NzZmFk
ZUdlbmVyYXRlZEltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhZGllbnRJbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZUNv
bXBhdGlibGVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU2hh
ZG93Qmx1ci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJD
Ry5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6cHV0Qnl0ZUFycmF5KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RkVUaWxlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRmlsdGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXI6OnNldFNv
dXJjZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVm
ZmVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNsZWFyUmVzdWx0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIu
aDoKKyAgICAgICAgKiByZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbmxpbmVUZXh0Qm94OjpwYWludERlY29yYXRpb24pOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hN
b2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZCk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlclRoZW1lTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnBh
aW50UHJvZ3Jlc3NCYXIpOgorICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcGU6OmNyZWF0ZVNoYXBlKToKKyAgICAgICAgKiByZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0lt
YWdlOjppbnZhbGlkYXRlQnVmZmVyZWRGb3JlZ3JvdW5kKToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR0ltYWdlLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
ZXNvdXJjZUNsaXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VD
bGlwcGVyOjphcHBseUNsaXBwaW5nVG9Db250ZXh0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVz
b3VyY2VGaWx0ZXI6OmFwcGx5UmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZH
UmVzb3VyY2VGaWx0ZXI6OnBvc3RBcHBseVJlc291cmNlKToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcDogUmVtb3ZlIG1ldGhvZCBwYXJhbWV0ZXIgd3Jh
cHBpbmcvaW5kZW50YXRpb24uCisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVNYXNrQW5kU3dhcENv
bnRleHRGb3JUZXh0R3JhZGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6Y2xpcFRvVGV4dE1hc2sp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudDo6YXBwbHlSZXNv
dXJjZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6YXBwbHlSZXNvdXJj
ZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5oOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcDogUmVt
b3ZlIG1ldGhvZCBwYXJhbWV0ZXIgd3JhcHBpbmcvaW5kZW50YXRpb24uCisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm46OmJ1aWxkUGF0dGVybik6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm46OmNyZWF0ZVRpbGVJbWFnZSk6CisgICAg
ICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uaDogUmVtb3ZlIG1l
dGhvZCBwYXJhbWV0ZXIgd3JhcHBpbmcvaW5kZW50YXRpb24uCisgICAgICAgICogcmVuZGVyaW5n
L3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRl
cmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Jl
bmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyRm9yUGF0dGVybik6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdSZW5kZXJpbmdDb250ZXh0OjpjbGlwVG9JbWFnZUJ1ZmZlcik6CisgICAgICAg
IChXZWJDb3JlOjpTVkdSZW5kZXJpbmdDb250ZXh0OjpidWZmZXJGb3JlZ3JvdW5kKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuaDoKKyAgICAgICAgKiBzdmcv
Z3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2U6Om5hdGl2
ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpkcmF3
UGF0dGVybkZvckNvbnRhaW5lcik6CisKIDIwMTMtMTEtMjMgIFhhYmllciBSb2RyaWd1ZXogQ2Fs
dmFyICA8Y2FsdmFyaXNAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1N0cmVhbWVyXSBSZW1vdmUg
MC4xMCBjb2RlcGF0aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlcklt
YWdlVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3Bw
CmluZGV4IGY3NDk1ZDk3MzM5MWFjOWY1ZGVlNjVkZTYzNzJiMDgzYTQ5NTNlYjEuLmYyMTdhOGE2
OTIzYWVhOTJkZWZhYjQ4NWRmNzY4MjZiOGJiOWFkNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHAKQEAgLTExMywxMyArMTEzLDEzIEBAIFBhc3NSZWZQdHI8
SW1hZ2U+IENTU0ZpbHRlckltYWdlVmFsdWU6OmltYWdlKFJlbmRlckVsZW1lbnQqIHJlbmRlcmVy
LCBjb25zdCBJbnRTCiAgICAgICAgIHJldHVybiBJbWFnZTo6bnVsbEltYWdlKCk7CiAKICAgICAv
LyBUcmFuc2Zvcm0gSW1hZ2UgaW50byBJbWFnZUJ1ZmZlci4KLSAgICBPd25QdHI8SW1hZ2VCdWZm
ZXI+IHRleHR1cmUgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUpOworICAgIHN0ZDo6dW5pcXVl
X3B0cjxJbWFnZUJ1ZmZlcj4gdGV4dHVyZSA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSk7CiAg
ICAgaWYgKCF0ZXh0dXJlKQogICAgICAgICByZXR1cm4gSW1hZ2U6Om51bGxJbWFnZSgpOwogICAg
IHRleHR1cmUtPmNvbnRleHQoKS0+ZHJhd0ltYWdlKGltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdC
LCBJbnRQb2ludCgpKTsKIAogICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3RSZW5kZXJlcj4gZmlsdGVy
UmVuZGVyZXIgPSBGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6Y3JlYXRlKCk7Ci0gICAgZmlsdGVyUmVu
ZGVyZXItPnNldFNvdXJjZUltYWdlKHRleHR1cmUucmVsZWFzZSgpKTsKKyAgICBmaWx0ZXJSZW5k
ZXJlci0+c2V0U291cmNlSW1hZ2Uoc3RkOjptb3ZlKHRleHR1cmUpKTsKICAgICBmaWx0ZXJSZW5k
ZXJlci0+c2V0U291cmNlSW1hZ2VSZWN0KEZsb2F0UmVjdChGbG9hdFBvaW50KCksIHNpemUpKTsK
ICAgICBmaWx0ZXJSZW5kZXJlci0+c2V0RmlsdGVyUmVnaW9uKEZsb2F0UmVjdChGbG9hdFBvaW50
KCksIHNpemUpKTsKICAgICBpZiAoIWZpbHRlclJlbmRlcmVyLT5idWlsZChyZW5kZXJlciwgbV9m
aWx0ZXJPcGVyYXRpb25zLCBGaWx0ZXJGdW5jdGlvbikpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TENhbnZhc0VsZW1lbnQuY3BwCmluZGV4IGVkY2VjNjQzYWRmMjBiYTQxZmZkZTlmNzA0ZGRjODU1
NTU0MzIwYzcuLjlmOGFjZWM5NTNjNGRmNmNiMjUyYjA3NzhjODIwMGU3MzdhYTU0MzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCkBAIC00NDcsNyArNDQ3LDcg
QEAgdm9pZCBIVE1MQ2FudmFzRWxlbWVudDo6c2V0U3VyZmFjZVNpemUoY29uc3QgSW50U2l6ZSYg
c2l6ZSkKICAgICBtX3NpemUgPSBzaXplOwogICAgIG1faGFzQ3JlYXRlZEltYWdlQnVmZmVyID0g
ZmFsc2U7CiAgICAgbV9jb250ZXh0U3RhdGVTYXZlci5jbGVhcigpOwotICAgIG1faW1hZ2VCdWZm
ZXIuY2xlYXIoKTsKKyAgICBtX2ltYWdlQnVmZmVyLnJlc2V0KCk7CiAgICAgY2xlYXJDb3BpZWRJ
bWFnZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmgKaW5kZXgg
NjU5M2I1MWNlOGE0NWY0ODFkNWZmZWQxMjA4OTMzZDgwYzQ2Y2Q2NC4uYzQyMWFlZWMwOTk5MWE2
NTc5ZjY1ZmZkNDg4YmM1NDk5Zjk1MjVhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQ2FudmFzRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZh
c0VsZW1lbnQuaApAQCAtMTc5LDcgKzE3OSw3IEBAIHByaXZhdGU6CiAgICAgLy8gbV9jcmVhdGVk
SW1hZ2VCdWZmZXIgbWVhbnMgd2UgdHJpZWQgdG8gbWFsbG9jIHRoZSBidWZmZXIuICBXZSBkaWRu
J3QgbmVjZXNzYXJpbHkgZ2V0IGl0LgogICAgIG11dGFibGUgYm9vbCBtX2hhc0NyZWF0ZWRJbWFn
ZUJ1ZmZlcjsKICAgICBtdXRhYmxlIGJvb2wgbV9kaWRDbGVhckltYWdlQnVmZmVyOwotICAgIG11
dGFibGUgT3duUHRyPEltYWdlQnVmZmVyPiBtX2ltYWdlQnVmZmVyOworICAgIG11dGFibGUgc3Rk
Ojp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBtX2ltYWdlQnVmZmVyOwogICAgIG11dGFibGUgT3du
UHRyPEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXI+IG1fY29udGV4dFN0YXRlU2F2ZXI7CiAgICAg
CiAgICAgbXV0YWJsZSBSZWZQdHI8SW1hZ2U+IG1fcHJlc2VudGVkSW1hZ2U7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNw
cAppbmRleCA3ODkwZWI4YWJhZDc4MzY1YzNkNzM3ZTdhMDVhODJmOGE3NmQ2NTVhLi41ZGVhM2Nh
YzNiMmUxZmExNTU5NjdmMzQwOGRkM2JhZjNiYjVhNmFiIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKQEAgLTE1
NDQsNyArMTU0NCw3IEBAIHRlbXBsYXRlPGNsYXNzIFQ+IEludFJlY3QgQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEOjpjYWxjdWxhdGVDb21wb3NpdGluZ0J1ZmZlclJlCiAgICAgcmV0dXJuIGJ1ZmZl
clJlY3Q7CiB9CiAKLU93blB0cjxJbWFnZUJ1ZmZlcj4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
OjpjcmVhdGVDb21wb3NpdGluZ0J1ZmZlcihjb25zdCBJbnRSZWN0JiBidWZmZXJSZWN0KQorc3Rk
Ojp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNyZWF0
ZUNvbXBvc2l0aW5nQnVmZmVyKGNvbnN0IEludFJlY3QmIGJ1ZmZlclJlY3QpCiB7CiAgICAgUmVu
ZGVyaW5nTW9kZSByZW5kZXJNb2RlID0gaXNBY2NlbGVyYXRlZCgpID8gQWNjZWxlcmF0ZWQgOiBV
bmFjY2VsZXJhdGVkOwogICAgIHJldHVybiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGJ1ZmZlclJlY3Qu
c2l6ZSgpLCAxLCBDb2xvclNwYWNlRGV2aWNlUkdCLCByZW5kZXJNb2RlKTsKQEAgLTE1OTMsNyAr
MTU5Myw3IEBAIHRlbXBsYXRlPGNsYXNzIFQ+IHZvaWQgIENhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RDo6ZnVsbENhbnZhc0NvbXBvc2l0ZWREcmF3SW1hZ2UoCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IGJ1ZmZlciA9IGNyZWF0ZUNvbXBvc2l0aW5nQnVm
ZmVyKGJ1ZmZlclJlY3QpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gYnVmZmVy
ID0gY3JlYXRlQ29tcG9zaXRpbmdCdWZmZXIoYnVmZmVyUmVjdCk7CiAgICAgaWYgKCFidWZmZXIp
CiAgICAgICAgIHJldHVybjsKIApAQCAtMTYyMyw3ICsxNjIzLDcgQEAgdGVtcGxhdGU8Y2xhc3Mg
VD4gdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZ1bGxDYW52YXNDb21wb3NpdGVkRmls
bChjb25zdAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgT3duUHRyPEltYWdlQnVmZmVy
PiBidWZmZXIgPSBjcmVhdGVDb21wb3NpdGluZ0J1ZmZlcihidWZmZXJSZWN0KTsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGJ1ZmZlciA9IGNyZWF0ZUNvbXBvc2l0aW5nQnVmZmVy
KGJ1ZmZlclJlY3QpOwogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm47CiAKQEAgLTIy
MzQsNyArMjIzNCw3IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3VGV4dElu
dGVybmFsKGNvbnN0IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxvCiAgICAgaWYgKGRyYXdTdHls
ZS5jYW52YXNHcmFkaWVudCgpIHx8IGRyYXdTdHlsZS5jYW52YXNQYXR0ZXJuKCkpIHsKICAgICAg
ICAgSW50UmVjdCBtYXNrUmVjdCA9IGVuY2xvc2luZ0ludFJlY3QodGV4dFJlY3QpOwogCi0gICAg
ICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gbWFza0ltYWdlID0gYy0+Y3JlYXRlQ29tcGF0aWJsZUJ1
ZmZlcihtYXNrUmVjdC5zaXplKCkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZm
ZXI+IG1hc2tJbWFnZSA9IGMtPmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIobWFza1JlY3Quc2l6ZSgp
KTsKIAogICAgICAgICBHcmFwaGljc0NvbnRleHQqIG1hc2tJbWFnZUNvbnRleHQgPSBtYXNrSW1h
Z2UtPmNvbnRleHQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9D
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaAppbmRleCBkMTY3YTdkODcxMTMwOTcwZTJlOWVmMzYx
ZDViNDAxZDVkYjRkZWNkLi45MjQ4NWE5ZTAwZGI1NTg5MmE1Mjk5NzgyMTg0ODA5ZTg0ZTk5NTk2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQuaApAQCAtMzEyLDcgKzMxMiw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCByZWN0
Q29udGFpbnNDYW52YXMoY29uc3QgRmxvYXRSZWN0JikgY29uc3Q7CiAKICAgICB0ZW1wbGF0ZTxj
bGFzcyBUPiBJbnRSZWN0IGNhbGN1bGF0ZUNvbXBvc2l0aW5nQnVmZmVyUmVjdChjb25zdCBUJiwg
SW50U2l6ZSopOwotICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlQ29tcG9zaXRpbmdCdWZm
ZXIoY29uc3QgSW50UmVjdCYpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gY3Jl
YXRlQ29tcG9zaXRpbmdCdWZmZXIoY29uc3QgSW50UmVjdCYpOwogICAgIHZvaWQgY29tcG9zaXRl
QnVmZmVyKEltYWdlQnVmZmVyKiwgY29uc3QgSW50UmVjdCYsIENvbXBvc2l0ZU9wZXJhdG9yKTsK
IAogICAgIHZvaWQgaW5mbGF0ZVN0cm9rZVJlY3QoRmxvYXRSZWN0JikgY29uc3Q7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcApp
bmRleCA3NDQyYTU0NWJjZTQ3OWMxNDQxYTM4ZGY0OGFhYjI1ODJlY2Y4ZjE3Li5mOGVjMjE5NzNk
MTg2NjQ5MDQ2N2NmZjQ5MTAwZjE2ZDNmZTVhNzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTU5MzEsNyArNTkz
MSw3IEBAIFN0cmluZyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmVuc3VyZU5vdE51bGwoY29uc3Qg
U3RyaW5nJiB0ZXh0KSBjb25zdAogfQogCiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OkxSVUltYWdl
QnVmZmVyQ2FjaGU6OkxSVUltYWdlQnVmZmVyQ2FjaGUoaW50IGNhcGFjaXR5KQotICAgIDogbV9i
dWZmZXJzKHN0ZDo6bWFrZV91bmlxdWU8T3duUHRyPEltYWdlQnVmZmVyPltdPihjYXBhY2l0eSkp
CisgICAgOiBtX2J1ZmZlcnMoc3RkOjptYWtlX3VuaXF1ZTxzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VC
dWZmZXI+W10+KGNhcGFjaXR5KSkKICAgICAsIG1fY2FwYWNpdHkoY2FwYWNpdHkpCiB7CiB9CkBA
IC01OTQ5LDExICs1OTQ5LDExIEBAIEltYWdlQnVmZmVyKiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OkxSVUltYWdlQnVmZmVyQ2FjaGU6OmltYWdlQnVmZmVyKGNvbnN0IEludFNpCiAgICAgICAgIHJl
dHVybiBidWY7CiAgICAgfQogCi0gICAgT3duUHRyPEltYWdlQnVmZmVyPiB0ZW1wID0gSW1hZ2VC
dWZmZXI6OmNyZWF0ZShzaXplLCAxKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+
IHRlbXAgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIDEpOwogICAgIGlmICghdGVtcCkKICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgaSA9IHN0ZDo6bWluKG1fY2FwYWNpdHkgLSAxLCBpKTsKLSAg
ICBtX2J1ZmZlcnNbaV0gPSB0ZW1wLnJlbGVhc2UoKTsKKyAgICBtX2J1ZmZlcnNbaV0gPSBzdGQ6
Om1vdmUodGVtcCk7CiAKICAgICBJbWFnZUJ1ZmZlciogYnVmID0gbV9idWZmZXJzW2ldLmdldCgp
OwogICAgIGJ1YmJsZVRvRnJvbnQoaSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oCmluZGV4IDRmODhiNDRlMGU1NDQwYzkxYmJjMjFj
NGRjZTk1MjQwMTRjZWI0N2EuLjVkZTY4YzNlMzE5M2MzNDU3YzcxMGQ0NTQwMWEzOWVjMTk5NDE3
NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5n
Q29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5n
Q29udGV4dC5oCkBAIC00NzEsNyArNDcxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgSW1hZ2VCdWZm
ZXIqIGltYWdlQnVmZmVyKGNvbnN0IEludFNpemUmIHNpemUpOwogICAgIHByaXZhdGU6CiAgICAg
ICAgIHZvaWQgYnViYmxlVG9Gcm9udChpbnQgaWR4KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PE93blB0cjxJbWFnZUJ1ZmZlcj5bXT4gbV9idWZmZXJzOworICAgICAgICBzdGQ6OnVuaXF1ZV9w
dHI8c3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPltdPiBtX2J1ZmZlcnM7CiAgICAgICAgIGlu
dCBtX2NhcGFjaXR5OwogICAgIH07CiAgICAgTFJVSW1hZ2VCdWZmZXJDYWNoZSBtX2dlbmVyYXRl
ZEltYWdlQ2FjaGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRp
YUNvbnRyb2xFbGVtZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNv
bnRyb2xFbGVtZW50cy5jcHAKaW5kZXggY2FiYzVkZGNhNGFmNjM0Y2IzZThmMjFhY2RlOTRjZjk5
NTNkMWI2NC4uOTZkZGViNWVjOGM3YjNlYTFjNDkzNjI0NjMzOThhZTAyNWJlY2M5MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNw
cApAQCAtMTQxNSw3ICsxNDE1LDcgQEAgUGFzc1JlZlB0cjxJbWFnZT4gTWVkaWFDb250cm9sVGV4
dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlVGV4dFRyYWNrUmVwcmVzZW4KIAogICAgIElu
dFJlY3QgcGFpbnRpbmdSZWN0ID0gSW50UmVjdChJbnRQb2ludCgpLCBsYXllci0+c2l6ZSgpKTsK
IAotICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gYnVmZmVyKEltYWdlQnVmZmVyOjpjcmVhdGUocGFp
bnRpbmdSZWN0LnNpemUoKSwgZGV2aWNlU2NhbGVGYWN0b3IsIENvbG9yU3BhY2VEZXZpY2VSR0Ip
KTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGJ1ZmZlcihJbWFnZUJ1ZmZlcjo6
Y3JlYXRlKHBhaW50aW5nUmVjdC5zaXplKCksIGRldmljZVNjYWxlRmFjdG9yLCBDb2xvclNwYWNl
RGV2aWNlUkdCKSk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWUuY3BwCmluZGV4IGQyM2JhNWY0MmFlNDAwMDA0ZTBiMWZiNjRjOTIzMGM3
NzI5Yjg2MjIuLjVmM2Y3OGFkYTg1ODk5NzQwMDM2YjkzMmExNTUwOTMzZmQ4NTc1NDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWUuY3BwCkBAIC0xMDIyLDcgKzEwMjIsNyBAQCBEcmFnSW1hZ2VSZWYgRnJhbWU6
Om5vZGVJbWFnZShOb2RlKiBub2RlKQogICAgIHBhaW50aW5nUmVjdC5zZXRXaWR0aChwYWludGlu
Z1JlY3Qud2lkdGgoKSAqIGRldmljZVNjYWxlRmFjdG9yKTsKICAgICBwYWludGluZ1JlY3Quc2V0
SGVpZ2h0KHBhaW50aW5nUmVjdC5oZWlnaHQoKSAqIGRldmljZVNjYWxlRmFjdG9yKTsKIAotICAg
IE93blB0cjxJbWFnZUJ1ZmZlcj4gYnVmZmVyKEltYWdlQnVmZmVyOjpjcmVhdGUocGFpbnRpbmdS
ZWN0LnNpemUoKSwgZGV2aWNlU2NhbGVGYWN0b3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpKTsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGJ1ZmZlcihJbWFnZUJ1ZmZlcjo6Y3JlYXRl
KHBhaW50aW5nUmVjdC5zaXplKCksIGRldmljZVNjYWxlRmFjdG9yLCBDb2xvclNwYWNlRGV2aWNl
UkdCKSk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGJ1
ZmZlci0+Y29udGV4dCgpLT50cmFuc2xhdGUoLXBhaW50aW5nUmVjdC54KCksIC1wYWludGluZ1Jl
Y3QueSgpKTsKQEAgLTEwNTYsNyArMTA1Niw3IEBAIERyYWdJbWFnZVJlZiBGcmFtZTo6ZHJhZ0lt
YWdlRm9yU2VsZWN0aW9uKCkKICAgICBwYWludGluZ1JlY3Quc2V0V2lkdGgocGFpbnRpbmdSZWN0
LndpZHRoKCkgKiBkZXZpY2VTY2FsZUZhY3Rvcik7CiAgICAgcGFpbnRpbmdSZWN0LnNldEhlaWdo
dChwYWludGluZ1JlY3QuaGVpZ2h0KCkgKiBkZXZpY2VTY2FsZUZhY3Rvcik7CiAKLSAgICBPd25Q
dHI8SW1hZ2VCdWZmZXI+IGJ1ZmZlcihJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHBhaW50aW5nUmVjdC5z
aXplKCksIGRldmljZVNjYWxlRmFjdG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKSk7CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBidWZmZXIoSW1hZ2VCdWZmZXI6OmNyZWF0ZShwYWlu
dGluZ1JlY3Quc2l6ZSgpLCBkZXZpY2VTY2FsZUZhY3RvciwgQ29sb3JTcGFjZURldmljZVJHQikp
OwogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gMDsKICAgICBidWZmZXItPmNvbnRl
eHQoKS0+dHJhbnNsYXRlKC1wYWludGluZ1JlY3QueCgpLCAtcGFpbnRpbmdSZWN0LnkoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKaW5k
ZXggZjI0ZDY1OTA2NzY2NDFlNmNiZTk2N2RkMDNhNzlhZTY0N2YyNjczMy4uNmZiMWNmYjI3ZGYx
N2Q3NzFjOTk3NTVhODE2M2VlZGVkZDc5MmU4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcApAQCAtNTE1LDcgKzUxNSw3IEBAIHZvaWQg
Qml0bWFwSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogY3R4dCwgY29uc3QgRmxv
YXRSZWN0JiB0aWxlUmVjdCwKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAoIW1fY2Fj
aGVkSW1hZ2UpIHsKLSAgICAgICAgT3duUHRyPEltYWdlQnVmZmVyPiBidWZmZXIgPSBJbWFnZUJ1
ZmZlcjo6Y3JlYXRlKGV4cGFuZGVkSW50U2l6ZSh0aWxlUmVjdC5zaXplKCkpKTsKKyAgICAgICAg
c3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRl
KGV4cGFuZGVkSW50U2l6ZSh0aWxlUmVjdC5zaXplKCkpKTsKICAgICAgICAgQVNTRVJUKGJ1ZmZl
ci5nZXQoKSk7CiAKICAgICAgICAgSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIgPSBpbWFnZU9ic2Vy
dmVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9z
c2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAKaW5kZXggYjBkYjJkZmVkYzM4MTNjODcwMmI3
MDU1NDI5YzFlNjU1NTU2ZjJmOC4uZGIxNjU0MTczZjUzODliNzk5NzQ0NDdjY2Y5YjQ5MDVjNmE2
MTM4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3Nm
YWRlR2VuZXJhdGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmNwcApAQCAtOTgsNyArOTgsNyBAQCB2b2lkIENy
b3NzZmFkZUdlbmVyYXRlZEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29u
c3QgRmxvYXRSZWN0JiBkcwogCiB2b2lkIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpkcmF3UGF0
dGVybihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50
JiBwaGFzZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNv
bXBvc2l0ZU9wLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIEJsZW5kTW9kZSkKIHsKLSAgICBP
d25QdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXpl
KCksIDEsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGNvbnRleHQtPmlzQWNjZWxlcmF0ZWRDb250ZXh0
KCkgPyBBY2NlbGVyYXRlZCA6IFVuYWNjZWxlcmF0ZWQpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJ
bWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgMSwg
Q29sb3JTcGFjZURldmljZVJHQiwgY29udGV4dC0+aXNBY2NlbGVyYXRlZENvbnRleHQoKSA/IEFj
Y2VsZXJhdGVkIDogVW5hY2NlbGVyYXRlZCk7CiAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKICAgICAg
ICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFkaWVudEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFk
aWVudEltYWdlLmgKaW5kZXggYWFiYTI3MzI3YzYwYWM4MDFhZjc2ODcwMzdhMzU0YTA1NTlmNGU4
NS4uMTRjODJhOGNkOTc5ODU5YmM2MjNlOGJiZTZjOTYwMjYxNGE3Njk2NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuaApAQCAtNTcsNyAr
NTcsNyBAQCBwcm90ZWN0ZWQ6CiAKIHByaXZhdGU6CiAgICAgUmVmUHRyPEdyYWRpZW50PiBtX2dy
YWRpZW50OwotICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gbV9jYWNoZWRJbWFnZUJ1ZmZlcjsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IG1fY2FjaGVkSW1hZ2VCdWZmZXI7CiAgICAg
SW50U2l6ZSBtX2NhY2hlZEFkanVzdGVkU2l6ZTsKICAgICB1bnNpZ25lZCBtX2NhY2hlZEdlbmVy
YXRvckhhc2g7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5jcHAKaW5kZXggZjIxZjkxNGQxNmE2OWIxZjkzOTBmMTUzNmQ2OTJl
NGM0YTQ4YTljYi4uMGM0NWViZTA3NzIyODA3YzI3MzUyMGQ4MThlNTZhNGE4YmRhMTFlOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuY3BwCkBAIC04MDMsNyArODAzLDcgQEAgc3RhdGljIGJvb2wgc2NhbGVzTWF0Y2goQWZmaW5l
VHJhbnNmb3JtIGEsIEFmZmluZVRyYW5zZm9ybSBiKQogICAgIHJldHVybiBhLnhTY2FsZSgpID09
IGIueFNjYWxlKCkgJiYgYS55U2NhbGUoKSA9PSBiLnlTY2FsZSgpOwogfQogCi1QYXNzT3duUHRy
PEltYWdlQnVmZmVyPiBHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29u
c3QgSW50U2l6ZSYgc2l6ZSwgYm9vbCBoYXNBbHBoYSkgY29uc3QKK3N0ZDo6dW5pcXVlX3B0cjxJ
bWFnZUJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0OjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0
IEludFNpemUmIHNpemUsIGJvb2wgaGFzQWxwaGEpIGNvbnN0CiB7CiAgICAgLy8gTWFrZSB0aGUg
YnVmZmVyIGxhcmdlciBpZiB0aGUgY29udGV4dCdzIHRyYW5zZm9ybSBpcyBzY2FsaW5nIGl0IHNv
IHdlIG5lZWQgYSBoaWdoZXIKICAgICAvLyByZXNvbHV0aW9uIHRoYW4gb25lIHBpeGVsIHBlciB1
bml0LiBBbHNvIHNldCB1cCBhIGNvcnJlc3BvbmRpbmcgc2NhbGUgZmFjdG9yIG9uIHRoZQpAQCAt
ODEyLDE0ICs4MTIsMTQgQEAgUGFzc093blB0cjxJbWFnZUJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0
OjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0IEludFNpemUmIHMKICAgICBBZmZpbmVUcmFu
c2Zvcm0gdHJhbnNmb3JtID0gZ2V0Q1RNKERlZmluaXRlbHlJbmNsdWRlRGV2aWNlU2NhbGUpOwog
ICAgIEludFNpemUgc2NhbGVkU2l6ZShzdGF0aWNfY2FzdDxpbnQ+KGNlaWwoc2l6ZS53aWR0aCgp
ICogdHJhbnNmb3JtLnhTY2FsZSgpKSksIHN0YXRpY19jYXN0PGludD4oY2VpbChzaXplLmhlaWdo
dCgpICogdHJhbnNmb3JtLnlTY2FsZSgpKSkpOwogCi0gICAgT3duUHRyPEltYWdlQnVmZmVyPiBi
dWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihzY2FsZWRTaXplLCAx
LCBDb2xvclNwYWNlRGV2aWNlUkdCLCB0aGlzLCBoYXNBbHBoYSk7CisgICAgc3RkOjp1bmlxdWVf
cHRyPEltYWdlQnVmZmVyPiBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1
ZmZlcihzY2FsZWRTaXplLCAxLCBDb2xvclNwYWNlRGV2aWNlUkdCLCB0aGlzLCBoYXNBbHBoYSk7
CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgYnVmZmVy
LT5jb250ZXh0KCktPnNjYWxlKEZsb2F0U2l6ZShzdGF0aWNfY2FzdDxmbG9hdD4oc2NhbGVkU2l6
ZS53aWR0aCgpKSAvIHNpemUud2lkdGgoKSwKICAgICAgICAgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHNj
YWxlZFNpemUuaGVpZ2h0KCkpIC8gc2l6ZS5oZWlnaHQoKSkpOwogCi0gICAgcmV0dXJuIGJ1ZmZl
ci5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGJ1ZmZlcjsKIH0KIAogYm9vbCBHcmFwaGljc0NvbnRl
eHQ6OmlzQ29tcGF0aWJsZVdpdGhCdWZmZXIoSW1hZ2VCdWZmZXIqIGJ1ZmZlcikgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgK
aW5kZXggNDg1MzUxMTgzZjg1ZTRkNmUzOWRiNjc3Y2I4MzBhYzIzZWY5ZDE3Yi4uMTdjNGNlNGRk
NzMxZTMzNDM4M2ZjZjE0ZDY3YjU1M2VmMzNlMmQzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTQxNCw3ICs0MTQsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjZW5kaWYKICAgICAgICAgLy8gQ3JlYXRlIGFuIGltYWdl
IGJ1ZmZlciBjb21wYXRpYmxlIHdpdGggdGhpcyBjb250ZXh0LCB3aXRoIHN1aXRhYmxlIHJlc29s
dXRpb24KICAgICAgICAgLy8gZm9yIGRyYXdpbmcgaW50byB0aGUgYnVmZmVyIGFuZCB0aGVuIGlu
dG8gdGhpcyBjb250ZXh0LgotICAgICAgICBQYXNzT3duUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVD
b21wYXRpYmxlQnVmZmVyKGNvbnN0IEludFNpemUmLCBib29sIGhhc0FscGhhID0gdHJ1ZSkgY29u
c3Q7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlQ29tcGF0aWJs
ZUJ1ZmZlcihjb25zdCBJbnRTaXplJiwgYm9vbCBoYXNBbHBoYSA9IHRydWUpIGNvbnN0OwogICAg
ICAgICBib29sIGlzQ29tcGF0aWJsZVdpdGhCdWZmZXIoSW1hZ2VCdWZmZXIqKSBjb25zdDsKIAog
ICAgICAgICAvLyBUaGlzIGZ1bmN0aW9uIGFwcGxpZXMgdGhlIGRldmljZSBzY2FsZSBmYWN0b3Ig
dG8gdGhlIGNvbnRleHQsIG1ha2luZyB0aGUgY29udGV4dCBjYXBhYmxlIG9mCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAKaW5kZXggNmNmN2Nj
YTk0NDNlYzY0YjE0ZDEwYjIyZjVkNzlkNDk0NWIzMzUyNC4uOTFkNjBhYWVkMmYwOGFhMjgzNWEy
NTRiMzM5MWNhMzFkOTJhYmY3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlQnVmZmVyLmNwcApAQCAtMTEwLDcgKzExMCw3IEBAIGJvb2wgSW1hZ2VCdWZm
ZXI6OmNvcHlUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRCYsIFBsYXRmb3JtM0RP
YmplY3QsIEdDCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1QYXNzT3duUHRyPEltYWdlQnVmZmVy
PiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjb25zdCBJbnRTaXplJiBzaXpl
LCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3QgR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0LCBib29sKQorc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVy
PiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjb25zdCBJbnRTaXplJiBzaXpl
LCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3QgR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0LCBib29sKQogewogICAgIHJldHVybiBjcmVhdGUoc2l6ZSwg
cmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBjb250ZXh0LT5pc0FjY2VsZXJhdGVkQ29udGV4
dCgpID8gQWNjZWxlcmF0ZWQgOiBVbmFjY2VsZXJhdGVkKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCmluZGV4IDFkNGYwODVmZDFmNDcyYjRh
ODNhZWFlNjkzOGZhYzBjNmNmNDlkYjIuLmFiZjhhNmNlNDE4MmVhYzVjYWYwYWQzYmI0ZjNiYzZl
N2FiOTk2NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VC
dWZmZXIuaApAQCAtNDIsNyArNDIsNiBAQAogI2luY2x1ZGUgPHJ1bnRpbWUvVWludDhDbGFtcGVk
QXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIu
aD4KLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC03OSwxNiArNzgsMTYgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbWFnZUJ1ZmZlcik7
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKICAgICAgICAgLy8gV2lsbCBy
ZXR1cm4gYSBudWxsIHBvaW50ZXIgb24gYWxsb2NhdGlvbiBmYWlsdXJlLgotICAgICAgICBzdGF0
aWMgUGFzc093blB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlKGNvbnN0IEludFNpemUmIHNpemUsIGZs
b2F0IHJlc29sdXRpb25TY2FsZSA9IDEsIENvbG9yU3BhY2UgY29sb3JTcGFjZSA9IENvbG9yU3Bh
Y2VEZXZpY2VSR0IsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSA9IFVuYWNjZWxlcmF0ZWQp
CisgICAgICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZShjb25z
dCBJbnRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUgPSAxLCBDb2xvclNwYWNlIGNv
bG9yU3BhY2UgPSBDb2xvclNwYWNlRGV2aWNlUkdCLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01v
ZGUgPSBVbmFjY2VsZXJhdGVkKQogICAgICAgICB7CiAgICAgICAgICAgICBib29sIHN1Y2Nlc3Mg
PSBmYWxzZTsKLSAgICAgICAgICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gYnVmID0gYWRvcHRQdHIo
bmV3IEltYWdlQnVmZmVyKHNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcmVuZGVy
aW5nTW9kZSwgc3VjY2VzcykpOworICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVm
ZmVyPiBidWZmZXIobmV3IEltYWdlQnVmZmVyKHNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JT
cGFjZSwgcmVuZGVyaW5nTW9kZSwgc3VjY2VzcykpOwogICAgICAgICAgICAgaWYgKCFzdWNjZXNz
KQogICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICAgICAgcmV0dXJuIGJ1
Zi5yZWxlYXNlKCk7CisgICAgICAgICAgICByZXR1cm4gYnVmZmVyOwogICAgICAgICB9CiAKLSAg
ICAgICAgc3RhdGljIFBhc3NPd25QdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUNvbXBhdGlibGVCdWZm
ZXIoY29uc3QgSW50U2l6ZSYsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSwgY29u
c3QgR3JhcGhpY3NDb250ZXh0KiwgYm9vbCBoYXNBbHBoYSk7CisgICAgICAgIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29uc3QgSW50
U2l6ZSYsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSwgY29uc3QgR3JhcGhpY3ND
b250ZXh0KiwgYm9vbCBoYXNBbHBoYSk7CiAKICAgICAgICAgfkltYWdlQnVmZmVyKCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKaW5kZXgg
NzM4NzI3MzBlNWQxMmQyNWJkMTdhY2U2ZWE4NDk0YmFhZWE3NWE4Yy4uODlhNDQ5ZGIyMDZkY2Ni
ZGYxNzRiYTg1MTk4NWMxMWI1YmIyYjZmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKQEAgLTE0MSw3ICsxNDEsNyBAQCBwcml2YXRlOgog
ICAgICAgICBtX2xhc3RSYWRpdXMgPSBGbG9hdFNpemUoKTsKICAgICB9CiAKLSAgICBPd25QdHI8
SW1hZ2VCdWZmZXI+IG1faW1hZ2VCdWZmZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVm
ZmVyPiBtX2ltYWdlQnVmZmVyOwogICAgIFRpbWVyPFNjcmF0Y2hCdWZmZXI+IG1fcHVyZ2VUaW1l
cjsKICAgICAKICAgICBGbG9hdFJlY3QgbV9sYXN0SW5zZXRCb3VuZHM7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCmluZGV4
IGQ3YTk3ZTZmMWMxODFiNWQ1MzMyYzZiOTEwYTVkM2U5ZjhmMzk2MWYuLmEyOTQyM2I2NGEzYzI4
ZjVjYTNhYjEzYjYwZmNiOTdmYTU5M2EzMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCkBAIC0zMTUsNyArMzE1LDcg
QEAgdm9pZCBJbWFnZUJ1ZmZlcjo6cHV0Qnl0ZUFycmF5KE11bHRpcGx5IG11bHRpcGxpZWQsIFVp
bnQ4Q2xhbXBlZEFycmF5KiBzb3VyY2UsIGMKICNpZiBVU0UoSU9TVVJGQUNFX0NBTlZBU19CQUNL
SU5HX1NUT1JFKQogICAgIC8vIE1ha2UgYSBjb3B5IG9mIHRoZSBzb3VyY2UgdG8gZW5zdXJlIHRo
ZSBiaXRzIGRvbid0IGNoYW5nZSBiZWZvcmUgYmVpbmcgZHJhd24KICAgICBJbnRTaXplIHNvdXJj
ZUNvcHlTaXplKHNvdXJjZVJlY3Qud2lkdGgoKSwgc291cmNlUmVjdC5oZWlnaHQoKSk7Ci0gICAg
T3duUHRyPEltYWdlQnVmZmVyPiBzb3VyY2VDb3B5ID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzb3Vy
Y2VDb3B5U2l6ZSwgMSwgQ29sb3JTcGFjZURldmljZVJHQiwgVW5hY2NlbGVyYXRlZCk7CisgICAg
c3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBzb3VyY2VDb3B5ID0gSW1hZ2VCdWZmZXI6OmNy
ZWF0ZShzb3VyY2VDb3B5U2l6ZSwgMSwgQ29sb3JTcGFjZURldmljZVJHQiwgVW5hY2NlbGVyYXRl
ZCk7CiAgICAgaWYgKCFzb3VyY2VDb3B5KQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuaApp
bmRleCAwZGUyNjgxZjZkMzQxMzgzNWIzZjNlMTYyMDQzMGIwYTczNjFkODA4Li40NjFhOTlkNmY2
YTk1YWMyNThlYzYzZGRlYmI5MTY3MWYxODEwZTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5oCkBAIC05MSw3ICs5
MSw3IEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPENHUERGRG9jdW1lbnRSZWY+IG1fZG9jdW1l
bnQ7CiAjZW5kaWYKIAotICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gbV9jYWNoZWRJbWFnZUJ1ZmZl
cjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IG1fY2FjaGVkSW1hZ2VCdWZmZXI7
CiAgICAgQWZmaW5lVHJhbnNmb3JtIG1fY2FjaGVkVHJhbnNmb3JtOwogICAgIEZsb2F0U2l6ZSBt
X2NhY2hlZERlc3RpbmF0aW9uU2l6ZTsKICAgICBGbG9hdFJlY3QgbV9jYWNoZWRTb3VyY2VSZWN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RVRpbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRp
bGUuY3BwCmluZGV4IDNkYjdhN2MzODdkMDBlNWM0NWVmMWJiZDgyNjMyYzllZTFlYjhmNTAuLjRh
NmM2YTRmOWZlOWE4YTg1ZWVmZjA4ZWUzZWNlYTc0MDUwMWJmODkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5jcHAKQEAgLTY2LDcg
KzY2LDcgQEAgdm9pZCBGRVRpbGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgICAgIHRp
bGVSZWN0LnNjYWxlKGZpbHRlci0+ZmlsdGVyUmVzb2x1dGlvbigpLndpZHRoKCksIGZpbHRlci0+
ZmlsdGVyUmVzb2x1dGlvbigpLmhlaWdodCgpKTsKICAgICB9CiAKLSAgICBPd25QdHI8SW1hZ2VC
dWZmZXI+IHRpbGVJbWFnZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IHRpbGVJ
bWFnZTsKICAgICBpZiAoIVNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyRm9y
UGF0dGVybih0aWxlUmVjdCwgdGlsZVJlY3QsIHRpbGVJbWFnZSwgQ29sb3JTcGFjZURldmljZVJH
QiwgZmlsdGVyKCktPnJlbmRlcmluZ01vZGUoKSkpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyLmgKaW5kZXgg
MzJhMjc1ZTY0OWY4ZWQ3M2EwYzE3NThlY2FlMjI0NzVkNTdjMWNjYy4uMDc0YjMwYzJhMzNhNzVl
OTU1NDI2MWU0MjU2OTEyYmQxNjNkYTBiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5oCkBAIC0zNSw3ICszNSw3IEBAIHB1YmxpYzoK
ICAgICBGaWx0ZXIoKSA6IG1fcmVuZGVyaW5nTW9kZShVbmFjY2VsZXJhdGVkKSB7IH0KICAgICB2
aXJ0dWFsIH5GaWx0ZXIoKSB7IH0KIAotICAgIHZvaWQgc2V0U291cmNlSW1hZ2UoUGFzc093blB0
cjxJbWFnZUJ1ZmZlcj4gc291cmNlSW1hZ2UpIHsgbV9zb3VyY2VJbWFnZSA9IHNvdXJjZUltYWdl
OyB9CisgICAgdm9pZCBzZXRTb3VyY2VJbWFnZShzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+
IHNvdXJjZUltYWdlKSB7IG1fc291cmNlSW1hZ2UgPSBzdGQ6Om1vdmUoc291cmNlSW1hZ2UpOyB9
CiAgICAgSW1hZ2VCdWZmZXIqIHNvdXJjZUltYWdlKCkgeyByZXR1cm4gbV9zb3VyY2VJbWFnZS5n
ZXQoKTsgfQogCiAgICAgRmxvYXRTaXplIGZpbHRlclJlc29sdXRpb24oKSBjb25zdCB7IHJldHVy
biBtX2ZpbHRlclJlc29sdXRpb247IH0KQEAgLTU1LDcgKzU1LDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgRmxvYXRQb2ludCBtYXBBYnNvbHV0ZVBvaW50VG9Mb2NhbFBvaW50KGNvbnN0IEZsb2F0
UG9pbnQmKSBjb25zdCB7IHJldHVybiBGbG9hdFBvaW50KCk7IH0KIAogcHJpdmF0ZToKLSAgICBP
d25QdHI8SW1hZ2VCdWZmZXI+IG1fc291cmNlSW1hZ2U7CisgICAgc3RkOjp1bmlxdWVfcHRyPElt
YWdlQnVmZmVyPiBtX3NvdXJjZUltYWdlOwogICAgIEZsb2F0U2l6ZSBtX2ZpbHRlclJlc29sdXRp
b247CiAgICAgUmVuZGVyaW5nTW9kZSBtX3JlbmRlcmluZ01vZGU7CiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3Qu
Y3BwCmluZGV4IGY5OWVhMmRkZGJmYzlmNzY3ZDNmMzc4MzlhMWNjMmZhZDRmZjY2YTIuLjYzZGU0
YTRmZWViMjBhYzNjNDM0MGNjNmY0NTE3YzdiODk4ZjFmMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAK
QEAgLTIyOCw3ICsyMjgsNyBAQCB2b2lkIEZpbHRlckVmZmVjdDo6Zm9yY2VWYWxpZFByZU11bHRp
cGxpZWRQaXhlbHMoKQogdm9pZCBGaWx0ZXJFZmZlY3Q6OmNsZWFyUmVzdWx0KCkKIHsKICAgICBp
ZiAobV9pbWFnZUJ1ZmZlclJlc3VsdCkKLSAgICAgICAgbV9pbWFnZUJ1ZmZlclJlc3VsdC5jbGVh
cigpOworICAgICAgICBtX2ltYWdlQnVmZmVyUmVzdWx0LnJlc2V0KCk7CiAgICAgaWYgKG1fdW5t
dWx0aXBsaWVkSW1hZ2VSZXN1bHQpCiAgICAgICAgIG1fdW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQu
Y2xlYXIoKTsKICAgICBpZiAobV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3Qu
aAppbmRleCBiMWMxMTg2MjcwZjA5YjI1NDc2ZWYwMGRiNDgyY2MxYzMzZTRhYmJkLi40MmQ3NDUy
MDM2OWRiZmRkN2JjYmVkZDA1NTc4NzgxNzEzYWU3YzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmgKQEAgLTI5
LDcgKzI5LDYgQEAKIAogI2luY2x1ZGUgPHJ1bnRpbWUvVWludDhDbGFtcGVkQXJyYXkuaD4KIAot
I2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
ICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtMTc5
LDcgKzE3OCw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGZvcmNlVmFsaWRQcmVNdWx0aXBsaWVk
UGl4ZWxzKCk7CiAKIHByaXZhdGU6Ci0gICAgT3duUHRyPEltYWdlQnVmZmVyPiBtX2ltYWdlQnVm
ZmVyUmVzdWx0OworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gbV9pbWFnZUJ1ZmZl
clJlc3VsdDsKICAgICBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IG1fdW5tdWx0aXBsaWVkSW1h
Z2VSZXN1bHQ7CiAgICAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBtX3ByZW11bHRpcGxpZWRJ
bWFnZVJlc3VsdDsKICAgICBGaWx0ZXJFZmZlY3RWZWN0b3IgbV9pbnB1dEVmZmVjdHM7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlckltYWdlQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmgKaW5kZXggMDYwNzEzY2U1Y2MxNzFjZDhjNWU1
ZjdmY2UwZTIwMDhiZTcwYjY4ZC4uYmYyNjVhNWUyOGNmMmUwMTE3ZmU1ZDE3NDM1NDcxMjQ3YjNm
OTFkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIuaApAQCAtNDMsNyArNDMs
NyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgQml0bWFwVGV4dHVyZUltYWdlQnVmZmVyKCkg
eyB9Ci0gICAgT3duUHRyPEltYWdlQnVmZmVyPiBtX2ltYWdlOworICAgIHN0ZDo6dW5pcXVlX3B0
cjxJbWFnZUJ1ZmZlcj4gbV9pbWFnZTsKIH07CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0lubGluZVRleHRCb3guY3BwCmluZGV4IDZhZTFjN2EwNGQxNmEwYmRiNjY1M2NmNWQyNDBjMTM1
YTYwNjE0YWIuLmEwOThmMzVhMWRhNmEwNDY5ODE3NmU1OTkxZThlNjRlMTRiOTA5MDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKQEAgLTEwNjEsNyArMTA2
MSw3IEBAIHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnREZWNvcmF0aW9uKEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgY29uc3QgRmxvYXRQb2ludCYKIAogICAgICAgICAgICAgRmxvYXRSZWN0IHVu
ZGVybGluZVJlY3QgPSBib3VuZGluZ0JveEZvckFsbEFjdGl2ZURlY29yYXRpb25zKCp0aGlzLCBj
b250ZXh0LCBkZWNvcmF0aW9uLCB0ZXh0RGVjb3JhdGlvblRoaWNrbmVzcywgd2lkdGgsIGRvdWJs
ZU9mZnNldCwgZGVjb3JhdGlvblN0eWxlLCBsb2NhbE9yaWdpbiwgbGluZVN0eWxlLCBpc1ByaW50
aW5nLCBiYXNlbGluZSk7CiAgICAgICAgICAgICBJbnRSZWN0IGVuY2xvc2luZ0RldmljZVJlY3Qg
PSBlbmNsb3NpbmdJbnRSZWN0KHVuZGVybGluZVJlY3QpOwotICAgICAgICAgICAgT3duUHRyPElt
YWdlQnVmZmVyPiBpbWFnZUJ1ZmZlciA9IGNvbnRleHQuY3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihl
bmNsb3NpbmdEZXZpY2VSZWN0LnNpemUoKSk7CisgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8
SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyID0gY29udGV4dC5jcmVhdGVDb21wYXRpYmxlQnVmZmVy
KGVuY2xvc2luZ0RldmljZVJlY3Quc2l6ZSgpKTsKIAogICAgICAgICAgICAgaWYgKGltYWdlQnVm
ZmVyLmdldCgpKSB7CiAgICAgICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0JiBtYXNrQ29udGV4
dCA9ICppbWFnZUJ1ZmZlci0+Y29udGV4dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKaW5kZXggZTc4NTFkMTdmNGFhMDViNWRkOWRi
NTE5NzcyZmZjNTQ1NDYzOTEwNi4uY2VmNzQzZmE3YTNjM2VjZTA1ZDI5ZTM3MDEzZTA1Y2EyZmFl
NWEyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVs
T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxP
YmplY3QuY3BwCkBAIC03MDEsNyArNzAxLDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6
cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY28KICAg
ICB9CiAgICAgCiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBiYWNrZ3JvdW5kQ2xpcFN0
YXRlU2F2ZXIoKmNvbnRleHQsIGZhbHNlKTsKLSAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IG1hc2tJ
bWFnZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IG1hc2tJbWFnZTsKICAgICBJ
bnRSZWN0IG1hc2tSZWN0OwogCiAgICAgaWYgKGJnTGF5ZXItPmNsaXAoKSA9PSBQYWRkaW5nRmls
bEJveCB8fCBiZ0xheWVyLT5jbGlwKCkgPT0gQ29udGVudEZpbGxCb3gpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQppbmRleCA1MjdlZjg2NGNhM2YwMjQxYWM4
ZDY5YTAwZGNhMThjYzgyMmQ4MjRlLi4zMzQ4NTdiYmViM2E2NjE4MGMyYTllZDBjOTRlNzU5ZDQ3
M2JlYTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVN
YWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCkBA
IC0xMDUyLDcgKzEwNTIsNyBAQCBib29sIFJlbmRlclRoZW1lTWFjOjpwYWludFByb2dyZXNzQmFy
KFJlbmRlck9iamVjdCogcmVuZGVyT2JqZWN0LCBjb25zdCBQYWludEluZgogICAgIHRyYWNrSW5m
by5yZXNlcnZlZCA9IDA7CiAgICAgdHJhY2tJbmZvLmZpbGxlcjEgPSAwOwogCi0gICAgT3duUHRy
PEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoaW5mbGF0ZWRS
ZWN0LnNpemUoKSwgZGV2aWNlU2NhbGVGYWN0b3IpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFn
ZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGluZmxhdGVkUmVjdC5z
aXplKCksIGRldmljZVNjYWxlRmFjdG9yKTsKICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAg
ICByZXR1cm4gdHJ1ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3No
YXBlcy9TaGFwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNw
cAppbmRleCBjOGZiYjhmNjUwYmVmODRhZTJhZjQ3YmM4MGY0OWNmYzY5ZWI3MTg3Li5lYjI2OTAy
YzFlYzAzMDJkM2Q2N2Y5OGFiZTU1MjgxNTZiY2I0YjlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc2hhcGVzL1NoYXBlLmNwcApAQCAtMjI1LDcgKzIyNSw3IEBAIFBhc3NPd25QdHI8U2hh
cGU+IFNoYXBlOjpjcmVhdGVTaGFwZShjb25zdCBTdHlsZUltYWdlKiBzdHlsZUltYWdlLCBmbG9h
dCB0aHJlc2hvCiAKICAgICBPd25QdHI8UmFzdGVyU2hhcGVJbnRlcnZhbHM+IGludGVydmFscyA9
IGFkb3B0UHRyKG5ldyBSYXN0ZXJTaGFwZUludGVydmFscyhpbWFnZVNpemUuaGVpZ2h0KCkpKTsK
IAotICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3Jl
YXRlKGltYWdlU2l6ZSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1
ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoaW1hZ2VTaXplKTsKICAgICBpZiAoaW1hZ2VCdWZm
ZXIpIHsKICAgICAgICAgR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQgPSBpbWFnZUJ1
ZmZlci0+Y29udGV4dCgpOwogICAgICAgICBncmFwaGljc0NvbnRleHQtPmRyYXdJbWFnZShpbWFn
ZSwgQ29sb3JTcGFjZURldmljZVJHQiwgSW50UG9pbnQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCmluZGV4IDZjZjgzMGJjZWZkODI3ZGE4
Y2QzYjljM2MwYzlhMmJkZDc2MDRlMDIuLjU3ZmM5YmU5MjYzMmUwZmYwYzJkN2Q2NjlkM2I4YTNi
MjEwNzM5MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
SW1hZ2UuY3BwCkBAIC0xNjIsNyArMTYyLDcgQEAgdm9pZCBSZW5kZXJTVkdJbWFnZTo6cGFpbnRG
b3JlZ3JvdW5kKFBhaW50SW5mbyYgcGFpbnRJbmZvKQogCiB2b2lkIFJlbmRlclNWR0ltYWdlOjpp
bnZhbGlkYXRlQnVmZmVyZWRGb3JlZ3JvdW5kKCkKIHsKLSAgICBtX2J1ZmZlcmVkRm9yZWdyb3Vu
ZC5jbGVhcigpOworICAgIG1fYnVmZmVyZWRGb3JlZ3JvdW5kLnJlc2V0KCk7CiB9CiAKIGJvb2wg
UmVuZGVyU1ZHSW1hZ2U6Om5vZGVBdEZsb2F0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJl
cXVlc3QsIEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnRJblBh
cmVudCwgSGl0VGVzdEFjdGlvbiBoaXRUZXN0QWN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5oCmluZGV4IDFkMGFjZDIwMTRhMjhmNzY1N2EyYzE1
ZGYyMGFjYjZhODcyYTNlZDkuLjdmMDQxYWQ5MzI5ZGVkMjZjNjBiOTEzMmE2MTZlOGNkMTFjZmJh
ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1h
Z2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmgK
QEAgLTkwLDcgKzkwLDcgQEAgcHJpdmF0ZToKICAgICBGbG9hdFJlY3QgbV9yZXBhaW50Qm91bmRp
bmdCb3hFeGNsdWRpbmdTaGFkb3c7CiAgICAgT3duUHRyPFJlbmRlckltYWdlUmVzb3VyY2U+IG1f
aW1hZ2VSZXNvdXJjZTsKIAotICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gbV9idWZmZXJlZEZvcmVn
cm91bmQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBtX2J1ZmZlcmVkRm9yZWdy
b3VuZDsKIH07CiAKIFJFTkRFUl9PQkpFQ1RfVFlQRV9DQVNUUyhSZW5kZXJTVkdJbWFnZSwgaXNT
VkdJbWFnZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwCmluZGV4IGY5MDMxMzE3ZWY4MzU3ZjY2Y2Y4MDAx
ODE5NjgwOWY1ODVmZjU4Y2IuLjM2OTJiMmVlNWYwZDk3NDk4MDMyMDg1Y2VjNjA5MGVkZTM1YzQ2
ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVz
b3VyY2VDbGlwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jlc291cmNlQ2xpcHBlci5jcHAKQEAgLTE4Niw3ICsxODYsNyBAQCBib29sIFJlbmRlclNW
R1Jlc291cmNlQ2xpcHBlcjo6YXBwbHlDbGlwcGluZ1RvQ29udGV4dChSZW5kZXJFbGVtZW50JiBy
ZW5kZXJlciwgYwogICAgICAgICAgICAgc3VjY2VlZGVkID0gZHJhd0NvbnRlbnRJbnRvTWFza0lt
YWdlKGNsaXBwZXJEYXRhLCBvYmplY3RCb3VuZGluZ0JveCk7CiAKICAgICAgICAgaWYgKCFzdWNj
ZWVkZWQpCi0gICAgICAgICAgICBjbGlwcGVyRGF0YS0+Y2xpcE1hc2tJbWFnZS5jbGVhcigpOwor
ICAgICAgICAgICAgY2xpcHBlckRhdGEtPmNsaXBNYXNrSW1hZ2UucmVzZXQoKTsKICAgICB9CiAK
ICAgICBpZiAoIWNsaXBwZXJEYXRhLT5jbGlwTWFza0ltYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmgKaW5kZXgg
NmRiODcwMjI3ODFjZTFlMTRiMDJkM2U2MTVlODBkOGRhMTVhMzQ3Zi4uNWM5NDI2YWU2ODZmOTg3
Zjc0ZTBjZjRkYTliMjhkYjM3ZjdiMzdlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5oCkBAIC0zMSwxNCArMzEs
MTMgQEAKICNpbmNsdWRlICJTVkdVbml0VHlwZXMuaCIKIAogI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+Ci0jaW5jbHVkZSA8d3RmL093blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0
cnVjdCBDbGlwcGVyRGF0YSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
Ci0gICAgT3duUHRyPEltYWdlQnVmZmVyPiBjbGlwTWFza0ltYWdlOworICAgIHN0ZDo6dW5pcXVl
X3B0cjxJbWFnZUJ1ZmZlcj4gY2xpcE1hc2tJbWFnZTsKIH07CiAKIGNsYXNzIFJlbmRlclNWR1Jl
c291cmNlQ2xpcHBlciBGSU5BTCA6IHB1YmxpYyBSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lciB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlRmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVz
b3VyY2VGaWx0ZXIuY3BwCmluZGV4IDlmNzY5MDhlMTFjZWY2ZGNkNTc2OGYzZWYwYjY2M2E0ZDI0
ZjE4ZDIuLjYxN2UyMGEwNTQxY2JlMjg3MjNkODI4MTA2NDQ1MDk3YjlkYjRiZDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VG
aWx0ZXIuY3BwCkBAIC0yMTMsNyArMjEzLDcgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZUZpbHRl
cjo6YXBwbHlSZXNvdXJjZShSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3QgUmVuZGUKICAg
ICBlZmZlY3RpdmVUcmFuc2Zvcm0uc2NhbGUoc2NhbGUud2lkdGgoKSwgc2NhbGUuaGVpZ2h0KCkp
OwogICAgIGVmZmVjdGl2ZVRyYW5zZm9ybS5tdWx0aXBseShmaWx0ZXJEYXRhLT5zaGVhckZyZWVB
YnNvbHV0ZVRyYW5zZm9ybSk7CiAKLSAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IHNvdXJjZUdyYXBo
aWM7CisgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBzb3VyY2VHcmFwaGljOwogICAg
IFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSA9IHJlbmRlcmVyLmZyYW1lKCkuc2V0dGluZ3Mo
KS5hY2NlbGVyYXRlZEZpbHRlcnNFbmFibGVkKCkgPyBBY2NlbGVyYXRlZCA6IFVuYWNjZWxlcmF0
ZWQ7CiAgICAgaWYgKCFTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihmaWx0
ZXJEYXRhLT5kcmF3aW5nUmVnaW9uLCBlZmZlY3RpdmVUcmFuc2Zvcm0sIHNvdXJjZUdyYXBoaWMs
IENvbG9yU3BhY2VMaW5lYXJSR0IsIHJlbmRlcmluZ01vZGUpKSB7CiAgICAgICAgIEFTU0VSVCgh
bV9maWx0ZXIuY29udGFpbnMoJnJlbmRlcmVyKSk7CkBAIC0yMjgsNyArMjI4LDcgQEAgYm9vbCBS
ZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6YXBwbHlSZXNvdXJjZShSZW5kZXJFbGVtZW50JiByZW5k
ZXJlciwgY29uc3QgUmVuZGUKICAgICBHcmFwaGljc0NvbnRleHQqIHNvdXJjZUdyYXBoaWNDb250
ZXh0ID0gc291cmNlR3JhcGhpYy0+Y29udGV4dCgpOwogICAgIEFTU0VSVChzb3VyY2VHcmFwaGlj
Q29udGV4dCk7CiAgIAotICAgIGZpbHRlckRhdGEtPnNvdXJjZUdyYXBoaWNCdWZmZXIgPSBzb3Vy
Y2VHcmFwaGljLnJlbGVhc2UoKTsKKyAgICBmaWx0ZXJEYXRhLT5zb3VyY2VHcmFwaGljQnVmZmVy
ID0gc3RkOjptb3ZlKHNvdXJjZUdyYXBoaWMpOwogICAgIGZpbHRlckRhdGEtPnNhdmVkQ29udGV4
dCA9IGNvbnRleHQ7CiAKICAgICBjb250ZXh0ID0gc291cmNlR3JhcGhpY0NvbnRleHQ7CkBAIC0y
ODIsNyArMjgyLDcgQEAgdm9pZCBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6cG9zdEFwcGx5UmVz
b3VyY2UoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIEdyYXBoaWMKICAgICAgICAgLy8gaW5pdGlh
bCBmaWx0ZXJpbmcgcHJvY2Vzcy4gV2UganVzdCB0YWtlIHRoZSBzdG9yZWQgZmlsdGVyIHJlc3Vs
dCBvbiBhCiAgICAgICAgIC8vIHNlY29uZCBkcmF3aW5nLgogICAgICAgICBpZiAoZmlsdGVyRGF0
YS0+c3RhdGUgIT0gRmlsdGVyRGF0YTo6QnVpbHQpCi0gICAgICAgICAgICBmaWx0ZXJEYXRhLT5m
aWx0ZXItPnNldFNvdXJjZUltYWdlKGZpbHRlckRhdGEtPnNvdXJjZUdyYXBoaWNCdWZmZXIucmVs
ZWFzZSgpKTsKKyAgICAgICAgICAgIGZpbHRlckRhdGEtPmZpbHRlci0+c2V0U291cmNlSW1hZ2Uo
c3RkOjptb3ZlKGZpbHRlckRhdGEtPnNvdXJjZUdyYXBoaWNCdWZmZXIpKTsKIAogICAgICAgICAv
LyBBbHdheXMgdHJ1ZSBpZiBmaWx0ZXJEYXRhIGlzIGp1c3QgYnVpbHQgKGZpbHRlckRhdGEtPnN0
YXRlID09IEZpbHRlckRhdGE6OkJ1aWx0KS4KICAgICAgICAgaWYgKCFsYXN0RWZmZWN0LT5oYXNS
ZXN1bHQoKSkgewpAQCAtMzA0LDcgKzMwNCw3IEBAIHZvaWQgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0
ZXI6OnBvc3RBcHBseVJlc291cmNlKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBHcmFwaGljCiAg
ICAgICAgICAgICBjb250ZXh0LT5jb25jYXRDVE0oZmlsdGVyRGF0YS0+c2hlYXJGcmVlQWJzb2x1
dGVUcmFuc2Zvcm0pOwogICAgICAgICB9CiAgICAgfQotICAgIGZpbHRlckRhdGEtPnNvdXJjZUdy
YXBoaWNCdWZmZXIuY2xlYXIoKTsKKyAgICBmaWx0ZXJEYXRhLT5zb3VyY2VHcmFwaGljQnVmZmVy
LnJlc2V0KCk7CiB9CiAKIEZsb2F0UmVjdCBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6cmVzb3Vy
Y2VCb3VuZGluZ0JveChjb25zdCBSZW5kZXJPYmplY3QmIG9iamVjdCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuaAppbmRl
eCBjNjg5OWNjOWIwNzMwNGEyNTYwY2QxMDBmNGRhOWVjOTY2NTZjMmU3Li5mZWQ0ODc4ZTMyN2Ez
OTc3NGZlMmE3YmExYzJkZDA3MmVhYWFhNjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5oCkBAIC0zMyw4ICszMyw2
IEBACiAjaW5jbHVkZSAiU1ZHRmlsdGVyRWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR1VuaXRUeXBl
cy5oIgogCi0jaW5jbHVkZSA8d3RmL093blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01
Myw3ICs1MSw3IEBAIHB1YmxpYzoKIAogICAgIFJlZlB0cjxTVkdGaWx0ZXI+IGZpbHRlcjsKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8U1ZHRmlsdGVyQnVpbGRlcj4gYnVpbGRlcjsKLSAgICBPd25QdHI8
SW1hZ2VCdWZmZXI+IHNvdXJjZUdyYXBoaWNCdWZmZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPElt
YWdlQnVmZmVyPiBzb3VyY2VHcmFwaGljQnVmZmVyOwogICAgIEdyYXBoaWNzQ29udGV4dCogc2F2
ZWRDb250ZXh0OwogICAgIEFmZmluZVRyYW5zZm9ybSBzaGVhckZyZWVBYnNvbHV0ZVRyYW5zZm9y
bTsKICAgICBGbG9hdFJlY3QgYm91bmRhcmllczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3BwCmluZGV4IDkx
M2FiMzUxMmY5ZjZjYWI1MmM3NGMzY2M2MjZmZWMzZmY1MGYzOTQuLjcxODhlNjU2NTg2NjE3MDY1
NDA3OTJkOTNjZGNkNDIxMzA2ZTVkOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcApAQCAtNTgsMTAg
KzU4LDcgQEAgdm9pZCBSZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50OjpyZW1vdmVDbGllbnRGcm9t
Q2FjaGUoUmVuZGVyT2JqZWN0KiBjbGllbnQsIGJvb2wKIH0KIAogI2lmIFVTRShDRykKLXN0YXRp
YyBpbmxpbmUgYm9vbCBjcmVhdGVNYXNrQW5kU3dhcENvbnRleHRGb3JUZXh0R3JhZGllbnQoR3Jh
cGhpY3NDb250ZXh0KiYgY29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0KiYgc2F2ZWRDb250ZXh0
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBPd25QdHI8SW1hZ2VCdWZmZXI+JiBpbWFnZUJ1ZmZlciwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVuZGVyT2JqZWN0KiBv
YmplY3QpCitzdGF0aWMgaW5saW5lIGJvb2wgY3JlYXRlTWFza0FuZFN3YXBDb250ZXh0Rm9yVGV4
dEdyYWRpZW50KEdyYXBoaWNzQ29udGV4dComIGNvbnRleHQsIEdyYXBoaWNzQ29udGV4dComIHNh
dmVkQ29udGV4dCwgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiYgaW1hZ2VCdWZmZXIsIFJl
bmRlck9iamVjdCogb2JqZWN0KQogewogICAgIFJlbmRlck9iamVjdCogdGV4dFJvb3RCbG9jayA9
IFJlbmRlclNWR1RleHQ6OmxvY2F0ZVJlbmRlclNWR1RleHRBbmNlc3RvcihvYmplY3QpOwogICAg
IEFTU0VSVCh0ZXh0Um9vdEJsb2NrKTsKQEAgLTcwLDcgKzY3LDcgQEAgc3RhdGljIGlubGluZSBi
b29sIGNyZWF0ZU1hc2tBbmRTd2FwQ29udGV4dEZvclRleHRHcmFkaWVudChHcmFwaGljc0NvbnRl
eHQqJiBjb24KICAgICBTVkdSZW5kZXJpbmdDb250ZXh0OjpjYWxjdWxhdGVUcmFuc2Zvcm1hdGlv
blRvT3V0ZXJtb3N0Q29vcmRpbmF0ZVN5c3RlbSh0ZXh0Um9vdEJsb2NrLCBhYnNvbHV0ZVRyYW5z
Zm9ybSk7CiAKICAgICBGbG9hdFJlY3QgcmVwYWludFJlY3QgPSB0ZXh0Um9vdEJsb2NrLT5yZXBh
aW50UmVjdEluTG9jYWxDb29yZGluYXRlcygpOwotICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gbWFz
a0ltYWdlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gbWFza0ltYWdlOwogICAg
IGlmICghU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIocmVwYWludFJlY3Qs
IGFic29sdXRlVHJhbnNmb3JtLCBtYXNrSW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIFVuYWNj
ZWxlcmF0ZWQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTc5LDE2ICs3NiwxMSBAQCBz
dGF0aWMgaW5saW5lIGJvb2wgY3JlYXRlTWFza0FuZFN3YXBDb250ZXh0Rm9yVGV4dEdyYWRpZW50
KEdyYXBoaWNzQ29udGV4dComIGNvbgogICAgIEFTU0VSVChtYXNrSW1hZ2UpOwogICAgIHNhdmVk
Q29udGV4dCA9IGNvbnRleHQ7CiAgICAgY29udGV4dCA9IG1hc2tJbWFnZUNvbnRleHQ7Ci0gICAg
aW1hZ2VCdWZmZXIgPSBtYXNrSW1hZ2UucmVsZWFzZSgpOworICAgIGltYWdlQnVmZmVyID0gc3Rk
Ojptb3ZlKG1hc2tJbWFnZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBpbmxpbmUg
QWZmaW5lVHJhbnNmb3JtIGNsaXBUb1RleHRNYXNrKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE93blB0cjxJbWFn
ZUJ1ZmZlcj4mIGltYWdlQnVmZmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUmVuZGVyT2JqZWN0KiBvYmplY3QsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGJvdW5kaW5nQm94TW9kZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYgZ3JhZGllbnRUcmFuc2Zvcm0pCitzdGF0aWMgaW5saW5lIEFmZmluZVRyYW5z
Zm9ybSBjbGlwVG9UZXh0TWFzayhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIHN0ZDo6dW5pcXVl
X3B0cjxJbWFnZUJ1ZmZlcj4mIGltYWdlQnVmZmVyLCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIFJl
bmRlck9iamVjdCogb2JqZWN0LCBib29sIGJvdW5kaW5nQm94TW9kZSwgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiBncmFkaWVudFRyYW5zZm9ybSkKIHsKICAgICBSZW5kZXJPYmplY3QqIHRleHRSb290
QmxvY2sgPSBSZW5kZXJTVkdUZXh0Ojpsb2NhdGVSZW5kZXJTVkdUZXh0QW5jZXN0b3Iob2JqZWN0
KTsKICAgICBBU1NFUlQodGV4dFJvb3RCbG9jayk7CkBAIC0yMjUsNyArMjE3LDcgQEAgdm9pZCBS
ZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50Ojpwb3N0QXBwbHlSZXNvdXJjZShSZW5kZXJFbGVtZW50
JiByZW5kZXJlciwgR3JhcGgKICAgICAgICAgICAgIGNvbnRleHQtPnNldEZpbGxHcmFkaWVudChn
cmFkaWVudERhdGEtPmdyYWRpZW50KTsKIAogICAgICAgICAgICAgY29udGV4dC0+ZmlsbFJlY3Qo
dGFyZ2V0UmVjdCk7Ci0gICAgICAgICAgICBtX2ltYWdlQnVmZmVyLmNsZWFyKCk7CisgICAgICAg
ICAgICBtX2ltYWdlQnVmZmVyLnJlc2V0KCk7CiAgICAgICAgIH0KICNlbHNlCiAgICAgICAgIFVO
VVNFRF9QQVJBTShyZW5kZXJlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5oCmluZGV4IDg2Y2U3NzAyODYzMzEz
ZWMwNTk2OGRiZTgwMmYyOGVlYjI3NDIyZjUuLjRiZjlkMDk0Mzg1MjYyZDVjMTlhY2RjZjk3ZmEy
YzlkYWM4YTA5ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5oCkBAIC03NCw3ICs3NCw3IEBAIHByaXZhdGU6
CiAKICNpZiBVU0UoQ0cpCiAgICAgR3JhcGhpY3NDb250ZXh0KiBtX3NhdmVkQ29udGV4dDsKLSAg
ICBPd25QdHI8SW1hZ2VCdWZmZXI+IG1faW1hZ2VCdWZmZXI7CisgICAgc3RkOjp1bmlxdWVfcHRy
PEltYWdlQnVmZmVyPiBtX2ltYWdlQnVmZmVyOwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3Bw
CmluZGV4IDEyYjdlZDA5YWYwMjllZmNiZjAzMzA4ZTRhYzg5MDgxZGE4YjFlMzQuLmVkOTMyNzg0
OTc2NDUwNTg5OTU1ZTYwYWUzMWQ4OTI0ZTg3NDI4NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3BwCkBAIC05
MCw3ICs5MCw3IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OmFwcGx5UmVzb3VyY2Uo
UmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IFJlbmRlCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICAgICAgaWYgKCFkcmF3Q29udGVudEludG9NYXNrSW1hZ2UobWFza2VyRGF0
YSwgY29sb3JTcGFjZSwgJnJlbmRlcmVyKSkgewotICAgICAgICAgICAgbWFza2VyRGF0YS0+bWFz
a0ltYWdlLmNsZWFyKCk7CisgICAgICAgICAgICBtYXNrZXJEYXRhLT5tYXNrSW1hZ2UucmVzZXQo
KTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5oCmluZGV4IGJmYmNjOWU5ZmM0OGI2ZGE3
NGM4ZmQ2OGJhYmQ0MjYyMjY5ZjA2YWYuLjUyYjE1NTc3YzE0Y2U0MWY2ZjQ3NTAzOTBhNDBhOGNm
YmE5NWEyMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VNYXNrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jlc291cmNlTWFza2VyLmgKQEAgLTMwLDEyICszMCwxMSBAQAogI2luY2x1ZGUgIlNW
R1VuaXRUeXBlcy5oIgogCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYv
T3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IE1hc2tlckRhdGEgewot
ICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gbWFza0ltYWdlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJ
bWFnZUJ1ZmZlcj4gbWFza0ltYWdlOwogfTsKIAogY2xhc3MgUmVuZGVyU1ZHUmVzb3VyY2VNYXNr
ZXIgRklOQUwgOiBwdWJsaWMgUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRl
cm4uY3BwCmluZGV4IGUwZDQzMDYyY2RlZDc0NDdjOGY2YWQ4ZmRiYTQ0Y2Y0YTQyM2NiOGEuLmYw
MTg4NzZmNWY2ZDA1NmFlYTU5YTQyMGJlMjQ0YWUzMjJlZWI1N2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5j
cHAKQEAgLTEwMiw3ICsxMDIsNyBAQCBQYXR0ZXJuRGF0YSogUmVuZGVyU1ZHUmVzb3VyY2VQYXR0
ZXJuOjpidWlsZFBhdHRlcm4oUmVuZGVyT2JqZWN0KiBvYmplY3QsIHVuc2lnbgogICAgICAgICBz
dGF0aWNfY2FzdDxmbG9hdD4obV9hdHRyaWJ1dGVzLnBhdHRlcm5UcmFuc2Zvcm0oKS55U2NhbGUo
KSkpOwogCiAgICAgLy8gQnVpbGQgdGlsZSBpbWFnZS4KLSAgICBPd25QdHI8SW1hZ2VCdWZmZXI+
IHRpbGVJbWFnZSA9IGNyZWF0ZVRpbGVJbWFnZShtX2F0dHJpYnV0ZXMsIHRpbGVCb3VuZGFyaWVz
LCBhYnNvbHV0ZVRpbGVCb3VuZGFyaWVzLCB0aWxlSW1hZ2VUcmFuc2Zvcm0sIGNsYW1wZWRBYnNv
bHV0ZVRpbGVCb3VuZGFyaWVzKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IHRp
bGVJbWFnZSA9IGNyZWF0ZVRpbGVJbWFnZShtX2F0dHJpYnV0ZXMsIHRpbGVCb3VuZGFyaWVzLCBh
YnNvbHV0ZVRpbGVCb3VuZGFyaWVzLCB0aWxlSW1hZ2VUcmFuc2Zvcm0sIGNsYW1wZWRBYnNvbHV0
ZVRpbGVCb3VuZGFyaWVzKTsKICAgICBpZiAoIXRpbGVJbWFnZSkKICAgICAgICAgcmV0dXJuIDA7
CiAKQEAgLTI0MCwxNSArMjQwLDExIEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuOjpi
dWlsZFRpbGVJbWFnZVRyYW5zZm9ybShSZW5kZXJPYmplY3QqIHJlbmRlcmVyLAogICAgIHJldHVy
biB0cnVlOwogfQogCi1QYXNzT3duUHRyPEltYWdlQnVmZmVyPiBSZW5kZXJTVkdSZXNvdXJjZVBh
dHRlcm46OmNyZWF0ZVRpbGVJbWFnZShjb25zdCBQYXR0ZXJuQXR0cmlidXRlcyYgYXR0cmlidXRl
cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEZsb2F0UmVjdCYgdGlsZUJvdW5kYXJpZXMsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBGbG9hdFJlY3QmIGFic29sdXRlVGlsZUJvdW5kYXJpZXMsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIHRpbGVJbWFnZVRyYW5zZm9ybSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZsb2F0UmVjdCYg
Y2xhbXBlZEFic29sdXRlVGlsZUJvdW5kYXJpZXMpIGNvbnN0CitzdGQ6OnVuaXF1ZV9wdHI8SW1h
Z2VCdWZmZXI+IFJlbmRlclNWR1Jlc291cmNlUGF0dGVybjo6Y3JlYXRlVGlsZUltYWdlKGNvbnN0
IFBhdHRlcm5BdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBjb25zdCBGbG9hdFJlY3QmIHRpbGVCb3Vu
ZGFyaWVzLCBjb25zdCBGbG9hdFJlY3QmIGFic29sdXRlVGlsZUJvdW5kYXJpZXMsIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYgdGlsZUltYWdlVHJhbnNmb3JtLCBGbG9hdFJlY3QmIGNsYW1wZWRBYnNv
bHV0ZVRpbGVCb3VuZGFyaWVzKSBjb25zdAogewogICAgIGNsYW1wZWRBYnNvbHV0ZVRpbGVCb3Vu
ZGFyaWVzID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y2xhbXBlZEFic29sdXRlVGFyZ2V0UmVjdChh
YnNvbHV0ZVRpbGVCb3VuZGFyaWVzKTsKIAotICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gdGlsZUlt
YWdlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gdGlsZUltYWdlOwogCiAgICAg
aWYgKCFTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlckZvclBhdHRlcm4oYWJz
b2x1dGVUaWxlQm91bmRhcmllcywgY2xhbXBlZEFic29sdXRlVGlsZUJvdW5kYXJpZXMsIHRpbGVJ
bWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgVW5hY2NlbGVyYXRlZCkpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwpAQCAtMjc5LDcgKzI3NSw3IEBAIFBhc3NPd25QdHI8SW1hZ2VCdWZmZXI+IFJl
bmRlclNWR1Jlc291cmNlUGF0dGVybjo6Y3JlYXRlVGlsZUltYWdlKGNvbnN0IFBhdHRlcm5BCiAg
ICAgICAgIFNWR1JlbmRlcmluZ0NvbnRleHQ6OnJlbmRlclN1YnRyZWVUb0ltYWdlQnVmZmVyKHRp
bGVJbWFnZS5nZXQoKSwgKmNoaWxkLnJlbmRlcmVyKCksIGNvbnRlbnRUcmFuc2Zvcm1hdGlvbik7
CiAgICAgfQogCi0gICAgcmV0dXJuIHRpbGVJbWFnZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIHRp
bGVJbWFnZTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmgKaW5kZXggMWY3MzJlNDYzNTc2ZDljOTVjNjBh
M2I1MjlhM2Q5M2FkZGRkZjA5NS4uYjg5MGQyMjNjYThiZmIzNjQ5ZDE3YjNiMmE4MjA2MDNhYzNl
YmU0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
ZXNvdXJjZVBhdHRlcm4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jlc291cmNlUGF0dGVybi5oCkBAIC02NCw5ICs2NCw3IEBAIHByaXZhdGU6CiAKICAgICBi
b29sIGJ1aWxkVGlsZUltYWdlVHJhbnNmb3JtKFJlbmRlck9iamVjdCosIGNvbnN0IFBhdHRlcm5B
dHRyaWJ1dGVzJiwgY29uc3QgU1ZHUGF0dGVybkVsZW1lbnQmLCBGbG9hdFJlY3QmIHBhdHRlcm5C
b3VuZGFyaWVzLCBBZmZpbmVUcmFuc2Zvcm0mIHRpbGVJbWFnZVRyYW5zZm9ybSkgY29uc3Q7CiAK
LSAgICBQYXNzT3duUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVUaWxlSW1hZ2UoY29uc3QgUGF0dGVy
bkF0dHJpYnV0ZXMmLCBjb25zdCBGbG9hdFJlY3QmIHRpbGVCb3VuZGFyaWVzLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGbG9hdFJlY3QmIGFic29s
dXRlVGlsZUJvdW5kYXJpZXMsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdGlsZUltYWdlVHJhbnNm
b3JtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGbG9hdFJl
Y3QmIGNsYW1wZWRBYnNvbHV0ZVRpbGVCb3VuZGFyaWVzKSBjb25zdDsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZVRpbGVJbWFnZShjb25zdCBQYXR0ZXJuQXR0cmlidXRl
cyYsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZUJvdW5kYXJpZXMsIGNvbnN0IEZsb2F0UmVjdCYgYWJz
b2x1dGVUaWxlQm91bmRhcmllcywgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0aWxlSW1hZ2VUcmFu
c2Zvcm0sIEZsb2F0UmVjdCYgY2xhbXBlZEFic29sdXRlVGlsZUJvdW5kYXJpZXMpIGNvbnN0Owog
CiAgICAgUGF0dGVybkRhdGEqIGJ1aWxkUGF0dGVybihSZW5kZXJPYmplY3QqLCB1bnNpZ25lZCBz
aG9ydCByZXNvdXJjZU1vZGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCBlMTlkNjBmMzc3MWI4YTZkOTIyYjE2
YWE3NmQ2NWI1ZThjNTRiM2ExLi42OWJjZGZhZGZhOGYxZTQyOGQwY2QzOWVkZWQ4ZDIyNzVhMzVj
ZDFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmlu
Z0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVy
aW5nQ29udGV4dC5jcHAKQEAgLTIyMyw3ICsyMjMsNyBAQCB2b2lkIFNWR1JlbmRlcmluZ0NvbnRl
eHQ6OmNhbGN1bGF0ZVRyYW5zZm9ybWF0aW9uVG9PdXRlcm1vc3RDb29yZGluYXRlU3lzdGVtKGNv
bgogICAgIGFic29sdXRlVHJhbnNmb3JtLnNjYWxlKGRldmljZVNjYWxlRmFjdG9yKTsKIH0KIAot
Ym9vbCBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJl
Y3QmIHRhcmdldFJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgYWJzb2x1dGVUcmFuc2Zvcm0s
IE93blB0cjxJbWFnZUJ1ZmZlcj4mIGltYWdlQnVmZmVyLCBDb2xvclNwYWNlIGNvbG9yU3BhY2Us
IFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSkKK2Jvb2wgU1ZHUmVuZGVyaW5nQ29udGV4dDo6
Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mIGFic29sdXRlVHJhbnNmb3JtLCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZm
ZXI+JiBpbWFnZUJ1ZmZlciwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlIHJl
bmRlcmluZ01vZGUpCiB7CiAgICAgSW50UmVjdCBwYWludFJlY3QgPSBjYWxjdWxhdGVJbWFnZUJ1
ZmZlclJlY3QodGFyZ2V0UmVjdCwgYWJzb2x1dGVUcmFuc2Zvcm0pOwogICAgIC8vIERvbid0IGNy
ZWF0ZSBlbXB0eSBJbWFnZUJ1ZmZlcnMuCkBAIC0yMzEsNyArMjMxLDcgQEAgYm9vbCBTVkdSZW5k
ZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJl
Y3QsIGNvbnN0IEEKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgSW50U2l6ZSBjbGFtcGVk
U2l6ZSA9IGNsYW1wZWRBYnNvbHV0ZVNpemUocGFpbnRSZWN0LnNpemUoKSk7Ci0gICAgT3duUHRy
PEltYWdlQnVmZmVyPiBpbWFnZSA9IEltYWdlQnVmZmVyOjpjcmVhdGUoY2xhbXBlZFNpemUsIDEs
IGNvbG9yU3BhY2UsIHJlbmRlcmluZ01vZGUpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1
ZmZlcj4gaW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNsYW1wZWRTaXplLCAxLCBjb2xvclNw
YWNlLCByZW5kZXJpbmdNb2RlKTsKICAgICBpZiAoIWltYWdlKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKQEAgLTI0MywxMSArMjQzLDExIEBAIGJvb2wgU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3Jl
YXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBBCiAgICAg
aW1hZ2VDb250ZXh0LT50cmFuc2xhdGUoLXBhaW50UmVjdC54KCksIC1wYWludFJlY3QueSgpKTsK
ICAgICBpbWFnZUNvbnRleHQtPmNvbmNhdENUTShhYnNvbHV0ZVRyYW5zZm9ybSk7CiAKLSAgICBp
bWFnZUJ1ZmZlciA9IGltYWdlLnJlbGVhc2UoKTsKKyAgICBpbWFnZUJ1ZmZlciA9IHN0ZDo6bW92
ZShpbWFnZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgU1ZHUmVuZGVyaW5nQ29udGV4
dDo6Y3JlYXRlSW1hZ2VCdWZmZXJGb3JQYXR0ZXJuKGNvbnN0IEZsb2F0UmVjdCYgYWJzb2x1dGVU
YXJnZXRSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGNsYW1wZWRBYnNvbHV0ZVRhcmdldFJlY3QsIE93
blB0cjxJbWFnZUJ1ZmZlcj4mIGltYWdlQnVmZmVyLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFJl
bmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSkKK2Jvb2wgU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3Jl
YXRlSW1hZ2VCdWZmZXJGb3JQYXR0ZXJuKGNvbnN0IEZsb2F0UmVjdCYgYWJzb2x1dGVUYXJnZXRS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIGNsYW1wZWRBYnNvbHV0ZVRhcmdldFJlY3QsIHN0ZDo6dW5p
cXVlX3B0cjxJbWFnZUJ1ZmZlcj4mIGltYWdlQnVmZmVyLCBDb2xvclNwYWNlIGNvbG9yU3BhY2Us
IFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSkKIHsKICAgICBJbnRTaXplIGltYWdlU2l6ZShy
b3VuZGVkSW50U2l6ZShjbGFtcGVkQWJzb2x1dGVUYXJnZXRSZWN0LnNpemUoKSkpOwogICAgIElu
dFNpemUgdW5jbGFtcGVkSW1hZ2VTaXplKHJvdW5kZWRJbnRTaXplKGFic29sdXRlVGFyZ2V0UmVj
dC5zaXplKCkpKTsKQEAgLTI1Niw3ICsyNTYsNyBAQCBib29sIFNWR1JlbmRlcmluZ0NvbnRleHQ6
OmNyZWF0ZUltYWdlQnVmZmVyRm9yUGF0dGVybihjb25zdCBGbG9hdFJlY3QmIGFic29sdXRlVAog
ICAgIGlmIChpbWFnZVNpemUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICBPd25QdHI8SW1hZ2VCdWZmZXI+IGltYWdlID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShpbWFnZVNp
emUsIDEsIGNvbG9yU3BhY2UsIHJlbmRlcmluZ01vZGUpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJ
bWFnZUJ1ZmZlcj4gaW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGltYWdlU2l6ZSwgMSwgY29s
b3JTcGFjZSwgcmVuZGVyaW5nTW9kZSk7CiAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCkBAIC0yNjYsNyArMjY2LDcgQEAgYm9vbCBTVkdSZW5kZXJpbmdDb250ZXh0Ojpj
cmVhdGVJbWFnZUJ1ZmZlckZvclBhdHRlcm4oY29uc3QgRmxvYXRSZWN0JiBhYnNvbHV0ZVQKICAg
ICAvLyBDb21wZW5zYXRlIHJvdW5kaW5nIGVmZmVjdHMsIGFzIHRoZSBhYnNvbHV0ZSB0YXJnZXQg
cmVjdCBpcyB1c2luZyBmbG9hdGluZy1wb2ludCBudW1iZXJzIGFuZCB0aGUgaW1hZ2UgYnVmZmVy
IHNpemUgaXMgaW50ZWdlci4KICAgICBpbWFnZUNvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZSh1bmNs
YW1wZWRJbWFnZVNpemUud2lkdGgoKSAvIGFic29sdXRlVGFyZ2V0UmVjdC53aWR0aCgpLCB1bmNs
YW1wZWRJbWFnZVNpemUuaGVpZ2h0KCkgLyBhYnNvbHV0ZVRhcmdldFJlY3QuaGVpZ2h0KCkpKTsK
IAotICAgIGltYWdlQnVmZmVyID0gaW1hZ2UucmVsZWFzZSgpOworICAgIGltYWdlQnVmZmVyID0g
c3RkOjptb3ZlKGltYWdlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMjg3LDcgKzI4Nyw3
IEBAIHZvaWQgU1ZHUmVuZGVyaW5nQ29udGV4dDo6cmVuZGVyU3VidHJlZVRvSW1hZ2VCdWZmZXIo
SW1hZ2VCdWZmZXIqIGltYWdlLCBSZW5kZXJFCiAgICAgY29udGVudFRyYW5zZm9ybWF0aW9uID0g
c2F2ZWRDb250ZW50VHJhbnNmb3JtYXRpb247CiB9CiAKLXZvaWQgU1ZHUmVuZGVyaW5nQ29udGV4
dDo6Y2xpcFRvSW1hZ2VCdWZmZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mIGFic29sdXRlVHJhbnNmb3JtLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJl
Y3QsIE93blB0cjxJbWFnZUJ1ZmZlcj4mIGltYWdlQnVmZmVyLCBib29sIHNhZmVUb0NsZWFyKQor
dm9pZCBTVkdSZW5kZXJpbmdDb250ZXh0OjpjbGlwVG9JbWFnZUJ1ZmZlcihHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgYWJzb2x1dGVUcmFuc2Zvcm0sIGNv
bnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiYg
aW1hZ2VCdWZmZXIsIGJvb2wgc2FmZVRvQ2xlYXIpCiB7CiAgICAgQVNTRVJUKGNvbnRleHQpOwog
ICAgIEFTU0VSVChpbWFnZUJ1ZmZlcik7CkBAIC0zMDMsNyArMzAzLDcgQEAgdm9pZCBTVkdSZW5k
ZXJpbmdDb250ZXh0OjpjbGlwVG9JbWFnZUJ1ZmZlcihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQs
IGNvbnN0IEFmZmkKICAgICAvLyBXaGVuIG5lc3RpbmcgcmVzb3VyY2VzLCB3aXRoIG9iamVjdEJv
dW5kaW5nQm94IGFzIGNvbnRlbnQgdW5pdCB0eXBlcywgdGhlcmUncyBubyB1c2UgaW4gY2FjaGlu
ZyB0aGUKICAgICAvLyByZXN1bHRpbmcgaW1hZ2UgYnVmZmVyIGFzIHRoZSBwYXJlbnQgcmVzb3Vy
Y2UgYWxyZWFkeSBjYWNoZXMgdGhlIHJlc3VsdC4KICAgICBpZiAoc2FmZVRvQ2xlYXIgJiYgIWN1
cnJlbnRDb250ZW50VHJhbnNmb3JtYXRpb24oKS5pc0lkZW50aXR5KCkpCi0gICAgICAgIGltYWdl
QnVmZmVyLmNsZWFyKCk7CisgICAgICAgIGltYWdlQnVmZmVyLnJlc2V0KCk7CiB9CiAKIEZsb2F0
UmVjdCBTVkdSZW5kZXJpbmdDb250ZXh0OjpjbGFtcGVkQWJzb2x1dGVUYXJnZXRSZWN0KGNvbnN0
IEZsb2F0UmVjdCYgYWJzb2x1dGVUYXJnZXRSZWN0KQpAQCAtMzI2LDcgKzMyNiw3IEBAIHZvaWQg
U1ZHUmVuZGVyaW5nQ29udGV4dDo6Y2xlYXIyRFJvdGF0aW9uKEFmZmluZVRyYW5zZm9ybSYgdHJh
bnNmb3JtKQogICAgIHRyYW5zZm9ybS5yZWNvbXBvc2UoZGVjb21wb3NpdGlvbik7CiB9CiAKLWJv
b2wgU1ZHUmVuZGVyaW5nQ29udGV4dDo6YnVmZmVyRm9yZWdyb3VuZChPd25QdHI8SW1hZ2VCdWZm
ZXI+JiBpbWFnZUJ1ZmZlcikKK2Jvb2wgU1ZHUmVuZGVyaW5nQ29udGV4dDo6YnVmZmVyRm9yZWdy
b3VuZChzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+JiBpbWFnZUJ1ZmZlcikKIHsKICAgICBB
U1NFUlQobV9wYWludEluZm8pOwogICAgIEFTU0VSVChtX3JlbmRlcmVyLT5pc1NWR0ltYWdlKCkp
OwpAQCAtMzM4LDcgKzMzOCw3IEBAIGJvb2wgU1ZHUmVuZGVyaW5nQ29udGV4dDo6YnVmZmVyRm9y
ZWdyb3VuZChPd25QdHI8SW1hZ2VCdWZmZXI+JiBpbWFnZUJ1ZmZlcikKICAgICAgICAgSW50U2l6
ZSBleHBhbmRlZEJvdW5kaW5nQm94ID0gZXhwYW5kZWRJbnRTaXplKGJvdW5kaW5nQm94LnNpemUo
KSk7CiAgICAgICAgIEludFNpemUgYnVmZmVyU2l6ZShzdGF0aWNfY2FzdDxpbnQ+KGNlaWwoZXhw
YW5kZWRCb3VuZGluZ0JveC53aWR0aCgpICogdHJhbnNmb3JtLnhTY2FsZSgpKSksIHN0YXRpY19j
YXN0PGludD4oY2VpbChleHBhbmRlZEJvdW5kaW5nQm94LmhlaWdodCgpICogdHJhbnNmb3JtLnlT
Y2FsZSgpKSkpOwogICAgICAgICBpZiAoYnVmZmVyU2l6ZSAhPSBpbWFnZUJ1ZmZlci0+aW50ZXJu
YWxTaXplKCkpCi0gICAgICAgICAgICBpbWFnZUJ1ZmZlci5jbGVhcigpOworICAgICAgICAgICAg
aW1hZ2VCdWZmZXIucmVzZXQoKTsKICAgICB9CiAKICAgICAvLyBDcmVhdGUgYSBuZXcgYnVmZmVy
IGFuZCBwYWludCB0aGUgZm9yZWdyb3VuZCBpbnRvIGl0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuaAppbmRleCAyZGE3MGNkODZiZDc1
MDk5MjFmNDJjMThiMzczZTIxZDcwNzk0ZmE1Li5mNmQ4Y2Y3YjdjNmYxZjdiMGU4MGMwZGM4ODJj
ZDZmNzFiMzBiZDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NW
R1JlbmRlcmluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NW
R1JlbmRlcmluZ0NvbnRleHQuaApAQCAtNzYsMTIgKzc2LDEyIEBAIHB1YmxpYzoKICAgICB2b2lk
IHByZXBhcmVUb1JlbmRlclNWR0NvbnRlbnQoUmVuZGVyRWxlbWVudCYsIFBhaW50SW5mbyYsIE5l
ZWRzR3JhcGhpY3NDb250ZXh0U2F2ZSA9IERvbnRTYXZlR3JhcGhpY3NDb250ZXh0KTsKICAgICBi
b29sIGlzUmVuZGVyaW5nUHJlcGFyZWQoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlcmluZ0ZsYWdz
ICYgUmVuZGVyaW5nUHJlcGFyZWQ7IH0KIAotICAgIHN0YXRpYyBib29sIGNyZWF0ZUltYWdlQnVm
ZmVyKGNvbnN0IEZsb2F0UmVjdCYgcGFpbnRSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGFi
c29sdXRlVHJhbnNmb3JtLCBPd25QdHI8SW1hZ2VCdWZmZXI+JiwgQ29sb3JTcGFjZSwgUmVuZGVy
aW5nTW9kZSk7CisgICAgc3RhdGljIGJvb2wgY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRS
ZWN0JiBwYWludFJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgYWJzb2x1dGVUcmFuc2Zvcm0s
IHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4mLCBDb2xvclNwYWNlLCBSZW5kZXJpbmdNb2Rl
KTsKICAgICAvLyBQYXR0ZXJucyBuZWVkIGEgZGlmZmVyZW50IGZsb2F0LXRvLWludGVnZXIgY29v
cmRpbmF0ZSBtYXBwaW5nLgotICAgIHN0YXRpYyBib29sIGNyZWF0ZUltYWdlQnVmZmVyRm9yUGF0
dGVybihjb25zdCBGbG9hdFJlY3QmIGFic29sdXRlVGFyZ2V0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBjbGFtcGVkQWJzb2x1dGVUYXJnZXRSZWN0LCBPd25QdHI8SW1hZ2VCdWZmZXI+JiwgQ29sb3JT
cGFjZSwgUmVuZGVyaW5nTW9kZSk7CisgICAgc3RhdGljIGJvb2wgY3JlYXRlSW1hZ2VCdWZmZXJG
b3JQYXR0ZXJuKGNvbnN0IEZsb2F0UmVjdCYgYWJzb2x1dGVUYXJnZXRSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIGNsYW1wZWRBYnNvbHV0ZVRhcmdldFJlY3QsIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1
ZmZlcj4mLCBDb2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlKTsKIAogICAgIHN0YXRpYyB2b2lkIHJl
bmRlclN1YnRyZWVUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyKiwgUmVuZGVyRWxlbWVudCYsIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYpOwotICAgIHN0YXRpYyB2b2lkIGNsaXBUb0ltYWdlQnVmZmVy
KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgYWJzb2x1dGVUcmFuc2Zv
cm0sIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgT3duUHRyPEltYWdlQnVmZmVyPiYsIGJv
b2wgc2FmZVRvQ2xlYXIpOworICAgIHN0YXRpYyB2b2lkIGNsaXBUb0ltYWdlQnVmZmVyKEdyYXBo
aWNzQ29udGV4dCosIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgYWJzb2x1dGVUcmFuc2Zvcm0sIGNv
bnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiYs
IGJvb2wgc2FmZVRvQ2xlYXIpOwogCiAgICAgc3RhdGljIGZsb2F0IGNhbGN1bGF0ZVNjcmVlbkZv
bnRTaXplU2NhbGluZ0ZhY3Rvcihjb25zdCBSZW5kZXJPYmplY3QqKTsKICAgICBzdGF0aWMgdm9p
ZCBjYWxjdWxhdGVUcmFuc2Zvcm1hdGlvblRvT3V0ZXJtb3N0Q29vcmRpbmF0ZVN5c3RlbShjb25z
dCBSZW5kZXJPYmplY3QqLCBBZmZpbmVUcmFuc2Zvcm0mIGFic29sdXRlVHJhbnNmb3JtKTsKQEAg
LTk1LDcgKzk1LDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIC8vIFN1cHBvcnQgZm9yIHRoZSBi
dWZmZXJlZC1yZW5kZXJpbmcgaGludC4KLSAgICBib29sIGJ1ZmZlckZvcmVncm91bmQoT3duUHRy
PEltYWdlQnVmZmVyPiYpOworICAgIGJvb2wgYnVmZmVyRm9yZWdyb3VuZChzdGQ6OnVuaXF1ZV9w
dHI8SW1hZ2VCdWZmZXI+Jik7CiAKIHByaXZhdGU6CiAgICAgLy8gVG8gcHJvcGVybHkgcmV2ZXJ0
IHBhcnRpYWxseSBzdWNjZXNzZnVsIGluaXRpYWxpenRpb25zIGluIHRoZSBkZXN0cnVjdG9yLCB3
ZSByZWNvcmQgYWxsIHN1Y2Nlc3NmdWwgc3RlcHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNz
L1NWR0ltYWdlLmNwcAppbmRleCA1MDU5OGJiY2U3N2NmMDg1NWNhNTczZmYzYzIxZDE4NGZlYmI3
ZjU3Li42ZDdiMjU2ZjY0ODdhN2ExZDc2MjJmY2Y2ZDFlNWFjOWFlMjQyYTk2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKQEAgLTE3MCw3ICsxNzAsNyBAQCBQYXNz
TmF0aXZlSW1hZ2VQdHIgU1ZHSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkKICAg
ICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBPd25QdHI8SW1hZ2VCdWZm
ZXI+IGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSgpLCAxKTsKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSgp
LCAxKTsKICAgICBpZiAoIWJ1ZmZlcikgLy8gZmFpbGVkIHRvIGFsbG9jYXRlIGltYWdlCiAgICAg
ICAgIHJldHVybiAwOwogCkBAIC0xOTYsNyArMTk2LDcgQEAgdm9pZCBTVkdJbWFnZTo6ZHJhd1Bh
dHRlcm5Gb3JDb250YWluZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFNp
emUKICAgICBGbG9hdFJlY3QgaW1hZ2VCdWZmZXJTaXplID0gem9vbWVkQ29udGFpbmVyUmVjdDsK
ICAgICBpbWFnZUJ1ZmZlclNpemUuc2NhbGUoaW1hZ2VCdWZmZXJTY2FsZS53aWR0aCgpLCBpbWFn
ZUJ1ZmZlclNjYWxlLmhlaWdodCgpKTsKIAotICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gYnVmZmVy
ID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShleHBhbmRlZEludFNpemUoaW1hZ2VCdWZmZXJTaXplLnNp
emUoKSksIDEpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gYnVmZmVyID0gSW1h
Z2VCdWZmZXI6OmNyZWF0ZShleHBhbmRlZEludFNpemUoaW1hZ2VCdWZmZXJTaXplLnNpemUoKSks
IDEpOwogICAgIGlmICghYnVmZmVyKSAvLyBGYWlsZWQgdG8gYWxsb2NhdGUgYnVmZmVyLgogICAg
ICAgICByZXR1cm47CiAgICAgZHJhd0ZvckNvbnRhaW5lcihidWZmZXItPmNvbnRleHQoKSwgY29u
dGFpbmVyU2l6ZSwgem9vbSwgaW1hZ2VCdWZmZXJTaXplLCB6b29tZWRDb250YWluZXJSZWN0LCBD
b2xvclNwYWNlRGV2aWNlUkdCLCBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGVOb3JtYWwp
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217775</attachid>
            <date>2013-11-24 22:57:55 -0800</date>
            <delta_ts>2013-11-25 07:21:06 -0800</delta_ts>
            <desc>v3</desc>
            <filename>bug-124822-20131124225754.patch</filename>
            <type>text/plain</type>
            <size>55893</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU5NzMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDU1OWU4MWZhZWZiMjRi
MzQwZWRjMTM2OWNiMzVlZDhmZTliNzVjOC4uYTIwYTg2YjYxZTNiNzIwNTdlZjE0NDgyOGU3NGY5
NTFjZjE3YWYwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMCBAQAorMjAxMy0xMS0yNCAgQnJp
YW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rvbi5lZHU+CisKKyAgICAgICAgSW1hZ2VCdWZm
ZXI6OmNyZWF0ZSBzaG91bGQgcmV0dXJuIGEgc3RkOjp1bmlxdWVfcHRyIGluc3RlYWQgb2YgT3du
UHRyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0
ODIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVw
bGFjZSBhbGwgdXNlcyBvZiBPd25QdHI8SW1hZ2VCdWZmZXI+IGFuZCBQYXNzT3duUHRyPEltYWdl
QnVmZmVyPiB3aXRoCisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4uIFJlcGxh
Y2UgY2FsbHMgdG8gT3duUHRyOjpjbGVhcigpIGFuZAorICAgICAgICBPd25QdHI6OnJlbGVhc2Uo
KSB3aXRoIHJlc2V0KCkgYW5kIHN0ZDo6bW92ZSgpLiBSZW1vdmUgdW5uZWNlc3NhcnkgaW5jbHVk
ZXMuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBUaGlzIGlzIGEgbWVjaGFuaWNhbCByZWZhY3Rv
cmluZy4KKworICAgICAgICAqIGNzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNTU0ZpbHRlckltYWdlVmFsdWU6OmltYWdlKToKKyAgICAgICAgKiBodG1sL0hU
TUxDYW52YXNFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDYW52YXNFbGVtZW50
OjpzZXRTdXJmYWNlU2l6ZSk6CisgICAgICAgICogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oOgor
ICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNyZWF0ZUNvbXBvc2l0aW5n
QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZnVs
bENhbnZhc0NvbXBvc2l0ZWREcmF3SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjpmdWxsQ2FudmFzQ29tcG9zaXRlZEZpbGwpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3VGV4dEludGVybmFsKToKKyAgICAg
ICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaDoKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpMUlVJbWFnZUJ1ZmZlckNhY2hlOjpMUlVJbWFnZUJ1ZmZl
ckNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6TFJVSW1h
Z2VCdWZmZXJDYWNoZTo6aW1hZ2VCdWZmZXIpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAqIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbEVs
ZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRh
aW5lckVsZW1lbnQ6OmNyZWF0ZVRleHRUcmFja1JlcHJlc2VudGF0aW9uSW1hZ2UpOgorICAgICAg
ICAqIHBhZ2UvRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6Om5vZGVJbWFnZSk6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6ZHJhZ0ltYWdlRm9yU2VsZWN0aW9uKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpCaXRtYXBJbWFnZTo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyb3NzZmFk
ZUdlbmVyYXRlZEltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhZGllbnRJbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZUNv
bXBhdGlibGVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU2hh
ZG93Qmx1ci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJD
Ry5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6cHV0Qnl0ZUFycmF5KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RkVUaWxlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRmlsdGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXI6OnNldFNv
dXJjZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVm
ZmVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNsZWFyUmVzdWx0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIu
aDoKKyAgICAgICAgKiByZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbmxpbmVUZXh0Qm94OjpwYWludERlY29yYXRpb24pOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hN
b2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZCk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlclRoZW1lTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnBh
aW50UHJvZ3Jlc3NCYXIpOgorICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcGU6OmNyZWF0ZVNoYXBlKToKKyAgICAgICAgKiByZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0lt
YWdlOjppbnZhbGlkYXRlQnVmZmVyZWRGb3JlZ3JvdW5kKToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR0ltYWdlLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
ZXNvdXJjZUNsaXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VD
bGlwcGVyOjphcHBseUNsaXBwaW5nVG9Db250ZXh0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVz
b3VyY2VGaWx0ZXI6OmFwcGx5UmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZH
UmVzb3VyY2VGaWx0ZXI6OnBvc3RBcHBseVJlc291cmNlKToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcDogUmVtb3ZlIG1ldGhvZCBwYXJhbWV0ZXIgd3Jh
cHBpbmcvaW5kZW50YXRpb24uCisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVNYXNrQW5kU3dhcENv
bnRleHRGb3JUZXh0R3JhZGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6Y2xpcFRvVGV4dE1hc2sp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudDo6YXBwbHlSZXNv
dXJjZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6YXBwbHlSZXNvdXJj
ZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5oOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcDogUmVt
b3ZlIG1ldGhvZCBwYXJhbWV0ZXIgd3JhcHBpbmcvaW5kZW50YXRpb24uCisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm46OmJ1aWxkUGF0dGVybik6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm46OmNyZWF0ZVRpbGVJbWFnZSk6CisgICAg
ICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uaDogUmVtb3ZlIG1l
dGhvZCBwYXJhbWV0ZXIgd3JhcHBpbmcvaW5kZW50YXRpb24uCisgICAgICAgICogcmVuZGVyaW5n
L3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRl
cmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Jl
bmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyRm9yUGF0dGVybik6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdSZW5kZXJpbmdDb250ZXh0OjpjbGlwVG9JbWFnZUJ1ZmZlcik6CisgICAgICAg
IChXZWJDb3JlOjpTVkdSZW5kZXJpbmdDb250ZXh0OjpidWZmZXJGb3JlZ3JvdW5kKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuaDoKKyAgICAgICAgKiBzdmcv
Z3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2U6Om5hdGl2
ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpkcmF3
UGF0dGVybkZvckNvbnRhaW5lcik6CisKIDIwMTMtMTEtMjMgIFhhYmllciBSb2RyaWd1ZXogQ2Fs
dmFyICA8Y2FsdmFyaXNAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1N0cmVhbWVyXSBSZW1vdmUg
MC4xMCBjb2RlcGF0aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlcklt
YWdlVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3Bw
CmluZGV4IGY3NDk1ZDk3MzM5MWFjOWY1ZGVlNjVkZTYzNzJiMDgzYTQ5NTNlYjEuLmYyMTdhOGE2
OTIzYWVhOTJkZWZhYjQ4NWRmNzY4MjZiOGJiOWFkNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHAKQEAgLTExMywxMyArMTEzLDEzIEBAIFBhc3NSZWZQdHI8
SW1hZ2U+IENTU0ZpbHRlckltYWdlVmFsdWU6OmltYWdlKFJlbmRlckVsZW1lbnQqIHJlbmRlcmVy
LCBjb25zdCBJbnRTCiAgICAgICAgIHJldHVybiBJbWFnZTo6bnVsbEltYWdlKCk7CiAKICAgICAv
LyBUcmFuc2Zvcm0gSW1hZ2UgaW50byBJbWFnZUJ1ZmZlci4KLSAgICBPd25QdHI8SW1hZ2VCdWZm
ZXI+IHRleHR1cmUgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUpOworICAgIHN0ZDo6dW5pcXVl
X3B0cjxJbWFnZUJ1ZmZlcj4gdGV4dHVyZSA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSk7CiAg
ICAgaWYgKCF0ZXh0dXJlKQogICAgICAgICByZXR1cm4gSW1hZ2U6Om51bGxJbWFnZSgpOwogICAg
IHRleHR1cmUtPmNvbnRleHQoKS0+ZHJhd0ltYWdlKGltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdC
LCBJbnRQb2ludCgpKTsKIAogICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3RSZW5kZXJlcj4gZmlsdGVy
UmVuZGVyZXIgPSBGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6Y3JlYXRlKCk7Ci0gICAgZmlsdGVyUmVu
ZGVyZXItPnNldFNvdXJjZUltYWdlKHRleHR1cmUucmVsZWFzZSgpKTsKKyAgICBmaWx0ZXJSZW5k
ZXJlci0+c2V0U291cmNlSW1hZ2Uoc3RkOjptb3ZlKHRleHR1cmUpKTsKICAgICBmaWx0ZXJSZW5k
ZXJlci0+c2V0U291cmNlSW1hZ2VSZWN0KEZsb2F0UmVjdChGbG9hdFBvaW50KCksIHNpemUpKTsK
ICAgICBmaWx0ZXJSZW5kZXJlci0+c2V0RmlsdGVyUmVnaW9uKEZsb2F0UmVjdChGbG9hdFBvaW50
KCksIHNpemUpKTsKICAgICBpZiAoIWZpbHRlclJlbmRlcmVyLT5idWlsZChyZW5kZXJlciwgbV9m
aWx0ZXJPcGVyYXRpb25zLCBGaWx0ZXJGdW5jdGlvbikpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TENhbnZhc0VsZW1lbnQuY3BwCmluZGV4IGVkY2VjNjQzYWRmMjBiYTQxZmZkZTlmNzA0ZGRjODU1
NTU0MzIwYzcuLjlmOGFjZWM5NTNjNGRmNmNiMjUyYjA3NzhjODIwMGU3MzdhYTU0MzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCkBAIC00NDcsNyArNDQ3LDcg
QEAgdm9pZCBIVE1MQ2FudmFzRWxlbWVudDo6c2V0U3VyZmFjZVNpemUoY29uc3QgSW50U2l6ZSYg
c2l6ZSkKICAgICBtX3NpemUgPSBzaXplOwogICAgIG1faGFzQ3JlYXRlZEltYWdlQnVmZmVyID0g
ZmFsc2U7CiAgICAgbV9jb250ZXh0U3RhdGVTYXZlci5jbGVhcigpOwotICAgIG1faW1hZ2VCdWZm
ZXIuY2xlYXIoKTsKKyAgICBtX2ltYWdlQnVmZmVyLnJlc2V0KCk7CiAgICAgY2xlYXJDb3BpZWRJ
bWFnZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmgKaW5kZXgg
NjU5M2I1MWNlOGE0NWY0ODFkNWZmZWQxMjA4OTMzZDgwYzQ2Y2Q2NC4uYzQyMWFlZWMwOTk5MWE2
NTc5ZjY1ZmZkNDg4YmM1NDk5Zjk1MjVhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQ2FudmFzRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZh
c0VsZW1lbnQuaApAQCAtMTc5LDcgKzE3OSw3IEBAIHByaXZhdGU6CiAgICAgLy8gbV9jcmVhdGVk
SW1hZ2VCdWZmZXIgbWVhbnMgd2UgdHJpZWQgdG8gbWFsbG9jIHRoZSBidWZmZXIuICBXZSBkaWRu
J3QgbmVjZXNzYXJpbHkgZ2V0IGl0LgogICAgIG11dGFibGUgYm9vbCBtX2hhc0NyZWF0ZWRJbWFn
ZUJ1ZmZlcjsKICAgICBtdXRhYmxlIGJvb2wgbV9kaWRDbGVhckltYWdlQnVmZmVyOwotICAgIG11
dGFibGUgT3duUHRyPEltYWdlQnVmZmVyPiBtX2ltYWdlQnVmZmVyOworICAgIG11dGFibGUgc3Rk
Ojp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBtX2ltYWdlQnVmZmVyOwogICAgIG11dGFibGUgT3du
UHRyPEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXI+IG1fY29udGV4dFN0YXRlU2F2ZXI7CiAgICAg
CiAgICAgbXV0YWJsZSBSZWZQdHI8SW1hZ2U+IG1fcHJlc2VudGVkSW1hZ2U7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNw
cAppbmRleCA3ODkwZWI4YWJhZDc4MzY1YzNkNzM3ZTdhMDVhODJmOGE3NmQ2NTVhLi41ZGVhM2Nh
YzNiMmUxZmExNTU5NjdmMzQwOGRkM2JhZjNiYjVhNmFiIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKQEAgLTE1
NDQsNyArMTU0NCw3IEBAIHRlbXBsYXRlPGNsYXNzIFQ+IEludFJlY3QgQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEOjpjYWxjdWxhdGVDb21wb3NpdGluZ0J1ZmZlclJlCiAgICAgcmV0dXJuIGJ1ZmZl
clJlY3Q7CiB9CiAKLU93blB0cjxJbWFnZUJ1ZmZlcj4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
OjpjcmVhdGVDb21wb3NpdGluZ0J1ZmZlcihjb25zdCBJbnRSZWN0JiBidWZmZXJSZWN0KQorc3Rk
Ojp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNyZWF0
ZUNvbXBvc2l0aW5nQnVmZmVyKGNvbnN0IEludFJlY3QmIGJ1ZmZlclJlY3QpCiB7CiAgICAgUmVu
ZGVyaW5nTW9kZSByZW5kZXJNb2RlID0gaXNBY2NlbGVyYXRlZCgpID8gQWNjZWxlcmF0ZWQgOiBV
bmFjY2VsZXJhdGVkOwogICAgIHJldHVybiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGJ1ZmZlclJlY3Qu
c2l6ZSgpLCAxLCBDb2xvclNwYWNlRGV2aWNlUkdCLCByZW5kZXJNb2RlKTsKQEAgLTE1OTMsNyAr
MTU5Myw3IEBAIHRlbXBsYXRlPGNsYXNzIFQ+IHZvaWQgIENhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RDo6ZnVsbENhbnZhc0NvbXBvc2l0ZWREcmF3SW1hZ2UoCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IGJ1ZmZlciA9IGNyZWF0ZUNvbXBvc2l0aW5nQnVm
ZmVyKGJ1ZmZlclJlY3QpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gYnVmZmVy
ID0gY3JlYXRlQ29tcG9zaXRpbmdCdWZmZXIoYnVmZmVyUmVjdCk7CiAgICAgaWYgKCFidWZmZXIp
CiAgICAgICAgIHJldHVybjsKIApAQCAtMTYyMyw3ICsxNjIzLDcgQEAgdGVtcGxhdGU8Y2xhc3Mg
VD4gdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZ1bGxDYW52YXNDb21wb3NpdGVkRmls
bChjb25zdAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgT3duUHRyPEltYWdlQnVmZmVy
PiBidWZmZXIgPSBjcmVhdGVDb21wb3NpdGluZ0J1ZmZlcihidWZmZXJSZWN0KTsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGJ1ZmZlciA9IGNyZWF0ZUNvbXBvc2l0aW5nQnVmZmVy
KGJ1ZmZlclJlY3QpOwogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm47CiAKQEAgLTIy
MzQsNyArMjIzNCw3IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3VGV4dElu
dGVybmFsKGNvbnN0IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxvCiAgICAgaWYgKGRyYXdTdHls
ZS5jYW52YXNHcmFkaWVudCgpIHx8IGRyYXdTdHlsZS5jYW52YXNQYXR0ZXJuKCkpIHsKICAgICAg
ICAgSW50UmVjdCBtYXNrUmVjdCA9IGVuY2xvc2luZ0ludFJlY3QodGV4dFJlY3QpOwogCi0gICAg
ICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gbWFza0ltYWdlID0gYy0+Y3JlYXRlQ29tcGF0aWJsZUJ1
ZmZlcihtYXNrUmVjdC5zaXplKCkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZm
ZXI+IG1hc2tJbWFnZSA9IGMtPmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIobWFza1JlY3Quc2l6ZSgp
KTsKIAogICAgICAgICBHcmFwaGljc0NvbnRleHQqIG1hc2tJbWFnZUNvbnRleHQgPSBtYXNrSW1h
Z2UtPmNvbnRleHQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9D
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaAppbmRleCBkMTY3YTdkODcxMTMwOTcwZTJlOWVmMzYx
ZDViNDAxZDVkYjRkZWNkLi45MjQ4NWE5ZTAwZGI1NTg5MmE1Mjk5NzgyMTg0ODA5ZTg0ZTk5NTk2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQuaApAQCAtMzEyLDcgKzMxMiw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCByZWN0
Q29udGFpbnNDYW52YXMoY29uc3QgRmxvYXRSZWN0JikgY29uc3Q7CiAKICAgICB0ZW1wbGF0ZTxj
bGFzcyBUPiBJbnRSZWN0IGNhbGN1bGF0ZUNvbXBvc2l0aW5nQnVmZmVyUmVjdChjb25zdCBUJiwg
SW50U2l6ZSopOwotICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlQ29tcG9zaXRpbmdCdWZm
ZXIoY29uc3QgSW50UmVjdCYpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gY3Jl
YXRlQ29tcG9zaXRpbmdCdWZmZXIoY29uc3QgSW50UmVjdCYpOwogICAgIHZvaWQgY29tcG9zaXRl
QnVmZmVyKEltYWdlQnVmZmVyKiwgY29uc3QgSW50UmVjdCYsIENvbXBvc2l0ZU9wZXJhdG9yKTsK
IAogICAgIHZvaWQgaW5mbGF0ZVN0cm9rZVJlY3QoRmxvYXRSZWN0JikgY29uc3Q7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcApp
bmRleCA3NDQyYTU0NWJjZTQ3OWMxNDQxYTM4ZGY0OGFhYjI1ODJlY2Y4ZjE3Li5mOGVjMjE5NzNk
MTg2NjQ5MDQ2N2NmZjQ5MTAwZjE2ZDNmZTVhNzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTU5MzEsNyArNTkz
MSw3IEBAIFN0cmluZyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmVuc3VyZU5vdE51bGwoY29uc3Qg
U3RyaW5nJiB0ZXh0KSBjb25zdAogfQogCiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OkxSVUltYWdl
QnVmZmVyQ2FjaGU6OkxSVUltYWdlQnVmZmVyQ2FjaGUoaW50IGNhcGFjaXR5KQotICAgIDogbV9i
dWZmZXJzKHN0ZDo6bWFrZV91bmlxdWU8T3duUHRyPEltYWdlQnVmZmVyPltdPihjYXBhY2l0eSkp
CisgICAgOiBtX2J1ZmZlcnMoc3RkOjptYWtlX3VuaXF1ZTxzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VC
dWZmZXI+W10+KGNhcGFjaXR5KSkKICAgICAsIG1fY2FwYWNpdHkoY2FwYWNpdHkpCiB7CiB9CkBA
IC01OTQ5LDExICs1OTQ5LDExIEBAIEltYWdlQnVmZmVyKiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OkxSVUltYWdlQnVmZmVyQ2FjaGU6OmltYWdlQnVmZmVyKGNvbnN0IEludFNpCiAgICAgICAgIHJl
dHVybiBidWY7CiAgICAgfQogCi0gICAgT3duUHRyPEltYWdlQnVmZmVyPiB0ZW1wID0gSW1hZ2VC
dWZmZXI6OmNyZWF0ZShzaXplLCAxKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+
IHRlbXAgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIDEpOwogICAgIGlmICghdGVtcCkKICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgaSA9IHN0ZDo6bWluKG1fY2FwYWNpdHkgLSAxLCBpKTsKLSAg
ICBtX2J1ZmZlcnNbaV0gPSB0ZW1wLnJlbGVhc2UoKTsKKyAgICBtX2J1ZmZlcnNbaV0gPSBzdGQ6
Om1vdmUodGVtcCk7CiAKICAgICBJbWFnZUJ1ZmZlciogYnVmID0gbV9idWZmZXJzW2ldLmdldCgp
OwogICAgIGJ1YmJsZVRvRnJvbnQoaSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oCmluZGV4IDRmODhiNDRlMGU1NDQwYzkxYmJjMjFj
NGRjZTk1MjQwMTRjZWI0N2EuLjVkZTY4YzNlMzE5M2MzNDU3YzcxMGQ0NTQwMWEzOWVjMTk5NDE3
NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5n
Q29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5n
Q29udGV4dC5oCkBAIC00NzEsNyArNDcxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgSW1hZ2VCdWZm
ZXIqIGltYWdlQnVmZmVyKGNvbnN0IEludFNpemUmIHNpemUpOwogICAgIHByaXZhdGU6CiAgICAg
ICAgIHZvaWQgYnViYmxlVG9Gcm9udChpbnQgaWR4KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PE93blB0cjxJbWFnZUJ1ZmZlcj5bXT4gbV9idWZmZXJzOworICAgICAgICBzdGQ6OnVuaXF1ZV9w
dHI8c3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPltdPiBtX2J1ZmZlcnM7CiAgICAgICAgIGlu
dCBtX2NhcGFjaXR5OwogICAgIH07CiAgICAgTFJVSW1hZ2VCdWZmZXJDYWNoZSBtX2dlbmVyYXRl
ZEltYWdlQ2FjaGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRp
YUNvbnRyb2xFbGVtZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNv
bnRyb2xFbGVtZW50cy5jcHAKaW5kZXggY2FiYzVkZGNhNGFmNjM0Y2IzZThmMjFhY2RlOTRjZjk5
NTNkMWI2NC4uOTZkZGViNWVjOGM3YjNlYTFjNDkzNjI0NjMzOThhZTAyNWJlY2M5MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNw
cApAQCAtMTQxNSw3ICsxNDE1LDcgQEAgUGFzc1JlZlB0cjxJbWFnZT4gTWVkaWFDb250cm9sVGV4
dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlVGV4dFRyYWNrUmVwcmVzZW4KIAogICAgIElu
dFJlY3QgcGFpbnRpbmdSZWN0ID0gSW50UmVjdChJbnRQb2ludCgpLCBsYXllci0+c2l6ZSgpKTsK
IAotICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gYnVmZmVyKEltYWdlQnVmZmVyOjpjcmVhdGUocGFp
bnRpbmdSZWN0LnNpemUoKSwgZGV2aWNlU2NhbGVGYWN0b3IsIENvbG9yU3BhY2VEZXZpY2VSR0Ip
KTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGJ1ZmZlcihJbWFnZUJ1ZmZlcjo6
Y3JlYXRlKHBhaW50aW5nUmVjdC5zaXplKCksIGRldmljZVNjYWxlRmFjdG9yLCBDb2xvclNwYWNl
RGV2aWNlUkdCKSk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWUuY3BwCmluZGV4IGQyM2JhNWY0MmFlNDAwMDA0ZTBiMWZiNjRjOTIzMGM3
NzI5Yjg2MjIuLjVmM2Y3OGFkYTg1ODk5NzQwMDM2YjkzMmExNTUwOTMzZmQ4NTc1NDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWUuY3BwCkBAIC0xMDIyLDcgKzEwMjIsNyBAQCBEcmFnSW1hZ2VSZWYgRnJhbWU6
Om5vZGVJbWFnZShOb2RlKiBub2RlKQogICAgIHBhaW50aW5nUmVjdC5zZXRXaWR0aChwYWludGlu
Z1JlY3Qud2lkdGgoKSAqIGRldmljZVNjYWxlRmFjdG9yKTsKICAgICBwYWludGluZ1JlY3Quc2V0
SGVpZ2h0KHBhaW50aW5nUmVjdC5oZWlnaHQoKSAqIGRldmljZVNjYWxlRmFjdG9yKTsKIAotICAg
IE93blB0cjxJbWFnZUJ1ZmZlcj4gYnVmZmVyKEltYWdlQnVmZmVyOjpjcmVhdGUocGFpbnRpbmdS
ZWN0LnNpemUoKSwgZGV2aWNlU2NhbGVGYWN0b3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpKTsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGJ1ZmZlcihJbWFnZUJ1ZmZlcjo6Y3JlYXRl
KHBhaW50aW5nUmVjdC5zaXplKCksIGRldmljZVNjYWxlRmFjdG9yLCBDb2xvclNwYWNlRGV2aWNl
UkdCKSk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGJ1
ZmZlci0+Y29udGV4dCgpLT50cmFuc2xhdGUoLXBhaW50aW5nUmVjdC54KCksIC1wYWludGluZ1Jl
Y3QueSgpKTsKQEAgLTEwNTYsNyArMTA1Niw3IEBAIERyYWdJbWFnZVJlZiBGcmFtZTo6ZHJhZ0lt
YWdlRm9yU2VsZWN0aW9uKCkKICAgICBwYWludGluZ1JlY3Quc2V0V2lkdGgocGFpbnRpbmdSZWN0
LndpZHRoKCkgKiBkZXZpY2VTY2FsZUZhY3Rvcik7CiAgICAgcGFpbnRpbmdSZWN0LnNldEhlaWdo
dChwYWludGluZ1JlY3QuaGVpZ2h0KCkgKiBkZXZpY2VTY2FsZUZhY3Rvcik7CiAKLSAgICBPd25Q
dHI8SW1hZ2VCdWZmZXI+IGJ1ZmZlcihJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHBhaW50aW5nUmVjdC5z
aXplKCksIGRldmljZVNjYWxlRmFjdG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKSk7CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBidWZmZXIoSW1hZ2VCdWZmZXI6OmNyZWF0ZShwYWlu
dGluZ1JlY3Quc2l6ZSgpLCBkZXZpY2VTY2FsZUZhY3RvciwgQ29sb3JTcGFjZURldmljZVJHQikp
OwogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gMDsKICAgICBidWZmZXItPmNvbnRl
eHQoKS0+dHJhbnNsYXRlKC1wYWludGluZ1JlY3QueCgpLCAtcGFpbnRpbmdSZWN0LnkoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKaW5k
ZXggZjI0ZDY1OTA2NzY2NDFlNmNiZTk2N2RkMDNhNzlhZTY0N2YyNjczMy4uNmZiMWNmYjI3ZGYx
N2Q3NzFjOTk3NTVhODE2M2VlZGVkZDc5MmU4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcApAQCAtNTE1LDcgKzUxNSw3IEBAIHZvaWQg
Qml0bWFwSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogY3R4dCwgY29uc3QgRmxv
YXRSZWN0JiB0aWxlUmVjdCwKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAoIW1fY2Fj
aGVkSW1hZ2UpIHsKLSAgICAgICAgT3duUHRyPEltYWdlQnVmZmVyPiBidWZmZXIgPSBJbWFnZUJ1
ZmZlcjo6Y3JlYXRlKGV4cGFuZGVkSW50U2l6ZSh0aWxlUmVjdC5zaXplKCkpKTsKKyAgICAgICAg
c3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRl
KGV4cGFuZGVkSW50U2l6ZSh0aWxlUmVjdC5zaXplKCkpKTsKICAgICAgICAgQVNTRVJUKGJ1ZmZl
ci5nZXQoKSk7CiAKICAgICAgICAgSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIgPSBpbWFnZU9ic2Vy
dmVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9z
c2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAKaW5kZXggYjBkYjJkZmVkYzM4MTNjODcwMmI3
MDU1NDI5YzFlNjU1NTU2ZjJmOC4uZGIxNjU0MTczZjUzODliNzk5NzQ0NDdjY2Y5YjQ5MDVjNmE2
MTM4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3Nm
YWRlR2VuZXJhdGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmNwcApAQCAtOTgsNyArOTgsNyBAQCB2b2lkIENy
b3NzZmFkZUdlbmVyYXRlZEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29u
c3QgRmxvYXRSZWN0JiBkcwogCiB2b2lkIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpkcmF3UGF0
dGVybihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50
JiBwaGFzZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNv
bXBvc2l0ZU9wLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIEJsZW5kTW9kZSkKIHsKLSAgICBP
d25QdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXpl
KCksIDEsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGNvbnRleHQtPmlzQWNjZWxlcmF0ZWRDb250ZXh0
KCkgPyBBY2NlbGVyYXRlZCA6IFVuYWNjZWxlcmF0ZWQpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJ
bWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgMSwg
Q29sb3JTcGFjZURldmljZVJHQiwgY29udGV4dC0+aXNBY2NlbGVyYXRlZENvbnRleHQoKSA/IEFj
Y2VsZXJhdGVkIDogVW5hY2NlbGVyYXRlZCk7CiAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKICAgICAg
ICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFkaWVudEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFk
aWVudEltYWdlLmgKaW5kZXggYWFiYTI3MzI3YzYwYWM4MDFhZjc2ODcwMzdhMzU0YTA1NTlmNGU4
NS4uMTRjODJhOGNkOTc5ODU5YmM2MjNlOGJiZTZjOTYwMjYxNGE3Njk2NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuaApAQCAtNTcsNyAr
NTcsNyBAQCBwcm90ZWN0ZWQ6CiAKIHByaXZhdGU6CiAgICAgUmVmUHRyPEdyYWRpZW50PiBtX2dy
YWRpZW50OwotICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gbV9jYWNoZWRJbWFnZUJ1ZmZlcjsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IG1fY2FjaGVkSW1hZ2VCdWZmZXI7CiAgICAg
SW50U2l6ZSBtX2NhY2hlZEFkanVzdGVkU2l6ZTsKICAgICB1bnNpZ25lZCBtX2NhY2hlZEdlbmVy
YXRvckhhc2g7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5jcHAKaW5kZXggZjIxZjkxNGQxNmE2OWIxZjkzOTBmMTUzNmQ2OTJl
NGM0YTQ4YTljYi4uMGM0NWViZTA3NzIyODA3YzI3MzUyMGQ4MThlNTZhNGE4YmRhMTFlOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuY3BwCkBAIC04MDMsNyArODAzLDcgQEAgc3RhdGljIGJvb2wgc2NhbGVzTWF0Y2goQWZmaW5l
VHJhbnNmb3JtIGEsIEFmZmluZVRyYW5zZm9ybSBiKQogICAgIHJldHVybiBhLnhTY2FsZSgpID09
IGIueFNjYWxlKCkgJiYgYS55U2NhbGUoKSA9PSBiLnlTY2FsZSgpOwogfQogCi1QYXNzT3duUHRy
PEltYWdlQnVmZmVyPiBHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29u
c3QgSW50U2l6ZSYgc2l6ZSwgYm9vbCBoYXNBbHBoYSkgY29uc3QKK3N0ZDo6dW5pcXVlX3B0cjxJ
bWFnZUJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0OjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0
IEludFNpemUmIHNpemUsIGJvb2wgaGFzQWxwaGEpIGNvbnN0CiB7CiAgICAgLy8gTWFrZSB0aGUg
YnVmZmVyIGxhcmdlciBpZiB0aGUgY29udGV4dCdzIHRyYW5zZm9ybSBpcyBzY2FsaW5nIGl0IHNv
IHdlIG5lZWQgYSBoaWdoZXIKICAgICAvLyByZXNvbHV0aW9uIHRoYW4gb25lIHBpeGVsIHBlciB1
bml0LiBBbHNvIHNldCB1cCBhIGNvcnJlc3BvbmRpbmcgc2NhbGUgZmFjdG9yIG9uIHRoZQpAQCAt
ODEyLDE0ICs4MTIsMTQgQEAgUGFzc093blB0cjxJbWFnZUJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0
OjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0IEludFNpemUmIHMKICAgICBBZmZpbmVUcmFu
c2Zvcm0gdHJhbnNmb3JtID0gZ2V0Q1RNKERlZmluaXRlbHlJbmNsdWRlRGV2aWNlU2NhbGUpOwog
ICAgIEludFNpemUgc2NhbGVkU2l6ZShzdGF0aWNfY2FzdDxpbnQ+KGNlaWwoc2l6ZS53aWR0aCgp
ICogdHJhbnNmb3JtLnhTY2FsZSgpKSksIHN0YXRpY19jYXN0PGludD4oY2VpbChzaXplLmhlaWdo
dCgpICogdHJhbnNmb3JtLnlTY2FsZSgpKSkpOwogCi0gICAgT3duUHRyPEltYWdlQnVmZmVyPiBi
dWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihzY2FsZWRTaXplLCAx
LCBDb2xvclNwYWNlRGV2aWNlUkdCLCB0aGlzLCBoYXNBbHBoYSk7CisgICAgc3RkOjp1bmlxdWVf
cHRyPEltYWdlQnVmZmVyPiBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1
ZmZlcihzY2FsZWRTaXplLCAxLCBDb2xvclNwYWNlRGV2aWNlUkdCLCB0aGlzLCBoYXNBbHBoYSk7
CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgYnVmZmVy
LT5jb250ZXh0KCktPnNjYWxlKEZsb2F0U2l6ZShzdGF0aWNfY2FzdDxmbG9hdD4oc2NhbGVkU2l6
ZS53aWR0aCgpKSAvIHNpemUud2lkdGgoKSwKICAgICAgICAgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHNj
YWxlZFNpemUuaGVpZ2h0KCkpIC8gc2l6ZS5oZWlnaHQoKSkpOwogCi0gICAgcmV0dXJuIGJ1ZmZl
ci5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGJ1ZmZlcjsKIH0KIAogYm9vbCBHcmFwaGljc0NvbnRl
eHQ6OmlzQ29tcGF0aWJsZVdpdGhCdWZmZXIoSW1hZ2VCdWZmZXIqIGJ1ZmZlcikgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgK
aW5kZXggNDg1MzUxMTgzZjg1ZTRkNmUzOWRiNjc3Y2I4MzBhYzIzZWY5ZDE3Yi4uMTdjNGNlNGRk
NzMxZTMzNDM4M2ZjZjE0ZDY3YjU1M2VmMzNlMmQzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTQxNCw3ICs0MTQsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjZW5kaWYKICAgICAgICAgLy8gQ3JlYXRlIGFuIGltYWdl
IGJ1ZmZlciBjb21wYXRpYmxlIHdpdGggdGhpcyBjb250ZXh0LCB3aXRoIHN1aXRhYmxlIHJlc29s
dXRpb24KICAgICAgICAgLy8gZm9yIGRyYXdpbmcgaW50byB0aGUgYnVmZmVyIGFuZCB0aGVuIGlu
dG8gdGhpcyBjb250ZXh0LgotICAgICAgICBQYXNzT3duUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVD
b21wYXRpYmxlQnVmZmVyKGNvbnN0IEludFNpemUmLCBib29sIGhhc0FscGhhID0gdHJ1ZSkgY29u
c3Q7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlQ29tcGF0aWJs
ZUJ1ZmZlcihjb25zdCBJbnRTaXplJiwgYm9vbCBoYXNBbHBoYSA9IHRydWUpIGNvbnN0OwogICAg
ICAgICBib29sIGlzQ29tcGF0aWJsZVdpdGhCdWZmZXIoSW1hZ2VCdWZmZXIqKSBjb25zdDsKIAog
ICAgICAgICAvLyBUaGlzIGZ1bmN0aW9uIGFwcGxpZXMgdGhlIGRldmljZSBzY2FsZSBmYWN0b3Ig
dG8gdGhlIGNvbnRleHQsIG1ha2luZyB0aGUgY29udGV4dCBjYXBhYmxlIG9mCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAKaW5kZXggNmNmN2Nj
YTk0NDNlYzY0YjE0ZDEwYjIyZjVkNzlkNDk0NWIzMzUyNC4uOTFkNjBhYWVkMmYwOGFhMjgzNWEy
NTRiMzM5MWNhMzFkOTJhYmY3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlQnVmZmVyLmNwcApAQCAtMTEwLDcgKzExMCw3IEBAIGJvb2wgSW1hZ2VCdWZm
ZXI6OmNvcHlUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRCYsIFBsYXRmb3JtM0RP
YmplY3QsIEdDCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1QYXNzT3duUHRyPEltYWdlQnVmZmVy
PiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjb25zdCBJbnRTaXplJiBzaXpl
LCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3QgR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0LCBib29sKQorc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVy
PiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjb25zdCBJbnRTaXplJiBzaXpl
LCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3QgR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0LCBib29sKQogewogICAgIHJldHVybiBjcmVhdGUoc2l6ZSwg
cmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBjb250ZXh0LT5pc0FjY2VsZXJhdGVkQ29udGV4
dCgpID8gQWNjZWxlcmF0ZWQgOiBVbmFjY2VsZXJhdGVkKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCmluZGV4IDFkNGYwODVmZDFmNDcyYjRh
ODNhZWFlNjkzOGZhYzBjNmNmNDlkYjIuLmFiZjhhNmNlNDE4MmVhYzVjYWYwYWQzYmI0ZjNiYzZl
N2FiOTk2NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VC
dWZmZXIuaApAQCAtNDIsNyArNDIsNiBAQAogI2luY2x1ZGUgPHJ1bnRpbWUvVWludDhDbGFtcGVk
QXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIu
aD4KLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC03OSwxNiArNzgsMTYgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbWFnZUJ1ZmZlcik7
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKICAgICAgICAgLy8gV2lsbCBy
ZXR1cm4gYSBudWxsIHBvaW50ZXIgb24gYWxsb2NhdGlvbiBmYWlsdXJlLgotICAgICAgICBzdGF0
aWMgUGFzc093blB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlKGNvbnN0IEludFNpemUmIHNpemUsIGZs
b2F0IHJlc29sdXRpb25TY2FsZSA9IDEsIENvbG9yU3BhY2UgY29sb3JTcGFjZSA9IENvbG9yU3Bh
Y2VEZXZpY2VSR0IsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSA9IFVuYWNjZWxlcmF0ZWQp
CisgICAgICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZShjb25z
dCBJbnRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUgPSAxLCBDb2xvclNwYWNlIGNv
bG9yU3BhY2UgPSBDb2xvclNwYWNlRGV2aWNlUkdCLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01v
ZGUgPSBVbmFjY2VsZXJhdGVkKQogICAgICAgICB7CiAgICAgICAgICAgICBib29sIHN1Y2Nlc3Mg
PSBmYWxzZTsKLSAgICAgICAgICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gYnVmID0gYWRvcHRQdHIo
bmV3IEltYWdlQnVmZmVyKHNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcmVuZGVy
aW5nTW9kZSwgc3VjY2VzcykpOworICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVm
ZmVyPiBidWZmZXIobmV3IEltYWdlQnVmZmVyKHNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JT
cGFjZSwgcmVuZGVyaW5nTW9kZSwgc3VjY2VzcykpOwogICAgICAgICAgICAgaWYgKCFzdWNjZXNz
KQogICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICAgICAgcmV0dXJuIGJ1
Zi5yZWxlYXNlKCk7CisgICAgICAgICAgICByZXR1cm4gYnVmZmVyOwogICAgICAgICB9CiAKLSAg
ICAgICAgc3RhdGljIFBhc3NPd25QdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUNvbXBhdGlibGVCdWZm
ZXIoY29uc3QgSW50U2l6ZSYsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSwgY29u
c3QgR3JhcGhpY3NDb250ZXh0KiwgYm9vbCBoYXNBbHBoYSk7CisgICAgICAgIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29uc3QgSW50
U2l6ZSYsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSwgY29uc3QgR3JhcGhpY3ND
b250ZXh0KiwgYm9vbCBoYXNBbHBoYSk7CiAKICAgICAgICAgfkltYWdlQnVmZmVyKCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKaW5kZXgg
NzM4NzI3MzBlNWQxMmQyNWJkMTdhY2U2ZWE4NDk0YmFhZWE3NWE4Yy4uODlhNDQ5ZGIyMDZkY2Ni
ZGYxNzRiYTg1MTk4NWMxMWI1YmIyYjZmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKQEAgLTE0MSw3ICsxNDEsNyBAQCBwcml2YXRlOgog
ICAgICAgICBtX2xhc3RSYWRpdXMgPSBGbG9hdFNpemUoKTsKICAgICB9CiAKLSAgICBPd25QdHI8
SW1hZ2VCdWZmZXI+IG1faW1hZ2VCdWZmZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVm
ZmVyPiBtX2ltYWdlQnVmZmVyOwogICAgIFRpbWVyPFNjcmF0Y2hCdWZmZXI+IG1fcHVyZ2VUaW1l
cjsKICAgICAKICAgICBGbG9hdFJlY3QgbV9sYXN0SW5zZXRCb3VuZHM7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCmluZGV4
IGQ3YTk3ZTZmMWMxODFiNWQ1MzMyYzZiOTEwYTVkM2U5ZjhmMzk2MWYuLmEyOTQyM2I2NGEzYzI4
ZjVjYTNhYjEzYjYwZmNiOTdmYTU5M2EzMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCkBAIC0zMTUsNyArMzE1LDcg
QEAgdm9pZCBJbWFnZUJ1ZmZlcjo6cHV0Qnl0ZUFycmF5KE11bHRpcGx5IG11bHRpcGxpZWQsIFVp
bnQ4Q2xhbXBlZEFycmF5KiBzb3VyY2UsIGMKICNpZiBVU0UoSU9TVVJGQUNFX0NBTlZBU19CQUNL
SU5HX1NUT1JFKQogICAgIC8vIE1ha2UgYSBjb3B5IG9mIHRoZSBzb3VyY2UgdG8gZW5zdXJlIHRo
ZSBiaXRzIGRvbid0IGNoYW5nZSBiZWZvcmUgYmVpbmcgZHJhd24KICAgICBJbnRTaXplIHNvdXJj
ZUNvcHlTaXplKHNvdXJjZVJlY3Qud2lkdGgoKSwgc291cmNlUmVjdC5oZWlnaHQoKSk7Ci0gICAg
T3duUHRyPEltYWdlQnVmZmVyPiBzb3VyY2VDb3B5ID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzb3Vy
Y2VDb3B5U2l6ZSwgMSwgQ29sb3JTcGFjZURldmljZVJHQiwgVW5hY2NlbGVyYXRlZCk7CisgICAg
c3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBzb3VyY2VDb3B5ID0gSW1hZ2VCdWZmZXI6OmNy
ZWF0ZShzb3VyY2VDb3B5U2l6ZSwgMSwgQ29sb3JTcGFjZURldmljZVJHQiwgVW5hY2NlbGVyYXRl
ZCk7CiAgICAgaWYgKCFzb3VyY2VDb3B5KQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuaApp
bmRleCAwZGUyNjgxZjZkMzQxMzgzNWIzZjNlMTYyMDQzMGIwYTczNjFkODA4Li40NjFhOTlkNmY2
YTk1YWMyNThlYzYzZGRlYmI5MTY3MWYxODEwZTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5oCkBAIC05MSw3ICs5
MSw3IEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPENHUERGRG9jdW1lbnRSZWY+IG1fZG9jdW1l
bnQ7CiAjZW5kaWYKIAotICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gbV9jYWNoZWRJbWFnZUJ1ZmZl
cjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IG1fY2FjaGVkSW1hZ2VCdWZmZXI7
CiAgICAgQWZmaW5lVHJhbnNmb3JtIG1fY2FjaGVkVHJhbnNmb3JtOwogICAgIEZsb2F0U2l6ZSBt
X2NhY2hlZERlc3RpbmF0aW9uU2l6ZTsKICAgICBGbG9hdFJlY3QgbV9jYWNoZWRTb3VyY2VSZWN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RVRpbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRp
bGUuY3BwCmluZGV4IDNkYjdhN2MzODdkMDBlNWM0NWVmMWJiZDgyNjMyYzllZTFlYjhmNTAuLjRh
NmM2YTRmOWZlOWE4YTg1ZWVmZjA4ZWUzZWNlYTc0MDUwMWJmODkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5jcHAKQEAgLTY2LDcg
KzY2LDcgQEAgdm9pZCBGRVRpbGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgICAgIHRp
bGVSZWN0LnNjYWxlKGZpbHRlci0+ZmlsdGVyUmVzb2x1dGlvbigpLndpZHRoKCksIGZpbHRlci0+
ZmlsdGVyUmVzb2x1dGlvbigpLmhlaWdodCgpKTsKICAgICB9CiAKLSAgICBPd25QdHI8SW1hZ2VC
dWZmZXI+IHRpbGVJbWFnZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IHRpbGVJ
bWFnZTsKICAgICBpZiAoIVNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyRm9y
UGF0dGVybih0aWxlUmVjdCwgdGlsZVJlY3QsIHRpbGVJbWFnZSwgQ29sb3JTcGFjZURldmljZVJH
QiwgZmlsdGVyKCktPnJlbmRlcmluZ01vZGUoKSkpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyLmgKaW5kZXgg
MzJhMjc1ZTY0OWY4ZWQ3M2EwYzE3NThlY2FlMjI0NzVkNTdjMWNjYy4uMDc0YjMwYzJhMzNhNzVl
OTU1NDI2MWU0MjU2OTEyYmQxNjNkYTBiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5oCkBAIC0zNSw3ICszNSw3IEBAIHB1YmxpYzoK
ICAgICBGaWx0ZXIoKSA6IG1fcmVuZGVyaW5nTW9kZShVbmFjY2VsZXJhdGVkKSB7IH0KICAgICB2
aXJ0dWFsIH5GaWx0ZXIoKSB7IH0KIAotICAgIHZvaWQgc2V0U291cmNlSW1hZ2UoUGFzc093blB0
cjxJbWFnZUJ1ZmZlcj4gc291cmNlSW1hZ2UpIHsgbV9zb3VyY2VJbWFnZSA9IHNvdXJjZUltYWdl
OyB9CisgICAgdm9pZCBzZXRTb3VyY2VJbWFnZShzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+
IHNvdXJjZUltYWdlKSB7IG1fc291cmNlSW1hZ2UgPSBzdGQ6Om1vdmUoc291cmNlSW1hZ2UpOyB9
CiAgICAgSW1hZ2VCdWZmZXIqIHNvdXJjZUltYWdlKCkgeyByZXR1cm4gbV9zb3VyY2VJbWFnZS5n
ZXQoKTsgfQogCiAgICAgRmxvYXRTaXplIGZpbHRlclJlc29sdXRpb24oKSBjb25zdCB7IHJldHVy
biBtX2ZpbHRlclJlc29sdXRpb247IH0KQEAgLTU1LDcgKzU1LDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgRmxvYXRQb2ludCBtYXBBYnNvbHV0ZVBvaW50VG9Mb2NhbFBvaW50KGNvbnN0IEZsb2F0
UG9pbnQmKSBjb25zdCB7IHJldHVybiBGbG9hdFBvaW50KCk7IH0KIAogcHJpdmF0ZToKLSAgICBP
d25QdHI8SW1hZ2VCdWZmZXI+IG1fc291cmNlSW1hZ2U7CisgICAgc3RkOjp1bmlxdWVfcHRyPElt
YWdlQnVmZmVyPiBtX3NvdXJjZUltYWdlOwogICAgIEZsb2F0U2l6ZSBtX2ZpbHRlclJlc29sdXRp
b247CiAgICAgUmVuZGVyaW5nTW9kZSBtX3JlbmRlcmluZ01vZGU7CiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3Qu
Y3BwCmluZGV4IGY5OWVhMmRkZGJmYzlmNzY3ZDNmMzc4MzlhMWNjMmZhZDRmZjY2YTIuLjYzZGU0
YTRmZWViMjBhYzNjNDM0MGNjNmY0NTE3YzdiODk4ZjFmMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAK
QEAgLTIyOCw3ICsyMjgsNyBAQCB2b2lkIEZpbHRlckVmZmVjdDo6Zm9yY2VWYWxpZFByZU11bHRp
cGxpZWRQaXhlbHMoKQogdm9pZCBGaWx0ZXJFZmZlY3Q6OmNsZWFyUmVzdWx0KCkKIHsKICAgICBp
ZiAobV9pbWFnZUJ1ZmZlclJlc3VsdCkKLSAgICAgICAgbV9pbWFnZUJ1ZmZlclJlc3VsdC5jbGVh
cigpOworICAgICAgICBtX2ltYWdlQnVmZmVyUmVzdWx0LnJlc2V0KCk7CiAgICAgaWYgKG1fdW5t
dWx0aXBsaWVkSW1hZ2VSZXN1bHQpCiAgICAgICAgIG1fdW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQu
Y2xlYXIoKTsKICAgICBpZiAobV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3Qu
aAppbmRleCBiMWMxMTg2MjcwZjA5YjI1NDc2ZWYwMGRiNDgyY2MxYzMzZTRhYmJkLi40MmQ3NDUy
MDM2OWRiZmRkN2JjYmVkZDA1NTc4NzgxNzEzYWU3YzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmgKQEAgLTI5
LDcgKzI5LDYgQEAKIAogI2luY2x1ZGUgPHJ1bnRpbWUvVWludDhDbGFtcGVkQXJyYXkuaD4KIAot
I2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
ICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtMTc5
LDcgKzE3OCw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGZvcmNlVmFsaWRQcmVNdWx0aXBsaWVk
UGl4ZWxzKCk7CiAKIHByaXZhdGU6Ci0gICAgT3duUHRyPEltYWdlQnVmZmVyPiBtX2ltYWdlQnVm
ZmVyUmVzdWx0OworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gbV9pbWFnZUJ1ZmZl
clJlc3VsdDsKICAgICBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IG1fdW5tdWx0aXBsaWVkSW1h
Z2VSZXN1bHQ7CiAgICAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBtX3ByZW11bHRpcGxpZWRJ
bWFnZVJlc3VsdDsKICAgICBGaWx0ZXJFZmZlY3RWZWN0b3IgbV9pbnB1dEVmZmVjdHM7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlckltYWdlQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmgKaW5kZXggMDYwNzEzY2U1Y2MxNzFjZDhjNWU1
ZjdmY2UwZTIwMDhiZTcwYjY4ZC4uZTdjNzVkYTg2OGIyNTE1YWE0OTg3YmIxMWUxYmY3NzJhODRm
MTQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIuaApAQCAtMzIsNyArMzIs
NyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gY3JlYXRl
KCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IEJpdG1hcFRleHR1cmVJbWFnZUJ1ZmZlcik7IH0KICAg
ICB2aXJ0dWFsIEludFNpemUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2UtPmludGVybmFs
U2l6ZSgpOyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlc2V0KCk7Ci0gICAgdmlydHVhbCBib29s
IGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlOyB9CisgICAgdmlydHVhbCBib29sIGlz
VmFsaWQoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlLmdldCgpOyB9CiAgICAgaW5saW5lIEdyYXBo
aWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0KCkgeyByZXR1cm4gbV9pbWFnZSA/IG1faW1hZ2Ut
PmNvbnRleHQoKSA6IDA7IH0KICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29udGVudHMoSW1hZ2Uq
LCBjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50UG9pbnQmLCBVcGRhdGVDb250ZW50c0ZsYWcpOwog
ICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDb250ZW50cyhUZXh0dXJlTWFwcGVyKiwgR3JhcGhpY3NM
YXllciosIGNvbnN0IEludFJlY3QmIHRhcmdldCwgY29uc3QgSW50UG9pbnQmIG9mZnNldCwgVXBk
YXRlQ29udGVudHNGbGFnKTsKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgog
ICAgIEJpdG1hcFRleHR1cmVJbWFnZUJ1ZmZlcigpIHsgfQotICAgIE93blB0cjxJbWFnZUJ1ZmZl
cj4gbV9pbWFnZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IG1faW1hZ2U7CiB9
OwogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAppbmRleCA2
YWUxYzdhMDRkMTZhMGJkYjY2NTNjZjVkMjQwYzEzNWE2MDYxNGFiLi5hMDk4ZjM1YTFkYTZhMDQ2
OTgxNzZlNTk5MWU4ZTY0ZTE0YjkwOTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lu
bGluZVRleHRCb3guY3BwCkBAIC0xMDYxLDcgKzEwNjEsNyBAQCB2b2lkIElubGluZVRleHRCb3g6
OnBhaW50RGVjb3JhdGlvbihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UG9p
bnQmCiAKICAgICAgICAgICAgIEZsb2F0UmVjdCB1bmRlcmxpbmVSZWN0ID0gYm91bmRpbmdCb3hG
b3JBbGxBY3RpdmVEZWNvcmF0aW9ucygqdGhpcywgY29udGV4dCwgZGVjb3JhdGlvbiwgdGV4dERl
Y29yYXRpb25UaGlja25lc3MsIHdpZHRoLCBkb3VibGVPZmZzZXQsIGRlY29yYXRpb25TdHlsZSwg
bG9jYWxPcmlnaW4sIGxpbmVTdHlsZSwgaXNQcmludGluZywgYmFzZWxpbmUpOwogICAgICAgICAg
ICAgSW50UmVjdCBlbmNsb3NpbmdEZXZpY2VSZWN0ID0gZW5jbG9zaW5nSW50UmVjdCh1bmRlcmxp
bmVSZWN0KTsKLSAgICAgICAgICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBj
b250ZXh0LmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoZW5jbG9zaW5nRGV2aWNlUmVjdC5zaXplKCkp
OworICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlciA9
IGNvbnRleHQuY3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihlbmNsb3NpbmdEZXZpY2VSZWN0LnNpemUo
KSk7CiAKICAgICAgICAgICAgIGlmIChpbWFnZUJ1ZmZlci5nZXQoKSkgewogICAgICAgICAgICAg
ICAgIEdyYXBoaWNzQ29udGV4dCYgbWFza0NvbnRleHQgPSAqaW1hZ2VCdWZmZXItPmNvbnRleHQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9i
amVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3Qu
Y3BwCmluZGV4IGU3ODUxZDE3ZjRhYTA1YjVkZDlkYjUxOTc3MmZmYzU0NTQ2MzkxMDYuLmNlZjc0
M2ZhN2EzYzNlY2UwNWQyOWUzNzAxM2UwNWNhMmZhZTVhMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcApAQCAtNzAxLDcgKzcwMSw3
IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVyRXh0ZW5kZWQoY29u
c3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvCiAgICAgfQogICAgIAogICAgIEdyYXBoaWNzQ29u
dGV4dFN0YXRlU2F2ZXIgYmFja2dyb3VuZENsaXBTdGF0ZVNhdmVyKCpjb250ZXh0LCBmYWxzZSk7
Ci0gICAgT3duUHRyPEltYWdlQnVmZmVyPiBtYXNrSW1hZ2U7CisgICAgc3RkOjp1bmlxdWVfcHRy
PEltYWdlQnVmZmVyPiBtYXNrSW1hZ2U7CiAgICAgSW50UmVjdCBtYXNrUmVjdDsKIAogICAgIGlm
IChiZ0xheWVyLT5jbGlwKCkgPT0gUGFkZGluZ0ZpbGxCb3ggfHwgYmdMYXllci0+Y2xpcCgpID09
IENvbnRlbnRGaWxsQm94KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVN
YWMubW0KaW5kZXggNTI3ZWY4NjRjYTNmMDI0MWFjOGQ2OWEwMGRjYTE4Y2M4MjJkODI0ZS4uMzM0
ODU3YmJlYjNhNjYxODBjMmE5ZWQwYzk0ZTc1OWQ0NzNiZWEyZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQpAQCAtMTA1Miw3ICsxMDUyLDcgQEAgYm9vbCBS
ZW5kZXJUaGVtZU1hYzo6cGFpbnRQcm9ncmVzc0JhcihSZW5kZXJPYmplY3QqIHJlbmRlck9iamVj
dCwgY29uc3QgUGFpbnRJbmYKICAgICB0cmFja0luZm8ucmVzZXJ2ZWQgPSAwOwogICAgIHRyYWNr
SW5mby5maWxsZXIxID0gMDsKIAotICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIg
PSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGluZmxhdGVkUmVjdC5zaXplKCksIGRldmljZVNjYWxlRmFj
dG9yKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyID0gSW1h
Z2VCdWZmZXI6OmNyZWF0ZShpbmZsYXRlZFJlY3Quc2l6ZSgpLCBkZXZpY2VTY2FsZUZhY3Rvcik7
CiAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuIHRydWU7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAKaW5kZXggYzhmYmI4ZjY1MGJlZjg0YWUy
YWY0N2JjODBmNDljZmM2OWViNzE4Ny4uZWIyNjkwMmMxZWMwMzAyZDNkNjdmOThhYmU1NTI4MTU2
YmNiNGI5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFw
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAKQEAg
LTIyNSw3ICsyMjUsNyBAQCBQYXNzT3duUHRyPFNoYXBlPiBTaGFwZTo6Y3JlYXRlU2hhcGUoY29u
c3QgU3R5bGVJbWFnZSogc3R5bGVJbWFnZSwgZmxvYXQgdGhyZXNobwogCiAgICAgT3duUHRyPFJh
c3RlclNoYXBlSW50ZXJ2YWxzPiBpbnRlcnZhbHMgPSBhZG9wdFB0cihuZXcgUmFzdGVyU2hhcGVJ
bnRlcnZhbHMoaW1hZ2VTaXplLmhlaWdodCgpKSk7CiAKLSAgICBPd25QdHI8SW1hZ2VCdWZmZXI+
IGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShpbWFnZVNpemUpOworICAgIHN0ZDo6
dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRl
KGltYWdlU2l6ZSk7CiAgICAgaWYgKGltYWdlQnVmZmVyKSB7CiAgICAgICAgIEdyYXBoaWNzQ29u
dGV4dCogZ3JhcGhpY3NDb250ZXh0ID0gaW1hZ2VCdWZmZXItPmNvbnRleHQoKTsKICAgICAgICAg
Z3JhcGhpY3NDb250ZXh0LT5kcmF3SW1hZ2UoaW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIElu
dFBvaW50KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lt
YWdlLmNwcAppbmRleCA2Y2Y4MzBiY2VmZDgyN2RhOGNkM2I5YzNjMGM5YTJiZGQ3NjA0ZTAyLi41
N2ZjOWJlOTI2MzJlMGZmMGMyZDdkNjY5ZDNiOGEzYjIxMDczOTI4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcApAQCAtMTYyLDcgKzE2Miw3
IEBAIHZvaWQgUmVuZGVyU1ZHSW1hZ2U6OnBhaW50Rm9yZWdyb3VuZChQYWludEluZm8mIHBhaW50
SW5mbykKIAogdm9pZCBSZW5kZXJTVkdJbWFnZTo6aW52YWxpZGF0ZUJ1ZmZlcmVkRm9yZWdyb3Vu
ZCgpCiB7Ci0gICAgbV9idWZmZXJlZEZvcmVncm91bmQuY2xlYXIoKTsKKyAgICBtX2J1ZmZlcmVk
Rm9yZWdyb3VuZC5yZXNldCgpOwogfQogCiBib29sIFJlbmRlclNWR0ltYWdlOjpub2RlQXRGbG9h
dFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdWx0JiByZXN1
bHQsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50SW5QYXJlbnQsIEhpdFRlc3RBY3Rpb24gaGl0VGVz
dEFjdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2Uu
aAppbmRleCAxZDBhY2QyMDE0YTI4Zjc2NTdhMmMxNWRmMjBhY2I2YTg3MmEzZWQ5Li43ZjA0MWFk
OTMyOWRlZDI2YzYwYjkxMzJhNjE2ZThjZDExY2ZiYWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5oCkBAIC05MCw3ICs5MCw3IEBAIHByaXZhdGU6
CiAgICAgRmxvYXRSZWN0IG1fcmVwYWludEJvdW5kaW5nQm94RXhjbHVkaW5nU2hhZG93OwogICAg
IE93blB0cjxSZW5kZXJJbWFnZVJlc291cmNlPiBtX2ltYWdlUmVzb3VyY2U7CiAKLSAgICBPd25Q
dHI8SW1hZ2VCdWZmZXI+IG1fYnVmZmVyZWRGb3JlZ3JvdW5kOworICAgIHN0ZDo6dW5pcXVlX3B0
cjxJbWFnZUJ1ZmZlcj4gbV9idWZmZXJlZEZvcmVncm91bmQ7CiB9OwogCiBSRU5ERVJfT0JKRUNU
X1RZUEVfQ0FTVFMoUmVuZGVyU1ZHSW1hZ2UsIGlzU1ZHSW1hZ2UoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNw
cAppbmRleCBmOTAzMTMxN2VmODM1N2Y2NmNmODAwMTgxOTY4MDlmNTg1ZmY1OGNiLi4zNjkyYjJl
ZTVmMGQ5NzQ5ODAzMjA4NWNlYzYwOTBlZGUzNWM0NmU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwCkBA
IC0xODYsNyArMTg2LDcgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXI6OmFwcGx5Q2xp
cHBpbmdUb0NvbnRleHQoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGMKICAgICAgICAgICAgIHN1
Y2NlZWRlZCA9IGRyYXdDb250ZW50SW50b01hc2tJbWFnZShjbGlwcGVyRGF0YSwgb2JqZWN0Qm91
bmRpbmdCb3gpOwogCiAgICAgICAgIGlmICghc3VjY2VlZGVkKQotICAgICAgICAgICAgY2xpcHBl
ckRhdGEtPmNsaXBNYXNrSW1hZ2UuY2xlYXIoKTsKKyAgICAgICAgICAgIGNsaXBwZXJEYXRhLT5j
bGlwTWFza0ltYWdlLnJlc2V0KCk7CiAgICAgfQogCiAgICAgaWYgKCFjbGlwcGVyRGF0YS0+Y2xp
cE1hc2tJbWFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jlc291cmNlQ2xpcHBlci5oCmluZGV4IDZkYjg3MDIyNzgxY2UxZTE0YjAyZDNlNjE1
ZTgwZDhkYTE1YTM0N2YuLjVjOTQyNmFlNjg2Zjk4N2Y3NGUwY2Y0ZGE5YjI4ZGIzN2Y3YjM3ZTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3Vy
Y2VDbGlwcGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
ZXNvdXJjZUNsaXBwZXIuaApAQCAtMzEsMTQgKzMxLDEzIEBACiAjaW5jbHVkZSAiU1ZHVW5pdFR5
cGVzLmgiCiAKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9Pd25QdHIu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgQ2xpcHBlckRhdGEgewogICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4g
Y2xpcE1hc2tJbWFnZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGNsaXBNYXNr
SW1hZ2U7CiB9OwogCiBjbGFzcyBSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIgRklOQUwgOiBwdWJs
aWMgUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcAppbmRleCA5Zjc2
OTA4ZTExY2VmNmRjZDU3NjhmM2VmMGI2NjNhNGQyNGYxOGQyLi42MTdlMjBhMDU0MWNiZTI4NzIz
ZDgyODEwNjQ0NTA5N2I5ZGI0YmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcApAQCAtMjEzLDcgKzIxMyw3
IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmFwcGx5UmVzb3VyY2UoUmVuZGVyRWxl
bWVudCYgcmVuZGVyZXIsIGNvbnN0IFJlbmRlCiAgICAgZWZmZWN0aXZlVHJhbnNmb3JtLnNjYWxl
KHNjYWxlLndpZHRoKCksIHNjYWxlLmhlaWdodCgpKTsKICAgICBlZmZlY3RpdmVUcmFuc2Zvcm0u
bXVsdGlwbHkoZmlsdGVyRGF0YS0+c2hlYXJGcmVlQWJzb2x1dGVUcmFuc2Zvcm0pOwogCi0gICAg
T3duUHRyPEltYWdlQnVmZmVyPiBzb3VyY2VHcmFwaGljOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJ
bWFnZUJ1ZmZlcj4gc291cmNlR3JhcGhpYzsKICAgICBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01v
ZGUgPSByZW5kZXJlci5mcmFtZSgpLnNldHRpbmdzKCkuYWNjZWxlcmF0ZWRGaWx0ZXJzRW5hYmxl
ZCgpID8gQWNjZWxlcmF0ZWQgOiBVbmFjY2VsZXJhdGVkOwogICAgIGlmICghU1ZHUmVuZGVyaW5n
Q29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIoZmlsdGVyRGF0YS0+ZHJhd2luZ1JlZ2lvbiwgZWZm
ZWN0aXZlVHJhbnNmb3JtLCBzb3VyY2VHcmFwaGljLCBDb2xvclNwYWNlTGluZWFyUkdCLCByZW5k
ZXJpbmdNb2RlKSkgewogICAgICAgICBBU1NFUlQoIW1fZmlsdGVyLmNvbnRhaW5zKCZyZW5kZXJl
cikpOwpAQCAtMjI4LDcgKzIyOCw3IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmFw
cGx5UmVzb3VyY2UoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IFJlbmRlCiAgICAgR3Jh
cGhpY3NDb250ZXh0KiBzb3VyY2VHcmFwaGljQ29udGV4dCA9IHNvdXJjZUdyYXBoaWMtPmNvbnRl
eHQoKTsKICAgICBBU1NFUlQoc291cmNlR3JhcGhpY0NvbnRleHQpOwogICAKLSAgICBmaWx0ZXJE
YXRhLT5zb3VyY2VHcmFwaGljQnVmZmVyID0gc291cmNlR3JhcGhpYy5yZWxlYXNlKCk7CisgICAg
ZmlsdGVyRGF0YS0+c291cmNlR3JhcGhpY0J1ZmZlciA9IHN0ZDo6bW92ZShzb3VyY2VHcmFwaGlj
KTsKICAgICBmaWx0ZXJEYXRhLT5zYXZlZENvbnRleHQgPSBjb250ZXh0OwogCiAgICAgY29udGV4
dCA9IHNvdXJjZUdyYXBoaWNDb250ZXh0OwpAQCAtMjgyLDcgKzI4Miw3IEBAIHZvaWQgUmVuZGVy
U1ZHUmVzb3VyY2VGaWx0ZXI6OnBvc3RBcHBseVJlc291cmNlKFJlbmRlckVsZW1lbnQmIHJlbmRl
cmVyLCBHcmFwaGljCiAgICAgICAgIC8vIGluaXRpYWwgZmlsdGVyaW5nIHByb2Nlc3MuIFdlIGp1
c3QgdGFrZSB0aGUgc3RvcmVkIGZpbHRlciByZXN1bHQgb24gYQogICAgICAgICAvLyBzZWNvbmQg
ZHJhd2luZy4KICAgICAgICAgaWYgKGZpbHRlckRhdGEtPnN0YXRlICE9IEZpbHRlckRhdGE6OkJ1
aWx0KQotICAgICAgICAgICAgZmlsdGVyRGF0YS0+ZmlsdGVyLT5zZXRTb3VyY2VJbWFnZShmaWx0
ZXJEYXRhLT5zb3VyY2VHcmFwaGljQnVmZmVyLnJlbGVhc2UoKSk7CisgICAgICAgICAgICBmaWx0
ZXJEYXRhLT5maWx0ZXItPnNldFNvdXJjZUltYWdlKHN0ZDo6bW92ZShmaWx0ZXJEYXRhLT5zb3Vy
Y2VHcmFwaGljQnVmZmVyKSk7CiAKICAgICAgICAgLy8gQWx3YXlzIHRydWUgaWYgZmlsdGVyRGF0
YSBpcyBqdXN0IGJ1aWx0IChmaWx0ZXJEYXRhLT5zdGF0ZSA9PSBGaWx0ZXJEYXRhOjpCdWlsdCku
CiAgICAgICAgIGlmICghbGFzdEVmZmVjdC0+aGFzUmVzdWx0KCkpIHsKQEAgLTMwNCw3ICszMDQs
NyBAQCB2b2lkIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpwb3N0QXBwbHlSZXNvdXJjZShSZW5k
ZXJFbGVtZW50JiByZW5kZXJlciwgR3JhcGhpYwogICAgICAgICAgICAgY29udGV4dC0+Y29uY2F0
Q1RNKGZpbHRlckRhdGEtPnNoZWFyRnJlZUFic29sdXRlVHJhbnNmb3JtKTsKICAgICAgICAgfQog
ICAgIH0KLSAgICBmaWx0ZXJEYXRhLT5zb3VyY2VHcmFwaGljQnVmZmVyLmNsZWFyKCk7CisgICAg
ZmlsdGVyRGF0YS0+c291cmNlR3JhcGhpY0J1ZmZlci5yZXNldCgpOwogfQogCiBGbG9hdFJlY3Qg
UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OnJlc291cmNlQm91bmRpbmdCb3goY29uc3QgUmVuZGVy
T2JqZWN0JiBvYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmgKaW5kZXggYzY4OTljYzliMDczMDRhMjU2MGNkMTAw
ZjRkYTllYzk2NjU2YzJlNy4uZmVkNDg3OGUzMjdhMzk3NzRmZTJhN2JhMWMyZGQwNzJlYWFhYTY1
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZUZpbHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VGaWx0ZXIuaApAQCAtMzMsOCArMzMsNiBAQAogI2luY2x1ZGUgIlNWR0ZpbHRlckVs
ZW1lbnQuaCIKICNpbmNsdWRlICJTVkdVbml0VHlwZXMuaCIKIAotI2luY2x1ZGUgPHd0Zi9Pd25Q
dHIuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTMsNyArNTEsNyBAQCBwdWJsaWM6CiAKICAg
ICBSZWZQdHI8U1ZHRmlsdGVyPiBmaWx0ZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFNWR0ZpbHRl
ckJ1aWxkZXI+IGJ1aWxkZXI7Ci0gICAgT3duUHRyPEltYWdlQnVmZmVyPiBzb3VyY2VHcmFwaGlj
QnVmZmVyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gc291cmNlR3JhcGhpY0J1
ZmZlcjsKICAgICBHcmFwaGljc0NvbnRleHQqIHNhdmVkQ29udGV4dDsKICAgICBBZmZpbmVUcmFu
c2Zvcm0gc2hlYXJGcmVlQWJzb2x1dGVUcmFuc2Zvcm07CiAgICAgRmxvYXRSZWN0IGJvdW5kYXJp
ZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlR3JhZGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZUdyYWRpZW50LmNwcAppbmRleCA5MTNhYjM1MTJmOWY2Y2FiNTJjNzRjM2NjNjI2
ZmVjM2ZmNTBmMzk0Li43MTg4ZTY1NjU4NjYxNzA2NTQwNzkyZDkzY2RjZDQyMTMwNmU1ZDhmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
R3JhZGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VHcmFkaWVudC5jcHAKQEAgLTU4LDEwICs1OCw3IEBAIHZvaWQgUmVuZGVyU1ZHUmVz
b3VyY2VHcmFkaWVudDo6cmVtb3ZlQ2xpZW50RnJvbUNhY2hlKFJlbmRlck9iamVjdCogY2xpZW50
LCBib29sCiB9CiAKICNpZiBVU0UoQ0cpCi1zdGF0aWMgaW5saW5lIGJvb2wgY3JlYXRlTWFza0Fu
ZFN3YXBDb250ZXh0Rm9yVGV4dEdyYWRpZW50KEdyYXBoaWNzQ29udGV4dComIGNvbnRleHQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdyYXBoaWNzQ29udGV4dComIHNhdmVkQ29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3duUHRyPEltYWdlQnVmZmVyPiYg
aW1hZ2VCdWZmZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFJlbmRlck9iamVjdCogb2JqZWN0KQorc3RhdGljIGlubGluZSBib29s
IGNyZWF0ZU1hc2tBbmRTd2FwQ29udGV4dEZvclRleHRHcmFkaWVudChHcmFwaGljc0NvbnRleHQq
JiBjb250ZXh0LCBHcmFwaGljc0NvbnRleHQqJiBzYXZlZENvbnRleHQsIHN0ZDo6dW5pcXVlX3B0
cjxJbWFnZUJ1ZmZlcj4mIGltYWdlQnVmZmVyLCBSZW5kZXJPYmplY3QqIG9iamVjdCkKIHsKICAg
ICBSZW5kZXJPYmplY3QqIHRleHRSb290QmxvY2sgPSBSZW5kZXJTVkdUZXh0Ojpsb2NhdGVSZW5k
ZXJTVkdUZXh0QW5jZXN0b3Iob2JqZWN0KTsKICAgICBBU1NFUlQodGV4dFJvb3RCbG9jayk7CkBA
IC03MCw3ICs2Nyw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBjcmVhdGVNYXNrQW5kU3dhcENvbnRl
eHRGb3JUZXh0R3JhZGllbnQoR3JhcGhpY3NDb250ZXh0KiYgY29uCiAgICAgU1ZHUmVuZGVyaW5n
Q29udGV4dDo6Y2FsY3VsYXRlVHJhbnNmb3JtYXRpb25Ub091dGVybW9zdENvb3JkaW5hdGVTeXN0
ZW0odGV4dFJvb3RCbG9jaywgYWJzb2x1dGVUcmFuc2Zvcm0pOwogCiAgICAgRmxvYXRSZWN0IHJl
cGFpbnRSZWN0ID0gdGV4dFJvb3RCbG9jay0+cmVwYWludFJlY3RJbkxvY2FsQ29vcmRpbmF0ZXMo
KTsKLSAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IG1hc2tJbWFnZTsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8SW1hZ2VCdWZmZXI+IG1hc2tJbWFnZTsKICAgICBpZiAoIVNWR1JlbmRlcmluZ0NvbnRleHQ6
OmNyZWF0ZUltYWdlQnVmZmVyKHJlcGFpbnRSZWN0LCBhYnNvbHV0ZVRyYW5zZm9ybSwgbWFza0lt
YWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBVbmFjY2VsZXJhdGVkKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCkBAIC03OSwxNiArNzYsMTEgQEAgc3RhdGljIGlubGluZSBib29sIGNyZWF0ZU1h
c2tBbmRTd2FwQ29udGV4dEZvclRleHRHcmFkaWVudChHcmFwaGljc0NvbnRleHQqJiBjb24KICAg
ICBBU1NFUlQobWFza0ltYWdlKTsKICAgICBzYXZlZENvbnRleHQgPSBjb250ZXh0OwogICAgIGNv
bnRleHQgPSBtYXNrSW1hZ2VDb250ZXh0OwotICAgIGltYWdlQnVmZmVyID0gbWFza0ltYWdlLnJl
bGVhc2UoKTsKKyAgICBpbWFnZUJ1ZmZlciA9IHN0ZDo6bW92ZShtYXNrSW1hZ2UpOwogICAgIHJl
dHVybiB0cnVlOwogfQogCi1zdGF0aWMgaW5saW5lIEFmZmluZVRyYW5zZm9ybSBjbGlwVG9UZXh0
TWFzayhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBPd25QdHI8SW1hZ2VCdWZmZXI+JiBpbWFnZUJ1ZmZlciwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZsb2F0UmVjdCYgdGFy
Z2V0UmVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJl
bmRlck9iamVjdCogb2JqZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYm9vbCBib3VuZGluZ0JveE1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGdyYWRpZW50VHJhbnNm
b3JtKQorc3RhdGljIGlubGluZSBBZmZpbmVUcmFuc2Zvcm0gY2xpcFRvVGV4dE1hc2soR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0LCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+JiBpbWFnZUJ1
ZmZlciwgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBSZW5kZXJPYmplY3QqIG9iamVjdCwgYm9vbCBi
b3VuZGluZ0JveE1vZGUsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgZ3JhZGllbnRUcmFuc2Zvcm0p
CiB7CiAgICAgUmVuZGVyT2JqZWN0KiB0ZXh0Um9vdEJsb2NrID0gUmVuZGVyU1ZHVGV4dDo6bG9j
YXRlUmVuZGVyU1ZHVGV4dEFuY2VzdG9yKG9iamVjdCk7CiAgICAgQVNTRVJUKHRleHRSb290Qmxv
Y2spOwpAQCAtMjI1LDcgKzIxNyw3IEBAIHZvaWQgUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudDo6
cG9zdEFwcGx5UmVzb3VyY2UoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIEdyYXBoCiAgICAgICAg
ICAgICBjb250ZXh0LT5zZXRGaWxsR3JhZGllbnQoZ3JhZGllbnREYXRhLT5ncmFkaWVudCk7CiAK
ICAgICAgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KHRhcmdldFJlY3QpOwotICAgICAgICAgICAg
bV9pbWFnZUJ1ZmZlci5jbGVhcigpOworICAgICAgICAgICAgbV9pbWFnZUJ1ZmZlci5yZXNldCgp
OwogICAgICAgICB9CiAjZWxzZQogICAgICAgICBVTlVTRURfUEFSQU0ocmVuZGVyZXIpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdy
YWRpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
R3JhZGllbnQuaAppbmRleCA4NmNlNzcwMjg2MzMxM2VjMDU5NjhkYmU4MDJmMjhlZWIyNzQyMmY1
Li40YmY5ZDA5NDM4NTI2MmQ1YzE5YWNkY2Y5N2ZhMmM5ZGFjOGEwOWZhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGll
bnQuaApAQCAtNzQsNyArNzQsNyBAQCBwcml2YXRlOgogCiAjaWYgVVNFKENHKQogICAgIEdyYXBo
aWNzQ29udGV4dCogbV9zYXZlZENvbnRleHQ7Ci0gICAgT3duUHRyPEltYWdlQnVmZmVyPiBtX2lt
YWdlQnVmZmVyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gbV9pbWFnZUJ1ZmZl
cjsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmNwcAppbmRleCAxMmI3ZWQwOWFmMDI5ZWZjYmYw
MzMwOGU0YWM4OTA4MWRhOGIxZTM0Li5lZDkzMjc4NDk3NjQ1MDU4OTk1NWU2MGFlMzFkODkyNGU4
NzQyODQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlTWFza2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jlc291cmNlTWFza2VyLmNwcApAQCAtOTAsNyArOTAsNyBAQCBib29sIFJlbmRlclNW
R1Jlc291cmNlTWFza2VyOjphcHBseVJlc291cmNlKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBj
b25zdCBSZW5kZQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIGlmICghZHJh
d0NvbnRlbnRJbnRvTWFza0ltYWdlKG1hc2tlckRhdGEsIGNvbG9yU3BhY2UsICZyZW5kZXJlcikp
IHsKLSAgICAgICAgICAgIG1hc2tlckRhdGEtPm1hc2tJbWFnZS5jbGVhcigpOworICAgICAgICAg
ICAgbWFza2VyRGF0YS0+bWFza0ltYWdlLnJlc2V0KCk7CiAgICAgICAgIH0KICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VN
YXNrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VN
YXNrZXIuaAppbmRleCBiZmJjYzllOWZjNDhiNmRhNzRjOGZkNjhiYWJkNDI2MjI2OWYwNmFmLi41
MmIxNTU3N2MxNGNlNDFmNmY0NzUwMzkwYTQwYThjZmJhOTVhMjBkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5oCkBA
IC0zMCwxMiArMzAsMTEgQEAKICNpbmNsdWRlICJTVkdVbml0VHlwZXMuaCIKIAogI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL093blB0ci5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIHN0cnVjdCBNYXNrZXJEYXRhIHsKLSAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IG1h
c2tJbWFnZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IG1hc2tJbWFnZTsKIH07
CiAKIGNsYXNzIFJlbmRlclNWR1Jlc291cmNlTWFza2VyIEZJTkFMIDogcHVibGljIFJlbmRlclNW
R1Jlc291cmNlQ29udGFpbmVyIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcAppbmRleCBlMGQ0MzA2MmNkZWQ3
NDQ3YzhmNmFkOGZkYmE0NGNmNGE0MjNjYjhhLi5mMDE4ODc2ZjVmNmQwNTZhZWE1OWE0MjBiZTI0
NGFlMzIyZWViNTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwCkBAIC0xMDIsNyArMTAyLDcgQEAgUGF0
dGVybkRhdGEqIFJlbmRlclNWR1Jlc291cmNlUGF0dGVybjo6YnVpbGRQYXR0ZXJuKFJlbmRlck9i
amVjdCogb2JqZWN0LCB1bnNpZ24KICAgICAgICAgc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1fYXR0cmli
dXRlcy5wYXR0ZXJuVHJhbnNmb3JtKCkueVNjYWxlKCkpKTsKIAogICAgIC8vIEJ1aWxkIHRpbGUg
aW1hZ2UuCi0gICAgT3duUHRyPEltYWdlQnVmZmVyPiB0aWxlSW1hZ2UgPSBjcmVhdGVUaWxlSW1h
Z2UobV9hdHRyaWJ1dGVzLCB0aWxlQm91bmRhcmllcywgYWJzb2x1dGVUaWxlQm91bmRhcmllcywg
dGlsZUltYWdlVHJhbnNmb3JtLCBjbGFtcGVkQWJzb2x1dGVUaWxlQm91bmRhcmllcyk7CisgICAg
c3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiB0aWxlSW1hZ2UgPSBjcmVhdGVUaWxlSW1hZ2Uo
bV9hdHRyaWJ1dGVzLCB0aWxlQm91bmRhcmllcywgYWJzb2x1dGVUaWxlQm91bmRhcmllcywgdGls
ZUltYWdlVHJhbnNmb3JtLCBjbGFtcGVkQWJzb2x1dGVUaWxlQm91bmRhcmllcyk7CiAgICAgaWYg
KCF0aWxlSW1hZ2UpCiAgICAgICAgIHJldHVybiAwOwogCkBAIC0yNDAsMTUgKzI0MCwxMSBAQCBi
b29sIFJlbmRlclNWR1Jlc291cmNlUGF0dGVybjo6YnVpbGRUaWxlSW1hZ2VUcmFuc2Zvcm0oUmVu
ZGVyT2JqZWN0KiByZW5kZXJlciwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotUGFzc093blB0cjxJ
bWFnZUJ1ZmZlcj4gUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuOjpjcmVhdGVUaWxlSW1hZ2UoY29u
c3QgUGF0dGVybkF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGbG9hdFJl
Y3QmIHRpbGVCb3VuZGFyaWVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRmxvYXRSZWN0JiBhYnNvbHV0ZVRp
bGVCb3VuZGFyaWVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0aWxlSW1hZ2VU
cmFuc2Zvcm0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBGbG9hdFJlY3QmIGNsYW1wZWRBYnNvbHV0ZVRpbGVCb3VuZGFy
aWVzKSBjb25zdAorc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBSZW5kZXJTVkdSZXNvdXJj
ZVBhdHRlcm46OmNyZWF0ZVRpbGVJbWFnZShjb25zdCBQYXR0ZXJuQXR0cmlidXRlcyYgYXR0cmli
dXRlcywgY29uc3QgRmxvYXRSZWN0JiB0aWxlQm91bmRhcmllcywgY29uc3QgRmxvYXRSZWN0JiBh
YnNvbHV0ZVRpbGVCb3VuZGFyaWVzLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRpbGVJbWFnZVRy
YW5zZm9ybSwgRmxvYXRSZWN0JiBjbGFtcGVkQWJzb2x1dGVUaWxlQm91bmRhcmllcykgY29uc3QK
IHsKICAgICBjbGFtcGVkQWJzb2x1dGVUaWxlQm91bmRhcmllcyA9IFNWR1JlbmRlcmluZ0NvbnRl
eHQ6OmNsYW1wZWRBYnNvbHV0ZVRhcmdldFJlY3QoYWJzb2x1dGVUaWxlQm91bmRhcmllcyk7CiAK
LSAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IHRpbGVJbWFnZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
SW1hZ2VCdWZmZXI+IHRpbGVJbWFnZTsKIAogICAgIGlmICghU1ZHUmVuZGVyaW5nQ29udGV4dDo6
Y3JlYXRlSW1hZ2VCdWZmZXJGb3JQYXR0ZXJuKGFic29sdXRlVGlsZUJvdW5kYXJpZXMsIGNsYW1w
ZWRBYnNvbHV0ZVRpbGVCb3VuZGFyaWVzLCB0aWxlSW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0Is
IFVuYWNjZWxlcmF0ZWQpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTI3OSw3ICsyNzUs
NyBAQCBQYXNzT3duUHRyPEltYWdlQnVmZmVyPiBSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm46OmNy
ZWF0ZVRpbGVJbWFnZShjb25zdCBQYXR0ZXJuQQogICAgICAgICBTVkdSZW5kZXJpbmdDb250ZXh0
OjpyZW5kZXJTdWJ0cmVlVG9JbWFnZUJ1ZmZlcih0aWxlSW1hZ2UuZ2V0KCksICpjaGlsZC5yZW5k
ZXJlcigpLCBjb250ZW50VHJhbnNmb3JtYXRpb24pOwogICAgIH0KIAotICAgIHJldHVybiB0aWxl
SW1hZ2UucmVsZWFzZSgpOworICAgIHJldHVybiB0aWxlSW1hZ2U7CiB9CiAKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJu
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVy
bi5oCmluZGV4IDFmNzMyZTQ2MzU3NmQ5Yzk1YzYwYTNiNTI5YTNkOTNhZGRkZGYwOTUuLmI4OTBk
MjIzY2E4YmZiMzY0OWQxN2IzYjJhODIwNjAzYWMzZWJlNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uaApAQCAt
NjQsOSArNjQsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBidWlsZFRpbGVJbWFnZVRyYW5zZm9y
bShSZW5kZXJPYmplY3QqLCBjb25zdCBQYXR0ZXJuQXR0cmlidXRlcyYsIGNvbnN0IFNWR1BhdHRl
cm5FbGVtZW50JiwgRmxvYXRSZWN0JiBwYXR0ZXJuQm91bmRhcmllcywgQWZmaW5lVHJhbnNmb3Jt
JiB0aWxlSW1hZ2VUcmFuc2Zvcm0pIGNvbnN0OwogCi0gICAgUGFzc093blB0cjxJbWFnZUJ1ZmZl
cj4gY3JlYXRlVGlsZUltYWdlKGNvbnN0IFBhdHRlcm5BdHRyaWJ1dGVzJiwgY29uc3QgRmxvYXRS
ZWN0JiB0aWxlQm91bmRhcmllcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgRmxvYXRSZWN0JiBhYnNvbHV0ZVRpbGVCb3VuZGFyaWVzLCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIHRpbGVJbWFnZVRyYW5zZm9ybSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRmxvYXRSZWN0JiBjbGFtcGVkQWJzb2x1dGVUaWxlQm91
bmRhcmllcykgY29uc3Q7CisgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBjcmVhdGVU
aWxlSW1hZ2UoY29uc3QgUGF0dGVybkF0dHJpYnV0ZXMmLCBjb25zdCBGbG9hdFJlY3QmIHRpbGVC
b3VuZGFyaWVzLCBjb25zdCBGbG9hdFJlY3QmIGFic29sdXRlVGlsZUJvdW5kYXJpZXMsIGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYgdGlsZUltYWdlVHJhbnNmb3JtLCBGbG9hdFJlY3QmIGNsYW1wZWRB
YnNvbHV0ZVRpbGVCb3VuZGFyaWVzKSBjb25zdDsKIAogICAgIFBhdHRlcm5EYXRhKiBidWlsZFBh
dHRlcm4oUmVuZGVyT2JqZWN0KiwgdW5zaWduZWQgc2hvcnQgcmVzb3VyY2VNb2RlKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5j
cHAKaW5kZXggZTE5ZDYwZjM3NzFiOGE2ZDkyMmIxNmFhNzZkNjViNWU4YzU0YjNhMS4uNjliY2Rm
YWRmYThmMWU0MjhkMGNkMzllZGVkOGQyMjc1YTM1Y2QxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC0yMjMsNyAr
MjIzLDcgQEAgdm9pZCBTVkdSZW5kZXJpbmdDb250ZXh0OjpjYWxjdWxhdGVUcmFuc2Zvcm1hdGlv
blRvT3V0ZXJtb3N0Q29vcmRpbmF0ZVN5c3RlbShjb24KICAgICBhYnNvbHV0ZVRyYW5zZm9ybS5z
Y2FsZShkZXZpY2VTY2FsZUZhY3Rvcik7CiB9CiAKLWJvb2wgU1ZHUmVuZGVyaW5nQ29udGV4dDo6
Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mIGFic29sdXRlVHJhbnNmb3JtLCBPd25QdHI8SW1hZ2VCdWZmZXI+JiBpbWFn
ZUJ1ZmZlciwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01v
ZGUpCitib29sIFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZs
b2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBhYnNvbHV0ZVRyYW5z
Zm9ybSwgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiYgaW1hZ2VCdWZmZXIsIENvbG9yU3Bh
Y2UgY29sb3JTcGFjZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlKQogewogICAgIEludFJl
Y3QgcGFpbnRSZWN0ID0gY2FsY3VsYXRlSW1hZ2VCdWZmZXJSZWN0KHRhcmdldFJlY3QsIGFic29s
dXRlVHJhbnNmb3JtKTsKICAgICAvLyBEb24ndCBjcmVhdGUgZW1wdHkgSW1hZ2VCdWZmZXJzLgpA
QCAtMjMxLDcgKzIzMSw3IEBAIGJvb2wgU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VC
dWZmZXIoY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBBCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgIEludFNpemUgY2xhbXBlZFNpemUgPSBjbGFtcGVkQWJzb2x1dGVTaXpl
KHBhaW50UmVjdC5zaXplKCkpOwotICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2UgPSBJbWFn
ZUJ1ZmZlcjo6Y3JlYXRlKGNsYW1wZWRTaXplLCAxLCBjb2xvclNwYWNlLCByZW5kZXJpbmdNb2Rl
KTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWdlID0gSW1hZ2VCdWZmZXI6
OmNyZWF0ZShjbGFtcGVkU2l6ZSwgMSwgY29sb3JTcGFjZSwgcmVuZGVyaW5nTW9kZSk7CiAgICAg
aWYgKCFpbWFnZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0yNDMsMTEgKzI0MywxMSBA
QCBib29sIFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0
UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgQQogICAgIGltYWdlQ29udGV4dC0+dHJhbnNsYXRlKC1w
YWludFJlY3QueCgpLCAtcGFpbnRSZWN0LnkoKSk7CiAgICAgaW1hZ2VDb250ZXh0LT5jb25jYXRD
VE0oYWJzb2x1dGVUcmFuc2Zvcm0pOwogCi0gICAgaW1hZ2VCdWZmZXIgPSBpbWFnZS5yZWxlYXNl
KCk7CisgICAgaW1hZ2VCdWZmZXIgPSBzdGQ6Om1vdmUoaW1hZ2UpOwogICAgIHJldHVybiB0cnVl
OwogfQogCi1ib29sIFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyRm9yUGF0
dGVybihjb25zdCBGbG9hdFJlY3QmIGFic29sdXRlVGFyZ2V0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBjbGFtcGVkQWJzb2x1dGVUYXJnZXRSZWN0LCBPd25QdHI8SW1hZ2VCdWZmZXI+JiBpbWFnZUJ1
ZmZlciwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUp
Citib29sIFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyRm9yUGF0dGVybihj
b25zdCBGbG9hdFJlY3QmIGFic29sdXRlVGFyZ2V0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBjbGFt
cGVkQWJzb2x1dGVUYXJnZXRSZWN0LCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+JiBpbWFn
ZUJ1ZmZlciwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01v
ZGUpCiB7CiAgICAgSW50U2l6ZSBpbWFnZVNpemUocm91bmRlZEludFNpemUoY2xhbXBlZEFic29s
dXRlVGFyZ2V0UmVjdC5zaXplKCkpKTsKICAgICBJbnRTaXplIHVuY2xhbXBlZEltYWdlU2l6ZShy
b3VuZGVkSW50U2l6ZShhYnNvbHV0ZVRhcmdldFJlY3Quc2l6ZSgpKSk7CkBAIC0yNTYsNyArMjU2
LDcgQEAgYm9vbCBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlckZvclBhdHRl
cm4oY29uc3QgRmxvYXRSZWN0JiBhYnNvbHV0ZVQKICAgICBpZiAoaW1hZ2VTaXplLmlzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgT3duUHRyPEltYWdlQnVmZmVyPiBpbWFn
ZSA9IEltYWdlQnVmZmVyOjpjcmVhdGUoaW1hZ2VTaXplLCAxLCBjb2xvclNwYWNlLCByZW5kZXJp
bmdNb2RlKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWdlID0gSW1hZ2VC
dWZmZXI6OmNyZWF0ZShpbWFnZVNpemUsIDEsIGNvbG9yU3BhY2UsIHJlbmRlcmluZ01vZGUpOwog
ICAgIGlmICghaW1hZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMjY2LDcgKzI2Niw3
IEBAIGJvb2wgU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXJGb3JQYXR0ZXJu
KGNvbnN0IEZsb2F0UmVjdCYgYWJzb2x1dGVUCiAgICAgLy8gQ29tcGVuc2F0ZSByb3VuZGluZyBl
ZmZlY3RzLCBhcyB0aGUgYWJzb2x1dGUgdGFyZ2V0IHJlY3QgaXMgdXNpbmcgZmxvYXRpbmctcG9p
bnQgbnVtYmVycyBhbmQgdGhlIGltYWdlIGJ1ZmZlciBzaXplIGlzIGludGVnZXIuCiAgICAgaW1h
Z2VDb250ZXh0LT5zY2FsZShGbG9hdFNpemUodW5jbGFtcGVkSW1hZ2VTaXplLndpZHRoKCkgLyBh
YnNvbHV0ZVRhcmdldFJlY3Qud2lkdGgoKSwgdW5jbGFtcGVkSW1hZ2VTaXplLmhlaWdodCgpIC8g
YWJzb2x1dGVUYXJnZXRSZWN0LmhlaWdodCgpKSk7CiAKLSAgICBpbWFnZUJ1ZmZlciA9IGltYWdl
LnJlbGVhc2UoKTsKKyAgICBpbWFnZUJ1ZmZlciA9IHN0ZDo6bW92ZShpbWFnZSk7CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKQEAgLTI4Nyw3ICsyODcsNyBAQCB2b2lkIFNWR1JlbmRlcmluZ0NvbnRl
eHQ6OnJlbmRlclN1YnRyZWVUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyKiBpbWFnZSwgUmVuZGVy
RQogICAgIGNvbnRlbnRUcmFuc2Zvcm1hdGlvbiA9IHNhdmVkQ29udGVudFRyYW5zZm9ybWF0aW9u
OwogfQogCi12b2lkIFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNsaXBUb0ltYWdlQnVmZmVyKEdyYXBo
aWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBhYnNvbHV0ZVRyYW5z
Zm9ybSwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBPd25QdHI8SW1hZ2VCdWZmZXI+JiBp
bWFnZUJ1ZmZlciwgYm9vbCBzYWZlVG9DbGVhcikKK3ZvaWQgU1ZHUmVuZGVyaW5nQ29udGV4dDo6
Y2xpcFRvSW1hZ2VCdWZmZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mIGFic29sdXRlVHJhbnNmb3JtLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3Qs
IHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4mIGltYWdlQnVmZmVyLCBib29sIHNhZmVUb0Ns
ZWFyKQogewogICAgIEFTU0VSVChjb250ZXh0KTsKICAgICBBU1NFUlQoaW1hZ2VCdWZmZXIpOwpA
QCAtMzAzLDcgKzMwMyw3IEBAIHZvaWQgU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y2xpcFRvSW1hZ2VC
dWZmZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBBZmZpCiAgICAgLy8gV2hlbiBu
ZXN0aW5nIHJlc291cmNlcywgd2l0aCBvYmplY3RCb3VuZGluZ0JveCBhcyBjb250ZW50IHVuaXQg
dHlwZXMsIHRoZXJlJ3Mgbm8gdXNlIGluIGNhY2hpbmcgdGhlCiAgICAgLy8gcmVzdWx0aW5nIGlt
YWdlIGJ1ZmZlciBhcyB0aGUgcGFyZW50IHJlc291cmNlIGFscmVhZHkgY2FjaGVzIHRoZSByZXN1
bHQuCiAgICAgaWYgKHNhZmVUb0NsZWFyICYmICFjdXJyZW50Q29udGVudFRyYW5zZm9ybWF0aW9u
KCkuaXNJZGVudGl0eSgpKQotICAgICAgICBpbWFnZUJ1ZmZlci5jbGVhcigpOworICAgICAgICBp
bWFnZUJ1ZmZlci5yZXNldCgpOwogfQogCiBGbG9hdFJlY3QgU1ZHUmVuZGVyaW5nQ29udGV4dDo6
Y2xhbXBlZEFic29sdXRlVGFyZ2V0UmVjdChjb25zdCBGbG9hdFJlY3QmIGFic29sdXRlVGFyZ2V0
UmVjdCkKQEAgLTMyNiw3ICszMjYsNyBAQCB2b2lkIFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNsZWFy
MkRSb3RhdGlvbihBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSkKICAgICB0cmFuc2Zvcm0ucmVj
b21wb3NlKGRlY29tcG9zaXRpb24pOwogfQogCi1ib29sIFNWR1JlbmRlcmluZ0NvbnRleHQ6OmJ1
ZmZlckZvcmVncm91bmQoT3duUHRyPEltYWdlQnVmZmVyPiYgaW1hZ2VCdWZmZXIpCitib29sIFNW
R1JlbmRlcmluZ0NvbnRleHQ6OmJ1ZmZlckZvcmVncm91bmQoc3RkOjp1bmlxdWVfcHRyPEltYWdl
QnVmZmVyPiYgaW1hZ2VCdWZmZXIpCiB7CiAgICAgQVNTRVJUKG1fcGFpbnRJbmZvKTsKICAgICBB
U1NFUlQobV9yZW5kZXJlci0+aXNTVkdJbWFnZSgpKTsKQEAgLTMzOCw3ICszMzgsNyBAQCBib29s
IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmJ1ZmZlckZvcmVncm91bmQoT3duUHRyPEltYWdlQnVmZmVy
PiYgaW1hZ2VCdWZmZXIpCiAgICAgICAgIEludFNpemUgZXhwYW5kZWRCb3VuZGluZ0JveCA9IGV4
cGFuZGVkSW50U2l6ZShib3VuZGluZ0JveC5zaXplKCkpOwogICAgICAgICBJbnRTaXplIGJ1ZmZl
clNpemUoc3RhdGljX2Nhc3Q8aW50PihjZWlsKGV4cGFuZGVkQm91bmRpbmdCb3gud2lkdGgoKSAq
IHRyYW5zZm9ybS54U2NhbGUoKSkpLCBzdGF0aWNfY2FzdDxpbnQ+KGNlaWwoZXhwYW5kZWRCb3Vu
ZGluZ0JveC5oZWlnaHQoKSAqIHRyYW5zZm9ybS55U2NhbGUoKSkpKTsKICAgICAgICAgaWYgKGJ1
ZmZlclNpemUgIT0gaW1hZ2VCdWZmZXItPmludGVybmFsU2l6ZSgpKQotICAgICAgICAgICAgaW1h
Z2VCdWZmZXIuY2xlYXIoKTsKKyAgICAgICAgICAgIGltYWdlQnVmZmVyLnJlc2V0KCk7CiAgICAg
fQogCiAgICAgLy8gQ3JlYXRlIGEgbmV3IGJ1ZmZlciBhbmQgcGFpbnQgdGhlIGZvcmVncm91bmQg
aW50byBpdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVu
ZGVyaW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJp
bmdDb250ZXh0LmgKaW5kZXggMmRhNzBjZDg2YmQ3NTA5OTIxZjQyYzE4YjM3M2UyMWQ3MDc5NGZh
NS4uZjZkOGNmN2I3YzZmMWY3YjBlODBjMGRjODgyY2Q2ZjcxYjMwYmQxMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmgKQEAgLTc2
LDEyICs3NiwxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBwcmVwYXJlVG9SZW5kZXJTVkdDb250ZW50
KFJlbmRlckVsZW1lbnQmLCBQYWludEluZm8mLCBOZWVkc0dyYXBoaWNzQ29udGV4dFNhdmUgPSBE
b250U2F2ZUdyYXBoaWNzQ29udGV4dCk7CiAgICAgYm9vbCBpc1JlbmRlcmluZ1ByZXBhcmVkKCkg
Y29uc3QgeyByZXR1cm4gbV9yZW5kZXJpbmdGbGFncyAmIFJlbmRlcmluZ1ByZXBhcmVkOyB9CiAK
LSAgICBzdGF0aWMgYm9vbCBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHBhaW50
UmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBhYnNvbHV0ZVRyYW5zZm9ybSwgT3duUHRyPElt
YWdlQnVmZmVyPiYsIENvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGUpOworICAgIHN0YXRpYyBib29s
IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgcGFpbnRSZWN0LCBjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mIGFic29sdXRlVHJhbnNmb3JtLCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZm
ZXI+JiwgQ29sb3JTcGFjZSwgUmVuZGVyaW5nTW9kZSk7CiAgICAgLy8gUGF0dGVybnMgbmVlZCBh
IGRpZmZlcmVudCBmbG9hdC10by1pbnRlZ2VyIGNvb3JkaW5hdGUgbWFwcGluZy4KLSAgICBzdGF0
aWMgYm9vbCBjcmVhdGVJbWFnZUJ1ZmZlckZvclBhdHRlcm4oY29uc3QgRmxvYXRSZWN0JiBhYnNv
bHV0ZVRhcmdldFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgY2xhbXBlZEFic29sdXRlVGFyZ2V0UmVj
dCwgT3duUHRyPEltYWdlQnVmZmVyPiYsIENvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGUpOworICAg
IHN0YXRpYyBib29sIGNyZWF0ZUltYWdlQnVmZmVyRm9yUGF0dGVybihjb25zdCBGbG9hdFJlY3Qm
IGFic29sdXRlVGFyZ2V0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBjbGFtcGVkQWJzb2x1dGVUYXJn
ZXRSZWN0LCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+JiwgQ29sb3JTcGFjZSwgUmVuZGVy
aW5nTW9kZSk7CiAKICAgICBzdGF0aWMgdm9pZCByZW5kZXJTdWJ0cmVlVG9JbWFnZUJ1ZmZlcihJ
bWFnZUJ1ZmZlciosIFJlbmRlckVsZW1lbnQmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKTsKLSAg
ICBzdGF0aWMgdm9pZCBjbGlwVG9JbWFnZUJ1ZmZlcihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIGFic29sdXRlVHJhbnNmb3JtLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdl
dFJlY3QsIE93blB0cjxJbWFnZUJ1ZmZlcj4mLCBib29sIHNhZmVUb0NsZWFyKTsKKyAgICBzdGF0
aWMgdm9pZCBjbGlwVG9JbWFnZUJ1ZmZlcihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mIGFic29sdXRlVHJhbnNmb3JtLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3Qs
IHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4mLCBib29sIHNhZmVUb0NsZWFyKTsKIAogICAg
IHN0YXRpYyBmbG9hdCBjYWxjdWxhdGVTY3JlZW5Gb250U2l6ZVNjYWxpbmdGYWN0b3IoY29uc3Qg
UmVuZGVyT2JqZWN0Kik7CiAgICAgc3RhdGljIHZvaWQgY2FsY3VsYXRlVHJhbnNmb3JtYXRpb25U
b091dGVybW9zdENvb3JkaW5hdGVTeXN0ZW0oY29uc3QgUmVuZGVyT2JqZWN0KiwgQWZmaW5lVHJh
bnNmb3JtJiBhYnNvbHV0ZVRyYW5zZm9ybSk7CkBAIC05NSw3ICs5NSw3IEBAIHB1YmxpYzoKICAg
ICB9CiAKICAgICAvLyBTdXBwb3J0IGZvciB0aGUgYnVmZmVyZWQtcmVuZGVyaW5nIGhpbnQuCi0g
ICAgYm9vbCBidWZmZXJGb3JlZ3JvdW5kKE93blB0cjxJbWFnZUJ1ZmZlcj4mKTsKKyAgICBib29s
IGJ1ZmZlckZvcmVncm91bmQoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiYpOwogCiBwcml2
YXRlOgogICAgIC8vIFRvIHByb3Blcmx5IHJldmVydCBwYXJ0aWFsbHkgc3VjY2Vzc2Z1bCBpbml0
aWFsaXp0aW9ucyBpbiB0aGUgZGVzdHJ1Y3Rvciwgd2UgcmVjb3JkIGFsbCBzdWNjZXNzZnVsIHN0
ZXBzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKaW5kZXggNTA1OThi
YmNlNzdjZjA4NTVjYTU3M2ZmM2MyMWQxODRmZWJiN2Y1Ny4uNmQ3YjI1NmY2NDg3YTdhMWQ3NjIy
ZmNmNmQxZTVhYzlhZTI0MmE5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBo
aWNzL1NWR0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1h
Z2UuY3BwCkBAIC0xNzAsNyArMTcwLDcgQEAgUGFzc05hdGl2ZUltYWdlUHRyIFNWR0ltYWdlOjpu
YXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpCiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJl
dHVybiAwOwogCi0gICAgT3duUHRyPEltYWdlQnVmZmVyPiBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6
Y3JlYXRlKHNpemUoKSwgMSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBidWZm
ZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgMSk7CiAgICAgaWYgKCFidWZmZXIpIC8v
IGZhaWxlZCB0byBhbGxvY2F0ZSBpbWFnZQogICAgICAgICByZXR1cm4gMDsKIApAQCAtMTk2LDcg
KzE5Niw3IEBAIHZvaWQgU1ZHSW1hZ2U6OmRyYXdQYXR0ZXJuRm9yQ29udGFpbmVyKEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRTaXplCiAgICAgRmxvYXRSZWN0IGltYWdlQnVm
ZmVyU2l6ZSA9IHpvb21lZENvbnRhaW5lclJlY3Q7CiAgICAgaW1hZ2VCdWZmZXJTaXplLnNjYWxl
KGltYWdlQnVmZmVyU2NhbGUud2lkdGgoKSwgaW1hZ2VCdWZmZXJTY2FsZS5oZWlnaHQoKSk7CiAK
LSAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoZXhw
YW5kZWRJbnRTaXplKGltYWdlQnVmZmVyU2l6ZS5zaXplKCkpLCAxKTsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8SW1hZ2VCdWZmZXI+IGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoZXhwYW5kZWRJ
bnRTaXplKGltYWdlQnVmZmVyU2l6ZS5zaXplKCkpLCAxKTsKICAgICBpZiAoIWJ1ZmZlcikgLy8g
RmFpbGVkIHRvIGFsbG9jYXRlIGJ1ZmZlci4KICAgICAgICAgcmV0dXJuOwogICAgIGRyYXdGb3JD
b250YWluZXIoYnVmZmVyLT5jb250ZXh0KCksIGNvbnRhaW5lclNpemUsIHpvb20sIGltYWdlQnVm
ZmVyU2l6ZSwgem9vbWVkQ29udGFpbmVyUmVjdCwgQ29sb3JTcGFjZURldmljZVJHQiwgQ29tcG9z
aXRlU291cmNlT3ZlciwgQmxlbmRNb2RlTm9ybWFsKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217805</attachid>
            <date>2013-11-25 07:21:11 -0800</date>
            <delta_ts>2013-11-26 14:55:42 -0800</delta_ts>
            <desc>v3</desc>
            <filename>bug-124822-20131125072110.patch</filename>
            <type>text/plain</type>
            <size>56974</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU5NzMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDU1OWU4MWZhZWZiMjRi
MzQwZWRjMTM2OWNiMzVlZDhmZTliNzVjOC4uZTQwMTcwMWZlYTIzYmRiZjIwZTRjN2VlOTllZjY2
OGNkOTkxNTY3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMiBAQAorMjAxMy0xMS0yNCAgQnJp
YW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rvbi5lZHU+CisKKyAgICAgICAgSW1hZ2VCdWZm
ZXI6OmNyZWF0ZSBzaG91bGQgcmV0dXJuIGEgc3RkOjp1bmlxdWVfcHRyIGluc3RlYWQgb2YgT3du
UHRyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0
ODIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVw
bGFjZSBhbGwgdXNlcyBvZiBPd25QdHI8SW1hZ2VCdWZmZXI+IGFuZCBQYXNzT3duUHRyPEltYWdl
QnVmZmVyPiB3aXRoCisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4uIFJlcGxh
Y2UgY2FsbHMgdG8gT3duUHRyOjpjbGVhcigpIGFuZAorICAgICAgICBPd25QdHI6OnJlbGVhc2Uo
KSB3aXRoIHJlc2V0KCkgYW5kIHN0ZDo6bW92ZSgpLiBSZW1vdmUgdW5uZWNlc3NhcnkgaW5jbHVk
ZXMuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBUaGlzIGlzIGEgbWVjaGFuaWNhbCByZWZhY3Rv
cmluZy4KKworICAgICAgICAqIGNzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNTU0ZpbHRlckltYWdlVmFsdWU6OmltYWdlKToKKyAgICAgICAgKiBodG1sL0hU
TUxDYW52YXNFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDYW52YXNFbGVtZW50
OjpzZXRTdXJmYWNlU2l6ZSk6CisgICAgICAgICogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oOgor
ICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNyZWF0ZUNvbXBvc2l0aW5n
QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZnVs
bENhbnZhc0NvbXBvc2l0ZWREcmF3SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjpmdWxsQ2FudmFzQ29tcG9zaXRlZEZpbGwpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3VGV4dEludGVybmFsKToKKyAgICAg
ICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaDoKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpMUlVJbWFnZUJ1ZmZlckNhY2hlOjpMUlVJbWFnZUJ1ZmZl
ckNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6TFJVSW1h
Z2VCdWZmZXJDYWNoZTo6aW1hZ2VCdWZmZXIpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAqIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbEVs
ZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRh
aW5lckVsZW1lbnQ6OmNyZWF0ZVRleHRUcmFja1JlcHJlc2VudGF0aW9uSW1hZ2UpOgorICAgICAg
ICAqIHBhZ2UvRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6Om5vZGVJbWFnZSk6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6ZHJhZ0ltYWdlRm9yU2VsZWN0aW9uKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpCaXRtYXBJbWFnZTo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyb3NzZmFk
ZUdlbmVyYXRlZEltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhZGllbnRJbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZUNv
bXBhdGlibGVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU2hh
ZG93Qmx1ci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJD
Ry5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6cHV0Qnl0ZUFycmF5KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RkVUaWxlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRmlsdGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXI6OnNldFNv
dXJjZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVm
ZmVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNsZWFyUmVzdWx0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkJpdG1hcFRleHR1cmU6OnVwZGF0ZUNvbnRlbnRzKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5s
aW5lVGV4dEJveDo6cGFpbnREZWNvcmF0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
Qm94TW9kZWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmpl
Y3Q6OnBhaW50RmlsbExheWVyRXh0ZW5kZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJU
aGVtZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpwYWludFByb2dy
ZXNzQmFyKToKKyAgICAgICAgKiByZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXBlOjpjcmVhdGVTaGFwZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdJbWFnZTo6aW52
YWxpZGF0ZUJ1ZmZlcmVkRm9yZWdyb3VuZCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdJbWFnZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VD
bGlwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlQ2xpcHBlcjo6
YXBwbHlDbGlwcGluZ1RvQ29udGV4dCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZUNsaXBwZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmls
dGVyOjphcHBseVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNl
RmlsdGVyOjpwb3N0QXBwbHlSZXNvdXJjZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZUZpbHRlci5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VHcmFkaWVudC5jcHA6IFJlbW92ZSBtZXRob2QgcGFyYW1ldGVyIHdyYXBwaW5nL2lu
ZGVudGF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlTWFza0FuZFN3YXBDb250ZXh0Rm9y
VGV4dEdyYWRpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmNsaXBUb1RleHRNYXNrKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlR3JhZGllbnQ6OmFwcGx5UmVzb3VyY2UpOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OmFwcGx5UmVzb3VyY2UpOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuaDoKKyAgICAgICAg
KiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHA6IFJlbW92ZSBtZXRo
b2QgcGFyYW1ldGVyIHdyYXBwaW5nL2luZGVudGF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuOjpidWlsZFBhdHRlcm4pOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuOjpjcmVhdGVUaWxlSW1hZ2UpOgorICAgICAgICAqIHJl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmg6IFJlbW92ZSBtZXRob2QgcGFy
YW1ldGVyIHdyYXBwaW5nL2luZGVudGF0aW9uLgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZH
UmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJpbmdDb250
ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJpbmdD
b250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlckZvclBhdHRlcm4pOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHUmVuZGVyaW5nQ29udGV4dDo6Y2xpcFRvSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHUmVuZGVyaW5nQ29udGV4dDo6YnVmZmVyRm9yZWdyb3VuZCk6CisgICAgICAgICogcmVu
ZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0Lmg6CisgICAgICAgICogc3ZnL2dyYXBoaWNz
L1NWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpuYXRpdmVJbWFnZUZv
ckN1cnJlbnRGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6ZHJhd1BhdHRlcm5G
b3JDb250YWluZXIpOgorCiAyMDEzLTExLTIzICBYYWJpZXIgUm9kcmlndWV6IENhbHZhciAgPGNh
bHZhcmlzQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dTdHJlYW1lcl0gUmVtb3ZlIDAuMTAgY29k
ZXBhdGgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcAppbmRleCBm
NzQ5NWQ5NzMzOTFhYzlmNWRlZTY1ZGU2MzcyYjA4M2E0OTUzZWIxLi5mMjE3YThhNjkyM2FlYTky
ZGVmYWI0ODVkZjc2ODI2YjhiYjlhZDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRl
ckltYWdlVmFsdWUuY3BwCkBAIC0xMTMsMTMgKzExMywxMyBAQCBQYXNzUmVmUHRyPEltYWdlPiBD
U1NGaWx0ZXJJbWFnZVZhbHVlOjppbWFnZShSZW5kZXJFbGVtZW50KiByZW5kZXJlciwgY29uc3Qg
SW50UwogICAgICAgICByZXR1cm4gSW1hZ2U6Om51bGxJbWFnZSgpOwogCiAgICAgLy8gVHJhbnNm
b3JtIEltYWdlIGludG8gSW1hZ2VCdWZmZXIuCi0gICAgT3duUHRyPEltYWdlQnVmZmVyPiB0ZXh0
dXJlID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1h
Z2VCdWZmZXI+IHRleHR1cmUgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUpOwogICAgIGlmICgh
dGV4dHVyZSkKICAgICAgICAgcmV0dXJuIEltYWdlOjpudWxsSW1hZ2UoKTsKICAgICB0ZXh0dXJl
LT5jb250ZXh0KCktPmRyYXdJbWFnZShpbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgSW50UG9p
bnQoKSk7CiAKICAgICBSZWZQdHI8RmlsdGVyRWZmZWN0UmVuZGVyZXI+IGZpbHRlclJlbmRlcmVy
ID0gRmlsdGVyRWZmZWN0UmVuZGVyZXI6OmNyZWF0ZSgpOwotICAgIGZpbHRlclJlbmRlcmVyLT5z
ZXRTb3VyY2VJbWFnZSh0ZXh0dXJlLnJlbGVhc2UoKSk7CisgICAgZmlsdGVyUmVuZGVyZXItPnNl
dFNvdXJjZUltYWdlKHN0ZDo6bW92ZSh0ZXh0dXJlKSk7CiAgICAgZmlsdGVyUmVuZGVyZXItPnNl
dFNvdXJjZUltYWdlUmVjdChGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBzaXplKSk7CiAgICAgZmls
dGVyUmVuZGVyZXItPnNldEZpbHRlclJlZ2lvbihGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBzaXpl
KSk7CiAgICAgaWYgKCFmaWx0ZXJSZW5kZXJlci0+YnVpbGQocmVuZGVyZXIsIG1fZmlsdGVyT3Bl
cmF0aW9ucywgRmlsdGVyRnVuY3Rpb24pKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQ2FudmFzRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNF
bGVtZW50LmNwcAppbmRleCBlZGNlYzY0M2FkZjIwYmE0MWZmZGU5ZjcwNGRkYzg1NTU1NDMyMGM3
Li45ZjhhY2VjOTUzYzRkZjZjYjI1MmIwNzc4YzgyMDBlNzM3YWE1NDMwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcApAQCAtNDQ3LDcgKzQ0Nyw3IEBAIHZvaWQg
SFRNTENhbnZhc0VsZW1lbnQ6OnNldFN1cmZhY2VTaXplKGNvbnN0IEludFNpemUmIHNpemUpCiAg
ICAgbV9zaXplID0gc2l6ZTsKICAgICBtX2hhc0NyZWF0ZWRJbWFnZUJ1ZmZlciA9IGZhbHNlOwog
ICAgIG1fY29udGV4dFN0YXRlU2F2ZXIuY2xlYXIoKTsKLSAgICBtX2ltYWdlQnVmZmVyLmNsZWFy
KCk7CisgICAgbV9pbWFnZUJ1ZmZlci5yZXNldCgpOwogICAgIGNsZWFyQ29waWVkSW1hZ2UoKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oCmluZGV4IDY1OTNiNTFj
ZThhNDVmNDgxZDVmZmVkMTIwODkzM2Q4MGM0NmNkNjQuLmM0MjFhZWVjMDk5OTFhNjU3OWY2NWZm
ZDQ4OGJjNTQ5OWY5NTI1YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENh
bnZhc0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50
LmgKQEAgLTE3OSw3ICsxNzksNyBAQCBwcml2YXRlOgogICAgIC8vIG1fY3JlYXRlZEltYWdlQnVm
ZmVyIG1lYW5zIHdlIHRyaWVkIHRvIG1hbGxvYyB0aGUgYnVmZmVyLiAgV2UgZGlkbid0IG5lY2Vz
c2FyaWx5IGdldCBpdC4KICAgICBtdXRhYmxlIGJvb2wgbV9oYXNDcmVhdGVkSW1hZ2VCdWZmZXI7
CiAgICAgbXV0YWJsZSBib29sIG1fZGlkQ2xlYXJJbWFnZUJ1ZmZlcjsKLSAgICBtdXRhYmxlIE93
blB0cjxJbWFnZUJ1ZmZlcj4gbV9pbWFnZUJ1ZmZlcjsKKyAgICBtdXRhYmxlIHN0ZDo6dW5pcXVl
X3B0cjxJbWFnZUJ1ZmZlcj4gbV9pbWFnZUJ1ZmZlcjsKICAgICBtdXRhYmxlIE93blB0cjxHcmFw
aGljc0NvbnRleHRTdGF0ZVNhdmVyPiBtX2NvbnRleHRTdGF0ZVNhdmVyOwogICAgIAogICAgIG11
dGFibGUgUmVmUHRyPEltYWdlPiBtX3ByZXNlbnRlZEltYWdlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKaW5kZXgg
Nzg5MGViOGFiYWQ3ODM2NWMzZDczN2U3YTA1YTgyZjhhNzZkNjU1YS4uNWRlYTNjYWMzYjJlMWZh
MTU1OTY3ZjM0MDhkZDNiYWYzYmI1YTZhYiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCkBAIC0xNTQ0LDcgKzE1
NDQsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBUPiBJbnRSZWN0IENhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RDo6Y2FsY3VsYXRlQ29tcG9zaXRpbmdCdWZmZXJSZQogICAgIHJldHVybiBidWZmZXJSZWN0Owog
fQogCi1Pd25QdHI8SW1hZ2VCdWZmZXI+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Y3JlYXRl
Q29tcG9zaXRpbmdCdWZmZXIoY29uc3QgSW50UmVjdCYgYnVmZmVyUmVjdCkKK3N0ZDo6dW5pcXVl
X3B0cjxJbWFnZUJ1ZmZlcj4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpjcmVhdGVDb21wb3Np
dGluZ0J1ZmZlcihjb25zdCBJbnRSZWN0JiBidWZmZXJSZWN0KQogewogICAgIFJlbmRlcmluZ01v
ZGUgcmVuZGVyTW9kZSA9IGlzQWNjZWxlcmF0ZWQoKSA/IEFjY2VsZXJhdGVkIDogVW5hY2NlbGVy
YXRlZDsKICAgICByZXR1cm4gSW1hZ2VCdWZmZXI6OmNyZWF0ZShidWZmZXJSZWN0LnNpemUoKSwg
MSwgQ29sb3JTcGFjZURldmljZVJHQiwgcmVuZGVyTW9kZSk7CkBAIC0xNTkzLDcgKzE1OTMsNyBA
QCB0ZW1wbGF0ZTxjbGFzcyBUPiB2b2lkICBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZ1bGxD
YW52YXNDb21wb3NpdGVkRHJhd0ltYWdlKAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
T3duUHRyPEltYWdlQnVmZmVyPiBidWZmZXIgPSBjcmVhdGVDb21wb3NpdGluZ0J1ZmZlcihidWZm
ZXJSZWN0KTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGJ1ZmZlciA9IGNyZWF0
ZUNvbXBvc2l0aW5nQnVmZmVyKGJ1ZmZlclJlY3QpOwogICAgIGlmICghYnVmZmVyKQogICAgICAg
ICByZXR1cm47CiAKQEAgLTE2MjMsNyArMTYyMyw3IEBAIHRlbXBsYXRlPGNsYXNzIFQ+IHZvaWQg
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpmdWxsQ2FudmFzQ29tcG9zaXRlZEZpbGwoY29uc3QK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gYnVmZmVy
ID0gY3JlYXRlQ29tcG9zaXRpbmdCdWZmZXIoYnVmZmVyUmVjdCk7CisgICAgc3RkOjp1bmlxdWVf
cHRyPEltYWdlQnVmZmVyPiBidWZmZXIgPSBjcmVhdGVDb21wb3NpdGluZ0J1ZmZlcihidWZmZXJS
ZWN0KTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCkBAIC0yMjM0LDcgKzIy
MzQsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd1RleHRJbnRlcm5hbChj
b25zdCBTdHJpbmcmIHRleHQsIGZsb2F0IHgsIGZsbwogICAgIGlmIChkcmF3U3R5bGUuY2FudmFz
R3JhZGllbnQoKSB8fCBkcmF3U3R5bGUuY2FudmFzUGF0dGVybigpKSB7CiAgICAgICAgIEludFJl
Y3QgbWFza1JlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KHRleHRSZWN0KTsKIAotICAgICAgICBPd25Q
dHI8SW1hZ2VCdWZmZXI+IG1hc2tJbWFnZSA9IGMtPmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIobWFz
a1JlY3Quc2l6ZSgpKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBtYXNr
SW1hZ2UgPSBjLT5jcmVhdGVDb21wYXRpYmxlQnVmZmVyKG1hc2tSZWN0LnNpemUoKSk7CiAKICAg
ICAgICAgR3JhcGhpY3NDb250ZXh0KiBtYXNrSW1hZ2VDb250ZXh0ID0gbWFza0ltYWdlLT5jb250
ZXh0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJELmgKaW5kZXggZDE2N2E3ZDg3MTEzMDk3MGUyZTllZjM2MWQ1YjQwMWQ1
ZGI0ZGVjZC4uOTI0ODVhOWUwMGRiNTU4OTJhNTI5OTc4MjE4NDgwOWU4NGU5OTU5NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJELmgKQEAgLTMxMiw3ICszMTIsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgcmVjdENvbnRhaW5z
Q2FudmFzKGNvbnN0IEZsb2F0UmVjdCYpIGNvbnN0OwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgVD4g
SW50UmVjdCBjYWxjdWxhdGVDb21wb3NpdGluZ0J1ZmZlclJlY3QoY29uc3QgVCYsIEludFNpemUq
KTsKLSAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUNvbXBvc2l0aW5nQnVmZmVyKGNvbnN0
IEludFJlY3QmKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUNvbXBv
c2l0aW5nQnVmZmVyKGNvbnN0IEludFJlY3QmKTsKICAgICB2b2lkIGNvbXBvc2l0ZUJ1ZmZlcihJ
bWFnZUJ1ZmZlciosIGNvbnN0IEludFJlY3QmLCBDb21wb3NpdGVPcGVyYXRvcik7CiAKICAgICB2
b2lkIGluZmxhdGVTdHJva2VSZWN0KEZsb2F0UmVjdCYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggNzQ0
MmE1NDViY2U0NzljMTQ0MWEzOGRmNDhhYWIyNTgyZWNmOGYxNy4uZjhlYzIxOTczZDE4NjY0OTA0
NjdjZmY0OTEwMGYxNmQzZmU1YTc2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC01OTMxLDcgKzU5MzEsNyBAQCBT
dHJpbmcgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjplbnN1cmVOb3ROdWxsKGNvbnN0IFN0cmluZyYg
dGV4dCkgY29uc3QKIH0KIAogV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpMUlVJbWFnZUJ1ZmZlckNh
Y2hlOjpMUlVJbWFnZUJ1ZmZlckNhY2hlKGludCBjYXBhY2l0eSkKLSAgICA6IG1fYnVmZmVycyhz
dGQ6Om1ha2VfdW5pcXVlPE93blB0cjxJbWFnZUJ1ZmZlcj5bXT4oY2FwYWNpdHkpKQorICAgIDog
bV9idWZmZXJzKHN0ZDo6bWFrZV91bmlxdWU8c3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPltd
PihjYXBhY2l0eSkpCiAgICAgLCBtX2NhcGFjaXR5KGNhcGFjaXR5KQogewogfQpAQCAtNTk0OSwx
MSArNTk0OSwxMSBAQCBJbWFnZUJ1ZmZlciogV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpMUlVJbWFn
ZUJ1ZmZlckNhY2hlOjppbWFnZUJ1ZmZlcihjb25zdCBJbnRTaQogICAgICAgICByZXR1cm4gYnVm
OwogICAgIH0KIAotICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gdGVtcCA9IEltYWdlQnVmZmVyOjpj
cmVhdGUoc2l6ZSwgMSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiB0ZW1wID0g
SW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCAxKTsKICAgICBpZiAoIXRlbXApCiAgICAgICAgIHJl
dHVybiAwOwogICAgIGkgPSBzdGQ6Om1pbihtX2NhcGFjaXR5IC0gMSwgaSk7Ci0gICAgbV9idWZm
ZXJzW2ldID0gdGVtcC5yZWxlYXNlKCk7CisgICAgbV9idWZmZXJzW2ldID0gc3RkOjptb3ZlKHRl
bXApOwogCiAgICAgSW1hZ2VCdWZmZXIqIGJ1ZiA9IG1fYnVmZmVyc1tpXS5nZXQoKTsKICAgICBi
dWJibGVUb0Zyb250KGkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xSZW5kZXJpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TFJlbmRlcmluZ0NvbnRleHQuaAppbmRleCA0Zjg4YjQ0ZTBlNTQ0MGM5MWJiYzIxYzRkY2U5NTI0
MDE0Y2ViNDdhLi41ZGU2OGMzZTMxOTNjMzQ1N2M3MTBkNDU0MDFhMzllYzE5OTQxNzUzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQu
aApAQCAtNDcxLDcgKzQ3MSw3IEBAIHByaXZhdGU6CiAgICAgICAgIEltYWdlQnVmZmVyKiBpbWFn
ZUJ1ZmZlcihjb25zdCBJbnRTaXplJiBzaXplKTsKICAgICBwcml2YXRlOgogICAgICAgICB2b2lk
IGJ1YmJsZVRvRnJvbnQoaW50IGlkeCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxPd25QdHI8
SW1hZ2VCdWZmZXI+W10+IG1fYnVmZmVyczsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPHN0ZDo6
dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj5bXT4gbV9idWZmZXJzOwogICAgICAgICBpbnQgbV9jYXBh
Y2l0eTsKICAgICB9OwogICAgIExSVUltYWdlQnVmZmVyQ2FjaGUgbV9nZW5lcmF0ZWRJbWFnZUNh
Y2hlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9s
RWxlbWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxl
bWVudHMuY3BwCmluZGV4IGNhYmM1ZGRjYTRhZjYzNGNiM2U4ZjIxYWNkZTk0Y2Y5OTUzZDFiNjQu
Ljk2ZGRlYjVlYzhjN2IzZWExYzQ5MzYyNDYzMzk4YWUwMjViZWNjOTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKQEAgLTE0
MTUsNyArMTQxNSw3IEBAIFBhc3NSZWZQdHI8SW1hZ2U+IE1lZGlhQ29udHJvbFRleHRUcmFja0Nv
bnRhaW5lckVsZW1lbnQ6OmNyZWF0ZVRleHRUcmFja1JlcHJlc2VuCiAKICAgICBJbnRSZWN0IHBh
aW50aW5nUmVjdCA9IEludFJlY3QoSW50UG9pbnQoKSwgbGF5ZXItPnNpemUoKSk7CiAKLSAgICBP
d25QdHI8SW1hZ2VCdWZmZXI+IGJ1ZmZlcihJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHBhaW50aW5nUmVj
dC5zaXplKCksIGRldmljZVNjYWxlRmFjdG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKSk7CisgICAg
c3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBidWZmZXIoSW1hZ2VCdWZmZXI6OmNyZWF0ZShw
YWludGluZ1JlY3Quc2l6ZSgpLCBkZXZpY2VTY2FsZUZhY3RvciwgQ29sb3JTcGFjZURldmljZVJH
QikpOwogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lLmNwcAppbmRleCBkMjNiYTVmNDJhZTQwMDAwNGUwYjFmYjY0YzkyMzBjNzcyOWI4NjIy
Li41ZjNmNzhhZGE4NTg5OTc0MDAzNmI5MzJhMTU1MDkzM2ZkODU3NTQyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lLmNwcApAQCAtMTAyMiw3ICsxMDIyLDcgQEAgRHJhZ0ltYWdlUmVmIEZyYW1lOjpub2RlSW1h
Z2UoTm9kZSogbm9kZSkKICAgICBwYWludGluZ1JlY3Quc2V0V2lkdGgocGFpbnRpbmdSZWN0Lndp
ZHRoKCkgKiBkZXZpY2VTY2FsZUZhY3Rvcik7CiAgICAgcGFpbnRpbmdSZWN0LnNldEhlaWdodChw
YWludGluZ1JlY3QuaGVpZ2h0KCkgKiBkZXZpY2VTY2FsZUZhY3Rvcik7CiAKLSAgICBPd25QdHI8
SW1hZ2VCdWZmZXI+IGJ1ZmZlcihJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHBhaW50aW5nUmVjdC5zaXpl
KCksIGRldmljZVNjYWxlRmFjdG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKSk7CisgICAgc3RkOjp1
bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBidWZmZXIoSW1hZ2VCdWZmZXI6OmNyZWF0ZShwYWludGlu
Z1JlY3Quc2l6ZSgpLCBkZXZpY2VTY2FsZUZhY3RvciwgQ29sb3JTcGFjZURldmljZVJHQikpOwog
ICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBidWZmZXItPmNv
bnRleHQoKS0+dHJhbnNsYXRlKC1wYWludGluZ1JlY3QueCgpLCAtcGFpbnRpbmdSZWN0LnkoKSk7
CkBAIC0xMDU2LDcgKzEwNTYsNyBAQCBEcmFnSW1hZ2VSZWYgRnJhbWU6OmRyYWdJbWFnZUZvclNl
bGVjdGlvbigpCiAgICAgcGFpbnRpbmdSZWN0LnNldFdpZHRoKHBhaW50aW5nUmVjdC53aWR0aCgp
ICogZGV2aWNlU2NhbGVGYWN0b3IpOwogICAgIHBhaW50aW5nUmVjdC5zZXRIZWlnaHQocGFpbnRp
bmdSZWN0LmhlaWdodCgpICogZGV2aWNlU2NhbGVGYWN0b3IpOwogCi0gICAgT3duUHRyPEltYWdl
QnVmZmVyPiBidWZmZXIoSW1hZ2VCdWZmZXI6OmNyZWF0ZShwYWludGluZ1JlY3Quc2l6ZSgpLCBk
ZXZpY2VTY2FsZUZhY3RvciwgQ29sb3JTcGFjZURldmljZVJHQikpOworICAgIHN0ZDo6dW5pcXVl
X3B0cjxJbWFnZUJ1ZmZlcj4gYnVmZmVyKEltYWdlQnVmZmVyOjpjcmVhdGUocGFpbnRpbmdSZWN0
LnNpemUoKSwgZGV2aWNlU2NhbGVGYWN0b3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpKTsKICAgICBp
ZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIDA7CiAgICAgYnVmZmVyLT5jb250ZXh0KCktPnRy
YW5zbGF0ZSgtcGFpbnRpbmdSZWN0LngoKSwgLXBhaW50aW5nUmVjdC55KCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCmluZGV4IGYyNGQ2
NTkwNjc2NjQxZTZjYmU5NjdkZDAzYTc5YWU2NDdmMjY3MzMuLjZmYjFjZmIyN2RmMTdkNzcxYzk5
NzU1YTgxNjNlZWRlZGQ3OTJlODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKQEAgLTUxNSw3ICs1MTUsNyBAQCB2b2lkIEJpdG1hcElt
YWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQqIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYg
dGlsZVJlY3QsCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKCFtX2NhY2hlZEltYWdl
KSB7Ci0gICAgICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNy
ZWF0ZShleHBhbmRlZEludFNpemUodGlsZVJlY3Quc2l6ZSgpKSk7CisgICAgICAgIHN0ZDo6dW5p
cXVlX3B0cjxJbWFnZUJ1ZmZlcj4gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShleHBhbmRl
ZEludFNpemUodGlsZVJlY3Quc2l6ZSgpKSk7CiAgICAgICAgIEFTU0VSVChidWZmZXIuZ2V0KCkp
OwogCiAgICAgICAgIEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyID0gaW1hZ2VPYnNlcnZlcigpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2Vu
ZXJhdGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3Nm
YWRlR2VuZXJhdGVkSW1hZ2UuY3BwCmluZGV4IGIwZGIyZGZlZGMzODEzYzg3MDJiNzA1NTQyOWMx
ZTY1NTU1NmYyZjguLmRiMTY1NDE3M2Y1Mzg5Yjc5OTc0NDQ3Y2NmOWI0OTA1YzZhNjEzOGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVy
YXRlZEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9z
c2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAKQEAgLTk4LDcgKzk4LDcgQEAgdm9pZCBDcm9zc2ZhZGVH
ZW5lcmF0ZWRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgZHMKIAogdm9pZCBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTo6ZHJhd1BhdHRlcm4oR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2Us
IENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVP
cCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBCbGVuZE1vZGUpCiB7Ci0gICAgT3duUHRyPElt
YWdlQnVmZmVyPiBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSgpLCAxLCBD
b2xvclNwYWNlRGV2aWNlUkdCLCBjb250ZXh0LT5pc0FjY2VsZXJhdGVkQ29udGV4dCgpID8gQWNj
ZWxlcmF0ZWQgOiBVbmFjY2VsZXJhdGVkKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZm
ZXI+IGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplKCksIDEsIENvbG9yU3Bh
Y2VEZXZpY2VSR0IsIGNvbnRleHQtPmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkgPyBBY2NlbGVyYXRl
ZCA6IFVuYWNjZWxlcmF0ZWQpOwogICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVy
bjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGll
bnRJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFn
ZS5oCmluZGV4IGFhYmEyNzMyN2M2MGFjODAxYWY3Njg3MDM3YTM1NGEwNTU5ZjRlODUuLjE0Yzgy
YThjZDk3OTg1OWJjNjIzZThiYmU2Yzk2MDI2MTRhNzY5NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmgKQEAgLTU3LDcgKzU3LDcgQEAg
cHJvdGVjdGVkOgogCiBwcml2YXRlOgogICAgIFJlZlB0cjxHcmFkaWVudD4gbV9ncmFkaWVudDsK
LSAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IG1fY2FjaGVkSW1hZ2VCdWZmZXI7CisgICAgc3RkOjp1
bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBtX2NhY2hlZEltYWdlQnVmZmVyOwogICAgIEludFNpemUg
bV9jYWNoZWRBZGp1c3RlZFNpemU7CiAgICAgdW5zaWduZWQgbV9jYWNoZWRHZW5lcmF0b3JIYXNo
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQuY3BwCmluZGV4IGYyMWY5MTRkMTZhNjliMWY5MzkwZjE1MzZkNjkyZTRjNGE0OGE5
Y2IuLjBjNDVlYmUwNzcyMjgwN2MyNzM1MjBkODE4ZTU2YTRhOGJkYTExZTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcApA
QCAtODAzLDcgKzgwMyw3IEBAIHN0YXRpYyBib29sIHNjYWxlc01hdGNoKEFmZmluZVRyYW5zZm9y
bSBhLCBBZmZpbmVUcmFuc2Zvcm0gYikKICAgICByZXR1cm4gYS54U2NhbGUoKSA9PSBiLnhTY2Fs
ZSgpICYmIGEueVNjYWxlKCkgPT0gYi55U2NhbGUoKTsKIH0KIAotUGFzc093blB0cjxJbWFnZUJ1
ZmZlcj4gR3JhcGhpY3NDb250ZXh0OjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0IEludFNp
emUmIHNpemUsIGJvb2wgaGFzQWxwaGEpIGNvbnN0CitzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZm
ZXI+IEdyYXBoaWNzQ29udGV4dDo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjb25zdCBJbnRTaXpl
JiBzaXplLCBib29sIGhhc0FscGhhKSBjb25zdAogewogICAgIC8vIE1ha2UgdGhlIGJ1ZmZlciBs
YXJnZXIgaWYgdGhlIGNvbnRleHQncyB0cmFuc2Zvcm0gaXMgc2NhbGluZyBpdCBzbyB3ZSBuZWVk
IGEgaGlnaGVyCiAgICAgLy8gcmVzb2x1dGlvbiB0aGFuIG9uZSBwaXhlbCBwZXIgdW5pdC4gQWxz
byBzZXQgdXAgYSBjb3JyZXNwb25kaW5nIHNjYWxlIGZhY3RvciBvbiB0aGUKQEAgLTgxMiwxNCAr
ODEyLDE0IEBAIFBhc3NPd25QdHI8SW1hZ2VCdWZmZXI+IEdyYXBoaWNzQ29udGV4dDo6Y3JlYXRl
Q29tcGF0aWJsZUJ1ZmZlcihjb25zdCBJbnRTaXplJiBzCiAgICAgQWZmaW5lVHJhbnNmb3JtIHRy
YW5zZm9ybSA9IGdldENUTShEZWZpbml0ZWx5SW5jbHVkZURldmljZVNjYWxlKTsKICAgICBJbnRT
aXplIHNjYWxlZFNpemUoc3RhdGljX2Nhc3Q8aW50PihjZWlsKHNpemUud2lkdGgoKSAqIHRyYW5z
Zm9ybS54U2NhbGUoKSkpLCBzdGF0aWNfY2FzdDxpbnQ+KGNlaWwoc2l6ZS5oZWlnaHQoKSAqIHRy
YW5zZm9ybS55U2NhbGUoKSkpKTsKIAotICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gYnVmZmVyID0g
SW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoc2NhbGVkU2l6ZSwgMSwgQ29sb3JT
cGFjZURldmljZVJHQiwgdGhpcywgaGFzQWxwaGEpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFn
ZUJ1ZmZlcj4gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoc2Nh
bGVkU2l6ZSwgMSwgQ29sb3JTcGFjZURldmljZVJHQiwgdGhpcywgaGFzQWxwaGEpOwogICAgIGlm
ICghYnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGJ1ZmZlci0+Y29udGV4
dCgpLT5zY2FsZShGbG9hdFNpemUoc3RhdGljX2Nhc3Q8ZmxvYXQ+KHNjYWxlZFNpemUud2lkdGgo
KSkgLyBzaXplLndpZHRoKCksCiAgICAgICAgIHN0YXRpY19jYXN0PGZsb2F0PihzY2FsZWRTaXpl
LmhlaWdodCgpKSAvIHNpemUuaGVpZ2h0KCkpKTsKIAotICAgIHJldHVybiBidWZmZXIucmVsZWFz
ZSgpOworICAgIHJldHVybiBidWZmZXI7CiB9CiAKIGJvb2wgR3JhcGhpY3NDb250ZXh0Ojppc0Nv
bXBhdGlibGVXaXRoQnVmZmVyKEltYWdlQnVmZmVyKiBidWZmZXIpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCmluZGV4IDQ4
NTM1MTE4M2Y4NWU0ZDZlMzlkYjY3N2NiODMwYWMyM2VmOWQxN2IuLjE3YzRjZTRkZDczMWUzMzQz
ODNmY2YxNGQ2N2I1NTNlZjMzZTJkM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCkBAIC00MTQsNyArNDE0LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogI2VuZGlmCiAgICAgICAgIC8vIENyZWF0ZSBhbiBpbWFnZSBidWZmZXIg
Y29tcGF0aWJsZSB3aXRoIHRoaXMgY29udGV4dCwgd2l0aCBzdWl0YWJsZSByZXNvbHV0aW9uCiAg
ICAgICAgIC8vIGZvciBkcmF3aW5nIGludG8gdGhlIGJ1ZmZlciBhbmQgdGhlbiBpbnRvIHRoaXMg
Y29udGV4dC4KLSAgICAgICAgUGFzc093blB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlQ29tcGF0aWJs
ZUJ1ZmZlcihjb25zdCBJbnRTaXplJiwgYm9vbCBoYXNBbHBoYSA9IHRydWUpIGNvbnN0OworICAg
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUNvbXBhdGlibGVCdWZmZXIo
Y29uc3QgSW50U2l6ZSYsIGJvb2wgaGFzQWxwaGEgPSB0cnVlKSBjb25zdDsKICAgICAgICAgYm9v
bCBpc0NvbXBhdGlibGVXaXRoQnVmZmVyKEltYWdlQnVmZmVyKikgY29uc3Q7CiAKICAgICAgICAg
Ly8gVGhpcyBmdW5jdGlvbiBhcHBsaWVzIHRoZSBkZXZpY2Ugc2NhbGUgZmFjdG9yIHRvIHRoZSBj
b250ZXh0LCBtYWtpbmcgdGhlIGNvbnRleHQgY2FwYWJsZSBvZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwCmluZGV4IDZjZjdjY2E5NDQzZWM2
NGIxNGQxMGIyMmY1ZDc5ZDQ5NDViMzM1MjQuLjkxZDYwYWFlZDJmMDhhYTI4MzVhMjU0YjMzOTFj
YTMxZDkyYWJmN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZUJ1ZmZlci5jcHAKQEAgLTExMCw3ICsxMTAsNyBAQCBib29sIEltYWdlQnVmZmVyOjpjb3B5
VG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0QmLCBQbGF0Zm9ybTNET2JqZWN0LCBH
QwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotUGFzc093blB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VC
dWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29uc3QgSW50U2l6ZSYgc2l6ZSwgZmxvYXQg
cmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgYm9vbCkKK3N0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VC
dWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29uc3QgSW50U2l6ZSYgc2l6ZSwgZmxvYXQg
cmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgYm9vbCkKIHsKICAgICByZXR1cm4gY3JlYXRlKHNpemUsIHJlc29sdXRp
b25TY2FsZSwgY29sb3JTcGFjZSwgY29udGV4dC0+aXNBY2NlbGVyYXRlZENvbnRleHQoKSA/IEFj
Y2VsZXJhdGVkIDogVW5hY2NlbGVyYXRlZCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAppbmRleCAxZDRmMDg1ZmQxZjQ3MmI0YTgzYWVhZTY5
MzhmYWMwYzZjZjQ5ZGIyLi5hYmY4YTZjZTQxODJlYWM1Y2FmMGFkM2JiNGYzYmM2ZTdhYjk5Njcw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgK
QEAgLTQyLDcgKzQyLDYgQEAKICNpbmNsdWRlIDxydW50aW1lL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+
CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+Ci0jaW5j
bHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIApAQCAtNzksMTYgKzc4LDE2IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW1hZ2VCdWZmZXIpOyBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6CiAgICAgICAgIC8vIFdpbGwgcmV0dXJuIGEg
bnVsbCBwb2ludGVyIG9uIGFsbG9jYXRpb24gZmFpbHVyZS4KLSAgICAgICAgc3RhdGljIFBhc3NP
d25QdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZShjb25zdCBJbnRTaXplJiBzaXplLCBmbG9hdCByZXNv
bHV0aW9uU2NhbGUgPSAxLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UgPSBDb2xvclNwYWNlRGV2aWNl
UkdCLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUgPSBVbmFjY2VsZXJhdGVkKQorICAgICAg
ICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBjcmVhdGUoY29uc3QgSW50U2l6
ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlID0gMSwgQ29sb3JTcGFjZSBjb2xvclNwYWNl
ID0gQ29sb3JTcGFjZURldmljZVJHQiwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlID0gVW5h
Y2NlbGVyYXRlZCkKICAgICAgICAgewogICAgICAgICAgICAgYm9vbCBzdWNjZXNzID0gZmFsc2U7
Ci0gICAgICAgICAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IGJ1ZiA9IGFkb3B0UHRyKG5ldyBJbWFn
ZUJ1ZmZlcihzaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHJlbmRlcmluZ01vZGUs
IHN1Y2Nlc3MpKTsKKyAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gYnVm
ZmVyKG5ldyBJbWFnZUJ1ZmZlcihzaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHJl
bmRlcmluZ01vZGUsIHN1Y2Nlc3MpKTsKICAgICAgICAgICAgIGlmICghc3VjY2VzcykKICAgICAg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgICAgIHJldHVybiBidWYucmVsZWFz
ZSgpOworICAgICAgICAgICAgcmV0dXJuIGJ1ZmZlcjsKICAgICAgICAgfQogCi0gICAgICAgIHN0
YXRpYyBQYXNzT3duUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0
IEludFNpemUmLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UsIGNvbnN0IEdyYXBo
aWNzQ29udGV4dCosIGJvb2wgaGFzQWxwaGEpOworICAgICAgICBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPEltYWdlQnVmZmVyPiBjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0IEludFNpemUmLCBm
bG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCos
IGJvb2wgaGFzQWxwaGEpOwogCiAgICAgICAgIH5JbWFnZUJ1ZmZlcigpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCmluZGV4IDczODcyNzMw
ZTVkMTJkMjViZDE3YWNlNmVhODQ5NGJhYWVhNzVhOGMuLjg5YTQ0OWRiMjA2ZGNjYmRmMTc0YmE4
NTE5ODVjMTFiNWJiMmI2ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1NoYWRvd0JsdXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1NoYWRvd0JsdXIuY3BwCkBAIC0xNDEsNyArMTQxLDcgQEAgcHJpdmF0ZToKICAgICAgICAg
bV9sYXN0UmFkaXVzID0gRmxvYXRTaXplKCk7CiAgICAgfQogCi0gICAgT3duUHRyPEltYWdlQnVm
ZmVyPiBtX2ltYWdlQnVmZmVyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gbV9p
bWFnZUJ1ZmZlcjsKICAgICBUaW1lcjxTY3JhdGNoQnVmZmVyPiBtX3B1cmdlVGltZXI7CiAgICAg
CiAgICAgRmxvYXRSZWN0IG1fbGFzdEluc2V0Qm91bmRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAppbmRleCBkN2E5N2U2
ZjFjMTgxYjVkNTMzMmM2YjkxMGE1ZDNlOWY4ZjM5NjFmLi5hMjk0MjNiNjRhM2MyOGY1Y2EzYWIx
M2I2MGZjYjk3ZmE1OTNhMzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcApAQCAtMzE1LDcgKzMxNSw3IEBAIHZvaWQg
SW1hZ2VCdWZmZXI6OnB1dEJ5dGVBcnJheShNdWx0aXBseSBtdWx0aXBsaWVkLCBVaW50OENsYW1w
ZWRBcnJheSogc291cmNlLCBjCiAjaWYgVVNFKElPU1VSRkFDRV9DQU5WQVNfQkFDS0lOR19TVE9S
RSkKICAgICAvLyBNYWtlIGEgY29weSBvZiB0aGUgc291cmNlIHRvIGVuc3VyZSB0aGUgYml0cyBk
b24ndCBjaGFuZ2UgYmVmb3JlIGJlaW5nIGRyYXduCiAgICAgSW50U2l6ZSBzb3VyY2VDb3B5U2l6
ZShzb3VyY2VSZWN0LndpZHRoKCksIHNvdXJjZVJlY3QuaGVpZ2h0KCkpOwotICAgIE93blB0cjxJ
bWFnZUJ1ZmZlcj4gc291cmNlQ29weSA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc291cmNlQ29weVNp
emUsIDEsIENvbG9yU3BhY2VEZXZpY2VSR0IsIFVuYWNjZWxlcmF0ZWQpOworICAgIHN0ZDo6dW5p
cXVlX3B0cjxJbWFnZUJ1ZmZlcj4gc291cmNlQ29weSA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc291
cmNlQ29weVNpemUsIDEsIENvbG9yU3BhY2VEZXZpY2VSR0IsIFVuYWNjZWxlcmF0ZWQpOwogICAg
IGlmICghc291cmNlQ29weSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmgKaW5kZXggMGRl
MjY4MWY2ZDM0MTM4MzViM2YzZTE2MjA0MzBiMGE3MzYxZDgwOC4uNDYxYTk5ZDZmNmE5NWFjMjU4
ZWM2M2RkZWJiOTE2NzFmMTgxMGU4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuaApAQCAtOTEsNyArOTEsNyBAQCBw
cml2YXRlOgogICAgIFJldGFpblB0cjxDR1BERkRvY3VtZW50UmVmPiBtX2RvY3VtZW50OwogI2Vu
ZGlmCiAKLSAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IG1fY2FjaGVkSW1hZ2VCdWZmZXI7CisgICAg
c3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBtX2NhY2hlZEltYWdlQnVmZmVyOwogICAgIEFm
ZmluZVRyYW5zZm9ybSBtX2NhY2hlZFRyYW5zZm9ybTsKICAgICBGbG9hdFNpemUgbV9jYWNoZWRE
ZXN0aW5hdGlvblNpemU7CiAgICAgRmxvYXRSZWN0IG1fY2FjaGVkU291cmNlUmVjdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNwcApp
bmRleCAzZGI3YTdjMzg3ZDAwZTVjNDVlZjFiYmQ4MjYzMmM5ZWUxZWI4ZjUwLi40YTZjNmE0Zjlm
ZTlhOGE4NWVlZmYwOGVlM2VjZWE3NDA1MDFiZjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwCkBAIC02Niw3ICs2Niw3IEBA
IHZvaWQgRkVUaWxlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgICAgICB0aWxlUmVjdC5z
Y2FsZShmaWx0ZXItPmZpbHRlclJlc29sdXRpb24oKS53aWR0aCgpLCBmaWx0ZXItPmZpbHRlclJl
c29sdXRpb24oKS5oZWlnaHQoKSk7CiAgICAgfQogCi0gICAgT3duUHRyPEltYWdlQnVmZmVyPiB0
aWxlSW1hZ2U7CisgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiB0aWxlSW1hZ2U7CiAg
ICAgaWYgKCFTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlckZvclBhdHRlcm4o
dGlsZVJlY3QsIHRpbGVSZWN0LCB0aWxlSW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGZpbHRl
cigpLT5yZW5kZXJpbmdNb2RlKCkpKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5oCmluZGV4IDMyYTI3NWU2
NDlmOGVkNzNhMGMxNzU4ZWNhZTIyNDc1ZDU3YzFjY2MuLjA3NGIzMGMyYTMzYTc1ZTk1NTQyNjFl
NDI1NjkxMmJkMTYzZGEwYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRmlsdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GaWx0ZXIuaApAQCAtMzUsNyArMzUsNyBAQCBwdWJsaWM6CiAgICAgRmls
dGVyKCkgOiBtX3JlbmRlcmluZ01vZGUoVW5hY2NlbGVyYXRlZCkgeyB9CiAgICAgdmlydHVhbCB+
RmlsdGVyKCkgeyB9CiAKLSAgICB2b2lkIHNldFNvdXJjZUltYWdlKFBhc3NPd25QdHI8SW1hZ2VC
dWZmZXI+IHNvdXJjZUltYWdlKSB7IG1fc291cmNlSW1hZ2UgPSBzb3VyY2VJbWFnZTsgfQorICAg
IHZvaWQgc2V0U291cmNlSW1hZ2Uoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBzb3VyY2VJ
bWFnZSkgeyBtX3NvdXJjZUltYWdlID0gc3RkOjptb3ZlKHNvdXJjZUltYWdlKTsgfQogICAgIElt
YWdlQnVmZmVyKiBzb3VyY2VJbWFnZSgpIHsgcmV0dXJuIG1fc291cmNlSW1hZ2UuZ2V0KCk7IH0K
IAogICAgIEZsb2F0U2l6ZSBmaWx0ZXJSZXNvbHV0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9maWx0
ZXJSZXNvbHV0aW9uOyB9CkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEZs
b2F0UG9pbnQgbWFwQWJzb2x1dGVQb2ludFRvTG9jYWxQb2ludChjb25zdCBGbG9hdFBvaW50Jikg
Y29uc3QgeyByZXR1cm4gRmxvYXRQb2ludCgpOyB9CiAKIHByaXZhdGU6Ci0gICAgT3duUHRyPElt
YWdlQnVmZmVyPiBtX3NvdXJjZUltYWdlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZl
cj4gbV9zb3VyY2VJbWFnZTsKICAgICBGbG9hdFNpemUgbV9maWx0ZXJSZXNvbHV0aW9uOwogICAg
IFJlbmRlcmluZ01vZGUgbV9yZW5kZXJpbmdNb2RlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcAppbmRl
eCBmOTllYTJkZGRiZmM5Zjc2N2QzZjM3ODM5YTFjYzJmYWQ0ZmY2NmEyLi42M2RlNGE0ZmVlYjIw
YWMzYzQzNDBjYzZmNDUxN2M3Yjg5OGYxZjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCkBAIC0yMjgs
NyArMjI4LDcgQEAgdm9pZCBGaWx0ZXJFZmZlY3Q6OmZvcmNlVmFsaWRQcmVNdWx0aXBsaWVkUGl4
ZWxzKCkKIHZvaWQgRmlsdGVyRWZmZWN0OjpjbGVhclJlc3VsdCgpCiB7CiAgICAgaWYgKG1faW1h
Z2VCdWZmZXJSZXN1bHQpCi0gICAgICAgIG1faW1hZ2VCdWZmZXJSZXN1bHQuY2xlYXIoKTsKKyAg
ICAgICAgbV9pbWFnZUJ1ZmZlclJlc3VsdC5yZXNldCgpOwogICAgIGlmIChtX3VubXVsdGlwbGll
ZEltYWdlUmVzdWx0KQogICAgICAgICBtX3VubXVsdGlwbGllZEltYWdlUmVzdWx0LmNsZWFyKCk7
CiAgICAgaWYgKG1fcHJlbXVsdGlwbGllZEltYWdlUmVzdWx0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmgKaW5kZXgg
YjFjMTE4NjI3MGYwOWIyNTQ3NmVmMDBkYjQ4MmNjMWMzM2U0YWJiZC4uNDJkNzQ1MjAzNjlkYmZk
ZDdiY2JlZGQwNTU3ODc4MTcxM2FlN2MzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oCkBAIC0yOSw3ICsyOSw2
IEBACiAKICNpbmNsdWRlIDxydW50aW1lL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CiAKLSNpbmNsdWRl
IDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTE3OSw3ICsxNzgs
NyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBmb3JjZVZhbGlkUHJlTXVsdGlwbGllZFBpeGVscygp
OwogCiBwcml2YXRlOgotICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gbV9pbWFnZUJ1ZmZlclJlc3Vs
dDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IG1faW1hZ2VCdWZmZXJSZXN1bHQ7
CiAgICAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBtX3VubXVsdGlwbGllZEltYWdlUmVzdWx0
OwogICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gbV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1
bHQ7CiAgICAgRmlsdGVyRWZmZWN0VmVjdG9yIG1faW5wdXRFZmZlY3RzOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIu
Y3BwCmluZGV4IDRhM2IxMjZjNjg2NDgwNTRjODRkMWU0Y2IwYjExNDAzZjRkYjNiM2MuLjRjOGVl
NmEyYjc4ZDFjZDNhZjBkOTVmOGVlNTA1OGYxNzJhMGZlYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5jcHAK
QEAgLTE1MCw3ICsxNTAsNyBAQCBUZXh0dXJlTWFwcGVyOjp+VGV4dHVyZU1hcHBlcigpCiAKIHZv
aWQgQml0bWFwVGV4dHVyZTo6dXBkYXRlQ29udGVudHMoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1h
cHBlciwgR3JhcGhpY3NMYXllciogc291cmNlTGF5ZXIsIGNvbnN0IEludFJlY3QmIHRhcmdldFJl
Y3QsIGNvbnN0IEludFBvaW50JiBvZmZzZXQsIFVwZGF0ZUNvbnRlbnRzRmxhZyB1cGRhdGVDb250
ZW50c0ZsYWcpCiB7Ci0gICAgT3duUHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlciA9IEltYWdl
QnVmZmVyOjpjcmVhdGUodGFyZ2V0UmVjdC5zaXplKCkpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJ
bWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHRhcmdldFJlY3Qu
c2l6ZSgpKTsKICAgICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQgPSBpbWFnZUJ1ZmZlci0+Y29u
dGV4dCgpOwogICAgIGNvbnRleHQtPnNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkodGV4dHVy
ZU1hcHBlci0+aW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsKICAgICBjb250ZXh0LT5zZXRU
ZXh0RHJhd2luZ01vZGUodGV4dHVyZU1hcHBlci0+dGV4dERyYXdpbmdNb2RlKCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJJbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlci5oCmluZGV4IDA2MDcxM2NlNWNjMTcxY2Q4YzVlNWY3
ZmNlMGUyMDA4YmU3MGI2OGQuLmU3Yzc1ZGE4NjhiMjUxNWFhNDk4N2JiMTFlMWJmNzcyYTg0ZjE0
N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmgKQEAgLTMyLDcgKzMyLDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IGNyZWF0ZSgp
IHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBCaXRtYXBUZXh0dXJlSW1hZ2VCdWZmZXIpOyB9CiAgICAg
dmlydHVhbCBJbnRTaXplIHNpemUoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlLT5pbnRlcm5hbFNp
emUoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRSZXNldCgpOwotICAgIHZpcnR1YWwgYm9vbCBp
c1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1Zh
bGlkKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZS5nZXQoKTsgfQogICAgIGlubGluZSBHcmFwaGlj
c0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCgpIHsgcmV0dXJuIG1faW1hZ2UgPyBtX2ltYWdlLT5j
b250ZXh0KCkgOiAwOyB9CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbnRlbnRzKEltYWdlKiwg
Y29uc3QgSW50UmVjdCYsIGNvbnN0IEludFBvaW50JiwgVXBkYXRlQ29udGVudHNGbGFnKTsKICAg
ICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29udGVudHMoVGV4dHVyZU1hcHBlciosIEdyYXBoaWNzTGF5
ZXIqLCBjb25zdCBJbnRSZWN0JiB0YXJnZXQsIGNvbnN0IEludFBvaW50JiBvZmZzZXQsIFVwZGF0
ZUNvbnRlbnRzRmxhZyk7CkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAg
ICBCaXRtYXBUZXh0dXJlSW1hZ2VCdWZmZXIoKSB7IH0KLSAgICBPd25QdHI8SW1hZ2VCdWZmZXI+
IG1faW1hZ2U7CisgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBtX2ltYWdlOwogfTsK
IAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKaW5kZXggNmFl
MWM3YTA0ZDE2YTBiZGI2NjUzY2Y1ZDI0MGMxMzVhNjA2MTRhYi4uYTA5OGYzNWExZGE2YTA0Njk4
MTc2ZTU5OTFlOGU2NGUxNGI5MDkwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0lubGluZVRleHRCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Jbmxp
bmVUZXh0Qm94LmNwcApAQCAtMTA2MSw3ICsxMDYxLDcgQEAgdm9pZCBJbmxpbmVUZXh0Qm94Ojpw
YWludERlY29yYXRpb24oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFBvaW50
JgogCiAgICAgICAgICAgICBGbG9hdFJlY3QgdW5kZXJsaW5lUmVjdCA9IGJvdW5kaW5nQm94Rm9y
QWxsQWN0aXZlRGVjb3JhdGlvbnMoKnRoaXMsIGNvbnRleHQsIGRlY29yYXRpb24sIHRleHREZWNv
cmF0aW9uVGhpY2tuZXNzLCB3aWR0aCwgZG91YmxlT2Zmc2V0LCBkZWNvcmF0aW9uU3R5bGUsIGxv
Y2FsT3JpZ2luLCBsaW5lU3R5bGUsIGlzUHJpbnRpbmcsIGJhc2VsaW5lKTsKICAgICAgICAgICAg
IEludFJlY3QgZW5jbG9zaW5nRGV2aWNlUmVjdCA9IGVuY2xvc2luZ0ludFJlY3QodW5kZXJsaW5l
UmVjdCk7Ci0gICAgICAgICAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyID0gY29u
dGV4dC5jcmVhdGVDb21wYXRpYmxlQnVmZmVyKGVuY2xvc2luZ0RldmljZVJlY3Quc2l6ZSgpKTsK
KyAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBj
b250ZXh0LmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoZW5jbG9zaW5nRGV2aWNlUmVjdC5zaXplKCkp
OwogCiAgICAgICAgICAgICBpZiAoaW1hZ2VCdWZmZXIuZ2V0KCkpIHsKICAgICAgICAgICAgICAg
ICBHcmFwaGljc0NvbnRleHQmIG1hc2tDb250ZXh0ID0gKmltYWdlQnVmZmVyLT5jb250ZXh0KCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmpl
Y3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNw
cAppbmRleCBlNzg1MWQxN2Y0YWEwNWI1ZGQ5ZGI1MTk3NzJmZmM1NDU0NjM5MTA2Li5jZWY3NDNm
YTdhM2MzZWNlMDVkMjllMzcwMTNlMDVjYTJmYWU1YTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKQEAgLTcwMSw3ICs3MDEsNyBA
QCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVkKGNvbnN0
IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjbwogICAgIH0KICAgICAKICAgICBHcmFwaGljc0NvbnRl
eHRTdGF0ZVNhdmVyIGJhY2tncm91bmRDbGlwU3RhdGVTYXZlcigqY29udGV4dCwgZmFsc2UpOwot
ICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gbWFza0ltYWdlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJ
bWFnZUJ1ZmZlcj4gbWFza0ltYWdlOwogICAgIEludFJlY3QgbWFza1JlY3Q7CiAKICAgICBpZiAo
YmdMYXllci0+Y2xpcCgpID09IFBhZGRpbmdGaWxsQm94IHx8IGJnTGF5ZXItPmNsaXAoKSA9PSBD
b250ZW50RmlsbEJveCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRoZW1lTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFj
Lm1tCmluZGV4IDUyN2VmODY0Y2EzZjAyNDFhYzhkNjlhMDBkY2ExOGNjODIyZDgyNGUuLjMzNDg1
N2JiZWIzYTY2MTgwYzJhOWVkMGM5NGU3NTlkNDczYmVhMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KQEAgLTEwNTIsNyArMTA1Miw3IEBAIGJvb2wgUmVu
ZGVyVGhlbWVNYWM6OnBhaW50UHJvZ3Jlc3NCYXIoUmVuZGVyT2JqZWN0KiByZW5kZXJPYmplY3Qs
IGNvbnN0IFBhaW50SW5mCiAgICAgdHJhY2tJbmZvLnJlc2VydmVkID0gMDsKICAgICB0cmFja0lu
Zm8uZmlsbGVyMSA9IDA7CiAKLSAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyID0g
SW1hZ2VCdWZmZXI6OmNyZWF0ZShpbmZsYXRlZFJlY3Quc2l6ZSgpLCBkZXZpY2VTY2FsZUZhY3Rv
cik7CisgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlciA9IEltYWdl
QnVmZmVyOjpjcmVhdGUoaW5mbGF0ZWRSZWN0LnNpemUoKSwgZGV2aWNlU2NhbGVGYWN0b3IpOwog
ICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVybiB0cnVlOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwCmluZGV4IGM4ZmJiOGY2NTBiZWY4NGFlMmFm
NDdiYzgwZjQ5Y2ZjNjllYjcxODcuLmViMjY5MDJjMWVjMDMwMmQzZDY3Zjk4YWJlNTUyODE1NmJj
YjRiOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwCkBAIC0y
MjUsNyArMjI1LDcgQEAgUGFzc093blB0cjxTaGFwZT4gU2hhcGU6OmNyZWF0ZVNoYXBlKGNvbnN0
IFN0eWxlSW1hZ2UqIHN0eWxlSW1hZ2UsIGZsb2F0IHRocmVzaG8KIAogICAgIE93blB0cjxSYXN0
ZXJTaGFwZUludGVydmFscz4gaW50ZXJ2YWxzID0gYWRvcHRQdHIobmV3IFJhc3RlclNoYXBlSW50
ZXJ2YWxzKGltYWdlU2l6ZS5oZWlnaHQoKSkpOwogCi0gICAgT3duUHRyPEltYWdlQnVmZmVyPiBp
bWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoaW1hZ2VTaXplKTsKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShp
bWFnZVNpemUpOwogICAgIGlmIChpbWFnZUJ1ZmZlcikgewogICAgICAgICBHcmFwaGljc0NvbnRl
eHQqIGdyYXBoaWNzQ29udGV4dCA9IGltYWdlQnVmZmVyLT5jb250ZXh0KCk7CiAgICAgICAgIGdy
YXBoaWNzQ29udGV4dC0+ZHJhd0ltYWdlKGltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBJbnRQ
b2ludCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFn
ZS5jcHAKaW5kZXggNmNmODMwYmNlZmQ4MjdkYThjZDNiOWMzYzBjOWEyYmRkNzYwNGUwMi4uNTdm
YzliZTkyNjMyZTBmZjBjMmQ3ZDY2OWQzYjhhM2IyMTA3MzkyOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAKQEAgLTE2Miw3ICsxNjIsNyBA
QCB2b2lkIFJlbmRlclNWR0ltYWdlOjpwYWludEZvcmVncm91bmQoUGFpbnRJbmZvJiBwYWludElu
Zm8pCiAKIHZvaWQgUmVuZGVyU1ZHSW1hZ2U6OmludmFsaWRhdGVCdWZmZXJlZEZvcmVncm91bmQo
KQogewotICAgIG1fYnVmZmVyZWRGb3JlZ3JvdW5kLmNsZWFyKCk7CisgICAgbV9idWZmZXJlZEZv
cmVncm91bmQucmVzZXQoKTsKIH0KIAogYm9vbCBSZW5kZXJTVkdJbWFnZTo6bm9kZUF0RmxvYXRQ
b2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3VsdCYgcmVzdWx0
LCBjb25zdCBGbG9hdFBvaW50JiBwb2ludEluUGFyZW50LCBIaXRUZXN0QWN0aW9uIGhpdFRlc3RB
Y3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmgK
aW5kZXggMWQwYWNkMjAxNGEyOGY3NjU3YTJjMTVkZjIwYWNiNmE4NzJhM2VkOS4uN2YwNDFhZDkz
MjlkZWQyNmM2MGI5MTMyYTYxNmU4Y2QxMWNmYmFlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuaApAQCAtOTAsNyArOTAsNyBAQCBwcml2YXRlOgog
ICAgIEZsb2F0UmVjdCBtX3JlcGFpbnRCb3VuZGluZ0JveEV4Y2x1ZGluZ1NoYWRvdzsKICAgICBP
d25QdHI8UmVuZGVySW1hZ2VSZXNvdXJjZT4gbV9pbWFnZVJlc291cmNlOwogCi0gICAgT3duUHRy
PEltYWdlQnVmZmVyPiBtX2J1ZmZlcmVkRm9yZWdyb3VuZDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
SW1hZ2VCdWZmZXI+IG1fYnVmZmVyZWRGb3JlZ3JvdW5kOwogfTsKIAogUkVOREVSX09CSkVDVF9U
WVBFX0NBU1RTKFJlbmRlclNWR0ltYWdlLCBpc1NWR0ltYWdlKCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHAK
aW5kZXggZjkwMzEzMTdlZjgzNTdmNjZjZjgwMDE4MTk2ODA5ZjU4NWZmNThjYi4uMzY5MmIyZWU1
ZjBkOTc0OTgwMzIwODVjZWM2MDkwZWRlMzVjNDZlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcApAQCAt
MTg2LDcgKzE4Niw3IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyOjphcHBseUNsaXBw
aW5nVG9Db250ZXh0KFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjCiAgICAgICAgICAgICBzdWNj
ZWVkZWQgPSBkcmF3Q29udGVudEludG9NYXNrSW1hZ2UoY2xpcHBlckRhdGEsIG9iamVjdEJvdW5k
aW5nQm94KTsKIAogICAgICAgICBpZiAoIXN1Y2NlZWRlZCkKLSAgICAgICAgICAgIGNsaXBwZXJE
YXRhLT5jbGlwTWFza0ltYWdlLmNsZWFyKCk7CisgICAgICAgICAgICBjbGlwcGVyRGF0YS0+Y2xp
cE1hc2tJbWFnZS5yZXNldCgpOwogICAgIH0KIAogICAgIGlmICghY2xpcHBlckRhdGEtPmNsaXBN
YXNrSW1hZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jlc291cmNlQ2xpcHBlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZUNsaXBwZXIuaAppbmRleCA2ZGI4NzAyMjc4MWNlMWUxNGIwMmQzZTYxNWU4
MGQ4ZGExNWEzNDdmLi41Yzk0MjZhZTY4NmY5ODdmNzRlMGNmNGRhOWIyOGRiMzdmN2IzN2U0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
Q2xpcHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVz
b3VyY2VDbGlwcGVyLmgKQEAgLTMxLDE0ICszMSwxMyBAQAogI2luY2x1ZGUgIlNWR1VuaXRUeXBl
cy5oIgogCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IENsaXBwZXJEYXRhIHsKICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IGNs
aXBNYXNrSW1hZ2U7CisgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBjbGlwTWFza0lt
YWdlOwogfTsKIAogY2xhc3MgUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyIEZJTkFMIDogcHVibGlj
IFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKaW5kZXggOWY3Njkw
OGUxMWNlZjZkY2Q1NzY4ZjNlZjBiNjYzYTRkMjRmMThkMi4uNjE3ZTIwYTA1NDFjYmUyODcyM2Q4
MjgxMDY0NDUwOTdiOWRiNGJkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKQEAgLTIxMyw3ICsyMTMsNyBA
QCBib29sIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjphcHBseVJlc291cmNlKFJlbmRlckVsZW1l
bnQmIHJlbmRlcmVyLCBjb25zdCBSZW5kZQogICAgIGVmZmVjdGl2ZVRyYW5zZm9ybS5zY2FsZShz
Y2FsZS53aWR0aCgpLCBzY2FsZS5oZWlnaHQoKSk7CiAgICAgZWZmZWN0aXZlVHJhbnNmb3JtLm11
bHRpcGx5KGZpbHRlckRhdGEtPnNoZWFyRnJlZUFic29sdXRlVHJhbnNmb3JtKTsKIAotICAgIE93
blB0cjxJbWFnZUJ1ZmZlcj4gc291cmNlR3JhcGhpYzsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1h
Z2VCdWZmZXI+IHNvdXJjZUdyYXBoaWM7CiAgICAgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2Rl
ID0gcmVuZGVyZXIuZnJhbWUoKS5zZXR0aW5ncygpLmFjY2VsZXJhdGVkRmlsdGVyc0VuYWJsZWQo
KSA/IEFjY2VsZXJhdGVkIDogVW5hY2NlbGVyYXRlZDsKICAgICBpZiAoIVNWR1JlbmRlcmluZ0Nv
bnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKGZpbHRlckRhdGEtPmRyYXdpbmdSZWdpb24sIGVmZmVj
dGl2ZVRyYW5zZm9ybSwgc291cmNlR3JhcGhpYywgQ29sb3JTcGFjZUxpbmVhclJHQiwgcmVuZGVy
aW5nTW9kZSkpIHsKICAgICAgICAgQVNTRVJUKCFtX2ZpbHRlci5jb250YWlucygmcmVuZGVyZXIp
KTsKQEAgLTIyOCw3ICsyMjgsNyBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjphcHBs
eVJlc291cmNlKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBSZW5kZQogICAgIEdyYXBo
aWNzQ29udGV4dCogc291cmNlR3JhcGhpY0NvbnRleHQgPSBzb3VyY2VHcmFwaGljLT5jb250ZXh0
KCk7CiAgICAgQVNTRVJUKHNvdXJjZUdyYXBoaWNDb250ZXh0KTsKICAgCi0gICAgZmlsdGVyRGF0
YS0+c291cmNlR3JhcGhpY0J1ZmZlciA9IHNvdXJjZUdyYXBoaWMucmVsZWFzZSgpOworICAgIGZp
bHRlckRhdGEtPnNvdXJjZUdyYXBoaWNCdWZmZXIgPSBzdGQ6Om1vdmUoc291cmNlR3JhcGhpYyk7
CiAgICAgZmlsdGVyRGF0YS0+c2F2ZWRDb250ZXh0ID0gY29udGV4dDsKIAogICAgIGNvbnRleHQg
PSBzb3VyY2VHcmFwaGljQ29udGV4dDsKQEAgLTI4Miw3ICsyODIsNyBAQCB2b2lkIFJlbmRlclNW
R1Jlc291cmNlRmlsdGVyOjpwb3N0QXBwbHlSZXNvdXJjZShSZW5kZXJFbGVtZW50JiByZW5kZXJl
ciwgR3JhcGhpYwogICAgICAgICAvLyBpbml0aWFsIGZpbHRlcmluZyBwcm9jZXNzLiBXZSBqdXN0
IHRha2UgdGhlIHN0b3JlZCBmaWx0ZXIgcmVzdWx0IG9uIGEKICAgICAgICAgLy8gc2Vjb25kIGRy
YXdpbmcuCiAgICAgICAgIGlmIChmaWx0ZXJEYXRhLT5zdGF0ZSAhPSBGaWx0ZXJEYXRhOjpCdWls
dCkKLSAgICAgICAgICAgIGZpbHRlckRhdGEtPmZpbHRlci0+c2V0U291cmNlSW1hZ2UoZmlsdGVy
RGF0YS0+c291cmNlR3JhcGhpY0J1ZmZlci5yZWxlYXNlKCkpOworICAgICAgICAgICAgZmlsdGVy
RGF0YS0+ZmlsdGVyLT5zZXRTb3VyY2VJbWFnZShzdGQ6Om1vdmUoZmlsdGVyRGF0YS0+c291cmNl
R3JhcGhpY0J1ZmZlcikpOwogCiAgICAgICAgIC8vIEFsd2F5cyB0cnVlIGlmIGZpbHRlckRhdGEg
aXMganVzdCBidWlsdCAoZmlsdGVyRGF0YS0+c3RhdGUgPT0gRmlsdGVyRGF0YTo6QnVpbHQpLgog
ICAgICAgICBpZiAoIWxhc3RFZmZlY3QtPmhhc1Jlc3VsdCgpKSB7CkBAIC0zMDQsNyArMzA0LDcg
QEAgdm9pZCBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6cG9zdEFwcGx5UmVzb3VyY2UoUmVuZGVy
RWxlbWVudCYgcmVuZGVyZXIsIEdyYXBoaWMKICAgICAgICAgICAgIGNvbnRleHQtPmNvbmNhdENU
TShmaWx0ZXJEYXRhLT5zaGVhckZyZWVBYnNvbHV0ZVRyYW5zZm9ybSk7CiAgICAgICAgIH0KICAg
ICB9Ci0gICAgZmlsdGVyRGF0YS0+c291cmNlR3JhcGhpY0J1ZmZlci5jbGVhcigpOworICAgIGZp
bHRlckRhdGEtPnNvdXJjZUdyYXBoaWNCdWZmZXIucmVzZXQoKTsKIH0KIAogRmxvYXRSZWN0IFJl
bmRlclNWR1Jlc291cmNlRmlsdGVyOjpyZXNvdXJjZUJvdW5kaW5nQm94KGNvbnN0IFJlbmRlck9i
amVjdCYgb2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5oCmluZGV4IGM2ODk5Y2M5YjA3MzA0YTI1NjBjZDEwMGY0
ZGE5ZWM5NjY1NmMyZTcuLmZlZDQ4NzhlMzI3YTM5Nzc0ZmUyYTdiYTFjMmRkMDcyZWFhYWE2NWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3Vy
Y2VGaWx0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlRmlsdGVyLmgKQEAgLTMzLDggKzMzLDYgQEAKICNpbmNsdWRlICJTVkdGaWx0ZXJFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiU1ZHVW5pdFR5cGVzLmgiCiAKLSNpbmNsdWRlIDx3dGYvT3duUHRy
Lmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTUzLDcgKzUxLDcgQEAgcHVibGljOgogCiAgICAg
UmVmUHRyPFNWR0ZpbHRlcj4gZmlsdGVyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxTVkdGaWx0ZXJC
dWlsZGVyPiBidWlsZGVyOwotICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gc291cmNlR3JhcGhpY0J1
ZmZlcjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IHNvdXJjZUdyYXBoaWNCdWZm
ZXI7CiAgICAgR3JhcGhpY3NDb250ZXh0KiBzYXZlZENvbnRleHQ7CiAgICAgQWZmaW5lVHJhbnNm
b3JtIHNoZWFyRnJlZUFic29sdXRlVHJhbnNmb3JtOwogICAgIEZsb2F0UmVjdCBib3VuZGFyaWVz
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZUdyYWRpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VHcmFkaWVudC5jcHAKaW5kZXggOTEzYWIzNTEyZjlmNmNhYjUyYzc0YzNjYzYyNmZl
YzNmZjUwZjM5NC4uNzE4OGU2NTY1ODY2MTcwNjU0MDc5MmQ5M2NkY2Q0MjEzMDZlNWQ4ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdy
YWRpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlR3JhZGllbnQuY3BwCkBAIC01OCwxMCArNTgsNyBAQCB2b2lkIFJlbmRlclNWR1Jlc291
cmNlR3JhZGllbnQ6OnJlbW92ZUNsaWVudEZyb21DYWNoZShSZW5kZXJPYmplY3QqIGNsaWVudCwg
Ym9vbAogfQogCiAjaWYgVVNFKENHKQotc3RhdGljIGlubGluZSBib29sIGNyZWF0ZU1hc2tBbmRT
d2FwQ29udGV4dEZvclRleHRHcmFkaWVudChHcmFwaGljc0NvbnRleHQqJiBjb250ZXh0LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
cmFwaGljc0NvbnRleHQqJiBzYXZlZENvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4mIGlt
YWdlQnVmZmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBSZW5kZXJPYmplY3QqIG9iamVjdCkKK3N0YXRpYyBpbmxpbmUgYm9vbCBj
cmVhdGVNYXNrQW5kU3dhcENvbnRleHRGb3JUZXh0R3JhZGllbnQoR3JhcGhpY3NDb250ZXh0KiYg
Y29udGV4dCwgR3JhcGhpY3NDb250ZXh0KiYgc2F2ZWRDb250ZXh0LCBzdGQ6OnVuaXF1ZV9wdHI8
SW1hZ2VCdWZmZXI+JiBpbWFnZUJ1ZmZlciwgUmVuZGVyT2JqZWN0KiBvYmplY3QpCiB7CiAgICAg
UmVuZGVyT2JqZWN0KiB0ZXh0Um9vdEJsb2NrID0gUmVuZGVyU1ZHVGV4dDo6bG9jYXRlUmVuZGVy
U1ZHVGV4dEFuY2VzdG9yKG9iamVjdCk7CiAgICAgQVNTRVJUKHRleHRSb290QmxvY2spOwpAQCAt
NzAsNyArNjcsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgY3JlYXRlTWFza0FuZFN3YXBDb250ZXh0
Rm9yVGV4dEdyYWRpZW50KEdyYXBoaWNzQ29udGV4dComIGNvbgogICAgIFNWR1JlbmRlcmluZ0Nv
bnRleHQ6OmNhbGN1bGF0ZVRyYW5zZm9ybWF0aW9uVG9PdXRlcm1vc3RDb29yZGluYXRlU3lzdGVt
KHRleHRSb290QmxvY2ssIGFic29sdXRlVHJhbnNmb3JtKTsKIAogICAgIEZsb2F0UmVjdCByZXBh
aW50UmVjdCA9IHRleHRSb290QmxvY2stPnJlcGFpbnRSZWN0SW5Mb2NhbENvb3JkaW5hdGVzKCk7
Ci0gICAgT3duUHRyPEltYWdlQnVmZmVyPiBtYXNrSW1hZ2U7CisgICAgc3RkOjp1bmlxdWVfcHRy
PEltYWdlQnVmZmVyPiBtYXNrSW1hZ2U7CiAgICAgaWYgKCFTVkdSZW5kZXJpbmdDb250ZXh0Ojpj
cmVhdGVJbWFnZUJ1ZmZlcihyZXBhaW50UmVjdCwgYWJzb2x1dGVUcmFuc2Zvcm0sIG1hc2tJbWFn
ZSwgQ29sb3JTcGFjZURldmljZVJHQiwgVW5hY2NlbGVyYXRlZCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIApAQCAtNzksMTYgKzc2LDExIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBjcmVhdGVNYXNr
QW5kU3dhcENvbnRleHRGb3JUZXh0R3JhZGllbnQoR3JhcGhpY3NDb250ZXh0KiYgY29uCiAgICAg
QVNTRVJUKG1hc2tJbWFnZSk7CiAgICAgc2F2ZWRDb250ZXh0ID0gY29udGV4dDsKICAgICBjb250
ZXh0ID0gbWFza0ltYWdlQ29udGV4dDsKLSAgICBpbWFnZUJ1ZmZlciA9IG1hc2tJbWFnZS5yZWxl
YXNlKCk7CisgICAgaW1hZ2VCdWZmZXIgPSBzdGQ6Om1vdmUobWFza0ltYWdlKTsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotc3RhdGljIGlubGluZSBBZmZpbmVUcmFuc2Zvcm0gY2xpcFRvVGV4dE1h
c2soR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgT3duUHRyPEltYWdlQnVmZmVyPiYgaW1hZ2VCdWZmZXIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGbG9hdFJlY3QmIHRhcmdl
dFJlY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZW5k
ZXJPYmplY3QqIG9iamVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJvb2wgYm91bmRpbmdCb3hNb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBncmFkaWVudFRyYW5zZm9y
bSkKK3N0YXRpYyBpbmxpbmUgQWZmaW5lVHJhbnNmb3JtIGNsaXBUb1RleHRNYXNrKEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiYgaW1hZ2VCdWZm
ZXIsIEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgUmVuZGVyT2JqZWN0KiBvYmplY3QsIGJvb2wgYm91
bmRpbmdCb3hNb2RlLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGdyYWRpZW50VHJhbnNmb3JtKQog
ewogICAgIFJlbmRlck9iamVjdCogdGV4dFJvb3RCbG9jayA9IFJlbmRlclNWR1RleHQ6OmxvY2F0
ZVJlbmRlclNWR1RleHRBbmNlc3RvcihvYmplY3QpOwogICAgIEFTU0VSVCh0ZXh0Um9vdEJsb2Nr
KTsKQEAgLTIyNSw3ICsyMTcsNyBAQCB2b2lkIFJlbmRlclNWR1Jlc291cmNlR3JhZGllbnQ6OnBv
c3RBcHBseVJlc291cmNlKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBHcmFwaAogICAgICAgICAg
ICAgY29udGV4dC0+c2V0RmlsbEdyYWRpZW50KGdyYWRpZW50RGF0YS0+Z3JhZGllbnQpOwogCiAg
ICAgICAgICAgICBjb250ZXh0LT5maWxsUmVjdCh0YXJnZXRSZWN0KTsKLSAgICAgICAgICAgIG1f
aW1hZ2VCdWZmZXIuY2xlYXIoKTsKKyAgICAgICAgICAgIG1faW1hZ2VCdWZmZXIucmVzZXQoKTsK
ICAgICAgICAgfQogI2Vsc2UKICAgICAgICAgVU5VU0VEX1BBUkFNKHJlbmRlcmVyKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFk
aWVudC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdy
YWRpZW50LmgKaW5kZXggODZjZTc3MDI4NjMzMTNlYzA1OTY4ZGJlODAyZjI4ZWViMjc0MjJmNS4u
NGJmOWQwOTQzODUyNjJkNWMxOWFjZGNmOTdmYTJjOWRhYzhhMDlmYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50
LmgKQEAgLTc0LDcgKzc0LDcgQEAgcHJpdmF0ZToKIAogI2lmIFVTRShDRykKICAgICBHcmFwaGlj
c0NvbnRleHQqIG1fc2F2ZWRDb250ZXh0OwotICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gbV9pbWFn
ZUJ1ZmZlcjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IG1faW1hZ2VCdWZmZXI7
CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAKaW5kZXggMTJiN2VkMDlhZjAyOWVmY2JmMDMz
MDhlNGFjODkwODFkYThiMWUzNC4uZWQ5MzI3ODQ5NzY0NTA1ODk5NTVlNjBhZTMxZDg5MjRlODc0
Mjg0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
ZXNvdXJjZU1hc2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAKQEAgLTkwLDcgKzkwLDcgQEAgYm9vbCBSZW5kZXJTVkdS
ZXNvdXJjZU1hc2tlcjo6YXBwbHlSZXNvdXJjZShSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY29u
c3QgUmVuZGUKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICBpZiAoIWRyYXdD
b250ZW50SW50b01hc2tJbWFnZShtYXNrZXJEYXRhLCBjb2xvclNwYWNlLCAmcmVuZGVyZXIpKSB7
Ci0gICAgICAgICAgICBtYXNrZXJEYXRhLT5tYXNrSW1hZ2UuY2xlYXIoKTsKKyAgICAgICAgICAg
IG1hc2tlckRhdGEtPm1hc2tJbWFnZS5yZXNldCgpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFz
a2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFz
a2VyLmgKaW5kZXggYmZiY2M5ZTlmYzQ4YjZkYTc0YzhmZDY4YmFiZDQyNjIyNjlmMDZhZi4uNTJi
MTU1NzdjMTRjZTQxZjZmNDc1MDM5MGE0MGE4Y2ZiYTk1YTIwZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuaApAQCAt
MzAsMTIgKzMwLDExIEBACiAjaW5jbHVkZSAiU1ZHVW5pdFR5cGVzLmgiCiAKICNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBzdHJ1Y3QgTWFza2VyRGF0YSB7Ci0gICAgT3duUHRyPEltYWdlQnVmZmVyPiBtYXNr
SW1hZ2U7CisgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBtYXNrSW1hZ2U7CiB9Owog
CiBjbGFzcyBSZW5kZXJTVkdSZXNvdXJjZU1hc2tlciBGSU5BTCA6IHB1YmxpYyBSZW5kZXJTVkdS
ZXNvdXJjZUNvbnRhaW5lciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAKaW5kZXggZTBkNDMwNjJjZGVkNzQ0
N2M4ZjZhZDhmZGJhNDRjZjRhNDIzY2I4YS4uZjAxODg3NmY1ZjZkMDU2YWVhNTlhNDIwYmUyNDRh
ZTMyMmVlYjU3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcApAQCAtMTAyLDcgKzEwMiw3IEBAIFBhdHRl
cm5EYXRhKiBSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm46OmJ1aWxkUGF0dGVybihSZW5kZXJPYmpl
Y3QqIG9iamVjdCwgdW5zaWduCiAgICAgICAgIHN0YXRpY19jYXN0PGZsb2F0PihtX2F0dHJpYnV0
ZXMucGF0dGVyblRyYW5zZm9ybSgpLnlTY2FsZSgpKSk7CiAKICAgICAvLyBCdWlsZCB0aWxlIGlt
YWdlLgotICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gdGlsZUltYWdlID0gY3JlYXRlVGlsZUltYWdl
KG1fYXR0cmlidXRlcywgdGlsZUJvdW5kYXJpZXMsIGFic29sdXRlVGlsZUJvdW5kYXJpZXMsIHRp
bGVJbWFnZVRyYW5zZm9ybSwgY2xhbXBlZEFic29sdXRlVGlsZUJvdW5kYXJpZXMpOworICAgIHN0
ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gdGlsZUltYWdlID0gY3JlYXRlVGlsZUltYWdlKG1f
YXR0cmlidXRlcywgdGlsZUJvdW5kYXJpZXMsIGFic29sdXRlVGlsZUJvdW5kYXJpZXMsIHRpbGVJ
bWFnZVRyYW5zZm9ybSwgY2xhbXBlZEFic29sdXRlVGlsZUJvdW5kYXJpZXMpOwogICAgIGlmICgh
dGlsZUltYWdlKQogICAgICAgICByZXR1cm4gMDsKIApAQCAtMjQwLDE1ICsyNDAsMTEgQEAgYm9v
bCBSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm46OmJ1aWxkVGlsZUltYWdlVHJhbnNmb3JtKFJlbmRl
ck9iamVjdCogcmVuZGVyZXIsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVBhc3NPd25QdHI8SW1h
Z2VCdWZmZXI+IFJlbmRlclNWR1Jlc291cmNlUGF0dGVybjo6Y3JlYXRlVGlsZUltYWdlKGNvbnN0
IFBhdHRlcm5BdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRmxvYXRSZWN0
JiB0aWxlQm91bmRhcmllcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZsb2F0UmVjdCYgYWJzb2x1dGVUaWxl
Qm91bmRhcmllcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdGlsZUltYWdlVHJh
bnNmb3JtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRmxvYXRSZWN0JiBjbGFtcGVkQWJzb2x1dGVUaWxlQm91bmRhcmll
cykgY29uc3QKK3N0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gUmVuZGVyU1ZHUmVzb3VyY2VQ
YXR0ZXJuOjpjcmVhdGVUaWxlSW1hZ2UoY29uc3QgUGF0dGVybkF0dHJpYnV0ZXMmIGF0dHJpYnV0
ZXMsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZUJvdW5kYXJpZXMsIGNvbnN0IEZsb2F0UmVjdCYgYWJz
b2x1dGVUaWxlQm91bmRhcmllcywgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0aWxlSW1hZ2VUcmFu
c2Zvcm0sIEZsb2F0UmVjdCYgY2xhbXBlZEFic29sdXRlVGlsZUJvdW5kYXJpZXMpIGNvbnN0CiB7
CiAgICAgY2xhbXBlZEFic29sdXRlVGlsZUJvdW5kYXJpZXMgPSBTVkdSZW5kZXJpbmdDb250ZXh0
OjpjbGFtcGVkQWJzb2x1dGVUYXJnZXRSZWN0KGFic29sdXRlVGlsZUJvdW5kYXJpZXMpOwogCi0g
ICAgT3duUHRyPEltYWdlQnVmZmVyPiB0aWxlSW1hZ2U7CisgICAgc3RkOjp1bmlxdWVfcHRyPElt
YWdlQnVmZmVyPiB0aWxlSW1hZ2U7CiAKICAgICBpZiAoIVNWR1JlbmRlcmluZ0NvbnRleHQ6OmNy
ZWF0ZUltYWdlQnVmZmVyRm9yUGF0dGVybihhYnNvbHV0ZVRpbGVCb3VuZGFyaWVzLCBjbGFtcGVk
QWJzb2x1dGVUaWxlQm91bmRhcmllcywgdGlsZUltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBV
bmFjY2VsZXJhdGVkKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yNzksNyArMjc1LDcg
QEAgUGFzc093blB0cjxJbWFnZUJ1ZmZlcj4gUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuOjpjcmVh
dGVUaWxlSW1hZ2UoY29uc3QgUGF0dGVybkEKICAgICAgICAgU1ZHUmVuZGVyaW5nQ29udGV4dDo6
cmVuZGVyU3VidHJlZVRvSW1hZ2VCdWZmZXIodGlsZUltYWdlLmdldCgpLCAqY2hpbGQucmVuZGVy
ZXIoKSwgY29udGVudFRyYW5zZm9ybWF0aW9uKTsKICAgICB9CiAKLSAgICByZXR1cm4gdGlsZUlt
YWdlLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gdGlsZUltYWdlOwogfQogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4u
aAppbmRleCAxZjczMmU0NjM1NzZkOWM5NWM2MGEzYjUyOWEzZDkzYWRkZGRmMDk1Li5iODkwZDIy
M2NhOGJmYjM2NDlkMTdiM2IyYTgyMDYwM2FjM2ViZTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmgKQEAgLTY0
LDkgKzY0LDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgYnVpbGRUaWxlSW1hZ2VUcmFuc2Zvcm0o
UmVuZGVyT2JqZWN0KiwgY29uc3QgUGF0dGVybkF0dHJpYnV0ZXMmLCBjb25zdCBTVkdQYXR0ZXJu
RWxlbWVudCYsIEZsb2F0UmVjdCYgcGF0dGVybkJvdW5kYXJpZXMsIEFmZmluZVRyYW5zZm9ybSYg
dGlsZUltYWdlVHJhbnNmb3JtKSBjb25zdDsKIAotICAgIFBhc3NPd25QdHI8SW1hZ2VCdWZmZXI+
IGNyZWF0ZVRpbGVJbWFnZShjb25zdCBQYXR0ZXJuQXR0cmlidXRlcyYsIGNvbnN0IEZsb2F0UmVj
dCYgdGlsZUJvdW5kYXJpZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEZsb2F0UmVjdCYgYWJzb2x1dGVUaWxlQm91bmRhcmllcywgY29uc3QgQWZm
aW5lVHJhbnNmb3JtJiB0aWxlSW1hZ2VUcmFuc2Zvcm0sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEZsb2F0UmVjdCYgY2xhbXBlZEFic29sdXRlVGlsZUJvdW5k
YXJpZXMpIGNvbnN0OworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlVGls
ZUltYWdlKGNvbnN0IFBhdHRlcm5BdHRyaWJ1dGVzJiwgY29uc3QgRmxvYXRSZWN0JiB0aWxlQm91
bmRhcmllcywgY29uc3QgRmxvYXRSZWN0JiBhYnNvbHV0ZVRpbGVCb3VuZGFyaWVzLCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIHRpbGVJbWFnZVRyYW5zZm9ybSwgRmxvYXRSZWN0JiBjbGFtcGVkQWJz
b2x1dGVUaWxlQm91bmRhcmllcykgY29uc3Q7CiAKICAgICBQYXR0ZXJuRGF0YSogYnVpbGRQYXR0
ZXJuKFJlbmRlck9iamVjdCosIHVuc2lnbmVkIHNob3J0IHJlc291cmNlTW9kZSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3Bw
CmluZGV4IGUxOWQ2MGYzNzcxYjhhNmQ5MjJiMTZhYTc2ZDY1YjVlOGM1NGIzYTEuLjY5YmNkZmFk
ZmE4ZjFlNDI4ZDBjZDM5ZWRlZDhkMjI3NWEzNWNkMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtMjIzLDcgKzIy
Myw3IEBAIHZvaWQgU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y2FsY3VsYXRlVHJhbnNmb3JtYXRpb25U
b091dGVybW9zdENvb3JkaW5hdGVTeXN0ZW0oY29uCiAgICAgYWJzb2x1dGVUcmFuc2Zvcm0uc2Nh
bGUoZGV2aWNlU2NhbGVGYWN0b3IpOwogfQogCi1ib29sIFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNy
ZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiBhYnNvbHV0ZVRyYW5zZm9ybSwgT3duUHRyPEltYWdlQnVmZmVyPiYgaW1hZ2VC
dWZmZXIsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2Rl
KQorYm9vbCBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9h
dFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgYWJzb2x1dGVUcmFuc2Zv
cm0sIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4mIGltYWdlQnVmZmVyLCBDb2xvclNwYWNl
IGNvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSkKIHsKICAgICBJbnRSZWN0
IHBhaW50UmVjdCA9IGNhbGN1bGF0ZUltYWdlQnVmZmVyUmVjdCh0YXJnZXRSZWN0LCBhYnNvbHV0
ZVRyYW5zZm9ybSk7CiAgICAgLy8gRG9uJ3QgY3JlYXRlIGVtcHR5IEltYWdlQnVmZmVycy4KQEAg
LTIzMSw3ICsyMzEsNyBAQCBib29sIFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVm
ZmVyKGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgQQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICBJbnRTaXplIGNsYW1wZWRTaXplID0gY2xhbXBlZEFic29sdXRlU2l6ZShw
YWludFJlY3Quc2l6ZSgpKTsKLSAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IGltYWdlID0gSW1hZ2VC
dWZmZXI6OmNyZWF0ZShjbGFtcGVkU2l6ZSwgMSwgY29sb3JTcGFjZSwgcmVuZGVyaW5nTW9kZSk7
CisgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBpbWFnZSA9IEltYWdlQnVmZmVyOjpj
cmVhdGUoY2xhbXBlZFNpemUsIDEsIGNvbG9yU3BhY2UsIHJlbmRlcmluZ01vZGUpOwogICAgIGlm
ICghaW1hZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMjQzLDExICsyNDMsMTEgQEAg
Ym9vbCBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJl
Y3QmIHRhcmdldFJlY3QsIGNvbnN0IEEKICAgICBpbWFnZUNvbnRleHQtPnRyYW5zbGF0ZSgtcGFp
bnRSZWN0LngoKSwgLXBhaW50UmVjdC55KCkpOwogICAgIGltYWdlQ29udGV4dC0+Y29uY2F0Q1RN
KGFic29sdXRlVHJhbnNmb3JtKTsKIAotICAgIGltYWdlQnVmZmVyID0gaW1hZ2UucmVsZWFzZSgp
OworICAgIGltYWdlQnVmZmVyID0gc3RkOjptb3ZlKGltYWdlKTsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotYm9vbCBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlckZvclBhdHRl
cm4oY29uc3QgRmxvYXRSZWN0JiBhYnNvbHV0ZVRhcmdldFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
Y2xhbXBlZEFic29sdXRlVGFyZ2V0UmVjdCwgT3duUHRyPEltYWdlQnVmZmVyPiYgaW1hZ2VCdWZm
ZXIsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlKQor
Ym9vbCBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlckZvclBhdHRlcm4oY29u
c3QgRmxvYXRSZWN0JiBhYnNvbHV0ZVRhcmdldFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgY2xhbXBl
ZEFic29sdXRlVGFyZ2V0UmVjdCwgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiYgaW1hZ2VC
dWZmZXIsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2Rl
KQogewogICAgIEludFNpemUgaW1hZ2VTaXplKHJvdW5kZWRJbnRTaXplKGNsYW1wZWRBYnNvbHV0
ZVRhcmdldFJlY3Quc2l6ZSgpKSk7CiAgICAgSW50U2l6ZSB1bmNsYW1wZWRJbWFnZVNpemUocm91
bmRlZEludFNpemUoYWJzb2x1dGVUYXJnZXRSZWN0LnNpemUoKSkpOwpAQCAtMjU2LDcgKzI1Niw3
IEBAIGJvb2wgU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXJGb3JQYXR0ZXJu
KGNvbnN0IEZsb2F0UmVjdCYgYWJzb2x1dGVUCiAgICAgaWYgKGltYWdlU2l6ZS5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2Ug
PSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGltYWdlU2l6ZSwgMSwgY29sb3JTcGFjZSwgcmVuZGVyaW5n
TW9kZSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBpbWFnZSA9IEltYWdlQnVm
ZmVyOjpjcmVhdGUoaW1hZ2VTaXplLCAxLCBjb2xvclNwYWNlLCByZW5kZXJpbmdNb2RlKTsKICAg
ICBpZiAoIWltYWdlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTI2Niw3ICsyNjYsNyBA
QCBib29sIFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyRm9yUGF0dGVybihj
b25zdCBGbG9hdFJlY3QmIGFic29sdXRlVAogICAgIC8vIENvbXBlbnNhdGUgcm91bmRpbmcgZWZm
ZWN0cywgYXMgdGhlIGFic29sdXRlIHRhcmdldCByZWN0IGlzIHVzaW5nIGZsb2F0aW5nLXBvaW50
IG51bWJlcnMgYW5kIHRoZSBpbWFnZSBidWZmZXIgc2l6ZSBpcyBpbnRlZ2VyLgogICAgIGltYWdl
Q29udGV4dC0+c2NhbGUoRmxvYXRTaXplKHVuY2xhbXBlZEltYWdlU2l6ZS53aWR0aCgpIC8gYWJz
b2x1dGVUYXJnZXRSZWN0LndpZHRoKCksIHVuY2xhbXBlZEltYWdlU2l6ZS5oZWlnaHQoKSAvIGFi
c29sdXRlVGFyZ2V0UmVjdC5oZWlnaHQoKSkpOwogCi0gICAgaW1hZ2VCdWZmZXIgPSBpbWFnZS5y
ZWxlYXNlKCk7CisgICAgaW1hZ2VCdWZmZXIgPSBzdGQ6Om1vdmUoaW1hZ2UpOwogICAgIHJldHVy
biB0cnVlOwogfQogCkBAIC0yODcsNyArMjg3LDcgQEAgdm9pZCBTVkdSZW5kZXJpbmdDb250ZXh0
OjpyZW5kZXJTdWJ0cmVlVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciogaW1hZ2UsIFJlbmRlckUK
ICAgICBjb250ZW50VHJhbnNmb3JtYXRpb24gPSBzYXZlZENvbnRlbnRUcmFuc2Zvcm1hdGlvbjsK
IH0KIAotdm9pZCBTVkdSZW5kZXJpbmdDb250ZXh0OjpjbGlwVG9JbWFnZUJ1ZmZlcihHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgYWJzb2x1dGVUcmFuc2Zv
cm0sIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgT3duUHRyPEltYWdlQnVmZmVyPiYgaW1h
Z2VCdWZmZXIsIGJvb2wgc2FmZVRvQ2xlYXIpCit2b2lkIFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNs
aXBUb0ltYWdlQnVmZmVyKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiBhYnNvbHV0ZVRyYW5zZm9ybSwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBz
dGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+JiBpbWFnZUJ1ZmZlciwgYm9vbCBzYWZlVG9DbGVh
cikKIHsKICAgICBBU1NFUlQoY29udGV4dCk7CiAgICAgQVNTRVJUKGltYWdlQnVmZmVyKTsKQEAg
LTMwMyw3ICszMDMsNyBAQCB2b2lkIFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNsaXBUb0ltYWdlQnVm
ZmVyKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgQWZmaQogICAgIC8vIFdoZW4gbmVz
dGluZyByZXNvdXJjZXMsIHdpdGggb2JqZWN0Qm91bmRpbmdCb3ggYXMgY29udGVudCB1bml0IHR5
cGVzLCB0aGVyZSdzIG5vIHVzZSBpbiBjYWNoaW5nIHRoZQogICAgIC8vIHJlc3VsdGluZyBpbWFn
ZSBidWZmZXIgYXMgdGhlIHBhcmVudCByZXNvdXJjZSBhbHJlYWR5IGNhY2hlcyB0aGUgcmVzdWx0
LgogICAgIGlmIChzYWZlVG9DbGVhciAmJiAhY3VycmVudENvbnRlbnRUcmFuc2Zvcm1hdGlvbigp
LmlzSWRlbnRpdHkoKSkKLSAgICAgICAgaW1hZ2VCdWZmZXIuY2xlYXIoKTsKKyAgICAgICAgaW1h
Z2VCdWZmZXIucmVzZXQoKTsKIH0KIAogRmxvYXRSZWN0IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNs
YW1wZWRBYnNvbHV0ZVRhcmdldFJlY3QoY29uc3QgRmxvYXRSZWN0JiBhYnNvbHV0ZVRhcmdldFJl
Y3QpCkBAIC0zMjYsNyArMzI2LDcgQEAgdm9pZCBTVkdSZW5kZXJpbmdDb250ZXh0OjpjbGVhcjJE
Um90YXRpb24oQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0pCiAgICAgdHJhbnNmb3JtLnJlY29t
cG9zZShkZWNvbXBvc2l0aW9uKTsKIH0KIAotYm9vbCBTVkdSZW5kZXJpbmdDb250ZXh0OjpidWZm
ZXJGb3JlZ3JvdW5kKE93blB0cjxJbWFnZUJ1ZmZlcj4mIGltYWdlQnVmZmVyKQorYm9vbCBTVkdS
ZW5kZXJpbmdDb250ZXh0OjpidWZmZXJGb3JlZ3JvdW5kKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1
ZmZlcj4mIGltYWdlQnVmZmVyKQogewogICAgIEFTU0VSVChtX3BhaW50SW5mbyk7CiAgICAgQVNT
RVJUKG1fcmVuZGVyZXItPmlzU1ZHSW1hZ2UoKSk7CkBAIC0zMzgsNyArMzM4LDcgQEAgYm9vbCBT
VkdSZW5kZXJpbmdDb250ZXh0OjpidWZmZXJGb3JlZ3JvdW5kKE93blB0cjxJbWFnZUJ1ZmZlcj4m
IGltYWdlQnVmZmVyKQogICAgICAgICBJbnRTaXplIGV4cGFuZGVkQm91bmRpbmdCb3ggPSBleHBh
bmRlZEludFNpemUoYm91bmRpbmdCb3guc2l6ZSgpKTsKICAgICAgICAgSW50U2l6ZSBidWZmZXJT
aXplKHN0YXRpY19jYXN0PGludD4oY2VpbChleHBhbmRlZEJvdW5kaW5nQm94LndpZHRoKCkgKiB0
cmFuc2Zvcm0ueFNjYWxlKCkpKSwgc3RhdGljX2Nhc3Q8aW50PihjZWlsKGV4cGFuZGVkQm91bmRp
bmdCb3guaGVpZ2h0KCkgKiB0cmFuc2Zvcm0ueVNjYWxlKCkpKSk7CiAgICAgICAgIGlmIChidWZm
ZXJTaXplICE9IGltYWdlQnVmZmVyLT5pbnRlcm5hbFNpemUoKSkKLSAgICAgICAgICAgIGltYWdl
QnVmZmVyLmNsZWFyKCk7CisgICAgICAgICAgICBpbWFnZUJ1ZmZlci5yZXNldCgpOwogICAgIH0K
IAogICAgIC8vIENyZWF0ZSBhIG5ldyBidWZmZXIgYW5kIHBhaW50IHRoZSBmb3JlZ3JvdW5kIGlu
dG8gaXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRl
cmluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5n
Q29udGV4dC5oCmluZGV4IDJkYTcwY2Q4NmJkNzUwOTkyMWY0MmMxOGIzNzNlMjFkNzA3OTRmYTUu
LmY2ZDhjZjdiN2M2ZjFmN2IwZTgwYzBkYzg4MmNkNmY3MWIzMGJkMTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5oCkBAIC03Niwx
MiArNzYsMTIgQEAgcHVibGljOgogICAgIHZvaWQgcHJlcGFyZVRvUmVuZGVyU1ZHQ29udGVudChS
ZW5kZXJFbGVtZW50JiwgUGFpbnRJbmZvJiwgTmVlZHNHcmFwaGljc0NvbnRleHRTYXZlID0gRG9u
dFNhdmVHcmFwaGljc0NvbnRleHQpOwogICAgIGJvb2wgaXNSZW5kZXJpbmdQcmVwYXJlZCgpIGNv
bnN0IHsgcmV0dXJuIG1fcmVuZGVyaW5nRmxhZ3MgJiBSZW5kZXJpbmdQcmVwYXJlZDsgfQogCi0g
ICAgc3RhdGljIGJvb2wgY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRSZWN0JiBwYWludFJl
Y3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgYWJzb2x1dGVUcmFuc2Zvcm0sIE93blB0cjxJbWFn
ZUJ1ZmZlcj4mLCBDb2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlKTsKKyAgICBzdGF0aWMgYm9vbCBj
cmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHBhaW50UmVjdCwgY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiBhYnNvbHV0ZVRyYW5zZm9ybSwgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVy
PiYsIENvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGUpOwogICAgIC8vIFBhdHRlcm5zIG5lZWQgYSBk
aWZmZXJlbnQgZmxvYXQtdG8taW50ZWdlciBjb29yZGluYXRlIG1hcHBpbmcuCi0gICAgc3RhdGlj
IGJvb2wgY3JlYXRlSW1hZ2VCdWZmZXJGb3JQYXR0ZXJuKGNvbnN0IEZsb2F0UmVjdCYgYWJzb2x1
dGVUYXJnZXRSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGNsYW1wZWRBYnNvbHV0ZVRhcmdldFJlY3Qs
IE93blB0cjxJbWFnZUJ1ZmZlcj4mLCBDb2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlKTsKKyAgICBz
dGF0aWMgYm9vbCBjcmVhdGVJbWFnZUJ1ZmZlckZvclBhdHRlcm4oY29uc3QgRmxvYXRSZWN0JiBh
YnNvbHV0ZVRhcmdldFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgY2xhbXBlZEFic29sdXRlVGFyZ2V0
UmVjdCwgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiYsIENvbG9yU3BhY2UsIFJlbmRlcmlu
Z01vZGUpOwogCiAgICAgc3RhdGljIHZvaWQgcmVuZGVyU3VidHJlZVRvSW1hZ2VCdWZmZXIoSW1h
Z2VCdWZmZXIqLCBSZW5kZXJFbGVtZW50JiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJik7Ci0gICAg
c3RhdGljIHZvaWQgY2xpcFRvSW1hZ2VCdWZmZXIoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgQWZm
aW5lVHJhbnNmb3JtJiBhYnNvbHV0ZVRyYW5zZm9ybSwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRS
ZWN0LCBPd25QdHI8SW1hZ2VCdWZmZXI+JiwgYm9vbCBzYWZlVG9DbGVhcik7CisgICAgc3RhdGlj
IHZvaWQgY2xpcFRvSW1hZ2VCdWZmZXIoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiBhYnNvbHV0ZVRyYW5zZm9ybSwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBz
dGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+JiwgYm9vbCBzYWZlVG9DbGVhcik7CiAKICAgICBz
dGF0aWMgZmxvYXQgY2FsY3VsYXRlU2NyZWVuRm9udFNpemVTY2FsaW5nRmFjdG9yKGNvbnN0IFJl
bmRlck9iamVjdCopOwogICAgIHN0YXRpYyB2b2lkIGNhbGN1bGF0ZVRyYW5zZm9ybWF0aW9uVG9P
dXRlcm1vc3RDb29yZGluYXRlU3lzdGVtKGNvbnN0IFJlbmRlck9iamVjdCosIEFmZmluZVRyYW5z
Zm9ybSYgYWJzb2x1dGVUcmFuc2Zvcm0pOwpAQCAtOTUsNyArOTUsNyBAQCBwdWJsaWM6CiAgICAg
fQogCiAgICAgLy8gU3VwcG9ydCBmb3IgdGhlIGJ1ZmZlcmVkLXJlbmRlcmluZyBoaW50LgotICAg
IGJvb2wgYnVmZmVyRm9yZWdyb3VuZChPd25QdHI8SW1hZ2VCdWZmZXI+Jik7CisgICAgYm9vbCBi
dWZmZXJGb3JlZ3JvdW5kKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4mKTsKIAogcHJpdmF0
ZToKICAgICAvLyBUbyBwcm9wZXJseSByZXZlcnQgcGFydGlhbGx5IHN1Y2Nlc3NmdWwgaW5pdGlh
bGl6dGlvbnMgaW4gdGhlIGRlc3RydWN0b3IsIHdlIHJlY29yZCBhbGwgc3VjY2Vzc2Z1bCBzdGVw
cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCmluZGV4IDUwNTk4YmJj
ZTc3Y2YwODU1Y2E1NzNmZjNjMjFkMTg0ZmViYjdmNTcuLjZkN2IyNTZmNjQ4N2E3YTFkNzYyMmZj
ZjZkMWU1YWM5YWUyNDJhOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGlj
cy9TVkdJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdl
LmNwcApAQCAtMTcwLDcgKzE3MCw3IEBAIFBhc3NOYXRpdmVJbWFnZVB0ciBTVkdJbWFnZTo6bmF0
aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKQogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1
cm4gMDsKIAotICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNy
ZWF0ZShzaXplKCksIDEpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gYnVmZmVy
ID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplKCksIDEpOwogICAgIGlmICghYnVmZmVyKSAvLyBm
YWlsZWQgdG8gYWxsb2NhdGUgaW1hZ2UKICAgICAgICAgcmV0dXJuIDA7CiAKQEAgLTE5Niw3ICsx
OTYsNyBAQCB2b2lkIFNWR0ltYWdlOjpkcmF3UGF0dGVybkZvckNvbnRhaW5lcihHcmFwaGljc0Nv
bnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0U2l6ZQogICAgIEZsb2F0UmVjdCBpbWFnZUJ1ZmZl
clNpemUgPSB6b29tZWRDb250YWluZXJSZWN0OwogICAgIGltYWdlQnVmZmVyU2l6ZS5zY2FsZShp
bWFnZUJ1ZmZlclNjYWxlLndpZHRoKCksIGltYWdlQnVmZmVyU2NhbGUuaGVpZ2h0KCkpOwogCi0g
ICAgT3duUHRyPEltYWdlQnVmZmVyPiBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGV4cGFu
ZGVkSW50U2l6ZShpbWFnZUJ1ZmZlclNpemUuc2l6ZSgpKSwgMSk7CisgICAgc3RkOjp1bmlxdWVf
cHRyPEltYWdlQnVmZmVyPiBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGV4cGFuZGVkSW50
U2l6ZShpbWFnZUJ1ZmZlclNpemUuc2l6ZSgpKSwgMSk7CiAgICAgaWYgKCFidWZmZXIpIC8vIEZh
aWxlZCB0byBhbGxvY2F0ZSBidWZmZXIuCiAgICAgICAgIHJldHVybjsKICAgICBkcmF3Rm9yQ29u
dGFpbmVyKGJ1ZmZlci0+Y29udGV4dCgpLCBjb250YWluZXJTaXplLCB6b29tLCBpbWFnZUJ1ZmZl
clNpemUsIHpvb21lZENvbnRhaW5lclJlY3QsIENvbG9yU3BhY2VEZXZpY2VSR0IsIENvbXBvc2l0
ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZU5vcm1hbCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>