<?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>159721</bug_id>
          
          <creation_ts>2016-07-13 09:22:05 -0700</creation_ts>
          <short_desc>Get rid of the m_premultiplyAlpha flag of the ImageFrame class</short_desc>
          <delta_ts>2016-09-13 13:58:34 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Images</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>159699</dependson>
          <blocked>155322</blocked>
    
    <blocked>159795</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Said Abou-Hallawa">sabouhallawa</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1210483</commentid>
    <comment_count>0</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-07-13 09:22:05 -0700</bug_when>
    <thetext>This flag was only needed when calling BitmapPixels::setSize(). Instead we can pass the ImageDecoder::m_premultiplyAlpha to ImageFrame::setSize() which will pass it to BitmapPixels::setSize().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1210487</commentid>
    <comment_count>1</comment_count>
      <attachid>283537</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-07-13 09:30:56 -0700</bug_when>
    <thetext>Created attachment 283537
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1210581</commentid>
    <comment_count>2</comment_count>
      <attachid>283557</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-07-13 12:19:10 -0700</bug_when>
    <thetext>Created attachment 283557
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1210699</commentid>
    <comment_count>3</comment_count>
      <attachid>283565</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-07-13 14:32:10 -0700</bug_when>
    <thetext>Created attachment 283565
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1210722</commentid>
    <comment_count>4</comment_count>
      <attachid>283569</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-07-13 14:50:18 -0700</bug_when>
    <thetext>Created attachment 283569
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1210731</commentid>
    <comment_count>5</comment_count>
      <attachid>283571</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-07-13 14:55:08 -0700</bug_when>
    <thetext>Created attachment 283571
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1210745</commentid>
    <comment_count>6</comment_count>
      <attachid>283577</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-07-13 15:04:53 -0700</bug_when>
    <thetext>Created attachment 283577
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1210748</commentid>
    <comment_count>7</comment_count>
      <attachid>283578</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-07-13 15:20:04 -0700</bug_when>
    <thetext>Created attachment 283578
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1210752</commentid>
    <comment_count>8</comment_count>
      <attachid>283580</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-07-13 15:31:08 -0700</bug_when>
    <thetext>Created attachment 283580
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1210787</commentid>
    <comment_count>9</comment_count>
      <attachid>283589</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-07-13 17:04:58 -0700</bug_when>
    <thetext>Created attachment 283589
Patch for review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1229004</commentid>
    <comment_count>10</comment_count>
      <attachid>288644</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-09-12 17:11:25 -0700</bug_when>
    <thetext>Created attachment 288644
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1229005</commentid>
    <comment_count>11</comment_count>
      <attachid>288644</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-09-12 17:13:46 -0700</bug_when>
    <thetext>Comment on attachment 288644
Patch

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

&gt; Source/WebCore/ChangeLog:10
&gt; +        This flag was only needed when calling ImageBackingStore::setSize(). Instead
&gt; +        we can pass the ImageDecoder::m_premultiplyAlpha to ImageFrame::setSize()
&gt; +        which will pass it to ImageBackingStore::setSize().

Why does setting the size care about premultiplied alpha?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1229096</commentid>
    <comment_count>12</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-09-12 23:27:14 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; Comment on attachment 288644 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=288644&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:10
&gt; &gt; +        This flag was only needed when calling ImageBackingStore::setSize(). Instead
&gt; &gt; +        we can pass the ImageDecoder::m_premultiplyAlpha to ImageFrame::setSize()
&gt; &gt; +        which will pass it to ImageBackingStore::setSize().
&gt; 
&gt; Why does setting the size care about premultiplied alpha?

It doesn&apos;t, I think it&apos;s because we only want the m_premultiplyAlpha to be passed to the ImageBackingStore constructor and ImageBackingStore is created in setSize().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1229097</commentid>
    <comment_count>13</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-09-12 23:42:46 -0700</bug_when>
    <thetext>I agree that passing premultiplyAlpha to setSize() is weird from the API point of view. But also because setSize() is weird as it is implemented. It can&apos;t be called if the ImageFrame already has a backing store, and it always creates a new  ImageBackingStore. So, maybe if we rename the method as initializeBackingStore or simply initialize() it makes more sense to pass a size and premultiplyalpha as initialization parameters. We could probably rename copyBitmapData() also as initialize(). Another possibility (in addition to the rename that I think we should do anyway, because setSize and copyBitmapData are confusing), would be to let the decoder pass premultiplyAlpha to setPixel and blendPixel methods, that would just pass it to the backing store, since those are the only methods needing it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1229197</commentid>
    <comment_count>14</comment_count>
      <attachid>288695</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-09-13 10:32:44 -0700</bug_when>
    <thetext>Created attachment 288695
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1229199</commentid>
    <comment_count>15</comment_count>
      <attachid>288696</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-09-13 10:43:39 -0700</bug_when>
    <thetext>Created attachment 288696
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1229202</commentid>
    <comment_count>16</comment_count>
      <attachid>288697</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-09-13 10:51:19 -0700</bug_when>
    <thetext>Created attachment 288697
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1229204</commentid>
    <comment_count>17</comment_count>
      <attachid>288698</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-09-13 10:55:11 -0700</bug_when>
    <thetext>Created attachment 288698
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1229233</commentid>
    <comment_count>18</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-09-13 11:43:01 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; I agree that passing premultiplyAlpha to setSize() is weird from the API
&gt; point of view. But also because setSize() is weird as it is implemented. It
&gt; can&apos;t be called if the ImageFrame already has a backing store, and it always
&gt; creates a new  ImageBackingStore. So, maybe if we rename the method as
&gt; initializeBackingStore or simply initialize() it makes more sense to pass a
&gt; size and premultiplyalpha as initialization parameters. We could probably
&gt; rename copyBitmapData() also as initialize().

I like this suggestion. I renamed setSize() and copyBitmapData() to initializeBackingStore(). I preferred it over initialize() because ImageFrame will be shared between CG and non-CG code and initialize() is very generic name. Calling initializeBackingStore() makes it clearer that we want to initialize the backing store only which is only needed by non CG ports.

&gt; Another possibility (in
&gt; addition to the rename that I think we should do anyway, because setSize and
&gt; copyBitmapData are confusing), would be to let the decoder pass
&gt; premultiplyAlpha to setPixel and blendPixel methods, that would just pass it
&gt; to the backing store, since those are the only methods needing it.

I am not sure about this suggestion. It can actually make creating the backing store simpler and can make setPixel() and blendPixel() static or even global functions. But having the backing store not aware whether its pixels are premultiplied or not, seems weird to me. Anyway this seems a big change and I can do it in a separate patch if we need it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1229236</commentid>
    <comment_count>19</comment_count>
      <attachid>288698</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-09-13 11:52:57 -0700</bug_when>
    <thetext>Comment on attachment 288698
Patch

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

&gt; Source/WebCore/ChangeLog:10
&gt; +        to ImageFrame::setSize(), which should be renamed ImageFrame::initializeBackingStore().

s/should be/is/

&gt; Source/WebCore/platform/image-decoders/ImageDecoder.cpp:179
&gt; +    if (!backingStore)
&gt; +        return false;

Should backingStore just be a reference instead?

&gt; Source/WebCore/platform/image-decoders/ImageDecoder.h:174
&gt; +        bool premultiplyAlpha() const { return m_premultiplyAlpha; }

premultipiesAlpha()?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1229263</commentid>
    <comment_count>20</comment_count>
      <attachid>288717</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-09-13 12:41:41 -0700</bug_when>
    <thetext>Created attachment 288717
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1229268</commentid>
    <comment_count>21</comment_count>
      <attachid>288719</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-09-13 12:54:23 -0700</bug_when>
    <thetext>Created attachment 288719
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1229303</commentid>
    <comment_count>22</comment_count>
      <attachid>288719</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-13 13:58:28 -0700</bug_when>
    <thetext>Comment on attachment 288719
Patch

Clearing flags on attachment: 288719

Committed r205877: &lt;http://trac.webkit.org/changeset/205877&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1229304</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-13 13:58:34 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>283537</attachid>
            <date>2016-07-13 09:30:56 -0700</date>
            <delta_ts>2016-07-13 12:19:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159721-20160713093011.patch</filename>
            <type>text/plain</type>
            <size>170170</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzMTAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWM1YmQ5YmQwNmExOWJl
NWNhMDJjNTE3MmQ2ZWYyZWJiZmVjMWMxOS4uZGVkOTE0MjFjNWM0OWE3ODNkZGFhNDAzOTgyN2Nl
MGYwNWYzOTI5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5MSBAQAorMjAxNi0wNy0xMyAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIEdldCBy
aWQgb2YgdGhlIG1fcHJlbXVsdGlwbHlBbHBoYSBmbGFnIG9mIHRoZSBJbWFnZUZyYW1lIGNsYXNz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTk3MjEK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUZyYW1lOjpvcGVyYXRvcj0pOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6Y29w
eUJpdG1hcERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVj
b2Rlci5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpzZXRTaXplKToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6aXNPdmVyU2l6ZSk6CisgICAgICAgICogcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpCTVBJbWFnZURlY29kZXI6OmZyYW1lQnVmZmVyQXRJbmRleCk6IERlbGV0ZWQuCisgICAg
ICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVhZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkJNUEltYWdlUmVhZGVyOjpkZWNvZGVCTVApOgorICAgICAgICAoV2Vi
Q29yZTo6Qk1QSW1hZ2VSZWFkZXI6OnByb2Nlc3NJbmZvSGVhZGVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkdJRkltYWdlRGVjb2Rlcjo6aW5pdEZyYW1lQnVmZmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkdJRkltYWdlRGVjb2Rlcjo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJQ09J
bWFnZURlY29kZXI6OnNldFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6SUNPSW1hZ2VEZWNvZGVy
OjpmcmFtZUNvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OklDT0ltYWdlRGVjb2Rlcjo6cHJvY2Vz
c0RpcmVjdG9yeUVudHJpZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2lj
by9JQ09JbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9q
cGVnL0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlBFR0ltYWdlRGVj
b2Rlcjo6c2V0U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpKUEVHSW1hZ2VEZWNvZGVyOjpmcmFt
ZUJ1ZmZlckF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SlBFR0ltYWdlRGVjb2Rlcjo6b3V0
cHV0U2NhbmxpbmVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQ
RUdJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcv
UE5HSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBOR0ltYWdlRGVjb2Rlcjo6
c2V0U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpQTkdJbWFnZURlY29kZXI6OmZyYW1lQnVmZmVy
QXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpQTkdJbWFnZURlY29kZXI6OmhlYWRlckF2YWls
YWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpQTkdJbWFnZURlY29kZXI6OnJvd0F2YWlsYWJsZSk6
CisgICAgICAgIChXZWJDb3JlOjpQTkdJbWFnZURlY29kZXI6OnJlYWRDaHVua3MpOgorICAgICAg
ICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V0VCUEltYWdlRGVjb2Rlcjo6ZnJhbWVCdWZmZXJBdEluZGV4KToK
KyAgICAgICAgKFdlYkNvcmU6OldFQlBJbWFnZURlY29kZXI6OmRlY29kZSk6CisKKzIwMTYtMDct
MTIgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAg
ICBHZXQgcmlkIG9mIHRoZSBjb2xvciBwcm9maWxlIGZyb20gSW1hZ2VGcmFtZSBhbmQgSW1hZ2VE
ZWNvZGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NTk2OTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUZyYW1lOjpzZXRDb2xvclByb2ZpbGUpOiBEZWxldGVkLgorICAgICAgICAqIHBs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpyZWFkQ29sb3JQcm9maWxlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkpQRUdJbWFnZVJlYWRlcjo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlYWRD
b2xvclByb2ZpbGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UE5HSW1hZ2VEZWNvZGVy
OjpoZWFkZXJBdmFpbGFibGUpOiBEZWxldGVkLgorCisyMDE2LTA3LTEyICBTYWlkIEFib3UtSGFs
bGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgU3BsaXQgdGhlIHBpeGVs
IGRhdGEgb2YgSW1hZ2VGcmFtZSB0byBhIHNlcGFyYXRlIGNsYXNzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTk2NzkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIHRoZSBwaXhlbCBkYXRhIG1hbmlw
dWxhdGlvbiBwYXJ0IGluIEltYWdlRnJhbWUgaW50byBhIHNlcGFyYXRlIGNsYXNzCisgICAgICAg
IGFuZCB0aGVuIG1ha2UgaXQgb3B0aW9uYWwgKGFsbG9jYXRlZCBvbiBkZW1hbmQpLgorCisgICAg
ICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAg
ICAgICogUGxhdGZvcm1HVEsuY21ha2U6CisgICAgICAgICogUGxhdGZvcm1XaW5DYWlyby5jbWFr
ZToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwUGl4ZWxzLmg6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6Qml0bWFwUGl4ZWxzOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwUGl4
ZWxzOjpCaXRtYXBQaXhlbHMpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwUGl4ZWxzOjp3aWR0
aCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBQaXhlbHM6OmhlaWdodCk6CisgICAgICAgIChX
ZWJDb3JlOjpCaXRtYXBQaXhlbHM6OnNldFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFw
UGl4ZWxzOjphdCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBQaXhlbHM6OmNsZWFyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkJpdG1hcFBpeGVsczo6Y2xlYXJSZWN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkJpdG1hcFBpeGVsczo6cmVwZWF0Rmlyc3RSb3cpOgorICAgICAgICAoV2ViQ29yZTo6Qml0
bWFwUGl4ZWxzOjpzZXRSR0JBKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFBpeGVsczo6b3Zl
clJHQkEpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwUGl4ZWxzOjppbkJvdW5kcyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bXVs
dGlwbHkyNTUpOgorICAgICAgICAoV2ViQ29yZTo6ZGl2aWRlMjU1KToKKyAgICAgICAgKFdlYkNv
cmU6OmRpdmlkZUNlaWwpOgorICAgICAgICAoV2ViQ29yZTo6cHJlbXVsdGlwbGllZENoYW5uZWwp
OgorICAgICAgICAoV2ViQ29yZTo6dW5wcmVtdWx0aXBsaWVkQ2hhbm5lbCk6CisgICAgICAgIChX
ZWJDb3JlOjptYWtlUHJlbXVsdGlwbGllZFJHQkEpOgorICAgICAgICAoV2ViQ29yZTo6bWFrZVVu
UHJlbXVsdGlwbGllZFJHQkEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZURhdGEuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlRnJhbWVEYXRhOjpwaXhlbHMpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VGcmFtZURhdGE6Omhhc1BpeGVscyk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6Om9wZXJh
dG9yPSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpjbGVhclBpeGVsRGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjp6ZXJvRmlsbFBpeGVsRGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUZyYW1lOjp6ZXJvRmlsbEZyYW1lUmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUZyYW1lOjpjb3B5Qml0bWFwRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUZyYW1lOjpzZXRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OmNvcHlSb3dO
VGltZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5o
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6YXNOZXdOYXRpdmVJbWFnZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpzZXRSR0JBKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlRnJhbWU6OmdldEFkZHIpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6aGFzUGl4
ZWxEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6Om92ZXJSR0JBKToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OndpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
RnJhbWU6OmhlaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpjb3B5Um93TlRp
bWVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OmZpeFBvaW50VW5z
aWduZWRNdWx0aXBseSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpk
aXZpZGUyNTUpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2Jt
cC9CTVBJbWFnZVJlYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCTVBJbWFnZVJlYWRlcjo6
ZGVjb2RlQk1QKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9CaXRt
YXBQaXhlbHNDYWlyby5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZURlY29kZXJDYWlyby5jcHAuCisgICAgICAgIChXZWJD
b3JlOjpCaXRtYXBQaXhlbHM6OmltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdJRkltYWdl
RGVjb2Rlcjo6aGF2ZURlY29kZWRSb3cpOgorICAgICAgICAoV2ViQ29yZTo6R0lGSW1hZ2VEZWNv
ZGVyOjpmcmFtZUNvbXBsZXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdJRkltYWdlRGVjb2Rlcjo6
aW5pdEZyYW1lQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVn
L0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0UGl4ZWwpOgorICAg
ICAgICAoV2ViQ29yZTo6SlBFR0ltYWdlRGVjb2Rlcjo6b3V0cHV0U2NhbmxpbmVzKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnNldFBpeGVsUkdCKToKKyAgICAgICAgKFdlYkNvcmU6OnNldFBpeGVs
UkdCQSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRQaXhlbFByZW11bHRpcGxpZWRSR0JBKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBOR0ltYWdlRGVjb2Rlcjo6cm93QXZhaWxhYmxlKToKKyAgICAgICAg
KFdlYkNvcmU6OlBOR0ltYWdlRGVjb2Rlcjo6aW5pdEZyYW1lQnVmZmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlBOR0ltYWdlRGVjb2Rlcjo6ZnJhbWVDb21wbGV0ZSk6CisgICAgICAgICogcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldFQlBJbWFnZURlY29kZXI6OmRlY29kZSk6CisKKzIwMTYtMDctMTEgIFNhaWQgQWJv
dS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLGNvbT4KKworICAgICAgICBSZW5hbWUgRnJh
bWVEYXRhIHRvIEltYWdlRnJhbWVEYXRhIGFuZCBtb3ZlIGl0IHRvIGEgc2VwYXJhdGUgZmlsZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1NDQ0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSBJbWFn
ZUZyYW1lRGF0YSB0byBhIHNlcGFyYXRlIGZpbGUgc28gaXQgY2FuIGJlIGNhY2hlZCBieSBJbWFn
ZVNvdXJjZQorICAgICAgICBhbmQgd2lsbCBzdGlsbCBiZSBjb25zdW1lZCBieSBCaXRtYXBJbWFn
ZS4gTWFrZSB0aGUgZGF0YSBtZW1iZXJzIG9mIEltYWdlRnJhbWVEYXRhCisgICAgICAgIGJlIHBy
aXZhdGUgYW5kIGFkZCBnZXR0ZXJzIHRvIHJldHVybiB0aGVpciB2YWx1ZXMuCisKKyAgICAgICAg
Tm8gbmV3IHRlc3RzIC0tIENvZGUgcmVmYWN0b3JpbmcsIG5vIGJlaGF2aW9yIGNoYW5nZS4KKwor
ICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmhhdmVGcmFtZUltYWdlQXRJbmRleCk6CisgICAgICAg
IChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZGVzdHJveURlY29kZWREYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OkJpdG1hcEltYWdlOjpkZXN0cm95RGVjb2RlZERhdGFJZk5lY2Vzc2FyeSk6CisgICAg
ICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Y2FjaGVGcmFtZSk6CisgICAgICAgIChXZWJDb3Jl
OjpCaXRtYXBJbWFnZTo6ZGF0YUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1h
Z2U6OmVuc3VyZUZyYW1lSXNDYWNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6
OmZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpmcmFt
ZUlzQ29tcGxldGVBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpmcmFt
ZUR1cmF0aW9uQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZnJhbWVI
YXNBbHBoYUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmZyYW1lT3Jp
ZW50YXRpb25BdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpzaW5nbGVQ
aXhlbFNvbGlkQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmlzQWxtb3N0
U29saWRDb2xvcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lRGF0YTo6RnJhbWVEYXRhKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lRGF0YTo6fkZyYW1lRGF0YSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZURhdGE6OnVzZWRGcmFtZUJ5dGVzKTogRGVsZXRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZVNvdXJjZTo6Y3JlYXRlRnJhbWVEYXRhQXRJbmRleCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VTb3VyY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pbWFnZUZy
YW1lRGF0YS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6Oklt
YWdlRnJhbWVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVEYXRhOjp+SW1hZ2VG
cmFtZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6OmNsZWFyU3ViSW1h
Z2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVEYXRhOjpjbGVhcik6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6c2luZ2xlUGl4ZWxTb2xpZENvbG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlRnJhbWVEYXRhOjppc0FsbW9zdFNvbGlkQ29sb3IpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ltYWdlRnJhbWVEYXRhLmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6OnN0YXR1cyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUZyYW1lRGF0YTo6aXNDb21wbGV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0
YTo6c2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6ZnJhbWVCeXRlcyk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6aW1hZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VGcmFtZURhdGE6Om9yaWVudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlRnJhbWVEYXRhOjpzdWJzYW1wbGluZ0xldmVsKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
RnJhbWVEYXRhOjpkdXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6
aGFzQWxwaGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6Omhhc0ltYWdlKToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVEYXRhOjpoYXNNZXRhZGF0YSk6CisKKzIwMTYt
MDYtMjQgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLGNvbT4KKworICAg
ICAgICBJbnRyb2R1Y2UgUGxhdGZvcm1JbWFnZSBhbmQgbWFrZSBpdCBpcyBhIHdyYXBwZXIgZm9y
IE5hdGl2ZUltYWdlUHRyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNTg2ODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGUgbWFpbiBwdXJwb3NlIG9mIHRoaXMgcmVmYWN0b3JpbmcgaXMgdG8gbW92ZSB0
aGUgcGxhdGZvcm0gaW1hZ2UgZGVwZW5kZW50CisgICAgICAgIGNvZGUgZnJvbSBCaXRtYXBJbWFn
ZSB0byBQbGF0Zm9ybUltYWdlLiBQbGF0Zm9ybUltYWdlIGlzIHJlc3BvbnNpYmxlIG9mIAorICAg
ICAgICBkcmF3aW5nIHRoZSBpbWFnZSBhbmQgYW5zd2VyaW5nIE5hdGl2ZUltYWdlUHRyIHF1ZXN0
aW9ucyB3aGVuIGFuIEltYWdlRGVjb2RlcgorICAgICAgICBpcyBub3QgYXZhaWxhYmxlLiBBcGFy
dCBmcm9tIGRyYXdpbmcgdGhlIGltYWdlLCB0aGUgcXVlcnkgZnVuY3Rpb25zIHdpbGwgYmUKKyAg
ICAgICAgY2FsbGVkIG9ubHkgd2hlbiBjb25zdHJ1Y3RpbmcgYSBGcmFtZURhdGEgc28gd2Ugd2ls
bCBrZWVwIGV2ZXJ5dGhpbmcgYXMgYQorICAgICAgICBOYXRpdmVJbWFnZVB0ci4gQnV0IHdlIHdp
bGwgY2FzdCB0aGUgTmF0aXZlSW1hZ2VQdHIgdG8gUGxhdGZvcm1JbWFnZSB3aGVuCisgICAgICAg
IGEgcGxhdGZvcm0gZGVwZW5kZW50IGZ1bmN0aW9uIGlzIG5lZWRlZC4KKworICAgICAgICBObyBu
ZXcgdGVzdHMgLS0gQ29kZSByZWZhY3RvcmluZywgbm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAg
ICAgICogUGxhdGZvcm1BcHBsZVdpbi5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFr
ZToKKyAgICAgICAgKiBQbGF0Zm9ybUdUSy5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybU1hYy5j
bWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybVdpbkNhaXJvLmNtYWtlOgorICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL0RP
TS5tbToKKyAgICAgICAgKC1bRE9NTm9kZSBnZXRQcmV2aWV3U25hcHNob3RJbWFnZTphbmRSZWN0
czpdKToKKyAgICAgICAgKiBwYWdlL21hYy9UZXh0SW5kaWNhdG9yV2luZG93Lm1tOgorICAgICAg
ICAoLVtXZWJUZXh0SW5kaWNhdG9yVmlldyBpbml0V2l0aEZyYW1lOnRleHRJbmRpY2F0b3I6bWFy
Z2luOm9mZnNldDpdKToKKyAgICAgICAgKGNyZWF0ZUNvbnRlbnRDcm9zc2ZhZGVBbmltYXRpb24p
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpC
aXRtYXBJbWFnZTo6ZGVzdHJveURlY29kZWREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1h
cEltYWdlOjpkZXN0cm95RGVjb2RlZERhdGFJZk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJDb3Jl
OjpCaXRtYXBJbWFnZTo6ZGF0YUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1h
Z2U6OmZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpu
YXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VP
ZlNpemUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3Vy
cmVudEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpmcmFtZXNOYXRpdmVJ
bWFnZXMpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OnNpbmdsZVBpeGVsU29saWRD
b2xvcik6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6aXNBbG1vc3RTb2xpZENvbG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVEYXRh
OjpGcmFtZURhdGEpOgorICAgICAgICBtX2hhc0FscGhhIGNhbiBiZSBpbml0aWFsaXplZCB3aXRo
IGZhbHNlIGJlY2F1c2UgaXQgaXMgYWNjZXNzZWQgb25seSBpbgorICAgICAgICBCaXRtYXBJbWFn
ZTo6ZnJhbWVIYXNBbHBoYUF0SW5kZXgoKSBhbmQgaXQgaXMgZ3VhcmRlZCBieSBtX2hhdmVNZXRh
ZGF0YS4KKyAgICAgICAgQm90aCBtX2hhdmVNZXRhZGF0YSBhbmQgbV9oYXNBbHBoYSBhcmUgc2V0
IGluIEJpdG1hcEltYWdlIGNvbnN0cnVjdG9yCisgICAgICAgIGFuZCBpbiBCaXRtYXBJbWFnZTo6
Y2FjaGVGcmFtZSgpLgorCisgICAgICAgIChXZWJDb3JlOjpGcmFtZURhdGE6On5GcmFtZURhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVEYXRhOjpjbGVhcik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpuYXRpdmVJbWFn
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6bmF0aXZlSW1hZ2VPZlNpemUpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2U6OmZyYW1lc05hdGl2ZUltYWdlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZTo6Z2V0Q0dJbWFnZVJlZik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZTo6Z2V0Rmlyc3RDR0ltYWdlUmVmT2ZTaXplKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlOjpnZXRDR0ltYWdlQXJyYXkpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL1BsYXRmb3JtSW1hZ2UuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9y
bUltYWdlOjpQbGF0Zm9ybUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtSW1hZ2U6
OmlzTmlsKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtSW1hZ2U6OmNnSW1hZ2VSZWYpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dXBkYXRlRGlzcGxheU1vZGUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtSW1hZ2VDYWlyby5jcHA6IFJlbmFt
ZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFn
ZUNhaXJvLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtSW1hZ2U6OmNsZWFyU3ViSW1h
Z2VzKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtSW1hZ2U6OnNpemUpOgorICAgICAgICAo
V2ViQ29yZTo6UGxhdGZvcm1JbWFnZTo6aGFzQWxwaGEpOgorICAgICAgICAoV2ViQ29yZTo6UGxh
dGZvcm1JbWFnZTo6c2luZ2xlUGl4ZWxTb2xpZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlBs
YXRmb3JtSW1hZ2U6OmlzQWxtb3N0U29saWRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpQbGF0
Zm9ybUltYWdlOjpzdWJzYW1wbGluZ1NjYWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
SW1hZ2U6OmRyYXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdl
Q0cuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5D
Ry5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXR0ZXJuOjpjcmVhdGVQbGF0Zm9ybVBhdHRlcm4p
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1BsYXRmb3JtSW1hZ2VDRy5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1JbWFnZTo6Y2xlYXJTdWJJbWFnZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1JbWFnZTo6c2l6ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybUltYWdlOjpoYXNBbHBoYSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUlt
YWdlOjpzaW5nbGVQaXhlbFNvbGlkQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1J
bWFnZTo6aXNBbG1vc3RTb2xpZENvbG9yKTogTW92ZWQgZnJvbSBQbHVnaW5WaWV3LmNwcCBzaW5j
ZSBQbGF0Zm9ybUltYWdlIGlzIHdoYXQgdGhpcyBmdW5jdGlvbiBiZWxvbmdzIHRvLgorICAgICAg
ICAoV2ViQ29yZTo6UGxhdGZvcm1JbWFnZTo6c3Vic2FtcGxpbmdTY2FsZSk6IFJldHVybnMgdGhl
IHN1Yi1zYW1wbGluZyBzY2FsZSBiYXNlZCBvbiB0aGUgY29udGV4dCBzY2FsaW5nLgorICAgICAg
ICAoV2ViQ29yZTo6UGxhdGZvcm1JbWFnZTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvVGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYS5tbToKKyAgICAgICAgKFRl
eHRUcmFja1JlcHJlc2VudGF0aW9uQ29jb2E6OnVwZGF0ZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6
OmdldFRJRkZSZXByZXNlbnRhdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6TW9j
a1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWM6OnVwZGF0ZVBsYXRmb3JtTGF5ZXIpOgorICAgICAgICAq
IHBsYXRmb3JtL3dpbi9EcmFnSW1hZ2VDR1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVh
dGVEcmFnSW1hZ2VGcm9tSW1hZ2UpOgorCiAyMDE2LTA3LTExICBTYW0gV2VpbmlnICA8c2FtQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgU3BlZWNoIFN5bnRoZXNpczogZ2V0dGluZyBsaXN0IG9mIHZv
aWNlcyBubyBsb25nZXIgd29ya3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCBjMWJjMGJiZGUzNjEyNWM0
NjJiZjQ4MWRkYWQ1ZGQyZjgyN2Q1MjM5Li4xOGQxZWJlYmVlOTIwYjJmMjllZjMyODc3ZGVkMmUx
ZWNmZjk3ZDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTYtMDctMTEg
IFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLGNvbT4KKworICAgICAgICBJ
bnRyb2R1Y2UgUGxhdGZvcm1JbWFnZSBhbmQgbWFrZSBpdCBpcyBhIHdyYXBwZXIgZm9yIE5hdGl2
ZUltYWdlUHRyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTg2ODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIE1pc2MvV2ViQ2FjaGUubW06CisgICAgICAgICgrW1dlYkNhY2hlIGltYWdlRm9yVVJMOl0p
OgorCiAyMDE2LTA3LTExICBFbnJpY2EgQ2FzdWNjaSAgPGVucmljYUBhcHBsZS5jb20+CiAKICAg
ICAgICAgQWRkIHN5bnRoZXRpYyBjbGljayBvcmlnaW4gdG8gV0tOYXZpZ2F0aW9uQWN0aW9uLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCmluZGV4IGI0N2UyY2VhNzlhOGRkN2M1MzM1ZDJjZDU4ZTc5NjE1MzM1YzUwMmMuLmYx
ZjE2NzI1ODRjMGVlODE4NThhN2U5NjU1M2FjZDljZDBhYzZmZWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNSBAQAorMjAxNi0wNy0xMSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FA
YXBwbGUsY29tPgorCisgICAgICAgIEludHJvZHVjZSBQbGF0Zm9ybUltYWdlIGFuZCBtYWtlIGl0
IGlzIGEgd3JhcHBlciBmb3IgTmF0aXZlSW1hZ2VQdHIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODY4NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL2NnL1dLSWNvbkRhdGFi
YXNlQ0cuY3BwOgorICAgICAgICAoV0tJY29uRGF0YWJhc2VUcnlHZXRDR0ltYWdlRm9yVVJMKToK
KyAgICAgICAgKFdLSWNvbkRhdGFiYXNlVHJ5Q29weUNHSW1hZ2VBcnJheUZvclVSTCk6CisgICAg
ICAgIEl0IHdhcyB0aGUgb25seSBwbGFjZSBpbiB0aGUgY29kZSB3aGljaCB1c2VzIEJpdG1hcElt
YWdlOjpnZXRDR0ltYWdlQXJyYXkoKS4KKyAgICAgICAgQ2FsbCBCaXRtYXBJbWFnZTo6ZnJhbWVz
TmF0aXZlSW1hZ2VzKCkgaW5zdGVhZCBhbmQgZm9ybSB0aGUgcmV0dXJuZWQKKyAgICAgICAgVmVj
dG9yPE5hdGl2ZUltYWdlUHRyPiBidWlsZCB0aGUgQ0ZBcnJheVJlZi4KKyAgICAgICAgCisgICAg
ICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAg
ICgtW1dLQ29udGVudFZpZXcgX3ByZXNlbnRhdGlvblNuYXBzaG90Rm9yUHJldmlld0l0ZW1Db250
cm9sbGVyOl0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6cGx1Z2luU25hcHNob3RUaW1lckZpcmVkKToK
KyAgICAgICAgCisgICAgICAgIChXZWJLaXQ6OmlzQWxtb3N0U29saWRDb2xvcik6IERlbGV0ZWQu
CisgICAgICAgIE1vdmUgdGhlIHN0YXRpYyBmdW5jdGlvbiBpc0FsbW9zdFNvbGlkQ29sb3IgdG8g
UGxhdGZvcm1JbWFnZTo6aXNBbG1vc3RTb2xpZENvbG9yKCkuCisKIDIwMTYtMDctMTEgIENocmlz
IER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBbV0syXVtpT1NdIEludGVybWl0
dGVudCBjcmFzaCBpbiBbVUlBcHBsaWNhdGlvbiBiZWdpbkJhY2tncm91bmRUYXNrV2l0aE5hbWVd
IGV4cGlyYXRpb24gaGFuZGxlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBlNzhiMDQyYjEwNDAx
ZTFmNGVlM2EyYWIxYTA1MmMyMThjM2ExMWUzLi4yMjZlYzliODRlNzIyZmZmM2UyZjA0ZGNlN2Ri
NzBlM2RkNGI4M2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMjIyNiw2ICsyMjI2LDcgQEAg
c2V0KFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0lTT1ZUVEN1ZS5jcHAK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZUJ1ZmZlci5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lRGF0YS5jcHAK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9yaWVudGF0aW9uLmNwcAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ludFBvaW50
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1BcHBsZVdpbi5jbWFrZSBi
L1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQXBwbGVXaW4uY21ha2UKaW5kZXggNWZmOTkxZmY3ZGEz
MDhiYjkxODJlY2UzYmYxMjE3MzBhNTQ4ZDI4Ny4uYmFlMzFlYWY4NmU3ZmNhOTA1ODI1MDkyYWEz
OGE3OGMxMWU0MjIwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1BcHBsZVdp
bi5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUFwcGxlV2luLmNtYWtlCkBAIC01
NSw3ICs1NSw2IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL2NhL3dpbi9XZWJUaWxlZEJhY2tpbmdMYXllcldpbi5jcHAKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9jYS93aW4vV0tDQUNGVmlld0xheWVyVHJlZUhvc3QuY3BwCiAKLSAgICBwbGF0Zm9y
bS9ncmFwaGljcy9jZy9CaXRtYXBJbWFnZUNHLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0NvbG9yQ0cuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvRmxvYXRQb2ludENHLmNwcAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0Zsb2F0UmVjdENHLmNwcApAQCAtNzUsNiArNzQsNyBA
QCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9Q
REZEb2N1bWVudEltYWdlLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdGhDRy5jcHAK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwCisgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvUGxhdGZvcm1JbWFnZUNHLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1N1
YmltYWdlQ2FjaGVXaXRoVGltZXIuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvVHJhbnNm
b3JtYXRpb25NYXRyaXhDRy5jcHAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZv
cm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCA1MTQ1
MDRlNmVjMjVhYTVlNDNiOTkzOThkNWUzNWNlZWVhNzY2YWE0Li42NGFlMTcxMDg5ZGNiZjBjZDQ1
YjcwYTliOGY3MGVmYTlmZmRlZGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9y
bUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtMTIy
LDcgKzEyMiw2IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL1BsYXRmb3JtRGlzcGxheS5jcHAKIAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0JhY2tpbmdTdG9yZUJhY2tlbmRDYWlyb0ltcGwuY3BwCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9D
YWlyb1V0aWxpdGllcy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fpcm8u
Y3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJvSGFyZmJ1enpORy5jcHAK
QEAgLTEzNCw2ICsxMzMsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9QYXRoQ2Fpcm8uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vUGF0dGVybkNhaXJvLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRm
b3JtQ29udGV4dENhaXJvLmNwcAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3Jt
SW1hZ2VDYWlyby5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybVBhdGhD
YWlyby5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9SZWZQdHJDYWlyby5jcHAKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9UcmFuc2Zvcm1hdGlvbk1hdHJpeENhaXJvLmNwcApA
QCAtMTc5LDkgKzE3OSw5IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL3gxMS9QbGF0Zm9ybURpc3BsYXlYMTEuY3BwCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MveDExL1hVbmlxdWVSZXNvdXJjZS5jcHAKIAotICAgIHBsYXRmb3JtL2ltYWdlLWVuY29k
ZXJzL0pQRUdJbWFnZUVuY29kZXIuY3BwCisgICAgcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvY2Fp
cm8vQml0bWFwUGl4ZWxzQ2Fpcm8uY3BwCiAKLSAgICBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9j
YWlyby9JbWFnZURlY29kZXJDYWlyby5jcHAKKyAgICBwbGF0Zm9ybS9pbWFnZS1lbmNvZGVycy9K
UEVHSW1hZ2VFbmNvZGVyLmNwcAogCiAgICAgcGxhdGZvcm0vbmV0d29yay9lZmwvTmV0d29ya1N0
YXRlTm90aWZpZXJFZmwuY3BwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3Jt
R1RLLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UKaW5kZXggNjQ1YWRk
MWNlMzg4ODhiMDRkNGEyZDg5YWRhMGE3YzZkZTE5OTg2Yi4uZDMxZjU3MDZhNjk1OWIyMzFiNWJm
YjIyZjA3ZDE4NDNhZTg2MWExZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1H
VEsuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UKQEAgLTEwMSw3
ICsxMDEsNiBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKIAogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0JhY2tpbmdTdG9yZUJhY2tlbmRDYWlyb0ltcGwuY3BwCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vQmFja2luZ1N0b3JlQmFja2VuZENhaXJvWDExLmNwcAotICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8uY3BwCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vQ2Fpcm9VdGlsaXRpZXMuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vRmxvYXRSZWN0Q2Fpcm8uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9u
dENhaXJvLmNwcApAQCAtMTE1LDYgKzExNCw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNF
UwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BhdGhDYWlyby5jcHAKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9QYXR0ZXJuQ2Fpcm8uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vUGxhdGZvcm1Db250ZXh0Q2Fpcm8uY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vUGxhdGZvcm1JbWFnZUNhaXJvLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1Bs
YXRmb3JtUGF0aENhaXJvLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1JlZlB0ckNh
aXJvLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1RyYW5zZm9ybWF0aW9uTWF0cml4
Q2Fpcm8uY3BwCkBAIC0xNDksNyArMTQ5LDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VT
CiAgICAgcGxhdGZvcm0vZ3RrL1RlbXBvcmFyeUxpbmtTdHVicy5jcHAKICAgICBwbGF0Zm9ybS9n
dGsvVXNlckFnZW50R3RrLmNwcAogCi0gICAgcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvY2Fpcm8v
SW1hZ2VEZWNvZGVyQ2Fpcm8uY3BwCisgICAgcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvY2Fpcm8v
Qml0bWFwUGl4ZWxzQ2Fpcm8uY3BwCiAKICAgICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9ndGsvU0RQ
UHJvY2Vzc29yU2NyaXB0UmVzb3VyY2VHdGsuY3BwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1BsYXRmb3JtTWFjLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UK
aW5kZXggOWY2ZjQ5NmI2Y2M0ZWY2ZTRiNzRkODRhYzBhYTlkZWE1NWEwMjM3Yi4uNGRkZWQzMDg4
ZjRmMzk2ZmVmNDQ0ZTdlZTY1YzY0MTA2NThmNTg0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvUGxhdGZvcm1NYWMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21h
a2UKQEAgLTM5Nyw3ICszOTcsNiBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9XZWJTeXN0ZW1CYWNrZHJvcExheWVyLm1tCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvV2ViVGlsZWRCYWNraW5nTGF5ZXIubW0KIAotICAg
IHBsYXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvQ29sb3JDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9GbG9hdFBvaW50
Q0cuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvRmxvYXRSZWN0Q0cuY3BwCkBAIC00MTcs
NiArNDE2LDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9Q
YXRoQ0cuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcAorICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2NnL1BsYXRmb3JtSW1hZ2VDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9jZy9TdWJpbWFnZUNhY2hlV2l0aFRpbWVyLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2NnL1RyYW5zZm9ybWF0aW9uTWF0cml4Q0cuY3BwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1BsYXRmb3JtV2luQ2Fpcm8uY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbkNh
aXJvLmNtYWtlCmluZGV4IDJjNTUzYjA1NTFkYWQ2OWFhMTk5ZDk2MGY1NTIzNDNkOTIwZjA3YjMu
LjM0MmFhOTI3MzJmZDhmOTJlODVjZmE2MjZkNTU1NzBlZjY2YjZhNjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luQ2Fpcm8uY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1XaW5DYWlyby5jbWFrZQpAQCAtMjEsNyArMjEsNiBAQCBsaXN0KEFQUEVORCBXZWJD
b3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9HTENvbnRleHQuY3BwCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1EaXNwbGF5LmNwcAogCi0gICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9DYWlyb1V0aWxpdGllcy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9GbG9hdFJl
Y3RDYWlyby5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fpcm8uY3BwCkBA
IC0zNCw2ICszMyw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL1BhdGhDYWlyby5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9QYXR0ZXJuQ2Fpcm8uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1D
b250ZXh0Q2Fpcm8uY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1JbWFn
ZUNhaXJvLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtUGF0aENhaXJv
LmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1JlZlB0ckNhaXJvLmNwcAogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL1RyYW5zZm9ybWF0aW9uTWF0cml4Q2Fpcm8uY3BwCkBAIC00
Niw3ICs0Niw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24uY3BwCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL1NpbXBsZUZvbnREYXRhQ2Fpcm9XaW4uY3BwCiAKLSAgICBwbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZURlY29kZXJDYWlyby5jcHAKKyAgICBwbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9CaXRtYXBQaXhlbHNDYWlyby5jcHAKIAogICAgIHBs
YXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU3R1Yi5jcHAKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGMxMWJj
NDdlNWNhZDYzMGEzNjU3Y2RlMWFkOWY3Yjc2YTBhNTVjNjYuLmZmMmE0OThiYTk2YjgxZGEwM2Y4
MWEzMDFhODViZTM3NGQwZWM2NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE0ODQsNyArMTQ4NCw3IEBACiAJCTM3NUNEMjMy
MTE5RDQzQzgwMEEyQTg1OSAvKiBIeXBoZW5hdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzc1Q0QyMzExMTlENDNDODAwQTJBODU5IC8qIEh5cGhl
bmF0aW9uLmggKi87IH07CiAJCTM3NkRDQ0UxMTNCNEY5NjYwMDJFQkVGQyAvKiBUZXh0UnVuLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3NkRDQ0Uw
MTNCNEY5NjYwMDJFQkVGQyAvKiBUZXh0UnVuLmNwcCAqLzsgfTsKIAkJMzc3NEFCQTUwRkEyMUVC
NDAwQUQ3REU5IC8qIE92ZXJsYXBUZXN0UmVxdWVzdENsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzc3NEFCQTMwRkEyMUVCNDAwQUQ3REU5IC8q
IE92ZXJsYXBUZXN0UmVxdWVzdENsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07Ci0JCTM3N0EzQTkwMTVFRkNFOUIwMDU5RjVDNyAvKiBCaXRtYXBJ
bWFnZUNHLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDM3N0EzQThGMTVFRkNFOUEwMDU5RjVDNyAvKiBCaXRtYXBJbWFnZUNHLmNwcCAqLzsgfTsKKwkJ
Mzc3QTNBOTAxNUVGQ0U5QjAwNTlGNUM3IC8qIFBsYXRmb3JtSW1hZ2VDRy5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzdBM0E4RjE1RUZDRTlBMDA1
OUY1QzcgLyogUGxhdGZvcm1JbWFnZUNHLmNwcCAqLzsgfTsKIAkJMzc5MTlDMjMwQjdEMTg4NjAw
QTU2OTk4IC8qIFBvc2l0aW9uSXRlcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMzc5MTlDMjEwQjdEMTg4NjAwQTU2OTk4IC8qIFBvc2l0aW9u
SXRlcmF0b3IuY3BwICovOyB9OwogCQkzNzkxOUMyNDBCN0QxODg2MDBBNTY5OTggLyogUG9zaXRp
b25JdGVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMzc5MTlDMjIwQjdEMTg4NjAwQTU2OTk4IC8qIFBvc2l0aW9uSXRlcmF0b3IuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9ICgpOyB9OyB9OwogCQkzNzkyOTE3QTE5ODVFRjM5MDBGNEI2
NjEgLyogQ3JlZGVudGlhbEJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDM3OTI5MTc4MTk4NUVGMzkwMEY0QjY2MSAvKiBDcmVkZW50aWFsQmFzZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yMzI1
LDEwICsyMzI1LDE0IEBACiAJCTUzRUQzRkRGMTY3QTg4RTcwMDY3NjJFNiAvKiBKU0ludGVybmFs
U2V0dGluZ3NHZW5lcmF0ZWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUzRUQzRkREMTY3QTg4RTcwMDY3NjJFNiAvKiBKU0ludGVybmFsU2V0dGluZ3NH
ZW5lcmF0ZWQuaCAqLzsgfTsKIAkJNTNFRjc2NkIxNjUzMEE2MTAwNENCRTQ5IC8qIFNldHRpbmdz
TWFjcm9zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
M0VGNzY2QTE2NTMwQTYxMDA0Q0JFNDkgLyogU2V0dGluZ3NNYWNyb3MuaCAqLzsgfTsKIAkJNTNF
Rjc2NkMxNjUzMTk5NDAwNENCRTQ5IC8qIFNldHRpbmdzTWFjcm9zLmggaW4gQ29weSBHZW5lcmF0
ZWQgSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0VGNzY2QTE2
NTMwQTYxMDA0Q0JFNDkgLyogU2V0dGluZ3NNYWNyb3MuaCAqLzsgfTsKKwkJNTUwNEU0Q0IxRDM1
NTdCMjAwRkU1MDg4IC8qIEJpdG1hcFBpeGVscy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTUwNEU0Q0ExRDM1NTMyRDAwRkU1MDg4IC8qIEJpdG1hcFBp
eGVscy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTU1MEEwQkM5MDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1MEEwQkM3MDg1RjYwMzkwMDcz
NTNENiAvKiBRdWFsaWZpZWROYW1lLmNwcCAqLzsgfTsKIAkJNTUwQTBCQ0EwODVGNjAzOTAwNzM1
M0Q2IC8qIFF1YWxpZmllZE5hbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDU1MEEwQkM4MDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTU1Qjg3
RUMxQ0FBRjBBQjAwMzQ5NDI1IC8qIEltYWdlRGVjb2RlckNHLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1NUI4N0VBMUNBQUYwQUIwMDM0OTQyNSAv
KiBJbWFnZURlY29kZXJDRy5jcHAgKi87IH07CiAJCTU1NUI4N0VEMUNBQUYwQUIwMDM0OTQyNSAv
KiBJbWFnZURlY29kZXJDRy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTU1Qjg3RUIxQ0FBRjBBQjAwMzQ5NDI1IC8qIEltYWdlRGVjb2RlckNHLmggKi87
IH07CisJCTU1NzRGMDg3MUQwMjc5MDkwMEI5RjE0QyAvKiBQbGF0Zm9ybUltYWdlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTc0RjA4NTFEMDI3NDQ0
MDBCOUYxNEMgLyogUGxhdGZvcm1JbWFnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTU1Q0JBNkExMUQxREYyRTEwMDQ1MTg2MCAvKiBJbWFnZUZy
YW1lRGF0YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1NUNCQTY5RjFEMURGMkUxMDA0NTE4NjAgLyogSW1hZ2VGcmFtZURhdGEuY3BwICovOyB9Owor
CQk1NUNCQTZBMjFEMURGMkUxMDA0NTE4NjAgLyogSW1hZ2VGcmFtZURhdGEuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1Q0JBNkEwMUQxREYyRTEwMDQ1
MTg2MCAvKiBJbWFnZUZyYW1lRGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTU3MkE3RjIxMUM2RTU3MTkwMDlDNjE0OSAvKiBTaW11bGF0ZWRD
bGljay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTcy
QTdGMjAxQzZFNTcxOTAwOUM2MTQ5IC8qIFNpbXVsYXRlZENsaWNrLmggKi87IH07CiAJCTU3MkE3
RjIzMUM2RTVBNjYwMDlDNjE0OSAvKiBTaW11bGF0ZWRDbGljay5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzJBN0YyMjFDNkU1QTY2MDA5QzYxNDkg
LyogU2ltdWxhdGVkQ2xpY2suY3BwICovOyB9OwogCQk1N0VGNUU2MDFEMjBDODM5MDAxNzFFNjAg
LyogVGV4dENvZGVjUmVwbGFjZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDU3RUY1RTVGMUQyMEM4MzkwMDE3MUU2MCAvKiBUZXh0Q29kZWNSZXBs
YWNlbWVudC5oICovOyB9OwpAQCAtOTA2MSw3ICs5MDY1LDcgQEAKIAkJMzc2RENDRTAxM0I0Rjk2
NjAwMkVCRUZDIC8qIFRleHRSdW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gVGV4dFJ1bi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3NzJCMDk1
MTY1MzU4NTYwMDBBNDlDQSAvKiBQb3B1cE9wZW5pbmdPYnNlcnZlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBQb3B1cE9wZW5pbmdPYnNlcnZlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkzNzc0QUJBMzBGQTIxRUI0MDBBRDdERTkgLyogT3ZlcmxhcFRlc3RS
ZXF1ZXN0Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE92ZXJsYXBU
ZXN0UmVxdWVzdENsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzNzdBM0E4
RjE1RUZDRTlBMDA1OUY1QzcgLyogQml0bWFwSW1hZ2VDRy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBCaXRtYXBJbWFnZUNHLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMzc3QTNBOEYxNUVGQ0U5QTAwNTlGNUM3IC8qIFBsYXRmb3JtSW1hZ2VDRy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQbGF0Zm9ybUltYWdlQ0cu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzNzkxOUMyMTBCN0QxODg2MDBBNTY5
OTggLyogUG9zaXRpb25JdGVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUG9zaXRpb25JdGVyYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTM3OTE5QzIyMEI3RDE4ODYwMEE1Njk5OCAvKiBQb3NpdGlvbkl0ZXJhdG9yLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQb3NpdGlvbkl0ZXJhdG9yLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3OTI5MTc4MTk4NUVGMzkwMEY0QjY2MSAvKiBDcmVkZW50
aWFsQmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDcmVkZW50aWFsQmFz
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTk4OSwxMCArOTk5MywxNCBAQAog
CQk1M0VEM0ZEQzE2N0E4OEU3MDA2NzYyRTYgLyogSlNJbnRlcm5hbFNldHRpbmdzR2VuZXJhdGVk
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSW50ZXJuYWxTZXR0
aW5nc0dlbmVyYXRlZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzRUQzRkRE
MTY3QTg4RTcwMDY3NjJFNiAvKiBKU0ludGVybmFsU2V0dGluZ3NHZW5lcmF0ZWQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNJbnRlcm5hbFNldHRpbmdzR2VuZXJhdGVkLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzRUY3NjZBMTY1MzBBNjEwMDRDQkU0OSAv
KiBTZXR0aW5nc01hY3Jvcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXR0
aW5nc01hY3Jvcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1NTA0RTRDQTFEMzU1
MzJEMDBGRTUwODggLyogQml0bWFwUGl4ZWxzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJpdG1hcFBpeGVs
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NTBBMEJDNzA4NUY2MDM5MDA3MzUz
RDYgLyogUXVhbGlmaWVkTmFtZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBRdWFsaWZpZWROYW1lLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCTU1MEEwQkM4MDg1RjYw
MzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFF1YWxpZmllZE5hbWUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCTU1NUI4N0VBMUNBQUYw
QUIwMDM0OTQyNSAvKiBJbWFnZURlY29kZXJDRy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBJbWFnZURlY29kZXJDRy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTU1NUI4N0VCMUNBQUYwQUIwMDM0OTQyNSAvKiBJbWFnZURlY29kZXJDRy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZURlY29kZXJDRy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk1NTc0RjA4NTFEMDI3NDQ0MDBCOUYxNEMgLyogUGxhdGZvcm1J
bWFnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybUltYWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTU1Q0JBNjlGMUQxREYyRTEwMDQ1MTg2MCAvKiBJbWFnZUZyYW1lRGF0YS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbWFnZUZyYW1lRGF0YS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU1Q0JBNkEwMUQxREYyRTEwMDQ1MTg2
MCAvKiBJbWFnZUZyYW1lRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJ
bWFnZUZyYW1lRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NUQ0MDhGNzFB
N0M2MzE4MDBDNzg0NTAgLyogU1ZHSW1hZ2VDbGllbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNWR0ltYWdlQ2xpZW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1NzJBN0YyMDFDNkU1NzE5MDA5QzYxNDkgLyogU2ltdWxhdGVkQ2xpY2suaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2ltdWxhdGVkQ2xpY2suaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTcyQTdGMjIxQzZFNUE2NjAwOUM2MTQ5IC8qIFNpbXVsYXRlZENs
aWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNpbXVsYXRlZENs
aWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIyMDI0LDcgKzIyMDMyLDYg
QEAKIAkJQjI3NTM1MjkwQjA1MzgxNDAwMkNFNjRGIC8qIGNnICovID0gewogCQkJaXNhID0gUEJY
R3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQkzNzdBM0E4RjE1RUZDRTlBMDA1OUY1QzcgLyog
Qml0bWFwSW1hZ2VDRy5jcHAgKi8sCiAJCQkJMEZDRjMzMjMwRjJCOTcxNTAwNEI2Nzk1IC8qIENv
bG9yQ0cuY3BwICovLAogCQkJCUIyNzUzNTJCMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFBvaW50
Q0cuY3BwICovLAogCQkJCUIyNzUzNTJDMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFJlY3RDRy5j
cHAgKi8sCkBAIC0yMjA1MSw2ICsyMjA1OCw3IEBACiAJCQkJQTgwQTM4RkQwRTUwQ0M4MjAwQTI1
RUJDIC8qIFBhdHRlcm5DRy5jcHAgKi8sCiAJCQkJQjI3NTM1MzYwQjA1MzgxNDAwMkNFNjRGIC8q
IFBERkRvY3VtZW50SW1hZ2UuY3BwICovLAogCQkJCUIyNzUzNTM3MEIwNTM4MTQwMDJDRTY0RiAv
KiBQREZEb2N1bWVudEltYWdlLmggKi8sCisJCQkJMzc3QTNBOEYxNUVGQ0U5QTAwNTlGNUM3IC8q
IFBsYXRmb3JtSW1hZ2VDRy5jcHAgKi8sCiAJCQkJMUZDNDBGQjgxNjU1QzU5MTAwNDBGMjlFIC8q
IFN1YmltYWdlQ2FjaGVXaXRoVGltZXIuY3BwICovLAogCQkJCTFGQzQwRkI3MTY1NUM1OTEwMDQw
RjI5RSAvKiBTdWJpbWFnZUNhY2hlV2l0aFRpbWVyLmggKi8sCiAJCQkJQjI3NTM1MkEwQjA1Mzgx
NDAwMkNFNjRGIC8qIFRyYW5zZm9ybWF0aW9uTWF0cml4Q0cuY3BwICovLApAQCAtMjIxMTgsNiAr
MjIxMjYsNyBAQAogCQkJCUJFRjI5RUU5MTcxNUREMDkwMEM0QjRDOSAvKiBBdWRpb1RyYWNrUHJp
dmF0ZS5oICovLAogCQkJCUE4OTk0MzI3MEI0MjMzODcwMEQ3QzgwMiAvKiBCaXRtYXBJbWFnZS5j
cHAgKi8sCiAJCQkJQTg5OTQzMjYwQjQyMzM4NzAwRDdDODAyIC8qIEJpdG1hcEltYWdlLmggKi8s
CisJCQkJNTUwNEU0Q0ExRDM1NTMyRDAwRkU1MDg4IC8qIEJpdG1hcFBpeGVscy5oICovLAogCQkJ
CUNEREUwMkU5MThCM0RGQzcwMENGN0ZGMSAvKiBDRE1TZXNzaW9uLmggKi8sCiAJCQkJQjI3NTM1
MzgwQjA1MzgxNDAwMkNFNjRGIC8qIENvbG9yLmNwcCAqLywKIAkJCQlCMjc1MzUzOTBCMDUzODE0
MDAyQ0U2NEYgLyogQ29sb3IuaCAqLywKQEAgLTIyMjAyLDYgKzIyMjExLDggQEAKIAkJCQk0M0Qy
NTk3NjEzQzgxNkY0MDA2MDg1NTkgLyogSW1hZ2VCdWZmZXIuY3BwICovLAogCQkJCUIyQTEwQjkx
MEIzODE4QkQwMDA5OUFBNCAvKiBJbWFnZUJ1ZmZlci5oICovLAogCQkJCTIyQkQ5RjdEMTM1MzYy
NUMwMDlCRDEwMiAvKiBJbWFnZUJ1ZmZlckRhdGEuaCAqLywKKwkJCQk1NUNCQTY5RjFEMURGMkUx
MDA0NTE4NjAgLyogSW1hZ2VGcmFtZURhdGEuY3BwICovLAorCQkJCTU1Q0JBNkEwMUQxREYyRTEw
MDQ1MTg2MCAvKiBJbWFnZUZyYW1lRGF0YS5oICovLAogCQkJCUJDN0Y0NEE3MEI5RTMyNEUwMEE5
RDA4MSAvKiBJbWFnZU9ic2VydmVyLmggKi8sCiAJCQkJQTg3NDhENzQxMkNDM0Y4OTAwMUZCQTQx
IC8qIEltYWdlT3JpZW50YXRpb24uY3BwICovLAogCQkJCUE4NzQ4RDY2MTJDQzM3NjMwMDFGQkE0
MSAvKiBJbWFnZU9yaWVudGF0aW9uLmggKi8sCkBAIC0yMjI1MSw2ICsyMjI2Miw3IEBACiAJCQkJ
MkQ1MDAyRkExQjU2RDc5OTAwMjBBQUY3IC8qIFBhdGhVdGlsaXRpZXMuaCAqLywKIAkJCQlBOEZB
NkU1QzBFNENGREVEMDBENUNGNDkgLyogUGF0dGVybi5jcHAgKi8sCiAJCQkJQThGQTZFNUIwRTRD
RkRFRDAwRDVDRjQ5IC8qIFBhdHRlcm4uaCAqLywKKwkJCQk1NTc0RjA4NTFEMDI3NDQ0MDBCOUYx
NEMgLyogUGxhdGZvcm1JbWFnZS5oICovLAogCQkJCTA1NjJGOTYwMTU3M0Y4OEYwMDMxQ0ExNiAv
KiBQbGF0Zm9ybUxheWVyLmggKi8sCiAJCQkJQ0VFRkNEN0IxOURCMzNEQzAwMzg3NkQ3IC8qIFBs
YXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5oICovLAogCQkJCTA3Mjg0N0UyMTZFQkM1QjAwMDQz
Q0ZBNCAvKiBQbGF0Zm9ybVRleHRUcmFjay5oICovLApAQCAtMjYwMTgsNiArMjYwMzAsNyBAQAog
CQkJCTg1RTcxMUI5MEFDNUQ1MzUwMDUzMjcwRiAvKiBET01IVE1MTWFwRWxlbWVudEludGVybmFs
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzUxNTc5RjBDMDNCQkQzMDA4QkIwRUUgLyogRE9NSFRN
TE1hcnF1ZWVFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzUxNTZFQTBDMDNCNzQxMDA4
QkIwRUUgLyogRE9NSFRNTE1hcnF1ZWVFbGVtZW50SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAor
CQkJCTU1NzRGMDg3MUQwMjc5MDkwMEI5RjE0QyAvKiBQbGF0Zm9ybUltYWdlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkyREVDNjY1NTFDODJEMDQxMDA5OTg0NkEgLyogRE9NSFRNTE1lZGlhRWxlbWVu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkRFQzY2NTExQzgyRDAxNjAwOTk4NDZBIC8qIERPTUhU
TUxNZWRpYUVsZW1lbnRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODVCQTREMTMwQUE2
ODg2ODAwODgwNTJEIC8qIERPTUhUTUxNZW51RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0y
NjQ1OSw2ICsyNjQ3Miw3IEBACiAJCQkJRDM1OUQ3OEExMjlDQTI3MTAwMDZFNUQyIC8qIEhUTUxE
ZXRhaWxzRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThFQTc5RkEwQTE5MTZERjAwQThF
RjVGIC8qIEhUTUxEaXJlY3RvcnlFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEVBN0NC
NzBBMTkyQjlDMDBBOEVGNUYgLyogSFRNTERpdkVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTU1Q0JBNkEyMUQxREYyRTEwMDQ1MTg2MCAvKiBJbWFnZUZyYW1lRGF0YS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQThFQTc5RjcwQTE5MTZERjAwQThFRjVGIC8qIEhUTUxETGlzdEVsZW1lbnQuaCBp
biBIZWFkZXJzICovLAogCQkJCTkzRjE5OEU1MDgyNDVFNTkwMDFFOUFCQyAvKiBIVE1MRG9jdW1l
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3N0IzODY3MTIyODgzRTkwMEI4MUZGOCAvKiBIVE1M
RG9jdW1lbnRQYXJzZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMjgzNTksNiArMjgzNzMsNyBAQAog
CQkJCUIyMjI3OTkzMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdBbmltYXRlTW90aW9uRWxlbWVudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5OTUwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0FuaW1h
dGVUcmFuc2Zvcm1FbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyNzk5ODBEMDBCRjIy
MDA3MUI3ODIgLyogU1ZHQW5pbWF0aW9uRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTUw
NEU0Q0IxRDM1NTdCMjAwRkU1MDg4IC8qIEJpdG1hcFBpeGVscy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNDM5RDMzNDUxM0E2OTExQzAwQzIwRjRGIC8qIFNWR0FuaW1hdG9yRmFjdG9yeS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMDhGQjNGODQxM0JDNzU0QzAwOTlGQzE4IC8qIFNWR0F0dHJpYnV0ZVRv
UHJvcGVydHlNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3OTlDMEQwMEJGMjIwMDcxQjc4
MiAvKiBTVkdDaXJjbGVFbGVtZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTI5NDExLDcgKzI5NDI2
LDcgQEAKIAkJCQlGREM1NEYwNDEzOTlCMERBMDA4RDkxMTcgLyogQmlxdWFkRmlsdGVyTm9kZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDMxNjAyNjEyQjAyNjc2MDBDMUEzNTkgLyogQmlxdWFk
UHJvY2Vzc29yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4OTk0MzI5MEI0MjMzODgwMEQ3Qzgw
MiAvKiBCaXRtYXBJbWFnZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkzNzdBM0E5MDE1RUZDRTlC
MDA1OUY1QzcgLyogQml0bWFwSW1hZ2VDRy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkzNzdBM0E5
MDE1RUZDRTlCMDA1OUY1QzcgLyogUGxhdGZvcm1JbWFnZUNHLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTk3NkQ2Qzc4MTIyQjhBM0QwMDFGRDFGNyAvKiBCbG9iLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTJFREVGMUYzMTIxQjBFRkMwMDcyNkRCMiAvKiBCbG9iRGF0YS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlFMUQzMUNEQzE5MTk2MDIwMDAxMDA1QTMgLyogQmxvYkRhdGFGaWxlUmVmZXJlbmNl
LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjk3NzQsNiArMjk3ODksNyBAQAogCQkJCTJFMkQ5OUU4
MTBFMkJDMUMwMDQ5NjMzNyAvKiBET01CbG9iLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODUwODlD
RDgwQTk4QzQyODAwQTI3NUFBIC8qIERPTUNEQVRBU2VjdGlvbi5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTg1QUNBOTg3MEE5QjUyMDMwMDY3MUU5MCAvKiBET01DaGFyYWN0ZXJEYXRhLm1tIGluIFNv
dXJjZXMgKi8sCisJCQkJNTVDQkE2QTExRDFERjJFMTAwNDUxODYwIC8qIEltYWdlRnJhbWVEYXRh
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg1MDg5Q0RBMEE5OEM0MjgwMEEyNzVBQSAvKiBET01D
b21tZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOTc4RDA3QkUxNDVBMEY2QzAwOTY5MDhEIC8q
IERPTUNvcmVFeGNlcHRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODU4QzM4QTYwQUE4RjIw
NDAwQjE4N0E0IC8qIERPTUNvdW50ZXIubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NLm1tIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvb2JqYy9ET00ubW0KaW5kZXggNDAxMWVhM2ZkOGMwNDY5NzRjNTVkNDhlMzk2ZjFiODNiODFm
MzM1ZC4uYTVhYzRmMDVhZTMzOWE4ZDY0NzA2YzEwZmMwZjdhZjQwNDI1NjIzYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET00ubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvb2JqYy9ET00ubW0KQEAgLTYwNiw3ICs2MDYsNyBAQCAtICh2b2lkKWdldFBy
ZXZpZXdTbmFwc2hvdEltYWdlOihDR0ltYWdlUmVmKiljZ0ltYWdlIGFuZFJlY3RzOihOU0FycmF5
ICoqKXJlY3RzCiAKICAgICBpZiAodGV4dEluZGljYXRvcikgewogICAgICAgICBpZiAoSW1hZ2Uq
IGltYWdlID0gdGV4dEluZGljYXRvci0+Y29udGVudEltYWdlKCkpCi0gICAgICAgICAgICAqY2dJ
bWFnZSA9IChDR0ltYWdlUmVmKUNGQXV0b3JlbGVhc2UoQ0dJbWFnZVJldGFpbihpbWFnZS0+Z2V0
Q0dJbWFnZVJlZigpKSk7CisgICAgICAgICAgICAqY2dJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFn
ZSgpLmF1dG9yZWxlYXNlKCk7CiAgICAgfQogCiAgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5
PiByZWN0QXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1RleHRJbmRpY2F0b3JXaW5kb3cubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9UZXh0SW5kaWNhdG9yV2luZG93Lm1tCmluZGV4IDM2
NGE5YTg3Y2U2ZjA2NjM5NDhiODg0NmU4ZTJjZTZkMTkwZjI0ODkuLmE3NGRhODVhY2VjYTNjNjY5
OGRkMTU2YWIzMWE2Yzk3MWEzNTRlNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
bWFjL1RleHRJbmRpY2F0b3JXaW5kb3cubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMv
VGV4dEluZGljYXRvcldpbmRvdy5tbQpAQCAtMTYyLDkgKzE2Miw5IEBAIC0gKGluc3RhbmNldHlw
ZSlpbml0V2l0aEZyYW1lOihOU1JlY3QpZnJhbWUgdGV4dEluZGljYXRvcjooUGFzc1JlZlB0cjxU
ZXh0SW5kaWNhCiAgICAgY29udGVudHNJbWFnZUxvZ2ljYWxTaXplLnNjYWxlKDEgLyBfdGV4dElu
ZGljYXRvci0+Y29udGVudEltYWdlU2NhbGVGYWN0b3IoKSk7CiAgICAgUmV0YWluUHRyPENHSW1h
Z2VSZWY+IGNvbnRlbnRzSW1hZ2U7CiAgICAgaWYgKGluZGljYXRvcldhbnRzQ29udGVudENyb3Nz
ZmFkZSgqX3RleHRJbmRpY2F0b3IpKQotICAgICAgICBjb250ZW50c0ltYWdlID0gX3RleHRJbmRp
Y2F0b3ItPmNvbnRlbnRJbWFnZVdpdGhIaWdobGlnaHQoKS0+Z2V0Q0dJbWFnZVJlZigpOworICAg
ICAgICBjb250ZW50c0ltYWdlID0gX3RleHRJbmRpY2F0b3ItPmNvbnRlbnRJbWFnZVdpdGhIaWdo
bGlnaHQoKS0+bmF0aXZlSW1hZ2UoKTsKICAgICBlbHNlCi0gICAgICAgIGNvbnRlbnRzSW1hZ2Ug
PSBfdGV4dEluZGljYXRvci0+Y29udGVudEltYWdlKCktPmdldENHSW1hZ2VSZWYoKTsKKyAgICAg
ICAgY29udGVudHNJbWFnZSA9IF90ZXh0SW5kaWNhdG9yLT5jb250ZW50SW1hZ2UoKS0+bmF0aXZl
SW1hZ2UoKTsKIAogICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gYm91bmNlTGF5ZXJzID0g
YWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CiAKQEAgLTI2NSw3ICsyNjUs
NyBAQCBzdGF0aWMgUmV0YWluUHRyPENBS2V5ZnJhbWVBbmltYXRpb24+IGNyZWF0ZUJvdW5jZUFu
aW1hdGlvbihDRlRpbWVJbnRlcnZhbCBkdXJhdAogc3RhdGljIFJldGFpblB0cjxDQUJhc2ljQW5p
bWF0aW9uPiBjcmVhdGVDb250ZW50Q3Jvc3NmYWRlQW5pbWF0aW9uKENGVGltZUludGVydmFsIGR1
cmF0aW9uLCBUZXh0SW5kaWNhdG9yJiB0ZXh0SW5kaWNhdG9yKQogewogICAgIFJldGFpblB0cjxD
QUJhc2ljQW5pbWF0aW9uPiBjcm9zc2ZhZGVBbmltYXRpb24gPSBbQ0FCYXNpY0FuaW1hdGlvbiBh
bmltYXRpb25XaXRoS2V5UGF0aDpAImNvbnRlbnRzIl07Ci0gICAgUmV0YWluUHRyPENHSW1hZ2VS
ZWY+IGNvbnRlbnRzSW1hZ2UgPSB0ZXh0SW5kaWNhdG9yLmNvbnRlbnRJbWFnZSgpLT5nZXRDR0lt
YWdlUmVmKCk7CisgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNvbnRlbnRzSW1hZ2UgPSB0ZXh0
SW5kaWNhdG9yLmNvbnRlbnRJbWFnZSgpLT5uYXRpdmVJbWFnZSgpOwogICAgIFtjcm9zc2ZhZGVB
bmltYXRpb24gc2V0VG9WYWx1ZTooaWQpY29udGVudHNJbWFnZS5nZXQoKV07CiAgICAgW2Nyb3Nz
ZmFkZUFuaW1hdGlvbiBzZXRGaWxsTW9kZTprQ0FGaWxsTW9kZUZvcndhcmRzXTsKICAgICBbY3Jv
c3NmYWRlQW5pbWF0aW9uIHNldFJlbW92ZWRPbkNvbXBsZXRpb246Tk9dOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCmluZGV4IDQ2MGQxYjg1
NmI3N2I3Y2Y0ZWM2ODk2NTgxYjgzM2QzZTdmOTcwMTQuLmZjNjQ5ZDEwYWFiOWMxM2ZmZjI5MzA1
NWE3MDdjYjc0NTM3NDY5MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0JpdG1hcEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9CaXRtYXBJbWFnZS5jcHAKQEAgLTY4LDE1ICs2OCwxMyBAQCBCaXRtYXBJbWFnZTo6Qml0
bWFwSW1hZ2UoTmF0aXZlSW1hZ2VQdHImJiBpbWFnZSwgSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIp
CiAgICAgLCBtX2hhdmVGcmFtZUNvdW50KHRydWUpCiAgICAgLCBtX2FuaW1hdGlvbkZpbmlzaGVk
V2hlbkNhdGNoaW5nVXAoZmFsc2UpCiB7CisgICAgbV9mcmFtZXMucmVzZXJ2ZUluaXRpYWxDYXBh
Y2l0eSgxKTsKKyAgICBtX2ZyYW1lcy51bmNoZWNrZWRBcHBlbmQoV1RGTW92ZShpbWFnZSkpOwor
ICAgIAogICAgIC8vIFNpbmNlIHdlIGRvbid0IGhhdmUgYSBkZWNvZGVyLCB3ZSBjYW4ndCBmaWd1
cmUgb3V0IHRoZSBpbWFnZSBvcmllbnRhdGlvbi4KICAgICAvLyBTZXQgbV9zaXplUmVzcGVjdGlu
Z09yaWVudGF0aW9uIHRvIGJlIHRoZSBzYW1lIGFzIG1fc2l6ZSBzbyBpdCdzIG5vdCAweDAuCi0g
ICAgbV9zaXplUmVzcGVjdGluZ09yaWVudGF0aW9uID0gbV9zaXplID0gTmF0aXZlSW1hZ2U6OnNp
emUoaW1hZ2UpOworICAgIG1fc2l6ZVJlc3BlY3RpbmdPcmllbnRhdGlvbiA9IG1fc2l6ZSA9IG1f
ZnJhbWVzWzBdLnNpemUoKTsKICAgICBtX2RlY29kZWRTaXplID0gbV9zaXplLmFyZWEoKSAqIDQ7
Ci0gICAgCi0gICAgbV9mcmFtZXMuZ3JvdygxKTsKLSAgICBtX2ZyYW1lc1swXS5tX2hhc0FscGhh
ID0gTmF0aXZlSW1hZ2U6Omhhc0FscGhhKGltYWdlKTsKLSAgICBtX2ZyYW1lc1swXS5tX2hhdmVN
ZXRhZGF0YSA9IHRydWU7Ci0gICAgbV9mcmFtZXNbMF0ubV9pbWFnZSA9IFdURk1vdmUoaW1hZ2Up
OwogfQogCiBCaXRtYXBJbWFnZTo6fkJpdG1hcEltYWdlKCkKQEAgLTEwNSw3ICsxMDMsNyBAQCBi
b29sIEJpdG1hcEltYWdlOjpoYXZlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4KQogICAg
IGlmIChpbmRleCA+PSBtX2ZyYW1lcy5zaXplKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIHJldHVybiBtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZTsKKyAgICByZXR1cm4gbV9mcmFtZXNb
aW5kZXhdLmhhc0ltYWdlKCk7CiB9CiAKIGJvb2wgQml0bWFwSW1hZ2U6Omhhc1NpbmdsZVNlY3Vy
aXR5T3JpZ2luKCkgY29uc3QKQEAgLTEyNSw5ICsxMjMsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpk
ZXN0cm95RGVjb2RlZERhdGEoYm9vbCBkZXN0cm95QWxsKQogICAgICAgICAvLyBUaGUgdW5kZXJs
eWluZyBmcmFtZSBpc24ndCBhY3R1YWxseSBjaGFuZ2luZyAod2UncmUganVzdCB0cnlpbmcgdG8K
ICAgICAgICAgLy8gc2F2ZSB0aGUgbWVtb3J5IGZvciB0aGUgZnJhbWVidWZmZXIgZGF0YSksIHNv
IHdlIGRvbid0IG5lZWQgdG8gY2xlYXIKICAgICAgICAgLy8gdGhlIG1ldGFkYXRhLgotICAgICAg
ICB1bnNpZ25lZCBmcmFtZUJ5dGVzID0gbV9mcmFtZXNbaV0ubV9mcmFtZUJ5dGVzOwotICAgICAg
ICBpZiAobV9mcmFtZXNbaV0uY2xlYXIoZmFsc2UpKQotICAgICAgICAgICAgZnJhbWVCeXRlc0Ns
ZWFyZWQgKz0gZnJhbWVCeXRlczsKKyAgICAgICAgZnJhbWVCeXRlc0NsZWFyZWQgKz0gbV9mcmFt
ZXNbaV0uY2xlYXIoSW1hZ2VGcmFtZURhdGE6OkNhY2hpbmc6Ok1ldGFkYXRhKTsKICAgICB9CiAK
ICAgICBtX3NvdXJjZS5jbGVhcihkZXN0cm95QWxsLCBjbGVhckJlZm9yZUZyYW1lLCBkYXRhKCks
IG1fYWxsRGF0YVJlY2VpdmVkKTsKQEAgLTE1MCw4ICsxNDYsOCBAQCB2b2lkIEJpdG1hcEltYWdl
OjpkZXN0cm95RGVjb2RlZERhdGFJZk5lY2Vzc2FyeShib29sIGRlc3Ryb3lBbGwpCiAgICAgICAg
IHJldHVybjsKIAogICAgIHVuc2lnbmVkIGFsbEZyYW1lQnl0ZXMgPSAwOwotICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbV9mcmFtZXMuc2l6ZSgpOyArK2kpCi0gICAgICAgIGFsbEZyYW1lQnl0
ZXMgKz0gbV9mcmFtZXNbaV0udXNlZEZyYW1lQnl0ZXMoKTsKKyAgICBmb3IgKGF1dG8mIGZyYW1l
IDogbV9mcmFtZXMpCisgICAgICAgIGFsbEZyYW1lQnl0ZXMgKz0gZnJhbWUuZnJhbWVCeXRlcygp
OwogCiAgICAgaWYgKGFsbEZyYW1lQnl0ZXMgPiBsYXJnZUFuaW1hdGlvbkN1dG9mZikgewogICAg
ICAgICBMT0coSW1hZ2VzLCAiQml0bWFwSW1hZ2UgJXAgZGVzdHJveURlY29kZWREYXRhSWZOZWNl
c3NhcnkgZGVzdHJveWluZ0RhdGE6IGFsbEZyYW1lQnl0ZXM9JXUgY3V0b2ZmPSV1IiwgdGhpcywg
YWxsRnJhbWVCeXRlcywgbGFyZ2VBbmltYXRpb25DdXRvZmYpOwpAQCAtMTc3LDcgKzE3Myw3IEBA
IHZvaWQgQml0bWFwSW1hZ2U6OmRlc3Ryb3lNZXRhZGF0YUFuZE5vdGlmeSh1bnNpZ25lZCBmcmFt
ZUJ5dGVzQ2xlYXJlZCwgQ2xlYXJlZFNvCiAgICAgICAgIGltYWdlT2JzZXJ2ZXIoKS0+ZGVjb2Rl
ZFNpemVDaGFuZ2VkKHRoaXMsIC1zYWZlQ2FzdDxpbnQ+KGZyYW1lQnl0ZXNDbGVhcmVkKSk7CiB9
CiAKLXZvaWQgQml0bWFwSW1hZ2U6OmNhY2hlRnJhbWUoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGlu
Z0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwsIEltYWdlRnJhbWVDYWNoaW5nIGZyYW1lQ2FjaGluZykK
K3ZvaWQgQml0bWFwSW1hZ2U6OmNhY2hlRnJhbWUoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xl
dmVsIHN1YnNhbXBsaW5nTGV2ZWwsIEltYWdlRnJhbWVEYXRhOjpDYWNoaW5nIGNhY2hpbmcpCiB7
CiAgICAgc2l6ZV90IG51bUZyYW1lcyA9IGZyYW1lQ291bnQoKTsKICAgICBBU1NFUlQobV9kZWNv
ZGVkU2l6ZSA9PSAwIHx8IG51bUZyYW1lcyA+IDEpOwpAQCAtMTg1LDI1ICsxODEsMTIgQEAgdm9p
ZCBCaXRtYXBJbWFnZTo6Y2FjaGVGcmFtZShzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwg
c3Vic2FtcGxpbmdMZXZlbCwgSW0KICAgICBpZiAobV9mcmFtZXMuc2l6ZSgpIDwgbnVtRnJhbWVz
KQogICAgICAgICBtX2ZyYW1lcy5ncm93KG51bUZyYW1lcyk7CiAKLSAgICBpZiAoZnJhbWVDYWNo
aW5nID09IENhY2hlTWV0YWRhdGFBbmRGcmFtZSkgewotICAgICAgICBtX2ZyYW1lc1tpbmRleF0u
bV9pbWFnZSA9IG1fc291cmNlLmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KGluZGV4LCBzdWJzYW1w
bGluZ0xldmVsKTsKLSAgICAgICAgbV9mcmFtZXNbaW5kZXhdLm1fc3Vic2FtcGxpbmdMZXZlbCA9
IHN1YnNhbXBsaW5nTGV2ZWw7Ci0gICAgfQotCi0gICAgbV9mcmFtZXNbaW5kZXhdLm1fb3JpZW50
YXRpb24gPSBtX3NvdXJjZS5vcmllbnRhdGlvbkF0SW5kZXgoaW5kZXgpOwotICAgIG1fZnJhbWVz
W2luZGV4XS5tX2hhdmVNZXRhZGF0YSA9IHRydWU7Ci0gICAgbV9mcmFtZXNbaW5kZXhdLm1faXND
b21wbGV0ZSA9IG1fc291cmNlLmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoaW5kZXgpOworICAgIG1f
ZnJhbWVzW2luZGV4XSA9IG1fc291cmNlLmNyZWF0ZUZyYW1lRGF0YUF0SW5kZXgoaW5kZXgsIHN1
YnNhbXBsaW5nTGV2ZWwsIGNhY2hpbmcpOwogCi0gICAgaWYgKHJlcGV0aXRpb25Db3VudChmYWxz
ZSkgIT0gY0FuaW1hdGlvbk5vbmUpCi0gICAgICAgIG1fZnJhbWVzW2luZGV4XS5tX2R1cmF0aW9u
ID0gbV9zb3VyY2UuZnJhbWVEdXJhdGlvbkF0SW5kZXgoaW5kZXgpOworICAgIExPRyhJbWFnZXMs
ICJCaXRtYXBJbWFnZSAlcCBjYWNoZUZyYW1lICVsdSAoJXMldSBieXRlcywgY29tcGxldGUgJWQp
IiwgdGhpcywgaW5kZXgsIGNhY2hpbmcgPT0gSW1hZ2VGcmFtZURhdGE6OkNhY2hpbmc6Ok1ldGFk
YXRhID8gIm1ldGFkYXRhIG9ubHksICIgOiAiIiwgbV9mcmFtZXNbaW5kZXhdLmZyYW1lQnl0ZXMo
KSwgbV9mcmFtZXNbaW5kZXhdLmlzQ29tcGxldGUoKSk7CiAKLSAgICBtX2ZyYW1lc1tpbmRleF0u
bV9oYXNBbHBoYSA9IG1fc291cmNlLmZyYW1lSGFzQWxwaGFBdEluZGV4KGluZGV4KTsKLSAgICBt
X2ZyYW1lc1tpbmRleF0ubV9mcmFtZUJ5dGVzID0gbV9zb3VyY2UuZnJhbWVCeXRlc0F0SW5kZXgo
aW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwpOwotCi0gICAgTE9HKEltYWdlcywgIkJpdG1hcEltYWdl
ICVwIGNhY2hlRnJhbWUgJWx1ICglcyV1IGJ5dGVzLCBjb21wbGV0ZSAlZCkiLCB0aGlzLCBpbmRl
eCwgZnJhbWVDYWNoaW5nID09IENhY2hlTWV0YWRhdGFPbmx5ID8gIm1ldGFkYXRhIG9ubHksICIg
OiAiIiwgbV9mcmFtZXNbaW5kZXhdLm1fZnJhbWVCeXRlcywgbV9mcmFtZXNbaW5kZXhdLm1faXND
b21wbGV0ZSk7Ci0KLSAgICBpZiAobV9mcmFtZXNbaW5kZXhdLm1faW1hZ2UpIHsKLSAgICAgICAg
aW50IGRlbHRhQnl0ZXMgPSBzYWZlQ2FzdDxpbnQ+KG1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lQnl0
ZXMpOworICAgIGlmIChtX2ZyYW1lc1tpbmRleF0uaGFzSW1hZ2UoKSkgeworICAgICAgICBpbnQg
ZGVsdGFCeXRlcyA9IHNhZmVDYXN0PGludD4obV9mcmFtZXNbaW5kZXhdLmZyYW1lQnl0ZXMoKSk7
CiAgICAgICAgIG1fZGVjb2RlZFNpemUgKz0gZGVsdGFCeXRlczsKICAgICAgICAgLy8gVGhlIGZ1
bGx5LWRlY29kZWQgZnJhbWUgd2lsbCBzdWJzdW1lIHRoZSBwYXJ0aWFsbHkgZGVjb2RlZCBkYXRh
IHVzZWQKICAgICAgICAgLy8gdG8gZGV0ZXJtaW5lIGltYWdlIHByb3BlcnRpZXMuCkBAIC0yODgs
MjEgKzI3MSwxOSBAQCBib29sIEJpdG1hcEltYWdlOjpkYXRhQ2hhbmdlZChib29sIGFsbERhdGFS
ZWNlaXZlZCkKICAgICAvLyBmcmFtZSBhZmZlY3RlZCBieSBhcHBlbmRpbmcgbmV3IGRhdGEgaGVy
ZS4gVGh1cyB3ZSBoYXZlIHRvIGNsZWFyIGFsbCB0aGUKICAgICAvLyBpbmNvbXBsZXRlIGZyYW1l
cyB0byBiZSBzYWZlLgogICAgIHVuc2lnbmVkIGZyYW1lQnl0ZXNDbGVhcmVkID0gMDsKLSAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZnJhbWVzLnNpemUoKTsgKytpKSB7CisgICAgZm9yIChh
dXRvJiBmcmFtZSA6IG1fZnJhbWVzKSB7CiAgICAgICAgIC8vIE5PVEU6IERvbid0IGNhbGwgZnJh
bWVJc0NvbXBsZXRlQXRJbmRleCgpIGhlcmUsIHRoYXQgd2lsbCB0cnkgdG8KICAgICAgICAgLy8g
ZGVjb2RlIGFueSB1bmNhY2hlZCAoaS5lLiBuZXZlci1kZWNvZGVkIG9yCiAgICAgICAgIC8vIGNs
ZWFyZWQtb24tYS1wcmV2aW91cy1wYXNzKSBmcmFtZXMhCi0gICAgICAgIHVuc2lnbmVkIGZyYW1l
Qnl0ZXMgPSBtX2ZyYW1lc1tpXS5tX2ZyYW1lQnl0ZXM7Ci0gICAgICAgIGlmIChtX2ZyYW1lc1tp
XS5tX2hhdmVNZXRhZGF0YSAmJiAhbV9mcmFtZXNbaV0ubV9pc0NvbXBsZXRlKQotICAgICAgICAg
ICAgZnJhbWVCeXRlc0NsZWFyZWQgKz0gKG1fZnJhbWVzW2ldLmNsZWFyKHRydWUpID8gZnJhbWVC
eXRlcyA6IDApOworICAgICAgICBpZiAoZnJhbWUuaGFzTWV0YWRhdGEoKSAmJiAhZnJhbWUuaXND
b21wbGV0ZSgpKQorICAgICAgICAgICAgZnJhbWVCeXRlc0NsZWFyZWQgKz0gZnJhbWUuY2xlYXIo
SW1hZ2VGcmFtZURhdGE6OkNhY2hpbmc6OkVtcHR5KTsKICAgICB9CiAgICAgZGVzdHJveU1ldGFk
YXRhQW5kTm90aWZ5KGZyYW1lQnl0ZXNDbGVhcmVkLCBDbGVhcmVkU291cmNlOjpObyk7CiAjZWxz
ZQogICAgIC8vIEZJWE1FOiB3aHkgaXMgdGhpcyBkaWZmZXJlbnQgZm9yIGlPUz8KICAgICBpbnQg
ZGVsdGFCeXRlcyA9IDA7CiAgICAgaWYgKCFtX2ZyYW1lcy5pc0VtcHR5KCkpIHsKLSAgICAgICAg
aW50IGJ5dGVzID0gbV9mcmFtZXNbbV9mcmFtZXMuc2l6ZSgpIC0gMV0ubV9mcmFtZUJ5dGVzOwot
ICAgICAgICBpZiAobV9mcmFtZXNbbV9mcmFtZXMuc2l6ZSgpIC0gMV0uY2xlYXIodHJ1ZSkpIHsK
KyAgICAgICAgaWYgKGludCBieXRlcyA9IG1fZnJhbWVzW21fZnJhbWVzLnNpemUoKSAtIDFdLmNs
ZWFyKEltYWdlRnJhbWVEYXRhOjpDYWNoaW5nOjpFbXB0eSkpIHsKICAgICAgICAgICAgIGRlbHRh
Qnl0ZXMgKz0gYnl0ZXM7CiAgICAgICAgICAgICBkZWx0YUJ5dGVzICs9IG1fZGVjb2RlZFByb3Bl
cnRpZXNTaXplOwogICAgICAgICAgICAgbV9kZWNvZGVkUHJvcGVydGllc1NpemUgPSAwOwpAQCAt
MzY2LDE1ICszNDcsMTUgQEAgYm9vbCBCaXRtYXBJbWFnZTo6aXNTaXplQXZhaWxhYmxlKCkKICAg
ICByZXR1cm4gbV9zaXplQXZhaWxhYmxlOwogfQogCi1ib29sIEJpdG1hcEltYWdlOjplbnN1cmVG
cmFtZUlzQ2FjaGVkKHNpemVfdCBpbmRleCwgSW1hZ2VGcmFtZUNhY2hpbmcgZnJhbWVDYWNoaW5n
KQorYm9vbCBCaXRtYXBJbWFnZTo6ZW5zdXJlRnJhbWVJc0NhY2hlZChzaXplX3QgaW5kZXgsIElt
YWdlRnJhbWVEYXRhOjpDYWNoaW5nIGNhY2hpbmcpCiB7CiAgICAgaWYgKGluZGV4ID49IGZyYW1l
Q291bnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKGluZGV4ID49IG1fZnJh
bWVzLnNpemUoKQotICAgICAgICB8fCAoZnJhbWVDYWNoaW5nID09IENhY2hlTWV0YWRhdGFBbmRG
cmFtZSAmJiAhbV9mcmFtZXNbaW5kZXhdLm1faW1hZ2UpCi0gICAgICAgIHx8IChmcmFtZUNhY2hp
bmcgPT0gQ2FjaGVNZXRhZGF0YU9ubHkgJiYgIW1fZnJhbWVzW2luZGV4XS5tX2hhdmVNZXRhZGF0
YSkpCi0gICAgICAgIGNhY2hlRnJhbWUoaW5kZXgsIDAsIGZyYW1lQ2FjaGluZyk7CisgICAgICAg
IHx8IChjYWNoaW5nID09IEltYWdlRnJhbWVEYXRhOjpDYWNoaW5nOjpNZXRhZGF0YUFuZEltYWdl
ICYmICFtX2ZyYW1lc1tpbmRleF0uaGFzSW1hZ2UoKSkKKyAgICAgICAgfHwgKGNhY2hpbmcgPT0g
SW1hZ2VGcmFtZURhdGE6OkNhY2hpbmc6Ok1ldGFkYXRhICYmICFtX2ZyYW1lc1tpbmRleF0uaGFz
TWV0YWRhdGEoKSkpCisgICAgICAgIGNhY2hlRnJhbWUoaW5kZXgsIDAsIGNhY2hpbmcpOwogCiAg
ICAgcmV0dXJuIHRydWU7CiB9CkBAIC0zODgsMTAgKzM2OSw5IEBAIE5hdGl2ZUltYWdlUHRyIEJp
dG1hcEltYWdlOjpmcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIGZsb2F0IHByZXNlbnRh
dGlvblNjCiAKICAgICAvLyBXZSBtYXkgaGF2ZSBjYWNoZWQgYSBmcmFtZSB3aXRoIGEgaGlnaGVy
IHN1YnNhbXBsaW5nIGxldmVsLCBpbiB3aGljaCBjYXNlIHdlIG5lZWQgdG8KICAgICAvLyByZS1k
ZWNvZGUgd2l0aCBhIGxvd2VyIGxldmVsLgotICAgIGlmIChpbmRleCA8IG1fZnJhbWVzLnNpemUo
KSAmJiBtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZSAmJiBzdWJzYW1wbGluZ0xldmVsIDwgbV9mcmFt
ZXNbaW5kZXhdLm1fc3Vic2FtcGxpbmdMZXZlbCkgeworICAgIGlmIChpbmRleCA8IG1fZnJhbWVz
LnNpemUoKSAmJiBtX2ZyYW1lc1tpbmRleF0uaGFzSW1hZ2UoKSAmJiBzdWJzYW1wbGluZ0xldmVs
IDwgbV9mcmFtZXNbaW5kZXhdLnN1YnNhbXBsaW5nTGV2ZWwoKSkgewogICAgICAgICAvLyBJZiB0
aGUgaW1hZ2UgaXMgYWxyZWFkeSBjYWNoZWQsIGJ1dCBhdCB0b28gc21hbGwgYSBzaXplLCByZS1k
ZWNvZGUgYSBsYXJnZXIgdmVyc2lvbi4KLSAgICAgICAgaW50IHNpemVDaGFuZ2UgPSAtbV9mcmFt
ZXNbaW5kZXhdLm1fZnJhbWVCeXRlczsKLSAgICAgICAgbV9mcmFtZXNbaW5kZXhdLmNsZWFyKHRy
dWUpOworICAgICAgICBpbnQgc2l6ZUNoYW5nZSA9IC1tX2ZyYW1lc1tpbmRleF0uY2xlYXIoSW1h
Z2VGcmFtZURhdGE6OkNhY2hpbmc6OkVtcHR5KTsKICAgICAgICAgaW52YWxpZGF0ZVBsYXRmb3Jt
RGF0YSgpOwogICAgICAgICBtX2RlY29kZWRTaXplICs9IHNpemVDaGFuZ2U7CiAgICAgICAgIGlm
IChpbWFnZU9ic2VydmVyKCkpCkBAIC0zOTksNDAgKzM3OSw3MiBAQCBOYXRpdmVJbWFnZVB0ciBC
aXRtYXBJbWFnZTo6ZnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBmbG9hdCBwcmVzZW50
YXRpb25TYwogICAgIH0KIAogICAgIC8vIElmIHdlIGhhdmVuJ3QgZmV0Y2hlZCBhIGZyYW1lIHll
dCwgZG8gc28uCi0gICAgaWYgKGluZGV4ID49IG1fZnJhbWVzLnNpemUoKSB8fCAhbV9mcmFtZXNb
aW5kZXhdLm1faW1hZ2UpCi0gICAgICAgIGNhY2hlRnJhbWUoaW5kZXgsIHN1YnNhbXBsaW5nTGV2
ZWwsIENhY2hlTWV0YWRhdGFBbmRGcmFtZSk7CisgICAgaWYgKGluZGV4ID49IG1fZnJhbWVzLnNp
emUoKSB8fCAhbV9mcmFtZXNbaW5kZXhdLmhhc0ltYWdlKCkpCisgICAgICAgIGNhY2hlRnJhbWUo
aW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwsIEltYWdlRnJhbWVEYXRhOjpDYWNoaW5nOjpNZXRhZGF0
YUFuZEltYWdlKTsKKworICAgIHJldHVybiBtX2ZyYW1lc1tpbmRleF0uaW1hZ2UoKTsKK30KKyAg
ICAKK05hdGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpuYXRpdmVJbWFnZSgpCit7CisgICAgcmV0
dXJuIGZyYW1lSW1hZ2VBdEluZGV4KDApOworfQorICAgIAorTmF0aXZlSW1hZ2VQdHIgQml0bWFw
SW1hZ2U6Om5hdGl2ZUltYWdlT2ZTaXplKGNvbnN0IEludFNpemUmIHNpemUpCit7CisgICAgc2l6
ZV90IGNvdW50ID0gZnJhbWVDb3VudCgpOworICAgIAorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgY291bnQ7ICsraSkgeworICAgICAgICBhdXRvIGltYWdlID0gZnJhbWVJbWFnZUF0SW5kZXgo
aSk7CisgICAgICAgIGlmIChpbWFnZSAmJiBQbGF0Zm9ybUltYWdlKGltYWdlKS5zaXplKCkgPT0g
c2l6ZSkKKyAgICAgICAgICAgIHJldHVybiBpbWFnZTsKKyAgICB9CisgICAgCisgICAgLy8gRmFs
bGJhY2sgdG8gdGhlIGZpcnN0IGZyYW1lIGltYWdlIGlmIHdlIGNhbid0IGZpbmQgdGhlIHJpZ2h0
IHNpemUKKyAgICByZXR1cm4gZnJhbWVJbWFnZUF0SW5kZXgoMCk7Cit9CisgICAgCitOYXRpdmVJ
bWFnZVB0ciBCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKQoreworICAg
IHJldHVybiBmcmFtZUltYWdlQXRJbmRleChtX2N1cnJlbnRGcmFtZSk7Cit9CiAKLSAgICByZXR1
cm4gbV9mcmFtZXNbaW5kZXhdLm1faW1hZ2U7CitWZWN0b3I8TmF0aXZlSW1hZ2VQdHI+IEJpdG1h
cEltYWdlOjpmcmFtZXNOYXRpdmVJbWFnZXMoKQoreworICAgIFZlY3RvcjxOYXRpdmVJbWFnZVB0
cj4gaW1hZ2VzOworICAgIHNpemVfdCBjb3VudCA9IGZyYW1lQ291bnQoKTsKKyAgICAKKyAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKKyAgICAgICAgaWYgKGF1dG8gaW1h
Z2UgPSBmcmFtZUltYWdlQXRJbmRleChpKSkKKyAgICAgICAgICAgIGltYWdlcy5hcHBlbmQoaW1h
Z2UpOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gaW1hZ2VzOwogfQogCiBib29sIEJpdG1hcElt
YWdlOjpmcmFtZUlzQ29tcGxldGVBdEluZGV4KHNpemVfdCBpbmRleCkKIHsKLSAgICBpZiAoIWVu
c3VyZUZyYW1lSXNDYWNoZWQoaW5kZXgsIENhY2hlTWV0YWRhdGFPbmx5KSkKKyAgICBpZiAoIWVu
c3VyZUZyYW1lSXNDYWNoZWQoaW5kZXgsIEltYWdlRnJhbWVEYXRhOjpDYWNoaW5nOjpNZXRhZGF0
YSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBtX2ZyYW1lc1tpbmRleF0u
bV9pc0NvbXBsZXRlOworICAgIHJldHVybiBtX2ZyYW1lc1tpbmRleF0uaXNDb21wbGV0ZSgpOwog
fQogCiBmbG9hdCBCaXRtYXBJbWFnZTo6ZnJhbWVEdXJhdGlvbkF0SW5kZXgoc2l6ZV90IGluZGV4
KQogewotICAgIGlmICghZW5zdXJlRnJhbWVJc0NhY2hlZChpbmRleCwgQ2FjaGVNZXRhZGF0YU9u
bHkpKQorICAgIGlmICghZW5zdXJlRnJhbWVJc0NhY2hlZChpbmRleCwgSW1hZ2VGcmFtZURhdGE6
OkNhY2hpbmc6Ok1ldGFkYXRhKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4gbV9m
cmFtZXNbaW5kZXhdLm1fZHVyYXRpb247Ci19Ci0KLU5hdGl2ZUltYWdlUHRyIEJpdG1hcEltYWdl
OjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpCi17Ci0gICAgcmV0dXJuIGZyYW1lSW1hZ2VB
dEluZGV4KGN1cnJlbnRGcmFtZSgpKTsKKyAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLmR1cmF0
aW9uKCk7CiB9CiAKIGJvb2wgQml0bWFwSW1hZ2U6OmZyYW1lSGFzQWxwaGFBdEluZGV4KHNpemVf
dCBpbmRleCkKIHsKLSAgICBpZiAoIWVuc3VyZUZyYW1lSXNDYWNoZWQoaW5kZXgsIENhY2hlTWV0
YWRhdGFPbmx5KSkKKyAgICBpZiAoIWVuc3VyZUZyYW1lSXNDYWNoZWQoaW5kZXgsIEltYWdlRnJh
bWVEYXRhOjpDYWNoaW5nOjpNZXRhZGF0YSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAg
aWYgKG1fZnJhbWVzW2luZGV4XS5tX2hhdmVNZXRhZGF0YSkKLSAgICAgICAgcmV0dXJuIG1fZnJh
bWVzW2luZGV4XS5tX2hhc0FscGhhOworICAgIGlmIChtX2ZyYW1lc1tpbmRleF0uaGFzTWV0YWRh
dGEoKSkKKyAgICAgICAgcmV0dXJuIG1fZnJhbWVzW2luZGV4XS5oYXNBbHBoYSgpOwogCiAgICAg
cmV0dXJuIG1fc291cmNlLmZyYW1lSGFzQWxwaGFBdEluZGV4KGluZGV4KTsKIH0KQEAgLTQ0NCwx
MSArNDU2LDExIEBAIGJvb2wgQml0bWFwSW1hZ2U6OmN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1
ZSgpCiAKIEltYWdlT3JpZW50YXRpb24gQml0bWFwSW1hZ2U6OmZyYW1lT3JpZW50YXRpb25BdElu
ZGV4KHNpemVfdCBpbmRleCkKIHsKLSAgICBpZiAoIWVuc3VyZUZyYW1lSXNDYWNoZWQoaW5kZXgs
IENhY2hlTWV0YWRhdGFPbmx5KSkKKyAgICBpZiAoIWVuc3VyZUZyYW1lSXNDYWNoZWQoaW5kZXgs
IEltYWdlRnJhbWVEYXRhOjpDYWNoaW5nOjpNZXRhZGF0YSkpCiAgICAgICAgIHJldHVybiBJbWFn
ZU9yaWVudGF0aW9uKCk7CiAKLSAgICBpZiAobV9mcmFtZXNbaW5kZXhdLm1faGF2ZU1ldGFkYXRh
KQotICAgICAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLm1fb3JpZW50YXRpb247CisgICAgaWYg
KG1fZnJhbWVzW2luZGV4XS5oYXNNZXRhZGF0YSgpKQorICAgICAgICByZXR1cm4gbV9mcmFtZXNb
aW5kZXhdLm9yaWVudGF0aW9uKCk7CiAKICAgICByZXR1cm4gbV9zb3VyY2Uub3JpZW50YXRpb25B
dEluZGV4KGluZGV4KTsKIH0KQEAgLTcwMCwxNyArNzEyLDU2IEBAIENvbG9yIEJpdG1hcEltYWdl
OjpzaW5nbGVQaXhlbFNvbGlkQ29sb3IoKQogICAgICAgICByZXR1cm4gQ29sb3IoKTsKICAgICAK
ICAgICBBU1NFUlQobV9mcmFtZXMuc2l6ZSgpKTsKLSAgICBtX3NvbGlkQ29sb3IgPSBOYXRpdmVJ
bWFnZTo6c2luZ2xlUGl4ZWxTb2xpZENvbG9yKG1fZnJhbWVzWzBdLm1faW1hZ2UuZ2V0KCkpOwor
ICAgIG1fc29saWRDb2xvciA9IG1fZnJhbWVzWzBdLnNpbmdsZVBpeGVsU29saWRDb2xvcigpOwog
ICAgIAogICAgIEFTU0VSVChtX3NvbGlkQ29sb3IpOwogICAgIHJldHVybiBtX3NvbGlkQ29sb3Iu
dmFsdWUoKTsKIH0KICAgICAKK2Jvb2wgQml0bWFwSW1hZ2U6OmlzQWxtb3N0U29saWRDb2xvcigp
Cit7CisgICAgaWYgKGZyYW1lQ291bnQoKSAhPSAxKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICByZXR1cm4gZW5zdXJlRnJhbWVJc0NhY2hlZCgwKSAmJiBtX2ZyYW1lc1swXS5pc0FsbW9z
dFNvbGlkQ29sb3IoKTsKK30KKyAgICAKIGJvb2wgQml0bWFwSW1hZ2U6OmNhbkFuaW1hdGUoKQog
ewogICAgIHJldHVybiBzaG91bGRBbmltYXRlKCkgJiYgZnJhbWVDb3VudCgpID4gMTsKIH0KIAor
dm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3Bl
cmF0b3Igb3AsIEJsZW5kTW9kZSBtb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24gZGVz
Y3JpcHRpb24pCit7CisgICAgaWYgKGRlc3RSZWN0LmlzRW1wdHkoKSB8fCBzcmNSZWN0LmlzRW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuOworCisjaWYgUExBVEZPUk0oSU9TKQorICAgIHN0YXJ0QW5p
bWF0aW9uKERvTm90Q2F0Y2hVcCk7CisjZWxzZQorICAgIHN0YXJ0QW5pbWF0aW9uKCk7CisjZW5k
aWYKKyAgICAKKyAgICBDb2xvciBjb2xvciA9IHNpbmdsZVBpeGVsU29saWRDb2xvcigpOworICAg
IGlmIChjb2xvci5pc1ZhbGlkKCkpIHsKKyAgICAgICAgZmlsbFdpdGhTb2xpZENvbG9yKGNvbnRl
eHQsIGRlc3RSZWN0LCBjb2xvciwgb3ApOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAor
ICAgIGF1dG8gaW1hZ2UgPSBmcmFtZUltYWdlQXRJbmRleChtX2N1cnJlbnRGcmFtZSwgUGxhdGZv
cm1JbWFnZTo6c3Vic2FtcGxpbmdTY2FsZShjb250ZXh0LCBkZXN0UmVjdCwgc3JjUmVjdCkpOwor
ICAgIGlmICghaW1hZ2UpIC8vIElmIGl0J3MgdG9vIGVhcmx5IHdlIHdvbid0IGhhdmUgYW4gaW1h
Z2UgeWV0LgorICAgICAgICByZXR1cm47CisgICAgCisgICAgSW1hZ2VPcmllbnRhdGlvbiBvcmll
bnRhdGlvbihkZXNjcmlwdGlvbi5pbWFnZU9yaWVudGF0aW9uKCkpOworICAgIGlmIChkZXNjcmlw
dGlvbi5yZXNwZWN0SW1hZ2VPcmllbnRhdGlvbigpID09IFJlc3BlY3RJbWFnZU9yaWVudGF0aW9u
KQorICAgICAgICBvcmllbnRhdGlvbiA9IGZyYW1lT3JpZW50YXRpb25BdEluZGV4KG1fY3VycmVu
dEZyYW1lKTsKKyAgICAKKyAgICBQbGF0Zm9ybUltYWdlKGltYWdlKS5kcmF3KGNvbnRleHQsIGRl
c3RSZWN0LCBzcmNSZWN0LCBtX3NpemUsIG9wLCBtb2RlLCBvcmllbnRhdGlvbik7CisgICAgCisg
ICAgaWYgKGltYWdlT2JzZXJ2ZXIoKSkKKyAgICAgICAgaW1hZ2VPYnNlcnZlcigpLT5kaWREcmF3
KHRoaXMpOworfQorICAgIAogdm9pZCBCaXRtYXBJbWFnZTo6ZHVtcChUZXh0U3RyZWFtJiB0cykg
Y29uc3QKIHsKICAgICBJbWFnZTo6ZHVtcCh0cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAppbmRleCAwNzU4OTI5Y2Q4N2ZhZGFjZjAyYjZlZDhl
ZWFmZTdkZWZkNjZmMGM1Li4yMjE4YzgyNGI1MjhmZDYzOWJhYjEzOGRlY2M5OGI5ODE2YTE2ODFl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFn
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgK
QEAgLTI4LDExICsyOCwxMyBAQAogI2lmbmRlZiBCaXRtYXBJbWFnZV9oCiAjZGVmaW5lIEJpdG1h
cEltYWdlX2gKIAotI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNs
dWRlICJJbWFnZS5oIgorI2luY2x1ZGUgIkltYWdlRnJhbWVEYXRhLmgiCiAjaW5jbHVkZSAiSW1h
Z2VPcmllbnRhdGlvbi5oIgogI2luY2x1ZGUgIkltYWdlU291cmNlLmgiCiAjaW5jbHVkZSAiSW50
U2l6ZS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtSW1hZ2UuaCIKIAogI2lmIFVTRShDRykgfHwgVVNF
KEFQUEtJVCkKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CkBAIC00Nyw2MyArNDksOSBAQCB0
eXBlZGVmIHN0cnVjdCBIQklUTUFQX18gKkhCSVRNQVA7CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewotICAgIHN0cnVjdCBGcmFtZURhdGE7Ci19Ci0KLW5hbWVzcGFjZSBXVEYgewotICAg
IHRlbXBsYXRlPD4gc3RydWN0IFZlY3RvclRyYWl0czxXZWJDb3JlOjpGcmFtZURhdGE+IDogcHVi
bGljIFNpbXBsZUNsYXNzVmVjdG9yVHJhaXRzIHsKLSAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wg
Y2FuSW5pdGlhbGl6ZVdpdGhNZW1zZXQgPSBmYWxzZTsgLy8gTm90IGFsbCBGcmFtZURhdGEgbWVt
YmVycyBpbml0aWFsaXplIHRvIDAuCi0gICAgfTsKLX0KLQotbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBUaW1lcjsKIAotbmFtZXNwYWNlIE5hdGl2ZUltYWdlIHsKLSAgICBJbnRTaXplIHNp
emUoY29uc3QgTmF0aXZlSW1hZ2VQdHImKTsKLSAgICBib29sIGhhc0FscGhhKGNvbnN0IE5hdGl2
ZUltYWdlUHRyJik7Ci0gICAgQ29sb3Igc2luZ2xlUGl4ZWxTb2xpZENvbG9yKGNvbnN0IE5hdGl2
ZUltYWdlUHRyJik7Ci19Ci0KLS8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLy8gRnJhbWVEYXRhIENsYXNzCi0vLyA9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotc3RydWN0IEZyYW1lRGF0YSB7Ci1wdWJs
aWM6Ci0gICAgRnJhbWVEYXRhKCkKLSAgICAgICAgOiBtX2hhdmVNZXRhZGF0YShmYWxzZSkKLSAg
ICAgICAgLCBtX2lzQ29tcGxldGUoZmFsc2UpCi0gICAgICAgICwgbV9oYXNBbHBoYSh0cnVlKQot
ICAgIHsKLSAgICB9Ci0KLSAgICB+RnJhbWVEYXRhKCkKLSAgICB7IAotICAgICAgICBjbGVhcih0
cnVlKTsKLSAgICB9Ci0KLSAgICAvLyBDbGVhciB0aGUgY2FjaGVkIGltYWdlIGRhdGEgb24gdGhl
IGZyYW1lLCBhbmQgKG9wdGlvbmFsbHkpIHRoZSBtZXRhZGF0YS4KLSAgICAvLyBSZXR1cm5zIHdo
ZXRoZXIgdGhlcmUgd2FzIGNhY2hlZCBpbWFnZSBkYXRhIHRvIGNsZWFyLgotICAgIGJvb2wgY2xl
YXIoYm9vbCBjbGVhck1ldGFkYXRhKTsKLSAgICAKLSAgICB1bnNpZ25lZCB1c2VkRnJhbWVCeXRl
cygpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2UgPyBtX2ZyYW1lQnl0ZXMgOiAwOyB9Ci0KLSAgICBO
YXRpdmVJbWFnZVB0ciBtX2ltYWdlOwotICAgIEltYWdlT3JpZW50YXRpb24gbV9vcmllbnRhdGlv
biB7IERlZmF1bHRJbWFnZU9yaWVudGF0aW9uIH07Ci0gICAgU3Vic2FtcGxpbmdMZXZlbCBtX3N1
YnNhbXBsaW5nTGV2ZWwgeyAwIH07Ci0gICAgZmxvYXQgbV9kdXJhdGlvbiB7IDAgfTsKLSAgICBi
b29sIG1faGF2ZU1ldGFkYXRhIDogMTsKLSAgICBib29sIG1faXNDb21wbGV0ZSA6IDE7Ci0gICAg
Ym9vbCBtX2hhc0FscGhhIDogMTsKLSAgICB1bnNpZ25lZCBtX2ZyYW1lQnl0ZXMgeyAwIH07Ci19
OwotCi0vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0vLyBCaXRtYXBJbWFnZSBDbGFzcwotLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotCiBjbGFzcyBCaXRtYXBJbWFnZSBmaW5hbCA6IHB1YmxpYyBJ
bWFnZSB7CiAgICAgZnJpZW5kIGNsYXNzIEdlbmVyYXRlZEltYWdlOwogICAgIGZyaWVuZCBjbGFz
cyBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTsKQEAgLTE1NSwxMiArMTAzLDYgQEAgcHVibGljOgog
ICAgIENGRGF0YVJlZiBnZXRUSUZGUmVwcmVzZW50YXRpb24oKSBvdmVycmlkZTsKICNlbmRpZgog
Ci0jaWYgVVNFKENHKQotICAgIFdFQkNPUkVfRVhQT1JUIENHSW1hZ2VSZWYgZ2V0Q0dJbWFnZVJl
ZigpIG92ZXJyaWRlOwotICAgIENHSW1hZ2VSZWYgZ2V0Rmlyc3RDR0ltYWdlUmVmT2ZTaXplKGNv
bnN0IEludFNpemUmKSBvdmVycmlkZTsKLSAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gZ2V0Q0dJ
bWFnZUFycmF5KCkgb3ZlcnJpZGU7Ci0jZW5kaWYKLQogI2lmIFBMQVRGT1JNKFdJTikKICAgICBi
b29sIGdldEhCSVRNQVAoSEJJVE1BUCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBnZXRIQklUTUFQT2ZT
aXplKEhCSVRNQVAsIGNvbnN0IEludFNpemUqKSBvdmVycmlkZTsKQEAgLTE3NCw4ICsxMTYsMTMg
QEAgcHVibGljOgogICAgIEV2YXNfT2JqZWN0KiBnZXRFdmFzT2JqZWN0KEV2YXMqKSBvdmVycmlk
ZTsKICNlbmRpZgogCisgICAgV0VCQ09SRV9FWFBPUlQgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1h
Z2UoKSBvdmVycmlkZTsKKyAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZU9mU2l6ZShjb25z
dCBJbnRTaXplJikgb3ZlcnJpZGU7CiAgICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JD
dXJyZW50RnJhbWUoKSBvdmVycmlkZTsKICAgICBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9u
Rm9yQ3VycmVudEZyYW1lKCkgb3ZlcnJpZGUgeyByZXR1cm4gZnJhbWVPcmllbnRhdGlvbkF0SW5k
ZXgoY3VycmVudEZyYW1lKCkpOyB9CisgICAgVmVjdG9yPE5hdGl2ZUltYWdlUHRyPiBmcmFtZXNO
YXRpdmVJbWFnZXMoKSBvdmVycmlkZTsKKyAgICAKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlz
QWxtb3N0U29saWRDb2xvcigpOwogCiAgICAgYm9vbCBjdXJyZW50RnJhbWVLbm93blRvQmVPcGFx
dWUoKSBvdmVycmlkZTsKIApAQCAtMjE1LDcgKzE2Miw2IEBAIHByb3RlY3RlZDoKICAgICBzaXpl
X3QgZnJhbWVDb3VudCgpOwogCiAgICAgTmF0aXZlSW1hZ2VQdHIgZnJhbWVJbWFnZUF0SW5kZXgo
c2l6ZV90LCBmbG9hdCBwcmVzZW50YXRpb25TY2FsZUhpbnQgPSAxKTsKLSAgICBOYXRpdmVJbWFn
ZVB0ciBjb3B5VW5zY2FsZWRGcmFtZUltYWdlQXRJbmRleChzaXplX3QpOwogCiAgICAgYm9vbCBo
YXZlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90KTsKIApAQCAtMjI1LDExICsxNzEsMTAgQEAgcHJv
dGVjdGVkOgogICAgIEltYWdlT3JpZW50YXRpb24gZnJhbWVPcmllbnRhdGlvbkF0SW5kZXgoc2l6
ZV90KTsKIAogICAgIC8vIERlY29kZXMgYW5kIGNhY2hlcyBhIGZyYW1lLiBOZXZlciBhY2Nlc3Nl
ZCBleGNlcHQgaW50ZXJuYWxseS4KLSAgICBlbnVtIEltYWdlRnJhbWVDYWNoaW5nIHsgQ2FjaGVN
ZXRhZGF0YU9ubHksIENhY2hlTWV0YWRhdGFBbmRGcmFtZSB9OwotICAgIHZvaWQgY2FjaGVGcmFt
ZShzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwsIEltYWdlRnJhbWVDYWNoaW5nID0gQ2Fj
aGVNZXRhZGF0YUFuZEZyYW1lKTsKKyAgICB2b2lkIGNhY2hlRnJhbWUoc2l6ZV90IGluZGV4LCBT
dWJzYW1wbGluZ0xldmVsLCBJbWFnZUZyYW1lRGF0YTo6Q2FjaGluZyA9IEltYWdlRnJhbWVEYXRh
OjpDYWNoaW5nOjpNZXRhZGF0YUFuZEltYWdlKTsKIAogICAgIC8vIENhbGxlZCBiZWZvcmUgYWNj
ZXNzaW5nIG1fZnJhbWVzW2luZGV4XSBmb3IgaW5mbyB3aXRob3V0IGRlY29kaW5nLiBSZXR1cm5z
IGZhbHNlIG9uIGluZGV4IG91dCBvZiBib3VuZHMuCi0gICAgYm9vbCBlbnN1cmVGcmFtZUlzQ2Fj
aGVkKHNpemVfdCBpbmRleCwgSW1hZ2VGcmFtZUNhY2hpbmcgPSBDYWNoZU1ldGFkYXRhQW5kRnJh
bWUpOworICAgIGJvb2wgZW5zdXJlRnJhbWVJc0NhY2hlZChzaXplX3QgaW5kZXgsIEltYWdlRnJh
bWVEYXRhOjpDYWNoaW5nID0gSW1hZ2VGcmFtZURhdGE6OkNhY2hpbmc6Ok1ldGFkYXRhQW5kSW1h
Z2UpOwogCiAgICAgLy8gQ2FsbGVkIHRvIGludmFsaWRhdGUgY2FjaGVkIGRhdGEuIFdoZW4gfGRl
c3Ryb3lBbGx8IGlzIHRydWUsIHdlIHdpcGUgb3V0CiAgICAgLy8gdGhlIGVudGlyZSBmcmFtZSBi
dWZmZXIgY2FjaGUgYW5kIHRlbGwgdGhlIGltYWdlIHNvdXJjZSB0byBkZXN0cm95CkBAIC0yOTIs
NyArMjM3LDcgQEAgcHJpdmF0ZToKICAgICBtdXRhYmxlIEludFNpemUgbV9zaXplUmVzcGVjdGlu
Z09yaWVudGF0aW9uOwogCiAgICAgc2l6ZV90IG1fY3VycmVudEZyYW1lIHsgMCB9OyAvLyBUaGUg
aW5kZXggb2YgdGhlIGN1cnJlbnQgZnJhbWUgb2YgYW5pbWF0aW9uLgotICAgIFZlY3RvcjxGcmFt
ZURhdGEsIDE+IG1fZnJhbWVzOyAvLyBBbiBhcnJheSBvZiB0aGUgY2FjaGVkIGZyYW1lcyBvZiB0
aGUgYW5pbWF0aW9uLiBXZSBoYXZlIHRvIHJlZiBmcmFtZXMgdG8gcGluIHRoZW0gaW4gdGhlIGNh
Y2hlLgorICAgIFZlY3RvcjxJbWFnZUZyYW1lRGF0YSwgMT4gbV9mcmFtZXM7IC8vIEFuIGFycmF5
IG9mIHRoZSBjYWNoZWQgZnJhbWVzIG9mIHRoZSBhbmltYXRpb24uIFdlIGhhdmUgdG8gcmVmIGZy
YW1lcyB0byBwaW4gdGhlbSBpbiB0aGUgY2FjaGUuCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGlt
ZXI+IG1fZnJhbWVUaW1lcjsKICAgICBpbnQgbV9yZXBldGl0aW9uQ291bnQgeyBjQW5pbWF0aW9u
Tm9uZSB9OyAvLyBIb3cgbWFueSB0b3RhbCBhbmltYXRpb24gbG9vcHMgd2Ugc2hvdWxkIGRvLiBU
aGlzIHdpbGwgYmUgY0FuaW1hdGlvbk5vbmUgaWYgdGhpcyBpbWFnZSB0eXBlIGlzIGluY2FwYWJs
ZSBvZiBhbmltYXRpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9CaXRtYXBQaXhlbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Jp
dG1hcFBpeGVscy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFmYWUzZDJlNDBjY2YxZDgxZjZiYTU3ZGI2ODJkOTJk
NDY5YmJhYzIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9CaXRtYXBQaXhlbHMuaApAQCAtMCwwICsxLDE4MyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNv
bG9yLmgiCisjaW5jbHVkZSAiSW50UmVjdC5oIgorI2luY2x1ZGUgIkludFNpemUuaCIKKyNpbmNs
dWRlICJOYXRpdmVJbWFnZVB0ci5oIgorCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEJpdG1hcFBpeGVscyB7CitwdWJsaWM6CisgICAgc3Rh
dGljIHN0ZDo6dW5pcXVlX3B0cjxCaXRtYXBQaXhlbHM+IGNyZWF0ZShjb25zdCBJbnRTaXplJiBz
aXplLCBib29sIHByZW11bHRpcGx5QWxwaGEpCisgICAgeworICAgICAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxCaXRtYXBQaXhlbHM+KHNpemUsIHByZW11bHRpcGx5QWxwaGEpOworICAgIH0K
KworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Qml0bWFwUGl4ZWxzPiBjcmVhdGUoY29uc3Qg
Qml0bWFwUGl4ZWxzJiBvdGhlcikKKyAgICB7CisgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPEJpdG1hcFBpeGVscz4ob3RoZXIpOworICAgIH0KKworICAgIEJpdG1hcFBpeGVscyhjb25z
dCBJbnRTaXplJiBzaXplLCBib29sIHByZW11bHRpcGx5QWxwaGEgPSB0cnVlKQorICAgICAgICA6
IG1fcHJlbXVsdGlwbHlBbHBoYShwcmVtdWx0aXBseUFscGhhKQorICAgIHsKKyAgICAgICAgQVNT
RVJUKCFzaXplLmlzRW1wdHkoKSk7CisgICAgICAgIHNldFNpemUoc2l6ZSk7CisgICAgfQorCisg
ICAgQml0bWFwUGl4ZWxzKGNvbnN0IEJpdG1hcFBpeGVscyYgb3RoZXIpCisgICAgeworICAgICAg
ICBpZiAodGhpcyA9PSAmb3RoZXIpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIAorICAg
ICAgICBtX2JhY2tpbmdTdG9yZSA9IG90aGVyLm1fYmFja2luZ1N0b3JlOworICAgICAgICBtX3Bp
eGVscyA9IG1fYmFja2luZ1N0b3JlLmRhdGEoKTsKKyAgICAgICAgbV9zaXplID0gb3RoZXIubV9z
aXplOworICAgICAgICBtX3JlY3QgPSBvdGhlci5tX3JlY3Q7CisgICAgICAgIG1fcHJlbXVsdGlw
bHlBbHBoYSA9IG90aGVyLm1fcHJlbXVsdGlwbHlBbHBoYTsKKyAgICB9CisKKyAgICBOYXRpdmVJ
bWFnZVB0ciBpbWFnZSgpIGNvbnN0OworCisgICAgYm9vbCBzZXRTaXplKGNvbnN0IEludFNpemUm
IHNpemUpCisgICAgeworICAgICAgICBpZiAoIW1fYmFja2luZ1N0b3JlLnRyeVJlc2VydmVDYXBh
Y2l0eShzaXplLmFyZWEoKSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIAor
ICAgICAgICBtX2JhY2tpbmdTdG9yZS5yZXNpemUoc2l6ZS5hcmVhKCkpOworICAgICAgICBtX3Bp
eGVscyA9IG1fYmFja2luZ1N0b3JlLmRhdGEoKTsKKyAgICAgICAgbV9zaXplID0gc2l6ZTsKKyAg
ICAgICAgbV9yZWN0ID0gSW50UmVjdChJbnRQb2ludCgpLCBtX3NpemUpOworICAgICAgICBjbGVh
cigpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCisgICAgdm9pZCBzZXRSZWN0
KGNvbnN0IEludFJlY3QmIHJlY3QpCisgICAgeworICAgICAgICBBU1NFUlQoIW1fc2l6ZS5pc0Vt
cHR5KCkpOworICAgICAgICBBU1NFUlQoaW5Cb3VuZHMocmVjdCkpOworICAgICAgICBtX3JlY3Qg
PSByZWN0OworICAgIH0KKyAgICAKKyAgICBJbnRTaXplIHNpemUoKSBjb25zdCB7IHJldHVybiBt
X3NpemU7IH0KKyAgICBJbnRSZWN0IHJlY3QoKSBjb25zdCB7IHJldHVybiBtX3JlY3Q7IH0KKwor
ICAgIFJHQkEzMiogYXQoaW50IHgsIGludCB5KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
IG1fcGl4ZWxzICsgeSAqIG1fc2l6ZS53aWR0aCgpICsgeDsKKyAgICB9CisKKyAgICB2b2lkIGNs
ZWFyKCkKKyAgICB7CisgICAgICAgIG1lbXNldChtX3BpeGVscywgMCwgbV9zaXplLmFyZWEoKSAq
IHNpemVvZihSR0JBMzIpKTsKKyAgICB9CisKKyAgICB2b2lkIGNsZWFyUmVjdChjb25zdCBJbnRS
ZWN0JiByZWN0KQorICAgIHsKKyAgICAgICAgaWYgKHJlY3QuaXNFbXB0eSgpIHx8IGluQm91bmRz
KHJlY3QpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAKKyAgICAgICAgc2l6ZV90IHJl
Y3RXaWR0aEluQnl0ZXMgPSByZWN0LndpZHRoKCkgKiBzaXplb2YoUkdCQTMyKTsKKyAgICAgICAg
UkdCQTMyKiBzdGFydCA9IGF0KHJlY3QueCgpLCByZWN0LnkoKSk7CisgICAgICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgcmVjdC5oZWlnaHQoKTsgKytpKSB7CisgICAgICAgICAgICBtZW1zZXQoc3Rh
cnQsIDAsIHJlY3RXaWR0aEluQnl0ZXMpOworICAgICAgICAgICAgc3RhcnQgKz0gbV9zaXplLndp
ZHRoKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIHJlcGVhdEZpcnN0Um93KGNvbnN0
IEludFJlY3QmIHJlY3QpCisgICAgeworICAgICAgICBpZiAocmVjdC5pc0VtcHR5KCkgfHwgaW5C
b3VuZHMocmVjdCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIAorICAgICAgICBzaXpl
X3QgcmVjdFdpZHRoSW5CeXRlcyA9IHJlY3Qud2lkdGgoKSAqIHNpemVvZihSR0JBMzIpOworICAg
ICAgICBSR0JBMzIqIHNyYyA9IGF0KHJlY3QueCgpLCByZWN0LnkoKSk7CisgICAgICAgIFJHQkEz
MiogZGVzdCA9IHNyYyArIG1fc2l6ZS53aWR0aCgpOworICAgICAgICBmb3IgKGludCBpID0gMTsg
aSA8IHJlY3QuaGVpZ2h0KCk7ICsraSkgeworICAgICAgICAgICAgbWVtY3B5KGRlc3QsIHNyYywg
cmVjdFdpZHRoSW5CeXRlcyk7CisgICAgICAgICAgICBkZXN0ICs9IG1fc2l6ZS53aWR0aCgpOwor
ICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBzZXRSR0JBKGludCB4LCBpbnQgeSwgdW5zaWdu
ZWQgciwgdW5zaWduZWQgZywgdW5zaWduZWQgYiwgdW5zaWduZWQgYSkKKyAgICB7CisgICAgICAg
IHNldFJHQkEoYXQoeCwgeSksIHIsIGcsIGIsIGEpOworICAgIH0KKworICAgIHZvaWQgc2V0UkdC
QShSR0JBMzIqIGRlc3QsIHVuc2lnbmVkIHIsIHVuc2lnbmVkIGcsIHVuc2lnbmVkIGIsIHVuc2ln
bmVkIGEpCisgICAgeworICAgICAgICBpZiAoIW1fcHJlbXVsdGlwbHlBbHBoYSB8fCBhID49IDI1
NSkKKyAgICAgICAgICAgICpkZXN0ID0gbWFrZVJHQkEociwgZywgYiwgYSk7CisgICAgICAgIGVs
c2UgaWYgKCFhKQorICAgICAgICAgICAgKmRlc3QgPSAwOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICAqZGVzdCA9IG1ha2VQcmVtdWx0aXBsaWVkUkdCQShyLCBnLCBiLCBhKTsKKyAgICB9CisK
KyAgICB2b2lkIG92ZXJSR0JBKFJHQkEzMiogZGVzdCwgdW5zaWduZWQgciwgdW5zaWduZWQgZywg
dW5zaWduZWQgYiwgdW5zaWduZWQgYSkKKyAgICB7CisgICAgICAgIGlmICghYSkKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgCisgICAgICAgIGlmIChhID49IDI1NSB8fCAhYWxwaGFDaGFu
bmVsKCpkZXN0KSkgeworICAgICAgICAgICAgc2V0UkdCQShkZXN0LCByLCBnLCBiLCBhKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKCFtX3By
ZW11bHRpcGx5QWxwaGEpCisgICAgICAgICAgICAqZGVzdCA9IG1ha2VQcmVtdWx0aXBsaWVkUkdC
QShyZWRDaGFubmVsKCpkZXN0KSwgZ3JlZW5DaGFubmVsKCpkZXN0KSwgYmx1ZUNoYW5uZWwoKmRl
c3QpLCBhbHBoYUNoYW5uZWwoKmRlc3QpKTsKKyAgICAgICAgCisgICAgICAgIFJHQkEzMiBzcmMg
PSBtYWtlUkdCQShyLCBnLCBiLCBhKTsKKyAgICAgICAgKmRlc3QgPSBDb2xvcigqZGVzdCkuYmxl
bmQoc3JjKS5yZ2IoKTsKKyAgICAgICAgCisgICAgICAgIGlmICghbV9wcmVtdWx0aXBseUFscGhh
KQorICAgICAgICAgICAgKmRlc3QgPSBtYWtlVW5QcmVtdWx0aXBsaWVkUkdCQShyZWRDaGFubmVs
KCpkZXN0KSwgZ3JlZW5DaGFubmVsKCpkZXN0KSwgYmx1ZUNoYW5uZWwoKmRlc3QpLCBhbHBoYUNo
YW5uZWwoKmRlc3QpKTsKKyAgICB9CisKKyAgICBib29sIGluQm91bmRzKGNvbnN0IEludFBvaW50
JiBwb2ludCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBJbnRSZWN0KEludFBvaW50KCks
IG1fc2l6ZSkuY29udGFpbnMocG9pbnQpOworICAgIH0KKworICAgIGJvb2wgaW5Cb3VuZHMoY29u
c3QgSW50UmVjdCYgcmVjdCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBJbnRSZWN0KElu
dFBvaW50KCksIG1fc2l6ZSkuY29udGFpbnMocmVjdCk7CisgICAgfQorCitwcml2YXRlOgorICAg
IFZlY3RvcjxSR0JBMzI+IG1fYmFja2luZ1N0b3JlOworICAgIFJHQkEzMiogbV9waXhlbHMgeyBu
dWxscHRyIH07CisgICAgSW50U2l6ZSBtX3NpemU7CisgICAgSW50UmVjdCBtX3JlY3Q7IC8vIFRo
aXMgd2lsbCBhbHdheXMganVzdCBiZSB0aGUgZW50aXJlIGJ1ZmZlciBleGNlcHQgZm9yIEdJRiBh
bmQgUE5HIGZyYW1lcworICAgIGJvb2wgbV9wcmVtdWx0aXBseUFscGhhIHsgdHJ1ZSB9OworfTsK
KworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3Iu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwCmluZGV4IDRl
MjVhYTZmZDc0ZDFlNDZjNTQxNjE0OThiYzE3MmJmNjAwODc1ZDEuLjQzOWY1YTYzYzdiZWJlNTYw
NDJiMjRlN2Q3MmVjY2VjZjM2YzQwYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0NvbG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Db2xvci5jcHAKQEAgLTQ5LDYgKzQ5LDQwIEBAIGNvbnN0IFJHQkEzMiBDb2xvcjo6dHJh
bnNwYXJlbnQ7CiBzdGF0aWMgY29uc3QgUkdCQTMyIGxpZ2h0ZW5lZEJsYWNrID0gMHhGRjU0NTQ1
NDsKIHN0YXRpYyBjb25zdCBSR0JBMzIgZGFya2VuZWRXaGl0ZSA9IDB4RkZBQkFCQUI7CiAKK3N0
YXRpYyBpbmxpbmUgdW5zaWduZWQgbXVsdGlwbHkyNTUodW5zaWduZWQgYykKK3sKKyAgICAvLyBj
ICogMjU1CisgICAgLy8gICA9IGMgKiAoMjU2IC0gMSkKKyAgICAvLyAgID0gYyAqIDI1NiAtIGMK
KyAgICByZXR1cm4gKGMgPDwgOCkgLSBjOworfQorCitzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGRp
dmlkZTI1NSh1bnNpZ25lZCBjKQoreworICAgIC8vIGMgLyAyNTUKKyAgICAvLyAgID0gYyAvIDI1
NiAqICgxICsgMSAvIDI1NSkKKyAgICAvLyAgID0gKGMgKyBjIC8gMjU1KSAvIDI1NgorICAgIC8v
ICAgPSAoYyArIChjICsgYyAvIDI1NSkgLyAyNTYpIC8gMjU2CisgICAgLy8gICA9IChjICsgYyAv
IDI1NiArIGMgLyAoMjU1IHggMjU2KSkgLyAyNTYKKyAgICAvLyAgfj0gKGMgKyBjIC8gMjU2ICsg
MSkgLyAyNTYKKyAgICByZXR1cm4gKGMgKyAoYyA+PiA4KSArIDEpID4+IDg7Cit9CisgICAgCitz
dGF0aWMgaW5saW5lIHVuc2lnbmVkIGRpdmlkZUNlaWwodW5zaWduZWQgYywgdW5zaWduZWQgZCkK
K3sKKyAgICByZXR1cm4gKGMgKyBkIC0gMSkgLyBkOworfQorICAgIAorc3RhdGljIGlubGluZSB1
bnNpZ25lZCBwcmVtdWx0aXBsaWVkQ2hhbm5lbCh1bnNpZ25lZCBjLCB1bnNpZ25lZCBhKQorewor
ICAgIHJldHVybiBkaXZpZGUyNTUoYyAqIGEpOworfQorCitzdGF0aWMgaW5saW5lIHVuc2lnbmVk
IHVucHJlbXVsdGlwbGllZENoYW5uZWwodW5zaWduZWQgYywgdW5zaWduZWQgYSkKK3sKKyAgICBy
ZXR1cm4gZGl2aWRlQ2VpbChtdWx0aXBseTI1NShjKSwgYSk7Cit9CisgICAgCiBSR0JBMzIgbWFr
ZVJHQihpbnQgciwgaW50IGcsIGludCBiKQogewogICAgIHJldHVybiAweEZGMDAwMDAwIHwgc3Rk
OjptYXgoMCwgc3RkOjptaW4ociwgMjU1KSkgPDwgMTYgfCBzdGQ6Om1heCgwLCBzdGQ6Om1pbihn
LCAyNTUpKSA8PCA4IHwgc3RkOjptYXgoMCwgc3RkOjptaW4oYiwgMjU1KSk7CkBAIC01OSw2ICs5
MywxNiBAQCBSR0JBMzIgbWFrZVJHQkEoaW50IHIsIGludCBnLCBpbnQgYiwgaW50IGEpCiAgICAg
cmV0dXJuIHN0ZDo6bWF4KDAsIHN0ZDo6bWluKGEsIDI1NSkpIDw8IDI0IHwgc3RkOjptYXgoMCwg
c3RkOjptaW4ociwgMjU1KSkgPDwgMTYgfCBzdGQ6Om1heCgwLCBzdGQ6Om1pbihnLCAyNTUpKSA8
PCA4IHwgc3RkOjptYXgoMCwgc3RkOjptaW4oYiwgMjU1KSk7CiB9CiAKK1JHQkEzMiBtYWtlUHJl
bXVsdGlwbGllZFJHQkEoaW50IHIsIGludCBnLCBpbnQgYiwgaW50IGEpCit7CisgICAgcmV0dXJu
IG1ha2VSR0JBKHByZW11bHRpcGxpZWRDaGFubmVsKHIsIGEpLCBwcmVtdWx0aXBsaWVkQ2hhbm5l
bChnLCBhKSwgcHJlbXVsdGlwbGllZENoYW5uZWwoYiwgYSksIGEpOworfQorICAgIAorUkdCQTMy
IG1ha2VVblByZW11bHRpcGxpZWRSR0JBKGludCByLCBpbnQgZywgaW50IGIsIGludCBhKQorewor
ICAgIHJldHVybiBtYWtlUkdCQSh1bnByZW11bHRpcGxpZWRDaGFubmVsKHIsIGEpLCB1bnByZW11
bHRpcGxpZWRDaGFubmVsKGcsIGEpLCB1bnByZW11bHRpcGxpZWRDaGFubmVsKGIsIGEpLCBhKTsK
K30KKyAgICAKIHN0YXRpYyBpbnQgY29sb3JGbG9hdFRvUkdCQUJ5dGUoZmxvYXQgZikKIHsKICAg
ICAvLyBXZSB1c2UgbHJvdW5kZiBhbmQgMjU1IGluc3RlYWQgb2YgbmV4dGFmdGVyZigyNTYsIDAp
IHRvIG1hdGNoIENHJ3Mgcm91bmRpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0NvbG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9D
b2xvci5oCmluZGV4IGRkMjYyNzBiYjQ2NjBiMzNhZTA3MGU4Yzk0NDUyMGQ3Mjg0NTRiOGEuLmE1
NDUzMmM3NzU1YTdjODc2OTM2MjQwY2FlNGVjMzdhNGRhMGQwNDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaApAQCAtNTQsNiArNTQsOCBAQCB0eXBlZGVmIHVuc2ln
bmVkIFJHQkEzMjsgLy8gRGVwcmVjYXRlZDogVHlwZSBmb3IgYW4gUkdCQSBxdWFkcnVwbGV0LiBV
c2UgUkdCQSBjbAogCiBXRUJDT1JFX0VYUE9SVCBSR0JBMzIgbWFrZVJHQihpbnQgciwgaW50IGcs
IGludCBiKTsKIFdFQkNPUkVfRVhQT1JUIFJHQkEzMiBtYWtlUkdCQShpbnQgciwgaW50IGcsIGlu
dCBiLCBpbnQgYSk7CitXRUJDT1JFX0VYUE9SVCBSR0JBMzIgbWFrZVByZW11bHRpcGxpZWRSR0JB
KGludCByLCBpbnQgZywgaW50IGIsIGludCBhKTsKK1dFQkNPUkVfRVhQT1JUIFJHQkEzMiBtYWtl
VW5QcmVtdWx0aXBsaWVkUkdCQShpbnQgciwgaW50IGcsIGludCBiLCBpbnQgYSk7CiAKIFdFQkNP
UkVfRVhQT1JUIFJHQkEzMiBjb2xvcldpdGhPdmVycmlkZUFscGhhKFJHQkEzMiBjb2xvciwgZmxv
YXQgb3ZlcnJpZGVBbHBoYSk7CiBXRUJDT1JFX0VYUE9SVCBSR0JBMzIgY29sb3JXaXRoT3ZlcnJp
ZGVBbHBoYShSR0JBMzIgY29sb3IsIE9wdGlvbmFsPGZsb2F0PiBvdmVycmlkZUFscGhhKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCmluZGV4IDdhMjk5OTJmNzcxODhl
MDM4MjhkODBhNjViOGJlMmNkOGRjMmRlNzYuLjhlN2I1MmIxZjRmMzFjNzRhM2NiMmExMzIxNWRh
NzdhMmIxOGMwN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaApA
QCAtMTM3LDggKzEzNywxMSBAQCBwdWJsaWM6CiAKICAgICBlbnVtIFRpbGVSdWxlIHsgU3RyZXRj
aFRpbGUsIFJvdW5kVGlsZSwgU3BhY2VUaWxlLCBSZXBlYXRUaWxlIH07CiAKKyAgICB2aXJ0dWFs
IE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlKCkgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIHZp
cnR1YWwgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VPZlNpemUoY29uc3QgSW50U2l6ZSYpIHsg
cmV0dXJuIG51bGxwdHI7IH0KICAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdl
Rm9yQ3VycmVudEZyYW1lKCkgeyByZXR1cm4gbnVsbHB0cjsgfQogICAgIHZpcnR1YWwgSW1hZ2VP
cmllbnRhdGlvbiBvcmllbnRhdGlvbkZvckN1cnJlbnRGcmFtZSgpIHsgcmV0dXJuIEltYWdlT3Jp
ZW50YXRpb24oKTsgfQorICAgIHZpcnR1YWwgVmVjdG9yPE5hdGl2ZUltYWdlUHRyPiBmcmFtZXNO
YXRpdmVJbWFnZXMoKSB7IHJldHVybiB7IH07IH0KIAogICAgIC8vIEFjY2Vzc29ycyBmb3IgbmF0
aXZlIGltYWdlIGZvcm1hdHMuCiAKQEAgLTE1MCwxMiArMTUzLDYgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgQ0ZEYXRhUmVmIGdldFRJRkZSZXByZXNlbnRhdGlvbigpIHsgcmV0dXJuIG51bGxwdHI7
IH0KICNlbmRpZgogCi0jaWYgVVNFKENHKQotICAgIHZpcnR1YWwgQ0dJbWFnZVJlZiBnZXRDR0lt
YWdlUmVmKCkgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIHZpcnR1YWwgQ0dJbWFnZVJlZiBnZXRG
aXJzdENHSW1hZ2VSZWZPZlNpemUoY29uc3QgSW50U2l6ZSYpIHsgcmV0dXJuIG51bGxwdHI7IH0K
LSAgICB2aXJ0dWFsIFJldGFpblB0cjxDRkFycmF5UmVmPiBnZXRDR0ltYWdlQXJyYXkoKSB7IHJl
dHVybiBudWxscHRyOyB9Ci0jZW5kaWYKLQogI2lmIFBMQVRGT1JNKFdJTikKICAgICB2aXJ0dWFs
IGJvb2wgZ2V0SEJJVE1BUChIQklUTUFQKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwg
Ym9vbCBnZXRIQklUTUFQT2ZTaXplKEhCSVRNQVAsIGNvbnN0IEludFNpemUqKSB7IHJldHVybiBm
YWxzZTsgfQpAQCAtMTc5LDYgKzE3Niw4IEBAIHB1YmxpYzoKICNpZiAhQVNTRVJUX0RJU0FCTEVE
CiAgICAgdmlydHVhbCBib29sIG5vdFNvbGlkQ29sb3IoKSB7IHJldHVybiB0cnVlOyB9CiAjZW5k
aWYKKyAgICAKKyAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0SWZOZWVkZWQoKSB7IH0KIAogICAgIHZp
cnR1YWwgdm9pZCBkdW1wKFRleHRTdHJlYW0mKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZURhdGEuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZURhdGEuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJm
ZDIwY2Y4ZTYxZjRiMWExZmUwOGViMzMyYjcxNjU3ZjAxNDhjMTUKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lRGF0YS5jcHAKQEAg
LTAsMCArMSwxMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkltYWdlRnJhbWVEYXRhLmgiCisK
KyNpbmNsdWRlICJDb2xvci5oIgorCisjaWYgVVNFKENHKQorI2luY2x1ZGUgIkltYWdlRGVjb2Rl
ckNHLmgiCisjZWxzZQorI2luY2x1ZGUgIkltYWdlRGVjb2Rlci5oIgorI2VuZGlmCisKKyNpbmNs
dWRlICJQbGF0Zm9ybUltYWdlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworSW1hZ2VGcmFt
ZURhdGE6OkltYWdlRnJhbWVEYXRhKCkKK3sKK30KKworSW1hZ2VGcmFtZURhdGE6OkltYWdlRnJh
bWVEYXRhKE5hdGl2ZUltYWdlUHRyJiYgaW1hZ2UpCisgICAgOiBtX3N0YXR1cyhEZWNvZGluZ1N0
YXR1czo6Q29tcGxldGUpCisgICAgLCBtX2ltYWdlKFdURk1vdmUoaW1hZ2UpKQoreworICAgIG1f
c2l6ZSA9IFBsYXRmb3JtSW1hZ2UobV9pbWFnZSkuc2l6ZSgpOworICAgIG1faGFzQWxwaGEgPSBQ
bGF0Zm9ybUltYWdlKG1faW1hZ2UpLmhhc0FscGhhKCk7Cit9CisKK0ltYWdlRnJhbWVEYXRhOjpJ
bWFnZUZyYW1lRGF0YShJbWFnZURlY29kZXImIGRlY29kZXIsIHNpemVfdCBpbmRleCwgU3Vic2Ft
cGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBDYWNoaW5nIGZyYW1lQ2FjaGluZykKK3sKKyAg
ICBBU1NFUlQoZnJhbWVDYWNoaW5nID09IENhY2hpbmc6Ok1ldGFkYXRhIHx8IGZyYW1lQ2FjaGlu
ZyA9PSBDYWNoaW5nOjpNZXRhZGF0YUFuZEltYWdlKTsKKyAgICAKKyAgICBpZiAoZnJhbWVDYWNo
aW5nID09IENhY2hpbmc6OkltYWdlIHx8IGZyYW1lQ2FjaGluZyA9PSBDYWNoaW5nOjpNZXRhZGF0
YUFuZEltYWdlKSB7CisgICAgICAgIG1faW1hZ2UgPSBkZWNvZGVyLmNyZWF0ZUZyYW1lSW1hZ2VB
dEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsKTsKKyAgICAgICAgbV9zdWJzYW1wbGluZ0xl
dmVsID0gc3Vic2FtcGxpbmdMZXZlbDsKKyAgICB9CisgICAgCisgICAgaWYgKGZyYW1lQ2FjaGlu
ZyA9PSBDYWNoaW5nOjpNZXRhZGF0YSB8fCBmcmFtZUNhY2hpbmcgPT0gQ2FjaGluZzo6TWV0YWRh
dGFBbmRJbWFnZSkgeworICAgICAgICBtX29yaWVudGF0aW9uID0gZGVjb2Rlci5vcmllbnRhdGlv
bkF0SW5kZXgoaW5kZXgpOworICAgICAgICBtX3N0YXR1cyA9IGRlY29kZXIuZnJhbWVJc0NvbXBs
ZXRlQXRJbmRleChpbmRleCkgPyBEZWNvZGluZ1N0YXR1czo6Q29tcGxldGUgOiBEZWNvZGluZ1N0
YXR1czo6UGFydGlhbDsKKyAgICAgICAgCisgICAgICAgIGlmIChkZWNvZGVyLnJlcGV0aXRpb25D
b3VudCgpICE9IGNBbmltYXRpb25Ob25lKQorICAgICAgICAgICAgbV9kdXJhdGlvbiA9IGRlY29k
ZXIuZnJhbWVEdXJhdGlvbkF0SW5kZXgoaW5kZXgpOworICAgICAgICAKKyAgICAgICAgbV9oYXNB
bHBoYSA9IGRlY29kZXIuZnJhbWVIYXNBbHBoYUF0SW5kZXgoaW5kZXgpOworICAgICAgICBtX3Np
emUgPSBkZWNvZGVyLmZyYW1lU2l6ZUF0SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwpOwor
ICAgIH0KK30KKworSW1hZ2VGcmFtZURhdGE6On5JbWFnZUZyYW1lRGF0YSgpCit7CisgICAgY2xl
YXJTdWJJbWFnZXMoKTsKK30KKyAgICAKK0ltYWdlRnJhbWVEYXRhJiBJbWFnZUZyYW1lRGF0YTo6
b3BlcmF0b3I9KGNvbnN0IEltYWdlRnJhbWVEYXRhJiBvdGhlcikKK3sKKyAgICBpZiAodGhpcyA9
PSAmb3RoZXIpCisgICAgICAgIHJldHVybiAqdGhpczsKKworICAgIG1fc3RhdHVzID0gb3RoZXIu
bV9zdGF0dXM7CisgICAgbV9zaXplID0gb3RoZXIubV9zaXplOworICAgIG1faW1hZ2UgPSBvdGhl
ci5tX2ltYWdlOworICAgIAorICAgIG1fcGl4ZWxzID0gb3RoZXIucGl4ZWxzKCkgPyBCaXRtYXBQ
aXhlbHM6OmNyZWF0ZSgqb3RoZXIucGl4ZWxzKCkpIDogbnVsbHB0cjsKKyAgICAKKyAgICBtX29y
aWVudGF0aW9uID0gb3RoZXIubV9vcmllbnRhdGlvbjsKKyAgICBtX3N1YnNhbXBsaW5nTGV2ZWwg
PSBvdGhlci5tX3N1YnNhbXBsaW5nTGV2ZWw7CisgICAgbV9kdXJhdGlvbiA9IG90aGVyLm1fZHVy
YXRpb247CisgICAgbV9oYXNBbHBoYSA9IG90aGVyLm1faGFzQWxwaGE7CisgICAgcmV0dXJuICp0
aGlzOworfQorCit2b2lkIEltYWdlRnJhbWVEYXRhOjpjbGVhclN1YkltYWdlcygpCit7CisgICAg
aWYgKCFtX2ltYWdlKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgUGxhdGZvcm1JbWFnZSht
X2ltYWdlKS5jbGVhclN1YkltYWdlcygpOworfQorCit1bnNpZ25lZCBJbWFnZUZyYW1lRGF0YTo6
Y2xlYXIoQ2FjaGluZyBmcmFtZUNhY2hpbmcpCit7CisgICAgQVNTRVJUKGZyYW1lQ2FjaGluZyA9
PSBDYWNoaW5nOjpFbXB0eSB8fCBmcmFtZUNhY2hpbmcgPT0gQ2FjaGluZzo6TWV0YWRhdGEpOwor
ICAgIAorICAgIHVuc2lnbmVkIGZyYW1lQnl0ZXMgPSB0aGlzLT5mcmFtZUJ5dGVzKCk7CisgICAg
CisgICAgY2xlYXJTdWJJbWFnZXMoKTsKKyAgICAKKyAgICBpZiAoZnJhbWVDYWNoaW5nID09IENh
Y2hpbmc6OkVtcHR5KQorICAgICAgICAqdGhpcyA9IEltYWdlRnJhbWVEYXRhKCk7CisgICAgZWxz
ZQorICAgICAgICBtX2ltYWdlID0gbnVsbHB0cjsKKyAgICAKKyAgICByZXR1cm4gZnJhbWVCeXRl
czsKK30KKworQ29sb3IgSW1hZ2VGcmFtZURhdGE6OnNpbmdsZVBpeGVsU29saWRDb2xvcigpIGNv
bnN0Cit7CisgICAgaWYgKCFoYXNJbWFnZSgpIHx8IG1fc2l6ZSAhPSBJbnRTaXplKDEsIDEpKQor
ICAgICAgICByZXR1cm4gQ29sb3IoKTsKKyAgICAKKyAgICByZXR1cm4gUGxhdGZvcm1JbWFnZSht
X2ltYWdlKS5zaW5nbGVQaXhlbFNvbGlkQ29sb3IoKTsKK30KKworYm9vbCBJbWFnZUZyYW1lRGF0
YTo6aXNBbG1vc3RTb2xpZENvbG9yKCkgY29uc3QKK3sKKyAgICBpZiAoIWhhc0ltYWdlKCkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICByZXR1cm4gUGxhdGZvcm1JbWFnZShtX2lt
YWdlKS5pc0FsbW9zdFNvbGlkQ29sb3IoKTsKK30KKyAgICAKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVEYXRhLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lRGF0YS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY2ZmI3
NThlZjNhNDI1OGNiZGIzYWUyZjQ2ZTg0NDBmNzMwZWY0N2MKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lRGF0YS5oCkBAIC0wLDAg
KzEsMTAxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQml0bWFwUGl4ZWxzLmgiCisjaW5jbHVkZSAiSW1h
Z2VPcmllbnRhdGlvbi5oIgorI2luY2x1ZGUgIkludFNpemUuaCIKKyNpbmNsdWRlICJOYXRpdmVJ
bWFnZVB0ci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENvbG9yOworY2xhc3Mg
SW1hZ2VEZWNvZGVyOworCisvLyBTdWJzYW1wbGluZ0xldmVsLiAwIGlzIG5vIHN1YnNhbXBsaW5n
LCAxIGlzIGhhbGYgZGltZW5zaW9ucyBvbiBlYWNoIGF4aXMgZXRjLgordXNpbmcgU3Vic2FtcGxp
bmdMZXZlbCA9IHVpbnQ4X3Q7CisKK2VudW0gOiBTdWJzYW1wbGluZ0xldmVsIHsKKyAgICBNaW5T
dWJzYW1wbGluZ0xldmVsID0gMCwKKyAgICBNYXhTdWJzYW1wbGluZ0xldmVsID0gMywKKyAgICBE
ZWZhdWx0U3Vic2FtcGxpbmdMZXZlbCA9IE1pblN1YnNhbXBsaW5nTGV2ZWwKK307CisKK2NsYXNz
IEltYWdlRnJhbWVEYXRhIHsKKyAgICBmcmllbmQgY2xhc3MgSW1hZ2VEZWNvZGVyOworcHVibGlj
OgorICAgIGVudW0gY2xhc3MgQ2FjaGluZyB7IEVtcHR5LCBNZXRhZGF0YSwgSW1hZ2UsIE1ldGFk
YXRhQW5kSW1hZ2UgfTsKKyAgICBlbnVtIGNsYXNzIERlY29kaW5nU3RhdHVzIHsgRW1wdHksIFBh
cnRpYWwsIENvbXBsZXRlIH07CisgICAgCisgICAgSW1hZ2VGcmFtZURhdGEoKTsKKyAgICBJbWFn
ZUZyYW1lRGF0YShOYXRpdmVJbWFnZVB0ciYmKTsKKyAgICBJbWFnZUZyYW1lRGF0YShJbWFnZURl
Y29kZXImLCBzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgPSBEZWZhdWx0U3Vic2FtcGxp
bmdMZXZlbCwgQ2FjaGluZyA9IENhY2hpbmc6Ok1ldGFkYXRhQW5kSW1hZ2UpOworICAgIEltYWdl
RnJhbWVEYXRhKGNvbnN0IEltYWdlRnJhbWVEYXRhJiBvdGhlcikgeyBvcGVyYXRvcj0ob3RoZXIp
OyB9CisKKyAgICB+SW1hZ2VGcmFtZURhdGEoKTsKKworICAgIEltYWdlRnJhbWVEYXRhJiBvcGVy
YXRvcj0oY29uc3QgSW1hZ2VGcmFtZURhdGEmIG90aGVyKTsKKyAgICAKKyAgICB1bnNpZ25lZCBj
bGVhcihDYWNoaW5nKTsKKyAgICBDb2xvciBzaW5nbGVQaXhlbFNvbGlkQ29sb3IoKSBjb25zdDsK
KyAgICBib29sIGlzQWxtb3N0U29saWRDb2xvcigpIGNvbnN0OworICAgIAorICAgIERlY29kaW5n
U3RhdHVzIHN0YXR1cygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdHVzOyB9CisgICAgYm9vbCBpc0Nv
bXBsZXRlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0dXMgPT0gRGVjb2RpbmdTdGF0dXM6OkNvbXBs
ZXRlOyB9CisgICAgSW50U2l6ZSBzaXplKCkgY29uc3QgeyByZXR1cm4gaGFzUGl4ZWxzKCkgPyBw
aXhlbHMoKS0+c2l6ZSgpIDogbV9zaXplOyB9CisgICAgdW5zaWduZWQgZnJhbWVCeXRlcygpIGNv
bnN0IHsgcmV0dXJuIGhhc0ltYWdlKCkgPyBtX3NpemUuYXJlYSgpICogc2l6ZW9mKFJHQkEzMikg
OiAwOyB9CisgICAgTmF0aXZlSW1hZ2VQdHIgaW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2ltYWdl
OyB9CisgICAgQml0bWFwUGl4ZWxzKiBwaXhlbHMoKSBjb25zdCB7IHJldHVybiBtX3BpeGVscyA/
IG1fcGl4ZWxzLmdldCgpIDogbnVsbHB0cjsgfQorICAgIAorICAgIEltYWdlT3JpZW50YXRpb24g
b3JpZW50YXRpb24oKSBjb25zdCB7IHJldHVybiBtX29yaWVudGF0aW9uOyB9CisgICAgU3Vic2Ft
cGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsKCkgY29uc3QgeyByZXR1cm4gbV9zdWJzYW1wbGlu
Z0xldmVsOyB9CisgICAgZmxvYXQgZHVyYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2R1cmF0aW9u
OyB9CisgICAgCisgICAgYm9vbCBoYXNBbHBoYSgpIGNvbnN0IHsgcmV0dXJuIG1faGFzQWxwaGE7
IH0KKyAgICBib29sIGhhc0ltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZTsgfQorICAgIGJv
b2wgaGFzTWV0YWRhdGEoKSBjb25zdCB7IHJldHVybiAhbV9zaXplLmlzRW1wdHkoKTsgfQorICAg
IGJvb2wgaGFzUGl4ZWxzKCkgY29uc3QgeyByZXR1cm4gcGl4ZWxzKCk7IH0KKyAgICAKK3ByaXZh
dGU6CisgICAgdm9pZCBjbGVhclN1YkltYWdlcygpOworCisgICAgdm9pZCBzZXRTdGF0dXMoRGVj
b2RpbmdTdGF0dXMgc3RhdHVzKSB7IG1fc3RhdHVzID0gc3RhdHVzOyB9CisgICAgdm9pZCBzZXRP
cmllbnRhdGlvbihJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKSB7IG1fb3JpZW50YXRpb24g
PSBvcmllbnRhdGlvbjsgfTsKKyAgICB2b2lkIHNldER1cmF0aW9uKHVuc2lnbmVkIGR1cmF0aW9u
KSB7IG1fZHVyYXRpb24gPSBkdXJhdGlvbjsgfQorICAgIHZvaWQgc2V0SGFzQWxwaGEoYm9vbCBo
YXNBbHBoYSkgeyBtX2hhc0FscGhhID0gaGFzQWxwaGE7IH0KKyAgICAKKyAgICBEZWNvZGluZ1N0
YXR1cyBtX3N0YXR1cyB7IERlY29kaW5nU3RhdHVzOjpFbXB0eSB9OworICAgIEludFNpemUgbV9z
aXplOworICAgIE5hdGl2ZUltYWdlUHRyIG1faW1hZ2U7CisgICAgc3RkOjp1bmlxdWVfcHRyPEJp
dG1hcFBpeGVscz4gbV9waXhlbHM7CisgICAgCisgICAgSW1hZ2VPcmllbnRhdGlvbiBtX29yaWVu
dGF0aW9uIHsgRGVmYXVsdEltYWdlT3JpZW50YXRpb24gfTsKKyAgICBTdWJzYW1wbGluZ0xldmVs
IG1fc3Vic2FtcGxpbmdMZXZlbCB7IDAgfTsKKyAgICBmbG9hdCBtX2R1cmF0aW9uIHsgMCB9Owor
ICAgIGJvb2wgbV9oYXNBbHBoYSB7IHRydWUgfTsKK307CisgICAgCit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKaW5kZXggZGRkOGE1NWJh
MDkwNmM1ODY2YTE5MmNmOGU0MTRlYTcwN2I3MjhhYy4uODJmNmUyZDZlNDU0MzNkYTFhN2Q1NmIz
NzBkZmE2MWE0YzQxOTEzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlU291cmNlLmNwcApAQCAtMjI0LDYgKzIyNCwxMSBAQCBOYXRpdmVJbWFnZVB0ciBJ
bWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1w
bGluZ0xldgogICAgIHJldHVybiBpbml0aWFsaXplZCgpID8gbV9kZWNvZGVyLT5jcmVhdGVGcmFt
ZUltYWdlQXRJbmRleChpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCkgOiBudWxscHRyOwogfQogCitJ
bWFnZUZyYW1lRGF0YSBJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVEYXRhQXRJbmRleChzaXplX3Qg
aW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgSW1hZ2VGcmFtZURhdGE6
OkNhY2hpbmcgY2FjaGluZykKK3sKKyAgICByZXR1cm4gaW5pdGlhbGl6ZWQoKSA/IEltYWdlRnJh
bWVEYXRhKCptX2RlY29kZXIsIGluZGV4LCBzdWJzYW1wbGluZ0xldmVsLCBjYWNoaW5nKSA6IElt
YWdlRnJhbWVEYXRhKCk7Cit9CisgICAgCiB2b2lkIEltYWdlU291cmNlOjpkdW1wKFRleHRTdHJl
YW0mIHRzKSBjb25zdAogewogICAgIGlmIChtX2FsbG93U3Vic2FtcGxpbmcpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaAppbmRleCA2MDM1NzM5Yjdl
OGIwOTZkYzhkZmU5YzUzMGE0MmM2ZjI5MWJkYTAwLi5hNDBjN2NlOTMwN2NkYWRmMDc5YWI3MDFh
ODI3OTliNjkwNTI5ZDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlU291cmNlLmgKQEAgLTI3LDYgKzI3LDcgQEAKICNpZm5kZWYgSW1hZ2VTb3VyY2VfaAog
I2RlZmluZSBJbWFnZVNvdXJjZV9oCiAKKyNpbmNsdWRlICJJbWFnZUZyYW1lRGF0YS5oIgogI2lu
Y2x1ZGUgIkltYWdlT3JpZW50YXRpb24uaCIKICNpbmNsdWRlICJJbnRQb2ludC5oIgogI2luY2x1
ZGUgIk5hdGl2ZUltYWdlUHRyLmgiCkBAIC02Myw5ICs2NCw2IEBAIGNvbnN0IGludCBjQW5pbWF0
aW9uTG9vcE9uY2UgPSAwOwogY29uc3QgaW50IGNBbmltYXRpb25Mb29wSW5maW5pdGUgPSAtMTsK
IGNvbnN0IGludCBjQW5pbWF0aW9uTm9uZSA9IC0yOwogCi0vLyBTdWJzYW1wbGluZ0xldmVsLiAw
IGlzIG5vIHN1YnNhbXBsaW5nLCAxIGlzIGhhbGYgZGltZW5zaW9ucyBvbiBlYWNoIGF4aXMgZXRj
LgotdHlwZWRlZiBzaG9ydCBTdWJzYW1wbGluZ0xldmVsOwotCiBjbGFzcyBJbWFnZVNvdXJjZSB7
CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW1hZ2VTb3VyY2UpOwogICAgIGZyaWVuZCBjbGFz
cyBCaXRtYXBJbWFnZTsKQEAgLTEzMiwxOCArMTMwLDE5IEBAIHB1YmxpYzoKICAgICBib29sIGFs
bG93U3Vic2FtcGxpbmdPZkZyYW1lQXRJbmRleChzaXplX3QpIGNvbnN0OwogICAgIAogICAgIC8v
IFNpemUgb2Ygb3B0aW9uYWxseSBzdWJzYW1wbGVkIGZyYW1lLgotICAgIEludFNpemUgZnJhbWVT
aXplQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSAwLCBSZXNwZWN0SW1hZ2VPcmll
bnRhdGlvbkVudW0gPSBEb05vdFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKSBjb25zdDsKKyAgICBJ
bnRTaXplIGZyYW1lU2l6ZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gRGVmYXVs
dFN1YnNhbXBsaW5nTGV2ZWwsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSA9IERvTm90UmVz
cGVjdEltYWdlT3JpZW50YXRpb24pIGNvbnN0OwogICAgIAogICAgIC8vIFJldHVybiB0aGUgbnVt
YmVyIG9mIGJ5dGVzIGluIHRoZSBkZWNvZGVkIGZyYW1lLiBJZiB0aGUgZnJhbWUgaXMgbm90IHll
dAogICAgIC8vIGRlY29kZWQgdGhlbiByZXR1cm4gMC4KLSAgICB1bnNpZ25lZCBmcmFtZUJ5dGVz
QXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSAwKSBjb25zdDsKKyAgICB1bnNpZ25l
ZCBmcmFtZUJ5dGVzQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBEZWZhdWx0U3Vi
c2FtcGxpbmdMZXZlbCkgY29uc3Q7CiAgICAgCiAgICAgZmxvYXQgZnJhbWVEdXJhdGlvbkF0SW5k
ZXgoc2l6ZV90KTsKICAgICBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uQXRJbmRleChzaXpl
X3QpIGNvbnN0OyAvLyBFWElGIGltYWdlIG9yaWVudGF0aW9uCiAgICAgCiAgICAgLy8gQ2FsbGVy
cyBzaG91bGQgbm90IGNhbGwgdGhpcyBhZnRlciBjYWxsaW5nIGNsZWFyKCkgd2l0aCBhIGhpZ2hl
ciBpbmRleDsKICAgICAvLyBzZWUgY29tbWVudHMgb24gY2xlYXIoKSBhYm92ZS4KLSAgICBOYXRp
dmVJbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2
ZWwgPSAwKTsKKyAgICBOYXRpdmVJbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXpl
X3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBEZWZhdWx0U3Vic2FtcGxpbmdMZXZlbCk7CisgICAgSW1h
Z2VGcmFtZURhdGEgY3JlYXRlRnJhbWVEYXRhQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2
ZWwgPSBEZWZhdWx0U3Vic2FtcGxpbmdMZXZlbCwgSW1hZ2VGcmFtZURhdGE6OkNhY2hpbmcgPSBJ
bWFnZUZyYW1lRGF0YTo6Q2FjaGluZzo6TWV0YWRhdGFBbmRJbWFnZSk7CiAgICAgCiBwcml2YXRl
OgogICAgIHZvaWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVfdCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUltYWdlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUltYWdlLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWI3
YWVhNDg5ZjNlYjJhODI4NzcxYzIxMDNlOGQ0ZDBiZTE3YmU1ZAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2UuaApAQCAtMCww
ICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiR3JhcGhpY3NUeXBlcy5oIgorI2luY2x1ZGUgIklt
YWdlT3JpZW50YXRpb24uaCIKKyNpbmNsdWRlICJOYXRpdmVJbWFnZVB0ci5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIENvbG9yOworY2xhc3MgRmxvYXRSZWN0OworY2xhc3MgSW50
U2l6ZTsKK2NsYXNzIEdyYXBoaWNzQ29udGV4dDsKKworY2xhc3MgUGxhdGZvcm1JbWFnZSB7Citw
dWJsaWM6CisgICAgUGxhdGZvcm1JbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCisg
ICAgICAgIDogbV9pbWFnZShpbWFnZSkKKyAgICB7CisgICAgfQorCisgICAgYm9vbCBpc05pbCgp
IGNvbnN0IHsgcmV0dXJuICFtX2ltYWdlOyB9CisgICAgdm9pZCBjbGVhclN1YkltYWdlcygpOwor
CisgICAgSW50U2l6ZSBzaXplKCkgY29uc3Q7CisgICAgYm9vbCBoYXNBbHBoYSgpIGNvbnN0Owor
ICAgIENvbG9yIHNpbmdsZVBpeGVsU29saWRDb2xvcigpIGNvbnN0OworICAgIGJvb2wgaXNBbG1v
c3RTb2xpZENvbG9yKCkgY29uc3Q7CisgICAgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3Qg
SW50U2l6ZSYgc3JjU2l6ZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgY29uc3QgSW1h
Z2VPcmllbnRhdGlvbiYpIGNvbnN0OworCisgICAgc3RhdGljIGZsb2F0IHN1YnNhbXBsaW5nU2Nh
bGUoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0KTsKKworcHJpdmF0ZToKKyNpZiBVU0UoQ0cpCisgICAgQ0dJbWFnZVJl
ZiBjZ0ltYWdlUmVmKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZSA/IG1faW1hZ2UuZ2V0KCkgOiBu
dWxscHRyOyB9CisjZW5kaWYKKyAgICBOYXRpdmVJbWFnZVB0ciBtX2ltYWdlOworfTsKKworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCmluZGV4IGY0YzE0NTdiYmIyNTU3NTRmMDBhMDYyNWVl
ODNlMDRkYTdjNmVmY2YuLmQ1MjBmNWQ1ODVhYzYwZGJhZWUyNTVlMWI4M2MyNGRjNjg3MjEwYTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KQEAgLTIxMiw3ICsyMTIsNyBAQCB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dXBkYXRlRGlzcGxheU1vZGUoKQog
ICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICB9CiAKLSAgICAg
ICAgICAgICAgICBtX3BhdXNlZEltYWdlID0gaW1hZ2UtPmdldENHSW1hZ2VSZWYoKTsKKyAgICAg
ICAgICAgICAgICBtX3BhdXNlZEltYWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZy
YW1lKCk7CiAgICAgICAgICAgICAgICAgaWYgKCFtX3BhdXNlZEltYWdlKSB7CiAgICAgICAgICAg
ICAgICAgICAgIG1fZGlzcGxheU1vZGUgPSBQYWludEl0QmxhY2s7CiAgICAgICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMTc3MjJiZWM1M2FiOGEwOGE4ZGE4NTI4YjllMGQ3YzRkMGNkNDEzNS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDE0MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2
IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcg
QWxwIFRva2VyIDxhbHBAYXRva2VyLmNvbT4KLSAqIENvcHlyaWdodCAoQykgMjAwOSBEaXJrIFNj
aHVsemUgPGtyaXRAd2Via2l0Lm9yZz4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0g
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkJpdG1hcEltYWdlLmgi
Ci0KLSNpZiBVU0UoQ0FJUk8pCi0KLSNpbmNsdWRlICJDYWlyb1V0aWxpdGllcy5oIgotI2luY2x1
ZGUgIkltYWdlT2JzZXJ2ZXIuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybUNvbnRleHRDYWlyby5oIgot
I2luY2x1ZGUgIlRpbWVyLmgiCi0jaW5jbHVkZSA8Y2Fpcm8uaD4KLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1uYW1lc3BhY2UgTmF0aXZlSW1hZ2UgewotCi1JbnRTaXplIHNpemUoY29uc3QgUmVm
UHRyPGNhaXJvX3N1cmZhY2VfdD4mIGltYWdlKQotewotICAgIHJldHVybiBjYWlyb1N1cmZhY2VT
aXplKGltYWdlLmdldCgpKTsKLX0KLQotYm9vbCBoYXNBbHBoYShjb25zdCBSZWZQdHI8Y2Fpcm9f
c3VyZmFjZV90PiYgaW1hZ2UpCi17Ci0gICAgcmV0dXJuIGNhaXJvX3N1cmZhY2VfZ2V0X2NvbnRl
bnQoaW1hZ2UuZ2V0KCkpICE9IENBSVJPX0NPTlRFTlRfQ09MT1I7Ci19Ci0KLUNvbG9yIHNpbmds
ZVBpeGVsU29saWRDb2xvcihjb25zdCBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiYgaW1hZ2UpCi17
Ci0gICAgQVNTRVJUKGltYWdlKTsKLSAgICAKLSAgICBpZiAoTmF0aXZlSW1hZ2U6OnNpemUoaW1h
Z2UpICE9IEludFNpemUoMSwgMSkpCi0gICAgICAgIHJldHVybiBDb2xvcigpOwotCi0gICAgaWYg
KGNhaXJvX3N1cmZhY2VfZ2V0X3R5cGUoaW1hZ2UuZ2V0KCkpICE9IENBSVJPX1NVUkZBQ0VfVFlQ
RV9JTUFHRSkKLSAgICAgICAgcmV0dXJuIENvbG9yKCk7Ci0KLSAgICBSR0JBMzIqIHBpeGVsID0g
cmVpbnRlcnByZXRfY2FzdF9wdHI8UkdCQTMyKj4oY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfZGF0
YShpbWFnZS5nZXQoKSkpOwotICAgIHJldHVybiBjb2xvckZyb21QcmVtdWx0aXBsaWVkQVJHQigq
cGl4ZWwpOwotfQotCi19Ci0KLXZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdCwgY29uc3QgRmxvYXRSZWN0JiBzcmMsIENv
bXBvc2l0ZU9wZXJhdG9yIG9wLAotICAgIEJsZW5kTW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50
YXRpb25EZXNjcmlwdGlvbiBkZXNjcmlwdGlvbikKLXsKLSAgICBpZiAoIWRzdC53aWR0aCgpIHx8
ICFkc3QuaGVpZ2h0KCkgfHwgIXNyYy53aWR0aCgpIHx8ICFzcmMuaGVpZ2h0KCkpCi0gICAgICAg
IHJldHVybjsKLQotICAgIHN0YXJ0QW5pbWF0aW9uKCk7Ci0KLSAgICBhdXRvIHN1cmZhY2UgPSBm
cmFtZUltYWdlQXRJbmRleChtX2N1cnJlbnRGcmFtZSk7Ci0gICAgaWYgKCFzdXJmYWNlKSAvLyBJ
ZiBpdCdzIHRvbyBlYXJseSB3ZSB3b24ndCBoYXZlIGFuIGltYWdlIHlldC4KLSAgICAgICAgcmV0
dXJuOwotCi0gICAgQ29sb3IgY29sb3IgPSBzaW5nbGVQaXhlbFNvbGlkQ29sb3IoKTsKLSAgICBp
ZiAoY29sb3IuaXNWYWxpZCgpKSB7Ci0gICAgICAgIGZpbGxXaXRoU29saWRDb2xvcihjb250ZXh0
LCBkc3QsIGNvbG9yLCBvcCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBjb250ZXh0
LnNhdmUoKTsKLQotICAgIC8vIFNldCB0aGUgY29tcG9zaXRpbmcgb3BlcmF0aW9uLgotICAgIGlm
IChvcCA9PSBDb21wb3NpdGVTb3VyY2VPdmVyICYmIGJsZW5kTW9kZSA9PSBCbGVuZE1vZGVOb3Jt
YWwgJiYgIWZyYW1lSGFzQWxwaGFBdEluZGV4KG1fY3VycmVudEZyYW1lKSkKLSAgICAgICAgY29u
dGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlQ29weSk7Ci0gICAgZWxzZQotICAg
ICAgICBjb250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihvcCwgYmxlbmRNb2RlKTsKLQotI2lm
IEVOQUJMRShJTUFHRV9ERUNPREVSX0RPV05fU0FNUExJTkcpCi0gICAgSW50U2l6ZSBzY2FsZWRT
aXplID0gY2Fpcm9TdXJmYWNlU2l6ZShzdXJmYWNlLmdldCgpKTsKLSAgICBGbG9hdFJlY3QgYWRq
dXN0ZWRTcmNSZWN0ID0gYWRqdXN0U291cmNlUmVjdEZvckRvd25TYW1wbGluZyhzcmMsIHNjYWxl
ZFNpemUpOwotI2Vsc2UKLSAgICBGbG9hdFJlY3QgYWRqdXN0ZWRTcmNSZWN0KHNyYyk7Ci0jZW5k
aWYKLQotICAgIEltYWdlT3JpZW50YXRpb24gZnJhbWVPcmllbnRhdGlvbihkZXNjcmlwdGlvbi5p
bWFnZU9yaWVudGF0aW9uKCkpOwotICAgIGlmIChkZXNjcmlwdGlvbi5yZXNwZWN0SW1hZ2VPcmll
bnRhdGlvbigpID09IFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKQotICAgICAgICBmcmFtZU9yaWVu
dGF0aW9uID0gZnJhbWVPcmllbnRhdGlvbkF0SW5kZXgobV9jdXJyZW50RnJhbWUpOwotCi0gICAg
RmxvYXRSZWN0IGRzdFJlY3QgPSBkc3Q7Ci0KLSAgICBpZiAoZnJhbWVPcmllbnRhdGlvbiAhPSBE
ZWZhdWx0SW1hZ2VPcmllbnRhdGlvbikgewotICAgICAgICAvLyBJbWFnZU9yaWVudGF0aW9uIGV4
cGVjdHMgdGhlIG9yaWdpbiB0byBiZSBhdCAoMCwgMCkuCi0gICAgICAgIGNvbnRleHQudHJhbnNs
YXRlKGRzdFJlY3QueCgpLCBkc3RSZWN0LnkoKSk7Ci0gICAgICAgIGRzdFJlY3Quc2V0TG9jYXRp
b24oRmxvYXRQb2ludCgpKTsKLSAgICAgICAgY29udGV4dC5jb25jYXRDVE0oZnJhbWVPcmllbnRh
dGlvbi50cmFuc2Zvcm1Gcm9tRGVmYXVsdChkc3RSZWN0LnNpemUoKSkpOwotICAgICAgICBpZiAo
ZnJhbWVPcmllbnRhdGlvbi51c2VzV2lkdGhBc0hlaWdodCgpKSB7Ci0gICAgICAgICAgICAvLyBU
aGUgZGVzdGluYXRpb24gcmVjdGFuZ2xlIHdpbGwgaGF2ZSBpdCdzIHdpZHRoIGFuZCBoZWlnaHQg
YWxyZWFkeSByZXZlcnNlZCBmb3IgdGhlIG9yaWVudGF0aW9uIG9mCi0gICAgICAgICAgICAvLyB0
aGUgaW1hZ2UsIGFzIGl0IHdhcyBuZWVkZWQgZm9yIHBhZ2UgbGF5b3V0LCBzbyB3ZSBuZWVkIHRv
IHJldmVyc2UgaXQgYmFjayBoZXJlLgotICAgICAgICAgICAgZHN0UmVjdCA9IEZsb2F0UmVjdChk
c3RSZWN0LngoKSwgZHN0UmVjdC55KCksIGRzdFJlY3QuaGVpZ2h0KCksIGRzdFJlY3Qud2lkdGgo
KSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLT5k
cmF3U3VyZmFjZVRvQ29udGV4dChzdXJmYWNlLmdldCgpLCBkc3RSZWN0LCBhZGp1c3RlZFNyY1Jl
Y3QsIGNvbnRleHQpOwotCi0gICAgY29udGV4dC5yZXN0b3JlKCk7Ci0KLSAgICBpZiAoaW1hZ2VP
YnNlcnZlcigpKQotICAgICAgICBpbWFnZU9ic2VydmVyKCktPmRpZERyYXcodGhpcyk7Ci19Ci0K
LWJvb2wgRnJhbWVEYXRhOjpjbGVhcihib29sIGNsZWFyTWV0YWRhdGEpCi17Ci0gICAgaWYgKGNs
ZWFyTWV0YWRhdGEpCi0gICAgICAgIG1faGF2ZU1ldGFkYXRhID0gZmFsc2U7Ci0KLSAgICBpZiAo
bV9pbWFnZSkgewotICAgICAgICBtX2ltYWdlID0gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQotCi0jZW5kaWYgLy8gVVNFKENBSVJPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1JbWFnZUNhaXJvLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtSW1hZ2VDYWlyby5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNzBhZGFlYzI3MGUzMWIwNTRhZmM1ZjY2ZDQ4Mjg4YWViZjA2MWUzYQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3Jt
SW1hZ2VDYWlyby5jcHAKQEAgLTAsMCArMSwxMTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBs
YXRmb3JtSW1hZ2UuaCIKKworI2lmIFVTRShDQUlSTykKKworI2luY2x1ZGUgIkNhaXJvVXRpbGl0
aWVzLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0Q2Fpcm8uaCIKKyNpbmNsdWRlIDxjYWly
by5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgUGxhdGZvcm1JbWFnZTo6Y2xlYXJT
dWJJbWFnZXMoKQoreworfQorCitJbnRTaXplIFBsYXRmb3JtSW1hZ2U6OnNpemUoKSBjb25zdAor
eworICAgIHJldHVybiBpc05pbCgpID8gSW50U2l6ZSgpIDogY2Fpcm9TdXJmYWNlU2l6ZShtX2lt
YWdlLmdldCgpKTsKK30KKworYm9vbCBQbGF0Zm9ybUltYWdlOjpoYXNBbHBoYSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIGlzTmlsKCkgfHwgY2Fpcm9fc3VyZmFjZV9nZXRfY29udGVudChtX2ltYWdl
LmdldCgpKSAhPSBDQUlST19DT05URU5UX0NPTE9SOworfQorCitDb2xvciBQbGF0Zm9ybUltYWdl
OjpzaW5nbGVQaXhlbFNvbGlkQ29sb3IoKSBjb25zdAoreworICAgIGlmIChpc05pbCgpIHx8IHNp
emUoKSAhPSBJbnRTaXplKDEsIDEpKQorICAgICAgICByZXR1cm4gQ29sb3IoKTsKKworICAgIGlm
IChjYWlyb19zdXJmYWNlX2dldF90eXBlKG1faW1hZ2UuZ2V0KCkpICE9IENBSVJPX1NVUkZBQ0Vf
VFlQRV9JTUFHRSkKKyAgICAgICAgcmV0dXJuIENvbG9yKCk7CisKKyAgICBSR0JBMzIqIHBpeGVs
ID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8UkdCQTMyKj4oY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRf
ZGF0YShtX2ltYWdlLmdldCgpKSk7CisgICAgcmV0dXJuIGNvbG9yRnJvbVByZW11bHRpcGxpZWRB
UkdCKCpwaXhlbCk7Cit9CisKK2Jvb2wgUGxhdGZvcm1JbWFnZTo6aXNBbG1vc3RTb2xpZENvbG9y
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Zsb2F0IFBsYXRmb3JtSW1hZ2U6
OnN1YnNhbXBsaW5nU2NhbGUoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29u
c3QgRmxvYXRSZWN0JikKK3sKKyAgICByZXR1cm4gMTsKK30KKwordm9pZCBQbGF0Zm9ybUltYWdl
OjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRTaXplJiwgQ29tcG9zaXRlT3Bl
cmF0b3Igb3AsIEJsZW5kTW9kZSBtb2RlLCBjb25zdCBJbWFnZU9yaWVudGF0aW9uJiBvcmllbnRh
dGlvbikgY29uc3QKK3sKKyAgICBjb250ZXh0LnNhdmUoKTsKKyAgICAKKyAgICAvLyBTZXQgdGhl
IGNvbXBvc2l0aW5nIG9wZXJhdGlvbi4KKyAgICBpZiAob3AgPT0gQ29tcG9zaXRlU291cmNlT3Zl
ciAmJiBtb2RlID09IEJsZW5kTW9kZU5vcm1hbCAmJiAhaGFzQWxwaGEoKSkKKyAgICAgICAgY29u
dGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlQ29weSk7CisgICAgZWxzZQorICAg
ICAgICBjb250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihvcCwgbW9kZSk7CisgICAgICAgIAor
I2lmIEVOQUJMRShJTUFHRV9ERUNPREVSX0RPV05fU0FNUExJTkcpCisgICAgSW50U2l6ZSBzY2Fs
ZWRTaXplID0gY2Fpcm9TdXJmYWNlU2l6ZShtX2ltYWdlLmdldCgpKTsKKyAgICBGbG9hdFJlY3Qg
YWRqdXN0ZWRTcmNSZWN0ID0gYWRqdXN0U291cmNlUmVjdEZvckRvd25TYW1wbGluZyhzcmNSZWN0
LCBzY2FsZWRTaXplKTsKKyNlbHNlCisgICAgRmxvYXRSZWN0IGFkanVzdGVkU3JjUmVjdChzcmNS
ZWN0KTsKKyNlbmRpZgorICAgICAgICAKKyAgICBGbG9hdFJlY3QgYWRqdXN0ZWREZXN0UmVjdCA9
IGRlc3RSZWN0OworICAgICAgICAKKyAgICBpZiAob3JpZW50YXRpb24gIT0gRGVmYXVsdEltYWdl
T3JpZW50YXRpb24pIHsKKyAgICAgICAgLy8gSW1hZ2VPcmllbnRhdGlvbiBleHBlY3RzIHRoZSBv
cmlnaW4gdG8gYmUgYXQgKDAsIDApLgorICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZShkZXN0UmVj
dC54KCksIGRlc3RSZWN0LnkoKSk7CisgICAgICAgIGFkanVzdGVkRGVzdFJlY3Quc2V0TG9jYXRp
b24oRmxvYXRQb2ludCgpKTsKKyAgICAgICAgY29udGV4dC5jb25jYXRDVE0ob3JpZW50YXRpb24u
dHJhbnNmb3JtRnJvbURlZmF1bHQoYWRqdXN0ZWREZXN0UmVjdC5zaXplKCkpKTsKKyAgICAgICAg
aWYgKG9yaWVudGF0aW9uLnVzZXNXaWR0aEFzSGVpZ2h0KCkpIHsKKyAgICAgICAgICAgIC8vIFRo
ZSBkZXN0aW5hdGlvbiByZWN0YW5nbGUgd2lsbCBoYXZlIGl0J3Mgd2lkdGggYW5kIGhlaWdodCBh
bHJlYWR5IHJldmVyc2VkIGZvciB0aGUgb3JpZW50YXRpb24gb2YKKyAgICAgICAgICAgIC8vIHRo
ZSBpbWFnZSwgYXMgaXQgd2FzIG5lZWRlZCBmb3IgcGFnZSBsYXlvdXQsIHNvIHdlIG5lZWQgdG8g
cmV2ZXJzZSBpdCBiYWNrIGhlcmUuCisgICAgICAgICAgICBhZGp1c3RlZERlc3RSZWN0LnNldFNp
emUoYWRqdXN0ZWREZXN0UmVjdC5zaXplKCkudHJhbnNwb3NlZFNpemUoKSk7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICBjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLT5kcmF3U3VyZmFjZVRvQ29u
dGV4dChtX2ltYWdlLmdldCgpLCBhZGp1c3RlZERlc3RSZWN0LCBhZGp1c3RlZFNyY1JlY3QsIGNv
bnRleHQpOworCisgICAgY29udGV4dC5yZXN0b3JlKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIFVTRShDQUlSTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFwSW1hZ2VDRy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAzYzgxYTE3MGJlNzlhZTZiZTZjYWNkYzk5ZjRjMzk4Y2FhZjQyNmQuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFwSW1hZ2VDRy5jcHAKKysrIC9kZXYvbnVsbApA
QCAtMSwyMDYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQml0bWFw
SW1hZ2UuaCIKLQotI2lmIFVTRShDRykKLQotI2luY2x1ZGUgIkNvcmVHcmFwaGljc1NQSS5oIgot
I2luY2x1ZGUgIkZsb2F0Q29udmVyc2lvbi5oIgotI2luY2x1ZGUgIkdlb21ldHJ5VXRpbGl0aWVz
LmgiCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0Q0cuaCIKLSNpbmNsdWRlICJJbWFnZU9ic2Vy
dmVyLmgiCi0jaW5jbHVkZSAiU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5oIgotI2luY2x1ZGUgPHd0
Zi9SZXRhaW5QdHIuaD4KLQotI2lmIFVTRShBUFBLSVQpCi0jaW5jbHVkZSA8QXBwbGljYXRpb25T
ZXJ2aWNlcy9BcHBsaWNhdGlvblNlcnZpY2VzLmg+Ci0jZW5kaWYKLQotI2lmIFBMQVRGT1JNKENP
Q09BKQotI2luY2x1ZGUgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKLSNlbmRpZgotCi0jaWYg
UExBVEZPUk0oV0lOKQotI2luY2x1ZGUgPFdlYktpdFN5c3RlbUludGVyZmFjZS9XZWJLaXRTeXN0
ZW1JbnRlcmZhY2UuaD4KLSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFj
ZSBOYXRpdmVJbWFnZSB7Ci0KLUludFNpemUgc2l6ZShjb25zdCBSZXRhaW5QdHI8Q0dJbWFnZVJl
Zj4mIGltYWdlKQotewotICAgIEFTU0VSVChpbWFnZSk7Ci0gICAgcmV0dXJuIEludFNpemUoQ0dJ
bWFnZUdldFdpZHRoKGltYWdlLmdldCgpKSwgQ0dJbWFnZUdldEhlaWdodChpbWFnZS5nZXQoKSkp
OwotfQotCi1ib29sIGhhc0FscGhhKGNvbnN0IFJldGFpblB0cjxDR0ltYWdlUmVmPiYpCi17Ci0g
ICAgLy8gRklYTUU6IEFuc3dlciBjb3JyZWN0bHkgdGhlIHF1ZXN0aW9uOiBkb2VzIHRoZSBDR0lt
YWdlUmVmIGhhdmUgYWxwaGEgY2hhbm5uZWw/Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0gICAgCi1D
b2xvciBzaW5nbGVQaXhlbFNvbGlkQ29sb3IoY29uc3QgUmV0YWluUHRyPENHSW1hZ2VSZWY+JiBp
bWFnZSkKLXsKLSAgICBBU1NFUlQoaW1hZ2UpOwotICAgIAotICAgIGlmIChOYXRpdmVJbWFnZTo6
c2l6ZShpbWFnZSkgIT0gSW50U2l6ZSgxLCAxKSkKLSAgICAgICAgcmV0dXJuIENvbG9yKCk7Ci0g
ICAgCi0gICAgdW5zaWduZWQgY2hhciBwaXhlbFs0XTsgLy8gUkdCQQotICAgIGF1dG8gYml0bWFw
Q29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKHBpeGVsLCAxLCAxLCA4LCBz
aXplb2YocGl4ZWwpLCBzUkdCQ29sb3JTcGFjZVJlZigpLAotICAgICAgICBrQ0dJbWFnZUFscGhh
UHJlbXVsdGlwbGllZExhc3QgfCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkJpZykpOwotCi0gICAgaWYg
KCFiaXRtYXBDb250ZXh0KQotICAgICAgICByZXR1cm4gQ29sb3IoKTsKLSAgICAKLSAgICBDR0Nv
bnRleHRTZXRCbGVuZE1vZGUoYml0bWFwQ29udGV4dC5nZXQoKSwga0NHQmxlbmRNb2RlQ29weSk7
Ci0gICAgQ0dDb250ZXh0RHJhd0ltYWdlKGJpdG1hcENvbnRleHQuZ2V0KCksIENHUmVjdE1ha2Uo
MCwgMCwgMSwgMSksIGltYWdlLmdldCgpKTsKLSAgICAKLSAgICBpZiAoIXBpeGVsWzNdKQotICAg
ICAgICByZXR1cm4gQ29sb3IoMCwgMCwgMCwgMCk7Ci0KLSAgICByZXR1cm4gQ29sb3IocGl4ZWxb
MF0gKiAyNTUgLyBwaXhlbFszXSwgcGl4ZWxbMV0gKiAyNTUgLyBwaXhlbFszXSwgcGl4ZWxbMl0g
KiAyNTUgLyBwaXhlbFszXSwgcGl4ZWxbM10pOwotfQotCi19Ci0KLWJvb2wgRnJhbWVEYXRhOjpj
bGVhcihib29sIGNsZWFyTWV0YWRhdGEpCi17Ci0gICAgaWYgKGNsZWFyTWV0YWRhdGEpCi0gICAg
ICAgIG1faGF2ZU1ldGFkYXRhID0gZmFsc2U7Ci0KLSAgICBtX3N1YnNhbXBsaW5nTGV2ZWwgPSAw
OwotCi0gICAgaWYgKG1faW1hZ2UpIHsKLSNpZiBDQUNIRV9TVUJJTUFHRVMKLSAgICAgICAgc3Vi
aW1hZ2VDYWNoZSgpLmNsZWFySW1hZ2UobV9pbWFnZS5nZXQoKSk7Ci0jZW5kaWYKLSAgICAgICAg
bV9pbWFnZSA9IG51bGxwdHI7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICByZXR1
cm4gZmFsc2U7Ci19Ci0KLUNHSW1hZ2VSZWYgQml0bWFwSW1hZ2U6OmdldENHSW1hZ2VSZWYoKQot
ewotICAgIHJldHVybiBmcmFtZUltYWdlQXRJbmRleCgwKS5nZXQoKTsKLX0KLQotQ0dJbWFnZVJl
ZiBCaXRtYXBJbWFnZTo6Z2V0Rmlyc3RDR0ltYWdlUmVmT2ZTaXplKGNvbnN0IEludFNpemUmIHNp
emUpCi17Ci0gICAgc2l6ZV90IGNvdW50ID0gZnJhbWVDb3VudCgpOwotICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewotICAgICAgICBDR0ltYWdlUmVmIGNnSW1hZ2UgPSBm
cmFtZUltYWdlQXRJbmRleChpKS5nZXQoKTsKLSAgICAgICAgaWYgKGNnSW1hZ2UgJiYgSW50U2l6
ZShDR0ltYWdlR2V0V2lkdGgoY2dJbWFnZSksIENHSW1hZ2VHZXRIZWlnaHQoY2dJbWFnZSkpID09
IHNpemUpCi0gICAgICAgICAgICByZXR1cm4gY2dJbWFnZTsKLSAgICB9Ci0KLSAgICAvLyBGYWxs
YmFjayB0byB0aGUgZGVmYXVsdCBDR0ltYWdlUmVmIGlmIHdlIGNhbid0IGZpbmQgdGhlIHJpZ2h0
IHNpemUKLSAgICByZXR1cm4gZ2V0Q0dJbWFnZVJlZigpOwotfQotCi1SZXRhaW5QdHI8Q0ZBcnJh
eVJlZj4gQml0bWFwSW1hZ2U6OmdldENHSW1hZ2VBcnJheSgpCi17Ci0gICAgc2l6ZV90IGNvdW50
ID0gZnJhbWVDb3VudCgpOwotICAgIGlmICghY291bnQpCi0gICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIAotICAgIENGTXV0YWJsZUFycmF5UmVmIGFycmF5ID0gQ0ZBcnJheUNyZWF0ZU11dGFi
bGUoTlVMTCwgY291bnQsICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpOwotICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewotICAgICAgICBpZiAoQ0dJbWFnZVJlZiBjdXJyRnJh
bWUgPSBmcmFtZUltYWdlQXRJbmRleChpKS5nZXQoKSkKLSAgICAgICAgICAgIENGQXJyYXlBcHBl
bmRWYWx1ZShhcnJheSwgY3VyckZyYW1lKTsKLSAgICB9Ci0gICAgcmV0dXJuIGFkb3B0Q0YoYXJy
YXkpOwotfQotCi12b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY3R4dCwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21w
b3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmll
bnRhdGlvbkRlc2NyaXB0aW9uIGRlc2NyaXB0aW9uKQotewotI2lmIFBMQVRGT1JNKElPUykKLSAg
ICBzdGFydEFuaW1hdGlvbihEb05vdENhdGNoVXApOwotI2Vsc2UKLSAgICBzdGFydEFuaW1hdGlv
bigpOwotI2VuZGlmCi0KLSAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2U7Ci0gICAgLy8g
TmV2ZXIgdXNlIHN1YnNhbXBsZWQgaW1hZ2VzIGZvciBkcmF3aW5nIGludG8gUERGIGNvbnRleHRz
LgotICAgIGlmICh3a0NHQ29udGV4dElzUERGQ29udGV4dChjdHh0LnBsYXRmb3JtQ29udGV4dCgp
KSkKLSAgICAgICAgaW1hZ2UgPSBjb3B5VW5zY2FsZWRGcmFtZUltYWdlQXRJbmRleChtX2N1cnJl
bnRGcmFtZSk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIENHUmVjdCB0cmFuc2Zvcm1lZERlc3RpbmF0
aW9uUmVjdCA9IENHUmVjdEFwcGx5QWZmaW5lVHJhbnNmb3JtKGRlc3RSZWN0LCBDR0NvbnRleHRH
ZXRDVE0oY3R4dC5wbGF0Zm9ybUNvbnRleHQoKSkpOwotICAgICAgICBmbG9hdCBzdWJzYW1wbGlu
Z1NjYWxlID0gc3RkOjptaW48ZmxvYXQ+KDEsIHN0ZDo6bWF4KHRyYW5zZm9ybWVkRGVzdGluYXRp
b25SZWN0LnNpemUud2lkdGggLyBzcmNSZWN0LndpZHRoKCksIHRyYW5zZm9ybWVkRGVzdGluYXRp
b25SZWN0LnNpemUuaGVpZ2h0IC8gc3JjUmVjdC5oZWlnaHQoKSkpOwotCi0gICAgICAgIGltYWdl
ID0gZnJhbWVJbWFnZUF0SW5kZXgobV9jdXJyZW50RnJhbWUsIHN1YnNhbXBsaW5nU2NhbGUpOwot
ICAgIH0KLQotICAgIGlmICghaW1hZ2UpIC8vIElmIGl0J3MgdG9vIGVhcmx5IHdlIHdvbid0IGhh
dmUgYW4gaW1hZ2UgeWV0LgotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgQ29sb3IgY29sb3Ig
PSBzaW5nbGVQaXhlbFNvbGlkQ29sb3IoKTsKLSAgICBpZiAoY29sb3IuaXNWYWxpZCgpKSB7Ci0g
ICAgICAgIGZpbGxXaXRoU29saWRDb2xvcihjdHh0LCBkZXN0UmVjdCwgY29sb3IsIGNvbXBvc2l0
ZU9wKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIFN1YnNhbXBsaW5nIG1heSBo
YXZlIGdpdmVuIHVzIGFuIGltYWdlIHRoYXQgaXMgc21hbGxlciB0aGFuIHNpemUoKS4KLSAgICBJ
bnRTaXplIGltYWdlU2l6ZShDR0ltYWdlR2V0V2lkdGgoaW1hZ2UuZ2V0KCkpLCBDR0ltYWdlR2V0
SGVpZ2h0KGltYWdlLmdldCgpKSk7Ci0gICAgCi0gICAgLy8gc3JjUmVjdCBpcyBpbiB0aGUgY29v
cmRpbmF0ZXMgb2YgdGhlIHVuc3Vic2FtcGxlZCBpbWFnZSwgc28gd2UgaGF2ZSB0byBtYXAgaXQg
dG8gdGhlIHN1YnNhbXBsZWQgaW1hZ2UuCi0gICAgRmxvYXRSZWN0IHNjYWxlZFNyY1JlY3QgPSBz
cmNSZWN0OwotICAgIGlmIChpbWFnZVNpemUgIT0gbV9zaXplKSB7Ci0gICAgICAgIEZsb2F0UmVj
dCBvcmlnaW5hbEltYWdlQm91bmRzKEZsb2F0UG9pbnQoKSwgbV9zaXplKTsKLSAgICAgICAgRmxv
YXRSZWN0IHN1YnNhbXBsZWRJbWFnZUJvdW5kcyhGbG9hdFBvaW50KCksIGltYWdlU2l6ZSk7Ci0g
ICAgICAgIHNjYWxlZFNyY1JlY3QgPSBtYXBSZWN0KHNyY1JlY3QsIG9yaWdpbmFsSW1hZ2VCb3Vu
ZHMsIHN1YnNhbXBsZWRJbWFnZUJvdW5kcyk7Ci0gICAgfQotICAgIAotICAgIEltYWdlT3JpZW50
YXRpb24gb3JpZW50YXRpb247Ci0gICAgaWYgKGRlc2NyaXB0aW9uLnJlc3BlY3RJbWFnZU9yaWVu
dGF0aW9uKCkgPT0gUmVzcGVjdEltYWdlT3JpZW50YXRpb24pCi0gICAgICAgIG9yaWVudGF0aW9u
ID0gZnJhbWVPcmllbnRhdGlvbkF0SW5kZXgobV9jdXJyZW50RnJhbWUpOwotCi0gICAgY3R4dC5k
cmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNjYWxlZFNyY1JlY3Qs
IGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUsIG9yaWVudGF0aW9uKTsKLQotICAgIGlmIChpbWFnZU9i
c2VydmVyKCkpCi0gICAgICAgIGltYWdlT2JzZXJ2ZXIoKS0+ZGlkRHJhdyh0aGlzKTsKLX0KLQot
UmV0YWluUHRyPENHSW1hZ2VSZWY+IEJpdG1hcEltYWdlOjpjb3B5VW5zY2FsZWRGcmFtZUltYWdl
QXRJbmRleChzaXplX3QgaW5kZXgpCi17Ci0gICAgaWYgKGluZGV4ID49IGZyYW1lQ291bnQoKSkK
LSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBpZiAoaW5kZXggPj0gbV9mcmFtZXMuc2l6
ZSgpIHx8ICFtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZSkKLSAgICAgICAgY2FjaGVGcmFtZShpbmRl
eCwgMCk7Ci0KLSAgICBpZiAoIW1fZnJhbWVzW2luZGV4XS5tX3N1YnNhbXBsaW5nTGV2ZWwpCi0g
ICAgICAgIHJldHVybiBtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZTsKLQotICAgIHJldHVybiBtX3Nv
dXJjZS5jcmVhdGVGcmFtZUltYWdlQXRJbmRleChpbmRleCk7Ci19Ci0KLX0KLQotI2VuZGlmIC8v
IFVTRShDRykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L1BhdHRlcm5DRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0
ZXJuQ0cuY3BwCmluZGV4IGI0MjhkNTBkOTRiZjkyNDI4MDMyODdkMmVlYzE2YmQ2OWM1MjhkOTIu
LjNkYWExMzlhYjdlYTViNDIxNTc3ODgzNWQzNTNkOGFkYjVmMGM3NWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcApAQCAtNzIsNyAr
NzIsNyBAQCBDR1BhdHRlcm5SZWYgUGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYgdXNlclNwYWNlVHJhbgogICAgIC8vIElmIHdlJ3JlIHJlcGVhdGlu
ZyBpbiBib3RoIGRpcmVjdGlvbnMsIHdlIGNhbiB1c2UgaW1hZ2UtYmFja2VkIHBhdHRlcm5zCiAg
ICAgLy8gaW5zdGVhZCBvZiBjdXN0b20gcGF0dGVybnMsIGFuZCBhdm9pZCB0aWxpbmctZWRnZSBw
aXhlbCBjcmFja3MuCiAgICAgaWYgKG1fcmVwZWF0WCAmJiBtX3JlcGVhdFkpCi0gICAgICAgIHJl
dHVybiB3a0NHUGF0dGVybkNyZWF0ZVdpdGhJbWFnZUFuZFRyYW5zZm9ybSh0aWxlSW1hZ2UoKS0+
Z2V0Q0dJbWFnZVJlZigpLCBwYXR0ZXJuVHJhbnNmb3JtLCB3a1BhdHRlcm5UaWxpbmdDb25zdGFu
dFNwYWNpbmcpOworICAgICAgICByZXR1cm4gd2tDR1BhdHRlcm5DcmVhdGVXaXRoSW1hZ2VBbmRU
cmFuc2Zvcm0odGlsZUltYWdlKCktPm5hdGl2ZUltYWdlKCkuZ2V0KCksIHBhdHRlcm5UcmFuc2Zv
cm0sIHdrUGF0dGVyblRpbGluZ0NvbnN0YW50U3BhY2luZyk7CiAKICAgICAvLyBJZiBGTFRfTUFY
IHNob3VsZCBhbHNvIGJlIHVzZWQgZm9yIHhTdGVwIG9yIHlTdGVwLCBub3RoaW5nIGlzIHJlbmRl
cmVkLiBVc2luZyBmcmFjdGlvbnMgb2YgRkxUX01BWCBhbHNvCiAgICAgLy8gcmVzdWx0IGluIG5v
dGhpbmcgYmVpbmcgcmVuZGVyZWQuCkBAIC04Myw3ICs4Myw3IEBAIENHUGF0dGVyblJlZiBQYXR0
ZXJuOjpjcmVhdGVQbGF0Zm9ybVBhdHRlcm4oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB1c2VyU3Bh
Y2VUcmFuCiAgICAgQ0dGbG9hdCB5U3RlcCA9IG1fcmVwZWF0WSA/IHRpbGVSZWN0LmhlaWdodCgp
IDogKDEgPDwgMjIpOwogCiAgICAgLy8gVGhlIHBhdHRlcm4gd2lsbCByZWxlYXNlIHRoZSBDR0lt
YWdlUmVmIHdoZW4gaXQncyBkb25lIHJlbmRlcmluZyBpbiBwYXR0ZXJuUmVsZWFzZUNhbGxiYWNr
Ci0gICAgQ0dJbWFnZVJlZiBwbGF0Zm9ybUltYWdlID0gQ0dJbWFnZVJldGFpbih0aWxlSW1hZ2Uo
KS0+Z2V0Q0dJbWFnZVJlZigpKTsKKyAgICBDR0ltYWdlUmVmIHBsYXRmb3JtSW1hZ2UgPSB0aWxl
SW1hZ2UoKS0+bmF0aXZlSW1hZ2UoKS5sZWFrUmVmKCk7CiAKICAgICBjb25zdCBDR1BhdHRlcm5D
YWxsYmFja3MgcGF0dGVybkNhbGxiYWNrcyA9IHsgMCwgcGF0dGVybkNhbGxiYWNrLCBwYXR0ZXJu
UmVsZWFzZUNhbGxiYWNrIH07CiAgICAgcmV0dXJuIENHUGF0dGVybkNyZWF0ZShwbGF0Zm9ybUlt
YWdlLCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgeFN0ZXAsIHlTdGVwLCBrQ0dQYXR0ZXJu
VGlsaW5nQ29uc3RhbnRTcGFjaW5nLCBUUlVFLCAmcGF0dGVybkNhbGxiYWNrcyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QbGF0Zm9ybUltYWdlQ0cu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGxhdGZvcm1JbWFnZUNH
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5hZmIyZGUwZWExMmRhMjE0ZjEwNDZjMzk2MmU4ZWFiNTNjNjQ0MTI1
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
UGxhdGZvcm1JbWFnZUNHLmNwcApAQCAtMCwwICsxLDE3MSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJQbGF0Zm9ybUltYWdlLmgiCisKKyNpZiBVU0UoQ0cpCisKKyNpbmNsdWRlICJDb2xvci5oIgor
I2luY2x1ZGUgIkNvcmVHcmFwaGljc1NQSS5oIgorI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgorI2lu
Y2x1ZGUgIkdlb21ldHJ5VXRpbGl0aWVzLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0Q0cu
aCIKKyNpbmNsdWRlICJJbnRTaXplLmgiCisjaW5jbHVkZSAiU3ViaW1hZ2VDYWNoZVdpdGhUaW1l
ci5oIgorCisjaWYgUExBVEZPUk0oV0lOKQorI2luY2x1ZGUgPFdlYktpdFN5c3RlbUludGVyZmFj
ZS9XZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisgICAgCit2b2lkIFBsYXRmb3JtSW1hZ2U6OmNsZWFyU3ViSW1hZ2VzKCkKK3sKKyNpZiBDQUNI
RV9TVUJJTUFHRVMKKyAgICBpZiAoIWlzTmlsKCkpCisgICAgICAgIHN1YmltYWdlQ2FjaGUoKS5j
bGVhckltYWdlKGNnSW1hZ2VSZWYoKSk7CisjZW5kaWYKK30KKworSW50U2l6ZSBQbGF0Zm9ybUlt
YWdlOjpzaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gaXNOaWwoKSA/IEludFNpemUoKSA6IElu
dFNpemUoQ0dJbWFnZUdldFdpZHRoKGNnSW1hZ2VSZWYoKSksIENHSW1hZ2VHZXRIZWlnaHQoY2dJ
bWFnZVJlZigpKSk7Cit9CisKK2Jvb2wgUGxhdGZvcm1JbWFnZTo6aGFzQWxwaGEoKSBjb25zdAor
eworICAgIC8vIEZJWE1FOiBBbnN3ZXIgY29ycmVjdGx5IHRoZSBxdWVzdGlvbjogZG9lcyB0aGUg
Q0dJbWFnZVJlZiBoYXZlIGFscGhhIGNoYW5ubmVsPworICAgIHJldHVybiB0cnVlOworfQorCitD
b2xvciBQbGF0Zm9ybUltYWdlOjpzaW5nbGVQaXhlbFNvbGlkQ29sb3IoKSBjb25zdAoreworICAg
IGlmIChpc05pbCgpIHx8IHNpemUoKSAhPSBJbnRTaXplKDEsIDEpKQorICAgICAgICByZXR1cm4g
Q29sb3IoKTsKKyAgICAKKyAgICB1bnNpZ25lZCBjaGFyIHBpeGVsWzRdOyAvLyBSR0JBCisgICAg
YXV0byBiaXRtYXBDb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUocGl4ZWws
IDEsIDEsIDgsIHNpemVvZihwaXhlbCksIHNSR0JDb2xvclNwYWNlUmVmKCksCisgICAgICAgIGtD
R0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkTGFzdCB8IGtDR0JpdG1hcEJ5dGVPcmRlcjMyQmlnKSk7
CisgICAgCisgICAgaWYgKCFiaXRtYXBDb250ZXh0KQorICAgICAgICByZXR1cm4gQ29sb3IoKTsK
KyAgICAKKyAgICBDR0NvbnRleHRTZXRCbGVuZE1vZGUoYml0bWFwQ29udGV4dC5nZXQoKSwga0NH
QmxlbmRNb2RlQ29weSk7CisgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGJpdG1hcENvbnRleHQuZ2V0
KCksIENHUmVjdE1ha2UoMCwgMCwgMSwgMSksIGNnSW1hZ2VSZWYoKSk7CisgICAgCisgICAgaWYg
KCFwaXhlbFszXSkKKyAgICAgICAgcmV0dXJuIENvbG9yKDAsIDAsIDAsIDApOworICAgIAorICAg
IHJldHVybiBDb2xvcihwaXhlbFswXSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhlbFsxXSAqIDI1NSAv
IHBpeGVsWzNdLCBwaXhlbFsyXSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhlbFszXSk7Cit9CisgICAg
Citib29sIFBsYXRmb3JtSW1hZ2U6OmlzQWxtb3N0U29saWRDb2xvcigpIGNvbnN0Cit7CisgICAg
Q0dJbWFnZVJlZiBpbWFnZSA9IGNnSW1hZ2VSZWYoKTsKKyAgICBBU1NFUlQoQ0dJbWFnZUdldEJp
dHNQZXJDb21wb25lbnQoaW1hZ2UpID09IDgpOworICAgIAorICAgIENHQml0bWFwSW5mbyBpbWFn
ZUluZm8gPSBDR0ltYWdlR2V0Qml0bWFwSW5mbyhpbWFnZSk7CisgICAgaWYgKCEoaW1hZ2VJbmZv
ICYga0NHQml0bWFwQnl0ZU9yZGVyMzJMaXR0bGUpIHx8IChpbWFnZUluZm8gJiBrQ0dCaXRtYXBB
bHBoYUluZm9NYXNrKSAhPSBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0KSB7CisgICAg
ICAgIC8vIEZJWE1FOiBDb25zaWRlciBiZWluZyBhYmxlIHRvIGhhbmRsZSBvdGhlciBwaXhlbCBm
b3JtYXRzLgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKyAgICAKKyAgICBzaXplX3Qgd2lkdGggPSBDR0ltYWdlR2V0V2lkdGgoaW1h
Z2UpOworICAgIHNpemVfdCBoZWlnaHQgPSBDR0ltYWdlR2V0SGVpZ2h0KGltYWdlKTsKKyAgICBz
aXplX3QgYnl0ZXNQZXJSb3cgPSBDR0ltYWdlR2V0Qnl0ZXNQZXJSb3coaW1hZ2UpOworICAgIAor
ICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IHByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRl
ckNvcHlEYXRhKENHSW1hZ2VHZXREYXRhUHJvdmlkZXIoaW1hZ2UpKSk7CisgICAgY29uc3QgVUlu
dDgqIGRhdGEgPSBDRkRhdGFHZXRCeXRlUHRyKHByb3ZpZGVyLmdldCgpKTsKKyAgICAKKyAgICAv
LyBPdmVybGF5IGEgZ3JpZCBvZiBzYW1wbGluZyBkb3RzIG9uIHRvcCBvZiBhIGdyYXlzY2FsZSB2
ZXJzaW9uIG9mIHRoZSBpbWFnZS4KKyAgICAvLyBGb3IgdGhlIGludGVyaW9yIHBvaW50cywgY2Fs
Y3VsYXRlIHRoZSBkaWZmZXJlbmNlIGluIGx1bWluYW5jZSBhbW9uZyB0aGUgc2FtcGxlIHBvaW50
CisgICAgLy8gYW5kIGl0cyBzdXJyb3VuZHMgcG9pbnRzLCBzY2FsZWQgYnkgdHJhbnNwYXJlbmN5
LgorICAgIGNvbnN0IHVuc2lnbmVkIHNhbXBsZVJvd3MgPSA3OworICAgIGNvbnN0IHVuc2lnbmVk
IHNhbXBsZUNvbHMgPSA3OworICAgIC8vIEZJWE1FOiBSZWZpbmUgdGhlIHByb3BlciBudW1iZXIg
b2Ygc2FtcGxlcywgYW5kIGFjY29tbW9kYXRlIGRpZmZlcmVudCBhc3BlY3QgcmF0aW9zLgorICAg
IGlmICh3aWR0aCA8IHNhbXBsZUNvbHMgfHwgaGVpZ2h0IDwgc2FtcGxlUm93cykKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIAorICAgIC8vIEVuc3VyZSB0aGF0IHRoZSBsYXN0IHJvdy9jb2x1
bW4gbGFuZCBvbiB0aGUgaW1hZ2UgcGVyaW1ldGVyLgorICAgIGNvbnN0IGZsb2F0IHN0cmlkZVdp
ZHRoID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHdpZHRoIC0gMSkgLyAoc2FtcGxlQ29scyAtIDEpOwor
ICAgIGNvbnN0IGZsb2F0IHN0cmlkZUhlaWdodCA9IHN0YXRpY19jYXN0PGZsb2F0PihoZWlnaHQg
LSAxKSAvIChzYW1wbGVSb3dzIC0gMSk7CisgICAgZmxvYXQgc2FtcGxlc1tzYW1wbGVSb3dzXVtz
YW1wbGVDb2xzXTsKKyAgICAKKyAgICAvLyBGaW5kIHRoZSBsdW1pbmFuY2Ugb2YgdGhlIHNhbXBs
ZSBwb2ludHMuCisgICAgZmxvYXQgeSA9IDA7CisgICAgY29uc3QgVUludDgqIHJvdyA9IGRhdGE7
CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNhbXBsZVJvd3M7ICsraSkgeworICAgICAg
ICBmbG9hdCB4ID0gMDsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IHNhbXBsZUNv
bHM7ICsraikgeworICAgICAgICAgICAgY29uc3QgVUludDgqIHAwID0gcm93ICsgKHN0YXRpY19j
YXN0PGludD4oeCArIC41KSkgKiA0OworICAgICAgICAgICAgLy8gUiBHIEIgQQorICAgICAgICAg
ICAgc2FtcGxlc1tpXVtqXSA9ICgwLjIxMjUgKiAqcDAgKyAwLjcxNTQgKiAqKHAwKzEpICsgMC4w
NzIxICogKihwMCsyKSkgKiAqKHAwKzMpIC8gMjU1OworICAgICAgICAgICAgeCArPSBzdHJpZGVX
aWR0aDsKKyAgICAgICAgfQorICAgICAgICB5ICs9IHN0cmlkZUhlaWdodDsKKyAgICAgICAgcm93
ID0gZGF0YSArIChzdGF0aWNfY2FzdDxpbnQ+KHkgKyAuNSkpICogYnl0ZXNQZXJSb3c7CisgICAg
fQorICAgIAorICAgIC8vIERldGVybWluZSB0aGUgaW1hZ2Ugc2NvcmUuCisgICAgZmxvYXQgYWNj
dW1TY29yZSA9IDA7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IHNhbXBsZVJvd3MgLSAx
OyArK2kpIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMTsgaiA8IHNhbXBsZUNvbHMgLSAx
OyArK2opIHsKKyAgICAgICAgICAgIGZsb2F0IGRpZmYgPSBzYW1wbGVzW2kgLSAxXVtqXSArIHNh
bXBsZXNbaSArIDFdW2pdICsgc2FtcGxlc1tpXVtqIC0gMV0gKyBzYW1wbGVzW2ldW2ogKyAxXSAt
IDQgKiBzYW1wbGVzW2ldW2pdOworICAgICAgICAgICAgYWNjdW1TY29yZSArPSBkaWZmICogZGlm
ZjsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICAvLyBUaGUgc2NvcmUgZm9yIGEgZ2l2ZW4g
c2FtcGxlIGNhbiBiZSB3aXRoaW4gdGhlIHJhbmdlIG9mIDAgYW5kIDI1NV4yLgorICAgIHJldHVy
biBhY2N1bVNjb3JlIDwgMjUwMCAqIChzYW1wbGVSb3dzIC0gMikgKiAoc2FtcGxlQ29scyAtIDIp
OworfQorCitmbG9hdCBQbGF0Zm9ybUltYWdlOjpzdWJzYW1wbGluZ1NjYWxlKEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0KQoreworICAgIC8vIE5ldmVyIHVzZSBzdWJzYW1wbGVkIGltYWdlcyBmb3IgZHJh
d2luZyBpbnRvIFBERiBjb250ZXh0cy4KKyAgICBpZiAod2tDR0NvbnRleHRJc1BERkNvbnRleHQo
Y29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSkpCisgICAgICAgIHJldHVybiAxOworICAgIAorICAg
IENHUmVjdCB0cmFuc2Zvcm1lZERlc3RpbmF0aW9uUmVjdCA9IENHUmVjdEFwcGx5QWZmaW5lVHJh
bnNmb3JtKGRlc3RSZWN0LCBDR0NvbnRleHRHZXRDVE0oY29udGV4dC5wbGF0Zm9ybUNvbnRleHQo
KSkpOworICAgIHJldHVybiBzdGQ6Om1pbjxmbG9hdD4oMSwgc3RkOjptYXgodHJhbnNmb3JtZWRE
ZXN0aW5hdGlvblJlY3Quc2l6ZS53aWR0aCAvIHNyY1JlY3Qud2lkdGgoKSwgdHJhbnNmb3JtZWRE
ZXN0aW5hdGlvblJlY3Quc2l6ZS5oZWlnaHQgLyBzcmNSZWN0LmhlaWdodCgpKSk7Cit9CisKK3Zv
aWQgUGxhdGZvcm1JbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50U2l6
ZSYgc3JjU2l6ZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBtb2RlLCBjb25zdCBJ
bWFnZU9yaWVudGF0aW9uJiBvcmllbnRhdGlvbikgY29uc3QKK3sKKyAgICAvLyBTdWJzYW1wbGlu
ZyBtYXkgaGF2ZSBnaXZlbiB1cyBhbiBpbWFnZSB0aGF0IGlzIHNtYWxsZXIgdGhhbiBzaXplKCku
CisgICAgSW50U2l6ZSBzdWJzYW1wbGVkSW1hZ2VTaXplID0gc2l6ZSgpOworICAgIAorICAgIC8v
IHNyY1JlY3QgaXMgaW4gdGhlIGNvb3JkaW5hdGVzIG9mIHRoZSB1bnN1YnNhbXBsZWQgaW1hZ2Us
IHNvIHdlIGhhdmUgdG8gbWFwIGl0IHRvIHRoZSBzdWJzYW1wbGVkIGltYWdlLgorICAgIEZsb2F0
UmVjdCBhZGp1c3RlZFNyY1JlY3QgPSBzcmNSZWN0OworICAgIGlmIChzdWJzYW1wbGVkSW1hZ2VT
aXplICE9IHNyY1NpemUpCisgICAgICAgIGFkanVzdGVkU3JjUmVjdCA9IG1hcFJlY3Qoc3JjUmVj
dCwgRmxvYXRSZWN0KHsgfSwgc3JjU2l6ZSksIEZsb2F0UmVjdCh7IH0sIHN1YnNhbXBsZWRJbWFn
ZVNpemUpKTsKKyAgICAKKyAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShtX2ltYWdlLCBzdWJz
YW1wbGVkSW1hZ2VTaXplLCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBvcCwgbW9kZSwgb3Jp
ZW50YXRpb24pOworfQorICAgIAorfQorCisjZW5kaWYgLy8gVVNFKENHKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVGV4dFRyYWNrUmVwcmVzZW50
YXRpb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1Rl
eHRUcmFja1JlcHJlc2VudGF0aW9uQ29jb2EubW0KaW5kZXggODk3MjBkMTczNjVkYTdlOGJhODQ2
OWQ1Mjk0NTQ4ZDUxODQ3YTdmZS4uNDQ3NmZjNWY4N2MzNDk4OGY2ZDlhZDU1ZWViZDhkMWI5YmIw
MjJlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
VGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9UZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hLm1tCkBAIC0x
MjksNyArMTI5LDcgQEAgVGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYTo6flRleHRUcmFja1Jl
cHJlc2VudGF0aW9uQ29jb2EoKQogdm9pZCBUZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hOjp1
cGRhdGUoKQogewogICAgIGlmIChhdXRvIHJlcHJlc2VudGF0aW9uID0gbV9jbGllbnQuY3JlYXRl
VGV4dFRyYWNrUmVwcmVzZW50YXRpb25JbWFnZSgpKQotICAgICAgICBbbV9sYXllci5nZXQoKSBz
ZXRDb250ZW50czooaWQpcmVwcmVzZW50YXRpb24tPmdldENHSW1hZ2VSZWYoKV07CisgICAgICAg
IFttX2xheWVyLmdldCgpIHNldENvbnRlbnRzOihpZClyZXByZXNlbnRhdGlvbi0+bmF0aXZlSW1h
Z2UoKS5nZXQoKV07CiB9CiAKIHZvaWQgVGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYTo6c2V0
Q29udGVudFNjYWxlKGZsb2F0IHNjYWxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tCmluZGV4IDAxZWI2ZGQzMDA0M2EyMjUyOTE3NmZkOTEy
MTE3ZGM1Nzc2YzE3YmEuLmRjMWM3YzcwOTVkOTQ0YzRjNjJmMWZlMDkzNTcwMmExM2M3YzdhNDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9JbWFnZU1h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMu
bW0KQEAgLTg1LDMxICs4NSwyMiBAQCBDRkRhdGFSZWYgQml0bWFwSW1hZ2U6OmdldFRJRkZSZXBy
ZXNlbnRhdGlvbigpCiAgICAgaWYgKG1fdGlmZlJlcCkKICAgICAgICAgcmV0dXJuIG1fdGlmZlJl
cC5nZXQoKTsKIAotICAgIHVuc2lnbmVkIG51bUZyYW1lcyA9IGZyYW1lQ291bnQoKTsKKyAgICBh
dXRvIG5hdGl2ZUltYWdlcyA9IHRoaXMtPmZyYW1lc05hdGl2ZUltYWdlcygpOwogCi0gICAgLy8g
SWYgbnVtRnJhbWVzIGlzIHplcm8sIHdlIGtub3cgZm9yIGNlcnRhaW4gdGhpcyBpbWFnZSBkb2Vz
bid0IGhhdmUgdmFsaWQgZGF0YQorICAgIC8vIElmIGZyYW1lc0ltYWdlcy5zaXplKCkgaXMgemVy
bywgd2Uga25vdyBmb3IgY2VydGFpbiB0aGlzIGltYWdlIGRvZXNuJ3QgaGF2ZSB2YWxpZCBkYXRh
CiAgICAgLy8gRXZlbiB0aG91Z2ggdGhlIGNhbGwgdG8gQ0dJbWFnZURlc3RpbmF0aW9uQ3JlYXRl
V2l0aERhdGEgd2lsbCBmYWlsIGFuZCB3ZSdsbCBoYW5kbGUgaXQgZ3JhY2VmdWxseSwKICAgICAv
LyBpbiBjZXJ0YWluIGNpcmN1bXN0YW5jZXMgdGhhdCBjYWxsIHdpbGwgc3BhbSB0aGUgY29uc29s
ZSB3aXRoIGFuIGVycm9yIG1lc3NhZ2UKLSAgICBpZiAoIW51bUZyYW1lcykKLSAgICAgICAgcmV0
dXJuIDA7Ci0KLSAgICBWZWN0b3I8Q0dJbWFnZVJlZj4gaW1hZ2VzOwotICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBudW1GcmFtZXM7ICsraSApIHsKLSAgICAgICAgQ0dJbWFnZVJlZiBjZ0lt
YWdlID0gZnJhbWVJbWFnZUF0SW5kZXgoaSkuZ2V0KCk7Ci0gICAgICAgIGlmIChjZ0ltYWdlKQot
ICAgICAgICAgICAgaW1hZ2VzLmFwcGVuZChjZ0ltYWdlKTsKLSAgICB9Ci0KLSAgICB1bnNpZ25l
ZCBudW1WYWxpZEZyYW1lcyA9IGltYWdlcy5zaXplKCk7CisgICAgaWYgKCFuYXRpdmVJbWFnZXMu
c2l6ZSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIFJldGFpblB0cjxDRk11dGFi
bGVEYXRhUmVmPiBkYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGVNdXRhYmxlKDAsIDApKTsKLSAg
ICBSZXRhaW5QdHI8Q0dJbWFnZURlc3RpbmF0aW9uUmVmPiBkZXN0aW5hdGlvbiA9IGFkb3B0Q0Yo
Q0dJbWFnZURlc3RpbmF0aW9uQ3JlYXRlV2l0aERhdGEoZGF0YS5nZXQoKSwga1VUVHlwZVRJRkYs
IG51bVZhbGlkRnJhbWVzLCAwKSk7CisgICAgUmV0YWluUHRyPENHSW1hZ2VEZXN0aW5hdGlvblJl
Zj4gZGVzdGluYXRpb24gPSBhZG9wdENGKENHSW1hZ2VEZXN0aW5hdGlvbkNyZWF0ZVdpdGhEYXRh
KGRhdGEuZ2V0KCksIGtVVFR5cGVUSUZGLCBuYXRpdmVJbWFnZXMuc2l6ZSgpLCAwKSk7CiAKICAg
ICBpZiAoIWRlc3RpbmF0aW9uKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtVmFsaWRGcmFtZXM7ICsr
aSkKLSAgICAgICAgQ0dJbWFnZURlc3RpbmF0aW9uQWRkSW1hZ2UoZGVzdGluYXRpb24uZ2V0KCks
IGltYWdlc1tpXSwgMCk7CisgICAgZm9yIChhdXRvIG5hdGl2ZUltYWdlIDogbmF0aXZlSW1hZ2Vz
KQorICAgICAgICBDR0ltYWdlRGVzdGluYXRpb25BZGRJbWFnZShkZXN0aW5hdGlvbi5nZXQoKSwg
bmF0aXZlSW1hZ2UuZ2V0KCksIDApOwogCiAgICAgQ0dJbWFnZURlc3RpbmF0aW9uRmluYWxpemUo
ZGVzdGluYXRpb24uZ2V0KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcAppbmRleCAyMTc1M2JkMDc4YTFjNTVj
MzI3MTljMTQ4NDZmMGY2Yjk5NzVmOGZkLi5hOWJmYmQ5NWU0ZWQzNjc4YTBkZGNkZjc3NzE3YWUy
YzIzZGRhZmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9JbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL0ltYWdlRGVjb2Rlci5jcHAKQEAgLTEzMiw3ICsxMzIsNiBAQCBJbWFnZUZyYW1l
OjpJbWFnZUZyYW1lKCkKICAgICAsIG1fc3RhdHVzKEZyYW1lRW1wdHkpCiAgICAgLCBtX2R1cmF0
aW9uKDApCiAgICAgLCBtX2Rpc3Bvc2FsTWV0aG9kKERpc3Bvc2VOb3RTcGVjaWZpZWQpCi0gICAg
LCBtX3ByZW11bHRpcGx5QWxwaGEodHJ1ZSkKIHsKIH0gCiAKQEAgLTE0MiwxOCArMTQxLDE2IEBA
IEltYWdlRnJhbWUmIEltYWdlRnJhbWU6Om9wZXJhdG9yPShjb25zdCBJbWFnZUZyYW1lJiBvdGhl
cikKICAgICAgICAgcmV0dXJuICp0aGlzOwogCiAgICAgY29weUJpdG1hcERhdGEob3RoZXIpOwot
ICAgIHNldE9yaWdpbmFsRnJhbWVSZWN0KG90aGVyLm9yaWdpbmFsRnJhbWVSZWN0KCkpOworICAg
IHNldEhhc0FscGhhKG90aGVyLm1faGFzQWxwaGEpOwogICAgIHNldFN0YXR1cyhvdGhlci5zdGF0
dXMoKSk7CiAgICAgc2V0RHVyYXRpb24ob3RoZXIuZHVyYXRpb24oKSk7CiAgICAgc2V0RGlzcG9z
YWxNZXRob2Qob3RoZXIuZGlzcG9zYWxNZXRob2QoKSk7Ci0gICAgc2V0UHJlbXVsdGlwbHlBbHBo
YShvdGhlci5wcmVtdWx0aXBseUFscGhhKCkpOwogICAgIHJldHVybiAqdGhpczsKIH0KIAogdm9p
ZCBJbWFnZUZyYW1lOjpjbGVhclBpeGVsRGF0YSgpCiB7Ci0gICAgbV9iYWNraW5nU3RvcmUuY2xl
YXIoKTsKLSAgICBtX2J5dGVzID0gMDsKKyAgICBtX3BpeGVscyA9IG51bGxwdHI7CiAgICAgbV9z
dGF0dXMgPSBGcmFtZUVtcHR5OwogICAgIC8vIE5PVEU6IERvIG5vdCByZXNldCBvdGhlciBtZW1i
ZXJzIGhlcmU7IGNsZWFyRnJhbWVCdWZmZXJDYWNoZSgpIGNhbGxzIHRoaXMKICAgICAvLyB0byBm
cmVlIHRoZSBiaXRtYXAgZGF0YSwgYnV0IG90aGVyIGZ1bmN0aW9ucyBsaWtlIGluaXRGcmFtZUJ1
ZmZlcigpIGFuZApAQCAtMTYzLDI0ICsxNjAsMTYgQEAgdm9pZCBJbWFnZUZyYW1lOjpjbGVhclBp
eGVsRGF0YSgpCiAKIHZvaWQgSW1hZ2VGcmFtZTo6emVyb0ZpbGxQaXhlbERhdGEoKQogewotICAg
IG1lbXNldChtX2J5dGVzLCAwLCBtX3NpemUud2lkdGgoKSAqIG1fc2l6ZS5oZWlnaHQoKSAqIHNp
emVvZihQaXhlbERhdGEpKTsKKyAgICBtX3BpeGVscy0+Y2xlYXIoKTsKICAgICBtX2hhc0FscGhh
ID0gdHJ1ZTsKIH0KIAogdm9pZCBJbWFnZUZyYW1lOjp6ZXJvRmlsbEZyYW1lUmVjdChjb25zdCBJ
bnRSZWN0JiByZWN0KQogewotICAgIEFTU0VSVChJbnRSZWN0KEludFBvaW50KCksIG1fc2l6ZSku
Y29udGFpbnMocmVjdCkpOwotCiAgICAgaWYgKHJlY3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBzaXplX3QgcmVjdFdpZHRoSW5CeXRlcyA9IHJlY3Qud2lkdGgoKSAqIHNpemVv
ZihQaXhlbERhdGEpOwotICAgIFBpeGVsRGF0YSogc3RhcnQgPSBtX2J5dGVzICsgKHJlY3QueSgp
ICogd2lkdGgoKSkgKyByZWN0LngoKTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IHJlY3QuaGVp
Z2h0KCk7ICsraSkgewotICAgICAgICBtZW1zZXQoc3RhcnQsIDAsIHJlY3RXaWR0aEluQnl0ZXMp
OwotICAgICAgICBzdGFydCArPSB3aWR0aCgpOwotICAgIH0KLQorICAgIG1fcGl4ZWxzLT5jbGVh
clJlY3QocmVjdCk7CiAgICAgc2V0SGFzQWxwaGEodHJ1ZSk7CiB9CiAKQEAgLTE4OSwyNSArMTc4
LDIzIEBAIGJvb2wgSW1hZ2VGcmFtZTo6Y29weUJpdG1hcERhdGEoY29uc3QgSW1hZ2VGcmFtZSYg
b3RoZXIpCiAgICAgaWYgKHRoaXMgPT0gJm90aGVyKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAot
ICAgIG1fYmFja2luZ1N0b3JlID0gb3RoZXIubV9iYWNraW5nU3RvcmU7Ci0gICAgbV9ieXRlcyA9
IG1fYmFja2luZ1N0b3JlLmRhdGEoKTsKLSAgICBtX3NpemUgPSBvdGhlci5tX3NpemU7Ci0gICAg
c2V0SGFzQWxwaGEob3RoZXIubV9oYXNBbHBoYSk7CisgICAgaWYgKG90aGVyLm1fcGl4ZWxzKQor
ICAgICAgICBtX3BpeGVscyA9IEJpdG1hcFBpeGVsczo6Y3JlYXRlKCpvdGhlci5tX3BpeGVscy5n
ZXQoKSk7CisgICAgZWxzZQorICAgICAgICBtX3BpeGVscyA9IG51bGxwdHI7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLWJvb2wgSW1hZ2VGcmFtZTo6c2V0U2l6ZShpbnQgbmV3V2lkdGgsIGludCBu
ZXdIZWlnaHQpCitib29sIEltYWdlRnJhbWU6OnNldFNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSwg
Ym9vbCBwcmVtdWx0aXBseUFscGhhKQogewotICAgIEFTU0VSVCghd2lkdGgoKSAmJiAhaGVpZ2h0
KCkpOwotICAgIHNpemVfdCBiYWNraW5nU3RvcmVTaXplID0gbmV3V2lkdGggKiBuZXdIZWlnaHQ7
Ci0gICAgaWYgKCFtX2JhY2tpbmdTdG9yZS50cnlSZXNlcnZlQ2FwYWNpdHkoYmFja2luZ1N0b3Jl
U2l6ZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBtX2JhY2tpbmdTdG9yZS5yZXNpemUo
YmFja2luZ1N0b3JlU2l6ZSk7Ci0gICAgbV9ieXRlcyA9IG1fYmFja2luZ1N0b3JlLmRhdGEoKTsK
LSAgICBtX3NpemUgPSBJbnRTaXplKG5ld1dpZHRoLCBuZXdIZWlnaHQpOworICAgIEFTU0VSVCgh
bV9waXhlbHMpOworICAgIG1fcGl4ZWxzID0gQml0bWFwUGl4ZWxzOjpjcmVhdGUoc2l6ZSwgcHJl
bXVsdGlwbHlBbHBoYSk7CisgICAgcmV0dXJuIG1fcGl4ZWxzICE9IG51bGxwdHI7Cit9CiAKLSAg
ICB6ZXJvRmlsbFBpeGVsRGF0YSgpOwotICAgIHJldHVybiB0cnVlOwordm9pZCBJbWFnZUZyYW1l
Ojpjb3B5Um93TlRpbWVzKGludCBzdGFydFgsIGludCBlbmRYLCBpbnQgc3RhcnRZLCBpbnQgZW5k
WSkKK3sKKyAgICBtX3BpeGVscy0+cmVwZWF0Rmlyc3RSb3coSW50UmVjdChzdGFydFgsIHN0YXJ0
WSwgZW5kWCAtc3RhcnRYICwgZW5kWSAtIHN0YXJ0WSkpOwogfQogCiBib29sIEltYWdlRnJhbWU6
Omhhc0FscGhhKCkgY29uc3QKQEAgLTIyMCwxMSArMjA3LDYgQEAgdm9pZCBJbWFnZUZyYW1lOjpz
ZXRIYXNBbHBoYShib29sIGFscGhhKQogICAgIG1faGFzQWxwaGEgPSBhbHBoYTsKIH0KIAotdm9p
ZCBJbWFnZUZyYW1lOjpzZXRDb2xvclByb2ZpbGUoY29uc3QgQ29sb3JQcm9maWxlJiBjb2xvclBy
b2ZpbGUpCi17Ci0gICAgbV9jb2xvclByb2ZpbGUgPSBjb2xvclByb2ZpbGU7Ci19Ci0KIHZvaWQg
SW1hZ2VGcmFtZTo6c2V0U3RhdHVzKEZyYW1lU3RhdHVzIHN0YXR1cykKIHsKICAgICBtX3N0YXR1
cyA9IHN0YXR1czsKQEAgLTI5MSw3ICsyNzMsNyBAQCB1bnNpZ25lZCBJbWFnZURlY29kZXI6OmZy
YW1lQnl0ZXNBdEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QKICAgICBpZiAobV9mcmFtZUJ1ZmZl
ckNhY2hlLnNpemUoKSA8PSBpbmRleCkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgLy8gRklYTUU6
IFVzZSB0aGUgZGltZW5zaW9uIG9mIHRoZSByZXF1ZXN0ZWQgZnJhbWUuCi0gICAgcmV0dXJuIG1f
c2l6ZS5hcmVhKCkgKiBzaXplb2YoSW1hZ2VGcmFtZTo6UGl4ZWxEYXRhKTsKKyAgICByZXR1cm4g
bV9zaXplLmFyZWEoKSAqIHNpemVvZihSR0JBMzIpOwogfQogCiBmbG9hdCBJbWFnZURlY29kZXI6
OmZyYW1lRHVyYXRpb25BdEluZGV4KHNpemVfdCBpbmRleCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmgKaW5kZXggMmY4ZWVl
MTc4MWQxNjJkODZjNDlmZTFkYWM3MmEyZTdlNDBhNWQ2ZC4uN2RlZjBkZTg2MWUyZTg3MzExN2M2
ZmIxZDQ2NzZiNmY2Y2RiN2U5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmgKQEAgLTI4LDYgKzI4LDcgQEAKIAogI3By
YWdtYSBvbmNlCiAKKyNpbmNsdWRlICJCaXRtYXBQaXhlbHMuaCIKICNpbmNsdWRlICJJbnRSZWN0
LmgiCiAjaW5jbHVkZSAiSW1hZ2VTb3VyY2UuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVNjcmVlbi5o
IgpAQCAtNTcsNyArNTgsNiBAQCB1c2luZyBDb2xvclByb2ZpbGUgPSBWZWN0b3I8Y2hhcj47CiAg
ICAgICAgICAgICBEaXNwb3NlT3ZlcndyaXRlUHJldmlvdXMgIC8vIENsZWFyIGZyYW1lIHRvIHBy
ZXZpb3VzIGZyYW1lYnVmZmVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIGNvbnRlbnRzCiAgICAgICAgIH07Ci0gICAgICAgIHR5cGVkZWYgdW5zaWduZWQgUGl4ZWxE
YXRhOwogCiAgICAgICAgIEltYWdlRnJhbWUoKTsKIApAQCAtODAsMTUxICs4MCw2MCBAQCB1c2lu
ZyBDb2xvclByb2ZpbGUgPSBWZWN0b3I8Y2hhcj47CiAgICAgICAgIC8vIENvcGllcyB0aGUgcGl4
ZWwgZGF0YSBhdCBbKHN0YXJ0WCwgc3RhcnRZKSwgKGVuZFgsIHN0YXJ0WSkpIHRvIHRoZQogICAg
ICAgICAvLyBzYW1lIFgtY29vcmRpbmF0ZXMgb24gZWFjaCBzdWJzZXF1ZW50IHJvdyB1cCB0byBi
dXQgbm90IGluY2x1ZGluZwogICAgICAgICAvLyBlbmRZLgotICAgICAgICB2b2lkIGNvcHlSb3dO
VGltZXMoaW50IHN0YXJ0WCwgaW50IGVuZFgsIGludCBzdGFydFksIGludCBlbmRZKQotICAgICAg
ICB7Ci0gICAgICAgICAgICBBU1NFUlQoc3RhcnRYIDwgd2lkdGgoKSk7Ci0gICAgICAgICAgICBB
U1NFUlQoZW5kWCA8PSB3aWR0aCgpKTsKLSAgICAgICAgICAgIEFTU0VSVChzdGFydFkgPCBoZWln
aHQoKSk7Ci0gICAgICAgICAgICBBU1NFUlQoZW5kWSA8PSBoZWlnaHQoKSk7Ci0gICAgICAgICAg
ICBjb25zdCBpbnQgcm93Qnl0ZXMgPSAoZW5kWCAtIHN0YXJ0WCkgKiBzaXplb2YoUGl4ZWxEYXRh
KTsKLSAgICAgICAgICAgIGNvbnN0IFBpeGVsRGF0YSogY29uc3Qgc3RhcnRBZGRyID0gZ2V0QWRk
cihzdGFydFgsIHN0YXJ0WSk7Ci0gICAgICAgICAgICBmb3IgKGludCBkZXN0WSA9IHN0YXJ0WSAr
IDE7IGRlc3RZIDwgZW5kWTsgKytkZXN0WSkKLSAgICAgICAgICAgICAgICBtZW1jcHkoZ2V0QWRk
cihzdGFydFgsIGRlc3RZKSwgc3RhcnRBZGRyLCByb3dCeXRlcyk7Ci0gICAgICAgIH0KKyAgICAg
ICAgdm9pZCBjb3B5Um93TlRpbWVzKGludCBzdGFydFgsIGludCBlbmRYLCBpbnQgc3RhcnRZLCBp
bnQgZW5kWSk7CiAKICAgICAgICAgLy8gQWxsb2NhdGVzIHNwYWNlIGZvciB0aGUgcGl4ZWwgZGF0
YS4gIE11c3QgYmUgY2FsbGVkIGJlZm9yZSBhbnkgcGl4ZWxzCiAgICAgICAgIC8vIGFyZSB3cml0
dGVuLiAgTXVzdCBvbmx5IGJlIGNhbGxlZCBvbmNlLiAgUmV0dXJucyB3aGV0aGVyIGFsbG9jYXRp
b24KICAgICAgICAgLy8gc3VjY2VlZGVkLgotICAgICAgICBib29sIHNldFNpemUoaW50IG5ld1dp
ZHRoLCBpbnQgbmV3SGVpZ2h0KTsKKyAgICAgICAgYm9vbCBzZXRTaXplKGNvbnN0IEludFNpemUm
LCBib29sIHByZW11bHRpcGx5QWxwaGEpOworICAgICAgICBJbnRTaXplIHNpemUoKSBjb25zdCB7
IHJldHVybiBtX3BpeGVscy0+c2l6ZSgpOyB9CiAKICAgICAgICAgLy8gUmV0dXJucyBhIGNhbGxl
ci1vd25lZCBwb2ludGVyIHRvIHRoZSB1bmRlcmx5aW5nIG5hdGl2ZSBpbWFnZSBkYXRhLgogICAg
ICAgICAvLyAoQWN0dWFsIHVzZTogVGhpcyBwb2ludGVyIHdpbGwgYmUgb3duZWQgYnkgQml0bWFw
SW1hZ2UgYW5kIGZyZWVkIGluCiAgICAgICAgIC8vIEZyYW1lRGF0YTo6Y2xlYXIoKSkuCi0gICAg
ICAgIE5hdGl2ZUltYWdlUHRyIGFzTmV3TmF0aXZlSW1hZ2UoKSBjb25zdDsKKyAgICAgICAgTmF0
aXZlSW1hZ2VQdHIgYXNOZXdOYXRpdmVJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGl4ZWxzLT5p
bWFnZSgpOyB9CisKKyAgICAgICAgaW5saW5lIEJpdG1hcFBpeGVscyogcGl4ZWxzKCkgY29uc3Qg
eyByZXR1cm4gbV9waXhlbHMgPyBtX3BpeGVscy5nZXQoKSA6IG51bGxwdHI7IH0KKyAgICAgICAg
aW5saW5lIGJvb2wgaGFzUGl4ZWxzKCkgY29uc3QgeyByZXR1cm4gcGl4ZWxzKCk7IH0KIAogICAg
ICAgICBib29sIGhhc0FscGhhKCkgY29uc3Q7Ci0gICAgICAgIGNvbnN0IEludFJlY3QmIG9yaWdp
bmFsRnJhbWVSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW5hbEZyYW1lUmVjdDsgfQogICAg
ICAgICBGcmFtZVN0YXR1cyBzdGF0dXMoKSBjb25zdCB7IHJldHVybiBtX3N0YXR1czsgfQogICAg
ICAgICB1bnNpZ25lZCBkdXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZHVyYXRpb247IH0KICAg
ICAgICAgRnJhbWVEaXNwb3NhbE1ldGhvZCBkaXNwb3NhbE1ldGhvZCgpIGNvbnN0IHsgcmV0dXJu
IG1fZGlzcG9zYWxNZXRob2Q7IH0KLSAgICAgICAgYm9vbCBwcmVtdWx0aXBseUFscGhhKCkgY29u
c3QgeyByZXR1cm4gbV9wcmVtdWx0aXBseUFscGhhOyB9CiAKICAgICAgICAgdm9pZCBzZXRIYXNB
bHBoYShib29sIGFscGhhKTsKLSAgICAgICAgdm9pZCBzZXRDb2xvclByb2ZpbGUoY29uc3QgQ29s
b3JQcm9maWxlJik7Ci0gICAgICAgIHZvaWQgc2V0T3JpZ2luYWxGcmFtZVJlY3QoY29uc3QgSW50
UmVjdCYgcikgeyBtX29yaWdpbmFsRnJhbWVSZWN0ID0gcjsgfQogICAgICAgICB2b2lkIHNldFN0
YXR1cyhGcmFtZVN0YXR1cyBzdGF0dXMpOwogICAgICAgICB2b2lkIHNldER1cmF0aW9uKHVuc2ln
bmVkIGR1cmF0aW9uKSB7IG1fZHVyYXRpb24gPSBkdXJhdGlvbjsgfQogICAgICAgICB2b2lkIHNl
dERpc3Bvc2FsTWV0aG9kKEZyYW1lRGlzcG9zYWxNZXRob2QgbWV0aG9kKSB7IG1fZGlzcG9zYWxN
ZXRob2QgPSBtZXRob2Q7IH0KLSAgICAgICAgdm9pZCBzZXRQcmVtdWx0aXBseUFscGhhKGJvb2wg
cHJlbXVsdGlwbHlBbHBoYSkgeyBtX3ByZW11bHRpcGx5QWxwaGEgPSBwcmVtdWx0aXBseUFscGhh
OyB9CiAKICAgICAgICAgaW5saW5lIHZvaWQgc2V0UkdCQShpbnQgeCwgaW50IHksIHVuc2lnbmVk
IHIsIHVuc2lnbmVkIGcsIHVuc2lnbmVkIGIsIHVuc2lnbmVkIGEpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIHNldFJHQkEoZ2V0QWRkcih4LCB5KSwgciwgZywgYiwgYSk7Ci0gICAgICAgIH0KLQot
ICAgICAgICBpbmxpbmUgUGl4ZWxEYXRhKiBnZXRBZGRyKGludCB4LCBpbnQgeSkKLSAgICAgICAg
ewotICAgICAgICAgICAgcmV0dXJuIG1fYnl0ZXMgKyAoeSAqIHdpZHRoKCkpICsgeDsKKyAgICAg
ICAgICAgIG1fcGl4ZWxzLT5zZXRSR0JBKHgsIHksIHIsIGcsIGIsIGEpOwogICAgICAgICB9CiAK
LSAgICAgICAgaW5saW5lIGJvb2wgaGFzUGl4ZWxEYXRhKCkgY29uc3QKKyAgICAgICAgaW5saW5l
IFJHQkEzMiogZ2V0QWRkcihpbnQgeCwgaW50IHkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJl
dHVybiBtX2J5dGVzOworICAgICAgICAgICAgcmV0dXJuIG1fcGl4ZWxzLT5hdCh4LCB5KTsKICAg
ICAgICAgfQogCi0gICAgICAgIC8vIFVzZSBmaXggcG9pbnQgbXVsdGlwbGllciBpbnN0ZWFkIG9m
IGludGVnZXIgZGl2aXNpb24gb3IgZmxvYXRpbmcgcG9pbnQgbWF0aC4KLSAgICAgICAgLy8gVGhp
cyBtdWx0aXBsZXIgcHJvZHVjZXMgZXhhY3RseSB0aGUgc2FtZSByZXN1bHQgZm9yIGFsbCB2YWx1
ZXMgaW4gcmFuZ2UgMCAtIDI1NS4KLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGZpeFBv
aW50U2hpZnQgPSAyNDsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGZpeFBvaW50TXVs
dCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPigxLjAgLyAyNTUuMCAqICgxIDw8IGZpeFBvaW50U2hp
ZnQpKSArIDE7Ci0gICAgICAgIC8vIE11bHRpcGxpZXMgdW5zaWduZWQgdmFsdWUgYnkgZml4cG9p
bnQgdmFsdWUgYW5kIGNvbnZlcnRzIGJhY2sgdG8gdW5zaWduZWQuCi0gICAgICAgIHN0YXRpYyB1
bnNpZ25lZCBmaXhQb2ludFVuc2lnbmVkTXVsdGlwbHkodW5zaWduZWQgZml4ZWQsIHVuc2lnbmVk
IHYpCisgICAgICAgIGlubGluZSB2b2lkIHNldFJHQkEoUkdCQTMyKiBkZXN0LCB1bnNpZ25lZCBy
LCB1bnNpZ25lZCBnLCB1bnNpZ25lZCBiLCB1bnNpZ25lZCBhKQogICAgICAgICB7Ci0gICAgICAg
ICAgICByZXR1cm4gIChmaXhlZCAqIHYpID4+IGZpeFBvaW50U2hpZnQ7Ci0gICAgICAgIH0KLQot
ICAgICAgICBpbmxpbmUgdm9pZCBzZXRSR0JBKFBpeGVsRGF0YSogZGVzdCwgdW5zaWduZWQgciwg
dW5zaWduZWQgZywgdW5zaWduZWQgYiwgdW5zaWduZWQgYSkKLSAgICAgICAgewotICAgICAgICAg
ICAgaWYgKG1fcHJlbXVsdGlwbHlBbHBoYSAmJiBhIDwgMjU1KSB7Ci0gICAgICAgICAgICAgICAg
aWYgKCFhKSB7Ci0gICAgICAgICAgICAgICAgICAgICpkZXN0ID0gMDsKLSAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGFscGhhTXVsdCA9IGEgKiBmaXhQb2ludE11bHQ7Ci0gICAgICAgICAgICAgICAgciA9IGZp
eFBvaW50VW5zaWduZWRNdWx0aXBseShyLCBhbHBoYU11bHQpOwotICAgICAgICAgICAgICAgIGcg
PSBmaXhQb2ludFVuc2lnbmVkTXVsdGlwbHkoZywgYWxwaGFNdWx0KTsKLSAgICAgICAgICAgICAg
ICBiID0gZml4UG9pbnRVbnNpZ25lZE11bHRpcGx5KGIsIGFscGhhTXVsdCk7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAqZGVzdCA9IChhIDw8IDI0IHwgciA8PCAxNiB8IGcgPDwgOCB8IGIp
OworICAgICAgICAgICAgbV9waXhlbHMtPnNldFJHQkEoZGVzdCwgciwgZywgYiwgYSk7CiAgICAg
ICAgIH0KIAogI2lmIEVOQUJMRShBUE5HKQotICAgICAgICBzdGF0aWMgaW5saW5lIHVuc2lnbmVk
IGRpdmlkZTI1NSh1bnNpZ25lZCBhKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gKGEg
KyAoYSA+PiA4KSArIDEpID4+IDg7Ci0gICAgICAgIH0KLQotICAgICAgICBpbmxpbmUgdm9pZCBv
dmVyUkdCQShQaXhlbERhdGEqIGRlc3QsIHVuc2lnbmVkIHIsIHVuc2lnbmVkIGcsIHVuc2lnbmVk
IGIsIHVuc2lnbmVkIGEpCisgICAgICAgIGlubGluZSB2b2lkIG92ZXJSR0JBKFJHQkEzMiogZGVz
dCwgdW5zaWduZWQgciwgdW5zaWduZWQgZywgdW5zaWduZWQgYiwgdW5zaWduZWQgYSkKICAgICAg
ICAgewotICAgICAgICAgICAgaWYgKCFhKQotICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAg
ICAgICAgICAgaWYgKGEgPCAyNTUpIHsKLSAgICAgICAgICAgICAgICB1bnNpZ25lZCBhRGVzdCA9
ICgoKmRlc3QpID4+IDI0KSAmIDI1NTsKLSAgICAgICAgICAgICAgICBpZiAoYURlc3QpIHsKLSAg
ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgckRlc3QgPSAoKCpkZXN0KSA+PiAxNikgJiAyNTU7
Ci0gICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGdEZXN0ID0gKCgqZGVzdCkgPj4gOCkgJiAy
NTU7Ci0gICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGJEZXN0ID0gKCpkZXN0KSAmIDI1NTsK
LSAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgYUF1eCA9IDI1NSAtIGE7Ci0gICAgICAgICAg
ICAgICAgICAgIGlmICghbV9wcmVtdWx0aXBseUFscGhhKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICByRGVzdCA9IGRpdmlkZTI1NShyRGVzdCAqIGFEZXN0KTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGdEZXN0ID0gZGl2aWRlMjU1KGdEZXN0ICogYURlc3QpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgYkRlc3QgPSBkaXZpZGUyNTUoYkRlc3QgKiBhRGVzdCk7Ci0gICAgICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgciA9IGRpdmlkZTI1NShyICogYSArIHJEZXN0
ICogYUF1eCk7Ci0gICAgICAgICAgICAgICAgICAgIGcgPSBkaXZpZGUyNTUoZyAqIGEgKyBnRGVz
dCAqIGFBdXgpOwotICAgICAgICAgICAgICAgICAgICBiID0gZGl2aWRlMjU1KGIgKiBhICsgYkRl
c3QgKiBhQXV4KTsKLSAgICAgICAgICAgICAgICAgICAgYSArPSBkaXZpZGUyNTUoYURlc3QgKiBh
QXV4KTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFtX3ByZW11bHRpcGx5QWxwaGEpIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHIgPSAociAqIDI1NSArIGEgLSAxKSAvIGE7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBnID0gKGcgKiAyNTUgKyBhIC0gMSkgLyBhOwotICAgICAgICAgICAg
ICAgICAgICAgICAgYiA9IChiICogMjU1ICsgYSAtIDEpIC8gYTsKLSAgICAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobV9wcmVtdWx0aXBseUFscGhhKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIHIgPSBkaXZpZGUyNTUociAqIGEpOwotICAgICAgICAgICAgICAg
ICAgICBnID0gZGl2aWRlMjU1KGcgKiBhKTsKLSAgICAgICAgICAgICAgICAgICAgYiA9IGRpdmlk
ZTI1NShiICogYSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgKmRlc3QgPSAoYSA8PCAyNCB8IHIgPDwgMTYgfCBnIDw8IDggfCBiKTsKKyAgICAgICAgICAg
IG1fcGl4ZWxzLT5vdmVyUkdCQShkZXN0LCByLCBnLCBiLCBhKTsKICAgICAgICAgfQogI2VuZGlm
CiAKICAgICBwcml2YXRlOgotICAgICAgICBpbnQgd2lkdGgoKSBjb25zdAotICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4gbV9zaXplLndpZHRoKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBp
bnQgaGVpZ2h0KCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG1fc2l6ZS5o
ZWlnaHQoKTsKLSAgICAgICAgfQotCi0gICAgICAgIFZlY3RvcjxQaXhlbERhdGE+IG1fYmFja2lu
Z1N0b3JlOwotICAgICAgICBQaXhlbERhdGEqIG1fYnl0ZXM7IC8vIFRoZSBtZW1vcnkgaXMgYmFj
a2VkIGJ5IG1fYmFja2luZ1N0b3JlLgotICAgICAgICBJbnRTaXplIG1fc2l6ZTsKLSAgICAgICAg
Ly8gRklYTUU6IERvIHdlIG5lZWQgbV9jb2xvclByb2ZpbGUgYW55bW9yZT8KLSAgICAgICAgQ29s
b3JQcm9maWxlIG1fY29sb3JQcm9maWxlOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Qml0bWFw
UGl4ZWxzPiBtX3BpeGVsczsKICAgICAgICAgYm9vbCBtX2hhc0FscGhhOwotICAgICAgICBJbnRS
ZWN0IG1fb3JpZ2luYWxGcmFtZVJlY3Q7IC8vIFRoaXMgd2lsbCBhbHdheXMganVzdCBiZSB0aGUg
ZW50aXJlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYnVmZmVyIGV4
Y2VwdCBmb3IgR0lGIGZyYW1lcyB3aG9zZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIG9yaWdpbmFsIHJlY3Qgd2FzIHNtYWxsZXIgdGhhbiB0aGUKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdmVyYWxsIGltYWdlIHNpemUuCiAgICAgICAg
IEZyYW1lU3RhdHVzIG1fc3RhdHVzOwogICAgICAgICB1bnNpZ25lZCBtX2R1cmF0aW9uOwogICAg
ICAgICBGcmFtZURpc3Bvc2FsTWV0aG9kIG1fZGlzcG9zYWxNZXRob2Q7Ci0gICAgICAgIGJvb2wg
bV9wcmVtdWx0aXBseUFscGhhOwogICAgIH07CiAKICAgICAvLyBJbWFnZURlY29kZXIgaXMgYSBi
YXNlIGZvciBhbGwgZm9ybWF0LXNwZWNpZmljIGRlY29kZXJzCkBAIC0yOTAsNyArMTk5LDcgQEAg
dXNpbmcgQ29sb3JQcm9maWxlID0gVmVjdG9yPGNoYXI+OwogCiAgICAgICAgIC8vIFJldHVybnMg
d2hldGhlciB0aGUgc2l6ZSBpcyBsZWdhbCAoaS5lLiBub3QgZ29pbmcgdG8gcmVzdWx0IGluCiAg
ICAgICAgIC8vIG92ZXJmbG93IGVsc2V3aGVyZSkuICBJZiBub3QsIG1hcmtzIGRlY29kaW5nIGFz
IGZhaWxlZC4KLSAgICAgICAgdmlydHVhbCBib29sIHNldFNpemUodW5zaWduZWQgd2lkdGgsIHVu
c2lnbmVkIGhlaWdodCkKKyAgICAgICAgdmlydHVhbCBib29sIHNldFNpemUoY29uc3QgSW50U2l6
ZSYgc2l6ZSkKICAgICAgICAgewogICAgICAgICAgICAgaWYgKGlzT3ZlclNpemUod2lkdGgsIGhl
aWdodCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHNldEZhaWxlZCgpOwpAQCAtMzgxLDggKzI5
MCw2IEBAIHVzaW5nIENvbG9yUHJvZmlsZSA9IFZlY3RvcjxjaGFyPjsKIAogICAgICAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBtX2RhdGE7IC8vIFRoZSBlbmNvZGVkIGRhdGEuCiAgICAgICAgIFZl
Y3RvcjxJbWFnZUZyYW1lLCAxPiBtX2ZyYW1lQnVmZmVyQ2FjaGU7Ci0gICAgICAgIC8vIEZJWE1F
OiBEbyB3ZSBuZWVkIG1fY29sb3JQcm9maWxlIGFueSBtb3JlLCBmb3IgYW55IHBvcnQ/Ci0gICAg
ICAgIENvbG9yUHJvZmlsZSBtX2NvbG9yUHJvZmlsZTsKICAgICAgICAgYm9vbCBtX3NjYWxlZCB7
IGZhbHNlIH07CiAgICAgICAgIFZlY3RvcjxpbnQ+IG1fc2NhbGVkQ29sdW1uczsKICAgICAgICAg
VmVjdG9yPGludD4gbV9zY2FsZWRSb3dzOwpAQCAtMzkzLDExICszMDAsMTAgQEAgdXNpbmcgQ29s
b3JQcm9maWxlID0gVmVjdG9yPGNoYXI+OwogICAgIHByaXZhdGU6CiAgICAgICAgIC8vIFNvbWUg
Y29kZSBwYXRocyBjb21wdXRlIHRoZSBzaXplIG9mIHRoZSBpbWFnZSBhcyAid2lkdGggKiBoZWln
aHQgKiA0IgogICAgICAgICAvLyBhbmQgcmV0dXJuIGl0IGFzIGEgKHNpZ25lZCkgaW50LiAgQXZv
aWQgb3ZlcmZsb3cuCi0gICAgICAgIHN0YXRpYyBib29sIGlzT3ZlclNpemUodW5zaWduZWQgd2lk
dGgsIHVuc2lnbmVkIGhlaWdodCkKKyAgICAgICAgc3RhdGljIGJvb2wgaXNPdmVyU2l6ZShjb25z
dCBJbnRTaXplJiBzaXplKQogICAgICAgICB7Ci0gICAgICAgICAgICB1bnNpZ25lZCBsb25nIGxv
bmcgdG90YWxfc2l6ZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4od2lkdGgpCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHN0YXRpY19jYXN0PHVu
c2lnbmVkIGxvbmcgbG9uZz4oaGVpZ2h0KTsKLSAgICAgICAgICAgIHJldHVybiB0b3RhbF9zaXpl
ID4gKCgxIDw8IDI5KSAtIDEpOworICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFs
U2l6ZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4oc2l6ZS53aWR0aCgpKSAqIHN0
YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4oc2l6ZS5oZWlnaHQoKSk7CisgICAgICAgICAg
ICByZXR1cm4gdG90YWxTaXplID4gKCgxIDw8IDI5KSAtIDEpOwogICAgICAgICB9CiAKICAgICAg
ICAgSW50U2l6ZSBtX3NpemU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwCmluZGV4IGNhZjM1
Yzk3ZjE3ZWRkMzRiYzlkZjg5YWIwOWU4NzAwYWVlNmM3ZGYuLmEyZjA0YjEwMTg3MDk1ZTY2MjE0
MWQ1ZmU2YTQxZDkyNWFhN2RjMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwCkBAIC03
Miw3ICs3Miw2IEBAIEltYWdlRnJhbWUqIEJNUEltYWdlRGVjb2Rlcjo6ZnJhbWVCdWZmZXJBdElu
ZGV4KHNpemVfdCBpbmRleCkKIAogICAgIGlmIChtX2ZyYW1lQnVmZmVyQ2FjaGUuaXNFbXB0eSgp
KSB7CiAgICAgICAgIG1fZnJhbWVCdWZmZXJDYWNoZS5yZXNpemUoMSk7Ci0gICAgICAgIG1fZnJh
bWVCdWZmZXJDYWNoZS5maXJzdCgpLnNldFByZW11bHRpcGx5QWxwaGEobV9wcmVtdWx0aXBseUFs
cGhhKTsKICAgICB9CiAKICAgICBJbWFnZUZyYW1lKiBidWZmZXIgPSAmbV9mcmFtZUJ1ZmZlckNh
Y2hlLmZpcnN0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9ibXAvQk1QSW1hZ2VSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVhZGVyLmNwcAppbmRleCA1YzAwNTUzNGVjZDky
MTM0YTEzYjMyOTU4OTI3NzkwZjA3YWQwZjgxLi40ZDBjMDY0MGYwNTMwM2E0Y2I5YTdjYTRlZmMy
YmMzZDMxM2U1ZWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9ibXAvQk1QSW1hZ2VSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5jcHAKQEAgLTc4LDcgKzc4LDcg
QEAgYm9vbCBCTVBJbWFnZVJlYWRlcjo6ZGVjb2RlQk1QKGJvb2wgb25seVNpemUpCiAgICAgLy8g
SW5pdGlhbGl6ZSB0aGUgZnJhbWVidWZmZXIgaWYgbmVlZGVkLgogICAgIEFTU0VSVChtX2J1ZmZl
cik7ICAvLyBQYXJlbnQgc2hvdWxkIHNldCB0aGlzIGJlZm9yZSBhc2tpbmcgdXMgdG8gZGVjb2Rl
IQogICAgIGlmIChtX2J1ZmZlci0+c3RhdHVzKCkgPT0gSW1hZ2VGcmFtZTo6RnJhbWVFbXB0eSkg
ewotICAgICAgICBpZiAoIW1fYnVmZmVyLT5zZXRTaXplKG1fcGFyZW50LT5zaXplKCkud2lkdGgo
KSwgbV9wYXJlbnQtPnNpemUoKS5oZWlnaHQoKSkpCisgICAgICAgIGlmICghbV9idWZmZXItPnNl
dFNpemUobV9wYXJlbnQtPnNpemUoKSwgbV9wcmVtdWx0aXBseUFscGhhKSkKICAgICAgICAgICAg
IHJldHVybiBtX3BhcmVudC0+c2V0RmFpbGVkKCk7IC8vIFVuYWJsZSB0byBhbGxvY2F0ZS4KICAg
ICAgICAgbV9idWZmZXItPnNldFN0YXR1cyhJbWFnZUZyYW1lOjpGcmFtZVBhcnRpYWwpOwogICAg
ICAgICAvLyBzZXRTaXplKCkgY2FsbHMgZXJhc2VBUkdCKCksIHdoaWNoIHJlc2V0cyB0aGUgYWxw
aGEgZmxhZywgc28gd2UgZm9yY2UKQEAgLTg2LDkgKzg2LDYgQEAgYm9vbCBCTVBJbWFnZVJlYWRl
cjo6ZGVjb2RlQk1QKGJvb2wgb25seVNpemUpCiAgICAgICAgIC8vIHRoZXNlIDBzIGNvdWxkIGFj
dHVhbGx5IHNob3cgdGhyb3VnaC4KICAgICAgICAgbV9idWZmZXItPnNldEhhc0FscGhhKGZhbHNl
KTsKIAotICAgICAgICAvLyBGb3IgQk1QcywgdGhlIGZyYW1lIGFsd2F5cyBmaWxscyB0aGUgZW50
aXJlIGltYWdlLgotICAgICAgICBtX2J1ZmZlci0+c2V0T3JpZ2luYWxGcmFtZVJlY3QoSW50UmVj
dChJbnRQb2ludCgpLCBtX3BhcmVudC0+c2l6ZSgpKSk7Ci0KICAgICAgICAgaWYgKCFtX2lzVG9w
RG93bikKICAgICAgICAgICAgIG1fY29vcmQuc2V0WShtX3BhcmVudC0+c2l6ZSgpLmhlaWdodCgp
IC0gMSk7CiAgICAgfQpAQCAtMTcxLDcgKzE2OCw3IEBAIGJvb2wgQk1QSW1hZ2VSZWFkZXI6OnBy
b2Nlc3NJbmZvSGVhZGVyKCkKICAgICAgICAgcmV0dXJuIG1fcGFyZW50LT5zZXRGYWlsZWQoKTsK
IAogICAgIC8vIFNldCBvdXIgc2l6ZS4KLSAgICBpZiAoIW1fcGFyZW50LT5zZXRTaXplKG1faW5m
b0hlYWRlci5iaVdpZHRoLCBtX2luZm9IZWFkZXIuYmlIZWlnaHQpKQorICAgIGlmICghbV9wYXJl
bnQtPnNldFNpemUoSW50U2l6ZShtX2luZm9IZWFkZXIuYmlXaWR0aCwgbV9pbmZvSGVhZGVyLmJp
SGVpZ2h0KSwgbV9wcmVtdWx0aXBseUFscGhhKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgLy8gRm9yIHBhbGV0dGVkIGltYWdlcywgYml0bWFwcyBjYW4gc2V0IGJpQ2xyVXNlZCB0byAw
IHRvIG1lYW4gImFsbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvY2Fpcm8vQml0bWFwUGl4ZWxzQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvY2Fpcm8vQml0bWFwUGl4ZWxzQ2Fpcm8uY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjVhYWY4YTBhMzZiMThjYmY3Mjc3ZDJjMmUyNmViNDE3MTI1NjAwZDUKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9CaXRt
YXBQaXhlbHNDYWlyby5jcHAKQEAgLTAsMCArMSw0MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkJpdG1hcFBpeGVscy5oIgorCisjaW5jbHVkZSA8Y2Fpcm8uaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitOYXRpdmVJbWFnZVB0ciBCaXRtYXBQaXhlbHM6OmltYWdlKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gYWRvcHRSZWYoY2Fpcm9faW1hZ2Vfc3VyZmFjZV9jcmVhdGVfZm9yX2RhdGEoCisg
ICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgY2hhcio+KGNvbnN0X2Nhc3Q8UkdCQTMy
Kj4obV9waXhlbHMpKSwKKyAgICAgICAgQ0FJUk9fRk9STUFUX0FSR0IzMiwgc2l6ZSgpLndpZHRo
KCksIHNpemUoKS5oZWlnaHQoKSwgc2l6ZSgpLndpZHRoKCkgKiBzaXplb2YoUkdCQTMyKSkpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZURlY29kZXJDYWlyby5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZURlY29kZXJDYWly
by5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdiNDEyOTVmODU3MzU4ZmJiZjM1
YzFiMDUyNWU4ZDZjYzM1MjBmNTguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvY2Fpcm8v
SW1hZ2VEZWNvZGVyQ2Fpcm8uY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotI2luY2x1ZGUgIkltYWdlRGVjb2Rlci5oIgotCi0jaW5jbHVkZSA8Y2Fpcm8uaD4K
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1OYXRpdmVJbWFnZVB0ciBJbWFnZUZyYW1lOjphc05l
d05hdGl2ZUltYWdlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoY2Fpcm9faW1hZ2Vf
c3VyZmFjZV9jcmVhdGVfZm9yX2RhdGEoCi0gICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWdu
ZWQgY2hhcio+KGNvbnN0X2Nhc3Q8UGl4ZWxEYXRhKj4obV9ieXRlcykpLAotICAgICAgICBDQUlS
T19GT1JNQVRfQVJHQjMyLCB3aWR0aCgpLCBoZWlnaHQoKSwgd2lkdGgoKSAqIHNpemVvZihQaXhl
bERhdGEpKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVj
b2Rlci5jcHAKaW5kZXggOWY5OTJhN2JlMWQ2NjcyMjY3NWMyZTg1NGFkMTg5MWU2MGY4NTc3Yy4u
MDE2Y2QxYzQyYWVjNWJmNDYyZGQ3ZDk1MGZhY2EyNDQyNDM3M2QxYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRklt
YWdlRGVjb2Rlci5jcHAKQEAgLTYwLDEyICs2MCwxMiBAQCBib29sIEdJRkltYWdlRGVjb2Rlcjo6
aXNTaXplQXZhaWxhYmxlKCkKICAgICByZXR1cm4gSW1hZ2VEZWNvZGVyOjppc1NpemVBdmFpbGFi
bGUoKTsKIH0KIAotYm9vbCBHSUZJbWFnZURlY29kZXI6OnNldFNpemUodW5zaWduZWQgd2lkdGgs
IHVuc2lnbmVkIGhlaWdodCkKK2Jvb2wgR0lGSW1hZ2VEZWNvZGVyOjpzZXRTaXplKGNvbnN0IElu
dFNpemUmIHNpemUpCiB7Ci0gICAgaWYgKEltYWdlRGVjb2Rlcjo6aXNTaXplQXZhaWxhYmxlKCkg
JiYgc2l6ZSgpID09IEludFNpemUod2lkdGgsIGhlaWdodCkpCisgICAgaWYgKEltYWdlRGVjb2Rl
cjo6aXNTaXplQXZhaWxhYmxlKCkgJiYgdGhpcy0+c2l6ZSgpID09IHNpemUpCiAgICAgICAgIHJl
dHVybiB0cnVlOwogCi0gICAgaWYgKCFJbWFnZURlY29kZXI6OnNldFNpemUod2lkdGgsIGhlaWdo
dCkpCisgICAgaWYgKCFJbWFnZURlY29kZXI6OnNldFNpemUoc2l6ZSkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgIHByZXBhcmVTY2FsZURhdGFJZk5lY2Vzc2FyeSgpOwpAQCAtMjEzLDEw
ICsyMTMsMTAgQEAgYm9vbCBHSUZJbWFnZURlY29kZXI6OmhhdmVEZWNvZGVkUm93KHVuc2lnbmVk
IGZyYW1lSW5kZXgsIGNvbnN0IFZlY3Rvcjx1bnNpZ25lZAogCiAgICAgLy8gSW5pdGlhbGl6ZSB0
aGUgZnJhbWUgaWYgbmVjZXNzYXJ5LgogICAgIEltYWdlRnJhbWUmIGJ1ZmZlciA9IG1fZnJhbWVC
dWZmZXJDYWNoZVtmcmFtZUluZGV4XTsKLSAgICBpZiAoKChidWZmZXIuc3RhdHVzKCkgPT0gSW1h
Z2VGcmFtZTo6RnJhbWVFbXB0eSkgJiYgIWluaXRGcmFtZUJ1ZmZlcihmcmFtZUluZGV4KSkgfHwg
IWJ1ZmZlci5oYXNQaXhlbERhdGEoKSkKKyAgICBpZiAoKChidWZmZXIuc3RhdHVzKCkgPT0gSW1h
Z2VGcmFtZTo6RnJhbWVFbXB0eSkgJiYgIWluaXRGcmFtZUJ1ZmZlcihmcmFtZUluZGV4KSkgfHwg
IWJ1ZmZlci5oYXNQaXhlbHMoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgSW1hZ2VG
cmFtZTo6UGl4ZWxEYXRhKiBjdXJyZW50QWRkcmVzcyA9IGJ1ZmZlci5nZXRBZGRyKHhCZWdpbiwg
eUJlZ2luKTsKKyAgICBSR0JBMzIqIGN1cnJlbnRBZGRyZXNzID0gYnVmZmVyLmdldEFkZHIoeEJl
Z2luLCB5QmVnaW4pOwogICAgIC8vIFdyaXRlIG9uZSByb3cncyB3b3J0aCBvZiBkYXRhIGludG8g
dGhlIGZyYW1lLiAgCiAgICAgZm9yIChpbnQgeCA9IHhCZWdpbjsgeCA8IHhFbmQ7ICsreCkgewog
ICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyIHNvdXJjZVZhbHVlID0gcm93QnVmZmVyWyhtX3Nj
YWxlZCA/IG1fc2NhbGVkQ29sdW1uc1t4XSA6IHgpIC0gZnJhbWVDb250ZXh0LT54T2Zmc2V0XTsK
QEAgLTI2MCw3ICsyNjAsNyBAQCBib29sIEdJRkltYWdlRGVjb2Rlcjo6ZnJhbWVDb21wbGV0ZSh1
bnNpZ25lZCBmcmFtZUluZGV4LCB1bnNpZ25lZCBmcmFtZUR1cmF0aW9uLAogICAgIGlmICghbV9j
dXJyZW50QnVmZmVyU2F3QWxwaGEpIHsKICAgICAgICAgLy8gVGhlIHdob2xlIGZyYW1lIHdhcyBu
b24tdHJhbnNwYXJlbnQsIHNvIGl0J3MgcG9zc2libGUgdGhhdCB0aGUgZW50aXJlCiAgICAgICAg
IC8vIHJlc3VsdGluZyBidWZmZXIgd2FzIG5vbi10cmFuc3BhcmVudCwgYW5kIHdlIGNhbiBzZXRI
YXNBbHBoYShmYWxzZSkuCi0gICAgICAgIGlmIChidWZmZXIub3JpZ2luYWxGcmFtZVJlY3QoKS5j
b250YWlucyhJbnRSZWN0KEludFBvaW50KCksIHNjYWxlZFNpemUoKSkpKQorICAgICAgICBpZiAo
YnVmZmVyLnBpeGVscygpLT5yZWN0KCkuY29udGFpbnMoSW50UmVjdChJbnRQb2ludCgpLCBzY2Fs
ZWRTaXplKCkpKSkKICAgICAgICAgICAgIGJ1ZmZlci5zZXRIYXNBbHBoYShmYWxzZSk7CiAgICAg
ICAgIGVsc2UgaWYgKGZyYW1lSW5kZXgpIHsKICAgICAgICAgICAgIC8vIFRyaWNreSBjYXNlLiAg
VGhpcyBmcmFtZSBkb2VzIG5vdCBoYXZlIGFscGhhIG9ubHkgaWYgZXZlcnl3aGVyZQpAQCAtMjgz
LDcgKzI4Myw3IEBAIGJvb2wgR0lGSW1hZ2VEZWNvZGVyOjpmcmFtZUNvbXBsZXRlKHVuc2lnbmVk
IGZyYW1lSW5kZXgsIHVuc2lnbmVkIGZyYW1lRHVyYXRpb24sCiAgICAgICAgICAgICAvLyBUaGUg
b25seSByZW1haW5pbmcgY2FzZSBpcyBhIERpc3Bvc2VPdmVyd3JpdGVCZ2NvbG9yIGZyYW1lLiAg
SWYKICAgICAgICAgICAgIC8vIGl0IGhhZCBubyBhbHBoYSwgYW5kIGl0cyByZWN0IGlzIGNvbnRh
aW5lZCBpbiB0aGUgY3VycmVudCBmcmFtZSdzCiAgICAgICAgICAgICAvLyByZWN0LCB3ZSBrbm93
IHRoZSBjdXJyZW50IGZyYW1lIGhhcyBubyBhbHBoYS4KLSAgICAgICAgICAgIGlmICgocHJldkJ1
ZmZlci0+ZGlzcG9zYWxNZXRob2QoKSA9PSBJbWFnZUZyYW1lOjpEaXNwb3NlT3ZlcndyaXRlQmdj
b2xvcikgJiYgIXByZXZCdWZmZXItPmhhc0FscGhhKCkgJiYgYnVmZmVyLm9yaWdpbmFsRnJhbWVS
ZWN0KCkuY29udGFpbnMocHJldkJ1ZmZlci0+b3JpZ2luYWxGcmFtZVJlY3QoKSkpCisgICAgICAg
ICAgICBpZiAoKHByZXZCdWZmZXItPmRpc3Bvc2FsTWV0aG9kKCkgPT0gSW1hZ2VGcmFtZTo6RGlz
cG9zZU92ZXJ3cml0ZUJnY29sb3IpICYmICFwcmV2QnVmZmVyLT5oYXNBbHBoYSgpICYmIGJ1ZmZl
ci5waXhlbHMoKS0+cmVjdCgpLmNvbnRhaW5zKHByZXZCdWZmZXItPnBpeGVscygpLT5yZWN0KCkp
KQogICAgICAgICAgICAgICAgIGJ1ZmZlci5zZXRIYXNBbHBoYShmYWxzZSk7CiAgICAgICAgIH0K
ICAgICB9CkBAIC0zMjMsOCArMzIzLDYgQEAgdm9pZCBHSUZJbWFnZURlY29kZXI6OmRlY29kZSh1
bnNpZ25lZCBoYWx0QXRGcmFtZSwgR0lGUXVlcnkgcXVlcnkpCiAKICAgICBjb25zdCBzaXplX3Qg
b2xkU2l6ZSA9IG1fZnJhbWVCdWZmZXJDYWNoZS5zaXplKCk7CiAgICAgbV9mcmFtZUJ1ZmZlckNh
Y2hlLnJlc2l6ZShtX3JlYWRlci0+aW1hZ2VzQ291bnQoKSk7Ci0gICAgZm9yIChzaXplX3QgaSA9
IG9sZFNpemU7IGkgPCBtX3JlYWRlci0+aW1hZ2VzQ291bnQoKTsgKytpKQotICAgICAgICBtX2Zy
YW1lQnVmZmVyQ2FjaGVbaV0uc2V0UHJlbXVsdGlwbHlBbHBoYShtX3ByZW11bHRpcGx5QWxwaGEp
OwogCiAgICAgaWYgKHF1ZXJ5ID09IEdJRkZyYW1lQ291bnRRdWVyeSkKICAgICAgICAgcmV0dXJu
OwpAQCAtMzUzLDE1ICszNTEsMTAgQEAgYm9vbCBHSUZJbWFnZURlY29kZXI6OmluaXRGcmFtZUJ1
ZmZlcih1bnNpZ25lZCBmcmFtZUluZGV4KQogICAgICAgICBmcmFtZVJlY3Quc2V0SGVpZ2h0KHNp
emUoKS5oZWlnaHQoKSAtIGZyYW1lQ29udGV4dC0+eU9mZnNldCk7CiAKICAgICBJbWFnZUZyYW1l
KiBjb25zdCBidWZmZXIgPSAmbV9mcmFtZUJ1ZmZlckNhY2hlW2ZyYW1lSW5kZXhdOwotICAgIGlu
dCBsZWZ0ID0gdXBwZXJCb3VuZFNjYWxlZFgoZnJhbWVSZWN0LngoKSk7Ci0gICAgaW50IHJpZ2h0
ID0gbG93ZXJCb3VuZFNjYWxlZFgoZnJhbWVSZWN0Lm1heFgoKSwgbGVmdCk7Ci0gICAgaW50IHRv
cCA9IHVwcGVyQm91bmRTY2FsZWRZKGZyYW1lUmVjdC55KCkpOwotICAgIGludCBib3R0b20gPSBs
b3dlckJvdW5kU2NhbGVkWShmcmFtZVJlY3QubWF4WSgpLCB0b3ApOwotICAgIGJ1ZmZlci0+c2V0
T3JpZ2luYWxGcmFtZVJlY3QoSW50UmVjdChsZWZ0LCB0b3AsIHJpZ2h0IC0gbGVmdCwgYm90dG9t
IC0gdG9wKSk7CiAKICAgICBpZiAoIWZyYW1lSW5kZXgpIHsKICAgICAgICAgLy8gVGhpcyBpcyB0
aGUgZmlyc3QgZnJhbWUsIHNvIHdlJ3JlIG5vdCByZWx5aW5nIG9uIGFueSBwcmV2aW91cyBkYXRh
LgotICAgICAgICBpZiAoIWJ1ZmZlci0+c2V0U2l6ZShzY2FsZWRTaXplKCkud2lkdGgoKSwgc2Nh
bGVkU2l6ZSgpLmhlaWdodCgpKSkKKyAgICAgICAgaWYgKCFidWZmZXItPnNldFNpemUoc2NhbGVk
U2l6ZSgpLCBtX3ByZW11bHRpcGx5QWxwaGEpKQogICAgICAgICAgICAgcmV0dXJuIHNldEZhaWxl
ZCgpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIFRoZSBzdGFydGluZyBzdGF0ZSBmb3IgdGhp
cyBmcmFtZSBkZXBlbmRzIG9uIHRoZSBwcmV2aW91cyBmcmFtZSdzCkBAIC0zODcsMTIgKzM4MCwx
MiBAQCBib29sIEdJRkltYWdlRGVjb2Rlcjo6aW5pdEZyYW1lQnVmZmVyKHVuc2lnbmVkIGZyYW1l
SW5kZXgpCiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvLyBXZSB3YW50IHRvIGNsZWFy
IHRoZSBwcmV2aW91cyBmcmFtZSB0byB0cmFuc3BhcmVudCwgd2l0aG91dAogICAgICAgICAgICAg
Ly8gYWZmZWN0aW5nIHBpeGVscyBpbiB0aGUgaW1hZ2Ugb3V0c2lkZSBvZiB0aGUgZnJhbWUuCi0g
ICAgICAgICAgICBjb25zdCBJbnRSZWN0JiBwcmV2UmVjdCA9IHByZXZCdWZmZXItPm9yaWdpbmFs
RnJhbWVSZWN0KCk7CisgICAgICAgICAgICBjb25zdCBJbnRSZWN0JiBwcmV2UmVjdCA9IHByZXZC
dWZmZXItPnBpeGVscygpLT5yZWN0KCk7CiAgICAgICAgICAgICBjb25zdCBJbnRTaXplJiBidWZm
ZXJTaXplID0gc2NhbGVkU2l6ZSgpOwogICAgICAgICAgICAgaWYgKCFmcmFtZUluZGV4IHx8IHBy
ZXZSZWN0LmNvbnRhaW5zKEludFJlY3QoSW50UG9pbnQoKSwgc2NhbGVkU2l6ZSgpKSkpIHsKICAg
ICAgICAgICAgICAgICAvLyBDbGVhcmluZyB0aGUgZmlyc3QgZnJhbWUsIG9yIGEgZnJhbWUgdGhl
IHNpemUgb2YgdGhlIHdob2xlCiAgICAgICAgICAgICAgICAgLy8gaW1hZ2UsIHJlc3VsdHMgaW4g
YSBjb21wbGV0ZWx5IGVtcHR5IGltYWdlLgotICAgICAgICAgICAgICAgIGlmICghYnVmZmVyLT5z
ZXRTaXplKGJ1ZmZlclNpemUud2lkdGgoKSwgYnVmZmVyU2l6ZS5oZWlnaHQoKSkpCisgICAgICAg
ICAgICAgICAgaWYgKCFidWZmZXItPnNldFNpemUoYnVmZmVyU2l6ZSwgbV9wcmVtdWx0aXBseUFs
cGhhKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNldEZhaWxlZCgpOwogICAgICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAvLyBDb3B5IHRoZSB3aG9sZSBwcmV2aW91cyBi
dWZmZXIsIHRoZW4gY2xlYXIganVzdCBpdHMgZnJhbWUuCkBAIC00MDIsNiArMzk1LDEyIEBAIGJv
b2wgR0lGSW1hZ2VEZWNvZGVyOjppbml0RnJhbWVCdWZmZXIodW5zaWduZWQgZnJhbWVJbmRleCkK
ICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KKyAgICAKKyAgICBpbnQgbGVmdCA9IHVw
cGVyQm91bmRTY2FsZWRYKGZyYW1lUmVjdC54KCkpOworICAgIGludCByaWdodCA9IGxvd2VyQm91
bmRTY2FsZWRYKGZyYW1lUmVjdC5tYXhYKCksIGxlZnQpOworICAgIGludCB0b3AgPSB1cHBlckJv
dW5kU2NhbGVkWShmcmFtZVJlY3QueSgpKTsKKyAgICBpbnQgYm90dG9tID0gbG93ZXJCb3VuZFNj
YWxlZFkoZnJhbWVSZWN0Lm1heFkoKSwgdG9wKTsKKyAgICBidWZmZXItPnBpeGVscygpLT5zZXRS
ZWN0KEludFJlY3QobGVmdCwgdG9wLCByaWdodCAtIGxlZnQsIGJvdHRvbSAtIHRvcCkpOwogCiAg
ICAgLy8gVXBkYXRlIG91ciBzdGF0dXMgdG8gYmUgcGFydGlhbGx5IGNvbXBsZXRlLgogICAgIGJ1
ZmZlci0+c2V0U3RhdHVzKEltYWdlRnJhbWU6OkZyYW1lUGFydGlhbCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VE
ZWNvZGVyLmgKaW5kZXggOTVlYzZkMGE3YjY5NjY1MmM3MDliN2I2MmQ0MWFhNGYzYWI4ZjFlMC4u
N2I4ZDg3Y2ZkNzIxYjMwOTA3MGM0OTk4OGYzNDVjOTAzNTRkYTVhMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFn
ZURlY29kZXIuaApAQCAtNDQsNyArNDQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IFN0cmluZyBmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJnaWYi
OyB9CiAgICAgICAgIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0
YVJlY2VpdmVkKSBvdmVycmlkZTsKICAgICAgICAgYm9vbCBpc1NpemVBdmFpbGFibGUoKSBvdmVy
cmlkZTsKLSAgICAgICAgYm9vbCBzZXRTaXplKHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWln
aHQpIG92ZXJyaWRlOworICAgICAgICBib29sIHNldFNpemUoY29uc3QgSW50U2l6ZSYpIG92ZXJy
aWRlOwogICAgICAgICBzaXplX3QgZnJhbWVDb3VudCgpIG92ZXJyaWRlOwogICAgICAgICBpbnQg
cmVwZXRpdGlvbkNvdW50KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgICAgIEltYWdlRnJhbWUqIGZy
YW1lQnVmZmVyQXRJbmRleChzaXplX3QgaW5kZXgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJl
YWRlci5jcHAKaW5kZXggMDBkMjUyY2VmYjA1YWE1MWY4NGQ4ZGY5OTAyMjkwZWZkNzEwNDIyZi4u
YTNhNTQxNTU5MDJhMzE2NDFkOTA3NDZhYWIxODdiNjM5MWQ0MjY3YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1h
Z2VSZWFkZXIuY3BwCkBAIC00NDcsNyArNDQ3LDcgQEAgYm9vbCBHSUZJbWFnZVJlYWRlcjo6cGFy
c2Uoc2l6ZV90IGRhdGFQb3NpdGlvbiwgc2l6ZV90IGxlbiwgYm9vbCBwYXJzZVNpemVPbmx5KQog
CiAgICAgICAgICAgICAvLyBDQUxMQkFDSzogSW5mb3JtIHRoZSBkZWNvZGVycGx1Z2luIG9mIG91
ciBzaXplLgogICAgICAgICAgICAgLy8gTm90ZTogQSBzdWJzZXF1ZW50IGZyYW1lIG1pZ2h0IGhh
dmUgZGltZW5zaW9ucyBsYXJnZXIgdGhhbiB0aGUgInNjcmVlbiIgZGltZW5zaW9ucy4KLSAgICAg
ICAgICAgIGlmIChtX2NsaWVudCAmJiAhbV9jbGllbnQtPnNldFNpemUobV9zY3JlZW5XaWR0aCwg
bV9zY3JlZW5IZWlnaHQpKQorICAgICAgICAgICAgaWYgKG1fY2xpZW50ICYmICFtX2NsaWVudC0+
c2V0U2l6ZShJbnRTaXplKG1fc2NyZWVuV2lkdGgsIG1fc2NyZWVuSGVpZ2h0KSkpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgICAgICBtX3NjcmVlbkJnY29sb3IgPSBj
dXJyZW50Q29tcG9uZW50WzVdOwpAQCAtNjY0LDcgKzY2NCw3IEBAIGJvb2wgR0lGSW1hZ2VSZWFk
ZXI6OnBhcnNlKHNpemVfdCBkYXRhUG9zaXRpb24sIHNpemVfdCBsZW4sIGJvb2wgcGFyc2VTaXpl
T25seSkKICAgICAgICAgICAgICAgICB5T2Zmc2V0ID0gMDsKIAogICAgICAgICAgICAgICAgIC8v
IENBTExCQUNLOiBJbmZvcm0gdGhlIGRlY29kZXJwbHVnaW4gb2Ygb3VyIHNpemUuCi0gICAgICAg
ICAgICAgICAgaWYgKG1fY2xpZW50ICYmICFtX2NsaWVudC0+c2V0U2l6ZShtX3NjcmVlbldpZHRo
LCBtX3NjcmVlbkhlaWdodCkpCisgICAgICAgICAgICAgICAgaWYgKG1fY2xpZW50ICYmICFtX2Ns
aWVudC0+c2V0U2l6ZShJbnRTaXplKG1fc2NyZWVuV2lkdGgsIG1fc2NyZWVuSGVpZ2h0KSkpCiAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdl
RGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28v
SUNPSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBhNTkyMDFiNTZlNWIyMmUyYTg1MWMwYzk5MmVhNGIx
Zjg4Y2MzYjRmLi42NmNmMTkxOTQzOGJjMDNjMTM5MWJlZWExNjQwNzU0MWMxYWY4NmU1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1h
Z2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcApAQCAtODgsMjEgKzg4LDIwIEBAIEludFNpemUgSUNP
SW1hZ2VEZWNvZGVyOjpmcmFtZVNpemVBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdM
ZXZlbCkKICAgICByZXR1cm4gKGluZGV4ICYmIChpbmRleCA8IG1fZGlyRW50cmllcy5zaXplKCkp
KSA/IG1fZGlyRW50cmllc1tpbmRleF0ubV9zaXplIDogc2l6ZSgpOwogfQogCi1ib29sIElDT0lt
YWdlRGVjb2Rlcjo6c2V0U2l6ZSh1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0KQorYm9v
bCBJQ09JbWFnZURlY29kZXI6OnNldFNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKICAgICAv
LyBUaGUgc2l6ZSBjYWxjdWxhdGVkIGluc2lkZSB0aGUgQk1QSW1hZ2VSZWFkZXIgaGFkIGJldHRl
ciBtYXRjaCB0aGUgb25lIGluCiAgICAgLy8gdGhlIGljb24gZGlyZWN0b3J5LgotICAgIHJldHVy
biBtX2ZyYW1lU2l6ZS5pc0VtcHR5KCkgPyBJbWFnZURlY29kZXI6OnNldFNpemUod2lkdGgsIGhl
aWdodCkgOiAoKEludFNpemUod2lkdGgsIGhlaWdodCkgPT0gbV9mcmFtZVNpemUpIHx8IHNldEZh
aWxlZCgpKTsKKyAgICByZXR1cm4gbV9mcmFtZVNpemUuaXNFbXB0eSgpID8gSW1hZ2VEZWNvZGVy
OjpzZXRTaXplKHNpemUpIDogKChzaXplID09IG1fZnJhbWVTaXplKSB8fCBzZXRGYWlsZWQoKSk7
CiB9CiAKIHNpemVfdCBJQ09JbWFnZURlY29kZXI6OmZyYW1lQ291bnQoKQogewogICAgIGRlY29k
ZSgwLCB0cnVlKTsKLSAgICBpZiAobV9mcmFtZUJ1ZmZlckNhY2hlLmlzRW1wdHkoKSkgeworCisg
ICAgaWYgKG1fZnJhbWVCdWZmZXJDYWNoZS5pc0VtcHR5KCkpCiAgICAgICAgIG1fZnJhbWVCdWZm
ZXJDYWNoZS5yZXNpemUobV9kaXJFbnRyaWVzLnNpemUoKSk7Ci0gICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbV9kaXJFbnRyaWVzLnNpemUoKTsgKytpKQotICAgICAgICAgICAgbV9mcmFt
ZUJ1ZmZlckNhY2hlW2ldLnNldFByZW11bHRpcGx5QWxwaGEobV9wcmVtdWx0aXBseUFscGhhKTsK
LSAgICB9CisKICAgICAvLyBDQVVUSU9OOiBXZSBtdXN0IG5vdCByZXNpemUgbV9mcmFtZUJ1ZmZl
ckNhY2hlIGFnYWluIGFmdGVyIHRoaXMsIGFzCiAgICAgLy8gZGVjb2RlQXRJbmRleCgpIG1heSBn
aXZlIGEgQk1QSW1hZ2VSZWFkZXIgYSBwb2ludGVyIHRvIG9uZSBvZiB0aGUKICAgICAvLyBlbnRy
aWVzLgpAQCAtMjc5LDcgKzI3OCw3IEBAIGJvb2wgSUNPSW1hZ2VEZWNvZGVyOjpwcm9jZXNzRGly
ZWN0b3J5RW50cmllcygpCiAgICAgY29uc3QgSWNvbkRpcmVjdG9yeUVudHJ5JiBkaXJFbnRyeSA9
IG1fZGlyRW50cmllcy5maXJzdCgpOwogICAgIC8vIFRlY2huaWNhbGx5LCB0aGlzIG5leHQgY2Fs
bCBzaG91bGRuJ3QgYmUgYWJsZSB0byBmYWlsLCBzaW5jZSB0aGUgd2lkdGgKICAgICAvLyBhbmQg
aGVpZ2h0IGhlcmUgYXJlIGVhY2ggPD0gMjU2LCBhbmQgfG1fZnJhbWVTaXplfCBpcyBlbXB0eS4K
LSAgICByZXR1cm4gc2V0U2l6ZShkaXJFbnRyeS5tX3NpemUud2lkdGgoKSwgZGlyRW50cnkubV9z
aXplLmhlaWdodCgpKTsKKyAgICByZXR1cm4gc2V0U2l6ZShkaXJFbnRyeS5tX3NpemUpOwogfQog
CiBJQ09JbWFnZURlY29kZXI6Okljb25EaXJlY3RvcnlFbnRyeSBJQ09JbWFnZURlY29kZXI6OnJl
YWREaXJlY3RvcnlFbnRyeSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmgKaW5kZXggNTgwYzY3YTg4
M2E0MGI2ZTU0MjBmNjVhZTM0NDg4NDU3NDE5MzhlYy4uZDMzZDA1OGExNTk2MDdkZjg5MzljZWEx
Y2Q3YTZmMzE0NGI3MjJlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuaApAQCAtNDksNyArNDks
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgaXNTaXplQXZhaWxhYmxlKCkg
b3ZlcnJpZGU7CiAgICAgICAgIEludFNpemUgc2l6ZSgpIG92ZXJyaWRlOwogICAgICAgICBJbnRT
aXplIGZyYW1lU2l6ZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsKSBvdmVycmlkZTsK
LSAgICAgICAgYm9vbCBzZXRTaXplKHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQpIG92
ZXJyaWRlOworICAgICAgICBib29sIHNldFNpemUoY29uc3QgSW50U2l6ZSYpIG92ZXJyaWRlOwog
ICAgICAgICBzaXplX3QgZnJhbWVDb3VudCgpIG92ZXJyaWRlOwogICAgICAgICBJbWFnZUZyYW1l
KiBmcmFtZUJ1ZmZlckF0SW5kZXgoc2l6ZV90KSBvdmVycmlkZTsKICAgICAgICAgLy8gQ0FVVElP
Tjogc2V0RmFpbGVkKCkgZGVsZXRlcyBhbGwgcmVhZGVycyBhbmQgZGVjb2RlcnMuICBCZSBjYXJl
ZnVsIHRvCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBlZTY2YWMxNGQ0YmUw
N2NhOWFmZmIyYTNhZmY4OWViZmE2MmZiMTJlLi43ZTNkZDg4ZjVmMmI0MWYzM2NiNzA0NzJkOGFh
NmEzYzk2YzAwNDQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKQEAgLTE5Niwz
NiArMTk2LDYgQEAgc3RhdGljIEltYWdlT3JpZW50YXRpb24gcmVhZEltYWdlT3JpZW50YXRpb24o
anBlZ19kZWNvbXByZXNzX3N0cnVjdCogaW5mbykKICAgICByZXR1cm4gSW1hZ2VPcmllbnRhdGlv
bigpOwogfQogCi1zdGF0aWMgQ29sb3JQcm9maWxlIHJlYWRDb2xvclByb2ZpbGUoanBlZ19kZWNv
bXByZXNzX3N0cnVjdCogaW5mbykKLXsKLSNpZiBVU0UoSUNDSlBFRykKLSAgICBKT0NURVQqIHBy
b2ZpbGU7Ci0gICAgdW5zaWduZWQgaW50IHByb2ZpbGVMZW5ndGg7Ci0KLSAgICBpZiAoIXJlYWRf
aWNjX3Byb2ZpbGUoaW5mbywgJnByb2ZpbGUsICZwcm9maWxlTGVuZ3RoKSkKLSAgICAgICAgcmV0
dXJuIENvbG9yUHJvZmlsZSgpOwotCi0gICAgLy8gT25seSBhY2NlcHQgUkdCIGNvbG9yIHByb2Zp
bGVzIGZyb20gaW5wdXQgY2xhc3MgZGV2aWNlcy4KLSAgICBib29sIGlnbm9yZVByb2ZpbGUgPSBm
YWxzZTsKLSAgICBjaGFyKiBwcm9maWxlRGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHBy
b2ZpbGUpOwotICAgIGlmIChwcm9maWxlTGVuZ3RoIDwgSW1hZ2VEZWNvZGVyOjppY2NDb2xvclBy
b2ZpbGVIZWFkZXJMZW5ndGgpCi0gICAgICAgIGlnbm9yZVByb2ZpbGUgPSB0cnVlOwotICAgIGVs
c2UgaWYgKCFJbWFnZURlY29kZXI6OnJnYkNvbG9yUHJvZmlsZShwcm9maWxlRGF0YSwgcHJvZmls
ZUxlbmd0aCkpCi0gICAgICAgIGlnbm9yZVByb2ZpbGUgPSB0cnVlOwotICAgIGVsc2UgaWYgKCFJ
bWFnZURlY29kZXI6OmlucHV0RGV2aWNlQ29sb3JQcm9maWxlKHByb2ZpbGVEYXRhLCBwcm9maWxl
TGVuZ3RoKSkKLSAgICAgICAgaWdub3JlUHJvZmlsZSA9IHRydWU7Ci0KLSAgICBDb2xvclByb2Zp
bGUgY29sb3JQcm9maWxlOwotICAgIGlmICghaWdub3JlUHJvZmlsZSkKLSAgICAgICAgY29sb3JQ
cm9maWxlLmFwcGVuZChwcm9maWxlRGF0YSwgcHJvZmlsZUxlbmd0aCk7Ci0gICAgZnJlZShwcm9m
aWxlKTsKLSAgICByZXR1cm4gY29sb3JQcm9maWxlOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0o
aW5mbyk7Ci0gICAgcmV0dXJuIENvbG9yUHJvZmlsZSgpOwotI2VuZGlmCi19Ci0KIGNsYXNzIEpQ
RUdJbWFnZVJlYWRlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CkBA
IC0zNTIsNyArMzIyLDcgQEAgcHVibGljOgogICAgICAgICAgICAgbV9zdGF0ZSA9IEpQRUdfU1RB
UlRfREVDT01QUkVTUzsKIAogICAgICAgICAgICAgLy8gV2UgY2FuIGZpbGwgaW4gdGhlIHNpemUg
bm93IHRoYXQgdGhlIGhlYWRlciBpcyBhdmFpbGFibGUuCi0gICAgICAgICAgICBpZiAoIW1fZGVj
b2Rlci0+c2V0U2l6ZShtX2luZm8uaW1hZ2Vfd2lkdGgsIG1faW5mby5pbWFnZV9oZWlnaHQpKQor
ICAgICAgICAgICAgaWYgKCFtX2RlY29kZXItPnNldFNpemUoSW50U2l6ZShtX2luZm8uaW1hZ2Vf
d2lkdGgsIG1faW5mby5pbWFnZV9oZWlnaHQpKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICAgICAgICAgICAgIG1fZGVjb2Rlci0+c2V0T3JpZW50YXRpb24ocmVhZEltYWdlT3Jp
ZW50YXRpb24oaW5mbygpKSk7CkBAIC0zNjMsMTMgKzMzMyw2IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgIGlmIChtX2RlY29kZXItPndpbGxEb3duU2FtcGxlKCkgJiYgdHVyYm9Td2l6emxlZChtX2lu
Zm8ub3V0X2NvbG9yX3NwYWNlKSkKICAgICAgICAgICAgICAgICBtX2luZm8ub3V0X2NvbG9yX3Nw
YWNlID0gSkNTX1JHQjsKICNlbmRpZgotICAgICAgICAgICAgLy8gQWxsb3cgY29sb3IgbWFuYWdl
bWVudCBvZiB0aGUgZGVjb2RlZCBSR0JBIHBpeGVscyBpZiBwb3NzaWJsZS4KLSAgICAgICAgICAg
IGlmICghbV9kZWNvZGVyLT5pZ25vcmVzR2FtbWFBbmRDb2xvclByb2ZpbGUoKSkgewotICAgICAg
ICAgICAgICAgIENvbG9yUHJvZmlsZSByZ2JJbnB1dERldmljZUNvbG9yUHJvZmlsZSA9IHJlYWRD
b2xvclByb2ZpbGUoaW5mbygpKTsKLSAgICAgICAgICAgICAgICBpZiAoIXJnYklucHV0RGV2aWNl
Q29sb3JQcm9maWxlLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICAgICAgbV9kZWNvZGVyLT5z
ZXRDb2xvclByb2ZpbGUocmdiSW5wdXREZXZpY2VDb2xvclByb2ZpbGUpOwotICAgICAgICAgICAg
fQotCiAgICAgICAgICAgICAvLyBEb24ndCBhbGxvY2F0ZSBhIGdpYW50IGFuZCBzdXBlcmZsdW91
cyBtZW1vcnkgYnVmZmVyIHdoZW4gdGhlCiAgICAgICAgICAgICAvLyBpbWFnZSBpcyBhIHNlcXVl
bnRpYWwgSlBFRy4KICAgICAgICAgICAgIG1faW5mby5idWZmZXJlZF9pbWFnZSA9IGpwZWdfaGFz
X211bHRpcGxlX3NjYW5zKCZtX2luZm8pOwpAQCAtNTU2LDkgKzUxOSw5IEBAIGJvb2wgSlBFR0lt
YWdlRGVjb2Rlcjo6aXNTaXplQXZhaWxhYmxlKCkKICAgICByZXR1cm4gSW1hZ2VEZWNvZGVyOjpp
c1NpemVBdmFpbGFibGUoKTsKIH0KIAotYm9vbCBKUEVHSW1hZ2VEZWNvZGVyOjpzZXRTaXplKHVu
c2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQpCitib29sIEpQRUdJbWFnZURlY29kZXI6OnNl
dFNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKLSAgICBpZiAoIUltYWdlRGVjb2Rlcjo6c2V0
U2l6ZSh3aWR0aCwgaGVpZ2h0KSkKKyAgICBpZiAoIUltYWdlRGVjb2Rlcjo6c2V0U2l6ZShzaXpl
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcHJlcGFyZVNjYWxlRGF0YUlmTmVjZXNz
YXJ5KCk7CkBAIC01NzAsMTAgKzUzMyw4IEBAIEltYWdlRnJhbWUqIEpQRUdJbWFnZURlY29kZXI6
OmZyYW1lQnVmZmVyQXRJbmRleChzaXplX3QgaW5kZXgpCiAgICAgaWYgKGluZGV4KQogICAgICAg
ICByZXR1cm4gMDsKIAotICAgIGlmIChtX2ZyYW1lQnVmZmVyQ2FjaGUuaXNFbXB0eSgpKSB7Cisg
ICAgaWYgKG1fZnJhbWVCdWZmZXJDYWNoZS5pc0VtcHR5KCkpCiAgICAgICAgIG1fZnJhbWVCdWZm
ZXJDYWNoZS5yZXNpemUoMSk7Ci0gICAgICAgIG1fZnJhbWVCdWZmZXJDYWNoZVswXS5zZXRQcmVt
dWx0aXBseUFscGhhKG1fcHJlbXVsdGlwbHlBbHBoYSk7Ci0gICAgfQogCiAgICAgSW1hZ2VGcmFt
ZSYgZnJhbWUgPSBtX2ZyYW1lQnVmZmVyQ2FjaGVbMF07CiAgICAgaWYgKGZyYW1lLnN0YXR1cygp
ICE9IEltYWdlRnJhbWU6OkZyYW1lQ29tcGxldGUpCkBAIC01ODgsNyArNTQ5LDcgQEAgYm9vbCBK
UEVHSW1hZ2VEZWNvZGVyOjpzZXRGYWlsZWQoKQogfQogCiB0ZW1wbGF0ZSA8Sl9DT0xPUl9TUEFD
RSBjb2xvclNwYWNlPgotdm9pZCBzZXRQaXhlbChJbWFnZUZyYW1lJiBidWZmZXIsIEltYWdlRnJh
bWU6OlBpeGVsRGF0YSogY3VycmVudEFkZHJlc3MsIEpTQU1QQVJSQVkgc2FtcGxlcywgaW50IGNv
bHVtbikKK3ZvaWQgc2V0UGl4ZWwoSW1hZ2VGcmFtZSYgYnVmZmVyLCBSR0JBMzIqIGN1cnJlbnRB
ZGRyZXNzLCBKU0FNUEFSUkFZIHNhbXBsZXMsIGludCBjb2x1bW4pCiB7CiAgICAgSlNBTVBMRSog
anNhbXBsZSA9ICpzYW1wbGVzICsgY29sdW1uICogKGNvbG9yU3BhY2UgPT0gSkNTX1JHQiA/IDMg
OiA0KTsKIApAQCAtNjMxLDcgKzU5Miw3IEBAIGJvb2wgSlBFR0ltYWdlRGVjb2Rlcjo6b3V0cHV0
U2NhbmxpbmVzKEltYWdlRnJhbWUmIGJ1ZmZlcikKICAgICAgICAgaWYgKGRlc3RZIDwgMCkKICAg
ICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIEltYWdlRnJhbWU6OlBpeGVsRGF0YSogY3Vy
cmVudEFkZHJlc3MgPSBidWZmZXIuZ2V0QWRkcigwLCBkZXN0WSk7CisgICAgICAgIFJHQkEzMiog
Y3VycmVudEFkZHJlc3MgPSBidWZmZXIuZ2V0QWRkcigwLCBkZXN0WSk7CiAgICAgICAgIGZvciAo
aW50IHggPSAwOyB4IDwgd2lkdGg7ICsreCkgewogICAgICAgICAgICAgc2V0UGl4ZWw8Y29sb3JT
cGFjZT4oYnVmZmVyLCBjdXJyZW50QWRkcmVzcywgc2FtcGxlcywgaXNTY2FsZWQgPyBtX3NjYWxl
ZENvbHVtbnNbeF0gOiB4KTsKICAgICAgICAgICAgICsrY3VycmVudEFkZHJlc3M7CkBAIC02NTQs
MTYgKzYxNSwxMiBAQCBib29sIEpQRUdJbWFnZURlY29kZXI6Om91dHB1dFNjYW5saW5lcygpCiAg
ICAgLy8gSW5pdGlhbGl6ZSB0aGUgZnJhbWVidWZmZXIgaWYgbmVlZGVkLgogICAgIEltYWdlRnJh
bWUmIGJ1ZmZlciA9IG1fZnJhbWVCdWZmZXJDYWNoZVswXTsKICAgICBpZiAoYnVmZmVyLnN0YXR1
cygpID09IEltYWdlRnJhbWU6OkZyYW1lRW1wdHkpIHsKLSAgICAgICAgaWYgKCFidWZmZXIuc2V0
U2l6ZShzY2FsZWRTaXplKCkud2lkdGgoKSwgc2NhbGVkU2l6ZSgpLmhlaWdodCgpKSkKKyAgICAg
ICAgaWYgKCFidWZmZXIuc2V0U2l6ZShzY2FsZWRTaXplKCksIG1fcHJlbXVsdGlwbHlBbHBoYSkp
CiAgICAgICAgICAgICByZXR1cm4gc2V0RmFpbGVkKCk7CiAgICAgICAgIGJ1ZmZlci5zZXRTdGF0
dXMoSW1hZ2VGcmFtZTo6RnJhbWVQYXJ0aWFsKTsKICAgICAgICAgLy8gVGhlIGJ1ZmZlciBpcyB0
cmFuc3BhcmVudCBvdXRzaWRlIHRoZSBkZWNvZGVkIGFyZWEgd2hpbGUgdGhlIGltYWdlIGlzCiAg
ICAgICAgIC8vIGxvYWRpbmcuIFRoZSBjb21wbGV0ZWQgaW1hZ2Ugd2lsbCBiZSBtYXJrZWQgZnVs
bHkgb3BhcXVlIGluIGpwZWdDb21wbGV0ZSgpLgogICAgICAgICBidWZmZXIuc2V0SGFzQWxwaGEo
dHJ1ZSk7Ci0gICAgICAgIGJ1ZmZlci5zZXRDb2xvclByb2ZpbGUobV9jb2xvclByb2ZpbGUpOwot
Ci0gICAgICAgIC8vIEZvciBKUEVHcywgdGhlIGZyYW1lIGFsd2F5cyBmaWxscyB0aGUgZW50aXJl
IGltYWdlLgotICAgICAgICBidWZmZXIuc2V0T3JpZ2luYWxGcmFtZVJlY3QoSW50UmVjdChJbnRQ
b2ludCgpLCBzaXplKCkpKTsKICAgICB9CiAKICAgICBqcGVnX2RlY29tcHJlc3Nfc3RydWN0KiBp
bmZvID0gbV9yZWFkZXItPmluZm8oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmgKaW5kZXgg
NmMxZmMwNDI3MzIyMDM3NWJjNmEyNWVjMTk4ZjhjOGE1MTAxNDg2Yy4uZmMyM2ZiZDk2MzdiNTNh
ZWU2NjUzM2I2YWFiNGY3YjI2OGRjMGVjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmgK
QEAgLTUwLDcgKzUwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAvLyBJbWFnZURl
Y29kZXIKICAgICAgICAgU3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gImpwZyI7IH0KICAgICAgICAgYm9vbCBpc1NpemVBdmFpbGFibGUoKSBvdmVycmlk
ZTsKLSAgICAgICAgYm9vbCBzZXRTaXplKHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQp
IG92ZXJyaWRlOworICAgICAgICBib29sIHNldFNpemUoY29uc3QgSW50U2l6ZSYpIG92ZXJyaWRl
OwogICAgICAgICBJbWFnZUZyYW1lKiBmcmFtZUJ1ZmZlckF0SW5kZXgoc2l6ZV90IGluZGV4KSBv
dmVycmlkZTsKICAgICAgICAgLy8gQ0FVVElPTjogc2V0RmFpbGVkKCkgZGVsZXRlcyB8bV9yZWFk
ZXJ8LiAgQmUgY2FyZWZ1bCB0byBhdm9pZAogICAgICAgICAvLyBhY2Nlc3NpbmcgZGVsZXRlZCBt
ZW1vcnksIGVzcGVjaWFsbHkgd2hlbiBjYWxsaW5nIHRoaXMgZnJvbSBpbnNpZGUKQEAgLTY2LDcg
KzY2LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIG91dHB1dFNjYW5saW5l
cygpOwogICAgICAgICB2b2lkIGpwZWdDb21wbGV0ZSgpOwogCi0gICAgICAgIHZvaWQgc2V0Q29s
b3JQcm9maWxlKGNvbnN0IENvbG9yUHJvZmlsZSYgY29sb3JQcm9maWxlKSB7IG1fY29sb3JQcm9m
aWxlID0gY29sb3JQcm9maWxlOyB9CiAgICAgICAgIHZvaWQgc2V0T3JpZW50YXRpb24oSW1hZ2VP
cmllbnRhdGlvbiBvcmllbnRhdGlvbikgeyBtX29yaWVudGF0aW9uID0gb3JpZW50YXRpb247IH0K
IAogICAgIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwCmluZGV4IGU2NDRhNzEx
MGVmY2I1NDBkODljZTFiYTgxMTAwYmM0ODIzYjE4ZjIuLjAzMGU4MGUxNTE0MmI3ODNhNjYzYzRm
ZjgzMmU0YzI1ZmM1ZjAwZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwCkBAIC0yMzUs
OSArMjM1LDkgQEAgYm9vbCBQTkdJbWFnZURlY29kZXI6OmlzU2l6ZUF2YWlsYWJsZSgpCiAgICAg
cmV0dXJuIEltYWdlRGVjb2Rlcjo6aXNTaXplQXZhaWxhYmxlKCk7CiB9CiAKLWJvb2wgUE5HSW1h
Z2VEZWNvZGVyOjpzZXRTaXplKHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQpCitib29s
IFBOR0ltYWdlRGVjb2Rlcjo6c2V0U2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQogewotICAgIGlm
ICghSW1hZ2VEZWNvZGVyOjpzZXRTaXplKHdpZHRoLCBoZWlnaHQpKQorICAgIGlmICghSW1hZ2VE
ZWNvZGVyOjpzZXRTaXplKHNpemUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBwcmVw
YXJlU2NhbGVEYXRhSWZOZWNlc3NhcnkoKTsKQEAgLTI1NywxMCArMjU3LDggQEAgSW1hZ2VGcmFt
ZSogUE5HSW1hZ2VEZWNvZGVyOjpmcmFtZUJ1ZmZlckF0SW5kZXgoc2l6ZV90IGluZGV4KQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICNlbmRpZgogCi0gICAgaWYgKG1fZnJhbWVCdWZmZXJDYWNo
ZS5pc0VtcHR5KCkpIHsKKyAgICBpZiAobV9mcmFtZUJ1ZmZlckNhY2hlLmlzRW1wdHkoKSkKICAg
ICAgICAgbV9mcmFtZUJ1ZmZlckNhY2hlLnJlc2l6ZSgxKTsKLSAgICAgICAgbV9mcmFtZUJ1ZmZl
ckNhY2hlWzBdLnNldFByZW11bHRpcGx5QWxwaGEobV9wcmVtdWx0aXBseUFscGhhKTsKLSAgICB9
CiAKICAgICBJbWFnZUZyYW1lJiBmcmFtZSA9IG1fZnJhbWVCdWZmZXJDYWNoZVtpbmRleF07CiAg
ICAgaWYgKGZyYW1lLnN0YXR1cygpICE9IEltYWdlRnJhbWU6OkZyYW1lQ29tcGxldGUpCkBAIC0y
NzYsMzcgKzI3NCw2IEBAIGJvb2wgUE5HSW1hZ2VEZWNvZGVyOjpzZXRGYWlsZWQoKQogICAgIHJl
dHVybiBJbWFnZURlY29kZXI6OnNldEZhaWxlZCgpOwogfQogCi1zdGF0aWMgdm9pZCByZWFkQ29s
b3JQcm9maWxlKHBuZ19zdHJ1Y3RwIHBuZywgcG5nX2luZm9wIGluZm8sIENvbG9yUHJvZmlsZSYg
Y29sb3JQcm9maWxlKQotewotICAgIEFTU0VSVChjb2xvclByb2ZpbGUuaXNFbXB0eSgpKTsKLQot
I2lmZGVmIFBOR19pQ0NQX1NVUFBPUlRFRAotICAgIGNoYXIqIHByb2ZpbGVOYW1lOwotICAgIGlu
dCBjb21wcmVzc2lvblR5cGU7Ci0jaWYgKFBOR19MSUJQTkdfVkVSIDwgMTA1MDApCi0gICAgcG5n
X2NoYXJwIHByb2ZpbGU7Ci0jZWxzZQotICAgIHBuZ19ieXRlcCBwcm9maWxlOwotI2VuZGlmCi0g
ICAgcG5nX3VpbnRfMzIgcHJvZmlsZUxlbmd0aDsKLSAgICBpZiAoIXBuZ19nZXRfaUNDUChwbmcs
IGluZm8sICZwcm9maWxlTmFtZSwgJmNvbXByZXNzaW9uVHlwZSwgJnByb2ZpbGUsICZwcm9maWxl
TGVuZ3RoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gT25seSBhY2NlcHQgUkdCIGNvbG9y
IHByb2ZpbGVzIGZyb20gaW5wdXQgY2xhc3MgZGV2aWNlcy4KLSAgICBib29sIGlnbm9yZVByb2Zp
bGUgPSBmYWxzZTsKLSAgICBjaGFyKiBwcm9maWxlRGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hh
cio+KHByb2ZpbGUpOwotICAgIGlmIChwcm9maWxlTGVuZ3RoIDwgSW1hZ2VEZWNvZGVyOjppY2ND
b2xvclByb2ZpbGVIZWFkZXJMZW5ndGgpCi0gICAgICAgIGlnbm9yZVByb2ZpbGUgPSB0cnVlOwot
ICAgIGVsc2UgaWYgKCFJbWFnZURlY29kZXI6OnJnYkNvbG9yUHJvZmlsZShwcm9maWxlRGF0YSwg
cHJvZmlsZUxlbmd0aCkpCi0gICAgICAgIGlnbm9yZVByb2ZpbGUgPSB0cnVlOwotICAgIGVsc2Ug
aWYgKCFJbWFnZURlY29kZXI6OmlucHV0RGV2aWNlQ29sb3JQcm9maWxlKHByb2ZpbGVEYXRhLCBw
cm9maWxlTGVuZ3RoKSkKLSAgICAgICAgaWdub3JlUHJvZmlsZSA9IHRydWU7Ci0KLSAgICBpZiAo
IWlnbm9yZVByb2ZpbGUpCi0gICAgICAgIGNvbG9yUHJvZmlsZS5hcHBlbmQocHJvZmlsZURhdGEs
IHByb2ZpbGVMZW5ndGgpOwotI2VuZGlmCi19Ci0KIHZvaWQgUE5HSW1hZ2VEZWNvZGVyOjpoZWFk
ZXJBdmFpbGFibGUoKQogewogICAgIHBuZ19zdHJ1Y3RwIHBuZyA9IG1fcmVhZGVyLT5wbmdQdHIo
KTsKQEAgLTMyNiw3ICsyOTMsNyBAQCB2b2lkIFBOR0ltYWdlRGVjb2Rlcjo6aGVhZGVyQXZhaWxh
YmxlKCkKICAgICAvLyB3aWxsIGNlYXNlIHRvIGV4aXN0LiAgTm90ZSB0aGF0IHdlJ2xsIHN0aWxs
IHByb3Blcmx5IHNldCB0aGUgZmFpbHVyZSBmbGFnCiAgICAgLy8gaW4gdGhpcyBjYXNlIGFzIHNv
b24gYXMgd2UgbG9uZ2ptcCgpLgogICAgIG1fZG9Ob3RoaW5nT25GYWlsdXJlID0gdHJ1ZTsKLSAg
ICBib29sIHJlc3VsdCA9IHNldFNpemUod2lkdGgsIGhlaWdodCk7CisgICAgYm9vbCByZXN1bHQg
PSBzZXRTaXplKEludFNpemUod2lkdGgsIGhlaWdodCkpOwogICAgIG1fZG9Ob3RoaW5nT25GYWls
dXJlID0gZmFsc2U7CiAgICAgaWYgKCFyZXN1bHQpIHsKICAgICAgICAgbG9uZ2ptcChKTVBCVUYo
cG5nKSwgMSk7CkBAIC00MDUsMTYgKzM3Miw2IEBAIHZvaWQgUE5HSW1hZ2VEZWNvZGVyOjpoZWFk
ZXJBdmFpbGFibGUoKQogICAgIGlmIChjb2xvclR5cGUgPT0gUE5HX0NPTE9SX1RZUEVfR1JBWSB8
fCBjb2xvclR5cGUgPT0gUE5HX0NPTE9SX1RZUEVfR1JBWV9BTFBIQSkKICAgICAgICAgcG5nX3Nl
dF9ncmF5X3RvX3JnYihwbmcpOwogCi0gICAgaWYgKChjb2xvclR5cGUgJiBQTkdfQ09MT1JfTUFT
S19DT0xPUikgJiYgIW1faWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGUpIHsKLSAgICAgICAgLy8g
V2Ugb25seSBzdXBwb3J0IGNvbG9yIHByb2ZpbGVzIGZvciBjb2xvciBQQUxFVFRFIGFuZCBSR0Jb
QV0gUE5HLiBTdXBwb3J0aW5nCi0gICAgICAgIC8vIGNvbG9yIHByb2ZpbGVzIGZvciBncmF5LXNj
YWxlIGltYWdlcyBpcyBzbGlnaHRseSB0cmlja3ksIGF0IGxlYXN0IHVzaW5nIHRoZQotICAgICAg
ICAvLyBDb3JlR3JhcGhpY3MgSUNDIGxpYnJhcnksIGJlY2F1c2Ugd2UgZXhwYW5kIGdyYXktc2Nh
bGUgaW1hZ2VzIHRvIFJHQiBidXQgd2UKLSAgICAgICAgLy8gZG8gbm90IHNpbWlsYXJseSB0cmFu
c2Zvcm0gdGhlIGNvbG9yIHByb2ZpbGUuIFdlJ2QgZWl0aGVyIG5lZWQgdG8gdHJhbnNmb3JtCi0g
ICAgICAgIC8vIHRoZSBjb2xvciBwcm9maWxlIG9yIHdlJ2QgbmVlZCB0byBkZWNvZGUgaW50byBh
IGdyYXktc2NhbGUgaW1hZ2UgYnVmZmVyIGFuZAotICAgICAgICAvLyBoYW5kIHRoYXQgdG8gQ29y
ZUdyYXBoaWNzLgotICAgICAgICByZWFkQ29sb3JQcm9maWxlKHBuZywgaW5mbywgbV9jb2xvclBy
b2ZpbGUpOwotICAgIH0KLQogICAgIC8vIERlYWwgd2l0aCBnYW1tYSBhbmQga2VlcCBpdCB1bmRl
ciBvdXIgY29udHJvbC4KICAgICBkb3VibGUgZ2FtbWE7CiAgICAgaWYgKCFtX2lnbm9yZUdhbW1h
QW5kQ29sb3JQcm9maWxlICYmIHBuZ19nZXRfZ0FNQShwbmcsIGluZm8sICZnYW1tYSkpIHsKQEAg
LTQ1MiwxOSArNDA5LDE5IEBAIHZvaWQgUE5HSW1hZ2VEZWNvZGVyOjpoZWFkZXJBdmFpbGFibGUo
KQogICAgIH0KIH0KIAotc3RhdGljIGlubGluZSB2b2lkIHNldFBpeGVsUkdCKEltYWdlRnJhbWU6
OlBpeGVsRGF0YSogZGVzdCwgcG5nX2J5dGVwIHBpeGVsKQorc3RhdGljIGlubGluZSB2b2lkIHNl
dFBpeGVsUkdCKFJHQkEzMiogZGVzdCwgcG5nX2J5dGVwIHBpeGVsKQogewogICAgICpkZXN0ID0g
MHhGRjAwMDAwMFUgfCBwaXhlbFswXSA8PCAxNiB8IHBpeGVsWzFdIDw8IDggfCBwaXhlbFsyXTsK
IH0KIAotc3RhdGljIGlubGluZSB2b2lkIHNldFBpeGVsUkdCQShJbWFnZUZyYW1lOjpQaXhlbERh
dGEqIGRlc3QsIHBuZ19ieXRlcCBwaXhlbCwgdW5zaWduZWQgY2hhciYgbm9uVHJpdmlhbEFscGhh
TWFzaykKK3N0YXRpYyBpbmxpbmUgdm9pZCBzZXRQaXhlbFJHQkEoUkdCQTMyKiBkZXN0LCBwbmdf
Ynl0ZXAgcGl4ZWwsIHVuc2lnbmVkIGNoYXImIG5vblRyaXZpYWxBbHBoYU1hc2spCiB7CiAgICAg
dW5zaWduZWQgY2hhciBhID0gcGl4ZWxbM107CiAgICAgKmRlc3QgPSBhIDw8IDI0IHwgcGl4ZWxb
MF0gPDwgMTYgfCBwaXhlbFsxXSA8PCA4IHwgcGl4ZWxbMl07CiAgICAgbm9uVHJpdmlhbEFscGhh
TWFzayB8PSAoMjU1IC0gYSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBzZXRQaXhlbFByZW11
bHRpcGxpZWRSR0JBKEltYWdlRnJhbWU6OlBpeGVsRGF0YSogZGVzdCwgcG5nX2J5dGVwIHBpeGVs
LCB1bnNpZ25lZCBjaGFyJiBub25Ucml2aWFsQWxwaGFNYXNrKQorc3RhdGljIGlubGluZSB2b2lk
IHNldFBpeGVsUHJlbXVsdGlwbGllZFJHQkEoUkdCQTMyKiBkZXN0LCBwbmdfYnl0ZXAgcGl4ZWws
IHVuc2lnbmVkIGNoYXImIG5vblRyaXZpYWxBbHBoYU1hc2spCiB7CiAgICAgdW5zaWduZWQgY2hh
ciBhID0gcGl4ZWxbM107CiAgICAgdW5zaWduZWQgY2hhciByID0gZmFzdERpdmlkZUJ5MjU1KHBp
eGVsWzBdICogYSk7CkBAIC00ODgsNyArNDQ1LDcgQEAgdm9pZCBQTkdJbWFnZURlY29kZXI6OnJv
d0F2YWlsYWJsZSh1bnNpZ25lZCBjaGFyKiByb3dCdWZmZXIsIHVuc2lnbmVkIHJvd0luZGV4LAog
ICAgIEltYWdlRnJhbWUmIGJ1ZmZlciA9IG1fZnJhbWVCdWZmZXJDYWNoZVttX2N1cnJlbnRGcmFt
ZV07CiAgICAgaWYgKGJ1ZmZlci5zdGF0dXMoKSA9PSBJbWFnZUZyYW1lOjpGcmFtZUVtcHR5KSB7
CiAgICAgICAgIHBuZ19zdHJ1Y3RwIHBuZyA9IG1fcmVhZGVyLT5wbmdQdHIoKTsKLSAgICAgICAg
aWYgKCFidWZmZXIuc2V0U2l6ZShzY2FsZWRTaXplKCkud2lkdGgoKSwgc2NhbGVkU2l6ZSgpLmhl
aWdodCgpKSkgeworICAgICAgICBpZiAoIWJ1ZmZlci5zZXRTaXplKHNjYWxlZFNpemUoKSwgbV9w
cmVtdWx0aXBseUFscGhhKSkgewogICAgICAgICAgICAgbG9uZ2ptcChKTVBCVUYocG5nKSwgMSk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTUwNiwxNSArNDYzLDExIEBAIHZv
aWQgUE5HSW1hZ2VEZWNvZGVyOjpyb3dBdmFpbGFibGUodW5zaWduZWQgY2hhciogcm93QnVmZmVy
LCB1bnNpZ25lZCByb3dJbmRleCwKIAogICAgICAgICBidWZmZXIuc2V0U3RhdHVzKEltYWdlRnJh
bWU6OkZyYW1lUGFydGlhbCk7CiAgICAgICAgIGJ1ZmZlci5zZXRIYXNBbHBoYShmYWxzZSk7Ci0g
ICAgICAgIGJ1ZmZlci5zZXRDb2xvclByb2ZpbGUobV9jb2xvclByb2ZpbGUpOwogCiAjaWYgRU5B
QkxFKEFQTkcpCiAgICAgICAgIGlmIChtX2N1cnJlbnRGcmFtZSkKICAgICAgICAgICAgIGluaXRG
cmFtZUJ1ZmZlcihtX2N1cnJlbnRGcmFtZSk7Ci0gICAgICAgIGVsc2UKICNlbmRpZgotICAgICAg
ICAvLyBGb3IgUE5HcywgdGhlIGZyYW1lIGFsd2F5cyBmaWxscyB0aGUgZW50aXJlIGltYWdlLgot
ICAgICAgICBidWZmZXIuc2V0T3JpZ2luYWxGcmFtZVJlY3QoSW50UmVjdChJbnRQb2ludCgpLCBz
aXplKCkpKTsKICAgICB9CiAKICAgICAvKiBsaWJwbmcgY29tbWVudHMgKGhlcmUgdG8gZXhwbGFp
biB3aGF0IGZvbGxvd3MpLgpAQCAtNTczLDcgKzUyNiw3IEBAIHZvaWQgUE5HSW1hZ2VEZWNvZGVy
Ojpyb3dBdmFpbGFibGUodW5zaWduZWQgY2hhciogcm93QnVmZmVyLCB1bnNpZ25lZCByb3dJbmRl
eCwKICAgICB9CiAKICAgICAvLyBXcml0ZSB0aGUgZGVjb2RlZCByb3cgcGl4ZWxzIHRvIHRoZSBm
cmFtZSBidWZmZXIuCi0gICAgSW1hZ2VGcmFtZTo6UGl4ZWxEYXRhKiBhZGRyZXNzID0gYnVmZmVy
LmdldEFkZHIoMCwgeSk7CisgICAgUkdCQTMyKiBhZGRyZXNzID0gYnVmZmVyLmdldEFkZHIoMCwg
eSk7CiAgICAgaW50IHdpZHRoID0gc2NhbGVkU2l6ZSgpLndpZHRoKCk7CiAgICAgdW5zaWduZWQg
Y2hhciBub25Ucml2aWFsQWxwaGFNYXNrID0gMDsKIApAQCAtNjYzLDggKzYxNiw2IEBAIHZvaWQg
UE5HSW1hZ2VEZWNvZGVyOjpyZWFkQ2h1bmtzKHBuZ191bmtub3duX2NodW5rcCBjaHVuaykKICAg
ICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBtX2ZyYW1lQnVmZmVyQ2FjaGUucmVzaXplKG1f
ZnJhbWVDb3VudCk7Ci0gICAgICAgIGZvciAoYXV0byYgaW1hZ2VGcmFtZSA6IG1fZnJhbWVCdWZm
ZXJDYWNoZSkKLSAgICAgICAgICAgIGltYWdlRnJhbWUuc2V0UHJlbXVsdGlwbHlBbHBoYShtX3By
ZW11bHRpcGx5QWxwaGEpOwogICAgIH0gZWxzZSBpZiAoIW1lbWNtcChjaHVuay0+bmFtZSwgImZj
VEwiLCA0KSAmJiBjaHVuay0+c2l6ZSA9PSAyNikgewogICAgICAgICBpZiAobV9oYXNJbmZvICYm
ICFtX2lzQW5pbWF0ZWQpCiAgICAgICAgICAgICByZXR1cm47CkBAIC03MDYsMTAgKzY1Nyw4IEBA
IHZvaWQgUE5HSW1hZ2VEZWNvZGVyOjpyZWFkQ2h1bmtzKHBuZ191bmtub3duX2NodW5rcCBjaHVu
aykKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChtX2ZyYW1l
QnVmZmVyQ2FjaGUuaXNFbXB0eSgpKSB7CisgICAgICAgIGlmIChtX2ZyYW1lQnVmZmVyQ2FjaGUu
aXNFbXB0eSgpKQogICAgICAgICAgICAgbV9mcmFtZUJ1ZmZlckNhY2hlLnJlc2l6ZSgxKTsKLSAg
ICAgICAgICAgIG1fZnJhbWVCdWZmZXJDYWNoZVswXS5zZXRQcmVtdWx0aXBseUFscGhhKG1fcHJl
bXVsdGlwbHlBbHBoYSk7Ci0gICAgICAgIH0KIAogICAgICAgICBpZiAobV9jdXJyZW50RnJhbWUg
PCBtX2ZyYW1lQnVmZmVyQ2FjaGUuc2l6ZSgpKSB7CiAgICAgICAgICAgICBJbWFnZUZyYW1lJiBi
dWZmZXIgPSBtX2ZyYW1lQnVmZmVyQ2FjaGVbbV9jdXJyZW50RnJhbWVdOwpAQCAtODM0LDExICs3
ODMsNiBAQCB2b2lkIFBOR0ltYWdlRGVjb2Rlcjo6aW5pdEZyYW1lQnVmZmVyKHNpemVfdCBmcmFt
ZUluZGV4KQogICAgICAgICBmcmFtZVJlY3Quc2V0SGVpZ2h0KHNpemUoKS5oZWlnaHQoKSAtIG1f
eU9mZnNldCk7CiAKICAgICBJbWFnZUZyYW1lJiBidWZmZXIgPSBtX2ZyYW1lQnVmZmVyQ2FjaGVb
ZnJhbWVJbmRleF07Ci0gICAgaW50IGxlZnQgPSB1cHBlckJvdW5kU2NhbGVkWChmcmFtZVJlY3Qu
eCgpKTsKLSAgICBpbnQgcmlnaHQgPSBsb3dlckJvdW5kU2NhbGVkWChmcmFtZVJlY3QubWF4WCgp
LCBsZWZ0KTsKLSAgICBpbnQgdG9wID0gdXBwZXJCb3VuZFNjYWxlZFkoZnJhbWVSZWN0LnkoKSk7
Ci0gICAgaW50IGJvdHRvbSA9IGxvd2VyQm91bmRTY2FsZWRZKGZyYW1lUmVjdC5tYXhZKCksIHRv
cCk7Ci0gICAgYnVmZmVyLnNldE9yaWdpbmFsRnJhbWVSZWN0KEludFJlY3QobGVmdCwgdG9wLCBy
aWdodCAtIGxlZnQsIGJvdHRvbSAtIHRvcCkpOwogCiAgICAgLy8gVGhlIHN0YXJ0aW5nIHN0YXRl
IGZvciB0aGlzIGZyYW1lIGRlcGVuZHMgb24gdGhlIHByZXZpb3VzIGZyYW1lJ3MKICAgICAvLyBk
aXNwb3NhbCBtZXRob2QuCkBAIC04NjIsNyArODA2LDcgQEAgdm9pZCBQTkdJbWFnZURlY29kZXI6
OmluaXRGcmFtZUJ1ZmZlcihzaXplX3QgZnJhbWVJbmRleCkKICAgICB9IGVsc2UgewogICAgICAg
ICAvLyBXZSB3YW50IHRvIGNsZWFyIHRoZSBwcmV2aW91cyBmcmFtZSB0byB0cmFuc3BhcmVudCwg
d2l0aG91dAogICAgICAgICAvLyBhZmZlY3RpbmcgcGl4ZWxzIGluIHRoZSBpbWFnZSBvdXRzaWRl
IG9mIHRoZSBmcmFtZS4KLSAgICAgICAgY29uc3QgSW50UmVjdCYgcHJldlJlY3QgPSBwcmV2QnVm
ZmVyLT5vcmlnaW5hbEZyYW1lUmVjdCgpOworICAgICAgICBjb25zdCBJbnRSZWN0JiBwcmV2UmVj
dCA9IHByZXZCdWZmZXItPnBpeGVscygpLT5yZWN0KCk7CiAgICAgICAgIGlmICghZnJhbWVJbmRl
eCB8fCBwcmV2UmVjdC5jb250YWlucyhJbnRSZWN0KEludFBvaW50KCksIHNjYWxlZFNpemUoKSkp
KSB7CiAgICAgICAgICAgICAvLyBDbGVhcmluZyB0aGUgZmlyc3QgZnJhbWUsIG9yIGEgZnJhbWUg
dGhlIHNpemUgb2YgdGhlIHdob2xlCiAgICAgICAgICAgICAvLyBpbWFnZSwgcmVzdWx0cyBpbiBh
IGNvbXBsZXRlbHkgZW1wdHkgaW1hZ2UuCkBAIC04NzMsNiArODE3LDEyIEBAIHZvaWQgUE5HSW1h
Z2VEZWNvZGVyOjppbml0RnJhbWVCdWZmZXIoc2l6ZV90IGZyYW1lSW5kZXgpCiAgICAgICAgICAg
ICBidWZmZXIuemVyb0ZpbGxGcmFtZVJlY3QocHJldlJlY3QpOwogICAgICAgICB9CiAgICAgfQor
ICAgIAorICAgIGludCBsZWZ0ID0gdXBwZXJCb3VuZFNjYWxlZFgoZnJhbWVSZWN0LngoKSk7Cisg
ICAgaW50IHJpZ2h0ID0gbG93ZXJCb3VuZFNjYWxlZFgoZnJhbWVSZWN0Lm1heFgoKSwgbGVmdCk7
CisgICAgaW50IHRvcCA9IHVwcGVyQm91bmRTY2FsZWRZKGZyYW1lUmVjdC55KCkpOworICAgIGlu
dCBib3R0b20gPSBsb3dlckJvdW5kU2NhbGVkWShmcmFtZVJlY3QubWF4WSgpLCB0b3ApOworICAg
IGJ1ZmZlci5waXhlbHMoKS0+c2V0UmVjdChJbnRSZWN0KGxlZnQsIHRvcCwgcmlnaHQgLSBsZWZ0
LCBib3R0b20gLSB0b3ApKTsKIH0KIAogdm9pZCBQTkdJbWFnZURlY29kZXI6OmZyYW1lQ29tcGxl
dGUoKQpAQCAtODg2LDcgKzgzNiw3IEBAIHZvaWQgUE5HSW1hZ2VEZWNvZGVyOjpmcmFtZUNvbXBs
ZXRlKCkKICAgICBwbmdfYnl0ZXAgaW50ZXJsYWNlQnVmZmVyID0gbV9yZWFkZXItPmludGVybGFj
ZUJ1ZmZlcigpOwogCiAgICAgaWYgKG1fY3VycmVudEZyYW1lICYmIGludGVybGFjZUJ1ZmZlcikg
ewotICAgICAgICBjb25zdCBJbnRSZWN0JiByZWN0ID0gYnVmZmVyLm9yaWdpbmFsRnJhbWVSZWN0
KCk7CisgICAgICAgIGNvbnN0IEludFJlY3QmIHJlY3QgPSBidWZmZXIucGl4ZWxzKCktPnJlY3Qo
KTsKICAgICAgICAgYm9vbCBoYXNBbHBoYSA9IG1fcmVhZGVyLT5oYXNBbHBoYSgpOwogICAgICAg
ICB1bnNpZ25lZCBjb2xvckNoYW5uZWxzID0gaGFzQWxwaGEgPyA0IDogMzsKICAgICAgICAgYm9v
bCBub25Ucml2aWFsQWxwaGEgPSBmYWxzZTsKQEAgLTg5Niw3ICs4NDYsNyBAQCB2b2lkIFBOR0lt
YWdlRGVjb2Rlcjo6ZnJhbWVDb21wbGV0ZSgpCiAjaWYgRU5BQkxFKElNQUdFX0RFQ09ERVJfRE9X
Tl9TQU1QTElORykKICAgICAgICAgZm9yIChpbnQgeSA9IDA7IHkgPCByZWN0Lm1heFkoKSAtIHJl
Y3QueSgpOyArK3kpIHsKICAgICAgICAgICAgIHBuZ19ieXRlcCByb3cgPSBpbnRlcmxhY2VCdWZm
ZXIgKyAobV9zY2FsZWQgPyBtX3NjYWxlZFJvd3NbeV0gOiB5KSAqIGNvbG9yQ2hhbm5lbHMgKiBz
aXplKCkud2lkdGgoKTsKLSAgICAgICAgICAgIEltYWdlRnJhbWU6OlBpeGVsRGF0YSogYWRkcmVz
cyA9IGJ1ZmZlci5nZXRBZGRyKHJlY3QueCgpLCB5ICsgcmVjdC55KCkpOworICAgICAgICAgICAg
UkdCQTMyKiBhZGRyZXNzID0gYnVmZmVyLmdldEFkZHIocmVjdC54KCksIHkgKyByZWN0LnkoKSk7
CiAgICAgICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IHJlY3QubWF4WCgpIC0gcmVjdC54KCk7
ICsreCkgewogICAgICAgICAgICAgICAgIHBuZ19ieXRlcCBwaXhlbCA9IHJvdyArIChtX3NjYWxl
ZCA/IG1fc2NhbGVkQ29sdW1uc1t4XSA6IHgpICogY29sb3JDaGFubmVsczsKICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBhbHBoYSA9IGhhc0FscGhhID8gcGl4ZWxbM10gOiAyNTU7CkBAIC05MTIs
NyArODYyLDcgQEAgdm9pZCBQTkdJbWFnZURlY29kZXI6OmZyYW1lQ29tcGxldGUoKQogICAgICAg
ICBwbmdfYnl0ZXAgcm93ID0gaW50ZXJsYWNlQnVmZmVyOwogICAgICAgICBmb3IgKGludCB5ID0g
cmVjdC55KCk7IHkgPCByZWN0Lm1heFkoKTsgKyt5LCByb3cgKz0gY29sb3JDaGFubmVscyAqIHNp
emUoKS53aWR0aCgpKSB7CiAgICAgICAgICAgICBwbmdfYnl0ZXAgcGl4ZWwgPSByb3c7Ci0gICAg
ICAgICAgICBJbWFnZUZyYW1lOjpQaXhlbERhdGEqIGFkZHJlc3MgPSBidWZmZXIuZ2V0QWRkcihy
ZWN0LngoKSwgeSk7CisgICAgICAgICAgICBSR0JBMzIqIGFkZHJlc3MgPSBidWZmZXIuZ2V0QWRk
cihyZWN0LngoKSwgeSk7CiAgICAgICAgICAgICBmb3IgKGludCB4ID0gcmVjdC54KCk7IHggPCBy
ZWN0Lm1heFgoKTsgKyt4LCBwaXhlbCArPSBjb2xvckNoYW5uZWxzKSB7CiAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgYWxwaGEgPSBoYXNBbHBoYSA/IHBpeGVsWzNdIDogMjU1OwogICAgICAgICAg
ICAgICAgIG5vblRyaXZpYWxBbHBoYSB8PSBhbHBoYSA8IDI1NTsKQEAgLTkyNSw3ICs4NzUsNyBA
QCB2b2lkIFBOR0ltYWdlRGVjb2Rlcjo6ZnJhbWVDb21wbGV0ZSgpCiAjZW5kaWYKIAogICAgICAg
ICBpZiAoIW5vblRyaXZpYWxBbHBoYSkgewotICAgICAgICAgICAgaWYgKGJ1ZmZlci5vcmlnaW5h
bEZyYW1lUmVjdCgpLmNvbnRhaW5zKEludFJlY3QoSW50UG9pbnQoKSwgc2NhbGVkU2l6ZSgpKSkp
CisgICAgICAgICAgICBpZiAoYnVmZmVyLnBpeGVscygpLT5yZWN0KCkuY29udGFpbnMoSW50UmVj
dChJbnRQb2ludCgpLCBzY2FsZWRTaXplKCkpKSkKICAgICAgICAgICAgICAgICBidWZmZXIuc2V0
SGFzQWxwaGEoZmFsc2UpOwogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgc2l6
ZV90IGZyYW1lSW5kZXggPSBtX2N1cnJlbnRGcmFtZTsKQEAgLTkzMyw3ICs4ODMsNyBAQCB2b2lk
IFBOR0ltYWdlRGVjb2Rlcjo6ZnJhbWVDb21wbGV0ZSgpCiAgICAgICAgICAgICAgICAgd2hpbGUg
KGZyYW1lSW5kZXggJiYgKHByZXZCdWZmZXItPmRpc3Bvc2FsTWV0aG9kKCkgPT0gSW1hZ2VGcmFt
ZTo6RGlzcG9zZU92ZXJ3cml0ZVByZXZpb3VzKSkKICAgICAgICAgICAgICAgICAgICAgcHJldkJ1
ZmZlciA9ICZtX2ZyYW1lQnVmZmVyQ2FjaGVbLS1mcmFtZUluZGV4XTsKICAgICAgICAgICAgICAg
ICBpZiAoKHByZXZCdWZmZXItPmRpc3Bvc2FsTWV0aG9kKCkgPT0gSW1hZ2VGcmFtZTo6RGlzcG9z
ZU92ZXJ3cml0ZUJnY29sb3IpCi0gICAgICAgICAgICAgICAgICAgICYmICFwcmV2QnVmZmVyLT5o
YXNBbHBoYSgpICYmIGJ1ZmZlci5vcmlnaW5hbEZyYW1lUmVjdCgpLmNvbnRhaW5zKHByZXZCdWZm
ZXItPm9yaWdpbmFsRnJhbWVSZWN0KCkpKQorICAgICAgICAgICAgICAgICAgICAmJiAhcHJldkJ1
ZmZlci0+aGFzQWxwaGEoKSAmJiBidWZmZXIucGl4ZWxzKCktPnJlY3QoKS5jb250YWlucyhwcmV2
QnVmZmVyLT5waXhlbHMoKS0+cmVjdCgpKSkKICAgICAgICAgICAgICAgICAgICAgYnVmZmVyLnNl
dEhhc0FscGhhKGZhbHNlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlmICghbV9i
bGVuZCAmJiAhYnVmZmVyLmhhc0FscGhhKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmgKaW5kZXgg
MDVmYzc0YjZkZTIxNGQwNDE0YTgyYjQxODY5Mzc3NjJkMWE1ZTU1Yi4uOTg3NDI0NjE5MDg4ZGUx
N2ZjZDYzZGM4NmY1Yjk1MTc4N2NiNGRlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuaApAQCAt
NDgsNyArNDgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGludCByZXBldGl0aW9u
Q291bnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3BsYXlDb3VudC0xOyB9CiAjZW5kaWYK
ICAgICAgICAgYm9vbCBpc1NpemVBdmFpbGFibGUoKSBvdmVycmlkZTsKLSAgICAgICAgYm9vbCBz
ZXRTaXplKHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQpIG92ZXJyaWRlOworICAgICAg
ICBib29sIHNldFNpemUoY29uc3QgSW50U2l6ZSYpIG92ZXJyaWRlOwogICAgICAgICBJbWFnZUZy
YW1lKiBmcmFtZUJ1ZmZlckF0SW5kZXgoc2l6ZV90IGluZGV4KSBvdmVycmlkZTsKICAgICAgICAg
Ly8gQ0FVVElPTjogc2V0RmFpbGVkKCkgZGVsZXRlcyB8bV9yZWFkZXJ8LiAgQmUgY2FyZWZ1bCB0
byBhdm9pZAogICAgICAgICAvLyBhY2Nlc3NpbmcgZGVsZXRlZCBtZW1vcnksIGVzcGVjaWFsbHkg
d2hlbiBjYWxsaW5nIHRoaXMgZnJvbSBpbnNpZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIu
Y3BwCmluZGV4IDEyNGExYjJmMTk5N2ZlNjc4YzYxYjUyZjMwNThkYjRkNmI4ODY3OWEuLmEzNWEx
OWE5MGI1Y2EzOTdlOGZiNzAyMTAxN2U4OTc1ZmJlMzRjNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1h
Z2VEZWNvZGVyLmNwcApAQCAtNzgsMTAgKzc4LDggQEAgSW1hZ2VGcmFtZSogV0VCUEltYWdlRGVj
b2Rlcjo6ZnJhbWVCdWZmZXJBdEluZGV4KHNpemVfdCBpbmRleCkKICAgICBpZiAoaW5kZXgpCiAg
ICAgICAgIHJldHVybiAwOwogCi0gICAgaWYgKG1fZnJhbWVCdWZmZXJDYWNoZS5pc0VtcHR5KCkp
IHsKKyAgICBpZiAobV9mcmFtZUJ1ZmZlckNhY2hlLmlzRW1wdHkoKSkKICAgICAgICAgbV9mcmFt
ZUJ1ZmZlckNhY2hlLnJlc2l6ZSgxKTsKLSAgICAgICAgbV9mcmFtZUJ1ZmZlckNhY2hlWzBdLnNl
dFByZW11bHRpcGx5QWxwaGEobV9wcmVtdWx0aXBseUFscGhhKTsKLSAgICB9CiAKICAgICBJbWFn
ZUZyYW1lJiBmcmFtZSA9IG1fZnJhbWVCdWZmZXJDYWNoZVswXTsKICAgICBpZiAoZnJhbWUuc3Rh
dHVzKCkgIT0gSW1hZ2VGcmFtZTo6RnJhbWVDb21wbGV0ZSkKQEAgLTExNSw3ICsxMTMsNyBAQCBi
b29sIFdFQlBJbWFnZURlY29kZXI6OmRlY29kZShib29sIG9ubHlTaXplKQogICAgICAgICAgICAg
cmV0dXJuIHNldEZhaWxlZCgpOwogICAgICAgICBtX2hhc0FscGhhID0gZmFsc2U7CiAjZW5kaWYK
LSAgICAgICAgaWYgKCFzZXRTaXplKHdpZHRoLCBoZWlnaHQpKQorICAgICAgICBpZiAoIXNldFNp
emUoSW50U2l6ZSh3aWR0aCwgaGVpZ2h0KSkpCiAgICAgICAgICAgICByZXR1cm4gc2V0RmFpbGVk
KCk7CiAgICAgfQogCkBAIC0xMjgsMTggKzEyNiwxNyBAQCBib29sIFdFQlBJbWFnZURlY29kZXI6
OmRlY29kZShib29sIG9ubHlTaXplKQogICAgIEFTU0VSVChidWZmZXIuc3RhdHVzKCkgIT0gSW1h
Z2VGcmFtZTo6RnJhbWVDb21wbGV0ZSk7CiAKICAgICBpZiAoYnVmZmVyLnN0YXR1cygpID09IElt
YWdlRnJhbWU6OkZyYW1lRW1wdHkpIHsKLSAgICAgICAgaWYgKCFidWZmZXIuc2V0U2l6ZShzaXpl
KCkud2lkdGgoKSwgc2l6ZSgpLmhlaWdodCgpKSkKKyAgICAgICAgaWYgKCFidWZmZXIuc2V0U2l6
ZShzaXplKCksIG1fcHJlbXVsdGlwbHlBbHBoYSkpCiAgICAgICAgICAgICByZXR1cm4gc2V0RmFp
bGVkKCk7CiAgICAgICAgIGJ1ZmZlci5zZXRTdGF0dXMoSW1hZ2VGcmFtZTo6RnJhbWVQYXJ0aWFs
KTsKICAgICAgICAgYnVmZmVyLnNldEhhc0FscGhhKG1faGFzQWxwaGEpOwotICAgICAgICBidWZm
ZXIuc2V0T3JpZ2luYWxGcmFtZVJlY3QoSW50UmVjdChJbnRQb2ludCgpLCBzaXplKCkpKTsKICAg
ICB9CiAKICAgICBpZiAoIW1fZGVjb2RlcikgewogICAgICAgICBXRUJQX0NTUF9NT0RFIG1vZGUg
PSBvdXRwdXRNb2RlKG1faGFzQWxwaGEpOwogICAgICAgICBpZiAoIW1fcHJlbXVsdGlwbHlBbHBo
YSkKICAgICAgICAgICAgIG1vZGUgPSBvdXRwdXRNb2RlKGZhbHNlKTsKLSAgICAgICAgaW50IHJv
d1N0cmlkZSA9IHNpemUoKS53aWR0aCgpICogc2l6ZW9mKEltYWdlRnJhbWU6OlBpeGVsRGF0YSk7
CisgICAgICAgIGludCByb3dTdHJpZGUgPSBzaXplKCkud2lkdGgoKSAqIHNpemVvZihSR0JBMzIp
OwogICAgICAgICB1aW50OF90KiBvdXRwdXQgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihi
dWZmZXIuZ2V0QWRkcigwLCAwKSk7CiAgICAgICAgIGludCBvdXRwdXRTaXplID0gc2l6ZSgpLmhl
aWdodCgpICogcm93U3RyaWRlOwogICAgICAgICBtX2RlY29kZXIgPSBXZWJQSU5ld1JHQihtb2Rl
LCBvdXRwdXQsIG91dHB1dFNpemUsIHJvd1N0cmlkZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1l
VmlkZW9Tb3VyY2VNYWMubW0KaW5kZXggMjE2Y2QwOTNmMjY0NjdjYmE4OGE0M2Y2OTNhYmY0Y2Y1
MWRkMWE0ZC4uZDExNDU0YjA1ZWY4ODk5M2E2Mjg5Mzg5NmJjMGMxMTcyOGM1ZWQ1MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGlt
ZVZpZGVvU291cmNlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5tbQpAQCAtODcsNyArODcsNyBAQCB2
b2lkIE1vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjOjp1cGRhdGVQbGF0Zm9ybUxheWVyKCkgY29u
c3QKICAgICAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIG1f
cHJldmlld0ltYWdlID0gaW1hZ2UtPmdldENHSW1hZ2VSZWYoKTsKKyAgICAgICAgbV9wcmV2aWV3
SW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2UoKTsKICAgICAgICAgaWYgKCFtX3ByZXZpZXdJbWFn
ZSkKICAgICAgICAgICAgIGJyZWFrOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vRHJhZ0ltYWdlQ0dXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L0RyYWdJbWFnZUNHV2luLmNwcAppbmRleCAzNmNkNjUxNmU4MGYxNzQ4YmZlYWI3N2E5MzAyNzFj
MTIxZGU4MDE5Li40YjRlMzc3OWU5NmY3OGM2NTQwYTUzYzQ0NzhjM2JmZDkzNWY1M2U5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ0dXaW4uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VDR1dpbi5jcHAKQEAgLTEz
Niw5ICsxMzYsOSBAQCBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKEltYWdl
KiBpbWcsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikKICAgICBDR0NvbnRleHRTY2FsZUNU
TShkcmF3Q29udGV4dCwgMSwgLTEpOwogICAgIENHQ29udGV4dFNldEZpbGxDb2xvcihkcmF3Q29u
dGV4dCwgd2hpdGUpOwogICAgIENHQ29udGV4dEZpbGxSZWN0KGRyYXdDb250ZXh0LCByZWN0KTsK
LSAgICBpZiAoYXV0byBzcmNJbWFnZSA9IGltZy0+Z2V0Q0dJbWFnZVJlZigpKSB7CisgICAgaWYg
KGF1dG8gc3JjSW1hZ2UgPSBpbWctPm5hdGl2ZUltYWdlKCkpIHsKICAgICAgICAgQ0dDb250ZXh0
U2V0QmxlbmRNb2RlKGRyYXdDb250ZXh0LCBrQ0dCbGVuZE1vZGVOb3JtYWwpOwotICAgICAgICBD
R0NvbnRleHREcmF3SW1hZ2UoZHJhd0NvbnRleHQsIHJlY3QsIHNyY0ltYWdlKTsKKyAgICAgICAg
Q0dDb250ZXh0RHJhd0ltYWdlKGRyYXdDb250ZXh0LCByZWN0LCBzcmNJbWFnZS5nZXQoKSk7CiAg
ICAgfQogICAgIENHQ29udGV4dFJlbGVhc2UoZHJhd0NvbnRleHQpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYkNhY2hlLm1tIGIvU291cmNlL1dlYktpdC9tYWMvTWlz
Yy9XZWJDYWNoZS5tbQppbmRleCBiNjU5ZDZkYmY5YWQ2OTk5YzNhYzk2MmRlOTUxNTc4MDk3ZTFm
M2IxLi43YzVlZDIxMGRkYjJhMzJhNzY2Njc0YzEyMGQ5OTRjMmZhNDdlN2ZkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYkNhY2hlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
bWFjL01pc2MvV2ViQ2FjaGUubW0KQEAgLTIwNCw3ICsyMDQsNyBAQCArIChDR0ltYWdlUmVmKWlt
YWdlRm9yVVJMOihOU1VSTCAqKXVybAogICAgIFdlYkNvcmU6OkNhY2hlZEltYWdlJiBjYWNoZWRJ
bWFnZSA9IGRvd25jYXN0PFdlYkNvcmU6OkNhY2hlZEltYWdlPigqY2FjaGVkUmVzb3VyY2UpOwog
ICAgIGlmICghY2FjaGVkSW1hZ2UuaGFzSW1hZ2UoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgcmV0dXJuIGNhY2hlZEltYWdlLmltYWdlKCktPmdldENHSW1hZ2VSZWYoKTsKKyAgICBy
ZXR1cm4gY2FjaGVkSW1hZ2UuaW1hZ2UoKS0+bmF0aXZlSW1hZ2UoKS5nZXQoKTsKIH0KIAogI2Vu
ZGlmIC8vIFBMQVRGT1JNKElPUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9jZy9XS0ljb25EYXRhYmFzZUNHLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9jZy9XS0ljb25EYXRhYmFzZUNHLmNwcAppbmRleCAwZjZkZTdhMTQ2YTYxMWE1MmFh
MWU1MzkwMTlmYTZjMWM0NjcyNWFlLi4zMDU2MzM2Y2I2NmZlNGFmMThiZGM1MjlhY2EyZjhmYzg4
MWRmZTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvY2cvV0tJ
Y29uRGF0YWJhc2VDRy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2Nn
L1dLSWNvbkRhdGFiYXNlQ0cuY3BwCkBAIC0zNywxMiArMzcsMjMgQEAgdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiBDR0ltYWdlUmVmIFdLSWNvbkRhdGFiYXNlVHJ5R2V0Q0dJbWFnZUZvclVSTChX
S0ljb25EYXRhYmFzZVJlZiBpY29uRGF0YWJhc2VSZWYsIFdLVVJMUmVmIHVybFJlZiwgV0tTaXpl
IHNpemUpCiB7CiAgICAgSW1hZ2UqIGltYWdlID0gdG9JbXBsKGljb25EYXRhYmFzZVJlZiktPmlt
YWdlRm9yUGFnZVVSTCh0b1dURlN0cmluZyh1cmxSZWYpKTsKLSAgICByZXR1cm4gaW1hZ2UgPyBp
bWFnZS0+Z2V0Rmlyc3RDR0ltYWdlUmVmT2ZTaXplKEludFNpemUoc3RhdGljX2Nhc3Q8aW50Pihz
aXplLndpZHRoKSwgc3RhdGljX2Nhc3Q8aW50PihzaXplLmhlaWdodCkpKSA6IDA7CisgICAgcmV0
dXJuIGltYWdlID8gaW1hZ2UtPm5hdGl2ZUltYWdlT2ZTaXplKEludFNpemUoc3RhdGljX2Nhc3Q8
aW50PihzaXplLndpZHRoKSwgc3RhdGljX2Nhc3Q8aW50PihzaXplLmhlaWdodCkpKS5nZXQoKSA6
IG51bGxwdHI7CiB9CiAKIENGQXJyYXlSZWYgV0tJY29uRGF0YWJhc2VUcnlDb3B5Q0dJbWFnZUFy
cmF5Rm9yVVJMKFdLSWNvbkRhdGFiYXNlUmVmIGljb25EYXRhYmFzZVJlZiwgV0tVUkxSZWYgdXJs
UmVmKQogewogICAgIEltYWdlKiBpbWFnZSA9IHRvSW1wbChpY29uRGF0YWJhc2VSZWYpLT5pbWFn
ZUZvclBhZ2VVUkwodG9XVEZTdHJpbmcodXJsUmVmKSk7Ci0gICAgcmV0dXJuIGltYWdlID8gaW1h
Z2UtPmdldENHSW1hZ2VBcnJheSgpLmxlYWtSZWYoKSA6IDA7CisgICAgaWYgKCFpbWFnZSkKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvIG5hdGl2ZUltYWdlcyA9IGltYWdlLT5m
cmFtZXNOYXRpdmVJbWFnZXMoKTsKKyAgICBpZiAoIW5hdGl2ZUltYWdlcy5zaXplKCkpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIAorICAgIENGTXV0YWJsZUFycmF5UmVmIGFycmF5ID0g
Q0ZBcnJheUNyZWF0ZU11dGFibGUobnVsbHB0ciwgbmF0aXZlSW1hZ2VzLnNpemUoKSwgJmtDRlR5
cGVBcnJheUNhbGxCYWNrcyk7CisgICAgZm9yIChhdXRvIG5hdGl2ZUltYWdlIDogbmF0aXZlSW1h
Z2VzKQorICAgICAgICBDRkFycmF5QXBwZW5kVmFsdWUoYXJyYXksIG5hdGl2ZUltYWdlLmdldCgp
KTsKKyAgICAKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q0ZBcnJheVJlZj4oQ0ZSZXRhaW4oYXJy
YXkpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0Nv
bnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dL
Q29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCBkYzc5ODNhYjk4OGMyZDA0YTE3MzBlZTEz
NzMwM2MyNDQxNjE1MTk3Li5mYmMzZTVkNGM1NDMwMWNlOTIxN2E0MGY4ZDA4YmQ1ODM1Mjc4N2M2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJ
bnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVu
dFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtNDA3MSw3ICs0MDcxLDcgQEAgLSAoVUlJbWFnZSAqKV9w
cmVzZW50YXRpb25TbmFwc2hvdEZvclByZXZpZXdJdGVtQ29udHJvbGxlcjooVUlQcmV2aWV3SXRl
bUNvbnRyb2wKIHsKICAgICBpZiAoIV9wb3NpdGlvbkluZm9ybWF0aW9uLmxpbmtJbmRpY2F0b3Iu
Y29udGVudEltYWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gW1tbVUlJ
bWFnZSBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOl9wb3NpdGlvbkluZm9ybWF0aW9uLmxpbmtJbmRp
Y2F0b3IuY29udGVudEltYWdlLT5nZXRDR0ltYWdlUmVmKCldIGF1dG9yZWxlYXNlXTsKKyAgICBy
ZXR1cm4gW1tbVUlJbWFnZSBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOl9wb3NpdGlvbkluZm9ybWF0
aW9uLmxpbmtJbmRpY2F0b3IuY29udGVudEltYWdlLT5uYXRpdmVJbWFnZSgpLmdldCgpXSBhdXRv
cmVsZWFzZV07CiB9CiAKIC0gKE5TQXJyYXkgKilfcHJlc2VudGF0aW9uUmVjdHNGb3JQcmV2aWV3
SXRlbUNvbnRyb2xsZXI6KFVJUHJldmlld0l0ZW1Db250cm9sbGVyICopY29udHJvbGxlcgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4
IDlhMzNmN2NjN2RjN2M3ZDcyZjlkYTc0MzA5OGI3ZGJjYTgyNDA5Y2YuLmE1MzI1MTA2NzhiOWY1
MzUxNDU4YTM4YTlmNDIzMzc0N2QwMzVmNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTE3MjcsNjkgKzE3MjcsNiBAQCB2b2lk
IFBsdWdpblZpZXc6OndpbmRvd2VkUGx1Z2luVmlzaWJpbGl0eURpZENoYW5nZShib29sIGlzVmlz
aWJsZSwgdWludDY0X3Qgd2luZAogfQogI2VuZGlmCiAKLSNpZiBQTEFURk9STShDT0NPQSkKLXN0
YXRpYyBib29sIGlzQWxtb3N0U29saWRDb2xvcihCaXRtYXBJbWFnZSogYml0bWFwKQotewotICAg
IENHSW1hZ2VSZWYgaW1hZ2UgPSBiaXRtYXAtPmdldENHSW1hZ2VSZWYoKTsKLSAgICBBU1NFUlQo
Q0dJbWFnZUdldEJpdHNQZXJDb21wb25lbnQoaW1hZ2UpID09IDgpOwotCi0gICAgQ0dCaXRtYXBJ
bmZvIGltYWdlSW5mbyA9IENHSW1hZ2VHZXRCaXRtYXBJbmZvKGltYWdlKTsKLSAgICBpZiAoIShp
bWFnZUluZm8gJiBrQ0dCaXRtYXBCeXRlT3JkZXIzMkxpdHRsZSkgfHwgKGltYWdlSW5mbyAmIGtD
R0JpdG1hcEFscGhhSW5mb01hc2spICE9IGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3Qp
IHsKLSAgICAgICAgLy8gRklYTUU6IENvbnNpZGVyIGJlaW5nIGFibGUgdG8gaGFuZGxlIG90aGVy
IHBpeGVsIGZvcm1hdHMuCi0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgc2l6ZV90IHdpZHRoID0gQ0dJbWFnZUdldFdpZHRo
KGltYWdlKTsKLSAgICBzaXplX3QgaGVpZ2h0ID0gQ0dJbWFnZUdldEhlaWdodChpbWFnZSk7Ci0g
ICAgc2l6ZV90IGJ5dGVzUGVyUm93ID0gQ0dJbWFnZUdldEJ5dGVzUGVyUm93KGltYWdlKTsKLQot
ICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IHByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRl
ckNvcHlEYXRhKENHSW1hZ2VHZXREYXRhUHJvdmlkZXIoaW1hZ2UpKSk7Ci0gICAgY29uc3QgVUlu
dDgqIGRhdGEgPSBDRkRhdGFHZXRCeXRlUHRyKHByb3ZpZGVyLmdldCgpKTsKLQotICAgIC8vIE92
ZXJsYXkgYSBncmlkIG9mIHNhbXBsaW5nIGRvdHMgb24gdG9wIG9mIGEgZ3JheXNjYWxlIHZlcnNp
b24gb2YgdGhlIGltYWdlLgotICAgIC8vIEZvciB0aGUgaW50ZXJpb3IgcG9pbnRzLCBjYWxjdWxh
dGUgdGhlIGRpZmZlcmVuY2UgaW4gbHVtaW5hbmNlIGFtb25nIHRoZSBzYW1wbGUgcG9pbnQKLSAg
ICAvLyBhbmQgaXRzIHN1cnJvdW5kcyBwb2ludHMsIHNjYWxlZCBieSB0cmFuc3BhcmVuY3kuCi0g
ICAgY29uc3QgdW5zaWduZWQgc2FtcGxlUm93cyA9IDc7Ci0gICAgY29uc3QgdW5zaWduZWQgc2Ft
cGxlQ29scyA9IDc7Ci0gICAgLy8gRklYTUU6IFJlZmluZSB0aGUgcHJvcGVyIG51bWJlciBvZiBz
YW1wbGVzLCBhbmQgYWNjb21tb2RhdGUgZGlmZmVyZW50IGFzcGVjdCByYXRpb3MuCi0gICAgaWYg
KHdpZHRoIDwgc2FtcGxlQ29scyB8fCBoZWlnaHQgPCBzYW1wbGVSb3dzKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0KLSAgICAvLyBFbnN1cmUgdGhhdCB0aGUgbGFzdCByb3cvY29sdW1uIGxhbmQg
b24gdGhlIGltYWdlIHBlcmltZXRlci4KLSAgICBjb25zdCBmbG9hdCBzdHJpZGVXaWR0aCA9IHN0
YXRpY19jYXN0PGZsb2F0Pih3aWR0aCAtIDEpIC8gKHNhbXBsZUNvbHMgLSAxKTsKLSAgICBjb25z
dCBmbG9hdCBzdHJpZGVIZWlnaHQgPSBzdGF0aWNfY2FzdDxmbG9hdD4oaGVpZ2h0IC0gMSkgLyAo
c2FtcGxlUm93cyAtIDEpOwotICAgIGZsb2F0IHNhbXBsZXNbc2FtcGxlUm93c11bc2FtcGxlQ29s
c107Ci0KLSAgICAvLyBGaW5kIHRoZSBsdW1pbmFuY2Ugb2YgdGhlIHNhbXBsZSBwb2ludHMuCi0g
ICAgZmxvYXQgeSA9IDA7Ci0gICAgY29uc3QgVUludDgqIHJvdyA9IGRhdGE7Ci0gICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IHNhbXBsZVJvd3M7ICsraSkgewotICAgICAgICBmbG9hdCB4ID0g
MDsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IHNhbXBsZUNvbHM7ICsraikgewot
ICAgICAgICAgICAgY29uc3QgVUludDgqIHAwID0gcm93ICsgKHN0YXRpY19jYXN0PGludD4oeCAr
IC41KSkgKiA0OwotICAgICAgICAgICAgLy8gUiBHIEIgQQotICAgICAgICAgICAgc2FtcGxlc1tp
XVtqXSA9ICgwLjIxMjUgKiAqcDAgKyAwLjcxNTQgKiAqKHAwKzEpICsgMC4wNzIxICogKihwMCsy
KSkgKiAqKHAwKzMpIC8gMjU1OwotICAgICAgICAgICAgeCArPSBzdHJpZGVXaWR0aDsKLSAgICAg
ICAgfQotICAgICAgICB5ICs9IHN0cmlkZUhlaWdodDsKLSAgICAgICAgcm93ID0gZGF0YSArIChz
dGF0aWNfY2FzdDxpbnQ+KHkgKyAuNSkpICogYnl0ZXNQZXJSb3c7Ci0gICAgfQotCi0gICAgLy8g
RGV0ZXJtaW5lIHRoZSBpbWFnZSBzY29yZS4KLSAgICBmbG9hdCBhY2N1bVNjb3JlID0gMDsKLSAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwgc2FtcGxlUm93cyAtIDE7ICsraSkgewotICAgICAg
ICBmb3IgKHVuc2lnbmVkIGogPSAxOyBqIDwgc2FtcGxlQ29scyAtIDE7ICsraikgewotICAgICAg
ICAgICAgZmxvYXQgZGlmZiA9IHNhbXBsZXNbaSAtIDFdW2pdICsgc2FtcGxlc1tpICsgMV1bal0g
KyBzYW1wbGVzW2ldW2ogLSAxXSArIHNhbXBsZXNbaV1baiArIDFdIC0gNCAqIHNhbXBsZXNbaV1b
al07Ci0gICAgICAgICAgICBhY2N1bVNjb3JlICs9IGRpZmYgKiBkaWZmOwotICAgICAgICB9Ci0g
ICAgfQotCi0gICAgLy8gVGhlIHNjb3JlIGZvciBhIGdpdmVuIHNhbXBsZSBjYW4gYmUgd2l0aGlu
IHRoZSByYW5nZSBvZiAwIGFuZCAyNTVeMi4KLSAgICByZXR1cm4gYWNjdW1TY29yZSA8IDI1MDAg
KiAoc2FtcGxlUm93cyAtIDIpICogKHNhbXBsZUNvbHMgLSAyKTsKLX0KLSNlbmRpZgotCiB2b2lk
IFBsdWdpblZpZXc6OnBsdWdpblNuYXBzaG90VGltZXJGaXJlZCgpCiB7CiAjaWYgRU5BQkxFKFBS
SU1BUllfU05BUFNIT1RURURfUExVR0lOX0hFVVJJU1RJQykKQEAgLTE4MDksNyArMTc0Niw3IEBA
IHZvaWQgUGx1Z2luVmlldzo6cGx1Z2luU25hcHNob3RUaW1lckZpcmVkKCkKIAogICAgICAgICBp
ZiAoc25hcHNob3RJbWFnZSkgewogI2lmIEVOQUJMRShQUklNQVJZX1NOQVBTSE9UVEVEX1BMVUdJ
Tl9IRVVSSVNUSUMpCi0gICAgICAgICAgICBib29sIHNuYXBzaG90SXNBbG1vc3RTb2xpZENvbG9y
ID0gaXNBbG1vc3RTb2xpZENvbG9yKGRvd25jYXN0PEJpdG1hcEltYWdlPihzbmFwc2hvdEltYWdl
LmdldCgpKSk7CisgICAgICAgICAgICBib29sIHNuYXBzaG90SXNBbG1vc3RTb2xpZENvbG9yID0g
c3RhdGljX3BvaW50ZXJfY2FzdDxCaXRtYXBJbWFnZT4oc25hcHNob3RJbWFnZSktPmlzQWxtb3N0
U29saWRDb2xvcigpOwogICAgICAgICAgICAgc25hcHNob3RGb3VuZCA9ICFzbmFwc2hvdElzQWxt
b3N0U29saWRDb2xvcjsKICNlbmRpZgogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>283557</attachid>
            <date>2016-07-13 12:19:10 -0700</date>
            <delta_ts>2016-07-13 14:32:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159721-20160713121825.patch</filename>
            <type>text/plain</type>
            <size>170585</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzMTAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWM1YmQ5YmQwNmExOWJl
NWNhMDJjNTE3MmQ2ZWYyZWJiZmVjMWMxOS4uMzE5NmMwODVmMWQ1MWFlYTRlNDI0Yzc2NmE0MTU5
NjI1NDI4ZGZjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5NSBAQAorMjAxNi0wNy0xMyAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIEdldCBy
aWQgb2YgdGhlIG1fcHJlbXVsdGlwbHlBbHBoYSBmbGFnIG9mIHRoZSBJbWFnZUZyYW1lIGNsYXNz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTk3MjEK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGZs
YWcgd2FzIG9ubHkgbmVlZGVkIHdoZW4gY2FsbGluZyBCaXRtYXBQaXhlbHM6OnNldFNpemUoKS4g
SW5zdGVhZAorICAgICAgICB3ZSBjYW4gcGFzcyB0aGUgSW1hZ2VEZWNvZGVyOjptX3ByZW11bHRp
cGx5QWxwaGEgdG8gSW1hZ2VGcmFtZTo6c2V0U2l6ZSgpCisgICAgICAgIHdoaWNoIHdpbGwgcGFz
cyBpdCB0byBCaXRtYXBQaXhlbHM6OnNldFNpemUoKS4KKyAgICAgICAgCisgICAgICAgICogcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlRnJhbWU6Om9wZXJhdG9yPSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpj
b3B5Qml0bWFwRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VE
ZWNvZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OnNldFNpemUpOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjppc092ZXJTaXplKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkJNUEltYWdlRGVjb2Rlcjo6ZnJhbWVCdWZmZXJBdEluZGV4KTogRGVsZXRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VSZWFkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Qk1QSW1hZ2VSZWFkZXI6OmRlY29kZUJNUCk6CisgICAgICAgIChX
ZWJDb3JlOjpCTVBJbWFnZVJlYWRlcjo6cHJvY2Vzc0luZm9IZWFkZXIpOgorICAgICAgICAqIHBs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6R0lGSW1hZ2VEZWNvZGVyOjppbml0RnJhbWVCdWZmZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6R0lGSW1hZ2VEZWNvZGVyOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklD
T0ltYWdlRGVjb2Rlcjo6c2V0U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpJQ09JbWFnZURlY29k
ZXI6OmZyYW1lQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6SUNPSW1hZ2VEZWNvZGVyOjpwcm9j
ZXNzRGlyZWN0b3J5RW50cmllcyk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
aWNvL0lDT0ltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKUEVHSW1hZ2VE
ZWNvZGVyOjpzZXRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkpQRUdJbWFnZURlY29kZXI6OmZy
YW1lQnVmZmVyQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpKUEVHSW1hZ2VEZWNvZGVyOjpv
dXRwdXRTY2FubGluZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcv
SlBFR0ltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3Bu
Zy9QTkdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UE5HSW1hZ2VEZWNvZGVy
OjpzZXRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlBOR0ltYWdlRGVjb2Rlcjo6ZnJhbWVCdWZm
ZXJBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OlBOR0ltYWdlRGVjb2Rlcjo6aGVhZGVyQXZh
aWxhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OlBOR0ltYWdlRGVjb2Rlcjo6cm93QXZhaWxhYmxl
KToKKyAgICAgICAgKFdlYkNvcmU6OlBOR0ltYWdlRGVjb2Rlcjo6cmVhZENodW5rcyk6CisgICAg
ICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXRUJQSW1hZ2VEZWNvZGVyOjpmcmFtZUJ1ZmZlckF0SW5kZXgp
OgorICAgICAgICAoV2ViQ29yZTo6V0VCUEltYWdlRGVjb2Rlcjo6ZGVjb2RlKToKKworMjAxNi0w
Ny0xMiAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAg
ICAgIEdldCByaWQgb2YgdGhlIGNvbG9yIHByb2ZpbGUgZnJvbSBJbWFnZUZyYW1lIGFuZCBJbWFn
ZURlY29kZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1OTY5OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlRnJhbWU6OnNldENvbG9yUHJvZmlsZSk6IERlbGV0ZWQuCisgICAgICAgICog
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnJlYWRDb2xvclByb2ZpbGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6SlBFR0ltYWdlUmVhZGVyOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVh
ZENvbG9yUHJvZmlsZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpQTkdJbWFnZURlY29k
ZXI6OmhlYWRlckF2YWlsYWJsZSk6IERlbGV0ZWQuCisKKzIwMTYtMDctMTIgIFNhaWQgQWJvdS1I
YWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBTcGxpdCB0aGUgcGl4
ZWwgZGF0YSBvZiBJbWFnZUZyYW1lIHRvIGEgc2VwYXJhdGUgY2xhc3MKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTY3OQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgdGhlIHBpeGVsIGRhdGEgbWFu
aXB1bGF0aW9uIHBhcnQgaW4gSW1hZ2VGcmFtZSBpbnRvIGEgc2VwYXJhdGUgY2xhc3MKKyAgICAg
ICAgYW5kIHRoZW4gbWFrZSBpdCBvcHRpb25hbCAoYWxsb2NhdGVkIG9uIGRlbWFuZCkuCisKKyAg
ICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZToKKyAg
ICAgICAgKiBQbGF0Zm9ybUdUSy5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybVdpbkNhaXJvLmNt
YWtlOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBQaXhlbHMuaDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpCaXRtYXBQaXhlbHM6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBQ
aXhlbHM6OkJpdG1hcFBpeGVscyk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBQaXhlbHM6Ondp
ZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFBpeGVsczo6aGVpZ2h0KToKKyAgICAgICAg
KFdlYkNvcmU6OkJpdG1hcFBpeGVsczo6c2V0U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRt
YXBQaXhlbHM6OmF0KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFBpeGVsczo6Y2xlYXIpOgor
ICAgICAgICAoV2ViQ29yZTo6Qml0bWFwUGl4ZWxzOjpjbGVhclJlY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Qml0bWFwUGl4ZWxzOjpyZXBlYXRGaXJzdFJvdyk6CisgICAgICAgIChXZWJDb3JlOjpC
aXRtYXBQaXhlbHM6OnNldFJHQkEpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwUGl4ZWxzOjpv
dmVyUkdCQSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBQaXhlbHM6OmluQm91bmRzKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpt
dWx0aXBseTI1NSk6CisgICAgICAgIChXZWJDb3JlOjpkaXZpZGUyNTUpOgorICAgICAgICAoV2Vi
Q29yZTo6ZGl2aWRlQ2VpbCk6CisgICAgICAgIChXZWJDb3JlOjpwcmVtdWx0aXBsaWVkQ2hhbm5l
bCk6CisgICAgICAgIChXZWJDb3JlOjp1bnByZW11bHRpcGxpZWRDaGFubmVsKToKKyAgICAgICAg
KFdlYkNvcmU6Om1ha2VQcmVtdWx0aXBsaWVkUkdCQSk6CisgICAgICAgIChXZWJDb3JlOjptYWtl
VW5QcmVtdWx0aXBsaWVkUkdCQSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3Iu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lRGF0YS5oOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6OnBpeGVscyk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUZyYW1lRGF0YTo6aGFzUGl4ZWxzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9JbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6b3Bl
cmF0b3I9KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OmNsZWFyUGl4ZWxEYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6Onplcm9GaWxsUGl4ZWxEYXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6Onplcm9GaWxsRnJhbWVSZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlRnJhbWU6OmNvcHlCaXRtYXBEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlRnJhbWU6OnNldFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6Y29weVJv
d05UaW1lcyk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVy
Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjphc05ld05hdGl2ZUltYWdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OnNldFJHQkEpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VGcmFtZTo6Z2V0QWRkcik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpoYXNQ
aXhlbERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6b3ZlclJHQkEpOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6d2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VGcmFtZTo6aGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OmNvcHlSb3dO
VGltZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6Zml4UG9pbnRV
bnNpZ25lZE11bHRpcGx5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6
OmRpdmlkZTI1NSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
Ym1wL0JNUEltYWdlUmVhZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJNUEltYWdlUmVhZGVy
OjpkZWNvZGVCTVApOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0Jp
dG1hcFBpeGVsc0NhaXJvLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdlRGVjb2RlckNhaXJvLmNwcC4KKyAgICAgICAgKFdl
YkNvcmU6OkJpdG1hcFBpeGVsczo6aW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R0lGSW1h
Z2VEZWNvZGVyOjpoYXZlRGVjb2RlZFJvdyk6CisgICAgICAgIChXZWJDb3JlOjpHSUZJbWFnZURl
Y29kZXI6OmZyYW1lQ29tcGxldGUpOgorICAgICAgICAoV2ViQ29yZTo6R0lGSW1hZ2VEZWNvZGVy
Ojppbml0RnJhbWVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pw
ZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXRQaXhlbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpKUEVHSW1hZ2VEZWNvZGVyOjpvdXRwdXRTY2FubGluZXMpOgorICAg
ICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6c2V0UGl4ZWxSR0IpOgorICAgICAgICAoV2ViQ29yZTo6c2V0UGl4
ZWxSR0JBKToKKyAgICAgICAgKFdlYkNvcmU6OnNldFBpeGVsUHJlbXVsdGlwbGllZFJHQkEpOgor
ICAgICAgICAoV2ViQ29yZTo6UE5HSW1hZ2VEZWNvZGVyOjpyb3dBdmFpbGFibGUpOgorICAgICAg
ICAoV2ViQ29yZTo6UE5HSW1hZ2VEZWNvZGVyOjppbml0RnJhbWVCdWZmZXIpOgorICAgICAgICAo
V2ViQ29yZTo6UE5HSW1hZ2VEZWNvZGVyOjpmcmFtZUNvbXBsZXRlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V0VCUEltYWdlRGVjb2Rlcjo6ZGVjb2RlKToKKworMjAxNi0wNy0xMSAgU2FpZCBB
Ym91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUsY29tPgorCisgICAgICAgIFJlbmFtZSBG
cmFtZURhdGEgdG8gSW1hZ2VGcmFtZURhdGEgYW5kIG1vdmUgaXQgdG8gYSBzZXBhcmF0ZSBmaWxl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTU0NDQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIElt
YWdlRnJhbWVEYXRhIHRvIGEgc2VwYXJhdGUgZmlsZSBzbyBpdCBjYW4gYmUgY2FjaGVkIGJ5IElt
YWdlU291cmNlCisgICAgICAgIGFuZCB3aWxsIHN0aWxsIGJlIGNvbnN1bWVkIGJ5IEJpdG1hcElt
YWdlLiBNYWtlIHRoZSBkYXRhIG1lbWJlcnMgb2YgSW1hZ2VGcmFtZURhdGEKKyAgICAgICAgYmUg
cHJpdmF0ZSBhbmQgYWRkIGdldHRlcnMgdG8gcmV0dXJuIHRoZWlyIHZhbHVlcy4KKworICAgICAg
ICBObyBuZXcgdGVzdHMgLS0gQ29kZSByZWZhY3RvcmluZywgbm8gYmVoYXZpb3IgY2hhbmdlLgor
CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZSk6CisgICAg
ICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6aGF2ZUZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAg
ICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkZXN0cm95RGVjb2RlZERhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRlc3Ryb3lEZWNvZGVkRGF0YUlmTmVjZXNzYXJ5KToKKyAg
ICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpjYWNoZUZyYW1lKToKKyAgICAgICAgKFdlYkNv
cmU6OkJpdG1hcEltYWdlOjpkYXRhQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJ
bWFnZTo6ZW5zdXJlRnJhbWVJc0NhY2hlZCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFn
ZTo6ZnJhbWVJbWFnZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmZy
YW1lSXNDb21wbGV0ZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmZy
YW1lRHVyYXRpb25BdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpmcmFt
ZUhhc0FscGhhQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZnJhbWVP
cmllbnRhdGlvbkF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OnNpbmds
ZVBpeGVsU29saWRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6aXNBbG1v
c3RTb2xpZENvbG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5o
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVEYXRhOjpGcmFtZURhdGEpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVEYXRhOjp+RnJhbWVEYXRhKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lRGF0YTo6dXNlZEZyYW1lQnl0ZXMpOiBEZWxldGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlU291cmNlOjpjcmVhdGVGcmFtZURhdGFBdEluZGV4KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZVNvdXJjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ltYWdl
RnJhbWVEYXRhLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6
SW1hZ2VGcmFtZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6On5JbWFn
ZUZyYW1lRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6Y2xlYXJTdWJJ
bWFnZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6OmNsZWFyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlRnJhbWVEYXRhOjpzaW5nbGVQaXhlbFNvbGlkQ29sb3IpOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6OmlzQWxtb3N0U29saWRDb2xvcik6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaW1hZ2VGcmFtZURhdGEuaDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6c3RhdHVzKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlRnJhbWVEYXRhOjppc0NvbXBsZXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVE
YXRhOjpzaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVEYXRhOjpmcmFtZUJ5dGVz
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVEYXRhOjppbWFnZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6b3JpZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VGcmFtZURhdGE6OnN1YnNhbXBsaW5nTGV2ZWwpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VGcmFtZURhdGE6OmR1cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVEYXRh
OjpoYXNBbHBoYSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6aGFzSW1hZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6Omhhc01ldGFkYXRhKToKKworMjAx
Ni0wNi0yNCAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUsY29tPgorCisg
ICAgICAgIEludHJvZHVjZSBQbGF0Zm9ybUltYWdlIGFuZCBtYWtlIGl0IGlzIGEgd3JhcHBlciBm
b3IgTmF0aXZlSW1hZ2VQdHIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE1ODY4NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRoZSBtYWluIHB1cnBvc2Ugb2YgdGhpcyByZWZhY3RvcmluZyBpcyB0byBtb3Zl
IHRoZSBwbGF0Zm9ybSBpbWFnZSBkZXBlbmRlbnQKKyAgICAgICAgY29kZSBmcm9tIEJpdG1hcElt
YWdlIHRvIFBsYXRmb3JtSW1hZ2UuIFBsYXRmb3JtSW1hZ2UgaXMgcmVzcG9uc2libGUgb2YgCisg
ICAgICAgIGRyYXdpbmcgdGhlIGltYWdlIGFuZCBhbnN3ZXJpbmcgTmF0aXZlSW1hZ2VQdHIgcXVl
c3Rpb25zIHdoZW4gYW4gSW1hZ2VEZWNvZGVyCisgICAgICAgIGlzIG5vdCBhdmFpbGFibGUuIEFw
YXJ0IGZyb20gZHJhd2luZyB0aGUgaW1hZ2UsIHRoZSBxdWVyeSBmdW5jdGlvbnMgd2lsbCBiZQor
ICAgICAgICBjYWxsZWQgb25seSB3aGVuIGNvbnN0cnVjdGluZyBhIEZyYW1lRGF0YSBzbyB3ZSB3
aWxsIGtlZXAgZXZlcnl0aGluZyBhcyBhCisgICAgICAgIE5hdGl2ZUltYWdlUHRyLiBCdXQgd2Ug
d2lsbCBjYXN0IHRoZSBOYXRpdmVJbWFnZVB0ciB0byBQbGF0Zm9ybUltYWdlIHdoZW4KKyAgICAg
ICAgYSBwbGF0Zm9ybSBkZXBlbmRlbnQgZnVuY3Rpb24gaXMgbmVlZGVkLgorCisgICAgICAgIE5v
IG5ldyB0ZXN0cyAtLSBDb2RlIHJlZmFjdG9yaW5nLCBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAg
ICAgICAgKiBQbGF0Zm9ybUFwcGxlV2luLmNtYWtlOgorICAgICAgICAqIFBsYXRmb3JtRWZsLmNt
YWtlOgorICAgICAgICAqIFBsYXRmb3JtR1RLLmNtYWtlOgorICAgICAgICAqIFBsYXRmb3JtTWFj
LmNtYWtlOgorICAgICAgICAqIFBsYXRmb3JtV2luQ2Fpcm8uY21ha2U6CisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL29iamMv
RE9NLm1tOgorICAgICAgICAoLVtET01Ob2RlIGdldFByZXZpZXdTbmFwc2hvdEltYWdlOmFuZFJl
Y3RzOl0pOgorICAgICAgICAqIHBhZ2UvbWFjL1RleHRJbmRpY2F0b3JXaW5kb3cubW06CisgICAg
ICAgICgtW1dlYlRleHRJbmRpY2F0b3JWaWV3IGluaXRXaXRoRnJhbWU6dGV4dEluZGljYXRvcjpt
YXJnaW46b2Zmc2V0Ol0pOgorICAgICAgICAoY3JlYXRlQ29udGVudENyb3NzZmFkZUFuaW1hdGlv
bik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6
OkJpdG1hcEltYWdlOjpkZXN0cm95RGVjb2RlZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Qml0
bWFwSW1hZ2U6OmRlc3Ryb3lEZWNvZGVkRGF0YUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYkNv
cmU6OkJpdG1hcEltYWdlOjpkYXRhQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJ
bWFnZTo6ZnJhbWVJbWFnZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6
Om5hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpuYXRpdmVJbWFn
ZU9mU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VGb3JD
dXJyZW50RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmZyYW1lc05hdGl2
ZUltYWdlcyk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6c2luZ2xlUGl4ZWxTb2xp
ZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjppc0FsbW9zdFNvbGlkQ29s
b3IpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXcpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZURh
dGE6OkZyYW1lRGF0YSk6CisgICAgICAgIG1faGFzQWxwaGEgY2FuIGJlIGluaXRpYWxpemVkIHdp
dGggZmFsc2UgYmVjYXVzZSBpdCBpcyBhY2Nlc3NlZCBvbmx5IGluCisgICAgICAgIEJpdG1hcElt
YWdlOjpmcmFtZUhhc0FscGhhQXRJbmRleCgpIGFuZCBpdCBpcyBndWFyZGVkIGJ5IG1faGF2ZU1l
dGFkYXRhLgorICAgICAgICBCb3RoIG1faGF2ZU1ldGFkYXRhIGFuZCBtX2hhc0FscGhhIGFyZSBz
ZXQgaW4gQml0bWFwSW1hZ2UgY29uc3RydWN0b3IKKyAgICAgICAgYW5kIGluIEJpdG1hcEltYWdl
OjpjYWNoZUZyYW1lKCkuCisKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lRGF0YTo6fkZyYW1lRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZURhdGE6OmNsZWFyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6Om5hdGl2ZUlt
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpuYXRpdmVJbWFnZU9mU2l6ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZTo6ZnJhbWVzTmF0aXZlSW1hZ2VzKToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlOjpnZXRDR0ltYWdlUmVmKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlOjpnZXRGaXJzdENHSW1hZ2VSZWZPZlNpemUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2U6OmdldENHSW1hZ2VBcnJheSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvUGxhdGZvcm1JbWFnZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBsYXRm
b3JtSW1hZ2U6OlBsYXRmb3JtSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1JbWFn
ZTo6aXNOaWwpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1JbWFnZTo6Y2dJbWFnZVJlZik6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp1cGRhdGVEaXNwbGF5TW9kZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1JbWFnZUNhaXJvLmNwcDogUmVu
YW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcElt
YWdlQ2Fpcm8uY3BwLgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1JbWFnZTo6Y2xlYXJTdWJJ
bWFnZXMpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1JbWFnZTo6c2l6ZSk6CisgICAgICAg
IChXZWJDb3JlOjpQbGF0Zm9ybUltYWdlOjpoYXNBbHBoYSk6CisgICAgICAgIChXZWJDb3JlOjpQ
bGF0Zm9ybUltYWdlOjpzaW5nbGVQaXhlbFNvbGlkQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1JbWFnZTo6aXNBbG1vc3RTb2xpZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlBs
YXRmb3JtSW1hZ2U6OnN1YnNhbXBsaW5nU2NhbGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZv
cm1JbWFnZTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFwSW1h
Z2VDRy5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVy
bkNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhdHRlcm46OmNyZWF0ZVBsYXRmb3JtUGF0dGVy
bik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGxhdGZvcm1JbWFnZUNHLmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUltYWdlOjpjbGVhclN1YkltYWdlcyk6
CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUltYWdlOjpzaXplKToKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtSW1hZ2U6Omhhc0FscGhhKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
SW1hZ2U6OnNpbmdsZVBpeGVsU29saWRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9y
bUltYWdlOjppc0FsbW9zdFNvbGlkQ29sb3IpOiBNb3ZlZCBmcm9tIFBsdWdpblZpZXcuY3BwIHNp
bmNlIFBsYXRmb3JtSW1hZ2UgaXMgd2hhdCB0aGlzIGZ1bmN0aW9uIGJlbG9uZ3MgdG8uCisgICAg
ICAgIChXZWJDb3JlOjpQbGF0Zm9ybUltYWdlOjpzdWJzYW1wbGluZ1NjYWxlKTogUmV0dXJucyB0
aGUgc3ViLXNhbXBsaW5nIHNjYWxlIGJhc2VkIG9uIHRoZSBjb250ZXh0IHNjYWxpbmcuCisgICAg
ICAgIChXZWJDb3JlOjpQbGF0Zm9ybUltYWdlOjpkcmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9UZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hLm1tOgorICAgICAgICAo
VGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYTo6dXBkYXRlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFn
ZTo6Z2V0VElGRlJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpN
b2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYzo6dXBkYXRlUGxhdGZvcm1MYXllcik6CisgICAgICAg
ICogcGxhdGZvcm0vd2luL0RyYWdJbWFnZUNHV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNy
ZWF0ZURyYWdJbWFnZUZyb21JbWFnZSk6CisKIDIwMTYtMDctMTEgIFNhbSBXZWluaWcgIDxzYW1A
d2Via2l0Lm9yZz4KIAogICAgICAgICBTcGVlY2ggU3ludGhlc2lzOiBnZXR0aW5nIGxpc3Qgb2Yg
dm9pY2VzIG5vIGxvbmdlciB3b3JrcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IGMxYmMwYmJkZTM2MTI1
YzQ2MmJmNDgxZGRhZDVkZDJmODI3ZDUyMzkuLjE4ZDFlYmViZWU5MjBiMmYyOWVmMzI4NzdkZWQy
ZTFlY2ZmOTdkNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNi0wNy0x
MSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUsY29tPgorCisgICAgICAg
IEludHJvZHVjZSBQbGF0Zm9ybUltYWdlIGFuZCBtYWtlIGl0IGlzIGEgd3JhcHBlciBmb3IgTmF0
aXZlSW1hZ2VQdHIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1ODY4NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogTWlzYy9XZWJDYWNoZS5tbToKKyAgICAgICAgKCtbV2ViQ2FjaGUgaW1hZ2VGb3JVUkw6
XSk6CisKIDIwMTYtMDctMTEgIEVucmljYSBDYXN1Y2NpICA8ZW5yaWNhQGFwcGxlLmNvbT4KIAog
ICAgICAgICBBZGQgc3ludGhldGljIGNsaWNrIG9yaWdpbiB0byBXS05hdmlnYXRpb25BY3Rpb24u
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKaW5kZXggYjQ3ZTJjZWE3OWE4ZGQ3YzUzMzVkMmNkNThlNzk2MTUzMzVjNTAyYy4u
ZjFmMTY3MjU4NGMwZWU4MTg1OGE3ZTk2NTUzYWNkOWNkMGFjNmZlZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDI1IEBACisyMDE2LTA3LTExICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3
YUBhcHBsZSxjb20+CisKKyAgICAgICAgSW50cm9kdWNlIFBsYXRmb3JtSW1hZ2UgYW5kIG1ha2Ug
aXQgaXMgYSB3cmFwcGVyIGZvciBOYXRpdmVJbWFnZVB0cgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4Njg0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvY2cvV0tJY29uRGF0
YWJhc2VDRy5jcHA6CisgICAgICAgIChXS0ljb25EYXRhYmFzZVRyeUdldENHSW1hZ2VGb3JVUkwp
OgorICAgICAgICAoV0tJY29uRGF0YWJhc2VUcnlDb3B5Q0dJbWFnZUFycmF5Rm9yVVJMKToKKyAg
ICAgICAgSXQgd2FzIHRoZSBvbmx5IHBsYWNlIGluIHRoZSBjb2RlIHdoaWNoIHVzZXMgQml0bWFw
SW1hZ2U6OmdldENHSW1hZ2VBcnJheSgpLgorICAgICAgICBDYWxsIEJpdG1hcEltYWdlOjpmcmFt
ZXNOYXRpdmVJbWFnZXMoKSBpbnN0ZWFkIGFuZCBmb3JtIHRoZSByZXR1cm5lZAorICAgICAgICBW
ZWN0b3I8TmF0aXZlSW1hZ2VQdHI+IGJ1aWxkIHRoZSBDRkFycmF5UmVmLgorICAgICAgICAKKyAg
ICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAg
ICAgKC1bV0tDb250ZW50VmlldyBfcHJlc2VudGF0aW9uU25hcHNob3RGb3JQcmV2aWV3SXRlbUNv
bnRyb2xsZXI6XSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpwbHVnaW5TbmFwc2hvdFRpbWVyRmlyZWQp
OgorICAgICAgICAKKyAgICAgICAgKFdlYktpdDo6aXNBbG1vc3RTb2xpZENvbG9yKTogRGVsZXRl
ZC4KKyAgICAgICAgTW92ZSB0aGUgc3RhdGljIGZ1bmN0aW9uIGlzQWxtb3N0U29saWRDb2xvciB0
byBQbGF0Zm9ybUltYWdlOjppc0FsbW9zdFNvbGlkQ29sb3IoKS4KKwogMjAxNi0wNy0xMSAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFtXSzJdW2lPU10gSW50ZXJt
aXR0ZW50IGNyYXNoIGluIFtVSUFwcGxpY2F0aW9uIGJlZ2luQmFja2dyb3VuZFRhc2tXaXRoTmFt
ZV0gZXhwaXJhdGlvbiBoYW5kbGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGU3OGIwNDJiMTA0
MDFlMWY0ZWUzYTJhYjFhMDUyYzIxOGMzYTExZTMuLjIyNmVjOWI4NGU3MjJmZmYzZTJmMDRkY2U3
ZGI3MGUzZGQ0YjgzYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0yMjI2LDYgKzIyMjYsNyBA
QCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSVNPVlRUQ3VlLmNw
cAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQnVmZmVyLmNwcAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVEYXRhLmNw
cAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlT3JpZW50YXRpb24uY3BwCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW50UG9p
bnQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUFwcGxlV2luLmNtYWtl
IGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1BcHBsZVdpbi5jbWFrZQppbmRleCA1ZmY5OTFmZjdk
YTMwOGJiOTE4MmVjZTNiZjEyMTczMGE1NDhkMjg3Li5iYWUzMWVhZjg2ZTdmY2E5MDU4MjUwOTJh
YTM4YTc4YzExZTQyMjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUFwcGxl
V2luLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQXBwbGVXaW4uY21ha2UKQEAg
LTU1LDcgKzU1LDYgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvY2Evd2luL1dlYlRpbGVkQmFja2luZ0xheWVyV2luLmNwcAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2NhL3dpbi9XS0NBQ0ZWaWV3TGF5ZXJUcmVlSG9zdC5jcHAKIAotICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvQ29sb3JDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9GbG9hdFBvaW50Q0cuY3Bw
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvRmxvYXRSZWN0Q0cuY3BwCkBAIC03NSw2ICs3NCw3
IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L1BERkRvY3VtZW50SW1hZ2UuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0aENHLmNw
cAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAKKyAgICBwbGF0Zm9ybS9n
cmFwaGljcy9jZy9QbGF0Zm9ybUltYWdlQ0cuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
U3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9UcmFu
c2Zvcm1hdGlvbk1hdHJpeENHLmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0
Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IDUx
NDUwNGU2ZWMyNWFhNWU0M2I5OTM5OGQ1ZTM1Y2VlZWE3NjZhYTQuLjY0YWUxNzEwODlkY2JmMGNk
NDViNzBhOWI4ZjcwZWZhOWZmZGVkYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRm
b3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCkBAIC0x
MjIsNyArMTIyLDYgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvUGxhdGZvcm1EaXNwbGF5LmNwcAogCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vQmFja2luZ1N0b3JlQmFja2VuZENhaXJvSW1wbC5jcHAKLSAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0NhaXJvVXRpbGl0aWVzLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWly
by5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fpcm9IYXJmYnV6ek5HLmNw
cApAQCAtMTM0LDYgKzEzMyw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BhdGhDYWlyby5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9QYXR0ZXJuQ2Fpcm8uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxh
dGZvcm1Db250ZXh0Q2Fpcm8uY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZv
cm1JbWFnZUNhaXJvLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtUGF0
aENhaXJvLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1JlZlB0ckNhaXJvLmNwcAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1RyYW5zZm9ybWF0aW9uTWF0cml4Q2Fpcm8uY3Bw
CkBAIC0xNzksOSArMTc5LDkgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MveDExL1BsYXRmb3JtRGlzcGxheVgxMS5jcHAKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy94MTEvWFVuaXF1ZVJlc291cmNlLmNwcAogCi0gICAgcGxhdGZvcm0vaW1hZ2UtZW5j
b2RlcnMvSlBFR0ltYWdlRW5jb2Rlci5jcHAKKyAgICBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9j
YWlyby9CaXRtYXBQaXhlbHNDYWlyby5jcHAKIAotICAgIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2NhaXJvL0ltYWdlRGVjb2RlckNhaXJvLmNwcAorICAgIHBsYXRmb3JtL2ltYWdlLWVuY29kZXJz
L0pQRUdJbWFnZUVuY29kZXIuY3BwCiAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2VmbC9OZXR3b3Jr
U3RhdGVOb3RpZmllckVmbC5jcHAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZv
cm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCA2NDVh
ZGQxY2UzODg4OGIwNGQ0YTJkODlhZGEwYTdjNmRlMTk5ODZiLi5kMzFmNTcwNmE2OTU5YjIzMWI1
YmZiMjJmMDdkMTg0M2FlODYxYTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9y
bUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtMTAx
LDcgKzEwMSw2IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vQmFja2luZ1N0b3JlQmFja2VuZENhaXJvSW1wbC5jcHAKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9CYWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm9YMTEuY3BwCi0gICAg
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5jcHAKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9DYWlyb1V0aWxpdGllcy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9GbG9hdFJlY3RDYWlyby5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9G
b250Q2Fpcm8uY3BwCkBAIC0xMTUsNiArMTE0LDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VS
Q0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0aENhaXJvLmNwcAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL1BhdHRlcm5DYWlyby5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9QbGF0Zm9ybUNvbnRleHRDYWlyby5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9QbGF0Zm9ybUltYWdlQ2Fpcm8uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
UGxhdGZvcm1QYXRoQ2Fpcm8uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUmVmUHRy
Q2Fpcm8uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vVHJhbnNmb3JtYXRpb25NYXRy
aXhDYWlyby5jcHAKQEAgLTE0OSw3ICsxNDksNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJD
RVMKICAgICBwbGF0Zm9ybS9ndGsvVGVtcG9yYXJ5TGlua1N0dWJzLmNwcAogICAgIHBsYXRmb3Jt
L2d0ay9Vc2VyQWdlbnRHdGsuY3BwCiAKLSAgICBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWly
by9JbWFnZURlY29kZXJDYWlyby5jcHAKKyAgICBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWly
by9CaXRtYXBQaXhlbHNDYWlyby5jcHAKIAogICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL2d0ay9T
RFBQcm9jZXNzb3JTY3JpcHRSZXNvdXJjZUd0ay5jcHAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvUGxhdGZvcm1NYWMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFr
ZQppbmRleCA5ZjZmNDk2YjZjYzRlZjZlNGI3NGQ4NGFjMGFhOWRlYTU1YTAyMzdiLi40ZGRlZDMw
ODhmNGYzOTZmZWY0NDRlN2VlNjVjNjQxMDY1OGY1ODQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybU1hYy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5j
bWFrZQpAQCAtMzk3LDcgKzM5Nyw2IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAg
IHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1dlYlN5c3RlbUJhY2tkcm9wTGF5ZXIubW0KICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9XZWJUaWxlZEJhY2tpbmdMYXllci5tbQogCi0g
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFwSW1hZ2VDRy5jcHAKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9jZy9Db2xvckNHLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0Zsb2F0UG9p
bnRDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9GbG9hdFJlY3RDRy5jcHAKQEAgLTQx
Nyw2ICs0MTYsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L1BhdGhDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwCisgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGxhdGZvcm1JbWFnZUNHLmNwcAogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL1N1YmltYWdlQ2FjaGVXaXRoVGltZXIuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvVHJhbnNmb3JtYXRpb25NYXRyaXhDRy5jcHAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvUGxhdGZvcm1XaW5DYWlyby5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV2lu
Q2Fpcm8uY21ha2UKaW5kZXggMmM1NTNiMDU1MWRhZDY5YWExOTlkOTYwZjU1MjM0M2Q5MjBmMDdi
My4uMzQyYWE5MjczMmZkOGY5MmU4NWNmYTYyNmQ1NTU3MGVmNjZiNmE2OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW5DYWlyby5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybVdpbkNhaXJvLmNtYWtlCkBAIC0yMSw3ICsyMSw2IEBAIGxpc3QoQVBQRU5EIFdl
YkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4dC5jcHAKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybURpc3BsYXkuY3BwCiAKLSAgICBwbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0NhaXJvVXRpbGl0aWVzLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0Zsb2F0
UmVjdENhaXJvLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyby5jcHAK
QEAgLTM0LDYgKzMzLDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vUGF0aENhaXJvLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL1BhdHRlcm5DYWlyby5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9y
bUNvbnRleHRDYWlyby5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUlt
YWdlQ2Fpcm8uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1QYXRoQ2Fp
cm8uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUmVmUHRyQ2Fpcm8uY3BwCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vVHJhbnNmb3JtYXRpb25NYXRyaXhDYWlyby5jcHAKQEAg
LTQ2LDcgKzQ2LDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5jcHAKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy93aW4vU2ltcGxlRm9udERhdGFDYWlyb1dpbi5jcHAKIAotICAgIHBs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdlRGVjb2RlckNhaXJvLmNwcAorICAgIHBs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0JpdG1hcFBpeGVsc0NhaXJvLmNwcAogCiAgICAg
cGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb25TdHViLmNwcAogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYzEx
YmM0N2U1Y2FkNjMwYTM2NTdjZGUxYWQ5ZjdiNzZhMGE1NWM2Ni4uZmYyYTQ5OGJhOTZiODFkYTAz
ZjgxYTMwMWE4NWJlMzc0ZDBlYzY1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTQ4NCw3ICsxNDg0LDcgQEAKIAkJMzc1Q0Qy
MzIxMTlENDNDODAwQTJBODU5IC8qIEh5cGhlbmF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzVDRDIzMTExOUQ0M0M4MDBBMkE4NTkgLyogSHlw
aGVuYXRpb24uaCAqLzsgfTsKIAkJMzc2RENDRTExM0I0Rjk2NjAwMkVCRUZDIC8qIFRleHRSdW4u
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzc2REND
RTAxM0I0Rjk2NjAwMkVCRUZDIC8qIFRleHRSdW4uY3BwICovOyB9OwogCQkzNzc0QUJBNTBGQTIx
RUI0MDBBRDdERTkgLyogT3ZlcmxhcFRlc3RSZXF1ZXN0Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzc0QUJBMzBGQTIxRUI0MDBBRDdERTkg
LyogT3ZlcmxhcFRlc3RSZXF1ZXN0Q2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJMzc3QTNBOTAxNUVGQ0U5QjAwNTlGNUM3IC8qIEJpdG1h
cEltYWdlQ0cuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMzc3QTNBOEYxNUVGQ0U5QTAwNTlGNUM3IC8qIEJpdG1hcEltYWdlQ0cuY3BwICovOyB9Owor
CQkzNzdBM0E5MDE1RUZDRTlCMDA1OUY1QzcgLyogUGxhdGZvcm1JbWFnZUNHLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3N0EzQThGMTVFRkNFOUEw
MDU5RjVDNyAvKiBQbGF0Zm9ybUltYWdlQ0cuY3BwICovOyB9OwogCQkzNzkxOUMyMzBCN0QxODg2
MDBBNTY5OTggLyogUG9zaXRpb25JdGVyYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzkxOUMyMTBCN0QxODg2MDBBNTY5OTggLyogUG9zaXRp
b25JdGVyYXRvci5jcHAgKi87IH07CiAJCTM3OTE5QzI0MEI3RDE4ODYwMEE1Njk5OCAvKiBQb3Np
dGlvbkl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAzNzkxOUMyMjBCN0QxODg2MDBBNTY5OTggLyogUG9zaXRpb25JdGVyYXRvci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKCk7IH07IH07CiAJCTM3OTI5MTdBMTk4NUVGMzkwMEY0
QjY2MSAvKiBDcmVkZW50aWFsQmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMzc5MjkxNzgxOTg1RUYzOTAwRjRCNjYxIC8qIENyZWRlbnRpYWxCYXNl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTIz
MjUsMTAgKzIzMjUsMTQgQEAKIAkJNTNFRDNGREYxNjdBODhFNzAwNjc2MkU2IC8qIEpTSW50ZXJu
YWxTZXR0aW5nc0dlbmVyYXRlZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTNFRDNGREQxNjdBODhFNzAwNjc2MkU2IC8qIEpTSW50ZXJuYWxTZXR0aW5n
c0dlbmVyYXRlZC5oICovOyB9OwogCQk1M0VGNzY2QjE2NTMwQTYxMDA0Q0JFNDkgLyogU2V0dGlu
Z3NNYWNyb3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUzRUY3NjZBMTY1MzBBNjEwMDRDQkU0OSAvKiBTZXR0aW5nc01hY3Jvcy5oICovOyB9OwogCQk1
M0VGNzY2QzE2NTMxOTk0MDA0Q0JFNDkgLyogU2V0dGluZ3NNYWNyb3MuaCBpbiBDb3B5IEdlbmVy
YXRlZCBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRUY3NjZB
MTY1MzBBNjEwMDRDQkU0OSAvKiBTZXR0aW5nc01hY3Jvcy5oICovOyB9OworCQk1NTA0RTRDQjFE
MzU1N0IyMDBGRTUwODggLyogQml0bWFwUGl4ZWxzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTA0RTRDQTFEMzU1MzJEMDBGRTUwODggLyogQml0bWFw
UGl4ZWxzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNTUwQTBCQzkwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTUwQTBCQzcwODVGNjAzOTAw
NzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuY3BwICovOyB9OwogCQk1NTBBMEJDQTA4NUY2MDM5MDA3
MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTUwQTBCQzgwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1NTVC
ODdFQzFDQUFGMEFCMDAzNDk0MjUgLyogSW1hZ2VEZWNvZGVyQ0cuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTU1Qjg3RUExQ0FBRjBBQjAwMzQ5NDI1
IC8qIEltYWdlRGVjb2RlckNHLmNwcCAqLzsgfTsKIAkJNTU1Qjg3RUQxQ0FBRjBBQjAwMzQ5NDI1
IC8qIEltYWdlRGVjb2RlckNHLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1NTVCODdFQjFDQUFGMEFCMDAzNDk0MjUgLyogSW1hZ2VEZWNvZGVyQ0cuaCAq
LzsgfTsKKwkJNTU3NEYwODcxRDAyNzkwOTAwQjlGMTRDIC8qIFBsYXRmb3JtSW1hZ2UuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1NzRGMDg1MUQwMjc0
NDQwMEI5RjE0QyAvKiBQbGF0Zm9ybUltYWdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTVDQkE2QTExRDFERjJFMTAwNDUxODYwIC8qIEltYWdl
RnJhbWVEYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDU1Q0JBNjlGMUQxREYyRTEwMDQ1MTg2MCAvKiBJbWFnZUZyYW1lRGF0YS5jcHAgKi87IH07
CisJCTU1Q0JBNkEyMUQxREYyRTEwMDQ1MTg2MCAvKiBJbWFnZUZyYW1lRGF0YS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTVDQkE2QTAxRDFERjJFMTAw
NDUxODYwIC8qIEltYWdlRnJhbWVEYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTcyQTdGMjExQzZFNTcxOTAwOUM2MTQ5IC8qIFNpbXVsYXRl
ZENsaWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
NzJBN0YyMDFDNkU1NzE5MDA5QzYxNDkgLyogU2ltdWxhdGVkQ2xpY2suaCAqLzsgfTsKIAkJNTcy
QTdGMjMxQzZFNUE2NjAwOUM2MTQ5IC8qIFNpbXVsYXRlZENsaWNrLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MkE3RjIyMUM2RTVBNjYwMDlDNjE0
OSAvKiBTaW11bGF0ZWRDbGljay5jcHAgKi87IH07CiAJCTU3RUY1RTYwMUQyMEM4MzkwMDE3MUU2
MCAvKiBUZXh0Q29kZWNSZXBsYWNlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTdFRjVFNUYxRDIwQzgzOTAwMTcxRTYwIC8qIFRleHRDb2RlY1Jl
cGxhY2VtZW50LmggKi87IH07CkBAIC05MDYxLDcgKzkwNjUsNyBAQAogCQkzNzZEQ0NFMDEzQjRG
OTY2MDAyRUJFRkMgLyogVGV4dFJ1bi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBUZXh0UnVuLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzc3MkIw
OTUxNjUzNTg1NjAwMEE0OUNBIC8qIFBvcHVwT3BlbmluZ09ic2VydmVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBvcHVwT3BlbmluZ09ic2VydmVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTM3NzRBQkEzMEZBMjFFQjQwMEFEN0RFOSAvKiBPdmVybGFwVGVz
dFJlcXVlc3RDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT3Zlcmxh
cFRlc3RSZXF1ZXN0Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTM3N0Ez
QThGMTVFRkNFOUEwMDU5RjVDNyAvKiBCaXRtYXBJbWFnZUNHLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJpdG1hcEltYWdlQ0cuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkzNzdBM0E4RjE1RUZDRTlBMDA1OUY1QzcgLyogUGxhdGZvcm1JbWFnZUNH
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBsYXRmb3JtSW1hZ2VD
Ry5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3OTE5QzIxMEI3RDE4ODYwMEE1
Njk5OCAvKiBQb3NpdGlvbkl0ZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBQb3NpdGlvbkl0ZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMzc5MTlDMjIwQjdEMTg4NjAwQTU2OTk4IC8qIFBvc2l0aW9uSXRlcmF0b3IuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBvc2l0aW9uSXRlcmF0b3IuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzc5MjkxNzgxOTg1RUYzOTAwRjRCNjYxIC8qIENyZWRl
bnRpYWxCYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyZWRlbnRpYWxC
YXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05OTg5LDEwICs5OTkzLDE0IEBA
CiAJCTUzRUQzRkRDMTY3QTg4RTcwMDY3NjJFNiAvKiBKU0ludGVybmFsU2V0dGluZ3NHZW5lcmF0
ZWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNJbnRlcm5hbFNl
dHRpbmdzR2VuZXJhdGVkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTNFRDNG
REQxNjdBODhFNzAwNjc2MkU2IC8qIEpTSW50ZXJuYWxTZXR0aW5nc0dlbmVyYXRlZC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0ludGVybmFsU2V0dGluZ3NHZW5lcmF0ZWQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTNFRjc2NkExNjUzMEE2MTAwNENCRTQ5
IC8qIFNldHRpbmdzTWFjcm9zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNl
dHRpbmdzTWFjcm9zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU1MDRFNENBMUQz
NTUzMkQwMEZFNTA4OCAvKiBCaXRtYXBQaXhlbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQml0bWFwUGl4
ZWxzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU1MEEwQkM3MDg1RjYwMzkwMDcz
NTNENiAvKiBRdWFsaWZpZWROYW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFF1YWxpZmllZE5hbWUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJNTUwQTBCQzgwODVG
NjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUXVhbGlmaWVkTmFtZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJNTU1Qjg3RUExQ0FB
RjBBQjAwMzQ5NDI1IC8qIEltYWdlRGVjb2RlckNHLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEltYWdlRGVjb2RlckNHLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTU1Qjg3RUIxQ0FBRjBBQjAwMzQ5NDI1IC8qIEltYWdlRGVjb2RlckNHLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlRGVjb2RlckNHLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTU1NzRGMDg1MUQwMjc0NDQwMEI5RjE0QyAvKiBQbGF0Zm9y
bUltYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtSW1hZ2UuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNTVDQkE2OUYxRDFERjJFMTAwNDUxODYwIC8qIEltYWdlRnJhbWVEYXRh
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdlRnJhbWVEYXRh
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTVDQkE2QTAxRDFERjJFMTAwNDUx
ODYwIC8qIEltYWdlRnJhbWVEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEltYWdlRnJhbWVEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU1RDQwOEY3
MUE3QzYzMTgwMEM3ODQ1MCAvKiBTVkdJbWFnZUNsaWVudHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU1ZHSW1hZ2VDbGllbnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTU3MkE3RjIwMUM2RTU3MTkwMDlDNjE0OSAvKiBTaW11bGF0ZWRDbGljay5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaW11bGF0ZWRDbGljay5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1NzJBN0YyMjFDNkU1QTY2MDA5QzYxNDkgLyogU2ltdWxhdGVk
Q2xpY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2ltdWxhdGVk
Q2xpY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjIwMjQsNyArMjIwMzIs
NiBAQAogCQlCMjc1MzUyOTBCMDUzODE0MDAyQ0U2NEYgLyogY2cgKi8gPSB7CiAJCQlpc2EgPSBQ
QlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTM3N0EzQThGMTVFRkNFOUEwMDU5RjVDNyAv
KiBCaXRtYXBJbWFnZUNHLmNwcCAqLywKIAkJCQkwRkNGMzMyMzBGMkI5NzE1MDA0QjY3OTUgLyog
Q29sb3JDRy5jcHAgKi8sCiAJCQkJQjI3NTM1MkIwQjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0UG9p
bnRDRy5jcHAgKi8sCiAJCQkJQjI3NTM1MkMwQjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0UmVjdENH
LmNwcCAqLywKQEAgLTIyMDUxLDYgKzIyMDU4LDcgQEAKIAkJCQlBODBBMzhGRDBFNTBDQzgyMDBB
MjVFQkMgLyogUGF0dGVybkNHLmNwcCAqLywKIAkJCQlCMjc1MzUzNjBCMDUzODE0MDAyQ0U2NEYg
LyogUERGRG9jdW1lbnRJbWFnZS5jcHAgKi8sCiAJCQkJQjI3NTM1MzcwQjA1MzgxNDAwMkNFNjRG
IC8qIFBERkRvY3VtZW50SW1hZ2UuaCAqLywKKwkJCQkzNzdBM0E4RjE1RUZDRTlBMDA1OUY1Qzcg
LyogUGxhdGZvcm1JbWFnZUNHLmNwcCAqLywKIAkJCQkxRkM0MEZCODE2NTVDNTkxMDA0MEYyOUUg
LyogU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5jcHAgKi8sCiAJCQkJMUZDNDBGQjcxNjU1QzU5MTAw
NDBGMjlFIC8qIFN1YmltYWdlQ2FjaGVXaXRoVGltZXIuaCAqLywKIAkJCQlCMjc1MzUyQTBCMDUz
ODE0MDAyQ0U2NEYgLyogVHJhbnNmb3JtYXRpb25NYXRyaXhDRy5jcHAgKi8sCkBAIC0yMjExOCw2
ICsyMjEyNiw3IEBACiAJCQkJQkVGMjlFRTkxNzE1REQwOTAwQzRCNEM5IC8qIEF1ZGlvVHJhY2tQ
cml2YXRlLmggKi8sCiAJCQkJQTg5OTQzMjcwQjQyMzM4NzAwRDdDODAyIC8qIEJpdG1hcEltYWdl
LmNwcCAqLywKIAkJCQlBODk5NDMyNjBCNDIzMzg3MDBEN0M4MDIgLyogQml0bWFwSW1hZ2UuaCAq
LywKKwkJCQk1NTA0RTRDQTFEMzU1MzJEMDBGRTUwODggLyogQml0bWFwUGl4ZWxzLmggKi8sCiAJ
CQkJQ0RERTAyRTkxOEIzREZDNzAwQ0Y3RkYxIC8qIENETVNlc3Npb24uaCAqLywKIAkJCQlCMjc1
MzUzODBCMDUzODE0MDAyQ0U2NEYgLyogQ29sb3IuY3BwICovLAogCQkJCUIyNzUzNTM5MEIwNTM4
MTQwMDJDRTY0RiAvKiBDb2xvci5oICovLApAQCAtMjIyMDIsNiArMjIyMTEsOCBAQAogCQkJCTQz
RDI1OTc2MTNDODE2RjQwMDYwODU1OSAvKiBJbWFnZUJ1ZmZlci5jcHAgKi8sCiAJCQkJQjJBMTBC
OTEwQjM4MThCRDAwMDk5QUE0IC8qIEltYWdlQnVmZmVyLmggKi8sCiAJCQkJMjJCRDlGN0QxMzUz
NjI1QzAwOUJEMTAyIC8qIEltYWdlQnVmZmVyRGF0YS5oICovLAorCQkJCTU1Q0JBNjlGMUQxREYy
RTEwMDQ1MTg2MCAvKiBJbWFnZUZyYW1lRGF0YS5jcHAgKi8sCisJCQkJNTVDQkE2QTAxRDFERjJF
MTAwNDUxODYwIC8qIEltYWdlRnJhbWVEYXRhLmggKi8sCiAJCQkJQkM3RjQ0QTcwQjlFMzI0RTAw
QTlEMDgxIC8qIEltYWdlT2JzZXJ2ZXIuaCAqLywKIAkJCQlBODc0OEQ3NDEyQ0MzRjg5MDAxRkJB
NDEgLyogSW1hZ2VPcmllbnRhdGlvbi5jcHAgKi8sCiAJCQkJQTg3NDhENjYxMkNDMzc2MzAwMUZC
QTQxIC8qIEltYWdlT3JpZW50YXRpb24uaCAqLywKQEAgLTIyMjUxLDYgKzIyMjYyLDcgQEAKIAkJ
CQkyRDUwMDJGQTFCNTZENzk5MDAyMEFBRjcgLyogUGF0aFV0aWxpdGllcy5oICovLAogCQkJCUE4
RkE2RTVDMEU0Q0ZERUQwMEQ1Q0Y0OSAvKiBQYXR0ZXJuLmNwcCAqLywKIAkJCQlBOEZBNkU1QjBF
NENGREVEMDBENUNGNDkgLyogUGF0dGVybi5oICovLAorCQkJCTU1NzRGMDg1MUQwMjc0NDQwMEI5
RjE0QyAvKiBQbGF0Zm9ybUltYWdlLmggKi8sCiAJCQkJMDU2MkY5NjAxNTczRjg4RjAwMzFDQTE2
IC8qIFBsYXRmb3JtTGF5ZXIuaCAqLywKIAkJCQlDRUVGQ0Q3QjE5REIzM0RDMDAzODc2RDcgLyog
UGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmggKi8sCiAJCQkJMDcyODQ3RTIxNkVCQzVCMDAw
NDNDRkE0IC8qIFBsYXRmb3JtVGV4dFRyYWNrLmggKi8sCkBAIC0yNjAxOCw2ICsyNjAzMCw3IEBA
CiAJCQkJODVFNzExQjkwQUM1RDUzNTAwNTMyNzBGIC8qIERPTUhUTUxNYXBFbGVtZW50SW50ZXJu
YWwuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNTE1NzlGMEMwM0JCRDMwMDhCQjBFRSAvKiBET01I
VE1MTWFycXVlZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNTE1NkVBMEMwM0I3NDEw
MDhCQjBFRSAvKiBET01IVE1MTWFycXVlZUVsZW1lbnRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJNTU3NEYwODcxRDAyNzkwOTAwQjlGMTRDIC8qIFBsYXRmb3JtSW1hZ2UuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTJERUM2NjU1MUM4MkQwNDEwMDk5ODQ2QSAvKiBET01IVE1MTWVkaWFFbGVt
ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkyREVDNjY1MTFDODJEMDE2MDA5OTg0NkEgLyogRE9N
SFRNTE1lZGlhRWxlbWVudEludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NUJBNEQxMzBB
QTY4ODY4MDA4ODA1MkQgLyogRE9NSFRNTE1lbnVFbGVtZW50LmggaW4gSGVhZGVycyAqLywKQEAg
LTI2NDU5LDYgKzI2NDcyLDcgQEAKIAkJCQlEMzU5RDc4QTEyOUNBMjcxMDAwNkU1RDIgLyogSFRN
TERldGFpbHNFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEVBNzlGQTBBMTkxNkRGMDBB
OEVGNUYgLyogSFRNTERpcmVjdG9yeUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4RUE3
Q0I3MEExOTJCOUMwMEE4RUY1RiAvKiBIVE1MRGl2RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJNTVDQkE2QTIxRDFERjJFMTAwNDUxODYwIC8qIEltYWdlRnJhbWVEYXRhLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBOEVBNzlGNzBBMTkxNkRGMDBBOEVGNUYgLyogSFRNTERMaXN0RWxlbWVudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOTNGMTk4RTUwODI0NUU1OTAwMUU5QUJDIC8qIEhUTUxEb2N1
bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc3QjM4NjcxMjI4ODNFOTAwQjgxRkY4IC8qIEhU
TUxEb2N1bWVudFBhcnNlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yODM1OSw2ICsyODM3Myw3IEBA
CiAJCQkJQjIyMjc5OTMwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyNzk5NTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHQW5p
bWF0ZVRyYW5zZm9ybUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3OTk4MEQwMEJG
MjIwMDcxQjc4MiAvKiBTVkdBbmltYXRpb25FbGVtZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk1
NTA0RTRDQjFEMzU1N0IyMDBGRTUwODggLyogQml0bWFwUGl4ZWxzLmggaW4gSGVhZGVycyAqLywK
IAkJCQk0MzlEMzM0NTEzQTY5MTFDMDBDMjBGNEYgLyogU1ZHQW5pbWF0b3JGYWN0b3J5LmggaW4g
SGVhZGVycyAqLywKIAkJCQkwOEZCM0Y4NDEzQkM3NTRDMDA5OUZDMTggLyogU1ZHQXR0cmlidXRl
VG9Qcm9wZXJ0eU1hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5OUMwRDAwQkYyMjAwNzFC
NzgyIC8qIFNWR0NpcmNsZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjk0MTEsNyArMjk0
MjYsNyBAQAogCQkJCUZEQzU0RjA0MTM5OUIwREEwMDhEOTExNyAvKiBCaXF1YWRGaWx0ZXJOb2Rl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZEMzE2MDI2MTJCMDI2NzYwMEMxQTM1OSAvKiBCaXF1
YWRQcm9jZXNzb3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTg5OTQzMjkwQjQyMzM4ODAwRDdD
ODAyIC8qIEJpdG1hcEltYWdlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTM3N0EzQTkwMTVFRkNF
OUIwMDU5RjVDNyAvKiBCaXRtYXBJbWFnZUNHLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTM3N0Ez
QTkwMTVFRkNFOUIwMDU5RjVDNyAvKiBQbGF0Zm9ybUltYWdlQ0cuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJOTc2RDZDNzgxMjJCOEEzRDAwMUZEMUY3IC8qIEJsb2IuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMkVERUYxRjMxMjFCMEVGQzAwNzI2REIyIC8qIEJsb2JEYXRhLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUUxRDMxQ0RDMTkxOTYwMjAwMDEwMDVBMyAvKiBCbG9iRGF0YUZpbGVSZWZlcmVu
Y2UuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yOTc3NCw2ICsyOTc4OSw3IEBACiAJCQkJMkUyRDk5
RTgxMEUyQkMxQzAwNDk2MzM3IC8qIERPTUJsb2IubW0gaW4gU291cmNlcyAqLywKIAkJCQk4NTA4
OUNEODBBOThDNDI4MDBBMjc1QUEgLyogRE9NQ0RBVEFTZWN0aW9uLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJODVBQ0E5ODcwQTlCNTIwMzAwNjcxRTkwIC8qIERPTUNoYXJhY3RlckRhdGEubW0gaW4g
U291cmNlcyAqLywKKwkJCQk1NUNCQTZBMTFEMURGMkUxMDA0NTE4NjAgLyogSW1hZ2VGcmFtZURh
dGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODUwODlDREEwQTk4QzQyODAwQTI3NUFBIC8qIERP
TUNvbW1lbnQubW0gaW4gU291cmNlcyAqLywKIAkJCQk5NzhEMDdCRTE0NUEwRjZDMDA5NjkwOEQg
LyogRE9NQ29yZUV4Y2VwdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NThDMzhBNjBBQThG
MjA0MDBCMTg3QTQgLyogRE9NQ291bnRlci5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET00ubW0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9vYmpjL0RPTS5tbQppbmRleCA0MDExZWEzZmQ4YzA0Njk3NGM1NWQ0OGUzOTZmMWI4M2I4
MWYzMzVkLi5hNWFjNGYwNWFlMzM5YThkNjQ3MDZjMTBmYzBmN2FmNDA0MjU2MjNjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTS5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9vYmpjL0RPTS5tbQpAQCAtNjA2LDcgKzYwNiw3IEBAIC0gKHZvaWQpZ2V0
UHJldmlld1NuYXBzaG90SW1hZ2U6KENHSW1hZ2VSZWYqKWNnSW1hZ2UgYW5kUmVjdHM6KE5TQXJy
YXkgKiopcmVjdHMKIAogICAgIGlmICh0ZXh0SW5kaWNhdG9yKSB7CiAgICAgICAgIGlmIChJbWFn
ZSogaW1hZ2UgPSB0ZXh0SW5kaWNhdG9yLT5jb250ZW50SW1hZ2UoKSkKLSAgICAgICAgICAgICpj
Z0ltYWdlID0gKENHSW1hZ2VSZWYpQ0ZBdXRvcmVsZWFzZShDR0ltYWdlUmV0YWluKGltYWdlLT5n
ZXRDR0ltYWdlUmVmKCkpKTsKKyAgICAgICAgICAgICpjZ0ltYWdlID0gaW1hZ2UtPm5hdGl2ZUlt
YWdlKCkuYXV0b3JlbGVhc2UoKTsKICAgICB9CiAKICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJy
YXk+IHJlY3RBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvVGV4dEluZGljYXRvcldpbmRvdy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1RleHRJbmRpY2F0b3JXaW5kb3cubW0KaW5kZXgg
MzY0YTlhODdjZTZmMDY2Mzk0OGI4ODQ2ZThlMmNlNmQxOTBmMjQ4OS4uYTc0ZGE4NWFjZWNhM2M2
Njk4ZGQxNTZhYjMxYTZjOTcxYTM1NGU2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9tYWMvVGV4dEluZGljYXRvcldpbmRvdy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21h
Yy9UZXh0SW5kaWNhdG9yV2luZG93Lm1tCkBAIC0xNjIsOSArMTYyLDkgQEAgLSAoaW5zdGFuY2V0
eXBlKWluaXRXaXRoRnJhbWU6KE5TUmVjdClmcmFtZSB0ZXh0SW5kaWNhdG9yOihQYXNzUmVmUHRy
PFRleHRJbmRpY2EKICAgICBjb250ZW50c0ltYWdlTG9naWNhbFNpemUuc2NhbGUoMSAvIF90ZXh0
SW5kaWNhdG9yLT5jb250ZW50SW1hZ2VTY2FsZUZhY3RvcigpKTsKICAgICBSZXRhaW5QdHI8Q0dJ
bWFnZVJlZj4gY29udGVudHNJbWFnZTsKICAgICBpZiAoaW5kaWNhdG9yV2FudHNDb250ZW50Q3Jv
c3NmYWRlKCpfdGV4dEluZGljYXRvcikpCi0gICAgICAgIGNvbnRlbnRzSW1hZ2UgPSBfdGV4dElu
ZGljYXRvci0+Y29udGVudEltYWdlV2l0aEhpZ2hsaWdodCgpLT5nZXRDR0ltYWdlUmVmKCk7Cisg
ICAgICAgIGNvbnRlbnRzSW1hZ2UgPSBfdGV4dEluZGljYXRvci0+Y29udGVudEltYWdlV2l0aEhp
Z2hsaWdodCgpLT5uYXRpdmVJbWFnZSgpOwogICAgIGVsc2UKLSAgICAgICAgY29udGVudHNJbWFn
ZSA9IF90ZXh0SW5kaWNhdG9yLT5jb250ZW50SW1hZ2UoKS0+Z2V0Q0dJbWFnZVJlZigpOworICAg
ICAgICBjb250ZW50c0ltYWdlID0gX3RleHRJbmRpY2F0b3ItPmNvbnRlbnRJbWFnZSgpLT5uYXRp
dmVJbWFnZSgpOwogCiAgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBib3VuY2VMYXllcnMg
PSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKIApAQCAtMjY1LDcgKzI2
NSw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8Q0FLZXlmcmFtZUFuaW1hdGlvbj4gY3JlYXRlQm91bmNl
QW5pbWF0aW9uKENGVGltZUludGVydmFsIGR1cmF0CiBzdGF0aWMgUmV0YWluUHRyPENBQmFzaWNB
bmltYXRpb24+IGNyZWF0ZUNvbnRlbnRDcm9zc2ZhZGVBbmltYXRpb24oQ0ZUaW1lSW50ZXJ2YWwg
ZHVyYXRpb24sIFRleHRJbmRpY2F0b3ImIHRleHRJbmRpY2F0b3IpCiB7CiAgICAgUmV0YWluUHRy
PENBQmFzaWNBbmltYXRpb24+IGNyb3NzZmFkZUFuaW1hdGlvbiA9IFtDQUJhc2ljQW5pbWF0aW9u
IGFuaW1hdGlvbldpdGhLZXlQYXRoOkAiY29udGVudHMiXTsKLSAgICBSZXRhaW5QdHI8Q0dJbWFn
ZVJlZj4gY29udGVudHNJbWFnZSA9IHRleHRJbmRpY2F0b3IuY29udGVudEltYWdlKCktPmdldENH
SW1hZ2VSZWYoKTsKKyAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gY29udGVudHNJbWFnZSA9IHRl
eHRJbmRpY2F0b3IuY29udGVudEltYWdlKCktPm5hdGl2ZUltYWdlKCk7CiAgICAgW2Nyb3NzZmFk
ZUFuaW1hdGlvbiBzZXRUb1ZhbHVlOihpZCljb250ZW50c0ltYWdlLmdldCgpXTsKICAgICBbY3Jv
c3NmYWRlQW5pbWF0aW9uIHNldEZpbGxNb2RlOmtDQUZpbGxNb2RlRm9yd2FyZHNdOwogICAgIFtj
cm9zc2ZhZGVBbmltYXRpb24gc2V0UmVtb3ZlZE9uQ29tcGxldGlvbjpOT107CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKaW5kZXggNDYwZDFi
ODU2Yjc3YjdjZjRlYzY4OTY1ODFiODMzZDNlN2Y5NzAxNC4uZmM2NDlkMTBhYWI5YzEzZmZmMjkz
MDU1YTcwN2NiNzQ1Mzc0NjkxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0JpdG1hcEltYWdlLmNwcApAQCAtNjgsMTUgKzY4LDEzIEBAIEJpdG1hcEltYWdlOjpC
aXRtYXBJbWFnZShOYXRpdmVJbWFnZVB0ciYmIGltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZl
cikKICAgICAsIG1faGF2ZUZyYW1lQ291bnQodHJ1ZSkKICAgICAsIG1fYW5pbWF0aW9uRmluaXNo
ZWRXaGVuQ2F0Y2hpbmdVcChmYWxzZSkKIHsKKyAgICBtX2ZyYW1lcy5yZXNlcnZlSW5pdGlhbENh
cGFjaXR5KDEpOworICAgIG1fZnJhbWVzLnVuY2hlY2tlZEFwcGVuZChXVEZNb3ZlKGltYWdlKSk7
CisgICAgCiAgICAgLy8gU2luY2Ugd2UgZG9uJ3QgaGF2ZSBhIGRlY29kZXIsIHdlIGNhbid0IGZp
Z3VyZSBvdXQgdGhlIGltYWdlIG9yaWVudGF0aW9uLgogICAgIC8vIFNldCBtX3NpemVSZXNwZWN0
aW5nT3JpZW50YXRpb24gdG8gYmUgdGhlIHNhbWUgYXMgbV9zaXplIHNvIGl0J3Mgbm90IDB4MC4K
LSAgICBtX3NpemVSZXNwZWN0aW5nT3JpZW50YXRpb24gPSBtX3NpemUgPSBOYXRpdmVJbWFnZTo6
c2l6ZShpbWFnZSk7CisgICAgbV9zaXplUmVzcGVjdGluZ09yaWVudGF0aW9uID0gbV9zaXplID0g
bV9mcmFtZXNbMF0uc2l6ZSgpOwogICAgIG1fZGVjb2RlZFNpemUgPSBtX3NpemUuYXJlYSgpICog
NDsKLSAgICAKLSAgICBtX2ZyYW1lcy5ncm93KDEpOwotICAgIG1fZnJhbWVzWzBdLm1faGFzQWxw
aGEgPSBOYXRpdmVJbWFnZTo6aGFzQWxwaGEoaW1hZ2UpOwotICAgIG1fZnJhbWVzWzBdLm1faGF2
ZU1ldGFkYXRhID0gdHJ1ZTsKLSAgICBtX2ZyYW1lc1swXS5tX2ltYWdlID0gV1RGTW92ZShpbWFn
ZSk7CiB9CiAKIEJpdG1hcEltYWdlOjp+Qml0bWFwSW1hZ2UoKQpAQCAtMTA1LDcgKzEwMyw3IEBA
IGJvb2wgQml0bWFwSW1hZ2U6OmhhdmVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgpCiAg
ICAgaWYgKGluZGV4ID49IG1fZnJhbWVzLnNpemUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgcmV0dXJuIG1fZnJhbWVzW2luZGV4XS5tX2ltYWdlOworICAgIHJldHVybiBtX2ZyYW1l
c1tpbmRleF0uaGFzSW1hZ2UoKTsKIH0KIAogYm9vbCBCaXRtYXBJbWFnZTo6aGFzU2luZ2xlU2Vj
dXJpdHlPcmlnaW4oKSBjb25zdApAQCAtMTI1LDkgKzEyMyw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6
OmRlc3Ryb3lEZWNvZGVkRGF0YShib29sIGRlc3Ryb3lBbGwpCiAgICAgICAgIC8vIFRoZSB1bmRl
cmx5aW5nIGZyYW1lIGlzbid0IGFjdHVhbGx5IGNoYW5naW5nICh3ZSdyZSBqdXN0IHRyeWluZyB0
bwogICAgICAgICAvLyBzYXZlIHRoZSBtZW1vcnkgZm9yIHRoZSBmcmFtZWJ1ZmZlciBkYXRhKSwg
c28gd2UgZG9uJ3QgbmVlZCB0byBjbGVhcgogICAgICAgICAvLyB0aGUgbWV0YWRhdGEuCi0gICAg
ICAgIHVuc2lnbmVkIGZyYW1lQnl0ZXMgPSBtX2ZyYW1lc1tpXS5tX2ZyYW1lQnl0ZXM7Ci0gICAg
ICAgIGlmIChtX2ZyYW1lc1tpXS5jbGVhcihmYWxzZSkpCi0gICAgICAgICAgICBmcmFtZUJ5dGVz
Q2xlYXJlZCArPSBmcmFtZUJ5dGVzOworICAgICAgICBmcmFtZUJ5dGVzQ2xlYXJlZCArPSBtX2Zy
YW1lc1tpXS5jbGVhcihJbWFnZUZyYW1lRGF0YTo6Q2FjaGluZzo6TWV0YWRhdGEpOwogICAgIH0K
IAogICAgIG1fc291cmNlLmNsZWFyKGRlc3Ryb3lBbGwsIGNsZWFyQmVmb3JlRnJhbWUsIGRhdGEo
KSwgbV9hbGxEYXRhUmVjZWl2ZWQpOwpAQCAtMTUwLDggKzE0Niw4IEBAIHZvaWQgQml0bWFwSW1h
Z2U6OmRlc3Ryb3lEZWNvZGVkRGF0YUlmTmVjZXNzYXJ5KGJvb2wgZGVzdHJveUFsbCkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgdW5zaWduZWQgYWxsRnJhbWVCeXRlcyA9IDA7Ci0gICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBtX2ZyYW1lcy5zaXplKCk7ICsraSkKLSAgICAgICAgYWxsRnJhbWVC
eXRlcyArPSBtX2ZyYW1lc1tpXS51c2VkRnJhbWVCeXRlcygpOworICAgIGZvciAoYXV0byYgZnJh
bWUgOiBtX2ZyYW1lcykKKyAgICAgICAgYWxsRnJhbWVCeXRlcyArPSBmcmFtZS5mcmFtZUJ5dGVz
KCk7CiAKICAgICBpZiAoYWxsRnJhbWVCeXRlcyA+IGxhcmdlQW5pbWF0aW9uQ3V0b2ZmKSB7CiAg
ICAgICAgIExPRyhJbWFnZXMsICJCaXRtYXBJbWFnZSAlcCBkZXN0cm95RGVjb2RlZERhdGFJZk5l
Y2Vzc2FyeSBkZXN0cm95aW5nRGF0YTogYWxsRnJhbWVCeXRlcz0ldSBjdXRvZmY9JXUiLCB0aGlz
LCBhbGxGcmFtZUJ5dGVzLCBsYXJnZUFuaW1hdGlvbkN1dG9mZik7CkBAIC0xNzcsNyArMTczLDcg
QEAgdm9pZCBCaXRtYXBJbWFnZTo6ZGVzdHJveU1ldGFkYXRhQW5kTm90aWZ5KHVuc2lnbmVkIGZy
YW1lQnl0ZXNDbGVhcmVkLCBDbGVhcmVkU28KICAgICAgICAgaW1hZ2VPYnNlcnZlcigpLT5kZWNv
ZGVkU2l6ZUNoYW5nZWQodGhpcywgLXNhZmVDYXN0PGludD4oZnJhbWVCeXRlc0NsZWFyZWQpKTsK
IH0KIAotdm9pZCBCaXRtYXBJbWFnZTo6Y2FjaGVGcmFtZShzaXplX3QgaW5kZXgsIFN1YnNhbXBs
aW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgSW1hZ2VGcmFtZUNhY2hpbmcgZnJhbWVDYWNoaW5n
KQordm9pZCBCaXRtYXBJbWFnZTo6Y2FjaGVGcmFtZShzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5n
TGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgSW1hZ2VGcmFtZURhdGE6OkNhY2hpbmcgY2FjaGluZykK
IHsKICAgICBzaXplX3QgbnVtRnJhbWVzID0gZnJhbWVDb3VudCgpOwogICAgIEFTU0VSVChtX2Rl
Y29kZWRTaXplID09IDAgfHwgbnVtRnJhbWVzID4gMSk7CkBAIC0xODUsMjUgKzE4MSwxMiBAQCB2
b2lkIEJpdG1hcEltYWdlOjpjYWNoZUZyYW1lKHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZl
bCBzdWJzYW1wbGluZ0xldmVsLCBJbQogICAgIGlmIChtX2ZyYW1lcy5zaXplKCkgPCBudW1GcmFt
ZXMpCiAgICAgICAgIG1fZnJhbWVzLmdyb3cobnVtRnJhbWVzKTsKIAotICAgIGlmIChmcmFtZUNh
Y2hpbmcgPT0gQ2FjaGVNZXRhZGF0YUFuZEZyYW1lKSB7Ci0gICAgICAgIG1fZnJhbWVzW2luZGV4
XS5tX2ltYWdlID0gbV9zb3VyY2UuY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoaW5kZXgsIHN1YnNh
bXBsaW5nTGV2ZWwpOwotICAgICAgICBtX2ZyYW1lc1tpbmRleF0ubV9zdWJzYW1wbGluZ0xldmVs
ID0gc3Vic2FtcGxpbmdMZXZlbDsKLSAgICB9Ci0KLSAgICBtX2ZyYW1lc1tpbmRleF0ubV9vcmll
bnRhdGlvbiA9IG1fc291cmNlLm9yaWVudGF0aW9uQXRJbmRleChpbmRleCk7Ci0gICAgbV9mcmFt
ZXNbaW5kZXhdLm1faGF2ZU1ldGFkYXRhID0gdHJ1ZTsKLSAgICBtX2ZyYW1lc1tpbmRleF0ubV9p
c0NvbXBsZXRlID0gbV9zb3VyY2UuZnJhbWVJc0NvbXBsZXRlQXRJbmRleChpbmRleCk7CisgICAg
bV9mcmFtZXNbaW5kZXhdID0gbV9zb3VyY2UuY3JlYXRlRnJhbWVEYXRhQXRJbmRleChpbmRleCwg
c3Vic2FtcGxpbmdMZXZlbCwgY2FjaGluZyk7CiAKLSAgICBpZiAocmVwZXRpdGlvbkNvdW50KGZh
bHNlKSAhPSBjQW5pbWF0aW9uTm9uZSkKLSAgICAgICAgbV9mcmFtZXNbaW5kZXhdLm1fZHVyYXRp
b24gPSBtX3NvdXJjZS5mcmFtZUR1cmF0aW9uQXRJbmRleChpbmRleCk7CisgICAgTE9HKEltYWdl
cywgIkJpdG1hcEltYWdlICVwIGNhY2hlRnJhbWUgJWx1ICglcyV1IGJ5dGVzLCBjb21wbGV0ZSAl
ZCkiLCB0aGlzLCBpbmRleCwgY2FjaGluZyA9PSBJbWFnZUZyYW1lRGF0YTo6Q2FjaGluZzo6TWV0
YWRhdGEgPyAibWV0YWRhdGEgb25seSwgIiA6ICIiLCBtX2ZyYW1lc1tpbmRleF0uZnJhbWVCeXRl
cygpLCBtX2ZyYW1lc1tpbmRleF0uaXNDb21wbGV0ZSgpKTsKIAotICAgIG1fZnJhbWVzW2luZGV4
XS5tX2hhc0FscGhhID0gbV9zb3VyY2UuZnJhbWVIYXNBbHBoYUF0SW5kZXgoaW5kZXgpOwotICAg
IG1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lQnl0ZXMgPSBtX3NvdXJjZS5mcmFtZUJ5dGVzQXRJbmRl
eChpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCk7Ci0KLSAgICBMT0coSW1hZ2VzLCAiQml0bWFwSW1h
Z2UgJXAgY2FjaGVGcmFtZSAlbHUgKCVzJXUgYnl0ZXMsIGNvbXBsZXRlICVkKSIsIHRoaXMsIGlu
ZGV4LCBmcmFtZUNhY2hpbmcgPT0gQ2FjaGVNZXRhZGF0YU9ubHkgPyAibWV0YWRhdGEgb25seSwg
IiA6ICIiLCBtX2ZyYW1lc1tpbmRleF0ubV9mcmFtZUJ5dGVzLCBtX2ZyYW1lc1tpbmRleF0ubV9p
c0NvbXBsZXRlKTsKLQotICAgIGlmIChtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZSkgewotICAgICAg
ICBpbnQgZGVsdGFCeXRlcyA9IHNhZmVDYXN0PGludD4obV9mcmFtZXNbaW5kZXhdLm1fZnJhbWVC
eXRlcyk7CisgICAgaWYgKG1fZnJhbWVzW2luZGV4XS5oYXNJbWFnZSgpKSB7CisgICAgICAgIGlu
dCBkZWx0YUJ5dGVzID0gc2FmZUNhc3Q8aW50PihtX2ZyYW1lc1tpbmRleF0uZnJhbWVCeXRlcygp
KTsKICAgICAgICAgbV9kZWNvZGVkU2l6ZSArPSBkZWx0YUJ5dGVzOwogICAgICAgICAvLyBUaGUg
ZnVsbHktZGVjb2RlZCBmcmFtZSB3aWxsIHN1YnN1bWUgdGhlIHBhcnRpYWxseSBkZWNvZGVkIGRh
dGEgdXNlZAogICAgICAgICAvLyB0byBkZXRlcm1pbmUgaW1hZ2UgcHJvcGVydGllcy4KQEAgLTI4
OCwyMSArMjcxLDE5IEBAIGJvb2wgQml0bWFwSW1hZ2U6OmRhdGFDaGFuZ2VkKGJvb2wgYWxsRGF0
YVJlY2VpdmVkKQogICAgIC8vIGZyYW1lIGFmZmVjdGVkIGJ5IGFwcGVuZGluZyBuZXcgZGF0YSBo
ZXJlLiBUaHVzIHdlIGhhdmUgdG8gY2xlYXIgYWxsIHRoZQogICAgIC8vIGluY29tcGxldGUgZnJh
bWVzIHRvIGJlIHNhZmUuCiAgICAgdW5zaWduZWQgZnJhbWVCeXRlc0NsZWFyZWQgPSAwOwotICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9mcmFtZXMuc2l6ZSgpOyArK2kpIHsKKyAgICBmb3Ig
KGF1dG8mIGZyYW1lIDogbV9mcmFtZXMpIHsKICAgICAgICAgLy8gTk9URTogRG9uJ3QgY2FsbCBm
cmFtZUlzQ29tcGxldGVBdEluZGV4KCkgaGVyZSwgdGhhdCB3aWxsIHRyeSB0bwogICAgICAgICAv
LyBkZWNvZGUgYW55IHVuY2FjaGVkIChpLmUuIG5ldmVyLWRlY29kZWQgb3IKICAgICAgICAgLy8g
Y2xlYXJlZC1vbi1hLXByZXZpb3VzLXBhc3MpIGZyYW1lcyEKLSAgICAgICAgdW5zaWduZWQgZnJh
bWVCeXRlcyA9IG1fZnJhbWVzW2ldLm1fZnJhbWVCeXRlczsKLSAgICAgICAgaWYgKG1fZnJhbWVz
W2ldLm1faGF2ZU1ldGFkYXRhICYmICFtX2ZyYW1lc1tpXS5tX2lzQ29tcGxldGUpCi0gICAgICAg
ICAgICBmcmFtZUJ5dGVzQ2xlYXJlZCArPSAobV9mcmFtZXNbaV0uY2xlYXIodHJ1ZSkgPyBmcmFt
ZUJ5dGVzIDogMCk7CisgICAgICAgIGlmIChmcmFtZS5oYXNNZXRhZGF0YSgpICYmICFmcmFtZS5p
c0NvbXBsZXRlKCkpCisgICAgICAgICAgICBmcmFtZUJ5dGVzQ2xlYXJlZCArPSBmcmFtZS5jbGVh
cihJbWFnZUZyYW1lRGF0YTo6Q2FjaGluZzo6RW1wdHkpOwogICAgIH0KICAgICBkZXN0cm95TWV0
YWRhdGFBbmROb3RpZnkoZnJhbWVCeXRlc0NsZWFyZWQsIENsZWFyZWRTb3VyY2U6Ok5vKTsKICNl
bHNlCiAgICAgLy8gRklYTUU6IHdoeSBpcyB0aGlzIGRpZmZlcmVudCBmb3IgaU9TPwogICAgIGlu
dCBkZWx0YUJ5dGVzID0gMDsKICAgICBpZiAoIW1fZnJhbWVzLmlzRW1wdHkoKSkgewotICAgICAg
ICBpbnQgYnl0ZXMgPSBtX2ZyYW1lc1ttX2ZyYW1lcy5zaXplKCkgLSAxXS5tX2ZyYW1lQnl0ZXM7
Ci0gICAgICAgIGlmIChtX2ZyYW1lc1ttX2ZyYW1lcy5zaXplKCkgLSAxXS5jbGVhcih0cnVlKSkg
eworICAgICAgICBpZiAoaW50IGJ5dGVzID0gbV9mcmFtZXNbbV9mcmFtZXMuc2l6ZSgpIC0gMV0u
Y2xlYXIoSW1hZ2VGcmFtZURhdGE6OkNhY2hpbmc6OkVtcHR5KSkgewogICAgICAgICAgICAgZGVs
dGFCeXRlcyArPSBieXRlczsKICAgICAgICAgICAgIGRlbHRhQnl0ZXMgKz0gbV9kZWNvZGVkUHJv
cGVydGllc1NpemU7CiAgICAgICAgICAgICBtX2RlY29kZWRQcm9wZXJ0aWVzU2l6ZSA9IDA7CkBA
IC0zNjYsMTUgKzM0NywxNSBAQCBib29sIEJpdG1hcEltYWdlOjppc1NpemVBdmFpbGFibGUoKQog
ICAgIHJldHVybiBtX3NpemVBdmFpbGFibGU7CiB9CiAKLWJvb2wgQml0bWFwSW1hZ2U6OmVuc3Vy
ZUZyYW1lSXNDYWNoZWQoc2l6ZV90IGluZGV4LCBJbWFnZUZyYW1lQ2FjaGluZyBmcmFtZUNhY2hp
bmcpCitib29sIEJpdG1hcEltYWdlOjplbnN1cmVGcmFtZUlzQ2FjaGVkKHNpemVfdCBpbmRleCwg
SW1hZ2VGcmFtZURhdGE6OkNhY2hpbmcgY2FjaGluZykKIHsKICAgICBpZiAoaW5kZXggPj0gZnJh
bWVDb3VudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoaW5kZXggPj0gbV9m
cmFtZXMuc2l6ZSgpCi0gICAgICAgIHx8IChmcmFtZUNhY2hpbmcgPT0gQ2FjaGVNZXRhZGF0YUFu
ZEZyYW1lICYmICFtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZSkKLSAgICAgICAgfHwgKGZyYW1lQ2Fj
aGluZyA9PSBDYWNoZU1ldGFkYXRhT25seSAmJiAhbV9mcmFtZXNbaW5kZXhdLm1faGF2ZU1ldGFk
YXRhKSkKLSAgICAgICAgY2FjaGVGcmFtZShpbmRleCwgMCwgZnJhbWVDYWNoaW5nKTsKKyAgICAg
ICAgfHwgKGNhY2hpbmcgPT0gSW1hZ2VGcmFtZURhdGE6OkNhY2hpbmc6Ok1ldGFkYXRhQW5kSW1h
Z2UgJiYgIW1fZnJhbWVzW2luZGV4XS5oYXNJbWFnZSgpKQorICAgICAgICB8fCAoY2FjaGluZyA9
PSBJbWFnZUZyYW1lRGF0YTo6Q2FjaGluZzo6TWV0YWRhdGEgJiYgIW1fZnJhbWVzW2luZGV4XS5o
YXNNZXRhZGF0YSgpKSkKKyAgICAgICAgY2FjaGVGcmFtZShpbmRleCwgMCwgY2FjaGluZyk7CiAK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTM4OCwxMCArMzY5LDkgQEAgTmF0aXZlSW1hZ2VQdHIg
Qml0bWFwSW1hZ2U6OmZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgZmxvYXQgcHJlc2Vu
dGF0aW9uU2MKIAogICAgIC8vIFdlIG1heSBoYXZlIGNhY2hlZCBhIGZyYW1lIHdpdGggYSBoaWdo
ZXIgc3Vic2FtcGxpbmcgbGV2ZWwsIGluIHdoaWNoIGNhc2Ugd2UgbmVlZCB0bwogICAgIC8vIHJl
LWRlY29kZSB3aXRoIGEgbG93ZXIgbGV2ZWwuCi0gICAgaWYgKGluZGV4IDwgbV9mcmFtZXMuc2l6
ZSgpICYmIG1fZnJhbWVzW2luZGV4XS5tX2ltYWdlICYmIHN1YnNhbXBsaW5nTGV2ZWwgPCBtX2Zy
YW1lc1tpbmRleF0ubV9zdWJzYW1wbGluZ0xldmVsKSB7CisgICAgaWYgKGluZGV4IDwgbV9mcmFt
ZXMuc2l6ZSgpICYmIG1fZnJhbWVzW2luZGV4XS5oYXNJbWFnZSgpICYmIHN1YnNhbXBsaW5nTGV2
ZWwgPCBtX2ZyYW1lc1tpbmRleF0uc3Vic2FtcGxpbmdMZXZlbCgpKSB7CiAgICAgICAgIC8vIElm
IHRoZSBpbWFnZSBpcyBhbHJlYWR5IGNhY2hlZCwgYnV0IGF0IHRvbyBzbWFsbCBhIHNpemUsIHJl
LWRlY29kZSBhIGxhcmdlciB2ZXJzaW9uLgotICAgICAgICBpbnQgc2l6ZUNoYW5nZSA9IC1tX2Zy
YW1lc1tpbmRleF0ubV9mcmFtZUJ5dGVzOwotICAgICAgICBtX2ZyYW1lc1tpbmRleF0uY2xlYXIo
dHJ1ZSk7CisgICAgICAgIGludCBzaXplQ2hhbmdlID0gLW1fZnJhbWVzW2luZGV4XS5jbGVhcihJ
bWFnZUZyYW1lRGF0YTo6Q2FjaGluZzo6RW1wdHkpOwogICAgICAgICBpbnZhbGlkYXRlUGxhdGZv
cm1EYXRhKCk7CiAgICAgICAgIG1fZGVjb2RlZFNpemUgKz0gc2l6ZUNoYW5nZTsKICAgICAgICAg
aWYgKGltYWdlT2JzZXJ2ZXIoKSkKQEAgLTM5OSw0MCArMzc5LDcyIEBAIE5hdGl2ZUltYWdlUHRy
IEJpdG1hcEltYWdlOjpmcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIGZsb2F0IHByZXNl
bnRhdGlvblNjCiAgICAgfQogCiAgICAgLy8gSWYgd2UgaGF2ZW4ndCBmZXRjaGVkIGEgZnJhbWUg
eWV0LCBkbyBzby4KLSAgICBpZiAoaW5kZXggPj0gbV9mcmFtZXMuc2l6ZSgpIHx8ICFtX2ZyYW1l
c1tpbmRleF0ubV9pbWFnZSkKLSAgICAgICAgY2FjaGVGcmFtZShpbmRleCwgc3Vic2FtcGxpbmdM
ZXZlbCwgQ2FjaGVNZXRhZGF0YUFuZEZyYW1lKTsKKyAgICBpZiAoaW5kZXggPj0gbV9mcmFtZXMu
c2l6ZSgpIHx8ICFtX2ZyYW1lc1tpbmRleF0uaGFzSW1hZ2UoKSkKKyAgICAgICAgY2FjaGVGcmFt
ZShpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCwgSW1hZ2VGcmFtZURhdGE6OkNhY2hpbmc6Ok1ldGFk
YXRhQW5kSW1hZ2UpOworCisgICAgcmV0dXJuIG1fZnJhbWVzW2luZGV4XS5pbWFnZSgpOworfQor
ICAgIAorTmF0aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6Om5hdGl2ZUltYWdlKCkKK3sKKyAgICBy
ZXR1cm4gZnJhbWVJbWFnZUF0SW5kZXgoMCk7Cit9CisgICAgCitOYXRpdmVJbWFnZVB0ciBCaXRt
YXBJbWFnZTo6bmF0aXZlSW1hZ2VPZlNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKK3sKKyAgICBz
aXplX3QgY291bnQgPSBmcmFtZUNvdW50KCk7CisgICAgCisgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBjb3VudDsgKytpKSB7CisgICAgICAgIGF1dG8gaW1hZ2UgPSBmcmFtZUltYWdlQXRJbmRl
eChpKTsKKyAgICAgICAgaWYgKGltYWdlICYmIFBsYXRmb3JtSW1hZ2UoaW1hZ2UpLnNpemUoKSA9
PSBzaXplKQorICAgICAgICAgICAgcmV0dXJuIGltYWdlOworICAgIH0KKyAgICAKKyAgICAvLyBG
YWxsYmFjayB0byB0aGUgZmlyc3QgZnJhbWUgaW1hZ2UgaWYgd2UgY2FuJ3QgZmluZCB0aGUgcmln
aHQgc2l6ZQorICAgIHJldHVybiBmcmFtZUltYWdlQXRJbmRleCgwKTsKK30KKyAgICAKK05hdGl2
ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpCit7Cisg
ICAgcmV0dXJuIGZyYW1lSW1hZ2VBdEluZGV4KG1fY3VycmVudEZyYW1lKTsKK30KIAotICAgIHJl
dHVybiBtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZTsKK1ZlY3RvcjxOYXRpdmVJbWFnZVB0cj4gQml0
bWFwSW1hZ2U6OmZyYW1lc05hdGl2ZUltYWdlcygpCit7CisgICAgVmVjdG9yPE5hdGl2ZUltYWdl
UHRyPiBpbWFnZXM7CisgICAgc2l6ZV90IGNvdW50ID0gZnJhbWVDb3VudCgpOworICAgIAorICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgeworICAgICAgICBpZiAoYXV0byBp
bWFnZSA9IGZyYW1lSW1hZ2VBdEluZGV4KGkpKQorICAgICAgICAgICAgaW1hZ2VzLmFwcGVuZChp
bWFnZSk7CisgICAgfQorICAgIAorICAgIHJldHVybiBpbWFnZXM7CiB9CiAKIGJvb2wgQml0bWFw
SW1hZ2U6OmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoc2l6ZV90IGluZGV4KQogewotICAgIGlmICgh
ZW5zdXJlRnJhbWVJc0NhY2hlZChpbmRleCwgQ2FjaGVNZXRhZGF0YU9ubHkpKQorICAgIGlmICgh
ZW5zdXJlRnJhbWVJc0NhY2hlZChpbmRleCwgSW1hZ2VGcmFtZURhdGE6OkNhY2hpbmc6Ok1ldGFk
YXRhKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIG1fZnJhbWVzW2luZGV4
XS5tX2lzQ29tcGxldGU7CisgICAgcmV0dXJuIG1fZnJhbWVzW2luZGV4XS5pc0NvbXBsZXRlKCk7
CiB9CiAKIGZsb2F0IEJpdG1hcEltYWdlOjpmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QgaW5k
ZXgpCiB7Ci0gICAgaWYgKCFlbnN1cmVGcmFtZUlzQ2FjaGVkKGluZGV4LCBDYWNoZU1ldGFkYXRh
T25seSkpCisgICAgaWYgKCFlbnN1cmVGcmFtZUlzQ2FjaGVkKGluZGV4LCBJbWFnZUZyYW1lRGF0
YTo6Q2FjaGluZzo6TWV0YWRhdGEpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiBt
X2ZyYW1lc1tpbmRleF0ubV9kdXJhdGlvbjsKLX0KLQotTmF0aXZlSW1hZ2VQdHIgQml0bWFwSW1h
Z2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkKLXsKLSAgICByZXR1cm4gZnJhbWVJbWFn
ZUF0SW5kZXgoY3VycmVudEZyYW1lKCkpOworICAgIHJldHVybiBtX2ZyYW1lc1tpbmRleF0uZHVy
YXRpb24oKTsKIH0KIAogYm9vbCBCaXRtYXBJbWFnZTo6ZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6
ZV90IGluZGV4KQogewotICAgIGlmICghZW5zdXJlRnJhbWVJc0NhY2hlZChpbmRleCwgQ2FjaGVN
ZXRhZGF0YU9ubHkpKQorICAgIGlmICghZW5zdXJlRnJhbWVJc0NhY2hlZChpbmRleCwgSW1hZ2VG
cmFtZURhdGE6OkNhY2hpbmc6Ok1ldGFkYXRhKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAg
ICBpZiAobV9mcmFtZXNbaW5kZXhdLm1faGF2ZU1ldGFkYXRhKQotICAgICAgICByZXR1cm4gbV9m
cmFtZXNbaW5kZXhdLm1faGFzQWxwaGE7CisgICAgaWYgKG1fZnJhbWVzW2luZGV4XS5oYXNNZXRh
ZGF0YSgpKQorICAgICAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLmhhc0FscGhhKCk7CiAKICAg
ICByZXR1cm4gbV9zb3VyY2UuZnJhbWVIYXNBbHBoYUF0SW5kZXgoaW5kZXgpOwogfQpAQCAtNDQ0
LDExICs0NTYsMTEgQEAgYm9vbCBCaXRtYXBJbWFnZTo6Y3VycmVudEZyYW1lS25vd25Ub0JlT3Bh
cXVlKCkKIAogSW1hZ2VPcmllbnRhdGlvbiBCaXRtYXBJbWFnZTo6ZnJhbWVPcmllbnRhdGlvbkF0
SW5kZXgoc2l6ZV90IGluZGV4KQogewotICAgIGlmICghZW5zdXJlRnJhbWVJc0NhY2hlZChpbmRl
eCwgQ2FjaGVNZXRhZGF0YU9ubHkpKQorICAgIGlmICghZW5zdXJlRnJhbWVJc0NhY2hlZChpbmRl
eCwgSW1hZ2VGcmFtZURhdGE6OkNhY2hpbmc6Ok1ldGFkYXRhKSkKICAgICAgICAgcmV0dXJuIElt
YWdlT3JpZW50YXRpb24oKTsKIAotICAgIGlmIChtX2ZyYW1lc1tpbmRleF0ubV9oYXZlTWV0YWRh
dGEpCi0gICAgICAgIHJldHVybiBtX2ZyYW1lc1tpbmRleF0ubV9vcmllbnRhdGlvbjsKKyAgICBp
ZiAobV9mcmFtZXNbaW5kZXhdLmhhc01ldGFkYXRhKCkpCisgICAgICAgIHJldHVybiBtX2ZyYW1l
c1tpbmRleF0ub3JpZW50YXRpb24oKTsKIAogICAgIHJldHVybiBtX3NvdXJjZS5vcmllbnRhdGlv
bkF0SW5kZXgoaW5kZXgpOwogfQpAQCAtNzAwLDE3ICs3MTIsNTYgQEAgQ29sb3IgQml0bWFwSW1h
Z2U6OnNpbmdsZVBpeGVsU29saWRDb2xvcigpCiAgICAgICAgIHJldHVybiBDb2xvcigpOwogICAg
IAogICAgIEFTU0VSVChtX2ZyYW1lcy5zaXplKCkpOwotICAgIG1fc29saWRDb2xvciA9IE5hdGl2
ZUltYWdlOjpzaW5nbGVQaXhlbFNvbGlkQ29sb3IobV9mcmFtZXNbMF0ubV9pbWFnZS5nZXQoKSk7
CisgICAgbV9zb2xpZENvbG9yID0gbV9mcmFtZXNbMF0uc2luZ2xlUGl4ZWxTb2xpZENvbG9yKCk7
CiAgICAgCiAgICAgQVNTRVJUKG1fc29saWRDb2xvcik7CiAgICAgcmV0dXJuIG1fc29saWRDb2xv
ci52YWx1ZSgpOwogfQogICAgIAorYm9vbCBCaXRtYXBJbWFnZTo6aXNBbG1vc3RTb2xpZENvbG9y
KCkKK3sKKyAgICBpZiAoZnJhbWVDb3VudCgpICE9IDEpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIHJldHVybiBlbnN1cmVGcmFtZUlzQ2FjaGVkKDApICYmIG1fZnJhbWVzWzBdLmlzQWxt
b3N0U29saWRDb2xvcigpOworfQorICAgIAogYm9vbCBCaXRtYXBJbWFnZTo6Y2FuQW5pbWF0ZSgp
CiB7CiAgICAgcmV0dXJuIHNob3VsZEFuaW1hdGUoKSAmJiBmcmFtZUNvdW50KCkgPiAxOwogfQog
Cit2b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVP
cGVyYXRvciBvcCwgQmxlbmRNb2RlIG1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiBk
ZXNjcmlwdGlvbikKK3sKKyAgICBpZiAoZGVzdFJlY3QuaXNFbXB0eSgpIHx8IHNyY1JlY3QuaXNF
bXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyNpZiBQTEFURk9STShJT1MpCisgICAgc3RhcnRB
bmltYXRpb24oRG9Ob3RDYXRjaFVwKTsKKyNlbHNlCisgICAgc3RhcnRBbmltYXRpb24oKTsKKyNl
bmRpZgorICAgIAorICAgIENvbG9yIGNvbG9yID0gc2luZ2xlUGl4ZWxTb2xpZENvbG9yKCk7Cisg
ICAgaWYgKGNvbG9yLmlzVmFsaWQoKSkgeworICAgICAgICBmaWxsV2l0aFNvbGlkQ29sb3IoY29u
dGV4dCwgZGVzdFJlY3QsIGNvbG9yLCBvcCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
CisgICAgYXV0byBpbWFnZSA9IGZyYW1lSW1hZ2VBdEluZGV4KG1fY3VycmVudEZyYW1lLCBQbGF0
Zm9ybUltYWdlOjpzdWJzYW1wbGluZ1NjYWxlKGNvbnRleHQsIGRlc3RSZWN0LCBzcmNSZWN0KSk7
CisgICAgaWYgKCFpbWFnZSkgLy8gSWYgaXQncyB0b28gZWFybHkgd2Ugd29uJ3QgaGF2ZSBhbiBp
bWFnZSB5ZXQuCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBJbWFnZU9yaWVudGF0aW9uIG9y
aWVudGF0aW9uKGRlc2NyaXB0aW9uLmltYWdlT3JpZW50YXRpb24oKSk7CisgICAgaWYgKGRlc2Ny
aXB0aW9uLnJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKCkgPT0gUmVzcGVjdEltYWdlT3JpZW50YXRp
b24pCisgICAgICAgIG9yaWVudGF0aW9uID0gZnJhbWVPcmllbnRhdGlvbkF0SW5kZXgobV9jdXJy
ZW50RnJhbWUpOworICAgIAorICAgIFBsYXRmb3JtSW1hZ2UoaW1hZ2UpLmRyYXcoY29udGV4dCwg
ZGVzdFJlY3QsIHNyY1JlY3QsIG1fc2l6ZSwgb3AsIG1vZGUsIG9yaWVudGF0aW9uKTsKKyAgICAK
KyAgICBpZiAoaW1hZ2VPYnNlcnZlcigpKQorICAgICAgICBpbWFnZU9ic2VydmVyKCktPmRpZERy
YXcodGhpcyk7Cit9CisgICAgCiB2b2lkIEJpdG1hcEltYWdlOjpkdW1wKFRleHRTdHJlYW0mIHRz
KSBjb25zdAogewogICAgIEltYWdlOjpkdW1wKHRzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCmluZGV4IDA3NTg5MjljZDg3ZmFkYWNmMDJiNmVk
OGVlYWZlN2RlZmQ2NmYwYzUuLjIyMThjODI0YjUyOGZkNjM5YmFiMTM4ZGVjYzk4Yjk4MTZhMTY4
MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcElt
YWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2Uu
aApAQCAtMjgsMTEgKzI4LDEzIEBACiAjaWZuZGVmIEJpdG1hcEltYWdlX2gKICNkZWZpbmUgQml0
bWFwSW1hZ2VfaAogCi0jaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJDb2xvci5oIgorI2lu
Y2x1ZGUgIkltYWdlLmgiCisjaW5jbHVkZSAiSW1hZ2VGcmFtZURhdGEuaCIKICNpbmNsdWRlICJJ
bWFnZU9yaWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiSW1hZ2VTb3VyY2UuaCIKICNpbmNsdWRlICJJ
bnRTaXplLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1JbWFnZS5oIgogCiAjaWYgVVNFKENHKSB8fCBV
U0UoQVBQS0lUKQogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KQEAgLTQ3LDYzICs0OSw5IEBA
IHR5cGVkZWYgc3RydWN0IEhCSVRNQVBfXyAqSEJJVE1BUDsKICNlbmRpZgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0gICAgc3RydWN0IEZyYW1lRGF0YTsKLX0KLQotbmFtZXNwYWNlIFdURiB7Ci0g
ICAgdGVtcGxhdGU8PiBzdHJ1Y3QgVmVjdG9yVHJhaXRzPFdlYkNvcmU6OkZyYW1lRGF0YT4gOiBw
dWJsaWMgU2ltcGxlQ2xhc3NWZWN0b3JUcmFpdHMgewotICAgICAgICBzdGF0aWMgY29uc3QgYm9v
bCBjYW5Jbml0aWFsaXplV2l0aE1lbXNldCA9IGZhbHNlOyAvLyBOb3QgYWxsIEZyYW1lRGF0YSBt
ZW1iZXJzIGluaXRpYWxpemUgdG8gMC4KLSAgICB9OwotfQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIFRpbWVyOwogCi1uYW1lc3BhY2UgTmF0aXZlSW1hZ2UgewotICAgIEludFNpemUg
c2l6ZShjb25zdCBOYXRpdmVJbWFnZVB0ciYpOwotICAgIGJvb2wgaGFzQWxwaGEoY29uc3QgTmF0
aXZlSW1hZ2VQdHImKTsKLSAgICBDb2xvciBzaW5nbGVQaXhlbFNvbGlkQ29sb3IoY29uc3QgTmF0
aXZlSW1hZ2VQdHImKTsKLX0KLQotLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0vLyBGcmFtZURhdGEgQ2xhc3MKLS8vID09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi1zdHJ1Y3QgRnJhbWVEYXRhIHsKLXB1
YmxpYzoKLSAgICBGcmFtZURhdGEoKQotICAgICAgICA6IG1faGF2ZU1ldGFkYXRhKGZhbHNlKQot
ICAgICAgICAsIG1faXNDb21wbGV0ZShmYWxzZSkKLSAgICAgICAgLCBtX2hhc0FscGhhKHRydWUp
Ci0gICAgewotICAgIH0KLQotICAgIH5GcmFtZURhdGEoKQotICAgIHsgCi0gICAgICAgIGNsZWFy
KHRydWUpOwotICAgIH0KLQotICAgIC8vIENsZWFyIHRoZSBjYWNoZWQgaW1hZ2UgZGF0YSBvbiB0
aGUgZnJhbWUsIGFuZCAob3B0aW9uYWxseSkgdGhlIG1ldGFkYXRhLgotICAgIC8vIFJldHVybnMg
d2hldGhlciB0aGVyZSB3YXMgY2FjaGVkIGltYWdlIGRhdGEgdG8gY2xlYXIuCi0gICAgYm9vbCBj
bGVhcihib29sIGNsZWFyTWV0YWRhdGEpOwotICAgIAotICAgIHVuc2lnbmVkIHVzZWRGcmFtZUJ5
dGVzKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZSA/IG1fZnJhbWVCeXRlcyA6IDA7IH0KLQotICAg
IE5hdGl2ZUltYWdlUHRyIG1faW1hZ2U7Ci0gICAgSW1hZ2VPcmllbnRhdGlvbiBtX29yaWVudGF0
aW9uIHsgRGVmYXVsdEltYWdlT3JpZW50YXRpb24gfTsKLSAgICBTdWJzYW1wbGluZ0xldmVsIG1f
c3Vic2FtcGxpbmdMZXZlbCB7IDAgfTsKLSAgICBmbG9hdCBtX2R1cmF0aW9uIHsgMCB9OwotICAg
IGJvb2wgbV9oYXZlTWV0YWRhdGEgOiAxOwotICAgIGJvb2wgbV9pc0NvbXBsZXRlIDogMTsKLSAg
ICBib29sIG1faGFzQWxwaGEgOiAxOwotICAgIHVuc2lnbmVkIG1fZnJhbWVCeXRlcyB7IDAgfTsK
LX07Ci0KLS8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS8vIEJpdG1hcEltYWdlIENsYXNzCi0vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0KIGNsYXNzIEJpdG1hcEltYWdlIGZpbmFsIDogcHVibGlj
IEltYWdlIHsKICAgICBmcmllbmQgY2xhc3MgR2VuZXJhdGVkSW1hZ2U7CiAgICAgZnJpZW5kIGNs
YXNzIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOwpAQCAtMTU1LDEyICsxMDMsNiBAQCBwdWJsaWM6
CiAgICAgQ0ZEYXRhUmVmIGdldFRJRkZSZXByZXNlbnRhdGlvbigpIG92ZXJyaWRlOwogI2VuZGlm
CiAKLSNpZiBVU0UoQ0cpCi0gICAgV0VCQ09SRV9FWFBPUlQgQ0dJbWFnZVJlZiBnZXRDR0ltYWdl
UmVmKCkgb3ZlcnJpZGU7Ci0gICAgQ0dJbWFnZVJlZiBnZXRGaXJzdENHSW1hZ2VSZWZPZlNpemUo
Y29uc3QgSW50U2l6ZSYpIG92ZXJyaWRlOwotICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBnZXRD
R0ltYWdlQXJyYXkoKSBvdmVycmlkZTsKLSNlbmRpZgotCiAjaWYgUExBVEZPUk0oV0lOKQogICAg
IGJvb2wgZ2V0SEJJVE1BUChIQklUTUFQKSBvdmVycmlkZTsKICAgICBib29sIGdldEhCSVRNQVBP
ZlNpemUoSEJJVE1BUCwgY29uc3QgSW50U2l6ZSopIG92ZXJyaWRlOwpAQCAtMTc0LDggKzExNiwx
MyBAQCBwdWJsaWM6CiAgICAgRXZhc19PYmplY3QqIGdldEV2YXNPYmplY3QoRXZhcyopIG92ZXJy
aWRlOwogI2VuZGlmCiAKKyAgICBXRUJDT1JFX0VYUE9SVCBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJ
bWFnZSgpIG92ZXJyaWRlOworICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlT2ZTaXplKGNv
bnN0IEludFNpemUmKSBvdmVycmlkZTsKICAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZv
ckN1cnJlbnRGcmFtZSgpIG92ZXJyaWRlOwogICAgIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRp
b25Gb3JDdXJyZW50RnJhbWUoKSBvdmVycmlkZSB7IHJldHVybiBmcmFtZU9yaWVudGF0aW9uQXRJ
bmRleChjdXJyZW50RnJhbWUoKSk7IH0KKyAgICBWZWN0b3I8TmF0aXZlSW1hZ2VQdHI+IGZyYW1l
c05hdGl2ZUltYWdlcygpIG92ZXJyaWRlOworICAgIAorICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wg
aXNBbG1vc3RTb2xpZENvbG9yKCk7CiAKICAgICBib29sIGN1cnJlbnRGcmFtZUtub3duVG9CZU9w
YXF1ZSgpIG92ZXJyaWRlOwogCkBAIC0yMTUsNyArMTYyLDYgQEAgcHJvdGVjdGVkOgogICAgIHNp
emVfdCBmcmFtZUNvdW50KCk7CiAKICAgICBOYXRpdmVJbWFnZVB0ciBmcmFtZUltYWdlQXRJbmRl
eChzaXplX3QsIGZsb2F0IHByZXNlbnRhdGlvblNjYWxlSGludCA9IDEpOwotICAgIE5hdGl2ZUlt
YWdlUHRyIGNvcHlVbnNjYWxlZEZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCk7CiAKICAgICBib29s
IGhhdmVGcmFtZUltYWdlQXRJbmRleChzaXplX3QpOwogCkBAIC0yMjUsMTEgKzE3MSwxMCBAQCBw
cm90ZWN0ZWQ6CiAgICAgSW1hZ2VPcmllbnRhdGlvbiBmcmFtZU9yaWVudGF0aW9uQXRJbmRleChz
aXplX3QpOwogCiAgICAgLy8gRGVjb2RlcyBhbmQgY2FjaGVzIGEgZnJhbWUuIE5ldmVyIGFjY2Vz
c2VkIGV4Y2VwdCBpbnRlcm5hbGx5LgotICAgIGVudW0gSW1hZ2VGcmFtZUNhY2hpbmcgeyBDYWNo
ZU1ldGFkYXRhT25seSwgQ2FjaGVNZXRhZGF0YUFuZEZyYW1lIH07Ci0gICAgdm9pZCBjYWNoZUZy
YW1lKHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCwgSW1hZ2VGcmFtZUNhY2hpbmcgPSBD
YWNoZU1ldGFkYXRhQW5kRnJhbWUpOworICAgIHZvaWQgY2FjaGVGcmFtZShzaXplX3QgaW5kZXgs
IFN1YnNhbXBsaW5nTGV2ZWwsIEltYWdlRnJhbWVEYXRhOjpDYWNoaW5nID0gSW1hZ2VGcmFtZURh
dGE6OkNhY2hpbmc6Ok1ldGFkYXRhQW5kSW1hZ2UpOwogCiAgICAgLy8gQ2FsbGVkIGJlZm9yZSBh
Y2Nlc3NpbmcgbV9mcmFtZXNbaW5kZXhdIGZvciBpbmZvIHdpdGhvdXQgZGVjb2RpbmcuIFJldHVy
bnMgZmFsc2Ugb24gaW5kZXggb3V0IG9mIGJvdW5kcy4KLSAgICBib29sIGVuc3VyZUZyYW1lSXND
YWNoZWQoc2l6ZV90IGluZGV4LCBJbWFnZUZyYW1lQ2FjaGluZyA9IENhY2hlTWV0YWRhdGFBbmRG
cmFtZSk7CisgICAgYm9vbCBlbnN1cmVGcmFtZUlzQ2FjaGVkKHNpemVfdCBpbmRleCwgSW1hZ2VG
cmFtZURhdGE6OkNhY2hpbmcgPSBJbWFnZUZyYW1lRGF0YTo6Q2FjaGluZzo6TWV0YWRhdGFBbmRJ
bWFnZSk7CiAKICAgICAvLyBDYWxsZWQgdG8gaW52YWxpZGF0ZSBjYWNoZWQgZGF0YS4gV2hlbiB8
ZGVzdHJveUFsbHwgaXMgdHJ1ZSwgd2Ugd2lwZSBvdXQKICAgICAvLyB0aGUgZW50aXJlIGZyYW1l
IGJ1ZmZlciBjYWNoZSBhbmQgdGVsbCB0aGUgaW1hZ2Ugc291cmNlIHRvIGRlc3Ryb3kKQEAgLTI5
Miw3ICsyMzcsNyBAQCBwcml2YXRlOgogICAgIG11dGFibGUgSW50U2l6ZSBtX3NpemVSZXNwZWN0
aW5nT3JpZW50YXRpb247CiAKICAgICBzaXplX3QgbV9jdXJyZW50RnJhbWUgeyAwIH07IC8vIFRo
ZSBpbmRleCBvZiB0aGUgY3VycmVudCBmcmFtZSBvZiBhbmltYXRpb24uCi0gICAgVmVjdG9yPEZy
YW1lRGF0YSwgMT4gbV9mcmFtZXM7IC8vIEFuIGFycmF5IG9mIHRoZSBjYWNoZWQgZnJhbWVzIG9m
IHRoZSBhbmltYXRpb24uIFdlIGhhdmUgdG8gcmVmIGZyYW1lcyB0byBwaW4gdGhlbSBpbiB0aGUg
Y2FjaGUuCisgICAgVmVjdG9yPEltYWdlRnJhbWVEYXRhLCAxPiBtX2ZyYW1lczsgLy8gQW4gYXJy
YXkgb2YgdGhlIGNhY2hlZCBmcmFtZXMgb2YgdGhlIGFuaW1hdGlvbi4gV2UgaGF2ZSB0byByZWYg
ZnJhbWVzIHRvIHBpbiB0aGVtIGluIHRoZSBjYWNoZS4KIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxU
aW1lcj4gbV9mcmFtZVRpbWVyOwogICAgIGludCBtX3JlcGV0aXRpb25Db3VudCB7IGNBbmltYXRp
b25Ob25lIH07IC8vIEhvdyBtYW55IHRvdGFsIGFuaW1hdGlvbiBsb29wcyB3ZSBzaG91bGQgZG8u
IFRoaXMgd2lsbCBiZSBjQW5pbWF0aW9uTm9uZSBpZiB0aGlzIGltYWdlIHR5cGUgaXMgaW5jYXBh
YmxlIG9mIGFuaW1hdGlvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0JpdG1hcFBpeGVscy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Qml0bWFwUGl4ZWxzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWZhZTNkMmU0MGNjZjFkODFmNmJhNTdkYjY4MmQ5
MmQ0NjliYmFjMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0JpdG1hcFBpeGVscy5oCkBAIC0wLDAgKzEsMTgzIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAi
Q29sb3IuaCIKKyNpbmNsdWRlICJJbnRSZWN0LmgiCisjaW5jbHVkZSAiSW50U2l6ZS5oIgorI2lu
Y2x1ZGUgIk5hdGl2ZUltYWdlUHRyLmgiCisKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQml0bWFwUGl4ZWxzIHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPEJpdG1hcFBpeGVscz4gY3JlYXRlKGNvbnN0IEludFNpemUm
IHNpemUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSkKKyAgICB7CisgICAgICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPEJpdG1hcFBpeGVscz4oc2l6ZSwgcHJlbXVsdGlwbHlBbHBoYSk7CisgICAg
fQorCisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxCaXRtYXBQaXhlbHM+IGNyZWF0ZShjb25z
dCBCaXRtYXBQaXhlbHMmIG90aGVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8Qml0bWFwUGl4ZWxzPihvdGhlcik7CisgICAgfQorCisgICAgQml0bWFwUGl4ZWxzKGNv
bnN0IEludFNpemUmIHNpemUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSA9IHRydWUpCisgICAgICAg
IDogbV9wcmVtdWx0aXBseUFscGhhKHByZW11bHRpcGx5QWxwaGEpCisgICAgeworICAgICAgICBB
U1NFUlQoIXNpemUuaXNFbXB0eSgpKTsKKyAgICAgICAgc2V0U2l6ZShzaXplKTsKKyAgICB9CisK
KyAgICBCaXRtYXBQaXhlbHMoY29uc3QgQml0bWFwUGl4ZWxzJiBvdGhlcikKKyAgICB7CisgICAg
ICAgIGlmICh0aGlzID09ICZvdGhlcikKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgCisg
ICAgICAgIG1fYmFja2luZ1N0b3JlID0gb3RoZXIubV9iYWNraW5nU3RvcmU7CisgICAgICAgIG1f
cGl4ZWxzID0gbV9iYWNraW5nU3RvcmUuZGF0YSgpOworICAgICAgICBtX3NpemUgPSBvdGhlci5t
X3NpemU7CisgICAgICAgIG1fcmVjdCA9IG90aGVyLm1fcmVjdDsKKyAgICAgICAgbV9wcmVtdWx0
aXBseUFscGhhID0gb3RoZXIubV9wcmVtdWx0aXBseUFscGhhOworICAgIH0KKworICAgIE5hdGl2
ZUltYWdlUHRyIGltYWdlKCkgY29uc3Q7CisKKyAgICBib29sIHNldFNpemUoY29uc3QgSW50U2l6
ZSYgc2l6ZSkKKyAgICB7CisgICAgICAgIGlmICghbV9iYWNraW5nU3RvcmUudHJ5UmVzZXJ2ZUNh
cGFjaXR5KHNpemUuYXJlYSgpKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
CisgICAgICAgIG1fYmFja2luZ1N0b3JlLnJlc2l6ZShzaXplLmFyZWEoKSk7CisgICAgICAgIG1f
cGl4ZWxzID0gbV9iYWNraW5nU3RvcmUuZGF0YSgpOworICAgICAgICBtX3NpemUgPSBzaXplOwor
ICAgICAgICBtX3JlY3QgPSBJbnRSZWN0KEludFBvaW50KCksIG1fc2l6ZSk7CisgICAgICAgIGNs
ZWFyKCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAKKyAgICB2b2lkIHNldFJl
Y3QoY29uc3QgSW50UmVjdCYgcmVjdCkKKyAgICB7CisgICAgICAgIEFTU0VSVCghbV9zaXplLmlz
RW1wdHkoKSk7CisgICAgICAgIEFTU0VSVChpbkJvdW5kcyhyZWN0KSk7CisgICAgICAgIG1fcmVj
dCA9IHJlY3Q7CisgICAgfQorICAgIAorICAgIEludFNpemUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fc2l6ZTsgfQorICAgIEludFJlY3QgcmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdDsgfQor
CisgICAgUkdCQTMyKiBhdChpbnQgeCwgaW50IHkpIGNvbnN0CisgICAgeworICAgICAgICByZXR1
cm4gbV9waXhlbHMgKyB5ICogbV9zaXplLndpZHRoKCkgKyB4OworICAgIH0KKworICAgIHZvaWQg
Y2xlYXIoKQorICAgIHsKKyAgICAgICAgbWVtc2V0KG1fcGl4ZWxzLCAwLCBtX3NpemUuYXJlYSgp
ICogc2l6ZW9mKFJHQkEzMikpOworICAgIH0KKworICAgIHZvaWQgY2xlYXJSZWN0KGNvbnN0IElu
dFJlY3QmIHJlY3QpCisgICAgeworICAgICAgICBpZiAocmVjdC5pc0VtcHR5KCkgfHwgaW5Cb3Vu
ZHMocmVjdCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIAorICAgICAgICBzaXplX3Qg
cmVjdFdpZHRoSW5CeXRlcyA9IHJlY3Qud2lkdGgoKSAqIHNpemVvZihSR0JBMzIpOworICAgICAg
ICBSR0JBMzIqIHN0YXJ0ID0gYXQocmVjdC54KCksIHJlY3QueSgpKTsKKyAgICAgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCByZWN0LmhlaWdodCgpOyArK2kpIHsKKyAgICAgICAgICAgIG1lbXNldChz
dGFydCwgMCwgcmVjdFdpZHRoSW5CeXRlcyk7CisgICAgICAgICAgICBzdGFydCArPSBtX3NpemUu
d2lkdGgoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgcmVwZWF0Rmlyc3RSb3coY29u
c3QgSW50UmVjdCYgcmVjdCkKKyAgICB7CisgICAgICAgIGlmIChyZWN0LmlzRW1wdHkoKSB8fCBp
bkJvdW5kcyhyZWN0KSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgCisgICAgICAgIHNp
emVfdCByZWN0V2lkdGhJbkJ5dGVzID0gcmVjdC53aWR0aCgpICogc2l6ZW9mKFJHQkEzMik7Cisg
ICAgICAgIFJHQkEzMiogc3JjID0gYXQocmVjdC54KCksIHJlY3QueSgpKTsKKyAgICAgICAgUkdC
QTMyKiBkZXN0ID0gc3JjICsgbV9zaXplLndpZHRoKCk7CisgICAgICAgIGZvciAoaW50IGkgPSAx
OyBpIDwgcmVjdC5oZWlnaHQoKTsgKytpKSB7CisgICAgICAgICAgICBtZW1jcHkoZGVzdCwgc3Jj
LCByZWN0V2lkdGhJbkJ5dGVzKTsKKyAgICAgICAgICAgIGRlc3QgKz0gbV9zaXplLndpZHRoKCk7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIHNldFJHQkEoaW50IHgsIGludCB5LCB1bnNp
Z25lZCByLCB1bnNpZ25lZCBnLCB1bnNpZ25lZCBiLCB1bnNpZ25lZCBhKQorICAgIHsKKyAgICAg
ICAgc2V0UkdCQShhdCh4LCB5KSwgciwgZywgYiwgYSk7CisgICAgfQorCisgICAgdm9pZCBzZXRS
R0JBKFJHQkEzMiogZGVzdCwgdW5zaWduZWQgciwgdW5zaWduZWQgZywgdW5zaWduZWQgYiwgdW5z
aWduZWQgYSkKKyAgICB7CisgICAgICAgIGlmICghbV9wcmVtdWx0aXBseUFscGhhIHx8IGEgPj0g
MjU1KQorICAgICAgICAgICAgKmRlc3QgPSBtYWtlUkdCQShyLCBnLCBiLCBhKTsKKyAgICAgICAg
ZWxzZSBpZiAoIWEpCisgICAgICAgICAgICAqZGVzdCA9IDA7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICpkZXN0ID0gbWFrZVByZW11bHRpcGxpZWRSR0JBKHIsIGcsIGIsIGEpOworICAgIH0K
KworICAgIHZvaWQgb3ZlclJHQkEoUkdCQTMyKiBkZXN0LCB1bnNpZ25lZCByLCB1bnNpZ25lZCBn
LCB1bnNpZ25lZCBiLCB1bnNpZ25lZCBhKQorICAgIHsKKyAgICAgICAgaWYgKCFhKQorICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAKKyAgICAgICAgaWYgKGEgPj0gMjU1IHx8ICFhbHBoYUNo
YW5uZWwoKmRlc3QpKSB7CisgICAgICAgICAgICBzZXRSR0JBKGRlc3QsIHIsIGcsIGIsIGEpOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAoIW1f
cHJlbXVsdGlwbHlBbHBoYSkKKyAgICAgICAgICAgICpkZXN0ID0gbWFrZVByZW11bHRpcGxpZWRS
R0JBKHJlZENoYW5uZWwoKmRlc3QpLCBncmVlbkNoYW5uZWwoKmRlc3QpLCBibHVlQ2hhbm5lbCgq
ZGVzdCksIGFscGhhQ2hhbm5lbCgqZGVzdCkpOworICAgICAgICAKKyAgICAgICAgUkdCQTMyIHNy
YyA9IG1ha2VSR0JBKHIsIGcsIGIsIGEpOworICAgICAgICAqZGVzdCA9IENvbG9yKCpkZXN0KS5i
bGVuZChzcmMpLnJnYigpOworICAgICAgICAKKyAgICAgICAgaWYgKCFtX3ByZW11bHRpcGx5QWxw
aGEpCisgICAgICAgICAgICAqZGVzdCA9IG1ha2VVblByZW11bHRpcGxpZWRSR0JBKHJlZENoYW5u
ZWwoKmRlc3QpLCBncmVlbkNoYW5uZWwoKmRlc3QpLCBibHVlQ2hhbm5lbCgqZGVzdCksIGFscGhh
Q2hhbm5lbCgqZGVzdCkpOworICAgIH0KKworICAgIGJvb2wgaW5Cb3VuZHMoY29uc3QgSW50UG9p
bnQmIHBvaW50KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIEludFJlY3QoSW50UG9pbnQo
KSwgbV9zaXplKS5jb250YWlucyhwb2ludCk7CisgICAgfQorCisgICAgYm9vbCBpbkJvdW5kcyhj
b25zdCBJbnRSZWN0JiByZWN0KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIEludFJlY3Qo
SW50UG9pbnQoKSwgbV9zaXplKS5jb250YWlucyhyZWN0KTsKKyAgICB9CisKK3ByaXZhdGU6Cisg
ICAgVmVjdG9yPFJHQkEzMj4gbV9iYWNraW5nU3RvcmU7CisgICAgUkdCQTMyKiBtX3BpeGVscyB7
IG51bGxwdHIgfTsKKyAgICBJbnRTaXplIG1fc2l6ZTsKKyAgICBJbnRSZWN0IG1fcmVjdDsgLy8g
VGhpcyB3aWxsIGFsd2F5cyBqdXN0IGJlIHRoZSBlbnRpcmUgYnVmZmVyIGV4Y2VwdCBmb3IgR0lG
IGFuZCBQTkcgZnJhbWVzCisgICAgYm9vbCBtX3ByZW11bHRpcGx5QWxwaGEgeyB0cnVlIH07Cit9
OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHAKaW5kZXgg
NGUyNWFhNmZkNzRkMWU0NmM1NDE2MTQ5OGJjMTcyYmY2MDA4NzVkMS4uNDM5ZjVhNjNjN2JlYmU1
NjA0MmIyNGU3ZDcyZWNjZWNmMzZjNDBjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0NvbG9yLmNwcApAQCAtNDksNiArNDksNDAgQEAgY29uc3QgUkdCQTMyIENvbG9yOjp0
cmFuc3BhcmVudDsKIHN0YXRpYyBjb25zdCBSR0JBMzIgbGlnaHRlbmVkQmxhY2sgPSAweEZGNTQ1
NDU0Owogc3RhdGljIGNvbnN0IFJHQkEzMiBkYXJrZW5lZFdoaXRlID0gMHhGRkFCQUJBQjsKIAor
c3RhdGljIGlubGluZSB1bnNpZ25lZCBtdWx0aXBseTI1NSh1bnNpZ25lZCBjKQoreworICAgIC8v
IGMgKiAyNTUKKyAgICAvLyAgID0gYyAqICgyNTYgLSAxKQorICAgIC8vICAgPSBjICogMjU2IC0g
YworICAgIHJldHVybiAoYyA8PCA4KSAtIGM7Cit9CisKK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQg
ZGl2aWRlMjU1KHVuc2lnbmVkIGMpCit7CisgICAgLy8gYyAvIDI1NQorICAgIC8vICAgPSBjIC8g
MjU2ICogKDEgKyAxIC8gMjU1KQorICAgIC8vICAgPSAoYyArIGMgLyAyNTUpIC8gMjU2CisgICAg
Ly8gICA9IChjICsgKGMgKyBjIC8gMjU1KSAvIDI1NikgLyAyNTYKKyAgICAvLyAgID0gKGMgKyBj
IC8gMjU2ICsgYyAvICgyNTUgeCAyNTYpKSAvIDI1NgorICAgIC8vICB+PSAoYyArIGMgLyAyNTYg
KyAxKSAvIDI1NgorICAgIHJldHVybiAoYyArIChjID4+IDgpICsgMSkgPj4gODsKK30KKyAgICAK
K3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgZGl2aWRlQ2VpbCh1bnNpZ25lZCBjLCB1bnNpZ25lZCBk
KQoreworICAgIHJldHVybiAoYyArIGQgLSAxKSAvIGQ7Cit9CisgICAgCitzdGF0aWMgaW5saW5l
IHVuc2lnbmVkIHByZW11bHRpcGxpZWRDaGFubmVsKHVuc2lnbmVkIGMsIHVuc2lnbmVkIGEpCit7
CisgICAgcmV0dXJuIGRpdmlkZTI1NShjICogYSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdW5zaWdu
ZWQgdW5wcmVtdWx0aXBsaWVkQ2hhbm5lbCh1bnNpZ25lZCBjLCB1bnNpZ25lZCBhKQoreworICAg
IHJldHVybiBkaXZpZGVDZWlsKG11bHRpcGx5MjU1KGMpLCBhKTsKK30KKyAgICAKIFJHQkEzMiBt
YWtlUkdCKGludCByLCBpbnQgZywgaW50IGIpCiB7CiAgICAgcmV0dXJuIDB4RkYwMDAwMDAgfCBz
dGQ6Om1heCgwLCBzdGQ6Om1pbihyLCAyNTUpKSA8PCAxNiB8IHN0ZDo6bWF4KDAsIHN0ZDo6bWlu
KGcsIDI1NSkpIDw8IDggfCBzdGQ6Om1heCgwLCBzdGQ6Om1pbihiLCAyNTUpKTsKQEAgLTU5LDYg
KzkzLDE2IEBAIFJHQkEzMiBtYWtlUkdCQShpbnQgciwgaW50IGcsIGludCBiLCBpbnQgYSkKICAg
ICByZXR1cm4gc3RkOjptYXgoMCwgc3RkOjptaW4oYSwgMjU1KSkgPDwgMjQgfCBzdGQ6Om1heCgw
LCBzdGQ6Om1pbihyLCAyNTUpKSA8PCAxNiB8IHN0ZDo6bWF4KDAsIHN0ZDo6bWluKGcsIDI1NSkp
IDw8IDggfCBzdGQ6Om1heCgwLCBzdGQ6Om1pbihiLCAyNTUpKTsKIH0KIAorUkdCQTMyIG1ha2VQ
cmVtdWx0aXBsaWVkUkdCQShpbnQgciwgaW50IGcsIGludCBiLCBpbnQgYSkKK3sKKyAgICByZXR1
cm4gbWFrZVJHQkEocHJlbXVsdGlwbGllZENoYW5uZWwociwgYSksIHByZW11bHRpcGxpZWRDaGFu
bmVsKGcsIGEpLCBwcmVtdWx0aXBsaWVkQ2hhbm5lbChiLCBhKSwgYSk7Cit9CisgICAgCitSR0JB
MzIgbWFrZVVuUHJlbXVsdGlwbGllZFJHQkEoaW50IHIsIGludCBnLCBpbnQgYiwgaW50IGEpCit7
CisgICAgcmV0dXJuIG1ha2VSR0JBKHVucHJlbXVsdGlwbGllZENoYW5uZWwociwgYSksIHVucHJl
bXVsdGlwbGllZENoYW5uZWwoZywgYSksIHVucHJlbXVsdGlwbGllZENoYW5uZWwoYiwgYSksIGEp
OworfQorICAgIAogc3RhdGljIGludCBjb2xvckZsb2F0VG9SR0JBQnl0ZShmbG9hdCBmKQogewog
ICAgIC8vIFdlIHVzZSBscm91bmRmIGFuZCAyNTUgaW5zdGVhZCBvZiBuZXh0YWZ0ZXJmKDI1Niwg
MCkgdG8gbWF0Y2ggQ0cncyByb3VuZGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQ29sb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0NvbG9yLmgKaW5kZXggZGQyNjI3MGJiNDY2MGIzM2FlMDcwZThjOTQ0NTIwZDcyODQ1NGI4YS4u
YTU0NTMyYzc3NTVhN2M4NzY5MzYyNDBjYWU0ZWMzN2E0ZGEwZDA0MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCkBAIC01NCw2ICs1NCw4IEBAIHR5cGVkZWYgdW5z
aWduZWQgUkdCQTMyOyAvLyBEZXByZWNhdGVkOiBUeXBlIGZvciBhbiBSR0JBIHF1YWRydXBsZXQu
IFVzZSBSR0JBIGNsCiAKIFdFQkNPUkVfRVhQT1JUIFJHQkEzMiBtYWtlUkdCKGludCByLCBpbnQg
ZywgaW50IGIpOwogV0VCQ09SRV9FWFBPUlQgUkdCQTMyIG1ha2VSR0JBKGludCByLCBpbnQgZywg
aW50IGIsIGludCBhKTsKK1dFQkNPUkVfRVhQT1JUIFJHQkEzMiBtYWtlUHJlbXVsdGlwbGllZFJH
QkEoaW50IHIsIGludCBnLCBpbnQgYiwgaW50IGEpOworV0VCQ09SRV9FWFBPUlQgUkdCQTMyIG1h
a2VVblByZW11bHRpcGxpZWRSR0JBKGludCByLCBpbnQgZywgaW50IGIsIGludCBhKTsKIAogV0VC
Q09SRV9FWFBPUlQgUkdCQTMyIGNvbG9yV2l0aE92ZXJyaWRlQWxwaGEoUkdCQTMyIGNvbG9yLCBm
bG9hdCBvdmVycmlkZUFscGhhKTsKIFdFQkNPUkVfRVhQT1JUIFJHQkEzMiBjb2xvcldpdGhPdmVy
cmlkZUFscGhhKFJHQkEzMiBjb2xvciwgT3B0aW9uYWw8ZmxvYXQ+IG92ZXJyaWRlQWxwaGEpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKaW5kZXggN2EyOTk5MmY3NzE4
OGUwMzgyOGQ4MGE2NWI4YmUyY2Q4ZGMyZGU3Ni4uOGU3YjUyYjFmNGYzMWM3NGEzY2IyYTEzMjE1
ZGE3N2EyYjE4YzA3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5o
CkBAIC0xMzcsOCArMTM3LDExIEBAIHB1YmxpYzoKIAogICAgIGVudW0gVGlsZVJ1bGUgeyBTdHJl
dGNoVGlsZSwgUm91bmRUaWxlLCBTcGFjZVRpbGUsIFJlcGVhdFRpbGUgfTsKIAorICAgIHZpcnR1
YWwgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2UoKSB7IHJldHVybiBudWxscHRyOyB9CisgICAg
dmlydHVhbCBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZU9mU2l6ZShjb25zdCBJbnRTaXplJikg
eyByZXR1cm4gbnVsbHB0cjsgfQogICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1h
Z2VGb3JDdXJyZW50RnJhbWUoKSB7IHJldHVybiBudWxscHRyOyB9CiAgICAgdmlydHVhbCBJbWFn
ZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uRm9yQ3VycmVudEZyYW1lKCkgeyByZXR1cm4gSW1hZ2VP
cmllbnRhdGlvbigpOyB9CisgICAgdmlydHVhbCBWZWN0b3I8TmF0aXZlSW1hZ2VQdHI+IGZyYW1l
c05hdGl2ZUltYWdlcygpIHsgcmV0dXJuIHsgfTsgfQogCiAgICAgLy8gQWNjZXNzb3JzIGZvciBu
YXRpdmUgaW1hZ2UgZm9ybWF0cy4KIApAQCAtMTUwLDEyICsxNTMsNiBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBDRkRhdGFSZWYgZ2V0VElGRlJlcHJlc2VudGF0aW9uKCkgeyByZXR1cm4gbnVsbHB0
cjsgfQogI2VuZGlmCiAKLSNpZiBVU0UoQ0cpCi0gICAgdmlydHVhbCBDR0ltYWdlUmVmIGdldENH
SW1hZ2VSZWYoKSB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgdmlydHVhbCBDR0ltYWdlUmVmIGdl
dEZpcnN0Q0dJbWFnZVJlZk9mU2l6ZShjb25zdCBJbnRTaXplJikgeyByZXR1cm4gbnVsbHB0cjsg
fQotICAgIHZpcnR1YWwgUmV0YWluUHRyPENGQXJyYXlSZWY+IGdldENHSW1hZ2VBcnJheSgpIHsg
cmV0dXJuIG51bGxwdHI7IH0KLSNlbmRpZgotCiAjaWYgUExBVEZPUk0oV0lOKQogICAgIHZpcnR1
YWwgYm9vbCBnZXRIQklUTUFQKEhCSVRNQVApIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVh
bCBib29sIGdldEhCSVRNQVBPZlNpemUoSEJJVE1BUCwgY29uc3QgSW50U2l6ZSopIHsgcmV0dXJu
IGZhbHNlOyB9CkBAIC0xNzksNiArMTc2LDggQEAgcHVibGljOgogI2lmICFBU1NFUlRfRElTQUJM
RUQKICAgICB2aXJ0dWFsIGJvb2wgbm90U29saWRDb2xvcigpIHsgcmV0dXJuIHRydWU7IH0KICNl
bmRpZgorICAgIAorICAgIHZpcnR1YWwgdm9pZCBsYXlvdXRJZk5lZWRlZCgpIHsgfQogCiAgICAg
dmlydHVhbCB2b2lkIGR1bXAoVGV4dFN0cmVhbSYpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lRGF0YS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lRGF0YS5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YmZkMjBjZjhlNjFmNGIxYTFmZTA4ZWIzMzJiNzE2NTdmMDE0OGMxNQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVEYXRhLmNwcApA
QCAtMCwwICsxLDEzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW1hZ2VGcmFtZURhdGEuaCIK
KworI2luY2x1ZGUgIkNvbG9yLmgiCisKKyNpZiBVU0UoQ0cpCisjaW5jbHVkZSAiSW1hZ2VEZWNv
ZGVyQ0cuaCIKKyNlbHNlCisjaW5jbHVkZSAiSW1hZ2VEZWNvZGVyLmgiCisjZW5kaWYKKworI2lu
Y2x1ZGUgIlBsYXRmb3JtSW1hZ2UuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitJbWFnZUZy
YW1lRGF0YTo6SW1hZ2VGcmFtZURhdGEoKQoreworfQorCitJbWFnZUZyYW1lRGF0YTo6SW1hZ2VG
cmFtZURhdGEoTmF0aXZlSW1hZ2VQdHImJiBpbWFnZSkKKyAgICA6IG1fc3RhdHVzKERlY29kaW5n
U3RhdHVzOjpDb21wbGV0ZSkKKyAgICAsIG1faW1hZ2UoV1RGTW92ZShpbWFnZSkpCit7CisgICAg
bV9zaXplID0gUGxhdGZvcm1JbWFnZShtX2ltYWdlKS5zaXplKCk7CisgICAgbV9oYXNBbHBoYSA9
IFBsYXRmb3JtSW1hZ2UobV9pbWFnZSkuaGFzQWxwaGEoKTsKK30KKworSW1hZ2VGcmFtZURhdGE6
OkltYWdlRnJhbWVEYXRhKEltYWdlRGVjb2RlciYgZGVjb2Rlciwgc2l6ZV90IGluZGV4LCBTdWJz
YW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwsIENhY2hpbmcgZnJhbWVDYWNoaW5nKQorewor
ICAgIEFTU0VSVChmcmFtZUNhY2hpbmcgPT0gQ2FjaGluZzo6TWV0YWRhdGEgfHwgZnJhbWVDYWNo
aW5nID09IENhY2hpbmc6Ok1ldGFkYXRhQW5kSW1hZ2UpOworICAgIAorICAgIGlmIChmcmFtZUNh
Y2hpbmcgPT0gQ2FjaGluZzo6SW1hZ2UgfHwgZnJhbWVDYWNoaW5nID09IENhY2hpbmc6Ok1ldGFk
YXRhQW5kSW1hZ2UpIHsKKyAgICAgICAgbV9pbWFnZSA9IGRlY29kZXIuY3JlYXRlRnJhbWVJbWFn
ZUF0SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwpOworICAgICAgICBtX3N1YnNhbXBsaW5n
TGV2ZWwgPSBzdWJzYW1wbGluZ0xldmVsOworICAgIH0KKyAgICAKKyAgICBpZiAoZnJhbWVDYWNo
aW5nID09IENhY2hpbmc6Ok1ldGFkYXRhIHx8IGZyYW1lQ2FjaGluZyA9PSBDYWNoaW5nOjpNZXRh
ZGF0YUFuZEltYWdlKSB7CisgICAgICAgIG1fb3JpZW50YXRpb24gPSBkZWNvZGVyLm9yaWVudGF0
aW9uQXRJbmRleChpbmRleCk7CisgICAgICAgIG1fc3RhdHVzID0gZGVjb2Rlci5mcmFtZUlzQ29t
cGxldGVBdEluZGV4KGluZGV4KSA/IERlY29kaW5nU3RhdHVzOjpDb21wbGV0ZSA6IERlY29kaW5n
U3RhdHVzOjpQYXJ0aWFsOworICAgICAgICAKKyAgICAgICAgaWYgKGRlY29kZXIucmVwZXRpdGlv
bkNvdW50KCkgIT0gY0FuaW1hdGlvbk5vbmUpCisgICAgICAgICAgICBtX2R1cmF0aW9uID0gZGVj
b2Rlci5mcmFtZUR1cmF0aW9uQXRJbmRleChpbmRleCk7CisgICAgICAgIAorICAgICAgICBtX2hh
c0FscGhhID0gZGVjb2Rlci5mcmFtZUhhc0FscGhhQXRJbmRleChpbmRleCk7CisgICAgICAgIG1f
c2l6ZSA9IGRlY29kZXIuZnJhbWVTaXplQXRJbmRleChpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCk7
CisgICAgfQorfQorCitJbWFnZUZyYW1lRGF0YTo6fkltYWdlRnJhbWVEYXRhKCkKK3sKKyAgICBj
bGVhclN1YkltYWdlcygpOworfQorICAgIAorSW1hZ2VGcmFtZURhdGEmIEltYWdlRnJhbWVEYXRh
OjpvcGVyYXRvcj0oY29uc3QgSW1hZ2VGcmFtZURhdGEmIG90aGVyKQoreworICAgIGlmICh0aGlz
ID09ICZvdGhlcikKKyAgICAgICAgcmV0dXJuICp0aGlzOworCisgICAgbV9zdGF0dXMgPSBvdGhl
ci5tX3N0YXR1czsKKyAgICBtX3NpemUgPSBvdGhlci5tX3NpemU7CisgICAgbV9pbWFnZSA9IG90
aGVyLm1faW1hZ2U7CisgICAgCisgICAgbV9waXhlbHMgPSBvdGhlci5waXhlbHMoKSA/IEJpdG1h
cFBpeGVsczo6Y3JlYXRlKCpvdGhlci5waXhlbHMoKSkgOiBudWxscHRyOworICAgIAorICAgIG1f
b3JpZW50YXRpb24gPSBvdGhlci5tX29yaWVudGF0aW9uOworICAgIG1fc3Vic2FtcGxpbmdMZXZl
bCA9IG90aGVyLm1fc3Vic2FtcGxpbmdMZXZlbDsKKyAgICBtX2R1cmF0aW9uID0gb3RoZXIubV9k
dXJhdGlvbjsKKyAgICBtX2hhc0FscGhhID0gb3RoZXIubV9oYXNBbHBoYTsKKyAgICByZXR1cm4g
KnRoaXM7Cit9CisKK3ZvaWQgSW1hZ2VGcmFtZURhdGE6OmNsZWFyU3ViSW1hZ2VzKCkKK3sKKyAg
ICBpZiAoIW1faW1hZ2UpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBQbGF0Zm9ybUltYWdl
KG1faW1hZ2UpLmNsZWFyU3ViSW1hZ2VzKCk7Cit9CisKK3Vuc2lnbmVkIEltYWdlRnJhbWVEYXRh
OjpjbGVhcihDYWNoaW5nIGZyYW1lQ2FjaGluZykKK3sKKyAgICBBU1NFUlQoZnJhbWVDYWNoaW5n
ID09IENhY2hpbmc6OkVtcHR5IHx8IGZyYW1lQ2FjaGluZyA9PSBDYWNoaW5nOjpNZXRhZGF0YSk7
CisgICAgCisgICAgdW5zaWduZWQgZnJhbWVCeXRlcyA9IHRoaXMtPmZyYW1lQnl0ZXMoKTsKKyAg
ICAKKyAgICBjbGVhclN1YkltYWdlcygpOworICAgIAorICAgIGlmIChmcmFtZUNhY2hpbmcgPT0g
Q2FjaGluZzo6RW1wdHkpCisgICAgICAgICp0aGlzID0gSW1hZ2VGcmFtZURhdGEoKTsKKyAgICBl
bHNlCisgICAgICAgIG1faW1hZ2UgPSBudWxscHRyOworICAgIAorICAgIHJldHVybiBmcmFtZUJ5
dGVzOworfQorCitDb2xvciBJbWFnZUZyYW1lRGF0YTo6c2luZ2xlUGl4ZWxTb2xpZENvbG9yKCkg
Y29uc3QKK3sKKyAgICBpZiAoIWhhc0ltYWdlKCkgfHwgbV9zaXplICE9IEludFNpemUoMSwgMSkp
CisgICAgICAgIHJldHVybiBDb2xvcigpOworICAgIAorICAgIHJldHVybiBQbGF0Zm9ybUltYWdl
KG1faW1hZ2UpLnNpbmdsZVBpeGVsU29saWRDb2xvcigpOworfQorCitib29sIEltYWdlRnJhbWVE
YXRhOjppc0FsbW9zdFNvbGlkQ29sb3IoKSBjb25zdAoreworICAgIGlmICghaGFzSW1hZ2UoKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIHJldHVybiBQbGF0Zm9ybUltYWdlKG1f
aW1hZ2UpLmlzQWxtb3N0U29saWRDb2xvcigpOworfQorICAgIAorfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZURhdGEuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVEYXRhLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjZm
Yjc1OGVmM2E0MjU4Y2JkYjNhZTJmNDZlODQ0MGY3MzBlZjQ3YwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVEYXRhLmgKQEAgLTAs
MCArMSwxMDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJCaXRtYXBQaXhlbHMuaCIKKyNpbmNsdWRlICJJ
bWFnZU9yaWVudGF0aW9uLmgiCisjaW5jbHVkZSAiSW50U2l6ZS5oIgorI2luY2x1ZGUgIk5hdGl2
ZUltYWdlUHRyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ29sb3I7CitjbGFz
cyBJbWFnZURlY29kZXI7CisKKy8vIFN1YnNhbXBsaW5nTGV2ZWwuIDAgaXMgbm8gc3Vic2FtcGxp
bmcsIDEgaXMgaGFsZiBkaW1lbnNpb25zIG9uIGVhY2ggYXhpcyBldGMuCit1c2luZyBTdWJzYW1w
bGluZ0xldmVsID0gdWludDhfdDsKKworZW51bSA6IFN1YnNhbXBsaW5nTGV2ZWwgeworICAgIE1p
blN1YnNhbXBsaW5nTGV2ZWwgPSAwLAorICAgIE1heFN1YnNhbXBsaW5nTGV2ZWwgPSAzLAorICAg
IERlZmF1bHRTdWJzYW1wbGluZ0xldmVsID0gTWluU3Vic2FtcGxpbmdMZXZlbAorfTsKKworY2xh
c3MgSW1hZ2VGcmFtZURhdGEgeworICAgIGZyaWVuZCBjbGFzcyBJbWFnZURlY29kZXI7CitwdWJs
aWM6CisgICAgZW51bSBjbGFzcyBDYWNoaW5nIHsgRW1wdHksIE1ldGFkYXRhLCBJbWFnZSwgTWV0
YWRhdGFBbmRJbWFnZSB9OworICAgIGVudW0gY2xhc3MgRGVjb2RpbmdTdGF0dXMgeyBFbXB0eSwg
UGFydGlhbCwgQ29tcGxldGUgfTsKKyAgICAKKyAgICBJbWFnZUZyYW1lRGF0YSgpOworICAgIElt
YWdlRnJhbWVEYXRhKE5hdGl2ZUltYWdlUHRyJiYpOworICAgIEltYWdlRnJhbWVEYXRhKEltYWdl
RGVjb2RlciYsIHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCA9IERlZmF1bHRTdWJzYW1w
bGluZ0xldmVsLCBDYWNoaW5nID0gQ2FjaGluZzo6TWV0YWRhdGFBbmRJbWFnZSk7CisgICAgSW1h
Z2VGcmFtZURhdGEoY29uc3QgSW1hZ2VGcmFtZURhdGEmIG90aGVyKSB7IG9wZXJhdG9yPShvdGhl
cik7IH0KKworICAgIH5JbWFnZUZyYW1lRGF0YSgpOworCisgICAgSW1hZ2VGcmFtZURhdGEmIG9w
ZXJhdG9yPShjb25zdCBJbWFnZUZyYW1lRGF0YSYgb3RoZXIpOworICAgIAorICAgIHVuc2lnbmVk
IGNsZWFyKENhY2hpbmcpOworICAgIENvbG9yIHNpbmdsZVBpeGVsU29saWRDb2xvcigpIGNvbnN0
OworICAgIGJvb2wgaXNBbG1vc3RTb2xpZENvbG9yKCkgY29uc3Q7CisgICAgCisgICAgRGVjb2Rp
bmdTdGF0dXMgc3RhdHVzKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0dXM7IH0KKyAgICBib29sIGlz
Q29tcGxldGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXR1cyA9PSBEZWNvZGluZ1N0YXR1czo6Q29t
cGxldGU7IH0KKyAgICBJbnRTaXplIHNpemUoKSBjb25zdCB7IHJldHVybiBoYXNQaXhlbHMoKSA/
IHBpeGVscygpLT5zaXplKCkgOiBtX3NpemU7IH0KKyAgICB1bnNpZ25lZCBmcmFtZUJ5dGVzKCkg
Y29uc3QgeyByZXR1cm4gaGFzSW1hZ2UoKSA/IG1fc2l6ZS5hcmVhKCkgKiBzaXplb2YoUkdCQTMy
KSA6IDA7IH0KKyAgICBOYXRpdmVJbWFnZVB0ciBpbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1faW1h
Z2U7IH0KKyAgICBCaXRtYXBQaXhlbHMqIHBpeGVscygpIGNvbnN0IHsgcmV0dXJuIG1fcGl4ZWxz
ID8gbV9waXhlbHMuZ2V0KCkgOiBudWxscHRyOyB9CisgICAgCisgICAgSW1hZ2VPcmllbnRhdGlv
biBvcmllbnRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZW50YXRpb247IH0KKyAgICBTdWJz
YW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwoKSBjb25zdCB7IHJldHVybiBtX3N1YnNhbXBs
aW5nTGV2ZWw7IH0KKyAgICBmbG9hdCBkdXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZHVyYXRp
b247IH0KKyAgICAKKyAgICBib29sIGhhc0FscGhhKCkgY29uc3QgeyByZXR1cm4gbV9oYXNBbHBo
YTsgfQorICAgIGJvb2wgaGFzSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlOyB9CisgICAg
Ym9vbCBoYXNNZXRhZGF0YSgpIGNvbnN0IHsgcmV0dXJuICFtX3NpemUuaXNFbXB0eSgpOyB9Cisg
ICAgYm9vbCBoYXNQaXhlbHMoKSBjb25zdCB7IHJldHVybiBwaXhlbHMoKTsgfQorICAgIAorcHJp
dmF0ZToKKyAgICB2b2lkIGNsZWFyU3ViSW1hZ2VzKCk7CisKKyAgICB2b2lkIHNldFN0YXR1cyhE
ZWNvZGluZ1N0YXR1cyBzdGF0dXMpIHsgbV9zdGF0dXMgPSBzdGF0dXM7IH0KKyAgICB2b2lkIHNl
dE9yaWVudGF0aW9uKEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24pIHsgbV9vcmllbnRhdGlv
biA9IG9yaWVudGF0aW9uOyB9OworICAgIHZvaWQgc2V0RHVyYXRpb24odW5zaWduZWQgZHVyYXRp
b24pIHsgbV9kdXJhdGlvbiA9IGR1cmF0aW9uOyB9CisgICAgdm9pZCBzZXRIYXNBbHBoYShib29s
IGhhc0FscGhhKSB7IG1faGFzQWxwaGEgPSBoYXNBbHBoYTsgfQorICAgIAorICAgIERlY29kaW5n
U3RhdHVzIG1fc3RhdHVzIHsgRGVjb2RpbmdTdGF0dXM6OkVtcHR5IH07CisgICAgSW50U2l6ZSBt
X3NpemU7CisgICAgTmF0aXZlSW1hZ2VQdHIgbV9pbWFnZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
Qml0bWFwUGl4ZWxzPiBtX3BpeGVsczsKKyAgICAKKyAgICBJbWFnZU9yaWVudGF0aW9uIG1fb3Jp
ZW50YXRpb24geyBEZWZhdWx0SW1hZ2VPcmllbnRhdGlvbiB9OworICAgIFN1YnNhbXBsaW5nTGV2
ZWwgbV9zdWJzYW1wbGluZ0xldmVsIHsgMCB9OworICAgIGZsb2F0IG1fZHVyYXRpb24geyAwIH07
CisgICAgYm9vbCBtX2hhc0FscGhhIHsgdHJ1ZSB9OworfTsKKyAgICAKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAppbmRleCBkZGQ4YTU1
YmEwOTA2YzU4NjZhMTkyY2Y4ZTQxNGVhNzA3YjcyOGFjLi44MmY2ZTJkNmU0NTQzM2RhMWE3ZDU2
YjM3MGRmYTYxYTRjNDE5MTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VTb3VyY2UuY3BwCkBAIC0yMjQsNiArMjI0LDExIEBAIE5hdGl2ZUltYWdlUHRy
IEltYWdlU291cmNlOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNh
bXBsaW5nTGV2CiAgICAgcmV0dXJuIGluaXRpYWxpemVkKCkgPyBtX2RlY29kZXItPmNyZWF0ZUZy
YW1lSW1hZ2VBdEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsKSA6IG51bGxwdHI7CiB9CiAK
K0ltYWdlRnJhbWVEYXRhIEltYWdlU291cmNlOjpjcmVhdGVGcmFtZURhdGFBdEluZGV4KHNpemVf
dCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBJbWFnZUZyYW1lRGF0
YTo6Q2FjaGluZyBjYWNoaW5nKQoreworICAgIHJldHVybiBpbml0aWFsaXplZCgpID8gSW1hZ2VG
cmFtZURhdGEoKm1fZGVjb2RlciwgaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwsIGNhY2hpbmcpIDog
SW1hZ2VGcmFtZURhdGEoKTsKK30KKyAgICAKIHZvaWQgSW1hZ2VTb3VyY2U6OmR1bXAoVGV4dFN0
cmVhbSYgdHMpIGNvbnN0CiB7CiAgICAgaWYgKG1fYWxsb3dTdWJzYW1wbGluZykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCmluZGV4IDYwMzU3Mzli
N2U4YjA5NmRjOGRmZTljNTMwYTQyYzZmMjkxYmRhMDAuLmE0MGM3Y2U5MzA3Y2RhZGYwNzlhYjcw
MWE4Mjc5OWI2OTA1MjlkNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VTb3VyY2UuaApAQCAtMjcsNiArMjcsNyBAQAogI2lmbmRlZiBJbWFnZVNvdXJjZV9o
CiAjZGVmaW5lIEltYWdlU291cmNlX2gKIAorI2luY2x1ZGUgIkltYWdlRnJhbWVEYXRhLmgiCiAj
aW5jbHVkZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgogI2luY2x1ZGUgIkludFBvaW50LmgiCiAjaW5j
bHVkZSAiTmF0aXZlSW1hZ2VQdHIuaCIKQEAgLTYzLDkgKzY0LDYgQEAgY29uc3QgaW50IGNBbmlt
YXRpb25Mb29wT25jZSA9IDA7CiBjb25zdCBpbnQgY0FuaW1hdGlvbkxvb3BJbmZpbml0ZSA9IC0x
OwogY29uc3QgaW50IGNBbmltYXRpb25Ob25lID0gLTI7CiAKLS8vIFN1YnNhbXBsaW5nTGV2ZWwu
IDAgaXMgbm8gc3Vic2FtcGxpbmcsIDEgaXMgaGFsZiBkaW1lbnNpb25zIG9uIGVhY2ggYXhpcyBl
dGMuCi10eXBlZGVmIHNob3J0IFN1YnNhbXBsaW5nTGV2ZWw7Ci0KIGNsYXNzIEltYWdlU291cmNl
IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbWFnZVNvdXJjZSk7CiAgICAgZnJpZW5kIGNs
YXNzIEJpdG1hcEltYWdlOwpAQCAtMTMyLDE4ICsxMzAsMTkgQEAgcHVibGljOgogICAgIGJvb2wg
YWxsb3dTdWJzYW1wbGluZ09mRnJhbWVBdEluZGV4KHNpemVfdCkgY29uc3Q7CiAgICAgCiAgICAg
Ly8gU2l6ZSBvZiBvcHRpb25hbGx5IHN1YnNhbXBsZWQgZnJhbWUuCi0gICAgSW50U2l6ZSBmcmFt
ZVNpemVBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IDAsIFJlc3BlY3RJbWFnZU9y
aWVudGF0aW9uRW51bSA9IERvTm90UmVzcGVjdEltYWdlT3JpZW50YXRpb24pIGNvbnN0OworICAg
IEludFNpemUgZnJhbWVTaXplQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBEZWZh
dWx0U3Vic2FtcGxpbmdMZXZlbCwgUmVzcGVjdEltYWdlT3JpZW50YXRpb25FbnVtID0gRG9Ob3RS
ZXNwZWN0SW1hZ2VPcmllbnRhdGlvbikgY29uc3Q7CiAgICAgCiAgICAgLy8gUmV0dXJuIHRoZSBu
dW1iZXIgb2YgYnl0ZXMgaW4gdGhlIGRlY29kZWQgZnJhbWUuIElmIHRoZSBmcmFtZSBpcyBub3Qg
eWV0CiAgICAgLy8gZGVjb2RlZCB0aGVuIHJldHVybiAwLgotICAgIHVuc2lnbmVkIGZyYW1lQnl0
ZXNBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IDApIGNvbnN0OworICAgIHVuc2ln
bmVkIGZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IERlZmF1bHRT
dWJzYW1wbGluZ0xldmVsKSBjb25zdDsKICAgICAKICAgICBmbG9hdCBmcmFtZUR1cmF0aW9uQXRJ
bmRleChzaXplX3QpOwogICAgIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb25BdEluZGV4KHNp
emVfdCkgY29uc3Q7IC8vIEVYSUYgaW1hZ2Ugb3JpZW50YXRpb24KICAgICAKICAgICAvLyBDYWxs
ZXJzIHNob3VsZCBub3QgY2FsbCB0aGlzIGFmdGVyIGNhbGxpbmcgY2xlYXIoKSB3aXRoIGEgaGln
aGVyIGluZGV4OwogICAgIC8vIHNlZSBjb21tZW50cyBvbiBjbGVhcigpIGFib3ZlLgotICAgIE5h
dGl2ZUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdM
ZXZlbCA9IDApOworICAgIE5hdGl2ZUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNp
emVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IERlZmF1bHRTdWJzYW1wbGluZ0xldmVsKTsKKyAgICBJ
bWFnZUZyYW1lRGF0YSBjcmVhdGVGcmFtZURhdGFBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdM
ZXZlbCA9IERlZmF1bHRTdWJzYW1wbGluZ0xldmVsLCBJbWFnZUZyYW1lRGF0YTo6Q2FjaGluZyA9
IEltYWdlRnJhbWVEYXRhOjpDYWNoaW5nOjpNZXRhZGF0YUFuZEltYWdlKTsKICAgICAKIHByaXZh
dGU6CiAgICAgdm9pZCBjbGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2UuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5h
YjdhZWE0ODlmM2ViMmE4Mjg3NzFjMjEwM2U4ZDRkMGJlMTdiZTVkCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1JbWFnZS5oCkBAIC0w
LDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJHcmFwaGljc1R5cGVzLmgiCisjaW5jbHVkZSAi
SW1hZ2VPcmllbnRhdGlvbi5oIgorI2luY2x1ZGUgIk5hdGl2ZUltYWdlUHRyLmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ29sb3I7CitjbGFzcyBGbG9hdFJlY3Q7CitjbGFzcyBJ
bnRTaXplOworY2xhc3MgR3JhcGhpY3NDb250ZXh0OworCitjbGFzcyBQbGF0Zm9ybUltYWdlIHsK
K3B1YmxpYzoKKyAgICBQbGF0Zm9ybUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkK
KyAgICAgICAgOiBtX2ltYWdlKGltYWdlKQorICAgIHsKKyAgICB9CisKKyAgICBib29sIGlzTmls
KCkgY29uc3QgeyByZXR1cm4gIW1faW1hZ2U7IH0KKyAgICB2b2lkIGNsZWFyU3ViSW1hZ2VzKCk7
CisKKyAgICBJbnRTaXplIHNpemUoKSBjb25zdDsKKyAgICBib29sIGhhc0FscGhhKCkgY29uc3Q7
CisgICAgQ29sb3Igc2luZ2xlUGl4ZWxTb2xpZENvbG9yKCkgY29uc3Q7CisgICAgYm9vbCBpc0Fs
bW9zdFNvbGlkQ29sb3IoKSBjb25zdDsKKyAgICB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25z
dCBJbnRTaXplJiBzcmNTaXplLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBjb25zdCBJ
bWFnZU9yaWVudGF0aW9uJikgY29uc3Q7CisKKyAgICBzdGF0aWMgZmxvYXQgc3Vic2FtcGxpbmdT
Y2FsZShHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QpOworCitwcml2YXRlOgorI2lmIFVTRShDRykKKyAgICBDR0ltYWdl
UmVmIGNnSW1hZ2VSZWYoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlID8gbV9pbWFnZS5nZXQoKSA6
IG51bGxwdHI7IH0KKyNlbmRpZgorICAgIE5hdGl2ZUltYWdlUHRyIG1faW1hZ2U7Cit9OworCit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KaW5kZXggZjRjMTQ1N2JiYjI1NTc1NGYwMGEwNjI1
ZWU4M2UwNGRhN2M2ZWZjZi4uZDUyMGY1ZDU4NWFjNjBkYmFlZTI1NWUxYjgzYzI0ZGM2ODcyMTBh
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQpAQCAtMjEyLDcgKzIxMiw3IEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp1cGRhdGVEaXNwbGF5TW9kZSgp
CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIH0KIAotICAg
ICAgICAgICAgICAgIG1fcGF1c2VkSW1hZ2UgPSBpbWFnZS0+Z2V0Q0dJbWFnZVJlZigpOworICAg
ICAgICAgICAgICAgIG1fcGF1c2VkSW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50
RnJhbWUoKTsKICAgICAgICAgICAgICAgICBpZiAoIW1fcGF1c2VkSW1hZ2UpIHsKICAgICAgICAg
ICAgICAgICAgICAgbV9kaXNwbGF5TW9kZSA9IFBhaW50SXRCbGFjazsKICAgICAgICAgICAgICAg
ICAgICAgY29udGludWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAxNzcyMmJlYzUzYWI4YTA4YThkYTg1MjhiOWUwZDdjNGQwY2Q0MTM1Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8uY3BwCisrKyAvZGV2L251
bGwKQEAgLTEsMTQyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIw
MDYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAw
NyBBbHAgVG9rZXIgPGFscEBhdG9rZXIuY29tPgotICogQ29weXJpZ2h0IChDKSAyMDA5IERpcmsg
U2NodWx6ZSA8a3JpdEB3ZWJraXQub3JnPgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
LSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQml0bWFwSW1hZ2Uu
aCIKLQotI2lmIFVTRShDQUlSTykKLQotI2luY2x1ZGUgIkNhaXJvVXRpbGl0aWVzLmgiCi0jaW5j
bHVkZSAiSW1hZ2VPYnNlcnZlci5oIgotI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dENhaXJvLmgi
Ci0jaW5jbHVkZSAiVGltZXIuaCIKLSNpbmNsdWRlIDxjYWlyby5oPgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLW5hbWVzcGFjZSBOYXRpdmVJbWFnZSB7Ci0KLUludFNpemUgc2l6ZShjb25zdCBS
ZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiYgaW1hZ2UpCi17Ci0gICAgcmV0dXJuIGNhaXJvU3VyZmFj
ZVNpemUoaW1hZ2UuZ2V0KCkpOwotfQotCi1ib29sIGhhc0FscGhhKGNvbnN0IFJlZlB0cjxjYWly
b19zdXJmYWNlX3Q+JiBpbWFnZSkKLXsKLSAgICByZXR1cm4gY2Fpcm9fc3VyZmFjZV9nZXRfY29u
dGVudChpbWFnZS5nZXQoKSkgIT0gQ0FJUk9fQ09OVEVOVF9DT0xPUjsKLX0KLQotQ29sb3Igc2lu
Z2xlUGl4ZWxTb2xpZENvbG9yKGNvbnN0IFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+JiBpbWFnZSkK
LXsKLSAgICBBU1NFUlQoaW1hZ2UpOwotICAgIAotICAgIGlmIChOYXRpdmVJbWFnZTo6c2l6ZShp
bWFnZSkgIT0gSW50U2l6ZSgxLCAxKSkKLSAgICAgICAgcmV0dXJuIENvbG9yKCk7Ci0KLSAgICBp
ZiAoY2Fpcm9fc3VyZmFjZV9nZXRfdHlwZShpbWFnZS5nZXQoKSkgIT0gQ0FJUk9fU1VSRkFDRV9U
WVBFX0lNQUdFKQotICAgICAgICByZXR1cm4gQ29sb3IoKTsKLQotICAgIFJHQkEzMiogcGl4ZWwg
PSByZWludGVycHJldF9jYXN0X3B0cjxSR0JBMzIqPihjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9k
YXRhKGltYWdlLmdldCgpKSk7Ci0gICAgcmV0dXJuIGNvbG9yRnJvbVByZW11bHRpcGxpZWRBUkdC
KCpwaXhlbCk7Ci19Ci0KLX0KLQotdm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0LCBjb25zdCBGbG9hdFJlY3QmIHNyYywg
Q29tcG9zaXRlT3BlcmF0b3Igb3AsCi0gICAgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmll
bnRhdGlvbkRlc2NyaXB0aW9uIGRlc2NyaXB0aW9uKQotewotICAgIGlmICghZHN0LndpZHRoKCkg
fHwgIWRzdC5oZWlnaHQoKSB8fCAhc3JjLndpZHRoKCkgfHwgIXNyYy5oZWlnaHQoKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgc3RhcnRBbmltYXRpb24oKTsKLQotICAgIGF1dG8gc3VyZmFjZSA9
IGZyYW1lSW1hZ2VBdEluZGV4KG1fY3VycmVudEZyYW1lKTsKLSAgICBpZiAoIXN1cmZhY2UpIC8v
IElmIGl0J3MgdG9vIGVhcmx5IHdlIHdvbid0IGhhdmUgYW4gaW1hZ2UgeWV0LgotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBDb2xvciBjb2xvciA9IHNpbmdsZVBpeGVsU29saWRDb2xvcigpOwotICAg
IGlmIChjb2xvci5pc1ZhbGlkKCkpIHsKLSAgICAgICAgZmlsbFdpdGhTb2xpZENvbG9yKGNvbnRl
eHQsIGRzdCwgY29sb3IsIG9wKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGNvbnRl
eHQuc2F2ZSgpOwotCi0gICAgLy8gU2V0IHRoZSBjb21wb3NpdGluZyBvcGVyYXRpb24uCi0gICAg
aWYgKG9wID09IENvbXBvc2l0ZVNvdXJjZU92ZXIgJiYgYmxlbmRNb2RlID09IEJsZW5kTW9kZU5v
cm1hbCAmJiAhZnJhbWVIYXNBbHBoYUF0SW5kZXgobV9jdXJyZW50RnJhbWUpKQotICAgICAgICBj
b250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVDb3B5KTsKLSAgICBlbHNlCi0g
ICAgICAgIGNvbnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKG9wLCBibGVuZE1vZGUpOwotCi0j
aWYgRU5BQkxFKElNQUdFX0RFQ09ERVJfRE9XTl9TQU1QTElORykKLSAgICBJbnRTaXplIHNjYWxl
ZFNpemUgPSBjYWlyb1N1cmZhY2VTaXplKHN1cmZhY2UuZ2V0KCkpOwotICAgIEZsb2F0UmVjdCBh
ZGp1c3RlZFNyY1JlY3QgPSBhZGp1c3RTb3VyY2VSZWN0Rm9yRG93blNhbXBsaW5nKHNyYywgc2Nh
bGVkU2l6ZSk7Ci0jZWxzZQotICAgIEZsb2F0UmVjdCBhZGp1c3RlZFNyY1JlY3Qoc3JjKTsKLSNl
bmRpZgotCi0gICAgSW1hZ2VPcmllbnRhdGlvbiBmcmFtZU9yaWVudGF0aW9uKGRlc2NyaXB0aW9u
LmltYWdlT3JpZW50YXRpb24oKSk7Ci0gICAgaWYgKGRlc2NyaXB0aW9uLnJlc3BlY3RJbWFnZU9y
aWVudGF0aW9uKCkgPT0gUmVzcGVjdEltYWdlT3JpZW50YXRpb24pCi0gICAgICAgIGZyYW1lT3Jp
ZW50YXRpb24gPSBmcmFtZU9yaWVudGF0aW9uQXRJbmRleChtX2N1cnJlbnRGcmFtZSk7Ci0KLSAg
ICBGbG9hdFJlY3QgZHN0UmVjdCA9IGRzdDsKLQotICAgIGlmIChmcmFtZU9yaWVudGF0aW9uICE9
IERlZmF1bHRJbWFnZU9yaWVudGF0aW9uKSB7Ci0gICAgICAgIC8vIEltYWdlT3JpZW50YXRpb24g
ZXhwZWN0cyB0aGUgb3JpZ2luIHRvIGJlIGF0ICgwLCAwKS4KLSAgICAgICAgY29udGV4dC50cmFu
c2xhdGUoZHN0UmVjdC54KCksIGRzdFJlY3QueSgpKTsKLSAgICAgICAgZHN0UmVjdC5zZXRMb2Nh
dGlvbihGbG9hdFBvaW50KCkpOwotICAgICAgICBjb250ZXh0LmNvbmNhdENUTShmcmFtZU9yaWVu
dGF0aW9uLnRyYW5zZm9ybUZyb21EZWZhdWx0KGRzdFJlY3Quc2l6ZSgpKSk7Ci0gICAgICAgIGlm
IChmcmFtZU9yaWVudGF0aW9uLnVzZXNXaWR0aEFzSGVpZ2h0KCkpIHsKLSAgICAgICAgICAgIC8v
IFRoZSBkZXN0aW5hdGlvbiByZWN0YW5nbGUgd2lsbCBoYXZlIGl0J3Mgd2lkdGggYW5kIGhlaWdo
dCBhbHJlYWR5IHJldmVyc2VkIGZvciB0aGUgb3JpZW50YXRpb24gb2YKLSAgICAgICAgICAgIC8v
IHRoZSBpbWFnZSwgYXMgaXQgd2FzIG5lZWRlZCBmb3IgcGFnZSBsYXlvdXQsIHNvIHdlIG5lZWQg
dG8gcmV2ZXJzZSBpdCBiYWNrIGhlcmUuCi0gICAgICAgICAgICBkc3RSZWN0ID0gRmxvYXRSZWN0
KGRzdFJlY3QueCgpLCBkc3RSZWN0LnkoKSwgZHN0UmVjdC5oZWlnaHQoKSwgZHN0UmVjdC53aWR0
aCgpKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCkt
PmRyYXdTdXJmYWNlVG9Db250ZXh0KHN1cmZhY2UuZ2V0KCksIGRzdFJlY3QsIGFkanVzdGVkU3Jj
UmVjdCwgY29udGV4dCk7Ci0KLSAgICBjb250ZXh0LnJlc3RvcmUoKTsKLQotICAgIGlmIChpbWFn
ZU9ic2VydmVyKCkpCi0gICAgICAgIGltYWdlT2JzZXJ2ZXIoKS0+ZGlkRHJhdyh0aGlzKTsKLX0K
LQotYm9vbCBGcmFtZURhdGE6OmNsZWFyKGJvb2wgY2xlYXJNZXRhZGF0YSkKLXsKLSAgICBpZiAo
Y2xlYXJNZXRhZGF0YSkKLSAgICAgICAgbV9oYXZlTWV0YWRhdGEgPSBmYWxzZTsKLQotICAgIGlm
IChtX2ltYWdlKSB7Ci0gICAgICAgIG1faW1hZ2UgPSBudWxscHRyOwotICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCi0KLSNlbmRpZiAvLyBVU0UoQ0FJUk8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUltYWdlQ2Fpcm8uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1JbWFnZUNhaXJvLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi43MGFkYWVjMjcwZTMxYjA1NGFmYzVmNjZkNDgyODhhZWJmMDYxZTNhCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZv
cm1JbWFnZUNhaXJvLmNwcApAQCAtMCwwICsxLDExMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
UGxhdGZvcm1JbWFnZS5oIgorCisjaWYgVVNFKENBSVJPKQorCisjaW5jbHVkZSAiQ2Fpcm9VdGls
aXRpZXMuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUNvbnRleHRDYWlyby5oIgorI2luY2x1ZGUgPGNh
aXJvLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBQbGF0Zm9ybUltYWdlOjpjbGVh
clN1YkltYWdlcygpCit7Cit9CisKK0ludFNpemUgUGxhdGZvcm1JbWFnZTo6c2l6ZSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIGlzTmlsKCkgPyBJbnRTaXplKCkgOiBjYWlyb1N1cmZhY2VTaXplKG1f
aW1hZ2UuZ2V0KCkpOworfQorCitib29sIFBsYXRmb3JtSW1hZ2U6Omhhc0FscGhhKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gaXNOaWwoKSB8fCBjYWlyb19zdXJmYWNlX2dldF9jb250ZW50KG1faW1h
Z2UuZ2V0KCkpICE9IENBSVJPX0NPTlRFTlRfQ09MT1I7Cit9CisKK0NvbG9yIFBsYXRmb3JtSW1h
Z2U6OnNpbmdsZVBpeGVsU29saWRDb2xvcigpIGNvbnN0Cit7CisgICAgaWYgKGlzTmlsKCkgfHwg
c2l6ZSgpICE9IEludFNpemUoMSwgMSkpCisgICAgICAgIHJldHVybiBDb2xvcigpOworCisgICAg
aWYgKGNhaXJvX3N1cmZhY2VfZ2V0X3R5cGUobV9pbWFnZS5nZXQoKSkgIT0gQ0FJUk9fU1VSRkFD
RV9UWVBFX0lNQUdFKQorICAgICAgICByZXR1cm4gQ29sb3IoKTsKKworICAgIFJHQkEzMiogcGl4
ZWwgPSByZWludGVycHJldF9jYXN0X3B0cjxSR0JBMzIqPihjYWlyb19pbWFnZV9zdXJmYWNlX2dl
dF9kYXRhKG1faW1hZ2UuZ2V0KCkpKTsKKyAgICByZXR1cm4gY29sb3JGcm9tUHJlbXVsdGlwbGll
ZEFSR0IoKnBpeGVsKTsKK30KKworYm9vbCBQbGF0Zm9ybUltYWdlOjppc0FsbW9zdFNvbGlkQ29s
b3IoKSBjb25zdAoreworICAgIHJldHVybiBmYWxzZTsKK30KKworZmxvYXQgUGxhdGZvcm1JbWFn
ZTo6c3Vic2FtcGxpbmdTY2FsZShHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmLCBj
b25zdCBGbG9hdFJlY3QmKQoreworICAgIHJldHVybiAxOworfQorCit2b2lkIFBsYXRmb3JtSW1h
Z2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFNpemUmLCBDb21wb3NpdGVP
cGVyYXRvciBvcCwgQmxlbmRNb2RlIG1vZGUsIGNvbnN0IEltYWdlT3JpZW50YXRpb24mIG9yaWVu
dGF0aW9uKSBjb25zdAoreworICAgIGNvbnRleHQuc2F2ZSgpOworICAgIAorICAgIC8vIFNldCB0
aGUgY29tcG9zaXRpbmcgb3BlcmF0aW9uLgorICAgIGlmIChvcCA9PSBDb21wb3NpdGVTb3VyY2VP
dmVyICYmIG1vZGUgPT0gQmxlbmRNb2RlTm9ybWFsICYmICFoYXNBbHBoYSgpKQorICAgICAgICBj
b250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVDb3B5KTsKKyAgICBlbHNlCisg
ICAgICAgIGNvbnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKG9wLCBtb2RlKTsKKyAgICAgICAg
CisjaWYgRU5BQkxFKElNQUdFX0RFQ09ERVJfRE9XTl9TQU1QTElORykKKyAgICBJbnRTaXplIHNj
YWxlZFNpemUgPSBjYWlyb1N1cmZhY2VTaXplKG1faW1hZ2UuZ2V0KCkpOworICAgIEZsb2F0UmVj
dCBhZGp1c3RlZFNyY1JlY3QgPSBhZGp1c3RTb3VyY2VSZWN0Rm9yRG93blNhbXBsaW5nKHNyY1Jl
Y3QsIHNjYWxlZFNpemUpOworI2Vsc2UKKyAgICBGbG9hdFJlY3QgYWRqdXN0ZWRTcmNSZWN0KHNy
Y1JlY3QpOworI2VuZGlmCisgICAgICAgIAorICAgIEZsb2F0UmVjdCBhZGp1c3RlZERlc3RSZWN0
ID0gZGVzdFJlY3Q7CisgICAgICAgIAorICAgIGlmIChvcmllbnRhdGlvbiAhPSBEZWZhdWx0SW1h
Z2VPcmllbnRhdGlvbikgeworICAgICAgICAvLyBJbWFnZU9yaWVudGF0aW9uIGV4cGVjdHMgdGhl
IG9yaWdpbiB0byBiZSBhdCAoMCwgMCkuCisgICAgICAgIGNvbnRleHQudHJhbnNsYXRlKGRlc3RS
ZWN0LngoKSwgZGVzdFJlY3QueSgpKTsKKyAgICAgICAgYWRqdXN0ZWREZXN0UmVjdC5zZXRMb2Nh
dGlvbihGbG9hdFBvaW50KCkpOworICAgICAgICBjb250ZXh0LmNvbmNhdENUTShvcmllbnRhdGlv
bi50cmFuc2Zvcm1Gcm9tRGVmYXVsdChhZGp1c3RlZERlc3RSZWN0LnNpemUoKSkpOworICAgICAg
ICBpZiAob3JpZW50YXRpb24udXNlc1dpZHRoQXNIZWlnaHQoKSkgeworICAgICAgICAgICAgLy8g
VGhlIGRlc3RpbmF0aW9uIHJlY3RhbmdsZSB3aWxsIGhhdmUgaXQncyB3aWR0aCBhbmQgaGVpZ2h0
IGFscmVhZHkgcmV2ZXJzZWQgZm9yIHRoZSBvcmllbnRhdGlvbiBvZgorICAgICAgICAgICAgLy8g
dGhlIGltYWdlLCBhcyBpdCB3YXMgbmVlZGVkIGZvciBwYWdlIGxheW91dCwgc28gd2UgbmVlZCB0
byByZXZlcnNlIGl0IGJhY2sgaGVyZS4KKyAgICAgICAgICAgIGFkanVzdGVkRGVzdFJlY3Quc2V0
U2l6ZShhZGp1c3RlZERlc3RSZWN0LnNpemUoKS50cmFuc3Bvc2VkU2l6ZSgpKTsKKyAgICAgICAg
fQorICAgIH0KKworICAgIGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCktPmRyYXdTdXJmYWNlVG9D
b250ZXh0KG1faW1hZ2UuZ2V0KCksIGFkanVzdGVkRGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwg
Y29udGV4dCk7CisKKyAgICBjb250ZXh0LnJlc3RvcmUoKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gVVNFKENBSVJPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFwSW1hZ2VDRy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9CaXRtYXBJbWFnZUNHLmNwcApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDNjODFhMTcwYmU3OWFlNmJlNmNhY2RjOTlmNGMzOThjYWFmNDI2ZC4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9CaXRtYXBJbWFnZUNHLmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDIwNiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJCaXRt
YXBJbWFnZS5oIgotCi0jaWYgVVNFKENHKQotCi0jaW5jbHVkZSAiQ29yZUdyYXBoaWNzU1BJLmgi
Ci0jaW5jbHVkZSAiRmxvYXRDb252ZXJzaW9uLmgiCi0jaW5jbHVkZSAiR2VvbWV0cnlVdGlsaXRp
ZXMuaCIKLSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRDRy5oIgotI2luY2x1ZGUgIkltYWdlT2Jz
ZXJ2ZXIuaCIKLSNpbmNsdWRlICJTdWJpbWFnZUNhY2hlV2l0aFRpbWVyLmgiCi0jaW5jbHVkZSA8
d3RmL1JldGFpblB0ci5oPgotCi0jaWYgVVNFKEFQUEtJVCkKLSNpbmNsdWRlIDxBcHBsaWNhdGlv
blNlcnZpY2VzL0FwcGxpY2F0aW9uU2VydmljZXMuaD4KLSNlbmRpZgotCi0jaWYgUExBVEZPUk0o
Q09DT0EpCi0jaW5jbHVkZSAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgotI2VuZGlmCi0KLSNp
ZiBQTEFURk9STShXSU4pCi0jaW5jbHVkZSA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlL1dlYktpdFN5
c3RlbUludGVyZmFjZS5oPgotI2VuZGlmCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNw
YWNlIE5hdGl2ZUltYWdlIHsKLQotSW50U2l6ZSBzaXplKGNvbnN0IFJldGFpblB0cjxDR0ltYWdl
UmVmPiYgaW1hZ2UpCi17Ci0gICAgQVNTRVJUKGltYWdlKTsKLSAgICByZXR1cm4gSW50U2l6ZShD
R0ltYWdlR2V0V2lkdGgoaW1hZ2UuZ2V0KCkpLCBDR0ltYWdlR2V0SGVpZ2h0KGltYWdlLmdldCgp
KSk7Ci19Ci0KLWJvb2wgaGFzQWxwaGEoY29uc3QgUmV0YWluUHRyPENHSW1hZ2VSZWY+JikKLXsK
LSAgICAvLyBGSVhNRTogQW5zd2VyIGNvcnJlY3RseSB0aGUgcXVlc3Rpb246IGRvZXMgdGhlIENH
SW1hZ2VSZWYgaGF2ZSBhbHBoYSBjaGFubm5lbD8KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLSAgICAK
LUNvbG9yIHNpbmdsZVBpeGVsU29saWRDb2xvcihjb25zdCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4m
IGltYWdlKQotewotICAgIEFTU0VSVChpbWFnZSk7Ci0gICAgCi0gICAgaWYgKE5hdGl2ZUltYWdl
OjpzaXplKGltYWdlKSAhPSBJbnRTaXplKDEsIDEpKQotICAgICAgICByZXR1cm4gQ29sb3IoKTsK
LSAgICAKLSAgICB1bnNpZ25lZCBjaGFyIHBpeGVsWzRdOyAvLyBSR0JBCi0gICAgYXV0byBiaXRt
YXBDb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUocGl4ZWwsIDEsIDEsIDgs
IHNpemVvZihwaXhlbCksIHNSR0JDb2xvclNwYWNlUmVmKCksCi0gICAgICAgIGtDR0ltYWdlQWxw
aGFQcmVtdWx0aXBsaWVkTGFzdCB8IGtDR0JpdG1hcEJ5dGVPcmRlcjMyQmlnKSk7Ci0KLSAgICBp
ZiAoIWJpdG1hcENvbnRleHQpCi0gICAgICAgIHJldHVybiBDb2xvcigpOwotICAgIAotICAgIENH
Q29udGV4dFNldEJsZW5kTW9kZShiaXRtYXBDb250ZXh0LmdldCgpLCBrQ0dCbGVuZE1vZGVDb3B5
KTsKLSAgICBDR0NvbnRleHREcmF3SW1hZ2UoYml0bWFwQ29udGV4dC5nZXQoKSwgQ0dSZWN0TWFr
ZSgwLCAwLCAxLCAxKSwgaW1hZ2UuZ2V0KCkpOwotICAgIAotICAgIGlmICghcGl4ZWxbM10pCi0g
ICAgICAgIHJldHVybiBDb2xvcigwLCAwLCAwLCAwKTsKLQotICAgIHJldHVybiBDb2xvcihwaXhl
bFswXSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhlbFsxXSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhlbFsy
XSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhlbFszXSk7Ci19Ci0KLX0KLQotYm9vbCBGcmFtZURhdGE6
OmNsZWFyKGJvb2wgY2xlYXJNZXRhZGF0YSkKLXsKLSAgICBpZiAoY2xlYXJNZXRhZGF0YSkKLSAg
ICAgICAgbV9oYXZlTWV0YWRhdGEgPSBmYWxzZTsKLQotICAgIG1fc3Vic2FtcGxpbmdMZXZlbCA9
IDA7Ci0KLSAgICBpZiAobV9pbWFnZSkgewotI2lmIENBQ0hFX1NVQklNQUdFUwotICAgICAgICBz
dWJpbWFnZUNhY2hlKCkuY2xlYXJJbWFnZShtX2ltYWdlLmdldCgpKTsKLSNlbmRpZgotICAgICAg
ICBtX2ltYWdlID0gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJl
dHVybiBmYWxzZTsKLX0KLQotQ0dJbWFnZVJlZiBCaXRtYXBJbWFnZTo6Z2V0Q0dJbWFnZVJlZigp
Ci17Ci0gICAgcmV0dXJuIGZyYW1lSW1hZ2VBdEluZGV4KDApLmdldCgpOwotfQotCi1DR0ltYWdl
UmVmIEJpdG1hcEltYWdlOjpnZXRGaXJzdENHSW1hZ2VSZWZPZlNpemUoY29uc3QgSW50U2l6ZSYg
c2l6ZSkKLXsKLSAgICBzaXplX3QgY291bnQgPSBmcmFtZUNvdW50KCk7Ci0gICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7Ci0gICAgICAgIENHSW1hZ2VSZWYgY2dJbWFnZSA9
IGZyYW1lSW1hZ2VBdEluZGV4KGkpLmdldCgpOwotICAgICAgICBpZiAoY2dJbWFnZSAmJiBJbnRT
aXplKENHSW1hZ2VHZXRXaWR0aChjZ0ltYWdlKSwgQ0dJbWFnZUdldEhlaWdodChjZ0ltYWdlKSkg
PT0gc2l6ZSkKLSAgICAgICAgICAgIHJldHVybiBjZ0ltYWdlOwotICAgIH0KLQotICAgIC8vIEZh
bGxiYWNrIHRvIHRoZSBkZWZhdWx0IENHSW1hZ2VSZWYgaWYgd2UgY2FuJ3QgZmluZCB0aGUgcmln
aHQgc2l6ZQotICAgIHJldHVybiBnZXRDR0ltYWdlUmVmKCk7Ci19Ci0KLVJldGFpblB0cjxDRkFy
cmF5UmVmPiBCaXRtYXBJbWFnZTo6Z2V0Q0dJbWFnZUFycmF5KCkKLXsKLSAgICBzaXplX3QgY291
bnQgPSBmcmFtZUNvdW50KCk7Ci0gICAgaWYgKCFjb3VudCkKLSAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0gICAgCi0gICAgQ0ZNdXRhYmxlQXJyYXlSZWYgYXJyYXkgPSBDRkFycmF5Q3JlYXRlTXV0
YWJsZShOVUxMLCBjb3VudCwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcyk7Ci0gICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7Ci0gICAgICAgIGlmIChDR0ltYWdlUmVmIGN1cnJG
cmFtZSA9IGZyYW1lSW1hZ2VBdEluZGV4KGkpLmdldCgpKQotICAgICAgICAgICAgQ0ZBcnJheUFw
cGVuZFZhbHVlKGFycmF5LCBjdXJyRnJhbWUpOwotICAgIH0KLSAgICByZXR1cm4gYWRvcHRDRihh
cnJheSk7Ci19Ci0KLXZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjdHh0
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENv
bXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9y
aWVudGF0aW9uRGVzY3JpcHRpb24gZGVzY3JpcHRpb24pCi17Ci0jaWYgUExBVEZPUk0oSU9TKQot
ICAgIHN0YXJ0QW5pbWF0aW9uKERvTm90Q2F0Y2hVcCk7Ci0jZWxzZQotICAgIHN0YXJ0QW5pbWF0
aW9uKCk7Ci0jZW5kaWYKLQotICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZTsKLSAgICAv
LyBOZXZlciB1c2Ugc3Vic2FtcGxlZCBpbWFnZXMgZm9yIGRyYXdpbmcgaW50byBQREYgY29udGV4
dHMuCi0gICAgaWYgKHdrQ0dDb250ZXh0SXNQREZDb250ZXh0KGN0eHQucGxhdGZvcm1Db250ZXh0
KCkpKQotICAgICAgICBpbWFnZSA9IGNvcHlVbnNjYWxlZEZyYW1lSW1hZ2VBdEluZGV4KG1fY3Vy
cmVudEZyYW1lKTsKLSAgICBlbHNlIHsKLSAgICAgICAgQ0dSZWN0IHRyYW5zZm9ybWVkRGVzdGlu
YXRpb25SZWN0ID0gQ0dSZWN0QXBwbHlBZmZpbmVUcmFuc2Zvcm0oZGVzdFJlY3QsIENHQ29udGV4
dEdldENUTShjdHh0LnBsYXRmb3JtQ29udGV4dCgpKSk7Ci0gICAgICAgIGZsb2F0IHN1YnNhbXBs
aW5nU2NhbGUgPSBzdGQ6Om1pbjxmbG9hdD4oMSwgc3RkOjptYXgodHJhbnNmb3JtZWREZXN0aW5h
dGlvblJlY3Quc2l6ZS53aWR0aCAvIHNyY1JlY3Qud2lkdGgoKSwgdHJhbnNmb3JtZWREZXN0aW5h
dGlvblJlY3Quc2l6ZS5oZWlnaHQgLyBzcmNSZWN0LmhlaWdodCgpKSk7Ci0KLSAgICAgICAgaW1h
Z2UgPSBmcmFtZUltYWdlQXRJbmRleChtX2N1cnJlbnRGcmFtZSwgc3Vic2FtcGxpbmdTY2FsZSk7
Ci0gICAgfQotCi0gICAgaWYgKCFpbWFnZSkgLy8gSWYgaXQncyB0b28gZWFybHkgd2Ugd29uJ3Qg
aGF2ZSBhbiBpbWFnZSB5ZXQuCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBDb2xvciBjb2xv
ciA9IHNpbmdsZVBpeGVsU29saWRDb2xvcigpOwotICAgIGlmIChjb2xvci5pc1ZhbGlkKCkpIHsK
LSAgICAgICAgZmlsbFdpdGhTb2xpZENvbG9yKGN0eHQsIGRlc3RSZWN0LCBjb2xvciwgY29tcG9z
aXRlT3ApOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gU3Vic2FtcGxpbmcgbWF5
IGhhdmUgZ2l2ZW4gdXMgYW4gaW1hZ2UgdGhhdCBpcyBzbWFsbGVyIHRoYW4gc2l6ZSgpLgotICAg
IEludFNpemUgaW1hZ2VTaXplKENHSW1hZ2VHZXRXaWR0aChpbWFnZS5nZXQoKSksIENHSW1hZ2VH
ZXRIZWlnaHQoaW1hZ2UuZ2V0KCkpKTsKLSAgICAKLSAgICAvLyBzcmNSZWN0IGlzIGluIHRoZSBj
b29yZGluYXRlcyBvZiB0aGUgdW5zdWJzYW1wbGVkIGltYWdlLCBzbyB3ZSBoYXZlIHRvIG1hcCBp
dCB0byB0aGUgc3Vic2FtcGxlZCBpbWFnZS4KLSAgICBGbG9hdFJlY3Qgc2NhbGVkU3JjUmVjdCA9
IHNyY1JlY3Q7Ci0gICAgaWYgKGltYWdlU2l6ZSAhPSBtX3NpemUpIHsKLSAgICAgICAgRmxvYXRS
ZWN0IG9yaWdpbmFsSW1hZ2VCb3VuZHMoRmxvYXRQb2ludCgpLCBtX3NpemUpOwotICAgICAgICBG
bG9hdFJlY3Qgc3Vic2FtcGxlZEltYWdlQm91bmRzKEZsb2F0UG9pbnQoKSwgaW1hZ2VTaXplKTsK
LSAgICAgICAgc2NhbGVkU3JjUmVjdCA9IG1hcFJlY3Qoc3JjUmVjdCwgb3JpZ2luYWxJbWFnZUJv
dW5kcywgc3Vic2FtcGxlZEltYWdlQm91bmRzKTsKLSAgICB9Ci0gICAgCi0gICAgSW1hZ2VPcmll
bnRhdGlvbiBvcmllbnRhdGlvbjsKLSAgICBpZiAoZGVzY3JpcHRpb24ucmVzcGVjdEltYWdlT3Jp
ZW50YXRpb24oKSA9PSBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbikKLSAgICAgICAgb3JpZW50YXRp
b24gPSBmcmFtZU9yaWVudGF0aW9uQXRJbmRleChtX2N1cnJlbnRGcmFtZSk7Ci0KLSAgICBjdHh0
LmRyYXdOYXRpdmVJbWFnZShpbWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc2NhbGVkU3JjUmVj
dCwgY29tcG9zaXRlT3AsIGJsZW5kTW9kZSwgb3JpZW50YXRpb24pOwotCi0gICAgaWYgKGltYWdl
T2JzZXJ2ZXIoKSkKLSAgICAgICAgaW1hZ2VPYnNlcnZlcigpLT5kaWREcmF3KHRoaXMpOwotfQot
Ci1SZXRhaW5QdHI8Q0dJbWFnZVJlZj4gQml0bWFwSW1hZ2U6OmNvcHlVbnNjYWxlZEZyYW1lSW1h
Z2VBdEluZGV4KHNpemVfdCBpbmRleCkKLXsKLSAgICBpZiAoaW5kZXggPj0gZnJhbWVDb3VudCgp
KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIGlmIChpbmRleCA+PSBtX2ZyYW1lcy5z
aXplKCkgfHwgIW1fZnJhbWVzW2luZGV4XS5tX2ltYWdlKQotICAgICAgICBjYWNoZUZyYW1lKGlu
ZGV4LCAwKTsKLQotICAgIGlmICghbV9mcmFtZXNbaW5kZXhdLm1fc3Vic2FtcGxpbmdMZXZlbCkK
LSAgICAgICAgcmV0dXJuIG1fZnJhbWVzW2luZGV4XS5tX2ltYWdlOwotCi0gICAgcmV0dXJuIG1f
c291cmNlLmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KGluZGV4KTsKLX0KLQotfQotCi0jZW5kaWYg
Ly8gVVNFKENHKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvUGF0dGVybkNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1Bh
dHRlcm5DRy5jcHAKaW5kZXggYjQyOGQ1MGQ5NGJmOTI0MjgwMzI4N2QyZWVjMTZiZDY5YzUyOGQ5
Mi4uM2RhYTEzOWFiN2VhNWI0MjE1Nzc4ODM1ZDM1M2Q4YWRiNWYwYzc1ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwCkBAIC03Miw3
ICs3Miw3IEBAIENHUGF0dGVyblJlZiBQYXR0ZXJuOjpjcmVhdGVQbGF0Zm9ybVBhdHRlcm4oY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiB1c2VyU3BhY2VUcmFuCiAgICAgLy8gSWYgd2UncmUgcmVwZWF0
aW5nIGluIGJvdGggZGlyZWN0aW9ucywgd2UgY2FuIHVzZSBpbWFnZS1iYWNrZWQgcGF0dGVybnMK
ICAgICAvLyBpbnN0ZWFkIG9mIGN1c3RvbSBwYXR0ZXJucywgYW5kIGF2b2lkIHRpbGluZy1lZGdl
IHBpeGVsIGNyYWNrcy4KICAgICBpZiAobV9yZXBlYXRYICYmIG1fcmVwZWF0WSkKLSAgICAgICAg
cmV0dXJuIHdrQ0dQYXR0ZXJuQ3JlYXRlV2l0aEltYWdlQW5kVHJhbnNmb3JtKHRpbGVJbWFnZSgp
LT5nZXRDR0ltYWdlUmVmKCksIHBhdHRlcm5UcmFuc2Zvcm0sIHdrUGF0dGVyblRpbGluZ0NvbnN0
YW50U3BhY2luZyk7CisgICAgICAgIHJldHVybiB3a0NHUGF0dGVybkNyZWF0ZVdpdGhJbWFnZUFu
ZFRyYW5zZm9ybSh0aWxlSW1hZ2UoKS0+bmF0aXZlSW1hZ2UoKS5nZXQoKSwgcGF0dGVyblRyYW5z
Zm9ybSwgd2tQYXR0ZXJuVGlsaW5nQ29uc3RhbnRTcGFjaW5nKTsKIAogICAgIC8vIElmIEZMVF9N
QVggc2hvdWxkIGFsc28gYmUgdXNlZCBmb3IgeFN0ZXAgb3IgeVN0ZXAsIG5vdGhpbmcgaXMgcmVu
ZGVyZWQuIFVzaW5nIGZyYWN0aW9ucyBvZiBGTFRfTUFYIGFsc28KICAgICAvLyByZXN1bHQgaW4g
bm90aGluZyBiZWluZyByZW5kZXJlZC4KQEAgLTgzLDcgKzgzLDcgQEAgQ0dQYXR0ZXJuUmVmIFBh
dHRlcm46OmNyZWF0ZVBsYXRmb3JtUGF0dGVybihjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHVzZXJT
cGFjZVRyYW4KICAgICBDR0Zsb2F0IHlTdGVwID0gbV9yZXBlYXRZID8gdGlsZVJlY3QuaGVpZ2h0
KCkgOiAoMSA8PCAyMik7CiAKICAgICAvLyBUaGUgcGF0dGVybiB3aWxsIHJlbGVhc2UgdGhlIENH
SW1hZ2VSZWYgd2hlbiBpdCdzIGRvbmUgcmVuZGVyaW5nIGluIHBhdHRlcm5SZWxlYXNlQ2FsbGJh
Y2sKLSAgICBDR0ltYWdlUmVmIHBsYXRmb3JtSW1hZ2UgPSBDR0ltYWdlUmV0YWluKHRpbGVJbWFn
ZSgpLT5nZXRDR0ltYWdlUmVmKCkpOworICAgIENHSW1hZ2VSZWYgcGxhdGZvcm1JbWFnZSA9IHRp
bGVJbWFnZSgpLT5uYXRpdmVJbWFnZSgpLmxlYWtSZWYoKTsKIAogICAgIGNvbnN0IENHUGF0dGVy
bkNhbGxiYWNrcyBwYXR0ZXJuQ2FsbGJhY2tzID0geyAwLCBwYXR0ZXJuQ2FsbGJhY2ssIHBhdHRl
cm5SZWxlYXNlQ2FsbGJhY2sgfTsKICAgICByZXR1cm4gQ0dQYXR0ZXJuQ3JlYXRlKHBsYXRmb3Jt
SW1hZ2UsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCB4U3RlcCwgeVN0ZXAsIGtDR1BhdHRl
cm5UaWxpbmdDb25zdGFudFNwYWNpbmcsIFRSVUUsICZwYXR0ZXJuQ2FsbGJhY2tzKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BsYXRmb3JtSW1hZ2VD
Ry5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QbGF0Zm9ybUltYWdl
Q0cuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmFmYjJkZTBlYTEyZGEyMTRmMTA0NmMzOTYyZThlYWI1M2M2NDQx
MjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9QbGF0Zm9ybUltYWdlQ0cuY3BwCkBAIC0wLDAgKzEsMTcxIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIlBsYXRmb3JtSW1hZ2UuaCIKKworI2lmIFVTRShDRykKKworI2luY2x1ZGUgIkNvbG9yLmgi
CisjaW5jbHVkZSAiQ29yZUdyYXBoaWNzU1BJLmgiCisjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCisj
aW5jbHVkZSAiR2VvbWV0cnlVdGlsaXRpZXMuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRD
Ry5oIgorI2luY2x1ZGUgIkludFNpemUuaCIKKyNpbmNsdWRlICJTdWJpbWFnZUNhY2hlV2l0aFRp
bWVyLmgiCisKKyNpZiBQTEFURk9STShXSU4pCisjaW5jbHVkZSA8V2ViS2l0U3lzdGVtSW50ZXJm
YWNlL1dlYktpdFN5c3RlbUludGVyZmFjZS5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKyAgICAKK3ZvaWQgUGxhdGZvcm1JbWFnZTo6Y2xlYXJTdWJJbWFnZXMoKQoreworI2lmIENB
Q0hFX1NVQklNQUdFUworICAgIGlmICghaXNOaWwoKSkKKyAgICAgICAgc3ViaW1hZ2VDYWNoZSgp
LmNsZWFySW1hZ2UoY2dJbWFnZVJlZigpKTsKKyNlbmRpZgorfQorCitJbnRTaXplIFBsYXRmb3Jt
SW1hZ2U6OnNpemUoKSBjb25zdAoreworICAgIHJldHVybiBpc05pbCgpID8gSW50U2l6ZSgpIDog
SW50U2l6ZShDR0ltYWdlR2V0V2lkdGgoY2dJbWFnZVJlZigpKSwgQ0dJbWFnZUdldEhlaWdodChj
Z0ltYWdlUmVmKCkpKTsKK30KKworYm9vbCBQbGF0Zm9ybUltYWdlOjpoYXNBbHBoYSgpIGNvbnN0
Cit7CisgICAgLy8gRklYTUU6IEFuc3dlciBjb3JyZWN0bHkgdGhlIHF1ZXN0aW9uOiBkb2VzIHRo
ZSBDR0ltYWdlUmVmIGhhdmUgYWxwaGEgY2hhbm5uZWw/CisgICAgcmV0dXJuIHRydWU7Cit9CisK
K0NvbG9yIFBsYXRmb3JtSW1hZ2U6OnNpbmdsZVBpeGVsU29saWRDb2xvcigpIGNvbnN0Cit7Cisg
ICAgaWYgKGlzTmlsKCkgfHwgc2l6ZSgpICE9IEludFNpemUoMSwgMSkpCisgICAgICAgIHJldHVy
biBDb2xvcigpOworICAgIAorICAgIHVuc2lnbmVkIGNoYXIgcGl4ZWxbNF07IC8vIFJHQkEKKyAg
ICBhdXRvIGJpdG1hcENvbnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZShwaXhl
bCwgMSwgMSwgOCwgc2l6ZW9mKHBpeGVsKSwgc1JHQkNvbG9yU3BhY2VSZWYoKSwKKyAgICAgICAg
a0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRMYXN0IHwga0NHQml0bWFwQnl0ZU9yZGVyMzJCaWcp
KTsKKyAgICAKKyAgICBpZiAoIWJpdG1hcENvbnRleHQpCisgICAgICAgIHJldHVybiBDb2xvcigp
OworICAgIAorICAgIENHQ29udGV4dFNldEJsZW5kTW9kZShiaXRtYXBDb250ZXh0LmdldCgpLCBr
Q0dCbGVuZE1vZGVDb3B5KTsKKyAgICBDR0NvbnRleHREcmF3SW1hZ2UoYml0bWFwQ29udGV4dC5n
ZXQoKSwgQ0dSZWN0TWFrZSgwLCAwLCAxLCAxKSwgY2dJbWFnZVJlZigpKTsKKyAgICAKKyAgICBp
ZiAoIXBpeGVsWzNdKQorICAgICAgICByZXR1cm4gQ29sb3IoMCwgMCwgMCwgMCk7CisgICAgCisg
ICAgcmV0dXJuIENvbG9yKHBpeGVsWzBdICogMjU1IC8gcGl4ZWxbM10sIHBpeGVsWzFdICogMjU1
IC8gcGl4ZWxbM10sIHBpeGVsWzJdICogMjU1IC8gcGl4ZWxbM10sIHBpeGVsWzNdKTsKK30KKyAg
ICAKK2Jvb2wgUGxhdGZvcm1JbWFnZTo6aXNBbG1vc3RTb2xpZENvbG9yKCkgY29uc3QKK3sKKyAg
ICBDR0ltYWdlUmVmIGltYWdlID0gY2dJbWFnZVJlZigpOworICAgIEFTU0VSVChDR0ltYWdlR2V0
Qml0c1BlckNvbXBvbmVudChpbWFnZSkgPT0gOCk7CisgICAgCisgICAgQ0dCaXRtYXBJbmZvIGlt
YWdlSW5mbyA9IENHSW1hZ2VHZXRCaXRtYXBJbmZvKGltYWdlKTsKKyAgICBpZiAoIShpbWFnZUlu
Zm8gJiBrQ0dCaXRtYXBCeXRlT3JkZXIzMkxpdHRsZSkgfHwgKGltYWdlSW5mbyAmIGtDR0JpdG1h
cEFscGhhSW5mb01hc2spICE9IGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3QpIHsKKyAg
ICAgICAgLy8gRklYTUU6IENvbnNpZGVyIGJlaW5nIGFibGUgdG8gaGFuZGxlIG90aGVyIHBpeGVs
IGZvcm1hdHMuCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorICAgIAorICAgIHNpemVfdCB3aWR0aCA9IENHSW1hZ2VHZXRXaWR0aChp
bWFnZSk7CisgICAgc2l6ZV90IGhlaWdodCA9IENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UpOworICAg
IHNpemVfdCBieXRlc1BlclJvdyA9IENHSW1hZ2VHZXRCeXRlc1BlclJvdyhpbWFnZSk7CisgICAg
CisgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gcHJvdmlkZXIgPSBhZG9wdENGKENHRGF0YVByb3Zp
ZGVyQ29weURhdGEoQ0dJbWFnZUdldERhdGFQcm92aWRlcihpbWFnZSkpKTsKKyAgICBjb25zdCBV
SW50OCogZGF0YSA9IENGRGF0YUdldEJ5dGVQdHIocHJvdmlkZXIuZ2V0KCkpOworICAgIAorICAg
IC8vIE92ZXJsYXkgYSBncmlkIG9mIHNhbXBsaW5nIGRvdHMgb24gdG9wIG9mIGEgZ3JheXNjYWxl
IHZlcnNpb24gb2YgdGhlIGltYWdlLgorICAgIC8vIEZvciB0aGUgaW50ZXJpb3IgcG9pbnRzLCBj
YWxjdWxhdGUgdGhlIGRpZmZlcmVuY2UgaW4gbHVtaW5hbmNlIGFtb25nIHRoZSBzYW1wbGUgcG9p
bnQKKyAgICAvLyBhbmQgaXRzIHN1cnJvdW5kcyBwb2ludHMsIHNjYWxlZCBieSB0cmFuc3BhcmVu
Y3kuCisgICAgY29uc3QgdW5zaWduZWQgc2FtcGxlUm93cyA9IDc7CisgICAgY29uc3QgdW5zaWdu
ZWQgc2FtcGxlQ29scyA9IDc7CisgICAgLy8gRklYTUU6IFJlZmluZSB0aGUgcHJvcGVyIG51bWJl
ciBvZiBzYW1wbGVzLCBhbmQgYWNjb21tb2RhdGUgZGlmZmVyZW50IGFzcGVjdCByYXRpb3MuCisg
ICAgaWYgKHdpZHRoIDwgc2FtcGxlQ29scyB8fCBoZWlnaHQgPCBzYW1wbGVSb3dzKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgLy8gRW5zdXJlIHRoYXQgdGhlIGxhc3Qgcm93L2Nv
bHVtbiBsYW5kIG9uIHRoZSBpbWFnZSBwZXJpbWV0ZXIuCisgICAgY29uc3QgZmxvYXQgc3RyaWRl
V2lkdGggPSBzdGF0aWNfY2FzdDxmbG9hdD4od2lkdGggLSAxKSAvIChzYW1wbGVDb2xzIC0gMSk7
CisgICAgY29uc3QgZmxvYXQgc3RyaWRlSGVpZ2h0ID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGhlaWdo
dCAtIDEpIC8gKHNhbXBsZVJvd3MgLSAxKTsKKyAgICBmbG9hdCBzYW1wbGVzW3NhbXBsZVJvd3Nd
W3NhbXBsZUNvbHNdOworICAgIAorICAgIC8vIEZpbmQgdGhlIGx1bWluYW5jZSBvZiB0aGUgc2Ft
cGxlIHBvaW50cy4KKyAgICBmbG9hdCB5ID0gMDsKKyAgICBjb25zdCBVSW50OCogcm93ID0gZGF0
YTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2FtcGxlUm93czsgKytpKSB7CisgICAg
ICAgIGZsb2F0IHggPSAwOworICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAwOyBqIDwgc2FtcGxl
Q29sczsgKytqKSB7CisgICAgICAgICAgICBjb25zdCBVSW50OCogcDAgPSByb3cgKyAoc3RhdGlj
X2Nhc3Q8aW50Pih4ICsgLjUpKSAqIDQ7CisgICAgICAgICAgICAvLyBSIEcgQiBBCisgICAgICAg
ICAgICBzYW1wbGVzW2ldW2pdID0gKDAuMjEyNSAqICpwMCArIDAuNzE1NCAqICoocDArMSkgKyAw
LjA3MjEgKiAqKHAwKzIpKSAqICoocDArMykgLyAyNTU7CisgICAgICAgICAgICB4ICs9IHN0cmlk
ZVdpZHRoOworICAgICAgICB9CisgICAgICAgIHkgKz0gc3RyaWRlSGVpZ2h0OworICAgICAgICBy
b3cgPSBkYXRhICsgKHN0YXRpY19jYXN0PGludD4oeSArIC41KSkgKiBieXRlc1BlclJvdzsKKyAg
ICB9CisgICAgCisgICAgLy8gRGV0ZXJtaW5lIHRoZSBpbWFnZSBzY29yZS4KKyAgICBmbG9hdCBh
Y2N1bVNjb3JlID0gMDsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwgc2FtcGxlUm93cyAt
IDE7ICsraSkgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAxOyBqIDwgc2FtcGxlQ29scyAt
IDE7ICsraikgeworICAgICAgICAgICAgZmxvYXQgZGlmZiA9IHNhbXBsZXNbaSAtIDFdW2pdICsg
c2FtcGxlc1tpICsgMV1bal0gKyBzYW1wbGVzW2ldW2ogLSAxXSArIHNhbXBsZXNbaV1baiArIDFd
IC0gNCAqIHNhbXBsZXNbaV1bal07CisgICAgICAgICAgICBhY2N1bVNjb3JlICs9IGRpZmYgKiBk
aWZmOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIC8vIFRoZSBzY29yZSBmb3IgYSBnaXZl
biBzYW1wbGUgY2FuIGJlIHdpdGhpbiB0aGUgcmFuZ2Ugb2YgMCBhbmQgMjU1XjIuCisgICAgcmV0
dXJuIGFjY3VtU2NvcmUgPCAyNTAwICogKHNhbXBsZVJvd3MgLSAyKSAqIChzYW1wbGVDb2xzIC0g
Mik7Cit9CisKK2Zsb2F0IFBsYXRmb3JtSW1hZ2U6OnN1YnNhbXBsaW5nU2NhbGUoR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QpCit7CisgICAgLy8gTmV2ZXIgdXNlIHN1YnNhbXBsZWQgaW1hZ2VzIGZvciBk
cmF3aW5nIGludG8gUERGIGNvbnRleHRzLgorICAgIGlmICh3a0NHQ29udGV4dElzUERGQ29udGV4
dChjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpKSkKKyAgICAgICAgcmV0dXJuIDE7CisgICAgCisg
ICAgQ0dSZWN0IHRyYW5zZm9ybWVkRGVzdGluYXRpb25SZWN0ID0gQ0dSZWN0QXBwbHlBZmZpbmVU
cmFuc2Zvcm0oZGVzdFJlY3QsIENHQ29udGV4dEdldENUTShjb250ZXh0LnBsYXRmb3JtQ29udGV4
dCgpKSk7CisgICAgcmV0dXJuIHN0ZDo6bWluPGZsb2F0PigxLCBzdGQ6Om1heCh0cmFuc2Zvcm1l
ZERlc3RpbmF0aW9uUmVjdC5zaXplLndpZHRoIC8gc3JjUmVjdC53aWR0aCgpLCB0cmFuc2Zvcm1l
ZERlc3RpbmF0aW9uUmVjdC5zaXplLmhlaWdodCAvIHNyY1JlY3QuaGVpZ2h0KCkpKTsKK30KKwor
dm9pZCBQbGF0Zm9ybUltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRT
aXplJiBzcmNTaXplLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIG1vZGUsIGNvbnN0
IEltYWdlT3JpZW50YXRpb24mIG9yaWVudGF0aW9uKSBjb25zdAoreworICAgIC8vIFN1YnNhbXBs
aW5nIG1heSBoYXZlIGdpdmVuIHVzIGFuIGltYWdlIHRoYXQgaXMgc21hbGxlciB0aGFuIHNpemUo
KS4KKyAgICBJbnRTaXplIHN1YnNhbXBsZWRJbWFnZVNpemUgPSBzaXplKCk7CisgICAgCisgICAg
Ly8gc3JjUmVjdCBpcyBpbiB0aGUgY29vcmRpbmF0ZXMgb2YgdGhlIHVuc3Vic2FtcGxlZCBpbWFn
ZSwgc28gd2UgaGF2ZSB0byBtYXAgaXQgdG8gdGhlIHN1YnNhbXBsZWQgaW1hZ2UuCisgICAgRmxv
YXRSZWN0IGFkanVzdGVkU3JjUmVjdCA9IHNyY1JlY3Q7CisgICAgaWYgKHN1YnNhbXBsZWRJbWFn
ZVNpemUgIT0gc3JjU2l6ZSkKKyAgICAgICAgYWRqdXN0ZWRTcmNSZWN0ID0gbWFwUmVjdChzcmNS
ZWN0LCBGbG9hdFJlY3QoeyB9LCBzcmNTaXplKSwgRmxvYXRSZWN0KHsgfSwgc3Vic2FtcGxlZElt
YWdlU2l6ZSkpOworICAgIAorICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKG1faW1hZ2UsIHN1
YnNhbXBsZWRJbWFnZVNpemUsIGRlc3RSZWN0LCBhZGp1c3RlZFNyY1JlY3QsIG9wLCBtb2RlLCBv
cmllbnRhdGlvbik7Cit9CisgICAgCit9CisKKyNlbmRpZiAvLyBVU0UoQ0cpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9UZXh0VHJhY2tSZXByZXNl
bnRhdGlvbkNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
VGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYS5tbQppbmRleCA4OTcyMGQxNzM2NWRhN2U4YmE4
NDY5ZDUyOTQ1NDhkNTE4NDdhN2ZlLi40NDc2ZmM1Zjg3YzM0OTg4ZjZkOWFkNTVlZWJkOGQxYjli
YjAyMmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9UZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL1RleHRUcmFja1JlcHJlc2VudGF0aW9uQ29jb2EubW0KQEAg
LTEyOSw3ICsxMjksNyBAQCBUZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hOjp+VGV4dFRyYWNr
UmVwcmVzZW50YXRpb25Db2NvYSgpCiB2b2lkIFRleHRUcmFja1JlcHJlc2VudGF0aW9uQ29jb2E6
OnVwZGF0ZSgpCiB7CiAgICAgaWYgKGF1dG8gcmVwcmVzZW50YXRpb24gPSBtX2NsaWVudC5jcmVh
dGVUZXh0VHJhY2tSZXByZXNlbnRhdGlvbkltYWdlKCkpCi0gICAgICAgIFttX2xheWVyLmdldCgp
IHNldENvbnRlbnRzOihpZClyZXByZXNlbnRhdGlvbi0+Z2V0Q0dJbWFnZVJlZigpXTsKKyAgICAg
ICAgW21fbGF5ZXIuZ2V0KCkgc2V0Q29udGVudHM6KGlkKXJlcHJlc2VudGF0aW9uLT5uYXRpdmVJ
bWFnZSgpLmdldCgpXTsKIH0KIAogdm9pZCBUZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hOjpz
ZXRDb250ZW50U2NhbGUoZmxvYXQgc2NhbGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMubW0KaW5kZXggMDFlYjZkZDMwMDQzYTIyNTI5MTc2ZmQ5
MTIxMTdkYzU3NzZjMTdiYS4uZGMxYzdjNzA5NWQ5NDRjNGM2MmYxZmUwOTM1NzAyYTEzYzdjN2E0
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdl
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9JbWFnZU1h
Yy5tbQpAQCAtODUsMzEgKzg1LDIyIEBAIENGRGF0YVJlZiBCaXRtYXBJbWFnZTo6Z2V0VElGRlJl
cHJlc2VudGF0aW9uKCkKICAgICBpZiAobV90aWZmUmVwKQogICAgICAgICByZXR1cm4gbV90aWZm
UmVwLmdldCgpOwogCi0gICAgdW5zaWduZWQgbnVtRnJhbWVzID0gZnJhbWVDb3VudCgpOworICAg
IGF1dG8gbmF0aXZlSW1hZ2VzID0gdGhpcy0+ZnJhbWVzTmF0aXZlSW1hZ2VzKCk7CiAKLSAgICAv
LyBJZiBudW1GcmFtZXMgaXMgemVybywgd2Uga25vdyBmb3IgY2VydGFpbiB0aGlzIGltYWdlIGRv
ZXNuJ3QgaGF2ZSB2YWxpZCBkYXRhCisgICAgLy8gSWYgZnJhbWVzSW1hZ2VzLnNpemUoKSBpcyB6
ZXJvLCB3ZSBrbm93IGZvciBjZXJ0YWluIHRoaXMgaW1hZ2UgZG9lc24ndCBoYXZlIHZhbGlkIGRh
dGEKICAgICAvLyBFdmVuIHRob3VnaCB0aGUgY2FsbCB0byBDR0ltYWdlRGVzdGluYXRpb25DcmVh
dGVXaXRoRGF0YSB3aWxsIGZhaWwgYW5kIHdlJ2xsIGhhbmRsZSBpdCBncmFjZWZ1bGx5LAogICAg
IC8vIGluIGNlcnRhaW4gY2lyY3Vtc3RhbmNlcyB0aGF0IGNhbGwgd2lsbCBzcGFtIHRoZSBjb25z
b2xlIHdpdGggYW4gZXJyb3IgbWVzc2FnZQotICAgIGlmICghbnVtRnJhbWVzKQotICAgICAgICBy
ZXR1cm4gMDsKLQotICAgIFZlY3RvcjxDR0ltYWdlUmVmPiBpbWFnZXM7Ci0gICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IG51bUZyYW1lczsgKytpICkgewotICAgICAgICBDR0ltYWdlUmVmIGNn
SW1hZ2UgPSBmcmFtZUltYWdlQXRJbmRleChpKS5nZXQoKTsKLSAgICAgICAgaWYgKGNnSW1hZ2Up
Ci0gICAgICAgICAgICBpbWFnZXMuYXBwZW5kKGNnSW1hZ2UpOwotICAgIH0KLQotICAgIHVuc2ln
bmVkIG51bVZhbGlkRnJhbWVzID0gaW1hZ2VzLnNpemUoKTsKKyAgICBpZiAoIW5hdGl2ZUltYWdl
cy5zaXplKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgUmV0YWluUHRyPENGTXV0
YWJsZURhdGFSZWY+IGRhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZU11dGFibGUoMCwgMCkpOwot
ICAgIFJldGFpblB0cjxDR0ltYWdlRGVzdGluYXRpb25SZWY+IGRlc3RpbmF0aW9uID0gYWRvcHRD
RihDR0ltYWdlRGVzdGluYXRpb25DcmVhdGVXaXRoRGF0YShkYXRhLmdldCgpLCBrVVRUeXBlVElG
RiwgbnVtVmFsaWRGcmFtZXMsIDApKTsKKyAgICBSZXRhaW5QdHI8Q0dJbWFnZURlc3RpbmF0aW9u
UmVmPiBkZXN0aW5hdGlvbiA9IGFkb3B0Q0YoQ0dJbWFnZURlc3RpbmF0aW9uQ3JlYXRlV2l0aERh
dGEoZGF0YS5nZXQoKSwga1VUVHlwZVRJRkYsIG5hdGl2ZUltYWdlcy5zaXplKCksIDApKTsKIAog
ICAgIGlmICghZGVzdGluYXRpb24pCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1WYWxpZEZyYW1lczsg
KytpKQotICAgICAgICBDR0ltYWdlRGVzdGluYXRpb25BZGRJbWFnZShkZXN0aW5hdGlvbi5nZXQo
KSwgaW1hZ2VzW2ldLCAwKTsKKyAgICBmb3IgKGF1dG8gbmF0aXZlSW1hZ2UgOiBuYXRpdmVJbWFn
ZXMpCisgICAgICAgIENHSW1hZ2VEZXN0aW5hdGlvbkFkZEltYWdlKGRlc3RpbmF0aW9uLmdldCgp
LCBuYXRpdmVJbWFnZS5nZXQoKSwgMCk7CiAKICAgICBDR0ltYWdlRGVzdGluYXRpb25GaW5hbGl6
ZShkZXN0aW5hdGlvbi5nZXQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwCmluZGV4IDIxNzUzYmQwNzhhMWM1
NWMzMjcxOWMxNDg0NmYwZjZiOTk3NWY4ZmQuLmE5YmZiZDk1ZTRlZDM2NzhhMGRkY2RmNzc3MTdh
ZTJjMjNkZGFmZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcApAQCAtMTMyLDcgKzEzMiw2IEBAIEltYWdlRnJh
bWU6OkltYWdlRnJhbWUoKQogICAgICwgbV9zdGF0dXMoRnJhbWVFbXB0eSkKICAgICAsIG1fZHVy
YXRpb24oMCkKICAgICAsIG1fZGlzcG9zYWxNZXRob2QoRGlzcG9zZU5vdFNwZWNpZmllZCkKLSAg
ICAsIG1fcHJlbXVsdGlwbHlBbHBoYSh0cnVlKQogewogfSAKIApAQCAtMTQyLDE4ICsxNDEsMTYg
QEAgSW1hZ2VGcmFtZSYgSW1hZ2VGcmFtZTo6b3BlcmF0b3I9KGNvbnN0IEltYWdlRnJhbWUmIG90
aGVyKQogICAgICAgICByZXR1cm4gKnRoaXM7CiAKICAgICBjb3B5Qml0bWFwRGF0YShvdGhlcik7
Ci0gICAgc2V0T3JpZ2luYWxGcmFtZVJlY3Qob3RoZXIub3JpZ2luYWxGcmFtZVJlY3QoKSk7Cisg
ICAgc2V0SGFzQWxwaGEob3RoZXIubV9oYXNBbHBoYSk7CiAgICAgc2V0U3RhdHVzKG90aGVyLnN0
YXR1cygpKTsKICAgICBzZXREdXJhdGlvbihvdGhlci5kdXJhdGlvbigpKTsKICAgICBzZXREaXNw
b3NhbE1ldGhvZChvdGhlci5kaXNwb3NhbE1ldGhvZCgpKTsKLSAgICBzZXRQcmVtdWx0aXBseUFs
cGhhKG90aGVyLnByZW11bHRpcGx5QWxwaGEoKSk7CiAgICAgcmV0dXJuICp0aGlzOwogfQogCiB2
b2lkIEltYWdlRnJhbWU6OmNsZWFyUGl4ZWxEYXRhKCkKIHsKLSAgICBtX2JhY2tpbmdTdG9yZS5j
bGVhcigpOwotICAgIG1fYnl0ZXMgPSAwOworICAgIG1fcGl4ZWxzID0gbnVsbHB0cjsKICAgICBt
X3N0YXR1cyA9IEZyYW1lRW1wdHk7CiAgICAgLy8gTk9URTogRG8gbm90IHJlc2V0IG90aGVyIG1l
bWJlcnMgaGVyZTsgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKCkgY2FsbHMgdGhpcwogICAgIC8vIHRv
IGZyZWUgdGhlIGJpdG1hcCBkYXRhLCBidXQgb3RoZXIgZnVuY3Rpb25zIGxpa2UgaW5pdEZyYW1l
QnVmZmVyKCkgYW5kCkBAIC0xNjMsMjQgKzE2MCwxNiBAQCB2b2lkIEltYWdlRnJhbWU6OmNsZWFy
UGl4ZWxEYXRhKCkKIAogdm9pZCBJbWFnZUZyYW1lOjp6ZXJvRmlsbFBpeGVsRGF0YSgpCiB7Ci0g
ICAgbWVtc2V0KG1fYnl0ZXMsIDAsIG1fc2l6ZS53aWR0aCgpICogbV9zaXplLmhlaWdodCgpICog
c2l6ZW9mKFBpeGVsRGF0YSkpOworICAgIG1fcGl4ZWxzLT5jbGVhcigpOwogICAgIG1faGFzQWxw
aGEgPSB0cnVlOwogfQogCiB2b2lkIEltYWdlRnJhbWU6Onplcm9GaWxsRnJhbWVSZWN0KGNvbnN0
IEludFJlY3QmIHJlY3QpCiB7Ci0gICAgQVNTRVJUKEludFJlY3QoSW50UG9pbnQoKSwgbV9zaXpl
KS5jb250YWlucyhyZWN0KSk7Ci0KICAgICBpZiAocmVjdC5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIHNpemVfdCByZWN0V2lkdGhJbkJ5dGVzID0gcmVjdC53aWR0aCgpICogc2l6
ZW9mKFBpeGVsRGF0YSk7Ci0gICAgUGl4ZWxEYXRhKiBzdGFydCA9IG1fYnl0ZXMgKyAocmVjdC55
KCkgKiB3aWR0aCgpKSArIHJlY3QueCgpOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcmVjdC5o
ZWlnaHQoKTsgKytpKSB7Ci0gICAgICAgIG1lbXNldChzdGFydCwgMCwgcmVjdFdpZHRoSW5CeXRl
cyk7Ci0gICAgICAgIHN0YXJ0ICs9IHdpZHRoKCk7Ci0gICAgfQotCisgICAgbV9waXhlbHMtPmNs
ZWFyUmVjdChyZWN0KTsKICAgICBzZXRIYXNBbHBoYSh0cnVlKTsKIH0KIApAQCAtMTg5LDI1ICsx
NzgsMjMgQEAgYm9vbCBJbWFnZUZyYW1lOjpjb3B5Qml0bWFwRGF0YShjb25zdCBJbWFnZUZyYW1l
JiBvdGhlcikKICAgICBpZiAodGhpcyA9PSAmb3RoZXIpCiAgICAgICAgIHJldHVybiB0cnVlOwog
Ci0gICAgbV9iYWNraW5nU3RvcmUgPSBvdGhlci5tX2JhY2tpbmdTdG9yZTsKLSAgICBtX2J5dGVz
ID0gbV9iYWNraW5nU3RvcmUuZGF0YSgpOwotICAgIG1fc2l6ZSA9IG90aGVyLm1fc2l6ZTsKLSAg
ICBzZXRIYXNBbHBoYShvdGhlci5tX2hhc0FscGhhKTsKKyAgICBpZiAob3RoZXIubV9waXhlbHMp
CisgICAgICAgIG1fcGl4ZWxzID0gQml0bWFwUGl4ZWxzOjpjcmVhdGUoKm90aGVyLm1fcGl4ZWxz
LmdldCgpKTsKKyAgICBlbHNlCisgICAgICAgIG1fcGl4ZWxzID0gbnVsbHB0cjsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotYm9vbCBJbWFnZUZyYW1lOjpzZXRTaXplKGludCBuZXdXaWR0aCwgaW50
IG5ld0hlaWdodCkKK2Jvb2wgSW1hZ2VGcmFtZTo6c2V0U2l6ZShjb25zdCBJbnRTaXplJiBzaXpl
LCBib29sIHByZW11bHRpcGx5QWxwaGEpCiB7Ci0gICAgQVNTRVJUKCF3aWR0aCgpICYmICFoZWln
aHQoKSk7Ci0gICAgc2l6ZV90IGJhY2tpbmdTdG9yZVNpemUgPSBuZXdXaWR0aCAqIG5ld0hlaWdo
dDsKLSAgICBpZiAoIW1fYmFja2luZ1N0b3JlLnRyeVJlc2VydmVDYXBhY2l0eShiYWNraW5nU3Rv
cmVTaXplKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIG1fYmFja2luZ1N0b3JlLnJlc2l6
ZShiYWNraW5nU3RvcmVTaXplKTsKLSAgICBtX2J5dGVzID0gbV9iYWNraW5nU3RvcmUuZGF0YSgp
OwotICAgIG1fc2l6ZSA9IEludFNpemUobmV3V2lkdGgsIG5ld0hlaWdodCk7CisgICAgQVNTRVJU
KCFtX3BpeGVscyk7CisgICAgbV9waXhlbHMgPSBCaXRtYXBQaXhlbHM6OmNyZWF0ZShzaXplLCBw
cmVtdWx0aXBseUFscGhhKTsKKyAgICByZXR1cm4gbV9waXhlbHMgIT0gbnVsbHB0cjsKK30KIAot
ICAgIHplcm9GaWxsUGl4ZWxEYXRhKCk7Ci0gICAgcmV0dXJuIHRydWU7Cit2b2lkIEltYWdlRnJh
bWU6OmNvcHlSb3dOVGltZXMoaW50IHN0YXJ0WCwgaW50IGVuZFgsIGludCBzdGFydFksIGludCBl
bmRZKQoreworICAgIG1fcGl4ZWxzLT5yZXBlYXRGaXJzdFJvdyhJbnRSZWN0KHN0YXJ0WCwgc3Rh
cnRZLCBlbmRYIC1zdGFydFggLCBlbmRZIC0gc3RhcnRZKSk7CiB9CiAKIGJvb2wgSW1hZ2VGcmFt
ZTo6aGFzQWxwaGEoKSBjb25zdApAQCAtMjIwLDExICsyMDcsNiBAQCB2b2lkIEltYWdlRnJhbWU6
OnNldEhhc0FscGhhKGJvb2wgYWxwaGEpCiAgICAgbV9oYXNBbHBoYSA9IGFscGhhOwogfQogCi12
b2lkIEltYWdlRnJhbWU6OnNldENvbG9yUHJvZmlsZShjb25zdCBDb2xvclByb2ZpbGUmIGNvbG9y
UHJvZmlsZSkKLXsKLSAgICBtX2NvbG9yUHJvZmlsZSA9IGNvbG9yUHJvZmlsZTsKLX0KLQogdm9p
ZCBJbWFnZUZyYW1lOjpzZXRTdGF0dXMoRnJhbWVTdGF0dXMgc3RhdHVzKQogewogICAgIG1fc3Rh
dHVzID0gc3RhdHVzOwpAQCAtMjkxLDcgKzI3Myw3IEBAIHVuc2lnbmVkIEltYWdlRGVjb2Rlcjo6
ZnJhbWVCeXRlc0F0SW5kZXgoc2l6ZV90IGluZGV4KSBjb25zdAogICAgIGlmIChtX2ZyYW1lQnVm
ZmVyQ2FjaGUuc2l6ZSgpIDw9IGluZGV4KQogICAgICAgICByZXR1cm4gMDsKICAgICAvLyBGSVhN
RTogVXNlIHRoZSBkaW1lbnNpb24gb2YgdGhlIHJlcXVlc3RlZCBmcmFtZS4KLSAgICByZXR1cm4g
bV9zaXplLmFyZWEoKSAqIHNpemVvZihJbWFnZUZyYW1lOjpQaXhlbERhdGEpOworICAgIHJldHVy
biBtX3NpemUuYXJlYSgpICogc2l6ZW9mKFJHQkEzMik7CiB9CiAKIGZsb2F0IEltYWdlRGVjb2Rl
cjo6ZnJhbWVEdXJhdGlvbkF0SW5kZXgoc2l6ZV90IGluZGV4KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaAppbmRleCAyZjhl
ZWUxNzgxZDE2MmQ4NmM0OWZlMWRhYzcyYTJlN2U0MGE1ZDZkLi43M2YwNjk0ZWYxMWY5NDE1OGFk
NzE3MmU0MGI1YTg4MDIyMGZhNjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaApAQCAtMjgsNiArMjgsNyBAQAogCiAj
cHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkJpdG1hcFBpeGVscy5oIgogI2luY2x1ZGUgIkludFJl
Y3QuaCIKICNpbmNsdWRlICJJbWFnZVNvdXJjZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU2NyZWVu
LmgiCkBAIC01Nyw3ICs1OCw2IEBAIHVzaW5nIENvbG9yUHJvZmlsZSA9IFZlY3RvcjxjaGFyPjsK
ICAgICAgICAgICAgIERpc3Bvc2VPdmVyd3JpdGVQcmV2aW91cyAgLy8gQ2xlYXIgZnJhbWUgdG8g
cHJldmlvdXMgZnJhbWVidWZmZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gY29udGVudHMKICAgICAgICAgfTsKLSAgICAgICAgdHlwZWRlZiB1bnNpZ25lZCBQaXhl
bERhdGE7CiAKICAgICAgICAgSW1hZ2VGcmFtZSgpOwogCkBAIC04MCwxNTEgKzgwLDYwIEBAIHVz
aW5nIENvbG9yUHJvZmlsZSA9IFZlY3RvcjxjaGFyPjsKICAgICAgICAgLy8gQ29waWVzIHRoZSBw
aXhlbCBkYXRhIGF0IFsoc3RhcnRYLCBzdGFydFkpLCAoZW5kWCwgc3RhcnRZKSkgdG8gdGhlCiAg
ICAgICAgIC8vIHNhbWUgWC1jb29yZGluYXRlcyBvbiBlYWNoIHN1YnNlcXVlbnQgcm93IHVwIHRv
IGJ1dCBub3QgaW5jbHVkaW5nCiAgICAgICAgIC8vIGVuZFkuCi0gICAgICAgIHZvaWQgY29weVJv
d05UaW1lcyhpbnQgc3RhcnRYLCBpbnQgZW5kWCwgaW50IHN0YXJ0WSwgaW50IGVuZFkpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChzdGFydFggPCB3aWR0aCgpKTsKLSAgICAgICAgICAg
IEFTU0VSVChlbmRYIDw9IHdpZHRoKCkpOwotICAgICAgICAgICAgQVNTRVJUKHN0YXJ0WSA8IGhl
aWdodCgpKTsKLSAgICAgICAgICAgIEFTU0VSVChlbmRZIDw9IGhlaWdodCgpKTsKLSAgICAgICAg
ICAgIGNvbnN0IGludCByb3dCeXRlcyA9IChlbmRYIC0gc3RhcnRYKSAqIHNpemVvZihQaXhlbERh
dGEpOwotICAgICAgICAgICAgY29uc3QgUGl4ZWxEYXRhKiBjb25zdCBzdGFydEFkZHIgPSBnZXRB
ZGRyKHN0YXJ0WCwgc3RhcnRZKTsKLSAgICAgICAgICAgIGZvciAoaW50IGRlc3RZID0gc3RhcnRZ
ICsgMTsgZGVzdFkgPCBlbmRZOyArK2Rlc3RZKQotICAgICAgICAgICAgICAgIG1lbWNweShnZXRB
ZGRyKHN0YXJ0WCwgZGVzdFkpLCBzdGFydEFkZHIsIHJvd0J5dGVzKTsKLSAgICAgICAgfQorICAg
ICAgICB2b2lkIGNvcHlSb3dOVGltZXMoaW50IHN0YXJ0WCwgaW50IGVuZFgsIGludCBzdGFydFks
IGludCBlbmRZKTsKIAogICAgICAgICAvLyBBbGxvY2F0ZXMgc3BhY2UgZm9yIHRoZSBwaXhlbCBk
YXRhLiAgTXVzdCBiZSBjYWxsZWQgYmVmb3JlIGFueSBwaXhlbHMKICAgICAgICAgLy8gYXJlIHdy
aXR0ZW4uICBNdXN0IG9ubHkgYmUgY2FsbGVkIG9uY2UuICBSZXR1cm5zIHdoZXRoZXIgYWxsb2Nh
dGlvbgogICAgICAgICAvLyBzdWNjZWVkZWQuCi0gICAgICAgIGJvb2wgc2V0U2l6ZShpbnQgbmV3
V2lkdGgsIGludCBuZXdIZWlnaHQpOworICAgICAgICBib29sIHNldFNpemUoY29uc3QgSW50U2l6
ZSYsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSk7CisgICAgICAgIEludFNpemUgc2l6ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fcGl4ZWxzLT5zaXplKCk7IH0KIAogICAgICAgICAvLyBSZXR1cm5zIGEgY2Fs
bGVyLW93bmVkIHBvaW50ZXIgdG8gdGhlIHVuZGVybHlpbmcgbmF0aXZlIGltYWdlIGRhdGEuCiAg
ICAgICAgIC8vIChBY3R1YWwgdXNlOiBUaGlzIHBvaW50ZXIgd2lsbCBiZSBvd25lZCBieSBCaXRt
YXBJbWFnZSBhbmQgZnJlZWQgaW4KICAgICAgICAgLy8gRnJhbWVEYXRhOjpjbGVhcigpKS4KLSAg
ICAgICAgTmF0aXZlSW1hZ2VQdHIgYXNOZXdOYXRpdmVJbWFnZSgpIGNvbnN0OworICAgICAgICBO
YXRpdmVJbWFnZVB0ciBhc05ld05hdGl2ZUltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9waXhlbHMt
PmltYWdlKCk7IH0KKworICAgICAgICBpbmxpbmUgQml0bWFwUGl4ZWxzKiBwaXhlbHMoKSBjb25z
dCB7IHJldHVybiBtX3BpeGVscyA/IG1fcGl4ZWxzLmdldCgpIDogbnVsbHB0cjsgfQorICAgICAg
ICBpbmxpbmUgYm9vbCBoYXNQaXhlbHMoKSBjb25zdCB7IHJldHVybiBwaXhlbHMoKTsgfQogCiAg
ICAgICAgIGJvb2wgaGFzQWxwaGEoKSBjb25zdDsKLSAgICAgICAgY29uc3QgSW50UmVjdCYgb3Jp
Z2luYWxGcmFtZVJlY3QoKSBjb25zdCB7IHJldHVybiBtX29yaWdpbmFsRnJhbWVSZWN0OyB9CiAg
ICAgICAgIEZyYW1lU3RhdHVzIHN0YXR1cygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdHVzOyB9CiAg
ICAgICAgIHVuc2lnbmVkIGR1cmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9kdXJhdGlvbjsgfQog
ICAgICAgICBGcmFtZURpc3Bvc2FsTWV0aG9kIGRpc3Bvc2FsTWV0aG9kKCkgY29uc3QgeyByZXR1
cm4gbV9kaXNwb3NhbE1ldGhvZDsgfQotICAgICAgICBib29sIHByZW11bHRpcGx5QWxwaGEoKSBj
b25zdCB7IHJldHVybiBtX3ByZW11bHRpcGx5QWxwaGE7IH0KIAogICAgICAgICB2b2lkIHNldEhh
c0FscGhhKGJvb2wgYWxwaGEpOwotICAgICAgICB2b2lkIHNldENvbG9yUHJvZmlsZShjb25zdCBD
b2xvclByb2ZpbGUmKTsKLSAgICAgICAgdm9pZCBzZXRPcmlnaW5hbEZyYW1lUmVjdChjb25zdCBJ
bnRSZWN0JiByKSB7IG1fb3JpZ2luYWxGcmFtZVJlY3QgPSByOyB9CiAgICAgICAgIHZvaWQgc2V0
U3RhdHVzKEZyYW1lU3RhdHVzIHN0YXR1cyk7CiAgICAgICAgIHZvaWQgc2V0RHVyYXRpb24odW5z
aWduZWQgZHVyYXRpb24pIHsgbV9kdXJhdGlvbiA9IGR1cmF0aW9uOyB9CiAgICAgICAgIHZvaWQg
c2V0RGlzcG9zYWxNZXRob2QoRnJhbWVEaXNwb3NhbE1ldGhvZCBtZXRob2QpIHsgbV9kaXNwb3Nh
bE1ldGhvZCA9IG1ldGhvZDsgfQotICAgICAgICB2b2lkIHNldFByZW11bHRpcGx5QWxwaGEoYm9v
bCBwcmVtdWx0aXBseUFscGhhKSB7IG1fcHJlbXVsdGlwbHlBbHBoYSA9IHByZW11bHRpcGx5QWxw
aGE7IH0KIAogICAgICAgICBpbmxpbmUgdm9pZCBzZXRSR0JBKGludCB4LCBpbnQgeSwgdW5zaWdu
ZWQgciwgdW5zaWduZWQgZywgdW5zaWduZWQgYiwgdW5zaWduZWQgYSkKICAgICAgICAgewotICAg
ICAgICAgICAgc2V0UkdCQShnZXRBZGRyKHgsIHkpLCByLCBnLCBiLCBhKTsKLSAgICAgICAgfQot
Ci0gICAgICAgIGlubGluZSBQaXhlbERhdGEqIGdldEFkZHIoaW50IHgsIGludCB5KQotICAgICAg
ICB7Ci0gICAgICAgICAgICByZXR1cm4gbV9ieXRlcyArICh5ICogd2lkdGgoKSkgKyB4OworICAg
ICAgICAgICAgbV9waXhlbHMtPnNldFJHQkEoeCwgeSwgciwgZywgYiwgYSk7CiAgICAgICAgIH0K
IAotICAgICAgICBpbmxpbmUgYm9vbCBoYXNQaXhlbERhdGEoKSBjb25zdAorICAgICAgICBpbmxp
bmUgUkdCQTMyKiBnZXRBZGRyKGludCB4LCBpbnQgeSkKICAgICAgICAgewotICAgICAgICAgICAg
cmV0dXJuIG1fYnl0ZXM7CisgICAgICAgICAgICByZXR1cm4gbV9waXhlbHMtPmF0KHgsIHkpOwog
ICAgICAgICB9CiAKLSAgICAgICAgLy8gVXNlIGZpeCBwb2ludCBtdWx0aXBsaWVyIGluc3RlYWQg
b2YgaW50ZWdlciBkaXZpc2lvbiBvciBmbG9hdGluZyBwb2ludCBtYXRoLgotICAgICAgICAvLyBU
aGlzIG11bHRpcGxlciBwcm9kdWNlcyBleGFjdGx5IHRoZSBzYW1lIHJlc3VsdCBmb3IgYWxsIHZh
bHVlcyBpbiByYW5nZSAwIC0gMjU1LgotICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgZml4
UG9pbnRTaGlmdCA9IDI0OwotICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgZml4UG9pbnRN
dWx0ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDEuMCAvIDI1NS4wICogKDEgPDwgZml4UG9pbnRT
aGlmdCkpICsgMTsKLSAgICAgICAgLy8gTXVsdGlwbGllcyB1bnNpZ25lZCB2YWx1ZSBieSBmaXhw
b2ludCB2YWx1ZSBhbmQgY29udmVydHMgYmFjayB0byB1bnNpZ25lZC4KLSAgICAgICAgc3RhdGlj
IHVuc2lnbmVkIGZpeFBvaW50VW5zaWduZWRNdWx0aXBseSh1bnNpZ25lZCBmaXhlZCwgdW5zaWdu
ZWQgdikKKyAgICAgICAgaW5saW5lIHZvaWQgc2V0UkdCQShSR0JBMzIqIGRlc3QsIHVuc2lnbmVk
IHIsIHVuc2lnbmVkIGcsIHVuc2lnbmVkIGIsIHVuc2lnbmVkIGEpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVybiAgKGZpeGVkICogdikgPj4gZml4UG9pbnRTaGlmdDsKLSAgICAgICAgfQot
Ci0gICAgICAgIGlubGluZSB2b2lkIHNldFJHQkEoUGl4ZWxEYXRhKiBkZXN0LCB1bnNpZ25lZCBy
LCB1bnNpZ25lZCBnLCB1bnNpZ25lZCBiLCB1bnNpZ25lZCBhKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBpZiAobV9wcmVtdWx0aXBseUFscGhhICYmIGEgPCAyNTUpIHsKLSAgICAgICAgICAgICAg
ICBpZiAoIWEpIHsKLSAgICAgICAgICAgICAgICAgICAgKmRlc3QgPSAwOwotICAgICAgICAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgdW5z
aWduZWQgYWxwaGFNdWx0ID0gYSAqIGZpeFBvaW50TXVsdDsKLSAgICAgICAgICAgICAgICByID0g
Zml4UG9pbnRVbnNpZ25lZE11bHRpcGx5KHIsIGFscGhhTXVsdCk7Ci0gICAgICAgICAgICAgICAg
ZyA9IGZpeFBvaW50VW5zaWduZWRNdWx0aXBseShnLCBhbHBoYU11bHQpOwotICAgICAgICAgICAg
ICAgIGIgPSBmaXhQb2ludFVuc2lnbmVkTXVsdGlwbHkoYiwgYWxwaGFNdWx0KTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICpkZXN0ID0gKGEgPDwgMjQgfCByIDw8IDE2IHwgZyA8PCA4IHwg
Yik7CisgICAgICAgICAgICBtX3BpeGVscy0+c2V0UkdCQShkZXN0LCByLCBnLCBiLCBhKTsKICAg
ICAgICAgfQogCiAjaWYgRU5BQkxFKEFQTkcpCi0gICAgICAgIHN0YXRpYyBpbmxpbmUgdW5zaWdu
ZWQgZGl2aWRlMjU1KHVuc2lnbmVkIGEpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAo
YSArIChhID4+IDgpICsgMSkgPj4gODsKLSAgICAgICAgfQotCi0gICAgICAgIGlubGluZSB2b2lk
IG92ZXJSR0JBKFBpeGVsRGF0YSogZGVzdCwgdW5zaWduZWQgciwgdW5zaWduZWQgZywgdW5zaWdu
ZWQgYiwgdW5zaWduZWQgYSkKKyAgICAgICAgaW5saW5lIHZvaWQgb3ZlclJHQkEoUkdCQTMyKiBk
ZXN0LCB1bnNpZ25lZCByLCB1bnNpZ25lZCBnLCB1bnNpZ25lZCBiLCB1bnNpZ25lZCBhKQogICAg
ICAgICB7Ci0gICAgICAgICAgICBpZiAoIWEpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotCi0g
ICAgICAgICAgICBpZiAoYSA8IDI1NSkgewotICAgICAgICAgICAgICAgIHVuc2lnbmVkIGFEZXN0
ID0gKCgqZGVzdCkgPj4gMjQpICYgMjU1OwotICAgICAgICAgICAgICAgIGlmIChhRGVzdCkgewot
ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCByRGVzdCA9ICgoKmRlc3QpID4+IDE2KSAmIDI1
NTsKLSAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgZ0Rlc3QgPSAoKCpkZXN0KSA+PiA4KSAm
IDI1NTsKLSAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgYkRlc3QgPSAoKmRlc3QpICYgMjU1
OwotICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBhQXV4ID0gMjU1IC0gYTsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKCFtX3ByZW11bHRpcGx5QWxwaGEpIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHJEZXN0ID0gZGl2aWRlMjU1KHJEZXN0ICogYURlc3QpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgZ0Rlc3QgPSBkaXZpZGUyNTUoZ0Rlc3QgKiBhRGVzdCk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBiRGVzdCA9IGRpdmlkZTI1NShiRGVzdCAqIGFEZXN0KTsKLSAgICAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICByID0gZGl2aWRlMjU1KHIgKiBhICsgckRl
c3QgKiBhQXV4KTsKLSAgICAgICAgICAgICAgICAgICAgZyA9IGRpdmlkZTI1NShnICogYSArIGdE
ZXN0ICogYUF1eCk7Ci0gICAgICAgICAgICAgICAgICAgIGIgPSBkaXZpZGUyNTUoYiAqIGEgKyBi
RGVzdCAqIGFBdXgpOwotICAgICAgICAgICAgICAgICAgICBhICs9IGRpdmlkZTI1NShhRGVzdCAq
IGFBdXgpOwotICAgICAgICAgICAgICAgICAgICBpZiAoIW1fcHJlbXVsdGlwbHlBbHBoYSkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgciA9IChyICogMjU1ICsgYSAtIDEpIC8gYTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGcgPSAoZyAqIDI1NSArIGEgLSAxKSAvIGE7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBiID0gKGIgKiAyNTUgKyBhIC0gMSkgLyBhOwotICAgICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChtX3ByZW11bHRpcGx5QWxwaGEpIHsK
LSAgICAgICAgICAgICAgICAgICAgciA9IGRpdmlkZTI1NShyICogYSk7Ci0gICAgICAgICAgICAg
ICAgICAgIGcgPSBkaXZpZGUyNTUoZyAqIGEpOwotICAgICAgICAgICAgICAgICAgICBiID0gZGl2
aWRlMjU1KGIgKiBhKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAqZGVzdCA9IChhIDw8IDI0IHwgciA8PCAxNiB8IGcgPDwgOCB8IGIpOworICAgICAgICAg
ICAgbV9waXhlbHMtPm92ZXJSR0JBKGRlc3QsIHIsIGcsIGIsIGEpOwogICAgICAgICB9CiAjZW5k
aWYKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIGludCB3aWR0aCgpIGNvbnN0Ci0gICAgICAgIHsK
LSAgICAgICAgICAgIHJldHVybiBtX3NpemUud2lkdGgoKTsKLSAgICAgICAgfQotCi0gICAgICAg
IGludCBoZWlnaHQoKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbV9zaXpl
LmhlaWdodCgpOwotICAgICAgICB9Ci0KLSAgICAgICAgVmVjdG9yPFBpeGVsRGF0YT4gbV9iYWNr
aW5nU3RvcmU7Ci0gICAgICAgIFBpeGVsRGF0YSogbV9ieXRlczsgLy8gVGhlIG1lbW9yeSBpcyBi
YWNrZWQgYnkgbV9iYWNraW5nU3RvcmUuCi0gICAgICAgIEludFNpemUgbV9zaXplOwotICAgICAg
ICAvLyBGSVhNRTogRG8gd2UgbmVlZCBtX2NvbG9yUHJvZmlsZSBhbnltb3JlPwotICAgICAgICBD
b2xvclByb2ZpbGUgbV9jb2xvclByb2ZpbGU7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxCaXRt
YXBQaXhlbHM+IG1fcGl4ZWxzOwogICAgICAgICBib29sIG1faGFzQWxwaGE7Ci0gICAgICAgIElu
dFJlY3QgbV9vcmlnaW5hbEZyYW1lUmVjdDsgLy8gVGhpcyB3aWxsIGFsd2F5cyBqdXN0IGJlIHRo
ZSBlbnRpcmUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBidWZmZXIg
ZXhjZXB0IGZvciBHSUYgZnJhbWVzIHdob3NlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gb3JpZ2luYWwgcmVjdCB3YXMgc21hbGxlciB0aGFuIHRoZQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG92ZXJhbGwgaW1hZ2Ugc2l6ZS4KICAgICAg
ICAgRnJhbWVTdGF0dXMgbV9zdGF0dXM7CiAgICAgICAgIHVuc2lnbmVkIG1fZHVyYXRpb247CiAg
ICAgICAgIEZyYW1lRGlzcG9zYWxNZXRob2QgbV9kaXNwb3NhbE1ldGhvZDsKLSAgICAgICAgYm9v
bCBtX3ByZW11bHRpcGx5QWxwaGE7CiAgICAgfTsKIAogICAgIC8vIEltYWdlRGVjb2RlciBpcyBh
IGJhc2UgZm9yIGFsbCBmb3JtYXQtc3BlY2lmaWMgZGVjb2RlcnMKQEAgLTI5MCwxMSArMTk5LDEx
IEBAIHVzaW5nIENvbG9yUHJvZmlsZSA9IFZlY3RvcjxjaGFyPjsKIAogICAgICAgICAvLyBSZXR1
cm5zIHdoZXRoZXIgdGhlIHNpemUgaXMgbGVnYWwgKGkuZS4gbm90IGdvaW5nIHRvIHJlc3VsdCBp
bgogICAgICAgICAvLyBvdmVyZmxvdyBlbHNld2hlcmUpLiAgSWYgbm90LCBtYXJrcyBkZWNvZGlu
ZyBhcyBmYWlsZWQuCi0gICAgICAgIHZpcnR1YWwgYm9vbCBzZXRTaXplKHVuc2lnbmVkIHdpZHRo
LCB1bnNpZ25lZCBoZWlnaHQpCisgICAgICAgIHZpcnR1YWwgYm9vbCBzZXRTaXplKGNvbnN0IElu
dFNpemUmIHNpemUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmIChpc092ZXJTaXplKHdpZHRo
LCBoZWlnaHQpKQorICAgICAgICAgICAgaWYgKGlzT3ZlclNpemUoc2l6ZSkpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIHNldEZhaWxlZCgpOwotICAgICAgICAgICAgbV9zaXplID0gSW50U2l6ZSh3
aWR0aCwgaGVpZ2h0KTsKKyAgICAgICAgICAgIG1fc2l6ZSA9IHNpemU7CiAgICAgICAgICAgICBt
X3NpemVBdmFpbGFibGUgPSB0cnVlOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
IH0KQEAgLTM4MSw4ICsyOTAsNiBAQCB1c2luZyBDb2xvclByb2ZpbGUgPSBWZWN0b3I8Y2hhcj47
CiAKICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOyAvLyBUaGUgZW5jb2RlZCBk
YXRhLgogICAgICAgICBWZWN0b3I8SW1hZ2VGcmFtZSwgMT4gbV9mcmFtZUJ1ZmZlckNhY2hlOwot
ICAgICAgICAvLyBGSVhNRTogRG8gd2UgbmVlZCBtX2NvbG9yUHJvZmlsZSBhbnkgbW9yZSwgZm9y
IGFueSBwb3J0PwotICAgICAgICBDb2xvclByb2ZpbGUgbV9jb2xvclByb2ZpbGU7CiAgICAgICAg
IGJvb2wgbV9zY2FsZWQgeyBmYWxzZSB9OwogICAgICAgICBWZWN0b3I8aW50PiBtX3NjYWxlZENv
bHVtbnM7CiAgICAgICAgIFZlY3RvcjxpbnQ+IG1fc2NhbGVkUm93czsKQEAgLTM5MywxMSArMzAw
LDEwIEBAIHVzaW5nIENvbG9yUHJvZmlsZSA9IFZlY3RvcjxjaGFyPjsKICAgICBwcml2YXRlOgog
ICAgICAgICAvLyBTb21lIGNvZGUgcGF0aHMgY29tcHV0ZSB0aGUgc2l6ZSBvZiB0aGUgaW1hZ2Ug
YXMgIndpZHRoICogaGVpZ2h0ICogNCIKICAgICAgICAgLy8gYW5kIHJldHVybiBpdCBhcyBhIChz
aWduZWQpIGludC4gIEF2b2lkIG92ZXJmbG93LgotICAgICAgICBzdGF0aWMgYm9vbCBpc092ZXJT
aXplKHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQpCisgICAgICAgIHN0YXRpYyBib29s
IGlzT3ZlclNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKICAgICAgICAgewotICAgICAgICAgICAg
dW5zaWduZWQgbG9uZyBsb25nIHRvdGFsX3NpemUgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25n
IGxvbmc+KHdpZHRoKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KiBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KGhlaWdodCk7Ci0gICAgICAgICAgICBy
ZXR1cm4gdG90YWxfc2l6ZSA+ICgoMSA8PCAyOSkgLSAxKTsKKyAgICAgICAgICAgIHVuc2lnbmVk
IGxvbmcgbG9uZyB0b3RhbFNpemUgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KHNp
emUud2lkdGgoKSkgKiBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KHNpemUuaGVpZ2h0
KCkpOworICAgICAgICAgICAgcmV0dXJuIHRvdGFsU2l6ZSA+ICgoMSA8PCAyOSkgLSAxKTsKICAg
ICAgICAgfQogCiAgICAgICAgIEludFNpemUgbV9zaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVy
LmNwcAppbmRleCBjYWYzNWM5N2YxN2VkZDM0YmM5ZGY4OWFiMDllODcwMGFlZTZjN2RmLi5hMmYw
NGIxMDE4NzA5NWU2NjIxNDFkNWZlNmE0MWQ5MjVhYTdkYzA1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VE
ZWNvZGVyLmNwcApAQCAtNzIsNyArNzIsNiBAQCBJbWFnZUZyYW1lKiBCTVBJbWFnZURlY29kZXI6
OmZyYW1lQnVmZmVyQXRJbmRleChzaXplX3QgaW5kZXgpCiAKICAgICBpZiAobV9mcmFtZUJ1ZmZl
ckNhY2hlLmlzRW1wdHkoKSkgewogICAgICAgICBtX2ZyYW1lQnVmZmVyQ2FjaGUucmVzaXplKDEp
OwotICAgICAgICBtX2ZyYW1lQnVmZmVyQ2FjaGUuZmlyc3QoKS5zZXRQcmVtdWx0aXBseUFscGhh
KG1fcHJlbXVsdGlwbHlBbHBoYSk7CiAgICAgfQogCiAgICAgSW1hZ2VGcmFtZSogYnVmZmVyID0g
Jm1fZnJhbWVCdWZmZXJDYWNoZS5maXJzdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVhZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5jcHAKaW5k
ZXggNWMwMDU1MzRlY2Q5MjEzNGExM2IzMjk1ODkyNzc5MGYwN2FkMGY4MS4uNGQwYzA2NDBmMDUz
MDNhNGNiOWE3Y2E0ZWZjMmJjM2QzMTNlNWVlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVhZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VSZWFkZXIuY3Bw
CkBAIC03OCw3ICs3OCw3IEBAIGJvb2wgQk1QSW1hZ2VSZWFkZXI6OmRlY29kZUJNUChib29sIG9u
bHlTaXplKQogICAgIC8vIEluaXRpYWxpemUgdGhlIGZyYW1lYnVmZmVyIGlmIG5lZWRlZC4KICAg
ICBBU1NFUlQobV9idWZmZXIpOyAgLy8gUGFyZW50IHNob3VsZCBzZXQgdGhpcyBiZWZvcmUgYXNr
aW5nIHVzIHRvIGRlY29kZSEKICAgICBpZiAobV9idWZmZXItPnN0YXR1cygpID09IEltYWdlRnJh
bWU6OkZyYW1lRW1wdHkpIHsKLSAgICAgICAgaWYgKCFtX2J1ZmZlci0+c2V0U2l6ZShtX3BhcmVu
dC0+c2l6ZSgpLndpZHRoKCksIG1fcGFyZW50LT5zaXplKCkuaGVpZ2h0KCkpKQorICAgICAgICBp
ZiAoIW1fYnVmZmVyLT5zZXRTaXplKG1fcGFyZW50LT5zaXplKCksIG1fcHJlbXVsdGlwbHlBbHBo
YSkpCiAgICAgICAgICAgICByZXR1cm4gbV9wYXJlbnQtPnNldEZhaWxlZCgpOyAvLyBVbmFibGUg
dG8gYWxsb2NhdGUuCiAgICAgICAgIG1fYnVmZmVyLT5zZXRTdGF0dXMoSW1hZ2VGcmFtZTo6RnJh
bWVQYXJ0aWFsKTsKICAgICAgICAgLy8gc2V0U2l6ZSgpIGNhbGxzIGVyYXNlQVJHQigpLCB3aGlj
aCByZXNldHMgdGhlIGFscGhhIGZsYWcsIHNvIHdlIGZvcmNlCkBAIC04Niw5ICs4Niw2IEBAIGJv
b2wgQk1QSW1hZ2VSZWFkZXI6OmRlY29kZUJNUChib29sIG9ubHlTaXplKQogICAgICAgICAvLyB0
aGVzZSAwcyBjb3VsZCBhY3R1YWxseSBzaG93IHRocm91Z2guCiAgICAgICAgIG1fYnVmZmVyLT5z
ZXRIYXNBbHBoYShmYWxzZSk7CiAKLSAgICAgICAgLy8gRm9yIEJNUHMsIHRoZSBmcmFtZSBhbHdh
eXMgZmlsbHMgdGhlIGVudGlyZSBpbWFnZS4KLSAgICAgICAgbV9idWZmZXItPnNldE9yaWdpbmFs
RnJhbWVSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgbV9wYXJlbnQtPnNpemUoKSkpOwotCiAgICAg
ICAgIGlmICghbV9pc1RvcERvd24pCiAgICAgICAgICAgICBtX2Nvb3JkLnNldFkobV9wYXJlbnQt
PnNpemUoKS5oZWlnaHQoKSAtIDEpOwogICAgIH0KQEAgLTE3MSw3ICsxNjgsNyBAQCBib29sIEJN
UEltYWdlUmVhZGVyOjpwcm9jZXNzSW5mb0hlYWRlcigpCiAgICAgICAgIHJldHVybiBtX3BhcmVu
dC0+c2V0RmFpbGVkKCk7CiAKICAgICAvLyBTZXQgb3VyIHNpemUuCi0gICAgaWYgKCFtX3BhcmVu
dC0+c2V0U2l6ZShtX2luZm9IZWFkZXIuYmlXaWR0aCwgbV9pbmZvSGVhZGVyLmJpSGVpZ2h0KSkK
KyAgICBpZiAoIW1fcGFyZW50LT5zZXRTaXplKEludFNpemUobV9pbmZvSGVhZGVyLmJpV2lkdGgs
IG1faW5mb0hlYWRlci5iaUhlaWdodCksIG1fcHJlbXVsdGlwbHlBbHBoYSkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIC8vIEZvciBwYWxldHRlZCBpbWFnZXMsIGJpdG1hcHMgY2FuIHNl
dCBiaUNsclVzZWQgdG8gMCB0byBtZWFuICJhbGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0JpdG1hcFBpeGVsc0NhaXJvLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0JpdG1hcFBpeGVsc0Nh
aXJvLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi41YWFmOGEwYTM2YjE4Y2JmNzI3N2QyYzJlMjZlYjQxNzEyNTYw
MGQ1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvY2Fpcm8vQml0bWFwUGl4ZWxzQ2Fpcm8uY3BwCkBAIC0wLDAgKzEsNDAgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJCaXRtYXBQaXhlbHMuaCIKKworI2luY2x1ZGUgPGNhaXJvLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworTmF0aXZlSW1hZ2VQdHIgQml0bWFwUGl4ZWxzOjppbWFn
ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGFkb3B0UmVmKGNhaXJvX2ltYWdlX3N1cmZhY2VfY3Jl
YXRlX2Zvcl9kYXRhKAorICAgICAgICByZWludGVycHJldF9jYXN0PHVuc2lnbmVkIGNoYXIqPihj
b25zdF9jYXN0PFJHQkEzMio+KG1fcGl4ZWxzKSksCisgICAgICAgIENBSVJPX0ZPUk1BVF9BUkdC
MzIsIHNpemUoKS53aWR0aCgpLCBzaXplKCkuaGVpZ2h0KCksIHNpemUoKS53aWR0aCgpICogc2l6
ZW9mKFJHQkEzMikpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvY2Fpcm8vSW1hZ2VEZWNvZGVy
Q2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvY2Fpcm8v
SW1hZ2VEZWNvZGVyQ2Fpcm8uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YjQx
Mjk1Zjg1NzM1OGZiYmYzNWMxYjA1MjVlOGQ2Y2MzNTIwZjU4Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2NhaXJvL0ltYWdlRGVjb2RlckNhaXJvLmNwcAorKysgL2Rldi9udWxsCkBAIC0x
LDQwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICov
Ci0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJJbWFnZURlY29kZXIuaCIKLQotI2lu
Y2x1ZGUgPGNhaXJvLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotTmF0aXZlSW1hZ2VQdHIg
SW1hZ2VGcmFtZTo6YXNOZXdOYXRpdmVJbWFnZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGFkb3B0
UmVmKGNhaXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRlX2Zvcl9kYXRhKAotICAgICAgICByZWludGVy
cHJldF9jYXN0PHVuc2lnbmVkIGNoYXIqPihjb25zdF9jYXN0PFBpeGVsRGF0YSo+KG1fYnl0ZXMp
KSwKLSAgICAgICAgQ0FJUk9fRk9STUFUX0FSR0IzMiwgd2lkdGgoKSwgaGVpZ2h0KCksIHdpZHRo
KCkgKiBzaXplb2YoUGl4ZWxEYXRhKSkpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lG
SW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2dpZi9HSUZJbWFnZURlY29kZXIuY3BwCmluZGV4IDlmOTkyYTdiZTFkNjY3MjI2NzVjMmU4NTRh
ZDE4OTFlNjBmODU3N2MuLjAxNmNkMWM0MmFlYzViZjQ2MmRkN2Q5NTBmYWNhMjQ0MjQzNzNkMWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9H
SUZJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwCkBAIC02MCwxMiArNjAsMTIgQEAgYm9vbCBH
SUZJbWFnZURlY29kZXI6OmlzU2l6ZUF2YWlsYWJsZSgpCiAgICAgcmV0dXJuIEltYWdlRGVjb2Rl
cjo6aXNTaXplQXZhaWxhYmxlKCk7CiB9CiAKLWJvb2wgR0lGSW1hZ2VEZWNvZGVyOjpzZXRTaXpl
KHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQpCitib29sIEdJRkltYWdlRGVjb2Rlcjo6
c2V0U2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQogewotICAgIGlmIChJbWFnZURlY29kZXI6Omlz
U2l6ZUF2YWlsYWJsZSgpICYmIHNpemUoKSA9PSBJbnRTaXplKHdpZHRoLCBoZWlnaHQpKQorICAg
IGlmIChJbWFnZURlY29kZXI6OmlzU2l6ZUF2YWlsYWJsZSgpICYmIHRoaXMtPnNpemUoKSA9PSBz
aXplKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmICghSW1hZ2VEZWNvZGVyOjpzZXRT
aXplKHdpZHRoLCBoZWlnaHQpKQorICAgIGlmICghSW1hZ2VEZWNvZGVyOjpzZXRTaXplKHNpemUp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBwcmVwYXJlU2NhbGVEYXRhSWZOZWNlc3Nh
cnkoKTsKQEAgLTIxMywxMCArMjEzLDEwIEBAIGJvb2wgR0lGSW1hZ2VEZWNvZGVyOjpoYXZlRGVj
b2RlZFJvdyh1bnNpZ25lZCBmcmFtZUluZGV4LCBjb25zdCBWZWN0b3I8dW5zaWduZWQKIAogICAg
IC8vIEluaXRpYWxpemUgdGhlIGZyYW1lIGlmIG5lY2Vzc2FyeS4KICAgICBJbWFnZUZyYW1lJiBi
dWZmZXIgPSBtX2ZyYW1lQnVmZmVyQ2FjaGVbZnJhbWVJbmRleF07Ci0gICAgaWYgKCgoYnVmZmVy
LnN0YXR1cygpID09IEltYWdlRnJhbWU6OkZyYW1lRW1wdHkpICYmICFpbml0RnJhbWVCdWZmZXIo
ZnJhbWVJbmRleCkpIHx8ICFidWZmZXIuaGFzUGl4ZWxEYXRhKCkpCisgICAgaWYgKCgoYnVmZmVy
LnN0YXR1cygpID09IEltYWdlRnJhbWU6OkZyYW1lRW1wdHkpICYmICFpbml0RnJhbWVCdWZmZXIo
ZnJhbWVJbmRleCkpIHx8ICFidWZmZXIuaGFzUGl4ZWxzKCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIEltYWdlRnJhbWU6OlBpeGVsRGF0YSogY3VycmVudEFkZHJlc3MgPSBidWZmZXIu
Z2V0QWRkcih4QmVnaW4sIHlCZWdpbik7CisgICAgUkdCQTMyKiBjdXJyZW50QWRkcmVzcyA9IGJ1
ZmZlci5nZXRBZGRyKHhCZWdpbiwgeUJlZ2luKTsKICAgICAvLyBXcml0ZSBvbmUgcm93J3Mgd29y
dGggb2YgZGF0YSBpbnRvIHRoZSBmcmFtZS4gIAogICAgIGZvciAoaW50IHggPSB4QmVnaW47IHgg
PCB4RW5kOyArK3gpIHsKICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciBzb3VyY2VWYWx1ZSA9
IHJvd0J1ZmZlclsobV9zY2FsZWQgPyBtX3NjYWxlZENvbHVtbnNbeF0gOiB4KSAtIGZyYW1lQ29u
dGV4dC0+eE9mZnNldF07CkBAIC0yNjAsNyArMjYwLDcgQEAgYm9vbCBHSUZJbWFnZURlY29kZXI6
OmZyYW1lQ29tcGxldGUodW5zaWduZWQgZnJhbWVJbmRleCwgdW5zaWduZWQgZnJhbWVEdXJhdGlv
biwKICAgICBpZiAoIW1fY3VycmVudEJ1ZmZlclNhd0FscGhhKSB7CiAgICAgICAgIC8vIFRoZSB3
aG9sZSBmcmFtZSB3YXMgbm9uLXRyYW5zcGFyZW50LCBzbyBpdCdzIHBvc3NpYmxlIHRoYXQgdGhl
IGVudGlyZQogICAgICAgICAvLyByZXN1bHRpbmcgYnVmZmVyIHdhcyBub24tdHJhbnNwYXJlbnQs
IGFuZCB3ZSBjYW4gc2V0SGFzQWxwaGEoZmFsc2UpLgotICAgICAgICBpZiAoYnVmZmVyLm9yaWdp
bmFsRnJhbWVSZWN0KCkuY29udGFpbnMoSW50UmVjdChJbnRQb2ludCgpLCBzY2FsZWRTaXplKCkp
KSkKKyAgICAgICAgaWYgKGJ1ZmZlci5waXhlbHMoKS0+cmVjdCgpLmNvbnRhaW5zKEludFJlY3Qo
SW50UG9pbnQoKSwgc2NhbGVkU2l6ZSgpKSkpCiAgICAgICAgICAgICBidWZmZXIuc2V0SGFzQWxw
aGEoZmFsc2UpOwogICAgICAgICBlbHNlIGlmIChmcmFtZUluZGV4KSB7CiAgICAgICAgICAgICAv
LyBUcmlja3kgY2FzZS4gIFRoaXMgZnJhbWUgZG9lcyBub3QgaGF2ZSBhbHBoYSBvbmx5IGlmIGV2
ZXJ5d2hlcmUKQEAgLTI4Myw3ICsyODMsNyBAQCBib29sIEdJRkltYWdlRGVjb2Rlcjo6ZnJhbWVD
b21wbGV0ZSh1bnNpZ25lZCBmcmFtZUluZGV4LCB1bnNpZ25lZCBmcmFtZUR1cmF0aW9uLAogICAg
ICAgICAgICAgLy8gVGhlIG9ubHkgcmVtYWluaW5nIGNhc2UgaXMgYSBEaXNwb3NlT3ZlcndyaXRl
Qmdjb2xvciBmcmFtZS4gIElmCiAgICAgICAgICAgICAvLyBpdCBoYWQgbm8gYWxwaGEsIGFuZCBp
dHMgcmVjdCBpcyBjb250YWluZWQgaW4gdGhlIGN1cnJlbnQgZnJhbWUncwogICAgICAgICAgICAg
Ly8gcmVjdCwgd2Uga25vdyB0aGUgY3VycmVudCBmcmFtZSBoYXMgbm8gYWxwaGEuCi0gICAgICAg
ICAgICBpZiAoKHByZXZCdWZmZXItPmRpc3Bvc2FsTWV0aG9kKCkgPT0gSW1hZ2VGcmFtZTo6RGlz
cG9zZU92ZXJ3cml0ZUJnY29sb3IpICYmICFwcmV2QnVmZmVyLT5oYXNBbHBoYSgpICYmIGJ1ZmZl
ci5vcmlnaW5hbEZyYW1lUmVjdCgpLmNvbnRhaW5zKHByZXZCdWZmZXItPm9yaWdpbmFsRnJhbWVS
ZWN0KCkpKQorICAgICAgICAgICAgaWYgKChwcmV2QnVmZmVyLT5kaXNwb3NhbE1ldGhvZCgpID09
IEltYWdlRnJhbWU6OkRpc3Bvc2VPdmVyd3JpdGVCZ2NvbG9yKSAmJiAhcHJldkJ1ZmZlci0+aGFz
QWxwaGEoKSAmJiBidWZmZXIucGl4ZWxzKCktPnJlY3QoKS5jb250YWlucyhwcmV2QnVmZmVyLT5w
aXhlbHMoKS0+cmVjdCgpKSkKICAgICAgICAgICAgICAgICBidWZmZXIuc2V0SGFzQWxwaGEoZmFs
c2UpOwogICAgICAgICB9CiAgICAgfQpAQCAtMzIzLDggKzMyMyw2IEBAIHZvaWQgR0lGSW1hZ2VE
ZWNvZGVyOjpkZWNvZGUodW5zaWduZWQgaGFsdEF0RnJhbWUsIEdJRlF1ZXJ5IHF1ZXJ5KQogCiAg
ICAgY29uc3Qgc2l6ZV90IG9sZFNpemUgPSBtX2ZyYW1lQnVmZmVyQ2FjaGUuc2l6ZSgpOwogICAg
IG1fZnJhbWVCdWZmZXJDYWNoZS5yZXNpemUobV9yZWFkZXItPmltYWdlc0NvdW50KCkpOwotICAg
IGZvciAoc2l6ZV90IGkgPSBvbGRTaXplOyBpIDwgbV9yZWFkZXItPmltYWdlc0NvdW50KCk7ICsr
aSkKLSAgICAgICAgbV9mcmFtZUJ1ZmZlckNhY2hlW2ldLnNldFByZW11bHRpcGx5QWxwaGEobV9w
cmVtdWx0aXBseUFscGhhKTsKIAogICAgIGlmIChxdWVyeSA9PSBHSUZGcmFtZUNvdW50UXVlcnkp
CiAgICAgICAgIHJldHVybjsKQEAgLTM1MywxNSArMzUxLDEwIEBAIGJvb2wgR0lGSW1hZ2VEZWNv
ZGVyOjppbml0RnJhbWVCdWZmZXIodW5zaWduZWQgZnJhbWVJbmRleCkKICAgICAgICAgZnJhbWVS
ZWN0LnNldEhlaWdodChzaXplKCkuaGVpZ2h0KCkgLSBmcmFtZUNvbnRleHQtPnlPZmZzZXQpOwog
CiAgICAgSW1hZ2VGcmFtZSogY29uc3QgYnVmZmVyID0gJm1fZnJhbWVCdWZmZXJDYWNoZVtmcmFt
ZUluZGV4XTsKLSAgICBpbnQgbGVmdCA9IHVwcGVyQm91bmRTY2FsZWRYKGZyYW1lUmVjdC54KCkp
OwotICAgIGludCByaWdodCA9IGxvd2VyQm91bmRTY2FsZWRYKGZyYW1lUmVjdC5tYXhYKCksIGxl
ZnQpOwotICAgIGludCB0b3AgPSB1cHBlckJvdW5kU2NhbGVkWShmcmFtZVJlY3QueSgpKTsKLSAg
ICBpbnQgYm90dG9tID0gbG93ZXJCb3VuZFNjYWxlZFkoZnJhbWVSZWN0Lm1heFkoKSwgdG9wKTsK
LSAgICBidWZmZXItPnNldE9yaWdpbmFsRnJhbWVSZWN0KEludFJlY3QobGVmdCwgdG9wLCByaWdo
dCAtIGxlZnQsIGJvdHRvbSAtIHRvcCkpOwogCiAgICAgaWYgKCFmcmFtZUluZGV4KSB7CiAgICAg
ICAgIC8vIFRoaXMgaXMgdGhlIGZpcnN0IGZyYW1lLCBzbyB3ZSdyZSBub3QgcmVseWluZyBvbiBh
bnkgcHJldmlvdXMgZGF0YS4KLSAgICAgICAgaWYgKCFidWZmZXItPnNldFNpemUoc2NhbGVkU2l6
ZSgpLndpZHRoKCksIHNjYWxlZFNpemUoKS5oZWlnaHQoKSkpCisgICAgICAgIGlmICghYnVmZmVy
LT5zZXRTaXplKHNjYWxlZFNpemUoKSwgbV9wcmVtdWx0aXBseUFscGhhKSkKICAgICAgICAgICAg
IHJldHVybiBzZXRGYWlsZWQoKTsKICAgICB9IGVsc2UgewogICAgICAgICAvLyBUaGUgc3RhcnRp
bmcgc3RhdGUgZm9yIHRoaXMgZnJhbWUgZGVwZW5kcyBvbiB0aGUgcHJldmlvdXMgZnJhbWUncwpA
QCAtMzg3LDEyICszODAsMTIgQEAgYm9vbCBHSUZJbWFnZURlY29kZXI6OmluaXRGcmFtZUJ1ZmZl
cih1bnNpZ25lZCBmcmFtZUluZGV4KQogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgLy8g
V2Ugd2FudCB0byBjbGVhciB0aGUgcHJldmlvdXMgZnJhbWUgdG8gdHJhbnNwYXJlbnQsIHdpdGhv
dXQKICAgICAgICAgICAgIC8vIGFmZmVjdGluZyBwaXhlbHMgaW4gdGhlIGltYWdlIG91dHNpZGUg
b2YgdGhlIGZyYW1lLgotICAgICAgICAgICAgY29uc3QgSW50UmVjdCYgcHJldlJlY3QgPSBwcmV2
QnVmZmVyLT5vcmlnaW5hbEZyYW1lUmVjdCgpOworICAgICAgICAgICAgY29uc3QgSW50UmVjdCYg
cHJldlJlY3QgPSBwcmV2QnVmZmVyLT5waXhlbHMoKS0+cmVjdCgpOwogICAgICAgICAgICAgY29u
c3QgSW50U2l6ZSYgYnVmZmVyU2l6ZSA9IHNjYWxlZFNpemUoKTsKICAgICAgICAgICAgIGlmICgh
ZnJhbWVJbmRleCB8fCBwcmV2UmVjdC5jb250YWlucyhJbnRSZWN0KEludFBvaW50KCksIHNjYWxl
ZFNpemUoKSkpKSB7CiAgICAgICAgICAgICAgICAgLy8gQ2xlYXJpbmcgdGhlIGZpcnN0IGZyYW1l
LCBvciBhIGZyYW1lIHRoZSBzaXplIG9mIHRoZSB3aG9sZQogICAgICAgICAgICAgICAgIC8vIGlt
YWdlLCByZXN1bHRzIGluIGEgY29tcGxldGVseSBlbXB0eSBpbWFnZS4KLSAgICAgICAgICAgICAg
ICBpZiAoIWJ1ZmZlci0+c2V0U2l6ZShidWZmZXJTaXplLndpZHRoKCksIGJ1ZmZlclNpemUuaGVp
Z2h0KCkpKQorICAgICAgICAgICAgICAgIGlmICghYnVmZmVyLT5zZXRTaXplKGJ1ZmZlclNpemUs
IG1fcHJlbXVsdGlwbHlBbHBoYSkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZXRGYWls
ZWQoKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgLy8gQ29weSB0aGUg
d2hvbGUgcHJldmlvdXMgYnVmZmVyLCB0aGVuIGNsZWFyIGp1c3QgaXRzIGZyYW1lLgpAQCAtNDAy
LDYgKzM5NSwxMiBAQCBib29sIEdJRkltYWdlRGVjb2Rlcjo6aW5pdEZyYW1lQnVmZmVyKHVuc2ln
bmVkIGZyYW1lSW5kZXgpCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CisgICAgCisg
ICAgaW50IGxlZnQgPSB1cHBlckJvdW5kU2NhbGVkWChmcmFtZVJlY3QueCgpKTsKKyAgICBpbnQg
cmlnaHQgPSBsb3dlckJvdW5kU2NhbGVkWChmcmFtZVJlY3QubWF4WCgpLCBsZWZ0KTsKKyAgICBp
bnQgdG9wID0gdXBwZXJCb3VuZFNjYWxlZFkoZnJhbWVSZWN0LnkoKSk7CisgICAgaW50IGJvdHRv
bSA9IGxvd2VyQm91bmRTY2FsZWRZKGZyYW1lUmVjdC5tYXhZKCksIHRvcCk7CisgICAgYnVmZmVy
LT5waXhlbHMoKS0+c2V0UmVjdChJbnRSZWN0KGxlZnQsIHRvcCwgcmlnaHQgLSBsZWZ0LCBib3R0
b20gLSB0b3ApKTsKIAogICAgIC8vIFVwZGF0ZSBvdXIgc3RhdHVzIHRvIGJlIHBhcnRpYWxseSBj
b21wbGV0ZS4KICAgICBidWZmZXItPnNldFN0YXR1cyhJbWFnZUZyYW1lOjpGcmFtZVBhcnRpYWwp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lm
L0dJRkltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5oCmluZGV4IDk1ZWM2ZDBhN2I2OTY2NTJjNzA5YjdiNjJk
NDFhYTRmM2FiOGYxZTAuLjdiOGQ4N2NmZDcyMWIzMDkwNzBjNDk5ODhmMzQ1YzkwMzU0ZGE1YTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9H
SUZJbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICBTdHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiAiZ2lmIjsgfQogICAgICAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiBk
YXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkgb3ZlcnJpZGU7CiAgICAgICAgIGJvb2wgaXNTaXpl
QXZhaWxhYmxlKCkgb3ZlcnJpZGU7Ci0gICAgICAgIGJvb2wgc2V0U2l6ZSh1bnNpZ25lZCB3aWR0
aCwgdW5zaWduZWQgaGVpZ2h0KSBvdmVycmlkZTsKKyAgICAgICAgYm9vbCBzZXRTaXplKGNvbnN0
IEludFNpemUmKSBvdmVycmlkZTsKICAgICAgICAgc2l6ZV90IGZyYW1lQ291bnQoKSBvdmVycmlk
ZTsKICAgICAgICAgaW50IHJlcGV0aXRpb25Db3VudCgpIGNvbnN0IG92ZXJyaWRlOwogICAgICAg
ICBJbWFnZUZyYW1lKiBmcmFtZUJ1ZmZlckF0SW5kZXgoc2l6ZV90IGluZGV4KSBvdmVycmlkZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9H
SUZJbWFnZVJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9naWYvR0lGSW1hZ2VSZWFkZXIuY3BwCmluZGV4IDAwZDI1MmNlZmIwNWFhNTFmODRkOGRmOTkw
MjI5MGVmZDcxMDQyMmYuLmEzYTU0MTU1OTAyYTMxNjQxZDkwNzQ2YWFiMTg3YjYzOTFkNDI2N2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9H
SUZJbWFnZVJlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmNwcApAQCAtNDQ3LDcgKzQ0Nyw3IEBAIGJvb2wgR0lG
SW1hZ2VSZWFkZXI6OnBhcnNlKHNpemVfdCBkYXRhUG9zaXRpb24sIHNpemVfdCBsZW4sIGJvb2wg
cGFyc2VTaXplT25seSkKIAogICAgICAgICAgICAgLy8gQ0FMTEJBQ0s6IEluZm9ybSB0aGUgZGVj
b2RlcnBsdWdpbiBvZiBvdXIgc2l6ZS4KICAgICAgICAgICAgIC8vIE5vdGU6IEEgc3Vic2VxdWVu
dCBmcmFtZSBtaWdodCBoYXZlIGRpbWVuc2lvbnMgbGFyZ2VyIHRoYW4gdGhlICJzY3JlZW4iIGRp
bWVuc2lvbnMuCi0gICAgICAgICAgICBpZiAobV9jbGllbnQgJiYgIW1fY2xpZW50LT5zZXRTaXpl
KG1fc2NyZWVuV2lkdGgsIG1fc2NyZWVuSGVpZ2h0KSkKKyAgICAgICAgICAgIGlmIChtX2NsaWVu
dCAmJiAhbV9jbGllbnQtPnNldFNpemUoSW50U2l6ZShtX3NjcmVlbldpZHRoLCBtX3NjcmVlbkhl
aWdodCkpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICAgICAgbV9z
Y3JlZW5CZ2NvbG9yID0gY3VycmVudENvbXBvbmVudFs1XTsKQEAgLTY2NCw3ICs2NjQsNyBAQCBi
b29sIEdJRkltYWdlUmVhZGVyOjpwYXJzZShzaXplX3QgZGF0YVBvc2l0aW9uLCBzaXplX3QgbGVu
LCBib29sIHBhcnNlU2l6ZU9ubHkpCiAgICAgICAgICAgICAgICAgeU9mZnNldCA9IDA7CiAKICAg
ICAgICAgICAgICAgICAvLyBDQUxMQkFDSzogSW5mb3JtIHRoZSBkZWNvZGVycGx1Z2luIG9mIG91
ciBzaXplLgotICAgICAgICAgICAgICAgIGlmIChtX2NsaWVudCAmJiAhbV9jbGllbnQtPnNldFNp
emUobV9zY3JlZW5XaWR0aCwgbV9zY3JlZW5IZWlnaHQpKQorICAgICAgICAgICAgICAgIGlmICht
X2NsaWVudCAmJiAhbV9jbGllbnQtPnNldFNpemUoSW50U2l6ZShtX3NjcmVlbldpZHRoLCBtX3Nj
cmVlbkhlaWdodCkpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggYTU5MjAxYjU2ZTViMjJl
MmE4NTFjMGM5OTJlYTRiMWY4OGNjM2I0Zi4uNjZjZjE5MTk0MzhiYzAzYzEzOTFiZWVhMTY0MDc1
NDFjMWFmODZlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAKQEAgLTg4LDIxICs4OCwy
MCBAQCBJbnRTaXplIElDT0ltYWdlRGVjb2Rlcjo6ZnJhbWVTaXplQXRJbmRleChzaXplX3QgaW5k
ZXgsIFN1YnNhbXBsaW5nTGV2ZWwpCiAgICAgcmV0dXJuIChpbmRleCAmJiAoaW5kZXggPCBtX2Rp
ckVudHJpZXMuc2l6ZSgpKSkgPyBtX2RpckVudHJpZXNbaW5kZXhdLm1fc2l6ZSA6IHNpemUoKTsK
IH0KIAotYm9vbCBJQ09JbWFnZURlY29kZXI6OnNldFNpemUodW5zaWduZWQgd2lkdGgsIHVuc2ln
bmVkIGhlaWdodCkKK2Jvb2wgSUNPSW1hZ2VEZWNvZGVyOjpzZXRTaXplKGNvbnN0IEludFNpemUm
IHNpemUpCiB7CiAgICAgLy8gVGhlIHNpemUgY2FsY3VsYXRlZCBpbnNpZGUgdGhlIEJNUEltYWdl
UmVhZGVyIGhhZCBiZXR0ZXIgbWF0Y2ggdGhlIG9uZSBpbgogICAgIC8vIHRoZSBpY29uIGRpcmVj
dG9yeS4KLSAgICByZXR1cm4gbV9mcmFtZVNpemUuaXNFbXB0eSgpID8gSW1hZ2VEZWNvZGVyOjpz
ZXRTaXplKHdpZHRoLCBoZWlnaHQpIDogKChJbnRTaXplKHdpZHRoLCBoZWlnaHQpID09IG1fZnJh
bWVTaXplKSB8fCBzZXRGYWlsZWQoKSk7CisgICAgcmV0dXJuIG1fZnJhbWVTaXplLmlzRW1wdHko
KSA/IEltYWdlRGVjb2Rlcjo6c2V0U2l6ZShzaXplKSA6ICgoc2l6ZSA9PSBtX2ZyYW1lU2l6ZSkg
fHwgc2V0RmFpbGVkKCkpOwogfQogCiBzaXplX3QgSUNPSW1hZ2VEZWNvZGVyOjpmcmFtZUNvdW50
KCkKIHsKICAgICBkZWNvZGUoMCwgdHJ1ZSk7Ci0gICAgaWYgKG1fZnJhbWVCdWZmZXJDYWNoZS5p
c0VtcHR5KCkpIHsKKworICAgIGlmIChtX2ZyYW1lQnVmZmVyQ2FjaGUuaXNFbXB0eSgpKQogICAg
ICAgICBtX2ZyYW1lQnVmZmVyQ2FjaGUucmVzaXplKG1fZGlyRW50cmllcy5zaXplKCkpOwotICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZGlyRW50cmllcy5zaXplKCk7ICsraSkKLSAg
ICAgICAgICAgIG1fZnJhbWVCdWZmZXJDYWNoZVtpXS5zZXRQcmVtdWx0aXBseUFscGhhKG1fcHJl
bXVsdGlwbHlBbHBoYSk7Ci0gICAgfQorCiAgICAgLy8gQ0FVVElPTjogV2UgbXVzdCBub3QgcmVz
aXplIG1fZnJhbWVCdWZmZXJDYWNoZSBhZ2FpbiBhZnRlciB0aGlzLCBhcwogICAgIC8vIGRlY29k
ZUF0SW5kZXgoKSBtYXkgZ2l2ZSBhIEJNUEltYWdlUmVhZGVyIGEgcG9pbnRlciB0byBvbmUgb2Yg
dGhlCiAgICAgLy8gZW50cmllcy4KQEAgLTI3OSw3ICsyNzgsNyBAQCBib29sIElDT0ltYWdlRGVj
b2Rlcjo6cHJvY2Vzc0RpcmVjdG9yeUVudHJpZXMoKQogICAgIGNvbnN0IEljb25EaXJlY3RvcnlF
bnRyeSYgZGlyRW50cnkgPSBtX2RpckVudHJpZXMuZmlyc3QoKTsKICAgICAvLyBUZWNobmljYWxs
eSwgdGhpcyBuZXh0IGNhbGwgc2hvdWxkbid0IGJlIGFibGUgdG8gZmFpbCwgc2luY2UgdGhlIHdp
ZHRoCiAgICAgLy8gYW5kIGhlaWdodCBoZXJlIGFyZSBlYWNoIDw9IDI1NiwgYW5kIHxtX2ZyYW1l
U2l6ZXwgaXMgZW1wdHkuCi0gICAgcmV0dXJuIHNldFNpemUoZGlyRW50cnkubV9zaXplLndpZHRo
KCksIGRpckVudHJ5Lm1fc2l6ZS5oZWlnaHQoKSk7CisgICAgcmV0dXJuIHNldFNpemUoZGlyRW50
cnkubV9zaXplKTsKIH0KIAogSUNPSW1hZ2VEZWNvZGVyOjpJY29uRGlyZWN0b3J5RW50cnkgSUNP
SW1hZ2VEZWNvZGVyOjpyZWFkRGlyZWN0b3J5RW50cnkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5o
CmluZGV4IDU4MGM2N2E4ODNhNDBiNmU1NDIwZjY1YWUzNDQ4ODQ1NzQxOTM4ZWMuLmQzM2QwNThh
MTU5NjA3ZGY4OTM5Y2VhMWNkN2E2ZjMxNDRiNzIyZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVy
LmgKQEAgLTQ5LDcgKzQ5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIGlz
U2l6ZUF2YWlsYWJsZSgpIG92ZXJyaWRlOwogICAgICAgICBJbnRTaXplIHNpemUoKSBvdmVycmlk
ZTsKICAgICAgICAgSW50U2l6ZSBmcmFtZVNpemVBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdM
ZXZlbCkgb3ZlcnJpZGU7Ci0gICAgICAgIGJvb2wgc2V0U2l6ZSh1bnNpZ25lZCB3aWR0aCwgdW5z
aWduZWQgaGVpZ2h0KSBvdmVycmlkZTsKKyAgICAgICAgYm9vbCBzZXRTaXplKGNvbnN0IEludFNp
emUmKSBvdmVycmlkZTsKICAgICAgICAgc2l6ZV90IGZyYW1lQ291bnQoKSBvdmVycmlkZTsKICAg
ICAgICAgSW1hZ2VGcmFtZSogZnJhbWVCdWZmZXJBdEluZGV4KHNpemVfdCkgb3ZlcnJpZGU7CiAg
ICAgICAgIC8vIENBVVRJT046IHNldEZhaWxlZCgpIGRlbGV0ZXMgYWxsIHJlYWRlcnMgYW5kIGRl
Y29kZXJzLiAgQmUgY2FyZWZ1bCB0bwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKaW5k
ZXggZWU2NmFjMTRkNGJlMDdjYTlhZmZiMmEzYWZmODllYmZhNjJmYjEyZS4uN2UzZGQ4OGY1ZjJi
NDFmMzNjYjcwNDcyZDhhYTZhM2M5NmMwMDQ0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29k
ZXIuY3BwCkBAIC0xOTYsMzYgKzE5Niw2IEBAIHN0YXRpYyBJbWFnZU9yaWVudGF0aW9uIHJlYWRJ
bWFnZU9yaWVudGF0aW9uKGpwZWdfZGVjb21wcmVzc19zdHJ1Y3QqIGluZm8pCiAgICAgcmV0dXJu
IEltYWdlT3JpZW50YXRpb24oKTsKIH0KIAotc3RhdGljIENvbG9yUHJvZmlsZSByZWFkQ29sb3JQ
cm9maWxlKGpwZWdfZGVjb21wcmVzc19zdHJ1Y3QqIGluZm8pCi17Ci0jaWYgVVNFKElDQ0pQRUcp
Ci0gICAgSk9DVEVUKiBwcm9maWxlOwotICAgIHVuc2lnbmVkIGludCBwcm9maWxlTGVuZ3RoOwot
Ci0gICAgaWYgKCFyZWFkX2ljY19wcm9maWxlKGluZm8sICZwcm9maWxlLCAmcHJvZmlsZUxlbmd0
aCkpCi0gICAgICAgIHJldHVybiBDb2xvclByb2ZpbGUoKTsKLQotICAgIC8vIE9ubHkgYWNjZXB0
IFJHQiBjb2xvciBwcm9maWxlcyBmcm9tIGlucHV0IGNsYXNzIGRldmljZXMuCi0gICAgYm9vbCBp
Z25vcmVQcm9maWxlID0gZmFsc2U7Ci0gICAgY2hhciogcHJvZmlsZURhdGEgPSByZWludGVycHJl
dF9jYXN0PGNoYXIqPihwcm9maWxlKTsKLSAgICBpZiAocHJvZmlsZUxlbmd0aCA8IEltYWdlRGVj
b2Rlcjo6aWNjQ29sb3JQcm9maWxlSGVhZGVyTGVuZ3RoKQotICAgICAgICBpZ25vcmVQcm9maWxl
ID0gdHJ1ZTsKLSAgICBlbHNlIGlmICghSW1hZ2VEZWNvZGVyOjpyZ2JDb2xvclByb2ZpbGUocHJv
ZmlsZURhdGEsIHByb2ZpbGVMZW5ndGgpKQotICAgICAgICBpZ25vcmVQcm9maWxlID0gdHJ1ZTsK
LSAgICBlbHNlIGlmICghSW1hZ2VEZWNvZGVyOjppbnB1dERldmljZUNvbG9yUHJvZmlsZShwcm9m
aWxlRGF0YSwgcHJvZmlsZUxlbmd0aCkpCi0gICAgICAgIGlnbm9yZVByb2ZpbGUgPSB0cnVlOwot
Ci0gICAgQ29sb3JQcm9maWxlIGNvbG9yUHJvZmlsZTsKLSAgICBpZiAoIWlnbm9yZVByb2ZpbGUp
Ci0gICAgICAgIGNvbG9yUHJvZmlsZS5hcHBlbmQocHJvZmlsZURhdGEsIHByb2ZpbGVMZW5ndGgp
OwotICAgIGZyZWUocHJvZmlsZSk7Ci0gICAgcmV0dXJuIGNvbG9yUHJvZmlsZTsKLSNlbHNlCi0g
ICAgVU5VU0VEX1BBUkFNKGluZm8pOwotICAgIHJldHVybiBDb2xvclByb2ZpbGUoKTsKLSNlbmRp
ZgotfQotCiBjbGFzcyBKUEVHSW1hZ2VSZWFkZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgpAQCAtMzUyLDcgKzMyMiw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1f
c3RhdGUgPSBKUEVHX1NUQVJUX0RFQ09NUFJFU1M7CiAKICAgICAgICAgICAgIC8vIFdlIGNhbiBm
aWxsIGluIHRoZSBzaXplIG5vdyB0aGF0IHRoZSBoZWFkZXIgaXMgYXZhaWxhYmxlLgotICAgICAg
ICAgICAgaWYgKCFtX2RlY29kZXItPnNldFNpemUobV9pbmZvLmltYWdlX3dpZHRoLCBtX2luZm8u
aW1hZ2VfaGVpZ2h0KSkKKyAgICAgICAgICAgIGlmICghbV9kZWNvZGVyLT5zZXRTaXplKEludFNp
emUobV9pbmZvLmltYWdlX3dpZHRoLCBtX2luZm8uaW1hZ2VfaGVpZ2h0KSkpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgICAgICBtX2RlY29kZXItPnNldE9yaWVudGF0
aW9uKHJlYWRJbWFnZU9yaWVudGF0aW9uKGluZm8oKSkpOwpAQCAtMzYzLDEzICszMzMsNiBAQCBw
dWJsaWM6CiAgICAgICAgICAgICBpZiAobV9kZWNvZGVyLT53aWxsRG93blNhbXBsZSgpICYmIHR1
cmJvU3dpenpsZWQobV9pbmZvLm91dF9jb2xvcl9zcGFjZSkpCiAgICAgICAgICAgICAgICAgbV9p
bmZvLm91dF9jb2xvcl9zcGFjZSA9IEpDU19SR0I7CiAjZW5kaWYKLSAgICAgICAgICAgIC8vIEFs
bG93IGNvbG9yIG1hbmFnZW1lbnQgb2YgdGhlIGRlY29kZWQgUkdCQSBwaXhlbHMgaWYgcG9zc2li
bGUuCi0gICAgICAgICAgICBpZiAoIW1fZGVjb2Rlci0+aWdub3Jlc0dhbW1hQW5kQ29sb3JQcm9m
aWxlKCkpIHsKLSAgICAgICAgICAgICAgICBDb2xvclByb2ZpbGUgcmdiSW5wdXREZXZpY2VDb2xv
clByb2ZpbGUgPSByZWFkQ29sb3JQcm9maWxlKGluZm8oKSk7Ci0gICAgICAgICAgICAgICAgaWYg
KCFyZ2JJbnB1dERldmljZUNvbG9yUHJvZmlsZS5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAg
ICAgIG1fZGVjb2Rlci0+c2V0Q29sb3JQcm9maWxlKHJnYklucHV0RGV2aWNlQ29sb3JQcm9maWxl
KTsKLSAgICAgICAgICAgIH0KLQogICAgICAgICAgICAgLy8gRG9uJ3QgYWxsb2NhdGUgYSBnaWFu
dCBhbmQgc3VwZXJmbHVvdXMgbWVtb3J5IGJ1ZmZlciB3aGVuIHRoZQogICAgICAgICAgICAgLy8g
aW1hZ2UgaXMgYSBzZXF1ZW50aWFsIEpQRUcuCiAgICAgICAgICAgICBtX2luZm8uYnVmZmVyZWRf
aW1hZ2UgPSBqcGVnX2hhc19tdWx0aXBsZV9zY2FucygmbV9pbmZvKTsKQEAgLTU1Niw5ICs1MTks
OSBAQCBib29sIEpQRUdJbWFnZURlY29kZXI6OmlzU2l6ZUF2YWlsYWJsZSgpCiAgICAgcmV0dXJu
IEltYWdlRGVjb2Rlcjo6aXNTaXplQXZhaWxhYmxlKCk7CiB9CiAKLWJvb2wgSlBFR0ltYWdlRGVj
b2Rlcjo6c2V0U2l6ZSh1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0KQorYm9vbCBKUEVH
SW1hZ2VEZWNvZGVyOjpzZXRTaXplKGNvbnN0IEludFNpemUmIHNpemUpCiB7Ci0gICAgaWYgKCFJ
bWFnZURlY29kZXI6OnNldFNpemUod2lkdGgsIGhlaWdodCkpCisgICAgaWYgKCFJbWFnZURlY29k
ZXI6OnNldFNpemUoc2l6ZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHByZXBhcmVT
Y2FsZURhdGFJZk5lY2Vzc2FyeSgpOwpAQCAtNTcwLDEwICs1MzMsOCBAQCBJbWFnZUZyYW1lKiBK
UEVHSW1hZ2VEZWNvZGVyOjpmcmFtZUJ1ZmZlckF0SW5kZXgoc2l6ZV90IGluZGV4KQogICAgIGlm
IChpbmRleCkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBpZiAobV9mcmFtZUJ1ZmZlckNhY2hl
LmlzRW1wdHkoKSkgeworICAgIGlmIChtX2ZyYW1lQnVmZmVyQ2FjaGUuaXNFbXB0eSgpKQogICAg
ICAgICBtX2ZyYW1lQnVmZmVyQ2FjaGUucmVzaXplKDEpOwotICAgICAgICBtX2ZyYW1lQnVmZmVy
Q2FjaGVbMF0uc2V0UHJlbXVsdGlwbHlBbHBoYShtX3ByZW11bHRpcGx5QWxwaGEpOwotICAgIH0K
IAogICAgIEltYWdlRnJhbWUmIGZyYW1lID0gbV9mcmFtZUJ1ZmZlckNhY2hlWzBdOwogICAgIGlm
IChmcmFtZS5zdGF0dXMoKSAhPSBJbWFnZUZyYW1lOjpGcmFtZUNvbXBsZXRlKQpAQCAtNTg4LDcg
KzU0OSw3IEBAIGJvb2wgSlBFR0ltYWdlRGVjb2Rlcjo6c2V0RmFpbGVkKCkKIH0KIAogdGVtcGxh
dGUgPEpfQ09MT1JfU1BBQ0UgY29sb3JTcGFjZT4KLXZvaWQgc2V0UGl4ZWwoSW1hZ2VGcmFtZSYg
YnVmZmVyLCBJbWFnZUZyYW1lOjpQaXhlbERhdGEqIGN1cnJlbnRBZGRyZXNzLCBKU0FNUEFSUkFZ
IHNhbXBsZXMsIGludCBjb2x1bW4pCit2b2lkIHNldFBpeGVsKEltYWdlRnJhbWUmIGJ1ZmZlciwg
UkdCQTMyKiBjdXJyZW50QWRkcmVzcywgSlNBTVBBUlJBWSBzYW1wbGVzLCBpbnQgY29sdW1uKQog
ewogICAgIEpTQU1QTEUqIGpzYW1wbGUgPSAqc2FtcGxlcyArIGNvbHVtbiAqIChjb2xvclNwYWNl
ID09IEpDU19SR0IgPyAzIDogNCk7CiAKQEAgLTYzMSw3ICs1OTIsNyBAQCBib29sIEpQRUdJbWFn
ZURlY29kZXI6Om91dHB1dFNjYW5saW5lcyhJbWFnZUZyYW1lJiBidWZmZXIpCiAgICAgICAgIGlm
IChkZXN0WSA8IDApCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBJbWFnZUZyYW1l
OjpQaXhlbERhdGEqIGN1cnJlbnRBZGRyZXNzID0gYnVmZmVyLmdldEFkZHIoMCwgZGVzdFkpOwor
ICAgICAgICBSR0JBMzIqIGN1cnJlbnRBZGRyZXNzID0gYnVmZmVyLmdldEFkZHIoMCwgZGVzdFkp
OwogICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IHdpZHRoOyArK3gpIHsKICAgICAgICAgICAg
IHNldFBpeGVsPGNvbG9yU3BhY2U+KGJ1ZmZlciwgY3VycmVudEFkZHJlc3MsIHNhbXBsZXMsIGlz
U2NhbGVkID8gbV9zY2FsZWRDb2x1bW5zW3hdIDogeCk7CiAgICAgICAgICAgICArK2N1cnJlbnRB
ZGRyZXNzOwpAQCAtNjU0LDE2ICs2MTUsMTIgQEAgYm9vbCBKUEVHSW1hZ2VEZWNvZGVyOjpvdXRw
dXRTY2FubGluZXMoKQogICAgIC8vIEluaXRpYWxpemUgdGhlIGZyYW1lYnVmZmVyIGlmIG5lZWRl
ZC4KICAgICBJbWFnZUZyYW1lJiBidWZmZXIgPSBtX2ZyYW1lQnVmZmVyQ2FjaGVbMF07CiAgICAg
aWYgKGJ1ZmZlci5zdGF0dXMoKSA9PSBJbWFnZUZyYW1lOjpGcmFtZUVtcHR5KSB7Ci0gICAgICAg
IGlmICghYnVmZmVyLnNldFNpemUoc2NhbGVkU2l6ZSgpLndpZHRoKCksIHNjYWxlZFNpemUoKS5o
ZWlnaHQoKSkpCisgICAgICAgIGlmICghYnVmZmVyLnNldFNpemUoc2NhbGVkU2l6ZSgpLCBtX3By
ZW11bHRpcGx5QWxwaGEpKQogICAgICAgICAgICAgcmV0dXJuIHNldEZhaWxlZCgpOwogICAgICAg
ICBidWZmZXIuc2V0U3RhdHVzKEltYWdlRnJhbWU6OkZyYW1lUGFydGlhbCk7CiAgICAgICAgIC8v
IFRoZSBidWZmZXIgaXMgdHJhbnNwYXJlbnQgb3V0c2lkZSB0aGUgZGVjb2RlZCBhcmVhIHdoaWxl
IHRoZSBpbWFnZSBpcwogICAgICAgICAvLyBsb2FkaW5nLiBUaGUgY29tcGxldGVkIGltYWdlIHdp
bGwgYmUgbWFya2VkIGZ1bGx5IG9wYXF1ZSBpbiBqcGVnQ29tcGxldGUoKS4KICAgICAgICAgYnVm
ZmVyLnNldEhhc0FscGhhKHRydWUpOwotICAgICAgICBidWZmZXIuc2V0Q29sb3JQcm9maWxlKG1f
Y29sb3JQcm9maWxlKTsKLQotICAgICAgICAvLyBGb3IgSlBFR3MsIHRoZSBmcmFtZSBhbHdheXMg
ZmlsbHMgdGhlIGVudGlyZSBpbWFnZS4KLSAgICAgICAgYnVmZmVyLnNldE9yaWdpbmFsRnJhbWVS
ZWN0KEludFJlY3QoSW50UG9pbnQoKSwgc2l6ZSgpKSk7CiAgICAgfQogCiAgICAganBlZ19kZWNv
bXByZXNzX3N0cnVjdCogaW5mbyA9IG1fcmVhZGVyLT5pbmZvKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdl
RGVjb2Rlci5oCmluZGV4IDZjMWZjMDQyNzMyMjAzNzViYzZhMjVlYzE5OGY4YzhhNTEwMTQ4NmMu
LmZjMjNmYmQ5NjM3YjUzYWVlNjY1MzNiNmFhYjRmN2IyNjhkYzBlYzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBF
R0ltYWdlRGVjb2Rlci5oCkBAIC01MCw3ICs1MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgLy8gSW1hZ2VEZWNvZGVyCiAgICAgICAgIFN0cmluZyBmaWxlbmFtZUV4dGVuc2lvbigp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJqcGciOyB9CiAgICAgICAgIGJvb2wgaXNTaXplQXZh
aWxhYmxlKCkgb3ZlcnJpZGU7Ci0gICAgICAgIGJvb2wgc2V0U2l6ZSh1bnNpZ25lZCB3aWR0aCwg
dW5zaWduZWQgaGVpZ2h0KSBvdmVycmlkZTsKKyAgICAgICAgYm9vbCBzZXRTaXplKGNvbnN0IElu
dFNpemUmKSBvdmVycmlkZTsKICAgICAgICAgSW1hZ2VGcmFtZSogZnJhbWVCdWZmZXJBdEluZGV4
KHNpemVfdCBpbmRleCkgb3ZlcnJpZGU7CiAgICAgICAgIC8vIENBVVRJT046IHNldEZhaWxlZCgp
IGRlbGV0ZXMgfG1fcmVhZGVyfC4gIEJlIGNhcmVmdWwgdG8gYXZvaWQKICAgICAgICAgLy8gYWNj
ZXNzaW5nIGRlbGV0ZWQgbWVtb3J5LCBlc3BlY2lhbGx5IHdoZW4gY2FsbGluZyB0aGlzIGZyb20g
aW5zaWRlCkBAIC02Niw3ICs2Niw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9v
bCBvdXRwdXRTY2FubGluZXMoKTsKICAgICAgICAgdm9pZCBqcGVnQ29tcGxldGUoKTsKIAotICAg
ICAgICB2b2lkIHNldENvbG9yUHJvZmlsZShjb25zdCBDb2xvclByb2ZpbGUmIGNvbG9yUHJvZmls
ZSkgeyBtX2NvbG9yUHJvZmlsZSA9IGNvbG9yUHJvZmlsZTsgfQogICAgICAgICB2b2lkIHNldE9y
aWVudGF0aW9uKEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24pIHsgbV9vcmllbnRhdGlvbiA9
IG9yaWVudGF0aW9uOyB9CiAKICAgICBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNw
cAppbmRleCBlNjQ0YTcxMTBlZmNiNTQwZDg5Y2UxYmE4MTEwMGJjNDgyM2IxOGYyLi4wMzBlODBl
MTUxNDJiNzgzYTY2M2M0ZmY4MzJlNGMyNWZjNWYwMGY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNv
ZGVyLmNwcApAQCAtMjM1LDkgKzIzNSw5IEBAIGJvb2wgUE5HSW1hZ2VEZWNvZGVyOjppc1NpemVB
dmFpbGFibGUoKQogICAgIHJldHVybiBJbWFnZURlY29kZXI6OmlzU2l6ZUF2YWlsYWJsZSgpOwog
fQogCi1ib29sIFBOR0ltYWdlRGVjb2Rlcjo6c2V0U2l6ZSh1bnNpZ25lZCB3aWR0aCwgdW5zaWdu
ZWQgaGVpZ2h0KQorYm9vbCBQTkdJbWFnZURlY29kZXI6OnNldFNpemUoY29uc3QgSW50U2l6ZSYg
c2l6ZSkKIHsKLSAgICBpZiAoIUltYWdlRGVjb2Rlcjo6c2V0U2l6ZSh3aWR0aCwgaGVpZ2h0KSkK
KyAgICBpZiAoIUltYWdlRGVjb2Rlcjo6c2V0U2l6ZShzaXplKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgcHJlcGFyZVNjYWxlRGF0YUlmTmVjZXNzYXJ5KCk7CkBAIC0yNTcsMTAgKzI1
Nyw4IEBAIEltYWdlRnJhbWUqIFBOR0ltYWdlRGVjb2Rlcjo6ZnJhbWVCdWZmZXJBdEluZGV4KHNp
emVfdCBpbmRleCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAjZW5kaWYKIAotICAgIGlmICht
X2ZyYW1lQnVmZmVyQ2FjaGUuaXNFbXB0eSgpKSB7CisgICAgaWYgKG1fZnJhbWVCdWZmZXJDYWNo
ZS5pc0VtcHR5KCkpCiAgICAgICAgIG1fZnJhbWVCdWZmZXJDYWNoZS5yZXNpemUoMSk7Ci0gICAg
ICAgIG1fZnJhbWVCdWZmZXJDYWNoZVswXS5zZXRQcmVtdWx0aXBseUFscGhhKG1fcHJlbXVsdGlw
bHlBbHBoYSk7Ci0gICAgfQogCiAgICAgSW1hZ2VGcmFtZSYgZnJhbWUgPSBtX2ZyYW1lQnVmZmVy
Q2FjaGVbaW5kZXhdOwogICAgIGlmIChmcmFtZS5zdGF0dXMoKSAhPSBJbWFnZUZyYW1lOjpGcmFt
ZUNvbXBsZXRlKQpAQCAtMjc2LDM3ICsyNzQsNiBAQCBib29sIFBOR0ltYWdlRGVjb2Rlcjo6c2V0
RmFpbGVkKCkKICAgICByZXR1cm4gSW1hZ2VEZWNvZGVyOjpzZXRGYWlsZWQoKTsKIH0KIAotc3Rh
dGljIHZvaWQgcmVhZENvbG9yUHJvZmlsZShwbmdfc3RydWN0cCBwbmcsIHBuZ19pbmZvcCBpbmZv
LCBDb2xvclByb2ZpbGUmIGNvbG9yUHJvZmlsZSkKLXsKLSAgICBBU1NFUlQoY29sb3JQcm9maWxl
LmlzRW1wdHkoKSk7Ci0KLSNpZmRlZiBQTkdfaUNDUF9TVVBQT1JURUQKLSAgICBjaGFyKiBwcm9m
aWxlTmFtZTsKLSAgICBpbnQgY29tcHJlc3Npb25UeXBlOwotI2lmIChQTkdfTElCUE5HX1ZFUiA8
IDEwNTAwKQotICAgIHBuZ19jaGFycCBwcm9maWxlOwotI2Vsc2UKLSAgICBwbmdfYnl0ZXAgcHJv
ZmlsZTsKLSNlbmRpZgotICAgIHBuZ191aW50XzMyIHByb2ZpbGVMZW5ndGg7Ci0gICAgaWYgKCFw
bmdfZ2V0X2lDQ1AocG5nLCBpbmZvLCAmcHJvZmlsZU5hbWUsICZjb21wcmVzc2lvblR5cGUsICZw
cm9maWxlLCAmcHJvZmlsZUxlbmd0aCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIE9ubHkg
YWNjZXB0IFJHQiBjb2xvciBwcm9maWxlcyBmcm9tIGlucHV0IGNsYXNzIGRldmljZXMuCi0gICAg
Ym9vbCBpZ25vcmVQcm9maWxlID0gZmFsc2U7Ci0gICAgY2hhciogcHJvZmlsZURhdGEgPSByZWlu
dGVycHJldF9jYXN0PGNoYXIqPihwcm9maWxlKTsKLSAgICBpZiAocHJvZmlsZUxlbmd0aCA8IElt
YWdlRGVjb2Rlcjo6aWNjQ29sb3JQcm9maWxlSGVhZGVyTGVuZ3RoKQotICAgICAgICBpZ25vcmVQ
cm9maWxlID0gdHJ1ZTsKLSAgICBlbHNlIGlmICghSW1hZ2VEZWNvZGVyOjpyZ2JDb2xvclByb2Zp
bGUocHJvZmlsZURhdGEsIHByb2ZpbGVMZW5ndGgpKQotICAgICAgICBpZ25vcmVQcm9maWxlID0g
dHJ1ZTsKLSAgICBlbHNlIGlmICghSW1hZ2VEZWNvZGVyOjppbnB1dERldmljZUNvbG9yUHJvZmls
ZShwcm9maWxlRGF0YSwgcHJvZmlsZUxlbmd0aCkpCi0gICAgICAgIGlnbm9yZVByb2ZpbGUgPSB0
cnVlOwotCi0gICAgaWYgKCFpZ25vcmVQcm9maWxlKQotICAgICAgICBjb2xvclByb2ZpbGUuYXBw
ZW5kKHByb2ZpbGVEYXRhLCBwcm9maWxlTGVuZ3RoKTsKLSNlbmRpZgotfQotCiB2b2lkIFBOR0lt
YWdlRGVjb2Rlcjo6aGVhZGVyQXZhaWxhYmxlKCkKIHsKICAgICBwbmdfc3RydWN0cCBwbmcgPSBt
X3JlYWRlci0+cG5nUHRyKCk7CkBAIC0zMjYsNyArMjkzLDcgQEAgdm9pZCBQTkdJbWFnZURlY29k
ZXI6OmhlYWRlckF2YWlsYWJsZSgpCiAgICAgLy8gd2lsbCBjZWFzZSB0byBleGlzdC4gIE5vdGUg
dGhhdCB3ZSdsbCBzdGlsbCBwcm9wZXJseSBzZXQgdGhlIGZhaWx1cmUgZmxhZwogICAgIC8vIGlu
IHRoaXMgY2FzZSBhcyBzb29uIGFzIHdlIGxvbmdqbXAoKS4KICAgICBtX2RvTm90aGluZ09uRmFp
bHVyZSA9IHRydWU7Ci0gICAgYm9vbCByZXN1bHQgPSBzZXRTaXplKHdpZHRoLCBoZWlnaHQpOwor
ICAgIGJvb2wgcmVzdWx0ID0gc2V0U2l6ZShJbnRTaXplKHdpZHRoLCBoZWlnaHQpKTsKICAgICBt
X2RvTm90aGluZ09uRmFpbHVyZSA9IGZhbHNlOwogICAgIGlmICghcmVzdWx0KSB7CiAgICAgICAg
IGxvbmdqbXAoSk1QQlVGKHBuZyksIDEpOwpAQCAtNDA1LDE2ICszNzIsNiBAQCB2b2lkIFBOR0lt
YWdlRGVjb2Rlcjo6aGVhZGVyQXZhaWxhYmxlKCkKICAgICBpZiAoY29sb3JUeXBlID09IFBOR19D
T0xPUl9UWVBFX0dSQVkgfHwgY29sb3JUeXBlID09IFBOR19DT0xPUl9UWVBFX0dSQVlfQUxQSEEp
CiAgICAgICAgIHBuZ19zZXRfZ3JheV90b19yZ2IocG5nKTsKIAotICAgIGlmICgoY29sb3JUeXBl
ICYgUE5HX0NPTE9SX01BU0tfQ09MT1IpICYmICFtX2lnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxl
KSB7Ci0gICAgICAgIC8vIFdlIG9ubHkgc3VwcG9ydCBjb2xvciBwcm9maWxlcyBmb3IgY29sb3Ig
UEFMRVRURSBhbmQgUkdCW0FdIFBORy4gU3VwcG9ydGluZwotICAgICAgICAvLyBjb2xvciBwcm9m
aWxlcyBmb3IgZ3JheS1zY2FsZSBpbWFnZXMgaXMgc2xpZ2h0bHkgdHJpY2t5LCBhdCBsZWFzdCB1
c2luZyB0aGUKLSAgICAgICAgLy8gQ29yZUdyYXBoaWNzIElDQyBsaWJyYXJ5LCBiZWNhdXNlIHdl
IGV4cGFuZCBncmF5LXNjYWxlIGltYWdlcyB0byBSR0IgYnV0IHdlCi0gICAgICAgIC8vIGRvIG5v
dCBzaW1pbGFybHkgdHJhbnNmb3JtIHRoZSBjb2xvciBwcm9maWxlLiBXZSdkIGVpdGhlciBuZWVk
IHRvIHRyYW5zZm9ybQotICAgICAgICAvLyB0aGUgY29sb3IgcHJvZmlsZSBvciB3ZSdkIG5lZWQg
dG8gZGVjb2RlIGludG8gYSBncmF5LXNjYWxlIGltYWdlIGJ1ZmZlciBhbmQKLSAgICAgICAgLy8g
aGFuZCB0aGF0IHRvIENvcmVHcmFwaGljcy4KLSAgICAgICAgcmVhZENvbG9yUHJvZmlsZShwbmcs
IGluZm8sIG1fY29sb3JQcm9maWxlKTsKLSAgICB9Ci0KICAgICAvLyBEZWFsIHdpdGggZ2FtbWEg
YW5kIGtlZXAgaXQgdW5kZXIgb3VyIGNvbnRyb2wuCiAgICAgZG91YmxlIGdhbW1hOwogICAgIGlm
ICghbV9pZ25vcmVHYW1tYUFuZENvbG9yUHJvZmlsZSAmJiBwbmdfZ2V0X2dBTUEocG5nLCBpbmZv
LCAmZ2FtbWEpKSB7CkBAIC00NTIsMTkgKzQwOSwxOSBAQCB2b2lkIFBOR0ltYWdlRGVjb2Rlcjo6
aGVhZGVyQXZhaWxhYmxlKCkKICAgICB9CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBzZXRQaXhl
bFJHQihJbWFnZUZyYW1lOjpQaXhlbERhdGEqIGRlc3QsIHBuZ19ieXRlcCBwaXhlbCkKK3N0YXRp
YyBpbmxpbmUgdm9pZCBzZXRQaXhlbFJHQihSR0JBMzIqIGRlc3QsIHBuZ19ieXRlcCBwaXhlbCkK
IHsKICAgICAqZGVzdCA9IDB4RkYwMDAwMDBVIHwgcGl4ZWxbMF0gPDwgMTYgfCBwaXhlbFsxXSA8
PCA4IHwgcGl4ZWxbMl07CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBzZXRQaXhlbFJHQkEoSW1h
Z2VGcmFtZTo6UGl4ZWxEYXRhKiBkZXN0LCBwbmdfYnl0ZXAgcGl4ZWwsIHVuc2lnbmVkIGNoYXIm
IG5vblRyaXZpYWxBbHBoYU1hc2spCitzdGF0aWMgaW5saW5lIHZvaWQgc2V0UGl4ZWxSR0JBKFJH
QkEzMiogZGVzdCwgcG5nX2J5dGVwIHBpeGVsLCB1bnNpZ25lZCBjaGFyJiBub25Ucml2aWFsQWxw
aGFNYXNrKQogewogICAgIHVuc2lnbmVkIGNoYXIgYSA9IHBpeGVsWzNdOwogICAgICpkZXN0ID0g
YSA8PCAyNCB8IHBpeGVsWzBdIDw8IDE2IHwgcGl4ZWxbMV0gPDwgOCB8IHBpeGVsWzJdOwogICAg
IG5vblRyaXZpYWxBbHBoYU1hc2sgfD0gKDI1NSAtIGEpOwogfQogCi1zdGF0aWMgaW5saW5lIHZv
aWQgc2V0UGl4ZWxQcmVtdWx0aXBsaWVkUkdCQShJbWFnZUZyYW1lOjpQaXhlbERhdGEqIGRlc3Qs
IHBuZ19ieXRlcCBwaXhlbCwgdW5zaWduZWQgY2hhciYgbm9uVHJpdmlhbEFscGhhTWFzaykKK3N0
YXRpYyBpbmxpbmUgdm9pZCBzZXRQaXhlbFByZW11bHRpcGxpZWRSR0JBKFJHQkEzMiogZGVzdCwg
cG5nX2J5dGVwIHBpeGVsLCB1bnNpZ25lZCBjaGFyJiBub25Ucml2aWFsQWxwaGFNYXNrKQogewog
ICAgIHVuc2lnbmVkIGNoYXIgYSA9IHBpeGVsWzNdOwogICAgIHVuc2lnbmVkIGNoYXIgciA9IGZh
c3REaXZpZGVCeTI1NShwaXhlbFswXSAqIGEpOwpAQCAtNDg4LDcgKzQ0NSw3IEBAIHZvaWQgUE5H
SW1hZ2VEZWNvZGVyOjpyb3dBdmFpbGFibGUodW5zaWduZWQgY2hhciogcm93QnVmZmVyLCB1bnNp
Z25lZCByb3dJbmRleCwKICAgICBJbWFnZUZyYW1lJiBidWZmZXIgPSBtX2ZyYW1lQnVmZmVyQ2Fj
aGVbbV9jdXJyZW50RnJhbWVdOwogICAgIGlmIChidWZmZXIuc3RhdHVzKCkgPT0gSW1hZ2VGcmFt
ZTo6RnJhbWVFbXB0eSkgewogICAgICAgICBwbmdfc3RydWN0cCBwbmcgPSBtX3JlYWRlci0+cG5n
UHRyKCk7Ci0gICAgICAgIGlmICghYnVmZmVyLnNldFNpemUoc2NhbGVkU2l6ZSgpLndpZHRoKCks
IHNjYWxlZFNpemUoKS5oZWlnaHQoKSkpIHsKKyAgICAgICAgaWYgKCFidWZmZXIuc2V0U2l6ZShz
Y2FsZWRTaXplKCksIG1fcHJlbXVsdGlwbHlBbHBoYSkpIHsKICAgICAgICAgICAgIGxvbmdqbXAo
Sk1QQlVGKHBuZyksIDEpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC01MDYs
MTUgKzQ2MywxMSBAQCB2b2lkIFBOR0ltYWdlRGVjb2Rlcjo6cm93QXZhaWxhYmxlKHVuc2lnbmVk
IGNoYXIqIHJvd0J1ZmZlciwgdW5zaWduZWQgcm93SW5kZXgsCiAKICAgICAgICAgYnVmZmVyLnNl
dFN0YXR1cyhJbWFnZUZyYW1lOjpGcmFtZVBhcnRpYWwpOwogICAgICAgICBidWZmZXIuc2V0SGFz
QWxwaGEoZmFsc2UpOwotICAgICAgICBidWZmZXIuc2V0Q29sb3JQcm9maWxlKG1fY29sb3JQcm9m
aWxlKTsKIAogI2lmIEVOQUJMRShBUE5HKQogICAgICAgICBpZiAobV9jdXJyZW50RnJhbWUpCiAg
ICAgICAgICAgICBpbml0RnJhbWVCdWZmZXIobV9jdXJyZW50RnJhbWUpOwotICAgICAgICBlbHNl
CiAjZW5kaWYKLSAgICAgICAgLy8gRm9yIFBOR3MsIHRoZSBmcmFtZSBhbHdheXMgZmlsbHMgdGhl
IGVudGlyZSBpbWFnZS4KLSAgICAgICAgYnVmZmVyLnNldE9yaWdpbmFsRnJhbWVSZWN0KEludFJl
Y3QoSW50UG9pbnQoKSwgc2l6ZSgpKSk7CiAgICAgfQogCiAgICAgLyogbGlicG5nIGNvbW1lbnRz
IChoZXJlIHRvIGV4cGxhaW4gd2hhdCBmb2xsb3dzKS4KQEAgLTU3Myw3ICs1MjYsNyBAQCB2b2lk
IFBOR0ltYWdlRGVjb2Rlcjo6cm93QXZhaWxhYmxlKHVuc2lnbmVkIGNoYXIqIHJvd0J1ZmZlciwg
dW5zaWduZWQgcm93SW5kZXgsCiAgICAgfQogCiAgICAgLy8gV3JpdGUgdGhlIGRlY29kZWQgcm93
IHBpeGVscyB0byB0aGUgZnJhbWUgYnVmZmVyLgotICAgIEltYWdlRnJhbWU6OlBpeGVsRGF0YSog
YWRkcmVzcyA9IGJ1ZmZlci5nZXRBZGRyKDAsIHkpOworICAgIFJHQkEzMiogYWRkcmVzcyA9IGJ1
ZmZlci5nZXRBZGRyKDAsIHkpOwogICAgIGludCB3aWR0aCA9IHNjYWxlZFNpemUoKS53aWR0aCgp
OwogICAgIHVuc2lnbmVkIGNoYXIgbm9uVHJpdmlhbEFscGhhTWFzayA9IDA7CiAKQEAgLTY2Myw4
ICs2MTYsNiBAQCB2b2lkIFBOR0ltYWdlRGVjb2Rlcjo6cmVhZENodW5rcyhwbmdfdW5rbm93bl9j
aHVua3AgY2h1bmspCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgbV9mcmFtZUJ1ZmZl
ckNhY2hlLnJlc2l6ZShtX2ZyYW1lQ291bnQpOwotICAgICAgICBmb3IgKGF1dG8mIGltYWdlRnJh
bWUgOiBtX2ZyYW1lQnVmZmVyQ2FjaGUpCi0gICAgICAgICAgICBpbWFnZUZyYW1lLnNldFByZW11
bHRpcGx5QWxwaGEobV9wcmVtdWx0aXBseUFscGhhKTsKICAgICB9IGVsc2UgaWYgKCFtZW1jbXAo
Y2h1bmstPm5hbWUsICJmY1RMIiwgNCkgJiYgY2h1bmstPnNpemUgPT0gMjYpIHsKICAgICAgICAg
aWYgKG1faGFzSW5mbyAmJiAhbV9pc0FuaW1hdGVkKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAt
NzA2LDEwICs2NTcsOCBAQCB2b2lkIFBOR0ltYWdlRGVjb2Rlcjo6cmVhZENodW5rcyhwbmdfdW5r
bm93bl9jaHVua3AgY2h1bmspCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAg
ICAgICBpZiAobV9mcmFtZUJ1ZmZlckNhY2hlLmlzRW1wdHkoKSkgeworICAgICAgICBpZiAobV9m
cmFtZUJ1ZmZlckNhY2hlLmlzRW1wdHkoKSkKICAgICAgICAgICAgIG1fZnJhbWVCdWZmZXJDYWNo
ZS5yZXNpemUoMSk7Ci0gICAgICAgICAgICBtX2ZyYW1lQnVmZmVyQ2FjaGVbMF0uc2V0UHJlbXVs
dGlwbHlBbHBoYShtX3ByZW11bHRpcGx5QWxwaGEpOwotICAgICAgICB9CiAKICAgICAgICAgaWYg
KG1fY3VycmVudEZyYW1lIDwgbV9mcmFtZUJ1ZmZlckNhY2hlLnNpemUoKSkgewogICAgICAgICAg
ICAgSW1hZ2VGcmFtZSYgYnVmZmVyID0gbV9mcmFtZUJ1ZmZlckNhY2hlW21fY3VycmVudEZyYW1l
XTsKQEAgLTgzNCwxMSArNzgzLDYgQEAgdm9pZCBQTkdJbWFnZURlY29kZXI6OmluaXRGcmFtZUJ1
ZmZlcihzaXplX3QgZnJhbWVJbmRleCkKICAgICAgICAgZnJhbWVSZWN0LnNldEhlaWdodChzaXpl
KCkuaGVpZ2h0KCkgLSBtX3lPZmZzZXQpOwogCiAgICAgSW1hZ2VGcmFtZSYgYnVmZmVyID0gbV9m
cmFtZUJ1ZmZlckNhY2hlW2ZyYW1lSW5kZXhdOwotICAgIGludCBsZWZ0ID0gdXBwZXJCb3VuZFNj
YWxlZFgoZnJhbWVSZWN0LngoKSk7Ci0gICAgaW50IHJpZ2h0ID0gbG93ZXJCb3VuZFNjYWxlZFgo
ZnJhbWVSZWN0Lm1heFgoKSwgbGVmdCk7Ci0gICAgaW50IHRvcCA9IHVwcGVyQm91bmRTY2FsZWRZ
KGZyYW1lUmVjdC55KCkpOwotICAgIGludCBib3R0b20gPSBsb3dlckJvdW5kU2NhbGVkWShmcmFt
ZVJlY3QubWF4WSgpLCB0b3ApOwotICAgIGJ1ZmZlci5zZXRPcmlnaW5hbEZyYW1lUmVjdChJbnRS
ZWN0KGxlZnQsIHRvcCwgcmlnaHQgLSBsZWZ0LCBib3R0b20gLSB0b3ApKTsKIAogICAgIC8vIFRo
ZSBzdGFydGluZyBzdGF0ZSBmb3IgdGhpcyBmcmFtZSBkZXBlbmRzIG9uIHRoZSBwcmV2aW91cyBm
cmFtZSdzCiAgICAgLy8gZGlzcG9zYWwgbWV0aG9kLgpAQCAtODYyLDcgKzgwNiw3IEBAIHZvaWQg
UE5HSW1hZ2VEZWNvZGVyOjppbml0RnJhbWVCdWZmZXIoc2l6ZV90IGZyYW1lSW5kZXgpCiAgICAg
fSBlbHNlIHsKICAgICAgICAgLy8gV2Ugd2FudCB0byBjbGVhciB0aGUgcHJldmlvdXMgZnJhbWUg
dG8gdHJhbnNwYXJlbnQsIHdpdGhvdXQKICAgICAgICAgLy8gYWZmZWN0aW5nIHBpeGVscyBpbiB0
aGUgaW1hZ2Ugb3V0c2lkZSBvZiB0aGUgZnJhbWUuCi0gICAgICAgIGNvbnN0IEludFJlY3QmIHBy
ZXZSZWN0ID0gcHJldkJ1ZmZlci0+b3JpZ2luYWxGcmFtZVJlY3QoKTsKKyAgICAgICAgY29uc3Qg
SW50UmVjdCYgcHJldlJlY3QgPSBwcmV2QnVmZmVyLT5waXhlbHMoKS0+cmVjdCgpOwogICAgICAg
ICBpZiAoIWZyYW1lSW5kZXggfHwgcHJldlJlY3QuY29udGFpbnMoSW50UmVjdChJbnRQb2ludCgp
LCBzY2FsZWRTaXplKCkpKSkgewogICAgICAgICAgICAgLy8gQ2xlYXJpbmcgdGhlIGZpcnN0IGZy
YW1lLCBvciBhIGZyYW1lIHRoZSBzaXplIG9mIHRoZSB3aG9sZQogICAgICAgICAgICAgLy8gaW1h
Z2UsIHJlc3VsdHMgaW4gYSBjb21wbGV0ZWx5IGVtcHR5IGltYWdlLgpAQCAtODczLDYgKzgxNywx
MiBAQCB2b2lkIFBOR0ltYWdlRGVjb2Rlcjo6aW5pdEZyYW1lQnVmZmVyKHNpemVfdCBmcmFtZUlu
ZGV4KQogICAgICAgICAgICAgYnVmZmVyLnplcm9GaWxsRnJhbWVSZWN0KHByZXZSZWN0KTsKICAg
ICAgICAgfQogICAgIH0KKyAgICAKKyAgICBpbnQgbGVmdCA9IHVwcGVyQm91bmRTY2FsZWRYKGZy
YW1lUmVjdC54KCkpOworICAgIGludCByaWdodCA9IGxvd2VyQm91bmRTY2FsZWRYKGZyYW1lUmVj
dC5tYXhYKCksIGxlZnQpOworICAgIGludCB0b3AgPSB1cHBlckJvdW5kU2NhbGVkWShmcmFtZVJl
Y3QueSgpKTsKKyAgICBpbnQgYm90dG9tID0gbG93ZXJCb3VuZFNjYWxlZFkoZnJhbWVSZWN0Lm1h
eFkoKSwgdG9wKTsKKyAgICBidWZmZXIucGl4ZWxzKCktPnNldFJlY3QoSW50UmVjdChsZWZ0LCB0
b3AsIHJpZ2h0IC0gbGVmdCwgYm90dG9tIC0gdG9wKSk7CiB9CiAKIHZvaWQgUE5HSW1hZ2VEZWNv
ZGVyOjpmcmFtZUNvbXBsZXRlKCkKQEAgLTg4Niw3ICs4MzYsNyBAQCB2b2lkIFBOR0ltYWdlRGVj
b2Rlcjo6ZnJhbWVDb21wbGV0ZSgpCiAgICAgcG5nX2J5dGVwIGludGVybGFjZUJ1ZmZlciA9IG1f
cmVhZGVyLT5pbnRlcmxhY2VCdWZmZXIoKTsKIAogICAgIGlmIChtX2N1cnJlbnRGcmFtZSAmJiBp
bnRlcmxhY2VCdWZmZXIpIHsKLSAgICAgICAgY29uc3QgSW50UmVjdCYgcmVjdCA9IGJ1ZmZlci5v
cmlnaW5hbEZyYW1lUmVjdCgpOworICAgICAgICBjb25zdCBJbnRSZWN0JiByZWN0ID0gYnVmZmVy
LnBpeGVscygpLT5yZWN0KCk7CiAgICAgICAgIGJvb2wgaGFzQWxwaGEgPSBtX3JlYWRlci0+aGFz
QWxwaGEoKTsKICAgICAgICAgdW5zaWduZWQgY29sb3JDaGFubmVscyA9IGhhc0FscGhhID8gNCA6
IDM7CiAgICAgICAgIGJvb2wgbm9uVHJpdmlhbEFscGhhID0gZmFsc2U7CkBAIC04OTYsNyArODQ2
LDcgQEAgdm9pZCBQTkdJbWFnZURlY29kZXI6OmZyYW1lQ29tcGxldGUoKQogI2lmIEVOQUJMRShJ
TUFHRV9ERUNPREVSX0RPV05fU0FNUExJTkcpCiAgICAgICAgIGZvciAoaW50IHkgPSAwOyB5IDwg
cmVjdC5tYXhZKCkgLSByZWN0LnkoKTsgKyt5KSB7CiAgICAgICAgICAgICBwbmdfYnl0ZXAgcm93
ID0gaW50ZXJsYWNlQnVmZmVyICsgKG1fc2NhbGVkID8gbV9zY2FsZWRSb3dzW3ldIDogeSkgKiBj
b2xvckNoYW5uZWxzICogc2l6ZSgpLndpZHRoKCk7Ci0gICAgICAgICAgICBJbWFnZUZyYW1lOjpQ
aXhlbERhdGEqIGFkZHJlc3MgPSBidWZmZXIuZ2V0QWRkcihyZWN0LngoKSwgeSArIHJlY3QueSgp
KTsKKyAgICAgICAgICAgIFJHQkEzMiogYWRkcmVzcyA9IGJ1ZmZlci5nZXRBZGRyKHJlY3QueCgp
LCB5ICsgcmVjdC55KCkpOwogICAgICAgICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCByZWN0Lm1h
eFgoKSAtIHJlY3QueCgpOyArK3gpIHsKICAgICAgICAgICAgICAgICBwbmdfYnl0ZXAgcGl4ZWwg
PSByb3cgKyAobV9zY2FsZWQgPyBtX3NjYWxlZENvbHVtbnNbeF0gOiB4KSAqIGNvbG9yQ2hhbm5l
bHM7CiAgICAgICAgICAgICAgICAgdW5zaWduZWQgYWxwaGEgPSBoYXNBbHBoYSA/IHBpeGVsWzNd
IDogMjU1OwpAQCAtOTEyLDcgKzg2Miw3IEBAIHZvaWQgUE5HSW1hZ2VEZWNvZGVyOjpmcmFtZUNv
bXBsZXRlKCkKICAgICAgICAgcG5nX2J5dGVwIHJvdyA9IGludGVybGFjZUJ1ZmZlcjsKICAgICAg
ICAgZm9yIChpbnQgeSA9IHJlY3QueSgpOyB5IDwgcmVjdC5tYXhZKCk7ICsreSwgcm93ICs9IGNv
bG9yQ2hhbm5lbHMgKiBzaXplKCkud2lkdGgoKSkgewogICAgICAgICAgICAgcG5nX2J5dGVwIHBp
eGVsID0gcm93OwotICAgICAgICAgICAgSW1hZ2VGcmFtZTo6UGl4ZWxEYXRhKiBhZGRyZXNzID0g
YnVmZmVyLmdldEFkZHIocmVjdC54KCksIHkpOworICAgICAgICAgICAgUkdCQTMyKiBhZGRyZXNz
ID0gYnVmZmVyLmdldEFkZHIocmVjdC54KCksIHkpOwogICAgICAgICAgICAgZm9yIChpbnQgeCA9
IHJlY3QueCgpOyB4IDwgcmVjdC5tYXhYKCk7ICsreCwgcGl4ZWwgKz0gY29sb3JDaGFubmVscykg
ewogICAgICAgICAgICAgICAgIHVuc2lnbmVkIGFscGhhID0gaGFzQWxwaGEgPyBwaXhlbFszXSA6
IDI1NTsKICAgICAgICAgICAgICAgICBub25Ucml2aWFsQWxwaGEgfD0gYWxwaGEgPCAyNTU7CkBA
IC05MjUsNyArODc1LDcgQEAgdm9pZCBQTkdJbWFnZURlY29kZXI6OmZyYW1lQ29tcGxldGUoKQog
I2VuZGlmCiAKICAgICAgICAgaWYgKCFub25Ucml2aWFsQWxwaGEpIHsKLSAgICAgICAgICAgIGlm
IChidWZmZXIub3JpZ2luYWxGcmFtZVJlY3QoKS5jb250YWlucyhJbnRSZWN0KEludFBvaW50KCks
IHNjYWxlZFNpemUoKSkpKQorICAgICAgICAgICAgaWYgKGJ1ZmZlci5waXhlbHMoKS0+cmVjdCgp
LmNvbnRhaW5zKEludFJlY3QoSW50UG9pbnQoKSwgc2NhbGVkU2l6ZSgpKSkpCiAgICAgICAgICAg
ICAgICAgYnVmZmVyLnNldEhhc0FscGhhKGZhbHNlKTsKICAgICAgICAgICAgIGVsc2UgewogICAg
ICAgICAgICAgICAgIHNpemVfdCBmcmFtZUluZGV4ID0gbV9jdXJyZW50RnJhbWU7CkBAIC05MzMs
NyArODgzLDcgQEAgdm9pZCBQTkdJbWFnZURlY29kZXI6OmZyYW1lQ29tcGxldGUoKQogICAgICAg
ICAgICAgICAgIHdoaWxlIChmcmFtZUluZGV4ICYmIChwcmV2QnVmZmVyLT5kaXNwb3NhbE1ldGhv
ZCgpID09IEltYWdlRnJhbWU6OkRpc3Bvc2VPdmVyd3JpdGVQcmV2aW91cykpCiAgICAgICAgICAg
ICAgICAgICAgIHByZXZCdWZmZXIgPSAmbV9mcmFtZUJ1ZmZlckNhY2hlWy0tZnJhbWVJbmRleF07
CiAgICAgICAgICAgICAgICAgaWYgKChwcmV2QnVmZmVyLT5kaXNwb3NhbE1ldGhvZCgpID09IElt
YWdlRnJhbWU6OkRpc3Bvc2VPdmVyd3JpdGVCZ2NvbG9yKQotICAgICAgICAgICAgICAgICAgICAm
JiAhcHJldkJ1ZmZlci0+aGFzQWxwaGEoKSAmJiBidWZmZXIub3JpZ2luYWxGcmFtZVJlY3QoKS5j
b250YWlucyhwcmV2QnVmZmVyLT5vcmlnaW5hbEZyYW1lUmVjdCgpKSkKKyAgICAgICAgICAgICAg
ICAgICAgJiYgIXByZXZCdWZmZXItPmhhc0FscGhhKCkgJiYgYnVmZmVyLnBpeGVscygpLT5yZWN0
KCkuY29udGFpbnMocHJldkJ1ZmZlci0+cGl4ZWxzKCktPnJlY3QoKSkpCiAgICAgICAgICAgICAg
ICAgICAgIGJ1ZmZlci5zZXRIYXNBbHBoYShmYWxzZSk7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0gZWxzZSBpZiAoIW1fYmxlbmQgJiYgIWJ1ZmZlci5oYXNBbHBoYSgpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdl
RGVjb2Rlci5oCmluZGV4IDA1ZmM3NGI2ZGUyMTRkMDQxNGE4MmI0MTg2OTM3NzYyZDFhNWU1NWIu
Ljk4NzQyNDYxOTA4OGRlMTdmY2Q2M2RjODZmNWI5NTE3ODdjYjRkZWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1h
Z2VEZWNvZGVyLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICBpbnQgcmVwZXRpdGlvbkNvdW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9wbGF5Q291
bnQtMTsgfQogI2VuZGlmCiAgICAgICAgIGJvb2wgaXNTaXplQXZhaWxhYmxlKCkgb3ZlcnJpZGU7
Ci0gICAgICAgIGJvb2wgc2V0U2l6ZSh1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0KSBv
dmVycmlkZTsKKyAgICAgICAgYm9vbCBzZXRTaXplKGNvbnN0IEludFNpemUmKSBvdmVycmlkZTsK
ICAgICAgICAgSW1hZ2VGcmFtZSogZnJhbWVCdWZmZXJBdEluZGV4KHNpemVfdCBpbmRleCkgb3Zl
cnJpZGU7CiAgICAgICAgIC8vIENBVVRJT046IHNldEZhaWxlZCgpIGRlbGV0ZXMgfG1fcmVhZGVy
fC4gIEJlIGNhcmVmdWwgdG8gYXZvaWQKICAgICAgICAgLy8gYWNjZXNzaW5nIGRlbGV0ZWQgbWVt
b3J5LCBlc3BlY2lhbGx5IHdoZW4gY2FsbGluZyB0aGlzIGZyb20gaW5zaWRlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURl
Y29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9X
RUJQSW1hZ2VEZWNvZGVyLmNwcAppbmRleCAxMjRhMWIyZjE5OTdmZTY3OGM2MWI1MmYzMDU4ZGI0
ZDZiODg2NzlhLi5hMzVhMTlhOTBiNWNhMzk3ZThmYjcwMjEwMTdlODk3NWZiZTM0YzRhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJ
bWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAKQEAgLTc4LDEwICs3OCw4IEBAIEltYWdlRnJh
bWUqIFdFQlBJbWFnZURlY29kZXI6OmZyYW1lQnVmZmVyQXRJbmRleChzaXplX3QgaW5kZXgpCiAg
ICAgaWYgKGluZGV4KQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGlmIChtX2ZyYW1lQnVmZmVy
Q2FjaGUuaXNFbXB0eSgpKSB7CisgICAgaWYgKG1fZnJhbWVCdWZmZXJDYWNoZS5pc0VtcHR5KCkp
CiAgICAgICAgIG1fZnJhbWVCdWZmZXJDYWNoZS5yZXNpemUoMSk7Ci0gICAgICAgIG1fZnJhbWVC
dWZmZXJDYWNoZVswXS5zZXRQcmVtdWx0aXBseUFscGhhKG1fcHJlbXVsdGlwbHlBbHBoYSk7Ci0g
ICAgfQogCiAgICAgSW1hZ2VGcmFtZSYgZnJhbWUgPSBtX2ZyYW1lQnVmZmVyQ2FjaGVbMF07CiAg
ICAgaWYgKGZyYW1lLnN0YXR1cygpICE9IEltYWdlRnJhbWU6OkZyYW1lQ29tcGxldGUpCkBAIC0x
MTUsNyArMTEzLDcgQEAgYm9vbCBXRUJQSW1hZ2VEZWNvZGVyOjpkZWNvZGUoYm9vbCBvbmx5U2l6
ZSkKICAgICAgICAgICAgIHJldHVybiBzZXRGYWlsZWQoKTsKICAgICAgICAgbV9oYXNBbHBoYSA9
IGZhbHNlOwogI2VuZGlmCi0gICAgICAgIGlmICghc2V0U2l6ZSh3aWR0aCwgaGVpZ2h0KSkKKyAg
ICAgICAgaWYgKCFzZXRTaXplKEludFNpemUod2lkdGgsIGhlaWdodCkpKQogICAgICAgICAgICAg
cmV0dXJuIHNldEZhaWxlZCgpOwogICAgIH0KIApAQCAtMTI4LDE4ICsxMjYsMTcgQEAgYm9vbCBX
RUJQSW1hZ2VEZWNvZGVyOjpkZWNvZGUoYm9vbCBvbmx5U2l6ZSkKICAgICBBU1NFUlQoYnVmZmVy
LnN0YXR1cygpICE9IEltYWdlRnJhbWU6OkZyYW1lQ29tcGxldGUpOwogCiAgICAgaWYgKGJ1ZmZl
ci5zdGF0dXMoKSA9PSBJbWFnZUZyYW1lOjpGcmFtZUVtcHR5KSB7Ci0gICAgICAgIGlmICghYnVm
ZmVyLnNldFNpemUoc2l6ZSgpLndpZHRoKCksIHNpemUoKS5oZWlnaHQoKSkpCisgICAgICAgIGlm
ICghYnVmZmVyLnNldFNpemUoc2l6ZSgpLCBtX3ByZW11bHRpcGx5QWxwaGEpKQogICAgICAgICAg
ICAgcmV0dXJuIHNldEZhaWxlZCgpOwogICAgICAgICBidWZmZXIuc2V0U3RhdHVzKEltYWdlRnJh
bWU6OkZyYW1lUGFydGlhbCk7CiAgICAgICAgIGJ1ZmZlci5zZXRIYXNBbHBoYShtX2hhc0FscGhh
KTsKLSAgICAgICAgYnVmZmVyLnNldE9yaWdpbmFsRnJhbWVSZWN0KEludFJlY3QoSW50UG9pbnQo
KSwgc2l6ZSgpKSk7CiAgICAgfQogCiAgICAgaWYgKCFtX2RlY29kZXIpIHsKICAgICAgICAgV0VC
UF9DU1BfTU9ERSBtb2RlID0gb3V0cHV0TW9kZShtX2hhc0FscGhhKTsKICAgICAgICAgaWYgKCFt
X3ByZW11bHRpcGx5QWxwaGEpCiAgICAgICAgICAgICBtb2RlID0gb3V0cHV0TW9kZShmYWxzZSk7
Ci0gICAgICAgIGludCByb3dTdHJpZGUgPSBzaXplKCkud2lkdGgoKSAqIHNpemVvZihJbWFnZUZy
YW1lOjpQaXhlbERhdGEpOworICAgICAgICBpbnQgcm93U3RyaWRlID0gc2l6ZSgpLndpZHRoKCkg
KiBzaXplb2YoUkdCQTMyKTsKICAgICAgICAgdWludDhfdCogb3V0cHV0ID0gcmVpbnRlcnByZXRf
Y2FzdDx1aW50OF90Kj4oYnVmZmVyLmdldEFkZHIoMCwgMCkpOwogICAgICAgICBpbnQgb3V0cHV0
U2l6ZSA9IHNpemUoKS5oZWlnaHQoKSAqIHJvd1N0cmlkZTsKICAgICAgICAgbV9kZWNvZGVyID0g
V2ViUElOZXdSR0IobW9kZSwgb3V0cHV0LCBvdXRwdXRTaXplLCByb3dTdHJpZGUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGlt
ZVZpZGVvU291cmNlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLm1tCmluZGV4IDIxNmNkMDkzZjI2NDY3Y2Jh
ODhhNDNmNjkzYWJmNGNmNTFkZDFhNGQuLmQxMTQ1NGIwNWVmODg5OTNhNjI4OTM4OTZiYzBjMTE3
MjhjNWVkNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMubW0KQEAg
LTg3LDcgKzg3LDcgQEAgdm9pZCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYzo6dXBkYXRlUGxh
dGZvcm1MYXllcigpIGNvbnN0CiAgICAgICAgIGlmICghaW1hZ2UpCiAgICAgICAgICAgICBicmVh
azsKIAotICAgICAgICBtX3ByZXZpZXdJbWFnZSA9IGltYWdlLT5nZXRDR0ltYWdlUmVmKCk7Cisg
ICAgICAgIG1fcHJldmlld0ltYWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlKCk7CiAgICAgICAgIGlm
ICghbV9wcmV2aWV3SW1hZ2UpCiAgICAgICAgICAgICBicmVhazsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZUNHV2luLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VDR1dpbi5jcHAKaW5kZXggMzZjZDY1MTZlODBmMTc0
OGJmZWFiNzdhOTMwMjcxYzEyMWRlODAxOS4uNGI0ZTM3NzllOTZmNzhjNjU0MGE1M2M0NDc4YzNi
ZmQ5MzVmNTNlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJ
bWFnZUNHV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdl
Q0dXaW4uY3BwCkBAIC0xMzYsOSArMTM2LDkgQEAgRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFn
ZUZyb21JbWFnZShJbWFnZSogaW1nLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pCiAgICAg
Q0dDb250ZXh0U2NhbGVDVE0oZHJhd0NvbnRleHQsIDEsIC0xKTsKICAgICBDR0NvbnRleHRTZXRG
aWxsQ29sb3IoZHJhd0NvbnRleHQsIHdoaXRlKTsKICAgICBDR0NvbnRleHRGaWxsUmVjdChkcmF3
Q29udGV4dCwgcmVjdCk7Ci0gICAgaWYgKGF1dG8gc3JjSW1hZ2UgPSBpbWctPmdldENHSW1hZ2VS
ZWYoKSkgeworICAgIGlmIChhdXRvIHNyY0ltYWdlID0gaW1nLT5uYXRpdmVJbWFnZSgpKSB7CiAg
ICAgICAgIENHQ29udGV4dFNldEJsZW5kTW9kZShkcmF3Q29udGV4dCwga0NHQmxlbmRNb2RlTm9y
bWFsKTsKLSAgICAgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGRyYXdDb250ZXh0LCByZWN0LCBzcmNJ
bWFnZSk7CisgICAgICAgIENHQ29udGV4dERyYXdJbWFnZShkcmF3Q29udGV4dCwgcmVjdCwgc3Jj
SW1hZ2UuZ2V0KCkpOwogICAgIH0KICAgICBDR0NvbnRleHRSZWxlYXNlKGRyYXdDb250ZXh0KTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJDYWNoZS5tbSBiL1NvdXJj
ZS9XZWJLaXQvbWFjL01pc2MvV2ViQ2FjaGUubW0KaW5kZXggYjY1OWQ2ZGJmOWFkNjk5OWMzYWM5
NjJkZTk1MTU3ODA5N2UxZjNiMS4uN2M1ZWQyMTBkZGIyYTMyYTc2NjY3NGMxMjBkOTk0YzJmYTQ3
ZTdmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJDYWNoZS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYkNhY2hlLm1tCkBAIC0yMDQsNyArMjA0LDcgQEAg
KyAoQ0dJbWFnZVJlZilpbWFnZUZvclVSTDooTlNVUkwgKil1cmwKICAgICBXZWJDb3JlOjpDYWNo
ZWRJbWFnZSYgY2FjaGVkSW1hZ2UgPSBkb3duY2FzdDxXZWJDb3JlOjpDYWNoZWRJbWFnZT4oKmNh
Y2hlZFJlc291cmNlKTsKICAgICBpZiAoIWNhY2hlZEltYWdlLmhhc0ltYWdlKCkpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBjYWNoZWRJbWFnZS5pbWFnZSgpLT5nZXRDR0lt
YWdlUmVmKCk7CisgICAgcmV0dXJuIGNhY2hlZEltYWdlLmltYWdlKCktPm5hdGl2ZUltYWdlKCku
Z2V0KCk7CiB9CiAKICNlbmRpZiAvLyBQTEFURk9STShJT1MpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvY2cvV0tJY29uRGF0YWJhc2VDRy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvY2cvV0tJY29uRGF0YWJhc2VDRy5jcHAKaW5kZXggMGY2
ZGU3YTE0NmE2MTFhNTJhYTFlNTM5MDE5ZmE2YzFjNDY3MjVhZS4uMzA1NjMzNmNiNjZmZTRhZjE4
YmRjNTI5YWNhMmY4ZmM4ODFkZmU1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL2NnL1dLSWNvbkRhdGFiYXNlQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9jZy9XS0ljb25EYXRhYmFzZUNHLmNwcApAQCAtMzcsMTIgKzM3LDIzIEBA
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogQ0dJbWFnZVJlZiBXS0ljb25EYXRhYmFzZVRyeUdl
dENHSW1hZ2VGb3JVUkwoV0tJY29uRGF0YWJhc2VSZWYgaWNvbkRhdGFiYXNlUmVmLCBXS1VSTFJl
ZiB1cmxSZWYsIFdLU2l6ZSBzaXplKQogewogICAgIEltYWdlKiBpbWFnZSA9IHRvSW1wbChpY29u
RGF0YWJhc2VSZWYpLT5pbWFnZUZvclBhZ2VVUkwodG9XVEZTdHJpbmcodXJsUmVmKSk7Ci0gICAg
cmV0dXJuIGltYWdlID8gaW1hZ2UtPmdldEZpcnN0Q0dJbWFnZVJlZk9mU2l6ZShJbnRTaXplKHN0
YXRpY19jYXN0PGludD4oc2l6ZS53aWR0aCksIHN0YXRpY19jYXN0PGludD4oc2l6ZS5oZWlnaHQp
KSkgOiAwOworICAgIHJldHVybiBpbWFnZSA/IGltYWdlLT5uYXRpdmVJbWFnZU9mU2l6ZShJbnRT
aXplKHN0YXRpY19jYXN0PGludD4oc2l6ZS53aWR0aCksIHN0YXRpY19jYXN0PGludD4oc2l6ZS5o
ZWlnaHQpKSkuZ2V0KCkgOiBudWxscHRyOwogfQogCiBDRkFycmF5UmVmIFdLSWNvbkRhdGFiYXNl
VHJ5Q29weUNHSW1hZ2VBcnJheUZvclVSTChXS0ljb25EYXRhYmFzZVJlZiBpY29uRGF0YWJhc2VS
ZWYsIFdLVVJMUmVmIHVybFJlZikKIHsKICAgICBJbWFnZSogaW1hZ2UgPSB0b0ltcGwoaWNvbkRh
dGFiYXNlUmVmKS0+aW1hZ2VGb3JQYWdlVVJMKHRvV1RGU3RyaW5nKHVybFJlZikpOwotICAgIHJl
dHVybiBpbWFnZSA/IGltYWdlLT5nZXRDR0ltYWdlQXJyYXkoKS5sZWFrUmVmKCkgOiAwOworICAg
IGlmICghaW1hZ2UpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYXV0byBuYXRpdmVJ
bWFnZXMgPSBpbWFnZS0+ZnJhbWVzTmF0aXZlSW1hZ2VzKCk7CisgICAgaWYgKCFuYXRpdmVJbWFn
ZXMuc2l6ZSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAKKyAgICBDRk11dGFibGVB
cnJheVJlZiBhcnJheSA9IENGQXJyYXlDcmVhdGVNdXRhYmxlKG51bGxwdHIsIG5hdGl2ZUltYWdl
cy5zaXplKCksICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpOworICAgIGZvciAoYXV0byBuYXRpdmVJ
bWFnZSA6IG5hdGl2ZUltYWdlcykKKyAgICAgICAgQ0ZBcnJheUFwcGVuZFZhbHVlKGFycmF5LCBu
YXRpdmVJbWFnZS5nZXQoKSk7CisgICAgCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PENGQXJyYXlS
ZWY+KENGUmV0YWluKGFycmF5KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggZGM3OTgzYWI5
ODhjMmQwNGExNzMwZWUxMzczMDNjMjQ0MTYxNTE5Ny4uZmJjM2U1ZDRjNTQzMDFjZTkyMTdhNDBm
OGQwOGJkNTgzNTI3ODdjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lv
cy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTQwNzEsNyArNDA3MSw3IEBA
IC0gKFVJSW1hZ2UgKilfcHJlc2VudGF0aW9uU25hcHNob3RGb3JQcmV2aWV3SXRlbUNvbnRyb2xs
ZXI6KFVJUHJldmlld0l0ZW1Db250cm9sCiB7CiAgICAgaWYgKCFfcG9zaXRpb25JbmZvcm1hdGlv
bi5saW5rSW5kaWNhdG9yLmNvbnRlbnRJbWFnZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0g
ICAgcmV0dXJuIFtbW1VJSW1hZ2UgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTpfcG9zaXRpb25JbmZv
cm1hdGlvbi5saW5rSW5kaWNhdG9yLmNvbnRlbnRJbWFnZS0+Z2V0Q0dJbWFnZVJlZigpXSBhdXRv
cmVsZWFzZV07CisgICAgcmV0dXJuIFtbW1VJSW1hZ2UgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTpf
cG9zaXRpb25JbmZvcm1hdGlvbi5saW5rSW5kaWNhdG9yLmNvbnRlbnRJbWFnZS0+bmF0aXZlSW1h
Z2UoKS5nZXQoKV0gYXV0b3JlbGVhc2VdOwogfQogCiAtIChOU0FycmF5ICopX3ByZXNlbnRhdGlv
blJlY3RzRm9yUHJldmlld0l0ZW1Db250cm9sbGVyOihVSVByZXZpZXdJdGVtQ29udHJvbGxlciAq
KWNvbnRyb2xsZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5WaWV3LmNwcAppbmRleCA5YTMzZjdjYzdkYzdjN2Q3MmY5ZGE3NDMwOThiN2RiY2E4MjQwOWNm
Li5hNTMyNTEwNjc4YjlmNTM1MTQ1OGEzOGE5ZjQyMzM3NDdkMDM1ZjVjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC0xNzI3LDY5
ICsxNzI3LDYgQEAgdm9pZCBQbHVnaW5WaWV3Ojp3aW5kb3dlZFBsdWdpblZpc2liaWxpdHlEaWRD
aGFuZ2UoYm9vbCBpc1Zpc2libGUsIHVpbnQ2NF90IHdpbmQKIH0KICNlbmRpZgogCi0jaWYgUExB
VEZPUk0oQ09DT0EpCi1zdGF0aWMgYm9vbCBpc0FsbW9zdFNvbGlkQ29sb3IoQml0bWFwSW1hZ2Uq
IGJpdG1hcCkKLXsKLSAgICBDR0ltYWdlUmVmIGltYWdlID0gYml0bWFwLT5nZXRDR0ltYWdlUmVm
KCk7Ci0gICAgQVNTRVJUKENHSW1hZ2VHZXRCaXRzUGVyQ29tcG9uZW50KGltYWdlKSA9PSA4KTsK
LQotICAgIENHQml0bWFwSW5mbyBpbWFnZUluZm8gPSBDR0ltYWdlR2V0Qml0bWFwSW5mbyhpbWFn
ZSk7Ci0gICAgaWYgKCEoaW1hZ2VJbmZvICYga0NHQml0bWFwQnl0ZU9yZGVyMzJMaXR0bGUpIHx8
IChpbWFnZUluZm8gJiBrQ0dCaXRtYXBBbHBoYUluZm9NYXNrKSAhPSBrQ0dJbWFnZUFscGhhUHJl
bXVsdGlwbGllZEZpcnN0KSB7Ci0gICAgICAgIC8vIEZJWE1FOiBDb25zaWRlciBiZWluZyBhYmxl
IHRvIGhhbmRsZSBvdGhlciBwaXhlbCBmb3JtYXRzLgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHNpemVfdCB3aWR0aCA9
IENHSW1hZ2VHZXRXaWR0aChpbWFnZSk7Ci0gICAgc2l6ZV90IGhlaWdodCA9IENHSW1hZ2VHZXRI
ZWlnaHQoaW1hZ2UpOwotICAgIHNpemVfdCBieXRlc1BlclJvdyA9IENHSW1hZ2VHZXRCeXRlc1Bl
clJvdyhpbWFnZSk7Ci0KLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBwcm92aWRlciA9IGFkb3B0
Q0YoQ0dEYXRhUHJvdmlkZXJDb3B5RGF0YShDR0ltYWdlR2V0RGF0YVByb3ZpZGVyKGltYWdlKSkp
OwotICAgIGNvbnN0IFVJbnQ4KiBkYXRhID0gQ0ZEYXRhR2V0Qnl0ZVB0cihwcm92aWRlci5nZXQo
KSk7Ci0KLSAgICAvLyBPdmVybGF5IGEgZ3JpZCBvZiBzYW1wbGluZyBkb3RzIG9uIHRvcCBvZiBh
IGdyYXlzY2FsZSB2ZXJzaW9uIG9mIHRoZSBpbWFnZS4KLSAgICAvLyBGb3IgdGhlIGludGVyaW9y
IHBvaW50cywgY2FsY3VsYXRlIHRoZSBkaWZmZXJlbmNlIGluIGx1bWluYW5jZSBhbW9uZyB0aGUg
c2FtcGxlIHBvaW50Ci0gICAgLy8gYW5kIGl0cyBzdXJyb3VuZHMgcG9pbnRzLCBzY2FsZWQgYnkg
dHJhbnNwYXJlbmN5LgotICAgIGNvbnN0IHVuc2lnbmVkIHNhbXBsZVJvd3MgPSA3OwotICAgIGNv
bnN0IHVuc2lnbmVkIHNhbXBsZUNvbHMgPSA3OwotICAgIC8vIEZJWE1FOiBSZWZpbmUgdGhlIHBy
b3BlciBudW1iZXIgb2Ygc2FtcGxlcywgYW5kIGFjY29tbW9kYXRlIGRpZmZlcmVudCBhc3BlY3Qg
cmF0aW9zLgotICAgIGlmICh3aWR0aCA8IHNhbXBsZUNvbHMgfHwgaGVpZ2h0IDwgc2FtcGxlUm93
cykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gRW5zdXJlIHRoYXQgdGhlIGxhc3Qg
cm93L2NvbHVtbiBsYW5kIG9uIHRoZSBpbWFnZSBwZXJpbWV0ZXIuCi0gICAgY29uc3QgZmxvYXQg
c3RyaWRlV2lkdGggPSBzdGF0aWNfY2FzdDxmbG9hdD4od2lkdGggLSAxKSAvIChzYW1wbGVDb2xz
IC0gMSk7Ci0gICAgY29uc3QgZmxvYXQgc3RyaWRlSGVpZ2h0ID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+
KGhlaWdodCAtIDEpIC8gKHNhbXBsZVJvd3MgLSAxKTsKLSAgICBmbG9hdCBzYW1wbGVzW3NhbXBs
ZVJvd3NdW3NhbXBsZUNvbHNdOwotCi0gICAgLy8gRmluZCB0aGUgbHVtaW5hbmNlIG9mIHRoZSBz
YW1wbGUgcG9pbnRzLgotICAgIGZsb2F0IHkgPSAwOwotICAgIGNvbnN0IFVJbnQ4KiByb3cgPSBk
YXRhOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzYW1wbGVSb3dzOyArK2kpIHsKLSAg
ICAgICAgZmxvYXQgeCA9IDA7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGogPCBzYW1w
bGVDb2xzOyArK2opIHsKLSAgICAgICAgICAgIGNvbnN0IFVJbnQ4KiBwMCA9IHJvdyArIChzdGF0
aWNfY2FzdDxpbnQ+KHggKyAuNSkpICogNDsKLSAgICAgICAgICAgIC8vIFIgRyBCIEEKLSAgICAg
ICAgICAgIHNhbXBsZXNbaV1bal0gPSAoMC4yMTI1ICogKnAwICsgMC43MTU0ICogKihwMCsxKSAr
IDAuMDcyMSAqICoocDArMikpICogKihwMCszKSAvIDI1NTsKLSAgICAgICAgICAgIHggKz0gc3Ry
aWRlV2lkdGg7Ci0gICAgICAgIH0KLSAgICAgICAgeSArPSBzdHJpZGVIZWlnaHQ7Ci0gICAgICAg
IHJvdyA9IGRhdGEgKyAoc3RhdGljX2Nhc3Q8aW50Pih5ICsgLjUpKSAqIGJ5dGVzUGVyUm93Owot
ICAgIH0KLQotICAgIC8vIERldGVybWluZSB0aGUgaW1hZ2Ugc2NvcmUuCi0gICAgZmxvYXQgYWNj
dW1TY29yZSA9IDA7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IHNhbXBsZVJvd3MgLSAx
OyArK2kpIHsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMTsgaiA8IHNhbXBsZUNvbHMgLSAx
OyArK2opIHsKLSAgICAgICAgICAgIGZsb2F0IGRpZmYgPSBzYW1wbGVzW2kgLSAxXVtqXSArIHNh
bXBsZXNbaSArIDFdW2pdICsgc2FtcGxlc1tpXVtqIC0gMV0gKyBzYW1wbGVzW2ldW2ogKyAxXSAt
IDQgKiBzYW1wbGVzW2ldW2pdOwotICAgICAgICAgICAgYWNjdW1TY29yZSArPSBkaWZmICogZGlm
ZjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8vIFRoZSBzY29yZSBmb3IgYSBnaXZlbiBzYW1w
bGUgY2FuIGJlIHdpdGhpbiB0aGUgcmFuZ2Ugb2YgMCBhbmQgMjU1XjIuCi0gICAgcmV0dXJuIGFj
Y3VtU2NvcmUgPCAyNTAwICogKHNhbXBsZVJvd3MgLSAyKSAqIChzYW1wbGVDb2xzIC0gMik7Ci19
Ci0jZW5kaWYKLQogdm9pZCBQbHVnaW5WaWV3OjpwbHVnaW5TbmFwc2hvdFRpbWVyRmlyZWQoKQog
ewogI2lmIEVOQUJMRShQUklNQVJZX1NOQVBTSE9UVEVEX1BMVUdJTl9IRVVSSVNUSUMpCkBAIC0x
ODA5LDcgKzE3NDYsNyBAQCB2b2lkIFBsdWdpblZpZXc6OnBsdWdpblNuYXBzaG90VGltZXJGaXJl
ZCgpCiAKICAgICAgICAgaWYgKHNuYXBzaG90SW1hZ2UpIHsKICNpZiBFTkFCTEUoUFJJTUFSWV9T
TkFQU0hPVFRFRF9QTFVHSU5fSEVVUklTVElDKQotICAgICAgICAgICAgYm9vbCBzbmFwc2hvdElz
QWxtb3N0U29saWRDb2xvciA9IGlzQWxtb3N0U29saWRDb2xvcihkb3duY2FzdDxCaXRtYXBJbWFn
ZT4oc25hcHNob3RJbWFnZS5nZXQoKSkpOworICAgICAgICAgICAgYm9vbCBzbmFwc2hvdElzQWxt
b3N0U29saWRDb2xvciA9IHN0YXRpY19wb2ludGVyX2Nhc3Q8Qml0bWFwSW1hZ2U+KHNuYXBzaG90
SW1hZ2UpLT5pc0FsbW9zdFNvbGlkQ29sb3IoKTsKICAgICAgICAgICAgIHNuYXBzaG90Rm91bmQg
PSAhc25hcHNob3RJc0FsbW9zdFNvbGlkQ29sb3I7CiAjZW5kaWYKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>283565</attachid>
            <date>2016-07-13 14:32:10 -0700</date>
            <delta_ts>2016-07-13 14:50:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159721-20160713143125.patch</filename>
            <type>text/plain</type>
            <size>175745</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzMTc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDQ0NWVjM2I5YjY1NzYy
OGNlYTM4MTkyYzdkMDJlN2YwMjIyNzRmOS4uMWE3NjVhOGMwNjFiZGE2MWJmM2NmOGU2ZDlmMGU2
NmJmZDdiNDU4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3NSBAQAorMjAxNi0wNy0xMyAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorIAorICAgICAgICBHZXQg
cmlkIG9mIHRoZSBtX3ByZW11bHRpcGx5QWxwaGEgZmxhZyBvZiB0aGUgSW1hZ2VGcmFtZSBjbGFz
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5NzIx
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBm
bGFnIHdhcyBvbmx5IG5lZWRlZCB3aGVuIGNhbGxpbmcgQml0bWFwUGl4ZWxzOjpzZXRTaXplKCku
IEluc3RlYWQKKyAgICAgICAgd2UgY2FuIHBhc3MgdGhlIEltYWdlRGVjb2Rlcjo6bV9wcmVtdWx0
aXBseUFscGhhIHRvIEltYWdlRnJhbWU6OnNldFNpemUoKQorICAgICAgICB3aGljaCB3aWxsIHBh
c3MgaXQgdG8gQml0bWFwUGl4ZWxzOjpzZXRTaXplKCkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VG
cmFtZTo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OmNvcHlCaXRt
YXBEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6c2V0U2l6ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZURlY29kZXI6OmlzT3ZlclNpemUpOgorICAgICAgICAqIHBsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Qk1QSW1hZ2VEZWNvZGVyOjpmcmFtZUJ1ZmZlckF0SW5kZXgpOiBEZWxldGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpCTVBJbWFnZVJlYWRlcjo6ZGVjb2RlQk1QKToKKyAgICAgICAgKFdlYkNvcmU6
OkJNUEltYWdlUmVhZGVyOjpwcm9jZXNzSW5mb0hlYWRlcik6CisgICAgICAgICogcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHSUZJbWFnZURlY29kZXI6OmluaXRGcmFtZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpH
SUZJbWFnZURlY29kZXI6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SUNPSW1hZ2VE
ZWNvZGVyOjpzZXRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OklDT0ltYWdlRGVjb2Rlcjo6ZnJh
bWVDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpJQ09JbWFnZURlY29kZXI6OnByb2Nlc3NEaXJl
Y3RvcnlFbnRyaWVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNP
SW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9K
UEVHSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpQRUdJbWFnZURlY29kZXI6
OnNldFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6SlBFR0ltYWdlRGVjb2Rlcjo6ZnJhbWVCdWZm
ZXJBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkpQRUdJbWFnZURlY29kZXI6Om91dHB1dFNj
YW5saW5lcyk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1h
Z2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0lt
YWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQTkdJbWFnZURlY29kZXI6OnNldFNp
emUpOgorICAgICAgICAoV2ViQ29yZTo6UE5HSW1hZ2VEZWNvZGVyOjpmcmFtZUJ1ZmZlckF0SW5k
ZXgpOgorICAgICAgICAoV2ViQ29yZTo6UE5HSW1hZ2VEZWNvZGVyOjpoZWFkZXJBdmFpbGFibGUp
OgorICAgICAgICAoV2ViQ29yZTo6UE5HSW1hZ2VEZWNvZGVyOjpyb3dBdmFpbGFibGUpOgorICAg
ICAgICAoV2ViQ29yZTo6UE5HSW1hZ2VEZWNvZGVyOjpyZWFkQ2h1bmtzKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICog
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OldFQlBJbWFnZURlY29kZXI6OmZyYW1lQnVmZmVyQXRJbmRleCk6CisgICAg
ICAgIChXZWJDb3JlOjpXRUJQSW1hZ2VEZWNvZGVyOjpkZWNvZGUpOgorCisyMDE2LTA3LTEzICBT
YWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgR2V0
IHJpZCBvZiB0aGUgY29sb3IgcHJvZmlsZSBmcm9tIEltYWdlRnJhbWUgYW5kIEltYWdlRGVjb2Rl
cgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5Njk5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VGcmFtZTo6c2V0Q29sb3JQcm9maWxlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6cmVhZENvbG9yUHJvZmlsZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpKUEVH
SW1hZ2VSZWFkZXI6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
anBlZy9KUEVHSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZWFkQ29sb3JQ
cm9maWxlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBOR0ltYWdlRGVjb2Rlcjo6aGVh
ZGVyQXZhaWxhYmxlKTogRGVsZXRlZC4KKworMjAxNi0wNy0xMyAgU2FpZCBBYm91LUhhbGxhd2Eg
IDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFNwbGl0IHRoZSBwaXhlbCBkYXRh
IG9mIEltYWdlRnJhbWUgdG8gYSBzZXBhcmF0ZSBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5Njc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSB0aGUgcGl4ZWwgZGF0YSBtYW5pcHVsYXRp
b24gcGFydCBpbiBJbWFnZUZyYW1lIGludG8gYSBzZXBhcmF0ZSBjbGFzcworICAgICAgICBhbmQg
dGhlbiBtYWtlIGl0IG9wdGlvbmFsIChhbGxvY2F0ZWQgb24gZGVtYW5kKS4KKworICAgICAgICAq
IENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFBsYXRmb3JtRWZsLmNtYWtlOgorICAgICAgICAq
IFBsYXRmb3JtR1RLLmNtYWtlOgorICAgICAgICAqIFBsYXRmb3JtV2luQ2Fpcm8uY21ha2U6Cisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0JpdG1hcFBpeGVscy5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkJpdG1hcFBpeGVsczo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFBpeGVsczo6
Qml0bWFwUGl4ZWxzKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFBpeGVsczo6d2lkdGgpOgor
ICAgICAgICAoV2ViQ29yZTo6Qml0bWFwUGl4ZWxzOjpoZWlnaHQpOgorICAgICAgICAoV2ViQ29y
ZTo6Qml0bWFwUGl4ZWxzOjpzZXRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFBpeGVs
czo6YXQpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwUGl4ZWxzOjpjbGVhcik6CisgICAgICAg
IChXZWJDb3JlOjpCaXRtYXBQaXhlbHM6OmNsZWFyUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpC
aXRtYXBQaXhlbHM6OnJlcGVhdEZpcnN0Um93KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFBp
eGVsczo6c2V0UkdCQSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBQaXhlbHM6Om92ZXJSR0JB
KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFBpeGVsczo6aW5Cb3VuZHMpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om11bHRpcGx5
MjU1KToKKyAgICAgICAgKFdlYkNvcmU6OmRpdmlkZTI1NSk6CisgICAgICAgIChXZWJDb3JlOjpk
aXZpZGVDZWlsKToKKyAgICAgICAgKFdlYkNvcmU6OnByZW11bHRpcGxpZWRDaGFubmVsKToKKyAg
ICAgICAgKFdlYkNvcmU6OnVucHJlbXVsdGlwbGllZENoYW5uZWwpOgorICAgICAgICAoV2ViQ29y
ZTo6bWFrZVByZW11bHRpcGxpZWRSR0JBKToKKyAgICAgICAgKFdlYkNvcmU6Om1ha2VVblByZW11
bHRpcGxpZWRSR0JBKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVEYXRhLmg6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUZyYW1lRGF0YTo6cGl4ZWxzKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJh
bWVEYXRhOjpoYXNQaXhlbHMpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0lt
YWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpvcGVyYXRvcj0p
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6Y2xlYXJQaXhlbERhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6emVyb0ZpbGxQaXhlbERhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VGcmFtZTo6emVyb0ZpbGxGcmFtZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VGcmFtZTo6Y29weUJpdG1hcERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFt
ZTo6c2V0U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpjb3B5Um93TlRpbWVz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OmFzTmV3TmF0aXZlSW1hZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VGcmFtZTo6c2V0UkdCQSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZy
YW1lOjpnZXRBZGRyKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6Omhhc1BpeGVsRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpvdmVyUkdCQSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUZyYW1lOjp3aWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1l
OjpoZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6Y29weVJvd05UaW1lcyk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpmaXhQb2ludFVuc2lnbmVk
TXVsdGlwbHkpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6ZGl2aWRl
MjU1KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1Q
SW1hZ2VSZWFkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qk1QSW1hZ2VSZWFkZXI6OmRlY29k
ZUJNUCk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvY2Fpcm8vQml0bWFwUGl4
ZWxzQ2Fpcm8uY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvY2Fpcm8vSW1hZ2VEZWNvZGVyQ2Fpcm8uY3BwLgorICAgICAgICAoV2ViQ29yZTo6
Qml0bWFwUGl4ZWxzOjppbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
Z2lmL0dJRkltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHSUZJbWFnZURlY29k
ZXI6OmhhdmVEZWNvZGVkUm93KToKKyAgICAgICAgKFdlYkNvcmU6OkdJRkltYWdlRGVjb2Rlcjo6
ZnJhbWVDb21wbGV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHSUZJbWFnZURlY29kZXI6OmluaXRG
cmFtZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVH
SW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNldFBpeGVsKToKKyAgICAgICAg
KFdlYkNvcmU6OkpQRUdJbWFnZURlY29kZXI6Om91dHB1dFNjYW5saW5lcyk6CisgICAgICAgICog
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpzZXRQaXhlbFJHQik6CisgICAgICAgIChXZWJDb3JlOjpzZXRQaXhlbFJHQkEp
OgorICAgICAgICAoV2ViQ29yZTo6c2V0UGl4ZWxQcmVtdWx0aXBsaWVkUkdCQSk6CisgICAgICAg
IChXZWJDb3JlOjpQTkdJbWFnZURlY29kZXI6OnJvd0F2YWlsYWJsZSk6CisgICAgICAgIChXZWJD
b3JlOjpQTkdJbWFnZURlY29kZXI6OmluaXRGcmFtZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3Jl
OjpQTkdJbWFnZURlY29kZXI6OmZyYW1lQ29tcGxldGUpOgorICAgICAgICAqIHBsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXRUJQSW1hZ2VEZWNvZGVyOjpkZWNvZGUpOgorCisyMDE2LTA3LTEzICBTYWlkIEFib3UtSGFs
bGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgU3BsaXQgdGhlIHBpeGVs
IGRhdGEgb2YgSW1hZ2VGcmFtZSB0byBhIHNlcGFyYXRlIGNsYXNzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTk2NzkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIHRoZSBwaXhlbCBkYXRhIG1hbmlw
dWxhdGlvbiBwYXJ0IGluIEltYWdlRnJhbWUgaW50byBhIHNlcGFyYXRlIGNsYXNzCisgICAgICAg
IGFuZCB0aGVuIG1ha2UgaXQgb3B0aW9uYWwgKGFsbG9jYXRlZCBvbiBkZW1hbmQpLgorCisgICAg
ICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAg
ICAgICogUGxhdGZvcm1HVEsuY21ha2U6CisgICAgICAgICogUGxhdGZvcm1XaW5DYWlyby5jbWFr
ZToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwUGl4ZWxzLmg6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6Qml0bWFwUGl4ZWxzOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwUGl4
ZWxzOjpCaXRtYXBQaXhlbHMpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwUGl4ZWxzOjp3aWR0
aCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBQaXhlbHM6OmhlaWdodCk6CisgICAgICAgIChX
ZWJDb3JlOjpCaXRtYXBQaXhlbHM6OnNldFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFw
UGl4ZWxzOjphdCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBQaXhlbHM6OmNsZWFyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkJpdG1hcFBpeGVsczo6Y2xlYXJSZWN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkJpdG1hcFBpeGVsczo6cmVwZWF0Rmlyc3RSb3cpOgorICAgICAgICAoV2ViQ29yZTo6Qml0
bWFwUGl4ZWxzOjpzZXRSR0JBKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFBpeGVsczo6b3Zl
clJHQkEpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwUGl4ZWxzOjppbkJvdW5kcyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bXVs
dGlwbHkyNTUpOgorICAgICAgICAoV2ViQ29yZTo6ZGl2aWRlMjU1KToKKyAgICAgICAgKFdlYkNv
cmU6OmRpdmlkZUNlaWwpOgorICAgICAgICAoV2ViQ29yZTo6cHJlbXVsdGlwbGllZENoYW5uZWwp
OgorICAgICAgICAoV2ViQ29yZTo6dW5wcmVtdWx0aXBsaWVkQ2hhbm5lbCk6CisgICAgICAgIChX
ZWJDb3JlOjptYWtlUHJlbXVsdGlwbGllZFJHQkEpOgorICAgICAgICAoV2ViQ29yZTo6bWFrZVVu
UHJlbXVsdGlwbGllZFJHQkEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZURhdGEuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlRnJhbWVEYXRhOjpwaXhlbHMpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VGcmFtZURhdGE6Omhhc1BpeGVscyk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6Om9wZXJh
dG9yPSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpjbGVhclBpeGVsRGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjp6ZXJvRmlsbFBpeGVsRGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUZyYW1lOjp6ZXJvRmlsbEZyYW1lUmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUZyYW1lOjpjb3B5Qml0bWFwRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUZyYW1lOjpzZXRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OmNvcHlSb3dO
VGltZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5o
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6YXNOZXdOYXRpdmVJbWFnZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpzZXRSR0JBKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlRnJhbWU6OmdldEFkZHIpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6aGFzUGl4
ZWxEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6Om92ZXJSR0JBKToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OndpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
RnJhbWU6OmhlaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpjb3B5Um93TlRp
bWVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OmZpeFBvaW50VW5z
aWduZWRNdWx0aXBseSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpk
aXZpZGUyNTUpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2Jt
cC9CTVBJbWFnZVJlYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCTVBJbWFnZVJlYWRlcjo6
ZGVjb2RlQk1QKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9CaXRt
YXBQaXhlbHNDYWlyby5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZURlY29kZXJDYWlyby5jcHAuCisgICAgICAgIChXZWJD
b3JlOjpCaXRtYXBQaXhlbHM6OmltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdJRkltYWdl
RGVjb2Rlcjo6aGF2ZURlY29kZWRSb3cpOgorICAgICAgICAoV2ViQ29yZTo6R0lGSW1hZ2VEZWNv
ZGVyOjpmcmFtZUNvbXBsZXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdJRkltYWdlRGVjb2Rlcjo6
aW5pdEZyYW1lQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVn
L0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0UGl4ZWwpOgorICAg
ICAgICAoV2ViQ29yZTo6SlBFR0ltYWdlRGVjb2Rlcjo6b3V0cHV0U2NhbmxpbmVzKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnNldFBpeGVsUkdCKToKKyAgICAgICAgKFdlYkNvcmU6OnNldFBpeGVs
UkdCQSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRQaXhlbFByZW11bHRpcGxpZWRSR0JBKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBOR0ltYWdlRGVjb2Rlcjo6cm93QXZhaWxhYmxlKToKKyAgICAgICAg
KFdlYkNvcmU6OlBOR0ltYWdlRGVjb2Rlcjo6aW5pdEZyYW1lQnVmZmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlBOR0ltYWdlRGVjb2Rlcjo6ZnJhbWVDb21wbGV0ZSk6CisgICAgICAgICogcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldFQlBJbWFnZURlY29kZXI6OmRlY29kZSk6CisKKzIwMTYtMDctMTEgIFNhaWQgQWJv
dS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLGNvbT4KKworICAgICAgICBSZW5hbWUgRnJh
bWVEYXRhIHRvIEltYWdlRnJhbWVEYXRhIGFuZCBtb3ZlIGl0IHRvIGEgc2VwYXJhdGUgZmlsZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1NDQ0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSBJbWFn
ZUZyYW1lRGF0YSB0byBhIHNlcGFyYXRlIGZpbGUgc28gaXQgY2FuIGJlIGNhY2hlZCBieSBJbWFn
ZVNvdXJjZQorICAgICAgICBhbmQgd2lsbCBzdGlsbCBiZSBjb25zdW1lZCBieSBCaXRtYXBJbWFn
ZS4gTWFrZSB0aGUgZGF0YSBtZW1iZXJzIG9mIEltYWdlRnJhbWVEYXRhCisgICAgICAgIGJlIHBy
aXZhdGUgYW5kIGFkZCBnZXR0ZXJzIHRvIHJldHVybiB0aGVpciB2YWx1ZXMuCisKKyAgICAgICAg
Tm8gbmV3IHRlc3RzIC0tIENvZGUgcmVmYWN0b3JpbmcsIG5vIGJlaGF2aW9yIGNoYW5nZS4KKwor
ICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmhhdmVGcmFtZUltYWdlQXRJbmRleCk6CisgICAgICAg
IChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZGVzdHJveURlY29kZWREYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OkJpdG1hcEltYWdlOjpkZXN0cm95RGVjb2RlZERhdGFJZk5lY2Vzc2FyeSk6CisgICAg
ICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Y2FjaGVGcmFtZSk6CisgICAgICAgIChXZWJDb3Jl
OjpCaXRtYXBJbWFnZTo6ZGF0YUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1h
Z2U6OmVuc3VyZUZyYW1lSXNDYWNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6
OmZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpmcmFt
ZUlzQ29tcGxldGVBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpmcmFt
ZUR1cmF0aW9uQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZnJhbWVI
YXNBbHBoYUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmZyYW1lT3Jp
ZW50YXRpb25BdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpzaW5nbGVQ
aXhlbFNvbGlkQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmlzQWxtb3N0
U29saWRDb2xvcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lRGF0YTo6RnJhbWVEYXRhKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lRGF0YTo6fkZyYW1lRGF0YSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZURhdGE6OnVzZWRGcmFtZUJ5dGVzKTogRGVsZXRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZVNvdXJjZTo6Y3JlYXRlRnJhbWVEYXRhQXRJbmRleCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VTb3VyY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pbWFnZUZy
YW1lRGF0YS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6Oklt
YWdlRnJhbWVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVEYXRhOjp+SW1hZ2VG
cmFtZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6OmNsZWFyU3ViSW1h
Z2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVEYXRhOjpjbGVhcik6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6c2luZ2xlUGl4ZWxTb2xpZENvbG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlRnJhbWVEYXRhOjppc0FsbW9zdFNvbGlkQ29sb3IpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ltYWdlRnJhbWVEYXRhLmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6OnN0YXR1cyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUZyYW1lRGF0YTo6aXNDb21wbGV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0
YTo6c2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6ZnJhbWVCeXRlcyk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6aW1hZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VGcmFtZURhdGE6Om9yaWVudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlRnJhbWVEYXRhOjpzdWJzYW1wbGluZ0xldmVsKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
RnJhbWVEYXRhOjpkdXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6
aGFzQWxwaGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6Omhhc0ltYWdlKToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVEYXRhOjpoYXNNZXRhZGF0YSk6CisKKzIwMTYt
MDYtMjQgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLGNvbT4KKworICAg
ICAgICBJbnRyb2R1Y2UgUGxhdGZvcm1JbWFnZSBhbmQgbWFrZSBpdCBpcyBhIHdyYXBwZXIgZm9y
IE5hdGl2ZUltYWdlUHRyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNTg2ODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGUgbWFpbiBwdXJwb3NlIG9mIHRoaXMgcmVmYWN0b3JpbmcgaXMgdG8gbW92ZSB0
aGUgcGxhdGZvcm0gaW1hZ2UgZGVwZW5kZW50CisgICAgICAgIGNvZGUgZnJvbSBCaXRtYXBJbWFn
ZSB0byBQbGF0Zm9ybUltYWdlLiBQbGF0Zm9ybUltYWdlIGlzIHJlc3BvbnNpYmxlIG9mIAorICAg
ICAgICBkcmF3aW5nIHRoZSBpbWFnZSBhbmQgYW5zd2VyaW5nIE5hdGl2ZUltYWdlUHRyIHF1ZXN0
aW9ucyB3aGVuIGFuIEltYWdlRGVjb2RlcgorICAgICAgICBpcyBub3QgYXZhaWxhYmxlLiBBcGFy
dCBmcm9tIGRyYXdpbmcgdGhlIGltYWdlLCB0aGUgcXVlcnkgZnVuY3Rpb25zIHdpbGwgYmUKKyAg
ICAgICAgY2FsbGVkIG9ubHkgd2hlbiBjb25zdHJ1Y3RpbmcgYSBGcmFtZURhdGEgc28gd2Ugd2ls
bCBrZWVwIGV2ZXJ5dGhpbmcgYXMgYQorICAgICAgICBOYXRpdmVJbWFnZVB0ci4gQnV0IHdlIHdp
bGwgY2FzdCB0aGUgTmF0aXZlSW1hZ2VQdHIgdG8gUGxhdGZvcm1JbWFnZSB3aGVuCisgICAgICAg
IGEgcGxhdGZvcm0gZGVwZW5kZW50IGZ1bmN0aW9uIGlzIG5lZWRlZC4KKworICAgICAgICBObyBu
ZXcgdGVzdHMgLS0gQ29kZSByZWZhY3RvcmluZywgbm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAg
ICAgICogUGxhdGZvcm1BcHBsZVdpbi5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFr
ZToKKyAgICAgICAgKiBQbGF0Zm9ybUdUSy5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybU1hYy5j
bWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybVdpbkNhaXJvLmNtYWtlOgorICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL0RP
TS5tbToKKyAgICAgICAgKC1bRE9NTm9kZSBnZXRQcmV2aWV3U25hcHNob3RJbWFnZTphbmRSZWN0
czpdKToKKyAgICAgICAgKiBwYWdlL21hYy9UZXh0SW5kaWNhdG9yV2luZG93Lm1tOgorICAgICAg
ICAoLVtXZWJUZXh0SW5kaWNhdG9yVmlldyBpbml0V2l0aEZyYW1lOnRleHRJbmRpY2F0b3I6bWFy
Z2luOm9mZnNldDpdKToKKyAgICAgICAgKGNyZWF0ZUNvbnRlbnRDcm9zc2ZhZGVBbmltYXRpb24p
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpC
aXRtYXBJbWFnZTo6ZGVzdHJveURlY29kZWREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1h
cEltYWdlOjpkZXN0cm95RGVjb2RlZERhdGFJZk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJDb3Jl
OjpCaXRtYXBJbWFnZTo6ZGF0YUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1h
Z2U6OmZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpu
YXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VP
ZlNpemUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3Vy
cmVudEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpmcmFtZXNOYXRpdmVJ
bWFnZXMpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OnNpbmdsZVBpeGVsU29saWRD
b2xvcik6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6aXNBbG1vc3RTb2xpZENvbG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVEYXRh
OjpGcmFtZURhdGEpOgorICAgICAgICBtX2hhc0FscGhhIGNhbiBiZSBpbml0aWFsaXplZCB3aXRo
IGZhbHNlIGJlY2F1c2UgaXQgaXMgYWNjZXNzZWQgb25seSBpbgorICAgICAgICBCaXRtYXBJbWFn
ZTo6ZnJhbWVIYXNBbHBoYUF0SW5kZXgoKSBhbmQgaXQgaXMgZ3VhcmRlZCBieSBtX2hhdmVNZXRh
ZGF0YS4KKyAgICAgICAgQm90aCBtX2hhdmVNZXRhZGF0YSBhbmQgbV9oYXNBbHBoYSBhcmUgc2V0
IGluIEJpdG1hcEltYWdlIGNvbnN0cnVjdG9yCisgICAgICAgIGFuZCBpbiBCaXRtYXBJbWFnZTo6
Y2FjaGVGcmFtZSgpLgorCisgICAgICAgIChXZWJDb3JlOjpGcmFtZURhdGE6On5GcmFtZURhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVEYXRhOjpjbGVhcik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpuYXRpdmVJbWFn
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6bmF0aXZlSW1hZ2VPZlNpemUpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2U6OmZyYW1lc05hdGl2ZUltYWdlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZTo6Z2V0Q0dJbWFnZVJlZik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZTo6Z2V0Rmlyc3RDR0ltYWdlUmVmT2ZTaXplKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlOjpnZXRDR0ltYWdlQXJyYXkpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL1BsYXRmb3JtSW1hZ2UuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9y
bUltYWdlOjpQbGF0Zm9ybUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtSW1hZ2U6
OmlzTmlsKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtSW1hZ2U6OmNnSW1hZ2VSZWYpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dXBkYXRlRGlzcGxheU1vZGUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtSW1hZ2VDYWlyby5jcHA6IFJlbmFt
ZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFn
ZUNhaXJvLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtSW1hZ2U6OmNsZWFyU3ViSW1h
Z2VzKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtSW1hZ2U6OnNpemUpOgorICAgICAgICAo
V2ViQ29yZTo6UGxhdGZvcm1JbWFnZTo6aGFzQWxwaGEpOgorICAgICAgICAoV2ViQ29yZTo6UGxh
dGZvcm1JbWFnZTo6c2luZ2xlUGl4ZWxTb2xpZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlBs
YXRmb3JtSW1hZ2U6OmlzQWxtb3N0U29saWRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpQbGF0
Zm9ybUltYWdlOjpzdWJzYW1wbGluZ1NjYWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
SW1hZ2U6OmRyYXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdl
Q0cuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5D
Ry5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXR0ZXJuOjpjcmVhdGVQbGF0Zm9ybVBhdHRlcm4p
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1BsYXRmb3JtSW1hZ2VDRy5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1JbWFnZTo6Y2xlYXJTdWJJbWFnZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1JbWFnZTo6c2l6ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybUltYWdlOjpoYXNBbHBoYSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUlt
YWdlOjpzaW5nbGVQaXhlbFNvbGlkQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1J
bWFnZTo6aXNBbG1vc3RTb2xpZENvbG9yKTogTW92ZWQgZnJvbSBQbHVnaW5WaWV3LmNwcCBzaW5j
ZSBQbGF0Zm9ybUltYWdlIGlzIHdoYXQgdGhpcyBmdW5jdGlvbiBiZWxvbmdzIHRvLgorICAgICAg
ICAoV2ViQ29yZTo6UGxhdGZvcm1JbWFnZTo6c3Vic2FtcGxpbmdTY2FsZSk6IFJldHVybnMgdGhl
IHN1Yi1zYW1wbGluZyBzY2FsZSBiYXNlZCBvbiB0aGUgY29udGV4dCBzY2FsaW5nLgorICAgICAg
ICAoV2ViQ29yZTo6UGxhdGZvcm1JbWFnZTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvVGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYS5tbToKKyAgICAgICAgKFRl
eHRUcmFja1JlcHJlc2VudGF0aW9uQ29jb2E6OnVwZGF0ZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6
OmdldFRJRkZSZXByZXNlbnRhdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6TW9j
a1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWM6OnVwZGF0ZVBsYXRmb3JtTGF5ZXIpOgorICAgICAgICAq
IHBsYXRmb3JtL3dpbi9EcmFnSW1hZ2VDR1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVh
dGVEcmFnSW1hZ2VGcm9tSW1hZ2UpOgorCiAyMDE2LTA3LTEzICBBbnR0aSBLb2l2aXN0byAgPGFu
dHRpQGFwcGxlLmNvbT4KIAogICAgICAgICB2MjogV2ViQ29udGVudCBjcmFzaCBkdWUgdG8gUkVM
RUFTRV9BU1NFUlQoIW1faW5Mb2FkUGVuZGluZ0ltYWdlcykgaW4gU3R5bGVSZXNvbHZlcjo6flN0
eWxlUmVzb2x2ZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IGEwZGU3Y2QyY2E1Mzc3ZDc2YTA4M2Ex
ODMwMGZhZDVmMDViNjFkYjcuLjI4OTk0NWNiYzI3OGY3NjQyYWI2ZDk5ODY4NjFhOWRlZDNiYmU1
YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNi0wNy0xMyAgU2FpZCBB
Ym91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUsY29tPgorCisgICAgICAgIEludHJvZHVj
ZSBQbGF0Zm9ybUltYWdlIGFuZCBtYWtlIGl0IGlzIGEgd3JhcHBlciBmb3IgTmF0aXZlSW1hZ2VQ
dHIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODY4
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTWlz
Yy9XZWJDYWNoZS5tbToKKyAgICAgICAgKCtbV2ViQ2FjaGUgaW1hZ2VGb3JVUkw6XSk6CisKIDIw
MTYtMDctMTMgIEVucmljYSBDYXN1Y2NpICA8ZW5yaWNhQGFwcGxlLmNvbT4KIAogICAgICAgICBV
cGRhdGUgc3VwcG9ydGVkIHBsYXRmb3JtcyBpbiB4Y2NvbmZpZyBmaWxlcyB0byBtYXRjaCB0aGUg
c2RrIG5hbWVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGI5NThkOTU5ZTY4MTUxMjk0N2QwODkyMWI3OWJlMDY4
ZDFhZjI0MTEuLjk3MTkxMDE2ZDQ1ZTUzNjY4NGI0NzM5OTIzZDQwYTc2YjZkOGZiYzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxNi0wNy0xMyAgU2FpZCBBYm91LUhhbGxhd2EgIDxz
YWJvdWhhbGxhd2FAYXBwbGUsY29tPgorCisgICAgICAgIEludHJvZHVjZSBQbGF0Zm9ybUltYWdl
IGFuZCBtYWtlIGl0IGlzIGEgd3JhcHBlciBmb3IgTmF0aXZlSW1hZ2VQdHIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODY4NAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL2Nn
L1dLSWNvbkRhdGFiYXNlQ0cuY3BwOgorICAgICAgICAoV0tJY29uRGF0YWJhc2VUcnlHZXRDR0lt
YWdlRm9yVVJMKToKKyAgICAgICAgKFdLSWNvbkRhdGFiYXNlVHJ5Q29weUNHSW1hZ2VBcnJheUZv
clVSTCk6CisgICAgICAgIEl0IHdhcyB0aGUgb25seSBwbGFjZSBpbiB0aGUgY29kZSB3aGljaCB1
c2VzIEJpdG1hcEltYWdlOjpnZXRDR0ltYWdlQXJyYXkoKS4KKyAgICAgICAgQ2FsbCBCaXRtYXBJ
bWFnZTo6ZnJhbWVzTmF0aXZlSW1hZ2VzKCkgaW5zdGVhZCBhbmQgZm9ybSB0aGUgcmV0dXJuZWQK
KyAgICAgICAgVmVjdG9yPE5hdGl2ZUltYWdlUHRyPiBidWlsZCB0aGUgQ0ZBcnJheVJlZi4KKyAg
ICAgICAgCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
bW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX3ByZXNlbnRhdGlvblNuYXBzaG90Rm9yUHJl
dmlld0l0ZW1Db250cm9sbGVyOl0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6cGx1Z2luU25hcHNob3RU
aW1lckZpcmVkKToKKyAgICAgICAgCisgICAgICAgIChXZWJLaXQ6OmlzQWxtb3N0U29saWRDb2xv
cik6IERlbGV0ZWQuCisgICAgICAgIE1vdmUgdGhlIHN0YXRpYyBmdW5jdGlvbiBpc0FsbW9zdFNv
bGlkQ29sb3IgdG8gUGxhdGZvcm1JbWFnZTo6aXNBbG1vc3RTb2xpZENvbG9yKCkuCisKIDIwMTYt
MDctMTMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJLaXQy
IHNob3VsZG4ndCBzaWduYWwgY3VzdG9tIHByb3RvY29sIGNsaWVudHMgZnJvbSB0aGUgTlNVUkxD
b25uZWN0aW9uIGxvYWRlciB0aHJlYWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDVhZmVhM2Ex
NGVlODZlODM0ZTAxZmY1ODUxNDNhOGYxMGRhYWNjMjAuLmIyYjI3OTBiODY0MTI3ZmJhMzU5Nzdm
ZTQ4NDE4NzE0NmQwN2E4ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0yMjI5LDYgKzIyMjks
NyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSVNPVlRUQ3Vl
LmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlQnVmZmVyLmNwcAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVEYXRh
LmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlT3JpZW50YXRpb24uY3BwCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW50
UG9pbnQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUFwcGxlV2luLmNt
YWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1BcHBsZVdpbi5jbWFrZQppbmRleCA1ZmY5OTFm
ZjdkYTMwOGJiOTE4MmVjZTNiZjEyMTczMGE1NDhkMjg3Li5iYWUzMWVhZjg2ZTdmY2E5MDU4MjUw
OTJhYTM4YTc4YzExZTQyMjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUFw
cGxlV2luLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQXBwbGVXaW4uY21ha2UK
QEAgLTU1LDcgKzU1LDYgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvY2Evd2luL1dlYlRpbGVkQmFja2luZ0xheWVyV2luLmNwcAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2NhL3dpbi9XS0NBQ0ZWaWV3TGF5ZXJUcmVlSG9zdC5jcHAKIAotICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvQ29sb3JDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9GbG9hdFBvaW50Q0cu
Y3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvRmxvYXRSZWN0Q0cuY3BwCkBAIC03NSw2ICs3
NCw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0aENH
LmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAKKyAgICBwbGF0Zm9y
bS9ncmFwaGljcy9jZy9QbGF0Zm9ybUltYWdlQ0cuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9U
cmFuc2Zvcm1hdGlvbk1hdHJpeENHLmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Q
bGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4
IDUxNDUwNGU2ZWMyNWFhNWU0M2I5OTM5OGQ1ZTM1Y2VlZWE3NjZhYTQuLjY0YWUxNzEwODlkY2Jm
MGNkNDViNzBhOWI4ZjcwZWZhOWZmZGVkYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1Bs
YXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCkBA
IC0xMjIsNyArMTIyLDYgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvUGxhdGZvcm1EaXNwbGF5LmNwcAogCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vQmFja2luZ1N0b3JlQmFja2VuZENhaXJvSW1wbC5jcHAKLSAgICBwbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0NhaXJvVXRpbGl0aWVzLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRD
YWlyby5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fpcm9IYXJmYnV6ek5H
LmNwcApAQCAtMTM0LDYgKzEzMyw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAg
IHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BhdGhDYWlyby5jcHAKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9QYXR0ZXJuQ2Fpcm8uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
UGxhdGZvcm1Db250ZXh0Q2Fpcm8uY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxh
dGZvcm1JbWFnZUNhaXJvLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3Jt
UGF0aENhaXJvLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1JlZlB0ckNhaXJvLmNw
cAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1RyYW5zZm9ybWF0aW9uTWF0cml4Q2Fpcm8u
Y3BwCkBAIC0xNzksOSArMTc5LDkgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MveDExL1BsYXRmb3JtRGlzcGxheVgxMS5jcHAKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy94MTEvWFVuaXF1ZVJlc291cmNlLmNwcAogCi0gICAgcGxhdGZvcm0vaW1hZ2Ut
ZW5jb2RlcnMvSlBFR0ltYWdlRW5jb2Rlci5jcHAKKyAgICBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9jYWlyby9CaXRtYXBQaXhlbHNDYWlyby5jcHAKIAotICAgIHBsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2NhaXJvL0ltYWdlRGVjb2RlckNhaXJvLmNwcAorICAgIHBsYXRmb3JtL2ltYWdlLWVuY29k
ZXJzL0pQRUdJbWFnZUVuY29kZXIuY3BwCiAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2VmbC9OZXR3
b3JrU3RhdGVOb3RpZmllckVmbC5jcHAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxh
dGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCA2
NDVhZGQxY2UzODg4OGIwNGQ0YTJkODlhZGEwYTdjNmRlMTk5ODZiLi5kMzFmNTcwNmE2OTU5YjIz
MWI1YmZiMjJmMDdkMTg0M2FlODYxYTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0
Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAt
MTAxLDcgKzEwMSw2IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vQmFja2luZ1N0b3JlQmFja2VuZENhaXJvSW1wbC5jcHAKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CYWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm9YMTEuY3BwCi0g
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5jcHAKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb1V0aWxpdGllcy5jcHAKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9GbG9hdFJlY3RDYWlyby5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9Gb250Q2Fpcm8uY3BwCkBAIC0xMTUsNiArMTE0LDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9T
T1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0aENhaXJvLmNwcAogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BhdHRlcm5DYWlyby5jcHAKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9QbGF0Zm9ybUNvbnRleHRDYWlyby5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9QbGF0Zm9ybUltYWdlQ2Fpcm8uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vUGxhdGZvcm1QYXRoQ2Fpcm8uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUmVm
UHRyQ2Fpcm8uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vVHJhbnNmb3JtYXRpb25N
YXRyaXhDYWlyby5jcHAKQEAgLTE0OSw3ICsxNDksNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NP
VVJDRVMKICAgICBwbGF0Zm9ybS9ndGsvVGVtcG9yYXJ5TGlua1N0dWJzLmNwcAogICAgIHBsYXRm
b3JtL2d0ay9Vc2VyQWdlbnRHdGsuY3BwCiAKLSAgICBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9j
YWlyby9JbWFnZURlY29kZXJDYWlyby5jcHAKKyAgICBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9j
YWlyby9CaXRtYXBQaXhlbHNDYWlyby5jcHAKIAogICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL2d0
ay9TRFBQcm9jZXNzb3JTY3JpcHRSZXNvdXJjZUd0ay5jcHAKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5j
bWFrZQppbmRleCA5ZjZmNDk2YjZjYzRlZjZlNGI3NGQ4NGFjMGFhOWRlYTU1YTAyMzdiLi40ZGRl
ZDMwODhmNGYzOTZmZWY0NDRlN2VlNjVjNjQxMDY1OGY1ODQxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1h
Yy5jbWFrZQpAQCAtMzk3LDcgKzM5Nyw2IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1dlYlN5c3RlbUJhY2tkcm9wTGF5ZXIubW0K
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9XZWJUaWxlZEJhY2tpbmdMYXllci5tbQog
Ci0gICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFwSW1hZ2VDRy5jcHAKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0Zsb2F0
UG9pbnRDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9GbG9hdFJlY3RDRy5jcHAKQEAg
LTQxNyw2ICs0MTYsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2NnL1BhdGhDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwCisg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGxhdGZvcm1JbWFnZUNHLmNwcAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL1N1YmltYWdlQ2FjaGVXaXRoVGltZXIuY3BwCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvVHJhbnNmb3JtYXRpb25NYXRyaXhDRy5jcHAKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvUGxhdGZvcm1XaW5DYWlyby5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3Jt
V2luQ2Fpcm8uY21ha2UKaW5kZXggMmM1NTNiMDU1MWRhZDY5YWExOTlkOTYwZjU1MjM0M2Q5MjBm
MDdiMy4uMzQyYWE5MjczMmZkOGY5MmU4NWNmYTYyNmQ1NTU3MGVmNjZiNmE2OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW5DYWlyby5jbWFrZQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybVdpbkNhaXJvLmNtYWtlCkBAIC0yMSw3ICsyMSw2IEBAIGxpc3QoQVBQRU5E
IFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4dC5jcHAKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybURpc3BsYXkuY3BwCiAKLSAgICBwbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0NhaXJvVXRpbGl0aWVzLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0Zs
b2F0UmVjdENhaXJvLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyby5j
cHAKQEAgLTM0LDYgKzMzLDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0aENhaXJvLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL1BhdHRlcm5DYWlyby5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0
Zm9ybUNvbnRleHRDYWlyby5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9y
bUltYWdlQ2Fpcm8uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1QYXRo
Q2Fpcm8uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUmVmUHRyQ2Fpcm8uY3BwCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vVHJhbnNmb3JtYXRpb25NYXRyaXhDYWlyby5jcHAK
QEAgLTQ2LDcgKzQ2LDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5jcHAKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy93aW4vU2ltcGxlRm9udERhdGFDYWlyb1dpbi5jcHAKIAotICAg
IHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdlRGVjb2RlckNhaXJvLmNwcAorICAg
IHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0JpdG1hcFBpeGVsc0NhaXJvLmNwcAogCiAg
ICAgcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb25TdHViLmNwcAogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
NGU3YzNhMjI5YTE2M2E1ZjVhNjBmNjMyYmVhMGUzN2FkMjM5NDBlMC4uY2NiMDcwYmUwOWJhYzE2
ZjVmOWZkMzE5YTgzMmM5NzgwOWIyMTE5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTQ4NSw3ICsxNDg1LDcgQEAKIAkJMzc1
Q0QyMzIxMTlENDNDODAwQTJBODU5IC8qIEh5cGhlbmF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzVDRDIzMTExOUQ0M0M4MDBBMkE4NTkgLyog
SHlwaGVuYXRpb24uaCAqLzsgfTsKIAkJMzc2RENDRTExM0I0Rjk2NjAwMkVCRUZDIC8qIFRleHRS
dW4uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzc2
RENDRTAxM0I0Rjk2NjAwMkVCRUZDIC8qIFRleHRSdW4uY3BwICovOyB9OwogCQkzNzc0QUJBNTBG
QTIxRUI0MDBBRDdERTkgLyogT3ZlcmxhcFRlc3RSZXF1ZXN0Q2xpZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzc0QUJBMzBGQTIxRUI0MDBBRDdE
RTkgLyogT3ZlcmxhcFRlc3RSZXF1ZXN0Q2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJMzc3QTNBOTAxNUVGQ0U5QjAwNTlGNUM3IC8qIEJp
dG1hcEltYWdlQ0cuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMzc3QTNBOEYxNUVGQ0U5QTAwNTlGNUM3IC8qIEJpdG1hcEltYWdlQ0cuY3BwICovOyB9
OworCQkzNzdBM0E5MDE1RUZDRTlCMDA1OUY1QzcgLyogUGxhdGZvcm1JbWFnZUNHLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3N0EzQThGMTVFRkNF
OUEwMDU5RjVDNyAvKiBQbGF0Zm9ybUltYWdlQ0cuY3BwICovOyB9OwogCQkzNzkxOUMyMzBCN0Qx
ODg2MDBBNTY5OTggLyogUG9zaXRpb25JdGVyYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzkxOUMyMTBCN0QxODg2MDBBNTY5OTggLyogUG9z
aXRpb25JdGVyYXRvci5jcHAgKi87IH07CiAJCTM3OTE5QzI0MEI3RDE4ODYwMEE1Njk5OCAvKiBQ
b3NpdGlvbkl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAzNzkxOUMyMjBCN0QxODg2MDBBNTY5OTggLyogUG9zaXRpb25JdGVyYXRvci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKCk7IH07IH07CiAJCTM3OTI5MTdBMTk4NUVGMzkw
MEY0QjY2MSAvKiBDcmVkZW50aWFsQmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMzc5MjkxNzgxOTg1RUYzOTAwRjRCNjYxIC8qIENyZWRlbnRpYWxC
YXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAg
LTIzMjQsMTAgKzIzMjQsMTQgQEAKIAkJNTNFRDNGREYxNjdBODhFNzAwNjc2MkU2IC8qIEpTSW50
ZXJuYWxTZXR0aW5nc0dlbmVyYXRlZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTNFRDNGREQxNjdBODhFNzAwNjc2MkU2IC8qIEpTSW50ZXJuYWxTZXR0
aW5nc0dlbmVyYXRlZC5oICovOyB9OwogCQk1M0VGNzY2QjE2NTMwQTYxMDA0Q0JFNDkgLyogU2V0
dGluZ3NNYWNyb3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUzRUY3NjZBMTY1MzBBNjEwMDRDQkU0OSAvKiBTZXR0aW5nc01hY3Jvcy5oICovOyB9Owog
CQk1M0VGNzY2QzE2NTMxOTk0MDA0Q0JFNDkgLyogU2V0dGluZ3NNYWNyb3MuaCBpbiBDb3B5IEdl
bmVyYXRlZCBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRUY3
NjZBMTY1MzBBNjEwMDRDQkU0OSAvKiBTZXR0aW5nc01hY3Jvcy5oICovOyB9OworCQk1NTA0RTRD
QjFEMzU1N0IyMDBGRTUwODggLyogQml0bWFwUGl4ZWxzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTA0RTRDQTFEMzU1MzJEMDBGRTUwODggLyogQml0
bWFwUGl4ZWxzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNTUwQTBCQzkwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTUwQTBCQzcwODVGNjAz
OTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuY3BwICovOyB9OwogCQk1NTBBMEJDQTA4NUY2MDM5
MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTUwQTBCQzgwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5h
bWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1
NTVCODdFQzFDQUFGMEFCMDAzNDk0MjUgLyogSW1hZ2VEZWNvZGVyQ0cuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTU1Qjg3RUExQ0FBRjBBQjAwMzQ5
NDI1IC8qIEltYWdlRGVjb2RlckNHLmNwcCAqLzsgfTsKIAkJNTU1Qjg3RUQxQ0FBRjBBQjAwMzQ5
NDI1IC8qIEltYWdlRGVjb2RlckNHLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1NTVCODdFQjFDQUFGMEFCMDAzNDk0MjUgLyogSW1hZ2VEZWNvZGVyQ0cu
aCAqLzsgfTsKKwkJNTU3NEYwODcxRDAyNzkwOTAwQjlGMTRDIC8qIFBsYXRmb3JtSW1hZ2UuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1NzRGMDg1MUQw
Mjc0NDQwMEI5RjE0QyAvKiBQbGF0Zm9ybUltYWdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTVDQkE2QTExRDFERjJFMTAwNDUxODYwIC8qIElt
YWdlRnJhbWVEYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDU1Q0JBNjlGMUQxREYyRTEwMDQ1MTg2MCAvKiBJbWFnZUZyYW1lRGF0YS5jcHAgKi87
IH07CisJCTU1Q0JBNkEyMUQxREYyRTEwMDQ1MTg2MCAvKiBJbWFnZUZyYW1lRGF0YS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTVDQkE2QTAxRDFERjJF
MTAwNDUxODYwIC8qIEltYWdlRnJhbWVEYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTcyQTdGMjExQzZFNTcxOTAwOUM2MTQ5IC8qIFNpbXVs
YXRlZENsaWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1NzJBN0YyMDFDNkU1NzE5MDA5QzYxNDkgLyogU2ltdWxhdGVkQ2xpY2suaCAqLzsgfTsKIAkJ
NTcyQTdGMjMxQzZFNUE2NjAwOUM2MTQ5IC8qIFNpbXVsYXRlZENsaWNrLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MkE3RjIyMUM2RTVBNjYwMDlD
NjE0OSAvKiBTaW11bGF0ZWRDbGljay5jcHAgKi87IH07CiAJCTU3RUY1RTYwMUQyMEM4MzkwMDE3
MUU2MCAvKiBUZXh0Q29kZWNSZXBsYWNlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTdFRjVFNUYxRDIwQzgzOTAwMTcxRTYwIC8qIFRleHRDb2Rl
Y1JlcGxhY2VtZW50LmggKi87IH07CkBAIC05MDYzLDcgKzkwNjcsNyBAQAogCQkzNzZEQ0NFMDEz
QjRGOTY2MDAyRUJFRkMgLyogVGV4dFJ1bi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBUZXh0UnVuLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzc3
MkIwOTUxNjUzNTg1NjAwMEE0OUNBIC8qIFBvcHVwT3BlbmluZ09ic2VydmVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBvcHVwT3BlbmluZ09ic2VydmVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3NzRBQkEzMEZBMjFFQjQwMEFEN0RFOSAvKiBPdmVybGFw
VGVzdFJlcXVlc3RDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT3Zl
cmxhcFRlc3RSZXF1ZXN0Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTM3
N0EzQThGMTVFRkNFOUEwMDU5RjVDNyAvKiBCaXRtYXBJbWFnZUNHLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJpdG1hcEltYWdlQ0cuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkzNzdBM0E4RjE1RUZDRTlBMDA1OUY1QzcgLyogUGxhdGZvcm1JbWFn
ZUNHLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBsYXRmb3JtSW1h
Z2VDRy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3OTE5QzIxMEI3RDE4ODYw
MEE1Njk5OCAvKiBQb3NpdGlvbkl0ZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBQb3NpdGlvbkl0ZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMzc5MTlDMjIwQjdEMTg4NjAwQTU2OTk4IC8qIFBvc2l0aW9uSXRlcmF0b3IuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBvc2l0aW9uSXRlcmF0b3IuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzc5MjkxNzgxOTg1RUYzOTAwRjRCNjYxIC8qIENy
ZWRlbnRpYWxCYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyZWRlbnRp
YWxCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05OTg5LDEwICs5OTkzLDE0
IEBACiAJCTUzRUQzRkRDMTY3QTg4RTcwMDY3NjJFNiAvKiBKU0ludGVybmFsU2V0dGluZ3NHZW5l
cmF0ZWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNJbnRlcm5h
bFNldHRpbmdzR2VuZXJhdGVkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTNF
RDNGREQxNjdBODhFNzAwNjc2MkU2IC8qIEpTSW50ZXJuYWxTZXR0aW5nc0dlbmVyYXRlZC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0ludGVybmFsU2V0dGluZ3NHZW5lcmF0
ZWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTNFRjc2NkExNjUzMEE2MTAwNENC
RTQ5IC8qIFNldHRpbmdzTWFjcm9zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNldHRpbmdzTWFjcm9zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU1MDRFNENB
MUQzNTUzMkQwMEZFNTA4OCAvKiBCaXRtYXBQaXhlbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQml0bWFw
UGl4ZWxzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU1MEEwQkM3MDg1RjYwMzkw
MDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFF1YWxpZmllZE5hbWUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJNTUwQTBCQzgw
ODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUXVhbGlmaWVkTmFtZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJNTU1Qjg3RUEx
Q0FBRjBBQjAwMzQ5NDI1IC8qIEltYWdlRGVjb2RlckNHLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdlRGVjb2RlckNHLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTU1Qjg3RUIxQ0FBRjBBQjAwMzQ5NDI1IC8qIEltYWdlRGVjb2RlckNHLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlRGVjb2RlckNHLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU1NzRGMDg1MUQwMjc0NDQwMEI5RjE0QyAvKiBQbGF0
Zm9ybUltYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtSW1hZ2UuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNTVDQkE2OUYxRDFERjJFMTAwNDUxODYwIC8qIEltYWdlRnJhbWVE
YXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdlRnJhbWVE
YXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTVDQkE2QTAxRDFERjJFMTAw
NDUxODYwIC8qIEltYWdlRnJhbWVEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEltYWdlRnJhbWVEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU1RDQw
OEY3MUE3QzYzMTgwMEM3ODQ1MCAvKiBTVkdJbWFnZUNsaWVudHMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU1ZHSW1hZ2VDbGllbnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTU3MkE3RjIwMUM2RTU3MTkwMDlDNjE0OSAvKiBTaW11bGF0ZWRDbGljay5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaW11bGF0ZWRDbGljay5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1NzJBN0YyMjFDNkU1QTY2MDA5QzYxNDkgLyogU2ltdWxh
dGVkQ2xpY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2ltdWxh
dGVkQ2xpY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjIwMjgsNyArMjIw
MzYsNiBAQAogCQlCMjc1MzUyOTBCMDUzODE0MDAyQ0U2NEYgLyogY2cgKi8gPSB7CiAJCQlpc2Eg
PSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTM3N0EzQThGMTVFRkNFOUEwMDU5RjVD
NyAvKiBCaXRtYXBJbWFnZUNHLmNwcCAqLywKIAkJCQkwRkNGMzMyMzBGMkI5NzE1MDA0QjY3OTUg
LyogQ29sb3JDRy5jcHAgKi8sCiAJCQkJQjI3NTM1MkIwQjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0
UG9pbnRDRy5jcHAgKi8sCiAJCQkJQjI3NTM1MkMwQjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0UmVj
dENHLmNwcCAqLywKQEAgLTIyMDU1LDYgKzIyMDYyLDcgQEAKIAkJCQlBODBBMzhGRDBFNTBDQzgy
MDBBMjVFQkMgLyogUGF0dGVybkNHLmNwcCAqLywKIAkJCQlCMjc1MzUzNjBCMDUzODE0MDAyQ0U2
NEYgLyogUERGRG9jdW1lbnRJbWFnZS5jcHAgKi8sCiAJCQkJQjI3NTM1MzcwQjA1MzgxNDAwMkNF
NjRGIC8qIFBERkRvY3VtZW50SW1hZ2UuaCAqLywKKwkJCQkzNzdBM0E4RjE1RUZDRTlBMDA1OUY1
QzcgLyogUGxhdGZvcm1JbWFnZUNHLmNwcCAqLywKIAkJCQkxRkM0MEZCODE2NTVDNTkxMDA0MEYy
OUUgLyogU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5jcHAgKi8sCiAJCQkJMUZDNDBGQjcxNjU1QzU5
MTAwNDBGMjlFIC8qIFN1YmltYWdlQ2FjaGVXaXRoVGltZXIuaCAqLywKIAkJCQlCMjc1MzUyQTBC
MDUzODE0MDAyQ0U2NEYgLyogVHJhbnNmb3JtYXRpb25NYXRyaXhDRy5jcHAgKi8sCkBAIC0yMjEy
Miw2ICsyMjEzMCw3IEBACiAJCQkJQkVGMjlFRTkxNzE1REQwOTAwQzRCNEM5IC8qIEF1ZGlvVHJh
Y2tQcml2YXRlLmggKi8sCiAJCQkJQTg5OTQzMjcwQjQyMzM4NzAwRDdDODAyIC8qIEJpdG1hcElt
YWdlLmNwcCAqLywKIAkJCQlBODk5NDMyNjBCNDIzMzg3MDBEN0M4MDIgLyogQml0bWFwSW1hZ2Uu
aCAqLywKKwkJCQk1NTA0RTRDQTFEMzU1MzJEMDBGRTUwODggLyogQml0bWFwUGl4ZWxzLmggKi8s
CiAJCQkJQ0RERTAyRTkxOEIzREZDNzAwQ0Y3RkYxIC8qIENETVNlc3Npb24uaCAqLywKIAkJCQlC
Mjc1MzUzODBCMDUzODE0MDAyQ0U2NEYgLyogQ29sb3IuY3BwICovLAogCQkJCUIyNzUzNTM5MEIw
NTM4MTQwMDJDRTY0RiAvKiBDb2xvci5oICovLApAQCAtMjIyMDYsNiArMjIyMTUsOCBAQAogCQkJ
CTQzRDI1OTc2MTNDODE2RjQwMDYwODU1OSAvKiBJbWFnZUJ1ZmZlci5jcHAgKi8sCiAJCQkJQjJB
MTBCOTEwQjM4MThCRDAwMDk5QUE0IC8qIEltYWdlQnVmZmVyLmggKi8sCiAJCQkJMjJCRDlGN0Qx
MzUzNjI1QzAwOUJEMTAyIC8qIEltYWdlQnVmZmVyRGF0YS5oICovLAorCQkJCTU1Q0JBNjlGMUQx
REYyRTEwMDQ1MTg2MCAvKiBJbWFnZUZyYW1lRGF0YS5jcHAgKi8sCisJCQkJNTVDQkE2QTAxRDFE
RjJFMTAwNDUxODYwIC8qIEltYWdlRnJhbWVEYXRhLmggKi8sCiAJCQkJQkM3RjQ0QTcwQjlFMzI0
RTAwQTlEMDgxIC8qIEltYWdlT2JzZXJ2ZXIuaCAqLywKIAkJCQlBODc0OEQ3NDEyQ0MzRjg5MDAx
RkJBNDEgLyogSW1hZ2VPcmllbnRhdGlvbi5jcHAgKi8sCiAJCQkJQTg3NDhENjYxMkNDMzc2MzAw
MUZCQTQxIC8qIEltYWdlT3JpZW50YXRpb24uaCAqLywKQEAgLTIyMjU1LDYgKzIyMjY2LDcgQEAK
IAkJCQkyRDUwMDJGQTFCNTZENzk5MDAyMEFBRjcgLyogUGF0aFV0aWxpdGllcy5oICovLAogCQkJ
CUE4RkE2RTVDMEU0Q0ZERUQwMEQ1Q0Y0OSAvKiBQYXR0ZXJuLmNwcCAqLywKIAkJCQlBOEZBNkU1
QjBFNENGREVEMDBENUNGNDkgLyogUGF0dGVybi5oICovLAorCQkJCTU1NzRGMDg1MUQwMjc0NDQw
MEI5RjE0QyAvKiBQbGF0Zm9ybUltYWdlLmggKi8sCiAJCQkJMDU2MkY5NjAxNTczRjg4RjAwMzFD
QTE2IC8qIFBsYXRmb3JtTGF5ZXIuaCAqLywKIAkJCQlDRUVGQ0Q3QjE5REIzM0RDMDAzODc2RDcg
LyogUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmggKi8sCiAJCQkJMDcyODQ3RTIxNkVCQzVC
MDAwNDNDRkE0IC8qIFBsYXRmb3JtVGV4dFRyYWNrLmggKi8sCkBAIC0yNjAyOCw2ICsyNjA0MCw3
IEBACiAJCQkJODVFNzExQjkwQUM1RDUzNTAwNTMyNzBGIC8qIERPTUhUTUxNYXBFbGVtZW50SW50
ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNTE1NzlGMEMwM0JCRDMwMDhCQjBFRSAvKiBE
T01IVE1MTWFycXVlZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNTE1NkVBMEMwM0I3
NDEwMDhCQjBFRSAvKiBET01IVE1MTWFycXVlZUVsZW1lbnRJbnRlcm5hbC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNTU3NEYwODcxRDAyNzkwOTAwQjlGMTRDIC8qIFBsYXRmb3JtSW1hZ2UuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTJERUM2NjU1MUM4MkQwNDEwMDk5ODQ2QSAvKiBET01IVE1MTWVkaWFF
bGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkyREVDNjY1MTFDODJEMDE2MDA5OTg0NkEgLyog
RE9NSFRNTE1lZGlhRWxlbWVudEludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NUJBNEQx
MzBBQTY4ODY4MDA4ODA1MkQgLyogRE9NSFRNTE1lbnVFbGVtZW50LmggaW4gSGVhZGVycyAqLywK
QEAgLTI2NDY5LDYgKzI2NDgyLDcgQEAKIAkJCQlEMzU5RDc4QTEyOUNBMjcxMDAwNkU1RDIgLyog
SFRNTERldGFpbHNFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEVBNzlGQTBBMTkxNkRG
MDBBOEVGNUYgLyogSFRNTERpcmVjdG9yeUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4
RUE3Q0I3MEExOTJCOUMwMEE4RUY1RiAvKiBIVE1MRGl2RWxlbWVudC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJNTVDQkE2QTIxRDFERjJFMTAwNDUxODYwIC8qIEltYWdlRnJhbWVEYXRhLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBOEVBNzlGNzBBMTkxNkRGMDBBOEVGNUYgLyogSFRNTERMaXN0RWxlbWVu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNGMTk4RTUwODI0NUU1OTAwMUU5QUJDIC8qIEhUTUxE
b2N1bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc3QjM4NjcxMjI4ODNFOTAwQjgxRkY4IC8q
IEhUTUxEb2N1bWVudFBhcnNlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yODM2OSw2ICsyODM4Myw3
IEBACiAJCQkJQjIyMjc5OTMwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0FuaW1hdGVNb3Rpb25FbGVt
ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyNzk5NTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZH
QW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3OTk4MEQw
MEJGMjIwMDcxQjc4MiAvKiBTVkdBbmltYXRpb25FbGVtZW50LmggaW4gSGVhZGVycyAqLywKKwkJ
CQk1NTA0RTRDQjFEMzU1N0IyMDBGRTUwODggLyogQml0bWFwUGl4ZWxzLmggaW4gSGVhZGVycyAq
LywKIAkJCQk0MzlEMzM0NTEzQTY5MTFDMDBDMjBGNEYgLyogU1ZHQW5pbWF0b3JGYWN0b3J5Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwOEZCM0Y4NDEzQkM3NTRDMDA5OUZDMTggLyogU1ZHQXR0cmli
dXRlVG9Qcm9wZXJ0eU1hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5OUMwRDAwQkYyMjAw
NzFCNzgyIC8qIFNWR0NpcmNsZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjk0MjEsNyAr
Mjk0MzYsNyBAQAogCQkJCUZEQzU0RjA0MTM5OUIwREEwMDhEOTExNyAvKiBCaXF1YWRGaWx0ZXJO
b2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZEMzE2MDI2MTJCMDI2NzYwMEMxQTM1OSAvKiBC
aXF1YWRQcm9jZXNzb3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTg5OTQzMjkwQjQyMzM4ODAw
RDdDODAyIC8qIEJpdG1hcEltYWdlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTM3N0EzQTkwMTVF
RkNFOUIwMDU5RjVDNyAvKiBCaXRtYXBJbWFnZUNHLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTM3
N0EzQTkwMTVFRkNFOUIwMDU5RjVDNyAvKiBQbGF0Zm9ybUltYWdlQ0cuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJOTc2RDZDNzgxMjJCOEEzRDAwMUZEMUY3IC8qIEJsb2IuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMkVERUYxRjMxMjFCMEVGQzAwNzI2REIyIC8qIEJsb2JEYXRhLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUUxRDMxQ0RDMTkxOTYwMjAwMDEwMDVBMyAvKiBCbG9iRGF0YUZpbGVSZWZl
cmVuY2UuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yOTc4NCw2ICsyOTc5OSw3IEBACiAJCQkJMkUy
RDk5RTgxMEUyQkMxQzAwNDk2MzM3IC8qIERPTUJsb2IubW0gaW4gU291cmNlcyAqLywKIAkJCQk4
NTA4OUNEODBBOThDNDI4MDBBMjc1QUEgLyogRE9NQ0RBVEFTZWN0aW9uLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJODVBQ0E5ODcwQTlCNTIwMzAwNjcxRTkwIC8qIERPTUNoYXJhY3RlckRhdGEubW0g
aW4gU291cmNlcyAqLywKKwkJCQk1NUNCQTZBMTFEMURGMkUxMDA0NTE4NjAgLyogSW1hZ2VGcmFt
ZURhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODUwODlDREEwQTk4QzQyODAwQTI3NUFBIC8q
IERPTUNvbW1lbnQubW0gaW4gU291cmNlcyAqLywKIAkJCQk5NzhEMDdCRTE0NUEwRjZDMDA5Njkw
OEQgLyogRE9NQ29yZUV4Y2VwdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NThDMzhBNjBB
QThGMjA0MDBCMTg3QTQgLyogRE9NQ291bnRlci5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET00ubW0gYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9vYmpjL0RPTS5tbQppbmRleCA0MDExZWEzZmQ4YzA0Njk3NGM1NWQ0OGUzOTZmMWI4
M2I4MWYzMzVkLi5hNWFjNGYwNWFlMzM5YThkNjQ3MDZjMTBmYzBmN2FmNDA0MjU2MjNjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTS5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTS5tbQpAQCAtNjA2LDcgKzYwNiw3IEBAIC0gKHZvaWQp
Z2V0UHJldmlld1NuYXBzaG90SW1hZ2U6KENHSW1hZ2VSZWYqKWNnSW1hZ2UgYW5kUmVjdHM6KE5T
QXJyYXkgKiopcmVjdHMKIAogICAgIGlmICh0ZXh0SW5kaWNhdG9yKSB7CiAgICAgICAgIGlmIChJ
bWFnZSogaW1hZ2UgPSB0ZXh0SW5kaWNhdG9yLT5jb250ZW50SW1hZ2UoKSkKLSAgICAgICAgICAg
ICpjZ0ltYWdlID0gKENHSW1hZ2VSZWYpQ0ZBdXRvcmVsZWFzZShDR0ltYWdlUmV0YWluKGltYWdl
LT5nZXRDR0ltYWdlUmVmKCkpKTsKKyAgICAgICAgICAgICpjZ0ltYWdlID0gaW1hZ2UtPm5hdGl2
ZUltYWdlKCkuYXV0b3JlbGVhc2UoKTsKICAgICB9CiAKICAgICBSZXRhaW5QdHI8TlNNdXRhYmxl
QXJyYXk+IHJlY3RBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvVGV4dEluZGljYXRvcldpbmRv
dy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1RleHRJbmRpY2F0b3JXaW5kb3cubW0KaW5k
ZXggMzY0YTlhODdjZTZmMDY2Mzk0OGI4ODQ2ZThlMmNlNmQxOTBmMjQ4OS4uYTc0ZGE4NWFjZWNh
M2M2Njk4ZGQxNTZhYjMxYTZjOTcxYTM1NGU2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9tYWMvVGV4dEluZGljYXRvcldpbmRvdy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L21hYy9UZXh0SW5kaWNhdG9yV2luZG93Lm1tCkBAIC0xNjIsOSArMTYyLDkgQEAgLSAoaW5zdGFu
Y2V0eXBlKWluaXRXaXRoRnJhbWU6KE5TUmVjdClmcmFtZSB0ZXh0SW5kaWNhdG9yOihQYXNzUmVm
UHRyPFRleHRJbmRpY2EKICAgICBjb250ZW50c0ltYWdlTG9naWNhbFNpemUuc2NhbGUoMSAvIF90
ZXh0SW5kaWNhdG9yLT5jb250ZW50SW1hZ2VTY2FsZUZhY3RvcigpKTsKICAgICBSZXRhaW5QdHI8
Q0dJbWFnZVJlZj4gY29udGVudHNJbWFnZTsKICAgICBpZiAoaW5kaWNhdG9yV2FudHNDb250ZW50
Q3Jvc3NmYWRlKCpfdGV4dEluZGljYXRvcikpCi0gICAgICAgIGNvbnRlbnRzSW1hZ2UgPSBfdGV4
dEluZGljYXRvci0+Y29udGVudEltYWdlV2l0aEhpZ2hsaWdodCgpLT5nZXRDR0ltYWdlUmVmKCk7
CisgICAgICAgIGNvbnRlbnRzSW1hZ2UgPSBfdGV4dEluZGljYXRvci0+Y29udGVudEltYWdlV2l0
aEhpZ2hsaWdodCgpLT5uYXRpdmVJbWFnZSgpOwogICAgIGVsc2UKLSAgICAgICAgY29udGVudHNJ
bWFnZSA9IF90ZXh0SW5kaWNhdG9yLT5jb250ZW50SW1hZ2UoKS0+Z2V0Q0dJbWFnZVJlZigpOwor
ICAgICAgICBjb250ZW50c0ltYWdlID0gX3RleHRJbmRpY2F0b3ItPmNvbnRlbnRJbWFnZSgpLT5u
YXRpdmVJbWFnZSgpOwogCiAgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBib3VuY2VMYXll
cnMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKIApAQCAtMjY1LDcg
KzI2NSw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8Q0FLZXlmcmFtZUFuaW1hdGlvbj4gY3JlYXRlQm91
bmNlQW5pbWF0aW9uKENGVGltZUludGVydmFsIGR1cmF0CiBzdGF0aWMgUmV0YWluUHRyPENBQmFz
aWNBbmltYXRpb24+IGNyZWF0ZUNvbnRlbnRDcm9zc2ZhZGVBbmltYXRpb24oQ0ZUaW1lSW50ZXJ2
YWwgZHVyYXRpb24sIFRleHRJbmRpY2F0b3ImIHRleHRJbmRpY2F0b3IpCiB7CiAgICAgUmV0YWlu
UHRyPENBQmFzaWNBbmltYXRpb24+IGNyb3NzZmFkZUFuaW1hdGlvbiA9IFtDQUJhc2ljQW5pbWF0
aW9uIGFuaW1hdGlvbldpdGhLZXlQYXRoOkAiY29udGVudHMiXTsKLSAgICBSZXRhaW5QdHI8Q0dJ
bWFnZVJlZj4gY29udGVudHNJbWFnZSA9IHRleHRJbmRpY2F0b3IuY29udGVudEltYWdlKCktPmdl
dENHSW1hZ2VSZWYoKTsKKyAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gY29udGVudHNJbWFnZSA9
IHRleHRJbmRpY2F0b3IuY29udGVudEltYWdlKCktPm5hdGl2ZUltYWdlKCk7CiAgICAgW2Nyb3Nz
ZmFkZUFuaW1hdGlvbiBzZXRUb1ZhbHVlOihpZCljb250ZW50c0ltYWdlLmdldCgpXTsKICAgICBb
Y3Jvc3NmYWRlQW5pbWF0aW9uIHNldEZpbGxNb2RlOmtDQUZpbGxNb2RlRm9yd2FyZHNdOwogICAg
IFtjcm9zc2ZhZGVBbmltYXRpb24gc2V0UmVtb3ZlZE9uQ29tcGxldGlvbjpOT107CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKaW5kZXggNDYw
ZDFiODU2Yjc3YjdjZjRlYzY4OTY1ODFiODMzZDNlN2Y5NzAxNC4uZmM2NDlkMTBhYWI5YzEzZmZm
MjkzMDU1YTcwN2NiNzQ1Mzc0NjkxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcApAQCAtNjgsMTUgKzY4LDEzIEBAIEJpdG1hcEltYWdl
OjpCaXRtYXBJbWFnZShOYXRpdmVJbWFnZVB0ciYmIGltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNl
cnZlcikKICAgICAsIG1faGF2ZUZyYW1lQ291bnQodHJ1ZSkKICAgICAsIG1fYW5pbWF0aW9uRmlu
aXNoZWRXaGVuQ2F0Y2hpbmdVcChmYWxzZSkKIHsKKyAgICBtX2ZyYW1lcy5yZXNlcnZlSW5pdGlh
bENhcGFjaXR5KDEpOworICAgIG1fZnJhbWVzLnVuY2hlY2tlZEFwcGVuZChXVEZNb3ZlKGltYWdl
KSk7CisgICAgCiAgICAgLy8gU2luY2Ugd2UgZG9uJ3QgaGF2ZSBhIGRlY29kZXIsIHdlIGNhbid0
IGZpZ3VyZSBvdXQgdGhlIGltYWdlIG9yaWVudGF0aW9uLgogICAgIC8vIFNldCBtX3NpemVSZXNw
ZWN0aW5nT3JpZW50YXRpb24gdG8gYmUgdGhlIHNhbWUgYXMgbV9zaXplIHNvIGl0J3Mgbm90IDB4
MC4KLSAgICBtX3NpemVSZXNwZWN0aW5nT3JpZW50YXRpb24gPSBtX3NpemUgPSBOYXRpdmVJbWFn
ZTo6c2l6ZShpbWFnZSk7CisgICAgbV9zaXplUmVzcGVjdGluZ09yaWVudGF0aW9uID0gbV9zaXpl
ID0gbV9mcmFtZXNbMF0uc2l6ZSgpOwogICAgIG1fZGVjb2RlZFNpemUgPSBtX3NpemUuYXJlYSgp
ICogNDsKLSAgICAKLSAgICBtX2ZyYW1lcy5ncm93KDEpOwotICAgIG1fZnJhbWVzWzBdLm1faGFz
QWxwaGEgPSBOYXRpdmVJbWFnZTo6aGFzQWxwaGEoaW1hZ2UpOwotICAgIG1fZnJhbWVzWzBdLm1f
aGF2ZU1ldGFkYXRhID0gdHJ1ZTsKLSAgICBtX2ZyYW1lc1swXS5tX2ltYWdlID0gV1RGTW92ZShp
bWFnZSk7CiB9CiAKIEJpdG1hcEltYWdlOjp+Qml0bWFwSW1hZ2UoKQpAQCAtMTA1LDcgKzEwMyw3
IEBAIGJvb2wgQml0bWFwSW1hZ2U6OmhhdmVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgp
CiAgICAgaWYgKGluZGV4ID49IG1fZnJhbWVzLnNpemUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgcmV0dXJuIG1fZnJhbWVzW2luZGV4XS5tX2ltYWdlOworICAgIHJldHVybiBtX2Zy
YW1lc1tpbmRleF0uaGFzSW1hZ2UoKTsKIH0KIAogYm9vbCBCaXRtYXBJbWFnZTo6aGFzU2luZ2xl
U2VjdXJpdHlPcmlnaW4oKSBjb25zdApAQCAtMTI1LDkgKzEyMyw3IEBAIHZvaWQgQml0bWFwSW1h
Z2U6OmRlc3Ryb3lEZWNvZGVkRGF0YShib29sIGRlc3Ryb3lBbGwpCiAgICAgICAgIC8vIFRoZSB1
bmRlcmx5aW5nIGZyYW1lIGlzbid0IGFjdHVhbGx5IGNoYW5naW5nICh3ZSdyZSBqdXN0IHRyeWlu
ZyB0bwogICAgICAgICAvLyBzYXZlIHRoZSBtZW1vcnkgZm9yIHRoZSBmcmFtZWJ1ZmZlciBkYXRh
KSwgc28gd2UgZG9uJ3QgbmVlZCB0byBjbGVhcgogICAgICAgICAvLyB0aGUgbWV0YWRhdGEuCi0g
ICAgICAgIHVuc2lnbmVkIGZyYW1lQnl0ZXMgPSBtX2ZyYW1lc1tpXS5tX2ZyYW1lQnl0ZXM7Ci0g
ICAgICAgIGlmIChtX2ZyYW1lc1tpXS5jbGVhcihmYWxzZSkpCi0gICAgICAgICAgICBmcmFtZUJ5
dGVzQ2xlYXJlZCArPSBmcmFtZUJ5dGVzOworICAgICAgICBmcmFtZUJ5dGVzQ2xlYXJlZCArPSBt
X2ZyYW1lc1tpXS5jbGVhcihJbWFnZUZyYW1lRGF0YTo6Q2FjaGluZzo6TWV0YWRhdGEpOwogICAg
IH0KIAogICAgIG1fc291cmNlLmNsZWFyKGRlc3Ryb3lBbGwsIGNsZWFyQmVmb3JlRnJhbWUsIGRh
dGEoKSwgbV9hbGxEYXRhUmVjZWl2ZWQpOwpAQCAtMTUwLDggKzE0Niw4IEBAIHZvaWQgQml0bWFw
SW1hZ2U6OmRlc3Ryb3lEZWNvZGVkRGF0YUlmTmVjZXNzYXJ5KGJvb2wgZGVzdHJveUFsbCkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgdW5zaWduZWQgYWxsRnJhbWVCeXRlcyA9IDA7Ci0gICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBtX2ZyYW1lcy5zaXplKCk7ICsraSkKLSAgICAgICAgYWxsRnJh
bWVCeXRlcyArPSBtX2ZyYW1lc1tpXS51c2VkRnJhbWVCeXRlcygpOworICAgIGZvciAoYXV0byYg
ZnJhbWUgOiBtX2ZyYW1lcykKKyAgICAgICAgYWxsRnJhbWVCeXRlcyArPSBmcmFtZS5mcmFtZUJ5
dGVzKCk7CiAKICAgICBpZiAoYWxsRnJhbWVCeXRlcyA+IGxhcmdlQW5pbWF0aW9uQ3V0b2ZmKSB7
CiAgICAgICAgIExPRyhJbWFnZXMsICJCaXRtYXBJbWFnZSAlcCBkZXN0cm95RGVjb2RlZERhdGFJ
Zk5lY2Vzc2FyeSBkZXN0cm95aW5nRGF0YTogYWxsRnJhbWVCeXRlcz0ldSBjdXRvZmY9JXUiLCB0
aGlzLCBhbGxGcmFtZUJ5dGVzLCBsYXJnZUFuaW1hdGlvbkN1dG9mZik7CkBAIC0xNzcsNyArMTcz
LDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZGVzdHJveU1ldGFkYXRhQW5kTm90aWZ5KHVuc2lnbmVk
IGZyYW1lQnl0ZXNDbGVhcmVkLCBDbGVhcmVkU28KICAgICAgICAgaW1hZ2VPYnNlcnZlcigpLT5k
ZWNvZGVkU2l6ZUNoYW5nZWQodGhpcywgLXNhZmVDYXN0PGludD4oZnJhbWVCeXRlc0NsZWFyZWQp
KTsKIH0KIAotdm9pZCBCaXRtYXBJbWFnZTo6Y2FjaGVGcmFtZShzaXplX3QgaW5kZXgsIFN1YnNh
bXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgSW1hZ2VGcmFtZUNhY2hpbmcgZnJhbWVDYWNo
aW5nKQordm9pZCBCaXRtYXBJbWFnZTo6Y2FjaGVGcmFtZShzaXplX3QgaW5kZXgsIFN1YnNhbXBs
aW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgSW1hZ2VGcmFtZURhdGE6OkNhY2hpbmcgY2FjaGlu
ZykKIHsKICAgICBzaXplX3QgbnVtRnJhbWVzID0gZnJhbWVDb3VudCgpOwogICAgIEFTU0VSVCht
X2RlY29kZWRTaXplID09IDAgfHwgbnVtRnJhbWVzID4gMSk7CkBAIC0xODUsMjUgKzE4MSwxMiBA
QCB2b2lkIEJpdG1hcEltYWdlOjpjYWNoZUZyYW1lKHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdM
ZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBJbQogICAgIGlmIChtX2ZyYW1lcy5zaXplKCkgPCBudW1G
cmFtZXMpCiAgICAgICAgIG1fZnJhbWVzLmdyb3cobnVtRnJhbWVzKTsKIAotICAgIGlmIChmcmFt
ZUNhY2hpbmcgPT0gQ2FjaGVNZXRhZGF0YUFuZEZyYW1lKSB7Ci0gICAgICAgIG1fZnJhbWVzW2lu
ZGV4XS5tX2ltYWdlID0gbV9zb3VyY2UuY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoaW5kZXgsIHN1
YnNhbXBsaW5nTGV2ZWwpOwotICAgICAgICBtX2ZyYW1lc1tpbmRleF0ubV9zdWJzYW1wbGluZ0xl
dmVsID0gc3Vic2FtcGxpbmdMZXZlbDsKLSAgICB9Ci0KLSAgICBtX2ZyYW1lc1tpbmRleF0ubV9v
cmllbnRhdGlvbiA9IG1fc291cmNlLm9yaWVudGF0aW9uQXRJbmRleChpbmRleCk7Ci0gICAgbV9m
cmFtZXNbaW5kZXhdLm1faGF2ZU1ldGFkYXRhID0gdHJ1ZTsKLSAgICBtX2ZyYW1lc1tpbmRleF0u
bV9pc0NvbXBsZXRlID0gbV9zb3VyY2UuZnJhbWVJc0NvbXBsZXRlQXRJbmRleChpbmRleCk7Cisg
ICAgbV9mcmFtZXNbaW5kZXhdID0gbV9zb3VyY2UuY3JlYXRlRnJhbWVEYXRhQXRJbmRleChpbmRl
eCwgc3Vic2FtcGxpbmdMZXZlbCwgY2FjaGluZyk7CiAKLSAgICBpZiAocmVwZXRpdGlvbkNvdW50
KGZhbHNlKSAhPSBjQW5pbWF0aW9uTm9uZSkKLSAgICAgICAgbV9mcmFtZXNbaW5kZXhdLm1fZHVy
YXRpb24gPSBtX3NvdXJjZS5mcmFtZUR1cmF0aW9uQXRJbmRleChpbmRleCk7CisgICAgTE9HKElt
YWdlcywgIkJpdG1hcEltYWdlICVwIGNhY2hlRnJhbWUgJWx1ICglcyV1IGJ5dGVzLCBjb21wbGV0
ZSAlZCkiLCB0aGlzLCBpbmRleCwgY2FjaGluZyA9PSBJbWFnZUZyYW1lRGF0YTo6Q2FjaGluZzo6
TWV0YWRhdGEgPyAibWV0YWRhdGEgb25seSwgIiA6ICIiLCBtX2ZyYW1lc1tpbmRleF0uZnJhbWVC
eXRlcygpLCBtX2ZyYW1lc1tpbmRleF0uaXNDb21wbGV0ZSgpKTsKIAotICAgIG1fZnJhbWVzW2lu
ZGV4XS5tX2hhc0FscGhhID0gbV9zb3VyY2UuZnJhbWVIYXNBbHBoYUF0SW5kZXgoaW5kZXgpOwot
ICAgIG1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lQnl0ZXMgPSBtX3NvdXJjZS5mcmFtZUJ5dGVzQXRJ
bmRleChpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCk7Ci0KLSAgICBMT0coSW1hZ2VzLCAiQml0bWFw
SW1hZ2UgJXAgY2FjaGVGcmFtZSAlbHUgKCVzJXUgYnl0ZXMsIGNvbXBsZXRlICVkKSIsIHRoaXMs
IGluZGV4LCBmcmFtZUNhY2hpbmcgPT0gQ2FjaGVNZXRhZGF0YU9ubHkgPyAibWV0YWRhdGEgb25s
eSwgIiA6ICIiLCBtX2ZyYW1lc1tpbmRleF0ubV9mcmFtZUJ5dGVzLCBtX2ZyYW1lc1tpbmRleF0u
bV9pc0NvbXBsZXRlKTsKLQotICAgIGlmIChtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZSkgewotICAg
ICAgICBpbnQgZGVsdGFCeXRlcyA9IHNhZmVDYXN0PGludD4obV9mcmFtZXNbaW5kZXhdLm1fZnJh
bWVCeXRlcyk7CisgICAgaWYgKG1fZnJhbWVzW2luZGV4XS5oYXNJbWFnZSgpKSB7CisgICAgICAg
IGludCBkZWx0YUJ5dGVzID0gc2FmZUNhc3Q8aW50PihtX2ZyYW1lc1tpbmRleF0uZnJhbWVCeXRl
cygpKTsKICAgICAgICAgbV9kZWNvZGVkU2l6ZSArPSBkZWx0YUJ5dGVzOwogICAgICAgICAvLyBU
aGUgZnVsbHktZGVjb2RlZCBmcmFtZSB3aWxsIHN1YnN1bWUgdGhlIHBhcnRpYWxseSBkZWNvZGVk
IGRhdGEgdXNlZAogICAgICAgICAvLyB0byBkZXRlcm1pbmUgaW1hZ2UgcHJvcGVydGllcy4KQEAg
LTI4OCwyMSArMjcxLDE5IEBAIGJvb2wgQml0bWFwSW1hZ2U6OmRhdGFDaGFuZ2VkKGJvb2wgYWxs
RGF0YVJlY2VpdmVkKQogICAgIC8vIGZyYW1lIGFmZmVjdGVkIGJ5IGFwcGVuZGluZyBuZXcgZGF0
YSBoZXJlLiBUaHVzIHdlIGhhdmUgdG8gY2xlYXIgYWxsIHRoZQogICAgIC8vIGluY29tcGxldGUg
ZnJhbWVzIHRvIGJlIHNhZmUuCiAgICAgdW5zaWduZWQgZnJhbWVCeXRlc0NsZWFyZWQgPSAwOwot
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9mcmFtZXMuc2l6ZSgpOyArK2kpIHsKKyAgICBm
b3IgKGF1dG8mIGZyYW1lIDogbV9mcmFtZXMpIHsKICAgICAgICAgLy8gTk9URTogRG9uJ3QgY2Fs
bCBmcmFtZUlzQ29tcGxldGVBdEluZGV4KCkgaGVyZSwgdGhhdCB3aWxsIHRyeSB0bwogICAgICAg
ICAvLyBkZWNvZGUgYW55IHVuY2FjaGVkIChpLmUuIG5ldmVyLWRlY29kZWQgb3IKICAgICAgICAg
Ly8gY2xlYXJlZC1vbi1hLXByZXZpb3VzLXBhc3MpIGZyYW1lcyEKLSAgICAgICAgdW5zaWduZWQg
ZnJhbWVCeXRlcyA9IG1fZnJhbWVzW2ldLm1fZnJhbWVCeXRlczsKLSAgICAgICAgaWYgKG1fZnJh
bWVzW2ldLm1faGF2ZU1ldGFkYXRhICYmICFtX2ZyYW1lc1tpXS5tX2lzQ29tcGxldGUpCi0gICAg
ICAgICAgICBmcmFtZUJ5dGVzQ2xlYXJlZCArPSAobV9mcmFtZXNbaV0uY2xlYXIodHJ1ZSkgPyBm
cmFtZUJ5dGVzIDogMCk7CisgICAgICAgIGlmIChmcmFtZS5oYXNNZXRhZGF0YSgpICYmICFmcmFt
ZS5pc0NvbXBsZXRlKCkpCisgICAgICAgICAgICBmcmFtZUJ5dGVzQ2xlYXJlZCArPSBmcmFtZS5j
bGVhcihJbWFnZUZyYW1lRGF0YTo6Q2FjaGluZzo6RW1wdHkpOwogICAgIH0KICAgICBkZXN0cm95
TWV0YWRhdGFBbmROb3RpZnkoZnJhbWVCeXRlc0NsZWFyZWQsIENsZWFyZWRTb3VyY2U6Ok5vKTsK
ICNlbHNlCiAgICAgLy8gRklYTUU6IHdoeSBpcyB0aGlzIGRpZmZlcmVudCBmb3IgaU9TPwogICAg
IGludCBkZWx0YUJ5dGVzID0gMDsKICAgICBpZiAoIW1fZnJhbWVzLmlzRW1wdHkoKSkgewotICAg
ICAgICBpbnQgYnl0ZXMgPSBtX2ZyYW1lc1ttX2ZyYW1lcy5zaXplKCkgLSAxXS5tX2ZyYW1lQnl0
ZXM7Ci0gICAgICAgIGlmIChtX2ZyYW1lc1ttX2ZyYW1lcy5zaXplKCkgLSAxXS5jbGVhcih0cnVl
KSkgeworICAgICAgICBpZiAoaW50IGJ5dGVzID0gbV9mcmFtZXNbbV9mcmFtZXMuc2l6ZSgpIC0g
MV0uY2xlYXIoSW1hZ2VGcmFtZURhdGE6OkNhY2hpbmc6OkVtcHR5KSkgewogICAgICAgICAgICAg
ZGVsdGFCeXRlcyArPSBieXRlczsKICAgICAgICAgICAgIGRlbHRhQnl0ZXMgKz0gbV9kZWNvZGVk
UHJvcGVydGllc1NpemU7CiAgICAgICAgICAgICBtX2RlY29kZWRQcm9wZXJ0aWVzU2l6ZSA9IDA7
CkBAIC0zNjYsMTUgKzM0NywxNSBAQCBib29sIEJpdG1hcEltYWdlOjppc1NpemVBdmFpbGFibGUo
KQogICAgIHJldHVybiBtX3NpemVBdmFpbGFibGU7CiB9CiAKLWJvb2wgQml0bWFwSW1hZ2U6OmVu
c3VyZUZyYW1lSXNDYWNoZWQoc2l6ZV90IGluZGV4LCBJbWFnZUZyYW1lQ2FjaGluZyBmcmFtZUNh
Y2hpbmcpCitib29sIEJpdG1hcEltYWdlOjplbnN1cmVGcmFtZUlzQ2FjaGVkKHNpemVfdCBpbmRl
eCwgSW1hZ2VGcmFtZURhdGE6OkNhY2hpbmcgY2FjaGluZykKIHsKICAgICBpZiAoaW5kZXggPj0g
ZnJhbWVDb3VudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoaW5kZXggPj0g
bV9mcmFtZXMuc2l6ZSgpCi0gICAgICAgIHx8IChmcmFtZUNhY2hpbmcgPT0gQ2FjaGVNZXRhZGF0
YUFuZEZyYW1lICYmICFtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZSkKLSAgICAgICAgfHwgKGZyYW1l
Q2FjaGluZyA9PSBDYWNoZU1ldGFkYXRhT25seSAmJiAhbV9mcmFtZXNbaW5kZXhdLm1faGF2ZU1l
dGFkYXRhKSkKLSAgICAgICAgY2FjaGVGcmFtZShpbmRleCwgMCwgZnJhbWVDYWNoaW5nKTsKKyAg
ICAgICAgfHwgKGNhY2hpbmcgPT0gSW1hZ2VGcmFtZURhdGE6OkNhY2hpbmc6Ok1ldGFkYXRhQW5k
SW1hZ2UgJiYgIW1fZnJhbWVzW2luZGV4XS5oYXNJbWFnZSgpKQorICAgICAgICB8fCAoY2FjaGlu
ZyA9PSBJbWFnZUZyYW1lRGF0YTo6Q2FjaGluZzo6TWV0YWRhdGEgJiYgIW1fZnJhbWVzW2luZGV4
XS5oYXNNZXRhZGF0YSgpKSkKKyAgICAgICAgY2FjaGVGcmFtZShpbmRleCwgMCwgY2FjaGluZyk7
CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTM4OCwxMCArMzY5LDkgQEAgTmF0aXZlSW1hZ2VQ
dHIgQml0bWFwSW1hZ2U6OmZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgZmxvYXQgcHJl
c2VudGF0aW9uU2MKIAogICAgIC8vIFdlIG1heSBoYXZlIGNhY2hlZCBhIGZyYW1lIHdpdGggYSBo
aWdoZXIgc3Vic2FtcGxpbmcgbGV2ZWwsIGluIHdoaWNoIGNhc2Ugd2UgbmVlZCB0bwogICAgIC8v
IHJlLWRlY29kZSB3aXRoIGEgbG93ZXIgbGV2ZWwuCi0gICAgaWYgKGluZGV4IDwgbV9mcmFtZXMu
c2l6ZSgpICYmIG1fZnJhbWVzW2luZGV4XS5tX2ltYWdlICYmIHN1YnNhbXBsaW5nTGV2ZWwgPCBt
X2ZyYW1lc1tpbmRleF0ubV9zdWJzYW1wbGluZ0xldmVsKSB7CisgICAgaWYgKGluZGV4IDwgbV9m
cmFtZXMuc2l6ZSgpICYmIG1fZnJhbWVzW2luZGV4XS5oYXNJbWFnZSgpICYmIHN1YnNhbXBsaW5n
TGV2ZWwgPCBtX2ZyYW1lc1tpbmRleF0uc3Vic2FtcGxpbmdMZXZlbCgpKSB7CiAgICAgICAgIC8v
IElmIHRoZSBpbWFnZSBpcyBhbHJlYWR5IGNhY2hlZCwgYnV0IGF0IHRvbyBzbWFsbCBhIHNpemUs
IHJlLWRlY29kZSBhIGxhcmdlciB2ZXJzaW9uLgotICAgICAgICBpbnQgc2l6ZUNoYW5nZSA9IC1t
X2ZyYW1lc1tpbmRleF0ubV9mcmFtZUJ5dGVzOwotICAgICAgICBtX2ZyYW1lc1tpbmRleF0uY2xl
YXIodHJ1ZSk7CisgICAgICAgIGludCBzaXplQ2hhbmdlID0gLW1fZnJhbWVzW2luZGV4XS5jbGVh
cihJbWFnZUZyYW1lRGF0YTo6Q2FjaGluZzo6RW1wdHkpOwogICAgICAgICBpbnZhbGlkYXRlUGxh
dGZvcm1EYXRhKCk7CiAgICAgICAgIG1fZGVjb2RlZFNpemUgKz0gc2l6ZUNoYW5nZTsKICAgICAg
ICAgaWYgKGltYWdlT2JzZXJ2ZXIoKSkKQEAgLTM5OSw0MCArMzc5LDcyIEBAIE5hdGl2ZUltYWdl
UHRyIEJpdG1hcEltYWdlOjpmcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIGZsb2F0IHBy
ZXNlbnRhdGlvblNjCiAgICAgfQogCiAgICAgLy8gSWYgd2UgaGF2ZW4ndCBmZXRjaGVkIGEgZnJh
bWUgeWV0LCBkbyBzby4KLSAgICBpZiAoaW5kZXggPj0gbV9mcmFtZXMuc2l6ZSgpIHx8ICFtX2Zy
YW1lc1tpbmRleF0ubV9pbWFnZSkKLSAgICAgICAgY2FjaGVGcmFtZShpbmRleCwgc3Vic2FtcGxp
bmdMZXZlbCwgQ2FjaGVNZXRhZGF0YUFuZEZyYW1lKTsKKyAgICBpZiAoaW5kZXggPj0gbV9mcmFt
ZXMuc2l6ZSgpIHx8ICFtX2ZyYW1lc1tpbmRleF0uaGFzSW1hZ2UoKSkKKyAgICAgICAgY2FjaGVG
cmFtZShpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCwgSW1hZ2VGcmFtZURhdGE6OkNhY2hpbmc6Ok1l
dGFkYXRhQW5kSW1hZ2UpOworCisgICAgcmV0dXJuIG1fZnJhbWVzW2luZGV4XS5pbWFnZSgpOwor
fQorICAgIAorTmF0aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6Om5hdGl2ZUltYWdlKCkKK3sKKyAg
ICByZXR1cm4gZnJhbWVJbWFnZUF0SW5kZXgoMCk7Cit9CisgICAgCitOYXRpdmVJbWFnZVB0ciBC
aXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VPZlNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKK3sKKyAg
ICBzaXplX3QgY291bnQgPSBmcmFtZUNvdW50KCk7CisgICAgCisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBjb3VudDsgKytpKSB7CisgICAgICAgIGF1dG8gaW1hZ2UgPSBmcmFtZUltYWdlQXRJ
bmRleChpKTsKKyAgICAgICAgaWYgKGltYWdlICYmIFBsYXRmb3JtSW1hZ2UoaW1hZ2UpLnNpemUo
KSA9PSBzaXplKQorICAgICAgICAgICAgcmV0dXJuIGltYWdlOworICAgIH0KKyAgICAKKyAgICAv
LyBGYWxsYmFjayB0byB0aGUgZmlyc3QgZnJhbWUgaW1hZ2UgaWYgd2UgY2FuJ3QgZmluZCB0aGUg
cmlnaHQgc2l6ZQorICAgIHJldHVybiBmcmFtZUltYWdlQXRJbmRleCgwKTsKK30KKyAgICAKK05h
dGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpCit7
CisgICAgcmV0dXJuIGZyYW1lSW1hZ2VBdEluZGV4KG1fY3VycmVudEZyYW1lKTsKK30KIAotICAg
IHJldHVybiBtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZTsKK1ZlY3RvcjxOYXRpdmVJbWFnZVB0cj4g
Qml0bWFwSW1hZ2U6OmZyYW1lc05hdGl2ZUltYWdlcygpCit7CisgICAgVmVjdG9yPE5hdGl2ZUlt
YWdlUHRyPiBpbWFnZXM7CisgICAgc2l6ZV90IGNvdW50ID0gZnJhbWVDb3VudCgpOworICAgIAor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgeworICAgICAgICBpZiAoYXV0
byBpbWFnZSA9IGZyYW1lSW1hZ2VBdEluZGV4KGkpKQorICAgICAgICAgICAgaW1hZ2VzLmFwcGVu
ZChpbWFnZSk7CisgICAgfQorICAgIAorICAgIHJldHVybiBpbWFnZXM7CiB9CiAKIGJvb2wgQml0
bWFwSW1hZ2U6OmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoc2l6ZV90IGluZGV4KQogewotICAgIGlm
ICghZW5zdXJlRnJhbWVJc0NhY2hlZChpbmRleCwgQ2FjaGVNZXRhZGF0YU9ubHkpKQorICAgIGlm
ICghZW5zdXJlRnJhbWVJc0NhY2hlZChpbmRleCwgSW1hZ2VGcmFtZURhdGE6OkNhY2hpbmc6Ok1l
dGFkYXRhKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIG1fZnJhbWVzW2lu
ZGV4XS5tX2lzQ29tcGxldGU7CisgICAgcmV0dXJuIG1fZnJhbWVzW2luZGV4XS5pc0NvbXBsZXRl
KCk7CiB9CiAKIGZsb2F0IEJpdG1hcEltYWdlOjpmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3Qg
aW5kZXgpCiB7Ci0gICAgaWYgKCFlbnN1cmVGcmFtZUlzQ2FjaGVkKGluZGV4LCBDYWNoZU1ldGFk
YXRhT25seSkpCisgICAgaWYgKCFlbnN1cmVGcmFtZUlzQ2FjaGVkKGluZGV4LCBJbWFnZUZyYW1l
RGF0YTo6Q2FjaGluZzo6TWV0YWRhdGEpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVy
biBtX2ZyYW1lc1tpbmRleF0ubV9kdXJhdGlvbjsKLX0KLQotTmF0aXZlSW1hZ2VQdHIgQml0bWFw
SW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkKLXsKLSAgICByZXR1cm4gZnJhbWVJ
bWFnZUF0SW5kZXgoY3VycmVudEZyYW1lKCkpOworICAgIHJldHVybiBtX2ZyYW1lc1tpbmRleF0u
ZHVyYXRpb24oKTsKIH0KIAogYm9vbCBCaXRtYXBJbWFnZTo6ZnJhbWVIYXNBbHBoYUF0SW5kZXgo
c2l6ZV90IGluZGV4KQogewotICAgIGlmICghZW5zdXJlRnJhbWVJc0NhY2hlZChpbmRleCwgQ2Fj
aGVNZXRhZGF0YU9ubHkpKQorICAgIGlmICghZW5zdXJlRnJhbWVJc0NhY2hlZChpbmRleCwgSW1h
Z2VGcmFtZURhdGE6OkNhY2hpbmc6Ok1ldGFkYXRhKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAK
LSAgICBpZiAobV9mcmFtZXNbaW5kZXhdLm1faGF2ZU1ldGFkYXRhKQotICAgICAgICByZXR1cm4g
bV9mcmFtZXNbaW5kZXhdLm1faGFzQWxwaGE7CisgICAgaWYgKG1fZnJhbWVzW2luZGV4XS5oYXNN
ZXRhZGF0YSgpKQorICAgICAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLmhhc0FscGhhKCk7CiAK
ICAgICByZXR1cm4gbV9zb3VyY2UuZnJhbWVIYXNBbHBoYUF0SW5kZXgoaW5kZXgpOwogfQpAQCAt
NDQ0LDExICs0NTYsMTEgQEAgYm9vbCBCaXRtYXBJbWFnZTo6Y3VycmVudEZyYW1lS25vd25Ub0Jl
T3BhcXVlKCkKIAogSW1hZ2VPcmllbnRhdGlvbiBCaXRtYXBJbWFnZTo6ZnJhbWVPcmllbnRhdGlv
bkF0SW5kZXgoc2l6ZV90IGluZGV4KQogewotICAgIGlmICghZW5zdXJlRnJhbWVJc0NhY2hlZChp
bmRleCwgQ2FjaGVNZXRhZGF0YU9ubHkpKQorICAgIGlmICghZW5zdXJlRnJhbWVJc0NhY2hlZChp
bmRleCwgSW1hZ2VGcmFtZURhdGE6OkNhY2hpbmc6Ok1ldGFkYXRhKSkKICAgICAgICAgcmV0dXJu
IEltYWdlT3JpZW50YXRpb24oKTsKIAotICAgIGlmIChtX2ZyYW1lc1tpbmRleF0ubV9oYXZlTWV0
YWRhdGEpCi0gICAgICAgIHJldHVybiBtX2ZyYW1lc1tpbmRleF0ubV9vcmllbnRhdGlvbjsKKyAg
ICBpZiAobV9mcmFtZXNbaW5kZXhdLmhhc01ldGFkYXRhKCkpCisgICAgICAgIHJldHVybiBtX2Zy
YW1lc1tpbmRleF0ub3JpZW50YXRpb24oKTsKIAogICAgIHJldHVybiBtX3NvdXJjZS5vcmllbnRh
dGlvbkF0SW5kZXgoaW5kZXgpOwogfQpAQCAtNzAwLDE3ICs3MTIsNTYgQEAgQ29sb3IgQml0bWFw
SW1hZ2U6OnNpbmdsZVBpeGVsU29saWRDb2xvcigpCiAgICAgICAgIHJldHVybiBDb2xvcigpOwog
ICAgIAogICAgIEFTU0VSVChtX2ZyYW1lcy5zaXplKCkpOwotICAgIG1fc29saWRDb2xvciA9IE5h
dGl2ZUltYWdlOjpzaW5nbGVQaXhlbFNvbGlkQ29sb3IobV9mcmFtZXNbMF0ubV9pbWFnZS5nZXQo
KSk7CisgICAgbV9zb2xpZENvbG9yID0gbV9mcmFtZXNbMF0uc2luZ2xlUGl4ZWxTb2xpZENvbG9y
KCk7CiAgICAgCiAgICAgQVNTRVJUKG1fc29saWRDb2xvcik7CiAgICAgcmV0dXJuIG1fc29saWRD
b2xvci52YWx1ZSgpOwogfQogICAgIAorYm9vbCBCaXRtYXBJbWFnZTo6aXNBbG1vc3RTb2xpZENv
bG9yKCkKK3sKKyAgICBpZiAoZnJhbWVDb3VudCgpICE9IDEpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIHJldHVybiBlbnN1cmVGcmFtZUlzQ2FjaGVkKDApICYmIG1fZnJhbWVzWzBdLmlz
QWxtb3N0U29saWRDb2xvcigpOworfQorICAgIAogYm9vbCBCaXRtYXBJbWFnZTo6Y2FuQW5pbWF0
ZSgpCiB7CiAgICAgcmV0dXJuIHNob3VsZEFuaW1hdGUoKSAmJiBmcmFtZUNvdW50KCkgPiAxOwog
fQogCit2b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3Np
dGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIG1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlv
biBkZXNjcmlwdGlvbikKK3sKKyAgICBpZiAoZGVzdFJlY3QuaXNFbXB0eSgpIHx8IHNyY1JlY3Qu
aXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyNpZiBQTEFURk9STShJT1MpCisgICAgc3Rh
cnRBbmltYXRpb24oRG9Ob3RDYXRjaFVwKTsKKyNlbHNlCisgICAgc3RhcnRBbmltYXRpb24oKTsK
KyNlbmRpZgorICAgIAorICAgIENvbG9yIGNvbG9yID0gc2luZ2xlUGl4ZWxTb2xpZENvbG9yKCk7
CisgICAgaWYgKGNvbG9yLmlzVmFsaWQoKSkgeworICAgICAgICBmaWxsV2l0aFNvbGlkQ29sb3Io
Y29udGV4dCwgZGVzdFJlY3QsIGNvbG9yLCBvcCk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgCisgICAgYXV0byBpbWFnZSA9IGZyYW1lSW1hZ2VBdEluZGV4KG1fY3VycmVudEZyYW1lLCBQ
bGF0Zm9ybUltYWdlOjpzdWJzYW1wbGluZ1NjYWxlKGNvbnRleHQsIGRlc3RSZWN0LCBzcmNSZWN0
KSk7CisgICAgaWYgKCFpbWFnZSkgLy8gSWYgaXQncyB0b28gZWFybHkgd2Ugd29uJ3QgaGF2ZSBh
biBpbWFnZSB5ZXQuCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBJbWFnZU9yaWVudGF0aW9u
IG9yaWVudGF0aW9uKGRlc2NyaXB0aW9uLmltYWdlT3JpZW50YXRpb24oKSk7CisgICAgaWYgKGRl
c2NyaXB0aW9uLnJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKCkgPT0gUmVzcGVjdEltYWdlT3JpZW50
YXRpb24pCisgICAgICAgIG9yaWVudGF0aW9uID0gZnJhbWVPcmllbnRhdGlvbkF0SW5kZXgobV9j
dXJyZW50RnJhbWUpOworICAgIAorICAgIFBsYXRmb3JtSW1hZ2UoaW1hZ2UpLmRyYXcoY29udGV4
dCwgZGVzdFJlY3QsIHNyY1JlY3QsIG1fc2l6ZSwgb3AsIG1vZGUsIG9yaWVudGF0aW9uKTsKKyAg
ICAKKyAgICBpZiAoaW1hZ2VPYnNlcnZlcigpKQorICAgICAgICBpbWFnZU9ic2VydmVyKCktPmRp
ZERyYXcodGhpcyk7Cit9CisgICAgCiB2b2lkIEJpdG1hcEltYWdlOjpkdW1wKFRleHRTdHJlYW0m
IHRzKSBjb25zdAogewogICAgIEltYWdlOjpkdW1wKHRzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCmluZGV4IDA3NTg5MjljZDg3ZmFkYWNmMDJi
NmVkOGVlYWZlN2RlZmQ2NmYwYzUuLjIyMThjODI0YjUyOGZkNjM5YmFiMTM4ZGVjYzk4Yjk4MTZh
MTY4MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1h
cEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1h
Z2UuaApAQCAtMjgsMTEgKzI4LDEzIEBACiAjaWZuZGVmIEJpdG1hcEltYWdlX2gKICNkZWZpbmUg
Qml0bWFwSW1hZ2VfaAogCi0jaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJDb2xvci5oIgor
I2luY2x1ZGUgIkltYWdlLmgiCisjaW5jbHVkZSAiSW1hZ2VGcmFtZURhdGEuaCIKICNpbmNsdWRl
ICJJbWFnZU9yaWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiSW1hZ2VTb3VyY2UuaCIKICNpbmNsdWRl
ICJJbnRTaXplLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1JbWFnZS5oIgogCiAjaWYgVVNFKENHKSB8
fCBVU0UoQVBQS0lUKQogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KQEAgLTQ3LDYzICs0OSw5
IEBAIHR5cGVkZWYgc3RydWN0IEhCSVRNQVBfXyAqSEJJVE1BUDsKICNlbmRpZgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0gICAgc3RydWN0IEZyYW1lRGF0YTsKLX0KLQotbmFtZXNwYWNlIFdURiB7
Ci0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgVmVjdG9yVHJhaXRzPFdlYkNvcmU6OkZyYW1lRGF0YT4g
OiBwdWJsaWMgU2ltcGxlQ2xhc3NWZWN0b3JUcmFpdHMgewotICAgICAgICBzdGF0aWMgY29uc3Qg
Ym9vbCBjYW5Jbml0aWFsaXplV2l0aE1lbXNldCA9IGZhbHNlOyAvLyBOb3QgYWxsIEZyYW1lRGF0
YSBtZW1iZXJzIGluaXRpYWxpemUgdG8gMC4KLSAgICB9OwotfQotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIFRpbWVyOwogCi1uYW1lc3BhY2UgTmF0aXZlSW1hZ2UgewotICAgIEludFNp
emUgc2l6ZShjb25zdCBOYXRpdmVJbWFnZVB0ciYpOwotICAgIGJvb2wgaGFzQWxwaGEoY29uc3Qg
TmF0aXZlSW1hZ2VQdHImKTsKLSAgICBDb2xvciBzaW5nbGVQaXhlbFNvbGlkQ29sb3IoY29uc3Qg
TmF0aXZlSW1hZ2VQdHImKTsKLX0KLQotLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0vLyBGcmFtZURhdGEgQ2xhc3MKLS8vID09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi1zdHJ1Y3QgRnJhbWVEYXRhIHsK
LXB1YmxpYzoKLSAgICBGcmFtZURhdGEoKQotICAgICAgICA6IG1faGF2ZU1ldGFkYXRhKGZhbHNl
KQotICAgICAgICAsIG1faXNDb21wbGV0ZShmYWxzZSkKLSAgICAgICAgLCBtX2hhc0FscGhhKHRy
dWUpCi0gICAgewotICAgIH0KLQotICAgIH5GcmFtZURhdGEoKQotICAgIHsgCi0gICAgICAgIGNs
ZWFyKHRydWUpOwotICAgIH0KLQotICAgIC8vIENsZWFyIHRoZSBjYWNoZWQgaW1hZ2UgZGF0YSBv
biB0aGUgZnJhbWUsIGFuZCAob3B0aW9uYWxseSkgdGhlIG1ldGFkYXRhLgotICAgIC8vIFJldHVy
bnMgd2hldGhlciB0aGVyZSB3YXMgY2FjaGVkIGltYWdlIGRhdGEgdG8gY2xlYXIuCi0gICAgYm9v
bCBjbGVhcihib29sIGNsZWFyTWV0YWRhdGEpOwotICAgIAotICAgIHVuc2lnbmVkIHVzZWRGcmFt
ZUJ5dGVzKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZSA/IG1fZnJhbWVCeXRlcyA6IDA7IH0KLQot
ICAgIE5hdGl2ZUltYWdlUHRyIG1faW1hZ2U7Ci0gICAgSW1hZ2VPcmllbnRhdGlvbiBtX29yaWVu
dGF0aW9uIHsgRGVmYXVsdEltYWdlT3JpZW50YXRpb24gfTsKLSAgICBTdWJzYW1wbGluZ0xldmVs
IG1fc3Vic2FtcGxpbmdMZXZlbCB7IDAgfTsKLSAgICBmbG9hdCBtX2R1cmF0aW9uIHsgMCB9Owot
ICAgIGJvb2wgbV9oYXZlTWV0YWRhdGEgOiAxOwotICAgIGJvb2wgbV9pc0NvbXBsZXRlIDogMTsK
LSAgICBib29sIG1faGFzQWxwaGEgOiAxOwotICAgIHVuc2lnbmVkIG1fZnJhbWVCeXRlcyB7IDAg
fTsKLX07Ci0KLS8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS8vIEJpdG1hcEltYWdlIENsYXNzCi0vLyA9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0KIGNsYXNzIEJpdG1hcEltYWdlIGZpbmFsIDogcHVi
bGljIEltYWdlIHsKICAgICBmcmllbmQgY2xhc3MgR2VuZXJhdGVkSW1hZ2U7CiAgICAgZnJpZW5k
IGNsYXNzIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOwpAQCAtMTU1LDEyICsxMDMsNiBAQCBwdWJs
aWM6CiAgICAgQ0ZEYXRhUmVmIGdldFRJRkZSZXByZXNlbnRhdGlvbigpIG92ZXJyaWRlOwogI2Vu
ZGlmCiAKLSNpZiBVU0UoQ0cpCi0gICAgV0VCQ09SRV9FWFBPUlQgQ0dJbWFnZVJlZiBnZXRDR0lt
YWdlUmVmKCkgb3ZlcnJpZGU7Ci0gICAgQ0dJbWFnZVJlZiBnZXRGaXJzdENHSW1hZ2VSZWZPZlNp
emUoY29uc3QgSW50U2l6ZSYpIG92ZXJyaWRlOwotICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBn
ZXRDR0ltYWdlQXJyYXkoKSBvdmVycmlkZTsKLSNlbmRpZgotCiAjaWYgUExBVEZPUk0oV0lOKQog
ICAgIGJvb2wgZ2V0SEJJVE1BUChIQklUTUFQKSBvdmVycmlkZTsKICAgICBib29sIGdldEhCSVRN
QVBPZlNpemUoSEJJVE1BUCwgY29uc3QgSW50U2l6ZSopIG92ZXJyaWRlOwpAQCAtMTc0LDggKzEx
NiwxMyBAQCBwdWJsaWM6CiAgICAgRXZhc19PYmplY3QqIGdldEV2YXNPYmplY3QoRXZhcyopIG92
ZXJyaWRlOwogI2VuZGlmCiAKKyAgICBXRUJDT1JFX0VYUE9SVCBOYXRpdmVJbWFnZVB0ciBuYXRp
dmVJbWFnZSgpIG92ZXJyaWRlOworICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlT2ZTaXpl
KGNvbnN0IEludFNpemUmKSBvdmVycmlkZTsKICAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFn
ZUZvckN1cnJlbnRGcmFtZSgpIG92ZXJyaWRlOwogICAgIEltYWdlT3JpZW50YXRpb24gb3JpZW50
YXRpb25Gb3JDdXJyZW50RnJhbWUoKSBvdmVycmlkZSB7IHJldHVybiBmcmFtZU9yaWVudGF0aW9u
QXRJbmRleChjdXJyZW50RnJhbWUoKSk7IH0KKyAgICBWZWN0b3I8TmF0aXZlSW1hZ2VQdHI+IGZy
YW1lc05hdGl2ZUltYWdlcygpIG92ZXJyaWRlOworICAgIAorICAgIFdFQkNPUkVfRVhQT1JUIGJv
b2wgaXNBbG1vc3RTb2xpZENvbG9yKCk7CiAKICAgICBib29sIGN1cnJlbnRGcmFtZUtub3duVG9C
ZU9wYXF1ZSgpIG92ZXJyaWRlOwogCkBAIC0yMTUsNyArMTYyLDYgQEAgcHJvdGVjdGVkOgogICAg
IHNpemVfdCBmcmFtZUNvdW50KCk7CiAKICAgICBOYXRpdmVJbWFnZVB0ciBmcmFtZUltYWdlQXRJ
bmRleChzaXplX3QsIGZsb2F0IHByZXNlbnRhdGlvblNjYWxlSGludCA9IDEpOwotICAgIE5hdGl2
ZUltYWdlUHRyIGNvcHlVbnNjYWxlZEZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCk7CiAKICAgICBi
b29sIGhhdmVGcmFtZUltYWdlQXRJbmRleChzaXplX3QpOwogCkBAIC0yMjUsMTEgKzE3MSwxMCBA
QCBwcm90ZWN0ZWQ6CiAgICAgSW1hZ2VPcmllbnRhdGlvbiBmcmFtZU9yaWVudGF0aW9uQXRJbmRl
eChzaXplX3QpOwogCiAgICAgLy8gRGVjb2RlcyBhbmQgY2FjaGVzIGEgZnJhbWUuIE5ldmVyIGFj
Y2Vzc2VkIGV4Y2VwdCBpbnRlcm5hbGx5LgotICAgIGVudW0gSW1hZ2VGcmFtZUNhY2hpbmcgeyBD
YWNoZU1ldGFkYXRhT25seSwgQ2FjaGVNZXRhZGF0YUFuZEZyYW1lIH07Ci0gICAgdm9pZCBjYWNo
ZUZyYW1lKHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCwgSW1hZ2VGcmFtZUNhY2hpbmcg
PSBDYWNoZU1ldGFkYXRhQW5kRnJhbWUpOworICAgIHZvaWQgY2FjaGVGcmFtZShzaXplX3QgaW5k
ZXgsIFN1YnNhbXBsaW5nTGV2ZWwsIEltYWdlRnJhbWVEYXRhOjpDYWNoaW5nID0gSW1hZ2VGcmFt
ZURhdGE6OkNhY2hpbmc6Ok1ldGFkYXRhQW5kSW1hZ2UpOwogCiAgICAgLy8gQ2FsbGVkIGJlZm9y
ZSBhY2Nlc3NpbmcgbV9mcmFtZXNbaW5kZXhdIGZvciBpbmZvIHdpdGhvdXQgZGVjb2RpbmcuIFJl
dHVybnMgZmFsc2Ugb24gaW5kZXggb3V0IG9mIGJvdW5kcy4KLSAgICBib29sIGVuc3VyZUZyYW1l
SXNDYWNoZWQoc2l6ZV90IGluZGV4LCBJbWFnZUZyYW1lQ2FjaGluZyA9IENhY2hlTWV0YWRhdGFB
bmRGcmFtZSk7CisgICAgYm9vbCBlbnN1cmVGcmFtZUlzQ2FjaGVkKHNpemVfdCBpbmRleCwgSW1h
Z2VGcmFtZURhdGE6OkNhY2hpbmcgPSBJbWFnZUZyYW1lRGF0YTo6Q2FjaGluZzo6TWV0YWRhdGFB
bmRJbWFnZSk7CiAKICAgICAvLyBDYWxsZWQgdG8gaW52YWxpZGF0ZSBjYWNoZWQgZGF0YS4gV2hl
biB8ZGVzdHJveUFsbHwgaXMgdHJ1ZSwgd2Ugd2lwZSBvdXQKICAgICAvLyB0aGUgZW50aXJlIGZy
YW1lIGJ1ZmZlciBjYWNoZSBhbmQgdGVsbCB0aGUgaW1hZ2Ugc291cmNlIHRvIGRlc3Ryb3kKQEAg
LTI5Miw3ICsyMzcsNyBAQCBwcml2YXRlOgogICAgIG11dGFibGUgSW50U2l6ZSBtX3NpemVSZXNw
ZWN0aW5nT3JpZW50YXRpb247CiAKICAgICBzaXplX3QgbV9jdXJyZW50RnJhbWUgeyAwIH07IC8v
IFRoZSBpbmRleCBvZiB0aGUgY3VycmVudCBmcmFtZSBvZiBhbmltYXRpb24uCi0gICAgVmVjdG9y
PEZyYW1lRGF0YSwgMT4gbV9mcmFtZXM7IC8vIEFuIGFycmF5IG9mIHRoZSBjYWNoZWQgZnJhbWVz
IG9mIHRoZSBhbmltYXRpb24uIFdlIGhhdmUgdG8gcmVmIGZyYW1lcyB0byBwaW4gdGhlbSBpbiB0
aGUgY2FjaGUuCisgICAgVmVjdG9yPEltYWdlRnJhbWVEYXRhLCAxPiBtX2ZyYW1lczsgLy8gQW4g
YXJyYXkgb2YgdGhlIGNhY2hlZCBmcmFtZXMgb2YgdGhlIGFuaW1hdGlvbi4gV2UgaGF2ZSB0byBy
ZWYgZnJhbWVzIHRvIHBpbiB0aGVtIGluIHRoZSBjYWNoZS4KIAogICAgIHN0ZDo6dW5pcXVlX3B0
cjxUaW1lcj4gbV9mcmFtZVRpbWVyOwogICAgIGludCBtX3JlcGV0aXRpb25Db3VudCB7IGNBbmlt
YXRpb25Ob25lIH07IC8vIEhvdyBtYW55IHRvdGFsIGFuaW1hdGlvbiBsb29wcyB3ZSBzaG91bGQg
ZG8uIFRoaXMgd2lsbCBiZSBjQW5pbWF0aW9uTm9uZSBpZiB0aGlzIGltYWdlIHR5cGUgaXMgaW5j
YXBhYmxlIG9mIGFuaW1hdGlvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0JpdG1hcFBpeGVscy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQml0bWFwUGl4ZWxzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWZhZTNkMmU0MGNjZjFkODFmNmJhNTdkYjY4
MmQ5MmQ0NjliYmFjMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0JpdG1hcFBpeGVscy5oCkBAIC0wLDAgKzEsMTgzIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSAiQ29sb3IuaCIKKyNpbmNsdWRlICJJbnRSZWN0LmgiCisjaW5jbHVkZSAiSW50U2l6ZS5oIgor
I2luY2x1ZGUgIk5hdGl2ZUltYWdlUHRyLmgiCisKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQml0bWFwUGl4ZWxzIHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEJpdG1hcFBpeGVscz4gY3JlYXRlKGNvbnN0IEludFNp
emUmIHNpemUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSkKKyAgICB7CisgICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPEJpdG1hcFBpeGVscz4oc2l6ZSwgcHJlbXVsdGlwbHlBbHBoYSk7Cisg
ICAgfQorCisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxCaXRtYXBQaXhlbHM+IGNyZWF0ZShj
b25zdCBCaXRtYXBQaXhlbHMmIG90aGVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8Qml0bWFwUGl4ZWxzPihvdGhlcik7CisgICAgfQorCisgICAgQml0bWFwUGl4ZWxz
KGNvbnN0IEludFNpemUmIHNpemUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSA9IHRydWUpCisgICAg
ICAgIDogbV9wcmVtdWx0aXBseUFscGhhKHByZW11bHRpcGx5QWxwaGEpCisgICAgeworICAgICAg
ICBBU1NFUlQoIXNpemUuaXNFbXB0eSgpKTsKKyAgICAgICAgc2V0U2l6ZShzaXplKTsKKyAgICB9
CisKKyAgICBCaXRtYXBQaXhlbHMoY29uc3QgQml0bWFwUGl4ZWxzJiBvdGhlcikKKyAgICB7Cisg
ICAgICAgIGlmICh0aGlzID09ICZvdGhlcikKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
CisgICAgICAgIG1fYmFja2luZ1N0b3JlID0gb3RoZXIubV9iYWNraW5nU3RvcmU7CisgICAgICAg
IG1fcGl4ZWxzID0gbV9iYWNraW5nU3RvcmUuZGF0YSgpOworICAgICAgICBtX3NpemUgPSBvdGhl
ci5tX3NpemU7CisgICAgICAgIG1fcmVjdCA9IG90aGVyLm1fcmVjdDsKKyAgICAgICAgbV9wcmVt
dWx0aXBseUFscGhhID0gb3RoZXIubV9wcmVtdWx0aXBseUFscGhhOworICAgIH0KKworICAgIE5h
dGl2ZUltYWdlUHRyIGltYWdlKCkgY29uc3Q7CisKKyAgICBib29sIHNldFNpemUoY29uc3QgSW50
U2l6ZSYgc2l6ZSkKKyAgICB7CisgICAgICAgIGlmICghbV9iYWNraW5nU3RvcmUudHJ5UmVzZXJ2
ZUNhcGFjaXR5KHNpemUuYXJlYSgpKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgCisgICAgICAgIG1fYmFja2luZ1N0b3JlLnJlc2l6ZShzaXplLmFyZWEoKSk7CisgICAgICAg
IG1fcGl4ZWxzID0gbV9iYWNraW5nU3RvcmUuZGF0YSgpOworICAgICAgICBtX3NpemUgPSBzaXpl
OworICAgICAgICBtX3JlY3QgPSBJbnRSZWN0KEludFBvaW50KCksIG1fc2l6ZSk7CisgICAgICAg
IGNsZWFyKCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAKKyAgICB2b2lkIHNl
dFJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkKKyAgICB7CisgICAgICAgIEFTU0VSVCghbV9zaXpl
LmlzRW1wdHkoKSk7CisgICAgICAgIEFTU0VSVChpbkJvdW5kcyhyZWN0KSk7CisgICAgICAgIG1f
cmVjdCA9IHJlY3Q7CisgICAgfQorICAgIAorICAgIEludFNpemUgc2l6ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fc2l6ZTsgfQorICAgIEludFJlY3QgcmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdDsg
fQorCisgICAgUkdCQTMyKiBhdChpbnQgeCwgaW50IHkpIGNvbnN0CisgICAgeworICAgICAgICBy
ZXR1cm4gbV9waXhlbHMgKyB5ICogbV9zaXplLndpZHRoKCkgKyB4OworICAgIH0KKworICAgIHZv
aWQgY2xlYXIoKQorICAgIHsKKyAgICAgICAgbWVtc2V0KG1fcGl4ZWxzLCAwLCBtX3NpemUuYXJl
YSgpICogc2l6ZW9mKFJHQkEzMikpOworICAgIH0KKworICAgIHZvaWQgY2xlYXJSZWN0KGNvbnN0
IEludFJlY3QmIHJlY3QpCisgICAgeworICAgICAgICBpZiAocmVjdC5pc0VtcHR5KCkgfHwgaW5C
b3VuZHMocmVjdCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIAorICAgICAgICBzaXpl
X3QgcmVjdFdpZHRoSW5CeXRlcyA9IHJlY3Qud2lkdGgoKSAqIHNpemVvZihSR0JBMzIpOworICAg
ICAgICBSR0JBMzIqIHN0YXJ0ID0gYXQocmVjdC54KCksIHJlY3QueSgpKTsKKyAgICAgICAgZm9y
IChpbnQgaSA9IDA7IGkgPCByZWN0LmhlaWdodCgpOyArK2kpIHsKKyAgICAgICAgICAgIG1lbXNl
dChzdGFydCwgMCwgcmVjdFdpZHRoSW5CeXRlcyk7CisgICAgICAgICAgICBzdGFydCArPSBtX3Np
emUud2lkdGgoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgcmVwZWF0Rmlyc3RSb3co
Y29uc3QgSW50UmVjdCYgcmVjdCkKKyAgICB7CisgICAgICAgIGlmIChyZWN0LmlzRW1wdHkoKSB8
fCBpbkJvdW5kcyhyZWN0KSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgCisgICAgICAg
IHNpemVfdCByZWN0V2lkdGhJbkJ5dGVzID0gcmVjdC53aWR0aCgpICogc2l6ZW9mKFJHQkEzMik7
CisgICAgICAgIFJHQkEzMiogc3JjID0gYXQocmVjdC54KCksIHJlY3QueSgpKTsKKyAgICAgICAg
UkdCQTMyKiBkZXN0ID0gc3JjICsgbV9zaXplLndpZHRoKCk7CisgICAgICAgIGZvciAoaW50IGkg
PSAxOyBpIDwgcmVjdC5oZWlnaHQoKTsgKytpKSB7CisgICAgICAgICAgICBtZW1jcHkoZGVzdCwg
c3JjLCByZWN0V2lkdGhJbkJ5dGVzKTsKKyAgICAgICAgICAgIGRlc3QgKz0gbV9zaXplLndpZHRo
KCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIHNldFJHQkEoaW50IHgsIGludCB5LCB1
bnNpZ25lZCByLCB1bnNpZ25lZCBnLCB1bnNpZ25lZCBiLCB1bnNpZ25lZCBhKQorICAgIHsKKyAg
ICAgICAgc2V0UkdCQShhdCh4LCB5KSwgciwgZywgYiwgYSk7CisgICAgfQorCisgICAgdm9pZCBz
ZXRSR0JBKFJHQkEzMiogZGVzdCwgdW5zaWduZWQgciwgdW5zaWduZWQgZywgdW5zaWduZWQgYiwg
dW5zaWduZWQgYSkKKyAgICB7CisgICAgICAgIGlmICghbV9wcmVtdWx0aXBseUFscGhhIHx8IGEg
Pj0gMjU1KQorICAgICAgICAgICAgKmRlc3QgPSBtYWtlUkdCQShyLCBnLCBiLCBhKTsKKyAgICAg
ICAgZWxzZSBpZiAoIWEpCisgICAgICAgICAgICAqZGVzdCA9IDA7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICpkZXN0ID0gbWFrZVByZW11bHRpcGxpZWRSR0JBKHIsIGcsIGIsIGEpOworICAg
IH0KKworICAgIHZvaWQgb3ZlclJHQkEoUkdCQTMyKiBkZXN0LCB1bnNpZ25lZCByLCB1bnNpZ25l
ZCBnLCB1bnNpZ25lZCBiLCB1bnNpZ25lZCBhKQorICAgIHsKKyAgICAgICAgaWYgKCFhKQorICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAKKyAgICAgICAgaWYgKGEgPj0gMjU1IHx8ICFhbHBo
YUNoYW5uZWwoKmRlc3QpKSB7CisgICAgICAgICAgICBzZXRSR0JBKGRlc3QsIHIsIGcsIGIsIGEp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAo
IW1fcHJlbXVsdGlwbHlBbHBoYSkKKyAgICAgICAgICAgICpkZXN0ID0gbWFrZVByZW11bHRpcGxp
ZWRSR0JBKHJlZENoYW5uZWwoKmRlc3QpLCBncmVlbkNoYW5uZWwoKmRlc3QpLCBibHVlQ2hhbm5l
bCgqZGVzdCksIGFscGhhQ2hhbm5lbCgqZGVzdCkpOworICAgICAgICAKKyAgICAgICAgUkdCQTMy
IHNyYyA9IG1ha2VSR0JBKHIsIGcsIGIsIGEpOworICAgICAgICAqZGVzdCA9IENvbG9yKCpkZXN0
KS5ibGVuZChzcmMpLnJnYigpOworICAgICAgICAKKyAgICAgICAgaWYgKCFtX3ByZW11bHRpcGx5
QWxwaGEpCisgICAgICAgICAgICAqZGVzdCA9IG1ha2VVblByZW11bHRpcGxpZWRSR0JBKHJlZENo
YW5uZWwoKmRlc3QpLCBncmVlbkNoYW5uZWwoKmRlc3QpLCBibHVlQ2hhbm5lbCgqZGVzdCksIGFs
cGhhQ2hhbm5lbCgqZGVzdCkpOworICAgIH0KKworICAgIGJvb2wgaW5Cb3VuZHMoY29uc3QgSW50
UG9pbnQmIHBvaW50KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIEludFJlY3QoSW50UG9p
bnQoKSwgbV9zaXplKS5jb250YWlucyhwb2ludCk7CisgICAgfQorCisgICAgYm9vbCBpbkJvdW5k
cyhjb25zdCBJbnRSZWN0JiByZWN0KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIEludFJl
Y3QoSW50UG9pbnQoKSwgbV9zaXplKS5jb250YWlucyhyZWN0KTsKKyAgICB9CisKK3ByaXZhdGU6
CisgICAgVmVjdG9yPFJHQkEzMj4gbV9iYWNraW5nU3RvcmU7CisgICAgUkdCQTMyKiBtX3BpeGVs
cyB7IG51bGxwdHIgfTsKKyAgICBJbnRTaXplIG1fc2l6ZTsKKyAgICBJbnRSZWN0IG1fcmVjdDsg
Ly8gVGhpcyB3aWxsIGFsd2F5cyBqdXN0IGJlIHRoZSBlbnRpcmUgYnVmZmVyIGV4Y2VwdCBmb3Ig
R0lGIGFuZCBQTkcgZnJhbWVzCisgICAgYm9vbCBtX3ByZW11bHRpcGx5QWxwaGEgeyB0cnVlIH07
Cit9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9D
b2xvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHAKaW5k
ZXggNGUyNWFhNmZkNzRkMWU0NmM1NDE2MTQ5OGJjMTcyYmY2MDA4NzVkMS4uNDM5ZjVhNjNjN2Jl
YmU1NjA0MmIyNGU3ZDcyZWNjZWNmMzZjNDBjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0NvbG9yLmNwcApAQCAtNDksNiArNDksNDAgQEAgY29uc3QgUkdCQTMyIENvbG9y
Ojp0cmFuc3BhcmVudDsKIHN0YXRpYyBjb25zdCBSR0JBMzIgbGlnaHRlbmVkQmxhY2sgPSAweEZG
NTQ1NDU0Owogc3RhdGljIGNvbnN0IFJHQkEzMiBkYXJrZW5lZFdoaXRlID0gMHhGRkFCQUJBQjsK
IAorc3RhdGljIGlubGluZSB1bnNpZ25lZCBtdWx0aXBseTI1NSh1bnNpZ25lZCBjKQoreworICAg
IC8vIGMgKiAyNTUKKyAgICAvLyAgID0gYyAqICgyNTYgLSAxKQorICAgIC8vICAgPSBjICogMjU2
IC0gYworICAgIHJldHVybiAoYyA8PCA4KSAtIGM7Cit9CisKK3N0YXRpYyBpbmxpbmUgdW5zaWdu
ZWQgZGl2aWRlMjU1KHVuc2lnbmVkIGMpCit7CisgICAgLy8gYyAvIDI1NQorICAgIC8vICAgPSBj
IC8gMjU2ICogKDEgKyAxIC8gMjU1KQorICAgIC8vICAgPSAoYyArIGMgLyAyNTUpIC8gMjU2Cisg
ICAgLy8gICA9IChjICsgKGMgKyBjIC8gMjU1KSAvIDI1NikgLyAyNTYKKyAgICAvLyAgID0gKGMg
KyBjIC8gMjU2ICsgYyAvICgyNTUgeCAyNTYpKSAvIDI1NgorICAgIC8vICB+PSAoYyArIGMgLyAy
NTYgKyAxKSAvIDI1NgorICAgIHJldHVybiAoYyArIChjID4+IDgpICsgMSkgPj4gODsKK30KKyAg
ICAKK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgZGl2aWRlQ2VpbCh1bnNpZ25lZCBjLCB1bnNpZ25l
ZCBkKQoreworICAgIHJldHVybiAoYyArIGQgLSAxKSAvIGQ7Cit9CisgICAgCitzdGF0aWMgaW5s
aW5lIHVuc2lnbmVkIHByZW11bHRpcGxpZWRDaGFubmVsKHVuc2lnbmVkIGMsIHVuc2lnbmVkIGEp
Cit7CisgICAgcmV0dXJuIGRpdmlkZTI1NShjICogYSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdW5z
aWduZWQgdW5wcmVtdWx0aXBsaWVkQ2hhbm5lbCh1bnNpZ25lZCBjLCB1bnNpZ25lZCBhKQorewor
ICAgIHJldHVybiBkaXZpZGVDZWlsKG11bHRpcGx5MjU1KGMpLCBhKTsKK30KKyAgICAKIFJHQkEz
MiBtYWtlUkdCKGludCByLCBpbnQgZywgaW50IGIpCiB7CiAgICAgcmV0dXJuIDB4RkYwMDAwMDAg
fCBzdGQ6Om1heCgwLCBzdGQ6Om1pbihyLCAyNTUpKSA8PCAxNiB8IHN0ZDo6bWF4KDAsIHN0ZDo6
bWluKGcsIDI1NSkpIDw8IDggfCBzdGQ6Om1heCgwLCBzdGQ6Om1pbihiLCAyNTUpKTsKQEAgLTU5
LDYgKzkzLDE2IEBAIFJHQkEzMiBtYWtlUkdCQShpbnQgciwgaW50IGcsIGludCBiLCBpbnQgYSkK
ICAgICByZXR1cm4gc3RkOjptYXgoMCwgc3RkOjptaW4oYSwgMjU1KSkgPDwgMjQgfCBzdGQ6Om1h
eCgwLCBzdGQ6Om1pbihyLCAyNTUpKSA8PCAxNiB8IHN0ZDo6bWF4KDAsIHN0ZDo6bWluKGcsIDI1
NSkpIDw8IDggfCBzdGQ6Om1heCgwLCBzdGQ6Om1pbihiLCAyNTUpKTsKIH0KIAorUkdCQTMyIG1h
a2VQcmVtdWx0aXBsaWVkUkdCQShpbnQgciwgaW50IGcsIGludCBiLCBpbnQgYSkKK3sKKyAgICBy
ZXR1cm4gbWFrZVJHQkEocHJlbXVsdGlwbGllZENoYW5uZWwociwgYSksIHByZW11bHRpcGxpZWRD
aGFubmVsKGcsIGEpLCBwcmVtdWx0aXBsaWVkQ2hhbm5lbChiLCBhKSwgYSk7Cit9CisgICAgCitS
R0JBMzIgbWFrZVVuUHJlbXVsdGlwbGllZFJHQkEoaW50IHIsIGludCBnLCBpbnQgYiwgaW50IGEp
Cit7CisgICAgcmV0dXJuIG1ha2VSR0JBKHVucHJlbXVsdGlwbGllZENoYW5uZWwociwgYSksIHVu
cHJlbXVsdGlwbGllZENoYW5uZWwoZywgYSksIHVucHJlbXVsdGlwbGllZENoYW5uZWwoYiwgYSks
IGEpOworfQorICAgIAogc3RhdGljIGludCBjb2xvckZsb2F0VG9SR0JBQnl0ZShmbG9hdCBmKQog
ewogICAgIC8vIFdlIHVzZSBscm91bmRmIGFuZCAyNTUgaW5zdGVhZCBvZiBuZXh0YWZ0ZXJmKDI1
NiwgMCkgdG8gbWF0Y2ggQ0cncyByb3VuZGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0NvbG9yLmgKaW5kZXggZGQyNjI3MGJiNDY2MGIzM2FlMDcwZThjOTQ0NTIwZDcyODQ1NGI4
YS4uYTU0NTMyYzc3NTVhN2M4NzY5MzYyNDBjYWU0ZWMzN2E0ZGEwZDA0MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCkBAIC01NCw2ICs1NCw4IEBAIHR5cGVkZWYg
dW5zaWduZWQgUkdCQTMyOyAvLyBEZXByZWNhdGVkOiBUeXBlIGZvciBhbiBSR0JBIHF1YWRydXBs
ZXQuIFVzZSBSR0JBIGNsCiAKIFdFQkNPUkVfRVhQT1JUIFJHQkEzMiBtYWtlUkdCKGludCByLCBp
bnQgZywgaW50IGIpOwogV0VCQ09SRV9FWFBPUlQgUkdCQTMyIG1ha2VSR0JBKGludCByLCBpbnQg
ZywgaW50IGIsIGludCBhKTsKK1dFQkNPUkVfRVhQT1JUIFJHQkEzMiBtYWtlUHJlbXVsdGlwbGll
ZFJHQkEoaW50IHIsIGludCBnLCBpbnQgYiwgaW50IGEpOworV0VCQ09SRV9FWFBPUlQgUkdCQTMy
IG1ha2VVblByZW11bHRpcGxpZWRSR0JBKGludCByLCBpbnQgZywgaW50IGIsIGludCBhKTsKIAog
V0VCQ09SRV9FWFBPUlQgUkdCQTMyIGNvbG9yV2l0aE92ZXJyaWRlQWxwaGEoUkdCQTMyIGNvbG9y
LCBmbG9hdCBvdmVycmlkZUFscGhhKTsKIFdFQkNPUkVfRVhQT1JUIFJHQkEzMiBjb2xvcldpdGhP
dmVycmlkZUFscGhhKFJHQkEzMiBjb2xvciwgT3B0aW9uYWw8ZmxvYXQ+IG92ZXJyaWRlQWxwaGEp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKaW5kZXggN2EyOTk5MmY3
NzE4OGUwMzgyOGQ4MGE2NWI4YmUyY2Q4ZGMyZGU3Ni4uOGU3YjUyYjFmNGYzMWM3NGEzY2IyYTEz
MjE1ZGE3N2EyYjE4YzA3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZS5oCkBAIC0xMzcsOCArMTM3LDExIEBAIHB1YmxpYzoKIAogICAgIGVudW0gVGlsZVJ1bGUgeyBT
dHJldGNoVGlsZSwgUm91bmRUaWxlLCBTcGFjZVRpbGUsIFJlcGVhdFRpbGUgfTsKIAorICAgIHZp
cnR1YWwgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2UoKSB7IHJldHVybiBudWxscHRyOyB9Cisg
ICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZU9mU2l6ZShjb25zdCBJbnRTaXpl
JikgeyByZXR1cm4gbnVsbHB0cjsgfQogICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgbmF0aXZl
SW1hZ2VGb3JDdXJyZW50RnJhbWUoKSB7IHJldHVybiBudWxscHRyOyB9CiAgICAgdmlydHVhbCBJ
bWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uRm9yQ3VycmVudEZyYW1lKCkgeyByZXR1cm4gSW1h
Z2VPcmllbnRhdGlvbigpOyB9CisgICAgdmlydHVhbCBWZWN0b3I8TmF0aXZlSW1hZ2VQdHI+IGZy
YW1lc05hdGl2ZUltYWdlcygpIHsgcmV0dXJuIHsgfTsgfQogCiAgICAgLy8gQWNjZXNzb3JzIGZv
ciBuYXRpdmUgaW1hZ2UgZm9ybWF0cy4KIApAQCAtMTUwLDEyICsxNTMsNiBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBDRkRhdGFSZWYgZ2V0VElGRlJlcHJlc2VudGF0aW9uKCkgeyByZXR1cm4gbnVs
bHB0cjsgfQogI2VuZGlmCiAKLSNpZiBVU0UoQ0cpCi0gICAgdmlydHVhbCBDR0ltYWdlUmVmIGdl
dENHSW1hZ2VSZWYoKSB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgdmlydHVhbCBDR0ltYWdlUmVm
IGdldEZpcnN0Q0dJbWFnZVJlZk9mU2l6ZShjb25zdCBJbnRTaXplJikgeyByZXR1cm4gbnVsbHB0
cjsgfQotICAgIHZpcnR1YWwgUmV0YWluUHRyPENGQXJyYXlSZWY+IGdldENHSW1hZ2VBcnJheSgp
IHsgcmV0dXJuIG51bGxwdHI7IH0KLSNlbmRpZgotCiAjaWYgUExBVEZPUk0oV0lOKQogICAgIHZp
cnR1YWwgYm9vbCBnZXRIQklUTUFQKEhCSVRNQVApIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmly
dHVhbCBib29sIGdldEhCSVRNQVBPZlNpemUoSEJJVE1BUCwgY29uc3QgSW50U2l6ZSopIHsgcmV0
dXJuIGZhbHNlOyB9CkBAIC0xNzksNiArMTc2LDggQEAgcHVibGljOgogI2lmICFBU1NFUlRfRElT
QUJMRUQKICAgICB2aXJ0dWFsIGJvb2wgbm90U29saWRDb2xvcigpIHsgcmV0dXJuIHRydWU7IH0K
ICNlbmRpZgorICAgIAorICAgIHZpcnR1YWwgdm9pZCBsYXlvdXRJZk5lZWRlZCgpIHsgfQogCiAg
ICAgdmlydHVhbCB2b2lkIGR1bXAoVGV4dFN0cmVhbSYpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lRGF0YS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lRGF0YS5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZjM3NGY4ZGQxNWFmY2I4NTgyNWEzOTg3YzAyMzY5ZTU2ZWQ1YjFkMAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVEYXRhLmNw
cApAQCAtMCwwICsxLDEzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW1hZ2VGcmFtZURhdGEu
aCIKKworI2luY2x1ZGUgIkNvbG9yLmgiCisKKyNpZiBVU0UoQ0cpCisjaW5jbHVkZSAiSW1hZ2VE
ZWNvZGVyQ0cuaCIKKyNlbHNlCisjaW5jbHVkZSAiSW1hZ2VEZWNvZGVyLmgiCisjZW5kaWYKKwor
I2luY2x1ZGUgIlBsYXRmb3JtSW1hZ2UuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitJbWFn
ZUZyYW1lRGF0YTo6SW1hZ2VGcmFtZURhdGEoKQoreworfQorCitJbWFnZUZyYW1lRGF0YTo6SW1h
Z2VGcmFtZURhdGEoTmF0aXZlSW1hZ2VQdHImJiBpbWFnZSkKKyAgICA6IG1fc3RhdHVzKERlY29k
aW5nU3RhdHVzOjpDb21wbGV0ZSkKKyAgICAsIG1faW1hZ2UoV1RGTW92ZShpbWFnZSkpCit7Cisg
ICAgbV9zaXplID0gUGxhdGZvcm1JbWFnZShtX2ltYWdlKS5zaXplKCk7CisgICAgbV9oYXNBbHBo
YSA9IFBsYXRmb3JtSW1hZ2UobV9pbWFnZSkuaGFzQWxwaGEoKTsKK30KKworSW1hZ2VGcmFtZURh
dGE6OkltYWdlRnJhbWVEYXRhKEltYWdlRGVjb2RlciYgZGVjb2Rlciwgc2l6ZV90IGluZGV4LCBT
dWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwsIENhY2hpbmcgZnJhbWVDYWNoaW5nKQor
eworICAgIEFTU0VSVChmcmFtZUNhY2hpbmcgPT0gQ2FjaGluZzo6TWV0YWRhdGEgfHwgZnJhbWVD
YWNoaW5nID09IENhY2hpbmc6Ok1ldGFkYXRhQW5kSW1hZ2UpOworICAgIAorICAgIGlmIChmcmFt
ZUNhY2hpbmcgPT0gQ2FjaGluZzo6SW1hZ2UgfHwgZnJhbWVDYWNoaW5nID09IENhY2hpbmc6Ok1l
dGFkYXRhQW5kSW1hZ2UpIHsKKyAgICAgICAgbV9pbWFnZSA9IGRlY29kZXIuY3JlYXRlRnJhbWVJ
bWFnZUF0SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwpOworICAgICAgICBtX3N1YnNhbXBs
aW5nTGV2ZWwgPSBzdWJzYW1wbGluZ0xldmVsOworICAgIH0KKyAgICAKKyAgICBpZiAoZnJhbWVD
YWNoaW5nID09IENhY2hpbmc6Ok1ldGFkYXRhIHx8IGZyYW1lQ2FjaGluZyA9PSBDYWNoaW5nOjpN
ZXRhZGF0YUFuZEltYWdlKSB7CisgICAgICAgIG1fb3JpZW50YXRpb24gPSBkZWNvZGVyLm9yaWVu
dGF0aW9uQXRJbmRleChpbmRleCk7CisgICAgICAgIG1fc3RhdHVzID0gZGVjb2Rlci5mcmFtZUlz
Q29tcGxldGVBdEluZGV4KGluZGV4KSA/IERlY29kaW5nU3RhdHVzOjpDb21wbGV0ZSA6IERlY29k
aW5nU3RhdHVzOjpQYXJ0aWFsOworICAgICAgICAKKyAgICAgICAgaWYgKGRlY29kZXIucmVwZXRp
dGlvbkNvdW50KCkgIT0gY0FuaW1hdGlvbk5vbmUpCisgICAgICAgICAgICBtX2R1cmF0aW9uID0g
ZGVjb2Rlci5mcmFtZUR1cmF0aW9uQXRJbmRleChpbmRleCk7CisgICAgICAgIAorICAgICAgICBt
X2hhc0FscGhhID0gZGVjb2Rlci5mcmFtZUhhc0FscGhhQXRJbmRleChpbmRleCk7CisgICAgICAg
IG1fc2l6ZSA9IGRlY29kZXIuZnJhbWVTaXplQXRJbmRleChpbmRleCwgc3Vic2FtcGxpbmdMZXZl
bCk7CisgICAgfQorfQorICAgIAorSW1hZ2VGcmFtZURhdGE6On5JbWFnZUZyYW1lRGF0YSgpCit7
CisgICAgY2xlYXJTdWJJbWFnZXMoKTsKK30KKyAgICAKK0ltYWdlRnJhbWVEYXRhJiBJbWFnZUZy
YW1lRGF0YTo6b3BlcmF0b3I9KGNvbnN0IEltYWdlRnJhbWVEYXRhJiBvdGhlcikKK3sKKyAgICBp
ZiAodGhpcyA9PSAmb3RoZXIpCisgICAgICAgIHJldHVybiAqdGhpczsKKworICAgIG1fc3RhdHVz
ID0gb3RoZXIubV9zdGF0dXM7CisgICAgbV9zaXplID0gb3RoZXIubV9zaXplOworICAgIG1faW1h
Z2UgPSBvdGhlci5tX2ltYWdlOworICAgIAorICAgIG1fcGl4ZWxzID0gb3RoZXIucGl4ZWxzKCkg
PyBCaXRtYXBQaXhlbHM6OmNyZWF0ZSgqb3RoZXIucGl4ZWxzKCkpIDogbnVsbHB0cjsKKyAgICAK
KyAgICBtX29yaWVudGF0aW9uID0gb3RoZXIubV9vcmllbnRhdGlvbjsKKyAgICBtX3N1YnNhbXBs
aW5nTGV2ZWwgPSBvdGhlci5tX3N1YnNhbXBsaW5nTGV2ZWw7CisgICAgbV9kdXJhdGlvbiA9IG90
aGVyLm1fZHVyYXRpb247CisgICAgbV9oYXNBbHBoYSA9IG90aGVyLm1faGFzQWxwaGE7CisgICAg
cmV0dXJuICp0aGlzOworfQorCit2b2lkIEltYWdlRnJhbWVEYXRhOjpjbGVhclN1YkltYWdlcygp
Cit7CisgICAgaWYgKCFtX2ltYWdlKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgUGxhdGZv
cm1JbWFnZShtX2ltYWdlKS5jbGVhclN1YkltYWdlcygpOworfQorCit1bnNpZ25lZCBJbWFnZUZy
YW1lRGF0YTo6Y2xlYXIoQ2FjaGluZyBmcmFtZUNhY2hpbmcpCit7CisgICAgQVNTRVJUKGZyYW1l
Q2FjaGluZyA9PSBDYWNoaW5nOjpFbXB0eSB8fCBmcmFtZUNhY2hpbmcgPT0gQ2FjaGluZzo6TWV0
YWRhdGEpOworICAgIAorICAgIHVuc2lnbmVkIGZyYW1lQnl0ZXMgPSB0aGlzLT5mcmFtZUJ5dGVz
KCk7CisgICAgCisgICAgY2xlYXJTdWJJbWFnZXMoKTsKKyAgICAKKyAgICBpZiAoZnJhbWVDYWNo
aW5nID09IENhY2hpbmc6OkVtcHR5KQorICAgICAgICAqdGhpcyA9IEltYWdlRnJhbWVEYXRhKCk7
CisgICAgZWxzZQorICAgICAgICBtX2ltYWdlID0gbnVsbHB0cjsKKyAgICAKKyAgICByZXR1cm4g
ZnJhbWVCeXRlczsKK30KKworQ29sb3IgSW1hZ2VGcmFtZURhdGE6OnNpbmdsZVBpeGVsU29saWRD
b2xvcigpIGNvbnN0Cit7CisgICAgaWYgKCFoYXNJbWFnZSgpIHx8IG1fc2l6ZSAhPSBJbnRTaXpl
KDEsIDEpKQorICAgICAgICByZXR1cm4gQ29sb3IoKTsKKyAgICAKKyAgICByZXR1cm4gUGxhdGZv
cm1JbWFnZShtX2ltYWdlKS5zaW5nbGVQaXhlbFNvbGlkQ29sb3IoKTsKK30KKworYm9vbCBJbWFn
ZUZyYW1lRGF0YTo6aXNBbG1vc3RTb2xpZENvbG9yKCkgY29uc3QKK3sKKyAgICBpZiAoIWhhc0lt
YWdlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICByZXR1cm4gUGxhdGZvcm1J
bWFnZShtX2ltYWdlKS5pc0FsbW9zdFNvbGlkQ29sb3IoKTsKK30KKyAgICAKK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVEYXRhLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lRGF0YS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmY2ZmI3NThlZjNhNDI1OGNiZGIzYWUyZjQ2ZTg0NDBmNzMwZWY0N2MKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lRGF0YS5o
CkBAIC0wLDAgKzEsMTAxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQml0bWFwUGl4ZWxzLmgiCisjaW5j
bHVkZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgorI2luY2x1ZGUgIkludFNpemUuaCIKKyNpbmNsdWRl
ICJOYXRpdmVJbWFnZVB0ci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENvbG9y
OworY2xhc3MgSW1hZ2VEZWNvZGVyOworCisvLyBTdWJzYW1wbGluZ0xldmVsLiAwIGlzIG5vIHN1
YnNhbXBsaW5nLCAxIGlzIGhhbGYgZGltZW5zaW9ucyBvbiBlYWNoIGF4aXMgZXRjLgordXNpbmcg
U3Vic2FtcGxpbmdMZXZlbCA9IHVpbnQ4X3Q7CisKK2VudW0gOiBTdWJzYW1wbGluZ0xldmVsIHsK
KyAgICBNaW5TdWJzYW1wbGluZ0xldmVsID0gMCwKKyAgICBNYXhTdWJzYW1wbGluZ0xldmVsID0g
MywKKyAgICBEZWZhdWx0U3Vic2FtcGxpbmdMZXZlbCA9IE1pblN1YnNhbXBsaW5nTGV2ZWwKK307
CisKK2NsYXNzIEltYWdlRnJhbWVEYXRhIHsKKyAgICBmcmllbmQgY2xhc3MgSW1hZ2VEZWNvZGVy
OworcHVibGljOgorICAgIGVudW0gY2xhc3MgQ2FjaGluZyB7IEVtcHR5LCBNZXRhZGF0YSwgSW1h
Z2UsIE1ldGFkYXRhQW5kSW1hZ2UgfTsKKyAgICBlbnVtIGNsYXNzIERlY29kaW5nU3RhdHVzIHsg
RW1wdHksIFBhcnRpYWwsIENvbXBsZXRlIH07CisgICAgCisgICAgSW1hZ2VGcmFtZURhdGEoKTsK
KyAgICBJbWFnZUZyYW1lRGF0YShOYXRpdmVJbWFnZVB0ciYmKTsKKyAgICBJbWFnZUZyYW1lRGF0
YShJbWFnZURlY29kZXImLCBzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgPSBEZWZhdWx0
U3Vic2FtcGxpbmdMZXZlbCwgQ2FjaGluZyA9IENhY2hpbmc6Ok1ldGFkYXRhQW5kSW1hZ2UpOwor
ICAgIEltYWdlRnJhbWVEYXRhKGNvbnN0IEltYWdlRnJhbWVEYXRhJiBvdGhlcikgeyBvcGVyYXRv
cj0ob3RoZXIpOyB9CisKKyAgICB+SW1hZ2VGcmFtZURhdGEoKTsKKworICAgIEltYWdlRnJhbWVE
YXRhJiBvcGVyYXRvcj0oY29uc3QgSW1hZ2VGcmFtZURhdGEmIG90aGVyKTsKKyAgICAKKyAgICB1
bnNpZ25lZCBjbGVhcihDYWNoaW5nKTsKKyAgICBDb2xvciBzaW5nbGVQaXhlbFNvbGlkQ29sb3Io
KSBjb25zdDsKKyAgICBib29sIGlzQWxtb3N0U29saWRDb2xvcigpIGNvbnN0OworICAgIAorICAg
IERlY29kaW5nU3RhdHVzIHN0YXR1cygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdHVzOyB9CisgICAg
Ym9vbCBpc0NvbXBsZXRlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0dXMgPT0gRGVjb2RpbmdTdGF0
dXM6OkNvbXBsZXRlOyB9CisgICAgSW50U2l6ZSBzaXplKCkgY29uc3QgeyByZXR1cm4gaGFzUGl4
ZWxzKCkgPyBwaXhlbHMoKS0+c2l6ZSgpIDogbV9zaXplOyB9CisgICAgdW5zaWduZWQgZnJhbWVC
eXRlcygpIGNvbnN0IHsgcmV0dXJuIGhhc0ltYWdlKCkgPyBtX3NpemUuYXJlYSgpICogc2l6ZW9m
KFJHQkEzMikgOiAwOyB9CisgICAgTmF0aXZlSW1hZ2VQdHIgaW1hZ2UoKSBjb25zdCB7IHJldHVy
biBtX2ltYWdlOyB9CisgICAgQml0bWFwUGl4ZWxzKiBwaXhlbHMoKSBjb25zdCB7IHJldHVybiBt
X3BpeGVscyA/IG1fcGl4ZWxzLmdldCgpIDogbnVsbHB0cjsgfQorICAgIAorICAgIEltYWdlT3Jp
ZW50YXRpb24gb3JpZW50YXRpb24oKSBjb25zdCB7IHJldHVybiBtX29yaWVudGF0aW9uOyB9Cisg
ICAgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsKCkgY29uc3QgeyByZXR1cm4gbV9z
dWJzYW1wbGluZ0xldmVsOyB9CisgICAgZmxvYXQgZHVyYXRpb24oKSBjb25zdCB7IHJldHVybiBt
X2R1cmF0aW9uOyB9CisgICAgCisgICAgYm9vbCBoYXNBbHBoYSgpIGNvbnN0IHsgcmV0dXJuIG1f
aGFzQWxwaGE7IH0KKyAgICBib29sIGhhc0ltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZTsg
fQorICAgIGJvb2wgaGFzTWV0YWRhdGEoKSBjb25zdCB7IHJldHVybiAhbV9zaXplLmlzRW1wdHko
KTsgfQorICAgIGJvb2wgaGFzUGl4ZWxzKCkgY29uc3QgeyByZXR1cm4gcGl4ZWxzKCk7IH0KKyAg
ICAKK3ByaXZhdGU6CisgICAgdm9pZCBjbGVhclN1YkltYWdlcygpOworCisgICAgdm9pZCBzZXRT
dGF0dXMoRGVjb2RpbmdTdGF0dXMgc3RhdHVzKSB7IG1fc3RhdHVzID0gc3RhdHVzOyB9CisgICAg
dm9pZCBzZXRPcmllbnRhdGlvbihJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKSB7IG1fb3Jp
ZW50YXRpb24gPSBvcmllbnRhdGlvbjsgfTsKKyAgICB2b2lkIHNldER1cmF0aW9uKHVuc2lnbmVk
IGR1cmF0aW9uKSB7IG1fZHVyYXRpb24gPSBkdXJhdGlvbjsgfQorICAgIHZvaWQgc2V0SGFzQWxw
aGEoYm9vbCBoYXNBbHBoYSkgeyBtX2hhc0FscGhhID0gaGFzQWxwaGE7IH0KKyAgICAKKyAgICBE
ZWNvZGluZ1N0YXR1cyBtX3N0YXR1cyB7IERlY29kaW5nU3RhdHVzOjpFbXB0eSB9OworICAgIElu
dFNpemUgbV9zaXplOworICAgIE5hdGl2ZUltYWdlUHRyIG1faW1hZ2U7CisgICAgc3RkOjp1bmlx
dWVfcHRyPEJpdG1hcFBpeGVscz4gbV9waXhlbHM7CisgICAgCisgICAgSW1hZ2VPcmllbnRhdGlv
biBtX29yaWVudGF0aW9uIHsgRGVmYXVsdEltYWdlT3JpZW50YXRpb24gfTsKKyAgICBTdWJzYW1w
bGluZ0xldmVsIG1fc3Vic2FtcGxpbmdMZXZlbCB7IDAgfTsKKyAgICBmbG9hdCBtX2R1cmF0aW9u
IHsgMCB9OworICAgIGJvb2wgbV9oYXNBbHBoYSB7IHRydWUgfTsKK307CisgICAgCit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKaW5kZXgg
ZGRkOGE1NWJhMDkwNmM1ODY2YTE5MmNmOGU0MTRlYTcwN2I3MjhhYy4uODJmNmUyZDZlNDU0MzNk
YTFhN2Q1NmIzNzBkZmE2MWE0YzQxOTEzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcApAQCAtMjI0LDYgKzIyNCwxMSBAQCBOYXRpdmVJ
bWFnZVB0ciBJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4
LCBTdWJzYW1wbGluZ0xldgogICAgIHJldHVybiBpbml0aWFsaXplZCgpID8gbV9kZWNvZGVyLT5j
cmVhdGVGcmFtZUltYWdlQXRJbmRleChpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCkgOiBudWxscHRy
OwogfQogCitJbWFnZUZyYW1lRGF0YSBJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVEYXRhQXRJbmRl
eChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgSW1hZ2VG
cmFtZURhdGE6OkNhY2hpbmcgY2FjaGluZykKK3sKKyAgICByZXR1cm4gaW5pdGlhbGl6ZWQoKSA/
IEltYWdlRnJhbWVEYXRhKCptX2RlY29kZXIsIGluZGV4LCBzdWJzYW1wbGluZ0xldmVsLCBjYWNo
aW5nKSA6IEltYWdlRnJhbWVEYXRhKCk7Cit9CisgICAgCiB2b2lkIEltYWdlU291cmNlOjpkdW1w
KFRleHRTdHJlYW0mIHRzKSBjb25zdAogewogICAgIGlmIChtX2FsbG93U3Vic2FtcGxpbmcpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaAppbmRleCA2
MDM1NzM5YjdlOGIwOTZkYzhkZmU5YzUzMGE0MmM2ZjI5MWJkYTAwLi5hNDBjN2NlOTMwN2NkYWRm
MDc5YWI3MDFhODI3OTliNjkwNTI5ZDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlU291cmNlLmgKQEAgLTI3LDYgKzI3LDcgQEAKICNpZm5kZWYgSW1hZ2VT
b3VyY2VfaAogI2RlZmluZSBJbWFnZVNvdXJjZV9oCiAKKyNpbmNsdWRlICJJbWFnZUZyYW1lRGF0
YS5oIgogI2luY2x1ZGUgIkltYWdlT3JpZW50YXRpb24uaCIKICNpbmNsdWRlICJJbnRQb2ludC5o
IgogI2luY2x1ZGUgIk5hdGl2ZUltYWdlUHRyLmgiCkBAIC02Myw5ICs2NCw2IEBAIGNvbnN0IGlu
dCBjQW5pbWF0aW9uTG9vcE9uY2UgPSAwOwogY29uc3QgaW50IGNBbmltYXRpb25Mb29wSW5maW5p
dGUgPSAtMTsKIGNvbnN0IGludCBjQW5pbWF0aW9uTm9uZSA9IC0yOwogCi0vLyBTdWJzYW1wbGlu
Z0xldmVsLiAwIGlzIG5vIHN1YnNhbXBsaW5nLCAxIGlzIGhhbGYgZGltZW5zaW9ucyBvbiBlYWNo
IGF4aXMgZXRjLgotdHlwZWRlZiBzaG9ydCBTdWJzYW1wbGluZ0xldmVsOwotCiBjbGFzcyBJbWFn
ZVNvdXJjZSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW1hZ2VTb3VyY2UpOwogICAgIGZy
aWVuZCBjbGFzcyBCaXRtYXBJbWFnZTsKQEAgLTEzMiwxOCArMTMwLDE5IEBAIHB1YmxpYzoKICAg
ICBib29sIGFsbG93U3Vic2FtcGxpbmdPZkZyYW1lQXRJbmRleChzaXplX3QpIGNvbnN0OwogICAg
IAogICAgIC8vIFNpemUgb2Ygb3B0aW9uYWxseSBzdWJzYW1wbGVkIGZyYW1lLgotICAgIEludFNp
emUgZnJhbWVTaXplQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSAwLCBSZXNwZWN0
SW1hZ2VPcmllbnRhdGlvbkVudW0gPSBEb05vdFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKSBjb25z
dDsKKyAgICBJbnRTaXplIGZyYW1lU2l6ZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVs
ID0gRGVmYXVsdFN1YnNhbXBsaW5nTGV2ZWwsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSA9
IERvTm90UmVzcGVjdEltYWdlT3JpZW50YXRpb24pIGNvbnN0OwogICAgIAogICAgIC8vIFJldHVy
biB0aGUgbnVtYmVyIG9mIGJ5dGVzIGluIHRoZSBkZWNvZGVkIGZyYW1lLiBJZiB0aGUgZnJhbWUg
aXMgbm90IHlldAogICAgIC8vIGRlY29kZWQgdGhlbiByZXR1cm4gMC4KLSAgICB1bnNpZ25lZCBm
cmFtZUJ5dGVzQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSAwKSBjb25zdDsKKyAg
ICB1bnNpZ25lZCBmcmFtZUJ5dGVzQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBE
ZWZhdWx0U3Vic2FtcGxpbmdMZXZlbCkgY29uc3Q7CiAgICAgCiAgICAgZmxvYXQgZnJhbWVEdXJh
dGlvbkF0SW5kZXgoc2l6ZV90KTsKICAgICBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uQXRJ
bmRleChzaXplX3QpIGNvbnN0OyAvLyBFWElGIGltYWdlIG9yaWVudGF0aW9uCiAgICAgCiAgICAg
Ly8gQ2FsbGVycyBzaG91bGQgbm90IGNhbGwgdGhpcyBhZnRlciBjYWxsaW5nIGNsZWFyKCkgd2l0
aCBhIGhpZ2hlciBpbmRleDsKICAgICAvLyBzZWUgY29tbWVudHMgb24gY2xlYXIoKSBhYm92ZS4K
LSAgICBOYXRpdmVJbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNh
bXBsaW5nTGV2ZWwgPSAwKTsKKyAgICBOYXRpdmVJbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJ
bmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBEZWZhdWx0U3Vic2FtcGxpbmdMZXZlbCk7
CisgICAgSW1hZ2VGcmFtZURhdGEgY3JlYXRlRnJhbWVEYXRhQXRJbmRleChzaXplX3QsIFN1YnNh
bXBsaW5nTGV2ZWwgPSBEZWZhdWx0U3Vic2FtcGxpbmdMZXZlbCwgSW1hZ2VGcmFtZURhdGE6OkNh
Y2hpbmcgPSBJbWFnZUZyYW1lRGF0YTo6Q2FjaGluZzo6TWV0YWRhdGFBbmRJbWFnZSk7CiAgICAg
CiBwcml2YXRlOgogICAgIHZvaWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVfdCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUltYWdlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUltYWdlLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYWI3YWVhNDg5ZjNlYjJhODI4NzcxYzIxMDNlOGQ0ZDBiZTE3YmU1ZAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2Uu
aApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiR3JhcGhpY3NUeXBlcy5oIgorI2lu
Y2x1ZGUgIkltYWdlT3JpZW50YXRpb24uaCIKKyNpbmNsdWRlICJOYXRpdmVJbWFnZVB0ci5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENvbG9yOworY2xhc3MgRmxvYXRSZWN0Owor
Y2xhc3MgSW50U2l6ZTsKK2NsYXNzIEdyYXBoaWNzQ29udGV4dDsKKworY2xhc3MgUGxhdGZvcm1J
bWFnZSB7CitwdWJsaWM6CisgICAgUGxhdGZvcm1JbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYg
aW1hZ2UpCisgICAgICAgIDogbV9pbWFnZShpbWFnZSkKKyAgICB7CisgICAgfQorCisgICAgYm9v
bCBpc05pbCgpIGNvbnN0IHsgcmV0dXJuICFtX2ltYWdlOyB9CisgICAgdm9pZCBjbGVhclN1Yklt
YWdlcygpOworCisgICAgSW50U2l6ZSBzaXplKCkgY29uc3Q7CisgICAgYm9vbCBoYXNBbHBoYSgp
IGNvbnN0OworICAgIENvbG9yIHNpbmdsZVBpeGVsU29saWRDb2xvcigpIGNvbnN0OworICAgIGJv
b2wgaXNBbG1vc3RTb2xpZENvbG9yKCkgY29uc3Q7CisgICAgdm9pZCBkcmF3KEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwg
Y29uc3QgSW1hZ2VPcmllbnRhdGlvbiYpIGNvbnN0OworCisgICAgc3RhdGljIGZsb2F0IHN1YnNh
bXBsaW5nU2NhbGUoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0KTsKKworcHJpdmF0ZToKKyNpZiBVU0UoQ0cpCisgICAg
Q0dJbWFnZVJlZiBjZ0ltYWdlUmVmKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZSA/IG1faW1hZ2Uu
Z2V0KCkgOiBudWxscHRyOyB9CisjZW5kaWYKKyAgICBOYXRpdmVJbWFnZVB0ciBtX2ltYWdlOwor
fTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCmluZGV4IGY0YzE0NTdiYmIyNTU3NTRm
MDBhMDYyNWVlODNlMDRkYTdjNmVmY2YuLmQ1MjBmNWQ1ODVhYzYwZGJhZWUyNTVlMWI4M2MyNGRj
Njg3MjEwYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KQEAgLTIxMiw3ICsyMTIsNyBA
QCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dXBkYXRlRGlzcGxh
eU1vZGUoKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICB9
CiAKLSAgICAgICAgICAgICAgICBtX3BhdXNlZEltYWdlID0gaW1hZ2UtPmdldENHSW1hZ2VSZWYo
KTsKKyAgICAgICAgICAgICAgICBtX3BhdXNlZEltYWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9y
Q3VycmVudEZyYW1lKCk7CiAgICAgICAgICAgICAgICAgaWYgKCFtX3BhdXNlZEltYWdlKSB7CiAg
ICAgICAgICAgICAgICAgICAgIG1fZGlzcGxheU1vZGUgPSBQYWludEl0QmxhY2s7CiAgICAgICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMTc3MjJiZWM1M2FiOGEwOGE4ZGE4NTI4YjllMGQ3YzRkMGNkNDEz
NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcAorKysg
L2Rldi9udWxsCkBAIC0xLDE0MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAy
MDA1LCAyMDA2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDcgQWxwIFRva2VyIDxhbHBAYXRva2VyLmNvbT4KLSAqIENvcHlyaWdodCAoQykgMjAw
OSBEaXJrIFNjaHVsemUgPGtyaXRAd2Via2l0Lm9yZz4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkJpdG1h
cEltYWdlLmgiCi0KLSNpZiBVU0UoQ0FJUk8pCi0KLSNpbmNsdWRlICJDYWlyb1V0aWxpdGllcy5o
IgotI2luY2x1ZGUgIkltYWdlT2JzZXJ2ZXIuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybUNvbnRleHRD
YWlyby5oIgotI2luY2x1ZGUgIlRpbWVyLmgiCi0jaW5jbHVkZSA8Y2Fpcm8uaD4KLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgTmF0aXZlSW1hZ2UgewotCi1JbnRTaXplIHNpemUo
Y29uc3QgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4mIGltYWdlKQotewotICAgIHJldHVybiBjYWly
b1N1cmZhY2VTaXplKGltYWdlLmdldCgpKTsKLX0KLQotYm9vbCBoYXNBbHBoYShjb25zdCBSZWZQ
dHI8Y2Fpcm9fc3VyZmFjZV90PiYgaW1hZ2UpCi17Ci0gICAgcmV0dXJuIGNhaXJvX3N1cmZhY2Vf
Z2V0X2NvbnRlbnQoaW1hZ2UuZ2V0KCkpICE9IENBSVJPX0NPTlRFTlRfQ09MT1I7Ci19Ci0KLUNv
bG9yIHNpbmdsZVBpeGVsU29saWRDb2xvcihjb25zdCBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiYg
aW1hZ2UpCi17Ci0gICAgQVNTRVJUKGltYWdlKTsKLSAgICAKLSAgICBpZiAoTmF0aXZlSW1hZ2U6
OnNpemUoaW1hZ2UpICE9IEludFNpemUoMSwgMSkpCi0gICAgICAgIHJldHVybiBDb2xvcigpOwot
Ci0gICAgaWYgKGNhaXJvX3N1cmZhY2VfZ2V0X3R5cGUoaW1hZ2UuZ2V0KCkpICE9IENBSVJPX1NV
UkZBQ0VfVFlQRV9JTUFHRSkKLSAgICAgICAgcmV0dXJuIENvbG9yKCk7Ci0KLSAgICBSR0JBMzIq
IHBpeGVsID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8UkdCQTMyKj4oY2Fpcm9faW1hZ2Vfc3VyZmFj
ZV9nZXRfZGF0YShpbWFnZS5nZXQoKSkpOwotICAgIHJldHVybiBjb2xvckZyb21QcmVtdWx0aXBs
aWVkQVJHQigqcGl4ZWwpOwotfQotCi19Ci0KLXZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmMsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLAotICAgIEJsZW5kTW9kZSBibGVuZE1vZGUsIElt
YWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiBkZXNjcmlwdGlvbikKLXsKLSAgICBpZiAoIWRzdC53
aWR0aCgpIHx8ICFkc3QuaGVpZ2h0KCkgfHwgIXNyYy53aWR0aCgpIHx8ICFzcmMuaGVpZ2h0KCkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIHN0YXJ0QW5pbWF0aW9uKCk7Ci0KLSAgICBhdXRvIHN1
cmZhY2UgPSBmcmFtZUltYWdlQXRJbmRleChtX2N1cnJlbnRGcmFtZSk7Ci0gICAgaWYgKCFzdXJm
YWNlKSAvLyBJZiBpdCdzIHRvbyBlYXJseSB3ZSB3b24ndCBoYXZlIGFuIGltYWdlIHlldC4KLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgQ29sb3IgY29sb3IgPSBzaW5nbGVQaXhlbFNvbGlkQ29sb3Io
KTsKLSAgICBpZiAoY29sb3IuaXNWYWxpZCgpKSB7Ci0gICAgICAgIGZpbGxXaXRoU29saWRDb2xv
cihjb250ZXh0LCBkc3QsIGNvbG9yLCBvcCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBjb250ZXh0LnNhdmUoKTsKLQotICAgIC8vIFNldCB0aGUgY29tcG9zaXRpbmcgb3BlcmF0aW9u
LgotICAgIGlmIChvcCA9PSBDb21wb3NpdGVTb3VyY2VPdmVyICYmIGJsZW5kTW9kZSA9PSBCbGVu
ZE1vZGVOb3JtYWwgJiYgIWZyYW1lSGFzQWxwaGFBdEluZGV4KG1fY3VycmVudEZyYW1lKSkKLSAg
ICAgICAgY29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlQ29weSk7Ci0gICAg
ZWxzZQotICAgICAgICBjb250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihvcCwgYmxlbmRNb2Rl
KTsKLQotI2lmIEVOQUJMRShJTUFHRV9ERUNPREVSX0RPV05fU0FNUExJTkcpCi0gICAgSW50U2l6
ZSBzY2FsZWRTaXplID0gY2Fpcm9TdXJmYWNlU2l6ZShzdXJmYWNlLmdldCgpKTsKLSAgICBGbG9h
dFJlY3QgYWRqdXN0ZWRTcmNSZWN0ID0gYWRqdXN0U291cmNlUmVjdEZvckRvd25TYW1wbGluZyhz
cmMsIHNjYWxlZFNpemUpOwotI2Vsc2UKLSAgICBGbG9hdFJlY3QgYWRqdXN0ZWRTcmNSZWN0KHNy
Yyk7Ci0jZW5kaWYKLQotICAgIEltYWdlT3JpZW50YXRpb24gZnJhbWVPcmllbnRhdGlvbihkZXNj
cmlwdGlvbi5pbWFnZU9yaWVudGF0aW9uKCkpOwotICAgIGlmIChkZXNjcmlwdGlvbi5yZXNwZWN0
SW1hZ2VPcmllbnRhdGlvbigpID09IFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKQotICAgICAgICBm
cmFtZU9yaWVudGF0aW9uID0gZnJhbWVPcmllbnRhdGlvbkF0SW5kZXgobV9jdXJyZW50RnJhbWUp
OwotCi0gICAgRmxvYXRSZWN0IGRzdFJlY3QgPSBkc3Q7Ci0KLSAgICBpZiAoZnJhbWVPcmllbnRh
dGlvbiAhPSBEZWZhdWx0SW1hZ2VPcmllbnRhdGlvbikgewotICAgICAgICAvLyBJbWFnZU9yaWVu
dGF0aW9uIGV4cGVjdHMgdGhlIG9yaWdpbiB0byBiZSBhdCAoMCwgMCkuCi0gICAgICAgIGNvbnRl
eHQudHJhbnNsYXRlKGRzdFJlY3QueCgpLCBkc3RSZWN0LnkoKSk7Ci0gICAgICAgIGRzdFJlY3Qu
c2V0TG9jYXRpb24oRmxvYXRQb2ludCgpKTsKLSAgICAgICAgY29udGV4dC5jb25jYXRDVE0oZnJh
bWVPcmllbnRhdGlvbi50cmFuc2Zvcm1Gcm9tRGVmYXVsdChkc3RSZWN0LnNpemUoKSkpOwotICAg
ICAgICBpZiAoZnJhbWVPcmllbnRhdGlvbi51c2VzV2lkdGhBc0hlaWdodCgpKSB7Ci0gICAgICAg
ICAgICAvLyBUaGUgZGVzdGluYXRpb24gcmVjdGFuZ2xlIHdpbGwgaGF2ZSBpdCdzIHdpZHRoIGFu
ZCBoZWlnaHQgYWxyZWFkeSByZXZlcnNlZCBmb3IgdGhlIG9yaWVudGF0aW9uIG9mCi0gICAgICAg
ICAgICAvLyB0aGUgaW1hZ2UsIGFzIGl0IHdhcyBuZWVkZWQgZm9yIHBhZ2UgbGF5b3V0LCBzbyB3
ZSBuZWVkIHRvIHJldmVyc2UgaXQgYmFjayBoZXJlLgotICAgICAgICAgICAgZHN0UmVjdCA9IEZs
b2F0UmVjdChkc3RSZWN0LngoKSwgZHN0UmVjdC55KCksIGRzdFJlY3QuaGVpZ2h0KCksIGRzdFJl
Y3Qud2lkdGgoKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBjb250ZXh0LnBsYXRmb3JtQ29u
dGV4dCgpLT5kcmF3U3VyZmFjZVRvQ29udGV4dChzdXJmYWNlLmdldCgpLCBkc3RSZWN0LCBhZGp1
c3RlZFNyY1JlY3QsIGNvbnRleHQpOwotCi0gICAgY29udGV4dC5yZXN0b3JlKCk7Ci0KLSAgICBp
ZiAoaW1hZ2VPYnNlcnZlcigpKQotICAgICAgICBpbWFnZU9ic2VydmVyKCktPmRpZERyYXcodGhp
cyk7Ci19Ci0KLWJvb2wgRnJhbWVEYXRhOjpjbGVhcihib29sIGNsZWFyTWV0YWRhdGEpCi17Ci0g
ICAgaWYgKGNsZWFyTWV0YWRhdGEpCi0gICAgICAgIG1faGF2ZU1ldGFkYXRhID0gZmFsc2U7Ci0K
LSAgICBpZiAobV9pbWFnZSkgewotICAgICAgICBtX2ltYWdlID0gbnVsbHB0cjsKLSAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gVVNFKENBSVJPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1JbWFnZUNhaXJvLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtSW1hZ2VDYWlyby5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNzBhZGFlYzI3MGUzMWIwNTRhZmM1ZjY2ZDQ4Mjg4YWViZjA2MWUzYQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L1BsYXRmb3JtSW1hZ2VDYWlyby5jcHAKQEAgLTAsMCArMSwxMTEgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIlBsYXRmb3JtSW1hZ2UuaCIKKworI2lmIFVTRShDQUlSTykKKworI2luY2x1ZGUgIkNh
aXJvVXRpbGl0aWVzLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0Q2Fpcm8uaCIKKyNpbmNs
dWRlIDxjYWlyby5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgUGxhdGZvcm1JbWFn
ZTo6Y2xlYXJTdWJJbWFnZXMoKQoreworfQorCitJbnRTaXplIFBsYXRmb3JtSW1hZ2U6OnNpemUo
KSBjb25zdAoreworICAgIHJldHVybiBpc05pbCgpID8gSW50U2l6ZSgpIDogY2Fpcm9TdXJmYWNl
U2l6ZShtX2ltYWdlLmdldCgpKTsKK30KKworYm9vbCBQbGF0Zm9ybUltYWdlOjpoYXNBbHBoYSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIGlzTmlsKCkgfHwgY2Fpcm9fc3VyZmFjZV9nZXRfY29udGVu
dChtX2ltYWdlLmdldCgpKSAhPSBDQUlST19DT05URU5UX0NPTE9SOworfQorCitDb2xvciBQbGF0
Zm9ybUltYWdlOjpzaW5nbGVQaXhlbFNvbGlkQ29sb3IoKSBjb25zdAoreworICAgIGlmIChpc05p
bCgpIHx8IHNpemUoKSAhPSBJbnRTaXplKDEsIDEpKQorICAgICAgICByZXR1cm4gQ29sb3IoKTsK
KworICAgIGlmIChjYWlyb19zdXJmYWNlX2dldF90eXBlKG1faW1hZ2UuZ2V0KCkpICE9IENBSVJP
X1NVUkZBQ0VfVFlQRV9JTUFHRSkKKyAgICAgICAgcmV0dXJuIENvbG9yKCk7CisKKyAgICBSR0JB
MzIqIHBpeGVsID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8UkdCQTMyKj4oY2Fpcm9faW1hZ2Vfc3Vy
ZmFjZV9nZXRfZGF0YShtX2ltYWdlLmdldCgpKSk7CisgICAgcmV0dXJuIGNvbG9yRnJvbVByZW11
bHRpcGxpZWRBUkdCKCpwaXhlbCk7Cit9CisKK2Jvb2wgUGxhdGZvcm1JbWFnZTo6aXNBbG1vc3RT
b2xpZENvbG9yKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Zsb2F0IFBsYXRm
b3JtSW1hZ2U6OnN1YnNhbXBsaW5nU2NhbGUoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRS
ZWN0JiwgY29uc3QgRmxvYXRSZWN0JikKK3sKKyAgICByZXR1cm4gMTsKK30KKwordm9pZCBQbGF0
Zm9ybUltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRTaXplJiwgQ29t
cG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBtb2RlLCBjb25zdCBJbWFnZU9yaWVudGF0aW9u
JiBvcmllbnRhdGlvbikgY29uc3QKK3sKKyAgICBjb250ZXh0LnNhdmUoKTsKKyAgICAKKyAgICAv
LyBTZXQgdGhlIGNvbXBvc2l0aW5nIG9wZXJhdGlvbi4KKyAgICBpZiAob3AgPT0gQ29tcG9zaXRl
U291cmNlT3ZlciAmJiBtb2RlID09IEJsZW5kTW9kZU5vcm1hbCAmJiAhaGFzQWxwaGEoKSkKKyAg
ICAgICAgY29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlQ29weSk7CisgICAg
ZWxzZQorICAgICAgICBjb250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihvcCwgbW9kZSk7Cisg
ICAgICAgIAorI2lmIEVOQUJMRShJTUFHRV9ERUNPREVSX0RPV05fU0FNUExJTkcpCisgICAgSW50
U2l6ZSBzY2FsZWRTaXplID0gY2Fpcm9TdXJmYWNlU2l6ZShtX2ltYWdlLmdldCgpKTsKKyAgICBG
bG9hdFJlY3QgYWRqdXN0ZWRTcmNSZWN0ID0gYWRqdXN0U291cmNlUmVjdEZvckRvd25TYW1wbGlu
ZyhzcmNSZWN0LCBzY2FsZWRTaXplKTsKKyNlbHNlCisgICAgRmxvYXRSZWN0IGFkanVzdGVkU3Jj
UmVjdChzcmNSZWN0KTsKKyNlbmRpZgorICAgICAgICAKKyAgICBGbG9hdFJlY3QgYWRqdXN0ZWRE
ZXN0UmVjdCA9IGRlc3RSZWN0OworICAgICAgICAKKyAgICBpZiAob3JpZW50YXRpb24gIT0gRGVm
YXVsdEltYWdlT3JpZW50YXRpb24pIHsKKyAgICAgICAgLy8gSW1hZ2VPcmllbnRhdGlvbiBleHBl
Y3RzIHRoZSBvcmlnaW4gdG8gYmUgYXQgKDAsIDApLgorICAgICAgICBjb250ZXh0LnRyYW5zbGF0
ZShkZXN0UmVjdC54KCksIGRlc3RSZWN0LnkoKSk7CisgICAgICAgIGFkanVzdGVkRGVzdFJlY3Qu
c2V0TG9jYXRpb24oRmxvYXRQb2ludCgpKTsKKyAgICAgICAgY29udGV4dC5jb25jYXRDVE0ob3Jp
ZW50YXRpb24udHJhbnNmb3JtRnJvbURlZmF1bHQoYWRqdXN0ZWREZXN0UmVjdC5zaXplKCkpKTsK
KyAgICAgICAgaWYgKG9yaWVudGF0aW9uLnVzZXNXaWR0aEFzSGVpZ2h0KCkpIHsKKyAgICAgICAg
ICAgIC8vIFRoZSBkZXN0aW5hdGlvbiByZWN0YW5nbGUgd2lsbCBoYXZlIGl0J3Mgd2lkdGggYW5k
IGhlaWdodCBhbHJlYWR5IHJldmVyc2VkIGZvciB0aGUgb3JpZW50YXRpb24gb2YKKyAgICAgICAg
ICAgIC8vIHRoZSBpbWFnZSwgYXMgaXQgd2FzIG5lZWRlZCBmb3IgcGFnZSBsYXlvdXQsIHNvIHdl
IG5lZWQgdG8gcmV2ZXJzZSBpdCBiYWNrIGhlcmUuCisgICAgICAgICAgICBhZGp1c3RlZERlc3RS
ZWN0LnNldFNpemUoYWRqdXN0ZWREZXN0UmVjdC5zaXplKCkudHJhbnNwb3NlZFNpemUoKSk7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLT5kcmF3U3Vy
ZmFjZVRvQ29udGV4dChtX2ltYWdlLmdldCgpLCBhZGp1c3RlZERlc3RSZWN0LCBhZGp1c3RlZFNy
Y1JlY3QsIGNvbnRleHQpOworCisgICAgY29udGV4dC5yZXN0b3JlKCk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVTRShDQUlSTykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFwSW1hZ2VDRy5jcHAKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAzYzgxYTE3MGJlNzlhZTZiZTZjYWNkYzk5ZjRjMzk4Y2Fh
ZjQyNmQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFwSW1hZ2VDRy5jcHAKKysrIC9k
ZXYvbnVsbApAQCAtMSwyMDYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAw
NSwgMjAwNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiQml0bWFwSW1hZ2UuaCIKLQotI2lmIFVTRShDRykKLQotI2luY2x1ZGUgIkNvcmVHcmFwaGlj
c1NQSS5oIgotI2luY2x1ZGUgIkZsb2F0Q29udmVyc2lvbi5oIgotI2luY2x1ZGUgIkdlb21ldHJ5
VXRpbGl0aWVzLmgiCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0Q0cuaCIKLSNpbmNsdWRlICJJ
bWFnZU9ic2VydmVyLmgiCi0jaW5jbHVkZSAiU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5oIgotI2lu
Y2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLQotI2lmIFVTRShBUFBLSVQpCi0jaW5jbHVkZSA8QXBw
bGljYXRpb25TZXJ2aWNlcy9BcHBsaWNhdGlvblNlcnZpY2VzLmg+Ci0jZW5kaWYKLQotI2lmIFBM
QVRGT1JNKENPQ09BKQotI2luY2x1ZGUgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKLSNlbmRp
ZgotCi0jaWYgUExBVEZPUk0oV0lOKQotI2luY2x1ZGUgPFdlYktpdFN5c3RlbUludGVyZmFjZS9X
ZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KLSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LW5hbWVzcGFjZSBOYXRpdmVJbWFnZSB7Ci0KLUludFNpemUgc2l6ZShjb25zdCBSZXRhaW5QdHI8
Q0dJbWFnZVJlZj4mIGltYWdlKQotewotICAgIEFTU0VSVChpbWFnZSk7Ci0gICAgcmV0dXJuIElu
dFNpemUoQ0dJbWFnZUdldFdpZHRoKGltYWdlLmdldCgpKSwgQ0dJbWFnZUdldEhlaWdodChpbWFn
ZS5nZXQoKSkpOwotfQotCi1ib29sIGhhc0FscGhhKGNvbnN0IFJldGFpblB0cjxDR0ltYWdlUmVm
PiYpCi17Ci0gICAgLy8gRklYTUU6IEFuc3dlciBjb3JyZWN0bHkgdGhlIHF1ZXN0aW9uOiBkb2Vz
IHRoZSBDR0ltYWdlUmVmIGhhdmUgYWxwaGEgY2hhbm5uZWw/Ci0gICAgcmV0dXJuIHRydWU7Ci19
Ci0gICAgCi1Db2xvciBzaW5nbGVQaXhlbFNvbGlkQ29sb3IoY29uc3QgUmV0YWluUHRyPENHSW1h
Z2VSZWY+JiBpbWFnZSkKLXsKLSAgICBBU1NFUlQoaW1hZ2UpOwotICAgIAotICAgIGlmIChOYXRp
dmVJbWFnZTo6c2l6ZShpbWFnZSkgIT0gSW50U2l6ZSgxLCAxKSkKLSAgICAgICAgcmV0dXJuIENv
bG9yKCk7Ci0gICAgCi0gICAgdW5zaWduZWQgY2hhciBwaXhlbFs0XTsgLy8gUkdCQQotICAgIGF1
dG8gYml0bWFwQ29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKHBpeGVsLCAx
LCAxLCA4LCBzaXplb2YocGl4ZWwpLCBzUkdCQ29sb3JTcGFjZVJlZigpLAotICAgICAgICBrQ0dJ
bWFnZUFscGhhUHJlbXVsdGlwbGllZExhc3QgfCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkJpZykpOwot
Ci0gICAgaWYgKCFiaXRtYXBDb250ZXh0KQotICAgICAgICByZXR1cm4gQ29sb3IoKTsKLSAgICAK
LSAgICBDR0NvbnRleHRTZXRCbGVuZE1vZGUoYml0bWFwQ29udGV4dC5nZXQoKSwga0NHQmxlbmRN
b2RlQ29weSk7Ci0gICAgQ0dDb250ZXh0RHJhd0ltYWdlKGJpdG1hcENvbnRleHQuZ2V0KCksIENH
UmVjdE1ha2UoMCwgMCwgMSwgMSksIGltYWdlLmdldCgpKTsKLSAgICAKLSAgICBpZiAoIXBpeGVs
WzNdKQotICAgICAgICByZXR1cm4gQ29sb3IoMCwgMCwgMCwgMCk7Ci0KLSAgICByZXR1cm4gQ29s
b3IocGl4ZWxbMF0gKiAyNTUgLyBwaXhlbFszXSwgcGl4ZWxbMV0gKiAyNTUgLyBwaXhlbFszXSwg
cGl4ZWxbMl0gKiAyNTUgLyBwaXhlbFszXSwgcGl4ZWxbM10pOwotfQotCi19Ci0KLWJvb2wgRnJh
bWVEYXRhOjpjbGVhcihib29sIGNsZWFyTWV0YWRhdGEpCi17Ci0gICAgaWYgKGNsZWFyTWV0YWRh
dGEpCi0gICAgICAgIG1faGF2ZU1ldGFkYXRhID0gZmFsc2U7Ci0KLSAgICBtX3N1YnNhbXBsaW5n
TGV2ZWwgPSAwOwotCi0gICAgaWYgKG1faW1hZ2UpIHsKLSNpZiBDQUNIRV9TVUJJTUFHRVMKLSAg
ICAgICAgc3ViaW1hZ2VDYWNoZSgpLmNsZWFySW1hZ2UobV9pbWFnZS5nZXQoKSk7Ci0jZW5kaWYK
LSAgICAgICAgbV9pbWFnZSA9IG51bGxwdHI7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0K
LSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLUNHSW1hZ2VSZWYgQml0bWFwSW1hZ2U6OmdldENHSW1h
Z2VSZWYoKQotewotICAgIHJldHVybiBmcmFtZUltYWdlQXRJbmRleCgwKS5nZXQoKTsKLX0KLQot
Q0dJbWFnZVJlZiBCaXRtYXBJbWFnZTo6Z2V0Rmlyc3RDR0ltYWdlUmVmT2ZTaXplKGNvbnN0IElu
dFNpemUmIHNpemUpCi17Ci0gICAgc2l6ZV90IGNvdW50ID0gZnJhbWVDb3VudCgpOwotICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewotICAgICAgICBDR0ltYWdlUmVmIGNn
SW1hZ2UgPSBmcmFtZUltYWdlQXRJbmRleChpKS5nZXQoKTsKLSAgICAgICAgaWYgKGNnSW1hZ2Ug
JiYgSW50U2l6ZShDR0ltYWdlR2V0V2lkdGgoY2dJbWFnZSksIENHSW1hZ2VHZXRIZWlnaHQoY2dJ
bWFnZSkpID09IHNpemUpCi0gICAgICAgICAgICByZXR1cm4gY2dJbWFnZTsKLSAgICB9Ci0KLSAg
ICAvLyBGYWxsYmFjayB0byB0aGUgZGVmYXVsdCBDR0ltYWdlUmVmIGlmIHdlIGNhbid0IGZpbmQg
dGhlIHJpZ2h0IHNpemUKLSAgICByZXR1cm4gZ2V0Q0dJbWFnZVJlZigpOwotfQotCi1SZXRhaW5Q
dHI8Q0ZBcnJheVJlZj4gQml0bWFwSW1hZ2U6OmdldENHSW1hZ2VBcnJheSgpCi17Ci0gICAgc2l6
ZV90IGNvdW50ID0gZnJhbWVDb3VudCgpOwotICAgIGlmICghY291bnQpCi0gICAgICAgIHJldHVy
biBudWxscHRyOwotICAgIAotICAgIENGTXV0YWJsZUFycmF5UmVmIGFycmF5ID0gQ0ZBcnJheUNy
ZWF0ZU11dGFibGUoTlVMTCwgY291bnQsICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpOwotICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewotICAgICAgICBpZiAoQ0dJbWFnZVJl
ZiBjdXJyRnJhbWUgPSBmcmFtZUltYWdlQXRJbmRleChpKS5nZXQoKSkKLSAgICAgICAgICAgIENG
QXJyYXlBcHBlbmRWYWx1ZShhcnJheSwgY3VyckZyYW1lKTsKLSAgICB9Ci0gICAgcmV0dXJuIGFk
b3B0Q0YoYXJyYXkpOwotfQotCi12b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4
dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwg
SW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uIGRlc2NyaXB0aW9uKQotewotI2lmIFBMQVRGT1JN
KElPUykKLSAgICBzdGFydEFuaW1hdGlvbihEb05vdENhdGNoVXApOwotI2Vsc2UKLSAgICBzdGFy
dEFuaW1hdGlvbigpOwotI2VuZGlmCi0KLSAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2U7
Ci0gICAgLy8gTmV2ZXIgdXNlIHN1YnNhbXBsZWQgaW1hZ2VzIGZvciBkcmF3aW5nIGludG8gUERG
IGNvbnRleHRzLgotICAgIGlmICh3a0NHQ29udGV4dElzUERGQ29udGV4dChjdHh0LnBsYXRmb3Jt
Q29udGV4dCgpKSkKLSAgICAgICAgaW1hZ2UgPSBjb3B5VW5zY2FsZWRGcmFtZUltYWdlQXRJbmRl
eChtX2N1cnJlbnRGcmFtZSk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIENHUmVjdCB0cmFuc2Zvcm1l
ZERlc3RpbmF0aW9uUmVjdCA9IENHUmVjdEFwcGx5QWZmaW5lVHJhbnNmb3JtKGRlc3RSZWN0LCBD
R0NvbnRleHRHZXRDVE0oY3R4dC5wbGF0Zm9ybUNvbnRleHQoKSkpOwotICAgICAgICBmbG9hdCBz
dWJzYW1wbGluZ1NjYWxlID0gc3RkOjptaW48ZmxvYXQ+KDEsIHN0ZDo6bWF4KHRyYW5zZm9ybWVk
RGVzdGluYXRpb25SZWN0LnNpemUud2lkdGggLyBzcmNSZWN0LndpZHRoKCksIHRyYW5zZm9ybWVk
RGVzdGluYXRpb25SZWN0LnNpemUuaGVpZ2h0IC8gc3JjUmVjdC5oZWlnaHQoKSkpOwotCi0gICAg
ICAgIGltYWdlID0gZnJhbWVJbWFnZUF0SW5kZXgobV9jdXJyZW50RnJhbWUsIHN1YnNhbXBsaW5n
U2NhbGUpOwotICAgIH0KLQotICAgIGlmICghaW1hZ2UpIC8vIElmIGl0J3MgdG9vIGVhcmx5IHdl
IHdvbid0IGhhdmUgYW4gaW1hZ2UgeWV0LgotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgQ29s
b3IgY29sb3IgPSBzaW5nbGVQaXhlbFNvbGlkQ29sb3IoKTsKLSAgICBpZiAoY29sb3IuaXNWYWxp
ZCgpKSB7Ci0gICAgICAgIGZpbGxXaXRoU29saWRDb2xvcihjdHh0LCBkZXN0UmVjdCwgY29sb3Is
IGNvbXBvc2l0ZU9wKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIFN1YnNhbXBs
aW5nIG1heSBoYXZlIGdpdmVuIHVzIGFuIGltYWdlIHRoYXQgaXMgc21hbGxlciB0aGFuIHNpemUo
KS4KLSAgICBJbnRTaXplIGltYWdlU2l6ZShDR0ltYWdlR2V0V2lkdGgoaW1hZ2UuZ2V0KCkpLCBD
R0ltYWdlR2V0SGVpZ2h0KGltYWdlLmdldCgpKSk7Ci0gICAgCi0gICAgLy8gc3JjUmVjdCBpcyBp
biB0aGUgY29vcmRpbmF0ZXMgb2YgdGhlIHVuc3Vic2FtcGxlZCBpbWFnZSwgc28gd2UgaGF2ZSB0
byBtYXAgaXQgdG8gdGhlIHN1YnNhbXBsZWQgaW1hZ2UuCi0gICAgRmxvYXRSZWN0IHNjYWxlZFNy
Y1JlY3QgPSBzcmNSZWN0OwotICAgIGlmIChpbWFnZVNpemUgIT0gbV9zaXplKSB7Ci0gICAgICAg
IEZsb2F0UmVjdCBvcmlnaW5hbEltYWdlQm91bmRzKEZsb2F0UG9pbnQoKSwgbV9zaXplKTsKLSAg
ICAgICAgRmxvYXRSZWN0IHN1YnNhbXBsZWRJbWFnZUJvdW5kcyhGbG9hdFBvaW50KCksIGltYWdl
U2l6ZSk7Ci0gICAgICAgIHNjYWxlZFNyY1JlY3QgPSBtYXBSZWN0KHNyY1JlY3QsIG9yaWdpbmFs
SW1hZ2VCb3VuZHMsIHN1YnNhbXBsZWRJbWFnZUJvdW5kcyk7Ci0gICAgfQotICAgIAotICAgIElt
YWdlT3JpZW50YXRpb24gb3JpZW50YXRpb247Ci0gICAgaWYgKGRlc2NyaXB0aW9uLnJlc3BlY3RJ
bWFnZU9yaWVudGF0aW9uKCkgPT0gUmVzcGVjdEltYWdlT3JpZW50YXRpb24pCi0gICAgICAgIG9y
aWVudGF0aW9uID0gZnJhbWVPcmllbnRhdGlvbkF0SW5kZXgobV9jdXJyZW50RnJhbWUpOwotCi0g
ICAgY3R4dC5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNjYWxl
ZFNyY1JlY3QsIGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUsIG9yaWVudGF0aW9uKTsKLQotICAgIGlm
IChpbWFnZU9ic2VydmVyKCkpCi0gICAgICAgIGltYWdlT2JzZXJ2ZXIoKS0+ZGlkRHJhdyh0aGlz
KTsKLX0KLQotUmV0YWluUHRyPENHSW1hZ2VSZWY+IEJpdG1hcEltYWdlOjpjb3B5VW5zY2FsZWRG
cmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgpCi17Ci0gICAgaWYgKGluZGV4ID49IGZyYW1l
Q291bnQoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBpZiAoaW5kZXggPj0gbV9m
cmFtZXMuc2l6ZSgpIHx8ICFtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZSkKLSAgICAgICAgY2FjaGVG
cmFtZShpbmRleCwgMCk7Ci0KLSAgICBpZiAoIW1fZnJhbWVzW2luZGV4XS5tX3N1YnNhbXBsaW5n
TGV2ZWwpCi0gICAgICAgIHJldHVybiBtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZTsKLQotICAgIHJl
dHVybiBtX3NvdXJjZS5jcmVhdGVGcmFtZUltYWdlQXRJbmRleChpbmRleCk7Ci19Ci0KLX0KLQot
I2VuZGlmIC8vIFVTRShDRykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9QYXR0ZXJuQ0cuY3BwCmluZGV4IGI0MjhkNTBkOTRiZjkyNDI4MDMyODdkMmVlYzE2YmQ2
OWM1MjhkOTIuLjNkYWExMzlhYjdlYTViNDIxNTc3ODgzNWQzNTNkOGFkYjVmMGM3NWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcApA
QCAtNzIsNyArNzIsNyBAQCBDR1BhdHRlcm5SZWYgUGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0
ZXJuKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdXNlclNwYWNlVHJhbgogICAgIC8vIElmIHdlJ3Jl
IHJlcGVhdGluZyBpbiBib3RoIGRpcmVjdGlvbnMsIHdlIGNhbiB1c2UgaW1hZ2UtYmFja2VkIHBh
dHRlcm5zCiAgICAgLy8gaW5zdGVhZCBvZiBjdXN0b20gcGF0dGVybnMsIGFuZCBhdm9pZCB0aWxp
bmctZWRnZSBwaXhlbCBjcmFja3MuCiAgICAgaWYgKG1fcmVwZWF0WCAmJiBtX3JlcGVhdFkpCi0g
ICAgICAgIHJldHVybiB3a0NHUGF0dGVybkNyZWF0ZVdpdGhJbWFnZUFuZFRyYW5zZm9ybSh0aWxl
SW1hZ2UoKS0+Z2V0Q0dJbWFnZVJlZigpLCBwYXR0ZXJuVHJhbnNmb3JtLCB3a1BhdHRlcm5UaWxp
bmdDb25zdGFudFNwYWNpbmcpOworICAgICAgICByZXR1cm4gd2tDR1BhdHRlcm5DcmVhdGVXaXRo
SW1hZ2VBbmRUcmFuc2Zvcm0odGlsZUltYWdlKCktPm5hdGl2ZUltYWdlKCkuZ2V0KCksIHBhdHRl
cm5UcmFuc2Zvcm0sIHdrUGF0dGVyblRpbGluZ0NvbnN0YW50U3BhY2luZyk7CiAKICAgICAvLyBJ
ZiBGTFRfTUFYIHNob3VsZCBhbHNvIGJlIHVzZWQgZm9yIHhTdGVwIG9yIHlTdGVwLCBub3RoaW5n
IGlzIHJlbmRlcmVkLiBVc2luZyBmcmFjdGlvbnMgb2YgRkxUX01BWCBhbHNvCiAgICAgLy8gcmVz
dWx0IGluIG5vdGhpbmcgYmVpbmcgcmVuZGVyZWQuCkBAIC04Myw3ICs4Myw3IEBAIENHUGF0dGVy
blJlZiBQYXR0ZXJuOjpjcmVhdGVQbGF0Zm9ybVBhdHRlcm4oY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiB1c2VyU3BhY2VUcmFuCiAgICAgQ0dGbG9hdCB5U3RlcCA9IG1fcmVwZWF0WSA/IHRpbGVSZWN0
LmhlaWdodCgpIDogKDEgPDwgMjIpOwogCiAgICAgLy8gVGhlIHBhdHRlcm4gd2lsbCByZWxlYXNl
IHRoZSBDR0ltYWdlUmVmIHdoZW4gaXQncyBkb25lIHJlbmRlcmluZyBpbiBwYXR0ZXJuUmVsZWFz
ZUNhbGxiYWNrCi0gICAgQ0dJbWFnZVJlZiBwbGF0Zm9ybUltYWdlID0gQ0dJbWFnZVJldGFpbih0
aWxlSW1hZ2UoKS0+Z2V0Q0dJbWFnZVJlZigpKTsKKyAgICBDR0ltYWdlUmVmIHBsYXRmb3JtSW1h
Z2UgPSB0aWxlSW1hZ2UoKS0+bmF0aXZlSW1hZ2UoKS5sZWFrUmVmKCk7CiAKICAgICBjb25zdCBD
R1BhdHRlcm5DYWxsYmFja3MgcGF0dGVybkNhbGxiYWNrcyA9IHsgMCwgcGF0dGVybkNhbGxiYWNr
LCBwYXR0ZXJuUmVsZWFzZUNhbGxiYWNrIH07CiAgICAgcmV0dXJuIENHUGF0dGVybkNyZWF0ZShw
bGF0Zm9ybUltYWdlLCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgeFN0ZXAsIHlTdGVwLCBr
Q0dQYXR0ZXJuVGlsaW5nQ29uc3RhbnRTcGFjaW5nLCBUUlVFLCAmcGF0dGVybkNhbGxiYWNrcyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QbGF0Zm9y
bUltYWdlQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGxhdGZv
cm1JbWFnZUNHLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZmIyZGUwZWExMmRhMjE0ZjEwNDZjMzk2MmU4ZWFi
NTNjNjQ0MTI1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvUGxhdGZvcm1JbWFnZUNHLmNwcApAQCAtMCwwICsxLDE3MSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJQbGF0Zm9ybUltYWdlLmgiCisKKyNpZiBVU0UoQ0cpCisKKyNpbmNsdWRlICJD
b2xvci5oIgorI2luY2x1ZGUgIkNvcmVHcmFwaGljc1NQSS5oIgorI2luY2x1ZGUgIkZsb2F0UmVj
dC5oIgorI2luY2x1ZGUgIkdlb21ldHJ5VXRpbGl0aWVzLmgiCisjaW5jbHVkZSAiR3JhcGhpY3ND
b250ZXh0Q0cuaCIKKyNpbmNsdWRlICJJbnRTaXplLmgiCisjaW5jbHVkZSAiU3ViaW1hZ2VDYWNo
ZVdpdGhUaW1lci5oIgorCisjaWYgUExBVEZPUk0oV0lOKQorI2luY2x1ZGUgPFdlYktpdFN5c3Rl
bUludGVyZmFjZS9XZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KKyNlbmRpZgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisgICAgCit2b2lkIFBsYXRmb3JtSW1hZ2U6OmNsZWFyU3ViSW1hZ2VzKCkKK3sK
KyNpZiBDQUNIRV9TVUJJTUFHRVMKKyAgICBpZiAoIWlzTmlsKCkpCisgICAgICAgIHN1YmltYWdl
Q2FjaGUoKS5jbGVhckltYWdlKGNnSW1hZ2VSZWYoKSk7CisjZW5kaWYKK30KKworSW50U2l6ZSBQ
bGF0Zm9ybUltYWdlOjpzaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gaXNOaWwoKSA/IEludFNp
emUoKSA6IEludFNpemUoQ0dJbWFnZUdldFdpZHRoKGNnSW1hZ2VSZWYoKSksIENHSW1hZ2VHZXRI
ZWlnaHQoY2dJbWFnZVJlZigpKSk7Cit9CisKK2Jvb2wgUGxhdGZvcm1JbWFnZTo6aGFzQWxwaGEo
KSBjb25zdAoreworICAgIC8vIEZJWE1FOiBBbnN3ZXIgY29ycmVjdGx5IHRoZSBxdWVzdGlvbjog
ZG9lcyB0aGUgQ0dJbWFnZVJlZiBoYXZlIGFscGhhIGNoYW5ubmVsPworICAgIHJldHVybiB0cnVl
OworfQorCitDb2xvciBQbGF0Zm9ybUltYWdlOjpzaW5nbGVQaXhlbFNvbGlkQ29sb3IoKSBjb25z
dAoreworICAgIGlmIChpc05pbCgpIHx8IHNpemUoKSAhPSBJbnRTaXplKDEsIDEpKQorICAgICAg
ICByZXR1cm4gQ29sb3IoKTsKKyAgICAKKyAgICB1bnNpZ25lZCBjaGFyIHBpeGVsWzRdOyAvLyBS
R0JBCisgICAgYXV0byBiaXRtYXBDb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVh
dGUocGl4ZWwsIDEsIDEsIDgsIHNpemVvZihwaXhlbCksIHNSR0JDb2xvclNwYWNlUmVmKCksCisg
ICAgICAgIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkTGFzdCB8IGtDR0JpdG1hcEJ5dGVPcmRl
cjMyQmlnKSk7CisgICAgCisgICAgaWYgKCFiaXRtYXBDb250ZXh0KQorICAgICAgICByZXR1cm4g
Q29sb3IoKTsKKyAgICAKKyAgICBDR0NvbnRleHRTZXRCbGVuZE1vZGUoYml0bWFwQ29udGV4dC5n
ZXQoKSwga0NHQmxlbmRNb2RlQ29weSk7CisgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGJpdG1hcENv
bnRleHQuZ2V0KCksIENHUmVjdE1ha2UoMCwgMCwgMSwgMSksIGNnSW1hZ2VSZWYoKSk7CisgICAg
CisgICAgaWYgKCFwaXhlbFszXSkKKyAgICAgICAgcmV0dXJuIENvbG9yKDAsIDAsIDAsIDApOwor
ICAgIAorICAgIHJldHVybiBDb2xvcihwaXhlbFswXSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhlbFsx
XSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhlbFsyXSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhlbFszXSk7
Cit9CisgICAgCitib29sIFBsYXRmb3JtSW1hZ2U6OmlzQWxtb3N0U29saWRDb2xvcigpIGNvbnN0
Cit7CisgICAgQ0dJbWFnZVJlZiBpbWFnZSA9IGNnSW1hZ2VSZWYoKTsKKyAgICBBU1NFUlQoQ0dJ
bWFnZUdldEJpdHNQZXJDb21wb25lbnQoaW1hZ2UpID09IDgpOworICAgIAorICAgIENHQml0bWFw
SW5mbyBpbWFnZUluZm8gPSBDR0ltYWdlR2V0Qml0bWFwSW5mbyhpbWFnZSk7CisgICAgaWYgKCEo
aW1hZ2VJbmZvICYga0NHQml0bWFwQnl0ZU9yZGVyMzJMaXR0bGUpIHx8IChpbWFnZUluZm8gJiBr
Q0dCaXRtYXBBbHBoYUluZm9NYXNrKSAhPSBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0
KSB7CisgICAgICAgIC8vIEZJWE1FOiBDb25zaWRlciBiZWluZyBhYmxlIHRvIGhhbmRsZSBvdGhl
ciBwaXhlbCBmb3JtYXRzLgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAKKyAgICBzaXplX3Qgd2lkdGggPSBDR0ltYWdlR2V0
V2lkdGgoaW1hZ2UpOworICAgIHNpemVfdCBoZWlnaHQgPSBDR0ltYWdlR2V0SGVpZ2h0KGltYWdl
KTsKKyAgICBzaXplX3QgYnl0ZXNQZXJSb3cgPSBDR0ltYWdlR2V0Qnl0ZXNQZXJSb3coaW1hZ2Up
OworICAgIAorICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IHByb3ZpZGVyID0gYWRvcHRDRihDR0Rh
dGFQcm92aWRlckNvcHlEYXRhKENHSW1hZ2VHZXREYXRhUHJvdmlkZXIoaW1hZ2UpKSk7CisgICAg
Y29uc3QgVUludDgqIGRhdGEgPSBDRkRhdGFHZXRCeXRlUHRyKHByb3ZpZGVyLmdldCgpKTsKKyAg
ICAKKyAgICAvLyBPdmVybGF5IGEgZ3JpZCBvZiBzYW1wbGluZyBkb3RzIG9uIHRvcCBvZiBhIGdy
YXlzY2FsZSB2ZXJzaW9uIG9mIHRoZSBpbWFnZS4KKyAgICAvLyBGb3IgdGhlIGludGVyaW9yIHBv
aW50cywgY2FsY3VsYXRlIHRoZSBkaWZmZXJlbmNlIGluIGx1bWluYW5jZSBhbW9uZyB0aGUgc2Ft
cGxlIHBvaW50CisgICAgLy8gYW5kIGl0cyBzdXJyb3VuZHMgcG9pbnRzLCBzY2FsZWQgYnkgdHJh
bnNwYXJlbmN5LgorICAgIGNvbnN0IHVuc2lnbmVkIHNhbXBsZVJvd3MgPSA3OworICAgIGNvbnN0
IHVuc2lnbmVkIHNhbXBsZUNvbHMgPSA3OworICAgIC8vIEZJWE1FOiBSZWZpbmUgdGhlIHByb3Bl
ciBudW1iZXIgb2Ygc2FtcGxlcywgYW5kIGFjY29tbW9kYXRlIGRpZmZlcmVudCBhc3BlY3QgcmF0
aW9zLgorICAgIGlmICh3aWR0aCA8IHNhbXBsZUNvbHMgfHwgaGVpZ2h0IDwgc2FtcGxlUm93cykK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIC8vIEVuc3VyZSB0aGF0IHRoZSBsYXN0
IHJvdy9jb2x1bW4gbGFuZCBvbiB0aGUgaW1hZ2UgcGVyaW1ldGVyLgorICAgIGNvbnN0IGZsb2F0
IHN0cmlkZVdpZHRoID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHdpZHRoIC0gMSkgLyAoc2FtcGxlQ29s
cyAtIDEpOworICAgIGNvbnN0IGZsb2F0IHN0cmlkZUhlaWdodCA9IHN0YXRpY19jYXN0PGZsb2F0
PihoZWlnaHQgLSAxKSAvIChzYW1wbGVSb3dzIC0gMSk7CisgICAgZmxvYXQgc2FtcGxlc1tzYW1w
bGVSb3dzXVtzYW1wbGVDb2xzXTsKKyAgICAKKyAgICAvLyBGaW5kIHRoZSBsdW1pbmFuY2Ugb2Yg
dGhlIHNhbXBsZSBwb2ludHMuCisgICAgZmxvYXQgeSA9IDA7CisgICAgY29uc3QgVUludDgqIHJv
dyA9IGRhdGE7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNhbXBsZVJvd3M7ICsraSkg
eworICAgICAgICBmbG9hdCB4ID0gMDsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8
IHNhbXBsZUNvbHM7ICsraikgeworICAgICAgICAgICAgY29uc3QgVUludDgqIHAwID0gcm93ICsg
KHN0YXRpY19jYXN0PGludD4oeCArIC41KSkgKiA0OworICAgICAgICAgICAgLy8gUiBHIEIgQQor
ICAgICAgICAgICAgc2FtcGxlc1tpXVtqXSA9ICgwLjIxMjUgKiAqcDAgKyAwLjcxNTQgKiAqKHAw
KzEpICsgMC4wNzIxICogKihwMCsyKSkgKiAqKHAwKzMpIC8gMjU1OworICAgICAgICAgICAgeCAr
PSBzdHJpZGVXaWR0aDsKKyAgICAgICAgfQorICAgICAgICB5ICs9IHN0cmlkZUhlaWdodDsKKyAg
ICAgICAgcm93ID0gZGF0YSArIChzdGF0aWNfY2FzdDxpbnQ+KHkgKyAuNSkpICogYnl0ZXNQZXJS
b3c7CisgICAgfQorICAgIAorICAgIC8vIERldGVybWluZSB0aGUgaW1hZ2Ugc2NvcmUuCisgICAg
ZmxvYXQgYWNjdW1TY29yZSA9IDA7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IHNhbXBs
ZVJvd3MgLSAxOyArK2kpIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMTsgaiA8IHNhbXBs
ZUNvbHMgLSAxOyArK2opIHsKKyAgICAgICAgICAgIGZsb2F0IGRpZmYgPSBzYW1wbGVzW2kgLSAx
XVtqXSArIHNhbXBsZXNbaSArIDFdW2pdICsgc2FtcGxlc1tpXVtqIC0gMV0gKyBzYW1wbGVzW2ld
W2ogKyAxXSAtIDQgKiBzYW1wbGVzW2ldW2pdOworICAgICAgICAgICAgYWNjdW1TY29yZSArPSBk
aWZmICogZGlmZjsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICAvLyBUaGUgc2NvcmUgZm9y
IGEgZ2l2ZW4gc2FtcGxlIGNhbiBiZSB3aXRoaW4gdGhlIHJhbmdlIG9mIDAgYW5kIDI1NV4yLgor
ICAgIHJldHVybiBhY2N1bVNjb3JlIDwgMjUwMCAqIChzYW1wbGVSb3dzIC0gMikgKiAoc2FtcGxl
Q29scyAtIDIpOworfQorCitmbG9hdCBQbGF0Zm9ybUltYWdlOjpzdWJzYW1wbGluZ1NjYWxlKEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0KQoreworICAgIC8vIE5ldmVyIHVzZSBzdWJzYW1wbGVkIGltYWdl
cyBmb3IgZHJhd2luZyBpbnRvIFBERiBjb250ZXh0cy4KKyAgICBpZiAod2tDR0NvbnRleHRJc1BE
RkNvbnRleHQoY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSkpCisgICAgICAgIHJldHVybiAxOwor
ICAgIAorICAgIENHUmVjdCB0cmFuc2Zvcm1lZERlc3RpbmF0aW9uUmVjdCA9IENHUmVjdEFwcGx5
QWZmaW5lVHJhbnNmb3JtKGRlc3RSZWN0LCBDR0NvbnRleHRHZXRDVE0oY29udGV4dC5wbGF0Zm9y
bUNvbnRleHQoKSkpOworICAgIHJldHVybiBzdGQ6Om1pbjxmbG9hdD4oMSwgc3RkOjptYXgodHJh
bnNmb3JtZWREZXN0aW5hdGlvblJlY3Quc2l6ZS53aWR0aCAvIHNyY1JlY3Qud2lkdGgoKSwgdHJh
bnNmb3JtZWREZXN0aW5hdGlvblJlY3Quc2l6ZS5oZWlnaHQgLyBzcmNSZWN0LmhlaWdodCgpKSk7
Cit9CisKK3ZvaWQgUGxhdGZvcm1JbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgSW50U2l6ZSYgc3JjU2l6ZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBtb2Rl
LCBjb25zdCBJbWFnZU9yaWVudGF0aW9uJiBvcmllbnRhdGlvbikgY29uc3QKK3sKKyAgICAvLyBT
dWJzYW1wbGluZyBtYXkgaGF2ZSBnaXZlbiB1cyBhbiBpbWFnZSB0aGF0IGlzIHNtYWxsZXIgdGhh
biBzaXplKCkuCisgICAgSW50U2l6ZSBzdWJzYW1wbGVkSW1hZ2VTaXplID0gc2l6ZSgpOworICAg
IAorICAgIC8vIHNyY1JlY3QgaXMgaW4gdGhlIGNvb3JkaW5hdGVzIG9mIHRoZSB1bnN1YnNhbXBs
ZWQgaW1hZ2UsIHNvIHdlIGhhdmUgdG8gbWFwIGl0IHRvIHRoZSBzdWJzYW1wbGVkIGltYWdlLgor
ICAgIEZsb2F0UmVjdCBhZGp1c3RlZFNyY1JlY3QgPSBzcmNSZWN0OworICAgIGlmIChzdWJzYW1w
bGVkSW1hZ2VTaXplICE9IHNyY1NpemUpCisgICAgICAgIGFkanVzdGVkU3JjUmVjdCA9IG1hcFJl
Y3Qoc3JjUmVjdCwgRmxvYXRSZWN0KHsgfSwgc3JjU2l6ZSksIEZsb2F0UmVjdCh7IH0sIHN1YnNh
bXBsZWRJbWFnZVNpemUpKTsKKyAgICAKKyAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShtX2lt
YWdlLCBzdWJzYW1wbGVkSW1hZ2VTaXplLCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBvcCwg
bW9kZSwgb3JpZW50YXRpb24pOworfQorICAgIAorfQorCisjZW5kaWYgLy8gVVNFKENHKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVGV4dFRyYWNr
UmVwcmVzZW50YXRpb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1RleHRUcmFja1JlcHJlc2VudGF0aW9uQ29jb2EubW0KaW5kZXggODk3MjBkMTczNjVk
YTdlOGJhODQ2OWQ1Mjk0NTQ4ZDUxODQ3YTdmZS4uNDQ3NmZjNWY4N2MzNDk4OGY2ZDlhZDU1ZWVi
ZDhkMWI5YmIwMjJlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvVGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9UZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29h
Lm1tCkBAIC0xMjksNyArMTI5LDcgQEAgVGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYTo6flRl
eHRUcmFja1JlcHJlc2VudGF0aW9uQ29jb2EoKQogdm9pZCBUZXh0VHJhY2tSZXByZXNlbnRhdGlv
bkNvY29hOjp1cGRhdGUoKQogewogICAgIGlmIChhdXRvIHJlcHJlc2VudGF0aW9uID0gbV9jbGll
bnQuY3JlYXRlVGV4dFRyYWNrUmVwcmVzZW50YXRpb25JbWFnZSgpKQotICAgICAgICBbbV9sYXll
ci5nZXQoKSBzZXRDb250ZW50czooaWQpcmVwcmVzZW50YXRpb24tPmdldENHSW1hZ2VSZWYoKV07
CisgICAgICAgIFttX2xheWVyLmdldCgpIHNldENvbnRlbnRzOihpZClyZXByZXNlbnRhdGlvbi0+
bmF0aXZlSW1hZ2UoKS5nZXQoKV07CiB9CiAKIHZvaWQgVGV4dFRyYWNrUmVwcmVzZW50YXRpb25D
b2NvYTo6c2V0Q29udGVudFNjYWxlKGZsb2F0IHNjYWxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tCmluZGV4IDAxZWI2ZGQzMDA0M2EyMjUy
OTE3NmZkOTEyMTE3ZGM1Nzc2YzE3YmEuLmRjMWM3YzcwOTVkOTQ0YzRjNjJmMWZlMDkzNTcwMmEx
M2M3YzdhNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9JbWFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMv
SW1hZ2VNYWMubW0KQEAgLTg1LDMxICs4NSwyMiBAQCBDRkRhdGFSZWYgQml0bWFwSW1hZ2U6Omdl
dFRJRkZSZXByZXNlbnRhdGlvbigpCiAgICAgaWYgKG1fdGlmZlJlcCkKICAgICAgICAgcmV0dXJu
IG1fdGlmZlJlcC5nZXQoKTsKIAotICAgIHVuc2lnbmVkIG51bUZyYW1lcyA9IGZyYW1lQ291bnQo
KTsKKyAgICBhdXRvIG5hdGl2ZUltYWdlcyA9IHRoaXMtPmZyYW1lc05hdGl2ZUltYWdlcygpOwog
Ci0gICAgLy8gSWYgbnVtRnJhbWVzIGlzIHplcm8sIHdlIGtub3cgZm9yIGNlcnRhaW4gdGhpcyBp
bWFnZSBkb2Vzbid0IGhhdmUgdmFsaWQgZGF0YQorICAgIC8vIElmIGZyYW1lc0ltYWdlcy5zaXpl
KCkgaXMgemVybywgd2Uga25vdyBmb3IgY2VydGFpbiB0aGlzIGltYWdlIGRvZXNuJ3QgaGF2ZSB2
YWxpZCBkYXRhCiAgICAgLy8gRXZlbiB0aG91Z2ggdGhlIGNhbGwgdG8gQ0dJbWFnZURlc3RpbmF0
aW9uQ3JlYXRlV2l0aERhdGEgd2lsbCBmYWlsIGFuZCB3ZSdsbCBoYW5kbGUgaXQgZ3JhY2VmdWxs
eSwKICAgICAvLyBpbiBjZXJ0YWluIGNpcmN1bXN0YW5jZXMgdGhhdCBjYWxsIHdpbGwgc3BhbSB0
aGUgY29uc29sZSB3aXRoIGFuIGVycm9yIG1lc3NhZ2UKLSAgICBpZiAoIW51bUZyYW1lcykKLSAg
ICAgICAgcmV0dXJuIDA7Ci0KLSAgICBWZWN0b3I8Q0dJbWFnZVJlZj4gaW1hZ2VzOwotICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1GcmFtZXM7ICsraSApIHsKLSAgICAgICAgQ0dJbWFn
ZVJlZiBjZ0ltYWdlID0gZnJhbWVJbWFnZUF0SW5kZXgoaSkuZ2V0KCk7Ci0gICAgICAgIGlmIChj
Z0ltYWdlKQotICAgICAgICAgICAgaW1hZ2VzLmFwcGVuZChjZ0ltYWdlKTsKLSAgICB9Ci0KLSAg
ICB1bnNpZ25lZCBudW1WYWxpZEZyYW1lcyA9IGltYWdlcy5zaXplKCk7CisgICAgaWYgKCFuYXRp
dmVJbWFnZXMuc2l6ZSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIFJldGFpblB0
cjxDRk11dGFibGVEYXRhUmVmPiBkYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGVNdXRhYmxlKDAs
IDApKTsKLSAgICBSZXRhaW5QdHI8Q0dJbWFnZURlc3RpbmF0aW9uUmVmPiBkZXN0aW5hdGlvbiA9
IGFkb3B0Q0YoQ0dJbWFnZURlc3RpbmF0aW9uQ3JlYXRlV2l0aERhdGEoZGF0YS5nZXQoKSwga1VU
VHlwZVRJRkYsIG51bVZhbGlkRnJhbWVzLCAwKSk7CisgICAgUmV0YWluUHRyPENHSW1hZ2VEZXN0
aW5hdGlvblJlZj4gZGVzdGluYXRpb24gPSBhZG9wdENGKENHSW1hZ2VEZXN0aW5hdGlvbkNyZWF0
ZVdpdGhEYXRhKGRhdGEuZ2V0KCksIGtVVFR5cGVUSUZGLCBuYXRpdmVJbWFnZXMuc2l6ZSgpLCAw
KSk7CiAKICAgICBpZiAoIWRlc3RpbmF0aW9uKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtVmFsaWRG
cmFtZXM7ICsraSkKLSAgICAgICAgQ0dJbWFnZURlc3RpbmF0aW9uQWRkSW1hZ2UoZGVzdGluYXRp
b24uZ2V0KCksIGltYWdlc1tpXSwgMCk7CisgICAgZm9yIChhdXRvIG5hdGl2ZUltYWdlIDogbmF0
aXZlSW1hZ2VzKQorICAgICAgICBDR0ltYWdlRGVzdGluYXRpb25BZGRJbWFnZShkZXN0aW5hdGlv
bi5nZXQoKSwgbmF0aXZlSW1hZ2UuZ2V0KCksIDApOwogCiAgICAgQ0dJbWFnZURlc3RpbmF0aW9u
RmluYWxpemUoZGVzdGluYXRpb24uZ2V0KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcAppbmRleCAyMTc1M2Jk
MDc4YTFjNTVjMzI3MTljMTQ4NDZmMGY2Yjk5NzVmOGZkLi5hMmZhZGVmY2JmYzg1YmE3MTk5MDdl
YTM5NTA2ODA5MzEzODliNmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5jcHAKQEAgLTE0MiwxOCArMTQyLDE2IEBA
IEltYWdlRnJhbWUmIEltYWdlRnJhbWU6Om9wZXJhdG9yPShjb25zdCBJbWFnZUZyYW1lJiBvdGhl
cikKICAgICAgICAgcmV0dXJuICp0aGlzOwogCiAgICAgY29weUJpdG1hcERhdGEob3RoZXIpOwot
ICAgIHNldE9yaWdpbmFsRnJhbWVSZWN0KG90aGVyLm9yaWdpbmFsRnJhbWVSZWN0KCkpOworICAg
IHNldEhhc0FscGhhKG90aGVyLm1faGFzQWxwaGEpOwogICAgIHNldFN0YXR1cyhvdGhlci5zdGF0
dXMoKSk7CiAgICAgc2V0RHVyYXRpb24ob3RoZXIuZHVyYXRpb24oKSk7CiAgICAgc2V0RGlzcG9z
YWxNZXRob2Qob3RoZXIuZGlzcG9zYWxNZXRob2QoKSk7Ci0gICAgc2V0UHJlbXVsdGlwbHlBbHBo
YShvdGhlci5wcmVtdWx0aXBseUFscGhhKCkpOwogICAgIHJldHVybiAqdGhpczsKIH0KIAogdm9p
ZCBJbWFnZUZyYW1lOjpjbGVhclBpeGVsRGF0YSgpCiB7Ci0gICAgbV9iYWNraW5nU3RvcmUuY2xl
YXIoKTsKLSAgICBtX2J5dGVzID0gMDsKKyAgICBtX3BpeGVscyA9IG51bGxwdHI7CiAgICAgbV9z
dGF0dXMgPSBGcmFtZUVtcHR5OwogICAgIC8vIE5PVEU6IERvIG5vdCByZXNldCBvdGhlciBtZW1i
ZXJzIGhlcmU7IGNsZWFyRnJhbWVCdWZmZXJDYWNoZSgpIGNhbGxzIHRoaXMKICAgICAvLyB0byBm
cmVlIHRoZSBiaXRtYXAgZGF0YSwgYnV0IG90aGVyIGZ1bmN0aW9ucyBsaWtlIGluaXRGcmFtZUJ1
ZmZlcigpIGFuZApAQCAtMTYzLDI0ICsxNjEsMTYgQEAgdm9pZCBJbWFnZUZyYW1lOjpjbGVhclBp
eGVsRGF0YSgpCiAKIHZvaWQgSW1hZ2VGcmFtZTo6emVyb0ZpbGxQaXhlbERhdGEoKQogewotICAg
IG1lbXNldChtX2J5dGVzLCAwLCBtX3NpemUud2lkdGgoKSAqIG1fc2l6ZS5oZWlnaHQoKSAqIHNp
emVvZihQaXhlbERhdGEpKTsKKyAgICBtX3BpeGVscy0+Y2xlYXIoKTsKICAgICBtX2hhc0FscGhh
ID0gdHJ1ZTsKIH0KIAogdm9pZCBJbWFnZUZyYW1lOjp6ZXJvRmlsbEZyYW1lUmVjdChjb25zdCBJ
bnRSZWN0JiByZWN0KQogewotICAgIEFTU0VSVChJbnRSZWN0KEludFBvaW50KCksIG1fc2l6ZSku
Y29udGFpbnMocmVjdCkpOwotCiAgICAgaWYgKHJlY3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBzaXplX3QgcmVjdFdpZHRoSW5CeXRlcyA9IHJlY3Qud2lkdGgoKSAqIHNpemVv
ZihQaXhlbERhdGEpOwotICAgIFBpeGVsRGF0YSogc3RhcnQgPSBtX2J5dGVzICsgKHJlY3QueSgp
ICogd2lkdGgoKSkgKyByZWN0LngoKTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IHJlY3QuaGVp
Z2h0KCk7ICsraSkgewotICAgICAgICBtZW1zZXQoc3RhcnQsIDAsIHJlY3RXaWR0aEluQnl0ZXMp
OwotICAgICAgICBzdGFydCArPSB3aWR0aCgpOwotICAgIH0KLQorICAgIG1fcGl4ZWxzLT5jbGVh
clJlY3QocmVjdCk7CiAgICAgc2V0SGFzQWxwaGEodHJ1ZSk7CiB9CiAKQEAgLTE4OSwyNSArMTc5
LDIzIEBAIGJvb2wgSW1hZ2VGcmFtZTo6Y29weUJpdG1hcERhdGEoY29uc3QgSW1hZ2VGcmFtZSYg
b3RoZXIpCiAgICAgaWYgKHRoaXMgPT0gJm90aGVyKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAot
ICAgIG1fYmFja2luZ1N0b3JlID0gb3RoZXIubV9iYWNraW5nU3RvcmU7Ci0gICAgbV9ieXRlcyA9
IG1fYmFja2luZ1N0b3JlLmRhdGEoKTsKLSAgICBtX3NpemUgPSBvdGhlci5tX3NpemU7Ci0gICAg
c2V0SGFzQWxwaGEob3RoZXIubV9oYXNBbHBoYSk7CisgICAgaWYgKG90aGVyLm1fcGl4ZWxzKQor
ICAgICAgICBtX3BpeGVscyA9IEJpdG1hcFBpeGVsczo6Y3JlYXRlKCpvdGhlci5tX3BpeGVscy5n
ZXQoKSk7CisgICAgZWxzZQorICAgICAgICBtX3BpeGVscyA9IG51bGxwdHI7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLWJvb2wgSW1hZ2VGcmFtZTo6c2V0U2l6ZShpbnQgbmV3V2lkdGgsIGludCBu
ZXdIZWlnaHQpCitib29sIEltYWdlRnJhbWU6OnNldFNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSwg
Ym9vbCBwcmVtdWx0aXBseUFscGhhKQogewotICAgIEFTU0VSVCghd2lkdGgoKSAmJiAhaGVpZ2h0
KCkpOwotICAgIHNpemVfdCBiYWNraW5nU3RvcmVTaXplID0gbmV3V2lkdGggKiBuZXdIZWlnaHQ7
Ci0gICAgaWYgKCFtX2JhY2tpbmdTdG9yZS50cnlSZXNlcnZlQ2FwYWNpdHkoYmFja2luZ1N0b3Jl
U2l6ZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBtX2JhY2tpbmdTdG9yZS5yZXNpemUo
YmFja2luZ1N0b3JlU2l6ZSk7Ci0gICAgbV9ieXRlcyA9IG1fYmFja2luZ1N0b3JlLmRhdGEoKTsK
LSAgICBtX3NpemUgPSBJbnRTaXplKG5ld1dpZHRoLCBuZXdIZWlnaHQpOworICAgIEFTU0VSVCgh
bV9waXhlbHMpOworICAgIG1fcGl4ZWxzID0gQml0bWFwUGl4ZWxzOjpjcmVhdGUoc2l6ZSwgcHJl
bXVsdGlwbHlBbHBoYSk7CisgICAgcmV0dXJuIG1fcGl4ZWxzICE9IG51bGxwdHI7Cit9CiAKLSAg
ICB6ZXJvRmlsbFBpeGVsRGF0YSgpOwotICAgIHJldHVybiB0cnVlOwordm9pZCBJbWFnZUZyYW1l
Ojpjb3B5Um93TlRpbWVzKGludCBzdGFydFgsIGludCBlbmRYLCBpbnQgc3RhcnRZLCBpbnQgZW5k
WSkKK3sKKyAgICBtX3BpeGVscy0+cmVwZWF0Rmlyc3RSb3coSW50UmVjdChzdGFydFgsIHN0YXJ0
WSwgZW5kWCAtc3RhcnRYICwgZW5kWSAtIHN0YXJ0WSkpOwogfQogCiBib29sIEltYWdlRnJhbWU6
Omhhc0FscGhhKCkgY29uc3QKQEAgLTIyMCwxMSArMjA4LDYgQEAgdm9pZCBJbWFnZUZyYW1lOjpz
ZXRIYXNBbHBoYShib29sIGFscGhhKQogICAgIG1faGFzQWxwaGEgPSBhbHBoYTsKIH0KIAotdm9p
ZCBJbWFnZUZyYW1lOjpzZXRDb2xvclByb2ZpbGUoY29uc3QgQ29sb3JQcm9maWxlJiBjb2xvclBy
b2ZpbGUpCi17Ci0gICAgbV9jb2xvclByb2ZpbGUgPSBjb2xvclByb2ZpbGU7Ci19Ci0KIHZvaWQg
SW1hZ2VGcmFtZTo6c2V0U3RhdHVzKEZyYW1lU3RhdHVzIHN0YXR1cykKIHsKICAgICBtX3N0YXR1
cyA9IHN0YXR1czsKQEAgLTI5MSw3ICsyNzQsNyBAQCB1bnNpZ25lZCBJbWFnZURlY29kZXI6OmZy
YW1lQnl0ZXNBdEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QKICAgICBpZiAobV9mcmFtZUJ1ZmZl
ckNhY2hlLnNpemUoKSA8PSBpbmRleCkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgLy8gRklYTUU6
IFVzZSB0aGUgZGltZW5zaW9uIG9mIHRoZSByZXF1ZXN0ZWQgZnJhbWUuCi0gICAgcmV0dXJuIG1f
c2l6ZS5hcmVhKCkgKiBzaXplb2YoSW1hZ2VGcmFtZTo6UGl4ZWxEYXRhKTsKKyAgICByZXR1cm4g
bV9zaXplLmFyZWEoKSAqIHNpemVvZihSR0JBMzIpOwogfQogCiBmbG9hdCBJbWFnZURlY29kZXI6
OmZyYW1lRHVyYXRpb25BdEluZGV4KHNpemVfdCBpbmRleCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmgKaW5kZXggMmY4ZWVl
MTc4MWQxNjJkODZjNDlmZTFkYWM3MmEyZTdlNDBhNWQ2ZC4uYjcyZjJiZTc1MjIyNDdjMmIyNWFk
OWY5NDkyYTNmOTYwZjQ1NzQxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmgKQEAgLTI4LDggKzI4LDEwIEBACiAKICNw
cmFnbWEgb25jZQogCi0jaW5jbHVkZSAiSW50UmVjdC5oIgorI2luY2x1ZGUgIkJpdG1hcFBpeGVs
cy5oIgogI2luY2x1ZGUgIkltYWdlU291cmNlLmgiCisjaW5jbHVkZSAiSW50UmVjdC5oIgorI2lu
Y2x1ZGUgIkludFNpemUuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVNjcmVlbi5oIgogI2luY2x1ZGUg
IlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CkBAIC01Nyw3ICs1
OSw2IEBAIHVzaW5nIENvbG9yUHJvZmlsZSA9IFZlY3RvcjxjaGFyPjsKICAgICAgICAgICAgIERp
c3Bvc2VPdmVyd3JpdGVQcmV2aW91cyAgLy8gQ2xlYXIgZnJhbWUgdG8gcHJldmlvdXMgZnJhbWVi
dWZmZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29udGVudHMK
ICAgICAgICAgfTsKLSAgICAgICAgdHlwZWRlZiB1bnNpZ25lZCBQaXhlbERhdGE7CiAKICAgICAg
ICAgSW1hZ2VGcmFtZSgpOwogCkBAIC04MCwxNTEgKzgxLDYxIEBAIHVzaW5nIENvbG9yUHJvZmls
ZSA9IFZlY3RvcjxjaGFyPjsKICAgICAgICAgLy8gQ29waWVzIHRoZSBwaXhlbCBkYXRhIGF0IFso
c3RhcnRYLCBzdGFydFkpLCAoZW5kWCwgc3RhcnRZKSkgdG8gdGhlCiAgICAgICAgIC8vIHNhbWUg
WC1jb29yZGluYXRlcyBvbiBlYWNoIHN1YnNlcXVlbnQgcm93IHVwIHRvIGJ1dCBub3QgaW5jbHVk
aW5nCiAgICAgICAgIC8vIGVuZFkuCi0gICAgICAgIHZvaWQgY29weVJvd05UaW1lcyhpbnQgc3Rh
cnRYLCBpbnQgZW5kWCwgaW50IHN0YXJ0WSwgaW50IGVuZFkpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIEFTU0VSVChzdGFydFggPCB3aWR0aCgpKTsKLSAgICAgICAgICAgIEFTU0VSVChlbmRYIDw9
IHdpZHRoKCkpOwotICAgICAgICAgICAgQVNTRVJUKHN0YXJ0WSA8IGhlaWdodCgpKTsKLSAgICAg
ICAgICAgIEFTU0VSVChlbmRZIDw9IGhlaWdodCgpKTsKLSAgICAgICAgICAgIGNvbnN0IGludCBy
b3dCeXRlcyA9IChlbmRYIC0gc3RhcnRYKSAqIHNpemVvZihQaXhlbERhdGEpOwotICAgICAgICAg
ICAgY29uc3QgUGl4ZWxEYXRhKiBjb25zdCBzdGFydEFkZHIgPSBnZXRBZGRyKHN0YXJ0WCwgc3Rh
cnRZKTsKLSAgICAgICAgICAgIGZvciAoaW50IGRlc3RZID0gc3RhcnRZICsgMTsgZGVzdFkgPCBl
bmRZOyArK2Rlc3RZKQotICAgICAgICAgICAgICAgIG1lbWNweShnZXRBZGRyKHN0YXJ0WCwgZGVz
dFkpLCBzdGFydEFkZHIsIHJvd0J5dGVzKTsKLSAgICAgICAgfQorICAgICAgICB2b2lkIGNvcHlS
b3dOVGltZXMoaW50IHN0YXJ0WCwgaW50IGVuZFgsIGludCBzdGFydFksIGludCBlbmRZKTsKIAog
ICAgICAgICAvLyBBbGxvY2F0ZXMgc3BhY2UgZm9yIHRoZSBwaXhlbCBkYXRhLiAgTXVzdCBiZSBj
YWxsZWQgYmVmb3JlIGFueSBwaXhlbHMKICAgICAgICAgLy8gYXJlIHdyaXR0ZW4uICBNdXN0IG9u
bHkgYmUgY2FsbGVkIG9uY2UuICBSZXR1cm5zIHdoZXRoZXIgYWxsb2NhdGlvbgogICAgICAgICAv
LyBzdWNjZWVkZWQuCi0gICAgICAgIGJvb2wgc2V0U2l6ZShpbnQgbmV3V2lkdGgsIGludCBuZXdI
ZWlnaHQpOworICAgICAgICBib29sIHNldFNpemUoY29uc3QgSW50U2l6ZSYsIGJvb2wgcHJlbXVs
dGlwbHlBbHBoYSk7CisgICAgICAgIAorICAgICAgICBJbnRTaXplIHNpemUoKSBjb25zdCB7IHJl
dHVybiBtX3BpeGVscy0+c2l6ZSgpOyB9CiAKICAgICAgICAgLy8gUmV0dXJucyBhIGNhbGxlci1v
d25lZCBwb2ludGVyIHRvIHRoZSB1bmRlcmx5aW5nIG5hdGl2ZSBpbWFnZSBkYXRhLgogICAgICAg
ICAvLyAoQWN0dWFsIHVzZTogVGhpcyBwb2ludGVyIHdpbGwgYmUgb3duZWQgYnkgQml0bWFwSW1h
Z2UgYW5kIGZyZWVkIGluCiAgICAgICAgIC8vIEZyYW1lRGF0YTo6Y2xlYXIoKSkuCi0gICAgICAg
IE5hdGl2ZUltYWdlUHRyIGFzTmV3TmF0aXZlSW1hZ2UoKSBjb25zdDsKKyAgICAgICAgTmF0aXZl
SW1hZ2VQdHIgYXNOZXdOYXRpdmVJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGl4ZWxzLT5pbWFn
ZSgpOyB9CisKKyAgICAgICAgaW5saW5lIEJpdG1hcFBpeGVscyogcGl4ZWxzKCkgY29uc3QgeyBy
ZXR1cm4gbV9waXhlbHMgPyBtX3BpeGVscy5nZXQoKSA6IG51bGxwdHI7IH0KKyAgICAgICAgaW5s
aW5lIGJvb2wgaGFzUGl4ZWxzKCkgY29uc3QgeyByZXR1cm4gcGl4ZWxzKCk7IH0KIAogICAgICAg
ICBib29sIGhhc0FscGhhKCkgY29uc3Q7Ci0gICAgICAgIGNvbnN0IEludFJlY3QmIG9yaWdpbmFs
RnJhbWVSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW5hbEZyYW1lUmVjdDsgfQogICAgICAg
ICBGcmFtZVN0YXR1cyBzdGF0dXMoKSBjb25zdCB7IHJldHVybiBtX3N0YXR1czsgfQogICAgICAg
ICB1bnNpZ25lZCBkdXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZHVyYXRpb247IH0KICAgICAg
ICAgRnJhbWVEaXNwb3NhbE1ldGhvZCBkaXNwb3NhbE1ldGhvZCgpIGNvbnN0IHsgcmV0dXJuIG1f
ZGlzcG9zYWxNZXRob2Q7IH0KLSAgICAgICAgYm9vbCBwcmVtdWx0aXBseUFscGhhKCkgY29uc3Qg
eyByZXR1cm4gbV9wcmVtdWx0aXBseUFscGhhOyB9CiAKICAgICAgICAgdm9pZCBzZXRIYXNBbHBo
YShib29sIGFscGhhKTsKLSAgICAgICAgdm9pZCBzZXRDb2xvclByb2ZpbGUoY29uc3QgQ29sb3JQ
cm9maWxlJik7Ci0gICAgICAgIHZvaWQgc2V0T3JpZ2luYWxGcmFtZVJlY3QoY29uc3QgSW50UmVj
dCYgcikgeyBtX29yaWdpbmFsRnJhbWVSZWN0ID0gcjsgfQogICAgICAgICB2b2lkIHNldFN0YXR1
cyhGcmFtZVN0YXR1cyBzdGF0dXMpOwogICAgICAgICB2b2lkIHNldER1cmF0aW9uKHVuc2lnbmVk
IGR1cmF0aW9uKSB7IG1fZHVyYXRpb24gPSBkdXJhdGlvbjsgfQogICAgICAgICB2b2lkIHNldERp
c3Bvc2FsTWV0aG9kKEZyYW1lRGlzcG9zYWxNZXRob2QgbWV0aG9kKSB7IG1fZGlzcG9zYWxNZXRo
b2QgPSBtZXRob2Q7IH0KLSAgICAgICAgdm9pZCBzZXRQcmVtdWx0aXBseUFscGhhKGJvb2wgcHJl
bXVsdGlwbHlBbHBoYSkgeyBtX3ByZW11bHRpcGx5QWxwaGEgPSBwcmVtdWx0aXBseUFscGhhOyB9
CiAKICAgICAgICAgaW5saW5lIHZvaWQgc2V0UkdCQShpbnQgeCwgaW50IHksIHVuc2lnbmVkIHIs
IHVuc2lnbmVkIGcsIHVuc2lnbmVkIGIsIHVuc2lnbmVkIGEpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIHNldFJHQkEoZ2V0QWRkcih4LCB5KSwgciwgZywgYiwgYSk7CisgICAgICAgICAgICBtX3Bp
eGVscy0+c2V0UkdCQSh4LCB5LCByLCBnLCBiLCBhKTsKICAgICAgICAgfQogCi0gICAgICAgIGlu
bGluZSBQaXhlbERhdGEqIGdldEFkZHIoaW50IHgsIGludCB5KQorICAgICAgICBpbmxpbmUgUkdC
QTMyKiBnZXRBZGRyKGludCB4LCBpbnQgeSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJu
IG1fYnl0ZXMgKyAoeSAqIHdpZHRoKCkpICsgeDsKKyAgICAgICAgICAgIHJldHVybiBtX3BpeGVs
cy0+YXQoeCwgeSk7CiAgICAgICAgIH0KIAotICAgICAgICBpbmxpbmUgYm9vbCBoYXNQaXhlbERh
dGEoKSBjb25zdAorICAgICAgICBpbmxpbmUgdm9pZCBzZXRSR0JBKFJHQkEzMiogZGVzdCwgdW5z
aWduZWQgciwgdW5zaWduZWQgZywgdW5zaWduZWQgYiwgdW5zaWduZWQgYSkKICAgICAgICAgewot
ICAgICAgICAgICAgcmV0dXJuIG1fYnl0ZXM7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBVc2Ug
Zml4IHBvaW50IG11bHRpcGxpZXIgaW5zdGVhZCBvZiBpbnRlZ2VyIGRpdmlzaW9uIG9yIGZsb2F0
aW5nIHBvaW50IG1hdGguCi0gICAgICAgIC8vIFRoaXMgbXVsdGlwbGVyIHByb2R1Y2VzIGV4YWN0
bHkgdGhlIHNhbWUgcmVzdWx0IGZvciBhbGwgdmFsdWVzIGluIHJhbmdlIDAgLSAyNTUuCi0gICAg
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBmaXhQb2ludFNoaWZ0ID0gMjQ7Ci0gICAgICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBmaXhQb2ludE11bHQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
MS4wIC8gMjU1LjAgKiAoMSA8PCBmaXhQb2ludFNoaWZ0KSkgKyAxOwotICAgICAgICAvLyBNdWx0
aXBsaWVzIHVuc2lnbmVkIHZhbHVlIGJ5IGZpeHBvaW50IHZhbHVlIGFuZCBjb252ZXJ0cyBiYWNr
IHRvIHVuc2lnbmVkLgotICAgICAgICBzdGF0aWMgdW5zaWduZWQgZml4UG9pbnRVbnNpZ25lZE11
bHRpcGx5KHVuc2lnbmVkIGZpeGVkLCB1bnNpZ25lZCB2KQotICAgICAgICB7Ci0gICAgICAgICAg
ICByZXR1cm4gIChmaXhlZCAqIHYpID4+IGZpeFBvaW50U2hpZnQ7Ci0gICAgICAgIH0KLQotICAg
ICAgICBpbmxpbmUgdm9pZCBzZXRSR0JBKFBpeGVsRGF0YSogZGVzdCwgdW5zaWduZWQgciwgdW5z
aWduZWQgZywgdW5zaWduZWQgYiwgdW5zaWduZWQgYSkKLSAgICAgICAgewotICAgICAgICAgICAg
aWYgKG1fcHJlbXVsdGlwbHlBbHBoYSAmJiBhIDwgMjU1KSB7Ci0gICAgICAgICAgICAgICAgaWYg
KCFhKSB7Ci0gICAgICAgICAgICAgICAgICAgICpkZXN0ID0gMDsKLSAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGFscGhhTXVsdCA9IGEgKiBmaXhQb2ludE11bHQ7Ci0gICAgICAgICAgICAgICAgciA9IGZpeFBv
aW50VW5zaWduZWRNdWx0aXBseShyLCBhbHBoYU11bHQpOwotICAgICAgICAgICAgICAgIGcgPSBm
aXhQb2ludFVuc2lnbmVkTXVsdGlwbHkoZywgYWxwaGFNdWx0KTsKLSAgICAgICAgICAgICAgICBi
ID0gZml4UG9pbnRVbnNpZ25lZE11bHRpcGx5KGIsIGFscGhhTXVsdCk7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICAqZGVzdCA9IChhIDw8IDI0IHwgciA8PCAxNiB8IGcgPDwgOCB8IGIpOwor
ICAgICAgICAgICAgbV9waXhlbHMtPnNldFJHQkEoZGVzdCwgciwgZywgYiwgYSk7CiAgICAgICAg
IH0KIAogI2lmIEVOQUJMRShBUE5HKQotICAgICAgICBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGRp
dmlkZTI1NSh1bnNpZ25lZCBhKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gKGEgKyAo
YSA+PiA4KSArIDEpID4+IDg7Ci0gICAgICAgIH0KLQotICAgICAgICBpbmxpbmUgdm9pZCBvdmVy
UkdCQShQaXhlbERhdGEqIGRlc3QsIHVuc2lnbmVkIHIsIHVuc2lnbmVkIGcsIHVuc2lnbmVkIGIs
IHVuc2lnbmVkIGEpCisgICAgICAgIGlubGluZSB2b2lkIG92ZXJSR0JBKFJHQkEzMiogZGVzdCwg
dW5zaWduZWQgciwgdW5zaWduZWQgZywgdW5zaWduZWQgYiwgdW5zaWduZWQgYSkKICAgICAgICAg
ewotICAgICAgICAgICAgaWYgKCFhKQotICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAg
ICAgICAgaWYgKGEgPCAyNTUpIHsKLSAgICAgICAgICAgICAgICB1bnNpZ25lZCBhRGVzdCA9ICgo
KmRlc3QpID4+IDI0KSAmIDI1NTsKLSAgICAgICAgICAgICAgICBpZiAoYURlc3QpIHsKLSAgICAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgckRlc3QgPSAoKCpkZXN0KSA+PiAxNikgJiAyNTU7Ci0g
ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGdEZXN0ID0gKCgqZGVzdCkgPj4gOCkgJiAyNTU7
Ci0gICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGJEZXN0ID0gKCpkZXN0KSAmIDI1NTsKLSAg
ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgYUF1eCA9IDI1NSAtIGE7Ci0gICAgICAgICAgICAg
ICAgICAgIGlmICghbV9wcmVtdWx0aXBseUFscGhhKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICByRGVzdCA9IGRpdmlkZTI1NShyRGVzdCAqIGFEZXN0KTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGdEZXN0ID0gZGl2aWRlMjU1KGdEZXN0ICogYURlc3QpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgYkRlc3QgPSBkaXZpZGUyNTUoYkRlc3QgKiBhRGVzdCk7Ci0gICAgICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICAgICAgciA9IGRpdmlkZTI1NShyICogYSArIHJEZXN0ICog
YUF1eCk7Ci0gICAgICAgICAgICAgICAgICAgIGcgPSBkaXZpZGUyNTUoZyAqIGEgKyBnRGVzdCAq
IGFBdXgpOwotICAgICAgICAgICAgICAgICAgICBiID0gZGl2aWRlMjU1KGIgKiBhICsgYkRlc3Qg
KiBhQXV4KTsKLSAgICAgICAgICAgICAgICAgICAgYSArPSBkaXZpZGUyNTUoYURlc3QgKiBhQXV4
KTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFtX3ByZW11bHRpcGx5QWxwaGEpIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHIgPSAociAqIDI1NSArIGEgLSAxKSAvIGE7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBnID0gKGcgKiAyNTUgKyBhIC0gMSkgLyBhOwotICAgICAgICAgICAgICAg
ICAgICAgICAgYiA9IChiICogMjU1ICsgYSAtIDEpIC8gYTsKLSAgICAgICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobV9wcmVtdWx0aXBseUFscGhhKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIHIgPSBkaXZpZGUyNTUociAqIGEpOwotICAgICAgICAgICAgICAgICAg
ICBnID0gZGl2aWRlMjU1KGcgKiBhKTsKLSAgICAgICAgICAgICAgICAgICAgYiA9IGRpdmlkZTI1
NShiICogYSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAg
KmRlc3QgPSAoYSA8PCAyNCB8IHIgPDwgMTYgfCBnIDw8IDggfCBiKTsKKyAgICAgICAgICAgIG1f
cGl4ZWxzLT5vdmVyUkdCQShkZXN0LCByLCBnLCBiLCBhKTsKICAgICAgICAgfQogI2VuZGlmCiAK
ICAgICBwcml2YXRlOgotICAgICAgICBpbnQgd2lkdGgoKSBjb25zdAotICAgICAgICB7Ci0gICAg
ICAgICAgICByZXR1cm4gbV9zaXplLndpZHRoKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBpbnQg
aGVpZ2h0KCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG1fc2l6ZS5oZWln
aHQoKTsKLSAgICAgICAgfQotCi0gICAgICAgIFZlY3RvcjxQaXhlbERhdGE+IG1fYmFja2luZ1N0
b3JlOwotICAgICAgICBQaXhlbERhdGEqIG1fYnl0ZXM7IC8vIFRoZSBtZW1vcnkgaXMgYmFja2Vk
IGJ5IG1fYmFja2luZ1N0b3JlLgotICAgICAgICBJbnRTaXplIG1fc2l6ZTsKLSAgICAgICAgLy8g
RklYTUU6IERvIHdlIG5lZWQgbV9jb2xvclByb2ZpbGUgYW55bW9yZT8KLSAgICAgICAgQ29sb3JQ
cm9maWxlIG1fY29sb3JQcm9maWxlOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Qml0bWFwUGl4
ZWxzPiBtX3BpeGVsczsKICAgICAgICAgYm9vbCBtX2hhc0FscGhhOwotICAgICAgICBJbnRSZWN0
IG1fb3JpZ2luYWxGcmFtZVJlY3Q7IC8vIFRoaXMgd2lsbCBhbHdheXMganVzdCBiZSB0aGUgZW50
aXJlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYnVmZmVyIGV4Y2Vw
dCBmb3IgR0lGIGZyYW1lcyB3aG9zZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIG9yaWdpbmFsIHJlY3Qgd2FzIHNtYWxsZXIgdGhhbiB0aGUKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBvdmVyYWxsIGltYWdlIHNpemUuCiAgICAgICAgIEZy
YW1lU3RhdHVzIG1fc3RhdHVzOwogICAgICAgICB1bnNpZ25lZCBtX2R1cmF0aW9uOwogICAgICAg
ICBGcmFtZURpc3Bvc2FsTWV0aG9kIG1fZGlzcG9zYWxNZXRob2Q7Ci0gICAgICAgIGJvb2wgbV9w
cmVtdWx0aXBseUFscGhhOwogICAgIH07CiAKICAgICAvLyBJbWFnZURlY29kZXIgaXMgYSBiYXNl
IGZvciBhbGwgZm9ybWF0LXNwZWNpZmljIGRlY29kZXJzCkBAIC0yNTMsNiArMTY0LDggQEAgdXNp
bmcgQ29sb3JQcm9maWxlID0gVmVjdG9yPGNoYXI+OwogCiAgICAgICAgIHZpcnR1YWwgU3RyaW5n
IGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3QgPSAwOwogCisgICAgICAgIGJvb2wgcHJlbXVsdGlw
bHlBbHBoYSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJlbXVsdGlwbHlBbHBoYTsgfQorCiAgICAgICAg
IGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzQWxsRGF0YVJlY2Vp
dmVkOyB9CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRh
LCBib29sIGFsbERhdGFSZWNlaXZlZCkKQEAgLTI5MCwxMSArMjAzLDExIEBAIHVzaW5nIENvbG9y
UHJvZmlsZSA9IFZlY3RvcjxjaGFyPjsKIAogICAgICAgICAvLyBSZXR1cm5zIHdoZXRoZXIgdGhl
IHNpemUgaXMgbGVnYWwgKGkuZS4gbm90IGdvaW5nIHRvIHJlc3VsdCBpbgogICAgICAgICAvLyBv
dmVyZmxvdyBlbHNld2hlcmUpLiAgSWYgbm90LCBtYXJrcyBkZWNvZGluZyBhcyBmYWlsZWQuCi0g
ICAgICAgIHZpcnR1YWwgYm9vbCBzZXRTaXplKHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWln
aHQpCisgICAgICAgIHZpcnR1YWwgYm9vbCBzZXRTaXplKGNvbnN0IEludFNpemUmIHNpemUpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIGlmIChpc092ZXJTaXplKHdpZHRoLCBoZWlnaHQpKQorICAg
ICAgICAgICAgaWYgKGlzT3ZlclNpemUoc2l6ZSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHNl
dEZhaWxlZCgpOwotICAgICAgICAgICAgbV9zaXplID0gSW50U2l6ZSh3aWR0aCwgaGVpZ2h0KTsK
KyAgICAgICAgICAgIG1fc2l6ZSA9IHNpemU7CiAgICAgICAgICAgICBtX3NpemVBdmFpbGFibGUg
PSB0cnVlOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KQEAgLTM4MSw4ICsy
OTQsNiBAQCB1c2luZyBDb2xvclByb2ZpbGUgPSBWZWN0b3I8Y2hhcj47CiAKICAgICAgICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOyAvLyBUaGUgZW5jb2RlZCBkYXRhLgogICAgICAgICBW
ZWN0b3I8SW1hZ2VGcmFtZSwgMT4gbV9mcmFtZUJ1ZmZlckNhY2hlOwotICAgICAgICAvLyBGSVhN
RTogRG8gd2UgbmVlZCBtX2NvbG9yUHJvZmlsZSBhbnkgbW9yZSwgZm9yIGFueSBwb3J0PwotICAg
ICAgICBDb2xvclByb2ZpbGUgbV9jb2xvclByb2ZpbGU7CiAgICAgICAgIGJvb2wgbV9zY2FsZWQg
eyBmYWxzZSB9OwogICAgICAgICBWZWN0b3I8aW50PiBtX3NjYWxlZENvbHVtbnM7CiAgICAgICAg
IFZlY3RvcjxpbnQ+IG1fc2NhbGVkUm93czsKQEAgLTM5MywxMSArMzA0LDEwIEBAIHVzaW5nIENv
bG9yUHJvZmlsZSA9IFZlY3RvcjxjaGFyPjsKICAgICBwcml2YXRlOgogICAgICAgICAvLyBTb21l
IGNvZGUgcGF0aHMgY29tcHV0ZSB0aGUgc2l6ZSBvZiB0aGUgaW1hZ2UgYXMgIndpZHRoICogaGVp
Z2h0ICogNCIKICAgICAgICAgLy8gYW5kIHJldHVybiBpdCBhcyBhIChzaWduZWQpIGludC4gIEF2
b2lkIG92ZXJmbG93LgotICAgICAgICBzdGF0aWMgYm9vbCBpc092ZXJTaXplKHVuc2lnbmVkIHdp
ZHRoLCB1bnNpZ25lZCBoZWlnaHQpCisgICAgICAgIHN0YXRpYyBib29sIGlzT3ZlclNpemUoY29u
c3QgSW50U2l6ZSYgc2l6ZSkKICAgICAgICAgewotICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBs
b25nIHRvdGFsX3NpemUgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KHdpZHRoKQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBzdGF0aWNfY2FzdDx1
bnNpZ25lZCBsb25nIGxvbmc+KGhlaWdodCk7Ci0gICAgICAgICAgICByZXR1cm4gdG90YWxfc2l6
ZSA+ICgoMSA8PCAyOSkgLSAxKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBwaXhl
bHMgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KHNpemUud2lkdGgoKSkgKiBzdGF0
aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KHNpemUuaGVpZ2h0KCkpOworICAgICAgICAgICAg
cmV0dXJuIHBpeGVscyA+ICgoMSA8PCAyOSkgLSAxKTsKICAgICAgICAgfQogCiAgICAgICAgIElu
dFNpemUgbV9zaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBjYWYzNWM5N2Yx
N2VkZDM0YmM5ZGY4OWFiMDllODcwMGFlZTZjN2RmLi40NTdhZWYwN2FkNjM0ZTAyMWJhM2VkZTNk
NTEzYzc0YTVkOGViOWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcApAQCAtNzAsMTAg
KzcwLDggQEAgSW1hZ2VGcmFtZSogQk1QSW1hZ2VEZWNvZGVyOjpmcmFtZUJ1ZmZlckF0SW5kZXgo
c2l6ZV90IGluZGV4KQogICAgIGlmIChpbmRleCkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBp
ZiAobV9mcmFtZUJ1ZmZlckNhY2hlLmlzRW1wdHkoKSkgeworICAgIGlmIChtX2ZyYW1lQnVmZmVy
Q2FjaGUuaXNFbXB0eSgpKQogICAgICAgICBtX2ZyYW1lQnVmZmVyQ2FjaGUucmVzaXplKDEpOwot
ICAgICAgICBtX2ZyYW1lQnVmZmVyQ2FjaGUuZmlyc3QoKS5zZXRQcmVtdWx0aXBseUFscGhhKG1f
cHJlbXVsdGlwbHlBbHBoYSk7Ci0gICAgfQogCiAgICAgSW1hZ2VGcmFtZSogYnVmZmVyID0gJm1f
ZnJhbWVCdWZmZXJDYWNoZS5maXJzdCgpOwogICAgIGlmIChidWZmZXItPnN0YXR1cygpICE9IElt
YWdlRnJhbWU6OkZyYW1lQ29tcGxldGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVhZGVyLmNwcAppbmRleCA1
YzAwNTUzNGVjZDkyMTM0YTEzYjMyOTU4OTI3NzkwZjA3YWQwZjgxLi45ODFjMTFmZTk2ODIwNzk2
M2ZhY2I1ZGYxZWZlYTFkMGRlOWIwYTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5jcHAKQEAg
LTc4LDcgKzc4LDcgQEAgYm9vbCBCTVBJbWFnZVJlYWRlcjo6ZGVjb2RlQk1QKGJvb2wgb25seVNp
emUpCiAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgZnJhbWVidWZmZXIgaWYgbmVlZGVkLgogICAgIEFT
U0VSVChtX2J1ZmZlcik7ICAvLyBQYXJlbnQgc2hvdWxkIHNldCB0aGlzIGJlZm9yZSBhc2tpbmcg
dXMgdG8gZGVjb2RlIQogICAgIGlmIChtX2J1ZmZlci0+c3RhdHVzKCkgPT0gSW1hZ2VGcmFtZTo6
RnJhbWVFbXB0eSkgewotICAgICAgICBpZiAoIW1fYnVmZmVyLT5zZXRTaXplKG1fcGFyZW50LT5z
aXplKCkud2lkdGgoKSwgbV9wYXJlbnQtPnNpemUoKS5oZWlnaHQoKSkpCisgICAgICAgIGlmICgh
bV9idWZmZXItPnNldFNpemUobV9wYXJlbnQtPnNpemUoKSwgbV9wYXJlbnQtPnByZW11bHRpcGx5
QWxwaGEoKSkpCiAgICAgICAgICAgICByZXR1cm4gbV9wYXJlbnQtPnNldEZhaWxlZCgpOyAvLyBV
bmFibGUgdG8gYWxsb2NhdGUuCiAgICAgICAgIG1fYnVmZmVyLT5zZXRTdGF0dXMoSW1hZ2VGcmFt
ZTo6RnJhbWVQYXJ0aWFsKTsKICAgICAgICAgLy8gc2V0U2l6ZSgpIGNhbGxzIGVyYXNlQVJHQigp
LCB3aGljaCByZXNldHMgdGhlIGFscGhhIGZsYWcsIHNvIHdlIGZvcmNlCkBAIC04Niw5ICs4Niw2
IEBAIGJvb2wgQk1QSW1hZ2VSZWFkZXI6OmRlY29kZUJNUChib29sIG9ubHlTaXplKQogICAgICAg
ICAvLyB0aGVzZSAwcyBjb3VsZCBhY3R1YWxseSBzaG93IHRocm91Z2guCiAgICAgICAgIG1fYnVm
ZmVyLT5zZXRIYXNBbHBoYShmYWxzZSk7CiAKLSAgICAgICAgLy8gRm9yIEJNUHMsIHRoZSBmcmFt
ZSBhbHdheXMgZmlsbHMgdGhlIGVudGlyZSBpbWFnZS4KLSAgICAgICAgbV9idWZmZXItPnNldE9y
aWdpbmFsRnJhbWVSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgbV9wYXJlbnQtPnNpemUoKSkpOwot
CiAgICAgICAgIGlmICghbV9pc1RvcERvd24pCiAgICAgICAgICAgICBtX2Nvb3JkLnNldFkobV9w
YXJlbnQtPnNpemUoKS5oZWlnaHQoKSAtIDEpOwogICAgIH0KQEAgLTE3MSw3ICsxNjgsNyBAQCBi
b29sIEJNUEltYWdlUmVhZGVyOjpwcm9jZXNzSW5mb0hlYWRlcigpCiAgICAgICAgIHJldHVybiBt
X3BhcmVudC0+c2V0RmFpbGVkKCk7CiAKICAgICAvLyBTZXQgb3VyIHNpemUuCi0gICAgaWYgKCFt
X3BhcmVudC0+c2V0U2l6ZShtX2luZm9IZWFkZXIuYmlXaWR0aCwgbV9pbmZvSGVhZGVyLmJpSGVp
Z2h0KSkKKyAgICBpZiAoIW1fcGFyZW50LT5zZXRTaXplKEludFNpemUobV9pbmZvSGVhZGVyLmJp
V2lkdGgsIG1faW5mb0hlYWRlci5iaUhlaWdodCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICAvLyBGb3IgcGFsZXR0ZWQgaW1hZ2VzLCBiaXRtYXBzIGNhbiBzZXQgYmlDbHJVc2VkIHRv
IDAgdG8gbWVhbiAiYWxsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9jYWlyby9CaXRtYXBQaXhlbHNDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9CaXRtYXBQaXhlbHNDYWlyby5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNWFhZjhhMGEzNmIxOGNiZjcyNzdkMmMyZTI2ZWI0MTcxMjU2MDBkNQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0Jp
dG1hcFBpeGVsc0NhaXJvLmNwcApAQCAtMCwwICsxLDQwIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiQml0bWFwUGl4ZWxzLmgiCisKKyNpbmNsdWRlIDxjYWlyby5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK05hdGl2ZUltYWdlUHRyIEJpdG1hcFBpeGVsczo6aW1hZ2UoKSBjb25zdAorewor
ICAgIHJldHVybiBhZG9wdFJlZihjYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZV9mb3JfZGF0YSgK
KyAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBjaGFyKj4oY29uc3RfY2FzdDxSR0JB
MzIqPihtX3BpeGVscykpLAorICAgICAgICBDQUlST19GT1JNQVRfQVJHQjMyLCBzaXplKCkud2lk
dGgoKSwgc2l6ZSgpLmhlaWdodCgpLCBzaXplKCkud2lkdGgoKSAqIHNpemVvZihSR0JBMzIpKSk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdlRGVjb2RlckNhaXJvLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdlRGVjb2RlckNh
aXJvLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2I0MTI5NWY4NTczNThmYmJm
MzVjMWIwNTI1ZThkNmNjMzUyMGY1OC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWly
by9JbWFnZURlY29kZXJDYWlyby5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiSW1hZ2VEZWNvZGVyLmgiCi0KLSNpbmNsdWRlIDxjYWlyby5o
PgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLU5hdGl2ZUltYWdlUHRyIEltYWdlRnJhbWU6OmFz
TmV3TmF0aXZlSW1hZ2UoKSBjb25zdAotewotICAgIHJldHVybiBhZG9wdFJlZihjYWlyb19pbWFn
ZV9zdXJmYWNlX2NyZWF0ZV9mb3JfZGF0YSgKLSAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx1bnNp
Z25lZCBjaGFyKj4oY29uc3RfY2FzdDxQaXhlbERhdGEqPihtX2J5dGVzKSksCi0gICAgICAgIENB
SVJPX0ZPUk1BVF9BUkdCMzIsIHdpZHRoKCksIGhlaWdodCgpLCB3aWR0aCgpICogc2l6ZW9mKFBp
eGVsRGF0YSkpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VE
ZWNvZGVyLmNwcAppbmRleCA5Zjk5MmE3YmUxZDY2NzIyNjc1YzJlODU0YWQxODkxZTYwZjg1Nzdj
Li5mOTNhYTkwMzgxNzc3YjFlZjdkNjI5N2FlMDg2NzY2MGRlZGQ5NDUxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lG
SW1hZ2VEZWNvZGVyLmNwcApAQCAtNjAsMTIgKzYwLDEyIEBAIGJvb2wgR0lGSW1hZ2VEZWNvZGVy
Ojppc1NpemVBdmFpbGFibGUoKQogICAgIHJldHVybiBJbWFnZURlY29kZXI6OmlzU2l6ZUF2YWls
YWJsZSgpOwogfQogCi1ib29sIEdJRkltYWdlRGVjb2Rlcjo6c2V0U2l6ZSh1bnNpZ25lZCB3aWR0
aCwgdW5zaWduZWQgaGVpZ2h0KQorYm9vbCBHSUZJbWFnZURlY29kZXI6OnNldFNpemUoY29uc3Qg
SW50U2l6ZSYgc2l6ZSkKIHsKLSAgICBpZiAoSW1hZ2VEZWNvZGVyOjppc1NpemVBdmFpbGFibGUo
KSAmJiBzaXplKCkgPT0gSW50U2l6ZSh3aWR0aCwgaGVpZ2h0KSkKKyAgICBpZiAoSW1hZ2VEZWNv
ZGVyOjppc1NpemVBdmFpbGFibGUoKSAmJiB0aGlzLT5zaXplKCkgPT1zaXplKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKIAotICAgIGlmICghSW1hZ2VEZWNvZGVyOjpzZXRTaXplKHdpZHRoLCBoZWln
aHQpKQorICAgIGlmICghSW1hZ2VEZWNvZGVyOjpzZXRTaXplKHNpemUpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICBwcmVwYXJlU2NhbGVEYXRhSWZOZWNlc3NhcnkoKTsKQEAgLTIxMywx
MCArMjEzLDEwIEBAIGJvb2wgR0lGSW1hZ2VEZWNvZGVyOjpoYXZlRGVjb2RlZFJvdyh1bnNpZ25l
ZCBmcmFtZUluZGV4LCBjb25zdCBWZWN0b3I8dW5zaWduZWQKIAogICAgIC8vIEluaXRpYWxpemUg
dGhlIGZyYW1lIGlmIG5lY2Vzc2FyeS4KICAgICBJbWFnZUZyYW1lJiBidWZmZXIgPSBtX2ZyYW1l
QnVmZmVyQ2FjaGVbZnJhbWVJbmRleF07Ci0gICAgaWYgKCgoYnVmZmVyLnN0YXR1cygpID09IElt
YWdlRnJhbWU6OkZyYW1lRW1wdHkpICYmICFpbml0RnJhbWVCdWZmZXIoZnJhbWVJbmRleCkpIHx8
ICFidWZmZXIuaGFzUGl4ZWxEYXRhKCkpCisgICAgaWYgKCgoYnVmZmVyLnN0YXR1cygpID09IElt
YWdlRnJhbWU6OkZyYW1lRW1wdHkpICYmICFpbml0RnJhbWVCdWZmZXIoZnJhbWVJbmRleCkpIHx8
ICFidWZmZXIuaGFzUGl4ZWxzKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEltYWdl
RnJhbWU6OlBpeGVsRGF0YSogY3VycmVudEFkZHJlc3MgPSBidWZmZXIuZ2V0QWRkcih4QmVnaW4s
IHlCZWdpbik7CisgICAgUkdCQTMyKiBjdXJyZW50QWRkcmVzcyA9IGJ1ZmZlci5nZXRBZGRyKHhC
ZWdpbiwgeUJlZ2luKTsKICAgICAvLyBXcml0ZSBvbmUgcm93J3Mgd29ydGggb2YgZGF0YSBpbnRv
IHRoZSBmcmFtZS4gIAogICAgIGZvciAoaW50IHggPSB4QmVnaW47IHggPCB4RW5kOyArK3gpIHsK
ICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciBzb3VyY2VWYWx1ZSA9IHJvd0J1ZmZlclsobV9z
Y2FsZWQgPyBtX3NjYWxlZENvbHVtbnNbeF0gOiB4KSAtIGZyYW1lQ29udGV4dC0+eE9mZnNldF07
CkBAIC0yNjAsNyArMjYwLDcgQEAgYm9vbCBHSUZJbWFnZURlY29kZXI6OmZyYW1lQ29tcGxldGUo
dW5zaWduZWQgZnJhbWVJbmRleCwgdW5zaWduZWQgZnJhbWVEdXJhdGlvbiwKICAgICBpZiAoIW1f
Y3VycmVudEJ1ZmZlclNhd0FscGhhKSB7CiAgICAgICAgIC8vIFRoZSB3aG9sZSBmcmFtZSB3YXMg
bm9uLXRyYW5zcGFyZW50LCBzbyBpdCdzIHBvc3NpYmxlIHRoYXQgdGhlIGVudGlyZQogICAgICAg
ICAvLyByZXN1bHRpbmcgYnVmZmVyIHdhcyBub24tdHJhbnNwYXJlbnQsIGFuZCB3ZSBjYW4gc2V0
SGFzQWxwaGEoZmFsc2UpLgotICAgICAgICBpZiAoYnVmZmVyLm9yaWdpbmFsRnJhbWVSZWN0KCku
Y29udGFpbnMoSW50UmVjdChJbnRQb2ludCgpLCBzY2FsZWRTaXplKCkpKSkKKyAgICAgICAgaWYg
KGJ1ZmZlci5waXhlbHMoKS0+cmVjdCgpLmNvbnRhaW5zKEludFJlY3QoSW50UG9pbnQoKSwgc2Nh
bGVkU2l6ZSgpKSkpCiAgICAgICAgICAgICBidWZmZXIuc2V0SGFzQWxwaGEoZmFsc2UpOwogICAg
ICAgICBlbHNlIGlmIChmcmFtZUluZGV4KSB7CiAgICAgICAgICAgICAvLyBUcmlja3kgY2FzZS4g
IFRoaXMgZnJhbWUgZG9lcyBub3QgaGF2ZSBhbHBoYSBvbmx5IGlmIGV2ZXJ5d2hlcmUKQEAgLTI4
Myw3ICsyODMsNyBAQCBib29sIEdJRkltYWdlRGVjb2Rlcjo6ZnJhbWVDb21wbGV0ZSh1bnNpZ25l
ZCBmcmFtZUluZGV4LCB1bnNpZ25lZCBmcmFtZUR1cmF0aW9uLAogICAgICAgICAgICAgLy8gVGhl
IG9ubHkgcmVtYWluaW5nIGNhc2UgaXMgYSBEaXNwb3NlT3ZlcndyaXRlQmdjb2xvciBmcmFtZS4g
IElmCiAgICAgICAgICAgICAvLyBpdCBoYWQgbm8gYWxwaGEsIGFuZCBpdHMgcmVjdCBpcyBjb250
YWluZWQgaW4gdGhlIGN1cnJlbnQgZnJhbWUncwogICAgICAgICAgICAgLy8gcmVjdCwgd2Uga25v
dyB0aGUgY3VycmVudCBmcmFtZSBoYXMgbm8gYWxwaGEuCi0gICAgICAgICAgICBpZiAoKHByZXZC
dWZmZXItPmRpc3Bvc2FsTWV0aG9kKCkgPT0gSW1hZ2VGcmFtZTo6RGlzcG9zZU92ZXJ3cml0ZUJn
Y29sb3IpICYmICFwcmV2QnVmZmVyLT5oYXNBbHBoYSgpICYmIGJ1ZmZlci5vcmlnaW5hbEZyYW1l
UmVjdCgpLmNvbnRhaW5zKHByZXZCdWZmZXItPm9yaWdpbmFsRnJhbWVSZWN0KCkpKQorICAgICAg
ICAgICAgaWYgKChwcmV2QnVmZmVyLT5kaXNwb3NhbE1ldGhvZCgpID09IEltYWdlRnJhbWU6OkRp
c3Bvc2VPdmVyd3JpdGVCZ2NvbG9yKSAmJiAhcHJldkJ1ZmZlci0+aGFzQWxwaGEoKSAmJiBidWZm
ZXIucGl4ZWxzKCktPnJlY3QoKS5jb250YWlucyhwcmV2QnVmZmVyLT5waXhlbHMoKS0+cmVjdCgp
KSkKICAgICAgICAgICAgICAgICBidWZmZXIuc2V0SGFzQWxwaGEoZmFsc2UpOwogICAgICAgICB9
CiAgICAgfQpAQCAtMzIxLDEwICszMjEsNyBAQCB2b2lkIEdJRkltYWdlRGVjb2Rlcjo6ZGVjb2Rl
KHVuc2lnbmVkIGhhbHRBdEZyYW1lLCBHSUZRdWVyeSBxdWVyeSkKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIGNvbnN0IHNpemVfdCBvbGRTaXplID0gbV9mcmFtZUJ1ZmZlckNhY2hlLnNp
emUoKTsKICAgICBtX2ZyYW1lQnVmZmVyQ2FjaGUucmVzaXplKG1fcmVhZGVyLT5pbWFnZXNDb3Vu
dCgpKTsKLSAgICBmb3IgKHNpemVfdCBpID0gb2xkU2l6ZTsgaSA8IG1fcmVhZGVyLT5pbWFnZXND
b3VudCgpOyArK2kpCi0gICAgICAgIG1fZnJhbWVCdWZmZXJDYWNoZVtpXS5zZXRQcmVtdWx0aXBs
eUFscGhhKG1fcHJlbXVsdGlwbHlBbHBoYSk7CiAKICAgICBpZiAocXVlcnkgPT0gR0lGRnJhbWVD
b3VudFF1ZXJ5KQogICAgICAgICByZXR1cm47CkBAIC0zMzMsNiArMzMwLDEyIEBAIHZvaWQgR0lG
SW1hZ2VEZWNvZGVyOjpkZWNvZGUodW5zaWduZWQgaGFsdEF0RnJhbWUsIEdJRlF1ZXJ5IHF1ZXJ5
KQogICAgICAgICBzZXRGYWlsZWQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICAKKyAg
ICBpbnQgbGVmdCA9IHVwcGVyQm91bmRTY2FsZWRYKGZyYW1lUmVjdC54KCkpOworICAgIGludCBy
aWdodCA9IGxvd2VyQm91bmRTY2FsZWRYKGZyYW1lUmVjdC5tYXhYKCksIGxlZnQpOworICAgIGlu
dCB0b3AgPSB1cHBlckJvdW5kU2NhbGVkWShmcmFtZVJlY3QueSgpKTsKKyAgICBpbnQgYm90dG9t
ID0gbG93ZXJCb3VuZFNjYWxlZFkoZnJhbWVSZWN0Lm1heFkoKSwgdG9wKTsKKyAgICBidWZmZXIt
PnBpeGVscygpLT5zZXRSZWN0KEludFJlY3QobGVmdCwgdG9wLCByaWdodCAtIGxlZnQsIGJvdHRv
bSAtIHRvcCkpOwogCiAgICAgLy8gSXQgaXMgYWxzbyBhIGZhdGFsIGVycm9yIGlmIGFsbCBkYXRh
IGlzIHJlY2VpdmVkIGJ1dCB3ZSBmYWlsZWQgdG8gZGVjb2RlCiAgICAgLy8gYWxsIGZyYW1lcyBj
b21wbGV0ZWx5LgpAQCAtMzUzLDE1ICszNTYsMTAgQEAgYm9vbCBHSUZJbWFnZURlY29kZXI6Omlu
aXRGcmFtZUJ1ZmZlcih1bnNpZ25lZCBmcmFtZUluZGV4KQogICAgICAgICBmcmFtZVJlY3Quc2V0
SGVpZ2h0KHNpemUoKS5oZWlnaHQoKSAtIGZyYW1lQ29udGV4dC0+eU9mZnNldCk7CiAKICAgICBJ
bWFnZUZyYW1lKiBjb25zdCBidWZmZXIgPSAmbV9mcmFtZUJ1ZmZlckNhY2hlW2ZyYW1lSW5kZXhd
OwotICAgIGludCBsZWZ0ID0gdXBwZXJCb3VuZFNjYWxlZFgoZnJhbWVSZWN0LngoKSk7Ci0gICAg
aW50IHJpZ2h0ID0gbG93ZXJCb3VuZFNjYWxlZFgoZnJhbWVSZWN0Lm1heFgoKSwgbGVmdCk7Ci0g
ICAgaW50IHRvcCA9IHVwcGVyQm91bmRTY2FsZWRZKGZyYW1lUmVjdC55KCkpOwotICAgIGludCBi
b3R0b20gPSBsb3dlckJvdW5kU2NhbGVkWShmcmFtZVJlY3QubWF4WSgpLCB0b3ApOwotICAgIGJ1
ZmZlci0+c2V0T3JpZ2luYWxGcmFtZVJlY3QoSW50UmVjdChsZWZ0LCB0b3AsIHJpZ2h0IC0gbGVm
dCwgYm90dG9tIC0gdG9wKSk7CiAKICAgICBpZiAoIWZyYW1lSW5kZXgpIHsKICAgICAgICAgLy8g
VGhpcyBpcyB0aGUgZmlyc3QgZnJhbWUsIHNvIHdlJ3JlIG5vdCByZWx5aW5nIG9uIGFueSBwcmV2
aW91cyBkYXRhLgotICAgICAgICBpZiAoIWJ1ZmZlci0+c2V0U2l6ZShzY2FsZWRTaXplKCkud2lk
dGgoKSwgc2NhbGVkU2l6ZSgpLmhlaWdodCgpKSkKKyAgICAgICAgaWYgKCFidWZmZXItPnNldFNp
emUoc2NhbGVkU2l6ZSgpLCBtX3ByZW11bHRpcGx5QWxwaGEpKQogICAgICAgICAgICAgcmV0dXJu
IHNldEZhaWxlZCgpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIFRoZSBzdGFydGluZyBzdGF0
ZSBmb3IgdGhpcyBmcmFtZSBkZXBlbmRzIG9uIHRoZSBwcmV2aW91cyBmcmFtZSdzCkBAIC0zODcs
MTIgKzM4NSwxMiBAQCBib29sIEdJRkltYWdlRGVjb2Rlcjo6aW5pdEZyYW1lQnVmZmVyKHVuc2ln
bmVkIGZyYW1lSW5kZXgpCiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvLyBXZSB3YW50
IHRvIGNsZWFyIHRoZSBwcmV2aW91cyBmcmFtZSB0byB0cmFuc3BhcmVudCwgd2l0aG91dAogICAg
ICAgICAgICAgLy8gYWZmZWN0aW5nIHBpeGVscyBpbiB0aGUgaW1hZ2Ugb3V0c2lkZSBvZiB0aGUg
ZnJhbWUuCi0gICAgICAgICAgICBjb25zdCBJbnRSZWN0JiBwcmV2UmVjdCA9IHByZXZCdWZmZXIt
Pm9yaWdpbmFsRnJhbWVSZWN0KCk7CisgICAgICAgICAgICBjb25zdCBJbnRSZWN0JiBwcmV2UmVj
dCA9IHByZXZCdWZmZXItPnBpeGVscygpLT5yZWN0KCk7CiAgICAgICAgICAgICBjb25zdCBJbnRT
aXplJiBidWZmZXJTaXplID0gc2NhbGVkU2l6ZSgpOwogICAgICAgICAgICAgaWYgKCFmcmFtZUlu
ZGV4IHx8IHByZXZSZWN0LmNvbnRhaW5zKEludFJlY3QoSW50UG9pbnQoKSwgc2NhbGVkU2l6ZSgp
KSkpIHsKICAgICAgICAgICAgICAgICAvLyBDbGVhcmluZyB0aGUgZmlyc3QgZnJhbWUsIG9yIGEg
ZnJhbWUgdGhlIHNpemUgb2YgdGhlIHdob2xlCiAgICAgICAgICAgICAgICAgLy8gaW1hZ2UsIHJl
c3VsdHMgaW4gYSBjb21wbGV0ZWx5IGVtcHR5IGltYWdlLgotICAgICAgICAgICAgICAgIGlmICgh
YnVmZmVyLT5zZXRTaXplKGJ1ZmZlclNpemUud2lkdGgoKSwgYnVmZmVyU2l6ZS5oZWlnaHQoKSkp
CisgICAgICAgICAgICAgICAgaWYgKCFidWZmZXItPnNldFNpemUoYnVmZmVyU2l6ZSwgbV9wcmVt
dWx0aXBseUFscGhhKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNldEZhaWxlZCgpOwog
ICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAvLyBDb3B5IHRoZSB3aG9sZSBw
cmV2aW91cyBidWZmZXIsIHRoZW4gY2xlYXIganVzdCBpdHMgZnJhbWUuCkBAIC00MDIsNiArNDAw
LDEyIEBAIGJvb2wgR0lGSW1hZ2VEZWNvZGVyOjppbml0RnJhbWVCdWZmZXIodW5zaWduZWQgZnJh
bWVJbmRleCkKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KKyAgICAKKyAgICBpbnQg
bGVmdCA9IHVwcGVyQm91bmRTY2FsZWRYKGZyYW1lUmVjdC54KCkpOworICAgIGludCByaWdodCA9
IGxvd2VyQm91bmRTY2FsZWRYKGZyYW1lUmVjdC5tYXhYKCksIGxlZnQpOworICAgIGludCB0b3Ag
PSB1cHBlckJvdW5kU2NhbGVkWShmcmFtZVJlY3QueSgpKTsKKyAgICBpbnQgYm90dG9tID0gbG93
ZXJCb3VuZFNjYWxlZFkoZnJhbWVSZWN0Lm1heFkoKSwgdG9wKTsKKyAgICBidWZmZXItPnBpeGVs
cygpLT5zZXRSZWN0KEludFJlY3QobGVmdCwgdG9wLCByaWdodCAtIGxlZnQsIGJvdHRvbSAtIHRv
cCkpOwogCiAgICAgLy8gVXBkYXRlIG91ciBzdGF0dXMgdG8gYmUgcGFydGlhbGx5IGNvbXBsZXRl
LgogICAgIGJ1ZmZlci0+c2V0U3RhdHVzKEltYWdlRnJhbWU6OkZyYW1lUGFydGlhbCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1h
Z2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYv
R0lGSW1hZ2VEZWNvZGVyLmgKaW5kZXggOTVlYzZkMGE3YjY5NjY1MmM3MDliN2I2MmQ0MWFhNGYz
YWI4ZjFlMC4uN2I4ZDg3Y2ZkNzIxYjMwOTA3MGM0OTk4OGYzNDVjOTAzNTRkYTVhMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdl
RGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dp
Zi9HSUZJbWFnZURlY29kZXIuaApAQCAtNDQsNyArNDQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIFN0cmluZyBmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuICJnaWYiOyB9CiAgICAgICAgIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEsIGJv
b2wgYWxsRGF0YVJlY2VpdmVkKSBvdmVycmlkZTsKICAgICAgICAgYm9vbCBpc1NpemVBdmFpbGFi
bGUoKSBvdmVycmlkZTsKLSAgICAgICAgYm9vbCBzZXRTaXplKHVuc2lnbmVkIHdpZHRoLCB1bnNp
Z25lZCBoZWlnaHQpIG92ZXJyaWRlOworICAgICAgICBib29sIHNldFNpemUoY29uc3QgSW50U2l6
ZSYpIG92ZXJyaWRlOwogICAgICAgICBzaXplX3QgZnJhbWVDb3VudCgpIG92ZXJyaWRlOwogICAg
ICAgICBpbnQgcmVwZXRpdGlvbkNvdW50KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgICAgIEltYWdl
RnJhbWUqIGZyYW1lQnVmZmVyQXRJbmRleChzaXplX3QgaW5kZXgpIG92ZXJyaWRlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdl
UmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9H
SUZJbWFnZVJlYWRlci5jcHAKaW5kZXggMDBkMjUyY2VmYjA1YWE1MWY4NGQ4ZGY5OTAyMjkwZWZk
NzEwNDIyZi4uYTNhNTQxNTU5MDJhMzE2NDFkOTA3NDZhYWIxODdiNjM5MWQ0MjY3YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdl
UmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9n
aWYvR0lGSW1hZ2VSZWFkZXIuY3BwCkBAIC00NDcsNyArNDQ3LDcgQEAgYm9vbCBHSUZJbWFnZVJl
YWRlcjo6cGFyc2Uoc2l6ZV90IGRhdGFQb3NpdGlvbiwgc2l6ZV90IGxlbiwgYm9vbCBwYXJzZVNp
emVPbmx5KQogCiAgICAgICAgICAgICAvLyBDQUxMQkFDSzogSW5mb3JtIHRoZSBkZWNvZGVycGx1
Z2luIG9mIG91ciBzaXplLgogICAgICAgICAgICAgLy8gTm90ZTogQSBzdWJzZXF1ZW50IGZyYW1l
IG1pZ2h0IGhhdmUgZGltZW5zaW9ucyBsYXJnZXIgdGhhbiB0aGUgInNjcmVlbiIgZGltZW5zaW9u
cy4KLSAgICAgICAgICAgIGlmIChtX2NsaWVudCAmJiAhbV9jbGllbnQtPnNldFNpemUobV9zY3Jl
ZW5XaWR0aCwgbV9zY3JlZW5IZWlnaHQpKQorICAgICAgICAgICAgaWYgKG1fY2xpZW50ICYmICFt
X2NsaWVudC0+c2V0U2l6ZShJbnRTaXplKG1fc2NyZWVuV2lkdGgsIG1fc2NyZWVuSGVpZ2h0KSkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgICAgICBtX3NjcmVlbkJn
Y29sb3IgPSBjdXJyZW50Q29tcG9uZW50WzVdOwpAQCAtNjY0LDcgKzY2NCw3IEBAIGJvb2wgR0lG
SW1hZ2VSZWFkZXI6OnBhcnNlKHNpemVfdCBkYXRhUG9zaXRpb24sIHNpemVfdCBsZW4sIGJvb2wg
cGFyc2VTaXplT25seSkKICAgICAgICAgICAgICAgICB5T2Zmc2V0ID0gMDsKIAogICAgICAgICAg
ICAgICAgIC8vIENBTExCQUNLOiBJbmZvcm0gdGhlIGRlY29kZXJwbHVnaW4gb2Ygb3VyIHNpemUu
Ci0gICAgICAgICAgICAgICAgaWYgKG1fY2xpZW50ICYmICFtX2NsaWVudC0+c2V0U2l6ZShtX3Nj
cmVlbldpZHRoLCBtX3NjcmVlbkhlaWdodCkpCisgICAgICAgICAgICAgICAgaWYgKG1fY2xpZW50
ICYmICFtX2NsaWVudC0+c2V0U2l6ZShJbnRTaXplKG1fc2NyZWVuV2lkdGgsIG1fc2NyZWVuSGVp
Z2h0KSkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNv
L0lDT0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBhNTkyMDFiNTZlNWIyMmUyYTg1MWMw
Yzk5MmVhNGIxZjg4Y2MzYjRmLi42NmNmMTkxOTQzOGJjMDNjMTM5MWJlZWExNjQwNzU0MWMxYWY4
NmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9p
Y28vSUNPSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcApAQCAtODgsMjEgKzg4LDIwIEBAIElu
dFNpemUgSUNPSW1hZ2VEZWNvZGVyOjpmcmFtZVNpemVBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vi
c2FtcGxpbmdMZXZlbCkKICAgICByZXR1cm4gKGluZGV4ICYmIChpbmRleCA8IG1fZGlyRW50cmll
cy5zaXplKCkpKSA/IG1fZGlyRW50cmllc1tpbmRleF0ubV9zaXplIDogc2l6ZSgpOwogfQogCi1i
b29sIElDT0ltYWdlRGVjb2Rlcjo6c2V0U2l6ZSh1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVp
Z2h0KQorYm9vbCBJQ09JbWFnZURlY29kZXI6OnNldFNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkK
IHsKICAgICAvLyBUaGUgc2l6ZSBjYWxjdWxhdGVkIGluc2lkZSB0aGUgQk1QSW1hZ2VSZWFkZXIg
aGFkIGJldHRlciBtYXRjaCB0aGUgb25lIGluCiAgICAgLy8gdGhlIGljb24gZGlyZWN0b3J5Lgot
ICAgIHJldHVybiBtX2ZyYW1lU2l6ZS5pc0VtcHR5KCkgPyBJbWFnZURlY29kZXI6OnNldFNpemUo
d2lkdGgsIGhlaWdodCkgOiAoKEludFNpemUod2lkdGgsIGhlaWdodCkgPT0gbV9mcmFtZVNpemUp
IHx8IHNldEZhaWxlZCgpKTsKKyAgICByZXR1cm4gbV9mcmFtZVNpemUuaXNFbXB0eSgpID8gSW1h
Z2VEZWNvZGVyOjpzZXRTaXplKHNpemUpIDogKChzaXplID09IG1fZnJhbWVTaXplKSB8fCBzZXRG
YWlsZWQoKSk7CiB9CiAKIHNpemVfdCBJQ09JbWFnZURlY29kZXI6OmZyYW1lQ291bnQoKQogewog
ICAgIGRlY29kZSgwLCB0cnVlKTsKLSAgICBpZiAobV9mcmFtZUJ1ZmZlckNhY2hlLmlzRW1wdHko
KSkgeworCisgICAgaWYgKG1fZnJhbWVCdWZmZXJDYWNoZS5pc0VtcHR5KCkpCiAgICAgICAgIG1f
ZnJhbWVCdWZmZXJDYWNoZS5yZXNpemUobV9kaXJFbnRyaWVzLnNpemUoKSk7Ci0gICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9kaXJFbnRyaWVzLnNpemUoKTsgKytpKQotICAgICAgICAg
ICAgbV9mcmFtZUJ1ZmZlckNhY2hlW2ldLnNldFByZW11bHRpcGx5QWxwaGEobV9wcmVtdWx0aXBs
eUFscGhhKTsKLSAgICB9CisKICAgICAvLyBDQVVUSU9OOiBXZSBtdXN0IG5vdCByZXNpemUgbV9m
cmFtZUJ1ZmZlckNhY2hlIGFnYWluIGFmdGVyIHRoaXMsIGFzCiAgICAgLy8gZGVjb2RlQXRJbmRl
eCgpIG1heSBnaXZlIGEgQk1QSW1hZ2VSZWFkZXIgYSBwb2ludGVyIHRvIG9uZSBvZiB0aGUKICAg
ICAvLyBlbnRyaWVzLgpAQCAtMjc5LDcgKzI3OCw3IEBAIGJvb2wgSUNPSW1hZ2VEZWNvZGVyOjpw
cm9jZXNzRGlyZWN0b3J5RW50cmllcygpCiAgICAgY29uc3QgSWNvbkRpcmVjdG9yeUVudHJ5JiBk
aXJFbnRyeSA9IG1fZGlyRW50cmllcy5maXJzdCgpOwogICAgIC8vIFRlY2huaWNhbGx5LCB0aGlz
IG5leHQgY2FsbCBzaG91bGRuJ3QgYmUgYWJsZSB0byBmYWlsLCBzaW5jZSB0aGUgd2lkdGgKICAg
ICAvLyBhbmQgaGVpZ2h0IGhlcmUgYXJlIGVhY2ggPD0gMjU2LCBhbmQgfG1fZnJhbWVTaXplfCBp
cyBlbXB0eS4KLSAgICByZXR1cm4gc2V0U2l6ZShkaXJFbnRyeS5tX3NpemUud2lkdGgoKSwgZGly
RW50cnkubV9zaXplLmhlaWdodCgpKTsKKyAgICByZXR1cm4gc2V0U2l6ZShkaXJFbnRyeS5tX3Np
emUpOwogfQogCiBJQ09JbWFnZURlY29kZXI6Okljb25EaXJlY3RvcnlFbnRyeSBJQ09JbWFnZURl
Y29kZXI6OnJlYWREaXJlY3RvcnlFbnRyeSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmgKaW5kZXgg
NTgwYzY3YTg4M2E0MGI2ZTU0MjBmNjVhZTM0NDg4NDU3NDE5MzhlYy4uZDMzZDA1OGExNTk2MDdk
Zjg5MzljZWExY2Q3YTZmMzE0NGI3MjJlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuaApAQCAt
NDksNyArNDksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgaXNTaXplQXZh
aWxhYmxlKCkgb3ZlcnJpZGU7CiAgICAgICAgIEludFNpemUgc2l6ZSgpIG92ZXJyaWRlOwogICAg
ICAgICBJbnRTaXplIGZyYW1lU2l6ZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsKSBv
dmVycmlkZTsKLSAgICAgICAgYm9vbCBzZXRTaXplKHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBo
ZWlnaHQpIG92ZXJyaWRlOworICAgICAgICBib29sIHNldFNpemUoY29uc3QgSW50U2l6ZSYpIG92
ZXJyaWRlOwogICAgICAgICBzaXplX3QgZnJhbWVDb3VudCgpIG92ZXJyaWRlOwogICAgICAgICBJ
bWFnZUZyYW1lKiBmcmFtZUJ1ZmZlckF0SW5kZXgoc2l6ZV90KSBvdmVycmlkZTsKICAgICAgICAg
Ly8gQ0FVVElPTjogc2V0RmFpbGVkKCkgZGVsZXRlcyBhbGwgcmVhZGVycyBhbmQgZGVjb2RlcnMu
ICBCZSBjYXJlZnVsIHRvCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBlZTY2
YWMxNGQ0YmUwN2NhOWFmZmIyYTNhZmY4OWViZmE2MmZiMTJlLi43ZTNkZDg4ZjVmMmI0MWYzM2Ni
NzA0NzJkOGFhNmEzYzk2YzAwNDQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAK
QEAgLTE5NiwzNiArMTk2LDYgQEAgc3RhdGljIEltYWdlT3JpZW50YXRpb24gcmVhZEltYWdlT3Jp
ZW50YXRpb24oanBlZ19kZWNvbXByZXNzX3N0cnVjdCogaW5mbykKICAgICByZXR1cm4gSW1hZ2VP
cmllbnRhdGlvbigpOwogfQogCi1zdGF0aWMgQ29sb3JQcm9maWxlIHJlYWRDb2xvclByb2ZpbGUo
anBlZ19kZWNvbXByZXNzX3N0cnVjdCogaW5mbykKLXsKLSNpZiBVU0UoSUNDSlBFRykKLSAgICBK
T0NURVQqIHByb2ZpbGU7Ci0gICAgdW5zaWduZWQgaW50IHByb2ZpbGVMZW5ndGg7Ci0KLSAgICBp
ZiAoIXJlYWRfaWNjX3Byb2ZpbGUoaW5mbywgJnByb2ZpbGUsICZwcm9maWxlTGVuZ3RoKSkKLSAg
ICAgICAgcmV0dXJuIENvbG9yUHJvZmlsZSgpOwotCi0gICAgLy8gT25seSBhY2NlcHQgUkdCIGNv
bG9yIHByb2ZpbGVzIGZyb20gaW5wdXQgY2xhc3MgZGV2aWNlcy4KLSAgICBib29sIGlnbm9yZVBy
b2ZpbGUgPSBmYWxzZTsKLSAgICBjaGFyKiBwcm9maWxlRGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8
Y2hhcio+KHByb2ZpbGUpOwotICAgIGlmIChwcm9maWxlTGVuZ3RoIDwgSW1hZ2VEZWNvZGVyOjpp
Y2NDb2xvclByb2ZpbGVIZWFkZXJMZW5ndGgpCi0gICAgICAgIGlnbm9yZVByb2ZpbGUgPSB0cnVl
OwotICAgIGVsc2UgaWYgKCFJbWFnZURlY29kZXI6OnJnYkNvbG9yUHJvZmlsZShwcm9maWxlRGF0
YSwgcHJvZmlsZUxlbmd0aCkpCi0gICAgICAgIGlnbm9yZVByb2ZpbGUgPSB0cnVlOwotICAgIGVs
c2UgaWYgKCFJbWFnZURlY29kZXI6OmlucHV0RGV2aWNlQ29sb3JQcm9maWxlKHByb2ZpbGVEYXRh
LCBwcm9maWxlTGVuZ3RoKSkKLSAgICAgICAgaWdub3JlUHJvZmlsZSA9IHRydWU7Ci0KLSAgICBD
b2xvclByb2ZpbGUgY29sb3JQcm9maWxlOwotICAgIGlmICghaWdub3JlUHJvZmlsZSkKLSAgICAg
ICAgY29sb3JQcm9maWxlLmFwcGVuZChwcm9maWxlRGF0YSwgcHJvZmlsZUxlbmd0aCk7Ci0gICAg
ZnJlZShwcm9maWxlKTsKLSAgICByZXR1cm4gY29sb3JQcm9maWxlOwotI2Vsc2UKLSAgICBVTlVT
RURfUEFSQU0oaW5mbyk7Ci0gICAgcmV0dXJuIENvbG9yUHJvZmlsZSgpOwotI2VuZGlmCi19Ci0K
IGNsYXNzIEpQRUdJbWFnZVJlYWRlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CkBAIC0zNTIsNyArMzIyLDcgQEAgcHVibGljOgogICAgICAgICAgICAgbV9zdGF0ZSA9
IEpQRUdfU1RBUlRfREVDT01QUkVTUzsKIAogICAgICAgICAgICAgLy8gV2UgY2FuIGZpbGwgaW4g
dGhlIHNpemUgbm93IHRoYXQgdGhlIGhlYWRlciBpcyBhdmFpbGFibGUuCi0gICAgICAgICAgICBp
ZiAoIW1fZGVjb2Rlci0+c2V0U2l6ZShtX2luZm8uaW1hZ2Vfd2lkdGgsIG1faW5mby5pbWFnZV9o
ZWlnaHQpKQorICAgICAgICAgICAgaWYgKCFtX2RlY29kZXItPnNldFNpemUoSW50U2l6ZShtX2lu
Zm8uaW1hZ2Vfd2lkdGgsIG1faW5mby5pbWFnZV9oZWlnaHQpKSkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKICAgICAgICAgICAgIG1fZGVjb2Rlci0+c2V0T3JpZW50YXRpb24ocmVh
ZEltYWdlT3JpZW50YXRpb24oaW5mbygpKSk7CkBAIC0zNjMsMTMgKzMzMyw2IEBAIHB1YmxpYzoK
ICAgICAgICAgICAgIGlmIChtX2RlY29kZXItPndpbGxEb3duU2FtcGxlKCkgJiYgdHVyYm9Td2l6
emxlZChtX2luZm8ub3V0X2NvbG9yX3NwYWNlKSkKICAgICAgICAgICAgICAgICBtX2luZm8ub3V0
X2NvbG9yX3NwYWNlID0gSkNTX1JHQjsKICNlbmRpZgotICAgICAgICAgICAgLy8gQWxsb3cgY29s
b3IgbWFuYWdlbWVudCBvZiB0aGUgZGVjb2RlZCBSR0JBIHBpeGVscyBpZiBwb3NzaWJsZS4KLSAg
ICAgICAgICAgIGlmICghbV9kZWNvZGVyLT5pZ25vcmVzR2FtbWFBbmRDb2xvclByb2ZpbGUoKSkg
ewotICAgICAgICAgICAgICAgIENvbG9yUHJvZmlsZSByZ2JJbnB1dERldmljZUNvbG9yUHJvZmls
ZSA9IHJlYWRDb2xvclByb2ZpbGUoaW5mbygpKTsKLSAgICAgICAgICAgICAgICBpZiAoIXJnYklu
cHV0RGV2aWNlQ29sb3JQcm9maWxlLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICAgICAgbV9k
ZWNvZGVyLT5zZXRDb2xvclByb2ZpbGUocmdiSW5wdXREZXZpY2VDb2xvclByb2ZpbGUpOwotICAg
ICAgICAgICAgfQotCiAgICAgICAgICAgICAvLyBEb24ndCBhbGxvY2F0ZSBhIGdpYW50IGFuZCBz
dXBlcmZsdW91cyBtZW1vcnkgYnVmZmVyIHdoZW4gdGhlCiAgICAgICAgICAgICAvLyBpbWFnZSBp
cyBhIHNlcXVlbnRpYWwgSlBFRy4KICAgICAgICAgICAgIG1faW5mby5idWZmZXJlZF9pbWFnZSA9
IGpwZWdfaGFzX211bHRpcGxlX3NjYW5zKCZtX2luZm8pOwpAQCAtNTU2LDkgKzUxOSw5IEBAIGJv
b2wgSlBFR0ltYWdlRGVjb2Rlcjo6aXNTaXplQXZhaWxhYmxlKCkKICAgICByZXR1cm4gSW1hZ2VE
ZWNvZGVyOjppc1NpemVBdmFpbGFibGUoKTsKIH0KIAotYm9vbCBKUEVHSW1hZ2VEZWNvZGVyOjpz
ZXRTaXplKHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQpCitib29sIEpQRUdJbWFnZURl
Y29kZXI6OnNldFNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKLSAgICBpZiAoIUltYWdlRGVj
b2Rlcjo6c2V0U2l6ZSh3aWR0aCwgaGVpZ2h0KSkKKyAgICBpZiAoIUltYWdlRGVjb2Rlcjo6c2V0
U2l6ZShzaXplKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcHJlcGFyZVNjYWxlRGF0
YUlmTmVjZXNzYXJ5KCk7CkBAIC01NzAsMTAgKzUzMyw4IEBAIEltYWdlRnJhbWUqIEpQRUdJbWFn
ZURlY29kZXI6OmZyYW1lQnVmZmVyQXRJbmRleChzaXplX3QgaW5kZXgpCiAgICAgaWYgKGluZGV4
KQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGlmIChtX2ZyYW1lQnVmZmVyQ2FjaGUuaXNFbXB0
eSgpKSB7CisgICAgaWYgKG1fZnJhbWVCdWZmZXJDYWNoZS5pc0VtcHR5KCkpCiAgICAgICAgIG1f
ZnJhbWVCdWZmZXJDYWNoZS5yZXNpemUoMSk7Ci0gICAgICAgIG1fZnJhbWVCdWZmZXJDYWNoZVsw
XS5zZXRQcmVtdWx0aXBseUFscGhhKG1fcHJlbXVsdGlwbHlBbHBoYSk7Ci0gICAgfQogCiAgICAg
SW1hZ2VGcmFtZSYgZnJhbWUgPSBtX2ZyYW1lQnVmZmVyQ2FjaGVbMF07CiAgICAgaWYgKGZyYW1l
LnN0YXR1cygpICE9IEltYWdlRnJhbWU6OkZyYW1lQ29tcGxldGUpCkBAIC01ODgsNyArNTQ5LDcg
QEAgYm9vbCBKUEVHSW1hZ2VEZWNvZGVyOjpzZXRGYWlsZWQoKQogfQogCiB0ZW1wbGF0ZSA8Sl9D
T0xPUl9TUEFDRSBjb2xvclNwYWNlPgotdm9pZCBzZXRQaXhlbChJbWFnZUZyYW1lJiBidWZmZXIs
IEltYWdlRnJhbWU6OlBpeGVsRGF0YSogY3VycmVudEFkZHJlc3MsIEpTQU1QQVJSQVkgc2FtcGxl
cywgaW50IGNvbHVtbikKK3ZvaWQgc2V0UGl4ZWwoSW1hZ2VGcmFtZSYgYnVmZmVyLCBSR0JBMzIq
IGN1cnJlbnRBZGRyZXNzLCBKU0FNUEFSUkFZIHNhbXBsZXMsIGludCBjb2x1bW4pCiB7CiAgICAg
SlNBTVBMRSoganNhbXBsZSA9ICpzYW1wbGVzICsgY29sdW1uICogKGNvbG9yU3BhY2UgPT0gSkNT
X1JHQiA/IDMgOiA0KTsKIApAQCAtNjMxLDcgKzU5Miw3IEBAIGJvb2wgSlBFR0ltYWdlRGVjb2Rl
cjo6b3V0cHV0U2NhbmxpbmVzKEltYWdlRnJhbWUmIGJ1ZmZlcikKICAgICAgICAgaWYgKGRlc3RZ
IDwgMCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIEltYWdlRnJhbWU6OlBpeGVs
RGF0YSogY3VycmVudEFkZHJlc3MgPSBidWZmZXIuZ2V0QWRkcigwLCBkZXN0WSk7CisgICAgICAg
IFJHQkEzMiogY3VycmVudEFkZHJlc3MgPSBidWZmZXIuZ2V0QWRkcigwLCBkZXN0WSk7CiAgICAg
ICAgIGZvciAoaW50IHggPSAwOyB4IDwgd2lkdGg7ICsreCkgewogICAgICAgICAgICAgc2V0UGl4
ZWw8Y29sb3JTcGFjZT4oYnVmZmVyLCBjdXJyZW50QWRkcmVzcywgc2FtcGxlcywgaXNTY2FsZWQg
PyBtX3NjYWxlZENvbHVtbnNbeF0gOiB4KTsKICAgICAgICAgICAgICsrY3VycmVudEFkZHJlc3M7
CkBAIC02NTQsMTYgKzYxNSwxMiBAQCBib29sIEpQRUdJbWFnZURlY29kZXI6Om91dHB1dFNjYW5s
aW5lcygpCiAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgZnJhbWVidWZmZXIgaWYgbmVlZGVkLgogICAg
IEltYWdlRnJhbWUmIGJ1ZmZlciA9IG1fZnJhbWVCdWZmZXJDYWNoZVswXTsKICAgICBpZiAoYnVm
ZmVyLnN0YXR1cygpID09IEltYWdlRnJhbWU6OkZyYW1lRW1wdHkpIHsKLSAgICAgICAgaWYgKCFi
dWZmZXIuc2V0U2l6ZShzY2FsZWRTaXplKCkud2lkdGgoKSwgc2NhbGVkU2l6ZSgpLmhlaWdodCgp
KSkKKyAgICAgICAgaWYgKCFidWZmZXIuc2V0U2l6ZShzY2FsZWRTaXplKCksIG1fcHJlbXVsdGlw
bHlBbHBoYSkpCiAgICAgICAgICAgICByZXR1cm4gc2V0RmFpbGVkKCk7CiAgICAgICAgIGJ1ZmZl
ci5zZXRTdGF0dXMoSW1hZ2VGcmFtZTo6RnJhbWVQYXJ0aWFsKTsKICAgICAgICAgLy8gVGhlIGJ1
ZmZlciBpcyB0cmFuc3BhcmVudCBvdXRzaWRlIHRoZSBkZWNvZGVkIGFyZWEgd2hpbGUgdGhlIGlt
YWdlIGlzCiAgICAgICAgIC8vIGxvYWRpbmcuIFRoZSBjb21wbGV0ZWQgaW1hZ2Ugd2lsbCBiZSBt
YXJrZWQgZnVsbHkgb3BhcXVlIGluIGpwZWdDb21wbGV0ZSgpLgogICAgICAgICBidWZmZXIuc2V0
SGFzQWxwaGEodHJ1ZSk7Ci0gICAgICAgIGJ1ZmZlci5zZXRDb2xvclByb2ZpbGUobV9jb2xvclBy
b2ZpbGUpOwotCi0gICAgICAgIC8vIEZvciBKUEVHcywgdGhlIGZyYW1lIGFsd2F5cyBmaWxscyB0
aGUgZW50aXJlIGltYWdlLgotICAgICAgICBidWZmZXIuc2V0T3JpZ2luYWxGcmFtZVJlY3QoSW50
UmVjdChJbnRQb2ludCgpLCBzaXplKCkpKTsKICAgICB9CiAKICAgICBqcGVnX2RlY29tcHJlc3Nf
c3RydWN0KiBpbmZvID0gbV9yZWFkZXItPmluZm8oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVy
LmgKaW5kZXggNmMxZmMwNDI3MzIyMDM3NWJjNmEyNWVjMTk4ZjhjOGE1MTAxNDg2Yy4uZmMyM2Zi
ZDk2MzdiNTNhZWU2NjUzM2I2YWFiNGY3YjI2OGRjMGVjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VE
ZWNvZGVyLmgKQEAgLTUwLDcgKzUwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAv
LyBJbWFnZURlY29kZXIKICAgICAgICAgU3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gImpwZyI7IH0KICAgICAgICAgYm9vbCBpc1NpemVBdmFpbGFibGUo
KSBvdmVycmlkZTsKLSAgICAgICAgYm9vbCBzZXRTaXplKHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25l
ZCBoZWlnaHQpIG92ZXJyaWRlOworICAgICAgICBib29sIHNldFNpemUoY29uc3QgSW50U2l6ZSYp
IG92ZXJyaWRlOwogICAgICAgICBJbWFnZUZyYW1lKiBmcmFtZUJ1ZmZlckF0SW5kZXgoc2l6ZV90
IGluZGV4KSBvdmVycmlkZTsKICAgICAgICAgLy8gQ0FVVElPTjogc2V0RmFpbGVkKCkgZGVsZXRl
cyB8bV9yZWFkZXJ8LiAgQmUgY2FyZWZ1bCB0byBhdm9pZAogICAgICAgICAvLyBhY2Nlc3Npbmcg
ZGVsZXRlZCBtZW1vcnksIGVzcGVjaWFsbHkgd2hlbiBjYWxsaW5nIHRoaXMgZnJvbSBpbnNpZGUK
QEAgLTY2LDcgKzY2LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIG91dHB1
dFNjYW5saW5lcygpOwogICAgICAgICB2b2lkIGpwZWdDb21wbGV0ZSgpOwogCi0gICAgICAgIHZv
aWQgc2V0Q29sb3JQcm9maWxlKGNvbnN0IENvbG9yUHJvZmlsZSYgY29sb3JQcm9maWxlKSB7IG1f
Y29sb3JQcm9maWxlID0gY29sb3JQcm9maWxlOyB9CiAgICAgICAgIHZvaWQgc2V0T3JpZW50YXRp
b24oSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikgeyBtX29yaWVudGF0aW9uID0gb3JpZW50
YXRpb247IH0KIAogICAgIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwCmluZGV4
IGU2NDRhNzExMGVmY2I1NDBkODljZTFiYTgxMTAwYmM0ODIzYjE4ZjIuLjA1NDVhMGQ2ZDZiOGE1
MDNmNWEyOTQ0ZGFmNTIyM2Q4NGNhOTkwNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3Bw
CkBAIC0yMzUsOSArMjM1LDkgQEAgYm9vbCBQTkdJbWFnZURlY29kZXI6OmlzU2l6ZUF2YWlsYWJs
ZSgpCiAgICAgcmV0dXJuIEltYWdlRGVjb2Rlcjo6aXNTaXplQXZhaWxhYmxlKCk7CiB9CiAKLWJv
b2wgUE5HSW1hZ2VEZWNvZGVyOjpzZXRTaXplKHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWln
aHQpCitib29sIFBOR0ltYWdlRGVjb2Rlcjo6c2V0U2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQog
ewotICAgIGlmICghSW1hZ2VEZWNvZGVyOjpzZXRTaXplKHdpZHRoLCBoZWlnaHQpKQorICAgIGlm
ICghSW1hZ2VEZWNvZGVyOjpzZXRTaXplKHNpemUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICBwcmVwYXJlU2NhbGVEYXRhSWZOZWNlc3NhcnkoKTsKQEAgLTI1NywxMCArMjU3LDggQEAg
SW1hZ2VGcmFtZSogUE5HSW1hZ2VEZWNvZGVyOjpmcmFtZUJ1ZmZlckF0SW5kZXgoc2l6ZV90IGlu
ZGV4KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICNlbmRpZgogCi0gICAgaWYgKG1fZnJhbWVC
dWZmZXJDYWNoZS5pc0VtcHR5KCkpIHsKKyAgICBpZiAobV9mcmFtZUJ1ZmZlckNhY2hlLmlzRW1w
dHkoKSkKICAgICAgICAgbV9mcmFtZUJ1ZmZlckNhY2hlLnJlc2l6ZSgxKTsKLSAgICAgICAgbV9m
cmFtZUJ1ZmZlckNhY2hlWzBdLnNldFByZW11bHRpcGx5QWxwaGEobV9wcmVtdWx0aXBseUFscGhh
KTsKLSAgICB9CiAKICAgICBJbWFnZUZyYW1lJiBmcmFtZSA9IG1fZnJhbWVCdWZmZXJDYWNoZVtp
bmRleF07CiAgICAgaWYgKGZyYW1lLnN0YXR1cygpICE9IEltYWdlRnJhbWU6OkZyYW1lQ29tcGxl
dGUpCkBAIC0yNzYsMzcgKzI3NCw2IEBAIGJvb2wgUE5HSW1hZ2VEZWNvZGVyOjpzZXRGYWlsZWQo
KQogICAgIHJldHVybiBJbWFnZURlY29kZXI6OnNldEZhaWxlZCgpOwogfQogCi1zdGF0aWMgdm9p
ZCByZWFkQ29sb3JQcm9maWxlKHBuZ19zdHJ1Y3RwIHBuZywgcG5nX2luZm9wIGluZm8sIENvbG9y
UHJvZmlsZSYgY29sb3JQcm9maWxlKQotewotICAgIEFTU0VSVChjb2xvclByb2ZpbGUuaXNFbXB0
eSgpKTsKLQotI2lmZGVmIFBOR19pQ0NQX1NVUFBPUlRFRAotICAgIGNoYXIqIHByb2ZpbGVOYW1l
OwotICAgIGludCBjb21wcmVzc2lvblR5cGU7Ci0jaWYgKFBOR19MSUJQTkdfVkVSIDwgMTA1MDAp
Ci0gICAgcG5nX2NoYXJwIHByb2ZpbGU7Ci0jZWxzZQotICAgIHBuZ19ieXRlcCBwcm9maWxlOwot
I2VuZGlmCi0gICAgcG5nX3VpbnRfMzIgcHJvZmlsZUxlbmd0aDsKLSAgICBpZiAoIXBuZ19nZXRf
aUNDUChwbmcsIGluZm8sICZwcm9maWxlTmFtZSwgJmNvbXByZXNzaW9uVHlwZSwgJnByb2ZpbGUs
ICZwcm9maWxlTGVuZ3RoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gT25seSBhY2NlcHQg
UkdCIGNvbG9yIHByb2ZpbGVzIGZyb20gaW5wdXQgY2xhc3MgZGV2aWNlcy4KLSAgICBib29sIGln
bm9yZVByb2ZpbGUgPSBmYWxzZTsKLSAgICBjaGFyKiBwcm9maWxlRGF0YSA9IHJlaW50ZXJwcmV0
X2Nhc3Q8Y2hhcio+KHByb2ZpbGUpOwotICAgIGlmIChwcm9maWxlTGVuZ3RoIDwgSW1hZ2VEZWNv
ZGVyOjppY2NDb2xvclByb2ZpbGVIZWFkZXJMZW5ndGgpCi0gICAgICAgIGlnbm9yZVByb2ZpbGUg
PSB0cnVlOwotICAgIGVsc2UgaWYgKCFJbWFnZURlY29kZXI6OnJnYkNvbG9yUHJvZmlsZShwcm9m
aWxlRGF0YSwgcHJvZmlsZUxlbmd0aCkpCi0gICAgICAgIGlnbm9yZVByb2ZpbGUgPSB0cnVlOwot
ICAgIGVsc2UgaWYgKCFJbWFnZURlY29kZXI6OmlucHV0RGV2aWNlQ29sb3JQcm9maWxlKHByb2Zp
bGVEYXRhLCBwcm9maWxlTGVuZ3RoKSkKLSAgICAgICAgaWdub3JlUHJvZmlsZSA9IHRydWU7Ci0K
LSAgICBpZiAoIWlnbm9yZVByb2ZpbGUpCi0gICAgICAgIGNvbG9yUHJvZmlsZS5hcHBlbmQocHJv
ZmlsZURhdGEsIHByb2ZpbGVMZW5ndGgpOwotI2VuZGlmCi19Ci0KIHZvaWQgUE5HSW1hZ2VEZWNv
ZGVyOjpoZWFkZXJBdmFpbGFibGUoKQogewogICAgIHBuZ19zdHJ1Y3RwIHBuZyA9IG1fcmVhZGVy
LT5wbmdQdHIoKTsKQEAgLTMyNiw3ICsyOTMsNyBAQCB2b2lkIFBOR0ltYWdlRGVjb2Rlcjo6aGVh
ZGVyQXZhaWxhYmxlKCkKICAgICAvLyB3aWxsIGNlYXNlIHRvIGV4aXN0LiAgTm90ZSB0aGF0IHdl
J2xsIHN0aWxsIHByb3Blcmx5IHNldCB0aGUgZmFpbHVyZSBmbGFnCiAgICAgLy8gaW4gdGhpcyBj
YXNlIGFzIHNvb24gYXMgd2UgbG9uZ2ptcCgpLgogICAgIG1fZG9Ob3RoaW5nT25GYWlsdXJlID0g
dHJ1ZTsKLSAgICBib29sIHJlc3VsdCA9IHNldFNpemUod2lkdGgsIGhlaWdodCk7CisgICAgYm9v
bCByZXN1bHQgPSBzZXRTaXplKEludFNpemUod2lkdGgsIGhlaWdodCkpOwogICAgIG1fZG9Ob3Ro
aW5nT25GYWlsdXJlID0gZmFsc2U7CiAgICAgaWYgKCFyZXN1bHQpIHsKICAgICAgICAgbG9uZ2pt
cChKTVBCVUYocG5nKSwgMSk7CkBAIC00MDUsMTYgKzM3Miw2IEBAIHZvaWQgUE5HSW1hZ2VEZWNv
ZGVyOjpoZWFkZXJBdmFpbGFibGUoKQogICAgIGlmIChjb2xvclR5cGUgPT0gUE5HX0NPTE9SX1RZ
UEVfR1JBWSB8fCBjb2xvclR5cGUgPT0gUE5HX0NPTE9SX1RZUEVfR1JBWV9BTFBIQSkKICAgICAg
ICAgcG5nX3NldF9ncmF5X3RvX3JnYihwbmcpOwogCi0gICAgaWYgKChjb2xvclR5cGUgJiBQTkdf
Q09MT1JfTUFTS19DT0xPUikgJiYgIW1faWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGUpIHsKLSAg
ICAgICAgLy8gV2Ugb25seSBzdXBwb3J0IGNvbG9yIHByb2ZpbGVzIGZvciBjb2xvciBQQUxFVFRF
IGFuZCBSR0JbQV0gUE5HLiBTdXBwb3J0aW5nCi0gICAgICAgIC8vIGNvbG9yIHByb2ZpbGVzIGZv
ciBncmF5LXNjYWxlIGltYWdlcyBpcyBzbGlnaHRseSB0cmlja3ksIGF0IGxlYXN0IHVzaW5nIHRo
ZQotICAgICAgICAvLyBDb3JlR3JhcGhpY3MgSUNDIGxpYnJhcnksIGJlY2F1c2Ugd2UgZXhwYW5k
IGdyYXktc2NhbGUgaW1hZ2VzIHRvIFJHQiBidXQgd2UKLSAgICAgICAgLy8gZG8gbm90IHNpbWls
YXJseSB0cmFuc2Zvcm0gdGhlIGNvbG9yIHByb2ZpbGUuIFdlJ2QgZWl0aGVyIG5lZWQgdG8gdHJh
bnNmb3JtCi0gICAgICAgIC8vIHRoZSBjb2xvciBwcm9maWxlIG9yIHdlJ2QgbmVlZCB0byBkZWNv
ZGUgaW50byBhIGdyYXktc2NhbGUgaW1hZ2UgYnVmZmVyIGFuZAotICAgICAgICAvLyBoYW5kIHRo
YXQgdG8gQ29yZUdyYXBoaWNzLgotICAgICAgICByZWFkQ29sb3JQcm9maWxlKHBuZywgaW5mbywg
bV9jb2xvclByb2ZpbGUpOwotICAgIH0KLQogICAgIC8vIERlYWwgd2l0aCBnYW1tYSBhbmQga2Vl
cCBpdCB1bmRlciBvdXIgY29udHJvbC4KICAgICBkb3VibGUgZ2FtbWE7CiAgICAgaWYgKCFtX2ln
bm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlICYmIHBuZ19nZXRfZ0FNQShwbmcsIGluZm8sICZnYW1t
YSkpIHsKQEAgLTQ1MiwxOSArNDA5LDE5IEBAIHZvaWQgUE5HSW1hZ2VEZWNvZGVyOjpoZWFkZXJB
dmFpbGFibGUoKQogICAgIH0KIH0KIAotc3RhdGljIGlubGluZSB2b2lkIHNldFBpeGVsUkdCKElt
YWdlRnJhbWU6OlBpeGVsRGF0YSogZGVzdCwgcG5nX2J5dGVwIHBpeGVsKQorc3RhdGljIGlubGlu
ZSB2b2lkIHNldFBpeGVsUkdCKFJHQkEzMiogZGVzdCwgcG5nX2J5dGVwIHBpeGVsKQogewogICAg
ICpkZXN0ID0gMHhGRjAwMDAwMFUgfCBwaXhlbFswXSA8PCAxNiB8IHBpeGVsWzFdIDw8IDggfCBw
aXhlbFsyXTsKIH0KIAotc3RhdGljIGlubGluZSB2b2lkIHNldFBpeGVsUkdCQShJbWFnZUZyYW1l
OjpQaXhlbERhdGEqIGRlc3QsIHBuZ19ieXRlcCBwaXhlbCwgdW5zaWduZWQgY2hhciYgbm9uVHJp
dmlhbEFscGhhTWFzaykKK3N0YXRpYyBpbmxpbmUgdm9pZCBzZXRQaXhlbFJHQkEoUkdCQTMyKiBk
ZXN0LCBwbmdfYnl0ZXAgcGl4ZWwsIHVuc2lnbmVkIGNoYXImIG5vblRyaXZpYWxBbHBoYU1hc2sp
CiB7CiAgICAgdW5zaWduZWQgY2hhciBhID0gcGl4ZWxbM107CiAgICAgKmRlc3QgPSBhIDw8IDI0
IHwgcGl4ZWxbMF0gPDwgMTYgfCBwaXhlbFsxXSA8PCA4IHwgcGl4ZWxbMl07CiAgICAgbm9uVHJp
dmlhbEFscGhhTWFzayB8PSAoMjU1IC0gYSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBzZXRQ
aXhlbFByZW11bHRpcGxpZWRSR0JBKEltYWdlRnJhbWU6OlBpeGVsRGF0YSogZGVzdCwgcG5nX2J5
dGVwIHBpeGVsLCB1bnNpZ25lZCBjaGFyJiBub25Ucml2aWFsQWxwaGFNYXNrKQorc3RhdGljIGlu
bGluZSB2b2lkIHNldFBpeGVsUHJlbXVsdGlwbGllZFJHQkEoUkdCQTMyKiBkZXN0LCBwbmdfYnl0
ZXAgcGl4ZWwsIHVuc2lnbmVkIGNoYXImIG5vblRyaXZpYWxBbHBoYU1hc2spCiB7CiAgICAgdW5z
aWduZWQgY2hhciBhID0gcGl4ZWxbM107CiAgICAgdW5zaWduZWQgY2hhciByID0gZmFzdERpdmlk
ZUJ5MjU1KHBpeGVsWzBdICogYSk7CkBAIC00ODgsNyArNDQ1LDcgQEAgdm9pZCBQTkdJbWFnZURl
Y29kZXI6OnJvd0F2YWlsYWJsZSh1bnNpZ25lZCBjaGFyKiByb3dCdWZmZXIsIHVuc2lnbmVkIHJv
d0luZGV4LAogICAgIEltYWdlRnJhbWUmIGJ1ZmZlciA9IG1fZnJhbWVCdWZmZXJDYWNoZVttX2N1
cnJlbnRGcmFtZV07CiAgICAgaWYgKGJ1ZmZlci5zdGF0dXMoKSA9PSBJbWFnZUZyYW1lOjpGcmFt
ZUVtcHR5KSB7CiAgICAgICAgIHBuZ19zdHJ1Y3RwIHBuZyA9IG1fcmVhZGVyLT5wbmdQdHIoKTsK
LSAgICAgICAgaWYgKCFidWZmZXIuc2V0U2l6ZShzY2FsZWRTaXplKCkud2lkdGgoKSwgc2NhbGVk
U2l6ZSgpLmhlaWdodCgpKSkgeworICAgICAgICBpZiAoIWJ1ZmZlci5zZXRTaXplKHNjYWxlZFNp
emUoKSwgbV9wcmVtdWx0aXBseUFscGhhKSkgewogICAgICAgICAgICAgbG9uZ2ptcChKTVBCVUYo
cG5nKSwgMSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTUwNiwxNSArNDYz
LDExIEBAIHZvaWQgUE5HSW1hZ2VEZWNvZGVyOjpyb3dBdmFpbGFibGUodW5zaWduZWQgY2hhciog
cm93QnVmZmVyLCB1bnNpZ25lZCByb3dJbmRleCwKIAogICAgICAgICBidWZmZXIuc2V0U3RhdHVz
KEltYWdlRnJhbWU6OkZyYW1lUGFydGlhbCk7CiAgICAgICAgIGJ1ZmZlci5zZXRIYXNBbHBoYShm
YWxzZSk7Ci0gICAgICAgIGJ1ZmZlci5zZXRDb2xvclByb2ZpbGUobV9jb2xvclByb2ZpbGUpOwog
CiAjaWYgRU5BQkxFKEFQTkcpCiAgICAgICAgIGlmIChtX2N1cnJlbnRGcmFtZSkKICAgICAgICAg
ICAgIGluaXRGcmFtZUJ1ZmZlcihtX2N1cnJlbnRGcmFtZSk7Ci0gICAgICAgIGVsc2UKICNlbmRp
ZgotICAgICAgICAvLyBGb3IgUE5HcywgdGhlIGZyYW1lIGFsd2F5cyBmaWxscyB0aGUgZW50aXJl
IGltYWdlLgotICAgICAgICBidWZmZXIuc2V0T3JpZ2luYWxGcmFtZVJlY3QoSW50UmVjdChJbnRQ
b2ludCgpLCBzaXplKCkpKTsKICAgICB9CiAKICAgICAvKiBsaWJwbmcgY29tbWVudHMgKGhlcmUg
dG8gZXhwbGFpbiB3aGF0IGZvbGxvd3MpLgpAQCAtNTczLDcgKzUyNiw3IEBAIHZvaWQgUE5HSW1h
Z2VEZWNvZGVyOjpyb3dBdmFpbGFibGUodW5zaWduZWQgY2hhciogcm93QnVmZmVyLCB1bnNpZ25l
ZCByb3dJbmRleCwKICAgICB9CiAKICAgICAvLyBXcml0ZSB0aGUgZGVjb2RlZCByb3cgcGl4ZWxz
IHRvIHRoZSBmcmFtZSBidWZmZXIuCi0gICAgSW1hZ2VGcmFtZTo6UGl4ZWxEYXRhKiBhZGRyZXNz
ID0gYnVmZmVyLmdldEFkZHIoMCwgeSk7CisgICAgUkdCQTMyKiBhZGRyZXNzID0gYnVmZmVyLmdl
dEFkZHIoMCwgeSk7CiAgICAgaW50IHdpZHRoID0gc2NhbGVkU2l6ZSgpLndpZHRoKCk7CiAgICAg
dW5zaWduZWQgY2hhciBub25Ucml2aWFsQWxwaGFNYXNrID0gMDsKIApAQCAtNjYzLDggKzYxNiw2
IEBAIHZvaWQgUE5HSW1hZ2VEZWNvZGVyOjpyZWFkQ2h1bmtzKHBuZ191bmtub3duX2NodW5rcCBj
aHVuaykKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBtX2ZyYW1lQnVmZmVyQ2FjaGUu
cmVzaXplKG1fZnJhbWVDb3VudCk7Ci0gICAgICAgIGZvciAoYXV0byYgaW1hZ2VGcmFtZSA6IG1f
ZnJhbWVCdWZmZXJDYWNoZSkKLSAgICAgICAgICAgIGltYWdlRnJhbWUuc2V0UHJlbXVsdGlwbHlB
bHBoYShtX3ByZW11bHRpcGx5QWxwaGEpOwogICAgIH0gZWxzZSBpZiAoIW1lbWNtcChjaHVuay0+
bmFtZSwgImZjVEwiLCA0KSAmJiBjaHVuay0+c2l6ZSA9PSAyNikgewogICAgICAgICBpZiAobV9o
YXNJbmZvICYmICFtX2lzQW5pbWF0ZWQpCiAgICAgICAgICAgICByZXR1cm47CkBAIC03MDYsMTAg
KzY1Nyw4IEBAIHZvaWQgUE5HSW1hZ2VEZWNvZGVyOjpyZWFkQ2h1bmtzKHBuZ191bmtub3duX2No
dW5rcCBjaHVuaykKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGlm
IChtX2ZyYW1lQnVmZmVyQ2FjaGUuaXNFbXB0eSgpKSB7CisgICAgICAgIGlmIChtX2ZyYW1lQnVm
ZmVyQ2FjaGUuaXNFbXB0eSgpKQogICAgICAgICAgICAgbV9mcmFtZUJ1ZmZlckNhY2hlLnJlc2l6
ZSgxKTsKLSAgICAgICAgICAgIG1fZnJhbWVCdWZmZXJDYWNoZVswXS5zZXRQcmVtdWx0aXBseUFs
cGhhKG1fcHJlbXVsdGlwbHlBbHBoYSk7Ci0gICAgICAgIH0KIAogICAgICAgICBpZiAobV9jdXJy
ZW50RnJhbWUgPCBtX2ZyYW1lQnVmZmVyQ2FjaGUuc2l6ZSgpKSB7CiAgICAgICAgICAgICBJbWFn
ZUZyYW1lJiBidWZmZXIgPSBtX2ZyYW1lQnVmZmVyQ2FjaGVbbV9jdXJyZW50RnJhbWVdOwpAQCAt
ODE4LDYgKzc2NywxMiBAQCB2b2lkIFBOR0ltYWdlRGVjb2Rlcjo6Y2xlYXJGcmFtZUJ1ZmZlckNh
Y2hlKHNpemVfdCBjbGVhckJlZm9yZUZyYW1lKQogICAgICAgICBpZiAoai0+c3RhdHVzKCkgIT0g
SW1hZ2VGcmFtZTo6RnJhbWVFbXB0eSkKICAgICAgICAgICAgIGotPmNsZWFyUGl4ZWxEYXRhKCk7
CiAgICAgfQorICAgIAorICAgIGludCBsZWZ0ID0gdXBwZXJCb3VuZFNjYWxlZFgoZnJhbWVSZWN0
LngoKSk7CisgICAgaW50IHJpZ2h0ID0gbG93ZXJCb3VuZFNjYWxlZFgoZnJhbWVSZWN0Lm1heFgo
KSwgbGVmdCk7CisgICAgaW50IHRvcCA9IHVwcGVyQm91bmRTY2FsZWRZKGZyYW1lUmVjdC55KCkp
OworICAgIGludCBib3R0b20gPSBsb3dlckJvdW5kU2NhbGVkWShmcmFtZVJlY3QubWF4WSgpLCB0
b3ApOworICAgIGJ1ZmZlci5waXhlbHMoKS0+c2V0UmVjdChJbnRSZWN0KGxlZnQsIHRvcCwgcmln
aHQgLSBsZWZ0LCBib3R0b20gLSB0b3ApKTsKIH0KIAogdm9pZCBQTkdJbWFnZURlY29kZXI6Omlu
aXRGcmFtZUJ1ZmZlcihzaXplX3QgZnJhbWVJbmRleCkKQEAgLTgzNCwxMSArNzg5LDYgQEAgdm9p
ZCBQTkdJbWFnZURlY29kZXI6OmluaXRGcmFtZUJ1ZmZlcihzaXplX3QgZnJhbWVJbmRleCkKICAg
ICAgICAgZnJhbWVSZWN0LnNldEhlaWdodChzaXplKCkuaGVpZ2h0KCkgLSBtX3lPZmZzZXQpOwog
CiAgICAgSW1hZ2VGcmFtZSYgYnVmZmVyID0gbV9mcmFtZUJ1ZmZlckNhY2hlW2ZyYW1lSW5kZXhd
OwotICAgIGludCBsZWZ0ID0gdXBwZXJCb3VuZFNjYWxlZFgoZnJhbWVSZWN0LngoKSk7Ci0gICAg
aW50IHJpZ2h0ID0gbG93ZXJCb3VuZFNjYWxlZFgoZnJhbWVSZWN0Lm1heFgoKSwgbGVmdCk7Ci0g
ICAgaW50IHRvcCA9IHVwcGVyQm91bmRTY2FsZWRZKGZyYW1lUmVjdC55KCkpOwotICAgIGludCBi
b3R0b20gPSBsb3dlckJvdW5kU2NhbGVkWShmcmFtZVJlY3QubWF4WSgpLCB0b3ApOwotICAgIGJ1
ZmZlci5zZXRPcmlnaW5hbEZyYW1lUmVjdChJbnRSZWN0KGxlZnQsIHRvcCwgcmlnaHQgLSBsZWZ0
LCBib3R0b20gLSB0b3ApKTsKIAogICAgIC8vIFRoZSBzdGFydGluZyBzdGF0ZSBmb3IgdGhpcyBm
cmFtZSBkZXBlbmRzIG9uIHRoZSBwcmV2aW91cyBmcmFtZSdzCiAgICAgLy8gZGlzcG9zYWwgbWV0
aG9kLgpAQCAtODYyLDcgKzgxMiw3IEBAIHZvaWQgUE5HSW1hZ2VEZWNvZGVyOjppbml0RnJhbWVC
dWZmZXIoc2l6ZV90IGZyYW1lSW5kZXgpCiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gV2Ugd2Fu
dCB0byBjbGVhciB0aGUgcHJldmlvdXMgZnJhbWUgdG8gdHJhbnNwYXJlbnQsIHdpdGhvdXQKICAg
ICAgICAgLy8gYWZmZWN0aW5nIHBpeGVscyBpbiB0aGUgaW1hZ2Ugb3V0c2lkZSBvZiB0aGUgZnJh
bWUuCi0gICAgICAgIGNvbnN0IEludFJlY3QmIHByZXZSZWN0ID0gcHJldkJ1ZmZlci0+b3JpZ2lu
YWxGcmFtZVJlY3QoKTsKKyAgICAgICAgY29uc3QgSW50UmVjdCYgcHJldlJlY3QgPSBwcmV2QnVm
ZmVyLT5waXhlbHMoKS0+cmVjdCgpOwogICAgICAgICBpZiAoIWZyYW1lSW5kZXggfHwgcHJldlJl
Y3QuY29udGFpbnMoSW50UmVjdChJbnRQb2ludCgpLCBzY2FsZWRTaXplKCkpKSkgewogICAgICAg
ICAgICAgLy8gQ2xlYXJpbmcgdGhlIGZpcnN0IGZyYW1lLCBvciBhIGZyYW1lIHRoZSBzaXplIG9m
IHRoZSB3aG9sZQogICAgICAgICAgICAgLy8gaW1hZ2UsIHJlc3VsdHMgaW4gYSBjb21wbGV0ZWx5
IGVtcHR5IGltYWdlLgpAQCAtODczLDYgKzgyMywxMiBAQCB2b2lkIFBOR0ltYWdlRGVjb2Rlcjo6
aW5pdEZyYW1lQnVmZmVyKHNpemVfdCBmcmFtZUluZGV4KQogICAgICAgICAgICAgYnVmZmVyLnpl
cm9GaWxsRnJhbWVSZWN0KHByZXZSZWN0KTsKICAgICAgICAgfQogICAgIH0KKyAgICAKKyAgICBp
bnQgbGVmdCA9IHVwcGVyQm91bmRTY2FsZWRYKGZyYW1lUmVjdC54KCkpOworICAgIGludCByaWdo
dCA9IGxvd2VyQm91bmRTY2FsZWRYKGZyYW1lUmVjdC5tYXhYKCksIGxlZnQpOworICAgIGludCB0
b3AgPSB1cHBlckJvdW5kU2NhbGVkWShmcmFtZVJlY3QueSgpKTsKKyAgICBpbnQgYm90dG9tID0g
bG93ZXJCb3VuZFNjYWxlZFkoZnJhbWVSZWN0Lm1heFkoKSwgdG9wKTsKKyAgICBidWZmZXIucGl4
ZWxzKCktPnNldFJlY3QoSW50UmVjdChsZWZ0LCB0b3AsIHJpZ2h0IC0gbGVmdCwgYm90dG9tIC0g
dG9wKSk7CiB9CiAKIHZvaWQgUE5HSW1hZ2VEZWNvZGVyOjpmcmFtZUNvbXBsZXRlKCkKQEAgLTg4
Niw3ICs4NDIsNyBAQCB2b2lkIFBOR0ltYWdlRGVjb2Rlcjo6ZnJhbWVDb21wbGV0ZSgpCiAgICAg
cG5nX2J5dGVwIGludGVybGFjZUJ1ZmZlciA9IG1fcmVhZGVyLT5pbnRlcmxhY2VCdWZmZXIoKTsK
IAogICAgIGlmIChtX2N1cnJlbnRGcmFtZSAmJiBpbnRlcmxhY2VCdWZmZXIpIHsKLSAgICAgICAg
Y29uc3QgSW50UmVjdCYgcmVjdCA9IGJ1ZmZlci5vcmlnaW5hbEZyYW1lUmVjdCgpOworICAgICAg
ICBjb25zdCBJbnRSZWN0JiByZWN0ID0gYnVmZmVyLnBpeGVscygpLT5yZWN0KCk7CiAgICAgICAg
IGJvb2wgaGFzQWxwaGEgPSBtX3JlYWRlci0+aGFzQWxwaGEoKTsKICAgICAgICAgdW5zaWduZWQg
Y29sb3JDaGFubmVscyA9IGhhc0FscGhhID8gNCA6IDM7CiAgICAgICAgIGJvb2wgbm9uVHJpdmlh
bEFscGhhID0gZmFsc2U7CkBAIC04OTYsNyArODUyLDcgQEAgdm9pZCBQTkdJbWFnZURlY29kZXI6
OmZyYW1lQ29tcGxldGUoKQogI2lmIEVOQUJMRShJTUFHRV9ERUNPREVSX0RPV05fU0FNUExJTkcp
CiAgICAgICAgIGZvciAoaW50IHkgPSAwOyB5IDwgcmVjdC5tYXhZKCkgLSByZWN0LnkoKTsgKyt5
KSB7CiAgICAgICAgICAgICBwbmdfYnl0ZXAgcm93ID0gaW50ZXJsYWNlQnVmZmVyICsgKG1fc2Nh
bGVkID8gbV9zY2FsZWRSb3dzW3ldIDogeSkgKiBjb2xvckNoYW5uZWxzICogc2l6ZSgpLndpZHRo
KCk7Ci0gICAgICAgICAgICBJbWFnZUZyYW1lOjpQaXhlbERhdGEqIGFkZHJlc3MgPSBidWZmZXIu
Z2V0QWRkcihyZWN0LngoKSwgeSArIHJlY3QueSgpKTsKKyAgICAgICAgICAgIFJHQkEzMiogYWRk
cmVzcyA9IGJ1ZmZlci5nZXRBZGRyKHJlY3QueCgpLCB5ICsgcmVjdC55KCkpOwogICAgICAgICAg
ICAgZm9yIChpbnQgeCA9IDA7IHggPCByZWN0Lm1heFgoKSAtIHJlY3QueCgpOyArK3gpIHsKICAg
ICAgICAgICAgICAgICBwbmdfYnl0ZXAgcGl4ZWwgPSByb3cgKyAobV9zY2FsZWQgPyBtX3NjYWxl
ZENvbHVtbnNbeF0gOiB4KSAqIGNvbG9yQ2hhbm5lbHM7CiAgICAgICAgICAgICAgICAgdW5zaWdu
ZWQgYWxwaGEgPSBoYXNBbHBoYSA/IHBpeGVsWzNdIDogMjU1OwpAQCAtOTEyLDcgKzg2OCw3IEBA
IHZvaWQgUE5HSW1hZ2VEZWNvZGVyOjpmcmFtZUNvbXBsZXRlKCkKICAgICAgICAgcG5nX2J5dGVw
IHJvdyA9IGludGVybGFjZUJ1ZmZlcjsKICAgICAgICAgZm9yIChpbnQgeSA9IHJlY3QueSgpOyB5
IDwgcmVjdC5tYXhZKCk7ICsreSwgcm93ICs9IGNvbG9yQ2hhbm5lbHMgKiBzaXplKCkud2lkdGgo
KSkgewogICAgICAgICAgICAgcG5nX2J5dGVwIHBpeGVsID0gcm93OwotICAgICAgICAgICAgSW1h
Z2VGcmFtZTo6UGl4ZWxEYXRhKiBhZGRyZXNzID0gYnVmZmVyLmdldEFkZHIocmVjdC54KCksIHkp
OworICAgICAgICAgICAgUkdCQTMyKiBhZGRyZXNzID0gYnVmZmVyLmdldEFkZHIocmVjdC54KCks
IHkpOwogICAgICAgICAgICAgZm9yIChpbnQgeCA9IHJlY3QueCgpOyB4IDwgcmVjdC5tYXhYKCk7
ICsreCwgcGl4ZWwgKz0gY29sb3JDaGFubmVscykgewogICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGFscGhhID0gaGFzQWxwaGEgPyBwaXhlbFszXSA6IDI1NTsKICAgICAgICAgICAgICAgICBub25U
cml2aWFsQWxwaGEgfD0gYWxwaGEgPCAyNTU7CkBAIC05MjUsNyArODgxLDcgQEAgdm9pZCBQTkdJ
bWFnZURlY29kZXI6OmZyYW1lQ29tcGxldGUoKQogI2VuZGlmCiAKICAgICAgICAgaWYgKCFub25U
cml2aWFsQWxwaGEpIHsKLSAgICAgICAgICAgIGlmIChidWZmZXIub3JpZ2luYWxGcmFtZVJlY3Qo
KS5jb250YWlucyhJbnRSZWN0KEludFBvaW50KCksIHNjYWxlZFNpemUoKSkpKQorICAgICAgICAg
ICAgaWYgKGJ1ZmZlci5waXhlbHMoKS0+cmVjdCgpLmNvbnRhaW5zKEludFJlY3QoSW50UG9pbnQo
KSwgc2NhbGVkU2l6ZSgpKSkpCiAgICAgICAgICAgICAgICAgYnVmZmVyLnNldEhhc0FscGhhKGZh
bHNlKTsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIHNpemVfdCBmcmFtZUlu
ZGV4ID0gbV9jdXJyZW50RnJhbWU7CkBAIC05MzMsNyArODg5LDcgQEAgdm9pZCBQTkdJbWFnZURl
Y29kZXI6OmZyYW1lQ29tcGxldGUoKQogICAgICAgICAgICAgICAgIHdoaWxlIChmcmFtZUluZGV4
ICYmIChwcmV2QnVmZmVyLT5kaXNwb3NhbE1ldGhvZCgpID09IEltYWdlRnJhbWU6OkRpc3Bvc2VP
dmVyd3JpdGVQcmV2aW91cykpCiAgICAgICAgICAgICAgICAgICAgIHByZXZCdWZmZXIgPSAmbV9m
cmFtZUJ1ZmZlckNhY2hlWy0tZnJhbWVJbmRleF07CiAgICAgICAgICAgICAgICAgaWYgKChwcmV2
QnVmZmVyLT5kaXNwb3NhbE1ldGhvZCgpID09IEltYWdlRnJhbWU6OkRpc3Bvc2VPdmVyd3JpdGVC
Z2NvbG9yKQotICAgICAgICAgICAgICAgICAgICAmJiAhcHJldkJ1ZmZlci0+aGFzQWxwaGEoKSAm
JiBidWZmZXIub3JpZ2luYWxGcmFtZVJlY3QoKS5jb250YWlucyhwcmV2QnVmZmVyLT5vcmlnaW5h
bEZyYW1lUmVjdCgpKSkKKyAgICAgICAgICAgICAgICAgICAgJiYgIXByZXZCdWZmZXItPmhhc0Fs
cGhhKCkgJiYgYnVmZmVyLnBpeGVscygpLT5yZWN0KCkuY29udGFpbnMocHJldkJ1ZmZlci0+cGl4
ZWxzKCktPnJlY3QoKSkpCiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlci5zZXRIYXNBbHBoYShm
YWxzZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBpZiAoIW1fYmxlbmQgJiYgIWJ1
ZmZlci5oYXNBbHBoYSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5oCmluZGV4IDA1ZmM3NGI2ZGUy
MTRkMDQxNGE4MmI0MTg2OTM3NzYyZDFhNWU1NWIuLjk4NzQyNDYxOTA4OGRlMTdmY2Q2M2RjODZm
NWI5NTE3ODdjYjRkZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmgKQEAgLTQ4LDcgKzQ4LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBpbnQgcmVwZXRpdGlvbkNvdW50KCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9wbGF5Q291bnQtMTsgfQogI2VuZGlmCiAgICAgICAgIGJv
b2wgaXNTaXplQXZhaWxhYmxlKCkgb3ZlcnJpZGU7Ci0gICAgICAgIGJvb2wgc2V0U2l6ZSh1bnNp
Z25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0KSBvdmVycmlkZTsKKyAgICAgICAgYm9vbCBzZXRT
aXplKGNvbnN0IEludFNpemUmKSBvdmVycmlkZTsKICAgICAgICAgSW1hZ2VGcmFtZSogZnJhbWVC
dWZmZXJBdEluZGV4KHNpemVfdCBpbmRleCkgb3ZlcnJpZGU7CiAgICAgICAgIC8vIENBVVRJT046
IHNldEZhaWxlZCgpIGRlbGV0ZXMgfG1fcmVhZGVyfC4gIEJlIGNhcmVmdWwgdG8gYXZvaWQKICAg
ICAgICAgLy8gYWNjZXNzaW5nIGRlbGV0ZWQgbWVtb3J5LCBlc3BlY2lhbGx5IHdoZW4gY2FsbGlu
ZyB0aGlzIGZyb20gaW5zaWRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcAppbmRleCAx
MjRhMWIyZjE5OTdmZTY3OGM2MWI1MmYzMDU4ZGI0ZDZiODg2NzlhLi5hMzVhMTlhOTBiNWNhMzk3
ZThmYjcwMjEwMTdlODk3NWZiZTM0YzRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5j
cHAKQEAgLTc4LDEwICs3OCw4IEBAIEltYWdlRnJhbWUqIFdFQlBJbWFnZURlY29kZXI6OmZyYW1l
QnVmZmVyQXRJbmRleChzaXplX3QgaW5kZXgpCiAgICAgaWYgKGluZGV4KQogICAgICAgICByZXR1
cm4gMDsKIAotICAgIGlmIChtX2ZyYW1lQnVmZmVyQ2FjaGUuaXNFbXB0eSgpKSB7CisgICAgaWYg
KG1fZnJhbWVCdWZmZXJDYWNoZS5pc0VtcHR5KCkpCiAgICAgICAgIG1fZnJhbWVCdWZmZXJDYWNo
ZS5yZXNpemUoMSk7Ci0gICAgICAgIG1fZnJhbWVCdWZmZXJDYWNoZVswXS5zZXRQcmVtdWx0aXBs
eUFscGhhKG1fcHJlbXVsdGlwbHlBbHBoYSk7Ci0gICAgfQogCiAgICAgSW1hZ2VGcmFtZSYgZnJh
bWUgPSBtX2ZyYW1lQnVmZmVyQ2FjaGVbMF07CiAgICAgaWYgKGZyYW1lLnN0YXR1cygpICE9IElt
YWdlRnJhbWU6OkZyYW1lQ29tcGxldGUpCkBAIC0xMTUsNyArMTEzLDcgQEAgYm9vbCBXRUJQSW1h
Z2VEZWNvZGVyOjpkZWNvZGUoYm9vbCBvbmx5U2l6ZSkKICAgICAgICAgICAgIHJldHVybiBzZXRG
YWlsZWQoKTsKICAgICAgICAgbV9oYXNBbHBoYSA9IGZhbHNlOwogI2VuZGlmCi0gICAgICAgIGlm
ICghc2V0U2l6ZSh3aWR0aCwgaGVpZ2h0KSkKKyAgICAgICAgaWYgKCFzZXRTaXplKEludFNpemUo
d2lkdGgsIGhlaWdodCkpKQogICAgICAgICAgICAgcmV0dXJuIHNldEZhaWxlZCgpOwogICAgIH0K
IApAQCAtMTI4LDE4ICsxMjYsMTcgQEAgYm9vbCBXRUJQSW1hZ2VEZWNvZGVyOjpkZWNvZGUoYm9v
bCBvbmx5U2l6ZSkKICAgICBBU1NFUlQoYnVmZmVyLnN0YXR1cygpICE9IEltYWdlRnJhbWU6OkZy
YW1lQ29tcGxldGUpOwogCiAgICAgaWYgKGJ1ZmZlci5zdGF0dXMoKSA9PSBJbWFnZUZyYW1lOjpG
cmFtZUVtcHR5KSB7Ci0gICAgICAgIGlmICghYnVmZmVyLnNldFNpemUoc2l6ZSgpLndpZHRoKCks
IHNpemUoKS5oZWlnaHQoKSkpCisgICAgICAgIGlmICghYnVmZmVyLnNldFNpemUoc2l6ZSgpLCBt
X3ByZW11bHRpcGx5QWxwaGEpKQogICAgICAgICAgICAgcmV0dXJuIHNldEZhaWxlZCgpOwogICAg
ICAgICBidWZmZXIuc2V0U3RhdHVzKEltYWdlRnJhbWU6OkZyYW1lUGFydGlhbCk7CiAgICAgICAg
IGJ1ZmZlci5zZXRIYXNBbHBoYShtX2hhc0FscGhhKTsKLSAgICAgICAgYnVmZmVyLnNldE9yaWdp
bmFsRnJhbWVSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgc2l6ZSgpKSk7CiAgICAgfQogCiAgICAg
aWYgKCFtX2RlY29kZXIpIHsKICAgICAgICAgV0VCUF9DU1BfTU9ERSBtb2RlID0gb3V0cHV0TW9k
ZShtX2hhc0FscGhhKTsKICAgICAgICAgaWYgKCFtX3ByZW11bHRpcGx5QWxwaGEpCiAgICAgICAg
ICAgICBtb2RlID0gb3V0cHV0TW9kZShmYWxzZSk7Ci0gICAgICAgIGludCByb3dTdHJpZGUgPSBz
aXplKCkud2lkdGgoKSAqIHNpemVvZihJbWFnZUZyYW1lOjpQaXhlbERhdGEpOworICAgICAgICBp
bnQgcm93U3RyaWRlID0gc2l6ZSgpLndpZHRoKCkgKiBzaXplb2YoUkdCQTMyKTsKICAgICAgICAg
dWludDhfdCogb3V0cHV0ID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oYnVmZmVyLmdldEFk
ZHIoMCwgMCkpOwogICAgICAgICBpbnQgb3V0cHV0U2l6ZSA9IHNpemUoKS5oZWlnaHQoKSAqIHJv
d1N0cmlkZTsKICAgICAgICAgbV9kZWNvZGVyID0gV2ViUElOZXdSR0IobW9kZSwgb3V0cHV0LCBv
dXRwdXRTaXplLCByb3dTdHJpZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNl
TWFjLm1tCmluZGV4IDIxNmNkMDkzZjI2NDY3Y2JhODhhNDNmNjkzYWJmNGNmNTFkZDFhNGQuLmQx
MTQ1NGIwNWVmODg5OTNhNjI4OTM4OTZiYzBjMTE3MjhjNWVkNTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJj
ZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9j
a1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMubW0KQEAgLTg3LDcgKzg3LDcgQEAgdm9pZCBNb2NrUmVh
bHRpbWVWaWRlb1NvdXJjZU1hYzo6dXBkYXRlUGxhdGZvcm1MYXllcigpIGNvbnN0CiAgICAgICAg
IGlmICghaW1hZ2UpCiAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICBtX3ByZXZpZXdJbWFn
ZSA9IGltYWdlLT5nZXRDR0ltYWdlUmVmKCk7CisgICAgICAgIG1fcHJldmlld0ltYWdlID0gaW1h
Z2UtPm5hdGl2ZUltYWdlKCk7CiAgICAgICAgIGlmICghbV9wcmV2aWV3SW1hZ2UpCiAgICAgICAg
ICAgICBicmVhazsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0Ry
YWdJbWFnZUNHV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VD
R1dpbi5jcHAKaW5kZXggMzZjZDY1MTZlODBmMTc0OGJmZWFiNzdhOTMwMjcxYzEyMWRlODAxOS4u
NGI0ZTM3NzllOTZmNzhjNjU0MGE1M2M0NDc4YzNiZmQ5MzVmNTNlOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZUNHV2luLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ0dXaW4uY3BwCkBAIC0xMzYsOSArMTM2LDkg
QEAgRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZShJbWFnZSogaW1nLCBJbWFn
ZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pCiAgICAgQ0dDb250ZXh0U2NhbGVDVE0oZHJhd0NvbnRl
eHQsIDEsIC0xKTsKICAgICBDR0NvbnRleHRTZXRGaWxsQ29sb3IoZHJhd0NvbnRleHQsIHdoaXRl
KTsKICAgICBDR0NvbnRleHRGaWxsUmVjdChkcmF3Q29udGV4dCwgcmVjdCk7Ci0gICAgaWYgKGF1
dG8gc3JjSW1hZ2UgPSBpbWctPmdldENHSW1hZ2VSZWYoKSkgeworICAgIGlmIChhdXRvIHNyY0lt
YWdlID0gaW1nLT5uYXRpdmVJbWFnZSgpKSB7CiAgICAgICAgIENHQ29udGV4dFNldEJsZW5kTW9k
ZShkcmF3Q29udGV4dCwga0NHQmxlbmRNb2RlTm9ybWFsKTsKLSAgICAgICAgQ0dDb250ZXh0RHJh
d0ltYWdlKGRyYXdDb250ZXh0LCByZWN0LCBzcmNJbWFnZSk7CisgICAgICAgIENHQ29udGV4dERy
YXdJbWFnZShkcmF3Q29udGV4dCwgcmVjdCwgc3JjSW1hZ2UuZ2V0KCkpOwogICAgIH0KICAgICBD
R0NvbnRleHRSZWxlYXNlKGRyYXdDb250ZXh0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9tYWMvTWlzYy9XZWJDYWNoZS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViQ2FjaGUu
bW0KaW5kZXggYjY1OWQ2ZGJmOWFkNjk5OWMzYWM5NjJkZTk1MTU3ODA5N2UxZjNiMS4uN2M1ZWQy
MTBkZGIyYTMyYTc2NjY3NGMxMjBkOTk0YzJmYTQ3ZTdmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9tYWMvTWlzYy9XZWJDYWNoZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dl
YkNhY2hlLm1tCkBAIC0yMDQsNyArMjA0LDcgQEAgKyAoQ0dJbWFnZVJlZilpbWFnZUZvclVSTDoo
TlNVUkwgKil1cmwKICAgICBXZWJDb3JlOjpDYWNoZWRJbWFnZSYgY2FjaGVkSW1hZ2UgPSBkb3du
Y2FzdDxXZWJDb3JlOjpDYWNoZWRJbWFnZT4oKmNhY2hlZFJlc291cmNlKTsKICAgICBpZiAoIWNh
Y2hlZEltYWdlLmhhc0ltYWdlKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVy
biBjYWNoZWRJbWFnZS5pbWFnZSgpLT5nZXRDR0ltYWdlUmVmKCk7CisgICAgcmV0dXJuIGNhY2hl
ZEltYWdlLmltYWdlKCktPm5hdGl2ZUltYWdlKCkuZ2V0KCk7CiB9CiAKICNlbmRpZiAvLyBQTEFU
Rk9STShJT1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvY2cv
V0tJY29uRGF0YWJhc2VDRy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvY2cv
V0tJY29uRGF0YWJhc2VDRy5jcHAKaW5kZXggMGY2ZGU3YTE0NmE2MTFhNTJhYTFlNTM5MDE5ZmE2
YzFjNDY3MjVhZS4uMzA1NjMzNmNiNjZmZTRhZjE4YmRjNTI5YWNhMmY4ZmM4ODFkZmU1NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2NnL1dLSWNvbkRhdGFiYXNl
Q0cuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9jZy9XS0ljb25EYXRh
YmFzZUNHLmNwcApAQCAtMzcsMTIgKzM3LDIzIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
Q0dJbWFnZVJlZiBXS0ljb25EYXRhYmFzZVRyeUdldENHSW1hZ2VGb3JVUkwoV0tJY29uRGF0YWJh
c2VSZWYgaWNvbkRhdGFiYXNlUmVmLCBXS1VSTFJlZiB1cmxSZWYsIFdLU2l6ZSBzaXplKQogewog
ICAgIEltYWdlKiBpbWFnZSA9IHRvSW1wbChpY29uRGF0YWJhc2VSZWYpLT5pbWFnZUZvclBhZ2VV
UkwodG9XVEZTdHJpbmcodXJsUmVmKSk7Ci0gICAgcmV0dXJuIGltYWdlID8gaW1hZ2UtPmdldEZp
cnN0Q0dJbWFnZVJlZk9mU2l6ZShJbnRTaXplKHN0YXRpY19jYXN0PGludD4oc2l6ZS53aWR0aCks
IHN0YXRpY19jYXN0PGludD4oc2l6ZS5oZWlnaHQpKSkgOiAwOworICAgIHJldHVybiBpbWFnZSA/
IGltYWdlLT5uYXRpdmVJbWFnZU9mU2l6ZShJbnRTaXplKHN0YXRpY19jYXN0PGludD4oc2l6ZS53
aWR0aCksIHN0YXRpY19jYXN0PGludD4oc2l6ZS5oZWlnaHQpKSkuZ2V0KCkgOiBudWxscHRyOwog
fQogCiBDRkFycmF5UmVmIFdLSWNvbkRhdGFiYXNlVHJ5Q29weUNHSW1hZ2VBcnJheUZvclVSTChX
S0ljb25EYXRhYmFzZVJlZiBpY29uRGF0YWJhc2VSZWYsIFdLVVJMUmVmIHVybFJlZikKIHsKICAg
ICBJbWFnZSogaW1hZ2UgPSB0b0ltcGwoaWNvbkRhdGFiYXNlUmVmKS0+aW1hZ2VGb3JQYWdlVVJM
KHRvV1RGU3RyaW5nKHVybFJlZikpOwotICAgIHJldHVybiBpbWFnZSA/IGltYWdlLT5nZXRDR0lt
YWdlQXJyYXkoKS5sZWFrUmVmKCkgOiAwOworICAgIGlmICghaW1hZ2UpCisgICAgICAgIHJldHVy
biBudWxscHRyOworCisgICAgYXV0byBuYXRpdmVJbWFnZXMgPSBpbWFnZS0+ZnJhbWVzTmF0aXZl
SW1hZ2VzKCk7CisgICAgaWYgKCFuYXRpdmVJbWFnZXMuc2l6ZSgpKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICAKKyAgICBDRk11dGFibGVBcnJheVJlZiBhcnJheSA9IENGQXJyYXlDcmVh
dGVNdXRhYmxlKG51bGxwdHIsIG5hdGl2ZUltYWdlcy5zaXplKCksICZrQ0ZUeXBlQXJyYXlDYWxs
QmFja3MpOworICAgIGZvciAoYXV0byBuYXRpdmVJbWFnZSA6IG5hdGl2ZUltYWdlcykKKyAgICAg
ICAgQ0ZBcnJheUFwcGVuZFZhbHVlKGFycmF5LCBuYXRpdmVJbWFnZS5nZXQoKSk7CisgICAgCisg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PENGQXJyYXlSZWY+KENGUmV0YWluKGFycmF5KSk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0lu
dGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3
SW50ZXJhY3Rpb24ubW0KaW5kZXggZGM3OTgzYWI5ODhjMmQwNGExNzMwZWUxMzczMDNjMjQ0MTYx
NTE5Ny4uZmJjM2U1ZDRjNTQzMDFjZTkyMTdhNDBmOGQwOGJkNTgzNTI3ODdjNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
bW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJh
Y3Rpb24ubW0KQEAgLTQwNzEsNyArNDA3MSw3IEBAIC0gKFVJSW1hZ2UgKilfcHJlc2VudGF0aW9u
U25hcHNob3RGb3JQcmV2aWV3SXRlbUNvbnRyb2xsZXI6KFVJUHJldmlld0l0ZW1Db250cm9sCiB7
CiAgICAgaWYgKCFfcG9zaXRpb25JbmZvcm1hdGlvbi5saW5rSW5kaWNhdG9yLmNvbnRlbnRJbWFn
ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFtbW1VJSW1hZ2UgYWxsb2Nd
IGluaXRXaXRoQ0dJbWFnZTpfcG9zaXRpb25JbmZvcm1hdGlvbi5saW5rSW5kaWNhdG9yLmNvbnRl
bnRJbWFnZS0+Z2V0Q0dJbWFnZVJlZigpXSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIFtbW1VJ
SW1hZ2UgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTpfcG9zaXRpb25JbmZvcm1hdGlvbi5saW5rSW5k
aWNhdG9yLmNvbnRlbnRJbWFnZS0+bmF0aXZlSW1hZ2UoKS5nZXQoKV0gYXV0b3JlbGVhc2VdOwog
fQogCiAtIChOU0FycmF5ICopX3ByZXNlbnRhdGlvblJlY3RzRm9yUHJldmlld0l0ZW1Db250cm9s
bGVyOihVSVByZXZpZXdJdGVtQ29udHJvbGxlciAqKWNvbnRyb2xsZXIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCA5YTMzZjdjYzdk
YzdjN2Q3MmY5ZGE3NDMwOThiN2RiY2E4MjQwOWNmLi5hNTMyNTEwNjc4YjlmNTM1MTQ1OGEzOGE5
ZjQyMzM3NDdkMDM1ZjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblZpZXcuY3BwCkBAIC0xNzI3LDY5ICsxNzI3LDYgQEAgdm9pZCBQbHVnaW5WaWV3
Ojp3aW5kb3dlZFBsdWdpblZpc2liaWxpdHlEaWRDaGFuZ2UoYm9vbCBpc1Zpc2libGUsIHVpbnQ2
NF90IHdpbmQKIH0KICNlbmRpZgogCi0jaWYgUExBVEZPUk0oQ09DT0EpCi1zdGF0aWMgYm9vbCBp
c0FsbW9zdFNvbGlkQ29sb3IoQml0bWFwSW1hZ2UqIGJpdG1hcCkKLXsKLSAgICBDR0ltYWdlUmVm
IGltYWdlID0gYml0bWFwLT5nZXRDR0ltYWdlUmVmKCk7Ci0gICAgQVNTRVJUKENHSW1hZ2VHZXRC
aXRzUGVyQ29tcG9uZW50KGltYWdlKSA9PSA4KTsKLQotICAgIENHQml0bWFwSW5mbyBpbWFnZUlu
Zm8gPSBDR0ltYWdlR2V0Qml0bWFwSW5mbyhpbWFnZSk7Ci0gICAgaWYgKCEoaW1hZ2VJbmZvICYg
a0NHQml0bWFwQnl0ZU9yZGVyMzJMaXR0bGUpIHx8IChpbWFnZUluZm8gJiBrQ0dCaXRtYXBBbHBo
YUluZm9NYXNrKSAhPSBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0KSB7Ci0gICAgICAg
IC8vIEZJWE1FOiBDb25zaWRlciBiZWluZyBhYmxlIHRvIGhhbmRsZSBvdGhlciBwaXhlbCBmb3Jt
YXRzLgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIH0KLQotICAgIHNpemVfdCB3aWR0aCA9IENHSW1hZ2VHZXRXaWR0aChpbWFnZSk7Ci0g
ICAgc2l6ZV90IGhlaWdodCA9IENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UpOwotICAgIHNpemVfdCBi
eXRlc1BlclJvdyA9IENHSW1hZ2VHZXRCeXRlc1BlclJvdyhpbWFnZSk7Ci0KLSAgICBSZXRhaW5Q
dHI8Q0ZEYXRhUmVmPiBwcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDb3B5RGF0YShD
R0ltYWdlR2V0RGF0YVByb3ZpZGVyKGltYWdlKSkpOwotICAgIGNvbnN0IFVJbnQ4KiBkYXRhID0g
Q0ZEYXRhR2V0Qnl0ZVB0cihwcm92aWRlci5nZXQoKSk7Ci0KLSAgICAvLyBPdmVybGF5IGEgZ3Jp
ZCBvZiBzYW1wbGluZyBkb3RzIG9uIHRvcCBvZiBhIGdyYXlzY2FsZSB2ZXJzaW9uIG9mIHRoZSBp
bWFnZS4KLSAgICAvLyBGb3IgdGhlIGludGVyaW9yIHBvaW50cywgY2FsY3VsYXRlIHRoZSBkaWZm
ZXJlbmNlIGluIGx1bWluYW5jZSBhbW9uZyB0aGUgc2FtcGxlIHBvaW50Ci0gICAgLy8gYW5kIGl0
cyBzdXJyb3VuZHMgcG9pbnRzLCBzY2FsZWQgYnkgdHJhbnNwYXJlbmN5LgotICAgIGNvbnN0IHVu
c2lnbmVkIHNhbXBsZVJvd3MgPSA3OwotICAgIGNvbnN0IHVuc2lnbmVkIHNhbXBsZUNvbHMgPSA3
OwotICAgIC8vIEZJWE1FOiBSZWZpbmUgdGhlIHByb3BlciBudW1iZXIgb2Ygc2FtcGxlcywgYW5k
IGFjY29tbW9kYXRlIGRpZmZlcmVudCBhc3BlY3QgcmF0aW9zLgotICAgIGlmICh3aWR0aCA8IHNh
bXBsZUNvbHMgfHwgaGVpZ2h0IDwgc2FtcGxlUm93cykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
Ci0gICAgLy8gRW5zdXJlIHRoYXQgdGhlIGxhc3Qgcm93L2NvbHVtbiBsYW5kIG9uIHRoZSBpbWFn
ZSBwZXJpbWV0ZXIuCi0gICAgY29uc3QgZmxvYXQgc3RyaWRlV2lkdGggPSBzdGF0aWNfY2FzdDxm
bG9hdD4od2lkdGggLSAxKSAvIChzYW1wbGVDb2xzIC0gMSk7Ci0gICAgY29uc3QgZmxvYXQgc3Ry
aWRlSGVpZ2h0ID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGhlaWdodCAtIDEpIC8gKHNhbXBsZVJvd3Mg
LSAxKTsKLSAgICBmbG9hdCBzYW1wbGVzW3NhbXBsZVJvd3NdW3NhbXBsZUNvbHNdOwotCi0gICAg
Ly8gRmluZCB0aGUgbHVtaW5hbmNlIG9mIHRoZSBzYW1wbGUgcG9pbnRzLgotICAgIGZsb2F0IHkg
PSAwOwotICAgIGNvbnN0IFVJbnQ4KiByb3cgPSBkYXRhOwotICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBzYW1wbGVSb3dzOyArK2kpIHsKLSAgICAgICAgZmxvYXQgeCA9IDA7Ci0gICAgICAg
IGZvciAodW5zaWduZWQgaiA9IDA7IGogPCBzYW1wbGVDb2xzOyArK2opIHsKLSAgICAgICAgICAg
IGNvbnN0IFVJbnQ4KiBwMCA9IHJvdyArIChzdGF0aWNfY2FzdDxpbnQ+KHggKyAuNSkpICogNDsK
LSAgICAgICAgICAgIC8vIFIgRyBCIEEKLSAgICAgICAgICAgIHNhbXBsZXNbaV1bal0gPSAoMC4y
MTI1ICogKnAwICsgMC43MTU0ICogKihwMCsxKSArIDAuMDcyMSAqICoocDArMikpICogKihwMCsz
KSAvIDI1NTsKLSAgICAgICAgICAgIHggKz0gc3RyaWRlV2lkdGg7Ci0gICAgICAgIH0KLSAgICAg
ICAgeSArPSBzdHJpZGVIZWlnaHQ7Ci0gICAgICAgIHJvdyA9IGRhdGEgKyAoc3RhdGljX2Nhc3Q8
aW50Pih5ICsgLjUpKSAqIGJ5dGVzUGVyUm93OwotICAgIH0KLQotICAgIC8vIERldGVybWluZSB0
aGUgaW1hZ2Ugc2NvcmUuCi0gICAgZmxvYXQgYWNjdW1TY29yZSA9IDA7Ci0gICAgZm9yICh1bnNp
Z25lZCBpID0gMTsgaSA8IHNhbXBsZVJvd3MgLSAxOyArK2kpIHsKLSAgICAgICAgZm9yICh1bnNp
Z25lZCBqID0gMTsgaiA8IHNhbXBsZUNvbHMgLSAxOyArK2opIHsKLSAgICAgICAgICAgIGZsb2F0
IGRpZmYgPSBzYW1wbGVzW2kgLSAxXVtqXSArIHNhbXBsZXNbaSArIDFdW2pdICsgc2FtcGxlc1tp
XVtqIC0gMV0gKyBzYW1wbGVzW2ldW2ogKyAxXSAtIDQgKiBzYW1wbGVzW2ldW2pdOwotICAgICAg
ICAgICAgYWNjdW1TY29yZSArPSBkaWZmICogZGlmZjsKLSAgICAgICAgfQotICAgIH0KLQotICAg
IC8vIFRoZSBzY29yZSBmb3IgYSBnaXZlbiBzYW1wbGUgY2FuIGJlIHdpdGhpbiB0aGUgcmFuZ2Ug
b2YgMCBhbmQgMjU1XjIuCi0gICAgcmV0dXJuIGFjY3VtU2NvcmUgPCAyNTAwICogKHNhbXBsZVJv
d3MgLSAyKSAqIChzYW1wbGVDb2xzIC0gMik7Ci19Ci0jZW5kaWYKLQogdm9pZCBQbHVnaW5WaWV3
OjpwbHVnaW5TbmFwc2hvdFRpbWVyRmlyZWQoKQogewogI2lmIEVOQUJMRShQUklNQVJZX1NOQVBT
SE9UVEVEX1BMVUdJTl9IRVVSSVNUSUMpCkBAIC0xODA5LDcgKzE3NDYsNyBAQCB2b2lkIFBsdWdp
blZpZXc6OnBsdWdpblNuYXBzaG90VGltZXJGaXJlZCgpCiAKICAgICAgICAgaWYgKHNuYXBzaG90
SW1hZ2UpIHsKICNpZiBFTkFCTEUoUFJJTUFSWV9TTkFQU0hPVFRFRF9QTFVHSU5fSEVVUklTVElD
KQotICAgICAgICAgICAgYm9vbCBzbmFwc2hvdElzQWxtb3N0U29saWRDb2xvciA9IGlzQWxtb3N0
U29saWRDb2xvcihkb3duY2FzdDxCaXRtYXBJbWFnZT4oc25hcHNob3RJbWFnZS5nZXQoKSkpOwor
ICAgICAgICAgICAgYm9vbCBzbmFwc2hvdElzQWxtb3N0U29saWRDb2xvciA9IHN0YXRpY19wb2lu
dGVyX2Nhc3Q8Qml0bWFwSW1hZ2U+KHNuYXBzaG90SW1hZ2UpLT5pc0FsbW9zdFNvbGlkQ29sb3Io
KTsKICAgICAgICAgICAgIHNuYXBzaG90Rm91bmQgPSAhc25hcHNob3RJc0FsbW9zdFNvbGlkQ29s
b3I7CiAjZW5kaWYKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>283569</attachid>
            <date>2016-07-13 14:50:18 -0700</date>
            <delta_ts>2016-07-13 14:55:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159721-20160713144933.patch</filename>
            <type>text/plain</type>
            <size>175195</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzMTc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDQ0NWVjM2I5YjY1NzYy
OGNlYTM4MTkyYzdkMDJlN2YwMjIyNzRmOS4uMWE3NjVhOGMwNjFiZGE2MWJmM2NmOGU2ZDlmMGU2
NmJmZDdiNDU4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3NSBAQAorMjAxNi0wNy0xMyAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorIAorICAgICAgICBHZXQg
cmlkIG9mIHRoZSBtX3ByZW11bHRpcGx5QWxwaGEgZmxhZyBvZiB0aGUgSW1hZ2VGcmFtZSBjbGFz
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5NzIx
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBm
bGFnIHdhcyBvbmx5IG5lZWRlZCB3aGVuIGNhbGxpbmcgQml0bWFwUGl4ZWxzOjpzZXRTaXplKCku
IEluc3RlYWQKKyAgICAgICAgd2UgY2FuIHBhc3MgdGhlIEltYWdlRGVjb2Rlcjo6bV9wcmVtdWx0
aXBseUFscGhhIHRvIEltYWdlRnJhbWU6OnNldFNpemUoKQorICAgICAgICB3aGljaCB3aWxsIHBh
c3MgaXQgdG8gQml0bWFwUGl4ZWxzOjpzZXRTaXplKCkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VG
cmFtZTo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OmNvcHlCaXRt
YXBEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6c2V0U2l6ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZURlY29kZXI6OmlzT3ZlclNpemUpOgorICAgICAgICAqIHBsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Qk1QSW1hZ2VEZWNvZGVyOjpmcmFtZUJ1ZmZlckF0SW5kZXgpOiBEZWxldGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpCTVBJbWFnZVJlYWRlcjo6ZGVjb2RlQk1QKToKKyAgICAgICAgKFdlYkNvcmU6
OkJNUEltYWdlUmVhZGVyOjpwcm9jZXNzSW5mb0hlYWRlcik6CisgICAgICAgICogcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHSUZJbWFnZURlY29kZXI6OmluaXRGcmFtZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpH
SUZJbWFnZURlY29kZXI6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SUNPSW1hZ2VE
ZWNvZGVyOjpzZXRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OklDT0ltYWdlRGVjb2Rlcjo6ZnJh
bWVDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpJQ09JbWFnZURlY29kZXI6OnByb2Nlc3NEaXJl
Y3RvcnlFbnRyaWVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNP
SW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9K
UEVHSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpQRUdJbWFnZURlY29kZXI6
OnNldFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6SlBFR0ltYWdlRGVjb2Rlcjo6ZnJhbWVCdWZm
ZXJBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkpQRUdJbWFnZURlY29kZXI6Om91dHB1dFNj
YW5saW5lcyk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1h
Z2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0lt
YWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQTkdJbWFnZURlY29kZXI6OnNldFNp
emUpOgorICAgICAgICAoV2ViQ29yZTo6UE5HSW1hZ2VEZWNvZGVyOjpmcmFtZUJ1ZmZlckF0SW5k
ZXgpOgorICAgICAgICAoV2ViQ29yZTo6UE5HSW1hZ2VEZWNvZGVyOjpoZWFkZXJBdmFpbGFibGUp
OgorICAgICAgICAoV2ViQ29yZTo6UE5HSW1hZ2VEZWNvZGVyOjpyb3dBdmFpbGFibGUpOgorICAg
ICAgICAoV2ViQ29yZTo6UE5HSW1hZ2VEZWNvZGVyOjpyZWFkQ2h1bmtzKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICog
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OldFQlBJbWFnZURlY29kZXI6OmZyYW1lQnVmZmVyQXRJbmRleCk6CisgICAg
ICAgIChXZWJDb3JlOjpXRUJQSW1hZ2VEZWNvZGVyOjpkZWNvZGUpOgorCisyMDE2LTA3LTEzICBT
YWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgR2V0
IHJpZCBvZiB0aGUgY29sb3IgcHJvZmlsZSBmcm9tIEltYWdlRnJhbWUgYW5kIEltYWdlRGVjb2Rl
cgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5Njk5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VGcmFtZTo6c2V0Q29sb3JQcm9maWxlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6cmVhZENvbG9yUHJvZmlsZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpKUEVH
SW1hZ2VSZWFkZXI6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
anBlZy9KUEVHSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZWFkQ29sb3JQ
cm9maWxlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBOR0ltYWdlRGVjb2Rlcjo6aGVh
ZGVyQXZhaWxhYmxlKTogRGVsZXRlZC4KKworMjAxNi0wNy0xMyAgU2FpZCBBYm91LUhhbGxhd2Eg
IDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFNwbGl0IHRoZSBwaXhlbCBkYXRh
IG9mIEltYWdlRnJhbWUgdG8gYSBzZXBhcmF0ZSBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5Njc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSB0aGUgcGl4ZWwgZGF0YSBtYW5pcHVsYXRp
b24gcGFydCBpbiBJbWFnZUZyYW1lIGludG8gYSBzZXBhcmF0ZSBjbGFzcworICAgICAgICBhbmQg
dGhlbiBtYWtlIGl0IG9wdGlvbmFsIChhbGxvY2F0ZWQgb24gZGVtYW5kKS4KKworICAgICAgICAq
IENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFBsYXRmb3JtRWZsLmNtYWtlOgorICAgICAgICAq
IFBsYXRmb3JtR1RLLmNtYWtlOgorICAgICAgICAqIFBsYXRmb3JtV2luQ2Fpcm8uY21ha2U6Cisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0JpdG1hcFBpeGVscy5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkJpdG1hcFBpeGVsczo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFBpeGVsczo6
Qml0bWFwUGl4ZWxzKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFBpeGVsczo6d2lkdGgpOgor
ICAgICAgICAoV2ViQ29yZTo6Qml0bWFwUGl4ZWxzOjpoZWlnaHQpOgorICAgICAgICAoV2ViQ29y
ZTo6Qml0bWFwUGl4ZWxzOjpzZXRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFBpeGVs
czo6YXQpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwUGl4ZWxzOjpjbGVhcik6CisgICAgICAg
IChXZWJDb3JlOjpCaXRtYXBQaXhlbHM6OmNsZWFyUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpC
aXRtYXBQaXhlbHM6OnJlcGVhdEZpcnN0Um93KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFBp
eGVsczo6c2V0UkdCQSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBQaXhlbHM6Om92ZXJSR0JB
KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFBpeGVsczo6aW5Cb3VuZHMpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om11bHRpcGx5
MjU1KToKKyAgICAgICAgKFdlYkNvcmU6OmRpdmlkZTI1NSk6CisgICAgICAgIChXZWJDb3JlOjpk
aXZpZGVDZWlsKToKKyAgICAgICAgKFdlYkNvcmU6OnByZW11bHRpcGxpZWRDaGFubmVsKToKKyAg
ICAgICAgKFdlYkNvcmU6OnVucHJlbXVsdGlwbGllZENoYW5uZWwpOgorICAgICAgICAoV2ViQ29y
ZTo6bWFrZVByZW11bHRpcGxpZWRSR0JBKToKKyAgICAgICAgKFdlYkNvcmU6Om1ha2VVblByZW11
bHRpcGxpZWRSR0JBKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVEYXRhLmg6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUZyYW1lRGF0YTo6cGl4ZWxzKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJh
bWVEYXRhOjpoYXNQaXhlbHMpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0lt
YWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpvcGVyYXRvcj0p
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6Y2xlYXJQaXhlbERhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6emVyb0ZpbGxQaXhlbERhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VGcmFtZTo6emVyb0ZpbGxGcmFtZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VGcmFtZTo6Y29weUJpdG1hcERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFt
ZTo6c2V0U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpjb3B5Um93TlRpbWVz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OmFzTmV3TmF0aXZlSW1hZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VGcmFtZTo6c2V0UkdCQSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZy
YW1lOjpnZXRBZGRyKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6Omhhc1BpeGVsRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpvdmVyUkdCQSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUZyYW1lOjp3aWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1l
OjpoZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6Y29weVJvd05UaW1lcyk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpmaXhQb2ludFVuc2lnbmVk
TXVsdGlwbHkpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6ZGl2aWRl
MjU1KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1Q
SW1hZ2VSZWFkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qk1QSW1hZ2VSZWFkZXI6OmRlY29k
ZUJNUCk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvY2Fpcm8vQml0bWFwUGl4
ZWxzQ2Fpcm8uY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvY2Fpcm8vSW1hZ2VEZWNvZGVyQ2Fpcm8uY3BwLgorICAgICAgICAoV2ViQ29yZTo6
Qml0bWFwUGl4ZWxzOjppbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
Z2lmL0dJRkltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHSUZJbWFnZURlY29k
ZXI6OmhhdmVEZWNvZGVkUm93KToKKyAgICAgICAgKFdlYkNvcmU6OkdJRkltYWdlRGVjb2Rlcjo6
ZnJhbWVDb21wbGV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHSUZJbWFnZURlY29kZXI6OmluaXRG
cmFtZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVH
SW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNldFBpeGVsKToKKyAgICAgICAg
KFdlYkNvcmU6OkpQRUdJbWFnZURlY29kZXI6Om91dHB1dFNjYW5saW5lcyk6CisgICAgICAgICog
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpzZXRQaXhlbFJHQik6CisgICAgICAgIChXZWJDb3JlOjpzZXRQaXhlbFJHQkEp
OgorICAgICAgICAoV2ViQ29yZTo6c2V0UGl4ZWxQcmVtdWx0aXBsaWVkUkdCQSk6CisgICAgICAg
IChXZWJDb3JlOjpQTkdJbWFnZURlY29kZXI6OnJvd0F2YWlsYWJsZSk6CisgICAgICAgIChXZWJD
b3JlOjpQTkdJbWFnZURlY29kZXI6OmluaXRGcmFtZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3Jl
OjpQTkdJbWFnZURlY29kZXI6OmZyYW1lQ29tcGxldGUpOgorICAgICAgICAqIHBsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXRUJQSW1hZ2VEZWNvZGVyOjpkZWNvZGUpOgorCisyMDE2LTA3LTEzICBTYWlkIEFib3UtSGFs
bGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgU3BsaXQgdGhlIHBpeGVs
IGRhdGEgb2YgSW1hZ2VGcmFtZSB0byBhIHNlcGFyYXRlIGNsYXNzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTk2NzkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIHRoZSBwaXhlbCBkYXRhIG1hbmlw
dWxhdGlvbiBwYXJ0IGluIEltYWdlRnJhbWUgaW50byBhIHNlcGFyYXRlIGNsYXNzCisgICAgICAg
IGFuZCB0aGVuIG1ha2UgaXQgb3B0aW9uYWwgKGFsbG9jYXRlZCBvbiBkZW1hbmQpLgorCisgICAg
ICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAg
ICAgICogUGxhdGZvcm1HVEsuY21ha2U6CisgICAgICAgICogUGxhdGZvcm1XaW5DYWlyby5jbWFr
ZToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwUGl4ZWxzLmg6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6Qml0bWFwUGl4ZWxzOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwUGl4
ZWxzOjpCaXRtYXBQaXhlbHMpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwUGl4ZWxzOjp3aWR0
aCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBQaXhlbHM6OmhlaWdodCk6CisgICAgICAgIChX
ZWJDb3JlOjpCaXRtYXBQaXhlbHM6OnNldFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFw
UGl4ZWxzOjphdCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBQaXhlbHM6OmNsZWFyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkJpdG1hcFBpeGVsczo6Y2xlYXJSZWN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkJpdG1hcFBpeGVsczo6cmVwZWF0Rmlyc3RSb3cpOgorICAgICAgICAoV2ViQ29yZTo6Qml0
bWFwUGl4ZWxzOjpzZXRSR0JBKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFBpeGVsczo6b3Zl
clJHQkEpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwUGl4ZWxzOjppbkJvdW5kcyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bXVs
dGlwbHkyNTUpOgorICAgICAgICAoV2ViQ29yZTo6ZGl2aWRlMjU1KToKKyAgICAgICAgKFdlYkNv
cmU6OmRpdmlkZUNlaWwpOgorICAgICAgICAoV2ViQ29yZTo6cHJlbXVsdGlwbGllZENoYW5uZWwp
OgorICAgICAgICAoV2ViQ29yZTo6dW5wcmVtdWx0aXBsaWVkQ2hhbm5lbCk6CisgICAgICAgIChX
ZWJDb3JlOjptYWtlUHJlbXVsdGlwbGllZFJHQkEpOgorICAgICAgICAoV2ViQ29yZTo6bWFrZVVu
UHJlbXVsdGlwbGllZFJHQkEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZURhdGEuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlRnJhbWVEYXRhOjpwaXhlbHMpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VGcmFtZURhdGE6Omhhc1BpeGVscyk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6Om9wZXJh
dG9yPSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpjbGVhclBpeGVsRGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjp6ZXJvRmlsbFBpeGVsRGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUZyYW1lOjp6ZXJvRmlsbEZyYW1lUmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUZyYW1lOjpjb3B5Qml0bWFwRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUZyYW1lOjpzZXRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OmNvcHlSb3dO
VGltZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5o
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6YXNOZXdOYXRpdmVJbWFnZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpzZXRSR0JBKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlRnJhbWU6OmdldEFkZHIpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6aGFzUGl4
ZWxEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6Om92ZXJSR0JBKToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OndpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
RnJhbWU6OmhlaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpjb3B5Um93TlRp
bWVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OmZpeFBvaW50VW5z
aWduZWRNdWx0aXBseSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpk
aXZpZGUyNTUpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2Jt
cC9CTVBJbWFnZVJlYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCTVBJbWFnZVJlYWRlcjo6
ZGVjb2RlQk1QKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9CaXRt
YXBQaXhlbHNDYWlyby5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZURlY29kZXJDYWlyby5jcHAuCisgICAgICAgIChXZWJD
b3JlOjpCaXRtYXBQaXhlbHM6OmltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdJRkltYWdl
RGVjb2Rlcjo6aGF2ZURlY29kZWRSb3cpOgorICAgICAgICAoV2ViQ29yZTo6R0lGSW1hZ2VEZWNv
ZGVyOjpmcmFtZUNvbXBsZXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdJRkltYWdlRGVjb2Rlcjo6
aW5pdEZyYW1lQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVn
L0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0UGl4ZWwpOgorICAg
ICAgICAoV2ViQ29yZTo6SlBFR0ltYWdlRGVjb2Rlcjo6b3V0cHV0U2NhbmxpbmVzKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnNldFBpeGVsUkdCKToKKyAgICAgICAgKFdlYkNvcmU6OnNldFBpeGVs
UkdCQSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRQaXhlbFByZW11bHRpcGxpZWRSR0JBKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBOR0ltYWdlRGVjb2Rlcjo6cm93QXZhaWxhYmxlKToKKyAgICAgICAg
KFdlYkNvcmU6OlBOR0ltYWdlRGVjb2Rlcjo6aW5pdEZyYW1lQnVmZmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlBOR0ltYWdlRGVjb2Rlcjo6ZnJhbWVDb21wbGV0ZSk6CisgICAgICAgICogcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldFQlBJbWFnZURlY29kZXI6OmRlY29kZSk6CisKKzIwMTYtMDctMTEgIFNhaWQgQWJv
dS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLGNvbT4KKworICAgICAgICBSZW5hbWUgRnJh
bWVEYXRhIHRvIEltYWdlRnJhbWVEYXRhIGFuZCBtb3ZlIGl0IHRvIGEgc2VwYXJhdGUgZmlsZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1NDQ0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSBJbWFn
ZUZyYW1lRGF0YSB0byBhIHNlcGFyYXRlIGZpbGUgc28gaXQgY2FuIGJlIGNhY2hlZCBieSBJbWFn
ZVNvdXJjZQorICAgICAgICBhbmQgd2lsbCBzdGlsbCBiZSBjb25zdW1lZCBieSBCaXRtYXBJbWFn
ZS4gTWFrZSB0aGUgZGF0YSBtZW1iZXJzIG9mIEltYWdlRnJhbWVEYXRhCisgICAgICAgIGJlIHBy
aXZhdGUgYW5kIGFkZCBnZXR0ZXJzIHRvIHJldHVybiB0aGVpciB2YWx1ZXMuCisKKyAgICAgICAg
Tm8gbmV3IHRlc3RzIC0tIENvZGUgcmVmYWN0b3JpbmcsIG5vIGJlaGF2aW9yIGNoYW5nZS4KKwor
ICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmhhdmVGcmFtZUltYWdlQXRJbmRleCk6CisgICAgICAg
IChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZGVzdHJveURlY29kZWREYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OkJpdG1hcEltYWdlOjpkZXN0cm95RGVjb2RlZERhdGFJZk5lY2Vzc2FyeSk6CisgICAg
ICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Y2FjaGVGcmFtZSk6CisgICAgICAgIChXZWJDb3Jl
OjpCaXRtYXBJbWFnZTo6ZGF0YUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1h
Z2U6OmVuc3VyZUZyYW1lSXNDYWNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6
OmZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpmcmFt
ZUlzQ29tcGxldGVBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpmcmFt
ZUR1cmF0aW9uQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZnJhbWVI
YXNBbHBoYUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmZyYW1lT3Jp
ZW50YXRpb25BdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpzaW5nbGVQ
aXhlbFNvbGlkQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmlzQWxtb3N0
U29saWRDb2xvcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lRGF0YTo6RnJhbWVEYXRhKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lRGF0YTo6fkZyYW1lRGF0YSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZURhdGE6OnVzZWRGcmFtZUJ5dGVzKTogRGVsZXRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZVNvdXJjZTo6Y3JlYXRlRnJhbWVEYXRhQXRJbmRleCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VTb3VyY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pbWFnZUZy
YW1lRGF0YS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6Oklt
YWdlRnJhbWVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVEYXRhOjp+SW1hZ2VG
cmFtZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6OmNsZWFyU3ViSW1h
Z2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVEYXRhOjpjbGVhcik6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6c2luZ2xlUGl4ZWxTb2xpZENvbG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlRnJhbWVEYXRhOjppc0FsbW9zdFNvbGlkQ29sb3IpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ltYWdlRnJhbWVEYXRhLmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6OnN0YXR1cyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUZyYW1lRGF0YTo6aXNDb21wbGV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0
YTo6c2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6ZnJhbWVCeXRlcyk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6aW1hZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VGcmFtZURhdGE6Om9yaWVudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlRnJhbWVEYXRhOjpzdWJzYW1wbGluZ0xldmVsKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
RnJhbWVEYXRhOjpkdXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6
aGFzQWxwaGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6Omhhc0ltYWdlKToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVEYXRhOjpoYXNNZXRhZGF0YSk6CisKKzIwMTYt
MDYtMjQgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLGNvbT4KKworICAg
ICAgICBJbnRyb2R1Y2UgUGxhdGZvcm1JbWFnZSBhbmQgbWFrZSBpdCBpcyBhIHdyYXBwZXIgZm9y
IE5hdGl2ZUltYWdlUHRyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNTg2ODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGUgbWFpbiBwdXJwb3NlIG9mIHRoaXMgcmVmYWN0b3JpbmcgaXMgdG8gbW92ZSB0
aGUgcGxhdGZvcm0gaW1hZ2UgZGVwZW5kZW50CisgICAgICAgIGNvZGUgZnJvbSBCaXRtYXBJbWFn
ZSB0byBQbGF0Zm9ybUltYWdlLiBQbGF0Zm9ybUltYWdlIGlzIHJlc3BvbnNpYmxlIG9mIAorICAg
ICAgICBkcmF3aW5nIHRoZSBpbWFnZSBhbmQgYW5zd2VyaW5nIE5hdGl2ZUltYWdlUHRyIHF1ZXN0
aW9ucyB3aGVuIGFuIEltYWdlRGVjb2RlcgorICAgICAgICBpcyBub3QgYXZhaWxhYmxlLiBBcGFy
dCBmcm9tIGRyYXdpbmcgdGhlIGltYWdlLCB0aGUgcXVlcnkgZnVuY3Rpb25zIHdpbGwgYmUKKyAg
ICAgICAgY2FsbGVkIG9ubHkgd2hlbiBjb25zdHJ1Y3RpbmcgYSBGcmFtZURhdGEgc28gd2Ugd2ls
bCBrZWVwIGV2ZXJ5dGhpbmcgYXMgYQorICAgICAgICBOYXRpdmVJbWFnZVB0ci4gQnV0IHdlIHdp
bGwgY2FzdCB0aGUgTmF0aXZlSW1hZ2VQdHIgdG8gUGxhdGZvcm1JbWFnZSB3aGVuCisgICAgICAg
IGEgcGxhdGZvcm0gZGVwZW5kZW50IGZ1bmN0aW9uIGlzIG5lZWRlZC4KKworICAgICAgICBObyBu
ZXcgdGVzdHMgLS0gQ29kZSByZWZhY3RvcmluZywgbm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAg
ICAgICogUGxhdGZvcm1BcHBsZVdpbi5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFr
ZToKKyAgICAgICAgKiBQbGF0Zm9ybUdUSy5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybU1hYy5j
bWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybVdpbkNhaXJvLmNtYWtlOgorICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL0RP
TS5tbToKKyAgICAgICAgKC1bRE9NTm9kZSBnZXRQcmV2aWV3U25hcHNob3RJbWFnZTphbmRSZWN0
czpdKToKKyAgICAgICAgKiBwYWdlL21hYy9UZXh0SW5kaWNhdG9yV2luZG93Lm1tOgorICAgICAg
ICAoLVtXZWJUZXh0SW5kaWNhdG9yVmlldyBpbml0V2l0aEZyYW1lOnRleHRJbmRpY2F0b3I6bWFy
Z2luOm9mZnNldDpdKToKKyAgICAgICAgKGNyZWF0ZUNvbnRlbnRDcm9zc2ZhZGVBbmltYXRpb24p
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpC
aXRtYXBJbWFnZTo6ZGVzdHJveURlY29kZWREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1h
cEltYWdlOjpkZXN0cm95RGVjb2RlZERhdGFJZk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJDb3Jl
OjpCaXRtYXBJbWFnZTo6ZGF0YUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1h
Z2U6OmZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpu
YXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VP
ZlNpemUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3Vy
cmVudEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpmcmFtZXNOYXRpdmVJ
bWFnZXMpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OnNpbmdsZVBpeGVsU29saWRD
b2xvcik6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6aXNBbG1vc3RTb2xpZENvbG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVEYXRh
OjpGcmFtZURhdGEpOgorICAgICAgICBtX2hhc0FscGhhIGNhbiBiZSBpbml0aWFsaXplZCB3aXRo
IGZhbHNlIGJlY2F1c2UgaXQgaXMgYWNjZXNzZWQgb25seSBpbgorICAgICAgICBCaXRtYXBJbWFn
ZTo6ZnJhbWVIYXNBbHBoYUF0SW5kZXgoKSBhbmQgaXQgaXMgZ3VhcmRlZCBieSBtX2hhdmVNZXRh
ZGF0YS4KKyAgICAgICAgQm90aCBtX2hhdmVNZXRhZGF0YSBhbmQgbV9oYXNBbHBoYSBhcmUgc2V0
IGluIEJpdG1hcEltYWdlIGNvbnN0cnVjdG9yCisgICAgICAgIGFuZCBpbiBCaXRtYXBJbWFnZTo6
Y2FjaGVGcmFtZSgpLgorCisgICAgICAgIChXZWJDb3JlOjpGcmFtZURhdGE6On5GcmFtZURhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVEYXRhOjpjbGVhcik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpuYXRpdmVJbWFn
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6bmF0aXZlSW1hZ2VPZlNpemUpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2U6OmZyYW1lc05hdGl2ZUltYWdlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZTo6Z2V0Q0dJbWFnZVJlZik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZTo6Z2V0Rmlyc3RDR0ltYWdlUmVmT2ZTaXplKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlOjpnZXRDR0ltYWdlQXJyYXkpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL1BsYXRmb3JtSW1hZ2UuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9y
bUltYWdlOjpQbGF0Zm9ybUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtSW1hZ2U6
OmlzTmlsKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtSW1hZ2U6OmNnSW1hZ2VSZWYpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dXBkYXRlRGlzcGxheU1vZGUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtSW1hZ2VDYWlyby5jcHA6IFJlbmFt
ZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFn
ZUNhaXJvLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtSW1hZ2U6OmNsZWFyU3ViSW1h
Z2VzKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtSW1hZ2U6OnNpemUpOgorICAgICAgICAo
V2ViQ29yZTo6UGxhdGZvcm1JbWFnZTo6aGFzQWxwaGEpOgorICAgICAgICAoV2ViQ29yZTo6UGxh
dGZvcm1JbWFnZTo6c2luZ2xlUGl4ZWxTb2xpZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlBs
YXRmb3JtSW1hZ2U6OmlzQWxtb3N0U29saWRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpQbGF0
Zm9ybUltYWdlOjpzdWJzYW1wbGluZ1NjYWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
SW1hZ2U6OmRyYXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdl
Q0cuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5D
Ry5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXR0ZXJuOjpjcmVhdGVQbGF0Zm9ybVBhdHRlcm4p
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1BsYXRmb3JtSW1hZ2VDRy5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1JbWFnZTo6Y2xlYXJTdWJJbWFnZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1JbWFnZTo6c2l6ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybUltYWdlOjpoYXNBbHBoYSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUlt
YWdlOjpzaW5nbGVQaXhlbFNvbGlkQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1J
bWFnZTo6aXNBbG1vc3RTb2xpZENvbG9yKTogTW92ZWQgZnJvbSBQbHVnaW5WaWV3LmNwcCBzaW5j
ZSBQbGF0Zm9ybUltYWdlIGlzIHdoYXQgdGhpcyBmdW5jdGlvbiBiZWxvbmdzIHRvLgorICAgICAg
ICAoV2ViQ29yZTo6UGxhdGZvcm1JbWFnZTo6c3Vic2FtcGxpbmdTY2FsZSk6IFJldHVybnMgdGhl
IHN1Yi1zYW1wbGluZyBzY2FsZSBiYXNlZCBvbiB0aGUgY29udGV4dCBzY2FsaW5nLgorICAgICAg
ICAoV2ViQ29yZTo6UGxhdGZvcm1JbWFnZTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvVGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYS5tbToKKyAgICAgICAgKFRl
eHRUcmFja1JlcHJlc2VudGF0aW9uQ29jb2E6OnVwZGF0ZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6
OmdldFRJRkZSZXByZXNlbnRhdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6TW9j
a1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWM6OnVwZGF0ZVBsYXRmb3JtTGF5ZXIpOgorICAgICAgICAq
IHBsYXRmb3JtL3dpbi9EcmFnSW1hZ2VDR1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVh
dGVEcmFnSW1hZ2VGcm9tSW1hZ2UpOgorCiAyMDE2LTA3LTEzICBBbnR0aSBLb2l2aXN0byAgPGFu
dHRpQGFwcGxlLmNvbT4KIAogICAgICAgICB2MjogV2ViQ29udGVudCBjcmFzaCBkdWUgdG8gUkVM
RUFTRV9BU1NFUlQoIW1faW5Mb2FkUGVuZGluZ0ltYWdlcykgaW4gU3R5bGVSZXNvbHZlcjo6flN0
eWxlUmVzb2x2ZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IGEwZGU3Y2QyY2E1Mzc3ZDc2YTA4M2Ex
ODMwMGZhZDVmMDViNjFkYjcuLjI4OTk0NWNiYzI3OGY3NjQyYWI2ZDk5ODY4NjFhOWRlZDNiYmU1
YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNi0wNy0xMyAgU2FpZCBB
Ym91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUsY29tPgorCisgICAgICAgIEludHJvZHVj
ZSBQbGF0Zm9ybUltYWdlIGFuZCBtYWtlIGl0IGlzIGEgd3JhcHBlciBmb3IgTmF0aXZlSW1hZ2VQ
dHIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODY4
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTWlz
Yy9XZWJDYWNoZS5tbToKKyAgICAgICAgKCtbV2ViQ2FjaGUgaW1hZ2VGb3JVUkw6XSk6CisKIDIw
MTYtMDctMTMgIEVucmljYSBDYXN1Y2NpICA8ZW5yaWNhQGFwcGxlLmNvbT4KIAogICAgICAgICBV
cGRhdGUgc3VwcG9ydGVkIHBsYXRmb3JtcyBpbiB4Y2NvbmZpZyBmaWxlcyB0byBtYXRjaCB0aGUg
c2RrIG5hbWVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGI5NThkOTU5ZTY4MTUxMjk0N2QwODkyMWI3OWJlMDY4
ZDFhZjI0MTEuLjk3MTkxMDE2ZDQ1ZTUzNjY4NGI0NzM5OTIzZDQwYTc2YjZkOGZiYzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxNi0wNy0xMyAgU2FpZCBBYm91LUhhbGxhd2EgIDxz
YWJvdWhhbGxhd2FAYXBwbGUsY29tPgorCisgICAgICAgIEludHJvZHVjZSBQbGF0Zm9ybUltYWdl
IGFuZCBtYWtlIGl0IGlzIGEgd3JhcHBlciBmb3IgTmF0aXZlSW1hZ2VQdHIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODY4NAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL2Nn
L1dLSWNvbkRhdGFiYXNlQ0cuY3BwOgorICAgICAgICAoV0tJY29uRGF0YWJhc2VUcnlHZXRDR0lt
YWdlRm9yVVJMKToKKyAgICAgICAgKFdLSWNvbkRhdGFiYXNlVHJ5Q29weUNHSW1hZ2VBcnJheUZv
clVSTCk6CisgICAgICAgIEl0IHdhcyB0aGUgb25seSBwbGFjZSBpbiB0aGUgY29kZSB3aGljaCB1
c2VzIEJpdG1hcEltYWdlOjpnZXRDR0ltYWdlQXJyYXkoKS4KKyAgICAgICAgQ2FsbCBCaXRtYXBJ
bWFnZTo6ZnJhbWVzTmF0aXZlSW1hZ2VzKCkgaW5zdGVhZCBhbmQgZm9ybSB0aGUgcmV0dXJuZWQK
KyAgICAgICAgVmVjdG9yPE5hdGl2ZUltYWdlUHRyPiBidWlsZCB0aGUgQ0ZBcnJheVJlZi4KKyAg
ICAgICAgCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
bW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX3ByZXNlbnRhdGlvblNuYXBzaG90Rm9yUHJl
dmlld0l0ZW1Db250cm9sbGVyOl0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6cGx1Z2luU25hcHNob3RU
aW1lckZpcmVkKToKKyAgICAgICAgCisgICAgICAgIChXZWJLaXQ6OmlzQWxtb3N0U29saWRDb2xv
cik6IERlbGV0ZWQuCisgICAgICAgIE1vdmUgdGhlIHN0YXRpYyBmdW5jdGlvbiBpc0FsbW9zdFNv
bGlkQ29sb3IgdG8gUGxhdGZvcm1JbWFnZTo6aXNBbG1vc3RTb2xpZENvbG9yKCkuCisKIDIwMTYt
MDctMTMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJLaXQy
IHNob3VsZG4ndCBzaWduYWwgY3VzdG9tIHByb3RvY29sIGNsaWVudHMgZnJvbSB0aGUgTlNVUkxD
b25uZWN0aW9uIGxvYWRlciB0aHJlYWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDVhZmVhM2Ex
NGVlODZlODM0ZTAxZmY1ODUxNDNhOGYxMGRhYWNjMjAuLmIyYjI3OTBiODY0MTI3ZmJhMzU5Nzdm
ZTQ4NDE4NzE0NmQwN2E4ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0yMjI5LDYgKzIyMjks
NyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSVNPVlRUQ3Vl
LmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlQnVmZmVyLmNwcAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVEYXRh
LmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlT3JpZW50YXRpb24uY3BwCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW50
UG9pbnQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUFwcGxlV2luLmNt
YWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1BcHBsZVdpbi5jbWFrZQppbmRleCA1ZmY5OTFm
ZjdkYTMwOGJiOTE4MmVjZTNiZjEyMTczMGE1NDhkMjg3Li5iYWUzMWVhZjg2ZTdmY2E5MDU4MjUw
OTJhYTM4YTc4YzExZTQyMjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUFw
cGxlV2luLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQXBwbGVXaW4uY21ha2UK
QEAgLTU1LDcgKzU1LDYgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvY2Evd2luL1dlYlRpbGVkQmFja2luZ0xheWVyV2luLmNwcAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2NhL3dpbi9XS0NBQ0ZWaWV3TGF5ZXJUcmVlSG9zdC5jcHAKIAotICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvQ29sb3JDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9GbG9hdFBvaW50Q0cu
Y3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvRmxvYXRSZWN0Q0cuY3BwCkBAIC03NSw2ICs3
NCw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0aENH
LmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAKKyAgICBwbGF0Zm9y
bS9ncmFwaGljcy9jZy9QbGF0Zm9ybUltYWdlQ0cuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9U
cmFuc2Zvcm1hdGlvbk1hdHJpeENHLmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Q
bGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4
IDUxNDUwNGU2ZWMyNWFhNWU0M2I5OTM5OGQ1ZTM1Y2VlZWE3NjZhYTQuLjY0YWUxNzEwODlkY2Jm
MGNkNDViNzBhOWI4ZjcwZWZhOWZmZGVkYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1Bs
YXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCkBA
IC0xMjIsNyArMTIyLDYgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvUGxhdGZvcm1EaXNwbGF5LmNwcAogCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vQmFja2luZ1N0b3JlQmFja2VuZENhaXJvSW1wbC5jcHAKLSAgICBwbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0NhaXJvVXRpbGl0aWVzLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRD
YWlyby5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fpcm9IYXJmYnV6ek5H
LmNwcApAQCAtMTM0LDYgKzEzMyw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAg
IHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BhdGhDYWlyby5jcHAKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9QYXR0ZXJuQ2Fpcm8uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
UGxhdGZvcm1Db250ZXh0Q2Fpcm8uY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxh
dGZvcm1JbWFnZUNhaXJvLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3Jt
UGF0aENhaXJvLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1JlZlB0ckNhaXJvLmNw
cAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1RyYW5zZm9ybWF0aW9uTWF0cml4Q2Fpcm8u
Y3BwCkBAIC0xNzksOSArMTc5LDkgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MveDExL1BsYXRmb3JtRGlzcGxheVgxMS5jcHAKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy94MTEvWFVuaXF1ZVJlc291cmNlLmNwcAogCi0gICAgcGxhdGZvcm0vaW1hZ2Ut
ZW5jb2RlcnMvSlBFR0ltYWdlRW5jb2Rlci5jcHAKKyAgICBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9jYWlyby9CaXRtYXBQaXhlbHNDYWlyby5jcHAKIAotICAgIHBsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2NhaXJvL0ltYWdlRGVjb2RlckNhaXJvLmNwcAorICAgIHBsYXRmb3JtL2ltYWdlLWVuY29k
ZXJzL0pQRUdJbWFnZUVuY29kZXIuY3BwCiAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2VmbC9OZXR3
b3JrU3RhdGVOb3RpZmllckVmbC5jcHAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxh
dGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCA2
NDVhZGQxY2UzODg4OGIwNGQ0YTJkODlhZGEwYTdjNmRlMTk5ODZiLi5kMzFmNTcwNmE2OTU5YjIz
MWI1YmZiMjJmMDdkMTg0M2FlODYxYTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0
Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAt
MTAxLDcgKzEwMSw2IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vQmFja2luZ1N0b3JlQmFja2VuZENhaXJvSW1wbC5jcHAKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CYWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm9YMTEuY3BwCi0g
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5jcHAKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb1V0aWxpdGllcy5jcHAKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9GbG9hdFJlY3RDYWlyby5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9Gb250Q2Fpcm8uY3BwCkBAIC0xMTUsNiArMTE0LDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9T
T1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0aENhaXJvLmNwcAogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BhdHRlcm5DYWlyby5jcHAKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9QbGF0Zm9ybUNvbnRleHRDYWlyby5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9QbGF0Zm9ybUltYWdlQ2Fpcm8uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vUGxhdGZvcm1QYXRoQ2Fpcm8uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUmVm
UHRyQ2Fpcm8uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vVHJhbnNmb3JtYXRpb25N
YXRyaXhDYWlyby5jcHAKQEAgLTE0OSw3ICsxNDksNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NP
VVJDRVMKICAgICBwbGF0Zm9ybS9ndGsvVGVtcG9yYXJ5TGlua1N0dWJzLmNwcAogICAgIHBsYXRm
b3JtL2d0ay9Vc2VyQWdlbnRHdGsuY3BwCiAKLSAgICBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9j
YWlyby9JbWFnZURlY29kZXJDYWlyby5jcHAKKyAgICBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9j
YWlyby9CaXRtYXBQaXhlbHNDYWlyby5jcHAKIAogICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL2d0
ay9TRFBQcm9jZXNzb3JTY3JpcHRSZXNvdXJjZUd0ay5jcHAKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5j
bWFrZQppbmRleCA5ZjZmNDk2YjZjYzRlZjZlNGI3NGQ4NGFjMGFhOWRlYTU1YTAyMzdiLi40ZGRl
ZDMwODhmNGYzOTZmZWY0NDRlN2VlNjVjNjQxMDY1OGY1ODQxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1h
Yy5jbWFrZQpAQCAtMzk3LDcgKzM5Nyw2IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1dlYlN5c3RlbUJhY2tkcm9wTGF5ZXIubW0K
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9XZWJUaWxlZEJhY2tpbmdMYXllci5tbQog
Ci0gICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFwSW1hZ2VDRy5jcHAKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0Zsb2F0
UG9pbnRDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9GbG9hdFJlY3RDRy5jcHAKQEAg
LTQxNyw2ICs0MTYsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2NnL1BhdGhDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwCisg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGxhdGZvcm1JbWFnZUNHLmNwcAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL1N1YmltYWdlQ2FjaGVXaXRoVGltZXIuY3BwCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvVHJhbnNmb3JtYXRpb25NYXRyaXhDRy5jcHAKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvUGxhdGZvcm1XaW5DYWlyby5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3Jt
V2luQ2Fpcm8uY21ha2UKaW5kZXggMmM1NTNiMDU1MWRhZDY5YWExOTlkOTYwZjU1MjM0M2Q5MjBm
MDdiMy4uMzQyYWE5MjczMmZkOGY5MmU4NWNmYTYyNmQ1NTU3MGVmNjZiNmE2OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW5DYWlyby5jbWFrZQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybVdpbkNhaXJvLmNtYWtlCkBAIC0yMSw3ICsyMSw2IEBAIGxpc3QoQVBQRU5E
IFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4dC5jcHAKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybURpc3BsYXkuY3BwCiAKLSAgICBwbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0NhaXJvVXRpbGl0aWVzLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0Zs
b2F0UmVjdENhaXJvLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyby5j
cHAKQEAgLTM0LDYgKzMzLDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0aENhaXJvLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL1BhdHRlcm5DYWlyby5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0
Zm9ybUNvbnRleHRDYWlyby5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9y
bUltYWdlQ2Fpcm8uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1QYXRo
Q2Fpcm8uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUmVmUHRyQ2Fpcm8uY3BwCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vVHJhbnNmb3JtYXRpb25NYXRyaXhDYWlyby5jcHAK
QEAgLTQ2LDcgKzQ2LDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5jcHAKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy93aW4vU2ltcGxlRm9udERhdGFDYWlyb1dpbi5jcHAKIAotICAg
IHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdlRGVjb2RlckNhaXJvLmNwcAorICAg
IHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0JpdG1hcFBpeGVsc0NhaXJvLmNwcAogCiAg
ICAgcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb25TdHViLmNwcAogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
NGU3YzNhMjI5YTE2M2E1ZjVhNjBmNjMyYmVhMGUzN2FkMjM5NDBlMC4uY2NiMDcwYmUwOWJhYzE2
ZjVmOWZkMzE5YTgzMmM5NzgwOWIyMTE5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTQ4NSw3ICsxNDg1LDcgQEAKIAkJMzc1
Q0QyMzIxMTlENDNDODAwQTJBODU5IC8qIEh5cGhlbmF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzVDRDIzMTExOUQ0M0M4MDBBMkE4NTkgLyog
SHlwaGVuYXRpb24uaCAqLzsgfTsKIAkJMzc2RENDRTExM0I0Rjk2NjAwMkVCRUZDIC8qIFRleHRS
dW4uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzc2
RENDRTAxM0I0Rjk2NjAwMkVCRUZDIC8qIFRleHRSdW4uY3BwICovOyB9OwogCQkzNzc0QUJBNTBG
QTIxRUI0MDBBRDdERTkgLyogT3ZlcmxhcFRlc3RSZXF1ZXN0Q2xpZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzc0QUJBMzBGQTIxRUI0MDBBRDdE
RTkgLyogT3ZlcmxhcFRlc3RSZXF1ZXN0Q2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJMzc3QTNBOTAxNUVGQ0U5QjAwNTlGNUM3IC8qIEJp
dG1hcEltYWdlQ0cuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMzc3QTNBOEYxNUVGQ0U5QTAwNTlGNUM3IC8qIEJpdG1hcEltYWdlQ0cuY3BwICovOyB9
OworCQkzNzdBM0E5MDE1RUZDRTlCMDA1OUY1QzcgLyogUGxhdGZvcm1JbWFnZUNHLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3N0EzQThGMTVFRkNF
OUEwMDU5RjVDNyAvKiBQbGF0Zm9ybUltYWdlQ0cuY3BwICovOyB9OwogCQkzNzkxOUMyMzBCN0Qx
ODg2MDBBNTY5OTggLyogUG9zaXRpb25JdGVyYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzkxOUMyMTBCN0QxODg2MDBBNTY5OTggLyogUG9z
aXRpb25JdGVyYXRvci5jcHAgKi87IH07CiAJCTM3OTE5QzI0MEI3RDE4ODYwMEE1Njk5OCAvKiBQ
b3NpdGlvbkl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAzNzkxOUMyMjBCN0QxODg2MDBBNTY5OTggLyogUG9zaXRpb25JdGVyYXRvci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKCk7IH07IH07CiAJCTM3OTI5MTdBMTk4NUVGMzkw
MEY0QjY2MSAvKiBDcmVkZW50aWFsQmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMzc5MjkxNzgxOTg1RUYzOTAwRjRCNjYxIC8qIENyZWRlbnRpYWxC
YXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAg
LTIzMjQsMTAgKzIzMjQsMTQgQEAKIAkJNTNFRDNGREYxNjdBODhFNzAwNjc2MkU2IC8qIEpTSW50
ZXJuYWxTZXR0aW5nc0dlbmVyYXRlZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTNFRDNGREQxNjdBODhFNzAwNjc2MkU2IC8qIEpTSW50ZXJuYWxTZXR0
aW5nc0dlbmVyYXRlZC5oICovOyB9OwogCQk1M0VGNzY2QjE2NTMwQTYxMDA0Q0JFNDkgLyogU2V0
dGluZ3NNYWNyb3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUzRUY3NjZBMTY1MzBBNjEwMDRDQkU0OSAvKiBTZXR0aW5nc01hY3Jvcy5oICovOyB9Owog
CQk1M0VGNzY2QzE2NTMxOTk0MDA0Q0JFNDkgLyogU2V0dGluZ3NNYWNyb3MuaCBpbiBDb3B5IEdl
bmVyYXRlZCBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRUY3
NjZBMTY1MzBBNjEwMDRDQkU0OSAvKiBTZXR0aW5nc01hY3Jvcy5oICovOyB9OworCQk1NTA0RTRD
QjFEMzU1N0IyMDBGRTUwODggLyogQml0bWFwUGl4ZWxzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTA0RTRDQTFEMzU1MzJEMDBGRTUwODggLyogQml0
bWFwUGl4ZWxzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNTUwQTBCQzkwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTUwQTBCQzcwODVGNjAz
OTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuY3BwICovOyB9OwogCQk1NTBBMEJDQTA4NUY2MDM5
MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTUwQTBCQzgwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5h
bWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1
NTVCODdFQzFDQUFGMEFCMDAzNDk0MjUgLyogSW1hZ2VEZWNvZGVyQ0cuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTU1Qjg3RUExQ0FBRjBBQjAwMzQ5
NDI1IC8qIEltYWdlRGVjb2RlckNHLmNwcCAqLzsgfTsKIAkJNTU1Qjg3RUQxQ0FBRjBBQjAwMzQ5
NDI1IC8qIEltYWdlRGVjb2RlckNHLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1NTVCODdFQjFDQUFGMEFCMDAzNDk0MjUgLyogSW1hZ2VEZWNvZGVyQ0cu
aCAqLzsgfTsKKwkJNTU3NEYwODcxRDAyNzkwOTAwQjlGMTRDIC8qIFBsYXRmb3JtSW1hZ2UuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1NzRGMDg1MUQw
Mjc0NDQwMEI5RjE0QyAvKiBQbGF0Zm9ybUltYWdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTVDQkE2QTExRDFERjJFMTAwNDUxODYwIC8qIElt
YWdlRnJhbWVEYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDU1Q0JBNjlGMUQxREYyRTEwMDQ1MTg2MCAvKiBJbWFnZUZyYW1lRGF0YS5jcHAgKi87
IH07CisJCTU1Q0JBNkEyMUQxREYyRTEwMDQ1MTg2MCAvKiBJbWFnZUZyYW1lRGF0YS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTVDQkE2QTAxRDFERjJF
MTAwNDUxODYwIC8qIEltYWdlRnJhbWVEYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTcyQTdGMjExQzZFNTcxOTAwOUM2MTQ5IC8qIFNpbXVs
YXRlZENsaWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1NzJBN0YyMDFDNkU1NzE5MDA5QzYxNDkgLyogU2ltdWxhdGVkQ2xpY2suaCAqLzsgfTsKIAkJ
NTcyQTdGMjMxQzZFNUE2NjAwOUM2MTQ5IC8qIFNpbXVsYXRlZENsaWNrLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MkE3RjIyMUM2RTVBNjYwMDlD
NjE0OSAvKiBTaW11bGF0ZWRDbGljay5jcHAgKi87IH07CiAJCTU3RUY1RTYwMUQyMEM4MzkwMDE3
MUU2MCAvKiBUZXh0Q29kZWNSZXBsYWNlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTdFRjVFNUYxRDIwQzgzOTAwMTcxRTYwIC8qIFRleHRDb2Rl
Y1JlcGxhY2VtZW50LmggKi87IH07CkBAIC05MDYzLDcgKzkwNjcsNyBAQAogCQkzNzZEQ0NFMDEz
QjRGOTY2MDAyRUJFRkMgLyogVGV4dFJ1bi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBUZXh0UnVuLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzc3
MkIwOTUxNjUzNTg1NjAwMEE0OUNBIC8qIFBvcHVwT3BlbmluZ09ic2VydmVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBvcHVwT3BlbmluZ09ic2VydmVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3NzRBQkEzMEZBMjFFQjQwMEFEN0RFOSAvKiBPdmVybGFw
VGVzdFJlcXVlc3RDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT3Zl
cmxhcFRlc3RSZXF1ZXN0Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTM3
N0EzQThGMTVFRkNFOUEwMDU5RjVDNyAvKiBCaXRtYXBJbWFnZUNHLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJpdG1hcEltYWdlQ0cuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkzNzdBM0E4RjE1RUZDRTlBMDA1OUY1QzcgLyogUGxhdGZvcm1JbWFn
ZUNHLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBsYXRmb3JtSW1h
Z2VDRy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3OTE5QzIxMEI3RDE4ODYw
MEE1Njk5OCAvKiBQb3NpdGlvbkl0ZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBQb3NpdGlvbkl0ZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMzc5MTlDMjIwQjdEMTg4NjAwQTU2OTk4IC8qIFBvc2l0aW9uSXRlcmF0b3IuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBvc2l0aW9uSXRlcmF0b3IuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzc5MjkxNzgxOTg1RUYzOTAwRjRCNjYxIC8qIENy
ZWRlbnRpYWxCYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyZWRlbnRp
YWxCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05OTg5LDEwICs5OTkzLDE0
IEBACiAJCTUzRUQzRkRDMTY3QTg4RTcwMDY3NjJFNiAvKiBKU0ludGVybmFsU2V0dGluZ3NHZW5l
cmF0ZWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNJbnRlcm5h
bFNldHRpbmdzR2VuZXJhdGVkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTNF
RDNGREQxNjdBODhFNzAwNjc2MkU2IC8qIEpTSW50ZXJuYWxTZXR0aW5nc0dlbmVyYXRlZC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0ludGVybmFsU2V0dGluZ3NHZW5lcmF0
ZWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTNFRjc2NkExNjUzMEE2MTAwNENC
RTQ5IC8qIFNldHRpbmdzTWFjcm9zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNldHRpbmdzTWFjcm9zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU1MDRFNENB
MUQzNTUzMkQwMEZFNTA4OCAvKiBCaXRtYXBQaXhlbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQml0bWFw
UGl4ZWxzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU1MEEwQkM3MDg1RjYwMzkw
MDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFF1YWxpZmllZE5hbWUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJNTUwQTBCQzgw
ODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUXVhbGlmaWVkTmFtZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJNTU1Qjg3RUEx
Q0FBRjBBQjAwMzQ5NDI1IC8qIEltYWdlRGVjb2RlckNHLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdlRGVjb2RlckNHLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTU1Qjg3RUIxQ0FBRjBBQjAwMzQ5NDI1IC8qIEltYWdlRGVjb2RlckNHLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlRGVjb2RlckNHLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU1NzRGMDg1MUQwMjc0NDQwMEI5RjE0QyAvKiBQbGF0
Zm9ybUltYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtSW1hZ2UuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNTVDQkE2OUYxRDFERjJFMTAwNDUxODYwIC8qIEltYWdlRnJhbWVE
YXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdlRnJhbWVE
YXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTVDQkE2QTAxRDFERjJFMTAw
NDUxODYwIC8qIEltYWdlRnJhbWVEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEltYWdlRnJhbWVEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU1RDQw
OEY3MUE3QzYzMTgwMEM3ODQ1MCAvKiBTVkdJbWFnZUNsaWVudHMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU1ZHSW1hZ2VDbGllbnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTU3MkE3RjIwMUM2RTU3MTkwMDlDNjE0OSAvKiBTaW11bGF0ZWRDbGljay5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaW11bGF0ZWRDbGljay5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1NzJBN0YyMjFDNkU1QTY2MDA5QzYxNDkgLyogU2ltdWxh
dGVkQ2xpY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2ltdWxh
dGVkQ2xpY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjIwMjgsNyArMjIw
MzYsNiBAQAogCQlCMjc1MzUyOTBCMDUzODE0MDAyQ0U2NEYgLyogY2cgKi8gPSB7CiAJCQlpc2Eg
PSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTM3N0EzQThGMTVFRkNFOUEwMDU5RjVD
NyAvKiBCaXRtYXBJbWFnZUNHLmNwcCAqLywKIAkJCQkwRkNGMzMyMzBGMkI5NzE1MDA0QjY3OTUg
LyogQ29sb3JDRy5jcHAgKi8sCiAJCQkJQjI3NTM1MkIwQjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0
UG9pbnRDRy5jcHAgKi8sCiAJCQkJQjI3NTM1MkMwQjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0UmVj
dENHLmNwcCAqLywKQEAgLTIyMDU1LDYgKzIyMDYyLDcgQEAKIAkJCQlBODBBMzhGRDBFNTBDQzgy
MDBBMjVFQkMgLyogUGF0dGVybkNHLmNwcCAqLywKIAkJCQlCMjc1MzUzNjBCMDUzODE0MDAyQ0U2
NEYgLyogUERGRG9jdW1lbnRJbWFnZS5jcHAgKi8sCiAJCQkJQjI3NTM1MzcwQjA1MzgxNDAwMkNF
NjRGIC8qIFBERkRvY3VtZW50SW1hZ2UuaCAqLywKKwkJCQkzNzdBM0E4RjE1RUZDRTlBMDA1OUY1
QzcgLyogUGxhdGZvcm1JbWFnZUNHLmNwcCAqLywKIAkJCQkxRkM0MEZCODE2NTVDNTkxMDA0MEYy
OUUgLyogU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5jcHAgKi8sCiAJCQkJMUZDNDBGQjcxNjU1QzU5
MTAwNDBGMjlFIC8qIFN1YmltYWdlQ2FjaGVXaXRoVGltZXIuaCAqLywKIAkJCQlCMjc1MzUyQTBC
MDUzODE0MDAyQ0U2NEYgLyogVHJhbnNmb3JtYXRpb25NYXRyaXhDRy5jcHAgKi8sCkBAIC0yMjEy
Miw2ICsyMjEzMCw3IEBACiAJCQkJQkVGMjlFRTkxNzE1REQwOTAwQzRCNEM5IC8qIEF1ZGlvVHJh
Y2tQcml2YXRlLmggKi8sCiAJCQkJQTg5OTQzMjcwQjQyMzM4NzAwRDdDODAyIC8qIEJpdG1hcElt
YWdlLmNwcCAqLywKIAkJCQlBODk5NDMyNjBCNDIzMzg3MDBEN0M4MDIgLyogQml0bWFwSW1hZ2Uu
aCAqLywKKwkJCQk1NTA0RTRDQTFEMzU1MzJEMDBGRTUwODggLyogQml0bWFwUGl4ZWxzLmggKi8s
CiAJCQkJQ0RERTAyRTkxOEIzREZDNzAwQ0Y3RkYxIC8qIENETVNlc3Npb24uaCAqLywKIAkJCQlC
Mjc1MzUzODBCMDUzODE0MDAyQ0U2NEYgLyogQ29sb3IuY3BwICovLAogCQkJCUIyNzUzNTM5MEIw
NTM4MTQwMDJDRTY0RiAvKiBDb2xvci5oICovLApAQCAtMjIyMDYsNiArMjIyMTUsOCBAQAogCQkJ
CTQzRDI1OTc2MTNDODE2RjQwMDYwODU1OSAvKiBJbWFnZUJ1ZmZlci5jcHAgKi8sCiAJCQkJQjJB
MTBCOTEwQjM4MThCRDAwMDk5QUE0IC8qIEltYWdlQnVmZmVyLmggKi8sCiAJCQkJMjJCRDlGN0Qx
MzUzNjI1QzAwOUJEMTAyIC8qIEltYWdlQnVmZmVyRGF0YS5oICovLAorCQkJCTU1Q0JBNjlGMUQx
REYyRTEwMDQ1MTg2MCAvKiBJbWFnZUZyYW1lRGF0YS5jcHAgKi8sCisJCQkJNTVDQkE2QTAxRDFE
RjJFMTAwNDUxODYwIC8qIEltYWdlRnJhbWVEYXRhLmggKi8sCiAJCQkJQkM3RjQ0QTcwQjlFMzI0
RTAwQTlEMDgxIC8qIEltYWdlT2JzZXJ2ZXIuaCAqLywKIAkJCQlBODc0OEQ3NDEyQ0MzRjg5MDAx
RkJBNDEgLyogSW1hZ2VPcmllbnRhdGlvbi5jcHAgKi8sCiAJCQkJQTg3NDhENjYxMkNDMzc2MzAw
MUZCQTQxIC8qIEltYWdlT3JpZW50YXRpb24uaCAqLywKQEAgLTIyMjU1LDYgKzIyMjY2LDcgQEAK
IAkJCQkyRDUwMDJGQTFCNTZENzk5MDAyMEFBRjcgLyogUGF0aFV0aWxpdGllcy5oICovLAogCQkJ
CUE4RkE2RTVDMEU0Q0ZERUQwMEQ1Q0Y0OSAvKiBQYXR0ZXJuLmNwcCAqLywKIAkJCQlBOEZBNkU1
QjBFNENGREVEMDBENUNGNDkgLyogUGF0dGVybi5oICovLAorCQkJCTU1NzRGMDg1MUQwMjc0NDQw
MEI5RjE0QyAvKiBQbGF0Zm9ybUltYWdlLmggKi8sCiAJCQkJMDU2MkY5NjAxNTczRjg4RjAwMzFD
QTE2IC8qIFBsYXRmb3JtTGF5ZXIuaCAqLywKIAkJCQlDRUVGQ0Q3QjE5REIzM0RDMDAzODc2RDcg
LyogUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmggKi8sCiAJCQkJMDcyODQ3RTIxNkVCQzVC
MDAwNDNDRkE0IC8qIFBsYXRmb3JtVGV4dFRyYWNrLmggKi8sCkBAIC0yNjAyOCw2ICsyNjA0MCw3
IEBACiAJCQkJODVFNzExQjkwQUM1RDUzNTAwNTMyNzBGIC8qIERPTUhUTUxNYXBFbGVtZW50SW50
ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNTE1NzlGMEMwM0JCRDMwMDhCQjBFRSAvKiBE
T01IVE1MTWFycXVlZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNTE1NkVBMEMwM0I3
NDEwMDhCQjBFRSAvKiBET01IVE1MTWFycXVlZUVsZW1lbnRJbnRlcm5hbC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNTU3NEYwODcxRDAyNzkwOTAwQjlGMTRDIC8qIFBsYXRmb3JtSW1hZ2UuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTJERUM2NjU1MUM4MkQwNDEwMDk5ODQ2QSAvKiBET01IVE1MTWVkaWFF
bGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkyREVDNjY1MTFDODJEMDE2MDA5OTg0NkEgLyog
RE9NSFRNTE1lZGlhRWxlbWVudEludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NUJBNEQx
MzBBQTY4ODY4MDA4ODA1MkQgLyogRE9NSFRNTE1lbnVFbGVtZW50LmggaW4gSGVhZGVycyAqLywK
QEAgLTI2NDY5LDYgKzI2NDgyLDcgQEAKIAkJCQlEMzU5RDc4QTEyOUNBMjcxMDAwNkU1RDIgLyog
SFRNTERldGFpbHNFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEVBNzlGQTBBMTkxNkRG
MDBBOEVGNUYgLyogSFRNTERpcmVjdG9yeUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4
RUE3Q0I3MEExOTJCOUMwMEE4RUY1RiAvKiBIVE1MRGl2RWxlbWVudC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJNTVDQkE2QTIxRDFERjJFMTAwNDUxODYwIC8qIEltYWdlRnJhbWVEYXRhLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBOEVBNzlGNzBBMTkxNkRGMDBBOEVGNUYgLyogSFRNTERMaXN0RWxlbWVu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNGMTk4RTUwODI0NUU1OTAwMUU5QUJDIC8qIEhUTUxE
b2N1bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc3QjM4NjcxMjI4ODNFOTAwQjgxRkY4IC8q
IEhUTUxEb2N1bWVudFBhcnNlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yODM2OSw2ICsyODM4Myw3
IEBACiAJCQkJQjIyMjc5OTMwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0FuaW1hdGVNb3Rpb25FbGVt
ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyNzk5NTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZH
QW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3OTk4MEQw
MEJGMjIwMDcxQjc4MiAvKiBTVkdBbmltYXRpb25FbGVtZW50LmggaW4gSGVhZGVycyAqLywKKwkJ
CQk1NTA0RTRDQjFEMzU1N0IyMDBGRTUwODggLyogQml0bWFwUGl4ZWxzLmggaW4gSGVhZGVycyAq
LywKIAkJCQk0MzlEMzM0NTEzQTY5MTFDMDBDMjBGNEYgLyogU1ZHQW5pbWF0b3JGYWN0b3J5Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwOEZCM0Y4NDEzQkM3NTRDMDA5OUZDMTggLyogU1ZHQXR0cmli
dXRlVG9Qcm9wZXJ0eU1hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5OUMwRDAwQkYyMjAw
NzFCNzgyIC8qIFNWR0NpcmNsZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjk0MjEsNyAr
Mjk0MzYsNyBAQAogCQkJCUZEQzU0RjA0MTM5OUIwREEwMDhEOTExNyAvKiBCaXF1YWRGaWx0ZXJO
b2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZEMzE2MDI2MTJCMDI2NzYwMEMxQTM1OSAvKiBC
aXF1YWRQcm9jZXNzb3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTg5OTQzMjkwQjQyMzM4ODAw
RDdDODAyIC8qIEJpdG1hcEltYWdlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTM3N0EzQTkwMTVF
RkNFOUIwMDU5RjVDNyAvKiBCaXRtYXBJbWFnZUNHLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTM3
N0EzQTkwMTVFRkNFOUIwMDU5RjVDNyAvKiBQbGF0Zm9ybUltYWdlQ0cuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJOTc2RDZDNzgxMjJCOEEzRDAwMUZEMUY3IC8qIEJsb2IuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMkVERUYxRjMxMjFCMEVGQzAwNzI2REIyIC8qIEJsb2JEYXRhLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUUxRDMxQ0RDMTkxOTYwMjAwMDEwMDVBMyAvKiBCbG9iRGF0YUZpbGVSZWZl
cmVuY2UuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yOTc4NCw2ICsyOTc5OSw3IEBACiAJCQkJMkUy
RDk5RTgxMEUyQkMxQzAwNDk2MzM3IC8qIERPTUJsb2IubW0gaW4gU291cmNlcyAqLywKIAkJCQk4
NTA4OUNEODBBOThDNDI4MDBBMjc1QUEgLyogRE9NQ0RBVEFTZWN0aW9uLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJODVBQ0E5ODcwQTlCNTIwMzAwNjcxRTkwIC8qIERPTUNoYXJhY3RlckRhdGEubW0g
aW4gU291cmNlcyAqLywKKwkJCQk1NUNCQTZBMTFEMURGMkUxMDA0NTE4NjAgLyogSW1hZ2VGcmFt
ZURhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODUwODlDREEwQTk4QzQyODAwQTI3NUFBIC8q
IERPTUNvbW1lbnQubW0gaW4gU291cmNlcyAqLywKIAkJCQk5NzhEMDdCRTE0NUEwRjZDMDA5Njkw
OEQgLyogRE9NQ29yZUV4Y2VwdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NThDMzhBNjBB
QThGMjA0MDBCMTg3QTQgLyogRE9NQ291bnRlci5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET00ubW0gYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9vYmpjL0RPTS5tbQppbmRleCA0MDExZWEzZmQ4YzA0Njk3NGM1NWQ0OGUzOTZmMWI4
M2I4MWYzMzVkLi5hNWFjNGYwNWFlMzM5YThkNjQ3MDZjMTBmYzBmN2FmNDA0MjU2MjNjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTS5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTS5tbQpAQCAtNjA2LDcgKzYwNiw3IEBAIC0gKHZvaWQp
Z2V0UHJldmlld1NuYXBzaG90SW1hZ2U6KENHSW1hZ2VSZWYqKWNnSW1hZ2UgYW5kUmVjdHM6KE5T
QXJyYXkgKiopcmVjdHMKIAogICAgIGlmICh0ZXh0SW5kaWNhdG9yKSB7CiAgICAgICAgIGlmIChJ
bWFnZSogaW1hZ2UgPSB0ZXh0SW5kaWNhdG9yLT5jb250ZW50SW1hZ2UoKSkKLSAgICAgICAgICAg
ICpjZ0ltYWdlID0gKENHSW1hZ2VSZWYpQ0ZBdXRvcmVsZWFzZShDR0ltYWdlUmV0YWluKGltYWdl
LT5nZXRDR0ltYWdlUmVmKCkpKTsKKyAgICAgICAgICAgICpjZ0ltYWdlID0gaW1hZ2UtPm5hdGl2
ZUltYWdlKCkuYXV0b3JlbGVhc2UoKTsKICAgICB9CiAKICAgICBSZXRhaW5QdHI8TlNNdXRhYmxl
QXJyYXk+IHJlY3RBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvVGV4dEluZGljYXRvcldpbmRv
dy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1RleHRJbmRpY2F0b3JXaW5kb3cubW0KaW5k
ZXggMzY0YTlhODdjZTZmMDY2Mzk0OGI4ODQ2ZThlMmNlNmQxOTBmMjQ4OS4uYTc0ZGE4NWFjZWNh
M2M2Njk4ZGQxNTZhYjMxYTZjOTcxYTM1NGU2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9tYWMvVGV4dEluZGljYXRvcldpbmRvdy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L21hYy9UZXh0SW5kaWNhdG9yV2luZG93Lm1tCkBAIC0xNjIsOSArMTYyLDkgQEAgLSAoaW5zdGFu
Y2V0eXBlKWluaXRXaXRoRnJhbWU6KE5TUmVjdClmcmFtZSB0ZXh0SW5kaWNhdG9yOihQYXNzUmVm
UHRyPFRleHRJbmRpY2EKICAgICBjb250ZW50c0ltYWdlTG9naWNhbFNpemUuc2NhbGUoMSAvIF90
ZXh0SW5kaWNhdG9yLT5jb250ZW50SW1hZ2VTY2FsZUZhY3RvcigpKTsKICAgICBSZXRhaW5QdHI8
Q0dJbWFnZVJlZj4gY29udGVudHNJbWFnZTsKICAgICBpZiAoaW5kaWNhdG9yV2FudHNDb250ZW50
Q3Jvc3NmYWRlKCpfdGV4dEluZGljYXRvcikpCi0gICAgICAgIGNvbnRlbnRzSW1hZ2UgPSBfdGV4
dEluZGljYXRvci0+Y29udGVudEltYWdlV2l0aEhpZ2hsaWdodCgpLT5nZXRDR0ltYWdlUmVmKCk7
CisgICAgICAgIGNvbnRlbnRzSW1hZ2UgPSBfdGV4dEluZGljYXRvci0+Y29udGVudEltYWdlV2l0
aEhpZ2hsaWdodCgpLT5uYXRpdmVJbWFnZSgpOwogICAgIGVsc2UKLSAgICAgICAgY29udGVudHNJ
bWFnZSA9IF90ZXh0SW5kaWNhdG9yLT5jb250ZW50SW1hZ2UoKS0+Z2V0Q0dJbWFnZVJlZigpOwor
ICAgICAgICBjb250ZW50c0ltYWdlID0gX3RleHRJbmRpY2F0b3ItPmNvbnRlbnRJbWFnZSgpLT5u
YXRpdmVJbWFnZSgpOwogCiAgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBib3VuY2VMYXll
cnMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKIApAQCAtMjY1LDcg
KzI2NSw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8Q0FLZXlmcmFtZUFuaW1hdGlvbj4gY3JlYXRlQm91
bmNlQW5pbWF0aW9uKENGVGltZUludGVydmFsIGR1cmF0CiBzdGF0aWMgUmV0YWluUHRyPENBQmFz
aWNBbmltYXRpb24+IGNyZWF0ZUNvbnRlbnRDcm9zc2ZhZGVBbmltYXRpb24oQ0ZUaW1lSW50ZXJ2
YWwgZHVyYXRpb24sIFRleHRJbmRpY2F0b3ImIHRleHRJbmRpY2F0b3IpCiB7CiAgICAgUmV0YWlu
UHRyPENBQmFzaWNBbmltYXRpb24+IGNyb3NzZmFkZUFuaW1hdGlvbiA9IFtDQUJhc2ljQW5pbWF0
aW9uIGFuaW1hdGlvbldpdGhLZXlQYXRoOkAiY29udGVudHMiXTsKLSAgICBSZXRhaW5QdHI8Q0dJ
bWFnZVJlZj4gY29udGVudHNJbWFnZSA9IHRleHRJbmRpY2F0b3IuY29udGVudEltYWdlKCktPmdl
dENHSW1hZ2VSZWYoKTsKKyAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gY29udGVudHNJbWFnZSA9
IHRleHRJbmRpY2F0b3IuY29udGVudEltYWdlKCktPm5hdGl2ZUltYWdlKCk7CiAgICAgW2Nyb3Nz
ZmFkZUFuaW1hdGlvbiBzZXRUb1ZhbHVlOihpZCljb250ZW50c0ltYWdlLmdldCgpXTsKICAgICBb
Y3Jvc3NmYWRlQW5pbWF0aW9uIHNldEZpbGxNb2RlOmtDQUZpbGxNb2RlRm9yd2FyZHNdOwogICAg
IFtjcm9zc2ZhZGVBbmltYXRpb24gc2V0UmVtb3ZlZE9uQ29tcGxldGlvbjpOT107CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKaW5kZXggNDYw
ZDFiODU2Yjc3YjdjZjRlYzY4OTY1ODFiODMzZDNlN2Y5NzAxNC4uZmM2NDlkMTBhYWI5YzEzZmZm
MjkzMDU1YTcwN2NiNzQ1Mzc0NjkxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcApAQCAtNjgsMTUgKzY4LDEzIEBAIEJpdG1hcEltYWdl
OjpCaXRtYXBJbWFnZShOYXRpdmVJbWFnZVB0ciYmIGltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNl
cnZlcikKICAgICAsIG1faGF2ZUZyYW1lQ291bnQodHJ1ZSkKICAgICAsIG1fYW5pbWF0aW9uRmlu
aXNoZWRXaGVuQ2F0Y2hpbmdVcChmYWxzZSkKIHsKKyAgICBtX2ZyYW1lcy5yZXNlcnZlSW5pdGlh
bENhcGFjaXR5KDEpOworICAgIG1fZnJhbWVzLnVuY2hlY2tlZEFwcGVuZChXVEZNb3ZlKGltYWdl
KSk7CisgICAgCiAgICAgLy8gU2luY2Ugd2UgZG9uJ3QgaGF2ZSBhIGRlY29kZXIsIHdlIGNhbid0
IGZpZ3VyZSBvdXQgdGhlIGltYWdlIG9yaWVudGF0aW9uLgogICAgIC8vIFNldCBtX3NpemVSZXNw
ZWN0aW5nT3JpZW50YXRpb24gdG8gYmUgdGhlIHNhbWUgYXMgbV9zaXplIHNvIGl0J3Mgbm90IDB4
MC4KLSAgICBtX3NpemVSZXNwZWN0aW5nT3JpZW50YXRpb24gPSBtX3NpemUgPSBOYXRpdmVJbWFn
ZTo6c2l6ZShpbWFnZSk7CisgICAgbV9zaXplUmVzcGVjdGluZ09yaWVudGF0aW9uID0gbV9zaXpl
ID0gbV9mcmFtZXNbMF0uc2l6ZSgpOwogICAgIG1fZGVjb2RlZFNpemUgPSBtX3NpemUuYXJlYSgp
ICogNDsKLSAgICAKLSAgICBtX2ZyYW1lcy5ncm93KDEpOwotICAgIG1fZnJhbWVzWzBdLm1faGFz
QWxwaGEgPSBOYXRpdmVJbWFnZTo6aGFzQWxwaGEoaW1hZ2UpOwotICAgIG1fZnJhbWVzWzBdLm1f
aGF2ZU1ldGFkYXRhID0gdHJ1ZTsKLSAgICBtX2ZyYW1lc1swXS5tX2ltYWdlID0gV1RGTW92ZShp
bWFnZSk7CiB9CiAKIEJpdG1hcEltYWdlOjp+Qml0bWFwSW1hZ2UoKQpAQCAtMTA1LDcgKzEwMyw3
IEBAIGJvb2wgQml0bWFwSW1hZ2U6OmhhdmVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgp
CiAgICAgaWYgKGluZGV4ID49IG1fZnJhbWVzLnNpemUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgcmV0dXJuIG1fZnJhbWVzW2luZGV4XS5tX2ltYWdlOworICAgIHJldHVybiBtX2Zy
YW1lc1tpbmRleF0uaGFzSW1hZ2UoKTsKIH0KIAogYm9vbCBCaXRtYXBJbWFnZTo6aGFzU2luZ2xl
U2VjdXJpdHlPcmlnaW4oKSBjb25zdApAQCAtMTI1LDkgKzEyMyw3IEBAIHZvaWQgQml0bWFwSW1h
Z2U6OmRlc3Ryb3lEZWNvZGVkRGF0YShib29sIGRlc3Ryb3lBbGwpCiAgICAgICAgIC8vIFRoZSB1
bmRlcmx5aW5nIGZyYW1lIGlzbid0IGFjdHVhbGx5IGNoYW5naW5nICh3ZSdyZSBqdXN0IHRyeWlu
ZyB0bwogICAgICAgICAvLyBzYXZlIHRoZSBtZW1vcnkgZm9yIHRoZSBmcmFtZWJ1ZmZlciBkYXRh
KSwgc28gd2UgZG9uJ3QgbmVlZCB0byBjbGVhcgogICAgICAgICAvLyB0aGUgbWV0YWRhdGEuCi0g
ICAgICAgIHVuc2lnbmVkIGZyYW1lQnl0ZXMgPSBtX2ZyYW1lc1tpXS5tX2ZyYW1lQnl0ZXM7Ci0g
ICAgICAgIGlmIChtX2ZyYW1lc1tpXS5jbGVhcihmYWxzZSkpCi0gICAgICAgICAgICBmcmFtZUJ5
dGVzQ2xlYXJlZCArPSBmcmFtZUJ5dGVzOworICAgICAgICBmcmFtZUJ5dGVzQ2xlYXJlZCArPSBt
X2ZyYW1lc1tpXS5jbGVhcihJbWFnZUZyYW1lRGF0YTo6Q2FjaGluZzo6TWV0YWRhdGEpOwogICAg
IH0KIAogICAgIG1fc291cmNlLmNsZWFyKGRlc3Ryb3lBbGwsIGNsZWFyQmVmb3JlRnJhbWUsIGRh
dGEoKSwgbV9hbGxEYXRhUmVjZWl2ZWQpOwpAQCAtMTUwLDggKzE0Niw4IEBAIHZvaWQgQml0bWFw
SW1hZ2U6OmRlc3Ryb3lEZWNvZGVkRGF0YUlmTmVjZXNzYXJ5KGJvb2wgZGVzdHJveUFsbCkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgdW5zaWduZWQgYWxsRnJhbWVCeXRlcyA9IDA7Ci0gICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBtX2ZyYW1lcy5zaXplKCk7ICsraSkKLSAgICAgICAgYWxsRnJh
bWVCeXRlcyArPSBtX2ZyYW1lc1tpXS51c2VkRnJhbWVCeXRlcygpOworICAgIGZvciAoYXV0byYg
ZnJhbWUgOiBtX2ZyYW1lcykKKyAgICAgICAgYWxsRnJhbWVCeXRlcyArPSBmcmFtZS5mcmFtZUJ5
dGVzKCk7CiAKICAgICBpZiAoYWxsRnJhbWVCeXRlcyA+IGxhcmdlQW5pbWF0aW9uQ3V0b2ZmKSB7
CiAgICAgICAgIExPRyhJbWFnZXMsICJCaXRtYXBJbWFnZSAlcCBkZXN0cm95RGVjb2RlZERhdGFJ
Zk5lY2Vzc2FyeSBkZXN0cm95aW5nRGF0YTogYWxsRnJhbWVCeXRlcz0ldSBjdXRvZmY9JXUiLCB0
aGlzLCBhbGxGcmFtZUJ5dGVzLCBsYXJnZUFuaW1hdGlvbkN1dG9mZik7CkBAIC0xNzcsNyArMTcz
LDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZGVzdHJveU1ldGFkYXRhQW5kTm90aWZ5KHVuc2lnbmVk
IGZyYW1lQnl0ZXNDbGVhcmVkLCBDbGVhcmVkU28KICAgICAgICAgaW1hZ2VPYnNlcnZlcigpLT5k
ZWNvZGVkU2l6ZUNoYW5nZWQodGhpcywgLXNhZmVDYXN0PGludD4oZnJhbWVCeXRlc0NsZWFyZWQp
KTsKIH0KIAotdm9pZCBCaXRtYXBJbWFnZTo6Y2FjaGVGcmFtZShzaXplX3QgaW5kZXgsIFN1YnNh
bXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgSW1hZ2VGcmFtZUNhY2hpbmcgZnJhbWVDYWNo
aW5nKQordm9pZCBCaXRtYXBJbWFnZTo6Y2FjaGVGcmFtZShzaXplX3QgaW5kZXgsIFN1YnNhbXBs
aW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgSW1hZ2VGcmFtZURhdGE6OkNhY2hpbmcgY2FjaGlu
ZykKIHsKICAgICBzaXplX3QgbnVtRnJhbWVzID0gZnJhbWVDb3VudCgpOwogICAgIEFTU0VSVCht
X2RlY29kZWRTaXplID09IDAgfHwgbnVtRnJhbWVzID4gMSk7CkBAIC0xODUsMjUgKzE4MSwxMiBA
QCB2b2lkIEJpdG1hcEltYWdlOjpjYWNoZUZyYW1lKHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdM
ZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBJbQogICAgIGlmIChtX2ZyYW1lcy5zaXplKCkgPCBudW1G
cmFtZXMpCiAgICAgICAgIG1fZnJhbWVzLmdyb3cobnVtRnJhbWVzKTsKIAotICAgIGlmIChmcmFt
ZUNhY2hpbmcgPT0gQ2FjaGVNZXRhZGF0YUFuZEZyYW1lKSB7Ci0gICAgICAgIG1fZnJhbWVzW2lu
ZGV4XS5tX2ltYWdlID0gbV9zb3VyY2UuY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoaW5kZXgsIHN1
YnNhbXBsaW5nTGV2ZWwpOwotICAgICAgICBtX2ZyYW1lc1tpbmRleF0ubV9zdWJzYW1wbGluZ0xl
dmVsID0gc3Vic2FtcGxpbmdMZXZlbDsKLSAgICB9Ci0KLSAgICBtX2ZyYW1lc1tpbmRleF0ubV9v
cmllbnRhdGlvbiA9IG1fc291cmNlLm9yaWVudGF0aW9uQXRJbmRleChpbmRleCk7Ci0gICAgbV9m
cmFtZXNbaW5kZXhdLm1faGF2ZU1ldGFkYXRhID0gdHJ1ZTsKLSAgICBtX2ZyYW1lc1tpbmRleF0u
bV9pc0NvbXBsZXRlID0gbV9zb3VyY2UuZnJhbWVJc0NvbXBsZXRlQXRJbmRleChpbmRleCk7Cisg
ICAgbV9mcmFtZXNbaW5kZXhdID0gbV9zb3VyY2UuY3JlYXRlRnJhbWVEYXRhQXRJbmRleChpbmRl
eCwgc3Vic2FtcGxpbmdMZXZlbCwgY2FjaGluZyk7CiAKLSAgICBpZiAocmVwZXRpdGlvbkNvdW50
KGZhbHNlKSAhPSBjQW5pbWF0aW9uTm9uZSkKLSAgICAgICAgbV9mcmFtZXNbaW5kZXhdLm1fZHVy
YXRpb24gPSBtX3NvdXJjZS5mcmFtZUR1cmF0aW9uQXRJbmRleChpbmRleCk7CisgICAgTE9HKElt
YWdlcywgIkJpdG1hcEltYWdlICVwIGNhY2hlRnJhbWUgJWx1ICglcyV1IGJ5dGVzLCBjb21wbGV0
ZSAlZCkiLCB0aGlzLCBpbmRleCwgY2FjaGluZyA9PSBJbWFnZUZyYW1lRGF0YTo6Q2FjaGluZzo6
TWV0YWRhdGEgPyAibWV0YWRhdGEgb25seSwgIiA6ICIiLCBtX2ZyYW1lc1tpbmRleF0uZnJhbWVC
eXRlcygpLCBtX2ZyYW1lc1tpbmRleF0uaXNDb21wbGV0ZSgpKTsKIAotICAgIG1fZnJhbWVzW2lu
ZGV4XS5tX2hhc0FscGhhID0gbV9zb3VyY2UuZnJhbWVIYXNBbHBoYUF0SW5kZXgoaW5kZXgpOwot
ICAgIG1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lQnl0ZXMgPSBtX3NvdXJjZS5mcmFtZUJ5dGVzQXRJ
bmRleChpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCk7Ci0KLSAgICBMT0coSW1hZ2VzLCAiQml0bWFw
SW1hZ2UgJXAgY2FjaGVGcmFtZSAlbHUgKCVzJXUgYnl0ZXMsIGNvbXBsZXRlICVkKSIsIHRoaXMs
IGluZGV4LCBmcmFtZUNhY2hpbmcgPT0gQ2FjaGVNZXRhZGF0YU9ubHkgPyAibWV0YWRhdGEgb25s
eSwgIiA6ICIiLCBtX2ZyYW1lc1tpbmRleF0ubV9mcmFtZUJ5dGVzLCBtX2ZyYW1lc1tpbmRleF0u
bV9pc0NvbXBsZXRlKTsKLQotICAgIGlmIChtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZSkgewotICAg
ICAgICBpbnQgZGVsdGFCeXRlcyA9IHNhZmVDYXN0PGludD4obV9mcmFtZXNbaW5kZXhdLm1fZnJh
bWVCeXRlcyk7CisgICAgaWYgKG1fZnJhbWVzW2luZGV4XS5oYXNJbWFnZSgpKSB7CisgICAgICAg
IGludCBkZWx0YUJ5dGVzID0gc2FmZUNhc3Q8aW50PihtX2ZyYW1lc1tpbmRleF0uZnJhbWVCeXRl
cygpKTsKICAgICAgICAgbV9kZWNvZGVkU2l6ZSArPSBkZWx0YUJ5dGVzOwogICAgICAgICAvLyBU
aGUgZnVsbHktZGVjb2RlZCBmcmFtZSB3aWxsIHN1YnN1bWUgdGhlIHBhcnRpYWxseSBkZWNvZGVk
IGRhdGEgdXNlZAogICAgICAgICAvLyB0byBkZXRlcm1pbmUgaW1hZ2UgcHJvcGVydGllcy4KQEAg
LTI4OCwyMSArMjcxLDE5IEBAIGJvb2wgQml0bWFwSW1hZ2U6OmRhdGFDaGFuZ2VkKGJvb2wgYWxs
RGF0YVJlY2VpdmVkKQogICAgIC8vIGZyYW1lIGFmZmVjdGVkIGJ5IGFwcGVuZGluZyBuZXcgZGF0
YSBoZXJlLiBUaHVzIHdlIGhhdmUgdG8gY2xlYXIgYWxsIHRoZQogICAgIC8vIGluY29tcGxldGUg
ZnJhbWVzIHRvIGJlIHNhZmUuCiAgICAgdW5zaWduZWQgZnJhbWVCeXRlc0NsZWFyZWQgPSAwOwot
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9mcmFtZXMuc2l6ZSgpOyArK2kpIHsKKyAgICBm
b3IgKGF1dG8mIGZyYW1lIDogbV9mcmFtZXMpIHsKICAgICAgICAgLy8gTk9URTogRG9uJ3QgY2Fs
bCBmcmFtZUlzQ29tcGxldGVBdEluZGV4KCkgaGVyZSwgdGhhdCB3aWxsIHRyeSB0bwogICAgICAg
ICAvLyBkZWNvZGUgYW55IHVuY2FjaGVkIChpLmUuIG5ldmVyLWRlY29kZWQgb3IKICAgICAgICAg
Ly8gY2xlYXJlZC1vbi1hLXByZXZpb3VzLXBhc3MpIGZyYW1lcyEKLSAgICAgICAgdW5zaWduZWQg
ZnJhbWVCeXRlcyA9IG1fZnJhbWVzW2ldLm1fZnJhbWVCeXRlczsKLSAgICAgICAgaWYgKG1fZnJh
bWVzW2ldLm1faGF2ZU1ldGFkYXRhICYmICFtX2ZyYW1lc1tpXS5tX2lzQ29tcGxldGUpCi0gICAg
ICAgICAgICBmcmFtZUJ5dGVzQ2xlYXJlZCArPSAobV9mcmFtZXNbaV0uY2xlYXIodHJ1ZSkgPyBm
cmFtZUJ5dGVzIDogMCk7CisgICAgICAgIGlmIChmcmFtZS5oYXNNZXRhZGF0YSgpICYmICFmcmFt
ZS5pc0NvbXBsZXRlKCkpCisgICAgICAgICAgICBmcmFtZUJ5dGVzQ2xlYXJlZCArPSBmcmFtZS5j
bGVhcihJbWFnZUZyYW1lRGF0YTo6Q2FjaGluZzo6RW1wdHkpOwogICAgIH0KICAgICBkZXN0cm95
TWV0YWRhdGFBbmROb3RpZnkoZnJhbWVCeXRlc0NsZWFyZWQsIENsZWFyZWRTb3VyY2U6Ok5vKTsK
ICNlbHNlCiAgICAgLy8gRklYTUU6IHdoeSBpcyB0aGlzIGRpZmZlcmVudCBmb3IgaU9TPwogICAg
IGludCBkZWx0YUJ5dGVzID0gMDsKICAgICBpZiAoIW1fZnJhbWVzLmlzRW1wdHkoKSkgewotICAg
ICAgICBpbnQgYnl0ZXMgPSBtX2ZyYW1lc1ttX2ZyYW1lcy5zaXplKCkgLSAxXS5tX2ZyYW1lQnl0
ZXM7Ci0gICAgICAgIGlmIChtX2ZyYW1lc1ttX2ZyYW1lcy5zaXplKCkgLSAxXS5jbGVhcih0cnVl
KSkgeworICAgICAgICBpZiAoaW50IGJ5dGVzID0gbV9mcmFtZXNbbV9mcmFtZXMuc2l6ZSgpIC0g
MV0uY2xlYXIoSW1hZ2VGcmFtZURhdGE6OkNhY2hpbmc6OkVtcHR5KSkgewogICAgICAgICAgICAg
ZGVsdGFCeXRlcyArPSBieXRlczsKICAgICAgICAgICAgIGRlbHRhQnl0ZXMgKz0gbV9kZWNvZGVk
UHJvcGVydGllc1NpemU7CiAgICAgICAgICAgICBtX2RlY29kZWRQcm9wZXJ0aWVzU2l6ZSA9IDA7
CkBAIC0zNjYsMTUgKzM0NywxNSBAQCBib29sIEJpdG1hcEltYWdlOjppc1NpemVBdmFpbGFibGUo
KQogICAgIHJldHVybiBtX3NpemVBdmFpbGFibGU7CiB9CiAKLWJvb2wgQml0bWFwSW1hZ2U6OmVu
c3VyZUZyYW1lSXNDYWNoZWQoc2l6ZV90IGluZGV4LCBJbWFnZUZyYW1lQ2FjaGluZyBmcmFtZUNh
Y2hpbmcpCitib29sIEJpdG1hcEltYWdlOjplbnN1cmVGcmFtZUlzQ2FjaGVkKHNpemVfdCBpbmRl
eCwgSW1hZ2VGcmFtZURhdGE6OkNhY2hpbmcgY2FjaGluZykKIHsKICAgICBpZiAoaW5kZXggPj0g
ZnJhbWVDb3VudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoaW5kZXggPj0g
bV9mcmFtZXMuc2l6ZSgpCi0gICAgICAgIHx8IChmcmFtZUNhY2hpbmcgPT0gQ2FjaGVNZXRhZGF0
YUFuZEZyYW1lICYmICFtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZSkKLSAgICAgICAgfHwgKGZyYW1l
Q2FjaGluZyA9PSBDYWNoZU1ldGFkYXRhT25seSAmJiAhbV9mcmFtZXNbaW5kZXhdLm1faGF2ZU1l
dGFkYXRhKSkKLSAgICAgICAgY2FjaGVGcmFtZShpbmRleCwgMCwgZnJhbWVDYWNoaW5nKTsKKyAg
ICAgICAgfHwgKGNhY2hpbmcgPT0gSW1hZ2VGcmFtZURhdGE6OkNhY2hpbmc6Ok1ldGFkYXRhQW5k
SW1hZ2UgJiYgIW1fZnJhbWVzW2luZGV4XS5oYXNJbWFnZSgpKQorICAgICAgICB8fCAoY2FjaGlu
ZyA9PSBJbWFnZUZyYW1lRGF0YTo6Q2FjaGluZzo6TWV0YWRhdGEgJiYgIW1fZnJhbWVzW2luZGV4
XS5oYXNNZXRhZGF0YSgpKSkKKyAgICAgICAgY2FjaGVGcmFtZShpbmRleCwgMCwgY2FjaGluZyk7
CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTM4OCwxMCArMzY5LDkgQEAgTmF0aXZlSW1hZ2VQ
dHIgQml0bWFwSW1hZ2U6OmZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgZmxvYXQgcHJl
c2VudGF0aW9uU2MKIAogICAgIC8vIFdlIG1heSBoYXZlIGNhY2hlZCBhIGZyYW1lIHdpdGggYSBo
aWdoZXIgc3Vic2FtcGxpbmcgbGV2ZWwsIGluIHdoaWNoIGNhc2Ugd2UgbmVlZCB0bwogICAgIC8v
IHJlLWRlY29kZSB3aXRoIGEgbG93ZXIgbGV2ZWwuCi0gICAgaWYgKGluZGV4IDwgbV9mcmFtZXMu
c2l6ZSgpICYmIG1fZnJhbWVzW2luZGV4XS5tX2ltYWdlICYmIHN1YnNhbXBsaW5nTGV2ZWwgPCBt
X2ZyYW1lc1tpbmRleF0ubV9zdWJzYW1wbGluZ0xldmVsKSB7CisgICAgaWYgKGluZGV4IDwgbV9m
cmFtZXMuc2l6ZSgpICYmIG1fZnJhbWVzW2luZGV4XS5oYXNJbWFnZSgpICYmIHN1YnNhbXBsaW5n
TGV2ZWwgPCBtX2ZyYW1lc1tpbmRleF0uc3Vic2FtcGxpbmdMZXZlbCgpKSB7CiAgICAgICAgIC8v
IElmIHRoZSBpbWFnZSBpcyBhbHJlYWR5IGNhY2hlZCwgYnV0IGF0IHRvbyBzbWFsbCBhIHNpemUs
IHJlLWRlY29kZSBhIGxhcmdlciB2ZXJzaW9uLgotICAgICAgICBpbnQgc2l6ZUNoYW5nZSA9IC1t
X2ZyYW1lc1tpbmRleF0ubV9mcmFtZUJ5dGVzOwotICAgICAgICBtX2ZyYW1lc1tpbmRleF0uY2xl
YXIodHJ1ZSk7CisgICAgICAgIGludCBzaXplQ2hhbmdlID0gLW1fZnJhbWVzW2luZGV4XS5jbGVh
cihJbWFnZUZyYW1lRGF0YTo6Q2FjaGluZzo6RW1wdHkpOwogICAgICAgICBpbnZhbGlkYXRlUGxh
dGZvcm1EYXRhKCk7CiAgICAgICAgIG1fZGVjb2RlZFNpemUgKz0gc2l6ZUNoYW5nZTsKICAgICAg
ICAgaWYgKGltYWdlT2JzZXJ2ZXIoKSkKQEAgLTM5OSw0MCArMzc5LDcyIEBAIE5hdGl2ZUltYWdl
UHRyIEJpdG1hcEltYWdlOjpmcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIGZsb2F0IHBy
ZXNlbnRhdGlvblNjCiAgICAgfQogCiAgICAgLy8gSWYgd2UgaGF2ZW4ndCBmZXRjaGVkIGEgZnJh
bWUgeWV0LCBkbyBzby4KLSAgICBpZiAoaW5kZXggPj0gbV9mcmFtZXMuc2l6ZSgpIHx8ICFtX2Zy
YW1lc1tpbmRleF0ubV9pbWFnZSkKLSAgICAgICAgY2FjaGVGcmFtZShpbmRleCwgc3Vic2FtcGxp
bmdMZXZlbCwgQ2FjaGVNZXRhZGF0YUFuZEZyYW1lKTsKKyAgICBpZiAoaW5kZXggPj0gbV9mcmFt
ZXMuc2l6ZSgpIHx8ICFtX2ZyYW1lc1tpbmRleF0uaGFzSW1hZ2UoKSkKKyAgICAgICAgY2FjaGVG
cmFtZShpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCwgSW1hZ2VGcmFtZURhdGE6OkNhY2hpbmc6Ok1l
dGFkYXRhQW5kSW1hZ2UpOworCisgICAgcmV0dXJuIG1fZnJhbWVzW2luZGV4XS5pbWFnZSgpOwor
fQorICAgIAorTmF0aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6Om5hdGl2ZUltYWdlKCkKK3sKKyAg
ICByZXR1cm4gZnJhbWVJbWFnZUF0SW5kZXgoMCk7Cit9CisgICAgCitOYXRpdmVJbWFnZVB0ciBC
aXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VPZlNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKK3sKKyAg
ICBzaXplX3QgY291bnQgPSBmcmFtZUNvdW50KCk7CisgICAgCisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBjb3VudDsgKytpKSB7CisgICAgICAgIGF1dG8gaW1hZ2UgPSBmcmFtZUltYWdlQXRJ
bmRleChpKTsKKyAgICAgICAgaWYgKGltYWdlICYmIFBsYXRmb3JtSW1hZ2UoaW1hZ2UpLnNpemUo
KSA9PSBzaXplKQorICAgICAgICAgICAgcmV0dXJuIGltYWdlOworICAgIH0KKyAgICAKKyAgICAv
LyBGYWxsYmFjayB0byB0aGUgZmlyc3QgZnJhbWUgaW1hZ2UgaWYgd2UgY2FuJ3QgZmluZCB0aGUg
cmlnaHQgc2l6ZQorICAgIHJldHVybiBmcmFtZUltYWdlQXRJbmRleCgwKTsKK30KKyAgICAKK05h
dGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpCit7
CisgICAgcmV0dXJuIGZyYW1lSW1hZ2VBdEluZGV4KG1fY3VycmVudEZyYW1lKTsKK30KIAotICAg
IHJldHVybiBtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZTsKK1ZlY3RvcjxOYXRpdmVJbWFnZVB0cj4g
Qml0bWFwSW1hZ2U6OmZyYW1lc05hdGl2ZUltYWdlcygpCit7CisgICAgVmVjdG9yPE5hdGl2ZUlt
YWdlUHRyPiBpbWFnZXM7CisgICAgc2l6ZV90IGNvdW50ID0gZnJhbWVDb3VudCgpOworICAgIAor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgeworICAgICAgICBpZiAoYXV0
byBpbWFnZSA9IGZyYW1lSW1hZ2VBdEluZGV4KGkpKQorICAgICAgICAgICAgaW1hZ2VzLmFwcGVu
ZChpbWFnZSk7CisgICAgfQorICAgIAorICAgIHJldHVybiBpbWFnZXM7CiB9CiAKIGJvb2wgQml0
bWFwSW1hZ2U6OmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoc2l6ZV90IGluZGV4KQogewotICAgIGlm
ICghZW5zdXJlRnJhbWVJc0NhY2hlZChpbmRleCwgQ2FjaGVNZXRhZGF0YU9ubHkpKQorICAgIGlm
ICghZW5zdXJlRnJhbWVJc0NhY2hlZChpbmRleCwgSW1hZ2VGcmFtZURhdGE6OkNhY2hpbmc6Ok1l
dGFkYXRhKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIG1fZnJhbWVzW2lu
ZGV4XS5tX2lzQ29tcGxldGU7CisgICAgcmV0dXJuIG1fZnJhbWVzW2luZGV4XS5pc0NvbXBsZXRl
KCk7CiB9CiAKIGZsb2F0IEJpdG1hcEltYWdlOjpmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3Qg
aW5kZXgpCiB7Ci0gICAgaWYgKCFlbnN1cmVGcmFtZUlzQ2FjaGVkKGluZGV4LCBDYWNoZU1ldGFk
YXRhT25seSkpCisgICAgaWYgKCFlbnN1cmVGcmFtZUlzQ2FjaGVkKGluZGV4LCBJbWFnZUZyYW1l
RGF0YTo6Q2FjaGluZzo6TWV0YWRhdGEpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVy
biBtX2ZyYW1lc1tpbmRleF0ubV9kdXJhdGlvbjsKLX0KLQotTmF0aXZlSW1hZ2VQdHIgQml0bWFw
SW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkKLXsKLSAgICByZXR1cm4gZnJhbWVJ
bWFnZUF0SW5kZXgoY3VycmVudEZyYW1lKCkpOworICAgIHJldHVybiBtX2ZyYW1lc1tpbmRleF0u
ZHVyYXRpb24oKTsKIH0KIAogYm9vbCBCaXRtYXBJbWFnZTo6ZnJhbWVIYXNBbHBoYUF0SW5kZXgo
c2l6ZV90IGluZGV4KQogewotICAgIGlmICghZW5zdXJlRnJhbWVJc0NhY2hlZChpbmRleCwgQ2Fj
aGVNZXRhZGF0YU9ubHkpKQorICAgIGlmICghZW5zdXJlRnJhbWVJc0NhY2hlZChpbmRleCwgSW1h
Z2VGcmFtZURhdGE6OkNhY2hpbmc6Ok1ldGFkYXRhKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAK
LSAgICBpZiAobV9mcmFtZXNbaW5kZXhdLm1faGF2ZU1ldGFkYXRhKQotICAgICAgICByZXR1cm4g
bV9mcmFtZXNbaW5kZXhdLm1faGFzQWxwaGE7CisgICAgaWYgKG1fZnJhbWVzW2luZGV4XS5oYXNN
ZXRhZGF0YSgpKQorICAgICAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLmhhc0FscGhhKCk7CiAK
ICAgICByZXR1cm4gbV9zb3VyY2UuZnJhbWVIYXNBbHBoYUF0SW5kZXgoaW5kZXgpOwogfQpAQCAt
NDQ0LDExICs0NTYsMTEgQEAgYm9vbCBCaXRtYXBJbWFnZTo6Y3VycmVudEZyYW1lS25vd25Ub0Jl
T3BhcXVlKCkKIAogSW1hZ2VPcmllbnRhdGlvbiBCaXRtYXBJbWFnZTo6ZnJhbWVPcmllbnRhdGlv
bkF0SW5kZXgoc2l6ZV90IGluZGV4KQogewotICAgIGlmICghZW5zdXJlRnJhbWVJc0NhY2hlZChp
bmRleCwgQ2FjaGVNZXRhZGF0YU9ubHkpKQorICAgIGlmICghZW5zdXJlRnJhbWVJc0NhY2hlZChp
bmRleCwgSW1hZ2VGcmFtZURhdGE6OkNhY2hpbmc6Ok1ldGFkYXRhKSkKICAgICAgICAgcmV0dXJu
IEltYWdlT3JpZW50YXRpb24oKTsKIAotICAgIGlmIChtX2ZyYW1lc1tpbmRleF0ubV9oYXZlTWV0
YWRhdGEpCi0gICAgICAgIHJldHVybiBtX2ZyYW1lc1tpbmRleF0ubV9vcmllbnRhdGlvbjsKKyAg
ICBpZiAobV9mcmFtZXNbaW5kZXhdLmhhc01ldGFkYXRhKCkpCisgICAgICAgIHJldHVybiBtX2Zy
YW1lc1tpbmRleF0ub3JpZW50YXRpb24oKTsKIAogICAgIHJldHVybiBtX3NvdXJjZS5vcmllbnRh
dGlvbkF0SW5kZXgoaW5kZXgpOwogfQpAQCAtNzAwLDE3ICs3MTIsNTYgQEAgQ29sb3IgQml0bWFw
SW1hZ2U6OnNpbmdsZVBpeGVsU29saWRDb2xvcigpCiAgICAgICAgIHJldHVybiBDb2xvcigpOwog
ICAgIAogICAgIEFTU0VSVChtX2ZyYW1lcy5zaXplKCkpOwotICAgIG1fc29saWRDb2xvciA9IE5h
dGl2ZUltYWdlOjpzaW5nbGVQaXhlbFNvbGlkQ29sb3IobV9mcmFtZXNbMF0ubV9pbWFnZS5nZXQo
KSk7CisgICAgbV9zb2xpZENvbG9yID0gbV9mcmFtZXNbMF0uc2luZ2xlUGl4ZWxTb2xpZENvbG9y
KCk7CiAgICAgCiAgICAgQVNTRVJUKG1fc29saWRDb2xvcik7CiAgICAgcmV0dXJuIG1fc29saWRD
b2xvci52YWx1ZSgpOwogfQogICAgIAorYm9vbCBCaXRtYXBJbWFnZTo6aXNBbG1vc3RTb2xpZENv
bG9yKCkKK3sKKyAgICBpZiAoZnJhbWVDb3VudCgpICE9IDEpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIHJldHVybiBlbnN1cmVGcmFtZUlzQ2FjaGVkKDApICYmIG1fZnJhbWVzWzBdLmlz
QWxtb3N0U29saWRDb2xvcigpOworfQorICAgIAogYm9vbCBCaXRtYXBJbWFnZTo6Y2FuQW5pbWF0
ZSgpCiB7CiAgICAgcmV0dXJuIHNob3VsZEFuaW1hdGUoKSAmJiBmcmFtZUNvdW50KCkgPiAxOwog
fQogCit2b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3Np
dGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIG1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlv
biBkZXNjcmlwdGlvbikKK3sKKyAgICBpZiAoZGVzdFJlY3QuaXNFbXB0eSgpIHx8IHNyY1JlY3Qu
aXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyNpZiBQTEFURk9STShJT1MpCisgICAgc3Rh
cnRBbmltYXRpb24oRG9Ob3RDYXRjaFVwKTsKKyNlbHNlCisgICAgc3RhcnRBbmltYXRpb24oKTsK
KyNlbmRpZgorICAgIAorICAgIENvbG9yIGNvbG9yID0gc2luZ2xlUGl4ZWxTb2xpZENvbG9yKCk7
CisgICAgaWYgKGNvbG9yLmlzVmFsaWQoKSkgeworICAgICAgICBmaWxsV2l0aFNvbGlkQ29sb3Io
Y29udGV4dCwgZGVzdFJlY3QsIGNvbG9yLCBvcCk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgCisgICAgYXV0byBpbWFnZSA9IGZyYW1lSW1hZ2VBdEluZGV4KG1fY3VycmVudEZyYW1lLCBQ
bGF0Zm9ybUltYWdlOjpzdWJzYW1wbGluZ1NjYWxlKGNvbnRleHQsIGRlc3RSZWN0LCBzcmNSZWN0
KSk7CisgICAgaWYgKCFpbWFnZSkgLy8gSWYgaXQncyB0b28gZWFybHkgd2Ugd29uJ3QgaGF2ZSBh
biBpbWFnZSB5ZXQuCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBJbWFnZU9yaWVudGF0aW9u
IG9yaWVudGF0aW9uKGRlc2NyaXB0aW9uLmltYWdlT3JpZW50YXRpb24oKSk7CisgICAgaWYgKGRl
c2NyaXB0aW9uLnJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKCkgPT0gUmVzcGVjdEltYWdlT3JpZW50
YXRpb24pCisgICAgICAgIG9yaWVudGF0aW9uID0gZnJhbWVPcmllbnRhdGlvbkF0SW5kZXgobV9j
dXJyZW50RnJhbWUpOworICAgIAorICAgIFBsYXRmb3JtSW1hZ2UoaW1hZ2UpLmRyYXcoY29udGV4
dCwgZGVzdFJlY3QsIHNyY1JlY3QsIG1fc2l6ZSwgb3AsIG1vZGUsIG9yaWVudGF0aW9uKTsKKyAg
ICAKKyAgICBpZiAoaW1hZ2VPYnNlcnZlcigpKQorICAgICAgICBpbWFnZU9ic2VydmVyKCktPmRp
ZERyYXcodGhpcyk7Cit9CisgICAgCiB2b2lkIEJpdG1hcEltYWdlOjpkdW1wKFRleHRTdHJlYW0m
IHRzKSBjb25zdAogewogICAgIEltYWdlOjpkdW1wKHRzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCmluZGV4IDA3NTg5MjljZDg3ZmFkYWNmMDJi
NmVkOGVlYWZlN2RlZmQ2NmYwYzUuLjIyMThjODI0YjUyOGZkNjM5YmFiMTM4ZGVjYzk4Yjk4MTZh
MTY4MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1h
cEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1h
Z2UuaApAQCAtMjgsMTEgKzI4LDEzIEBACiAjaWZuZGVmIEJpdG1hcEltYWdlX2gKICNkZWZpbmUg
Qml0bWFwSW1hZ2VfaAogCi0jaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJDb2xvci5oIgor
I2luY2x1ZGUgIkltYWdlLmgiCisjaW5jbHVkZSAiSW1hZ2VGcmFtZURhdGEuaCIKICNpbmNsdWRl
ICJJbWFnZU9yaWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiSW1hZ2VTb3VyY2UuaCIKICNpbmNsdWRl
ICJJbnRTaXplLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1JbWFnZS5oIgogCiAjaWYgVVNFKENHKSB8
fCBVU0UoQVBQS0lUKQogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KQEAgLTQ3LDYzICs0OSw5
IEBAIHR5cGVkZWYgc3RydWN0IEhCSVRNQVBfXyAqSEJJVE1BUDsKICNlbmRpZgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0gICAgc3RydWN0IEZyYW1lRGF0YTsKLX0KLQotbmFtZXNwYWNlIFdURiB7
Ci0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgVmVjdG9yVHJhaXRzPFdlYkNvcmU6OkZyYW1lRGF0YT4g
OiBwdWJsaWMgU2ltcGxlQ2xhc3NWZWN0b3JUcmFpdHMgewotICAgICAgICBzdGF0aWMgY29uc3Qg
Ym9vbCBjYW5Jbml0aWFsaXplV2l0aE1lbXNldCA9IGZhbHNlOyAvLyBOb3QgYWxsIEZyYW1lRGF0
YSBtZW1iZXJzIGluaXRpYWxpemUgdG8gMC4KLSAgICB9OwotfQotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIFRpbWVyOwogCi1uYW1lc3BhY2UgTmF0aXZlSW1hZ2UgewotICAgIEludFNp
emUgc2l6ZShjb25zdCBOYXRpdmVJbWFnZVB0ciYpOwotICAgIGJvb2wgaGFzQWxwaGEoY29uc3Qg
TmF0aXZlSW1hZ2VQdHImKTsKLSAgICBDb2xvciBzaW5nbGVQaXhlbFNvbGlkQ29sb3IoY29uc3Qg
TmF0aXZlSW1hZ2VQdHImKTsKLX0KLQotLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0vLyBGcmFtZURhdGEgQ2xhc3MKLS8vID09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi1zdHJ1Y3QgRnJhbWVEYXRhIHsK
LXB1YmxpYzoKLSAgICBGcmFtZURhdGEoKQotICAgICAgICA6IG1faGF2ZU1ldGFkYXRhKGZhbHNl
KQotICAgICAgICAsIG1faXNDb21wbGV0ZShmYWxzZSkKLSAgICAgICAgLCBtX2hhc0FscGhhKHRy
dWUpCi0gICAgewotICAgIH0KLQotICAgIH5GcmFtZURhdGEoKQotICAgIHsgCi0gICAgICAgIGNs
ZWFyKHRydWUpOwotICAgIH0KLQotICAgIC8vIENsZWFyIHRoZSBjYWNoZWQgaW1hZ2UgZGF0YSBv
biB0aGUgZnJhbWUsIGFuZCAob3B0aW9uYWxseSkgdGhlIG1ldGFkYXRhLgotICAgIC8vIFJldHVy
bnMgd2hldGhlciB0aGVyZSB3YXMgY2FjaGVkIGltYWdlIGRhdGEgdG8gY2xlYXIuCi0gICAgYm9v
bCBjbGVhcihib29sIGNsZWFyTWV0YWRhdGEpOwotICAgIAotICAgIHVuc2lnbmVkIHVzZWRGcmFt
ZUJ5dGVzKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZSA/IG1fZnJhbWVCeXRlcyA6IDA7IH0KLQot
ICAgIE5hdGl2ZUltYWdlUHRyIG1faW1hZ2U7Ci0gICAgSW1hZ2VPcmllbnRhdGlvbiBtX29yaWVu
dGF0aW9uIHsgRGVmYXVsdEltYWdlT3JpZW50YXRpb24gfTsKLSAgICBTdWJzYW1wbGluZ0xldmVs
IG1fc3Vic2FtcGxpbmdMZXZlbCB7IDAgfTsKLSAgICBmbG9hdCBtX2R1cmF0aW9uIHsgMCB9Owot
ICAgIGJvb2wgbV9oYXZlTWV0YWRhdGEgOiAxOwotICAgIGJvb2wgbV9pc0NvbXBsZXRlIDogMTsK
LSAgICBib29sIG1faGFzQWxwaGEgOiAxOwotICAgIHVuc2lnbmVkIG1fZnJhbWVCeXRlcyB7IDAg
fTsKLX07Ci0KLS8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS8vIEJpdG1hcEltYWdlIENsYXNzCi0vLyA9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0KIGNsYXNzIEJpdG1hcEltYWdlIGZpbmFsIDogcHVi
bGljIEltYWdlIHsKICAgICBmcmllbmQgY2xhc3MgR2VuZXJhdGVkSW1hZ2U7CiAgICAgZnJpZW5k
IGNsYXNzIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOwpAQCAtMTU1LDEyICsxMDMsNiBAQCBwdWJs
aWM6CiAgICAgQ0ZEYXRhUmVmIGdldFRJRkZSZXByZXNlbnRhdGlvbigpIG92ZXJyaWRlOwogI2Vu
ZGlmCiAKLSNpZiBVU0UoQ0cpCi0gICAgV0VCQ09SRV9FWFBPUlQgQ0dJbWFnZVJlZiBnZXRDR0lt
YWdlUmVmKCkgb3ZlcnJpZGU7Ci0gICAgQ0dJbWFnZVJlZiBnZXRGaXJzdENHSW1hZ2VSZWZPZlNp
emUoY29uc3QgSW50U2l6ZSYpIG92ZXJyaWRlOwotICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBn
ZXRDR0ltYWdlQXJyYXkoKSBvdmVycmlkZTsKLSNlbmRpZgotCiAjaWYgUExBVEZPUk0oV0lOKQog
ICAgIGJvb2wgZ2V0SEJJVE1BUChIQklUTUFQKSBvdmVycmlkZTsKICAgICBib29sIGdldEhCSVRN
QVBPZlNpemUoSEJJVE1BUCwgY29uc3QgSW50U2l6ZSopIG92ZXJyaWRlOwpAQCAtMTc0LDggKzEx
NiwxMyBAQCBwdWJsaWM6CiAgICAgRXZhc19PYmplY3QqIGdldEV2YXNPYmplY3QoRXZhcyopIG92
ZXJyaWRlOwogI2VuZGlmCiAKKyAgICBXRUJDT1JFX0VYUE9SVCBOYXRpdmVJbWFnZVB0ciBuYXRp
dmVJbWFnZSgpIG92ZXJyaWRlOworICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlT2ZTaXpl
KGNvbnN0IEludFNpemUmKSBvdmVycmlkZTsKICAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFn
ZUZvckN1cnJlbnRGcmFtZSgpIG92ZXJyaWRlOwogICAgIEltYWdlT3JpZW50YXRpb24gb3JpZW50
YXRpb25Gb3JDdXJyZW50RnJhbWUoKSBvdmVycmlkZSB7IHJldHVybiBmcmFtZU9yaWVudGF0aW9u
QXRJbmRleChjdXJyZW50RnJhbWUoKSk7IH0KKyAgICBWZWN0b3I8TmF0aXZlSW1hZ2VQdHI+IGZy
YW1lc05hdGl2ZUltYWdlcygpIG92ZXJyaWRlOworICAgIAorICAgIFdFQkNPUkVfRVhQT1JUIGJv
b2wgaXNBbG1vc3RTb2xpZENvbG9yKCk7CiAKICAgICBib29sIGN1cnJlbnRGcmFtZUtub3duVG9C
ZU9wYXF1ZSgpIG92ZXJyaWRlOwogCkBAIC0yMTUsNyArMTYyLDYgQEAgcHJvdGVjdGVkOgogICAg
IHNpemVfdCBmcmFtZUNvdW50KCk7CiAKICAgICBOYXRpdmVJbWFnZVB0ciBmcmFtZUltYWdlQXRJ
bmRleChzaXplX3QsIGZsb2F0IHByZXNlbnRhdGlvblNjYWxlSGludCA9IDEpOwotICAgIE5hdGl2
ZUltYWdlUHRyIGNvcHlVbnNjYWxlZEZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCk7CiAKICAgICBi
b29sIGhhdmVGcmFtZUltYWdlQXRJbmRleChzaXplX3QpOwogCkBAIC0yMjUsMTEgKzE3MSwxMCBA
QCBwcm90ZWN0ZWQ6CiAgICAgSW1hZ2VPcmllbnRhdGlvbiBmcmFtZU9yaWVudGF0aW9uQXRJbmRl
eChzaXplX3QpOwogCiAgICAgLy8gRGVjb2RlcyBhbmQgY2FjaGVzIGEgZnJhbWUuIE5ldmVyIGFj
Y2Vzc2VkIGV4Y2VwdCBpbnRlcm5hbGx5LgotICAgIGVudW0gSW1hZ2VGcmFtZUNhY2hpbmcgeyBD
YWNoZU1ldGFkYXRhT25seSwgQ2FjaGVNZXRhZGF0YUFuZEZyYW1lIH07Ci0gICAgdm9pZCBjYWNo
ZUZyYW1lKHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCwgSW1hZ2VGcmFtZUNhY2hpbmcg
PSBDYWNoZU1ldGFkYXRhQW5kRnJhbWUpOworICAgIHZvaWQgY2FjaGVGcmFtZShzaXplX3QgaW5k
ZXgsIFN1YnNhbXBsaW5nTGV2ZWwsIEltYWdlRnJhbWVEYXRhOjpDYWNoaW5nID0gSW1hZ2VGcmFt
ZURhdGE6OkNhY2hpbmc6Ok1ldGFkYXRhQW5kSW1hZ2UpOwogCiAgICAgLy8gQ2FsbGVkIGJlZm9y
ZSBhY2Nlc3NpbmcgbV9mcmFtZXNbaW5kZXhdIGZvciBpbmZvIHdpdGhvdXQgZGVjb2RpbmcuIFJl
dHVybnMgZmFsc2Ugb24gaW5kZXggb3V0IG9mIGJvdW5kcy4KLSAgICBib29sIGVuc3VyZUZyYW1l
SXNDYWNoZWQoc2l6ZV90IGluZGV4LCBJbWFnZUZyYW1lQ2FjaGluZyA9IENhY2hlTWV0YWRhdGFB
bmRGcmFtZSk7CisgICAgYm9vbCBlbnN1cmVGcmFtZUlzQ2FjaGVkKHNpemVfdCBpbmRleCwgSW1h
Z2VGcmFtZURhdGE6OkNhY2hpbmcgPSBJbWFnZUZyYW1lRGF0YTo6Q2FjaGluZzo6TWV0YWRhdGFB
bmRJbWFnZSk7CiAKICAgICAvLyBDYWxsZWQgdG8gaW52YWxpZGF0ZSBjYWNoZWQgZGF0YS4gV2hl
biB8ZGVzdHJveUFsbHwgaXMgdHJ1ZSwgd2Ugd2lwZSBvdXQKICAgICAvLyB0aGUgZW50aXJlIGZy
YW1lIGJ1ZmZlciBjYWNoZSBhbmQgdGVsbCB0aGUgaW1hZ2Ugc291cmNlIHRvIGRlc3Ryb3kKQEAg
LTI5Miw3ICsyMzcsNyBAQCBwcml2YXRlOgogICAgIG11dGFibGUgSW50U2l6ZSBtX3NpemVSZXNw
ZWN0aW5nT3JpZW50YXRpb247CiAKICAgICBzaXplX3QgbV9jdXJyZW50RnJhbWUgeyAwIH07IC8v
IFRoZSBpbmRleCBvZiB0aGUgY3VycmVudCBmcmFtZSBvZiBhbmltYXRpb24uCi0gICAgVmVjdG9y
PEZyYW1lRGF0YSwgMT4gbV9mcmFtZXM7IC8vIEFuIGFycmF5IG9mIHRoZSBjYWNoZWQgZnJhbWVz
IG9mIHRoZSBhbmltYXRpb24uIFdlIGhhdmUgdG8gcmVmIGZyYW1lcyB0byBwaW4gdGhlbSBpbiB0
aGUgY2FjaGUuCisgICAgVmVjdG9yPEltYWdlRnJhbWVEYXRhLCAxPiBtX2ZyYW1lczsgLy8gQW4g
YXJyYXkgb2YgdGhlIGNhY2hlZCBmcmFtZXMgb2YgdGhlIGFuaW1hdGlvbi4gV2UgaGF2ZSB0byBy
ZWYgZnJhbWVzIHRvIHBpbiB0aGVtIGluIHRoZSBjYWNoZS4KIAogICAgIHN0ZDo6dW5pcXVlX3B0
cjxUaW1lcj4gbV9mcmFtZVRpbWVyOwogICAgIGludCBtX3JlcGV0aXRpb25Db3VudCB7IGNBbmlt
YXRpb25Ob25lIH07IC8vIEhvdyBtYW55IHRvdGFsIGFuaW1hdGlvbiBsb29wcyB3ZSBzaG91bGQg
ZG8uIFRoaXMgd2lsbCBiZSBjQW5pbWF0aW9uTm9uZSBpZiB0aGlzIGltYWdlIHR5cGUgaXMgaW5j
YXBhYmxlIG9mIGFuaW1hdGlvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0JpdG1hcFBpeGVscy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQml0bWFwUGl4ZWxzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWZhZTNkMmU0MGNjZjFkODFmNmJhNTdkYjY4
MmQ5MmQ0NjliYmFjMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0JpdG1hcFBpeGVscy5oCkBAIC0wLDAgKzEsMTgzIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSAiQ29sb3IuaCIKKyNpbmNsdWRlICJJbnRSZWN0LmgiCisjaW5jbHVkZSAiSW50U2l6ZS5oIgor
I2luY2x1ZGUgIk5hdGl2ZUltYWdlUHRyLmgiCisKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQml0bWFwUGl4ZWxzIHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEJpdG1hcFBpeGVscz4gY3JlYXRlKGNvbnN0IEludFNp
emUmIHNpemUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSkKKyAgICB7CisgICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPEJpdG1hcFBpeGVscz4oc2l6ZSwgcHJlbXVsdGlwbHlBbHBoYSk7Cisg
ICAgfQorCisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxCaXRtYXBQaXhlbHM+IGNyZWF0ZShj
b25zdCBCaXRtYXBQaXhlbHMmIG90aGVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8Qml0bWFwUGl4ZWxzPihvdGhlcik7CisgICAgfQorCisgICAgQml0bWFwUGl4ZWxz
KGNvbnN0IEludFNpemUmIHNpemUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSA9IHRydWUpCisgICAg
ICAgIDogbV9wcmVtdWx0aXBseUFscGhhKHByZW11bHRpcGx5QWxwaGEpCisgICAgeworICAgICAg
ICBBU1NFUlQoIXNpemUuaXNFbXB0eSgpKTsKKyAgICAgICAgc2V0U2l6ZShzaXplKTsKKyAgICB9
CisKKyAgICBCaXRtYXBQaXhlbHMoY29uc3QgQml0bWFwUGl4ZWxzJiBvdGhlcikKKyAgICB7Cisg
ICAgICAgIGlmICh0aGlzID09ICZvdGhlcikKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
CisgICAgICAgIG1fYmFja2luZ1N0b3JlID0gb3RoZXIubV9iYWNraW5nU3RvcmU7CisgICAgICAg
IG1fcGl4ZWxzID0gbV9iYWNraW5nU3RvcmUuZGF0YSgpOworICAgICAgICBtX3NpemUgPSBvdGhl
ci5tX3NpemU7CisgICAgICAgIG1fcmVjdCA9IG90aGVyLm1fcmVjdDsKKyAgICAgICAgbV9wcmVt
dWx0aXBseUFscGhhID0gb3RoZXIubV9wcmVtdWx0aXBseUFscGhhOworICAgIH0KKworICAgIE5h
dGl2ZUltYWdlUHRyIGltYWdlKCkgY29uc3Q7CisKKyAgICBib29sIHNldFNpemUoY29uc3QgSW50
U2l6ZSYgc2l6ZSkKKyAgICB7CisgICAgICAgIGlmICghbV9iYWNraW5nU3RvcmUudHJ5UmVzZXJ2
ZUNhcGFjaXR5KHNpemUuYXJlYSgpKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgCisgICAgICAgIG1fYmFja2luZ1N0b3JlLnJlc2l6ZShzaXplLmFyZWEoKSk7CisgICAgICAg
IG1fcGl4ZWxzID0gbV9iYWNraW5nU3RvcmUuZGF0YSgpOworICAgICAgICBtX3NpemUgPSBzaXpl
OworICAgICAgICBtX3JlY3QgPSBJbnRSZWN0KEludFBvaW50KCksIG1fc2l6ZSk7CisgICAgICAg
IGNsZWFyKCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAKKyAgICB2b2lkIHNl
dFJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkKKyAgICB7CisgICAgICAgIEFTU0VSVCghbV9zaXpl
LmlzRW1wdHkoKSk7CisgICAgICAgIEFTU0VSVChpbkJvdW5kcyhyZWN0KSk7CisgICAgICAgIG1f
cmVjdCA9IHJlY3Q7CisgICAgfQorICAgIAorICAgIEludFNpemUgc2l6ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fc2l6ZTsgfQorICAgIEludFJlY3QgcmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdDsg
fQorCisgICAgUkdCQTMyKiBhdChpbnQgeCwgaW50IHkpIGNvbnN0CisgICAgeworICAgICAgICBy
ZXR1cm4gbV9waXhlbHMgKyB5ICogbV9zaXplLndpZHRoKCkgKyB4OworICAgIH0KKworICAgIHZv
aWQgY2xlYXIoKQorICAgIHsKKyAgICAgICAgbWVtc2V0KG1fcGl4ZWxzLCAwLCBtX3NpemUuYXJl
YSgpICogc2l6ZW9mKFJHQkEzMikpOworICAgIH0KKworICAgIHZvaWQgY2xlYXJSZWN0KGNvbnN0
IEludFJlY3QmIHJlY3QpCisgICAgeworICAgICAgICBpZiAocmVjdC5pc0VtcHR5KCkgfHwgaW5C
b3VuZHMocmVjdCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIAorICAgICAgICBzaXpl
X3QgcmVjdFdpZHRoSW5CeXRlcyA9IHJlY3Qud2lkdGgoKSAqIHNpemVvZihSR0JBMzIpOworICAg
ICAgICBSR0JBMzIqIHN0YXJ0ID0gYXQocmVjdC54KCksIHJlY3QueSgpKTsKKyAgICAgICAgZm9y
IChpbnQgaSA9IDA7IGkgPCByZWN0LmhlaWdodCgpOyArK2kpIHsKKyAgICAgICAgICAgIG1lbXNl
dChzdGFydCwgMCwgcmVjdFdpZHRoSW5CeXRlcyk7CisgICAgICAgICAgICBzdGFydCArPSBtX3Np
emUud2lkdGgoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgcmVwZWF0Rmlyc3RSb3co
Y29uc3QgSW50UmVjdCYgcmVjdCkKKyAgICB7CisgICAgICAgIGlmIChyZWN0LmlzRW1wdHkoKSB8
fCBpbkJvdW5kcyhyZWN0KSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgCisgICAgICAg
IHNpemVfdCByZWN0V2lkdGhJbkJ5dGVzID0gcmVjdC53aWR0aCgpICogc2l6ZW9mKFJHQkEzMik7
CisgICAgICAgIFJHQkEzMiogc3JjID0gYXQocmVjdC54KCksIHJlY3QueSgpKTsKKyAgICAgICAg
UkdCQTMyKiBkZXN0ID0gc3JjICsgbV9zaXplLndpZHRoKCk7CisgICAgICAgIGZvciAoaW50IGkg
PSAxOyBpIDwgcmVjdC5oZWlnaHQoKTsgKytpKSB7CisgICAgICAgICAgICBtZW1jcHkoZGVzdCwg
c3JjLCByZWN0V2lkdGhJbkJ5dGVzKTsKKyAgICAgICAgICAgIGRlc3QgKz0gbV9zaXplLndpZHRo
KCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIHNldFJHQkEoaW50IHgsIGludCB5LCB1
bnNpZ25lZCByLCB1bnNpZ25lZCBnLCB1bnNpZ25lZCBiLCB1bnNpZ25lZCBhKQorICAgIHsKKyAg
ICAgICAgc2V0UkdCQShhdCh4LCB5KSwgciwgZywgYiwgYSk7CisgICAgfQorCisgICAgdm9pZCBz
ZXRSR0JBKFJHQkEzMiogZGVzdCwgdW5zaWduZWQgciwgdW5zaWduZWQgZywgdW5zaWduZWQgYiwg
dW5zaWduZWQgYSkKKyAgICB7CisgICAgICAgIGlmICghbV9wcmVtdWx0aXBseUFscGhhIHx8IGEg
Pj0gMjU1KQorICAgICAgICAgICAgKmRlc3QgPSBtYWtlUkdCQShyLCBnLCBiLCBhKTsKKyAgICAg
ICAgZWxzZSBpZiAoIWEpCisgICAgICAgICAgICAqZGVzdCA9IDA7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICpkZXN0ID0gbWFrZVByZW11bHRpcGxpZWRSR0JBKHIsIGcsIGIsIGEpOworICAg
IH0KKworICAgIHZvaWQgb3ZlclJHQkEoUkdCQTMyKiBkZXN0LCB1bnNpZ25lZCByLCB1bnNpZ25l
ZCBnLCB1bnNpZ25lZCBiLCB1bnNpZ25lZCBhKQorICAgIHsKKyAgICAgICAgaWYgKCFhKQorICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAKKyAgICAgICAgaWYgKGEgPj0gMjU1IHx8ICFhbHBo
YUNoYW5uZWwoKmRlc3QpKSB7CisgICAgICAgICAgICBzZXRSR0JBKGRlc3QsIHIsIGcsIGIsIGEp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAo
IW1fcHJlbXVsdGlwbHlBbHBoYSkKKyAgICAgICAgICAgICpkZXN0ID0gbWFrZVByZW11bHRpcGxp
ZWRSR0JBKHJlZENoYW5uZWwoKmRlc3QpLCBncmVlbkNoYW5uZWwoKmRlc3QpLCBibHVlQ2hhbm5l
bCgqZGVzdCksIGFscGhhQ2hhbm5lbCgqZGVzdCkpOworICAgICAgICAKKyAgICAgICAgUkdCQTMy
IHNyYyA9IG1ha2VSR0JBKHIsIGcsIGIsIGEpOworICAgICAgICAqZGVzdCA9IENvbG9yKCpkZXN0
KS5ibGVuZChzcmMpLnJnYigpOworICAgICAgICAKKyAgICAgICAgaWYgKCFtX3ByZW11bHRpcGx5
QWxwaGEpCisgICAgICAgICAgICAqZGVzdCA9IG1ha2VVblByZW11bHRpcGxpZWRSR0JBKHJlZENo
YW5uZWwoKmRlc3QpLCBncmVlbkNoYW5uZWwoKmRlc3QpLCBibHVlQ2hhbm5lbCgqZGVzdCksIGFs
cGhhQ2hhbm5lbCgqZGVzdCkpOworICAgIH0KKworICAgIGJvb2wgaW5Cb3VuZHMoY29uc3QgSW50
UG9pbnQmIHBvaW50KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIEludFJlY3QoSW50UG9p
bnQoKSwgbV9zaXplKS5jb250YWlucyhwb2ludCk7CisgICAgfQorCisgICAgYm9vbCBpbkJvdW5k
cyhjb25zdCBJbnRSZWN0JiByZWN0KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIEludFJl
Y3QoSW50UG9pbnQoKSwgbV9zaXplKS5jb250YWlucyhyZWN0KTsKKyAgICB9CisKK3ByaXZhdGU6
CisgICAgVmVjdG9yPFJHQkEzMj4gbV9iYWNraW5nU3RvcmU7CisgICAgUkdCQTMyKiBtX3BpeGVs
cyB7IG51bGxwdHIgfTsKKyAgICBJbnRTaXplIG1fc2l6ZTsKKyAgICBJbnRSZWN0IG1fcmVjdDsg
Ly8gVGhpcyB3aWxsIGFsd2F5cyBqdXN0IGJlIHRoZSBlbnRpcmUgYnVmZmVyIGV4Y2VwdCBmb3Ig
R0lGIGFuZCBQTkcgZnJhbWVzCisgICAgYm9vbCBtX3ByZW11bHRpcGx5QWxwaGEgeyB0cnVlIH07
Cit9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9D
b2xvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHAKaW5k
ZXggNGUyNWFhNmZkNzRkMWU0NmM1NDE2MTQ5OGJjMTcyYmY2MDA4NzVkMS4uNDM5ZjVhNjNjN2Jl
YmU1NjA0MmIyNGU3ZDcyZWNjZWNmMzZjNDBjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0NvbG9yLmNwcApAQCAtNDksNiArNDksNDAgQEAgY29uc3QgUkdCQTMyIENvbG9y
Ojp0cmFuc3BhcmVudDsKIHN0YXRpYyBjb25zdCBSR0JBMzIgbGlnaHRlbmVkQmxhY2sgPSAweEZG
NTQ1NDU0Owogc3RhdGljIGNvbnN0IFJHQkEzMiBkYXJrZW5lZFdoaXRlID0gMHhGRkFCQUJBQjsK
IAorc3RhdGljIGlubGluZSB1bnNpZ25lZCBtdWx0aXBseTI1NSh1bnNpZ25lZCBjKQoreworICAg
IC8vIGMgKiAyNTUKKyAgICAvLyAgID0gYyAqICgyNTYgLSAxKQorICAgIC8vICAgPSBjICogMjU2
IC0gYworICAgIHJldHVybiAoYyA8PCA4KSAtIGM7Cit9CisKK3N0YXRpYyBpbmxpbmUgdW5zaWdu
ZWQgZGl2aWRlMjU1KHVuc2lnbmVkIGMpCit7CisgICAgLy8gYyAvIDI1NQorICAgIC8vICAgPSBj
IC8gMjU2ICogKDEgKyAxIC8gMjU1KQorICAgIC8vICAgPSAoYyArIGMgLyAyNTUpIC8gMjU2Cisg
ICAgLy8gICA9IChjICsgKGMgKyBjIC8gMjU1KSAvIDI1NikgLyAyNTYKKyAgICAvLyAgID0gKGMg
KyBjIC8gMjU2ICsgYyAvICgyNTUgeCAyNTYpKSAvIDI1NgorICAgIC8vICB+PSAoYyArIGMgLyAy
NTYgKyAxKSAvIDI1NgorICAgIHJldHVybiAoYyArIChjID4+IDgpICsgMSkgPj4gODsKK30KKyAg
ICAKK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgZGl2aWRlQ2VpbCh1bnNpZ25lZCBjLCB1bnNpZ25l
ZCBkKQoreworICAgIHJldHVybiAoYyArIGQgLSAxKSAvIGQ7Cit9CisgICAgCitzdGF0aWMgaW5s
aW5lIHVuc2lnbmVkIHByZW11bHRpcGxpZWRDaGFubmVsKHVuc2lnbmVkIGMsIHVuc2lnbmVkIGEp
Cit7CisgICAgcmV0dXJuIGRpdmlkZTI1NShjICogYSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdW5z
aWduZWQgdW5wcmVtdWx0aXBsaWVkQ2hhbm5lbCh1bnNpZ25lZCBjLCB1bnNpZ25lZCBhKQorewor
ICAgIHJldHVybiBkaXZpZGVDZWlsKG11bHRpcGx5MjU1KGMpLCBhKTsKK30KKyAgICAKIFJHQkEz
MiBtYWtlUkdCKGludCByLCBpbnQgZywgaW50IGIpCiB7CiAgICAgcmV0dXJuIDB4RkYwMDAwMDAg
fCBzdGQ6Om1heCgwLCBzdGQ6Om1pbihyLCAyNTUpKSA8PCAxNiB8IHN0ZDo6bWF4KDAsIHN0ZDo6
bWluKGcsIDI1NSkpIDw8IDggfCBzdGQ6Om1heCgwLCBzdGQ6Om1pbihiLCAyNTUpKTsKQEAgLTU5
LDYgKzkzLDE2IEBAIFJHQkEzMiBtYWtlUkdCQShpbnQgciwgaW50IGcsIGludCBiLCBpbnQgYSkK
ICAgICByZXR1cm4gc3RkOjptYXgoMCwgc3RkOjptaW4oYSwgMjU1KSkgPDwgMjQgfCBzdGQ6Om1h
eCgwLCBzdGQ6Om1pbihyLCAyNTUpKSA8PCAxNiB8IHN0ZDo6bWF4KDAsIHN0ZDo6bWluKGcsIDI1
NSkpIDw8IDggfCBzdGQ6Om1heCgwLCBzdGQ6Om1pbihiLCAyNTUpKTsKIH0KIAorUkdCQTMyIG1h
a2VQcmVtdWx0aXBsaWVkUkdCQShpbnQgciwgaW50IGcsIGludCBiLCBpbnQgYSkKK3sKKyAgICBy
ZXR1cm4gbWFrZVJHQkEocHJlbXVsdGlwbGllZENoYW5uZWwociwgYSksIHByZW11bHRpcGxpZWRD
aGFubmVsKGcsIGEpLCBwcmVtdWx0aXBsaWVkQ2hhbm5lbChiLCBhKSwgYSk7Cit9CisgICAgCitS
R0JBMzIgbWFrZVVuUHJlbXVsdGlwbGllZFJHQkEoaW50IHIsIGludCBnLCBpbnQgYiwgaW50IGEp
Cit7CisgICAgcmV0dXJuIG1ha2VSR0JBKHVucHJlbXVsdGlwbGllZENoYW5uZWwociwgYSksIHVu
cHJlbXVsdGlwbGllZENoYW5uZWwoZywgYSksIHVucHJlbXVsdGlwbGllZENoYW5uZWwoYiwgYSks
IGEpOworfQorICAgIAogc3RhdGljIGludCBjb2xvckZsb2F0VG9SR0JBQnl0ZShmbG9hdCBmKQog
ewogICAgIC8vIFdlIHVzZSBscm91bmRmIGFuZCAyNTUgaW5zdGVhZCBvZiBuZXh0YWZ0ZXJmKDI1
NiwgMCkgdG8gbWF0Y2ggQ0cncyByb3VuZGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0NvbG9yLmgKaW5kZXggZGQyNjI3MGJiNDY2MGIzM2FlMDcwZThjOTQ0NTIwZDcyODQ1NGI4
YS4uYTU0NTMyYzc3NTVhN2M4NzY5MzYyNDBjYWU0ZWMzN2E0ZGEwZDA0MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCkBAIC01NCw2ICs1NCw4IEBAIHR5cGVkZWYg
dW5zaWduZWQgUkdCQTMyOyAvLyBEZXByZWNhdGVkOiBUeXBlIGZvciBhbiBSR0JBIHF1YWRydXBs
ZXQuIFVzZSBSR0JBIGNsCiAKIFdFQkNPUkVfRVhQT1JUIFJHQkEzMiBtYWtlUkdCKGludCByLCBp
bnQgZywgaW50IGIpOwogV0VCQ09SRV9FWFBPUlQgUkdCQTMyIG1ha2VSR0JBKGludCByLCBpbnQg
ZywgaW50IGIsIGludCBhKTsKK1dFQkNPUkVfRVhQT1JUIFJHQkEzMiBtYWtlUHJlbXVsdGlwbGll
ZFJHQkEoaW50IHIsIGludCBnLCBpbnQgYiwgaW50IGEpOworV0VCQ09SRV9FWFBPUlQgUkdCQTMy
IG1ha2VVblByZW11bHRpcGxpZWRSR0JBKGludCByLCBpbnQgZywgaW50IGIsIGludCBhKTsKIAog
V0VCQ09SRV9FWFBPUlQgUkdCQTMyIGNvbG9yV2l0aE92ZXJyaWRlQWxwaGEoUkdCQTMyIGNvbG9y
LCBmbG9hdCBvdmVycmlkZUFscGhhKTsKIFdFQkNPUkVfRVhQT1JUIFJHQkEzMiBjb2xvcldpdGhP
dmVycmlkZUFscGhhKFJHQkEzMiBjb2xvciwgT3B0aW9uYWw8ZmxvYXQ+IG92ZXJyaWRlQWxwaGEp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKaW5kZXggN2EyOTk5MmY3
NzE4OGUwMzgyOGQ4MGE2NWI4YmUyY2Q4ZGMyZGU3Ni4uOGU3YjUyYjFmNGYzMWM3NGEzY2IyYTEz
MjE1ZGE3N2EyYjE4YzA3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZS5oCkBAIC0xMzcsOCArMTM3LDExIEBAIHB1YmxpYzoKIAogICAgIGVudW0gVGlsZVJ1bGUgeyBT
dHJldGNoVGlsZSwgUm91bmRUaWxlLCBTcGFjZVRpbGUsIFJlcGVhdFRpbGUgfTsKIAorICAgIHZp
cnR1YWwgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2UoKSB7IHJldHVybiBudWxscHRyOyB9Cisg
ICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZU9mU2l6ZShjb25zdCBJbnRTaXpl
JikgeyByZXR1cm4gbnVsbHB0cjsgfQogICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgbmF0aXZl
SW1hZ2VGb3JDdXJyZW50RnJhbWUoKSB7IHJldHVybiBudWxscHRyOyB9CiAgICAgdmlydHVhbCBJ
bWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uRm9yQ3VycmVudEZyYW1lKCkgeyByZXR1cm4gSW1h
Z2VPcmllbnRhdGlvbigpOyB9CisgICAgdmlydHVhbCBWZWN0b3I8TmF0aXZlSW1hZ2VQdHI+IGZy
YW1lc05hdGl2ZUltYWdlcygpIHsgcmV0dXJuIHsgfTsgfQogCiAgICAgLy8gQWNjZXNzb3JzIGZv
ciBuYXRpdmUgaW1hZ2UgZm9ybWF0cy4KIApAQCAtMTUwLDEyICsxNTMsNiBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBDRkRhdGFSZWYgZ2V0VElGRlJlcHJlc2VudGF0aW9uKCkgeyByZXR1cm4gbnVs
bHB0cjsgfQogI2VuZGlmCiAKLSNpZiBVU0UoQ0cpCi0gICAgdmlydHVhbCBDR0ltYWdlUmVmIGdl
dENHSW1hZ2VSZWYoKSB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgdmlydHVhbCBDR0ltYWdlUmVm
IGdldEZpcnN0Q0dJbWFnZVJlZk9mU2l6ZShjb25zdCBJbnRTaXplJikgeyByZXR1cm4gbnVsbHB0
cjsgfQotICAgIHZpcnR1YWwgUmV0YWluUHRyPENGQXJyYXlSZWY+IGdldENHSW1hZ2VBcnJheSgp
IHsgcmV0dXJuIG51bGxwdHI7IH0KLSNlbmRpZgotCiAjaWYgUExBVEZPUk0oV0lOKQogICAgIHZp
cnR1YWwgYm9vbCBnZXRIQklUTUFQKEhCSVRNQVApIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmly
dHVhbCBib29sIGdldEhCSVRNQVBPZlNpemUoSEJJVE1BUCwgY29uc3QgSW50U2l6ZSopIHsgcmV0
dXJuIGZhbHNlOyB9CkBAIC0xNzksNiArMTc2LDggQEAgcHVibGljOgogI2lmICFBU1NFUlRfRElT
QUJMRUQKICAgICB2aXJ0dWFsIGJvb2wgbm90U29saWRDb2xvcigpIHsgcmV0dXJuIHRydWU7IH0K
ICNlbmRpZgorICAgIAorICAgIHZpcnR1YWwgdm9pZCBsYXlvdXRJZk5lZWRlZCgpIHsgfQogCiAg
ICAgdmlydHVhbCB2b2lkIGR1bXAoVGV4dFN0cmVhbSYpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lRGF0YS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lRGF0YS5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZjM3NGY4ZGQxNWFmY2I4NTgyNWEzOTg3YzAyMzY5ZTU2ZWQ1YjFkMAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVEYXRhLmNw
cApAQCAtMCwwICsxLDEzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW1hZ2VGcmFtZURhdGEu
aCIKKworI2luY2x1ZGUgIkNvbG9yLmgiCisKKyNpZiBVU0UoQ0cpCisjaW5jbHVkZSAiSW1hZ2VE
ZWNvZGVyQ0cuaCIKKyNlbHNlCisjaW5jbHVkZSAiSW1hZ2VEZWNvZGVyLmgiCisjZW5kaWYKKwor
I2luY2x1ZGUgIlBsYXRmb3JtSW1hZ2UuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitJbWFn
ZUZyYW1lRGF0YTo6SW1hZ2VGcmFtZURhdGEoKQoreworfQorCitJbWFnZUZyYW1lRGF0YTo6SW1h
Z2VGcmFtZURhdGEoTmF0aXZlSW1hZ2VQdHImJiBpbWFnZSkKKyAgICA6IG1fc3RhdHVzKERlY29k
aW5nU3RhdHVzOjpDb21wbGV0ZSkKKyAgICAsIG1faW1hZ2UoV1RGTW92ZShpbWFnZSkpCit7Cisg
ICAgbV9zaXplID0gUGxhdGZvcm1JbWFnZShtX2ltYWdlKS5zaXplKCk7CisgICAgbV9oYXNBbHBo
YSA9IFBsYXRmb3JtSW1hZ2UobV9pbWFnZSkuaGFzQWxwaGEoKTsKK30KKworSW1hZ2VGcmFtZURh
dGE6OkltYWdlRnJhbWVEYXRhKEltYWdlRGVjb2RlciYgZGVjb2Rlciwgc2l6ZV90IGluZGV4LCBT
dWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwsIENhY2hpbmcgZnJhbWVDYWNoaW5nKQor
eworICAgIEFTU0VSVChmcmFtZUNhY2hpbmcgPT0gQ2FjaGluZzo6TWV0YWRhdGEgfHwgZnJhbWVD
YWNoaW5nID09IENhY2hpbmc6Ok1ldGFkYXRhQW5kSW1hZ2UpOworICAgIAorICAgIGlmIChmcmFt
ZUNhY2hpbmcgPT0gQ2FjaGluZzo6SW1hZ2UgfHwgZnJhbWVDYWNoaW5nID09IENhY2hpbmc6Ok1l
dGFkYXRhQW5kSW1hZ2UpIHsKKyAgICAgICAgbV9pbWFnZSA9IGRlY29kZXIuY3JlYXRlRnJhbWVJ
bWFnZUF0SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwpOworICAgICAgICBtX3N1YnNhbXBs
aW5nTGV2ZWwgPSBzdWJzYW1wbGluZ0xldmVsOworICAgIH0KKyAgICAKKyAgICBpZiAoZnJhbWVD
YWNoaW5nID09IENhY2hpbmc6Ok1ldGFkYXRhIHx8IGZyYW1lQ2FjaGluZyA9PSBDYWNoaW5nOjpN
ZXRhZGF0YUFuZEltYWdlKSB7CisgICAgICAgIG1fb3JpZW50YXRpb24gPSBkZWNvZGVyLm9yaWVu
dGF0aW9uQXRJbmRleChpbmRleCk7CisgICAgICAgIG1fc3RhdHVzID0gZGVjb2Rlci5mcmFtZUlz
Q29tcGxldGVBdEluZGV4KGluZGV4KSA/IERlY29kaW5nU3RhdHVzOjpDb21wbGV0ZSA6IERlY29k
aW5nU3RhdHVzOjpQYXJ0aWFsOworICAgICAgICAKKyAgICAgICAgaWYgKGRlY29kZXIucmVwZXRp
dGlvbkNvdW50KCkgIT0gY0FuaW1hdGlvbk5vbmUpCisgICAgICAgICAgICBtX2R1cmF0aW9uID0g
ZGVjb2Rlci5mcmFtZUR1cmF0aW9uQXRJbmRleChpbmRleCk7CisgICAgICAgIAorICAgICAgICBt
X2hhc0FscGhhID0gZGVjb2Rlci5mcmFtZUhhc0FscGhhQXRJbmRleChpbmRleCk7CisgICAgICAg
IG1fc2l6ZSA9IGRlY29kZXIuZnJhbWVTaXplQXRJbmRleChpbmRleCwgc3Vic2FtcGxpbmdMZXZl
bCk7CisgICAgfQorfQorICAgIAorSW1hZ2VGcmFtZURhdGE6On5JbWFnZUZyYW1lRGF0YSgpCit7
CisgICAgY2xlYXJTdWJJbWFnZXMoKTsKK30KKyAgICAKK0ltYWdlRnJhbWVEYXRhJiBJbWFnZUZy
YW1lRGF0YTo6b3BlcmF0b3I9KGNvbnN0IEltYWdlRnJhbWVEYXRhJiBvdGhlcikKK3sKKyAgICBp
ZiAodGhpcyA9PSAmb3RoZXIpCisgICAgICAgIHJldHVybiAqdGhpczsKKworICAgIG1fc3RhdHVz
ID0gb3RoZXIubV9zdGF0dXM7CisgICAgbV9zaXplID0gb3RoZXIubV9zaXplOworICAgIG1faW1h
Z2UgPSBvdGhlci5tX2ltYWdlOworICAgIAorICAgIG1fcGl4ZWxzID0gb3RoZXIucGl4ZWxzKCkg
PyBCaXRtYXBQaXhlbHM6OmNyZWF0ZSgqb3RoZXIucGl4ZWxzKCkpIDogbnVsbHB0cjsKKyAgICAK
KyAgICBtX29yaWVudGF0aW9uID0gb3RoZXIubV9vcmllbnRhdGlvbjsKKyAgICBtX3N1YnNhbXBs
aW5nTGV2ZWwgPSBvdGhlci5tX3N1YnNhbXBsaW5nTGV2ZWw7CisgICAgbV9kdXJhdGlvbiA9IG90
aGVyLm1fZHVyYXRpb247CisgICAgbV9oYXNBbHBoYSA9IG90aGVyLm1faGFzQWxwaGE7CisgICAg
cmV0dXJuICp0aGlzOworfQorCit2b2lkIEltYWdlRnJhbWVEYXRhOjpjbGVhclN1YkltYWdlcygp
Cit7CisgICAgaWYgKCFtX2ltYWdlKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgUGxhdGZv
cm1JbWFnZShtX2ltYWdlKS5jbGVhclN1YkltYWdlcygpOworfQorCit1bnNpZ25lZCBJbWFnZUZy
YW1lRGF0YTo6Y2xlYXIoQ2FjaGluZyBmcmFtZUNhY2hpbmcpCit7CisgICAgQVNTRVJUKGZyYW1l
Q2FjaGluZyA9PSBDYWNoaW5nOjpFbXB0eSB8fCBmcmFtZUNhY2hpbmcgPT0gQ2FjaGluZzo6TWV0
YWRhdGEpOworICAgIAorICAgIHVuc2lnbmVkIGZyYW1lQnl0ZXMgPSB0aGlzLT5mcmFtZUJ5dGVz
KCk7CisgICAgCisgICAgY2xlYXJTdWJJbWFnZXMoKTsKKyAgICAKKyAgICBpZiAoZnJhbWVDYWNo
aW5nID09IENhY2hpbmc6OkVtcHR5KQorICAgICAgICAqdGhpcyA9IEltYWdlRnJhbWVEYXRhKCk7
CisgICAgZWxzZQorICAgICAgICBtX2ltYWdlID0gbnVsbHB0cjsKKyAgICAKKyAgICByZXR1cm4g
ZnJhbWVCeXRlczsKK30KKworQ29sb3IgSW1hZ2VGcmFtZURhdGE6OnNpbmdsZVBpeGVsU29saWRD
b2xvcigpIGNvbnN0Cit7CisgICAgaWYgKCFoYXNJbWFnZSgpIHx8IG1fc2l6ZSAhPSBJbnRTaXpl
KDEsIDEpKQorICAgICAgICByZXR1cm4gQ29sb3IoKTsKKyAgICAKKyAgICByZXR1cm4gUGxhdGZv
cm1JbWFnZShtX2ltYWdlKS5zaW5nbGVQaXhlbFNvbGlkQ29sb3IoKTsKK30KKworYm9vbCBJbWFn
ZUZyYW1lRGF0YTo6aXNBbG1vc3RTb2xpZENvbG9yKCkgY29uc3QKK3sKKyAgICBpZiAoIWhhc0lt
YWdlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICByZXR1cm4gUGxhdGZvcm1J
bWFnZShtX2ltYWdlKS5pc0FsbW9zdFNvbGlkQ29sb3IoKTsKK30KKyAgICAKK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVEYXRhLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lRGF0YS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmY2ZmI3NThlZjNhNDI1OGNiZGIzYWUyZjQ2ZTg0NDBmNzMwZWY0N2MKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lRGF0YS5o
CkBAIC0wLDAgKzEsMTAxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQml0bWFwUGl4ZWxzLmgiCisjaW5j
bHVkZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgorI2luY2x1ZGUgIkludFNpemUuaCIKKyNpbmNsdWRl
ICJOYXRpdmVJbWFnZVB0ci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENvbG9y
OworY2xhc3MgSW1hZ2VEZWNvZGVyOworCisvLyBTdWJzYW1wbGluZ0xldmVsLiAwIGlzIG5vIHN1
YnNhbXBsaW5nLCAxIGlzIGhhbGYgZGltZW5zaW9ucyBvbiBlYWNoIGF4aXMgZXRjLgordXNpbmcg
U3Vic2FtcGxpbmdMZXZlbCA9IHVpbnQ4X3Q7CisKK2VudW0gOiBTdWJzYW1wbGluZ0xldmVsIHsK
KyAgICBNaW5TdWJzYW1wbGluZ0xldmVsID0gMCwKKyAgICBNYXhTdWJzYW1wbGluZ0xldmVsID0g
MywKKyAgICBEZWZhdWx0U3Vic2FtcGxpbmdMZXZlbCA9IE1pblN1YnNhbXBsaW5nTGV2ZWwKK307
CisKK2NsYXNzIEltYWdlRnJhbWVEYXRhIHsKKyAgICBmcmllbmQgY2xhc3MgSW1hZ2VEZWNvZGVy
OworcHVibGljOgorICAgIGVudW0gY2xhc3MgQ2FjaGluZyB7IEVtcHR5LCBNZXRhZGF0YSwgSW1h
Z2UsIE1ldGFkYXRhQW5kSW1hZ2UgfTsKKyAgICBlbnVtIGNsYXNzIERlY29kaW5nU3RhdHVzIHsg
RW1wdHksIFBhcnRpYWwsIENvbXBsZXRlIH07CisgICAgCisgICAgSW1hZ2VGcmFtZURhdGEoKTsK
KyAgICBJbWFnZUZyYW1lRGF0YShOYXRpdmVJbWFnZVB0ciYmKTsKKyAgICBJbWFnZUZyYW1lRGF0
YShJbWFnZURlY29kZXImLCBzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgPSBEZWZhdWx0
U3Vic2FtcGxpbmdMZXZlbCwgQ2FjaGluZyA9IENhY2hpbmc6Ok1ldGFkYXRhQW5kSW1hZ2UpOwor
ICAgIEltYWdlRnJhbWVEYXRhKGNvbnN0IEltYWdlRnJhbWVEYXRhJiBvdGhlcikgeyBvcGVyYXRv
cj0ob3RoZXIpOyB9CisKKyAgICB+SW1hZ2VGcmFtZURhdGEoKTsKKworICAgIEltYWdlRnJhbWVE
YXRhJiBvcGVyYXRvcj0oY29uc3QgSW1hZ2VGcmFtZURhdGEmIG90aGVyKTsKKyAgICAKKyAgICB1
bnNpZ25lZCBjbGVhcihDYWNoaW5nKTsKKyAgICBDb2xvciBzaW5nbGVQaXhlbFNvbGlkQ29sb3Io
KSBjb25zdDsKKyAgICBib29sIGlzQWxtb3N0U29saWRDb2xvcigpIGNvbnN0OworICAgIAorICAg
IERlY29kaW5nU3RhdHVzIHN0YXR1cygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdHVzOyB9CisgICAg
Ym9vbCBpc0NvbXBsZXRlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0dXMgPT0gRGVjb2RpbmdTdGF0
dXM6OkNvbXBsZXRlOyB9CisgICAgSW50U2l6ZSBzaXplKCkgY29uc3QgeyByZXR1cm4gaGFzUGl4
ZWxzKCkgPyBwaXhlbHMoKS0+c2l6ZSgpIDogbV9zaXplOyB9CisgICAgdW5zaWduZWQgZnJhbWVC
eXRlcygpIGNvbnN0IHsgcmV0dXJuIGhhc0ltYWdlKCkgPyBtX3NpemUuYXJlYSgpICogc2l6ZW9m
KFJHQkEzMikgOiAwOyB9CisgICAgTmF0aXZlSW1hZ2VQdHIgaW1hZ2UoKSBjb25zdCB7IHJldHVy
biBtX2ltYWdlOyB9CisgICAgQml0bWFwUGl4ZWxzKiBwaXhlbHMoKSBjb25zdCB7IHJldHVybiBt
X3BpeGVscyA/IG1fcGl4ZWxzLmdldCgpIDogbnVsbHB0cjsgfQorICAgIAorICAgIEltYWdlT3Jp
ZW50YXRpb24gb3JpZW50YXRpb24oKSBjb25zdCB7IHJldHVybiBtX29yaWVudGF0aW9uOyB9Cisg
ICAgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsKCkgY29uc3QgeyByZXR1cm4gbV9z
dWJzYW1wbGluZ0xldmVsOyB9CisgICAgZmxvYXQgZHVyYXRpb24oKSBjb25zdCB7IHJldHVybiBt
X2R1cmF0aW9uOyB9CisgICAgCisgICAgYm9vbCBoYXNBbHBoYSgpIGNvbnN0IHsgcmV0dXJuIG1f
aGFzQWxwaGE7IH0KKyAgICBib29sIGhhc0ltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZTsg
fQorICAgIGJvb2wgaGFzTWV0YWRhdGEoKSBjb25zdCB7IHJldHVybiAhbV9zaXplLmlzRW1wdHko
KTsgfQorICAgIGJvb2wgaGFzUGl4ZWxzKCkgY29uc3QgeyByZXR1cm4gcGl4ZWxzKCk7IH0KKyAg
ICAKK3ByaXZhdGU6CisgICAgdm9pZCBjbGVhclN1YkltYWdlcygpOworCisgICAgdm9pZCBzZXRT
dGF0dXMoRGVjb2RpbmdTdGF0dXMgc3RhdHVzKSB7IG1fc3RhdHVzID0gc3RhdHVzOyB9CisgICAg
dm9pZCBzZXRPcmllbnRhdGlvbihJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKSB7IG1fb3Jp
ZW50YXRpb24gPSBvcmllbnRhdGlvbjsgfTsKKyAgICB2b2lkIHNldER1cmF0aW9uKHVuc2lnbmVk
IGR1cmF0aW9uKSB7IG1fZHVyYXRpb24gPSBkdXJhdGlvbjsgfQorICAgIHZvaWQgc2V0SGFzQWxw
aGEoYm9vbCBoYXNBbHBoYSkgeyBtX2hhc0FscGhhID0gaGFzQWxwaGE7IH0KKyAgICAKKyAgICBE
ZWNvZGluZ1N0YXR1cyBtX3N0YXR1cyB7IERlY29kaW5nU3RhdHVzOjpFbXB0eSB9OworICAgIElu
dFNpemUgbV9zaXplOworICAgIE5hdGl2ZUltYWdlUHRyIG1faW1hZ2U7CisgICAgc3RkOjp1bmlx
dWVfcHRyPEJpdG1hcFBpeGVscz4gbV9waXhlbHM7CisgICAgCisgICAgSW1hZ2VPcmllbnRhdGlv
biBtX29yaWVudGF0aW9uIHsgRGVmYXVsdEltYWdlT3JpZW50YXRpb24gfTsKKyAgICBTdWJzYW1w
bGluZ0xldmVsIG1fc3Vic2FtcGxpbmdMZXZlbCB7IDAgfTsKKyAgICBmbG9hdCBtX2R1cmF0aW9u
IHsgMCB9OworICAgIGJvb2wgbV9oYXNBbHBoYSB7IHRydWUgfTsKK307CisgICAgCit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKaW5kZXgg
ZGRkOGE1NWJhMDkwNmM1ODY2YTE5MmNmOGU0MTRlYTcwN2I3MjhhYy4uODJmNmUyZDZlNDU0MzNk
YTFhN2Q1NmIzNzBkZmE2MWE0YzQxOTEzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcApAQCAtMjI0LDYgKzIyNCwxMSBAQCBOYXRpdmVJ
bWFnZVB0ciBJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4
LCBTdWJzYW1wbGluZ0xldgogICAgIHJldHVybiBpbml0aWFsaXplZCgpID8gbV9kZWNvZGVyLT5j
cmVhdGVGcmFtZUltYWdlQXRJbmRleChpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCkgOiBudWxscHRy
OwogfQogCitJbWFnZUZyYW1lRGF0YSBJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVEYXRhQXRJbmRl
eChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgSW1hZ2VG
cmFtZURhdGE6OkNhY2hpbmcgY2FjaGluZykKK3sKKyAgICByZXR1cm4gaW5pdGlhbGl6ZWQoKSA/
IEltYWdlRnJhbWVEYXRhKCptX2RlY29kZXIsIGluZGV4LCBzdWJzYW1wbGluZ0xldmVsLCBjYWNo
aW5nKSA6IEltYWdlRnJhbWVEYXRhKCk7Cit9CisgICAgCiB2b2lkIEltYWdlU291cmNlOjpkdW1w
KFRleHRTdHJlYW0mIHRzKSBjb25zdAogewogICAgIGlmIChtX2FsbG93U3Vic2FtcGxpbmcpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaAppbmRleCA2
MDM1NzM5YjdlOGIwOTZkYzhkZmU5YzUzMGE0MmM2ZjI5MWJkYTAwLi5hNDBjN2NlOTMwN2NkYWRm
MDc5YWI3MDFhODI3OTliNjkwNTI5ZDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlU291cmNlLmgKQEAgLTI3LDYgKzI3LDcgQEAKICNpZm5kZWYgSW1hZ2VT
b3VyY2VfaAogI2RlZmluZSBJbWFnZVNvdXJjZV9oCiAKKyNpbmNsdWRlICJJbWFnZUZyYW1lRGF0
YS5oIgogI2luY2x1ZGUgIkltYWdlT3JpZW50YXRpb24uaCIKICNpbmNsdWRlICJJbnRQb2ludC5o
IgogI2luY2x1ZGUgIk5hdGl2ZUltYWdlUHRyLmgiCkBAIC02Myw5ICs2NCw2IEBAIGNvbnN0IGlu
dCBjQW5pbWF0aW9uTG9vcE9uY2UgPSAwOwogY29uc3QgaW50IGNBbmltYXRpb25Mb29wSW5maW5p
dGUgPSAtMTsKIGNvbnN0IGludCBjQW5pbWF0aW9uTm9uZSA9IC0yOwogCi0vLyBTdWJzYW1wbGlu
Z0xldmVsLiAwIGlzIG5vIHN1YnNhbXBsaW5nLCAxIGlzIGhhbGYgZGltZW5zaW9ucyBvbiBlYWNo
IGF4aXMgZXRjLgotdHlwZWRlZiBzaG9ydCBTdWJzYW1wbGluZ0xldmVsOwotCiBjbGFzcyBJbWFn
ZVNvdXJjZSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW1hZ2VTb3VyY2UpOwogICAgIGZy
aWVuZCBjbGFzcyBCaXRtYXBJbWFnZTsKQEAgLTEzMiwxOCArMTMwLDE5IEBAIHB1YmxpYzoKICAg
ICBib29sIGFsbG93U3Vic2FtcGxpbmdPZkZyYW1lQXRJbmRleChzaXplX3QpIGNvbnN0OwogICAg
IAogICAgIC8vIFNpemUgb2Ygb3B0aW9uYWxseSBzdWJzYW1wbGVkIGZyYW1lLgotICAgIEludFNp
emUgZnJhbWVTaXplQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSAwLCBSZXNwZWN0
SW1hZ2VPcmllbnRhdGlvbkVudW0gPSBEb05vdFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKSBjb25z
dDsKKyAgICBJbnRTaXplIGZyYW1lU2l6ZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVs
ID0gRGVmYXVsdFN1YnNhbXBsaW5nTGV2ZWwsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSA9
IERvTm90UmVzcGVjdEltYWdlT3JpZW50YXRpb24pIGNvbnN0OwogICAgIAogICAgIC8vIFJldHVy
biB0aGUgbnVtYmVyIG9mIGJ5dGVzIGluIHRoZSBkZWNvZGVkIGZyYW1lLiBJZiB0aGUgZnJhbWUg
aXMgbm90IHlldAogICAgIC8vIGRlY29kZWQgdGhlbiByZXR1cm4gMC4KLSAgICB1bnNpZ25lZCBm
cmFtZUJ5dGVzQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSAwKSBjb25zdDsKKyAg
ICB1bnNpZ25lZCBmcmFtZUJ5dGVzQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBE
ZWZhdWx0U3Vic2FtcGxpbmdMZXZlbCkgY29uc3Q7CiAgICAgCiAgICAgZmxvYXQgZnJhbWVEdXJh
dGlvbkF0SW5kZXgoc2l6ZV90KTsKICAgICBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uQXRJ
bmRleChzaXplX3QpIGNvbnN0OyAvLyBFWElGIGltYWdlIG9yaWVudGF0aW9uCiAgICAgCiAgICAg
Ly8gQ2FsbGVycyBzaG91bGQgbm90IGNhbGwgdGhpcyBhZnRlciBjYWxsaW5nIGNsZWFyKCkgd2l0
aCBhIGhpZ2hlciBpbmRleDsKICAgICAvLyBzZWUgY29tbWVudHMgb24gY2xlYXIoKSBhYm92ZS4K
LSAgICBOYXRpdmVJbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNh
bXBsaW5nTGV2ZWwgPSAwKTsKKyAgICBOYXRpdmVJbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJ
bmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBEZWZhdWx0U3Vic2FtcGxpbmdMZXZlbCk7
CisgICAgSW1hZ2VGcmFtZURhdGEgY3JlYXRlRnJhbWVEYXRhQXRJbmRleChzaXplX3QsIFN1YnNh
bXBsaW5nTGV2ZWwgPSBEZWZhdWx0U3Vic2FtcGxpbmdMZXZlbCwgSW1hZ2VGcmFtZURhdGE6OkNh
Y2hpbmcgPSBJbWFnZUZyYW1lRGF0YTo6Q2FjaGluZzo6TWV0YWRhdGFBbmRJbWFnZSk7CiAgICAg
CiBwcml2YXRlOgogICAgIHZvaWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVfdCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUltYWdlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUltYWdlLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYWI3YWVhNDg5ZjNlYjJhODI4NzcxYzIxMDNlOGQ0ZDBiZTE3YmU1ZAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2Uu
aApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiR3JhcGhpY3NUeXBlcy5oIgorI2lu
Y2x1ZGUgIkltYWdlT3JpZW50YXRpb24uaCIKKyNpbmNsdWRlICJOYXRpdmVJbWFnZVB0ci5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENvbG9yOworY2xhc3MgRmxvYXRSZWN0Owor
Y2xhc3MgSW50U2l6ZTsKK2NsYXNzIEdyYXBoaWNzQ29udGV4dDsKKworY2xhc3MgUGxhdGZvcm1J
bWFnZSB7CitwdWJsaWM6CisgICAgUGxhdGZvcm1JbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYg
aW1hZ2UpCisgICAgICAgIDogbV9pbWFnZShpbWFnZSkKKyAgICB7CisgICAgfQorCisgICAgYm9v
bCBpc05pbCgpIGNvbnN0IHsgcmV0dXJuICFtX2ltYWdlOyB9CisgICAgdm9pZCBjbGVhclN1Yklt
YWdlcygpOworCisgICAgSW50U2l6ZSBzaXplKCkgY29uc3Q7CisgICAgYm9vbCBoYXNBbHBoYSgp
IGNvbnN0OworICAgIENvbG9yIHNpbmdsZVBpeGVsU29saWRDb2xvcigpIGNvbnN0OworICAgIGJv
b2wgaXNBbG1vc3RTb2xpZENvbG9yKCkgY29uc3Q7CisgICAgdm9pZCBkcmF3KEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwg
Y29uc3QgSW1hZ2VPcmllbnRhdGlvbiYpIGNvbnN0OworCisgICAgc3RhdGljIGZsb2F0IHN1YnNh
bXBsaW5nU2NhbGUoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0KTsKKworcHJpdmF0ZToKKyNpZiBVU0UoQ0cpCisgICAg
Q0dJbWFnZVJlZiBjZ0ltYWdlUmVmKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZSA/IG1faW1hZ2Uu
Z2V0KCkgOiBudWxscHRyOyB9CisjZW5kaWYKKyAgICBOYXRpdmVJbWFnZVB0ciBtX2ltYWdlOwor
fTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCmluZGV4IGY0YzE0NTdiYmIyNTU3NTRm
MDBhMDYyNWVlODNlMDRkYTdjNmVmY2YuLmQ1MjBmNWQ1ODVhYzYwZGJhZWUyNTVlMWI4M2MyNGRj
Njg3MjEwYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KQEAgLTIxMiw3ICsyMTIsNyBA
QCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dXBkYXRlRGlzcGxh
eU1vZGUoKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICB9
CiAKLSAgICAgICAgICAgICAgICBtX3BhdXNlZEltYWdlID0gaW1hZ2UtPmdldENHSW1hZ2VSZWYo
KTsKKyAgICAgICAgICAgICAgICBtX3BhdXNlZEltYWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9y
Q3VycmVudEZyYW1lKCk7CiAgICAgICAgICAgICAgICAgaWYgKCFtX3BhdXNlZEltYWdlKSB7CiAg
ICAgICAgICAgICAgICAgICAgIG1fZGlzcGxheU1vZGUgPSBQYWludEl0QmxhY2s7CiAgICAgICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMTc3MjJiZWM1M2FiOGEwOGE4ZGE4NTI4YjllMGQ3YzRkMGNkNDEz
NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcAorKysg
L2Rldi9udWxsCkBAIC0xLDE0MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAy
MDA1LCAyMDA2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDcgQWxwIFRva2VyIDxhbHBAYXRva2VyLmNvbT4KLSAqIENvcHlyaWdodCAoQykgMjAw
OSBEaXJrIFNjaHVsemUgPGtyaXRAd2Via2l0Lm9yZz4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkJpdG1h
cEltYWdlLmgiCi0KLSNpZiBVU0UoQ0FJUk8pCi0KLSNpbmNsdWRlICJDYWlyb1V0aWxpdGllcy5o
IgotI2luY2x1ZGUgIkltYWdlT2JzZXJ2ZXIuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybUNvbnRleHRD
YWlyby5oIgotI2luY2x1ZGUgIlRpbWVyLmgiCi0jaW5jbHVkZSA8Y2Fpcm8uaD4KLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgTmF0aXZlSW1hZ2UgewotCi1JbnRTaXplIHNpemUo
Y29uc3QgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4mIGltYWdlKQotewotICAgIHJldHVybiBjYWly
b1N1cmZhY2VTaXplKGltYWdlLmdldCgpKTsKLX0KLQotYm9vbCBoYXNBbHBoYShjb25zdCBSZWZQ
dHI8Y2Fpcm9fc3VyZmFjZV90PiYgaW1hZ2UpCi17Ci0gICAgcmV0dXJuIGNhaXJvX3N1cmZhY2Vf
Z2V0X2NvbnRlbnQoaW1hZ2UuZ2V0KCkpICE9IENBSVJPX0NPTlRFTlRfQ09MT1I7Ci19Ci0KLUNv
bG9yIHNpbmdsZVBpeGVsU29saWRDb2xvcihjb25zdCBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiYg
aW1hZ2UpCi17Ci0gICAgQVNTRVJUKGltYWdlKTsKLSAgICAKLSAgICBpZiAoTmF0aXZlSW1hZ2U6
OnNpemUoaW1hZ2UpICE9IEludFNpemUoMSwgMSkpCi0gICAgICAgIHJldHVybiBDb2xvcigpOwot
Ci0gICAgaWYgKGNhaXJvX3N1cmZhY2VfZ2V0X3R5cGUoaW1hZ2UuZ2V0KCkpICE9IENBSVJPX1NV
UkZBQ0VfVFlQRV9JTUFHRSkKLSAgICAgICAgcmV0dXJuIENvbG9yKCk7Ci0KLSAgICBSR0JBMzIq
IHBpeGVsID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8UkdCQTMyKj4oY2Fpcm9faW1hZ2Vfc3VyZmFj
ZV9nZXRfZGF0YShpbWFnZS5nZXQoKSkpOwotICAgIHJldHVybiBjb2xvckZyb21QcmVtdWx0aXBs
aWVkQVJHQigqcGl4ZWwpOwotfQotCi19Ci0KLXZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmMsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLAotICAgIEJsZW5kTW9kZSBibGVuZE1vZGUsIElt
YWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiBkZXNjcmlwdGlvbikKLXsKLSAgICBpZiAoIWRzdC53
aWR0aCgpIHx8ICFkc3QuaGVpZ2h0KCkgfHwgIXNyYy53aWR0aCgpIHx8ICFzcmMuaGVpZ2h0KCkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIHN0YXJ0QW5pbWF0aW9uKCk7Ci0KLSAgICBhdXRvIHN1
cmZhY2UgPSBmcmFtZUltYWdlQXRJbmRleChtX2N1cnJlbnRGcmFtZSk7Ci0gICAgaWYgKCFzdXJm
YWNlKSAvLyBJZiBpdCdzIHRvbyBlYXJseSB3ZSB3b24ndCBoYXZlIGFuIGltYWdlIHlldC4KLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgQ29sb3IgY29sb3IgPSBzaW5nbGVQaXhlbFNvbGlkQ29sb3Io
KTsKLSAgICBpZiAoY29sb3IuaXNWYWxpZCgpKSB7Ci0gICAgICAgIGZpbGxXaXRoU29saWRDb2xv
cihjb250ZXh0LCBkc3QsIGNvbG9yLCBvcCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBjb250ZXh0LnNhdmUoKTsKLQotICAgIC8vIFNldCB0aGUgY29tcG9zaXRpbmcgb3BlcmF0aW9u
LgotICAgIGlmIChvcCA9PSBDb21wb3NpdGVTb3VyY2VPdmVyICYmIGJsZW5kTW9kZSA9PSBCbGVu
ZE1vZGVOb3JtYWwgJiYgIWZyYW1lSGFzQWxwaGFBdEluZGV4KG1fY3VycmVudEZyYW1lKSkKLSAg
ICAgICAgY29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlQ29weSk7Ci0gICAg
ZWxzZQotICAgICAgICBjb250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihvcCwgYmxlbmRNb2Rl
KTsKLQotI2lmIEVOQUJMRShJTUFHRV9ERUNPREVSX0RPV05fU0FNUExJTkcpCi0gICAgSW50U2l6
ZSBzY2FsZWRTaXplID0gY2Fpcm9TdXJmYWNlU2l6ZShzdXJmYWNlLmdldCgpKTsKLSAgICBGbG9h
dFJlY3QgYWRqdXN0ZWRTcmNSZWN0ID0gYWRqdXN0U291cmNlUmVjdEZvckRvd25TYW1wbGluZyhz
cmMsIHNjYWxlZFNpemUpOwotI2Vsc2UKLSAgICBGbG9hdFJlY3QgYWRqdXN0ZWRTcmNSZWN0KHNy
Yyk7Ci0jZW5kaWYKLQotICAgIEltYWdlT3JpZW50YXRpb24gZnJhbWVPcmllbnRhdGlvbihkZXNj
cmlwdGlvbi5pbWFnZU9yaWVudGF0aW9uKCkpOwotICAgIGlmIChkZXNjcmlwdGlvbi5yZXNwZWN0
SW1hZ2VPcmllbnRhdGlvbigpID09IFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKQotICAgICAgICBm
cmFtZU9yaWVudGF0aW9uID0gZnJhbWVPcmllbnRhdGlvbkF0SW5kZXgobV9jdXJyZW50RnJhbWUp
OwotCi0gICAgRmxvYXRSZWN0IGRzdFJlY3QgPSBkc3Q7Ci0KLSAgICBpZiAoZnJhbWVPcmllbnRh
dGlvbiAhPSBEZWZhdWx0SW1hZ2VPcmllbnRhdGlvbikgewotICAgICAgICAvLyBJbWFnZU9yaWVu
dGF0aW9uIGV4cGVjdHMgdGhlIG9yaWdpbiB0byBiZSBhdCAoMCwgMCkuCi0gICAgICAgIGNvbnRl
eHQudHJhbnNsYXRlKGRzdFJlY3QueCgpLCBkc3RSZWN0LnkoKSk7Ci0gICAgICAgIGRzdFJlY3Qu
c2V0TG9jYXRpb24oRmxvYXRQb2ludCgpKTsKLSAgICAgICAgY29udGV4dC5jb25jYXRDVE0oZnJh
bWVPcmllbnRhdGlvbi50cmFuc2Zvcm1Gcm9tRGVmYXVsdChkc3RSZWN0LnNpemUoKSkpOwotICAg
ICAgICBpZiAoZnJhbWVPcmllbnRhdGlvbi51c2VzV2lkdGhBc0hlaWdodCgpKSB7Ci0gICAgICAg
ICAgICAvLyBUaGUgZGVzdGluYXRpb24gcmVjdGFuZ2xlIHdpbGwgaGF2ZSBpdCdzIHdpZHRoIGFu
ZCBoZWlnaHQgYWxyZWFkeSByZXZlcnNlZCBmb3IgdGhlIG9yaWVudGF0aW9uIG9mCi0gICAgICAg
ICAgICAvLyB0aGUgaW1hZ2UsIGFzIGl0IHdhcyBuZWVkZWQgZm9yIHBhZ2UgbGF5b3V0LCBzbyB3
ZSBuZWVkIHRvIHJldmVyc2UgaXQgYmFjayBoZXJlLgotICAgICAgICAgICAgZHN0UmVjdCA9IEZs
b2F0UmVjdChkc3RSZWN0LngoKSwgZHN0UmVjdC55KCksIGRzdFJlY3QuaGVpZ2h0KCksIGRzdFJl
Y3Qud2lkdGgoKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBjb250ZXh0LnBsYXRmb3JtQ29u
dGV4dCgpLT5kcmF3U3VyZmFjZVRvQ29udGV4dChzdXJmYWNlLmdldCgpLCBkc3RSZWN0LCBhZGp1
c3RlZFNyY1JlY3QsIGNvbnRleHQpOwotCi0gICAgY29udGV4dC5yZXN0b3JlKCk7Ci0KLSAgICBp
ZiAoaW1hZ2VPYnNlcnZlcigpKQotICAgICAgICBpbWFnZU9ic2VydmVyKCktPmRpZERyYXcodGhp
cyk7Ci19Ci0KLWJvb2wgRnJhbWVEYXRhOjpjbGVhcihib29sIGNsZWFyTWV0YWRhdGEpCi17Ci0g
ICAgaWYgKGNsZWFyTWV0YWRhdGEpCi0gICAgICAgIG1faGF2ZU1ldGFkYXRhID0gZmFsc2U7Ci0K
LSAgICBpZiAobV9pbWFnZSkgewotICAgICAgICBtX2ltYWdlID0gbnVsbHB0cjsKLSAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gVVNFKENBSVJPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1JbWFnZUNhaXJvLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtSW1hZ2VDYWlyby5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNzBhZGFlYzI3MGUzMWIwNTRhZmM1ZjY2ZDQ4Mjg4YWViZjA2MWUzYQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L1BsYXRmb3JtSW1hZ2VDYWlyby5jcHAKQEAgLTAsMCArMSwxMTEgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIlBsYXRmb3JtSW1hZ2UuaCIKKworI2lmIFVTRShDQUlSTykKKworI2luY2x1ZGUgIkNh
aXJvVXRpbGl0aWVzLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0Q2Fpcm8uaCIKKyNpbmNs
dWRlIDxjYWlyby5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgUGxhdGZvcm1JbWFn
ZTo6Y2xlYXJTdWJJbWFnZXMoKQoreworfQorCitJbnRTaXplIFBsYXRmb3JtSW1hZ2U6OnNpemUo
KSBjb25zdAoreworICAgIHJldHVybiBpc05pbCgpID8gSW50U2l6ZSgpIDogY2Fpcm9TdXJmYWNl
U2l6ZShtX2ltYWdlLmdldCgpKTsKK30KKworYm9vbCBQbGF0Zm9ybUltYWdlOjpoYXNBbHBoYSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIGlzTmlsKCkgfHwgY2Fpcm9fc3VyZmFjZV9nZXRfY29udGVu
dChtX2ltYWdlLmdldCgpKSAhPSBDQUlST19DT05URU5UX0NPTE9SOworfQorCitDb2xvciBQbGF0
Zm9ybUltYWdlOjpzaW5nbGVQaXhlbFNvbGlkQ29sb3IoKSBjb25zdAoreworICAgIGlmIChpc05p
bCgpIHx8IHNpemUoKSAhPSBJbnRTaXplKDEsIDEpKQorICAgICAgICByZXR1cm4gQ29sb3IoKTsK
KworICAgIGlmIChjYWlyb19zdXJmYWNlX2dldF90eXBlKG1faW1hZ2UuZ2V0KCkpICE9IENBSVJP
X1NVUkZBQ0VfVFlQRV9JTUFHRSkKKyAgICAgICAgcmV0dXJuIENvbG9yKCk7CisKKyAgICBSR0JB
MzIqIHBpeGVsID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8UkdCQTMyKj4oY2Fpcm9faW1hZ2Vfc3Vy
ZmFjZV9nZXRfZGF0YShtX2ltYWdlLmdldCgpKSk7CisgICAgcmV0dXJuIGNvbG9yRnJvbVByZW11
bHRpcGxpZWRBUkdCKCpwaXhlbCk7Cit9CisKK2Jvb2wgUGxhdGZvcm1JbWFnZTo6aXNBbG1vc3RT
b2xpZENvbG9yKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Zsb2F0IFBsYXRm
b3JtSW1hZ2U6OnN1YnNhbXBsaW5nU2NhbGUoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRS
ZWN0JiwgY29uc3QgRmxvYXRSZWN0JikKK3sKKyAgICByZXR1cm4gMTsKK30KKwordm9pZCBQbGF0
Zm9ybUltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRTaXplJiwgQ29t
cG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBtb2RlLCBjb25zdCBJbWFnZU9yaWVudGF0aW9u
JiBvcmllbnRhdGlvbikgY29uc3QKK3sKKyAgICBjb250ZXh0LnNhdmUoKTsKKyAgICAKKyAgICAv
LyBTZXQgdGhlIGNvbXBvc2l0aW5nIG9wZXJhdGlvbi4KKyAgICBpZiAob3AgPT0gQ29tcG9zaXRl
U291cmNlT3ZlciAmJiBtb2RlID09IEJsZW5kTW9kZU5vcm1hbCAmJiAhaGFzQWxwaGEoKSkKKyAg
ICAgICAgY29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlQ29weSk7CisgICAg
ZWxzZQorICAgICAgICBjb250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihvcCwgbW9kZSk7Cisg
ICAgICAgIAorI2lmIEVOQUJMRShJTUFHRV9ERUNPREVSX0RPV05fU0FNUExJTkcpCisgICAgSW50
U2l6ZSBzY2FsZWRTaXplID0gY2Fpcm9TdXJmYWNlU2l6ZShtX2ltYWdlLmdldCgpKTsKKyAgICBG
bG9hdFJlY3QgYWRqdXN0ZWRTcmNSZWN0ID0gYWRqdXN0U291cmNlUmVjdEZvckRvd25TYW1wbGlu
ZyhzcmNSZWN0LCBzY2FsZWRTaXplKTsKKyNlbHNlCisgICAgRmxvYXRSZWN0IGFkanVzdGVkU3Jj
UmVjdChzcmNSZWN0KTsKKyNlbmRpZgorICAgICAgICAKKyAgICBGbG9hdFJlY3QgYWRqdXN0ZWRE
ZXN0UmVjdCA9IGRlc3RSZWN0OworICAgICAgICAKKyAgICBpZiAob3JpZW50YXRpb24gIT0gRGVm
YXVsdEltYWdlT3JpZW50YXRpb24pIHsKKyAgICAgICAgLy8gSW1hZ2VPcmllbnRhdGlvbiBleHBl
Y3RzIHRoZSBvcmlnaW4gdG8gYmUgYXQgKDAsIDApLgorICAgICAgICBjb250ZXh0LnRyYW5zbGF0
ZShkZXN0UmVjdC54KCksIGRlc3RSZWN0LnkoKSk7CisgICAgICAgIGFkanVzdGVkRGVzdFJlY3Qu
c2V0TG9jYXRpb24oRmxvYXRQb2ludCgpKTsKKyAgICAgICAgY29udGV4dC5jb25jYXRDVE0ob3Jp
ZW50YXRpb24udHJhbnNmb3JtRnJvbURlZmF1bHQoYWRqdXN0ZWREZXN0UmVjdC5zaXplKCkpKTsK
KyAgICAgICAgaWYgKG9yaWVudGF0aW9uLnVzZXNXaWR0aEFzSGVpZ2h0KCkpIHsKKyAgICAgICAg
ICAgIC8vIFRoZSBkZXN0aW5hdGlvbiByZWN0YW5nbGUgd2lsbCBoYXZlIGl0J3Mgd2lkdGggYW5k
IGhlaWdodCBhbHJlYWR5IHJldmVyc2VkIGZvciB0aGUgb3JpZW50YXRpb24gb2YKKyAgICAgICAg
ICAgIC8vIHRoZSBpbWFnZSwgYXMgaXQgd2FzIG5lZWRlZCBmb3IgcGFnZSBsYXlvdXQsIHNvIHdl
IG5lZWQgdG8gcmV2ZXJzZSBpdCBiYWNrIGhlcmUuCisgICAgICAgICAgICBhZGp1c3RlZERlc3RS
ZWN0LnNldFNpemUoYWRqdXN0ZWREZXN0UmVjdC5zaXplKCkudHJhbnNwb3NlZFNpemUoKSk7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLT5kcmF3U3Vy
ZmFjZVRvQ29udGV4dChtX2ltYWdlLmdldCgpLCBhZGp1c3RlZERlc3RSZWN0LCBhZGp1c3RlZFNy
Y1JlY3QsIGNvbnRleHQpOworCisgICAgY29udGV4dC5yZXN0b3JlKCk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVTRShDQUlSTykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFwSW1hZ2VDRy5jcHAKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAzYzgxYTE3MGJlNzlhZTZiZTZjYWNkYzk5ZjRjMzk4Y2Fh
ZjQyNmQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFwSW1hZ2VDRy5jcHAKKysrIC9k
ZXYvbnVsbApAQCAtMSwyMDYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAw
NSwgMjAwNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiQml0bWFwSW1hZ2UuaCIKLQotI2lmIFVTRShDRykKLQotI2luY2x1ZGUgIkNvcmVHcmFwaGlj
c1NQSS5oIgotI2luY2x1ZGUgIkZsb2F0Q29udmVyc2lvbi5oIgotI2luY2x1ZGUgIkdlb21ldHJ5
VXRpbGl0aWVzLmgiCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0Q0cuaCIKLSNpbmNsdWRlICJJ
bWFnZU9ic2VydmVyLmgiCi0jaW5jbHVkZSAiU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5oIgotI2lu
Y2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLQotI2lmIFVTRShBUFBLSVQpCi0jaW5jbHVkZSA8QXBw
bGljYXRpb25TZXJ2aWNlcy9BcHBsaWNhdGlvblNlcnZpY2VzLmg+Ci0jZW5kaWYKLQotI2lmIFBM
QVRGT1JNKENPQ09BKQotI2luY2x1ZGUgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKLSNlbmRp
ZgotCi0jaWYgUExBVEZPUk0oV0lOKQotI2luY2x1ZGUgPFdlYktpdFN5c3RlbUludGVyZmFjZS9X
ZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KLSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LW5hbWVzcGFjZSBOYXRpdmVJbWFnZSB7Ci0KLUludFNpemUgc2l6ZShjb25zdCBSZXRhaW5QdHI8
Q0dJbWFnZVJlZj4mIGltYWdlKQotewotICAgIEFTU0VSVChpbWFnZSk7Ci0gICAgcmV0dXJuIElu
dFNpemUoQ0dJbWFnZUdldFdpZHRoKGltYWdlLmdldCgpKSwgQ0dJbWFnZUdldEhlaWdodChpbWFn
ZS5nZXQoKSkpOwotfQotCi1ib29sIGhhc0FscGhhKGNvbnN0IFJldGFpblB0cjxDR0ltYWdlUmVm
PiYpCi17Ci0gICAgLy8gRklYTUU6IEFuc3dlciBjb3JyZWN0bHkgdGhlIHF1ZXN0aW9uOiBkb2Vz
IHRoZSBDR0ltYWdlUmVmIGhhdmUgYWxwaGEgY2hhbm5uZWw/Ci0gICAgcmV0dXJuIHRydWU7Ci19
Ci0gICAgCi1Db2xvciBzaW5nbGVQaXhlbFNvbGlkQ29sb3IoY29uc3QgUmV0YWluUHRyPENHSW1h
Z2VSZWY+JiBpbWFnZSkKLXsKLSAgICBBU1NFUlQoaW1hZ2UpOwotICAgIAotICAgIGlmIChOYXRp
dmVJbWFnZTo6c2l6ZShpbWFnZSkgIT0gSW50U2l6ZSgxLCAxKSkKLSAgICAgICAgcmV0dXJuIENv
bG9yKCk7Ci0gICAgCi0gICAgdW5zaWduZWQgY2hhciBwaXhlbFs0XTsgLy8gUkdCQQotICAgIGF1
dG8gYml0bWFwQ29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKHBpeGVsLCAx
LCAxLCA4LCBzaXplb2YocGl4ZWwpLCBzUkdCQ29sb3JTcGFjZVJlZigpLAotICAgICAgICBrQ0dJ
bWFnZUFscGhhUHJlbXVsdGlwbGllZExhc3QgfCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkJpZykpOwot
Ci0gICAgaWYgKCFiaXRtYXBDb250ZXh0KQotICAgICAgICByZXR1cm4gQ29sb3IoKTsKLSAgICAK
LSAgICBDR0NvbnRleHRTZXRCbGVuZE1vZGUoYml0bWFwQ29udGV4dC5nZXQoKSwga0NHQmxlbmRN
b2RlQ29weSk7Ci0gICAgQ0dDb250ZXh0RHJhd0ltYWdlKGJpdG1hcENvbnRleHQuZ2V0KCksIENH
UmVjdE1ha2UoMCwgMCwgMSwgMSksIGltYWdlLmdldCgpKTsKLSAgICAKLSAgICBpZiAoIXBpeGVs
WzNdKQotICAgICAgICByZXR1cm4gQ29sb3IoMCwgMCwgMCwgMCk7Ci0KLSAgICByZXR1cm4gQ29s
b3IocGl4ZWxbMF0gKiAyNTUgLyBwaXhlbFszXSwgcGl4ZWxbMV0gKiAyNTUgLyBwaXhlbFszXSwg
cGl4ZWxbMl0gKiAyNTUgLyBwaXhlbFszXSwgcGl4ZWxbM10pOwotfQotCi19Ci0KLWJvb2wgRnJh
bWVEYXRhOjpjbGVhcihib29sIGNsZWFyTWV0YWRhdGEpCi17Ci0gICAgaWYgKGNsZWFyTWV0YWRh
dGEpCi0gICAgICAgIG1faGF2ZU1ldGFkYXRhID0gZmFsc2U7Ci0KLSAgICBtX3N1YnNhbXBsaW5n
TGV2ZWwgPSAwOwotCi0gICAgaWYgKG1faW1hZ2UpIHsKLSNpZiBDQUNIRV9TVUJJTUFHRVMKLSAg
ICAgICAgc3ViaW1hZ2VDYWNoZSgpLmNsZWFySW1hZ2UobV9pbWFnZS5nZXQoKSk7Ci0jZW5kaWYK
LSAgICAgICAgbV9pbWFnZSA9IG51bGxwdHI7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0K
LSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLUNHSW1hZ2VSZWYgQml0bWFwSW1hZ2U6OmdldENHSW1h
Z2VSZWYoKQotewotICAgIHJldHVybiBmcmFtZUltYWdlQXRJbmRleCgwKS5nZXQoKTsKLX0KLQot
Q0dJbWFnZVJlZiBCaXRtYXBJbWFnZTo6Z2V0Rmlyc3RDR0ltYWdlUmVmT2ZTaXplKGNvbnN0IElu
dFNpemUmIHNpemUpCi17Ci0gICAgc2l6ZV90IGNvdW50ID0gZnJhbWVDb3VudCgpOwotICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewotICAgICAgICBDR0ltYWdlUmVmIGNn
SW1hZ2UgPSBmcmFtZUltYWdlQXRJbmRleChpKS5nZXQoKTsKLSAgICAgICAgaWYgKGNnSW1hZ2Ug
JiYgSW50U2l6ZShDR0ltYWdlR2V0V2lkdGgoY2dJbWFnZSksIENHSW1hZ2VHZXRIZWlnaHQoY2dJ
bWFnZSkpID09IHNpemUpCi0gICAgICAgICAgICByZXR1cm4gY2dJbWFnZTsKLSAgICB9Ci0KLSAg
ICAvLyBGYWxsYmFjayB0byB0aGUgZGVmYXVsdCBDR0ltYWdlUmVmIGlmIHdlIGNhbid0IGZpbmQg
dGhlIHJpZ2h0IHNpemUKLSAgICByZXR1cm4gZ2V0Q0dJbWFnZVJlZigpOwotfQotCi1SZXRhaW5Q
dHI8Q0ZBcnJheVJlZj4gQml0bWFwSW1hZ2U6OmdldENHSW1hZ2VBcnJheSgpCi17Ci0gICAgc2l6
ZV90IGNvdW50ID0gZnJhbWVDb3VudCgpOwotICAgIGlmICghY291bnQpCi0gICAgICAgIHJldHVy
biBudWxscHRyOwotICAgIAotICAgIENGTXV0YWJsZUFycmF5UmVmIGFycmF5ID0gQ0ZBcnJheUNy
ZWF0ZU11dGFibGUoTlVMTCwgY291bnQsICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpOwotICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewotICAgICAgICBpZiAoQ0dJbWFnZVJl
ZiBjdXJyRnJhbWUgPSBmcmFtZUltYWdlQXRJbmRleChpKS5nZXQoKSkKLSAgICAgICAgICAgIENG
QXJyYXlBcHBlbmRWYWx1ZShhcnJheSwgY3VyckZyYW1lKTsKLSAgICB9Ci0gICAgcmV0dXJuIGFk
b3B0Q0YoYXJyYXkpOwotfQotCi12b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4
dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwg
SW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uIGRlc2NyaXB0aW9uKQotewotI2lmIFBMQVRGT1JN
KElPUykKLSAgICBzdGFydEFuaW1hdGlvbihEb05vdENhdGNoVXApOwotI2Vsc2UKLSAgICBzdGFy
dEFuaW1hdGlvbigpOwotI2VuZGlmCi0KLSAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2U7
Ci0gICAgLy8gTmV2ZXIgdXNlIHN1YnNhbXBsZWQgaW1hZ2VzIGZvciBkcmF3aW5nIGludG8gUERG
IGNvbnRleHRzLgotICAgIGlmICh3a0NHQ29udGV4dElzUERGQ29udGV4dChjdHh0LnBsYXRmb3Jt
Q29udGV4dCgpKSkKLSAgICAgICAgaW1hZ2UgPSBjb3B5VW5zY2FsZWRGcmFtZUltYWdlQXRJbmRl
eChtX2N1cnJlbnRGcmFtZSk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIENHUmVjdCB0cmFuc2Zvcm1l
ZERlc3RpbmF0aW9uUmVjdCA9IENHUmVjdEFwcGx5QWZmaW5lVHJhbnNmb3JtKGRlc3RSZWN0LCBD
R0NvbnRleHRHZXRDVE0oY3R4dC5wbGF0Zm9ybUNvbnRleHQoKSkpOwotICAgICAgICBmbG9hdCBz
dWJzYW1wbGluZ1NjYWxlID0gc3RkOjptaW48ZmxvYXQ+KDEsIHN0ZDo6bWF4KHRyYW5zZm9ybWVk
RGVzdGluYXRpb25SZWN0LnNpemUud2lkdGggLyBzcmNSZWN0LndpZHRoKCksIHRyYW5zZm9ybWVk
RGVzdGluYXRpb25SZWN0LnNpemUuaGVpZ2h0IC8gc3JjUmVjdC5oZWlnaHQoKSkpOwotCi0gICAg
ICAgIGltYWdlID0gZnJhbWVJbWFnZUF0SW5kZXgobV9jdXJyZW50RnJhbWUsIHN1YnNhbXBsaW5n
U2NhbGUpOwotICAgIH0KLQotICAgIGlmICghaW1hZ2UpIC8vIElmIGl0J3MgdG9vIGVhcmx5IHdl
IHdvbid0IGhhdmUgYW4gaW1hZ2UgeWV0LgotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgQ29s
b3IgY29sb3IgPSBzaW5nbGVQaXhlbFNvbGlkQ29sb3IoKTsKLSAgICBpZiAoY29sb3IuaXNWYWxp
ZCgpKSB7Ci0gICAgICAgIGZpbGxXaXRoU29saWRDb2xvcihjdHh0LCBkZXN0UmVjdCwgY29sb3Is
IGNvbXBvc2l0ZU9wKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIFN1YnNhbXBs
aW5nIG1heSBoYXZlIGdpdmVuIHVzIGFuIGltYWdlIHRoYXQgaXMgc21hbGxlciB0aGFuIHNpemUo
KS4KLSAgICBJbnRTaXplIGltYWdlU2l6ZShDR0ltYWdlR2V0V2lkdGgoaW1hZ2UuZ2V0KCkpLCBD
R0ltYWdlR2V0SGVpZ2h0KGltYWdlLmdldCgpKSk7Ci0gICAgCi0gICAgLy8gc3JjUmVjdCBpcyBp
biB0aGUgY29vcmRpbmF0ZXMgb2YgdGhlIHVuc3Vic2FtcGxlZCBpbWFnZSwgc28gd2UgaGF2ZSB0
byBtYXAgaXQgdG8gdGhlIHN1YnNhbXBsZWQgaW1hZ2UuCi0gICAgRmxvYXRSZWN0IHNjYWxlZFNy
Y1JlY3QgPSBzcmNSZWN0OwotICAgIGlmIChpbWFnZVNpemUgIT0gbV9zaXplKSB7Ci0gICAgICAg
IEZsb2F0UmVjdCBvcmlnaW5hbEltYWdlQm91bmRzKEZsb2F0UG9pbnQoKSwgbV9zaXplKTsKLSAg
ICAgICAgRmxvYXRSZWN0IHN1YnNhbXBsZWRJbWFnZUJvdW5kcyhGbG9hdFBvaW50KCksIGltYWdl
U2l6ZSk7Ci0gICAgICAgIHNjYWxlZFNyY1JlY3QgPSBtYXBSZWN0KHNyY1JlY3QsIG9yaWdpbmFs
SW1hZ2VCb3VuZHMsIHN1YnNhbXBsZWRJbWFnZUJvdW5kcyk7Ci0gICAgfQotICAgIAotICAgIElt
YWdlT3JpZW50YXRpb24gb3JpZW50YXRpb247Ci0gICAgaWYgKGRlc2NyaXB0aW9uLnJlc3BlY3RJ
bWFnZU9yaWVudGF0aW9uKCkgPT0gUmVzcGVjdEltYWdlT3JpZW50YXRpb24pCi0gICAgICAgIG9y
aWVudGF0aW9uID0gZnJhbWVPcmllbnRhdGlvbkF0SW5kZXgobV9jdXJyZW50RnJhbWUpOwotCi0g
ICAgY3R4dC5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNjYWxl
ZFNyY1JlY3QsIGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUsIG9yaWVudGF0aW9uKTsKLQotICAgIGlm
IChpbWFnZU9ic2VydmVyKCkpCi0gICAgICAgIGltYWdlT2JzZXJ2ZXIoKS0+ZGlkRHJhdyh0aGlz
KTsKLX0KLQotUmV0YWluUHRyPENHSW1hZ2VSZWY+IEJpdG1hcEltYWdlOjpjb3B5VW5zY2FsZWRG
cmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgpCi17Ci0gICAgaWYgKGluZGV4ID49IGZyYW1l
Q291bnQoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBpZiAoaW5kZXggPj0gbV9m
cmFtZXMuc2l6ZSgpIHx8ICFtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZSkKLSAgICAgICAgY2FjaGVG
cmFtZShpbmRleCwgMCk7Ci0KLSAgICBpZiAoIW1fZnJhbWVzW2luZGV4XS5tX3N1YnNhbXBsaW5n
TGV2ZWwpCi0gICAgICAgIHJldHVybiBtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZTsKLQotICAgIHJl
dHVybiBtX3NvdXJjZS5jcmVhdGVGcmFtZUltYWdlQXRJbmRleChpbmRleCk7Ci19Ci0KLX0KLQot
I2VuZGlmIC8vIFVTRShDRykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9QYXR0ZXJuQ0cuY3BwCmluZGV4IGI0MjhkNTBkOTRiZjkyNDI4MDMyODdkMmVlYzE2YmQ2
OWM1MjhkOTIuLjNkYWExMzlhYjdlYTViNDIxNTc3ODgzNWQzNTNkOGFkYjVmMGM3NWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcApA
QCAtNzIsNyArNzIsNyBAQCBDR1BhdHRlcm5SZWYgUGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0
ZXJuKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdXNlclNwYWNlVHJhbgogICAgIC8vIElmIHdlJ3Jl
IHJlcGVhdGluZyBpbiBib3RoIGRpcmVjdGlvbnMsIHdlIGNhbiB1c2UgaW1hZ2UtYmFja2VkIHBh
dHRlcm5zCiAgICAgLy8gaW5zdGVhZCBvZiBjdXN0b20gcGF0dGVybnMsIGFuZCBhdm9pZCB0aWxp
bmctZWRnZSBwaXhlbCBjcmFja3MuCiAgICAgaWYgKG1fcmVwZWF0WCAmJiBtX3JlcGVhdFkpCi0g
ICAgICAgIHJldHVybiB3a0NHUGF0dGVybkNyZWF0ZVdpdGhJbWFnZUFuZFRyYW5zZm9ybSh0aWxl
SW1hZ2UoKS0+Z2V0Q0dJbWFnZVJlZigpLCBwYXR0ZXJuVHJhbnNmb3JtLCB3a1BhdHRlcm5UaWxp
bmdDb25zdGFudFNwYWNpbmcpOworICAgICAgICByZXR1cm4gd2tDR1BhdHRlcm5DcmVhdGVXaXRo
SW1hZ2VBbmRUcmFuc2Zvcm0odGlsZUltYWdlKCktPm5hdGl2ZUltYWdlKCkuZ2V0KCksIHBhdHRl
cm5UcmFuc2Zvcm0sIHdrUGF0dGVyblRpbGluZ0NvbnN0YW50U3BhY2luZyk7CiAKICAgICAvLyBJ
ZiBGTFRfTUFYIHNob3VsZCBhbHNvIGJlIHVzZWQgZm9yIHhTdGVwIG9yIHlTdGVwLCBub3RoaW5n
IGlzIHJlbmRlcmVkLiBVc2luZyBmcmFjdGlvbnMgb2YgRkxUX01BWCBhbHNvCiAgICAgLy8gcmVz
dWx0IGluIG5vdGhpbmcgYmVpbmcgcmVuZGVyZWQuCkBAIC04Myw3ICs4Myw3IEBAIENHUGF0dGVy
blJlZiBQYXR0ZXJuOjpjcmVhdGVQbGF0Zm9ybVBhdHRlcm4oY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiB1c2VyU3BhY2VUcmFuCiAgICAgQ0dGbG9hdCB5U3RlcCA9IG1fcmVwZWF0WSA/IHRpbGVSZWN0
LmhlaWdodCgpIDogKDEgPDwgMjIpOwogCiAgICAgLy8gVGhlIHBhdHRlcm4gd2lsbCByZWxlYXNl
IHRoZSBDR0ltYWdlUmVmIHdoZW4gaXQncyBkb25lIHJlbmRlcmluZyBpbiBwYXR0ZXJuUmVsZWFz
ZUNhbGxiYWNrCi0gICAgQ0dJbWFnZVJlZiBwbGF0Zm9ybUltYWdlID0gQ0dJbWFnZVJldGFpbih0
aWxlSW1hZ2UoKS0+Z2V0Q0dJbWFnZVJlZigpKTsKKyAgICBDR0ltYWdlUmVmIHBsYXRmb3JtSW1h
Z2UgPSB0aWxlSW1hZ2UoKS0+bmF0aXZlSW1hZ2UoKS5sZWFrUmVmKCk7CiAKICAgICBjb25zdCBD
R1BhdHRlcm5DYWxsYmFja3MgcGF0dGVybkNhbGxiYWNrcyA9IHsgMCwgcGF0dGVybkNhbGxiYWNr
LCBwYXR0ZXJuUmVsZWFzZUNhbGxiYWNrIH07CiAgICAgcmV0dXJuIENHUGF0dGVybkNyZWF0ZShw
bGF0Zm9ybUltYWdlLCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgeFN0ZXAsIHlTdGVwLCBr
Q0dQYXR0ZXJuVGlsaW5nQ29uc3RhbnRTcGFjaW5nLCBUUlVFLCAmcGF0dGVybkNhbGxiYWNrcyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QbGF0Zm9y
bUltYWdlQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGxhdGZv
cm1JbWFnZUNHLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZmIyZGUwZWExMmRhMjE0ZjEwNDZjMzk2MmU4ZWFi
NTNjNjQ0MTI1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvUGxhdGZvcm1JbWFnZUNHLmNwcApAQCAtMCwwICsxLDE3MSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJQbGF0Zm9ybUltYWdlLmgiCisKKyNpZiBVU0UoQ0cpCisKKyNpbmNsdWRlICJD
b2xvci5oIgorI2luY2x1ZGUgIkNvcmVHcmFwaGljc1NQSS5oIgorI2luY2x1ZGUgIkZsb2F0UmVj
dC5oIgorI2luY2x1ZGUgIkdlb21ldHJ5VXRpbGl0aWVzLmgiCisjaW5jbHVkZSAiR3JhcGhpY3ND
b250ZXh0Q0cuaCIKKyNpbmNsdWRlICJJbnRTaXplLmgiCisjaW5jbHVkZSAiU3ViaW1hZ2VDYWNo
ZVdpdGhUaW1lci5oIgorCisjaWYgUExBVEZPUk0oV0lOKQorI2luY2x1ZGUgPFdlYktpdFN5c3Rl
bUludGVyZmFjZS9XZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KKyNlbmRpZgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisgICAgCit2b2lkIFBsYXRmb3JtSW1hZ2U6OmNsZWFyU3ViSW1hZ2VzKCkKK3sK
KyNpZiBDQUNIRV9TVUJJTUFHRVMKKyAgICBpZiAoIWlzTmlsKCkpCisgICAgICAgIHN1YmltYWdl
Q2FjaGUoKS5jbGVhckltYWdlKGNnSW1hZ2VSZWYoKSk7CisjZW5kaWYKK30KKworSW50U2l6ZSBQ
bGF0Zm9ybUltYWdlOjpzaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gaXNOaWwoKSA/IEludFNp
emUoKSA6IEludFNpemUoQ0dJbWFnZUdldFdpZHRoKGNnSW1hZ2VSZWYoKSksIENHSW1hZ2VHZXRI
ZWlnaHQoY2dJbWFnZVJlZigpKSk7Cit9CisKK2Jvb2wgUGxhdGZvcm1JbWFnZTo6aGFzQWxwaGEo
KSBjb25zdAoreworICAgIC8vIEZJWE1FOiBBbnN3ZXIgY29ycmVjdGx5IHRoZSBxdWVzdGlvbjog
ZG9lcyB0aGUgQ0dJbWFnZVJlZiBoYXZlIGFscGhhIGNoYW5ubmVsPworICAgIHJldHVybiB0cnVl
OworfQorCitDb2xvciBQbGF0Zm9ybUltYWdlOjpzaW5nbGVQaXhlbFNvbGlkQ29sb3IoKSBjb25z
dAoreworICAgIGlmIChpc05pbCgpIHx8IHNpemUoKSAhPSBJbnRTaXplKDEsIDEpKQorICAgICAg
ICByZXR1cm4gQ29sb3IoKTsKKyAgICAKKyAgICB1bnNpZ25lZCBjaGFyIHBpeGVsWzRdOyAvLyBS
R0JBCisgICAgYXV0byBiaXRtYXBDb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVh
dGUocGl4ZWwsIDEsIDEsIDgsIHNpemVvZihwaXhlbCksIHNSR0JDb2xvclNwYWNlUmVmKCksCisg
ICAgICAgIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkTGFzdCB8IGtDR0JpdG1hcEJ5dGVPcmRl
cjMyQmlnKSk7CisgICAgCisgICAgaWYgKCFiaXRtYXBDb250ZXh0KQorICAgICAgICByZXR1cm4g
Q29sb3IoKTsKKyAgICAKKyAgICBDR0NvbnRleHRTZXRCbGVuZE1vZGUoYml0bWFwQ29udGV4dC5n
ZXQoKSwga0NHQmxlbmRNb2RlQ29weSk7CisgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGJpdG1hcENv
bnRleHQuZ2V0KCksIENHUmVjdE1ha2UoMCwgMCwgMSwgMSksIGNnSW1hZ2VSZWYoKSk7CisgICAg
CisgICAgaWYgKCFwaXhlbFszXSkKKyAgICAgICAgcmV0dXJuIENvbG9yKDAsIDAsIDAsIDApOwor
ICAgIAorICAgIHJldHVybiBDb2xvcihwaXhlbFswXSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhlbFsx
XSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhlbFsyXSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhlbFszXSk7
Cit9CisgICAgCitib29sIFBsYXRmb3JtSW1hZ2U6OmlzQWxtb3N0U29saWRDb2xvcigpIGNvbnN0
Cit7CisgICAgQ0dJbWFnZVJlZiBpbWFnZSA9IGNnSW1hZ2VSZWYoKTsKKyAgICBBU1NFUlQoQ0dJ
bWFnZUdldEJpdHNQZXJDb21wb25lbnQoaW1hZ2UpID09IDgpOworICAgIAorICAgIENHQml0bWFw
SW5mbyBpbWFnZUluZm8gPSBDR0ltYWdlR2V0Qml0bWFwSW5mbyhpbWFnZSk7CisgICAgaWYgKCEo
aW1hZ2VJbmZvICYga0NHQml0bWFwQnl0ZU9yZGVyMzJMaXR0bGUpIHx8IChpbWFnZUluZm8gJiBr
Q0dCaXRtYXBBbHBoYUluZm9NYXNrKSAhPSBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0
KSB7CisgICAgICAgIC8vIEZJWE1FOiBDb25zaWRlciBiZWluZyBhYmxlIHRvIGhhbmRsZSBvdGhl
ciBwaXhlbCBmb3JtYXRzLgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAKKyAgICBzaXplX3Qgd2lkdGggPSBDR0ltYWdlR2V0
V2lkdGgoaW1hZ2UpOworICAgIHNpemVfdCBoZWlnaHQgPSBDR0ltYWdlR2V0SGVpZ2h0KGltYWdl
KTsKKyAgICBzaXplX3QgYnl0ZXNQZXJSb3cgPSBDR0ltYWdlR2V0Qnl0ZXNQZXJSb3coaW1hZ2Up
OworICAgIAorICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IHByb3ZpZGVyID0gYWRvcHRDRihDR0Rh
dGFQcm92aWRlckNvcHlEYXRhKENHSW1hZ2VHZXREYXRhUHJvdmlkZXIoaW1hZ2UpKSk7CisgICAg
Y29uc3QgVUludDgqIGRhdGEgPSBDRkRhdGFHZXRCeXRlUHRyKHByb3ZpZGVyLmdldCgpKTsKKyAg
ICAKKyAgICAvLyBPdmVybGF5IGEgZ3JpZCBvZiBzYW1wbGluZyBkb3RzIG9uIHRvcCBvZiBhIGdy
YXlzY2FsZSB2ZXJzaW9uIG9mIHRoZSBpbWFnZS4KKyAgICAvLyBGb3IgdGhlIGludGVyaW9yIHBv
aW50cywgY2FsY3VsYXRlIHRoZSBkaWZmZXJlbmNlIGluIGx1bWluYW5jZSBhbW9uZyB0aGUgc2Ft
cGxlIHBvaW50CisgICAgLy8gYW5kIGl0cyBzdXJyb3VuZHMgcG9pbnRzLCBzY2FsZWQgYnkgdHJh
bnNwYXJlbmN5LgorICAgIGNvbnN0IHVuc2lnbmVkIHNhbXBsZVJvd3MgPSA3OworICAgIGNvbnN0
IHVuc2lnbmVkIHNhbXBsZUNvbHMgPSA3OworICAgIC8vIEZJWE1FOiBSZWZpbmUgdGhlIHByb3Bl
ciBudW1iZXIgb2Ygc2FtcGxlcywgYW5kIGFjY29tbW9kYXRlIGRpZmZlcmVudCBhc3BlY3QgcmF0
aW9zLgorICAgIGlmICh3aWR0aCA8IHNhbXBsZUNvbHMgfHwgaGVpZ2h0IDwgc2FtcGxlUm93cykK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIC8vIEVuc3VyZSB0aGF0IHRoZSBsYXN0
IHJvdy9jb2x1bW4gbGFuZCBvbiB0aGUgaW1hZ2UgcGVyaW1ldGVyLgorICAgIGNvbnN0IGZsb2F0
IHN0cmlkZVdpZHRoID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHdpZHRoIC0gMSkgLyAoc2FtcGxlQ29s
cyAtIDEpOworICAgIGNvbnN0IGZsb2F0IHN0cmlkZUhlaWdodCA9IHN0YXRpY19jYXN0PGZsb2F0
PihoZWlnaHQgLSAxKSAvIChzYW1wbGVSb3dzIC0gMSk7CisgICAgZmxvYXQgc2FtcGxlc1tzYW1w
bGVSb3dzXVtzYW1wbGVDb2xzXTsKKyAgICAKKyAgICAvLyBGaW5kIHRoZSBsdW1pbmFuY2Ugb2Yg
dGhlIHNhbXBsZSBwb2ludHMuCisgICAgZmxvYXQgeSA9IDA7CisgICAgY29uc3QgVUludDgqIHJv
dyA9IGRhdGE7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNhbXBsZVJvd3M7ICsraSkg
eworICAgICAgICBmbG9hdCB4ID0gMDsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8
IHNhbXBsZUNvbHM7ICsraikgeworICAgICAgICAgICAgY29uc3QgVUludDgqIHAwID0gcm93ICsg
KHN0YXRpY19jYXN0PGludD4oeCArIC41KSkgKiA0OworICAgICAgICAgICAgLy8gUiBHIEIgQQor
ICAgICAgICAgICAgc2FtcGxlc1tpXVtqXSA9ICgwLjIxMjUgKiAqcDAgKyAwLjcxNTQgKiAqKHAw
KzEpICsgMC4wNzIxICogKihwMCsyKSkgKiAqKHAwKzMpIC8gMjU1OworICAgICAgICAgICAgeCAr
PSBzdHJpZGVXaWR0aDsKKyAgICAgICAgfQorICAgICAgICB5ICs9IHN0cmlkZUhlaWdodDsKKyAg
ICAgICAgcm93ID0gZGF0YSArIChzdGF0aWNfY2FzdDxpbnQ+KHkgKyAuNSkpICogYnl0ZXNQZXJS
b3c7CisgICAgfQorICAgIAorICAgIC8vIERldGVybWluZSB0aGUgaW1hZ2Ugc2NvcmUuCisgICAg
ZmxvYXQgYWNjdW1TY29yZSA9IDA7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IHNhbXBs
ZVJvd3MgLSAxOyArK2kpIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMTsgaiA8IHNhbXBs
ZUNvbHMgLSAxOyArK2opIHsKKyAgICAgICAgICAgIGZsb2F0IGRpZmYgPSBzYW1wbGVzW2kgLSAx
XVtqXSArIHNhbXBsZXNbaSArIDFdW2pdICsgc2FtcGxlc1tpXVtqIC0gMV0gKyBzYW1wbGVzW2ld
W2ogKyAxXSAtIDQgKiBzYW1wbGVzW2ldW2pdOworICAgICAgICAgICAgYWNjdW1TY29yZSArPSBk
aWZmICogZGlmZjsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICAvLyBUaGUgc2NvcmUgZm9y
IGEgZ2l2ZW4gc2FtcGxlIGNhbiBiZSB3aXRoaW4gdGhlIHJhbmdlIG9mIDAgYW5kIDI1NV4yLgor
ICAgIHJldHVybiBhY2N1bVNjb3JlIDwgMjUwMCAqIChzYW1wbGVSb3dzIC0gMikgKiAoc2FtcGxl
Q29scyAtIDIpOworfQorCitmbG9hdCBQbGF0Zm9ybUltYWdlOjpzdWJzYW1wbGluZ1NjYWxlKEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0KQoreworICAgIC8vIE5ldmVyIHVzZSBzdWJzYW1wbGVkIGltYWdl
cyBmb3IgZHJhd2luZyBpbnRvIFBERiBjb250ZXh0cy4KKyAgICBpZiAod2tDR0NvbnRleHRJc1BE
RkNvbnRleHQoY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSkpCisgICAgICAgIHJldHVybiAxOwor
ICAgIAorICAgIENHUmVjdCB0cmFuc2Zvcm1lZERlc3RpbmF0aW9uUmVjdCA9IENHUmVjdEFwcGx5
QWZmaW5lVHJhbnNmb3JtKGRlc3RSZWN0LCBDR0NvbnRleHRHZXRDVE0oY29udGV4dC5wbGF0Zm9y
bUNvbnRleHQoKSkpOworICAgIHJldHVybiBzdGQ6Om1pbjxmbG9hdD4oMSwgc3RkOjptYXgodHJh
bnNmb3JtZWREZXN0aW5hdGlvblJlY3Quc2l6ZS53aWR0aCAvIHNyY1JlY3Qud2lkdGgoKSwgdHJh
bnNmb3JtZWREZXN0aW5hdGlvblJlY3Quc2l6ZS5oZWlnaHQgLyBzcmNSZWN0LmhlaWdodCgpKSk7
Cit9CisKK3ZvaWQgUGxhdGZvcm1JbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgSW50U2l6ZSYgc3JjU2l6ZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBtb2Rl
LCBjb25zdCBJbWFnZU9yaWVudGF0aW9uJiBvcmllbnRhdGlvbikgY29uc3QKK3sKKyAgICAvLyBT
dWJzYW1wbGluZyBtYXkgaGF2ZSBnaXZlbiB1cyBhbiBpbWFnZSB0aGF0IGlzIHNtYWxsZXIgdGhh
biBzaXplKCkuCisgICAgSW50U2l6ZSBzdWJzYW1wbGVkSW1hZ2VTaXplID0gc2l6ZSgpOworICAg
IAorICAgIC8vIHNyY1JlY3QgaXMgaW4gdGhlIGNvb3JkaW5hdGVzIG9mIHRoZSB1bnN1YnNhbXBs
ZWQgaW1hZ2UsIHNvIHdlIGhhdmUgdG8gbWFwIGl0IHRvIHRoZSBzdWJzYW1wbGVkIGltYWdlLgor
ICAgIEZsb2F0UmVjdCBhZGp1c3RlZFNyY1JlY3QgPSBzcmNSZWN0OworICAgIGlmIChzdWJzYW1w
bGVkSW1hZ2VTaXplICE9IHNyY1NpemUpCisgICAgICAgIGFkanVzdGVkU3JjUmVjdCA9IG1hcFJl
Y3Qoc3JjUmVjdCwgRmxvYXRSZWN0KHsgfSwgc3JjU2l6ZSksIEZsb2F0UmVjdCh7IH0sIHN1YnNh
bXBsZWRJbWFnZVNpemUpKTsKKyAgICAKKyAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShtX2lt
YWdlLCBzdWJzYW1wbGVkSW1hZ2VTaXplLCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBvcCwg
bW9kZSwgb3JpZW50YXRpb24pOworfQorICAgIAorfQorCisjZW5kaWYgLy8gVVNFKENHKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVGV4dFRyYWNr
UmVwcmVzZW50YXRpb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1RleHRUcmFja1JlcHJlc2VudGF0aW9uQ29jb2EubW0KaW5kZXggODk3MjBkMTczNjVk
YTdlOGJhODQ2OWQ1Mjk0NTQ4ZDUxODQ3YTdmZS4uNDQ3NmZjNWY4N2MzNDk4OGY2ZDlhZDU1ZWVi
ZDhkMWI5YmIwMjJlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvVGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9UZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29h
Lm1tCkBAIC0xMjksNyArMTI5LDcgQEAgVGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYTo6flRl
eHRUcmFja1JlcHJlc2VudGF0aW9uQ29jb2EoKQogdm9pZCBUZXh0VHJhY2tSZXByZXNlbnRhdGlv
bkNvY29hOjp1cGRhdGUoKQogewogICAgIGlmIChhdXRvIHJlcHJlc2VudGF0aW9uID0gbV9jbGll
bnQuY3JlYXRlVGV4dFRyYWNrUmVwcmVzZW50YXRpb25JbWFnZSgpKQotICAgICAgICBbbV9sYXll
ci5nZXQoKSBzZXRDb250ZW50czooaWQpcmVwcmVzZW50YXRpb24tPmdldENHSW1hZ2VSZWYoKV07
CisgICAgICAgIFttX2xheWVyLmdldCgpIHNldENvbnRlbnRzOihpZClyZXByZXNlbnRhdGlvbi0+
bmF0aXZlSW1hZ2UoKS5nZXQoKV07CiB9CiAKIHZvaWQgVGV4dFRyYWNrUmVwcmVzZW50YXRpb25D
b2NvYTo6c2V0Q29udGVudFNjYWxlKGZsb2F0IHNjYWxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tCmluZGV4IDAxZWI2ZGQzMDA0M2EyMjUy
OTE3NmZkOTEyMTE3ZGM1Nzc2YzE3YmEuLmRjMWM3YzcwOTVkOTQ0YzRjNjJmMWZlMDkzNTcwMmEx
M2M3YzdhNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9JbWFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMv
SW1hZ2VNYWMubW0KQEAgLTg1LDMxICs4NSwyMiBAQCBDRkRhdGFSZWYgQml0bWFwSW1hZ2U6Omdl
dFRJRkZSZXByZXNlbnRhdGlvbigpCiAgICAgaWYgKG1fdGlmZlJlcCkKICAgICAgICAgcmV0dXJu
IG1fdGlmZlJlcC5nZXQoKTsKIAotICAgIHVuc2lnbmVkIG51bUZyYW1lcyA9IGZyYW1lQ291bnQo
KTsKKyAgICBhdXRvIG5hdGl2ZUltYWdlcyA9IHRoaXMtPmZyYW1lc05hdGl2ZUltYWdlcygpOwog
Ci0gICAgLy8gSWYgbnVtRnJhbWVzIGlzIHplcm8sIHdlIGtub3cgZm9yIGNlcnRhaW4gdGhpcyBp
bWFnZSBkb2Vzbid0IGhhdmUgdmFsaWQgZGF0YQorICAgIC8vIElmIGZyYW1lc0ltYWdlcy5zaXpl
KCkgaXMgemVybywgd2Uga25vdyBmb3IgY2VydGFpbiB0aGlzIGltYWdlIGRvZXNuJ3QgaGF2ZSB2
YWxpZCBkYXRhCiAgICAgLy8gRXZlbiB0aG91Z2ggdGhlIGNhbGwgdG8gQ0dJbWFnZURlc3RpbmF0
aW9uQ3JlYXRlV2l0aERhdGEgd2lsbCBmYWlsIGFuZCB3ZSdsbCBoYW5kbGUgaXQgZ3JhY2VmdWxs
eSwKICAgICAvLyBpbiBjZXJ0YWluIGNpcmN1bXN0YW5jZXMgdGhhdCBjYWxsIHdpbGwgc3BhbSB0
aGUgY29uc29sZSB3aXRoIGFuIGVycm9yIG1lc3NhZ2UKLSAgICBpZiAoIW51bUZyYW1lcykKLSAg
ICAgICAgcmV0dXJuIDA7Ci0KLSAgICBWZWN0b3I8Q0dJbWFnZVJlZj4gaW1hZ2VzOwotICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1GcmFtZXM7ICsraSApIHsKLSAgICAgICAgQ0dJbWFn
ZVJlZiBjZ0ltYWdlID0gZnJhbWVJbWFnZUF0SW5kZXgoaSkuZ2V0KCk7Ci0gICAgICAgIGlmIChj
Z0ltYWdlKQotICAgICAgICAgICAgaW1hZ2VzLmFwcGVuZChjZ0ltYWdlKTsKLSAgICB9Ci0KLSAg
ICB1bnNpZ25lZCBudW1WYWxpZEZyYW1lcyA9IGltYWdlcy5zaXplKCk7CisgICAgaWYgKCFuYXRp
dmVJbWFnZXMuc2l6ZSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIFJldGFpblB0
cjxDRk11dGFibGVEYXRhUmVmPiBkYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGVNdXRhYmxlKDAs
IDApKTsKLSAgICBSZXRhaW5QdHI8Q0dJbWFnZURlc3RpbmF0aW9uUmVmPiBkZXN0aW5hdGlvbiA9
IGFkb3B0Q0YoQ0dJbWFnZURlc3RpbmF0aW9uQ3JlYXRlV2l0aERhdGEoZGF0YS5nZXQoKSwga1VU
VHlwZVRJRkYsIG51bVZhbGlkRnJhbWVzLCAwKSk7CisgICAgUmV0YWluUHRyPENHSW1hZ2VEZXN0
aW5hdGlvblJlZj4gZGVzdGluYXRpb24gPSBhZG9wdENGKENHSW1hZ2VEZXN0aW5hdGlvbkNyZWF0
ZVdpdGhEYXRhKGRhdGEuZ2V0KCksIGtVVFR5cGVUSUZGLCBuYXRpdmVJbWFnZXMuc2l6ZSgpLCAw
KSk7CiAKICAgICBpZiAoIWRlc3RpbmF0aW9uKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtVmFsaWRG
cmFtZXM7ICsraSkKLSAgICAgICAgQ0dJbWFnZURlc3RpbmF0aW9uQWRkSW1hZ2UoZGVzdGluYXRp
b24uZ2V0KCksIGltYWdlc1tpXSwgMCk7CisgICAgZm9yIChhdXRvIG5hdGl2ZUltYWdlIDogbmF0
aXZlSW1hZ2VzKQorICAgICAgICBDR0ltYWdlRGVzdGluYXRpb25BZGRJbWFnZShkZXN0aW5hdGlv
bi5nZXQoKSwgbmF0aXZlSW1hZ2UuZ2V0KCksIDApOwogCiAgICAgQ0dJbWFnZURlc3RpbmF0aW9u
RmluYWxpemUoZGVzdGluYXRpb24uZ2V0KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcAppbmRleCAyMTc1M2Jk
MDc4YTFjNTVjMzI3MTljMTQ4NDZmMGY2Yjk5NzVmOGZkLi5hMmZhZGVmY2JmYzg1YmE3MTk5MDdl
YTM5NTA2ODA5MzEzODliNmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5jcHAKQEAgLTE0MiwxOCArMTQyLDE2IEBA
IEltYWdlRnJhbWUmIEltYWdlRnJhbWU6Om9wZXJhdG9yPShjb25zdCBJbWFnZUZyYW1lJiBvdGhl
cikKICAgICAgICAgcmV0dXJuICp0aGlzOwogCiAgICAgY29weUJpdG1hcERhdGEob3RoZXIpOwot
ICAgIHNldE9yaWdpbmFsRnJhbWVSZWN0KG90aGVyLm9yaWdpbmFsRnJhbWVSZWN0KCkpOworICAg
IHNldEhhc0FscGhhKG90aGVyLm1faGFzQWxwaGEpOwogICAgIHNldFN0YXR1cyhvdGhlci5zdGF0
dXMoKSk7CiAgICAgc2V0RHVyYXRpb24ob3RoZXIuZHVyYXRpb24oKSk7CiAgICAgc2V0RGlzcG9z
YWxNZXRob2Qob3RoZXIuZGlzcG9zYWxNZXRob2QoKSk7Ci0gICAgc2V0UHJlbXVsdGlwbHlBbHBo
YShvdGhlci5wcmVtdWx0aXBseUFscGhhKCkpOwogICAgIHJldHVybiAqdGhpczsKIH0KIAogdm9p
ZCBJbWFnZUZyYW1lOjpjbGVhclBpeGVsRGF0YSgpCiB7Ci0gICAgbV9iYWNraW5nU3RvcmUuY2xl
YXIoKTsKLSAgICBtX2J5dGVzID0gMDsKKyAgICBtX3BpeGVscyA9IG51bGxwdHI7CiAgICAgbV9z
dGF0dXMgPSBGcmFtZUVtcHR5OwogICAgIC8vIE5PVEU6IERvIG5vdCByZXNldCBvdGhlciBtZW1i
ZXJzIGhlcmU7IGNsZWFyRnJhbWVCdWZmZXJDYWNoZSgpIGNhbGxzIHRoaXMKICAgICAvLyB0byBm
cmVlIHRoZSBiaXRtYXAgZGF0YSwgYnV0IG90aGVyIGZ1bmN0aW9ucyBsaWtlIGluaXRGcmFtZUJ1
ZmZlcigpIGFuZApAQCAtMTYzLDI0ICsxNjEsMTYgQEAgdm9pZCBJbWFnZUZyYW1lOjpjbGVhclBp
eGVsRGF0YSgpCiAKIHZvaWQgSW1hZ2VGcmFtZTo6emVyb0ZpbGxQaXhlbERhdGEoKQogewotICAg
IG1lbXNldChtX2J5dGVzLCAwLCBtX3NpemUud2lkdGgoKSAqIG1fc2l6ZS5oZWlnaHQoKSAqIHNp
emVvZihQaXhlbERhdGEpKTsKKyAgICBtX3BpeGVscy0+Y2xlYXIoKTsKICAgICBtX2hhc0FscGhh
ID0gdHJ1ZTsKIH0KIAogdm9pZCBJbWFnZUZyYW1lOjp6ZXJvRmlsbEZyYW1lUmVjdChjb25zdCBJ
bnRSZWN0JiByZWN0KQogewotICAgIEFTU0VSVChJbnRSZWN0KEludFBvaW50KCksIG1fc2l6ZSku
Y29udGFpbnMocmVjdCkpOwotCiAgICAgaWYgKHJlY3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBzaXplX3QgcmVjdFdpZHRoSW5CeXRlcyA9IHJlY3Qud2lkdGgoKSAqIHNpemVv
ZihQaXhlbERhdGEpOwotICAgIFBpeGVsRGF0YSogc3RhcnQgPSBtX2J5dGVzICsgKHJlY3QueSgp
ICogd2lkdGgoKSkgKyByZWN0LngoKTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IHJlY3QuaGVp
Z2h0KCk7ICsraSkgewotICAgICAgICBtZW1zZXQoc3RhcnQsIDAsIHJlY3RXaWR0aEluQnl0ZXMp
OwotICAgICAgICBzdGFydCArPSB3aWR0aCgpOwotICAgIH0KLQorICAgIG1fcGl4ZWxzLT5jbGVh
clJlY3QocmVjdCk7CiAgICAgc2V0SGFzQWxwaGEodHJ1ZSk7CiB9CiAKQEAgLTE4OSwyNSArMTc5
LDIzIEBAIGJvb2wgSW1hZ2VGcmFtZTo6Y29weUJpdG1hcERhdGEoY29uc3QgSW1hZ2VGcmFtZSYg
b3RoZXIpCiAgICAgaWYgKHRoaXMgPT0gJm90aGVyKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAot
ICAgIG1fYmFja2luZ1N0b3JlID0gb3RoZXIubV9iYWNraW5nU3RvcmU7Ci0gICAgbV9ieXRlcyA9
IG1fYmFja2luZ1N0b3JlLmRhdGEoKTsKLSAgICBtX3NpemUgPSBvdGhlci5tX3NpemU7Ci0gICAg
c2V0SGFzQWxwaGEob3RoZXIubV9oYXNBbHBoYSk7CisgICAgaWYgKG90aGVyLm1fcGl4ZWxzKQor
ICAgICAgICBtX3BpeGVscyA9IEJpdG1hcFBpeGVsczo6Y3JlYXRlKCpvdGhlci5tX3BpeGVscy5n
ZXQoKSk7CisgICAgZWxzZQorICAgICAgICBtX3BpeGVscyA9IG51bGxwdHI7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLWJvb2wgSW1hZ2VGcmFtZTo6c2V0U2l6ZShpbnQgbmV3V2lkdGgsIGludCBu
ZXdIZWlnaHQpCitib29sIEltYWdlRnJhbWU6OnNldFNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSwg
Ym9vbCBwcmVtdWx0aXBseUFscGhhKQogewotICAgIEFTU0VSVCghd2lkdGgoKSAmJiAhaGVpZ2h0
KCkpOwotICAgIHNpemVfdCBiYWNraW5nU3RvcmVTaXplID0gbmV3V2lkdGggKiBuZXdIZWlnaHQ7
Ci0gICAgaWYgKCFtX2JhY2tpbmdTdG9yZS50cnlSZXNlcnZlQ2FwYWNpdHkoYmFja2luZ1N0b3Jl
U2l6ZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBtX2JhY2tpbmdTdG9yZS5yZXNpemUo
YmFja2luZ1N0b3JlU2l6ZSk7Ci0gICAgbV9ieXRlcyA9IG1fYmFja2luZ1N0b3JlLmRhdGEoKTsK
LSAgICBtX3NpemUgPSBJbnRTaXplKG5ld1dpZHRoLCBuZXdIZWlnaHQpOworICAgIEFTU0VSVCgh
bV9waXhlbHMpOworICAgIG1fcGl4ZWxzID0gQml0bWFwUGl4ZWxzOjpjcmVhdGUoc2l6ZSwgcHJl
bXVsdGlwbHlBbHBoYSk7CisgICAgcmV0dXJuIG1fcGl4ZWxzICE9IG51bGxwdHI7Cit9CiAKLSAg
ICB6ZXJvRmlsbFBpeGVsRGF0YSgpOwotICAgIHJldHVybiB0cnVlOwordm9pZCBJbWFnZUZyYW1l
Ojpjb3B5Um93TlRpbWVzKGludCBzdGFydFgsIGludCBlbmRYLCBpbnQgc3RhcnRZLCBpbnQgZW5k
WSkKK3sKKyAgICBtX3BpeGVscy0+cmVwZWF0Rmlyc3RSb3coSW50UmVjdChzdGFydFgsIHN0YXJ0
WSwgZW5kWCAtc3RhcnRYICwgZW5kWSAtIHN0YXJ0WSkpOwogfQogCiBib29sIEltYWdlRnJhbWU6
Omhhc0FscGhhKCkgY29uc3QKQEAgLTIyMCwxMSArMjA4LDYgQEAgdm9pZCBJbWFnZUZyYW1lOjpz
ZXRIYXNBbHBoYShib29sIGFscGhhKQogICAgIG1faGFzQWxwaGEgPSBhbHBoYTsKIH0KIAotdm9p
ZCBJbWFnZUZyYW1lOjpzZXRDb2xvclByb2ZpbGUoY29uc3QgQ29sb3JQcm9maWxlJiBjb2xvclBy
b2ZpbGUpCi17Ci0gICAgbV9jb2xvclByb2ZpbGUgPSBjb2xvclByb2ZpbGU7Ci19Ci0KIHZvaWQg
SW1hZ2VGcmFtZTo6c2V0U3RhdHVzKEZyYW1lU3RhdHVzIHN0YXR1cykKIHsKICAgICBtX3N0YXR1
cyA9IHN0YXR1czsKQEAgLTI5MSw3ICsyNzQsNyBAQCB1bnNpZ25lZCBJbWFnZURlY29kZXI6OmZy
YW1lQnl0ZXNBdEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QKICAgICBpZiAobV9mcmFtZUJ1ZmZl
ckNhY2hlLnNpemUoKSA8PSBpbmRleCkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgLy8gRklYTUU6
IFVzZSB0aGUgZGltZW5zaW9uIG9mIHRoZSByZXF1ZXN0ZWQgZnJhbWUuCi0gICAgcmV0dXJuIG1f
c2l6ZS5hcmVhKCkgKiBzaXplb2YoSW1hZ2VGcmFtZTo6UGl4ZWxEYXRhKTsKKyAgICByZXR1cm4g
bV9zaXplLmFyZWEoKSAqIHNpemVvZihSR0JBMzIpOwogfQogCiBmbG9hdCBJbWFnZURlY29kZXI6
OmZyYW1lRHVyYXRpb25BdEluZGV4KHNpemVfdCBpbmRleCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmgKaW5kZXggMmY4ZWVl
MTc4MWQxNjJkODZjNDlmZTFkYWM3MmEyZTdlNDBhNWQ2ZC4uYjcyZjJiZTc1MjIyNDdjMmIyNWFk
OWY5NDkyYTNmOTYwZjQ1NzQxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmgKQEAgLTI4LDggKzI4LDEwIEBACiAKICNw
cmFnbWEgb25jZQogCi0jaW5jbHVkZSAiSW50UmVjdC5oIgorI2luY2x1ZGUgIkJpdG1hcFBpeGVs
cy5oIgogI2luY2x1ZGUgIkltYWdlU291cmNlLmgiCisjaW5jbHVkZSAiSW50UmVjdC5oIgorI2lu
Y2x1ZGUgIkludFNpemUuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVNjcmVlbi5oIgogI2luY2x1ZGUg
IlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CkBAIC01Nyw3ICs1
OSw2IEBAIHVzaW5nIENvbG9yUHJvZmlsZSA9IFZlY3RvcjxjaGFyPjsKICAgICAgICAgICAgIERp
c3Bvc2VPdmVyd3JpdGVQcmV2aW91cyAgLy8gQ2xlYXIgZnJhbWUgdG8gcHJldmlvdXMgZnJhbWVi
dWZmZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29udGVudHMK
ICAgICAgICAgfTsKLSAgICAgICAgdHlwZWRlZiB1bnNpZ25lZCBQaXhlbERhdGE7CiAKICAgICAg
ICAgSW1hZ2VGcmFtZSgpOwogCkBAIC04MCwxNTEgKzgxLDYxIEBAIHVzaW5nIENvbG9yUHJvZmls
ZSA9IFZlY3RvcjxjaGFyPjsKICAgICAgICAgLy8gQ29waWVzIHRoZSBwaXhlbCBkYXRhIGF0IFso
c3RhcnRYLCBzdGFydFkpLCAoZW5kWCwgc3RhcnRZKSkgdG8gdGhlCiAgICAgICAgIC8vIHNhbWUg
WC1jb29yZGluYXRlcyBvbiBlYWNoIHN1YnNlcXVlbnQgcm93IHVwIHRvIGJ1dCBub3QgaW5jbHVk
aW5nCiAgICAgICAgIC8vIGVuZFkuCi0gICAgICAgIHZvaWQgY29weVJvd05UaW1lcyhpbnQgc3Rh
cnRYLCBpbnQgZW5kWCwgaW50IHN0YXJ0WSwgaW50IGVuZFkpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIEFTU0VSVChzdGFydFggPCB3aWR0aCgpKTsKLSAgICAgICAgICAgIEFTU0VSVChlbmRYIDw9
IHdpZHRoKCkpOwotICAgICAgICAgICAgQVNTRVJUKHN0YXJ0WSA8IGhlaWdodCgpKTsKLSAgICAg
ICAgICAgIEFTU0VSVChlbmRZIDw9IGhlaWdodCgpKTsKLSAgICAgICAgICAgIGNvbnN0IGludCBy
b3dCeXRlcyA9IChlbmRYIC0gc3RhcnRYKSAqIHNpemVvZihQaXhlbERhdGEpOwotICAgICAgICAg
ICAgY29uc3QgUGl4ZWxEYXRhKiBjb25zdCBzdGFydEFkZHIgPSBnZXRBZGRyKHN0YXJ0WCwgc3Rh
cnRZKTsKLSAgICAgICAgICAgIGZvciAoaW50IGRlc3RZID0gc3RhcnRZICsgMTsgZGVzdFkgPCBl
bmRZOyArK2Rlc3RZKQotICAgICAgICAgICAgICAgIG1lbWNweShnZXRBZGRyKHN0YXJ0WCwgZGVz
dFkpLCBzdGFydEFkZHIsIHJvd0J5dGVzKTsKLSAgICAgICAgfQorICAgICAgICB2b2lkIGNvcHlS
b3dOVGltZXMoaW50IHN0YXJ0WCwgaW50IGVuZFgsIGludCBzdGFydFksIGludCBlbmRZKTsKIAog
ICAgICAgICAvLyBBbGxvY2F0ZXMgc3BhY2UgZm9yIHRoZSBwaXhlbCBkYXRhLiAgTXVzdCBiZSBj
YWxsZWQgYmVmb3JlIGFueSBwaXhlbHMKICAgICAgICAgLy8gYXJlIHdyaXR0ZW4uICBNdXN0IG9u
bHkgYmUgY2FsbGVkIG9uY2UuICBSZXR1cm5zIHdoZXRoZXIgYWxsb2NhdGlvbgogICAgICAgICAv
LyBzdWNjZWVkZWQuCi0gICAgICAgIGJvb2wgc2V0U2l6ZShpbnQgbmV3V2lkdGgsIGludCBuZXdI
ZWlnaHQpOworICAgICAgICBib29sIHNldFNpemUoY29uc3QgSW50U2l6ZSYsIGJvb2wgcHJlbXVs
dGlwbHlBbHBoYSk7CisgICAgICAgIAorICAgICAgICBJbnRTaXplIHNpemUoKSBjb25zdCB7IHJl
dHVybiBtX3BpeGVscy0+c2l6ZSgpOyB9CiAKICAgICAgICAgLy8gUmV0dXJucyBhIGNhbGxlci1v
d25lZCBwb2ludGVyIHRvIHRoZSB1bmRlcmx5aW5nIG5hdGl2ZSBpbWFnZSBkYXRhLgogICAgICAg
ICAvLyAoQWN0dWFsIHVzZTogVGhpcyBwb2ludGVyIHdpbGwgYmUgb3duZWQgYnkgQml0bWFwSW1h
Z2UgYW5kIGZyZWVkIGluCiAgICAgICAgIC8vIEZyYW1lRGF0YTo6Y2xlYXIoKSkuCi0gICAgICAg
IE5hdGl2ZUltYWdlUHRyIGFzTmV3TmF0aXZlSW1hZ2UoKSBjb25zdDsKKyAgICAgICAgTmF0aXZl
SW1hZ2VQdHIgYXNOZXdOYXRpdmVJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGl4ZWxzLT5pbWFn
ZSgpOyB9CisKKyAgICAgICAgaW5saW5lIEJpdG1hcFBpeGVscyogcGl4ZWxzKCkgY29uc3QgeyBy
ZXR1cm4gbV9waXhlbHMgPyBtX3BpeGVscy5nZXQoKSA6IG51bGxwdHI7IH0KKyAgICAgICAgaW5s
aW5lIGJvb2wgaGFzUGl4ZWxzKCkgY29uc3QgeyByZXR1cm4gcGl4ZWxzKCk7IH0KIAogICAgICAg
ICBib29sIGhhc0FscGhhKCkgY29uc3Q7Ci0gICAgICAgIGNvbnN0IEludFJlY3QmIG9yaWdpbmFs
RnJhbWVSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW5hbEZyYW1lUmVjdDsgfQogICAgICAg
ICBGcmFtZVN0YXR1cyBzdGF0dXMoKSBjb25zdCB7IHJldHVybiBtX3N0YXR1czsgfQogICAgICAg
ICB1bnNpZ25lZCBkdXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZHVyYXRpb247IH0KICAgICAg
ICAgRnJhbWVEaXNwb3NhbE1ldGhvZCBkaXNwb3NhbE1ldGhvZCgpIGNvbnN0IHsgcmV0dXJuIG1f
ZGlzcG9zYWxNZXRob2Q7IH0KLSAgICAgICAgYm9vbCBwcmVtdWx0aXBseUFscGhhKCkgY29uc3Qg
eyByZXR1cm4gbV9wcmVtdWx0aXBseUFscGhhOyB9CiAKICAgICAgICAgdm9pZCBzZXRIYXNBbHBo
YShib29sIGFscGhhKTsKLSAgICAgICAgdm9pZCBzZXRDb2xvclByb2ZpbGUoY29uc3QgQ29sb3JQ
cm9maWxlJik7Ci0gICAgICAgIHZvaWQgc2V0T3JpZ2luYWxGcmFtZVJlY3QoY29uc3QgSW50UmVj
dCYgcikgeyBtX29yaWdpbmFsRnJhbWVSZWN0ID0gcjsgfQogICAgICAgICB2b2lkIHNldFN0YXR1
cyhGcmFtZVN0YXR1cyBzdGF0dXMpOwogICAgICAgICB2b2lkIHNldER1cmF0aW9uKHVuc2lnbmVk
IGR1cmF0aW9uKSB7IG1fZHVyYXRpb24gPSBkdXJhdGlvbjsgfQogICAgICAgICB2b2lkIHNldERp
c3Bvc2FsTWV0aG9kKEZyYW1lRGlzcG9zYWxNZXRob2QgbWV0aG9kKSB7IG1fZGlzcG9zYWxNZXRo
b2QgPSBtZXRob2Q7IH0KLSAgICAgICAgdm9pZCBzZXRQcmVtdWx0aXBseUFscGhhKGJvb2wgcHJl
bXVsdGlwbHlBbHBoYSkgeyBtX3ByZW11bHRpcGx5QWxwaGEgPSBwcmVtdWx0aXBseUFscGhhOyB9
CiAKICAgICAgICAgaW5saW5lIHZvaWQgc2V0UkdCQShpbnQgeCwgaW50IHksIHVuc2lnbmVkIHIs
IHVuc2lnbmVkIGcsIHVuc2lnbmVkIGIsIHVuc2lnbmVkIGEpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIHNldFJHQkEoZ2V0QWRkcih4LCB5KSwgciwgZywgYiwgYSk7CisgICAgICAgICAgICBtX3Bp
eGVscy0+c2V0UkdCQSh4LCB5LCByLCBnLCBiLCBhKTsKICAgICAgICAgfQogCi0gICAgICAgIGlu
bGluZSBQaXhlbERhdGEqIGdldEFkZHIoaW50IHgsIGludCB5KQorICAgICAgICBpbmxpbmUgUkdC
QTMyKiBnZXRBZGRyKGludCB4LCBpbnQgeSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJu
IG1fYnl0ZXMgKyAoeSAqIHdpZHRoKCkpICsgeDsKKyAgICAgICAgICAgIHJldHVybiBtX3BpeGVs
cy0+YXQoeCwgeSk7CiAgICAgICAgIH0KIAotICAgICAgICBpbmxpbmUgYm9vbCBoYXNQaXhlbERh
dGEoKSBjb25zdAorICAgICAgICBpbmxpbmUgdm9pZCBzZXRSR0JBKFJHQkEzMiogZGVzdCwgdW5z
aWduZWQgciwgdW5zaWduZWQgZywgdW5zaWduZWQgYiwgdW5zaWduZWQgYSkKICAgICAgICAgewot
ICAgICAgICAgICAgcmV0dXJuIG1fYnl0ZXM7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBVc2Ug
Zml4IHBvaW50IG11bHRpcGxpZXIgaW5zdGVhZCBvZiBpbnRlZ2VyIGRpdmlzaW9uIG9yIGZsb2F0
aW5nIHBvaW50IG1hdGguCi0gICAgICAgIC8vIFRoaXMgbXVsdGlwbGVyIHByb2R1Y2VzIGV4YWN0
bHkgdGhlIHNhbWUgcmVzdWx0IGZvciBhbGwgdmFsdWVzIGluIHJhbmdlIDAgLSAyNTUuCi0gICAg
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBmaXhQb2ludFNoaWZ0ID0gMjQ7Ci0gICAgICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBmaXhQb2ludE11bHQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
MS4wIC8gMjU1LjAgKiAoMSA8PCBmaXhQb2ludFNoaWZ0KSkgKyAxOwotICAgICAgICAvLyBNdWx0
aXBsaWVzIHVuc2lnbmVkIHZhbHVlIGJ5IGZpeHBvaW50IHZhbHVlIGFuZCBjb252ZXJ0cyBiYWNr
IHRvIHVuc2lnbmVkLgotICAgICAgICBzdGF0aWMgdW5zaWduZWQgZml4UG9pbnRVbnNpZ25lZE11
bHRpcGx5KHVuc2lnbmVkIGZpeGVkLCB1bnNpZ25lZCB2KQotICAgICAgICB7Ci0gICAgICAgICAg
ICByZXR1cm4gIChmaXhlZCAqIHYpID4+IGZpeFBvaW50U2hpZnQ7Ci0gICAgICAgIH0KLQotICAg
ICAgICBpbmxpbmUgdm9pZCBzZXRSR0JBKFBpeGVsRGF0YSogZGVzdCwgdW5zaWduZWQgciwgdW5z
aWduZWQgZywgdW5zaWduZWQgYiwgdW5zaWduZWQgYSkKLSAgICAgICAgewotICAgICAgICAgICAg
aWYgKG1fcHJlbXVsdGlwbHlBbHBoYSAmJiBhIDwgMjU1KSB7Ci0gICAgICAgICAgICAgICAgaWYg
KCFhKSB7Ci0gICAgICAgICAgICAgICAgICAgICpkZXN0ID0gMDsKLSAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGFscGhhTXVsdCA9IGEgKiBmaXhQb2ludE11bHQ7Ci0gICAgICAgICAgICAgICAgciA9IGZpeFBv
aW50VW5zaWduZWRNdWx0aXBseShyLCBhbHBoYU11bHQpOwotICAgICAgICAgICAgICAgIGcgPSBm
aXhQb2ludFVuc2lnbmVkTXVsdGlwbHkoZywgYWxwaGFNdWx0KTsKLSAgICAgICAgICAgICAgICBi
ID0gZml4UG9pbnRVbnNpZ25lZE11bHRpcGx5KGIsIGFscGhhTXVsdCk7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICAqZGVzdCA9IChhIDw8IDI0IHwgciA8PCAxNiB8IGcgPDwgOCB8IGIpOwor
ICAgICAgICAgICAgbV9waXhlbHMtPnNldFJHQkEoZGVzdCwgciwgZywgYiwgYSk7CiAgICAgICAg
IH0KIAogI2lmIEVOQUJMRShBUE5HKQotICAgICAgICBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGRp
dmlkZTI1NSh1bnNpZ25lZCBhKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gKGEgKyAo
YSA+PiA4KSArIDEpID4+IDg7Ci0gICAgICAgIH0KLQotICAgICAgICBpbmxpbmUgdm9pZCBvdmVy
UkdCQShQaXhlbERhdGEqIGRlc3QsIHVuc2lnbmVkIHIsIHVuc2lnbmVkIGcsIHVuc2lnbmVkIGIs
IHVuc2lnbmVkIGEpCisgICAgICAgIGlubGluZSB2b2lkIG92ZXJSR0JBKFJHQkEzMiogZGVzdCwg
dW5zaWduZWQgciwgdW5zaWduZWQgZywgdW5zaWduZWQgYiwgdW5zaWduZWQgYSkKICAgICAgICAg
ewotICAgICAgICAgICAgaWYgKCFhKQotICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAg
ICAgICAgaWYgKGEgPCAyNTUpIHsKLSAgICAgICAgICAgICAgICB1bnNpZ25lZCBhRGVzdCA9ICgo
KmRlc3QpID4+IDI0KSAmIDI1NTsKLSAgICAgICAgICAgICAgICBpZiAoYURlc3QpIHsKLSAgICAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgckRlc3QgPSAoKCpkZXN0KSA+PiAxNikgJiAyNTU7Ci0g
ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGdEZXN0ID0gKCgqZGVzdCkgPj4gOCkgJiAyNTU7
Ci0gICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGJEZXN0ID0gKCpkZXN0KSAmIDI1NTsKLSAg
ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgYUF1eCA9IDI1NSAtIGE7Ci0gICAgICAgICAgICAg
ICAgICAgIGlmICghbV9wcmVtdWx0aXBseUFscGhhKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICByRGVzdCA9IGRpdmlkZTI1NShyRGVzdCAqIGFEZXN0KTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGdEZXN0ID0gZGl2aWRlMjU1KGdEZXN0ICogYURlc3QpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgYkRlc3QgPSBkaXZpZGUyNTUoYkRlc3QgKiBhRGVzdCk7Ci0gICAgICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICAgICAgciA9IGRpdmlkZTI1NShyICogYSArIHJEZXN0ICog
YUF1eCk7Ci0gICAgICAgICAgICAgICAgICAgIGcgPSBkaXZpZGUyNTUoZyAqIGEgKyBnRGVzdCAq
IGFBdXgpOwotICAgICAgICAgICAgICAgICAgICBiID0gZGl2aWRlMjU1KGIgKiBhICsgYkRlc3Qg
KiBhQXV4KTsKLSAgICAgICAgICAgICAgICAgICAgYSArPSBkaXZpZGUyNTUoYURlc3QgKiBhQXV4
KTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFtX3ByZW11bHRpcGx5QWxwaGEpIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHIgPSAociAqIDI1NSArIGEgLSAxKSAvIGE7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBnID0gKGcgKiAyNTUgKyBhIC0gMSkgLyBhOwotICAgICAgICAgICAgICAg
ICAgICAgICAgYiA9IChiICogMjU1ICsgYSAtIDEpIC8gYTsKLSAgICAgICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobV9wcmVtdWx0aXBseUFscGhhKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIHIgPSBkaXZpZGUyNTUociAqIGEpOwotICAgICAgICAgICAgICAgICAg
ICBnID0gZGl2aWRlMjU1KGcgKiBhKTsKLSAgICAgICAgICAgICAgICAgICAgYiA9IGRpdmlkZTI1
NShiICogYSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAg
KmRlc3QgPSAoYSA8PCAyNCB8IHIgPDwgMTYgfCBnIDw8IDggfCBiKTsKKyAgICAgICAgICAgIG1f
cGl4ZWxzLT5vdmVyUkdCQShkZXN0LCByLCBnLCBiLCBhKTsKICAgICAgICAgfQogI2VuZGlmCiAK
ICAgICBwcml2YXRlOgotICAgICAgICBpbnQgd2lkdGgoKSBjb25zdAotICAgICAgICB7Ci0gICAg
ICAgICAgICByZXR1cm4gbV9zaXplLndpZHRoKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBpbnQg
aGVpZ2h0KCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG1fc2l6ZS5oZWln
aHQoKTsKLSAgICAgICAgfQotCi0gICAgICAgIFZlY3RvcjxQaXhlbERhdGE+IG1fYmFja2luZ1N0
b3JlOwotICAgICAgICBQaXhlbERhdGEqIG1fYnl0ZXM7IC8vIFRoZSBtZW1vcnkgaXMgYmFja2Vk
IGJ5IG1fYmFja2luZ1N0b3JlLgotICAgICAgICBJbnRTaXplIG1fc2l6ZTsKLSAgICAgICAgLy8g
RklYTUU6IERvIHdlIG5lZWQgbV9jb2xvclByb2ZpbGUgYW55bW9yZT8KLSAgICAgICAgQ29sb3JQ
cm9maWxlIG1fY29sb3JQcm9maWxlOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Qml0bWFwUGl4
ZWxzPiBtX3BpeGVsczsKICAgICAgICAgYm9vbCBtX2hhc0FscGhhOwotICAgICAgICBJbnRSZWN0
IG1fb3JpZ2luYWxGcmFtZVJlY3Q7IC8vIFRoaXMgd2lsbCBhbHdheXMganVzdCBiZSB0aGUgZW50
aXJlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYnVmZmVyIGV4Y2Vw
dCBmb3IgR0lGIGZyYW1lcyB3aG9zZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIG9yaWdpbmFsIHJlY3Qgd2FzIHNtYWxsZXIgdGhhbiB0aGUKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBvdmVyYWxsIGltYWdlIHNpemUuCiAgICAgICAgIEZy
YW1lU3RhdHVzIG1fc3RhdHVzOwogICAgICAgICB1bnNpZ25lZCBtX2R1cmF0aW9uOwogICAgICAg
ICBGcmFtZURpc3Bvc2FsTWV0aG9kIG1fZGlzcG9zYWxNZXRob2Q7Ci0gICAgICAgIGJvb2wgbV9w
cmVtdWx0aXBseUFscGhhOwogICAgIH07CiAKICAgICAvLyBJbWFnZURlY29kZXIgaXMgYSBiYXNl
IGZvciBhbGwgZm9ybWF0LXNwZWNpZmljIGRlY29kZXJzCkBAIC0yNTMsNiArMTY0LDggQEAgdXNp
bmcgQ29sb3JQcm9maWxlID0gVmVjdG9yPGNoYXI+OwogCiAgICAgICAgIHZpcnR1YWwgU3RyaW5n
IGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3QgPSAwOwogCisgICAgICAgIGJvb2wgcHJlbXVsdGlw
bHlBbHBoYSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJlbXVsdGlwbHlBbHBoYTsgfQorCiAgICAgICAg
IGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzQWxsRGF0YVJlY2Vp
dmVkOyB9CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRh
LCBib29sIGFsbERhdGFSZWNlaXZlZCkKQEAgLTI5MCwxMSArMjAzLDExIEBAIHVzaW5nIENvbG9y
UHJvZmlsZSA9IFZlY3RvcjxjaGFyPjsKIAogICAgICAgICAvLyBSZXR1cm5zIHdoZXRoZXIgdGhl
IHNpemUgaXMgbGVnYWwgKGkuZS4gbm90IGdvaW5nIHRvIHJlc3VsdCBpbgogICAgICAgICAvLyBv
dmVyZmxvdyBlbHNld2hlcmUpLiAgSWYgbm90LCBtYXJrcyBkZWNvZGluZyBhcyBmYWlsZWQuCi0g
ICAgICAgIHZpcnR1YWwgYm9vbCBzZXRTaXplKHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWln
aHQpCisgICAgICAgIHZpcnR1YWwgYm9vbCBzZXRTaXplKGNvbnN0IEludFNpemUmIHNpemUpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIGlmIChpc092ZXJTaXplKHdpZHRoLCBoZWlnaHQpKQorICAg
ICAgICAgICAgaWYgKGlzT3ZlclNpemUoc2l6ZSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHNl
dEZhaWxlZCgpOwotICAgICAgICAgICAgbV9zaXplID0gSW50U2l6ZSh3aWR0aCwgaGVpZ2h0KTsK
KyAgICAgICAgICAgIG1fc2l6ZSA9IHNpemU7CiAgICAgICAgICAgICBtX3NpemVBdmFpbGFibGUg
PSB0cnVlOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KQEAgLTM4MSw4ICsy
OTQsNiBAQCB1c2luZyBDb2xvclByb2ZpbGUgPSBWZWN0b3I8Y2hhcj47CiAKICAgICAgICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOyAvLyBUaGUgZW5jb2RlZCBkYXRhLgogICAgICAgICBW
ZWN0b3I8SW1hZ2VGcmFtZSwgMT4gbV9mcmFtZUJ1ZmZlckNhY2hlOwotICAgICAgICAvLyBGSVhN
RTogRG8gd2UgbmVlZCBtX2NvbG9yUHJvZmlsZSBhbnkgbW9yZSwgZm9yIGFueSBwb3J0PwotICAg
ICAgICBDb2xvclByb2ZpbGUgbV9jb2xvclByb2ZpbGU7CiAgICAgICAgIGJvb2wgbV9zY2FsZWQg
eyBmYWxzZSB9OwogICAgICAgICBWZWN0b3I8aW50PiBtX3NjYWxlZENvbHVtbnM7CiAgICAgICAg
IFZlY3RvcjxpbnQ+IG1fc2NhbGVkUm93czsKQEAgLTM5MywxMSArMzA0LDEwIEBAIHVzaW5nIENv
bG9yUHJvZmlsZSA9IFZlY3RvcjxjaGFyPjsKICAgICBwcml2YXRlOgogICAgICAgICAvLyBTb21l
IGNvZGUgcGF0aHMgY29tcHV0ZSB0aGUgc2l6ZSBvZiB0aGUgaW1hZ2UgYXMgIndpZHRoICogaGVp
Z2h0ICogNCIKICAgICAgICAgLy8gYW5kIHJldHVybiBpdCBhcyBhIChzaWduZWQpIGludC4gIEF2
b2lkIG92ZXJmbG93LgotICAgICAgICBzdGF0aWMgYm9vbCBpc092ZXJTaXplKHVuc2lnbmVkIHdp
ZHRoLCB1bnNpZ25lZCBoZWlnaHQpCisgICAgICAgIHN0YXRpYyBib29sIGlzT3ZlclNpemUoY29u
c3QgSW50U2l6ZSYgc2l6ZSkKICAgICAgICAgewotICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBs
b25nIHRvdGFsX3NpemUgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KHdpZHRoKQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBzdGF0aWNfY2FzdDx1
bnNpZ25lZCBsb25nIGxvbmc+KGhlaWdodCk7Ci0gICAgICAgICAgICByZXR1cm4gdG90YWxfc2l6
ZSA+ICgoMSA8PCAyOSkgLSAxKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBwaXhl
bHMgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KHNpemUud2lkdGgoKSkgKiBzdGF0
aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KHNpemUuaGVpZ2h0KCkpOworICAgICAgICAgICAg
cmV0dXJuIHBpeGVscyA+ICgoMSA8PCAyOSkgLSAxKTsKICAgICAgICAgfQogCiAgICAgICAgIElu
dFNpemUgbV9zaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBjYWYzNWM5N2Yx
N2VkZDM0YmM5ZGY4OWFiMDllODcwMGFlZTZjN2RmLi40NTdhZWYwN2FkNjM0ZTAyMWJhM2VkZTNk
NTEzYzc0YTVkOGViOWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcApAQCAtNzAsMTAg
KzcwLDggQEAgSW1hZ2VGcmFtZSogQk1QSW1hZ2VEZWNvZGVyOjpmcmFtZUJ1ZmZlckF0SW5kZXgo
c2l6ZV90IGluZGV4KQogICAgIGlmIChpbmRleCkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBp
ZiAobV9mcmFtZUJ1ZmZlckNhY2hlLmlzRW1wdHkoKSkgeworICAgIGlmIChtX2ZyYW1lQnVmZmVy
Q2FjaGUuaXNFbXB0eSgpKQogICAgICAgICBtX2ZyYW1lQnVmZmVyQ2FjaGUucmVzaXplKDEpOwot
ICAgICAgICBtX2ZyYW1lQnVmZmVyQ2FjaGUuZmlyc3QoKS5zZXRQcmVtdWx0aXBseUFscGhhKG1f
cHJlbXVsdGlwbHlBbHBoYSk7Ci0gICAgfQogCiAgICAgSW1hZ2VGcmFtZSogYnVmZmVyID0gJm1f
ZnJhbWVCdWZmZXJDYWNoZS5maXJzdCgpOwogICAgIGlmIChidWZmZXItPnN0YXR1cygpICE9IElt
YWdlRnJhbWU6OkZyYW1lQ29tcGxldGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVhZGVyLmNwcAppbmRleCA1
YzAwNTUzNGVjZDkyMTM0YTEzYjMyOTU4OTI3NzkwZjA3YWQwZjgxLi45ODFjMTFmZTk2ODIwNzk2
M2ZhY2I1ZGYxZWZlYTFkMGRlOWIwYTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5jcHAKQEAg
LTc4LDcgKzc4LDcgQEAgYm9vbCBCTVBJbWFnZVJlYWRlcjo6ZGVjb2RlQk1QKGJvb2wgb25seVNp
emUpCiAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgZnJhbWVidWZmZXIgaWYgbmVlZGVkLgogICAgIEFT
U0VSVChtX2J1ZmZlcik7ICAvLyBQYXJlbnQgc2hvdWxkIHNldCB0aGlzIGJlZm9yZSBhc2tpbmcg
dXMgdG8gZGVjb2RlIQogICAgIGlmIChtX2J1ZmZlci0+c3RhdHVzKCkgPT0gSW1hZ2VGcmFtZTo6
RnJhbWVFbXB0eSkgewotICAgICAgICBpZiAoIW1fYnVmZmVyLT5zZXRTaXplKG1fcGFyZW50LT5z
aXplKCkud2lkdGgoKSwgbV9wYXJlbnQtPnNpemUoKS5oZWlnaHQoKSkpCisgICAgICAgIGlmICgh
bV9idWZmZXItPnNldFNpemUobV9wYXJlbnQtPnNpemUoKSwgbV9wYXJlbnQtPnByZW11bHRpcGx5
QWxwaGEoKSkpCiAgICAgICAgICAgICByZXR1cm4gbV9wYXJlbnQtPnNldEZhaWxlZCgpOyAvLyBV
bmFibGUgdG8gYWxsb2NhdGUuCiAgICAgICAgIG1fYnVmZmVyLT5zZXRTdGF0dXMoSW1hZ2VGcmFt
ZTo6RnJhbWVQYXJ0aWFsKTsKICAgICAgICAgLy8gc2V0U2l6ZSgpIGNhbGxzIGVyYXNlQVJHQigp
LCB3aGljaCByZXNldHMgdGhlIGFscGhhIGZsYWcsIHNvIHdlIGZvcmNlCkBAIC04Niw5ICs4Niw2
IEBAIGJvb2wgQk1QSW1hZ2VSZWFkZXI6OmRlY29kZUJNUChib29sIG9ubHlTaXplKQogICAgICAg
ICAvLyB0aGVzZSAwcyBjb3VsZCBhY3R1YWxseSBzaG93IHRocm91Z2guCiAgICAgICAgIG1fYnVm
ZmVyLT5zZXRIYXNBbHBoYShmYWxzZSk7CiAKLSAgICAgICAgLy8gRm9yIEJNUHMsIHRoZSBmcmFt
ZSBhbHdheXMgZmlsbHMgdGhlIGVudGlyZSBpbWFnZS4KLSAgICAgICAgbV9idWZmZXItPnNldE9y
aWdpbmFsRnJhbWVSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgbV9wYXJlbnQtPnNpemUoKSkpOwot
CiAgICAgICAgIGlmICghbV9pc1RvcERvd24pCiAgICAgICAgICAgICBtX2Nvb3JkLnNldFkobV9w
YXJlbnQtPnNpemUoKS5oZWlnaHQoKSAtIDEpOwogICAgIH0KQEAgLTE3MSw3ICsxNjgsNyBAQCBi
b29sIEJNUEltYWdlUmVhZGVyOjpwcm9jZXNzSW5mb0hlYWRlcigpCiAgICAgICAgIHJldHVybiBt
X3BhcmVudC0+c2V0RmFpbGVkKCk7CiAKICAgICAvLyBTZXQgb3VyIHNpemUuCi0gICAgaWYgKCFt
X3BhcmVudC0+c2V0U2l6ZShtX2luZm9IZWFkZXIuYmlXaWR0aCwgbV9pbmZvSGVhZGVyLmJpSGVp
Z2h0KSkKKyAgICBpZiAoIW1fcGFyZW50LT5zZXRTaXplKEludFNpemUobV9pbmZvSGVhZGVyLmJp
V2lkdGgsIG1faW5mb0hlYWRlci5iaUhlaWdodCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICAvLyBGb3IgcGFsZXR0ZWQgaW1hZ2VzLCBiaXRtYXBzIGNhbiBzZXQgYmlDbHJVc2VkIHRv
IDAgdG8gbWVhbiAiYWxsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9jYWlyby9CaXRtYXBQaXhlbHNDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9CaXRtYXBQaXhlbHNDYWlyby5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNWFhZjhhMGEzNmIxOGNiZjcyNzdkMmMyZTI2ZWI0MTcxMjU2MDBkNQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0Jp
dG1hcFBpeGVsc0NhaXJvLmNwcApAQCAtMCwwICsxLDQwIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiQml0bWFwUGl4ZWxzLmgiCisKKyNpbmNsdWRlIDxjYWlyby5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK05hdGl2ZUltYWdlUHRyIEJpdG1hcFBpeGVsczo6aW1hZ2UoKSBjb25zdAorewor
ICAgIHJldHVybiBhZG9wdFJlZihjYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZV9mb3JfZGF0YSgK
KyAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBjaGFyKj4oY29uc3RfY2FzdDxSR0JB
MzIqPihtX3BpeGVscykpLAorICAgICAgICBDQUlST19GT1JNQVRfQVJHQjMyLCBzaXplKCkud2lk
dGgoKSwgc2l6ZSgpLmhlaWdodCgpLCBzaXplKCkud2lkdGgoKSAqIHNpemVvZihSR0JBMzIpKSk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdlRGVjb2RlckNhaXJvLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdlRGVjb2RlckNh
aXJvLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2I0MTI5NWY4NTczNThmYmJm
MzVjMWIwNTI1ZThkNmNjMzUyMGY1OC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWly
by9JbWFnZURlY29kZXJDYWlyby5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiSW1hZ2VEZWNvZGVyLmgiCi0KLSNpbmNsdWRlIDxjYWlyby5o
PgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLU5hdGl2ZUltYWdlUHRyIEltYWdlRnJhbWU6OmFz
TmV3TmF0aXZlSW1hZ2UoKSBjb25zdAotewotICAgIHJldHVybiBhZG9wdFJlZihjYWlyb19pbWFn
ZV9zdXJmYWNlX2NyZWF0ZV9mb3JfZGF0YSgKLSAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx1bnNp
Z25lZCBjaGFyKj4oY29uc3RfY2FzdDxQaXhlbERhdGEqPihtX2J5dGVzKSksCi0gICAgICAgIENB
SVJPX0ZPUk1BVF9BUkdCMzIsIHdpZHRoKCksIGhlaWdodCgpLCB3aWR0aCgpICogc2l6ZW9mKFBp
eGVsRGF0YSkpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VE
ZWNvZGVyLmNwcAppbmRleCA5Zjk5MmE3YmUxZDY2NzIyNjc1YzJlODU0YWQxODkxZTYwZjg1Nzdj
Li5mOTNhYTkwMzgxNzc3YjFlZjdkNjI5N2FlMDg2NzY2MGRlZGQ5NDUxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lG
SW1hZ2VEZWNvZGVyLmNwcApAQCAtNjAsMTIgKzYwLDEyIEBAIGJvb2wgR0lGSW1hZ2VEZWNvZGVy
Ojppc1NpemVBdmFpbGFibGUoKQogICAgIHJldHVybiBJbWFnZURlY29kZXI6OmlzU2l6ZUF2YWls
YWJsZSgpOwogfQogCi1ib29sIEdJRkltYWdlRGVjb2Rlcjo6c2V0U2l6ZSh1bnNpZ25lZCB3aWR0
aCwgdW5zaWduZWQgaGVpZ2h0KQorYm9vbCBHSUZJbWFnZURlY29kZXI6OnNldFNpemUoY29uc3Qg
SW50U2l6ZSYgc2l6ZSkKIHsKLSAgICBpZiAoSW1hZ2VEZWNvZGVyOjppc1NpemVBdmFpbGFibGUo
KSAmJiBzaXplKCkgPT0gSW50U2l6ZSh3aWR0aCwgaGVpZ2h0KSkKKyAgICBpZiAoSW1hZ2VEZWNv
ZGVyOjppc1NpemVBdmFpbGFibGUoKSAmJiB0aGlzLT5zaXplKCkgPT1zaXplKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKIAotICAgIGlmICghSW1hZ2VEZWNvZGVyOjpzZXRTaXplKHdpZHRoLCBoZWln
aHQpKQorICAgIGlmICghSW1hZ2VEZWNvZGVyOjpzZXRTaXplKHNpemUpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICBwcmVwYXJlU2NhbGVEYXRhSWZOZWNlc3NhcnkoKTsKQEAgLTIxMywx
MCArMjEzLDEwIEBAIGJvb2wgR0lGSW1hZ2VEZWNvZGVyOjpoYXZlRGVjb2RlZFJvdyh1bnNpZ25l
ZCBmcmFtZUluZGV4LCBjb25zdCBWZWN0b3I8dW5zaWduZWQKIAogICAgIC8vIEluaXRpYWxpemUg
dGhlIGZyYW1lIGlmIG5lY2Vzc2FyeS4KICAgICBJbWFnZUZyYW1lJiBidWZmZXIgPSBtX2ZyYW1l
QnVmZmVyQ2FjaGVbZnJhbWVJbmRleF07Ci0gICAgaWYgKCgoYnVmZmVyLnN0YXR1cygpID09IElt
YWdlRnJhbWU6OkZyYW1lRW1wdHkpICYmICFpbml0RnJhbWVCdWZmZXIoZnJhbWVJbmRleCkpIHx8
ICFidWZmZXIuaGFzUGl4ZWxEYXRhKCkpCisgICAgaWYgKCgoYnVmZmVyLnN0YXR1cygpID09IElt
YWdlRnJhbWU6OkZyYW1lRW1wdHkpICYmICFpbml0RnJhbWVCdWZmZXIoZnJhbWVJbmRleCkpIHx8
ICFidWZmZXIuaGFzUGl4ZWxzKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEltYWdl
RnJhbWU6OlBpeGVsRGF0YSogY3VycmVudEFkZHJlc3MgPSBidWZmZXIuZ2V0QWRkcih4QmVnaW4s
IHlCZWdpbik7CisgICAgUkdCQTMyKiBjdXJyZW50QWRkcmVzcyA9IGJ1ZmZlci5nZXRBZGRyKHhC
ZWdpbiwgeUJlZ2luKTsKICAgICAvLyBXcml0ZSBvbmUgcm93J3Mgd29ydGggb2YgZGF0YSBpbnRv
IHRoZSBmcmFtZS4gIAogICAgIGZvciAoaW50IHggPSB4QmVnaW47IHggPCB4RW5kOyArK3gpIHsK
ICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciBzb3VyY2VWYWx1ZSA9IHJvd0J1ZmZlclsobV9z
Y2FsZWQgPyBtX3NjYWxlZENvbHVtbnNbeF0gOiB4KSAtIGZyYW1lQ29udGV4dC0+eE9mZnNldF07
CkBAIC0yNjAsNyArMjYwLDcgQEAgYm9vbCBHSUZJbWFnZURlY29kZXI6OmZyYW1lQ29tcGxldGUo
dW5zaWduZWQgZnJhbWVJbmRleCwgdW5zaWduZWQgZnJhbWVEdXJhdGlvbiwKICAgICBpZiAoIW1f
Y3VycmVudEJ1ZmZlclNhd0FscGhhKSB7CiAgICAgICAgIC8vIFRoZSB3aG9sZSBmcmFtZSB3YXMg
bm9uLXRyYW5zcGFyZW50LCBzbyBpdCdzIHBvc3NpYmxlIHRoYXQgdGhlIGVudGlyZQogICAgICAg
ICAvLyByZXN1bHRpbmcgYnVmZmVyIHdhcyBub24tdHJhbnNwYXJlbnQsIGFuZCB3ZSBjYW4gc2V0
SGFzQWxwaGEoZmFsc2UpLgotICAgICAgICBpZiAoYnVmZmVyLm9yaWdpbmFsRnJhbWVSZWN0KCku
Y29udGFpbnMoSW50UmVjdChJbnRQb2ludCgpLCBzY2FsZWRTaXplKCkpKSkKKyAgICAgICAgaWYg
KGJ1ZmZlci5waXhlbHMoKS0+cmVjdCgpLmNvbnRhaW5zKEludFJlY3QoSW50UG9pbnQoKSwgc2Nh
bGVkU2l6ZSgpKSkpCiAgICAgICAgICAgICBidWZmZXIuc2V0SGFzQWxwaGEoZmFsc2UpOwogICAg
ICAgICBlbHNlIGlmIChmcmFtZUluZGV4KSB7CiAgICAgICAgICAgICAvLyBUcmlja3kgY2FzZS4g
IFRoaXMgZnJhbWUgZG9lcyBub3QgaGF2ZSBhbHBoYSBvbmx5IGlmIGV2ZXJ5d2hlcmUKQEAgLTI4
Myw3ICsyODMsNyBAQCBib29sIEdJRkltYWdlRGVjb2Rlcjo6ZnJhbWVDb21wbGV0ZSh1bnNpZ25l
ZCBmcmFtZUluZGV4LCB1bnNpZ25lZCBmcmFtZUR1cmF0aW9uLAogICAgICAgICAgICAgLy8gVGhl
IG9ubHkgcmVtYWluaW5nIGNhc2UgaXMgYSBEaXNwb3NlT3ZlcndyaXRlQmdjb2xvciBmcmFtZS4g
IElmCiAgICAgICAgICAgICAvLyBpdCBoYWQgbm8gYWxwaGEsIGFuZCBpdHMgcmVjdCBpcyBjb250
YWluZWQgaW4gdGhlIGN1cnJlbnQgZnJhbWUncwogICAgICAgICAgICAgLy8gcmVjdCwgd2Uga25v
dyB0aGUgY3VycmVudCBmcmFtZSBoYXMgbm8gYWxwaGEuCi0gICAgICAgICAgICBpZiAoKHByZXZC
dWZmZXItPmRpc3Bvc2FsTWV0aG9kKCkgPT0gSW1hZ2VGcmFtZTo6RGlzcG9zZU92ZXJ3cml0ZUJn
Y29sb3IpICYmICFwcmV2QnVmZmVyLT5oYXNBbHBoYSgpICYmIGJ1ZmZlci5vcmlnaW5hbEZyYW1l
UmVjdCgpLmNvbnRhaW5zKHByZXZCdWZmZXItPm9yaWdpbmFsRnJhbWVSZWN0KCkpKQorICAgICAg
ICAgICAgaWYgKChwcmV2QnVmZmVyLT5kaXNwb3NhbE1ldGhvZCgpID09IEltYWdlRnJhbWU6OkRp
c3Bvc2VPdmVyd3JpdGVCZ2NvbG9yKSAmJiAhcHJldkJ1ZmZlci0+aGFzQWxwaGEoKSAmJiBidWZm
ZXIucGl4ZWxzKCktPnJlY3QoKS5jb250YWlucyhwcmV2QnVmZmVyLT5waXhlbHMoKS0+cmVjdCgp
KSkKICAgICAgICAgICAgICAgICBidWZmZXIuc2V0SGFzQWxwaGEoZmFsc2UpOwogICAgICAgICB9
CiAgICAgfQpAQCAtMzIxLDEwICszMjEsNyBAQCB2b2lkIEdJRkltYWdlRGVjb2Rlcjo6ZGVjb2Rl
KHVuc2lnbmVkIGhhbHRBdEZyYW1lLCBHSUZRdWVyeSBxdWVyeSkKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIGNvbnN0IHNpemVfdCBvbGRTaXplID0gbV9mcmFtZUJ1ZmZlckNhY2hlLnNp
emUoKTsKICAgICBtX2ZyYW1lQnVmZmVyQ2FjaGUucmVzaXplKG1fcmVhZGVyLT5pbWFnZXNDb3Vu
dCgpKTsKLSAgICBmb3IgKHNpemVfdCBpID0gb2xkU2l6ZTsgaSA8IG1fcmVhZGVyLT5pbWFnZXND
b3VudCgpOyArK2kpCi0gICAgICAgIG1fZnJhbWVCdWZmZXJDYWNoZVtpXS5zZXRQcmVtdWx0aXBs
eUFscGhhKG1fcHJlbXVsdGlwbHlBbHBoYSk7CiAKICAgICBpZiAocXVlcnkgPT0gR0lGRnJhbWVD
b3VudFF1ZXJ5KQogICAgICAgICByZXR1cm47CkBAIC0zMzMsNiArMzMwLDEyIEBAIHZvaWQgR0lG
SW1hZ2VEZWNvZGVyOjpkZWNvZGUodW5zaWduZWQgaGFsdEF0RnJhbWUsIEdJRlF1ZXJ5IHF1ZXJ5
KQogICAgICAgICBzZXRGYWlsZWQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICAKKyAg
ICBpbnQgbGVmdCA9IHVwcGVyQm91bmRTY2FsZWRYKGZyYW1lUmVjdC54KCkpOworICAgIGludCBy
aWdodCA9IGxvd2VyQm91bmRTY2FsZWRYKGZyYW1lUmVjdC5tYXhYKCksIGxlZnQpOworICAgIGlu
dCB0b3AgPSB1cHBlckJvdW5kU2NhbGVkWShmcmFtZVJlY3QueSgpKTsKKyAgICBpbnQgYm90dG9t
ID0gbG93ZXJCb3VuZFNjYWxlZFkoZnJhbWVSZWN0Lm1heFkoKSwgdG9wKTsKKyAgICBidWZmZXIt
PnBpeGVscygpLT5zZXRSZWN0KEludFJlY3QobGVmdCwgdG9wLCByaWdodCAtIGxlZnQsIGJvdHRv
bSAtIHRvcCkpOwogCiAgICAgLy8gSXQgaXMgYWxzbyBhIGZhdGFsIGVycm9yIGlmIGFsbCBkYXRh
IGlzIHJlY2VpdmVkIGJ1dCB3ZSBmYWlsZWQgdG8gZGVjb2RlCiAgICAgLy8gYWxsIGZyYW1lcyBj
b21wbGV0ZWx5LgpAQCAtMzUzLDE1ICszNTYsMTAgQEAgYm9vbCBHSUZJbWFnZURlY29kZXI6Omlu
aXRGcmFtZUJ1ZmZlcih1bnNpZ25lZCBmcmFtZUluZGV4KQogICAgICAgICBmcmFtZVJlY3Quc2V0
SGVpZ2h0KHNpemUoKS5oZWlnaHQoKSAtIGZyYW1lQ29udGV4dC0+eU9mZnNldCk7CiAKICAgICBJ
bWFnZUZyYW1lKiBjb25zdCBidWZmZXIgPSAmbV9mcmFtZUJ1ZmZlckNhY2hlW2ZyYW1lSW5kZXhd
OwotICAgIGludCBsZWZ0ID0gdXBwZXJCb3VuZFNjYWxlZFgoZnJhbWVSZWN0LngoKSk7Ci0gICAg
aW50IHJpZ2h0ID0gbG93ZXJCb3VuZFNjYWxlZFgoZnJhbWVSZWN0Lm1heFgoKSwgbGVmdCk7Ci0g
ICAgaW50IHRvcCA9IHVwcGVyQm91bmRTY2FsZWRZKGZyYW1lUmVjdC55KCkpOwotICAgIGludCBi
b3R0b20gPSBsb3dlckJvdW5kU2NhbGVkWShmcmFtZVJlY3QubWF4WSgpLCB0b3ApOwotICAgIGJ1
ZmZlci0+c2V0T3JpZ2luYWxGcmFtZVJlY3QoSW50UmVjdChsZWZ0LCB0b3AsIHJpZ2h0IC0gbGVm
dCwgYm90dG9tIC0gdG9wKSk7CiAKICAgICBpZiAoIWZyYW1lSW5kZXgpIHsKICAgICAgICAgLy8g
VGhpcyBpcyB0aGUgZmlyc3QgZnJhbWUsIHNvIHdlJ3JlIG5vdCByZWx5aW5nIG9uIGFueSBwcmV2
aW91cyBkYXRhLgotICAgICAgICBpZiAoIWJ1ZmZlci0+c2V0U2l6ZShzY2FsZWRTaXplKCkud2lk
dGgoKSwgc2NhbGVkU2l6ZSgpLmhlaWdodCgpKSkKKyAgICAgICAgaWYgKCFidWZmZXItPnNldFNp
emUoc2NhbGVkU2l6ZSgpLCBtX3ByZW11bHRpcGx5QWxwaGEpKQogICAgICAgICAgICAgcmV0dXJu
IHNldEZhaWxlZCgpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIFRoZSBzdGFydGluZyBzdGF0
ZSBmb3IgdGhpcyBmcmFtZSBkZXBlbmRzIG9uIHRoZSBwcmV2aW91cyBmcmFtZSdzCkBAIC0zODcs
MTIgKzM4NSwxMiBAQCBib29sIEdJRkltYWdlRGVjb2Rlcjo6aW5pdEZyYW1lQnVmZmVyKHVuc2ln
bmVkIGZyYW1lSW5kZXgpCiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvLyBXZSB3YW50
IHRvIGNsZWFyIHRoZSBwcmV2aW91cyBmcmFtZSB0byB0cmFuc3BhcmVudCwgd2l0aG91dAogICAg
ICAgICAgICAgLy8gYWZmZWN0aW5nIHBpeGVscyBpbiB0aGUgaW1hZ2Ugb3V0c2lkZSBvZiB0aGUg
ZnJhbWUuCi0gICAgICAgICAgICBjb25zdCBJbnRSZWN0JiBwcmV2UmVjdCA9IHByZXZCdWZmZXIt
Pm9yaWdpbmFsRnJhbWVSZWN0KCk7CisgICAgICAgICAgICBjb25zdCBJbnRSZWN0JiBwcmV2UmVj
dCA9IHByZXZCdWZmZXItPnBpeGVscygpLT5yZWN0KCk7CiAgICAgICAgICAgICBjb25zdCBJbnRT
aXplJiBidWZmZXJTaXplID0gc2NhbGVkU2l6ZSgpOwogICAgICAgICAgICAgaWYgKCFmcmFtZUlu
ZGV4IHx8IHByZXZSZWN0LmNvbnRhaW5zKEludFJlY3QoSW50UG9pbnQoKSwgc2NhbGVkU2l6ZSgp
KSkpIHsKICAgICAgICAgICAgICAgICAvLyBDbGVhcmluZyB0aGUgZmlyc3QgZnJhbWUsIG9yIGEg
ZnJhbWUgdGhlIHNpemUgb2YgdGhlIHdob2xlCiAgICAgICAgICAgICAgICAgLy8gaW1hZ2UsIHJl
c3VsdHMgaW4gYSBjb21wbGV0ZWx5IGVtcHR5IGltYWdlLgotICAgICAgICAgICAgICAgIGlmICgh
YnVmZmVyLT5zZXRTaXplKGJ1ZmZlclNpemUud2lkdGgoKSwgYnVmZmVyU2l6ZS5oZWlnaHQoKSkp
CisgICAgICAgICAgICAgICAgaWYgKCFidWZmZXItPnNldFNpemUoYnVmZmVyU2l6ZSwgbV9wcmVt
dWx0aXBseUFscGhhKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNldEZhaWxlZCgpOwog
ICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAvLyBDb3B5IHRoZSB3aG9sZSBw
cmV2aW91cyBidWZmZXIsIHRoZW4gY2xlYXIganVzdCBpdHMgZnJhbWUuCkBAIC00MDIsNiArNDAw
LDEyIEBAIGJvb2wgR0lGSW1hZ2VEZWNvZGVyOjppbml0RnJhbWVCdWZmZXIodW5zaWduZWQgZnJh
bWVJbmRleCkKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KKyAgICAKKyAgICBpbnQg
bGVmdCA9IHVwcGVyQm91bmRTY2FsZWRYKGZyYW1lUmVjdC54KCkpOworICAgIGludCByaWdodCA9
IGxvd2VyQm91bmRTY2FsZWRYKGZyYW1lUmVjdC5tYXhYKCksIGxlZnQpOworICAgIGludCB0b3Ag
PSB1cHBlckJvdW5kU2NhbGVkWShmcmFtZVJlY3QueSgpKTsKKyAgICBpbnQgYm90dG9tID0gbG93
ZXJCb3VuZFNjYWxlZFkoZnJhbWVSZWN0Lm1heFkoKSwgdG9wKTsKKyAgICBidWZmZXItPnBpeGVs
cygpLT5zZXRSZWN0KEludFJlY3QobGVmdCwgdG9wLCByaWdodCAtIGxlZnQsIGJvdHRvbSAtIHRv
cCkpOwogCiAgICAgLy8gVXBkYXRlIG91ciBzdGF0dXMgdG8gYmUgcGFydGlhbGx5IGNvbXBsZXRl
LgogICAgIGJ1ZmZlci0+c2V0U3RhdHVzKEltYWdlRnJhbWU6OkZyYW1lUGFydGlhbCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1h
Z2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYv
R0lGSW1hZ2VEZWNvZGVyLmgKaW5kZXggOTVlYzZkMGE3YjY5NjY1MmM3MDliN2I2MmQ0MWFhNGYz
YWI4ZjFlMC4uN2I4ZDg3Y2ZkNzIxYjMwOTA3MGM0OTk4OGYzNDVjOTAzNTRkYTVhMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdl
RGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dp
Zi9HSUZJbWFnZURlY29kZXIuaApAQCAtNDQsNyArNDQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIFN0cmluZyBmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuICJnaWYiOyB9CiAgICAgICAgIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEsIGJv
b2wgYWxsRGF0YVJlY2VpdmVkKSBvdmVycmlkZTsKICAgICAgICAgYm9vbCBpc1NpemVBdmFpbGFi
bGUoKSBvdmVycmlkZTsKLSAgICAgICAgYm9vbCBzZXRTaXplKHVuc2lnbmVkIHdpZHRoLCB1bnNp
Z25lZCBoZWlnaHQpIG92ZXJyaWRlOworICAgICAgICBib29sIHNldFNpemUoY29uc3QgSW50U2l6
ZSYpIG92ZXJyaWRlOwogICAgICAgICBzaXplX3QgZnJhbWVDb3VudCgpIG92ZXJyaWRlOwogICAg
ICAgICBpbnQgcmVwZXRpdGlvbkNvdW50KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgICAgIEltYWdl
RnJhbWUqIGZyYW1lQnVmZmVyQXRJbmRleChzaXplX3QgaW5kZXgpIG92ZXJyaWRlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdl
UmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9H
SUZJbWFnZVJlYWRlci5jcHAKaW5kZXggMDBkMjUyY2VmYjA1YWE1MWY4NGQ4ZGY5OTAyMjkwZWZk
NzEwNDIyZi4uYTNhNTQxNTU5MDJhMzE2NDFkOTA3NDZhYWIxODdiNjM5MWQ0MjY3YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdl
UmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9n
aWYvR0lGSW1hZ2VSZWFkZXIuY3BwCkBAIC00NDcsNyArNDQ3LDcgQEAgYm9vbCBHSUZJbWFnZVJl
YWRlcjo6cGFyc2Uoc2l6ZV90IGRhdGFQb3NpdGlvbiwgc2l6ZV90IGxlbiwgYm9vbCBwYXJzZVNp
emVPbmx5KQogCiAgICAgICAgICAgICAvLyBDQUxMQkFDSzogSW5mb3JtIHRoZSBkZWNvZGVycGx1
Z2luIG9mIG91ciBzaXplLgogICAgICAgICAgICAgLy8gTm90ZTogQSBzdWJzZXF1ZW50IGZyYW1l
IG1pZ2h0IGhhdmUgZGltZW5zaW9ucyBsYXJnZXIgdGhhbiB0aGUgInNjcmVlbiIgZGltZW5zaW9u
cy4KLSAgICAgICAgICAgIGlmIChtX2NsaWVudCAmJiAhbV9jbGllbnQtPnNldFNpemUobV9zY3Jl
ZW5XaWR0aCwgbV9zY3JlZW5IZWlnaHQpKQorICAgICAgICAgICAgaWYgKG1fY2xpZW50ICYmICFt
X2NsaWVudC0+c2V0U2l6ZShJbnRTaXplKG1fc2NyZWVuV2lkdGgsIG1fc2NyZWVuSGVpZ2h0KSkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgICAgICBtX3NjcmVlbkJn
Y29sb3IgPSBjdXJyZW50Q29tcG9uZW50WzVdOwpAQCAtNjY0LDcgKzY2NCw3IEBAIGJvb2wgR0lG
SW1hZ2VSZWFkZXI6OnBhcnNlKHNpemVfdCBkYXRhUG9zaXRpb24sIHNpemVfdCBsZW4sIGJvb2wg
cGFyc2VTaXplT25seSkKICAgICAgICAgICAgICAgICB5T2Zmc2V0ID0gMDsKIAogICAgICAgICAg
ICAgICAgIC8vIENBTExCQUNLOiBJbmZvcm0gdGhlIGRlY29kZXJwbHVnaW4gb2Ygb3VyIHNpemUu
Ci0gICAgICAgICAgICAgICAgaWYgKG1fY2xpZW50ICYmICFtX2NsaWVudC0+c2V0U2l6ZShtX3Nj
cmVlbldpZHRoLCBtX3NjcmVlbkhlaWdodCkpCisgICAgICAgICAgICAgICAgaWYgKG1fY2xpZW50
ICYmICFtX2NsaWVudC0+c2V0U2l6ZShJbnRTaXplKG1fc2NyZWVuV2lkdGgsIG1fc2NyZWVuSGVp
Z2h0KSkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNv
L0lDT0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBhNTkyMDFiNTZlNWIyMmUyYTg1MWMw
Yzk5MmVhNGIxZjg4Y2MzYjRmLi42NmNmMTkxOTQzOGJjMDNjMTM5MWJlZWExNjQwNzU0MWMxYWY4
NmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9p
Y28vSUNPSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcApAQCAtODgsMjEgKzg4LDIwIEBAIElu
dFNpemUgSUNPSW1hZ2VEZWNvZGVyOjpmcmFtZVNpemVBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vi
c2FtcGxpbmdMZXZlbCkKICAgICByZXR1cm4gKGluZGV4ICYmIChpbmRleCA8IG1fZGlyRW50cmll
cy5zaXplKCkpKSA/IG1fZGlyRW50cmllc1tpbmRleF0ubV9zaXplIDogc2l6ZSgpOwogfQogCi1i
b29sIElDT0ltYWdlRGVjb2Rlcjo6c2V0U2l6ZSh1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVp
Z2h0KQorYm9vbCBJQ09JbWFnZURlY29kZXI6OnNldFNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkK
IHsKICAgICAvLyBUaGUgc2l6ZSBjYWxjdWxhdGVkIGluc2lkZSB0aGUgQk1QSW1hZ2VSZWFkZXIg
aGFkIGJldHRlciBtYXRjaCB0aGUgb25lIGluCiAgICAgLy8gdGhlIGljb24gZGlyZWN0b3J5Lgot
ICAgIHJldHVybiBtX2ZyYW1lU2l6ZS5pc0VtcHR5KCkgPyBJbWFnZURlY29kZXI6OnNldFNpemUo
d2lkdGgsIGhlaWdodCkgOiAoKEludFNpemUod2lkdGgsIGhlaWdodCkgPT0gbV9mcmFtZVNpemUp
IHx8IHNldEZhaWxlZCgpKTsKKyAgICByZXR1cm4gbV9mcmFtZVNpemUuaXNFbXB0eSgpID8gSW1h
Z2VEZWNvZGVyOjpzZXRTaXplKHNpemUpIDogKChzaXplID09IG1fZnJhbWVTaXplKSB8fCBzZXRG
YWlsZWQoKSk7CiB9CiAKIHNpemVfdCBJQ09JbWFnZURlY29kZXI6OmZyYW1lQ291bnQoKQogewog
ICAgIGRlY29kZSgwLCB0cnVlKTsKLSAgICBpZiAobV9mcmFtZUJ1ZmZlckNhY2hlLmlzRW1wdHko
KSkgeworCisgICAgaWYgKG1fZnJhbWVCdWZmZXJDYWNoZS5pc0VtcHR5KCkpCiAgICAgICAgIG1f
ZnJhbWVCdWZmZXJDYWNoZS5yZXNpemUobV9kaXJFbnRyaWVzLnNpemUoKSk7Ci0gICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9kaXJFbnRyaWVzLnNpemUoKTsgKytpKQotICAgICAgICAg
ICAgbV9mcmFtZUJ1ZmZlckNhY2hlW2ldLnNldFByZW11bHRpcGx5QWxwaGEobV9wcmVtdWx0aXBs
eUFscGhhKTsKLSAgICB9CisKICAgICAvLyBDQVVUSU9OOiBXZSBtdXN0IG5vdCByZXNpemUgbV9m
cmFtZUJ1ZmZlckNhY2hlIGFnYWluIGFmdGVyIHRoaXMsIGFzCiAgICAgLy8gZGVjb2RlQXRJbmRl
eCgpIG1heSBnaXZlIGEgQk1QSW1hZ2VSZWFkZXIgYSBwb2ludGVyIHRvIG9uZSBvZiB0aGUKICAg
ICAvLyBlbnRyaWVzLgpAQCAtMjc5LDcgKzI3OCw3IEBAIGJvb2wgSUNPSW1hZ2VEZWNvZGVyOjpw
cm9jZXNzRGlyZWN0b3J5RW50cmllcygpCiAgICAgY29uc3QgSWNvbkRpcmVjdG9yeUVudHJ5JiBk
aXJFbnRyeSA9IG1fZGlyRW50cmllcy5maXJzdCgpOwogICAgIC8vIFRlY2huaWNhbGx5LCB0aGlz
IG5leHQgY2FsbCBzaG91bGRuJ3QgYmUgYWJsZSB0byBmYWlsLCBzaW5jZSB0aGUgd2lkdGgKICAg
ICAvLyBhbmQgaGVpZ2h0IGhlcmUgYXJlIGVhY2ggPD0gMjU2LCBhbmQgfG1fZnJhbWVTaXplfCBp
cyBlbXB0eS4KLSAgICByZXR1cm4gc2V0U2l6ZShkaXJFbnRyeS5tX3NpemUud2lkdGgoKSwgZGly
RW50cnkubV9zaXplLmhlaWdodCgpKTsKKyAgICByZXR1cm4gc2V0U2l6ZShkaXJFbnRyeS5tX3Np
emUpOwogfQogCiBJQ09JbWFnZURlY29kZXI6Okljb25EaXJlY3RvcnlFbnRyeSBJQ09JbWFnZURl
Y29kZXI6OnJlYWREaXJlY3RvcnlFbnRyeSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmgKaW5kZXgg
NTgwYzY3YTg4M2E0MGI2ZTU0MjBmNjVhZTM0NDg4NDU3NDE5MzhlYy4uZDMzZDA1OGExNTk2MDdk
Zjg5MzljZWExY2Q3YTZmMzE0NGI3MjJlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuaApAQCAt
NDksNyArNDksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgaXNTaXplQXZh
aWxhYmxlKCkgb3ZlcnJpZGU7CiAgICAgICAgIEludFNpemUgc2l6ZSgpIG92ZXJyaWRlOwogICAg
ICAgICBJbnRTaXplIGZyYW1lU2l6ZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsKSBv
dmVycmlkZTsKLSAgICAgICAgYm9vbCBzZXRTaXplKHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBo
ZWlnaHQpIG92ZXJyaWRlOworICAgICAgICBib29sIHNldFNpemUoY29uc3QgSW50U2l6ZSYpIG92
ZXJyaWRlOwogICAgICAgICBzaXplX3QgZnJhbWVDb3VudCgpIG92ZXJyaWRlOwogICAgICAgICBJ
bWFnZUZyYW1lKiBmcmFtZUJ1ZmZlckF0SW5kZXgoc2l6ZV90KSBvdmVycmlkZTsKICAgICAgICAg
Ly8gQ0FVVElPTjogc2V0RmFpbGVkKCkgZGVsZXRlcyBhbGwgcmVhZGVycyBhbmQgZGVjb2RlcnMu
ICBCZSBjYXJlZnVsIHRvCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBlZTY2
YWMxNGQ0YmUwN2NhOWFmZmIyYTNhZmY4OWViZmE2MmZiMTJlLi43ZTNkZDg4ZjVmMmI0MWYzM2Ni
NzA0NzJkOGFhNmEzYzk2YzAwNDQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAK
QEAgLTE5NiwzNiArMTk2LDYgQEAgc3RhdGljIEltYWdlT3JpZW50YXRpb24gcmVhZEltYWdlT3Jp
ZW50YXRpb24oanBlZ19kZWNvbXByZXNzX3N0cnVjdCogaW5mbykKICAgICByZXR1cm4gSW1hZ2VP
cmllbnRhdGlvbigpOwogfQogCi1zdGF0aWMgQ29sb3JQcm9maWxlIHJlYWRDb2xvclByb2ZpbGUo
anBlZ19kZWNvbXByZXNzX3N0cnVjdCogaW5mbykKLXsKLSNpZiBVU0UoSUNDSlBFRykKLSAgICBK
T0NURVQqIHByb2ZpbGU7Ci0gICAgdW5zaWduZWQgaW50IHByb2ZpbGVMZW5ndGg7Ci0KLSAgICBp
ZiAoIXJlYWRfaWNjX3Byb2ZpbGUoaW5mbywgJnByb2ZpbGUsICZwcm9maWxlTGVuZ3RoKSkKLSAg
ICAgICAgcmV0dXJuIENvbG9yUHJvZmlsZSgpOwotCi0gICAgLy8gT25seSBhY2NlcHQgUkdCIGNv
bG9yIHByb2ZpbGVzIGZyb20gaW5wdXQgY2xhc3MgZGV2aWNlcy4KLSAgICBib29sIGlnbm9yZVBy
b2ZpbGUgPSBmYWxzZTsKLSAgICBjaGFyKiBwcm9maWxlRGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8
Y2hhcio+KHByb2ZpbGUpOwotICAgIGlmIChwcm9maWxlTGVuZ3RoIDwgSW1hZ2VEZWNvZGVyOjpp
Y2NDb2xvclByb2ZpbGVIZWFkZXJMZW5ndGgpCi0gICAgICAgIGlnbm9yZVByb2ZpbGUgPSB0cnVl
OwotICAgIGVsc2UgaWYgKCFJbWFnZURlY29kZXI6OnJnYkNvbG9yUHJvZmlsZShwcm9maWxlRGF0
YSwgcHJvZmlsZUxlbmd0aCkpCi0gICAgICAgIGlnbm9yZVByb2ZpbGUgPSB0cnVlOwotICAgIGVs
c2UgaWYgKCFJbWFnZURlY29kZXI6OmlucHV0RGV2aWNlQ29sb3JQcm9maWxlKHByb2ZpbGVEYXRh
LCBwcm9maWxlTGVuZ3RoKSkKLSAgICAgICAgaWdub3JlUHJvZmlsZSA9IHRydWU7Ci0KLSAgICBD
b2xvclByb2ZpbGUgY29sb3JQcm9maWxlOwotICAgIGlmICghaWdub3JlUHJvZmlsZSkKLSAgICAg
ICAgY29sb3JQcm9maWxlLmFwcGVuZChwcm9maWxlRGF0YSwgcHJvZmlsZUxlbmd0aCk7Ci0gICAg
ZnJlZShwcm9maWxlKTsKLSAgICByZXR1cm4gY29sb3JQcm9maWxlOwotI2Vsc2UKLSAgICBVTlVT
RURfUEFSQU0oaW5mbyk7Ci0gICAgcmV0dXJuIENvbG9yUHJvZmlsZSgpOwotI2VuZGlmCi19Ci0K
IGNsYXNzIEpQRUdJbWFnZVJlYWRlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CkBAIC0zNTIsNyArMzIyLDcgQEAgcHVibGljOgogICAgICAgICAgICAgbV9zdGF0ZSA9
IEpQRUdfU1RBUlRfREVDT01QUkVTUzsKIAogICAgICAgICAgICAgLy8gV2UgY2FuIGZpbGwgaW4g
dGhlIHNpemUgbm93IHRoYXQgdGhlIGhlYWRlciBpcyBhdmFpbGFibGUuCi0gICAgICAgICAgICBp
ZiAoIW1fZGVjb2Rlci0+c2V0U2l6ZShtX2luZm8uaW1hZ2Vfd2lkdGgsIG1faW5mby5pbWFnZV9o
ZWlnaHQpKQorICAgICAgICAgICAgaWYgKCFtX2RlY29kZXItPnNldFNpemUoSW50U2l6ZShtX2lu
Zm8uaW1hZ2Vfd2lkdGgsIG1faW5mby5pbWFnZV9oZWlnaHQpKSkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKICAgICAgICAgICAgIG1fZGVjb2Rlci0+c2V0T3JpZW50YXRpb24ocmVh
ZEltYWdlT3JpZW50YXRpb24oaW5mbygpKSk7CkBAIC0zNjMsMTMgKzMzMyw2IEBAIHB1YmxpYzoK
ICAgICAgICAgICAgIGlmIChtX2RlY29kZXItPndpbGxEb3duU2FtcGxlKCkgJiYgdHVyYm9Td2l6
emxlZChtX2luZm8ub3V0X2NvbG9yX3NwYWNlKSkKICAgICAgICAgICAgICAgICBtX2luZm8ub3V0
X2NvbG9yX3NwYWNlID0gSkNTX1JHQjsKICNlbmRpZgotICAgICAgICAgICAgLy8gQWxsb3cgY29s
b3IgbWFuYWdlbWVudCBvZiB0aGUgZGVjb2RlZCBSR0JBIHBpeGVscyBpZiBwb3NzaWJsZS4KLSAg
ICAgICAgICAgIGlmICghbV9kZWNvZGVyLT5pZ25vcmVzR2FtbWFBbmRDb2xvclByb2ZpbGUoKSkg
ewotICAgICAgICAgICAgICAgIENvbG9yUHJvZmlsZSByZ2JJbnB1dERldmljZUNvbG9yUHJvZmls
ZSA9IHJlYWRDb2xvclByb2ZpbGUoaW5mbygpKTsKLSAgICAgICAgICAgICAgICBpZiAoIXJnYklu
cHV0RGV2aWNlQ29sb3JQcm9maWxlLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICAgICAgbV9k
ZWNvZGVyLT5zZXRDb2xvclByb2ZpbGUocmdiSW5wdXREZXZpY2VDb2xvclByb2ZpbGUpOwotICAg
ICAgICAgICAgfQotCiAgICAgICAgICAgICAvLyBEb24ndCBhbGxvY2F0ZSBhIGdpYW50IGFuZCBz
dXBlcmZsdW91cyBtZW1vcnkgYnVmZmVyIHdoZW4gdGhlCiAgICAgICAgICAgICAvLyBpbWFnZSBp
cyBhIHNlcXVlbnRpYWwgSlBFRy4KICAgICAgICAgICAgIG1faW5mby5idWZmZXJlZF9pbWFnZSA9
IGpwZWdfaGFzX211bHRpcGxlX3NjYW5zKCZtX2luZm8pOwpAQCAtNTU2LDkgKzUxOSw5IEBAIGJv
b2wgSlBFR0ltYWdlRGVjb2Rlcjo6aXNTaXplQXZhaWxhYmxlKCkKICAgICByZXR1cm4gSW1hZ2VE
ZWNvZGVyOjppc1NpemVBdmFpbGFibGUoKTsKIH0KIAotYm9vbCBKUEVHSW1hZ2VEZWNvZGVyOjpz
ZXRTaXplKHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQpCitib29sIEpQRUdJbWFnZURl
Y29kZXI6OnNldFNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKLSAgICBpZiAoIUltYWdlRGVj
b2Rlcjo6c2V0U2l6ZSh3aWR0aCwgaGVpZ2h0KSkKKyAgICBpZiAoIUltYWdlRGVjb2Rlcjo6c2V0
U2l6ZShzaXplKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcHJlcGFyZVNjYWxlRGF0
YUlmTmVjZXNzYXJ5KCk7CkBAIC01NzAsMTAgKzUzMyw4IEBAIEltYWdlRnJhbWUqIEpQRUdJbWFn
ZURlY29kZXI6OmZyYW1lQnVmZmVyQXRJbmRleChzaXplX3QgaW5kZXgpCiAgICAgaWYgKGluZGV4
KQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGlmIChtX2ZyYW1lQnVmZmVyQ2FjaGUuaXNFbXB0
eSgpKSB7CisgICAgaWYgKG1fZnJhbWVCdWZmZXJDYWNoZS5pc0VtcHR5KCkpCiAgICAgICAgIG1f
ZnJhbWVCdWZmZXJDYWNoZS5yZXNpemUoMSk7Ci0gICAgICAgIG1fZnJhbWVCdWZmZXJDYWNoZVsw
XS5zZXRQcmVtdWx0aXBseUFscGhhKG1fcHJlbXVsdGlwbHlBbHBoYSk7Ci0gICAgfQogCiAgICAg
SW1hZ2VGcmFtZSYgZnJhbWUgPSBtX2ZyYW1lQnVmZmVyQ2FjaGVbMF07CiAgICAgaWYgKGZyYW1l
LnN0YXR1cygpICE9IEltYWdlRnJhbWU6OkZyYW1lQ29tcGxldGUpCkBAIC01ODgsNyArNTQ5LDcg
QEAgYm9vbCBKUEVHSW1hZ2VEZWNvZGVyOjpzZXRGYWlsZWQoKQogfQogCiB0ZW1wbGF0ZSA8Sl9D
T0xPUl9TUEFDRSBjb2xvclNwYWNlPgotdm9pZCBzZXRQaXhlbChJbWFnZUZyYW1lJiBidWZmZXIs
IEltYWdlRnJhbWU6OlBpeGVsRGF0YSogY3VycmVudEFkZHJlc3MsIEpTQU1QQVJSQVkgc2FtcGxl
cywgaW50IGNvbHVtbikKK3ZvaWQgc2V0UGl4ZWwoSW1hZ2VGcmFtZSYgYnVmZmVyLCBSR0JBMzIq
IGN1cnJlbnRBZGRyZXNzLCBKU0FNUEFSUkFZIHNhbXBsZXMsIGludCBjb2x1bW4pCiB7CiAgICAg
SlNBTVBMRSoganNhbXBsZSA9ICpzYW1wbGVzICsgY29sdW1uICogKGNvbG9yU3BhY2UgPT0gSkNT
X1JHQiA/IDMgOiA0KTsKIApAQCAtNjMxLDcgKzU5Miw3IEBAIGJvb2wgSlBFR0ltYWdlRGVjb2Rl
cjo6b3V0cHV0U2NhbmxpbmVzKEltYWdlRnJhbWUmIGJ1ZmZlcikKICAgICAgICAgaWYgKGRlc3RZ
IDwgMCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIEltYWdlRnJhbWU6OlBpeGVs
RGF0YSogY3VycmVudEFkZHJlc3MgPSBidWZmZXIuZ2V0QWRkcigwLCBkZXN0WSk7CisgICAgICAg
IFJHQkEzMiogY3VycmVudEFkZHJlc3MgPSBidWZmZXIuZ2V0QWRkcigwLCBkZXN0WSk7CiAgICAg
ICAgIGZvciAoaW50IHggPSAwOyB4IDwgd2lkdGg7ICsreCkgewogICAgICAgICAgICAgc2V0UGl4
ZWw8Y29sb3JTcGFjZT4oYnVmZmVyLCBjdXJyZW50QWRkcmVzcywgc2FtcGxlcywgaXNTY2FsZWQg
PyBtX3NjYWxlZENvbHVtbnNbeF0gOiB4KTsKICAgICAgICAgICAgICsrY3VycmVudEFkZHJlc3M7
CkBAIC02NTQsMTYgKzYxNSwxMiBAQCBib29sIEpQRUdJbWFnZURlY29kZXI6Om91dHB1dFNjYW5s
aW5lcygpCiAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgZnJhbWVidWZmZXIgaWYgbmVlZGVkLgogICAg
IEltYWdlRnJhbWUmIGJ1ZmZlciA9IG1fZnJhbWVCdWZmZXJDYWNoZVswXTsKICAgICBpZiAoYnVm
ZmVyLnN0YXR1cygpID09IEltYWdlRnJhbWU6OkZyYW1lRW1wdHkpIHsKLSAgICAgICAgaWYgKCFi
dWZmZXIuc2V0U2l6ZShzY2FsZWRTaXplKCkud2lkdGgoKSwgc2NhbGVkU2l6ZSgpLmhlaWdodCgp
KSkKKyAgICAgICAgaWYgKCFidWZmZXIuc2V0U2l6ZShzY2FsZWRTaXplKCksIG1fcHJlbXVsdGlw
bHlBbHBoYSkpCiAgICAgICAgICAgICByZXR1cm4gc2V0RmFpbGVkKCk7CiAgICAgICAgIGJ1ZmZl
ci5zZXRTdGF0dXMoSW1hZ2VGcmFtZTo6RnJhbWVQYXJ0aWFsKTsKICAgICAgICAgLy8gVGhlIGJ1
ZmZlciBpcyB0cmFuc3BhcmVudCBvdXRzaWRlIHRoZSBkZWNvZGVkIGFyZWEgd2hpbGUgdGhlIGlt
YWdlIGlzCiAgICAgICAgIC8vIGxvYWRpbmcuIFRoZSBjb21wbGV0ZWQgaW1hZ2Ugd2lsbCBiZSBt
YXJrZWQgZnVsbHkgb3BhcXVlIGluIGpwZWdDb21wbGV0ZSgpLgogICAgICAgICBidWZmZXIuc2V0
SGFzQWxwaGEodHJ1ZSk7Ci0gICAgICAgIGJ1ZmZlci5zZXRDb2xvclByb2ZpbGUobV9jb2xvclBy
b2ZpbGUpOwotCi0gICAgICAgIC8vIEZvciBKUEVHcywgdGhlIGZyYW1lIGFsd2F5cyBmaWxscyB0
aGUgZW50aXJlIGltYWdlLgotICAgICAgICBidWZmZXIuc2V0T3JpZ2luYWxGcmFtZVJlY3QoSW50
UmVjdChJbnRQb2ludCgpLCBzaXplKCkpKTsKICAgICB9CiAKICAgICBqcGVnX2RlY29tcHJlc3Nf
c3RydWN0KiBpbmZvID0gbV9yZWFkZXItPmluZm8oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVy
LmgKaW5kZXggNmMxZmMwNDI3MzIyMDM3NWJjNmEyNWVjMTk4ZjhjOGE1MTAxNDg2Yy4uZmMyM2Zi
ZDk2MzdiNTNhZWU2NjUzM2I2YWFiNGY3YjI2OGRjMGVjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VE
ZWNvZGVyLmgKQEAgLTUwLDcgKzUwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAv
LyBJbWFnZURlY29kZXIKICAgICAgICAgU3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gImpwZyI7IH0KICAgICAgICAgYm9vbCBpc1NpemVBdmFpbGFibGUo
KSBvdmVycmlkZTsKLSAgICAgICAgYm9vbCBzZXRTaXplKHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25l
ZCBoZWlnaHQpIG92ZXJyaWRlOworICAgICAgICBib29sIHNldFNpemUoY29uc3QgSW50U2l6ZSYp
IG92ZXJyaWRlOwogICAgICAgICBJbWFnZUZyYW1lKiBmcmFtZUJ1ZmZlckF0SW5kZXgoc2l6ZV90
IGluZGV4KSBvdmVycmlkZTsKICAgICAgICAgLy8gQ0FVVElPTjogc2V0RmFpbGVkKCkgZGVsZXRl
cyB8bV9yZWFkZXJ8LiAgQmUgY2FyZWZ1bCB0byBhdm9pZAogICAgICAgICAvLyBhY2Nlc3Npbmcg
ZGVsZXRlZCBtZW1vcnksIGVzcGVjaWFsbHkgd2hlbiBjYWxsaW5nIHRoaXMgZnJvbSBpbnNpZGUK
QEAgLTY2LDcgKzY2LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIG91dHB1
dFNjYW5saW5lcygpOwogICAgICAgICB2b2lkIGpwZWdDb21wbGV0ZSgpOwogCi0gICAgICAgIHZv
aWQgc2V0Q29sb3JQcm9maWxlKGNvbnN0IENvbG9yUHJvZmlsZSYgY29sb3JQcm9maWxlKSB7IG1f
Y29sb3JQcm9maWxlID0gY29sb3JQcm9maWxlOyB9CiAgICAgICAgIHZvaWQgc2V0T3JpZW50YXRp
b24oSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikgeyBtX29yaWVudGF0aW9uID0gb3JpZW50
YXRpb247IH0KIAogICAgIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwCmluZGV4
IGU2NDRhNzExMGVmY2I1NDBkODljZTFiYTgxMTAwYmM0ODIzYjE4ZjIuLjAzMGU4MGUxNTE0MmI3
ODNhNjYzYzRmZjgzMmU0YzI1ZmM1ZjAwZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3Bw
CkBAIC0yMzUsOSArMjM1LDkgQEAgYm9vbCBQTkdJbWFnZURlY29kZXI6OmlzU2l6ZUF2YWlsYWJs
ZSgpCiAgICAgcmV0dXJuIEltYWdlRGVjb2Rlcjo6aXNTaXplQXZhaWxhYmxlKCk7CiB9CiAKLWJv
b2wgUE5HSW1hZ2VEZWNvZGVyOjpzZXRTaXplKHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWln
aHQpCitib29sIFBOR0ltYWdlRGVjb2Rlcjo6c2V0U2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQog
ewotICAgIGlmICghSW1hZ2VEZWNvZGVyOjpzZXRTaXplKHdpZHRoLCBoZWlnaHQpKQorICAgIGlm
ICghSW1hZ2VEZWNvZGVyOjpzZXRTaXplKHNpemUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICBwcmVwYXJlU2NhbGVEYXRhSWZOZWNlc3NhcnkoKTsKQEAgLTI1NywxMCArMjU3LDggQEAg
SW1hZ2VGcmFtZSogUE5HSW1hZ2VEZWNvZGVyOjpmcmFtZUJ1ZmZlckF0SW5kZXgoc2l6ZV90IGlu
ZGV4KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICNlbmRpZgogCi0gICAgaWYgKG1fZnJhbWVC
dWZmZXJDYWNoZS5pc0VtcHR5KCkpIHsKKyAgICBpZiAobV9mcmFtZUJ1ZmZlckNhY2hlLmlzRW1w
dHkoKSkKICAgICAgICAgbV9mcmFtZUJ1ZmZlckNhY2hlLnJlc2l6ZSgxKTsKLSAgICAgICAgbV9m
cmFtZUJ1ZmZlckNhY2hlWzBdLnNldFByZW11bHRpcGx5QWxwaGEobV9wcmVtdWx0aXBseUFscGhh
KTsKLSAgICB9CiAKICAgICBJbWFnZUZyYW1lJiBmcmFtZSA9IG1fZnJhbWVCdWZmZXJDYWNoZVtp
bmRleF07CiAgICAgaWYgKGZyYW1lLnN0YXR1cygpICE9IEltYWdlRnJhbWU6OkZyYW1lQ29tcGxl
dGUpCkBAIC0yNzYsMzcgKzI3NCw2IEBAIGJvb2wgUE5HSW1hZ2VEZWNvZGVyOjpzZXRGYWlsZWQo
KQogICAgIHJldHVybiBJbWFnZURlY29kZXI6OnNldEZhaWxlZCgpOwogfQogCi1zdGF0aWMgdm9p
ZCByZWFkQ29sb3JQcm9maWxlKHBuZ19zdHJ1Y3RwIHBuZywgcG5nX2luZm9wIGluZm8sIENvbG9y
UHJvZmlsZSYgY29sb3JQcm9maWxlKQotewotICAgIEFTU0VSVChjb2xvclByb2ZpbGUuaXNFbXB0
eSgpKTsKLQotI2lmZGVmIFBOR19pQ0NQX1NVUFBPUlRFRAotICAgIGNoYXIqIHByb2ZpbGVOYW1l
OwotICAgIGludCBjb21wcmVzc2lvblR5cGU7Ci0jaWYgKFBOR19MSUJQTkdfVkVSIDwgMTA1MDAp
Ci0gICAgcG5nX2NoYXJwIHByb2ZpbGU7Ci0jZWxzZQotICAgIHBuZ19ieXRlcCBwcm9maWxlOwot
I2VuZGlmCi0gICAgcG5nX3VpbnRfMzIgcHJvZmlsZUxlbmd0aDsKLSAgICBpZiAoIXBuZ19nZXRf
aUNDUChwbmcsIGluZm8sICZwcm9maWxlTmFtZSwgJmNvbXByZXNzaW9uVHlwZSwgJnByb2ZpbGUs
ICZwcm9maWxlTGVuZ3RoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gT25seSBhY2NlcHQg
UkdCIGNvbG9yIHByb2ZpbGVzIGZyb20gaW5wdXQgY2xhc3MgZGV2aWNlcy4KLSAgICBib29sIGln
bm9yZVByb2ZpbGUgPSBmYWxzZTsKLSAgICBjaGFyKiBwcm9maWxlRGF0YSA9IHJlaW50ZXJwcmV0
X2Nhc3Q8Y2hhcio+KHByb2ZpbGUpOwotICAgIGlmIChwcm9maWxlTGVuZ3RoIDwgSW1hZ2VEZWNv
ZGVyOjppY2NDb2xvclByb2ZpbGVIZWFkZXJMZW5ndGgpCi0gICAgICAgIGlnbm9yZVByb2ZpbGUg
PSB0cnVlOwotICAgIGVsc2UgaWYgKCFJbWFnZURlY29kZXI6OnJnYkNvbG9yUHJvZmlsZShwcm9m
aWxlRGF0YSwgcHJvZmlsZUxlbmd0aCkpCi0gICAgICAgIGlnbm9yZVByb2ZpbGUgPSB0cnVlOwot
ICAgIGVsc2UgaWYgKCFJbWFnZURlY29kZXI6OmlucHV0RGV2aWNlQ29sb3JQcm9maWxlKHByb2Zp
bGVEYXRhLCBwcm9maWxlTGVuZ3RoKSkKLSAgICAgICAgaWdub3JlUHJvZmlsZSA9IHRydWU7Ci0K
LSAgICBpZiAoIWlnbm9yZVByb2ZpbGUpCi0gICAgICAgIGNvbG9yUHJvZmlsZS5hcHBlbmQocHJv
ZmlsZURhdGEsIHByb2ZpbGVMZW5ndGgpOwotI2VuZGlmCi19Ci0KIHZvaWQgUE5HSW1hZ2VEZWNv
ZGVyOjpoZWFkZXJBdmFpbGFibGUoKQogewogICAgIHBuZ19zdHJ1Y3RwIHBuZyA9IG1fcmVhZGVy
LT5wbmdQdHIoKTsKQEAgLTMyNiw3ICsyOTMsNyBAQCB2b2lkIFBOR0ltYWdlRGVjb2Rlcjo6aGVh
ZGVyQXZhaWxhYmxlKCkKICAgICAvLyB3aWxsIGNlYXNlIHRvIGV4aXN0LiAgTm90ZSB0aGF0IHdl
J2xsIHN0aWxsIHByb3Blcmx5IHNldCB0aGUgZmFpbHVyZSBmbGFnCiAgICAgLy8gaW4gdGhpcyBj
YXNlIGFzIHNvb24gYXMgd2UgbG9uZ2ptcCgpLgogICAgIG1fZG9Ob3RoaW5nT25GYWlsdXJlID0g
dHJ1ZTsKLSAgICBib29sIHJlc3VsdCA9IHNldFNpemUod2lkdGgsIGhlaWdodCk7CisgICAgYm9v
bCByZXN1bHQgPSBzZXRTaXplKEludFNpemUod2lkdGgsIGhlaWdodCkpOwogICAgIG1fZG9Ob3Ro
aW5nT25GYWlsdXJlID0gZmFsc2U7CiAgICAgaWYgKCFyZXN1bHQpIHsKICAgICAgICAgbG9uZ2pt
cChKTVBCVUYocG5nKSwgMSk7CkBAIC00MDUsMTYgKzM3Miw2IEBAIHZvaWQgUE5HSW1hZ2VEZWNv
ZGVyOjpoZWFkZXJBdmFpbGFibGUoKQogICAgIGlmIChjb2xvclR5cGUgPT0gUE5HX0NPTE9SX1RZ
UEVfR1JBWSB8fCBjb2xvclR5cGUgPT0gUE5HX0NPTE9SX1RZUEVfR1JBWV9BTFBIQSkKICAgICAg
ICAgcG5nX3NldF9ncmF5X3RvX3JnYihwbmcpOwogCi0gICAgaWYgKChjb2xvclR5cGUgJiBQTkdf
Q09MT1JfTUFTS19DT0xPUikgJiYgIW1faWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGUpIHsKLSAg
ICAgICAgLy8gV2Ugb25seSBzdXBwb3J0IGNvbG9yIHByb2ZpbGVzIGZvciBjb2xvciBQQUxFVFRF
IGFuZCBSR0JbQV0gUE5HLiBTdXBwb3J0aW5nCi0gICAgICAgIC8vIGNvbG9yIHByb2ZpbGVzIGZv
ciBncmF5LXNjYWxlIGltYWdlcyBpcyBzbGlnaHRseSB0cmlja3ksIGF0IGxlYXN0IHVzaW5nIHRo
ZQotICAgICAgICAvLyBDb3JlR3JhcGhpY3MgSUNDIGxpYnJhcnksIGJlY2F1c2Ugd2UgZXhwYW5k
IGdyYXktc2NhbGUgaW1hZ2VzIHRvIFJHQiBidXQgd2UKLSAgICAgICAgLy8gZG8gbm90IHNpbWls
YXJseSB0cmFuc2Zvcm0gdGhlIGNvbG9yIHByb2ZpbGUuIFdlJ2QgZWl0aGVyIG5lZWQgdG8gdHJh
bnNmb3JtCi0gICAgICAgIC8vIHRoZSBjb2xvciBwcm9maWxlIG9yIHdlJ2QgbmVlZCB0byBkZWNv
ZGUgaW50byBhIGdyYXktc2NhbGUgaW1hZ2UgYnVmZmVyIGFuZAotICAgICAgICAvLyBoYW5kIHRo
YXQgdG8gQ29yZUdyYXBoaWNzLgotICAgICAgICByZWFkQ29sb3JQcm9maWxlKHBuZywgaW5mbywg
bV9jb2xvclByb2ZpbGUpOwotICAgIH0KLQogICAgIC8vIERlYWwgd2l0aCBnYW1tYSBhbmQga2Vl
cCBpdCB1bmRlciBvdXIgY29udHJvbC4KICAgICBkb3VibGUgZ2FtbWE7CiAgICAgaWYgKCFtX2ln
bm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlICYmIHBuZ19nZXRfZ0FNQShwbmcsIGluZm8sICZnYW1t
YSkpIHsKQEAgLTQ1MiwxOSArNDA5LDE5IEBAIHZvaWQgUE5HSW1hZ2VEZWNvZGVyOjpoZWFkZXJB
dmFpbGFibGUoKQogICAgIH0KIH0KIAotc3RhdGljIGlubGluZSB2b2lkIHNldFBpeGVsUkdCKElt
YWdlRnJhbWU6OlBpeGVsRGF0YSogZGVzdCwgcG5nX2J5dGVwIHBpeGVsKQorc3RhdGljIGlubGlu
ZSB2b2lkIHNldFBpeGVsUkdCKFJHQkEzMiogZGVzdCwgcG5nX2J5dGVwIHBpeGVsKQogewogICAg
ICpkZXN0ID0gMHhGRjAwMDAwMFUgfCBwaXhlbFswXSA8PCAxNiB8IHBpeGVsWzFdIDw8IDggfCBw
aXhlbFsyXTsKIH0KIAotc3RhdGljIGlubGluZSB2b2lkIHNldFBpeGVsUkdCQShJbWFnZUZyYW1l
OjpQaXhlbERhdGEqIGRlc3QsIHBuZ19ieXRlcCBwaXhlbCwgdW5zaWduZWQgY2hhciYgbm9uVHJp
dmlhbEFscGhhTWFzaykKK3N0YXRpYyBpbmxpbmUgdm9pZCBzZXRQaXhlbFJHQkEoUkdCQTMyKiBk
ZXN0LCBwbmdfYnl0ZXAgcGl4ZWwsIHVuc2lnbmVkIGNoYXImIG5vblRyaXZpYWxBbHBoYU1hc2sp
CiB7CiAgICAgdW5zaWduZWQgY2hhciBhID0gcGl4ZWxbM107CiAgICAgKmRlc3QgPSBhIDw8IDI0
IHwgcGl4ZWxbMF0gPDwgMTYgfCBwaXhlbFsxXSA8PCA4IHwgcGl4ZWxbMl07CiAgICAgbm9uVHJp
dmlhbEFscGhhTWFzayB8PSAoMjU1IC0gYSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBzZXRQ
aXhlbFByZW11bHRpcGxpZWRSR0JBKEltYWdlRnJhbWU6OlBpeGVsRGF0YSogZGVzdCwgcG5nX2J5
dGVwIHBpeGVsLCB1bnNpZ25lZCBjaGFyJiBub25Ucml2aWFsQWxwaGFNYXNrKQorc3RhdGljIGlu
bGluZSB2b2lkIHNldFBpeGVsUHJlbXVsdGlwbGllZFJHQkEoUkdCQTMyKiBkZXN0LCBwbmdfYnl0
ZXAgcGl4ZWwsIHVuc2lnbmVkIGNoYXImIG5vblRyaXZpYWxBbHBoYU1hc2spCiB7CiAgICAgdW5z
aWduZWQgY2hhciBhID0gcGl4ZWxbM107CiAgICAgdW5zaWduZWQgY2hhciByID0gZmFzdERpdmlk
ZUJ5MjU1KHBpeGVsWzBdICogYSk7CkBAIC00ODgsNyArNDQ1LDcgQEAgdm9pZCBQTkdJbWFnZURl
Y29kZXI6OnJvd0F2YWlsYWJsZSh1bnNpZ25lZCBjaGFyKiByb3dCdWZmZXIsIHVuc2lnbmVkIHJv
d0luZGV4LAogICAgIEltYWdlRnJhbWUmIGJ1ZmZlciA9IG1fZnJhbWVCdWZmZXJDYWNoZVttX2N1
cnJlbnRGcmFtZV07CiAgICAgaWYgKGJ1ZmZlci5zdGF0dXMoKSA9PSBJbWFnZUZyYW1lOjpGcmFt
ZUVtcHR5KSB7CiAgICAgICAgIHBuZ19zdHJ1Y3RwIHBuZyA9IG1fcmVhZGVyLT5wbmdQdHIoKTsK
LSAgICAgICAgaWYgKCFidWZmZXIuc2V0U2l6ZShzY2FsZWRTaXplKCkud2lkdGgoKSwgc2NhbGVk
U2l6ZSgpLmhlaWdodCgpKSkgeworICAgICAgICBpZiAoIWJ1ZmZlci5zZXRTaXplKHNjYWxlZFNp
emUoKSwgbV9wcmVtdWx0aXBseUFscGhhKSkgewogICAgICAgICAgICAgbG9uZ2ptcChKTVBCVUYo
cG5nKSwgMSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTUwNiwxNSArNDYz
LDExIEBAIHZvaWQgUE5HSW1hZ2VEZWNvZGVyOjpyb3dBdmFpbGFibGUodW5zaWduZWQgY2hhciog
cm93QnVmZmVyLCB1bnNpZ25lZCByb3dJbmRleCwKIAogICAgICAgICBidWZmZXIuc2V0U3RhdHVz
KEltYWdlRnJhbWU6OkZyYW1lUGFydGlhbCk7CiAgICAgICAgIGJ1ZmZlci5zZXRIYXNBbHBoYShm
YWxzZSk7Ci0gICAgICAgIGJ1ZmZlci5zZXRDb2xvclByb2ZpbGUobV9jb2xvclByb2ZpbGUpOwog
CiAjaWYgRU5BQkxFKEFQTkcpCiAgICAgICAgIGlmIChtX2N1cnJlbnRGcmFtZSkKICAgICAgICAg
ICAgIGluaXRGcmFtZUJ1ZmZlcihtX2N1cnJlbnRGcmFtZSk7Ci0gICAgICAgIGVsc2UKICNlbmRp
ZgotICAgICAgICAvLyBGb3IgUE5HcywgdGhlIGZyYW1lIGFsd2F5cyBmaWxscyB0aGUgZW50aXJl
IGltYWdlLgotICAgICAgICBidWZmZXIuc2V0T3JpZ2luYWxGcmFtZVJlY3QoSW50UmVjdChJbnRQ
b2ludCgpLCBzaXplKCkpKTsKICAgICB9CiAKICAgICAvKiBsaWJwbmcgY29tbWVudHMgKGhlcmUg
dG8gZXhwbGFpbiB3aGF0IGZvbGxvd3MpLgpAQCAtNTczLDcgKzUyNiw3IEBAIHZvaWQgUE5HSW1h
Z2VEZWNvZGVyOjpyb3dBdmFpbGFibGUodW5zaWduZWQgY2hhciogcm93QnVmZmVyLCB1bnNpZ25l
ZCByb3dJbmRleCwKICAgICB9CiAKICAgICAvLyBXcml0ZSB0aGUgZGVjb2RlZCByb3cgcGl4ZWxz
IHRvIHRoZSBmcmFtZSBidWZmZXIuCi0gICAgSW1hZ2VGcmFtZTo6UGl4ZWxEYXRhKiBhZGRyZXNz
ID0gYnVmZmVyLmdldEFkZHIoMCwgeSk7CisgICAgUkdCQTMyKiBhZGRyZXNzID0gYnVmZmVyLmdl
dEFkZHIoMCwgeSk7CiAgICAgaW50IHdpZHRoID0gc2NhbGVkU2l6ZSgpLndpZHRoKCk7CiAgICAg
dW5zaWduZWQgY2hhciBub25Ucml2aWFsQWxwaGFNYXNrID0gMDsKIApAQCAtNjYzLDggKzYxNiw2
IEBAIHZvaWQgUE5HSW1hZ2VEZWNvZGVyOjpyZWFkQ2h1bmtzKHBuZ191bmtub3duX2NodW5rcCBj
aHVuaykKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBtX2ZyYW1lQnVmZmVyQ2FjaGUu
cmVzaXplKG1fZnJhbWVDb3VudCk7Ci0gICAgICAgIGZvciAoYXV0byYgaW1hZ2VGcmFtZSA6IG1f
ZnJhbWVCdWZmZXJDYWNoZSkKLSAgICAgICAgICAgIGltYWdlRnJhbWUuc2V0UHJlbXVsdGlwbHlB
bHBoYShtX3ByZW11bHRpcGx5QWxwaGEpOwogICAgIH0gZWxzZSBpZiAoIW1lbWNtcChjaHVuay0+
bmFtZSwgImZjVEwiLCA0KSAmJiBjaHVuay0+c2l6ZSA9PSAyNikgewogICAgICAgICBpZiAobV9o
YXNJbmZvICYmICFtX2lzQW5pbWF0ZWQpCiAgICAgICAgICAgICByZXR1cm47CkBAIC03MDYsMTAg
KzY1Nyw4IEBAIHZvaWQgUE5HSW1hZ2VEZWNvZGVyOjpyZWFkQ2h1bmtzKHBuZ191bmtub3duX2No
dW5rcCBjaHVuaykKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGlm
IChtX2ZyYW1lQnVmZmVyQ2FjaGUuaXNFbXB0eSgpKSB7CisgICAgICAgIGlmIChtX2ZyYW1lQnVm
ZmVyQ2FjaGUuaXNFbXB0eSgpKQogICAgICAgICAgICAgbV9mcmFtZUJ1ZmZlckNhY2hlLnJlc2l6
ZSgxKTsKLSAgICAgICAgICAgIG1fZnJhbWVCdWZmZXJDYWNoZVswXS5zZXRQcmVtdWx0aXBseUFs
cGhhKG1fcHJlbXVsdGlwbHlBbHBoYSk7Ci0gICAgICAgIH0KIAogICAgICAgICBpZiAobV9jdXJy
ZW50RnJhbWUgPCBtX2ZyYW1lQnVmZmVyQ2FjaGUuc2l6ZSgpKSB7CiAgICAgICAgICAgICBJbWFn
ZUZyYW1lJiBidWZmZXIgPSBtX2ZyYW1lQnVmZmVyQ2FjaGVbbV9jdXJyZW50RnJhbWVdOwpAQCAt
ODM0LDExICs3ODMsNiBAQCB2b2lkIFBOR0ltYWdlRGVjb2Rlcjo6aW5pdEZyYW1lQnVmZmVyKHNp
emVfdCBmcmFtZUluZGV4KQogICAgICAgICBmcmFtZVJlY3Quc2V0SGVpZ2h0KHNpemUoKS5oZWln
aHQoKSAtIG1feU9mZnNldCk7CiAKICAgICBJbWFnZUZyYW1lJiBidWZmZXIgPSBtX2ZyYW1lQnVm
ZmVyQ2FjaGVbZnJhbWVJbmRleF07Ci0gICAgaW50IGxlZnQgPSB1cHBlckJvdW5kU2NhbGVkWChm
cmFtZVJlY3QueCgpKTsKLSAgICBpbnQgcmlnaHQgPSBsb3dlckJvdW5kU2NhbGVkWChmcmFtZVJl
Y3QubWF4WCgpLCBsZWZ0KTsKLSAgICBpbnQgdG9wID0gdXBwZXJCb3VuZFNjYWxlZFkoZnJhbWVS
ZWN0LnkoKSk7Ci0gICAgaW50IGJvdHRvbSA9IGxvd2VyQm91bmRTY2FsZWRZKGZyYW1lUmVjdC5t
YXhZKCksIHRvcCk7Ci0gICAgYnVmZmVyLnNldE9yaWdpbmFsRnJhbWVSZWN0KEludFJlY3QobGVm
dCwgdG9wLCByaWdodCAtIGxlZnQsIGJvdHRvbSAtIHRvcCkpOwogCiAgICAgLy8gVGhlIHN0YXJ0
aW5nIHN0YXRlIGZvciB0aGlzIGZyYW1lIGRlcGVuZHMgb24gdGhlIHByZXZpb3VzIGZyYW1lJ3MK
ICAgICAvLyBkaXNwb3NhbCBtZXRob2QuCkBAIC04NjIsNyArODA2LDcgQEAgdm9pZCBQTkdJbWFn
ZURlY29kZXI6OmluaXRGcmFtZUJ1ZmZlcihzaXplX3QgZnJhbWVJbmRleCkKICAgICB9IGVsc2Ug
ewogICAgICAgICAvLyBXZSB3YW50IHRvIGNsZWFyIHRoZSBwcmV2aW91cyBmcmFtZSB0byB0cmFu
c3BhcmVudCwgd2l0aG91dAogICAgICAgICAvLyBhZmZlY3RpbmcgcGl4ZWxzIGluIHRoZSBpbWFn
ZSBvdXRzaWRlIG9mIHRoZSBmcmFtZS4KLSAgICAgICAgY29uc3QgSW50UmVjdCYgcHJldlJlY3Qg
PSBwcmV2QnVmZmVyLT5vcmlnaW5hbEZyYW1lUmVjdCgpOworICAgICAgICBjb25zdCBJbnRSZWN0
JiBwcmV2UmVjdCA9IHByZXZCdWZmZXItPnBpeGVscygpLT5yZWN0KCk7CiAgICAgICAgIGlmICgh
ZnJhbWVJbmRleCB8fCBwcmV2UmVjdC5jb250YWlucyhJbnRSZWN0KEludFBvaW50KCksIHNjYWxl
ZFNpemUoKSkpKSB7CiAgICAgICAgICAgICAvLyBDbGVhcmluZyB0aGUgZmlyc3QgZnJhbWUsIG9y
IGEgZnJhbWUgdGhlIHNpemUgb2YgdGhlIHdob2xlCiAgICAgICAgICAgICAvLyBpbWFnZSwgcmVz
dWx0cyBpbiBhIGNvbXBsZXRlbHkgZW1wdHkgaW1hZ2UuCkBAIC04NzMsNiArODE3LDEyIEBAIHZv
aWQgUE5HSW1hZ2VEZWNvZGVyOjppbml0RnJhbWVCdWZmZXIoc2l6ZV90IGZyYW1lSW5kZXgpCiAg
ICAgICAgICAgICBidWZmZXIuemVyb0ZpbGxGcmFtZVJlY3QocHJldlJlY3QpOwogICAgICAgICB9
CiAgICAgfQorICAgIAorICAgIGludCBsZWZ0ID0gdXBwZXJCb3VuZFNjYWxlZFgoZnJhbWVSZWN0
LngoKSk7CisgICAgaW50IHJpZ2h0ID0gbG93ZXJCb3VuZFNjYWxlZFgoZnJhbWVSZWN0Lm1heFgo
KSwgbGVmdCk7CisgICAgaW50IHRvcCA9IHVwcGVyQm91bmRTY2FsZWRZKGZyYW1lUmVjdC55KCkp
OworICAgIGludCBib3R0b20gPSBsb3dlckJvdW5kU2NhbGVkWShmcmFtZVJlY3QubWF4WSgpLCB0
b3ApOworICAgIGJ1ZmZlci5waXhlbHMoKS0+c2V0UmVjdChJbnRSZWN0KGxlZnQsIHRvcCwgcmln
aHQgLSBsZWZ0LCBib3R0b20gLSB0b3ApKTsKIH0KIAogdm9pZCBQTkdJbWFnZURlY29kZXI6OmZy
YW1lQ29tcGxldGUoKQpAQCAtODg2LDcgKzgzNiw3IEBAIHZvaWQgUE5HSW1hZ2VEZWNvZGVyOjpm
cmFtZUNvbXBsZXRlKCkKICAgICBwbmdfYnl0ZXAgaW50ZXJsYWNlQnVmZmVyID0gbV9yZWFkZXIt
PmludGVybGFjZUJ1ZmZlcigpOwogCiAgICAgaWYgKG1fY3VycmVudEZyYW1lICYmIGludGVybGFj
ZUJ1ZmZlcikgewotICAgICAgICBjb25zdCBJbnRSZWN0JiByZWN0ID0gYnVmZmVyLm9yaWdpbmFs
RnJhbWVSZWN0KCk7CisgICAgICAgIGNvbnN0IEludFJlY3QmIHJlY3QgPSBidWZmZXIucGl4ZWxz
KCktPnJlY3QoKTsKICAgICAgICAgYm9vbCBoYXNBbHBoYSA9IG1fcmVhZGVyLT5oYXNBbHBoYSgp
OwogICAgICAgICB1bnNpZ25lZCBjb2xvckNoYW5uZWxzID0gaGFzQWxwaGEgPyA0IDogMzsKICAg
ICAgICAgYm9vbCBub25Ucml2aWFsQWxwaGEgPSBmYWxzZTsKQEAgLTg5Niw3ICs4NDYsNyBAQCB2
b2lkIFBOR0ltYWdlRGVjb2Rlcjo6ZnJhbWVDb21wbGV0ZSgpCiAjaWYgRU5BQkxFKElNQUdFX0RF
Q09ERVJfRE9XTl9TQU1QTElORykKICAgICAgICAgZm9yIChpbnQgeSA9IDA7IHkgPCByZWN0Lm1h
eFkoKSAtIHJlY3QueSgpOyArK3kpIHsKICAgICAgICAgICAgIHBuZ19ieXRlcCByb3cgPSBpbnRl
cmxhY2VCdWZmZXIgKyAobV9zY2FsZWQgPyBtX3NjYWxlZFJvd3NbeV0gOiB5KSAqIGNvbG9yQ2hh
bm5lbHMgKiBzaXplKCkud2lkdGgoKTsKLSAgICAgICAgICAgIEltYWdlRnJhbWU6OlBpeGVsRGF0
YSogYWRkcmVzcyA9IGJ1ZmZlci5nZXRBZGRyKHJlY3QueCgpLCB5ICsgcmVjdC55KCkpOworICAg
ICAgICAgICAgUkdCQTMyKiBhZGRyZXNzID0gYnVmZmVyLmdldEFkZHIocmVjdC54KCksIHkgKyBy
ZWN0LnkoKSk7CiAgICAgICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IHJlY3QubWF4WCgpIC0g
cmVjdC54KCk7ICsreCkgewogICAgICAgICAgICAgICAgIHBuZ19ieXRlcCBwaXhlbCA9IHJvdyAr
IChtX3NjYWxlZCA/IG1fc2NhbGVkQ29sdW1uc1t4XSA6IHgpICogY29sb3JDaGFubmVsczsKICAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBhbHBoYSA9IGhhc0FscGhhID8gcGl4ZWxbM10gOiAyNTU7
CkBAIC05MTIsNyArODYyLDcgQEAgdm9pZCBQTkdJbWFnZURlY29kZXI6OmZyYW1lQ29tcGxldGUo
KQogICAgICAgICBwbmdfYnl0ZXAgcm93ID0gaW50ZXJsYWNlQnVmZmVyOwogICAgICAgICBmb3Ig
KGludCB5ID0gcmVjdC55KCk7IHkgPCByZWN0Lm1heFkoKTsgKyt5LCByb3cgKz0gY29sb3JDaGFu
bmVscyAqIHNpemUoKS53aWR0aCgpKSB7CiAgICAgICAgICAgICBwbmdfYnl0ZXAgcGl4ZWwgPSBy
b3c7Ci0gICAgICAgICAgICBJbWFnZUZyYW1lOjpQaXhlbERhdGEqIGFkZHJlc3MgPSBidWZmZXIu
Z2V0QWRkcihyZWN0LngoKSwgeSk7CisgICAgICAgICAgICBSR0JBMzIqIGFkZHJlc3MgPSBidWZm
ZXIuZ2V0QWRkcihyZWN0LngoKSwgeSk7CiAgICAgICAgICAgICBmb3IgKGludCB4ID0gcmVjdC54
KCk7IHggPCByZWN0Lm1heFgoKTsgKyt4LCBwaXhlbCArPSBjb2xvckNoYW5uZWxzKSB7CiAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgYWxwaGEgPSBoYXNBbHBoYSA/IHBpeGVsWzNdIDogMjU1Owog
ICAgICAgICAgICAgICAgIG5vblRyaXZpYWxBbHBoYSB8PSBhbHBoYSA8IDI1NTsKQEAgLTkyNSw3
ICs4NzUsNyBAQCB2b2lkIFBOR0ltYWdlRGVjb2Rlcjo6ZnJhbWVDb21wbGV0ZSgpCiAjZW5kaWYK
IAogICAgICAgICBpZiAoIW5vblRyaXZpYWxBbHBoYSkgewotICAgICAgICAgICAgaWYgKGJ1ZmZl
ci5vcmlnaW5hbEZyYW1lUmVjdCgpLmNvbnRhaW5zKEludFJlY3QoSW50UG9pbnQoKSwgc2NhbGVk
U2l6ZSgpKSkpCisgICAgICAgICAgICBpZiAoYnVmZmVyLnBpeGVscygpLT5yZWN0KCkuY29udGFp
bnMoSW50UmVjdChJbnRQb2ludCgpLCBzY2FsZWRTaXplKCkpKSkKICAgICAgICAgICAgICAgICBi
dWZmZXIuc2V0SGFzQWxwaGEoZmFsc2UpOwogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAg
ICAgICAgc2l6ZV90IGZyYW1lSW5kZXggPSBtX2N1cnJlbnRGcmFtZTsKQEAgLTkzMyw3ICs4ODMs
NyBAQCB2b2lkIFBOR0ltYWdlRGVjb2Rlcjo6ZnJhbWVDb21wbGV0ZSgpCiAgICAgICAgICAgICAg
ICAgd2hpbGUgKGZyYW1lSW5kZXggJiYgKHByZXZCdWZmZXItPmRpc3Bvc2FsTWV0aG9kKCkgPT0g
SW1hZ2VGcmFtZTo6RGlzcG9zZU92ZXJ3cml0ZVByZXZpb3VzKSkKICAgICAgICAgICAgICAgICAg
ICAgcHJldkJ1ZmZlciA9ICZtX2ZyYW1lQnVmZmVyQ2FjaGVbLS1mcmFtZUluZGV4XTsKICAgICAg
ICAgICAgICAgICBpZiAoKHByZXZCdWZmZXItPmRpc3Bvc2FsTWV0aG9kKCkgPT0gSW1hZ2VGcmFt
ZTo6RGlzcG9zZU92ZXJ3cml0ZUJnY29sb3IpCi0gICAgICAgICAgICAgICAgICAgICYmICFwcmV2
QnVmZmVyLT5oYXNBbHBoYSgpICYmIGJ1ZmZlci5vcmlnaW5hbEZyYW1lUmVjdCgpLmNvbnRhaW5z
KHByZXZCdWZmZXItPm9yaWdpbmFsRnJhbWVSZWN0KCkpKQorICAgICAgICAgICAgICAgICAgICAm
JiAhcHJldkJ1ZmZlci0+aGFzQWxwaGEoKSAmJiBidWZmZXIucGl4ZWxzKCktPnJlY3QoKS5jb250
YWlucyhwcmV2QnVmZmVyLT5waXhlbHMoKS0+cmVjdCgpKSkKICAgICAgICAgICAgICAgICAgICAg
YnVmZmVyLnNldEhhc0FscGhhKGZhbHNlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNl
IGlmICghbV9ibGVuZCAmJiAhYnVmZmVyLmhhc0FscGhhKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVy
LmgKaW5kZXggMDVmYzc0YjZkZTIxNGQwNDE0YTgyYjQxODY5Mzc3NjJkMWE1ZTU1Yi4uOTg3NDI0
NjE5MDg4ZGUxN2ZjZDYzZGM4NmY1Yjk1MTc4N2NiNGRlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29k
ZXIuaApAQCAtNDgsNyArNDgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGludCBy
ZXBldGl0aW9uQ291bnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3BsYXlDb3VudC0xOyB9
CiAjZW5kaWYKICAgICAgICAgYm9vbCBpc1NpemVBdmFpbGFibGUoKSBvdmVycmlkZTsKLSAgICAg
ICAgYm9vbCBzZXRTaXplKHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQpIG92ZXJyaWRl
OworICAgICAgICBib29sIHNldFNpemUoY29uc3QgSW50U2l6ZSYpIG92ZXJyaWRlOwogICAgICAg
ICBJbWFnZUZyYW1lKiBmcmFtZUJ1ZmZlckF0SW5kZXgoc2l6ZV90IGluZGV4KSBvdmVycmlkZTsK
ICAgICAgICAgLy8gQ0FVVElPTjogc2V0RmFpbGVkKCkgZGVsZXRlcyB8bV9yZWFkZXJ8LiAgQmUg
Y2FyZWZ1bCB0byBhdm9pZAogICAgICAgICAvLyBhY2Nlc3NpbmcgZGVsZXRlZCBtZW1vcnksIGVz
cGVjaWFsbHkgd2hlbiBjYWxsaW5nIHRoaXMgZnJvbSBpbnNpZGUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFn
ZURlY29kZXIuY3BwCmluZGV4IDEyNGExYjJmMTk5N2ZlNjc4YzYxYjUyZjMwNThkYjRkNmI4ODY3
OWEuLmEzNWExOWE5MGI1Y2EzOTdlOGZiNzAyMTAxN2U4OTc1ZmJlMzRjNGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVj
b2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2Vi
cC9XRUJQSW1hZ2VEZWNvZGVyLmNwcApAQCAtNzgsMTAgKzc4LDggQEAgSW1hZ2VGcmFtZSogV0VC
UEltYWdlRGVjb2Rlcjo6ZnJhbWVCdWZmZXJBdEluZGV4KHNpemVfdCBpbmRleCkKICAgICBpZiAo
aW5kZXgpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgaWYgKG1fZnJhbWVCdWZmZXJDYWNoZS5p
c0VtcHR5KCkpIHsKKyAgICBpZiAobV9mcmFtZUJ1ZmZlckNhY2hlLmlzRW1wdHkoKSkKICAgICAg
ICAgbV9mcmFtZUJ1ZmZlckNhY2hlLnJlc2l6ZSgxKTsKLSAgICAgICAgbV9mcmFtZUJ1ZmZlckNh
Y2hlWzBdLnNldFByZW11bHRpcGx5QWxwaGEobV9wcmVtdWx0aXBseUFscGhhKTsKLSAgICB9CiAK
ICAgICBJbWFnZUZyYW1lJiBmcmFtZSA9IG1fZnJhbWVCdWZmZXJDYWNoZVswXTsKICAgICBpZiAo
ZnJhbWUuc3RhdHVzKCkgIT0gSW1hZ2VGcmFtZTo6RnJhbWVDb21wbGV0ZSkKQEAgLTExNSw3ICsx
MTMsNyBAQCBib29sIFdFQlBJbWFnZURlY29kZXI6OmRlY29kZShib29sIG9ubHlTaXplKQogICAg
ICAgICAgICAgcmV0dXJuIHNldEZhaWxlZCgpOwogICAgICAgICBtX2hhc0FscGhhID0gZmFsc2U7
CiAjZW5kaWYKLSAgICAgICAgaWYgKCFzZXRTaXplKHdpZHRoLCBoZWlnaHQpKQorICAgICAgICBp
ZiAoIXNldFNpemUoSW50U2l6ZSh3aWR0aCwgaGVpZ2h0KSkpCiAgICAgICAgICAgICByZXR1cm4g
c2V0RmFpbGVkKCk7CiAgICAgfQogCkBAIC0xMjgsMTggKzEyNiwxNyBAQCBib29sIFdFQlBJbWFn
ZURlY29kZXI6OmRlY29kZShib29sIG9ubHlTaXplKQogICAgIEFTU0VSVChidWZmZXIuc3RhdHVz
KCkgIT0gSW1hZ2VGcmFtZTo6RnJhbWVDb21wbGV0ZSk7CiAKICAgICBpZiAoYnVmZmVyLnN0YXR1
cygpID09IEltYWdlRnJhbWU6OkZyYW1lRW1wdHkpIHsKLSAgICAgICAgaWYgKCFidWZmZXIuc2V0
U2l6ZShzaXplKCkud2lkdGgoKSwgc2l6ZSgpLmhlaWdodCgpKSkKKyAgICAgICAgaWYgKCFidWZm
ZXIuc2V0U2l6ZShzaXplKCksIG1fcHJlbXVsdGlwbHlBbHBoYSkpCiAgICAgICAgICAgICByZXR1
cm4gc2V0RmFpbGVkKCk7CiAgICAgICAgIGJ1ZmZlci5zZXRTdGF0dXMoSW1hZ2VGcmFtZTo6RnJh
bWVQYXJ0aWFsKTsKICAgICAgICAgYnVmZmVyLnNldEhhc0FscGhhKG1faGFzQWxwaGEpOwotICAg
ICAgICBidWZmZXIuc2V0T3JpZ2luYWxGcmFtZVJlY3QoSW50UmVjdChJbnRQb2ludCgpLCBzaXpl
KCkpKTsKICAgICB9CiAKICAgICBpZiAoIW1fZGVjb2RlcikgewogICAgICAgICBXRUJQX0NTUF9N
T0RFIG1vZGUgPSBvdXRwdXRNb2RlKG1faGFzQWxwaGEpOwogICAgICAgICBpZiAoIW1fcHJlbXVs
dGlwbHlBbHBoYSkKICAgICAgICAgICAgIG1vZGUgPSBvdXRwdXRNb2RlKGZhbHNlKTsKLSAgICAg
ICAgaW50IHJvd1N0cmlkZSA9IHNpemUoKS53aWR0aCgpICogc2l6ZW9mKEltYWdlRnJhbWU6OlBp
eGVsRGF0YSk7CisgICAgICAgIGludCByb3dTdHJpZGUgPSBzaXplKCkud2lkdGgoKSAqIHNpemVv
ZihSR0JBMzIpOwogICAgICAgICB1aW50OF90KiBvdXRwdXQgPSByZWludGVycHJldF9jYXN0PHVp
bnQ4X3QqPihidWZmZXIuZ2V0QWRkcigwLCAwKSk7CiAgICAgICAgIGludCBvdXRwdXRTaXplID0g
c2l6ZSgpLmhlaWdodCgpICogcm93U3RyaWRlOwogICAgICAgICBtX2RlY29kZXIgPSBXZWJQSU5l
d1JHQihtb2RlLCBvdXRwdXQsIG91dHB1dFNpemUsIHJvd1N0cmlkZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lVmlkZW9T
b3VyY2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9j
a1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMubW0KaW5kZXggMjE2Y2QwOTNmMjY0NjdjYmE4OGE0M2Y2
OTNhYmY0Y2Y1MWRkMWE0ZC4uZDExNDU0YjA1ZWY4ODk5M2E2Mjg5Mzg5NmJjMGMxMTcyOGM1ZWQ1
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01v
Y2tSZWFsdGltZVZpZGVvU291cmNlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5tbQpAQCAtODcsNyAr
ODcsNyBAQCB2b2lkIE1vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjOjp1cGRhdGVQbGF0Zm9ybUxh
eWVyKCkgY29uc3QKICAgICAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgICAgIGJyZWFrOwogCi0g
ICAgICAgIG1fcHJldmlld0ltYWdlID0gaW1hZ2UtPmdldENHSW1hZ2VSZWYoKTsKKyAgICAgICAg
bV9wcmV2aWV3SW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2UoKTsKICAgICAgICAgaWYgKCFtX3By
ZXZpZXdJbWFnZSkKICAgICAgICAgICAgIGJyZWFrOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ0dXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd2luL0RyYWdJbWFnZUNHV2luLmNwcAppbmRleCAzNmNkNjUxNmU4MGYxNzQ4YmZlYWI3
N2E5MzAyNzFjMTIxZGU4MDE5Li40YjRlMzc3OWU5NmY3OGM2NTQwYTUzYzQ0NzhjM2JmZDkzNWY1
M2U5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ0dX
aW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VDR1dpbi5j
cHAKQEAgLTEzNiw5ICsxMzYsOSBAQCBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRnJvbUlt
YWdlKEltYWdlKiBpbWcsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikKICAgICBDR0NvbnRl
eHRTY2FsZUNUTShkcmF3Q29udGV4dCwgMSwgLTEpOwogICAgIENHQ29udGV4dFNldEZpbGxDb2xv
cihkcmF3Q29udGV4dCwgd2hpdGUpOwogICAgIENHQ29udGV4dEZpbGxSZWN0KGRyYXdDb250ZXh0
LCByZWN0KTsKLSAgICBpZiAoYXV0byBzcmNJbWFnZSA9IGltZy0+Z2V0Q0dJbWFnZVJlZigpKSB7
CisgICAgaWYgKGF1dG8gc3JjSW1hZ2UgPSBpbWctPm5hdGl2ZUltYWdlKCkpIHsKICAgICAgICAg
Q0dDb250ZXh0U2V0QmxlbmRNb2RlKGRyYXdDb250ZXh0LCBrQ0dCbGVuZE1vZGVOb3JtYWwpOwot
ICAgICAgICBDR0NvbnRleHREcmF3SW1hZ2UoZHJhd0NvbnRleHQsIHJlY3QsIHNyY0ltYWdlKTsK
KyAgICAgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGRyYXdDb250ZXh0LCByZWN0LCBzcmNJbWFnZS5n
ZXQoKSk7CiAgICAgfQogICAgIENHQ29udGV4dFJlbGVhc2UoZHJhd0NvbnRleHQpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYkNhY2hlLm1tIGIvU291cmNlL1dlYktp
dC9tYWMvTWlzYy9XZWJDYWNoZS5tbQppbmRleCBiNjU5ZDZkYmY5YWQ2OTk5YzNhYzk2MmRlOTUx
NTc4MDk3ZTFmM2IxLi43YzVlZDIxMGRkYjJhMzJhNzY2Njc0YzEyMGQ5OTRjMmZhNDdlN2ZkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYkNhY2hlLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvbWFjL01pc2MvV2ViQ2FjaGUubW0KQEAgLTIwNCw3ICsyMDQsNyBAQCArIChDR0lt
YWdlUmVmKWltYWdlRm9yVVJMOihOU1VSTCAqKXVybAogICAgIFdlYkNvcmU6OkNhY2hlZEltYWdl
JiBjYWNoZWRJbWFnZSA9IGRvd25jYXN0PFdlYkNvcmU6OkNhY2hlZEltYWdlPigqY2FjaGVkUmVz
b3VyY2UpOwogICAgIGlmICghY2FjaGVkSW1hZ2UuaGFzSW1hZ2UoKSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgcmV0dXJuIGNhY2hlZEltYWdlLmltYWdlKCktPmdldENHSW1hZ2VSZWYo
KTsKKyAgICByZXR1cm4gY2FjaGVkSW1hZ2UuaW1hZ2UoKS0+bmF0aXZlSW1hZ2UoKS5nZXQoKTsK
IH0KIAogI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9jZy9XS0ljb25EYXRhYmFzZUNHLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9jZy9XS0ljb25EYXRhYmFzZUNHLmNwcAppbmRleCAwZjZkZTdhMTQ2
YTYxMWE1MmFhMWU1MzkwMTlmYTZjMWM0NjcyNWFlLi4zMDU2MzM2Y2I2NmZlNGFmMThiZGM1Mjlh
Y2EyZjhmYzg4MWRmZTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0MvY2cvV0tJY29uRGF0YWJhc2VDRy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL2NnL1dLSWNvbkRhdGFiYXNlQ0cuY3BwCkBAIC0zNywxMiArMzcsMjMgQEAgdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CiBDR0ltYWdlUmVmIFdLSWNvbkRhdGFiYXNlVHJ5R2V0Q0dJbWFn
ZUZvclVSTChXS0ljb25EYXRhYmFzZVJlZiBpY29uRGF0YWJhc2VSZWYsIFdLVVJMUmVmIHVybFJl
ZiwgV0tTaXplIHNpemUpCiB7CiAgICAgSW1hZ2UqIGltYWdlID0gdG9JbXBsKGljb25EYXRhYmFz
ZVJlZiktPmltYWdlRm9yUGFnZVVSTCh0b1dURlN0cmluZyh1cmxSZWYpKTsKLSAgICByZXR1cm4g
aW1hZ2UgPyBpbWFnZS0+Z2V0Rmlyc3RDR0ltYWdlUmVmT2ZTaXplKEludFNpemUoc3RhdGljX2Nh
c3Q8aW50PihzaXplLndpZHRoKSwgc3RhdGljX2Nhc3Q8aW50PihzaXplLmhlaWdodCkpKSA6IDA7
CisgICAgcmV0dXJuIGltYWdlID8gaW1hZ2UtPm5hdGl2ZUltYWdlT2ZTaXplKEludFNpemUoc3Rh
dGljX2Nhc3Q8aW50PihzaXplLndpZHRoKSwgc3RhdGljX2Nhc3Q8aW50PihzaXplLmhlaWdodCkp
KS5nZXQoKSA6IG51bGxwdHI7CiB9CiAKIENGQXJyYXlSZWYgV0tJY29uRGF0YWJhc2VUcnlDb3B5
Q0dJbWFnZUFycmF5Rm9yVVJMKFdLSWNvbkRhdGFiYXNlUmVmIGljb25EYXRhYmFzZVJlZiwgV0tV
UkxSZWYgdXJsUmVmKQogewogICAgIEltYWdlKiBpbWFnZSA9IHRvSW1wbChpY29uRGF0YWJhc2VS
ZWYpLT5pbWFnZUZvclBhZ2VVUkwodG9XVEZTdHJpbmcodXJsUmVmKSk7Ci0gICAgcmV0dXJuIGlt
YWdlID8gaW1hZ2UtPmdldENHSW1hZ2VBcnJheSgpLmxlYWtSZWYoKSA6IDA7CisgICAgaWYgKCFp
bWFnZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvIG5hdGl2ZUltYWdlcyA9
IGltYWdlLT5mcmFtZXNOYXRpdmVJbWFnZXMoKTsKKyAgICBpZiAoIW5hdGl2ZUltYWdlcy5zaXpl
KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIAorICAgIENGTXV0YWJsZUFycmF5UmVm
IGFycmF5ID0gQ0ZBcnJheUNyZWF0ZU11dGFibGUobnVsbHB0ciwgbmF0aXZlSW1hZ2VzLnNpemUo
KSwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcyk7CisgICAgZm9yIChhdXRvIG5hdGl2ZUltYWdlIDog
bmF0aXZlSW1hZ2VzKQorICAgICAgICBDRkFycmF5QXBwZW5kVmFsdWUoYXJyYXksIG5hdGl2ZUlt
YWdlLmdldCgpKTsKKyAgICAKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q0ZBcnJheVJlZj4oQ0ZS
ZXRhaW4oYXJyYXkpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCBkYzc5ODNhYjk4OGMyZDA0
YTE3MzBlZTEzNzMwM2MyNDQxNjE1MTk3Li5mYmMzZTVkNGM1NDMwMWNlOTIxN2E0MGY4ZDA4YmQ1
ODM1Mjc4N2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29u
dGVudFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9z
L1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtNDA3MSw3ICs0MDcxLDcgQEAgLSAoVUlJ
bWFnZSAqKV9wcmVzZW50YXRpb25TbmFwc2hvdEZvclByZXZpZXdJdGVtQ29udHJvbGxlcjooVUlQ
cmV2aWV3SXRlbUNvbnRyb2wKIHsKICAgICBpZiAoIV9wb3NpdGlvbkluZm9ybWF0aW9uLmxpbmtJ
bmRpY2F0b3IuY29udGVudEltYWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1
cm4gW1tbVUlJbWFnZSBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOl9wb3NpdGlvbkluZm9ybWF0aW9u
LmxpbmtJbmRpY2F0b3IuY29udGVudEltYWdlLT5nZXRDR0ltYWdlUmVmKCldIGF1dG9yZWxlYXNl
XTsKKyAgICByZXR1cm4gW1tbVUlJbWFnZSBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOl9wb3NpdGlv
bkluZm9ybWF0aW9uLmxpbmtJbmRpY2F0b3IuY29udGVudEltYWdlLT5uYXRpdmVJbWFnZSgpLmdl
dCgpXSBhdXRvcmVsZWFzZV07CiB9CiAKIC0gKE5TQXJyYXkgKilfcHJlc2VudGF0aW9uUmVjdHNG
b3JQcmV2aWV3SXRlbUNvbnRyb2xsZXI6KFVJUHJldmlld0l0ZW1Db250cm9sbGVyICopY29udHJv
bGxlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcu
Y3BwCmluZGV4IDlhMzNmN2NjN2RjN2M3ZDcyZjlkYTc0MzA5OGI3ZGJjYTgyNDA5Y2YuLmE1MzI1
MTA2NzhiOWY1MzUxNDU4YTM4YTlmNDIzMzc0N2QwMzVmNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTE3MjcsNjkgKzE3Mjcs
NiBAQCB2b2lkIFBsdWdpblZpZXc6OndpbmRvd2VkUGx1Z2luVmlzaWJpbGl0eURpZENoYW5nZShi
b29sIGlzVmlzaWJsZSwgdWludDY0X3Qgd2luZAogfQogI2VuZGlmCiAKLSNpZiBQTEFURk9STShD
T0NPQSkKLXN0YXRpYyBib29sIGlzQWxtb3N0U29saWRDb2xvcihCaXRtYXBJbWFnZSogYml0bWFw
KQotewotICAgIENHSW1hZ2VSZWYgaW1hZ2UgPSBiaXRtYXAtPmdldENHSW1hZ2VSZWYoKTsKLSAg
ICBBU1NFUlQoQ0dJbWFnZUdldEJpdHNQZXJDb21wb25lbnQoaW1hZ2UpID09IDgpOwotCi0gICAg
Q0dCaXRtYXBJbmZvIGltYWdlSW5mbyA9IENHSW1hZ2VHZXRCaXRtYXBJbmZvKGltYWdlKTsKLSAg
ICBpZiAoIShpbWFnZUluZm8gJiBrQ0dCaXRtYXBCeXRlT3JkZXIzMkxpdHRsZSkgfHwgKGltYWdl
SW5mbyAmIGtDR0JpdG1hcEFscGhhSW5mb01hc2spICE9IGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBs
aWVkRmlyc3QpIHsKLSAgICAgICAgLy8gRklYTUU6IENvbnNpZGVyIGJlaW5nIGFibGUgdG8gaGFu
ZGxlIG90aGVyIHBpeGVsIGZvcm1hdHMuCi0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgc2l6ZV90IHdpZHRoID0gQ0dJbWFn
ZUdldFdpZHRoKGltYWdlKTsKLSAgICBzaXplX3QgaGVpZ2h0ID0gQ0dJbWFnZUdldEhlaWdodChp
bWFnZSk7Ci0gICAgc2l6ZV90IGJ5dGVzUGVyUm93ID0gQ0dJbWFnZUdldEJ5dGVzUGVyUm93KGlt
YWdlKTsKLQotICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IHByb3ZpZGVyID0gYWRvcHRDRihDR0Rh
dGFQcm92aWRlckNvcHlEYXRhKENHSW1hZ2VHZXREYXRhUHJvdmlkZXIoaW1hZ2UpKSk7Ci0gICAg
Y29uc3QgVUludDgqIGRhdGEgPSBDRkRhdGFHZXRCeXRlUHRyKHByb3ZpZGVyLmdldCgpKTsKLQot
ICAgIC8vIE92ZXJsYXkgYSBncmlkIG9mIHNhbXBsaW5nIGRvdHMgb24gdG9wIG9mIGEgZ3JheXNj
YWxlIHZlcnNpb24gb2YgdGhlIGltYWdlLgotICAgIC8vIEZvciB0aGUgaW50ZXJpb3IgcG9pbnRz
LCBjYWxjdWxhdGUgdGhlIGRpZmZlcmVuY2UgaW4gbHVtaW5hbmNlIGFtb25nIHRoZSBzYW1wbGUg
cG9pbnQKLSAgICAvLyBhbmQgaXRzIHN1cnJvdW5kcyBwb2ludHMsIHNjYWxlZCBieSB0cmFuc3Bh
cmVuY3kuCi0gICAgY29uc3QgdW5zaWduZWQgc2FtcGxlUm93cyA9IDc7Ci0gICAgY29uc3QgdW5z
aWduZWQgc2FtcGxlQ29scyA9IDc7Ci0gICAgLy8gRklYTUU6IFJlZmluZSB0aGUgcHJvcGVyIG51
bWJlciBvZiBzYW1wbGVzLCBhbmQgYWNjb21tb2RhdGUgZGlmZmVyZW50IGFzcGVjdCByYXRpb3Mu
Ci0gICAgaWYgKHdpZHRoIDwgc2FtcGxlQ29scyB8fCBoZWlnaHQgPCBzYW1wbGVSb3dzKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBFbnN1cmUgdGhhdCB0aGUgbGFzdCByb3cvY29s
dW1uIGxhbmQgb24gdGhlIGltYWdlIHBlcmltZXRlci4KLSAgICBjb25zdCBmbG9hdCBzdHJpZGVX
aWR0aCA9IHN0YXRpY19jYXN0PGZsb2F0Pih3aWR0aCAtIDEpIC8gKHNhbXBsZUNvbHMgLSAxKTsK
LSAgICBjb25zdCBmbG9hdCBzdHJpZGVIZWlnaHQgPSBzdGF0aWNfY2FzdDxmbG9hdD4oaGVpZ2h0
IC0gMSkgLyAoc2FtcGxlUm93cyAtIDEpOwotICAgIGZsb2F0IHNhbXBsZXNbc2FtcGxlUm93c11b
c2FtcGxlQ29sc107Ci0KLSAgICAvLyBGaW5kIHRoZSBsdW1pbmFuY2Ugb2YgdGhlIHNhbXBsZSBw
b2ludHMuCi0gICAgZmxvYXQgeSA9IDA7Ci0gICAgY29uc3QgVUludDgqIHJvdyA9IGRhdGE7Ci0g
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNhbXBsZVJvd3M7ICsraSkgewotICAgICAgICBm
bG9hdCB4ID0gMDsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IHNhbXBsZUNvbHM7
ICsraikgewotICAgICAgICAgICAgY29uc3QgVUludDgqIHAwID0gcm93ICsgKHN0YXRpY19jYXN0
PGludD4oeCArIC41KSkgKiA0OwotICAgICAgICAgICAgLy8gUiBHIEIgQQotICAgICAgICAgICAg
c2FtcGxlc1tpXVtqXSA9ICgwLjIxMjUgKiAqcDAgKyAwLjcxNTQgKiAqKHAwKzEpICsgMC4wNzIx
ICogKihwMCsyKSkgKiAqKHAwKzMpIC8gMjU1OwotICAgICAgICAgICAgeCArPSBzdHJpZGVXaWR0
aDsKLSAgICAgICAgfQotICAgICAgICB5ICs9IHN0cmlkZUhlaWdodDsKLSAgICAgICAgcm93ID0g
ZGF0YSArIChzdGF0aWNfY2FzdDxpbnQ+KHkgKyAuNSkpICogYnl0ZXNQZXJSb3c7Ci0gICAgfQot
Ci0gICAgLy8gRGV0ZXJtaW5lIHRoZSBpbWFnZSBzY29yZS4KLSAgICBmbG9hdCBhY2N1bVNjb3Jl
ID0gMDsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwgc2FtcGxlUm93cyAtIDE7ICsraSkg
ewotICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAxOyBqIDwgc2FtcGxlQ29scyAtIDE7ICsraikg
ewotICAgICAgICAgICAgZmxvYXQgZGlmZiA9IHNhbXBsZXNbaSAtIDFdW2pdICsgc2FtcGxlc1tp
ICsgMV1bal0gKyBzYW1wbGVzW2ldW2ogLSAxXSArIHNhbXBsZXNbaV1baiArIDFdIC0gNCAqIHNh
bXBsZXNbaV1bal07Ci0gICAgICAgICAgICBhY2N1bVNjb3JlICs9IGRpZmYgKiBkaWZmOwotICAg
ICAgICB9Ci0gICAgfQotCi0gICAgLy8gVGhlIHNjb3JlIGZvciBhIGdpdmVuIHNhbXBsZSBjYW4g
YmUgd2l0aGluIHRoZSByYW5nZSBvZiAwIGFuZCAyNTVeMi4KLSAgICByZXR1cm4gYWNjdW1TY29y
ZSA8IDI1MDAgKiAoc2FtcGxlUm93cyAtIDIpICogKHNhbXBsZUNvbHMgLSAyKTsKLX0KLSNlbmRp
ZgotCiB2b2lkIFBsdWdpblZpZXc6OnBsdWdpblNuYXBzaG90VGltZXJGaXJlZCgpCiB7CiAjaWYg
RU5BQkxFKFBSSU1BUllfU05BUFNIT1RURURfUExVR0lOX0hFVVJJU1RJQykKQEAgLTE4MDksNyAr
MTc0Niw3IEBAIHZvaWQgUGx1Z2luVmlldzo6cGx1Z2luU25hcHNob3RUaW1lckZpcmVkKCkKIAog
ICAgICAgICBpZiAoc25hcHNob3RJbWFnZSkgewogI2lmIEVOQUJMRShQUklNQVJZX1NOQVBTSE9U
VEVEX1BMVUdJTl9IRVVSSVNUSUMpCi0gICAgICAgICAgICBib29sIHNuYXBzaG90SXNBbG1vc3RT
b2xpZENvbG9yID0gaXNBbG1vc3RTb2xpZENvbG9yKGRvd25jYXN0PEJpdG1hcEltYWdlPihzbmFw
c2hvdEltYWdlLmdldCgpKSk7CisgICAgICAgICAgICBib29sIHNuYXBzaG90SXNBbG1vc3RTb2xp
ZENvbG9yID0gc3RhdGljX3BvaW50ZXJfY2FzdDxCaXRtYXBJbWFnZT4oc25hcHNob3RJbWFnZSkt
PmlzQWxtb3N0U29saWRDb2xvcigpOwogICAgICAgICAgICAgc25hcHNob3RGb3VuZCA9ICFzbmFw
c2hvdElzQWxtb3N0U29saWRDb2xvcjsKICNlbmRpZgogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>283571</attachid>
            <date>2016-07-13 14:55:08 -0700</date>
            <delta_ts>2016-07-13 15:04:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159721-20160713145422.patch</filename>
            <type>text/plain</type>
            <size>174642</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzMTc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDQ0NWVjM2I5YjY1NzYy
OGNlYTM4MTkyYzdkMDJlN2YwMjIyNzRmOS4uMWE3NjVhOGMwNjFiZGE2MWJmM2NmOGU2ZDlmMGU2
NmJmZDdiNDU4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3NSBAQAorMjAxNi0wNy0xMyAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorIAorICAgICAgICBHZXQg
cmlkIG9mIHRoZSBtX3ByZW11bHRpcGx5QWxwaGEgZmxhZyBvZiB0aGUgSW1hZ2VGcmFtZSBjbGFz
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5NzIx
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBm
bGFnIHdhcyBvbmx5IG5lZWRlZCB3aGVuIGNhbGxpbmcgQml0bWFwUGl4ZWxzOjpzZXRTaXplKCku
IEluc3RlYWQKKyAgICAgICAgd2UgY2FuIHBhc3MgdGhlIEltYWdlRGVjb2Rlcjo6bV9wcmVtdWx0
aXBseUFscGhhIHRvIEltYWdlRnJhbWU6OnNldFNpemUoKQorICAgICAgICB3aGljaCB3aWxsIHBh
c3MgaXQgdG8gQml0bWFwUGl4ZWxzOjpzZXRTaXplKCkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VG
cmFtZTo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OmNvcHlCaXRt
YXBEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6c2V0U2l6ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZURlY29kZXI6OmlzT3ZlclNpemUpOgorICAgICAgICAqIHBsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Qk1QSW1hZ2VEZWNvZGVyOjpmcmFtZUJ1ZmZlckF0SW5kZXgpOiBEZWxldGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpCTVBJbWFnZVJlYWRlcjo6ZGVjb2RlQk1QKToKKyAgICAgICAgKFdlYkNvcmU6
OkJNUEltYWdlUmVhZGVyOjpwcm9jZXNzSW5mb0hlYWRlcik6CisgICAgICAgICogcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHSUZJbWFnZURlY29kZXI6OmluaXRGcmFtZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpH
SUZJbWFnZURlY29kZXI6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SUNPSW1hZ2VE
ZWNvZGVyOjpzZXRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OklDT0ltYWdlRGVjb2Rlcjo6ZnJh
bWVDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpJQ09JbWFnZURlY29kZXI6OnByb2Nlc3NEaXJl
Y3RvcnlFbnRyaWVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNP
SW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9K
UEVHSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpQRUdJbWFnZURlY29kZXI6
OnNldFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6SlBFR0ltYWdlRGVjb2Rlcjo6ZnJhbWVCdWZm
ZXJBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkpQRUdJbWFnZURlY29kZXI6Om91dHB1dFNj
YW5saW5lcyk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1h
Z2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0lt
YWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQTkdJbWFnZURlY29kZXI6OnNldFNp
emUpOgorICAgICAgICAoV2ViQ29yZTo6UE5HSW1hZ2VEZWNvZGVyOjpmcmFtZUJ1ZmZlckF0SW5k
ZXgpOgorICAgICAgICAoV2ViQ29yZTo6UE5HSW1hZ2VEZWNvZGVyOjpoZWFkZXJBdmFpbGFibGUp
OgorICAgICAgICAoV2ViQ29yZTo6UE5HSW1hZ2VEZWNvZGVyOjpyb3dBdmFpbGFibGUpOgorICAg
ICAgICAoV2ViQ29yZTo6UE5HSW1hZ2VEZWNvZGVyOjpyZWFkQ2h1bmtzKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICog
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OldFQlBJbWFnZURlY29kZXI6OmZyYW1lQnVmZmVyQXRJbmRleCk6CisgICAg
ICAgIChXZWJDb3JlOjpXRUJQSW1hZ2VEZWNvZGVyOjpkZWNvZGUpOgorCisyMDE2LTA3LTEzICBT
YWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgR2V0
IHJpZCBvZiB0aGUgY29sb3IgcHJvZmlsZSBmcm9tIEltYWdlRnJhbWUgYW5kIEltYWdlRGVjb2Rl
cgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5Njk5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VGcmFtZTo6c2V0Q29sb3JQcm9maWxlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6cmVhZENvbG9yUHJvZmlsZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpKUEVH
SW1hZ2VSZWFkZXI6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
anBlZy9KUEVHSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZWFkQ29sb3JQ
cm9maWxlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBOR0ltYWdlRGVjb2Rlcjo6aGVh
ZGVyQXZhaWxhYmxlKTogRGVsZXRlZC4KKworMjAxNi0wNy0xMyAgU2FpZCBBYm91LUhhbGxhd2Eg
IDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFNwbGl0IHRoZSBwaXhlbCBkYXRh
IG9mIEltYWdlRnJhbWUgdG8gYSBzZXBhcmF0ZSBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5Njc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSB0aGUgcGl4ZWwgZGF0YSBtYW5pcHVsYXRp
b24gcGFydCBpbiBJbWFnZUZyYW1lIGludG8gYSBzZXBhcmF0ZSBjbGFzcworICAgICAgICBhbmQg
dGhlbiBtYWtlIGl0IG9wdGlvbmFsIChhbGxvY2F0ZWQgb24gZGVtYW5kKS4KKworICAgICAgICAq
IENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFBsYXRmb3JtRWZsLmNtYWtlOgorICAgICAgICAq
IFBsYXRmb3JtR1RLLmNtYWtlOgorICAgICAgICAqIFBsYXRmb3JtV2luQ2Fpcm8uY21ha2U6Cisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0JpdG1hcFBpeGVscy5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkJpdG1hcFBpeGVsczo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFBpeGVsczo6
Qml0bWFwUGl4ZWxzKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFBpeGVsczo6d2lkdGgpOgor
ICAgICAgICAoV2ViQ29yZTo6Qml0bWFwUGl4ZWxzOjpoZWlnaHQpOgorICAgICAgICAoV2ViQ29y
ZTo6Qml0bWFwUGl4ZWxzOjpzZXRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFBpeGVs
czo6YXQpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwUGl4ZWxzOjpjbGVhcik6CisgICAgICAg
IChXZWJDb3JlOjpCaXRtYXBQaXhlbHM6OmNsZWFyUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpC
aXRtYXBQaXhlbHM6OnJlcGVhdEZpcnN0Um93KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFBp
eGVsczo6c2V0UkdCQSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBQaXhlbHM6Om92ZXJSR0JB
KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFBpeGVsczo6aW5Cb3VuZHMpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om11bHRpcGx5
MjU1KToKKyAgICAgICAgKFdlYkNvcmU6OmRpdmlkZTI1NSk6CisgICAgICAgIChXZWJDb3JlOjpk
aXZpZGVDZWlsKToKKyAgICAgICAgKFdlYkNvcmU6OnByZW11bHRpcGxpZWRDaGFubmVsKToKKyAg
ICAgICAgKFdlYkNvcmU6OnVucHJlbXVsdGlwbGllZENoYW5uZWwpOgorICAgICAgICAoV2ViQ29y
ZTo6bWFrZVByZW11bHRpcGxpZWRSR0JBKToKKyAgICAgICAgKFdlYkNvcmU6Om1ha2VVblByZW11
bHRpcGxpZWRSR0JBKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVEYXRhLmg6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUZyYW1lRGF0YTo6cGl4ZWxzKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJh
bWVEYXRhOjpoYXNQaXhlbHMpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0lt
YWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpvcGVyYXRvcj0p
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6Y2xlYXJQaXhlbERhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6emVyb0ZpbGxQaXhlbERhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VGcmFtZTo6emVyb0ZpbGxGcmFtZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VGcmFtZTo6Y29weUJpdG1hcERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFt
ZTo6c2V0U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpjb3B5Um93TlRpbWVz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OmFzTmV3TmF0aXZlSW1hZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VGcmFtZTo6c2V0UkdCQSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZy
YW1lOjpnZXRBZGRyKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6Omhhc1BpeGVsRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpvdmVyUkdCQSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUZyYW1lOjp3aWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1l
OjpoZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6Y29weVJvd05UaW1lcyk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpmaXhQb2ludFVuc2lnbmVk
TXVsdGlwbHkpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6ZGl2aWRl
MjU1KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1Q
SW1hZ2VSZWFkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qk1QSW1hZ2VSZWFkZXI6OmRlY29k
ZUJNUCk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvY2Fpcm8vQml0bWFwUGl4
ZWxzQ2Fpcm8uY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvY2Fpcm8vSW1hZ2VEZWNvZGVyQ2Fpcm8uY3BwLgorICAgICAgICAoV2ViQ29yZTo6
Qml0bWFwUGl4ZWxzOjppbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
Z2lmL0dJRkltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHSUZJbWFnZURlY29k
ZXI6OmhhdmVEZWNvZGVkUm93KToKKyAgICAgICAgKFdlYkNvcmU6OkdJRkltYWdlRGVjb2Rlcjo6
ZnJhbWVDb21wbGV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHSUZJbWFnZURlY29kZXI6OmluaXRG
cmFtZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVH
SW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNldFBpeGVsKToKKyAgICAgICAg
KFdlYkNvcmU6OkpQRUdJbWFnZURlY29kZXI6Om91dHB1dFNjYW5saW5lcyk6CisgICAgICAgICog
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpzZXRQaXhlbFJHQik6CisgICAgICAgIChXZWJDb3JlOjpzZXRQaXhlbFJHQkEp
OgorICAgICAgICAoV2ViQ29yZTo6c2V0UGl4ZWxQcmVtdWx0aXBsaWVkUkdCQSk6CisgICAgICAg
IChXZWJDb3JlOjpQTkdJbWFnZURlY29kZXI6OnJvd0F2YWlsYWJsZSk6CisgICAgICAgIChXZWJD
b3JlOjpQTkdJbWFnZURlY29kZXI6OmluaXRGcmFtZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3Jl
OjpQTkdJbWFnZURlY29kZXI6OmZyYW1lQ29tcGxldGUpOgorICAgICAgICAqIHBsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXRUJQSW1hZ2VEZWNvZGVyOjpkZWNvZGUpOgorCisyMDE2LTA3LTEzICBTYWlkIEFib3UtSGFs
bGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgU3BsaXQgdGhlIHBpeGVs
IGRhdGEgb2YgSW1hZ2VGcmFtZSB0byBhIHNlcGFyYXRlIGNsYXNzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTk2NzkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIHRoZSBwaXhlbCBkYXRhIG1hbmlw
dWxhdGlvbiBwYXJ0IGluIEltYWdlRnJhbWUgaW50byBhIHNlcGFyYXRlIGNsYXNzCisgICAgICAg
IGFuZCB0aGVuIG1ha2UgaXQgb3B0aW9uYWwgKGFsbG9jYXRlZCBvbiBkZW1hbmQpLgorCisgICAg
ICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAg
ICAgICogUGxhdGZvcm1HVEsuY21ha2U6CisgICAgICAgICogUGxhdGZvcm1XaW5DYWlyby5jbWFr
ZToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwUGl4ZWxzLmg6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6Qml0bWFwUGl4ZWxzOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwUGl4
ZWxzOjpCaXRtYXBQaXhlbHMpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwUGl4ZWxzOjp3aWR0
aCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBQaXhlbHM6OmhlaWdodCk6CisgICAgICAgIChX
ZWJDb3JlOjpCaXRtYXBQaXhlbHM6OnNldFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFw
UGl4ZWxzOjphdCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBQaXhlbHM6OmNsZWFyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkJpdG1hcFBpeGVsczo6Y2xlYXJSZWN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkJpdG1hcFBpeGVsczo6cmVwZWF0Rmlyc3RSb3cpOgorICAgICAgICAoV2ViQ29yZTo6Qml0
bWFwUGl4ZWxzOjpzZXRSR0JBKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFBpeGVsczo6b3Zl
clJHQkEpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwUGl4ZWxzOjppbkJvdW5kcyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bXVs
dGlwbHkyNTUpOgorICAgICAgICAoV2ViQ29yZTo6ZGl2aWRlMjU1KToKKyAgICAgICAgKFdlYkNv
cmU6OmRpdmlkZUNlaWwpOgorICAgICAgICAoV2ViQ29yZTo6cHJlbXVsdGlwbGllZENoYW5uZWwp
OgorICAgICAgICAoV2ViQ29yZTo6dW5wcmVtdWx0aXBsaWVkQ2hhbm5lbCk6CisgICAgICAgIChX
ZWJDb3JlOjptYWtlUHJlbXVsdGlwbGllZFJHQkEpOgorICAgICAgICAoV2ViQ29yZTo6bWFrZVVu
UHJlbXVsdGlwbGllZFJHQkEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZURhdGEuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlRnJhbWVEYXRhOjpwaXhlbHMpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VGcmFtZURhdGE6Omhhc1BpeGVscyk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6Om9wZXJh
dG9yPSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpjbGVhclBpeGVsRGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjp6ZXJvRmlsbFBpeGVsRGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUZyYW1lOjp6ZXJvRmlsbEZyYW1lUmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUZyYW1lOjpjb3B5Qml0bWFwRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUZyYW1lOjpzZXRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OmNvcHlSb3dO
VGltZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5o
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6YXNOZXdOYXRpdmVJbWFnZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpzZXRSR0JBKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlRnJhbWU6OmdldEFkZHIpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6aGFzUGl4
ZWxEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6Om92ZXJSR0JBKToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OndpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
RnJhbWU6OmhlaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpjb3B5Um93TlRp
bWVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OmZpeFBvaW50VW5z
aWduZWRNdWx0aXBseSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpk
aXZpZGUyNTUpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2Jt
cC9CTVBJbWFnZVJlYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCTVBJbWFnZVJlYWRlcjo6
ZGVjb2RlQk1QKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9CaXRt
YXBQaXhlbHNDYWlyby5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZURlY29kZXJDYWlyby5jcHAuCisgICAgICAgIChXZWJD
b3JlOjpCaXRtYXBQaXhlbHM6OmltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdJRkltYWdl
RGVjb2Rlcjo6aGF2ZURlY29kZWRSb3cpOgorICAgICAgICAoV2ViQ29yZTo6R0lGSW1hZ2VEZWNv
ZGVyOjpmcmFtZUNvbXBsZXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdJRkltYWdlRGVjb2Rlcjo6
aW5pdEZyYW1lQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVn
L0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0UGl4ZWwpOgorICAg
ICAgICAoV2ViQ29yZTo6SlBFR0ltYWdlRGVjb2Rlcjo6b3V0cHV0U2NhbmxpbmVzKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnNldFBpeGVsUkdCKToKKyAgICAgICAgKFdlYkNvcmU6OnNldFBpeGVs
UkdCQSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRQaXhlbFByZW11bHRpcGxpZWRSR0JBKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBOR0ltYWdlRGVjb2Rlcjo6cm93QXZhaWxhYmxlKToKKyAgICAgICAg
KFdlYkNvcmU6OlBOR0ltYWdlRGVjb2Rlcjo6aW5pdEZyYW1lQnVmZmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlBOR0ltYWdlRGVjb2Rlcjo6ZnJhbWVDb21wbGV0ZSk6CisgICAgICAgICogcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldFQlBJbWFnZURlY29kZXI6OmRlY29kZSk6CisKKzIwMTYtMDctMTEgIFNhaWQgQWJv
dS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLGNvbT4KKworICAgICAgICBSZW5hbWUgRnJh
bWVEYXRhIHRvIEltYWdlRnJhbWVEYXRhIGFuZCBtb3ZlIGl0IHRvIGEgc2VwYXJhdGUgZmlsZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1NDQ0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSBJbWFn
ZUZyYW1lRGF0YSB0byBhIHNlcGFyYXRlIGZpbGUgc28gaXQgY2FuIGJlIGNhY2hlZCBieSBJbWFn
ZVNvdXJjZQorICAgICAgICBhbmQgd2lsbCBzdGlsbCBiZSBjb25zdW1lZCBieSBCaXRtYXBJbWFn
ZS4gTWFrZSB0aGUgZGF0YSBtZW1iZXJzIG9mIEltYWdlRnJhbWVEYXRhCisgICAgICAgIGJlIHBy
aXZhdGUgYW5kIGFkZCBnZXR0ZXJzIHRvIHJldHVybiB0aGVpciB2YWx1ZXMuCisKKyAgICAgICAg
Tm8gbmV3IHRlc3RzIC0tIENvZGUgcmVmYWN0b3JpbmcsIG5vIGJlaGF2aW9yIGNoYW5nZS4KKwor
ICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmhhdmVGcmFtZUltYWdlQXRJbmRleCk6CisgICAgICAg
IChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZGVzdHJveURlY29kZWREYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OkJpdG1hcEltYWdlOjpkZXN0cm95RGVjb2RlZERhdGFJZk5lY2Vzc2FyeSk6CisgICAg
ICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Y2FjaGVGcmFtZSk6CisgICAgICAgIChXZWJDb3Jl
OjpCaXRtYXBJbWFnZTo6ZGF0YUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1h
Z2U6OmVuc3VyZUZyYW1lSXNDYWNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6
OmZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpmcmFt
ZUlzQ29tcGxldGVBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpmcmFt
ZUR1cmF0aW9uQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZnJhbWVI
YXNBbHBoYUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmZyYW1lT3Jp
ZW50YXRpb25BdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpzaW5nbGVQ
aXhlbFNvbGlkQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmlzQWxtb3N0
U29saWRDb2xvcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lRGF0YTo6RnJhbWVEYXRhKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lRGF0YTo6fkZyYW1lRGF0YSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZURhdGE6OnVzZWRGcmFtZUJ5dGVzKTogRGVsZXRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZVNvdXJjZTo6Y3JlYXRlRnJhbWVEYXRhQXRJbmRleCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VTb3VyY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pbWFnZUZy
YW1lRGF0YS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6Oklt
YWdlRnJhbWVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVEYXRhOjp+SW1hZ2VG
cmFtZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6OmNsZWFyU3ViSW1h
Z2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVEYXRhOjpjbGVhcik6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6c2luZ2xlUGl4ZWxTb2xpZENvbG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlRnJhbWVEYXRhOjppc0FsbW9zdFNvbGlkQ29sb3IpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ltYWdlRnJhbWVEYXRhLmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6OnN0YXR1cyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUZyYW1lRGF0YTo6aXNDb21wbGV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0
YTo6c2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6ZnJhbWVCeXRlcyk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6aW1hZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VGcmFtZURhdGE6Om9yaWVudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlRnJhbWVEYXRhOjpzdWJzYW1wbGluZ0xldmVsKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
RnJhbWVEYXRhOjpkdXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6
aGFzQWxwaGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6Omhhc0ltYWdlKToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVEYXRhOjpoYXNNZXRhZGF0YSk6CisKKzIwMTYt
MDYtMjQgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLGNvbT4KKworICAg
ICAgICBJbnRyb2R1Y2UgUGxhdGZvcm1JbWFnZSBhbmQgbWFrZSBpdCBpcyBhIHdyYXBwZXIgZm9y
IE5hdGl2ZUltYWdlUHRyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNTg2ODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGUgbWFpbiBwdXJwb3NlIG9mIHRoaXMgcmVmYWN0b3JpbmcgaXMgdG8gbW92ZSB0
aGUgcGxhdGZvcm0gaW1hZ2UgZGVwZW5kZW50CisgICAgICAgIGNvZGUgZnJvbSBCaXRtYXBJbWFn
ZSB0byBQbGF0Zm9ybUltYWdlLiBQbGF0Zm9ybUltYWdlIGlzIHJlc3BvbnNpYmxlIG9mIAorICAg
ICAgICBkcmF3aW5nIHRoZSBpbWFnZSBhbmQgYW5zd2VyaW5nIE5hdGl2ZUltYWdlUHRyIHF1ZXN0
aW9ucyB3aGVuIGFuIEltYWdlRGVjb2RlcgorICAgICAgICBpcyBub3QgYXZhaWxhYmxlLiBBcGFy
dCBmcm9tIGRyYXdpbmcgdGhlIGltYWdlLCB0aGUgcXVlcnkgZnVuY3Rpb25zIHdpbGwgYmUKKyAg
ICAgICAgY2FsbGVkIG9ubHkgd2hlbiBjb25zdHJ1Y3RpbmcgYSBGcmFtZURhdGEgc28gd2Ugd2ls
bCBrZWVwIGV2ZXJ5dGhpbmcgYXMgYQorICAgICAgICBOYXRpdmVJbWFnZVB0ci4gQnV0IHdlIHdp
bGwgY2FzdCB0aGUgTmF0aXZlSW1hZ2VQdHIgdG8gUGxhdGZvcm1JbWFnZSB3aGVuCisgICAgICAg
IGEgcGxhdGZvcm0gZGVwZW5kZW50IGZ1bmN0aW9uIGlzIG5lZWRlZC4KKworICAgICAgICBObyBu
ZXcgdGVzdHMgLS0gQ29kZSByZWZhY3RvcmluZywgbm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAg
ICAgICogUGxhdGZvcm1BcHBsZVdpbi5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFr
ZToKKyAgICAgICAgKiBQbGF0Zm9ybUdUSy5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybU1hYy5j
bWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybVdpbkNhaXJvLmNtYWtlOgorICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL0RP
TS5tbToKKyAgICAgICAgKC1bRE9NTm9kZSBnZXRQcmV2aWV3U25hcHNob3RJbWFnZTphbmRSZWN0
czpdKToKKyAgICAgICAgKiBwYWdlL21hYy9UZXh0SW5kaWNhdG9yV2luZG93Lm1tOgorICAgICAg
ICAoLVtXZWJUZXh0SW5kaWNhdG9yVmlldyBpbml0V2l0aEZyYW1lOnRleHRJbmRpY2F0b3I6bWFy
Z2luOm9mZnNldDpdKToKKyAgICAgICAgKGNyZWF0ZUNvbnRlbnRDcm9zc2ZhZGVBbmltYXRpb24p
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpC
aXRtYXBJbWFnZTo6ZGVzdHJveURlY29kZWREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1h
cEltYWdlOjpkZXN0cm95RGVjb2RlZERhdGFJZk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJDb3Jl
OjpCaXRtYXBJbWFnZTo6ZGF0YUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1h
Z2U6OmZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpu
YXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VP
ZlNpemUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3Vy
cmVudEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpmcmFtZXNOYXRpdmVJ
bWFnZXMpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OnNpbmdsZVBpeGVsU29saWRD
b2xvcik6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6aXNBbG1vc3RTb2xpZENvbG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVEYXRh
OjpGcmFtZURhdGEpOgorICAgICAgICBtX2hhc0FscGhhIGNhbiBiZSBpbml0aWFsaXplZCB3aXRo
IGZhbHNlIGJlY2F1c2UgaXQgaXMgYWNjZXNzZWQgb25seSBpbgorICAgICAgICBCaXRtYXBJbWFn
ZTo6ZnJhbWVIYXNBbHBoYUF0SW5kZXgoKSBhbmQgaXQgaXMgZ3VhcmRlZCBieSBtX2hhdmVNZXRh
ZGF0YS4KKyAgICAgICAgQm90aCBtX2hhdmVNZXRhZGF0YSBhbmQgbV9oYXNBbHBoYSBhcmUgc2V0
IGluIEJpdG1hcEltYWdlIGNvbnN0cnVjdG9yCisgICAgICAgIGFuZCBpbiBCaXRtYXBJbWFnZTo6
Y2FjaGVGcmFtZSgpLgorCisgICAgICAgIChXZWJDb3JlOjpGcmFtZURhdGE6On5GcmFtZURhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVEYXRhOjpjbGVhcik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpuYXRpdmVJbWFn
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6bmF0aXZlSW1hZ2VPZlNpemUpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2U6OmZyYW1lc05hdGl2ZUltYWdlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZTo6Z2V0Q0dJbWFnZVJlZik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZTo6Z2V0Rmlyc3RDR0ltYWdlUmVmT2ZTaXplKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlOjpnZXRDR0ltYWdlQXJyYXkpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL1BsYXRmb3JtSW1hZ2UuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9y
bUltYWdlOjpQbGF0Zm9ybUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtSW1hZ2U6
OmlzTmlsKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtSW1hZ2U6OmNnSW1hZ2VSZWYpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dXBkYXRlRGlzcGxheU1vZGUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtSW1hZ2VDYWlyby5jcHA6IFJlbmFt
ZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFn
ZUNhaXJvLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtSW1hZ2U6OmNsZWFyU3ViSW1h
Z2VzKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtSW1hZ2U6OnNpemUpOgorICAgICAgICAo
V2ViQ29yZTo6UGxhdGZvcm1JbWFnZTo6aGFzQWxwaGEpOgorICAgICAgICAoV2ViQ29yZTo6UGxh
dGZvcm1JbWFnZTo6c2luZ2xlUGl4ZWxTb2xpZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlBs
YXRmb3JtSW1hZ2U6OmlzQWxtb3N0U29saWRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpQbGF0
Zm9ybUltYWdlOjpzdWJzYW1wbGluZ1NjYWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
SW1hZ2U6OmRyYXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdl
Q0cuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5D
Ry5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXR0ZXJuOjpjcmVhdGVQbGF0Zm9ybVBhdHRlcm4p
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1BsYXRmb3JtSW1hZ2VDRy5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1JbWFnZTo6Y2xlYXJTdWJJbWFnZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1JbWFnZTo6c2l6ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybUltYWdlOjpoYXNBbHBoYSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUlt
YWdlOjpzaW5nbGVQaXhlbFNvbGlkQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1J
bWFnZTo6aXNBbG1vc3RTb2xpZENvbG9yKTogTW92ZWQgZnJvbSBQbHVnaW5WaWV3LmNwcCBzaW5j
ZSBQbGF0Zm9ybUltYWdlIGlzIHdoYXQgdGhpcyBmdW5jdGlvbiBiZWxvbmdzIHRvLgorICAgICAg
ICAoV2ViQ29yZTo6UGxhdGZvcm1JbWFnZTo6c3Vic2FtcGxpbmdTY2FsZSk6IFJldHVybnMgdGhl
IHN1Yi1zYW1wbGluZyBzY2FsZSBiYXNlZCBvbiB0aGUgY29udGV4dCBzY2FsaW5nLgorICAgICAg
ICAoV2ViQ29yZTo6UGxhdGZvcm1JbWFnZTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvVGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYS5tbToKKyAgICAgICAgKFRl
eHRUcmFja1JlcHJlc2VudGF0aW9uQ29jb2E6OnVwZGF0ZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6
OmdldFRJRkZSZXByZXNlbnRhdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6TW9j
a1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWM6OnVwZGF0ZVBsYXRmb3JtTGF5ZXIpOgorICAgICAgICAq
IHBsYXRmb3JtL3dpbi9EcmFnSW1hZ2VDR1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVh
dGVEcmFnSW1hZ2VGcm9tSW1hZ2UpOgorCiAyMDE2LTA3LTEzICBBbnR0aSBLb2l2aXN0byAgPGFu
dHRpQGFwcGxlLmNvbT4KIAogICAgICAgICB2MjogV2ViQ29udGVudCBjcmFzaCBkdWUgdG8gUkVM
RUFTRV9BU1NFUlQoIW1faW5Mb2FkUGVuZGluZ0ltYWdlcykgaW4gU3R5bGVSZXNvbHZlcjo6flN0
eWxlUmVzb2x2ZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IGEwZGU3Y2QyY2E1Mzc3ZDc2YTA4M2Ex
ODMwMGZhZDVmMDViNjFkYjcuLjI4OTk0NWNiYzI3OGY3NjQyYWI2ZDk5ODY4NjFhOWRlZDNiYmU1
YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNi0wNy0xMyAgU2FpZCBB
Ym91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUsY29tPgorCisgICAgICAgIEludHJvZHVj
ZSBQbGF0Zm9ybUltYWdlIGFuZCBtYWtlIGl0IGlzIGEgd3JhcHBlciBmb3IgTmF0aXZlSW1hZ2VQ
dHIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODY4
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTWlz
Yy9XZWJDYWNoZS5tbToKKyAgICAgICAgKCtbV2ViQ2FjaGUgaW1hZ2VGb3JVUkw6XSk6CisKIDIw
MTYtMDctMTMgIEVucmljYSBDYXN1Y2NpICA8ZW5yaWNhQGFwcGxlLmNvbT4KIAogICAgICAgICBV
cGRhdGUgc3VwcG9ydGVkIHBsYXRmb3JtcyBpbiB4Y2NvbmZpZyBmaWxlcyB0byBtYXRjaCB0aGUg
c2RrIG5hbWVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGI5NThkOTU5ZTY4MTUxMjk0N2QwODkyMWI3OWJlMDY4
ZDFhZjI0MTEuLjk3MTkxMDE2ZDQ1ZTUzNjY4NGI0NzM5OTIzZDQwYTc2YjZkOGZiYzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxNi0wNy0xMyAgU2FpZCBBYm91LUhhbGxhd2EgIDxz
YWJvdWhhbGxhd2FAYXBwbGUsY29tPgorCisgICAgICAgIEludHJvZHVjZSBQbGF0Zm9ybUltYWdl
IGFuZCBtYWtlIGl0IGlzIGEgd3JhcHBlciBmb3IgTmF0aXZlSW1hZ2VQdHIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODY4NAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL2Nn
L1dLSWNvbkRhdGFiYXNlQ0cuY3BwOgorICAgICAgICAoV0tJY29uRGF0YWJhc2VUcnlHZXRDR0lt
YWdlRm9yVVJMKToKKyAgICAgICAgKFdLSWNvbkRhdGFiYXNlVHJ5Q29weUNHSW1hZ2VBcnJheUZv
clVSTCk6CisgICAgICAgIEl0IHdhcyB0aGUgb25seSBwbGFjZSBpbiB0aGUgY29kZSB3aGljaCB1
c2VzIEJpdG1hcEltYWdlOjpnZXRDR0ltYWdlQXJyYXkoKS4KKyAgICAgICAgQ2FsbCBCaXRtYXBJ
bWFnZTo6ZnJhbWVzTmF0aXZlSW1hZ2VzKCkgaW5zdGVhZCBhbmQgZm9ybSB0aGUgcmV0dXJuZWQK
KyAgICAgICAgVmVjdG9yPE5hdGl2ZUltYWdlUHRyPiBidWlsZCB0aGUgQ0ZBcnJheVJlZi4KKyAg
ICAgICAgCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
bW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX3ByZXNlbnRhdGlvblNuYXBzaG90Rm9yUHJl
dmlld0l0ZW1Db250cm9sbGVyOl0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6cGx1Z2luU25hcHNob3RU
aW1lckZpcmVkKToKKyAgICAgICAgCisgICAgICAgIChXZWJLaXQ6OmlzQWxtb3N0U29saWRDb2xv
cik6IERlbGV0ZWQuCisgICAgICAgIE1vdmUgdGhlIHN0YXRpYyBmdW5jdGlvbiBpc0FsbW9zdFNv
bGlkQ29sb3IgdG8gUGxhdGZvcm1JbWFnZTo6aXNBbG1vc3RTb2xpZENvbG9yKCkuCisKIDIwMTYt
MDctMTMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJLaXQy
IHNob3VsZG4ndCBzaWduYWwgY3VzdG9tIHByb3RvY29sIGNsaWVudHMgZnJvbSB0aGUgTlNVUkxD
b25uZWN0aW9uIGxvYWRlciB0aHJlYWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDVhZmVhM2Ex
NGVlODZlODM0ZTAxZmY1ODUxNDNhOGYxMGRhYWNjMjAuLmIyYjI3OTBiODY0MTI3ZmJhMzU5Nzdm
ZTQ4NDE4NzE0NmQwN2E4ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0yMjI5LDYgKzIyMjks
NyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSVNPVlRUQ3Vl
LmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlQnVmZmVyLmNwcAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVEYXRh
LmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlT3JpZW50YXRpb24uY3BwCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW50
UG9pbnQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUFwcGxlV2luLmNt
YWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1BcHBsZVdpbi5jbWFrZQppbmRleCA1ZmY5OTFm
ZjdkYTMwOGJiOTE4MmVjZTNiZjEyMTczMGE1NDhkMjg3Li5iYWUzMWVhZjg2ZTdmY2E5MDU4MjUw
OTJhYTM4YTc4YzExZTQyMjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUFw
cGxlV2luLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQXBwbGVXaW4uY21ha2UK
QEAgLTU1LDcgKzU1LDYgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvY2Evd2luL1dlYlRpbGVkQmFja2luZ0xheWVyV2luLmNwcAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2NhL3dpbi9XS0NBQ0ZWaWV3TGF5ZXJUcmVlSG9zdC5jcHAKIAotICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvQ29sb3JDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9GbG9hdFBvaW50Q0cu
Y3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvRmxvYXRSZWN0Q0cuY3BwCkBAIC03NSw2ICs3
NCw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0aENH
LmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAKKyAgICBwbGF0Zm9y
bS9ncmFwaGljcy9jZy9QbGF0Zm9ybUltYWdlQ0cuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9U
cmFuc2Zvcm1hdGlvbk1hdHJpeENHLmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Q
bGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4
IDUxNDUwNGU2ZWMyNWFhNWU0M2I5OTM5OGQ1ZTM1Y2VlZWE3NjZhYTQuLjY0YWUxNzEwODlkY2Jm
MGNkNDViNzBhOWI4ZjcwZWZhOWZmZGVkYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1Bs
YXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCkBA
IC0xMjIsNyArMTIyLDYgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvUGxhdGZvcm1EaXNwbGF5LmNwcAogCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vQmFja2luZ1N0b3JlQmFja2VuZENhaXJvSW1wbC5jcHAKLSAgICBwbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0NhaXJvVXRpbGl0aWVzLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRD
YWlyby5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fpcm9IYXJmYnV6ek5H
LmNwcApAQCAtMTM0LDYgKzEzMyw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAg
IHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BhdGhDYWlyby5jcHAKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9QYXR0ZXJuQ2Fpcm8uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
UGxhdGZvcm1Db250ZXh0Q2Fpcm8uY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxh
dGZvcm1JbWFnZUNhaXJvLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3Jt
UGF0aENhaXJvLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1JlZlB0ckNhaXJvLmNw
cAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1RyYW5zZm9ybWF0aW9uTWF0cml4Q2Fpcm8u
Y3BwCkBAIC0xNzksOSArMTc5LDkgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MveDExL1BsYXRmb3JtRGlzcGxheVgxMS5jcHAKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy94MTEvWFVuaXF1ZVJlc291cmNlLmNwcAogCi0gICAgcGxhdGZvcm0vaW1hZ2Ut
ZW5jb2RlcnMvSlBFR0ltYWdlRW5jb2Rlci5jcHAKKyAgICBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9jYWlyby9CaXRtYXBQaXhlbHNDYWlyby5jcHAKIAotICAgIHBsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2NhaXJvL0ltYWdlRGVjb2RlckNhaXJvLmNwcAorICAgIHBsYXRmb3JtL2ltYWdlLWVuY29k
ZXJzL0pQRUdJbWFnZUVuY29kZXIuY3BwCiAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2VmbC9OZXR3
b3JrU3RhdGVOb3RpZmllckVmbC5jcHAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxh
dGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCA2
NDVhZGQxY2UzODg4OGIwNGQ0YTJkODlhZGEwYTdjNmRlMTk5ODZiLi5kMzFmNTcwNmE2OTU5YjIz
MWI1YmZiMjJmMDdkMTg0M2FlODYxYTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0
Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAt
MTAxLDcgKzEwMSw2IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vQmFja2luZ1N0b3JlQmFja2VuZENhaXJvSW1wbC5jcHAKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CYWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm9YMTEuY3BwCi0g
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5jcHAKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb1V0aWxpdGllcy5jcHAKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9GbG9hdFJlY3RDYWlyby5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9Gb250Q2Fpcm8uY3BwCkBAIC0xMTUsNiArMTE0LDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9T
T1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0aENhaXJvLmNwcAogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BhdHRlcm5DYWlyby5jcHAKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9QbGF0Zm9ybUNvbnRleHRDYWlyby5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9QbGF0Zm9ybUltYWdlQ2Fpcm8uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vUGxhdGZvcm1QYXRoQ2Fpcm8uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUmVm
UHRyQ2Fpcm8uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vVHJhbnNmb3JtYXRpb25N
YXRyaXhDYWlyby5jcHAKQEAgLTE0OSw3ICsxNDksNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NP
VVJDRVMKICAgICBwbGF0Zm9ybS9ndGsvVGVtcG9yYXJ5TGlua1N0dWJzLmNwcAogICAgIHBsYXRm
b3JtL2d0ay9Vc2VyQWdlbnRHdGsuY3BwCiAKLSAgICBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9j
YWlyby9JbWFnZURlY29kZXJDYWlyby5jcHAKKyAgICBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9j
YWlyby9CaXRtYXBQaXhlbHNDYWlyby5jcHAKIAogICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL2d0
ay9TRFBQcm9jZXNzb3JTY3JpcHRSZXNvdXJjZUd0ay5jcHAKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5j
bWFrZQppbmRleCA5ZjZmNDk2YjZjYzRlZjZlNGI3NGQ4NGFjMGFhOWRlYTU1YTAyMzdiLi40ZGRl
ZDMwODhmNGYzOTZmZWY0NDRlN2VlNjVjNjQxMDY1OGY1ODQxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1h
Yy5jbWFrZQpAQCAtMzk3LDcgKzM5Nyw2IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1dlYlN5c3RlbUJhY2tkcm9wTGF5ZXIubW0K
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9XZWJUaWxlZEJhY2tpbmdMYXllci5tbQog
Ci0gICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFwSW1hZ2VDRy5jcHAKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0Zsb2F0
UG9pbnRDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9GbG9hdFJlY3RDRy5jcHAKQEAg
LTQxNyw2ICs0MTYsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2NnL1BhdGhDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwCisg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGxhdGZvcm1JbWFnZUNHLmNwcAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL1N1YmltYWdlQ2FjaGVXaXRoVGltZXIuY3BwCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvVHJhbnNmb3JtYXRpb25NYXRyaXhDRy5jcHAKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvUGxhdGZvcm1XaW5DYWlyby5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3Jt
V2luQ2Fpcm8uY21ha2UKaW5kZXggMmM1NTNiMDU1MWRhZDY5YWExOTlkOTYwZjU1MjM0M2Q5MjBm
MDdiMy4uMzQyYWE5MjczMmZkOGY5MmU4NWNmYTYyNmQ1NTU3MGVmNjZiNmE2OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW5DYWlyby5jbWFrZQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybVdpbkNhaXJvLmNtYWtlCkBAIC0yMSw3ICsyMSw2IEBAIGxpc3QoQVBQRU5E
IFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4dC5jcHAKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybURpc3BsYXkuY3BwCiAKLSAgICBwbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0NhaXJvVXRpbGl0aWVzLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0Zs
b2F0UmVjdENhaXJvLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyby5j
cHAKQEAgLTM0LDYgKzMzLDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0aENhaXJvLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL1BhdHRlcm5DYWlyby5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0
Zm9ybUNvbnRleHRDYWlyby5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9y
bUltYWdlQ2Fpcm8uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1QYXRo
Q2Fpcm8uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUmVmUHRyQ2Fpcm8uY3BwCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vVHJhbnNmb3JtYXRpb25NYXRyaXhDYWlyby5jcHAK
QEAgLTQ2LDcgKzQ2LDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5jcHAKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy93aW4vU2ltcGxlRm9udERhdGFDYWlyb1dpbi5jcHAKIAotICAg
IHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdlRGVjb2RlckNhaXJvLmNwcAorICAg
IHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0JpdG1hcFBpeGVsc0NhaXJvLmNwcAogCiAg
ICAgcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb25TdHViLmNwcAogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
NGU3YzNhMjI5YTE2M2E1ZjVhNjBmNjMyYmVhMGUzN2FkMjM5NDBlMC4uY2NiMDcwYmUwOWJhYzE2
ZjVmOWZkMzE5YTgzMmM5NzgwOWIyMTE5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTQ4NSw3ICsxNDg1LDcgQEAKIAkJMzc1
Q0QyMzIxMTlENDNDODAwQTJBODU5IC8qIEh5cGhlbmF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzVDRDIzMTExOUQ0M0M4MDBBMkE4NTkgLyog
SHlwaGVuYXRpb24uaCAqLzsgfTsKIAkJMzc2RENDRTExM0I0Rjk2NjAwMkVCRUZDIC8qIFRleHRS
dW4uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzc2
RENDRTAxM0I0Rjk2NjAwMkVCRUZDIC8qIFRleHRSdW4uY3BwICovOyB9OwogCQkzNzc0QUJBNTBG
QTIxRUI0MDBBRDdERTkgLyogT3ZlcmxhcFRlc3RSZXF1ZXN0Q2xpZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzc0QUJBMzBGQTIxRUI0MDBBRDdE
RTkgLyogT3ZlcmxhcFRlc3RSZXF1ZXN0Q2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJMzc3QTNBOTAxNUVGQ0U5QjAwNTlGNUM3IC8qIEJp
dG1hcEltYWdlQ0cuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMzc3QTNBOEYxNUVGQ0U5QTAwNTlGNUM3IC8qIEJpdG1hcEltYWdlQ0cuY3BwICovOyB9
OworCQkzNzdBM0E5MDE1RUZDRTlCMDA1OUY1QzcgLyogUGxhdGZvcm1JbWFnZUNHLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3N0EzQThGMTVFRkNF
OUEwMDU5RjVDNyAvKiBQbGF0Zm9ybUltYWdlQ0cuY3BwICovOyB9OwogCQkzNzkxOUMyMzBCN0Qx
ODg2MDBBNTY5OTggLyogUG9zaXRpb25JdGVyYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzkxOUMyMTBCN0QxODg2MDBBNTY5OTggLyogUG9z
aXRpb25JdGVyYXRvci5jcHAgKi87IH07CiAJCTM3OTE5QzI0MEI3RDE4ODYwMEE1Njk5OCAvKiBQ
b3NpdGlvbkl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAzNzkxOUMyMjBCN0QxODg2MDBBNTY5OTggLyogUG9zaXRpb25JdGVyYXRvci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKCk7IH07IH07CiAJCTM3OTI5MTdBMTk4NUVGMzkw
MEY0QjY2MSAvKiBDcmVkZW50aWFsQmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMzc5MjkxNzgxOTg1RUYzOTAwRjRCNjYxIC8qIENyZWRlbnRpYWxC
YXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAg
LTIzMjQsMTAgKzIzMjQsMTQgQEAKIAkJNTNFRDNGREYxNjdBODhFNzAwNjc2MkU2IC8qIEpTSW50
ZXJuYWxTZXR0aW5nc0dlbmVyYXRlZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTNFRDNGREQxNjdBODhFNzAwNjc2MkU2IC8qIEpTSW50ZXJuYWxTZXR0
aW5nc0dlbmVyYXRlZC5oICovOyB9OwogCQk1M0VGNzY2QjE2NTMwQTYxMDA0Q0JFNDkgLyogU2V0
dGluZ3NNYWNyb3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUzRUY3NjZBMTY1MzBBNjEwMDRDQkU0OSAvKiBTZXR0aW5nc01hY3Jvcy5oICovOyB9Owog
CQk1M0VGNzY2QzE2NTMxOTk0MDA0Q0JFNDkgLyogU2V0dGluZ3NNYWNyb3MuaCBpbiBDb3B5IEdl
bmVyYXRlZCBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRUY3
NjZBMTY1MzBBNjEwMDRDQkU0OSAvKiBTZXR0aW5nc01hY3Jvcy5oICovOyB9OworCQk1NTA0RTRD
QjFEMzU1N0IyMDBGRTUwODggLyogQml0bWFwUGl4ZWxzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTA0RTRDQTFEMzU1MzJEMDBGRTUwODggLyogQml0
bWFwUGl4ZWxzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNTUwQTBCQzkwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTUwQTBCQzcwODVGNjAz
OTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuY3BwICovOyB9OwogCQk1NTBBMEJDQTA4NUY2MDM5
MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTUwQTBCQzgwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5h
bWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1
NTVCODdFQzFDQUFGMEFCMDAzNDk0MjUgLyogSW1hZ2VEZWNvZGVyQ0cuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTU1Qjg3RUExQ0FBRjBBQjAwMzQ5
NDI1IC8qIEltYWdlRGVjb2RlckNHLmNwcCAqLzsgfTsKIAkJNTU1Qjg3RUQxQ0FBRjBBQjAwMzQ5
NDI1IC8qIEltYWdlRGVjb2RlckNHLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1NTVCODdFQjFDQUFGMEFCMDAzNDk0MjUgLyogSW1hZ2VEZWNvZGVyQ0cu
aCAqLzsgfTsKKwkJNTU3NEYwODcxRDAyNzkwOTAwQjlGMTRDIC8qIFBsYXRmb3JtSW1hZ2UuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1NzRGMDg1MUQw
Mjc0NDQwMEI5RjE0QyAvKiBQbGF0Zm9ybUltYWdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTVDQkE2QTExRDFERjJFMTAwNDUxODYwIC8qIElt
YWdlRnJhbWVEYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDU1Q0JBNjlGMUQxREYyRTEwMDQ1MTg2MCAvKiBJbWFnZUZyYW1lRGF0YS5jcHAgKi87
IH07CisJCTU1Q0JBNkEyMUQxREYyRTEwMDQ1MTg2MCAvKiBJbWFnZUZyYW1lRGF0YS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTVDQkE2QTAxRDFERjJF
MTAwNDUxODYwIC8qIEltYWdlRnJhbWVEYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTcyQTdGMjExQzZFNTcxOTAwOUM2MTQ5IC8qIFNpbXVs
YXRlZENsaWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1NzJBN0YyMDFDNkU1NzE5MDA5QzYxNDkgLyogU2ltdWxhdGVkQ2xpY2suaCAqLzsgfTsKIAkJ
NTcyQTdGMjMxQzZFNUE2NjAwOUM2MTQ5IC8qIFNpbXVsYXRlZENsaWNrLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MkE3RjIyMUM2RTVBNjYwMDlD
NjE0OSAvKiBTaW11bGF0ZWRDbGljay5jcHAgKi87IH07CiAJCTU3RUY1RTYwMUQyMEM4MzkwMDE3
MUU2MCAvKiBUZXh0Q29kZWNSZXBsYWNlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTdFRjVFNUYxRDIwQzgzOTAwMTcxRTYwIC8qIFRleHRDb2Rl
Y1JlcGxhY2VtZW50LmggKi87IH07CkBAIC05MDYzLDcgKzkwNjcsNyBAQAogCQkzNzZEQ0NFMDEz
QjRGOTY2MDAyRUJFRkMgLyogVGV4dFJ1bi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBUZXh0UnVuLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzc3
MkIwOTUxNjUzNTg1NjAwMEE0OUNBIC8qIFBvcHVwT3BlbmluZ09ic2VydmVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBvcHVwT3BlbmluZ09ic2VydmVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3NzRBQkEzMEZBMjFFQjQwMEFEN0RFOSAvKiBPdmVybGFw
VGVzdFJlcXVlc3RDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT3Zl
cmxhcFRlc3RSZXF1ZXN0Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTM3
N0EzQThGMTVFRkNFOUEwMDU5RjVDNyAvKiBCaXRtYXBJbWFnZUNHLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJpdG1hcEltYWdlQ0cuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkzNzdBM0E4RjE1RUZDRTlBMDA1OUY1QzcgLyogUGxhdGZvcm1JbWFn
ZUNHLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBsYXRmb3JtSW1h
Z2VDRy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3OTE5QzIxMEI3RDE4ODYw
MEE1Njk5OCAvKiBQb3NpdGlvbkl0ZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBQb3NpdGlvbkl0ZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMzc5MTlDMjIwQjdEMTg4NjAwQTU2OTk4IC8qIFBvc2l0aW9uSXRlcmF0b3IuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBvc2l0aW9uSXRlcmF0b3IuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzc5MjkxNzgxOTg1RUYzOTAwRjRCNjYxIC8qIENy
ZWRlbnRpYWxCYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyZWRlbnRp
YWxCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05OTg5LDEwICs5OTkzLDE0
IEBACiAJCTUzRUQzRkRDMTY3QTg4RTcwMDY3NjJFNiAvKiBKU0ludGVybmFsU2V0dGluZ3NHZW5l
cmF0ZWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNJbnRlcm5h
bFNldHRpbmdzR2VuZXJhdGVkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTNF
RDNGREQxNjdBODhFNzAwNjc2MkU2IC8qIEpTSW50ZXJuYWxTZXR0aW5nc0dlbmVyYXRlZC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0ludGVybmFsU2V0dGluZ3NHZW5lcmF0
ZWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTNFRjc2NkExNjUzMEE2MTAwNENC
RTQ5IC8qIFNldHRpbmdzTWFjcm9zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNldHRpbmdzTWFjcm9zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU1MDRFNENB
MUQzNTUzMkQwMEZFNTA4OCAvKiBCaXRtYXBQaXhlbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQml0bWFw
UGl4ZWxzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU1MEEwQkM3MDg1RjYwMzkw
MDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFF1YWxpZmllZE5hbWUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJNTUwQTBCQzgw
ODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUXVhbGlmaWVkTmFtZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJNTU1Qjg3RUEx
Q0FBRjBBQjAwMzQ5NDI1IC8qIEltYWdlRGVjb2RlckNHLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdlRGVjb2RlckNHLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTU1Qjg3RUIxQ0FBRjBBQjAwMzQ5NDI1IC8qIEltYWdlRGVjb2RlckNHLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlRGVjb2RlckNHLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU1NzRGMDg1MUQwMjc0NDQwMEI5RjE0QyAvKiBQbGF0
Zm9ybUltYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtSW1hZ2UuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNTVDQkE2OUYxRDFERjJFMTAwNDUxODYwIC8qIEltYWdlRnJhbWVE
YXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdlRnJhbWVE
YXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTVDQkE2QTAxRDFERjJFMTAw
NDUxODYwIC8qIEltYWdlRnJhbWVEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEltYWdlRnJhbWVEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU1RDQw
OEY3MUE3QzYzMTgwMEM3ODQ1MCAvKiBTVkdJbWFnZUNsaWVudHMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU1ZHSW1hZ2VDbGllbnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTU3MkE3RjIwMUM2RTU3MTkwMDlDNjE0OSAvKiBTaW11bGF0ZWRDbGljay5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaW11bGF0ZWRDbGljay5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1NzJBN0YyMjFDNkU1QTY2MDA5QzYxNDkgLyogU2ltdWxh
dGVkQ2xpY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2ltdWxh
dGVkQ2xpY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjIwMjgsNyArMjIw
MzYsNiBAQAogCQlCMjc1MzUyOTBCMDUzODE0MDAyQ0U2NEYgLyogY2cgKi8gPSB7CiAJCQlpc2Eg
PSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTM3N0EzQThGMTVFRkNFOUEwMDU5RjVD
NyAvKiBCaXRtYXBJbWFnZUNHLmNwcCAqLywKIAkJCQkwRkNGMzMyMzBGMkI5NzE1MDA0QjY3OTUg
LyogQ29sb3JDRy5jcHAgKi8sCiAJCQkJQjI3NTM1MkIwQjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0
UG9pbnRDRy5jcHAgKi8sCiAJCQkJQjI3NTM1MkMwQjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0UmVj
dENHLmNwcCAqLywKQEAgLTIyMDU1LDYgKzIyMDYyLDcgQEAKIAkJCQlBODBBMzhGRDBFNTBDQzgy
MDBBMjVFQkMgLyogUGF0dGVybkNHLmNwcCAqLywKIAkJCQlCMjc1MzUzNjBCMDUzODE0MDAyQ0U2
NEYgLyogUERGRG9jdW1lbnRJbWFnZS5jcHAgKi8sCiAJCQkJQjI3NTM1MzcwQjA1MzgxNDAwMkNF
NjRGIC8qIFBERkRvY3VtZW50SW1hZ2UuaCAqLywKKwkJCQkzNzdBM0E4RjE1RUZDRTlBMDA1OUY1
QzcgLyogUGxhdGZvcm1JbWFnZUNHLmNwcCAqLywKIAkJCQkxRkM0MEZCODE2NTVDNTkxMDA0MEYy
OUUgLyogU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5jcHAgKi8sCiAJCQkJMUZDNDBGQjcxNjU1QzU5
MTAwNDBGMjlFIC8qIFN1YmltYWdlQ2FjaGVXaXRoVGltZXIuaCAqLywKIAkJCQlCMjc1MzUyQTBC
MDUzODE0MDAyQ0U2NEYgLyogVHJhbnNmb3JtYXRpb25NYXRyaXhDRy5jcHAgKi8sCkBAIC0yMjEy
Miw2ICsyMjEzMCw3IEBACiAJCQkJQkVGMjlFRTkxNzE1REQwOTAwQzRCNEM5IC8qIEF1ZGlvVHJh
Y2tQcml2YXRlLmggKi8sCiAJCQkJQTg5OTQzMjcwQjQyMzM4NzAwRDdDODAyIC8qIEJpdG1hcElt
YWdlLmNwcCAqLywKIAkJCQlBODk5NDMyNjBCNDIzMzg3MDBEN0M4MDIgLyogQml0bWFwSW1hZ2Uu
aCAqLywKKwkJCQk1NTA0RTRDQTFEMzU1MzJEMDBGRTUwODggLyogQml0bWFwUGl4ZWxzLmggKi8s
CiAJCQkJQ0RERTAyRTkxOEIzREZDNzAwQ0Y3RkYxIC8qIENETVNlc3Npb24uaCAqLywKIAkJCQlC
Mjc1MzUzODBCMDUzODE0MDAyQ0U2NEYgLyogQ29sb3IuY3BwICovLAogCQkJCUIyNzUzNTM5MEIw
NTM4MTQwMDJDRTY0RiAvKiBDb2xvci5oICovLApAQCAtMjIyMDYsNiArMjIyMTUsOCBAQAogCQkJ
CTQzRDI1OTc2MTNDODE2RjQwMDYwODU1OSAvKiBJbWFnZUJ1ZmZlci5jcHAgKi8sCiAJCQkJQjJB
MTBCOTEwQjM4MThCRDAwMDk5QUE0IC8qIEltYWdlQnVmZmVyLmggKi8sCiAJCQkJMjJCRDlGN0Qx
MzUzNjI1QzAwOUJEMTAyIC8qIEltYWdlQnVmZmVyRGF0YS5oICovLAorCQkJCTU1Q0JBNjlGMUQx
REYyRTEwMDQ1MTg2MCAvKiBJbWFnZUZyYW1lRGF0YS5jcHAgKi8sCisJCQkJNTVDQkE2QTAxRDFE
RjJFMTAwNDUxODYwIC8qIEltYWdlRnJhbWVEYXRhLmggKi8sCiAJCQkJQkM3RjQ0QTcwQjlFMzI0
RTAwQTlEMDgxIC8qIEltYWdlT2JzZXJ2ZXIuaCAqLywKIAkJCQlBODc0OEQ3NDEyQ0MzRjg5MDAx
RkJBNDEgLyogSW1hZ2VPcmllbnRhdGlvbi5jcHAgKi8sCiAJCQkJQTg3NDhENjYxMkNDMzc2MzAw
MUZCQTQxIC8qIEltYWdlT3JpZW50YXRpb24uaCAqLywKQEAgLTIyMjU1LDYgKzIyMjY2LDcgQEAK
IAkJCQkyRDUwMDJGQTFCNTZENzk5MDAyMEFBRjcgLyogUGF0aFV0aWxpdGllcy5oICovLAogCQkJ
CUE4RkE2RTVDMEU0Q0ZERUQwMEQ1Q0Y0OSAvKiBQYXR0ZXJuLmNwcCAqLywKIAkJCQlBOEZBNkU1
QjBFNENGREVEMDBENUNGNDkgLyogUGF0dGVybi5oICovLAorCQkJCTU1NzRGMDg1MUQwMjc0NDQw
MEI5RjE0QyAvKiBQbGF0Zm9ybUltYWdlLmggKi8sCiAJCQkJMDU2MkY5NjAxNTczRjg4RjAwMzFD
QTE2IC8qIFBsYXRmb3JtTGF5ZXIuaCAqLywKIAkJCQlDRUVGQ0Q3QjE5REIzM0RDMDAzODc2RDcg
LyogUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmggKi8sCiAJCQkJMDcyODQ3RTIxNkVCQzVC
MDAwNDNDRkE0IC8qIFBsYXRmb3JtVGV4dFRyYWNrLmggKi8sCkBAIC0yNjAyOCw2ICsyNjA0MCw3
IEBACiAJCQkJODVFNzExQjkwQUM1RDUzNTAwNTMyNzBGIC8qIERPTUhUTUxNYXBFbGVtZW50SW50
ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNTE1NzlGMEMwM0JCRDMwMDhCQjBFRSAvKiBE
T01IVE1MTWFycXVlZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNTE1NkVBMEMwM0I3
NDEwMDhCQjBFRSAvKiBET01IVE1MTWFycXVlZUVsZW1lbnRJbnRlcm5hbC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNTU3NEYwODcxRDAyNzkwOTAwQjlGMTRDIC8qIFBsYXRmb3JtSW1hZ2UuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTJERUM2NjU1MUM4MkQwNDEwMDk5ODQ2QSAvKiBET01IVE1MTWVkaWFF
bGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkyREVDNjY1MTFDODJEMDE2MDA5OTg0NkEgLyog
RE9NSFRNTE1lZGlhRWxlbWVudEludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NUJBNEQx
MzBBQTY4ODY4MDA4ODA1MkQgLyogRE9NSFRNTE1lbnVFbGVtZW50LmggaW4gSGVhZGVycyAqLywK
QEAgLTI2NDY5LDYgKzI2NDgyLDcgQEAKIAkJCQlEMzU5RDc4QTEyOUNBMjcxMDAwNkU1RDIgLyog
SFRNTERldGFpbHNFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEVBNzlGQTBBMTkxNkRG
MDBBOEVGNUYgLyogSFRNTERpcmVjdG9yeUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4
RUE3Q0I3MEExOTJCOUMwMEE4RUY1RiAvKiBIVE1MRGl2RWxlbWVudC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJNTVDQkE2QTIxRDFERjJFMTAwNDUxODYwIC8qIEltYWdlRnJhbWVEYXRhLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBOEVBNzlGNzBBMTkxNkRGMDBBOEVGNUYgLyogSFRNTERMaXN0RWxlbWVu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNGMTk4RTUwODI0NUU1OTAwMUU5QUJDIC8qIEhUTUxE
b2N1bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc3QjM4NjcxMjI4ODNFOTAwQjgxRkY4IC8q
IEhUTUxEb2N1bWVudFBhcnNlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yODM2OSw2ICsyODM4Myw3
IEBACiAJCQkJQjIyMjc5OTMwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0FuaW1hdGVNb3Rpb25FbGVt
ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyNzk5NTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZH
QW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3OTk4MEQw
MEJGMjIwMDcxQjc4MiAvKiBTVkdBbmltYXRpb25FbGVtZW50LmggaW4gSGVhZGVycyAqLywKKwkJ
CQk1NTA0RTRDQjFEMzU1N0IyMDBGRTUwODggLyogQml0bWFwUGl4ZWxzLmggaW4gSGVhZGVycyAq
LywKIAkJCQk0MzlEMzM0NTEzQTY5MTFDMDBDMjBGNEYgLyogU1ZHQW5pbWF0b3JGYWN0b3J5Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwOEZCM0Y4NDEzQkM3NTRDMDA5OUZDMTggLyogU1ZHQXR0cmli
dXRlVG9Qcm9wZXJ0eU1hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5OUMwRDAwQkYyMjAw
NzFCNzgyIC8qIFNWR0NpcmNsZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjk0MjEsNyAr
Mjk0MzYsNyBAQAogCQkJCUZEQzU0RjA0MTM5OUIwREEwMDhEOTExNyAvKiBCaXF1YWRGaWx0ZXJO
b2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZEMzE2MDI2MTJCMDI2NzYwMEMxQTM1OSAvKiBC
aXF1YWRQcm9jZXNzb3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTg5OTQzMjkwQjQyMzM4ODAw
RDdDODAyIC8qIEJpdG1hcEltYWdlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTM3N0EzQTkwMTVF
RkNFOUIwMDU5RjVDNyAvKiBCaXRtYXBJbWFnZUNHLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTM3
N0EzQTkwMTVFRkNFOUIwMDU5RjVDNyAvKiBQbGF0Zm9ybUltYWdlQ0cuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJOTc2RDZDNzgxMjJCOEEzRDAwMUZEMUY3IC8qIEJsb2IuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMkVERUYxRjMxMjFCMEVGQzAwNzI2REIyIC8qIEJsb2JEYXRhLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUUxRDMxQ0RDMTkxOTYwMjAwMDEwMDVBMyAvKiBCbG9iRGF0YUZpbGVSZWZl
cmVuY2UuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yOTc4NCw2ICsyOTc5OSw3IEBACiAJCQkJMkUy
RDk5RTgxMEUyQkMxQzAwNDk2MzM3IC8qIERPTUJsb2IubW0gaW4gU291cmNlcyAqLywKIAkJCQk4
NTA4OUNEODBBOThDNDI4MDBBMjc1QUEgLyogRE9NQ0RBVEFTZWN0aW9uLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJODVBQ0E5ODcwQTlCNTIwMzAwNjcxRTkwIC8qIERPTUNoYXJhY3RlckRhdGEubW0g
aW4gU291cmNlcyAqLywKKwkJCQk1NUNCQTZBMTFEMURGMkUxMDA0NTE4NjAgLyogSW1hZ2VGcmFt
ZURhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODUwODlDREEwQTk4QzQyODAwQTI3NUFBIC8q
IERPTUNvbW1lbnQubW0gaW4gU291cmNlcyAqLywKIAkJCQk5NzhEMDdCRTE0NUEwRjZDMDA5Njkw
OEQgLyogRE9NQ29yZUV4Y2VwdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NThDMzhBNjBB
QThGMjA0MDBCMTg3QTQgLyogRE9NQ291bnRlci5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET00ubW0gYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9vYmpjL0RPTS5tbQppbmRleCA0MDExZWEzZmQ4YzA0Njk3NGM1NWQ0OGUzOTZmMWI4
M2I4MWYzMzVkLi5hNWFjNGYwNWFlMzM5YThkNjQ3MDZjMTBmYzBmN2FmNDA0MjU2MjNjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTS5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTS5tbQpAQCAtNjA2LDcgKzYwNiw3IEBAIC0gKHZvaWQp
Z2V0UHJldmlld1NuYXBzaG90SW1hZ2U6KENHSW1hZ2VSZWYqKWNnSW1hZ2UgYW5kUmVjdHM6KE5T
QXJyYXkgKiopcmVjdHMKIAogICAgIGlmICh0ZXh0SW5kaWNhdG9yKSB7CiAgICAgICAgIGlmIChJ
bWFnZSogaW1hZ2UgPSB0ZXh0SW5kaWNhdG9yLT5jb250ZW50SW1hZ2UoKSkKLSAgICAgICAgICAg
ICpjZ0ltYWdlID0gKENHSW1hZ2VSZWYpQ0ZBdXRvcmVsZWFzZShDR0ltYWdlUmV0YWluKGltYWdl
LT5nZXRDR0ltYWdlUmVmKCkpKTsKKyAgICAgICAgICAgICpjZ0ltYWdlID0gaW1hZ2UtPm5hdGl2
ZUltYWdlKCkuYXV0b3JlbGVhc2UoKTsKICAgICB9CiAKICAgICBSZXRhaW5QdHI8TlNNdXRhYmxl
QXJyYXk+IHJlY3RBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvVGV4dEluZGljYXRvcldpbmRv
dy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1RleHRJbmRpY2F0b3JXaW5kb3cubW0KaW5k
ZXggMzY0YTlhODdjZTZmMDY2Mzk0OGI4ODQ2ZThlMmNlNmQxOTBmMjQ4OS4uYTc0ZGE4NWFjZWNh
M2M2Njk4ZGQxNTZhYjMxYTZjOTcxYTM1NGU2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9tYWMvVGV4dEluZGljYXRvcldpbmRvdy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L21hYy9UZXh0SW5kaWNhdG9yV2luZG93Lm1tCkBAIC0xNjIsOSArMTYyLDkgQEAgLSAoaW5zdGFu
Y2V0eXBlKWluaXRXaXRoRnJhbWU6KE5TUmVjdClmcmFtZSB0ZXh0SW5kaWNhdG9yOihQYXNzUmVm
UHRyPFRleHRJbmRpY2EKICAgICBjb250ZW50c0ltYWdlTG9naWNhbFNpemUuc2NhbGUoMSAvIF90
ZXh0SW5kaWNhdG9yLT5jb250ZW50SW1hZ2VTY2FsZUZhY3RvcigpKTsKICAgICBSZXRhaW5QdHI8
Q0dJbWFnZVJlZj4gY29udGVudHNJbWFnZTsKICAgICBpZiAoaW5kaWNhdG9yV2FudHNDb250ZW50
Q3Jvc3NmYWRlKCpfdGV4dEluZGljYXRvcikpCi0gICAgICAgIGNvbnRlbnRzSW1hZ2UgPSBfdGV4
dEluZGljYXRvci0+Y29udGVudEltYWdlV2l0aEhpZ2hsaWdodCgpLT5nZXRDR0ltYWdlUmVmKCk7
CisgICAgICAgIGNvbnRlbnRzSW1hZ2UgPSBfdGV4dEluZGljYXRvci0+Y29udGVudEltYWdlV2l0
aEhpZ2hsaWdodCgpLT5uYXRpdmVJbWFnZSgpOwogICAgIGVsc2UKLSAgICAgICAgY29udGVudHNJ
bWFnZSA9IF90ZXh0SW5kaWNhdG9yLT5jb250ZW50SW1hZ2UoKS0+Z2V0Q0dJbWFnZVJlZigpOwor
ICAgICAgICBjb250ZW50c0ltYWdlID0gX3RleHRJbmRpY2F0b3ItPmNvbnRlbnRJbWFnZSgpLT5u
YXRpdmVJbWFnZSgpOwogCiAgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBib3VuY2VMYXll
cnMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKIApAQCAtMjY1LDcg
KzI2NSw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8Q0FLZXlmcmFtZUFuaW1hdGlvbj4gY3JlYXRlQm91
bmNlQW5pbWF0aW9uKENGVGltZUludGVydmFsIGR1cmF0CiBzdGF0aWMgUmV0YWluUHRyPENBQmFz
aWNBbmltYXRpb24+IGNyZWF0ZUNvbnRlbnRDcm9zc2ZhZGVBbmltYXRpb24oQ0ZUaW1lSW50ZXJ2
YWwgZHVyYXRpb24sIFRleHRJbmRpY2F0b3ImIHRleHRJbmRpY2F0b3IpCiB7CiAgICAgUmV0YWlu
UHRyPENBQmFzaWNBbmltYXRpb24+IGNyb3NzZmFkZUFuaW1hdGlvbiA9IFtDQUJhc2ljQW5pbWF0
aW9uIGFuaW1hdGlvbldpdGhLZXlQYXRoOkAiY29udGVudHMiXTsKLSAgICBSZXRhaW5QdHI8Q0dJ
bWFnZVJlZj4gY29udGVudHNJbWFnZSA9IHRleHRJbmRpY2F0b3IuY29udGVudEltYWdlKCktPmdl
dENHSW1hZ2VSZWYoKTsKKyAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gY29udGVudHNJbWFnZSA9
IHRleHRJbmRpY2F0b3IuY29udGVudEltYWdlKCktPm5hdGl2ZUltYWdlKCk7CiAgICAgW2Nyb3Nz
ZmFkZUFuaW1hdGlvbiBzZXRUb1ZhbHVlOihpZCljb250ZW50c0ltYWdlLmdldCgpXTsKICAgICBb
Y3Jvc3NmYWRlQW5pbWF0aW9uIHNldEZpbGxNb2RlOmtDQUZpbGxNb2RlRm9yd2FyZHNdOwogICAg
IFtjcm9zc2ZhZGVBbmltYXRpb24gc2V0UmVtb3ZlZE9uQ29tcGxldGlvbjpOT107CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKaW5kZXggNDYw
ZDFiODU2Yjc3YjdjZjRlYzY4OTY1ODFiODMzZDNlN2Y5NzAxNC4uZmM2NDlkMTBhYWI5YzEzZmZm
MjkzMDU1YTcwN2NiNzQ1Mzc0NjkxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcApAQCAtNjgsMTUgKzY4LDEzIEBAIEJpdG1hcEltYWdl
OjpCaXRtYXBJbWFnZShOYXRpdmVJbWFnZVB0ciYmIGltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNl
cnZlcikKICAgICAsIG1faGF2ZUZyYW1lQ291bnQodHJ1ZSkKICAgICAsIG1fYW5pbWF0aW9uRmlu
aXNoZWRXaGVuQ2F0Y2hpbmdVcChmYWxzZSkKIHsKKyAgICBtX2ZyYW1lcy5yZXNlcnZlSW5pdGlh
bENhcGFjaXR5KDEpOworICAgIG1fZnJhbWVzLnVuY2hlY2tlZEFwcGVuZChXVEZNb3ZlKGltYWdl
KSk7CisgICAgCiAgICAgLy8gU2luY2Ugd2UgZG9uJ3QgaGF2ZSBhIGRlY29kZXIsIHdlIGNhbid0
IGZpZ3VyZSBvdXQgdGhlIGltYWdlIG9yaWVudGF0aW9uLgogICAgIC8vIFNldCBtX3NpemVSZXNw
ZWN0aW5nT3JpZW50YXRpb24gdG8gYmUgdGhlIHNhbWUgYXMgbV9zaXplIHNvIGl0J3Mgbm90IDB4
MC4KLSAgICBtX3NpemVSZXNwZWN0aW5nT3JpZW50YXRpb24gPSBtX3NpemUgPSBOYXRpdmVJbWFn
ZTo6c2l6ZShpbWFnZSk7CisgICAgbV9zaXplUmVzcGVjdGluZ09yaWVudGF0aW9uID0gbV9zaXpl
ID0gbV9mcmFtZXNbMF0uc2l6ZSgpOwogICAgIG1fZGVjb2RlZFNpemUgPSBtX3NpemUuYXJlYSgp
ICogNDsKLSAgICAKLSAgICBtX2ZyYW1lcy5ncm93KDEpOwotICAgIG1fZnJhbWVzWzBdLm1faGFz
QWxwaGEgPSBOYXRpdmVJbWFnZTo6aGFzQWxwaGEoaW1hZ2UpOwotICAgIG1fZnJhbWVzWzBdLm1f
aGF2ZU1ldGFkYXRhID0gdHJ1ZTsKLSAgICBtX2ZyYW1lc1swXS5tX2ltYWdlID0gV1RGTW92ZShp
bWFnZSk7CiB9CiAKIEJpdG1hcEltYWdlOjp+Qml0bWFwSW1hZ2UoKQpAQCAtMTA1LDcgKzEwMyw3
IEBAIGJvb2wgQml0bWFwSW1hZ2U6OmhhdmVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgp
CiAgICAgaWYgKGluZGV4ID49IG1fZnJhbWVzLnNpemUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgcmV0dXJuIG1fZnJhbWVzW2luZGV4XS5tX2ltYWdlOworICAgIHJldHVybiBtX2Zy
YW1lc1tpbmRleF0uaGFzSW1hZ2UoKTsKIH0KIAogYm9vbCBCaXRtYXBJbWFnZTo6aGFzU2luZ2xl
U2VjdXJpdHlPcmlnaW4oKSBjb25zdApAQCAtMTI1LDkgKzEyMyw3IEBAIHZvaWQgQml0bWFwSW1h
Z2U6OmRlc3Ryb3lEZWNvZGVkRGF0YShib29sIGRlc3Ryb3lBbGwpCiAgICAgICAgIC8vIFRoZSB1
bmRlcmx5aW5nIGZyYW1lIGlzbid0IGFjdHVhbGx5IGNoYW5naW5nICh3ZSdyZSBqdXN0IHRyeWlu
ZyB0bwogICAgICAgICAvLyBzYXZlIHRoZSBtZW1vcnkgZm9yIHRoZSBmcmFtZWJ1ZmZlciBkYXRh
KSwgc28gd2UgZG9uJ3QgbmVlZCB0byBjbGVhcgogICAgICAgICAvLyB0aGUgbWV0YWRhdGEuCi0g
ICAgICAgIHVuc2lnbmVkIGZyYW1lQnl0ZXMgPSBtX2ZyYW1lc1tpXS5tX2ZyYW1lQnl0ZXM7Ci0g
ICAgICAgIGlmIChtX2ZyYW1lc1tpXS5jbGVhcihmYWxzZSkpCi0gICAgICAgICAgICBmcmFtZUJ5
dGVzQ2xlYXJlZCArPSBmcmFtZUJ5dGVzOworICAgICAgICBmcmFtZUJ5dGVzQ2xlYXJlZCArPSBt
X2ZyYW1lc1tpXS5jbGVhcihJbWFnZUZyYW1lRGF0YTo6Q2FjaGluZzo6TWV0YWRhdGEpOwogICAg
IH0KIAogICAgIG1fc291cmNlLmNsZWFyKGRlc3Ryb3lBbGwsIGNsZWFyQmVmb3JlRnJhbWUsIGRh
dGEoKSwgbV9hbGxEYXRhUmVjZWl2ZWQpOwpAQCAtMTUwLDggKzE0Niw4IEBAIHZvaWQgQml0bWFw
SW1hZ2U6OmRlc3Ryb3lEZWNvZGVkRGF0YUlmTmVjZXNzYXJ5KGJvb2wgZGVzdHJveUFsbCkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgdW5zaWduZWQgYWxsRnJhbWVCeXRlcyA9IDA7Ci0gICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBtX2ZyYW1lcy5zaXplKCk7ICsraSkKLSAgICAgICAgYWxsRnJh
bWVCeXRlcyArPSBtX2ZyYW1lc1tpXS51c2VkRnJhbWVCeXRlcygpOworICAgIGZvciAoYXV0byYg
ZnJhbWUgOiBtX2ZyYW1lcykKKyAgICAgICAgYWxsRnJhbWVCeXRlcyArPSBmcmFtZS5mcmFtZUJ5
dGVzKCk7CiAKICAgICBpZiAoYWxsRnJhbWVCeXRlcyA+IGxhcmdlQW5pbWF0aW9uQ3V0b2ZmKSB7
CiAgICAgICAgIExPRyhJbWFnZXMsICJCaXRtYXBJbWFnZSAlcCBkZXN0cm95RGVjb2RlZERhdGFJ
Zk5lY2Vzc2FyeSBkZXN0cm95aW5nRGF0YTogYWxsRnJhbWVCeXRlcz0ldSBjdXRvZmY9JXUiLCB0
aGlzLCBhbGxGcmFtZUJ5dGVzLCBsYXJnZUFuaW1hdGlvbkN1dG9mZik7CkBAIC0xNzcsNyArMTcz
LDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZGVzdHJveU1ldGFkYXRhQW5kTm90aWZ5KHVuc2lnbmVk
IGZyYW1lQnl0ZXNDbGVhcmVkLCBDbGVhcmVkU28KICAgICAgICAgaW1hZ2VPYnNlcnZlcigpLT5k
ZWNvZGVkU2l6ZUNoYW5nZWQodGhpcywgLXNhZmVDYXN0PGludD4oZnJhbWVCeXRlc0NsZWFyZWQp
KTsKIH0KIAotdm9pZCBCaXRtYXBJbWFnZTo6Y2FjaGVGcmFtZShzaXplX3QgaW5kZXgsIFN1YnNh
bXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgSW1hZ2VGcmFtZUNhY2hpbmcgZnJhbWVDYWNo
aW5nKQordm9pZCBCaXRtYXBJbWFnZTo6Y2FjaGVGcmFtZShzaXplX3QgaW5kZXgsIFN1YnNhbXBs
aW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgSW1hZ2VGcmFtZURhdGE6OkNhY2hpbmcgY2FjaGlu
ZykKIHsKICAgICBzaXplX3QgbnVtRnJhbWVzID0gZnJhbWVDb3VudCgpOwogICAgIEFTU0VSVCht
X2RlY29kZWRTaXplID09IDAgfHwgbnVtRnJhbWVzID4gMSk7CkBAIC0xODUsMjUgKzE4MSwxMiBA
QCB2b2lkIEJpdG1hcEltYWdlOjpjYWNoZUZyYW1lKHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdM
ZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBJbQogICAgIGlmIChtX2ZyYW1lcy5zaXplKCkgPCBudW1G
cmFtZXMpCiAgICAgICAgIG1fZnJhbWVzLmdyb3cobnVtRnJhbWVzKTsKIAotICAgIGlmIChmcmFt
ZUNhY2hpbmcgPT0gQ2FjaGVNZXRhZGF0YUFuZEZyYW1lKSB7Ci0gICAgICAgIG1fZnJhbWVzW2lu
ZGV4XS5tX2ltYWdlID0gbV9zb3VyY2UuY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoaW5kZXgsIHN1
YnNhbXBsaW5nTGV2ZWwpOwotICAgICAgICBtX2ZyYW1lc1tpbmRleF0ubV9zdWJzYW1wbGluZ0xl
dmVsID0gc3Vic2FtcGxpbmdMZXZlbDsKLSAgICB9Ci0KLSAgICBtX2ZyYW1lc1tpbmRleF0ubV9v
cmllbnRhdGlvbiA9IG1fc291cmNlLm9yaWVudGF0aW9uQXRJbmRleChpbmRleCk7Ci0gICAgbV9m
cmFtZXNbaW5kZXhdLm1faGF2ZU1ldGFkYXRhID0gdHJ1ZTsKLSAgICBtX2ZyYW1lc1tpbmRleF0u
bV9pc0NvbXBsZXRlID0gbV9zb3VyY2UuZnJhbWVJc0NvbXBsZXRlQXRJbmRleChpbmRleCk7Cisg
ICAgbV9mcmFtZXNbaW5kZXhdID0gbV9zb3VyY2UuY3JlYXRlRnJhbWVEYXRhQXRJbmRleChpbmRl
eCwgc3Vic2FtcGxpbmdMZXZlbCwgY2FjaGluZyk7CiAKLSAgICBpZiAocmVwZXRpdGlvbkNvdW50
KGZhbHNlKSAhPSBjQW5pbWF0aW9uTm9uZSkKLSAgICAgICAgbV9mcmFtZXNbaW5kZXhdLm1fZHVy
YXRpb24gPSBtX3NvdXJjZS5mcmFtZUR1cmF0aW9uQXRJbmRleChpbmRleCk7CisgICAgTE9HKElt
YWdlcywgIkJpdG1hcEltYWdlICVwIGNhY2hlRnJhbWUgJWx1ICglcyV1IGJ5dGVzLCBjb21wbGV0
ZSAlZCkiLCB0aGlzLCBpbmRleCwgY2FjaGluZyA9PSBJbWFnZUZyYW1lRGF0YTo6Q2FjaGluZzo6
TWV0YWRhdGEgPyAibWV0YWRhdGEgb25seSwgIiA6ICIiLCBtX2ZyYW1lc1tpbmRleF0uZnJhbWVC
eXRlcygpLCBtX2ZyYW1lc1tpbmRleF0uaXNDb21wbGV0ZSgpKTsKIAotICAgIG1fZnJhbWVzW2lu
ZGV4XS5tX2hhc0FscGhhID0gbV9zb3VyY2UuZnJhbWVIYXNBbHBoYUF0SW5kZXgoaW5kZXgpOwot
ICAgIG1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lQnl0ZXMgPSBtX3NvdXJjZS5mcmFtZUJ5dGVzQXRJ
bmRleChpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCk7Ci0KLSAgICBMT0coSW1hZ2VzLCAiQml0bWFw
SW1hZ2UgJXAgY2FjaGVGcmFtZSAlbHUgKCVzJXUgYnl0ZXMsIGNvbXBsZXRlICVkKSIsIHRoaXMs
IGluZGV4LCBmcmFtZUNhY2hpbmcgPT0gQ2FjaGVNZXRhZGF0YU9ubHkgPyAibWV0YWRhdGEgb25s
eSwgIiA6ICIiLCBtX2ZyYW1lc1tpbmRleF0ubV9mcmFtZUJ5dGVzLCBtX2ZyYW1lc1tpbmRleF0u
bV9pc0NvbXBsZXRlKTsKLQotICAgIGlmIChtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZSkgewotICAg
ICAgICBpbnQgZGVsdGFCeXRlcyA9IHNhZmVDYXN0PGludD4obV9mcmFtZXNbaW5kZXhdLm1fZnJh
bWVCeXRlcyk7CisgICAgaWYgKG1fZnJhbWVzW2luZGV4XS5oYXNJbWFnZSgpKSB7CisgICAgICAg
IGludCBkZWx0YUJ5dGVzID0gc2FmZUNhc3Q8aW50PihtX2ZyYW1lc1tpbmRleF0uZnJhbWVCeXRl
cygpKTsKICAgICAgICAgbV9kZWNvZGVkU2l6ZSArPSBkZWx0YUJ5dGVzOwogICAgICAgICAvLyBU
aGUgZnVsbHktZGVjb2RlZCBmcmFtZSB3aWxsIHN1YnN1bWUgdGhlIHBhcnRpYWxseSBkZWNvZGVk
IGRhdGEgdXNlZAogICAgICAgICAvLyB0byBkZXRlcm1pbmUgaW1hZ2UgcHJvcGVydGllcy4KQEAg
LTI4OCwyMSArMjcxLDE5IEBAIGJvb2wgQml0bWFwSW1hZ2U6OmRhdGFDaGFuZ2VkKGJvb2wgYWxs
RGF0YVJlY2VpdmVkKQogICAgIC8vIGZyYW1lIGFmZmVjdGVkIGJ5IGFwcGVuZGluZyBuZXcgZGF0
YSBoZXJlLiBUaHVzIHdlIGhhdmUgdG8gY2xlYXIgYWxsIHRoZQogICAgIC8vIGluY29tcGxldGUg
ZnJhbWVzIHRvIGJlIHNhZmUuCiAgICAgdW5zaWduZWQgZnJhbWVCeXRlc0NsZWFyZWQgPSAwOwot
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9mcmFtZXMuc2l6ZSgpOyArK2kpIHsKKyAgICBm
b3IgKGF1dG8mIGZyYW1lIDogbV9mcmFtZXMpIHsKICAgICAgICAgLy8gTk9URTogRG9uJ3QgY2Fs
bCBmcmFtZUlzQ29tcGxldGVBdEluZGV4KCkgaGVyZSwgdGhhdCB3aWxsIHRyeSB0bwogICAgICAg
ICAvLyBkZWNvZGUgYW55IHVuY2FjaGVkIChpLmUuIG5ldmVyLWRlY29kZWQgb3IKICAgICAgICAg
Ly8gY2xlYXJlZC1vbi1hLXByZXZpb3VzLXBhc3MpIGZyYW1lcyEKLSAgICAgICAgdW5zaWduZWQg
ZnJhbWVCeXRlcyA9IG1fZnJhbWVzW2ldLm1fZnJhbWVCeXRlczsKLSAgICAgICAgaWYgKG1fZnJh
bWVzW2ldLm1faGF2ZU1ldGFkYXRhICYmICFtX2ZyYW1lc1tpXS5tX2lzQ29tcGxldGUpCi0gICAg
ICAgICAgICBmcmFtZUJ5dGVzQ2xlYXJlZCArPSAobV9mcmFtZXNbaV0uY2xlYXIodHJ1ZSkgPyBm
cmFtZUJ5dGVzIDogMCk7CisgICAgICAgIGlmIChmcmFtZS5oYXNNZXRhZGF0YSgpICYmICFmcmFt
ZS5pc0NvbXBsZXRlKCkpCisgICAgICAgICAgICBmcmFtZUJ5dGVzQ2xlYXJlZCArPSBmcmFtZS5j
bGVhcihJbWFnZUZyYW1lRGF0YTo6Q2FjaGluZzo6RW1wdHkpOwogICAgIH0KICAgICBkZXN0cm95
TWV0YWRhdGFBbmROb3RpZnkoZnJhbWVCeXRlc0NsZWFyZWQsIENsZWFyZWRTb3VyY2U6Ok5vKTsK
ICNlbHNlCiAgICAgLy8gRklYTUU6IHdoeSBpcyB0aGlzIGRpZmZlcmVudCBmb3IgaU9TPwogICAg
IGludCBkZWx0YUJ5dGVzID0gMDsKICAgICBpZiAoIW1fZnJhbWVzLmlzRW1wdHkoKSkgewotICAg
ICAgICBpbnQgYnl0ZXMgPSBtX2ZyYW1lc1ttX2ZyYW1lcy5zaXplKCkgLSAxXS5tX2ZyYW1lQnl0
ZXM7Ci0gICAgICAgIGlmIChtX2ZyYW1lc1ttX2ZyYW1lcy5zaXplKCkgLSAxXS5jbGVhcih0cnVl
KSkgeworICAgICAgICBpZiAoaW50IGJ5dGVzID0gbV9mcmFtZXNbbV9mcmFtZXMuc2l6ZSgpIC0g
MV0uY2xlYXIoSW1hZ2VGcmFtZURhdGE6OkNhY2hpbmc6OkVtcHR5KSkgewogICAgICAgICAgICAg
ZGVsdGFCeXRlcyArPSBieXRlczsKICAgICAgICAgICAgIGRlbHRhQnl0ZXMgKz0gbV9kZWNvZGVk
UHJvcGVydGllc1NpemU7CiAgICAgICAgICAgICBtX2RlY29kZWRQcm9wZXJ0aWVzU2l6ZSA9IDA7
CkBAIC0zNjYsMTUgKzM0NywxNSBAQCBib29sIEJpdG1hcEltYWdlOjppc1NpemVBdmFpbGFibGUo
KQogICAgIHJldHVybiBtX3NpemVBdmFpbGFibGU7CiB9CiAKLWJvb2wgQml0bWFwSW1hZ2U6OmVu
c3VyZUZyYW1lSXNDYWNoZWQoc2l6ZV90IGluZGV4LCBJbWFnZUZyYW1lQ2FjaGluZyBmcmFtZUNh
Y2hpbmcpCitib29sIEJpdG1hcEltYWdlOjplbnN1cmVGcmFtZUlzQ2FjaGVkKHNpemVfdCBpbmRl
eCwgSW1hZ2VGcmFtZURhdGE6OkNhY2hpbmcgY2FjaGluZykKIHsKICAgICBpZiAoaW5kZXggPj0g
ZnJhbWVDb3VudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoaW5kZXggPj0g
bV9mcmFtZXMuc2l6ZSgpCi0gICAgICAgIHx8IChmcmFtZUNhY2hpbmcgPT0gQ2FjaGVNZXRhZGF0
YUFuZEZyYW1lICYmICFtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZSkKLSAgICAgICAgfHwgKGZyYW1l
Q2FjaGluZyA9PSBDYWNoZU1ldGFkYXRhT25seSAmJiAhbV9mcmFtZXNbaW5kZXhdLm1faGF2ZU1l
dGFkYXRhKSkKLSAgICAgICAgY2FjaGVGcmFtZShpbmRleCwgMCwgZnJhbWVDYWNoaW5nKTsKKyAg
ICAgICAgfHwgKGNhY2hpbmcgPT0gSW1hZ2VGcmFtZURhdGE6OkNhY2hpbmc6Ok1ldGFkYXRhQW5k
SW1hZ2UgJiYgIW1fZnJhbWVzW2luZGV4XS5oYXNJbWFnZSgpKQorICAgICAgICB8fCAoY2FjaGlu
ZyA9PSBJbWFnZUZyYW1lRGF0YTo6Q2FjaGluZzo6TWV0YWRhdGEgJiYgIW1fZnJhbWVzW2luZGV4
XS5oYXNNZXRhZGF0YSgpKSkKKyAgICAgICAgY2FjaGVGcmFtZShpbmRleCwgMCwgY2FjaGluZyk7
CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTM4OCwxMCArMzY5LDkgQEAgTmF0aXZlSW1hZ2VQ
dHIgQml0bWFwSW1hZ2U6OmZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgZmxvYXQgcHJl
c2VudGF0aW9uU2MKIAogICAgIC8vIFdlIG1heSBoYXZlIGNhY2hlZCBhIGZyYW1lIHdpdGggYSBo
aWdoZXIgc3Vic2FtcGxpbmcgbGV2ZWwsIGluIHdoaWNoIGNhc2Ugd2UgbmVlZCB0bwogICAgIC8v
IHJlLWRlY29kZSB3aXRoIGEgbG93ZXIgbGV2ZWwuCi0gICAgaWYgKGluZGV4IDwgbV9mcmFtZXMu
c2l6ZSgpICYmIG1fZnJhbWVzW2luZGV4XS5tX2ltYWdlICYmIHN1YnNhbXBsaW5nTGV2ZWwgPCBt
X2ZyYW1lc1tpbmRleF0ubV9zdWJzYW1wbGluZ0xldmVsKSB7CisgICAgaWYgKGluZGV4IDwgbV9m
cmFtZXMuc2l6ZSgpICYmIG1fZnJhbWVzW2luZGV4XS5oYXNJbWFnZSgpICYmIHN1YnNhbXBsaW5n
TGV2ZWwgPCBtX2ZyYW1lc1tpbmRleF0uc3Vic2FtcGxpbmdMZXZlbCgpKSB7CiAgICAgICAgIC8v
IElmIHRoZSBpbWFnZSBpcyBhbHJlYWR5IGNhY2hlZCwgYnV0IGF0IHRvbyBzbWFsbCBhIHNpemUs
IHJlLWRlY29kZSBhIGxhcmdlciB2ZXJzaW9uLgotICAgICAgICBpbnQgc2l6ZUNoYW5nZSA9IC1t
X2ZyYW1lc1tpbmRleF0ubV9mcmFtZUJ5dGVzOwotICAgICAgICBtX2ZyYW1lc1tpbmRleF0uY2xl
YXIodHJ1ZSk7CisgICAgICAgIGludCBzaXplQ2hhbmdlID0gLW1fZnJhbWVzW2luZGV4XS5jbGVh
cihJbWFnZUZyYW1lRGF0YTo6Q2FjaGluZzo6RW1wdHkpOwogICAgICAgICBpbnZhbGlkYXRlUGxh
dGZvcm1EYXRhKCk7CiAgICAgICAgIG1fZGVjb2RlZFNpemUgKz0gc2l6ZUNoYW5nZTsKICAgICAg
ICAgaWYgKGltYWdlT2JzZXJ2ZXIoKSkKQEAgLTM5OSw0MCArMzc5LDcyIEBAIE5hdGl2ZUltYWdl
UHRyIEJpdG1hcEltYWdlOjpmcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIGZsb2F0IHBy
ZXNlbnRhdGlvblNjCiAgICAgfQogCiAgICAgLy8gSWYgd2UgaGF2ZW4ndCBmZXRjaGVkIGEgZnJh
bWUgeWV0LCBkbyBzby4KLSAgICBpZiAoaW5kZXggPj0gbV9mcmFtZXMuc2l6ZSgpIHx8ICFtX2Zy
YW1lc1tpbmRleF0ubV9pbWFnZSkKLSAgICAgICAgY2FjaGVGcmFtZShpbmRleCwgc3Vic2FtcGxp
bmdMZXZlbCwgQ2FjaGVNZXRhZGF0YUFuZEZyYW1lKTsKKyAgICBpZiAoaW5kZXggPj0gbV9mcmFt
ZXMuc2l6ZSgpIHx8ICFtX2ZyYW1lc1tpbmRleF0uaGFzSW1hZ2UoKSkKKyAgICAgICAgY2FjaGVG
cmFtZShpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCwgSW1hZ2VGcmFtZURhdGE6OkNhY2hpbmc6Ok1l
dGFkYXRhQW5kSW1hZ2UpOworCisgICAgcmV0dXJuIG1fZnJhbWVzW2luZGV4XS5pbWFnZSgpOwor
fQorICAgIAorTmF0aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6Om5hdGl2ZUltYWdlKCkKK3sKKyAg
ICByZXR1cm4gZnJhbWVJbWFnZUF0SW5kZXgoMCk7Cit9CisgICAgCitOYXRpdmVJbWFnZVB0ciBC
aXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VPZlNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKK3sKKyAg
ICBzaXplX3QgY291bnQgPSBmcmFtZUNvdW50KCk7CisgICAgCisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBjb3VudDsgKytpKSB7CisgICAgICAgIGF1dG8gaW1hZ2UgPSBmcmFtZUltYWdlQXRJ
bmRleChpKTsKKyAgICAgICAgaWYgKGltYWdlICYmIFBsYXRmb3JtSW1hZ2UoaW1hZ2UpLnNpemUo
KSA9PSBzaXplKQorICAgICAgICAgICAgcmV0dXJuIGltYWdlOworICAgIH0KKyAgICAKKyAgICAv
LyBGYWxsYmFjayB0byB0aGUgZmlyc3QgZnJhbWUgaW1hZ2UgaWYgd2UgY2FuJ3QgZmluZCB0aGUg
cmlnaHQgc2l6ZQorICAgIHJldHVybiBmcmFtZUltYWdlQXRJbmRleCgwKTsKK30KKyAgICAKK05h
dGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpCit7
CisgICAgcmV0dXJuIGZyYW1lSW1hZ2VBdEluZGV4KG1fY3VycmVudEZyYW1lKTsKK30KIAotICAg
IHJldHVybiBtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZTsKK1ZlY3RvcjxOYXRpdmVJbWFnZVB0cj4g
Qml0bWFwSW1hZ2U6OmZyYW1lc05hdGl2ZUltYWdlcygpCit7CisgICAgVmVjdG9yPE5hdGl2ZUlt
YWdlUHRyPiBpbWFnZXM7CisgICAgc2l6ZV90IGNvdW50ID0gZnJhbWVDb3VudCgpOworICAgIAor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgeworICAgICAgICBpZiAoYXV0
byBpbWFnZSA9IGZyYW1lSW1hZ2VBdEluZGV4KGkpKQorICAgICAgICAgICAgaW1hZ2VzLmFwcGVu
ZChpbWFnZSk7CisgICAgfQorICAgIAorICAgIHJldHVybiBpbWFnZXM7CiB9CiAKIGJvb2wgQml0
bWFwSW1hZ2U6OmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoc2l6ZV90IGluZGV4KQogewotICAgIGlm
ICghZW5zdXJlRnJhbWVJc0NhY2hlZChpbmRleCwgQ2FjaGVNZXRhZGF0YU9ubHkpKQorICAgIGlm
ICghZW5zdXJlRnJhbWVJc0NhY2hlZChpbmRleCwgSW1hZ2VGcmFtZURhdGE6OkNhY2hpbmc6Ok1l
dGFkYXRhKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIG1fZnJhbWVzW2lu
ZGV4XS5tX2lzQ29tcGxldGU7CisgICAgcmV0dXJuIG1fZnJhbWVzW2luZGV4XS5pc0NvbXBsZXRl
KCk7CiB9CiAKIGZsb2F0IEJpdG1hcEltYWdlOjpmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3Qg
aW5kZXgpCiB7Ci0gICAgaWYgKCFlbnN1cmVGcmFtZUlzQ2FjaGVkKGluZGV4LCBDYWNoZU1ldGFk
YXRhT25seSkpCisgICAgaWYgKCFlbnN1cmVGcmFtZUlzQ2FjaGVkKGluZGV4LCBJbWFnZUZyYW1l
RGF0YTo6Q2FjaGluZzo6TWV0YWRhdGEpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVy
biBtX2ZyYW1lc1tpbmRleF0ubV9kdXJhdGlvbjsKLX0KLQotTmF0aXZlSW1hZ2VQdHIgQml0bWFw
SW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkKLXsKLSAgICByZXR1cm4gZnJhbWVJ
bWFnZUF0SW5kZXgoY3VycmVudEZyYW1lKCkpOworICAgIHJldHVybiBtX2ZyYW1lc1tpbmRleF0u
ZHVyYXRpb24oKTsKIH0KIAogYm9vbCBCaXRtYXBJbWFnZTo6ZnJhbWVIYXNBbHBoYUF0SW5kZXgo
c2l6ZV90IGluZGV4KQogewotICAgIGlmICghZW5zdXJlRnJhbWVJc0NhY2hlZChpbmRleCwgQ2Fj
aGVNZXRhZGF0YU9ubHkpKQorICAgIGlmICghZW5zdXJlRnJhbWVJc0NhY2hlZChpbmRleCwgSW1h
Z2VGcmFtZURhdGE6OkNhY2hpbmc6Ok1ldGFkYXRhKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAK
LSAgICBpZiAobV9mcmFtZXNbaW5kZXhdLm1faGF2ZU1ldGFkYXRhKQotICAgICAgICByZXR1cm4g
bV9mcmFtZXNbaW5kZXhdLm1faGFzQWxwaGE7CisgICAgaWYgKG1fZnJhbWVzW2luZGV4XS5oYXNN
ZXRhZGF0YSgpKQorICAgICAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLmhhc0FscGhhKCk7CiAK
ICAgICByZXR1cm4gbV9zb3VyY2UuZnJhbWVIYXNBbHBoYUF0SW5kZXgoaW5kZXgpOwogfQpAQCAt
NDQ0LDExICs0NTYsMTEgQEAgYm9vbCBCaXRtYXBJbWFnZTo6Y3VycmVudEZyYW1lS25vd25Ub0Jl
T3BhcXVlKCkKIAogSW1hZ2VPcmllbnRhdGlvbiBCaXRtYXBJbWFnZTo6ZnJhbWVPcmllbnRhdGlv
bkF0SW5kZXgoc2l6ZV90IGluZGV4KQogewotICAgIGlmICghZW5zdXJlRnJhbWVJc0NhY2hlZChp
bmRleCwgQ2FjaGVNZXRhZGF0YU9ubHkpKQorICAgIGlmICghZW5zdXJlRnJhbWVJc0NhY2hlZChp
bmRleCwgSW1hZ2VGcmFtZURhdGE6OkNhY2hpbmc6Ok1ldGFkYXRhKSkKICAgICAgICAgcmV0dXJu
IEltYWdlT3JpZW50YXRpb24oKTsKIAotICAgIGlmIChtX2ZyYW1lc1tpbmRleF0ubV9oYXZlTWV0
YWRhdGEpCi0gICAgICAgIHJldHVybiBtX2ZyYW1lc1tpbmRleF0ubV9vcmllbnRhdGlvbjsKKyAg
ICBpZiAobV9mcmFtZXNbaW5kZXhdLmhhc01ldGFkYXRhKCkpCisgICAgICAgIHJldHVybiBtX2Zy
YW1lc1tpbmRleF0ub3JpZW50YXRpb24oKTsKIAogICAgIHJldHVybiBtX3NvdXJjZS5vcmllbnRh
dGlvbkF0SW5kZXgoaW5kZXgpOwogfQpAQCAtNzAwLDE3ICs3MTIsNTYgQEAgQ29sb3IgQml0bWFw
SW1hZ2U6OnNpbmdsZVBpeGVsU29saWRDb2xvcigpCiAgICAgICAgIHJldHVybiBDb2xvcigpOwog
ICAgIAogICAgIEFTU0VSVChtX2ZyYW1lcy5zaXplKCkpOwotICAgIG1fc29saWRDb2xvciA9IE5h
dGl2ZUltYWdlOjpzaW5nbGVQaXhlbFNvbGlkQ29sb3IobV9mcmFtZXNbMF0ubV9pbWFnZS5nZXQo
KSk7CisgICAgbV9zb2xpZENvbG9yID0gbV9mcmFtZXNbMF0uc2luZ2xlUGl4ZWxTb2xpZENvbG9y
KCk7CiAgICAgCiAgICAgQVNTRVJUKG1fc29saWRDb2xvcik7CiAgICAgcmV0dXJuIG1fc29saWRD
b2xvci52YWx1ZSgpOwogfQogICAgIAorYm9vbCBCaXRtYXBJbWFnZTo6aXNBbG1vc3RTb2xpZENv
bG9yKCkKK3sKKyAgICBpZiAoZnJhbWVDb3VudCgpICE9IDEpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIHJldHVybiBlbnN1cmVGcmFtZUlzQ2FjaGVkKDApICYmIG1fZnJhbWVzWzBdLmlz
QWxtb3N0U29saWRDb2xvcigpOworfQorICAgIAogYm9vbCBCaXRtYXBJbWFnZTo6Y2FuQW5pbWF0
ZSgpCiB7CiAgICAgcmV0dXJuIHNob3VsZEFuaW1hdGUoKSAmJiBmcmFtZUNvdW50KCkgPiAxOwog
fQogCit2b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3Np
dGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIG1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlv
biBkZXNjcmlwdGlvbikKK3sKKyAgICBpZiAoZGVzdFJlY3QuaXNFbXB0eSgpIHx8IHNyY1JlY3Qu
aXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyNpZiBQTEFURk9STShJT1MpCisgICAgc3Rh
cnRBbmltYXRpb24oRG9Ob3RDYXRjaFVwKTsKKyNlbHNlCisgICAgc3RhcnRBbmltYXRpb24oKTsK
KyNlbmRpZgorICAgIAorICAgIENvbG9yIGNvbG9yID0gc2luZ2xlUGl4ZWxTb2xpZENvbG9yKCk7
CisgICAgaWYgKGNvbG9yLmlzVmFsaWQoKSkgeworICAgICAgICBmaWxsV2l0aFNvbGlkQ29sb3Io
Y29udGV4dCwgZGVzdFJlY3QsIGNvbG9yLCBvcCk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgCisgICAgYXV0byBpbWFnZSA9IGZyYW1lSW1hZ2VBdEluZGV4KG1fY3VycmVudEZyYW1lLCBQ
bGF0Zm9ybUltYWdlOjpzdWJzYW1wbGluZ1NjYWxlKGNvbnRleHQsIGRlc3RSZWN0LCBzcmNSZWN0
KSk7CisgICAgaWYgKCFpbWFnZSkgLy8gSWYgaXQncyB0b28gZWFybHkgd2Ugd29uJ3QgaGF2ZSBh
biBpbWFnZSB5ZXQuCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBJbWFnZU9yaWVudGF0aW9u
IG9yaWVudGF0aW9uKGRlc2NyaXB0aW9uLmltYWdlT3JpZW50YXRpb24oKSk7CisgICAgaWYgKGRl
c2NyaXB0aW9uLnJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKCkgPT0gUmVzcGVjdEltYWdlT3JpZW50
YXRpb24pCisgICAgICAgIG9yaWVudGF0aW9uID0gZnJhbWVPcmllbnRhdGlvbkF0SW5kZXgobV9j
dXJyZW50RnJhbWUpOworICAgIAorICAgIFBsYXRmb3JtSW1hZ2UoaW1hZ2UpLmRyYXcoY29udGV4
dCwgZGVzdFJlY3QsIHNyY1JlY3QsIG1fc2l6ZSwgb3AsIG1vZGUsIG9yaWVudGF0aW9uKTsKKyAg
ICAKKyAgICBpZiAoaW1hZ2VPYnNlcnZlcigpKQorICAgICAgICBpbWFnZU9ic2VydmVyKCktPmRp
ZERyYXcodGhpcyk7Cit9CisgICAgCiB2b2lkIEJpdG1hcEltYWdlOjpkdW1wKFRleHRTdHJlYW0m
IHRzKSBjb25zdAogewogICAgIEltYWdlOjpkdW1wKHRzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCmluZGV4IDA3NTg5MjljZDg3ZmFkYWNmMDJi
NmVkOGVlYWZlN2RlZmQ2NmYwYzUuLjIyMThjODI0YjUyOGZkNjM5YmFiMTM4ZGVjYzk4Yjk4MTZh
MTY4MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1h
cEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1h
Z2UuaApAQCAtMjgsMTEgKzI4LDEzIEBACiAjaWZuZGVmIEJpdG1hcEltYWdlX2gKICNkZWZpbmUg
Qml0bWFwSW1hZ2VfaAogCi0jaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJDb2xvci5oIgor
I2luY2x1ZGUgIkltYWdlLmgiCisjaW5jbHVkZSAiSW1hZ2VGcmFtZURhdGEuaCIKICNpbmNsdWRl
ICJJbWFnZU9yaWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiSW1hZ2VTb3VyY2UuaCIKICNpbmNsdWRl
ICJJbnRTaXplLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1JbWFnZS5oIgogCiAjaWYgVVNFKENHKSB8
fCBVU0UoQVBQS0lUKQogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KQEAgLTQ3LDYzICs0OSw5
IEBAIHR5cGVkZWYgc3RydWN0IEhCSVRNQVBfXyAqSEJJVE1BUDsKICNlbmRpZgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0gICAgc3RydWN0IEZyYW1lRGF0YTsKLX0KLQotbmFtZXNwYWNlIFdURiB7
Ci0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgVmVjdG9yVHJhaXRzPFdlYkNvcmU6OkZyYW1lRGF0YT4g
OiBwdWJsaWMgU2ltcGxlQ2xhc3NWZWN0b3JUcmFpdHMgewotICAgICAgICBzdGF0aWMgY29uc3Qg
Ym9vbCBjYW5Jbml0aWFsaXplV2l0aE1lbXNldCA9IGZhbHNlOyAvLyBOb3QgYWxsIEZyYW1lRGF0
YSBtZW1iZXJzIGluaXRpYWxpemUgdG8gMC4KLSAgICB9OwotfQotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIFRpbWVyOwogCi1uYW1lc3BhY2UgTmF0aXZlSW1hZ2UgewotICAgIEludFNp
emUgc2l6ZShjb25zdCBOYXRpdmVJbWFnZVB0ciYpOwotICAgIGJvb2wgaGFzQWxwaGEoY29uc3Qg
TmF0aXZlSW1hZ2VQdHImKTsKLSAgICBDb2xvciBzaW5nbGVQaXhlbFNvbGlkQ29sb3IoY29uc3Qg
TmF0aXZlSW1hZ2VQdHImKTsKLX0KLQotLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0vLyBGcmFtZURhdGEgQ2xhc3MKLS8vID09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi1zdHJ1Y3QgRnJhbWVEYXRhIHsK
LXB1YmxpYzoKLSAgICBGcmFtZURhdGEoKQotICAgICAgICA6IG1faGF2ZU1ldGFkYXRhKGZhbHNl
KQotICAgICAgICAsIG1faXNDb21wbGV0ZShmYWxzZSkKLSAgICAgICAgLCBtX2hhc0FscGhhKHRy
dWUpCi0gICAgewotICAgIH0KLQotICAgIH5GcmFtZURhdGEoKQotICAgIHsgCi0gICAgICAgIGNs
ZWFyKHRydWUpOwotICAgIH0KLQotICAgIC8vIENsZWFyIHRoZSBjYWNoZWQgaW1hZ2UgZGF0YSBv
biB0aGUgZnJhbWUsIGFuZCAob3B0aW9uYWxseSkgdGhlIG1ldGFkYXRhLgotICAgIC8vIFJldHVy
bnMgd2hldGhlciB0aGVyZSB3YXMgY2FjaGVkIGltYWdlIGRhdGEgdG8gY2xlYXIuCi0gICAgYm9v
bCBjbGVhcihib29sIGNsZWFyTWV0YWRhdGEpOwotICAgIAotICAgIHVuc2lnbmVkIHVzZWRGcmFt
ZUJ5dGVzKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZSA/IG1fZnJhbWVCeXRlcyA6IDA7IH0KLQot
ICAgIE5hdGl2ZUltYWdlUHRyIG1faW1hZ2U7Ci0gICAgSW1hZ2VPcmllbnRhdGlvbiBtX29yaWVu
dGF0aW9uIHsgRGVmYXVsdEltYWdlT3JpZW50YXRpb24gfTsKLSAgICBTdWJzYW1wbGluZ0xldmVs
IG1fc3Vic2FtcGxpbmdMZXZlbCB7IDAgfTsKLSAgICBmbG9hdCBtX2R1cmF0aW9uIHsgMCB9Owot
ICAgIGJvb2wgbV9oYXZlTWV0YWRhdGEgOiAxOwotICAgIGJvb2wgbV9pc0NvbXBsZXRlIDogMTsK
LSAgICBib29sIG1faGFzQWxwaGEgOiAxOwotICAgIHVuc2lnbmVkIG1fZnJhbWVCeXRlcyB7IDAg
fTsKLX07Ci0KLS8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS8vIEJpdG1hcEltYWdlIENsYXNzCi0vLyA9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0KIGNsYXNzIEJpdG1hcEltYWdlIGZpbmFsIDogcHVi
bGljIEltYWdlIHsKICAgICBmcmllbmQgY2xhc3MgR2VuZXJhdGVkSW1hZ2U7CiAgICAgZnJpZW5k
IGNsYXNzIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOwpAQCAtMTU1LDEyICsxMDMsNiBAQCBwdWJs
aWM6CiAgICAgQ0ZEYXRhUmVmIGdldFRJRkZSZXByZXNlbnRhdGlvbigpIG92ZXJyaWRlOwogI2Vu
ZGlmCiAKLSNpZiBVU0UoQ0cpCi0gICAgV0VCQ09SRV9FWFBPUlQgQ0dJbWFnZVJlZiBnZXRDR0lt
YWdlUmVmKCkgb3ZlcnJpZGU7Ci0gICAgQ0dJbWFnZVJlZiBnZXRGaXJzdENHSW1hZ2VSZWZPZlNp
emUoY29uc3QgSW50U2l6ZSYpIG92ZXJyaWRlOwotICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBn
ZXRDR0ltYWdlQXJyYXkoKSBvdmVycmlkZTsKLSNlbmRpZgotCiAjaWYgUExBVEZPUk0oV0lOKQog
ICAgIGJvb2wgZ2V0SEJJVE1BUChIQklUTUFQKSBvdmVycmlkZTsKICAgICBib29sIGdldEhCSVRN
QVBPZlNpemUoSEJJVE1BUCwgY29uc3QgSW50U2l6ZSopIG92ZXJyaWRlOwpAQCAtMTc0LDggKzEx
NiwxMyBAQCBwdWJsaWM6CiAgICAgRXZhc19PYmplY3QqIGdldEV2YXNPYmplY3QoRXZhcyopIG92
ZXJyaWRlOwogI2VuZGlmCiAKKyAgICBXRUJDT1JFX0VYUE9SVCBOYXRpdmVJbWFnZVB0ciBuYXRp
dmVJbWFnZSgpIG92ZXJyaWRlOworICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlT2ZTaXpl
KGNvbnN0IEludFNpemUmKSBvdmVycmlkZTsKICAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFn
ZUZvckN1cnJlbnRGcmFtZSgpIG92ZXJyaWRlOwogICAgIEltYWdlT3JpZW50YXRpb24gb3JpZW50
YXRpb25Gb3JDdXJyZW50RnJhbWUoKSBvdmVycmlkZSB7IHJldHVybiBmcmFtZU9yaWVudGF0aW9u
QXRJbmRleChjdXJyZW50RnJhbWUoKSk7IH0KKyAgICBWZWN0b3I8TmF0aXZlSW1hZ2VQdHI+IGZy
YW1lc05hdGl2ZUltYWdlcygpIG92ZXJyaWRlOworICAgIAorICAgIFdFQkNPUkVfRVhQT1JUIGJv
b2wgaXNBbG1vc3RTb2xpZENvbG9yKCk7CiAKICAgICBib29sIGN1cnJlbnRGcmFtZUtub3duVG9C
ZU9wYXF1ZSgpIG92ZXJyaWRlOwogCkBAIC0yMTUsNyArMTYyLDYgQEAgcHJvdGVjdGVkOgogICAg
IHNpemVfdCBmcmFtZUNvdW50KCk7CiAKICAgICBOYXRpdmVJbWFnZVB0ciBmcmFtZUltYWdlQXRJ
bmRleChzaXplX3QsIGZsb2F0IHByZXNlbnRhdGlvblNjYWxlSGludCA9IDEpOwotICAgIE5hdGl2
ZUltYWdlUHRyIGNvcHlVbnNjYWxlZEZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCk7CiAKICAgICBi
b29sIGhhdmVGcmFtZUltYWdlQXRJbmRleChzaXplX3QpOwogCkBAIC0yMjUsMTEgKzE3MSwxMCBA
QCBwcm90ZWN0ZWQ6CiAgICAgSW1hZ2VPcmllbnRhdGlvbiBmcmFtZU9yaWVudGF0aW9uQXRJbmRl
eChzaXplX3QpOwogCiAgICAgLy8gRGVjb2RlcyBhbmQgY2FjaGVzIGEgZnJhbWUuIE5ldmVyIGFj
Y2Vzc2VkIGV4Y2VwdCBpbnRlcm5hbGx5LgotICAgIGVudW0gSW1hZ2VGcmFtZUNhY2hpbmcgeyBD
YWNoZU1ldGFkYXRhT25seSwgQ2FjaGVNZXRhZGF0YUFuZEZyYW1lIH07Ci0gICAgdm9pZCBjYWNo
ZUZyYW1lKHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCwgSW1hZ2VGcmFtZUNhY2hpbmcg
PSBDYWNoZU1ldGFkYXRhQW5kRnJhbWUpOworICAgIHZvaWQgY2FjaGVGcmFtZShzaXplX3QgaW5k
ZXgsIFN1YnNhbXBsaW5nTGV2ZWwsIEltYWdlRnJhbWVEYXRhOjpDYWNoaW5nID0gSW1hZ2VGcmFt
ZURhdGE6OkNhY2hpbmc6Ok1ldGFkYXRhQW5kSW1hZ2UpOwogCiAgICAgLy8gQ2FsbGVkIGJlZm9y
ZSBhY2Nlc3NpbmcgbV9mcmFtZXNbaW5kZXhdIGZvciBpbmZvIHdpdGhvdXQgZGVjb2RpbmcuIFJl
dHVybnMgZmFsc2Ugb24gaW5kZXggb3V0IG9mIGJvdW5kcy4KLSAgICBib29sIGVuc3VyZUZyYW1l
SXNDYWNoZWQoc2l6ZV90IGluZGV4LCBJbWFnZUZyYW1lQ2FjaGluZyA9IENhY2hlTWV0YWRhdGFB
bmRGcmFtZSk7CisgICAgYm9vbCBlbnN1cmVGcmFtZUlzQ2FjaGVkKHNpemVfdCBpbmRleCwgSW1h
Z2VGcmFtZURhdGE6OkNhY2hpbmcgPSBJbWFnZUZyYW1lRGF0YTo6Q2FjaGluZzo6TWV0YWRhdGFB
bmRJbWFnZSk7CiAKICAgICAvLyBDYWxsZWQgdG8gaW52YWxpZGF0ZSBjYWNoZWQgZGF0YS4gV2hl
biB8ZGVzdHJveUFsbHwgaXMgdHJ1ZSwgd2Ugd2lwZSBvdXQKICAgICAvLyB0aGUgZW50aXJlIGZy
YW1lIGJ1ZmZlciBjYWNoZSBhbmQgdGVsbCB0aGUgaW1hZ2Ugc291cmNlIHRvIGRlc3Ryb3kKQEAg
LTI5Miw3ICsyMzcsNyBAQCBwcml2YXRlOgogICAgIG11dGFibGUgSW50U2l6ZSBtX3NpemVSZXNw
ZWN0aW5nT3JpZW50YXRpb247CiAKICAgICBzaXplX3QgbV9jdXJyZW50RnJhbWUgeyAwIH07IC8v
IFRoZSBpbmRleCBvZiB0aGUgY3VycmVudCBmcmFtZSBvZiBhbmltYXRpb24uCi0gICAgVmVjdG9y
PEZyYW1lRGF0YSwgMT4gbV9mcmFtZXM7IC8vIEFuIGFycmF5IG9mIHRoZSBjYWNoZWQgZnJhbWVz
IG9mIHRoZSBhbmltYXRpb24uIFdlIGhhdmUgdG8gcmVmIGZyYW1lcyB0byBwaW4gdGhlbSBpbiB0
aGUgY2FjaGUuCisgICAgVmVjdG9yPEltYWdlRnJhbWVEYXRhLCAxPiBtX2ZyYW1lczsgLy8gQW4g
YXJyYXkgb2YgdGhlIGNhY2hlZCBmcmFtZXMgb2YgdGhlIGFuaW1hdGlvbi4gV2UgaGF2ZSB0byBy
ZWYgZnJhbWVzIHRvIHBpbiB0aGVtIGluIHRoZSBjYWNoZS4KIAogICAgIHN0ZDo6dW5pcXVlX3B0
cjxUaW1lcj4gbV9mcmFtZVRpbWVyOwogICAgIGludCBtX3JlcGV0aXRpb25Db3VudCB7IGNBbmlt
YXRpb25Ob25lIH07IC8vIEhvdyBtYW55IHRvdGFsIGFuaW1hdGlvbiBsb29wcyB3ZSBzaG91bGQg
ZG8uIFRoaXMgd2lsbCBiZSBjQW5pbWF0aW9uTm9uZSBpZiB0aGlzIGltYWdlIHR5cGUgaXMgaW5j
YXBhYmxlIG9mIGFuaW1hdGlvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0JpdG1hcFBpeGVscy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQml0bWFwUGl4ZWxzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWZhZTNkMmU0MGNjZjFkODFmNmJhNTdkYjY4
MmQ5MmQ0NjliYmFjMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0JpdG1hcFBpeGVscy5oCkBAIC0wLDAgKzEsMTgzIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSAiQ29sb3IuaCIKKyNpbmNsdWRlICJJbnRSZWN0LmgiCisjaW5jbHVkZSAiSW50U2l6ZS5oIgor
I2luY2x1ZGUgIk5hdGl2ZUltYWdlUHRyLmgiCisKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQml0bWFwUGl4ZWxzIHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEJpdG1hcFBpeGVscz4gY3JlYXRlKGNvbnN0IEludFNp
emUmIHNpemUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSkKKyAgICB7CisgICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPEJpdG1hcFBpeGVscz4oc2l6ZSwgcHJlbXVsdGlwbHlBbHBoYSk7Cisg
ICAgfQorCisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxCaXRtYXBQaXhlbHM+IGNyZWF0ZShj
b25zdCBCaXRtYXBQaXhlbHMmIG90aGVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8Qml0bWFwUGl4ZWxzPihvdGhlcik7CisgICAgfQorCisgICAgQml0bWFwUGl4ZWxz
KGNvbnN0IEludFNpemUmIHNpemUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSA9IHRydWUpCisgICAg
ICAgIDogbV9wcmVtdWx0aXBseUFscGhhKHByZW11bHRpcGx5QWxwaGEpCisgICAgeworICAgICAg
ICBBU1NFUlQoIXNpemUuaXNFbXB0eSgpKTsKKyAgICAgICAgc2V0U2l6ZShzaXplKTsKKyAgICB9
CisKKyAgICBCaXRtYXBQaXhlbHMoY29uc3QgQml0bWFwUGl4ZWxzJiBvdGhlcikKKyAgICB7Cisg
ICAgICAgIGlmICh0aGlzID09ICZvdGhlcikKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
CisgICAgICAgIG1fYmFja2luZ1N0b3JlID0gb3RoZXIubV9iYWNraW5nU3RvcmU7CisgICAgICAg
IG1fcGl4ZWxzID0gbV9iYWNraW5nU3RvcmUuZGF0YSgpOworICAgICAgICBtX3NpemUgPSBvdGhl
ci5tX3NpemU7CisgICAgICAgIG1fcmVjdCA9IG90aGVyLm1fcmVjdDsKKyAgICAgICAgbV9wcmVt
dWx0aXBseUFscGhhID0gb3RoZXIubV9wcmVtdWx0aXBseUFscGhhOworICAgIH0KKworICAgIE5h
dGl2ZUltYWdlUHRyIGltYWdlKCkgY29uc3Q7CisKKyAgICBib29sIHNldFNpemUoY29uc3QgSW50
U2l6ZSYgc2l6ZSkKKyAgICB7CisgICAgICAgIGlmICghbV9iYWNraW5nU3RvcmUudHJ5UmVzZXJ2
ZUNhcGFjaXR5KHNpemUuYXJlYSgpKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgCisgICAgICAgIG1fYmFja2luZ1N0b3JlLnJlc2l6ZShzaXplLmFyZWEoKSk7CisgICAgICAg
IG1fcGl4ZWxzID0gbV9iYWNraW5nU3RvcmUuZGF0YSgpOworICAgICAgICBtX3NpemUgPSBzaXpl
OworICAgICAgICBtX3JlY3QgPSBJbnRSZWN0KEludFBvaW50KCksIG1fc2l6ZSk7CisgICAgICAg
IGNsZWFyKCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAKKyAgICB2b2lkIHNl
dFJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkKKyAgICB7CisgICAgICAgIEFTU0VSVCghbV9zaXpl
LmlzRW1wdHkoKSk7CisgICAgICAgIEFTU0VSVChpbkJvdW5kcyhyZWN0KSk7CisgICAgICAgIG1f
cmVjdCA9IHJlY3Q7CisgICAgfQorICAgIAorICAgIEludFNpemUgc2l6ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fc2l6ZTsgfQorICAgIEludFJlY3QgcmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdDsg
fQorCisgICAgUkdCQTMyKiBhdChpbnQgeCwgaW50IHkpIGNvbnN0CisgICAgeworICAgICAgICBy
ZXR1cm4gbV9waXhlbHMgKyB5ICogbV9zaXplLndpZHRoKCkgKyB4OworICAgIH0KKworICAgIHZv
aWQgY2xlYXIoKQorICAgIHsKKyAgICAgICAgbWVtc2V0KG1fcGl4ZWxzLCAwLCBtX3NpemUuYXJl
YSgpICogc2l6ZW9mKFJHQkEzMikpOworICAgIH0KKworICAgIHZvaWQgY2xlYXJSZWN0KGNvbnN0
IEludFJlY3QmIHJlY3QpCisgICAgeworICAgICAgICBpZiAocmVjdC5pc0VtcHR5KCkgfHwgaW5C
b3VuZHMocmVjdCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIAorICAgICAgICBzaXpl
X3QgcmVjdFdpZHRoSW5CeXRlcyA9IHJlY3Qud2lkdGgoKSAqIHNpemVvZihSR0JBMzIpOworICAg
ICAgICBSR0JBMzIqIHN0YXJ0ID0gYXQocmVjdC54KCksIHJlY3QueSgpKTsKKyAgICAgICAgZm9y
IChpbnQgaSA9IDA7IGkgPCByZWN0LmhlaWdodCgpOyArK2kpIHsKKyAgICAgICAgICAgIG1lbXNl
dChzdGFydCwgMCwgcmVjdFdpZHRoSW5CeXRlcyk7CisgICAgICAgICAgICBzdGFydCArPSBtX3Np
emUud2lkdGgoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgcmVwZWF0Rmlyc3RSb3co
Y29uc3QgSW50UmVjdCYgcmVjdCkKKyAgICB7CisgICAgICAgIGlmIChyZWN0LmlzRW1wdHkoKSB8
fCBpbkJvdW5kcyhyZWN0KSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgCisgICAgICAg
IHNpemVfdCByZWN0V2lkdGhJbkJ5dGVzID0gcmVjdC53aWR0aCgpICogc2l6ZW9mKFJHQkEzMik7
CisgICAgICAgIFJHQkEzMiogc3JjID0gYXQocmVjdC54KCksIHJlY3QueSgpKTsKKyAgICAgICAg
UkdCQTMyKiBkZXN0ID0gc3JjICsgbV9zaXplLndpZHRoKCk7CisgICAgICAgIGZvciAoaW50IGkg
PSAxOyBpIDwgcmVjdC5oZWlnaHQoKTsgKytpKSB7CisgICAgICAgICAgICBtZW1jcHkoZGVzdCwg
c3JjLCByZWN0V2lkdGhJbkJ5dGVzKTsKKyAgICAgICAgICAgIGRlc3QgKz0gbV9zaXplLndpZHRo
KCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIHNldFJHQkEoaW50IHgsIGludCB5LCB1
bnNpZ25lZCByLCB1bnNpZ25lZCBnLCB1bnNpZ25lZCBiLCB1bnNpZ25lZCBhKQorICAgIHsKKyAg
ICAgICAgc2V0UkdCQShhdCh4LCB5KSwgciwgZywgYiwgYSk7CisgICAgfQorCisgICAgdm9pZCBz
ZXRSR0JBKFJHQkEzMiogZGVzdCwgdW5zaWduZWQgciwgdW5zaWduZWQgZywgdW5zaWduZWQgYiwg
dW5zaWduZWQgYSkKKyAgICB7CisgICAgICAgIGlmICghbV9wcmVtdWx0aXBseUFscGhhIHx8IGEg
Pj0gMjU1KQorICAgICAgICAgICAgKmRlc3QgPSBtYWtlUkdCQShyLCBnLCBiLCBhKTsKKyAgICAg
ICAgZWxzZSBpZiAoIWEpCisgICAgICAgICAgICAqZGVzdCA9IDA7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICpkZXN0ID0gbWFrZVByZW11bHRpcGxpZWRSR0JBKHIsIGcsIGIsIGEpOworICAg
IH0KKworICAgIHZvaWQgb3ZlclJHQkEoUkdCQTMyKiBkZXN0LCB1bnNpZ25lZCByLCB1bnNpZ25l
ZCBnLCB1bnNpZ25lZCBiLCB1bnNpZ25lZCBhKQorICAgIHsKKyAgICAgICAgaWYgKCFhKQorICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAKKyAgICAgICAgaWYgKGEgPj0gMjU1IHx8ICFhbHBo
YUNoYW5uZWwoKmRlc3QpKSB7CisgICAgICAgICAgICBzZXRSR0JBKGRlc3QsIHIsIGcsIGIsIGEp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAo
IW1fcHJlbXVsdGlwbHlBbHBoYSkKKyAgICAgICAgICAgICpkZXN0ID0gbWFrZVByZW11bHRpcGxp
ZWRSR0JBKHJlZENoYW5uZWwoKmRlc3QpLCBncmVlbkNoYW5uZWwoKmRlc3QpLCBibHVlQ2hhbm5l
bCgqZGVzdCksIGFscGhhQ2hhbm5lbCgqZGVzdCkpOworICAgICAgICAKKyAgICAgICAgUkdCQTMy
IHNyYyA9IG1ha2VSR0JBKHIsIGcsIGIsIGEpOworICAgICAgICAqZGVzdCA9IENvbG9yKCpkZXN0
KS5ibGVuZChzcmMpLnJnYigpOworICAgICAgICAKKyAgICAgICAgaWYgKCFtX3ByZW11bHRpcGx5
QWxwaGEpCisgICAgICAgICAgICAqZGVzdCA9IG1ha2VVblByZW11bHRpcGxpZWRSR0JBKHJlZENo
YW5uZWwoKmRlc3QpLCBncmVlbkNoYW5uZWwoKmRlc3QpLCBibHVlQ2hhbm5lbCgqZGVzdCksIGFs
cGhhQ2hhbm5lbCgqZGVzdCkpOworICAgIH0KKworICAgIGJvb2wgaW5Cb3VuZHMoY29uc3QgSW50
UG9pbnQmIHBvaW50KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIEludFJlY3QoSW50UG9p
bnQoKSwgbV9zaXplKS5jb250YWlucyhwb2ludCk7CisgICAgfQorCisgICAgYm9vbCBpbkJvdW5k
cyhjb25zdCBJbnRSZWN0JiByZWN0KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIEludFJl
Y3QoSW50UG9pbnQoKSwgbV9zaXplKS5jb250YWlucyhyZWN0KTsKKyAgICB9CisKK3ByaXZhdGU6
CisgICAgVmVjdG9yPFJHQkEzMj4gbV9iYWNraW5nU3RvcmU7CisgICAgUkdCQTMyKiBtX3BpeGVs
cyB7IG51bGxwdHIgfTsKKyAgICBJbnRTaXplIG1fc2l6ZTsKKyAgICBJbnRSZWN0IG1fcmVjdDsg
Ly8gVGhpcyB3aWxsIGFsd2F5cyBqdXN0IGJlIHRoZSBlbnRpcmUgYnVmZmVyIGV4Y2VwdCBmb3Ig
R0lGIGFuZCBQTkcgZnJhbWVzCisgICAgYm9vbCBtX3ByZW11bHRpcGx5QWxwaGEgeyB0cnVlIH07
Cit9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9D
b2xvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHAKaW5k
ZXggNGUyNWFhNmZkNzRkMWU0NmM1NDE2MTQ5OGJjMTcyYmY2MDA4NzVkMS4uNDM5ZjVhNjNjN2Jl
YmU1NjA0MmIyNGU3ZDcyZWNjZWNmMzZjNDBjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0NvbG9yLmNwcApAQCAtNDksNiArNDksNDAgQEAgY29uc3QgUkdCQTMyIENvbG9y
Ojp0cmFuc3BhcmVudDsKIHN0YXRpYyBjb25zdCBSR0JBMzIgbGlnaHRlbmVkQmxhY2sgPSAweEZG
NTQ1NDU0Owogc3RhdGljIGNvbnN0IFJHQkEzMiBkYXJrZW5lZFdoaXRlID0gMHhGRkFCQUJBQjsK
IAorc3RhdGljIGlubGluZSB1bnNpZ25lZCBtdWx0aXBseTI1NSh1bnNpZ25lZCBjKQoreworICAg
IC8vIGMgKiAyNTUKKyAgICAvLyAgID0gYyAqICgyNTYgLSAxKQorICAgIC8vICAgPSBjICogMjU2
IC0gYworICAgIHJldHVybiAoYyA8PCA4KSAtIGM7Cit9CisKK3N0YXRpYyBpbmxpbmUgdW5zaWdu
ZWQgZGl2aWRlMjU1KHVuc2lnbmVkIGMpCit7CisgICAgLy8gYyAvIDI1NQorICAgIC8vICAgPSBj
IC8gMjU2ICogKDEgKyAxIC8gMjU1KQorICAgIC8vICAgPSAoYyArIGMgLyAyNTUpIC8gMjU2Cisg
ICAgLy8gICA9IChjICsgKGMgKyBjIC8gMjU1KSAvIDI1NikgLyAyNTYKKyAgICAvLyAgID0gKGMg
KyBjIC8gMjU2ICsgYyAvICgyNTUgeCAyNTYpKSAvIDI1NgorICAgIC8vICB+PSAoYyArIGMgLyAy
NTYgKyAxKSAvIDI1NgorICAgIHJldHVybiAoYyArIChjID4+IDgpICsgMSkgPj4gODsKK30KKyAg
ICAKK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgZGl2aWRlQ2VpbCh1bnNpZ25lZCBjLCB1bnNpZ25l
ZCBkKQoreworICAgIHJldHVybiAoYyArIGQgLSAxKSAvIGQ7Cit9CisgICAgCitzdGF0aWMgaW5s
aW5lIHVuc2lnbmVkIHByZW11bHRpcGxpZWRDaGFubmVsKHVuc2lnbmVkIGMsIHVuc2lnbmVkIGEp
Cit7CisgICAgcmV0dXJuIGRpdmlkZTI1NShjICogYSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdW5z
aWduZWQgdW5wcmVtdWx0aXBsaWVkQ2hhbm5lbCh1bnNpZ25lZCBjLCB1bnNpZ25lZCBhKQorewor
ICAgIHJldHVybiBkaXZpZGVDZWlsKG11bHRpcGx5MjU1KGMpLCBhKTsKK30KKyAgICAKIFJHQkEz
MiBtYWtlUkdCKGludCByLCBpbnQgZywgaW50IGIpCiB7CiAgICAgcmV0dXJuIDB4RkYwMDAwMDAg
fCBzdGQ6Om1heCgwLCBzdGQ6Om1pbihyLCAyNTUpKSA8PCAxNiB8IHN0ZDo6bWF4KDAsIHN0ZDo6
bWluKGcsIDI1NSkpIDw8IDggfCBzdGQ6Om1heCgwLCBzdGQ6Om1pbihiLCAyNTUpKTsKQEAgLTU5
LDYgKzkzLDE2IEBAIFJHQkEzMiBtYWtlUkdCQShpbnQgciwgaW50IGcsIGludCBiLCBpbnQgYSkK
ICAgICByZXR1cm4gc3RkOjptYXgoMCwgc3RkOjptaW4oYSwgMjU1KSkgPDwgMjQgfCBzdGQ6Om1h
eCgwLCBzdGQ6Om1pbihyLCAyNTUpKSA8PCAxNiB8IHN0ZDo6bWF4KDAsIHN0ZDo6bWluKGcsIDI1
NSkpIDw8IDggfCBzdGQ6Om1heCgwLCBzdGQ6Om1pbihiLCAyNTUpKTsKIH0KIAorUkdCQTMyIG1h
a2VQcmVtdWx0aXBsaWVkUkdCQShpbnQgciwgaW50IGcsIGludCBiLCBpbnQgYSkKK3sKKyAgICBy
ZXR1cm4gbWFrZVJHQkEocHJlbXVsdGlwbGllZENoYW5uZWwociwgYSksIHByZW11bHRpcGxpZWRD
aGFubmVsKGcsIGEpLCBwcmVtdWx0aXBsaWVkQ2hhbm5lbChiLCBhKSwgYSk7Cit9CisgICAgCitS
R0JBMzIgbWFrZVVuUHJlbXVsdGlwbGllZFJHQkEoaW50IHIsIGludCBnLCBpbnQgYiwgaW50IGEp
Cit7CisgICAgcmV0dXJuIG1ha2VSR0JBKHVucHJlbXVsdGlwbGllZENoYW5uZWwociwgYSksIHVu
cHJlbXVsdGlwbGllZENoYW5uZWwoZywgYSksIHVucHJlbXVsdGlwbGllZENoYW5uZWwoYiwgYSks
IGEpOworfQorICAgIAogc3RhdGljIGludCBjb2xvckZsb2F0VG9SR0JBQnl0ZShmbG9hdCBmKQog
ewogICAgIC8vIFdlIHVzZSBscm91bmRmIGFuZCAyNTUgaW5zdGVhZCBvZiBuZXh0YWZ0ZXJmKDI1
NiwgMCkgdG8gbWF0Y2ggQ0cncyByb3VuZGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0NvbG9yLmgKaW5kZXggZGQyNjI3MGJiNDY2MGIzM2FlMDcwZThjOTQ0NTIwZDcyODQ1NGI4
YS4uYTU0NTMyYzc3NTVhN2M4NzY5MzYyNDBjYWU0ZWMzN2E0ZGEwZDA0MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCkBAIC01NCw2ICs1NCw4IEBAIHR5cGVkZWYg
dW5zaWduZWQgUkdCQTMyOyAvLyBEZXByZWNhdGVkOiBUeXBlIGZvciBhbiBSR0JBIHF1YWRydXBs
ZXQuIFVzZSBSR0JBIGNsCiAKIFdFQkNPUkVfRVhQT1JUIFJHQkEzMiBtYWtlUkdCKGludCByLCBp
bnQgZywgaW50IGIpOwogV0VCQ09SRV9FWFBPUlQgUkdCQTMyIG1ha2VSR0JBKGludCByLCBpbnQg
ZywgaW50IGIsIGludCBhKTsKK1dFQkNPUkVfRVhQT1JUIFJHQkEzMiBtYWtlUHJlbXVsdGlwbGll
ZFJHQkEoaW50IHIsIGludCBnLCBpbnQgYiwgaW50IGEpOworV0VCQ09SRV9FWFBPUlQgUkdCQTMy
IG1ha2VVblByZW11bHRpcGxpZWRSR0JBKGludCByLCBpbnQgZywgaW50IGIsIGludCBhKTsKIAog
V0VCQ09SRV9FWFBPUlQgUkdCQTMyIGNvbG9yV2l0aE92ZXJyaWRlQWxwaGEoUkdCQTMyIGNvbG9y
LCBmbG9hdCBvdmVycmlkZUFscGhhKTsKIFdFQkNPUkVfRVhQT1JUIFJHQkEzMiBjb2xvcldpdGhP
dmVycmlkZUFscGhhKFJHQkEzMiBjb2xvciwgT3B0aW9uYWw8ZmxvYXQ+IG92ZXJyaWRlQWxwaGEp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKaW5kZXggN2EyOTk5MmY3
NzE4OGUwMzgyOGQ4MGE2NWI4YmUyY2Q4ZGMyZGU3Ni4uOGU3YjUyYjFmNGYzMWM3NGEzY2IyYTEz
MjE1ZGE3N2EyYjE4YzA3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZS5oCkBAIC0xMzcsOCArMTM3LDExIEBAIHB1YmxpYzoKIAogICAgIGVudW0gVGlsZVJ1bGUgeyBT
dHJldGNoVGlsZSwgUm91bmRUaWxlLCBTcGFjZVRpbGUsIFJlcGVhdFRpbGUgfTsKIAorICAgIHZp
cnR1YWwgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2UoKSB7IHJldHVybiBudWxscHRyOyB9Cisg
ICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZU9mU2l6ZShjb25zdCBJbnRTaXpl
JikgeyByZXR1cm4gbnVsbHB0cjsgfQogICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgbmF0aXZl
SW1hZ2VGb3JDdXJyZW50RnJhbWUoKSB7IHJldHVybiBudWxscHRyOyB9CiAgICAgdmlydHVhbCBJ
bWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uRm9yQ3VycmVudEZyYW1lKCkgeyByZXR1cm4gSW1h
Z2VPcmllbnRhdGlvbigpOyB9CisgICAgdmlydHVhbCBWZWN0b3I8TmF0aXZlSW1hZ2VQdHI+IGZy
YW1lc05hdGl2ZUltYWdlcygpIHsgcmV0dXJuIHsgfTsgfQogCiAgICAgLy8gQWNjZXNzb3JzIGZv
ciBuYXRpdmUgaW1hZ2UgZm9ybWF0cy4KIApAQCAtMTUwLDEyICsxNTMsNiBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBDRkRhdGFSZWYgZ2V0VElGRlJlcHJlc2VudGF0aW9uKCkgeyByZXR1cm4gbnVs
bHB0cjsgfQogI2VuZGlmCiAKLSNpZiBVU0UoQ0cpCi0gICAgdmlydHVhbCBDR0ltYWdlUmVmIGdl
dENHSW1hZ2VSZWYoKSB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgdmlydHVhbCBDR0ltYWdlUmVm
IGdldEZpcnN0Q0dJbWFnZVJlZk9mU2l6ZShjb25zdCBJbnRTaXplJikgeyByZXR1cm4gbnVsbHB0
cjsgfQotICAgIHZpcnR1YWwgUmV0YWluUHRyPENGQXJyYXlSZWY+IGdldENHSW1hZ2VBcnJheSgp
IHsgcmV0dXJuIG51bGxwdHI7IH0KLSNlbmRpZgotCiAjaWYgUExBVEZPUk0oV0lOKQogICAgIHZp
cnR1YWwgYm9vbCBnZXRIQklUTUFQKEhCSVRNQVApIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmly
dHVhbCBib29sIGdldEhCSVRNQVBPZlNpemUoSEJJVE1BUCwgY29uc3QgSW50U2l6ZSopIHsgcmV0
dXJuIGZhbHNlOyB9CkBAIC0xNzksNiArMTc2LDggQEAgcHVibGljOgogI2lmICFBU1NFUlRfRElT
QUJMRUQKICAgICB2aXJ0dWFsIGJvb2wgbm90U29saWRDb2xvcigpIHsgcmV0dXJuIHRydWU7IH0K
ICNlbmRpZgorICAgIAorICAgIHZpcnR1YWwgdm9pZCBsYXlvdXRJZk5lZWRlZCgpIHsgfQogCiAg
ICAgdmlydHVhbCB2b2lkIGR1bXAoVGV4dFN0cmVhbSYpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lRGF0YS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lRGF0YS5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZjM3NGY4ZGQxNWFmY2I4NTgyNWEzOTg3YzAyMzY5ZTU2ZWQ1YjFkMAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVEYXRhLmNw
cApAQCAtMCwwICsxLDEzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW1hZ2VGcmFtZURhdGEu
aCIKKworI2luY2x1ZGUgIkNvbG9yLmgiCisKKyNpZiBVU0UoQ0cpCisjaW5jbHVkZSAiSW1hZ2VE
ZWNvZGVyQ0cuaCIKKyNlbHNlCisjaW5jbHVkZSAiSW1hZ2VEZWNvZGVyLmgiCisjZW5kaWYKKwor
I2luY2x1ZGUgIlBsYXRmb3JtSW1hZ2UuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitJbWFn
ZUZyYW1lRGF0YTo6SW1hZ2VGcmFtZURhdGEoKQoreworfQorCitJbWFnZUZyYW1lRGF0YTo6SW1h
Z2VGcmFtZURhdGEoTmF0aXZlSW1hZ2VQdHImJiBpbWFnZSkKKyAgICA6IG1fc3RhdHVzKERlY29k
aW5nU3RhdHVzOjpDb21wbGV0ZSkKKyAgICAsIG1faW1hZ2UoV1RGTW92ZShpbWFnZSkpCit7Cisg
ICAgbV9zaXplID0gUGxhdGZvcm1JbWFnZShtX2ltYWdlKS5zaXplKCk7CisgICAgbV9oYXNBbHBo
YSA9IFBsYXRmb3JtSW1hZ2UobV9pbWFnZSkuaGFzQWxwaGEoKTsKK30KKworSW1hZ2VGcmFtZURh
dGE6OkltYWdlRnJhbWVEYXRhKEltYWdlRGVjb2RlciYgZGVjb2Rlciwgc2l6ZV90IGluZGV4LCBT
dWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwsIENhY2hpbmcgZnJhbWVDYWNoaW5nKQor
eworICAgIEFTU0VSVChmcmFtZUNhY2hpbmcgPT0gQ2FjaGluZzo6TWV0YWRhdGEgfHwgZnJhbWVD
YWNoaW5nID09IENhY2hpbmc6Ok1ldGFkYXRhQW5kSW1hZ2UpOworICAgIAorICAgIGlmIChmcmFt
ZUNhY2hpbmcgPT0gQ2FjaGluZzo6SW1hZ2UgfHwgZnJhbWVDYWNoaW5nID09IENhY2hpbmc6Ok1l
dGFkYXRhQW5kSW1hZ2UpIHsKKyAgICAgICAgbV9pbWFnZSA9IGRlY29kZXIuY3JlYXRlRnJhbWVJ
bWFnZUF0SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwpOworICAgICAgICBtX3N1YnNhbXBs
aW5nTGV2ZWwgPSBzdWJzYW1wbGluZ0xldmVsOworICAgIH0KKyAgICAKKyAgICBpZiAoZnJhbWVD
YWNoaW5nID09IENhY2hpbmc6Ok1ldGFkYXRhIHx8IGZyYW1lQ2FjaGluZyA9PSBDYWNoaW5nOjpN
ZXRhZGF0YUFuZEltYWdlKSB7CisgICAgICAgIG1fb3JpZW50YXRpb24gPSBkZWNvZGVyLm9yaWVu
dGF0aW9uQXRJbmRleChpbmRleCk7CisgICAgICAgIG1fc3RhdHVzID0gZGVjb2Rlci5mcmFtZUlz
Q29tcGxldGVBdEluZGV4KGluZGV4KSA/IERlY29kaW5nU3RhdHVzOjpDb21wbGV0ZSA6IERlY29k
aW5nU3RhdHVzOjpQYXJ0aWFsOworICAgICAgICAKKyAgICAgICAgaWYgKGRlY29kZXIucmVwZXRp
dGlvbkNvdW50KCkgIT0gY0FuaW1hdGlvbk5vbmUpCisgICAgICAgICAgICBtX2R1cmF0aW9uID0g
ZGVjb2Rlci5mcmFtZUR1cmF0aW9uQXRJbmRleChpbmRleCk7CisgICAgICAgIAorICAgICAgICBt
X2hhc0FscGhhID0gZGVjb2Rlci5mcmFtZUhhc0FscGhhQXRJbmRleChpbmRleCk7CisgICAgICAg
IG1fc2l6ZSA9IGRlY29kZXIuZnJhbWVTaXplQXRJbmRleChpbmRleCwgc3Vic2FtcGxpbmdMZXZl
bCk7CisgICAgfQorfQorICAgIAorSW1hZ2VGcmFtZURhdGE6On5JbWFnZUZyYW1lRGF0YSgpCit7
CisgICAgY2xlYXJTdWJJbWFnZXMoKTsKK30KKyAgICAKK0ltYWdlRnJhbWVEYXRhJiBJbWFnZUZy
YW1lRGF0YTo6b3BlcmF0b3I9KGNvbnN0IEltYWdlRnJhbWVEYXRhJiBvdGhlcikKK3sKKyAgICBp
ZiAodGhpcyA9PSAmb3RoZXIpCisgICAgICAgIHJldHVybiAqdGhpczsKKworICAgIG1fc3RhdHVz
ID0gb3RoZXIubV9zdGF0dXM7CisgICAgbV9zaXplID0gb3RoZXIubV9zaXplOworICAgIG1faW1h
Z2UgPSBvdGhlci5tX2ltYWdlOworICAgIAorICAgIG1fcGl4ZWxzID0gb3RoZXIucGl4ZWxzKCkg
PyBCaXRtYXBQaXhlbHM6OmNyZWF0ZSgqb3RoZXIucGl4ZWxzKCkpIDogbnVsbHB0cjsKKyAgICAK
KyAgICBtX29yaWVudGF0aW9uID0gb3RoZXIubV9vcmllbnRhdGlvbjsKKyAgICBtX3N1YnNhbXBs
aW5nTGV2ZWwgPSBvdGhlci5tX3N1YnNhbXBsaW5nTGV2ZWw7CisgICAgbV9kdXJhdGlvbiA9IG90
aGVyLm1fZHVyYXRpb247CisgICAgbV9oYXNBbHBoYSA9IG90aGVyLm1faGFzQWxwaGE7CisgICAg
cmV0dXJuICp0aGlzOworfQorCit2b2lkIEltYWdlRnJhbWVEYXRhOjpjbGVhclN1YkltYWdlcygp
Cit7CisgICAgaWYgKCFtX2ltYWdlKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgUGxhdGZv
cm1JbWFnZShtX2ltYWdlKS5jbGVhclN1YkltYWdlcygpOworfQorCit1bnNpZ25lZCBJbWFnZUZy
YW1lRGF0YTo6Y2xlYXIoQ2FjaGluZyBmcmFtZUNhY2hpbmcpCit7CisgICAgQVNTRVJUKGZyYW1l
Q2FjaGluZyA9PSBDYWNoaW5nOjpFbXB0eSB8fCBmcmFtZUNhY2hpbmcgPT0gQ2FjaGluZzo6TWV0
YWRhdGEpOworICAgIAorICAgIHVuc2lnbmVkIGZyYW1lQnl0ZXMgPSB0aGlzLT5mcmFtZUJ5dGVz
KCk7CisgICAgCisgICAgY2xlYXJTdWJJbWFnZXMoKTsKKyAgICAKKyAgICBpZiAoZnJhbWVDYWNo
aW5nID09IENhY2hpbmc6OkVtcHR5KQorICAgICAgICAqdGhpcyA9IEltYWdlRnJhbWVEYXRhKCk7
CisgICAgZWxzZQorICAgICAgICBtX2ltYWdlID0gbnVsbHB0cjsKKyAgICAKKyAgICByZXR1cm4g
ZnJhbWVCeXRlczsKK30KKworQ29sb3IgSW1hZ2VGcmFtZURhdGE6OnNpbmdsZVBpeGVsU29saWRD
b2xvcigpIGNvbnN0Cit7CisgICAgaWYgKCFoYXNJbWFnZSgpIHx8IG1fc2l6ZSAhPSBJbnRTaXpl
KDEsIDEpKQorICAgICAgICByZXR1cm4gQ29sb3IoKTsKKyAgICAKKyAgICByZXR1cm4gUGxhdGZv
cm1JbWFnZShtX2ltYWdlKS5zaW5nbGVQaXhlbFNvbGlkQ29sb3IoKTsKK30KKworYm9vbCBJbWFn
ZUZyYW1lRGF0YTo6aXNBbG1vc3RTb2xpZENvbG9yKCkgY29uc3QKK3sKKyAgICBpZiAoIWhhc0lt
YWdlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICByZXR1cm4gUGxhdGZvcm1J
bWFnZShtX2ltYWdlKS5pc0FsbW9zdFNvbGlkQ29sb3IoKTsKK30KKyAgICAKK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVEYXRhLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lRGF0YS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmY2ZmI3NThlZjNhNDI1OGNiZGIzYWUyZjQ2ZTg0NDBmNzMwZWY0N2MKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lRGF0YS5o
CkBAIC0wLDAgKzEsMTAxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQml0bWFwUGl4ZWxzLmgiCisjaW5j
bHVkZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgorI2luY2x1ZGUgIkludFNpemUuaCIKKyNpbmNsdWRl
ICJOYXRpdmVJbWFnZVB0ci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENvbG9y
OworY2xhc3MgSW1hZ2VEZWNvZGVyOworCisvLyBTdWJzYW1wbGluZ0xldmVsLiAwIGlzIG5vIHN1
YnNhbXBsaW5nLCAxIGlzIGhhbGYgZGltZW5zaW9ucyBvbiBlYWNoIGF4aXMgZXRjLgordXNpbmcg
U3Vic2FtcGxpbmdMZXZlbCA9IHVpbnQ4X3Q7CisKK2VudW0gOiBTdWJzYW1wbGluZ0xldmVsIHsK
KyAgICBNaW5TdWJzYW1wbGluZ0xldmVsID0gMCwKKyAgICBNYXhTdWJzYW1wbGluZ0xldmVsID0g
MywKKyAgICBEZWZhdWx0U3Vic2FtcGxpbmdMZXZlbCA9IE1pblN1YnNhbXBsaW5nTGV2ZWwKK307
CisKK2NsYXNzIEltYWdlRnJhbWVEYXRhIHsKKyAgICBmcmllbmQgY2xhc3MgSW1hZ2VEZWNvZGVy
OworcHVibGljOgorICAgIGVudW0gY2xhc3MgQ2FjaGluZyB7IEVtcHR5LCBNZXRhZGF0YSwgSW1h
Z2UsIE1ldGFkYXRhQW5kSW1hZ2UgfTsKKyAgICBlbnVtIGNsYXNzIERlY29kaW5nU3RhdHVzIHsg
RW1wdHksIFBhcnRpYWwsIENvbXBsZXRlIH07CisgICAgCisgICAgSW1hZ2VGcmFtZURhdGEoKTsK
KyAgICBJbWFnZUZyYW1lRGF0YShOYXRpdmVJbWFnZVB0ciYmKTsKKyAgICBJbWFnZUZyYW1lRGF0
YShJbWFnZURlY29kZXImLCBzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgPSBEZWZhdWx0
U3Vic2FtcGxpbmdMZXZlbCwgQ2FjaGluZyA9IENhY2hpbmc6Ok1ldGFkYXRhQW5kSW1hZ2UpOwor
ICAgIEltYWdlRnJhbWVEYXRhKGNvbnN0IEltYWdlRnJhbWVEYXRhJiBvdGhlcikgeyBvcGVyYXRv
cj0ob3RoZXIpOyB9CisKKyAgICB+SW1hZ2VGcmFtZURhdGEoKTsKKworICAgIEltYWdlRnJhbWVE
YXRhJiBvcGVyYXRvcj0oY29uc3QgSW1hZ2VGcmFtZURhdGEmIG90aGVyKTsKKyAgICAKKyAgICB1
bnNpZ25lZCBjbGVhcihDYWNoaW5nKTsKKyAgICBDb2xvciBzaW5nbGVQaXhlbFNvbGlkQ29sb3Io
KSBjb25zdDsKKyAgICBib29sIGlzQWxtb3N0U29saWRDb2xvcigpIGNvbnN0OworICAgIAorICAg
IERlY29kaW5nU3RhdHVzIHN0YXR1cygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdHVzOyB9CisgICAg
Ym9vbCBpc0NvbXBsZXRlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0dXMgPT0gRGVjb2RpbmdTdGF0
dXM6OkNvbXBsZXRlOyB9CisgICAgSW50U2l6ZSBzaXplKCkgY29uc3QgeyByZXR1cm4gaGFzUGl4
ZWxzKCkgPyBwaXhlbHMoKS0+c2l6ZSgpIDogbV9zaXplOyB9CisgICAgdW5zaWduZWQgZnJhbWVC
eXRlcygpIGNvbnN0IHsgcmV0dXJuIGhhc0ltYWdlKCkgPyBtX3NpemUuYXJlYSgpICogc2l6ZW9m
KFJHQkEzMikgOiAwOyB9CisgICAgTmF0aXZlSW1hZ2VQdHIgaW1hZ2UoKSBjb25zdCB7IHJldHVy
biBtX2ltYWdlOyB9CisgICAgQml0bWFwUGl4ZWxzKiBwaXhlbHMoKSBjb25zdCB7IHJldHVybiBt
X3BpeGVscyA/IG1fcGl4ZWxzLmdldCgpIDogbnVsbHB0cjsgfQorICAgIAorICAgIEltYWdlT3Jp
ZW50YXRpb24gb3JpZW50YXRpb24oKSBjb25zdCB7IHJldHVybiBtX29yaWVudGF0aW9uOyB9Cisg
ICAgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsKCkgY29uc3QgeyByZXR1cm4gbV9z
dWJzYW1wbGluZ0xldmVsOyB9CisgICAgZmxvYXQgZHVyYXRpb24oKSBjb25zdCB7IHJldHVybiBt
X2R1cmF0aW9uOyB9CisgICAgCisgICAgYm9vbCBoYXNBbHBoYSgpIGNvbnN0IHsgcmV0dXJuIG1f
aGFzQWxwaGE7IH0KKyAgICBib29sIGhhc0ltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZTsg
fQorICAgIGJvb2wgaGFzTWV0YWRhdGEoKSBjb25zdCB7IHJldHVybiAhbV9zaXplLmlzRW1wdHko
KTsgfQorICAgIGJvb2wgaGFzUGl4ZWxzKCkgY29uc3QgeyByZXR1cm4gcGl4ZWxzKCk7IH0KKyAg
ICAKK3ByaXZhdGU6CisgICAgdm9pZCBjbGVhclN1YkltYWdlcygpOworCisgICAgdm9pZCBzZXRT
dGF0dXMoRGVjb2RpbmdTdGF0dXMgc3RhdHVzKSB7IG1fc3RhdHVzID0gc3RhdHVzOyB9CisgICAg
dm9pZCBzZXRPcmllbnRhdGlvbihJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKSB7IG1fb3Jp
ZW50YXRpb24gPSBvcmllbnRhdGlvbjsgfTsKKyAgICB2b2lkIHNldER1cmF0aW9uKHVuc2lnbmVk
IGR1cmF0aW9uKSB7IG1fZHVyYXRpb24gPSBkdXJhdGlvbjsgfQorICAgIHZvaWQgc2V0SGFzQWxw
aGEoYm9vbCBoYXNBbHBoYSkgeyBtX2hhc0FscGhhID0gaGFzQWxwaGE7IH0KKyAgICAKKyAgICBE
ZWNvZGluZ1N0YXR1cyBtX3N0YXR1cyB7IERlY29kaW5nU3RhdHVzOjpFbXB0eSB9OworICAgIElu
dFNpemUgbV9zaXplOworICAgIE5hdGl2ZUltYWdlUHRyIG1faW1hZ2U7CisgICAgc3RkOjp1bmlx
dWVfcHRyPEJpdG1hcFBpeGVscz4gbV9waXhlbHM7CisgICAgCisgICAgSW1hZ2VPcmllbnRhdGlv
biBtX29yaWVudGF0aW9uIHsgRGVmYXVsdEltYWdlT3JpZW50YXRpb24gfTsKKyAgICBTdWJzYW1w
bGluZ0xldmVsIG1fc3Vic2FtcGxpbmdMZXZlbCB7IDAgfTsKKyAgICBmbG9hdCBtX2R1cmF0aW9u
IHsgMCB9OworICAgIGJvb2wgbV9oYXNBbHBoYSB7IHRydWUgfTsKK307CisgICAgCit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKaW5kZXgg
ZGRkOGE1NWJhMDkwNmM1ODY2YTE5MmNmOGU0MTRlYTcwN2I3MjhhYy4uODJmNmUyZDZlNDU0MzNk
YTFhN2Q1NmIzNzBkZmE2MWE0YzQxOTEzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcApAQCAtMjI0LDYgKzIyNCwxMSBAQCBOYXRpdmVJ
bWFnZVB0ciBJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4
LCBTdWJzYW1wbGluZ0xldgogICAgIHJldHVybiBpbml0aWFsaXplZCgpID8gbV9kZWNvZGVyLT5j
cmVhdGVGcmFtZUltYWdlQXRJbmRleChpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCkgOiBudWxscHRy
OwogfQogCitJbWFnZUZyYW1lRGF0YSBJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVEYXRhQXRJbmRl
eChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgSW1hZ2VG
cmFtZURhdGE6OkNhY2hpbmcgY2FjaGluZykKK3sKKyAgICByZXR1cm4gaW5pdGlhbGl6ZWQoKSA/
IEltYWdlRnJhbWVEYXRhKCptX2RlY29kZXIsIGluZGV4LCBzdWJzYW1wbGluZ0xldmVsLCBjYWNo
aW5nKSA6IEltYWdlRnJhbWVEYXRhKCk7Cit9CisgICAgCiB2b2lkIEltYWdlU291cmNlOjpkdW1w
KFRleHRTdHJlYW0mIHRzKSBjb25zdAogewogICAgIGlmIChtX2FsbG93U3Vic2FtcGxpbmcpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaAppbmRleCA2
MDM1NzM5YjdlOGIwOTZkYzhkZmU5YzUzMGE0MmM2ZjI5MWJkYTAwLi5hNDBjN2NlOTMwN2NkYWRm
MDc5YWI3MDFhODI3OTliNjkwNTI5ZDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlU291cmNlLmgKQEAgLTI3LDYgKzI3LDcgQEAKICNpZm5kZWYgSW1hZ2VT
b3VyY2VfaAogI2RlZmluZSBJbWFnZVNvdXJjZV9oCiAKKyNpbmNsdWRlICJJbWFnZUZyYW1lRGF0
YS5oIgogI2luY2x1ZGUgIkltYWdlT3JpZW50YXRpb24uaCIKICNpbmNsdWRlICJJbnRQb2ludC5o
IgogI2luY2x1ZGUgIk5hdGl2ZUltYWdlUHRyLmgiCkBAIC02Myw5ICs2NCw2IEBAIGNvbnN0IGlu
dCBjQW5pbWF0aW9uTG9vcE9uY2UgPSAwOwogY29uc3QgaW50IGNBbmltYXRpb25Mb29wSW5maW5p
dGUgPSAtMTsKIGNvbnN0IGludCBjQW5pbWF0aW9uTm9uZSA9IC0yOwogCi0vLyBTdWJzYW1wbGlu
Z0xldmVsLiAwIGlzIG5vIHN1YnNhbXBsaW5nLCAxIGlzIGhhbGYgZGltZW5zaW9ucyBvbiBlYWNo
IGF4aXMgZXRjLgotdHlwZWRlZiBzaG9ydCBTdWJzYW1wbGluZ0xldmVsOwotCiBjbGFzcyBJbWFn
ZVNvdXJjZSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW1hZ2VTb3VyY2UpOwogICAgIGZy
aWVuZCBjbGFzcyBCaXRtYXBJbWFnZTsKQEAgLTEzMiwxOCArMTMwLDE5IEBAIHB1YmxpYzoKICAg
ICBib29sIGFsbG93U3Vic2FtcGxpbmdPZkZyYW1lQXRJbmRleChzaXplX3QpIGNvbnN0OwogICAg
IAogICAgIC8vIFNpemUgb2Ygb3B0aW9uYWxseSBzdWJzYW1wbGVkIGZyYW1lLgotICAgIEludFNp
emUgZnJhbWVTaXplQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSAwLCBSZXNwZWN0
SW1hZ2VPcmllbnRhdGlvbkVudW0gPSBEb05vdFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKSBjb25z
dDsKKyAgICBJbnRTaXplIGZyYW1lU2l6ZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVs
ID0gRGVmYXVsdFN1YnNhbXBsaW5nTGV2ZWwsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSA9
IERvTm90UmVzcGVjdEltYWdlT3JpZW50YXRpb24pIGNvbnN0OwogICAgIAogICAgIC8vIFJldHVy
biB0aGUgbnVtYmVyIG9mIGJ5dGVzIGluIHRoZSBkZWNvZGVkIGZyYW1lLiBJZiB0aGUgZnJhbWUg
aXMgbm90IHlldAogICAgIC8vIGRlY29kZWQgdGhlbiByZXR1cm4gMC4KLSAgICB1bnNpZ25lZCBm
cmFtZUJ5dGVzQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSAwKSBjb25zdDsKKyAg
ICB1bnNpZ25lZCBmcmFtZUJ5dGVzQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBE
ZWZhdWx0U3Vic2FtcGxpbmdMZXZlbCkgY29uc3Q7CiAgICAgCiAgICAgZmxvYXQgZnJhbWVEdXJh
dGlvbkF0SW5kZXgoc2l6ZV90KTsKICAgICBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uQXRJ
bmRleChzaXplX3QpIGNvbnN0OyAvLyBFWElGIGltYWdlIG9yaWVudGF0aW9uCiAgICAgCiAgICAg
Ly8gQ2FsbGVycyBzaG91bGQgbm90IGNhbGwgdGhpcyBhZnRlciBjYWxsaW5nIGNsZWFyKCkgd2l0
aCBhIGhpZ2hlciBpbmRleDsKICAgICAvLyBzZWUgY29tbWVudHMgb24gY2xlYXIoKSBhYm92ZS4K
LSAgICBOYXRpdmVJbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNh
bXBsaW5nTGV2ZWwgPSAwKTsKKyAgICBOYXRpdmVJbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJ
bmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBEZWZhdWx0U3Vic2FtcGxpbmdMZXZlbCk7
CisgICAgSW1hZ2VGcmFtZURhdGEgY3JlYXRlRnJhbWVEYXRhQXRJbmRleChzaXplX3QsIFN1YnNh
bXBsaW5nTGV2ZWwgPSBEZWZhdWx0U3Vic2FtcGxpbmdMZXZlbCwgSW1hZ2VGcmFtZURhdGE6OkNh
Y2hpbmcgPSBJbWFnZUZyYW1lRGF0YTo6Q2FjaGluZzo6TWV0YWRhdGFBbmRJbWFnZSk7CiAgICAg
CiBwcml2YXRlOgogICAgIHZvaWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVfdCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUltYWdlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUltYWdlLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYWI3YWVhNDg5ZjNlYjJhODI4NzcxYzIxMDNlOGQ0ZDBiZTE3YmU1ZAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2Uu
aApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiR3JhcGhpY3NUeXBlcy5oIgorI2lu
Y2x1ZGUgIkltYWdlT3JpZW50YXRpb24uaCIKKyNpbmNsdWRlICJOYXRpdmVJbWFnZVB0ci5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENvbG9yOworY2xhc3MgRmxvYXRSZWN0Owor
Y2xhc3MgSW50U2l6ZTsKK2NsYXNzIEdyYXBoaWNzQ29udGV4dDsKKworY2xhc3MgUGxhdGZvcm1J
bWFnZSB7CitwdWJsaWM6CisgICAgUGxhdGZvcm1JbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYg
aW1hZ2UpCisgICAgICAgIDogbV9pbWFnZShpbWFnZSkKKyAgICB7CisgICAgfQorCisgICAgYm9v
bCBpc05pbCgpIGNvbnN0IHsgcmV0dXJuICFtX2ltYWdlOyB9CisgICAgdm9pZCBjbGVhclN1Yklt
YWdlcygpOworCisgICAgSW50U2l6ZSBzaXplKCkgY29uc3Q7CisgICAgYm9vbCBoYXNBbHBoYSgp
IGNvbnN0OworICAgIENvbG9yIHNpbmdsZVBpeGVsU29saWRDb2xvcigpIGNvbnN0OworICAgIGJv
b2wgaXNBbG1vc3RTb2xpZENvbG9yKCkgY29uc3Q7CisgICAgdm9pZCBkcmF3KEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwg
Y29uc3QgSW1hZ2VPcmllbnRhdGlvbiYpIGNvbnN0OworCisgICAgc3RhdGljIGZsb2F0IHN1YnNh
bXBsaW5nU2NhbGUoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0KTsKKworcHJpdmF0ZToKKyNpZiBVU0UoQ0cpCisgICAg
Q0dJbWFnZVJlZiBjZ0ltYWdlUmVmKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZSA/IG1faW1hZ2Uu
Z2V0KCkgOiBudWxscHRyOyB9CisjZW5kaWYKKyAgICBOYXRpdmVJbWFnZVB0ciBtX2ltYWdlOwor
fTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCmluZGV4IGY0YzE0NTdiYmIyNTU3NTRm
MDBhMDYyNWVlODNlMDRkYTdjNmVmY2YuLmQ1MjBmNWQ1ODVhYzYwZGJhZWUyNTVlMWI4M2MyNGRj
Njg3MjEwYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KQEAgLTIxMiw3ICsyMTIsNyBA
QCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dXBkYXRlRGlzcGxh
eU1vZGUoKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICB9
CiAKLSAgICAgICAgICAgICAgICBtX3BhdXNlZEltYWdlID0gaW1hZ2UtPmdldENHSW1hZ2VSZWYo
KTsKKyAgICAgICAgICAgICAgICBtX3BhdXNlZEltYWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9y
Q3VycmVudEZyYW1lKCk7CiAgICAgICAgICAgICAgICAgaWYgKCFtX3BhdXNlZEltYWdlKSB7CiAg
ICAgICAgICAgICAgICAgICAgIG1fZGlzcGxheU1vZGUgPSBQYWludEl0QmxhY2s7CiAgICAgICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMTc3MjJiZWM1M2FiOGEwOGE4ZGE4NTI4YjllMGQ3YzRkMGNkNDEz
NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcAorKysg
L2Rldi9udWxsCkBAIC0xLDE0MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAy
MDA1LCAyMDA2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDcgQWxwIFRva2VyIDxhbHBAYXRva2VyLmNvbT4KLSAqIENvcHlyaWdodCAoQykgMjAw
OSBEaXJrIFNjaHVsemUgPGtyaXRAd2Via2l0Lm9yZz4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkJpdG1h
cEltYWdlLmgiCi0KLSNpZiBVU0UoQ0FJUk8pCi0KLSNpbmNsdWRlICJDYWlyb1V0aWxpdGllcy5o
IgotI2luY2x1ZGUgIkltYWdlT2JzZXJ2ZXIuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybUNvbnRleHRD
YWlyby5oIgotI2luY2x1ZGUgIlRpbWVyLmgiCi0jaW5jbHVkZSA8Y2Fpcm8uaD4KLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgTmF0aXZlSW1hZ2UgewotCi1JbnRTaXplIHNpemUo
Y29uc3QgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4mIGltYWdlKQotewotICAgIHJldHVybiBjYWly
b1N1cmZhY2VTaXplKGltYWdlLmdldCgpKTsKLX0KLQotYm9vbCBoYXNBbHBoYShjb25zdCBSZWZQ
dHI8Y2Fpcm9fc3VyZmFjZV90PiYgaW1hZ2UpCi17Ci0gICAgcmV0dXJuIGNhaXJvX3N1cmZhY2Vf
Z2V0X2NvbnRlbnQoaW1hZ2UuZ2V0KCkpICE9IENBSVJPX0NPTlRFTlRfQ09MT1I7Ci19Ci0KLUNv
bG9yIHNpbmdsZVBpeGVsU29saWRDb2xvcihjb25zdCBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiYg
aW1hZ2UpCi17Ci0gICAgQVNTRVJUKGltYWdlKTsKLSAgICAKLSAgICBpZiAoTmF0aXZlSW1hZ2U6
OnNpemUoaW1hZ2UpICE9IEludFNpemUoMSwgMSkpCi0gICAgICAgIHJldHVybiBDb2xvcigpOwot
Ci0gICAgaWYgKGNhaXJvX3N1cmZhY2VfZ2V0X3R5cGUoaW1hZ2UuZ2V0KCkpICE9IENBSVJPX1NV
UkZBQ0VfVFlQRV9JTUFHRSkKLSAgICAgICAgcmV0dXJuIENvbG9yKCk7Ci0KLSAgICBSR0JBMzIq
IHBpeGVsID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8UkdCQTMyKj4oY2Fpcm9faW1hZ2Vfc3VyZmFj
ZV9nZXRfZGF0YShpbWFnZS5nZXQoKSkpOwotICAgIHJldHVybiBjb2xvckZyb21QcmVtdWx0aXBs
aWVkQVJHQigqcGl4ZWwpOwotfQotCi19Ci0KLXZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmMsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLAotICAgIEJsZW5kTW9kZSBibGVuZE1vZGUsIElt
YWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiBkZXNjcmlwdGlvbikKLXsKLSAgICBpZiAoIWRzdC53
aWR0aCgpIHx8ICFkc3QuaGVpZ2h0KCkgfHwgIXNyYy53aWR0aCgpIHx8ICFzcmMuaGVpZ2h0KCkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIHN0YXJ0QW5pbWF0aW9uKCk7Ci0KLSAgICBhdXRvIHN1
cmZhY2UgPSBmcmFtZUltYWdlQXRJbmRleChtX2N1cnJlbnRGcmFtZSk7Ci0gICAgaWYgKCFzdXJm
YWNlKSAvLyBJZiBpdCdzIHRvbyBlYXJseSB3ZSB3b24ndCBoYXZlIGFuIGltYWdlIHlldC4KLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgQ29sb3IgY29sb3IgPSBzaW5nbGVQaXhlbFNvbGlkQ29sb3Io
KTsKLSAgICBpZiAoY29sb3IuaXNWYWxpZCgpKSB7Ci0gICAgICAgIGZpbGxXaXRoU29saWRDb2xv
cihjb250ZXh0LCBkc3QsIGNvbG9yLCBvcCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBjb250ZXh0LnNhdmUoKTsKLQotICAgIC8vIFNldCB0aGUgY29tcG9zaXRpbmcgb3BlcmF0aW9u
LgotICAgIGlmIChvcCA9PSBDb21wb3NpdGVTb3VyY2VPdmVyICYmIGJsZW5kTW9kZSA9PSBCbGVu
ZE1vZGVOb3JtYWwgJiYgIWZyYW1lSGFzQWxwaGFBdEluZGV4KG1fY3VycmVudEZyYW1lKSkKLSAg
ICAgICAgY29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlQ29weSk7Ci0gICAg
ZWxzZQotICAgICAgICBjb250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihvcCwgYmxlbmRNb2Rl
KTsKLQotI2lmIEVOQUJMRShJTUFHRV9ERUNPREVSX0RPV05fU0FNUExJTkcpCi0gICAgSW50U2l6
ZSBzY2FsZWRTaXplID0gY2Fpcm9TdXJmYWNlU2l6ZShzdXJmYWNlLmdldCgpKTsKLSAgICBGbG9h
dFJlY3QgYWRqdXN0ZWRTcmNSZWN0ID0gYWRqdXN0U291cmNlUmVjdEZvckRvd25TYW1wbGluZyhz
cmMsIHNjYWxlZFNpemUpOwotI2Vsc2UKLSAgICBGbG9hdFJlY3QgYWRqdXN0ZWRTcmNSZWN0KHNy
Yyk7Ci0jZW5kaWYKLQotICAgIEltYWdlT3JpZW50YXRpb24gZnJhbWVPcmllbnRhdGlvbihkZXNj
cmlwdGlvbi5pbWFnZU9yaWVudGF0aW9uKCkpOwotICAgIGlmIChkZXNjcmlwdGlvbi5yZXNwZWN0
SW1hZ2VPcmllbnRhdGlvbigpID09IFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKQotICAgICAgICBm
cmFtZU9yaWVudGF0aW9uID0gZnJhbWVPcmllbnRhdGlvbkF0SW5kZXgobV9jdXJyZW50RnJhbWUp
OwotCi0gICAgRmxvYXRSZWN0IGRzdFJlY3QgPSBkc3Q7Ci0KLSAgICBpZiAoZnJhbWVPcmllbnRh
dGlvbiAhPSBEZWZhdWx0SW1hZ2VPcmllbnRhdGlvbikgewotICAgICAgICAvLyBJbWFnZU9yaWVu
dGF0aW9uIGV4cGVjdHMgdGhlIG9yaWdpbiB0byBiZSBhdCAoMCwgMCkuCi0gICAgICAgIGNvbnRl
eHQudHJhbnNsYXRlKGRzdFJlY3QueCgpLCBkc3RSZWN0LnkoKSk7Ci0gICAgICAgIGRzdFJlY3Qu
c2V0TG9jYXRpb24oRmxvYXRQb2ludCgpKTsKLSAgICAgICAgY29udGV4dC5jb25jYXRDVE0oZnJh
bWVPcmllbnRhdGlvbi50cmFuc2Zvcm1Gcm9tRGVmYXVsdChkc3RSZWN0LnNpemUoKSkpOwotICAg
ICAgICBpZiAoZnJhbWVPcmllbnRhdGlvbi51c2VzV2lkdGhBc0hlaWdodCgpKSB7Ci0gICAgICAg
ICAgICAvLyBUaGUgZGVzdGluYXRpb24gcmVjdGFuZ2xlIHdpbGwgaGF2ZSBpdCdzIHdpZHRoIGFu
ZCBoZWlnaHQgYWxyZWFkeSByZXZlcnNlZCBmb3IgdGhlIG9yaWVudGF0aW9uIG9mCi0gICAgICAg
ICAgICAvLyB0aGUgaW1hZ2UsIGFzIGl0IHdhcyBuZWVkZWQgZm9yIHBhZ2UgbGF5b3V0LCBzbyB3
ZSBuZWVkIHRvIHJldmVyc2UgaXQgYmFjayBoZXJlLgotICAgICAgICAgICAgZHN0UmVjdCA9IEZs
b2F0UmVjdChkc3RSZWN0LngoKSwgZHN0UmVjdC55KCksIGRzdFJlY3QuaGVpZ2h0KCksIGRzdFJl
Y3Qud2lkdGgoKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBjb250ZXh0LnBsYXRmb3JtQ29u
dGV4dCgpLT5kcmF3U3VyZmFjZVRvQ29udGV4dChzdXJmYWNlLmdldCgpLCBkc3RSZWN0LCBhZGp1
c3RlZFNyY1JlY3QsIGNvbnRleHQpOwotCi0gICAgY29udGV4dC5yZXN0b3JlKCk7Ci0KLSAgICBp
ZiAoaW1hZ2VPYnNlcnZlcigpKQotICAgICAgICBpbWFnZU9ic2VydmVyKCktPmRpZERyYXcodGhp
cyk7Ci19Ci0KLWJvb2wgRnJhbWVEYXRhOjpjbGVhcihib29sIGNsZWFyTWV0YWRhdGEpCi17Ci0g
ICAgaWYgKGNsZWFyTWV0YWRhdGEpCi0gICAgICAgIG1faGF2ZU1ldGFkYXRhID0gZmFsc2U7Ci0K
LSAgICBpZiAobV9pbWFnZSkgewotICAgICAgICBtX2ltYWdlID0gbnVsbHB0cjsKLSAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gVVNFKENBSVJPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1JbWFnZUNhaXJvLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtSW1hZ2VDYWlyby5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNzBhZGFlYzI3MGUzMWIwNTRhZmM1ZjY2ZDQ4Mjg4YWViZjA2MWUzYQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L1BsYXRmb3JtSW1hZ2VDYWlyby5jcHAKQEAgLTAsMCArMSwxMTEgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIlBsYXRmb3JtSW1hZ2UuaCIKKworI2lmIFVTRShDQUlSTykKKworI2luY2x1ZGUgIkNh
aXJvVXRpbGl0aWVzLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0Q2Fpcm8uaCIKKyNpbmNs
dWRlIDxjYWlyby5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgUGxhdGZvcm1JbWFn
ZTo6Y2xlYXJTdWJJbWFnZXMoKQoreworfQorCitJbnRTaXplIFBsYXRmb3JtSW1hZ2U6OnNpemUo
KSBjb25zdAoreworICAgIHJldHVybiBpc05pbCgpID8gSW50U2l6ZSgpIDogY2Fpcm9TdXJmYWNl
U2l6ZShtX2ltYWdlLmdldCgpKTsKK30KKworYm9vbCBQbGF0Zm9ybUltYWdlOjpoYXNBbHBoYSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIGlzTmlsKCkgfHwgY2Fpcm9fc3VyZmFjZV9nZXRfY29udGVu
dChtX2ltYWdlLmdldCgpKSAhPSBDQUlST19DT05URU5UX0NPTE9SOworfQorCitDb2xvciBQbGF0
Zm9ybUltYWdlOjpzaW5nbGVQaXhlbFNvbGlkQ29sb3IoKSBjb25zdAoreworICAgIGlmIChpc05p
bCgpIHx8IHNpemUoKSAhPSBJbnRTaXplKDEsIDEpKQorICAgICAgICByZXR1cm4gQ29sb3IoKTsK
KworICAgIGlmIChjYWlyb19zdXJmYWNlX2dldF90eXBlKG1faW1hZ2UuZ2V0KCkpICE9IENBSVJP
X1NVUkZBQ0VfVFlQRV9JTUFHRSkKKyAgICAgICAgcmV0dXJuIENvbG9yKCk7CisKKyAgICBSR0JB
MzIqIHBpeGVsID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8UkdCQTMyKj4oY2Fpcm9faW1hZ2Vfc3Vy
ZmFjZV9nZXRfZGF0YShtX2ltYWdlLmdldCgpKSk7CisgICAgcmV0dXJuIGNvbG9yRnJvbVByZW11
bHRpcGxpZWRBUkdCKCpwaXhlbCk7Cit9CisKK2Jvb2wgUGxhdGZvcm1JbWFnZTo6aXNBbG1vc3RT
b2xpZENvbG9yKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Zsb2F0IFBsYXRm
b3JtSW1hZ2U6OnN1YnNhbXBsaW5nU2NhbGUoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRS
ZWN0JiwgY29uc3QgRmxvYXRSZWN0JikKK3sKKyAgICByZXR1cm4gMTsKK30KKwordm9pZCBQbGF0
Zm9ybUltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRTaXplJiwgQ29t
cG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBtb2RlLCBjb25zdCBJbWFnZU9yaWVudGF0aW9u
JiBvcmllbnRhdGlvbikgY29uc3QKK3sKKyAgICBjb250ZXh0LnNhdmUoKTsKKyAgICAKKyAgICAv
LyBTZXQgdGhlIGNvbXBvc2l0aW5nIG9wZXJhdGlvbi4KKyAgICBpZiAob3AgPT0gQ29tcG9zaXRl
U291cmNlT3ZlciAmJiBtb2RlID09IEJsZW5kTW9kZU5vcm1hbCAmJiAhaGFzQWxwaGEoKSkKKyAg
ICAgICAgY29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlQ29weSk7CisgICAg
ZWxzZQorICAgICAgICBjb250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihvcCwgbW9kZSk7Cisg
ICAgICAgIAorI2lmIEVOQUJMRShJTUFHRV9ERUNPREVSX0RPV05fU0FNUExJTkcpCisgICAgSW50
U2l6ZSBzY2FsZWRTaXplID0gY2Fpcm9TdXJmYWNlU2l6ZShtX2ltYWdlLmdldCgpKTsKKyAgICBG
bG9hdFJlY3QgYWRqdXN0ZWRTcmNSZWN0ID0gYWRqdXN0U291cmNlUmVjdEZvckRvd25TYW1wbGlu
ZyhzcmNSZWN0LCBzY2FsZWRTaXplKTsKKyNlbHNlCisgICAgRmxvYXRSZWN0IGFkanVzdGVkU3Jj
UmVjdChzcmNSZWN0KTsKKyNlbmRpZgorICAgICAgICAKKyAgICBGbG9hdFJlY3QgYWRqdXN0ZWRE
ZXN0UmVjdCA9IGRlc3RSZWN0OworICAgICAgICAKKyAgICBpZiAob3JpZW50YXRpb24gIT0gRGVm
YXVsdEltYWdlT3JpZW50YXRpb24pIHsKKyAgICAgICAgLy8gSW1hZ2VPcmllbnRhdGlvbiBleHBl
Y3RzIHRoZSBvcmlnaW4gdG8gYmUgYXQgKDAsIDApLgorICAgICAgICBjb250ZXh0LnRyYW5zbGF0
ZShkZXN0UmVjdC54KCksIGRlc3RSZWN0LnkoKSk7CisgICAgICAgIGFkanVzdGVkRGVzdFJlY3Qu
c2V0TG9jYXRpb24oRmxvYXRQb2ludCgpKTsKKyAgICAgICAgY29udGV4dC5jb25jYXRDVE0ob3Jp
ZW50YXRpb24udHJhbnNmb3JtRnJvbURlZmF1bHQoYWRqdXN0ZWREZXN0UmVjdC5zaXplKCkpKTsK
KyAgICAgICAgaWYgKG9yaWVudGF0aW9uLnVzZXNXaWR0aEFzSGVpZ2h0KCkpIHsKKyAgICAgICAg
ICAgIC8vIFRoZSBkZXN0aW5hdGlvbiByZWN0YW5nbGUgd2lsbCBoYXZlIGl0J3Mgd2lkdGggYW5k
IGhlaWdodCBhbHJlYWR5IHJldmVyc2VkIGZvciB0aGUgb3JpZW50YXRpb24gb2YKKyAgICAgICAg
ICAgIC8vIHRoZSBpbWFnZSwgYXMgaXQgd2FzIG5lZWRlZCBmb3IgcGFnZSBsYXlvdXQsIHNvIHdl
IG5lZWQgdG8gcmV2ZXJzZSBpdCBiYWNrIGhlcmUuCisgICAgICAgICAgICBhZGp1c3RlZERlc3RS
ZWN0LnNldFNpemUoYWRqdXN0ZWREZXN0UmVjdC5zaXplKCkudHJhbnNwb3NlZFNpemUoKSk7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLT5kcmF3U3Vy
ZmFjZVRvQ29udGV4dChtX2ltYWdlLmdldCgpLCBhZGp1c3RlZERlc3RSZWN0LCBhZGp1c3RlZFNy
Y1JlY3QsIGNvbnRleHQpOworCisgICAgY29udGV4dC5yZXN0b3JlKCk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVTRShDQUlSTykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFwSW1hZ2VDRy5jcHAKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAzYzgxYTE3MGJlNzlhZTZiZTZjYWNkYzk5ZjRjMzk4Y2Fh
ZjQyNmQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFwSW1hZ2VDRy5jcHAKKysrIC9k
ZXYvbnVsbApAQCAtMSwyMDYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAw
NSwgMjAwNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiQml0bWFwSW1hZ2UuaCIKLQotI2lmIFVTRShDRykKLQotI2luY2x1ZGUgIkNvcmVHcmFwaGlj
c1NQSS5oIgotI2luY2x1ZGUgIkZsb2F0Q29udmVyc2lvbi5oIgotI2luY2x1ZGUgIkdlb21ldHJ5
VXRpbGl0aWVzLmgiCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0Q0cuaCIKLSNpbmNsdWRlICJJ
bWFnZU9ic2VydmVyLmgiCi0jaW5jbHVkZSAiU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5oIgotI2lu
Y2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLQotI2lmIFVTRShBUFBLSVQpCi0jaW5jbHVkZSA8QXBw
bGljYXRpb25TZXJ2aWNlcy9BcHBsaWNhdGlvblNlcnZpY2VzLmg+Ci0jZW5kaWYKLQotI2lmIFBM
QVRGT1JNKENPQ09BKQotI2luY2x1ZGUgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKLSNlbmRp
ZgotCi0jaWYgUExBVEZPUk0oV0lOKQotI2luY2x1ZGUgPFdlYktpdFN5c3RlbUludGVyZmFjZS9X
ZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KLSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LW5hbWVzcGFjZSBOYXRpdmVJbWFnZSB7Ci0KLUludFNpemUgc2l6ZShjb25zdCBSZXRhaW5QdHI8
Q0dJbWFnZVJlZj4mIGltYWdlKQotewotICAgIEFTU0VSVChpbWFnZSk7Ci0gICAgcmV0dXJuIElu
dFNpemUoQ0dJbWFnZUdldFdpZHRoKGltYWdlLmdldCgpKSwgQ0dJbWFnZUdldEhlaWdodChpbWFn
ZS5nZXQoKSkpOwotfQotCi1ib29sIGhhc0FscGhhKGNvbnN0IFJldGFpblB0cjxDR0ltYWdlUmVm
PiYpCi17Ci0gICAgLy8gRklYTUU6IEFuc3dlciBjb3JyZWN0bHkgdGhlIHF1ZXN0aW9uOiBkb2Vz
IHRoZSBDR0ltYWdlUmVmIGhhdmUgYWxwaGEgY2hhbm5uZWw/Ci0gICAgcmV0dXJuIHRydWU7Ci19
Ci0gICAgCi1Db2xvciBzaW5nbGVQaXhlbFNvbGlkQ29sb3IoY29uc3QgUmV0YWluUHRyPENHSW1h
Z2VSZWY+JiBpbWFnZSkKLXsKLSAgICBBU1NFUlQoaW1hZ2UpOwotICAgIAotICAgIGlmIChOYXRp
dmVJbWFnZTo6c2l6ZShpbWFnZSkgIT0gSW50U2l6ZSgxLCAxKSkKLSAgICAgICAgcmV0dXJuIENv
bG9yKCk7Ci0gICAgCi0gICAgdW5zaWduZWQgY2hhciBwaXhlbFs0XTsgLy8gUkdCQQotICAgIGF1
dG8gYml0bWFwQ29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKHBpeGVsLCAx
LCAxLCA4LCBzaXplb2YocGl4ZWwpLCBzUkdCQ29sb3JTcGFjZVJlZigpLAotICAgICAgICBrQ0dJ
bWFnZUFscGhhUHJlbXVsdGlwbGllZExhc3QgfCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkJpZykpOwot
Ci0gICAgaWYgKCFiaXRtYXBDb250ZXh0KQotICAgICAgICByZXR1cm4gQ29sb3IoKTsKLSAgICAK
LSAgICBDR0NvbnRleHRTZXRCbGVuZE1vZGUoYml0bWFwQ29udGV4dC5nZXQoKSwga0NHQmxlbmRN
b2RlQ29weSk7Ci0gICAgQ0dDb250ZXh0RHJhd0ltYWdlKGJpdG1hcENvbnRleHQuZ2V0KCksIENH
UmVjdE1ha2UoMCwgMCwgMSwgMSksIGltYWdlLmdldCgpKTsKLSAgICAKLSAgICBpZiAoIXBpeGVs
WzNdKQotICAgICAgICByZXR1cm4gQ29sb3IoMCwgMCwgMCwgMCk7Ci0KLSAgICByZXR1cm4gQ29s
b3IocGl4ZWxbMF0gKiAyNTUgLyBwaXhlbFszXSwgcGl4ZWxbMV0gKiAyNTUgLyBwaXhlbFszXSwg
cGl4ZWxbMl0gKiAyNTUgLyBwaXhlbFszXSwgcGl4ZWxbM10pOwotfQotCi19Ci0KLWJvb2wgRnJh
bWVEYXRhOjpjbGVhcihib29sIGNsZWFyTWV0YWRhdGEpCi17Ci0gICAgaWYgKGNsZWFyTWV0YWRh
dGEpCi0gICAgICAgIG1faGF2ZU1ldGFkYXRhID0gZmFsc2U7Ci0KLSAgICBtX3N1YnNhbXBsaW5n
TGV2ZWwgPSAwOwotCi0gICAgaWYgKG1faW1hZ2UpIHsKLSNpZiBDQUNIRV9TVUJJTUFHRVMKLSAg
ICAgICAgc3ViaW1hZ2VDYWNoZSgpLmNsZWFySW1hZ2UobV9pbWFnZS5nZXQoKSk7Ci0jZW5kaWYK
LSAgICAgICAgbV9pbWFnZSA9IG51bGxwdHI7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0K
LSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLUNHSW1hZ2VSZWYgQml0bWFwSW1hZ2U6OmdldENHSW1h
Z2VSZWYoKQotewotICAgIHJldHVybiBmcmFtZUltYWdlQXRJbmRleCgwKS5nZXQoKTsKLX0KLQot
Q0dJbWFnZVJlZiBCaXRtYXBJbWFnZTo6Z2V0Rmlyc3RDR0ltYWdlUmVmT2ZTaXplKGNvbnN0IElu
dFNpemUmIHNpemUpCi17Ci0gICAgc2l6ZV90IGNvdW50ID0gZnJhbWVDb3VudCgpOwotICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewotICAgICAgICBDR0ltYWdlUmVmIGNn
SW1hZ2UgPSBmcmFtZUltYWdlQXRJbmRleChpKS5nZXQoKTsKLSAgICAgICAgaWYgKGNnSW1hZ2Ug
JiYgSW50U2l6ZShDR0ltYWdlR2V0V2lkdGgoY2dJbWFnZSksIENHSW1hZ2VHZXRIZWlnaHQoY2dJ
bWFnZSkpID09IHNpemUpCi0gICAgICAgICAgICByZXR1cm4gY2dJbWFnZTsKLSAgICB9Ci0KLSAg
ICAvLyBGYWxsYmFjayB0byB0aGUgZGVmYXVsdCBDR0ltYWdlUmVmIGlmIHdlIGNhbid0IGZpbmQg
dGhlIHJpZ2h0IHNpemUKLSAgICByZXR1cm4gZ2V0Q0dJbWFnZVJlZigpOwotfQotCi1SZXRhaW5Q
dHI8Q0ZBcnJheVJlZj4gQml0bWFwSW1hZ2U6OmdldENHSW1hZ2VBcnJheSgpCi17Ci0gICAgc2l6
ZV90IGNvdW50ID0gZnJhbWVDb3VudCgpOwotICAgIGlmICghY291bnQpCi0gICAgICAgIHJldHVy
biBudWxscHRyOwotICAgIAotICAgIENGTXV0YWJsZUFycmF5UmVmIGFycmF5ID0gQ0ZBcnJheUNy
ZWF0ZU11dGFibGUoTlVMTCwgY291bnQsICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpOwotICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewotICAgICAgICBpZiAoQ0dJbWFnZVJl
ZiBjdXJyRnJhbWUgPSBmcmFtZUltYWdlQXRJbmRleChpKS5nZXQoKSkKLSAgICAgICAgICAgIENG
QXJyYXlBcHBlbmRWYWx1ZShhcnJheSwgY3VyckZyYW1lKTsKLSAgICB9Ci0gICAgcmV0dXJuIGFk
b3B0Q0YoYXJyYXkpOwotfQotCi12b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4
dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwg
SW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uIGRlc2NyaXB0aW9uKQotewotI2lmIFBMQVRGT1JN
KElPUykKLSAgICBzdGFydEFuaW1hdGlvbihEb05vdENhdGNoVXApOwotI2Vsc2UKLSAgICBzdGFy
dEFuaW1hdGlvbigpOwotI2VuZGlmCi0KLSAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2U7
Ci0gICAgLy8gTmV2ZXIgdXNlIHN1YnNhbXBsZWQgaW1hZ2VzIGZvciBkcmF3aW5nIGludG8gUERG
IGNvbnRleHRzLgotICAgIGlmICh3a0NHQ29udGV4dElzUERGQ29udGV4dChjdHh0LnBsYXRmb3Jt
Q29udGV4dCgpKSkKLSAgICAgICAgaW1hZ2UgPSBjb3B5VW5zY2FsZWRGcmFtZUltYWdlQXRJbmRl
eChtX2N1cnJlbnRGcmFtZSk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIENHUmVjdCB0cmFuc2Zvcm1l
ZERlc3RpbmF0aW9uUmVjdCA9IENHUmVjdEFwcGx5QWZmaW5lVHJhbnNmb3JtKGRlc3RSZWN0LCBD
R0NvbnRleHRHZXRDVE0oY3R4dC5wbGF0Zm9ybUNvbnRleHQoKSkpOwotICAgICAgICBmbG9hdCBz
dWJzYW1wbGluZ1NjYWxlID0gc3RkOjptaW48ZmxvYXQ+KDEsIHN0ZDo6bWF4KHRyYW5zZm9ybWVk
RGVzdGluYXRpb25SZWN0LnNpemUud2lkdGggLyBzcmNSZWN0LndpZHRoKCksIHRyYW5zZm9ybWVk
RGVzdGluYXRpb25SZWN0LnNpemUuaGVpZ2h0IC8gc3JjUmVjdC5oZWlnaHQoKSkpOwotCi0gICAg
ICAgIGltYWdlID0gZnJhbWVJbWFnZUF0SW5kZXgobV9jdXJyZW50RnJhbWUsIHN1YnNhbXBsaW5n
U2NhbGUpOwotICAgIH0KLQotICAgIGlmICghaW1hZ2UpIC8vIElmIGl0J3MgdG9vIGVhcmx5IHdl
IHdvbid0IGhhdmUgYW4gaW1hZ2UgeWV0LgotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgQ29s
b3IgY29sb3IgPSBzaW5nbGVQaXhlbFNvbGlkQ29sb3IoKTsKLSAgICBpZiAoY29sb3IuaXNWYWxp
ZCgpKSB7Ci0gICAgICAgIGZpbGxXaXRoU29saWRDb2xvcihjdHh0LCBkZXN0UmVjdCwgY29sb3Is
IGNvbXBvc2l0ZU9wKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIFN1YnNhbXBs
aW5nIG1heSBoYXZlIGdpdmVuIHVzIGFuIGltYWdlIHRoYXQgaXMgc21hbGxlciB0aGFuIHNpemUo
KS4KLSAgICBJbnRTaXplIGltYWdlU2l6ZShDR0ltYWdlR2V0V2lkdGgoaW1hZ2UuZ2V0KCkpLCBD
R0ltYWdlR2V0SGVpZ2h0KGltYWdlLmdldCgpKSk7Ci0gICAgCi0gICAgLy8gc3JjUmVjdCBpcyBp
biB0aGUgY29vcmRpbmF0ZXMgb2YgdGhlIHVuc3Vic2FtcGxlZCBpbWFnZSwgc28gd2UgaGF2ZSB0
byBtYXAgaXQgdG8gdGhlIHN1YnNhbXBsZWQgaW1hZ2UuCi0gICAgRmxvYXRSZWN0IHNjYWxlZFNy
Y1JlY3QgPSBzcmNSZWN0OwotICAgIGlmIChpbWFnZVNpemUgIT0gbV9zaXplKSB7Ci0gICAgICAg
IEZsb2F0UmVjdCBvcmlnaW5hbEltYWdlQm91bmRzKEZsb2F0UG9pbnQoKSwgbV9zaXplKTsKLSAg
ICAgICAgRmxvYXRSZWN0IHN1YnNhbXBsZWRJbWFnZUJvdW5kcyhGbG9hdFBvaW50KCksIGltYWdl
U2l6ZSk7Ci0gICAgICAgIHNjYWxlZFNyY1JlY3QgPSBtYXBSZWN0KHNyY1JlY3QsIG9yaWdpbmFs
SW1hZ2VCb3VuZHMsIHN1YnNhbXBsZWRJbWFnZUJvdW5kcyk7Ci0gICAgfQotICAgIAotICAgIElt
YWdlT3JpZW50YXRpb24gb3JpZW50YXRpb247Ci0gICAgaWYgKGRlc2NyaXB0aW9uLnJlc3BlY3RJ
bWFnZU9yaWVudGF0aW9uKCkgPT0gUmVzcGVjdEltYWdlT3JpZW50YXRpb24pCi0gICAgICAgIG9y
aWVudGF0aW9uID0gZnJhbWVPcmllbnRhdGlvbkF0SW5kZXgobV9jdXJyZW50RnJhbWUpOwotCi0g
ICAgY3R4dC5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNjYWxl
ZFNyY1JlY3QsIGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUsIG9yaWVudGF0aW9uKTsKLQotICAgIGlm
IChpbWFnZU9ic2VydmVyKCkpCi0gICAgICAgIGltYWdlT2JzZXJ2ZXIoKS0+ZGlkRHJhdyh0aGlz
KTsKLX0KLQotUmV0YWluUHRyPENHSW1hZ2VSZWY+IEJpdG1hcEltYWdlOjpjb3B5VW5zY2FsZWRG
cmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgpCi17Ci0gICAgaWYgKGluZGV4ID49IGZyYW1l
Q291bnQoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBpZiAoaW5kZXggPj0gbV9m
cmFtZXMuc2l6ZSgpIHx8ICFtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZSkKLSAgICAgICAgY2FjaGVG
cmFtZShpbmRleCwgMCk7Ci0KLSAgICBpZiAoIW1fZnJhbWVzW2luZGV4XS5tX3N1YnNhbXBsaW5n
TGV2ZWwpCi0gICAgICAgIHJldHVybiBtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZTsKLQotICAgIHJl
dHVybiBtX3NvdXJjZS5jcmVhdGVGcmFtZUltYWdlQXRJbmRleChpbmRleCk7Ci19Ci0KLX0KLQot
I2VuZGlmIC8vIFVTRShDRykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9QYXR0ZXJuQ0cuY3BwCmluZGV4IGI0MjhkNTBkOTRiZjkyNDI4MDMyODdkMmVlYzE2YmQ2
OWM1MjhkOTIuLjNkYWExMzlhYjdlYTViNDIxNTc3ODgzNWQzNTNkOGFkYjVmMGM3NWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcApA
QCAtNzIsNyArNzIsNyBAQCBDR1BhdHRlcm5SZWYgUGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0
ZXJuKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdXNlclNwYWNlVHJhbgogICAgIC8vIElmIHdlJ3Jl
IHJlcGVhdGluZyBpbiBib3RoIGRpcmVjdGlvbnMsIHdlIGNhbiB1c2UgaW1hZ2UtYmFja2VkIHBh
dHRlcm5zCiAgICAgLy8gaW5zdGVhZCBvZiBjdXN0b20gcGF0dGVybnMsIGFuZCBhdm9pZCB0aWxp
bmctZWRnZSBwaXhlbCBjcmFja3MuCiAgICAgaWYgKG1fcmVwZWF0WCAmJiBtX3JlcGVhdFkpCi0g
ICAgICAgIHJldHVybiB3a0NHUGF0dGVybkNyZWF0ZVdpdGhJbWFnZUFuZFRyYW5zZm9ybSh0aWxl
SW1hZ2UoKS0+Z2V0Q0dJbWFnZVJlZigpLCBwYXR0ZXJuVHJhbnNmb3JtLCB3a1BhdHRlcm5UaWxp
bmdDb25zdGFudFNwYWNpbmcpOworICAgICAgICByZXR1cm4gd2tDR1BhdHRlcm5DcmVhdGVXaXRo
SW1hZ2VBbmRUcmFuc2Zvcm0odGlsZUltYWdlKCktPm5hdGl2ZUltYWdlKCkuZ2V0KCksIHBhdHRl
cm5UcmFuc2Zvcm0sIHdrUGF0dGVyblRpbGluZ0NvbnN0YW50U3BhY2luZyk7CiAKICAgICAvLyBJ
ZiBGTFRfTUFYIHNob3VsZCBhbHNvIGJlIHVzZWQgZm9yIHhTdGVwIG9yIHlTdGVwLCBub3RoaW5n
IGlzIHJlbmRlcmVkLiBVc2luZyBmcmFjdGlvbnMgb2YgRkxUX01BWCBhbHNvCiAgICAgLy8gcmVz
dWx0IGluIG5vdGhpbmcgYmVpbmcgcmVuZGVyZWQuCkBAIC04Myw3ICs4Myw3IEBAIENHUGF0dGVy
blJlZiBQYXR0ZXJuOjpjcmVhdGVQbGF0Zm9ybVBhdHRlcm4oY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiB1c2VyU3BhY2VUcmFuCiAgICAgQ0dGbG9hdCB5U3RlcCA9IG1fcmVwZWF0WSA/IHRpbGVSZWN0
LmhlaWdodCgpIDogKDEgPDwgMjIpOwogCiAgICAgLy8gVGhlIHBhdHRlcm4gd2lsbCByZWxlYXNl
IHRoZSBDR0ltYWdlUmVmIHdoZW4gaXQncyBkb25lIHJlbmRlcmluZyBpbiBwYXR0ZXJuUmVsZWFz
ZUNhbGxiYWNrCi0gICAgQ0dJbWFnZVJlZiBwbGF0Zm9ybUltYWdlID0gQ0dJbWFnZVJldGFpbih0
aWxlSW1hZ2UoKS0+Z2V0Q0dJbWFnZVJlZigpKTsKKyAgICBDR0ltYWdlUmVmIHBsYXRmb3JtSW1h
Z2UgPSB0aWxlSW1hZ2UoKS0+bmF0aXZlSW1hZ2UoKS5sZWFrUmVmKCk7CiAKICAgICBjb25zdCBD
R1BhdHRlcm5DYWxsYmFja3MgcGF0dGVybkNhbGxiYWNrcyA9IHsgMCwgcGF0dGVybkNhbGxiYWNr
LCBwYXR0ZXJuUmVsZWFzZUNhbGxiYWNrIH07CiAgICAgcmV0dXJuIENHUGF0dGVybkNyZWF0ZShw
bGF0Zm9ybUltYWdlLCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgeFN0ZXAsIHlTdGVwLCBr
Q0dQYXR0ZXJuVGlsaW5nQ29uc3RhbnRTcGFjaW5nLCBUUlVFLCAmcGF0dGVybkNhbGxiYWNrcyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QbGF0Zm9y
bUltYWdlQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGxhdGZv
cm1JbWFnZUNHLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZmIyZGUwZWExMmRhMjE0ZjEwNDZjMzk2MmU4ZWFi
NTNjNjQ0MTI1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvUGxhdGZvcm1JbWFnZUNHLmNwcApAQCAtMCwwICsxLDE3MSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJQbGF0Zm9ybUltYWdlLmgiCisKKyNpZiBVU0UoQ0cpCisKKyNpbmNsdWRlICJD
b2xvci5oIgorI2luY2x1ZGUgIkNvcmVHcmFwaGljc1NQSS5oIgorI2luY2x1ZGUgIkZsb2F0UmVj
dC5oIgorI2luY2x1ZGUgIkdlb21ldHJ5VXRpbGl0aWVzLmgiCisjaW5jbHVkZSAiR3JhcGhpY3ND
b250ZXh0Q0cuaCIKKyNpbmNsdWRlICJJbnRTaXplLmgiCisjaW5jbHVkZSAiU3ViaW1hZ2VDYWNo
ZVdpdGhUaW1lci5oIgorCisjaWYgUExBVEZPUk0oV0lOKQorI2luY2x1ZGUgPFdlYktpdFN5c3Rl
bUludGVyZmFjZS9XZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KKyNlbmRpZgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisgICAgCit2b2lkIFBsYXRmb3JtSW1hZ2U6OmNsZWFyU3ViSW1hZ2VzKCkKK3sK
KyNpZiBDQUNIRV9TVUJJTUFHRVMKKyAgICBpZiAoIWlzTmlsKCkpCisgICAgICAgIHN1YmltYWdl
Q2FjaGUoKS5jbGVhckltYWdlKGNnSW1hZ2VSZWYoKSk7CisjZW5kaWYKK30KKworSW50U2l6ZSBQ
bGF0Zm9ybUltYWdlOjpzaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gaXNOaWwoKSA/IEludFNp
emUoKSA6IEludFNpemUoQ0dJbWFnZUdldFdpZHRoKGNnSW1hZ2VSZWYoKSksIENHSW1hZ2VHZXRI
ZWlnaHQoY2dJbWFnZVJlZigpKSk7Cit9CisKK2Jvb2wgUGxhdGZvcm1JbWFnZTo6aGFzQWxwaGEo
KSBjb25zdAoreworICAgIC8vIEZJWE1FOiBBbnN3ZXIgY29ycmVjdGx5IHRoZSBxdWVzdGlvbjog
ZG9lcyB0aGUgQ0dJbWFnZVJlZiBoYXZlIGFscGhhIGNoYW5ubmVsPworICAgIHJldHVybiB0cnVl
OworfQorCitDb2xvciBQbGF0Zm9ybUltYWdlOjpzaW5nbGVQaXhlbFNvbGlkQ29sb3IoKSBjb25z
dAoreworICAgIGlmIChpc05pbCgpIHx8IHNpemUoKSAhPSBJbnRTaXplKDEsIDEpKQorICAgICAg
ICByZXR1cm4gQ29sb3IoKTsKKyAgICAKKyAgICB1bnNpZ25lZCBjaGFyIHBpeGVsWzRdOyAvLyBS
R0JBCisgICAgYXV0byBiaXRtYXBDb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVh
dGUocGl4ZWwsIDEsIDEsIDgsIHNpemVvZihwaXhlbCksIHNSR0JDb2xvclNwYWNlUmVmKCksCisg
ICAgICAgIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkTGFzdCB8IGtDR0JpdG1hcEJ5dGVPcmRl
cjMyQmlnKSk7CisgICAgCisgICAgaWYgKCFiaXRtYXBDb250ZXh0KQorICAgICAgICByZXR1cm4g
Q29sb3IoKTsKKyAgICAKKyAgICBDR0NvbnRleHRTZXRCbGVuZE1vZGUoYml0bWFwQ29udGV4dC5n
ZXQoKSwga0NHQmxlbmRNb2RlQ29weSk7CisgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGJpdG1hcENv
bnRleHQuZ2V0KCksIENHUmVjdE1ha2UoMCwgMCwgMSwgMSksIGNnSW1hZ2VSZWYoKSk7CisgICAg
CisgICAgaWYgKCFwaXhlbFszXSkKKyAgICAgICAgcmV0dXJuIENvbG9yKDAsIDAsIDAsIDApOwor
ICAgIAorICAgIHJldHVybiBDb2xvcihwaXhlbFswXSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhlbFsx
XSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhlbFsyXSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhlbFszXSk7
Cit9CisgICAgCitib29sIFBsYXRmb3JtSW1hZ2U6OmlzQWxtb3N0U29saWRDb2xvcigpIGNvbnN0
Cit7CisgICAgQ0dJbWFnZVJlZiBpbWFnZSA9IGNnSW1hZ2VSZWYoKTsKKyAgICBBU1NFUlQoQ0dJ
bWFnZUdldEJpdHNQZXJDb21wb25lbnQoaW1hZ2UpID09IDgpOworICAgIAorICAgIENHQml0bWFw
SW5mbyBpbWFnZUluZm8gPSBDR0ltYWdlR2V0Qml0bWFwSW5mbyhpbWFnZSk7CisgICAgaWYgKCEo
aW1hZ2VJbmZvICYga0NHQml0bWFwQnl0ZU9yZGVyMzJMaXR0bGUpIHx8IChpbWFnZUluZm8gJiBr
Q0dCaXRtYXBBbHBoYUluZm9NYXNrKSAhPSBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0
KSB7CisgICAgICAgIC8vIEZJWE1FOiBDb25zaWRlciBiZWluZyBhYmxlIHRvIGhhbmRsZSBvdGhl
ciBwaXhlbCBmb3JtYXRzLgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAKKyAgICBzaXplX3Qgd2lkdGggPSBDR0ltYWdlR2V0
V2lkdGgoaW1hZ2UpOworICAgIHNpemVfdCBoZWlnaHQgPSBDR0ltYWdlR2V0SGVpZ2h0KGltYWdl
KTsKKyAgICBzaXplX3QgYnl0ZXNQZXJSb3cgPSBDR0ltYWdlR2V0Qnl0ZXNQZXJSb3coaW1hZ2Up
OworICAgIAorICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IHByb3ZpZGVyID0gYWRvcHRDRihDR0Rh
dGFQcm92aWRlckNvcHlEYXRhKENHSW1hZ2VHZXREYXRhUHJvdmlkZXIoaW1hZ2UpKSk7CisgICAg
Y29uc3QgVUludDgqIGRhdGEgPSBDRkRhdGFHZXRCeXRlUHRyKHByb3ZpZGVyLmdldCgpKTsKKyAg
ICAKKyAgICAvLyBPdmVybGF5IGEgZ3JpZCBvZiBzYW1wbGluZyBkb3RzIG9uIHRvcCBvZiBhIGdy
YXlzY2FsZSB2ZXJzaW9uIG9mIHRoZSBpbWFnZS4KKyAgICAvLyBGb3IgdGhlIGludGVyaW9yIHBv
aW50cywgY2FsY3VsYXRlIHRoZSBkaWZmZXJlbmNlIGluIGx1bWluYW5jZSBhbW9uZyB0aGUgc2Ft
cGxlIHBvaW50CisgICAgLy8gYW5kIGl0cyBzdXJyb3VuZHMgcG9pbnRzLCBzY2FsZWQgYnkgdHJh
bnNwYXJlbmN5LgorICAgIGNvbnN0IHVuc2lnbmVkIHNhbXBsZVJvd3MgPSA3OworICAgIGNvbnN0
IHVuc2lnbmVkIHNhbXBsZUNvbHMgPSA3OworICAgIC8vIEZJWE1FOiBSZWZpbmUgdGhlIHByb3Bl
ciBudW1iZXIgb2Ygc2FtcGxlcywgYW5kIGFjY29tbW9kYXRlIGRpZmZlcmVudCBhc3BlY3QgcmF0
aW9zLgorICAgIGlmICh3aWR0aCA8IHNhbXBsZUNvbHMgfHwgaGVpZ2h0IDwgc2FtcGxlUm93cykK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIC8vIEVuc3VyZSB0aGF0IHRoZSBsYXN0
IHJvdy9jb2x1bW4gbGFuZCBvbiB0aGUgaW1hZ2UgcGVyaW1ldGVyLgorICAgIGNvbnN0IGZsb2F0
IHN0cmlkZVdpZHRoID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHdpZHRoIC0gMSkgLyAoc2FtcGxlQ29s
cyAtIDEpOworICAgIGNvbnN0IGZsb2F0IHN0cmlkZUhlaWdodCA9IHN0YXRpY19jYXN0PGZsb2F0
PihoZWlnaHQgLSAxKSAvIChzYW1wbGVSb3dzIC0gMSk7CisgICAgZmxvYXQgc2FtcGxlc1tzYW1w
bGVSb3dzXVtzYW1wbGVDb2xzXTsKKyAgICAKKyAgICAvLyBGaW5kIHRoZSBsdW1pbmFuY2Ugb2Yg
dGhlIHNhbXBsZSBwb2ludHMuCisgICAgZmxvYXQgeSA9IDA7CisgICAgY29uc3QgVUludDgqIHJv
dyA9IGRhdGE7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNhbXBsZVJvd3M7ICsraSkg
eworICAgICAgICBmbG9hdCB4ID0gMDsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8
IHNhbXBsZUNvbHM7ICsraikgeworICAgICAgICAgICAgY29uc3QgVUludDgqIHAwID0gcm93ICsg
KHN0YXRpY19jYXN0PGludD4oeCArIC41KSkgKiA0OworICAgICAgICAgICAgLy8gUiBHIEIgQQor
ICAgICAgICAgICAgc2FtcGxlc1tpXVtqXSA9ICgwLjIxMjUgKiAqcDAgKyAwLjcxNTQgKiAqKHAw
KzEpICsgMC4wNzIxICogKihwMCsyKSkgKiAqKHAwKzMpIC8gMjU1OworICAgICAgICAgICAgeCAr
PSBzdHJpZGVXaWR0aDsKKyAgICAgICAgfQorICAgICAgICB5ICs9IHN0cmlkZUhlaWdodDsKKyAg
ICAgICAgcm93ID0gZGF0YSArIChzdGF0aWNfY2FzdDxpbnQ+KHkgKyAuNSkpICogYnl0ZXNQZXJS
b3c7CisgICAgfQorICAgIAorICAgIC8vIERldGVybWluZSB0aGUgaW1hZ2Ugc2NvcmUuCisgICAg
ZmxvYXQgYWNjdW1TY29yZSA9IDA7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IHNhbXBs
ZVJvd3MgLSAxOyArK2kpIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMTsgaiA8IHNhbXBs
ZUNvbHMgLSAxOyArK2opIHsKKyAgICAgICAgICAgIGZsb2F0IGRpZmYgPSBzYW1wbGVzW2kgLSAx
XVtqXSArIHNhbXBsZXNbaSArIDFdW2pdICsgc2FtcGxlc1tpXVtqIC0gMV0gKyBzYW1wbGVzW2ld
W2ogKyAxXSAtIDQgKiBzYW1wbGVzW2ldW2pdOworICAgICAgICAgICAgYWNjdW1TY29yZSArPSBk
aWZmICogZGlmZjsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICAvLyBUaGUgc2NvcmUgZm9y
IGEgZ2l2ZW4gc2FtcGxlIGNhbiBiZSB3aXRoaW4gdGhlIHJhbmdlIG9mIDAgYW5kIDI1NV4yLgor
ICAgIHJldHVybiBhY2N1bVNjb3JlIDwgMjUwMCAqIChzYW1wbGVSb3dzIC0gMikgKiAoc2FtcGxl
Q29scyAtIDIpOworfQorCitmbG9hdCBQbGF0Zm9ybUltYWdlOjpzdWJzYW1wbGluZ1NjYWxlKEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0KQoreworICAgIC8vIE5ldmVyIHVzZSBzdWJzYW1wbGVkIGltYWdl
cyBmb3IgZHJhd2luZyBpbnRvIFBERiBjb250ZXh0cy4KKyAgICBpZiAod2tDR0NvbnRleHRJc1BE
RkNvbnRleHQoY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSkpCisgICAgICAgIHJldHVybiAxOwor
ICAgIAorICAgIENHUmVjdCB0cmFuc2Zvcm1lZERlc3RpbmF0aW9uUmVjdCA9IENHUmVjdEFwcGx5
QWZmaW5lVHJhbnNmb3JtKGRlc3RSZWN0LCBDR0NvbnRleHRHZXRDVE0oY29udGV4dC5wbGF0Zm9y
bUNvbnRleHQoKSkpOworICAgIHJldHVybiBzdGQ6Om1pbjxmbG9hdD4oMSwgc3RkOjptYXgodHJh
bnNmb3JtZWREZXN0aW5hdGlvblJlY3Quc2l6ZS53aWR0aCAvIHNyY1JlY3Qud2lkdGgoKSwgdHJh
bnNmb3JtZWREZXN0aW5hdGlvblJlY3Quc2l6ZS5oZWlnaHQgLyBzcmNSZWN0LmhlaWdodCgpKSk7
Cit9CisKK3ZvaWQgUGxhdGZvcm1JbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgSW50U2l6ZSYgc3JjU2l6ZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBtb2Rl
LCBjb25zdCBJbWFnZU9yaWVudGF0aW9uJiBvcmllbnRhdGlvbikgY29uc3QKK3sKKyAgICAvLyBT
dWJzYW1wbGluZyBtYXkgaGF2ZSBnaXZlbiB1cyBhbiBpbWFnZSB0aGF0IGlzIHNtYWxsZXIgdGhh
biBzaXplKCkuCisgICAgSW50U2l6ZSBzdWJzYW1wbGVkSW1hZ2VTaXplID0gc2l6ZSgpOworICAg
IAorICAgIC8vIHNyY1JlY3QgaXMgaW4gdGhlIGNvb3JkaW5hdGVzIG9mIHRoZSB1bnN1YnNhbXBs
ZWQgaW1hZ2UsIHNvIHdlIGhhdmUgdG8gbWFwIGl0IHRvIHRoZSBzdWJzYW1wbGVkIGltYWdlLgor
ICAgIEZsb2F0UmVjdCBhZGp1c3RlZFNyY1JlY3QgPSBzcmNSZWN0OworICAgIGlmIChzdWJzYW1w
bGVkSW1hZ2VTaXplICE9IHNyY1NpemUpCisgICAgICAgIGFkanVzdGVkU3JjUmVjdCA9IG1hcFJl
Y3Qoc3JjUmVjdCwgRmxvYXRSZWN0KHsgfSwgc3JjU2l6ZSksIEZsb2F0UmVjdCh7IH0sIHN1YnNh
bXBsZWRJbWFnZVNpemUpKTsKKyAgICAKKyAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShtX2lt
YWdlLCBzdWJzYW1wbGVkSW1hZ2VTaXplLCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBvcCwg
bW9kZSwgb3JpZW50YXRpb24pOworfQorICAgIAorfQorCisjZW5kaWYgLy8gVVNFKENHKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVGV4dFRyYWNr
UmVwcmVzZW50YXRpb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1RleHRUcmFja1JlcHJlc2VudGF0aW9uQ29jb2EubW0KaW5kZXggODk3MjBkMTczNjVk
YTdlOGJhODQ2OWQ1Mjk0NTQ4ZDUxODQ3YTdmZS4uNDQ3NmZjNWY4N2MzNDk4OGY2ZDlhZDU1ZWVi
ZDhkMWI5YmIwMjJlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvVGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9UZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29h
Lm1tCkBAIC0xMjksNyArMTI5LDcgQEAgVGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYTo6flRl
eHRUcmFja1JlcHJlc2VudGF0aW9uQ29jb2EoKQogdm9pZCBUZXh0VHJhY2tSZXByZXNlbnRhdGlv
bkNvY29hOjp1cGRhdGUoKQogewogICAgIGlmIChhdXRvIHJlcHJlc2VudGF0aW9uID0gbV9jbGll
bnQuY3JlYXRlVGV4dFRyYWNrUmVwcmVzZW50YXRpb25JbWFnZSgpKQotICAgICAgICBbbV9sYXll
ci5nZXQoKSBzZXRDb250ZW50czooaWQpcmVwcmVzZW50YXRpb24tPmdldENHSW1hZ2VSZWYoKV07
CisgICAgICAgIFttX2xheWVyLmdldCgpIHNldENvbnRlbnRzOihpZClyZXByZXNlbnRhdGlvbi0+
bmF0aXZlSW1hZ2UoKS5nZXQoKV07CiB9CiAKIHZvaWQgVGV4dFRyYWNrUmVwcmVzZW50YXRpb25D
b2NvYTo6c2V0Q29udGVudFNjYWxlKGZsb2F0IHNjYWxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tCmluZGV4IDAxZWI2ZGQzMDA0M2EyMjUy
OTE3NmZkOTEyMTE3ZGM1Nzc2YzE3YmEuLmRjMWM3YzcwOTVkOTQ0YzRjNjJmMWZlMDkzNTcwMmEx
M2M3YzdhNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9JbWFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMv
SW1hZ2VNYWMubW0KQEAgLTg1LDMxICs4NSwyMiBAQCBDRkRhdGFSZWYgQml0bWFwSW1hZ2U6Omdl
dFRJRkZSZXByZXNlbnRhdGlvbigpCiAgICAgaWYgKG1fdGlmZlJlcCkKICAgICAgICAgcmV0dXJu
IG1fdGlmZlJlcC5nZXQoKTsKIAotICAgIHVuc2lnbmVkIG51bUZyYW1lcyA9IGZyYW1lQ291bnQo
KTsKKyAgICBhdXRvIG5hdGl2ZUltYWdlcyA9IHRoaXMtPmZyYW1lc05hdGl2ZUltYWdlcygpOwog
Ci0gICAgLy8gSWYgbnVtRnJhbWVzIGlzIHplcm8sIHdlIGtub3cgZm9yIGNlcnRhaW4gdGhpcyBp
bWFnZSBkb2Vzbid0IGhhdmUgdmFsaWQgZGF0YQorICAgIC8vIElmIGZyYW1lc0ltYWdlcy5zaXpl
KCkgaXMgemVybywgd2Uga25vdyBmb3IgY2VydGFpbiB0aGlzIGltYWdlIGRvZXNuJ3QgaGF2ZSB2
YWxpZCBkYXRhCiAgICAgLy8gRXZlbiB0aG91Z2ggdGhlIGNhbGwgdG8gQ0dJbWFnZURlc3RpbmF0
aW9uQ3JlYXRlV2l0aERhdGEgd2lsbCBmYWlsIGFuZCB3ZSdsbCBoYW5kbGUgaXQgZ3JhY2VmdWxs
eSwKICAgICAvLyBpbiBjZXJ0YWluIGNpcmN1bXN0YW5jZXMgdGhhdCBjYWxsIHdpbGwgc3BhbSB0
aGUgY29uc29sZSB3aXRoIGFuIGVycm9yIG1lc3NhZ2UKLSAgICBpZiAoIW51bUZyYW1lcykKLSAg
ICAgICAgcmV0dXJuIDA7Ci0KLSAgICBWZWN0b3I8Q0dJbWFnZVJlZj4gaW1hZ2VzOwotICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1GcmFtZXM7ICsraSApIHsKLSAgICAgICAgQ0dJbWFn
ZVJlZiBjZ0ltYWdlID0gZnJhbWVJbWFnZUF0SW5kZXgoaSkuZ2V0KCk7Ci0gICAgICAgIGlmIChj
Z0ltYWdlKQotICAgICAgICAgICAgaW1hZ2VzLmFwcGVuZChjZ0ltYWdlKTsKLSAgICB9Ci0KLSAg
ICB1bnNpZ25lZCBudW1WYWxpZEZyYW1lcyA9IGltYWdlcy5zaXplKCk7CisgICAgaWYgKCFuYXRp
dmVJbWFnZXMuc2l6ZSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIFJldGFpblB0
cjxDRk11dGFibGVEYXRhUmVmPiBkYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGVNdXRhYmxlKDAs
IDApKTsKLSAgICBSZXRhaW5QdHI8Q0dJbWFnZURlc3RpbmF0aW9uUmVmPiBkZXN0aW5hdGlvbiA9
IGFkb3B0Q0YoQ0dJbWFnZURlc3RpbmF0aW9uQ3JlYXRlV2l0aERhdGEoZGF0YS5nZXQoKSwga1VU
VHlwZVRJRkYsIG51bVZhbGlkRnJhbWVzLCAwKSk7CisgICAgUmV0YWluUHRyPENHSW1hZ2VEZXN0
aW5hdGlvblJlZj4gZGVzdGluYXRpb24gPSBhZG9wdENGKENHSW1hZ2VEZXN0aW5hdGlvbkNyZWF0
ZVdpdGhEYXRhKGRhdGEuZ2V0KCksIGtVVFR5cGVUSUZGLCBuYXRpdmVJbWFnZXMuc2l6ZSgpLCAw
KSk7CiAKICAgICBpZiAoIWRlc3RpbmF0aW9uKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtVmFsaWRG
cmFtZXM7ICsraSkKLSAgICAgICAgQ0dJbWFnZURlc3RpbmF0aW9uQWRkSW1hZ2UoZGVzdGluYXRp
b24uZ2V0KCksIGltYWdlc1tpXSwgMCk7CisgICAgZm9yIChhdXRvIG5hdGl2ZUltYWdlIDogbmF0
aXZlSW1hZ2VzKQorICAgICAgICBDR0ltYWdlRGVzdGluYXRpb25BZGRJbWFnZShkZXN0aW5hdGlv
bi5nZXQoKSwgbmF0aXZlSW1hZ2UuZ2V0KCksIDApOwogCiAgICAgQ0dJbWFnZURlc3RpbmF0aW9u
RmluYWxpemUoZGVzdGluYXRpb24uZ2V0KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcAppbmRleCAyMTc1M2Jk
MDc4YTFjNTVjMzI3MTljMTQ4NDZmMGY2Yjk5NzVmOGZkLi5hMmZhZGVmY2JmYzg1YmE3MTk5MDdl
YTM5NTA2ODA5MzEzODliNmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5jcHAKQEAgLTE0MiwxOCArMTQyLDE2IEBA
IEltYWdlRnJhbWUmIEltYWdlRnJhbWU6Om9wZXJhdG9yPShjb25zdCBJbWFnZUZyYW1lJiBvdGhl
cikKICAgICAgICAgcmV0dXJuICp0aGlzOwogCiAgICAgY29weUJpdG1hcERhdGEob3RoZXIpOwot
ICAgIHNldE9yaWdpbmFsRnJhbWVSZWN0KG90aGVyLm9yaWdpbmFsRnJhbWVSZWN0KCkpOworICAg
IHNldEhhc0FscGhhKG90aGVyLm1faGFzQWxwaGEpOwogICAgIHNldFN0YXR1cyhvdGhlci5zdGF0
dXMoKSk7CiAgICAgc2V0RHVyYXRpb24ob3RoZXIuZHVyYXRpb24oKSk7CiAgICAgc2V0RGlzcG9z
YWxNZXRob2Qob3RoZXIuZGlzcG9zYWxNZXRob2QoKSk7Ci0gICAgc2V0UHJlbXVsdGlwbHlBbHBo
YShvdGhlci5wcmVtdWx0aXBseUFscGhhKCkpOwogICAgIHJldHVybiAqdGhpczsKIH0KIAogdm9p
ZCBJbWFnZUZyYW1lOjpjbGVhclBpeGVsRGF0YSgpCiB7Ci0gICAgbV9iYWNraW5nU3RvcmUuY2xl
YXIoKTsKLSAgICBtX2J5dGVzID0gMDsKKyAgICBtX3BpeGVscyA9IG51bGxwdHI7CiAgICAgbV9z
dGF0dXMgPSBGcmFtZUVtcHR5OwogICAgIC8vIE5PVEU6IERvIG5vdCByZXNldCBvdGhlciBtZW1i
ZXJzIGhlcmU7IGNsZWFyRnJhbWVCdWZmZXJDYWNoZSgpIGNhbGxzIHRoaXMKICAgICAvLyB0byBm
cmVlIHRoZSBiaXRtYXAgZGF0YSwgYnV0IG90aGVyIGZ1bmN0aW9ucyBsaWtlIGluaXRGcmFtZUJ1
ZmZlcigpIGFuZApAQCAtMTYzLDI0ICsxNjEsMTYgQEAgdm9pZCBJbWFnZUZyYW1lOjpjbGVhclBp
eGVsRGF0YSgpCiAKIHZvaWQgSW1hZ2VGcmFtZTo6emVyb0ZpbGxQaXhlbERhdGEoKQogewotICAg
IG1lbXNldChtX2J5dGVzLCAwLCBtX3NpemUud2lkdGgoKSAqIG1fc2l6ZS5oZWlnaHQoKSAqIHNp
emVvZihQaXhlbERhdGEpKTsKKyAgICBtX3BpeGVscy0+Y2xlYXIoKTsKICAgICBtX2hhc0FscGhh
ID0gdHJ1ZTsKIH0KIAogdm9pZCBJbWFnZUZyYW1lOjp6ZXJvRmlsbEZyYW1lUmVjdChjb25zdCBJ
bnRSZWN0JiByZWN0KQogewotICAgIEFTU0VSVChJbnRSZWN0KEludFBvaW50KCksIG1fc2l6ZSku
Y29udGFpbnMocmVjdCkpOwotCiAgICAgaWYgKHJlY3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBzaXplX3QgcmVjdFdpZHRoSW5CeXRlcyA9IHJlY3Qud2lkdGgoKSAqIHNpemVv
ZihQaXhlbERhdGEpOwotICAgIFBpeGVsRGF0YSogc3RhcnQgPSBtX2J5dGVzICsgKHJlY3QueSgp
ICogd2lkdGgoKSkgKyByZWN0LngoKTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IHJlY3QuaGVp
Z2h0KCk7ICsraSkgewotICAgICAgICBtZW1zZXQoc3RhcnQsIDAsIHJlY3RXaWR0aEluQnl0ZXMp
OwotICAgICAgICBzdGFydCArPSB3aWR0aCgpOwotICAgIH0KLQorICAgIG1fcGl4ZWxzLT5jbGVh
clJlY3QocmVjdCk7CiAgICAgc2V0SGFzQWxwaGEodHJ1ZSk7CiB9CiAKQEAgLTE4OSwyNSArMTc5
LDIzIEBAIGJvb2wgSW1hZ2VGcmFtZTo6Y29weUJpdG1hcERhdGEoY29uc3QgSW1hZ2VGcmFtZSYg
b3RoZXIpCiAgICAgaWYgKHRoaXMgPT0gJm90aGVyKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAot
ICAgIG1fYmFja2luZ1N0b3JlID0gb3RoZXIubV9iYWNraW5nU3RvcmU7Ci0gICAgbV9ieXRlcyA9
IG1fYmFja2luZ1N0b3JlLmRhdGEoKTsKLSAgICBtX3NpemUgPSBvdGhlci5tX3NpemU7Ci0gICAg
c2V0SGFzQWxwaGEob3RoZXIubV9oYXNBbHBoYSk7CisgICAgaWYgKG90aGVyLm1fcGl4ZWxzKQor
ICAgICAgICBtX3BpeGVscyA9IEJpdG1hcFBpeGVsczo6Y3JlYXRlKCpvdGhlci5tX3BpeGVscy5n
ZXQoKSk7CisgICAgZWxzZQorICAgICAgICBtX3BpeGVscyA9IG51bGxwdHI7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLWJvb2wgSW1hZ2VGcmFtZTo6c2V0U2l6ZShpbnQgbmV3V2lkdGgsIGludCBu
ZXdIZWlnaHQpCitib29sIEltYWdlRnJhbWU6OnNldFNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSwg
Ym9vbCBwcmVtdWx0aXBseUFscGhhKQogewotICAgIEFTU0VSVCghd2lkdGgoKSAmJiAhaGVpZ2h0
KCkpOwotICAgIHNpemVfdCBiYWNraW5nU3RvcmVTaXplID0gbmV3V2lkdGggKiBuZXdIZWlnaHQ7
Ci0gICAgaWYgKCFtX2JhY2tpbmdTdG9yZS50cnlSZXNlcnZlQ2FwYWNpdHkoYmFja2luZ1N0b3Jl
U2l6ZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBtX2JhY2tpbmdTdG9yZS5yZXNpemUo
YmFja2luZ1N0b3JlU2l6ZSk7Ci0gICAgbV9ieXRlcyA9IG1fYmFja2luZ1N0b3JlLmRhdGEoKTsK
LSAgICBtX3NpemUgPSBJbnRTaXplKG5ld1dpZHRoLCBuZXdIZWlnaHQpOworICAgIEFTU0VSVCgh
bV9waXhlbHMpOworICAgIG1fcGl4ZWxzID0gQml0bWFwUGl4ZWxzOjpjcmVhdGUoc2l6ZSwgcHJl
bXVsdGlwbHlBbHBoYSk7CisgICAgcmV0dXJuIG1fcGl4ZWxzICE9IG51bGxwdHI7Cit9CiAKLSAg
ICB6ZXJvRmlsbFBpeGVsRGF0YSgpOwotICAgIHJldHVybiB0cnVlOwordm9pZCBJbWFnZUZyYW1l
Ojpjb3B5Um93TlRpbWVzKGludCBzdGFydFgsIGludCBlbmRYLCBpbnQgc3RhcnRZLCBpbnQgZW5k
WSkKK3sKKyAgICBtX3BpeGVscy0+cmVwZWF0Rmlyc3RSb3coSW50UmVjdChzdGFydFgsIHN0YXJ0
WSwgZW5kWCAtc3RhcnRYICwgZW5kWSAtIHN0YXJ0WSkpOwogfQogCiBib29sIEltYWdlRnJhbWU6
Omhhc0FscGhhKCkgY29uc3QKQEAgLTIyMCwxMSArMjA4LDYgQEAgdm9pZCBJbWFnZUZyYW1lOjpz
ZXRIYXNBbHBoYShib29sIGFscGhhKQogICAgIG1faGFzQWxwaGEgPSBhbHBoYTsKIH0KIAotdm9p
ZCBJbWFnZUZyYW1lOjpzZXRDb2xvclByb2ZpbGUoY29uc3QgQ29sb3JQcm9maWxlJiBjb2xvclBy
b2ZpbGUpCi17Ci0gICAgbV9jb2xvclByb2ZpbGUgPSBjb2xvclByb2ZpbGU7Ci19Ci0KIHZvaWQg
SW1hZ2VGcmFtZTo6c2V0U3RhdHVzKEZyYW1lU3RhdHVzIHN0YXR1cykKIHsKICAgICBtX3N0YXR1
cyA9IHN0YXR1czsKQEAgLTI5MSw3ICsyNzQsNyBAQCB1bnNpZ25lZCBJbWFnZURlY29kZXI6OmZy
YW1lQnl0ZXNBdEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QKICAgICBpZiAobV9mcmFtZUJ1ZmZl
ckNhY2hlLnNpemUoKSA8PSBpbmRleCkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgLy8gRklYTUU6
IFVzZSB0aGUgZGltZW5zaW9uIG9mIHRoZSByZXF1ZXN0ZWQgZnJhbWUuCi0gICAgcmV0dXJuIG1f
c2l6ZS5hcmVhKCkgKiBzaXplb2YoSW1hZ2VGcmFtZTo6UGl4ZWxEYXRhKTsKKyAgICByZXR1cm4g
bV9zaXplLmFyZWEoKSAqIHNpemVvZihSR0JBMzIpOwogfQogCiBmbG9hdCBJbWFnZURlY29kZXI6
OmZyYW1lRHVyYXRpb25BdEluZGV4KHNpemVfdCBpbmRleCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmgKaW5kZXggMmY4ZWVl
MTc4MWQxNjJkODZjNDlmZTFkYWM3MmEyZTdlNDBhNWQ2ZC4uYjcyZjJiZTc1MjIyNDdjMmIyNWFk
OWY5NDkyYTNmOTYwZjQ1NzQxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmgKQEAgLTI4LDggKzI4LDEwIEBACiAKICNw
cmFnbWEgb25jZQogCi0jaW5jbHVkZSAiSW50UmVjdC5oIgorI2luY2x1ZGUgIkJpdG1hcFBpeGVs
cy5oIgogI2luY2x1ZGUgIkltYWdlU291cmNlLmgiCisjaW5jbHVkZSAiSW50UmVjdC5oIgorI2lu
Y2x1ZGUgIkludFNpemUuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVNjcmVlbi5oIgogI2luY2x1ZGUg
IlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CkBAIC01Nyw3ICs1
OSw2IEBAIHVzaW5nIENvbG9yUHJvZmlsZSA9IFZlY3RvcjxjaGFyPjsKICAgICAgICAgICAgIERp
c3Bvc2VPdmVyd3JpdGVQcmV2aW91cyAgLy8gQ2xlYXIgZnJhbWUgdG8gcHJldmlvdXMgZnJhbWVi
dWZmZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29udGVudHMK
ICAgICAgICAgfTsKLSAgICAgICAgdHlwZWRlZiB1bnNpZ25lZCBQaXhlbERhdGE7CiAKICAgICAg
ICAgSW1hZ2VGcmFtZSgpOwogCkBAIC04MCwxNTEgKzgxLDYxIEBAIHVzaW5nIENvbG9yUHJvZmls
ZSA9IFZlY3RvcjxjaGFyPjsKICAgICAgICAgLy8gQ29waWVzIHRoZSBwaXhlbCBkYXRhIGF0IFso
c3RhcnRYLCBzdGFydFkpLCAoZW5kWCwgc3RhcnRZKSkgdG8gdGhlCiAgICAgICAgIC8vIHNhbWUg
WC1jb29yZGluYXRlcyBvbiBlYWNoIHN1YnNlcXVlbnQgcm93IHVwIHRvIGJ1dCBub3QgaW5jbHVk
aW5nCiAgICAgICAgIC8vIGVuZFkuCi0gICAgICAgIHZvaWQgY29weVJvd05UaW1lcyhpbnQgc3Rh
cnRYLCBpbnQgZW5kWCwgaW50IHN0YXJ0WSwgaW50IGVuZFkpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIEFTU0VSVChzdGFydFggPCB3aWR0aCgpKTsKLSAgICAgICAgICAgIEFTU0VSVChlbmRYIDw9
IHdpZHRoKCkpOwotICAgICAgICAgICAgQVNTRVJUKHN0YXJ0WSA8IGhlaWdodCgpKTsKLSAgICAg
ICAgICAgIEFTU0VSVChlbmRZIDw9IGhlaWdodCgpKTsKLSAgICAgICAgICAgIGNvbnN0IGludCBy
b3dCeXRlcyA9IChlbmRYIC0gc3RhcnRYKSAqIHNpemVvZihQaXhlbERhdGEpOwotICAgICAgICAg
ICAgY29uc3QgUGl4ZWxEYXRhKiBjb25zdCBzdGFydEFkZHIgPSBnZXRBZGRyKHN0YXJ0WCwgc3Rh
cnRZKTsKLSAgICAgICAgICAgIGZvciAoaW50IGRlc3RZID0gc3RhcnRZICsgMTsgZGVzdFkgPCBl
bmRZOyArK2Rlc3RZKQotICAgICAgICAgICAgICAgIG1lbWNweShnZXRBZGRyKHN0YXJ0WCwgZGVz
dFkpLCBzdGFydEFkZHIsIHJvd0J5dGVzKTsKLSAgICAgICAgfQorICAgICAgICB2b2lkIGNvcHlS
b3dOVGltZXMoaW50IHN0YXJ0WCwgaW50IGVuZFgsIGludCBzdGFydFksIGludCBlbmRZKTsKIAog
ICAgICAgICAvLyBBbGxvY2F0ZXMgc3BhY2UgZm9yIHRoZSBwaXhlbCBkYXRhLiAgTXVzdCBiZSBj
YWxsZWQgYmVmb3JlIGFueSBwaXhlbHMKICAgICAgICAgLy8gYXJlIHdyaXR0ZW4uICBNdXN0IG9u
bHkgYmUgY2FsbGVkIG9uY2UuICBSZXR1cm5zIHdoZXRoZXIgYWxsb2NhdGlvbgogICAgICAgICAv
LyBzdWNjZWVkZWQuCi0gICAgICAgIGJvb2wgc2V0U2l6ZShpbnQgbmV3V2lkdGgsIGludCBuZXdI
ZWlnaHQpOworICAgICAgICBib29sIHNldFNpemUoY29uc3QgSW50U2l6ZSYsIGJvb2wgcHJlbXVs
dGlwbHlBbHBoYSk7CisgICAgICAgIAorICAgICAgICBJbnRTaXplIHNpemUoKSBjb25zdCB7IHJl
dHVybiBtX3BpeGVscy0+c2l6ZSgpOyB9CiAKICAgICAgICAgLy8gUmV0dXJucyBhIGNhbGxlci1v
d25lZCBwb2ludGVyIHRvIHRoZSB1bmRlcmx5aW5nIG5hdGl2ZSBpbWFnZSBkYXRhLgogICAgICAg
ICAvLyAoQWN0dWFsIHVzZTogVGhpcyBwb2ludGVyIHdpbGwgYmUgb3duZWQgYnkgQml0bWFwSW1h
Z2UgYW5kIGZyZWVkIGluCiAgICAgICAgIC8vIEZyYW1lRGF0YTo6Y2xlYXIoKSkuCi0gICAgICAg
IE5hdGl2ZUltYWdlUHRyIGFzTmV3TmF0aXZlSW1hZ2UoKSBjb25zdDsKKyAgICAgICAgTmF0aXZl
SW1hZ2VQdHIgYXNOZXdOYXRpdmVJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGl4ZWxzLT5pbWFn
ZSgpOyB9CisKKyAgICAgICAgaW5saW5lIEJpdG1hcFBpeGVscyogcGl4ZWxzKCkgY29uc3QgeyBy
ZXR1cm4gbV9waXhlbHMgPyBtX3BpeGVscy5nZXQoKSA6IG51bGxwdHI7IH0KKyAgICAgICAgaW5s
aW5lIGJvb2wgaGFzUGl4ZWxzKCkgY29uc3QgeyByZXR1cm4gcGl4ZWxzKCk7IH0KIAogICAgICAg
ICBib29sIGhhc0FscGhhKCkgY29uc3Q7Ci0gICAgICAgIGNvbnN0IEludFJlY3QmIG9yaWdpbmFs
RnJhbWVSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW5hbEZyYW1lUmVjdDsgfQogICAgICAg
ICBGcmFtZVN0YXR1cyBzdGF0dXMoKSBjb25zdCB7IHJldHVybiBtX3N0YXR1czsgfQogICAgICAg
ICB1bnNpZ25lZCBkdXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZHVyYXRpb247IH0KICAgICAg
ICAgRnJhbWVEaXNwb3NhbE1ldGhvZCBkaXNwb3NhbE1ldGhvZCgpIGNvbnN0IHsgcmV0dXJuIG1f
ZGlzcG9zYWxNZXRob2Q7IH0KLSAgICAgICAgYm9vbCBwcmVtdWx0aXBseUFscGhhKCkgY29uc3Qg
eyByZXR1cm4gbV9wcmVtdWx0aXBseUFscGhhOyB9CiAKICAgICAgICAgdm9pZCBzZXRIYXNBbHBo
YShib29sIGFscGhhKTsKLSAgICAgICAgdm9pZCBzZXRDb2xvclByb2ZpbGUoY29uc3QgQ29sb3JQ
cm9maWxlJik7Ci0gICAgICAgIHZvaWQgc2V0T3JpZ2luYWxGcmFtZVJlY3QoY29uc3QgSW50UmVj
dCYgcikgeyBtX29yaWdpbmFsRnJhbWVSZWN0ID0gcjsgfQogICAgICAgICB2b2lkIHNldFN0YXR1
cyhGcmFtZVN0YXR1cyBzdGF0dXMpOwogICAgICAgICB2b2lkIHNldER1cmF0aW9uKHVuc2lnbmVk
IGR1cmF0aW9uKSB7IG1fZHVyYXRpb24gPSBkdXJhdGlvbjsgfQogICAgICAgICB2b2lkIHNldERp
c3Bvc2FsTWV0aG9kKEZyYW1lRGlzcG9zYWxNZXRob2QgbWV0aG9kKSB7IG1fZGlzcG9zYWxNZXRo
b2QgPSBtZXRob2Q7IH0KLSAgICAgICAgdm9pZCBzZXRQcmVtdWx0aXBseUFscGhhKGJvb2wgcHJl
bXVsdGlwbHlBbHBoYSkgeyBtX3ByZW11bHRpcGx5QWxwaGEgPSBwcmVtdWx0aXBseUFscGhhOyB9
CiAKICAgICAgICAgaW5saW5lIHZvaWQgc2V0UkdCQShpbnQgeCwgaW50IHksIHVuc2lnbmVkIHIs
IHVuc2lnbmVkIGcsIHVuc2lnbmVkIGIsIHVuc2lnbmVkIGEpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIHNldFJHQkEoZ2V0QWRkcih4LCB5KSwgciwgZywgYiwgYSk7CisgICAgICAgICAgICBtX3Bp
eGVscy0+c2V0UkdCQSh4LCB5LCByLCBnLCBiLCBhKTsKICAgICAgICAgfQogCi0gICAgICAgIGlu
bGluZSBQaXhlbERhdGEqIGdldEFkZHIoaW50IHgsIGludCB5KQorICAgICAgICBpbmxpbmUgUkdC
QTMyKiBnZXRBZGRyKGludCB4LCBpbnQgeSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJu
IG1fYnl0ZXMgKyAoeSAqIHdpZHRoKCkpICsgeDsKKyAgICAgICAgICAgIHJldHVybiBtX3BpeGVs
cy0+YXQoeCwgeSk7CiAgICAgICAgIH0KIAotICAgICAgICBpbmxpbmUgYm9vbCBoYXNQaXhlbERh
dGEoKSBjb25zdAorICAgICAgICBpbmxpbmUgdm9pZCBzZXRSR0JBKFJHQkEzMiogZGVzdCwgdW5z
aWduZWQgciwgdW5zaWduZWQgZywgdW5zaWduZWQgYiwgdW5zaWduZWQgYSkKICAgICAgICAgewot
ICAgICAgICAgICAgcmV0dXJuIG1fYnl0ZXM7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBVc2Ug
Zml4IHBvaW50IG11bHRpcGxpZXIgaW5zdGVhZCBvZiBpbnRlZ2VyIGRpdmlzaW9uIG9yIGZsb2F0
aW5nIHBvaW50IG1hdGguCi0gICAgICAgIC8vIFRoaXMgbXVsdGlwbGVyIHByb2R1Y2VzIGV4YWN0
bHkgdGhlIHNhbWUgcmVzdWx0IGZvciBhbGwgdmFsdWVzIGluIHJhbmdlIDAgLSAyNTUuCi0gICAg
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBmaXhQb2ludFNoaWZ0ID0gMjQ7Ci0gICAgICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBmaXhQb2ludE11bHQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
MS4wIC8gMjU1LjAgKiAoMSA8PCBmaXhQb2ludFNoaWZ0KSkgKyAxOwotICAgICAgICAvLyBNdWx0
aXBsaWVzIHVuc2lnbmVkIHZhbHVlIGJ5IGZpeHBvaW50IHZhbHVlIGFuZCBjb252ZXJ0cyBiYWNr
IHRvIHVuc2lnbmVkLgotICAgICAgICBzdGF0aWMgdW5zaWduZWQgZml4UG9pbnRVbnNpZ25lZE11
bHRpcGx5KHVuc2lnbmVkIGZpeGVkLCB1bnNpZ25lZCB2KQotICAgICAgICB7Ci0gICAgICAgICAg
ICByZXR1cm4gIChmaXhlZCAqIHYpID4+IGZpeFBvaW50U2hpZnQ7Ci0gICAgICAgIH0KLQotICAg
ICAgICBpbmxpbmUgdm9pZCBzZXRSR0JBKFBpeGVsRGF0YSogZGVzdCwgdW5zaWduZWQgciwgdW5z
aWduZWQgZywgdW5zaWduZWQgYiwgdW5zaWduZWQgYSkKLSAgICAgICAgewotICAgICAgICAgICAg
aWYgKG1fcHJlbXVsdGlwbHlBbHBoYSAmJiBhIDwgMjU1KSB7Ci0gICAgICAgICAgICAgICAgaWYg
KCFhKSB7Ci0gICAgICAgICAgICAgICAgICAgICpkZXN0ID0gMDsKLSAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGFscGhhTXVsdCA9IGEgKiBmaXhQb2ludE11bHQ7Ci0gICAgICAgICAgICAgICAgciA9IGZpeFBv
aW50VW5zaWduZWRNdWx0aXBseShyLCBhbHBoYU11bHQpOwotICAgICAgICAgICAgICAgIGcgPSBm
aXhQb2ludFVuc2lnbmVkTXVsdGlwbHkoZywgYWxwaGFNdWx0KTsKLSAgICAgICAgICAgICAgICBi
ID0gZml4UG9pbnRVbnNpZ25lZE11bHRpcGx5KGIsIGFscGhhTXVsdCk7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICAqZGVzdCA9IChhIDw8IDI0IHwgciA8PCAxNiB8IGcgPDwgOCB8IGIpOwor
ICAgICAgICAgICAgbV9waXhlbHMtPnNldFJHQkEoZGVzdCwgciwgZywgYiwgYSk7CiAgICAgICAg
IH0KIAogI2lmIEVOQUJMRShBUE5HKQotICAgICAgICBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGRp
dmlkZTI1NSh1bnNpZ25lZCBhKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gKGEgKyAo
YSA+PiA4KSArIDEpID4+IDg7Ci0gICAgICAgIH0KLQotICAgICAgICBpbmxpbmUgdm9pZCBvdmVy
UkdCQShQaXhlbERhdGEqIGRlc3QsIHVuc2lnbmVkIHIsIHVuc2lnbmVkIGcsIHVuc2lnbmVkIGIs
IHVuc2lnbmVkIGEpCisgICAgICAgIGlubGluZSB2b2lkIG92ZXJSR0JBKFJHQkEzMiogZGVzdCwg
dW5zaWduZWQgciwgdW5zaWduZWQgZywgdW5zaWduZWQgYiwgdW5zaWduZWQgYSkKICAgICAgICAg
ewotICAgICAgICAgICAgaWYgKCFhKQotICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAg
ICAgICAgaWYgKGEgPCAyNTUpIHsKLSAgICAgICAgICAgICAgICB1bnNpZ25lZCBhRGVzdCA9ICgo
KmRlc3QpID4+IDI0KSAmIDI1NTsKLSAgICAgICAgICAgICAgICBpZiAoYURlc3QpIHsKLSAgICAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgckRlc3QgPSAoKCpkZXN0KSA+PiAxNikgJiAyNTU7Ci0g
ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGdEZXN0ID0gKCgqZGVzdCkgPj4gOCkgJiAyNTU7
Ci0gICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGJEZXN0ID0gKCpkZXN0KSAmIDI1NTsKLSAg
ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgYUF1eCA9IDI1NSAtIGE7Ci0gICAgICAgICAgICAg
ICAgICAgIGlmICghbV9wcmVtdWx0aXBseUFscGhhKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICByRGVzdCA9IGRpdmlkZTI1NShyRGVzdCAqIGFEZXN0KTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGdEZXN0ID0gZGl2aWRlMjU1KGdEZXN0ICogYURlc3QpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgYkRlc3QgPSBkaXZpZGUyNTUoYkRlc3QgKiBhRGVzdCk7Ci0gICAgICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICAgICAgciA9IGRpdmlkZTI1NShyICogYSArIHJEZXN0ICog
YUF1eCk7Ci0gICAgICAgICAgICAgICAgICAgIGcgPSBkaXZpZGUyNTUoZyAqIGEgKyBnRGVzdCAq
IGFBdXgpOwotICAgICAgICAgICAgICAgICAgICBiID0gZGl2aWRlMjU1KGIgKiBhICsgYkRlc3Qg
KiBhQXV4KTsKLSAgICAgICAgICAgICAgICAgICAgYSArPSBkaXZpZGUyNTUoYURlc3QgKiBhQXV4
KTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFtX3ByZW11bHRpcGx5QWxwaGEpIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHIgPSAociAqIDI1NSArIGEgLSAxKSAvIGE7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBnID0gKGcgKiAyNTUgKyBhIC0gMSkgLyBhOwotICAgICAgICAgICAgICAg
ICAgICAgICAgYiA9IChiICogMjU1ICsgYSAtIDEpIC8gYTsKLSAgICAgICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobV9wcmVtdWx0aXBseUFscGhhKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIHIgPSBkaXZpZGUyNTUociAqIGEpOwotICAgICAgICAgICAgICAgICAg
ICBnID0gZGl2aWRlMjU1KGcgKiBhKTsKLSAgICAgICAgICAgICAgICAgICAgYiA9IGRpdmlkZTI1
NShiICogYSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAg
KmRlc3QgPSAoYSA8PCAyNCB8IHIgPDwgMTYgfCBnIDw8IDggfCBiKTsKKyAgICAgICAgICAgIG1f
cGl4ZWxzLT5vdmVyUkdCQShkZXN0LCByLCBnLCBiLCBhKTsKICAgICAgICAgfQogI2VuZGlmCiAK
ICAgICBwcml2YXRlOgotICAgICAgICBpbnQgd2lkdGgoKSBjb25zdAotICAgICAgICB7Ci0gICAg
ICAgICAgICByZXR1cm4gbV9zaXplLndpZHRoKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBpbnQg
aGVpZ2h0KCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG1fc2l6ZS5oZWln
aHQoKTsKLSAgICAgICAgfQotCi0gICAgICAgIFZlY3RvcjxQaXhlbERhdGE+IG1fYmFja2luZ1N0
b3JlOwotICAgICAgICBQaXhlbERhdGEqIG1fYnl0ZXM7IC8vIFRoZSBtZW1vcnkgaXMgYmFja2Vk
IGJ5IG1fYmFja2luZ1N0b3JlLgotICAgICAgICBJbnRTaXplIG1fc2l6ZTsKLSAgICAgICAgLy8g
RklYTUU6IERvIHdlIG5lZWQgbV9jb2xvclByb2ZpbGUgYW55bW9yZT8KLSAgICAgICAgQ29sb3JQ
cm9maWxlIG1fY29sb3JQcm9maWxlOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Qml0bWFwUGl4
ZWxzPiBtX3BpeGVsczsKICAgICAgICAgYm9vbCBtX2hhc0FscGhhOwotICAgICAgICBJbnRSZWN0
IG1fb3JpZ2luYWxGcmFtZVJlY3Q7IC8vIFRoaXMgd2lsbCBhbHdheXMganVzdCBiZSB0aGUgZW50
aXJlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYnVmZmVyIGV4Y2Vw
dCBmb3IgR0lGIGZyYW1lcyB3aG9zZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIG9yaWdpbmFsIHJlY3Qgd2FzIHNtYWxsZXIgdGhhbiB0aGUKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBvdmVyYWxsIGltYWdlIHNpemUuCiAgICAgICAgIEZy
YW1lU3RhdHVzIG1fc3RhdHVzOwogICAgICAgICB1bnNpZ25lZCBtX2R1cmF0aW9uOwogICAgICAg
ICBGcmFtZURpc3Bvc2FsTWV0aG9kIG1fZGlzcG9zYWxNZXRob2Q7Ci0gICAgICAgIGJvb2wgbV9w
cmVtdWx0aXBseUFscGhhOwogICAgIH07CiAKICAgICAvLyBJbWFnZURlY29kZXIgaXMgYSBiYXNl
IGZvciBhbGwgZm9ybWF0LXNwZWNpZmljIGRlY29kZXJzCkBAIC0yNTMsNiArMTY0LDggQEAgdXNp
bmcgQ29sb3JQcm9maWxlID0gVmVjdG9yPGNoYXI+OwogCiAgICAgICAgIHZpcnR1YWwgU3RyaW5n
IGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3QgPSAwOwogCisgICAgICAgIGJvb2wgcHJlbXVsdGlw
bHlBbHBoYSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJlbXVsdGlwbHlBbHBoYTsgfQorCiAgICAgICAg
IGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzQWxsRGF0YVJlY2Vp
dmVkOyB9CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRh
LCBib29sIGFsbERhdGFSZWNlaXZlZCkKQEAgLTI5MCwxMSArMjAzLDExIEBAIHVzaW5nIENvbG9y
UHJvZmlsZSA9IFZlY3RvcjxjaGFyPjsKIAogICAgICAgICAvLyBSZXR1cm5zIHdoZXRoZXIgdGhl
IHNpemUgaXMgbGVnYWwgKGkuZS4gbm90IGdvaW5nIHRvIHJlc3VsdCBpbgogICAgICAgICAvLyBv
dmVyZmxvdyBlbHNld2hlcmUpLiAgSWYgbm90LCBtYXJrcyBkZWNvZGluZyBhcyBmYWlsZWQuCi0g
ICAgICAgIHZpcnR1YWwgYm9vbCBzZXRTaXplKHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWln
aHQpCisgICAgICAgIHZpcnR1YWwgYm9vbCBzZXRTaXplKGNvbnN0IEludFNpemUmIHNpemUpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIGlmIChpc092ZXJTaXplKHdpZHRoLCBoZWlnaHQpKQorICAg
ICAgICAgICAgaWYgKGlzT3ZlclNpemUoc2l6ZSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHNl
dEZhaWxlZCgpOwotICAgICAgICAgICAgbV9zaXplID0gSW50U2l6ZSh3aWR0aCwgaGVpZ2h0KTsK
KyAgICAgICAgICAgIG1fc2l6ZSA9IHNpemU7CiAgICAgICAgICAgICBtX3NpemVBdmFpbGFibGUg
PSB0cnVlOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KQEAgLTM4MSw4ICsy
OTQsNiBAQCB1c2luZyBDb2xvclByb2ZpbGUgPSBWZWN0b3I8Y2hhcj47CiAKICAgICAgICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOyAvLyBUaGUgZW5jb2RlZCBkYXRhLgogICAgICAgICBW
ZWN0b3I8SW1hZ2VGcmFtZSwgMT4gbV9mcmFtZUJ1ZmZlckNhY2hlOwotICAgICAgICAvLyBGSVhN
RTogRG8gd2UgbmVlZCBtX2NvbG9yUHJvZmlsZSBhbnkgbW9yZSwgZm9yIGFueSBwb3J0PwotICAg
ICAgICBDb2xvclByb2ZpbGUgbV9jb2xvclByb2ZpbGU7CiAgICAgICAgIGJvb2wgbV9zY2FsZWQg
eyBmYWxzZSB9OwogICAgICAgICBWZWN0b3I8aW50PiBtX3NjYWxlZENvbHVtbnM7CiAgICAgICAg
IFZlY3RvcjxpbnQ+IG1fc2NhbGVkUm93czsKQEAgLTM5MywxMSArMzA0LDEwIEBAIHVzaW5nIENv
bG9yUHJvZmlsZSA9IFZlY3RvcjxjaGFyPjsKICAgICBwcml2YXRlOgogICAgICAgICAvLyBTb21l
IGNvZGUgcGF0aHMgY29tcHV0ZSB0aGUgc2l6ZSBvZiB0aGUgaW1hZ2UgYXMgIndpZHRoICogaGVp
Z2h0ICogNCIKICAgICAgICAgLy8gYW5kIHJldHVybiBpdCBhcyBhIChzaWduZWQpIGludC4gIEF2
b2lkIG92ZXJmbG93LgotICAgICAgICBzdGF0aWMgYm9vbCBpc092ZXJTaXplKHVuc2lnbmVkIHdp
ZHRoLCB1bnNpZ25lZCBoZWlnaHQpCisgICAgICAgIHN0YXRpYyBib29sIGlzT3ZlclNpemUoY29u
c3QgSW50U2l6ZSYgc2l6ZSkKICAgICAgICAgewotICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBs
b25nIHRvdGFsX3NpemUgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KHdpZHRoKQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBzdGF0aWNfY2FzdDx1
bnNpZ25lZCBsb25nIGxvbmc+KGhlaWdodCk7Ci0gICAgICAgICAgICByZXR1cm4gdG90YWxfc2l6
ZSA+ICgoMSA8PCAyOSkgLSAxKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBwaXhl
bHMgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KHNpemUud2lkdGgoKSkgKiBzdGF0
aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KHNpemUuaGVpZ2h0KCkpOworICAgICAgICAgICAg
cmV0dXJuIHBpeGVscyA+ICgoMSA8PCAyOSkgLSAxKTsKICAgICAgICAgfQogCiAgICAgICAgIElu
dFNpemUgbV9zaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBjYWYzNWM5N2Yx
N2VkZDM0YmM5ZGY4OWFiMDllODcwMGFlZTZjN2RmLi40NTdhZWYwN2FkNjM0ZTAyMWJhM2VkZTNk
NTEzYzc0YTVkOGViOWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcApAQCAtNzAsMTAg
KzcwLDggQEAgSW1hZ2VGcmFtZSogQk1QSW1hZ2VEZWNvZGVyOjpmcmFtZUJ1ZmZlckF0SW5kZXgo
c2l6ZV90IGluZGV4KQogICAgIGlmIChpbmRleCkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBp
ZiAobV9mcmFtZUJ1ZmZlckNhY2hlLmlzRW1wdHkoKSkgeworICAgIGlmIChtX2ZyYW1lQnVmZmVy
Q2FjaGUuaXNFbXB0eSgpKQogICAgICAgICBtX2ZyYW1lQnVmZmVyQ2FjaGUucmVzaXplKDEpOwot
ICAgICAgICBtX2ZyYW1lQnVmZmVyQ2FjaGUuZmlyc3QoKS5zZXRQcmVtdWx0aXBseUFscGhhKG1f
cHJlbXVsdGlwbHlBbHBoYSk7Ci0gICAgfQogCiAgICAgSW1hZ2VGcmFtZSogYnVmZmVyID0gJm1f
ZnJhbWVCdWZmZXJDYWNoZS5maXJzdCgpOwogICAgIGlmIChidWZmZXItPnN0YXR1cygpICE9IElt
YWdlRnJhbWU6OkZyYW1lQ29tcGxldGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVhZGVyLmNwcAppbmRleCA1
YzAwNTUzNGVjZDkyMTM0YTEzYjMyOTU4OTI3NzkwZjA3YWQwZjgxLi45ODFjMTFmZTk2ODIwNzk2
M2ZhY2I1ZGYxZWZlYTFkMGRlOWIwYTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5jcHAKQEAg
LTc4LDcgKzc4LDcgQEAgYm9vbCBCTVBJbWFnZVJlYWRlcjo6ZGVjb2RlQk1QKGJvb2wgb25seVNp
emUpCiAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgZnJhbWVidWZmZXIgaWYgbmVlZGVkLgogICAgIEFT
U0VSVChtX2J1ZmZlcik7ICAvLyBQYXJlbnQgc2hvdWxkIHNldCB0aGlzIGJlZm9yZSBhc2tpbmcg
dXMgdG8gZGVjb2RlIQogICAgIGlmIChtX2J1ZmZlci0+c3RhdHVzKCkgPT0gSW1hZ2VGcmFtZTo6
RnJhbWVFbXB0eSkgewotICAgICAgICBpZiAoIW1fYnVmZmVyLT5zZXRTaXplKG1fcGFyZW50LT5z
aXplKCkud2lkdGgoKSwgbV9wYXJlbnQtPnNpemUoKS5oZWlnaHQoKSkpCisgICAgICAgIGlmICgh
bV9idWZmZXItPnNldFNpemUobV9wYXJlbnQtPnNpemUoKSwgbV9wYXJlbnQtPnByZW11bHRpcGx5
QWxwaGEoKSkpCiAgICAgICAgICAgICByZXR1cm4gbV9wYXJlbnQtPnNldEZhaWxlZCgpOyAvLyBV
bmFibGUgdG8gYWxsb2NhdGUuCiAgICAgICAgIG1fYnVmZmVyLT5zZXRTdGF0dXMoSW1hZ2VGcmFt
ZTo6RnJhbWVQYXJ0aWFsKTsKICAgICAgICAgLy8gc2V0U2l6ZSgpIGNhbGxzIGVyYXNlQVJHQigp
LCB3aGljaCByZXNldHMgdGhlIGFscGhhIGZsYWcsIHNvIHdlIGZvcmNlCkBAIC04Niw5ICs4Niw2
IEBAIGJvb2wgQk1QSW1hZ2VSZWFkZXI6OmRlY29kZUJNUChib29sIG9ubHlTaXplKQogICAgICAg
ICAvLyB0aGVzZSAwcyBjb3VsZCBhY3R1YWxseSBzaG93IHRocm91Z2guCiAgICAgICAgIG1fYnVm
ZmVyLT5zZXRIYXNBbHBoYShmYWxzZSk7CiAKLSAgICAgICAgLy8gRm9yIEJNUHMsIHRoZSBmcmFt
ZSBhbHdheXMgZmlsbHMgdGhlIGVudGlyZSBpbWFnZS4KLSAgICAgICAgbV9idWZmZXItPnNldE9y
aWdpbmFsRnJhbWVSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgbV9wYXJlbnQtPnNpemUoKSkpOwot
CiAgICAgICAgIGlmICghbV9pc1RvcERvd24pCiAgICAgICAgICAgICBtX2Nvb3JkLnNldFkobV9w
YXJlbnQtPnNpemUoKS5oZWlnaHQoKSAtIDEpOwogICAgIH0KQEAgLTE3MSw3ICsxNjgsNyBAQCBi
b29sIEJNUEltYWdlUmVhZGVyOjpwcm9jZXNzSW5mb0hlYWRlcigpCiAgICAgICAgIHJldHVybiBt
X3BhcmVudC0+c2V0RmFpbGVkKCk7CiAKICAgICAvLyBTZXQgb3VyIHNpemUuCi0gICAgaWYgKCFt
X3BhcmVudC0+c2V0U2l6ZShtX2luZm9IZWFkZXIuYmlXaWR0aCwgbV9pbmZvSGVhZGVyLmJpSGVp
Z2h0KSkKKyAgICBpZiAoIW1fcGFyZW50LT5zZXRTaXplKEludFNpemUobV9pbmZvSGVhZGVyLmJp
V2lkdGgsIG1faW5mb0hlYWRlci5iaUhlaWdodCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICAvLyBGb3IgcGFsZXR0ZWQgaW1hZ2VzLCBiaXRtYXBzIGNhbiBzZXQgYmlDbHJVc2VkIHRv
IDAgdG8gbWVhbiAiYWxsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9jYWlyby9CaXRtYXBQaXhlbHNDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9CaXRtYXBQaXhlbHNDYWlyby5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNWFhZjhhMGEzNmIxOGNiZjcyNzdkMmMyZTI2ZWI0MTcxMjU2MDBkNQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0Jp
dG1hcFBpeGVsc0NhaXJvLmNwcApAQCAtMCwwICsxLDQwIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiQml0bWFwUGl4ZWxzLmgiCisKKyNpbmNsdWRlIDxjYWlyby5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK05hdGl2ZUltYWdlUHRyIEJpdG1hcFBpeGVsczo6aW1hZ2UoKSBjb25zdAorewor
ICAgIHJldHVybiBhZG9wdFJlZihjYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZV9mb3JfZGF0YSgK
KyAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBjaGFyKj4oY29uc3RfY2FzdDxSR0JB
MzIqPihtX3BpeGVscykpLAorICAgICAgICBDQUlST19GT1JNQVRfQVJHQjMyLCBzaXplKCkud2lk
dGgoKSwgc2l6ZSgpLmhlaWdodCgpLCBzaXplKCkud2lkdGgoKSAqIHNpemVvZihSR0JBMzIpKSk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdlRGVjb2RlckNhaXJvLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdlRGVjb2RlckNh
aXJvLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2I0MTI5NWY4NTczNThmYmJm
MzVjMWIwNTI1ZThkNmNjMzUyMGY1OC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWly
by9JbWFnZURlY29kZXJDYWlyby5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiSW1hZ2VEZWNvZGVyLmgiCi0KLSNpbmNsdWRlIDxjYWlyby5o
PgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLU5hdGl2ZUltYWdlUHRyIEltYWdlRnJhbWU6OmFz
TmV3TmF0aXZlSW1hZ2UoKSBjb25zdAotewotICAgIHJldHVybiBhZG9wdFJlZihjYWlyb19pbWFn
ZV9zdXJmYWNlX2NyZWF0ZV9mb3JfZGF0YSgKLSAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx1bnNp
Z25lZCBjaGFyKj4oY29uc3RfY2FzdDxQaXhlbERhdGEqPihtX2J5dGVzKSksCi0gICAgICAgIENB
SVJPX0ZPUk1BVF9BUkdCMzIsIHdpZHRoKCksIGhlaWdodCgpLCB3aWR0aCgpICogc2l6ZW9mKFBp
eGVsRGF0YSkpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VE
ZWNvZGVyLmNwcAppbmRleCA5Zjk5MmE3YmUxZDY2NzIyNjc1YzJlODU0YWQxODkxZTYwZjg1Nzdj
Li45NDk1NGRlNTI5OWZlNzkyOTkzMDQ5YzBmN2U1M2UwMDU2MWFlMWUyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lG
SW1hZ2VEZWNvZGVyLmNwcApAQCAtNjAsMTIgKzYwLDEyIEBAIGJvb2wgR0lGSW1hZ2VEZWNvZGVy
Ojppc1NpemVBdmFpbGFibGUoKQogICAgIHJldHVybiBJbWFnZURlY29kZXI6OmlzU2l6ZUF2YWls
YWJsZSgpOwogfQogCi1ib29sIEdJRkltYWdlRGVjb2Rlcjo6c2V0U2l6ZSh1bnNpZ25lZCB3aWR0
aCwgdW5zaWduZWQgaGVpZ2h0KQorYm9vbCBHSUZJbWFnZURlY29kZXI6OnNldFNpemUoY29uc3Qg
SW50U2l6ZSYgc2l6ZSkKIHsKLSAgICBpZiAoSW1hZ2VEZWNvZGVyOjppc1NpemVBdmFpbGFibGUo
KSAmJiBzaXplKCkgPT0gSW50U2l6ZSh3aWR0aCwgaGVpZ2h0KSkKKyAgICBpZiAoSW1hZ2VEZWNv
ZGVyOjppc1NpemVBdmFpbGFibGUoKSAmJiB0aGlzLT5zaXplKCkgPT1zaXplKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKIAotICAgIGlmICghSW1hZ2VEZWNvZGVyOjpzZXRTaXplKHdpZHRoLCBoZWln
aHQpKQorICAgIGlmICghSW1hZ2VEZWNvZGVyOjpzZXRTaXplKHNpemUpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICBwcmVwYXJlU2NhbGVEYXRhSWZOZWNlc3NhcnkoKTsKQEAgLTIxMywx
MCArMjEzLDEwIEBAIGJvb2wgR0lGSW1hZ2VEZWNvZGVyOjpoYXZlRGVjb2RlZFJvdyh1bnNpZ25l
ZCBmcmFtZUluZGV4LCBjb25zdCBWZWN0b3I8dW5zaWduZWQKIAogICAgIC8vIEluaXRpYWxpemUg
dGhlIGZyYW1lIGlmIG5lY2Vzc2FyeS4KICAgICBJbWFnZUZyYW1lJiBidWZmZXIgPSBtX2ZyYW1l
QnVmZmVyQ2FjaGVbZnJhbWVJbmRleF07Ci0gICAgaWYgKCgoYnVmZmVyLnN0YXR1cygpID09IElt
YWdlRnJhbWU6OkZyYW1lRW1wdHkpICYmICFpbml0RnJhbWVCdWZmZXIoZnJhbWVJbmRleCkpIHx8
ICFidWZmZXIuaGFzUGl4ZWxEYXRhKCkpCisgICAgaWYgKCgoYnVmZmVyLnN0YXR1cygpID09IElt
YWdlRnJhbWU6OkZyYW1lRW1wdHkpICYmICFpbml0RnJhbWVCdWZmZXIoZnJhbWVJbmRleCkpIHx8
ICFidWZmZXIuaGFzUGl4ZWxzKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEltYWdl
RnJhbWU6OlBpeGVsRGF0YSogY3VycmVudEFkZHJlc3MgPSBidWZmZXIuZ2V0QWRkcih4QmVnaW4s
IHlCZWdpbik7CisgICAgUkdCQTMyKiBjdXJyZW50QWRkcmVzcyA9IGJ1ZmZlci5nZXRBZGRyKHhC
ZWdpbiwgeUJlZ2luKTsKICAgICAvLyBXcml0ZSBvbmUgcm93J3Mgd29ydGggb2YgZGF0YSBpbnRv
IHRoZSBmcmFtZS4gIAogICAgIGZvciAoaW50IHggPSB4QmVnaW47IHggPCB4RW5kOyArK3gpIHsK
ICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciBzb3VyY2VWYWx1ZSA9IHJvd0J1ZmZlclsobV9z
Y2FsZWQgPyBtX3NjYWxlZENvbHVtbnNbeF0gOiB4KSAtIGZyYW1lQ29udGV4dC0+eE9mZnNldF07
CkBAIC0yNjAsNyArMjYwLDcgQEAgYm9vbCBHSUZJbWFnZURlY29kZXI6OmZyYW1lQ29tcGxldGUo
dW5zaWduZWQgZnJhbWVJbmRleCwgdW5zaWduZWQgZnJhbWVEdXJhdGlvbiwKICAgICBpZiAoIW1f
Y3VycmVudEJ1ZmZlclNhd0FscGhhKSB7CiAgICAgICAgIC8vIFRoZSB3aG9sZSBmcmFtZSB3YXMg
bm9uLXRyYW5zcGFyZW50LCBzbyBpdCdzIHBvc3NpYmxlIHRoYXQgdGhlIGVudGlyZQogICAgICAg
ICAvLyByZXN1bHRpbmcgYnVmZmVyIHdhcyBub24tdHJhbnNwYXJlbnQsIGFuZCB3ZSBjYW4gc2V0
SGFzQWxwaGEoZmFsc2UpLgotICAgICAgICBpZiAoYnVmZmVyLm9yaWdpbmFsRnJhbWVSZWN0KCku
Y29udGFpbnMoSW50UmVjdChJbnRQb2ludCgpLCBzY2FsZWRTaXplKCkpKSkKKyAgICAgICAgaWYg
KGJ1ZmZlci5waXhlbHMoKS0+cmVjdCgpLmNvbnRhaW5zKEludFJlY3QoSW50UG9pbnQoKSwgc2Nh
bGVkU2l6ZSgpKSkpCiAgICAgICAgICAgICBidWZmZXIuc2V0SGFzQWxwaGEoZmFsc2UpOwogICAg
ICAgICBlbHNlIGlmIChmcmFtZUluZGV4KSB7CiAgICAgICAgICAgICAvLyBUcmlja3kgY2FzZS4g
IFRoaXMgZnJhbWUgZG9lcyBub3QgaGF2ZSBhbHBoYSBvbmx5IGlmIGV2ZXJ5d2hlcmUKQEAgLTI4
Myw3ICsyODMsNyBAQCBib29sIEdJRkltYWdlRGVjb2Rlcjo6ZnJhbWVDb21wbGV0ZSh1bnNpZ25l
ZCBmcmFtZUluZGV4LCB1bnNpZ25lZCBmcmFtZUR1cmF0aW9uLAogICAgICAgICAgICAgLy8gVGhl
IG9ubHkgcmVtYWluaW5nIGNhc2UgaXMgYSBEaXNwb3NlT3ZlcndyaXRlQmdjb2xvciBmcmFtZS4g
IElmCiAgICAgICAgICAgICAvLyBpdCBoYWQgbm8gYWxwaGEsIGFuZCBpdHMgcmVjdCBpcyBjb250
YWluZWQgaW4gdGhlIGN1cnJlbnQgZnJhbWUncwogICAgICAgICAgICAgLy8gcmVjdCwgd2Uga25v
dyB0aGUgY3VycmVudCBmcmFtZSBoYXMgbm8gYWxwaGEuCi0gICAgICAgICAgICBpZiAoKHByZXZC
dWZmZXItPmRpc3Bvc2FsTWV0aG9kKCkgPT0gSW1hZ2VGcmFtZTo6RGlzcG9zZU92ZXJ3cml0ZUJn
Y29sb3IpICYmICFwcmV2QnVmZmVyLT5oYXNBbHBoYSgpICYmIGJ1ZmZlci5vcmlnaW5hbEZyYW1l
UmVjdCgpLmNvbnRhaW5zKHByZXZCdWZmZXItPm9yaWdpbmFsRnJhbWVSZWN0KCkpKQorICAgICAg
ICAgICAgaWYgKChwcmV2QnVmZmVyLT5kaXNwb3NhbE1ldGhvZCgpID09IEltYWdlRnJhbWU6OkRp
c3Bvc2VPdmVyd3JpdGVCZ2NvbG9yKSAmJiAhcHJldkJ1ZmZlci0+aGFzQWxwaGEoKSAmJiBidWZm
ZXIucGl4ZWxzKCktPnJlY3QoKS5jb250YWlucyhwcmV2QnVmZmVyLT5waXhlbHMoKS0+cmVjdCgp
KSkKICAgICAgICAgICAgICAgICBidWZmZXIuc2V0SGFzQWxwaGEoZmFsc2UpOwogICAgICAgICB9
CiAgICAgfQpAQCAtMzIxLDEwICszMjEsNyBAQCB2b2lkIEdJRkltYWdlRGVjb2Rlcjo6ZGVjb2Rl
KHVuc2lnbmVkIGhhbHRBdEZyYW1lLCBHSUZRdWVyeSBxdWVyeSkKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIGNvbnN0IHNpemVfdCBvbGRTaXplID0gbV9mcmFtZUJ1ZmZlckNhY2hlLnNp
emUoKTsKICAgICBtX2ZyYW1lQnVmZmVyQ2FjaGUucmVzaXplKG1fcmVhZGVyLT5pbWFnZXNDb3Vu
dCgpKTsKLSAgICBmb3IgKHNpemVfdCBpID0gb2xkU2l6ZTsgaSA8IG1fcmVhZGVyLT5pbWFnZXND
b3VudCgpOyArK2kpCi0gICAgICAgIG1fZnJhbWVCdWZmZXJDYWNoZVtpXS5zZXRQcmVtdWx0aXBs
eUFscGhhKG1fcHJlbXVsdGlwbHlBbHBoYSk7CiAKICAgICBpZiAocXVlcnkgPT0gR0lGRnJhbWVD
b3VudFF1ZXJ5KQogICAgICAgICByZXR1cm47CkBAIC0zNTMsMTUgKzM1MCwxMCBAQCBib29sIEdJ
RkltYWdlRGVjb2Rlcjo6aW5pdEZyYW1lQnVmZmVyKHVuc2lnbmVkIGZyYW1lSW5kZXgpCiAgICAg
ICAgIGZyYW1lUmVjdC5zZXRIZWlnaHQoc2l6ZSgpLmhlaWdodCgpIC0gZnJhbWVDb250ZXh0LT55
T2Zmc2V0KTsKIAogICAgIEltYWdlRnJhbWUqIGNvbnN0IGJ1ZmZlciA9ICZtX2ZyYW1lQnVmZmVy
Q2FjaGVbZnJhbWVJbmRleF07Ci0gICAgaW50IGxlZnQgPSB1cHBlckJvdW5kU2NhbGVkWChmcmFt
ZVJlY3QueCgpKTsKLSAgICBpbnQgcmlnaHQgPSBsb3dlckJvdW5kU2NhbGVkWChmcmFtZVJlY3Qu
bWF4WCgpLCBsZWZ0KTsKLSAgICBpbnQgdG9wID0gdXBwZXJCb3VuZFNjYWxlZFkoZnJhbWVSZWN0
LnkoKSk7Ci0gICAgaW50IGJvdHRvbSA9IGxvd2VyQm91bmRTY2FsZWRZKGZyYW1lUmVjdC5tYXhZ
KCksIHRvcCk7Ci0gICAgYnVmZmVyLT5zZXRPcmlnaW5hbEZyYW1lUmVjdChJbnRSZWN0KGxlZnQs
IHRvcCwgcmlnaHQgLSBsZWZ0LCBib3R0b20gLSB0b3ApKTsKIAogICAgIGlmICghZnJhbWVJbmRl
eCkgewogICAgICAgICAvLyBUaGlzIGlzIHRoZSBmaXJzdCBmcmFtZSwgc28gd2UncmUgbm90IHJl
bHlpbmcgb24gYW55IHByZXZpb3VzIGRhdGEuCi0gICAgICAgIGlmICghYnVmZmVyLT5zZXRTaXpl
KHNjYWxlZFNpemUoKS53aWR0aCgpLCBzY2FsZWRTaXplKCkuaGVpZ2h0KCkpKQorICAgICAgICBp
ZiAoIWJ1ZmZlci0+c2V0U2l6ZShzY2FsZWRTaXplKCksIG1fcHJlbXVsdGlwbHlBbHBoYSkpCiAg
ICAgICAgICAgICByZXR1cm4gc2V0RmFpbGVkKCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8g
VGhlIHN0YXJ0aW5nIHN0YXRlIGZvciB0aGlzIGZyYW1lIGRlcGVuZHMgb24gdGhlIHByZXZpb3Vz
IGZyYW1lJ3MKQEAgLTM4NywxMiArMzc5LDEyIEBAIGJvb2wgR0lGSW1hZ2VEZWNvZGVyOjppbml0
RnJhbWVCdWZmZXIodW5zaWduZWQgZnJhbWVJbmRleCkKICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgIC8vIFdlIHdhbnQgdG8gY2xlYXIgdGhlIHByZXZpb3VzIGZyYW1lIHRvIHRyYW5zcGFy
ZW50LCB3aXRob3V0CiAgICAgICAgICAgICAvLyBhZmZlY3RpbmcgcGl4ZWxzIGluIHRoZSBpbWFn
ZSBvdXRzaWRlIG9mIHRoZSBmcmFtZS4KLSAgICAgICAgICAgIGNvbnN0IEludFJlY3QmIHByZXZS
ZWN0ID0gcHJldkJ1ZmZlci0+b3JpZ2luYWxGcmFtZVJlY3QoKTsKKyAgICAgICAgICAgIGNvbnN0
IEludFJlY3QmIHByZXZSZWN0ID0gcHJldkJ1ZmZlci0+cGl4ZWxzKCktPnJlY3QoKTsKICAgICAg
ICAgICAgIGNvbnN0IEludFNpemUmIGJ1ZmZlclNpemUgPSBzY2FsZWRTaXplKCk7CiAgICAgICAg
ICAgICBpZiAoIWZyYW1lSW5kZXggfHwgcHJldlJlY3QuY29udGFpbnMoSW50UmVjdChJbnRQb2lu
dCgpLCBzY2FsZWRTaXplKCkpKSkgewogICAgICAgICAgICAgICAgIC8vIENsZWFyaW5nIHRoZSBm
aXJzdCBmcmFtZSwgb3IgYSBmcmFtZSB0aGUgc2l6ZSBvZiB0aGUgd2hvbGUKICAgICAgICAgICAg
ICAgICAvLyBpbWFnZSwgcmVzdWx0cyBpbiBhIGNvbXBsZXRlbHkgZW1wdHkgaW1hZ2UuCi0gICAg
ICAgICAgICAgICAgaWYgKCFidWZmZXItPnNldFNpemUoYnVmZmVyU2l6ZS53aWR0aCgpLCBidWZm
ZXJTaXplLmhlaWdodCgpKSkKKyAgICAgICAgICAgICAgICBpZiAoIWJ1ZmZlci0+c2V0U2l6ZShi
dWZmZXJTaXplLCBtX3ByZW11bHRpcGx5QWxwaGEpKQogICAgICAgICAgICAgICAgICAgICByZXR1
cm4gc2V0RmFpbGVkKCk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIC8v
IENvcHkgdGhlIHdob2xlIHByZXZpb3VzIGJ1ZmZlciwgdGhlbiBjbGVhciBqdXN0IGl0cyBmcmFt
ZS4KQEAgLTQwMiw2ICszOTQsMTIgQEAgYm9vbCBHSUZJbWFnZURlY29kZXI6OmluaXRGcmFtZUJ1
ZmZlcih1bnNpZ25lZCBmcmFtZUluZGV4KQogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAg
fQorICAgIAorICAgIGludCBsZWZ0ID0gdXBwZXJCb3VuZFNjYWxlZFgoZnJhbWVSZWN0LngoKSk7
CisgICAgaW50IHJpZ2h0ID0gbG93ZXJCb3VuZFNjYWxlZFgoZnJhbWVSZWN0Lm1heFgoKSwgbGVm
dCk7CisgICAgaW50IHRvcCA9IHVwcGVyQm91bmRTY2FsZWRZKGZyYW1lUmVjdC55KCkpOworICAg
IGludCBib3R0b20gPSBsb3dlckJvdW5kU2NhbGVkWShmcmFtZVJlY3QubWF4WSgpLCB0b3ApOwor
ICAgIGJ1ZmZlci0+cGl4ZWxzKCktPnNldFJlY3QoSW50UmVjdChsZWZ0LCB0b3AsIHJpZ2h0IC0g
bGVmdCwgYm90dG9tIC0gdG9wKSk7CiAKICAgICAvLyBVcGRhdGUgb3VyIHN0YXR1cyB0byBiZSBw
YXJ0aWFsbHkgY29tcGxldGUuCiAgICAgYnVmZmVyLT5zZXRTdGF0dXMoSW1hZ2VGcmFtZTo6RnJh
bWVQYXJ0aWFsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaAppbmRleCA5NWVjNmQwYTdiNjk2NjUy
YzcwOWI3YjYyZDQxYWE0ZjNhYjhmMWUwLi43YjhkODdjZmQ3MjFiMzA5MDcwYzQ5OTg4ZjM0NWM5
MDM1NGRhNWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5oCkBAIC00NCw3ICs0NCw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgU3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gImdpZiI7IH0KICAgICAgICAgdm9pZCBzZXREYXRhKFNoYXJl
ZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIG92ZXJyaWRlOwogICAgICAgICBi
b29sIGlzU2l6ZUF2YWlsYWJsZSgpIG92ZXJyaWRlOwotICAgICAgICBib29sIHNldFNpemUodW5z
aWduZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCkgb3ZlcnJpZGU7CisgICAgICAgIGJvb2wgc2V0
U2l6ZShjb25zdCBJbnRTaXplJikgb3ZlcnJpZGU7CiAgICAgICAgIHNpemVfdCBmcmFtZUNvdW50
KCkgb3ZlcnJpZGU7CiAgICAgICAgIGludCByZXBldGl0aW9uQ291bnQoKSBjb25zdCBvdmVycmlk
ZTsKICAgICAgICAgSW1hZ2VGcmFtZSogZnJhbWVCdWZmZXJBdEluZGV4KHNpemVfdCBpbmRleCkg
b3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmNwcAppbmRleCAwMGQyNTJjZWZiMDVhYTUx
Zjg0ZDhkZjk5MDIyOTBlZmQ3MTA0MjJmLi5hM2E1NDE1NTkwMmEzMTY0MWQ5MDc0NmFhYjE4N2I2
MzkxZDQyNjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5jcHAKQEAgLTQ0Nyw3ICs0NDcsNyBA
QCBib29sIEdJRkltYWdlUmVhZGVyOjpwYXJzZShzaXplX3QgZGF0YVBvc2l0aW9uLCBzaXplX3Qg
bGVuLCBib29sIHBhcnNlU2l6ZU9ubHkpCiAKICAgICAgICAgICAgIC8vIENBTExCQUNLOiBJbmZv
cm0gdGhlIGRlY29kZXJwbHVnaW4gb2Ygb3VyIHNpemUuCiAgICAgICAgICAgICAvLyBOb3RlOiBB
IHN1YnNlcXVlbnQgZnJhbWUgbWlnaHQgaGF2ZSBkaW1lbnNpb25zIGxhcmdlciB0aGFuIHRoZSAi
c2NyZWVuIiBkaW1lbnNpb25zLgotICAgICAgICAgICAgaWYgKG1fY2xpZW50ICYmICFtX2NsaWVu
dC0+c2V0U2l6ZShtX3NjcmVlbldpZHRoLCBtX3NjcmVlbkhlaWdodCkpCisgICAgICAgICAgICBp
ZiAobV9jbGllbnQgJiYgIW1fY2xpZW50LT5zZXRTaXplKEludFNpemUobV9zY3JlZW5XaWR0aCwg
bV9zY3JlZW5IZWlnaHQpKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAg
ICAgICAgIG1fc2NyZWVuQmdjb2xvciA9IGN1cnJlbnRDb21wb25lbnRbNV07CkBAIC02NjQsNyAr
NjY0LDcgQEAgYm9vbCBHSUZJbWFnZVJlYWRlcjo6cGFyc2Uoc2l6ZV90IGRhdGFQb3NpdGlvbiwg
c2l6ZV90IGxlbiwgYm9vbCBwYXJzZVNpemVPbmx5KQogICAgICAgICAgICAgICAgIHlPZmZzZXQg
PSAwOwogCiAgICAgICAgICAgICAgICAgLy8gQ0FMTEJBQ0s6IEluZm9ybSB0aGUgZGVjb2RlcnBs
dWdpbiBvZiBvdXIgc2l6ZS4KLSAgICAgICAgICAgICAgICBpZiAobV9jbGllbnQgJiYgIW1fY2xp
ZW50LT5zZXRTaXplKG1fc2NyZWVuV2lkdGgsIG1fc2NyZWVuSGVpZ2h0KSkKKyAgICAgICAgICAg
ICAgICBpZiAobV9jbGllbnQgJiYgIW1fY2xpZW50LT5zZXRTaXplKEludFNpemUobV9zY3JlZW5X
aWR0aCwgbV9zY3JlZW5IZWlnaHQpKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCmluZGV4IGE1OTIw
MWI1NmU1YjIyZTJhODUxYzBjOTkyZWE0YjFmODhjYzNiNGYuLjY2Y2YxOTE5NDM4YmMwM2MxMzkx
YmVlYTE2NDA3NTQxYzFhZjg2ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCkBAIC04
OCwyMSArODgsMjAgQEAgSW50U2l6ZSBJQ09JbWFnZURlY29kZXI6OmZyYW1lU2l6ZUF0SW5kZXgo
c2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsKQogICAgIHJldHVybiAoaW5kZXggJiYgKGlu
ZGV4IDwgbV9kaXJFbnRyaWVzLnNpemUoKSkpID8gbV9kaXJFbnRyaWVzW2luZGV4XS5tX3NpemUg
OiBzaXplKCk7CiB9CiAKLWJvb2wgSUNPSW1hZ2VEZWNvZGVyOjpzZXRTaXplKHVuc2lnbmVkIHdp
ZHRoLCB1bnNpZ25lZCBoZWlnaHQpCitib29sIElDT0ltYWdlRGVjb2Rlcjo6c2V0U2l6ZShjb25z
dCBJbnRTaXplJiBzaXplKQogewogICAgIC8vIFRoZSBzaXplIGNhbGN1bGF0ZWQgaW5zaWRlIHRo
ZSBCTVBJbWFnZVJlYWRlciBoYWQgYmV0dGVyIG1hdGNoIHRoZSBvbmUgaW4KICAgICAvLyB0aGUg
aWNvbiBkaXJlY3RvcnkuCi0gICAgcmV0dXJuIG1fZnJhbWVTaXplLmlzRW1wdHkoKSA/IEltYWdl
RGVjb2Rlcjo6c2V0U2l6ZSh3aWR0aCwgaGVpZ2h0KSA6ICgoSW50U2l6ZSh3aWR0aCwgaGVpZ2h0
KSA9PSBtX2ZyYW1lU2l6ZSkgfHwgc2V0RmFpbGVkKCkpOworICAgIHJldHVybiBtX2ZyYW1lU2l6
ZS5pc0VtcHR5KCkgPyBJbWFnZURlY29kZXI6OnNldFNpemUoc2l6ZSkgOiAoKHNpemUgPT0gbV9m
cmFtZVNpemUpIHx8IHNldEZhaWxlZCgpKTsKIH0KIAogc2l6ZV90IElDT0ltYWdlRGVjb2Rlcjo6
ZnJhbWVDb3VudCgpCiB7CiAgICAgZGVjb2RlKDAsIHRydWUpOwotICAgIGlmIChtX2ZyYW1lQnVm
ZmVyQ2FjaGUuaXNFbXB0eSgpKSB7CisKKyAgICBpZiAobV9mcmFtZUJ1ZmZlckNhY2hlLmlzRW1w
dHkoKSkKICAgICAgICAgbV9mcmFtZUJ1ZmZlckNhY2hlLnJlc2l6ZShtX2RpckVudHJpZXMuc2l6
ZSgpKTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2RpckVudHJpZXMuc2l6ZSgp
OyArK2kpCi0gICAgICAgICAgICBtX2ZyYW1lQnVmZmVyQ2FjaGVbaV0uc2V0UHJlbXVsdGlwbHlB
bHBoYShtX3ByZW11bHRpcGx5QWxwaGEpOwotICAgIH0KKwogICAgIC8vIENBVVRJT046IFdlIG11
c3Qgbm90IHJlc2l6ZSBtX2ZyYW1lQnVmZmVyQ2FjaGUgYWdhaW4gYWZ0ZXIgdGhpcywgYXMKICAg
ICAvLyBkZWNvZGVBdEluZGV4KCkgbWF5IGdpdmUgYSBCTVBJbWFnZVJlYWRlciBhIHBvaW50ZXIg
dG8gb25lIG9mIHRoZQogICAgIC8vIGVudHJpZXMuCkBAIC0yNzksNyArMjc4LDcgQEAgYm9vbCBJ
Q09JbWFnZURlY29kZXI6OnByb2Nlc3NEaXJlY3RvcnlFbnRyaWVzKCkKICAgICBjb25zdCBJY29u
RGlyZWN0b3J5RW50cnkmIGRpckVudHJ5ID0gbV9kaXJFbnRyaWVzLmZpcnN0KCk7CiAgICAgLy8g
VGVjaG5pY2FsbHksIHRoaXMgbmV4dCBjYWxsIHNob3VsZG4ndCBiZSBhYmxlIHRvIGZhaWwsIHNp
bmNlIHRoZSB3aWR0aAogICAgIC8vIGFuZCBoZWlnaHQgaGVyZSBhcmUgZWFjaCA8PSAyNTYsIGFu
ZCB8bV9mcmFtZVNpemV8IGlzIGVtcHR5LgotICAgIHJldHVybiBzZXRTaXplKGRpckVudHJ5Lm1f
c2l6ZS53aWR0aCgpLCBkaXJFbnRyeS5tX3NpemUuaGVpZ2h0KCkpOworICAgIHJldHVybiBzZXRT
aXplKGRpckVudHJ5Lm1fc2l6ZSk7CiB9CiAKIElDT0ltYWdlRGVjb2Rlcjo6SWNvbkRpcmVjdG9y
eUVudHJ5IElDT0ltYWdlRGVjb2Rlcjo6cmVhZERpcmVjdG9yeUVudHJ5KCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29k
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFn
ZURlY29kZXIuaAppbmRleCA1ODBjNjdhODgzYTQwYjZlNTQyMGY2NWFlMzQ0ODg0NTc0MTkzOGVj
Li5kMzNkMDU4YTE1OTYwN2RmODkzOWNlYTFjZDdhNmYzMTQ0YjcyMmUzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0lt
YWdlRGVjb2Rlci5oCkBAIC00OSw3ICs0OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgYm9vbCBpc1NpemVBdmFpbGFibGUoKSBvdmVycmlkZTsKICAgICAgICAgSW50U2l6ZSBzaXpl
KCkgb3ZlcnJpZGU7CiAgICAgICAgIEludFNpemUgZnJhbWVTaXplQXRJbmRleChzaXplX3QsIFN1
YnNhbXBsaW5nTGV2ZWwpIG92ZXJyaWRlOwotICAgICAgICBib29sIHNldFNpemUodW5zaWduZWQg
d2lkdGgsIHVuc2lnbmVkIGhlaWdodCkgb3ZlcnJpZGU7CisgICAgICAgIGJvb2wgc2V0U2l6ZShj
b25zdCBJbnRTaXplJikgb3ZlcnJpZGU7CiAgICAgICAgIHNpemVfdCBmcmFtZUNvdW50KCkgb3Zl
cnJpZGU7CiAgICAgICAgIEltYWdlRnJhbWUqIGZyYW1lQnVmZmVyQXRJbmRleChzaXplX3QpIG92
ZXJyaWRlOwogICAgICAgICAvLyBDQVVUSU9OOiBzZXRGYWlsZWQoKSBkZWxldGVzIGFsbCByZWFk
ZXJzIGFuZCBkZWNvZGVycy4gIEJlIGNhcmVmdWwgdG8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29k
ZXIuY3BwCmluZGV4IGVlNjZhYzE0ZDRiZTA3Y2E5YWZmYjJhM2FmZjg5ZWJmYTYyZmIxMmUuLjdl
M2RkODhmNWYyYjQxZjMzY2I3MDQ3MmQ4YWE2YTNjOTZjMDA0NDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVH
SW1hZ2VEZWNvZGVyLmNwcApAQCAtMTk2LDM2ICsxOTYsNiBAQCBzdGF0aWMgSW1hZ2VPcmllbnRh
dGlvbiByZWFkSW1hZ2VPcmllbnRhdGlvbihqcGVnX2RlY29tcHJlc3Nfc3RydWN0KiBpbmZvKQog
ICAgIHJldHVybiBJbWFnZU9yaWVudGF0aW9uKCk7CiB9CiAKLXN0YXRpYyBDb2xvclByb2ZpbGUg
cmVhZENvbG9yUHJvZmlsZShqcGVnX2RlY29tcHJlc3Nfc3RydWN0KiBpbmZvKQotewotI2lmIFVT
RShJQ0NKUEVHKQotICAgIEpPQ1RFVCogcHJvZmlsZTsKLSAgICB1bnNpZ25lZCBpbnQgcHJvZmls
ZUxlbmd0aDsKLQotICAgIGlmICghcmVhZF9pY2NfcHJvZmlsZShpbmZvLCAmcHJvZmlsZSwgJnBy
b2ZpbGVMZW5ndGgpKQotICAgICAgICByZXR1cm4gQ29sb3JQcm9maWxlKCk7Ci0KLSAgICAvLyBP
bmx5IGFjY2VwdCBSR0IgY29sb3IgcHJvZmlsZXMgZnJvbSBpbnB1dCBjbGFzcyBkZXZpY2VzLgot
ICAgIGJvb2wgaWdub3JlUHJvZmlsZSA9IGZhbHNlOwotICAgIGNoYXIqIHByb2ZpbGVEYXRhID0g
cmVpbnRlcnByZXRfY2FzdDxjaGFyKj4ocHJvZmlsZSk7Ci0gICAgaWYgKHByb2ZpbGVMZW5ndGgg
PCBJbWFnZURlY29kZXI6OmljY0NvbG9yUHJvZmlsZUhlYWRlckxlbmd0aCkKLSAgICAgICAgaWdu
b3JlUHJvZmlsZSA9IHRydWU7Ci0gICAgZWxzZSBpZiAoIUltYWdlRGVjb2Rlcjo6cmdiQ29sb3JQ
cm9maWxlKHByb2ZpbGVEYXRhLCBwcm9maWxlTGVuZ3RoKSkKLSAgICAgICAgaWdub3JlUHJvZmls
ZSA9IHRydWU7Ci0gICAgZWxzZSBpZiAoIUltYWdlRGVjb2Rlcjo6aW5wdXREZXZpY2VDb2xvclBy
b2ZpbGUocHJvZmlsZURhdGEsIHByb2ZpbGVMZW5ndGgpKQotICAgICAgICBpZ25vcmVQcm9maWxl
ID0gdHJ1ZTsKLQotICAgIENvbG9yUHJvZmlsZSBjb2xvclByb2ZpbGU7Ci0gICAgaWYgKCFpZ25v
cmVQcm9maWxlKQotICAgICAgICBjb2xvclByb2ZpbGUuYXBwZW5kKHByb2ZpbGVEYXRhLCBwcm9m
aWxlTGVuZ3RoKTsKLSAgICBmcmVlKHByb2ZpbGUpOwotICAgIHJldHVybiBjb2xvclByb2ZpbGU7
Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShpbmZvKTsKLSAgICByZXR1cm4gQ29sb3JQcm9maWxl
KCk7Ci0jZW5kaWYKLX0KLQogY2xhc3MgSlBFR0ltYWdlUmVhZGVyIHsKICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKQEAgLTM1Miw3ICszMjIsNyBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICBtX3N0YXRlID0gSlBFR19TVEFSVF9ERUNPTVBSRVNTOwogCiAgICAgICAgICAgICAv
LyBXZSBjYW4gZmlsbCBpbiB0aGUgc2l6ZSBub3cgdGhhdCB0aGUgaGVhZGVyIGlzIGF2YWlsYWJs
ZS4KLSAgICAgICAgICAgIGlmICghbV9kZWNvZGVyLT5zZXRTaXplKG1faW5mby5pbWFnZV93aWR0
aCwgbV9pbmZvLmltYWdlX2hlaWdodCkpCisgICAgICAgICAgICBpZiAoIW1fZGVjb2Rlci0+c2V0
U2l6ZShJbnRTaXplKG1faW5mby5pbWFnZV93aWR0aCwgbV9pbmZvLmltYWdlX2hlaWdodCkpKQog
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICAgICAgbV9kZWNvZGVyLT5z
ZXRPcmllbnRhdGlvbihyZWFkSW1hZ2VPcmllbnRhdGlvbihpbmZvKCkpKTsKQEAgLTM2MywxMyAr
MzMzLDYgQEAgcHVibGljOgogICAgICAgICAgICAgaWYgKG1fZGVjb2Rlci0+d2lsbERvd25TYW1w
bGUoKSAmJiB0dXJib1N3aXp6bGVkKG1faW5mby5vdXRfY29sb3Jfc3BhY2UpKQogICAgICAgICAg
ICAgICAgIG1faW5mby5vdXRfY29sb3Jfc3BhY2UgPSBKQ1NfUkdCOwogI2VuZGlmCi0gICAgICAg
ICAgICAvLyBBbGxvdyBjb2xvciBtYW5hZ2VtZW50IG9mIHRoZSBkZWNvZGVkIFJHQkEgcGl4ZWxz
IGlmIHBvc3NpYmxlLgotICAgICAgICAgICAgaWYgKCFtX2RlY29kZXItPmlnbm9yZXNHYW1tYUFu
ZENvbG9yUHJvZmlsZSgpKSB7Ci0gICAgICAgICAgICAgICAgQ29sb3JQcm9maWxlIHJnYklucHV0
RGV2aWNlQ29sb3JQcm9maWxlID0gcmVhZENvbG9yUHJvZmlsZShpbmZvKCkpOwotICAgICAgICAg
ICAgICAgIGlmICghcmdiSW5wdXREZXZpY2VDb2xvclByb2ZpbGUuaXNFbXB0eSgpKQotICAgICAg
ICAgICAgICAgICAgICBtX2RlY29kZXItPnNldENvbG9yUHJvZmlsZShyZ2JJbnB1dERldmljZUNv
bG9yUHJvZmlsZSk7Ci0gICAgICAgICAgICB9Ci0KICAgICAgICAgICAgIC8vIERvbid0IGFsbG9j
YXRlIGEgZ2lhbnQgYW5kIHN1cGVyZmx1b3VzIG1lbW9yeSBidWZmZXIgd2hlbiB0aGUKICAgICAg
ICAgICAgIC8vIGltYWdlIGlzIGEgc2VxdWVudGlhbCBKUEVHLgogICAgICAgICAgICAgbV9pbmZv
LmJ1ZmZlcmVkX2ltYWdlID0ganBlZ19oYXNfbXVsdGlwbGVfc2NhbnMoJm1faW5mbyk7CkBAIC01
NTYsOSArNTE5LDkgQEAgYm9vbCBKUEVHSW1hZ2VEZWNvZGVyOjppc1NpemVBdmFpbGFibGUoKQog
ICAgIHJldHVybiBJbWFnZURlY29kZXI6OmlzU2l6ZUF2YWlsYWJsZSgpOwogfQogCi1ib29sIEpQ
RUdJbWFnZURlY29kZXI6OnNldFNpemUodW5zaWduZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCkK
K2Jvb2wgSlBFR0ltYWdlRGVjb2Rlcjo6c2V0U2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQogewot
ICAgIGlmICghSW1hZ2VEZWNvZGVyOjpzZXRTaXplKHdpZHRoLCBoZWlnaHQpKQorICAgIGlmICgh
SW1hZ2VEZWNvZGVyOjpzZXRTaXplKHNpemUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAg
ICBwcmVwYXJlU2NhbGVEYXRhSWZOZWNlc3NhcnkoKTsKQEAgLTU3MCwxMCArNTMzLDggQEAgSW1h
Z2VGcmFtZSogSlBFR0ltYWdlRGVjb2Rlcjo6ZnJhbWVCdWZmZXJBdEluZGV4KHNpemVfdCBpbmRl
eCkKICAgICBpZiAoaW5kZXgpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgaWYgKG1fZnJhbWVC
dWZmZXJDYWNoZS5pc0VtcHR5KCkpIHsKKyAgICBpZiAobV9mcmFtZUJ1ZmZlckNhY2hlLmlzRW1w
dHkoKSkKICAgICAgICAgbV9mcmFtZUJ1ZmZlckNhY2hlLnJlc2l6ZSgxKTsKLSAgICAgICAgbV9m
cmFtZUJ1ZmZlckNhY2hlWzBdLnNldFByZW11bHRpcGx5QWxwaGEobV9wcmVtdWx0aXBseUFscGhh
KTsKLSAgICB9CiAKICAgICBJbWFnZUZyYW1lJiBmcmFtZSA9IG1fZnJhbWVCdWZmZXJDYWNoZVsw
XTsKICAgICBpZiAoZnJhbWUuc3RhdHVzKCkgIT0gSW1hZ2VGcmFtZTo6RnJhbWVDb21wbGV0ZSkK
QEAgLTU4OCw3ICs1NDksNyBAQCBib29sIEpQRUdJbWFnZURlY29kZXI6OnNldEZhaWxlZCgpCiB9
CiAKIHRlbXBsYXRlIDxKX0NPTE9SX1NQQUNFIGNvbG9yU3BhY2U+Ci12b2lkIHNldFBpeGVsKElt
YWdlRnJhbWUmIGJ1ZmZlciwgSW1hZ2VGcmFtZTo6UGl4ZWxEYXRhKiBjdXJyZW50QWRkcmVzcywg
SlNBTVBBUlJBWSBzYW1wbGVzLCBpbnQgY29sdW1uKQordm9pZCBzZXRQaXhlbChJbWFnZUZyYW1l
JiBidWZmZXIsIFJHQkEzMiogY3VycmVudEFkZHJlc3MsIEpTQU1QQVJSQVkgc2FtcGxlcywgaW50
IGNvbHVtbikKIHsKICAgICBKU0FNUExFKiBqc2FtcGxlID0gKnNhbXBsZXMgKyBjb2x1bW4gKiAo
Y29sb3JTcGFjZSA9PSBKQ1NfUkdCID8gMyA6IDQpOwogCkBAIC02MzEsNyArNTkyLDcgQEAgYm9v
bCBKUEVHSW1hZ2VEZWNvZGVyOjpvdXRwdXRTY2FubGluZXMoSW1hZ2VGcmFtZSYgYnVmZmVyKQog
ICAgICAgICBpZiAoZGVzdFkgPCAwKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAg
SW1hZ2VGcmFtZTo6UGl4ZWxEYXRhKiBjdXJyZW50QWRkcmVzcyA9IGJ1ZmZlci5nZXRBZGRyKDAs
IGRlc3RZKTsKKyAgICAgICAgUkdCQTMyKiBjdXJyZW50QWRkcmVzcyA9IGJ1ZmZlci5nZXRBZGRy
KDAsIGRlc3RZKTsKICAgICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCB3aWR0aDsgKyt4KSB7CiAg
ICAgICAgICAgICBzZXRQaXhlbDxjb2xvclNwYWNlPihidWZmZXIsIGN1cnJlbnRBZGRyZXNzLCBz
YW1wbGVzLCBpc1NjYWxlZCA/IG1fc2NhbGVkQ29sdW1uc1t4XSA6IHgpOwogICAgICAgICAgICAg
KytjdXJyZW50QWRkcmVzczsKQEAgLTY1NCwxNiArNjE1LDEyIEBAIGJvb2wgSlBFR0ltYWdlRGVj
b2Rlcjo6b3V0cHV0U2NhbmxpbmVzKCkKICAgICAvLyBJbml0aWFsaXplIHRoZSBmcmFtZWJ1ZmZl
ciBpZiBuZWVkZWQuCiAgICAgSW1hZ2VGcmFtZSYgYnVmZmVyID0gbV9mcmFtZUJ1ZmZlckNhY2hl
WzBdOwogICAgIGlmIChidWZmZXIuc3RhdHVzKCkgPT0gSW1hZ2VGcmFtZTo6RnJhbWVFbXB0eSkg
ewotICAgICAgICBpZiAoIWJ1ZmZlci5zZXRTaXplKHNjYWxlZFNpemUoKS53aWR0aCgpLCBzY2Fs
ZWRTaXplKCkuaGVpZ2h0KCkpKQorICAgICAgICBpZiAoIWJ1ZmZlci5zZXRTaXplKHNjYWxlZFNp
emUoKSwgbV9wcmVtdWx0aXBseUFscGhhKSkKICAgICAgICAgICAgIHJldHVybiBzZXRGYWlsZWQo
KTsKICAgICAgICAgYnVmZmVyLnNldFN0YXR1cyhJbWFnZUZyYW1lOjpGcmFtZVBhcnRpYWwpOwog
ICAgICAgICAvLyBUaGUgYnVmZmVyIGlzIHRyYW5zcGFyZW50IG91dHNpZGUgdGhlIGRlY29kZWQg
YXJlYSB3aGlsZSB0aGUgaW1hZ2UgaXMKICAgICAgICAgLy8gbG9hZGluZy4gVGhlIGNvbXBsZXRl
ZCBpbWFnZSB3aWxsIGJlIG1hcmtlZCBmdWxseSBvcGFxdWUgaW4ganBlZ0NvbXBsZXRlKCkuCiAg
ICAgICAgIGJ1ZmZlci5zZXRIYXNBbHBoYSh0cnVlKTsKLSAgICAgICAgYnVmZmVyLnNldENvbG9y
UHJvZmlsZShtX2NvbG9yUHJvZmlsZSk7Ci0KLSAgICAgICAgLy8gRm9yIEpQRUdzLCB0aGUgZnJh
bWUgYWx3YXlzIGZpbGxzIHRoZSBlbnRpcmUgaW1hZ2UuCi0gICAgICAgIGJ1ZmZlci5zZXRPcmln
aW5hbEZyYW1lUmVjdChJbnRSZWN0KEludFBvaW50KCksIHNpemUoKSkpOwogICAgIH0KIAogICAg
IGpwZWdfZGVjb21wcmVzc19zdHJ1Y3QqIGluZm8gPSBtX3JlYWRlci0+aW5mbygpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1h
Z2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVn
L0pQRUdJbWFnZURlY29kZXIuaAppbmRleCA2YzFmYzA0MjczMjIwMzc1YmM2YTI1ZWMxOThmOGM4
YTUxMDE0ODZjLi5mYzIzZmJkOTYzN2I1M2FlZTY2NTMzYjZhYWI0ZjdiMjY4ZGMwZWMzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJ
bWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9qcGVnL0pQRUdJbWFnZURlY29kZXIuaApAQCAtNTAsNyArNTAsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIC8vIEltYWdlRGVjb2RlcgogICAgICAgICBTdHJpbmcgZmlsZW5hbWVF
eHRlbnNpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAianBnIjsgfQogICAgICAgICBib29s
IGlzU2l6ZUF2YWlsYWJsZSgpIG92ZXJyaWRlOwotICAgICAgICBib29sIHNldFNpemUodW5zaWdu
ZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCkgb3ZlcnJpZGU7CisgICAgICAgIGJvb2wgc2V0U2l6
ZShjb25zdCBJbnRTaXplJikgb3ZlcnJpZGU7CiAgICAgICAgIEltYWdlRnJhbWUqIGZyYW1lQnVm
ZmVyQXRJbmRleChzaXplX3QgaW5kZXgpIG92ZXJyaWRlOwogICAgICAgICAvLyBDQVVUSU9OOiBz
ZXRGYWlsZWQoKSBkZWxldGVzIHxtX3JlYWRlcnwuICBCZSBjYXJlZnVsIHRvIGF2b2lkCiAgICAg
ICAgIC8vIGFjY2Vzc2luZyBkZWxldGVkIG1lbW9yeSwgZXNwZWNpYWxseSB3aGVuIGNhbGxpbmcg
dGhpcyBmcm9tIGluc2lkZQpAQCAtNjYsNyArNjYsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIGJvb2wgb3V0cHV0U2NhbmxpbmVzKCk7CiAgICAgICAgIHZvaWQganBlZ0NvbXBsZXRl
KCk7CiAKLSAgICAgICAgdm9pZCBzZXRDb2xvclByb2ZpbGUoY29uc3QgQ29sb3JQcm9maWxlJiBj
b2xvclByb2ZpbGUpIHsgbV9jb2xvclByb2ZpbGUgPSBjb2xvclByb2ZpbGU7IH0KICAgICAgICAg
dm9pZCBzZXRPcmllbnRhdGlvbihJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKSB7IG1fb3Jp
ZW50YXRpb24gPSBvcmllbnRhdGlvbjsgfQogCiAgICAgcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdl
RGVjb2Rlci5jcHAKaW5kZXggZTY0NGE3MTEwZWZjYjU0MGQ4OWNlMWJhODExMDBiYzQ4MjNiMThm
Mi4uMDMwZTgwZTE1MTQyYjc4M2E2NjNjNGZmODMyZTRjMjVmYzVmMDBmNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BO
R0ltYWdlRGVjb2Rlci5jcHAKQEAgLTIzNSw5ICsyMzUsOSBAQCBib29sIFBOR0ltYWdlRGVjb2Rl
cjo6aXNTaXplQXZhaWxhYmxlKCkKICAgICByZXR1cm4gSW1hZ2VEZWNvZGVyOjppc1NpemVBdmFp
bGFibGUoKTsKIH0KIAotYm9vbCBQTkdJbWFnZURlY29kZXI6OnNldFNpemUodW5zaWduZWQgd2lk
dGgsIHVuc2lnbmVkIGhlaWdodCkKK2Jvb2wgUE5HSW1hZ2VEZWNvZGVyOjpzZXRTaXplKGNvbnN0
IEludFNpemUmIHNpemUpCiB7Ci0gICAgaWYgKCFJbWFnZURlY29kZXI6OnNldFNpemUod2lkdGgs
IGhlaWdodCkpCisgICAgaWYgKCFJbWFnZURlY29kZXI6OnNldFNpemUoc2l6ZSkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAogICAgIHByZXBhcmVTY2FsZURhdGFJZk5lY2Vzc2FyeSgpOwpAQCAt
MjU3LDEwICsyNTcsOCBAQCBJbWFnZUZyYW1lKiBQTkdJbWFnZURlY29kZXI6OmZyYW1lQnVmZmVy
QXRJbmRleChzaXplX3QgaW5kZXgpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogI2VuZGlmCiAK
LSAgICBpZiAobV9mcmFtZUJ1ZmZlckNhY2hlLmlzRW1wdHkoKSkgeworICAgIGlmIChtX2ZyYW1l
QnVmZmVyQ2FjaGUuaXNFbXB0eSgpKQogICAgICAgICBtX2ZyYW1lQnVmZmVyQ2FjaGUucmVzaXpl
KDEpOwotICAgICAgICBtX2ZyYW1lQnVmZmVyQ2FjaGVbMF0uc2V0UHJlbXVsdGlwbHlBbHBoYSht
X3ByZW11bHRpcGx5QWxwaGEpOwotICAgIH0KIAogICAgIEltYWdlRnJhbWUmIGZyYW1lID0gbV9m
cmFtZUJ1ZmZlckNhY2hlW2luZGV4XTsKICAgICBpZiAoZnJhbWUuc3RhdHVzKCkgIT0gSW1hZ2VG
cmFtZTo6RnJhbWVDb21wbGV0ZSkKQEAgLTI3NiwzNyArMjc0LDYgQEAgYm9vbCBQTkdJbWFnZURl
Y29kZXI6OnNldEZhaWxlZCgpCiAgICAgcmV0dXJuIEltYWdlRGVjb2Rlcjo6c2V0RmFpbGVkKCk7
CiB9CiAKLXN0YXRpYyB2b2lkIHJlYWRDb2xvclByb2ZpbGUocG5nX3N0cnVjdHAgcG5nLCBwbmdf
aW5mb3AgaW5mbywgQ29sb3JQcm9maWxlJiBjb2xvclByb2ZpbGUpCi17Ci0gICAgQVNTRVJUKGNv
bG9yUHJvZmlsZS5pc0VtcHR5KCkpOwotCi0jaWZkZWYgUE5HX2lDQ1BfU1VQUE9SVEVECi0gICAg
Y2hhciogcHJvZmlsZU5hbWU7Ci0gICAgaW50IGNvbXByZXNzaW9uVHlwZTsKLSNpZiAoUE5HX0xJ
QlBOR19WRVIgPCAxMDUwMCkKLSAgICBwbmdfY2hhcnAgcHJvZmlsZTsKLSNlbHNlCi0gICAgcG5n
X2J5dGVwIHByb2ZpbGU7Ci0jZW5kaWYKLSAgICBwbmdfdWludF8zMiBwcm9maWxlTGVuZ3RoOwot
ICAgIGlmICghcG5nX2dldF9pQ0NQKHBuZywgaW5mbywgJnByb2ZpbGVOYW1lLCAmY29tcHJlc3Np
b25UeXBlLCAmcHJvZmlsZSwgJnByb2ZpbGVMZW5ndGgpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICAvLyBPbmx5IGFjY2VwdCBSR0IgY29sb3IgcHJvZmlsZXMgZnJvbSBpbnB1dCBjbGFzcyBkZXZp
Y2VzLgotICAgIGJvb2wgaWdub3JlUHJvZmlsZSA9IGZhbHNlOwotICAgIGNoYXIqIHByb2ZpbGVE
YXRhID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4ocHJvZmlsZSk7Ci0gICAgaWYgKHByb2ZpbGVM
ZW5ndGggPCBJbWFnZURlY29kZXI6OmljY0NvbG9yUHJvZmlsZUhlYWRlckxlbmd0aCkKLSAgICAg
ICAgaWdub3JlUHJvZmlsZSA9IHRydWU7Ci0gICAgZWxzZSBpZiAoIUltYWdlRGVjb2Rlcjo6cmdi
Q29sb3JQcm9maWxlKHByb2ZpbGVEYXRhLCBwcm9maWxlTGVuZ3RoKSkKLSAgICAgICAgaWdub3Jl
UHJvZmlsZSA9IHRydWU7Ci0gICAgZWxzZSBpZiAoIUltYWdlRGVjb2Rlcjo6aW5wdXREZXZpY2VD
b2xvclByb2ZpbGUocHJvZmlsZURhdGEsIHByb2ZpbGVMZW5ndGgpKQotICAgICAgICBpZ25vcmVQ
cm9maWxlID0gdHJ1ZTsKLQotICAgIGlmICghaWdub3JlUHJvZmlsZSkKLSAgICAgICAgY29sb3JQ
cm9maWxlLmFwcGVuZChwcm9maWxlRGF0YSwgcHJvZmlsZUxlbmd0aCk7Ci0jZW5kaWYKLX0KLQog
dm9pZCBQTkdJbWFnZURlY29kZXI6OmhlYWRlckF2YWlsYWJsZSgpCiB7CiAgICAgcG5nX3N0cnVj
dHAgcG5nID0gbV9yZWFkZXItPnBuZ1B0cigpOwpAQCAtMzI2LDcgKzI5Myw3IEBAIHZvaWQgUE5H
SW1hZ2VEZWNvZGVyOjpoZWFkZXJBdmFpbGFibGUoKQogICAgIC8vIHdpbGwgY2Vhc2UgdG8gZXhp
c3QuICBOb3RlIHRoYXQgd2UnbGwgc3RpbGwgcHJvcGVybHkgc2V0IHRoZSBmYWlsdXJlIGZsYWcK
ICAgICAvLyBpbiB0aGlzIGNhc2UgYXMgc29vbiBhcyB3ZSBsb25nam1wKCkuCiAgICAgbV9kb05v
dGhpbmdPbkZhaWx1cmUgPSB0cnVlOwotICAgIGJvb2wgcmVzdWx0ID0gc2V0U2l6ZSh3aWR0aCwg
aGVpZ2h0KTsKKyAgICBib29sIHJlc3VsdCA9IHNldFNpemUoSW50U2l6ZSh3aWR0aCwgaGVpZ2h0
KSk7CiAgICAgbV9kb05vdGhpbmdPbkZhaWx1cmUgPSBmYWxzZTsKICAgICBpZiAoIXJlc3VsdCkg
ewogICAgICAgICBsb25nam1wKEpNUEJVRihwbmcpLCAxKTsKQEAgLTQwNSwxNiArMzcyLDYgQEAg
dm9pZCBQTkdJbWFnZURlY29kZXI6OmhlYWRlckF2YWlsYWJsZSgpCiAgICAgaWYgKGNvbG9yVHlw
ZSA9PSBQTkdfQ09MT1JfVFlQRV9HUkFZIHx8IGNvbG9yVHlwZSA9PSBQTkdfQ09MT1JfVFlQRV9H
UkFZX0FMUEhBKQogICAgICAgICBwbmdfc2V0X2dyYXlfdG9fcmdiKHBuZyk7CiAKLSAgICBpZiAo
KGNvbG9yVHlwZSAmIFBOR19DT0xPUl9NQVNLX0NPTE9SKSAmJiAhbV9pZ25vcmVHYW1tYUFuZENv
bG9yUHJvZmlsZSkgewotICAgICAgICAvLyBXZSBvbmx5IHN1cHBvcnQgY29sb3IgcHJvZmlsZXMg
Zm9yIGNvbG9yIFBBTEVUVEUgYW5kIFJHQltBXSBQTkcuIFN1cHBvcnRpbmcKLSAgICAgICAgLy8g
Y29sb3IgcHJvZmlsZXMgZm9yIGdyYXktc2NhbGUgaW1hZ2VzIGlzIHNsaWdodGx5IHRyaWNreSwg
YXQgbGVhc3QgdXNpbmcgdGhlCi0gICAgICAgIC8vIENvcmVHcmFwaGljcyBJQ0MgbGlicmFyeSwg
YmVjYXVzZSB3ZSBleHBhbmQgZ3JheS1zY2FsZSBpbWFnZXMgdG8gUkdCIGJ1dCB3ZQotICAgICAg
ICAvLyBkbyBub3Qgc2ltaWxhcmx5IHRyYW5zZm9ybSB0aGUgY29sb3IgcHJvZmlsZS4gV2UnZCBl
aXRoZXIgbmVlZCB0byB0cmFuc2Zvcm0KLSAgICAgICAgLy8gdGhlIGNvbG9yIHByb2ZpbGUgb3Ig
d2UnZCBuZWVkIHRvIGRlY29kZSBpbnRvIGEgZ3JheS1zY2FsZSBpbWFnZSBidWZmZXIgYW5kCi0g
ICAgICAgIC8vIGhhbmQgdGhhdCB0byBDb3JlR3JhcGhpY3MuCi0gICAgICAgIHJlYWRDb2xvclBy
b2ZpbGUocG5nLCBpbmZvLCBtX2NvbG9yUHJvZmlsZSk7Ci0gICAgfQotCiAgICAgLy8gRGVhbCB3
aXRoIGdhbW1hIGFuZCBrZWVwIGl0IHVuZGVyIG91ciBjb250cm9sLgogICAgIGRvdWJsZSBnYW1t
YTsKICAgICBpZiAoIW1faWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGUgJiYgcG5nX2dldF9nQU1B
KHBuZywgaW5mbywgJmdhbW1hKSkgewpAQCAtNDUyLDE5ICs0MDksMTkgQEAgdm9pZCBQTkdJbWFn
ZURlY29kZXI6OmhlYWRlckF2YWlsYWJsZSgpCiAgICAgfQogfQogCi1zdGF0aWMgaW5saW5lIHZv
aWQgc2V0UGl4ZWxSR0IoSW1hZ2VGcmFtZTo6UGl4ZWxEYXRhKiBkZXN0LCBwbmdfYnl0ZXAgcGl4
ZWwpCitzdGF0aWMgaW5saW5lIHZvaWQgc2V0UGl4ZWxSR0IoUkdCQTMyKiBkZXN0LCBwbmdfYnl0
ZXAgcGl4ZWwpCiB7CiAgICAgKmRlc3QgPSAweEZGMDAwMDAwVSB8IHBpeGVsWzBdIDw8IDE2IHwg
cGl4ZWxbMV0gPDwgOCB8IHBpeGVsWzJdOwogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQgc2V0UGl4
ZWxSR0JBKEltYWdlRnJhbWU6OlBpeGVsRGF0YSogZGVzdCwgcG5nX2J5dGVwIHBpeGVsLCB1bnNp
Z25lZCBjaGFyJiBub25Ucml2aWFsQWxwaGFNYXNrKQorc3RhdGljIGlubGluZSB2b2lkIHNldFBp
eGVsUkdCQShSR0JBMzIqIGRlc3QsIHBuZ19ieXRlcCBwaXhlbCwgdW5zaWduZWQgY2hhciYgbm9u
VHJpdmlhbEFscGhhTWFzaykKIHsKICAgICB1bnNpZ25lZCBjaGFyIGEgPSBwaXhlbFszXTsKICAg
ICAqZGVzdCA9IGEgPDwgMjQgfCBwaXhlbFswXSA8PCAxNiB8IHBpeGVsWzFdIDw8IDggfCBwaXhl
bFsyXTsKICAgICBub25Ucml2aWFsQWxwaGFNYXNrIHw9ICgyNTUgLSBhKTsKIH0KIAotc3RhdGlj
IGlubGluZSB2b2lkIHNldFBpeGVsUHJlbXVsdGlwbGllZFJHQkEoSW1hZ2VGcmFtZTo6UGl4ZWxE
YXRhKiBkZXN0LCBwbmdfYnl0ZXAgcGl4ZWwsIHVuc2lnbmVkIGNoYXImIG5vblRyaXZpYWxBbHBo
YU1hc2spCitzdGF0aWMgaW5saW5lIHZvaWQgc2V0UGl4ZWxQcmVtdWx0aXBsaWVkUkdCQShSR0JB
MzIqIGRlc3QsIHBuZ19ieXRlcCBwaXhlbCwgdW5zaWduZWQgY2hhciYgbm9uVHJpdmlhbEFscGhh
TWFzaykKIHsKICAgICB1bnNpZ25lZCBjaGFyIGEgPSBwaXhlbFszXTsKICAgICB1bnNpZ25lZCBj
aGFyIHIgPSBmYXN0RGl2aWRlQnkyNTUocGl4ZWxbMF0gKiBhKTsKQEAgLTQ4OCw3ICs0NDUsNyBA
QCB2b2lkIFBOR0ltYWdlRGVjb2Rlcjo6cm93QXZhaWxhYmxlKHVuc2lnbmVkIGNoYXIqIHJvd0J1
ZmZlciwgdW5zaWduZWQgcm93SW5kZXgsCiAgICAgSW1hZ2VGcmFtZSYgYnVmZmVyID0gbV9mcmFt
ZUJ1ZmZlckNhY2hlW21fY3VycmVudEZyYW1lXTsKICAgICBpZiAoYnVmZmVyLnN0YXR1cygpID09
IEltYWdlRnJhbWU6OkZyYW1lRW1wdHkpIHsKICAgICAgICAgcG5nX3N0cnVjdHAgcG5nID0gbV9y
ZWFkZXItPnBuZ1B0cigpOwotICAgICAgICBpZiAoIWJ1ZmZlci5zZXRTaXplKHNjYWxlZFNpemUo
KS53aWR0aCgpLCBzY2FsZWRTaXplKCkuaGVpZ2h0KCkpKSB7CisgICAgICAgIGlmICghYnVmZmVy
LnNldFNpemUoc2NhbGVkU2l6ZSgpLCBtX3ByZW11bHRpcGx5QWxwaGEpKSB7CiAgICAgICAgICAg
ICBsb25nam1wKEpNUEJVRihwbmcpLCAxKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQpAQCAtNTA2LDE1ICs0NjMsMTEgQEAgdm9pZCBQTkdJbWFnZURlY29kZXI6OnJvd0F2YWlsYWJs
ZSh1bnNpZ25lZCBjaGFyKiByb3dCdWZmZXIsIHVuc2lnbmVkIHJvd0luZGV4LAogCiAgICAgICAg
IGJ1ZmZlci5zZXRTdGF0dXMoSW1hZ2VGcmFtZTo6RnJhbWVQYXJ0aWFsKTsKICAgICAgICAgYnVm
ZmVyLnNldEhhc0FscGhhKGZhbHNlKTsKLSAgICAgICAgYnVmZmVyLnNldENvbG9yUHJvZmlsZSht
X2NvbG9yUHJvZmlsZSk7CiAKICNpZiBFTkFCTEUoQVBORykKICAgICAgICAgaWYgKG1fY3VycmVu
dEZyYW1lKQogICAgICAgICAgICAgaW5pdEZyYW1lQnVmZmVyKG1fY3VycmVudEZyYW1lKTsKLSAg
ICAgICAgZWxzZQogI2VuZGlmCi0gICAgICAgIC8vIEZvciBQTkdzLCB0aGUgZnJhbWUgYWx3YXlz
IGZpbGxzIHRoZSBlbnRpcmUgaW1hZ2UuCi0gICAgICAgIGJ1ZmZlci5zZXRPcmlnaW5hbEZyYW1l
UmVjdChJbnRSZWN0KEludFBvaW50KCksIHNpemUoKSkpOwogICAgIH0KIAogICAgIC8qIGxpYnBu
ZyBjb21tZW50cyAoaGVyZSB0byBleHBsYWluIHdoYXQgZm9sbG93cykuCkBAIC01NzMsNyArNTI2
LDcgQEAgdm9pZCBQTkdJbWFnZURlY29kZXI6OnJvd0F2YWlsYWJsZSh1bnNpZ25lZCBjaGFyKiBy
b3dCdWZmZXIsIHVuc2lnbmVkIHJvd0luZGV4LAogICAgIH0KIAogICAgIC8vIFdyaXRlIHRoZSBk
ZWNvZGVkIHJvdyBwaXhlbHMgdG8gdGhlIGZyYW1lIGJ1ZmZlci4KLSAgICBJbWFnZUZyYW1lOjpQ
aXhlbERhdGEqIGFkZHJlc3MgPSBidWZmZXIuZ2V0QWRkcigwLCB5KTsKKyAgICBSR0JBMzIqIGFk
ZHJlc3MgPSBidWZmZXIuZ2V0QWRkcigwLCB5KTsKICAgICBpbnQgd2lkdGggPSBzY2FsZWRTaXpl
KCkud2lkdGgoKTsKICAgICB1bnNpZ25lZCBjaGFyIG5vblRyaXZpYWxBbHBoYU1hc2sgPSAwOwog
CkBAIC02NjMsOCArNjE2LDYgQEAgdm9pZCBQTkdJbWFnZURlY29kZXI6OnJlYWRDaHVua3MocG5n
X3Vua25vd25fY2h1bmtwIGNodW5rKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIG1f
ZnJhbWVCdWZmZXJDYWNoZS5yZXNpemUobV9mcmFtZUNvdW50KTsKLSAgICAgICAgZm9yIChhdXRv
JiBpbWFnZUZyYW1lIDogbV9mcmFtZUJ1ZmZlckNhY2hlKQotICAgICAgICAgICAgaW1hZ2VGcmFt
ZS5zZXRQcmVtdWx0aXBseUFscGhhKG1fcHJlbXVsdGlwbHlBbHBoYSk7CiAgICAgfSBlbHNlIGlm
ICghbWVtY21wKGNodW5rLT5uYW1lLCAiZmNUTCIsIDQpICYmIGNodW5rLT5zaXplID09IDI2KSB7
CiAgICAgICAgIGlmIChtX2hhc0luZm8gJiYgIW1faXNBbmltYXRlZCkKICAgICAgICAgICAgIHJl
dHVybjsKQEAgLTcwNiwxMCArNjU3LDggQEAgdm9pZCBQTkdJbWFnZURlY29kZXI6OnJlYWRDaHVu
a3MocG5nX3Vua25vd25fY2h1bmtwIGNodW5rKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAKLSAgICAgICAgaWYgKG1fZnJhbWVCdWZmZXJDYWNoZS5pc0VtcHR5KCkpIHsKKyAgICAg
ICAgaWYgKG1fZnJhbWVCdWZmZXJDYWNoZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICBtX2ZyYW1l
QnVmZmVyQ2FjaGUucmVzaXplKDEpOwotICAgICAgICAgICAgbV9mcmFtZUJ1ZmZlckNhY2hlWzBd
LnNldFByZW11bHRpcGx5QWxwaGEobV9wcmVtdWx0aXBseUFscGhhKTsKLSAgICAgICAgfQogCiAg
ICAgICAgIGlmIChtX2N1cnJlbnRGcmFtZSA8IG1fZnJhbWVCdWZmZXJDYWNoZS5zaXplKCkpIHsK
ICAgICAgICAgICAgIEltYWdlRnJhbWUmIGJ1ZmZlciA9IG1fZnJhbWVCdWZmZXJDYWNoZVttX2N1
cnJlbnRGcmFtZV07CkBAIC04MzQsMTEgKzc4Myw2IEBAIHZvaWQgUE5HSW1hZ2VEZWNvZGVyOjpp
bml0RnJhbWVCdWZmZXIoc2l6ZV90IGZyYW1lSW5kZXgpCiAgICAgICAgIGZyYW1lUmVjdC5zZXRI
ZWlnaHQoc2l6ZSgpLmhlaWdodCgpIC0gbV95T2Zmc2V0KTsKIAogICAgIEltYWdlRnJhbWUmIGJ1
ZmZlciA9IG1fZnJhbWVCdWZmZXJDYWNoZVtmcmFtZUluZGV4XTsKLSAgICBpbnQgbGVmdCA9IHVw
cGVyQm91bmRTY2FsZWRYKGZyYW1lUmVjdC54KCkpOwotICAgIGludCByaWdodCA9IGxvd2VyQm91
bmRTY2FsZWRYKGZyYW1lUmVjdC5tYXhYKCksIGxlZnQpOwotICAgIGludCB0b3AgPSB1cHBlckJv
dW5kU2NhbGVkWShmcmFtZVJlY3QueSgpKTsKLSAgICBpbnQgYm90dG9tID0gbG93ZXJCb3VuZFNj
YWxlZFkoZnJhbWVSZWN0Lm1heFkoKSwgdG9wKTsKLSAgICBidWZmZXIuc2V0T3JpZ2luYWxGcmFt
ZVJlY3QoSW50UmVjdChsZWZ0LCB0b3AsIHJpZ2h0IC0gbGVmdCwgYm90dG9tIC0gdG9wKSk7CiAK
ICAgICAvLyBUaGUgc3RhcnRpbmcgc3RhdGUgZm9yIHRoaXMgZnJhbWUgZGVwZW5kcyBvbiB0aGUg
cHJldmlvdXMgZnJhbWUncwogICAgIC8vIGRpc3Bvc2FsIG1ldGhvZC4KQEAgLTg2Miw3ICs4MDYs
NyBAQCB2b2lkIFBOR0ltYWdlRGVjb2Rlcjo6aW5pdEZyYW1lQnVmZmVyKHNpemVfdCBmcmFtZUlu
ZGV4KQogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIFdlIHdhbnQgdG8gY2xlYXIgdGhlIHByZXZp
b3VzIGZyYW1lIHRvIHRyYW5zcGFyZW50LCB3aXRob3V0CiAgICAgICAgIC8vIGFmZmVjdGluZyBw
aXhlbHMgaW4gdGhlIGltYWdlIG91dHNpZGUgb2YgdGhlIGZyYW1lLgotICAgICAgICBjb25zdCBJ
bnRSZWN0JiBwcmV2UmVjdCA9IHByZXZCdWZmZXItPm9yaWdpbmFsRnJhbWVSZWN0KCk7CisgICAg
ICAgIGNvbnN0IEludFJlY3QmIHByZXZSZWN0ID0gcHJldkJ1ZmZlci0+cGl4ZWxzKCktPnJlY3Qo
KTsKICAgICAgICAgaWYgKCFmcmFtZUluZGV4IHx8IHByZXZSZWN0LmNvbnRhaW5zKEludFJlY3Qo
SW50UG9pbnQoKSwgc2NhbGVkU2l6ZSgpKSkpIHsKICAgICAgICAgICAgIC8vIENsZWFyaW5nIHRo
ZSBmaXJzdCBmcmFtZSwgb3IgYSBmcmFtZSB0aGUgc2l6ZSBvZiB0aGUgd2hvbGUKICAgICAgICAg
ICAgIC8vIGltYWdlLCByZXN1bHRzIGluIGEgY29tcGxldGVseSBlbXB0eSBpbWFnZS4KQEAgLTg3
Myw2ICs4MTcsMTIgQEAgdm9pZCBQTkdJbWFnZURlY29kZXI6OmluaXRGcmFtZUJ1ZmZlcihzaXpl
X3QgZnJhbWVJbmRleCkKICAgICAgICAgICAgIGJ1ZmZlci56ZXJvRmlsbEZyYW1lUmVjdChwcmV2
UmVjdCk7CiAgICAgICAgIH0KICAgICB9CisgICAgCisgICAgaW50IGxlZnQgPSB1cHBlckJvdW5k
U2NhbGVkWChmcmFtZVJlY3QueCgpKTsKKyAgICBpbnQgcmlnaHQgPSBsb3dlckJvdW5kU2NhbGVk
WChmcmFtZVJlY3QubWF4WCgpLCBsZWZ0KTsKKyAgICBpbnQgdG9wID0gdXBwZXJCb3VuZFNjYWxl
ZFkoZnJhbWVSZWN0LnkoKSk7CisgICAgaW50IGJvdHRvbSA9IGxvd2VyQm91bmRTY2FsZWRZKGZy
YW1lUmVjdC5tYXhZKCksIHRvcCk7CisgICAgYnVmZmVyLnBpeGVscygpLT5zZXRSZWN0KEludFJl
Y3QobGVmdCwgdG9wLCByaWdodCAtIGxlZnQsIGJvdHRvbSAtIHRvcCkpOwogfQogCiB2b2lkIFBO
R0ltYWdlRGVjb2Rlcjo6ZnJhbWVDb21wbGV0ZSgpCkBAIC04ODYsNyArODM2LDcgQEAgdm9pZCBQ
TkdJbWFnZURlY29kZXI6OmZyYW1lQ29tcGxldGUoKQogICAgIHBuZ19ieXRlcCBpbnRlcmxhY2VC
dWZmZXIgPSBtX3JlYWRlci0+aW50ZXJsYWNlQnVmZmVyKCk7CiAKICAgICBpZiAobV9jdXJyZW50
RnJhbWUgJiYgaW50ZXJsYWNlQnVmZmVyKSB7Ci0gICAgICAgIGNvbnN0IEludFJlY3QmIHJlY3Qg
PSBidWZmZXIub3JpZ2luYWxGcmFtZVJlY3QoKTsKKyAgICAgICAgY29uc3QgSW50UmVjdCYgcmVj
dCA9IGJ1ZmZlci5waXhlbHMoKS0+cmVjdCgpOwogICAgICAgICBib29sIGhhc0FscGhhID0gbV9y
ZWFkZXItPmhhc0FscGhhKCk7CiAgICAgICAgIHVuc2lnbmVkIGNvbG9yQ2hhbm5lbHMgPSBoYXNB
bHBoYSA/IDQgOiAzOwogICAgICAgICBib29sIG5vblRyaXZpYWxBbHBoYSA9IGZhbHNlOwpAQCAt
ODk2LDcgKzg0Niw3IEBAIHZvaWQgUE5HSW1hZ2VEZWNvZGVyOjpmcmFtZUNvbXBsZXRlKCkKICNp
ZiBFTkFCTEUoSU1BR0VfREVDT0RFUl9ET1dOX1NBTVBMSU5HKQogICAgICAgICBmb3IgKGludCB5
ID0gMDsgeSA8IHJlY3QubWF4WSgpIC0gcmVjdC55KCk7ICsreSkgewogICAgICAgICAgICAgcG5n
X2J5dGVwIHJvdyA9IGludGVybGFjZUJ1ZmZlciArIChtX3NjYWxlZCA/IG1fc2NhbGVkUm93c1t5
XSA6IHkpICogY29sb3JDaGFubmVscyAqIHNpemUoKS53aWR0aCgpOwotICAgICAgICAgICAgSW1h
Z2VGcmFtZTo6UGl4ZWxEYXRhKiBhZGRyZXNzID0gYnVmZmVyLmdldEFkZHIocmVjdC54KCksIHkg
KyByZWN0LnkoKSk7CisgICAgICAgICAgICBSR0JBMzIqIGFkZHJlc3MgPSBidWZmZXIuZ2V0QWRk
cihyZWN0LngoKSwgeSArIHJlY3QueSgpKTsKICAgICAgICAgICAgIGZvciAoaW50IHggPSAwOyB4
IDwgcmVjdC5tYXhYKCkgLSByZWN0LngoKTsgKyt4KSB7CiAgICAgICAgICAgICAgICAgcG5nX2J5
dGVwIHBpeGVsID0gcm93ICsgKG1fc2NhbGVkID8gbV9zY2FsZWRDb2x1bW5zW3hdIDogeCkgKiBj
b2xvckNoYW5uZWxzOwogICAgICAgICAgICAgICAgIHVuc2lnbmVkIGFscGhhID0gaGFzQWxwaGEg
PyBwaXhlbFszXSA6IDI1NTsKQEAgLTkxMiw3ICs4NjIsNyBAQCB2b2lkIFBOR0ltYWdlRGVjb2Rl
cjo6ZnJhbWVDb21wbGV0ZSgpCiAgICAgICAgIHBuZ19ieXRlcCByb3cgPSBpbnRlcmxhY2VCdWZm
ZXI7CiAgICAgICAgIGZvciAoaW50IHkgPSByZWN0LnkoKTsgeSA8IHJlY3QubWF4WSgpOyArK3ks
IHJvdyArPSBjb2xvckNoYW5uZWxzICogc2l6ZSgpLndpZHRoKCkpIHsKICAgICAgICAgICAgIHBu
Z19ieXRlcCBwaXhlbCA9IHJvdzsKLSAgICAgICAgICAgIEltYWdlRnJhbWU6OlBpeGVsRGF0YSog
YWRkcmVzcyA9IGJ1ZmZlci5nZXRBZGRyKHJlY3QueCgpLCB5KTsKKyAgICAgICAgICAgIFJHQkEz
MiogYWRkcmVzcyA9IGJ1ZmZlci5nZXRBZGRyKHJlY3QueCgpLCB5KTsKICAgICAgICAgICAgIGZv
ciAoaW50IHggPSByZWN0LngoKTsgeCA8IHJlY3QubWF4WCgpOyArK3gsIHBpeGVsICs9IGNvbG9y
Q2hhbm5lbHMpIHsKICAgICAgICAgICAgICAgICB1bnNpZ25lZCBhbHBoYSA9IGhhc0FscGhhID8g
cGl4ZWxbM10gOiAyNTU7CiAgICAgICAgICAgICAgICAgbm9uVHJpdmlhbEFscGhhIHw9IGFscGhh
IDwgMjU1OwpAQCAtOTI1LDcgKzg3NSw3IEBAIHZvaWQgUE5HSW1hZ2VEZWNvZGVyOjpmcmFtZUNv
bXBsZXRlKCkKICNlbmRpZgogCiAgICAgICAgIGlmICghbm9uVHJpdmlhbEFscGhhKSB7Ci0gICAg
ICAgICAgICBpZiAoYnVmZmVyLm9yaWdpbmFsRnJhbWVSZWN0KCkuY29udGFpbnMoSW50UmVjdChJ
bnRQb2ludCgpLCBzY2FsZWRTaXplKCkpKSkKKyAgICAgICAgICAgIGlmIChidWZmZXIucGl4ZWxz
KCktPnJlY3QoKS5jb250YWlucyhJbnRSZWN0KEludFBvaW50KCksIHNjYWxlZFNpemUoKSkpKQog
ICAgICAgICAgICAgICAgIGJ1ZmZlci5zZXRIYXNBbHBoYShmYWxzZSk7CiAgICAgICAgICAgICBl
bHNlIHsKICAgICAgICAgICAgICAgICBzaXplX3QgZnJhbWVJbmRleCA9IG1fY3VycmVudEZyYW1l
OwpAQCAtOTMzLDcgKzg4Myw3IEBAIHZvaWQgUE5HSW1hZ2VEZWNvZGVyOjpmcmFtZUNvbXBsZXRl
KCkKICAgICAgICAgICAgICAgICB3aGlsZSAoZnJhbWVJbmRleCAmJiAocHJldkJ1ZmZlci0+ZGlz
cG9zYWxNZXRob2QoKSA9PSBJbWFnZUZyYW1lOjpEaXNwb3NlT3ZlcndyaXRlUHJldmlvdXMpKQog
ICAgICAgICAgICAgICAgICAgICBwcmV2QnVmZmVyID0gJm1fZnJhbWVCdWZmZXJDYWNoZVstLWZy
YW1lSW5kZXhdOwogICAgICAgICAgICAgICAgIGlmICgocHJldkJ1ZmZlci0+ZGlzcG9zYWxNZXRo
b2QoKSA9PSBJbWFnZUZyYW1lOjpEaXNwb3NlT3ZlcndyaXRlQmdjb2xvcikKLSAgICAgICAgICAg
ICAgICAgICAgJiYgIXByZXZCdWZmZXItPmhhc0FscGhhKCkgJiYgYnVmZmVyLm9yaWdpbmFsRnJh
bWVSZWN0KCkuY29udGFpbnMocHJldkJ1ZmZlci0+b3JpZ2luYWxGcmFtZVJlY3QoKSkpCisgICAg
ICAgICAgICAgICAgICAgICYmICFwcmV2QnVmZmVyLT5oYXNBbHBoYSgpICYmIGJ1ZmZlci5waXhl
bHMoKS0+cmVjdCgpLmNvbnRhaW5zKHByZXZCdWZmZXItPnBpeGVscygpLT5yZWN0KCkpKQogICAg
ICAgICAgICAgICAgICAgICBidWZmZXIuc2V0SGFzQWxwaGEoZmFsc2UpOwogICAgICAgICAgICAg
fQogICAgICAgICB9IGVsc2UgaWYgKCFtX2JsZW5kICYmICFidWZmZXIuaGFzQWxwaGEoKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJ
bWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3Bu
Zy9QTkdJbWFnZURlY29kZXIuaAppbmRleCAwNWZjNzRiNmRlMjE0ZDA0MTRhODJiNDE4NjkzNzc2
MmQxYTVlNTViLi45ODc0MjQ2MTkwODhkZTE3ZmNkNjNkYzg2ZjViOTUxNzg3Y2I0ZGViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1h
Z2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
cG5nL1BOR0ltYWdlRGVjb2Rlci5oCkBAIC00OCw3ICs0OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgaW50IHJlcGV0aXRpb25Db3VudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IG1fcGxheUNvdW50LTE7IH0KICNlbmRpZgogICAgICAgICBib29sIGlzU2l6ZUF2YWlsYWJsZSgp
IG92ZXJyaWRlOwotICAgICAgICBib29sIHNldFNpemUodW5zaWduZWQgd2lkdGgsIHVuc2lnbmVk
IGhlaWdodCkgb3ZlcnJpZGU7CisgICAgICAgIGJvb2wgc2V0U2l6ZShjb25zdCBJbnRTaXplJikg
b3ZlcnJpZGU7CiAgICAgICAgIEltYWdlRnJhbWUqIGZyYW1lQnVmZmVyQXRJbmRleChzaXplX3Qg
aW5kZXgpIG92ZXJyaWRlOwogICAgICAgICAvLyBDQVVUSU9OOiBzZXRGYWlsZWQoKSBkZWxldGVz
IHxtX3JlYWRlcnwuICBCZSBjYXJlZnVsIHRvIGF2b2lkCiAgICAgICAgIC8vIGFjY2Vzc2luZyBk
ZWxldGVkIG1lbW9yeSwgZXNwZWNpYWxseSB3aGVuIGNhbGxpbmcgdGhpcyBmcm9tIGluc2lkZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9X
RUJQSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAKaW5kZXggMTI0YTFiMmYxOTk3ZmU2NzhjNjFi
NTJmMzA1OGRiNGQ2Yjg4Njc5YS4uYTM1YTE5YTkwYjVjYTM5N2U4ZmI3MDIxMDE3ZTg5NzVmYmUz
NGM0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
d2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwCkBAIC03OCwxMCArNzgsOCBA
QCBJbWFnZUZyYW1lKiBXRUJQSW1hZ2VEZWNvZGVyOjpmcmFtZUJ1ZmZlckF0SW5kZXgoc2l6ZV90
IGluZGV4KQogICAgIGlmIChpbmRleCkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBpZiAobV9m
cmFtZUJ1ZmZlckNhY2hlLmlzRW1wdHkoKSkgeworICAgIGlmIChtX2ZyYW1lQnVmZmVyQ2FjaGUu
aXNFbXB0eSgpKQogICAgICAgICBtX2ZyYW1lQnVmZmVyQ2FjaGUucmVzaXplKDEpOwotICAgICAg
ICBtX2ZyYW1lQnVmZmVyQ2FjaGVbMF0uc2V0UHJlbXVsdGlwbHlBbHBoYShtX3ByZW11bHRpcGx5
QWxwaGEpOwotICAgIH0KIAogICAgIEltYWdlRnJhbWUmIGZyYW1lID0gbV9mcmFtZUJ1ZmZlckNh
Y2hlWzBdOwogICAgIGlmIChmcmFtZS5zdGF0dXMoKSAhPSBJbWFnZUZyYW1lOjpGcmFtZUNvbXBs
ZXRlKQpAQCAtMTE1LDcgKzExMyw3IEBAIGJvb2wgV0VCUEltYWdlRGVjb2Rlcjo6ZGVjb2RlKGJv
b2wgb25seVNpemUpCiAgICAgICAgICAgICByZXR1cm4gc2V0RmFpbGVkKCk7CiAgICAgICAgIG1f
aGFzQWxwaGEgPSBmYWxzZTsKICNlbmRpZgotICAgICAgICBpZiAoIXNldFNpemUod2lkdGgsIGhl
aWdodCkpCisgICAgICAgIGlmICghc2V0U2l6ZShJbnRTaXplKHdpZHRoLCBoZWlnaHQpKSkKICAg
ICAgICAgICAgIHJldHVybiBzZXRGYWlsZWQoKTsKICAgICB9CiAKQEAgLTEyOCwxOCArMTI2LDE3
IEBAIGJvb2wgV0VCUEltYWdlRGVjb2Rlcjo6ZGVjb2RlKGJvb2wgb25seVNpemUpCiAgICAgQVNT
RVJUKGJ1ZmZlci5zdGF0dXMoKSAhPSBJbWFnZUZyYW1lOjpGcmFtZUNvbXBsZXRlKTsKIAogICAg
IGlmIChidWZmZXIuc3RhdHVzKCkgPT0gSW1hZ2VGcmFtZTo6RnJhbWVFbXB0eSkgewotICAgICAg
ICBpZiAoIWJ1ZmZlci5zZXRTaXplKHNpemUoKS53aWR0aCgpLCBzaXplKCkuaGVpZ2h0KCkpKQor
ICAgICAgICBpZiAoIWJ1ZmZlci5zZXRTaXplKHNpemUoKSwgbV9wcmVtdWx0aXBseUFscGhhKSkK
ICAgICAgICAgICAgIHJldHVybiBzZXRGYWlsZWQoKTsKICAgICAgICAgYnVmZmVyLnNldFN0YXR1
cyhJbWFnZUZyYW1lOjpGcmFtZVBhcnRpYWwpOwogICAgICAgICBidWZmZXIuc2V0SGFzQWxwaGEo
bV9oYXNBbHBoYSk7Ci0gICAgICAgIGJ1ZmZlci5zZXRPcmlnaW5hbEZyYW1lUmVjdChJbnRSZWN0
KEludFBvaW50KCksIHNpemUoKSkpOwogICAgIH0KIAogICAgIGlmICghbV9kZWNvZGVyKSB7CiAg
ICAgICAgIFdFQlBfQ1NQX01PREUgbW9kZSA9IG91dHB1dE1vZGUobV9oYXNBbHBoYSk7CiAgICAg
ICAgIGlmICghbV9wcmVtdWx0aXBseUFscGhhKQogICAgICAgICAgICAgbW9kZSA9IG91dHB1dE1v
ZGUoZmFsc2UpOwotICAgICAgICBpbnQgcm93U3RyaWRlID0gc2l6ZSgpLndpZHRoKCkgKiBzaXpl
b2YoSW1hZ2VGcmFtZTo6UGl4ZWxEYXRhKTsKKyAgICAgICAgaW50IHJvd1N0cmlkZSA9IHNpemUo
KS53aWR0aCgpICogc2l6ZW9mKFJHQkEzMik7CiAgICAgICAgIHVpbnQ4X3QqIG91dHB1dCA9IHJl
aW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGJ1ZmZlci5nZXRBZGRyKDAsIDApKTsKICAgICAgICAg
aW50IG91dHB1dFNpemUgPSBzaXplKCkuaGVpZ2h0KCkgKiByb3dTdHJpZGU7CiAgICAgICAgIG1f
ZGVjb2RlciA9IFdlYlBJTmV3UkdCKG1vZGUsIG91dHB1dCwgb3V0cHV0U2l6ZSwgcm93U3RyaWRl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9N
b2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5tbQppbmRleCAyMTZjZDA5
M2YyNjQ2N2NiYTg4YTQzZjY5M2FiZjRjZjUxZGQxYTRkLi5kMTE0NTRiMDVlZjg4OTkzYTYyODkz
ODk2YmMwYzExNzI4YzVlZDUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNl
TWFjLm1tCkBAIC04Nyw3ICs4Nyw3IEBAIHZvaWQgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWM6
OnVwZGF0ZVBsYXRmb3JtTGF5ZXIoKSBjb25zdAogICAgICAgICBpZiAoIWltYWdlKQogICAgICAg
ICAgICAgYnJlYWs7CiAKLSAgICAgICAgbV9wcmV2aWV3SW1hZ2UgPSBpbWFnZS0+Z2V0Q0dJbWFn
ZVJlZigpOworICAgICAgICBtX3ByZXZpZXdJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZSgpOwog
ICAgICAgICBpZiAoIW1fcHJldmlld0ltYWdlKQogICAgICAgICAgICAgYnJlYWs7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VDR1dpbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ0dXaW4uY3BwCmluZGV4IDM2Y2Q2
NTE2ZTgwZjE3NDhiZmVhYjc3YTkzMDI3MWMxMjFkZTgwMTkuLjRiNGUzNzc5ZTk2Zjc4YzY1NDBh
NTNjNDQ3OGMzYmZkOTM1ZjUzZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9EcmFnSW1hZ2VDR1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L0RyYWdJbWFnZUNHV2luLmNwcApAQCAtMTM2LDkgKzEzNiw5IEBAIERyYWdJbWFnZVJlZiBjcmVh
dGVEcmFnSW1hZ2VGcm9tSW1hZ2UoSW1hZ2UqIGltZywgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0
aW9uKQogICAgIENHQ29udGV4dFNjYWxlQ1RNKGRyYXdDb250ZXh0LCAxLCAtMSk7CiAgICAgQ0dD
b250ZXh0U2V0RmlsbENvbG9yKGRyYXdDb250ZXh0LCB3aGl0ZSk7CiAgICAgQ0dDb250ZXh0Rmls
bFJlY3QoZHJhd0NvbnRleHQsIHJlY3QpOwotICAgIGlmIChhdXRvIHNyY0ltYWdlID0gaW1nLT5n
ZXRDR0ltYWdlUmVmKCkpIHsKKyAgICBpZiAoYXV0byBzcmNJbWFnZSA9IGltZy0+bmF0aXZlSW1h
Z2UoKSkgewogICAgICAgICBDR0NvbnRleHRTZXRCbGVuZE1vZGUoZHJhd0NvbnRleHQsIGtDR0Js
ZW5kTW9kZU5vcm1hbCk7Ci0gICAgICAgIENHQ29udGV4dERyYXdJbWFnZShkcmF3Q29udGV4dCwg
cmVjdCwgc3JjSW1hZ2UpOworICAgICAgICBDR0NvbnRleHREcmF3SW1hZ2UoZHJhd0NvbnRleHQs
IHJlY3QsIHNyY0ltYWdlLmdldCgpKTsKICAgICB9CiAgICAgQ0dDb250ZXh0UmVsZWFzZShkcmF3
Q29udGV4dCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViQ2FjaGUu
bW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYkNhY2hlLm1tCmluZGV4IGI2NTlkNmRiZjlh
ZDY5OTljM2FjOTYyZGU5NTE1NzgwOTdlMWYzYjEuLjdjNWVkMjEwZGRiMmEzMmE3NjY2NzRjMTIw
ZDk5NGMyZmE0N2U3ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViQ2Fj
aGUubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJDYWNoZS5tbQpAQCAtMjA0LDcg
KzIwNCw3IEBAICsgKENHSW1hZ2VSZWYpaW1hZ2VGb3JVUkw6KE5TVVJMICopdXJsCiAgICAgV2Vi
Q29yZTo6Q2FjaGVkSW1hZ2UmIGNhY2hlZEltYWdlID0gZG93bmNhc3Q8V2ViQ29yZTo6Q2FjaGVk
SW1hZ2U+KCpjYWNoZWRSZXNvdXJjZSk7CiAgICAgaWYgKCFjYWNoZWRJbWFnZS5oYXNJbWFnZSgp
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gY2FjaGVkSW1hZ2UuaW1hZ2Uo
KS0+Z2V0Q0dJbWFnZVJlZigpOworICAgIHJldHVybiBjYWNoZWRJbWFnZS5pbWFnZSgpLT5uYXRp
dmVJbWFnZSgpLmdldCgpOwogfQogCiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2NnL1dLSWNvbkRhdGFiYXNlQ0cuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2NnL1dLSWNvbkRhdGFiYXNlQ0cuY3Bw
CmluZGV4IDBmNmRlN2ExNDZhNjExYTUyYWExZTUzOTAxOWZhNmMxYzQ2NzI1YWUuLjMwNTYzMzZj
YjY2ZmU0YWYxOGJkYzUyOWFjYTJmOGZjODgxZGZlNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9jZy9XS0ljb25EYXRhYmFzZUNHLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvY2cvV0tJY29uRGF0YWJhc2VDRy5jcHAKQEAgLTM3LDEy
ICszNywyMyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIENHSW1hZ2VSZWYgV0tJY29uRGF0
YWJhc2VUcnlHZXRDR0ltYWdlRm9yVVJMKFdLSWNvbkRhdGFiYXNlUmVmIGljb25EYXRhYmFzZVJl
ZiwgV0tVUkxSZWYgdXJsUmVmLCBXS1NpemUgc2l6ZSkKIHsKICAgICBJbWFnZSogaW1hZ2UgPSB0
b0ltcGwoaWNvbkRhdGFiYXNlUmVmKS0+aW1hZ2VGb3JQYWdlVVJMKHRvV1RGU3RyaW5nKHVybFJl
ZikpOwotICAgIHJldHVybiBpbWFnZSA/IGltYWdlLT5nZXRGaXJzdENHSW1hZ2VSZWZPZlNpemUo
SW50U2l6ZShzdGF0aWNfY2FzdDxpbnQ+KHNpemUud2lkdGgpLCBzdGF0aWNfY2FzdDxpbnQ+KHNp
emUuaGVpZ2h0KSkpIDogMDsKKyAgICByZXR1cm4gaW1hZ2UgPyBpbWFnZS0+bmF0aXZlSW1hZ2VP
ZlNpemUoSW50U2l6ZShzdGF0aWNfY2FzdDxpbnQ+KHNpemUud2lkdGgpLCBzdGF0aWNfY2FzdDxp
bnQ+KHNpemUuaGVpZ2h0KSkpLmdldCgpIDogbnVsbHB0cjsKIH0KIAogQ0ZBcnJheVJlZiBXS0lj
b25EYXRhYmFzZVRyeUNvcHlDR0ltYWdlQXJyYXlGb3JVUkwoV0tJY29uRGF0YWJhc2VSZWYgaWNv
bkRhdGFiYXNlUmVmLCBXS1VSTFJlZiB1cmxSZWYpCiB7CiAgICAgSW1hZ2UqIGltYWdlID0gdG9J
bXBsKGljb25EYXRhYmFzZVJlZiktPmltYWdlRm9yUGFnZVVSTCh0b1dURlN0cmluZyh1cmxSZWYp
KTsKLSAgICByZXR1cm4gaW1hZ2UgPyBpbWFnZS0+Z2V0Q0dJbWFnZUFycmF5KCkubGVha1JlZigp
IDogMDsKKyAgICBpZiAoIWltYWdlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1
dG8gbmF0aXZlSW1hZ2VzID0gaW1hZ2UtPmZyYW1lc05hdGl2ZUltYWdlcygpOworICAgIGlmICgh
bmF0aXZlSW1hZ2VzLnNpemUoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgCisgICAg
Q0ZNdXRhYmxlQXJyYXlSZWYgYXJyYXkgPSBDRkFycmF5Q3JlYXRlTXV0YWJsZShudWxscHRyLCBu
YXRpdmVJbWFnZXMuc2l6ZSgpLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKTsKKyAgICBmb3IgKGF1
dG8gbmF0aXZlSW1hZ2UgOiBuYXRpdmVJbWFnZXMpCisgICAgICAgIENGQXJyYXlBcHBlbmRWYWx1
ZShhcnJheSwgbmF0aXZlSW1hZ2UuZ2V0KCkpOworICAgIAorICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxDRkFycmF5UmVmPihDRlJldGFpbihhcnJheSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4
IGRjNzk4M2FiOTg4YzJkMDRhMTczMGVlMTM3MzAzYzI0NDE2MTUxOTcuLmZiYzNlNWQ0YzU0MzAx
Y2U5MjE3YTQwZjhkMDhiZDU4MzUyNzg3YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC00MDcxLDcg
KzQwNzEsNyBAQCAtIChVSUltYWdlICopX3ByZXNlbnRhdGlvblNuYXBzaG90Rm9yUHJldmlld0l0
ZW1Db250cm9sbGVyOihVSVByZXZpZXdJdGVtQ29udHJvbAogewogICAgIGlmICghX3Bvc2l0aW9u
SW5mb3JtYXRpb24ubGlua0luZGljYXRvci5jb250ZW50SW1hZ2UpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwotICAgIHJldHVybiBbW1tVSUltYWdlIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6X3Bv
c2l0aW9uSW5mb3JtYXRpb24ubGlua0luZGljYXRvci5jb250ZW50SW1hZ2UtPmdldENHSW1hZ2VS
ZWYoKV0gYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBbW1tVSUltYWdlIGFsbG9jXSBpbml0V2l0
aENHSW1hZ2U6X3Bvc2l0aW9uSW5mb3JtYXRpb24ubGlua0luZGljYXRvci5jb250ZW50SW1hZ2Ut
Pm5hdGl2ZUltYWdlKCkuZ2V0KCldIGF1dG9yZWxlYXNlXTsKIH0KIAogLSAoTlNBcnJheSAqKV9w
cmVzZW50YXRpb25SZWN0c0ZvclByZXZpZXdJdGVtQ29udHJvbGxlcjooVUlQcmV2aWV3SXRlbUNv
bnRyb2xsZXIgKiljb250cm9sbGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggOWEzM2Y3Y2M3ZGM3YzdkNzJmOWRhNzQzMDk4Yjdk
YmNhODI0MDljZi4uYTUzMjUxMDY3OGI5ZjUzNTE0NThhMzhhOWY0MjMzNzQ3ZDAzNWY1YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApA
QCAtMTcyNyw2OSArMTcyNyw2IEBAIHZvaWQgUGx1Z2luVmlldzo6d2luZG93ZWRQbHVnaW5WaXNp
YmlsaXR5RGlkQ2hhbmdlKGJvb2wgaXNWaXNpYmxlLCB1aW50NjRfdCB3aW5kCiB9CiAjZW5kaWYK
IAotI2lmIFBMQVRGT1JNKENPQ09BKQotc3RhdGljIGJvb2wgaXNBbG1vc3RTb2xpZENvbG9yKEJp
dG1hcEltYWdlKiBiaXRtYXApCi17Ci0gICAgQ0dJbWFnZVJlZiBpbWFnZSA9IGJpdG1hcC0+Z2V0
Q0dJbWFnZVJlZigpOwotICAgIEFTU0VSVChDR0ltYWdlR2V0Qml0c1BlckNvbXBvbmVudChpbWFn
ZSkgPT0gOCk7Ci0KLSAgICBDR0JpdG1hcEluZm8gaW1hZ2VJbmZvID0gQ0dJbWFnZUdldEJpdG1h
cEluZm8oaW1hZ2UpOwotICAgIGlmICghKGltYWdlSW5mbyAmIGtDR0JpdG1hcEJ5dGVPcmRlcjMy
TGl0dGxlKSB8fCAoaW1hZ2VJbmZvICYga0NHQml0bWFwQWxwaGFJbmZvTWFzaykgIT0ga0NHSW1h
Z2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdCkgewotICAgICAgICAvLyBGSVhNRTogQ29uc2lkZXIg
YmVpbmcgYWJsZSB0byBoYW5kbGUgb3RoZXIgcGl4ZWwgZm9ybWF0cy4KLSAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBzaXpl
X3Qgd2lkdGggPSBDR0ltYWdlR2V0V2lkdGgoaW1hZ2UpOwotICAgIHNpemVfdCBoZWlnaHQgPSBD
R0ltYWdlR2V0SGVpZ2h0KGltYWdlKTsKLSAgICBzaXplX3QgYnl0ZXNQZXJSb3cgPSBDR0ltYWdl
R2V0Qnl0ZXNQZXJSb3coaW1hZ2UpOwotCi0gICAgUmV0YWluUHRyPENGRGF0YVJlZj4gcHJvdmlk
ZXIgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ29weURhdGEoQ0dJbWFnZUdldERhdGFQcm92aWRl
cihpbWFnZSkpKTsKLSAgICBjb25zdCBVSW50OCogZGF0YSA9IENGRGF0YUdldEJ5dGVQdHIocHJv
dmlkZXIuZ2V0KCkpOwotCi0gICAgLy8gT3ZlcmxheSBhIGdyaWQgb2Ygc2FtcGxpbmcgZG90cyBv
biB0b3Agb2YgYSBncmF5c2NhbGUgdmVyc2lvbiBvZiB0aGUgaW1hZ2UuCi0gICAgLy8gRm9yIHRo
ZSBpbnRlcmlvciBwb2ludHMsIGNhbGN1bGF0ZSB0aGUgZGlmZmVyZW5jZSBpbiBsdW1pbmFuY2Ug
YW1vbmcgdGhlIHNhbXBsZSBwb2ludAotICAgIC8vIGFuZCBpdHMgc3Vycm91bmRzIHBvaW50cywg
c2NhbGVkIGJ5IHRyYW5zcGFyZW5jeS4KLSAgICBjb25zdCB1bnNpZ25lZCBzYW1wbGVSb3dzID0g
NzsKLSAgICBjb25zdCB1bnNpZ25lZCBzYW1wbGVDb2xzID0gNzsKLSAgICAvLyBGSVhNRTogUmVm
aW5lIHRoZSBwcm9wZXIgbnVtYmVyIG9mIHNhbXBsZXMsIGFuZCBhY2NvbW1vZGF0ZSBkaWZmZXJl
bnQgYXNwZWN0IHJhdGlvcy4KLSAgICBpZiAod2lkdGggPCBzYW1wbGVDb2xzIHx8IGhlaWdodCA8
IHNhbXBsZVJvd3MpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8vIEVuc3VyZSB0aGF0
IHRoZSBsYXN0IHJvdy9jb2x1bW4gbGFuZCBvbiB0aGUgaW1hZ2UgcGVyaW1ldGVyLgotICAgIGNv
bnN0IGZsb2F0IHN0cmlkZVdpZHRoID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHdpZHRoIC0gMSkgLyAo
c2FtcGxlQ29scyAtIDEpOwotICAgIGNvbnN0IGZsb2F0IHN0cmlkZUhlaWdodCA9IHN0YXRpY19j
YXN0PGZsb2F0PihoZWlnaHQgLSAxKSAvIChzYW1wbGVSb3dzIC0gMSk7Ci0gICAgZmxvYXQgc2Ft
cGxlc1tzYW1wbGVSb3dzXVtzYW1wbGVDb2xzXTsKLQotICAgIC8vIEZpbmQgdGhlIGx1bWluYW5j
ZSBvZiB0aGUgc2FtcGxlIHBvaW50cy4KLSAgICBmbG9hdCB5ID0gMDsKLSAgICBjb25zdCBVSW50
OCogcm93ID0gZGF0YTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2FtcGxlUm93czsg
KytpKSB7Ci0gICAgICAgIGZsb2F0IHggPSAwOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAw
OyBqIDwgc2FtcGxlQ29sczsgKytqKSB7Ci0gICAgICAgICAgICBjb25zdCBVSW50OCogcDAgPSBy
b3cgKyAoc3RhdGljX2Nhc3Q8aW50Pih4ICsgLjUpKSAqIDQ7Ci0gICAgICAgICAgICAvLyBSIEcg
QiBBCi0gICAgICAgICAgICBzYW1wbGVzW2ldW2pdID0gKDAuMjEyNSAqICpwMCArIDAuNzE1NCAq
ICoocDArMSkgKyAwLjA3MjEgKiAqKHAwKzIpKSAqICoocDArMykgLyAyNTU7Ci0gICAgICAgICAg
ICB4ICs9IHN0cmlkZVdpZHRoOwotICAgICAgICB9Ci0gICAgICAgIHkgKz0gc3RyaWRlSGVpZ2h0
OwotICAgICAgICByb3cgPSBkYXRhICsgKHN0YXRpY19jYXN0PGludD4oeSArIC41KSkgKiBieXRl
c1BlclJvdzsKLSAgICB9Ci0KLSAgICAvLyBEZXRlcm1pbmUgdGhlIGltYWdlIHNjb3JlLgotICAg
IGZsb2F0IGFjY3VtU2NvcmUgPSAwOwotICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkgPCBzYW1w
bGVSb3dzIC0gMTsgKytpKSB7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaiA9IDE7IGogPCBzYW1w
bGVDb2xzIC0gMTsgKytqKSB7Ci0gICAgICAgICAgICBmbG9hdCBkaWZmID0gc2FtcGxlc1tpIC0g
MV1bal0gKyBzYW1wbGVzW2kgKyAxXVtqXSArIHNhbXBsZXNbaV1baiAtIDFdICsgc2FtcGxlc1tp
XVtqICsgMV0gLSA0ICogc2FtcGxlc1tpXVtqXTsKLSAgICAgICAgICAgIGFjY3VtU2NvcmUgKz0g
ZGlmZiAqIGRpZmY7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBUaGUgc2NvcmUgZm9yIGEg
Z2l2ZW4gc2FtcGxlIGNhbiBiZSB3aXRoaW4gdGhlIHJhbmdlIG9mIDAgYW5kIDI1NV4yLgotICAg
IHJldHVybiBhY2N1bVNjb3JlIDwgMjUwMCAqIChzYW1wbGVSb3dzIC0gMikgKiAoc2FtcGxlQ29s
cyAtIDIpOwotfQotI2VuZGlmCi0KIHZvaWQgUGx1Z2luVmlldzo6cGx1Z2luU25hcHNob3RUaW1l
ckZpcmVkKCkKIHsKICNpZiBFTkFCTEUoUFJJTUFSWV9TTkFQU0hPVFRFRF9QTFVHSU5fSEVVUklT
VElDKQpAQCAtMTgwOSw3ICsxNzQ2LDcgQEAgdm9pZCBQbHVnaW5WaWV3OjpwbHVnaW5TbmFwc2hv
dFRpbWVyRmlyZWQoKQogCiAgICAgICAgIGlmIChzbmFwc2hvdEltYWdlKSB7CiAjaWYgRU5BQkxF
KFBSSU1BUllfU05BUFNIT1RURURfUExVR0lOX0hFVVJJU1RJQykKLSAgICAgICAgICAgIGJvb2wg
c25hcHNob3RJc0FsbW9zdFNvbGlkQ29sb3IgPSBpc0FsbW9zdFNvbGlkQ29sb3IoZG93bmNhc3Q8
Qml0bWFwSW1hZ2U+KHNuYXBzaG90SW1hZ2UuZ2V0KCkpKTsKKyAgICAgICAgICAgIGJvb2wgc25h
cHNob3RJc0FsbW9zdFNvbGlkQ29sb3IgPSBzdGF0aWNfcG9pbnRlcl9jYXN0PEJpdG1hcEltYWdl
PihzbmFwc2hvdEltYWdlKS0+aXNBbG1vc3RTb2xpZENvbG9yKCk7CiAgICAgICAgICAgICBzbmFw
c2hvdEZvdW5kID0gIXNuYXBzaG90SXNBbG1vc3RTb2xpZENvbG9yOwogI2VuZGlmCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>283577</attachid>
            <date>2016-07-13 15:04:53 -0700</date>
            <delta_ts>2016-07-13 15:20:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159721-20160713150407.patch</filename>
            <type>text/plain</type>
            <size>175859</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzMTc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDQ0NWVjM2I5YjY1NzYy
OGNlYTM4MTkyYzdkMDJlN2YwMjIyNzRmOS4uMWE3NjVhOGMwNjFiZGE2MWJmM2NmOGU2ZDlmMGU2
NmJmZDdiNDU4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3NSBAQAorMjAxNi0wNy0xMyAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorIAorICAgICAgICBHZXQg
cmlkIG9mIHRoZSBtX3ByZW11bHRpcGx5QWxwaGEgZmxhZyBvZiB0aGUgSW1hZ2VGcmFtZSBjbGFz
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5NzIx
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBm
bGFnIHdhcyBvbmx5IG5lZWRlZCB3aGVuIGNhbGxpbmcgQml0bWFwUGl4ZWxzOjpzZXRTaXplKCku
IEluc3RlYWQKKyAgICAgICAgd2UgY2FuIHBhc3MgdGhlIEltYWdlRGVjb2Rlcjo6bV9wcmVtdWx0
aXBseUFscGhhIHRvIEltYWdlRnJhbWU6OnNldFNpemUoKQorICAgICAgICB3aGljaCB3aWxsIHBh
c3MgaXQgdG8gQml0bWFwUGl4ZWxzOjpzZXRTaXplKCkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VG
cmFtZTo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OmNvcHlCaXRt
YXBEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6c2V0U2l6ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZURlY29kZXI6OmlzT3ZlclNpemUpOgorICAgICAgICAqIHBsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Qk1QSW1hZ2VEZWNvZGVyOjpmcmFtZUJ1ZmZlckF0SW5kZXgpOiBEZWxldGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpCTVBJbWFnZVJlYWRlcjo6ZGVjb2RlQk1QKToKKyAgICAgICAgKFdlYkNvcmU6
OkJNUEltYWdlUmVhZGVyOjpwcm9jZXNzSW5mb0hlYWRlcik6CisgICAgICAgICogcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHSUZJbWFnZURlY29kZXI6OmluaXRGcmFtZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpH
SUZJbWFnZURlY29kZXI6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SUNPSW1hZ2VE
ZWNvZGVyOjpzZXRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OklDT0ltYWdlRGVjb2Rlcjo6ZnJh
bWVDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpJQ09JbWFnZURlY29kZXI6OnByb2Nlc3NEaXJl
Y3RvcnlFbnRyaWVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNP
SW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9K
UEVHSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpQRUdJbWFnZURlY29kZXI6
OnNldFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6SlBFR0ltYWdlRGVjb2Rlcjo6ZnJhbWVCdWZm
ZXJBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkpQRUdJbWFnZURlY29kZXI6Om91dHB1dFNj
YW5saW5lcyk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1h
Z2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0lt
YWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQTkdJbWFnZURlY29kZXI6OnNldFNp
emUpOgorICAgICAgICAoV2ViQ29yZTo6UE5HSW1hZ2VEZWNvZGVyOjpmcmFtZUJ1ZmZlckF0SW5k
ZXgpOgorICAgICAgICAoV2ViQ29yZTo6UE5HSW1hZ2VEZWNvZGVyOjpoZWFkZXJBdmFpbGFibGUp
OgorICAgICAgICAoV2ViQ29yZTo6UE5HSW1hZ2VEZWNvZGVyOjpyb3dBdmFpbGFibGUpOgorICAg
ICAgICAoV2ViQ29yZTo6UE5HSW1hZ2VEZWNvZGVyOjpyZWFkQ2h1bmtzKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICog
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OldFQlBJbWFnZURlY29kZXI6OmZyYW1lQnVmZmVyQXRJbmRleCk6CisgICAg
ICAgIChXZWJDb3JlOjpXRUJQSW1hZ2VEZWNvZGVyOjpkZWNvZGUpOgorCisyMDE2LTA3LTEzICBT
YWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgR2V0
IHJpZCBvZiB0aGUgY29sb3IgcHJvZmlsZSBmcm9tIEltYWdlRnJhbWUgYW5kIEltYWdlRGVjb2Rl
cgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5Njk5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VGcmFtZTo6c2V0Q29sb3JQcm9maWxlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6cmVhZENvbG9yUHJvZmlsZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpKUEVH
SW1hZ2VSZWFkZXI6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
anBlZy9KUEVHSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZWFkQ29sb3JQ
cm9maWxlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBOR0ltYWdlRGVjb2Rlcjo6aGVh
ZGVyQXZhaWxhYmxlKTogRGVsZXRlZC4KKworMjAxNi0wNy0xMyAgU2FpZCBBYm91LUhhbGxhd2Eg
IDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFNwbGl0IHRoZSBwaXhlbCBkYXRh
IG9mIEltYWdlRnJhbWUgdG8gYSBzZXBhcmF0ZSBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5Njc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSB0aGUgcGl4ZWwgZGF0YSBtYW5pcHVsYXRp
b24gcGFydCBpbiBJbWFnZUZyYW1lIGludG8gYSBzZXBhcmF0ZSBjbGFzcworICAgICAgICBhbmQg
dGhlbiBtYWtlIGl0IG9wdGlvbmFsIChhbGxvY2F0ZWQgb24gZGVtYW5kKS4KKworICAgICAgICAq
IENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFBsYXRmb3JtRWZsLmNtYWtlOgorICAgICAgICAq
IFBsYXRmb3JtR1RLLmNtYWtlOgorICAgICAgICAqIFBsYXRmb3JtV2luQ2Fpcm8uY21ha2U6Cisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0JpdG1hcFBpeGVscy5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkJpdG1hcFBpeGVsczo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFBpeGVsczo6
Qml0bWFwUGl4ZWxzKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFBpeGVsczo6d2lkdGgpOgor
ICAgICAgICAoV2ViQ29yZTo6Qml0bWFwUGl4ZWxzOjpoZWlnaHQpOgorICAgICAgICAoV2ViQ29y
ZTo6Qml0bWFwUGl4ZWxzOjpzZXRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFBpeGVs
czo6YXQpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwUGl4ZWxzOjpjbGVhcik6CisgICAgICAg
IChXZWJDb3JlOjpCaXRtYXBQaXhlbHM6OmNsZWFyUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpC
aXRtYXBQaXhlbHM6OnJlcGVhdEZpcnN0Um93KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFBp
eGVsczo6c2V0UkdCQSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBQaXhlbHM6Om92ZXJSR0JB
KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFBpeGVsczo6aW5Cb3VuZHMpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om11bHRpcGx5
MjU1KToKKyAgICAgICAgKFdlYkNvcmU6OmRpdmlkZTI1NSk6CisgICAgICAgIChXZWJDb3JlOjpk
aXZpZGVDZWlsKToKKyAgICAgICAgKFdlYkNvcmU6OnByZW11bHRpcGxpZWRDaGFubmVsKToKKyAg
ICAgICAgKFdlYkNvcmU6OnVucHJlbXVsdGlwbGllZENoYW5uZWwpOgorICAgICAgICAoV2ViQ29y
ZTo6bWFrZVByZW11bHRpcGxpZWRSR0JBKToKKyAgICAgICAgKFdlYkNvcmU6Om1ha2VVblByZW11
bHRpcGxpZWRSR0JBKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVEYXRhLmg6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUZyYW1lRGF0YTo6cGl4ZWxzKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJh
bWVEYXRhOjpoYXNQaXhlbHMpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0lt
YWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpvcGVyYXRvcj0p
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6Y2xlYXJQaXhlbERhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6emVyb0ZpbGxQaXhlbERhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VGcmFtZTo6emVyb0ZpbGxGcmFtZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VGcmFtZTo6Y29weUJpdG1hcERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFt
ZTo6c2V0U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpjb3B5Um93TlRpbWVz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OmFzTmV3TmF0aXZlSW1hZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VGcmFtZTo6c2V0UkdCQSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZy
YW1lOjpnZXRBZGRyKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6Omhhc1BpeGVsRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpvdmVyUkdCQSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUZyYW1lOjp3aWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1l
OjpoZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6Y29weVJvd05UaW1lcyk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpmaXhQb2ludFVuc2lnbmVk
TXVsdGlwbHkpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6ZGl2aWRl
MjU1KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1Q
SW1hZ2VSZWFkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qk1QSW1hZ2VSZWFkZXI6OmRlY29k
ZUJNUCk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvY2Fpcm8vQml0bWFwUGl4
ZWxzQ2Fpcm8uY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvY2Fpcm8vSW1hZ2VEZWNvZGVyQ2Fpcm8uY3BwLgorICAgICAgICAoV2ViQ29yZTo6
Qml0bWFwUGl4ZWxzOjppbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
Z2lmL0dJRkltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHSUZJbWFnZURlY29k
ZXI6OmhhdmVEZWNvZGVkUm93KToKKyAgICAgICAgKFdlYkNvcmU6OkdJRkltYWdlRGVjb2Rlcjo6
ZnJhbWVDb21wbGV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHSUZJbWFnZURlY29kZXI6OmluaXRG
cmFtZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVH
SW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNldFBpeGVsKToKKyAgICAgICAg
KFdlYkNvcmU6OkpQRUdJbWFnZURlY29kZXI6Om91dHB1dFNjYW5saW5lcyk6CisgICAgICAgICog
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpzZXRQaXhlbFJHQik6CisgICAgICAgIChXZWJDb3JlOjpzZXRQaXhlbFJHQkEp
OgorICAgICAgICAoV2ViQ29yZTo6c2V0UGl4ZWxQcmVtdWx0aXBsaWVkUkdCQSk6CisgICAgICAg
IChXZWJDb3JlOjpQTkdJbWFnZURlY29kZXI6OnJvd0F2YWlsYWJsZSk6CisgICAgICAgIChXZWJD
b3JlOjpQTkdJbWFnZURlY29kZXI6OmluaXRGcmFtZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3Jl
OjpQTkdJbWFnZURlY29kZXI6OmZyYW1lQ29tcGxldGUpOgorICAgICAgICAqIHBsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXRUJQSW1hZ2VEZWNvZGVyOjpkZWNvZGUpOgorCisyMDE2LTA3LTEzICBTYWlkIEFib3UtSGFs
bGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgU3BsaXQgdGhlIHBpeGVs
IGRhdGEgb2YgSW1hZ2VGcmFtZSB0byBhIHNlcGFyYXRlIGNsYXNzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTk2NzkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIHRoZSBwaXhlbCBkYXRhIG1hbmlw
dWxhdGlvbiBwYXJ0IGluIEltYWdlRnJhbWUgaW50byBhIHNlcGFyYXRlIGNsYXNzCisgICAgICAg
IGFuZCB0aGVuIG1ha2UgaXQgb3B0aW9uYWwgKGFsbG9jYXRlZCBvbiBkZW1hbmQpLgorCisgICAg
ICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAg
ICAgICogUGxhdGZvcm1HVEsuY21ha2U6CisgICAgICAgICogUGxhdGZvcm1XaW5DYWlyby5jbWFr
ZToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwUGl4ZWxzLmg6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6Qml0bWFwUGl4ZWxzOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwUGl4
ZWxzOjpCaXRtYXBQaXhlbHMpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwUGl4ZWxzOjp3aWR0
aCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBQaXhlbHM6OmhlaWdodCk6CisgICAgICAgIChX
ZWJDb3JlOjpCaXRtYXBQaXhlbHM6OnNldFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFw
UGl4ZWxzOjphdCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBQaXhlbHM6OmNsZWFyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkJpdG1hcFBpeGVsczo6Y2xlYXJSZWN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkJpdG1hcFBpeGVsczo6cmVwZWF0Rmlyc3RSb3cpOgorICAgICAgICAoV2ViQ29yZTo6Qml0
bWFwUGl4ZWxzOjpzZXRSR0JBKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFBpeGVsczo6b3Zl
clJHQkEpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwUGl4ZWxzOjppbkJvdW5kcyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bXVs
dGlwbHkyNTUpOgorICAgICAgICAoV2ViQ29yZTo6ZGl2aWRlMjU1KToKKyAgICAgICAgKFdlYkNv
cmU6OmRpdmlkZUNlaWwpOgorICAgICAgICAoV2ViQ29yZTo6cHJlbXVsdGlwbGllZENoYW5uZWwp
OgorICAgICAgICAoV2ViQ29yZTo6dW5wcmVtdWx0aXBsaWVkQ2hhbm5lbCk6CisgICAgICAgIChX
ZWJDb3JlOjptYWtlUHJlbXVsdGlwbGllZFJHQkEpOgorICAgICAgICAoV2ViQ29yZTo6bWFrZVVu
UHJlbXVsdGlwbGllZFJHQkEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZURhdGEuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlRnJhbWVEYXRhOjpwaXhlbHMpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VGcmFtZURhdGE6Omhhc1BpeGVscyk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6Om9wZXJh
dG9yPSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpjbGVhclBpeGVsRGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjp6ZXJvRmlsbFBpeGVsRGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUZyYW1lOjp6ZXJvRmlsbEZyYW1lUmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUZyYW1lOjpjb3B5Qml0bWFwRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUZyYW1lOjpzZXRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OmNvcHlSb3dO
VGltZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5o
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6YXNOZXdOYXRpdmVJbWFnZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpzZXRSR0JBKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlRnJhbWU6OmdldEFkZHIpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6aGFzUGl4
ZWxEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6Om92ZXJSR0JBKToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OndpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
RnJhbWU6OmhlaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpjb3B5Um93TlRp
bWVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OmZpeFBvaW50VW5z
aWduZWRNdWx0aXBseSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpk
aXZpZGUyNTUpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2Jt
cC9CTVBJbWFnZVJlYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCTVBJbWFnZVJlYWRlcjo6
ZGVjb2RlQk1QKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9CaXRt
YXBQaXhlbHNDYWlyby5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZURlY29kZXJDYWlyby5jcHAuCisgICAgICAgIChXZWJD
b3JlOjpCaXRtYXBQaXhlbHM6OmltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdJRkltYWdl
RGVjb2Rlcjo6aGF2ZURlY29kZWRSb3cpOgorICAgICAgICAoV2ViQ29yZTo6R0lGSW1hZ2VEZWNv
ZGVyOjpmcmFtZUNvbXBsZXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdJRkltYWdlRGVjb2Rlcjo6
aW5pdEZyYW1lQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVn
L0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0UGl4ZWwpOgorICAg
ICAgICAoV2ViQ29yZTo6SlBFR0ltYWdlRGVjb2Rlcjo6b3V0cHV0U2NhbmxpbmVzKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnNldFBpeGVsUkdCKToKKyAgICAgICAgKFdlYkNvcmU6OnNldFBpeGVs
UkdCQSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRQaXhlbFByZW11bHRpcGxpZWRSR0JBKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBOR0ltYWdlRGVjb2Rlcjo6cm93QXZhaWxhYmxlKToKKyAgICAgICAg
KFdlYkNvcmU6OlBOR0ltYWdlRGVjb2Rlcjo6aW5pdEZyYW1lQnVmZmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlBOR0ltYWdlRGVjb2Rlcjo6ZnJhbWVDb21wbGV0ZSk6CisgICAgICAgICogcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldFQlBJbWFnZURlY29kZXI6OmRlY29kZSk6CisKKzIwMTYtMDctMTEgIFNhaWQgQWJv
dS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLGNvbT4KKworICAgICAgICBSZW5hbWUgRnJh
bWVEYXRhIHRvIEltYWdlRnJhbWVEYXRhIGFuZCBtb3ZlIGl0IHRvIGEgc2VwYXJhdGUgZmlsZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1NDQ0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSBJbWFn
ZUZyYW1lRGF0YSB0byBhIHNlcGFyYXRlIGZpbGUgc28gaXQgY2FuIGJlIGNhY2hlZCBieSBJbWFn
ZVNvdXJjZQorICAgICAgICBhbmQgd2lsbCBzdGlsbCBiZSBjb25zdW1lZCBieSBCaXRtYXBJbWFn
ZS4gTWFrZSB0aGUgZGF0YSBtZW1iZXJzIG9mIEltYWdlRnJhbWVEYXRhCisgICAgICAgIGJlIHBy
aXZhdGUgYW5kIGFkZCBnZXR0ZXJzIHRvIHJldHVybiB0aGVpciB2YWx1ZXMuCisKKyAgICAgICAg
Tm8gbmV3IHRlc3RzIC0tIENvZGUgcmVmYWN0b3JpbmcsIG5vIGJlaGF2aW9yIGNoYW5nZS4KKwor
ICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmhhdmVGcmFtZUltYWdlQXRJbmRleCk6CisgICAgICAg
IChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZGVzdHJveURlY29kZWREYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OkJpdG1hcEltYWdlOjpkZXN0cm95RGVjb2RlZERhdGFJZk5lY2Vzc2FyeSk6CisgICAg
ICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Y2FjaGVGcmFtZSk6CisgICAgICAgIChXZWJDb3Jl
OjpCaXRtYXBJbWFnZTo6ZGF0YUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1h
Z2U6OmVuc3VyZUZyYW1lSXNDYWNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6
OmZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpmcmFt
ZUlzQ29tcGxldGVBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpmcmFt
ZUR1cmF0aW9uQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZnJhbWVI
YXNBbHBoYUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmZyYW1lT3Jp
ZW50YXRpb25BdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpzaW5nbGVQ
aXhlbFNvbGlkQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmlzQWxtb3N0
U29saWRDb2xvcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lRGF0YTo6RnJhbWVEYXRhKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lRGF0YTo6fkZyYW1lRGF0YSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZURhdGE6OnVzZWRGcmFtZUJ5dGVzKTogRGVsZXRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZVNvdXJjZTo6Y3JlYXRlRnJhbWVEYXRhQXRJbmRleCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VTb3VyY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pbWFnZUZy
YW1lRGF0YS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6Oklt
YWdlRnJhbWVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVEYXRhOjp+SW1hZ2VG
cmFtZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6OmNsZWFyU3ViSW1h
Z2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVEYXRhOjpjbGVhcik6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6c2luZ2xlUGl4ZWxTb2xpZENvbG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlRnJhbWVEYXRhOjppc0FsbW9zdFNvbGlkQ29sb3IpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ltYWdlRnJhbWVEYXRhLmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6OnN0YXR1cyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUZyYW1lRGF0YTo6aXNDb21wbGV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0
YTo6c2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6ZnJhbWVCeXRlcyk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6aW1hZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VGcmFtZURhdGE6Om9yaWVudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlRnJhbWVEYXRhOjpzdWJzYW1wbGluZ0xldmVsKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
RnJhbWVEYXRhOjpkdXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6
aGFzQWxwaGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6Omhhc0ltYWdlKToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVEYXRhOjpoYXNNZXRhZGF0YSk6CisKKzIwMTYt
MDYtMjQgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLGNvbT4KKworICAg
ICAgICBJbnRyb2R1Y2UgUGxhdGZvcm1JbWFnZSBhbmQgbWFrZSBpdCBpcyBhIHdyYXBwZXIgZm9y
IE5hdGl2ZUltYWdlUHRyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNTg2ODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGUgbWFpbiBwdXJwb3NlIG9mIHRoaXMgcmVmYWN0b3JpbmcgaXMgdG8gbW92ZSB0
aGUgcGxhdGZvcm0gaW1hZ2UgZGVwZW5kZW50CisgICAgICAgIGNvZGUgZnJvbSBCaXRtYXBJbWFn
ZSB0byBQbGF0Zm9ybUltYWdlLiBQbGF0Zm9ybUltYWdlIGlzIHJlc3BvbnNpYmxlIG9mIAorICAg
ICAgICBkcmF3aW5nIHRoZSBpbWFnZSBhbmQgYW5zd2VyaW5nIE5hdGl2ZUltYWdlUHRyIHF1ZXN0
aW9ucyB3aGVuIGFuIEltYWdlRGVjb2RlcgorICAgICAgICBpcyBub3QgYXZhaWxhYmxlLiBBcGFy
dCBmcm9tIGRyYXdpbmcgdGhlIGltYWdlLCB0aGUgcXVlcnkgZnVuY3Rpb25zIHdpbGwgYmUKKyAg
ICAgICAgY2FsbGVkIG9ubHkgd2hlbiBjb25zdHJ1Y3RpbmcgYSBGcmFtZURhdGEgc28gd2Ugd2ls
bCBrZWVwIGV2ZXJ5dGhpbmcgYXMgYQorICAgICAgICBOYXRpdmVJbWFnZVB0ci4gQnV0IHdlIHdp
bGwgY2FzdCB0aGUgTmF0aXZlSW1hZ2VQdHIgdG8gUGxhdGZvcm1JbWFnZSB3aGVuCisgICAgICAg
IGEgcGxhdGZvcm0gZGVwZW5kZW50IGZ1bmN0aW9uIGlzIG5lZWRlZC4KKworICAgICAgICBObyBu
ZXcgdGVzdHMgLS0gQ29kZSByZWZhY3RvcmluZywgbm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAg
ICAgICogUGxhdGZvcm1BcHBsZVdpbi5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFr
ZToKKyAgICAgICAgKiBQbGF0Zm9ybUdUSy5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybU1hYy5j
bWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybVdpbkNhaXJvLmNtYWtlOgorICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL0RP
TS5tbToKKyAgICAgICAgKC1bRE9NTm9kZSBnZXRQcmV2aWV3U25hcHNob3RJbWFnZTphbmRSZWN0
czpdKToKKyAgICAgICAgKiBwYWdlL21hYy9UZXh0SW5kaWNhdG9yV2luZG93Lm1tOgorICAgICAg
ICAoLVtXZWJUZXh0SW5kaWNhdG9yVmlldyBpbml0V2l0aEZyYW1lOnRleHRJbmRpY2F0b3I6bWFy
Z2luOm9mZnNldDpdKToKKyAgICAgICAgKGNyZWF0ZUNvbnRlbnRDcm9zc2ZhZGVBbmltYXRpb24p
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpC
aXRtYXBJbWFnZTo6ZGVzdHJveURlY29kZWREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1h
cEltYWdlOjpkZXN0cm95RGVjb2RlZERhdGFJZk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJDb3Jl
OjpCaXRtYXBJbWFnZTo6ZGF0YUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1h
Z2U6OmZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpu
YXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VP
ZlNpemUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3Vy
cmVudEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpmcmFtZXNOYXRpdmVJ
bWFnZXMpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OnNpbmdsZVBpeGVsU29saWRD
b2xvcik6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6aXNBbG1vc3RTb2xpZENvbG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVEYXRh
OjpGcmFtZURhdGEpOgorICAgICAgICBtX2hhc0FscGhhIGNhbiBiZSBpbml0aWFsaXplZCB3aXRo
IGZhbHNlIGJlY2F1c2UgaXQgaXMgYWNjZXNzZWQgb25seSBpbgorICAgICAgICBCaXRtYXBJbWFn
ZTo6ZnJhbWVIYXNBbHBoYUF0SW5kZXgoKSBhbmQgaXQgaXMgZ3VhcmRlZCBieSBtX2hhdmVNZXRh
ZGF0YS4KKyAgICAgICAgQm90aCBtX2hhdmVNZXRhZGF0YSBhbmQgbV9oYXNBbHBoYSBhcmUgc2V0
IGluIEJpdG1hcEltYWdlIGNvbnN0cnVjdG9yCisgICAgICAgIGFuZCBpbiBCaXRtYXBJbWFnZTo6
Y2FjaGVGcmFtZSgpLgorCisgICAgICAgIChXZWJDb3JlOjpGcmFtZURhdGE6On5GcmFtZURhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVEYXRhOjpjbGVhcik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpuYXRpdmVJbWFn
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6bmF0aXZlSW1hZ2VPZlNpemUpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2U6OmZyYW1lc05hdGl2ZUltYWdlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZTo6Z2V0Q0dJbWFnZVJlZik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZTo6Z2V0Rmlyc3RDR0ltYWdlUmVmT2ZTaXplKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlOjpnZXRDR0ltYWdlQXJyYXkpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL1BsYXRmb3JtSW1hZ2UuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9y
bUltYWdlOjpQbGF0Zm9ybUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtSW1hZ2U6
OmlzTmlsKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtSW1hZ2U6OmNnSW1hZ2VSZWYpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dXBkYXRlRGlzcGxheU1vZGUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtSW1hZ2VDYWlyby5jcHA6IFJlbmFt
ZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFn
ZUNhaXJvLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtSW1hZ2U6OmNsZWFyU3ViSW1h
Z2VzKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtSW1hZ2U6OnNpemUpOgorICAgICAgICAo
V2ViQ29yZTo6UGxhdGZvcm1JbWFnZTo6aGFzQWxwaGEpOgorICAgICAgICAoV2ViQ29yZTo6UGxh
dGZvcm1JbWFnZTo6c2luZ2xlUGl4ZWxTb2xpZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlBs
YXRmb3JtSW1hZ2U6OmlzQWxtb3N0U29saWRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpQbGF0
Zm9ybUltYWdlOjpzdWJzYW1wbGluZ1NjYWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
SW1hZ2U6OmRyYXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdl
Q0cuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5D
Ry5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXR0ZXJuOjpjcmVhdGVQbGF0Zm9ybVBhdHRlcm4p
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1BsYXRmb3JtSW1hZ2VDRy5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1JbWFnZTo6Y2xlYXJTdWJJbWFnZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1JbWFnZTo6c2l6ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybUltYWdlOjpoYXNBbHBoYSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUlt
YWdlOjpzaW5nbGVQaXhlbFNvbGlkQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1J
bWFnZTo6aXNBbG1vc3RTb2xpZENvbG9yKTogTW92ZWQgZnJvbSBQbHVnaW5WaWV3LmNwcCBzaW5j
ZSBQbGF0Zm9ybUltYWdlIGlzIHdoYXQgdGhpcyBmdW5jdGlvbiBiZWxvbmdzIHRvLgorICAgICAg
ICAoV2ViQ29yZTo6UGxhdGZvcm1JbWFnZTo6c3Vic2FtcGxpbmdTY2FsZSk6IFJldHVybnMgdGhl
IHN1Yi1zYW1wbGluZyBzY2FsZSBiYXNlZCBvbiB0aGUgY29udGV4dCBzY2FsaW5nLgorICAgICAg
ICAoV2ViQ29yZTo6UGxhdGZvcm1JbWFnZTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvVGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYS5tbToKKyAgICAgICAgKFRl
eHRUcmFja1JlcHJlc2VudGF0aW9uQ29jb2E6OnVwZGF0ZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6
OmdldFRJRkZSZXByZXNlbnRhdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6TW9j
a1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWM6OnVwZGF0ZVBsYXRmb3JtTGF5ZXIpOgorICAgICAgICAq
IHBsYXRmb3JtL3dpbi9EcmFnSW1hZ2VDR1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVh
dGVEcmFnSW1hZ2VGcm9tSW1hZ2UpOgorCiAyMDE2LTA3LTEzICBBbnR0aSBLb2l2aXN0byAgPGFu
dHRpQGFwcGxlLmNvbT4KIAogICAgICAgICB2MjogV2ViQ29udGVudCBjcmFzaCBkdWUgdG8gUkVM
RUFTRV9BU1NFUlQoIW1faW5Mb2FkUGVuZGluZ0ltYWdlcykgaW4gU3R5bGVSZXNvbHZlcjo6flN0
eWxlUmVzb2x2ZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IGEwZGU3Y2QyY2E1Mzc3ZDc2YTA4M2Ex
ODMwMGZhZDVmMDViNjFkYjcuLjI4OTk0NWNiYzI3OGY3NjQyYWI2ZDk5ODY4NjFhOWRlZDNiYmU1
YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNi0wNy0xMyAgU2FpZCBB
Ym91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUsY29tPgorCisgICAgICAgIEludHJvZHVj
ZSBQbGF0Zm9ybUltYWdlIGFuZCBtYWtlIGl0IGlzIGEgd3JhcHBlciBmb3IgTmF0aXZlSW1hZ2VQ
dHIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODY4
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTWlz
Yy9XZWJDYWNoZS5tbToKKyAgICAgICAgKCtbV2ViQ2FjaGUgaW1hZ2VGb3JVUkw6XSk6CisKIDIw
MTYtMDctMTMgIEVucmljYSBDYXN1Y2NpICA8ZW5yaWNhQGFwcGxlLmNvbT4KIAogICAgICAgICBV
cGRhdGUgc3VwcG9ydGVkIHBsYXRmb3JtcyBpbiB4Y2NvbmZpZyBmaWxlcyB0byBtYXRjaCB0aGUg
c2RrIG5hbWVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGI5NThkOTU5ZTY4MTUxMjk0N2QwODkyMWI3OWJlMDY4
ZDFhZjI0MTEuLjk3MTkxMDE2ZDQ1ZTUzNjY4NGI0NzM5OTIzZDQwYTc2YjZkOGZiYzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxNi0wNy0xMyAgU2FpZCBBYm91LUhhbGxhd2EgIDxz
YWJvdWhhbGxhd2FAYXBwbGUsY29tPgorCisgICAgICAgIEludHJvZHVjZSBQbGF0Zm9ybUltYWdl
IGFuZCBtYWtlIGl0IGlzIGEgd3JhcHBlciBmb3IgTmF0aXZlSW1hZ2VQdHIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODY4NAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL2Nn
L1dLSWNvbkRhdGFiYXNlQ0cuY3BwOgorICAgICAgICAoV0tJY29uRGF0YWJhc2VUcnlHZXRDR0lt
YWdlRm9yVVJMKToKKyAgICAgICAgKFdLSWNvbkRhdGFiYXNlVHJ5Q29weUNHSW1hZ2VBcnJheUZv
clVSTCk6CisgICAgICAgIEl0IHdhcyB0aGUgb25seSBwbGFjZSBpbiB0aGUgY29kZSB3aGljaCB1
c2VzIEJpdG1hcEltYWdlOjpnZXRDR0ltYWdlQXJyYXkoKS4KKyAgICAgICAgQ2FsbCBCaXRtYXBJ
bWFnZTo6ZnJhbWVzTmF0aXZlSW1hZ2VzKCkgaW5zdGVhZCBhbmQgZm9ybSB0aGUgcmV0dXJuZWQK
KyAgICAgICAgVmVjdG9yPE5hdGl2ZUltYWdlUHRyPiBidWlsZCB0aGUgQ0ZBcnJheVJlZi4KKyAg
ICAgICAgCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
bW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX3ByZXNlbnRhdGlvblNuYXBzaG90Rm9yUHJl
dmlld0l0ZW1Db250cm9sbGVyOl0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6cGx1Z2luU25hcHNob3RU
aW1lckZpcmVkKToKKyAgICAgICAgCisgICAgICAgIChXZWJLaXQ6OmlzQWxtb3N0U29saWRDb2xv
cik6IERlbGV0ZWQuCisgICAgICAgIE1vdmUgdGhlIHN0YXRpYyBmdW5jdGlvbiBpc0FsbW9zdFNv
bGlkQ29sb3IgdG8gUGxhdGZvcm1JbWFnZTo6aXNBbG1vc3RTb2xpZENvbG9yKCkuCisKIDIwMTYt
MDctMTMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJLaXQy
IHNob3VsZG4ndCBzaWduYWwgY3VzdG9tIHByb3RvY29sIGNsaWVudHMgZnJvbSB0aGUgTlNVUkxD
b25uZWN0aW9uIGxvYWRlciB0aHJlYWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDVhZmVhM2Ex
NGVlODZlODM0ZTAxZmY1ODUxNDNhOGYxMGRhYWNjMjAuLmIyYjI3OTBiODY0MTI3ZmJhMzU5Nzdm
ZTQ4NDE4NzE0NmQwN2E4ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0yMjI5LDYgKzIyMjks
NyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSVNPVlRUQ3Vl
LmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlQnVmZmVyLmNwcAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVEYXRh
LmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlT3JpZW50YXRpb24uY3BwCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW50
UG9pbnQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUFwcGxlV2luLmNt
YWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1BcHBsZVdpbi5jbWFrZQppbmRleCA1ZmY5OTFm
ZjdkYTMwOGJiOTE4MmVjZTNiZjEyMTczMGE1NDhkMjg3Li5iYWUzMWVhZjg2ZTdmY2E5MDU4MjUw
OTJhYTM4YTc4YzExZTQyMjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUFw
cGxlV2luLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQXBwbGVXaW4uY21ha2UK
QEAgLTU1LDcgKzU1LDYgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvY2Evd2luL1dlYlRpbGVkQmFja2luZ0xheWVyV2luLmNwcAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2NhL3dpbi9XS0NBQ0ZWaWV3TGF5ZXJUcmVlSG9zdC5jcHAKIAotICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvQ29sb3JDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9GbG9hdFBvaW50Q0cu
Y3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvRmxvYXRSZWN0Q0cuY3BwCkBAIC03NSw2ICs3
NCw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0aENH
LmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAKKyAgICBwbGF0Zm9y
bS9ncmFwaGljcy9jZy9QbGF0Zm9ybUltYWdlQ0cuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9U
cmFuc2Zvcm1hdGlvbk1hdHJpeENHLmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Q
bGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4
IDUxNDUwNGU2ZWMyNWFhNWU0M2I5OTM5OGQ1ZTM1Y2VlZWE3NjZhYTQuLjY0YWUxNzEwODlkY2Jm
MGNkNDViNzBhOWI4ZjcwZWZhOWZmZGVkYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1Bs
YXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCkBA
IC0xMjIsNyArMTIyLDYgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvUGxhdGZvcm1EaXNwbGF5LmNwcAogCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vQmFja2luZ1N0b3JlQmFja2VuZENhaXJvSW1wbC5jcHAKLSAgICBwbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0NhaXJvVXRpbGl0aWVzLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRD
YWlyby5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fpcm9IYXJmYnV6ek5H
LmNwcApAQCAtMTM0LDYgKzEzMyw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAg
IHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BhdGhDYWlyby5jcHAKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9QYXR0ZXJuQ2Fpcm8uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
UGxhdGZvcm1Db250ZXh0Q2Fpcm8uY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxh
dGZvcm1JbWFnZUNhaXJvLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3Jt
UGF0aENhaXJvLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1JlZlB0ckNhaXJvLmNw
cAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1RyYW5zZm9ybWF0aW9uTWF0cml4Q2Fpcm8u
Y3BwCkBAIC0xNzksOSArMTc5LDkgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MveDExL1BsYXRmb3JtRGlzcGxheVgxMS5jcHAKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy94MTEvWFVuaXF1ZVJlc291cmNlLmNwcAogCi0gICAgcGxhdGZvcm0vaW1hZ2Ut
ZW5jb2RlcnMvSlBFR0ltYWdlRW5jb2Rlci5jcHAKKyAgICBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9jYWlyby9CaXRtYXBQaXhlbHNDYWlyby5jcHAKIAotICAgIHBsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2NhaXJvL0ltYWdlRGVjb2RlckNhaXJvLmNwcAorICAgIHBsYXRmb3JtL2ltYWdlLWVuY29k
ZXJzL0pQRUdJbWFnZUVuY29kZXIuY3BwCiAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2VmbC9OZXR3
b3JrU3RhdGVOb3RpZmllckVmbC5jcHAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxh
dGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCA2
NDVhZGQxY2UzODg4OGIwNGQ0YTJkODlhZGEwYTdjNmRlMTk5ODZiLi5kMzFmNTcwNmE2OTU5YjIz
MWI1YmZiMjJmMDdkMTg0M2FlODYxYTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0
Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAt
MTAxLDcgKzEwMSw2IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vQmFja2luZ1N0b3JlQmFja2VuZENhaXJvSW1wbC5jcHAKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CYWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm9YMTEuY3BwCi0g
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5jcHAKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb1V0aWxpdGllcy5jcHAKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9GbG9hdFJlY3RDYWlyby5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9Gb250Q2Fpcm8uY3BwCkBAIC0xMTUsNiArMTE0LDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9T
T1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0aENhaXJvLmNwcAogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BhdHRlcm5DYWlyby5jcHAKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9QbGF0Zm9ybUNvbnRleHRDYWlyby5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9QbGF0Zm9ybUltYWdlQ2Fpcm8uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vUGxhdGZvcm1QYXRoQ2Fpcm8uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUmVm
UHRyQ2Fpcm8uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vVHJhbnNmb3JtYXRpb25N
YXRyaXhDYWlyby5jcHAKQEAgLTE0OSw3ICsxNDksNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NP
VVJDRVMKICAgICBwbGF0Zm9ybS9ndGsvVGVtcG9yYXJ5TGlua1N0dWJzLmNwcAogICAgIHBsYXRm
b3JtL2d0ay9Vc2VyQWdlbnRHdGsuY3BwCiAKLSAgICBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9j
YWlyby9JbWFnZURlY29kZXJDYWlyby5jcHAKKyAgICBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9j
YWlyby9CaXRtYXBQaXhlbHNDYWlyby5jcHAKIAogICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL2d0
ay9TRFBQcm9jZXNzb3JTY3JpcHRSZXNvdXJjZUd0ay5jcHAKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5j
bWFrZQppbmRleCA5ZjZmNDk2YjZjYzRlZjZlNGI3NGQ4NGFjMGFhOWRlYTU1YTAyMzdiLi40ZGRl
ZDMwODhmNGYzOTZmZWY0NDRlN2VlNjVjNjQxMDY1OGY1ODQxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1h
Yy5jbWFrZQpAQCAtMzk3LDcgKzM5Nyw2IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1dlYlN5c3RlbUJhY2tkcm9wTGF5ZXIubW0K
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9XZWJUaWxlZEJhY2tpbmdMYXllci5tbQog
Ci0gICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFwSW1hZ2VDRy5jcHAKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0Zsb2F0
UG9pbnRDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9GbG9hdFJlY3RDRy5jcHAKQEAg
LTQxNyw2ICs0MTYsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2NnL1BhdGhDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwCisg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGxhdGZvcm1JbWFnZUNHLmNwcAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL1N1YmltYWdlQ2FjaGVXaXRoVGltZXIuY3BwCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvVHJhbnNmb3JtYXRpb25NYXRyaXhDRy5jcHAKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvUGxhdGZvcm1XaW5DYWlyby5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3Jt
V2luQ2Fpcm8uY21ha2UKaW5kZXggMmM1NTNiMDU1MWRhZDY5YWExOTlkOTYwZjU1MjM0M2Q5MjBm
MDdiMy4uMzQyYWE5MjczMmZkOGY5MmU4NWNmYTYyNmQ1NTU3MGVmNjZiNmE2OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW5DYWlyby5jbWFrZQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybVdpbkNhaXJvLmNtYWtlCkBAIC0yMSw3ICsyMSw2IEBAIGxpc3QoQVBQRU5E
IFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4dC5jcHAKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybURpc3BsYXkuY3BwCiAKLSAgICBwbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0NhaXJvVXRpbGl0aWVzLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0Zs
b2F0UmVjdENhaXJvLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyby5j
cHAKQEAgLTM0LDYgKzMzLDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0aENhaXJvLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL1BhdHRlcm5DYWlyby5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0
Zm9ybUNvbnRleHRDYWlyby5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9y
bUltYWdlQ2Fpcm8uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1QYXRo
Q2Fpcm8uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUmVmUHRyQ2Fpcm8uY3BwCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vVHJhbnNmb3JtYXRpb25NYXRyaXhDYWlyby5jcHAK
QEAgLTQ2LDcgKzQ2LDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5jcHAKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy93aW4vU2ltcGxlRm9udERhdGFDYWlyb1dpbi5jcHAKIAotICAg
IHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdlRGVjb2RlckNhaXJvLmNwcAorICAg
IHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0JpdG1hcFBpeGVsc0NhaXJvLmNwcAogCiAg
ICAgcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb25TdHViLmNwcAogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
NGU3YzNhMjI5YTE2M2E1ZjVhNjBmNjMyYmVhMGUzN2FkMjM5NDBlMC4uY2NiMDcwYmUwOWJhYzE2
ZjVmOWZkMzE5YTgzMmM5NzgwOWIyMTE5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTQ4NSw3ICsxNDg1LDcgQEAKIAkJMzc1
Q0QyMzIxMTlENDNDODAwQTJBODU5IC8qIEh5cGhlbmF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzVDRDIzMTExOUQ0M0M4MDBBMkE4NTkgLyog
SHlwaGVuYXRpb24uaCAqLzsgfTsKIAkJMzc2RENDRTExM0I0Rjk2NjAwMkVCRUZDIC8qIFRleHRS
dW4uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzc2
RENDRTAxM0I0Rjk2NjAwMkVCRUZDIC8qIFRleHRSdW4uY3BwICovOyB9OwogCQkzNzc0QUJBNTBG
QTIxRUI0MDBBRDdERTkgLyogT3ZlcmxhcFRlc3RSZXF1ZXN0Q2xpZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzc0QUJBMzBGQTIxRUI0MDBBRDdE
RTkgLyogT3ZlcmxhcFRlc3RSZXF1ZXN0Q2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJMzc3QTNBOTAxNUVGQ0U5QjAwNTlGNUM3IC8qIEJp
dG1hcEltYWdlQ0cuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMzc3QTNBOEYxNUVGQ0U5QTAwNTlGNUM3IC8qIEJpdG1hcEltYWdlQ0cuY3BwICovOyB9
OworCQkzNzdBM0E5MDE1RUZDRTlCMDA1OUY1QzcgLyogUGxhdGZvcm1JbWFnZUNHLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3N0EzQThGMTVFRkNF
OUEwMDU5RjVDNyAvKiBQbGF0Zm9ybUltYWdlQ0cuY3BwICovOyB9OwogCQkzNzkxOUMyMzBCN0Qx
ODg2MDBBNTY5OTggLyogUG9zaXRpb25JdGVyYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzkxOUMyMTBCN0QxODg2MDBBNTY5OTggLyogUG9z
aXRpb25JdGVyYXRvci5jcHAgKi87IH07CiAJCTM3OTE5QzI0MEI3RDE4ODYwMEE1Njk5OCAvKiBQ
b3NpdGlvbkl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAzNzkxOUMyMjBCN0QxODg2MDBBNTY5OTggLyogUG9zaXRpb25JdGVyYXRvci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKCk7IH07IH07CiAJCTM3OTI5MTdBMTk4NUVGMzkw
MEY0QjY2MSAvKiBDcmVkZW50aWFsQmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMzc5MjkxNzgxOTg1RUYzOTAwRjRCNjYxIC8qIENyZWRlbnRpYWxC
YXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAg
LTIzMjQsMTAgKzIzMjQsMTQgQEAKIAkJNTNFRDNGREYxNjdBODhFNzAwNjc2MkU2IC8qIEpTSW50
ZXJuYWxTZXR0aW5nc0dlbmVyYXRlZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTNFRDNGREQxNjdBODhFNzAwNjc2MkU2IC8qIEpTSW50ZXJuYWxTZXR0
aW5nc0dlbmVyYXRlZC5oICovOyB9OwogCQk1M0VGNzY2QjE2NTMwQTYxMDA0Q0JFNDkgLyogU2V0
dGluZ3NNYWNyb3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUzRUY3NjZBMTY1MzBBNjEwMDRDQkU0OSAvKiBTZXR0aW5nc01hY3Jvcy5oICovOyB9Owog
CQk1M0VGNzY2QzE2NTMxOTk0MDA0Q0JFNDkgLyogU2V0dGluZ3NNYWNyb3MuaCBpbiBDb3B5IEdl
bmVyYXRlZCBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRUY3
NjZBMTY1MzBBNjEwMDRDQkU0OSAvKiBTZXR0aW5nc01hY3Jvcy5oICovOyB9OworCQk1NTA0RTRD
QjFEMzU1N0IyMDBGRTUwODggLyogQml0bWFwUGl4ZWxzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTA0RTRDQTFEMzU1MzJEMDBGRTUwODggLyogQml0
bWFwUGl4ZWxzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNTUwQTBCQzkwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTUwQTBCQzcwODVGNjAz
OTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuY3BwICovOyB9OwogCQk1NTBBMEJDQTA4NUY2MDM5
MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTUwQTBCQzgwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5h
bWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1
NTVCODdFQzFDQUFGMEFCMDAzNDk0MjUgLyogSW1hZ2VEZWNvZGVyQ0cuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTU1Qjg3RUExQ0FBRjBBQjAwMzQ5
NDI1IC8qIEltYWdlRGVjb2RlckNHLmNwcCAqLzsgfTsKIAkJNTU1Qjg3RUQxQ0FBRjBBQjAwMzQ5
NDI1IC8qIEltYWdlRGVjb2RlckNHLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1NTVCODdFQjFDQUFGMEFCMDAzNDk0MjUgLyogSW1hZ2VEZWNvZGVyQ0cu
aCAqLzsgfTsKKwkJNTU3NEYwODcxRDAyNzkwOTAwQjlGMTRDIC8qIFBsYXRmb3JtSW1hZ2UuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1NzRGMDg1MUQw
Mjc0NDQwMEI5RjE0QyAvKiBQbGF0Zm9ybUltYWdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTVDQkE2QTExRDFERjJFMTAwNDUxODYwIC8qIElt
YWdlRnJhbWVEYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDU1Q0JBNjlGMUQxREYyRTEwMDQ1MTg2MCAvKiBJbWFnZUZyYW1lRGF0YS5jcHAgKi87
IH07CisJCTU1Q0JBNkEyMUQxREYyRTEwMDQ1MTg2MCAvKiBJbWFnZUZyYW1lRGF0YS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTVDQkE2QTAxRDFERjJF
MTAwNDUxODYwIC8qIEltYWdlRnJhbWVEYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTcyQTdGMjExQzZFNTcxOTAwOUM2MTQ5IC8qIFNpbXVs
YXRlZENsaWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1NzJBN0YyMDFDNkU1NzE5MDA5QzYxNDkgLyogU2ltdWxhdGVkQ2xpY2suaCAqLzsgfTsKIAkJ
NTcyQTdGMjMxQzZFNUE2NjAwOUM2MTQ5IC8qIFNpbXVsYXRlZENsaWNrLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MkE3RjIyMUM2RTVBNjYwMDlD
NjE0OSAvKiBTaW11bGF0ZWRDbGljay5jcHAgKi87IH07CiAJCTU3RUY1RTYwMUQyMEM4MzkwMDE3
MUU2MCAvKiBUZXh0Q29kZWNSZXBsYWNlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTdFRjVFNUYxRDIwQzgzOTAwMTcxRTYwIC8qIFRleHRDb2Rl
Y1JlcGxhY2VtZW50LmggKi87IH07CkBAIC05MDYzLDcgKzkwNjcsNyBAQAogCQkzNzZEQ0NFMDEz
QjRGOTY2MDAyRUJFRkMgLyogVGV4dFJ1bi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBUZXh0UnVuLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzc3
MkIwOTUxNjUzNTg1NjAwMEE0OUNBIC8qIFBvcHVwT3BlbmluZ09ic2VydmVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBvcHVwT3BlbmluZ09ic2VydmVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3NzRBQkEzMEZBMjFFQjQwMEFEN0RFOSAvKiBPdmVybGFw
VGVzdFJlcXVlc3RDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT3Zl
cmxhcFRlc3RSZXF1ZXN0Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTM3
N0EzQThGMTVFRkNFOUEwMDU5RjVDNyAvKiBCaXRtYXBJbWFnZUNHLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJpdG1hcEltYWdlQ0cuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkzNzdBM0E4RjE1RUZDRTlBMDA1OUY1QzcgLyogUGxhdGZvcm1JbWFn
ZUNHLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBsYXRmb3JtSW1h
Z2VDRy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3OTE5QzIxMEI3RDE4ODYw
MEE1Njk5OCAvKiBQb3NpdGlvbkl0ZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBQb3NpdGlvbkl0ZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMzc5MTlDMjIwQjdEMTg4NjAwQTU2OTk4IC8qIFBvc2l0aW9uSXRlcmF0b3IuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBvc2l0aW9uSXRlcmF0b3IuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzc5MjkxNzgxOTg1RUYzOTAwRjRCNjYxIC8qIENy
ZWRlbnRpYWxCYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyZWRlbnRp
YWxCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05OTg5LDEwICs5OTkzLDE0
IEBACiAJCTUzRUQzRkRDMTY3QTg4RTcwMDY3NjJFNiAvKiBKU0ludGVybmFsU2V0dGluZ3NHZW5l
cmF0ZWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNJbnRlcm5h
bFNldHRpbmdzR2VuZXJhdGVkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTNF
RDNGREQxNjdBODhFNzAwNjc2MkU2IC8qIEpTSW50ZXJuYWxTZXR0aW5nc0dlbmVyYXRlZC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0ludGVybmFsU2V0dGluZ3NHZW5lcmF0
ZWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTNFRjc2NkExNjUzMEE2MTAwNENC
RTQ5IC8qIFNldHRpbmdzTWFjcm9zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNldHRpbmdzTWFjcm9zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU1MDRFNENB
MUQzNTUzMkQwMEZFNTA4OCAvKiBCaXRtYXBQaXhlbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQml0bWFw
UGl4ZWxzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU1MEEwQkM3MDg1RjYwMzkw
MDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFF1YWxpZmllZE5hbWUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJNTUwQTBCQzgw
ODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUXVhbGlmaWVkTmFtZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJNTU1Qjg3RUEx
Q0FBRjBBQjAwMzQ5NDI1IC8qIEltYWdlRGVjb2RlckNHLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdlRGVjb2RlckNHLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTU1Qjg3RUIxQ0FBRjBBQjAwMzQ5NDI1IC8qIEltYWdlRGVjb2RlckNHLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlRGVjb2RlckNHLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU1NzRGMDg1MUQwMjc0NDQwMEI5RjE0QyAvKiBQbGF0
Zm9ybUltYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtSW1hZ2UuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNTVDQkE2OUYxRDFERjJFMTAwNDUxODYwIC8qIEltYWdlRnJhbWVE
YXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdlRnJhbWVE
YXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTVDQkE2QTAxRDFERjJFMTAw
NDUxODYwIC8qIEltYWdlRnJhbWVEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEltYWdlRnJhbWVEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU1RDQw
OEY3MUE3QzYzMTgwMEM3ODQ1MCAvKiBTVkdJbWFnZUNsaWVudHMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU1ZHSW1hZ2VDbGllbnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTU3MkE3RjIwMUM2RTU3MTkwMDlDNjE0OSAvKiBTaW11bGF0ZWRDbGljay5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaW11bGF0ZWRDbGljay5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1NzJBN0YyMjFDNkU1QTY2MDA5QzYxNDkgLyogU2ltdWxh
dGVkQ2xpY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2ltdWxh
dGVkQ2xpY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjIwMjgsNyArMjIw
MzYsNiBAQAogCQlCMjc1MzUyOTBCMDUzODE0MDAyQ0U2NEYgLyogY2cgKi8gPSB7CiAJCQlpc2Eg
PSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTM3N0EzQThGMTVFRkNFOUEwMDU5RjVD
NyAvKiBCaXRtYXBJbWFnZUNHLmNwcCAqLywKIAkJCQkwRkNGMzMyMzBGMkI5NzE1MDA0QjY3OTUg
LyogQ29sb3JDRy5jcHAgKi8sCiAJCQkJQjI3NTM1MkIwQjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0
UG9pbnRDRy5jcHAgKi8sCiAJCQkJQjI3NTM1MkMwQjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0UmVj
dENHLmNwcCAqLywKQEAgLTIyMDU1LDYgKzIyMDYyLDcgQEAKIAkJCQlBODBBMzhGRDBFNTBDQzgy
MDBBMjVFQkMgLyogUGF0dGVybkNHLmNwcCAqLywKIAkJCQlCMjc1MzUzNjBCMDUzODE0MDAyQ0U2
NEYgLyogUERGRG9jdW1lbnRJbWFnZS5jcHAgKi8sCiAJCQkJQjI3NTM1MzcwQjA1MzgxNDAwMkNF
NjRGIC8qIFBERkRvY3VtZW50SW1hZ2UuaCAqLywKKwkJCQkzNzdBM0E4RjE1RUZDRTlBMDA1OUY1
QzcgLyogUGxhdGZvcm1JbWFnZUNHLmNwcCAqLywKIAkJCQkxRkM0MEZCODE2NTVDNTkxMDA0MEYy
OUUgLyogU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5jcHAgKi8sCiAJCQkJMUZDNDBGQjcxNjU1QzU5
MTAwNDBGMjlFIC8qIFN1YmltYWdlQ2FjaGVXaXRoVGltZXIuaCAqLywKIAkJCQlCMjc1MzUyQTBC
MDUzODE0MDAyQ0U2NEYgLyogVHJhbnNmb3JtYXRpb25NYXRyaXhDRy5jcHAgKi8sCkBAIC0yMjEy
Miw2ICsyMjEzMCw3IEBACiAJCQkJQkVGMjlFRTkxNzE1REQwOTAwQzRCNEM5IC8qIEF1ZGlvVHJh
Y2tQcml2YXRlLmggKi8sCiAJCQkJQTg5OTQzMjcwQjQyMzM4NzAwRDdDODAyIC8qIEJpdG1hcElt
YWdlLmNwcCAqLywKIAkJCQlBODk5NDMyNjBCNDIzMzg3MDBEN0M4MDIgLyogQml0bWFwSW1hZ2Uu
aCAqLywKKwkJCQk1NTA0RTRDQTFEMzU1MzJEMDBGRTUwODggLyogQml0bWFwUGl4ZWxzLmggKi8s
CiAJCQkJQ0RERTAyRTkxOEIzREZDNzAwQ0Y3RkYxIC8qIENETVNlc3Npb24uaCAqLywKIAkJCQlC
Mjc1MzUzODBCMDUzODE0MDAyQ0U2NEYgLyogQ29sb3IuY3BwICovLAogCQkJCUIyNzUzNTM5MEIw
NTM4MTQwMDJDRTY0RiAvKiBDb2xvci5oICovLApAQCAtMjIyMDYsNiArMjIyMTUsOCBAQAogCQkJ
CTQzRDI1OTc2MTNDODE2RjQwMDYwODU1OSAvKiBJbWFnZUJ1ZmZlci5jcHAgKi8sCiAJCQkJQjJB
MTBCOTEwQjM4MThCRDAwMDk5QUE0IC8qIEltYWdlQnVmZmVyLmggKi8sCiAJCQkJMjJCRDlGN0Qx
MzUzNjI1QzAwOUJEMTAyIC8qIEltYWdlQnVmZmVyRGF0YS5oICovLAorCQkJCTU1Q0JBNjlGMUQx
REYyRTEwMDQ1MTg2MCAvKiBJbWFnZUZyYW1lRGF0YS5jcHAgKi8sCisJCQkJNTVDQkE2QTAxRDFE
RjJFMTAwNDUxODYwIC8qIEltYWdlRnJhbWVEYXRhLmggKi8sCiAJCQkJQkM3RjQ0QTcwQjlFMzI0
RTAwQTlEMDgxIC8qIEltYWdlT2JzZXJ2ZXIuaCAqLywKIAkJCQlBODc0OEQ3NDEyQ0MzRjg5MDAx
RkJBNDEgLyogSW1hZ2VPcmllbnRhdGlvbi5jcHAgKi8sCiAJCQkJQTg3NDhENjYxMkNDMzc2MzAw
MUZCQTQxIC8qIEltYWdlT3JpZW50YXRpb24uaCAqLywKQEAgLTIyMjU1LDYgKzIyMjY2LDcgQEAK
IAkJCQkyRDUwMDJGQTFCNTZENzk5MDAyMEFBRjcgLyogUGF0aFV0aWxpdGllcy5oICovLAogCQkJ
CUE4RkE2RTVDMEU0Q0ZERUQwMEQ1Q0Y0OSAvKiBQYXR0ZXJuLmNwcCAqLywKIAkJCQlBOEZBNkU1
QjBFNENGREVEMDBENUNGNDkgLyogUGF0dGVybi5oICovLAorCQkJCTU1NzRGMDg1MUQwMjc0NDQw
MEI5RjE0QyAvKiBQbGF0Zm9ybUltYWdlLmggKi8sCiAJCQkJMDU2MkY5NjAxNTczRjg4RjAwMzFD
QTE2IC8qIFBsYXRmb3JtTGF5ZXIuaCAqLywKIAkJCQlDRUVGQ0Q3QjE5REIzM0RDMDAzODc2RDcg
LyogUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmggKi8sCiAJCQkJMDcyODQ3RTIxNkVCQzVC
MDAwNDNDRkE0IC8qIFBsYXRmb3JtVGV4dFRyYWNrLmggKi8sCkBAIC0yNjAyOCw2ICsyNjA0MCw3
IEBACiAJCQkJODVFNzExQjkwQUM1RDUzNTAwNTMyNzBGIC8qIERPTUhUTUxNYXBFbGVtZW50SW50
ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNTE1NzlGMEMwM0JCRDMwMDhCQjBFRSAvKiBE
T01IVE1MTWFycXVlZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNTE1NkVBMEMwM0I3
NDEwMDhCQjBFRSAvKiBET01IVE1MTWFycXVlZUVsZW1lbnRJbnRlcm5hbC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNTU3NEYwODcxRDAyNzkwOTAwQjlGMTRDIC8qIFBsYXRmb3JtSW1hZ2UuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTJERUM2NjU1MUM4MkQwNDEwMDk5ODQ2QSAvKiBET01IVE1MTWVkaWFF
bGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkyREVDNjY1MTFDODJEMDE2MDA5OTg0NkEgLyog
RE9NSFRNTE1lZGlhRWxlbWVudEludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NUJBNEQx
MzBBQTY4ODY4MDA4ODA1MkQgLyogRE9NSFRNTE1lbnVFbGVtZW50LmggaW4gSGVhZGVycyAqLywK
QEAgLTI2NDY5LDYgKzI2NDgyLDcgQEAKIAkJCQlEMzU5RDc4QTEyOUNBMjcxMDAwNkU1RDIgLyog
SFRNTERldGFpbHNFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEVBNzlGQTBBMTkxNkRG
MDBBOEVGNUYgLyogSFRNTERpcmVjdG9yeUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4
RUE3Q0I3MEExOTJCOUMwMEE4RUY1RiAvKiBIVE1MRGl2RWxlbWVudC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJNTVDQkE2QTIxRDFERjJFMTAwNDUxODYwIC8qIEltYWdlRnJhbWVEYXRhLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBOEVBNzlGNzBBMTkxNkRGMDBBOEVGNUYgLyogSFRNTERMaXN0RWxlbWVu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNGMTk4RTUwODI0NUU1OTAwMUU5QUJDIC8qIEhUTUxE
b2N1bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc3QjM4NjcxMjI4ODNFOTAwQjgxRkY4IC8q
IEhUTUxEb2N1bWVudFBhcnNlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yODM2OSw2ICsyODM4Myw3
IEBACiAJCQkJQjIyMjc5OTMwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0FuaW1hdGVNb3Rpb25FbGVt
ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyNzk5NTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZH
QW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3OTk4MEQw
MEJGMjIwMDcxQjc4MiAvKiBTVkdBbmltYXRpb25FbGVtZW50LmggaW4gSGVhZGVycyAqLywKKwkJ
CQk1NTA0RTRDQjFEMzU1N0IyMDBGRTUwODggLyogQml0bWFwUGl4ZWxzLmggaW4gSGVhZGVycyAq
LywKIAkJCQk0MzlEMzM0NTEzQTY5MTFDMDBDMjBGNEYgLyogU1ZHQW5pbWF0b3JGYWN0b3J5Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwOEZCM0Y4NDEzQkM3NTRDMDA5OUZDMTggLyogU1ZHQXR0cmli
dXRlVG9Qcm9wZXJ0eU1hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5OUMwRDAwQkYyMjAw
NzFCNzgyIC8qIFNWR0NpcmNsZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjk0MjEsNyAr
Mjk0MzYsNyBAQAogCQkJCUZEQzU0RjA0MTM5OUIwREEwMDhEOTExNyAvKiBCaXF1YWRGaWx0ZXJO
b2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZEMzE2MDI2MTJCMDI2NzYwMEMxQTM1OSAvKiBC
aXF1YWRQcm9jZXNzb3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTg5OTQzMjkwQjQyMzM4ODAw
RDdDODAyIC8qIEJpdG1hcEltYWdlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTM3N0EzQTkwMTVF
RkNFOUIwMDU5RjVDNyAvKiBCaXRtYXBJbWFnZUNHLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTM3
N0EzQTkwMTVFRkNFOUIwMDU5RjVDNyAvKiBQbGF0Zm9ybUltYWdlQ0cuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJOTc2RDZDNzgxMjJCOEEzRDAwMUZEMUY3IC8qIEJsb2IuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMkVERUYxRjMxMjFCMEVGQzAwNzI2REIyIC8qIEJsb2JEYXRhLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUUxRDMxQ0RDMTkxOTYwMjAwMDEwMDVBMyAvKiBCbG9iRGF0YUZpbGVSZWZl
cmVuY2UuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yOTc4NCw2ICsyOTc5OSw3IEBACiAJCQkJMkUy
RDk5RTgxMEUyQkMxQzAwNDk2MzM3IC8qIERPTUJsb2IubW0gaW4gU291cmNlcyAqLywKIAkJCQk4
NTA4OUNEODBBOThDNDI4MDBBMjc1QUEgLyogRE9NQ0RBVEFTZWN0aW9uLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJODVBQ0E5ODcwQTlCNTIwMzAwNjcxRTkwIC8qIERPTUNoYXJhY3RlckRhdGEubW0g
aW4gU291cmNlcyAqLywKKwkJCQk1NUNCQTZBMTFEMURGMkUxMDA0NTE4NjAgLyogSW1hZ2VGcmFt
ZURhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODUwODlDREEwQTk4QzQyODAwQTI3NUFBIC8q
IERPTUNvbW1lbnQubW0gaW4gU291cmNlcyAqLywKIAkJCQk5NzhEMDdCRTE0NUEwRjZDMDA5Njkw
OEQgLyogRE9NQ29yZUV4Y2VwdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NThDMzhBNjBB
QThGMjA0MDBCMTg3QTQgLyogRE9NQ291bnRlci5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET00ubW0gYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9vYmpjL0RPTS5tbQppbmRleCA0MDExZWEzZmQ4YzA0Njk3NGM1NWQ0OGUzOTZmMWI4
M2I4MWYzMzVkLi5hNWFjNGYwNWFlMzM5YThkNjQ3MDZjMTBmYzBmN2FmNDA0MjU2MjNjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTS5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTS5tbQpAQCAtNjA2LDcgKzYwNiw3IEBAIC0gKHZvaWQp
Z2V0UHJldmlld1NuYXBzaG90SW1hZ2U6KENHSW1hZ2VSZWYqKWNnSW1hZ2UgYW5kUmVjdHM6KE5T
QXJyYXkgKiopcmVjdHMKIAogICAgIGlmICh0ZXh0SW5kaWNhdG9yKSB7CiAgICAgICAgIGlmIChJ
bWFnZSogaW1hZ2UgPSB0ZXh0SW5kaWNhdG9yLT5jb250ZW50SW1hZ2UoKSkKLSAgICAgICAgICAg
ICpjZ0ltYWdlID0gKENHSW1hZ2VSZWYpQ0ZBdXRvcmVsZWFzZShDR0ltYWdlUmV0YWluKGltYWdl
LT5nZXRDR0ltYWdlUmVmKCkpKTsKKyAgICAgICAgICAgICpjZ0ltYWdlID0gaW1hZ2UtPm5hdGl2
ZUltYWdlKCkuYXV0b3JlbGVhc2UoKTsKICAgICB9CiAKICAgICBSZXRhaW5QdHI8TlNNdXRhYmxl
QXJyYXk+IHJlY3RBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvVGV4dEluZGljYXRvcldpbmRv
dy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1RleHRJbmRpY2F0b3JXaW5kb3cubW0KaW5k
ZXggMzY0YTlhODdjZTZmMDY2Mzk0OGI4ODQ2ZThlMmNlNmQxOTBmMjQ4OS4uYTc0ZGE4NWFjZWNh
M2M2Njk4ZGQxNTZhYjMxYTZjOTcxYTM1NGU2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9tYWMvVGV4dEluZGljYXRvcldpbmRvdy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L21hYy9UZXh0SW5kaWNhdG9yV2luZG93Lm1tCkBAIC0xNjIsOSArMTYyLDkgQEAgLSAoaW5zdGFu
Y2V0eXBlKWluaXRXaXRoRnJhbWU6KE5TUmVjdClmcmFtZSB0ZXh0SW5kaWNhdG9yOihQYXNzUmVm
UHRyPFRleHRJbmRpY2EKICAgICBjb250ZW50c0ltYWdlTG9naWNhbFNpemUuc2NhbGUoMSAvIF90
ZXh0SW5kaWNhdG9yLT5jb250ZW50SW1hZ2VTY2FsZUZhY3RvcigpKTsKICAgICBSZXRhaW5QdHI8
Q0dJbWFnZVJlZj4gY29udGVudHNJbWFnZTsKICAgICBpZiAoaW5kaWNhdG9yV2FudHNDb250ZW50
Q3Jvc3NmYWRlKCpfdGV4dEluZGljYXRvcikpCi0gICAgICAgIGNvbnRlbnRzSW1hZ2UgPSBfdGV4
dEluZGljYXRvci0+Y29udGVudEltYWdlV2l0aEhpZ2hsaWdodCgpLT5nZXRDR0ltYWdlUmVmKCk7
CisgICAgICAgIGNvbnRlbnRzSW1hZ2UgPSBfdGV4dEluZGljYXRvci0+Y29udGVudEltYWdlV2l0
aEhpZ2hsaWdodCgpLT5uYXRpdmVJbWFnZSgpOwogICAgIGVsc2UKLSAgICAgICAgY29udGVudHNJ
bWFnZSA9IF90ZXh0SW5kaWNhdG9yLT5jb250ZW50SW1hZ2UoKS0+Z2V0Q0dJbWFnZVJlZigpOwor
ICAgICAgICBjb250ZW50c0ltYWdlID0gX3RleHRJbmRpY2F0b3ItPmNvbnRlbnRJbWFnZSgpLT5u
YXRpdmVJbWFnZSgpOwogCiAgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBib3VuY2VMYXll
cnMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKIApAQCAtMjY1LDcg
KzI2NSw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8Q0FLZXlmcmFtZUFuaW1hdGlvbj4gY3JlYXRlQm91
bmNlQW5pbWF0aW9uKENGVGltZUludGVydmFsIGR1cmF0CiBzdGF0aWMgUmV0YWluUHRyPENBQmFz
aWNBbmltYXRpb24+IGNyZWF0ZUNvbnRlbnRDcm9zc2ZhZGVBbmltYXRpb24oQ0ZUaW1lSW50ZXJ2
YWwgZHVyYXRpb24sIFRleHRJbmRpY2F0b3ImIHRleHRJbmRpY2F0b3IpCiB7CiAgICAgUmV0YWlu
UHRyPENBQmFzaWNBbmltYXRpb24+IGNyb3NzZmFkZUFuaW1hdGlvbiA9IFtDQUJhc2ljQW5pbWF0
aW9uIGFuaW1hdGlvbldpdGhLZXlQYXRoOkAiY29udGVudHMiXTsKLSAgICBSZXRhaW5QdHI8Q0dJ
bWFnZVJlZj4gY29udGVudHNJbWFnZSA9IHRleHRJbmRpY2F0b3IuY29udGVudEltYWdlKCktPmdl
dENHSW1hZ2VSZWYoKTsKKyAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gY29udGVudHNJbWFnZSA9
IHRleHRJbmRpY2F0b3IuY29udGVudEltYWdlKCktPm5hdGl2ZUltYWdlKCk7CiAgICAgW2Nyb3Nz
ZmFkZUFuaW1hdGlvbiBzZXRUb1ZhbHVlOihpZCljb250ZW50c0ltYWdlLmdldCgpXTsKICAgICBb
Y3Jvc3NmYWRlQW5pbWF0aW9uIHNldEZpbGxNb2RlOmtDQUZpbGxNb2RlRm9yd2FyZHNdOwogICAg
IFtjcm9zc2ZhZGVBbmltYXRpb24gc2V0UmVtb3ZlZE9uQ29tcGxldGlvbjpOT107CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKaW5kZXggNDYw
ZDFiODU2Yjc3YjdjZjRlYzY4OTY1ODFiODMzZDNlN2Y5NzAxNC4uZmM2NDlkMTBhYWI5YzEzZmZm
MjkzMDU1YTcwN2NiNzQ1Mzc0NjkxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcApAQCAtNjgsMTUgKzY4LDEzIEBAIEJpdG1hcEltYWdl
OjpCaXRtYXBJbWFnZShOYXRpdmVJbWFnZVB0ciYmIGltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNl
cnZlcikKICAgICAsIG1faGF2ZUZyYW1lQ291bnQodHJ1ZSkKICAgICAsIG1fYW5pbWF0aW9uRmlu
aXNoZWRXaGVuQ2F0Y2hpbmdVcChmYWxzZSkKIHsKKyAgICBtX2ZyYW1lcy5yZXNlcnZlSW5pdGlh
bENhcGFjaXR5KDEpOworICAgIG1fZnJhbWVzLnVuY2hlY2tlZEFwcGVuZChXVEZNb3ZlKGltYWdl
KSk7CisgICAgCiAgICAgLy8gU2luY2Ugd2UgZG9uJ3QgaGF2ZSBhIGRlY29kZXIsIHdlIGNhbid0
IGZpZ3VyZSBvdXQgdGhlIGltYWdlIG9yaWVudGF0aW9uLgogICAgIC8vIFNldCBtX3NpemVSZXNw
ZWN0aW5nT3JpZW50YXRpb24gdG8gYmUgdGhlIHNhbWUgYXMgbV9zaXplIHNvIGl0J3Mgbm90IDB4
MC4KLSAgICBtX3NpemVSZXNwZWN0aW5nT3JpZW50YXRpb24gPSBtX3NpemUgPSBOYXRpdmVJbWFn
ZTo6c2l6ZShpbWFnZSk7CisgICAgbV9zaXplUmVzcGVjdGluZ09yaWVudGF0aW9uID0gbV9zaXpl
ID0gbV9mcmFtZXNbMF0uc2l6ZSgpOwogICAgIG1fZGVjb2RlZFNpemUgPSBtX3NpemUuYXJlYSgp
ICogNDsKLSAgICAKLSAgICBtX2ZyYW1lcy5ncm93KDEpOwotICAgIG1fZnJhbWVzWzBdLm1faGFz
QWxwaGEgPSBOYXRpdmVJbWFnZTo6aGFzQWxwaGEoaW1hZ2UpOwotICAgIG1fZnJhbWVzWzBdLm1f
aGF2ZU1ldGFkYXRhID0gdHJ1ZTsKLSAgICBtX2ZyYW1lc1swXS5tX2ltYWdlID0gV1RGTW92ZShp
bWFnZSk7CiB9CiAKIEJpdG1hcEltYWdlOjp+Qml0bWFwSW1hZ2UoKQpAQCAtMTA1LDcgKzEwMyw3
IEBAIGJvb2wgQml0bWFwSW1hZ2U6OmhhdmVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgp
CiAgICAgaWYgKGluZGV4ID49IG1fZnJhbWVzLnNpemUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgcmV0dXJuIG1fZnJhbWVzW2luZGV4XS5tX2ltYWdlOworICAgIHJldHVybiBtX2Zy
YW1lc1tpbmRleF0uaGFzSW1hZ2UoKTsKIH0KIAogYm9vbCBCaXRtYXBJbWFnZTo6aGFzU2luZ2xl
U2VjdXJpdHlPcmlnaW4oKSBjb25zdApAQCAtMTI1LDkgKzEyMyw3IEBAIHZvaWQgQml0bWFwSW1h
Z2U6OmRlc3Ryb3lEZWNvZGVkRGF0YShib29sIGRlc3Ryb3lBbGwpCiAgICAgICAgIC8vIFRoZSB1
bmRlcmx5aW5nIGZyYW1lIGlzbid0IGFjdHVhbGx5IGNoYW5naW5nICh3ZSdyZSBqdXN0IHRyeWlu
ZyB0bwogICAgICAgICAvLyBzYXZlIHRoZSBtZW1vcnkgZm9yIHRoZSBmcmFtZWJ1ZmZlciBkYXRh
KSwgc28gd2UgZG9uJ3QgbmVlZCB0byBjbGVhcgogICAgICAgICAvLyB0aGUgbWV0YWRhdGEuCi0g
ICAgICAgIHVuc2lnbmVkIGZyYW1lQnl0ZXMgPSBtX2ZyYW1lc1tpXS5tX2ZyYW1lQnl0ZXM7Ci0g
ICAgICAgIGlmIChtX2ZyYW1lc1tpXS5jbGVhcihmYWxzZSkpCi0gICAgICAgICAgICBmcmFtZUJ5
dGVzQ2xlYXJlZCArPSBmcmFtZUJ5dGVzOworICAgICAgICBmcmFtZUJ5dGVzQ2xlYXJlZCArPSBt
X2ZyYW1lc1tpXS5jbGVhcihJbWFnZUZyYW1lRGF0YTo6Q2FjaGluZzo6TWV0YWRhdGEpOwogICAg
IH0KIAogICAgIG1fc291cmNlLmNsZWFyKGRlc3Ryb3lBbGwsIGNsZWFyQmVmb3JlRnJhbWUsIGRh
dGEoKSwgbV9hbGxEYXRhUmVjZWl2ZWQpOwpAQCAtMTUwLDggKzE0Niw4IEBAIHZvaWQgQml0bWFw
SW1hZ2U6OmRlc3Ryb3lEZWNvZGVkRGF0YUlmTmVjZXNzYXJ5KGJvb2wgZGVzdHJveUFsbCkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgdW5zaWduZWQgYWxsRnJhbWVCeXRlcyA9IDA7Ci0gICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBtX2ZyYW1lcy5zaXplKCk7ICsraSkKLSAgICAgICAgYWxsRnJh
bWVCeXRlcyArPSBtX2ZyYW1lc1tpXS51c2VkRnJhbWVCeXRlcygpOworICAgIGZvciAoYXV0byYg
ZnJhbWUgOiBtX2ZyYW1lcykKKyAgICAgICAgYWxsRnJhbWVCeXRlcyArPSBmcmFtZS5mcmFtZUJ5
dGVzKCk7CiAKICAgICBpZiAoYWxsRnJhbWVCeXRlcyA+IGxhcmdlQW5pbWF0aW9uQ3V0b2ZmKSB7
CiAgICAgICAgIExPRyhJbWFnZXMsICJCaXRtYXBJbWFnZSAlcCBkZXN0cm95RGVjb2RlZERhdGFJ
Zk5lY2Vzc2FyeSBkZXN0cm95aW5nRGF0YTogYWxsRnJhbWVCeXRlcz0ldSBjdXRvZmY9JXUiLCB0
aGlzLCBhbGxGcmFtZUJ5dGVzLCBsYXJnZUFuaW1hdGlvbkN1dG9mZik7CkBAIC0xNzcsNyArMTcz
LDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZGVzdHJveU1ldGFkYXRhQW5kTm90aWZ5KHVuc2lnbmVk
IGZyYW1lQnl0ZXNDbGVhcmVkLCBDbGVhcmVkU28KICAgICAgICAgaW1hZ2VPYnNlcnZlcigpLT5k
ZWNvZGVkU2l6ZUNoYW5nZWQodGhpcywgLXNhZmVDYXN0PGludD4oZnJhbWVCeXRlc0NsZWFyZWQp
KTsKIH0KIAotdm9pZCBCaXRtYXBJbWFnZTo6Y2FjaGVGcmFtZShzaXplX3QgaW5kZXgsIFN1YnNh
bXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgSW1hZ2VGcmFtZUNhY2hpbmcgZnJhbWVDYWNo
aW5nKQordm9pZCBCaXRtYXBJbWFnZTo6Y2FjaGVGcmFtZShzaXplX3QgaW5kZXgsIFN1YnNhbXBs
aW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgSW1hZ2VGcmFtZURhdGE6OkNhY2hpbmcgY2FjaGlu
ZykKIHsKICAgICBzaXplX3QgbnVtRnJhbWVzID0gZnJhbWVDb3VudCgpOwogICAgIEFTU0VSVCht
X2RlY29kZWRTaXplID09IDAgfHwgbnVtRnJhbWVzID4gMSk7CkBAIC0xODUsMjUgKzE4MSwxMiBA
QCB2b2lkIEJpdG1hcEltYWdlOjpjYWNoZUZyYW1lKHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdM
ZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBJbQogICAgIGlmIChtX2ZyYW1lcy5zaXplKCkgPCBudW1G
cmFtZXMpCiAgICAgICAgIG1fZnJhbWVzLmdyb3cobnVtRnJhbWVzKTsKIAotICAgIGlmIChmcmFt
ZUNhY2hpbmcgPT0gQ2FjaGVNZXRhZGF0YUFuZEZyYW1lKSB7Ci0gICAgICAgIG1fZnJhbWVzW2lu
ZGV4XS5tX2ltYWdlID0gbV9zb3VyY2UuY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoaW5kZXgsIHN1
YnNhbXBsaW5nTGV2ZWwpOwotICAgICAgICBtX2ZyYW1lc1tpbmRleF0ubV9zdWJzYW1wbGluZ0xl
dmVsID0gc3Vic2FtcGxpbmdMZXZlbDsKLSAgICB9Ci0KLSAgICBtX2ZyYW1lc1tpbmRleF0ubV9v
cmllbnRhdGlvbiA9IG1fc291cmNlLm9yaWVudGF0aW9uQXRJbmRleChpbmRleCk7Ci0gICAgbV9m
cmFtZXNbaW5kZXhdLm1faGF2ZU1ldGFkYXRhID0gdHJ1ZTsKLSAgICBtX2ZyYW1lc1tpbmRleF0u
bV9pc0NvbXBsZXRlID0gbV9zb3VyY2UuZnJhbWVJc0NvbXBsZXRlQXRJbmRleChpbmRleCk7Cisg
ICAgbV9mcmFtZXNbaW5kZXhdID0gbV9zb3VyY2UuY3JlYXRlRnJhbWVEYXRhQXRJbmRleChpbmRl
eCwgc3Vic2FtcGxpbmdMZXZlbCwgY2FjaGluZyk7CiAKLSAgICBpZiAocmVwZXRpdGlvbkNvdW50
KGZhbHNlKSAhPSBjQW5pbWF0aW9uTm9uZSkKLSAgICAgICAgbV9mcmFtZXNbaW5kZXhdLm1fZHVy
YXRpb24gPSBtX3NvdXJjZS5mcmFtZUR1cmF0aW9uQXRJbmRleChpbmRleCk7CisgICAgTE9HKElt
YWdlcywgIkJpdG1hcEltYWdlICVwIGNhY2hlRnJhbWUgJWx1ICglcyV1IGJ5dGVzLCBjb21wbGV0
ZSAlZCkiLCB0aGlzLCBpbmRleCwgY2FjaGluZyA9PSBJbWFnZUZyYW1lRGF0YTo6Q2FjaGluZzo6
TWV0YWRhdGEgPyAibWV0YWRhdGEgb25seSwgIiA6ICIiLCBtX2ZyYW1lc1tpbmRleF0uZnJhbWVC
eXRlcygpLCBtX2ZyYW1lc1tpbmRleF0uaXNDb21wbGV0ZSgpKTsKIAotICAgIG1fZnJhbWVzW2lu
ZGV4XS5tX2hhc0FscGhhID0gbV9zb3VyY2UuZnJhbWVIYXNBbHBoYUF0SW5kZXgoaW5kZXgpOwot
ICAgIG1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lQnl0ZXMgPSBtX3NvdXJjZS5mcmFtZUJ5dGVzQXRJ
bmRleChpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCk7Ci0KLSAgICBMT0coSW1hZ2VzLCAiQml0bWFw
SW1hZ2UgJXAgY2FjaGVGcmFtZSAlbHUgKCVzJXUgYnl0ZXMsIGNvbXBsZXRlICVkKSIsIHRoaXMs
IGluZGV4LCBmcmFtZUNhY2hpbmcgPT0gQ2FjaGVNZXRhZGF0YU9ubHkgPyAibWV0YWRhdGEgb25s
eSwgIiA6ICIiLCBtX2ZyYW1lc1tpbmRleF0ubV9mcmFtZUJ5dGVzLCBtX2ZyYW1lc1tpbmRleF0u
bV9pc0NvbXBsZXRlKTsKLQotICAgIGlmIChtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZSkgewotICAg
ICAgICBpbnQgZGVsdGFCeXRlcyA9IHNhZmVDYXN0PGludD4obV9mcmFtZXNbaW5kZXhdLm1fZnJh
bWVCeXRlcyk7CisgICAgaWYgKG1fZnJhbWVzW2luZGV4XS5oYXNJbWFnZSgpKSB7CisgICAgICAg
IGludCBkZWx0YUJ5dGVzID0gc2FmZUNhc3Q8aW50PihtX2ZyYW1lc1tpbmRleF0uZnJhbWVCeXRl
cygpKTsKICAgICAgICAgbV9kZWNvZGVkU2l6ZSArPSBkZWx0YUJ5dGVzOwogICAgICAgICAvLyBU
aGUgZnVsbHktZGVjb2RlZCBmcmFtZSB3aWxsIHN1YnN1bWUgdGhlIHBhcnRpYWxseSBkZWNvZGVk
IGRhdGEgdXNlZAogICAgICAgICAvLyB0byBkZXRlcm1pbmUgaW1hZ2UgcHJvcGVydGllcy4KQEAg
LTI4OCwyMSArMjcxLDE5IEBAIGJvb2wgQml0bWFwSW1hZ2U6OmRhdGFDaGFuZ2VkKGJvb2wgYWxs
RGF0YVJlY2VpdmVkKQogICAgIC8vIGZyYW1lIGFmZmVjdGVkIGJ5IGFwcGVuZGluZyBuZXcgZGF0
YSBoZXJlLiBUaHVzIHdlIGhhdmUgdG8gY2xlYXIgYWxsIHRoZQogICAgIC8vIGluY29tcGxldGUg
ZnJhbWVzIHRvIGJlIHNhZmUuCiAgICAgdW5zaWduZWQgZnJhbWVCeXRlc0NsZWFyZWQgPSAwOwot
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9mcmFtZXMuc2l6ZSgpOyArK2kpIHsKKyAgICBm
b3IgKGF1dG8mIGZyYW1lIDogbV9mcmFtZXMpIHsKICAgICAgICAgLy8gTk9URTogRG9uJ3QgY2Fs
bCBmcmFtZUlzQ29tcGxldGVBdEluZGV4KCkgaGVyZSwgdGhhdCB3aWxsIHRyeSB0bwogICAgICAg
ICAvLyBkZWNvZGUgYW55IHVuY2FjaGVkIChpLmUuIG5ldmVyLWRlY29kZWQgb3IKICAgICAgICAg
Ly8gY2xlYXJlZC1vbi1hLXByZXZpb3VzLXBhc3MpIGZyYW1lcyEKLSAgICAgICAgdW5zaWduZWQg
ZnJhbWVCeXRlcyA9IG1fZnJhbWVzW2ldLm1fZnJhbWVCeXRlczsKLSAgICAgICAgaWYgKG1fZnJh
bWVzW2ldLm1faGF2ZU1ldGFkYXRhICYmICFtX2ZyYW1lc1tpXS5tX2lzQ29tcGxldGUpCi0gICAg
ICAgICAgICBmcmFtZUJ5dGVzQ2xlYXJlZCArPSAobV9mcmFtZXNbaV0uY2xlYXIodHJ1ZSkgPyBm
cmFtZUJ5dGVzIDogMCk7CisgICAgICAgIGlmIChmcmFtZS5oYXNNZXRhZGF0YSgpICYmICFmcmFt
ZS5pc0NvbXBsZXRlKCkpCisgICAgICAgICAgICBmcmFtZUJ5dGVzQ2xlYXJlZCArPSBmcmFtZS5j
bGVhcihJbWFnZUZyYW1lRGF0YTo6Q2FjaGluZzo6RW1wdHkpOwogICAgIH0KICAgICBkZXN0cm95
TWV0YWRhdGFBbmROb3RpZnkoZnJhbWVCeXRlc0NsZWFyZWQsIENsZWFyZWRTb3VyY2U6Ok5vKTsK
ICNlbHNlCiAgICAgLy8gRklYTUU6IHdoeSBpcyB0aGlzIGRpZmZlcmVudCBmb3IgaU9TPwogICAg
IGludCBkZWx0YUJ5dGVzID0gMDsKICAgICBpZiAoIW1fZnJhbWVzLmlzRW1wdHkoKSkgewotICAg
ICAgICBpbnQgYnl0ZXMgPSBtX2ZyYW1lc1ttX2ZyYW1lcy5zaXplKCkgLSAxXS5tX2ZyYW1lQnl0
ZXM7Ci0gICAgICAgIGlmIChtX2ZyYW1lc1ttX2ZyYW1lcy5zaXplKCkgLSAxXS5jbGVhcih0cnVl
KSkgeworICAgICAgICBpZiAoaW50IGJ5dGVzID0gbV9mcmFtZXNbbV9mcmFtZXMuc2l6ZSgpIC0g
MV0uY2xlYXIoSW1hZ2VGcmFtZURhdGE6OkNhY2hpbmc6OkVtcHR5KSkgewogICAgICAgICAgICAg
ZGVsdGFCeXRlcyArPSBieXRlczsKICAgICAgICAgICAgIGRlbHRhQnl0ZXMgKz0gbV9kZWNvZGVk
UHJvcGVydGllc1NpemU7CiAgICAgICAgICAgICBtX2RlY29kZWRQcm9wZXJ0aWVzU2l6ZSA9IDA7
CkBAIC0zNjYsMTUgKzM0NywxNSBAQCBib29sIEJpdG1hcEltYWdlOjppc1NpemVBdmFpbGFibGUo
KQogICAgIHJldHVybiBtX3NpemVBdmFpbGFibGU7CiB9CiAKLWJvb2wgQml0bWFwSW1hZ2U6OmVu
c3VyZUZyYW1lSXNDYWNoZWQoc2l6ZV90IGluZGV4LCBJbWFnZUZyYW1lQ2FjaGluZyBmcmFtZUNh
Y2hpbmcpCitib29sIEJpdG1hcEltYWdlOjplbnN1cmVGcmFtZUlzQ2FjaGVkKHNpemVfdCBpbmRl
eCwgSW1hZ2VGcmFtZURhdGE6OkNhY2hpbmcgY2FjaGluZykKIHsKICAgICBpZiAoaW5kZXggPj0g
ZnJhbWVDb3VudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoaW5kZXggPj0g
bV9mcmFtZXMuc2l6ZSgpCi0gICAgICAgIHx8IChmcmFtZUNhY2hpbmcgPT0gQ2FjaGVNZXRhZGF0
YUFuZEZyYW1lICYmICFtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZSkKLSAgICAgICAgfHwgKGZyYW1l
Q2FjaGluZyA9PSBDYWNoZU1ldGFkYXRhT25seSAmJiAhbV9mcmFtZXNbaW5kZXhdLm1faGF2ZU1l
dGFkYXRhKSkKLSAgICAgICAgY2FjaGVGcmFtZShpbmRleCwgMCwgZnJhbWVDYWNoaW5nKTsKKyAg
ICAgICAgfHwgKGNhY2hpbmcgPT0gSW1hZ2VGcmFtZURhdGE6OkNhY2hpbmc6Ok1ldGFkYXRhQW5k
SW1hZ2UgJiYgIW1fZnJhbWVzW2luZGV4XS5oYXNJbWFnZSgpKQorICAgICAgICB8fCAoY2FjaGlu
ZyA9PSBJbWFnZUZyYW1lRGF0YTo6Q2FjaGluZzo6TWV0YWRhdGEgJiYgIW1fZnJhbWVzW2luZGV4
XS5oYXNNZXRhZGF0YSgpKSkKKyAgICAgICAgY2FjaGVGcmFtZShpbmRleCwgMCwgY2FjaGluZyk7
CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTM4OCwxMCArMzY5LDkgQEAgTmF0aXZlSW1hZ2VQ
dHIgQml0bWFwSW1hZ2U6OmZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgZmxvYXQgcHJl
c2VudGF0aW9uU2MKIAogICAgIC8vIFdlIG1heSBoYXZlIGNhY2hlZCBhIGZyYW1lIHdpdGggYSBo
aWdoZXIgc3Vic2FtcGxpbmcgbGV2ZWwsIGluIHdoaWNoIGNhc2Ugd2UgbmVlZCB0bwogICAgIC8v
IHJlLWRlY29kZSB3aXRoIGEgbG93ZXIgbGV2ZWwuCi0gICAgaWYgKGluZGV4IDwgbV9mcmFtZXMu
c2l6ZSgpICYmIG1fZnJhbWVzW2luZGV4XS5tX2ltYWdlICYmIHN1YnNhbXBsaW5nTGV2ZWwgPCBt
X2ZyYW1lc1tpbmRleF0ubV9zdWJzYW1wbGluZ0xldmVsKSB7CisgICAgaWYgKGluZGV4IDwgbV9m
cmFtZXMuc2l6ZSgpICYmIG1fZnJhbWVzW2luZGV4XS5oYXNJbWFnZSgpICYmIHN1YnNhbXBsaW5n
TGV2ZWwgPCBtX2ZyYW1lc1tpbmRleF0uc3Vic2FtcGxpbmdMZXZlbCgpKSB7CiAgICAgICAgIC8v
IElmIHRoZSBpbWFnZSBpcyBhbHJlYWR5IGNhY2hlZCwgYnV0IGF0IHRvbyBzbWFsbCBhIHNpemUs
IHJlLWRlY29kZSBhIGxhcmdlciB2ZXJzaW9uLgotICAgICAgICBpbnQgc2l6ZUNoYW5nZSA9IC1t
X2ZyYW1lc1tpbmRleF0ubV9mcmFtZUJ5dGVzOwotICAgICAgICBtX2ZyYW1lc1tpbmRleF0uY2xl
YXIodHJ1ZSk7CisgICAgICAgIGludCBzaXplQ2hhbmdlID0gLW1fZnJhbWVzW2luZGV4XS5jbGVh
cihJbWFnZUZyYW1lRGF0YTo6Q2FjaGluZzo6RW1wdHkpOwogICAgICAgICBpbnZhbGlkYXRlUGxh
dGZvcm1EYXRhKCk7CiAgICAgICAgIG1fZGVjb2RlZFNpemUgKz0gc2l6ZUNoYW5nZTsKICAgICAg
ICAgaWYgKGltYWdlT2JzZXJ2ZXIoKSkKQEAgLTM5OSw0MCArMzc5LDcyIEBAIE5hdGl2ZUltYWdl
UHRyIEJpdG1hcEltYWdlOjpmcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIGZsb2F0IHBy
ZXNlbnRhdGlvblNjCiAgICAgfQogCiAgICAgLy8gSWYgd2UgaGF2ZW4ndCBmZXRjaGVkIGEgZnJh
bWUgeWV0LCBkbyBzby4KLSAgICBpZiAoaW5kZXggPj0gbV9mcmFtZXMuc2l6ZSgpIHx8ICFtX2Zy
YW1lc1tpbmRleF0ubV9pbWFnZSkKLSAgICAgICAgY2FjaGVGcmFtZShpbmRleCwgc3Vic2FtcGxp
bmdMZXZlbCwgQ2FjaGVNZXRhZGF0YUFuZEZyYW1lKTsKKyAgICBpZiAoaW5kZXggPj0gbV9mcmFt
ZXMuc2l6ZSgpIHx8ICFtX2ZyYW1lc1tpbmRleF0uaGFzSW1hZ2UoKSkKKyAgICAgICAgY2FjaGVG
cmFtZShpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCwgSW1hZ2VGcmFtZURhdGE6OkNhY2hpbmc6Ok1l
dGFkYXRhQW5kSW1hZ2UpOworCisgICAgcmV0dXJuIG1fZnJhbWVzW2luZGV4XS5pbWFnZSgpOwor
fQorICAgIAorTmF0aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6Om5hdGl2ZUltYWdlKCkKK3sKKyAg
ICByZXR1cm4gZnJhbWVJbWFnZUF0SW5kZXgoMCk7Cit9CisgICAgCitOYXRpdmVJbWFnZVB0ciBC
aXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VPZlNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKK3sKKyAg
ICBzaXplX3QgY291bnQgPSBmcmFtZUNvdW50KCk7CisgICAgCisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBjb3VudDsgKytpKSB7CisgICAgICAgIGF1dG8gaW1hZ2UgPSBmcmFtZUltYWdlQXRJ
bmRleChpKTsKKyAgICAgICAgaWYgKGltYWdlICYmIFBsYXRmb3JtSW1hZ2UoaW1hZ2UpLnNpemUo
KSA9PSBzaXplKQorICAgICAgICAgICAgcmV0dXJuIGltYWdlOworICAgIH0KKyAgICAKKyAgICAv
LyBGYWxsYmFjayB0byB0aGUgZmlyc3QgZnJhbWUgaW1hZ2UgaWYgd2UgY2FuJ3QgZmluZCB0aGUg
cmlnaHQgc2l6ZQorICAgIHJldHVybiBmcmFtZUltYWdlQXRJbmRleCgwKTsKK30KKyAgICAKK05h
dGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpCit7
CisgICAgcmV0dXJuIGZyYW1lSW1hZ2VBdEluZGV4KG1fY3VycmVudEZyYW1lKTsKK30KIAotICAg
IHJldHVybiBtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZTsKK1ZlY3RvcjxOYXRpdmVJbWFnZVB0cj4g
Qml0bWFwSW1hZ2U6OmZyYW1lc05hdGl2ZUltYWdlcygpCit7CisgICAgVmVjdG9yPE5hdGl2ZUlt
YWdlUHRyPiBpbWFnZXM7CisgICAgc2l6ZV90IGNvdW50ID0gZnJhbWVDb3VudCgpOworICAgIAor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgeworICAgICAgICBpZiAoYXV0
byBpbWFnZSA9IGZyYW1lSW1hZ2VBdEluZGV4KGkpKQorICAgICAgICAgICAgaW1hZ2VzLmFwcGVu
ZChpbWFnZSk7CisgICAgfQorICAgIAorICAgIHJldHVybiBpbWFnZXM7CiB9CiAKIGJvb2wgQml0
bWFwSW1hZ2U6OmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoc2l6ZV90IGluZGV4KQogewotICAgIGlm
ICghZW5zdXJlRnJhbWVJc0NhY2hlZChpbmRleCwgQ2FjaGVNZXRhZGF0YU9ubHkpKQorICAgIGlm
ICghZW5zdXJlRnJhbWVJc0NhY2hlZChpbmRleCwgSW1hZ2VGcmFtZURhdGE6OkNhY2hpbmc6Ok1l
dGFkYXRhKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIG1fZnJhbWVzW2lu
ZGV4XS5tX2lzQ29tcGxldGU7CisgICAgcmV0dXJuIG1fZnJhbWVzW2luZGV4XS5pc0NvbXBsZXRl
KCk7CiB9CiAKIGZsb2F0IEJpdG1hcEltYWdlOjpmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3Qg
aW5kZXgpCiB7Ci0gICAgaWYgKCFlbnN1cmVGcmFtZUlzQ2FjaGVkKGluZGV4LCBDYWNoZU1ldGFk
YXRhT25seSkpCisgICAgaWYgKCFlbnN1cmVGcmFtZUlzQ2FjaGVkKGluZGV4LCBJbWFnZUZyYW1l
RGF0YTo6Q2FjaGluZzo6TWV0YWRhdGEpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVy
biBtX2ZyYW1lc1tpbmRleF0ubV9kdXJhdGlvbjsKLX0KLQotTmF0aXZlSW1hZ2VQdHIgQml0bWFw
SW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkKLXsKLSAgICByZXR1cm4gZnJhbWVJ
bWFnZUF0SW5kZXgoY3VycmVudEZyYW1lKCkpOworICAgIHJldHVybiBtX2ZyYW1lc1tpbmRleF0u
ZHVyYXRpb24oKTsKIH0KIAogYm9vbCBCaXRtYXBJbWFnZTo6ZnJhbWVIYXNBbHBoYUF0SW5kZXgo
c2l6ZV90IGluZGV4KQogewotICAgIGlmICghZW5zdXJlRnJhbWVJc0NhY2hlZChpbmRleCwgQ2Fj
aGVNZXRhZGF0YU9ubHkpKQorICAgIGlmICghZW5zdXJlRnJhbWVJc0NhY2hlZChpbmRleCwgSW1h
Z2VGcmFtZURhdGE6OkNhY2hpbmc6Ok1ldGFkYXRhKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAK
LSAgICBpZiAobV9mcmFtZXNbaW5kZXhdLm1faGF2ZU1ldGFkYXRhKQotICAgICAgICByZXR1cm4g
bV9mcmFtZXNbaW5kZXhdLm1faGFzQWxwaGE7CisgICAgaWYgKG1fZnJhbWVzW2luZGV4XS5oYXNN
ZXRhZGF0YSgpKQorICAgICAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLmhhc0FscGhhKCk7CiAK
ICAgICByZXR1cm4gbV9zb3VyY2UuZnJhbWVIYXNBbHBoYUF0SW5kZXgoaW5kZXgpOwogfQpAQCAt
NDQ0LDExICs0NTYsMTEgQEAgYm9vbCBCaXRtYXBJbWFnZTo6Y3VycmVudEZyYW1lS25vd25Ub0Jl
T3BhcXVlKCkKIAogSW1hZ2VPcmllbnRhdGlvbiBCaXRtYXBJbWFnZTo6ZnJhbWVPcmllbnRhdGlv
bkF0SW5kZXgoc2l6ZV90IGluZGV4KQogewotICAgIGlmICghZW5zdXJlRnJhbWVJc0NhY2hlZChp
bmRleCwgQ2FjaGVNZXRhZGF0YU9ubHkpKQorICAgIGlmICghZW5zdXJlRnJhbWVJc0NhY2hlZChp
bmRleCwgSW1hZ2VGcmFtZURhdGE6OkNhY2hpbmc6Ok1ldGFkYXRhKSkKICAgICAgICAgcmV0dXJu
IEltYWdlT3JpZW50YXRpb24oKTsKIAotICAgIGlmIChtX2ZyYW1lc1tpbmRleF0ubV9oYXZlTWV0
YWRhdGEpCi0gICAgICAgIHJldHVybiBtX2ZyYW1lc1tpbmRleF0ubV9vcmllbnRhdGlvbjsKKyAg
ICBpZiAobV9mcmFtZXNbaW5kZXhdLmhhc01ldGFkYXRhKCkpCisgICAgICAgIHJldHVybiBtX2Zy
YW1lc1tpbmRleF0ub3JpZW50YXRpb24oKTsKIAogICAgIHJldHVybiBtX3NvdXJjZS5vcmllbnRh
dGlvbkF0SW5kZXgoaW5kZXgpOwogfQpAQCAtNzAwLDE3ICs3MTIsNTYgQEAgQ29sb3IgQml0bWFw
SW1hZ2U6OnNpbmdsZVBpeGVsU29saWRDb2xvcigpCiAgICAgICAgIHJldHVybiBDb2xvcigpOwog
ICAgIAogICAgIEFTU0VSVChtX2ZyYW1lcy5zaXplKCkpOwotICAgIG1fc29saWRDb2xvciA9IE5h
dGl2ZUltYWdlOjpzaW5nbGVQaXhlbFNvbGlkQ29sb3IobV9mcmFtZXNbMF0ubV9pbWFnZS5nZXQo
KSk7CisgICAgbV9zb2xpZENvbG9yID0gbV9mcmFtZXNbMF0uc2luZ2xlUGl4ZWxTb2xpZENvbG9y
KCk7CiAgICAgCiAgICAgQVNTRVJUKG1fc29saWRDb2xvcik7CiAgICAgcmV0dXJuIG1fc29saWRD
b2xvci52YWx1ZSgpOwogfQogICAgIAorYm9vbCBCaXRtYXBJbWFnZTo6aXNBbG1vc3RTb2xpZENv
bG9yKCkKK3sKKyAgICBpZiAoZnJhbWVDb3VudCgpICE9IDEpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIHJldHVybiBlbnN1cmVGcmFtZUlzQ2FjaGVkKDApICYmIG1fZnJhbWVzWzBdLmlz
QWxtb3N0U29saWRDb2xvcigpOworfQorICAgIAogYm9vbCBCaXRtYXBJbWFnZTo6Y2FuQW5pbWF0
ZSgpCiB7CiAgICAgcmV0dXJuIHNob3VsZEFuaW1hdGUoKSAmJiBmcmFtZUNvdW50KCkgPiAxOwog
fQogCit2b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3Np
dGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIG1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlv
biBkZXNjcmlwdGlvbikKK3sKKyAgICBpZiAoZGVzdFJlY3QuaXNFbXB0eSgpIHx8IHNyY1JlY3Qu
aXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyNpZiBQTEFURk9STShJT1MpCisgICAgc3Rh
cnRBbmltYXRpb24oRG9Ob3RDYXRjaFVwKTsKKyNlbHNlCisgICAgc3RhcnRBbmltYXRpb24oKTsK
KyNlbmRpZgorICAgIAorICAgIENvbG9yIGNvbG9yID0gc2luZ2xlUGl4ZWxTb2xpZENvbG9yKCk7
CisgICAgaWYgKGNvbG9yLmlzVmFsaWQoKSkgeworICAgICAgICBmaWxsV2l0aFNvbGlkQ29sb3Io
Y29udGV4dCwgZGVzdFJlY3QsIGNvbG9yLCBvcCk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgCisgICAgYXV0byBpbWFnZSA9IGZyYW1lSW1hZ2VBdEluZGV4KG1fY3VycmVudEZyYW1lLCBQ
bGF0Zm9ybUltYWdlOjpzdWJzYW1wbGluZ1NjYWxlKGNvbnRleHQsIGRlc3RSZWN0LCBzcmNSZWN0
KSk7CisgICAgaWYgKCFpbWFnZSkgLy8gSWYgaXQncyB0b28gZWFybHkgd2Ugd29uJ3QgaGF2ZSBh
biBpbWFnZSB5ZXQuCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBJbWFnZU9yaWVudGF0aW9u
IG9yaWVudGF0aW9uKGRlc2NyaXB0aW9uLmltYWdlT3JpZW50YXRpb24oKSk7CisgICAgaWYgKGRl
c2NyaXB0aW9uLnJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKCkgPT0gUmVzcGVjdEltYWdlT3JpZW50
YXRpb24pCisgICAgICAgIG9yaWVudGF0aW9uID0gZnJhbWVPcmllbnRhdGlvbkF0SW5kZXgobV9j
dXJyZW50RnJhbWUpOworICAgIAorICAgIFBsYXRmb3JtSW1hZ2UoaW1hZ2UpLmRyYXcoY29udGV4
dCwgZGVzdFJlY3QsIHNyY1JlY3QsIG1fc2l6ZSwgb3AsIG1vZGUsIG9yaWVudGF0aW9uKTsKKyAg
ICAKKyAgICBpZiAoaW1hZ2VPYnNlcnZlcigpKQorICAgICAgICBpbWFnZU9ic2VydmVyKCktPmRp
ZERyYXcodGhpcyk7Cit9CisgICAgCiB2b2lkIEJpdG1hcEltYWdlOjpkdW1wKFRleHRTdHJlYW0m
IHRzKSBjb25zdAogewogICAgIEltYWdlOjpkdW1wKHRzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCmluZGV4IDA3NTg5MjljZDg3ZmFkYWNmMDJi
NmVkOGVlYWZlN2RlZmQ2NmYwYzUuLjIyMThjODI0YjUyOGZkNjM5YmFiMTM4ZGVjYzk4Yjk4MTZh
MTY4MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1h
cEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1h
Z2UuaApAQCAtMjgsMTEgKzI4LDEzIEBACiAjaWZuZGVmIEJpdG1hcEltYWdlX2gKICNkZWZpbmUg
Qml0bWFwSW1hZ2VfaAogCi0jaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJDb2xvci5oIgor
I2luY2x1ZGUgIkltYWdlLmgiCisjaW5jbHVkZSAiSW1hZ2VGcmFtZURhdGEuaCIKICNpbmNsdWRl
ICJJbWFnZU9yaWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiSW1hZ2VTb3VyY2UuaCIKICNpbmNsdWRl
ICJJbnRTaXplLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1JbWFnZS5oIgogCiAjaWYgVVNFKENHKSB8
fCBVU0UoQVBQS0lUKQogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KQEAgLTQ3LDYzICs0OSw5
IEBAIHR5cGVkZWYgc3RydWN0IEhCSVRNQVBfXyAqSEJJVE1BUDsKICNlbmRpZgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0gICAgc3RydWN0IEZyYW1lRGF0YTsKLX0KLQotbmFtZXNwYWNlIFdURiB7
Ci0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgVmVjdG9yVHJhaXRzPFdlYkNvcmU6OkZyYW1lRGF0YT4g
OiBwdWJsaWMgU2ltcGxlQ2xhc3NWZWN0b3JUcmFpdHMgewotICAgICAgICBzdGF0aWMgY29uc3Qg
Ym9vbCBjYW5Jbml0aWFsaXplV2l0aE1lbXNldCA9IGZhbHNlOyAvLyBOb3QgYWxsIEZyYW1lRGF0
YSBtZW1iZXJzIGluaXRpYWxpemUgdG8gMC4KLSAgICB9OwotfQotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIFRpbWVyOwogCi1uYW1lc3BhY2UgTmF0aXZlSW1hZ2UgewotICAgIEludFNp
emUgc2l6ZShjb25zdCBOYXRpdmVJbWFnZVB0ciYpOwotICAgIGJvb2wgaGFzQWxwaGEoY29uc3Qg
TmF0aXZlSW1hZ2VQdHImKTsKLSAgICBDb2xvciBzaW5nbGVQaXhlbFNvbGlkQ29sb3IoY29uc3Qg
TmF0aXZlSW1hZ2VQdHImKTsKLX0KLQotLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0vLyBGcmFtZURhdGEgQ2xhc3MKLS8vID09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi1zdHJ1Y3QgRnJhbWVEYXRhIHsK
LXB1YmxpYzoKLSAgICBGcmFtZURhdGEoKQotICAgICAgICA6IG1faGF2ZU1ldGFkYXRhKGZhbHNl
KQotICAgICAgICAsIG1faXNDb21wbGV0ZShmYWxzZSkKLSAgICAgICAgLCBtX2hhc0FscGhhKHRy
dWUpCi0gICAgewotICAgIH0KLQotICAgIH5GcmFtZURhdGEoKQotICAgIHsgCi0gICAgICAgIGNs
ZWFyKHRydWUpOwotICAgIH0KLQotICAgIC8vIENsZWFyIHRoZSBjYWNoZWQgaW1hZ2UgZGF0YSBv
biB0aGUgZnJhbWUsIGFuZCAob3B0aW9uYWxseSkgdGhlIG1ldGFkYXRhLgotICAgIC8vIFJldHVy
bnMgd2hldGhlciB0aGVyZSB3YXMgY2FjaGVkIGltYWdlIGRhdGEgdG8gY2xlYXIuCi0gICAgYm9v
bCBjbGVhcihib29sIGNsZWFyTWV0YWRhdGEpOwotICAgIAotICAgIHVuc2lnbmVkIHVzZWRGcmFt
ZUJ5dGVzKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZSA/IG1fZnJhbWVCeXRlcyA6IDA7IH0KLQot
ICAgIE5hdGl2ZUltYWdlUHRyIG1faW1hZ2U7Ci0gICAgSW1hZ2VPcmllbnRhdGlvbiBtX29yaWVu
dGF0aW9uIHsgRGVmYXVsdEltYWdlT3JpZW50YXRpb24gfTsKLSAgICBTdWJzYW1wbGluZ0xldmVs
IG1fc3Vic2FtcGxpbmdMZXZlbCB7IDAgfTsKLSAgICBmbG9hdCBtX2R1cmF0aW9uIHsgMCB9Owot
ICAgIGJvb2wgbV9oYXZlTWV0YWRhdGEgOiAxOwotICAgIGJvb2wgbV9pc0NvbXBsZXRlIDogMTsK
LSAgICBib29sIG1faGFzQWxwaGEgOiAxOwotICAgIHVuc2lnbmVkIG1fZnJhbWVCeXRlcyB7IDAg
fTsKLX07Ci0KLS8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS8vIEJpdG1hcEltYWdlIENsYXNzCi0vLyA9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0KIGNsYXNzIEJpdG1hcEltYWdlIGZpbmFsIDogcHVi
bGljIEltYWdlIHsKICAgICBmcmllbmQgY2xhc3MgR2VuZXJhdGVkSW1hZ2U7CiAgICAgZnJpZW5k
IGNsYXNzIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOwpAQCAtMTU1LDEyICsxMDMsNiBAQCBwdWJs
aWM6CiAgICAgQ0ZEYXRhUmVmIGdldFRJRkZSZXByZXNlbnRhdGlvbigpIG92ZXJyaWRlOwogI2Vu
ZGlmCiAKLSNpZiBVU0UoQ0cpCi0gICAgV0VCQ09SRV9FWFBPUlQgQ0dJbWFnZVJlZiBnZXRDR0lt
YWdlUmVmKCkgb3ZlcnJpZGU7Ci0gICAgQ0dJbWFnZVJlZiBnZXRGaXJzdENHSW1hZ2VSZWZPZlNp
emUoY29uc3QgSW50U2l6ZSYpIG92ZXJyaWRlOwotICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBn
ZXRDR0ltYWdlQXJyYXkoKSBvdmVycmlkZTsKLSNlbmRpZgotCiAjaWYgUExBVEZPUk0oV0lOKQog
ICAgIGJvb2wgZ2V0SEJJVE1BUChIQklUTUFQKSBvdmVycmlkZTsKICAgICBib29sIGdldEhCSVRN
QVBPZlNpemUoSEJJVE1BUCwgY29uc3QgSW50U2l6ZSopIG92ZXJyaWRlOwpAQCAtMTc0LDggKzEx
NiwxMyBAQCBwdWJsaWM6CiAgICAgRXZhc19PYmplY3QqIGdldEV2YXNPYmplY3QoRXZhcyopIG92
ZXJyaWRlOwogI2VuZGlmCiAKKyAgICBXRUJDT1JFX0VYUE9SVCBOYXRpdmVJbWFnZVB0ciBuYXRp
dmVJbWFnZSgpIG92ZXJyaWRlOworICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlT2ZTaXpl
KGNvbnN0IEludFNpemUmKSBvdmVycmlkZTsKICAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFn
ZUZvckN1cnJlbnRGcmFtZSgpIG92ZXJyaWRlOwogICAgIEltYWdlT3JpZW50YXRpb24gb3JpZW50
YXRpb25Gb3JDdXJyZW50RnJhbWUoKSBvdmVycmlkZSB7IHJldHVybiBmcmFtZU9yaWVudGF0aW9u
QXRJbmRleChjdXJyZW50RnJhbWUoKSk7IH0KKyAgICBWZWN0b3I8TmF0aXZlSW1hZ2VQdHI+IGZy
YW1lc05hdGl2ZUltYWdlcygpIG92ZXJyaWRlOworICAgIAorICAgIFdFQkNPUkVfRVhQT1JUIGJv
b2wgaXNBbG1vc3RTb2xpZENvbG9yKCk7CiAKICAgICBib29sIGN1cnJlbnRGcmFtZUtub3duVG9C
ZU9wYXF1ZSgpIG92ZXJyaWRlOwogCkBAIC0yMTUsNyArMTYyLDYgQEAgcHJvdGVjdGVkOgogICAg
IHNpemVfdCBmcmFtZUNvdW50KCk7CiAKICAgICBOYXRpdmVJbWFnZVB0ciBmcmFtZUltYWdlQXRJ
bmRleChzaXplX3QsIGZsb2F0IHByZXNlbnRhdGlvblNjYWxlSGludCA9IDEpOwotICAgIE5hdGl2
ZUltYWdlUHRyIGNvcHlVbnNjYWxlZEZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCk7CiAKICAgICBi
b29sIGhhdmVGcmFtZUltYWdlQXRJbmRleChzaXplX3QpOwogCkBAIC0yMjUsMTEgKzE3MSwxMCBA
QCBwcm90ZWN0ZWQ6CiAgICAgSW1hZ2VPcmllbnRhdGlvbiBmcmFtZU9yaWVudGF0aW9uQXRJbmRl
eChzaXplX3QpOwogCiAgICAgLy8gRGVjb2RlcyBhbmQgY2FjaGVzIGEgZnJhbWUuIE5ldmVyIGFj
Y2Vzc2VkIGV4Y2VwdCBpbnRlcm5hbGx5LgotICAgIGVudW0gSW1hZ2VGcmFtZUNhY2hpbmcgeyBD
YWNoZU1ldGFkYXRhT25seSwgQ2FjaGVNZXRhZGF0YUFuZEZyYW1lIH07Ci0gICAgdm9pZCBjYWNo
ZUZyYW1lKHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCwgSW1hZ2VGcmFtZUNhY2hpbmcg
PSBDYWNoZU1ldGFkYXRhQW5kRnJhbWUpOworICAgIHZvaWQgY2FjaGVGcmFtZShzaXplX3QgaW5k
ZXgsIFN1YnNhbXBsaW5nTGV2ZWwsIEltYWdlRnJhbWVEYXRhOjpDYWNoaW5nID0gSW1hZ2VGcmFt
ZURhdGE6OkNhY2hpbmc6Ok1ldGFkYXRhQW5kSW1hZ2UpOwogCiAgICAgLy8gQ2FsbGVkIGJlZm9y
ZSBhY2Nlc3NpbmcgbV9mcmFtZXNbaW5kZXhdIGZvciBpbmZvIHdpdGhvdXQgZGVjb2RpbmcuIFJl
dHVybnMgZmFsc2Ugb24gaW5kZXggb3V0IG9mIGJvdW5kcy4KLSAgICBib29sIGVuc3VyZUZyYW1l
SXNDYWNoZWQoc2l6ZV90IGluZGV4LCBJbWFnZUZyYW1lQ2FjaGluZyA9IENhY2hlTWV0YWRhdGFB
bmRGcmFtZSk7CisgICAgYm9vbCBlbnN1cmVGcmFtZUlzQ2FjaGVkKHNpemVfdCBpbmRleCwgSW1h
Z2VGcmFtZURhdGE6OkNhY2hpbmcgPSBJbWFnZUZyYW1lRGF0YTo6Q2FjaGluZzo6TWV0YWRhdGFB
bmRJbWFnZSk7CiAKICAgICAvLyBDYWxsZWQgdG8gaW52YWxpZGF0ZSBjYWNoZWQgZGF0YS4gV2hl
biB8ZGVzdHJveUFsbHwgaXMgdHJ1ZSwgd2Ugd2lwZSBvdXQKICAgICAvLyB0aGUgZW50aXJlIGZy
YW1lIGJ1ZmZlciBjYWNoZSBhbmQgdGVsbCB0aGUgaW1hZ2Ugc291cmNlIHRvIGRlc3Ryb3kKQEAg
LTI5Miw3ICsyMzcsNyBAQCBwcml2YXRlOgogICAgIG11dGFibGUgSW50U2l6ZSBtX3NpemVSZXNw
ZWN0aW5nT3JpZW50YXRpb247CiAKICAgICBzaXplX3QgbV9jdXJyZW50RnJhbWUgeyAwIH07IC8v
IFRoZSBpbmRleCBvZiB0aGUgY3VycmVudCBmcmFtZSBvZiBhbmltYXRpb24uCi0gICAgVmVjdG9y
PEZyYW1lRGF0YSwgMT4gbV9mcmFtZXM7IC8vIEFuIGFycmF5IG9mIHRoZSBjYWNoZWQgZnJhbWVz
IG9mIHRoZSBhbmltYXRpb24uIFdlIGhhdmUgdG8gcmVmIGZyYW1lcyB0byBwaW4gdGhlbSBpbiB0
aGUgY2FjaGUuCisgICAgVmVjdG9yPEltYWdlRnJhbWVEYXRhLCAxPiBtX2ZyYW1lczsgLy8gQW4g
YXJyYXkgb2YgdGhlIGNhY2hlZCBmcmFtZXMgb2YgdGhlIGFuaW1hdGlvbi4gV2UgaGF2ZSB0byBy
ZWYgZnJhbWVzIHRvIHBpbiB0aGVtIGluIHRoZSBjYWNoZS4KIAogICAgIHN0ZDo6dW5pcXVlX3B0
cjxUaW1lcj4gbV9mcmFtZVRpbWVyOwogICAgIGludCBtX3JlcGV0aXRpb25Db3VudCB7IGNBbmlt
YXRpb25Ob25lIH07IC8vIEhvdyBtYW55IHRvdGFsIGFuaW1hdGlvbiBsb29wcyB3ZSBzaG91bGQg
ZG8uIFRoaXMgd2lsbCBiZSBjQW5pbWF0aW9uTm9uZSBpZiB0aGlzIGltYWdlIHR5cGUgaXMgaW5j
YXBhYmxlIG9mIGFuaW1hdGlvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0JpdG1hcFBpeGVscy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQml0bWFwUGl4ZWxzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWZhZTNkMmU0MGNjZjFkODFmNmJhNTdkYjY4
MmQ5MmQ0NjliYmFjMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0JpdG1hcFBpeGVscy5oCkBAIC0wLDAgKzEsMTgzIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSAiQ29sb3IuaCIKKyNpbmNsdWRlICJJbnRSZWN0LmgiCisjaW5jbHVkZSAiSW50U2l6ZS5oIgor
I2luY2x1ZGUgIk5hdGl2ZUltYWdlUHRyLmgiCisKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQml0bWFwUGl4ZWxzIHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEJpdG1hcFBpeGVscz4gY3JlYXRlKGNvbnN0IEludFNp
emUmIHNpemUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSkKKyAgICB7CisgICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPEJpdG1hcFBpeGVscz4oc2l6ZSwgcHJlbXVsdGlwbHlBbHBoYSk7Cisg
ICAgfQorCisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxCaXRtYXBQaXhlbHM+IGNyZWF0ZShj
b25zdCBCaXRtYXBQaXhlbHMmIG90aGVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8Qml0bWFwUGl4ZWxzPihvdGhlcik7CisgICAgfQorCisgICAgQml0bWFwUGl4ZWxz
KGNvbnN0IEludFNpemUmIHNpemUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSA9IHRydWUpCisgICAg
ICAgIDogbV9wcmVtdWx0aXBseUFscGhhKHByZW11bHRpcGx5QWxwaGEpCisgICAgeworICAgICAg
ICBBU1NFUlQoIXNpemUuaXNFbXB0eSgpKTsKKyAgICAgICAgc2V0U2l6ZShzaXplKTsKKyAgICB9
CisKKyAgICBCaXRtYXBQaXhlbHMoY29uc3QgQml0bWFwUGl4ZWxzJiBvdGhlcikKKyAgICB7Cisg
ICAgICAgIGlmICh0aGlzID09ICZvdGhlcikKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
CisgICAgICAgIG1fYmFja2luZ1N0b3JlID0gb3RoZXIubV9iYWNraW5nU3RvcmU7CisgICAgICAg
IG1fcGl4ZWxzID0gbV9iYWNraW5nU3RvcmUuZGF0YSgpOworICAgICAgICBtX3NpemUgPSBvdGhl
ci5tX3NpemU7CisgICAgICAgIG1fcmVjdCA9IG90aGVyLm1fcmVjdDsKKyAgICAgICAgbV9wcmVt
dWx0aXBseUFscGhhID0gb3RoZXIubV9wcmVtdWx0aXBseUFscGhhOworICAgIH0KKworICAgIE5h
dGl2ZUltYWdlUHRyIGltYWdlKCkgY29uc3Q7CisKKyAgICBib29sIHNldFNpemUoY29uc3QgSW50
U2l6ZSYgc2l6ZSkKKyAgICB7CisgICAgICAgIGlmICghbV9iYWNraW5nU3RvcmUudHJ5UmVzZXJ2
ZUNhcGFjaXR5KHNpemUuYXJlYSgpKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgCisgICAgICAgIG1fYmFja2luZ1N0b3JlLnJlc2l6ZShzaXplLmFyZWEoKSk7CisgICAgICAg
IG1fcGl4ZWxzID0gbV9iYWNraW5nU3RvcmUuZGF0YSgpOworICAgICAgICBtX3NpemUgPSBzaXpl
OworICAgICAgICBtX3JlY3QgPSBJbnRSZWN0KEludFBvaW50KCksIG1fc2l6ZSk7CisgICAgICAg
IGNsZWFyKCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAKKyAgICB2b2lkIHNl
dFJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkKKyAgICB7CisgICAgICAgIEFTU0VSVCghbV9zaXpl
LmlzRW1wdHkoKSk7CisgICAgICAgIEFTU0VSVChpbkJvdW5kcyhyZWN0KSk7CisgICAgICAgIG1f
cmVjdCA9IHJlY3Q7CisgICAgfQorICAgIAorICAgIEludFNpemUgc2l6ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fc2l6ZTsgfQorICAgIEludFJlY3QgcmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdDsg
fQorCisgICAgUkdCQTMyKiBhdChpbnQgeCwgaW50IHkpIGNvbnN0CisgICAgeworICAgICAgICBy
ZXR1cm4gbV9waXhlbHMgKyB5ICogbV9zaXplLndpZHRoKCkgKyB4OworICAgIH0KKworICAgIHZv
aWQgY2xlYXIoKQorICAgIHsKKyAgICAgICAgbWVtc2V0KG1fcGl4ZWxzLCAwLCBtX3NpemUuYXJl
YSgpICogc2l6ZW9mKFJHQkEzMikpOworICAgIH0KKworICAgIHZvaWQgY2xlYXJSZWN0KGNvbnN0
IEludFJlY3QmIHJlY3QpCisgICAgeworICAgICAgICBpZiAocmVjdC5pc0VtcHR5KCkgfHwgaW5C
b3VuZHMocmVjdCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIAorICAgICAgICBzaXpl
X3QgcmVjdFdpZHRoSW5CeXRlcyA9IHJlY3Qud2lkdGgoKSAqIHNpemVvZihSR0JBMzIpOworICAg
ICAgICBSR0JBMzIqIHN0YXJ0ID0gYXQocmVjdC54KCksIHJlY3QueSgpKTsKKyAgICAgICAgZm9y
IChpbnQgaSA9IDA7IGkgPCByZWN0LmhlaWdodCgpOyArK2kpIHsKKyAgICAgICAgICAgIG1lbXNl
dChzdGFydCwgMCwgcmVjdFdpZHRoSW5CeXRlcyk7CisgICAgICAgICAgICBzdGFydCArPSBtX3Np
emUud2lkdGgoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgcmVwZWF0Rmlyc3RSb3co
Y29uc3QgSW50UmVjdCYgcmVjdCkKKyAgICB7CisgICAgICAgIGlmIChyZWN0LmlzRW1wdHkoKSB8
fCBpbkJvdW5kcyhyZWN0KSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgCisgICAgICAg
IHNpemVfdCByZWN0V2lkdGhJbkJ5dGVzID0gcmVjdC53aWR0aCgpICogc2l6ZW9mKFJHQkEzMik7
CisgICAgICAgIFJHQkEzMiogc3JjID0gYXQocmVjdC54KCksIHJlY3QueSgpKTsKKyAgICAgICAg
UkdCQTMyKiBkZXN0ID0gc3JjICsgbV9zaXplLndpZHRoKCk7CisgICAgICAgIGZvciAoaW50IGkg
PSAxOyBpIDwgcmVjdC5oZWlnaHQoKTsgKytpKSB7CisgICAgICAgICAgICBtZW1jcHkoZGVzdCwg
c3JjLCByZWN0V2lkdGhJbkJ5dGVzKTsKKyAgICAgICAgICAgIGRlc3QgKz0gbV9zaXplLndpZHRo
KCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIHNldFJHQkEoaW50IHgsIGludCB5LCB1
bnNpZ25lZCByLCB1bnNpZ25lZCBnLCB1bnNpZ25lZCBiLCB1bnNpZ25lZCBhKQorICAgIHsKKyAg
ICAgICAgc2V0UkdCQShhdCh4LCB5KSwgciwgZywgYiwgYSk7CisgICAgfQorCisgICAgdm9pZCBz
ZXRSR0JBKFJHQkEzMiogZGVzdCwgdW5zaWduZWQgciwgdW5zaWduZWQgZywgdW5zaWduZWQgYiwg
dW5zaWduZWQgYSkKKyAgICB7CisgICAgICAgIGlmICghbV9wcmVtdWx0aXBseUFscGhhIHx8IGEg
Pj0gMjU1KQorICAgICAgICAgICAgKmRlc3QgPSBtYWtlUkdCQShyLCBnLCBiLCBhKTsKKyAgICAg
ICAgZWxzZSBpZiAoIWEpCisgICAgICAgICAgICAqZGVzdCA9IDA7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICpkZXN0ID0gbWFrZVByZW11bHRpcGxpZWRSR0JBKHIsIGcsIGIsIGEpOworICAg
IH0KKworICAgIHZvaWQgb3ZlclJHQkEoUkdCQTMyKiBkZXN0LCB1bnNpZ25lZCByLCB1bnNpZ25l
ZCBnLCB1bnNpZ25lZCBiLCB1bnNpZ25lZCBhKQorICAgIHsKKyAgICAgICAgaWYgKCFhKQorICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAKKyAgICAgICAgaWYgKGEgPj0gMjU1IHx8ICFhbHBo
YUNoYW5uZWwoKmRlc3QpKSB7CisgICAgICAgICAgICBzZXRSR0JBKGRlc3QsIHIsIGcsIGIsIGEp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAo
IW1fcHJlbXVsdGlwbHlBbHBoYSkKKyAgICAgICAgICAgICpkZXN0ID0gbWFrZVByZW11bHRpcGxp
ZWRSR0JBKHJlZENoYW5uZWwoKmRlc3QpLCBncmVlbkNoYW5uZWwoKmRlc3QpLCBibHVlQ2hhbm5l
bCgqZGVzdCksIGFscGhhQ2hhbm5lbCgqZGVzdCkpOworICAgICAgICAKKyAgICAgICAgUkdCQTMy
IHNyYyA9IG1ha2VSR0JBKHIsIGcsIGIsIGEpOworICAgICAgICAqZGVzdCA9IENvbG9yKCpkZXN0
KS5ibGVuZChzcmMpLnJnYigpOworICAgICAgICAKKyAgICAgICAgaWYgKCFtX3ByZW11bHRpcGx5
QWxwaGEpCisgICAgICAgICAgICAqZGVzdCA9IG1ha2VVblByZW11bHRpcGxpZWRSR0JBKHJlZENo
YW5uZWwoKmRlc3QpLCBncmVlbkNoYW5uZWwoKmRlc3QpLCBibHVlQ2hhbm5lbCgqZGVzdCksIGFs
cGhhQ2hhbm5lbCgqZGVzdCkpOworICAgIH0KKworICAgIGJvb2wgaW5Cb3VuZHMoY29uc3QgSW50
UG9pbnQmIHBvaW50KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIEludFJlY3QoSW50UG9p
bnQoKSwgbV9zaXplKS5jb250YWlucyhwb2ludCk7CisgICAgfQorCisgICAgYm9vbCBpbkJvdW5k
cyhjb25zdCBJbnRSZWN0JiByZWN0KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIEludFJl
Y3QoSW50UG9pbnQoKSwgbV9zaXplKS5jb250YWlucyhyZWN0KTsKKyAgICB9CisKK3ByaXZhdGU6
CisgICAgVmVjdG9yPFJHQkEzMj4gbV9iYWNraW5nU3RvcmU7CisgICAgUkdCQTMyKiBtX3BpeGVs
cyB7IG51bGxwdHIgfTsKKyAgICBJbnRTaXplIG1fc2l6ZTsKKyAgICBJbnRSZWN0IG1fcmVjdDsg
Ly8gVGhpcyB3aWxsIGFsd2F5cyBqdXN0IGJlIHRoZSBlbnRpcmUgYnVmZmVyIGV4Y2VwdCBmb3Ig
R0lGIGFuZCBQTkcgZnJhbWVzCisgICAgYm9vbCBtX3ByZW11bHRpcGx5QWxwaGEgeyB0cnVlIH07
Cit9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9D
b2xvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHAKaW5k
ZXggNGUyNWFhNmZkNzRkMWU0NmM1NDE2MTQ5OGJjMTcyYmY2MDA4NzVkMS4uNDM5ZjVhNjNjN2Jl
YmU1NjA0MmIyNGU3ZDcyZWNjZWNmMzZjNDBjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0NvbG9yLmNwcApAQCAtNDksNiArNDksNDAgQEAgY29uc3QgUkdCQTMyIENvbG9y
Ojp0cmFuc3BhcmVudDsKIHN0YXRpYyBjb25zdCBSR0JBMzIgbGlnaHRlbmVkQmxhY2sgPSAweEZG
NTQ1NDU0Owogc3RhdGljIGNvbnN0IFJHQkEzMiBkYXJrZW5lZFdoaXRlID0gMHhGRkFCQUJBQjsK
IAorc3RhdGljIGlubGluZSB1bnNpZ25lZCBtdWx0aXBseTI1NSh1bnNpZ25lZCBjKQoreworICAg
IC8vIGMgKiAyNTUKKyAgICAvLyAgID0gYyAqICgyNTYgLSAxKQorICAgIC8vICAgPSBjICogMjU2
IC0gYworICAgIHJldHVybiAoYyA8PCA4KSAtIGM7Cit9CisKK3N0YXRpYyBpbmxpbmUgdW5zaWdu
ZWQgZGl2aWRlMjU1KHVuc2lnbmVkIGMpCit7CisgICAgLy8gYyAvIDI1NQorICAgIC8vICAgPSBj
IC8gMjU2ICogKDEgKyAxIC8gMjU1KQorICAgIC8vICAgPSAoYyArIGMgLyAyNTUpIC8gMjU2Cisg
ICAgLy8gICA9IChjICsgKGMgKyBjIC8gMjU1KSAvIDI1NikgLyAyNTYKKyAgICAvLyAgID0gKGMg
KyBjIC8gMjU2ICsgYyAvICgyNTUgeCAyNTYpKSAvIDI1NgorICAgIC8vICB+PSAoYyArIGMgLyAy
NTYgKyAxKSAvIDI1NgorICAgIHJldHVybiAoYyArIChjID4+IDgpICsgMSkgPj4gODsKK30KKyAg
ICAKK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgZGl2aWRlQ2VpbCh1bnNpZ25lZCBjLCB1bnNpZ25l
ZCBkKQoreworICAgIHJldHVybiAoYyArIGQgLSAxKSAvIGQ7Cit9CisgICAgCitzdGF0aWMgaW5s
aW5lIHVuc2lnbmVkIHByZW11bHRpcGxpZWRDaGFubmVsKHVuc2lnbmVkIGMsIHVuc2lnbmVkIGEp
Cit7CisgICAgcmV0dXJuIGRpdmlkZTI1NShjICogYSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdW5z
aWduZWQgdW5wcmVtdWx0aXBsaWVkQ2hhbm5lbCh1bnNpZ25lZCBjLCB1bnNpZ25lZCBhKQorewor
ICAgIHJldHVybiBkaXZpZGVDZWlsKG11bHRpcGx5MjU1KGMpLCBhKTsKK30KKyAgICAKIFJHQkEz
MiBtYWtlUkdCKGludCByLCBpbnQgZywgaW50IGIpCiB7CiAgICAgcmV0dXJuIDB4RkYwMDAwMDAg
fCBzdGQ6Om1heCgwLCBzdGQ6Om1pbihyLCAyNTUpKSA8PCAxNiB8IHN0ZDo6bWF4KDAsIHN0ZDo6
bWluKGcsIDI1NSkpIDw8IDggfCBzdGQ6Om1heCgwLCBzdGQ6Om1pbihiLCAyNTUpKTsKQEAgLTU5
LDYgKzkzLDE2IEBAIFJHQkEzMiBtYWtlUkdCQShpbnQgciwgaW50IGcsIGludCBiLCBpbnQgYSkK
ICAgICByZXR1cm4gc3RkOjptYXgoMCwgc3RkOjptaW4oYSwgMjU1KSkgPDwgMjQgfCBzdGQ6Om1h
eCgwLCBzdGQ6Om1pbihyLCAyNTUpKSA8PCAxNiB8IHN0ZDo6bWF4KDAsIHN0ZDo6bWluKGcsIDI1
NSkpIDw8IDggfCBzdGQ6Om1heCgwLCBzdGQ6Om1pbihiLCAyNTUpKTsKIH0KIAorUkdCQTMyIG1h
a2VQcmVtdWx0aXBsaWVkUkdCQShpbnQgciwgaW50IGcsIGludCBiLCBpbnQgYSkKK3sKKyAgICBy
ZXR1cm4gbWFrZVJHQkEocHJlbXVsdGlwbGllZENoYW5uZWwociwgYSksIHByZW11bHRpcGxpZWRD
aGFubmVsKGcsIGEpLCBwcmVtdWx0aXBsaWVkQ2hhbm5lbChiLCBhKSwgYSk7Cit9CisgICAgCitS
R0JBMzIgbWFrZVVuUHJlbXVsdGlwbGllZFJHQkEoaW50IHIsIGludCBnLCBpbnQgYiwgaW50IGEp
Cit7CisgICAgcmV0dXJuIG1ha2VSR0JBKHVucHJlbXVsdGlwbGllZENoYW5uZWwociwgYSksIHVu
cHJlbXVsdGlwbGllZENoYW5uZWwoZywgYSksIHVucHJlbXVsdGlwbGllZENoYW5uZWwoYiwgYSks
IGEpOworfQorICAgIAogc3RhdGljIGludCBjb2xvckZsb2F0VG9SR0JBQnl0ZShmbG9hdCBmKQog
ewogICAgIC8vIFdlIHVzZSBscm91bmRmIGFuZCAyNTUgaW5zdGVhZCBvZiBuZXh0YWZ0ZXJmKDI1
NiwgMCkgdG8gbWF0Y2ggQ0cncyByb3VuZGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0NvbG9yLmgKaW5kZXggZGQyNjI3MGJiNDY2MGIzM2FlMDcwZThjOTQ0NTIwZDcyODQ1NGI4
YS4uYTU0NTMyYzc3NTVhN2M4NzY5MzYyNDBjYWU0ZWMzN2E0ZGEwZDA0MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCkBAIC01NCw2ICs1NCw4IEBAIHR5cGVkZWYg
dW5zaWduZWQgUkdCQTMyOyAvLyBEZXByZWNhdGVkOiBUeXBlIGZvciBhbiBSR0JBIHF1YWRydXBs
ZXQuIFVzZSBSR0JBIGNsCiAKIFdFQkNPUkVfRVhQT1JUIFJHQkEzMiBtYWtlUkdCKGludCByLCBp
bnQgZywgaW50IGIpOwogV0VCQ09SRV9FWFBPUlQgUkdCQTMyIG1ha2VSR0JBKGludCByLCBpbnQg
ZywgaW50IGIsIGludCBhKTsKK1dFQkNPUkVfRVhQT1JUIFJHQkEzMiBtYWtlUHJlbXVsdGlwbGll
ZFJHQkEoaW50IHIsIGludCBnLCBpbnQgYiwgaW50IGEpOworV0VCQ09SRV9FWFBPUlQgUkdCQTMy
IG1ha2VVblByZW11bHRpcGxpZWRSR0JBKGludCByLCBpbnQgZywgaW50IGIsIGludCBhKTsKIAog
V0VCQ09SRV9FWFBPUlQgUkdCQTMyIGNvbG9yV2l0aE92ZXJyaWRlQWxwaGEoUkdCQTMyIGNvbG9y
LCBmbG9hdCBvdmVycmlkZUFscGhhKTsKIFdFQkNPUkVfRVhQT1JUIFJHQkEzMiBjb2xvcldpdGhP
dmVycmlkZUFscGhhKFJHQkEzMiBjb2xvciwgT3B0aW9uYWw8ZmxvYXQ+IG92ZXJyaWRlQWxwaGEp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKaW5kZXggN2EyOTk5MmY3
NzE4OGUwMzgyOGQ4MGE2NWI4YmUyY2Q4ZGMyZGU3Ni4uOGU3YjUyYjFmNGYzMWM3NGEzY2IyYTEz
MjE1ZGE3N2EyYjE4YzA3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZS5oCkBAIC0xMzcsOCArMTM3LDExIEBAIHB1YmxpYzoKIAogICAgIGVudW0gVGlsZVJ1bGUgeyBT
dHJldGNoVGlsZSwgUm91bmRUaWxlLCBTcGFjZVRpbGUsIFJlcGVhdFRpbGUgfTsKIAorICAgIHZp
cnR1YWwgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2UoKSB7IHJldHVybiBudWxscHRyOyB9Cisg
ICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZU9mU2l6ZShjb25zdCBJbnRTaXpl
JikgeyByZXR1cm4gbnVsbHB0cjsgfQogICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgbmF0aXZl
SW1hZ2VGb3JDdXJyZW50RnJhbWUoKSB7IHJldHVybiBudWxscHRyOyB9CiAgICAgdmlydHVhbCBJ
bWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uRm9yQ3VycmVudEZyYW1lKCkgeyByZXR1cm4gSW1h
Z2VPcmllbnRhdGlvbigpOyB9CisgICAgdmlydHVhbCBWZWN0b3I8TmF0aXZlSW1hZ2VQdHI+IGZy
YW1lc05hdGl2ZUltYWdlcygpIHsgcmV0dXJuIHsgfTsgfQogCiAgICAgLy8gQWNjZXNzb3JzIGZv
ciBuYXRpdmUgaW1hZ2UgZm9ybWF0cy4KIApAQCAtMTUwLDEyICsxNTMsNiBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBDRkRhdGFSZWYgZ2V0VElGRlJlcHJlc2VudGF0aW9uKCkgeyByZXR1cm4gbnVs
bHB0cjsgfQogI2VuZGlmCiAKLSNpZiBVU0UoQ0cpCi0gICAgdmlydHVhbCBDR0ltYWdlUmVmIGdl
dENHSW1hZ2VSZWYoKSB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgdmlydHVhbCBDR0ltYWdlUmVm
IGdldEZpcnN0Q0dJbWFnZVJlZk9mU2l6ZShjb25zdCBJbnRTaXplJikgeyByZXR1cm4gbnVsbHB0
cjsgfQotICAgIHZpcnR1YWwgUmV0YWluUHRyPENGQXJyYXlSZWY+IGdldENHSW1hZ2VBcnJheSgp
IHsgcmV0dXJuIG51bGxwdHI7IH0KLSNlbmRpZgotCiAjaWYgUExBVEZPUk0oV0lOKQogICAgIHZp
cnR1YWwgYm9vbCBnZXRIQklUTUFQKEhCSVRNQVApIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmly
dHVhbCBib29sIGdldEhCSVRNQVBPZlNpemUoSEJJVE1BUCwgY29uc3QgSW50U2l6ZSopIHsgcmV0
dXJuIGZhbHNlOyB9CkBAIC0xNzksNiArMTc2LDggQEAgcHVibGljOgogI2lmICFBU1NFUlRfRElT
QUJMRUQKICAgICB2aXJ0dWFsIGJvb2wgbm90U29saWRDb2xvcigpIHsgcmV0dXJuIHRydWU7IH0K
ICNlbmRpZgorICAgIAorICAgIHZpcnR1YWwgdm9pZCBsYXlvdXRJZk5lZWRlZCgpIHsgfQogCiAg
ICAgdmlydHVhbCB2b2lkIGR1bXAoVGV4dFN0cmVhbSYpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lRGF0YS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lRGF0YS5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZjM3NGY4ZGQxNWFmY2I4NTgyNWEzOTg3YzAyMzY5ZTU2ZWQ1YjFkMAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVEYXRhLmNw
cApAQCAtMCwwICsxLDEzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW1hZ2VGcmFtZURhdGEu
aCIKKworI2luY2x1ZGUgIkNvbG9yLmgiCisKKyNpZiBVU0UoQ0cpCisjaW5jbHVkZSAiSW1hZ2VE
ZWNvZGVyQ0cuaCIKKyNlbHNlCisjaW5jbHVkZSAiSW1hZ2VEZWNvZGVyLmgiCisjZW5kaWYKKwor
I2luY2x1ZGUgIlBsYXRmb3JtSW1hZ2UuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitJbWFn
ZUZyYW1lRGF0YTo6SW1hZ2VGcmFtZURhdGEoKQoreworfQorCitJbWFnZUZyYW1lRGF0YTo6SW1h
Z2VGcmFtZURhdGEoTmF0aXZlSW1hZ2VQdHImJiBpbWFnZSkKKyAgICA6IG1fc3RhdHVzKERlY29k
aW5nU3RhdHVzOjpDb21wbGV0ZSkKKyAgICAsIG1faW1hZ2UoV1RGTW92ZShpbWFnZSkpCit7Cisg
ICAgbV9zaXplID0gUGxhdGZvcm1JbWFnZShtX2ltYWdlKS5zaXplKCk7CisgICAgbV9oYXNBbHBo
YSA9IFBsYXRmb3JtSW1hZ2UobV9pbWFnZSkuaGFzQWxwaGEoKTsKK30KKworSW1hZ2VGcmFtZURh
dGE6OkltYWdlRnJhbWVEYXRhKEltYWdlRGVjb2RlciYgZGVjb2Rlciwgc2l6ZV90IGluZGV4LCBT
dWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwsIENhY2hpbmcgZnJhbWVDYWNoaW5nKQor
eworICAgIEFTU0VSVChmcmFtZUNhY2hpbmcgPT0gQ2FjaGluZzo6TWV0YWRhdGEgfHwgZnJhbWVD
YWNoaW5nID09IENhY2hpbmc6Ok1ldGFkYXRhQW5kSW1hZ2UpOworICAgIAorICAgIGlmIChmcmFt
ZUNhY2hpbmcgPT0gQ2FjaGluZzo6SW1hZ2UgfHwgZnJhbWVDYWNoaW5nID09IENhY2hpbmc6Ok1l
dGFkYXRhQW5kSW1hZ2UpIHsKKyAgICAgICAgbV9pbWFnZSA9IGRlY29kZXIuY3JlYXRlRnJhbWVJ
bWFnZUF0SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwpOworICAgICAgICBtX3N1YnNhbXBs
aW5nTGV2ZWwgPSBzdWJzYW1wbGluZ0xldmVsOworICAgIH0KKyAgICAKKyAgICBpZiAoZnJhbWVD
YWNoaW5nID09IENhY2hpbmc6Ok1ldGFkYXRhIHx8IGZyYW1lQ2FjaGluZyA9PSBDYWNoaW5nOjpN
ZXRhZGF0YUFuZEltYWdlKSB7CisgICAgICAgIG1fb3JpZW50YXRpb24gPSBkZWNvZGVyLm9yaWVu
dGF0aW9uQXRJbmRleChpbmRleCk7CisgICAgICAgIG1fc3RhdHVzID0gZGVjb2Rlci5mcmFtZUlz
Q29tcGxldGVBdEluZGV4KGluZGV4KSA/IERlY29kaW5nU3RhdHVzOjpDb21wbGV0ZSA6IERlY29k
aW5nU3RhdHVzOjpQYXJ0aWFsOworICAgICAgICAKKyAgICAgICAgaWYgKGRlY29kZXIucmVwZXRp
dGlvbkNvdW50KCkgIT0gY0FuaW1hdGlvbk5vbmUpCisgICAgICAgICAgICBtX2R1cmF0aW9uID0g
ZGVjb2Rlci5mcmFtZUR1cmF0aW9uQXRJbmRleChpbmRleCk7CisgICAgICAgIAorICAgICAgICBt
X2hhc0FscGhhID0gZGVjb2Rlci5mcmFtZUhhc0FscGhhQXRJbmRleChpbmRleCk7CisgICAgICAg
IG1fc2l6ZSA9IGRlY29kZXIuZnJhbWVTaXplQXRJbmRleChpbmRleCwgc3Vic2FtcGxpbmdMZXZl
bCk7CisgICAgfQorfQorICAgIAorSW1hZ2VGcmFtZURhdGE6On5JbWFnZUZyYW1lRGF0YSgpCit7
CisgICAgY2xlYXJTdWJJbWFnZXMoKTsKK30KKyAgICAKK0ltYWdlRnJhbWVEYXRhJiBJbWFnZUZy
YW1lRGF0YTo6b3BlcmF0b3I9KGNvbnN0IEltYWdlRnJhbWVEYXRhJiBvdGhlcikKK3sKKyAgICBp
ZiAodGhpcyA9PSAmb3RoZXIpCisgICAgICAgIHJldHVybiAqdGhpczsKKworICAgIG1fc3RhdHVz
ID0gb3RoZXIubV9zdGF0dXM7CisgICAgbV9zaXplID0gb3RoZXIubV9zaXplOworICAgIG1faW1h
Z2UgPSBvdGhlci5tX2ltYWdlOworICAgIAorICAgIG1fcGl4ZWxzID0gb3RoZXIucGl4ZWxzKCkg
PyBCaXRtYXBQaXhlbHM6OmNyZWF0ZSgqb3RoZXIucGl4ZWxzKCkpIDogbnVsbHB0cjsKKyAgICAK
KyAgICBtX29yaWVudGF0aW9uID0gb3RoZXIubV9vcmllbnRhdGlvbjsKKyAgICBtX3N1YnNhbXBs
aW5nTGV2ZWwgPSBvdGhlci5tX3N1YnNhbXBsaW5nTGV2ZWw7CisgICAgbV9kdXJhdGlvbiA9IG90
aGVyLm1fZHVyYXRpb247CisgICAgbV9oYXNBbHBoYSA9IG90aGVyLm1faGFzQWxwaGE7CisgICAg
cmV0dXJuICp0aGlzOworfQorCit2b2lkIEltYWdlRnJhbWVEYXRhOjpjbGVhclN1YkltYWdlcygp
Cit7CisgICAgaWYgKCFtX2ltYWdlKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgUGxhdGZv
cm1JbWFnZShtX2ltYWdlKS5jbGVhclN1YkltYWdlcygpOworfQorCit1bnNpZ25lZCBJbWFnZUZy
YW1lRGF0YTo6Y2xlYXIoQ2FjaGluZyBmcmFtZUNhY2hpbmcpCit7CisgICAgQVNTRVJUKGZyYW1l
Q2FjaGluZyA9PSBDYWNoaW5nOjpFbXB0eSB8fCBmcmFtZUNhY2hpbmcgPT0gQ2FjaGluZzo6TWV0
YWRhdGEpOworICAgIAorICAgIHVuc2lnbmVkIGZyYW1lQnl0ZXMgPSB0aGlzLT5mcmFtZUJ5dGVz
KCk7CisgICAgCisgICAgY2xlYXJTdWJJbWFnZXMoKTsKKyAgICAKKyAgICBpZiAoZnJhbWVDYWNo
aW5nID09IENhY2hpbmc6OkVtcHR5KQorICAgICAgICAqdGhpcyA9IEltYWdlRnJhbWVEYXRhKCk7
CisgICAgZWxzZQorICAgICAgICBtX2ltYWdlID0gbnVsbHB0cjsKKyAgICAKKyAgICByZXR1cm4g
ZnJhbWVCeXRlczsKK30KKworQ29sb3IgSW1hZ2VGcmFtZURhdGE6OnNpbmdsZVBpeGVsU29saWRD
b2xvcigpIGNvbnN0Cit7CisgICAgaWYgKCFoYXNJbWFnZSgpIHx8IG1fc2l6ZSAhPSBJbnRTaXpl
KDEsIDEpKQorICAgICAgICByZXR1cm4gQ29sb3IoKTsKKyAgICAKKyAgICByZXR1cm4gUGxhdGZv
cm1JbWFnZShtX2ltYWdlKS5zaW5nbGVQaXhlbFNvbGlkQ29sb3IoKTsKK30KKworYm9vbCBJbWFn
ZUZyYW1lRGF0YTo6aXNBbG1vc3RTb2xpZENvbG9yKCkgY29uc3QKK3sKKyAgICBpZiAoIWhhc0lt
YWdlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICByZXR1cm4gUGxhdGZvcm1J
bWFnZShtX2ltYWdlKS5pc0FsbW9zdFNvbGlkQ29sb3IoKTsKK30KKyAgICAKK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVEYXRhLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lRGF0YS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmY2ZmI3NThlZjNhNDI1OGNiZGIzYWUyZjQ2ZTg0NDBmNzMwZWY0N2MKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lRGF0YS5o
CkBAIC0wLDAgKzEsMTAxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQml0bWFwUGl4ZWxzLmgiCisjaW5j
bHVkZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgorI2luY2x1ZGUgIkludFNpemUuaCIKKyNpbmNsdWRl
ICJOYXRpdmVJbWFnZVB0ci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENvbG9y
OworY2xhc3MgSW1hZ2VEZWNvZGVyOworCisvLyBTdWJzYW1wbGluZ0xldmVsLiAwIGlzIG5vIHN1
YnNhbXBsaW5nLCAxIGlzIGhhbGYgZGltZW5zaW9ucyBvbiBlYWNoIGF4aXMgZXRjLgordXNpbmcg
U3Vic2FtcGxpbmdMZXZlbCA9IHVpbnQ4X3Q7CisKK2VudW0gOiBTdWJzYW1wbGluZ0xldmVsIHsK
KyAgICBNaW5TdWJzYW1wbGluZ0xldmVsID0gMCwKKyAgICBNYXhTdWJzYW1wbGluZ0xldmVsID0g
MywKKyAgICBEZWZhdWx0U3Vic2FtcGxpbmdMZXZlbCA9IE1pblN1YnNhbXBsaW5nTGV2ZWwKK307
CisKK2NsYXNzIEltYWdlRnJhbWVEYXRhIHsKKyAgICBmcmllbmQgY2xhc3MgSW1hZ2VEZWNvZGVy
OworcHVibGljOgorICAgIGVudW0gY2xhc3MgQ2FjaGluZyB7IEVtcHR5LCBNZXRhZGF0YSwgSW1h
Z2UsIE1ldGFkYXRhQW5kSW1hZ2UgfTsKKyAgICBlbnVtIGNsYXNzIERlY29kaW5nU3RhdHVzIHsg
RW1wdHksIFBhcnRpYWwsIENvbXBsZXRlIH07CisgICAgCisgICAgSW1hZ2VGcmFtZURhdGEoKTsK
KyAgICBJbWFnZUZyYW1lRGF0YShOYXRpdmVJbWFnZVB0ciYmKTsKKyAgICBJbWFnZUZyYW1lRGF0
YShJbWFnZURlY29kZXImLCBzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgPSBEZWZhdWx0
U3Vic2FtcGxpbmdMZXZlbCwgQ2FjaGluZyA9IENhY2hpbmc6Ok1ldGFkYXRhQW5kSW1hZ2UpOwor
ICAgIEltYWdlRnJhbWVEYXRhKGNvbnN0IEltYWdlRnJhbWVEYXRhJiBvdGhlcikgeyBvcGVyYXRv
cj0ob3RoZXIpOyB9CisKKyAgICB+SW1hZ2VGcmFtZURhdGEoKTsKKworICAgIEltYWdlRnJhbWVE
YXRhJiBvcGVyYXRvcj0oY29uc3QgSW1hZ2VGcmFtZURhdGEmIG90aGVyKTsKKyAgICAKKyAgICB1
bnNpZ25lZCBjbGVhcihDYWNoaW5nKTsKKyAgICBDb2xvciBzaW5nbGVQaXhlbFNvbGlkQ29sb3Io
KSBjb25zdDsKKyAgICBib29sIGlzQWxtb3N0U29saWRDb2xvcigpIGNvbnN0OworICAgIAorICAg
IERlY29kaW5nU3RhdHVzIHN0YXR1cygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdHVzOyB9CisgICAg
Ym9vbCBpc0NvbXBsZXRlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0dXMgPT0gRGVjb2RpbmdTdGF0
dXM6OkNvbXBsZXRlOyB9CisgICAgSW50U2l6ZSBzaXplKCkgY29uc3QgeyByZXR1cm4gaGFzUGl4
ZWxzKCkgPyBwaXhlbHMoKS0+c2l6ZSgpIDogbV9zaXplOyB9CisgICAgdW5zaWduZWQgZnJhbWVC
eXRlcygpIGNvbnN0IHsgcmV0dXJuIGhhc0ltYWdlKCkgPyBtX3NpemUuYXJlYSgpICogc2l6ZW9m
KFJHQkEzMikgOiAwOyB9CisgICAgTmF0aXZlSW1hZ2VQdHIgaW1hZ2UoKSBjb25zdCB7IHJldHVy
biBtX2ltYWdlOyB9CisgICAgQml0bWFwUGl4ZWxzKiBwaXhlbHMoKSBjb25zdCB7IHJldHVybiBt
X3BpeGVscyA/IG1fcGl4ZWxzLmdldCgpIDogbnVsbHB0cjsgfQorICAgIAorICAgIEltYWdlT3Jp
ZW50YXRpb24gb3JpZW50YXRpb24oKSBjb25zdCB7IHJldHVybiBtX29yaWVudGF0aW9uOyB9Cisg
ICAgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsKCkgY29uc3QgeyByZXR1cm4gbV9z
dWJzYW1wbGluZ0xldmVsOyB9CisgICAgZmxvYXQgZHVyYXRpb24oKSBjb25zdCB7IHJldHVybiBt
X2R1cmF0aW9uOyB9CisgICAgCisgICAgYm9vbCBoYXNBbHBoYSgpIGNvbnN0IHsgcmV0dXJuIG1f
aGFzQWxwaGE7IH0KKyAgICBib29sIGhhc0ltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZTsg
fQorICAgIGJvb2wgaGFzTWV0YWRhdGEoKSBjb25zdCB7IHJldHVybiAhbV9zaXplLmlzRW1wdHko
KTsgfQorICAgIGJvb2wgaGFzUGl4ZWxzKCkgY29uc3QgeyByZXR1cm4gcGl4ZWxzKCk7IH0KKyAg
ICAKK3ByaXZhdGU6CisgICAgdm9pZCBjbGVhclN1YkltYWdlcygpOworCisgICAgdm9pZCBzZXRT
dGF0dXMoRGVjb2RpbmdTdGF0dXMgc3RhdHVzKSB7IG1fc3RhdHVzID0gc3RhdHVzOyB9CisgICAg
dm9pZCBzZXRPcmllbnRhdGlvbihJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKSB7IG1fb3Jp
ZW50YXRpb24gPSBvcmllbnRhdGlvbjsgfTsKKyAgICB2b2lkIHNldER1cmF0aW9uKHVuc2lnbmVk
IGR1cmF0aW9uKSB7IG1fZHVyYXRpb24gPSBkdXJhdGlvbjsgfQorICAgIHZvaWQgc2V0SGFzQWxw
aGEoYm9vbCBoYXNBbHBoYSkgeyBtX2hhc0FscGhhID0gaGFzQWxwaGE7IH0KKyAgICAKKyAgICBE
ZWNvZGluZ1N0YXR1cyBtX3N0YXR1cyB7IERlY29kaW5nU3RhdHVzOjpFbXB0eSB9OworICAgIElu
dFNpemUgbV9zaXplOworICAgIE5hdGl2ZUltYWdlUHRyIG1faW1hZ2U7CisgICAgc3RkOjp1bmlx
dWVfcHRyPEJpdG1hcFBpeGVscz4gbV9waXhlbHM7CisgICAgCisgICAgSW1hZ2VPcmllbnRhdGlv
biBtX29yaWVudGF0aW9uIHsgRGVmYXVsdEltYWdlT3JpZW50YXRpb24gfTsKKyAgICBTdWJzYW1w
bGluZ0xldmVsIG1fc3Vic2FtcGxpbmdMZXZlbCB7IDAgfTsKKyAgICBmbG9hdCBtX2R1cmF0aW9u
IHsgMCB9OworICAgIGJvb2wgbV9oYXNBbHBoYSB7IHRydWUgfTsKK307CisgICAgCit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKaW5kZXgg
ZGRkOGE1NWJhMDkwNmM1ODY2YTE5MmNmOGU0MTRlYTcwN2I3MjhhYy4uODJmNmUyZDZlNDU0MzNk
YTFhN2Q1NmIzNzBkZmE2MWE0YzQxOTEzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcApAQCAtMjI0LDYgKzIyNCwxMSBAQCBOYXRpdmVJ
bWFnZVB0ciBJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4
LCBTdWJzYW1wbGluZ0xldgogICAgIHJldHVybiBpbml0aWFsaXplZCgpID8gbV9kZWNvZGVyLT5j
cmVhdGVGcmFtZUltYWdlQXRJbmRleChpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCkgOiBudWxscHRy
OwogfQogCitJbWFnZUZyYW1lRGF0YSBJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVEYXRhQXRJbmRl
eChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgSW1hZ2VG
cmFtZURhdGE6OkNhY2hpbmcgY2FjaGluZykKK3sKKyAgICByZXR1cm4gaW5pdGlhbGl6ZWQoKSA/
IEltYWdlRnJhbWVEYXRhKCptX2RlY29kZXIsIGluZGV4LCBzdWJzYW1wbGluZ0xldmVsLCBjYWNo
aW5nKSA6IEltYWdlRnJhbWVEYXRhKCk7Cit9CisgICAgCiB2b2lkIEltYWdlU291cmNlOjpkdW1w
KFRleHRTdHJlYW0mIHRzKSBjb25zdAogewogICAgIGlmIChtX2FsbG93U3Vic2FtcGxpbmcpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaAppbmRleCA2
MDM1NzM5YjdlOGIwOTZkYzhkZmU5YzUzMGE0MmM2ZjI5MWJkYTAwLi5hNDBjN2NlOTMwN2NkYWRm
MDc5YWI3MDFhODI3OTliNjkwNTI5ZDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlU291cmNlLmgKQEAgLTI3LDYgKzI3LDcgQEAKICNpZm5kZWYgSW1hZ2VT
b3VyY2VfaAogI2RlZmluZSBJbWFnZVNvdXJjZV9oCiAKKyNpbmNsdWRlICJJbWFnZUZyYW1lRGF0
YS5oIgogI2luY2x1ZGUgIkltYWdlT3JpZW50YXRpb24uaCIKICNpbmNsdWRlICJJbnRQb2ludC5o
IgogI2luY2x1ZGUgIk5hdGl2ZUltYWdlUHRyLmgiCkBAIC02Myw5ICs2NCw2IEBAIGNvbnN0IGlu
dCBjQW5pbWF0aW9uTG9vcE9uY2UgPSAwOwogY29uc3QgaW50IGNBbmltYXRpb25Mb29wSW5maW5p
dGUgPSAtMTsKIGNvbnN0IGludCBjQW5pbWF0aW9uTm9uZSA9IC0yOwogCi0vLyBTdWJzYW1wbGlu
Z0xldmVsLiAwIGlzIG5vIHN1YnNhbXBsaW5nLCAxIGlzIGhhbGYgZGltZW5zaW9ucyBvbiBlYWNo
IGF4aXMgZXRjLgotdHlwZWRlZiBzaG9ydCBTdWJzYW1wbGluZ0xldmVsOwotCiBjbGFzcyBJbWFn
ZVNvdXJjZSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW1hZ2VTb3VyY2UpOwogICAgIGZy
aWVuZCBjbGFzcyBCaXRtYXBJbWFnZTsKQEAgLTEzMiwxOCArMTMwLDE5IEBAIHB1YmxpYzoKICAg
ICBib29sIGFsbG93U3Vic2FtcGxpbmdPZkZyYW1lQXRJbmRleChzaXplX3QpIGNvbnN0OwogICAg
IAogICAgIC8vIFNpemUgb2Ygb3B0aW9uYWxseSBzdWJzYW1wbGVkIGZyYW1lLgotICAgIEludFNp
emUgZnJhbWVTaXplQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSAwLCBSZXNwZWN0
SW1hZ2VPcmllbnRhdGlvbkVudW0gPSBEb05vdFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKSBjb25z
dDsKKyAgICBJbnRTaXplIGZyYW1lU2l6ZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVs
ID0gRGVmYXVsdFN1YnNhbXBsaW5nTGV2ZWwsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSA9
IERvTm90UmVzcGVjdEltYWdlT3JpZW50YXRpb24pIGNvbnN0OwogICAgIAogICAgIC8vIFJldHVy
biB0aGUgbnVtYmVyIG9mIGJ5dGVzIGluIHRoZSBkZWNvZGVkIGZyYW1lLiBJZiB0aGUgZnJhbWUg
aXMgbm90IHlldAogICAgIC8vIGRlY29kZWQgdGhlbiByZXR1cm4gMC4KLSAgICB1bnNpZ25lZCBm
cmFtZUJ5dGVzQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSAwKSBjb25zdDsKKyAg
ICB1bnNpZ25lZCBmcmFtZUJ5dGVzQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBE
ZWZhdWx0U3Vic2FtcGxpbmdMZXZlbCkgY29uc3Q7CiAgICAgCiAgICAgZmxvYXQgZnJhbWVEdXJh
dGlvbkF0SW5kZXgoc2l6ZV90KTsKICAgICBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uQXRJ
bmRleChzaXplX3QpIGNvbnN0OyAvLyBFWElGIGltYWdlIG9yaWVudGF0aW9uCiAgICAgCiAgICAg
Ly8gQ2FsbGVycyBzaG91bGQgbm90IGNhbGwgdGhpcyBhZnRlciBjYWxsaW5nIGNsZWFyKCkgd2l0
aCBhIGhpZ2hlciBpbmRleDsKICAgICAvLyBzZWUgY29tbWVudHMgb24gY2xlYXIoKSBhYm92ZS4K
LSAgICBOYXRpdmVJbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNh
bXBsaW5nTGV2ZWwgPSAwKTsKKyAgICBOYXRpdmVJbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJ
bmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBEZWZhdWx0U3Vic2FtcGxpbmdMZXZlbCk7
CisgICAgSW1hZ2VGcmFtZURhdGEgY3JlYXRlRnJhbWVEYXRhQXRJbmRleChzaXplX3QsIFN1YnNh
bXBsaW5nTGV2ZWwgPSBEZWZhdWx0U3Vic2FtcGxpbmdMZXZlbCwgSW1hZ2VGcmFtZURhdGE6OkNh
Y2hpbmcgPSBJbWFnZUZyYW1lRGF0YTo6Q2FjaGluZzo6TWV0YWRhdGFBbmRJbWFnZSk7CiAgICAg
CiBwcml2YXRlOgogICAgIHZvaWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVfdCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUltYWdlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUltYWdlLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYWI3YWVhNDg5ZjNlYjJhODI4NzcxYzIxMDNlOGQ0ZDBiZTE3YmU1ZAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2Uu
aApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiR3JhcGhpY3NUeXBlcy5oIgorI2lu
Y2x1ZGUgIkltYWdlT3JpZW50YXRpb24uaCIKKyNpbmNsdWRlICJOYXRpdmVJbWFnZVB0ci5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENvbG9yOworY2xhc3MgRmxvYXRSZWN0Owor
Y2xhc3MgSW50U2l6ZTsKK2NsYXNzIEdyYXBoaWNzQ29udGV4dDsKKworY2xhc3MgUGxhdGZvcm1J
bWFnZSB7CitwdWJsaWM6CisgICAgUGxhdGZvcm1JbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYg
aW1hZ2UpCisgICAgICAgIDogbV9pbWFnZShpbWFnZSkKKyAgICB7CisgICAgfQorCisgICAgYm9v
bCBpc05pbCgpIGNvbnN0IHsgcmV0dXJuICFtX2ltYWdlOyB9CisgICAgdm9pZCBjbGVhclN1Yklt
YWdlcygpOworCisgICAgSW50U2l6ZSBzaXplKCkgY29uc3Q7CisgICAgYm9vbCBoYXNBbHBoYSgp
IGNvbnN0OworICAgIENvbG9yIHNpbmdsZVBpeGVsU29saWRDb2xvcigpIGNvbnN0OworICAgIGJv
b2wgaXNBbG1vc3RTb2xpZENvbG9yKCkgY29uc3Q7CisgICAgdm9pZCBkcmF3KEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwg
Y29uc3QgSW1hZ2VPcmllbnRhdGlvbiYpIGNvbnN0OworCisgICAgc3RhdGljIGZsb2F0IHN1YnNh
bXBsaW5nU2NhbGUoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0KTsKKworcHJpdmF0ZToKKyNpZiBVU0UoQ0cpCisgICAg
Q0dJbWFnZVJlZiBjZ0ltYWdlUmVmKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZSA/IG1faW1hZ2Uu
Z2V0KCkgOiBudWxscHRyOyB9CisjZW5kaWYKKyAgICBOYXRpdmVJbWFnZVB0ciBtX2ltYWdlOwor
fTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCmluZGV4IGY0YzE0NTdiYmIyNTU3NTRm
MDBhMDYyNWVlODNlMDRkYTdjNmVmY2YuLmQ1MjBmNWQ1ODVhYzYwZGJhZWUyNTVlMWI4M2MyNGRj
Njg3MjEwYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KQEAgLTIxMiw3ICsyMTIsNyBA
QCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dXBkYXRlRGlzcGxh
eU1vZGUoKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICB9
CiAKLSAgICAgICAgICAgICAgICBtX3BhdXNlZEltYWdlID0gaW1hZ2UtPmdldENHSW1hZ2VSZWYo
KTsKKyAgICAgICAgICAgICAgICBtX3BhdXNlZEltYWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9y
Q3VycmVudEZyYW1lKCk7CiAgICAgICAgICAgICAgICAgaWYgKCFtX3BhdXNlZEltYWdlKSB7CiAg
ICAgICAgICAgICAgICAgICAgIG1fZGlzcGxheU1vZGUgPSBQYWludEl0QmxhY2s7CiAgICAgICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMTc3MjJiZWM1M2FiOGEwOGE4ZGE4NTI4YjllMGQ3YzRkMGNkNDEz
NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcAorKysg
L2Rldi9udWxsCkBAIC0xLDE0MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAy
MDA1LCAyMDA2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDcgQWxwIFRva2VyIDxhbHBAYXRva2VyLmNvbT4KLSAqIENvcHlyaWdodCAoQykgMjAw
OSBEaXJrIFNjaHVsemUgPGtyaXRAd2Via2l0Lm9yZz4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkJpdG1h
cEltYWdlLmgiCi0KLSNpZiBVU0UoQ0FJUk8pCi0KLSNpbmNsdWRlICJDYWlyb1V0aWxpdGllcy5o
IgotI2luY2x1ZGUgIkltYWdlT2JzZXJ2ZXIuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybUNvbnRleHRD
YWlyby5oIgotI2luY2x1ZGUgIlRpbWVyLmgiCi0jaW5jbHVkZSA8Y2Fpcm8uaD4KLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgTmF0aXZlSW1hZ2UgewotCi1JbnRTaXplIHNpemUo
Y29uc3QgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4mIGltYWdlKQotewotICAgIHJldHVybiBjYWly
b1N1cmZhY2VTaXplKGltYWdlLmdldCgpKTsKLX0KLQotYm9vbCBoYXNBbHBoYShjb25zdCBSZWZQ
dHI8Y2Fpcm9fc3VyZmFjZV90PiYgaW1hZ2UpCi17Ci0gICAgcmV0dXJuIGNhaXJvX3N1cmZhY2Vf
Z2V0X2NvbnRlbnQoaW1hZ2UuZ2V0KCkpICE9IENBSVJPX0NPTlRFTlRfQ09MT1I7Ci19Ci0KLUNv
bG9yIHNpbmdsZVBpeGVsU29saWRDb2xvcihjb25zdCBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiYg
aW1hZ2UpCi17Ci0gICAgQVNTRVJUKGltYWdlKTsKLSAgICAKLSAgICBpZiAoTmF0aXZlSW1hZ2U6
OnNpemUoaW1hZ2UpICE9IEludFNpemUoMSwgMSkpCi0gICAgICAgIHJldHVybiBDb2xvcigpOwot
Ci0gICAgaWYgKGNhaXJvX3N1cmZhY2VfZ2V0X3R5cGUoaW1hZ2UuZ2V0KCkpICE9IENBSVJPX1NV
UkZBQ0VfVFlQRV9JTUFHRSkKLSAgICAgICAgcmV0dXJuIENvbG9yKCk7Ci0KLSAgICBSR0JBMzIq
IHBpeGVsID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8UkdCQTMyKj4oY2Fpcm9faW1hZ2Vfc3VyZmFj
ZV9nZXRfZGF0YShpbWFnZS5nZXQoKSkpOwotICAgIHJldHVybiBjb2xvckZyb21QcmVtdWx0aXBs
aWVkQVJHQigqcGl4ZWwpOwotfQotCi19Ci0KLXZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmMsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLAotICAgIEJsZW5kTW9kZSBibGVuZE1vZGUsIElt
YWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiBkZXNjcmlwdGlvbikKLXsKLSAgICBpZiAoIWRzdC53
aWR0aCgpIHx8ICFkc3QuaGVpZ2h0KCkgfHwgIXNyYy53aWR0aCgpIHx8ICFzcmMuaGVpZ2h0KCkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIHN0YXJ0QW5pbWF0aW9uKCk7Ci0KLSAgICBhdXRvIHN1
cmZhY2UgPSBmcmFtZUltYWdlQXRJbmRleChtX2N1cnJlbnRGcmFtZSk7Ci0gICAgaWYgKCFzdXJm
YWNlKSAvLyBJZiBpdCdzIHRvbyBlYXJseSB3ZSB3b24ndCBoYXZlIGFuIGltYWdlIHlldC4KLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgQ29sb3IgY29sb3IgPSBzaW5nbGVQaXhlbFNvbGlkQ29sb3Io
KTsKLSAgICBpZiAoY29sb3IuaXNWYWxpZCgpKSB7Ci0gICAgICAgIGZpbGxXaXRoU29saWRDb2xv
cihjb250ZXh0LCBkc3QsIGNvbG9yLCBvcCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBjb250ZXh0LnNhdmUoKTsKLQotICAgIC8vIFNldCB0aGUgY29tcG9zaXRpbmcgb3BlcmF0aW9u
LgotICAgIGlmIChvcCA9PSBDb21wb3NpdGVTb3VyY2VPdmVyICYmIGJsZW5kTW9kZSA9PSBCbGVu
ZE1vZGVOb3JtYWwgJiYgIWZyYW1lSGFzQWxwaGFBdEluZGV4KG1fY3VycmVudEZyYW1lKSkKLSAg
ICAgICAgY29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlQ29weSk7Ci0gICAg
ZWxzZQotICAgICAgICBjb250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihvcCwgYmxlbmRNb2Rl
KTsKLQotI2lmIEVOQUJMRShJTUFHRV9ERUNPREVSX0RPV05fU0FNUExJTkcpCi0gICAgSW50U2l6
ZSBzY2FsZWRTaXplID0gY2Fpcm9TdXJmYWNlU2l6ZShzdXJmYWNlLmdldCgpKTsKLSAgICBGbG9h
dFJlY3QgYWRqdXN0ZWRTcmNSZWN0ID0gYWRqdXN0U291cmNlUmVjdEZvckRvd25TYW1wbGluZyhz
cmMsIHNjYWxlZFNpemUpOwotI2Vsc2UKLSAgICBGbG9hdFJlY3QgYWRqdXN0ZWRTcmNSZWN0KHNy
Yyk7Ci0jZW5kaWYKLQotICAgIEltYWdlT3JpZW50YXRpb24gZnJhbWVPcmllbnRhdGlvbihkZXNj
cmlwdGlvbi5pbWFnZU9yaWVudGF0aW9uKCkpOwotICAgIGlmIChkZXNjcmlwdGlvbi5yZXNwZWN0
SW1hZ2VPcmllbnRhdGlvbigpID09IFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKQotICAgICAgICBm
cmFtZU9yaWVudGF0aW9uID0gZnJhbWVPcmllbnRhdGlvbkF0SW5kZXgobV9jdXJyZW50RnJhbWUp
OwotCi0gICAgRmxvYXRSZWN0IGRzdFJlY3QgPSBkc3Q7Ci0KLSAgICBpZiAoZnJhbWVPcmllbnRh
dGlvbiAhPSBEZWZhdWx0SW1hZ2VPcmllbnRhdGlvbikgewotICAgICAgICAvLyBJbWFnZU9yaWVu
dGF0aW9uIGV4cGVjdHMgdGhlIG9yaWdpbiB0byBiZSBhdCAoMCwgMCkuCi0gICAgICAgIGNvbnRl
eHQudHJhbnNsYXRlKGRzdFJlY3QueCgpLCBkc3RSZWN0LnkoKSk7Ci0gICAgICAgIGRzdFJlY3Qu
c2V0TG9jYXRpb24oRmxvYXRQb2ludCgpKTsKLSAgICAgICAgY29udGV4dC5jb25jYXRDVE0oZnJh
bWVPcmllbnRhdGlvbi50cmFuc2Zvcm1Gcm9tRGVmYXVsdChkc3RSZWN0LnNpemUoKSkpOwotICAg
ICAgICBpZiAoZnJhbWVPcmllbnRhdGlvbi51c2VzV2lkdGhBc0hlaWdodCgpKSB7Ci0gICAgICAg
ICAgICAvLyBUaGUgZGVzdGluYXRpb24gcmVjdGFuZ2xlIHdpbGwgaGF2ZSBpdCdzIHdpZHRoIGFu
ZCBoZWlnaHQgYWxyZWFkeSByZXZlcnNlZCBmb3IgdGhlIG9yaWVudGF0aW9uIG9mCi0gICAgICAg
ICAgICAvLyB0aGUgaW1hZ2UsIGFzIGl0IHdhcyBuZWVkZWQgZm9yIHBhZ2UgbGF5b3V0LCBzbyB3
ZSBuZWVkIHRvIHJldmVyc2UgaXQgYmFjayBoZXJlLgotICAgICAgICAgICAgZHN0UmVjdCA9IEZs
b2F0UmVjdChkc3RSZWN0LngoKSwgZHN0UmVjdC55KCksIGRzdFJlY3QuaGVpZ2h0KCksIGRzdFJl
Y3Qud2lkdGgoKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBjb250ZXh0LnBsYXRmb3JtQ29u
dGV4dCgpLT5kcmF3U3VyZmFjZVRvQ29udGV4dChzdXJmYWNlLmdldCgpLCBkc3RSZWN0LCBhZGp1
c3RlZFNyY1JlY3QsIGNvbnRleHQpOwotCi0gICAgY29udGV4dC5yZXN0b3JlKCk7Ci0KLSAgICBp
ZiAoaW1hZ2VPYnNlcnZlcigpKQotICAgICAgICBpbWFnZU9ic2VydmVyKCktPmRpZERyYXcodGhp
cyk7Ci19Ci0KLWJvb2wgRnJhbWVEYXRhOjpjbGVhcihib29sIGNsZWFyTWV0YWRhdGEpCi17Ci0g
ICAgaWYgKGNsZWFyTWV0YWRhdGEpCi0gICAgICAgIG1faGF2ZU1ldGFkYXRhID0gZmFsc2U7Ci0K
LSAgICBpZiAobV9pbWFnZSkgewotICAgICAgICBtX2ltYWdlID0gbnVsbHB0cjsKLSAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gVVNFKENBSVJPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1JbWFnZUNhaXJvLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtSW1hZ2VDYWlyby5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNzBhZGFlYzI3MGUzMWIwNTRhZmM1ZjY2ZDQ4Mjg4YWViZjA2MWUzYQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L1BsYXRmb3JtSW1hZ2VDYWlyby5jcHAKQEAgLTAsMCArMSwxMTEgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIlBsYXRmb3JtSW1hZ2UuaCIKKworI2lmIFVTRShDQUlSTykKKworI2luY2x1ZGUgIkNh
aXJvVXRpbGl0aWVzLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0Q2Fpcm8uaCIKKyNpbmNs
dWRlIDxjYWlyby5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgUGxhdGZvcm1JbWFn
ZTo6Y2xlYXJTdWJJbWFnZXMoKQoreworfQorCitJbnRTaXplIFBsYXRmb3JtSW1hZ2U6OnNpemUo
KSBjb25zdAoreworICAgIHJldHVybiBpc05pbCgpID8gSW50U2l6ZSgpIDogY2Fpcm9TdXJmYWNl
U2l6ZShtX2ltYWdlLmdldCgpKTsKK30KKworYm9vbCBQbGF0Zm9ybUltYWdlOjpoYXNBbHBoYSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIGlzTmlsKCkgfHwgY2Fpcm9fc3VyZmFjZV9nZXRfY29udGVu
dChtX2ltYWdlLmdldCgpKSAhPSBDQUlST19DT05URU5UX0NPTE9SOworfQorCitDb2xvciBQbGF0
Zm9ybUltYWdlOjpzaW5nbGVQaXhlbFNvbGlkQ29sb3IoKSBjb25zdAoreworICAgIGlmIChpc05p
bCgpIHx8IHNpemUoKSAhPSBJbnRTaXplKDEsIDEpKQorICAgICAgICByZXR1cm4gQ29sb3IoKTsK
KworICAgIGlmIChjYWlyb19zdXJmYWNlX2dldF90eXBlKG1faW1hZ2UuZ2V0KCkpICE9IENBSVJP
X1NVUkZBQ0VfVFlQRV9JTUFHRSkKKyAgICAgICAgcmV0dXJuIENvbG9yKCk7CisKKyAgICBSR0JB
MzIqIHBpeGVsID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8UkdCQTMyKj4oY2Fpcm9faW1hZ2Vfc3Vy
ZmFjZV9nZXRfZGF0YShtX2ltYWdlLmdldCgpKSk7CisgICAgcmV0dXJuIGNvbG9yRnJvbVByZW11
bHRpcGxpZWRBUkdCKCpwaXhlbCk7Cit9CisKK2Jvb2wgUGxhdGZvcm1JbWFnZTo6aXNBbG1vc3RT
b2xpZENvbG9yKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Zsb2F0IFBsYXRm
b3JtSW1hZ2U6OnN1YnNhbXBsaW5nU2NhbGUoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRS
ZWN0JiwgY29uc3QgRmxvYXRSZWN0JikKK3sKKyAgICByZXR1cm4gMTsKK30KKwordm9pZCBQbGF0
Zm9ybUltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRTaXplJiwgQ29t
cG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBtb2RlLCBjb25zdCBJbWFnZU9yaWVudGF0aW9u
JiBvcmllbnRhdGlvbikgY29uc3QKK3sKKyAgICBjb250ZXh0LnNhdmUoKTsKKyAgICAKKyAgICAv
LyBTZXQgdGhlIGNvbXBvc2l0aW5nIG9wZXJhdGlvbi4KKyAgICBpZiAob3AgPT0gQ29tcG9zaXRl
U291cmNlT3ZlciAmJiBtb2RlID09IEJsZW5kTW9kZU5vcm1hbCAmJiAhaGFzQWxwaGEoKSkKKyAg
ICAgICAgY29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlQ29weSk7CisgICAg
ZWxzZQorICAgICAgICBjb250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihvcCwgbW9kZSk7Cisg
ICAgICAgIAorI2lmIEVOQUJMRShJTUFHRV9ERUNPREVSX0RPV05fU0FNUExJTkcpCisgICAgSW50
U2l6ZSBzY2FsZWRTaXplID0gY2Fpcm9TdXJmYWNlU2l6ZShtX2ltYWdlLmdldCgpKTsKKyAgICBG
bG9hdFJlY3QgYWRqdXN0ZWRTcmNSZWN0ID0gYWRqdXN0U291cmNlUmVjdEZvckRvd25TYW1wbGlu
ZyhzcmNSZWN0LCBzY2FsZWRTaXplKTsKKyNlbHNlCisgICAgRmxvYXRSZWN0IGFkanVzdGVkU3Jj
UmVjdChzcmNSZWN0KTsKKyNlbmRpZgorICAgICAgICAKKyAgICBGbG9hdFJlY3QgYWRqdXN0ZWRE
ZXN0UmVjdCA9IGRlc3RSZWN0OworICAgICAgICAKKyAgICBpZiAob3JpZW50YXRpb24gIT0gRGVm
YXVsdEltYWdlT3JpZW50YXRpb24pIHsKKyAgICAgICAgLy8gSW1hZ2VPcmllbnRhdGlvbiBleHBl
Y3RzIHRoZSBvcmlnaW4gdG8gYmUgYXQgKDAsIDApLgorICAgICAgICBjb250ZXh0LnRyYW5zbGF0
ZShkZXN0UmVjdC54KCksIGRlc3RSZWN0LnkoKSk7CisgICAgICAgIGFkanVzdGVkRGVzdFJlY3Qu
c2V0TG9jYXRpb24oRmxvYXRQb2ludCgpKTsKKyAgICAgICAgY29udGV4dC5jb25jYXRDVE0ob3Jp
ZW50YXRpb24udHJhbnNmb3JtRnJvbURlZmF1bHQoYWRqdXN0ZWREZXN0UmVjdC5zaXplKCkpKTsK
KyAgICAgICAgaWYgKG9yaWVudGF0aW9uLnVzZXNXaWR0aEFzSGVpZ2h0KCkpIHsKKyAgICAgICAg
ICAgIC8vIFRoZSBkZXN0aW5hdGlvbiByZWN0YW5nbGUgd2lsbCBoYXZlIGl0J3Mgd2lkdGggYW5k
IGhlaWdodCBhbHJlYWR5IHJldmVyc2VkIGZvciB0aGUgb3JpZW50YXRpb24gb2YKKyAgICAgICAg
ICAgIC8vIHRoZSBpbWFnZSwgYXMgaXQgd2FzIG5lZWRlZCBmb3IgcGFnZSBsYXlvdXQsIHNvIHdl
IG5lZWQgdG8gcmV2ZXJzZSBpdCBiYWNrIGhlcmUuCisgICAgICAgICAgICBhZGp1c3RlZERlc3RS
ZWN0LnNldFNpemUoYWRqdXN0ZWREZXN0UmVjdC5zaXplKCkudHJhbnNwb3NlZFNpemUoKSk7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLT5kcmF3U3Vy
ZmFjZVRvQ29udGV4dChtX2ltYWdlLmdldCgpLCBhZGp1c3RlZERlc3RSZWN0LCBhZGp1c3RlZFNy
Y1JlY3QsIGNvbnRleHQpOworCisgICAgY29udGV4dC5yZXN0b3JlKCk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVTRShDQUlSTykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFwSW1hZ2VDRy5jcHAKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAzYzgxYTE3MGJlNzlhZTZiZTZjYWNkYzk5ZjRjMzk4Y2Fh
ZjQyNmQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFwSW1hZ2VDRy5jcHAKKysrIC9k
ZXYvbnVsbApAQCAtMSwyMDYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAw
NSwgMjAwNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiQml0bWFwSW1hZ2UuaCIKLQotI2lmIFVTRShDRykKLQotI2luY2x1ZGUgIkNvcmVHcmFwaGlj
c1NQSS5oIgotI2luY2x1ZGUgIkZsb2F0Q29udmVyc2lvbi5oIgotI2luY2x1ZGUgIkdlb21ldHJ5
VXRpbGl0aWVzLmgiCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0Q0cuaCIKLSNpbmNsdWRlICJJ
bWFnZU9ic2VydmVyLmgiCi0jaW5jbHVkZSAiU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5oIgotI2lu
Y2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLQotI2lmIFVTRShBUFBLSVQpCi0jaW5jbHVkZSA8QXBw
bGljYXRpb25TZXJ2aWNlcy9BcHBsaWNhdGlvblNlcnZpY2VzLmg+Ci0jZW5kaWYKLQotI2lmIFBM
QVRGT1JNKENPQ09BKQotI2luY2x1ZGUgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKLSNlbmRp
ZgotCi0jaWYgUExBVEZPUk0oV0lOKQotI2luY2x1ZGUgPFdlYktpdFN5c3RlbUludGVyZmFjZS9X
ZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KLSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LW5hbWVzcGFjZSBOYXRpdmVJbWFnZSB7Ci0KLUludFNpemUgc2l6ZShjb25zdCBSZXRhaW5QdHI8
Q0dJbWFnZVJlZj4mIGltYWdlKQotewotICAgIEFTU0VSVChpbWFnZSk7Ci0gICAgcmV0dXJuIElu
dFNpemUoQ0dJbWFnZUdldFdpZHRoKGltYWdlLmdldCgpKSwgQ0dJbWFnZUdldEhlaWdodChpbWFn
ZS5nZXQoKSkpOwotfQotCi1ib29sIGhhc0FscGhhKGNvbnN0IFJldGFpblB0cjxDR0ltYWdlUmVm
PiYpCi17Ci0gICAgLy8gRklYTUU6IEFuc3dlciBjb3JyZWN0bHkgdGhlIHF1ZXN0aW9uOiBkb2Vz
IHRoZSBDR0ltYWdlUmVmIGhhdmUgYWxwaGEgY2hhbm5uZWw/Ci0gICAgcmV0dXJuIHRydWU7Ci19
Ci0gICAgCi1Db2xvciBzaW5nbGVQaXhlbFNvbGlkQ29sb3IoY29uc3QgUmV0YWluUHRyPENHSW1h
Z2VSZWY+JiBpbWFnZSkKLXsKLSAgICBBU1NFUlQoaW1hZ2UpOwotICAgIAotICAgIGlmIChOYXRp
dmVJbWFnZTo6c2l6ZShpbWFnZSkgIT0gSW50U2l6ZSgxLCAxKSkKLSAgICAgICAgcmV0dXJuIENv
bG9yKCk7Ci0gICAgCi0gICAgdW5zaWduZWQgY2hhciBwaXhlbFs0XTsgLy8gUkdCQQotICAgIGF1
dG8gYml0bWFwQ29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKHBpeGVsLCAx
LCAxLCA4LCBzaXplb2YocGl4ZWwpLCBzUkdCQ29sb3JTcGFjZVJlZigpLAotICAgICAgICBrQ0dJ
bWFnZUFscGhhUHJlbXVsdGlwbGllZExhc3QgfCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkJpZykpOwot
Ci0gICAgaWYgKCFiaXRtYXBDb250ZXh0KQotICAgICAgICByZXR1cm4gQ29sb3IoKTsKLSAgICAK
LSAgICBDR0NvbnRleHRTZXRCbGVuZE1vZGUoYml0bWFwQ29udGV4dC5nZXQoKSwga0NHQmxlbmRN
b2RlQ29weSk7Ci0gICAgQ0dDb250ZXh0RHJhd0ltYWdlKGJpdG1hcENvbnRleHQuZ2V0KCksIENH
UmVjdE1ha2UoMCwgMCwgMSwgMSksIGltYWdlLmdldCgpKTsKLSAgICAKLSAgICBpZiAoIXBpeGVs
WzNdKQotICAgICAgICByZXR1cm4gQ29sb3IoMCwgMCwgMCwgMCk7Ci0KLSAgICByZXR1cm4gQ29s
b3IocGl4ZWxbMF0gKiAyNTUgLyBwaXhlbFszXSwgcGl4ZWxbMV0gKiAyNTUgLyBwaXhlbFszXSwg
cGl4ZWxbMl0gKiAyNTUgLyBwaXhlbFszXSwgcGl4ZWxbM10pOwotfQotCi19Ci0KLWJvb2wgRnJh
bWVEYXRhOjpjbGVhcihib29sIGNsZWFyTWV0YWRhdGEpCi17Ci0gICAgaWYgKGNsZWFyTWV0YWRh
dGEpCi0gICAgICAgIG1faGF2ZU1ldGFkYXRhID0gZmFsc2U7Ci0KLSAgICBtX3N1YnNhbXBsaW5n
TGV2ZWwgPSAwOwotCi0gICAgaWYgKG1faW1hZ2UpIHsKLSNpZiBDQUNIRV9TVUJJTUFHRVMKLSAg
ICAgICAgc3ViaW1hZ2VDYWNoZSgpLmNsZWFySW1hZ2UobV9pbWFnZS5nZXQoKSk7Ci0jZW5kaWYK
LSAgICAgICAgbV9pbWFnZSA9IG51bGxwdHI7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0K
LSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLUNHSW1hZ2VSZWYgQml0bWFwSW1hZ2U6OmdldENHSW1h
Z2VSZWYoKQotewotICAgIHJldHVybiBmcmFtZUltYWdlQXRJbmRleCgwKS5nZXQoKTsKLX0KLQot
Q0dJbWFnZVJlZiBCaXRtYXBJbWFnZTo6Z2V0Rmlyc3RDR0ltYWdlUmVmT2ZTaXplKGNvbnN0IElu
dFNpemUmIHNpemUpCi17Ci0gICAgc2l6ZV90IGNvdW50ID0gZnJhbWVDb3VudCgpOwotICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewotICAgICAgICBDR0ltYWdlUmVmIGNn
SW1hZ2UgPSBmcmFtZUltYWdlQXRJbmRleChpKS5nZXQoKTsKLSAgICAgICAgaWYgKGNnSW1hZ2Ug
JiYgSW50U2l6ZShDR0ltYWdlR2V0V2lkdGgoY2dJbWFnZSksIENHSW1hZ2VHZXRIZWlnaHQoY2dJ
bWFnZSkpID09IHNpemUpCi0gICAgICAgICAgICByZXR1cm4gY2dJbWFnZTsKLSAgICB9Ci0KLSAg
ICAvLyBGYWxsYmFjayB0byB0aGUgZGVmYXVsdCBDR0ltYWdlUmVmIGlmIHdlIGNhbid0IGZpbmQg
dGhlIHJpZ2h0IHNpemUKLSAgICByZXR1cm4gZ2V0Q0dJbWFnZVJlZigpOwotfQotCi1SZXRhaW5Q
dHI8Q0ZBcnJheVJlZj4gQml0bWFwSW1hZ2U6OmdldENHSW1hZ2VBcnJheSgpCi17Ci0gICAgc2l6
ZV90IGNvdW50ID0gZnJhbWVDb3VudCgpOwotICAgIGlmICghY291bnQpCi0gICAgICAgIHJldHVy
biBudWxscHRyOwotICAgIAotICAgIENGTXV0YWJsZUFycmF5UmVmIGFycmF5ID0gQ0ZBcnJheUNy
ZWF0ZU11dGFibGUoTlVMTCwgY291bnQsICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpOwotICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewotICAgICAgICBpZiAoQ0dJbWFnZVJl
ZiBjdXJyRnJhbWUgPSBmcmFtZUltYWdlQXRJbmRleChpKS5nZXQoKSkKLSAgICAgICAgICAgIENG
QXJyYXlBcHBlbmRWYWx1ZShhcnJheSwgY3VyckZyYW1lKTsKLSAgICB9Ci0gICAgcmV0dXJuIGFk
b3B0Q0YoYXJyYXkpOwotfQotCi12b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4
dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwg
SW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uIGRlc2NyaXB0aW9uKQotewotI2lmIFBMQVRGT1JN
KElPUykKLSAgICBzdGFydEFuaW1hdGlvbihEb05vdENhdGNoVXApOwotI2Vsc2UKLSAgICBzdGFy
dEFuaW1hdGlvbigpOwotI2VuZGlmCi0KLSAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2U7
Ci0gICAgLy8gTmV2ZXIgdXNlIHN1YnNhbXBsZWQgaW1hZ2VzIGZvciBkcmF3aW5nIGludG8gUERG
IGNvbnRleHRzLgotICAgIGlmICh3a0NHQ29udGV4dElzUERGQ29udGV4dChjdHh0LnBsYXRmb3Jt
Q29udGV4dCgpKSkKLSAgICAgICAgaW1hZ2UgPSBjb3B5VW5zY2FsZWRGcmFtZUltYWdlQXRJbmRl
eChtX2N1cnJlbnRGcmFtZSk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIENHUmVjdCB0cmFuc2Zvcm1l
ZERlc3RpbmF0aW9uUmVjdCA9IENHUmVjdEFwcGx5QWZmaW5lVHJhbnNmb3JtKGRlc3RSZWN0LCBD
R0NvbnRleHRHZXRDVE0oY3R4dC5wbGF0Zm9ybUNvbnRleHQoKSkpOwotICAgICAgICBmbG9hdCBz
dWJzYW1wbGluZ1NjYWxlID0gc3RkOjptaW48ZmxvYXQ+KDEsIHN0ZDo6bWF4KHRyYW5zZm9ybWVk
RGVzdGluYXRpb25SZWN0LnNpemUud2lkdGggLyBzcmNSZWN0LndpZHRoKCksIHRyYW5zZm9ybWVk
RGVzdGluYXRpb25SZWN0LnNpemUuaGVpZ2h0IC8gc3JjUmVjdC5oZWlnaHQoKSkpOwotCi0gICAg
ICAgIGltYWdlID0gZnJhbWVJbWFnZUF0SW5kZXgobV9jdXJyZW50RnJhbWUsIHN1YnNhbXBsaW5n
U2NhbGUpOwotICAgIH0KLQotICAgIGlmICghaW1hZ2UpIC8vIElmIGl0J3MgdG9vIGVhcmx5IHdl
IHdvbid0IGhhdmUgYW4gaW1hZ2UgeWV0LgotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgQ29s
b3IgY29sb3IgPSBzaW5nbGVQaXhlbFNvbGlkQ29sb3IoKTsKLSAgICBpZiAoY29sb3IuaXNWYWxp
ZCgpKSB7Ci0gICAgICAgIGZpbGxXaXRoU29saWRDb2xvcihjdHh0LCBkZXN0UmVjdCwgY29sb3Is
IGNvbXBvc2l0ZU9wKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIFN1YnNhbXBs
aW5nIG1heSBoYXZlIGdpdmVuIHVzIGFuIGltYWdlIHRoYXQgaXMgc21hbGxlciB0aGFuIHNpemUo
KS4KLSAgICBJbnRTaXplIGltYWdlU2l6ZShDR0ltYWdlR2V0V2lkdGgoaW1hZ2UuZ2V0KCkpLCBD
R0ltYWdlR2V0SGVpZ2h0KGltYWdlLmdldCgpKSk7Ci0gICAgCi0gICAgLy8gc3JjUmVjdCBpcyBp
biB0aGUgY29vcmRpbmF0ZXMgb2YgdGhlIHVuc3Vic2FtcGxlZCBpbWFnZSwgc28gd2UgaGF2ZSB0
byBtYXAgaXQgdG8gdGhlIHN1YnNhbXBsZWQgaW1hZ2UuCi0gICAgRmxvYXRSZWN0IHNjYWxlZFNy
Y1JlY3QgPSBzcmNSZWN0OwotICAgIGlmIChpbWFnZVNpemUgIT0gbV9zaXplKSB7Ci0gICAgICAg
IEZsb2F0UmVjdCBvcmlnaW5hbEltYWdlQm91bmRzKEZsb2F0UG9pbnQoKSwgbV9zaXplKTsKLSAg
ICAgICAgRmxvYXRSZWN0IHN1YnNhbXBsZWRJbWFnZUJvdW5kcyhGbG9hdFBvaW50KCksIGltYWdl
U2l6ZSk7Ci0gICAgICAgIHNjYWxlZFNyY1JlY3QgPSBtYXBSZWN0KHNyY1JlY3QsIG9yaWdpbmFs
SW1hZ2VCb3VuZHMsIHN1YnNhbXBsZWRJbWFnZUJvdW5kcyk7Ci0gICAgfQotICAgIAotICAgIElt
YWdlT3JpZW50YXRpb24gb3JpZW50YXRpb247Ci0gICAgaWYgKGRlc2NyaXB0aW9uLnJlc3BlY3RJ
bWFnZU9yaWVudGF0aW9uKCkgPT0gUmVzcGVjdEltYWdlT3JpZW50YXRpb24pCi0gICAgICAgIG9y
aWVudGF0aW9uID0gZnJhbWVPcmllbnRhdGlvbkF0SW5kZXgobV9jdXJyZW50RnJhbWUpOwotCi0g
ICAgY3R4dC5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNjYWxl
ZFNyY1JlY3QsIGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUsIG9yaWVudGF0aW9uKTsKLQotICAgIGlm
IChpbWFnZU9ic2VydmVyKCkpCi0gICAgICAgIGltYWdlT2JzZXJ2ZXIoKS0+ZGlkRHJhdyh0aGlz
KTsKLX0KLQotUmV0YWluUHRyPENHSW1hZ2VSZWY+IEJpdG1hcEltYWdlOjpjb3B5VW5zY2FsZWRG
cmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgpCi17Ci0gICAgaWYgKGluZGV4ID49IGZyYW1l
Q291bnQoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBpZiAoaW5kZXggPj0gbV9m
cmFtZXMuc2l6ZSgpIHx8ICFtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZSkKLSAgICAgICAgY2FjaGVG
cmFtZShpbmRleCwgMCk7Ci0KLSAgICBpZiAoIW1fZnJhbWVzW2luZGV4XS5tX3N1YnNhbXBsaW5n
TGV2ZWwpCi0gICAgICAgIHJldHVybiBtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZTsKLQotICAgIHJl
dHVybiBtX3NvdXJjZS5jcmVhdGVGcmFtZUltYWdlQXRJbmRleChpbmRleCk7Ci19Ci0KLX0KLQot
I2VuZGlmIC8vIFVTRShDRykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9QYXR0ZXJuQ0cuY3BwCmluZGV4IGI0MjhkNTBkOTRiZjkyNDI4MDMyODdkMmVlYzE2YmQ2
OWM1MjhkOTIuLjNkYWExMzlhYjdlYTViNDIxNTc3ODgzNWQzNTNkOGFkYjVmMGM3NWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcApA
QCAtNzIsNyArNzIsNyBAQCBDR1BhdHRlcm5SZWYgUGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0
ZXJuKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdXNlclNwYWNlVHJhbgogICAgIC8vIElmIHdlJ3Jl
IHJlcGVhdGluZyBpbiBib3RoIGRpcmVjdGlvbnMsIHdlIGNhbiB1c2UgaW1hZ2UtYmFja2VkIHBh
dHRlcm5zCiAgICAgLy8gaW5zdGVhZCBvZiBjdXN0b20gcGF0dGVybnMsIGFuZCBhdm9pZCB0aWxp
bmctZWRnZSBwaXhlbCBjcmFja3MuCiAgICAgaWYgKG1fcmVwZWF0WCAmJiBtX3JlcGVhdFkpCi0g
ICAgICAgIHJldHVybiB3a0NHUGF0dGVybkNyZWF0ZVdpdGhJbWFnZUFuZFRyYW5zZm9ybSh0aWxl
SW1hZ2UoKS0+Z2V0Q0dJbWFnZVJlZigpLCBwYXR0ZXJuVHJhbnNmb3JtLCB3a1BhdHRlcm5UaWxp
bmdDb25zdGFudFNwYWNpbmcpOworICAgICAgICByZXR1cm4gd2tDR1BhdHRlcm5DcmVhdGVXaXRo
SW1hZ2VBbmRUcmFuc2Zvcm0odGlsZUltYWdlKCktPm5hdGl2ZUltYWdlKCkuZ2V0KCksIHBhdHRl
cm5UcmFuc2Zvcm0sIHdrUGF0dGVyblRpbGluZ0NvbnN0YW50U3BhY2luZyk7CiAKICAgICAvLyBJ
ZiBGTFRfTUFYIHNob3VsZCBhbHNvIGJlIHVzZWQgZm9yIHhTdGVwIG9yIHlTdGVwLCBub3RoaW5n
IGlzIHJlbmRlcmVkLiBVc2luZyBmcmFjdGlvbnMgb2YgRkxUX01BWCBhbHNvCiAgICAgLy8gcmVz
dWx0IGluIG5vdGhpbmcgYmVpbmcgcmVuZGVyZWQuCkBAIC04Myw3ICs4Myw3IEBAIENHUGF0dGVy
blJlZiBQYXR0ZXJuOjpjcmVhdGVQbGF0Zm9ybVBhdHRlcm4oY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiB1c2VyU3BhY2VUcmFuCiAgICAgQ0dGbG9hdCB5U3RlcCA9IG1fcmVwZWF0WSA/IHRpbGVSZWN0
LmhlaWdodCgpIDogKDEgPDwgMjIpOwogCiAgICAgLy8gVGhlIHBhdHRlcm4gd2lsbCByZWxlYXNl
IHRoZSBDR0ltYWdlUmVmIHdoZW4gaXQncyBkb25lIHJlbmRlcmluZyBpbiBwYXR0ZXJuUmVsZWFz
ZUNhbGxiYWNrCi0gICAgQ0dJbWFnZVJlZiBwbGF0Zm9ybUltYWdlID0gQ0dJbWFnZVJldGFpbih0
aWxlSW1hZ2UoKS0+Z2V0Q0dJbWFnZVJlZigpKTsKKyAgICBDR0ltYWdlUmVmIHBsYXRmb3JtSW1h
Z2UgPSB0aWxlSW1hZ2UoKS0+bmF0aXZlSW1hZ2UoKS5sZWFrUmVmKCk7CiAKICAgICBjb25zdCBD
R1BhdHRlcm5DYWxsYmFja3MgcGF0dGVybkNhbGxiYWNrcyA9IHsgMCwgcGF0dGVybkNhbGxiYWNr
LCBwYXR0ZXJuUmVsZWFzZUNhbGxiYWNrIH07CiAgICAgcmV0dXJuIENHUGF0dGVybkNyZWF0ZShw
bGF0Zm9ybUltYWdlLCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgeFN0ZXAsIHlTdGVwLCBr
Q0dQYXR0ZXJuVGlsaW5nQ29uc3RhbnRTcGFjaW5nLCBUUlVFLCAmcGF0dGVybkNhbGxiYWNrcyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QbGF0Zm9y
bUltYWdlQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGxhdGZv
cm1JbWFnZUNHLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZmIyZGUwZWExMmRhMjE0ZjEwNDZjMzk2MmU4ZWFi
NTNjNjQ0MTI1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvUGxhdGZvcm1JbWFnZUNHLmNwcApAQCAtMCwwICsxLDE3MSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJQbGF0Zm9ybUltYWdlLmgiCisKKyNpZiBVU0UoQ0cpCisKKyNpbmNsdWRlICJD
b2xvci5oIgorI2luY2x1ZGUgIkNvcmVHcmFwaGljc1NQSS5oIgorI2luY2x1ZGUgIkZsb2F0UmVj
dC5oIgorI2luY2x1ZGUgIkdlb21ldHJ5VXRpbGl0aWVzLmgiCisjaW5jbHVkZSAiR3JhcGhpY3ND
b250ZXh0Q0cuaCIKKyNpbmNsdWRlICJJbnRTaXplLmgiCisjaW5jbHVkZSAiU3ViaW1hZ2VDYWNo
ZVdpdGhUaW1lci5oIgorCisjaWYgUExBVEZPUk0oV0lOKQorI2luY2x1ZGUgPFdlYktpdFN5c3Rl
bUludGVyZmFjZS9XZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KKyNlbmRpZgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisgICAgCit2b2lkIFBsYXRmb3JtSW1hZ2U6OmNsZWFyU3ViSW1hZ2VzKCkKK3sK
KyNpZiBDQUNIRV9TVUJJTUFHRVMKKyAgICBpZiAoIWlzTmlsKCkpCisgICAgICAgIHN1YmltYWdl
Q2FjaGUoKS5jbGVhckltYWdlKGNnSW1hZ2VSZWYoKSk7CisjZW5kaWYKK30KKworSW50U2l6ZSBQ
bGF0Zm9ybUltYWdlOjpzaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gaXNOaWwoKSA/IEludFNp
emUoKSA6IEludFNpemUoQ0dJbWFnZUdldFdpZHRoKGNnSW1hZ2VSZWYoKSksIENHSW1hZ2VHZXRI
ZWlnaHQoY2dJbWFnZVJlZigpKSk7Cit9CisKK2Jvb2wgUGxhdGZvcm1JbWFnZTo6aGFzQWxwaGEo
KSBjb25zdAoreworICAgIC8vIEZJWE1FOiBBbnN3ZXIgY29ycmVjdGx5IHRoZSBxdWVzdGlvbjog
ZG9lcyB0aGUgQ0dJbWFnZVJlZiBoYXZlIGFscGhhIGNoYW5ubmVsPworICAgIHJldHVybiB0cnVl
OworfQorCitDb2xvciBQbGF0Zm9ybUltYWdlOjpzaW5nbGVQaXhlbFNvbGlkQ29sb3IoKSBjb25z
dAoreworICAgIGlmIChpc05pbCgpIHx8IHNpemUoKSAhPSBJbnRTaXplKDEsIDEpKQorICAgICAg
ICByZXR1cm4gQ29sb3IoKTsKKyAgICAKKyAgICB1bnNpZ25lZCBjaGFyIHBpeGVsWzRdOyAvLyBS
R0JBCisgICAgYXV0byBiaXRtYXBDb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVh
dGUocGl4ZWwsIDEsIDEsIDgsIHNpemVvZihwaXhlbCksIHNSR0JDb2xvclNwYWNlUmVmKCksCisg
ICAgICAgIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkTGFzdCB8IGtDR0JpdG1hcEJ5dGVPcmRl
cjMyQmlnKSk7CisgICAgCisgICAgaWYgKCFiaXRtYXBDb250ZXh0KQorICAgICAgICByZXR1cm4g
Q29sb3IoKTsKKyAgICAKKyAgICBDR0NvbnRleHRTZXRCbGVuZE1vZGUoYml0bWFwQ29udGV4dC5n
ZXQoKSwga0NHQmxlbmRNb2RlQ29weSk7CisgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGJpdG1hcENv
bnRleHQuZ2V0KCksIENHUmVjdE1ha2UoMCwgMCwgMSwgMSksIGNnSW1hZ2VSZWYoKSk7CisgICAg
CisgICAgaWYgKCFwaXhlbFszXSkKKyAgICAgICAgcmV0dXJuIENvbG9yKDAsIDAsIDAsIDApOwor
ICAgIAorICAgIHJldHVybiBDb2xvcihwaXhlbFswXSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhlbFsx
XSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhlbFsyXSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhlbFszXSk7
Cit9CisgICAgCitib29sIFBsYXRmb3JtSW1hZ2U6OmlzQWxtb3N0U29saWRDb2xvcigpIGNvbnN0
Cit7CisgICAgQ0dJbWFnZVJlZiBpbWFnZSA9IGNnSW1hZ2VSZWYoKTsKKyAgICBBU1NFUlQoQ0dJ
bWFnZUdldEJpdHNQZXJDb21wb25lbnQoaW1hZ2UpID09IDgpOworICAgIAorICAgIENHQml0bWFw
SW5mbyBpbWFnZUluZm8gPSBDR0ltYWdlR2V0Qml0bWFwSW5mbyhpbWFnZSk7CisgICAgaWYgKCEo
aW1hZ2VJbmZvICYga0NHQml0bWFwQnl0ZU9yZGVyMzJMaXR0bGUpIHx8IChpbWFnZUluZm8gJiBr
Q0dCaXRtYXBBbHBoYUluZm9NYXNrKSAhPSBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0
KSB7CisgICAgICAgIC8vIEZJWE1FOiBDb25zaWRlciBiZWluZyBhYmxlIHRvIGhhbmRsZSBvdGhl
ciBwaXhlbCBmb3JtYXRzLgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAKKyAgICBzaXplX3Qgd2lkdGggPSBDR0ltYWdlR2V0
V2lkdGgoaW1hZ2UpOworICAgIHNpemVfdCBoZWlnaHQgPSBDR0ltYWdlR2V0SGVpZ2h0KGltYWdl
KTsKKyAgICBzaXplX3QgYnl0ZXNQZXJSb3cgPSBDR0ltYWdlR2V0Qnl0ZXNQZXJSb3coaW1hZ2Up
OworICAgIAorICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IHByb3ZpZGVyID0gYWRvcHRDRihDR0Rh
dGFQcm92aWRlckNvcHlEYXRhKENHSW1hZ2VHZXREYXRhUHJvdmlkZXIoaW1hZ2UpKSk7CisgICAg
Y29uc3QgVUludDgqIGRhdGEgPSBDRkRhdGFHZXRCeXRlUHRyKHByb3ZpZGVyLmdldCgpKTsKKyAg
ICAKKyAgICAvLyBPdmVybGF5IGEgZ3JpZCBvZiBzYW1wbGluZyBkb3RzIG9uIHRvcCBvZiBhIGdy
YXlzY2FsZSB2ZXJzaW9uIG9mIHRoZSBpbWFnZS4KKyAgICAvLyBGb3IgdGhlIGludGVyaW9yIHBv
aW50cywgY2FsY3VsYXRlIHRoZSBkaWZmZXJlbmNlIGluIGx1bWluYW5jZSBhbW9uZyB0aGUgc2Ft
cGxlIHBvaW50CisgICAgLy8gYW5kIGl0cyBzdXJyb3VuZHMgcG9pbnRzLCBzY2FsZWQgYnkgdHJh
bnNwYXJlbmN5LgorICAgIGNvbnN0IHVuc2lnbmVkIHNhbXBsZVJvd3MgPSA3OworICAgIGNvbnN0
IHVuc2lnbmVkIHNhbXBsZUNvbHMgPSA3OworICAgIC8vIEZJWE1FOiBSZWZpbmUgdGhlIHByb3Bl
ciBudW1iZXIgb2Ygc2FtcGxlcywgYW5kIGFjY29tbW9kYXRlIGRpZmZlcmVudCBhc3BlY3QgcmF0
aW9zLgorICAgIGlmICh3aWR0aCA8IHNhbXBsZUNvbHMgfHwgaGVpZ2h0IDwgc2FtcGxlUm93cykK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIC8vIEVuc3VyZSB0aGF0IHRoZSBsYXN0
IHJvdy9jb2x1bW4gbGFuZCBvbiB0aGUgaW1hZ2UgcGVyaW1ldGVyLgorICAgIGNvbnN0IGZsb2F0
IHN0cmlkZVdpZHRoID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHdpZHRoIC0gMSkgLyAoc2FtcGxlQ29s
cyAtIDEpOworICAgIGNvbnN0IGZsb2F0IHN0cmlkZUhlaWdodCA9IHN0YXRpY19jYXN0PGZsb2F0
PihoZWlnaHQgLSAxKSAvIChzYW1wbGVSb3dzIC0gMSk7CisgICAgZmxvYXQgc2FtcGxlc1tzYW1w
bGVSb3dzXVtzYW1wbGVDb2xzXTsKKyAgICAKKyAgICAvLyBGaW5kIHRoZSBsdW1pbmFuY2Ugb2Yg
dGhlIHNhbXBsZSBwb2ludHMuCisgICAgZmxvYXQgeSA9IDA7CisgICAgY29uc3QgVUludDgqIHJv
dyA9IGRhdGE7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNhbXBsZVJvd3M7ICsraSkg
eworICAgICAgICBmbG9hdCB4ID0gMDsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8
IHNhbXBsZUNvbHM7ICsraikgeworICAgICAgICAgICAgY29uc3QgVUludDgqIHAwID0gcm93ICsg
KHN0YXRpY19jYXN0PGludD4oeCArIC41KSkgKiA0OworICAgICAgICAgICAgLy8gUiBHIEIgQQor
ICAgICAgICAgICAgc2FtcGxlc1tpXVtqXSA9ICgwLjIxMjUgKiAqcDAgKyAwLjcxNTQgKiAqKHAw
KzEpICsgMC4wNzIxICogKihwMCsyKSkgKiAqKHAwKzMpIC8gMjU1OworICAgICAgICAgICAgeCAr
PSBzdHJpZGVXaWR0aDsKKyAgICAgICAgfQorICAgICAgICB5ICs9IHN0cmlkZUhlaWdodDsKKyAg
ICAgICAgcm93ID0gZGF0YSArIChzdGF0aWNfY2FzdDxpbnQ+KHkgKyAuNSkpICogYnl0ZXNQZXJS
b3c7CisgICAgfQorICAgIAorICAgIC8vIERldGVybWluZSB0aGUgaW1hZ2Ugc2NvcmUuCisgICAg
ZmxvYXQgYWNjdW1TY29yZSA9IDA7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IHNhbXBs
ZVJvd3MgLSAxOyArK2kpIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMTsgaiA8IHNhbXBs
ZUNvbHMgLSAxOyArK2opIHsKKyAgICAgICAgICAgIGZsb2F0IGRpZmYgPSBzYW1wbGVzW2kgLSAx
XVtqXSArIHNhbXBsZXNbaSArIDFdW2pdICsgc2FtcGxlc1tpXVtqIC0gMV0gKyBzYW1wbGVzW2ld
W2ogKyAxXSAtIDQgKiBzYW1wbGVzW2ldW2pdOworICAgICAgICAgICAgYWNjdW1TY29yZSArPSBk
aWZmICogZGlmZjsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICAvLyBUaGUgc2NvcmUgZm9y
IGEgZ2l2ZW4gc2FtcGxlIGNhbiBiZSB3aXRoaW4gdGhlIHJhbmdlIG9mIDAgYW5kIDI1NV4yLgor
ICAgIHJldHVybiBhY2N1bVNjb3JlIDwgMjUwMCAqIChzYW1wbGVSb3dzIC0gMikgKiAoc2FtcGxl
Q29scyAtIDIpOworfQorCitmbG9hdCBQbGF0Zm9ybUltYWdlOjpzdWJzYW1wbGluZ1NjYWxlKEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0KQoreworICAgIC8vIE5ldmVyIHVzZSBzdWJzYW1wbGVkIGltYWdl
cyBmb3IgZHJhd2luZyBpbnRvIFBERiBjb250ZXh0cy4KKyAgICBpZiAod2tDR0NvbnRleHRJc1BE
RkNvbnRleHQoY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSkpCisgICAgICAgIHJldHVybiAxOwor
ICAgIAorICAgIENHUmVjdCB0cmFuc2Zvcm1lZERlc3RpbmF0aW9uUmVjdCA9IENHUmVjdEFwcGx5
QWZmaW5lVHJhbnNmb3JtKGRlc3RSZWN0LCBDR0NvbnRleHRHZXRDVE0oY29udGV4dC5wbGF0Zm9y
bUNvbnRleHQoKSkpOworICAgIHJldHVybiBzdGQ6Om1pbjxmbG9hdD4oMSwgc3RkOjptYXgodHJh
bnNmb3JtZWREZXN0aW5hdGlvblJlY3Quc2l6ZS53aWR0aCAvIHNyY1JlY3Qud2lkdGgoKSwgdHJh
bnNmb3JtZWREZXN0aW5hdGlvblJlY3Quc2l6ZS5oZWlnaHQgLyBzcmNSZWN0LmhlaWdodCgpKSk7
Cit9CisKK3ZvaWQgUGxhdGZvcm1JbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgSW50U2l6ZSYgc3JjU2l6ZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBtb2Rl
LCBjb25zdCBJbWFnZU9yaWVudGF0aW9uJiBvcmllbnRhdGlvbikgY29uc3QKK3sKKyAgICAvLyBT
dWJzYW1wbGluZyBtYXkgaGF2ZSBnaXZlbiB1cyBhbiBpbWFnZSB0aGF0IGlzIHNtYWxsZXIgdGhh
biBzaXplKCkuCisgICAgSW50U2l6ZSBzdWJzYW1wbGVkSW1hZ2VTaXplID0gc2l6ZSgpOworICAg
IAorICAgIC8vIHNyY1JlY3QgaXMgaW4gdGhlIGNvb3JkaW5hdGVzIG9mIHRoZSB1bnN1YnNhbXBs
ZWQgaW1hZ2UsIHNvIHdlIGhhdmUgdG8gbWFwIGl0IHRvIHRoZSBzdWJzYW1wbGVkIGltYWdlLgor
ICAgIEZsb2F0UmVjdCBhZGp1c3RlZFNyY1JlY3QgPSBzcmNSZWN0OworICAgIGlmIChzdWJzYW1w
bGVkSW1hZ2VTaXplICE9IHNyY1NpemUpCisgICAgICAgIGFkanVzdGVkU3JjUmVjdCA9IG1hcFJl
Y3Qoc3JjUmVjdCwgRmxvYXRSZWN0KHsgfSwgc3JjU2l6ZSksIEZsb2F0UmVjdCh7IH0sIHN1YnNh
bXBsZWRJbWFnZVNpemUpKTsKKyAgICAKKyAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShtX2lt
YWdlLCBzdWJzYW1wbGVkSW1hZ2VTaXplLCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBvcCwg
bW9kZSwgb3JpZW50YXRpb24pOworfQorICAgIAorfQorCisjZW5kaWYgLy8gVVNFKENHKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVGV4dFRyYWNr
UmVwcmVzZW50YXRpb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1RleHRUcmFja1JlcHJlc2VudGF0aW9uQ29jb2EubW0KaW5kZXggODk3MjBkMTczNjVk
YTdlOGJhODQ2OWQ1Mjk0NTQ4ZDUxODQ3YTdmZS4uNDQ3NmZjNWY4N2MzNDk4OGY2ZDlhZDU1ZWVi
ZDhkMWI5YmIwMjJlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvVGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9UZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29h
Lm1tCkBAIC0xMjksNyArMTI5LDcgQEAgVGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYTo6flRl
eHRUcmFja1JlcHJlc2VudGF0aW9uQ29jb2EoKQogdm9pZCBUZXh0VHJhY2tSZXByZXNlbnRhdGlv
bkNvY29hOjp1cGRhdGUoKQogewogICAgIGlmIChhdXRvIHJlcHJlc2VudGF0aW9uID0gbV9jbGll
bnQuY3JlYXRlVGV4dFRyYWNrUmVwcmVzZW50YXRpb25JbWFnZSgpKQotICAgICAgICBbbV9sYXll
ci5nZXQoKSBzZXRDb250ZW50czooaWQpcmVwcmVzZW50YXRpb24tPmdldENHSW1hZ2VSZWYoKV07
CisgICAgICAgIFttX2xheWVyLmdldCgpIHNldENvbnRlbnRzOihpZClyZXByZXNlbnRhdGlvbi0+
bmF0aXZlSW1hZ2UoKS5nZXQoKV07CiB9CiAKIHZvaWQgVGV4dFRyYWNrUmVwcmVzZW50YXRpb25D
b2NvYTo6c2V0Q29udGVudFNjYWxlKGZsb2F0IHNjYWxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tCmluZGV4IDAxZWI2ZGQzMDA0M2EyMjUy
OTE3NmZkOTEyMTE3ZGM1Nzc2YzE3YmEuLmRjMWM3YzcwOTVkOTQ0YzRjNjJmMWZlMDkzNTcwMmEx
M2M3YzdhNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9JbWFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMv
SW1hZ2VNYWMubW0KQEAgLTg1LDMxICs4NSwyMiBAQCBDRkRhdGFSZWYgQml0bWFwSW1hZ2U6Omdl
dFRJRkZSZXByZXNlbnRhdGlvbigpCiAgICAgaWYgKG1fdGlmZlJlcCkKICAgICAgICAgcmV0dXJu
IG1fdGlmZlJlcC5nZXQoKTsKIAotICAgIHVuc2lnbmVkIG51bUZyYW1lcyA9IGZyYW1lQ291bnQo
KTsKKyAgICBhdXRvIG5hdGl2ZUltYWdlcyA9IHRoaXMtPmZyYW1lc05hdGl2ZUltYWdlcygpOwog
Ci0gICAgLy8gSWYgbnVtRnJhbWVzIGlzIHplcm8sIHdlIGtub3cgZm9yIGNlcnRhaW4gdGhpcyBp
bWFnZSBkb2Vzbid0IGhhdmUgdmFsaWQgZGF0YQorICAgIC8vIElmIGZyYW1lc0ltYWdlcy5zaXpl
KCkgaXMgemVybywgd2Uga25vdyBmb3IgY2VydGFpbiB0aGlzIGltYWdlIGRvZXNuJ3QgaGF2ZSB2
YWxpZCBkYXRhCiAgICAgLy8gRXZlbiB0aG91Z2ggdGhlIGNhbGwgdG8gQ0dJbWFnZURlc3RpbmF0
aW9uQ3JlYXRlV2l0aERhdGEgd2lsbCBmYWlsIGFuZCB3ZSdsbCBoYW5kbGUgaXQgZ3JhY2VmdWxs
eSwKICAgICAvLyBpbiBjZXJ0YWluIGNpcmN1bXN0YW5jZXMgdGhhdCBjYWxsIHdpbGwgc3BhbSB0
aGUgY29uc29sZSB3aXRoIGFuIGVycm9yIG1lc3NhZ2UKLSAgICBpZiAoIW51bUZyYW1lcykKLSAg
ICAgICAgcmV0dXJuIDA7Ci0KLSAgICBWZWN0b3I8Q0dJbWFnZVJlZj4gaW1hZ2VzOwotICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1GcmFtZXM7ICsraSApIHsKLSAgICAgICAgQ0dJbWFn
ZVJlZiBjZ0ltYWdlID0gZnJhbWVJbWFnZUF0SW5kZXgoaSkuZ2V0KCk7Ci0gICAgICAgIGlmIChj
Z0ltYWdlKQotICAgICAgICAgICAgaW1hZ2VzLmFwcGVuZChjZ0ltYWdlKTsKLSAgICB9Ci0KLSAg
ICB1bnNpZ25lZCBudW1WYWxpZEZyYW1lcyA9IGltYWdlcy5zaXplKCk7CisgICAgaWYgKCFuYXRp
dmVJbWFnZXMuc2l6ZSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIFJldGFpblB0
cjxDRk11dGFibGVEYXRhUmVmPiBkYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGVNdXRhYmxlKDAs
IDApKTsKLSAgICBSZXRhaW5QdHI8Q0dJbWFnZURlc3RpbmF0aW9uUmVmPiBkZXN0aW5hdGlvbiA9
IGFkb3B0Q0YoQ0dJbWFnZURlc3RpbmF0aW9uQ3JlYXRlV2l0aERhdGEoZGF0YS5nZXQoKSwga1VU
VHlwZVRJRkYsIG51bVZhbGlkRnJhbWVzLCAwKSk7CisgICAgUmV0YWluUHRyPENHSW1hZ2VEZXN0
aW5hdGlvblJlZj4gZGVzdGluYXRpb24gPSBhZG9wdENGKENHSW1hZ2VEZXN0aW5hdGlvbkNyZWF0
ZVdpdGhEYXRhKGRhdGEuZ2V0KCksIGtVVFR5cGVUSUZGLCBuYXRpdmVJbWFnZXMuc2l6ZSgpLCAw
KSk7CiAKICAgICBpZiAoIWRlc3RpbmF0aW9uKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtVmFsaWRG
cmFtZXM7ICsraSkKLSAgICAgICAgQ0dJbWFnZURlc3RpbmF0aW9uQWRkSW1hZ2UoZGVzdGluYXRp
b24uZ2V0KCksIGltYWdlc1tpXSwgMCk7CisgICAgZm9yIChhdXRvIG5hdGl2ZUltYWdlIDogbmF0
aXZlSW1hZ2VzKQorICAgICAgICBDR0ltYWdlRGVzdGluYXRpb25BZGRJbWFnZShkZXN0aW5hdGlv
bi5nZXQoKSwgbmF0aXZlSW1hZ2UuZ2V0KCksIDApOwogCiAgICAgQ0dJbWFnZURlc3RpbmF0aW9u
RmluYWxpemUoZGVzdGluYXRpb24uZ2V0KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcAppbmRleCAyMTc1M2Jk
MDc4YTFjNTVjMzI3MTljMTQ4NDZmMGY2Yjk5NzVmOGZkLi5hOWJmYmQ5NWU0ZWQzNjc4YTBkZGNk
Zjc3NzE3YWUyYzIzZGRhZmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5jcHAKQEAgLTEzMiw3ICsxMzIsNiBAQCBJ
bWFnZUZyYW1lOjpJbWFnZUZyYW1lKCkKICAgICAsIG1fc3RhdHVzKEZyYW1lRW1wdHkpCiAgICAg
LCBtX2R1cmF0aW9uKDApCiAgICAgLCBtX2Rpc3Bvc2FsTWV0aG9kKERpc3Bvc2VOb3RTcGVjaWZp
ZWQpCi0gICAgLCBtX3ByZW11bHRpcGx5QWxwaGEodHJ1ZSkKIHsKIH0gCiAKQEAgLTE0MiwxOCAr
MTQxLDE2IEBAIEltYWdlRnJhbWUmIEltYWdlRnJhbWU6Om9wZXJhdG9yPShjb25zdCBJbWFnZUZy
YW1lJiBvdGhlcikKICAgICAgICAgcmV0dXJuICp0aGlzOwogCiAgICAgY29weUJpdG1hcERhdGEo
b3RoZXIpOwotICAgIHNldE9yaWdpbmFsRnJhbWVSZWN0KG90aGVyLm9yaWdpbmFsRnJhbWVSZWN0
KCkpOworICAgIHNldEhhc0FscGhhKG90aGVyLm1faGFzQWxwaGEpOwogICAgIHNldFN0YXR1cyhv
dGhlci5zdGF0dXMoKSk7CiAgICAgc2V0RHVyYXRpb24ob3RoZXIuZHVyYXRpb24oKSk7CiAgICAg
c2V0RGlzcG9zYWxNZXRob2Qob3RoZXIuZGlzcG9zYWxNZXRob2QoKSk7Ci0gICAgc2V0UHJlbXVs
dGlwbHlBbHBoYShvdGhlci5wcmVtdWx0aXBseUFscGhhKCkpOwogICAgIHJldHVybiAqdGhpczsK
IH0KIAogdm9pZCBJbWFnZUZyYW1lOjpjbGVhclBpeGVsRGF0YSgpCiB7Ci0gICAgbV9iYWNraW5n
U3RvcmUuY2xlYXIoKTsKLSAgICBtX2J5dGVzID0gMDsKKyAgICBtX3BpeGVscyA9IG51bGxwdHI7
CiAgICAgbV9zdGF0dXMgPSBGcmFtZUVtcHR5OwogICAgIC8vIE5PVEU6IERvIG5vdCByZXNldCBv
dGhlciBtZW1iZXJzIGhlcmU7IGNsZWFyRnJhbWVCdWZmZXJDYWNoZSgpIGNhbGxzIHRoaXMKICAg
ICAvLyB0byBmcmVlIHRoZSBiaXRtYXAgZGF0YSwgYnV0IG90aGVyIGZ1bmN0aW9ucyBsaWtlIGlu
aXRGcmFtZUJ1ZmZlcigpIGFuZApAQCAtMTYzLDI0ICsxNjAsMTYgQEAgdm9pZCBJbWFnZUZyYW1l
OjpjbGVhclBpeGVsRGF0YSgpCiAKIHZvaWQgSW1hZ2VGcmFtZTo6emVyb0ZpbGxQaXhlbERhdGEo
KQogewotICAgIG1lbXNldChtX2J5dGVzLCAwLCBtX3NpemUud2lkdGgoKSAqIG1fc2l6ZS5oZWln
aHQoKSAqIHNpemVvZihQaXhlbERhdGEpKTsKKyAgICBtX3BpeGVscy0+Y2xlYXIoKTsKICAgICBt
X2hhc0FscGhhID0gdHJ1ZTsKIH0KIAogdm9pZCBJbWFnZUZyYW1lOjp6ZXJvRmlsbEZyYW1lUmVj
dChjb25zdCBJbnRSZWN0JiByZWN0KQogewotICAgIEFTU0VSVChJbnRSZWN0KEludFBvaW50KCks
IG1fc2l6ZSkuY29udGFpbnMocmVjdCkpOwotCiAgICAgaWYgKHJlY3QuaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBzaXplX3QgcmVjdFdpZHRoSW5CeXRlcyA9IHJlY3Qud2lkdGgo
KSAqIHNpemVvZihQaXhlbERhdGEpOwotICAgIFBpeGVsRGF0YSogc3RhcnQgPSBtX2J5dGVzICsg
KHJlY3QueSgpICogd2lkdGgoKSkgKyByZWN0LngoKTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8
IHJlY3QuaGVpZ2h0KCk7ICsraSkgewotICAgICAgICBtZW1zZXQoc3RhcnQsIDAsIHJlY3RXaWR0
aEluQnl0ZXMpOwotICAgICAgICBzdGFydCArPSB3aWR0aCgpOwotICAgIH0KLQorICAgIG1fcGl4
ZWxzLT5jbGVhclJlY3QocmVjdCk7CiAgICAgc2V0SGFzQWxwaGEodHJ1ZSk7CiB9CiAKQEAgLTE4
OSwyNSArMTc4LDIzIEBAIGJvb2wgSW1hZ2VGcmFtZTo6Y29weUJpdG1hcERhdGEoY29uc3QgSW1h
Z2VGcmFtZSYgb3RoZXIpCiAgICAgaWYgKHRoaXMgPT0gJm90aGVyKQogICAgICAgICByZXR1cm4g
dHJ1ZTsKIAotICAgIG1fYmFja2luZ1N0b3JlID0gb3RoZXIubV9iYWNraW5nU3RvcmU7Ci0gICAg
bV9ieXRlcyA9IG1fYmFja2luZ1N0b3JlLmRhdGEoKTsKLSAgICBtX3NpemUgPSBvdGhlci5tX3Np
emU7Ci0gICAgc2V0SGFzQWxwaGEob3RoZXIubV9oYXNBbHBoYSk7CisgICAgaWYgKG90aGVyLm1f
cGl4ZWxzKQorICAgICAgICBtX3BpeGVscyA9IEJpdG1hcFBpeGVsczo6Y3JlYXRlKCpvdGhlci5t
X3BpeGVscy5nZXQoKSk7CisgICAgZWxzZQorICAgICAgICBtX3BpeGVscyA9IG51bGxwdHI7CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgSW1hZ2VGcmFtZTo6c2V0U2l6ZShpbnQgbmV3V2lk
dGgsIGludCBuZXdIZWlnaHQpCitib29sIEltYWdlRnJhbWU6OnNldFNpemUoY29uc3QgSW50U2l6
ZSYgc2l6ZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhKQogewotICAgIEFTU0VSVCghd2lkdGgoKSAm
JiAhaGVpZ2h0KCkpOwotICAgIHNpemVfdCBiYWNraW5nU3RvcmVTaXplID0gbmV3V2lkdGggKiBu
ZXdIZWlnaHQ7Ci0gICAgaWYgKCFtX2JhY2tpbmdTdG9yZS50cnlSZXNlcnZlQ2FwYWNpdHkoYmFj
a2luZ1N0b3JlU2l6ZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBtX2JhY2tpbmdTdG9y
ZS5yZXNpemUoYmFja2luZ1N0b3JlU2l6ZSk7Ci0gICAgbV9ieXRlcyA9IG1fYmFja2luZ1N0b3Jl
LmRhdGEoKTsKLSAgICBtX3NpemUgPSBJbnRTaXplKG5ld1dpZHRoLCBuZXdIZWlnaHQpOworICAg
IEFTU0VSVCghbV9waXhlbHMpOworICAgIG1fcGl4ZWxzID0gQml0bWFwUGl4ZWxzOjpjcmVhdGUo
c2l6ZSwgcHJlbXVsdGlwbHlBbHBoYSk7CisgICAgcmV0dXJuIG1fcGl4ZWxzICE9IG51bGxwdHI7
Cit9CiAKLSAgICB6ZXJvRmlsbFBpeGVsRGF0YSgpOwotICAgIHJldHVybiB0cnVlOwordm9pZCBJ
bWFnZUZyYW1lOjpjb3B5Um93TlRpbWVzKGludCBzdGFydFgsIGludCBlbmRYLCBpbnQgc3RhcnRZ
LCBpbnQgZW5kWSkKK3sKKyAgICBtX3BpeGVscy0+cmVwZWF0Rmlyc3RSb3coSW50UmVjdChzdGFy
dFgsIHN0YXJ0WSwgZW5kWCAtc3RhcnRYICwgZW5kWSAtIHN0YXJ0WSkpOwogfQogCiBib29sIElt
YWdlRnJhbWU6Omhhc0FscGhhKCkgY29uc3QKQEAgLTIyMCwxMSArMjA3LDYgQEAgdm9pZCBJbWFn
ZUZyYW1lOjpzZXRIYXNBbHBoYShib29sIGFscGhhKQogICAgIG1faGFzQWxwaGEgPSBhbHBoYTsK
IH0KIAotdm9pZCBJbWFnZUZyYW1lOjpzZXRDb2xvclByb2ZpbGUoY29uc3QgQ29sb3JQcm9maWxl
JiBjb2xvclByb2ZpbGUpCi17Ci0gICAgbV9jb2xvclByb2ZpbGUgPSBjb2xvclByb2ZpbGU7Ci19
Ci0KIHZvaWQgSW1hZ2VGcmFtZTo6c2V0U3RhdHVzKEZyYW1lU3RhdHVzIHN0YXR1cykKIHsKICAg
ICBtX3N0YXR1cyA9IHN0YXR1czsKQEAgLTI5MSw3ICsyNzMsNyBAQCB1bnNpZ25lZCBJbWFnZURl
Y29kZXI6OmZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QKICAgICBpZiAobV9m
cmFtZUJ1ZmZlckNhY2hlLnNpemUoKSA8PSBpbmRleCkKICAgICAgICAgcmV0dXJuIDA7CiAgICAg
Ly8gRklYTUU6IFVzZSB0aGUgZGltZW5zaW9uIG9mIHRoZSByZXF1ZXN0ZWQgZnJhbWUuCi0gICAg
cmV0dXJuIG1fc2l6ZS5hcmVhKCkgKiBzaXplb2YoSW1hZ2VGcmFtZTo6UGl4ZWxEYXRhKTsKKyAg
ICByZXR1cm4gbV9zaXplLmFyZWEoKSAqIHNpemVvZihSR0JBMzIpOwogfQogCiBmbG9hdCBJbWFn
ZURlY29kZXI6OmZyYW1lRHVyYXRpb25BdEluZGV4KHNpemVfdCBpbmRleCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmgKaW5k
ZXggMmY4ZWVlMTc4MWQxNjJkODZjNDlmZTFkYWM3MmEyZTdlNDBhNWQ2ZC4uYjcyZjJiZTc1MjIy
NDdjMmIyNWFkOWY5NDkyYTNmOTYwZjQ1NzQxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmgKQEAgLTI4LDggKzI4LDEw
IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiSW50UmVjdC5oIgorI2luY2x1ZGUgIkJp
dG1hcFBpeGVscy5oIgogI2luY2x1ZGUgIkltYWdlU291cmNlLmgiCisjaW5jbHVkZSAiSW50UmVj
dC5oIgorI2luY2x1ZGUgIkludFNpemUuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVNjcmVlbi5oIgog
I2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CkBA
IC01Nyw3ICs1OSw2IEBAIHVzaW5nIENvbG9yUHJvZmlsZSA9IFZlY3RvcjxjaGFyPjsKICAgICAg
ICAgICAgIERpc3Bvc2VPdmVyd3JpdGVQcmV2aW91cyAgLy8gQ2xlYXIgZnJhbWUgdG8gcHJldmlv
dXMgZnJhbWVidWZmZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
Y29udGVudHMKICAgICAgICAgfTsKLSAgICAgICAgdHlwZWRlZiB1bnNpZ25lZCBQaXhlbERhdGE7
CiAKICAgICAgICAgSW1hZ2VGcmFtZSgpOwogCkBAIC04MCwxNTEgKzgxLDYxIEBAIHVzaW5nIENv
bG9yUHJvZmlsZSA9IFZlY3RvcjxjaGFyPjsKICAgICAgICAgLy8gQ29waWVzIHRoZSBwaXhlbCBk
YXRhIGF0IFsoc3RhcnRYLCBzdGFydFkpLCAoZW5kWCwgc3RhcnRZKSkgdG8gdGhlCiAgICAgICAg
IC8vIHNhbWUgWC1jb29yZGluYXRlcyBvbiBlYWNoIHN1YnNlcXVlbnQgcm93IHVwIHRvIGJ1dCBu
b3QgaW5jbHVkaW5nCiAgICAgICAgIC8vIGVuZFkuCi0gICAgICAgIHZvaWQgY29weVJvd05UaW1l
cyhpbnQgc3RhcnRYLCBpbnQgZW5kWCwgaW50IHN0YXJ0WSwgaW50IGVuZFkpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIEFTU0VSVChzdGFydFggPCB3aWR0aCgpKTsKLSAgICAgICAgICAgIEFTU0VS
VChlbmRYIDw9IHdpZHRoKCkpOwotICAgICAgICAgICAgQVNTRVJUKHN0YXJ0WSA8IGhlaWdodCgp
KTsKLSAgICAgICAgICAgIEFTU0VSVChlbmRZIDw9IGhlaWdodCgpKTsKLSAgICAgICAgICAgIGNv
bnN0IGludCByb3dCeXRlcyA9IChlbmRYIC0gc3RhcnRYKSAqIHNpemVvZihQaXhlbERhdGEpOwot
ICAgICAgICAgICAgY29uc3QgUGl4ZWxEYXRhKiBjb25zdCBzdGFydEFkZHIgPSBnZXRBZGRyKHN0
YXJ0WCwgc3RhcnRZKTsKLSAgICAgICAgICAgIGZvciAoaW50IGRlc3RZID0gc3RhcnRZICsgMTsg
ZGVzdFkgPCBlbmRZOyArK2Rlc3RZKQotICAgICAgICAgICAgICAgIG1lbWNweShnZXRBZGRyKHN0
YXJ0WCwgZGVzdFkpLCBzdGFydEFkZHIsIHJvd0J5dGVzKTsKLSAgICAgICAgfQorICAgICAgICB2
b2lkIGNvcHlSb3dOVGltZXMoaW50IHN0YXJ0WCwgaW50IGVuZFgsIGludCBzdGFydFksIGludCBl
bmRZKTsKIAogICAgICAgICAvLyBBbGxvY2F0ZXMgc3BhY2UgZm9yIHRoZSBwaXhlbCBkYXRhLiAg
TXVzdCBiZSBjYWxsZWQgYmVmb3JlIGFueSBwaXhlbHMKICAgICAgICAgLy8gYXJlIHdyaXR0ZW4u
ICBNdXN0IG9ubHkgYmUgY2FsbGVkIG9uY2UuICBSZXR1cm5zIHdoZXRoZXIgYWxsb2NhdGlvbgog
ICAgICAgICAvLyBzdWNjZWVkZWQuCi0gICAgICAgIGJvb2wgc2V0U2l6ZShpbnQgbmV3V2lkdGgs
IGludCBuZXdIZWlnaHQpOworICAgICAgICBib29sIHNldFNpemUoY29uc3QgSW50U2l6ZSYsIGJv
b2wgcHJlbXVsdGlwbHlBbHBoYSk7CisgICAgICAgIAorICAgICAgICBJbnRTaXplIHNpemUoKSBj
b25zdCB7IHJldHVybiBtX3BpeGVscy0+c2l6ZSgpOyB9CiAKICAgICAgICAgLy8gUmV0dXJucyBh
IGNhbGxlci1vd25lZCBwb2ludGVyIHRvIHRoZSB1bmRlcmx5aW5nIG5hdGl2ZSBpbWFnZSBkYXRh
LgogICAgICAgICAvLyAoQWN0dWFsIHVzZTogVGhpcyBwb2ludGVyIHdpbGwgYmUgb3duZWQgYnkg
Qml0bWFwSW1hZ2UgYW5kIGZyZWVkIGluCiAgICAgICAgIC8vIEZyYW1lRGF0YTo6Y2xlYXIoKSku
Ci0gICAgICAgIE5hdGl2ZUltYWdlUHRyIGFzTmV3TmF0aXZlSW1hZ2UoKSBjb25zdDsKKyAgICAg
ICAgTmF0aXZlSW1hZ2VQdHIgYXNOZXdOYXRpdmVJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGl4
ZWxzLT5pbWFnZSgpOyB9CisKKyAgICAgICAgaW5saW5lIEJpdG1hcFBpeGVscyogcGl4ZWxzKCkg
Y29uc3QgeyByZXR1cm4gbV9waXhlbHMgPyBtX3BpeGVscy5nZXQoKSA6IG51bGxwdHI7IH0KKyAg
ICAgICAgaW5saW5lIGJvb2wgaGFzUGl4ZWxzKCkgY29uc3QgeyByZXR1cm4gcGl4ZWxzKCk7IH0K
IAogICAgICAgICBib29sIGhhc0FscGhhKCkgY29uc3Q7Ci0gICAgICAgIGNvbnN0IEludFJlY3Qm
IG9yaWdpbmFsRnJhbWVSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW5hbEZyYW1lUmVjdDsg
fQogICAgICAgICBGcmFtZVN0YXR1cyBzdGF0dXMoKSBjb25zdCB7IHJldHVybiBtX3N0YXR1czsg
fQogICAgICAgICB1bnNpZ25lZCBkdXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZHVyYXRpb247
IH0KICAgICAgICAgRnJhbWVEaXNwb3NhbE1ldGhvZCBkaXNwb3NhbE1ldGhvZCgpIGNvbnN0IHsg
cmV0dXJuIG1fZGlzcG9zYWxNZXRob2Q7IH0KLSAgICAgICAgYm9vbCBwcmVtdWx0aXBseUFscGhh
KCkgY29uc3QgeyByZXR1cm4gbV9wcmVtdWx0aXBseUFscGhhOyB9CiAKICAgICAgICAgdm9pZCBz
ZXRIYXNBbHBoYShib29sIGFscGhhKTsKLSAgICAgICAgdm9pZCBzZXRDb2xvclByb2ZpbGUoY29u
c3QgQ29sb3JQcm9maWxlJik7Ci0gICAgICAgIHZvaWQgc2V0T3JpZ2luYWxGcmFtZVJlY3QoY29u
c3QgSW50UmVjdCYgcikgeyBtX29yaWdpbmFsRnJhbWVSZWN0ID0gcjsgfQogICAgICAgICB2b2lk
IHNldFN0YXR1cyhGcmFtZVN0YXR1cyBzdGF0dXMpOwogICAgICAgICB2b2lkIHNldER1cmF0aW9u
KHVuc2lnbmVkIGR1cmF0aW9uKSB7IG1fZHVyYXRpb24gPSBkdXJhdGlvbjsgfQogICAgICAgICB2
b2lkIHNldERpc3Bvc2FsTWV0aG9kKEZyYW1lRGlzcG9zYWxNZXRob2QgbWV0aG9kKSB7IG1fZGlz
cG9zYWxNZXRob2QgPSBtZXRob2Q7IH0KLSAgICAgICAgdm9pZCBzZXRQcmVtdWx0aXBseUFscGhh
KGJvb2wgcHJlbXVsdGlwbHlBbHBoYSkgeyBtX3ByZW11bHRpcGx5QWxwaGEgPSBwcmVtdWx0aXBs
eUFscGhhOyB9CiAKICAgICAgICAgaW5saW5lIHZvaWQgc2V0UkdCQShpbnQgeCwgaW50IHksIHVu
c2lnbmVkIHIsIHVuc2lnbmVkIGcsIHVuc2lnbmVkIGIsIHVuc2lnbmVkIGEpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIHNldFJHQkEoZ2V0QWRkcih4LCB5KSwgciwgZywgYiwgYSk7CisgICAgICAg
ICAgICBtX3BpeGVscy0+c2V0UkdCQSh4LCB5LCByLCBnLCBiLCBhKTsKICAgICAgICAgfQogCi0g
ICAgICAgIGlubGluZSBQaXhlbERhdGEqIGdldEFkZHIoaW50IHgsIGludCB5KQorICAgICAgICBp
bmxpbmUgUkdCQTMyKiBnZXRBZGRyKGludCB4LCBpbnQgeSkKICAgICAgICAgewotICAgICAgICAg
ICAgcmV0dXJuIG1fYnl0ZXMgKyAoeSAqIHdpZHRoKCkpICsgeDsKKyAgICAgICAgICAgIHJldHVy
biBtX3BpeGVscy0+YXQoeCwgeSk7CiAgICAgICAgIH0KIAotICAgICAgICBpbmxpbmUgYm9vbCBo
YXNQaXhlbERhdGEoKSBjb25zdAorICAgICAgICBpbmxpbmUgdm9pZCBzZXRSR0JBKFJHQkEzMiog
ZGVzdCwgdW5zaWduZWQgciwgdW5zaWduZWQgZywgdW5zaWduZWQgYiwgdW5zaWduZWQgYSkKICAg
ICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG1fYnl0ZXM7Ci0gICAgICAgIH0KLQotICAgICAg
ICAvLyBVc2UgZml4IHBvaW50IG11bHRpcGxpZXIgaW5zdGVhZCBvZiBpbnRlZ2VyIGRpdmlzaW9u
IG9yIGZsb2F0aW5nIHBvaW50IG1hdGguCi0gICAgICAgIC8vIFRoaXMgbXVsdGlwbGVyIHByb2R1
Y2VzIGV4YWN0bHkgdGhlIHNhbWUgcmVzdWx0IGZvciBhbGwgdmFsdWVzIGluIHJhbmdlIDAgLSAy
NTUuCi0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBmaXhQb2ludFNoaWZ0ID0gMjQ7Ci0g
ICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBmaXhQb2ludE11bHQgPSBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oMS4wIC8gMjU1LjAgKiAoMSA8PCBmaXhQb2ludFNoaWZ0KSkgKyAxOwotICAgICAg
ICAvLyBNdWx0aXBsaWVzIHVuc2lnbmVkIHZhbHVlIGJ5IGZpeHBvaW50IHZhbHVlIGFuZCBjb252
ZXJ0cyBiYWNrIHRvIHVuc2lnbmVkLgotICAgICAgICBzdGF0aWMgdW5zaWduZWQgZml4UG9pbnRV
bnNpZ25lZE11bHRpcGx5KHVuc2lnbmVkIGZpeGVkLCB1bnNpZ25lZCB2KQotICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4gIChmaXhlZCAqIHYpID4+IGZpeFBvaW50U2hpZnQ7Ci0gICAgICAg
IH0KLQotICAgICAgICBpbmxpbmUgdm9pZCBzZXRSR0JBKFBpeGVsRGF0YSogZGVzdCwgdW5zaWdu
ZWQgciwgdW5zaWduZWQgZywgdW5zaWduZWQgYiwgdW5zaWduZWQgYSkKLSAgICAgICAgewotICAg
ICAgICAgICAgaWYgKG1fcHJlbXVsdGlwbHlBbHBoYSAmJiBhIDwgMjU1KSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKCFhKSB7Ci0gICAgICAgICAgICAgICAgICAgICpkZXN0ID0gMDsKLSAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGFscGhhTXVsdCA9IGEgKiBmaXhQb2ludE11bHQ7Ci0gICAgICAgICAgICAgICAg
ciA9IGZpeFBvaW50VW5zaWduZWRNdWx0aXBseShyLCBhbHBoYU11bHQpOwotICAgICAgICAgICAg
ICAgIGcgPSBmaXhQb2ludFVuc2lnbmVkTXVsdGlwbHkoZywgYWxwaGFNdWx0KTsKLSAgICAgICAg
ICAgICAgICBiID0gZml4UG9pbnRVbnNpZ25lZE11bHRpcGx5KGIsIGFscGhhTXVsdCk7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAqZGVzdCA9IChhIDw8IDI0IHwgciA8PCAxNiB8IGcgPDwg
OCB8IGIpOworICAgICAgICAgICAgbV9waXhlbHMtPnNldFJHQkEoZGVzdCwgciwgZywgYiwgYSk7
CiAgICAgICAgIH0KIAogI2lmIEVOQUJMRShBUE5HKQotICAgICAgICBzdGF0aWMgaW5saW5lIHVu
c2lnbmVkIGRpdmlkZTI1NSh1bnNpZ25lZCBhKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1
cm4gKGEgKyAoYSA+PiA4KSArIDEpID4+IDg7Ci0gICAgICAgIH0KLQotICAgICAgICBpbmxpbmUg
dm9pZCBvdmVyUkdCQShQaXhlbERhdGEqIGRlc3QsIHVuc2lnbmVkIHIsIHVuc2lnbmVkIGcsIHVu
c2lnbmVkIGIsIHVuc2lnbmVkIGEpCisgICAgICAgIGlubGluZSB2b2lkIG92ZXJSR0JBKFJHQkEz
MiogZGVzdCwgdW5zaWduZWQgciwgdW5zaWduZWQgZywgdW5zaWduZWQgYiwgdW5zaWduZWQgYSkK
ICAgICAgICAgewotICAgICAgICAgICAgaWYgKCFhKQotICAgICAgICAgICAgICAgIHJldHVybjsK
LQotICAgICAgICAgICAgaWYgKGEgPCAyNTUpIHsKLSAgICAgICAgICAgICAgICB1bnNpZ25lZCBh
RGVzdCA9ICgoKmRlc3QpID4+IDI0KSAmIDI1NTsKLSAgICAgICAgICAgICAgICBpZiAoYURlc3Qp
IHsKLSAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgckRlc3QgPSAoKCpkZXN0KSA+PiAxNikg
JiAyNTU7Ci0gICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGdEZXN0ID0gKCgqZGVzdCkgPj4g
OCkgJiAyNTU7Ci0gICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGJEZXN0ID0gKCpkZXN0KSAm
IDI1NTsKLSAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgYUF1eCA9IDI1NSAtIGE7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmICghbV9wcmVtdWx0aXBseUFscGhhKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICByRGVzdCA9IGRpdmlkZTI1NShyRGVzdCAqIGFEZXN0KTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGdEZXN0ID0gZGl2aWRlMjU1KGdEZXN0ICogYURlc3QpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgYkRlc3QgPSBkaXZpZGUyNTUoYkRlc3QgKiBhRGVzdCk7Ci0gICAgICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgciA9IGRpdmlkZTI1NShyICogYSAr
IHJEZXN0ICogYUF1eCk7Ci0gICAgICAgICAgICAgICAgICAgIGcgPSBkaXZpZGUyNTUoZyAqIGEg
KyBnRGVzdCAqIGFBdXgpOwotICAgICAgICAgICAgICAgICAgICBiID0gZGl2aWRlMjU1KGIgKiBh
ICsgYkRlc3QgKiBhQXV4KTsKLSAgICAgICAgICAgICAgICAgICAgYSArPSBkaXZpZGUyNTUoYURl
c3QgKiBhQXV4KTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFtX3ByZW11bHRpcGx5QWxwaGEp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHIgPSAociAqIDI1NSArIGEgLSAxKSAvIGE7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBnID0gKGcgKiAyNTUgKyBhIC0gMSkgLyBhOwotICAgICAg
ICAgICAgICAgICAgICAgICAgYiA9IChiICogMjU1ICsgYSAtIDEpIC8gYTsKLSAgICAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobV9wcmVtdWx0aXBseUFscGhh
KSB7Ci0gICAgICAgICAgICAgICAgICAgIHIgPSBkaXZpZGUyNTUociAqIGEpOwotICAgICAgICAg
ICAgICAgICAgICBnID0gZGl2aWRlMjU1KGcgKiBhKTsKLSAgICAgICAgICAgICAgICAgICAgYiA9
IGRpdmlkZTI1NShiICogYSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgKmRlc3QgPSAoYSA8PCAyNCB8IHIgPDwgMTYgfCBnIDw8IDggfCBiKTsKKyAgICAg
ICAgICAgIG1fcGl4ZWxzLT5vdmVyUkdCQShkZXN0LCByLCBnLCBiLCBhKTsKICAgICAgICAgfQog
I2VuZGlmCiAKICAgICBwcml2YXRlOgotICAgICAgICBpbnQgd2lkdGgoKSBjb25zdAotICAgICAg
ICB7Ci0gICAgICAgICAgICByZXR1cm4gbV9zaXplLndpZHRoKCk7Ci0gICAgICAgIH0KLQotICAg
ICAgICBpbnQgaGVpZ2h0KCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG1f
c2l6ZS5oZWlnaHQoKTsKLSAgICAgICAgfQotCi0gICAgICAgIFZlY3RvcjxQaXhlbERhdGE+IG1f
YmFja2luZ1N0b3JlOwotICAgICAgICBQaXhlbERhdGEqIG1fYnl0ZXM7IC8vIFRoZSBtZW1vcnkg
aXMgYmFja2VkIGJ5IG1fYmFja2luZ1N0b3JlLgotICAgICAgICBJbnRTaXplIG1fc2l6ZTsKLSAg
ICAgICAgLy8gRklYTUU6IERvIHdlIG5lZWQgbV9jb2xvclByb2ZpbGUgYW55bW9yZT8KLSAgICAg
ICAgQ29sb3JQcm9maWxlIG1fY29sb3JQcm9maWxlOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8
Qml0bWFwUGl4ZWxzPiBtX3BpeGVsczsKICAgICAgICAgYm9vbCBtX2hhc0FscGhhOwotICAgICAg
ICBJbnRSZWN0IG1fb3JpZ2luYWxGcmFtZVJlY3Q7IC8vIFRoaXMgd2lsbCBhbHdheXMganVzdCBi
ZSB0aGUgZW50aXJlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYnVm
ZmVyIGV4Y2VwdCBmb3IgR0lGIGZyYW1lcyB3aG9zZQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIG9yaWdpbmFsIHJlY3Qgd2FzIHNtYWxsZXIgdGhhbiB0aGUKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdmVyYWxsIGltYWdlIHNpemUuCiAg
ICAgICAgIEZyYW1lU3RhdHVzIG1fc3RhdHVzOwogICAgICAgICB1bnNpZ25lZCBtX2R1cmF0aW9u
OwogICAgICAgICBGcmFtZURpc3Bvc2FsTWV0aG9kIG1fZGlzcG9zYWxNZXRob2Q7Ci0gICAgICAg
IGJvb2wgbV9wcmVtdWx0aXBseUFscGhhOwogICAgIH07CiAKICAgICAvLyBJbWFnZURlY29kZXIg
aXMgYSBiYXNlIGZvciBhbGwgZm9ybWF0LXNwZWNpZmljIGRlY29kZXJzCkBAIC0yNTMsNiArMTY0
LDggQEAgdXNpbmcgQ29sb3JQcm9maWxlID0gVmVjdG9yPGNoYXI+OwogCiAgICAgICAgIHZpcnR1
YWwgU3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3QgPSAwOwogCisgICAgICAgIGJvb2wg
cHJlbXVsdGlwbHlBbHBoYSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJlbXVsdGlwbHlBbHBoYTsgfQor
CiAgICAgICAgIGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzQWxs
RGF0YVJlY2VpdmVkOyB9CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHNldERhdGEoU2hhcmVkQnVm
ZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKQEAgLTI5MCwxMSArMjAzLDExIEBAIHVz
aW5nIENvbG9yUHJvZmlsZSA9IFZlY3RvcjxjaGFyPjsKIAogICAgICAgICAvLyBSZXR1cm5zIHdo
ZXRoZXIgdGhlIHNpemUgaXMgbGVnYWwgKGkuZS4gbm90IGdvaW5nIHRvIHJlc3VsdCBpbgogICAg
ICAgICAvLyBvdmVyZmxvdyBlbHNld2hlcmUpLiAgSWYgbm90LCBtYXJrcyBkZWNvZGluZyBhcyBm
YWlsZWQuCi0gICAgICAgIHZpcnR1YWwgYm9vbCBzZXRTaXplKHVuc2lnbmVkIHdpZHRoLCB1bnNp
Z25lZCBoZWlnaHQpCisgICAgICAgIHZpcnR1YWwgYm9vbCBzZXRTaXplKGNvbnN0IEludFNpemUm
IHNpemUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmIChpc092ZXJTaXplKHdpZHRoLCBoZWln
aHQpKQorICAgICAgICAgICAgaWYgKGlzT3ZlclNpemUoc2l6ZSkpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIHNldEZhaWxlZCgpOwotICAgICAgICAgICAgbV9zaXplID0gSW50U2l6ZSh3aWR0aCwg
aGVpZ2h0KTsKKyAgICAgICAgICAgIG1fc2l6ZSA9IHNpemU7CiAgICAgICAgICAgICBtX3NpemVB
dmFpbGFibGUgPSB0cnVlOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KQEAg
LTM4MSw4ICsyOTQsNiBAQCB1c2luZyBDb2xvclByb2ZpbGUgPSBWZWN0b3I8Y2hhcj47CiAKICAg
ICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOyAvLyBUaGUgZW5jb2RlZCBkYXRhLgog
ICAgICAgICBWZWN0b3I8SW1hZ2VGcmFtZSwgMT4gbV9mcmFtZUJ1ZmZlckNhY2hlOwotICAgICAg
ICAvLyBGSVhNRTogRG8gd2UgbmVlZCBtX2NvbG9yUHJvZmlsZSBhbnkgbW9yZSwgZm9yIGFueSBw
b3J0PwotICAgICAgICBDb2xvclByb2ZpbGUgbV9jb2xvclByb2ZpbGU7CiAgICAgICAgIGJvb2wg
bV9zY2FsZWQgeyBmYWxzZSB9OwogICAgICAgICBWZWN0b3I8aW50PiBtX3NjYWxlZENvbHVtbnM7
CiAgICAgICAgIFZlY3RvcjxpbnQ+IG1fc2NhbGVkUm93czsKQEAgLTM5MywxMSArMzA0LDEwIEBA
IHVzaW5nIENvbG9yUHJvZmlsZSA9IFZlY3RvcjxjaGFyPjsKICAgICBwcml2YXRlOgogICAgICAg
ICAvLyBTb21lIGNvZGUgcGF0aHMgY29tcHV0ZSB0aGUgc2l6ZSBvZiB0aGUgaW1hZ2UgYXMgIndp
ZHRoICogaGVpZ2h0ICogNCIKICAgICAgICAgLy8gYW5kIHJldHVybiBpdCBhcyBhIChzaWduZWQp
IGludC4gIEF2b2lkIG92ZXJmbG93LgotICAgICAgICBzdGF0aWMgYm9vbCBpc092ZXJTaXplKHVu
c2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQpCisgICAgICAgIHN0YXRpYyBib29sIGlzT3Zl
clNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKICAgICAgICAgewotICAgICAgICAgICAgdW5zaWdu
ZWQgbG9uZyBsb25nIHRvdGFsX3NpemUgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+
KHdpZHRoKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBzdGF0
aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KGhlaWdodCk7Ci0gICAgICAgICAgICByZXR1cm4g
dG90YWxfc2l6ZSA+ICgoMSA8PCAyOSkgLSAxKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcg
bG9uZyBwaXhlbHMgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KHNpemUud2lkdGgo
KSkgKiBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KHNpemUuaGVpZ2h0KCkpOworICAg
ICAgICAgICAgcmV0dXJuIHBpeGVscyA+ICgoMSA8PCAyOSkgLSAxKTsKICAgICAgICAgfQogCiAg
ICAgICAgIEludFNpemUgbV9zaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBj
YWYzNWM5N2YxN2VkZDM0YmM5ZGY4OWFiMDllODcwMGFlZTZjN2RmLi40NTdhZWYwN2FkNjM0ZTAy
MWJhM2VkZTNkNTEzYzc0YTVkOGViOWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcApA
QCAtNzAsMTAgKzcwLDggQEAgSW1hZ2VGcmFtZSogQk1QSW1hZ2VEZWNvZGVyOjpmcmFtZUJ1ZmZl
ckF0SW5kZXgoc2l6ZV90IGluZGV4KQogICAgIGlmIChpbmRleCkKICAgICAgICAgcmV0dXJuIDA7
CiAKLSAgICBpZiAobV9mcmFtZUJ1ZmZlckNhY2hlLmlzRW1wdHkoKSkgeworICAgIGlmIChtX2Zy
YW1lQnVmZmVyQ2FjaGUuaXNFbXB0eSgpKQogICAgICAgICBtX2ZyYW1lQnVmZmVyQ2FjaGUucmVz
aXplKDEpOwotICAgICAgICBtX2ZyYW1lQnVmZmVyQ2FjaGUuZmlyc3QoKS5zZXRQcmVtdWx0aXBs
eUFscGhhKG1fcHJlbXVsdGlwbHlBbHBoYSk7Ci0gICAgfQogCiAgICAgSW1hZ2VGcmFtZSogYnVm
ZmVyID0gJm1fZnJhbWVCdWZmZXJDYWNoZS5maXJzdCgpOwogICAgIGlmIChidWZmZXItPnN0YXR1
cygpICE9IEltYWdlRnJhbWU6OkZyYW1lQ29tcGxldGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VSZWFkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVhZGVyLmNw
cAppbmRleCA1YzAwNTUzNGVjZDkyMTM0YTEzYjMyOTU4OTI3NzkwZjA3YWQwZjgxLi45ODFjMTFm
ZTk2ODIwNzk2M2ZhY2I1ZGYxZWZlYTFkMGRlOWIwYTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VSZWFkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZVJlYWRl
ci5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgYm9vbCBCTVBJbWFnZVJlYWRlcjo6ZGVjb2RlQk1QKGJv
b2wgb25seVNpemUpCiAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgZnJhbWVidWZmZXIgaWYgbmVlZGVk
LgogICAgIEFTU0VSVChtX2J1ZmZlcik7ICAvLyBQYXJlbnQgc2hvdWxkIHNldCB0aGlzIGJlZm9y
ZSBhc2tpbmcgdXMgdG8gZGVjb2RlIQogICAgIGlmIChtX2J1ZmZlci0+c3RhdHVzKCkgPT0gSW1h
Z2VGcmFtZTo6RnJhbWVFbXB0eSkgewotICAgICAgICBpZiAoIW1fYnVmZmVyLT5zZXRTaXplKG1f
cGFyZW50LT5zaXplKCkud2lkdGgoKSwgbV9wYXJlbnQtPnNpemUoKS5oZWlnaHQoKSkpCisgICAg
ICAgIGlmICghbV9idWZmZXItPnNldFNpemUobV9wYXJlbnQtPnNpemUoKSwgbV9wYXJlbnQtPnBy
ZW11bHRpcGx5QWxwaGEoKSkpCiAgICAgICAgICAgICByZXR1cm4gbV9wYXJlbnQtPnNldEZhaWxl
ZCgpOyAvLyBVbmFibGUgdG8gYWxsb2NhdGUuCiAgICAgICAgIG1fYnVmZmVyLT5zZXRTdGF0dXMo
SW1hZ2VGcmFtZTo6RnJhbWVQYXJ0aWFsKTsKICAgICAgICAgLy8gc2V0U2l6ZSgpIGNhbGxzIGVy
YXNlQVJHQigpLCB3aGljaCByZXNldHMgdGhlIGFscGhhIGZsYWcsIHNvIHdlIGZvcmNlCkBAIC04
Niw5ICs4Niw2IEBAIGJvb2wgQk1QSW1hZ2VSZWFkZXI6OmRlY29kZUJNUChib29sIG9ubHlTaXpl
KQogICAgICAgICAvLyB0aGVzZSAwcyBjb3VsZCBhY3R1YWxseSBzaG93IHRocm91Z2guCiAgICAg
ICAgIG1fYnVmZmVyLT5zZXRIYXNBbHBoYShmYWxzZSk7CiAKLSAgICAgICAgLy8gRm9yIEJNUHMs
IHRoZSBmcmFtZSBhbHdheXMgZmlsbHMgdGhlIGVudGlyZSBpbWFnZS4KLSAgICAgICAgbV9idWZm
ZXItPnNldE9yaWdpbmFsRnJhbWVSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgbV9wYXJlbnQtPnNp
emUoKSkpOwotCiAgICAgICAgIGlmICghbV9pc1RvcERvd24pCiAgICAgICAgICAgICBtX2Nvb3Jk
LnNldFkobV9wYXJlbnQtPnNpemUoKS5oZWlnaHQoKSAtIDEpOwogICAgIH0KQEAgLTE3MSw3ICsx
NjgsNyBAQCBib29sIEJNUEltYWdlUmVhZGVyOjpwcm9jZXNzSW5mb0hlYWRlcigpCiAgICAgICAg
IHJldHVybiBtX3BhcmVudC0+c2V0RmFpbGVkKCk7CiAKICAgICAvLyBTZXQgb3VyIHNpemUuCi0g
ICAgaWYgKCFtX3BhcmVudC0+c2V0U2l6ZShtX2luZm9IZWFkZXIuYmlXaWR0aCwgbV9pbmZvSGVh
ZGVyLmJpSGVpZ2h0KSkKKyAgICBpZiAoIW1fcGFyZW50LT5zZXRTaXplKEludFNpemUobV9pbmZv
SGVhZGVyLmJpV2lkdGgsIG1faW5mb0hlYWRlci5iaUhlaWdodCkpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICAvLyBGb3IgcGFsZXR0ZWQgaW1hZ2VzLCBiaXRtYXBzIGNhbiBzZXQgYmlD
bHJVc2VkIHRvIDAgdG8gbWVhbiAiYWxsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9CaXRtYXBQaXhlbHNDYWlyby5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9CaXRtYXBQaXhlbHNDYWlyby5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNWFhZjhhMGEzNmIxOGNiZjcyNzdkMmMyZTI2ZWI0MTcxMjU2MDBkNQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2NhaXJvL0JpdG1hcFBpeGVsc0NhaXJvLmNwcApAQCAtMCwwICsxLDQwIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiQml0bWFwUGl4ZWxzLmgiCisKKyNpbmNsdWRlIDxjYWlyby5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK05hdGl2ZUltYWdlUHRyIEJpdG1hcFBpeGVsczo6aW1hZ2UoKSBj
b25zdAoreworICAgIHJldHVybiBhZG9wdFJlZihjYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZV9m
b3JfZGF0YSgKKyAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBjaGFyKj4oY29uc3Rf
Y2FzdDxSR0JBMzIqPihtX3BpeGVscykpLAorICAgICAgICBDQUlST19GT1JNQVRfQVJHQjMyLCBz
aXplKCkud2lkdGgoKSwgc2l6ZSgpLmhlaWdodCgpLCBzaXplKCkud2lkdGgoKSAqIHNpemVvZihS
R0JBMzIpKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdlRGVjb2RlckNhaXJv
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdl
RGVjb2RlckNhaXJvLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2I0MTI5NWY4
NTczNThmYmJmMzVjMWIwNTI1ZThkNmNjMzUyMGY1OC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9jYWlyby9JbWFnZURlY29kZXJDYWlyby5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MCAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSW1hZ2VEZWNvZGVyLmgiCi0KLSNpbmNsdWRl
IDxjYWlyby5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLU5hdGl2ZUltYWdlUHRyIEltYWdl
RnJhbWU6OmFzTmV3TmF0aXZlSW1hZ2UoKSBjb25zdAotewotICAgIHJldHVybiBhZG9wdFJlZihj
YWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZV9mb3JfZGF0YSgKLSAgICAgICAgcmVpbnRlcnByZXRf
Y2FzdDx1bnNpZ25lZCBjaGFyKj4oY29uc3RfY2FzdDxQaXhlbERhdGEqPihtX2J5dGVzKSksCi0g
ICAgICAgIENBSVJPX0ZPUk1BVF9BUkdCMzIsIHdpZHRoKCksIGhlaWdodCgpLCB3aWR0aCgpICog
c2l6ZW9mKFBpeGVsRGF0YSkpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdl
RGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYv
R0lGSW1hZ2VEZWNvZGVyLmNwcAppbmRleCA5Zjk5MmE3YmUxZDY2NzIyNjc1YzJlODU0YWQxODkx
ZTYwZjg1NzdjLi4yNWE3NDhjNTFiMTJhYjk2ZjM0MzFmNzRjN2IxYTVhMzI1MDc0ODRlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1h
Z2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcApAQCAtNjAsMTIgKzYwLDEyIEBAIGJvb2wgR0lGSW1h
Z2VEZWNvZGVyOjppc1NpemVBdmFpbGFibGUoKQogICAgIHJldHVybiBJbWFnZURlY29kZXI6Omlz
U2l6ZUF2YWlsYWJsZSgpOwogfQogCi1ib29sIEdJRkltYWdlRGVjb2Rlcjo6c2V0U2l6ZSh1bnNp
Z25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0KQorYm9vbCBHSUZJbWFnZURlY29kZXI6OnNldFNp
emUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKLSAgICBpZiAoSW1hZ2VEZWNvZGVyOjppc1NpemVB
dmFpbGFibGUoKSAmJiBzaXplKCkgPT0gSW50U2l6ZSh3aWR0aCwgaGVpZ2h0KSkKKyAgICBpZiAo
SW1hZ2VEZWNvZGVyOjppc1NpemVBdmFpbGFibGUoKSAmJiB0aGlzLT5zaXplKCkgPT1zaXplKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmICghSW1hZ2VEZWNvZGVyOjpzZXRTaXplKHdp
ZHRoLCBoZWlnaHQpKQorICAgIGlmICghSW1hZ2VEZWNvZGVyOjpzZXRTaXplKHNpemUpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBwcmVwYXJlU2NhbGVEYXRhSWZOZWNlc3NhcnkoKTsK
QEAgLTIxMywxMCArMjEzLDEwIEBAIGJvb2wgR0lGSW1hZ2VEZWNvZGVyOjpoYXZlRGVjb2RlZFJv
dyh1bnNpZ25lZCBmcmFtZUluZGV4LCBjb25zdCBWZWN0b3I8dW5zaWduZWQKIAogICAgIC8vIElu
aXRpYWxpemUgdGhlIGZyYW1lIGlmIG5lY2Vzc2FyeS4KICAgICBJbWFnZUZyYW1lJiBidWZmZXIg
PSBtX2ZyYW1lQnVmZmVyQ2FjaGVbZnJhbWVJbmRleF07Ci0gICAgaWYgKCgoYnVmZmVyLnN0YXR1
cygpID09IEltYWdlRnJhbWU6OkZyYW1lRW1wdHkpICYmICFpbml0RnJhbWVCdWZmZXIoZnJhbWVJ
bmRleCkpIHx8ICFidWZmZXIuaGFzUGl4ZWxEYXRhKCkpCisgICAgaWYgKCgoYnVmZmVyLnN0YXR1
cygpID09IEltYWdlRnJhbWU6OkZyYW1lRW1wdHkpICYmICFpbml0RnJhbWVCdWZmZXIoZnJhbWVJ
bmRleCkpIHx8ICFidWZmZXIuaGFzUGl4ZWxzKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIEltYWdlRnJhbWU6OlBpeGVsRGF0YSogY3VycmVudEFkZHJlc3MgPSBidWZmZXIuZ2V0QWRk
cih4QmVnaW4sIHlCZWdpbik7CisgICAgUkdCQTMyKiBjdXJyZW50QWRkcmVzcyA9IGJ1ZmZlci5n
ZXRBZGRyKHhCZWdpbiwgeUJlZ2luKTsKICAgICAvLyBXcml0ZSBvbmUgcm93J3Mgd29ydGggb2Yg
ZGF0YSBpbnRvIHRoZSBmcmFtZS4gIAogICAgIGZvciAoaW50IHggPSB4QmVnaW47IHggPCB4RW5k
OyArK3gpIHsKICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciBzb3VyY2VWYWx1ZSA9IHJvd0J1
ZmZlclsobV9zY2FsZWQgPyBtX3NjYWxlZENvbHVtbnNbeF0gOiB4KSAtIGZyYW1lQ29udGV4dC0+
eE9mZnNldF07CkBAIC0yNjAsNyArMjYwLDcgQEAgYm9vbCBHSUZJbWFnZURlY29kZXI6OmZyYW1l
Q29tcGxldGUodW5zaWduZWQgZnJhbWVJbmRleCwgdW5zaWduZWQgZnJhbWVEdXJhdGlvbiwKICAg
ICBpZiAoIW1fY3VycmVudEJ1ZmZlclNhd0FscGhhKSB7CiAgICAgICAgIC8vIFRoZSB3aG9sZSBm
cmFtZSB3YXMgbm9uLXRyYW5zcGFyZW50LCBzbyBpdCdzIHBvc3NpYmxlIHRoYXQgdGhlIGVudGly
ZQogICAgICAgICAvLyByZXN1bHRpbmcgYnVmZmVyIHdhcyBub24tdHJhbnNwYXJlbnQsIGFuZCB3
ZSBjYW4gc2V0SGFzQWxwaGEoZmFsc2UpLgotICAgICAgICBpZiAoYnVmZmVyLm9yaWdpbmFsRnJh
bWVSZWN0KCkuY29udGFpbnMoSW50UmVjdChJbnRQb2ludCgpLCBzY2FsZWRTaXplKCkpKSkKKyAg
ICAgICAgaWYgKGJ1ZmZlci5waXhlbHMoKS0+cmVjdCgpLmNvbnRhaW5zKEludFJlY3QoSW50UG9p
bnQoKSwgc2NhbGVkU2l6ZSgpKSkpCiAgICAgICAgICAgICBidWZmZXIuc2V0SGFzQWxwaGEoZmFs
c2UpOwogICAgICAgICBlbHNlIGlmIChmcmFtZUluZGV4KSB7CiAgICAgICAgICAgICAvLyBUcmlj
a3kgY2FzZS4gIFRoaXMgZnJhbWUgZG9lcyBub3QgaGF2ZSBhbHBoYSBvbmx5IGlmIGV2ZXJ5d2hl
cmUKQEAgLTI4Myw3ICsyODMsNyBAQCBib29sIEdJRkltYWdlRGVjb2Rlcjo6ZnJhbWVDb21wbGV0
ZSh1bnNpZ25lZCBmcmFtZUluZGV4LCB1bnNpZ25lZCBmcmFtZUR1cmF0aW9uLAogICAgICAgICAg
ICAgLy8gVGhlIG9ubHkgcmVtYWluaW5nIGNhc2UgaXMgYSBEaXNwb3NlT3ZlcndyaXRlQmdjb2xv
ciBmcmFtZS4gIElmCiAgICAgICAgICAgICAvLyBpdCBoYWQgbm8gYWxwaGEsIGFuZCBpdHMgcmVj
dCBpcyBjb250YWluZWQgaW4gdGhlIGN1cnJlbnQgZnJhbWUncwogICAgICAgICAgICAgLy8gcmVj
dCwgd2Uga25vdyB0aGUgY3VycmVudCBmcmFtZSBoYXMgbm8gYWxwaGEuCi0gICAgICAgICAgICBp
ZiAoKHByZXZCdWZmZXItPmRpc3Bvc2FsTWV0aG9kKCkgPT0gSW1hZ2VGcmFtZTo6RGlzcG9zZU92
ZXJ3cml0ZUJnY29sb3IpICYmICFwcmV2QnVmZmVyLT5oYXNBbHBoYSgpICYmIGJ1ZmZlci5vcmln
aW5hbEZyYW1lUmVjdCgpLmNvbnRhaW5zKHByZXZCdWZmZXItPm9yaWdpbmFsRnJhbWVSZWN0KCkp
KQorICAgICAgICAgICAgaWYgKChwcmV2QnVmZmVyLT5kaXNwb3NhbE1ldGhvZCgpID09IEltYWdl
RnJhbWU6OkRpc3Bvc2VPdmVyd3JpdGVCZ2NvbG9yKSAmJiAhcHJldkJ1ZmZlci0+aGFzQWxwaGEo
KSAmJiBidWZmZXIucGl4ZWxzKCktPnJlY3QoKS5jb250YWlucyhwcmV2QnVmZmVyLT5waXhlbHMo
KS0+cmVjdCgpKSkKICAgICAgICAgICAgICAgICBidWZmZXIuc2V0SGFzQWxwaGEoZmFsc2UpOwog
ICAgICAgICB9CiAgICAgfQpAQCAtMzIxLDEwICszMjEsNyBAQCB2b2lkIEdJRkltYWdlRGVjb2Rl
cjo6ZGVjb2RlKHVuc2lnbmVkIGhhbHRBdEZyYW1lLCBHSUZRdWVyeSBxdWVyeSkKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIGNvbnN0IHNpemVfdCBvbGRTaXplID0gbV9mcmFtZUJ1ZmZl
ckNhY2hlLnNpemUoKTsKICAgICBtX2ZyYW1lQnVmZmVyQ2FjaGUucmVzaXplKG1fcmVhZGVyLT5p
bWFnZXNDb3VudCgpKTsKLSAgICBmb3IgKHNpemVfdCBpID0gb2xkU2l6ZTsgaSA8IG1fcmVhZGVy
LT5pbWFnZXNDb3VudCgpOyArK2kpCi0gICAgICAgIG1fZnJhbWVCdWZmZXJDYWNoZVtpXS5zZXRQ
cmVtdWx0aXBseUFscGhhKG1fcHJlbXVsdGlwbHlBbHBoYSk7CiAKICAgICBpZiAocXVlcnkgPT0g
R0lGRnJhbWVDb3VudFF1ZXJ5KQogICAgICAgICByZXR1cm47CkBAIC0zNTMsMTUgKzM1MCwxMCBA
QCBib29sIEdJRkltYWdlRGVjb2Rlcjo6aW5pdEZyYW1lQnVmZmVyKHVuc2lnbmVkIGZyYW1lSW5k
ZXgpCiAgICAgICAgIGZyYW1lUmVjdC5zZXRIZWlnaHQoc2l6ZSgpLmhlaWdodCgpIC0gZnJhbWVD
b250ZXh0LT55T2Zmc2V0KTsKIAogICAgIEltYWdlRnJhbWUqIGNvbnN0IGJ1ZmZlciA9ICZtX2Zy
YW1lQnVmZmVyQ2FjaGVbZnJhbWVJbmRleF07Ci0gICAgaW50IGxlZnQgPSB1cHBlckJvdW5kU2Nh
bGVkWChmcmFtZVJlY3QueCgpKTsKLSAgICBpbnQgcmlnaHQgPSBsb3dlckJvdW5kU2NhbGVkWChm
cmFtZVJlY3QubWF4WCgpLCBsZWZ0KTsKLSAgICBpbnQgdG9wID0gdXBwZXJCb3VuZFNjYWxlZFko
ZnJhbWVSZWN0LnkoKSk7Ci0gICAgaW50IGJvdHRvbSA9IGxvd2VyQm91bmRTY2FsZWRZKGZyYW1l
UmVjdC5tYXhZKCksIHRvcCk7Ci0gICAgYnVmZmVyLT5zZXRPcmlnaW5hbEZyYW1lUmVjdChJbnRS
ZWN0KGxlZnQsIHRvcCwgcmlnaHQgLSBsZWZ0LCBib3R0b20gLSB0b3ApKTsKIAogICAgIGlmICgh
ZnJhbWVJbmRleCkgewogICAgICAgICAvLyBUaGlzIGlzIHRoZSBmaXJzdCBmcmFtZSwgc28gd2Un
cmUgbm90IHJlbHlpbmcgb24gYW55IHByZXZpb3VzIGRhdGEuCi0gICAgICAgIGlmICghYnVmZmVy
LT5zZXRTaXplKHNjYWxlZFNpemUoKS53aWR0aCgpLCBzY2FsZWRTaXplKCkuaGVpZ2h0KCkpKQor
ICAgICAgICBpZiAoIWJ1ZmZlci0+c2V0U2l6ZShzY2FsZWRTaXplKCksIHByZW11bHRpcGx5QWxw
aGEoKSkpCiAgICAgICAgICAgICByZXR1cm4gc2V0RmFpbGVkKCk7CiAgICAgfSBlbHNlIHsKICAg
ICAgICAgLy8gVGhlIHN0YXJ0aW5nIHN0YXRlIGZvciB0aGlzIGZyYW1lIGRlcGVuZHMgb24gdGhl
IHByZXZpb3VzIGZyYW1lJ3MKQEAgLTM4NywxMiArMzc5LDEyIEBAIGJvb2wgR0lGSW1hZ2VEZWNv
ZGVyOjppbml0RnJhbWVCdWZmZXIodW5zaWduZWQgZnJhbWVJbmRleCkKICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgIC8vIFdlIHdhbnQgdG8gY2xlYXIgdGhlIHByZXZpb3VzIGZyYW1lIHRv
IHRyYW5zcGFyZW50LCB3aXRob3V0CiAgICAgICAgICAgICAvLyBhZmZlY3RpbmcgcGl4ZWxzIGlu
IHRoZSBpbWFnZSBvdXRzaWRlIG9mIHRoZSBmcmFtZS4KLSAgICAgICAgICAgIGNvbnN0IEludFJl
Y3QmIHByZXZSZWN0ID0gcHJldkJ1ZmZlci0+b3JpZ2luYWxGcmFtZVJlY3QoKTsKKyAgICAgICAg
ICAgIGNvbnN0IEludFJlY3QmIHByZXZSZWN0ID0gcHJldkJ1ZmZlci0+cGl4ZWxzKCktPnJlY3Qo
KTsKICAgICAgICAgICAgIGNvbnN0IEludFNpemUmIGJ1ZmZlclNpemUgPSBzY2FsZWRTaXplKCk7
CiAgICAgICAgICAgICBpZiAoIWZyYW1lSW5kZXggfHwgcHJldlJlY3QuY29udGFpbnMoSW50UmVj
dChJbnRQb2ludCgpLCBzY2FsZWRTaXplKCkpKSkgewogICAgICAgICAgICAgICAgIC8vIENsZWFy
aW5nIHRoZSBmaXJzdCBmcmFtZSwgb3IgYSBmcmFtZSB0aGUgc2l6ZSBvZiB0aGUgd2hvbGUKICAg
ICAgICAgICAgICAgICAvLyBpbWFnZSwgcmVzdWx0cyBpbiBhIGNvbXBsZXRlbHkgZW1wdHkgaW1h
Z2UuCi0gICAgICAgICAgICAgICAgaWYgKCFidWZmZXItPnNldFNpemUoYnVmZmVyU2l6ZS53aWR0
aCgpLCBidWZmZXJTaXplLmhlaWdodCgpKSkKKyAgICAgICAgICAgICAgICBpZiAoIWJ1ZmZlci0+
c2V0U2l6ZShidWZmZXJTaXplLCBwcmVtdWx0aXBseUFscGhhKCkpKQogICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gc2V0RmFpbGVkKCk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgICAgIC8vIENvcHkgdGhlIHdob2xlIHByZXZpb3VzIGJ1ZmZlciwgdGhlbiBjbGVhciBqdXN0
IGl0cyBmcmFtZS4KQEAgLTQwMiw2ICszOTQsMTIgQEAgYm9vbCBHSUZJbWFnZURlY29kZXI6Omlu
aXRGcmFtZUJ1ZmZlcih1bnNpZ25lZCBmcmFtZUluZGV4KQogICAgICAgICAgICAgfQogICAgICAg
ICB9CiAgICAgfQorICAgIAorICAgIGludCBsZWZ0ID0gdXBwZXJCb3VuZFNjYWxlZFgoZnJhbWVS
ZWN0LngoKSk7CisgICAgaW50IHJpZ2h0ID0gbG93ZXJCb3VuZFNjYWxlZFgoZnJhbWVSZWN0Lm1h
eFgoKSwgbGVmdCk7CisgICAgaW50IHRvcCA9IHVwcGVyQm91bmRTY2FsZWRZKGZyYW1lUmVjdC55
KCkpOworICAgIGludCBib3R0b20gPSBsb3dlckJvdW5kU2NhbGVkWShmcmFtZVJlY3QubWF4WSgp
LCB0b3ApOworICAgIGJ1ZmZlci0+cGl4ZWxzKCktPnNldFJlY3QoSW50UmVjdChsZWZ0LCB0b3As
IHJpZ2h0IC0gbGVmdCwgYm90dG9tIC0gdG9wKSk7CiAKICAgICAvLyBVcGRhdGUgb3VyIHN0YXR1
cyB0byBiZSBwYXJ0aWFsbHkgY29tcGxldGUuCiAgICAgYnVmZmVyLT5zZXRTdGF0dXMoSW1hZ2VG
cmFtZTo6RnJhbWVQYXJ0aWFsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaAppbmRleCA5NWVjNmQw
YTdiNjk2NjUyYzcwOWI3YjYyZDQxYWE0ZjNhYjhmMWUwLi43YjhkODdjZmQ3MjFiMzA5MDcwYzQ5
OTg4ZjM0NWM5MDM1NGRhNWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5oCkBAIC00NCw3ICs0
NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgU3RyaW5nIGZpbGVuYW1lRXh0ZW5z
aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gImdpZiI7IH0KICAgICAgICAgdm9pZCBzZXRE
YXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIG92ZXJyaWRlOwog
ICAgICAgICBib29sIGlzU2l6ZUF2YWlsYWJsZSgpIG92ZXJyaWRlOwotICAgICAgICBib29sIHNl
dFNpemUodW5zaWduZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCkgb3ZlcnJpZGU7CisgICAgICAg
IGJvb2wgc2V0U2l6ZShjb25zdCBJbnRTaXplJikgb3ZlcnJpZGU7CiAgICAgICAgIHNpemVfdCBm
cmFtZUNvdW50KCkgb3ZlcnJpZGU7CiAgICAgICAgIGludCByZXBldGl0aW9uQ291bnQoKSBjb25z
dCBvdmVycmlkZTsKICAgICAgICAgSW1hZ2VGcmFtZSogZnJhbWVCdWZmZXJBdEluZGV4KHNpemVf
dCBpbmRleCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmNwcAppbmRleCAwMGQyNTJj
ZWZiMDVhYTUxZjg0ZDhkZjk5MDIyOTBlZmQ3MTA0MjJmLi5hM2E1NDE1NTkwMmEzMTY0MWQ5MDc0
NmFhYjE4N2I2MzkxZDQyNjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5jcHAKQEAgLTQ0Nyw3
ICs0NDcsNyBAQCBib29sIEdJRkltYWdlUmVhZGVyOjpwYXJzZShzaXplX3QgZGF0YVBvc2l0aW9u
LCBzaXplX3QgbGVuLCBib29sIHBhcnNlU2l6ZU9ubHkpCiAKICAgICAgICAgICAgIC8vIENBTExC
QUNLOiBJbmZvcm0gdGhlIGRlY29kZXJwbHVnaW4gb2Ygb3VyIHNpemUuCiAgICAgICAgICAgICAv
LyBOb3RlOiBBIHN1YnNlcXVlbnQgZnJhbWUgbWlnaHQgaGF2ZSBkaW1lbnNpb25zIGxhcmdlciB0
aGFuIHRoZSAic2NyZWVuIiBkaW1lbnNpb25zLgotICAgICAgICAgICAgaWYgKG1fY2xpZW50ICYm
ICFtX2NsaWVudC0+c2V0U2l6ZShtX3NjcmVlbldpZHRoLCBtX3NjcmVlbkhlaWdodCkpCisgICAg
ICAgICAgICBpZiAobV9jbGllbnQgJiYgIW1fY2xpZW50LT5zZXRTaXplKEludFNpemUobV9zY3Jl
ZW5XaWR0aCwgbV9zY3JlZW5IZWlnaHQpKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICAgICAgICAgIG1fc2NyZWVuQmdjb2xvciA9IGN1cnJlbnRDb21wb25lbnRbNV07CkBA
IC02NjQsNyArNjY0LDcgQEAgYm9vbCBHSUZJbWFnZVJlYWRlcjo6cGFyc2Uoc2l6ZV90IGRhdGFQ
b3NpdGlvbiwgc2l6ZV90IGxlbiwgYm9vbCBwYXJzZVNpemVPbmx5KQogICAgICAgICAgICAgICAg
IHlPZmZzZXQgPSAwOwogCiAgICAgICAgICAgICAgICAgLy8gQ0FMTEJBQ0s6IEluZm9ybSB0aGUg
ZGVjb2RlcnBsdWdpbiBvZiBvdXIgc2l6ZS4KLSAgICAgICAgICAgICAgICBpZiAobV9jbGllbnQg
JiYgIW1fY2xpZW50LT5zZXRTaXplKG1fc2NyZWVuV2lkdGgsIG1fc2NyZWVuSGVpZ2h0KSkKKyAg
ICAgICAgICAgICAgICBpZiAobV9jbGllbnQgJiYgIW1fY2xpZW50LT5zZXRTaXplKEludFNpemUo
bV9zY3JlZW5XaWR0aCwgbV9zY3JlZW5IZWlnaHQpKSkKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCmlu
ZGV4IGE1OTIwMWI1NmU1YjIyZTJhODUxYzBjOTkyZWE0YjFmODhjYzNiNGYuLjNjYjRhMTM5YzRk
NDU1NGE1OTc4NDU0NzEzZjBlOTM4OTViZjJkYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIu
Y3BwCkBAIC04OCwyMSArODgsMjAgQEAgSW50U2l6ZSBJQ09JbWFnZURlY29kZXI6OmZyYW1lU2l6
ZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsKQogICAgIHJldHVybiAoaW5k
ZXggJiYgKGluZGV4IDwgbV9kaXJFbnRyaWVzLnNpemUoKSkpID8gbV9kaXJFbnRyaWVzW2luZGV4
XS5tX3NpemUgOiBzaXplKCk7CiB9CiAKLWJvb2wgSUNPSW1hZ2VEZWNvZGVyOjpzZXRTaXplKHVu
c2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQpCitib29sIElDT0ltYWdlRGVjb2Rlcjo6c2V0
U2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQogewogICAgIC8vIFRoZSBzaXplIGNhbGN1bGF0ZWQg
aW5zaWRlIHRoZSBCTVBJbWFnZVJlYWRlciBoYWQgYmV0dGVyIG1hdGNoIHRoZSBvbmUgaW4KICAg
ICAvLyB0aGUgaWNvbiBkaXJlY3RvcnkuCi0gICAgcmV0dXJuIG1fZnJhbWVTaXplLmlzRW1wdHko
KSA/IEltYWdlRGVjb2Rlcjo6c2V0U2l6ZSh3aWR0aCwgaGVpZ2h0KSA6ICgoSW50U2l6ZSh3aWR0
aCwgaGVpZ2h0KSA9PSBtX2ZyYW1lU2l6ZSkgfHwgc2V0RmFpbGVkKCkpOworICAgIHJldHVybiBt
X2ZyYW1lU2l6ZS5pc0VtcHR5KCkgPyBJbWFnZURlY29kZXI6OnNldFNpemUoc2l6ZSkgOiAoKHNp
emUgPT0gbV9mcmFtZVNpemUpIHx8IHNldEZhaWxlZCgpKTsKIH0KIAogc2l6ZV90IElDT0ltYWdl
RGVjb2Rlcjo6ZnJhbWVDb3VudCgpCiB7CiAgICAgZGVjb2RlKDAsIHRydWUpOwotICAgIGlmICht
X2ZyYW1lQnVmZmVyQ2FjaGUuaXNFbXB0eSgpKSB7CisKKyAgICBpZiAobV9mcmFtZUJ1ZmZlckNh
Y2hlLmlzRW1wdHkoKSkKICAgICAgICAgbV9mcmFtZUJ1ZmZlckNhY2hlLnJlc2l6ZShtX2RpckVu
dHJpZXMuc2l6ZSgpKTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2RpckVudHJp
ZXMuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBtX2ZyYW1lQnVmZmVyQ2FjaGVbaV0uc2V0UHJl
bXVsdGlwbHlBbHBoYShtX3ByZW11bHRpcGx5QWxwaGEpOwotICAgIH0KKwogICAgIC8vIENBVVRJ
T046IFdlIG11c3Qgbm90IHJlc2l6ZSBtX2ZyYW1lQnVmZmVyQ2FjaGUgYWdhaW4gYWZ0ZXIgdGhp
cywgYXMKICAgICAvLyBkZWNvZGVBdEluZGV4KCkgbWF5IGdpdmUgYSBCTVBJbWFnZVJlYWRlciBh
IHBvaW50ZXIgdG8gb25lIG9mIHRoZQogICAgIC8vIGVudHJpZXMuCkBAIC0yMjAsNyArMjE5LDcg
QEAgYm9vbCBJQ09JbWFnZURlY29kZXI6OmRlY29kZUF0SW5kZXgoc2l6ZV90IGluZGV4KQogCiAg
ICAgaWYgKCFtX3BuZ0RlY29kZXJzW2luZGV4XSkgewogICAgICAgICBtX3BuZ0RlY29kZXJzW2lu
ZGV4XSA9IHN0ZDo6bWFrZV91bmlxdWU8Ci0gICAgICAgICAgICBQTkdJbWFnZURlY29kZXI+KG1f
cHJlbXVsdGlwbHlBbHBoYSA/IEltYWdlU291cmNlOjpBbHBoYVByZW11bHRpcGxpZWQgOiBJbWFn
ZVNvdXJjZTo6QWxwaGFOb3RQcmVtdWx0aXBsaWVkLAorICAgICAgICAgICAgUE5HSW1hZ2VEZWNv
ZGVyPihwcmVtdWx0aXBseUFscGhhKCkgPyBJbWFnZVNvdXJjZTo6QWxwaGFQcmVtdWx0aXBsaWVk
IDogSW1hZ2VTb3VyY2U6OkFscGhhTm90UHJlbXVsdGlwbGllZCwKICAgICAgICAgICAgICAgICBt
X2lnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlID8gSW1hZ2VTb3VyY2U6OkdhbW1hQW5kQ29sb3JQ
cm9maWxlSWdub3JlZCA6IEltYWdlU291cmNlOjpHYW1tYUFuZENvbG9yUHJvZmlsZUFwcGxpZWQp
OwogICAgICAgICBzZXREYXRhRm9yUE5HRGVjb2RlckF0SW5kZXgoaW5kZXgpOwogICAgIH0KQEAg
LTI3OSw3ICsyNzgsNyBAQCBib29sIElDT0ltYWdlRGVjb2Rlcjo6cHJvY2Vzc0RpcmVjdG9yeUVu
dHJpZXMoKQogICAgIGNvbnN0IEljb25EaXJlY3RvcnlFbnRyeSYgZGlyRW50cnkgPSBtX2RpckVu
dHJpZXMuZmlyc3QoKTsKICAgICAvLyBUZWNobmljYWxseSwgdGhpcyBuZXh0IGNhbGwgc2hvdWxk
bid0IGJlIGFibGUgdG8gZmFpbCwgc2luY2UgdGhlIHdpZHRoCiAgICAgLy8gYW5kIGhlaWdodCBo
ZXJlIGFyZSBlYWNoIDw9IDI1NiwgYW5kIHxtX2ZyYW1lU2l6ZXwgaXMgZW1wdHkuCi0gICAgcmV0
dXJuIHNldFNpemUoZGlyRW50cnkubV9zaXplLndpZHRoKCksIGRpckVudHJ5Lm1fc2l6ZS5oZWln
aHQoKSk7CisgICAgcmV0dXJuIHNldFNpemUoZGlyRW50cnkubV9zaXplKTsKIH0KIAogSUNPSW1h
Z2VEZWNvZGVyOjpJY29uRGlyZWN0b3J5RW50cnkgSUNPSW1hZ2VEZWNvZGVyOjpyZWFkRGlyZWN0
b3J5RW50cnkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5oCmluZGV4IDU4MGM2N2E4ODNhNDBiNmU1
NDIwZjY1YWUzNDQ4ODQ1NzQxOTM4ZWMuLmQzM2QwNThhMTU5NjA3ZGY4OTM5Y2VhMWNkN2E2ZjMx
NDRiNzIyZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2ljby9JQ09JbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIGlzU2l6ZUF2YWlsYWJsZSgpIG92ZXJyaWRl
OwogICAgICAgICBJbnRTaXplIHNpemUoKSBvdmVycmlkZTsKICAgICAgICAgSW50U2l6ZSBmcmFt
ZVNpemVBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCkgb3ZlcnJpZGU7Ci0gICAgICAg
IGJvb2wgc2V0U2l6ZSh1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0KSBvdmVycmlkZTsK
KyAgICAgICAgYm9vbCBzZXRTaXplKGNvbnN0IEludFNpemUmKSBvdmVycmlkZTsKICAgICAgICAg
c2l6ZV90IGZyYW1lQ291bnQoKSBvdmVycmlkZTsKICAgICAgICAgSW1hZ2VGcmFtZSogZnJhbWVC
dWZmZXJBdEluZGV4KHNpemVfdCkgb3ZlcnJpZGU7CiAgICAgICAgIC8vIENBVVRJT046IHNldEZh
aWxlZCgpIGRlbGV0ZXMgYWxsIHJlYWRlcnMgYW5kIGRlY29kZXJzLiAgQmUgY2FyZWZ1bCB0bwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9K
UEVHSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggZWU2NmFjMTRkNGJlMDdjYTlhZmZi
MmEzYWZmODllYmZhNjJmYjEyZS4uMDkzNTcwZTdmYmQ3NGMyZjdhYzk0NjU0N2RhNDZjNTNlY2Rh
MGNiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
anBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCkBAIC0xOTYsMzYgKzE5Niw2
IEBAIHN0YXRpYyBJbWFnZU9yaWVudGF0aW9uIHJlYWRJbWFnZU9yaWVudGF0aW9uKGpwZWdfZGVj
b21wcmVzc19zdHJ1Y3QqIGluZm8pCiAgICAgcmV0dXJuIEltYWdlT3JpZW50YXRpb24oKTsKIH0K
IAotc3RhdGljIENvbG9yUHJvZmlsZSByZWFkQ29sb3JQcm9maWxlKGpwZWdfZGVjb21wcmVzc19z
dHJ1Y3QqIGluZm8pCi17Ci0jaWYgVVNFKElDQ0pQRUcpCi0gICAgSk9DVEVUKiBwcm9maWxlOwot
ICAgIHVuc2lnbmVkIGludCBwcm9maWxlTGVuZ3RoOwotCi0gICAgaWYgKCFyZWFkX2ljY19wcm9m
aWxlKGluZm8sICZwcm9maWxlLCAmcHJvZmlsZUxlbmd0aCkpCi0gICAgICAgIHJldHVybiBDb2xv
clByb2ZpbGUoKTsKLQotICAgIC8vIE9ubHkgYWNjZXB0IFJHQiBjb2xvciBwcm9maWxlcyBmcm9t
IGlucHV0IGNsYXNzIGRldmljZXMuCi0gICAgYm9vbCBpZ25vcmVQcm9maWxlID0gZmFsc2U7Ci0g
ICAgY2hhciogcHJvZmlsZURhdGEgPSByZWludGVycHJldF9jYXN0PGNoYXIqPihwcm9maWxlKTsK
LSAgICBpZiAocHJvZmlsZUxlbmd0aCA8IEltYWdlRGVjb2Rlcjo6aWNjQ29sb3JQcm9maWxlSGVh
ZGVyTGVuZ3RoKQotICAgICAgICBpZ25vcmVQcm9maWxlID0gdHJ1ZTsKLSAgICBlbHNlIGlmICgh
SW1hZ2VEZWNvZGVyOjpyZ2JDb2xvclByb2ZpbGUocHJvZmlsZURhdGEsIHByb2ZpbGVMZW5ndGgp
KQotICAgICAgICBpZ25vcmVQcm9maWxlID0gdHJ1ZTsKLSAgICBlbHNlIGlmICghSW1hZ2VEZWNv
ZGVyOjppbnB1dERldmljZUNvbG9yUHJvZmlsZShwcm9maWxlRGF0YSwgcHJvZmlsZUxlbmd0aCkp
Ci0gICAgICAgIGlnbm9yZVByb2ZpbGUgPSB0cnVlOwotCi0gICAgQ29sb3JQcm9maWxlIGNvbG9y
UHJvZmlsZTsKLSAgICBpZiAoIWlnbm9yZVByb2ZpbGUpCi0gICAgICAgIGNvbG9yUHJvZmlsZS5h
cHBlbmQocHJvZmlsZURhdGEsIHByb2ZpbGVMZW5ndGgpOwotICAgIGZyZWUocHJvZmlsZSk7Ci0g
ICAgcmV0dXJuIGNvbG9yUHJvZmlsZTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGluZm8pOwot
ICAgIHJldHVybiBDb2xvclByb2ZpbGUoKTsKLSNlbmRpZgotfQotCiBjbGFzcyBKUEVHSW1hZ2VS
ZWFkZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgpAQCAtMzUyLDcg
KzMyMiw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1fc3RhdGUgPSBKUEVHX1NUQVJUX0RFQ09N
UFJFU1M7CiAKICAgICAgICAgICAgIC8vIFdlIGNhbiBmaWxsIGluIHRoZSBzaXplIG5vdyB0aGF0
IHRoZSBoZWFkZXIgaXMgYXZhaWxhYmxlLgotICAgICAgICAgICAgaWYgKCFtX2RlY29kZXItPnNl
dFNpemUobV9pbmZvLmltYWdlX3dpZHRoLCBtX2luZm8uaW1hZ2VfaGVpZ2h0KSkKKyAgICAgICAg
ICAgIGlmICghbV9kZWNvZGVyLT5zZXRTaXplKEludFNpemUobV9pbmZvLmltYWdlX3dpZHRoLCBt
X2luZm8uaW1hZ2VfaGVpZ2h0KSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgICAgICAgICBtX2RlY29kZXItPnNldE9yaWVudGF0aW9uKHJlYWRJbWFnZU9yaWVudGF0aW9u
KGluZm8oKSkpOwpAQCAtMzYzLDEzICszMzMsNiBAQCBwdWJsaWM6CiAgICAgICAgICAgICBpZiAo
bV9kZWNvZGVyLT53aWxsRG93blNhbXBsZSgpICYmIHR1cmJvU3dpenpsZWQobV9pbmZvLm91dF9j
b2xvcl9zcGFjZSkpCiAgICAgICAgICAgICAgICAgbV9pbmZvLm91dF9jb2xvcl9zcGFjZSA9IEpD
U19SR0I7CiAjZW5kaWYKLSAgICAgICAgICAgIC8vIEFsbG93IGNvbG9yIG1hbmFnZW1lbnQgb2Yg
dGhlIGRlY29kZWQgUkdCQSBwaXhlbHMgaWYgcG9zc2libGUuCi0gICAgICAgICAgICBpZiAoIW1f
ZGVjb2Rlci0+aWdub3Jlc0dhbW1hQW5kQ29sb3JQcm9maWxlKCkpIHsKLSAgICAgICAgICAgICAg
ICBDb2xvclByb2ZpbGUgcmdiSW5wdXREZXZpY2VDb2xvclByb2ZpbGUgPSByZWFkQ29sb3JQcm9m
aWxlKGluZm8oKSk7Ci0gICAgICAgICAgICAgICAgaWYgKCFyZ2JJbnB1dERldmljZUNvbG9yUHJv
ZmlsZS5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgICAgIG1fZGVjb2Rlci0+c2V0Q29sb3JQ
cm9maWxlKHJnYklucHV0RGV2aWNlQ29sb3JQcm9maWxlKTsKLSAgICAgICAgICAgIH0KLQogICAg
ICAgICAgICAgLy8gRG9uJ3QgYWxsb2NhdGUgYSBnaWFudCBhbmQgc3VwZXJmbHVvdXMgbWVtb3J5
IGJ1ZmZlciB3aGVuIHRoZQogICAgICAgICAgICAgLy8gaW1hZ2UgaXMgYSBzZXF1ZW50aWFsIEpQ
RUcuCiAgICAgICAgICAgICBtX2luZm8uYnVmZmVyZWRfaW1hZ2UgPSBqcGVnX2hhc19tdWx0aXBs
ZV9zY2FucygmbV9pbmZvKTsKQEAgLTU1Niw5ICs1MTksOSBAQCBib29sIEpQRUdJbWFnZURlY29k
ZXI6OmlzU2l6ZUF2YWlsYWJsZSgpCiAgICAgcmV0dXJuIEltYWdlRGVjb2Rlcjo6aXNTaXplQXZh
aWxhYmxlKCk7CiB9CiAKLWJvb2wgSlBFR0ltYWdlRGVjb2Rlcjo6c2V0U2l6ZSh1bnNpZ25lZCB3
aWR0aCwgdW5zaWduZWQgaGVpZ2h0KQorYm9vbCBKUEVHSW1hZ2VEZWNvZGVyOjpzZXRTaXplKGNv
bnN0IEludFNpemUmIHNpemUpCiB7Ci0gICAgaWYgKCFJbWFnZURlY29kZXI6OnNldFNpemUod2lk
dGgsIGhlaWdodCkpCisgICAgaWYgKCFJbWFnZURlY29kZXI6OnNldFNpemUoc2l6ZSkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgIHByZXBhcmVTY2FsZURhdGFJZk5lY2Vzc2FyeSgpOwpA
QCAtNTcwLDEwICs1MzMsOCBAQCBJbWFnZUZyYW1lKiBKUEVHSW1hZ2VEZWNvZGVyOjpmcmFtZUJ1
ZmZlckF0SW5kZXgoc2l6ZV90IGluZGV4KQogICAgIGlmIChpbmRleCkKICAgICAgICAgcmV0dXJu
IDA7CiAKLSAgICBpZiAobV9mcmFtZUJ1ZmZlckNhY2hlLmlzRW1wdHkoKSkgeworICAgIGlmICht
X2ZyYW1lQnVmZmVyQ2FjaGUuaXNFbXB0eSgpKQogICAgICAgICBtX2ZyYW1lQnVmZmVyQ2FjaGUu
cmVzaXplKDEpOwotICAgICAgICBtX2ZyYW1lQnVmZmVyQ2FjaGVbMF0uc2V0UHJlbXVsdGlwbHlB
bHBoYShtX3ByZW11bHRpcGx5QWxwaGEpOwotICAgIH0KIAogICAgIEltYWdlRnJhbWUmIGZyYW1l
ID0gbV9mcmFtZUJ1ZmZlckNhY2hlWzBdOwogICAgIGlmIChmcmFtZS5zdGF0dXMoKSAhPSBJbWFn
ZUZyYW1lOjpGcmFtZUNvbXBsZXRlKQpAQCAtNTg4LDcgKzU0OSw3IEBAIGJvb2wgSlBFR0ltYWdl
RGVjb2Rlcjo6c2V0RmFpbGVkKCkKIH0KIAogdGVtcGxhdGUgPEpfQ09MT1JfU1BBQ0UgY29sb3JT
cGFjZT4KLXZvaWQgc2V0UGl4ZWwoSW1hZ2VGcmFtZSYgYnVmZmVyLCBJbWFnZUZyYW1lOjpQaXhl
bERhdGEqIGN1cnJlbnRBZGRyZXNzLCBKU0FNUEFSUkFZIHNhbXBsZXMsIGludCBjb2x1bW4pCit2
b2lkIHNldFBpeGVsKEltYWdlRnJhbWUmIGJ1ZmZlciwgUkdCQTMyKiBjdXJyZW50QWRkcmVzcywg
SlNBTVBBUlJBWSBzYW1wbGVzLCBpbnQgY29sdW1uKQogewogICAgIEpTQU1QTEUqIGpzYW1wbGUg
PSAqc2FtcGxlcyArIGNvbHVtbiAqIChjb2xvclNwYWNlID09IEpDU19SR0IgPyAzIDogNCk7CiAK
QEAgLTYzMSw3ICs1OTIsNyBAQCBib29sIEpQRUdJbWFnZURlY29kZXI6Om91dHB1dFNjYW5saW5l
cyhJbWFnZUZyYW1lJiBidWZmZXIpCiAgICAgICAgIGlmIChkZXN0WSA8IDApCiAgICAgICAgICAg
ICBjb250aW51ZTsKIAotICAgICAgICBJbWFnZUZyYW1lOjpQaXhlbERhdGEqIGN1cnJlbnRBZGRy
ZXNzID0gYnVmZmVyLmdldEFkZHIoMCwgZGVzdFkpOworICAgICAgICBSR0JBMzIqIGN1cnJlbnRB
ZGRyZXNzID0gYnVmZmVyLmdldEFkZHIoMCwgZGVzdFkpOwogICAgICAgICBmb3IgKGludCB4ID0g
MDsgeCA8IHdpZHRoOyArK3gpIHsKICAgICAgICAgICAgIHNldFBpeGVsPGNvbG9yU3BhY2U+KGJ1
ZmZlciwgY3VycmVudEFkZHJlc3MsIHNhbXBsZXMsIGlzU2NhbGVkID8gbV9zY2FsZWRDb2x1bW5z
W3hdIDogeCk7CiAgICAgICAgICAgICArK2N1cnJlbnRBZGRyZXNzOwpAQCAtNjU0LDE2ICs2MTUs
MTIgQEAgYm9vbCBKUEVHSW1hZ2VEZWNvZGVyOjpvdXRwdXRTY2FubGluZXMoKQogICAgIC8vIElu
aXRpYWxpemUgdGhlIGZyYW1lYnVmZmVyIGlmIG5lZWRlZC4KICAgICBJbWFnZUZyYW1lJiBidWZm
ZXIgPSBtX2ZyYW1lQnVmZmVyQ2FjaGVbMF07CiAgICAgaWYgKGJ1ZmZlci5zdGF0dXMoKSA9PSBJ
bWFnZUZyYW1lOjpGcmFtZUVtcHR5KSB7Ci0gICAgICAgIGlmICghYnVmZmVyLnNldFNpemUoc2Nh
bGVkU2l6ZSgpLndpZHRoKCksIHNjYWxlZFNpemUoKS5oZWlnaHQoKSkpCisgICAgICAgIGlmICgh
YnVmZmVyLnNldFNpemUoc2NhbGVkU2l6ZSgpLCBwcmVtdWx0aXBseUFscGhhKCkpKQogICAgICAg
ICAgICAgcmV0dXJuIHNldEZhaWxlZCgpOwogICAgICAgICBidWZmZXIuc2V0U3RhdHVzKEltYWdl
RnJhbWU6OkZyYW1lUGFydGlhbCk7CiAgICAgICAgIC8vIFRoZSBidWZmZXIgaXMgdHJhbnNwYXJl
bnQgb3V0c2lkZSB0aGUgZGVjb2RlZCBhcmVhIHdoaWxlIHRoZSBpbWFnZSBpcwogICAgICAgICAv
LyBsb2FkaW5nLiBUaGUgY29tcGxldGVkIGltYWdlIHdpbGwgYmUgbWFya2VkIGZ1bGx5IG9wYXF1
ZSBpbiBqcGVnQ29tcGxldGUoKS4KICAgICAgICAgYnVmZmVyLnNldEhhc0FscGhhKHRydWUpOwot
ICAgICAgICBidWZmZXIuc2V0Q29sb3JQcm9maWxlKG1fY29sb3JQcm9maWxlKTsKLQotICAgICAg
ICAvLyBGb3IgSlBFR3MsIHRoZSBmcmFtZSBhbHdheXMgZmlsbHMgdGhlIGVudGlyZSBpbWFnZS4K
LSAgICAgICAgYnVmZmVyLnNldE9yaWdpbmFsRnJhbWVSZWN0KEludFJlY3QoSW50UG9pbnQoKSwg
c2l6ZSgpKSk7CiAgICAgfQogCiAgICAganBlZ19kZWNvbXByZXNzX3N0cnVjdCogaW5mbyA9IG1f
cmVhZGVyLT5pbmZvKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5oCmluZGV4IDZjMWZjMDQy
NzMyMjAzNzViYzZhMjVlYzE5OGY4YzhhNTEwMTQ4NmMuLmZjMjNmYmQ5NjM3YjUzYWVlNjY1MzNi
NmFhYjRmN2IyNjhkYzBlYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5oCkBAIC01MCw3
ICs1MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gSW1hZ2VEZWNvZGVyCiAg
ICAgICAgIFN0cmluZyBmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
ICJqcGciOyB9CiAgICAgICAgIGJvb2wgaXNTaXplQXZhaWxhYmxlKCkgb3ZlcnJpZGU7Ci0gICAg
ICAgIGJvb2wgc2V0U2l6ZSh1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0KSBvdmVycmlk
ZTsKKyAgICAgICAgYm9vbCBzZXRTaXplKGNvbnN0IEludFNpemUmKSBvdmVycmlkZTsKICAgICAg
ICAgSW1hZ2VGcmFtZSogZnJhbWVCdWZmZXJBdEluZGV4KHNpemVfdCBpbmRleCkgb3ZlcnJpZGU7
CiAgICAgICAgIC8vIENBVVRJT046IHNldEZhaWxlZCgpIGRlbGV0ZXMgfG1fcmVhZGVyfC4gIEJl
IGNhcmVmdWwgdG8gYXZvaWQKICAgICAgICAgLy8gYWNjZXNzaW5nIGRlbGV0ZWQgbWVtb3J5LCBl
c3BlY2lhbGx5IHdoZW4gY2FsbGluZyB0aGlzIGZyb20gaW5zaWRlCkBAIC02Niw3ICs2Niw2IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBvdXRwdXRTY2FubGluZXMoKTsKICAg
ICAgICAgdm9pZCBqcGVnQ29tcGxldGUoKTsKIAotICAgICAgICB2b2lkIHNldENvbG9yUHJvZmls
ZShjb25zdCBDb2xvclByb2ZpbGUmIGNvbG9yUHJvZmlsZSkgeyBtX2NvbG9yUHJvZmlsZSA9IGNv
bG9yUHJvZmlsZTsgfQogICAgICAgICB2b2lkIHNldE9yaWVudGF0aW9uKEltYWdlT3JpZW50YXRp
b24gb3JpZW50YXRpb24pIHsgbV9vcmllbnRhdGlvbiA9IG9yaWVudGF0aW9uOyB9CiAKICAgICBw
cml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBlNjQ0YTcxMTBlZmNiNTQw
ZDg5Y2UxYmE4MTEwMGJjNDgyM2IxOGYyLi42MjM4NjI4NmJjOWMzODcxNzFkN2JjNmU2NWU1YzNm
OWU0NTQ0YWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcApAQCAtMjM1LDkgKzIzNSw5
IEBAIGJvb2wgUE5HSW1hZ2VEZWNvZGVyOjppc1NpemVBdmFpbGFibGUoKQogICAgIHJldHVybiBJ
bWFnZURlY29kZXI6OmlzU2l6ZUF2YWlsYWJsZSgpOwogfQogCi1ib29sIFBOR0ltYWdlRGVjb2Rl
cjo6c2V0U2l6ZSh1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0KQorYm9vbCBQTkdJbWFn
ZURlY29kZXI6OnNldFNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKLSAgICBpZiAoIUltYWdl
RGVjb2Rlcjo6c2V0U2l6ZSh3aWR0aCwgaGVpZ2h0KSkKKyAgICBpZiAoIUltYWdlRGVjb2Rlcjo6
c2V0U2l6ZShzaXplKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcHJlcGFyZVNjYWxl
RGF0YUlmTmVjZXNzYXJ5KCk7CkBAIC0yNTcsMTAgKzI1Nyw4IEBAIEltYWdlRnJhbWUqIFBOR0lt
YWdlRGVjb2Rlcjo6ZnJhbWVCdWZmZXJBdEluZGV4KHNpemVfdCBpbmRleCkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAjZW5kaWYKIAotICAgIGlmIChtX2ZyYW1lQnVmZmVyQ2FjaGUuaXNFbXB0
eSgpKSB7CisgICAgaWYgKG1fZnJhbWVCdWZmZXJDYWNoZS5pc0VtcHR5KCkpCiAgICAgICAgIG1f
ZnJhbWVCdWZmZXJDYWNoZS5yZXNpemUoMSk7Ci0gICAgICAgIG1fZnJhbWVCdWZmZXJDYWNoZVsw
XS5zZXRQcmVtdWx0aXBseUFscGhhKG1fcHJlbXVsdGlwbHlBbHBoYSk7Ci0gICAgfQogCiAgICAg
SW1hZ2VGcmFtZSYgZnJhbWUgPSBtX2ZyYW1lQnVmZmVyQ2FjaGVbaW5kZXhdOwogICAgIGlmIChm
cmFtZS5zdGF0dXMoKSAhPSBJbWFnZUZyYW1lOjpGcmFtZUNvbXBsZXRlKQpAQCAtMjc2LDM3ICsy
NzQsNiBAQCBib29sIFBOR0ltYWdlRGVjb2Rlcjo6c2V0RmFpbGVkKCkKICAgICByZXR1cm4gSW1h
Z2VEZWNvZGVyOjpzZXRGYWlsZWQoKTsKIH0KIAotc3RhdGljIHZvaWQgcmVhZENvbG9yUHJvZmls
ZShwbmdfc3RydWN0cCBwbmcsIHBuZ19pbmZvcCBpbmZvLCBDb2xvclByb2ZpbGUmIGNvbG9yUHJv
ZmlsZSkKLXsKLSAgICBBU1NFUlQoY29sb3JQcm9maWxlLmlzRW1wdHkoKSk7Ci0KLSNpZmRlZiBQ
TkdfaUNDUF9TVVBQT1JURUQKLSAgICBjaGFyKiBwcm9maWxlTmFtZTsKLSAgICBpbnQgY29tcHJl
c3Npb25UeXBlOwotI2lmIChQTkdfTElCUE5HX1ZFUiA8IDEwNTAwKQotICAgIHBuZ19jaGFycCBw
cm9maWxlOwotI2Vsc2UKLSAgICBwbmdfYnl0ZXAgcHJvZmlsZTsKLSNlbmRpZgotICAgIHBuZ191
aW50XzMyIHByb2ZpbGVMZW5ndGg7Ci0gICAgaWYgKCFwbmdfZ2V0X2lDQ1AocG5nLCBpbmZvLCAm
cHJvZmlsZU5hbWUsICZjb21wcmVzc2lvblR5cGUsICZwcm9maWxlLCAmcHJvZmlsZUxlbmd0aCkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIC8vIE9ubHkgYWNjZXB0IFJHQiBjb2xvciBwcm9maWxl
cyBmcm9tIGlucHV0IGNsYXNzIGRldmljZXMuCi0gICAgYm9vbCBpZ25vcmVQcm9maWxlID0gZmFs
c2U7Ci0gICAgY2hhciogcHJvZmlsZURhdGEgPSByZWludGVycHJldF9jYXN0PGNoYXIqPihwcm9m
aWxlKTsKLSAgICBpZiAocHJvZmlsZUxlbmd0aCA8IEltYWdlRGVjb2Rlcjo6aWNjQ29sb3JQcm9m
aWxlSGVhZGVyTGVuZ3RoKQotICAgICAgICBpZ25vcmVQcm9maWxlID0gdHJ1ZTsKLSAgICBlbHNl
IGlmICghSW1hZ2VEZWNvZGVyOjpyZ2JDb2xvclByb2ZpbGUocHJvZmlsZURhdGEsIHByb2ZpbGVM
ZW5ndGgpKQotICAgICAgICBpZ25vcmVQcm9maWxlID0gdHJ1ZTsKLSAgICBlbHNlIGlmICghSW1h
Z2VEZWNvZGVyOjppbnB1dERldmljZUNvbG9yUHJvZmlsZShwcm9maWxlRGF0YSwgcHJvZmlsZUxl
bmd0aCkpCi0gICAgICAgIGlnbm9yZVByb2ZpbGUgPSB0cnVlOwotCi0gICAgaWYgKCFpZ25vcmVQ
cm9maWxlKQotICAgICAgICBjb2xvclByb2ZpbGUuYXBwZW5kKHByb2ZpbGVEYXRhLCBwcm9maWxl
TGVuZ3RoKTsKLSNlbmRpZgotfQotCiB2b2lkIFBOR0ltYWdlRGVjb2Rlcjo6aGVhZGVyQXZhaWxh
YmxlKCkKIHsKICAgICBwbmdfc3RydWN0cCBwbmcgPSBtX3JlYWRlci0+cG5nUHRyKCk7CkBAIC0z
MjYsNyArMjkzLDcgQEAgdm9pZCBQTkdJbWFnZURlY29kZXI6OmhlYWRlckF2YWlsYWJsZSgpCiAg
ICAgLy8gd2lsbCBjZWFzZSB0byBleGlzdC4gIE5vdGUgdGhhdCB3ZSdsbCBzdGlsbCBwcm9wZXJs
eSBzZXQgdGhlIGZhaWx1cmUgZmxhZwogICAgIC8vIGluIHRoaXMgY2FzZSBhcyBzb29uIGFzIHdl
IGxvbmdqbXAoKS4KICAgICBtX2RvTm90aGluZ09uRmFpbHVyZSA9IHRydWU7Ci0gICAgYm9vbCBy
ZXN1bHQgPSBzZXRTaXplKHdpZHRoLCBoZWlnaHQpOworICAgIGJvb2wgcmVzdWx0ID0gc2V0U2l6
ZShJbnRTaXplKHdpZHRoLCBoZWlnaHQpKTsKICAgICBtX2RvTm90aGluZ09uRmFpbHVyZSA9IGZh
bHNlOwogICAgIGlmICghcmVzdWx0KSB7CiAgICAgICAgIGxvbmdqbXAoSk1QQlVGKHBuZyksIDEp
OwpAQCAtNDA1LDE2ICszNzIsNiBAQCB2b2lkIFBOR0ltYWdlRGVjb2Rlcjo6aGVhZGVyQXZhaWxh
YmxlKCkKICAgICBpZiAoY29sb3JUeXBlID09IFBOR19DT0xPUl9UWVBFX0dSQVkgfHwgY29sb3JU
eXBlID09IFBOR19DT0xPUl9UWVBFX0dSQVlfQUxQSEEpCiAgICAgICAgIHBuZ19zZXRfZ3JheV90
b19yZ2IocG5nKTsKIAotICAgIGlmICgoY29sb3JUeXBlICYgUE5HX0NPTE9SX01BU0tfQ09MT1Ip
ICYmICFtX2lnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlKSB7Ci0gICAgICAgIC8vIFdlIG9ubHkg
c3VwcG9ydCBjb2xvciBwcm9maWxlcyBmb3IgY29sb3IgUEFMRVRURSBhbmQgUkdCW0FdIFBORy4g
U3VwcG9ydGluZwotICAgICAgICAvLyBjb2xvciBwcm9maWxlcyBmb3IgZ3JheS1zY2FsZSBpbWFn
ZXMgaXMgc2xpZ2h0bHkgdHJpY2t5LCBhdCBsZWFzdCB1c2luZyB0aGUKLSAgICAgICAgLy8gQ29y
ZUdyYXBoaWNzIElDQyBsaWJyYXJ5LCBiZWNhdXNlIHdlIGV4cGFuZCBncmF5LXNjYWxlIGltYWdl
cyB0byBSR0IgYnV0IHdlCi0gICAgICAgIC8vIGRvIG5vdCBzaW1pbGFybHkgdHJhbnNmb3JtIHRo
ZSBjb2xvciBwcm9maWxlLiBXZSdkIGVpdGhlciBuZWVkIHRvIHRyYW5zZm9ybQotICAgICAgICAv
LyB0aGUgY29sb3IgcHJvZmlsZSBvciB3ZSdkIG5lZWQgdG8gZGVjb2RlIGludG8gYSBncmF5LXNj
YWxlIGltYWdlIGJ1ZmZlciBhbmQKLSAgICAgICAgLy8gaGFuZCB0aGF0IHRvIENvcmVHcmFwaGlj
cy4KLSAgICAgICAgcmVhZENvbG9yUHJvZmlsZShwbmcsIGluZm8sIG1fY29sb3JQcm9maWxlKTsK
LSAgICB9Ci0KICAgICAvLyBEZWFsIHdpdGggZ2FtbWEgYW5kIGtlZXAgaXQgdW5kZXIgb3VyIGNv
bnRyb2wuCiAgICAgZG91YmxlIGdhbW1hOwogICAgIGlmICghbV9pZ25vcmVHYW1tYUFuZENvbG9y
UHJvZmlsZSAmJiBwbmdfZ2V0X2dBTUEocG5nLCBpbmZvLCAmZ2FtbWEpKSB7CkBAIC00NTIsMTkg
KzQwOSwxOSBAQCB2b2lkIFBOR0ltYWdlRGVjb2Rlcjo6aGVhZGVyQXZhaWxhYmxlKCkKICAgICB9
CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBzZXRQaXhlbFJHQihJbWFnZUZyYW1lOjpQaXhlbERh
dGEqIGRlc3QsIHBuZ19ieXRlcCBwaXhlbCkKK3N0YXRpYyBpbmxpbmUgdm9pZCBzZXRQaXhlbFJH
QihSR0JBMzIqIGRlc3QsIHBuZ19ieXRlcCBwaXhlbCkKIHsKICAgICAqZGVzdCA9IDB4RkYwMDAw
MDBVIHwgcGl4ZWxbMF0gPDwgMTYgfCBwaXhlbFsxXSA8PCA4IHwgcGl4ZWxbMl07CiB9CiAKLXN0
YXRpYyBpbmxpbmUgdm9pZCBzZXRQaXhlbFJHQkEoSW1hZ2VGcmFtZTo6UGl4ZWxEYXRhKiBkZXN0
LCBwbmdfYnl0ZXAgcGl4ZWwsIHVuc2lnbmVkIGNoYXImIG5vblRyaXZpYWxBbHBoYU1hc2spCitz
dGF0aWMgaW5saW5lIHZvaWQgc2V0UGl4ZWxSR0JBKFJHQkEzMiogZGVzdCwgcG5nX2J5dGVwIHBp
eGVsLCB1bnNpZ25lZCBjaGFyJiBub25Ucml2aWFsQWxwaGFNYXNrKQogewogICAgIHVuc2lnbmVk
IGNoYXIgYSA9IHBpeGVsWzNdOwogICAgICpkZXN0ID0gYSA8PCAyNCB8IHBpeGVsWzBdIDw8IDE2
IHwgcGl4ZWxbMV0gPDwgOCB8IHBpeGVsWzJdOwogICAgIG5vblRyaXZpYWxBbHBoYU1hc2sgfD0g
KDI1NSAtIGEpOwogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQgc2V0UGl4ZWxQcmVtdWx0aXBsaWVk
UkdCQShJbWFnZUZyYW1lOjpQaXhlbERhdGEqIGRlc3QsIHBuZ19ieXRlcCBwaXhlbCwgdW5zaWdu
ZWQgY2hhciYgbm9uVHJpdmlhbEFscGhhTWFzaykKK3N0YXRpYyBpbmxpbmUgdm9pZCBzZXRQaXhl
bFByZW11bHRpcGxpZWRSR0JBKFJHQkEzMiogZGVzdCwgcG5nX2J5dGVwIHBpeGVsLCB1bnNpZ25l
ZCBjaGFyJiBub25Ucml2aWFsQWxwaGFNYXNrKQogewogICAgIHVuc2lnbmVkIGNoYXIgYSA9IHBp
eGVsWzNdOwogICAgIHVuc2lnbmVkIGNoYXIgciA9IGZhc3REaXZpZGVCeTI1NShwaXhlbFswXSAq
IGEpOwpAQCAtNDg4LDcgKzQ0NSw3IEBAIHZvaWQgUE5HSW1hZ2VEZWNvZGVyOjpyb3dBdmFpbGFi
bGUodW5zaWduZWQgY2hhciogcm93QnVmZmVyLCB1bnNpZ25lZCByb3dJbmRleCwKICAgICBJbWFn
ZUZyYW1lJiBidWZmZXIgPSBtX2ZyYW1lQnVmZmVyQ2FjaGVbbV9jdXJyZW50RnJhbWVdOwogICAg
IGlmIChidWZmZXIuc3RhdHVzKCkgPT0gSW1hZ2VGcmFtZTo6RnJhbWVFbXB0eSkgewogICAgICAg
ICBwbmdfc3RydWN0cCBwbmcgPSBtX3JlYWRlci0+cG5nUHRyKCk7Ci0gICAgICAgIGlmICghYnVm
ZmVyLnNldFNpemUoc2NhbGVkU2l6ZSgpLndpZHRoKCksIHNjYWxlZFNpemUoKS5oZWlnaHQoKSkp
IHsKKyAgICAgICAgaWYgKCFidWZmZXIuc2V0U2l6ZShzY2FsZWRTaXplKCksIHByZW11bHRpcGx5
QWxwaGEoKSkpIHsKICAgICAgICAgICAgIGxvbmdqbXAoSk1QQlVGKHBuZyksIDEpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC01MDYsMTUgKzQ2MywxMSBAQCB2b2lkIFBOR0lt
YWdlRGVjb2Rlcjo6cm93QXZhaWxhYmxlKHVuc2lnbmVkIGNoYXIqIHJvd0J1ZmZlciwgdW5zaWdu
ZWQgcm93SW5kZXgsCiAKICAgICAgICAgYnVmZmVyLnNldFN0YXR1cyhJbWFnZUZyYW1lOjpGcmFt
ZVBhcnRpYWwpOwogICAgICAgICBidWZmZXIuc2V0SGFzQWxwaGEoZmFsc2UpOwotICAgICAgICBi
dWZmZXIuc2V0Q29sb3JQcm9maWxlKG1fY29sb3JQcm9maWxlKTsKIAogI2lmIEVOQUJMRShBUE5H
KQogICAgICAgICBpZiAobV9jdXJyZW50RnJhbWUpCiAgICAgICAgICAgICBpbml0RnJhbWVCdWZm
ZXIobV9jdXJyZW50RnJhbWUpOwotICAgICAgICBlbHNlCiAjZW5kaWYKLSAgICAgICAgLy8gRm9y
IFBOR3MsIHRoZSBmcmFtZSBhbHdheXMgZmlsbHMgdGhlIGVudGlyZSBpbWFnZS4KLSAgICAgICAg
YnVmZmVyLnNldE9yaWdpbmFsRnJhbWVSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgc2l6ZSgpKSk7
CiAgICAgfQogCiAgICAgLyogbGlicG5nIGNvbW1lbnRzIChoZXJlIHRvIGV4cGxhaW4gd2hhdCBm
b2xsb3dzKS4KQEAgLTU3Myw3ICs1MjYsNyBAQCB2b2lkIFBOR0ltYWdlRGVjb2Rlcjo6cm93QXZh
aWxhYmxlKHVuc2lnbmVkIGNoYXIqIHJvd0J1ZmZlciwgdW5zaWduZWQgcm93SW5kZXgsCiAgICAg
fQogCiAgICAgLy8gV3JpdGUgdGhlIGRlY29kZWQgcm93IHBpeGVscyB0byB0aGUgZnJhbWUgYnVm
ZmVyLgotICAgIEltYWdlRnJhbWU6OlBpeGVsRGF0YSogYWRkcmVzcyA9IGJ1ZmZlci5nZXRBZGRy
KDAsIHkpOworICAgIFJHQkEzMiogYWRkcmVzcyA9IGJ1ZmZlci5nZXRBZGRyKDAsIHkpOwogICAg
IGludCB3aWR0aCA9IHNjYWxlZFNpemUoKS53aWR0aCgpOwogICAgIHVuc2lnbmVkIGNoYXIgbm9u
VHJpdmlhbEFscGhhTWFzayA9IDA7CiAKQEAgLTU5MCw3ICs1NDMsNyBAQCB2b2lkIFBOR0ltYWdl
RGVjb2Rlcjo6cm93QXZhaWxhYmxlKHVuc2lnbmVkIGNoYXIqIHJvd0J1ZmZlciwgdW5zaWduZWQg
cm93SW5kZXgsCiAgICAgewogICAgICAgICBwbmdfYnl0ZXAgcGl4ZWwgPSByb3c7CiAgICAgICAg
IGlmIChoYXNBbHBoYSkgewotICAgICAgICAgICAgaWYgKGJ1ZmZlci5wcmVtdWx0aXBseUFscGhh
KCkpIHsKKyAgICAgICAgICAgIGlmIChwcmVtdWx0aXBseUFscGhhKCkpIHsKICAgICAgICAgICAg
ICAgICBmb3IgKGludCB4ID0gMDsgeCA8IHdpZHRoOyArK3gsIHBpeGVsICs9IDQpCiAgICAgICAg
ICAgICAgICAgICAgIHNldFBpeGVsUHJlbXVsdGlwbGllZFJHQkEoYWRkcmVzcysrLCBwaXhlbCwg
bm9uVHJpdmlhbEFscGhhTWFzayk7CiAgICAgICAgICAgICB9IGVsc2UgewpAQCAtNjYzLDggKzYx
Niw2IEBAIHZvaWQgUE5HSW1hZ2VEZWNvZGVyOjpyZWFkQ2h1bmtzKHBuZ191bmtub3duX2NodW5r
cCBjaHVuaykKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBtX2ZyYW1lQnVmZmVyQ2Fj
aGUucmVzaXplKG1fZnJhbWVDb3VudCk7Ci0gICAgICAgIGZvciAoYXV0byYgaW1hZ2VGcmFtZSA6
IG1fZnJhbWVCdWZmZXJDYWNoZSkKLSAgICAgICAgICAgIGltYWdlRnJhbWUuc2V0UHJlbXVsdGlw
bHlBbHBoYShtX3ByZW11bHRpcGx5QWxwaGEpOwogICAgIH0gZWxzZSBpZiAoIW1lbWNtcChjaHVu
ay0+bmFtZSwgImZjVEwiLCA0KSAmJiBjaHVuay0+c2l6ZSA9PSAyNikgewogICAgICAgICBpZiAo
bV9oYXNJbmZvICYmICFtX2lzQW5pbWF0ZWQpCiAgICAgICAgICAgICByZXR1cm47CkBAIC03MDYs
MTAgKzY1Nyw4IEBAIHZvaWQgUE5HSW1hZ2VEZWNvZGVyOjpyZWFkQ2h1bmtzKHBuZ191bmtub3du
X2NodW5rcCBjaHVuaykKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAg
IGlmIChtX2ZyYW1lQnVmZmVyQ2FjaGUuaXNFbXB0eSgpKSB7CisgICAgICAgIGlmIChtX2ZyYW1l
QnVmZmVyQ2FjaGUuaXNFbXB0eSgpKQogICAgICAgICAgICAgbV9mcmFtZUJ1ZmZlckNhY2hlLnJl
c2l6ZSgxKTsKLSAgICAgICAgICAgIG1fZnJhbWVCdWZmZXJDYWNoZVswXS5zZXRQcmVtdWx0aXBs
eUFscGhhKG1fcHJlbXVsdGlwbHlBbHBoYSk7Ci0gICAgICAgIH0KIAogICAgICAgICBpZiAobV9j
dXJyZW50RnJhbWUgPCBtX2ZyYW1lQnVmZmVyQ2FjaGUuc2l6ZSgpKSB7CiAgICAgICAgICAgICBJ
bWFnZUZyYW1lJiBidWZmZXIgPSBtX2ZyYW1lQnVmZmVyQ2FjaGVbbV9jdXJyZW50RnJhbWVdOwpA
QCAtODM0LDExICs3ODMsNiBAQCB2b2lkIFBOR0ltYWdlRGVjb2Rlcjo6aW5pdEZyYW1lQnVmZmVy
KHNpemVfdCBmcmFtZUluZGV4KQogICAgICAgICBmcmFtZVJlY3Quc2V0SGVpZ2h0KHNpemUoKS5o
ZWlnaHQoKSAtIG1feU9mZnNldCk7CiAKICAgICBJbWFnZUZyYW1lJiBidWZmZXIgPSBtX2ZyYW1l
QnVmZmVyQ2FjaGVbZnJhbWVJbmRleF07Ci0gICAgaW50IGxlZnQgPSB1cHBlckJvdW5kU2NhbGVk
WChmcmFtZVJlY3QueCgpKTsKLSAgICBpbnQgcmlnaHQgPSBsb3dlckJvdW5kU2NhbGVkWChmcmFt
ZVJlY3QubWF4WCgpLCBsZWZ0KTsKLSAgICBpbnQgdG9wID0gdXBwZXJCb3VuZFNjYWxlZFkoZnJh
bWVSZWN0LnkoKSk7Ci0gICAgaW50IGJvdHRvbSA9IGxvd2VyQm91bmRTY2FsZWRZKGZyYW1lUmVj
dC5tYXhZKCksIHRvcCk7Ci0gICAgYnVmZmVyLnNldE9yaWdpbmFsRnJhbWVSZWN0KEludFJlY3Qo
bGVmdCwgdG9wLCByaWdodCAtIGxlZnQsIGJvdHRvbSAtIHRvcCkpOwogCiAgICAgLy8gVGhlIHN0
YXJ0aW5nIHN0YXRlIGZvciB0aGlzIGZyYW1lIGRlcGVuZHMgb24gdGhlIHByZXZpb3VzIGZyYW1l
J3MKICAgICAvLyBkaXNwb3NhbCBtZXRob2QuCkBAIC04NjIsNyArODA2LDcgQEAgdm9pZCBQTkdJ
bWFnZURlY29kZXI6OmluaXRGcmFtZUJ1ZmZlcihzaXplX3QgZnJhbWVJbmRleCkKICAgICB9IGVs
c2UgewogICAgICAgICAvLyBXZSB3YW50IHRvIGNsZWFyIHRoZSBwcmV2aW91cyBmcmFtZSB0byB0
cmFuc3BhcmVudCwgd2l0aG91dAogICAgICAgICAvLyBhZmZlY3RpbmcgcGl4ZWxzIGluIHRoZSBp
bWFnZSBvdXRzaWRlIG9mIHRoZSBmcmFtZS4KLSAgICAgICAgY29uc3QgSW50UmVjdCYgcHJldlJl
Y3QgPSBwcmV2QnVmZmVyLT5vcmlnaW5hbEZyYW1lUmVjdCgpOworICAgICAgICBjb25zdCBJbnRS
ZWN0JiBwcmV2UmVjdCA9IHByZXZCdWZmZXItPnBpeGVscygpLT5yZWN0KCk7CiAgICAgICAgIGlm
ICghZnJhbWVJbmRleCB8fCBwcmV2UmVjdC5jb250YWlucyhJbnRSZWN0KEludFBvaW50KCksIHNj
YWxlZFNpemUoKSkpKSB7CiAgICAgICAgICAgICAvLyBDbGVhcmluZyB0aGUgZmlyc3QgZnJhbWUs
IG9yIGEgZnJhbWUgdGhlIHNpemUgb2YgdGhlIHdob2xlCiAgICAgICAgICAgICAvLyBpbWFnZSwg
cmVzdWx0cyBpbiBhIGNvbXBsZXRlbHkgZW1wdHkgaW1hZ2UuCkBAIC04NzMsNiArODE3LDEyIEBA
IHZvaWQgUE5HSW1hZ2VEZWNvZGVyOjppbml0RnJhbWVCdWZmZXIoc2l6ZV90IGZyYW1lSW5kZXgp
CiAgICAgICAgICAgICBidWZmZXIuemVyb0ZpbGxGcmFtZVJlY3QocHJldlJlY3QpOwogICAgICAg
ICB9CiAgICAgfQorICAgIAorICAgIGludCBsZWZ0ID0gdXBwZXJCb3VuZFNjYWxlZFgoZnJhbWVS
ZWN0LngoKSk7CisgICAgaW50IHJpZ2h0ID0gbG93ZXJCb3VuZFNjYWxlZFgoZnJhbWVSZWN0Lm1h
eFgoKSwgbGVmdCk7CisgICAgaW50IHRvcCA9IHVwcGVyQm91bmRTY2FsZWRZKGZyYW1lUmVjdC55
KCkpOworICAgIGludCBib3R0b20gPSBsb3dlckJvdW5kU2NhbGVkWShmcmFtZVJlY3QubWF4WSgp
LCB0b3ApOworICAgIGJ1ZmZlci5waXhlbHMoKS0+c2V0UmVjdChJbnRSZWN0KGxlZnQsIHRvcCwg
cmlnaHQgLSBsZWZ0LCBib3R0b20gLSB0b3ApKTsKIH0KIAogdm9pZCBQTkdJbWFnZURlY29kZXI6
OmZyYW1lQ29tcGxldGUoKQpAQCAtODg2LDcgKzgzNiw3IEBAIHZvaWQgUE5HSW1hZ2VEZWNvZGVy
OjpmcmFtZUNvbXBsZXRlKCkKICAgICBwbmdfYnl0ZXAgaW50ZXJsYWNlQnVmZmVyID0gbV9yZWFk
ZXItPmludGVybGFjZUJ1ZmZlcigpOwogCiAgICAgaWYgKG1fY3VycmVudEZyYW1lICYmIGludGVy
bGFjZUJ1ZmZlcikgewotICAgICAgICBjb25zdCBJbnRSZWN0JiByZWN0ID0gYnVmZmVyLm9yaWdp
bmFsRnJhbWVSZWN0KCk7CisgICAgICAgIGNvbnN0IEludFJlY3QmIHJlY3QgPSBidWZmZXIucGl4
ZWxzKCktPnJlY3QoKTsKICAgICAgICAgYm9vbCBoYXNBbHBoYSA9IG1fcmVhZGVyLT5oYXNBbHBo
YSgpOwogICAgICAgICB1bnNpZ25lZCBjb2xvckNoYW5uZWxzID0gaGFzQWxwaGEgPyA0IDogMzsK
ICAgICAgICAgYm9vbCBub25Ucml2aWFsQWxwaGEgPSBmYWxzZTsKQEAgLTg5Niw3ICs4NDYsNyBA
QCB2b2lkIFBOR0ltYWdlRGVjb2Rlcjo6ZnJhbWVDb21wbGV0ZSgpCiAjaWYgRU5BQkxFKElNQUdF
X0RFQ09ERVJfRE9XTl9TQU1QTElORykKICAgICAgICAgZm9yIChpbnQgeSA9IDA7IHkgPCByZWN0
Lm1heFkoKSAtIHJlY3QueSgpOyArK3kpIHsKICAgICAgICAgICAgIHBuZ19ieXRlcCByb3cgPSBp
bnRlcmxhY2VCdWZmZXIgKyAobV9zY2FsZWQgPyBtX3NjYWxlZFJvd3NbeV0gOiB5KSAqIGNvbG9y
Q2hhbm5lbHMgKiBzaXplKCkud2lkdGgoKTsKLSAgICAgICAgICAgIEltYWdlRnJhbWU6OlBpeGVs
RGF0YSogYWRkcmVzcyA9IGJ1ZmZlci5nZXRBZGRyKHJlY3QueCgpLCB5ICsgcmVjdC55KCkpOwor
ICAgICAgICAgICAgUkdCQTMyKiBhZGRyZXNzID0gYnVmZmVyLmdldEFkZHIocmVjdC54KCksIHkg
KyByZWN0LnkoKSk7CiAgICAgICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IHJlY3QubWF4WCgp
IC0gcmVjdC54KCk7ICsreCkgewogICAgICAgICAgICAgICAgIHBuZ19ieXRlcCBwaXhlbCA9IHJv
dyArIChtX3NjYWxlZCA/IG1fc2NhbGVkQ29sdW1uc1t4XSA6IHgpICogY29sb3JDaGFubmVsczsK
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBhbHBoYSA9IGhhc0FscGhhID8gcGl4ZWxbM10gOiAy
NTU7CkBAIC05MTIsNyArODYyLDcgQEAgdm9pZCBQTkdJbWFnZURlY29kZXI6OmZyYW1lQ29tcGxl
dGUoKQogICAgICAgICBwbmdfYnl0ZXAgcm93ID0gaW50ZXJsYWNlQnVmZmVyOwogICAgICAgICBm
b3IgKGludCB5ID0gcmVjdC55KCk7IHkgPCByZWN0Lm1heFkoKTsgKyt5LCByb3cgKz0gY29sb3JD
aGFubmVscyAqIHNpemUoKS53aWR0aCgpKSB7CiAgICAgICAgICAgICBwbmdfYnl0ZXAgcGl4ZWwg
PSByb3c7Ci0gICAgICAgICAgICBJbWFnZUZyYW1lOjpQaXhlbERhdGEqIGFkZHJlc3MgPSBidWZm
ZXIuZ2V0QWRkcihyZWN0LngoKSwgeSk7CisgICAgICAgICAgICBSR0JBMzIqIGFkZHJlc3MgPSBi
dWZmZXIuZ2V0QWRkcihyZWN0LngoKSwgeSk7CiAgICAgICAgICAgICBmb3IgKGludCB4ID0gcmVj
dC54KCk7IHggPCByZWN0Lm1heFgoKTsgKyt4LCBwaXhlbCArPSBjb2xvckNoYW5uZWxzKSB7CiAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgYWxwaGEgPSBoYXNBbHBoYSA/IHBpeGVsWzNdIDogMjU1
OwogICAgICAgICAgICAgICAgIG5vblRyaXZpYWxBbHBoYSB8PSBhbHBoYSA8IDI1NTsKQEAgLTky
NSw3ICs4NzUsNyBAQCB2b2lkIFBOR0ltYWdlRGVjb2Rlcjo6ZnJhbWVDb21wbGV0ZSgpCiAjZW5k
aWYKIAogICAgICAgICBpZiAoIW5vblRyaXZpYWxBbHBoYSkgewotICAgICAgICAgICAgaWYgKGJ1
ZmZlci5vcmlnaW5hbEZyYW1lUmVjdCgpLmNvbnRhaW5zKEludFJlY3QoSW50UG9pbnQoKSwgc2Nh
bGVkU2l6ZSgpKSkpCisgICAgICAgICAgICBpZiAoYnVmZmVyLnBpeGVscygpLT5yZWN0KCkuY29u
dGFpbnMoSW50UmVjdChJbnRQb2ludCgpLCBzY2FsZWRTaXplKCkpKSkKICAgICAgICAgICAgICAg
ICBidWZmZXIuc2V0SGFzQWxwaGEoZmFsc2UpOwogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAg
ICAgICAgICAgc2l6ZV90IGZyYW1lSW5kZXggPSBtX2N1cnJlbnRGcmFtZTsKQEAgLTkzMyw3ICs4
ODMsNyBAQCB2b2lkIFBOR0ltYWdlRGVjb2Rlcjo6ZnJhbWVDb21wbGV0ZSgpCiAgICAgICAgICAg
ICAgICAgd2hpbGUgKGZyYW1lSW5kZXggJiYgKHByZXZCdWZmZXItPmRpc3Bvc2FsTWV0aG9kKCkg
PT0gSW1hZ2VGcmFtZTo6RGlzcG9zZU92ZXJ3cml0ZVByZXZpb3VzKSkKICAgICAgICAgICAgICAg
ICAgICAgcHJldkJ1ZmZlciA9ICZtX2ZyYW1lQnVmZmVyQ2FjaGVbLS1mcmFtZUluZGV4XTsKICAg
ICAgICAgICAgICAgICBpZiAoKHByZXZCdWZmZXItPmRpc3Bvc2FsTWV0aG9kKCkgPT0gSW1hZ2VG
cmFtZTo6RGlzcG9zZU92ZXJ3cml0ZUJnY29sb3IpCi0gICAgICAgICAgICAgICAgICAgICYmICFw
cmV2QnVmZmVyLT5oYXNBbHBoYSgpICYmIGJ1ZmZlci5vcmlnaW5hbEZyYW1lUmVjdCgpLmNvbnRh
aW5zKHByZXZCdWZmZXItPm9yaWdpbmFsRnJhbWVSZWN0KCkpKQorICAgICAgICAgICAgICAgICAg
ICAmJiAhcHJldkJ1ZmZlci0+aGFzQWxwaGEoKSAmJiBidWZmZXIucGl4ZWxzKCktPnJlY3QoKS5j
b250YWlucyhwcmV2QnVmZmVyLT5waXhlbHMoKS0+cmVjdCgpKSkKICAgICAgICAgICAgICAgICAg
ICAgYnVmZmVyLnNldEhhc0FscGhhKGZhbHNlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBl
bHNlIGlmICghbV9ibGVuZCAmJiAhYnVmZmVyLmhhc0FscGhhKCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNv
ZGVyLmgKaW5kZXggMDVmYzc0YjZkZTIxNGQwNDE0YTgyYjQxODY5Mzc3NjJkMWE1ZTU1Yi4uOTg3
NDI0NjE5MDg4ZGUxN2ZjZDYzZGM4NmY1Yjk1MTc4N2NiNGRlYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURl
Y29kZXIuaApAQCAtNDgsNyArNDgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGlu
dCByZXBldGl0aW9uQ291bnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3BsYXlDb3VudC0x
OyB9CiAjZW5kaWYKICAgICAgICAgYm9vbCBpc1NpemVBdmFpbGFibGUoKSBvdmVycmlkZTsKLSAg
ICAgICAgYm9vbCBzZXRTaXplKHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQpIG92ZXJy
aWRlOworICAgICAgICBib29sIHNldFNpemUoY29uc3QgSW50U2l6ZSYpIG92ZXJyaWRlOwogICAg
ICAgICBJbWFnZUZyYW1lKiBmcmFtZUJ1ZmZlckF0SW5kZXgoc2l6ZV90IGluZGV4KSBvdmVycmlk
ZTsKICAgICAgICAgLy8gQ0FVVElPTjogc2V0RmFpbGVkKCkgZGVsZXRlcyB8bV9yZWFkZXJ8LiAg
QmUgY2FyZWZ1bCB0byBhdm9pZAogICAgICAgICAvLyBhY2Nlc3NpbmcgZGVsZXRlZCBtZW1vcnks
IGVzcGVjaWFsbHkgd2hlbiBjYWxsaW5nIHRoaXMgZnJvbSBpbnNpZGUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJ
bWFnZURlY29kZXIuY3BwCmluZGV4IDEyNGExYjJmMTk5N2ZlNjc4YzYxYjUyZjMwNThkYjRkNmI4
ODY3OWEuLjE1OTYwNGMzODNmMzJkZTU2MDNkNDcwZGFkZmQxOTdiYjNlZGIzOWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdl
RGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
d2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcApAQCAtNzgsMTAgKzc4LDggQEAgSW1hZ2VGcmFtZSog
V0VCUEltYWdlRGVjb2Rlcjo6ZnJhbWVCdWZmZXJBdEluZGV4KHNpemVfdCBpbmRleCkKICAgICBp
ZiAoaW5kZXgpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgaWYgKG1fZnJhbWVCdWZmZXJDYWNo
ZS5pc0VtcHR5KCkpIHsKKyAgICBpZiAobV9mcmFtZUJ1ZmZlckNhY2hlLmlzRW1wdHkoKSkKICAg
ICAgICAgbV9mcmFtZUJ1ZmZlckNhY2hlLnJlc2l6ZSgxKTsKLSAgICAgICAgbV9mcmFtZUJ1ZmZl
ckNhY2hlWzBdLnNldFByZW11bHRpcGx5QWxwaGEobV9wcmVtdWx0aXBseUFscGhhKTsKLSAgICB9
CiAKICAgICBJbWFnZUZyYW1lJiBmcmFtZSA9IG1fZnJhbWVCdWZmZXJDYWNoZVswXTsKICAgICBp
ZiAoZnJhbWUuc3RhdHVzKCkgIT0gSW1hZ2VGcmFtZTo6RnJhbWVDb21wbGV0ZSkKQEAgLTExNSw3
ICsxMTMsNyBAQCBib29sIFdFQlBJbWFnZURlY29kZXI6OmRlY29kZShib29sIG9ubHlTaXplKQog
ICAgICAgICAgICAgcmV0dXJuIHNldEZhaWxlZCgpOwogICAgICAgICBtX2hhc0FscGhhID0gZmFs
c2U7CiAjZW5kaWYKLSAgICAgICAgaWYgKCFzZXRTaXplKHdpZHRoLCBoZWlnaHQpKQorICAgICAg
ICBpZiAoIXNldFNpemUoSW50U2l6ZSh3aWR0aCwgaGVpZ2h0KSkpCiAgICAgICAgICAgICByZXR1
cm4gc2V0RmFpbGVkKCk7CiAgICAgfQogCkBAIC0xMjgsMTggKzEyNiwxNyBAQCBib29sIFdFQlBJ
bWFnZURlY29kZXI6OmRlY29kZShib29sIG9ubHlTaXplKQogICAgIEFTU0VSVChidWZmZXIuc3Rh
dHVzKCkgIT0gSW1hZ2VGcmFtZTo6RnJhbWVDb21wbGV0ZSk7CiAKICAgICBpZiAoYnVmZmVyLnN0
YXR1cygpID09IEltYWdlRnJhbWU6OkZyYW1lRW1wdHkpIHsKLSAgICAgICAgaWYgKCFidWZmZXIu
c2V0U2l6ZShzaXplKCkud2lkdGgoKSwgc2l6ZSgpLmhlaWdodCgpKSkKKyAgICAgICAgaWYgKCFi
dWZmZXIuc2V0U2l6ZShzaXplKCksIHByZW11bHRpcGx5QWxwaGEoKSkpCiAgICAgICAgICAgICBy
ZXR1cm4gc2V0RmFpbGVkKCk7CiAgICAgICAgIGJ1ZmZlci5zZXRTdGF0dXMoSW1hZ2VGcmFtZTo6
RnJhbWVQYXJ0aWFsKTsKICAgICAgICAgYnVmZmVyLnNldEhhc0FscGhhKG1faGFzQWxwaGEpOwot
ICAgICAgICBidWZmZXIuc2V0T3JpZ2luYWxGcmFtZVJlY3QoSW50UmVjdChJbnRQb2ludCgpLCBz
aXplKCkpKTsKICAgICB9CiAKICAgICBpZiAoIW1fZGVjb2RlcikgewogICAgICAgICBXRUJQX0NT
UF9NT0RFIG1vZGUgPSBvdXRwdXRNb2RlKG1faGFzQWxwaGEpOwotICAgICAgICBpZiAoIW1fcHJl
bXVsdGlwbHlBbHBoYSkKKyAgICAgICAgaWYgKCFwcmVtdWx0aXBseUFscGhhKCkpCiAgICAgICAg
ICAgICBtb2RlID0gb3V0cHV0TW9kZShmYWxzZSk7Ci0gICAgICAgIGludCByb3dTdHJpZGUgPSBz
aXplKCkud2lkdGgoKSAqIHNpemVvZihJbWFnZUZyYW1lOjpQaXhlbERhdGEpOworICAgICAgICBp
bnQgcm93U3RyaWRlID0gc2l6ZSgpLndpZHRoKCkgKiBzaXplb2YoUkdCQTMyKTsKICAgICAgICAg
dWludDhfdCogb3V0cHV0ID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oYnVmZmVyLmdldEFk
ZHIoMCwgMCkpOwogICAgICAgICBpbnQgb3V0cHV0U2l6ZSA9IHNpemUoKS5oZWlnaHQoKSAqIHJv
d1N0cmlkZTsKICAgICAgICAgbV9kZWNvZGVyID0gV2ViUElOZXdSR0IobW9kZSwgb3V0cHV0LCBv
dXRwdXRTaXplLCByb3dTdHJpZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNl
TWFjLm1tCmluZGV4IDIxNmNkMDkzZjI2NDY3Y2JhODhhNDNmNjkzYWJmNGNmNTFkZDFhNGQuLmQx
MTQ1NGIwNWVmODg5OTNhNjI4OTM4OTZiYzBjMTE3MjhjNWVkNTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJj
ZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9j
a1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMubW0KQEAgLTg3LDcgKzg3LDcgQEAgdm9pZCBNb2NrUmVh
bHRpbWVWaWRlb1NvdXJjZU1hYzo6dXBkYXRlUGxhdGZvcm1MYXllcigpIGNvbnN0CiAgICAgICAg
IGlmICghaW1hZ2UpCiAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICBtX3ByZXZpZXdJbWFn
ZSA9IGltYWdlLT5nZXRDR0ltYWdlUmVmKCk7CisgICAgICAgIG1fcHJldmlld0ltYWdlID0gaW1h
Z2UtPm5hdGl2ZUltYWdlKCk7CiAgICAgICAgIGlmICghbV9wcmV2aWV3SW1hZ2UpCiAgICAgICAg
ICAgICBicmVhazsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0Ry
YWdJbWFnZUNHV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VD
R1dpbi5jcHAKaW5kZXggMzZjZDY1MTZlODBmMTc0OGJmZWFiNzdhOTMwMjcxYzEyMWRlODAxOS4u
NGI0ZTM3NzllOTZmNzhjNjU0MGE1M2M0NDc4YzNiZmQ5MzVmNTNlOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZUNHV2luLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ0dXaW4uY3BwCkBAIC0xMzYsOSArMTM2LDkg
QEAgRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZShJbWFnZSogaW1nLCBJbWFn
ZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pCiAgICAgQ0dDb250ZXh0U2NhbGVDVE0oZHJhd0NvbnRl
eHQsIDEsIC0xKTsKICAgICBDR0NvbnRleHRTZXRGaWxsQ29sb3IoZHJhd0NvbnRleHQsIHdoaXRl
KTsKICAgICBDR0NvbnRleHRGaWxsUmVjdChkcmF3Q29udGV4dCwgcmVjdCk7Ci0gICAgaWYgKGF1
dG8gc3JjSW1hZ2UgPSBpbWctPmdldENHSW1hZ2VSZWYoKSkgeworICAgIGlmIChhdXRvIHNyY0lt
YWdlID0gaW1nLT5uYXRpdmVJbWFnZSgpKSB7CiAgICAgICAgIENHQ29udGV4dFNldEJsZW5kTW9k
ZShkcmF3Q29udGV4dCwga0NHQmxlbmRNb2RlTm9ybWFsKTsKLSAgICAgICAgQ0dDb250ZXh0RHJh
d0ltYWdlKGRyYXdDb250ZXh0LCByZWN0LCBzcmNJbWFnZSk7CisgICAgICAgIENHQ29udGV4dERy
YXdJbWFnZShkcmF3Q29udGV4dCwgcmVjdCwgc3JjSW1hZ2UuZ2V0KCkpOwogICAgIH0KICAgICBD
R0NvbnRleHRSZWxlYXNlKGRyYXdDb250ZXh0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9tYWMvTWlzYy9XZWJDYWNoZS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViQ2FjaGUu
bW0KaW5kZXggYjY1OWQ2ZGJmOWFkNjk5OWMzYWM5NjJkZTk1MTU3ODA5N2UxZjNiMS4uN2M1ZWQy
MTBkZGIyYTMyYTc2NjY3NGMxMjBkOTk0YzJmYTQ3ZTdmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9tYWMvTWlzYy9XZWJDYWNoZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dl
YkNhY2hlLm1tCkBAIC0yMDQsNyArMjA0LDcgQEAgKyAoQ0dJbWFnZVJlZilpbWFnZUZvclVSTDoo
TlNVUkwgKil1cmwKICAgICBXZWJDb3JlOjpDYWNoZWRJbWFnZSYgY2FjaGVkSW1hZ2UgPSBkb3du
Y2FzdDxXZWJDb3JlOjpDYWNoZWRJbWFnZT4oKmNhY2hlZFJlc291cmNlKTsKICAgICBpZiAoIWNh
Y2hlZEltYWdlLmhhc0ltYWdlKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVy
biBjYWNoZWRJbWFnZS5pbWFnZSgpLT5nZXRDR0ltYWdlUmVmKCk7CisgICAgcmV0dXJuIGNhY2hl
ZEltYWdlLmltYWdlKCktPm5hdGl2ZUltYWdlKCkuZ2V0KCk7CiB9CiAKICNlbmRpZiAvLyBQTEFU
Rk9STShJT1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvY2cv
V0tJY29uRGF0YWJhc2VDRy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvY2cv
V0tJY29uRGF0YWJhc2VDRy5jcHAKaW5kZXggMGY2ZGU3YTE0NmE2MTFhNTJhYTFlNTM5MDE5ZmE2
YzFjNDY3MjVhZS4uMzA1NjMzNmNiNjZmZTRhZjE4YmRjNTI5YWNhMmY4ZmM4ODFkZmU1NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2NnL1dLSWNvbkRhdGFiYXNl
Q0cuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9jZy9XS0ljb25EYXRh
YmFzZUNHLmNwcApAQCAtMzcsMTIgKzM3LDIzIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
Q0dJbWFnZVJlZiBXS0ljb25EYXRhYmFzZVRyeUdldENHSW1hZ2VGb3JVUkwoV0tJY29uRGF0YWJh
c2VSZWYgaWNvbkRhdGFiYXNlUmVmLCBXS1VSTFJlZiB1cmxSZWYsIFdLU2l6ZSBzaXplKQogewog
ICAgIEltYWdlKiBpbWFnZSA9IHRvSW1wbChpY29uRGF0YWJhc2VSZWYpLT5pbWFnZUZvclBhZ2VV
UkwodG9XVEZTdHJpbmcodXJsUmVmKSk7Ci0gICAgcmV0dXJuIGltYWdlID8gaW1hZ2UtPmdldEZp
cnN0Q0dJbWFnZVJlZk9mU2l6ZShJbnRTaXplKHN0YXRpY19jYXN0PGludD4oc2l6ZS53aWR0aCks
IHN0YXRpY19jYXN0PGludD4oc2l6ZS5oZWlnaHQpKSkgOiAwOworICAgIHJldHVybiBpbWFnZSA/
IGltYWdlLT5uYXRpdmVJbWFnZU9mU2l6ZShJbnRTaXplKHN0YXRpY19jYXN0PGludD4oc2l6ZS53
aWR0aCksIHN0YXRpY19jYXN0PGludD4oc2l6ZS5oZWlnaHQpKSkuZ2V0KCkgOiBudWxscHRyOwog
fQogCiBDRkFycmF5UmVmIFdLSWNvbkRhdGFiYXNlVHJ5Q29weUNHSW1hZ2VBcnJheUZvclVSTChX
S0ljb25EYXRhYmFzZVJlZiBpY29uRGF0YWJhc2VSZWYsIFdLVVJMUmVmIHVybFJlZikKIHsKICAg
ICBJbWFnZSogaW1hZ2UgPSB0b0ltcGwoaWNvbkRhdGFiYXNlUmVmKS0+aW1hZ2VGb3JQYWdlVVJM
KHRvV1RGU3RyaW5nKHVybFJlZikpOwotICAgIHJldHVybiBpbWFnZSA/IGltYWdlLT5nZXRDR0lt
YWdlQXJyYXkoKS5sZWFrUmVmKCkgOiAwOworICAgIGlmICghaW1hZ2UpCisgICAgICAgIHJldHVy
biBudWxscHRyOworCisgICAgYXV0byBuYXRpdmVJbWFnZXMgPSBpbWFnZS0+ZnJhbWVzTmF0aXZl
SW1hZ2VzKCk7CisgICAgaWYgKCFuYXRpdmVJbWFnZXMuc2l6ZSgpKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICAKKyAgICBDRk11dGFibGVBcnJheVJlZiBhcnJheSA9IENGQXJyYXlDcmVh
dGVNdXRhYmxlKG51bGxwdHIsIG5hdGl2ZUltYWdlcy5zaXplKCksICZrQ0ZUeXBlQXJyYXlDYWxs
QmFja3MpOworICAgIGZvciAoYXV0byBuYXRpdmVJbWFnZSA6IG5hdGl2ZUltYWdlcykKKyAgICAg
ICAgQ0ZBcnJheUFwcGVuZFZhbHVlKGFycmF5LCBuYXRpdmVJbWFnZS5nZXQoKSk7CisgICAgCisg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PENGQXJyYXlSZWY+KENGUmV0YWluKGFycmF5KSk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0lu
dGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3
SW50ZXJhY3Rpb24ubW0KaW5kZXggZGM3OTgzYWI5ODhjMmQwNGExNzMwZWUxMzczMDNjMjQ0MTYx
NTE5Ny4uZmJjM2U1ZDRjNTQzMDFjZTkyMTdhNDBmOGQwOGJkNTgzNTI3ODdjNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
bW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJh
Y3Rpb24ubW0KQEAgLTQwNzEsNyArNDA3MSw3IEBAIC0gKFVJSW1hZ2UgKilfcHJlc2VudGF0aW9u
U25hcHNob3RGb3JQcmV2aWV3SXRlbUNvbnRyb2xsZXI6KFVJUHJldmlld0l0ZW1Db250cm9sCiB7
CiAgICAgaWYgKCFfcG9zaXRpb25JbmZvcm1hdGlvbi5saW5rSW5kaWNhdG9yLmNvbnRlbnRJbWFn
ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFtbW1VJSW1hZ2UgYWxsb2Nd
IGluaXRXaXRoQ0dJbWFnZTpfcG9zaXRpb25JbmZvcm1hdGlvbi5saW5rSW5kaWNhdG9yLmNvbnRl
bnRJbWFnZS0+Z2V0Q0dJbWFnZVJlZigpXSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIFtbW1VJ
SW1hZ2UgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTpfcG9zaXRpb25JbmZvcm1hdGlvbi5saW5rSW5k
aWNhdG9yLmNvbnRlbnRJbWFnZS0+bmF0aXZlSW1hZ2UoKS5nZXQoKV0gYXV0b3JlbGVhc2VdOwog
fQogCiAtIChOU0FycmF5ICopX3ByZXNlbnRhdGlvblJlY3RzRm9yUHJldmlld0l0ZW1Db250cm9s
bGVyOihVSVByZXZpZXdJdGVtQ29udHJvbGxlciAqKWNvbnRyb2xsZXIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCA5YTMzZjdjYzdk
YzdjN2Q3MmY5ZGE3NDMwOThiN2RiY2E4MjQwOWNmLi5hNTMyNTEwNjc4YjlmNTM1MTQ1OGEzOGE5
ZjQyMzM3NDdkMDM1ZjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblZpZXcuY3BwCkBAIC0xNzI3LDY5ICsxNzI3LDYgQEAgdm9pZCBQbHVnaW5WaWV3
Ojp3aW5kb3dlZFBsdWdpblZpc2liaWxpdHlEaWRDaGFuZ2UoYm9vbCBpc1Zpc2libGUsIHVpbnQ2
NF90IHdpbmQKIH0KICNlbmRpZgogCi0jaWYgUExBVEZPUk0oQ09DT0EpCi1zdGF0aWMgYm9vbCBp
c0FsbW9zdFNvbGlkQ29sb3IoQml0bWFwSW1hZ2UqIGJpdG1hcCkKLXsKLSAgICBDR0ltYWdlUmVm
IGltYWdlID0gYml0bWFwLT5nZXRDR0ltYWdlUmVmKCk7Ci0gICAgQVNTRVJUKENHSW1hZ2VHZXRC
aXRzUGVyQ29tcG9uZW50KGltYWdlKSA9PSA4KTsKLQotICAgIENHQml0bWFwSW5mbyBpbWFnZUlu
Zm8gPSBDR0ltYWdlR2V0Qml0bWFwSW5mbyhpbWFnZSk7Ci0gICAgaWYgKCEoaW1hZ2VJbmZvICYg
a0NHQml0bWFwQnl0ZU9yZGVyMzJMaXR0bGUpIHx8IChpbWFnZUluZm8gJiBrQ0dCaXRtYXBBbHBo
YUluZm9NYXNrKSAhPSBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0KSB7Ci0gICAgICAg
IC8vIEZJWE1FOiBDb25zaWRlciBiZWluZyBhYmxlIHRvIGhhbmRsZSBvdGhlciBwaXhlbCBmb3Jt
YXRzLgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIH0KLQotICAgIHNpemVfdCB3aWR0aCA9IENHSW1hZ2VHZXRXaWR0aChpbWFnZSk7Ci0g
ICAgc2l6ZV90IGhlaWdodCA9IENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UpOwotICAgIHNpemVfdCBi
eXRlc1BlclJvdyA9IENHSW1hZ2VHZXRCeXRlc1BlclJvdyhpbWFnZSk7Ci0KLSAgICBSZXRhaW5Q
dHI8Q0ZEYXRhUmVmPiBwcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDb3B5RGF0YShD
R0ltYWdlR2V0RGF0YVByb3ZpZGVyKGltYWdlKSkpOwotICAgIGNvbnN0IFVJbnQ4KiBkYXRhID0g
Q0ZEYXRhR2V0Qnl0ZVB0cihwcm92aWRlci5nZXQoKSk7Ci0KLSAgICAvLyBPdmVybGF5IGEgZ3Jp
ZCBvZiBzYW1wbGluZyBkb3RzIG9uIHRvcCBvZiBhIGdyYXlzY2FsZSB2ZXJzaW9uIG9mIHRoZSBp
bWFnZS4KLSAgICAvLyBGb3IgdGhlIGludGVyaW9yIHBvaW50cywgY2FsY3VsYXRlIHRoZSBkaWZm
ZXJlbmNlIGluIGx1bWluYW5jZSBhbW9uZyB0aGUgc2FtcGxlIHBvaW50Ci0gICAgLy8gYW5kIGl0
cyBzdXJyb3VuZHMgcG9pbnRzLCBzY2FsZWQgYnkgdHJhbnNwYXJlbmN5LgotICAgIGNvbnN0IHVu
c2lnbmVkIHNhbXBsZVJvd3MgPSA3OwotICAgIGNvbnN0IHVuc2lnbmVkIHNhbXBsZUNvbHMgPSA3
OwotICAgIC8vIEZJWE1FOiBSZWZpbmUgdGhlIHByb3BlciBudW1iZXIgb2Ygc2FtcGxlcywgYW5k
IGFjY29tbW9kYXRlIGRpZmZlcmVudCBhc3BlY3QgcmF0aW9zLgotICAgIGlmICh3aWR0aCA8IHNh
bXBsZUNvbHMgfHwgaGVpZ2h0IDwgc2FtcGxlUm93cykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
Ci0gICAgLy8gRW5zdXJlIHRoYXQgdGhlIGxhc3Qgcm93L2NvbHVtbiBsYW5kIG9uIHRoZSBpbWFn
ZSBwZXJpbWV0ZXIuCi0gICAgY29uc3QgZmxvYXQgc3RyaWRlV2lkdGggPSBzdGF0aWNfY2FzdDxm
bG9hdD4od2lkdGggLSAxKSAvIChzYW1wbGVDb2xzIC0gMSk7Ci0gICAgY29uc3QgZmxvYXQgc3Ry
aWRlSGVpZ2h0ID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGhlaWdodCAtIDEpIC8gKHNhbXBsZVJvd3Mg
LSAxKTsKLSAgICBmbG9hdCBzYW1wbGVzW3NhbXBsZVJvd3NdW3NhbXBsZUNvbHNdOwotCi0gICAg
Ly8gRmluZCB0aGUgbHVtaW5hbmNlIG9mIHRoZSBzYW1wbGUgcG9pbnRzLgotICAgIGZsb2F0IHkg
PSAwOwotICAgIGNvbnN0IFVJbnQ4KiByb3cgPSBkYXRhOwotICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBzYW1wbGVSb3dzOyArK2kpIHsKLSAgICAgICAgZmxvYXQgeCA9IDA7Ci0gICAgICAg
IGZvciAodW5zaWduZWQgaiA9IDA7IGogPCBzYW1wbGVDb2xzOyArK2opIHsKLSAgICAgICAgICAg
IGNvbnN0IFVJbnQ4KiBwMCA9IHJvdyArIChzdGF0aWNfY2FzdDxpbnQ+KHggKyAuNSkpICogNDsK
LSAgICAgICAgICAgIC8vIFIgRyBCIEEKLSAgICAgICAgICAgIHNhbXBsZXNbaV1bal0gPSAoMC4y
MTI1ICogKnAwICsgMC43MTU0ICogKihwMCsxKSArIDAuMDcyMSAqICoocDArMikpICogKihwMCsz
KSAvIDI1NTsKLSAgICAgICAgICAgIHggKz0gc3RyaWRlV2lkdGg7Ci0gICAgICAgIH0KLSAgICAg
ICAgeSArPSBzdHJpZGVIZWlnaHQ7Ci0gICAgICAgIHJvdyA9IGRhdGEgKyAoc3RhdGljX2Nhc3Q8
aW50Pih5ICsgLjUpKSAqIGJ5dGVzUGVyUm93OwotICAgIH0KLQotICAgIC8vIERldGVybWluZSB0
aGUgaW1hZ2Ugc2NvcmUuCi0gICAgZmxvYXQgYWNjdW1TY29yZSA9IDA7Ci0gICAgZm9yICh1bnNp
Z25lZCBpID0gMTsgaSA8IHNhbXBsZVJvd3MgLSAxOyArK2kpIHsKLSAgICAgICAgZm9yICh1bnNp
Z25lZCBqID0gMTsgaiA8IHNhbXBsZUNvbHMgLSAxOyArK2opIHsKLSAgICAgICAgICAgIGZsb2F0
IGRpZmYgPSBzYW1wbGVzW2kgLSAxXVtqXSArIHNhbXBsZXNbaSArIDFdW2pdICsgc2FtcGxlc1tp
XVtqIC0gMV0gKyBzYW1wbGVzW2ldW2ogKyAxXSAtIDQgKiBzYW1wbGVzW2ldW2pdOwotICAgICAg
ICAgICAgYWNjdW1TY29yZSArPSBkaWZmICogZGlmZjsKLSAgICAgICAgfQotICAgIH0KLQotICAg
IC8vIFRoZSBzY29yZSBmb3IgYSBnaXZlbiBzYW1wbGUgY2FuIGJlIHdpdGhpbiB0aGUgcmFuZ2Ug
b2YgMCBhbmQgMjU1XjIuCi0gICAgcmV0dXJuIGFjY3VtU2NvcmUgPCAyNTAwICogKHNhbXBsZVJv
d3MgLSAyKSAqIChzYW1wbGVDb2xzIC0gMik7Ci19Ci0jZW5kaWYKLQogdm9pZCBQbHVnaW5WaWV3
OjpwbHVnaW5TbmFwc2hvdFRpbWVyRmlyZWQoKQogewogI2lmIEVOQUJMRShQUklNQVJZX1NOQVBT
SE9UVEVEX1BMVUdJTl9IRVVSSVNUSUMpCkBAIC0xODA5LDcgKzE3NDYsNyBAQCB2b2lkIFBsdWdp
blZpZXc6OnBsdWdpblNuYXBzaG90VGltZXJGaXJlZCgpCiAKICAgICAgICAgaWYgKHNuYXBzaG90
SW1hZ2UpIHsKICNpZiBFTkFCTEUoUFJJTUFSWV9TTkFQU0hPVFRFRF9QTFVHSU5fSEVVUklTVElD
KQotICAgICAgICAgICAgYm9vbCBzbmFwc2hvdElzQWxtb3N0U29saWRDb2xvciA9IGlzQWxtb3N0
U29saWRDb2xvcihkb3duY2FzdDxCaXRtYXBJbWFnZT4oc25hcHNob3RJbWFnZS5nZXQoKSkpOwor
ICAgICAgICAgICAgYm9vbCBzbmFwc2hvdElzQWxtb3N0U29saWRDb2xvciA9IHN0YXRpY19wb2lu
dGVyX2Nhc3Q8Qml0bWFwSW1hZ2U+KHNuYXBzaG90SW1hZ2UpLT5pc0FsbW9zdFNvbGlkQ29sb3Io
KTsKICAgICAgICAgICAgIHNuYXBzaG90Rm91bmQgPSAhc25hcHNob3RJc0FsbW9zdFNvbGlkQ29s
b3I7CiAjZW5kaWYKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>283578</attachid>
            <date>2016-07-13 15:20:04 -0700</date>
            <delta_ts>2016-07-13 15:31:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159721-20160713151919.patch</filename>
            <type>text/plain</type>
            <size>176030</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzMTc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDQ0NWVjM2I5YjY1NzYy
OGNlYTM4MTkyYzdkMDJlN2YwMjIyNzRmOS4uMWE3NjVhOGMwNjFiZGE2MWJmM2NmOGU2ZDlmMGU2
NmJmZDdiNDU4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3NSBAQAorMjAxNi0wNy0xMyAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorIAorICAgICAgICBHZXQg
cmlkIG9mIHRoZSBtX3ByZW11bHRpcGx5QWxwaGEgZmxhZyBvZiB0aGUgSW1hZ2VGcmFtZSBjbGFz
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5NzIx
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBm
bGFnIHdhcyBvbmx5IG5lZWRlZCB3aGVuIGNhbGxpbmcgQml0bWFwUGl4ZWxzOjpzZXRTaXplKCku
IEluc3RlYWQKKyAgICAgICAgd2UgY2FuIHBhc3MgdGhlIEltYWdlRGVjb2Rlcjo6bV9wcmVtdWx0
aXBseUFscGhhIHRvIEltYWdlRnJhbWU6OnNldFNpemUoKQorICAgICAgICB3aGljaCB3aWxsIHBh
c3MgaXQgdG8gQml0bWFwUGl4ZWxzOjpzZXRTaXplKCkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VG
cmFtZTo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OmNvcHlCaXRt
YXBEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6c2V0U2l6ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZURlY29kZXI6OmlzT3ZlclNpemUpOgorICAgICAgICAqIHBsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Qk1QSW1hZ2VEZWNvZGVyOjpmcmFtZUJ1ZmZlckF0SW5kZXgpOiBEZWxldGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpCTVBJbWFnZVJlYWRlcjo6ZGVjb2RlQk1QKToKKyAgICAgICAgKFdlYkNvcmU6
OkJNUEltYWdlUmVhZGVyOjpwcm9jZXNzSW5mb0hlYWRlcik6CisgICAgICAgICogcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHSUZJbWFnZURlY29kZXI6OmluaXRGcmFtZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpH
SUZJbWFnZURlY29kZXI6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SUNPSW1hZ2VE
ZWNvZGVyOjpzZXRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OklDT0ltYWdlRGVjb2Rlcjo6ZnJh
bWVDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpJQ09JbWFnZURlY29kZXI6OnByb2Nlc3NEaXJl
Y3RvcnlFbnRyaWVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNP
SW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9K
UEVHSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpQRUdJbWFnZURlY29kZXI6
OnNldFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6SlBFR0ltYWdlRGVjb2Rlcjo6ZnJhbWVCdWZm
ZXJBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkpQRUdJbWFnZURlY29kZXI6Om91dHB1dFNj
YW5saW5lcyk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1h
Z2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0lt
YWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQTkdJbWFnZURlY29kZXI6OnNldFNp
emUpOgorICAgICAgICAoV2ViQ29yZTo6UE5HSW1hZ2VEZWNvZGVyOjpmcmFtZUJ1ZmZlckF0SW5k
ZXgpOgorICAgICAgICAoV2ViQ29yZTo6UE5HSW1hZ2VEZWNvZGVyOjpoZWFkZXJBdmFpbGFibGUp
OgorICAgICAgICAoV2ViQ29yZTo6UE5HSW1hZ2VEZWNvZGVyOjpyb3dBdmFpbGFibGUpOgorICAg
ICAgICAoV2ViQ29yZTo6UE5HSW1hZ2VEZWNvZGVyOjpyZWFkQ2h1bmtzKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICog
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OldFQlBJbWFnZURlY29kZXI6OmZyYW1lQnVmZmVyQXRJbmRleCk6CisgICAg
ICAgIChXZWJDb3JlOjpXRUJQSW1hZ2VEZWNvZGVyOjpkZWNvZGUpOgorCisyMDE2LTA3LTEzICBT
YWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgR2V0
IHJpZCBvZiB0aGUgY29sb3IgcHJvZmlsZSBmcm9tIEltYWdlRnJhbWUgYW5kIEltYWdlRGVjb2Rl
cgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5Njk5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VGcmFtZTo6c2V0Q29sb3JQcm9maWxlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6cmVhZENvbG9yUHJvZmlsZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpKUEVH
SW1hZ2VSZWFkZXI6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
anBlZy9KUEVHSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZWFkQ29sb3JQ
cm9maWxlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBOR0ltYWdlRGVjb2Rlcjo6aGVh
ZGVyQXZhaWxhYmxlKTogRGVsZXRlZC4KKworMjAxNi0wNy0xMyAgU2FpZCBBYm91LUhhbGxhd2Eg
IDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFNwbGl0IHRoZSBwaXhlbCBkYXRh
IG9mIEltYWdlRnJhbWUgdG8gYSBzZXBhcmF0ZSBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5Njc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSB0aGUgcGl4ZWwgZGF0YSBtYW5pcHVsYXRp
b24gcGFydCBpbiBJbWFnZUZyYW1lIGludG8gYSBzZXBhcmF0ZSBjbGFzcworICAgICAgICBhbmQg
dGhlbiBtYWtlIGl0IG9wdGlvbmFsIChhbGxvY2F0ZWQgb24gZGVtYW5kKS4KKworICAgICAgICAq
IENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFBsYXRmb3JtRWZsLmNtYWtlOgorICAgICAgICAq
IFBsYXRmb3JtR1RLLmNtYWtlOgorICAgICAgICAqIFBsYXRmb3JtV2luQ2Fpcm8uY21ha2U6Cisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0JpdG1hcFBpeGVscy5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkJpdG1hcFBpeGVsczo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFBpeGVsczo6
Qml0bWFwUGl4ZWxzKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFBpeGVsczo6d2lkdGgpOgor
ICAgICAgICAoV2ViQ29yZTo6Qml0bWFwUGl4ZWxzOjpoZWlnaHQpOgorICAgICAgICAoV2ViQ29y
ZTo6Qml0bWFwUGl4ZWxzOjpzZXRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFBpeGVs
czo6YXQpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwUGl4ZWxzOjpjbGVhcik6CisgICAgICAg
IChXZWJDb3JlOjpCaXRtYXBQaXhlbHM6OmNsZWFyUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpC
aXRtYXBQaXhlbHM6OnJlcGVhdEZpcnN0Um93KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFBp
eGVsczo6c2V0UkdCQSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBQaXhlbHM6Om92ZXJSR0JB
KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFBpeGVsczo6aW5Cb3VuZHMpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om11bHRpcGx5
MjU1KToKKyAgICAgICAgKFdlYkNvcmU6OmRpdmlkZTI1NSk6CisgICAgICAgIChXZWJDb3JlOjpk
aXZpZGVDZWlsKToKKyAgICAgICAgKFdlYkNvcmU6OnByZW11bHRpcGxpZWRDaGFubmVsKToKKyAg
ICAgICAgKFdlYkNvcmU6OnVucHJlbXVsdGlwbGllZENoYW5uZWwpOgorICAgICAgICAoV2ViQ29y
ZTo6bWFrZVByZW11bHRpcGxpZWRSR0JBKToKKyAgICAgICAgKFdlYkNvcmU6Om1ha2VVblByZW11
bHRpcGxpZWRSR0JBKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVEYXRhLmg6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUZyYW1lRGF0YTo6cGl4ZWxzKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJh
bWVEYXRhOjpoYXNQaXhlbHMpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0lt
YWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpvcGVyYXRvcj0p
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6Y2xlYXJQaXhlbERhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6emVyb0ZpbGxQaXhlbERhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VGcmFtZTo6emVyb0ZpbGxGcmFtZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VGcmFtZTo6Y29weUJpdG1hcERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFt
ZTo6c2V0U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpjb3B5Um93TlRpbWVz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OmFzTmV3TmF0aXZlSW1hZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VGcmFtZTo6c2V0UkdCQSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZy
YW1lOjpnZXRBZGRyKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6Omhhc1BpeGVsRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpvdmVyUkdCQSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUZyYW1lOjp3aWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1l
OjpoZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6Y29weVJvd05UaW1lcyk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpmaXhQb2ludFVuc2lnbmVk
TXVsdGlwbHkpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6ZGl2aWRl
MjU1KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1Q
SW1hZ2VSZWFkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qk1QSW1hZ2VSZWFkZXI6OmRlY29k
ZUJNUCk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvY2Fpcm8vQml0bWFwUGl4
ZWxzQ2Fpcm8uY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvY2Fpcm8vSW1hZ2VEZWNvZGVyQ2Fpcm8uY3BwLgorICAgICAgICAoV2ViQ29yZTo6
Qml0bWFwUGl4ZWxzOjppbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
Z2lmL0dJRkltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHSUZJbWFnZURlY29k
ZXI6OmhhdmVEZWNvZGVkUm93KToKKyAgICAgICAgKFdlYkNvcmU6OkdJRkltYWdlRGVjb2Rlcjo6
ZnJhbWVDb21wbGV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHSUZJbWFnZURlY29kZXI6OmluaXRG
cmFtZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVH
SW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNldFBpeGVsKToKKyAgICAgICAg
KFdlYkNvcmU6OkpQRUdJbWFnZURlY29kZXI6Om91dHB1dFNjYW5saW5lcyk6CisgICAgICAgICog
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpzZXRQaXhlbFJHQik6CisgICAgICAgIChXZWJDb3JlOjpzZXRQaXhlbFJHQkEp
OgorICAgICAgICAoV2ViQ29yZTo6c2V0UGl4ZWxQcmVtdWx0aXBsaWVkUkdCQSk6CisgICAgICAg
IChXZWJDb3JlOjpQTkdJbWFnZURlY29kZXI6OnJvd0F2YWlsYWJsZSk6CisgICAgICAgIChXZWJD
b3JlOjpQTkdJbWFnZURlY29kZXI6OmluaXRGcmFtZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3Jl
OjpQTkdJbWFnZURlY29kZXI6OmZyYW1lQ29tcGxldGUpOgorICAgICAgICAqIHBsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXRUJQSW1hZ2VEZWNvZGVyOjpkZWNvZGUpOgorCisyMDE2LTA3LTEzICBTYWlkIEFib3UtSGFs
bGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgU3BsaXQgdGhlIHBpeGVs
IGRhdGEgb2YgSW1hZ2VGcmFtZSB0byBhIHNlcGFyYXRlIGNsYXNzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTk2NzkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIHRoZSBwaXhlbCBkYXRhIG1hbmlw
dWxhdGlvbiBwYXJ0IGluIEltYWdlRnJhbWUgaW50byBhIHNlcGFyYXRlIGNsYXNzCisgICAgICAg
IGFuZCB0aGVuIG1ha2UgaXQgb3B0aW9uYWwgKGFsbG9jYXRlZCBvbiBkZW1hbmQpLgorCisgICAg
ICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAg
ICAgICogUGxhdGZvcm1HVEsuY21ha2U6CisgICAgICAgICogUGxhdGZvcm1XaW5DYWlyby5jbWFr
ZToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwUGl4ZWxzLmg6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6Qml0bWFwUGl4ZWxzOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwUGl4
ZWxzOjpCaXRtYXBQaXhlbHMpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwUGl4ZWxzOjp3aWR0
aCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBQaXhlbHM6OmhlaWdodCk6CisgICAgICAgIChX
ZWJDb3JlOjpCaXRtYXBQaXhlbHM6OnNldFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFw
UGl4ZWxzOjphdCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBQaXhlbHM6OmNsZWFyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkJpdG1hcFBpeGVsczo6Y2xlYXJSZWN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkJpdG1hcFBpeGVsczo6cmVwZWF0Rmlyc3RSb3cpOgorICAgICAgICAoV2ViQ29yZTo6Qml0
bWFwUGl4ZWxzOjpzZXRSR0JBKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFBpeGVsczo6b3Zl
clJHQkEpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwUGl4ZWxzOjppbkJvdW5kcyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bXVs
dGlwbHkyNTUpOgorICAgICAgICAoV2ViQ29yZTo6ZGl2aWRlMjU1KToKKyAgICAgICAgKFdlYkNv
cmU6OmRpdmlkZUNlaWwpOgorICAgICAgICAoV2ViQ29yZTo6cHJlbXVsdGlwbGllZENoYW5uZWwp
OgorICAgICAgICAoV2ViQ29yZTo6dW5wcmVtdWx0aXBsaWVkQ2hhbm5lbCk6CisgICAgICAgIChX
ZWJDb3JlOjptYWtlUHJlbXVsdGlwbGllZFJHQkEpOgorICAgICAgICAoV2ViQ29yZTo6bWFrZVVu
UHJlbXVsdGlwbGllZFJHQkEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZURhdGEuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlRnJhbWVEYXRhOjpwaXhlbHMpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VGcmFtZURhdGE6Omhhc1BpeGVscyk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6Om9wZXJh
dG9yPSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpjbGVhclBpeGVsRGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjp6ZXJvRmlsbFBpeGVsRGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUZyYW1lOjp6ZXJvRmlsbEZyYW1lUmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUZyYW1lOjpjb3B5Qml0bWFwRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUZyYW1lOjpzZXRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OmNvcHlSb3dO
VGltZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5o
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6YXNOZXdOYXRpdmVJbWFnZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpzZXRSR0JBKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlRnJhbWU6OmdldEFkZHIpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6aGFzUGl4
ZWxEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6Om92ZXJSR0JBKToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OndpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
RnJhbWU6OmhlaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpjb3B5Um93TlRp
bWVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OmZpeFBvaW50VW5z
aWduZWRNdWx0aXBseSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpk
aXZpZGUyNTUpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2Jt
cC9CTVBJbWFnZVJlYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCTVBJbWFnZVJlYWRlcjo6
ZGVjb2RlQk1QKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9CaXRt
YXBQaXhlbHNDYWlyby5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZURlY29kZXJDYWlyby5jcHAuCisgICAgICAgIChXZWJD
b3JlOjpCaXRtYXBQaXhlbHM6OmltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdJRkltYWdl
RGVjb2Rlcjo6aGF2ZURlY29kZWRSb3cpOgorICAgICAgICAoV2ViQ29yZTo6R0lGSW1hZ2VEZWNv
ZGVyOjpmcmFtZUNvbXBsZXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdJRkltYWdlRGVjb2Rlcjo6
aW5pdEZyYW1lQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVn
L0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0UGl4ZWwpOgorICAg
ICAgICAoV2ViQ29yZTo6SlBFR0ltYWdlRGVjb2Rlcjo6b3V0cHV0U2NhbmxpbmVzKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnNldFBpeGVsUkdCKToKKyAgICAgICAgKFdlYkNvcmU6OnNldFBpeGVs
UkdCQSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRQaXhlbFByZW11bHRpcGxpZWRSR0JBKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBOR0ltYWdlRGVjb2Rlcjo6cm93QXZhaWxhYmxlKToKKyAgICAgICAg
KFdlYkNvcmU6OlBOR0ltYWdlRGVjb2Rlcjo6aW5pdEZyYW1lQnVmZmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlBOR0ltYWdlRGVjb2Rlcjo6ZnJhbWVDb21wbGV0ZSk6CisgICAgICAgICogcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldFQlBJbWFnZURlY29kZXI6OmRlY29kZSk6CisKKzIwMTYtMDctMTEgIFNhaWQgQWJv
dS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLGNvbT4KKworICAgICAgICBSZW5hbWUgRnJh
bWVEYXRhIHRvIEltYWdlRnJhbWVEYXRhIGFuZCBtb3ZlIGl0IHRvIGEgc2VwYXJhdGUgZmlsZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1NDQ0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSBJbWFn
ZUZyYW1lRGF0YSB0byBhIHNlcGFyYXRlIGZpbGUgc28gaXQgY2FuIGJlIGNhY2hlZCBieSBJbWFn
ZVNvdXJjZQorICAgICAgICBhbmQgd2lsbCBzdGlsbCBiZSBjb25zdW1lZCBieSBCaXRtYXBJbWFn
ZS4gTWFrZSB0aGUgZGF0YSBtZW1iZXJzIG9mIEltYWdlRnJhbWVEYXRhCisgICAgICAgIGJlIHBy
aXZhdGUgYW5kIGFkZCBnZXR0ZXJzIHRvIHJldHVybiB0aGVpciB2YWx1ZXMuCisKKyAgICAgICAg
Tm8gbmV3IHRlc3RzIC0tIENvZGUgcmVmYWN0b3JpbmcsIG5vIGJlaGF2aW9yIGNoYW5nZS4KKwor
ICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmhhdmVGcmFtZUltYWdlQXRJbmRleCk6CisgICAgICAg
IChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZGVzdHJveURlY29kZWREYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OkJpdG1hcEltYWdlOjpkZXN0cm95RGVjb2RlZERhdGFJZk5lY2Vzc2FyeSk6CisgICAg
ICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Y2FjaGVGcmFtZSk6CisgICAgICAgIChXZWJDb3Jl
OjpCaXRtYXBJbWFnZTo6ZGF0YUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1h
Z2U6OmVuc3VyZUZyYW1lSXNDYWNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6
OmZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpmcmFt
ZUlzQ29tcGxldGVBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpmcmFt
ZUR1cmF0aW9uQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZnJhbWVI
YXNBbHBoYUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmZyYW1lT3Jp
ZW50YXRpb25BdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpzaW5nbGVQ
aXhlbFNvbGlkQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmlzQWxtb3N0
U29saWRDb2xvcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lRGF0YTo6RnJhbWVEYXRhKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lRGF0YTo6fkZyYW1lRGF0YSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZURhdGE6OnVzZWRGcmFtZUJ5dGVzKTogRGVsZXRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZVNvdXJjZTo6Y3JlYXRlRnJhbWVEYXRhQXRJbmRleCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VTb3VyY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pbWFnZUZy
YW1lRGF0YS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6Oklt
YWdlRnJhbWVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVEYXRhOjp+SW1hZ2VG
cmFtZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6OmNsZWFyU3ViSW1h
Z2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVEYXRhOjpjbGVhcik6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6c2luZ2xlUGl4ZWxTb2xpZENvbG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlRnJhbWVEYXRhOjppc0FsbW9zdFNvbGlkQ29sb3IpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ltYWdlRnJhbWVEYXRhLmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6OnN0YXR1cyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUZyYW1lRGF0YTo6aXNDb21wbGV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0
YTo6c2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6ZnJhbWVCeXRlcyk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6aW1hZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VGcmFtZURhdGE6Om9yaWVudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlRnJhbWVEYXRhOjpzdWJzYW1wbGluZ0xldmVsKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
RnJhbWVEYXRhOjpkdXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6
aGFzQWxwaGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6Omhhc0ltYWdlKToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVEYXRhOjpoYXNNZXRhZGF0YSk6CisKKzIwMTYt
MDYtMjQgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLGNvbT4KKworICAg
ICAgICBJbnRyb2R1Y2UgUGxhdGZvcm1JbWFnZSBhbmQgbWFrZSBpdCBpcyBhIHdyYXBwZXIgZm9y
IE5hdGl2ZUltYWdlUHRyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNTg2ODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGUgbWFpbiBwdXJwb3NlIG9mIHRoaXMgcmVmYWN0b3JpbmcgaXMgdG8gbW92ZSB0
aGUgcGxhdGZvcm0gaW1hZ2UgZGVwZW5kZW50CisgICAgICAgIGNvZGUgZnJvbSBCaXRtYXBJbWFn
ZSB0byBQbGF0Zm9ybUltYWdlLiBQbGF0Zm9ybUltYWdlIGlzIHJlc3BvbnNpYmxlIG9mIAorICAg
ICAgICBkcmF3aW5nIHRoZSBpbWFnZSBhbmQgYW5zd2VyaW5nIE5hdGl2ZUltYWdlUHRyIHF1ZXN0
aW9ucyB3aGVuIGFuIEltYWdlRGVjb2RlcgorICAgICAgICBpcyBub3QgYXZhaWxhYmxlLiBBcGFy
dCBmcm9tIGRyYXdpbmcgdGhlIGltYWdlLCB0aGUgcXVlcnkgZnVuY3Rpb25zIHdpbGwgYmUKKyAg
ICAgICAgY2FsbGVkIG9ubHkgd2hlbiBjb25zdHJ1Y3RpbmcgYSBGcmFtZURhdGEgc28gd2Ugd2ls
bCBrZWVwIGV2ZXJ5dGhpbmcgYXMgYQorICAgICAgICBOYXRpdmVJbWFnZVB0ci4gQnV0IHdlIHdp
bGwgY2FzdCB0aGUgTmF0aXZlSW1hZ2VQdHIgdG8gUGxhdGZvcm1JbWFnZSB3aGVuCisgICAgICAg
IGEgcGxhdGZvcm0gZGVwZW5kZW50IGZ1bmN0aW9uIGlzIG5lZWRlZC4KKworICAgICAgICBObyBu
ZXcgdGVzdHMgLS0gQ29kZSByZWZhY3RvcmluZywgbm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAg
ICAgICogUGxhdGZvcm1BcHBsZVdpbi5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFr
ZToKKyAgICAgICAgKiBQbGF0Zm9ybUdUSy5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybU1hYy5j
bWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybVdpbkNhaXJvLmNtYWtlOgorICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL0RP
TS5tbToKKyAgICAgICAgKC1bRE9NTm9kZSBnZXRQcmV2aWV3U25hcHNob3RJbWFnZTphbmRSZWN0
czpdKToKKyAgICAgICAgKiBwYWdlL21hYy9UZXh0SW5kaWNhdG9yV2luZG93Lm1tOgorICAgICAg
ICAoLVtXZWJUZXh0SW5kaWNhdG9yVmlldyBpbml0V2l0aEZyYW1lOnRleHRJbmRpY2F0b3I6bWFy
Z2luOm9mZnNldDpdKToKKyAgICAgICAgKGNyZWF0ZUNvbnRlbnRDcm9zc2ZhZGVBbmltYXRpb24p
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpC
aXRtYXBJbWFnZTo6ZGVzdHJveURlY29kZWREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1h
cEltYWdlOjpkZXN0cm95RGVjb2RlZERhdGFJZk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJDb3Jl
OjpCaXRtYXBJbWFnZTo6ZGF0YUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1h
Z2U6OmZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpu
YXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VP
ZlNpemUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3Vy
cmVudEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpmcmFtZXNOYXRpdmVJ
bWFnZXMpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OnNpbmdsZVBpeGVsU29saWRD
b2xvcik6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6aXNBbG1vc3RTb2xpZENvbG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVEYXRh
OjpGcmFtZURhdGEpOgorICAgICAgICBtX2hhc0FscGhhIGNhbiBiZSBpbml0aWFsaXplZCB3aXRo
IGZhbHNlIGJlY2F1c2UgaXQgaXMgYWNjZXNzZWQgb25seSBpbgorICAgICAgICBCaXRtYXBJbWFn
ZTo6ZnJhbWVIYXNBbHBoYUF0SW5kZXgoKSBhbmQgaXQgaXMgZ3VhcmRlZCBieSBtX2hhdmVNZXRh
ZGF0YS4KKyAgICAgICAgQm90aCBtX2hhdmVNZXRhZGF0YSBhbmQgbV9oYXNBbHBoYSBhcmUgc2V0
IGluIEJpdG1hcEltYWdlIGNvbnN0cnVjdG9yCisgICAgICAgIGFuZCBpbiBCaXRtYXBJbWFnZTo6
Y2FjaGVGcmFtZSgpLgorCisgICAgICAgIChXZWJDb3JlOjpGcmFtZURhdGE6On5GcmFtZURhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVEYXRhOjpjbGVhcik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpuYXRpdmVJbWFn
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6bmF0aXZlSW1hZ2VPZlNpemUpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2U6OmZyYW1lc05hdGl2ZUltYWdlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZTo6Z2V0Q0dJbWFnZVJlZik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZTo6Z2V0Rmlyc3RDR0ltYWdlUmVmT2ZTaXplKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlOjpnZXRDR0ltYWdlQXJyYXkpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL1BsYXRmb3JtSW1hZ2UuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9y
bUltYWdlOjpQbGF0Zm9ybUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtSW1hZ2U6
OmlzTmlsKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtSW1hZ2U6OmNnSW1hZ2VSZWYpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dXBkYXRlRGlzcGxheU1vZGUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtSW1hZ2VDYWlyby5jcHA6IFJlbmFt
ZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFn
ZUNhaXJvLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtSW1hZ2U6OmNsZWFyU3ViSW1h
Z2VzKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtSW1hZ2U6OnNpemUpOgorICAgICAgICAo
V2ViQ29yZTo6UGxhdGZvcm1JbWFnZTo6aGFzQWxwaGEpOgorICAgICAgICAoV2ViQ29yZTo6UGxh
dGZvcm1JbWFnZTo6c2luZ2xlUGl4ZWxTb2xpZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlBs
YXRmb3JtSW1hZ2U6OmlzQWxtb3N0U29saWRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpQbGF0
Zm9ybUltYWdlOjpzdWJzYW1wbGluZ1NjYWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
SW1hZ2U6OmRyYXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdl
Q0cuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5D
Ry5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXR0ZXJuOjpjcmVhdGVQbGF0Zm9ybVBhdHRlcm4p
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1BsYXRmb3JtSW1hZ2VDRy5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1JbWFnZTo6Y2xlYXJTdWJJbWFnZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1JbWFnZTo6c2l6ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybUltYWdlOjpoYXNBbHBoYSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUlt
YWdlOjpzaW5nbGVQaXhlbFNvbGlkQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1J
bWFnZTo6aXNBbG1vc3RTb2xpZENvbG9yKTogTW92ZWQgZnJvbSBQbHVnaW5WaWV3LmNwcCBzaW5j
ZSBQbGF0Zm9ybUltYWdlIGlzIHdoYXQgdGhpcyBmdW5jdGlvbiBiZWxvbmdzIHRvLgorICAgICAg
ICAoV2ViQ29yZTo6UGxhdGZvcm1JbWFnZTo6c3Vic2FtcGxpbmdTY2FsZSk6IFJldHVybnMgdGhl
IHN1Yi1zYW1wbGluZyBzY2FsZSBiYXNlZCBvbiB0aGUgY29udGV4dCBzY2FsaW5nLgorICAgICAg
ICAoV2ViQ29yZTo6UGxhdGZvcm1JbWFnZTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvVGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYS5tbToKKyAgICAgICAgKFRl
eHRUcmFja1JlcHJlc2VudGF0aW9uQ29jb2E6OnVwZGF0ZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6
OmdldFRJRkZSZXByZXNlbnRhdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6TW9j
a1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWM6OnVwZGF0ZVBsYXRmb3JtTGF5ZXIpOgorICAgICAgICAq
IHBsYXRmb3JtL3dpbi9EcmFnSW1hZ2VDR1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVh
dGVEcmFnSW1hZ2VGcm9tSW1hZ2UpOgorCiAyMDE2LTA3LTEzICBBbnR0aSBLb2l2aXN0byAgPGFu
dHRpQGFwcGxlLmNvbT4KIAogICAgICAgICB2MjogV2ViQ29udGVudCBjcmFzaCBkdWUgdG8gUkVM
RUFTRV9BU1NFUlQoIW1faW5Mb2FkUGVuZGluZ0ltYWdlcykgaW4gU3R5bGVSZXNvbHZlcjo6flN0
eWxlUmVzb2x2ZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IGEwZGU3Y2QyY2E1Mzc3ZDc2YTA4M2Ex
ODMwMGZhZDVmMDViNjFkYjcuLjI4OTk0NWNiYzI3OGY3NjQyYWI2ZDk5ODY4NjFhOWRlZDNiYmU1
YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNi0wNy0xMyAgU2FpZCBB
Ym91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUsY29tPgorCisgICAgICAgIEludHJvZHVj
ZSBQbGF0Zm9ybUltYWdlIGFuZCBtYWtlIGl0IGlzIGEgd3JhcHBlciBmb3IgTmF0aXZlSW1hZ2VQ
dHIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODY4
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTWlz
Yy9XZWJDYWNoZS5tbToKKyAgICAgICAgKCtbV2ViQ2FjaGUgaW1hZ2VGb3JVUkw6XSk6CisKIDIw
MTYtMDctMTMgIEVucmljYSBDYXN1Y2NpICA8ZW5yaWNhQGFwcGxlLmNvbT4KIAogICAgICAgICBV
cGRhdGUgc3VwcG9ydGVkIHBsYXRmb3JtcyBpbiB4Y2NvbmZpZyBmaWxlcyB0byBtYXRjaCB0aGUg
c2RrIG5hbWVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGI5NThkOTU5ZTY4MTUxMjk0N2QwODkyMWI3OWJlMDY4
ZDFhZjI0MTEuLjk3MTkxMDE2ZDQ1ZTUzNjY4NGI0NzM5OTIzZDQwYTc2YjZkOGZiYzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxNi0wNy0xMyAgU2FpZCBBYm91LUhhbGxhd2EgIDxz
YWJvdWhhbGxhd2FAYXBwbGUsY29tPgorCisgICAgICAgIEludHJvZHVjZSBQbGF0Zm9ybUltYWdl
IGFuZCBtYWtlIGl0IGlzIGEgd3JhcHBlciBmb3IgTmF0aXZlSW1hZ2VQdHIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODY4NAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL2Nn
L1dLSWNvbkRhdGFiYXNlQ0cuY3BwOgorICAgICAgICAoV0tJY29uRGF0YWJhc2VUcnlHZXRDR0lt
YWdlRm9yVVJMKToKKyAgICAgICAgKFdLSWNvbkRhdGFiYXNlVHJ5Q29weUNHSW1hZ2VBcnJheUZv
clVSTCk6CisgICAgICAgIEl0IHdhcyB0aGUgb25seSBwbGFjZSBpbiB0aGUgY29kZSB3aGljaCB1
c2VzIEJpdG1hcEltYWdlOjpnZXRDR0ltYWdlQXJyYXkoKS4KKyAgICAgICAgQ2FsbCBCaXRtYXBJ
bWFnZTo6ZnJhbWVzTmF0aXZlSW1hZ2VzKCkgaW5zdGVhZCBhbmQgZm9ybSB0aGUgcmV0dXJuZWQK
KyAgICAgICAgVmVjdG9yPE5hdGl2ZUltYWdlUHRyPiBidWlsZCB0aGUgQ0ZBcnJheVJlZi4KKyAg
ICAgICAgCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
bW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX3ByZXNlbnRhdGlvblNuYXBzaG90Rm9yUHJl
dmlld0l0ZW1Db250cm9sbGVyOl0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6cGx1Z2luU25hcHNob3RU
aW1lckZpcmVkKToKKyAgICAgICAgCisgICAgICAgIChXZWJLaXQ6OmlzQWxtb3N0U29saWRDb2xv
cik6IERlbGV0ZWQuCisgICAgICAgIE1vdmUgdGhlIHN0YXRpYyBmdW5jdGlvbiBpc0FsbW9zdFNv
bGlkQ29sb3IgdG8gUGxhdGZvcm1JbWFnZTo6aXNBbG1vc3RTb2xpZENvbG9yKCkuCisKIDIwMTYt
MDctMTMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJLaXQy
IHNob3VsZG4ndCBzaWduYWwgY3VzdG9tIHByb3RvY29sIGNsaWVudHMgZnJvbSB0aGUgTlNVUkxD
b25uZWN0aW9uIGxvYWRlciB0aHJlYWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDVhZmVhM2Ex
NGVlODZlODM0ZTAxZmY1ODUxNDNhOGYxMGRhYWNjMjAuLmIyYjI3OTBiODY0MTI3ZmJhMzU5Nzdm
ZTQ4NDE4NzE0NmQwN2E4ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0yMjI5LDYgKzIyMjks
NyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSVNPVlRUQ3Vl
LmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlQnVmZmVyLmNwcAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVEYXRh
LmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlT3JpZW50YXRpb24uY3BwCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW50
UG9pbnQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUFwcGxlV2luLmNt
YWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1BcHBsZVdpbi5jbWFrZQppbmRleCA1ZmY5OTFm
ZjdkYTMwOGJiOTE4MmVjZTNiZjEyMTczMGE1NDhkMjg3Li5iYWUzMWVhZjg2ZTdmY2E5MDU4MjUw
OTJhYTM4YTc4YzExZTQyMjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUFw
cGxlV2luLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQXBwbGVXaW4uY21ha2UK
QEAgLTU1LDcgKzU1LDYgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvY2Evd2luL1dlYlRpbGVkQmFja2luZ0xheWVyV2luLmNwcAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2NhL3dpbi9XS0NBQ0ZWaWV3TGF5ZXJUcmVlSG9zdC5jcHAKIAotICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvQ29sb3JDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9GbG9hdFBvaW50Q0cu
Y3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvRmxvYXRSZWN0Q0cuY3BwCkBAIC03NSw2ICs3
NCw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0aENH
LmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAKKyAgICBwbGF0Zm9y
bS9ncmFwaGljcy9jZy9QbGF0Zm9ybUltYWdlQ0cuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9U
cmFuc2Zvcm1hdGlvbk1hdHJpeENHLmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Q
bGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4
IDUxNDUwNGU2ZWMyNWFhNWU0M2I5OTM5OGQ1ZTM1Y2VlZWE3NjZhYTQuLjY0YWUxNzEwODlkY2Jm
MGNkNDViNzBhOWI4ZjcwZWZhOWZmZGVkYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1Bs
YXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCkBA
IC0xMjIsNyArMTIyLDYgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvUGxhdGZvcm1EaXNwbGF5LmNwcAogCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vQmFja2luZ1N0b3JlQmFja2VuZENhaXJvSW1wbC5jcHAKLSAgICBwbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0NhaXJvVXRpbGl0aWVzLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRD
YWlyby5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fpcm9IYXJmYnV6ek5H
LmNwcApAQCAtMTM0LDYgKzEzMyw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAg
IHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BhdGhDYWlyby5jcHAKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9QYXR0ZXJuQ2Fpcm8uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
UGxhdGZvcm1Db250ZXh0Q2Fpcm8uY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxh
dGZvcm1JbWFnZUNhaXJvLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3Jt
UGF0aENhaXJvLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1JlZlB0ckNhaXJvLmNw
cAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1RyYW5zZm9ybWF0aW9uTWF0cml4Q2Fpcm8u
Y3BwCkBAIC0xNzksOSArMTc5LDkgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MveDExL1BsYXRmb3JtRGlzcGxheVgxMS5jcHAKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy94MTEvWFVuaXF1ZVJlc291cmNlLmNwcAogCi0gICAgcGxhdGZvcm0vaW1hZ2Ut
ZW5jb2RlcnMvSlBFR0ltYWdlRW5jb2Rlci5jcHAKKyAgICBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9jYWlyby9CaXRtYXBQaXhlbHNDYWlyby5jcHAKIAotICAgIHBsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2NhaXJvL0ltYWdlRGVjb2RlckNhaXJvLmNwcAorICAgIHBsYXRmb3JtL2ltYWdlLWVuY29k
ZXJzL0pQRUdJbWFnZUVuY29kZXIuY3BwCiAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2VmbC9OZXR3
b3JrU3RhdGVOb3RpZmllckVmbC5jcHAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxh
dGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCA2
NDVhZGQxY2UzODg4OGIwNGQ0YTJkODlhZGEwYTdjNmRlMTk5ODZiLi5kMzFmNTcwNmE2OTU5YjIz
MWI1YmZiMjJmMDdkMTg0M2FlODYxYTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0
Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAt
MTAxLDcgKzEwMSw2IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vQmFja2luZ1N0b3JlQmFja2VuZENhaXJvSW1wbC5jcHAKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CYWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm9YMTEuY3BwCi0g
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5jcHAKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb1V0aWxpdGllcy5jcHAKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9GbG9hdFJlY3RDYWlyby5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9Gb250Q2Fpcm8uY3BwCkBAIC0xMTUsNiArMTE0LDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9T
T1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0aENhaXJvLmNwcAogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BhdHRlcm5DYWlyby5jcHAKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9QbGF0Zm9ybUNvbnRleHRDYWlyby5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9QbGF0Zm9ybUltYWdlQ2Fpcm8uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vUGxhdGZvcm1QYXRoQ2Fpcm8uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUmVm
UHRyQ2Fpcm8uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vVHJhbnNmb3JtYXRpb25N
YXRyaXhDYWlyby5jcHAKQEAgLTE0OSw3ICsxNDksNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NP
VVJDRVMKICAgICBwbGF0Zm9ybS9ndGsvVGVtcG9yYXJ5TGlua1N0dWJzLmNwcAogICAgIHBsYXRm
b3JtL2d0ay9Vc2VyQWdlbnRHdGsuY3BwCiAKLSAgICBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9j
YWlyby9JbWFnZURlY29kZXJDYWlyby5jcHAKKyAgICBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9j
YWlyby9CaXRtYXBQaXhlbHNDYWlyby5jcHAKIAogICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL2d0
ay9TRFBQcm9jZXNzb3JTY3JpcHRSZXNvdXJjZUd0ay5jcHAKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5j
bWFrZQppbmRleCA5ZjZmNDk2YjZjYzRlZjZlNGI3NGQ4NGFjMGFhOWRlYTU1YTAyMzdiLi40ZGRl
ZDMwODhmNGYzOTZmZWY0NDRlN2VlNjVjNjQxMDY1OGY1ODQxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1h
Yy5jbWFrZQpAQCAtMzk3LDcgKzM5Nyw2IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1dlYlN5c3RlbUJhY2tkcm9wTGF5ZXIubW0K
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9XZWJUaWxlZEJhY2tpbmdMYXllci5tbQog
Ci0gICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFwSW1hZ2VDRy5jcHAKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0Zsb2F0
UG9pbnRDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9GbG9hdFJlY3RDRy5jcHAKQEAg
LTQxNyw2ICs0MTYsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2NnL1BhdGhDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwCisg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGxhdGZvcm1JbWFnZUNHLmNwcAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL1N1YmltYWdlQ2FjaGVXaXRoVGltZXIuY3BwCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvVHJhbnNmb3JtYXRpb25NYXRyaXhDRy5jcHAKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvUGxhdGZvcm1XaW5DYWlyby5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3Jt
V2luQ2Fpcm8uY21ha2UKaW5kZXggMmM1NTNiMDU1MWRhZDY5YWExOTlkOTYwZjU1MjM0M2Q5MjBm
MDdiMy4uMzQyYWE5MjczMmZkOGY5MmU4NWNmYTYyNmQ1NTU3MGVmNjZiNmE2OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW5DYWlyby5jbWFrZQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybVdpbkNhaXJvLmNtYWtlCkBAIC0yMSw3ICsyMSw2IEBAIGxpc3QoQVBQRU5E
IFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4dC5jcHAKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybURpc3BsYXkuY3BwCiAKLSAgICBwbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0NhaXJvVXRpbGl0aWVzLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0Zs
b2F0UmVjdENhaXJvLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyby5j
cHAKQEAgLTM0LDYgKzMzLDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0aENhaXJvLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL1BhdHRlcm5DYWlyby5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0
Zm9ybUNvbnRleHRDYWlyby5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9y
bUltYWdlQ2Fpcm8uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1QYXRo
Q2Fpcm8uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUmVmUHRyQ2Fpcm8uY3BwCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vVHJhbnNmb3JtYXRpb25NYXRyaXhDYWlyby5jcHAK
QEAgLTQ2LDcgKzQ2LDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5jcHAKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy93aW4vU2ltcGxlRm9udERhdGFDYWlyb1dpbi5jcHAKIAotICAg
IHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdlRGVjb2RlckNhaXJvLmNwcAorICAg
IHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0JpdG1hcFBpeGVsc0NhaXJvLmNwcAogCiAg
ICAgcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb25TdHViLmNwcAogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
NGU3YzNhMjI5YTE2M2E1ZjVhNjBmNjMyYmVhMGUzN2FkMjM5NDBlMC4uY2NiMDcwYmUwOWJhYzE2
ZjVmOWZkMzE5YTgzMmM5NzgwOWIyMTE5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTQ4NSw3ICsxNDg1LDcgQEAKIAkJMzc1
Q0QyMzIxMTlENDNDODAwQTJBODU5IC8qIEh5cGhlbmF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzVDRDIzMTExOUQ0M0M4MDBBMkE4NTkgLyog
SHlwaGVuYXRpb24uaCAqLzsgfTsKIAkJMzc2RENDRTExM0I0Rjk2NjAwMkVCRUZDIC8qIFRleHRS
dW4uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzc2
RENDRTAxM0I0Rjk2NjAwMkVCRUZDIC8qIFRleHRSdW4uY3BwICovOyB9OwogCQkzNzc0QUJBNTBG
QTIxRUI0MDBBRDdERTkgLyogT3ZlcmxhcFRlc3RSZXF1ZXN0Q2xpZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzc0QUJBMzBGQTIxRUI0MDBBRDdE
RTkgLyogT3ZlcmxhcFRlc3RSZXF1ZXN0Q2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJMzc3QTNBOTAxNUVGQ0U5QjAwNTlGNUM3IC8qIEJp
dG1hcEltYWdlQ0cuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMzc3QTNBOEYxNUVGQ0U5QTAwNTlGNUM3IC8qIEJpdG1hcEltYWdlQ0cuY3BwICovOyB9
OworCQkzNzdBM0E5MDE1RUZDRTlCMDA1OUY1QzcgLyogUGxhdGZvcm1JbWFnZUNHLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3N0EzQThGMTVFRkNF
OUEwMDU5RjVDNyAvKiBQbGF0Zm9ybUltYWdlQ0cuY3BwICovOyB9OwogCQkzNzkxOUMyMzBCN0Qx
ODg2MDBBNTY5OTggLyogUG9zaXRpb25JdGVyYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzkxOUMyMTBCN0QxODg2MDBBNTY5OTggLyogUG9z
aXRpb25JdGVyYXRvci5jcHAgKi87IH07CiAJCTM3OTE5QzI0MEI3RDE4ODYwMEE1Njk5OCAvKiBQ
b3NpdGlvbkl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAzNzkxOUMyMjBCN0QxODg2MDBBNTY5OTggLyogUG9zaXRpb25JdGVyYXRvci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKCk7IH07IH07CiAJCTM3OTI5MTdBMTk4NUVGMzkw
MEY0QjY2MSAvKiBDcmVkZW50aWFsQmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMzc5MjkxNzgxOTg1RUYzOTAwRjRCNjYxIC8qIENyZWRlbnRpYWxC
YXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAg
LTIzMjQsMTAgKzIzMjQsMTQgQEAKIAkJNTNFRDNGREYxNjdBODhFNzAwNjc2MkU2IC8qIEpTSW50
ZXJuYWxTZXR0aW5nc0dlbmVyYXRlZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTNFRDNGREQxNjdBODhFNzAwNjc2MkU2IC8qIEpTSW50ZXJuYWxTZXR0
aW5nc0dlbmVyYXRlZC5oICovOyB9OwogCQk1M0VGNzY2QjE2NTMwQTYxMDA0Q0JFNDkgLyogU2V0
dGluZ3NNYWNyb3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUzRUY3NjZBMTY1MzBBNjEwMDRDQkU0OSAvKiBTZXR0aW5nc01hY3Jvcy5oICovOyB9Owog
CQk1M0VGNzY2QzE2NTMxOTk0MDA0Q0JFNDkgLyogU2V0dGluZ3NNYWNyb3MuaCBpbiBDb3B5IEdl
bmVyYXRlZCBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRUY3
NjZBMTY1MzBBNjEwMDRDQkU0OSAvKiBTZXR0aW5nc01hY3Jvcy5oICovOyB9OworCQk1NTA0RTRD
QjFEMzU1N0IyMDBGRTUwODggLyogQml0bWFwUGl4ZWxzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTA0RTRDQTFEMzU1MzJEMDBGRTUwODggLyogQml0
bWFwUGl4ZWxzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNTUwQTBCQzkwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTUwQTBCQzcwODVGNjAz
OTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuY3BwICovOyB9OwogCQk1NTBBMEJDQTA4NUY2MDM5
MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTUwQTBCQzgwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5h
bWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1
NTVCODdFQzFDQUFGMEFCMDAzNDk0MjUgLyogSW1hZ2VEZWNvZGVyQ0cuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTU1Qjg3RUExQ0FBRjBBQjAwMzQ5
NDI1IC8qIEltYWdlRGVjb2RlckNHLmNwcCAqLzsgfTsKIAkJNTU1Qjg3RUQxQ0FBRjBBQjAwMzQ5
NDI1IC8qIEltYWdlRGVjb2RlckNHLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1NTVCODdFQjFDQUFGMEFCMDAzNDk0MjUgLyogSW1hZ2VEZWNvZGVyQ0cu
aCAqLzsgfTsKKwkJNTU3NEYwODcxRDAyNzkwOTAwQjlGMTRDIC8qIFBsYXRmb3JtSW1hZ2UuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1NzRGMDg1MUQw
Mjc0NDQwMEI5RjE0QyAvKiBQbGF0Zm9ybUltYWdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTVDQkE2QTExRDFERjJFMTAwNDUxODYwIC8qIElt
YWdlRnJhbWVEYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDU1Q0JBNjlGMUQxREYyRTEwMDQ1MTg2MCAvKiBJbWFnZUZyYW1lRGF0YS5jcHAgKi87
IH07CisJCTU1Q0JBNkEyMUQxREYyRTEwMDQ1MTg2MCAvKiBJbWFnZUZyYW1lRGF0YS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTVDQkE2QTAxRDFERjJF
MTAwNDUxODYwIC8qIEltYWdlRnJhbWVEYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTcyQTdGMjExQzZFNTcxOTAwOUM2MTQ5IC8qIFNpbXVs
YXRlZENsaWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1NzJBN0YyMDFDNkU1NzE5MDA5QzYxNDkgLyogU2ltdWxhdGVkQ2xpY2suaCAqLzsgfTsKIAkJ
NTcyQTdGMjMxQzZFNUE2NjAwOUM2MTQ5IC8qIFNpbXVsYXRlZENsaWNrLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MkE3RjIyMUM2RTVBNjYwMDlD
NjE0OSAvKiBTaW11bGF0ZWRDbGljay5jcHAgKi87IH07CiAJCTU3RUY1RTYwMUQyMEM4MzkwMDE3
MUU2MCAvKiBUZXh0Q29kZWNSZXBsYWNlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTdFRjVFNUYxRDIwQzgzOTAwMTcxRTYwIC8qIFRleHRDb2Rl
Y1JlcGxhY2VtZW50LmggKi87IH07CkBAIC05MDYzLDcgKzkwNjcsNyBAQAogCQkzNzZEQ0NFMDEz
QjRGOTY2MDAyRUJFRkMgLyogVGV4dFJ1bi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBUZXh0UnVuLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzc3
MkIwOTUxNjUzNTg1NjAwMEE0OUNBIC8qIFBvcHVwT3BlbmluZ09ic2VydmVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBvcHVwT3BlbmluZ09ic2VydmVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3NzRBQkEzMEZBMjFFQjQwMEFEN0RFOSAvKiBPdmVybGFw
VGVzdFJlcXVlc3RDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT3Zl
cmxhcFRlc3RSZXF1ZXN0Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTM3
N0EzQThGMTVFRkNFOUEwMDU5RjVDNyAvKiBCaXRtYXBJbWFnZUNHLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJpdG1hcEltYWdlQ0cuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkzNzdBM0E4RjE1RUZDRTlBMDA1OUY1QzcgLyogUGxhdGZvcm1JbWFn
ZUNHLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBsYXRmb3JtSW1h
Z2VDRy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3OTE5QzIxMEI3RDE4ODYw
MEE1Njk5OCAvKiBQb3NpdGlvbkl0ZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBQb3NpdGlvbkl0ZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMzc5MTlDMjIwQjdEMTg4NjAwQTU2OTk4IC8qIFBvc2l0aW9uSXRlcmF0b3IuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBvc2l0aW9uSXRlcmF0b3IuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzc5MjkxNzgxOTg1RUYzOTAwRjRCNjYxIC8qIENy
ZWRlbnRpYWxCYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyZWRlbnRp
YWxCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05OTg5LDEwICs5OTkzLDE0
IEBACiAJCTUzRUQzRkRDMTY3QTg4RTcwMDY3NjJFNiAvKiBKU0ludGVybmFsU2V0dGluZ3NHZW5l
cmF0ZWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNJbnRlcm5h
bFNldHRpbmdzR2VuZXJhdGVkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTNF
RDNGREQxNjdBODhFNzAwNjc2MkU2IC8qIEpTSW50ZXJuYWxTZXR0aW5nc0dlbmVyYXRlZC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0ludGVybmFsU2V0dGluZ3NHZW5lcmF0
ZWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTNFRjc2NkExNjUzMEE2MTAwNENC
RTQ5IC8qIFNldHRpbmdzTWFjcm9zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNldHRpbmdzTWFjcm9zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU1MDRFNENB
MUQzNTUzMkQwMEZFNTA4OCAvKiBCaXRtYXBQaXhlbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQml0bWFw
UGl4ZWxzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU1MEEwQkM3MDg1RjYwMzkw
MDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFF1YWxpZmllZE5hbWUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJNTUwQTBCQzgw
ODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUXVhbGlmaWVkTmFtZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJNTU1Qjg3RUEx
Q0FBRjBBQjAwMzQ5NDI1IC8qIEltYWdlRGVjb2RlckNHLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdlRGVjb2RlckNHLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTU1Qjg3RUIxQ0FBRjBBQjAwMzQ5NDI1IC8qIEltYWdlRGVjb2RlckNHLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlRGVjb2RlckNHLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU1NzRGMDg1MUQwMjc0NDQwMEI5RjE0QyAvKiBQbGF0
Zm9ybUltYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtSW1hZ2UuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNTVDQkE2OUYxRDFERjJFMTAwNDUxODYwIC8qIEltYWdlRnJhbWVE
YXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdlRnJhbWVE
YXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTVDQkE2QTAxRDFERjJFMTAw
NDUxODYwIC8qIEltYWdlRnJhbWVEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEltYWdlRnJhbWVEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU1RDQw
OEY3MUE3QzYzMTgwMEM3ODQ1MCAvKiBTVkdJbWFnZUNsaWVudHMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU1ZHSW1hZ2VDbGllbnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTU3MkE3RjIwMUM2RTU3MTkwMDlDNjE0OSAvKiBTaW11bGF0ZWRDbGljay5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaW11bGF0ZWRDbGljay5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1NzJBN0YyMjFDNkU1QTY2MDA5QzYxNDkgLyogU2ltdWxh
dGVkQ2xpY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2ltdWxh
dGVkQ2xpY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjIwMjgsNyArMjIw
MzYsNiBAQAogCQlCMjc1MzUyOTBCMDUzODE0MDAyQ0U2NEYgLyogY2cgKi8gPSB7CiAJCQlpc2Eg
PSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTM3N0EzQThGMTVFRkNFOUEwMDU5RjVD
NyAvKiBCaXRtYXBJbWFnZUNHLmNwcCAqLywKIAkJCQkwRkNGMzMyMzBGMkI5NzE1MDA0QjY3OTUg
LyogQ29sb3JDRy5jcHAgKi8sCiAJCQkJQjI3NTM1MkIwQjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0
UG9pbnRDRy5jcHAgKi8sCiAJCQkJQjI3NTM1MkMwQjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0UmVj
dENHLmNwcCAqLywKQEAgLTIyMDU1LDYgKzIyMDYyLDcgQEAKIAkJCQlBODBBMzhGRDBFNTBDQzgy
MDBBMjVFQkMgLyogUGF0dGVybkNHLmNwcCAqLywKIAkJCQlCMjc1MzUzNjBCMDUzODE0MDAyQ0U2
NEYgLyogUERGRG9jdW1lbnRJbWFnZS5jcHAgKi8sCiAJCQkJQjI3NTM1MzcwQjA1MzgxNDAwMkNF
NjRGIC8qIFBERkRvY3VtZW50SW1hZ2UuaCAqLywKKwkJCQkzNzdBM0E4RjE1RUZDRTlBMDA1OUY1
QzcgLyogUGxhdGZvcm1JbWFnZUNHLmNwcCAqLywKIAkJCQkxRkM0MEZCODE2NTVDNTkxMDA0MEYy
OUUgLyogU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5jcHAgKi8sCiAJCQkJMUZDNDBGQjcxNjU1QzU5
MTAwNDBGMjlFIC8qIFN1YmltYWdlQ2FjaGVXaXRoVGltZXIuaCAqLywKIAkJCQlCMjc1MzUyQTBC
MDUzODE0MDAyQ0U2NEYgLyogVHJhbnNmb3JtYXRpb25NYXRyaXhDRy5jcHAgKi8sCkBAIC0yMjEy
Miw2ICsyMjEzMCw3IEBACiAJCQkJQkVGMjlFRTkxNzE1REQwOTAwQzRCNEM5IC8qIEF1ZGlvVHJh
Y2tQcml2YXRlLmggKi8sCiAJCQkJQTg5OTQzMjcwQjQyMzM4NzAwRDdDODAyIC8qIEJpdG1hcElt
YWdlLmNwcCAqLywKIAkJCQlBODk5NDMyNjBCNDIzMzg3MDBEN0M4MDIgLyogQml0bWFwSW1hZ2Uu
aCAqLywKKwkJCQk1NTA0RTRDQTFEMzU1MzJEMDBGRTUwODggLyogQml0bWFwUGl4ZWxzLmggKi8s
CiAJCQkJQ0RERTAyRTkxOEIzREZDNzAwQ0Y3RkYxIC8qIENETVNlc3Npb24uaCAqLywKIAkJCQlC
Mjc1MzUzODBCMDUzODE0MDAyQ0U2NEYgLyogQ29sb3IuY3BwICovLAogCQkJCUIyNzUzNTM5MEIw
NTM4MTQwMDJDRTY0RiAvKiBDb2xvci5oICovLApAQCAtMjIyMDYsNiArMjIyMTUsOCBAQAogCQkJ
CTQzRDI1OTc2MTNDODE2RjQwMDYwODU1OSAvKiBJbWFnZUJ1ZmZlci5jcHAgKi8sCiAJCQkJQjJB
MTBCOTEwQjM4MThCRDAwMDk5QUE0IC8qIEltYWdlQnVmZmVyLmggKi8sCiAJCQkJMjJCRDlGN0Qx
MzUzNjI1QzAwOUJEMTAyIC8qIEltYWdlQnVmZmVyRGF0YS5oICovLAorCQkJCTU1Q0JBNjlGMUQx
REYyRTEwMDQ1MTg2MCAvKiBJbWFnZUZyYW1lRGF0YS5jcHAgKi8sCisJCQkJNTVDQkE2QTAxRDFE
RjJFMTAwNDUxODYwIC8qIEltYWdlRnJhbWVEYXRhLmggKi8sCiAJCQkJQkM3RjQ0QTcwQjlFMzI0
RTAwQTlEMDgxIC8qIEltYWdlT2JzZXJ2ZXIuaCAqLywKIAkJCQlBODc0OEQ3NDEyQ0MzRjg5MDAx
RkJBNDEgLyogSW1hZ2VPcmllbnRhdGlvbi5jcHAgKi8sCiAJCQkJQTg3NDhENjYxMkNDMzc2MzAw
MUZCQTQxIC8qIEltYWdlT3JpZW50YXRpb24uaCAqLywKQEAgLTIyMjU1LDYgKzIyMjY2LDcgQEAK
IAkJCQkyRDUwMDJGQTFCNTZENzk5MDAyMEFBRjcgLyogUGF0aFV0aWxpdGllcy5oICovLAogCQkJ
CUE4RkE2RTVDMEU0Q0ZERUQwMEQ1Q0Y0OSAvKiBQYXR0ZXJuLmNwcCAqLywKIAkJCQlBOEZBNkU1
QjBFNENGREVEMDBENUNGNDkgLyogUGF0dGVybi5oICovLAorCQkJCTU1NzRGMDg1MUQwMjc0NDQw
MEI5RjE0QyAvKiBQbGF0Zm9ybUltYWdlLmggKi8sCiAJCQkJMDU2MkY5NjAxNTczRjg4RjAwMzFD
QTE2IC8qIFBsYXRmb3JtTGF5ZXIuaCAqLywKIAkJCQlDRUVGQ0Q3QjE5REIzM0RDMDAzODc2RDcg
LyogUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmggKi8sCiAJCQkJMDcyODQ3RTIxNkVCQzVC
MDAwNDNDRkE0IC8qIFBsYXRmb3JtVGV4dFRyYWNrLmggKi8sCkBAIC0yNjAyOCw2ICsyNjA0MCw3
IEBACiAJCQkJODVFNzExQjkwQUM1RDUzNTAwNTMyNzBGIC8qIERPTUhUTUxNYXBFbGVtZW50SW50
ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNTE1NzlGMEMwM0JCRDMwMDhCQjBFRSAvKiBE
T01IVE1MTWFycXVlZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNTE1NkVBMEMwM0I3
NDEwMDhCQjBFRSAvKiBET01IVE1MTWFycXVlZUVsZW1lbnRJbnRlcm5hbC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNTU3NEYwODcxRDAyNzkwOTAwQjlGMTRDIC8qIFBsYXRmb3JtSW1hZ2UuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTJERUM2NjU1MUM4MkQwNDEwMDk5ODQ2QSAvKiBET01IVE1MTWVkaWFF
bGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkyREVDNjY1MTFDODJEMDE2MDA5OTg0NkEgLyog
RE9NSFRNTE1lZGlhRWxlbWVudEludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NUJBNEQx
MzBBQTY4ODY4MDA4ODA1MkQgLyogRE9NSFRNTE1lbnVFbGVtZW50LmggaW4gSGVhZGVycyAqLywK
QEAgLTI2NDY5LDYgKzI2NDgyLDcgQEAKIAkJCQlEMzU5RDc4QTEyOUNBMjcxMDAwNkU1RDIgLyog
SFRNTERldGFpbHNFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEVBNzlGQTBBMTkxNkRG
MDBBOEVGNUYgLyogSFRNTERpcmVjdG9yeUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4
RUE3Q0I3MEExOTJCOUMwMEE4RUY1RiAvKiBIVE1MRGl2RWxlbWVudC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJNTVDQkE2QTIxRDFERjJFMTAwNDUxODYwIC8qIEltYWdlRnJhbWVEYXRhLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBOEVBNzlGNzBBMTkxNkRGMDBBOEVGNUYgLyogSFRNTERMaXN0RWxlbWVu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNGMTk4RTUwODI0NUU1OTAwMUU5QUJDIC8qIEhUTUxE
b2N1bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc3QjM4NjcxMjI4ODNFOTAwQjgxRkY4IC8q
IEhUTUxEb2N1bWVudFBhcnNlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yODM2OSw2ICsyODM4Myw3
IEBACiAJCQkJQjIyMjc5OTMwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0FuaW1hdGVNb3Rpb25FbGVt
ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyNzk5NTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZH
QW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3OTk4MEQw
MEJGMjIwMDcxQjc4MiAvKiBTVkdBbmltYXRpb25FbGVtZW50LmggaW4gSGVhZGVycyAqLywKKwkJ
CQk1NTA0RTRDQjFEMzU1N0IyMDBGRTUwODggLyogQml0bWFwUGl4ZWxzLmggaW4gSGVhZGVycyAq
LywKIAkJCQk0MzlEMzM0NTEzQTY5MTFDMDBDMjBGNEYgLyogU1ZHQW5pbWF0b3JGYWN0b3J5Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwOEZCM0Y4NDEzQkM3NTRDMDA5OUZDMTggLyogU1ZHQXR0cmli
dXRlVG9Qcm9wZXJ0eU1hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5OUMwRDAwQkYyMjAw
NzFCNzgyIC8qIFNWR0NpcmNsZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjk0MjEsNyAr
Mjk0MzYsNyBAQAogCQkJCUZEQzU0RjA0MTM5OUIwREEwMDhEOTExNyAvKiBCaXF1YWRGaWx0ZXJO
b2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZEMzE2MDI2MTJCMDI2NzYwMEMxQTM1OSAvKiBC
aXF1YWRQcm9jZXNzb3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTg5OTQzMjkwQjQyMzM4ODAw
RDdDODAyIC8qIEJpdG1hcEltYWdlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTM3N0EzQTkwMTVF
RkNFOUIwMDU5RjVDNyAvKiBCaXRtYXBJbWFnZUNHLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTM3
N0EzQTkwMTVFRkNFOUIwMDU5RjVDNyAvKiBQbGF0Zm9ybUltYWdlQ0cuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJOTc2RDZDNzgxMjJCOEEzRDAwMUZEMUY3IC8qIEJsb2IuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMkVERUYxRjMxMjFCMEVGQzAwNzI2REIyIC8qIEJsb2JEYXRhLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUUxRDMxQ0RDMTkxOTYwMjAwMDEwMDVBMyAvKiBCbG9iRGF0YUZpbGVSZWZl
cmVuY2UuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yOTc4NCw2ICsyOTc5OSw3IEBACiAJCQkJMkUy
RDk5RTgxMEUyQkMxQzAwNDk2MzM3IC8qIERPTUJsb2IubW0gaW4gU291cmNlcyAqLywKIAkJCQk4
NTA4OUNEODBBOThDNDI4MDBBMjc1QUEgLyogRE9NQ0RBVEFTZWN0aW9uLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJODVBQ0E5ODcwQTlCNTIwMzAwNjcxRTkwIC8qIERPTUNoYXJhY3RlckRhdGEubW0g
aW4gU291cmNlcyAqLywKKwkJCQk1NUNCQTZBMTFEMURGMkUxMDA0NTE4NjAgLyogSW1hZ2VGcmFt
ZURhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODUwODlDREEwQTk4QzQyODAwQTI3NUFBIC8q
IERPTUNvbW1lbnQubW0gaW4gU291cmNlcyAqLywKIAkJCQk5NzhEMDdCRTE0NUEwRjZDMDA5Njkw
OEQgLyogRE9NQ29yZUV4Y2VwdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NThDMzhBNjBB
QThGMjA0MDBCMTg3QTQgLyogRE9NQ291bnRlci5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET00ubW0gYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9vYmpjL0RPTS5tbQppbmRleCA0MDExZWEzZmQ4YzA0Njk3NGM1NWQ0OGUzOTZmMWI4
M2I4MWYzMzVkLi5hNWFjNGYwNWFlMzM5YThkNjQ3MDZjMTBmYzBmN2FmNDA0MjU2MjNjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTS5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTS5tbQpAQCAtNjA2LDcgKzYwNiw3IEBAIC0gKHZvaWQp
Z2V0UHJldmlld1NuYXBzaG90SW1hZ2U6KENHSW1hZ2VSZWYqKWNnSW1hZ2UgYW5kUmVjdHM6KE5T
QXJyYXkgKiopcmVjdHMKIAogICAgIGlmICh0ZXh0SW5kaWNhdG9yKSB7CiAgICAgICAgIGlmIChJ
bWFnZSogaW1hZ2UgPSB0ZXh0SW5kaWNhdG9yLT5jb250ZW50SW1hZ2UoKSkKLSAgICAgICAgICAg
ICpjZ0ltYWdlID0gKENHSW1hZ2VSZWYpQ0ZBdXRvcmVsZWFzZShDR0ltYWdlUmV0YWluKGltYWdl
LT5nZXRDR0ltYWdlUmVmKCkpKTsKKyAgICAgICAgICAgICpjZ0ltYWdlID0gaW1hZ2UtPm5hdGl2
ZUltYWdlKCkuYXV0b3JlbGVhc2UoKTsKICAgICB9CiAKICAgICBSZXRhaW5QdHI8TlNNdXRhYmxl
QXJyYXk+IHJlY3RBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvVGV4dEluZGljYXRvcldpbmRv
dy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1RleHRJbmRpY2F0b3JXaW5kb3cubW0KaW5k
ZXggMzY0YTlhODdjZTZmMDY2Mzk0OGI4ODQ2ZThlMmNlNmQxOTBmMjQ4OS4uYTc0ZGE4NWFjZWNh
M2M2Njk4ZGQxNTZhYjMxYTZjOTcxYTM1NGU2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9tYWMvVGV4dEluZGljYXRvcldpbmRvdy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L21hYy9UZXh0SW5kaWNhdG9yV2luZG93Lm1tCkBAIC0xNjIsOSArMTYyLDkgQEAgLSAoaW5zdGFu
Y2V0eXBlKWluaXRXaXRoRnJhbWU6KE5TUmVjdClmcmFtZSB0ZXh0SW5kaWNhdG9yOihQYXNzUmVm
UHRyPFRleHRJbmRpY2EKICAgICBjb250ZW50c0ltYWdlTG9naWNhbFNpemUuc2NhbGUoMSAvIF90
ZXh0SW5kaWNhdG9yLT5jb250ZW50SW1hZ2VTY2FsZUZhY3RvcigpKTsKICAgICBSZXRhaW5QdHI8
Q0dJbWFnZVJlZj4gY29udGVudHNJbWFnZTsKICAgICBpZiAoaW5kaWNhdG9yV2FudHNDb250ZW50
Q3Jvc3NmYWRlKCpfdGV4dEluZGljYXRvcikpCi0gICAgICAgIGNvbnRlbnRzSW1hZ2UgPSBfdGV4
dEluZGljYXRvci0+Y29udGVudEltYWdlV2l0aEhpZ2hsaWdodCgpLT5nZXRDR0ltYWdlUmVmKCk7
CisgICAgICAgIGNvbnRlbnRzSW1hZ2UgPSBfdGV4dEluZGljYXRvci0+Y29udGVudEltYWdlV2l0
aEhpZ2hsaWdodCgpLT5uYXRpdmVJbWFnZSgpOwogICAgIGVsc2UKLSAgICAgICAgY29udGVudHNJ
bWFnZSA9IF90ZXh0SW5kaWNhdG9yLT5jb250ZW50SW1hZ2UoKS0+Z2V0Q0dJbWFnZVJlZigpOwor
ICAgICAgICBjb250ZW50c0ltYWdlID0gX3RleHRJbmRpY2F0b3ItPmNvbnRlbnRJbWFnZSgpLT5u
YXRpdmVJbWFnZSgpOwogCiAgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBib3VuY2VMYXll
cnMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKIApAQCAtMjY1LDcg
KzI2NSw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8Q0FLZXlmcmFtZUFuaW1hdGlvbj4gY3JlYXRlQm91
bmNlQW5pbWF0aW9uKENGVGltZUludGVydmFsIGR1cmF0CiBzdGF0aWMgUmV0YWluUHRyPENBQmFz
aWNBbmltYXRpb24+IGNyZWF0ZUNvbnRlbnRDcm9zc2ZhZGVBbmltYXRpb24oQ0ZUaW1lSW50ZXJ2
YWwgZHVyYXRpb24sIFRleHRJbmRpY2F0b3ImIHRleHRJbmRpY2F0b3IpCiB7CiAgICAgUmV0YWlu
UHRyPENBQmFzaWNBbmltYXRpb24+IGNyb3NzZmFkZUFuaW1hdGlvbiA9IFtDQUJhc2ljQW5pbWF0
aW9uIGFuaW1hdGlvbldpdGhLZXlQYXRoOkAiY29udGVudHMiXTsKLSAgICBSZXRhaW5QdHI8Q0dJ
bWFnZVJlZj4gY29udGVudHNJbWFnZSA9IHRleHRJbmRpY2F0b3IuY29udGVudEltYWdlKCktPmdl
dENHSW1hZ2VSZWYoKTsKKyAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gY29udGVudHNJbWFnZSA9
IHRleHRJbmRpY2F0b3IuY29udGVudEltYWdlKCktPm5hdGl2ZUltYWdlKCk7CiAgICAgW2Nyb3Nz
ZmFkZUFuaW1hdGlvbiBzZXRUb1ZhbHVlOihpZCljb250ZW50c0ltYWdlLmdldCgpXTsKICAgICBb
Y3Jvc3NmYWRlQW5pbWF0aW9uIHNldEZpbGxNb2RlOmtDQUZpbGxNb2RlRm9yd2FyZHNdOwogICAg
IFtjcm9zc2ZhZGVBbmltYXRpb24gc2V0UmVtb3ZlZE9uQ29tcGxldGlvbjpOT107CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKaW5kZXggNDYw
ZDFiODU2Yjc3YjdjZjRlYzY4OTY1ODFiODMzZDNlN2Y5NzAxNC4uZmM2NDlkMTBhYWI5YzEzZmZm
MjkzMDU1YTcwN2NiNzQ1Mzc0NjkxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcApAQCAtNjgsMTUgKzY4LDEzIEBAIEJpdG1hcEltYWdl
OjpCaXRtYXBJbWFnZShOYXRpdmVJbWFnZVB0ciYmIGltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNl
cnZlcikKICAgICAsIG1faGF2ZUZyYW1lQ291bnQodHJ1ZSkKICAgICAsIG1fYW5pbWF0aW9uRmlu
aXNoZWRXaGVuQ2F0Y2hpbmdVcChmYWxzZSkKIHsKKyAgICBtX2ZyYW1lcy5yZXNlcnZlSW5pdGlh
bENhcGFjaXR5KDEpOworICAgIG1fZnJhbWVzLnVuY2hlY2tlZEFwcGVuZChXVEZNb3ZlKGltYWdl
KSk7CisgICAgCiAgICAgLy8gU2luY2Ugd2UgZG9uJ3QgaGF2ZSBhIGRlY29kZXIsIHdlIGNhbid0
IGZpZ3VyZSBvdXQgdGhlIGltYWdlIG9yaWVudGF0aW9uLgogICAgIC8vIFNldCBtX3NpemVSZXNw
ZWN0aW5nT3JpZW50YXRpb24gdG8gYmUgdGhlIHNhbWUgYXMgbV9zaXplIHNvIGl0J3Mgbm90IDB4
MC4KLSAgICBtX3NpemVSZXNwZWN0aW5nT3JpZW50YXRpb24gPSBtX3NpemUgPSBOYXRpdmVJbWFn
ZTo6c2l6ZShpbWFnZSk7CisgICAgbV9zaXplUmVzcGVjdGluZ09yaWVudGF0aW9uID0gbV9zaXpl
ID0gbV9mcmFtZXNbMF0uc2l6ZSgpOwogICAgIG1fZGVjb2RlZFNpemUgPSBtX3NpemUuYXJlYSgp
ICogNDsKLSAgICAKLSAgICBtX2ZyYW1lcy5ncm93KDEpOwotICAgIG1fZnJhbWVzWzBdLm1faGFz
QWxwaGEgPSBOYXRpdmVJbWFnZTo6aGFzQWxwaGEoaW1hZ2UpOwotICAgIG1fZnJhbWVzWzBdLm1f
aGF2ZU1ldGFkYXRhID0gdHJ1ZTsKLSAgICBtX2ZyYW1lc1swXS5tX2ltYWdlID0gV1RGTW92ZShp
bWFnZSk7CiB9CiAKIEJpdG1hcEltYWdlOjp+Qml0bWFwSW1hZ2UoKQpAQCAtMTA1LDcgKzEwMyw3
IEBAIGJvb2wgQml0bWFwSW1hZ2U6OmhhdmVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgp
CiAgICAgaWYgKGluZGV4ID49IG1fZnJhbWVzLnNpemUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgcmV0dXJuIG1fZnJhbWVzW2luZGV4XS5tX2ltYWdlOworICAgIHJldHVybiBtX2Zy
YW1lc1tpbmRleF0uaGFzSW1hZ2UoKTsKIH0KIAogYm9vbCBCaXRtYXBJbWFnZTo6aGFzU2luZ2xl
U2VjdXJpdHlPcmlnaW4oKSBjb25zdApAQCAtMTI1LDkgKzEyMyw3IEBAIHZvaWQgQml0bWFwSW1h
Z2U6OmRlc3Ryb3lEZWNvZGVkRGF0YShib29sIGRlc3Ryb3lBbGwpCiAgICAgICAgIC8vIFRoZSB1
bmRlcmx5aW5nIGZyYW1lIGlzbid0IGFjdHVhbGx5IGNoYW5naW5nICh3ZSdyZSBqdXN0IHRyeWlu
ZyB0bwogICAgICAgICAvLyBzYXZlIHRoZSBtZW1vcnkgZm9yIHRoZSBmcmFtZWJ1ZmZlciBkYXRh
KSwgc28gd2UgZG9uJ3QgbmVlZCB0byBjbGVhcgogICAgICAgICAvLyB0aGUgbWV0YWRhdGEuCi0g
ICAgICAgIHVuc2lnbmVkIGZyYW1lQnl0ZXMgPSBtX2ZyYW1lc1tpXS5tX2ZyYW1lQnl0ZXM7Ci0g
ICAgICAgIGlmIChtX2ZyYW1lc1tpXS5jbGVhcihmYWxzZSkpCi0gICAgICAgICAgICBmcmFtZUJ5
dGVzQ2xlYXJlZCArPSBmcmFtZUJ5dGVzOworICAgICAgICBmcmFtZUJ5dGVzQ2xlYXJlZCArPSBt
X2ZyYW1lc1tpXS5jbGVhcihJbWFnZUZyYW1lRGF0YTo6Q2FjaGluZzo6TWV0YWRhdGEpOwogICAg
IH0KIAogICAgIG1fc291cmNlLmNsZWFyKGRlc3Ryb3lBbGwsIGNsZWFyQmVmb3JlRnJhbWUsIGRh
dGEoKSwgbV9hbGxEYXRhUmVjZWl2ZWQpOwpAQCAtMTUwLDggKzE0Niw4IEBAIHZvaWQgQml0bWFw
SW1hZ2U6OmRlc3Ryb3lEZWNvZGVkRGF0YUlmTmVjZXNzYXJ5KGJvb2wgZGVzdHJveUFsbCkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgdW5zaWduZWQgYWxsRnJhbWVCeXRlcyA9IDA7Ci0gICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBtX2ZyYW1lcy5zaXplKCk7ICsraSkKLSAgICAgICAgYWxsRnJh
bWVCeXRlcyArPSBtX2ZyYW1lc1tpXS51c2VkRnJhbWVCeXRlcygpOworICAgIGZvciAoYXV0byYg
ZnJhbWUgOiBtX2ZyYW1lcykKKyAgICAgICAgYWxsRnJhbWVCeXRlcyArPSBmcmFtZS5mcmFtZUJ5
dGVzKCk7CiAKICAgICBpZiAoYWxsRnJhbWVCeXRlcyA+IGxhcmdlQW5pbWF0aW9uQ3V0b2ZmKSB7
CiAgICAgICAgIExPRyhJbWFnZXMsICJCaXRtYXBJbWFnZSAlcCBkZXN0cm95RGVjb2RlZERhdGFJ
Zk5lY2Vzc2FyeSBkZXN0cm95aW5nRGF0YTogYWxsRnJhbWVCeXRlcz0ldSBjdXRvZmY9JXUiLCB0
aGlzLCBhbGxGcmFtZUJ5dGVzLCBsYXJnZUFuaW1hdGlvbkN1dG9mZik7CkBAIC0xNzcsNyArMTcz
LDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZGVzdHJveU1ldGFkYXRhQW5kTm90aWZ5KHVuc2lnbmVk
IGZyYW1lQnl0ZXNDbGVhcmVkLCBDbGVhcmVkU28KICAgICAgICAgaW1hZ2VPYnNlcnZlcigpLT5k
ZWNvZGVkU2l6ZUNoYW5nZWQodGhpcywgLXNhZmVDYXN0PGludD4oZnJhbWVCeXRlc0NsZWFyZWQp
KTsKIH0KIAotdm9pZCBCaXRtYXBJbWFnZTo6Y2FjaGVGcmFtZShzaXplX3QgaW5kZXgsIFN1YnNh
bXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgSW1hZ2VGcmFtZUNhY2hpbmcgZnJhbWVDYWNo
aW5nKQordm9pZCBCaXRtYXBJbWFnZTo6Y2FjaGVGcmFtZShzaXplX3QgaW5kZXgsIFN1YnNhbXBs
aW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgSW1hZ2VGcmFtZURhdGE6OkNhY2hpbmcgY2FjaGlu
ZykKIHsKICAgICBzaXplX3QgbnVtRnJhbWVzID0gZnJhbWVDb3VudCgpOwogICAgIEFTU0VSVCht
X2RlY29kZWRTaXplID09IDAgfHwgbnVtRnJhbWVzID4gMSk7CkBAIC0xODUsMjUgKzE4MSwxMiBA
QCB2b2lkIEJpdG1hcEltYWdlOjpjYWNoZUZyYW1lKHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdM
ZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBJbQogICAgIGlmIChtX2ZyYW1lcy5zaXplKCkgPCBudW1G
cmFtZXMpCiAgICAgICAgIG1fZnJhbWVzLmdyb3cobnVtRnJhbWVzKTsKIAotICAgIGlmIChmcmFt
ZUNhY2hpbmcgPT0gQ2FjaGVNZXRhZGF0YUFuZEZyYW1lKSB7Ci0gICAgICAgIG1fZnJhbWVzW2lu
ZGV4XS5tX2ltYWdlID0gbV9zb3VyY2UuY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoaW5kZXgsIHN1
YnNhbXBsaW5nTGV2ZWwpOwotICAgICAgICBtX2ZyYW1lc1tpbmRleF0ubV9zdWJzYW1wbGluZ0xl
dmVsID0gc3Vic2FtcGxpbmdMZXZlbDsKLSAgICB9Ci0KLSAgICBtX2ZyYW1lc1tpbmRleF0ubV9v
cmllbnRhdGlvbiA9IG1fc291cmNlLm9yaWVudGF0aW9uQXRJbmRleChpbmRleCk7Ci0gICAgbV9m
cmFtZXNbaW5kZXhdLm1faGF2ZU1ldGFkYXRhID0gdHJ1ZTsKLSAgICBtX2ZyYW1lc1tpbmRleF0u
bV9pc0NvbXBsZXRlID0gbV9zb3VyY2UuZnJhbWVJc0NvbXBsZXRlQXRJbmRleChpbmRleCk7Cisg
ICAgbV9mcmFtZXNbaW5kZXhdID0gbV9zb3VyY2UuY3JlYXRlRnJhbWVEYXRhQXRJbmRleChpbmRl
eCwgc3Vic2FtcGxpbmdMZXZlbCwgY2FjaGluZyk7CiAKLSAgICBpZiAocmVwZXRpdGlvbkNvdW50
KGZhbHNlKSAhPSBjQW5pbWF0aW9uTm9uZSkKLSAgICAgICAgbV9mcmFtZXNbaW5kZXhdLm1fZHVy
YXRpb24gPSBtX3NvdXJjZS5mcmFtZUR1cmF0aW9uQXRJbmRleChpbmRleCk7CisgICAgTE9HKElt
YWdlcywgIkJpdG1hcEltYWdlICVwIGNhY2hlRnJhbWUgJWx1ICglcyV1IGJ5dGVzLCBjb21wbGV0
ZSAlZCkiLCB0aGlzLCBpbmRleCwgY2FjaGluZyA9PSBJbWFnZUZyYW1lRGF0YTo6Q2FjaGluZzo6
TWV0YWRhdGEgPyAibWV0YWRhdGEgb25seSwgIiA6ICIiLCBtX2ZyYW1lc1tpbmRleF0uZnJhbWVC
eXRlcygpLCBtX2ZyYW1lc1tpbmRleF0uaXNDb21wbGV0ZSgpKTsKIAotICAgIG1fZnJhbWVzW2lu
ZGV4XS5tX2hhc0FscGhhID0gbV9zb3VyY2UuZnJhbWVIYXNBbHBoYUF0SW5kZXgoaW5kZXgpOwot
ICAgIG1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lQnl0ZXMgPSBtX3NvdXJjZS5mcmFtZUJ5dGVzQXRJ
bmRleChpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCk7Ci0KLSAgICBMT0coSW1hZ2VzLCAiQml0bWFw
SW1hZ2UgJXAgY2FjaGVGcmFtZSAlbHUgKCVzJXUgYnl0ZXMsIGNvbXBsZXRlICVkKSIsIHRoaXMs
IGluZGV4LCBmcmFtZUNhY2hpbmcgPT0gQ2FjaGVNZXRhZGF0YU9ubHkgPyAibWV0YWRhdGEgb25s
eSwgIiA6ICIiLCBtX2ZyYW1lc1tpbmRleF0ubV9mcmFtZUJ5dGVzLCBtX2ZyYW1lc1tpbmRleF0u
bV9pc0NvbXBsZXRlKTsKLQotICAgIGlmIChtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZSkgewotICAg
ICAgICBpbnQgZGVsdGFCeXRlcyA9IHNhZmVDYXN0PGludD4obV9mcmFtZXNbaW5kZXhdLm1fZnJh
bWVCeXRlcyk7CisgICAgaWYgKG1fZnJhbWVzW2luZGV4XS5oYXNJbWFnZSgpKSB7CisgICAgICAg
IGludCBkZWx0YUJ5dGVzID0gc2FmZUNhc3Q8aW50PihtX2ZyYW1lc1tpbmRleF0uZnJhbWVCeXRl
cygpKTsKICAgICAgICAgbV9kZWNvZGVkU2l6ZSArPSBkZWx0YUJ5dGVzOwogICAgICAgICAvLyBU
aGUgZnVsbHktZGVjb2RlZCBmcmFtZSB3aWxsIHN1YnN1bWUgdGhlIHBhcnRpYWxseSBkZWNvZGVk
IGRhdGEgdXNlZAogICAgICAgICAvLyB0byBkZXRlcm1pbmUgaW1hZ2UgcHJvcGVydGllcy4KQEAg
LTI4OCwyMSArMjcxLDE5IEBAIGJvb2wgQml0bWFwSW1hZ2U6OmRhdGFDaGFuZ2VkKGJvb2wgYWxs
RGF0YVJlY2VpdmVkKQogICAgIC8vIGZyYW1lIGFmZmVjdGVkIGJ5IGFwcGVuZGluZyBuZXcgZGF0
YSBoZXJlLiBUaHVzIHdlIGhhdmUgdG8gY2xlYXIgYWxsIHRoZQogICAgIC8vIGluY29tcGxldGUg
ZnJhbWVzIHRvIGJlIHNhZmUuCiAgICAgdW5zaWduZWQgZnJhbWVCeXRlc0NsZWFyZWQgPSAwOwot
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9mcmFtZXMuc2l6ZSgpOyArK2kpIHsKKyAgICBm
b3IgKGF1dG8mIGZyYW1lIDogbV9mcmFtZXMpIHsKICAgICAgICAgLy8gTk9URTogRG9uJ3QgY2Fs
bCBmcmFtZUlzQ29tcGxldGVBdEluZGV4KCkgaGVyZSwgdGhhdCB3aWxsIHRyeSB0bwogICAgICAg
ICAvLyBkZWNvZGUgYW55IHVuY2FjaGVkIChpLmUuIG5ldmVyLWRlY29kZWQgb3IKICAgICAgICAg
Ly8gY2xlYXJlZC1vbi1hLXByZXZpb3VzLXBhc3MpIGZyYW1lcyEKLSAgICAgICAgdW5zaWduZWQg
ZnJhbWVCeXRlcyA9IG1fZnJhbWVzW2ldLm1fZnJhbWVCeXRlczsKLSAgICAgICAgaWYgKG1fZnJh
bWVzW2ldLm1faGF2ZU1ldGFkYXRhICYmICFtX2ZyYW1lc1tpXS5tX2lzQ29tcGxldGUpCi0gICAg
ICAgICAgICBmcmFtZUJ5dGVzQ2xlYXJlZCArPSAobV9mcmFtZXNbaV0uY2xlYXIodHJ1ZSkgPyBm
cmFtZUJ5dGVzIDogMCk7CisgICAgICAgIGlmIChmcmFtZS5oYXNNZXRhZGF0YSgpICYmICFmcmFt
ZS5pc0NvbXBsZXRlKCkpCisgICAgICAgICAgICBmcmFtZUJ5dGVzQ2xlYXJlZCArPSBmcmFtZS5j
bGVhcihJbWFnZUZyYW1lRGF0YTo6Q2FjaGluZzo6RW1wdHkpOwogICAgIH0KICAgICBkZXN0cm95
TWV0YWRhdGFBbmROb3RpZnkoZnJhbWVCeXRlc0NsZWFyZWQsIENsZWFyZWRTb3VyY2U6Ok5vKTsK
ICNlbHNlCiAgICAgLy8gRklYTUU6IHdoeSBpcyB0aGlzIGRpZmZlcmVudCBmb3IgaU9TPwogICAg
IGludCBkZWx0YUJ5dGVzID0gMDsKICAgICBpZiAoIW1fZnJhbWVzLmlzRW1wdHkoKSkgewotICAg
ICAgICBpbnQgYnl0ZXMgPSBtX2ZyYW1lc1ttX2ZyYW1lcy5zaXplKCkgLSAxXS5tX2ZyYW1lQnl0
ZXM7Ci0gICAgICAgIGlmIChtX2ZyYW1lc1ttX2ZyYW1lcy5zaXplKCkgLSAxXS5jbGVhcih0cnVl
KSkgeworICAgICAgICBpZiAoaW50IGJ5dGVzID0gbV9mcmFtZXNbbV9mcmFtZXMuc2l6ZSgpIC0g
MV0uY2xlYXIoSW1hZ2VGcmFtZURhdGE6OkNhY2hpbmc6OkVtcHR5KSkgewogICAgICAgICAgICAg
ZGVsdGFCeXRlcyArPSBieXRlczsKICAgICAgICAgICAgIGRlbHRhQnl0ZXMgKz0gbV9kZWNvZGVk
UHJvcGVydGllc1NpemU7CiAgICAgICAgICAgICBtX2RlY29kZWRQcm9wZXJ0aWVzU2l6ZSA9IDA7
CkBAIC0zNjYsMTUgKzM0NywxNSBAQCBib29sIEJpdG1hcEltYWdlOjppc1NpemVBdmFpbGFibGUo
KQogICAgIHJldHVybiBtX3NpemVBdmFpbGFibGU7CiB9CiAKLWJvb2wgQml0bWFwSW1hZ2U6OmVu
c3VyZUZyYW1lSXNDYWNoZWQoc2l6ZV90IGluZGV4LCBJbWFnZUZyYW1lQ2FjaGluZyBmcmFtZUNh
Y2hpbmcpCitib29sIEJpdG1hcEltYWdlOjplbnN1cmVGcmFtZUlzQ2FjaGVkKHNpemVfdCBpbmRl
eCwgSW1hZ2VGcmFtZURhdGE6OkNhY2hpbmcgY2FjaGluZykKIHsKICAgICBpZiAoaW5kZXggPj0g
ZnJhbWVDb3VudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoaW5kZXggPj0g
bV9mcmFtZXMuc2l6ZSgpCi0gICAgICAgIHx8IChmcmFtZUNhY2hpbmcgPT0gQ2FjaGVNZXRhZGF0
YUFuZEZyYW1lICYmICFtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZSkKLSAgICAgICAgfHwgKGZyYW1l
Q2FjaGluZyA9PSBDYWNoZU1ldGFkYXRhT25seSAmJiAhbV9mcmFtZXNbaW5kZXhdLm1faGF2ZU1l
dGFkYXRhKSkKLSAgICAgICAgY2FjaGVGcmFtZShpbmRleCwgMCwgZnJhbWVDYWNoaW5nKTsKKyAg
ICAgICAgfHwgKGNhY2hpbmcgPT0gSW1hZ2VGcmFtZURhdGE6OkNhY2hpbmc6Ok1ldGFkYXRhQW5k
SW1hZ2UgJiYgIW1fZnJhbWVzW2luZGV4XS5oYXNJbWFnZSgpKQorICAgICAgICB8fCAoY2FjaGlu
ZyA9PSBJbWFnZUZyYW1lRGF0YTo6Q2FjaGluZzo6TWV0YWRhdGEgJiYgIW1fZnJhbWVzW2luZGV4
XS5oYXNNZXRhZGF0YSgpKSkKKyAgICAgICAgY2FjaGVGcmFtZShpbmRleCwgMCwgY2FjaGluZyk7
CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTM4OCwxMCArMzY5LDkgQEAgTmF0aXZlSW1hZ2VQ
dHIgQml0bWFwSW1hZ2U6OmZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgZmxvYXQgcHJl
c2VudGF0aW9uU2MKIAogICAgIC8vIFdlIG1heSBoYXZlIGNhY2hlZCBhIGZyYW1lIHdpdGggYSBo
aWdoZXIgc3Vic2FtcGxpbmcgbGV2ZWwsIGluIHdoaWNoIGNhc2Ugd2UgbmVlZCB0bwogICAgIC8v
IHJlLWRlY29kZSB3aXRoIGEgbG93ZXIgbGV2ZWwuCi0gICAgaWYgKGluZGV4IDwgbV9mcmFtZXMu
c2l6ZSgpICYmIG1fZnJhbWVzW2luZGV4XS5tX2ltYWdlICYmIHN1YnNhbXBsaW5nTGV2ZWwgPCBt
X2ZyYW1lc1tpbmRleF0ubV9zdWJzYW1wbGluZ0xldmVsKSB7CisgICAgaWYgKGluZGV4IDwgbV9m
cmFtZXMuc2l6ZSgpICYmIG1fZnJhbWVzW2luZGV4XS5oYXNJbWFnZSgpICYmIHN1YnNhbXBsaW5n
TGV2ZWwgPCBtX2ZyYW1lc1tpbmRleF0uc3Vic2FtcGxpbmdMZXZlbCgpKSB7CiAgICAgICAgIC8v
IElmIHRoZSBpbWFnZSBpcyBhbHJlYWR5IGNhY2hlZCwgYnV0IGF0IHRvbyBzbWFsbCBhIHNpemUs
IHJlLWRlY29kZSBhIGxhcmdlciB2ZXJzaW9uLgotICAgICAgICBpbnQgc2l6ZUNoYW5nZSA9IC1t
X2ZyYW1lc1tpbmRleF0ubV9mcmFtZUJ5dGVzOwotICAgICAgICBtX2ZyYW1lc1tpbmRleF0uY2xl
YXIodHJ1ZSk7CisgICAgICAgIGludCBzaXplQ2hhbmdlID0gLW1fZnJhbWVzW2luZGV4XS5jbGVh
cihJbWFnZUZyYW1lRGF0YTo6Q2FjaGluZzo6RW1wdHkpOwogICAgICAgICBpbnZhbGlkYXRlUGxh
dGZvcm1EYXRhKCk7CiAgICAgICAgIG1fZGVjb2RlZFNpemUgKz0gc2l6ZUNoYW5nZTsKICAgICAg
ICAgaWYgKGltYWdlT2JzZXJ2ZXIoKSkKQEAgLTM5OSw0MCArMzc5LDcyIEBAIE5hdGl2ZUltYWdl
UHRyIEJpdG1hcEltYWdlOjpmcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIGZsb2F0IHBy
ZXNlbnRhdGlvblNjCiAgICAgfQogCiAgICAgLy8gSWYgd2UgaGF2ZW4ndCBmZXRjaGVkIGEgZnJh
bWUgeWV0LCBkbyBzby4KLSAgICBpZiAoaW5kZXggPj0gbV9mcmFtZXMuc2l6ZSgpIHx8ICFtX2Zy
YW1lc1tpbmRleF0ubV9pbWFnZSkKLSAgICAgICAgY2FjaGVGcmFtZShpbmRleCwgc3Vic2FtcGxp
bmdMZXZlbCwgQ2FjaGVNZXRhZGF0YUFuZEZyYW1lKTsKKyAgICBpZiAoaW5kZXggPj0gbV9mcmFt
ZXMuc2l6ZSgpIHx8ICFtX2ZyYW1lc1tpbmRleF0uaGFzSW1hZ2UoKSkKKyAgICAgICAgY2FjaGVG
cmFtZShpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCwgSW1hZ2VGcmFtZURhdGE6OkNhY2hpbmc6Ok1l
dGFkYXRhQW5kSW1hZ2UpOworCisgICAgcmV0dXJuIG1fZnJhbWVzW2luZGV4XS5pbWFnZSgpOwor
fQorICAgIAorTmF0aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6Om5hdGl2ZUltYWdlKCkKK3sKKyAg
ICByZXR1cm4gZnJhbWVJbWFnZUF0SW5kZXgoMCk7Cit9CisgICAgCitOYXRpdmVJbWFnZVB0ciBC
aXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VPZlNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKK3sKKyAg
ICBzaXplX3QgY291bnQgPSBmcmFtZUNvdW50KCk7CisgICAgCisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBjb3VudDsgKytpKSB7CisgICAgICAgIGF1dG8gaW1hZ2UgPSBmcmFtZUltYWdlQXRJ
bmRleChpKTsKKyAgICAgICAgaWYgKGltYWdlICYmIFBsYXRmb3JtSW1hZ2UoaW1hZ2UpLnNpemUo
KSA9PSBzaXplKQorICAgICAgICAgICAgcmV0dXJuIGltYWdlOworICAgIH0KKyAgICAKKyAgICAv
LyBGYWxsYmFjayB0byB0aGUgZmlyc3QgZnJhbWUgaW1hZ2UgaWYgd2UgY2FuJ3QgZmluZCB0aGUg
cmlnaHQgc2l6ZQorICAgIHJldHVybiBmcmFtZUltYWdlQXRJbmRleCgwKTsKK30KKyAgICAKK05h
dGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpCit7
CisgICAgcmV0dXJuIGZyYW1lSW1hZ2VBdEluZGV4KG1fY3VycmVudEZyYW1lKTsKK30KIAotICAg
IHJldHVybiBtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZTsKK1ZlY3RvcjxOYXRpdmVJbWFnZVB0cj4g
Qml0bWFwSW1hZ2U6OmZyYW1lc05hdGl2ZUltYWdlcygpCit7CisgICAgVmVjdG9yPE5hdGl2ZUlt
YWdlUHRyPiBpbWFnZXM7CisgICAgc2l6ZV90IGNvdW50ID0gZnJhbWVDb3VudCgpOworICAgIAor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgeworICAgICAgICBpZiAoYXV0
byBpbWFnZSA9IGZyYW1lSW1hZ2VBdEluZGV4KGkpKQorICAgICAgICAgICAgaW1hZ2VzLmFwcGVu
ZChpbWFnZSk7CisgICAgfQorICAgIAorICAgIHJldHVybiBpbWFnZXM7CiB9CiAKIGJvb2wgQml0
bWFwSW1hZ2U6OmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoc2l6ZV90IGluZGV4KQogewotICAgIGlm
ICghZW5zdXJlRnJhbWVJc0NhY2hlZChpbmRleCwgQ2FjaGVNZXRhZGF0YU9ubHkpKQorICAgIGlm
ICghZW5zdXJlRnJhbWVJc0NhY2hlZChpbmRleCwgSW1hZ2VGcmFtZURhdGE6OkNhY2hpbmc6Ok1l
dGFkYXRhKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIG1fZnJhbWVzW2lu
ZGV4XS5tX2lzQ29tcGxldGU7CisgICAgcmV0dXJuIG1fZnJhbWVzW2luZGV4XS5pc0NvbXBsZXRl
KCk7CiB9CiAKIGZsb2F0IEJpdG1hcEltYWdlOjpmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3Qg
aW5kZXgpCiB7Ci0gICAgaWYgKCFlbnN1cmVGcmFtZUlzQ2FjaGVkKGluZGV4LCBDYWNoZU1ldGFk
YXRhT25seSkpCisgICAgaWYgKCFlbnN1cmVGcmFtZUlzQ2FjaGVkKGluZGV4LCBJbWFnZUZyYW1l
RGF0YTo6Q2FjaGluZzo6TWV0YWRhdGEpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVy
biBtX2ZyYW1lc1tpbmRleF0ubV9kdXJhdGlvbjsKLX0KLQotTmF0aXZlSW1hZ2VQdHIgQml0bWFw
SW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkKLXsKLSAgICByZXR1cm4gZnJhbWVJ
bWFnZUF0SW5kZXgoY3VycmVudEZyYW1lKCkpOworICAgIHJldHVybiBtX2ZyYW1lc1tpbmRleF0u
ZHVyYXRpb24oKTsKIH0KIAogYm9vbCBCaXRtYXBJbWFnZTo6ZnJhbWVIYXNBbHBoYUF0SW5kZXgo
c2l6ZV90IGluZGV4KQogewotICAgIGlmICghZW5zdXJlRnJhbWVJc0NhY2hlZChpbmRleCwgQ2Fj
aGVNZXRhZGF0YU9ubHkpKQorICAgIGlmICghZW5zdXJlRnJhbWVJc0NhY2hlZChpbmRleCwgSW1h
Z2VGcmFtZURhdGE6OkNhY2hpbmc6Ok1ldGFkYXRhKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAK
LSAgICBpZiAobV9mcmFtZXNbaW5kZXhdLm1faGF2ZU1ldGFkYXRhKQotICAgICAgICByZXR1cm4g
bV9mcmFtZXNbaW5kZXhdLm1faGFzQWxwaGE7CisgICAgaWYgKG1fZnJhbWVzW2luZGV4XS5oYXNN
ZXRhZGF0YSgpKQorICAgICAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLmhhc0FscGhhKCk7CiAK
ICAgICByZXR1cm4gbV9zb3VyY2UuZnJhbWVIYXNBbHBoYUF0SW5kZXgoaW5kZXgpOwogfQpAQCAt
NDQ0LDExICs0NTYsMTEgQEAgYm9vbCBCaXRtYXBJbWFnZTo6Y3VycmVudEZyYW1lS25vd25Ub0Jl
T3BhcXVlKCkKIAogSW1hZ2VPcmllbnRhdGlvbiBCaXRtYXBJbWFnZTo6ZnJhbWVPcmllbnRhdGlv
bkF0SW5kZXgoc2l6ZV90IGluZGV4KQogewotICAgIGlmICghZW5zdXJlRnJhbWVJc0NhY2hlZChp
bmRleCwgQ2FjaGVNZXRhZGF0YU9ubHkpKQorICAgIGlmICghZW5zdXJlRnJhbWVJc0NhY2hlZChp
bmRleCwgSW1hZ2VGcmFtZURhdGE6OkNhY2hpbmc6Ok1ldGFkYXRhKSkKICAgICAgICAgcmV0dXJu
IEltYWdlT3JpZW50YXRpb24oKTsKIAotICAgIGlmIChtX2ZyYW1lc1tpbmRleF0ubV9oYXZlTWV0
YWRhdGEpCi0gICAgICAgIHJldHVybiBtX2ZyYW1lc1tpbmRleF0ubV9vcmllbnRhdGlvbjsKKyAg
ICBpZiAobV9mcmFtZXNbaW5kZXhdLmhhc01ldGFkYXRhKCkpCisgICAgICAgIHJldHVybiBtX2Zy
YW1lc1tpbmRleF0ub3JpZW50YXRpb24oKTsKIAogICAgIHJldHVybiBtX3NvdXJjZS5vcmllbnRh
dGlvbkF0SW5kZXgoaW5kZXgpOwogfQpAQCAtNzAwLDE3ICs3MTIsNTYgQEAgQ29sb3IgQml0bWFw
SW1hZ2U6OnNpbmdsZVBpeGVsU29saWRDb2xvcigpCiAgICAgICAgIHJldHVybiBDb2xvcigpOwog
ICAgIAogICAgIEFTU0VSVChtX2ZyYW1lcy5zaXplKCkpOwotICAgIG1fc29saWRDb2xvciA9IE5h
dGl2ZUltYWdlOjpzaW5nbGVQaXhlbFNvbGlkQ29sb3IobV9mcmFtZXNbMF0ubV9pbWFnZS5nZXQo
KSk7CisgICAgbV9zb2xpZENvbG9yID0gbV9mcmFtZXNbMF0uc2luZ2xlUGl4ZWxTb2xpZENvbG9y
KCk7CiAgICAgCiAgICAgQVNTRVJUKG1fc29saWRDb2xvcik7CiAgICAgcmV0dXJuIG1fc29saWRD
b2xvci52YWx1ZSgpOwogfQogICAgIAorYm9vbCBCaXRtYXBJbWFnZTo6aXNBbG1vc3RTb2xpZENv
bG9yKCkKK3sKKyAgICBpZiAoZnJhbWVDb3VudCgpICE9IDEpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIHJldHVybiBlbnN1cmVGcmFtZUlzQ2FjaGVkKDApICYmIG1fZnJhbWVzWzBdLmlz
QWxtb3N0U29saWRDb2xvcigpOworfQorICAgIAogYm9vbCBCaXRtYXBJbWFnZTo6Y2FuQW5pbWF0
ZSgpCiB7CiAgICAgcmV0dXJuIHNob3VsZEFuaW1hdGUoKSAmJiBmcmFtZUNvdW50KCkgPiAxOwog
fQogCit2b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3Np
dGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIG1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlv
biBkZXNjcmlwdGlvbikKK3sKKyAgICBpZiAoZGVzdFJlY3QuaXNFbXB0eSgpIHx8IHNyY1JlY3Qu
aXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyNpZiBQTEFURk9STShJT1MpCisgICAgc3Rh
cnRBbmltYXRpb24oRG9Ob3RDYXRjaFVwKTsKKyNlbHNlCisgICAgc3RhcnRBbmltYXRpb24oKTsK
KyNlbmRpZgorICAgIAorICAgIENvbG9yIGNvbG9yID0gc2luZ2xlUGl4ZWxTb2xpZENvbG9yKCk7
CisgICAgaWYgKGNvbG9yLmlzVmFsaWQoKSkgeworICAgICAgICBmaWxsV2l0aFNvbGlkQ29sb3Io
Y29udGV4dCwgZGVzdFJlY3QsIGNvbG9yLCBvcCk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgCisgICAgYXV0byBpbWFnZSA9IGZyYW1lSW1hZ2VBdEluZGV4KG1fY3VycmVudEZyYW1lLCBQ
bGF0Zm9ybUltYWdlOjpzdWJzYW1wbGluZ1NjYWxlKGNvbnRleHQsIGRlc3RSZWN0LCBzcmNSZWN0
KSk7CisgICAgaWYgKCFpbWFnZSkgLy8gSWYgaXQncyB0b28gZWFybHkgd2Ugd29uJ3QgaGF2ZSBh
biBpbWFnZSB5ZXQuCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBJbWFnZU9yaWVudGF0aW9u
IG9yaWVudGF0aW9uKGRlc2NyaXB0aW9uLmltYWdlT3JpZW50YXRpb24oKSk7CisgICAgaWYgKGRl
c2NyaXB0aW9uLnJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKCkgPT0gUmVzcGVjdEltYWdlT3JpZW50
YXRpb24pCisgICAgICAgIG9yaWVudGF0aW9uID0gZnJhbWVPcmllbnRhdGlvbkF0SW5kZXgobV9j
dXJyZW50RnJhbWUpOworICAgIAorICAgIFBsYXRmb3JtSW1hZ2UoaW1hZ2UpLmRyYXcoY29udGV4
dCwgZGVzdFJlY3QsIHNyY1JlY3QsIG1fc2l6ZSwgb3AsIG1vZGUsIG9yaWVudGF0aW9uKTsKKyAg
ICAKKyAgICBpZiAoaW1hZ2VPYnNlcnZlcigpKQorICAgICAgICBpbWFnZU9ic2VydmVyKCktPmRp
ZERyYXcodGhpcyk7Cit9CisgICAgCiB2b2lkIEJpdG1hcEltYWdlOjpkdW1wKFRleHRTdHJlYW0m
IHRzKSBjb25zdAogewogICAgIEltYWdlOjpkdW1wKHRzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCmluZGV4IDA3NTg5MjljZDg3ZmFkYWNmMDJi
NmVkOGVlYWZlN2RlZmQ2NmYwYzUuLjIyMThjODI0YjUyOGZkNjM5YmFiMTM4ZGVjYzk4Yjk4MTZh
MTY4MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1h
cEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1h
Z2UuaApAQCAtMjgsMTEgKzI4LDEzIEBACiAjaWZuZGVmIEJpdG1hcEltYWdlX2gKICNkZWZpbmUg
Qml0bWFwSW1hZ2VfaAogCi0jaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJDb2xvci5oIgor
I2luY2x1ZGUgIkltYWdlLmgiCisjaW5jbHVkZSAiSW1hZ2VGcmFtZURhdGEuaCIKICNpbmNsdWRl
ICJJbWFnZU9yaWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiSW1hZ2VTb3VyY2UuaCIKICNpbmNsdWRl
ICJJbnRTaXplLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1JbWFnZS5oIgogCiAjaWYgVVNFKENHKSB8
fCBVU0UoQVBQS0lUKQogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KQEAgLTQ3LDYzICs0OSw5
IEBAIHR5cGVkZWYgc3RydWN0IEhCSVRNQVBfXyAqSEJJVE1BUDsKICNlbmRpZgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0gICAgc3RydWN0IEZyYW1lRGF0YTsKLX0KLQotbmFtZXNwYWNlIFdURiB7
Ci0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgVmVjdG9yVHJhaXRzPFdlYkNvcmU6OkZyYW1lRGF0YT4g
OiBwdWJsaWMgU2ltcGxlQ2xhc3NWZWN0b3JUcmFpdHMgewotICAgICAgICBzdGF0aWMgY29uc3Qg
Ym9vbCBjYW5Jbml0aWFsaXplV2l0aE1lbXNldCA9IGZhbHNlOyAvLyBOb3QgYWxsIEZyYW1lRGF0
YSBtZW1iZXJzIGluaXRpYWxpemUgdG8gMC4KLSAgICB9OwotfQotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIFRpbWVyOwogCi1uYW1lc3BhY2UgTmF0aXZlSW1hZ2UgewotICAgIEludFNp
emUgc2l6ZShjb25zdCBOYXRpdmVJbWFnZVB0ciYpOwotICAgIGJvb2wgaGFzQWxwaGEoY29uc3Qg
TmF0aXZlSW1hZ2VQdHImKTsKLSAgICBDb2xvciBzaW5nbGVQaXhlbFNvbGlkQ29sb3IoY29uc3Qg
TmF0aXZlSW1hZ2VQdHImKTsKLX0KLQotLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0vLyBGcmFtZURhdGEgQ2xhc3MKLS8vID09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi1zdHJ1Y3QgRnJhbWVEYXRhIHsK
LXB1YmxpYzoKLSAgICBGcmFtZURhdGEoKQotICAgICAgICA6IG1faGF2ZU1ldGFkYXRhKGZhbHNl
KQotICAgICAgICAsIG1faXNDb21wbGV0ZShmYWxzZSkKLSAgICAgICAgLCBtX2hhc0FscGhhKHRy
dWUpCi0gICAgewotICAgIH0KLQotICAgIH5GcmFtZURhdGEoKQotICAgIHsgCi0gICAgICAgIGNs
ZWFyKHRydWUpOwotICAgIH0KLQotICAgIC8vIENsZWFyIHRoZSBjYWNoZWQgaW1hZ2UgZGF0YSBv
biB0aGUgZnJhbWUsIGFuZCAob3B0aW9uYWxseSkgdGhlIG1ldGFkYXRhLgotICAgIC8vIFJldHVy
bnMgd2hldGhlciB0aGVyZSB3YXMgY2FjaGVkIGltYWdlIGRhdGEgdG8gY2xlYXIuCi0gICAgYm9v
bCBjbGVhcihib29sIGNsZWFyTWV0YWRhdGEpOwotICAgIAotICAgIHVuc2lnbmVkIHVzZWRGcmFt
ZUJ5dGVzKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZSA/IG1fZnJhbWVCeXRlcyA6IDA7IH0KLQot
ICAgIE5hdGl2ZUltYWdlUHRyIG1faW1hZ2U7Ci0gICAgSW1hZ2VPcmllbnRhdGlvbiBtX29yaWVu
dGF0aW9uIHsgRGVmYXVsdEltYWdlT3JpZW50YXRpb24gfTsKLSAgICBTdWJzYW1wbGluZ0xldmVs
IG1fc3Vic2FtcGxpbmdMZXZlbCB7IDAgfTsKLSAgICBmbG9hdCBtX2R1cmF0aW9uIHsgMCB9Owot
ICAgIGJvb2wgbV9oYXZlTWV0YWRhdGEgOiAxOwotICAgIGJvb2wgbV9pc0NvbXBsZXRlIDogMTsK
LSAgICBib29sIG1faGFzQWxwaGEgOiAxOwotICAgIHVuc2lnbmVkIG1fZnJhbWVCeXRlcyB7IDAg
fTsKLX07Ci0KLS8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS8vIEJpdG1hcEltYWdlIENsYXNzCi0vLyA9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0KIGNsYXNzIEJpdG1hcEltYWdlIGZpbmFsIDogcHVi
bGljIEltYWdlIHsKICAgICBmcmllbmQgY2xhc3MgR2VuZXJhdGVkSW1hZ2U7CiAgICAgZnJpZW5k
IGNsYXNzIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOwpAQCAtMTU1LDEyICsxMDMsNiBAQCBwdWJs
aWM6CiAgICAgQ0ZEYXRhUmVmIGdldFRJRkZSZXByZXNlbnRhdGlvbigpIG92ZXJyaWRlOwogI2Vu
ZGlmCiAKLSNpZiBVU0UoQ0cpCi0gICAgV0VCQ09SRV9FWFBPUlQgQ0dJbWFnZVJlZiBnZXRDR0lt
YWdlUmVmKCkgb3ZlcnJpZGU7Ci0gICAgQ0dJbWFnZVJlZiBnZXRGaXJzdENHSW1hZ2VSZWZPZlNp
emUoY29uc3QgSW50U2l6ZSYpIG92ZXJyaWRlOwotICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBn
ZXRDR0ltYWdlQXJyYXkoKSBvdmVycmlkZTsKLSNlbmRpZgotCiAjaWYgUExBVEZPUk0oV0lOKQog
ICAgIGJvb2wgZ2V0SEJJVE1BUChIQklUTUFQKSBvdmVycmlkZTsKICAgICBib29sIGdldEhCSVRN
QVBPZlNpemUoSEJJVE1BUCwgY29uc3QgSW50U2l6ZSopIG92ZXJyaWRlOwpAQCAtMTc0LDggKzEx
NiwxMyBAQCBwdWJsaWM6CiAgICAgRXZhc19PYmplY3QqIGdldEV2YXNPYmplY3QoRXZhcyopIG92
ZXJyaWRlOwogI2VuZGlmCiAKKyAgICBXRUJDT1JFX0VYUE9SVCBOYXRpdmVJbWFnZVB0ciBuYXRp
dmVJbWFnZSgpIG92ZXJyaWRlOworICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlT2ZTaXpl
KGNvbnN0IEludFNpemUmKSBvdmVycmlkZTsKICAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFn
ZUZvckN1cnJlbnRGcmFtZSgpIG92ZXJyaWRlOwogICAgIEltYWdlT3JpZW50YXRpb24gb3JpZW50
YXRpb25Gb3JDdXJyZW50RnJhbWUoKSBvdmVycmlkZSB7IHJldHVybiBmcmFtZU9yaWVudGF0aW9u
QXRJbmRleChjdXJyZW50RnJhbWUoKSk7IH0KKyAgICBWZWN0b3I8TmF0aXZlSW1hZ2VQdHI+IGZy
YW1lc05hdGl2ZUltYWdlcygpIG92ZXJyaWRlOworICAgIAorICAgIFdFQkNPUkVfRVhQT1JUIGJv
b2wgaXNBbG1vc3RTb2xpZENvbG9yKCk7CiAKICAgICBib29sIGN1cnJlbnRGcmFtZUtub3duVG9C
ZU9wYXF1ZSgpIG92ZXJyaWRlOwogCkBAIC0yMTUsNyArMTYyLDYgQEAgcHJvdGVjdGVkOgogICAg
IHNpemVfdCBmcmFtZUNvdW50KCk7CiAKICAgICBOYXRpdmVJbWFnZVB0ciBmcmFtZUltYWdlQXRJ
bmRleChzaXplX3QsIGZsb2F0IHByZXNlbnRhdGlvblNjYWxlSGludCA9IDEpOwotICAgIE5hdGl2
ZUltYWdlUHRyIGNvcHlVbnNjYWxlZEZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCk7CiAKICAgICBi
b29sIGhhdmVGcmFtZUltYWdlQXRJbmRleChzaXplX3QpOwogCkBAIC0yMjUsMTEgKzE3MSwxMCBA
QCBwcm90ZWN0ZWQ6CiAgICAgSW1hZ2VPcmllbnRhdGlvbiBmcmFtZU9yaWVudGF0aW9uQXRJbmRl
eChzaXplX3QpOwogCiAgICAgLy8gRGVjb2RlcyBhbmQgY2FjaGVzIGEgZnJhbWUuIE5ldmVyIGFj
Y2Vzc2VkIGV4Y2VwdCBpbnRlcm5hbGx5LgotICAgIGVudW0gSW1hZ2VGcmFtZUNhY2hpbmcgeyBD
YWNoZU1ldGFkYXRhT25seSwgQ2FjaGVNZXRhZGF0YUFuZEZyYW1lIH07Ci0gICAgdm9pZCBjYWNo
ZUZyYW1lKHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCwgSW1hZ2VGcmFtZUNhY2hpbmcg
PSBDYWNoZU1ldGFkYXRhQW5kRnJhbWUpOworICAgIHZvaWQgY2FjaGVGcmFtZShzaXplX3QgaW5k
ZXgsIFN1YnNhbXBsaW5nTGV2ZWwsIEltYWdlRnJhbWVEYXRhOjpDYWNoaW5nID0gSW1hZ2VGcmFt
ZURhdGE6OkNhY2hpbmc6Ok1ldGFkYXRhQW5kSW1hZ2UpOwogCiAgICAgLy8gQ2FsbGVkIGJlZm9y
ZSBhY2Nlc3NpbmcgbV9mcmFtZXNbaW5kZXhdIGZvciBpbmZvIHdpdGhvdXQgZGVjb2RpbmcuIFJl
dHVybnMgZmFsc2Ugb24gaW5kZXggb3V0IG9mIGJvdW5kcy4KLSAgICBib29sIGVuc3VyZUZyYW1l
SXNDYWNoZWQoc2l6ZV90IGluZGV4LCBJbWFnZUZyYW1lQ2FjaGluZyA9IENhY2hlTWV0YWRhdGFB
bmRGcmFtZSk7CisgICAgYm9vbCBlbnN1cmVGcmFtZUlzQ2FjaGVkKHNpemVfdCBpbmRleCwgSW1h
Z2VGcmFtZURhdGE6OkNhY2hpbmcgPSBJbWFnZUZyYW1lRGF0YTo6Q2FjaGluZzo6TWV0YWRhdGFB
bmRJbWFnZSk7CiAKICAgICAvLyBDYWxsZWQgdG8gaW52YWxpZGF0ZSBjYWNoZWQgZGF0YS4gV2hl
biB8ZGVzdHJveUFsbHwgaXMgdHJ1ZSwgd2Ugd2lwZSBvdXQKICAgICAvLyB0aGUgZW50aXJlIGZy
YW1lIGJ1ZmZlciBjYWNoZSBhbmQgdGVsbCB0aGUgaW1hZ2Ugc291cmNlIHRvIGRlc3Ryb3kKQEAg
LTI5Miw3ICsyMzcsNyBAQCBwcml2YXRlOgogICAgIG11dGFibGUgSW50U2l6ZSBtX3NpemVSZXNw
ZWN0aW5nT3JpZW50YXRpb247CiAKICAgICBzaXplX3QgbV9jdXJyZW50RnJhbWUgeyAwIH07IC8v
IFRoZSBpbmRleCBvZiB0aGUgY3VycmVudCBmcmFtZSBvZiBhbmltYXRpb24uCi0gICAgVmVjdG9y
PEZyYW1lRGF0YSwgMT4gbV9mcmFtZXM7IC8vIEFuIGFycmF5IG9mIHRoZSBjYWNoZWQgZnJhbWVz
IG9mIHRoZSBhbmltYXRpb24uIFdlIGhhdmUgdG8gcmVmIGZyYW1lcyB0byBwaW4gdGhlbSBpbiB0
aGUgY2FjaGUuCisgICAgVmVjdG9yPEltYWdlRnJhbWVEYXRhLCAxPiBtX2ZyYW1lczsgLy8gQW4g
YXJyYXkgb2YgdGhlIGNhY2hlZCBmcmFtZXMgb2YgdGhlIGFuaW1hdGlvbi4gV2UgaGF2ZSB0byBy
ZWYgZnJhbWVzIHRvIHBpbiB0aGVtIGluIHRoZSBjYWNoZS4KIAogICAgIHN0ZDo6dW5pcXVlX3B0
cjxUaW1lcj4gbV9mcmFtZVRpbWVyOwogICAgIGludCBtX3JlcGV0aXRpb25Db3VudCB7IGNBbmlt
YXRpb25Ob25lIH07IC8vIEhvdyBtYW55IHRvdGFsIGFuaW1hdGlvbiBsb29wcyB3ZSBzaG91bGQg
ZG8uIFRoaXMgd2lsbCBiZSBjQW5pbWF0aW9uTm9uZSBpZiB0aGlzIGltYWdlIHR5cGUgaXMgaW5j
YXBhYmxlIG9mIGFuaW1hdGlvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0JpdG1hcFBpeGVscy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQml0bWFwUGl4ZWxzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWZhZTNkMmU0MGNjZjFkODFmNmJhNTdkYjY4
MmQ5MmQ0NjliYmFjMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0JpdG1hcFBpeGVscy5oCkBAIC0wLDAgKzEsMTgzIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSAiQ29sb3IuaCIKKyNpbmNsdWRlICJJbnRSZWN0LmgiCisjaW5jbHVkZSAiSW50U2l6ZS5oIgor
I2luY2x1ZGUgIk5hdGl2ZUltYWdlUHRyLmgiCisKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQml0bWFwUGl4ZWxzIHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEJpdG1hcFBpeGVscz4gY3JlYXRlKGNvbnN0IEludFNp
emUmIHNpemUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSkKKyAgICB7CisgICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPEJpdG1hcFBpeGVscz4oc2l6ZSwgcHJlbXVsdGlwbHlBbHBoYSk7Cisg
ICAgfQorCisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxCaXRtYXBQaXhlbHM+IGNyZWF0ZShj
b25zdCBCaXRtYXBQaXhlbHMmIG90aGVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8Qml0bWFwUGl4ZWxzPihvdGhlcik7CisgICAgfQorCisgICAgQml0bWFwUGl4ZWxz
KGNvbnN0IEludFNpemUmIHNpemUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSA9IHRydWUpCisgICAg
ICAgIDogbV9wcmVtdWx0aXBseUFscGhhKHByZW11bHRpcGx5QWxwaGEpCisgICAgeworICAgICAg
ICBBU1NFUlQoIXNpemUuaXNFbXB0eSgpKTsKKyAgICAgICAgc2V0U2l6ZShzaXplKTsKKyAgICB9
CisKKyAgICBCaXRtYXBQaXhlbHMoY29uc3QgQml0bWFwUGl4ZWxzJiBvdGhlcikKKyAgICB7Cisg
ICAgICAgIGlmICh0aGlzID09ICZvdGhlcikKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
CisgICAgICAgIG1fYmFja2luZ1N0b3JlID0gb3RoZXIubV9iYWNraW5nU3RvcmU7CisgICAgICAg
IG1fcGl4ZWxzID0gbV9iYWNraW5nU3RvcmUuZGF0YSgpOworICAgICAgICBtX3NpemUgPSBvdGhl
ci5tX3NpemU7CisgICAgICAgIG1fcmVjdCA9IG90aGVyLm1fcmVjdDsKKyAgICAgICAgbV9wcmVt
dWx0aXBseUFscGhhID0gb3RoZXIubV9wcmVtdWx0aXBseUFscGhhOworICAgIH0KKworICAgIE5h
dGl2ZUltYWdlUHRyIGltYWdlKCkgY29uc3Q7CisKKyAgICBib29sIHNldFNpemUoY29uc3QgSW50
U2l6ZSYgc2l6ZSkKKyAgICB7CisgICAgICAgIGlmICghbV9iYWNraW5nU3RvcmUudHJ5UmVzZXJ2
ZUNhcGFjaXR5KHNpemUuYXJlYSgpKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgCisgICAgICAgIG1fYmFja2luZ1N0b3JlLnJlc2l6ZShzaXplLmFyZWEoKSk7CisgICAgICAg
IG1fcGl4ZWxzID0gbV9iYWNraW5nU3RvcmUuZGF0YSgpOworICAgICAgICBtX3NpemUgPSBzaXpl
OworICAgICAgICBtX3JlY3QgPSBJbnRSZWN0KEludFBvaW50KCksIG1fc2l6ZSk7CisgICAgICAg
IGNsZWFyKCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAKKyAgICB2b2lkIHNl
dFJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkKKyAgICB7CisgICAgICAgIEFTU0VSVCghbV9zaXpl
LmlzRW1wdHkoKSk7CisgICAgICAgIEFTU0VSVChpbkJvdW5kcyhyZWN0KSk7CisgICAgICAgIG1f
cmVjdCA9IHJlY3Q7CisgICAgfQorICAgIAorICAgIEludFNpemUgc2l6ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fc2l6ZTsgfQorICAgIEludFJlY3QgcmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdDsg
fQorCisgICAgUkdCQTMyKiBhdChpbnQgeCwgaW50IHkpIGNvbnN0CisgICAgeworICAgICAgICBy
ZXR1cm4gbV9waXhlbHMgKyB5ICogbV9zaXplLndpZHRoKCkgKyB4OworICAgIH0KKworICAgIHZv
aWQgY2xlYXIoKQorICAgIHsKKyAgICAgICAgbWVtc2V0KG1fcGl4ZWxzLCAwLCBtX3NpemUuYXJl
YSgpICogc2l6ZW9mKFJHQkEzMikpOworICAgIH0KKworICAgIHZvaWQgY2xlYXJSZWN0KGNvbnN0
IEludFJlY3QmIHJlY3QpCisgICAgeworICAgICAgICBpZiAocmVjdC5pc0VtcHR5KCkgfHwgaW5C
b3VuZHMocmVjdCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIAorICAgICAgICBzaXpl
X3QgcmVjdFdpZHRoSW5CeXRlcyA9IHJlY3Qud2lkdGgoKSAqIHNpemVvZihSR0JBMzIpOworICAg
ICAgICBSR0JBMzIqIHN0YXJ0ID0gYXQocmVjdC54KCksIHJlY3QueSgpKTsKKyAgICAgICAgZm9y
IChpbnQgaSA9IDA7IGkgPCByZWN0LmhlaWdodCgpOyArK2kpIHsKKyAgICAgICAgICAgIG1lbXNl
dChzdGFydCwgMCwgcmVjdFdpZHRoSW5CeXRlcyk7CisgICAgICAgICAgICBzdGFydCArPSBtX3Np
emUud2lkdGgoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgcmVwZWF0Rmlyc3RSb3co
Y29uc3QgSW50UmVjdCYgcmVjdCkKKyAgICB7CisgICAgICAgIGlmIChyZWN0LmlzRW1wdHkoKSB8
fCBpbkJvdW5kcyhyZWN0KSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgCisgICAgICAg
IHNpemVfdCByZWN0V2lkdGhJbkJ5dGVzID0gcmVjdC53aWR0aCgpICogc2l6ZW9mKFJHQkEzMik7
CisgICAgICAgIFJHQkEzMiogc3JjID0gYXQocmVjdC54KCksIHJlY3QueSgpKTsKKyAgICAgICAg
UkdCQTMyKiBkZXN0ID0gc3JjICsgbV9zaXplLndpZHRoKCk7CisgICAgICAgIGZvciAoaW50IGkg
PSAxOyBpIDwgcmVjdC5oZWlnaHQoKTsgKytpKSB7CisgICAgICAgICAgICBtZW1jcHkoZGVzdCwg
c3JjLCByZWN0V2lkdGhJbkJ5dGVzKTsKKyAgICAgICAgICAgIGRlc3QgKz0gbV9zaXplLndpZHRo
KCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIHNldFJHQkEoaW50IHgsIGludCB5LCB1
bnNpZ25lZCByLCB1bnNpZ25lZCBnLCB1bnNpZ25lZCBiLCB1bnNpZ25lZCBhKQorICAgIHsKKyAg
ICAgICAgc2V0UkdCQShhdCh4LCB5KSwgciwgZywgYiwgYSk7CisgICAgfQorCisgICAgdm9pZCBz
ZXRSR0JBKFJHQkEzMiogZGVzdCwgdW5zaWduZWQgciwgdW5zaWduZWQgZywgdW5zaWduZWQgYiwg
dW5zaWduZWQgYSkKKyAgICB7CisgICAgICAgIGlmICghbV9wcmVtdWx0aXBseUFscGhhIHx8IGEg
Pj0gMjU1KQorICAgICAgICAgICAgKmRlc3QgPSBtYWtlUkdCQShyLCBnLCBiLCBhKTsKKyAgICAg
ICAgZWxzZSBpZiAoIWEpCisgICAgICAgICAgICAqZGVzdCA9IDA7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICpkZXN0ID0gbWFrZVByZW11bHRpcGxpZWRSR0JBKHIsIGcsIGIsIGEpOworICAg
IH0KKworICAgIHZvaWQgb3ZlclJHQkEoUkdCQTMyKiBkZXN0LCB1bnNpZ25lZCByLCB1bnNpZ25l
ZCBnLCB1bnNpZ25lZCBiLCB1bnNpZ25lZCBhKQorICAgIHsKKyAgICAgICAgaWYgKCFhKQorICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAKKyAgICAgICAgaWYgKGEgPj0gMjU1IHx8ICFhbHBo
YUNoYW5uZWwoKmRlc3QpKSB7CisgICAgICAgICAgICBzZXRSR0JBKGRlc3QsIHIsIGcsIGIsIGEp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAo
IW1fcHJlbXVsdGlwbHlBbHBoYSkKKyAgICAgICAgICAgICpkZXN0ID0gbWFrZVByZW11bHRpcGxp
ZWRSR0JBKHJlZENoYW5uZWwoKmRlc3QpLCBncmVlbkNoYW5uZWwoKmRlc3QpLCBibHVlQ2hhbm5l
bCgqZGVzdCksIGFscGhhQ2hhbm5lbCgqZGVzdCkpOworICAgICAgICAKKyAgICAgICAgUkdCQTMy
IHNyYyA9IG1ha2VSR0JBKHIsIGcsIGIsIGEpOworICAgICAgICAqZGVzdCA9IENvbG9yKCpkZXN0
KS5ibGVuZChzcmMpLnJnYigpOworICAgICAgICAKKyAgICAgICAgaWYgKCFtX3ByZW11bHRpcGx5
QWxwaGEpCisgICAgICAgICAgICAqZGVzdCA9IG1ha2VVblByZW11bHRpcGxpZWRSR0JBKHJlZENo
YW5uZWwoKmRlc3QpLCBncmVlbkNoYW5uZWwoKmRlc3QpLCBibHVlQ2hhbm5lbCgqZGVzdCksIGFs
cGhhQ2hhbm5lbCgqZGVzdCkpOworICAgIH0KKworICAgIGJvb2wgaW5Cb3VuZHMoY29uc3QgSW50
UG9pbnQmIHBvaW50KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIEludFJlY3QoSW50UG9p
bnQoKSwgbV9zaXplKS5jb250YWlucyhwb2ludCk7CisgICAgfQorCisgICAgYm9vbCBpbkJvdW5k
cyhjb25zdCBJbnRSZWN0JiByZWN0KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIEludFJl
Y3QoSW50UG9pbnQoKSwgbV9zaXplKS5jb250YWlucyhyZWN0KTsKKyAgICB9CisKK3ByaXZhdGU6
CisgICAgVmVjdG9yPFJHQkEzMj4gbV9iYWNraW5nU3RvcmU7CisgICAgUkdCQTMyKiBtX3BpeGVs
cyB7IG51bGxwdHIgfTsKKyAgICBJbnRTaXplIG1fc2l6ZTsKKyAgICBJbnRSZWN0IG1fcmVjdDsg
Ly8gVGhpcyB3aWxsIGFsd2F5cyBqdXN0IGJlIHRoZSBlbnRpcmUgYnVmZmVyIGV4Y2VwdCBmb3Ig
R0lGIGFuZCBQTkcgZnJhbWVzCisgICAgYm9vbCBtX3ByZW11bHRpcGx5QWxwaGEgeyB0cnVlIH07
Cit9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9D
b2xvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHAKaW5k
ZXggNGUyNWFhNmZkNzRkMWU0NmM1NDE2MTQ5OGJjMTcyYmY2MDA4NzVkMS4uNDM5ZjVhNjNjN2Jl
YmU1NjA0MmIyNGU3ZDcyZWNjZWNmMzZjNDBjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0NvbG9yLmNwcApAQCAtNDksNiArNDksNDAgQEAgY29uc3QgUkdCQTMyIENvbG9y
Ojp0cmFuc3BhcmVudDsKIHN0YXRpYyBjb25zdCBSR0JBMzIgbGlnaHRlbmVkQmxhY2sgPSAweEZG
NTQ1NDU0Owogc3RhdGljIGNvbnN0IFJHQkEzMiBkYXJrZW5lZFdoaXRlID0gMHhGRkFCQUJBQjsK
IAorc3RhdGljIGlubGluZSB1bnNpZ25lZCBtdWx0aXBseTI1NSh1bnNpZ25lZCBjKQoreworICAg
IC8vIGMgKiAyNTUKKyAgICAvLyAgID0gYyAqICgyNTYgLSAxKQorICAgIC8vICAgPSBjICogMjU2
IC0gYworICAgIHJldHVybiAoYyA8PCA4KSAtIGM7Cit9CisKK3N0YXRpYyBpbmxpbmUgdW5zaWdu
ZWQgZGl2aWRlMjU1KHVuc2lnbmVkIGMpCit7CisgICAgLy8gYyAvIDI1NQorICAgIC8vICAgPSBj
IC8gMjU2ICogKDEgKyAxIC8gMjU1KQorICAgIC8vICAgPSAoYyArIGMgLyAyNTUpIC8gMjU2Cisg
ICAgLy8gICA9IChjICsgKGMgKyBjIC8gMjU1KSAvIDI1NikgLyAyNTYKKyAgICAvLyAgID0gKGMg
KyBjIC8gMjU2ICsgYyAvICgyNTUgeCAyNTYpKSAvIDI1NgorICAgIC8vICB+PSAoYyArIGMgLyAy
NTYgKyAxKSAvIDI1NgorICAgIHJldHVybiAoYyArIChjID4+IDgpICsgMSkgPj4gODsKK30KKyAg
ICAKK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgZGl2aWRlQ2VpbCh1bnNpZ25lZCBjLCB1bnNpZ25l
ZCBkKQoreworICAgIHJldHVybiAoYyArIGQgLSAxKSAvIGQ7Cit9CisgICAgCitzdGF0aWMgaW5s
aW5lIHVuc2lnbmVkIHByZW11bHRpcGxpZWRDaGFubmVsKHVuc2lnbmVkIGMsIHVuc2lnbmVkIGEp
Cit7CisgICAgcmV0dXJuIGRpdmlkZTI1NShjICogYSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdW5z
aWduZWQgdW5wcmVtdWx0aXBsaWVkQ2hhbm5lbCh1bnNpZ25lZCBjLCB1bnNpZ25lZCBhKQorewor
ICAgIHJldHVybiBkaXZpZGVDZWlsKG11bHRpcGx5MjU1KGMpLCBhKTsKK30KKyAgICAKIFJHQkEz
MiBtYWtlUkdCKGludCByLCBpbnQgZywgaW50IGIpCiB7CiAgICAgcmV0dXJuIDB4RkYwMDAwMDAg
fCBzdGQ6Om1heCgwLCBzdGQ6Om1pbihyLCAyNTUpKSA8PCAxNiB8IHN0ZDo6bWF4KDAsIHN0ZDo6
bWluKGcsIDI1NSkpIDw8IDggfCBzdGQ6Om1heCgwLCBzdGQ6Om1pbihiLCAyNTUpKTsKQEAgLTU5
LDYgKzkzLDE2IEBAIFJHQkEzMiBtYWtlUkdCQShpbnQgciwgaW50IGcsIGludCBiLCBpbnQgYSkK
ICAgICByZXR1cm4gc3RkOjptYXgoMCwgc3RkOjptaW4oYSwgMjU1KSkgPDwgMjQgfCBzdGQ6Om1h
eCgwLCBzdGQ6Om1pbihyLCAyNTUpKSA8PCAxNiB8IHN0ZDo6bWF4KDAsIHN0ZDo6bWluKGcsIDI1
NSkpIDw8IDggfCBzdGQ6Om1heCgwLCBzdGQ6Om1pbihiLCAyNTUpKTsKIH0KIAorUkdCQTMyIG1h
a2VQcmVtdWx0aXBsaWVkUkdCQShpbnQgciwgaW50IGcsIGludCBiLCBpbnQgYSkKK3sKKyAgICBy
ZXR1cm4gbWFrZVJHQkEocHJlbXVsdGlwbGllZENoYW5uZWwociwgYSksIHByZW11bHRpcGxpZWRD
aGFubmVsKGcsIGEpLCBwcmVtdWx0aXBsaWVkQ2hhbm5lbChiLCBhKSwgYSk7Cit9CisgICAgCitS
R0JBMzIgbWFrZVVuUHJlbXVsdGlwbGllZFJHQkEoaW50IHIsIGludCBnLCBpbnQgYiwgaW50IGEp
Cit7CisgICAgcmV0dXJuIG1ha2VSR0JBKHVucHJlbXVsdGlwbGllZENoYW5uZWwociwgYSksIHVu
cHJlbXVsdGlwbGllZENoYW5uZWwoZywgYSksIHVucHJlbXVsdGlwbGllZENoYW5uZWwoYiwgYSks
IGEpOworfQorICAgIAogc3RhdGljIGludCBjb2xvckZsb2F0VG9SR0JBQnl0ZShmbG9hdCBmKQog
ewogICAgIC8vIFdlIHVzZSBscm91bmRmIGFuZCAyNTUgaW5zdGVhZCBvZiBuZXh0YWZ0ZXJmKDI1
NiwgMCkgdG8gbWF0Y2ggQ0cncyByb3VuZGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0NvbG9yLmgKaW5kZXggZGQyNjI3MGJiNDY2MGIzM2FlMDcwZThjOTQ0NTIwZDcyODQ1NGI4
YS4uYTU0NTMyYzc3NTVhN2M4NzY5MzYyNDBjYWU0ZWMzN2E0ZGEwZDA0MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCkBAIC01NCw2ICs1NCw4IEBAIHR5cGVkZWYg
dW5zaWduZWQgUkdCQTMyOyAvLyBEZXByZWNhdGVkOiBUeXBlIGZvciBhbiBSR0JBIHF1YWRydXBs
ZXQuIFVzZSBSR0JBIGNsCiAKIFdFQkNPUkVfRVhQT1JUIFJHQkEzMiBtYWtlUkdCKGludCByLCBp
bnQgZywgaW50IGIpOwogV0VCQ09SRV9FWFBPUlQgUkdCQTMyIG1ha2VSR0JBKGludCByLCBpbnQg
ZywgaW50IGIsIGludCBhKTsKK1dFQkNPUkVfRVhQT1JUIFJHQkEzMiBtYWtlUHJlbXVsdGlwbGll
ZFJHQkEoaW50IHIsIGludCBnLCBpbnQgYiwgaW50IGEpOworV0VCQ09SRV9FWFBPUlQgUkdCQTMy
IG1ha2VVblByZW11bHRpcGxpZWRSR0JBKGludCByLCBpbnQgZywgaW50IGIsIGludCBhKTsKIAog
V0VCQ09SRV9FWFBPUlQgUkdCQTMyIGNvbG9yV2l0aE92ZXJyaWRlQWxwaGEoUkdCQTMyIGNvbG9y
LCBmbG9hdCBvdmVycmlkZUFscGhhKTsKIFdFQkNPUkVfRVhQT1JUIFJHQkEzMiBjb2xvcldpdGhP
dmVycmlkZUFscGhhKFJHQkEzMiBjb2xvciwgT3B0aW9uYWw8ZmxvYXQ+IG92ZXJyaWRlQWxwaGEp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKaW5kZXggN2EyOTk5MmY3
NzE4OGUwMzgyOGQ4MGE2NWI4YmUyY2Q4ZGMyZGU3Ni4uOGU3YjUyYjFmNGYzMWM3NGEzY2IyYTEz
MjE1ZGE3N2EyYjE4YzA3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZS5oCkBAIC0xMzcsOCArMTM3LDExIEBAIHB1YmxpYzoKIAogICAgIGVudW0gVGlsZVJ1bGUgeyBT
dHJldGNoVGlsZSwgUm91bmRUaWxlLCBTcGFjZVRpbGUsIFJlcGVhdFRpbGUgfTsKIAorICAgIHZp
cnR1YWwgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2UoKSB7IHJldHVybiBudWxscHRyOyB9Cisg
ICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZU9mU2l6ZShjb25zdCBJbnRTaXpl
JikgeyByZXR1cm4gbnVsbHB0cjsgfQogICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgbmF0aXZl
SW1hZ2VGb3JDdXJyZW50RnJhbWUoKSB7IHJldHVybiBudWxscHRyOyB9CiAgICAgdmlydHVhbCBJ
bWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uRm9yQ3VycmVudEZyYW1lKCkgeyByZXR1cm4gSW1h
Z2VPcmllbnRhdGlvbigpOyB9CisgICAgdmlydHVhbCBWZWN0b3I8TmF0aXZlSW1hZ2VQdHI+IGZy
YW1lc05hdGl2ZUltYWdlcygpIHsgcmV0dXJuIHsgfTsgfQogCiAgICAgLy8gQWNjZXNzb3JzIGZv
ciBuYXRpdmUgaW1hZ2UgZm9ybWF0cy4KIApAQCAtMTUwLDEyICsxNTMsNiBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBDRkRhdGFSZWYgZ2V0VElGRlJlcHJlc2VudGF0aW9uKCkgeyByZXR1cm4gbnVs
bHB0cjsgfQogI2VuZGlmCiAKLSNpZiBVU0UoQ0cpCi0gICAgdmlydHVhbCBDR0ltYWdlUmVmIGdl
dENHSW1hZ2VSZWYoKSB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgdmlydHVhbCBDR0ltYWdlUmVm
IGdldEZpcnN0Q0dJbWFnZVJlZk9mU2l6ZShjb25zdCBJbnRTaXplJikgeyByZXR1cm4gbnVsbHB0
cjsgfQotICAgIHZpcnR1YWwgUmV0YWluUHRyPENGQXJyYXlSZWY+IGdldENHSW1hZ2VBcnJheSgp
IHsgcmV0dXJuIG51bGxwdHI7IH0KLSNlbmRpZgotCiAjaWYgUExBVEZPUk0oV0lOKQogICAgIHZp
cnR1YWwgYm9vbCBnZXRIQklUTUFQKEhCSVRNQVApIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmly
dHVhbCBib29sIGdldEhCSVRNQVBPZlNpemUoSEJJVE1BUCwgY29uc3QgSW50U2l6ZSopIHsgcmV0
dXJuIGZhbHNlOyB9CkBAIC0xNzksNiArMTc2LDggQEAgcHVibGljOgogI2lmICFBU1NFUlRfRElT
QUJMRUQKICAgICB2aXJ0dWFsIGJvb2wgbm90U29saWRDb2xvcigpIHsgcmV0dXJuIHRydWU7IH0K
ICNlbmRpZgorICAgIAorICAgIHZpcnR1YWwgdm9pZCBsYXlvdXRJZk5lZWRlZCgpIHsgfQogCiAg
ICAgdmlydHVhbCB2b2lkIGR1bXAoVGV4dFN0cmVhbSYpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lRGF0YS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lRGF0YS5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZjM3NGY4ZGQxNWFmY2I4NTgyNWEzOTg3YzAyMzY5ZTU2ZWQ1YjFkMAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVEYXRhLmNw
cApAQCAtMCwwICsxLDEzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW1hZ2VGcmFtZURhdGEu
aCIKKworI2luY2x1ZGUgIkNvbG9yLmgiCisKKyNpZiBVU0UoQ0cpCisjaW5jbHVkZSAiSW1hZ2VE
ZWNvZGVyQ0cuaCIKKyNlbHNlCisjaW5jbHVkZSAiSW1hZ2VEZWNvZGVyLmgiCisjZW5kaWYKKwor
I2luY2x1ZGUgIlBsYXRmb3JtSW1hZ2UuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitJbWFn
ZUZyYW1lRGF0YTo6SW1hZ2VGcmFtZURhdGEoKQoreworfQorCitJbWFnZUZyYW1lRGF0YTo6SW1h
Z2VGcmFtZURhdGEoTmF0aXZlSW1hZ2VQdHImJiBpbWFnZSkKKyAgICA6IG1fc3RhdHVzKERlY29k
aW5nU3RhdHVzOjpDb21wbGV0ZSkKKyAgICAsIG1faW1hZ2UoV1RGTW92ZShpbWFnZSkpCit7Cisg
ICAgbV9zaXplID0gUGxhdGZvcm1JbWFnZShtX2ltYWdlKS5zaXplKCk7CisgICAgbV9oYXNBbHBo
YSA9IFBsYXRmb3JtSW1hZ2UobV9pbWFnZSkuaGFzQWxwaGEoKTsKK30KKworSW1hZ2VGcmFtZURh
dGE6OkltYWdlRnJhbWVEYXRhKEltYWdlRGVjb2RlciYgZGVjb2Rlciwgc2l6ZV90IGluZGV4LCBT
dWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwsIENhY2hpbmcgZnJhbWVDYWNoaW5nKQor
eworICAgIEFTU0VSVChmcmFtZUNhY2hpbmcgPT0gQ2FjaGluZzo6TWV0YWRhdGEgfHwgZnJhbWVD
YWNoaW5nID09IENhY2hpbmc6Ok1ldGFkYXRhQW5kSW1hZ2UpOworICAgIAorICAgIGlmIChmcmFt
ZUNhY2hpbmcgPT0gQ2FjaGluZzo6SW1hZ2UgfHwgZnJhbWVDYWNoaW5nID09IENhY2hpbmc6Ok1l
dGFkYXRhQW5kSW1hZ2UpIHsKKyAgICAgICAgbV9pbWFnZSA9IGRlY29kZXIuY3JlYXRlRnJhbWVJ
bWFnZUF0SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwpOworICAgICAgICBtX3N1YnNhbXBs
aW5nTGV2ZWwgPSBzdWJzYW1wbGluZ0xldmVsOworICAgIH0KKyAgICAKKyAgICBpZiAoZnJhbWVD
YWNoaW5nID09IENhY2hpbmc6Ok1ldGFkYXRhIHx8IGZyYW1lQ2FjaGluZyA9PSBDYWNoaW5nOjpN
ZXRhZGF0YUFuZEltYWdlKSB7CisgICAgICAgIG1fb3JpZW50YXRpb24gPSBkZWNvZGVyLm9yaWVu
dGF0aW9uQXRJbmRleChpbmRleCk7CisgICAgICAgIG1fc3RhdHVzID0gZGVjb2Rlci5mcmFtZUlz
Q29tcGxldGVBdEluZGV4KGluZGV4KSA/IERlY29kaW5nU3RhdHVzOjpDb21wbGV0ZSA6IERlY29k
aW5nU3RhdHVzOjpQYXJ0aWFsOworICAgICAgICAKKyAgICAgICAgaWYgKGRlY29kZXIucmVwZXRp
dGlvbkNvdW50KCkgIT0gY0FuaW1hdGlvbk5vbmUpCisgICAgICAgICAgICBtX2R1cmF0aW9uID0g
ZGVjb2Rlci5mcmFtZUR1cmF0aW9uQXRJbmRleChpbmRleCk7CisgICAgICAgIAorICAgICAgICBt
X2hhc0FscGhhID0gZGVjb2Rlci5mcmFtZUhhc0FscGhhQXRJbmRleChpbmRleCk7CisgICAgICAg
IG1fc2l6ZSA9IGRlY29kZXIuZnJhbWVTaXplQXRJbmRleChpbmRleCwgc3Vic2FtcGxpbmdMZXZl
bCk7CisgICAgfQorfQorICAgIAorSW1hZ2VGcmFtZURhdGE6On5JbWFnZUZyYW1lRGF0YSgpCit7
CisgICAgY2xlYXJTdWJJbWFnZXMoKTsKK30KKyAgICAKK0ltYWdlRnJhbWVEYXRhJiBJbWFnZUZy
YW1lRGF0YTo6b3BlcmF0b3I9KGNvbnN0IEltYWdlRnJhbWVEYXRhJiBvdGhlcikKK3sKKyAgICBp
ZiAodGhpcyA9PSAmb3RoZXIpCisgICAgICAgIHJldHVybiAqdGhpczsKKworICAgIG1fc3RhdHVz
ID0gb3RoZXIubV9zdGF0dXM7CisgICAgbV9zaXplID0gb3RoZXIubV9zaXplOworICAgIG1faW1h
Z2UgPSBvdGhlci5tX2ltYWdlOworICAgIAorICAgIG1fcGl4ZWxzID0gb3RoZXIucGl4ZWxzKCkg
PyBCaXRtYXBQaXhlbHM6OmNyZWF0ZSgqb3RoZXIucGl4ZWxzKCkpIDogbnVsbHB0cjsKKyAgICAK
KyAgICBtX29yaWVudGF0aW9uID0gb3RoZXIubV9vcmllbnRhdGlvbjsKKyAgICBtX3N1YnNhbXBs
aW5nTGV2ZWwgPSBvdGhlci5tX3N1YnNhbXBsaW5nTGV2ZWw7CisgICAgbV9kdXJhdGlvbiA9IG90
aGVyLm1fZHVyYXRpb247CisgICAgbV9oYXNBbHBoYSA9IG90aGVyLm1faGFzQWxwaGE7CisgICAg
cmV0dXJuICp0aGlzOworfQorCit2b2lkIEltYWdlRnJhbWVEYXRhOjpjbGVhclN1YkltYWdlcygp
Cit7CisgICAgaWYgKCFtX2ltYWdlKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgUGxhdGZv
cm1JbWFnZShtX2ltYWdlKS5jbGVhclN1YkltYWdlcygpOworfQorCit1bnNpZ25lZCBJbWFnZUZy
YW1lRGF0YTo6Y2xlYXIoQ2FjaGluZyBmcmFtZUNhY2hpbmcpCit7CisgICAgQVNTRVJUKGZyYW1l
Q2FjaGluZyA9PSBDYWNoaW5nOjpFbXB0eSB8fCBmcmFtZUNhY2hpbmcgPT0gQ2FjaGluZzo6TWV0
YWRhdGEpOworICAgIAorICAgIHVuc2lnbmVkIGZyYW1lQnl0ZXMgPSB0aGlzLT5mcmFtZUJ5dGVz
KCk7CisgICAgCisgICAgY2xlYXJTdWJJbWFnZXMoKTsKKyAgICAKKyAgICBpZiAoZnJhbWVDYWNo
aW5nID09IENhY2hpbmc6OkVtcHR5KQorICAgICAgICAqdGhpcyA9IEltYWdlRnJhbWVEYXRhKCk7
CisgICAgZWxzZQorICAgICAgICBtX2ltYWdlID0gbnVsbHB0cjsKKyAgICAKKyAgICByZXR1cm4g
ZnJhbWVCeXRlczsKK30KKworQ29sb3IgSW1hZ2VGcmFtZURhdGE6OnNpbmdsZVBpeGVsU29saWRD
b2xvcigpIGNvbnN0Cit7CisgICAgaWYgKCFoYXNJbWFnZSgpIHx8IG1fc2l6ZSAhPSBJbnRTaXpl
KDEsIDEpKQorICAgICAgICByZXR1cm4gQ29sb3IoKTsKKyAgICAKKyAgICByZXR1cm4gUGxhdGZv
cm1JbWFnZShtX2ltYWdlKS5zaW5nbGVQaXhlbFNvbGlkQ29sb3IoKTsKK30KKworYm9vbCBJbWFn
ZUZyYW1lRGF0YTo6aXNBbG1vc3RTb2xpZENvbG9yKCkgY29uc3QKK3sKKyAgICBpZiAoIWhhc0lt
YWdlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICByZXR1cm4gUGxhdGZvcm1J
bWFnZShtX2ltYWdlKS5pc0FsbW9zdFNvbGlkQ29sb3IoKTsKK30KKyAgICAKK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVEYXRhLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lRGF0YS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmY2ZmI3NThlZjNhNDI1OGNiZGIzYWUyZjQ2ZTg0NDBmNzMwZWY0N2MKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lRGF0YS5o
CkBAIC0wLDAgKzEsMTAxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQml0bWFwUGl4ZWxzLmgiCisjaW5j
bHVkZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgorI2luY2x1ZGUgIkludFNpemUuaCIKKyNpbmNsdWRl
ICJOYXRpdmVJbWFnZVB0ci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENvbG9y
OworY2xhc3MgSW1hZ2VEZWNvZGVyOworCisvLyBTdWJzYW1wbGluZ0xldmVsLiAwIGlzIG5vIHN1
YnNhbXBsaW5nLCAxIGlzIGhhbGYgZGltZW5zaW9ucyBvbiBlYWNoIGF4aXMgZXRjLgordXNpbmcg
U3Vic2FtcGxpbmdMZXZlbCA9IHVpbnQ4X3Q7CisKK2VudW0gOiBTdWJzYW1wbGluZ0xldmVsIHsK
KyAgICBNaW5TdWJzYW1wbGluZ0xldmVsID0gMCwKKyAgICBNYXhTdWJzYW1wbGluZ0xldmVsID0g
MywKKyAgICBEZWZhdWx0U3Vic2FtcGxpbmdMZXZlbCA9IE1pblN1YnNhbXBsaW5nTGV2ZWwKK307
CisKK2NsYXNzIEltYWdlRnJhbWVEYXRhIHsKKyAgICBmcmllbmQgY2xhc3MgSW1hZ2VEZWNvZGVy
OworcHVibGljOgorICAgIGVudW0gY2xhc3MgQ2FjaGluZyB7IEVtcHR5LCBNZXRhZGF0YSwgSW1h
Z2UsIE1ldGFkYXRhQW5kSW1hZ2UgfTsKKyAgICBlbnVtIGNsYXNzIERlY29kaW5nU3RhdHVzIHsg
RW1wdHksIFBhcnRpYWwsIENvbXBsZXRlIH07CisgICAgCisgICAgSW1hZ2VGcmFtZURhdGEoKTsK
KyAgICBJbWFnZUZyYW1lRGF0YShOYXRpdmVJbWFnZVB0ciYmKTsKKyAgICBJbWFnZUZyYW1lRGF0
YShJbWFnZURlY29kZXImLCBzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgPSBEZWZhdWx0
U3Vic2FtcGxpbmdMZXZlbCwgQ2FjaGluZyA9IENhY2hpbmc6Ok1ldGFkYXRhQW5kSW1hZ2UpOwor
ICAgIEltYWdlRnJhbWVEYXRhKGNvbnN0IEltYWdlRnJhbWVEYXRhJiBvdGhlcikgeyBvcGVyYXRv
cj0ob3RoZXIpOyB9CisKKyAgICB+SW1hZ2VGcmFtZURhdGEoKTsKKworICAgIEltYWdlRnJhbWVE
YXRhJiBvcGVyYXRvcj0oY29uc3QgSW1hZ2VGcmFtZURhdGEmIG90aGVyKTsKKyAgICAKKyAgICB1
bnNpZ25lZCBjbGVhcihDYWNoaW5nKTsKKyAgICBDb2xvciBzaW5nbGVQaXhlbFNvbGlkQ29sb3Io
KSBjb25zdDsKKyAgICBib29sIGlzQWxtb3N0U29saWRDb2xvcigpIGNvbnN0OworICAgIAorICAg
IERlY29kaW5nU3RhdHVzIHN0YXR1cygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdHVzOyB9CisgICAg
Ym9vbCBpc0NvbXBsZXRlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0dXMgPT0gRGVjb2RpbmdTdGF0
dXM6OkNvbXBsZXRlOyB9CisgICAgSW50U2l6ZSBzaXplKCkgY29uc3QgeyByZXR1cm4gaGFzUGl4
ZWxzKCkgPyBwaXhlbHMoKS0+c2l6ZSgpIDogbV9zaXplOyB9CisgICAgdW5zaWduZWQgZnJhbWVC
eXRlcygpIGNvbnN0IHsgcmV0dXJuIGhhc0ltYWdlKCkgPyBtX3NpemUuYXJlYSgpICogc2l6ZW9m
KFJHQkEzMikgOiAwOyB9CisgICAgTmF0aXZlSW1hZ2VQdHIgaW1hZ2UoKSBjb25zdCB7IHJldHVy
biBtX2ltYWdlOyB9CisgICAgQml0bWFwUGl4ZWxzKiBwaXhlbHMoKSBjb25zdCB7IHJldHVybiBt
X3BpeGVscyA/IG1fcGl4ZWxzLmdldCgpIDogbnVsbHB0cjsgfQorICAgIAorICAgIEltYWdlT3Jp
ZW50YXRpb24gb3JpZW50YXRpb24oKSBjb25zdCB7IHJldHVybiBtX29yaWVudGF0aW9uOyB9Cisg
ICAgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsKCkgY29uc3QgeyByZXR1cm4gbV9z
dWJzYW1wbGluZ0xldmVsOyB9CisgICAgZmxvYXQgZHVyYXRpb24oKSBjb25zdCB7IHJldHVybiBt
X2R1cmF0aW9uOyB9CisgICAgCisgICAgYm9vbCBoYXNBbHBoYSgpIGNvbnN0IHsgcmV0dXJuIG1f
aGFzQWxwaGE7IH0KKyAgICBib29sIGhhc0ltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZTsg
fQorICAgIGJvb2wgaGFzTWV0YWRhdGEoKSBjb25zdCB7IHJldHVybiAhbV9zaXplLmlzRW1wdHko
KTsgfQorICAgIGJvb2wgaGFzUGl4ZWxzKCkgY29uc3QgeyByZXR1cm4gcGl4ZWxzKCk7IH0KKyAg
ICAKK3ByaXZhdGU6CisgICAgdm9pZCBjbGVhclN1YkltYWdlcygpOworCisgICAgdm9pZCBzZXRT
dGF0dXMoRGVjb2RpbmdTdGF0dXMgc3RhdHVzKSB7IG1fc3RhdHVzID0gc3RhdHVzOyB9CisgICAg
dm9pZCBzZXRPcmllbnRhdGlvbihJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKSB7IG1fb3Jp
ZW50YXRpb24gPSBvcmllbnRhdGlvbjsgfTsKKyAgICB2b2lkIHNldER1cmF0aW9uKHVuc2lnbmVk
IGR1cmF0aW9uKSB7IG1fZHVyYXRpb24gPSBkdXJhdGlvbjsgfQorICAgIHZvaWQgc2V0SGFzQWxw
aGEoYm9vbCBoYXNBbHBoYSkgeyBtX2hhc0FscGhhID0gaGFzQWxwaGE7IH0KKyAgICAKKyAgICBE
ZWNvZGluZ1N0YXR1cyBtX3N0YXR1cyB7IERlY29kaW5nU3RhdHVzOjpFbXB0eSB9OworICAgIElu
dFNpemUgbV9zaXplOworICAgIE5hdGl2ZUltYWdlUHRyIG1faW1hZ2U7CisgICAgc3RkOjp1bmlx
dWVfcHRyPEJpdG1hcFBpeGVscz4gbV9waXhlbHM7CisgICAgCisgICAgSW1hZ2VPcmllbnRhdGlv
biBtX29yaWVudGF0aW9uIHsgRGVmYXVsdEltYWdlT3JpZW50YXRpb24gfTsKKyAgICBTdWJzYW1w
bGluZ0xldmVsIG1fc3Vic2FtcGxpbmdMZXZlbCB7IDAgfTsKKyAgICBmbG9hdCBtX2R1cmF0aW9u
IHsgMCB9OworICAgIGJvb2wgbV9oYXNBbHBoYSB7IHRydWUgfTsKK307CisgICAgCit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKaW5kZXgg
ZGRkOGE1NWJhMDkwNmM1ODY2YTE5MmNmOGU0MTRlYTcwN2I3MjhhYy4uODJmNmUyZDZlNDU0MzNk
YTFhN2Q1NmIzNzBkZmE2MWE0YzQxOTEzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcApAQCAtMjI0LDYgKzIyNCwxMSBAQCBOYXRpdmVJ
bWFnZVB0ciBJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4
LCBTdWJzYW1wbGluZ0xldgogICAgIHJldHVybiBpbml0aWFsaXplZCgpID8gbV9kZWNvZGVyLT5j
cmVhdGVGcmFtZUltYWdlQXRJbmRleChpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCkgOiBudWxscHRy
OwogfQogCitJbWFnZUZyYW1lRGF0YSBJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVEYXRhQXRJbmRl
eChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgSW1hZ2VG
cmFtZURhdGE6OkNhY2hpbmcgY2FjaGluZykKK3sKKyAgICByZXR1cm4gaW5pdGlhbGl6ZWQoKSA/
IEltYWdlRnJhbWVEYXRhKCptX2RlY29kZXIsIGluZGV4LCBzdWJzYW1wbGluZ0xldmVsLCBjYWNo
aW5nKSA6IEltYWdlRnJhbWVEYXRhKCk7Cit9CisgICAgCiB2b2lkIEltYWdlU291cmNlOjpkdW1w
KFRleHRTdHJlYW0mIHRzKSBjb25zdAogewogICAgIGlmIChtX2FsbG93U3Vic2FtcGxpbmcpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaAppbmRleCA2
MDM1NzM5YjdlOGIwOTZkYzhkZmU5YzUzMGE0MmM2ZjI5MWJkYTAwLi5hNDBjN2NlOTMwN2NkYWRm
MDc5YWI3MDFhODI3OTliNjkwNTI5ZDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlU291cmNlLmgKQEAgLTI3LDYgKzI3LDcgQEAKICNpZm5kZWYgSW1hZ2VT
b3VyY2VfaAogI2RlZmluZSBJbWFnZVNvdXJjZV9oCiAKKyNpbmNsdWRlICJJbWFnZUZyYW1lRGF0
YS5oIgogI2luY2x1ZGUgIkltYWdlT3JpZW50YXRpb24uaCIKICNpbmNsdWRlICJJbnRQb2ludC5o
IgogI2luY2x1ZGUgIk5hdGl2ZUltYWdlUHRyLmgiCkBAIC02Myw5ICs2NCw2IEBAIGNvbnN0IGlu
dCBjQW5pbWF0aW9uTG9vcE9uY2UgPSAwOwogY29uc3QgaW50IGNBbmltYXRpb25Mb29wSW5maW5p
dGUgPSAtMTsKIGNvbnN0IGludCBjQW5pbWF0aW9uTm9uZSA9IC0yOwogCi0vLyBTdWJzYW1wbGlu
Z0xldmVsLiAwIGlzIG5vIHN1YnNhbXBsaW5nLCAxIGlzIGhhbGYgZGltZW5zaW9ucyBvbiBlYWNo
IGF4aXMgZXRjLgotdHlwZWRlZiBzaG9ydCBTdWJzYW1wbGluZ0xldmVsOwotCiBjbGFzcyBJbWFn
ZVNvdXJjZSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW1hZ2VTb3VyY2UpOwogICAgIGZy
aWVuZCBjbGFzcyBCaXRtYXBJbWFnZTsKQEAgLTEzMiwxOCArMTMwLDE5IEBAIHB1YmxpYzoKICAg
ICBib29sIGFsbG93U3Vic2FtcGxpbmdPZkZyYW1lQXRJbmRleChzaXplX3QpIGNvbnN0OwogICAg
IAogICAgIC8vIFNpemUgb2Ygb3B0aW9uYWxseSBzdWJzYW1wbGVkIGZyYW1lLgotICAgIEludFNp
emUgZnJhbWVTaXplQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSAwLCBSZXNwZWN0
SW1hZ2VPcmllbnRhdGlvbkVudW0gPSBEb05vdFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKSBjb25z
dDsKKyAgICBJbnRTaXplIGZyYW1lU2l6ZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVs
ID0gRGVmYXVsdFN1YnNhbXBsaW5nTGV2ZWwsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSA9
IERvTm90UmVzcGVjdEltYWdlT3JpZW50YXRpb24pIGNvbnN0OwogICAgIAogICAgIC8vIFJldHVy
biB0aGUgbnVtYmVyIG9mIGJ5dGVzIGluIHRoZSBkZWNvZGVkIGZyYW1lLiBJZiB0aGUgZnJhbWUg
aXMgbm90IHlldAogICAgIC8vIGRlY29kZWQgdGhlbiByZXR1cm4gMC4KLSAgICB1bnNpZ25lZCBm
cmFtZUJ5dGVzQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSAwKSBjb25zdDsKKyAg
ICB1bnNpZ25lZCBmcmFtZUJ5dGVzQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBE
ZWZhdWx0U3Vic2FtcGxpbmdMZXZlbCkgY29uc3Q7CiAgICAgCiAgICAgZmxvYXQgZnJhbWVEdXJh
dGlvbkF0SW5kZXgoc2l6ZV90KTsKICAgICBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uQXRJ
bmRleChzaXplX3QpIGNvbnN0OyAvLyBFWElGIGltYWdlIG9yaWVudGF0aW9uCiAgICAgCiAgICAg
Ly8gQ2FsbGVycyBzaG91bGQgbm90IGNhbGwgdGhpcyBhZnRlciBjYWxsaW5nIGNsZWFyKCkgd2l0
aCBhIGhpZ2hlciBpbmRleDsKICAgICAvLyBzZWUgY29tbWVudHMgb24gY2xlYXIoKSBhYm92ZS4K
LSAgICBOYXRpdmVJbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNh
bXBsaW5nTGV2ZWwgPSAwKTsKKyAgICBOYXRpdmVJbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJ
bmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBEZWZhdWx0U3Vic2FtcGxpbmdMZXZlbCk7
CisgICAgSW1hZ2VGcmFtZURhdGEgY3JlYXRlRnJhbWVEYXRhQXRJbmRleChzaXplX3QsIFN1YnNh
bXBsaW5nTGV2ZWwgPSBEZWZhdWx0U3Vic2FtcGxpbmdMZXZlbCwgSW1hZ2VGcmFtZURhdGE6OkNh
Y2hpbmcgPSBJbWFnZUZyYW1lRGF0YTo6Q2FjaGluZzo6TWV0YWRhdGFBbmRJbWFnZSk7CiAgICAg
CiBwcml2YXRlOgogICAgIHZvaWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVfdCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUltYWdlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUltYWdlLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYWI3YWVhNDg5ZjNlYjJhODI4NzcxYzIxMDNlOGQ0ZDBiZTE3YmU1ZAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2Uu
aApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiR3JhcGhpY3NUeXBlcy5oIgorI2lu
Y2x1ZGUgIkltYWdlT3JpZW50YXRpb24uaCIKKyNpbmNsdWRlICJOYXRpdmVJbWFnZVB0ci5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENvbG9yOworY2xhc3MgRmxvYXRSZWN0Owor
Y2xhc3MgSW50U2l6ZTsKK2NsYXNzIEdyYXBoaWNzQ29udGV4dDsKKworY2xhc3MgUGxhdGZvcm1J
bWFnZSB7CitwdWJsaWM6CisgICAgUGxhdGZvcm1JbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYg
aW1hZ2UpCisgICAgICAgIDogbV9pbWFnZShpbWFnZSkKKyAgICB7CisgICAgfQorCisgICAgYm9v
bCBpc05pbCgpIGNvbnN0IHsgcmV0dXJuICFtX2ltYWdlOyB9CisgICAgdm9pZCBjbGVhclN1Yklt
YWdlcygpOworCisgICAgSW50U2l6ZSBzaXplKCkgY29uc3Q7CisgICAgYm9vbCBoYXNBbHBoYSgp
IGNvbnN0OworICAgIENvbG9yIHNpbmdsZVBpeGVsU29saWRDb2xvcigpIGNvbnN0OworICAgIGJv
b2wgaXNBbG1vc3RTb2xpZENvbG9yKCkgY29uc3Q7CisgICAgdm9pZCBkcmF3KEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwg
Y29uc3QgSW1hZ2VPcmllbnRhdGlvbiYpIGNvbnN0OworCisgICAgc3RhdGljIGZsb2F0IHN1YnNh
bXBsaW5nU2NhbGUoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0KTsKKworcHJpdmF0ZToKKyNpZiBVU0UoQ0cpCisgICAg
Q0dJbWFnZVJlZiBjZ0ltYWdlUmVmKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZSA/IG1faW1hZ2Uu
Z2V0KCkgOiBudWxscHRyOyB9CisjZW5kaWYKKyAgICBOYXRpdmVJbWFnZVB0ciBtX2ltYWdlOwor
fTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCmluZGV4IGY0YzE0NTdiYmIyNTU3NTRm
MDBhMDYyNWVlODNlMDRkYTdjNmVmY2YuLmQ1MjBmNWQ1ODVhYzYwZGJhZWUyNTVlMWI4M2MyNGRj
Njg3MjEwYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KQEAgLTIxMiw3ICsyMTIsNyBA
QCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dXBkYXRlRGlzcGxh
eU1vZGUoKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICB9
CiAKLSAgICAgICAgICAgICAgICBtX3BhdXNlZEltYWdlID0gaW1hZ2UtPmdldENHSW1hZ2VSZWYo
KTsKKyAgICAgICAgICAgICAgICBtX3BhdXNlZEltYWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9y
Q3VycmVudEZyYW1lKCk7CiAgICAgICAgICAgICAgICAgaWYgKCFtX3BhdXNlZEltYWdlKSB7CiAg
ICAgICAgICAgICAgICAgICAgIG1fZGlzcGxheU1vZGUgPSBQYWludEl0QmxhY2s7CiAgICAgICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMTc3MjJiZWM1M2FiOGEwOGE4ZGE4NTI4YjllMGQ3YzRkMGNkNDEz
NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcAorKysg
L2Rldi9udWxsCkBAIC0xLDE0MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAy
MDA1LCAyMDA2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDcgQWxwIFRva2VyIDxhbHBAYXRva2VyLmNvbT4KLSAqIENvcHlyaWdodCAoQykgMjAw
OSBEaXJrIFNjaHVsemUgPGtyaXRAd2Via2l0Lm9yZz4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkJpdG1h
cEltYWdlLmgiCi0KLSNpZiBVU0UoQ0FJUk8pCi0KLSNpbmNsdWRlICJDYWlyb1V0aWxpdGllcy5o
IgotI2luY2x1ZGUgIkltYWdlT2JzZXJ2ZXIuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybUNvbnRleHRD
YWlyby5oIgotI2luY2x1ZGUgIlRpbWVyLmgiCi0jaW5jbHVkZSA8Y2Fpcm8uaD4KLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgTmF0aXZlSW1hZ2UgewotCi1JbnRTaXplIHNpemUo
Y29uc3QgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4mIGltYWdlKQotewotICAgIHJldHVybiBjYWly
b1N1cmZhY2VTaXplKGltYWdlLmdldCgpKTsKLX0KLQotYm9vbCBoYXNBbHBoYShjb25zdCBSZWZQ
dHI8Y2Fpcm9fc3VyZmFjZV90PiYgaW1hZ2UpCi17Ci0gICAgcmV0dXJuIGNhaXJvX3N1cmZhY2Vf
Z2V0X2NvbnRlbnQoaW1hZ2UuZ2V0KCkpICE9IENBSVJPX0NPTlRFTlRfQ09MT1I7Ci19Ci0KLUNv
bG9yIHNpbmdsZVBpeGVsU29saWRDb2xvcihjb25zdCBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiYg
aW1hZ2UpCi17Ci0gICAgQVNTRVJUKGltYWdlKTsKLSAgICAKLSAgICBpZiAoTmF0aXZlSW1hZ2U6
OnNpemUoaW1hZ2UpICE9IEludFNpemUoMSwgMSkpCi0gICAgICAgIHJldHVybiBDb2xvcigpOwot
Ci0gICAgaWYgKGNhaXJvX3N1cmZhY2VfZ2V0X3R5cGUoaW1hZ2UuZ2V0KCkpICE9IENBSVJPX1NV
UkZBQ0VfVFlQRV9JTUFHRSkKLSAgICAgICAgcmV0dXJuIENvbG9yKCk7Ci0KLSAgICBSR0JBMzIq
IHBpeGVsID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8UkdCQTMyKj4oY2Fpcm9faW1hZ2Vfc3VyZmFj
ZV9nZXRfZGF0YShpbWFnZS5nZXQoKSkpOwotICAgIHJldHVybiBjb2xvckZyb21QcmVtdWx0aXBs
aWVkQVJHQigqcGl4ZWwpOwotfQotCi19Ci0KLXZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmMsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLAotICAgIEJsZW5kTW9kZSBibGVuZE1vZGUsIElt
YWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiBkZXNjcmlwdGlvbikKLXsKLSAgICBpZiAoIWRzdC53
aWR0aCgpIHx8ICFkc3QuaGVpZ2h0KCkgfHwgIXNyYy53aWR0aCgpIHx8ICFzcmMuaGVpZ2h0KCkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIHN0YXJ0QW5pbWF0aW9uKCk7Ci0KLSAgICBhdXRvIHN1
cmZhY2UgPSBmcmFtZUltYWdlQXRJbmRleChtX2N1cnJlbnRGcmFtZSk7Ci0gICAgaWYgKCFzdXJm
YWNlKSAvLyBJZiBpdCdzIHRvbyBlYXJseSB3ZSB3b24ndCBoYXZlIGFuIGltYWdlIHlldC4KLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgQ29sb3IgY29sb3IgPSBzaW5nbGVQaXhlbFNvbGlkQ29sb3Io
KTsKLSAgICBpZiAoY29sb3IuaXNWYWxpZCgpKSB7Ci0gICAgICAgIGZpbGxXaXRoU29saWRDb2xv
cihjb250ZXh0LCBkc3QsIGNvbG9yLCBvcCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBjb250ZXh0LnNhdmUoKTsKLQotICAgIC8vIFNldCB0aGUgY29tcG9zaXRpbmcgb3BlcmF0aW9u
LgotICAgIGlmIChvcCA9PSBDb21wb3NpdGVTb3VyY2VPdmVyICYmIGJsZW5kTW9kZSA9PSBCbGVu
ZE1vZGVOb3JtYWwgJiYgIWZyYW1lSGFzQWxwaGFBdEluZGV4KG1fY3VycmVudEZyYW1lKSkKLSAg
ICAgICAgY29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlQ29weSk7Ci0gICAg
ZWxzZQotICAgICAgICBjb250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihvcCwgYmxlbmRNb2Rl
KTsKLQotI2lmIEVOQUJMRShJTUFHRV9ERUNPREVSX0RPV05fU0FNUExJTkcpCi0gICAgSW50U2l6
ZSBzY2FsZWRTaXplID0gY2Fpcm9TdXJmYWNlU2l6ZShzdXJmYWNlLmdldCgpKTsKLSAgICBGbG9h
dFJlY3QgYWRqdXN0ZWRTcmNSZWN0ID0gYWRqdXN0U291cmNlUmVjdEZvckRvd25TYW1wbGluZyhz
cmMsIHNjYWxlZFNpemUpOwotI2Vsc2UKLSAgICBGbG9hdFJlY3QgYWRqdXN0ZWRTcmNSZWN0KHNy
Yyk7Ci0jZW5kaWYKLQotICAgIEltYWdlT3JpZW50YXRpb24gZnJhbWVPcmllbnRhdGlvbihkZXNj
cmlwdGlvbi5pbWFnZU9yaWVudGF0aW9uKCkpOwotICAgIGlmIChkZXNjcmlwdGlvbi5yZXNwZWN0
SW1hZ2VPcmllbnRhdGlvbigpID09IFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKQotICAgICAgICBm
cmFtZU9yaWVudGF0aW9uID0gZnJhbWVPcmllbnRhdGlvbkF0SW5kZXgobV9jdXJyZW50RnJhbWUp
OwotCi0gICAgRmxvYXRSZWN0IGRzdFJlY3QgPSBkc3Q7Ci0KLSAgICBpZiAoZnJhbWVPcmllbnRh
dGlvbiAhPSBEZWZhdWx0SW1hZ2VPcmllbnRhdGlvbikgewotICAgICAgICAvLyBJbWFnZU9yaWVu
dGF0aW9uIGV4cGVjdHMgdGhlIG9yaWdpbiB0byBiZSBhdCAoMCwgMCkuCi0gICAgICAgIGNvbnRl
eHQudHJhbnNsYXRlKGRzdFJlY3QueCgpLCBkc3RSZWN0LnkoKSk7Ci0gICAgICAgIGRzdFJlY3Qu
c2V0TG9jYXRpb24oRmxvYXRQb2ludCgpKTsKLSAgICAgICAgY29udGV4dC5jb25jYXRDVE0oZnJh
bWVPcmllbnRhdGlvbi50cmFuc2Zvcm1Gcm9tRGVmYXVsdChkc3RSZWN0LnNpemUoKSkpOwotICAg
ICAgICBpZiAoZnJhbWVPcmllbnRhdGlvbi51c2VzV2lkdGhBc0hlaWdodCgpKSB7Ci0gICAgICAg
ICAgICAvLyBUaGUgZGVzdGluYXRpb24gcmVjdGFuZ2xlIHdpbGwgaGF2ZSBpdCdzIHdpZHRoIGFu
ZCBoZWlnaHQgYWxyZWFkeSByZXZlcnNlZCBmb3IgdGhlIG9yaWVudGF0aW9uIG9mCi0gICAgICAg
ICAgICAvLyB0aGUgaW1hZ2UsIGFzIGl0IHdhcyBuZWVkZWQgZm9yIHBhZ2UgbGF5b3V0LCBzbyB3
ZSBuZWVkIHRvIHJldmVyc2UgaXQgYmFjayBoZXJlLgotICAgICAgICAgICAgZHN0UmVjdCA9IEZs
b2F0UmVjdChkc3RSZWN0LngoKSwgZHN0UmVjdC55KCksIGRzdFJlY3QuaGVpZ2h0KCksIGRzdFJl
Y3Qud2lkdGgoKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBjb250ZXh0LnBsYXRmb3JtQ29u
dGV4dCgpLT5kcmF3U3VyZmFjZVRvQ29udGV4dChzdXJmYWNlLmdldCgpLCBkc3RSZWN0LCBhZGp1
c3RlZFNyY1JlY3QsIGNvbnRleHQpOwotCi0gICAgY29udGV4dC5yZXN0b3JlKCk7Ci0KLSAgICBp
ZiAoaW1hZ2VPYnNlcnZlcigpKQotICAgICAgICBpbWFnZU9ic2VydmVyKCktPmRpZERyYXcodGhp
cyk7Ci19Ci0KLWJvb2wgRnJhbWVEYXRhOjpjbGVhcihib29sIGNsZWFyTWV0YWRhdGEpCi17Ci0g
ICAgaWYgKGNsZWFyTWV0YWRhdGEpCi0gICAgICAgIG1faGF2ZU1ldGFkYXRhID0gZmFsc2U7Ci0K
LSAgICBpZiAobV9pbWFnZSkgewotICAgICAgICBtX2ltYWdlID0gbnVsbHB0cjsKLSAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gVVNFKENBSVJPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1JbWFnZUNhaXJvLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtSW1hZ2VDYWlyby5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNzBhZGFlYzI3MGUzMWIwNTRhZmM1ZjY2ZDQ4Mjg4YWViZjA2MWUzYQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L1BsYXRmb3JtSW1hZ2VDYWlyby5jcHAKQEAgLTAsMCArMSwxMTEgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIlBsYXRmb3JtSW1hZ2UuaCIKKworI2lmIFVTRShDQUlSTykKKworI2luY2x1ZGUgIkNh
aXJvVXRpbGl0aWVzLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0Q2Fpcm8uaCIKKyNpbmNs
dWRlIDxjYWlyby5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgUGxhdGZvcm1JbWFn
ZTo6Y2xlYXJTdWJJbWFnZXMoKQoreworfQorCitJbnRTaXplIFBsYXRmb3JtSW1hZ2U6OnNpemUo
KSBjb25zdAoreworICAgIHJldHVybiBpc05pbCgpID8gSW50U2l6ZSgpIDogY2Fpcm9TdXJmYWNl
U2l6ZShtX2ltYWdlLmdldCgpKTsKK30KKworYm9vbCBQbGF0Zm9ybUltYWdlOjpoYXNBbHBoYSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIGlzTmlsKCkgfHwgY2Fpcm9fc3VyZmFjZV9nZXRfY29udGVu
dChtX2ltYWdlLmdldCgpKSAhPSBDQUlST19DT05URU5UX0NPTE9SOworfQorCitDb2xvciBQbGF0
Zm9ybUltYWdlOjpzaW5nbGVQaXhlbFNvbGlkQ29sb3IoKSBjb25zdAoreworICAgIGlmIChpc05p
bCgpIHx8IHNpemUoKSAhPSBJbnRTaXplKDEsIDEpKQorICAgICAgICByZXR1cm4gQ29sb3IoKTsK
KworICAgIGlmIChjYWlyb19zdXJmYWNlX2dldF90eXBlKG1faW1hZ2UuZ2V0KCkpICE9IENBSVJP
X1NVUkZBQ0VfVFlQRV9JTUFHRSkKKyAgICAgICAgcmV0dXJuIENvbG9yKCk7CisKKyAgICBSR0JB
MzIqIHBpeGVsID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8UkdCQTMyKj4oY2Fpcm9faW1hZ2Vfc3Vy
ZmFjZV9nZXRfZGF0YShtX2ltYWdlLmdldCgpKSk7CisgICAgcmV0dXJuIGNvbG9yRnJvbVByZW11
bHRpcGxpZWRBUkdCKCpwaXhlbCk7Cit9CisKK2Jvb2wgUGxhdGZvcm1JbWFnZTo6aXNBbG1vc3RT
b2xpZENvbG9yKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Zsb2F0IFBsYXRm
b3JtSW1hZ2U6OnN1YnNhbXBsaW5nU2NhbGUoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRS
ZWN0JiwgY29uc3QgRmxvYXRSZWN0JikKK3sKKyAgICByZXR1cm4gMTsKK30KKwordm9pZCBQbGF0
Zm9ybUltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRTaXplJiwgQ29t
cG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBtb2RlLCBjb25zdCBJbWFnZU9yaWVudGF0aW9u
JiBvcmllbnRhdGlvbikgY29uc3QKK3sKKyAgICBjb250ZXh0LnNhdmUoKTsKKyAgICAKKyAgICAv
LyBTZXQgdGhlIGNvbXBvc2l0aW5nIG9wZXJhdGlvbi4KKyAgICBpZiAob3AgPT0gQ29tcG9zaXRl
U291cmNlT3ZlciAmJiBtb2RlID09IEJsZW5kTW9kZU5vcm1hbCAmJiAhaGFzQWxwaGEoKSkKKyAg
ICAgICAgY29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlQ29weSk7CisgICAg
ZWxzZQorICAgICAgICBjb250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihvcCwgbW9kZSk7Cisg
ICAgICAgIAorI2lmIEVOQUJMRShJTUFHRV9ERUNPREVSX0RPV05fU0FNUExJTkcpCisgICAgSW50
U2l6ZSBzY2FsZWRTaXplID0gY2Fpcm9TdXJmYWNlU2l6ZShtX2ltYWdlLmdldCgpKTsKKyAgICBG
bG9hdFJlY3QgYWRqdXN0ZWRTcmNSZWN0ID0gYWRqdXN0U291cmNlUmVjdEZvckRvd25TYW1wbGlu
ZyhzcmNSZWN0LCBzY2FsZWRTaXplKTsKKyNlbHNlCisgICAgRmxvYXRSZWN0IGFkanVzdGVkU3Jj
UmVjdChzcmNSZWN0KTsKKyNlbmRpZgorICAgICAgICAKKyAgICBGbG9hdFJlY3QgYWRqdXN0ZWRE
ZXN0UmVjdCA9IGRlc3RSZWN0OworICAgICAgICAKKyAgICBpZiAob3JpZW50YXRpb24gIT0gRGVm
YXVsdEltYWdlT3JpZW50YXRpb24pIHsKKyAgICAgICAgLy8gSW1hZ2VPcmllbnRhdGlvbiBleHBl
Y3RzIHRoZSBvcmlnaW4gdG8gYmUgYXQgKDAsIDApLgorICAgICAgICBjb250ZXh0LnRyYW5zbGF0
ZShkZXN0UmVjdC54KCksIGRlc3RSZWN0LnkoKSk7CisgICAgICAgIGFkanVzdGVkRGVzdFJlY3Qu
c2V0TG9jYXRpb24oRmxvYXRQb2ludCgpKTsKKyAgICAgICAgY29udGV4dC5jb25jYXRDVE0ob3Jp
ZW50YXRpb24udHJhbnNmb3JtRnJvbURlZmF1bHQoYWRqdXN0ZWREZXN0UmVjdC5zaXplKCkpKTsK
KyAgICAgICAgaWYgKG9yaWVudGF0aW9uLnVzZXNXaWR0aEFzSGVpZ2h0KCkpIHsKKyAgICAgICAg
ICAgIC8vIFRoZSBkZXN0aW5hdGlvbiByZWN0YW5nbGUgd2lsbCBoYXZlIGl0J3Mgd2lkdGggYW5k
IGhlaWdodCBhbHJlYWR5IHJldmVyc2VkIGZvciB0aGUgb3JpZW50YXRpb24gb2YKKyAgICAgICAg
ICAgIC8vIHRoZSBpbWFnZSwgYXMgaXQgd2FzIG5lZWRlZCBmb3IgcGFnZSBsYXlvdXQsIHNvIHdl
IG5lZWQgdG8gcmV2ZXJzZSBpdCBiYWNrIGhlcmUuCisgICAgICAgICAgICBhZGp1c3RlZERlc3RS
ZWN0LnNldFNpemUoYWRqdXN0ZWREZXN0UmVjdC5zaXplKCkudHJhbnNwb3NlZFNpemUoKSk7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLT5kcmF3U3Vy
ZmFjZVRvQ29udGV4dChtX2ltYWdlLmdldCgpLCBhZGp1c3RlZERlc3RSZWN0LCBhZGp1c3RlZFNy
Y1JlY3QsIGNvbnRleHQpOworCisgICAgY29udGV4dC5yZXN0b3JlKCk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVTRShDQUlSTykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFwSW1hZ2VDRy5jcHAKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAzYzgxYTE3MGJlNzlhZTZiZTZjYWNkYzk5ZjRjMzk4Y2Fh
ZjQyNmQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFwSW1hZ2VDRy5jcHAKKysrIC9k
ZXYvbnVsbApAQCAtMSwyMDYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAw
NSwgMjAwNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiQml0bWFwSW1hZ2UuaCIKLQotI2lmIFVTRShDRykKLQotI2luY2x1ZGUgIkNvcmVHcmFwaGlj
c1NQSS5oIgotI2luY2x1ZGUgIkZsb2F0Q29udmVyc2lvbi5oIgotI2luY2x1ZGUgIkdlb21ldHJ5
VXRpbGl0aWVzLmgiCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0Q0cuaCIKLSNpbmNsdWRlICJJ
bWFnZU9ic2VydmVyLmgiCi0jaW5jbHVkZSAiU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5oIgotI2lu
Y2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLQotI2lmIFVTRShBUFBLSVQpCi0jaW5jbHVkZSA8QXBw
bGljYXRpb25TZXJ2aWNlcy9BcHBsaWNhdGlvblNlcnZpY2VzLmg+Ci0jZW5kaWYKLQotI2lmIFBM
QVRGT1JNKENPQ09BKQotI2luY2x1ZGUgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKLSNlbmRp
ZgotCi0jaWYgUExBVEZPUk0oV0lOKQotI2luY2x1ZGUgPFdlYktpdFN5c3RlbUludGVyZmFjZS9X
ZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KLSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LW5hbWVzcGFjZSBOYXRpdmVJbWFnZSB7Ci0KLUludFNpemUgc2l6ZShjb25zdCBSZXRhaW5QdHI8
Q0dJbWFnZVJlZj4mIGltYWdlKQotewotICAgIEFTU0VSVChpbWFnZSk7Ci0gICAgcmV0dXJuIElu
dFNpemUoQ0dJbWFnZUdldFdpZHRoKGltYWdlLmdldCgpKSwgQ0dJbWFnZUdldEhlaWdodChpbWFn
ZS5nZXQoKSkpOwotfQotCi1ib29sIGhhc0FscGhhKGNvbnN0IFJldGFpblB0cjxDR0ltYWdlUmVm
PiYpCi17Ci0gICAgLy8gRklYTUU6IEFuc3dlciBjb3JyZWN0bHkgdGhlIHF1ZXN0aW9uOiBkb2Vz
IHRoZSBDR0ltYWdlUmVmIGhhdmUgYWxwaGEgY2hhbm5uZWw/Ci0gICAgcmV0dXJuIHRydWU7Ci19
Ci0gICAgCi1Db2xvciBzaW5nbGVQaXhlbFNvbGlkQ29sb3IoY29uc3QgUmV0YWluUHRyPENHSW1h
Z2VSZWY+JiBpbWFnZSkKLXsKLSAgICBBU1NFUlQoaW1hZ2UpOwotICAgIAotICAgIGlmIChOYXRp
dmVJbWFnZTo6c2l6ZShpbWFnZSkgIT0gSW50U2l6ZSgxLCAxKSkKLSAgICAgICAgcmV0dXJuIENv
bG9yKCk7Ci0gICAgCi0gICAgdW5zaWduZWQgY2hhciBwaXhlbFs0XTsgLy8gUkdCQQotICAgIGF1
dG8gYml0bWFwQ29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKHBpeGVsLCAx
LCAxLCA4LCBzaXplb2YocGl4ZWwpLCBzUkdCQ29sb3JTcGFjZVJlZigpLAotICAgICAgICBrQ0dJ
bWFnZUFscGhhUHJlbXVsdGlwbGllZExhc3QgfCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkJpZykpOwot
Ci0gICAgaWYgKCFiaXRtYXBDb250ZXh0KQotICAgICAgICByZXR1cm4gQ29sb3IoKTsKLSAgICAK
LSAgICBDR0NvbnRleHRTZXRCbGVuZE1vZGUoYml0bWFwQ29udGV4dC5nZXQoKSwga0NHQmxlbmRN
b2RlQ29weSk7Ci0gICAgQ0dDb250ZXh0RHJhd0ltYWdlKGJpdG1hcENvbnRleHQuZ2V0KCksIENH
UmVjdE1ha2UoMCwgMCwgMSwgMSksIGltYWdlLmdldCgpKTsKLSAgICAKLSAgICBpZiAoIXBpeGVs
WzNdKQotICAgICAgICByZXR1cm4gQ29sb3IoMCwgMCwgMCwgMCk7Ci0KLSAgICByZXR1cm4gQ29s
b3IocGl4ZWxbMF0gKiAyNTUgLyBwaXhlbFszXSwgcGl4ZWxbMV0gKiAyNTUgLyBwaXhlbFszXSwg
cGl4ZWxbMl0gKiAyNTUgLyBwaXhlbFszXSwgcGl4ZWxbM10pOwotfQotCi19Ci0KLWJvb2wgRnJh
bWVEYXRhOjpjbGVhcihib29sIGNsZWFyTWV0YWRhdGEpCi17Ci0gICAgaWYgKGNsZWFyTWV0YWRh
dGEpCi0gICAgICAgIG1faGF2ZU1ldGFkYXRhID0gZmFsc2U7Ci0KLSAgICBtX3N1YnNhbXBsaW5n
TGV2ZWwgPSAwOwotCi0gICAgaWYgKG1faW1hZ2UpIHsKLSNpZiBDQUNIRV9TVUJJTUFHRVMKLSAg
ICAgICAgc3ViaW1hZ2VDYWNoZSgpLmNsZWFySW1hZ2UobV9pbWFnZS5nZXQoKSk7Ci0jZW5kaWYK
LSAgICAgICAgbV9pbWFnZSA9IG51bGxwdHI7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0K
LSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLUNHSW1hZ2VSZWYgQml0bWFwSW1hZ2U6OmdldENHSW1h
Z2VSZWYoKQotewotICAgIHJldHVybiBmcmFtZUltYWdlQXRJbmRleCgwKS5nZXQoKTsKLX0KLQot
Q0dJbWFnZVJlZiBCaXRtYXBJbWFnZTo6Z2V0Rmlyc3RDR0ltYWdlUmVmT2ZTaXplKGNvbnN0IElu
dFNpemUmIHNpemUpCi17Ci0gICAgc2l6ZV90IGNvdW50ID0gZnJhbWVDb3VudCgpOwotICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewotICAgICAgICBDR0ltYWdlUmVmIGNn
SW1hZ2UgPSBmcmFtZUltYWdlQXRJbmRleChpKS5nZXQoKTsKLSAgICAgICAgaWYgKGNnSW1hZ2Ug
JiYgSW50U2l6ZShDR0ltYWdlR2V0V2lkdGgoY2dJbWFnZSksIENHSW1hZ2VHZXRIZWlnaHQoY2dJ
bWFnZSkpID09IHNpemUpCi0gICAgICAgICAgICByZXR1cm4gY2dJbWFnZTsKLSAgICB9Ci0KLSAg
ICAvLyBGYWxsYmFjayB0byB0aGUgZGVmYXVsdCBDR0ltYWdlUmVmIGlmIHdlIGNhbid0IGZpbmQg
dGhlIHJpZ2h0IHNpemUKLSAgICByZXR1cm4gZ2V0Q0dJbWFnZVJlZigpOwotfQotCi1SZXRhaW5Q
dHI8Q0ZBcnJheVJlZj4gQml0bWFwSW1hZ2U6OmdldENHSW1hZ2VBcnJheSgpCi17Ci0gICAgc2l6
ZV90IGNvdW50ID0gZnJhbWVDb3VudCgpOwotICAgIGlmICghY291bnQpCi0gICAgICAgIHJldHVy
biBudWxscHRyOwotICAgIAotICAgIENGTXV0YWJsZUFycmF5UmVmIGFycmF5ID0gQ0ZBcnJheUNy
ZWF0ZU11dGFibGUoTlVMTCwgY291bnQsICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpOwotICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewotICAgICAgICBpZiAoQ0dJbWFnZVJl
ZiBjdXJyRnJhbWUgPSBmcmFtZUltYWdlQXRJbmRleChpKS5nZXQoKSkKLSAgICAgICAgICAgIENG
QXJyYXlBcHBlbmRWYWx1ZShhcnJheSwgY3VyckZyYW1lKTsKLSAgICB9Ci0gICAgcmV0dXJuIGFk
b3B0Q0YoYXJyYXkpOwotfQotCi12b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4
dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwg
SW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uIGRlc2NyaXB0aW9uKQotewotI2lmIFBMQVRGT1JN
KElPUykKLSAgICBzdGFydEFuaW1hdGlvbihEb05vdENhdGNoVXApOwotI2Vsc2UKLSAgICBzdGFy
dEFuaW1hdGlvbigpOwotI2VuZGlmCi0KLSAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2U7
Ci0gICAgLy8gTmV2ZXIgdXNlIHN1YnNhbXBsZWQgaW1hZ2VzIGZvciBkcmF3aW5nIGludG8gUERG
IGNvbnRleHRzLgotICAgIGlmICh3a0NHQ29udGV4dElzUERGQ29udGV4dChjdHh0LnBsYXRmb3Jt
Q29udGV4dCgpKSkKLSAgICAgICAgaW1hZ2UgPSBjb3B5VW5zY2FsZWRGcmFtZUltYWdlQXRJbmRl
eChtX2N1cnJlbnRGcmFtZSk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIENHUmVjdCB0cmFuc2Zvcm1l
ZERlc3RpbmF0aW9uUmVjdCA9IENHUmVjdEFwcGx5QWZmaW5lVHJhbnNmb3JtKGRlc3RSZWN0LCBD
R0NvbnRleHRHZXRDVE0oY3R4dC5wbGF0Zm9ybUNvbnRleHQoKSkpOwotICAgICAgICBmbG9hdCBz
dWJzYW1wbGluZ1NjYWxlID0gc3RkOjptaW48ZmxvYXQ+KDEsIHN0ZDo6bWF4KHRyYW5zZm9ybWVk
RGVzdGluYXRpb25SZWN0LnNpemUud2lkdGggLyBzcmNSZWN0LndpZHRoKCksIHRyYW5zZm9ybWVk
RGVzdGluYXRpb25SZWN0LnNpemUuaGVpZ2h0IC8gc3JjUmVjdC5oZWlnaHQoKSkpOwotCi0gICAg
ICAgIGltYWdlID0gZnJhbWVJbWFnZUF0SW5kZXgobV9jdXJyZW50RnJhbWUsIHN1YnNhbXBsaW5n
U2NhbGUpOwotICAgIH0KLQotICAgIGlmICghaW1hZ2UpIC8vIElmIGl0J3MgdG9vIGVhcmx5IHdl
IHdvbid0IGhhdmUgYW4gaW1hZ2UgeWV0LgotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgQ29s
b3IgY29sb3IgPSBzaW5nbGVQaXhlbFNvbGlkQ29sb3IoKTsKLSAgICBpZiAoY29sb3IuaXNWYWxp
ZCgpKSB7Ci0gICAgICAgIGZpbGxXaXRoU29saWRDb2xvcihjdHh0LCBkZXN0UmVjdCwgY29sb3Is
IGNvbXBvc2l0ZU9wKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIFN1YnNhbXBs
aW5nIG1heSBoYXZlIGdpdmVuIHVzIGFuIGltYWdlIHRoYXQgaXMgc21hbGxlciB0aGFuIHNpemUo
KS4KLSAgICBJbnRTaXplIGltYWdlU2l6ZShDR0ltYWdlR2V0V2lkdGgoaW1hZ2UuZ2V0KCkpLCBD
R0ltYWdlR2V0SGVpZ2h0KGltYWdlLmdldCgpKSk7Ci0gICAgCi0gICAgLy8gc3JjUmVjdCBpcyBp
biB0aGUgY29vcmRpbmF0ZXMgb2YgdGhlIHVuc3Vic2FtcGxlZCBpbWFnZSwgc28gd2UgaGF2ZSB0
byBtYXAgaXQgdG8gdGhlIHN1YnNhbXBsZWQgaW1hZ2UuCi0gICAgRmxvYXRSZWN0IHNjYWxlZFNy
Y1JlY3QgPSBzcmNSZWN0OwotICAgIGlmIChpbWFnZVNpemUgIT0gbV9zaXplKSB7Ci0gICAgICAg
IEZsb2F0UmVjdCBvcmlnaW5hbEltYWdlQm91bmRzKEZsb2F0UG9pbnQoKSwgbV9zaXplKTsKLSAg
ICAgICAgRmxvYXRSZWN0IHN1YnNhbXBsZWRJbWFnZUJvdW5kcyhGbG9hdFBvaW50KCksIGltYWdl
U2l6ZSk7Ci0gICAgICAgIHNjYWxlZFNyY1JlY3QgPSBtYXBSZWN0KHNyY1JlY3QsIG9yaWdpbmFs
SW1hZ2VCb3VuZHMsIHN1YnNhbXBsZWRJbWFnZUJvdW5kcyk7Ci0gICAgfQotICAgIAotICAgIElt
YWdlT3JpZW50YXRpb24gb3JpZW50YXRpb247Ci0gICAgaWYgKGRlc2NyaXB0aW9uLnJlc3BlY3RJ
bWFnZU9yaWVudGF0aW9uKCkgPT0gUmVzcGVjdEltYWdlT3JpZW50YXRpb24pCi0gICAgICAgIG9y
aWVudGF0aW9uID0gZnJhbWVPcmllbnRhdGlvbkF0SW5kZXgobV9jdXJyZW50RnJhbWUpOwotCi0g
ICAgY3R4dC5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNjYWxl
ZFNyY1JlY3QsIGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUsIG9yaWVudGF0aW9uKTsKLQotICAgIGlm
IChpbWFnZU9ic2VydmVyKCkpCi0gICAgICAgIGltYWdlT2JzZXJ2ZXIoKS0+ZGlkRHJhdyh0aGlz
KTsKLX0KLQotUmV0YWluUHRyPENHSW1hZ2VSZWY+IEJpdG1hcEltYWdlOjpjb3B5VW5zY2FsZWRG
cmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgpCi17Ci0gICAgaWYgKGluZGV4ID49IGZyYW1l
Q291bnQoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBpZiAoaW5kZXggPj0gbV9m
cmFtZXMuc2l6ZSgpIHx8ICFtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZSkKLSAgICAgICAgY2FjaGVG
cmFtZShpbmRleCwgMCk7Ci0KLSAgICBpZiAoIW1fZnJhbWVzW2luZGV4XS5tX3N1YnNhbXBsaW5n
TGV2ZWwpCi0gICAgICAgIHJldHVybiBtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZTsKLQotICAgIHJl
dHVybiBtX3NvdXJjZS5jcmVhdGVGcmFtZUltYWdlQXRJbmRleChpbmRleCk7Ci19Ci0KLX0KLQot
I2VuZGlmIC8vIFVTRShDRykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9QYXR0ZXJuQ0cuY3BwCmluZGV4IGI0MjhkNTBkOTRiZjkyNDI4MDMyODdkMmVlYzE2YmQ2
OWM1MjhkOTIuLjNkYWExMzlhYjdlYTViNDIxNTc3ODgzNWQzNTNkOGFkYjVmMGM3NWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcApA
QCAtNzIsNyArNzIsNyBAQCBDR1BhdHRlcm5SZWYgUGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0
ZXJuKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdXNlclNwYWNlVHJhbgogICAgIC8vIElmIHdlJ3Jl
IHJlcGVhdGluZyBpbiBib3RoIGRpcmVjdGlvbnMsIHdlIGNhbiB1c2UgaW1hZ2UtYmFja2VkIHBh
dHRlcm5zCiAgICAgLy8gaW5zdGVhZCBvZiBjdXN0b20gcGF0dGVybnMsIGFuZCBhdm9pZCB0aWxp
bmctZWRnZSBwaXhlbCBjcmFja3MuCiAgICAgaWYgKG1fcmVwZWF0WCAmJiBtX3JlcGVhdFkpCi0g
ICAgICAgIHJldHVybiB3a0NHUGF0dGVybkNyZWF0ZVdpdGhJbWFnZUFuZFRyYW5zZm9ybSh0aWxl
SW1hZ2UoKS0+Z2V0Q0dJbWFnZVJlZigpLCBwYXR0ZXJuVHJhbnNmb3JtLCB3a1BhdHRlcm5UaWxp
bmdDb25zdGFudFNwYWNpbmcpOworICAgICAgICByZXR1cm4gd2tDR1BhdHRlcm5DcmVhdGVXaXRo
SW1hZ2VBbmRUcmFuc2Zvcm0odGlsZUltYWdlKCktPm5hdGl2ZUltYWdlKCkuZ2V0KCksIHBhdHRl
cm5UcmFuc2Zvcm0sIHdrUGF0dGVyblRpbGluZ0NvbnN0YW50U3BhY2luZyk7CiAKICAgICAvLyBJ
ZiBGTFRfTUFYIHNob3VsZCBhbHNvIGJlIHVzZWQgZm9yIHhTdGVwIG9yIHlTdGVwLCBub3RoaW5n
IGlzIHJlbmRlcmVkLiBVc2luZyBmcmFjdGlvbnMgb2YgRkxUX01BWCBhbHNvCiAgICAgLy8gcmVz
dWx0IGluIG5vdGhpbmcgYmVpbmcgcmVuZGVyZWQuCkBAIC04Myw3ICs4Myw3IEBAIENHUGF0dGVy
blJlZiBQYXR0ZXJuOjpjcmVhdGVQbGF0Zm9ybVBhdHRlcm4oY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiB1c2VyU3BhY2VUcmFuCiAgICAgQ0dGbG9hdCB5U3RlcCA9IG1fcmVwZWF0WSA/IHRpbGVSZWN0
LmhlaWdodCgpIDogKDEgPDwgMjIpOwogCiAgICAgLy8gVGhlIHBhdHRlcm4gd2lsbCByZWxlYXNl
IHRoZSBDR0ltYWdlUmVmIHdoZW4gaXQncyBkb25lIHJlbmRlcmluZyBpbiBwYXR0ZXJuUmVsZWFz
ZUNhbGxiYWNrCi0gICAgQ0dJbWFnZVJlZiBwbGF0Zm9ybUltYWdlID0gQ0dJbWFnZVJldGFpbih0
aWxlSW1hZ2UoKS0+Z2V0Q0dJbWFnZVJlZigpKTsKKyAgICBDR0ltYWdlUmVmIHBsYXRmb3JtSW1h
Z2UgPSB0aWxlSW1hZ2UoKS0+bmF0aXZlSW1hZ2UoKS5sZWFrUmVmKCk7CiAKICAgICBjb25zdCBD
R1BhdHRlcm5DYWxsYmFja3MgcGF0dGVybkNhbGxiYWNrcyA9IHsgMCwgcGF0dGVybkNhbGxiYWNr
LCBwYXR0ZXJuUmVsZWFzZUNhbGxiYWNrIH07CiAgICAgcmV0dXJuIENHUGF0dGVybkNyZWF0ZShw
bGF0Zm9ybUltYWdlLCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgeFN0ZXAsIHlTdGVwLCBr
Q0dQYXR0ZXJuVGlsaW5nQ29uc3RhbnRTcGFjaW5nLCBUUlVFLCAmcGF0dGVybkNhbGxiYWNrcyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QbGF0Zm9y
bUltYWdlQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGxhdGZv
cm1JbWFnZUNHLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZmIyZGUwZWExMmRhMjE0ZjEwNDZjMzk2MmU4ZWFi
NTNjNjQ0MTI1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvUGxhdGZvcm1JbWFnZUNHLmNwcApAQCAtMCwwICsxLDE3MSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJQbGF0Zm9ybUltYWdlLmgiCisKKyNpZiBVU0UoQ0cpCisKKyNpbmNsdWRlICJD
b2xvci5oIgorI2luY2x1ZGUgIkNvcmVHcmFwaGljc1NQSS5oIgorI2luY2x1ZGUgIkZsb2F0UmVj
dC5oIgorI2luY2x1ZGUgIkdlb21ldHJ5VXRpbGl0aWVzLmgiCisjaW5jbHVkZSAiR3JhcGhpY3ND
b250ZXh0Q0cuaCIKKyNpbmNsdWRlICJJbnRTaXplLmgiCisjaW5jbHVkZSAiU3ViaW1hZ2VDYWNo
ZVdpdGhUaW1lci5oIgorCisjaWYgUExBVEZPUk0oV0lOKQorI2luY2x1ZGUgPFdlYktpdFN5c3Rl
bUludGVyZmFjZS9XZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KKyNlbmRpZgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisgICAgCit2b2lkIFBsYXRmb3JtSW1hZ2U6OmNsZWFyU3ViSW1hZ2VzKCkKK3sK
KyNpZiBDQUNIRV9TVUJJTUFHRVMKKyAgICBpZiAoIWlzTmlsKCkpCisgICAgICAgIHN1YmltYWdl
Q2FjaGUoKS5jbGVhckltYWdlKGNnSW1hZ2VSZWYoKSk7CisjZW5kaWYKK30KKworSW50U2l6ZSBQ
bGF0Zm9ybUltYWdlOjpzaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gaXNOaWwoKSA/IEludFNp
emUoKSA6IEludFNpemUoQ0dJbWFnZUdldFdpZHRoKGNnSW1hZ2VSZWYoKSksIENHSW1hZ2VHZXRI
ZWlnaHQoY2dJbWFnZVJlZigpKSk7Cit9CisKK2Jvb2wgUGxhdGZvcm1JbWFnZTo6aGFzQWxwaGEo
KSBjb25zdAoreworICAgIC8vIEZJWE1FOiBBbnN3ZXIgY29ycmVjdGx5IHRoZSBxdWVzdGlvbjog
ZG9lcyB0aGUgQ0dJbWFnZVJlZiBoYXZlIGFscGhhIGNoYW5ubmVsPworICAgIHJldHVybiB0cnVl
OworfQorCitDb2xvciBQbGF0Zm9ybUltYWdlOjpzaW5nbGVQaXhlbFNvbGlkQ29sb3IoKSBjb25z
dAoreworICAgIGlmIChpc05pbCgpIHx8IHNpemUoKSAhPSBJbnRTaXplKDEsIDEpKQorICAgICAg
ICByZXR1cm4gQ29sb3IoKTsKKyAgICAKKyAgICB1bnNpZ25lZCBjaGFyIHBpeGVsWzRdOyAvLyBS
R0JBCisgICAgYXV0byBiaXRtYXBDb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVh
dGUocGl4ZWwsIDEsIDEsIDgsIHNpemVvZihwaXhlbCksIHNSR0JDb2xvclNwYWNlUmVmKCksCisg
ICAgICAgIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkTGFzdCB8IGtDR0JpdG1hcEJ5dGVPcmRl
cjMyQmlnKSk7CisgICAgCisgICAgaWYgKCFiaXRtYXBDb250ZXh0KQorICAgICAgICByZXR1cm4g
Q29sb3IoKTsKKyAgICAKKyAgICBDR0NvbnRleHRTZXRCbGVuZE1vZGUoYml0bWFwQ29udGV4dC5n
ZXQoKSwga0NHQmxlbmRNb2RlQ29weSk7CisgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGJpdG1hcENv
bnRleHQuZ2V0KCksIENHUmVjdE1ha2UoMCwgMCwgMSwgMSksIGNnSW1hZ2VSZWYoKSk7CisgICAg
CisgICAgaWYgKCFwaXhlbFszXSkKKyAgICAgICAgcmV0dXJuIENvbG9yKDAsIDAsIDAsIDApOwor
ICAgIAorICAgIHJldHVybiBDb2xvcihwaXhlbFswXSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhlbFsx
XSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhlbFsyXSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhlbFszXSk7
Cit9CisgICAgCitib29sIFBsYXRmb3JtSW1hZ2U6OmlzQWxtb3N0U29saWRDb2xvcigpIGNvbnN0
Cit7CisgICAgQ0dJbWFnZVJlZiBpbWFnZSA9IGNnSW1hZ2VSZWYoKTsKKyAgICBBU1NFUlQoQ0dJ
bWFnZUdldEJpdHNQZXJDb21wb25lbnQoaW1hZ2UpID09IDgpOworICAgIAorICAgIENHQml0bWFw
SW5mbyBpbWFnZUluZm8gPSBDR0ltYWdlR2V0Qml0bWFwSW5mbyhpbWFnZSk7CisgICAgaWYgKCEo
aW1hZ2VJbmZvICYga0NHQml0bWFwQnl0ZU9yZGVyMzJMaXR0bGUpIHx8IChpbWFnZUluZm8gJiBr
Q0dCaXRtYXBBbHBoYUluZm9NYXNrKSAhPSBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0
KSB7CisgICAgICAgIC8vIEZJWE1FOiBDb25zaWRlciBiZWluZyBhYmxlIHRvIGhhbmRsZSBvdGhl
ciBwaXhlbCBmb3JtYXRzLgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAKKyAgICBzaXplX3Qgd2lkdGggPSBDR0ltYWdlR2V0
V2lkdGgoaW1hZ2UpOworICAgIHNpemVfdCBoZWlnaHQgPSBDR0ltYWdlR2V0SGVpZ2h0KGltYWdl
KTsKKyAgICBzaXplX3QgYnl0ZXNQZXJSb3cgPSBDR0ltYWdlR2V0Qnl0ZXNQZXJSb3coaW1hZ2Up
OworICAgIAorICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IHByb3ZpZGVyID0gYWRvcHRDRihDR0Rh
dGFQcm92aWRlckNvcHlEYXRhKENHSW1hZ2VHZXREYXRhUHJvdmlkZXIoaW1hZ2UpKSk7CisgICAg
Y29uc3QgVUludDgqIGRhdGEgPSBDRkRhdGFHZXRCeXRlUHRyKHByb3ZpZGVyLmdldCgpKTsKKyAg
ICAKKyAgICAvLyBPdmVybGF5IGEgZ3JpZCBvZiBzYW1wbGluZyBkb3RzIG9uIHRvcCBvZiBhIGdy
YXlzY2FsZSB2ZXJzaW9uIG9mIHRoZSBpbWFnZS4KKyAgICAvLyBGb3IgdGhlIGludGVyaW9yIHBv
aW50cywgY2FsY3VsYXRlIHRoZSBkaWZmZXJlbmNlIGluIGx1bWluYW5jZSBhbW9uZyB0aGUgc2Ft
cGxlIHBvaW50CisgICAgLy8gYW5kIGl0cyBzdXJyb3VuZHMgcG9pbnRzLCBzY2FsZWQgYnkgdHJh
bnNwYXJlbmN5LgorICAgIGNvbnN0IHVuc2lnbmVkIHNhbXBsZVJvd3MgPSA3OworICAgIGNvbnN0
IHVuc2lnbmVkIHNhbXBsZUNvbHMgPSA3OworICAgIC8vIEZJWE1FOiBSZWZpbmUgdGhlIHByb3Bl
ciBudW1iZXIgb2Ygc2FtcGxlcywgYW5kIGFjY29tbW9kYXRlIGRpZmZlcmVudCBhc3BlY3QgcmF0
aW9zLgorICAgIGlmICh3aWR0aCA8IHNhbXBsZUNvbHMgfHwgaGVpZ2h0IDwgc2FtcGxlUm93cykK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIC8vIEVuc3VyZSB0aGF0IHRoZSBsYXN0
IHJvdy9jb2x1bW4gbGFuZCBvbiB0aGUgaW1hZ2UgcGVyaW1ldGVyLgorICAgIGNvbnN0IGZsb2F0
IHN0cmlkZVdpZHRoID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHdpZHRoIC0gMSkgLyAoc2FtcGxlQ29s
cyAtIDEpOworICAgIGNvbnN0IGZsb2F0IHN0cmlkZUhlaWdodCA9IHN0YXRpY19jYXN0PGZsb2F0
PihoZWlnaHQgLSAxKSAvIChzYW1wbGVSb3dzIC0gMSk7CisgICAgZmxvYXQgc2FtcGxlc1tzYW1w
bGVSb3dzXVtzYW1wbGVDb2xzXTsKKyAgICAKKyAgICAvLyBGaW5kIHRoZSBsdW1pbmFuY2Ugb2Yg
dGhlIHNhbXBsZSBwb2ludHMuCisgICAgZmxvYXQgeSA9IDA7CisgICAgY29uc3QgVUludDgqIHJv
dyA9IGRhdGE7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNhbXBsZVJvd3M7ICsraSkg
eworICAgICAgICBmbG9hdCB4ID0gMDsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8
IHNhbXBsZUNvbHM7ICsraikgeworICAgICAgICAgICAgY29uc3QgVUludDgqIHAwID0gcm93ICsg
KHN0YXRpY19jYXN0PGludD4oeCArIC41KSkgKiA0OworICAgICAgICAgICAgLy8gUiBHIEIgQQor
ICAgICAgICAgICAgc2FtcGxlc1tpXVtqXSA9ICgwLjIxMjUgKiAqcDAgKyAwLjcxNTQgKiAqKHAw
KzEpICsgMC4wNzIxICogKihwMCsyKSkgKiAqKHAwKzMpIC8gMjU1OworICAgICAgICAgICAgeCAr
PSBzdHJpZGVXaWR0aDsKKyAgICAgICAgfQorICAgICAgICB5ICs9IHN0cmlkZUhlaWdodDsKKyAg
ICAgICAgcm93ID0gZGF0YSArIChzdGF0aWNfY2FzdDxpbnQ+KHkgKyAuNSkpICogYnl0ZXNQZXJS
b3c7CisgICAgfQorICAgIAorICAgIC8vIERldGVybWluZSB0aGUgaW1hZ2Ugc2NvcmUuCisgICAg
ZmxvYXQgYWNjdW1TY29yZSA9IDA7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IHNhbXBs
ZVJvd3MgLSAxOyArK2kpIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMTsgaiA8IHNhbXBs
ZUNvbHMgLSAxOyArK2opIHsKKyAgICAgICAgICAgIGZsb2F0IGRpZmYgPSBzYW1wbGVzW2kgLSAx
XVtqXSArIHNhbXBsZXNbaSArIDFdW2pdICsgc2FtcGxlc1tpXVtqIC0gMV0gKyBzYW1wbGVzW2ld
W2ogKyAxXSAtIDQgKiBzYW1wbGVzW2ldW2pdOworICAgICAgICAgICAgYWNjdW1TY29yZSArPSBk
aWZmICogZGlmZjsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICAvLyBUaGUgc2NvcmUgZm9y
IGEgZ2l2ZW4gc2FtcGxlIGNhbiBiZSB3aXRoaW4gdGhlIHJhbmdlIG9mIDAgYW5kIDI1NV4yLgor
ICAgIHJldHVybiBhY2N1bVNjb3JlIDwgMjUwMCAqIChzYW1wbGVSb3dzIC0gMikgKiAoc2FtcGxl
Q29scyAtIDIpOworfQorCitmbG9hdCBQbGF0Zm9ybUltYWdlOjpzdWJzYW1wbGluZ1NjYWxlKEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0KQoreworICAgIC8vIE5ldmVyIHVzZSBzdWJzYW1wbGVkIGltYWdl
cyBmb3IgZHJhd2luZyBpbnRvIFBERiBjb250ZXh0cy4KKyAgICBpZiAod2tDR0NvbnRleHRJc1BE
RkNvbnRleHQoY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSkpCisgICAgICAgIHJldHVybiAxOwor
ICAgIAorICAgIENHUmVjdCB0cmFuc2Zvcm1lZERlc3RpbmF0aW9uUmVjdCA9IENHUmVjdEFwcGx5
QWZmaW5lVHJhbnNmb3JtKGRlc3RSZWN0LCBDR0NvbnRleHRHZXRDVE0oY29udGV4dC5wbGF0Zm9y
bUNvbnRleHQoKSkpOworICAgIHJldHVybiBzdGQ6Om1pbjxmbG9hdD4oMSwgc3RkOjptYXgodHJh
bnNmb3JtZWREZXN0aW5hdGlvblJlY3Quc2l6ZS53aWR0aCAvIHNyY1JlY3Qud2lkdGgoKSwgdHJh
bnNmb3JtZWREZXN0aW5hdGlvblJlY3Quc2l6ZS5oZWlnaHQgLyBzcmNSZWN0LmhlaWdodCgpKSk7
Cit9CisKK3ZvaWQgUGxhdGZvcm1JbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgSW50U2l6ZSYgc3JjU2l6ZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBtb2Rl
LCBjb25zdCBJbWFnZU9yaWVudGF0aW9uJiBvcmllbnRhdGlvbikgY29uc3QKK3sKKyAgICAvLyBT
dWJzYW1wbGluZyBtYXkgaGF2ZSBnaXZlbiB1cyBhbiBpbWFnZSB0aGF0IGlzIHNtYWxsZXIgdGhh
biBzaXplKCkuCisgICAgSW50U2l6ZSBzdWJzYW1wbGVkSW1hZ2VTaXplID0gc2l6ZSgpOworICAg
IAorICAgIC8vIHNyY1JlY3QgaXMgaW4gdGhlIGNvb3JkaW5hdGVzIG9mIHRoZSB1bnN1YnNhbXBs
ZWQgaW1hZ2UsIHNvIHdlIGhhdmUgdG8gbWFwIGl0IHRvIHRoZSBzdWJzYW1wbGVkIGltYWdlLgor
ICAgIEZsb2F0UmVjdCBhZGp1c3RlZFNyY1JlY3QgPSBzcmNSZWN0OworICAgIGlmIChzdWJzYW1w
bGVkSW1hZ2VTaXplICE9IHNyY1NpemUpCisgICAgICAgIGFkanVzdGVkU3JjUmVjdCA9IG1hcFJl
Y3Qoc3JjUmVjdCwgRmxvYXRSZWN0KHsgfSwgc3JjU2l6ZSksIEZsb2F0UmVjdCh7IH0sIHN1YnNh
bXBsZWRJbWFnZVNpemUpKTsKKyAgICAKKyAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShtX2lt
YWdlLCBzdWJzYW1wbGVkSW1hZ2VTaXplLCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBvcCwg
bW9kZSwgb3JpZW50YXRpb24pOworfQorICAgIAorfQorCisjZW5kaWYgLy8gVVNFKENHKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVGV4dFRyYWNr
UmVwcmVzZW50YXRpb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1RleHRUcmFja1JlcHJlc2VudGF0aW9uQ29jb2EubW0KaW5kZXggODk3MjBkMTczNjVk
YTdlOGJhODQ2OWQ1Mjk0NTQ4ZDUxODQ3YTdmZS4uNDQ3NmZjNWY4N2MzNDk4OGY2ZDlhZDU1ZWVi
ZDhkMWI5YmIwMjJlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvVGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9UZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29h
Lm1tCkBAIC0xMjksNyArMTI5LDcgQEAgVGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYTo6flRl
eHRUcmFja1JlcHJlc2VudGF0aW9uQ29jb2EoKQogdm9pZCBUZXh0VHJhY2tSZXByZXNlbnRhdGlv
bkNvY29hOjp1cGRhdGUoKQogewogICAgIGlmIChhdXRvIHJlcHJlc2VudGF0aW9uID0gbV9jbGll
bnQuY3JlYXRlVGV4dFRyYWNrUmVwcmVzZW50YXRpb25JbWFnZSgpKQotICAgICAgICBbbV9sYXll
ci5nZXQoKSBzZXRDb250ZW50czooaWQpcmVwcmVzZW50YXRpb24tPmdldENHSW1hZ2VSZWYoKV07
CisgICAgICAgIFttX2xheWVyLmdldCgpIHNldENvbnRlbnRzOihpZClyZXByZXNlbnRhdGlvbi0+
bmF0aXZlSW1hZ2UoKS5nZXQoKV07CiB9CiAKIHZvaWQgVGV4dFRyYWNrUmVwcmVzZW50YXRpb25D
b2NvYTo6c2V0Q29udGVudFNjYWxlKGZsb2F0IHNjYWxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tCmluZGV4IDAxZWI2ZGQzMDA0M2EyMjUy
OTE3NmZkOTEyMTE3ZGM1Nzc2YzE3YmEuLmRjMWM3YzcwOTVkOTQ0YzRjNjJmMWZlMDkzNTcwMmEx
M2M3YzdhNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9JbWFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMv
SW1hZ2VNYWMubW0KQEAgLTg1LDMxICs4NSwyMiBAQCBDRkRhdGFSZWYgQml0bWFwSW1hZ2U6Omdl
dFRJRkZSZXByZXNlbnRhdGlvbigpCiAgICAgaWYgKG1fdGlmZlJlcCkKICAgICAgICAgcmV0dXJu
IG1fdGlmZlJlcC5nZXQoKTsKIAotICAgIHVuc2lnbmVkIG51bUZyYW1lcyA9IGZyYW1lQ291bnQo
KTsKKyAgICBhdXRvIG5hdGl2ZUltYWdlcyA9IHRoaXMtPmZyYW1lc05hdGl2ZUltYWdlcygpOwog
Ci0gICAgLy8gSWYgbnVtRnJhbWVzIGlzIHplcm8sIHdlIGtub3cgZm9yIGNlcnRhaW4gdGhpcyBp
bWFnZSBkb2Vzbid0IGhhdmUgdmFsaWQgZGF0YQorICAgIC8vIElmIGZyYW1lc0ltYWdlcy5zaXpl
KCkgaXMgemVybywgd2Uga25vdyBmb3IgY2VydGFpbiB0aGlzIGltYWdlIGRvZXNuJ3QgaGF2ZSB2
YWxpZCBkYXRhCiAgICAgLy8gRXZlbiB0aG91Z2ggdGhlIGNhbGwgdG8gQ0dJbWFnZURlc3RpbmF0
aW9uQ3JlYXRlV2l0aERhdGEgd2lsbCBmYWlsIGFuZCB3ZSdsbCBoYW5kbGUgaXQgZ3JhY2VmdWxs
eSwKICAgICAvLyBpbiBjZXJ0YWluIGNpcmN1bXN0YW5jZXMgdGhhdCBjYWxsIHdpbGwgc3BhbSB0
aGUgY29uc29sZSB3aXRoIGFuIGVycm9yIG1lc3NhZ2UKLSAgICBpZiAoIW51bUZyYW1lcykKLSAg
ICAgICAgcmV0dXJuIDA7Ci0KLSAgICBWZWN0b3I8Q0dJbWFnZVJlZj4gaW1hZ2VzOwotICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1GcmFtZXM7ICsraSApIHsKLSAgICAgICAgQ0dJbWFn
ZVJlZiBjZ0ltYWdlID0gZnJhbWVJbWFnZUF0SW5kZXgoaSkuZ2V0KCk7Ci0gICAgICAgIGlmIChj
Z0ltYWdlKQotICAgICAgICAgICAgaW1hZ2VzLmFwcGVuZChjZ0ltYWdlKTsKLSAgICB9Ci0KLSAg
ICB1bnNpZ25lZCBudW1WYWxpZEZyYW1lcyA9IGltYWdlcy5zaXplKCk7CisgICAgaWYgKCFuYXRp
dmVJbWFnZXMuc2l6ZSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIFJldGFpblB0
cjxDRk11dGFibGVEYXRhUmVmPiBkYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGVNdXRhYmxlKDAs
IDApKTsKLSAgICBSZXRhaW5QdHI8Q0dJbWFnZURlc3RpbmF0aW9uUmVmPiBkZXN0aW5hdGlvbiA9
IGFkb3B0Q0YoQ0dJbWFnZURlc3RpbmF0aW9uQ3JlYXRlV2l0aERhdGEoZGF0YS5nZXQoKSwga1VU
VHlwZVRJRkYsIG51bVZhbGlkRnJhbWVzLCAwKSk7CisgICAgUmV0YWluUHRyPENHSW1hZ2VEZXN0
aW5hdGlvblJlZj4gZGVzdGluYXRpb24gPSBhZG9wdENGKENHSW1hZ2VEZXN0aW5hdGlvbkNyZWF0
ZVdpdGhEYXRhKGRhdGEuZ2V0KCksIGtVVFR5cGVUSUZGLCBuYXRpdmVJbWFnZXMuc2l6ZSgpLCAw
KSk7CiAKICAgICBpZiAoIWRlc3RpbmF0aW9uKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtVmFsaWRG
cmFtZXM7ICsraSkKLSAgICAgICAgQ0dJbWFnZURlc3RpbmF0aW9uQWRkSW1hZ2UoZGVzdGluYXRp
b24uZ2V0KCksIGltYWdlc1tpXSwgMCk7CisgICAgZm9yIChhdXRvIG5hdGl2ZUltYWdlIDogbmF0
aXZlSW1hZ2VzKQorICAgICAgICBDR0ltYWdlRGVzdGluYXRpb25BZGRJbWFnZShkZXN0aW5hdGlv
bi5nZXQoKSwgbmF0aXZlSW1hZ2UuZ2V0KCksIDApOwogCiAgICAgQ0dJbWFnZURlc3RpbmF0aW9u
RmluYWxpemUoZGVzdGluYXRpb24uZ2V0KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcAppbmRleCAyMTc1M2Jk
MDc4YTFjNTVjMzI3MTljMTQ4NDZmMGY2Yjk5NzVmOGZkLi5hOWJmYmQ5NWU0ZWQzNjc4YTBkZGNk
Zjc3NzE3YWUyYzIzZGRhZmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5jcHAKQEAgLTEzMiw3ICsxMzIsNiBAQCBJ
bWFnZUZyYW1lOjpJbWFnZUZyYW1lKCkKICAgICAsIG1fc3RhdHVzKEZyYW1lRW1wdHkpCiAgICAg
LCBtX2R1cmF0aW9uKDApCiAgICAgLCBtX2Rpc3Bvc2FsTWV0aG9kKERpc3Bvc2VOb3RTcGVjaWZp
ZWQpCi0gICAgLCBtX3ByZW11bHRpcGx5QWxwaGEodHJ1ZSkKIHsKIH0gCiAKQEAgLTE0MiwxOCAr
MTQxLDE2IEBAIEltYWdlRnJhbWUmIEltYWdlRnJhbWU6Om9wZXJhdG9yPShjb25zdCBJbWFnZUZy
YW1lJiBvdGhlcikKICAgICAgICAgcmV0dXJuICp0aGlzOwogCiAgICAgY29weUJpdG1hcERhdGEo
b3RoZXIpOwotICAgIHNldE9yaWdpbmFsRnJhbWVSZWN0KG90aGVyLm9yaWdpbmFsRnJhbWVSZWN0
KCkpOworICAgIHNldEhhc0FscGhhKG90aGVyLm1faGFzQWxwaGEpOwogICAgIHNldFN0YXR1cyhv
dGhlci5zdGF0dXMoKSk7CiAgICAgc2V0RHVyYXRpb24ob3RoZXIuZHVyYXRpb24oKSk7CiAgICAg
c2V0RGlzcG9zYWxNZXRob2Qob3RoZXIuZGlzcG9zYWxNZXRob2QoKSk7Ci0gICAgc2V0UHJlbXVs
dGlwbHlBbHBoYShvdGhlci5wcmVtdWx0aXBseUFscGhhKCkpOwogICAgIHJldHVybiAqdGhpczsK
IH0KIAogdm9pZCBJbWFnZUZyYW1lOjpjbGVhclBpeGVsRGF0YSgpCiB7Ci0gICAgbV9iYWNraW5n
U3RvcmUuY2xlYXIoKTsKLSAgICBtX2J5dGVzID0gMDsKKyAgICBtX3BpeGVscyA9IG51bGxwdHI7
CiAgICAgbV9zdGF0dXMgPSBGcmFtZUVtcHR5OwogICAgIC8vIE5PVEU6IERvIG5vdCByZXNldCBv
dGhlciBtZW1iZXJzIGhlcmU7IGNsZWFyRnJhbWVCdWZmZXJDYWNoZSgpIGNhbGxzIHRoaXMKICAg
ICAvLyB0byBmcmVlIHRoZSBiaXRtYXAgZGF0YSwgYnV0IG90aGVyIGZ1bmN0aW9ucyBsaWtlIGlu
aXRGcmFtZUJ1ZmZlcigpIGFuZApAQCAtMTYzLDI0ICsxNjAsMTYgQEAgdm9pZCBJbWFnZUZyYW1l
OjpjbGVhclBpeGVsRGF0YSgpCiAKIHZvaWQgSW1hZ2VGcmFtZTo6emVyb0ZpbGxQaXhlbERhdGEo
KQogewotICAgIG1lbXNldChtX2J5dGVzLCAwLCBtX3NpemUud2lkdGgoKSAqIG1fc2l6ZS5oZWln
aHQoKSAqIHNpemVvZihQaXhlbERhdGEpKTsKKyAgICBtX3BpeGVscy0+Y2xlYXIoKTsKICAgICBt
X2hhc0FscGhhID0gdHJ1ZTsKIH0KIAogdm9pZCBJbWFnZUZyYW1lOjp6ZXJvRmlsbEZyYW1lUmVj
dChjb25zdCBJbnRSZWN0JiByZWN0KQogewotICAgIEFTU0VSVChJbnRSZWN0KEludFBvaW50KCks
IG1fc2l6ZSkuY29udGFpbnMocmVjdCkpOwotCiAgICAgaWYgKHJlY3QuaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBzaXplX3QgcmVjdFdpZHRoSW5CeXRlcyA9IHJlY3Qud2lkdGgo
KSAqIHNpemVvZihQaXhlbERhdGEpOwotICAgIFBpeGVsRGF0YSogc3RhcnQgPSBtX2J5dGVzICsg
KHJlY3QueSgpICogd2lkdGgoKSkgKyByZWN0LngoKTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8
IHJlY3QuaGVpZ2h0KCk7ICsraSkgewotICAgICAgICBtZW1zZXQoc3RhcnQsIDAsIHJlY3RXaWR0
aEluQnl0ZXMpOwotICAgICAgICBzdGFydCArPSB3aWR0aCgpOwotICAgIH0KLQorICAgIG1fcGl4
ZWxzLT5jbGVhclJlY3QocmVjdCk7CiAgICAgc2V0SGFzQWxwaGEodHJ1ZSk7CiB9CiAKQEAgLTE4
OSwyNSArMTc4LDIzIEBAIGJvb2wgSW1hZ2VGcmFtZTo6Y29weUJpdG1hcERhdGEoY29uc3QgSW1h
Z2VGcmFtZSYgb3RoZXIpCiAgICAgaWYgKHRoaXMgPT0gJm90aGVyKQogICAgICAgICByZXR1cm4g
dHJ1ZTsKIAotICAgIG1fYmFja2luZ1N0b3JlID0gb3RoZXIubV9iYWNraW5nU3RvcmU7Ci0gICAg
bV9ieXRlcyA9IG1fYmFja2luZ1N0b3JlLmRhdGEoKTsKLSAgICBtX3NpemUgPSBvdGhlci5tX3Np
emU7Ci0gICAgc2V0SGFzQWxwaGEob3RoZXIubV9oYXNBbHBoYSk7CisgICAgaWYgKG90aGVyLm1f
cGl4ZWxzKQorICAgICAgICBtX3BpeGVscyA9IEJpdG1hcFBpeGVsczo6Y3JlYXRlKCpvdGhlci5t
X3BpeGVscy5nZXQoKSk7CisgICAgZWxzZQorICAgICAgICBtX3BpeGVscyA9IG51bGxwdHI7CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgSW1hZ2VGcmFtZTo6c2V0U2l6ZShpbnQgbmV3V2lk
dGgsIGludCBuZXdIZWlnaHQpCitib29sIEltYWdlRnJhbWU6OnNldFNpemUoY29uc3QgSW50U2l6
ZSYgc2l6ZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhKQogewotICAgIEFTU0VSVCghd2lkdGgoKSAm
JiAhaGVpZ2h0KCkpOwotICAgIHNpemVfdCBiYWNraW5nU3RvcmVTaXplID0gbmV3V2lkdGggKiBu
ZXdIZWlnaHQ7Ci0gICAgaWYgKCFtX2JhY2tpbmdTdG9yZS50cnlSZXNlcnZlQ2FwYWNpdHkoYmFj
a2luZ1N0b3JlU2l6ZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBtX2JhY2tpbmdTdG9y
ZS5yZXNpemUoYmFja2luZ1N0b3JlU2l6ZSk7Ci0gICAgbV9ieXRlcyA9IG1fYmFja2luZ1N0b3Jl
LmRhdGEoKTsKLSAgICBtX3NpemUgPSBJbnRTaXplKG5ld1dpZHRoLCBuZXdIZWlnaHQpOworICAg
IEFTU0VSVCghbV9waXhlbHMpOworICAgIG1fcGl4ZWxzID0gQml0bWFwUGl4ZWxzOjpjcmVhdGUo
c2l6ZSwgcHJlbXVsdGlwbHlBbHBoYSk7CisgICAgcmV0dXJuIG1fcGl4ZWxzICE9IG51bGxwdHI7
Cit9CiAKLSAgICB6ZXJvRmlsbFBpeGVsRGF0YSgpOwotICAgIHJldHVybiB0cnVlOwordm9pZCBJ
bWFnZUZyYW1lOjpjb3B5Um93TlRpbWVzKGludCBzdGFydFgsIGludCBlbmRYLCBpbnQgc3RhcnRZ
LCBpbnQgZW5kWSkKK3sKKyAgICBtX3BpeGVscy0+cmVwZWF0Rmlyc3RSb3coSW50UmVjdChzdGFy
dFgsIHN0YXJ0WSwgZW5kWCAtc3RhcnRYICwgZW5kWSAtIHN0YXJ0WSkpOwogfQogCiBib29sIElt
YWdlRnJhbWU6Omhhc0FscGhhKCkgY29uc3QKQEAgLTIyMCwxMSArMjA3LDYgQEAgdm9pZCBJbWFn
ZUZyYW1lOjpzZXRIYXNBbHBoYShib29sIGFscGhhKQogICAgIG1faGFzQWxwaGEgPSBhbHBoYTsK
IH0KIAotdm9pZCBJbWFnZUZyYW1lOjpzZXRDb2xvclByb2ZpbGUoY29uc3QgQ29sb3JQcm9maWxl
JiBjb2xvclByb2ZpbGUpCi17Ci0gICAgbV9jb2xvclByb2ZpbGUgPSBjb2xvclByb2ZpbGU7Ci19
Ci0KIHZvaWQgSW1hZ2VGcmFtZTo6c2V0U3RhdHVzKEZyYW1lU3RhdHVzIHN0YXR1cykKIHsKICAg
ICBtX3N0YXR1cyA9IHN0YXR1czsKQEAgLTI5MSw3ICsyNzMsNyBAQCB1bnNpZ25lZCBJbWFnZURl
Y29kZXI6OmZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QKICAgICBpZiAobV9m
cmFtZUJ1ZmZlckNhY2hlLnNpemUoKSA8PSBpbmRleCkKICAgICAgICAgcmV0dXJuIDA7CiAgICAg
Ly8gRklYTUU6IFVzZSB0aGUgZGltZW5zaW9uIG9mIHRoZSByZXF1ZXN0ZWQgZnJhbWUuCi0gICAg
cmV0dXJuIG1fc2l6ZS5hcmVhKCkgKiBzaXplb2YoSW1hZ2VGcmFtZTo6UGl4ZWxEYXRhKTsKKyAg
ICByZXR1cm4gbV9zaXplLmFyZWEoKSAqIHNpemVvZihSR0JBMzIpOwogfQogCiBmbG9hdCBJbWFn
ZURlY29kZXI6OmZyYW1lRHVyYXRpb25BdEluZGV4KHNpemVfdCBpbmRleCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmgKaW5k
ZXggMmY4ZWVlMTc4MWQxNjJkODZjNDlmZTFkYWM3MmEyZTdlNDBhNWQ2ZC4uYjcyZjJiZTc1MjIy
NDdjMmIyNWFkOWY5NDkyYTNmOTYwZjQ1NzQxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmgKQEAgLTI4LDggKzI4LDEw
IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiSW50UmVjdC5oIgorI2luY2x1ZGUgIkJp
dG1hcFBpeGVscy5oIgogI2luY2x1ZGUgIkltYWdlU291cmNlLmgiCisjaW5jbHVkZSAiSW50UmVj
dC5oIgorI2luY2x1ZGUgIkludFNpemUuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVNjcmVlbi5oIgog
I2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CkBA
IC01Nyw3ICs1OSw2IEBAIHVzaW5nIENvbG9yUHJvZmlsZSA9IFZlY3RvcjxjaGFyPjsKICAgICAg
ICAgICAgIERpc3Bvc2VPdmVyd3JpdGVQcmV2aW91cyAgLy8gQ2xlYXIgZnJhbWUgdG8gcHJldmlv
dXMgZnJhbWVidWZmZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
Y29udGVudHMKICAgICAgICAgfTsKLSAgICAgICAgdHlwZWRlZiB1bnNpZ25lZCBQaXhlbERhdGE7
CiAKICAgICAgICAgSW1hZ2VGcmFtZSgpOwogCkBAIC04MCwxNTEgKzgxLDYxIEBAIHVzaW5nIENv
bG9yUHJvZmlsZSA9IFZlY3RvcjxjaGFyPjsKICAgICAgICAgLy8gQ29waWVzIHRoZSBwaXhlbCBk
YXRhIGF0IFsoc3RhcnRYLCBzdGFydFkpLCAoZW5kWCwgc3RhcnRZKSkgdG8gdGhlCiAgICAgICAg
IC8vIHNhbWUgWC1jb29yZGluYXRlcyBvbiBlYWNoIHN1YnNlcXVlbnQgcm93IHVwIHRvIGJ1dCBu
b3QgaW5jbHVkaW5nCiAgICAgICAgIC8vIGVuZFkuCi0gICAgICAgIHZvaWQgY29weVJvd05UaW1l
cyhpbnQgc3RhcnRYLCBpbnQgZW5kWCwgaW50IHN0YXJ0WSwgaW50IGVuZFkpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIEFTU0VSVChzdGFydFggPCB3aWR0aCgpKTsKLSAgICAgICAgICAgIEFTU0VS
VChlbmRYIDw9IHdpZHRoKCkpOwotICAgICAgICAgICAgQVNTRVJUKHN0YXJ0WSA8IGhlaWdodCgp
KTsKLSAgICAgICAgICAgIEFTU0VSVChlbmRZIDw9IGhlaWdodCgpKTsKLSAgICAgICAgICAgIGNv
bnN0IGludCByb3dCeXRlcyA9IChlbmRYIC0gc3RhcnRYKSAqIHNpemVvZihQaXhlbERhdGEpOwot
ICAgICAgICAgICAgY29uc3QgUGl4ZWxEYXRhKiBjb25zdCBzdGFydEFkZHIgPSBnZXRBZGRyKHN0
YXJ0WCwgc3RhcnRZKTsKLSAgICAgICAgICAgIGZvciAoaW50IGRlc3RZID0gc3RhcnRZICsgMTsg
ZGVzdFkgPCBlbmRZOyArK2Rlc3RZKQotICAgICAgICAgICAgICAgIG1lbWNweShnZXRBZGRyKHN0
YXJ0WCwgZGVzdFkpLCBzdGFydEFkZHIsIHJvd0J5dGVzKTsKLSAgICAgICAgfQorICAgICAgICB2
b2lkIGNvcHlSb3dOVGltZXMoaW50IHN0YXJ0WCwgaW50IGVuZFgsIGludCBzdGFydFksIGludCBl
bmRZKTsKIAogICAgICAgICAvLyBBbGxvY2F0ZXMgc3BhY2UgZm9yIHRoZSBwaXhlbCBkYXRhLiAg
TXVzdCBiZSBjYWxsZWQgYmVmb3JlIGFueSBwaXhlbHMKICAgICAgICAgLy8gYXJlIHdyaXR0ZW4u
ICBNdXN0IG9ubHkgYmUgY2FsbGVkIG9uY2UuICBSZXR1cm5zIHdoZXRoZXIgYWxsb2NhdGlvbgog
ICAgICAgICAvLyBzdWNjZWVkZWQuCi0gICAgICAgIGJvb2wgc2V0U2l6ZShpbnQgbmV3V2lkdGgs
IGludCBuZXdIZWlnaHQpOworICAgICAgICBib29sIHNldFNpemUoY29uc3QgSW50U2l6ZSYsIGJv
b2wgcHJlbXVsdGlwbHlBbHBoYSk7CisgICAgICAgIAorICAgICAgICBJbnRTaXplIHNpemUoKSBj
b25zdCB7IHJldHVybiBtX3BpeGVscy0+c2l6ZSgpOyB9CiAKICAgICAgICAgLy8gUmV0dXJucyBh
IGNhbGxlci1vd25lZCBwb2ludGVyIHRvIHRoZSB1bmRlcmx5aW5nIG5hdGl2ZSBpbWFnZSBkYXRh
LgogICAgICAgICAvLyAoQWN0dWFsIHVzZTogVGhpcyBwb2ludGVyIHdpbGwgYmUgb3duZWQgYnkg
Qml0bWFwSW1hZ2UgYW5kIGZyZWVkIGluCiAgICAgICAgIC8vIEZyYW1lRGF0YTo6Y2xlYXIoKSku
Ci0gICAgICAgIE5hdGl2ZUltYWdlUHRyIGFzTmV3TmF0aXZlSW1hZ2UoKSBjb25zdDsKKyAgICAg
ICAgTmF0aXZlSW1hZ2VQdHIgYXNOZXdOYXRpdmVJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGl4
ZWxzLT5pbWFnZSgpOyB9CisKKyAgICAgICAgaW5saW5lIEJpdG1hcFBpeGVscyogcGl4ZWxzKCkg
Y29uc3QgeyByZXR1cm4gbV9waXhlbHMgPyBtX3BpeGVscy5nZXQoKSA6IG51bGxwdHI7IH0KKyAg
ICAgICAgaW5saW5lIGJvb2wgaGFzUGl4ZWxzKCkgY29uc3QgeyByZXR1cm4gcGl4ZWxzKCk7IH0K
IAogICAgICAgICBib29sIGhhc0FscGhhKCkgY29uc3Q7Ci0gICAgICAgIGNvbnN0IEludFJlY3Qm
IG9yaWdpbmFsRnJhbWVSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW5hbEZyYW1lUmVjdDsg
fQogICAgICAgICBGcmFtZVN0YXR1cyBzdGF0dXMoKSBjb25zdCB7IHJldHVybiBtX3N0YXR1czsg
fQogICAgICAgICB1bnNpZ25lZCBkdXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZHVyYXRpb247
IH0KICAgICAgICAgRnJhbWVEaXNwb3NhbE1ldGhvZCBkaXNwb3NhbE1ldGhvZCgpIGNvbnN0IHsg
cmV0dXJuIG1fZGlzcG9zYWxNZXRob2Q7IH0KLSAgICAgICAgYm9vbCBwcmVtdWx0aXBseUFscGhh
KCkgY29uc3QgeyByZXR1cm4gbV9wcmVtdWx0aXBseUFscGhhOyB9CiAKICAgICAgICAgdm9pZCBz
ZXRIYXNBbHBoYShib29sIGFscGhhKTsKLSAgICAgICAgdm9pZCBzZXRDb2xvclByb2ZpbGUoY29u
c3QgQ29sb3JQcm9maWxlJik7Ci0gICAgICAgIHZvaWQgc2V0T3JpZ2luYWxGcmFtZVJlY3QoY29u
c3QgSW50UmVjdCYgcikgeyBtX29yaWdpbmFsRnJhbWVSZWN0ID0gcjsgfQogICAgICAgICB2b2lk
IHNldFN0YXR1cyhGcmFtZVN0YXR1cyBzdGF0dXMpOwogICAgICAgICB2b2lkIHNldER1cmF0aW9u
KHVuc2lnbmVkIGR1cmF0aW9uKSB7IG1fZHVyYXRpb24gPSBkdXJhdGlvbjsgfQogICAgICAgICB2
b2lkIHNldERpc3Bvc2FsTWV0aG9kKEZyYW1lRGlzcG9zYWxNZXRob2QgbWV0aG9kKSB7IG1fZGlz
cG9zYWxNZXRob2QgPSBtZXRob2Q7IH0KLSAgICAgICAgdm9pZCBzZXRQcmVtdWx0aXBseUFscGhh
KGJvb2wgcHJlbXVsdGlwbHlBbHBoYSkgeyBtX3ByZW11bHRpcGx5QWxwaGEgPSBwcmVtdWx0aXBs
eUFscGhhOyB9CiAKICAgICAgICAgaW5saW5lIHZvaWQgc2V0UkdCQShpbnQgeCwgaW50IHksIHVu
c2lnbmVkIHIsIHVuc2lnbmVkIGcsIHVuc2lnbmVkIGIsIHVuc2lnbmVkIGEpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIHNldFJHQkEoZ2V0QWRkcih4LCB5KSwgciwgZywgYiwgYSk7CisgICAgICAg
ICAgICBtX3BpeGVscy0+c2V0UkdCQSh4LCB5LCByLCBnLCBiLCBhKTsKICAgICAgICAgfQogCi0g
ICAgICAgIGlubGluZSBQaXhlbERhdGEqIGdldEFkZHIoaW50IHgsIGludCB5KQorICAgICAgICBp
bmxpbmUgUkdCQTMyKiBnZXRBZGRyKGludCB4LCBpbnQgeSkKICAgICAgICAgewotICAgICAgICAg
ICAgcmV0dXJuIG1fYnl0ZXMgKyAoeSAqIHdpZHRoKCkpICsgeDsKKyAgICAgICAgICAgIHJldHVy
biBtX3BpeGVscy0+YXQoeCwgeSk7CiAgICAgICAgIH0KIAotICAgICAgICBpbmxpbmUgYm9vbCBo
YXNQaXhlbERhdGEoKSBjb25zdAorICAgICAgICBpbmxpbmUgdm9pZCBzZXRSR0JBKFJHQkEzMiog
ZGVzdCwgdW5zaWduZWQgciwgdW5zaWduZWQgZywgdW5zaWduZWQgYiwgdW5zaWduZWQgYSkKICAg
ICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG1fYnl0ZXM7Ci0gICAgICAgIH0KLQotICAgICAg
ICAvLyBVc2UgZml4IHBvaW50IG11bHRpcGxpZXIgaW5zdGVhZCBvZiBpbnRlZ2VyIGRpdmlzaW9u
IG9yIGZsb2F0aW5nIHBvaW50IG1hdGguCi0gICAgICAgIC8vIFRoaXMgbXVsdGlwbGVyIHByb2R1
Y2VzIGV4YWN0bHkgdGhlIHNhbWUgcmVzdWx0IGZvciBhbGwgdmFsdWVzIGluIHJhbmdlIDAgLSAy
NTUuCi0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBmaXhQb2ludFNoaWZ0ID0gMjQ7Ci0g
ICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBmaXhQb2ludE11bHQgPSBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oMS4wIC8gMjU1LjAgKiAoMSA8PCBmaXhQb2ludFNoaWZ0KSkgKyAxOwotICAgICAg
ICAvLyBNdWx0aXBsaWVzIHVuc2lnbmVkIHZhbHVlIGJ5IGZpeHBvaW50IHZhbHVlIGFuZCBjb252
ZXJ0cyBiYWNrIHRvIHVuc2lnbmVkLgotICAgICAgICBzdGF0aWMgdW5zaWduZWQgZml4UG9pbnRV
bnNpZ25lZE11bHRpcGx5KHVuc2lnbmVkIGZpeGVkLCB1bnNpZ25lZCB2KQotICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4gIChmaXhlZCAqIHYpID4+IGZpeFBvaW50U2hpZnQ7Ci0gICAgICAg
IH0KLQotICAgICAgICBpbmxpbmUgdm9pZCBzZXRSR0JBKFBpeGVsRGF0YSogZGVzdCwgdW5zaWdu
ZWQgciwgdW5zaWduZWQgZywgdW5zaWduZWQgYiwgdW5zaWduZWQgYSkKLSAgICAgICAgewotICAg
ICAgICAgICAgaWYgKG1fcHJlbXVsdGlwbHlBbHBoYSAmJiBhIDwgMjU1KSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKCFhKSB7Ci0gICAgICAgICAgICAgICAgICAgICpkZXN0ID0gMDsKLSAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGFscGhhTXVsdCA9IGEgKiBmaXhQb2ludE11bHQ7Ci0gICAgICAgICAgICAgICAg
ciA9IGZpeFBvaW50VW5zaWduZWRNdWx0aXBseShyLCBhbHBoYU11bHQpOwotICAgICAgICAgICAg
ICAgIGcgPSBmaXhQb2ludFVuc2lnbmVkTXVsdGlwbHkoZywgYWxwaGFNdWx0KTsKLSAgICAgICAg
ICAgICAgICBiID0gZml4UG9pbnRVbnNpZ25lZE11bHRpcGx5KGIsIGFscGhhTXVsdCk7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAqZGVzdCA9IChhIDw8IDI0IHwgciA8PCAxNiB8IGcgPDwg
OCB8IGIpOworICAgICAgICAgICAgbV9waXhlbHMtPnNldFJHQkEoZGVzdCwgciwgZywgYiwgYSk7
CiAgICAgICAgIH0KIAogI2lmIEVOQUJMRShBUE5HKQotICAgICAgICBzdGF0aWMgaW5saW5lIHVu
c2lnbmVkIGRpdmlkZTI1NSh1bnNpZ25lZCBhKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1
cm4gKGEgKyAoYSA+PiA4KSArIDEpID4+IDg7Ci0gICAgICAgIH0KLQotICAgICAgICBpbmxpbmUg
dm9pZCBvdmVyUkdCQShQaXhlbERhdGEqIGRlc3QsIHVuc2lnbmVkIHIsIHVuc2lnbmVkIGcsIHVu
c2lnbmVkIGIsIHVuc2lnbmVkIGEpCisgICAgICAgIGlubGluZSB2b2lkIG92ZXJSR0JBKFJHQkEz
MiogZGVzdCwgdW5zaWduZWQgciwgdW5zaWduZWQgZywgdW5zaWduZWQgYiwgdW5zaWduZWQgYSkK
ICAgICAgICAgewotICAgICAgICAgICAgaWYgKCFhKQotICAgICAgICAgICAgICAgIHJldHVybjsK
LQotICAgICAgICAgICAgaWYgKGEgPCAyNTUpIHsKLSAgICAgICAgICAgICAgICB1bnNpZ25lZCBh
RGVzdCA9ICgoKmRlc3QpID4+IDI0KSAmIDI1NTsKLSAgICAgICAgICAgICAgICBpZiAoYURlc3Qp
IHsKLSAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgckRlc3QgPSAoKCpkZXN0KSA+PiAxNikg
JiAyNTU7Ci0gICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGdEZXN0ID0gKCgqZGVzdCkgPj4g
OCkgJiAyNTU7Ci0gICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGJEZXN0ID0gKCpkZXN0KSAm
IDI1NTsKLSAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgYUF1eCA9IDI1NSAtIGE7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmICghbV9wcmVtdWx0aXBseUFscGhhKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICByRGVzdCA9IGRpdmlkZTI1NShyRGVzdCAqIGFEZXN0KTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGdEZXN0ID0gZGl2aWRlMjU1KGdEZXN0ICogYURlc3QpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgYkRlc3QgPSBkaXZpZGUyNTUoYkRlc3QgKiBhRGVzdCk7Ci0gICAgICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgciA9IGRpdmlkZTI1NShyICogYSAr
IHJEZXN0ICogYUF1eCk7Ci0gICAgICAgICAgICAgICAgICAgIGcgPSBkaXZpZGUyNTUoZyAqIGEg
KyBnRGVzdCAqIGFBdXgpOwotICAgICAgICAgICAgICAgICAgICBiID0gZGl2aWRlMjU1KGIgKiBh
ICsgYkRlc3QgKiBhQXV4KTsKLSAgICAgICAgICAgICAgICAgICAgYSArPSBkaXZpZGUyNTUoYURl
c3QgKiBhQXV4KTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFtX3ByZW11bHRpcGx5QWxwaGEp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHIgPSAociAqIDI1NSArIGEgLSAxKSAvIGE7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBnID0gKGcgKiAyNTUgKyBhIC0gMSkgLyBhOwotICAgICAg
ICAgICAgICAgICAgICAgICAgYiA9IChiICogMjU1ICsgYSAtIDEpIC8gYTsKLSAgICAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobV9wcmVtdWx0aXBseUFscGhh
KSB7Ci0gICAgICAgICAgICAgICAgICAgIHIgPSBkaXZpZGUyNTUociAqIGEpOwotICAgICAgICAg
ICAgICAgICAgICBnID0gZGl2aWRlMjU1KGcgKiBhKTsKLSAgICAgICAgICAgICAgICAgICAgYiA9
IGRpdmlkZTI1NShiICogYSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgKmRlc3QgPSAoYSA8PCAyNCB8IHIgPDwgMTYgfCBnIDw8IDggfCBiKTsKKyAgICAg
ICAgICAgIG1fcGl4ZWxzLT5vdmVyUkdCQShkZXN0LCByLCBnLCBiLCBhKTsKICAgICAgICAgfQog
I2VuZGlmCiAKICAgICBwcml2YXRlOgotICAgICAgICBpbnQgd2lkdGgoKSBjb25zdAotICAgICAg
ICB7Ci0gICAgICAgICAgICByZXR1cm4gbV9zaXplLndpZHRoKCk7Ci0gICAgICAgIH0KLQotICAg
ICAgICBpbnQgaGVpZ2h0KCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG1f
c2l6ZS5oZWlnaHQoKTsKLSAgICAgICAgfQotCi0gICAgICAgIFZlY3RvcjxQaXhlbERhdGE+IG1f
YmFja2luZ1N0b3JlOwotICAgICAgICBQaXhlbERhdGEqIG1fYnl0ZXM7IC8vIFRoZSBtZW1vcnkg
aXMgYmFja2VkIGJ5IG1fYmFja2luZ1N0b3JlLgotICAgICAgICBJbnRTaXplIG1fc2l6ZTsKLSAg
ICAgICAgLy8gRklYTUU6IERvIHdlIG5lZWQgbV9jb2xvclByb2ZpbGUgYW55bW9yZT8KLSAgICAg
ICAgQ29sb3JQcm9maWxlIG1fY29sb3JQcm9maWxlOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8
Qml0bWFwUGl4ZWxzPiBtX3BpeGVsczsKICAgICAgICAgYm9vbCBtX2hhc0FscGhhOwotICAgICAg
ICBJbnRSZWN0IG1fb3JpZ2luYWxGcmFtZVJlY3Q7IC8vIFRoaXMgd2lsbCBhbHdheXMganVzdCBi
ZSB0aGUgZW50aXJlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYnVm
ZmVyIGV4Y2VwdCBmb3IgR0lGIGZyYW1lcyB3aG9zZQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIG9yaWdpbmFsIHJlY3Qgd2FzIHNtYWxsZXIgdGhhbiB0aGUKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdmVyYWxsIGltYWdlIHNpemUuCiAg
ICAgICAgIEZyYW1lU3RhdHVzIG1fc3RhdHVzOwogICAgICAgICB1bnNpZ25lZCBtX2R1cmF0aW9u
OwogICAgICAgICBGcmFtZURpc3Bvc2FsTWV0aG9kIG1fZGlzcG9zYWxNZXRob2Q7Ci0gICAgICAg
IGJvb2wgbV9wcmVtdWx0aXBseUFscGhhOwogICAgIH07CiAKICAgICAvLyBJbWFnZURlY29kZXIg
aXMgYSBiYXNlIGZvciBhbGwgZm9ybWF0LXNwZWNpZmljIGRlY29kZXJzCkBAIC0yNTMsNiArMTY0
LDggQEAgdXNpbmcgQ29sb3JQcm9maWxlID0gVmVjdG9yPGNoYXI+OwogCiAgICAgICAgIHZpcnR1
YWwgU3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3QgPSAwOwogCisgICAgICAgIGJvb2wg
cHJlbXVsdGlwbHlBbHBoYSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJlbXVsdGlwbHlBbHBoYTsgfQor
CiAgICAgICAgIGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzQWxs
RGF0YVJlY2VpdmVkOyB9CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHNldERhdGEoU2hhcmVkQnVm
ZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKQEAgLTI5MCwxMSArMjAzLDExIEBAIHVz
aW5nIENvbG9yUHJvZmlsZSA9IFZlY3RvcjxjaGFyPjsKIAogICAgICAgICAvLyBSZXR1cm5zIHdo
ZXRoZXIgdGhlIHNpemUgaXMgbGVnYWwgKGkuZS4gbm90IGdvaW5nIHRvIHJlc3VsdCBpbgogICAg
ICAgICAvLyBvdmVyZmxvdyBlbHNld2hlcmUpLiAgSWYgbm90LCBtYXJrcyBkZWNvZGluZyBhcyBm
YWlsZWQuCi0gICAgICAgIHZpcnR1YWwgYm9vbCBzZXRTaXplKHVuc2lnbmVkIHdpZHRoLCB1bnNp
Z25lZCBoZWlnaHQpCisgICAgICAgIHZpcnR1YWwgYm9vbCBzZXRTaXplKGNvbnN0IEludFNpemUm
IHNpemUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmIChpc092ZXJTaXplKHdpZHRoLCBoZWln
aHQpKQorICAgICAgICAgICAgaWYgKGlzT3ZlclNpemUoc2l6ZSkpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIHNldEZhaWxlZCgpOwotICAgICAgICAgICAgbV9zaXplID0gSW50U2l6ZSh3aWR0aCwg
aGVpZ2h0KTsKKyAgICAgICAgICAgIG1fc2l6ZSA9IHNpemU7CiAgICAgICAgICAgICBtX3NpemVB
dmFpbGFibGUgPSB0cnVlOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KQEAg
LTM4MSw4ICsyOTQsNiBAQCB1c2luZyBDb2xvclByb2ZpbGUgPSBWZWN0b3I8Y2hhcj47CiAKICAg
ICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOyAvLyBUaGUgZW5jb2RlZCBkYXRhLgog
ICAgICAgICBWZWN0b3I8SW1hZ2VGcmFtZSwgMT4gbV9mcmFtZUJ1ZmZlckNhY2hlOwotICAgICAg
ICAvLyBGSVhNRTogRG8gd2UgbmVlZCBtX2NvbG9yUHJvZmlsZSBhbnkgbW9yZSwgZm9yIGFueSBw
b3J0PwotICAgICAgICBDb2xvclByb2ZpbGUgbV9jb2xvclByb2ZpbGU7CiAgICAgICAgIGJvb2wg
bV9zY2FsZWQgeyBmYWxzZSB9OwogICAgICAgICBWZWN0b3I8aW50PiBtX3NjYWxlZENvbHVtbnM7
CiAgICAgICAgIFZlY3RvcjxpbnQ+IG1fc2NhbGVkUm93czsKQEAgLTM5MywxMSArMzA0LDEwIEBA
IHVzaW5nIENvbG9yUHJvZmlsZSA9IFZlY3RvcjxjaGFyPjsKICAgICBwcml2YXRlOgogICAgICAg
ICAvLyBTb21lIGNvZGUgcGF0aHMgY29tcHV0ZSB0aGUgc2l6ZSBvZiB0aGUgaW1hZ2UgYXMgIndp
ZHRoICogaGVpZ2h0ICogNCIKICAgICAgICAgLy8gYW5kIHJldHVybiBpdCBhcyBhIChzaWduZWQp
IGludC4gIEF2b2lkIG92ZXJmbG93LgotICAgICAgICBzdGF0aWMgYm9vbCBpc092ZXJTaXplKHVu
c2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQpCisgICAgICAgIHN0YXRpYyBib29sIGlzT3Zl
clNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKICAgICAgICAgewotICAgICAgICAgICAgdW5zaWdu
ZWQgbG9uZyBsb25nIHRvdGFsX3NpemUgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+
KHdpZHRoKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBzdGF0
aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KGhlaWdodCk7Ci0gICAgICAgICAgICByZXR1cm4g
dG90YWxfc2l6ZSA+ICgoMSA8PCAyOSkgLSAxKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcg
bG9uZyBwaXhlbHMgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KHNpemUud2lkdGgo
KSkgKiBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KHNpemUuaGVpZ2h0KCkpOworICAg
ICAgICAgICAgcmV0dXJuIHBpeGVscyA+ICgoMSA8PCAyOSkgLSAxKTsKICAgICAgICAgfQogCiAg
ICAgICAgIEludFNpemUgbV9zaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBj
YWYzNWM5N2YxN2VkZDM0YmM5ZGY4OWFiMDllODcwMGFlZTZjN2RmLi40NTdhZWYwN2FkNjM0ZTAy
MWJhM2VkZTNkNTEzYzc0YTVkOGViOWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcApA
QCAtNzAsMTAgKzcwLDggQEAgSW1hZ2VGcmFtZSogQk1QSW1hZ2VEZWNvZGVyOjpmcmFtZUJ1ZmZl
ckF0SW5kZXgoc2l6ZV90IGluZGV4KQogICAgIGlmIChpbmRleCkKICAgICAgICAgcmV0dXJuIDA7
CiAKLSAgICBpZiAobV9mcmFtZUJ1ZmZlckNhY2hlLmlzRW1wdHkoKSkgeworICAgIGlmIChtX2Zy
YW1lQnVmZmVyQ2FjaGUuaXNFbXB0eSgpKQogICAgICAgICBtX2ZyYW1lQnVmZmVyQ2FjaGUucmVz
aXplKDEpOwotICAgICAgICBtX2ZyYW1lQnVmZmVyQ2FjaGUuZmlyc3QoKS5zZXRQcmVtdWx0aXBs
eUFscGhhKG1fcHJlbXVsdGlwbHlBbHBoYSk7Ci0gICAgfQogCiAgICAgSW1hZ2VGcmFtZSogYnVm
ZmVyID0gJm1fZnJhbWVCdWZmZXJDYWNoZS5maXJzdCgpOwogICAgIGlmIChidWZmZXItPnN0YXR1
cygpICE9IEltYWdlRnJhbWU6OkZyYW1lQ29tcGxldGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VSZWFkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVhZGVyLmNw
cAppbmRleCA1YzAwNTUzNGVjZDkyMTM0YTEzYjMyOTU4OTI3NzkwZjA3YWQwZjgxLi45ODFjMTFm
ZTk2ODIwNzk2M2ZhY2I1ZGYxZWZlYTFkMGRlOWIwYTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VSZWFkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZVJlYWRl
ci5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgYm9vbCBCTVBJbWFnZVJlYWRlcjo6ZGVjb2RlQk1QKGJv
b2wgb25seVNpemUpCiAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgZnJhbWVidWZmZXIgaWYgbmVlZGVk
LgogICAgIEFTU0VSVChtX2J1ZmZlcik7ICAvLyBQYXJlbnQgc2hvdWxkIHNldCB0aGlzIGJlZm9y
ZSBhc2tpbmcgdXMgdG8gZGVjb2RlIQogICAgIGlmIChtX2J1ZmZlci0+c3RhdHVzKCkgPT0gSW1h
Z2VGcmFtZTo6RnJhbWVFbXB0eSkgewotICAgICAgICBpZiAoIW1fYnVmZmVyLT5zZXRTaXplKG1f
cGFyZW50LT5zaXplKCkud2lkdGgoKSwgbV9wYXJlbnQtPnNpemUoKS5oZWlnaHQoKSkpCisgICAg
ICAgIGlmICghbV9idWZmZXItPnNldFNpemUobV9wYXJlbnQtPnNpemUoKSwgbV9wYXJlbnQtPnBy
ZW11bHRpcGx5QWxwaGEoKSkpCiAgICAgICAgICAgICByZXR1cm4gbV9wYXJlbnQtPnNldEZhaWxl
ZCgpOyAvLyBVbmFibGUgdG8gYWxsb2NhdGUuCiAgICAgICAgIG1fYnVmZmVyLT5zZXRTdGF0dXMo
SW1hZ2VGcmFtZTo6RnJhbWVQYXJ0aWFsKTsKICAgICAgICAgLy8gc2V0U2l6ZSgpIGNhbGxzIGVy
YXNlQVJHQigpLCB3aGljaCByZXNldHMgdGhlIGFscGhhIGZsYWcsIHNvIHdlIGZvcmNlCkBAIC04
Niw5ICs4Niw2IEBAIGJvb2wgQk1QSW1hZ2VSZWFkZXI6OmRlY29kZUJNUChib29sIG9ubHlTaXpl
KQogICAgICAgICAvLyB0aGVzZSAwcyBjb3VsZCBhY3R1YWxseSBzaG93IHRocm91Z2guCiAgICAg
ICAgIG1fYnVmZmVyLT5zZXRIYXNBbHBoYShmYWxzZSk7CiAKLSAgICAgICAgLy8gRm9yIEJNUHMs
IHRoZSBmcmFtZSBhbHdheXMgZmlsbHMgdGhlIGVudGlyZSBpbWFnZS4KLSAgICAgICAgbV9idWZm
ZXItPnNldE9yaWdpbmFsRnJhbWVSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgbV9wYXJlbnQtPnNp
emUoKSkpOwotCiAgICAgICAgIGlmICghbV9pc1RvcERvd24pCiAgICAgICAgICAgICBtX2Nvb3Jk
LnNldFkobV9wYXJlbnQtPnNpemUoKS5oZWlnaHQoKSAtIDEpOwogICAgIH0KQEAgLTE3MSw3ICsx
NjgsNyBAQCBib29sIEJNUEltYWdlUmVhZGVyOjpwcm9jZXNzSW5mb0hlYWRlcigpCiAgICAgICAg
IHJldHVybiBtX3BhcmVudC0+c2V0RmFpbGVkKCk7CiAKICAgICAvLyBTZXQgb3VyIHNpemUuCi0g
ICAgaWYgKCFtX3BhcmVudC0+c2V0U2l6ZShtX2luZm9IZWFkZXIuYmlXaWR0aCwgbV9pbmZvSGVh
ZGVyLmJpSGVpZ2h0KSkKKyAgICBpZiAoIW1fcGFyZW50LT5zZXRTaXplKEludFNpemUobV9pbmZv
SGVhZGVyLmJpV2lkdGgsIG1faW5mb0hlYWRlci5iaUhlaWdodCkpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICAvLyBGb3IgcGFsZXR0ZWQgaW1hZ2VzLCBiaXRtYXBzIGNhbiBzZXQgYmlD
bHJVc2VkIHRvIDAgdG8gbWVhbiAiYWxsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9CaXRtYXBQaXhlbHNDYWlyby5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9CaXRtYXBQaXhlbHNDYWlyby5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNWFhZjhhMGEzNmIxOGNiZjcyNzdkMmMyZTI2ZWI0MTcxMjU2MDBkNQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2NhaXJvL0JpdG1hcFBpeGVsc0NhaXJvLmNwcApAQCAtMCwwICsxLDQwIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiQml0bWFwUGl4ZWxzLmgiCisKKyNpbmNsdWRlIDxjYWlyby5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK05hdGl2ZUltYWdlUHRyIEJpdG1hcFBpeGVsczo6aW1hZ2UoKSBj
b25zdAoreworICAgIHJldHVybiBhZG9wdFJlZihjYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZV9m
b3JfZGF0YSgKKyAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBjaGFyKj4oY29uc3Rf
Y2FzdDxSR0JBMzIqPihtX3BpeGVscykpLAorICAgICAgICBDQUlST19GT1JNQVRfQVJHQjMyLCBz
aXplKCkud2lkdGgoKSwgc2l6ZSgpLmhlaWdodCgpLCBzaXplKCkud2lkdGgoKSAqIHNpemVvZihS
R0JBMzIpKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdlRGVjb2RlckNhaXJv
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdl
RGVjb2RlckNhaXJvLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2I0MTI5NWY4
NTczNThmYmJmMzVjMWIwNTI1ZThkNmNjMzUyMGY1OC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9jYWlyby9JbWFnZURlY29kZXJDYWlyby5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MCAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSW1hZ2VEZWNvZGVyLmgiCi0KLSNpbmNsdWRl
IDxjYWlyby5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLU5hdGl2ZUltYWdlUHRyIEltYWdl
RnJhbWU6OmFzTmV3TmF0aXZlSW1hZ2UoKSBjb25zdAotewotICAgIHJldHVybiBhZG9wdFJlZihj
YWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZV9mb3JfZGF0YSgKLSAgICAgICAgcmVpbnRlcnByZXRf
Y2FzdDx1bnNpZ25lZCBjaGFyKj4oY29uc3RfY2FzdDxQaXhlbERhdGEqPihtX2J5dGVzKSksCi0g
ICAgICAgIENBSVJPX0ZPUk1BVF9BUkdCMzIsIHdpZHRoKCksIGhlaWdodCgpLCB3aWR0aCgpICog
c2l6ZW9mKFBpeGVsRGF0YSkpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdl
RGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYv
R0lGSW1hZ2VEZWNvZGVyLmNwcAppbmRleCA5Zjk5MmE3YmUxZDY2NzIyNjc1YzJlODU0YWQxODkx
ZTYwZjg1NzdjLi4yNWE3NDhjNTFiMTJhYjk2ZjM0MzFmNzRjN2IxYTVhMzI1MDc0ODRlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1h
Z2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcApAQCAtNjAsMTIgKzYwLDEyIEBAIGJvb2wgR0lGSW1h
Z2VEZWNvZGVyOjppc1NpemVBdmFpbGFibGUoKQogICAgIHJldHVybiBJbWFnZURlY29kZXI6Omlz
U2l6ZUF2YWlsYWJsZSgpOwogfQogCi1ib29sIEdJRkltYWdlRGVjb2Rlcjo6c2V0U2l6ZSh1bnNp
Z25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0KQorYm9vbCBHSUZJbWFnZURlY29kZXI6OnNldFNp
emUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKLSAgICBpZiAoSW1hZ2VEZWNvZGVyOjppc1NpemVB
dmFpbGFibGUoKSAmJiBzaXplKCkgPT0gSW50U2l6ZSh3aWR0aCwgaGVpZ2h0KSkKKyAgICBpZiAo
SW1hZ2VEZWNvZGVyOjppc1NpemVBdmFpbGFibGUoKSAmJiB0aGlzLT5zaXplKCkgPT1zaXplKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmICghSW1hZ2VEZWNvZGVyOjpzZXRTaXplKHdp
ZHRoLCBoZWlnaHQpKQorICAgIGlmICghSW1hZ2VEZWNvZGVyOjpzZXRTaXplKHNpemUpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBwcmVwYXJlU2NhbGVEYXRhSWZOZWNlc3NhcnkoKTsK
QEAgLTIxMywxMCArMjEzLDEwIEBAIGJvb2wgR0lGSW1hZ2VEZWNvZGVyOjpoYXZlRGVjb2RlZFJv
dyh1bnNpZ25lZCBmcmFtZUluZGV4LCBjb25zdCBWZWN0b3I8dW5zaWduZWQKIAogICAgIC8vIElu
aXRpYWxpemUgdGhlIGZyYW1lIGlmIG5lY2Vzc2FyeS4KICAgICBJbWFnZUZyYW1lJiBidWZmZXIg
PSBtX2ZyYW1lQnVmZmVyQ2FjaGVbZnJhbWVJbmRleF07Ci0gICAgaWYgKCgoYnVmZmVyLnN0YXR1
cygpID09IEltYWdlRnJhbWU6OkZyYW1lRW1wdHkpICYmICFpbml0RnJhbWVCdWZmZXIoZnJhbWVJ
bmRleCkpIHx8ICFidWZmZXIuaGFzUGl4ZWxEYXRhKCkpCisgICAgaWYgKCgoYnVmZmVyLnN0YXR1
cygpID09IEltYWdlRnJhbWU6OkZyYW1lRW1wdHkpICYmICFpbml0RnJhbWVCdWZmZXIoZnJhbWVJ
bmRleCkpIHx8ICFidWZmZXIuaGFzUGl4ZWxzKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIEltYWdlRnJhbWU6OlBpeGVsRGF0YSogY3VycmVudEFkZHJlc3MgPSBidWZmZXIuZ2V0QWRk
cih4QmVnaW4sIHlCZWdpbik7CisgICAgUkdCQTMyKiBjdXJyZW50QWRkcmVzcyA9IGJ1ZmZlci5n
ZXRBZGRyKHhCZWdpbiwgeUJlZ2luKTsKICAgICAvLyBXcml0ZSBvbmUgcm93J3Mgd29ydGggb2Yg
ZGF0YSBpbnRvIHRoZSBmcmFtZS4gIAogICAgIGZvciAoaW50IHggPSB4QmVnaW47IHggPCB4RW5k
OyArK3gpIHsKICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciBzb3VyY2VWYWx1ZSA9IHJvd0J1
ZmZlclsobV9zY2FsZWQgPyBtX3NjYWxlZENvbHVtbnNbeF0gOiB4KSAtIGZyYW1lQ29udGV4dC0+
eE9mZnNldF07CkBAIC0yNjAsNyArMjYwLDcgQEAgYm9vbCBHSUZJbWFnZURlY29kZXI6OmZyYW1l
Q29tcGxldGUodW5zaWduZWQgZnJhbWVJbmRleCwgdW5zaWduZWQgZnJhbWVEdXJhdGlvbiwKICAg
ICBpZiAoIW1fY3VycmVudEJ1ZmZlclNhd0FscGhhKSB7CiAgICAgICAgIC8vIFRoZSB3aG9sZSBm
cmFtZSB3YXMgbm9uLXRyYW5zcGFyZW50LCBzbyBpdCdzIHBvc3NpYmxlIHRoYXQgdGhlIGVudGly
ZQogICAgICAgICAvLyByZXN1bHRpbmcgYnVmZmVyIHdhcyBub24tdHJhbnNwYXJlbnQsIGFuZCB3
ZSBjYW4gc2V0SGFzQWxwaGEoZmFsc2UpLgotICAgICAgICBpZiAoYnVmZmVyLm9yaWdpbmFsRnJh
bWVSZWN0KCkuY29udGFpbnMoSW50UmVjdChJbnRQb2ludCgpLCBzY2FsZWRTaXplKCkpKSkKKyAg
ICAgICAgaWYgKGJ1ZmZlci5waXhlbHMoKS0+cmVjdCgpLmNvbnRhaW5zKEludFJlY3QoSW50UG9p
bnQoKSwgc2NhbGVkU2l6ZSgpKSkpCiAgICAgICAgICAgICBidWZmZXIuc2V0SGFzQWxwaGEoZmFs
c2UpOwogICAgICAgICBlbHNlIGlmIChmcmFtZUluZGV4KSB7CiAgICAgICAgICAgICAvLyBUcmlj
a3kgY2FzZS4gIFRoaXMgZnJhbWUgZG9lcyBub3QgaGF2ZSBhbHBoYSBvbmx5IGlmIGV2ZXJ5d2hl
cmUKQEAgLTI4Myw3ICsyODMsNyBAQCBib29sIEdJRkltYWdlRGVjb2Rlcjo6ZnJhbWVDb21wbGV0
ZSh1bnNpZ25lZCBmcmFtZUluZGV4LCB1bnNpZ25lZCBmcmFtZUR1cmF0aW9uLAogICAgICAgICAg
ICAgLy8gVGhlIG9ubHkgcmVtYWluaW5nIGNhc2UgaXMgYSBEaXNwb3NlT3ZlcndyaXRlQmdjb2xv
ciBmcmFtZS4gIElmCiAgICAgICAgICAgICAvLyBpdCBoYWQgbm8gYWxwaGEsIGFuZCBpdHMgcmVj
dCBpcyBjb250YWluZWQgaW4gdGhlIGN1cnJlbnQgZnJhbWUncwogICAgICAgICAgICAgLy8gcmVj
dCwgd2Uga25vdyB0aGUgY3VycmVudCBmcmFtZSBoYXMgbm8gYWxwaGEuCi0gICAgICAgICAgICBp
ZiAoKHByZXZCdWZmZXItPmRpc3Bvc2FsTWV0aG9kKCkgPT0gSW1hZ2VGcmFtZTo6RGlzcG9zZU92
ZXJ3cml0ZUJnY29sb3IpICYmICFwcmV2QnVmZmVyLT5oYXNBbHBoYSgpICYmIGJ1ZmZlci5vcmln
aW5hbEZyYW1lUmVjdCgpLmNvbnRhaW5zKHByZXZCdWZmZXItPm9yaWdpbmFsRnJhbWVSZWN0KCkp
KQorICAgICAgICAgICAgaWYgKChwcmV2QnVmZmVyLT5kaXNwb3NhbE1ldGhvZCgpID09IEltYWdl
RnJhbWU6OkRpc3Bvc2VPdmVyd3JpdGVCZ2NvbG9yKSAmJiAhcHJldkJ1ZmZlci0+aGFzQWxwaGEo
KSAmJiBidWZmZXIucGl4ZWxzKCktPnJlY3QoKS5jb250YWlucyhwcmV2QnVmZmVyLT5waXhlbHMo
KS0+cmVjdCgpKSkKICAgICAgICAgICAgICAgICBidWZmZXIuc2V0SGFzQWxwaGEoZmFsc2UpOwog
ICAgICAgICB9CiAgICAgfQpAQCAtMzIxLDEwICszMjEsNyBAQCB2b2lkIEdJRkltYWdlRGVjb2Rl
cjo6ZGVjb2RlKHVuc2lnbmVkIGhhbHRBdEZyYW1lLCBHSUZRdWVyeSBxdWVyeSkKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIGNvbnN0IHNpemVfdCBvbGRTaXplID0gbV9mcmFtZUJ1ZmZl
ckNhY2hlLnNpemUoKTsKICAgICBtX2ZyYW1lQnVmZmVyQ2FjaGUucmVzaXplKG1fcmVhZGVyLT5p
bWFnZXNDb3VudCgpKTsKLSAgICBmb3IgKHNpemVfdCBpID0gb2xkU2l6ZTsgaSA8IG1fcmVhZGVy
LT5pbWFnZXNDb3VudCgpOyArK2kpCi0gICAgICAgIG1fZnJhbWVCdWZmZXJDYWNoZVtpXS5zZXRQ
cmVtdWx0aXBseUFscGhhKG1fcHJlbXVsdGlwbHlBbHBoYSk7CiAKICAgICBpZiAocXVlcnkgPT0g
R0lGRnJhbWVDb3VudFF1ZXJ5KQogICAgICAgICByZXR1cm47CkBAIC0zNTMsMTUgKzM1MCwxMCBA
QCBib29sIEdJRkltYWdlRGVjb2Rlcjo6aW5pdEZyYW1lQnVmZmVyKHVuc2lnbmVkIGZyYW1lSW5k
ZXgpCiAgICAgICAgIGZyYW1lUmVjdC5zZXRIZWlnaHQoc2l6ZSgpLmhlaWdodCgpIC0gZnJhbWVD
b250ZXh0LT55T2Zmc2V0KTsKIAogICAgIEltYWdlRnJhbWUqIGNvbnN0IGJ1ZmZlciA9ICZtX2Zy
YW1lQnVmZmVyQ2FjaGVbZnJhbWVJbmRleF07Ci0gICAgaW50IGxlZnQgPSB1cHBlckJvdW5kU2Nh
bGVkWChmcmFtZVJlY3QueCgpKTsKLSAgICBpbnQgcmlnaHQgPSBsb3dlckJvdW5kU2NhbGVkWChm
cmFtZVJlY3QubWF4WCgpLCBsZWZ0KTsKLSAgICBpbnQgdG9wID0gdXBwZXJCb3VuZFNjYWxlZFko
ZnJhbWVSZWN0LnkoKSk7Ci0gICAgaW50IGJvdHRvbSA9IGxvd2VyQm91bmRTY2FsZWRZKGZyYW1l
UmVjdC5tYXhZKCksIHRvcCk7Ci0gICAgYnVmZmVyLT5zZXRPcmlnaW5hbEZyYW1lUmVjdChJbnRS
ZWN0KGxlZnQsIHRvcCwgcmlnaHQgLSBsZWZ0LCBib3R0b20gLSB0b3ApKTsKIAogICAgIGlmICgh
ZnJhbWVJbmRleCkgewogICAgICAgICAvLyBUaGlzIGlzIHRoZSBmaXJzdCBmcmFtZSwgc28gd2Un
cmUgbm90IHJlbHlpbmcgb24gYW55IHByZXZpb3VzIGRhdGEuCi0gICAgICAgIGlmICghYnVmZmVy
LT5zZXRTaXplKHNjYWxlZFNpemUoKS53aWR0aCgpLCBzY2FsZWRTaXplKCkuaGVpZ2h0KCkpKQor
ICAgICAgICBpZiAoIWJ1ZmZlci0+c2V0U2l6ZShzY2FsZWRTaXplKCksIHByZW11bHRpcGx5QWxw
aGEoKSkpCiAgICAgICAgICAgICByZXR1cm4gc2V0RmFpbGVkKCk7CiAgICAgfSBlbHNlIHsKICAg
ICAgICAgLy8gVGhlIHN0YXJ0aW5nIHN0YXRlIGZvciB0aGlzIGZyYW1lIGRlcGVuZHMgb24gdGhl
IHByZXZpb3VzIGZyYW1lJ3MKQEAgLTM4NywxMiArMzc5LDEyIEBAIGJvb2wgR0lGSW1hZ2VEZWNv
ZGVyOjppbml0RnJhbWVCdWZmZXIodW5zaWduZWQgZnJhbWVJbmRleCkKICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgIC8vIFdlIHdhbnQgdG8gY2xlYXIgdGhlIHByZXZpb3VzIGZyYW1lIHRv
IHRyYW5zcGFyZW50LCB3aXRob3V0CiAgICAgICAgICAgICAvLyBhZmZlY3RpbmcgcGl4ZWxzIGlu
IHRoZSBpbWFnZSBvdXRzaWRlIG9mIHRoZSBmcmFtZS4KLSAgICAgICAgICAgIGNvbnN0IEludFJl
Y3QmIHByZXZSZWN0ID0gcHJldkJ1ZmZlci0+b3JpZ2luYWxGcmFtZVJlY3QoKTsKKyAgICAgICAg
ICAgIGNvbnN0IEludFJlY3QmIHByZXZSZWN0ID0gcHJldkJ1ZmZlci0+cGl4ZWxzKCktPnJlY3Qo
KTsKICAgICAgICAgICAgIGNvbnN0IEludFNpemUmIGJ1ZmZlclNpemUgPSBzY2FsZWRTaXplKCk7
CiAgICAgICAgICAgICBpZiAoIWZyYW1lSW5kZXggfHwgcHJldlJlY3QuY29udGFpbnMoSW50UmVj
dChJbnRQb2ludCgpLCBzY2FsZWRTaXplKCkpKSkgewogICAgICAgICAgICAgICAgIC8vIENsZWFy
aW5nIHRoZSBmaXJzdCBmcmFtZSwgb3IgYSBmcmFtZSB0aGUgc2l6ZSBvZiB0aGUgd2hvbGUKICAg
ICAgICAgICAgICAgICAvLyBpbWFnZSwgcmVzdWx0cyBpbiBhIGNvbXBsZXRlbHkgZW1wdHkgaW1h
Z2UuCi0gICAgICAgICAgICAgICAgaWYgKCFidWZmZXItPnNldFNpemUoYnVmZmVyU2l6ZS53aWR0
aCgpLCBidWZmZXJTaXplLmhlaWdodCgpKSkKKyAgICAgICAgICAgICAgICBpZiAoIWJ1ZmZlci0+
c2V0U2l6ZShidWZmZXJTaXplLCBwcmVtdWx0aXBseUFscGhhKCkpKQogICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gc2V0RmFpbGVkKCk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgICAgIC8vIENvcHkgdGhlIHdob2xlIHByZXZpb3VzIGJ1ZmZlciwgdGhlbiBjbGVhciBqdXN0
IGl0cyBmcmFtZS4KQEAgLTQwMiw2ICszOTQsMTIgQEAgYm9vbCBHSUZJbWFnZURlY29kZXI6Omlu
aXRGcmFtZUJ1ZmZlcih1bnNpZ25lZCBmcmFtZUluZGV4KQogICAgICAgICAgICAgfQogICAgICAg
ICB9CiAgICAgfQorICAgIAorICAgIGludCBsZWZ0ID0gdXBwZXJCb3VuZFNjYWxlZFgoZnJhbWVS
ZWN0LngoKSk7CisgICAgaW50IHJpZ2h0ID0gbG93ZXJCb3VuZFNjYWxlZFgoZnJhbWVSZWN0Lm1h
eFgoKSwgbGVmdCk7CisgICAgaW50IHRvcCA9IHVwcGVyQm91bmRTY2FsZWRZKGZyYW1lUmVjdC55
KCkpOworICAgIGludCBib3R0b20gPSBsb3dlckJvdW5kU2NhbGVkWShmcmFtZVJlY3QubWF4WSgp
LCB0b3ApOworICAgIGJ1ZmZlci0+cGl4ZWxzKCktPnNldFJlY3QoSW50UmVjdChsZWZ0LCB0b3As
IHJpZ2h0IC0gbGVmdCwgYm90dG9tIC0gdG9wKSk7CiAKICAgICAvLyBVcGRhdGUgb3VyIHN0YXR1
cyB0byBiZSBwYXJ0aWFsbHkgY29tcGxldGUuCiAgICAgYnVmZmVyLT5zZXRTdGF0dXMoSW1hZ2VG
cmFtZTo6RnJhbWVQYXJ0aWFsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaAppbmRleCA5NWVjNmQw
YTdiNjk2NjUyYzcwOWI3YjYyZDQxYWE0ZjNhYjhmMWUwLi43YjhkODdjZmQ3MjFiMzA5MDcwYzQ5
OTg4ZjM0NWM5MDM1NGRhNWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5oCkBAIC00NCw3ICs0
NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgU3RyaW5nIGZpbGVuYW1lRXh0ZW5z
aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gImdpZiI7IH0KICAgICAgICAgdm9pZCBzZXRE
YXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIG92ZXJyaWRlOwog
ICAgICAgICBib29sIGlzU2l6ZUF2YWlsYWJsZSgpIG92ZXJyaWRlOwotICAgICAgICBib29sIHNl
dFNpemUodW5zaWduZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCkgb3ZlcnJpZGU7CisgICAgICAg
IGJvb2wgc2V0U2l6ZShjb25zdCBJbnRTaXplJikgb3ZlcnJpZGU7CiAgICAgICAgIHNpemVfdCBm
cmFtZUNvdW50KCkgb3ZlcnJpZGU7CiAgICAgICAgIGludCByZXBldGl0aW9uQ291bnQoKSBjb25z
dCBvdmVycmlkZTsKICAgICAgICAgSW1hZ2VGcmFtZSogZnJhbWVCdWZmZXJBdEluZGV4KHNpemVf
dCBpbmRleCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmNwcAppbmRleCAwMGQyNTJj
ZWZiMDVhYTUxZjg0ZDhkZjk5MDIyOTBlZmQ3MTA0MjJmLi5lMjg2NmY0YzI1NTZkYjBjZTAxMjY4
MzU4MTlhMzkyMmU1OTQ3ZjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5jcHAKQEAgLTc4LDYg
Kzc4LDcgQEAgbWFpbGluZyBhZGRyZXNzLgogI2luY2x1ZGUgPHN0cmluZy5oPgogI2luY2x1ZGUg
IkdJRkltYWdlRGVjb2Rlci5oIgogI2luY2x1ZGUgIkltYWdlU291cmNlLmgiCisjaW5jbHVkZSAi
SW50U2l6ZS5oIgogCiB1c2luZyBXZWJDb3JlOjpHSUZJbWFnZURlY29kZXI7CiAKQEAgLTQ0Nyw3
ICs0NDgsNyBAQCBib29sIEdJRkltYWdlUmVhZGVyOjpwYXJzZShzaXplX3QgZGF0YVBvc2l0aW9u
LCBzaXplX3QgbGVuLCBib29sIHBhcnNlU2l6ZU9ubHkpCiAKICAgICAgICAgICAgIC8vIENBTExC
QUNLOiBJbmZvcm0gdGhlIGRlY29kZXJwbHVnaW4gb2Ygb3VyIHNpemUuCiAgICAgICAgICAgICAv
LyBOb3RlOiBBIHN1YnNlcXVlbnQgZnJhbWUgbWlnaHQgaGF2ZSBkaW1lbnNpb25zIGxhcmdlciB0
aGFuIHRoZSAic2NyZWVuIiBkaW1lbnNpb25zLgotICAgICAgICAgICAgaWYgKG1fY2xpZW50ICYm
ICFtX2NsaWVudC0+c2V0U2l6ZShtX3NjcmVlbldpZHRoLCBtX3NjcmVlbkhlaWdodCkpCisgICAg
ICAgICAgICBpZiAobV9jbGllbnQgJiYgIW1fY2xpZW50LT5zZXRTaXplKEludFNpemUobV9zY3Jl
ZW5XaWR0aCwgbV9zY3JlZW5IZWlnaHQpKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICAgICAgICAgIG1fc2NyZWVuQmdjb2xvciA9IGN1cnJlbnRDb21wb25lbnRbNV07CkBA
IC02NjQsNyArNjY1LDcgQEAgYm9vbCBHSUZJbWFnZVJlYWRlcjo6cGFyc2Uoc2l6ZV90IGRhdGFQ
b3NpdGlvbiwgc2l6ZV90IGxlbiwgYm9vbCBwYXJzZVNpemVPbmx5KQogICAgICAgICAgICAgICAg
IHlPZmZzZXQgPSAwOwogCiAgICAgICAgICAgICAgICAgLy8gQ0FMTEJBQ0s6IEluZm9ybSB0aGUg
ZGVjb2RlcnBsdWdpbiBvZiBvdXIgc2l6ZS4KLSAgICAgICAgICAgICAgICBpZiAobV9jbGllbnQg
JiYgIW1fY2xpZW50LT5zZXRTaXplKG1fc2NyZWVuV2lkdGgsIG1fc2NyZWVuSGVpZ2h0KSkKKyAg
ICAgICAgICAgICAgICBpZiAobV9jbGllbnQgJiYgIW1fY2xpZW50LT5zZXRTaXplKEludFNpemUo
bV9zY3JlZW5XaWR0aCwgbV9zY3JlZW5IZWlnaHQpKSkKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCmlu
ZGV4IGE1OTIwMWI1NmU1YjIyZTJhODUxYzBjOTkyZWE0YjFmODhjYzNiNGYuLjNjYjRhMTM5YzRk
NDU1NGE1OTc4NDU0NzEzZjBlOTM4OTViZjJkYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIu
Y3BwCkBAIC04OCwyMSArODgsMjAgQEAgSW50U2l6ZSBJQ09JbWFnZURlY29kZXI6OmZyYW1lU2l6
ZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsKQogICAgIHJldHVybiAoaW5k
ZXggJiYgKGluZGV4IDwgbV9kaXJFbnRyaWVzLnNpemUoKSkpID8gbV9kaXJFbnRyaWVzW2luZGV4
XS5tX3NpemUgOiBzaXplKCk7CiB9CiAKLWJvb2wgSUNPSW1hZ2VEZWNvZGVyOjpzZXRTaXplKHVu
c2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQpCitib29sIElDT0ltYWdlRGVjb2Rlcjo6c2V0
U2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQogewogICAgIC8vIFRoZSBzaXplIGNhbGN1bGF0ZWQg
aW5zaWRlIHRoZSBCTVBJbWFnZVJlYWRlciBoYWQgYmV0dGVyIG1hdGNoIHRoZSBvbmUgaW4KICAg
ICAvLyB0aGUgaWNvbiBkaXJlY3RvcnkuCi0gICAgcmV0dXJuIG1fZnJhbWVTaXplLmlzRW1wdHko
KSA/IEltYWdlRGVjb2Rlcjo6c2V0U2l6ZSh3aWR0aCwgaGVpZ2h0KSA6ICgoSW50U2l6ZSh3aWR0
aCwgaGVpZ2h0KSA9PSBtX2ZyYW1lU2l6ZSkgfHwgc2V0RmFpbGVkKCkpOworICAgIHJldHVybiBt
X2ZyYW1lU2l6ZS5pc0VtcHR5KCkgPyBJbWFnZURlY29kZXI6OnNldFNpemUoc2l6ZSkgOiAoKHNp
emUgPT0gbV9mcmFtZVNpemUpIHx8IHNldEZhaWxlZCgpKTsKIH0KIAogc2l6ZV90IElDT0ltYWdl
RGVjb2Rlcjo6ZnJhbWVDb3VudCgpCiB7CiAgICAgZGVjb2RlKDAsIHRydWUpOwotICAgIGlmICht
X2ZyYW1lQnVmZmVyQ2FjaGUuaXNFbXB0eSgpKSB7CisKKyAgICBpZiAobV9mcmFtZUJ1ZmZlckNh
Y2hlLmlzRW1wdHkoKSkKICAgICAgICAgbV9mcmFtZUJ1ZmZlckNhY2hlLnJlc2l6ZShtX2RpckVu
dHJpZXMuc2l6ZSgpKTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2RpckVudHJp
ZXMuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBtX2ZyYW1lQnVmZmVyQ2FjaGVbaV0uc2V0UHJl
bXVsdGlwbHlBbHBoYShtX3ByZW11bHRpcGx5QWxwaGEpOwotICAgIH0KKwogICAgIC8vIENBVVRJ
T046IFdlIG11c3Qgbm90IHJlc2l6ZSBtX2ZyYW1lQnVmZmVyQ2FjaGUgYWdhaW4gYWZ0ZXIgdGhp
cywgYXMKICAgICAvLyBkZWNvZGVBdEluZGV4KCkgbWF5IGdpdmUgYSBCTVBJbWFnZVJlYWRlciBh
IHBvaW50ZXIgdG8gb25lIG9mIHRoZQogICAgIC8vIGVudHJpZXMuCkBAIC0yMjAsNyArMjE5LDcg
QEAgYm9vbCBJQ09JbWFnZURlY29kZXI6OmRlY29kZUF0SW5kZXgoc2l6ZV90IGluZGV4KQogCiAg
ICAgaWYgKCFtX3BuZ0RlY29kZXJzW2luZGV4XSkgewogICAgICAgICBtX3BuZ0RlY29kZXJzW2lu
ZGV4XSA9IHN0ZDo6bWFrZV91bmlxdWU8Ci0gICAgICAgICAgICBQTkdJbWFnZURlY29kZXI+KG1f
cHJlbXVsdGlwbHlBbHBoYSA/IEltYWdlU291cmNlOjpBbHBoYVByZW11bHRpcGxpZWQgOiBJbWFn
ZVNvdXJjZTo6QWxwaGFOb3RQcmVtdWx0aXBsaWVkLAorICAgICAgICAgICAgUE5HSW1hZ2VEZWNv
ZGVyPihwcmVtdWx0aXBseUFscGhhKCkgPyBJbWFnZVNvdXJjZTo6QWxwaGFQcmVtdWx0aXBsaWVk
IDogSW1hZ2VTb3VyY2U6OkFscGhhTm90UHJlbXVsdGlwbGllZCwKICAgICAgICAgICAgICAgICBt
X2lnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlID8gSW1hZ2VTb3VyY2U6OkdhbW1hQW5kQ29sb3JQ
cm9maWxlSWdub3JlZCA6IEltYWdlU291cmNlOjpHYW1tYUFuZENvbG9yUHJvZmlsZUFwcGxpZWQp
OwogICAgICAgICBzZXREYXRhRm9yUE5HRGVjb2RlckF0SW5kZXgoaW5kZXgpOwogICAgIH0KQEAg
LTI3OSw3ICsyNzgsNyBAQCBib29sIElDT0ltYWdlRGVjb2Rlcjo6cHJvY2Vzc0RpcmVjdG9yeUVu
dHJpZXMoKQogICAgIGNvbnN0IEljb25EaXJlY3RvcnlFbnRyeSYgZGlyRW50cnkgPSBtX2RpckVu
dHJpZXMuZmlyc3QoKTsKICAgICAvLyBUZWNobmljYWxseSwgdGhpcyBuZXh0IGNhbGwgc2hvdWxk
bid0IGJlIGFibGUgdG8gZmFpbCwgc2luY2UgdGhlIHdpZHRoCiAgICAgLy8gYW5kIGhlaWdodCBo
ZXJlIGFyZSBlYWNoIDw9IDI1NiwgYW5kIHxtX2ZyYW1lU2l6ZXwgaXMgZW1wdHkuCi0gICAgcmV0
dXJuIHNldFNpemUoZGlyRW50cnkubV9zaXplLndpZHRoKCksIGRpckVudHJ5Lm1fc2l6ZS5oZWln
aHQoKSk7CisgICAgcmV0dXJuIHNldFNpemUoZGlyRW50cnkubV9zaXplKTsKIH0KIAogSUNPSW1h
Z2VEZWNvZGVyOjpJY29uRGlyZWN0b3J5RW50cnkgSUNPSW1hZ2VEZWNvZGVyOjpyZWFkRGlyZWN0
b3J5RW50cnkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5oCmluZGV4IDU4MGM2N2E4ODNhNDBiNmU1
NDIwZjY1YWUzNDQ4ODQ1NzQxOTM4ZWMuLmQzM2QwNThhMTU5NjA3ZGY4OTM5Y2VhMWNkN2E2ZjMx
NDRiNzIyZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2ljby9JQ09JbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIGlzU2l6ZUF2YWlsYWJsZSgpIG92ZXJyaWRl
OwogICAgICAgICBJbnRTaXplIHNpemUoKSBvdmVycmlkZTsKICAgICAgICAgSW50U2l6ZSBmcmFt
ZVNpemVBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCkgb3ZlcnJpZGU7Ci0gICAgICAg
IGJvb2wgc2V0U2l6ZSh1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0KSBvdmVycmlkZTsK
KyAgICAgICAgYm9vbCBzZXRTaXplKGNvbnN0IEludFNpemUmKSBvdmVycmlkZTsKICAgICAgICAg
c2l6ZV90IGZyYW1lQ291bnQoKSBvdmVycmlkZTsKICAgICAgICAgSW1hZ2VGcmFtZSogZnJhbWVC
dWZmZXJBdEluZGV4KHNpemVfdCkgb3ZlcnJpZGU7CiAgICAgICAgIC8vIENBVVRJT046IHNldEZh
aWxlZCgpIGRlbGV0ZXMgYWxsIHJlYWRlcnMgYW5kIGRlY29kZXJzLiAgQmUgY2FyZWZ1bCB0bwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9K
UEVHSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggZWU2NmFjMTRkNGJlMDdjYTlhZmZi
MmEzYWZmODllYmZhNjJmYjEyZS4uMDkzNTcwZTdmYmQ3NGMyZjdhYzk0NjU0N2RhNDZjNTNlY2Rh
MGNiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
anBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCkBAIC0xOTYsMzYgKzE5Niw2
IEBAIHN0YXRpYyBJbWFnZU9yaWVudGF0aW9uIHJlYWRJbWFnZU9yaWVudGF0aW9uKGpwZWdfZGVj
b21wcmVzc19zdHJ1Y3QqIGluZm8pCiAgICAgcmV0dXJuIEltYWdlT3JpZW50YXRpb24oKTsKIH0K
IAotc3RhdGljIENvbG9yUHJvZmlsZSByZWFkQ29sb3JQcm9maWxlKGpwZWdfZGVjb21wcmVzc19z
dHJ1Y3QqIGluZm8pCi17Ci0jaWYgVVNFKElDQ0pQRUcpCi0gICAgSk9DVEVUKiBwcm9maWxlOwot
ICAgIHVuc2lnbmVkIGludCBwcm9maWxlTGVuZ3RoOwotCi0gICAgaWYgKCFyZWFkX2ljY19wcm9m
aWxlKGluZm8sICZwcm9maWxlLCAmcHJvZmlsZUxlbmd0aCkpCi0gICAgICAgIHJldHVybiBDb2xv
clByb2ZpbGUoKTsKLQotICAgIC8vIE9ubHkgYWNjZXB0IFJHQiBjb2xvciBwcm9maWxlcyBmcm9t
IGlucHV0IGNsYXNzIGRldmljZXMuCi0gICAgYm9vbCBpZ25vcmVQcm9maWxlID0gZmFsc2U7Ci0g
ICAgY2hhciogcHJvZmlsZURhdGEgPSByZWludGVycHJldF9jYXN0PGNoYXIqPihwcm9maWxlKTsK
LSAgICBpZiAocHJvZmlsZUxlbmd0aCA8IEltYWdlRGVjb2Rlcjo6aWNjQ29sb3JQcm9maWxlSGVh
ZGVyTGVuZ3RoKQotICAgICAgICBpZ25vcmVQcm9maWxlID0gdHJ1ZTsKLSAgICBlbHNlIGlmICgh
SW1hZ2VEZWNvZGVyOjpyZ2JDb2xvclByb2ZpbGUocHJvZmlsZURhdGEsIHByb2ZpbGVMZW5ndGgp
KQotICAgICAgICBpZ25vcmVQcm9maWxlID0gdHJ1ZTsKLSAgICBlbHNlIGlmICghSW1hZ2VEZWNv
ZGVyOjppbnB1dERldmljZUNvbG9yUHJvZmlsZShwcm9maWxlRGF0YSwgcHJvZmlsZUxlbmd0aCkp
Ci0gICAgICAgIGlnbm9yZVByb2ZpbGUgPSB0cnVlOwotCi0gICAgQ29sb3JQcm9maWxlIGNvbG9y
UHJvZmlsZTsKLSAgICBpZiAoIWlnbm9yZVByb2ZpbGUpCi0gICAgICAgIGNvbG9yUHJvZmlsZS5h
cHBlbmQocHJvZmlsZURhdGEsIHByb2ZpbGVMZW5ndGgpOwotICAgIGZyZWUocHJvZmlsZSk7Ci0g
ICAgcmV0dXJuIGNvbG9yUHJvZmlsZTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGluZm8pOwot
ICAgIHJldHVybiBDb2xvclByb2ZpbGUoKTsKLSNlbmRpZgotfQotCiBjbGFzcyBKUEVHSW1hZ2VS
ZWFkZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgpAQCAtMzUyLDcg
KzMyMiw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1fc3RhdGUgPSBKUEVHX1NUQVJUX0RFQ09N
UFJFU1M7CiAKICAgICAgICAgICAgIC8vIFdlIGNhbiBmaWxsIGluIHRoZSBzaXplIG5vdyB0aGF0
IHRoZSBoZWFkZXIgaXMgYXZhaWxhYmxlLgotICAgICAgICAgICAgaWYgKCFtX2RlY29kZXItPnNl
dFNpemUobV9pbmZvLmltYWdlX3dpZHRoLCBtX2luZm8uaW1hZ2VfaGVpZ2h0KSkKKyAgICAgICAg
ICAgIGlmICghbV9kZWNvZGVyLT5zZXRTaXplKEludFNpemUobV9pbmZvLmltYWdlX3dpZHRoLCBt
X2luZm8uaW1hZ2VfaGVpZ2h0KSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgICAgICAgICBtX2RlY29kZXItPnNldE9yaWVudGF0aW9uKHJlYWRJbWFnZU9yaWVudGF0aW9u
KGluZm8oKSkpOwpAQCAtMzYzLDEzICszMzMsNiBAQCBwdWJsaWM6CiAgICAgICAgICAgICBpZiAo
bV9kZWNvZGVyLT53aWxsRG93blNhbXBsZSgpICYmIHR1cmJvU3dpenpsZWQobV9pbmZvLm91dF9j
b2xvcl9zcGFjZSkpCiAgICAgICAgICAgICAgICAgbV9pbmZvLm91dF9jb2xvcl9zcGFjZSA9IEpD
U19SR0I7CiAjZW5kaWYKLSAgICAgICAgICAgIC8vIEFsbG93IGNvbG9yIG1hbmFnZW1lbnQgb2Yg
dGhlIGRlY29kZWQgUkdCQSBwaXhlbHMgaWYgcG9zc2libGUuCi0gICAgICAgICAgICBpZiAoIW1f
ZGVjb2Rlci0+aWdub3Jlc0dhbW1hQW5kQ29sb3JQcm9maWxlKCkpIHsKLSAgICAgICAgICAgICAg
ICBDb2xvclByb2ZpbGUgcmdiSW5wdXREZXZpY2VDb2xvclByb2ZpbGUgPSByZWFkQ29sb3JQcm9m
aWxlKGluZm8oKSk7Ci0gICAgICAgICAgICAgICAgaWYgKCFyZ2JJbnB1dERldmljZUNvbG9yUHJv
ZmlsZS5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgICAgIG1fZGVjb2Rlci0+c2V0Q29sb3JQ
cm9maWxlKHJnYklucHV0RGV2aWNlQ29sb3JQcm9maWxlKTsKLSAgICAgICAgICAgIH0KLQogICAg
ICAgICAgICAgLy8gRG9uJ3QgYWxsb2NhdGUgYSBnaWFudCBhbmQgc3VwZXJmbHVvdXMgbWVtb3J5
IGJ1ZmZlciB3aGVuIHRoZQogICAgICAgICAgICAgLy8gaW1hZ2UgaXMgYSBzZXF1ZW50aWFsIEpQ
RUcuCiAgICAgICAgICAgICBtX2luZm8uYnVmZmVyZWRfaW1hZ2UgPSBqcGVnX2hhc19tdWx0aXBs
ZV9zY2FucygmbV9pbmZvKTsKQEAgLTU1Niw5ICs1MTksOSBAQCBib29sIEpQRUdJbWFnZURlY29k
ZXI6OmlzU2l6ZUF2YWlsYWJsZSgpCiAgICAgcmV0dXJuIEltYWdlRGVjb2Rlcjo6aXNTaXplQXZh
aWxhYmxlKCk7CiB9CiAKLWJvb2wgSlBFR0ltYWdlRGVjb2Rlcjo6c2V0U2l6ZSh1bnNpZ25lZCB3
aWR0aCwgdW5zaWduZWQgaGVpZ2h0KQorYm9vbCBKUEVHSW1hZ2VEZWNvZGVyOjpzZXRTaXplKGNv
bnN0IEludFNpemUmIHNpemUpCiB7Ci0gICAgaWYgKCFJbWFnZURlY29kZXI6OnNldFNpemUod2lk
dGgsIGhlaWdodCkpCisgICAgaWYgKCFJbWFnZURlY29kZXI6OnNldFNpemUoc2l6ZSkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgIHByZXBhcmVTY2FsZURhdGFJZk5lY2Vzc2FyeSgpOwpA
QCAtNTcwLDEwICs1MzMsOCBAQCBJbWFnZUZyYW1lKiBKUEVHSW1hZ2VEZWNvZGVyOjpmcmFtZUJ1
ZmZlckF0SW5kZXgoc2l6ZV90IGluZGV4KQogICAgIGlmIChpbmRleCkKICAgICAgICAgcmV0dXJu
IDA7CiAKLSAgICBpZiAobV9mcmFtZUJ1ZmZlckNhY2hlLmlzRW1wdHkoKSkgeworICAgIGlmICht
X2ZyYW1lQnVmZmVyQ2FjaGUuaXNFbXB0eSgpKQogICAgICAgICBtX2ZyYW1lQnVmZmVyQ2FjaGUu
cmVzaXplKDEpOwotICAgICAgICBtX2ZyYW1lQnVmZmVyQ2FjaGVbMF0uc2V0UHJlbXVsdGlwbHlB
bHBoYShtX3ByZW11bHRpcGx5QWxwaGEpOwotICAgIH0KIAogICAgIEltYWdlRnJhbWUmIGZyYW1l
ID0gbV9mcmFtZUJ1ZmZlckNhY2hlWzBdOwogICAgIGlmIChmcmFtZS5zdGF0dXMoKSAhPSBJbWFn
ZUZyYW1lOjpGcmFtZUNvbXBsZXRlKQpAQCAtNTg4LDcgKzU0OSw3IEBAIGJvb2wgSlBFR0ltYWdl
RGVjb2Rlcjo6c2V0RmFpbGVkKCkKIH0KIAogdGVtcGxhdGUgPEpfQ09MT1JfU1BBQ0UgY29sb3JT
cGFjZT4KLXZvaWQgc2V0UGl4ZWwoSW1hZ2VGcmFtZSYgYnVmZmVyLCBJbWFnZUZyYW1lOjpQaXhl
bERhdGEqIGN1cnJlbnRBZGRyZXNzLCBKU0FNUEFSUkFZIHNhbXBsZXMsIGludCBjb2x1bW4pCit2
b2lkIHNldFBpeGVsKEltYWdlRnJhbWUmIGJ1ZmZlciwgUkdCQTMyKiBjdXJyZW50QWRkcmVzcywg
SlNBTVBBUlJBWSBzYW1wbGVzLCBpbnQgY29sdW1uKQogewogICAgIEpTQU1QTEUqIGpzYW1wbGUg
PSAqc2FtcGxlcyArIGNvbHVtbiAqIChjb2xvclNwYWNlID09IEpDU19SR0IgPyAzIDogNCk7CiAK
QEAgLTYzMSw3ICs1OTIsNyBAQCBib29sIEpQRUdJbWFnZURlY29kZXI6Om91dHB1dFNjYW5saW5l
cyhJbWFnZUZyYW1lJiBidWZmZXIpCiAgICAgICAgIGlmIChkZXN0WSA8IDApCiAgICAgICAgICAg
ICBjb250aW51ZTsKIAotICAgICAgICBJbWFnZUZyYW1lOjpQaXhlbERhdGEqIGN1cnJlbnRBZGRy
ZXNzID0gYnVmZmVyLmdldEFkZHIoMCwgZGVzdFkpOworICAgICAgICBSR0JBMzIqIGN1cnJlbnRB
ZGRyZXNzID0gYnVmZmVyLmdldEFkZHIoMCwgZGVzdFkpOwogICAgICAgICBmb3IgKGludCB4ID0g
MDsgeCA8IHdpZHRoOyArK3gpIHsKICAgICAgICAgICAgIHNldFBpeGVsPGNvbG9yU3BhY2U+KGJ1
ZmZlciwgY3VycmVudEFkZHJlc3MsIHNhbXBsZXMsIGlzU2NhbGVkID8gbV9zY2FsZWRDb2x1bW5z
W3hdIDogeCk7CiAgICAgICAgICAgICArK2N1cnJlbnRBZGRyZXNzOwpAQCAtNjU0LDE2ICs2MTUs
MTIgQEAgYm9vbCBKUEVHSW1hZ2VEZWNvZGVyOjpvdXRwdXRTY2FubGluZXMoKQogICAgIC8vIElu
aXRpYWxpemUgdGhlIGZyYW1lYnVmZmVyIGlmIG5lZWRlZC4KICAgICBJbWFnZUZyYW1lJiBidWZm
ZXIgPSBtX2ZyYW1lQnVmZmVyQ2FjaGVbMF07CiAgICAgaWYgKGJ1ZmZlci5zdGF0dXMoKSA9PSBJ
bWFnZUZyYW1lOjpGcmFtZUVtcHR5KSB7Ci0gICAgICAgIGlmICghYnVmZmVyLnNldFNpemUoc2Nh
bGVkU2l6ZSgpLndpZHRoKCksIHNjYWxlZFNpemUoKS5oZWlnaHQoKSkpCisgICAgICAgIGlmICgh
YnVmZmVyLnNldFNpemUoc2NhbGVkU2l6ZSgpLCBwcmVtdWx0aXBseUFscGhhKCkpKQogICAgICAg
ICAgICAgcmV0dXJuIHNldEZhaWxlZCgpOwogICAgICAgICBidWZmZXIuc2V0U3RhdHVzKEltYWdl
RnJhbWU6OkZyYW1lUGFydGlhbCk7CiAgICAgICAgIC8vIFRoZSBidWZmZXIgaXMgdHJhbnNwYXJl
bnQgb3V0c2lkZSB0aGUgZGVjb2RlZCBhcmVhIHdoaWxlIHRoZSBpbWFnZSBpcwogICAgICAgICAv
LyBsb2FkaW5nLiBUaGUgY29tcGxldGVkIGltYWdlIHdpbGwgYmUgbWFya2VkIGZ1bGx5IG9wYXF1
ZSBpbiBqcGVnQ29tcGxldGUoKS4KICAgICAgICAgYnVmZmVyLnNldEhhc0FscGhhKHRydWUpOwot
ICAgICAgICBidWZmZXIuc2V0Q29sb3JQcm9maWxlKG1fY29sb3JQcm9maWxlKTsKLQotICAgICAg
ICAvLyBGb3IgSlBFR3MsIHRoZSBmcmFtZSBhbHdheXMgZmlsbHMgdGhlIGVudGlyZSBpbWFnZS4K
LSAgICAgICAgYnVmZmVyLnNldE9yaWdpbmFsRnJhbWVSZWN0KEludFJlY3QoSW50UG9pbnQoKSwg
c2l6ZSgpKSk7CiAgICAgfQogCiAgICAganBlZ19kZWNvbXByZXNzX3N0cnVjdCogaW5mbyA9IG1f
cmVhZGVyLT5pbmZvKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5oCmluZGV4IDZjMWZjMDQy
NzMyMjAzNzViYzZhMjVlYzE5OGY4YzhhNTEwMTQ4NmMuLmZjMjNmYmQ5NjM3YjUzYWVlNjY1MzNi
NmFhYjRmN2IyNjhkYzBlYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5oCkBAIC01MCw3
ICs1MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gSW1hZ2VEZWNvZGVyCiAg
ICAgICAgIFN0cmluZyBmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
ICJqcGciOyB9CiAgICAgICAgIGJvb2wgaXNTaXplQXZhaWxhYmxlKCkgb3ZlcnJpZGU7Ci0gICAg
ICAgIGJvb2wgc2V0U2l6ZSh1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0KSBvdmVycmlk
ZTsKKyAgICAgICAgYm9vbCBzZXRTaXplKGNvbnN0IEludFNpemUmKSBvdmVycmlkZTsKICAgICAg
ICAgSW1hZ2VGcmFtZSogZnJhbWVCdWZmZXJBdEluZGV4KHNpemVfdCBpbmRleCkgb3ZlcnJpZGU7
CiAgICAgICAgIC8vIENBVVRJT046IHNldEZhaWxlZCgpIGRlbGV0ZXMgfG1fcmVhZGVyfC4gIEJl
IGNhcmVmdWwgdG8gYXZvaWQKICAgICAgICAgLy8gYWNjZXNzaW5nIGRlbGV0ZWQgbWVtb3J5LCBl
c3BlY2lhbGx5IHdoZW4gY2FsbGluZyB0aGlzIGZyb20gaW5zaWRlCkBAIC02Niw3ICs2Niw2IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBvdXRwdXRTY2FubGluZXMoKTsKICAg
ICAgICAgdm9pZCBqcGVnQ29tcGxldGUoKTsKIAotICAgICAgICB2b2lkIHNldENvbG9yUHJvZmls
ZShjb25zdCBDb2xvclByb2ZpbGUmIGNvbG9yUHJvZmlsZSkgeyBtX2NvbG9yUHJvZmlsZSA9IGNv
bG9yUHJvZmlsZTsgfQogICAgICAgICB2b2lkIHNldE9yaWVudGF0aW9uKEltYWdlT3JpZW50YXRp
b24gb3JpZW50YXRpb24pIHsgbV9vcmllbnRhdGlvbiA9IG9yaWVudGF0aW9uOyB9CiAKICAgICBw
cml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBlNjQ0YTcxMTBlZmNiNTQw
ZDg5Y2UxYmE4MTEwMGJjNDgyM2IxOGYyLi42MjM4NjI4NmJjOWMzODcxNzFkN2JjNmU2NWU1YzNm
OWU0NTQ0YWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcApAQCAtMjM1LDkgKzIzNSw5
IEBAIGJvb2wgUE5HSW1hZ2VEZWNvZGVyOjppc1NpemVBdmFpbGFibGUoKQogICAgIHJldHVybiBJ
bWFnZURlY29kZXI6OmlzU2l6ZUF2YWlsYWJsZSgpOwogfQogCi1ib29sIFBOR0ltYWdlRGVjb2Rl
cjo6c2V0U2l6ZSh1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0KQorYm9vbCBQTkdJbWFn
ZURlY29kZXI6OnNldFNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKLSAgICBpZiAoIUltYWdl
RGVjb2Rlcjo6c2V0U2l6ZSh3aWR0aCwgaGVpZ2h0KSkKKyAgICBpZiAoIUltYWdlRGVjb2Rlcjo6
c2V0U2l6ZShzaXplKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcHJlcGFyZVNjYWxl
RGF0YUlmTmVjZXNzYXJ5KCk7CkBAIC0yNTcsMTAgKzI1Nyw4IEBAIEltYWdlRnJhbWUqIFBOR0lt
YWdlRGVjb2Rlcjo6ZnJhbWVCdWZmZXJBdEluZGV4KHNpemVfdCBpbmRleCkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAjZW5kaWYKIAotICAgIGlmIChtX2ZyYW1lQnVmZmVyQ2FjaGUuaXNFbXB0
eSgpKSB7CisgICAgaWYgKG1fZnJhbWVCdWZmZXJDYWNoZS5pc0VtcHR5KCkpCiAgICAgICAgIG1f
ZnJhbWVCdWZmZXJDYWNoZS5yZXNpemUoMSk7Ci0gICAgICAgIG1fZnJhbWVCdWZmZXJDYWNoZVsw
XS5zZXRQcmVtdWx0aXBseUFscGhhKG1fcHJlbXVsdGlwbHlBbHBoYSk7Ci0gICAgfQogCiAgICAg
SW1hZ2VGcmFtZSYgZnJhbWUgPSBtX2ZyYW1lQnVmZmVyQ2FjaGVbaW5kZXhdOwogICAgIGlmIChm
cmFtZS5zdGF0dXMoKSAhPSBJbWFnZUZyYW1lOjpGcmFtZUNvbXBsZXRlKQpAQCAtMjc2LDM3ICsy
NzQsNiBAQCBib29sIFBOR0ltYWdlRGVjb2Rlcjo6c2V0RmFpbGVkKCkKICAgICByZXR1cm4gSW1h
Z2VEZWNvZGVyOjpzZXRGYWlsZWQoKTsKIH0KIAotc3RhdGljIHZvaWQgcmVhZENvbG9yUHJvZmls
ZShwbmdfc3RydWN0cCBwbmcsIHBuZ19pbmZvcCBpbmZvLCBDb2xvclByb2ZpbGUmIGNvbG9yUHJv
ZmlsZSkKLXsKLSAgICBBU1NFUlQoY29sb3JQcm9maWxlLmlzRW1wdHkoKSk7Ci0KLSNpZmRlZiBQ
TkdfaUNDUF9TVVBQT1JURUQKLSAgICBjaGFyKiBwcm9maWxlTmFtZTsKLSAgICBpbnQgY29tcHJl
c3Npb25UeXBlOwotI2lmIChQTkdfTElCUE5HX1ZFUiA8IDEwNTAwKQotICAgIHBuZ19jaGFycCBw
cm9maWxlOwotI2Vsc2UKLSAgICBwbmdfYnl0ZXAgcHJvZmlsZTsKLSNlbmRpZgotICAgIHBuZ191
aW50XzMyIHByb2ZpbGVMZW5ndGg7Ci0gICAgaWYgKCFwbmdfZ2V0X2lDQ1AocG5nLCBpbmZvLCAm
cHJvZmlsZU5hbWUsICZjb21wcmVzc2lvblR5cGUsICZwcm9maWxlLCAmcHJvZmlsZUxlbmd0aCkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIC8vIE9ubHkgYWNjZXB0IFJHQiBjb2xvciBwcm9maWxl
cyBmcm9tIGlucHV0IGNsYXNzIGRldmljZXMuCi0gICAgYm9vbCBpZ25vcmVQcm9maWxlID0gZmFs
c2U7Ci0gICAgY2hhciogcHJvZmlsZURhdGEgPSByZWludGVycHJldF9jYXN0PGNoYXIqPihwcm9m
aWxlKTsKLSAgICBpZiAocHJvZmlsZUxlbmd0aCA8IEltYWdlRGVjb2Rlcjo6aWNjQ29sb3JQcm9m
aWxlSGVhZGVyTGVuZ3RoKQotICAgICAgICBpZ25vcmVQcm9maWxlID0gdHJ1ZTsKLSAgICBlbHNl
IGlmICghSW1hZ2VEZWNvZGVyOjpyZ2JDb2xvclByb2ZpbGUocHJvZmlsZURhdGEsIHByb2ZpbGVM
ZW5ndGgpKQotICAgICAgICBpZ25vcmVQcm9maWxlID0gdHJ1ZTsKLSAgICBlbHNlIGlmICghSW1h
Z2VEZWNvZGVyOjppbnB1dERldmljZUNvbG9yUHJvZmlsZShwcm9maWxlRGF0YSwgcHJvZmlsZUxl
bmd0aCkpCi0gICAgICAgIGlnbm9yZVByb2ZpbGUgPSB0cnVlOwotCi0gICAgaWYgKCFpZ25vcmVQ
cm9maWxlKQotICAgICAgICBjb2xvclByb2ZpbGUuYXBwZW5kKHByb2ZpbGVEYXRhLCBwcm9maWxl
TGVuZ3RoKTsKLSNlbmRpZgotfQotCiB2b2lkIFBOR0ltYWdlRGVjb2Rlcjo6aGVhZGVyQXZhaWxh
YmxlKCkKIHsKICAgICBwbmdfc3RydWN0cCBwbmcgPSBtX3JlYWRlci0+cG5nUHRyKCk7CkBAIC0z
MjYsNyArMjkzLDcgQEAgdm9pZCBQTkdJbWFnZURlY29kZXI6OmhlYWRlckF2YWlsYWJsZSgpCiAg
ICAgLy8gd2lsbCBjZWFzZSB0byBleGlzdC4gIE5vdGUgdGhhdCB3ZSdsbCBzdGlsbCBwcm9wZXJs
eSBzZXQgdGhlIGZhaWx1cmUgZmxhZwogICAgIC8vIGluIHRoaXMgY2FzZSBhcyBzb29uIGFzIHdl
IGxvbmdqbXAoKS4KICAgICBtX2RvTm90aGluZ09uRmFpbHVyZSA9IHRydWU7Ci0gICAgYm9vbCBy
ZXN1bHQgPSBzZXRTaXplKHdpZHRoLCBoZWlnaHQpOworICAgIGJvb2wgcmVzdWx0ID0gc2V0U2l6
ZShJbnRTaXplKHdpZHRoLCBoZWlnaHQpKTsKICAgICBtX2RvTm90aGluZ09uRmFpbHVyZSA9IGZh
bHNlOwogICAgIGlmICghcmVzdWx0KSB7CiAgICAgICAgIGxvbmdqbXAoSk1QQlVGKHBuZyksIDEp
OwpAQCAtNDA1LDE2ICszNzIsNiBAQCB2b2lkIFBOR0ltYWdlRGVjb2Rlcjo6aGVhZGVyQXZhaWxh
YmxlKCkKICAgICBpZiAoY29sb3JUeXBlID09IFBOR19DT0xPUl9UWVBFX0dSQVkgfHwgY29sb3JU
eXBlID09IFBOR19DT0xPUl9UWVBFX0dSQVlfQUxQSEEpCiAgICAgICAgIHBuZ19zZXRfZ3JheV90
b19yZ2IocG5nKTsKIAotICAgIGlmICgoY29sb3JUeXBlICYgUE5HX0NPTE9SX01BU0tfQ09MT1Ip
ICYmICFtX2lnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlKSB7Ci0gICAgICAgIC8vIFdlIG9ubHkg
c3VwcG9ydCBjb2xvciBwcm9maWxlcyBmb3IgY29sb3IgUEFMRVRURSBhbmQgUkdCW0FdIFBORy4g
U3VwcG9ydGluZwotICAgICAgICAvLyBjb2xvciBwcm9maWxlcyBmb3IgZ3JheS1zY2FsZSBpbWFn
ZXMgaXMgc2xpZ2h0bHkgdHJpY2t5LCBhdCBsZWFzdCB1c2luZyB0aGUKLSAgICAgICAgLy8gQ29y
ZUdyYXBoaWNzIElDQyBsaWJyYXJ5LCBiZWNhdXNlIHdlIGV4cGFuZCBncmF5LXNjYWxlIGltYWdl
cyB0byBSR0IgYnV0IHdlCi0gICAgICAgIC8vIGRvIG5vdCBzaW1pbGFybHkgdHJhbnNmb3JtIHRo
ZSBjb2xvciBwcm9maWxlLiBXZSdkIGVpdGhlciBuZWVkIHRvIHRyYW5zZm9ybQotICAgICAgICAv
LyB0aGUgY29sb3IgcHJvZmlsZSBvciB3ZSdkIG5lZWQgdG8gZGVjb2RlIGludG8gYSBncmF5LXNj
YWxlIGltYWdlIGJ1ZmZlciBhbmQKLSAgICAgICAgLy8gaGFuZCB0aGF0IHRvIENvcmVHcmFwaGlj
cy4KLSAgICAgICAgcmVhZENvbG9yUHJvZmlsZShwbmcsIGluZm8sIG1fY29sb3JQcm9maWxlKTsK
LSAgICB9Ci0KICAgICAvLyBEZWFsIHdpdGggZ2FtbWEgYW5kIGtlZXAgaXQgdW5kZXIgb3VyIGNv
bnRyb2wuCiAgICAgZG91YmxlIGdhbW1hOwogICAgIGlmICghbV9pZ25vcmVHYW1tYUFuZENvbG9y
UHJvZmlsZSAmJiBwbmdfZ2V0X2dBTUEocG5nLCBpbmZvLCAmZ2FtbWEpKSB7CkBAIC00NTIsMTkg
KzQwOSwxOSBAQCB2b2lkIFBOR0ltYWdlRGVjb2Rlcjo6aGVhZGVyQXZhaWxhYmxlKCkKICAgICB9
CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBzZXRQaXhlbFJHQihJbWFnZUZyYW1lOjpQaXhlbERh
dGEqIGRlc3QsIHBuZ19ieXRlcCBwaXhlbCkKK3N0YXRpYyBpbmxpbmUgdm9pZCBzZXRQaXhlbFJH
QihSR0JBMzIqIGRlc3QsIHBuZ19ieXRlcCBwaXhlbCkKIHsKICAgICAqZGVzdCA9IDB4RkYwMDAw
MDBVIHwgcGl4ZWxbMF0gPDwgMTYgfCBwaXhlbFsxXSA8PCA4IHwgcGl4ZWxbMl07CiB9CiAKLXN0
YXRpYyBpbmxpbmUgdm9pZCBzZXRQaXhlbFJHQkEoSW1hZ2VGcmFtZTo6UGl4ZWxEYXRhKiBkZXN0
LCBwbmdfYnl0ZXAgcGl4ZWwsIHVuc2lnbmVkIGNoYXImIG5vblRyaXZpYWxBbHBoYU1hc2spCitz
dGF0aWMgaW5saW5lIHZvaWQgc2V0UGl4ZWxSR0JBKFJHQkEzMiogZGVzdCwgcG5nX2J5dGVwIHBp
eGVsLCB1bnNpZ25lZCBjaGFyJiBub25Ucml2aWFsQWxwaGFNYXNrKQogewogICAgIHVuc2lnbmVk
IGNoYXIgYSA9IHBpeGVsWzNdOwogICAgICpkZXN0ID0gYSA8PCAyNCB8IHBpeGVsWzBdIDw8IDE2
IHwgcGl4ZWxbMV0gPDwgOCB8IHBpeGVsWzJdOwogICAgIG5vblRyaXZpYWxBbHBoYU1hc2sgfD0g
KDI1NSAtIGEpOwogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQgc2V0UGl4ZWxQcmVtdWx0aXBsaWVk
UkdCQShJbWFnZUZyYW1lOjpQaXhlbERhdGEqIGRlc3QsIHBuZ19ieXRlcCBwaXhlbCwgdW5zaWdu
ZWQgY2hhciYgbm9uVHJpdmlhbEFscGhhTWFzaykKK3N0YXRpYyBpbmxpbmUgdm9pZCBzZXRQaXhl
bFByZW11bHRpcGxpZWRSR0JBKFJHQkEzMiogZGVzdCwgcG5nX2J5dGVwIHBpeGVsLCB1bnNpZ25l
ZCBjaGFyJiBub25Ucml2aWFsQWxwaGFNYXNrKQogewogICAgIHVuc2lnbmVkIGNoYXIgYSA9IHBp
eGVsWzNdOwogICAgIHVuc2lnbmVkIGNoYXIgciA9IGZhc3REaXZpZGVCeTI1NShwaXhlbFswXSAq
IGEpOwpAQCAtNDg4LDcgKzQ0NSw3IEBAIHZvaWQgUE5HSW1hZ2VEZWNvZGVyOjpyb3dBdmFpbGFi
bGUodW5zaWduZWQgY2hhciogcm93QnVmZmVyLCB1bnNpZ25lZCByb3dJbmRleCwKICAgICBJbWFn
ZUZyYW1lJiBidWZmZXIgPSBtX2ZyYW1lQnVmZmVyQ2FjaGVbbV9jdXJyZW50RnJhbWVdOwogICAg
IGlmIChidWZmZXIuc3RhdHVzKCkgPT0gSW1hZ2VGcmFtZTo6RnJhbWVFbXB0eSkgewogICAgICAg
ICBwbmdfc3RydWN0cCBwbmcgPSBtX3JlYWRlci0+cG5nUHRyKCk7Ci0gICAgICAgIGlmICghYnVm
ZmVyLnNldFNpemUoc2NhbGVkU2l6ZSgpLndpZHRoKCksIHNjYWxlZFNpemUoKS5oZWlnaHQoKSkp
IHsKKyAgICAgICAgaWYgKCFidWZmZXIuc2V0U2l6ZShzY2FsZWRTaXplKCksIHByZW11bHRpcGx5
QWxwaGEoKSkpIHsKICAgICAgICAgICAgIGxvbmdqbXAoSk1QQlVGKHBuZyksIDEpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC01MDYsMTUgKzQ2MywxMSBAQCB2b2lkIFBOR0lt
YWdlRGVjb2Rlcjo6cm93QXZhaWxhYmxlKHVuc2lnbmVkIGNoYXIqIHJvd0J1ZmZlciwgdW5zaWdu
ZWQgcm93SW5kZXgsCiAKICAgICAgICAgYnVmZmVyLnNldFN0YXR1cyhJbWFnZUZyYW1lOjpGcmFt
ZVBhcnRpYWwpOwogICAgICAgICBidWZmZXIuc2V0SGFzQWxwaGEoZmFsc2UpOwotICAgICAgICBi
dWZmZXIuc2V0Q29sb3JQcm9maWxlKG1fY29sb3JQcm9maWxlKTsKIAogI2lmIEVOQUJMRShBUE5H
KQogICAgICAgICBpZiAobV9jdXJyZW50RnJhbWUpCiAgICAgICAgICAgICBpbml0RnJhbWVCdWZm
ZXIobV9jdXJyZW50RnJhbWUpOwotICAgICAgICBlbHNlCiAjZW5kaWYKLSAgICAgICAgLy8gRm9y
IFBOR3MsIHRoZSBmcmFtZSBhbHdheXMgZmlsbHMgdGhlIGVudGlyZSBpbWFnZS4KLSAgICAgICAg
YnVmZmVyLnNldE9yaWdpbmFsRnJhbWVSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgc2l6ZSgpKSk7
CiAgICAgfQogCiAgICAgLyogbGlicG5nIGNvbW1lbnRzIChoZXJlIHRvIGV4cGxhaW4gd2hhdCBm
b2xsb3dzKS4KQEAgLTU3Myw3ICs1MjYsNyBAQCB2b2lkIFBOR0ltYWdlRGVjb2Rlcjo6cm93QXZh
aWxhYmxlKHVuc2lnbmVkIGNoYXIqIHJvd0J1ZmZlciwgdW5zaWduZWQgcm93SW5kZXgsCiAgICAg
fQogCiAgICAgLy8gV3JpdGUgdGhlIGRlY29kZWQgcm93IHBpeGVscyB0byB0aGUgZnJhbWUgYnVm
ZmVyLgotICAgIEltYWdlRnJhbWU6OlBpeGVsRGF0YSogYWRkcmVzcyA9IGJ1ZmZlci5nZXRBZGRy
KDAsIHkpOworICAgIFJHQkEzMiogYWRkcmVzcyA9IGJ1ZmZlci5nZXRBZGRyKDAsIHkpOwogICAg
IGludCB3aWR0aCA9IHNjYWxlZFNpemUoKS53aWR0aCgpOwogICAgIHVuc2lnbmVkIGNoYXIgbm9u
VHJpdmlhbEFscGhhTWFzayA9IDA7CiAKQEAgLTU5MCw3ICs1NDMsNyBAQCB2b2lkIFBOR0ltYWdl
RGVjb2Rlcjo6cm93QXZhaWxhYmxlKHVuc2lnbmVkIGNoYXIqIHJvd0J1ZmZlciwgdW5zaWduZWQg
cm93SW5kZXgsCiAgICAgewogICAgICAgICBwbmdfYnl0ZXAgcGl4ZWwgPSByb3c7CiAgICAgICAg
IGlmIChoYXNBbHBoYSkgewotICAgICAgICAgICAgaWYgKGJ1ZmZlci5wcmVtdWx0aXBseUFscGhh
KCkpIHsKKyAgICAgICAgICAgIGlmIChwcmVtdWx0aXBseUFscGhhKCkpIHsKICAgICAgICAgICAg
ICAgICBmb3IgKGludCB4ID0gMDsgeCA8IHdpZHRoOyArK3gsIHBpeGVsICs9IDQpCiAgICAgICAg
ICAgICAgICAgICAgIHNldFBpeGVsUHJlbXVsdGlwbGllZFJHQkEoYWRkcmVzcysrLCBwaXhlbCwg
bm9uVHJpdmlhbEFscGhhTWFzayk7CiAgICAgICAgICAgICB9IGVsc2UgewpAQCAtNjYzLDggKzYx
Niw2IEBAIHZvaWQgUE5HSW1hZ2VEZWNvZGVyOjpyZWFkQ2h1bmtzKHBuZ191bmtub3duX2NodW5r
cCBjaHVuaykKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBtX2ZyYW1lQnVmZmVyQ2Fj
aGUucmVzaXplKG1fZnJhbWVDb3VudCk7Ci0gICAgICAgIGZvciAoYXV0byYgaW1hZ2VGcmFtZSA6
IG1fZnJhbWVCdWZmZXJDYWNoZSkKLSAgICAgICAgICAgIGltYWdlRnJhbWUuc2V0UHJlbXVsdGlw
bHlBbHBoYShtX3ByZW11bHRpcGx5QWxwaGEpOwogICAgIH0gZWxzZSBpZiAoIW1lbWNtcChjaHVu
ay0+bmFtZSwgImZjVEwiLCA0KSAmJiBjaHVuay0+c2l6ZSA9PSAyNikgewogICAgICAgICBpZiAo
bV9oYXNJbmZvICYmICFtX2lzQW5pbWF0ZWQpCiAgICAgICAgICAgICByZXR1cm47CkBAIC03MDYs
MTAgKzY1Nyw4IEBAIHZvaWQgUE5HSW1hZ2VEZWNvZGVyOjpyZWFkQ2h1bmtzKHBuZ191bmtub3du
X2NodW5rcCBjaHVuaykKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAg
IGlmIChtX2ZyYW1lQnVmZmVyQ2FjaGUuaXNFbXB0eSgpKSB7CisgICAgICAgIGlmIChtX2ZyYW1l
QnVmZmVyQ2FjaGUuaXNFbXB0eSgpKQogICAgICAgICAgICAgbV9mcmFtZUJ1ZmZlckNhY2hlLnJl
c2l6ZSgxKTsKLSAgICAgICAgICAgIG1fZnJhbWVCdWZmZXJDYWNoZVswXS5zZXRQcmVtdWx0aXBs
eUFscGhhKG1fcHJlbXVsdGlwbHlBbHBoYSk7Ci0gICAgICAgIH0KIAogICAgICAgICBpZiAobV9j
dXJyZW50RnJhbWUgPCBtX2ZyYW1lQnVmZmVyQ2FjaGUuc2l6ZSgpKSB7CiAgICAgICAgICAgICBJ
bWFnZUZyYW1lJiBidWZmZXIgPSBtX2ZyYW1lQnVmZmVyQ2FjaGVbbV9jdXJyZW50RnJhbWVdOwpA
QCAtODM0LDExICs3ODMsNiBAQCB2b2lkIFBOR0ltYWdlRGVjb2Rlcjo6aW5pdEZyYW1lQnVmZmVy
KHNpemVfdCBmcmFtZUluZGV4KQogICAgICAgICBmcmFtZVJlY3Quc2V0SGVpZ2h0KHNpemUoKS5o
ZWlnaHQoKSAtIG1feU9mZnNldCk7CiAKICAgICBJbWFnZUZyYW1lJiBidWZmZXIgPSBtX2ZyYW1l
QnVmZmVyQ2FjaGVbZnJhbWVJbmRleF07Ci0gICAgaW50IGxlZnQgPSB1cHBlckJvdW5kU2NhbGVk
WChmcmFtZVJlY3QueCgpKTsKLSAgICBpbnQgcmlnaHQgPSBsb3dlckJvdW5kU2NhbGVkWChmcmFt
ZVJlY3QubWF4WCgpLCBsZWZ0KTsKLSAgICBpbnQgdG9wID0gdXBwZXJCb3VuZFNjYWxlZFkoZnJh
bWVSZWN0LnkoKSk7Ci0gICAgaW50IGJvdHRvbSA9IGxvd2VyQm91bmRTY2FsZWRZKGZyYW1lUmVj
dC5tYXhZKCksIHRvcCk7Ci0gICAgYnVmZmVyLnNldE9yaWdpbmFsRnJhbWVSZWN0KEludFJlY3Qo
bGVmdCwgdG9wLCByaWdodCAtIGxlZnQsIGJvdHRvbSAtIHRvcCkpOwogCiAgICAgLy8gVGhlIHN0
YXJ0aW5nIHN0YXRlIGZvciB0aGlzIGZyYW1lIGRlcGVuZHMgb24gdGhlIHByZXZpb3VzIGZyYW1l
J3MKICAgICAvLyBkaXNwb3NhbCBtZXRob2QuCkBAIC04NjIsNyArODA2LDcgQEAgdm9pZCBQTkdJ
bWFnZURlY29kZXI6OmluaXRGcmFtZUJ1ZmZlcihzaXplX3QgZnJhbWVJbmRleCkKICAgICB9IGVs
c2UgewogICAgICAgICAvLyBXZSB3YW50IHRvIGNsZWFyIHRoZSBwcmV2aW91cyBmcmFtZSB0byB0
cmFuc3BhcmVudCwgd2l0aG91dAogICAgICAgICAvLyBhZmZlY3RpbmcgcGl4ZWxzIGluIHRoZSBp
bWFnZSBvdXRzaWRlIG9mIHRoZSBmcmFtZS4KLSAgICAgICAgY29uc3QgSW50UmVjdCYgcHJldlJl
Y3QgPSBwcmV2QnVmZmVyLT5vcmlnaW5hbEZyYW1lUmVjdCgpOworICAgICAgICBjb25zdCBJbnRS
ZWN0JiBwcmV2UmVjdCA9IHByZXZCdWZmZXItPnBpeGVscygpLT5yZWN0KCk7CiAgICAgICAgIGlm
ICghZnJhbWVJbmRleCB8fCBwcmV2UmVjdC5jb250YWlucyhJbnRSZWN0KEludFBvaW50KCksIHNj
YWxlZFNpemUoKSkpKSB7CiAgICAgICAgICAgICAvLyBDbGVhcmluZyB0aGUgZmlyc3QgZnJhbWUs
IG9yIGEgZnJhbWUgdGhlIHNpemUgb2YgdGhlIHdob2xlCiAgICAgICAgICAgICAvLyBpbWFnZSwg
cmVzdWx0cyBpbiBhIGNvbXBsZXRlbHkgZW1wdHkgaW1hZ2UuCkBAIC04NzMsNiArODE3LDEyIEBA
IHZvaWQgUE5HSW1hZ2VEZWNvZGVyOjppbml0RnJhbWVCdWZmZXIoc2l6ZV90IGZyYW1lSW5kZXgp
CiAgICAgICAgICAgICBidWZmZXIuemVyb0ZpbGxGcmFtZVJlY3QocHJldlJlY3QpOwogICAgICAg
ICB9CiAgICAgfQorICAgIAorICAgIGludCBsZWZ0ID0gdXBwZXJCb3VuZFNjYWxlZFgoZnJhbWVS
ZWN0LngoKSk7CisgICAgaW50IHJpZ2h0ID0gbG93ZXJCb3VuZFNjYWxlZFgoZnJhbWVSZWN0Lm1h
eFgoKSwgbGVmdCk7CisgICAgaW50IHRvcCA9IHVwcGVyQm91bmRTY2FsZWRZKGZyYW1lUmVjdC55
KCkpOworICAgIGludCBib3R0b20gPSBsb3dlckJvdW5kU2NhbGVkWShmcmFtZVJlY3QubWF4WSgp
LCB0b3ApOworICAgIGJ1ZmZlci5waXhlbHMoKS0+c2V0UmVjdChJbnRSZWN0KGxlZnQsIHRvcCwg
cmlnaHQgLSBsZWZ0LCBib3R0b20gLSB0b3ApKTsKIH0KIAogdm9pZCBQTkdJbWFnZURlY29kZXI6
OmZyYW1lQ29tcGxldGUoKQpAQCAtODg2LDcgKzgzNiw3IEBAIHZvaWQgUE5HSW1hZ2VEZWNvZGVy
OjpmcmFtZUNvbXBsZXRlKCkKICAgICBwbmdfYnl0ZXAgaW50ZXJsYWNlQnVmZmVyID0gbV9yZWFk
ZXItPmludGVybGFjZUJ1ZmZlcigpOwogCiAgICAgaWYgKG1fY3VycmVudEZyYW1lICYmIGludGVy
bGFjZUJ1ZmZlcikgewotICAgICAgICBjb25zdCBJbnRSZWN0JiByZWN0ID0gYnVmZmVyLm9yaWdp
bmFsRnJhbWVSZWN0KCk7CisgICAgICAgIGNvbnN0IEludFJlY3QmIHJlY3QgPSBidWZmZXIucGl4
ZWxzKCktPnJlY3QoKTsKICAgICAgICAgYm9vbCBoYXNBbHBoYSA9IG1fcmVhZGVyLT5oYXNBbHBo
YSgpOwogICAgICAgICB1bnNpZ25lZCBjb2xvckNoYW5uZWxzID0gaGFzQWxwaGEgPyA0IDogMzsK
ICAgICAgICAgYm9vbCBub25Ucml2aWFsQWxwaGEgPSBmYWxzZTsKQEAgLTg5Niw3ICs4NDYsNyBA
QCB2b2lkIFBOR0ltYWdlRGVjb2Rlcjo6ZnJhbWVDb21wbGV0ZSgpCiAjaWYgRU5BQkxFKElNQUdF
X0RFQ09ERVJfRE9XTl9TQU1QTElORykKICAgICAgICAgZm9yIChpbnQgeSA9IDA7IHkgPCByZWN0
Lm1heFkoKSAtIHJlY3QueSgpOyArK3kpIHsKICAgICAgICAgICAgIHBuZ19ieXRlcCByb3cgPSBp
bnRlcmxhY2VCdWZmZXIgKyAobV9zY2FsZWQgPyBtX3NjYWxlZFJvd3NbeV0gOiB5KSAqIGNvbG9y
Q2hhbm5lbHMgKiBzaXplKCkud2lkdGgoKTsKLSAgICAgICAgICAgIEltYWdlRnJhbWU6OlBpeGVs
RGF0YSogYWRkcmVzcyA9IGJ1ZmZlci5nZXRBZGRyKHJlY3QueCgpLCB5ICsgcmVjdC55KCkpOwor
ICAgICAgICAgICAgUkdCQTMyKiBhZGRyZXNzID0gYnVmZmVyLmdldEFkZHIocmVjdC54KCksIHkg
KyByZWN0LnkoKSk7CiAgICAgICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IHJlY3QubWF4WCgp
IC0gcmVjdC54KCk7ICsreCkgewogICAgICAgICAgICAgICAgIHBuZ19ieXRlcCBwaXhlbCA9IHJv
dyArIChtX3NjYWxlZCA/IG1fc2NhbGVkQ29sdW1uc1t4XSA6IHgpICogY29sb3JDaGFubmVsczsK
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBhbHBoYSA9IGhhc0FscGhhID8gcGl4ZWxbM10gOiAy
NTU7CkBAIC05MTIsNyArODYyLDcgQEAgdm9pZCBQTkdJbWFnZURlY29kZXI6OmZyYW1lQ29tcGxl
dGUoKQogICAgICAgICBwbmdfYnl0ZXAgcm93ID0gaW50ZXJsYWNlQnVmZmVyOwogICAgICAgICBm
b3IgKGludCB5ID0gcmVjdC55KCk7IHkgPCByZWN0Lm1heFkoKTsgKyt5LCByb3cgKz0gY29sb3JD
aGFubmVscyAqIHNpemUoKS53aWR0aCgpKSB7CiAgICAgICAgICAgICBwbmdfYnl0ZXAgcGl4ZWwg
PSByb3c7Ci0gICAgICAgICAgICBJbWFnZUZyYW1lOjpQaXhlbERhdGEqIGFkZHJlc3MgPSBidWZm
ZXIuZ2V0QWRkcihyZWN0LngoKSwgeSk7CisgICAgICAgICAgICBSR0JBMzIqIGFkZHJlc3MgPSBi
dWZmZXIuZ2V0QWRkcihyZWN0LngoKSwgeSk7CiAgICAgICAgICAgICBmb3IgKGludCB4ID0gcmVj
dC54KCk7IHggPCByZWN0Lm1heFgoKTsgKyt4LCBwaXhlbCArPSBjb2xvckNoYW5uZWxzKSB7CiAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgYWxwaGEgPSBoYXNBbHBoYSA/IHBpeGVsWzNdIDogMjU1
OwogICAgICAgICAgICAgICAgIG5vblRyaXZpYWxBbHBoYSB8PSBhbHBoYSA8IDI1NTsKQEAgLTky
NSw3ICs4NzUsNyBAQCB2b2lkIFBOR0ltYWdlRGVjb2Rlcjo6ZnJhbWVDb21wbGV0ZSgpCiAjZW5k
aWYKIAogICAgICAgICBpZiAoIW5vblRyaXZpYWxBbHBoYSkgewotICAgICAgICAgICAgaWYgKGJ1
ZmZlci5vcmlnaW5hbEZyYW1lUmVjdCgpLmNvbnRhaW5zKEludFJlY3QoSW50UG9pbnQoKSwgc2Nh
bGVkU2l6ZSgpKSkpCisgICAgICAgICAgICBpZiAoYnVmZmVyLnBpeGVscygpLT5yZWN0KCkuY29u
dGFpbnMoSW50UmVjdChJbnRQb2ludCgpLCBzY2FsZWRTaXplKCkpKSkKICAgICAgICAgICAgICAg
ICBidWZmZXIuc2V0SGFzQWxwaGEoZmFsc2UpOwogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAg
ICAgICAgICAgc2l6ZV90IGZyYW1lSW5kZXggPSBtX2N1cnJlbnRGcmFtZTsKQEAgLTkzMyw3ICs4
ODMsNyBAQCB2b2lkIFBOR0ltYWdlRGVjb2Rlcjo6ZnJhbWVDb21wbGV0ZSgpCiAgICAgICAgICAg
ICAgICAgd2hpbGUgKGZyYW1lSW5kZXggJiYgKHByZXZCdWZmZXItPmRpc3Bvc2FsTWV0aG9kKCkg
PT0gSW1hZ2VGcmFtZTo6RGlzcG9zZU92ZXJ3cml0ZVByZXZpb3VzKSkKICAgICAgICAgICAgICAg
ICAgICAgcHJldkJ1ZmZlciA9ICZtX2ZyYW1lQnVmZmVyQ2FjaGVbLS1mcmFtZUluZGV4XTsKICAg
ICAgICAgICAgICAgICBpZiAoKHByZXZCdWZmZXItPmRpc3Bvc2FsTWV0aG9kKCkgPT0gSW1hZ2VG
cmFtZTo6RGlzcG9zZU92ZXJ3cml0ZUJnY29sb3IpCi0gICAgICAgICAgICAgICAgICAgICYmICFw
cmV2QnVmZmVyLT5oYXNBbHBoYSgpICYmIGJ1ZmZlci5vcmlnaW5hbEZyYW1lUmVjdCgpLmNvbnRh
aW5zKHByZXZCdWZmZXItPm9yaWdpbmFsRnJhbWVSZWN0KCkpKQorICAgICAgICAgICAgICAgICAg
ICAmJiAhcHJldkJ1ZmZlci0+aGFzQWxwaGEoKSAmJiBidWZmZXIucGl4ZWxzKCktPnJlY3QoKS5j
b250YWlucyhwcmV2QnVmZmVyLT5waXhlbHMoKS0+cmVjdCgpKSkKICAgICAgICAgICAgICAgICAg
ICAgYnVmZmVyLnNldEhhc0FscGhhKGZhbHNlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBl
bHNlIGlmICghbV9ibGVuZCAmJiAhYnVmZmVyLmhhc0FscGhhKCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNv
ZGVyLmgKaW5kZXggMDVmYzc0YjZkZTIxNGQwNDE0YTgyYjQxODY5Mzc3NjJkMWE1ZTU1Yi4uOTg3
NDI0NjE5MDg4ZGUxN2ZjZDYzZGM4NmY1Yjk1MTc4N2NiNGRlYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURl
Y29kZXIuaApAQCAtNDgsNyArNDgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGlu
dCByZXBldGl0aW9uQ291bnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3BsYXlDb3VudC0x
OyB9CiAjZW5kaWYKICAgICAgICAgYm9vbCBpc1NpemVBdmFpbGFibGUoKSBvdmVycmlkZTsKLSAg
ICAgICAgYm9vbCBzZXRTaXplKHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQpIG92ZXJy
aWRlOworICAgICAgICBib29sIHNldFNpemUoY29uc3QgSW50U2l6ZSYpIG92ZXJyaWRlOwogICAg
ICAgICBJbWFnZUZyYW1lKiBmcmFtZUJ1ZmZlckF0SW5kZXgoc2l6ZV90IGluZGV4KSBvdmVycmlk
ZTsKICAgICAgICAgLy8gQ0FVVElPTjogc2V0RmFpbGVkKCkgZGVsZXRlcyB8bV9yZWFkZXJ8LiAg
QmUgY2FyZWZ1bCB0byBhdm9pZAogICAgICAgICAvLyBhY2Nlc3NpbmcgZGVsZXRlZCBtZW1vcnks
IGVzcGVjaWFsbHkgd2hlbiBjYWxsaW5nIHRoaXMgZnJvbSBpbnNpZGUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJ
bWFnZURlY29kZXIuY3BwCmluZGV4IDEyNGExYjJmMTk5N2ZlNjc4YzYxYjUyZjMwNThkYjRkNmI4
ODY3OWEuLjE1OTYwNGMzODNmMzJkZTU2MDNkNDcwZGFkZmQxOTdiYjNlZGIzOWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdl
RGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
d2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcApAQCAtNzgsMTAgKzc4LDggQEAgSW1hZ2VGcmFtZSog
V0VCUEltYWdlRGVjb2Rlcjo6ZnJhbWVCdWZmZXJBdEluZGV4KHNpemVfdCBpbmRleCkKICAgICBp
ZiAoaW5kZXgpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgaWYgKG1fZnJhbWVCdWZmZXJDYWNo
ZS5pc0VtcHR5KCkpIHsKKyAgICBpZiAobV9mcmFtZUJ1ZmZlckNhY2hlLmlzRW1wdHkoKSkKICAg
ICAgICAgbV9mcmFtZUJ1ZmZlckNhY2hlLnJlc2l6ZSgxKTsKLSAgICAgICAgbV9mcmFtZUJ1ZmZl
ckNhY2hlWzBdLnNldFByZW11bHRpcGx5QWxwaGEobV9wcmVtdWx0aXBseUFscGhhKTsKLSAgICB9
CiAKICAgICBJbWFnZUZyYW1lJiBmcmFtZSA9IG1fZnJhbWVCdWZmZXJDYWNoZVswXTsKICAgICBp
ZiAoZnJhbWUuc3RhdHVzKCkgIT0gSW1hZ2VGcmFtZTo6RnJhbWVDb21wbGV0ZSkKQEAgLTExNSw3
ICsxMTMsNyBAQCBib29sIFdFQlBJbWFnZURlY29kZXI6OmRlY29kZShib29sIG9ubHlTaXplKQog
ICAgICAgICAgICAgcmV0dXJuIHNldEZhaWxlZCgpOwogICAgICAgICBtX2hhc0FscGhhID0gZmFs
c2U7CiAjZW5kaWYKLSAgICAgICAgaWYgKCFzZXRTaXplKHdpZHRoLCBoZWlnaHQpKQorICAgICAg
ICBpZiAoIXNldFNpemUoSW50U2l6ZSh3aWR0aCwgaGVpZ2h0KSkpCiAgICAgICAgICAgICByZXR1
cm4gc2V0RmFpbGVkKCk7CiAgICAgfQogCkBAIC0xMjgsMTggKzEyNiwxNyBAQCBib29sIFdFQlBJ
bWFnZURlY29kZXI6OmRlY29kZShib29sIG9ubHlTaXplKQogICAgIEFTU0VSVChidWZmZXIuc3Rh
dHVzKCkgIT0gSW1hZ2VGcmFtZTo6RnJhbWVDb21wbGV0ZSk7CiAKICAgICBpZiAoYnVmZmVyLnN0
YXR1cygpID09IEltYWdlRnJhbWU6OkZyYW1lRW1wdHkpIHsKLSAgICAgICAgaWYgKCFidWZmZXIu
c2V0U2l6ZShzaXplKCkud2lkdGgoKSwgc2l6ZSgpLmhlaWdodCgpKSkKKyAgICAgICAgaWYgKCFi
dWZmZXIuc2V0U2l6ZShzaXplKCksIHByZW11bHRpcGx5QWxwaGEoKSkpCiAgICAgICAgICAgICBy
ZXR1cm4gc2V0RmFpbGVkKCk7CiAgICAgICAgIGJ1ZmZlci5zZXRTdGF0dXMoSW1hZ2VGcmFtZTo6
RnJhbWVQYXJ0aWFsKTsKICAgICAgICAgYnVmZmVyLnNldEhhc0FscGhhKG1faGFzQWxwaGEpOwot
ICAgICAgICBidWZmZXIuc2V0T3JpZ2luYWxGcmFtZVJlY3QoSW50UmVjdChJbnRQb2ludCgpLCBz
aXplKCkpKTsKICAgICB9CiAKICAgICBpZiAoIW1fZGVjb2RlcikgewogICAgICAgICBXRUJQX0NT
UF9NT0RFIG1vZGUgPSBvdXRwdXRNb2RlKG1faGFzQWxwaGEpOwotICAgICAgICBpZiAoIW1fcHJl
bXVsdGlwbHlBbHBoYSkKKyAgICAgICAgaWYgKCFwcmVtdWx0aXBseUFscGhhKCkpCiAgICAgICAg
ICAgICBtb2RlID0gb3V0cHV0TW9kZShmYWxzZSk7Ci0gICAgICAgIGludCByb3dTdHJpZGUgPSBz
aXplKCkud2lkdGgoKSAqIHNpemVvZihJbWFnZUZyYW1lOjpQaXhlbERhdGEpOworICAgICAgICBp
bnQgcm93U3RyaWRlID0gc2l6ZSgpLndpZHRoKCkgKiBzaXplb2YoUkdCQTMyKTsKICAgICAgICAg
dWludDhfdCogb3V0cHV0ID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oYnVmZmVyLmdldEFk
ZHIoMCwgMCkpOwogICAgICAgICBpbnQgb3V0cHV0U2l6ZSA9IHNpemUoKS5oZWlnaHQoKSAqIHJv
d1N0cmlkZTsKICAgICAgICAgbV9kZWNvZGVyID0gV2ViUElOZXdSR0IobW9kZSwgb3V0cHV0LCBv
dXRwdXRTaXplLCByb3dTdHJpZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNl
TWFjLm1tCmluZGV4IDIxNmNkMDkzZjI2NDY3Y2JhODhhNDNmNjkzYWJmNGNmNTFkZDFhNGQuLmQx
MTQ1NGIwNWVmODg5OTNhNjI4OTM4OTZiYzBjMTE3MjhjNWVkNTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJj
ZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9j
a1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMubW0KQEAgLTg3LDcgKzg3LDcgQEAgdm9pZCBNb2NrUmVh
bHRpbWVWaWRlb1NvdXJjZU1hYzo6dXBkYXRlUGxhdGZvcm1MYXllcigpIGNvbnN0CiAgICAgICAg
IGlmICghaW1hZ2UpCiAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICBtX3ByZXZpZXdJbWFn
ZSA9IGltYWdlLT5nZXRDR0ltYWdlUmVmKCk7CisgICAgICAgIG1fcHJldmlld0ltYWdlID0gaW1h
Z2UtPm5hdGl2ZUltYWdlKCk7CiAgICAgICAgIGlmICghbV9wcmV2aWV3SW1hZ2UpCiAgICAgICAg
ICAgICBicmVhazsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0Ry
YWdJbWFnZUNHV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VD
R1dpbi5jcHAKaW5kZXggMzZjZDY1MTZlODBmMTc0OGJmZWFiNzdhOTMwMjcxYzEyMWRlODAxOS4u
NGI0ZTM3NzllOTZmNzhjNjU0MGE1M2M0NDc4YzNiZmQ5MzVmNTNlOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZUNHV2luLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ0dXaW4uY3BwCkBAIC0xMzYsOSArMTM2LDkg
QEAgRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZShJbWFnZSogaW1nLCBJbWFn
ZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pCiAgICAgQ0dDb250ZXh0U2NhbGVDVE0oZHJhd0NvbnRl
eHQsIDEsIC0xKTsKICAgICBDR0NvbnRleHRTZXRGaWxsQ29sb3IoZHJhd0NvbnRleHQsIHdoaXRl
KTsKICAgICBDR0NvbnRleHRGaWxsUmVjdChkcmF3Q29udGV4dCwgcmVjdCk7Ci0gICAgaWYgKGF1
dG8gc3JjSW1hZ2UgPSBpbWctPmdldENHSW1hZ2VSZWYoKSkgeworICAgIGlmIChhdXRvIHNyY0lt
YWdlID0gaW1nLT5uYXRpdmVJbWFnZSgpKSB7CiAgICAgICAgIENHQ29udGV4dFNldEJsZW5kTW9k
ZShkcmF3Q29udGV4dCwga0NHQmxlbmRNb2RlTm9ybWFsKTsKLSAgICAgICAgQ0dDb250ZXh0RHJh
d0ltYWdlKGRyYXdDb250ZXh0LCByZWN0LCBzcmNJbWFnZSk7CisgICAgICAgIENHQ29udGV4dERy
YXdJbWFnZShkcmF3Q29udGV4dCwgcmVjdCwgc3JjSW1hZ2UuZ2V0KCkpOwogICAgIH0KICAgICBD
R0NvbnRleHRSZWxlYXNlKGRyYXdDb250ZXh0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9tYWMvTWlzYy9XZWJDYWNoZS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViQ2FjaGUu
bW0KaW5kZXggYjY1OWQ2ZGJmOWFkNjk5OWMzYWM5NjJkZTk1MTU3ODA5N2UxZjNiMS4uN2M1ZWQy
MTBkZGIyYTMyYTc2NjY3NGMxMjBkOTk0YzJmYTQ3ZTdmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9tYWMvTWlzYy9XZWJDYWNoZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dl
YkNhY2hlLm1tCkBAIC0yMDQsNyArMjA0LDcgQEAgKyAoQ0dJbWFnZVJlZilpbWFnZUZvclVSTDoo
TlNVUkwgKil1cmwKICAgICBXZWJDb3JlOjpDYWNoZWRJbWFnZSYgY2FjaGVkSW1hZ2UgPSBkb3du
Y2FzdDxXZWJDb3JlOjpDYWNoZWRJbWFnZT4oKmNhY2hlZFJlc291cmNlKTsKICAgICBpZiAoIWNh
Y2hlZEltYWdlLmhhc0ltYWdlKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVy
biBjYWNoZWRJbWFnZS5pbWFnZSgpLT5nZXRDR0ltYWdlUmVmKCk7CisgICAgcmV0dXJuIGNhY2hl
ZEltYWdlLmltYWdlKCktPm5hdGl2ZUltYWdlKCkuZ2V0KCk7CiB9CiAKICNlbmRpZiAvLyBQTEFU
Rk9STShJT1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvY2cv
V0tJY29uRGF0YWJhc2VDRy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvY2cv
V0tJY29uRGF0YWJhc2VDRy5jcHAKaW5kZXggMGY2ZGU3YTE0NmE2MTFhNTJhYTFlNTM5MDE5ZmE2
YzFjNDY3MjVhZS4uMzA1NjMzNmNiNjZmZTRhZjE4YmRjNTI5YWNhMmY4ZmM4ODFkZmU1NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2NnL1dLSWNvbkRhdGFiYXNl
Q0cuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9jZy9XS0ljb25EYXRh
YmFzZUNHLmNwcApAQCAtMzcsMTIgKzM3LDIzIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
Q0dJbWFnZVJlZiBXS0ljb25EYXRhYmFzZVRyeUdldENHSW1hZ2VGb3JVUkwoV0tJY29uRGF0YWJh
c2VSZWYgaWNvbkRhdGFiYXNlUmVmLCBXS1VSTFJlZiB1cmxSZWYsIFdLU2l6ZSBzaXplKQogewog
ICAgIEltYWdlKiBpbWFnZSA9IHRvSW1wbChpY29uRGF0YWJhc2VSZWYpLT5pbWFnZUZvclBhZ2VV
UkwodG9XVEZTdHJpbmcodXJsUmVmKSk7Ci0gICAgcmV0dXJuIGltYWdlID8gaW1hZ2UtPmdldEZp
cnN0Q0dJbWFnZVJlZk9mU2l6ZShJbnRTaXplKHN0YXRpY19jYXN0PGludD4oc2l6ZS53aWR0aCks
IHN0YXRpY19jYXN0PGludD4oc2l6ZS5oZWlnaHQpKSkgOiAwOworICAgIHJldHVybiBpbWFnZSA/
IGltYWdlLT5uYXRpdmVJbWFnZU9mU2l6ZShJbnRTaXplKHN0YXRpY19jYXN0PGludD4oc2l6ZS53
aWR0aCksIHN0YXRpY19jYXN0PGludD4oc2l6ZS5oZWlnaHQpKSkuZ2V0KCkgOiBudWxscHRyOwog
fQogCiBDRkFycmF5UmVmIFdLSWNvbkRhdGFiYXNlVHJ5Q29weUNHSW1hZ2VBcnJheUZvclVSTChX
S0ljb25EYXRhYmFzZVJlZiBpY29uRGF0YWJhc2VSZWYsIFdLVVJMUmVmIHVybFJlZikKIHsKICAg
ICBJbWFnZSogaW1hZ2UgPSB0b0ltcGwoaWNvbkRhdGFiYXNlUmVmKS0+aW1hZ2VGb3JQYWdlVVJM
KHRvV1RGU3RyaW5nKHVybFJlZikpOwotICAgIHJldHVybiBpbWFnZSA/IGltYWdlLT5nZXRDR0lt
YWdlQXJyYXkoKS5sZWFrUmVmKCkgOiAwOworICAgIGlmICghaW1hZ2UpCisgICAgICAgIHJldHVy
biBudWxscHRyOworCisgICAgYXV0byBuYXRpdmVJbWFnZXMgPSBpbWFnZS0+ZnJhbWVzTmF0aXZl
SW1hZ2VzKCk7CisgICAgaWYgKCFuYXRpdmVJbWFnZXMuc2l6ZSgpKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICAKKyAgICBDRk11dGFibGVBcnJheVJlZiBhcnJheSA9IENGQXJyYXlDcmVh
dGVNdXRhYmxlKG51bGxwdHIsIG5hdGl2ZUltYWdlcy5zaXplKCksICZrQ0ZUeXBlQXJyYXlDYWxs
QmFja3MpOworICAgIGZvciAoYXV0byBuYXRpdmVJbWFnZSA6IG5hdGl2ZUltYWdlcykKKyAgICAg
ICAgQ0ZBcnJheUFwcGVuZFZhbHVlKGFycmF5LCBuYXRpdmVJbWFnZS5nZXQoKSk7CisgICAgCisg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PENGQXJyYXlSZWY+KENGUmV0YWluKGFycmF5KSk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0lu
dGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3
SW50ZXJhY3Rpb24ubW0KaW5kZXggZGM3OTgzYWI5ODhjMmQwNGExNzMwZWUxMzczMDNjMjQ0MTYx
NTE5Ny4uZmJjM2U1ZDRjNTQzMDFjZTkyMTdhNDBmOGQwOGJkNTgzNTI3ODdjNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
bW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJh
Y3Rpb24ubW0KQEAgLTQwNzEsNyArNDA3MSw3IEBAIC0gKFVJSW1hZ2UgKilfcHJlc2VudGF0aW9u
U25hcHNob3RGb3JQcmV2aWV3SXRlbUNvbnRyb2xsZXI6KFVJUHJldmlld0l0ZW1Db250cm9sCiB7
CiAgICAgaWYgKCFfcG9zaXRpb25JbmZvcm1hdGlvbi5saW5rSW5kaWNhdG9yLmNvbnRlbnRJbWFn
ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFtbW1VJSW1hZ2UgYWxsb2Nd
IGluaXRXaXRoQ0dJbWFnZTpfcG9zaXRpb25JbmZvcm1hdGlvbi5saW5rSW5kaWNhdG9yLmNvbnRl
bnRJbWFnZS0+Z2V0Q0dJbWFnZVJlZigpXSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIFtbW1VJ
SW1hZ2UgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTpfcG9zaXRpb25JbmZvcm1hdGlvbi5saW5rSW5k
aWNhdG9yLmNvbnRlbnRJbWFnZS0+bmF0aXZlSW1hZ2UoKS5nZXQoKV0gYXV0b3JlbGVhc2VdOwog
fQogCiAtIChOU0FycmF5ICopX3ByZXNlbnRhdGlvblJlY3RzRm9yUHJldmlld0l0ZW1Db250cm9s
bGVyOihVSVByZXZpZXdJdGVtQ29udHJvbGxlciAqKWNvbnRyb2xsZXIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCA5YTMzZjdjYzdk
YzdjN2Q3MmY5ZGE3NDMwOThiN2RiY2E4MjQwOWNmLi5hNTMyNTEwNjc4YjlmNTM1MTQ1OGEzOGE5
ZjQyMzM3NDdkMDM1ZjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblZpZXcuY3BwCkBAIC0xNzI3LDY5ICsxNzI3LDYgQEAgdm9pZCBQbHVnaW5WaWV3
Ojp3aW5kb3dlZFBsdWdpblZpc2liaWxpdHlEaWRDaGFuZ2UoYm9vbCBpc1Zpc2libGUsIHVpbnQ2
NF90IHdpbmQKIH0KICNlbmRpZgogCi0jaWYgUExBVEZPUk0oQ09DT0EpCi1zdGF0aWMgYm9vbCBp
c0FsbW9zdFNvbGlkQ29sb3IoQml0bWFwSW1hZ2UqIGJpdG1hcCkKLXsKLSAgICBDR0ltYWdlUmVm
IGltYWdlID0gYml0bWFwLT5nZXRDR0ltYWdlUmVmKCk7Ci0gICAgQVNTRVJUKENHSW1hZ2VHZXRC
aXRzUGVyQ29tcG9uZW50KGltYWdlKSA9PSA4KTsKLQotICAgIENHQml0bWFwSW5mbyBpbWFnZUlu
Zm8gPSBDR0ltYWdlR2V0Qml0bWFwSW5mbyhpbWFnZSk7Ci0gICAgaWYgKCEoaW1hZ2VJbmZvICYg
a0NHQml0bWFwQnl0ZU9yZGVyMzJMaXR0bGUpIHx8IChpbWFnZUluZm8gJiBrQ0dCaXRtYXBBbHBo
YUluZm9NYXNrKSAhPSBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0KSB7Ci0gICAgICAg
IC8vIEZJWE1FOiBDb25zaWRlciBiZWluZyBhYmxlIHRvIGhhbmRsZSBvdGhlciBwaXhlbCBmb3Jt
YXRzLgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIH0KLQotICAgIHNpemVfdCB3aWR0aCA9IENHSW1hZ2VHZXRXaWR0aChpbWFnZSk7Ci0g
ICAgc2l6ZV90IGhlaWdodCA9IENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UpOwotICAgIHNpemVfdCBi
eXRlc1BlclJvdyA9IENHSW1hZ2VHZXRCeXRlc1BlclJvdyhpbWFnZSk7Ci0KLSAgICBSZXRhaW5Q
dHI8Q0ZEYXRhUmVmPiBwcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDb3B5RGF0YShD
R0ltYWdlR2V0RGF0YVByb3ZpZGVyKGltYWdlKSkpOwotICAgIGNvbnN0IFVJbnQ4KiBkYXRhID0g
Q0ZEYXRhR2V0Qnl0ZVB0cihwcm92aWRlci5nZXQoKSk7Ci0KLSAgICAvLyBPdmVybGF5IGEgZ3Jp
ZCBvZiBzYW1wbGluZyBkb3RzIG9uIHRvcCBvZiBhIGdyYXlzY2FsZSB2ZXJzaW9uIG9mIHRoZSBp
bWFnZS4KLSAgICAvLyBGb3IgdGhlIGludGVyaW9yIHBvaW50cywgY2FsY3VsYXRlIHRoZSBkaWZm
ZXJlbmNlIGluIGx1bWluYW5jZSBhbW9uZyB0aGUgc2FtcGxlIHBvaW50Ci0gICAgLy8gYW5kIGl0
cyBzdXJyb3VuZHMgcG9pbnRzLCBzY2FsZWQgYnkgdHJhbnNwYXJlbmN5LgotICAgIGNvbnN0IHVu
c2lnbmVkIHNhbXBsZVJvd3MgPSA3OwotICAgIGNvbnN0IHVuc2lnbmVkIHNhbXBsZUNvbHMgPSA3
OwotICAgIC8vIEZJWE1FOiBSZWZpbmUgdGhlIHByb3BlciBudW1iZXIgb2Ygc2FtcGxlcywgYW5k
IGFjY29tbW9kYXRlIGRpZmZlcmVudCBhc3BlY3QgcmF0aW9zLgotICAgIGlmICh3aWR0aCA8IHNh
bXBsZUNvbHMgfHwgaGVpZ2h0IDwgc2FtcGxlUm93cykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
Ci0gICAgLy8gRW5zdXJlIHRoYXQgdGhlIGxhc3Qgcm93L2NvbHVtbiBsYW5kIG9uIHRoZSBpbWFn
ZSBwZXJpbWV0ZXIuCi0gICAgY29uc3QgZmxvYXQgc3RyaWRlV2lkdGggPSBzdGF0aWNfY2FzdDxm
bG9hdD4od2lkdGggLSAxKSAvIChzYW1wbGVDb2xzIC0gMSk7Ci0gICAgY29uc3QgZmxvYXQgc3Ry
aWRlSGVpZ2h0ID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGhlaWdodCAtIDEpIC8gKHNhbXBsZVJvd3Mg
LSAxKTsKLSAgICBmbG9hdCBzYW1wbGVzW3NhbXBsZVJvd3NdW3NhbXBsZUNvbHNdOwotCi0gICAg
Ly8gRmluZCB0aGUgbHVtaW5hbmNlIG9mIHRoZSBzYW1wbGUgcG9pbnRzLgotICAgIGZsb2F0IHkg
PSAwOwotICAgIGNvbnN0IFVJbnQ4KiByb3cgPSBkYXRhOwotICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBzYW1wbGVSb3dzOyArK2kpIHsKLSAgICAgICAgZmxvYXQgeCA9IDA7Ci0gICAgICAg
IGZvciAodW5zaWduZWQgaiA9IDA7IGogPCBzYW1wbGVDb2xzOyArK2opIHsKLSAgICAgICAgICAg
IGNvbnN0IFVJbnQ4KiBwMCA9IHJvdyArIChzdGF0aWNfY2FzdDxpbnQ+KHggKyAuNSkpICogNDsK
LSAgICAgICAgICAgIC8vIFIgRyBCIEEKLSAgICAgICAgICAgIHNhbXBsZXNbaV1bal0gPSAoMC4y
MTI1ICogKnAwICsgMC43MTU0ICogKihwMCsxKSArIDAuMDcyMSAqICoocDArMikpICogKihwMCsz
KSAvIDI1NTsKLSAgICAgICAgICAgIHggKz0gc3RyaWRlV2lkdGg7Ci0gICAgICAgIH0KLSAgICAg
ICAgeSArPSBzdHJpZGVIZWlnaHQ7Ci0gICAgICAgIHJvdyA9IGRhdGEgKyAoc3RhdGljX2Nhc3Q8
aW50Pih5ICsgLjUpKSAqIGJ5dGVzUGVyUm93OwotICAgIH0KLQotICAgIC8vIERldGVybWluZSB0
aGUgaW1hZ2Ugc2NvcmUuCi0gICAgZmxvYXQgYWNjdW1TY29yZSA9IDA7Ci0gICAgZm9yICh1bnNp
Z25lZCBpID0gMTsgaSA8IHNhbXBsZVJvd3MgLSAxOyArK2kpIHsKLSAgICAgICAgZm9yICh1bnNp
Z25lZCBqID0gMTsgaiA8IHNhbXBsZUNvbHMgLSAxOyArK2opIHsKLSAgICAgICAgICAgIGZsb2F0
IGRpZmYgPSBzYW1wbGVzW2kgLSAxXVtqXSArIHNhbXBsZXNbaSArIDFdW2pdICsgc2FtcGxlc1tp
XVtqIC0gMV0gKyBzYW1wbGVzW2ldW2ogKyAxXSAtIDQgKiBzYW1wbGVzW2ldW2pdOwotICAgICAg
ICAgICAgYWNjdW1TY29yZSArPSBkaWZmICogZGlmZjsKLSAgICAgICAgfQotICAgIH0KLQotICAg
IC8vIFRoZSBzY29yZSBmb3IgYSBnaXZlbiBzYW1wbGUgY2FuIGJlIHdpdGhpbiB0aGUgcmFuZ2Ug
b2YgMCBhbmQgMjU1XjIuCi0gICAgcmV0dXJuIGFjY3VtU2NvcmUgPCAyNTAwICogKHNhbXBsZVJv
d3MgLSAyKSAqIChzYW1wbGVDb2xzIC0gMik7Ci19Ci0jZW5kaWYKLQogdm9pZCBQbHVnaW5WaWV3
OjpwbHVnaW5TbmFwc2hvdFRpbWVyRmlyZWQoKQogewogI2lmIEVOQUJMRShQUklNQVJZX1NOQVBT
SE9UVEVEX1BMVUdJTl9IRVVSSVNUSUMpCkBAIC0xODA5LDcgKzE3NDYsNyBAQCB2b2lkIFBsdWdp
blZpZXc6OnBsdWdpblNuYXBzaG90VGltZXJGaXJlZCgpCiAKICAgICAgICAgaWYgKHNuYXBzaG90
SW1hZ2UpIHsKICNpZiBFTkFCTEUoUFJJTUFSWV9TTkFQU0hPVFRFRF9QTFVHSU5fSEVVUklTVElD
KQotICAgICAgICAgICAgYm9vbCBzbmFwc2hvdElzQWxtb3N0U29saWRDb2xvciA9IGlzQWxtb3N0
U29saWRDb2xvcihkb3duY2FzdDxCaXRtYXBJbWFnZT4oc25hcHNob3RJbWFnZS5nZXQoKSkpOwor
ICAgICAgICAgICAgYm9vbCBzbmFwc2hvdElzQWxtb3N0U29saWRDb2xvciA9IHN0YXRpY19wb2lu
dGVyX2Nhc3Q8Qml0bWFwSW1hZ2U+KHNuYXBzaG90SW1hZ2UpLT5pc0FsbW9zdFNvbGlkQ29sb3Io
KTsKICAgICAgICAgICAgIHNuYXBzaG90Rm91bmQgPSAhc25hcHNob3RJc0FsbW9zdFNvbGlkQ29s
b3I7CiAjZW5kaWYKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>283580</attachid>
            <date>2016-07-13 15:31:08 -0700</date>
            <delta_ts>2016-09-12 17:11:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159721-20160713153022.patch</filename>
            <type>text/plain</type>
            <size>175877</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzMTc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDQ0NWVjM2I5YjY1NzYy
OGNlYTM4MTkyYzdkMDJlN2YwMjIyNzRmOS4uMWE3NjVhOGMwNjFiZGE2MWJmM2NmOGU2ZDlmMGU2
NmJmZDdiNDU4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3NSBAQAorMjAxNi0wNy0xMyAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorIAorICAgICAgICBHZXQg
cmlkIG9mIHRoZSBtX3ByZW11bHRpcGx5QWxwaGEgZmxhZyBvZiB0aGUgSW1hZ2VGcmFtZSBjbGFz
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5NzIx
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBm
bGFnIHdhcyBvbmx5IG5lZWRlZCB3aGVuIGNhbGxpbmcgQml0bWFwUGl4ZWxzOjpzZXRTaXplKCku
IEluc3RlYWQKKyAgICAgICAgd2UgY2FuIHBhc3MgdGhlIEltYWdlRGVjb2Rlcjo6bV9wcmVtdWx0
aXBseUFscGhhIHRvIEltYWdlRnJhbWU6OnNldFNpemUoKQorICAgICAgICB3aGljaCB3aWxsIHBh
c3MgaXQgdG8gQml0bWFwUGl4ZWxzOjpzZXRTaXplKCkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VG
cmFtZTo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OmNvcHlCaXRt
YXBEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6c2V0U2l6ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZURlY29kZXI6OmlzT3ZlclNpemUpOgorICAgICAgICAqIHBsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Qk1QSW1hZ2VEZWNvZGVyOjpmcmFtZUJ1ZmZlckF0SW5kZXgpOiBEZWxldGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpCTVBJbWFnZVJlYWRlcjo6ZGVjb2RlQk1QKToKKyAgICAgICAgKFdlYkNvcmU6
OkJNUEltYWdlUmVhZGVyOjpwcm9jZXNzSW5mb0hlYWRlcik6CisgICAgICAgICogcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHSUZJbWFnZURlY29kZXI6OmluaXRGcmFtZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpH
SUZJbWFnZURlY29kZXI6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SUNPSW1hZ2VE
ZWNvZGVyOjpzZXRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OklDT0ltYWdlRGVjb2Rlcjo6ZnJh
bWVDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpJQ09JbWFnZURlY29kZXI6OnByb2Nlc3NEaXJl
Y3RvcnlFbnRyaWVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNP
SW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9K
UEVHSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpQRUdJbWFnZURlY29kZXI6
OnNldFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6SlBFR0ltYWdlRGVjb2Rlcjo6ZnJhbWVCdWZm
ZXJBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkpQRUdJbWFnZURlY29kZXI6Om91dHB1dFNj
YW5saW5lcyk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1h
Z2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0lt
YWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQTkdJbWFnZURlY29kZXI6OnNldFNp
emUpOgorICAgICAgICAoV2ViQ29yZTo6UE5HSW1hZ2VEZWNvZGVyOjpmcmFtZUJ1ZmZlckF0SW5k
ZXgpOgorICAgICAgICAoV2ViQ29yZTo6UE5HSW1hZ2VEZWNvZGVyOjpoZWFkZXJBdmFpbGFibGUp
OgorICAgICAgICAoV2ViQ29yZTo6UE5HSW1hZ2VEZWNvZGVyOjpyb3dBdmFpbGFibGUpOgorICAg
ICAgICAoV2ViQ29yZTo6UE5HSW1hZ2VEZWNvZGVyOjpyZWFkQ2h1bmtzKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICog
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OldFQlBJbWFnZURlY29kZXI6OmZyYW1lQnVmZmVyQXRJbmRleCk6CisgICAg
ICAgIChXZWJDb3JlOjpXRUJQSW1hZ2VEZWNvZGVyOjpkZWNvZGUpOgorCisyMDE2LTA3LTEzICBT
YWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgR2V0
IHJpZCBvZiB0aGUgY29sb3IgcHJvZmlsZSBmcm9tIEltYWdlRnJhbWUgYW5kIEltYWdlRGVjb2Rl
cgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5Njk5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VGcmFtZTo6c2V0Q29sb3JQcm9maWxlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6cmVhZENvbG9yUHJvZmlsZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpKUEVH
SW1hZ2VSZWFkZXI6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
anBlZy9KUEVHSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZWFkQ29sb3JQ
cm9maWxlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBOR0ltYWdlRGVjb2Rlcjo6aGVh
ZGVyQXZhaWxhYmxlKTogRGVsZXRlZC4KKworMjAxNi0wNy0xMyAgU2FpZCBBYm91LUhhbGxhd2Eg
IDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFNwbGl0IHRoZSBwaXhlbCBkYXRh
IG9mIEltYWdlRnJhbWUgdG8gYSBzZXBhcmF0ZSBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5Njc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSB0aGUgcGl4ZWwgZGF0YSBtYW5pcHVsYXRp
b24gcGFydCBpbiBJbWFnZUZyYW1lIGludG8gYSBzZXBhcmF0ZSBjbGFzcworICAgICAgICBhbmQg
dGhlbiBtYWtlIGl0IG9wdGlvbmFsIChhbGxvY2F0ZWQgb24gZGVtYW5kKS4KKworICAgICAgICAq
IENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFBsYXRmb3JtRWZsLmNtYWtlOgorICAgICAgICAq
IFBsYXRmb3JtR1RLLmNtYWtlOgorICAgICAgICAqIFBsYXRmb3JtV2luQ2Fpcm8uY21ha2U6Cisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0JpdG1hcFBpeGVscy5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkJpdG1hcFBpeGVsczo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFBpeGVsczo6
Qml0bWFwUGl4ZWxzKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFBpeGVsczo6d2lkdGgpOgor
ICAgICAgICAoV2ViQ29yZTo6Qml0bWFwUGl4ZWxzOjpoZWlnaHQpOgorICAgICAgICAoV2ViQ29y
ZTo6Qml0bWFwUGl4ZWxzOjpzZXRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFBpeGVs
czo6YXQpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwUGl4ZWxzOjpjbGVhcik6CisgICAgICAg
IChXZWJDb3JlOjpCaXRtYXBQaXhlbHM6OmNsZWFyUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpC
aXRtYXBQaXhlbHM6OnJlcGVhdEZpcnN0Um93KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFBp
eGVsczo6c2V0UkdCQSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBQaXhlbHM6Om92ZXJSR0JB
KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFBpeGVsczo6aW5Cb3VuZHMpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om11bHRpcGx5
MjU1KToKKyAgICAgICAgKFdlYkNvcmU6OmRpdmlkZTI1NSk6CisgICAgICAgIChXZWJDb3JlOjpk
aXZpZGVDZWlsKToKKyAgICAgICAgKFdlYkNvcmU6OnByZW11bHRpcGxpZWRDaGFubmVsKToKKyAg
ICAgICAgKFdlYkNvcmU6OnVucHJlbXVsdGlwbGllZENoYW5uZWwpOgorICAgICAgICAoV2ViQ29y
ZTo6bWFrZVByZW11bHRpcGxpZWRSR0JBKToKKyAgICAgICAgKFdlYkNvcmU6Om1ha2VVblByZW11
bHRpcGxpZWRSR0JBKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVEYXRhLmg6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUZyYW1lRGF0YTo6cGl4ZWxzKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJh
bWVEYXRhOjpoYXNQaXhlbHMpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0lt
YWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpvcGVyYXRvcj0p
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6Y2xlYXJQaXhlbERhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6emVyb0ZpbGxQaXhlbERhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VGcmFtZTo6emVyb0ZpbGxGcmFtZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VGcmFtZTo6Y29weUJpdG1hcERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFt
ZTo6c2V0U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpjb3B5Um93TlRpbWVz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OmFzTmV3TmF0aXZlSW1hZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VGcmFtZTo6c2V0UkdCQSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZy
YW1lOjpnZXRBZGRyKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6Omhhc1BpeGVsRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpvdmVyUkdCQSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUZyYW1lOjp3aWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1l
OjpoZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6Y29weVJvd05UaW1lcyk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpmaXhQb2ludFVuc2lnbmVk
TXVsdGlwbHkpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6ZGl2aWRl
MjU1KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1Q
SW1hZ2VSZWFkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qk1QSW1hZ2VSZWFkZXI6OmRlY29k
ZUJNUCk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvY2Fpcm8vQml0bWFwUGl4
ZWxzQ2Fpcm8uY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvY2Fpcm8vSW1hZ2VEZWNvZGVyQ2Fpcm8uY3BwLgorICAgICAgICAoV2ViQ29yZTo6
Qml0bWFwUGl4ZWxzOjppbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
Z2lmL0dJRkltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHSUZJbWFnZURlY29k
ZXI6OmhhdmVEZWNvZGVkUm93KToKKyAgICAgICAgKFdlYkNvcmU6OkdJRkltYWdlRGVjb2Rlcjo6
ZnJhbWVDb21wbGV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHSUZJbWFnZURlY29kZXI6OmluaXRG
cmFtZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVH
SW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNldFBpeGVsKToKKyAgICAgICAg
KFdlYkNvcmU6OkpQRUdJbWFnZURlY29kZXI6Om91dHB1dFNjYW5saW5lcyk6CisgICAgICAgICog
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpzZXRQaXhlbFJHQik6CisgICAgICAgIChXZWJDb3JlOjpzZXRQaXhlbFJHQkEp
OgorICAgICAgICAoV2ViQ29yZTo6c2V0UGl4ZWxQcmVtdWx0aXBsaWVkUkdCQSk6CisgICAgICAg
IChXZWJDb3JlOjpQTkdJbWFnZURlY29kZXI6OnJvd0F2YWlsYWJsZSk6CisgICAgICAgIChXZWJD
b3JlOjpQTkdJbWFnZURlY29kZXI6OmluaXRGcmFtZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3Jl
OjpQTkdJbWFnZURlY29kZXI6OmZyYW1lQ29tcGxldGUpOgorICAgICAgICAqIHBsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXRUJQSW1hZ2VEZWNvZGVyOjpkZWNvZGUpOgorCisyMDE2LTA3LTEzICBTYWlkIEFib3UtSGFs
bGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgU3BsaXQgdGhlIHBpeGVs
IGRhdGEgb2YgSW1hZ2VGcmFtZSB0byBhIHNlcGFyYXRlIGNsYXNzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTk2NzkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIHRoZSBwaXhlbCBkYXRhIG1hbmlw
dWxhdGlvbiBwYXJ0IGluIEltYWdlRnJhbWUgaW50byBhIHNlcGFyYXRlIGNsYXNzCisgICAgICAg
IGFuZCB0aGVuIG1ha2UgaXQgb3B0aW9uYWwgKGFsbG9jYXRlZCBvbiBkZW1hbmQpLgorCisgICAg
ICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAg
ICAgICogUGxhdGZvcm1HVEsuY21ha2U6CisgICAgICAgICogUGxhdGZvcm1XaW5DYWlyby5jbWFr
ZToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwUGl4ZWxzLmg6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6Qml0bWFwUGl4ZWxzOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwUGl4
ZWxzOjpCaXRtYXBQaXhlbHMpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwUGl4ZWxzOjp3aWR0
aCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBQaXhlbHM6OmhlaWdodCk6CisgICAgICAgIChX
ZWJDb3JlOjpCaXRtYXBQaXhlbHM6OnNldFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFw
UGl4ZWxzOjphdCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBQaXhlbHM6OmNsZWFyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkJpdG1hcFBpeGVsczo6Y2xlYXJSZWN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkJpdG1hcFBpeGVsczo6cmVwZWF0Rmlyc3RSb3cpOgorICAgICAgICAoV2ViQ29yZTo6Qml0
bWFwUGl4ZWxzOjpzZXRSR0JBKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFBpeGVsczo6b3Zl
clJHQkEpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwUGl4ZWxzOjppbkJvdW5kcyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bXVs
dGlwbHkyNTUpOgorICAgICAgICAoV2ViQ29yZTo6ZGl2aWRlMjU1KToKKyAgICAgICAgKFdlYkNv
cmU6OmRpdmlkZUNlaWwpOgorICAgICAgICAoV2ViQ29yZTo6cHJlbXVsdGlwbGllZENoYW5uZWwp
OgorICAgICAgICAoV2ViQ29yZTo6dW5wcmVtdWx0aXBsaWVkQ2hhbm5lbCk6CisgICAgICAgIChX
ZWJDb3JlOjptYWtlUHJlbXVsdGlwbGllZFJHQkEpOgorICAgICAgICAoV2ViQ29yZTo6bWFrZVVu
UHJlbXVsdGlwbGllZFJHQkEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZURhdGEuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlRnJhbWVEYXRhOjpwaXhlbHMpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VGcmFtZURhdGE6Omhhc1BpeGVscyk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6Om9wZXJh
dG9yPSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpjbGVhclBpeGVsRGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjp6ZXJvRmlsbFBpeGVsRGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUZyYW1lOjp6ZXJvRmlsbEZyYW1lUmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUZyYW1lOjpjb3B5Qml0bWFwRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUZyYW1lOjpzZXRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OmNvcHlSb3dO
VGltZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5o
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6YXNOZXdOYXRpdmVJbWFnZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpzZXRSR0JBKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlRnJhbWU6OmdldEFkZHIpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6aGFzUGl4
ZWxEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6Om92ZXJSR0JBKToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OndpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
RnJhbWU6OmhlaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpjb3B5Um93TlRp
bWVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OmZpeFBvaW50VW5z
aWduZWRNdWx0aXBseSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpk
aXZpZGUyNTUpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2Jt
cC9CTVBJbWFnZVJlYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCTVBJbWFnZVJlYWRlcjo6
ZGVjb2RlQk1QKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9CaXRt
YXBQaXhlbHNDYWlyby5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZURlY29kZXJDYWlyby5jcHAuCisgICAgICAgIChXZWJD
b3JlOjpCaXRtYXBQaXhlbHM6OmltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdJRkltYWdl
RGVjb2Rlcjo6aGF2ZURlY29kZWRSb3cpOgorICAgICAgICAoV2ViQ29yZTo6R0lGSW1hZ2VEZWNv
ZGVyOjpmcmFtZUNvbXBsZXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdJRkltYWdlRGVjb2Rlcjo6
aW5pdEZyYW1lQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVn
L0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0UGl4ZWwpOgorICAg
ICAgICAoV2ViQ29yZTo6SlBFR0ltYWdlRGVjb2Rlcjo6b3V0cHV0U2NhbmxpbmVzKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnNldFBpeGVsUkdCKToKKyAgICAgICAgKFdlYkNvcmU6OnNldFBpeGVs
UkdCQSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRQaXhlbFByZW11bHRpcGxpZWRSR0JBKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBOR0ltYWdlRGVjb2Rlcjo6cm93QXZhaWxhYmxlKToKKyAgICAgICAg
KFdlYkNvcmU6OlBOR0ltYWdlRGVjb2Rlcjo6aW5pdEZyYW1lQnVmZmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlBOR0ltYWdlRGVjb2Rlcjo6ZnJhbWVDb21wbGV0ZSk6CisgICAgICAgICogcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldFQlBJbWFnZURlY29kZXI6OmRlY29kZSk6CisKKzIwMTYtMDctMTEgIFNhaWQgQWJv
dS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLGNvbT4KKworICAgICAgICBSZW5hbWUgRnJh
bWVEYXRhIHRvIEltYWdlRnJhbWVEYXRhIGFuZCBtb3ZlIGl0IHRvIGEgc2VwYXJhdGUgZmlsZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1NDQ0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSBJbWFn
ZUZyYW1lRGF0YSB0byBhIHNlcGFyYXRlIGZpbGUgc28gaXQgY2FuIGJlIGNhY2hlZCBieSBJbWFn
ZVNvdXJjZQorICAgICAgICBhbmQgd2lsbCBzdGlsbCBiZSBjb25zdW1lZCBieSBCaXRtYXBJbWFn
ZS4gTWFrZSB0aGUgZGF0YSBtZW1iZXJzIG9mIEltYWdlRnJhbWVEYXRhCisgICAgICAgIGJlIHBy
aXZhdGUgYW5kIGFkZCBnZXR0ZXJzIHRvIHJldHVybiB0aGVpciB2YWx1ZXMuCisKKyAgICAgICAg
Tm8gbmV3IHRlc3RzIC0tIENvZGUgcmVmYWN0b3JpbmcsIG5vIGJlaGF2aW9yIGNoYW5nZS4KKwor
ICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmhhdmVGcmFtZUltYWdlQXRJbmRleCk6CisgICAgICAg
IChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZGVzdHJveURlY29kZWREYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OkJpdG1hcEltYWdlOjpkZXN0cm95RGVjb2RlZERhdGFJZk5lY2Vzc2FyeSk6CisgICAg
ICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Y2FjaGVGcmFtZSk6CisgICAgICAgIChXZWJDb3Jl
OjpCaXRtYXBJbWFnZTo6ZGF0YUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1h
Z2U6OmVuc3VyZUZyYW1lSXNDYWNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6
OmZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpmcmFt
ZUlzQ29tcGxldGVBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpmcmFt
ZUR1cmF0aW9uQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZnJhbWVI
YXNBbHBoYUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmZyYW1lT3Jp
ZW50YXRpb25BdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpzaW5nbGVQ
aXhlbFNvbGlkQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmlzQWxtb3N0
U29saWRDb2xvcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lRGF0YTo6RnJhbWVEYXRhKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lRGF0YTo6fkZyYW1lRGF0YSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZURhdGE6OnVzZWRGcmFtZUJ5dGVzKTogRGVsZXRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZVNvdXJjZTo6Y3JlYXRlRnJhbWVEYXRhQXRJbmRleCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VTb3VyY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pbWFnZUZy
YW1lRGF0YS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6Oklt
YWdlRnJhbWVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVEYXRhOjp+SW1hZ2VG
cmFtZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6OmNsZWFyU3ViSW1h
Z2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVEYXRhOjpjbGVhcik6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6c2luZ2xlUGl4ZWxTb2xpZENvbG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlRnJhbWVEYXRhOjppc0FsbW9zdFNvbGlkQ29sb3IpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ltYWdlRnJhbWVEYXRhLmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6OnN0YXR1cyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUZyYW1lRGF0YTo6aXNDb21wbGV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0
YTo6c2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6ZnJhbWVCeXRlcyk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6aW1hZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VGcmFtZURhdGE6Om9yaWVudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlRnJhbWVEYXRhOjpzdWJzYW1wbGluZ0xldmVsKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
RnJhbWVEYXRhOjpkdXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6
aGFzQWxwaGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6Omhhc0ltYWdlKToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVEYXRhOjpoYXNNZXRhZGF0YSk6CisKKzIwMTYt
MDYtMjQgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLGNvbT4KKworICAg
ICAgICBJbnRyb2R1Y2UgUGxhdGZvcm1JbWFnZSBhbmQgbWFrZSBpdCBpcyBhIHdyYXBwZXIgZm9y
IE5hdGl2ZUltYWdlUHRyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNTg2ODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGUgbWFpbiBwdXJwb3NlIG9mIHRoaXMgcmVmYWN0b3JpbmcgaXMgdG8gbW92ZSB0
aGUgcGxhdGZvcm0gaW1hZ2UgZGVwZW5kZW50CisgICAgICAgIGNvZGUgZnJvbSBCaXRtYXBJbWFn
ZSB0byBQbGF0Zm9ybUltYWdlLiBQbGF0Zm9ybUltYWdlIGlzIHJlc3BvbnNpYmxlIG9mIAorICAg
ICAgICBkcmF3aW5nIHRoZSBpbWFnZSBhbmQgYW5zd2VyaW5nIE5hdGl2ZUltYWdlUHRyIHF1ZXN0
aW9ucyB3aGVuIGFuIEltYWdlRGVjb2RlcgorICAgICAgICBpcyBub3QgYXZhaWxhYmxlLiBBcGFy
dCBmcm9tIGRyYXdpbmcgdGhlIGltYWdlLCB0aGUgcXVlcnkgZnVuY3Rpb25zIHdpbGwgYmUKKyAg
ICAgICAgY2FsbGVkIG9ubHkgd2hlbiBjb25zdHJ1Y3RpbmcgYSBGcmFtZURhdGEgc28gd2Ugd2ls
bCBrZWVwIGV2ZXJ5dGhpbmcgYXMgYQorICAgICAgICBOYXRpdmVJbWFnZVB0ci4gQnV0IHdlIHdp
bGwgY2FzdCB0aGUgTmF0aXZlSW1hZ2VQdHIgdG8gUGxhdGZvcm1JbWFnZSB3aGVuCisgICAgICAg
IGEgcGxhdGZvcm0gZGVwZW5kZW50IGZ1bmN0aW9uIGlzIG5lZWRlZC4KKworICAgICAgICBObyBu
ZXcgdGVzdHMgLS0gQ29kZSByZWZhY3RvcmluZywgbm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAg
ICAgICogUGxhdGZvcm1BcHBsZVdpbi5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFr
ZToKKyAgICAgICAgKiBQbGF0Zm9ybUdUSy5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybU1hYy5j
bWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybVdpbkNhaXJvLmNtYWtlOgorICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL0RP
TS5tbToKKyAgICAgICAgKC1bRE9NTm9kZSBnZXRQcmV2aWV3U25hcHNob3RJbWFnZTphbmRSZWN0
czpdKToKKyAgICAgICAgKiBwYWdlL21hYy9UZXh0SW5kaWNhdG9yV2luZG93Lm1tOgorICAgICAg
ICAoLVtXZWJUZXh0SW5kaWNhdG9yVmlldyBpbml0V2l0aEZyYW1lOnRleHRJbmRpY2F0b3I6bWFy
Z2luOm9mZnNldDpdKToKKyAgICAgICAgKGNyZWF0ZUNvbnRlbnRDcm9zc2ZhZGVBbmltYXRpb24p
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpC
aXRtYXBJbWFnZTo6ZGVzdHJveURlY29kZWREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1h
cEltYWdlOjpkZXN0cm95RGVjb2RlZERhdGFJZk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJDb3Jl
OjpCaXRtYXBJbWFnZTo6ZGF0YUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1h
Z2U6OmZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpu
YXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VP
ZlNpemUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3Vy
cmVudEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpmcmFtZXNOYXRpdmVJ
bWFnZXMpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OnNpbmdsZVBpeGVsU29saWRD
b2xvcik6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6aXNBbG1vc3RTb2xpZENvbG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVEYXRh
OjpGcmFtZURhdGEpOgorICAgICAgICBtX2hhc0FscGhhIGNhbiBiZSBpbml0aWFsaXplZCB3aXRo
IGZhbHNlIGJlY2F1c2UgaXQgaXMgYWNjZXNzZWQgb25seSBpbgorICAgICAgICBCaXRtYXBJbWFn
ZTo6ZnJhbWVIYXNBbHBoYUF0SW5kZXgoKSBhbmQgaXQgaXMgZ3VhcmRlZCBieSBtX2hhdmVNZXRh
ZGF0YS4KKyAgICAgICAgQm90aCBtX2hhdmVNZXRhZGF0YSBhbmQgbV9oYXNBbHBoYSBhcmUgc2V0
IGluIEJpdG1hcEltYWdlIGNvbnN0cnVjdG9yCisgICAgICAgIGFuZCBpbiBCaXRtYXBJbWFnZTo6
Y2FjaGVGcmFtZSgpLgorCisgICAgICAgIChXZWJDb3JlOjpGcmFtZURhdGE6On5GcmFtZURhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVEYXRhOjpjbGVhcik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpuYXRpdmVJbWFn
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6bmF0aXZlSW1hZ2VPZlNpemUpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2U6OmZyYW1lc05hdGl2ZUltYWdlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZTo6Z2V0Q0dJbWFnZVJlZik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZTo6Z2V0Rmlyc3RDR0ltYWdlUmVmT2ZTaXplKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlOjpnZXRDR0ltYWdlQXJyYXkpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL1BsYXRmb3JtSW1hZ2UuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9y
bUltYWdlOjpQbGF0Zm9ybUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtSW1hZ2U6
OmlzTmlsKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtSW1hZ2U6OmNnSW1hZ2VSZWYpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dXBkYXRlRGlzcGxheU1vZGUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtSW1hZ2VDYWlyby5jcHA6IFJlbmFt
ZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFn
ZUNhaXJvLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtSW1hZ2U6OmNsZWFyU3ViSW1h
Z2VzKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtSW1hZ2U6OnNpemUpOgorICAgICAgICAo
V2ViQ29yZTo6UGxhdGZvcm1JbWFnZTo6aGFzQWxwaGEpOgorICAgICAgICAoV2ViQ29yZTo6UGxh
dGZvcm1JbWFnZTo6c2luZ2xlUGl4ZWxTb2xpZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlBs
YXRmb3JtSW1hZ2U6OmlzQWxtb3N0U29saWRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpQbGF0
Zm9ybUltYWdlOjpzdWJzYW1wbGluZ1NjYWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
SW1hZ2U6OmRyYXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdl
Q0cuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5D
Ry5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXR0ZXJuOjpjcmVhdGVQbGF0Zm9ybVBhdHRlcm4p
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1BsYXRmb3JtSW1hZ2VDRy5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1JbWFnZTo6Y2xlYXJTdWJJbWFnZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1JbWFnZTo6c2l6ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybUltYWdlOjpoYXNBbHBoYSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUlt
YWdlOjpzaW5nbGVQaXhlbFNvbGlkQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1J
bWFnZTo6aXNBbG1vc3RTb2xpZENvbG9yKTogTW92ZWQgZnJvbSBQbHVnaW5WaWV3LmNwcCBzaW5j
ZSBQbGF0Zm9ybUltYWdlIGlzIHdoYXQgdGhpcyBmdW5jdGlvbiBiZWxvbmdzIHRvLgorICAgICAg
ICAoV2ViQ29yZTo6UGxhdGZvcm1JbWFnZTo6c3Vic2FtcGxpbmdTY2FsZSk6IFJldHVybnMgdGhl
IHN1Yi1zYW1wbGluZyBzY2FsZSBiYXNlZCBvbiB0aGUgY29udGV4dCBzY2FsaW5nLgorICAgICAg
ICAoV2ViQ29yZTo6UGxhdGZvcm1JbWFnZTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvVGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYS5tbToKKyAgICAgICAgKFRl
eHRUcmFja1JlcHJlc2VudGF0aW9uQ29jb2E6OnVwZGF0ZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6
OmdldFRJRkZSZXByZXNlbnRhdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6TW9j
a1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWM6OnVwZGF0ZVBsYXRmb3JtTGF5ZXIpOgorICAgICAgICAq
IHBsYXRmb3JtL3dpbi9EcmFnSW1hZ2VDR1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVh
dGVEcmFnSW1hZ2VGcm9tSW1hZ2UpOgorCiAyMDE2LTA3LTEzICBBbnR0aSBLb2l2aXN0byAgPGFu
dHRpQGFwcGxlLmNvbT4KIAogICAgICAgICB2MjogV2ViQ29udGVudCBjcmFzaCBkdWUgdG8gUkVM
RUFTRV9BU1NFUlQoIW1faW5Mb2FkUGVuZGluZ0ltYWdlcykgaW4gU3R5bGVSZXNvbHZlcjo6flN0
eWxlUmVzb2x2ZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IGEwZGU3Y2QyY2E1Mzc3ZDc2YTA4M2Ex
ODMwMGZhZDVmMDViNjFkYjcuLjI4OTk0NWNiYzI3OGY3NjQyYWI2ZDk5ODY4NjFhOWRlZDNiYmU1
YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNi0wNy0xMyAgU2FpZCBB
Ym91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUsY29tPgorCisgICAgICAgIEludHJvZHVj
ZSBQbGF0Zm9ybUltYWdlIGFuZCBtYWtlIGl0IGlzIGEgd3JhcHBlciBmb3IgTmF0aXZlSW1hZ2VQ
dHIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODY4
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTWlz
Yy9XZWJDYWNoZS5tbToKKyAgICAgICAgKCtbV2ViQ2FjaGUgaW1hZ2VGb3JVUkw6XSk6CisKIDIw
MTYtMDctMTMgIEVucmljYSBDYXN1Y2NpICA8ZW5yaWNhQGFwcGxlLmNvbT4KIAogICAgICAgICBV
cGRhdGUgc3VwcG9ydGVkIHBsYXRmb3JtcyBpbiB4Y2NvbmZpZyBmaWxlcyB0byBtYXRjaCB0aGUg
c2RrIG5hbWVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGI5NThkOTU5ZTY4MTUxMjk0N2QwODkyMWI3OWJlMDY4
ZDFhZjI0MTEuLjk3MTkxMDE2ZDQ1ZTUzNjY4NGI0NzM5OTIzZDQwYTc2YjZkOGZiYzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxNi0wNy0xMyAgU2FpZCBBYm91LUhhbGxhd2EgIDxz
YWJvdWhhbGxhd2FAYXBwbGUsY29tPgorCisgICAgICAgIEludHJvZHVjZSBQbGF0Zm9ybUltYWdl
IGFuZCBtYWtlIGl0IGlzIGEgd3JhcHBlciBmb3IgTmF0aXZlSW1hZ2VQdHIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODY4NAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL2Nn
L1dLSWNvbkRhdGFiYXNlQ0cuY3BwOgorICAgICAgICAoV0tJY29uRGF0YWJhc2VUcnlHZXRDR0lt
YWdlRm9yVVJMKToKKyAgICAgICAgKFdLSWNvbkRhdGFiYXNlVHJ5Q29weUNHSW1hZ2VBcnJheUZv
clVSTCk6CisgICAgICAgIEl0IHdhcyB0aGUgb25seSBwbGFjZSBpbiB0aGUgY29kZSB3aGljaCB1
c2VzIEJpdG1hcEltYWdlOjpnZXRDR0ltYWdlQXJyYXkoKS4KKyAgICAgICAgQ2FsbCBCaXRtYXBJ
bWFnZTo6ZnJhbWVzTmF0aXZlSW1hZ2VzKCkgaW5zdGVhZCBhbmQgZm9ybSB0aGUgcmV0dXJuZWQK
KyAgICAgICAgVmVjdG9yPE5hdGl2ZUltYWdlUHRyPiBidWlsZCB0aGUgQ0ZBcnJheVJlZi4KKyAg
ICAgICAgCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
bW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX3ByZXNlbnRhdGlvblNuYXBzaG90Rm9yUHJl
dmlld0l0ZW1Db250cm9sbGVyOl0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6cGx1Z2luU25hcHNob3RU
aW1lckZpcmVkKToKKyAgICAgICAgCisgICAgICAgIChXZWJLaXQ6OmlzQWxtb3N0U29saWRDb2xv
cik6IERlbGV0ZWQuCisgICAgICAgIE1vdmUgdGhlIHN0YXRpYyBmdW5jdGlvbiBpc0FsbW9zdFNv
bGlkQ29sb3IgdG8gUGxhdGZvcm1JbWFnZTo6aXNBbG1vc3RTb2xpZENvbG9yKCkuCisKIDIwMTYt
MDctMTMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJLaXQy
IHNob3VsZG4ndCBzaWduYWwgY3VzdG9tIHByb3RvY29sIGNsaWVudHMgZnJvbSB0aGUgTlNVUkxD
b25uZWN0aW9uIGxvYWRlciB0aHJlYWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDVhZmVhM2Ex
NGVlODZlODM0ZTAxZmY1ODUxNDNhOGYxMGRhYWNjMjAuLmIyYjI3OTBiODY0MTI3ZmJhMzU5Nzdm
ZTQ4NDE4NzE0NmQwN2E4ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0yMjI5LDYgKzIyMjks
NyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSVNPVlRUQ3Vl
LmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlQnVmZmVyLmNwcAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVEYXRh
LmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlT3JpZW50YXRpb24uY3BwCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW50
UG9pbnQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUFwcGxlV2luLmNt
YWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1BcHBsZVdpbi5jbWFrZQppbmRleCA1ZmY5OTFm
ZjdkYTMwOGJiOTE4MmVjZTNiZjEyMTczMGE1NDhkMjg3Li5iYWUzMWVhZjg2ZTdmY2E5MDU4MjUw
OTJhYTM4YTc4YzExZTQyMjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUFw
cGxlV2luLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQXBwbGVXaW4uY21ha2UK
QEAgLTU1LDcgKzU1LDYgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvY2Evd2luL1dlYlRpbGVkQmFja2luZ0xheWVyV2luLmNwcAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2NhL3dpbi9XS0NBQ0ZWaWV3TGF5ZXJUcmVlSG9zdC5jcHAKIAotICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvQ29sb3JDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9GbG9hdFBvaW50Q0cu
Y3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvRmxvYXRSZWN0Q0cuY3BwCkBAIC03NSw2ICs3
NCw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0aENH
LmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAKKyAgICBwbGF0Zm9y
bS9ncmFwaGljcy9jZy9QbGF0Zm9ybUltYWdlQ0cuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9U
cmFuc2Zvcm1hdGlvbk1hdHJpeENHLmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Q
bGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4
IDUxNDUwNGU2ZWMyNWFhNWU0M2I5OTM5OGQ1ZTM1Y2VlZWE3NjZhYTQuLjY0YWUxNzEwODlkY2Jm
MGNkNDViNzBhOWI4ZjcwZWZhOWZmZGVkYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1Bs
YXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCkBA
IC0xMjIsNyArMTIyLDYgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvUGxhdGZvcm1EaXNwbGF5LmNwcAogCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vQmFja2luZ1N0b3JlQmFja2VuZENhaXJvSW1wbC5jcHAKLSAgICBwbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0NhaXJvVXRpbGl0aWVzLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRD
YWlyby5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fpcm9IYXJmYnV6ek5H
LmNwcApAQCAtMTM0LDYgKzEzMyw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAg
IHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BhdGhDYWlyby5jcHAKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9QYXR0ZXJuQ2Fpcm8uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
UGxhdGZvcm1Db250ZXh0Q2Fpcm8uY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxh
dGZvcm1JbWFnZUNhaXJvLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3Jt
UGF0aENhaXJvLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1JlZlB0ckNhaXJvLmNw
cAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1RyYW5zZm9ybWF0aW9uTWF0cml4Q2Fpcm8u
Y3BwCkBAIC0xNzksOSArMTc5LDkgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MveDExL1BsYXRmb3JtRGlzcGxheVgxMS5jcHAKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy94MTEvWFVuaXF1ZVJlc291cmNlLmNwcAogCi0gICAgcGxhdGZvcm0vaW1hZ2Ut
ZW5jb2RlcnMvSlBFR0ltYWdlRW5jb2Rlci5jcHAKKyAgICBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9jYWlyby9CaXRtYXBQaXhlbHNDYWlyby5jcHAKIAotICAgIHBsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2NhaXJvL0ltYWdlRGVjb2RlckNhaXJvLmNwcAorICAgIHBsYXRmb3JtL2ltYWdlLWVuY29k
ZXJzL0pQRUdJbWFnZUVuY29kZXIuY3BwCiAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2VmbC9OZXR3
b3JrU3RhdGVOb3RpZmllckVmbC5jcHAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxh
dGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCA2
NDVhZGQxY2UzODg4OGIwNGQ0YTJkODlhZGEwYTdjNmRlMTk5ODZiLi5kMzFmNTcwNmE2OTU5YjIz
MWI1YmZiMjJmMDdkMTg0M2FlODYxYTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0
Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAt
MTAxLDcgKzEwMSw2IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vQmFja2luZ1N0b3JlQmFja2VuZENhaXJvSW1wbC5jcHAKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CYWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm9YMTEuY3BwCi0g
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5jcHAKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb1V0aWxpdGllcy5jcHAKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9GbG9hdFJlY3RDYWlyby5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9Gb250Q2Fpcm8uY3BwCkBAIC0xMTUsNiArMTE0LDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9T
T1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0aENhaXJvLmNwcAogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BhdHRlcm5DYWlyby5jcHAKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9QbGF0Zm9ybUNvbnRleHRDYWlyby5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9QbGF0Zm9ybUltYWdlQ2Fpcm8uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vUGxhdGZvcm1QYXRoQ2Fpcm8uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUmVm
UHRyQ2Fpcm8uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vVHJhbnNmb3JtYXRpb25N
YXRyaXhDYWlyby5jcHAKQEAgLTE0OSw3ICsxNDksNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NP
VVJDRVMKICAgICBwbGF0Zm9ybS9ndGsvVGVtcG9yYXJ5TGlua1N0dWJzLmNwcAogICAgIHBsYXRm
b3JtL2d0ay9Vc2VyQWdlbnRHdGsuY3BwCiAKLSAgICBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9j
YWlyby9JbWFnZURlY29kZXJDYWlyby5jcHAKKyAgICBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9j
YWlyby9CaXRtYXBQaXhlbHNDYWlyby5jcHAKIAogICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL2d0
ay9TRFBQcm9jZXNzb3JTY3JpcHRSZXNvdXJjZUd0ay5jcHAKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5j
bWFrZQppbmRleCA5ZjZmNDk2YjZjYzRlZjZlNGI3NGQ4NGFjMGFhOWRlYTU1YTAyMzdiLi40ZGRl
ZDMwODhmNGYzOTZmZWY0NDRlN2VlNjVjNjQxMDY1OGY1ODQxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1h
Yy5jbWFrZQpAQCAtMzk3LDcgKzM5Nyw2IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1dlYlN5c3RlbUJhY2tkcm9wTGF5ZXIubW0K
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9XZWJUaWxlZEJhY2tpbmdMYXllci5tbQog
Ci0gICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFwSW1hZ2VDRy5jcHAKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0Zsb2F0
UG9pbnRDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9GbG9hdFJlY3RDRy5jcHAKQEAg
LTQxNyw2ICs0MTYsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2NnL1BhdGhDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwCisg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGxhdGZvcm1JbWFnZUNHLmNwcAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL1N1YmltYWdlQ2FjaGVXaXRoVGltZXIuY3BwCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvVHJhbnNmb3JtYXRpb25NYXRyaXhDRy5jcHAKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvUGxhdGZvcm1XaW5DYWlyby5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3Jt
V2luQ2Fpcm8uY21ha2UKaW5kZXggMmM1NTNiMDU1MWRhZDY5YWExOTlkOTYwZjU1MjM0M2Q5MjBm
MDdiMy4uMzQyYWE5MjczMmZkOGY5MmU4NWNmYTYyNmQ1NTU3MGVmNjZiNmE2OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW5DYWlyby5jbWFrZQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybVdpbkNhaXJvLmNtYWtlCkBAIC0yMSw3ICsyMSw2IEBAIGxpc3QoQVBQRU5E
IFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4dC5jcHAKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybURpc3BsYXkuY3BwCiAKLSAgICBwbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0NhaXJvVXRpbGl0aWVzLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0Zs
b2F0UmVjdENhaXJvLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyby5j
cHAKQEAgLTM0LDYgKzMzLDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0aENhaXJvLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL1BhdHRlcm5DYWlyby5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0
Zm9ybUNvbnRleHRDYWlyby5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9y
bUltYWdlQ2Fpcm8uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1QYXRo
Q2Fpcm8uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUmVmUHRyQ2Fpcm8uY3BwCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vVHJhbnNmb3JtYXRpb25NYXRyaXhDYWlyby5jcHAK
QEAgLTQ2LDcgKzQ2LDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5jcHAKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy93aW4vU2ltcGxlRm9udERhdGFDYWlyb1dpbi5jcHAKIAotICAg
IHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdlRGVjb2RlckNhaXJvLmNwcAorICAg
IHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0JpdG1hcFBpeGVsc0NhaXJvLmNwcAogCiAg
ICAgcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb25TdHViLmNwcAogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
NGU3YzNhMjI5YTE2M2E1ZjVhNjBmNjMyYmVhMGUzN2FkMjM5NDBlMC4uY2NiMDcwYmUwOWJhYzE2
ZjVmOWZkMzE5YTgzMmM5NzgwOWIyMTE5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTQ4NSw3ICsxNDg1LDcgQEAKIAkJMzc1
Q0QyMzIxMTlENDNDODAwQTJBODU5IC8qIEh5cGhlbmF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzVDRDIzMTExOUQ0M0M4MDBBMkE4NTkgLyog
SHlwaGVuYXRpb24uaCAqLzsgfTsKIAkJMzc2RENDRTExM0I0Rjk2NjAwMkVCRUZDIC8qIFRleHRS
dW4uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzc2
RENDRTAxM0I0Rjk2NjAwMkVCRUZDIC8qIFRleHRSdW4uY3BwICovOyB9OwogCQkzNzc0QUJBNTBG
QTIxRUI0MDBBRDdERTkgLyogT3ZlcmxhcFRlc3RSZXF1ZXN0Q2xpZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzc0QUJBMzBGQTIxRUI0MDBBRDdE
RTkgLyogT3ZlcmxhcFRlc3RSZXF1ZXN0Q2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJMzc3QTNBOTAxNUVGQ0U5QjAwNTlGNUM3IC8qIEJp
dG1hcEltYWdlQ0cuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMzc3QTNBOEYxNUVGQ0U5QTAwNTlGNUM3IC8qIEJpdG1hcEltYWdlQ0cuY3BwICovOyB9
OworCQkzNzdBM0E5MDE1RUZDRTlCMDA1OUY1QzcgLyogUGxhdGZvcm1JbWFnZUNHLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3N0EzQThGMTVFRkNF
OUEwMDU5RjVDNyAvKiBQbGF0Zm9ybUltYWdlQ0cuY3BwICovOyB9OwogCQkzNzkxOUMyMzBCN0Qx
ODg2MDBBNTY5OTggLyogUG9zaXRpb25JdGVyYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzkxOUMyMTBCN0QxODg2MDBBNTY5OTggLyogUG9z
aXRpb25JdGVyYXRvci5jcHAgKi87IH07CiAJCTM3OTE5QzI0MEI3RDE4ODYwMEE1Njk5OCAvKiBQ
b3NpdGlvbkl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAzNzkxOUMyMjBCN0QxODg2MDBBNTY5OTggLyogUG9zaXRpb25JdGVyYXRvci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKCk7IH07IH07CiAJCTM3OTI5MTdBMTk4NUVGMzkw
MEY0QjY2MSAvKiBDcmVkZW50aWFsQmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMzc5MjkxNzgxOTg1RUYzOTAwRjRCNjYxIC8qIENyZWRlbnRpYWxC
YXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAg
LTIzMjQsMTAgKzIzMjQsMTQgQEAKIAkJNTNFRDNGREYxNjdBODhFNzAwNjc2MkU2IC8qIEpTSW50
ZXJuYWxTZXR0aW5nc0dlbmVyYXRlZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTNFRDNGREQxNjdBODhFNzAwNjc2MkU2IC8qIEpTSW50ZXJuYWxTZXR0
aW5nc0dlbmVyYXRlZC5oICovOyB9OwogCQk1M0VGNzY2QjE2NTMwQTYxMDA0Q0JFNDkgLyogU2V0
dGluZ3NNYWNyb3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUzRUY3NjZBMTY1MzBBNjEwMDRDQkU0OSAvKiBTZXR0aW5nc01hY3Jvcy5oICovOyB9Owog
CQk1M0VGNzY2QzE2NTMxOTk0MDA0Q0JFNDkgLyogU2V0dGluZ3NNYWNyb3MuaCBpbiBDb3B5IEdl
bmVyYXRlZCBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRUY3
NjZBMTY1MzBBNjEwMDRDQkU0OSAvKiBTZXR0aW5nc01hY3Jvcy5oICovOyB9OworCQk1NTA0RTRD
QjFEMzU1N0IyMDBGRTUwODggLyogQml0bWFwUGl4ZWxzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTA0RTRDQTFEMzU1MzJEMDBGRTUwODggLyogQml0
bWFwUGl4ZWxzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNTUwQTBCQzkwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTUwQTBCQzcwODVGNjAz
OTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuY3BwICovOyB9OwogCQk1NTBBMEJDQTA4NUY2MDM5
MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTUwQTBCQzgwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5h
bWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1
NTVCODdFQzFDQUFGMEFCMDAzNDk0MjUgLyogSW1hZ2VEZWNvZGVyQ0cuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTU1Qjg3RUExQ0FBRjBBQjAwMzQ5
NDI1IC8qIEltYWdlRGVjb2RlckNHLmNwcCAqLzsgfTsKIAkJNTU1Qjg3RUQxQ0FBRjBBQjAwMzQ5
NDI1IC8qIEltYWdlRGVjb2RlckNHLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1NTVCODdFQjFDQUFGMEFCMDAzNDk0MjUgLyogSW1hZ2VEZWNvZGVyQ0cu
aCAqLzsgfTsKKwkJNTU3NEYwODcxRDAyNzkwOTAwQjlGMTRDIC8qIFBsYXRmb3JtSW1hZ2UuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1NzRGMDg1MUQw
Mjc0NDQwMEI5RjE0QyAvKiBQbGF0Zm9ybUltYWdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTVDQkE2QTExRDFERjJFMTAwNDUxODYwIC8qIElt
YWdlRnJhbWVEYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDU1Q0JBNjlGMUQxREYyRTEwMDQ1MTg2MCAvKiBJbWFnZUZyYW1lRGF0YS5jcHAgKi87
IH07CisJCTU1Q0JBNkEyMUQxREYyRTEwMDQ1MTg2MCAvKiBJbWFnZUZyYW1lRGF0YS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTVDQkE2QTAxRDFERjJF
MTAwNDUxODYwIC8qIEltYWdlRnJhbWVEYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTcyQTdGMjExQzZFNTcxOTAwOUM2MTQ5IC8qIFNpbXVs
YXRlZENsaWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1NzJBN0YyMDFDNkU1NzE5MDA5QzYxNDkgLyogU2ltdWxhdGVkQ2xpY2suaCAqLzsgfTsKIAkJ
NTcyQTdGMjMxQzZFNUE2NjAwOUM2MTQ5IC8qIFNpbXVsYXRlZENsaWNrLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MkE3RjIyMUM2RTVBNjYwMDlD
NjE0OSAvKiBTaW11bGF0ZWRDbGljay5jcHAgKi87IH07CiAJCTU3RUY1RTYwMUQyMEM4MzkwMDE3
MUU2MCAvKiBUZXh0Q29kZWNSZXBsYWNlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTdFRjVFNUYxRDIwQzgzOTAwMTcxRTYwIC8qIFRleHRDb2Rl
Y1JlcGxhY2VtZW50LmggKi87IH07CkBAIC05MDYzLDcgKzkwNjcsNyBAQAogCQkzNzZEQ0NFMDEz
QjRGOTY2MDAyRUJFRkMgLyogVGV4dFJ1bi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBUZXh0UnVuLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzc3
MkIwOTUxNjUzNTg1NjAwMEE0OUNBIC8qIFBvcHVwT3BlbmluZ09ic2VydmVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBvcHVwT3BlbmluZ09ic2VydmVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3NzRBQkEzMEZBMjFFQjQwMEFEN0RFOSAvKiBPdmVybGFw
VGVzdFJlcXVlc3RDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT3Zl
cmxhcFRlc3RSZXF1ZXN0Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTM3
N0EzQThGMTVFRkNFOUEwMDU5RjVDNyAvKiBCaXRtYXBJbWFnZUNHLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJpdG1hcEltYWdlQ0cuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkzNzdBM0E4RjE1RUZDRTlBMDA1OUY1QzcgLyogUGxhdGZvcm1JbWFn
ZUNHLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBsYXRmb3JtSW1h
Z2VDRy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3OTE5QzIxMEI3RDE4ODYw
MEE1Njk5OCAvKiBQb3NpdGlvbkl0ZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBQb3NpdGlvbkl0ZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMzc5MTlDMjIwQjdEMTg4NjAwQTU2OTk4IC8qIFBvc2l0aW9uSXRlcmF0b3IuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBvc2l0aW9uSXRlcmF0b3IuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzc5MjkxNzgxOTg1RUYzOTAwRjRCNjYxIC8qIENy
ZWRlbnRpYWxCYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyZWRlbnRp
YWxCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05OTg5LDEwICs5OTkzLDE0
IEBACiAJCTUzRUQzRkRDMTY3QTg4RTcwMDY3NjJFNiAvKiBKU0ludGVybmFsU2V0dGluZ3NHZW5l
cmF0ZWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNJbnRlcm5h
bFNldHRpbmdzR2VuZXJhdGVkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTNF
RDNGREQxNjdBODhFNzAwNjc2MkU2IC8qIEpTSW50ZXJuYWxTZXR0aW5nc0dlbmVyYXRlZC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0ludGVybmFsU2V0dGluZ3NHZW5lcmF0
ZWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTNFRjc2NkExNjUzMEE2MTAwNENC
RTQ5IC8qIFNldHRpbmdzTWFjcm9zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNldHRpbmdzTWFjcm9zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU1MDRFNENB
MUQzNTUzMkQwMEZFNTA4OCAvKiBCaXRtYXBQaXhlbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQml0bWFw
UGl4ZWxzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU1MEEwQkM3MDg1RjYwMzkw
MDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFF1YWxpZmllZE5hbWUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJNTUwQTBCQzgw
ODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUXVhbGlmaWVkTmFtZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJNTU1Qjg3RUEx
Q0FBRjBBQjAwMzQ5NDI1IC8qIEltYWdlRGVjb2RlckNHLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdlRGVjb2RlckNHLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTU1Qjg3RUIxQ0FBRjBBQjAwMzQ5NDI1IC8qIEltYWdlRGVjb2RlckNHLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlRGVjb2RlckNHLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU1NzRGMDg1MUQwMjc0NDQwMEI5RjE0QyAvKiBQbGF0
Zm9ybUltYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtSW1hZ2UuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNTVDQkE2OUYxRDFERjJFMTAwNDUxODYwIC8qIEltYWdlRnJhbWVE
YXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdlRnJhbWVE
YXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTVDQkE2QTAxRDFERjJFMTAw
NDUxODYwIC8qIEltYWdlRnJhbWVEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEltYWdlRnJhbWVEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU1RDQw
OEY3MUE3QzYzMTgwMEM3ODQ1MCAvKiBTVkdJbWFnZUNsaWVudHMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU1ZHSW1hZ2VDbGllbnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTU3MkE3RjIwMUM2RTU3MTkwMDlDNjE0OSAvKiBTaW11bGF0ZWRDbGljay5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaW11bGF0ZWRDbGljay5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1NzJBN0YyMjFDNkU1QTY2MDA5QzYxNDkgLyogU2ltdWxh
dGVkQ2xpY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2ltdWxh
dGVkQ2xpY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjIwMjgsNyArMjIw
MzYsNiBAQAogCQlCMjc1MzUyOTBCMDUzODE0MDAyQ0U2NEYgLyogY2cgKi8gPSB7CiAJCQlpc2Eg
PSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTM3N0EzQThGMTVFRkNFOUEwMDU5RjVD
NyAvKiBCaXRtYXBJbWFnZUNHLmNwcCAqLywKIAkJCQkwRkNGMzMyMzBGMkI5NzE1MDA0QjY3OTUg
LyogQ29sb3JDRy5jcHAgKi8sCiAJCQkJQjI3NTM1MkIwQjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0
UG9pbnRDRy5jcHAgKi8sCiAJCQkJQjI3NTM1MkMwQjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0UmVj
dENHLmNwcCAqLywKQEAgLTIyMDU1LDYgKzIyMDYyLDcgQEAKIAkJCQlBODBBMzhGRDBFNTBDQzgy
MDBBMjVFQkMgLyogUGF0dGVybkNHLmNwcCAqLywKIAkJCQlCMjc1MzUzNjBCMDUzODE0MDAyQ0U2
NEYgLyogUERGRG9jdW1lbnRJbWFnZS5jcHAgKi8sCiAJCQkJQjI3NTM1MzcwQjA1MzgxNDAwMkNF
NjRGIC8qIFBERkRvY3VtZW50SW1hZ2UuaCAqLywKKwkJCQkzNzdBM0E4RjE1RUZDRTlBMDA1OUY1
QzcgLyogUGxhdGZvcm1JbWFnZUNHLmNwcCAqLywKIAkJCQkxRkM0MEZCODE2NTVDNTkxMDA0MEYy
OUUgLyogU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5jcHAgKi8sCiAJCQkJMUZDNDBGQjcxNjU1QzU5
MTAwNDBGMjlFIC8qIFN1YmltYWdlQ2FjaGVXaXRoVGltZXIuaCAqLywKIAkJCQlCMjc1MzUyQTBC
MDUzODE0MDAyQ0U2NEYgLyogVHJhbnNmb3JtYXRpb25NYXRyaXhDRy5jcHAgKi8sCkBAIC0yMjEy
Miw2ICsyMjEzMCw3IEBACiAJCQkJQkVGMjlFRTkxNzE1REQwOTAwQzRCNEM5IC8qIEF1ZGlvVHJh
Y2tQcml2YXRlLmggKi8sCiAJCQkJQTg5OTQzMjcwQjQyMzM4NzAwRDdDODAyIC8qIEJpdG1hcElt
YWdlLmNwcCAqLywKIAkJCQlBODk5NDMyNjBCNDIzMzg3MDBEN0M4MDIgLyogQml0bWFwSW1hZ2Uu
aCAqLywKKwkJCQk1NTA0RTRDQTFEMzU1MzJEMDBGRTUwODggLyogQml0bWFwUGl4ZWxzLmggKi8s
CiAJCQkJQ0RERTAyRTkxOEIzREZDNzAwQ0Y3RkYxIC8qIENETVNlc3Npb24uaCAqLywKIAkJCQlC
Mjc1MzUzODBCMDUzODE0MDAyQ0U2NEYgLyogQ29sb3IuY3BwICovLAogCQkJCUIyNzUzNTM5MEIw
NTM4MTQwMDJDRTY0RiAvKiBDb2xvci5oICovLApAQCAtMjIyMDYsNiArMjIyMTUsOCBAQAogCQkJ
CTQzRDI1OTc2MTNDODE2RjQwMDYwODU1OSAvKiBJbWFnZUJ1ZmZlci5jcHAgKi8sCiAJCQkJQjJB
MTBCOTEwQjM4MThCRDAwMDk5QUE0IC8qIEltYWdlQnVmZmVyLmggKi8sCiAJCQkJMjJCRDlGN0Qx
MzUzNjI1QzAwOUJEMTAyIC8qIEltYWdlQnVmZmVyRGF0YS5oICovLAorCQkJCTU1Q0JBNjlGMUQx
REYyRTEwMDQ1MTg2MCAvKiBJbWFnZUZyYW1lRGF0YS5jcHAgKi8sCisJCQkJNTVDQkE2QTAxRDFE
RjJFMTAwNDUxODYwIC8qIEltYWdlRnJhbWVEYXRhLmggKi8sCiAJCQkJQkM3RjQ0QTcwQjlFMzI0
RTAwQTlEMDgxIC8qIEltYWdlT2JzZXJ2ZXIuaCAqLywKIAkJCQlBODc0OEQ3NDEyQ0MzRjg5MDAx
RkJBNDEgLyogSW1hZ2VPcmllbnRhdGlvbi5jcHAgKi8sCiAJCQkJQTg3NDhENjYxMkNDMzc2MzAw
MUZCQTQxIC8qIEltYWdlT3JpZW50YXRpb24uaCAqLywKQEAgLTIyMjU1LDYgKzIyMjY2LDcgQEAK
IAkJCQkyRDUwMDJGQTFCNTZENzk5MDAyMEFBRjcgLyogUGF0aFV0aWxpdGllcy5oICovLAogCQkJ
CUE4RkE2RTVDMEU0Q0ZERUQwMEQ1Q0Y0OSAvKiBQYXR0ZXJuLmNwcCAqLywKIAkJCQlBOEZBNkU1
QjBFNENGREVEMDBENUNGNDkgLyogUGF0dGVybi5oICovLAorCQkJCTU1NzRGMDg1MUQwMjc0NDQw
MEI5RjE0QyAvKiBQbGF0Zm9ybUltYWdlLmggKi8sCiAJCQkJMDU2MkY5NjAxNTczRjg4RjAwMzFD
QTE2IC8qIFBsYXRmb3JtTGF5ZXIuaCAqLywKIAkJCQlDRUVGQ0Q3QjE5REIzM0RDMDAzODc2RDcg
LyogUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmggKi8sCiAJCQkJMDcyODQ3RTIxNkVCQzVC
MDAwNDNDRkE0IC8qIFBsYXRmb3JtVGV4dFRyYWNrLmggKi8sCkBAIC0yNjAyOCw2ICsyNjA0MCw3
IEBACiAJCQkJODVFNzExQjkwQUM1RDUzNTAwNTMyNzBGIC8qIERPTUhUTUxNYXBFbGVtZW50SW50
ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNTE1NzlGMEMwM0JCRDMwMDhCQjBFRSAvKiBE
T01IVE1MTWFycXVlZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNTE1NkVBMEMwM0I3
NDEwMDhCQjBFRSAvKiBET01IVE1MTWFycXVlZUVsZW1lbnRJbnRlcm5hbC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNTU3NEYwODcxRDAyNzkwOTAwQjlGMTRDIC8qIFBsYXRmb3JtSW1hZ2UuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTJERUM2NjU1MUM4MkQwNDEwMDk5ODQ2QSAvKiBET01IVE1MTWVkaWFF
bGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkyREVDNjY1MTFDODJEMDE2MDA5OTg0NkEgLyog
RE9NSFRNTE1lZGlhRWxlbWVudEludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NUJBNEQx
MzBBQTY4ODY4MDA4ODA1MkQgLyogRE9NSFRNTE1lbnVFbGVtZW50LmggaW4gSGVhZGVycyAqLywK
QEAgLTI2NDY5LDYgKzI2NDgyLDcgQEAKIAkJCQlEMzU5RDc4QTEyOUNBMjcxMDAwNkU1RDIgLyog
SFRNTERldGFpbHNFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEVBNzlGQTBBMTkxNkRG
MDBBOEVGNUYgLyogSFRNTERpcmVjdG9yeUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4
RUE3Q0I3MEExOTJCOUMwMEE4RUY1RiAvKiBIVE1MRGl2RWxlbWVudC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJNTVDQkE2QTIxRDFERjJFMTAwNDUxODYwIC8qIEltYWdlRnJhbWVEYXRhLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBOEVBNzlGNzBBMTkxNkRGMDBBOEVGNUYgLyogSFRNTERMaXN0RWxlbWVu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNGMTk4RTUwODI0NUU1OTAwMUU5QUJDIC8qIEhUTUxE
b2N1bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc3QjM4NjcxMjI4ODNFOTAwQjgxRkY4IC8q
IEhUTUxEb2N1bWVudFBhcnNlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yODM2OSw2ICsyODM4Myw3
IEBACiAJCQkJQjIyMjc5OTMwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0FuaW1hdGVNb3Rpb25FbGVt
ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyNzk5NTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZH
QW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3OTk4MEQw
MEJGMjIwMDcxQjc4MiAvKiBTVkdBbmltYXRpb25FbGVtZW50LmggaW4gSGVhZGVycyAqLywKKwkJ
CQk1NTA0RTRDQjFEMzU1N0IyMDBGRTUwODggLyogQml0bWFwUGl4ZWxzLmggaW4gSGVhZGVycyAq
LywKIAkJCQk0MzlEMzM0NTEzQTY5MTFDMDBDMjBGNEYgLyogU1ZHQW5pbWF0b3JGYWN0b3J5Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwOEZCM0Y4NDEzQkM3NTRDMDA5OUZDMTggLyogU1ZHQXR0cmli
dXRlVG9Qcm9wZXJ0eU1hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5OUMwRDAwQkYyMjAw
NzFCNzgyIC8qIFNWR0NpcmNsZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjk0MjEsNyAr
Mjk0MzYsNyBAQAogCQkJCUZEQzU0RjA0MTM5OUIwREEwMDhEOTExNyAvKiBCaXF1YWRGaWx0ZXJO
b2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZEMzE2MDI2MTJCMDI2NzYwMEMxQTM1OSAvKiBC
aXF1YWRQcm9jZXNzb3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTg5OTQzMjkwQjQyMzM4ODAw
RDdDODAyIC8qIEJpdG1hcEltYWdlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTM3N0EzQTkwMTVF
RkNFOUIwMDU5RjVDNyAvKiBCaXRtYXBJbWFnZUNHLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTM3
N0EzQTkwMTVFRkNFOUIwMDU5RjVDNyAvKiBQbGF0Zm9ybUltYWdlQ0cuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJOTc2RDZDNzgxMjJCOEEzRDAwMUZEMUY3IC8qIEJsb2IuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMkVERUYxRjMxMjFCMEVGQzAwNzI2REIyIC8qIEJsb2JEYXRhLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUUxRDMxQ0RDMTkxOTYwMjAwMDEwMDVBMyAvKiBCbG9iRGF0YUZpbGVSZWZl
cmVuY2UuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yOTc4NCw2ICsyOTc5OSw3IEBACiAJCQkJMkUy
RDk5RTgxMEUyQkMxQzAwNDk2MzM3IC8qIERPTUJsb2IubW0gaW4gU291cmNlcyAqLywKIAkJCQk4
NTA4OUNEODBBOThDNDI4MDBBMjc1QUEgLyogRE9NQ0RBVEFTZWN0aW9uLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJODVBQ0E5ODcwQTlCNTIwMzAwNjcxRTkwIC8qIERPTUNoYXJhY3RlckRhdGEubW0g
aW4gU291cmNlcyAqLywKKwkJCQk1NUNCQTZBMTFEMURGMkUxMDA0NTE4NjAgLyogSW1hZ2VGcmFt
ZURhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODUwODlDREEwQTk4QzQyODAwQTI3NUFBIC8q
IERPTUNvbW1lbnQubW0gaW4gU291cmNlcyAqLywKIAkJCQk5NzhEMDdCRTE0NUEwRjZDMDA5Njkw
OEQgLyogRE9NQ29yZUV4Y2VwdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NThDMzhBNjBB
QThGMjA0MDBCMTg3QTQgLyogRE9NQ291bnRlci5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET00ubW0gYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9vYmpjL0RPTS5tbQppbmRleCA0MDExZWEzZmQ4YzA0Njk3NGM1NWQ0OGUzOTZmMWI4
M2I4MWYzMzVkLi5hNWFjNGYwNWFlMzM5YThkNjQ3MDZjMTBmYzBmN2FmNDA0MjU2MjNjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTS5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTS5tbQpAQCAtNjA2LDcgKzYwNiw3IEBAIC0gKHZvaWQp
Z2V0UHJldmlld1NuYXBzaG90SW1hZ2U6KENHSW1hZ2VSZWYqKWNnSW1hZ2UgYW5kUmVjdHM6KE5T
QXJyYXkgKiopcmVjdHMKIAogICAgIGlmICh0ZXh0SW5kaWNhdG9yKSB7CiAgICAgICAgIGlmIChJ
bWFnZSogaW1hZ2UgPSB0ZXh0SW5kaWNhdG9yLT5jb250ZW50SW1hZ2UoKSkKLSAgICAgICAgICAg
ICpjZ0ltYWdlID0gKENHSW1hZ2VSZWYpQ0ZBdXRvcmVsZWFzZShDR0ltYWdlUmV0YWluKGltYWdl
LT5nZXRDR0ltYWdlUmVmKCkpKTsKKyAgICAgICAgICAgICpjZ0ltYWdlID0gaW1hZ2UtPm5hdGl2
ZUltYWdlKCkuYXV0b3JlbGVhc2UoKTsKICAgICB9CiAKICAgICBSZXRhaW5QdHI8TlNNdXRhYmxl
QXJyYXk+IHJlY3RBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvVGV4dEluZGljYXRvcldpbmRv
dy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1RleHRJbmRpY2F0b3JXaW5kb3cubW0KaW5k
ZXggMzY0YTlhODdjZTZmMDY2Mzk0OGI4ODQ2ZThlMmNlNmQxOTBmMjQ4OS4uYTc0ZGE4NWFjZWNh
M2M2Njk4ZGQxNTZhYjMxYTZjOTcxYTM1NGU2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9tYWMvVGV4dEluZGljYXRvcldpbmRvdy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L21hYy9UZXh0SW5kaWNhdG9yV2luZG93Lm1tCkBAIC0xNjIsOSArMTYyLDkgQEAgLSAoaW5zdGFu
Y2V0eXBlKWluaXRXaXRoRnJhbWU6KE5TUmVjdClmcmFtZSB0ZXh0SW5kaWNhdG9yOihQYXNzUmVm
UHRyPFRleHRJbmRpY2EKICAgICBjb250ZW50c0ltYWdlTG9naWNhbFNpemUuc2NhbGUoMSAvIF90
ZXh0SW5kaWNhdG9yLT5jb250ZW50SW1hZ2VTY2FsZUZhY3RvcigpKTsKICAgICBSZXRhaW5QdHI8
Q0dJbWFnZVJlZj4gY29udGVudHNJbWFnZTsKICAgICBpZiAoaW5kaWNhdG9yV2FudHNDb250ZW50
Q3Jvc3NmYWRlKCpfdGV4dEluZGljYXRvcikpCi0gICAgICAgIGNvbnRlbnRzSW1hZ2UgPSBfdGV4
dEluZGljYXRvci0+Y29udGVudEltYWdlV2l0aEhpZ2hsaWdodCgpLT5nZXRDR0ltYWdlUmVmKCk7
CisgICAgICAgIGNvbnRlbnRzSW1hZ2UgPSBfdGV4dEluZGljYXRvci0+Y29udGVudEltYWdlV2l0
aEhpZ2hsaWdodCgpLT5uYXRpdmVJbWFnZSgpOwogICAgIGVsc2UKLSAgICAgICAgY29udGVudHNJ
bWFnZSA9IF90ZXh0SW5kaWNhdG9yLT5jb250ZW50SW1hZ2UoKS0+Z2V0Q0dJbWFnZVJlZigpOwor
ICAgICAgICBjb250ZW50c0ltYWdlID0gX3RleHRJbmRpY2F0b3ItPmNvbnRlbnRJbWFnZSgpLT5u
YXRpdmVJbWFnZSgpOwogCiAgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBib3VuY2VMYXll
cnMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKIApAQCAtMjY1LDcg
KzI2NSw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8Q0FLZXlmcmFtZUFuaW1hdGlvbj4gY3JlYXRlQm91
bmNlQW5pbWF0aW9uKENGVGltZUludGVydmFsIGR1cmF0CiBzdGF0aWMgUmV0YWluUHRyPENBQmFz
aWNBbmltYXRpb24+IGNyZWF0ZUNvbnRlbnRDcm9zc2ZhZGVBbmltYXRpb24oQ0ZUaW1lSW50ZXJ2
YWwgZHVyYXRpb24sIFRleHRJbmRpY2F0b3ImIHRleHRJbmRpY2F0b3IpCiB7CiAgICAgUmV0YWlu
UHRyPENBQmFzaWNBbmltYXRpb24+IGNyb3NzZmFkZUFuaW1hdGlvbiA9IFtDQUJhc2ljQW5pbWF0
aW9uIGFuaW1hdGlvbldpdGhLZXlQYXRoOkAiY29udGVudHMiXTsKLSAgICBSZXRhaW5QdHI8Q0dJ
bWFnZVJlZj4gY29udGVudHNJbWFnZSA9IHRleHRJbmRpY2F0b3IuY29udGVudEltYWdlKCktPmdl
dENHSW1hZ2VSZWYoKTsKKyAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gY29udGVudHNJbWFnZSA9
IHRleHRJbmRpY2F0b3IuY29udGVudEltYWdlKCktPm5hdGl2ZUltYWdlKCk7CiAgICAgW2Nyb3Nz
ZmFkZUFuaW1hdGlvbiBzZXRUb1ZhbHVlOihpZCljb250ZW50c0ltYWdlLmdldCgpXTsKICAgICBb
Y3Jvc3NmYWRlQW5pbWF0aW9uIHNldEZpbGxNb2RlOmtDQUZpbGxNb2RlRm9yd2FyZHNdOwogICAg
IFtjcm9zc2ZhZGVBbmltYXRpb24gc2V0UmVtb3ZlZE9uQ29tcGxldGlvbjpOT107CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKaW5kZXggNDYw
ZDFiODU2Yjc3YjdjZjRlYzY4OTY1ODFiODMzZDNlN2Y5NzAxNC4uZmM2NDlkMTBhYWI5YzEzZmZm
MjkzMDU1YTcwN2NiNzQ1Mzc0NjkxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcApAQCAtNjgsMTUgKzY4LDEzIEBAIEJpdG1hcEltYWdl
OjpCaXRtYXBJbWFnZShOYXRpdmVJbWFnZVB0ciYmIGltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNl
cnZlcikKICAgICAsIG1faGF2ZUZyYW1lQ291bnQodHJ1ZSkKICAgICAsIG1fYW5pbWF0aW9uRmlu
aXNoZWRXaGVuQ2F0Y2hpbmdVcChmYWxzZSkKIHsKKyAgICBtX2ZyYW1lcy5yZXNlcnZlSW5pdGlh
bENhcGFjaXR5KDEpOworICAgIG1fZnJhbWVzLnVuY2hlY2tlZEFwcGVuZChXVEZNb3ZlKGltYWdl
KSk7CisgICAgCiAgICAgLy8gU2luY2Ugd2UgZG9uJ3QgaGF2ZSBhIGRlY29kZXIsIHdlIGNhbid0
IGZpZ3VyZSBvdXQgdGhlIGltYWdlIG9yaWVudGF0aW9uLgogICAgIC8vIFNldCBtX3NpemVSZXNw
ZWN0aW5nT3JpZW50YXRpb24gdG8gYmUgdGhlIHNhbWUgYXMgbV9zaXplIHNvIGl0J3Mgbm90IDB4
MC4KLSAgICBtX3NpemVSZXNwZWN0aW5nT3JpZW50YXRpb24gPSBtX3NpemUgPSBOYXRpdmVJbWFn
ZTo6c2l6ZShpbWFnZSk7CisgICAgbV9zaXplUmVzcGVjdGluZ09yaWVudGF0aW9uID0gbV9zaXpl
ID0gbV9mcmFtZXNbMF0uc2l6ZSgpOwogICAgIG1fZGVjb2RlZFNpemUgPSBtX3NpemUuYXJlYSgp
ICogNDsKLSAgICAKLSAgICBtX2ZyYW1lcy5ncm93KDEpOwotICAgIG1fZnJhbWVzWzBdLm1faGFz
QWxwaGEgPSBOYXRpdmVJbWFnZTo6aGFzQWxwaGEoaW1hZ2UpOwotICAgIG1fZnJhbWVzWzBdLm1f
aGF2ZU1ldGFkYXRhID0gdHJ1ZTsKLSAgICBtX2ZyYW1lc1swXS5tX2ltYWdlID0gV1RGTW92ZShp
bWFnZSk7CiB9CiAKIEJpdG1hcEltYWdlOjp+Qml0bWFwSW1hZ2UoKQpAQCAtMTA1LDcgKzEwMyw3
IEBAIGJvb2wgQml0bWFwSW1hZ2U6OmhhdmVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgp
CiAgICAgaWYgKGluZGV4ID49IG1fZnJhbWVzLnNpemUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgcmV0dXJuIG1fZnJhbWVzW2luZGV4XS5tX2ltYWdlOworICAgIHJldHVybiBtX2Zy
YW1lc1tpbmRleF0uaGFzSW1hZ2UoKTsKIH0KIAogYm9vbCBCaXRtYXBJbWFnZTo6aGFzU2luZ2xl
U2VjdXJpdHlPcmlnaW4oKSBjb25zdApAQCAtMTI1LDkgKzEyMyw3IEBAIHZvaWQgQml0bWFwSW1h
Z2U6OmRlc3Ryb3lEZWNvZGVkRGF0YShib29sIGRlc3Ryb3lBbGwpCiAgICAgICAgIC8vIFRoZSB1
bmRlcmx5aW5nIGZyYW1lIGlzbid0IGFjdHVhbGx5IGNoYW5naW5nICh3ZSdyZSBqdXN0IHRyeWlu
ZyB0bwogICAgICAgICAvLyBzYXZlIHRoZSBtZW1vcnkgZm9yIHRoZSBmcmFtZWJ1ZmZlciBkYXRh
KSwgc28gd2UgZG9uJ3QgbmVlZCB0byBjbGVhcgogICAgICAgICAvLyB0aGUgbWV0YWRhdGEuCi0g
ICAgICAgIHVuc2lnbmVkIGZyYW1lQnl0ZXMgPSBtX2ZyYW1lc1tpXS5tX2ZyYW1lQnl0ZXM7Ci0g
ICAgICAgIGlmIChtX2ZyYW1lc1tpXS5jbGVhcihmYWxzZSkpCi0gICAgICAgICAgICBmcmFtZUJ5
dGVzQ2xlYXJlZCArPSBmcmFtZUJ5dGVzOworICAgICAgICBmcmFtZUJ5dGVzQ2xlYXJlZCArPSBt
X2ZyYW1lc1tpXS5jbGVhcihJbWFnZUZyYW1lRGF0YTo6Q2FjaGluZzo6TWV0YWRhdGEpOwogICAg
IH0KIAogICAgIG1fc291cmNlLmNsZWFyKGRlc3Ryb3lBbGwsIGNsZWFyQmVmb3JlRnJhbWUsIGRh
dGEoKSwgbV9hbGxEYXRhUmVjZWl2ZWQpOwpAQCAtMTUwLDggKzE0Niw4IEBAIHZvaWQgQml0bWFw
SW1hZ2U6OmRlc3Ryb3lEZWNvZGVkRGF0YUlmTmVjZXNzYXJ5KGJvb2wgZGVzdHJveUFsbCkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgdW5zaWduZWQgYWxsRnJhbWVCeXRlcyA9IDA7Ci0gICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBtX2ZyYW1lcy5zaXplKCk7ICsraSkKLSAgICAgICAgYWxsRnJh
bWVCeXRlcyArPSBtX2ZyYW1lc1tpXS51c2VkRnJhbWVCeXRlcygpOworICAgIGZvciAoYXV0byYg
ZnJhbWUgOiBtX2ZyYW1lcykKKyAgICAgICAgYWxsRnJhbWVCeXRlcyArPSBmcmFtZS5mcmFtZUJ5
dGVzKCk7CiAKICAgICBpZiAoYWxsRnJhbWVCeXRlcyA+IGxhcmdlQW5pbWF0aW9uQ3V0b2ZmKSB7
CiAgICAgICAgIExPRyhJbWFnZXMsICJCaXRtYXBJbWFnZSAlcCBkZXN0cm95RGVjb2RlZERhdGFJ
Zk5lY2Vzc2FyeSBkZXN0cm95aW5nRGF0YTogYWxsRnJhbWVCeXRlcz0ldSBjdXRvZmY9JXUiLCB0
aGlzLCBhbGxGcmFtZUJ5dGVzLCBsYXJnZUFuaW1hdGlvbkN1dG9mZik7CkBAIC0xNzcsNyArMTcz
LDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZGVzdHJveU1ldGFkYXRhQW5kTm90aWZ5KHVuc2lnbmVk
IGZyYW1lQnl0ZXNDbGVhcmVkLCBDbGVhcmVkU28KICAgICAgICAgaW1hZ2VPYnNlcnZlcigpLT5k
ZWNvZGVkU2l6ZUNoYW5nZWQodGhpcywgLXNhZmVDYXN0PGludD4oZnJhbWVCeXRlc0NsZWFyZWQp
KTsKIH0KIAotdm9pZCBCaXRtYXBJbWFnZTo6Y2FjaGVGcmFtZShzaXplX3QgaW5kZXgsIFN1YnNh
bXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgSW1hZ2VGcmFtZUNhY2hpbmcgZnJhbWVDYWNo
aW5nKQordm9pZCBCaXRtYXBJbWFnZTo6Y2FjaGVGcmFtZShzaXplX3QgaW5kZXgsIFN1YnNhbXBs
aW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgSW1hZ2VGcmFtZURhdGE6OkNhY2hpbmcgY2FjaGlu
ZykKIHsKICAgICBzaXplX3QgbnVtRnJhbWVzID0gZnJhbWVDb3VudCgpOwogICAgIEFTU0VSVCht
X2RlY29kZWRTaXplID09IDAgfHwgbnVtRnJhbWVzID4gMSk7CkBAIC0xODUsMjUgKzE4MSwxMiBA
QCB2b2lkIEJpdG1hcEltYWdlOjpjYWNoZUZyYW1lKHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdM
ZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBJbQogICAgIGlmIChtX2ZyYW1lcy5zaXplKCkgPCBudW1G
cmFtZXMpCiAgICAgICAgIG1fZnJhbWVzLmdyb3cobnVtRnJhbWVzKTsKIAotICAgIGlmIChmcmFt
ZUNhY2hpbmcgPT0gQ2FjaGVNZXRhZGF0YUFuZEZyYW1lKSB7Ci0gICAgICAgIG1fZnJhbWVzW2lu
ZGV4XS5tX2ltYWdlID0gbV9zb3VyY2UuY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoaW5kZXgsIHN1
YnNhbXBsaW5nTGV2ZWwpOwotICAgICAgICBtX2ZyYW1lc1tpbmRleF0ubV9zdWJzYW1wbGluZ0xl
dmVsID0gc3Vic2FtcGxpbmdMZXZlbDsKLSAgICB9Ci0KLSAgICBtX2ZyYW1lc1tpbmRleF0ubV9v
cmllbnRhdGlvbiA9IG1fc291cmNlLm9yaWVudGF0aW9uQXRJbmRleChpbmRleCk7Ci0gICAgbV9m
cmFtZXNbaW5kZXhdLm1faGF2ZU1ldGFkYXRhID0gdHJ1ZTsKLSAgICBtX2ZyYW1lc1tpbmRleF0u
bV9pc0NvbXBsZXRlID0gbV9zb3VyY2UuZnJhbWVJc0NvbXBsZXRlQXRJbmRleChpbmRleCk7Cisg
ICAgbV9mcmFtZXNbaW5kZXhdID0gbV9zb3VyY2UuY3JlYXRlRnJhbWVEYXRhQXRJbmRleChpbmRl
eCwgc3Vic2FtcGxpbmdMZXZlbCwgY2FjaGluZyk7CiAKLSAgICBpZiAocmVwZXRpdGlvbkNvdW50
KGZhbHNlKSAhPSBjQW5pbWF0aW9uTm9uZSkKLSAgICAgICAgbV9mcmFtZXNbaW5kZXhdLm1fZHVy
YXRpb24gPSBtX3NvdXJjZS5mcmFtZUR1cmF0aW9uQXRJbmRleChpbmRleCk7CisgICAgTE9HKElt
YWdlcywgIkJpdG1hcEltYWdlICVwIGNhY2hlRnJhbWUgJWx1ICglcyV1IGJ5dGVzLCBjb21wbGV0
ZSAlZCkiLCB0aGlzLCBpbmRleCwgY2FjaGluZyA9PSBJbWFnZUZyYW1lRGF0YTo6Q2FjaGluZzo6
TWV0YWRhdGEgPyAibWV0YWRhdGEgb25seSwgIiA6ICIiLCBtX2ZyYW1lc1tpbmRleF0uZnJhbWVC
eXRlcygpLCBtX2ZyYW1lc1tpbmRleF0uaXNDb21wbGV0ZSgpKTsKIAotICAgIG1fZnJhbWVzW2lu
ZGV4XS5tX2hhc0FscGhhID0gbV9zb3VyY2UuZnJhbWVIYXNBbHBoYUF0SW5kZXgoaW5kZXgpOwot
ICAgIG1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lQnl0ZXMgPSBtX3NvdXJjZS5mcmFtZUJ5dGVzQXRJ
bmRleChpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCk7Ci0KLSAgICBMT0coSW1hZ2VzLCAiQml0bWFw
SW1hZ2UgJXAgY2FjaGVGcmFtZSAlbHUgKCVzJXUgYnl0ZXMsIGNvbXBsZXRlICVkKSIsIHRoaXMs
IGluZGV4LCBmcmFtZUNhY2hpbmcgPT0gQ2FjaGVNZXRhZGF0YU9ubHkgPyAibWV0YWRhdGEgb25s
eSwgIiA6ICIiLCBtX2ZyYW1lc1tpbmRleF0ubV9mcmFtZUJ5dGVzLCBtX2ZyYW1lc1tpbmRleF0u
bV9pc0NvbXBsZXRlKTsKLQotICAgIGlmIChtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZSkgewotICAg
ICAgICBpbnQgZGVsdGFCeXRlcyA9IHNhZmVDYXN0PGludD4obV9mcmFtZXNbaW5kZXhdLm1fZnJh
bWVCeXRlcyk7CisgICAgaWYgKG1fZnJhbWVzW2luZGV4XS5oYXNJbWFnZSgpKSB7CisgICAgICAg
IGludCBkZWx0YUJ5dGVzID0gc2FmZUNhc3Q8aW50PihtX2ZyYW1lc1tpbmRleF0uZnJhbWVCeXRl
cygpKTsKICAgICAgICAgbV9kZWNvZGVkU2l6ZSArPSBkZWx0YUJ5dGVzOwogICAgICAgICAvLyBU
aGUgZnVsbHktZGVjb2RlZCBmcmFtZSB3aWxsIHN1YnN1bWUgdGhlIHBhcnRpYWxseSBkZWNvZGVk
IGRhdGEgdXNlZAogICAgICAgICAvLyB0byBkZXRlcm1pbmUgaW1hZ2UgcHJvcGVydGllcy4KQEAg
LTI4OCwyMSArMjcxLDE5IEBAIGJvb2wgQml0bWFwSW1hZ2U6OmRhdGFDaGFuZ2VkKGJvb2wgYWxs
RGF0YVJlY2VpdmVkKQogICAgIC8vIGZyYW1lIGFmZmVjdGVkIGJ5IGFwcGVuZGluZyBuZXcgZGF0
YSBoZXJlLiBUaHVzIHdlIGhhdmUgdG8gY2xlYXIgYWxsIHRoZQogICAgIC8vIGluY29tcGxldGUg
ZnJhbWVzIHRvIGJlIHNhZmUuCiAgICAgdW5zaWduZWQgZnJhbWVCeXRlc0NsZWFyZWQgPSAwOwot
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9mcmFtZXMuc2l6ZSgpOyArK2kpIHsKKyAgICBm
b3IgKGF1dG8mIGZyYW1lIDogbV9mcmFtZXMpIHsKICAgICAgICAgLy8gTk9URTogRG9uJ3QgY2Fs
bCBmcmFtZUlzQ29tcGxldGVBdEluZGV4KCkgaGVyZSwgdGhhdCB3aWxsIHRyeSB0bwogICAgICAg
ICAvLyBkZWNvZGUgYW55IHVuY2FjaGVkIChpLmUuIG5ldmVyLWRlY29kZWQgb3IKICAgICAgICAg
Ly8gY2xlYXJlZC1vbi1hLXByZXZpb3VzLXBhc3MpIGZyYW1lcyEKLSAgICAgICAgdW5zaWduZWQg
ZnJhbWVCeXRlcyA9IG1fZnJhbWVzW2ldLm1fZnJhbWVCeXRlczsKLSAgICAgICAgaWYgKG1fZnJh
bWVzW2ldLm1faGF2ZU1ldGFkYXRhICYmICFtX2ZyYW1lc1tpXS5tX2lzQ29tcGxldGUpCi0gICAg
ICAgICAgICBmcmFtZUJ5dGVzQ2xlYXJlZCArPSAobV9mcmFtZXNbaV0uY2xlYXIodHJ1ZSkgPyBm
cmFtZUJ5dGVzIDogMCk7CisgICAgICAgIGlmIChmcmFtZS5oYXNNZXRhZGF0YSgpICYmICFmcmFt
ZS5pc0NvbXBsZXRlKCkpCisgICAgICAgICAgICBmcmFtZUJ5dGVzQ2xlYXJlZCArPSBmcmFtZS5j
bGVhcihJbWFnZUZyYW1lRGF0YTo6Q2FjaGluZzo6RW1wdHkpOwogICAgIH0KICAgICBkZXN0cm95
TWV0YWRhdGFBbmROb3RpZnkoZnJhbWVCeXRlc0NsZWFyZWQsIENsZWFyZWRTb3VyY2U6Ok5vKTsK
ICNlbHNlCiAgICAgLy8gRklYTUU6IHdoeSBpcyB0aGlzIGRpZmZlcmVudCBmb3IgaU9TPwogICAg
IGludCBkZWx0YUJ5dGVzID0gMDsKICAgICBpZiAoIW1fZnJhbWVzLmlzRW1wdHkoKSkgewotICAg
ICAgICBpbnQgYnl0ZXMgPSBtX2ZyYW1lc1ttX2ZyYW1lcy5zaXplKCkgLSAxXS5tX2ZyYW1lQnl0
ZXM7Ci0gICAgICAgIGlmIChtX2ZyYW1lc1ttX2ZyYW1lcy5zaXplKCkgLSAxXS5jbGVhcih0cnVl
KSkgeworICAgICAgICBpZiAoaW50IGJ5dGVzID0gbV9mcmFtZXNbbV9mcmFtZXMuc2l6ZSgpIC0g
MV0uY2xlYXIoSW1hZ2VGcmFtZURhdGE6OkNhY2hpbmc6OkVtcHR5KSkgewogICAgICAgICAgICAg
ZGVsdGFCeXRlcyArPSBieXRlczsKICAgICAgICAgICAgIGRlbHRhQnl0ZXMgKz0gbV9kZWNvZGVk
UHJvcGVydGllc1NpemU7CiAgICAgICAgICAgICBtX2RlY29kZWRQcm9wZXJ0aWVzU2l6ZSA9IDA7
CkBAIC0zNjYsMTUgKzM0NywxNSBAQCBib29sIEJpdG1hcEltYWdlOjppc1NpemVBdmFpbGFibGUo
KQogICAgIHJldHVybiBtX3NpemVBdmFpbGFibGU7CiB9CiAKLWJvb2wgQml0bWFwSW1hZ2U6OmVu
c3VyZUZyYW1lSXNDYWNoZWQoc2l6ZV90IGluZGV4LCBJbWFnZUZyYW1lQ2FjaGluZyBmcmFtZUNh
Y2hpbmcpCitib29sIEJpdG1hcEltYWdlOjplbnN1cmVGcmFtZUlzQ2FjaGVkKHNpemVfdCBpbmRl
eCwgSW1hZ2VGcmFtZURhdGE6OkNhY2hpbmcgY2FjaGluZykKIHsKICAgICBpZiAoaW5kZXggPj0g
ZnJhbWVDb3VudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoaW5kZXggPj0g
bV9mcmFtZXMuc2l6ZSgpCi0gICAgICAgIHx8IChmcmFtZUNhY2hpbmcgPT0gQ2FjaGVNZXRhZGF0
YUFuZEZyYW1lICYmICFtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZSkKLSAgICAgICAgfHwgKGZyYW1l
Q2FjaGluZyA9PSBDYWNoZU1ldGFkYXRhT25seSAmJiAhbV9mcmFtZXNbaW5kZXhdLm1faGF2ZU1l
dGFkYXRhKSkKLSAgICAgICAgY2FjaGVGcmFtZShpbmRleCwgMCwgZnJhbWVDYWNoaW5nKTsKKyAg
ICAgICAgfHwgKGNhY2hpbmcgPT0gSW1hZ2VGcmFtZURhdGE6OkNhY2hpbmc6Ok1ldGFkYXRhQW5k
SW1hZ2UgJiYgIW1fZnJhbWVzW2luZGV4XS5oYXNJbWFnZSgpKQorICAgICAgICB8fCAoY2FjaGlu
ZyA9PSBJbWFnZUZyYW1lRGF0YTo6Q2FjaGluZzo6TWV0YWRhdGEgJiYgIW1fZnJhbWVzW2luZGV4
XS5oYXNNZXRhZGF0YSgpKSkKKyAgICAgICAgY2FjaGVGcmFtZShpbmRleCwgMCwgY2FjaGluZyk7
CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTM4OCwxMCArMzY5LDkgQEAgTmF0aXZlSW1hZ2VQ
dHIgQml0bWFwSW1hZ2U6OmZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgZmxvYXQgcHJl
c2VudGF0aW9uU2MKIAogICAgIC8vIFdlIG1heSBoYXZlIGNhY2hlZCBhIGZyYW1lIHdpdGggYSBo
aWdoZXIgc3Vic2FtcGxpbmcgbGV2ZWwsIGluIHdoaWNoIGNhc2Ugd2UgbmVlZCB0bwogICAgIC8v
IHJlLWRlY29kZSB3aXRoIGEgbG93ZXIgbGV2ZWwuCi0gICAgaWYgKGluZGV4IDwgbV9mcmFtZXMu
c2l6ZSgpICYmIG1fZnJhbWVzW2luZGV4XS5tX2ltYWdlICYmIHN1YnNhbXBsaW5nTGV2ZWwgPCBt
X2ZyYW1lc1tpbmRleF0ubV9zdWJzYW1wbGluZ0xldmVsKSB7CisgICAgaWYgKGluZGV4IDwgbV9m
cmFtZXMuc2l6ZSgpICYmIG1fZnJhbWVzW2luZGV4XS5oYXNJbWFnZSgpICYmIHN1YnNhbXBsaW5n
TGV2ZWwgPCBtX2ZyYW1lc1tpbmRleF0uc3Vic2FtcGxpbmdMZXZlbCgpKSB7CiAgICAgICAgIC8v
IElmIHRoZSBpbWFnZSBpcyBhbHJlYWR5IGNhY2hlZCwgYnV0IGF0IHRvbyBzbWFsbCBhIHNpemUs
IHJlLWRlY29kZSBhIGxhcmdlciB2ZXJzaW9uLgotICAgICAgICBpbnQgc2l6ZUNoYW5nZSA9IC1t
X2ZyYW1lc1tpbmRleF0ubV9mcmFtZUJ5dGVzOwotICAgICAgICBtX2ZyYW1lc1tpbmRleF0uY2xl
YXIodHJ1ZSk7CisgICAgICAgIGludCBzaXplQ2hhbmdlID0gLW1fZnJhbWVzW2luZGV4XS5jbGVh
cihJbWFnZUZyYW1lRGF0YTo6Q2FjaGluZzo6RW1wdHkpOwogICAgICAgICBpbnZhbGlkYXRlUGxh
dGZvcm1EYXRhKCk7CiAgICAgICAgIG1fZGVjb2RlZFNpemUgKz0gc2l6ZUNoYW5nZTsKICAgICAg
ICAgaWYgKGltYWdlT2JzZXJ2ZXIoKSkKQEAgLTM5OSw0MCArMzc5LDcyIEBAIE5hdGl2ZUltYWdl
UHRyIEJpdG1hcEltYWdlOjpmcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIGZsb2F0IHBy
ZXNlbnRhdGlvblNjCiAgICAgfQogCiAgICAgLy8gSWYgd2UgaGF2ZW4ndCBmZXRjaGVkIGEgZnJh
bWUgeWV0LCBkbyBzby4KLSAgICBpZiAoaW5kZXggPj0gbV9mcmFtZXMuc2l6ZSgpIHx8ICFtX2Zy
YW1lc1tpbmRleF0ubV9pbWFnZSkKLSAgICAgICAgY2FjaGVGcmFtZShpbmRleCwgc3Vic2FtcGxp
bmdMZXZlbCwgQ2FjaGVNZXRhZGF0YUFuZEZyYW1lKTsKKyAgICBpZiAoaW5kZXggPj0gbV9mcmFt
ZXMuc2l6ZSgpIHx8ICFtX2ZyYW1lc1tpbmRleF0uaGFzSW1hZ2UoKSkKKyAgICAgICAgY2FjaGVG
cmFtZShpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCwgSW1hZ2VGcmFtZURhdGE6OkNhY2hpbmc6Ok1l
dGFkYXRhQW5kSW1hZ2UpOworCisgICAgcmV0dXJuIG1fZnJhbWVzW2luZGV4XS5pbWFnZSgpOwor
fQorICAgIAorTmF0aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6Om5hdGl2ZUltYWdlKCkKK3sKKyAg
ICByZXR1cm4gZnJhbWVJbWFnZUF0SW5kZXgoMCk7Cit9CisgICAgCitOYXRpdmVJbWFnZVB0ciBC
aXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VPZlNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKK3sKKyAg
ICBzaXplX3QgY291bnQgPSBmcmFtZUNvdW50KCk7CisgICAgCisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBjb3VudDsgKytpKSB7CisgICAgICAgIGF1dG8gaW1hZ2UgPSBmcmFtZUltYWdlQXRJ
bmRleChpKTsKKyAgICAgICAgaWYgKGltYWdlICYmIFBsYXRmb3JtSW1hZ2UoaW1hZ2UpLnNpemUo
KSA9PSBzaXplKQorICAgICAgICAgICAgcmV0dXJuIGltYWdlOworICAgIH0KKyAgICAKKyAgICAv
LyBGYWxsYmFjayB0byB0aGUgZmlyc3QgZnJhbWUgaW1hZ2UgaWYgd2UgY2FuJ3QgZmluZCB0aGUg
cmlnaHQgc2l6ZQorICAgIHJldHVybiBmcmFtZUltYWdlQXRJbmRleCgwKTsKK30KKyAgICAKK05h
dGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpCit7
CisgICAgcmV0dXJuIGZyYW1lSW1hZ2VBdEluZGV4KG1fY3VycmVudEZyYW1lKTsKK30KIAotICAg
IHJldHVybiBtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZTsKK1ZlY3RvcjxOYXRpdmVJbWFnZVB0cj4g
Qml0bWFwSW1hZ2U6OmZyYW1lc05hdGl2ZUltYWdlcygpCit7CisgICAgVmVjdG9yPE5hdGl2ZUlt
YWdlUHRyPiBpbWFnZXM7CisgICAgc2l6ZV90IGNvdW50ID0gZnJhbWVDb3VudCgpOworICAgIAor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgeworICAgICAgICBpZiAoYXV0
byBpbWFnZSA9IGZyYW1lSW1hZ2VBdEluZGV4KGkpKQorICAgICAgICAgICAgaW1hZ2VzLmFwcGVu
ZChpbWFnZSk7CisgICAgfQorICAgIAorICAgIHJldHVybiBpbWFnZXM7CiB9CiAKIGJvb2wgQml0
bWFwSW1hZ2U6OmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoc2l6ZV90IGluZGV4KQogewotICAgIGlm
ICghZW5zdXJlRnJhbWVJc0NhY2hlZChpbmRleCwgQ2FjaGVNZXRhZGF0YU9ubHkpKQorICAgIGlm
ICghZW5zdXJlRnJhbWVJc0NhY2hlZChpbmRleCwgSW1hZ2VGcmFtZURhdGE6OkNhY2hpbmc6Ok1l
dGFkYXRhKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIG1fZnJhbWVzW2lu
ZGV4XS5tX2lzQ29tcGxldGU7CisgICAgcmV0dXJuIG1fZnJhbWVzW2luZGV4XS5pc0NvbXBsZXRl
KCk7CiB9CiAKIGZsb2F0IEJpdG1hcEltYWdlOjpmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3Qg
aW5kZXgpCiB7Ci0gICAgaWYgKCFlbnN1cmVGcmFtZUlzQ2FjaGVkKGluZGV4LCBDYWNoZU1ldGFk
YXRhT25seSkpCisgICAgaWYgKCFlbnN1cmVGcmFtZUlzQ2FjaGVkKGluZGV4LCBJbWFnZUZyYW1l
RGF0YTo6Q2FjaGluZzo6TWV0YWRhdGEpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVy
biBtX2ZyYW1lc1tpbmRleF0ubV9kdXJhdGlvbjsKLX0KLQotTmF0aXZlSW1hZ2VQdHIgQml0bWFw
SW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkKLXsKLSAgICByZXR1cm4gZnJhbWVJ
bWFnZUF0SW5kZXgoY3VycmVudEZyYW1lKCkpOworICAgIHJldHVybiBtX2ZyYW1lc1tpbmRleF0u
ZHVyYXRpb24oKTsKIH0KIAogYm9vbCBCaXRtYXBJbWFnZTo6ZnJhbWVIYXNBbHBoYUF0SW5kZXgo
c2l6ZV90IGluZGV4KQogewotICAgIGlmICghZW5zdXJlRnJhbWVJc0NhY2hlZChpbmRleCwgQ2Fj
aGVNZXRhZGF0YU9ubHkpKQorICAgIGlmICghZW5zdXJlRnJhbWVJc0NhY2hlZChpbmRleCwgSW1h
Z2VGcmFtZURhdGE6OkNhY2hpbmc6Ok1ldGFkYXRhKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAK
LSAgICBpZiAobV9mcmFtZXNbaW5kZXhdLm1faGF2ZU1ldGFkYXRhKQotICAgICAgICByZXR1cm4g
bV9mcmFtZXNbaW5kZXhdLm1faGFzQWxwaGE7CisgICAgaWYgKG1fZnJhbWVzW2luZGV4XS5oYXNN
ZXRhZGF0YSgpKQorICAgICAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLmhhc0FscGhhKCk7CiAK
ICAgICByZXR1cm4gbV9zb3VyY2UuZnJhbWVIYXNBbHBoYUF0SW5kZXgoaW5kZXgpOwogfQpAQCAt
NDQ0LDExICs0NTYsMTEgQEAgYm9vbCBCaXRtYXBJbWFnZTo6Y3VycmVudEZyYW1lS25vd25Ub0Jl
T3BhcXVlKCkKIAogSW1hZ2VPcmllbnRhdGlvbiBCaXRtYXBJbWFnZTo6ZnJhbWVPcmllbnRhdGlv
bkF0SW5kZXgoc2l6ZV90IGluZGV4KQogewotICAgIGlmICghZW5zdXJlRnJhbWVJc0NhY2hlZChp
bmRleCwgQ2FjaGVNZXRhZGF0YU9ubHkpKQorICAgIGlmICghZW5zdXJlRnJhbWVJc0NhY2hlZChp
bmRleCwgSW1hZ2VGcmFtZURhdGE6OkNhY2hpbmc6Ok1ldGFkYXRhKSkKICAgICAgICAgcmV0dXJu
IEltYWdlT3JpZW50YXRpb24oKTsKIAotICAgIGlmIChtX2ZyYW1lc1tpbmRleF0ubV9oYXZlTWV0
YWRhdGEpCi0gICAgICAgIHJldHVybiBtX2ZyYW1lc1tpbmRleF0ubV9vcmllbnRhdGlvbjsKKyAg
ICBpZiAobV9mcmFtZXNbaW5kZXhdLmhhc01ldGFkYXRhKCkpCisgICAgICAgIHJldHVybiBtX2Zy
YW1lc1tpbmRleF0ub3JpZW50YXRpb24oKTsKIAogICAgIHJldHVybiBtX3NvdXJjZS5vcmllbnRh
dGlvbkF0SW5kZXgoaW5kZXgpOwogfQpAQCAtNzAwLDE3ICs3MTIsNTYgQEAgQ29sb3IgQml0bWFw
SW1hZ2U6OnNpbmdsZVBpeGVsU29saWRDb2xvcigpCiAgICAgICAgIHJldHVybiBDb2xvcigpOwog
ICAgIAogICAgIEFTU0VSVChtX2ZyYW1lcy5zaXplKCkpOwotICAgIG1fc29saWRDb2xvciA9IE5h
dGl2ZUltYWdlOjpzaW5nbGVQaXhlbFNvbGlkQ29sb3IobV9mcmFtZXNbMF0ubV9pbWFnZS5nZXQo
KSk7CisgICAgbV9zb2xpZENvbG9yID0gbV9mcmFtZXNbMF0uc2luZ2xlUGl4ZWxTb2xpZENvbG9y
KCk7CiAgICAgCiAgICAgQVNTRVJUKG1fc29saWRDb2xvcik7CiAgICAgcmV0dXJuIG1fc29saWRD
b2xvci52YWx1ZSgpOwogfQogICAgIAorYm9vbCBCaXRtYXBJbWFnZTo6aXNBbG1vc3RTb2xpZENv
bG9yKCkKK3sKKyAgICBpZiAoZnJhbWVDb3VudCgpICE9IDEpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIHJldHVybiBlbnN1cmVGcmFtZUlzQ2FjaGVkKDApICYmIG1fZnJhbWVzWzBdLmlz
QWxtb3N0U29saWRDb2xvcigpOworfQorICAgIAogYm9vbCBCaXRtYXBJbWFnZTo6Y2FuQW5pbWF0
ZSgpCiB7CiAgICAgcmV0dXJuIHNob3VsZEFuaW1hdGUoKSAmJiBmcmFtZUNvdW50KCkgPiAxOwog
fQogCit2b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3Np
dGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIG1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlv
biBkZXNjcmlwdGlvbikKK3sKKyAgICBpZiAoZGVzdFJlY3QuaXNFbXB0eSgpIHx8IHNyY1JlY3Qu
aXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyNpZiBQTEFURk9STShJT1MpCisgICAgc3Rh
cnRBbmltYXRpb24oRG9Ob3RDYXRjaFVwKTsKKyNlbHNlCisgICAgc3RhcnRBbmltYXRpb24oKTsK
KyNlbmRpZgorICAgIAorICAgIENvbG9yIGNvbG9yID0gc2luZ2xlUGl4ZWxTb2xpZENvbG9yKCk7
CisgICAgaWYgKGNvbG9yLmlzVmFsaWQoKSkgeworICAgICAgICBmaWxsV2l0aFNvbGlkQ29sb3Io
Y29udGV4dCwgZGVzdFJlY3QsIGNvbG9yLCBvcCk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgCisgICAgYXV0byBpbWFnZSA9IGZyYW1lSW1hZ2VBdEluZGV4KG1fY3VycmVudEZyYW1lLCBQ
bGF0Zm9ybUltYWdlOjpzdWJzYW1wbGluZ1NjYWxlKGNvbnRleHQsIGRlc3RSZWN0LCBzcmNSZWN0
KSk7CisgICAgaWYgKCFpbWFnZSkgLy8gSWYgaXQncyB0b28gZWFybHkgd2Ugd29uJ3QgaGF2ZSBh
biBpbWFnZSB5ZXQuCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBJbWFnZU9yaWVudGF0aW9u
IG9yaWVudGF0aW9uKGRlc2NyaXB0aW9uLmltYWdlT3JpZW50YXRpb24oKSk7CisgICAgaWYgKGRl
c2NyaXB0aW9uLnJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKCkgPT0gUmVzcGVjdEltYWdlT3JpZW50
YXRpb24pCisgICAgICAgIG9yaWVudGF0aW9uID0gZnJhbWVPcmllbnRhdGlvbkF0SW5kZXgobV9j
dXJyZW50RnJhbWUpOworICAgIAorICAgIFBsYXRmb3JtSW1hZ2UoaW1hZ2UpLmRyYXcoY29udGV4
dCwgZGVzdFJlY3QsIHNyY1JlY3QsIG1fc2l6ZSwgb3AsIG1vZGUsIG9yaWVudGF0aW9uKTsKKyAg
ICAKKyAgICBpZiAoaW1hZ2VPYnNlcnZlcigpKQorICAgICAgICBpbWFnZU9ic2VydmVyKCktPmRp
ZERyYXcodGhpcyk7Cit9CisgICAgCiB2b2lkIEJpdG1hcEltYWdlOjpkdW1wKFRleHRTdHJlYW0m
IHRzKSBjb25zdAogewogICAgIEltYWdlOjpkdW1wKHRzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCmluZGV4IDA3NTg5MjljZDg3ZmFkYWNmMDJi
NmVkOGVlYWZlN2RlZmQ2NmYwYzUuLjIyMThjODI0YjUyOGZkNjM5YmFiMTM4ZGVjYzk4Yjk4MTZh
MTY4MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1h
cEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1h
Z2UuaApAQCAtMjgsMTEgKzI4LDEzIEBACiAjaWZuZGVmIEJpdG1hcEltYWdlX2gKICNkZWZpbmUg
Qml0bWFwSW1hZ2VfaAogCi0jaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJDb2xvci5oIgor
I2luY2x1ZGUgIkltYWdlLmgiCisjaW5jbHVkZSAiSW1hZ2VGcmFtZURhdGEuaCIKICNpbmNsdWRl
ICJJbWFnZU9yaWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiSW1hZ2VTb3VyY2UuaCIKICNpbmNsdWRl
ICJJbnRTaXplLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1JbWFnZS5oIgogCiAjaWYgVVNFKENHKSB8
fCBVU0UoQVBQS0lUKQogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KQEAgLTQ3LDYzICs0OSw5
IEBAIHR5cGVkZWYgc3RydWN0IEhCSVRNQVBfXyAqSEJJVE1BUDsKICNlbmRpZgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0gICAgc3RydWN0IEZyYW1lRGF0YTsKLX0KLQotbmFtZXNwYWNlIFdURiB7
Ci0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgVmVjdG9yVHJhaXRzPFdlYkNvcmU6OkZyYW1lRGF0YT4g
OiBwdWJsaWMgU2ltcGxlQ2xhc3NWZWN0b3JUcmFpdHMgewotICAgICAgICBzdGF0aWMgY29uc3Qg
Ym9vbCBjYW5Jbml0aWFsaXplV2l0aE1lbXNldCA9IGZhbHNlOyAvLyBOb3QgYWxsIEZyYW1lRGF0
YSBtZW1iZXJzIGluaXRpYWxpemUgdG8gMC4KLSAgICB9OwotfQotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIFRpbWVyOwogCi1uYW1lc3BhY2UgTmF0aXZlSW1hZ2UgewotICAgIEludFNp
emUgc2l6ZShjb25zdCBOYXRpdmVJbWFnZVB0ciYpOwotICAgIGJvb2wgaGFzQWxwaGEoY29uc3Qg
TmF0aXZlSW1hZ2VQdHImKTsKLSAgICBDb2xvciBzaW5nbGVQaXhlbFNvbGlkQ29sb3IoY29uc3Qg
TmF0aXZlSW1hZ2VQdHImKTsKLX0KLQotLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0vLyBGcmFtZURhdGEgQ2xhc3MKLS8vID09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi1zdHJ1Y3QgRnJhbWVEYXRhIHsK
LXB1YmxpYzoKLSAgICBGcmFtZURhdGEoKQotICAgICAgICA6IG1faGF2ZU1ldGFkYXRhKGZhbHNl
KQotICAgICAgICAsIG1faXNDb21wbGV0ZShmYWxzZSkKLSAgICAgICAgLCBtX2hhc0FscGhhKHRy
dWUpCi0gICAgewotICAgIH0KLQotICAgIH5GcmFtZURhdGEoKQotICAgIHsgCi0gICAgICAgIGNs
ZWFyKHRydWUpOwotICAgIH0KLQotICAgIC8vIENsZWFyIHRoZSBjYWNoZWQgaW1hZ2UgZGF0YSBv
biB0aGUgZnJhbWUsIGFuZCAob3B0aW9uYWxseSkgdGhlIG1ldGFkYXRhLgotICAgIC8vIFJldHVy
bnMgd2hldGhlciB0aGVyZSB3YXMgY2FjaGVkIGltYWdlIGRhdGEgdG8gY2xlYXIuCi0gICAgYm9v
bCBjbGVhcihib29sIGNsZWFyTWV0YWRhdGEpOwotICAgIAotICAgIHVuc2lnbmVkIHVzZWRGcmFt
ZUJ5dGVzKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZSA/IG1fZnJhbWVCeXRlcyA6IDA7IH0KLQot
ICAgIE5hdGl2ZUltYWdlUHRyIG1faW1hZ2U7Ci0gICAgSW1hZ2VPcmllbnRhdGlvbiBtX29yaWVu
dGF0aW9uIHsgRGVmYXVsdEltYWdlT3JpZW50YXRpb24gfTsKLSAgICBTdWJzYW1wbGluZ0xldmVs
IG1fc3Vic2FtcGxpbmdMZXZlbCB7IDAgfTsKLSAgICBmbG9hdCBtX2R1cmF0aW9uIHsgMCB9Owot
ICAgIGJvb2wgbV9oYXZlTWV0YWRhdGEgOiAxOwotICAgIGJvb2wgbV9pc0NvbXBsZXRlIDogMTsK
LSAgICBib29sIG1faGFzQWxwaGEgOiAxOwotICAgIHVuc2lnbmVkIG1fZnJhbWVCeXRlcyB7IDAg
fTsKLX07Ci0KLS8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS8vIEJpdG1hcEltYWdlIENsYXNzCi0vLyA9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0KIGNsYXNzIEJpdG1hcEltYWdlIGZpbmFsIDogcHVi
bGljIEltYWdlIHsKICAgICBmcmllbmQgY2xhc3MgR2VuZXJhdGVkSW1hZ2U7CiAgICAgZnJpZW5k
IGNsYXNzIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOwpAQCAtMTU1LDEyICsxMDMsNiBAQCBwdWJs
aWM6CiAgICAgQ0ZEYXRhUmVmIGdldFRJRkZSZXByZXNlbnRhdGlvbigpIG92ZXJyaWRlOwogI2Vu
ZGlmCiAKLSNpZiBVU0UoQ0cpCi0gICAgV0VCQ09SRV9FWFBPUlQgQ0dJbWFnZVJlZiBnZXRDR0lt
YWdlUmVmKCkgb3ZlcnJpZGU7Ci0gICAgQ0dJbWFnZVJlZiBnZXRGaXJzdENHSW1hZ2VSZWZPZlNp
emUoY29uc3QgSW50U2l6ZSYpIG92ZXJyaWRlOwotICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBn
ZXRDR0ltYWdlQXJyYXkoKSBvdmVycmlkZTsKLSNlbmRpZgotCiAjaWYgUExBVEZPUk0oV0lOKQog
ICAgIGJvb2wgZ2V0SEJJVE1BUChIQklUTUFQKSBvdmVycmlkZTsKICAgICBib29sIGdldEhCSVRN
QVBPZlNpemUoSEJJVE1BUCwgY29uc3QgSW50U2l6ZSopIG92ZXJyaWRlOwpAQCAtMTc0LDggKzEx
NiwxMyBAQCBwdWJsaWM6CiAgICAgRXZhc19PYmplY3QqIGdldEV2YXNPYmplY3QoRXZhcyopIG92
ZXJyaWRlOwogI2VuZGlmCiAKKyAgICBXRUJDT1JFX0VYUE9SVCBOYXRpdmVJbWFnZVB0ciBuYXRp
dmVJbWFnZSgpIG92ZXJyaWRlOworICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlT2ZTaXpl
KGNvbnN0IEludFNpemUmKSBvdmVycmlkZTsKICAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFn
ZUZvckN1cnJlbnRGcmFtZSgpIG92ZXJyaWRlOwogICAgIEltYWdlT3JpZW50YXRpb24gb3JpZW50
YXRpb25Gb3JDdXJyZW50RnJhbWUoKSBvdmVycmlkZSB7IHJldHVybiBmcmFtZU9yaWVudGF0aW9u
QXRJbmRleChjdXJyZW50RnJhbWUoKSk7IH0KKyAgICBWZWN0b3I8TmF0aXZlSW1hZ2VQdHI+IGZy
YW1lc05hdGl2ZUltYWdlcygpIG92ZXJyaWRlOworICAgIAorICAgIFdFQkNPUkVfRVhQT1JUIGJv
b2wgaXNBbG1vc3RTb2xpZENvbG9yKCk7CiAKICAgICBib29sIGN1cnJlbnRGcmFtZUtub3duVG9C
ZU9wYXF1ZSgpIG92ZXJyaWRlOwogCkBAIC0yMTUsNyArMTYyLDYgQEAgcHJvdGVjdGVkOgogICAg
IHNpemVfdCBmcmFtZUNvdW50KCk7CiAKICAgICBOYXRpdmVJbWFnZVB0ciBmcmFtZUltYWdlQXRJ
bmRleChzaXplX3QsIGZsb2F0IHByZXNlbnRhdGlvblNjYWxlSGludCA9IDEpOwotICAgIE5hdGl2
ZUltYWdlUHRyIGNvcHlVbnNjYWxlZEZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCk7CiAKICAgICBi
b29sIGhhdmVGcmFtZUltYWdlQXRJbmRleChzaXplX3QpOwogCkBAIC0yMjUsMTEgKzE3MSwxMCBA
QCBwcm90ZWN0ZWQ6CiAgICAgSW1hZ2VPcmllbnRhdGlvbiBmcmFtZU9yaWVudGF0aW9uQXRJbmRl
eChzaXplX3QpOwogCiAgICAgLy8gRGVjb2RlcyBhbmQgY2FjaGVzIGEgZnJhbWUuIE5ldmVyIGFj
Y2Vzc2VkIGV4Y2VwdCBpbnRlcm5hbGx5LgotICAgIGVudW0gSW1hZ2VGcmFtZUNhY2hpbmcgeyBD
YWNoZU1ldGFkYXRhT25seSwgQ2FjaGVNZXRhZGF0YUFuZEZyYW1lIH07Ci0gICAgdm9pZCBjYWNo
ZUZyYW1lKHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCwgSW1hZ2VGcmFtZUNhY2hpbmcg
PSBDYWNoZU1ldGFkYXRhQW5kRnJhbWUpOworICAgIHZvaWQgY2FjaGVGcmFtZShzaXplX3QgaW5k
ZXgsIFN1YnNhbXBsaW5nTGV2ZWwsIEltYWdlRnJhbWVEYXRhOjpDYWNoaW5nID0gSW1hZ2VGcmFt
ZURhdGE6OkNhY2hpbmc6Ok1ldGFkYXRhQW5kSW1hZ2UpOwogCiAgICAgLy8gQ2FsbGVkIGJlZm9y
ZSBhY2Nlc3NpbmcgbV9mcmFtZXNbaW5kZXhdIGZvciBpbmZvIHdpdGhvdXQgZGVjb2RpbmcuIFJl
dHVybnMgZmFsc2Ugb24gaW5kZXggb3V0IG9mIGJvdW5kcy4KLSAgICBib29sIGVuc3VyZUZyYW1l
SXNDYWNoZWQoc2l6ZV90IGluZGV4LCBJbWFnZUZyYW1lQ2FjaGluZyA9IENhY2hlTWV0YWRhdGFB
bmRGcmFtZSk7CisgICAgYm9vbCBlbnN1cmVGcmFtZUlzQ2FjaGVkKHNpemVfdCBpbmRleCwgSW1h
Z2VGcmFtZURhdGE6OkNhY2hpbmcgPSBJbWFnZUZyYW1lRGF0YTo6Q2FjaGluZzo6TWV0YWRhdGFB
bmRJbWFnZSk7CiAKICAgICAvLyBDYWxsZWQgdG8gaW52YWxpZGF0ZSBjYWNoZWQgZGF0YS4gV2hl
biB8ZGVzdHJveUFsbHwgaXMgdHJ1ZSwgd2Ugd2lwZSBvdXQKICAgICAvLyB0aGUgZW50aXJlIGZy
YW1lIGJ1ZmZlciBjYWNoZSBhbmQgdGVsbCB0aGUgaW1hZ2Ugc291cmNlIHRvIGRlc3Ryb3kKQEAg
LTI5Miw3ICsyMzcsNyBAQCBwcml2YXRlOgogICAgIG11dGFibGUgSW50U2l6ZSBtX3NpemVSZXNw
ZWN0aW5nT3JpZW50YXRpb247CiAKICAgICBzaXplX3QgbV9jdXJyZW50RnJhbWUgeyAwIH07IC8v
IFRoZSBpbmRleCBvZiB0aGUgY3VycmVudCBmcmFtZSBvZiBhbmltYXRpb24uCi0gICAgVmVjdG9y
PEZyYW1lRGF0YSwgMT4gbV9mcmFtZXM7IC8vIEFuIGFycmF5IG9mIHRoZSBjYWNoZWQgZnJhbWVz
IG9mIHRoZSBhbmltYXRpb24uIFdlIGhhdmUgdG8gcmVmIGZyYW1lcyB0byBwaW4gdGhlbSBpbiB0
aGUgY2FjaGUuCisgICAgVmVjdG9yPEltYWdlRnJhbWVEYXRhLCAxPiBtX2ZyYW1lczsgLy8gQW4g
YXJyYXkgb2YgdGhlIGNhY2hlZCBmcmFtZXMgb2YgdGhlIGFuaW1hdGlvbi4gV2UgaGF2ZSB0byBy
ZWYgZnJhbWVzIHRvIHBpbiB0aGVtIGluIHRoZSBjYWNoZS4KIAogICAgIHN0ZDo6dW5pcXVlX3B0
cjxUaW1lcj4gbV9mcmFtZVRpbWVyOwogICAgIGludCBtX3JlcGV0aXRpb25Db3VudCB7IGNBbmlt
YXRpb25Ob25lIH07IC8vIEhvdyBtYW55IHRvdGFsIGFuaW1hdGlvbiBsb29wcyB3ZSBzaG91bGQg
ZG8uIFRoaXMgd2lsbCBiZSBjQW5pbWF0aW9uTm9uZSBpZiB0aGlzIGltYWdlIHR5cGUgaXMgaW5j
YXBhYmxlIG9mIGFuaW1hdGlvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0JpdG1hcFBpeGVscy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQml0bWFwUGl4ZWxzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWZhZTNkMmU0MGNjZjFkODFmNmJhNTdkYjY4
MmQ5MmQ0NjliYmFjMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0JpdG1hcFBpeGVscy5oCkBAIC0wLDAgKzEsMTgzIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSAiQ29sb3IuaCIKKyNpbmNsdWRlICJJbnRSZWN0LmgiCisjaW5jbHVkZSAiSW50U2l6ZS5oIgor
I2luY2x1ZGUgIk5hdGl2ZUltYWdlUHRyLmgiCisKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQml0bWFwUGl4ZWxzIHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEJpdG1hcFBpeGVscz4gY3JlYXRlKGNvbnN0IEludFNp
emUmIHNpemUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSkKKyAgICB7CisgICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPEJpdG1hcFBpeGVscz4oc2l6ZSwgcHJlbXVsdGlwbHlBbHBoYSk7Cisg
ICAgfQorCisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxCaXRtYXBQaXhlbHM+IGNyZWF0ZShj
b25zdCBCaXRtYXBQaXhlbHMmIG90aGVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8Qml0bWFwUGl4ZWxzPihvdGhlcik7CisgICAgfQorCisgICAgQml0bWFwUGl4ZWxz
KGNvbnN0IEludFNpemUmIHNpemUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSA9IHRydWUpCisgICAg
ICAgIDogbV9wcmVtdWx0aXBseUFscGhhKHByZW11bHRpcGx5QWxwaGEpCisgICAgeworICAgICAg
ICBBU1NFUlQoIXNpemUuaXNFbXB0eSgpKTsKKyAgICAgICAgc2V0U2l6ZShzaXplKTsKKyAgICB9
CisKKyAgICBCaXRtYXBQaXhlbHMoY29uc3QgQml0bWFwUGl4ZWxzJiBvdGhlcikKKyAgICB7Cisg
ICAgICAgIGlmICh0aGlzID09ICZvdGhlcikKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
CisgICAgICAgIG1fYmFja2luZ1N0b3JlID0gb3RoZXIubV9iYWNraW5nU3RvcmU7CisgICAgICAg
IG1fcGl4ZWxzID0gbV9iYWNraW5nU3RvcmUuZGF0YSgpOworICAgICAgICBtX3NpemUgPSBvdGhl
ci5tX3NpemU7CisgICAgICAgIG1fcmVjdCA9IG90aGVyLm1fcmVjdDsKKyAgICAgICAgbV9wcmVt
dWx0aXBseUFscGhhID0gb3RoZXIubV9wcmVtdWx0aXBseUFscGhhOworICAgIH0KKworICAgIE5h
dGl2ZUltYWdlUHRyIGltYWdlKCkgY29uc3Q7CisKKyAgICBib29sIHNldFNpemUoY29uc3QgSW50
U2l6ZSYgc2l6ZSkKKyAgICB7CisgICAgICAgIGlmICghbV9iYWNraW5nU3RvcmUudHJ5UmVzZXJ2
ZUNhcGFjaXR5KHNpemUuYXJlYSgpKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgCisgICAgICAgIG1fYmFja2luZ1N0b3JlLnJlc2l6ZShzaXplLmFyZWEoKSk7CisgICAgICAg
IG1fcGl4ZWxzID0gbV9iYWNraW5nU3RvcmUuZGF0YSgpOworICAgICAgICBtX3NpemUgPSBzaXpl
OworICAgICAgICBtX3JlY3QgPSBJbnRSZWN0KEludFBvaW50KCksIG1fc2l6ZSk7CisgICAgICAg
IGNsZWFyKCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAKKyAgICB2b2lkIHNl
dFJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkKKyAgICB7CisgICAgICAgIEFTU0VSVCghbV9zaXpl
LmlzRW1wdHkoKSk7CisgICAgICAgIEFTU0VSVChpbkJvdW5kcyhyZWN0KSk7CisgICAgICAgIG1f
cmVjdCA9IHJlY3Q7CisgICAgfQorICAgIAorICAgIEludFNpemUgc2l6ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fc2l6ZTsgfQorICAgIEludFJlY3QgcmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdDsg
fQorCisgICAgUkdCQTMyKiBhdChpbnQgeCwgaW50IHkpIGNvbnN0CisgICAgeworICAgICAgICBy
ZXR1cm4gbV9waXhlbHMgKyB5ICogbV9zaXplLndpZHRoKCkgKyB4OworICAgIH0KKworICAgIHZv
aWQgY2xlYXIoKQorICAgIHsKKyAgICAgICAgbWVtc2V0KG1fcGl4ZWxzLCAwLCBtX3NpemUuYXJl
YSgpICogc2l6ZW9mKFJHQkEzMikpOworICAgIH0KKworICAgIHZvaWQgY2xlYXJSZWN0KGNvbnN0
IEludFJlY3QmIHJlY3QpCisgICAgeworICAgICAgICBpZiAocmVjdC5pc0VtcHR5KCkgfHwgaW5C
b3VuZHMocmVjdCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIAorICAgICAgICBzaXpl
X3QgcmVjdFdpZHRoSW5CeXRlcyA9IHJlY3Qud2lkdGgoKSAqIHNpemVvZihSR0JBMzIpOworICAg
ICAgICBSR0JBMzIqIHN0YXJ0ID0gYXQocmVjdC54KCksIHJlY3QueSgpKTsKKyAgICAgICAgZm9y
IChpbnQgaSA9IDA7IGkgPCByZWN0LmhlaWdodCgpOyArK2kpIHsKKyAgICAgICAgICAgIG1lbXNl
dChzdGFydCwgMCwgcmVjdFdpZHRoSW5CeXRlcyk7CisgICAgICAgICAgICBzdGFydCArPSBtX3Np
emUud2lkdGgoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgcmVwZWF0Rmlyc3RSb3co
Y29uc3QgSW50UmVjdCYgcmVjdCkKKyAgICB7CisgICAgICAgIGlmIChyZWN0LmlzRW1wdHkoKSB8
fCBpbkJvdW5kcyhyZWN0KSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgCisgICAgICAg
IHNpemVfdCByZWN0V2lkdGhJbkJ5dGVzID0gcmVjdC53aWR0aCgpICogc2l6ZW9mKFJHQkEzMik7
CisgICAgICAgIFJHQkEzMiogc3JjID0gYXQocmVjdC54KCksIHJlY3QueSgpKTsKKyAgICAgICAg
UkdCQTMyKiBkZXN0ID0gc3JjICsgbV9zaXplLndpZHRoKCk7CisgICAgICAgIGZvciAoaW50IGkg
PSAxOyBpIDwgcmVjdC5oZWlnaHQoKTsgKytpKSB7CisgICAgICAgICAgICBtZW1jcHkoZGVzdCwg
c3JjLCByZWN0V2lkdGhJbkJ5dGVzKTsKKyAgICAgICAgICAgIGRlc3QgKz0gbV9zaXplLndpZHRo
KCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIHNldFJHQkEoaW50IHgsIGludCB5LCB1
bnNpZ25lZCByLCB1bnNpZ25lZCBnLCB1bnNpZ25lZCBiLCB1bnNpZ25lZCBhKQorICAgIHsKKyAg
ICAgICAgc2V0UkdCQShhdCh4LCB5KSwgciwgZywgYiwgYSk7CisgICAgfQorCisgICAgdm9pZCBz
ZXRSR0JBKFJHQkEzMiogZGVzdCwgdW5zaWduZWQgciwgdW5zaWduZWQgZywgdW5zaWduZWQgYiwg
dW5zaWduZWQgYSkKKyAgICB7CisgICAgICAgIGlmICghbV9wcmVtdWx0aXBseUFscGhhIHx8IGEg
Pj0gMjU1KQorICAgICAgICAgICAgKmRlc3QgPSBtYWtlUkdCQShyLCBnLCBiLCBhKTsKKyAgICAg
ICAgZWxzZSBpZiAoIWEpCisgICAgICAgICAgICAqZGVzdCA9IDA7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICpkZXN0ID0gbWFrZVByZW11bHRpcGxpZWRSR0JBKHIsIGcsIGIsIGEpOworICAg
IH0KKworICAgIHZvaWQgb3ZlclJHQkEoUkdCQTMyKiBkZXN0LCB1bnNpZ25lZCByLCB1bnNpZ25l
ZCBnLCB1bnNpZ25lZCBiLCB1bnNpZ25lZCBhKQorICAgIHsKKyAgICAgICAgaWYgKCFhKQorICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAKKyAgICAgICAgaWYgKGEgPj0gMjU1IHx8ICFhbHBo
YUNoYW5uZWwoKmRlc3QpKSB7CisgICAgICAgICAgICBzZXRSR0JBKGRlc3QsIHIsIGcsIGIsIGEp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAo
IW1fcHJlbXVsdGlwbHlBbHBoYSkKKyAgICAgICAgICAgICpkZXN0ID0gbWFrZVByZW11bHRpcGxp
ZWRSR0JBKHJlZENoYW5uZWwoKmRlc3QpLCBncmVlbkNoYW5uZWwoKmRlc3QpLCBibHVlQ2hhbm5l
bCgqZGVzdCksIGFscGhhQ2hhbm5lbCgqZGVzdCkpOworICAgICAgICAKKyAgICAgICAgUkdCQTMy
IHNyYyA9IG1ha2VSR0JBKHIsIGcsIGIsIGEpOworICAgICAgICAqZGVzdCA9IENvbG9yKCpkZXN0
KS5ibGVuZChzcmMpLnJnYigpOworICAgICAgICAKKyAgICAgICAgaWYgKCFtX3ByZW11bHRpcGx5
QWxwaGEpCisgICAgICAgICAgICAqZGVzdCA9IG1ha2VVblByZW11bHRpcGxpZWRSR0JBKHJlZENo
YW5uZWwoKmRlc3QpLCBncmVlbkNoYW5uZWwoKmRlc3QpLCBibHVlQ2hhbm5lbCgqZGVzdCksIGFs
cGhhQ2hhbm5lbCgqZGVzdCkpOworICAgIH0KKworICAgIGJvb2wgaW5Cb3VuZHMoY29uc3QgSW50
UG9pbnQmIHBvaW50KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIEludFJlY3QoSW50UG9p
bnQoKSwgbV9zaXplKS5jb250YWlucyhwb2ludCk7CisgICAgfQorCisgICAgYm9vbCBpbkJvdW5k
cyhjb25zdCBJbnRSZWN0JiByZWN0KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIEludFJl
Y3QoSW50UG9pbnQoKSwgbV9zaXplKS5jb250YWlucyhyZWN0KTsKKyAgICB9CisKK3ByaXZhdGU6
CisgICAgVmVjdG9yPFJHQkEzMj4gbV9iYWNraW5nU3RvcmU7CisgICAgUkdCQTMyKiBtX3BpeGVs
cyB7IG51bGxwdHIgfTsKKyAgICBJbnRTaXplIG1fc2l6ZTsKKyAgICBJbnRSZWN0IG1fcmVjdDsg
Ly8gVGhpcyB3aWxsIGFsd2F5cyBqdXN0IGJlIHRoZSBlbnRpcmUgYnVmZmVyIGV4Y2VwdCBmb3Ig
R0lGIGFuZCBQTkcgZnJhbWVzCisgICAgYm9vbCBtX3ByZW11bHRpcGx5QWxwaGEgeyB0cnVlIH07
Cit9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9D
b2xvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHAKaW5k
ZXggNGUyNWFhNmZkNzRkMWU0NmM1NDE2MTQ5OGJjMTcyYmY2MDA4NzVkMS4uNDM5ZjVhNjNjN2Jl
YmU1NjA0MmIyNGU3ZDcyZWNjZWNmMzZjNDBjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0NvbG9yLmNwcApAQCAtNDksNiArNDksNDAgQEAgY29uc3QgUkdCQTMyIENvbG9y
Ojp0cmFuc3BhcmVudDsKIHN0YXRpYyBjb25zdCBSR0JBMzIgbGlnaHRlbmVkQmxhY2sgPSAweEZG
NTQ1NDU0Owogc3RhdGljIGNvbnN0IFJHQkEzMiBkYXJrZW5lZFdoaXRlID0gMHhGRkFCQUJBQjsK
IAorc3RhdGljIGlubGluZSB1bnNpZ25lZCBtdWx0aXBseTI1NSh1bnNpZ25lZCBjKQoreworICAg
IC8vIGMgKiAyNTUKKyAgICAvLyAgID0gYyAqICgyNTYgLSAxKQorICAgIC8vICAgPSBjICogMjU2
IC0gYworICAgIHJldHVybiAoYyA8PCA4KSAtIGM7Cit9CisKK3N0YXRpYyBpbmxpbmUgdW5zaWdu
ZWQgZGl2aWRlMjU1KHVuc2lnbmVkIGMpCit7CisgICAgLy8gYyAvIDI1NQorICAgIC8vICAgPSBj
IC8gMjU2ICogKDEgKyAxIC8gMjU1KQorICAgIC8vICAgPSAoYyArIGMgLyAyNTUpIC8gMjU2Cisg
ICAgLy8gICA9IChjICsgKGMgKyBjIC8gMjU1KSAvIDI1NikgLyAyNTYKKyAgICAvLyAgID0gKGMg
KyBjIC8gMjU2ICsgYyAvICgyNTUgeCAyNTYpKSAvIDI1NgorICAgIC8vICB+PSAoYyArIGMgLyAy
NTYgKyAxKSAvIDI1NgorICAgIHJldHVybiAoYyArIChjID4+IDgpICsgMSkgPj4gODsKK30KKyAg
ICAKK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgZGl2aWRlQ2VpbCh1bnNpZ25lZCBjLCB1bnNpZ25l
ZCBkKQoreworICAgIHJldHVybiAoYyArIGQgLSAxKSAvIGQ7Cit9CisgICAgCitzdGF0aWMgaW5s
aW5lIHVuc2lnbmVkIHByZW11bHRpcGxpZWRDaGFubmVsKHVuc2lnbmVkIGMsIHVuc2lnbmVkIGEp
Cit7CisgICAgcmV0dXJuIGRpdmlkZTI1NShjICogYSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdW5z
aWduZWQgdW5wcmVtdWx0aXBsaWVkQ2hhbm5lbCh1bnNpZ25lZCBjLCB1bnNpZ25lZCBhKQorewor
ICAgIHJldHVybiBkaXZpZGVDZWlsKG11bHRpcGx5MjU1KGMpLCBhKTsKK30KKyAgICAKIFJHQkEz
MiBtYWtlUkdCKGludCByLCBpbnQgZywgaW50IGIpCiB7CiAgICAgcmV0dXJuIDB4RkYwMDAwMDAg
fCBzdGQ6Om1heCgwLCBzdGQ6Om1pbihyLCAyNTUpKSA8PCAxNiB8IHN0ZDo6bWF4KDAsIHN0ZDo6
bWluKGcsIDI1NSkpIDw8IDggfCBzdGQ6Om1heCgwLCBzdGQ6Om1pbihiLCAyNTUpKTsKQEAgLTU5
LDYgKzkzLDE2IEBAIFJHQkEzMiBtYWtlUkdCQShpbnQgciwgaW50IGcsIGludCBiLCBpbnQgYSkK
ICAgICByZXR1cm4gc3RkOjptYXgoMCwgc3RkOjptaW4oYSwgMjU1KSkgPDwgMjQgfCBzdGQ6Om1h
eCgwLCBzdGQ6Om1pbihyLCAyNTUpKSA8PCAxNiB8IHN0ZDo6bWF4KDAsIHN0ZDo6bWluKGcsIDI1
NSkpIDw8IDggfCBzdGQ6Om1heCgwLCBzdGQ6Om1pbihiLCAyNTUpKTsKIH0KIAorUkdCQTMyIG1h
a2VQcmVtdWx0aXBsaWVkUkdCQShpbnQgciwgaW50IGcsIGludCBiLCBpbnQgYSkKK3sKKyAgICBy
ZXR1cm4gbWFrZVJHQkEocHJlbXVsdGlwbGllZENoYW5uZWwociwgYSksIHByZW11bHRpcGxpZWRD
aGFubmVsKGcsIGEpLCBwcmVtdWx0aXBsaWVkQ2hhbm5lbChiLCBhKSwgYSk7Cit9CisgICAgCitS
R0JBMzIgbWFrZVVuUHJlbXVsdGlwbGllZFJHQkEoaW50IHIsIGludCBnLCBpbnQgYiwgaW50IGEp
Cit7CisgICAgcmV0dXJuIG1ha2VSR0JBKHVucHJlbXVsdGlwbGllZENoYW5uZWwociwgYSksIHVu
cHJlbXVsdGlwbGllZENoYW5uZWwoZywgYSksIHVucHJlbXVsdGlwbGllZENoYW5uZWwoYiwgYSks
IGEpOworfQorICAgIAogc3RhdGljIGludCBjb2xvckZsb2F0VG9SR0JBQnl0ZShmbG9hdCBmKQog
ewogICAgIC8vIFdlIHVzZSBscm91bmRmIGFuZCAyNTUgaW5zdGVhZCBvZiBuZXh0YWZ0ZXJmKDI1
NiwgMCkgdG8gbWF0Y2ggQ0cncyByb3VuZGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0NvbG9yLmgKaW5kZXggZGQyNjI3MGJiNDY2MGIzM2FlMDcwZThjOTQ0NTIwZDcyODQ1NGI4
YS4uYTU0NTMyYzc3NTVhN2M4NzY5MzYyNDBjYWU0ZWMzN2E0ZGEwZDA0MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCkBAIC01NCw2ICs1NCw4IEBAIHR5cGVkZWYg
dW5zaWduZWQgUkdCQTMyOyAvLyBEZXByZWNhdGVkOiBUeXBlIGZvciBhbiBSR0JBIHF1YWRydXBs
ZXQuIFVzZSBSR0JBIGNsCiAKIFdFQkNPUkVfRVhQT1JUIFJHQkEzMiBtYWtlUkdCKGludCByLCBp
bnQgZywgaW50IGIpOwogV0VCQ09SRV9FWFBPUlQgUkdCQTMyIG1ha2VSR0JBKGludCByLCBpbnQg
ZywgaW50IGIsIGludCBhKTsKK1dFQkNPUkVfRVhQT1JUIFJHQkEzMiBtYWtlUHJlbXVsdGlwbGll
ZFJHQkEoaW50IHIsIGludCBnLCBpbnQgYiwgaW50IGEpOworV0VCQ09SRV9FWFBPUlQgUkdCQTMy
IG1ha2VVblByZW11bHRpcGxpZWRSR0JBKGludCByLCBpbnQgZywgaW50IGIsIGludCBhKTsKIAog
V0VCQ09SRV9FWFBPUlQgUkdCQTMyIGNvbG9yV2l0aE92ZXJyaWRlQWxwaGEoUkdCQTMyIGNvbG9y
LCBmbG9hdCBvdmVycmlkZUFscGhhKTsKIFdFQkNPUkVfRVhQT1JUIFJHQkEzMiBjb2xvcldpdGhP
dmVycmlkZUFscGhhKFJHQkEzMiBjb2xvciwgT3B0aW9uYWw8ZmxvYXQ+IG92ZXJyaWRlQWxwaGEp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKaW5kZXggN2EyOTk5MmY3
NzE4OGUwMzgyOGQ4MGE2NWI4YmUyY2Q4ZGMyZGU3Ni4uOGU3YjUyYjFmNGYzMWM3NGEzY2IyYTEz
MjE1ZGE3N2EyYjE4YzA3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZS5oCkBAIC0xMzcsOCArMTM3LDExIEBAIHB1YmxpYzoKIAogICAgIGVudW0gVGlsZVJ1bGUgeyBT
dHJldGNoVGlsZSwgUm91bmRUaWxlLCBTcGFjZVRpbGUsIFJlcGVhdFRpbGUgfTsKIAorICAgIHZp
cnR1YWwgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2UoKSB7IHJldHVybiBudWxscHRyOyB9Cisg
ICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZU9mU2l6ZShjb25zdCBJbnRTaXpl
JikgeyByZXR1cm4gbnVsbHB0cjsgfQogICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgbmF0aXZl
SW1hZ2VGb3JDdXJyZW50RnJhbWUoKSB7IHJldHVybiBudWxscHRyOyB9CiAgICAgdmlydHVhbCBJ
bWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uRm9yQ3VycmVudEZyYW1lKCkgeyByZXR1cm4gSW1h
Z2VPcmllbnRhdGlvbigpOyB9CisgICAgdmlydHVhbCBWZWN0b3I8TmF0aXZlSW1hZ2VQdHI+IGZy
YW1lc05hdGl2ZUltYWdlcygpIHsgcmV0dXJuIHsgfTsgfQogCiAgICAgLy8gQWNjZXNzb3JzIGZv
ciBuYXRpdmUgaW1hZ2UgZm9ybWF0cy4KIApAQCAtMTUwLDEyICsxNTMsNiBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBDRkRhdGFSZWYgZ2V0VElGRlJlcHJlc2VudGF0aW9uKCkgeyByZXR1cm4gbnVs
bHB0cjsgfQogI2VuZGlmCiAKLSNpZiBVU0UoQ0cpCi0gICAgdmlydHVhbCBDR0ltYWdlUmVmIGdl
dENHSW1hZ2VSZWYoKSB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgdmlydHVhbCBDR0ltYWdlUmVm
IGdldEZpcnN0Q0dJbWFnZVJlZk9mU2l6ZShjb25zdCBJbnRTaXplJikgeyByZXR1cm4gbnVsbHB0
cjsgfQotICAgIHZpcnR1YWwgUmV0YWluUHRyPENGQXJyYXlSZWY+IGdldENHSW1hZ2VBcnJheSgp
IHsgcmV0dXJuIG51bGxwdHI7IH0KLSNlbmRpZgotCiAjaWYgUExBVEZPUk0oV0lOKQogICAgIHZp
cnR1YWwgYm9vbCBnZXRIQklUTUFQKEhCSVRNQVApIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmly
dHVhbCBib29sIGdldEhCSVRNQVBPZlNpemUoSEJJVE1BUCwgY29uc3QgSW50U2l6ZSopIHsgcmV0
dXJuIGZhbHNlOyB9CkBAIC0xNzksNiArMTc2LDggQEAgcHVibGljOgogI2lmICFBU1NFUlRfRElT
QUJMRUQKICAgICB2aXJ0dWFsIGJvb2wgbm90U29saWRDb2xvcigpIHsgcmV0dXJuIHRydWU7IH0K
ICNlbmRpZgorICAgIAorICAgIHZpcnR1YWwgdm9pZCBsYXlvdXRJZk5lZWRlZCgpIHsgfQogCiAg
ICAgdmlydHVhbCB2b2lkIGR1bXAoVGV4dFN0cmVhbSYpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lRGF0YS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lRGF0YS5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZjM3NGY4ZGQxNWFmY2I4NTgyNWEzOTg3YzAyMzY5ZTU2ZWQ1YjFkMAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVEYXRhLmNw
cApAQCAtMCwwICsxLDEzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW1hZ2VGcmFtZURhdGEu
aCIKKworI2luY2x1ZGUgIkNvbG9yLmgiCisKKyNpZiBVU0UoQ0cpCisjaW5jbHVkZSAiSW1hZ2VE
ZWNvZGVyQ0cuaCIKKyNlbHNlCisjaW5jbHVkZSAiSW1hZ2VEZWNvZGVyLmgiCisjZW5kaWYKKwor
I2luY2x1ZGUgIlBsYXRmb3JtSW1hZ2UuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitJbWFn
ZUZyYW1lRGF0YTo6SW1hZ2VGcmFtZURhdGEoKQoreworfQorCitJbWFnZUZyYW1lRGF0YTo6SW1h
Z2VGcmFtZURhdGEoTmF0aXZlSW1hZ2VQdHImJiBpbWFnZSkKKyAgICA6IG1fc3RhdHVzKERlY29k
aW5nU3RhdHVzOjpDb21wbGV0ZSkKKyAgICAsIG1faW1hZ2UoV1RGTW92ZShpbWFnZSkpCit7Cisg
ICAgbV9zaXplID0gUGxhdGZvcm1JbWFnZShtX2ltYWdlKS5zaXplKCk7CisgICAgbV9oYXNBbHBo
YSA9IFBsYXRmb3JtSW1hZ2UobV9pbWFnZSkuaGFzQWxwaGEoKTsKK30KKworSW1hZ2VGcmFtZURh
dGE6OkltYWdlRnJhbWVEYXRhKEltYWdlRGVjb2RlciYgZGVjb2Rlciwgc2l6ZV90IGluZGV4LCBT
dWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwsIENhY2hpbmcgZnJhbWVDYWNoaW5nKQor
eworICAgIEFTU0VSVChmcmFtZUNhY2hpbmcgPT0gQ2FjaGluZzo6TWV0YWRhdGEgfHwgZnJhbWVD
YWNoaW5nID09IENhY2hpbmc6Ok1ldGFkYXRhQW5kSW1hZ2UpOworICAgIAorICAgIGlmIChmcmFt
ZUNhY2hpbmcgPT0gQ2FjaGluZzo6SW1hZ2UgfHwgZnJhbWVDYWNoaW5nID09IENhY2hpbmc6Ok1l
dGFkYXRhQW5kSW1hZ2UpIHsKKyAgICAgICAgbV9pbWFnZSA9IGRlY29kZXIuY3JlYXRlRnJhbWVJ
bWFnZUF0SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwpOworICAgICAgICBtX3N1YnNhbXBs
aW5nTGV2ZWwgPSBzdWJzYW1wbGluZ0xldmVsOworICAgIH0KKyAgICAKKyAgICBpZiAoZnJhbWVD
YWNoaW5nID09IENhY2hpbmc6Ok1ldGFkYXRhIHx8IGZyYW1lQ2FjaGluZyA9PSBDYWNoaW5nOjpN
ZXRhZGF0YUFuZEltYWdlKSB7CisgICAgICAgIG1fb3JpZW50YXRpb24gPSBkZWNvZGVyLm9yaWVu
dGF0aW9uQXRJbmRleChpbmRleCk7CisgICAgICAgIG1fc3RhdHVzID0gZGVjb2Rlci5mcmFtZUlz
Q29tcGxldGVBdEluZGV4KGluZGV4KSA/IERlY29kaW5nU3RhdHVzOjpDb21wbGV0ZSA6IERlY29k
aW5nU3RhdHVzOjpQYXJ0aWFsOworICAgICAgICAKKyAgICAgICAgaWYgKGRlY29kZXIucmVwZXRp
dGlvbkNvdW50KCkgIT0gY0FuaW1hdGlvbk5vbmUpCisgICAgICAgICAgICBtX2R1cmF0aW9uID0g
ZGVjb2Rlci5mcmFtZUR1cmF0aW9uQXRJbmRleChpbmRleCk7CisgICAgICAgIAorICAgICAgICBt
X2hhc0FscGhhID0gZGVjb2Rlci5mcmFtZUhhc0FscGhhQXRJbmRleChpbmRleCk7CisgICAgICAg
IG1fc2l6ZSA9IGRlY29kZXIuZnJhbWVTaXplQXRJbmRleChpbmRleCwgc3Vic2FtcGxpbmdMZXZl
bCk7CisgICAgfQorfQorICAgIAorSW1hZ2VGcmFtZURhdGE6On5JbWFnZUZyYW1lRGF0YSgpCit7
CisgICAgY2xlYXJTdWJJbWFnZXMoKTsKK30KKyAgICAKK0ltYWdlRnJhbWVEYXRhJiBJbWFnZUZy
YW1lRGF0YTo6b3BlcmF0b3I9KGNvbnN0IEltYWdlRnJhbWVEYXRhJiBvdGhlcikKK3sKKyAgICBp
ZiAodGhpcyA9PSAmb3RoZXIpCisgICAgICAgIHJldHVybiAqdGhpczsKKworICAgIG1fc3RhdHVz
ID0gb3RoZXIubV9zdGF0dXM7CisgICAgbV9zaXplID0gb3RoZXIubV9zaXplOworICAgIG1faW1h
Z2UgPSBvdGhlci5tX2ltYWdlOworICAgIAorICAgIG1fcGl4ZWxzID0gb3RoZXIucGl4ZWxzKCkg
PyBCaXRtYXBQaXhlbHM6OmNyZWF0ZSgqb3RoZXIucGl4ZWxzKCkpIDogbnVsbHB0cjsKKyAgICAK
KyAgICBtX29yaWVudGF0aW9uID0gb3RoZXIubV9vcmllbnRhdGlvbjsKKyAgICBtX3N1YnNhbXBs
aW5nTGV2ZWwgPSBvdGhlci5tX3N1YnNhbXBsaW5nTGV2ZWw7CisgICAgbV9kdXJhdGlvbiA9IG90
aGVyLm1fZHVyYXRpb247CisgICAgbV9oYXNBbHBoYSA9IG90aGVyLm1faGFzQWxwaGE7CisgICAg
cmV0dXJuICp0aGlzOworfQorCit2b2lkIEltYWdlRnJhbWVEYXRhOjpjbGVhclN1YkltYWdlcygp
Cit7CisgICAgaWYgKCFtX2ltYWdlKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgUGxhdGZv
cm1JbWFnZShtX2ltYWdlKS5jbGVhclN1YkltYWdlcygpOworfQorCit1bnNpZ25lZCBJbWFnZUZy
YW1lRGF0YTo6Y2xlYXIoQ2FjaGluZyBmcmFtZUNhY2hpbmcpCit7CisgICAgQVNTRVJUKGZyYW1l
Q2FjaGluZyA9PSBDYWNoaW5nOjpFbXB0eSB8fCBmcmFtZUNhY2hpbmcgPT0gQ2FjaGluZzo6TWV0
YWRhdGEpOworICAgIAorICAgIHVuc2lnbmVkIGZyYW1lQnl0ZXMgPSB0aGlzLT5mcmFtZUJ5dGVz
KCk7CisgICAgCisgICAgY2xlYXJTdWJJbWFnZXMoKTsKKyAgICAKKyAgICBpZiAoZnJhbWVDYWNo
aW5nID09IENhY2hpbmc6OkVtcHR5KQorICAgICAgICAqdGhpcyA9IEltYWdlRnJhbWVEYXRhKCk7
CisgICAgZWxzZQorICAgICAgICBtX2ltYWdlID0gbnVsbHB0cjsKKyAgICAKKyAgICByZXR1cm4g
ZnJhbWVCeXRlczsKK30KKworQ29sb3IgSW1hZ2VGcmFtZURhdGE6OnNpbmdsZVBpeGVsU29saWRD
b2xvcigpIGNvbnN0Cit7CisgICAgaWYgKCFoYXNJbWFnZSgpIHx8IG1fc2l6ZSAhPSBJbnRTaXpl
KDEsIDEpKQorICAgICAgICByZXR1cm4gQ29sb3IoKTsKKyAgICAKKyAgICByZXR1cm4gUGxhdGZv
cm1JbWFnZShtX2ltYWdlKS5zaW5nbGVQaXhlbFNvbGlkQ29sb3IoKTsKK30KKworYm9vbCBJbWFn
ZUZyYW1lRGF0YTo6aXNBbG1vc3RTb2xpZENvbG9yKCkgY29uc3QKK3sKKyAgICBpZiAoIWhhc0lt
YWdlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICByZXR1cm4gUGxhdGZvcm1J
bWFnZShtX2ltYWdlKS5pc0FsbW9zdFNvbGlkQ29sb3IoKTsKK30KKyAgICAKK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVEYXRhLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lRGF0YS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmY2ZmI3NThlZjNhNDI1OGNiZGIzYWUyZjQ2ZTg0NDBmNzMwZWY0N2MKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lRGF0YS5o
CkBAIC0wLDAgKzEsMTAxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQml0bWFwUGl4ZWxzLmgiCisjaW5j
bHVkZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgorI2luY2x1ZGUgIkludFNpemUuaCIKKyNpbmNsdWRl
ICJOYXRpdmVJbWFnZVB0ci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENvbG9y
OworY2xhc3MgSW1hZ2VEZWNvZGVyOworCisvLyBTdWJzYW1wbGluZ0xldmVsLiAwIGlzIG5vIHN1
YnNhbXBsaW5nLCAxIGlzIGhhbGYgZGltZW5zaW9ucyBvbiBlYWNoIGF4aXMgZXRjLgordXNpbmcg
U3Vic2FtcGxpbmdMZXZlbCA9IHVpbnQ4X3Q7CisKK2VudW0gOiBTdWJzYW1wbGluZ0xldmVsIHsK
KyAgICBNaW5TdWJzYW1wbGluZ0xldmVsID0gMCwKKyAgICBNYXhTdWJzYW1wbGluZ0xldmVsID0g
MywKKyAgICBEZWZhdWx0U3Vic2FtcGxpbmdMZXZlbCA9IE1pblN1YnNhbXBsaW5nTGV2ZWwKK307
CisKK2NsYXNzIEltYWdlRnJhbWVEYXRhIHsKKyAgICBmcmllbmQgY2xhc3MgSW1hZ2VEZWNvZGVy
OworcHVibGljOgorICAgIGVudW0gY2xhc3MgQ2FjaGluZyB7IEVtcHR5LCBNZXRhZGF0YSwgSW1h
Z2UsIE1ldGFkYXRhQW5kSW1hZ2UgfTsKKyAgICBlbnVtIGNsYXNzIERlY29kaW5nU3RhdHVzIHsg
RW1wdHksIFBhcnRpYWwsIENvbXBsZXRlIH07CisgICAgCisgICAgSW1hZ2VGcmFtZURhdGEoKTsK
KyAgICBJbWFnZUZyYW1lRGF0YShOYXRpdmVJbWFnZVB0ciYmKTsKKyAgICBJbWFnZUZyYW1lRGF0
YShJbWFnZURlY29kZXImLCBzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgPSBEZWZhdWx0
U3Vic2FtcGxpbmdMZXZlbCwgQ2FjaGluZyA9IENhY2hpbmc6Ok1ldGFkYXRhQW5kSW1hZ2UpOwor
ICAgIEltYWdlRnJhbWVEYXRhKGNvbnN0IEltYWdlRnJhbWVEYXRhJiBvdGhlcikgeyBvcGVyYXRv
cj0ob3RoZXIpOyB9CisKKyAgICB+SW1hZ2VGcmFtZURhdGEoKTsKKworICAgIEltYWdlRnJhbWVE
YXRhJiBvcGVyYXRvcj0oY29uc3QgSW1hZ2VGcmFtZURhdGEmIG90aGVyKTsKKyAgICAKKyAgICB1
bnNpZ25lZCBjbGVhcihDYWNoaW5nKTsKKyAgICBDb2xvciBzaW5nbGVQaXhlbFNvbGlkQ29sb3Io
KSBjb25zdDsKKyAgICBib29sIGlzQWxtb3N0U29saWRDb2xvcigpIGNvbnN0OworICAgIAorICAg
IERlY29kaW5nU3RhdHVzIHN0YXR1cygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdHVzOyB9CisgICAg
Ym9vbCBpc0NvbXBsZXRlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0dXMgPT0gRGVjb2RpbmdTdGF0
dXM6OkNvbXBsZXRlOyB9CisgICAgSW50U2l6ZSBzaXplKCkgY29uc3QgeyByZXR1cm4gaGFzUGl4
ZWxzKCkgPyBwaXhlbHMoKS0+c2l6ZSgpIDogbV9zaXplOyB9CisgICAgdW5zaWduZWQgZnJhbWVC
eXRlcygpIGNvbnN0IHsgcmV0dXJuIGhhc0ltYWdlKCkgPyBtX3NpemUuYXJlYSgpICogc2l6ZW9m
KFJHQkEzMikgOiAwOyB9CisgICAgTmF0aXZlSW1hZ2VQdHIgaW1hZ2UoKSBjb25zdCB7IHJldHVy
biBtX2ltYWdlOyB9CisgICAgQml0bWFwUGl4ZWxzKiBwaXhlbHMoKSBjb25zdCB7IHJldHVybiBt
X3BpeGVscyA/IG1fcGl4ZWxzLmdldCgpIDogbnVsbHB0cjsgfQorICAgIAorICAgIEltYWdlT3Jp
ZW50YXRpb24gb3JpZW50YXRpb24oKSBjb25zdCB7IHJldHVybiBtX29yaWVudGF0aW9uOyB9Cisg
ICAgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsKCkgY29uc3QgeyByZXR1cm4gbV9z
dWJzYW1wbGluZ0xldmVsOyB9CisgICAgZmxvYXQgZHVyYXRpb24oKSBjb25zdCB7IHJldHVybiBt
X2R1cmF0aW9uOyB9CisgICAgCisgICAgYm9vbCBoYXNBbHBoYSgpIGNvbnN0IHsgcmV0dXJuIG1f
aGFzQWxwaGE7IH0KKyAgICBib29sIGhhc0ltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZTsg
fQorICAgIGJvb2wgaGFzTWV0YWRhdGEoKSBjb25zdCB7IHJldHVybiAhbV9zaXplLmlzRW1wdHko
KTsgfQorICAgIGJvb2wgaGFzUGl4ZWxzKCkgY29uc3QgeyByZXR1cm4gcGl4ZWxzKCk7IH0KKyAg
ICAKK3ByaXZhdGU6CisgICAgdm9pZCBjbGVhclN1YkltYWdlcygpOworCisgICAgdm9pZCBzZXRT
dGF0dXMoRGVjb2RpbmdTdGF0dXMgc3RhdHVzKSB7IG1fc3RhdHVzID0gc3RhdHVzOyB9CisgICAg
dm9pZCBzZXRPcmllbnRhdGlvbihJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKSB7IG1fb3Jp
ZW50YXRpb24gPSBvcmllbnRhdGlvbjsgfTsKKyAgICB2b2lkIHNldER1cmF0aW9uKHVuc2lnbmVk
IGR1cmF0aW9uKSB7IG1fZHVyYXRpb24gPSBkdXJhdGlvbjsgfQorICAgIHZvaWQgc2V0SGFzQWxw
aGEoYm9vbCBoYXNBbHBoYSkgeyBtX2hhc0FscGhhID0gaGFzQWxwaGE7IH0KKyAgICAKKyAgICBE
ZWNvZGluZ1N0YXR1cyBtX3N0YXR1cyB7IERlY29kaW5nU3RhdHVzOjpFbXB0eSB9OworICAgIElu
dFNpemUgbV9zaXplOworICAgIE5hdGl2ZUltYWdlUHRyIG1faW1hZ2U7CisgICAgc3RkOjp1bmlx
dWVfcHRyPEJpdG1hcFBpeGVscz4gbV9waXhlbHM7CisgICAgCisgICAgSW1hZ2VPcmllbnRhdGlv
biBtX29yaWVudGF0aW9uIHsgRGVmYXVsdEltYWdlT3JpZW50YXRpb24gfTsKKyAgICBTdWJzYW1w
bGluZ0xldmVsIG1fc3Vic2FtcGxpbmdMZXZlbCB7IDAgfTsKKyAgICBmbG9hdCBtX2R1cmF0aW9u
IHsgMCB9OworICAgIGJvb2wgbV9oYXNBbHBoYSB7IHRydWUgfTsKK307CisgICAgCit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKaW5kZXgg
ZGRkOGE1NWJhMDkwNmM1ODY2YTE5MmNmOGU0MTRlYTcwN2I3MjhhYy4uODJmNmUyZDZlNDU0MzNk
YTFhN2Q1NmIzNzBkZmE2MWE0YzQxOTEzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcApAQCAtMjI0LDYgKzIyNCwxMSBAQCBOYXRpdmVJ
bWFnZVB0ciBJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4
LCBTdWJzYW1wbGluZ0xldgogICAgIHJldHVybiBpbml0aWFsaXplZCgpID8gbV9kZWNvZGVyLT5j
cmVhdGVGcmFtZUltYWdlQXRJbmRleChpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCkgOiBudWxscHRy
OwogfQogCitJbWFnZUZyYW1lRGF0YSBJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVEYXRhQXRJbmRl
eChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgSW1hZ2VG
cmFtZURhdGE6OkNhY2hpbmcgY2FjaGluZykKK3sKKyAgICByZXR1cm4gaW5pdGlhbGl6ZWQoKSA/
IEltYWdlRnJhbWVEYXRhKCptX2RlY29kZXIsIGluZGV4LCBzdWJzYW1wbGluZ0xldmVsLCBjYWNo
aW5nKSA6IEltYWdlRnJhbWVEYXRhKCk7Cit9CisgICAgCiB2b2lkIEltYWdlU291cmNlOjpkdW1w
KFRleHRTdHJlYW0mIHRzKSBjb25zdAogewogICAgIGlmIChtX2FsbG93U3Vic2FtcGxpbmcpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaAppbmRleCA2
MDM1NzM5YjdlOGIwOTZkYzhkZmU5YzUzMGE0MmM2ZjI5MWJkYTAwLi5hNDBjN2NlOTMwN2NkYWRm
MDc5YWI3MDFhODI3OTliNjkwNTI5ZDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlU291cmNlLmgKQEAgLTI3LDYgKzI3LDcgQEAKICNpZm5kZWYgSW1hZ2VT
b3VyY2VfaAogI2RlZmluZSBJbWFnZVNvdXJjZV9oCiAKKyNpbmNsdWRlICJJbWFnZUZyYW1lRGF0
YS5oIgogI2luY2x1ZGUgIkltYWdlT3JpZW50YXRpb24uaCIKICNpbmNsdWRlICJJbnRQb2ludC5o
IgogI2luY2x1ZGUgIk5hdGl2ZUltYWdlUHRyLmgiCkBAIC02Myw5ICs2NCw2IEBAIGNvbnN0IGlu
dCBjQW5pbWF0aW9uTG9vcE9uY2UgPSAwOwogY29uc3QgaW50IGNBbmltYXRpb25Mb29wSW5maW5p
dGUgPSAtMTsKIGNvbnN0IGludCBjQW5pbWF0aW9uTm9uZSA9IC0yOwogCi0vLyBTdWJzYW1wbGlu
Z0xldmVsLiAwIGlzIG5vIHN1YnNhbXBsaW5nLCAxIGlzIGhhbGYgZGltZW5zaW9ucyBvbiBlYWNo
IGF4aXMgZXRjLgotdHlwZWRlZiBzaG9ydCBTdWJzYW1wbGluZ0xldmVsOwotCiBjbGFzcyBJbWFn
ZVNvdXJjZSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW1hZ2VTb3VyY2UpOwogICAgIGZy
aWVuZCBjbGFzcyBCaXRtYXBJbWFnZTsKQEAgLTEzMiwxOCArMTMwLDE5IEBAIHB1YmxpYzoKICAg
ICBib29sIGFsbG93U3Vic2FtcGxpbmdPZkZyYW1lQXRJbmRleChzaXplX3QpIGNvbnN0OwogICAg
IAogICAgIC8vIFNpemUgb2Ygb3B0aW9uYWxseSBzdWJzYW1wbGVkIGZyYW1lLgotICAgIEludFNp
emUgZnJhbWVTaXplQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSAwLCBSZXNwZWN0
SW1hZ2VPcmllbnRhdGlvbkVudW0gPSBEb05vdFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKSBjb25z
dDsKKyAgICBJbnRTaXplIGZyYW1lU2l6ZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVs
ID0gRGVmYXVsdFN1YnNhbXBsaW5nTGV2ZWwsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSA9
IERvTm90UmVzcGVjdEltYWdlT3JpZW50YXRpb24pIGNvbnN0OwogICAgIAogICAgIC8vIFJldHVy
biB0aGUgbnVtYmVyIG9mIGJ5dGVzIGluIHRoZSBkZWNvZGVkIGZyYW1lLiBJZiB0aGUgZnJhbWUg
aXMgbm90IHlldAogICAgIC8vIGRlY29kZWQgdGhlbiByZXR1cm4gMC4KLSAgICB1bnNpZ25lZCBm
cmFtZUJ5dGVzQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSAwKSBjb25zdDsKKyAg
ICB1bnNpZ25lZCBmcmFtZUJ5dGVzQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBE
ZWZhdWx0U3Vic2FtcGxpbmdMZXZlbCkgY29uc3Q7CiAgICAgCiAgICAgZmxvYXQgZnJhbWVEdXJh
dGlvbkF0SW5kZXgoc2l6ZV90KTsKICAgICBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uQXRJ
bmRleChzaXplX3QpIGNvbnN0OyAvLyBFWElGIGltYWdlIG9yaWVudGF0aW9uCiAgICAgCiAgICAg
Ly8gQ2FsbGVycyBzaG91bGQgbm90IGNhbGwgdGhpcyBhZnRlciBjYWxsaW5nIGNsZWFyKCkgd2l0
aCBhIGhpZ2hlciBpbmRleDsKICAgICAvLyBzZWUgY29tbWVudHMgb24gY2xlYXIoKSBhYm92ZS4K
LSAgICBOYXRpdmVJbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNh
bXBsaW5nTGV2ZWwgPSAwKTsKKyAgICBOYXRpdmVJbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJ
bmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBEZWZhdWx0U3Vic2FtcGxpbmdMZXZlbCk7
CisgICAgSW1hZ2VGcmFtZURhdGEgY3JlYXRlRnJhbWVEYXRhQXRJbmRleChzaXplX3QsIFN1YnNh
bXBsaW5nTGV2ZWwgPSBEZWZhdWx0U3Vic2FtcGxpbmdMZXZlbCwgSW1hZ2VGcmFtZURhdGE6OkNh
Y2hpbmcgPSBJbWFnZUZyYW1lRGF0YTo6Q2FjaGluZzo6TWV0YWRhdGFBbmRJbWFnZSk7CiAgICAg
CiBwcml2YXRlOgogICAgIHZvaWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVfdCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUltYWdlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUltYWdlLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYWI3YWVhNDg5ZjNlYjJhODI4NzcxYzIxMDNlOGQ0ZDBiZTE3YmU1ZAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2Uu
aApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiR3JhcGhpY3NUeXBlcy5oIgorI2lu
Y2x1ZGUgIkltYWdlT3JpZW50YXRpb24uaCIKKyNpbmNsdWRlICJOYXRpdmVJbWFnZVB0ci5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENvbG9yOworY2xhc3MgRmxvYXRSZWN0Owor
Y2xhc3MgSW50U2l6ZTsKK2NsYXNzIEdyYXBoaWNzQ29udGV4dDsKKworY2xhc3MgUGxhdGZvcm1J
bWFnZSB7CitwdWJsaWM6CisgICAgUGxhdGZvcm1JbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYg
aW1hZ2UpCisgICAgICAgIDogbV9pbWFnZShpbWFnZSkKKyAgICB7CisgICAgfQorCisgICAgYm9v
bCBpc05pbCgpIGNvbnN0IHsgcmV0dXJuICFtX2ltYWdlOyB9CisgICAgdm9pZCBjbGVhclN1Yklt
YWdlcygpOworCisgICAgSW50U2l6ZSBzaXplKCkgY29uc3Q7CisgICAgYm9vbCBoYXNBbHBoYSgp
IGNvbnN0OworICAgIENvbG9yIHNpbmdsZVBpeGVsU29saWRDb2xvcigpIGNvbnN0OworICAgIGJv
b2wgaXNBbG1vc3RTb2xpZENvbG9yKCkgY29uc3Q7CisgICAgdm9pZCBkcmF3KEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwg
Y29uc3QgSW1hZ2VPcmllbnRhdGlvbiYpIGNvbnN0OworCisgICAgc3RhdGljIGZsb2F0IHN1YnNh
bXBsaW5nU2NhbGUoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0KTsKKworcHJpdmF0ZToKKyNpZiBVU0UoQ0cpCisgICAg
Q0dJbWFnZVJlZiBjZ0ltYWdlUmVmKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZSA/IG1faW1hZ2Uu
Z2V0KCkgOiBudWxscHRyOyB9CisjZW5kaWYKKyAgICBOYXRpdmVJbWFnZVB0ciBtX2ltYWdlOwor
fTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCmluZGV4IGY0YzE0NTdiYmIyNTU3NTRm
MDBhMDYyNWVlODNlMDRkYTdjNmVmY2YuLmQ1MjBmNWQ1ODVhYzYwZGJhZWUyNTVlMWI4M2MyNGRj
Njg3MjEwYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KQEAgLTIxMiw3ICsyMTIsNyBA
QCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dXBkYXRlRGlzcGxh
eU1vZGUoKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICB9
CiAKLSAgICAgICAgICAgICAgICBtX3BhdXNlZEltYWdlID0gaW1hZ2UtPmdldENHSW1hZ2VSZWYo
KTsKKyAgICAgICAgICAgICAgICBtX3BhdXNlZEltYWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9y
Q3VycmVudEZyYW1lKCk7CiAgICAgICAgICAgICAgICAgaWYgKCFtX3BhdXNlZEltYWdlKSB7CiAg
ICAgICAgICAgICAgICAgICAgIG1fZGlzcGxheU1vZGUgPSBQYWludEl0QmxhY2s7CiAgICAgICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMTc3MjJiZWM1M2FiOGEwOGE4ZGE4NTI4YjllMGQ3YzRkMGNkNDEz
NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcAorKysg
L2Rldi9udWxsCkBAIC0xLDE0MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAy
MDA1LCAyMDA2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDcgQWxwIFRva2VyIDxhbHBAYXRva2VyLmNvbT4KLSAqIENvcHlyaWdodCAoQykgMjAw
OSBEaXJrIFNjaHVsemUgPGtyaXRAd2Via2l0Lm9yZz4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkJpdG1h
cEltYWdlLmgiCi0KLSNpZiBVU0UoQ0FJUk8pCi0KLSNpbmNsdWRlICJDYWlyb1V0aWxpdGllcy5o
IgotI2luY2x1ZGUgIkltYWdlT2JzZXJ2ZXIuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybUNvbnRleHRD
YWlyby5oIgotI2luY2x1ZGUgIlRpbWVyLmgiCi0jaW5jbHVkZSA8Y2Fpcm8uaD4KLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgTmF0aXZlSW1hZ2UgewotCi1JbnRTaXplIHNpemUo
Y29uc3QgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4mIGltYWdlKQotewotICAgIHJldHVybiBjYWly
b1N1cmZhY2VTaXplKGltYWdlLmdldCgpKTsKLX0KLQotYm9vbCBoYXNBbHBoYShjb25zdCBSZWZQ
dHI8Y2Fpcm9fc3VyZmFjZV90PiYgaW1hZ2UpCi17Ci0gICAgcmV0dXJuIGNhaXJvX3N1cmZhY2Vf
Z2V0X2NvbnRlbnQoaW1hZ2UuZ2V0KCkpICE9IENBSVJPX0NPTlRFTlRfQ09MT1I7Ci19Ci0KLUNv
bG9yIHNpbmdsZVBpeGVsU29saWRDb2xvcihjb25zdCBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiYg
aW1hZ2UpCi17Ci0gICAgQVNTRVJUKGltYWdlKTsKLSAgICAKLSAgICBpZiAoTmF0aXZlSW1hZ2U6
OnNpemUoaW1hZ2UpICE9IEludFNpemUoMSwgMSkpCi0gICAgICAgIHJldHVybiBDb2xvcigpOwot
Ci0gICAgaWYgKGNhaXJvX3N1cmZhY2VfZ2V0X3R5cGUoaW1hZ2UuZ2V0KCkpICE9IENBSVJPX1NV
UkZBQ0VfVFlQRV9JTUFHRSkKLSAgICAgICAgcmV0dXJuIENvbG9yKCk7Ci0KLSAgICBSR0JBMzIq
IHBpeGVsID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8UkdCQTMyKj4oY2Fpcm9faW1hZ2Vfc3VyZmFj
ZV9nZXRfZGF0YShpbWFnZS5nZXQoKSkpOwotICAgIHJldHVybiBjb2xvckZyb21QcmVtdWx0aXBs
aWVkQVJHQigqcGl4ZWwpOwotfQotCi19Ci0KLXZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmMsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLAotICAgIEJsZW5kTW9kZSBibGVuZE1vZGUsIElt
YWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiBkZXNjcmlwdGlvbikKLXsKLSAgICBpZiAoIWRzdC53
aWR0aCgpIHx8ICFkc3QuaGVpZ2h0KCkgfHwgIXNyYy53aWR0aCgpIHx8ICFzcmMuaGVpZ2h0KCkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIHN0YXJ0QW5pbWF0aW9uKCk7Ci0KLSAgICBhdXRvIHN1
cmZhY2UgPSBmcmFtZUltYWdlQXRJbmRleChtX2N1cnJlbnRGcmFtZSk7Ci0gICAgaWYgKCFzdXJm
YWNlKSAvLyBJZiBpdCdzIHRvbyBlYXJseSB3ZSB3b24ndCBoYXZlIGFuIGltYWdlIHlldC4KLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgQ29sb3IgY29sb3IgPSBzaW5nbGVQaXhlbFNvbGlkQ29sb3Io
KTsKLSAgICBpZiAoY29sb3IuaXNWYWxpZCgpKSB7Ci0gICAgICAgIGZpbGxXaXRoU29saWRDb2xv
cihjb250ZXh0LCBkc3QsIGNvbG9yLCBvcCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBjb250ZXh0LnNhdmUoKTsKLQotICAgIC8vIFNldCB0aGUgY29tcG9zaXRpbmcgb3BlcmF0aW9u
LgotICAgIGlmIChvcCA9PSBDb21wb3NpdGVTb3VyY2VPdmVyICYmIGJsZW5kTW9kZSA9PSBCbGVu
ZE1vZGVOb3JtYWwgJiYgIWZyYW1lSGFzQWxwaGFBdEluZGV4KG1fY3VycmVudEZyYW1lKSkKLSAg
ICAgICAgY29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlQ29weSk7Ci0gICAg
ZWxzZQotICAgICAgICBjb250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihvcCwgYmxlbmRNb2Rl
KTsKLQotI2lmIEVOQUJMRShJTUFHRV9ERUNPREVSX0RPV05fU0FNUExJTkcpCi0gICAgSW50U2l6
ZSBzY2FsZWRTaXplID0gY2Fpcm9TdXJmYWNlU2l6ZShzdXJmYWNlLmdldCgpKTsKLSAgICBGbG9h
dFJlY3QgYWRqdXN0ZWRTcmNSZWN0ID0gYWRqdXN0U291cmNlUmVjdEZvckRvd25TYW1wbGluZyhz
cmMsIHNjYWxlZFNpemUpOwotI2Vsc2UKLSAgICBGbG9hdFJlY3QgYWRqdXN0ZWRTcmNSZWN0KHNy
Yyk7Ci0jZW5kaWYKLQotICAgIEltYWdlT3JpZW50YXRpb24gZnJhbWVPcmllbnRhdGlvbihkZXNj
cmlwdGlvbi5pbWFnZU9yaWVudGF0aW9uKCkpOwotICAgIGlmIChkZXNjcmlwdGlvbi5yZXNwZWN0
SW1hZ2VPcmllbnRhdGlvbigpID09IFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKQotICAgICAgICBm
cmFtZU9yaWVudGF0aW9uID0gZnJhbWVPcmllbnRhdGlvbkF0SW5kZXgobV9jdXJyZW50RnJhbWUp
OwotCi0gICAgRmxvYXRSZWN0IGRzdFJlY3QgPSBkc3Q7Ci0KLSAgICBpZiAoZnJhbWVPcmllbnRh
dGlvbiAhPSBEZWZhdWx0SW1hZ2VPcmllbnRhdGlvbikgewotICAgICAgICAvLyBJbWFnZU9yaWVu
dGF0aW9uIGV4cGVjdHMgdGhlIG9yaWdpbiB0byBiZSBhdCAoMCwgMCkuCi0gICAgICAgIGNvbnRl
eHQudHJhbnNsYXRlKGRzdFJlY3QueCgpLCBkc3RSZWN0LnkoKSk7Ci0gICAgICAgIGRzdFJlY3Qu
c2V0TG9jYXRpb24oRmxvYXRQb2ludCgpKTsKLSAgICAgICAgY29udGV4dC5jb25jYXRDVE0oZnJh
bWVPcmllbnRhdGlvbi50cmFuc2Zvcm1Gcm9tRGVmYXVsdChkc3RSZWN0LnNpemUoKSkpOwotICAg
ICAgICBpZiAoZnJhbWVPcmllbnRhdGlvbi51c2VzV2lkdGhBc0hlaWdodCgpKSB7Ci0gICAgICAg
ICAgICAvLyBUaGUgZGVzdGluYXRpb24gcmVjdGFuZ2xlIHdpbGwgaGF2ZSBpdCdzIHdpZHRoIGFu
ZCBoZWlnaHQgYWxyZWFkeSByZXZlcnNlZCBmb3IgdGhlIG9yaWVudGF0aW9uIG9mCi0gICAgICAg
ICAgICAvLyB0aGUgaW1hZ2UsIGFzIGl0IHdhcyBuZWVkZWQgZm9yIHBhZ2UgbGF5b3V0LCBzbyB3
ZSBuZWVkIHRvIHJldmVyc2UgaXQgYmFjayBoZXJlLgotICAgICAgICAgICAgZHN0UmVjdCA9IEZs
b2F0UmVjdChkc3RSZWN0LngoKSwgZHN0UmVjdC55KCksIGRzdFJlY3QuaGVpZ2h0KCksIGRzdFJl
Y3Qud2lkdGgoKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBjb250ZXh0LnBsYXRmb3JtQ29u
dGV4dCgpLT5kcmF3U3VyZmFjZVRvQ29udGV4dChzdXJmYWNlLmdldCgpLCBkc3RSZWN0LCBhZGp1
c3RlZFNyY1JlY3QsIGNvbnRleHQpOwotCi0gICAgY29udGV4dC5yZXN0b3JlKCk7Ci0KLSAgICBp
ZiAoaW1hZ2VPYnNlcnZlcigpKQotICAgICAgICBpbWFnZU9ic2VydmVyKCktPmRpZERyYXcodGhp
cyk7Ci19Ci0KLWJvb2wgRnJhbWVEYXRhOjpjbGVhcihib29sIGNsZWFyTWV0YWRhdGEpCi17Ci0g
ICAgaWYgKGNsZWFyTWV0YWRhdGEpCi0gICAgICAgIG1faGF2ZU1ldGFkYXRhID0gZmFsc2U7Ci0K
LSAgICBpZiAobV9pbWFnZSkgewotICAgICAgICBtX2ltYWdlID0gbnVsbHB0cjsKLSAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gVVNFKENBSVJPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1JbWFnZUNhaXJvLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtSW1hZ2VDYWlyby5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNzBhZGFlYzI3MGUzMWIwNTRhZmM1ZjY2ZDQ4Mjg4YWViZjA2MWUzYQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L1BsYXRmb3JtSW1hZ2VDYWlyby5jcHAKQEAgLTAsMCArMSwxMTEgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIlBsYXRmb3JtSW1hZ2UuaCIKKworI2lmIFVTRShDQUlSTykKKworI2luY2x1ZGUgIkNh
aXJvVXRpbGl0aWVzLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0Q2Fpcm8uaCIKKyNpbmNs
dWRlIDxjYWlyby5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgUGxhdGZvcm1JbWFn
ZTo6Y2xlYXJTdWJJbWFnZXMoKQoreworfQorCitJbnRTaXplIFBsYXRmb3JtSW1hZ2U6OnNpemUo
KSBjb25zdAoreworICAgIHJldHVybiBpc05pbCgpID8gSW50U2l6ZSgpIDogY2Fpcm9TdXJmYWNl
U2l6ZShtX2ltYWdlLmdldCgpKTsKK30KKworYm9vbCBQbGF0Zm9ybUltYWdlOjpoYXNBbHBoYSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIGlzTmlsKCkgfHwgY2Fpcm9fc3VyZmFjZV9nZXRfY29udGVu
dChtX2ltYWdlLmdldCgpKSAhPSBDQUlST19DT05URU5UX0NPTE9SOworfQorCitDb2xvciBQbGF0
Zm9ybUltYWdlOjpzaW5nbGVQaXhlbFNvbGlkQ29sb3IoKSBjb25zdAoreworICAgIGlmIChpc05p
bCgpIHx8IHNpemUoKSAhPSBJbnRTaXplKDEsIDEpKQorICAgICAgICByZXR1cm4gQ29sb3IoKTsK
KworICAgIGlmIChjYWlyb19zdXJmYWNlX2dldF90eXBlKG1faW1hZ2UuZ2V0KCkpICE9IENBSVJP
X1NVUkZBQ0VfVFlQRV9JTUFHRSkKKyAgICAgICAgcmV0dXJuIENvbG9yKCk7CisKKyAgICBSR0JB
MzIqIHBpeGVsID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8UkdCQTMyKj4oY2Fpcm9faW1hZ2Vfc3Vy
ZmFjZV9nZXRfZGF0YShtX2ltYWdlLmdldCgpKSk7CisgICAgcmV0dXJuIGNvbG9yRnJvbVByZW11
bHRpcGxpZWRBUkdCKCpwaXhlbCk7Cit9CisKK2Jvb2wgUGxhdGZvcm1JbWFnZTo6aXNBbG1vc3RT
b2xpZENvbG9yKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Zsb2F0IFBsYXRm
b3JtSW1hZ2U6OnN1YnNhbXBsaW5nU2NhbGUoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRS
ZWN0JiwgY29uc3QgRmxvYXRSZWN0JikKK3sKKyAgICByZXR1cm4gMTsKK30KKwordm9pZCBQbGF0
Zm9ybUltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRTaXplJiwgQ29t
cG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBtb2RlLCBjb25zdCBJbWFnZU9yaWVudGF0aW9u
JiBvcmllbnRhdGlvbikgY29uc3QKK3sKKyAgICBjb250ZXh0LnNhdmUoKTsKKyAgICAKKyAgICAv
LyBTZXQgdGhlIGNvbXBvc2l0aW5nIG9wZXJhdGlvbi4KKyAgICBpZiAob3AgPT0gQ29tcG9zaXRl
U291cmNlT3ZlciAmJiBtb2RlID09IEJsZW5kTW9kZU5vcm1hbCAmJiAhaGFzQWxwaGEoKSkKKyAg
ICAgICAgY29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlQ29weSk7CisgICAg
ZWxzZQorICAgICAgICBjb250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihvcCwgbW9kZSk7Cisg
ICAgICAgIAorI2lmIEVOQUJMRShJTUFHRV9ERUNPREVSX0RPV05fU0FNUExJTkcpCisgICAgSW50
U2l6ZSBzY2FsZWRTaXplID0gY2Fpcm9TdXJmYWNlU2l6ZShtX2ltYWdlLmdldCgpKTsKKyAgICBG
bG9hdFJlY3QgYWRqdXN0ZWRTcmNSZWN0ID0gYWRqdXN0U291cmNlUmVjdEZvckRvd25TYW1wbGlu
ZyhzcmNSZWN0LCBzY2FsZWRTaXplKTsKKyNlbHNlCisgICAgRmxvYXRSZWN0IGFkanVzdGVkU3Jj
UmVjdChzcmNSZWN0KTsKKyNlbmRpZgorICAgICAgICAKKyAgICBGbG9hdFJlY3QgYWRqdXN0ZWRE
ZXN0UmVjdCA9IGRlc3RSZWN0OworICAgICAgICAKKyAgICBpZiAob3JpZW50YXRpb24gIT0gRGVm
YXVsdEltYWdlT3JpZW50YXRpb24pIHsKKyAgICAgICAgLy8gSW1hZ2VPcmllbnRhdGlvbiBleHBl
Y3RzIHRoZSBvcmlnaW4gdG8gYmUgYXQgKDAsIDApLgorICAgICAgICBjb250ZXh0LnRyYW5zbGF0
ZShkZXN0UmVjdC54KCksIGRlc3RSZWN0LnkoKSk7CisgICAgICAgIGFkanVzdGVkRGVzdFJlY3Qu
c2V0TG9jYXRpb24oRmxvYXRQb2ludCgpKTsKKyAgICAgICAgY29udGV4dC5jb25jYXRDVE0ob3Jp
ZW50YXRpb24udHJhbnNmb3JtRnJvbURlZmF1bHQoYWRqdXN0ZWREZXN0UmVjdC5zaXplKCkpKTsK
KyAgICAgICAgaWYgKG9yaWVudGF0aW9uLnVzZXNXaWR0aEFzSGVpZ2h0KCkpIHsKKyAgICAgICAg
ICAgIC8vIFRoZSBkZXN0aW5hdGlvbiByZWN0YW5nbGUgd2lsbCBoYXZlIGl0J3Mgd2lkdGggYW5k
IGhlaWdodCBhbHJlYWR5IHJldmVyc2VkIGZvciB0aGUgb3JpZW50YXRpb24gb2YKKyAgICAgICAg
ICAgIC8vIHRoZSBpbWFnZSwgYXMgaXQgd2FzIG5lZWRlZCBmb3IgcGFnZSBsYXlvdXQsIHNvIHdl
IG5lZWQgdG8gcmV2ZXJzZSBpdCBiYWNrIGhlcmUuCisgICAgICAgICAgICBhZGp1c3RlZERlc3RS
ZWN0LnNldFNpemUoYWRqdXN0ZWREZXN0UmVjdC5zaXplKCkudHJhbnNwb3NlZFNpemUoKSk7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLT5kcmF3U3Vy
ZmFjZVRvQ29udGV4dChtX2ltYWdlLmdldCgpLCBhZGp1c3RlZERlc3RSZWN0LCBhZGp1c3RlZFNy
Y1JlY3QsIGNvbnRleHQpOworCisgICAgY29udGV4dC5yZXN0b3JlKCk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVTRShDQUlSTykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFwSW1hZ2VDRy5jcHAKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAzYzgxYTE3MGJlNzlhZTZiZTZjYWNkYzk5ZjRjMzk4Y2Fh
ZjQyNmQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFwSW1hZ2VDRy5jcHAKKysrIC9k
ZXYvbnVsbApAQCAtMSwyMDYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAw
NSwgMjAwNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiQml0bWFwSW1hZ2UuaCIKLQotI2lmIFVTRShDRykKLQotI2luY2x1ZGUgIkNvcmVHcmFwaGlj
c1NQSS5oIgotI2luY2x1ZGUgIkZsb2F0Q29udmVyc2lvbi5oIgotI2luY2x1ZGUgIkdlb21ldHJ5
VXRpbGl0aWVzLmgiCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0Q0cuaCIKLSNpbmNsdWRlICJJ
bWFnZU9ic2VydmVyLmgiCi0jaW5jbHVkZSAiU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5oIgotI2lu
Y2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLQotI2lmIFVTRShBUFBLSVQpCi0jaW5jbHVkZSA8QXBw
bGljYXRpb25TZXJ2aWNlcy9BcHBsaWNhdGlvblNlcnZpY2VzLmg+Ci0jZW5kaWYKLQotI2lmIFBM
QVRGT1JNKENPQ09BKQotI2luY2x1ZGUgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKLSNlbmRp
ZgotCi0jaWYgUExBVEZPUk0oV0lOKQotI2luY2x1ZGUgPFdlYktpdFN5c3RlbUludGVyZmFjZS9X
ZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KLSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LW5hbWVzcGFjZSBOYXRpdmVJbWFnZSB7Ci0KLUludFNpemUgc2l6ZShjb25zdCBSZXRhaW5QdHI8
Q0dJbWFnZVJlZj4mIGltYWdlKQotewotICAgIEFTU0VSVChpbWFnZSk7Ci0gICAgcmV0dXJuIElu
dFNpemUoQ0dJbWFnZUdldFdpZHRoKGltYWdlLmdldCgpKSwgQ0dJbWFnZUdldEhlaWdodChpbWFn
ZS5nZXQoKSkpOwotfQotCi1ib29sIGhhc0FscGhhKGNvbnN0IFJldGFpblB0cjxDR0ltYWdlUmVm
PiYpCi17Ci0gICAgLy8gRklYTUU6IEFuc3dlciBjb3JyZWN0bHkgdGhlIHF1ZXN0aW9uOiBkb2Vz
IHRoZSBDR0ltYWdlUmVmIGhhdmUgYWxwaGEgY2hhbm5uZWw/Ci0gICAgcmV0dXJuIHRydWU7Ci19
Ci0gICAgCi1Db2xvciBzaW5nbGVQaXhlbFNvbGlkQ29sb3IoY29uc3QgUmV0YWluUHRyPENHSW1h
Z2VSZWY+JiBpbWFnZSkKLXsKLSAgICBBU1NFUlQoaW1hZ2UpOwotICAgIAotICAgIGlmIChOYXRp
dmVJbWFnZTo6c2l6ZShpbWFnZSkgIT0gSW50U2l6ZSgxLCAxKSkKLSAgICAgICAgcmV0dXJuIENv
bG9yKCk7Ci0gICAgCi0gICAgdW5zaWduZWQgY2hhciBwaXhlbFs0XTsgLy8gUkdCQQotICAgIGF1
dG8gYml0bWFwQ29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKHBpeGVsLCAx
LCAxLCA4LCBzaXplb2YocGl4ZWwpLCBzUkdCQ29sb3JTcGFjZVJlZigpLAotICAgICAgICBrQ0dJ
bWFnZUFscGhhUHJlbXVsdGlwbGllZExhc3QgfCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkJpZykpOwot
Ci0gICAgaWYgKCFiaXRtYXBDb250ZXh0KQotICAgICAgICByZXR1cm4gQ29sb3IoKTsKLSAgICAK
LSAgICBDR0NvbnRleHRTZXRCbGVuZE1vZGUoYml0bWFwQ29udGV4dC5nZXQoKSwga0NHQmxlbmRN
b2RlQ29weSk7Ci0gICAgQ0dDb250ZXh0RHJhd0ltYWdlKGJpdG1hcENvbnRleHQuZ2V0KCksIENH
UmVjdE1ha2UoMCwgMCwgMSwgMSksIGltYWdlLmdldCgpKTsKLSAgICAKLSAgICBpZiAoIXBpeGVs
WzNdKQotICAgICAgICByZXR1cm4gQ29sb3IoMCwgMCwgMCwgMCk7Ci0KLSAgICByZXR1cm4gQ29s
b3IocGl4ZWxbMF0gKiAyNTUgLyBwaXhlbFszXSwgcGl4ZWxbMV0gKiAyNTUgLyBwaXhlbFszXSwg
cGl4ZWxbMl0gKiAyNTUgLyBwaXhlbFszXSwgcGl4ZWxbM10pOwotfQotCi19Ci0KLWJvb2wgRnJh
bWVEYXRhOjpjbGVhcihib29sIGNsZWFyTWV0YWRhdGEpCi17Ci0gICAgaWYgKGNsZWFyTWV0YWRh
dGEpCi0gICAgICAgIG1faGF2ZU1ldGFkYXRhID0gZmFsc2U7Ci0KLSAgICBtX3N1YnNhbXBsaW5n
TGV2ZWwgPSAwOwotCi0gICAgaWYgKG1faW1hZ2UpIHsKLSNpZiBDQUNIRV9TVUJJTUFHRVMKLSAg
ICAgICAgc3ViaW1hZ2VDYWNoZSgpLmNsZWFySW1hZ2UobV9pbWFnZS5nZXQoKSk7Ci0jZW5kaWYK
LSAgICAgICAgbV9pbWFnZSA9IG51bGxwdHI7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0K
LSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLUNHSW1hZ2VSZWYgQml0bWFwSW1hZ2U6OmdldENHSW1h
Z2VSZWYoKQotewotICAgIHJldHVybiBmcmFtZUltYWdlQXRJbmRleCgwKS5nZXQoKTsKLX0KLQot
Q0dJbWFnZVJlZiBCaXRtYXBJbWFnZTo6Z2V0Rmlyc3RDR0ltYWdlUmVmT2ZTaXplKGNvbnN0IElu
dFNpemUmIHNpemUpCi17Ci0gICAgc2l6ZV90IGNvdW50ID0gZnJhbWVDb3VudCgpOwotICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewotICAgICAgICBDR0ltYWdlUmVmIGNn
SW1hZ2UgPSBmcmFtZUltYWdlQXRJbmRleChpKS5nZXQoKTsKLSAgICAgICAgaWYgKGNnSW1hZ2Ug
JiYgSW50U2l6ZShDR0ltYWdlR2V0V2lkdGgoY2dJbWFnZSksIENHSW1hZ2VHZXRIZWlnaHQoY2dJ
bWFnZSkpID09IHNpemUpCi0gICAgICAgICAgICByZXR1cm4gY2dJbWFnZTsKLSAgICB9Ci0KLSAg
ICAvLyBGYWxsYmFjayB0byB0aGUgZGVmYXVsdCBDR0ltYWdlUmVmIGlmIHdlIGNhbid0IGZpbmQg
dGhlIHJpZ2h0IHNpemUKLSAgICByZXR1cm4gZ2V0Q0dJbWFnZVJlZigpOwotfQotCi1SZXRhaW5Q
dHI8Q0ZBcnJheVJlZj4gQml0bWFwSW1hZ2U6OmdldENHSW1hZ2VBcnJheSgpCi17Ci0gICAgc2l6
ZV90IGNvdW50ID0gZnJhbWVDb3VudCgpOwotICAgIGlmICghY291bnQpCi0gICAgICAgIHJldHVy
biBudWxscHRyOwotICAgIAotICAgIENGTXV0YWJsZUFycmF5UmVmIGFycmF5ID0gQ0ZBcnJheUNy
ZWF0ZU11dGFibGUoTlVMTCwgY291bnQsICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpOwotICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewotICAgICAgICBpZiAoQ0dJbWFnZVJl
ZiBjdXJyRnJhbWUgPSBmcmFtZUltYWdlQXRJbmRleChpKS5nZXQoKSkKLSAgICAgICAgICAgIENG
QXJyYXlBcHBlbmRWYWx1ZShhcnJheSwgY3VyckZyYW1lKTsKLSAgICB9Ci0gICAgcmV0dXJuIGFk
b3B0Q0YoYXJyYXkpOwotfQotCi12b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4
dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwg
SW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uIGRlc2NyaXB0aW9uKQotewotI2lmIFBMQVRGT1JN
KElPUykKLSAgICBzdGFydEFuaW1hdGlvbihEb05vdENhdGNoVXApOwotI2Vsc2UKLSAgICBzdGFy
dEFuaW1hdGlvbigpOwotI2VuZGlmCi0KLSAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2U7
Ci0gICAgLy8gTmV2ZXIgdXNlIHN1YnNhbXBsZWQgaW1hZ2VzIGZvciBkcmF3aW5nIGludG8gUERG
IGNvbnRleHRzLgotICAgIGlmICh3a0NHQ29udGV4dElzUERGQ29udGV4dChjdHh0LnBsYXRmb3Jt
Q29udGV4dCgpKSkKLSAgICAgICAgaW1hZ2UgPSBjb3B5VW5zY2FsZWRGcmFtZUltYWdlQXRJbmRl
eChtX2N1cnJlbnRGcmFtZSk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIENHUmVjdCB0cmFuc2Zvcm1l
ZERlc3RpbmF0aW9uUmVjdCA9IENHUmVjdEFwcGx5QWZmaW5lVHJhbnNmb3JtKGRlc3RSZWN0LCBD
R0NvbnRleHRHZXRDVE0oY3R4dC5wbGF0Zm9ybUNvbnRleHQoKSkpOwotICAgICAgICBmbG9hdCBz
dWJzYW1wbGluZ1NjYWxlID0gc3RkOjptaW48ZmxvYXQ+KDEsIHN0ZDo6bWF4KHRyYW5zZm9ybWVk
RGVzdGluYXRpb25SZWN0LnNpemUud2lkdGggLyBzcmNSZWN0LndpZHRoKCksIHRyYW5zZm9ybWVk
RGVzdGluYXRpb25SZWN0LnNpemUuaGVpZ2h0IC8gc3JjUmVjdC5oZWlnaHQoKSkpOwotCi0gICAg
ICAgIGltYWdlID0gZnJhbWVJbWFnZUF0SW5kZXgobV9jdXJyZW50RnJhbWUsIHN1YnNhbXBsaW5n
U2NhbGUpOwotICAgIH0KLQotICAgIGlmICghaW1hZ2UpIC8vIElmIGl0J3MgdG9vIGVhcmx5IHdl
IHdvbid0IGhhdmUgYW4gaW1hZ2UgeWV0LgotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgQ29s
b3IgY29sb3IgPSBzaW5nbGVQaXhlbFNvbGlkQ29sb3IoKTsKLSAgICBpZiAoY29sb3IuaXNWYWxp
ZCgpKSB7Ci0gICAgICAgIGZpbGxXaXRoU29saWRDb2xvcihjdHh0LCBkZXN0UmVjdCwgY29sb3Is
IGNvbXBvc2l0ZU9wKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIFN1YnNhbXBs
aW5nIG1heSBoYXZlIGdpdmVuIHVzIGFuIGltYWdlIHRoYXQgaXMgc21hbGxlciB0aGFuIHNpemUo
KS4KLSAgICBJbnRTaXplIGltYWdlU2l6ZShDR0ltYWdlR2V0V2lkdGgoaW1hZ2UuZ2V0KCkpLCBD
R0ltYWdlR2V0SGVpZ2h0KGltYWdlLmdldCgpKSk7Ci0gICAgCi0gICAgLy8gc3JjUmVjdCBpcyBp
biB0aGUgY29vcmRpbmF0ZXMgb2YgdGhlIHVuc3Vic2FtcGxlZCBpbWFnZSwgc28gd2UgaGF2ZSB0
byBtYXAgaXQgdG8gdGhlIHN1YnNhbXBsZWQgaW1hZ2UuCi0gICAgRmxvYXRSZWN0IHNjYWxlZFNy
Y1JlY3QgPSBzcmNSZWN0OwotICAgIGlmIChpbWFnZVNpemUgIT0gbV9zaXplKSB7Ci0gICAgICAg
IEZsb2F0UmVjdCBvcmlnaW5hbEltYWdlQm91bmRzKEZsb2F0UG9pbnQoKSwgbV9zaXplKTsKLSAg
ICAgICAgRmxvYXRSZWN0IHN1YnNhbXBsZWRJbWFnZUJvdW5kcyhGbG9hdFBvaW50KCksIGltYWdl
U2l6ZSk7Ci0gICAgICAgIHNjYWxlZFNyY1JlY3QgPSBtYXBSZWN0KHNyY1JlY3QsIG9yaWdpbmFs
SW1hZ2VCb3VuZHMsIHN1YnNhbXBsZWRJbWFnZUJvdW5kcyk7Ci0gICAgfQotICAgIAotICAgIElt
YWdlT3JpZW50YXRpb24gb3JpZW50YXRpb247Ci0gICAgaWYgKGRlc2NyaXB0aW9uLnJlc3BlY3RJ
bWFnZU9yaWVudGF0aW9uKCkgPT0gUmVzcGVjdEltYWdlT3JpZW50YXRpb24pCi0gICAgICAgIG9y
aWVudGF0aW9uID0gZnJhbWVPcmllbnRhdGlvbkF0SW5kZXgobV9jdXJyZW50RnJhbWUpOwotCi0g
ICAgY3R4dC5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNjYWxl
ZFNyY1JlY3QsIGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUsIG9yaWVudGF0aW9uKTsKLQotICAgIGlm
IChpbWFnZU9ic2VydmVyKCkpCi0gICAgICAgIGltYWdlT2JzZXJ2ZXIoKS0+ZGlkRHJhdyh0aGlz
KTsKLX0KLQotUmV0YWluUHRyPENHSW1hZ2VSZWY+IEJpdG1hcEltYWdlOjpjb3B5VW5zY2FsZWRG
cmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgpCi17Ci0gICAgaWYgKGluZGV4ID49IGZyYW1l
Q291bnQoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBpZiAoaW5kZXggPj0gbV9m
cmFtZXMuc2l6ZSgpIHx8ICFtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZSkKLSAgICAgICAgY2FjaGVG
cmFtZShpbmRleCwgMCk7Ci0KLSAgICBpZiAoIW1fZnJhbWVzW2luZGV4XS5tX3N1YnNhbXBsaW5n
TGV2ZWwpCi0gICAgICAgIHJldHVybiBtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZTsKLQotICAgIHJl
dHVybiBtX3NvdXJjZS5jcmVhdGVGcmFtZUltYWdlQXRJbmRleChpbmRleCk7Ci19Ci0KLX0KLQot
I2VuZGlmIC8vIFVTRShDRykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9QYXR0ZXJuQ0cuY3BwCmluZGV4IGI0MjhkNTBkOTRiZjkyNDI4MDMyODdkMmVlYzE2YmQ2
OWM1MjhkOTIuLjNkYWExMzlhYjdlYTViNDIxNTc3ODgzNWQzNTNkOGFkYjVmMGM3NWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcApA
QCAtNzIsNyArNzIsNyBAQCBDR1BhdHRlcm5SZWYgUGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0
ZXJuKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdXNlclNwYWNlVHJhbgogICAgIC8vIElmIHdlJ3Jl
IHJlcGVhdGluZyBpbiBib3RoIGRpcmVjdGlvbnMsIHdlIGNhbiB1c2UgaW1hZ2UtYmFja2VkIHBh
dHRlcm5zCiAgICAgLy8gaW5zdGVhZCBvZiBjdXN0b20gcGF0dGVybnMsIGFuZCBhdm9pZCB0aWxp
bmctZWRnZSBwaXhlbCBjcmFja3MuCiAgICAgaWYgKG1fcmVwZWF0WCAmJiBtX3JlcGVhdFkpCi0g
ICAgICAgIHJldHVybiB3a0NHUGF0dGVybkNyZWF0ZVdpdGhJbWFnZUFuZFRyYW5zZm9ybSh0aWxl
SW1hZ2UoKS0+Z2V0Q0dJbWFnZVJlZigpLCBwYXR0ZXJuVHJhbnNmb3JtLCB3a1BhdHRlcm5UaWxp
bmdDb25zdGFudFNwYWNpbmcpOworICAgICAgICByZXR1cm4gd2tDR1BhdHRlcm5DcmVhdGVXaXRo
SW1hZ2VBbmRUcmFuc2Zvcm0odGlsZUltYWdlKCktPm5hdGl2ZUltYWdlKCkuZ2V0KCksIHBhdHRl
cm5UcmFuc2Zvcm0sIHdrUGF0dGVyblRpbGluZ0NvbnN0YW50U3BhY2luZyk7CiAKICAgICAvLyBJ
ZiBGTFRfTUFYIHNob3VsZCBhbHNvIGJlIHVzZWQgZm9yIHhTdGVwIG9yIHlTdGVwLCBub3RoaW5n
IGlzIHJlbmRlcmVkLiBVc2luZyBmcmFjdGlvbnMgb2YgRkxUX01BWCBhbHNvCiAgICAgLy8gcmVz
dWx0IGluIG5vdGhpbmcgYmVpbmcgcmVuZGVyZWQuCkBAIC04Myw3ICs4Myw3IEBAIENHUGF0dGVy
blJlZiBQYXR0ZXJuOjpjcmVhdGVQbGF0Zm9ybVBhdHRlcm4oY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiB1c2VyU3BhY2VUcmFuCiAgICAgQ0dGbG9hdCB5U3RlcCA9IG1fcmVwZWF0WSA/IHRpbGVSZWN0
LmhlaWdodCgpIDogKDEgPDwgMjIpOwogCiAgICAgLy8gVGhlIHBhdHRlcm4gd2lsbCByZWxlYXNl
IHRoZSBDR0ltYWdlUmVmIHdoZW4gaXQncyBkb25lIHJlbmRlcmluZyBpbiBwYXR0ZXJuUmVsZWFz
ZUNhbGxiYWNrCi0gICAgQ0dJbWFnZVJlZiBwbGF0Zm9ybUltYWdlID0gQ0dJbWFnZVJldGFpbih0
aWxlSW1hZ2UoKS0+Z2V0Q0dJbWFnZVJlZigpKTsKKyAgICBDR0ltYWdlUmVmIHBsYXRmb3JtSW1h
Z2UgPSB0aWxlSW1hZ2UoKS0+bmF0aXZlSW1hZ2UoKS5sZWFrUmVmKCk7CiAKICAgICBjb25zdCBD
R1BhdHRlcm5DYWxsYmFja3MgcGF0dGVybkNhbGxiYWNrcyA9IHsgMCwgcGF0dGVybkNhbGxiYWNr
LCBwYXR0ZXJuUmVsZWFzZUNhbGxiYWNrIH07CiAgICAgcmV0dXJuIENHUGF0dGVybkNyZWF0ZShw
bGF0Zm9ybUltYWdlLCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgeFN0ZXAsIHlTdGVwLCBr
Q0dQYXR0ZXJuVGlsaW5nQ29uc3RhbnRTcGFjaW5nLCBUUlVFLCAmcGF0dGVybkNhbGxiYWNrcyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QbGF0Zm9y
bUltYWdlQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGxhdGZv
cm1JbWFnZUNHLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZmIyZGUwZWExMmRhMjE0ZjEwNDZjMzk2MmU4ZWFi
NTNjNjQ0MTI1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvUGxhdGZvcm1JbWFnZUNHLmNwcApAQCAtMCwwICsxLDE3MSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJQbGF0Zm9ybUltYWdlLmgiCisKKyNpZiBVU0UoQ0cpCisKKyNpbmNsdWRlICJD
b2xvci5oIgorI2luY2x1ZGUgIkNvcmVHcmFwaGljc1NQSS5oIgorI2luY2x1ZGUgIkZsb2F0UmVj
dC5oIgorI2luY2x1ZGUgIkdlb21ldHJ5VXRpbGl0aWVzLmgiCisjaW5jbHVkZSAiR3JhcGhpY3ND
b250ZXh0Q0cuaCIKKyNpbmNsdWRlICJJbnRTaXplLmgiCisjaW5jbHVkZSAiU3ViaW1hZ2VDYWNo
ZVdpdGhUaW1lci5oIgorCisjaWYgUExBVEZPUk0oV0lOKQorI2luY2x1ZGUgPFdlYktpdFN5c3Rl
bUludGVyZmFjZS9XZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KKyNlbmRpZgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisgICAgCit2b2lkIFBsYXRmb3JtSW1hZ2U6OmNsZWFyU3ViSW1hZ2VzKCkKK3sK
KyNpZiBDQUNIRV9TVUJJTUFHRVMKKyAgICBpZiAoIWlzTmlsKCkpCisgICAgICAgIHN1YmltYWdl
Q2FjaGUoKS5jbGVhckltYWdlKGNnSW1hZ2VSZWYoKSk7CisjZW5kaWYKK30KKworSW50U2l6ZSBQ
bGF0Zm9ybUltYWdlOjpzaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gaXNOaWwoKSA/IEludFNp
emUoKSA6IEludFNpemUoQ0dJbWFnZUdldFdpZHRoKGNnSW1hZ2VSZWYoKSksIENHSW1hZ2VHZXRI
ZWlnaHQoY2dJbWFnZVJlZigpKSk7Cit9CisKK2Jvb2wgUGxhdGZvcm1JbWFnZTo6aGFzQWxwaGEo
KSBjb25zdAoreworICAgIC8vIEZJWE1FOiBBbnN3ZXIgY29ycmVjdGx5IHRoZSBxdWVzdGlvbjog
ZG9lcyB0aGUgQ0dJbWFnZVJlZiBoYXZlIGFscGhhIGNoYW5ubmVsPworICAgIHJldHVybiB0cnVl
OworfQorCitDb2xvciBQbGF0Zm9ybUltYWdlOjpzaW5nbGVQaXhlbFNvbGlkQ29sb3IoKSBjb25z
dAoreworICAgIGlmIChpc05pbCgpIHx8IHNpemUoKSAhPSBJbnRTaXplKDEsIDEpKQorICAgICAg
ICByZXR1cm4gQ29sb3IoKTsKKyAgICAKKyAgICB1bnNpZ25lZCBjaGFyIHBpeGVsWzRdOyAvLyBS
R0JBCisgICAgYXV0byBiaXRtYXBDb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVh
dGUocGl4ZWwsIDEsIDEsIDgsIHNpemVvZihwaXhlbCksIHNSR0JDb2xvclNwYWNlUmVmKCksCisg
ICAgICAgIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkTGFzdCB8IGtDR0JpdG1hcEJ5dGVPcmRl
cjMyQmlnKSk7CisgICAgCisgICAgaWYgKCFiaXRtYXBDb250ZXh0KQorICAgICAgICByZXR1cm4g
Q29sb3IoKTsKKyAgICAKKyAgICBDR0NvbnRleHRTZXRCbGVuZE1vZGUoYml0bWFwQ29udGV4dC5n
ZXQoKSwga0NHQmxlbmRNb2RlQ29weSk7CisgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGJpdG1hcENv
bnRleHQuZ2V0KCksIENHUmVjdE1ha2UoMCwgMCwgMSwgMSksIGNnSW1hZ2VSZWYoKSk7CisgICAg
CisgICAgaWYgKCFwaXhlbFszXSkKKyAgICAgICAgcmV0dXJuIENvbG9yKDAsIDAsIDAsIDApOwor
ICAgIAorICAgIHJldHVybiBDb2xvcihwaXhlbFswXSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhlbFsx
XSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhlbFsyXSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhlbFszXSk7
Cit9CisgICAgCitib29sIFBsYXRmb3JtSW1hZ2U6OmlzQWxtb3N0U29saWRDb2xvcigpIGNvbnN0
Cit7CisgICAgQ0dJbWFnZVJlZiBpbWFnZSA9IGNnSW1hZ2VSZWYoKTsKKyAgICBBU1NFUlQoQ0dJ
bWFnZUdldEJpdHNQZXJDb21wb25lbnQoaW1hZ2UpID09IDgpOworICAgIAorICAgIENHQml0bWFw
SW5mbyBpbWFnZUluZm8gPSBDR0ltYWdlR2V0Qml0bWFwSW5mbyhpbWFnZSk7CisgICAgaWYgKCEo
aW1hZ2VJbmZvICYga0NHQml0bWFwQnl0ZU9yZGVyMzJMaXR0bGUpIHx8IChpbWFnZUluZm8gJiBr
Q0dCaXRtYXBBbHBoYUluZm9NYXNrKSAhPSBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0
KSB7CisgICAgICAgIC8vIEZJWE1FOiBDb25zaWRlciBiZWluZyBhYmxlIHRvIGhhbmRsZSBvdGhl
ciBwaXhlbCBmb3JtYXRzLgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAKKyAgICBzaXplX3Qgd2lkdGggPSBDR0ltYWdlR2V0
V2lkdGgoaW1hZ2UpOworICAgIHNpemVfdCBoZWlnaHQgPSBDR0ltYWdlR2V0SGVpZ2h0KGltYWdl
KTsKKyAgICBzaXplX3QgYnl0ZXNQZXJSb3cgPSBDR0ltYWdlR2V0Qnl0ZXNQZXJSb3coaW1hZ2Up
OworICAgIAorICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IHByb3ZpZGVyID0gYWRvcHRDRihDR0Rh
dGFQcm92aWRlckNvcHlEYXRhKENHSW1hZ2VHZXREYXRhUHJvdmlkZXIoaW1hZ2UpKSk7CisgICAg
Y29uc3QgVUludDgqIGRhdGEgPSBDRkRhdGFHZXRCeXRlUHRyKHByb3ZpZGVyLmdldCgpKTsKKyAg
ICAKKyAgICAvLyBPdmVybGF5IGEgZ3JpZCBvZiBzYW1wbGluZyBkb3RzIG9uIHRvcCBvZiBhIGdy
YXlzY2FsZSB2ZXJzaW9uIG9mIHRoZSBpbWFnZS4KKyAgICAvLyBGb3IgdGhlIGludGVyaW9yIHBv
aW50cywgY2FsY3VsYXRlIHRoZSBkaWZmZXJlbmNlIGluIGx1bWluYW5jZSBhbW9uZyB0aGUgc2Ft
cGxlIHBvaW50CisgICAgLy8gYW5kIGl0cyBzdXJyb3VuZHMgcG9pbnRzLCBzY2FsZWQgYnkgdHJh
bnNwYXJlbmN5LgorICAgIGNvbnN0IHVuc2lnbmVkIHNhbXBsZVJvd3MgPSA3OworICAgIGNvbnN0
IHVuc2lnbmVkIHNhbXBsZUNvbHMgPSA3OworICAgIC8vIEZJWE1FOiBSZWZpbmUgdGhlIHByb3Bl
ciBudW1iZXIgb2Ygc2FtcGxlcywgYW5kIGFjY29tbW9kYXRlIGRpZmZlcmVudCBhc3BlY3QgcmF0
aW9zLgorICAgIGlmICh3aWR0aCA8IHNhbXBsZUNvbHMgfHwgaGVpZ2h0IDwgc2FtcGxlUm93cykK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIC8vIEVuc3VyZSB0aGF0IHRoZSBsYXN0
IHJvdy9jb2x1bW4gbGFuZCBvbiB0aGUgaW1hZ2UgcGVyaW1ldGVyLgorICAgIGNvbnN0IGZsb2F0
IHN0cmlkZVdpZHRoID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHdpZHRoIC0gMSkgLyAoc2FtcGxlQ29s
cyAtIDEpOworICAgIGNvbnN0IGZsb2F0IHN0cmlkZUhlaWdodCA9IHN0YXRpY19jYXN0PGZsb2F0
PihoZWlnaHQgLSAxKSAvIChzYW1wbGVSb3dzIC0gMSk7CisgICAgZmxvYXQgc2FtcGxlc1tzYW1w
bGVSb3dzXVtzYW1wbGVDb2xzXTsKKyAgICAKKyAgICAvLyBGaW5kIHRoZSBsdW1pbmFuY2Ugb2Yg
dGhlIHNhbXBsZSBwb2ludHMuCisgICAgZmxvYXQgeSA9IDA7CisgICAgY29uc3QgVUludDgqIHJv
dyA9IGRhdGE7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNhbXBsZVJvd3M7ICsraSkg
eworICAgICAgICBmbG9hdCB4ID0gMDsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8
IHNhbXBsZUNvbHM7ICsraikgeworICAgICAgICAgICAgY29uc3QgVUludDgqIHAwID0gcm93ICsg
KHN0YXRpY19jYXN0PGludD4oeCArIC41KSkgKiA0OworICAgICAgICAgICAgLy8gUiBHIEIgQQor
ICAgICAgICAgICAgc2FtcGxlc1tpXVtqXSA9ICgwLjIxMjUgKiAqcDAgKyAwLjcxNTQgKiAqKHAw
KzEpICsgMC4wNzIxICogKihwMCsyKSkgKiAqKHAwKzMpIC8gMjU1OworICAgICAgICAgICAgeCAr
PSBzdHJpZGVXaWR0aDsKKyAgICAgICAgfQorICAgICAgICB5ICs9IHN0cmlkZUhlaWdodDsKKyAg
ICAgICAgcm93ID0gZGF0YSArIChzdGF0aWNfY2FzdDxpbnQ+KHkgKyAuNSkpICogYnl0ZXNQZXJS
b3c7CisgICAgfQorICAgIAorICAgIC8vIERldGVybWluZSB0aGUgaW1hZ2Ugc2NvcmUuCisgICAg
ZmxvYXQgYWNjdW1TY29yZSA9IDA7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IHNhbXBs
ZVJvd3MgLSAxOyArK2kpIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMTsgaiA8IHNhbXBs
ZUNvbHMgLSAxOyArK2opIHsKKyAgICAgICAgICAgIGZsb2F0IGRpZmYgPSBzYW1wbGVzW2kgLSAx
XVtqXSArIHNhbXBsZXNbaSArIDFdW2pdICsgc2FtcGxlc1tpXVtqIC0gMV0gKyBzYW1wbGVzW2ld
W2ogKyAxXSAtIDQgKiBzYW1wbGVzW2ldW2pdOworICAgICAgICAgICAgYWNjdW1TY29yZSArPSBk
aWZmICogZGlmZjsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICAvLyBUaGUgc2NvcmUgZm9y
IGEgZ2l2ZW4gc2FtcGxlIGNhbiBiZSB3aXRoaW4gdGhlIHJhbmdlIG9mIDAgYW5kIDI1NV4yLgor
ICAgIHJldHVybiBhY2N1bVNjb3JlIDwgMjUwMCAqIChzYW1wbGVSb3dzIC0gMikgKiAoc2FtcGxl
Q29scyAtIDIpOworfQorCitmbG9hdCBQbGF0Zm9ybUltYWdlOjpzdWJzYW1wbGluZ1NjYWxlKEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0KQoreworICAgIC8vIE5ldmVyIHVzZSBzdWJzYW1wbGVkIGltYWdl
cyBmb3IgZHJhd2luZyBpbnRvIFBERiBjb250ZXh0cy4KKyAgICBpZiAod2tDR0NvbnRleHRJc1BE
RkNvbnRleHQoY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSkpCisgICAgICAgIHJldHVybiAxOwor
ICAgIAorICAgIENHUmVjdCB0cmFuc2Zvcm1lZERlc3RpbmF0aW9uUmVjdCA9IENHUmVjdEFwcGx5
QWZmaW5lVHJhbnNmb3JtKGRlc3RSZWN0LCBDR0NvbnRleHRHZXRDVE0oY29udGV4dC5wbGF0Zm9y
bUNvbnRleHQoKSkpOworICAgIHJldHVybiBzdGQ6Om1pbjxmbG9hdD4oMSwgc3RkOjptYXgodHJh
bnNmb3JtZWREZXN0aW5hdGlvblJlY3Quc2l6ZS53aWR0aCAvIHNyY1JlY3Qud2lkdGgoKSwgdHJh
bnNmb3JtZWREZXN0aW5hdGlvblJlY3Quc2l6ZS5oZWlnaHQgLyBzcmNSZWN0LmhlaWdodCgpKSk7
Cit9CisKK3ZvaWQgUGxhdGZvcm1JbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgSW50U2l6ZSYgc3JjU2l6ZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBtb2Rl
LCBjb25zdCBJbWFnZU9yaWVudGF0aW9uJiBvcmllbnRhdGlvbikgY29uc3QKK3sKKyAgICAvLyBT
dWJzYW1wbGluZyBtYXkgaGF2ZSBnaXZlbiB1cyBhbiBpbWFnZSB0aGF0IGlzIHNtYWxsZXIgdGhh
biBzaXplKCkuCisgICAgSW50U2l6ZSBzdWJzYW1wbGVkSW1hZ2VTaXplID0gc2l6ZSgpOworICAg
IAorICAgIC8vIHNyY1JlY3QgaXMgaW4gdGhlIGNvb3JkaW5hdGVzIG9mIHRoZSB1bnN1YnNhbXBs
ZWQgaW1hZ2UsIHNvIHdlIGhhdmUgdG8gbWFwIGl0IHRvIHRoZSBzdWJzYW1wbGVkIGltYWdlLgor
ICAgIEZsb2F0UmVjdCBhZGp1c3RlZFNyY1JlY3QgPSBzcmNSZWN0OworICAgIGlmIChzdWJzYW1w
bGVkSW1hZ2VTaXplICE9IHNyY1NpemUpCisgICAgICAgIGFkanVzdGVkU3JjUmVjdCA9IG1hcFJl
Y3Qoc3JjUmVjdCwgRmxvYXRSZWN0KHsgfSwgc3JjU2l6ZSksIEZsb2F0UmVjdCh7IH0sIHN1YnNh
bXBsZWRJbWFnZVNpemUpKTsKKyAgICAKKyAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShtX2lt
YWdlLCBzdWJzYW1wbGVkSW1hZ2VTaXplLCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBvcCwg
bW9kZSwgb3JpZW50YXRpb24pOworfQorICAgIAorfQorCisjZW5kaWYgLy8gVVNFKENHKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVGV4dFRyYWNr
UmVwcmVzZW50YXRpb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1RleHRUcmFja1JlcHJlc2VudGF0aW9uQ29jb2EubW0KaW5kZXggODk3MjBkMTczNjVk
YTdlOGJhODQ2OWQ1Mjk0NTQ4ZDUxODQ3YTdmZS4uNDQ3NmZjNWY4N2MzNDk4OGY2ZDlhZDU1ZWVi
ZDhkMWI5YmIwMjJlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvVGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9UZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29h
Lm1tCkBAIC0xMjksNyArMTI5LDcgQEAgVGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYTo6flRl
eHRUcmFja1JlcHJlc2VudGF0aW9uQ29jb2EoKQogdm9pZCBUZXh0VHJhY2tSZXByZXNlbnRhdGlv
bkNvY29hOjp1cGRhdGUoKQogewogICAgIGlmIChhdXRvIHJlcHJlc2VudGF0aW9uID0gbV9jbGll
bnQuY3JlYXRlVGV4dFRyYWNrUmVwcmVzZW50YXRpb25JbWFnZSgpKQotICAgICAgICBbbV9sYXll
ci5nZXQoKSBzZXRDb250ZW50czooaWQpcmVwcmVzZW50YXRpb24tPmdldENHSW1hZ2VSZWYoKV07
CisgICAgICAgIFttX2xheWVyLmdldCgpIHNldENvbnRlbnRzOihpZClyZXByZXNlbnRhdGlvbi0+
bmF0aXZlSW1hZ2UoKS5nZXQoKV07CiB9CiAKIHZvaWQgVGV4dFRyYWNrUmVwcmVzZW50YXRpb25D
b2NvYTo6c2V0Q29udGVudFNjYWxlKGZsb2F0IHNjYWxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tCmluZGV4IDAxZWI2ZGQzMDA0M2EyMjUy
OTE3NmZkOTEyMTE3ZGM1Nzc2YzE3YmEuLmRjMWM3YzcwOTVkOTQ0YzRjNjJmMWZlMDkzNTcwMmEx
M2M3YzdhNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9JbWFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMv
SW1hZ2VNYWMubW0KQEAgLTg1LDMxICs4NSwyMiBAQCBDRkRhdGFSZWYgQml0bWFwSW1hZ2U6Omdl
dFRJRkZSZXByZXNlbnRhdGlvbigpCiAgICAgaWYgKG1fdGlmZlJlcCkKICAgICAgICAgcmV0dXJu
IG1fdGlmZlJlcC5nZXQoKTsKIAotICAgIHVuc2lnbmVkIG51bUZyYW1lcyA9IGZyYW1lQ291bnQo
KTsKKyAgICBhdXRvIG5hdGl2ZUltYWdlcyA9IHRoaXMtPmZyYW1lc05hdGl2ZUltYWdlcygpOwog
Ci0gICAgLy8gSWYgbnVtRnJhbWVzIGlzIHplcm8sIHdlIGtub3cgZm9yIGNlcnRhaW4gdGhpcyBp
bWFnZSBkb2Vzbid0IGhhdmUgdmFsaWQgZGF0YQorICAgIC8vIElmIGZyYW1lc0ltYWdlcy5zaXpl
KCkgaXMgemVybywgd2Uga25vdyBmb3IgY2VydGFpbiB0aGlzIGltYWdlIGRvZXNuJ3QgaGF2ZSB2
YWxpZCBkYXRhCiAgICAgLy8gRXZlbiB0aG91Z2ggdGhlIGNhbGwgdG8gQ0dJbWFnZURlc3RpbmF0
aW9uQ3JlYXRlV2l0aERhdGEgd2lsbCBmYWlsIGFuZCB3ZSdsbCBoYW5kbGUgaXQgZ3JhY2VmdWxs
eSwKICAgICAvLyBpbiBjZXJ0YWluIGNpcmN1bXN0YW5jZXMgdGhhdCBjYWxsIHdpbGwgc3BhbSB0
aGUgY29uc29sZSB3aXRoIGFuIGVycm9yIG1lc3NhZ2UKLSAgICBpZiAoIW51bUZyYW1lcykKLSAg
ICAgICAgcmV0dXJuIDA7Ci0KLSAgICBWZWN0b3I8Q0dJbWFnZVJlZj4gaW1hZ2VzOwotICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1GcmFtZXM7ICsraSApIHsKLSAgICAgICAgQ0dJbWFn
ZVJlZiBjZ0ltYWdlID0gZnJhbWVJbWFnZUF0SW5kZXgoaSkuZ2V0KCk7Ci0gICAgICAgIGlmIChj
Z0ltYWdlKQotICAgICAgICAgICAgaW1hZ2VzLmFwcGVuZChjZ0ltYWdlKTsKLSAgICB9Ci0KLSAg
ICB1bnNpZ25lZCBudW1WYWxpZEZyYW1lcyA9IGltYWdlcy5zaXplKCk7CisgICAgaWYgKCFuYXRp
dmVJbWFnZXMuc2l6ZSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIFJldGFpblB0
cjxDRk11dGFibGVEYXRhUmVmPiBkYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGVNdXRhYmxlKDAs
IDApKTsKLSAgICBSZXRhaW5QdHI8Q0dJbWFnZURlc3RpbmF0aW9uUmVmPiBkZXN0aW5hdGlvbiA9
IGFkb3B0Q0YoQ0dJbWFnZURlc3RpbmF0aW9uQ3JlYXRlV2l0aERhdGEoZGF0YS5nZXQoKSwga1VU
VHlwZVRJRkYsIG51bVZhbGlkRnJhbWVzLCAwKSk7CisgICAgUmV0YWluUHRyPENHSW1hZ2VEZXN0
aW5hdGlvblJlZj4gZGVzdGluYXRpb24gPSBhZG9wdENGKENHSW1hZ2VEZXN0aW5hdGlvbkNyZWF0
ZVdpdGhEYXRhKGRhdGEuZ2V0KCksIGtVVFR5cGVUSUZGLCBuYXRpdmVJbWFnZXMuc2l6ZSgpLCAw
KSk7CiAKICAgICBpZiAoIWRlc3RpbmF0aW9uKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtVmFsaWRG
cmFtZXM7ICsraSkKLSAgICAgICAgQ0dJbWFnZURlc3RpbmF0aW9uQWRkSW1hZ2UoZGVzdGluYXRp
b24uZ2V0KCksIGltYWdlc1tpXSwgMCk7CisgICAgZm9yIChhdXRvIG5hdGl2ZUltYWdlIDogbmF0
aXZlSW1hZ2VzKQorICAgICAgICBDR0ltYWdlRGVzdGluYXRpb25BZGRJbWFnZShkZXN0aW5hdGlv
bi5nZXQoKSwgbmF0aXZlSW1hZ2UuZ2V0KCksIDApOwogCiAgICAgQ0dJbWFnZURlc3RpbmF0aW9u
RmluYWxpemUoZGVzdGluYXRpb24uZ2V0KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcAppbmRleCAyMTc1M2Jk
MDc4YTFjNTVjMzI3MTljMTQ4NDZmMGY2Yjk5NzVmOGZkLi5hOWJmYmQ5NWU0ZWQzNjc4YTBkZGNk
Zjc3NzE3YWUyYzIzZGRhZmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5jcHAKQEAgLTEzMiw3ICsxMzIsNiBAQCBJ
bWFnZUZyYW1lOjpJbWFnZUZyYW1lKCkKICAgICAsIG1fc3RhdHVzKEZyYW1lRW1wdHkpCiAgICAg
LCBtX2R1cmF0aW9uKDApCiAgICAgLCBtX2Rpc3Bvc2FsTWV0aG9kKERpc3Bvc2VOb3RTcGVjaWZp
ZWQpCi0gICAgLCBtX3ByZW11bHRpcGx5QWxwaGEodHJ1ZSkKIHsKIH0gCiAKQEAgLTE0MiwxOCAr
MTQxLDE2IEBAIEltYWdlRnJhbWUmIEltYWdlRnJhbWU6Om9wZXJhdG9yPShjb25zdCBJbWFnZUZy
YW1lJiBvdGhlcikKICAgICAgICAgcmV0dXJuICp0aGlzOwogCiAgICAgY29weUJpdG1hcERhdGEo
b3RoZXIpOwotICAgIHNldE9yaWdpbmFsRnJhbWVSZWN0KG90aGVyLm9yaWdpbmFsRnJhbWVSZWN0
KCkpOworICAgIHNldEhhc0FscGhhKG90aGVyLm1faGFzQWxwaGEpOwogICAgIHNldFN0YXR1cyhv
dGhlci5zdGF0dXMoKSk7CiAgICAgc2V0RHVyYXRpb24ob3RoZXIuZHVyYXRpb24oKSk7CiAgICAg
c2V0RGlzcG9zYWxNZXRob2Qob3RoZXIuZGlzcG9zYWxNZXRob2QoKSk7Ci0gICAgc2V0UHJlbXVs
dGlwbHlBbHBoYShvdGhlci5wcmVtdWx0aXBseUFscGhhKCkpOwogICAgIHJldHVybiAqdGhpczsK
IH0KIAogdm9pZCBJbWFnZUZyYW1lOjpjbGVhclBpeGVsRGF0YSgpCiB7Ci0gICAgbV9iYWNraW5n
U3RvcmUuY2xlYXIoKTsKLSAgICBtX2J5dGVzID0gMDsKKyAgICBtX3BpeGVscyA9IG51bGxwdHI7
CiAgICAgbV9zdGF0dXMgPSBGcmFtZUVtcHR5OwogICAgIC8vIE5PVEU6IERvIG5vdCByZXNldCBv
dGhlciBtZW1iZXJzIGhlcmU7IGNsZWFyRnJhbWVCdWZmZXJDYWNoZSgpIGNhbGxzIHRoaXMKICAg
ICAvLyB0byBmcmVlIHRoZSBiaXRtYXAgZGF0YSwgYnV0IG90aGVyIGZ1bmN0aW9ucyBsaWtlIGlu
aXRGcmFtZUJ1ZmZlcigpIGFuZApAQCAtMTYzLDI0ICsxNjAsMTYgQEAgdm9pZCBJbWFnZUZyYW1l
OjpjbGVhclBpeGVsRGF0YSgpCiAKIHZvaWQgSW1hZ2VGcmFtZTo6emVyb0ZpbGxQaXhlbERhdGEo
KQogewotICAgIG1lbXNldChtX2J5dGVzLCAwLCBtX3NpemUud2lkdGgoKSAqIG1fc2l6ZS5oZWln
aHQoKSAqIHNpemVvZihQaXhlbERhdGEpKTsKKyAgICBtX3BpeGVscy0+Y2xlYXIoKTsKICAgICBt
X2hhc0FscGhhID0gdHJ1ZTsKIH0KIAogdm9pZCBJbWFnZUZyYW1lOjp6ZXJvRmlsbEZyYW1lUmVj
dChjb25zdCBJbnRSZWN0JiByZWN0KQogewotICAgIEFTU0VSVChJbnRSZWN0KEludFBvaW50KCks
IG1fc2l6ZSkuY29udGFpbnMocmVjdCkpOwotCiAgICAgaWYgKHJlY3QuaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBzaXplX3QgcmVjdFdpZHRoSW5CeXRlcyA9IHJlY3Qud2lkdGgo
KSAqIHNpemVvZihQaXhlbERhdGEpOwotICAgIFBpeGVsRGF0YSogc3RhcnQgPSBtX2J5dGVzICsg
KHJlY3QueSgpICogd2lkdGgoKSkgKyByZWN0LngoKTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8
IHJlY3QuaGVpZ2h0KCk7ICsraSkgewotICAgICAgICBtZW1zZXQoc3RhcnQsIDAsIHJlY3RXaWR0
aEluQnl0ZXMpOwotICAgICAgICBzdGFydCArPSB3aWR0aCgpOwotICAgIH0KLQorICAgIG1fcGl4
ZWxzLT5jbGVhclJlY3QocmVjdCk7CiAgICAgc2V0SGFzQWxwaGEodHJ1ZSk7CiB9CiAKQEAgLTE4
OSwyNSArMTc4LDIzIEBAIGJvb2wgSW1hZ2VGcmFtZTo6Y29weUJpdG1hcERhdGEoY29uc3QgSW1h
Z2VGcmFtZSYgb3RoZXIpCiAgICAgaWYgKHRoaXMgPT0gJm90aGVyKQogICAgICAgICByZXR1cm4g
dHJ1ZTsKIAotICAgIG1fYmFja2luZ1N0b3JlID0gb3RoZXIubV9iYWNraW5nU3RvcmU7Ci0gICAg
bV9ieXRlcyA9IG1fYmFja2luZ1N0b3JlLmRhdGEoKTsKLSAgICBtX3NpemUgPSBvdGhlci5tX3Np
emU7Ci0gICAgc2V0SGFzQWxwaGEob3RoZXIubV9oYXNBbHBoYSk7CisgICAgaWYgKG90aGVyLm1f
cGl4ZWxzKQorICAgICAgICBtX3BpeGVscyA9IEJpdG1hcFBpeGVsczo6Y3JlYXRlKCpvdGhlci5t
X3BpeGVscy5nZXQoKSk7CisgICAgZWxzZQorICAgICAgICBtX3BpeGVscyA9IG51bGxwdHI7CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgSW1hZ2VGcmFtZTo6c2V0U2l6ZShpbnQgbmV3V2lk
dGgsIGludCBuZXdIZWlnaHQpCitib29sIEltYWdlRnJhbWU6OnNldFNpemUoY29uc3QgSW50U2l6
ZSYgc2l6ZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhKQogewotICAgIEFTU0VSVCghd2lkdGgoKSAm
JiAhaGVpZ2h0KCkpOwotICAgIHNpemVfdCBiYWNraW5nU3RvcmVTaXplID0gbmV3V2lkdGggKiBu
ZXdIZWlnaHQ7Ci0gICAgaWYgKCFtX2JhY2tpbmdTdG9yZS50cnlSZXNlcnZlQ2FwYWNpdHkoYmFj
a2luZ1N0b3JlU2l6ZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBtX2JhY2tpbmdTdG9y
ZS5yZXNpemUoYmFja2luZ1N0b3JlU2l6ZSk7Ci0gICAgbV9ieXRlcyA9IG1fYmFja2luZ1N0b3Jl
LmRhdGEoKTsKLSAgICBtX3NpemUgPSBJbnRTaXplKG5ld1dpZHRoLCBuZXdIZWlnaHQpOworICAg
IEFTU0VSVCghbV9waXhlbHMpOworICAgIG1fcGl4ZWxzID0gQml0bWFwUGl4ZWxzOjpjcmVhdGUo
c2l6ZSwgcHJlbXVsdGlwbHlBbHBoYSk7CisgICAgcmV0dXJuIG1fcGl4ZWxzICE9IG51bGxwdHI7
Cit9CiAKLSAgICB6ZXJvRmlsbFBpeGVsRGF0YSgpOwotICAgIHJldHVybiB0cnVlOwordm9pZCBJ
bWFnZUZyYW1lOjpjb3B5Um93TlRpbWVzKGludCBzdGFydFgsIGludCBlbmRYLCBpbnQgc3RhcnRZ
LCBpbnQgZW5kWSkKK3sKKyAgICBtX3BpeGVscy0+cmVwZWF0Rmlyc3RSb3coSW50UmVjdChzdGFy
dFgsIHN0YXJ0WSwgZW5kWCAtc3RhcnRYICwgZW5kWSAtIHN0YXJ0WSkpOwogfQogCiBib29sIElt
YWdlRnJhbWU6Omhhc0FscGhhKCkgY29uc3QKQEAgLTIyMCwxMSArMjA3LDYgQEAgdm9pZCBJbWFn
ZUZyYW1lOjpzZXRIYXNBbHBoYShib29sIGFscGhhKQogICAgIG1faGFzQWxwaGEgPSBhbHBoYTsK
IH0KIAotdm9pZCBJbWFnZUZyYW1lOjpzZXRDb2xvclByb2ZpbGUoY29uc3QgQ29sb3JQcm9maWxl
JiBjb2xvclByb2ZpbGUpCi17Ci0gICAgbV9jb2xvclByb2ZpbGUgPSBjb2xvclByb2ZpbGU7Ci19
Ci0KIHZvaWQgSW1hZ2VGcmFtZTo6c2V0U3RhdHVzKEZyYW1lU3RhdHVzIHN0YXR1cykKIHsKICAg
ICBtX3N0YXR1cyA9IHN0YXR1czsKQEAgLTI5MSw3ICsyNzMsNyBAQCB1bnNpZ25lZCBJbWFnZURl
Y29kZXI6OmZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QKICAgICBpZiAobV9m
cmFtZUJ1ZmZlckNhY2hlLnNpemUoKSA8PSBpbmRleCkKICAgICAgICAgcmV0dXJuIDA7CiAgICAg
Ly8gRklYTUU6IFVzZSB0aGUgZGltZW5zaW9uIG9mIHRoZSByZXF1ZXN0ZWQgZnJhbWUuCi0gICAg
cmV0dXJuIG1fc2l6ZS5hcmVhKCkgKiBzaXplb2YoSW1hZ2VGcmFtZTo6UGl4ZWxEYXRhKTsKKyAg
ICByZXR1cm4gbV9zaXplLmFyZWEoKSAqIHNpemVvZihSR0JBMzIpOwogfQogCiBmbG9hdCBJbWFn
ZURlY29kZXI6OmZyYW1lRHVyYXRpb25BdEluZGV4KHNpemVfdCBpbmRleCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmgKaW5k
ZXggMmY4ZWVlMTc4MWQxNjJkODZjNDlmZTFkYWM3MmEyZTdlNDBhNWQ2ZC4uYjcyZjJiZTc1MjIy
NDdjMmIyNWFkOWY5NDkyYTNmOTYwZjQ1NzQxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmgKQEAgLTI4LDggKzI4LDEw
IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiSW50UmVjdC5oIgorI2luY2x1ZGUgIkJp
dG1hcFBpeGVscy5oIgogI2luY2x1ZGUgIkltYWdlU291cmNlLmgiCisjaW5jbHVkZSAiSW50UmVj
dC5oIgorI2luY2x1ZGUgIkludFNpemUuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVNjcmVlbi5oIgog
I2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CkBA
IC01Nyw3ICs1OSw2IEBAIHVzaW5nIENvbG9yUHJvZmlsZSA9IFZlY3RvcjxjaGFyPjsKICAgICAg
ICAgICAgIERpc3Bvc2VPdmVyd3JpdGVQcmV2aW91cyAgLy8gQ2xlYXIgZnJhbWUgdG8gcHJldmlv
dXMgZnJhbWVidWZmZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
Y29udGVudHMKICAgICAgICAgfTsKLSAgICAgICAgdHlwZWRlZiB1bnNpZ25lZCBQaXhlbERhdGE7
CiAKICAgICAgICAgSW1hZ2VGcmFtZSgpOwogCkBAIC04MCwxNTEgKzgxLDYxIEBAIHVzaW5nIENv
bG9yUHJvZmlsZSA9IFZlY3RvcjxjaGFyPjsKICAgICAgICAgLy8gQ29waWVzIHRoZSBwaXhlbCBk
YXRhIGF0IFsoc3RhcnRYLCBzdGFydFkpLCAoZW5kWCwgc3RhcnRZKSkgdG8gdGhlCiAgICAgICAg
IC8vIHNhbWUgWC1jb29yZGluYXRlcyBvbiBlYWNoIHN1YnNlcXVlbnQgcm93IHVwIHRvIGJ1dCBu
b3QgaW5jbHVkaW5nCiAgICAgICAgIC8vIGVuZFkuCi0gICAgICAgIHZvaWQgY29weVJvd05UaW1l
cyhpbnQgc3RhcnRYLCBpbnQgZW5kWCwgaW50IHN0YXJ0WSwgaW50IGVuZFkpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIEFTU0VSVChzdGFydFggPCB3aWR0aCgpKTsKLSAgICAgICAgICAgIEFTU0VS
VChlbmRYIDw9IHdpZHRoKCkpOwotICAgICAgICAgICAgQVNTRVJUKHN0YXJ0WSA8IGhlaWdodCgp
KTsKLSAgICAgICAgICAgIEFTU0VSVChlbmRZIDw9IGhlaWdodCgpKTsKLSAgICAgICAgICAgIGNv
bnN0IGludCByb3dCeXRlcyA9IChlbmRYIC0gc3RhcnRYKSAqIHNpemVvZihQaXhlbERhdGEpOwot
ICAgICAgICAgICAgY29uc3QgUGl4ZWxEYXRhKiBjb25zdCBzdGFydEFkZHIgPSBnZXRBZGRyKHN0
YXJ0WCwgc3RhcnRZKTsKLSAgICAgICAgICAgIGZvciAoaW50IGRlc3RZID0gc3RhcnRZICsgMTsg
ZGVzdFkgPCBlbmRZOyArK2Rlc3RZKQotICAgICAgICAgICAgICAgIG1lbWNweShnZXRBZGRyKHN0
YXJ0WCwgZGVzdFkpLCBzdGFydEFkZHIsIHJvd0J5dGVzKTsKLSAgICAgICAgfQorICAgICAgICB2
b2lkIGNvcHlSb3dOVGltZXMoaW50IHN0YXJ0WCwgaW50IGVuZFgsIGludCBzdGFydFksIGludCBl
bmRZKTsKIAogICAgICAgICAvLyBBbGxvY2F0ZXMgc3BhY2UgZm9yIHRoZSBwaXhlbCBkYXRhLiAg
TXVzdCBiZSBjYWxsZWQgYmVmb3JlIGFueSBwaXhlbHMKICAgICAgICAgLy8gYXJlIHdyaXR0ZW4u
ICBNdXN0IG9ubHkgYmUgY2FsbGVkIG9uY2UuICBSZXR1cm5zIHdoZXRoZXIgYWxsb2NhdGlvbgog
ICAgICAgICAvLyBzdWNjZWVkZWQuCi0gICAgICAgIGJvb2wgc2V0U2l6ZShpbnQgbmV3V2lkdGgs
IGludCBuZXdIZWlnaHQpOworICAgICAgICBib29sIHNldFNpemUoY29uc3QgSW50U2l6ZSYsIGJv
b2wgcHJlbXVsdGlwbHlBbHBoYSk7CisgICAgICAgIAorICAgICAgICBJbnRTaXplIHNpemUoKSBj
b25zdCB7IHJldHVybiBtX3BpeGVscy0+c2l6ZSgpOyB9CiAKICAgICAgICAgLy8gUmV0dXJucyBh
IGNhbGxlci1vd25lZCBwb2ludGVyIHRvIHRoZSB1bmRlcmx5aW5nIG5hdGl2ZSBpbWFnZSBkYXRh
LgogICAgICAgICAvLyAoQWN0dWFsIHVzZTogVGhpcyBwb2ludGVyIHdpbGwgYmUgb3duZWQgYnkg
Qml0bWFwSW1hZ2UgYW5kIGZyZWVkIGluCiAgICAgICAgIC8vIEZyYW1lRGF0YTo6Y2xlYXIoKSku
Ci0gICAgICAgIE5hdGl2ZUltYWdlUHRyIGFzTmV3TmF0aXZlSW1hZ2UoKSBjb25zdDsKKyAgICAg
ICAgTmF0aXZlSW1hZ2VQdHIgYXNOZXdOYXRpdmVJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGl4
ZWxzLT5pbWFnZSgpOyB9CisKKyAgICAgICAgaW5saW5lIEJpdG1hcFBpeGVscyogcGl4ZWxzKCkg
Y29uc3QgeyByZXR1cm4gbV9waXhlbHMgPyBtX3BpeGVscy5nZXQoKSA6IG51bGxwdHI7IH0KKyAg
ICAgICAgaW5saW5lIGJvb2wgaGFzUGl4ZWxzKCkgY29uc3QgeyByZXR1cm4gcGl4ZWxzKCk7IH0K
IAogICAgICAgICBib29sIGhhc0FscGhhKCkgY29uc3Q7Ci0gICAgICAgIGNvbnN0IEludFJlY3Qm
IG9yaWdpbmFsRnJhbWVSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW5hbEZyYW1lUmVjdDsg
fQogICAgICAgICBGcmFtZVN0YXR1cyBzdGF0dXMoKSBjb25zdCB7IHJldHVybiBtX3N0YXR1czsg
fQogICAgICAgICB1bnNpZ25lZCBkdXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZHVyYXRpb247
IH0KICAgICAgICAgRnJhbWVEaXNwb3NhbE1ldGhvZCBkaXNwb3NhbE1ldGhvZCgpIGNvbnN0IHsg
cmV0dXJuIG1fZGlzcG9zYWxNZXRob2Q7IH0KLSAgICAgICAgYm9vbCBwcmVtdWx0aXBseUFscGhh
KCkgY29uc3QgeyByZXR1cm4gbV9wcmVtdWx0aXBseUFscGhhOyB9CiAKICAgICAgICAgdm9pZCBz
ZXRIYXNBbHBoYShib29sIGFscGhhKTsKLSAgICAgICAgdm9pZCBzZXRDb2xvclByb2ZpbGUoY29u
c3QgQ29sb3JQcm9maWxlJik7Ci0gICAgICAgIHZvaWQgc2V0T3JpZ2luYWxGcmFtZVJlY3QoY29u
c3QgSW50UmVjdCYgcikgeyBtX29yaWdpbmFsRnJhbWVSZWN0ID0gcjsgfQogICAgICAgICB2b2lk
IHNldFN0YXR1cyhGcmFtZVN0YXR1cyBzdGF0dXMpOwogICAgICAgICB2b2lkIHNldER1cmF0aW9u
KHVuc2lnbmVkIGR1cmF0aW9uKSB7IG1fZHVyYXRpb24gPSBkdXJhdGlvbjsgfQogICAgICAgICB2
b2lkIHNldERpc3Bvc2FsTWV0aG9kKEZyYW1lRGlzcG9zYWxNZXRob2QgbWV0aG9kKSB7IG1fZGlz
cG9zYWxNZXRob2QgPSBtZXRob2Q7IH0KLSAgICAgICAgdm9pZCBzZXRQcmVtdWx0aXBseUFscGhh
KGJvb2wgcHJlbXVsdGlwbHlBbHBoYSkgeyBtX3ByZW11bHRpcGx5QWxwaGEgPSBwcmVtdWx0aXBs
eUFscGhhOyB9CiAKICAgICAgICAgaW5saW5lIHZvaWQgc2V0UkdCQShpbnQgeCwgaW50IHksIHVu
c2lnbmVkIHIsIHVuc2lnbmVkIGcsIHVuc2lnbmVkIGIsIHVuc2lnbmVkIGEpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIHNldFJHQkEoZ2V0QWRkcih4LCB5KSwgciwgZywgYiwgYSk7CisgICAgICAg
ICAgICBtX3BpeGVscy0+c2V0UkdCQSh4LCB5LCByLCBnLCBiLCBhKTsKICAgICAgICAgfQogCi0g
ICAgICAgIGlubGluZSBQaXhlbERhdGEqIGdldEFkZHIoaW50IHgsIGludCB5KQorICAgICAgICBp
bmxpbmUgUkdCQTMyKiBnZXRBZGRyKGludCB4LCBpbnQgeSkKICAgICAgICAgewotICAgICAgICAg
ICAgcmV0dXJuIG1fYnl0ZXMgKyAoeSAqIHdpZHRoKCkpICsgeDsKKyAgICAgICAgICAgIHJldHVy
biBtX3BpeGVscy0+YXQoeCwgeSk7CiAgICAgICAgIH0KIAotICAgICAgICBpbmxpbmUgYm9vbCBo
YXNQaXhlbERhdGEoKSBjb25zdAorICAgICAgICBpbmxpbmUgdm9pZCBzZXRSR0JBKFJHQkEzMiog
ZGVzdCwgdW5zaWduZWQgciwgdW5zaWduZWQgZywgdW5zaWduZWQgYiwgdW5zaWduZWQgYSkKICAg
ICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG1fYnl0ZXM7Ci0gICAgICAgIH0KLQotICAgICAg
ICAvLyBVc2UgZml4IHBvaW50IG11bHRpcGxpZXIgaW5zdGVhZCBvZiBpbnRlZ2VyIGRpdmlzaW9u
IG9yIGZsb2F0aW5nIHBvaW50IG1hdGguCi0gICAgICAgIC8vIFRoaXMgbXVsdGlwbGVyIHByb2R1
Y2VzIGV4YWN0bHkgdGhlIHNhbWUgcmVzdWx0IGZvciBhbGwgdmFsdWVzIGluIHJhbmdlIDAgLSAy
NTUuCi0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBmaXhQb2ludFNoaWZ0ID0gMjQ7Ci0g
ICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBmaXhQb2ludE11bHQgPSBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oMS4wIC8gMjU1LjAgKiAoMSA8PCBmaXhQb2ludFNoaWZ0KSkgKyAxOwotICAgICAg
ICAvLyBNdWx0aXBsaWVzIHVuc2lnbmVkIHZhbHVlIGJ5IGZpeHBvaW50IHZhbHVlIGFuZCBjb252
ZXJ0cyBiYWNrIHRvIHVuc2lnbmVkLgotICAgICAgICBzdGF0aWMgdW5zaWduZWQgZml4UG9pbnRV
bnNpZ25lZE11bHRpcGx5KHVuc2lnbmVkIGZpeGVkLCB1bnNpZ25lZCB2KQotICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4gIChmaXhlZCAqIHYpID4+IGZpeFBvaW50U2hpZnQ7Ci0gICAgICAg
IH0KLQotICAgICAgICBpbmxpbmUgdm9pZCBzZXRSR0JBKFBpeGVsRGF0YSogZGVzdCwgdW5zaWdu
ZWQgciwgdW5zaWduZWQgZywgdW5zaWduZWQgYiwgdW5zaWduZWQgYSkKLSAgICAgICAgewotICAg
ICAgICAgICAgaWYgKG1fcHJlbXVsdGlwbHlBbHBoYSAmJiBhIDwgMjU1KSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKCFhKSB7Ci0gICAgICAgICAgICAgICAgICAgICpkZXN0ID0gMDsKLSAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGFscGhhTXVsdCA9IGEgKiBmaXhQb2ludE11bHQ7Ci0gICAgICAgICAgICAgICAg
ciA9IGZpeFBvaW50VW5zaWduZWRNdWx0aXBseShyLCBhbHBoYU11bHQpOwotICAgICAgICAgICAg
ICAgIGcgPSBmaXhQb2ludFVuc2lnbmVkTXVsdGlwbHkoZywgYWxwaGFNdWx0KTsKLSAgICAgICAg
ICAgICAgICBiID0gZml4UG9pbnRVbnNpZ25lZE11bHRpcGx5KGIsIGFscGhhTXVsdCk7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAqZGVzdCA9IChhIDw8IDI0IHwgciA8PCAxNiB8IGcgPDwg
OCB8IGIpOworICAgICAgICAgICAgbV9waXhlbHMtPnNldFJHQkEoZGVzdCwgciwgZywgYiwgYSk7
CiAgICAgICAgIH0KIAogI2lmIEVOQUJMRShBUE5HKQotICAgICAgICBzdGF0aWMgaW5saW5lIHVu
c2lnbmVkIGRpdmlkZTI1NSh1bnNpZ25lZCBhKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1
cm4gKGEgKyAoYSA+PiA4KSArIDEpID4+IDg7Ci0gICAgICAgIH0KLQotICAgICAgICBpbmxpbmUg
dm9pZCBvdmVyUkdCQShQaXhlbERhdGEqIGRlc3QsIHVuc2lnbmVkIHIsIHVuc2lnbmVkIGcsIHVu
c2lnbmVkIGIsIHVuc2lnbmVkIGEpCisgICAgICAgIGlubGluZSB2b2lkIG92ZXJSR0JBKFJHQkEz
MiogZGVzdCwgdW5zaWduZWQgciwgdW5zaWduZWQgZywgdW5zaWduZWQgYiwgdW5zaWduZWQgYSkK
ICAgICAgICAgewotICAgICAgICAgICAgaWYgKCFhKQotICAgICAgICAgICAgICAgIHJldHVybjsK
LQotICAgICAgICAgICAgaWYgKGEgPCAyNTUpIHsKLSAgICAgICAgICAgICAgICB1bnNpZ25lZCBh
RGVzdCA9ICgoKmRlc3QpID4+IDI0KSAmIDI1NTsKLSAgICAgICAgICAgICAgICBpZiAoYURlc3Qp
IHsKLSAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgckRlc3QgPSAoKCpkZXN0KSA+PiAxNikg
JiAyNTU7Ci0gICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGdEZXN0ID0gKCgqZGVzdCkgPj4g
OCkgJiAyNTU7Ci0gICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGJEZXN0ID0gKCpkZXN0KSAm
IDI1NTsKLSAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgYUF1eCA9IDI1NSAtIGE7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmICghbV9wcmVtdWx0aXBseUFscGhhKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICByRGVzdCA9IGRpdmlkZTI1NShyRGVzdCAqIGFEZXN0KTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGdEZXN0ID0gZGl2aWRlMjU1KGdEZXN0ICogYURlc3QpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgYkRlc3QgPSBkaXZpZGUyNTUoYkRlc3QgKiBhRGVzdCk7Ci0gICAgICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgciA9IGRpdmlkZTI1NShyICogYSAr
IHJEZXN0ICogYUF1eCk7Ci0gICAgICAgICAgICAgICAgICAgIGcgPSBkaXZpZGUyNTUoZyAqIGEg
KyBnRGVzdCAqIGFBdXgpOwotICAgICAgICAgICAgICAgICAgICBiID0gZGl2aWRlMjU1KGIgKiBh
ICsgYkRlc3QgKiBhQXV4KTsKLSAgICAgICAgICAgICAgICAgICAgYSArPSBkaXZpZGUyNTUoYURl
c3QgKiBhQXV4KTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFtX3ByZW11bHRpcGx5QWxwaGEp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHIgPSAociAqIDI1NSArIGEgLSAxKSAvIGE7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBnID0gKGcgKiAyNTUgKyBhIC0gMSkgLyBhOwotICAgICAg
ICAgICAgICAgICAgICAgICAgYiA9IChiICogMjU1ICsgYSAtIDEpIC8gYTsKLSAgICAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobV9wcmVtdWx0aXBseUFscGhh
KSB7Ci0gICAgICAgICAgICAgICAgICAgIHIgPSBkaXZpZGUyNTUociAqIGEpOwotICAgICAgICAg
ICAgICAgICAgICBnID0gZGl2aWRlMjU1KGcgKiBhKTsKLSAgICAgICAgICAgICAgICAgICAgYiA9
IGRpdmlkZTI1NShiICogYSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgKmRlc3QgPSAoYSA8PCAyNCB8IHIgPDwgMTYgfCBnIDw8IDggfCBiKTsKKyAgICAg
ICAgICAgIG1fcGl4ZWxzLT5vdmVyUkdCQShkZXN0LCByLCBnLCBiLCBhKTsKICAgICAgICAgfQog
I2VuZGlmCiAKICAgICBwcml2YXRlOgotICAgICAgICBpbnQgd2lkdGgoKSBjb25zdAotICAgICAg
ICB7Ci0gICAgICAgICAgICByZXR1cm4gbV9zaXplLndpZHRoKCk7Ci0gICAgICAgIH0KLQotICAg
ICAgICBpbnQgaGVpZ2h0KCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG1f
c2l6ZS5oZWlnaHQoKTsKLSAgICAgICAgfQotCi0gICAgICAgIFZlY3RvcjxQaXhlbERhdGE+IG1f
YmFja2luZ1N0b3JlOwotICAgICAgICBQaXhlbERhdGEqIG1fYnl0ZXM7IC8vIFRoZSBtZW1vcnkg
aXMgYmFja2VkIGJ5IG1fYmFja2luZ1N0b3JlLgotICAgICAgICBJbnRTaXplIG1fc2l6ZTsKLSAg
ICAgICAgLy8gRklYTUU6IERvIHdlIG5lZWQgbV9jb2xvclByb2ZpbGUgYW55bW9yZT8KLSAgICAg
ICAgQ29sb3JQcm9maWxlIG1fY29sb3JQcm9maWxlOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8
Qml0bWFwUGl4ZWxzPiBtX3BpeGVsczsKICAgICAgICAgYm9vbCBtX2hhc0FscGhhOwotICAgICAg
ICBJbnRSZWN0IG1fb3JpZ2luYWxGcmFtZVJlY3Q7IC8vIFRoaXMgd2lsbCBhbHdheXMganVzdCBi
ZSB0aGUgZW50aXJlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYnVm
ZmVyIGV4Y2VwdCBmb3IgR0lGIGZyYW1lcyB3aG9zZQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIG9yaWdpbmFsIHJlY3Qgd2FzIHNtYWxsZXIgdGhhbiB0aGUKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdmVyYWxsIGltYWdlIHNpemUuCiAg
ICAgICAgIEZyYW1lU3RhdHVzIG1fc3RhdHVzOwogICAgICAgICB1bnNpZ25lZCBtX2R1cmF0aW9u
OwogICAgICAgICBGcmFtZURpc3Bvc2FsTWV0aG9kIG1fZGlzcG9zYWxNZXRob2Q7Ci0gICAgICAg
IGJvb2wgbV9wcmVtdWx0aXBseUFscGhhOwogICAgIH07CiAKICAgICAvLyBJbWFnZURlY29kZXIg
aXMgYSBiYXNlIGZvciBhbGwgZm9ybWF0LXNwZWNpZmljIGRlY29kZXJzCkBAIC0yNTMsNiArMTY0
LDggQEAgdXNpbmcgQ29sb3JQcm9maWxlID0gVmVjdG9yPGNoYXI+OwogCiAgICAgICAgIHZpcnR1
YWwgU3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3QgPSAwOwogCisgICAgICAgIGJvb2wg
cHJlbXVsdGlwbHlBbHBoYSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJlbXVsdGlwbHlBbHBoYTsgfQor
CiAgICAgICAgIGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzQWxs
RGF0YVJlY2VpdmVkOyB9CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHNldERhdGEoU2hhcmVkQnVm
ZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKQEAgLTI5MCwxMSArMjAzLDExIEBAIHVz
aW5nIENvbG9yUHJvZmlsZSA9IFZlY3RvcjxjaGFyPjsKIAogICAgICAgICAvLyBSZXR1cm5zIHdo
ZXRoZXIgdGhlIHNpemUgaXMgbGVnYWwgKGkuZS4gbm90IGdvaW5nIHRvIHJlc3VsdCBpbgogICAg
ICAgICAvLyBvdmVyZmxvdyBlbHNld2hlcmUpLiAgSWYgbm90LCBtYXJrcyBkZWNvZGluZyBhcyBm
YWlsZWQuCi0gICAgICAgIHZpcnR1YWwgYm9vbCBzZXRTaXplKHVuc2lnbmVkIHdpZHRoLCB1bnNp
Z25lZCBoZWlnaHQpCisgICAgICAgIHZpcnR1YWwgYm9vbCBzZXRTaXplKGNvbnN0IEludFNpemUm
IHNpemUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmIChpc092ZXJTaXplKHdpZHRoLCBoZWln
aHQpKQorICAgICAgICAgICAgaWYgKGlzT3ZlclNpemUoc2l6ZSkpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIHNldEZhaWxlZCgpOwotICAgICAgICAgICAgbV9zaXplID0gSW50U2l6ZSh3aWR0aCwg
aGVpZ2h0KTsKKyAgICAgICAgICAgIG1fc2l6ZSA9IHNpemU7CiAgICAgICAgICAgICBtX3NpemVB
dmFpbGFibGUgPSB0cnVlOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KQEAg
LTM4MSw4ICsyOTQsNiBAQCB1c2luZyBDb2xvclByb2ZpbGUgPSBWZWN0b3I8Y2hhcj47CiAKICAg
ICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOyAvLyBUaGUgZW5jb2RlZCBkYXRhLgog
ICAgICAgICBWZWN0b3I8SW1hZ2VGcmFtZSwgMT4gbV9mcmFtZUJ1ZmZlckNhY2hlOwotICAgICAg
ICAvLyBGSVhNRTogRG8gd2UgbmVlZCBtX2NvbG9yUHJvZmlsZSBhbnkgbW9yZSwgZm9yIGFueSBw
b3J0PwotICAgICAgICBDb2xvclByb2ZpbGUgbV9jb2xvclByb2ZpbGU7CiAgICAgICAgIGJvb2wg
bV9zY2FsZWQgeyBmYWxzZSB9OwogICAgICAgICBWZWN0b3I8aW50PiBtX3NjYWxlZENvbHVtbnM7
CiAgICAgICAgIFZlY3RvcjxpbnQ+IG1fc2NhbGVkUm93czsKQEAgLTM5MywxMSArMzA0LDEwIEBA
IHVzaW5nIENvbG9yUHJvZmlsZSA9IFZlY3RvcjxjaGFyPjsKICAgICBwcml2YXRlOgogICAgICAg
ICAvLyBTb21lIGNvZGUgcGF0aHMgY29tcHV0ZSB0aGUgc2l6ZSBvZiB0aGUgaW1hZ2UgYXMgIndp
ZHRoICogaGVpZ2h0ICogNCIKICAgICAgICAgLy8gYW5kIHJldHVybiBpdCBhcyBhIChzaWduZWQp
IGludC4gIEF2b2lkIG92ZXJmbG93LgotICAgICAgICBzdGF0aWMgYm9vbCBpc092ZXJTaXplKHVu
c2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQpCisgICAgICAgIHN0YXRpYyBib29sIGlzT3Zl
clNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKICAgICAgICAgewotICAgICAgICAgICAgdW5zaWdu
ZWQgbG9uZyBsb25nIHRvdGFsX3NpemUgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+
KHdpZHRoKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBzdGF0
aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KGhlaWdodCk7Ci0gICAgICAgICAgICByZXR1cm4g
dG90YWxfc2l6ZSA+ICgoMSA8PCAyOSkgLSAxKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcg
bG9uZyBwaXhlbHMgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KHNpemUud2lkdGgo
KSkgKiBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KHNpemUuaGVpZ2h0KCkpOworICAg
ICAgICAgICAgcmV0dXJuIHBpeGVscyA+ICgoMSA8PCAyOSkgLSAxKTsKICAgICAgICAgfQogCiAg
ICAgICAgIEludFNpemUgbV9zaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBj
YWYzNWM5N2YxN2VkZDM0YmM5ZGY4OWFiMDllODcwMGFlZTZjN2RmLi40NTdhZWYwN2FkNjM0ZTAy
MWJhM2VkZTNkNTEzYzc0YTVkOGViOWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcApA
QCAtNzAsMTAgKzcwLDggQEAgSW1hZ2VGcmFtZSogQk1QSW1hZ2VEZWNvZGVyOjpmcmFtZUJ1ZmZl
ckF0SW5kZXgoc2l6ZV90IGluZGV4KQogICAgIGlmIChpbmRleCkKICAgICAgICAgcmV0dXJuIDA7
CiAKLSAgICBpZiAobV9mcmFtZUJ1ZmZlckNhY2hlLmlzRW1wdHkoKSkgeworICAgIGlmIChtX2Zy
YW1lQnVmZmVyQ2FjaGUuaXNFbXB0eSgpKQogICAgICAgICBtX2ZyYW1lQnVmZmVyQ2FjaGUucmVz
aXplKDEpOwotICAgICAgICBtX2ZyYW1lQnVmZmVyQ2FjaGUuZmlyc3QoKS5zZXRQcmVtdWx0aXBs
eUFscGhhKG1fcHJlbXVsdGlwbHlBbHBoYSk7Ci0gICAgfQogCiAgICAgSW1hZ2VGcmFtZSogYnVm
ZmVyID0gJm1fZnJhbWVCdWZmZXJDYWNoZS5maXJzdCgpOwogICAgIGlmIChidWZmZXItPnN0YXR1
cygpICE9IEltYWdlRnJhbWU6OkZyYW1lQ29tcGxldGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VSZWFkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVhZGVyLmNw
cAppbmRleCA1YzAwNTUzNGVjZDkyMTM0YTEzYjMyOTU4OTI3NzkwZjA3YWQwZjgxLi45ODFjMTFm
ZTk2ODIwNzk2M2ZhY2I1ZGYxZWZlYTFkMGRlOWIwYTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VSZWFkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZVJlYWRl
ci5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgYm9vbCBCTVBJbWFnZVJlYWRlcjo6ZGVjb2RlQk1QKGJv
b2wgb25seVNpemUpCiAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgZnJhbWVidWZmZXIgaWYgbmVlZGVk
LgogICAgIEFTU0VSVChtX2J1ZmZlcik7ICAvLyBQYXJlbnQgc2hvdWxkIHNldCB0aGlzIGJlZm9y
ZSBhc2tpbmcgdXMgdG8gZGVjb2RlIQogICAgIGlmIChtX2J1ZmZlci0+c3RhdHVzKCkgPT0gSW1h
Z2VGcmFtZTo6RnJhbWVFbXB0eSkgewotICAgICAgICBpZiAoIW1fYnVmZmVyLT5zZXRTaXplKG1f
cGFyZW50LT5zaXplKCkud2lkdGgoKSwgbV9wYXJlbnQtPnNpemUoKS5oZWlnaHQoKSkpCisgICAg
ICAgIGlmICghbV9idWZmZXItPnNldFNpemUobV9wYXJlbnQtPnNpemUoKSwgbV9wYXJlbnQtPnBy
ZW11bHRpcGx5QWxwaGEoKSkpCiAgICAgICAgICAgICByZXR1cm4gbV9wYXJlbnQtPnNldEZhaWxl
ZCgpOyAvLyBVbmFibGUgdG8gYWxsb2NhdGUuCiAgICAgICAgIG1fYnVmZmVyLT5zZXRTdGF0dXMo
SW1hZ2VGcmFtZTo6RnJhbWVQYXJ0aWFsKTsKICAgICAgICAgLy8gc2V0U2l6ZSgpIGNhbGxzIGVy
YXNlQVJHQigpLCB3aGljaCByZXNldHMgdGhlIGFscGhhIGZsYWcsIHNvIHdlIGZvcmNlCkBAIC04
Niw5ICs4Niw2IEBAIGJvb2wgQk1QSW1hZ2VSZWFkZXI6OmRlY29kZUJNUChib29sIG9ubHlTaXpl
KQogICAgICAgICAvLyB0aGVzZSAwcyBjb3VsZCBhY3R1YWxseSBzaG93IHRocm91Z2guCiAgICAg
ICAgIG1fYnVmZmVyLT5zZXRIYXNBbHBoYShmYWxzZSk7CiAKLSAgICAgICAgLy8gRm9yIEJNUHMs
IHRoZSBmcmFtZSBhbHdheXMgZmlsbHMgdGhlIGVudGlyZSBpbWFnZS4KLSAgICAgICAgbV9idWZm
ZXItPnNldE9yaWdpbmFsRnJhbWVSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgbV9wYXJlbnQtPnNp
emUoKSkpOwotCiAgICAgICAgIGlmICghbV9pc1RvcERvd24pCiAgICAgICAgICAgICBtX2Nvb3Jk
LnNldFkobV9wYXJlbnQtPnNpemUoKS5oZWlnaHQoKSAtIDEpOwogICAgIH0KQEAgLTE3MSw3ICsx
NjgsNyBAQCBib29sIEJNUEltYWdlUmVhZGVyOjpwcm9jZXNzSW5mb0hlYWRlcigpCiAgICAgICAg
IHJldHVybiBtX3BhcmVudC0+c2V0RmFpbGVkKCk7CiAKICAgICAvLyBTZXQgb3VyIHNpemUuCi0g
ICAgaWYgKCFtX3BhcmVudC0+c2V0U2l6ZShtX2luZm9IZWFkZXIuYmlXaWR0aCwgbV9pbmZvSGVh
ZGVyLmJpSGVpZ2h0KSkKKyAgICBpZiAoIW1fcGFyZW50LT5zZXRTaXplKEludFNpemUobV9pbmZv
SGVhZGVyLmJpV2lkdGgsIG1faW5mb0hlYWRlci5iaUhlaWdodCkpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICAvLyBGb3IgcGFsZXR0ZWQgaW1hZ2VzLCBiaXRtYXBzIGNhbiBzZXQgYmlD
bHJVc2VkIHRvIDAgdG8gbWVhbiAiYWxsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9CaXRtYXBQaXhlbHNDYWlyby5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9CaXRtYXBQaXhlbHNDYWlyby5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNWFhZjhhMGEzNmIxOGNiZjcyNzdkMmMyZTI2ZWI0MTcxMjU2MDBkNQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2NhaXJvL0JpdG1hcFBpeGVsc0NhaXJvLmNwcApAQCAtMCwwICsxLDQwIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiQml0bWFwUGl4ZWxzLmgiCisKKyNpbmNsdWRlIDxjYWlyby5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK05hdGl2ZUltYWdlUHRyIEJpdG1hcFBpeGVsczo6aW1hZ2UoKSBj
b25zdAoreworICAgIHJldHVybiBhZG9wdFJlZihjYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZV9m
b3JfZGF0YSgKKyAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBjaGFyKj4oY29uc3Rf
Y2FzdDxSR0JBMzIqPihtX3BpeGVscykpLAorICAgICAgICBDQUlST19GT1JNQVRfQVJHQjMyLCBz
aXplKCkud2lkdGgoKSwgc2l6ZSgpLmhlaWdodCgpLCBzaXplKCkud2lkdGgoKSAqIHNpemVvZihS
R0JBMzIpKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdlRGVjb2RlckNhaXJv
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdl
RGVjb2RlckNhaXJvLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2I0MTI5NWY4
NTczNThmYmJmMzVjMWIwNTI1ZThkNmNjMzUyMGY1OC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9jYWlyby9JbWFnZURlY29kZXJDYWlyby5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MCAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSW1hZ2VEZWNvZGVyLmgiCi0KLSNpbmNsdWRl
IDxjYWlyby5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLU5hdGl2ZUltYWdlUHRyIEltYWdl
RnJhbWU6OmFzTmV3TmF0aXZlSW1hZ2UoKSBjb25zdAotewotICAgIHJldHVybiBhZG9wdFJlZihj
YWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZV9mb3JfZGF0YSgKLSAgICAgICAgcmVpbnRlcnByZXRf
Y2FzdDx1bnNpZ25lZCBjaGFyKj4oY29uc3RfY2FzdDxQaXhlbERhdGEqPihtX2J5dGVzKSksCi0g
ICAgICAgIENBSVJPX0ZPUk1BVF9BUkdCMzIsIHdpZHRoKCksIGhlaWdodCgpLCB3aWR0aCgpICog
c2l6ZW9mKFBpeGVsRGF0YSkpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdl
RGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYv
R0lGSW1hZ2VEZWNvZGVyLmNwcAppbmRleCA5Zjk5MmE3YmUxZDY2NzIyNjc1YzJlODU0YWQxODkx
ZTYwZjg1NzdjLi4yNWE3NDhjNTFiMTJhYjk2ZjM0MzFmNzRjN2IxYTVhMzI1MDc0ODRlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1h
Z2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcApAQCAtNjAsMTIgKzYwLDEyIEBAIGJvb2wgR0lGSW1h
Z2VEZWNvZGVyOjppc1NpemVBdmFpbGFibGUoKQogICAgIHJldHVybiBJbWFnZURlY29kZXI6Omlz
U2l6ZUF2YWlsYWJsZSgpOwogfQogCi1ib29sIEdJRkltYWdlRGVjb2Rlcjo6c2V0U2l6ZSh1bnNp
Z25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0KQorYm9vbCBHSUZJbWFnZURlY29kZXI6OnNldFNp
emUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKLSAgICBpZiAoSW1hZ2VEZWNvZGVyOjppc1NpemVB
dmFpbGFibGUoKSAmJiBzaXplKCkgPT0gSW50U2l6ZSh3aWR0aCwgaGVpZ2h0KSkKKyAgICBpZiAo
SW1hZ2VEZWNvZGVyOjppc1NpemVBdmFpbGFibGUoKSAmJiB0aGlzLT5zaXplKCkgPT1zaXplKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmICghSW1hZ2VEZWNvZGVyOjpzZXRTaXplKHdp
ZHRoLCBoZWlnaHQpKQorICAgIGlmICghSW1hZ2VEZWNvZGVyOjpzZXRTaXplKHNpemUpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBwcmVwYXJlU2NhbGVEYXRhSWZOZWNlc3NhcnkoKTsK
QEAgLTIxMywxMCArMjEzLDEwIEBAIGJvb2wgR0lGSW1hZ2VEZWNvZGVyOjpoYXZlRGVjb2RlZFJv
dyh1bnNpZ25lZCBmcmFtZUluZGV4LCBjb25zdCBWZWN0b3I8dW5zaWduZWQKIAogICAgIC8vIElu
aXRpYWxpemUgdGhlIGZyYW1lIGlmIG5lY2Vzc2FyeS4KICAgICBJbWFnZUZyYW1lJiBidWZmZXIg
PSBtX2ZyYW1lQnVmZmVyQ2FjaGVbZnJhbWVJbmRleF07Ci0gICAgaWYgKCgoYnVmZmVyLnN0YXR1
cygpID09IEltYWdlRnJhbWU6OkZyYW1lRW1wdHkpICYmICFpbml0RnJhbWVCdWZmZXIoZnJhbWVJ
bmRleCkpIHx8ICFidWZmZXIuaGFzUGl4ZWxEYXRhKCkpCisgICAgaWYgKCgoYnVmZmVyLnN0YXR1
cygpID09IEltYWdlRnJhbWU6OkZyYW1lRW1wdHkpICYmICFpbml0RnJhbWVCdWZmZXIoZnJhbWVJ
bmRleCkpIHx8ICFidWZmZXIuaGFzUGl4ZWxzKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIEltYWdlRnJhbWU6OlBpeGVsRGF0YSogY3VycmVudEFkZHJlc3MgPSBidWZmZXIuZ2V0QWRk
cih4QmVnaW4sIHlCZWdpbik7CisgICAgUkdCQTMyKiBjdXJyZW50QWRkcmVzcyA9IGJ1ZmZlci5n
ZXRBZGRyKHhCZWdpbiwgeUJlZ2luKTsKICAgICAvLyBXcml0ZSBvbmUgcm93J3Mgd29ydGggb2Yg
ZGF0YSBpbnRvIHRoZSBmcmFtZS4gIAogICAgIGZvciAoaW50IHggPSB4QmVnaW47IHggPCB4RW5k
OyArK3gpIHsKICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciBzb3VyY2VWYWx1ZSA9IHJvd0J1
ZmZlclsobV9zY2FsZWQgPyBtX3NjYWxlZENvbHVtbnNbeF0gOiB4KSAtIGZyYW1lQ29udGV4dC0+
eE9mZnNldF07CkBAIC0yNjAsNyArMjYwLDcgQEAgYm9vbCBHSUZJbWFnZURlY29kZXI6OmZyYW1l
Q29tcGxldGUodW5zaWduZWQgZnJhbWVJbmRleCwgdW5zaWduZWQgZnJhbWVEdXJhdGlvbiwKICAg
ICBpZiAoIW1fY3VycmVudEJ1ZmZlclNhd0FscGhhKSB7CiAgICAgICAgIC8vIFRoZSB3aG9sZSBm
cmFtZSB3YXMgbm9uLXRyYW5zcGFyZW50LCBzbyBpdCdzIHBvc3NpYmxlIHRoYXQgdGhlIGVudGly
ZQogICAgICAgICAvLyByZXN1bHRpbmcgYnVmZmVyIHdhcyBub24tdHJhbnNwYXJlbnQsIGFuZCB3
ZSBjYW4gc2V0SGFzQWxwaGEoZmFsc2UpLgotICAgICAgICBpZiAoYnVmZmVyLm9yaWdpbmFsRnJh
bWVSZWN0KCkuY29udGFpbnMoSW50UmVjdChJbnRQb2ludCgpLCBzY2FsZWRTaXplKCkpKSkKKyAg
ICAgICAgaWYgKGJ1ZmZlci5waXhlbHMoKS0+cmVjdCgpLmNvbnRhaW5zKEludFJlY3QoSW50UG9p
bnQoKSwgc2NhbGVkU2l6ZSgpKSkpCiAgICAgICAgICAgICBidWZmZXIuc2V0SGFzQWxwaGEoZmFs
c2UpOwogICAgICAgICBlbHNlIGlmIChmcmFtZUluZGV4KSB7CiAgICAgICAgICAgICAvLyBUcmlj
a3kgY2FzZS4gIFRoaXMgZnJhbWUgZG9lcyBub3QgaGF2ZSBhbHBoYSBvbmx5IGlmIGV2ZXJ5d2hl
cmUKQEAgLTI4Myw3ICsyODMsNyBAQCBib29sIEdJRkltYWdlRGVjb2Rlcjo6ZnJhbWVDb21wbGV0
ZSh1bnNpZ25lZCBmcmFtZUluZGV4LCB1bnNpZ25lZCBmcmFtZUR1cmF0aW9uLAogICAgICAgICAg
ICAgLy8gVGhlIG9ubHkgcmVtYWluaW5nIGNhc2UgaXMgYSBEaXNwb3NlT3ZlcndyaXRlQmdjb2xv
ciBmcmFtZS4gIElmCiAgICAgICAgICAgICAvLyBpdCBoYWQgbm8gYWxwaGEsIGFuZCBpdHMgcmVj
dCBpcyBjb250YWluZWQgaW4gdGhlIGN1cnJlbnQgZnJhbWUncwogICAgICAgICAgICAgLy8gcmVj
dCwgd2Uga25vdyB0aGUgY3VycmVudCBmcmFtZSBoYXMgbm8gYWxwaGEuCi0gICAgICAgICAgICBp
ZiAoKHByZXZCdWZmZXItPmRpc3Bvc2FsTWV0aG9kKCkgPT0gSW1hZ2VGcmFtZTo6RGlzcG9zZU92
ZXJ3cml0ZUJnY29sb3IpICYmICFwcmV2QnVmZmVyLT5oYXNBbHBoYSgpICYmIGJ1ZmZlci5vcmln
aW5hbEZyYW1lUmVjdCgpLmNvbnRhaW5zKHByZXZCdWZmZXItPm9yaWdpbmFsRnJhbWVSZWN0KCkp
KQorICAgICAgICAgICAgaWYgKChwcmV2QnVmZmVyLT5kaXNwb3NhbE1ldGhvZCgpID09IEltYWdl
RnJhbWU6OkRpc3Bvc2VPdmVyd3JpdGVCZ2NvbG9yKSAmJiAhcHJldkJ1ZmZlci0+aGFzQWxwaGEo
KSAmJiBidWZmZXIucGl4ZWxzKCktPnJlY3QoKS5jb250YWlucyhwcmV2QnVmZmVyLT5waXhlbHMo
KS0+cmVjdCgpKSkKICAgICAgICAgICAgICAgICBidWZmZXIuc2V0SGFzQWxwaGEoZmFsc2UpOwog
ICAgICAgICB9CiAgICAgfQpAQCAtMzIxLDEwICszMjEsNyBAQCB2b2lkIEdJRkltYWdlRGVjb2Rl
cjo6ZGVjb2RlKHVuc2lnbmVkIGhhbHRBdEZyYW1lLCBHSUZRdWVyeSBxdWVyeSkKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIGNvbnN0IHNpemVfdCBvbGRTaXplID0gbV9mcmFtZUJ1ZmZl
ckNhY2hlLnNpemUoKTsKICAgICBtX2ZyYW1lQnVmZmVyQ2FjaGUucmVzaXplKG1fcmVhZGVyLT5p
bWFnZXNDb3VudCgpKTsKLSAgICBmb3IgKHNpemVfdCBpID0gb2xkU2l6ZTsgaSA8IG1fcmVhZGVy
LT5pbWFnZXNDb3VudCgpOyArK2kpCi0gICAgICAgIG1fZnJhbWVCdWZmZXJDYWNoZVtpXS5zZXRQ
cmVtdWx0aXBseUFscGhhKG1fcHJlbXVsdGlwbHlBbHBoYSk7CiAKICAgICBpZiAocXVlcnkgPT0g
R0lGRnJhbWVDb3VudFF1ZXJ5KQogICAgICAgICByZXR1cm47CkBAIC0zNTMsMTUgKzM1MCwxMCBA
QCBib29sIEdJRkltYWdlRGVjb2Rlcjo6aW5pdEZyYW1lQnVmZmVyKHVuc2lnbmVkIGZyYW1lSW5k
ZXgpCiAgICAgICAgIGZyYW1lUmVjdC5zZXRIZWlnaHQoc2l6ZSgpLmhlaWdodCgpIC0gZnJhbWVD
b250ZXh0LT55T2Zmc2V0KTsKIAogICAgIEltYWdlRnJhbWUqIGNvbnN0IGJ1ZmZlciA9ICZtX2Zy
YW1lQnVmZmVyQ2FjaGVbZnJhbWVJbmRleF07Ci0gICAgaW50IGxlZnQgPSB1cHBlckJvdW5kU2Nh
bGVkWChmcmFtZVJlY3QueCgpKTsKLSAgICBpbnQgcmlnaHQgPSBsb3dlckJvdW5kU2NhbGVkWChm
cmFtZVJlY3QubWF4WCgpLCBsZWZ0KTsKLSAgICBpbnQgdG9wID0gdXBwZXJCb3VuZFNjYWxlZFko
ZnJhbWVSZWN0LnkoKSk7Ci0gICAgaW50IGJvdHRvbSA9IGxvd2VyQm91bmRTY2FsZWRZKGZyYW1l
UmVjdC5tYXhZKCksIHRvcCk7Ci0gICAgYnVmZmVyLT5zZXRPcmlnaW5hbEZyYW1lUmVjdChJbnRS
ZWN0KGxlZnQsIHRvcCwgcmlnaHQgLSBsZWZ0LCBib3R0b20gLSB0b3ApKTsKIAogICAgIGlmICgh
ZnJhbWVJbmRleCkgewogICAgICAgICAvLyBUaGlzIGlzIHRoZSBmaXJzdCBmcmFtZSwgc28gd2Un
cmUgbm90IHJlbHlpbmcgb24gYW55IHByZXZpb3VzIGRhdGEuCi0gICAgICAgIGlmICghYnVmZmVy
LT5zZXRTaXplKHNjYWxlZFNpemUoKS53aWR0aCgpLCBzY2FsZWRTaXplKCkuaGVpZ2h0KCkpKQor
ICAgICAgICBpZiAoIWJ1ZmZlci0+c2V0U2l6ZShzY2FsZWRTaXplKCksIHByZW11bHRpcGx5QWxw
aGEoKSkpCiAgICAgICAgICAgICByZXR1cm4gc2V0RmFpbGVkKCk7CiAgICAgfSBlbHNlIHsKICAg
ICAgICAgLy8gVGhlIHN0YXJ0aW5nIHN0YXRlIGZvciB0aGlzIGZyYW1lIGRlcGVuZHMgb24gdGhl
IHByZXZpb3VzIGZyYW1lJ3MKQEAgLTM4NywxMiArMzc5LDEyIEBAIGJvb2wgR0lGSW1hZ2VEZWNv
ZGVyOjppbml0RnJhbWVCdWZmZXIodW5zaWduZWQgZnJhbWVJbmRleCkKICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgIC8vIFdlIHdhbnQgdG8gY2xlYXIgdGhlIHByZXZpb3VzIGZyYW1lIHRv
IHRyYW5zcGFyZW50LCB3aXRob3V0CiAgICAgICAgICAgICAvLyBhZmZlY3RpbmcgcGl4ZWxzIGlu
IHRoZSBpbWFnZSBvdXRzaWRlIG9mIHRoZSBmcmFtZS4KLSAgICAgICAgICAgIGNvbnN0IEludFJl
Y3QmIHByZXZSZWN0ID0gcHJldkJ1ZmZlci0+b3JpZ2luYWxGcmFtZVJlY3QoKTsKKyAgICAgICAg
ICAgIGNvbnN0IEludFJlY3QmIHByZXZSZWN0ID0gcHJldkJ1ZmZlci0+cGl4ZWxzKCktPnJlY3Qo
KTsKICAgICAgICAgICAgIGNvbnN0IEludFNpemUmIGJ1ZmZlclNpemUgPSBzY2FsZWRTaXplKCk7
CiAgICAgICAgICAgICBpZiAoIWZyYW1lSW5kZXggfHwgcHJldlJlY3QuY29udGFpbnMoSW50UmVj
dChJbnRQb2ludCgpLCBzY2FsZWRTaXplKCkpKSkgewogICAgICAgICAgICAgICAgIC8vIENsZWFy
aW5nIHRoZSBmaXJzdCBmcmFtZSwgb3IgYSBmcmFtZSB0aGUgc2l6ZSBvZiB0aGUgd2hvbGUKICAg
ICAgICAgICAgICAgICAvLyBpbWFnZSwgcmVzdWx0cyBpbiBhIGNvbXBsZXRlbHkgZW1wdHkgaW1h
Z2UuCi0gICAgICAgICAgICAgICAgaWYgKCFidWZmZXItPnNldFNpemUoYnVmZmVyU2l6ZS53aWR0
aCgpLCBidWZmZXJTaXplLmhlaWdodCgpKSkKKyAgICAgICAgICAgICAgICBpZiAoIWJ1ZmZlci0+
c2V0U2l6ZShidWZmZXJTaXplLCBwcmVtdWx0aXBseUFscGhhKCkpKQogICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gc2V0RmFpbGVkKCk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgICAgIC8vIENvcHkgdGhlIHdob2xlIHByZXZpb3VzIGJ1ZmZlciwgdGhlbiBjbGVhciBqdXN0
IGl0cyBmcmFtZS4KQEAgLTQwMiw2ICszOTQsMTIgQEAgYm9vbCBHSUZJbWFnZURlY29kZXI6Omlu
aXRGcmFtZUJ1ZmZlcih1bnNpZ25lZCBmcmFtZUluZGV4KQogICAgICAgICAgICAgfQogICAgICAg
ICB9CiAgICAgfQorICAgIAorICAgIGludCBsZWZ0ID0gdXBwZXJCb3VuZFNjYWxlZFgoZnJhbWVS
ZWN0LngoKSk7CisgICAgaW50IHJpZ2h0ID0gbG93ZXJCb3VuZFNjYWxlZFgoZnJhbWVSZWN0Lm1h
eFgoKSwgbGVmdCk7CisgICAgaW50IHRvcCA9IHVwcGVyQm91bmRTY2FsZWRZKGZyYW1lUmVjdC55
KCkpOworICAgIGludCBib3R0b20gPSBsb3dlckJvdW5kU2NhbGVkWShmcmFtZVJlY3QubWF4WSgp
LCB0b3ApOworICAgIGJ1ZmZlci0+cGl4ZWxzKCktPnNldFJlY3QoSW50UmVjdChsZWZ0LCB0b3As
IHJpZ2h0IC0gbGVmdCwgYm90dG9tIC0gdG9wKSk7CiAKICAgICAvLyBVcGRhdGUgb3VyIHN0YXR1
cyB0byBiZSBwYXJ0aWFsbHkgY29tcGxldGUuCiAgICAgYnVmZmVyLT5zZXRTdGF0dXMoSW1hZ2VG
cmFtZTo6RnJhbWVQYXJ0aWFsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaAppbmRleCA5NWVjNmQw
YTdiNjk2NjUyYzcwOWI3YjYyZDQxYWE0ZjNhYjhmMWUwLi43YjhkODdjZmQ3MjFiMzA5MDcwYzQ5
OTg4ZjM0NWM5MDM1NGRhNWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5oCkBAIC00NCw3ICs0
NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgU3RyaW5nIGZpbGVuYW1lRXh0ZW5z
aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gImdpZiI7IH0KICAgICAgICAgdm9pZCBzZXRE
YXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIG92ZXJyaWRlOwog
ICAgICAgICBib29sIGlzU2l6ZUF2YWlsYWJsZSgpIG92ZXJyaWRlOwotICAgICAgICBib29sIHNl
dFNpemUodW5zaWduZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCkgb3ZlcnJpZGU7CisgICAgICAg
IGJvb2wgc2V0U2l6ZShjb25zdCBJbnRTaXplJikgb3ZlcnJpZGU7CiAgICAgICAgIHNpemVfdCBm
cmFtZUNvdW50KCkgb3ZlcnJpZGU7CiAgICAgICAgIGludCByZXBldGl0aW9uQ291bnQoKSBjb25z
dCBvdmVycmlkZTsKICAgICAgICAgSW1hZ2VGcmFtZSogZnJhbWVCdWZmZXJBdEluZGV4KHNpemVf
dCBpbmRleCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmNwcAppbmRleCAwMGQyNTJj
ZWZiMDVhYTUxZjg0ZDhkZjk5MDIyOTBlZmQ3MTA0MjJmLi41NThkOTc5NWVjMDhmODE1ZjMxYTQz
OGE3NDE0NDc5NWQyZjc4ZjgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5jcHAKQEAgLTQ0Nyw3
ICs0NDcsNyBAQCBib29sIEdJRkltYWdlUmVhZGVyOjpwYXJzZShzaXplX3QgZGF0YVBvc2l0aW9u
LCBzaXplX3QgbGVuLCBib29sIHBhcnNlU2l6ZU9ubHkpCiAKICAgICAgICAgICAgIC8vIENBTExC
QUNLOiBJbmZvcm0gdGhlIGRlY29kZXJwbHVnaW4gb2Ygb3VyIHNpemUuCiAgICAgICAgICAgICAv
LyBOb3RlOiBBIHN1YnNlcXVlbnQgZnJhbWUgbWlnaHQgaGF2ZSBkaW1lbnNpb25zIGxhcmdlciB0
aGFuIHRoZSAic2NyZWVuIiBkaW1lbnNpb25zLgotICAgICAgICAgICAgaWYgKG1fY2xpZW50ICYm
ICFtX2NsaWVudC0+c2V0U2l6ZShtX3NjcmVlbldpZHRoLCBtX3NjcmVlbkhlaWdodCkpCisgICAg
ICAgICAgICBpZiAobV9jbGllbnQgJiYgIW1fY2xpZW50LT5zZXRTaXplKFdlYkNvcmU6OkludFNp
emUobV9zY3JlZW5XaWR0aCwgbV9zY3JlZW5IZWlnaHQpKSkKICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICAgICAgICAgIG1fc2NyZWVuQmdjb2xvciA9IGN1cnJlbnRDb21wb25l
bnRbNV07CkBAIC02NjQsNyArNjY0LDcgQEAgYm9vbCBHSUZJbWFnZVJlYWRlcjo6cGFyc2Uoc2l6
ZV90IGRhdGFQb3NpdGlvbiwgc2l6ZV90IGxlbiwgYm9vbCBwYXJzZVNpemVPbmx5KQogICAgICAg
ICAgICAgICAgIHlPZmZzZXQgPSAwOwogCiAgICAgICAgICAgICAgICAgLy8gQ0FMTEJBQ0s6IElu
Zm9ybSB0aGUgZGVjb2RlcnBsdWdpbiBvZiBvdXIgc2l6ZS4KLSAgICAgICAgICAgICAgICBpZiAo
bV9jbGllbnQgJiYgIW1fY2xpZW50LT5zZXRTaXplKG1fc2NyZWVuV2lkdGgsIG1fc2NyZWVuSGVp
Z2h0KSkKKyAgICAgICAgICAgICAgICBpZiAobV9jbGllbnQgJiYgIW1fY2xpZW50LT5zZXRTaXpl
KFdlYkNvcmU6OkludFNpemUobV9zY3JlZW5XaWR0aCwgbV9zY3JlZW5IZWlnaHQpKSkKICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNv
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09J
bWFnZURlY29kZXIuY3BwCmluZGV4IGE1OTIwMWI1NmU1YjIyZTJhODUxYzBjOTkyZWE0YjFmODhj
YzNiNGYuLjNjYjRhMTM5YzRkNDU1NGE1OTc4NDU0NzEzZjBlOTM4OTViZjJkYWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURl
Y29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2lj
by9JQ09JbWFnZURlY29kZXIuY3BwCkBAIC04OCwyMSArODgsMjAgQEAgSW50U2l6ZSBJQ09JbWFn
ZURlY29kZXI6OmZyYW1lU2l6ZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVs
KQogICAgIHJldHVybiAoaW5kZXggJiYgKGluZGV4IDwgbV9kaXJFbnRyaWVzLnNpemUoKSkpID8g
bV9kaXJFbnRyaWVzW2luZGV4XS5tX3NpemUgOiBzaXplKCk7CiB9CiAKLWJvb2wgSUNPSW1hZ2VE
ZWNvZGVyOjpzZXRTaXplKHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQpCitib29sIElD
T0ltYWdlRGVjb2Rlcjo6c2V0U2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQogewogICAgIC8vIFRo
ZSBzaXplIGNhbGN1bGF0ZWQgaW5zaWRlIHRoZSBCTVBJbWFnZVJlYWRlciBoYWQgYmV0dGVyIG1h
dGNoIHRoZSBvbmUgaW4KICAgICAvLyB0aGUgaWNvbiBkaXJlY3RvcnkuCi0gICAgcmV0dXJuIG1f
ZnJhbWVTaXplLmlzRW1wdHkoKSA/IEltYWdlRGVjb2Rlcjo6c2V0U2l6ZSh3aWR0aCwgaGVpZ2h0
KSA6ICgoSW50U2l6ZSh3aWR0aCwgaGVpZ2h0KSA9PSBtX2ZyYW1lU2l6ZSkgfHwgc2V0RmFpbGVk
KCkpOworICAgIHJldHVybiBtX2ZyYW1lU2l6ZS5pc0VtcHR5KCkgPyBJbWFnZURlY29kZXI6OnNl
dFNpemUoc2l6ZSkgOiAoKHNpemUgPT0gbV9mcmFtZVNpemUpIHx8IHNldEZhaWxlZCgpKTsKIH0K
IAogc2l6ZV90IElDT0ltYWdlRGVjb2Rlcjo6ZnJhbWVDb3VudCgpCiB7CiAgICAgZGVjb2RlKDAs
IHRydWUpOwotICAgIGlmIChtX2ZyYW1lQnVmZmVyQ2FjaGUuaXNFbXB0eSgpKSB7CisKKyAgICBp
ZiAobV9mcmFtZUJ1ZmZlckNhY2hlLmlzRW1wdHkoKSkKICAgICAgICAgbV9mcmFtZUJ1ZmZlckNh
Y2hlLnJlc2l6ZShtX2RpckVudHJpZXMuc2l6ZSgpKTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBtX2RpckVudHJpZXMuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBtX2ZyYW1lQnVm
ZmVyQ2FjaGVbaV0uc2V0UHJlbXVsdGlwbHlBbHBoYShtX3ByZW11bHRpcGx5QWxwaGEpOwotICAg
IH0KKwogICAgIC8vIENBVVRJT046IFdlIG11c3Qgbm90IHJlc2l6ZSBtX2ZyYW1lQnVmZmVyQ2Fj
aGUgYWdhaW4gYWZ0ZXIgdGhpcywgYXMKICAgICAvLyBkZWNvZGVBdEluZGV4KCkgbWF5IGdpdmUg
YSBCTVBJbWFnZVJlYWRlciBhIHBvaW50ZXIgdG8gb25lIG9mIHRoZQogICAgIC8vIGVudHJpZXMu
CkBAIC0yMjAsNyArMjE5LDcgQEAgYm9vbCBJQ09JbWFnZURlY29kZXI6OmRlY29kZUF0SW5kZXgo
c2l6ZV90IGluZGV4KQogCiAgICAgaWYgKCFtX3BuZ0RlY29kZXJzW2luZGV4XSkgewogICAgICAg
ICBtX3BuZ0RlY29kZXJzW2luZGV4XSA9IHN0ZDo6bWFrZV91bmlxdWU8Ci0gICAgICAgICAgICBQ
TkdJbWFnZURlY29kZXI+KG1fcHJlbXVsdGlwbHlBbHBoYSA/IEltYWdlU291cmNlOjpBbHBoYVBy
ZW11bHRpcGxpZWQgOiBJbWFnZVNvdXJjZTo6QWxwaGFOb3RQcmVtdWx0aXBsaWVkLAorICAgICAg
ICAgICAgUE5HSW1hZ2VEZWNvZGVyPihwcmVtdWx0aXBseUFscGhhKCkgPyBJbWFnZVNvdXJjZTo6
QWxwaGFQcmVtdWx0aXBsaWVkIDogSW1hZ2VTb3VyY2U6OkFscGhhTm90UHJlbXVsdGlwbGllZCwK
ICAgICAgICAgICAgICAgICBtX2lnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlID8gSW1hZ2VTb3Vy
Y2U6OkdhbW1hQW5kQ29sb3JQcm9maWxlSWdub3JlZCA6IEltYWdlU291cmNlOjpHYW1tYUFuZENv
bG9yUHJvZmlsZUFwcGxpZWQpOwogICAgICAgICBzZXREYXRhRm9yUE5HRGVjb2RlckF0SW5kZXgo
aW5kZXgpOwogICAgIH0KQEAgLTI3OSw3ICsyNzgsNyBAQCBib29sIElDT0ltYWdlRGVjb2Rlcjo6
cHJvY2Vzc0RpcmVjdG9yeUVudHJpZXMoKQogICAgIGNvbnN0IEljb25EaXJlY3RvcnlFbnRyeSYg
ZGlyRW50cnkgPSBtX2RpckVudHJpZXMuZmlyc3QoKTsKICAgICAvLyBUZWNobmljYWxseSwgdGhp
cyBuZXh0IGNhbGwgc2hvdWxkbid0IGJlIGFibGUgdG8gZmFpbCwgc2luY2UgdGhlIHdpZHRoCiAg
ICAgLy8gYW5kIGhlaWdodCBoZXJlIGFyZSBlYWNoIDw9IDI1NiwgYW5kIHxtX2ZyYW1lU2l6ZXwg
aXMgZW1wdHkuCi0gICAgcmV0dXJuIHNldFNpemUoZGlyRW50cnkubV9zaXplLndpZHRoKCksIGRp
ckVudHJ5Lm1fc2l6ZS5oZWlnaHQoKSk7CisgICAgcmV0dXJuIHNldFNpemUoZGlyRW50cnkubV9z
aXplKTsKIH0KIAogSUNPSW1hZ2VEZWNvZGVyOjpJY29uRGlyZWN0b3J5RW50cnkgSUNPSW1hZ2VE
ZWNvZGVyOjpyZWFkRGlyZWN0b3J5RW50cnkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5oCmluZGV4
IDU4MGM2N2E4ODNhNDBiNmU1NDIwZjY1YWUzNDQ4ODQ1NzQxOTM4ZWMuLmQzM2QwNThhMTU5NjA3
ZGY4OTM5Y2VhMWNkN2E2ZjMxNDRiNzIyZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmgKQEAg
LTQ5LDcgKzQ5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIGlzU2l6ZUF2
YWlsYWJsZSgpIG92ZXJyaWRlOwogICAgICAgICBJbnRTaXplIHNpemUoKSBvdmVycmlkZTsKICAg
ICAgICAgSW50U2l6ZSBmcmFtZVNpemVBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCkg
b3ZlcnJpZGU7Ci0gICAgICAgIGJvb2wgc2V0U2l6ZSh1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQg
aGVpZ2h0KSBvdmVycmlkZTsKKyAgICAgICAgYm9vbCBzZXRTaXplKGNvbnN0IEludFNpemUmKSBv
dmVycmlkZTsKICAgICAgICAgc2l6ZV90IGZyYW1lQ291bnQoKSBvdmVycmlkZTsKICAgICAgICAg
SW1hZ2VGcmFtZSogZnJhbWVCdWZmZXJBdEluZGV4KHNpemVfdCkgb3ZlcnJpZGU7CiAgICAgICAg
IC8vIENBVVRJT046IHNldEZhaWxlZCgpIGRlbGV0ZXMgYWxsIHJlYWRlcnMgYW5kIGRlY29kZXJz
LiAgQmUgY2FyZWZ1bCB0bwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggZWU2
NmFjMTRkNGJlMDdjYTlhZmZiMmEzYWZmODllYmZhNjJmYjEyZS4uMDkzNTcwZTdmYmQ3NGMyZjdh
Yzk0NjU0N2RhNDZjNTNlY2RhMGNiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3Bw
CkBAIC0xOTYsMzYgKzE5Niw2IEBAIHN0YXRpYyBJbWFnZU9yaWVudGF0aW9uIHJlYWRJbWFnZU9y
aWVudGF0aW9uKGpwZWdfZGVjb21wcmVzc19zdHJ1Y3QqIGluZm8pCiAgICAgcmV0dXJuIEltYWdl
T3JpZW50YXRpb24oKTsKIH0KIAotc3RhdGljIENvbG9yUHJvZmlsZSByZWFkQ29sb3JQcm9maWxl
KGpwZWdfZGVjb21wcmVzc19zdHJ1Y3QqIGluZm8pCi17Ci0jaWYgVVNFKElDQ0pQRUcpCi0gICAg
Sk9DVEVUKiBwcm9maWxlOwotICAgIHVuc2lnbmVkIGludCBwcm9maWxlTGVuZ3RoOwotCi0gICAg
aWYgKCFyZWFkX2ljY19wcm9maWxlKGluZm8sICZwcm9maWxlLCAmcHJvZmlsZUxlbmd0aCkpCi0g
ICAgICAgIHJldHVybiBDb2xvclByb2ZpbGUoKTsKLQotICAgIC8vIE9ubHkgYWNjZXB0IFJHQiBj
b2xvciBwcm9maWxlcyBmcm9tIGlucHV0IGNsYXNzIGRldmljZXMuCi0gICAgYm9vbCBpZ25vcmVQ
cm9maWxlID0gZmFsc2U7Ci0gICAgY2hhciogcHJvZmlsZURhdGEgPSByZWludGVycHJldF9jYXN0
PGNoYXIqPihwcm9maWxlKTsKLSAgICBpZiAocHJvZmlsZUxlbmd0aCA8IEltYWdlRGVjb2Rlcjo6
aWNjQ29sb3JQcm9maWxlSGVhZGVyTGVuZ3RoKQotICAgICAgICBpZ25vcmVQcm9maWxlID0gdHJ1
ZTsKLSAgICBlbHNlIGlmICghSW1hZ2VEZWNvZGVyOjpyZ2JDb2xvclByb2ZpbGUocHJvZmlsZURh
dGEsIHByb2ZpbGVMZW5ndGgpKQotICAgICAgICBpZ25vcmVQcm9maWxlID0gdHJ1ZTsKLSAgICBl
bHNlIGlmICghSW1hZ2VEZWNvZGVyOjppbnB1dERldmljZUNvbG9yUHJvZmlsZShwcm9maWxlRGF0
YSwgcHJvZmlsZUxlbmd0aCkpCi0gICAgICAgIGlnbm9yZVByb2ZpbGUgPSB0cnVlOwotCi0gICAg
Q29sb3JQcm9maWxlIGNvbG9yUHJvZmlsZTsKLSAgICBpZiAoIWlnbm9yZVByb2ZpbGUpCi0gICAg
ICAgIGNvbG9yUHJvZmlsZS5hcHBlbmQocHJvZmlsZURhdGEsIHByb2ZpbGVMZW5ndGgpOwotICAg
IGZyZWUocHJvZmlsZSk7Ci0gICAgcmV0dXJuIGNvbG9yUHJvZmlsZTsKLSNlbHNlCi0gICAgVU5V
U0VEX1BBUkFNKGluZm8pOwotICAgIHJldHVybiBDb2xvclByb2ZpbGUoKTsKLSNlbmRpZgotfQot
CiBjbGFzcyBKUEVHSW1hZ2VSZWFkZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgpAQCAtMzUyLDcgKzMyMiw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1fc3RhdGUg
PSBKUEVHX1NUQVJUX0RFQ09NUFJFU1M7CiAKICAgICAgICAgICAgIC8vIFdlIGNhbiBmaWxsIGlu
IHRoZSBzaXplIG5vdyB0aGF0IHRoZSBoZWFkZXIgaXMgYXZhaWxhYmxlLgotICAgICAgICAgICAg
aWYgKCFtX2RlY29kZXItPnNldFNpemUobV9pbmZvLmltYWdlX3dpZHRoLCBtX2luZm8uaW1hZ2Vf
aGVpZ2h0KSkKKyAgICAgICAgICAgIGlmICghbV9kZWNvZGVyLT5zZXRTaXplKEludFNpemUobV9p
bmZvLmltYWdlX3dpZHRoLCBtX2luZm8uaW1hZ2VfaGVpZ2h0KSkpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgICAgICAgICBtX2RlY29kZXItPnNldE9yaWVudGF0aW9uKHJl
YWRJbWFnZU9yaWVudGF0aW9uKGluZm8oKSkpOwpAQCAtMzYzLDEzICszMzMsNiBAQCBwdWJsaWM6
CiAgICAgICAgICAgICBpZiAobV9kZWNvZGVyLT53aWxsRG93blNhbXBsZSgpICYmIHR1cmJvU3dp
enpsZWQobV9pbmZvLm91dF9jb2xvcl9zcGFjZSkpCiAgICAgICAgICAgICAgICAgbV9pbmZvLm91
dF9jb2xvcl9zcGFjZSA9IEpDU19SR0I7CiAjZW5kaWYKLSAgICAgICAgICAgIC8vIEFsbG93IGNv
bG9yIG1hbmFnZW1lbnQgb2YgdGhlIGRlY29kZWQgUkdCQSBwaXhlbHMgaWYgcG9zc2libGUuCi0g
ICAgICAgICAgICBpZiAoIW1fZGVjb2Rlci0+aWdub3Jlc0dhbW1hQW5kQ29sb3JQcm9maWxlKCkp
IHsKLSAgICAgICAgICAgICAgICBDb2xvclByb2ZpbGUgcmdiSW5wdXREZXZpY2VDb2xvclByb2Zp
bGUgPSByZWFkQ29sb3JQcm9maWxlKGluZm8oKSk7Ci0gICAgICAgICAgICAgICAgaWYgKCFyZ2JJ
bnB1dERldmljZUNvbG9yUHJvZmlsZS5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgICAgIG1f
ZGVjb2Rlci0+c2V0Q29sb3JQcm9maWxlKHJnYklucHV0RGV2aWNlQ29sb3JQcm9maWxlKTsKLSAg
ICAgICAgICAgIH0KLQogICAgICAgICAgICAgLy8gRG9uJ3QgYWxsb2NhdGUgYSBnaWFudCBhbmQg
c3VwZXJmbHVvdXMgbWVtb3J5IGJ1ZmZlciB3aGVuIHRoZQogICAgICAgICAgICAgLy8gaW1hZ2Ug
aXMgYSBzZXF1ZW50aWFsIEpQRUcuCiAgICAgICAgICAgICBtX2luZm8uYnVmZmVyZWRfaW1hZ2Ug
PSBqcGVnX2hhc19tdWx0aXBsZV9zY2FucygmbV9pbmZvKTsKQEAgLTU1Niw5ICs1MTksOSBAQCBi
b29sIEpQRUdJbWFnZURlY29kZXI6OmlzU2l6ZUF2YWlsYWJsZSgpCiAgICAgcmV0dXJuIEltYWdl
RGVjb2Rlcjo6aXNTaXplQXZhaWxhYmxlKCk7CiB9CiAKLWJvb2wgSlBFR0ltYWdlRGVjb2Rlcjo6
c2V0U2l6ZSh1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0KQorYm9vbCBKUEVHSW1hZ2VE
ZWNvZGVyOjpzZXRTaXplKGNvbnN0IEludFNpemUmIHNpemUpCiB7Ci0gICAgaWYgKCFJbWFnZURl
Y29kZXI6OnNldFNpemUod2lkdGgsIGhlaWdodCkpCisgICAgaWYgKCFJbWFnZURlY29kZXI6OnNl
dFNpemUoc2l6ZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHByZXBhcmVTY2FsZURh
dGFJZk5lY2Vzc2FyeSgpOwpAQCAtNTcwLDEwICs1MzMsOCBAQCBJbWFnZUZyYW1lKiBKUEVHSW1h
Z2VEZWNvZGVyOjpmcmFtZUJ1ZmZlckF0SW5kZXgoc2l6ZV90IGluZGV4KQogICAgIGlmIChpbmRl
eCkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBpZiAobV9mcmFtZUJ1ZmZlckNhY2hlLmlzRW1w
dHkoKSkgeworICAgIGlmIChtX2ZyYW1lQnVmZmVyQ2FjaGUuaXNFbXB0eSgpKQogICAgICAgICBt
X2ZyYW1lQnVmZmVyQ2FjaGUucmVzaXplKDEpOwotICAgICAgICBtX2ZyYW1lQnVmZmVyQ2FjaGVb
MF0uc2V0UHJlbXVsdGlwbHlBbHBoYShtX3ByZW11bHRpcGx5QWxwaGEpOwotICAgIH0KIAogICAg
IEltYWdlRnJhbWUmIGZyYW1lID0gbV9mcmFtZUJ1ZmZlckNhY2hlWzBdOwogICAgIGlmIChmcmFt
ZS5zdGF0dXMoKSAhPSBJbWFnZUZyYW1lOjpGcmFtZUNvbXBsZXRlKQpAQCAtNTg4LDcgKzU0OSw3
IEBAIGJvb2wgSlBFR0ltYWdlRGVjb2Rlcjo6c2V0RmFpbGVkKCkKIH0KIAogdGVtcGxhdGUgPEpf
Q09MT1JfU1BBQ0UgY29sb3JTcGFjZT4KLXZvaWQgc2V0UGl4ZWwoSW1hZ2VGcmFtZSYgYnVmZmVy
LCBJbWFnZUZyYW1lOjpQaXhlbERhdGEqIGN1cnJlbnRBZGRyZXNzLCBKU0FNUEFSUkFZIHNhbXBs
ZXMsIGludCBjb2x1bW4pCit2b2lkIHNldFBpeGVsKEltYWdlRnJhbWUmIGJ1ZmZlciwgUkdCQTMy
KiBjdXJyZW50QWRkcmVzcywgSlNBTVBBUlJBWSBzYW1wbGVzLCBpbnQgY29sdW1uKQogewogICAg
IEpTQU1QTEUqIGpzYW1wbGUgPSAqc2FtcGxlcyArIGNvbHVtbiAqIChjb2xvclNwYWNlID09IEpD
U19SR0IgPyAzIDogNCk7CiAKQEAgLTYzMSw3ICs1OTIsNyBAQCBib29sIEpQRUdJbWFnZURlY29k
ZXI6Om91dHB1dFNjYW5saW5lcyhJbWFnZUZyYW1lJiBidWZmZXIpCiAgICAgICAgIGlmIChkZXN0
WSA8IDApCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBJbWFnZUZyYW1lOjpQaXhl
bERhdGEqIGN1cnJlbnRBZGRyZXNzID0gYnVmZmVyLmdldEFkZHIoMCwgZGVzdFkpOworICAgICAg
ICBSR0JBMzIqIGN1cnJlbnRBZGRyZXNzID0gYnVmZmVyLmdldEFkZHIoMCwgZGVzdFkpOwogICAg
ICAgICBmb3IgKGludCB4ID0gMDsgeCA8IHdpZHRoOyArK3gpIHsKICAgICAgICAgICAgIHNldFBp
eGVsPGNvbG9yU3BhY2U+KGJ1ZmZlciwgY3VycmVudEFkZHJlc3MsIHNhbXBsZXMsIGlzU2NhbGVk
ID8gbV9zY2FsZWRDb2x1bW5zW3hdIDogeCk7CiAgICAgICAgICAgICArK2N1cnJlbnRBZGRyZXNz
OwpAQCAtNjU0LDE2ICs2MTUsMTIgQEAgYm9vbCBKUEVHSW1hZ2VEZWNvZGVyOjpvdXRwdXRTY2Fu
bGluZXMoKQogICAgIC8vIEluaXRpYWxpemUgdGhlIGZyYW1lYnVmZmVyIGlmIG5lZWRlZC4KICAg
ICBJbWFnZUZyYW1lJiBidWZmZXIgPSBtX2ZyYW1lQnVmZmVyQ2FjaGVbMF07CiAgICAgaWYgKGJ1
ZmZlci5zdGF0dXMoKSA9PSBJbWFnZUZyYW1lOjpGcmFtZUVtcHR5KSB7Ci0gICAgICAgIGlmICgh
YnVmZmVyLnNldFNpemUoc2NhbGVkU2l6ZSgpLndpZHRoKCksIHNjYWxlZFNpemUoKS5oZWlnaHQo
KSkpCisgICAgICAgIGlmICghYnVmZmVyLnNldFNpemUoc2NhbGVkU2l6ZSgpLCBwcmVtdWx0aXBs
eUFscGhhKCkpKQogICAgICAgICAgICAgcmV0dXJuIHNldEZhaWxlZCgpOwogICAgICAgICBidWZm
ZXIuc2V0U3RhdHVzKEltYWdlRnJhbWU6OkZyYW1lUGFydGlhbCk7CiAgICAgICAgIC8vIFRoZSBi
dWZmZXIgaXMgdHJhbnNwYXJlbnQgb3V0c2lkZSB0aGUgZGVjb2RlZCBhcmVhIHdoaWxlIHRoZSBp
bWFnZSBpcwogICAgICAgICAvLyBsb2FkaW5nLiBUaGUgY29tcGxldGVkIGltYWdlIHdpbGwgYmUg
bWFya2VkIGZ1bGx5IG9wYXF1ZSBpbiBqcGVnQ29tcGxldGUoKS4KICAgICAgICAgYnVmZmVyLnNl
dEhhc0FscGhhKHRydWUpOwotICAgICAgICBidWZmZXIuc2V0Q29sb3JQcm9maWxlKG1fY29sb3JQ
cm9maWxlKTsKLQotICAgICAgICAvLyBGb3IgSlBFR3MsIHRoZSBmcmFtZSBhbHdheXMgZmlsbHMg
dGhlIGVudGlyZSBpbWFnZS4KLSAgICAgICAgYnVmZmVyLnNldE9yaWdpbmFsRnJhbWVSZWN0KElu
dFJlY3QoSW50UG9pbnQoKSwgc2l6ZSgpKSk7CiAgICAgfQogCiAgICAganBlZ19kZWNvbXByZXNz
X3N0cnVjdCogaW5mbyA9IG1fcmVhZGVyLT5pbmZvKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rl
ci5oCmluZGV4IDZjMWZjMDQyNzMyMjAzNzViYzZhMjVlYzE5OGY4YzhhNTEwMTQ4NmMuLmZjMjNm
YmQ5NjM3YjUzYWVlNjY1MzNiNmFhYjRmN2IyNjhkYzBlYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdl
RGVjb2Rlci5oCkBAIC01MCw3ICs1MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
Ly8gSW1hZ2VEZWNvZGVyCiAgICAgICAgIFN0cmluZyBmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuICJqcGciOyB9CiAgICAgICAgIGJvb2wgaXNTaXplQXZhaWxhYmxl
KCkgb3ZlcnJpZGU7Ci0gICAgICAgIGJvb2wgc2V0U2l6ZSh1bnNpZ25lZCB3aWR0aCwgdW5zaWdu
ZWQgaGVpZ2h0KSBvdmVycmlkZTsKKyAgICAgICAgYm9vbCBzZXRTaXplKGNvbnN0IEludFNpemUm
KSBvdmVycmlkZTsKICAgICAgICAgSW1hZ2VGcmFtZSogZnJhbWVCdWZmZXJBdEluZGV4KHNpemVf
dCBpbmRleCkgb3ZlcnJpZGU7CiAgICAgICAgIC8vIENBVVRJT046IHNldEZhaWxlZCgpIGRlbGV0
ZXMgfG1fcmVhZGVyfC4gIEJlIGNhcmVmdWwgdG8gYXZvaWQKICAgICAgICAgLy8gYWNjZXNzaW5n
IGRlbGV0ZWQgbWVtb3J5LCBlc3BlY2lhbGx5IHdoZW4gY2FsbGluZyB0aGlzIGZyb20gaW5zaWRl
CkBAIC02Niw3ICs2Niw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBvdXRw
dXRTY2FubGluZXMoKTsKICAgICAgICAgdm9pZCBqcGVnQ29tcGxldGUoKTsKIAotICAgICAgICB2
b2lkIHNldENvbG9yUHJvZmlsZShjb25zdCBDb2xvclByb2ZpbGUmIGNvbG9yUHJvZmlsZSkgeyBt
X2NvbG9yUHJvZmlsZSA9IGNvbG9yUHJvZmlsZTsgfQogICAgICAgICB2b2lkIHNldE9yaWVudGF0
aW9uKEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24pIHsgbV9vcmllbnRhdGlvbiA9IG9yaWVu
dGF0aW9uOyB9CiAKICAgICBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcAppbmRl
eCBlNjQ0YTcxMTBlZmNiNTQwZDg5Y2UxYmE4MTEwMGJjNDgyM2IxOGYyLi42MjM4NjI4NmJjOWMz
ODcxNzFkN2JjNmU2NWU1YzNmOWU0NTQ0YWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNw
cApAQCAtMjM1LDkgKzIzNSw5IEBAIGJvb2wgUE5HSW1hZ2VEZWNvZGVyOjppc1NpemVBdmFpbGFi
bGUoKQogICAgIHJldHVybiBJbWFnZURlY29kZXI6OmlzU2l6ZUF2YWlsYWJsZSgpOwogfQogCi1i
b29sIFBOR0ltYWdlRGVjb2Rlcjo6c2V0U2l6ZSh1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVp
Z2h0KQorYm9vbCBQTkdJbWFnZURlY29kZXI6OnNldFNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkK
IHsKLSAgICBpZiAoIUltYWdlRGVjb2Rlcjo6c2V0U2l6ZSh3aWR0aCwgaGVpZ2h0KSkKKyAgICBp
ZiAoIUltYWdlRGVjb2Rlcjo6c2V0U2l6ZShzaXplKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgcHJlcGFyZVNjYWxlRGF0YUlmTmVjZXNzYXJ5KCk7CkBAIC0yNTcsMTAgKzI1Nyw4IEBA
IEltYWdlRnJhbWUqIFBOR0ltYWdlRGVjb2Rlcjo6ZnJhbWVCdWZmZXJBdEluZGV4KHNpemVfdCBp
bmRleCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAjZW5kaWYKIAotICAgIGlmIChtX2ZyYW1l
QnVmZmVyQ2FjaGUuaXNFbXB0eSgpKSB7CisgICAgaWYgKG1fZnJhbWVCdWZmZXJDYWNoZS5pc0Vt
cHR5KCkpCiAgICAgICAgIG1fZnJhbWVCdWZmZXJDYWNoZS5yZXNpemUoMSk7Ci0gICAgICAgIG1f
ZnJhbWVCdWZmZXJDYWNoZVswXS5zZXRQcmVtdWx0aXBseUFscGhhKG1fcHJlbXVsdGlwbHlBbHBo
YSk7Ci0gICAgfQogCiAgICAgSW1hZ2VGcmFtZSYgZnJhbWUgPSBtX2ZyYW1lQnVmZmVyQ2FjaGVb
aW5kZXhdOwogICAgIGlmIChmcmFtZS5zdGF0dXMoKSAhPSBJbWFnZUZyYW1lOjpGcmFtZUNvbXBs
ZXRlKQpAQCAtMjc2LDM3ICsyNzQsNiBAQCBib29sIFBOR0ltYWdlRGVjb2Rlcjo6c2V0RmFpbGVk
KCkKICAgICByZXR1cm4gSW1hZ2VEZWNvZGVyOjpzZXRGYWlsZWQoKTsKIH0KIAotc3RhdGljIHZv
aWQgcmVhZENvbG9yUHJvZmlsZShwbmdfc3RydWN0cCBwbmcsIHBuZ19pbmZvcCBpbmZvLCBDb2xv
clByb2ZpbGUmIGNvbG9yUHJvZmlsZSkKLXsKLSAgICBBU1NFUlQoY29sb3JQcm9maWxlLmlzRW1w
dHkoKSk7Ci0KLSNpZmRlZiBQTkdfaUNDUF9TVVBQT1JURUQKLSAgICBjaGFyKiBwcm9maWxlTmFt
ZTsKLSAgICBpbnQgY29tcHJlc3Npb25UeXBlOwotI2lmIChQTkdfTElCUE5HX1ZFUiA8IDEwNTAw
KQotICAgIHBuZ19jaGFycCBwcm9maWxlOwotI2Vsc2UKLSAgICBwbmdfYnl0ZXAgcHJvZmlsZTsK
LSNlbmRpZgotICAgIHBuZ191aW50XzMyIHByb2ZpbGVMZW5ndGg7Ci0gICAgaWYgKCFwbmdfZ2V0
X2lDQ1AocG5nLCBpbmZvLCAmcHJvZmlsZU5hbWUsICZjb21wcmVzc2lvblR5cGUsICZwcm9maWxl
LCAmcHJvZmlsZUxlbmd0aCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIE9ubHkgYWNjZXB0
IFJHQiBjb2xvciBwcm9maWxlcyBmcm9tIGlucHV0IGNsYXNzIGRldmljZXMuCi0gICAgYm9vbCBp
Z25vcmVQcm9maWxlID0gZmFsc2U7Ci0gICAgY2hhciogcHJvZmlsZURhdGEgPSByZWludGVycHJl
dF9jYXN0PGNoYXIqPihwcm9maWxlKTsKLSAgICBpZiAocHJvZmlsZUxlbmd0aCA8IEltYWdlRGVj
b2Rlcjo6aWNjQ29sb3JQcm9maWxlSGVhZGVyTGVuZ3RoKQotICAgICAgICBpZ25vcmVQcm9maWxl
ID0gdHJ1ZTsKLSAgICBlbHNlIGlmICghSW1hZ2VEZWNvZGVyOjpyZ2JDb2xvclByb2ZpbGUocHJv
ZmlsZURhdGEsIHByb2ZpbGVMZW5ndGgpKQotICAgICAgICBpZ25vcmVQcm9maWxlID0gdHJ1ZTsK
LSAgICBlbHNlIGlmICghSW1hZ2VEZWNvZGVyOjppbnB1dERldmljZUNvbG9yUHJvZmlsZShwcm9m
aWxlRGF0YSwgcHJvZmlsZUxlbmd0aCkpCi0gICAgICAgIGlnbm9yZVByb2ZpbGUgPSB0cnVlOwot
Ci0gICAgaWYgKCFpZ25vcmVQcm9maWxlKQotICAgICAgICBjb2xvclByb2ZpbGUuYXBwZW5kKHBy
b2ZpbGVEYXRhLCBwcm9maWxlTGVuZ3RoKTsKLSNlbmRpZgotfQotCiB2b2lkIFBOR0ltYWdlRGVj
b2Rlcjo6aGVhZGVyQXZhaWxhYmxlKCkKIHsKICAgICBwbmdfc3RydWN0cCBwbmcgPSBtX3JlYWRl
ci0+cG5nUHRyKCk7CkBAIC0zMjYsNyArMjkzLDcgQEAgdm9pZCBQTkdJbWFnZURlY29kZXI6Omhl
YWRlckF2YWlsYWJsZSgpCiAgICAgLy8gd2lsbCBjZWFzZSB0byBleGlzdC4gIE5vdGUgdGhhdCB3
ZSdsbCBzdGlsbCBwcm9wZXJseSBzZXQgdGhlIGZhaWx1cmUgZmxhZwogICAgIC8vIGluIHRoaXMg
Y2FzZSBhcyBzb29uIGFzIHdlIGxvbmdqbXAoKS4KICAgICBtX2RvTm90aGluZ09uRmFpbHVyZSA9
IHRydWU7Ci0gICAgYm9vbCByZXN1bHQgPSBzZXRTaXplKHdpZHRoLCBoZWlnaHQpOworICAgIGJv
b2wgcmVzdWx0ID0gc2V0U2l6ZShJbnRTaXplKHdpZHRoLCBoZWlnaHQpKTsKICAgICBtX2RvTm90
aGluZ09uRmFpbHVyZSA9IGZhbHNlOwogICAgIGlmICghcmVzdWx0KSB7CiAgICAgICAgIGxvbmdq
bXAoSk1QQlVGKHBuZyksIDEpOwpAQCAtNDA1LDE2ICszNzIsNiBAQCB2b2lkIFBOR0ltYWdlRGVj
b2Rlcjo6aGVhZGVyQXZhaWxhYmxlKCkKICAgICBpZiAoY29sb3JUeXBlID09IFBOR19DT0xPUl9U
WVBFX0dSQVkgfHwgY29sb3JUeXBlID09IFBOR19DT0xPUl9UWVBFX0dSQVlfQUxQSEEpCiAgICAg
ICAgIHBuZ19zZXRfZ3JheV90b19yZ2IocG5nKTsKIAotICAgIGlmICgoY29sb3JUeXBlICYgUE5H
X0NPTE9SX01BU0tfQ09MT1IpICYmICFtX2lnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlKSB7Ci0g
ICAgICAgIC8vIFdlIG9ubHkgc3VwcG9ydCBjb2xvciBwcm9maWxlcyBmb3IgY29sb3IgUEFMRVRU
RSBhbmQgUkdCW0FdIFBORy4gU3VwcG9ydGluZwotICAgICAgICAvLyBjb2xvciBwcm9maWxlcyBm
b3IgZ3JheS1zY2FsZSBpbWFnZXMgaXMgc2xpZ2h0bHkgdHJpY2t5LCBhdCBsZWFzdCB1c2luZyB0
aGUKLSAgICAgICAgLy8gQ29yZUdyYXBoaWNzIElDQyBsaWJyYXJ5LCBiZWNhdXNlIHdlIGV4cGFu
ZCBncmF5LXNjYWxlIGltYWdlcyB0byBSR0IgYnV0IHdlCi0gICAgICAgIC8vIGRvIG5vdCBzaW1p
bGFybHkgdHJhbnNmb3JtIHRoZSBjb2xvciBwcm9maWxlLiBXZSdkIGVpdGhlciBuZWVkIHRvIHRy
YW5zZm9ybQotICAgICAgICAvLyB0aGUgY29sb3IgcHJvZmlsZSBvciB3ZSdkIG5lZWQgdG8gZGVj
b2RlIGludG8gYSBncmF5LXNjYWxlIGltYWdlIGJ1ZmZlciBhbmQKLSAgICAgICAgLy8gaGFuZCB0
aGF0IHRvIENvcmVHcmFwaGljcy4KLSAgICAgICAgcmVhZENvbG9yUHJvZmlsZShwbmcsIGluZm8s
IG1fY29sb3JQcm9maWxlKTsKLSAgICB9Ci0KICAgICAvLyBEZWFsIHdpdGggZ2FtbWEgYW5kIGtl
ZXAgaXQgdW5kZXIgb3VyIGNvbnRyb2wuCiAgICAgZG91YmxlIGdhbW1hOwogICAgIGlmICghbV9p
Z25vcmVHYW1tYUFuZENvbG9yUHJvZmlsZSAmJiBwbmdfZ2V0X2dBTUEocG5nLCBpbmZvLCAmZ2Ft
bWEpKSB7CkBAIC00NTIsMTkgKzQwOSwxOSBAQCB2b2lkIFBOR0ltYWdlRGVjb2Rlcjo6aGVhZGVy
QXZhaWxhYmxlKCkKICAgICB9CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBzZXRQaXhlbFJHQihJ
bWFnZUZyYW1lOjpQaXhlbERhdGEqIGRlc3QsIHBuZ19ieXRlcCBwaXhlbCkKK3N0YXRpYyBpbmxp
bmUgdm9pZCBzZXRQaXhlbFJHQihSR0JBMzIqIGRlc3QsIHBuZ19ieXRlcCBwaXhlbCkKIHsKICAg
ICAqZGVzdCA9IDB4RkYwMDAwMDBVIHwgcGl4ZWxbMF0gPDwgMTYgfCBwaXhlbFsxXSA8PCA4IHwg
cGl4ZWxbMl07CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBzZXRQaXhlbFJHQkEoSW1hZ2VGcmFt
ZTo6UGl4ZWxEYXRhKiBkZXN0LCBwbmdfYnl0ZXAgcGl4ZWwsIHVuc2lnbmVkIGNoYXImIG5vblRy
aXZpYWxBbHBoYU1hc2spCitzdGF0aWMgaW5saW5lIHZvaWQgc2V0UGl4ZWxSR0JBKFJHQkEzMiog
ZGVzdCwgcG5nX2J5dGVwIHBpeGVsLCB1bnNpZ25lZCBjaGFyJiBub25Ucml2aWFsQWxwaGFNYXNr
KQogewogICAgIHVuc2lnbmVkIGNoYXIgYSA9IHBpeGVsWzNdOwogICAgICpkZXN0ID0gYSA8PCAy
NCB8IHBpeGVsWzBdIDw8IDE2IHwgcGl4ZWxbMV0gPDwgOCB8IHBpeGVsWzJdOwogICAgIG5vblRy
aXZpYWxBbHBoYU1hc2sgfD0gKDI1NSAtIGEpOwogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQgc2V0
UGl4ZWxQcmVtdWx0aXBsaWVkUkdCQShJbWFnZUZyYW1lOjpQaXhlbERhdGEqIGRlc3QsIHBuZ19i
eXRlcCBwaXhlbCwgdW5zaWduZWQgY2hhciYgbm9uVHJpdmlhbEFscGhhTWFzaykKK3N0YXRpYyBp
bmxpbmUgdm9pZCBzZXRQaXhlbFByZW11bHRpcGxpZWRSR0JBKFJHQkEzMiogZGVzdCwgcG5nX2J5
dGVwIHBpeGVsLCB1bnNpZ25lZCBjaGFyJiBub25Ucml2aWFsQWxwaGFNYXNrKQogewogICAgIHVu
c2lnbmVkIGNoYXIgYSA9IHBpeGVsWzNdOwogICAgIHVuc2lnbmVkIGNoYXIgciA9IGZhc3REaXZp
ZGVCeTI1NShwaXhlbFswXSAqIGEpOwpAQCAtNDg4LDcgKzQ0NSw3IEBAIHZvaWQgUE5HSW1hZ2VE
ZWNvZGVyOjpyb3dBdmFpbGFibGUodW5zaWduZWQgY2hhciogcm93QnVmZmVyLCB1bnNpZ25lZCBy
b3dJbmRleCwKICAgICBJbWFnZUZyYW1lJiBidWZmZXIgPSBtX2ZyYW1lQnVmZmVyQ2FjaGVbbV9j
dXJyZW50RnJhbWVdOwogICAgIGlmIChidWZmZXIuc3RhdHVzKCkgPT0gSW1hZ2VGcmFtZTo6RnJh
bWVFbXB0eSkgewogICAgICAgICBwbmdfc3RydWN0cCBwbmcgPSBtX3JlYWRlci0+cG5nUHRyKCk7
Ci0gICAgICAgIGlmICghYnVmZmVyLnNldFNpemUoc2NhbGVkU2l6ZSgpLndpZHRoKCksIHNjYWxl
ZFNpemUoKS5oZWlnaHQoKSkpIHsKKyAgICAgICAgaWYgKCFidWZmZXIuc2V0U2l6ZShzY2FsZWRT
aXplKCksIHByZW11bHRpcGx5QWxwaGEoKSkpIHsKICAgICAgICAgICAgIGxvbmdqbXAoSk1QQlVG
KHBuZyksIDEpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC01MDYsMTUgKzQ2
MywxMSBAQCB2b2lkIFBOR0ltYWdlRGVjb2Rlcjo6cm93QXZhaWxhYmxlKHVuc2lnbmVkIGNoYXIq
IHJvd0J1ZmZlciwgdW5zaWduZWQgcm93SW5kZXgsCiAKICAgICAgICAgYnVmZmVyLnNldFN0YXR1
cyhJbWFnZUZyYW1lOjpGcmFtZVBhcnRpYWwpOwogICAgICAgICBidWZmZXIuc2V0SGFzQWxwaGEo
ZmFsc2UpOwotICAgICAgICBidWZmZXIuc2V0Q29sb3JQcm9maWxlKG1fY29sb3JQcm9maWxlKTsK
IAogI2lmIEVOQUJMRShBUE5HKQogICAgICAgICBpZiAobV9jdXJyZW50RnJhbWUpCiAgICAgICAg
ICAgICBpbml0RnJhbWVCdWZmZXIobV9jdXJyZW50RnJhbWUpOwotICAgICAgICBlbHNlCiAjZW5k
aWYKLSAgICAgICAgLy8gRm9yIFBOR3MsIHRoZSBmcmFtZSBhbHdheXMgZmlsbHMgdGhlIGVudGly
ZSBpbWFnZS4KLSAgICAgICAgYnVmZmVyLnNldE9yaWdpbmFsRnJhbWVSZWN0KEludFJlY3QoSW50
UG9pbnQoKSwgc2l6ZSgpKSk7CiAgICAgfQogCiAgICAgLyogbGlicG5nIGNvbW1lbnRzIChoZXJl
IHRvIGV4cGxhaW4gd2hhdCBmb2xsb3dzKS4KQEAgLTU3Myw3ICs1MjYsNyBAQCB2b2lkIFBOR0lt
YWdlRGVjb2Rlcjo6cm93QXZhaWxhYmxlKHVuc2lnbmVkIGNoYXIqIHJvd0J1ZmZlciwgdW5zaWdu
ZWQgcm93SW5kZXgsCiAgICAgfQogCiAgICAgLy8gV3JpdGUgdGhlIGRlY29kZWQgcm93IHBpeGVs
cyB0byB0aGUgZnJhbWUgYnVmZmVyLgotICAgIEltYWdlRnJhbWU6OlBpeGVsRGF0YSogYWRkcmVz
cyA9IGJ1ZmZlci5nZXRBZGRyKDAsIHkpOworICAgIFJHQkEzMiogYWRkcmVzcyA9IGJ1ZmZlci5n
ZXRBZGRyKDAsIHkpOwogICAgIGludCB3aWR0aCA9IHNjYWxlZFNpemUoKS53aWR0aCgpOwogICAg
IHVuc2lnbmVkIGNoYXIgbm9uVHJpdmlhbEFscGhhTWFzayA9IDA7CiAKQEAgLTU5MCw3ICs1NDMs
NyBAQCB2b2lkIFBOR0ltYWdlRGVjb2Rlcjo6cm93QXZhaWxhYmxlKHVuc2lnbmVkIGNoYXIqIHJv
d0J1ZmZlciwgdW5zaWduZWQgcm93SW5kZXgsCiAgICAgewogICAgICAgICBwbmdfYnl0ZXAgcGl4
ZWwgPSByb3c7CiAgICAgICAgIGlmIChoYXNBbHBoYSkgewotICAgICAgICAgICAgaWYgKGJ1ZmZl
ci5wcmVtdWx0aXBseUFscGhhKCkpIHsKKyAgICAgICAgICAgIGlmIChwcmVtdWx0aXBseUFscGhh
KCkpIHsKICAgICAgICAgICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IHdpZHRoOyArK3gsIHBp
eGVsICs9IDQpCiAgICAgICAgICAgICAgICAgICAgIHNldFBpeGVsUHJlbXVsdGlwbGllZFJHQkEo
YWRkcmVzcysrLCBwaXhlbCwgbm9uVHJpdmlhbEFscGhhTWFzayk7CiAgICAgICAgICAgICB9IGVs
c2UgewpAQCAtNjYzLDggKzYxNiw2IEBAIHZvaWQgUE5HSW1hZ2VEZWNvZGVyOjpyZWFkQ2h1bmtz
KHBuZ191bmtub3duX2NodW5rcCBjaHVuaykKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAg
ICBtX2ZyYW1lQnVmZmVyQ2FjaGUucmVzaXplKG1fZnJhbWVDb3VudCk7Ci0gICAgICAgIGZvciAo
YXV0byYgaW1hZ2VGcmFtZSA6IG1fZnJhbWVCdWZmZXJDYWNoZSkKLSAgICAgICAgICAgIGltYWdl
RnJhbWUuc2V0UHJlbXVsdGlwbHlBbHBoYShtX3ByZW11bHRpcGx5QWxwaGEpOwogICAgIH0gZWxz
ZSBpZiAoIW1lbWNtcChjaHVuay0+bmFtZSwgImZjVEwiLCA0KSAmJiBjaHVuay0+c2l6ZSA9PSAy
NikgewogICAgICAgICBpZiAobV9oYXNJbmZvICYmICFtX2lzQW5pbWF0ZWQpCiAgICAgICAgICAg
ICByZXR1cm47CkBAIC03MDYsMTAgKzY1Nyw4IEBAIHZvaWQgUE5HSW1hZ2VEZWNvZGVyOjpyZWFk
Q2h1bmtzKHBuZ191bmtub3duX2NodW5rcCBjaHVuaykKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogCi0gICAgICAgIGlmIChtX2ZyYW1lQnVmZmVyQ2FjaGUuaXNFbXB0eSgpKSB7Cisg
ICAgICAgIGlmIChtX2ZyYW1lQnVmZmVyQ2FjaGUuaXNFbXB0eSgpKQogICAgICAgICAgICAgbV9m
cmFtZUJ1ZmZlckNhY2hlLnJlc2l6ZSgxKTsKLSAgICAgICAgICAgIG1fZnJhbWVCdWZmZXJDYWNo
ZVswXS5zZXRQcmVtdWx0aXBseUFscGhhKG1fcHJlbXVsdGlwbHlBbHBoYSk7Ci0gICAgICAgIH0K
IAogICAgICAgICBpZiAobV9jdXJyZW50RnJhbWUgPCBtX2ZyYW1lQnVmZmVyQ2FjaGUuc2l6ZSgp
KSB7CiAgICAgICAgICAgICBJbWFnZUZyYW1lJiBidWZmZXIgPSBtX2ZyYW1lQnVmZmVyQ2FjaGVb
bV9jdXJyZW50RnJhbWVdOwpAQCAtODM0LDExICs3ODMsNiBAQCB2b2lkIFBOR0ltYWdlRGVjb2Rl
cjo6aW5pdEZyYW1lQnVmZmVyKHNpemVfdCBmcmFtZUluZGV4KQogICAgICAgICBmcmFtZVJlY3Qu
c2V0SGVpZ2h0KHNpemUoKS5oZWlnaHQoKSAtIG1feU9mZnNldCk7CiAKICAgICBJbWFnZUZyYW1l
JiBidWZmZXIgPSBtX2ZyYW1lQnVmZmVyQ2FjaGVbZnJhbWVJbmRleF07Ci0gICAgaW50IGxlZnQg
PSB1cHBlckJvdW5kU2NhbGVkWChmcmFtZVJlY3QueCgpKTsKLSAgICBpbnQgcmlnaHQgPSBsb3dl
ckJvdW5kU2NhbGVkWChmcmFtZVJlY3QubWF4WCgpLCBsZWZ0KTsKLSAgICBpbnQgdG9wID0gdXBw
ZXJCb3VuZFNjYWxlZFkoZnJhbWVSZWN0LnkoKSk7Ci0gICAgaW50IGJvdHRvbSA9IGxvd2VyQm91
bmRTY2FsZWRZKGZyYW1lUmVjdC5tYXhZKCksIHRvcCk7Ci0gICAgYnVmZmVyLnNldE9yaWdpbmFs
RnJhbWVSZWN0KEludFJlY3QobGVmdCwgdG9wLCByaWdodCAtIGxlZnQsIGJvdHRvbSAtIHRvcCkp
OwogCiAgICAgLy8gVGhlIHN0YXJ0aW5nIHN0YXRlIGZvciB0aGlzIGZyYW1lIGRlcGVuZHMgb24g
dGhlIHByZXZpb3VzIGZyYW1lJ3MKICAgICAvLyBkaXNwb3NhbCBtZXRob2QuCkBAIC04NjIsNyAr
ODA2LDcgQEAgdm9pZCBQTkdJbWFnZURlY29kZXI6OmluaXRGcmFtZUJ1ZmZlcihzaXplX3QgZnJh
bWVJbmRleCkKICAgICB9IGVsc2UgewogICAgICAgICAvLyBXZSB3YW50IHRvIGNsZWFyIHRoZSBw
cmV2aW91cyBmcmFtZSB0byB0cmFuc3BhcmVudCwgd2l0aG91dAogICAgICAgICAvLyBhZmZlY3Rp
bmcgcGl4ZWxzIGluIHRoZSBpbWFnZSBvdXRzaWRlIG9mIHRoZSBmcmFtZS4KLSAgICAgICAgY29u
c3QgSW50UmVjdCYgcHJldlJlY3QgPSBwcmV2QnVmZmVyLT5vcmlnaW5hbEZyYW1lUmVjdCgpOwor
ICAgICAgICBjb25zdCBJbnRSZWN0JiBwcmV2UmVjdCA9IHByZXZCdWZmZXItPnBpeGVscygpLT5y
ZWN0KCk7CiAgICAgICAgIGlmICghZnJhbWVJbmRleCB8fCBwcmV2UmVjdC5jb250YWlucyhJbnRS
ZWN0KEludFBvaW50KCksIHNjYWxlZFNpemUoKSkpKSB7CiAgICAgICAgICAgICAvLyBDbGVhcmlu
ZyB0aGUgZmlyc3QgZnJhbWUsIG9yIGEgZnJhbWUgdGhlIHNpemUgb2YgdGhlIHdob2xlCiAgICAg
ICAgICAgICAvLyBpbWFnZSwgcmVzdWx0cyBpbiBhIGNvbXBsZXRlbHkgZW1wdHkgaW1hZ2UuCkBA
IC04NzMsNiArODE3LDEyIEBAIHZvaWQgUE5HSW1hZ2VEZWNvZGVyOjppbml0RnJhbWVCdWZmZXIo
c2l6ZV90IGZyYW1lSW5kZXgpCiAgICAgICAgICAgICBidWZmZXIuemVyb0ZpbGxGcmFtZVJlY3Qo
cHJldlJlY3QpOwogICAgICAgICB9CiAgICAgfQorICAgIAorICAgIGludCBsZWZ0ID0gdXBwZXJC
b3VuZFNjYWxlZFgoZnJhbWVSZWN0LngoKSk7CisgICAgaW50IHJpZ2h0ID0gbG93ZXJCb3VuZFNj
YWxlZFgoZnJhbWVSZWN0Lm1heFgoKSwgbGVmdCk7CisgICAgaW50IHRvcCA9IHVwcGVyQm91bmRT
Y2FsZWRZKGZyYW1lUmVjdC55KCkpOworICAgIGludCBib3R0b20gPSBsb3dlckJvdW5kU2NhbGVk
WShmcmFtZVJlY3QubWF4WSgpLCB0b3ApOworICAgIGJ1ZmZlci5waXhlbHMoKS0+c2V0UmVjdChJ
bnRSZWN0KGxlZnQsIHRvcCwgcmlnaHQgLSBsZWZ0LCBib3R0b20gLSB0b3ApKTsKIH0KIAogdm9p
ZCBQTkdJbWFnZURlY29kZXI6OmZyYW1lQ29tcGxldGUoKQpAQCAtODg2LDcgKzgzNiw3IEBAIHZv
aWQgUE5HSW1hZ2VEZWNvZGVyOjpmcmFtZUNvbXBsZXRlKCkKICAgICBwbmdfYnl0ZXAgaW50ZXJs
YWNlQnVmZmVyID0gbV9yZWFkZXItPmludGVybGFjZUJ1ZmZlcigpOwogCiAgICAgaWYgKG1fY3Vy
cmVudEZyYW1lICYmIGludGVybGFjZUJ1ZmZlcikgewotICAgICAgICBjb25zdCBJbnRSZWN0JiBy
ZWN0ID0gYnVmZmVyLm9yaWdpbmFsRnJhbWVSZWN0KCk7CisgICAgICAgIGNvbnN0IEludFJlY3Qm
IHJlY3QgPSBidWZmZXIucGl4ZWxzKCktPnJlY3QoKTsKICAgICAgICAgYm9vbCBoYXNBbHBoYSA9
IG1fcmVhZGVyLT5oYXNBbHBoYSgpOwogICAgICAgICB1bnNpZ25lZCBjb2xvckNoYW5uZWxzID0g
aGFzQWxwaGEgPyA0IDogMzsKICAgICAgICAgYm9vbCBub25Ucml2aWFsQWxwaGEgPSBmYWxzZTsK
QEAgLTg5Niw3ICs4NDYsNyBAQCB2b2lkIFBOR0ltYWdlRGVjb2Rlcjo6ZnJhbWVDb21wbGV0ZSgp
CiAjaWYgRU5BQkxFKElNQUdFX0RFQ09ERVJfRE9XTl9TQU1QTElORykKICAgICAgICAgZm9yIChp
bnQgeSA9IDA7IHkgPCByZWN0Lm1heFkoKSAtIHJlY3QueSgpOyArK3kpIHsKICAgICAgICAgICAg
IHBuZ19ieXRlcCByb3cgPSBpbnRlcmxhY2VCdWZmZXIgKyAobV9zY2FsZWQgPyBtX3NjYWxlZFJv
d3NbeV0gOiB5KSAqIGNvbG9yQ2hhbm5lbHMgKiBzaXplKCkud2lkdGgoKTsKLSAgICAgICAgICAg
IEltYWdlRnJhbWU6OlBpeGVsRGF0YSogYWRkcmVzcyA9IGJ1ZmZlci5nZXRBZGRyKHJlY3QueCgp
LCB5ICsgcmVjdC55KCkpOworICAgICAgICAgICAgUkdCQTMyKiBhZGRyZXNzID0gYnVmZmVyLmdl
dEFkZHIocmVjdC54KCksIHkgKyByZWN0LnkoKSk7CiAgICAgICAgICAgICBmb3IgKGludCB4ID0g
MDsgeCA8IHJlY3QubWF4WCgpIC0gcmVjdC54KCk7ICsreCkgewogICAgICAgICAgICAgICAgIHBu
Z19ieXRlcCBwaXhlbCA9IHJvdyArIChtX3NjYWxlZCA/IG1fc2NhbGVkQ29sdW1uc1t4XSA6IHgp
ICogY29sb3JDaGFubmVsczsKICAgICAgICAgICAgICAgICB1bnNpZ25lZCBhbHBoYSA9IGhhc0Fs
cGhhID8gcGl4ZWxbM10gOiAyNTU7CkBAIC05MTIsNyArODYyLDcgQEAgdm9pZCBQTkdJbWFnZURl
Y29kZXI6OmZyYW1lQ29tcGxldGUoKQogICAgICAgICBwbmdfYnl0ZXAgcm93ID0gaW50ZXJsYWNl
QnVmZmVyOwogICAgICAgICBmb3IgKGludCB5ID0gcmVjdC55KCk7IHkgPCByZWN0Lm1heFkoKTsg
Kyt5LCByb3cgKz0gY29sb3JDaGFubmVscyAqIHNpemUoKS53aWR0aCgpKSB7CiAgICAgICAgICAg
ICBwbmdfYnl0ZXAgcGl4ZWwgPSByb3c7Ci0gICAgICAgICAgICBJbWFnZUZyYW1lOjpQaXhlbERh
dGEqIGFkZHJlc3MgPSBidWZmZXIuZ2V0QWRkcihyZWN0LngoKSwgeSk7CisgICAgICAgICAgICBS
R0JBMzIqIGFkZHJlc3MgPSBidWZmZXIuZ2V0QWRkcihyZWN0LngoKSwgeSk7CiAgICAgICAgICAg
ICBmb3IgKGludCB4ID0gcmVjdC54KCk7IHggPCByZWN0Lm1heFgoKTsgKyt4LCBwaXhlbCArPSBj
b2xvckNoYW5uZWxzKSB7CiAgICAgICAgICAgICAgICAgdW5zaWduZWQgYWxwaGEgPSBoYXNBbHBo
YSA/IHBpeGVsWzNdIDogMjU1OwogICAgICAgICAgICAgICAgIG5vblRyaXZpYWxBbHBoYSB8PSBh
bHBoYSA8IDI1NTsKQEAgLTkyNSw3ICs4NzUsNyBAQCB2b2lkIFBOR0ltYWdlRGVjb2Rlcjo6ZnJh
bWVDb21wbGV0ZSgpCiAjZW5kaWYKIAogICAgICAgICBpZiAoIW5vblRyaXZpYWxBbHBoYSkgewot
ICAgICAgICAgICAgaWYgKGJ1ZmZlci5vcmlnaW5hbEZyYW1lUmVjdCgpLmNvbnRhaW5zKEludFJl
Y3QoSW50UG9pbnQoKSwgc2NhbGVkU2l6ZSgpKSkpCisgICAgICAgICAgICBpZiAoYnVmZmVyLnBp
eGVscygpLT5yZWN0KCkuY29udGFpbnMoSW50UmVjdChJbnRQb2ludCgpLCBzY2FsZWRTaXplKCkp
KSkKICAgICAgICAgICAgICAgICBidWZmZXIuc2V0SGFzQWxwaGEoZmFsc2UpOwogICAgICAgICAg
ICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgc2l6ZV90IGZyYW1lSW5kZXggPSBtX2N1cnJlbnRG
cmFtZTsKQEAgLTkzMyw3ICs4ODMsNyBAQCB2b2lkIFBOR0ltYWdlRGVjb2Rlcjo6ZnJhbWVDb21w
bGV0ZSgpCiAgICAgICAgICAgICAgICAgd2hpbGUgKGZyYW1lSW5kZXggJiYgKHByZXZCdWZmZXIt
PmRpc3Bvc2FsTWV0aG9kKCkgPT0gSW1hZ2VGcmFtZTo6RGlzcG9zZU92ZXJ3cml0ZVByZXZpb3Vz
KSkKICAgICAgICAgICAgICAgICAgICAgcHJldkJ1ZmZlciA9ICZtX2ZyYW1lQnVmZmVyQ2FjaGVb
LS1mcmFtZUluZGV4XTsKICAgICAgICAgICAgICAgICBpZiAoKHByZXZCdWZmZXItPmRpc3Bvc2Fs
TWV0aG9kKCkgPT0gSW1hZ2VGcmFtZTo6RGlzcG9zZU92ZXJ3cml0ZUJnY29sb3IpCi0gICAgICAg
ICAgICAgICAgICAgICYmICFwcmV2QnVmZmVyLT5oYXNBbHBoYSgpICYmIGJ1ZmZlci5vcmlnaW5h
bEZyYW1lUmVjdCgpLmNvbnRhaW5zKHByZXZCdWZmZXItPm9yaWdpbmFsRnJhbWVSZWN0KCkpKQor
ICAgICAgICAgICAgICAgICAgICAmJiAhcHJldkJ1ZmZlci0+aGFzQWxwaGEoKSAmJiBidWZmZXIu
cGl4ZWxzKCktPnJlY3QoKS5jb250YWlucyhwcmV2QnVmZmVyLT5waXhlbHMoKS0+cmVjdCgpKSkK
ICAgICAgICAgICAgICAgICAgICAgYnVmZmVyLnNldEhhc0FscGhhKGZhbHNlKTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgfSBlbHNlIGlmICghbV9ibGVuZCAmJiAhYnVmZmVyLmhhc0FscGhhKCkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcv
UE5HSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmgKaW5kZXggMDVmYzc0YjZkZTIxNGQwNDE0YTgyYjQxODY5
Mzc3NjJkMWE1ZTU1Yi4uOTg3NDI0NjE5MDg4ZGUxN2ZjZDYzZGM4NmY1Yjk1MTc4N2NiNGRlYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BO
R0ltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuaApAQCAtNDgsNyArNDgsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIGludCByZXBldGl0aW9uQ291bnQoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBtX3BsYXlDb3VudC0xOyB9CiAjZW5kaWYKICAgICAgICAgYm9vbCBpc1NpemVBdmFpbGFi
bGUoKSBvdmVycmlkZTsKLSAgICAgICAgYm9vbCBzZXRTaXplKHVuc2lnbmVkIHdpZHRoLCB1bnNp
Z25lZCBoZWlnaHQpIG92ZXJyaWRlOworICAgICAgICBib29sIHNldFNpemUoY29uc3QgSW50U2l6
ZSYpIG92ZXJyaWRlOwogICAgICAgICBJbWFnZUZyYW1lKiBmcmFtZUJ1ZmZlckF0SW5kZXgoc2l6
ZV90IGluZGV4KSBvdmVycmlkZTsKICAgICAgICAgLy8gQ0FVVElPTjogc2V0RmFpbGVkKCkgZGVs
ZXRlcyB8bV9yZWFkZXJ8LiAgQmUgY2FyZWZ1bCB0byBhdm9pZAogICAgICAgICAvLyBhY2Nlc3Np
bmcgZGVsZXRlZCBtZW1vcnksIGVzcGVjaWFsbHkgd2hlbiBjYWxsaW5nIHRoaXMgZnJvbSBpbnNp
ZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dl
YnAvV0VCUEltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwCmluZGV4IDEyNGExYjJmMTk5N2ZlNjc4
YzYxYjUyZjMwNThkYjRkNmI4ODY3OWEuLjE1OTYwNGMzODNmMzJkZTU2MDNkNDcwZGFkZmQxOTdi
YjNlZGIzOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcApAQCAtNzgsMTAgKzc4
LDggQEAgSW1hZ2VGcmFtZSogV0VCUEltYWdlRGVjb2Rlcjo6ZnJhbWVCdWZmZXJBdEluZGV4KHNp
emVfdCBpbmRleCkKICAgICBpZiAoaW5kZXgpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgaWYg
KG1fZnJhbWVCdWZmZXJDYWNoZS5pc0VtcHR5KCkpIHsKKyAgICBpZiAobV9mcmFtZUJ1ZmZlckNh
Y2hlLmlzRW1wdHkoKSkKICAgICAgICAgbV9mcmFtZUJ1ZmZlckNhY2hlLnJlc2l6ZSgxKTsKLSAg
ICAgICAgbV9mcmFtZUJ1ZmZlckNhY2hlWzBdLnNldFByZW11bHRpcGx5QWxwaGEobV9wcmVtdWx0
aXBseUFscGhhKTsKLSAgICB9CiAKICAgICBJbWFnZUZyYW1lJiBmcmFtZSA9IG1fZnJhbWVCdWZm
ZXJDYWNoZVswXTsKICAgICBpZiAoZnJhbWUuc3RhdHVzKCkgIT0gSW1hZ2VGcmFtZTo6RnJhbWVD
b21wbGV0ZSkKQEAgLTExNSw3ICsxMTMsNyBAQCBib29sIFdFQlBJbWFnZURlY29kZXI6OmRlY29k
ZShib29sIG9ubHlTaXplKQogICAgICAgICAgICAgcmV0dXJuIHNldEZhaWxlZCgpOwogICAgICAg
ICBtX2hhc0FscGhhID0gZmFsc2U7CiAjZW5kaWYKLSAgICAgICAgaWYgKCFzZXRTaXplKHdpZHRo
LCBoZWlnaHQpKQorICAgICAgICBpZiAoIXNldFNpemUoSW50U2l6ZSh3aWR0aCwgaGVpZ2h0KSkp
CiAgICAgICAgICAgICByZXR1cm4gc2V0RmFpbGVkKCk7CiAgICAgfQogCkBAIC0xMjgsMTggKzEy
NiwxNyBAQCBib29sIFdFQlBJbWFnZURlY29kZXI6OmRlY29kZShib29sIG9ubHlTaXplKQogICAg
IEFTU0VSVChidWZmZXIuc3RhdHVzKCkgIT0gSW1hZ2VGcmFtZTo6RnJhbWVDb21wbGV0ZSk7CiAK
ICAgICBpZiAoYnVmZmVyLnN0YXR1cygpID09IEltYWdlRnJhbWU6OkZyYW1lRW1wdHkpIHsKLSAg
ICAgICAgaWYgKCFidWZmZXIuc2V0U2l6ZShzaXplKCkud2lkdGgoKSwgc2l6ZSgpLmhlaWdodCgp
KSkKKyAgICAgICAgaWYgKCFidWZmZXIuc2V0U2l6ZShzaXplKCksIHByZW11bHRpcGx5QWxwaGEo
KSkpCiAgICAgICAgICAgICByZXR1cm4gc2V0RmFpbGVkKCk7CiAgICAgICAgIGJ1ZmZlci5zZXRT
dGF0dXMoSW1hZ2VGcmFtZTo6RnJhbWVQYXJ0aWFsKTsKICAgICAgICAgYnVmZmVyLnNldEhhc0Fs
cGhhKG1faGFzQWxwaGEpOwotICAgICAgICBidWZmZXIuc2V0T3JpZ2luYWxGcmFtZVJlY3QoSW50
UmVjdChJbnRQb2ludCgpLCBzaXplKCkpKTsKICAgICB9CiAKICAgICBpZiAoIW1fZGVjb2Rlcikg
ewogICAgICAgICBXRUJQX0NTUF9NT0RFIG1vZGUgPSBvdXRwdXRNb2RlKG1faGFzQWxwaGEpOwot
ICAgICAgICBpZiAoIW1fcHJlbXVsdGlwbHlBbHBoYSkKKyAgICAgICAgaWYgKCFwcmVtdWx0aXBs
eUFscGhhKCkpCiAgICAgICAgICAgICBtb2RlID0gb3V0cHV0TW9kZShmYWxzZSk7Ci0gICAgICAg
IGludCByb3dTdHJpZGUgPSBzaXplKCkud2lkdGgoKSAqIHNpemVvZihJbWFnZUZyYW1lOjpQaXhl
bERhdGEpOworICAgICAgICBpbnQgcm93U3RyaWRlID0gc2l6ZSgpLndpZHRoKCkgKiBzaXplb2Yo
UkdCQTMyKTsKICAgICAgICAgdWludDhfdCogb3V0cHV0ID0gcmVpbnRlcnByZXRfY2FzdDx1aW50
OF90Kj4oYnVmZmVyLmdldEFkZHIoMCwgMCkpOwogICAgICAgICBpbnQgb3V0cHV0U2l6ZSA9IHNp
emUoKS5oZWlnaHQoKSAqIHJvd1N0cmlkZTsKICAgICAgICAgbV9kZWNvZGVyID0gV2ViUElOZXdS
R0IobW9kZSwgb3V0cHV0LCBvdXRwdXRTaXplLCByb3dTdHJpZGUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZVZpZGVvU291
cmNlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tS
ZWFsdGltZVZpZGVvU291cmNlTWFjLm1tCmluZGV4IDIxNmNkMDkzZjI2NDY3Y2JhODhhNDNmNjkz
YWJmNGNmNTFkZDFhNGQuLmQxMTQ1NGIwNWVmODg5OTNhNjI4OTM4OTZiYzBjMTE3MjhjNWVkNTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2Nr
UmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMubW0KQEAgLTg3LDcgKzg3
LDcgQEAgdm9pZCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYzo6dXBkYXRlUGxhdGZvcm1MYXll
cigpIGNvbnN0CiAgICAgICAgIGlmICghaW1hZ2UpCiAgICAgICAgICAgICBicmVhazsKIAotICAg
ICAgICBtX3ByZXZpZXdJbWFnZSA9IGltYWdlLT5nZXRDR0ltYWdlUmVmKCk7CisgICAgICAgIG1f
cHJldmlld0ltYWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlKCk7CiAgICAgICAgIGlmICghbV9wcmV2
aWV3SW1hZ2UpCiAgICAgICAgICAgICBicmVhazsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZUNHV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9EcmFnSW1hZ2VDR1dpbi5jcHAKaW5kZXggMzZjZDY1MTZlODBmMTc0OGJmZWFiNzdh
OTMwMjcxYzEyMWRlODAxOS4uNGI0ZTM3NzllOTZmNzhjNjU0MGE1M2M0NDc4YzNiZmQ5MzVmNTNl
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZUNHV2lu
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ0dXaW4uY3Bw
CkBAIC0xMzYsOSArMTM2LDkgQEAgRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZyb21JbWFn
ZShJbWFnZSogaW1nLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pCiAgICAgQ0dDb250ZXh0
U2NhbGVDVE0oZHJhd0NvbnRleHQsIDEsIC0xKTsKICAgICBDR0NvbnRleHRTZXRGaWxsQ29sb3Io
ZHJhd0NvbnRleHQsIHdoaXRlKTsKICAgICBDR0NvbnRleHRGaWxsUmVjdChkcmF3Q29udGV4dCwg
cmVjdCk7Ci0gICAgaWYgKGF1dG8gc3JjSW1hZ2UgPSBpbWctPmdldENHSW1hZ2VSZWYoKSkgewor
ICAgIGlmIChhdXRvIHNyY0ltYWdlID0gaW1nLT5uYXRpdmVJbWFnZSgpKSB7CiAgICAgICAgIENH
Q29udGV4dFNldEJsZW5kTW9kZShkcmF3Q29udGV4dCwga0NHQmxlbmRNb2RlTm9ybWFsKTsKLSAg
ICAgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGRyYXdDb250ZXh0LCByZWN0LCBzcmNJbWFnZSk7Cisg
ICAgICAgIENHQ29udGV4dERyYXdJbWFnZShkcmF3Q29udGV4dCwgcmVjdCwgc3JjSW1hZ2UuZ2V0
KCkpOwogICAgIH0KICAgICBDR0NvbnRleHRSZWxlYXNlKGRyYXdDb250ZXh0KTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJDYWNoZS5tbSBiL1NvdXJjZS9XZWJLaXQv
bWFjL01pc2MvV2ViQ2FjaGUubW0KaW5kZXggYjY1OWQ2ZGJmOWFkNjk5OWMzYWM5NjJkZTk1MTU3
ODA5N2UxZjNiMS4uN2M1ZWQyMTBkZGIyYTMyYTc2NjY3NGMxMjBkOTk0YzJmYTQ3ZTdmZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJDYWNoZS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9NaXNjL1dlYkNhY2hlLm1tCkBAIC0yMDQsNyArMjA0LDcgQEAgKyAoQ0dJbWFn
ZVJlZilpbWFnZUZvclVSTDooTlNVUkwgKil1cmwKICAgICBXZWJDb3JlOjpDYWNoZWRJbWFnZSYg
Y2FjaGVkSW1hZ2UgPSBkb3duY2FzdDxXZWJDb3JlOjpDYWNoZWRJbWFnZT4oKmNhY2hlZFJlc291
cmNlKTsKICAgICBpZiAoIWNhY2hlZEltYWdlLmhhc0ltYWdlKCkpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwotICAgIHJldHVybiBjYWNoZWRJbWFnZS5pbWFnZSgpLT5nZXRDR0ltYWdlUmVmKCk7
CisgICAgcmV0dXJuIGNhY2hlZEltYWdlLmltYWdlKCktPm5hdGl2ZUltYWdlKCkuZ2V0KCk7CiB9
CiAKICNlbmRpZiAvLyBQTEFURk9STShJT1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvY2cvV0tJY29uRGF0YWJhc2VDRy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvY2cvV0tJY29uRGF0YWJhc2VDRy5jcHAKaW5kZXggMGY2ZGU3YTE0NmE2
MTFhNTJhYTFlNTM5MDE5ZmE2YzFjNDY3MjVhZS4uMzA1NjMzNmNiNjZmZTRhZjE4YmRjNTI5YWNh
MmY4ZmM4ODFkZmU1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L2NnL1dLSWNvbkRhdGFiYXNlQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9jZy9XS0ljb25EYXRhYmFzZUNHLmNwcApAQCAtMzcsMTIgKzM3LDIzIEBAIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogQ0dJbWFnZVJlZiBXS0ljb25EYXRhYmFzZVRyeUdldENHSW1hZ2VG
b3JVUkwoV0tJY29uRGF0YWJhc2VSZWYgaWNvbkRhdGFiYXNlUmVmLCBXS1VSTFJlZiB1cmxSZWYs
IFdLU2l6ZSBzaXplKQogewogICAgIEltYWdlKiBpbWFnZSA9IHRvSW1wbChpY29uRGF0YWJhc2VS
ZWYpLT5pbWFnZUZvclBhZ2VVUkwodG9XVEZTdHJpbmcodXJsUmVmKSk7Ci0gICAgcmV0dXJuIGlt
YWdlID8gaW1hZ2UtPmdldEZpcnN0Q0dJbWFnZVJlZk9mU2l6ZShJbnRTaXplKHN0YXRpY19jYXN0
PGludD4oc2l6ZS53aWR0aCksIHN0YXRpY19jYXN0PGludD4oc2l6ZS5oZWlnaHQpKSkgOiAwOwor
ICAgIHJldHVybiBpbWFnZSA/IGltYWdlLT5uYXRpdmVJbWFnZU9mU2l6ZShJbnRTaXplKHN0YXRp
Y19jYXN0PGludD4oc2l6ZS53aWR0aCksIHN0YXRpY19jYXN0PGludD4oc2l6ZS5oZWlnaHQpKSku
Z2V0KCkgOiBudWxscHRyOwogfQogCiBDRkFycmF5UmVmIFdLSWNvbkRhdGFiYXNlVHJ5Q29weUNH
SW1hZ2VBcnJheUZvclVSTChXS0ljb25EYXRhYmFzZVJlZiBpY29uRGF0YWJhc2VSZWYsIFdLVVJM
UmVmIHVybFJlZikKIHsKICAgICBJbWFnZSogaW1hZ2UgPSB0b0ltcGwoaWNvbkRhdGFiYXNlUmVm
KS0+aW1hZ2VGb3JQYWdlVVJMKHRvV1RGU3RyaW5nKHVybFJlZikpOwotICAgIHJldHVybiBpbWFn
ZSA/IGltYWdlLT5nZXRDR0ltYWdlQXJyYXkoKS5sZWFrUmVmKCkgOiAwOworICAgIGlmICghaW1h
Z2UpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYXV0byBuYXRpdmVJbWFnZXMgPSBp
bWFnZS0+ZnJhbWVzTmF0aXZlSW1hZ2VzKCk7CisgICAgaWYgKCFuYXRpdmVJbWFnZXMuc2l6ZSgp
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAKKyAgICBDRk11dGFibGVBcnJheVJlZiBh
cnJheSA9IENGQXJyYXlDcmVhdGVNdXRhYmxlKG51bGxwdHIsIG5hdGl2ZUltYWdlcy5zaXplKCks
ICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpOworICAgIGZvciAoYXV0byBuYXRpdmVJbWFnZSA6IG5h
dGl2ZUltYWdlcykKKyAgICAgICAgQ0ZBcnJheUFwcGVuZFZhbHVlKGFycmF5LCBuYXRpdmVJbWFn
ZS5nZXQoKSk7CisgICAgCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PENGQXJyYXlSZWY+KENGUmV0
YWluKGFycmF5KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9p
b3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggZGM3OTgzYWI5ODhjMmQwNGEx
NzMwZWUxMzczMDNjMjQ0MTYxNTE5Ny4uZmJjM2U1ZDRjNTQzMDFjZTkyMTdhNDBmOGQwOGJkNTgz
NTI3ODdjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRl
bnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9X
S0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTQwNzEsNyArNDA3MSw3IEBAIC0gKFVJSW1h
Z2UgKilfcHJlc2VudGF0aW9uU25hcHNob3RGb3JQcmV2aWV3SXRlbUNvbnRyb2xsZXI6KFVJUHJl
dmlld0l0ZW1Db250cm9sCiB7CiAgICAgaWYgKCFfcG9zaXRpb25JbmZvcm1hdGlvbi5saW5rSW5k
aWNhdG9yLmNvbnRlbnRJbWFnZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJu
IFtbW1VJSW1hZ2UgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTpfcG9zaXRpb25JbmZvcm1hdGlvbi5s
aW5rSW5kaWNhdG9yLmNvbnRlbnRJbWFnZS0+Z2V0Q0dJbWFnZVJlZigpXSBhdXRvcmVsZWFzZV07
CisgICAgcmV0dXJuIFtbW1VJSW1hZ2UgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTpfcG9zaXRpb25J
bmZvcm1hdGlvbi5saW5rSW5kaWNhdG9yLmNvbnRlbnRJbWFnZS0+bmF0aXZlSW1hZ2UoKS5nZXQo
KV0gYXV0b3JlbGVhc2VdOwogfQogCiAtIChOU0FycmF5ICopX3ByZXNlbnRhdGlvblJlY3RzRm9y
UHJldmlld0l0ZW1Db250cm9sbGVyOihVSVByZXZpZXdJdGVtQ29udHJvbGxlciAqKWNvbnRyb2xs
ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5W
aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNw
cAppbmRleCA5YTMzZjdjYzdkYzdjN2Q3MmY5ZGE3NDMwOThiN2RiY2E4MjQwOWNmLi5hNTMyNTEw
Njc4YjlmNTM1MTQ1OGEzOGE5ZjQyMzM3NDdkMDM1ZjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC0xNzI3LDY5ICsxNzI3LDYg
QEAgdm9pZCBQbHVnaW5WaWV3Ojp3aW5kb3dlZFBsdWdpblZpc2liaWxpdHlEaWRDaGFuZ2UoYm9v
bCBpc1Zpc2libGUsIHVpbnQ2NF90IHdpbmQKIH0KICNlbmRpZgogCi0jaWYgUExBVEZPUk0oQ09D
T0EpCi1zdGF0aWMgYm9vbCBpc0FsbW9zdFNvbGlkQ29sb3IoQml0bWFwSW1hZ2UqIGJpdG1hcCkK
LXsKLSAgICBDR0ltYWdlUmVmIGltYWdlID0gYml0bWFwLT5nZXRDR0ltYWdlUmVmKCk7Ci0gICAg
QVNTRVJUKENHSW1hZ2VHZXRCaXRzUGVyQ29tcG9uZW50KGltYWdlKSA9PSA4KTsKLQotICAgIENH
Qml0bWFwSW5mbyBpbWFnZUluZm8gPSBDR0ltYWdlR2V0Qml0bWFwSW5mbyhpbWFnZSk7Ci0gICAg
aWYgKCEoaW1hZ2VJbmZvICYga0NHQml0bWFwQnl0ZU9yZGVyMzJMaXR0bGUpIHx8IChpbWFnZUlu
Zm8gJiBrQ0dCaXRtYXBBbHBoYUluZm9NYXNrKSAhPSBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGll
ZEZpcnN0KSB7Ci0gICAgICAgIC8vIEZJWE1FOiBDb25zaWRlciBiZWluZyBhYmxlIHRvIGhhbmRs
ZSBvdGhlciBwaXhlbCBmb3JtYXRzLgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHNpemVfdCB3aWR0aCA9IENHSW1hZ2VH
ZXRXaWR0aChpbWFnZSk7Ci0gICAgc2l6ZV90IGhlaWdodCA9IENHSW1hZ2VHZXRIZWlnaHQoaW1h
Z2UpOwotICAgIHNpemVfdCBieXRlc1BlclJvdyA9IENHSW1hZ2VHZXRCeXRlc1BlclJvdyhpbWFn
ZSk7Ci0KLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBwcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRh
UHJvdmlkZXJDb3B5RGF0YShDR0ltYWdlR2V0RGF0YVByb3ZpZGVyKGltYWdlKSkpOwotICAgIGNv
bnN0IFVJbnQ4KiBkYXRhID0gQ0ZEYXRhR2V0Qnl0ZVB0cihwcm92aWRlci5nZXQoKSk7Ci0KLSAg
ICAvLyBPdmVybGF5IGEgZ3JpZCBvZiBzYW1wbGluZyBkb3RzIG9uIHRvcCBvZiBhIGdyYXlzY2Fs
ZSB2ZXJzaW9uIG9mIHRoZSBpbWFnZS4KLSAgICAvLyBGb3IgdGhlIGludGVyaW9yIHBvaW50cywg
Y2FsY3VsYXRlIHRoZSBkaWZmZXJlbmNlIGluIGx1bWluYW5jZSBhbW9uZyB0aGUgc2FtcGxlIHBv
aW50Ci0gICAgLy8gYW5kIGl0cyBzdXJyb3VuZHMgcG9pbnRzLCBzY2FsZWQgYnkgdHJhbnNwYXJl
bmN5LgotICAgIGNvbnN0IHVuc2lnbmVkIHNhbXBsZVJvd3MgPSA3OwotICAgIGNvbnN0IHVuc2ln
bmVkIHNhbXBsZUNvbHMgPSA3OwotICAgIC8vIEZJWE1FOiBSZWZpbmUgdGhlIHByb3BlciBudW1i
ZXIgb2Ygc2FtcGxlcywgYW5kIGFjY29tbW9kYXRlIGRpZmZlcmVudCBhc3BlY3QgcmF0aW9zLgot
ICAgIGlmICh3aWR0aCA8IHNhbXBsZUNvbHMgfHwgaGVpZ2h0IDwgc2FtcGxlUm93cykKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gRW5zdXJlIHRoYXQgdGhlIGxhc3Qgcm93L2NvbHVt
biBsYW5kIG9uIHRoZSBpbWFnZSBwZXJpbWV0ZXIuCi0gICAgY29uc3QgZmxvYXQgc3RyaWRlV2lk
dGggPSBzdGF0aWNfY2FzdDxmbG9hdD4od2lkdGggLSAxKSAvIChzYW1wbGVDb2xzIC0gMSk7Ci0g
ICAgY29uc3QgZmxvYXQgc3RyaWRlSGVpZ2h0ID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGhlaWdodCAt
IDEpIC8gKHNhbXBsZVJvd3MgLSAxKTsKLSAgICBmbG9hdCBzYW1wbGVzW3NhbXBsZVJvd3NdW3Nh
bXBsZUNvbHNdOwotCi0gICAgLy8gRmluZCB0aGUgbHVtaW5hbmNlIG9mIHRoZSBzYW1wbGUgcG9p
bnRzLgotICAgIGZsb2F0IHkgPSAwOwotICAgIGNvbnN0IFVJbnQ4KiByb3cgPSBkYXRhOwotICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzYW1wbGVSb3dzOyArK2kpIHsKLSAgICAgICAgZmxv
YXQgeCA9IDA7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGogPCBzYW1wbGVDb2xzOyAr
K2opIHsKLSAgICAgICAgICAgIGNvbnN0IFVJbnQ4KiBwMCA9IHJvdyArIChzdGF0aWNfY2FzdDxp
bnQ+KHggKyAuNSkpICogNDsKLSAgICAgICAgICAgIC8vIFIgRyBCIEEKLSAgICAgICAgICAgIHNh
bXBsZXNbaV1bal0gPSAoMC4yMTI1ICogKnAwICsgMC43MTU0ICogKihwMCsxKSArIDAuMDcyMSAq
ICoocDArMikpICogKihwMCszKSAvIDI1NTsKLSAgICAgICAgICAgIHggKz0gc3RyaWRlV2lkdGg7
Ci0gICAgICAgIH0KLSAgICAgICAgeSArPSBzdHJpZGVIZWlnaHQ7Ci0gICAgICAgIHJvdyA9IGRh
dGEgKyAoc3RhdGljX2Nhc3Q8aW50Pih5ICsgLjUpKSAqIGJ5dGVzUGVyUm93OwotICAgIH0KLQot
ICAgIC8vIERldGVybWluZSB0aGUgaW1hZ2Ugc2NvcmUuCi0gICAgZmxvYXQgYWNjdW1TY29yZSA9
IDA7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IHNhbXBsZVJvd3MgLSAxOyArK2kpIHsK
LSAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMTsgaiA8IHNhbXBsZUNvbHMgLSAxOyArK2opIHsK
LSAgICAgICAgICAgIGZsb2F0IGRpZmYgPSBzYW1wbGVzW2kgLSAxXVtqXSArIHNhbXBsZXNbaSAr
IDFdW2pdICsgc2FtcGxlc1tpXVtqIC0gMV0gKyBzYW1wbGVzW2ldW2ogKyAxXSAtIDQgKiBzYW1w
bGVzW2ldW2pdOwotICAgICAgICAgICAgYWNjdW1TY29yZSArPSBkaWZmICogZGlmZjsKLSAgICAg
ICAgfQotICAgIH0KLQotICAgIC8vIFRoZSBzY29yZSBmb3IgYSBnaXZlbiBzYW1wbGUgY2FuIGJl
IHdpdGhpbiB0aGUgcmFuZ2Ugb2YgMCBhbmQgMjU1XjIuCi0gICAgcmV0dXJuIGFjY3VtU2NvcmUg
PCAyNTAwICogKHNhbXBsZVJvd3MgLSAyKSAqIChzYW1wbGVDb2xzIC0gMik7Ci19Ci0jZW5kaWYK
LQogdm9pZCBQbHVnaW5WaWV3OjpwbHVnaW5TbmFwc2hvdFRpbWVyRmlyZWQoKQogewogI2lmIEVO
QUJMRShQUklNQVJZX1NOQVBTSE9UVEVEX1BMVUdJTl9IRVVSSVNUSUMpCkBAIC0xODA5LDcgKzE3
NDYsNyBAQCB2b2lkIFBsdWdpblZpZXc6OnBsdWdpblNuYXBzaG90VGltZXJGaXJlZCgpCiAKICAg
ICAgICAgaWYgKHNuYXBzaG90SW1hZ2UpIHsKICNpZiBFTkFCTEUoUFJJTUFSWV9TTkFQU0hPVFRF
RF9QTFVHSU5fSEVVUklTVElDKQotICAgICAgICAgICAgYm9vbCBzbmFwc2hvdElzQWxtb3N0U29s
aWRDb2xvciA9IGlzQWxtb3N0U29saWRDb2xvcihkb3duY2FzdDxCaXRtYXBJbWFnZT4oc25hcHNo
b3RJbWFnZS5nZXQoKSkpOworICAgICAgICAgICAgYm9vbCBzbmFwc2hvdElzQWxtb3N0U29saWRD
b2xvciA9IHN0YXRpY19wb2ludGVyX2Nhc3Q8Qml0bWFwSW1hZ2U+KHNuYXBzaG90SW1hZ2UpLT5p
c0FsbW9zdFNvbGlkQ29sb3IoKTsKICAgICAgICAgICAgIHNuYXBzaG90Rm91bmQgPSAhc25hcHNo
b3RJc0FsbW9zdFNvbGlkQ29sb3I7CiAjZW5kaWYKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>283589</attachid>
            <date>2016-07-13 17:04:58 -0700</date>
            <delta_ts>2016-09-12 17:11:21 -0700</delta_ts>
            <desc>Patch for review</desc>
            <filename>wk159721.patch</filename>
            <type>text/plain</type>
            <size>26059</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA5MzFmZGI0Li4xYTc2NWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDQgKzEsNTEg
QEAKIDIwMTYtMDctMTMgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNv
bT4KKyAKKyAgICAgICAgR2V0IHJpZCBvZiB0aGUgbV9wcmVtdWx0aXBseUFscGhhIGZsYWcgb2Yg
dGhlIEltYWdlRnJhbWUgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE1OTcyMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRoaXMgZmxhZyB3YXMgb25seSBuZWVkZWQgd2hlbiBjYWxsaW5nIEJpdG1h
cFBpeGVsczo6c2V0U2l6ZSgpLiBJbnN0ZWFkCisgICAgICAgIHdlIGNhbiBwYXNzIHRoZSBJbWFn
ZURlY29kZXI6Om1fcHJlbXVsdGlwbHlBbHBoYSB0byBJbWFnZUZyYW1lOjpzZXRTaXplKCkKKyAg
ICAgICAgd2hpY2ggd2lsbCBwYXNzIGl0IHRvIEJpdG1hcFBpeGVsczo6c2V0U2l6ZSgpLgorCisg
ICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6Om9wZXJhdG9yPSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUZyYW1lOjpjb3B5Qml0bWFwRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OnNl
dFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjppc092ZXJTaXplKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkJNUEltYWdlRGVjb2Rlcjo6ZnJhbWVCdWZmZXJBdEluZGV4KTog
RGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VS
ZWFkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qk1QSW1hZ2VSZWFkZXI6OmRlY29kZUJNUCk6
CisgICAgICAgIChXZWJDb3JlOjpCTVBJbWFnZVJlYWRlcjo6cHJvY2Vzc0luZm9IZWFkZXIpOgor
ICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R0lGSW1hZ2VEZWNvZGVyOjppbml0RnJhbWVCdWZmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6R0lGSW1hZ2VEZWNvZGVyOjpkZWNvZGUpOgorICAgICAgICAqIHBs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OklDT0ltYWdlRGVjb2Rlcjo6c2V0U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
Q09JbWFnZURlY29kZXI6OmZyYW1lQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6SUNPSW1hZ2VE
ZWNvZGVyOjpwcm9jZXNzRGlyZWN0b3J5RW50cmllcyk6CisgICAgICAgICogcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpKUEVHSW1hZ2VEZWNvZGVyOjpzZXRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkpQRUdJbWFn
ZURlY29kZXI6OmZyYW1lQnVmZmVyQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpKUEVHSW1h
Z2VEZWNvZGVyOjpvdXRwdXRTY2FubGluZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UE5H
SW1hZ2VEZWNvZGVyOjpzZXRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlBOR0ltYWdlRGVjb2Rl
cjo6ZnJhbWVCdWZmZXJBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OlBOR0ltYWdlRGVjb2Rl
cjo6aGVhZGVyQXZhaWxhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OlBOR0ltYWdlRGVjb2Rlcjo6
cm93QXZhaWxhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OlBOR0ltYWdlRGVjb2Rlcjo6cmVhZENo
dW5rcyk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVj
b2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdl
RGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXRUJQSW1hZ2VEZWNvZGVyOjpmcmFtZUJ1
ZmZlckF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6V0VCUEltYWdlRGVjb2Rlcjo6ZGVjb2Rl
KToKKworMjAxNi0wNy0xMyAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUu
Y29tPgogCiAgICAgICAgIEdldCByaWQgb2YgdGhlIGNvbG9yIHByb2ZpbGUgZnJvbSBJbWFnZUZy
YW1lIGFuZCBJbWFnZURlY29kZXIKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE1OTY5OQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggZTMwNDlmNy4uYTliZmJkOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VE
ZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9J
bWFnZURlY29kZXIuY3BwCkBAIC0xMzIsNyArMTMyLDYgQEAgSW1hZ2VGcmFtZTo6SW1hZ2VGcmFt
ZSgpCiAgICAgLCBtX3N0YXR1cyhGcmFtZUVtcHR5KQogICAgICwgbV9kdXJhdGlvbigwKQogICAg
ICwgbV9kaXNwb3NhbE1ldGhvZChEaXNwb3NlTm90U3BlY2lmaWVkKQotICAgICwgbV9wcmVtdWx0
aXBseUFscGhhKHRydWUpCiB7CiB9IAogCkBAIC0xNDYsNyArMTQ1LDYgQEAgSW1hZ2VGcmFtZSYg
SW1hZ2VGcmFtZTo6b3BlcmF0b3I9KGNvbnN0IEltYWdlRnJhbWUmIG90aGVyKQogICAgIHNldFN0
YXR1cyhvdGhlci5zdGF0dXMoKSk7CiAgICAgc2V0RHVyYXRpb24ob3RoZXIuZHVyYXRpb24oKSk7
CiAgICAgc2V0RGlzcG9zYWxNZXRob2Qob3RoZXIuZGlzcG9zYWxNZXRob2QoKSk7Ci0gICAgc2V0
UHJlbXVsdGlwbHlBbHBoYShvdGhlci5wcmVtdWx0aXBseUFscGhhKCkpOwogICAgIHJldHVybiAq
dGhpczsKIH0KIApAQCAtMTg3LDEwICsxODUsMTAgQEAgYm9vbCBJbWFnZUZyYW1lOjpjb3B5Qml0
bWFwRGF0YShjb25zdCBJbWFnZUZyYW1lJiBvdGhlcikKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
Ym9vbCBJbWFnZUZyYW1lOjpzZXRTaXplKGludCBuZXdXaWR0aCwgaW50IG5ld0hlaWdodCkKK2Jv
b2wgSW1hZ2VGcmFtZTo6c2V0U2l6ZShjb25zdCBJbnRTaXplJiBzaXplLCBib29sIHByZW11bHRp
cGx5QWxwaGEpCiB7CiAgICAgQVNTRVJUKCFtX3BpeGVscyk7Ci0gICAgbV9waXhlbHMgPSBCaXRt
YXBQaXhlbHM6OmNyZWF0ZShJbnRTaXplKG5ld1dpZHRoLCBuZXdIZWlnaHQpLCBtX3ByZW11bHRp
cGx5QWxwaGEpOworICAgIG1fcGl4ZWxzID0gQml0bWFwUGl4ZWxzOjpjcmVhdGUoc2l6ZSwgcHJl
bXVsdGlwbHlBbHBoYSk7CiAgICAgcmV0dXJuIG1fcGl4ZWxzICE9IG51bGxwdHI7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVj
b2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNv
ZGVyLmgKaW5kZXggMzZmMGRlNi4uYjcyZjJiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmgKQEAgLTI5LDggKzI5LDkg
QEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQml0bWFwUGl4ZWxzLmgiCi0jaW5jbHVkZSAi
SW50UmVjdC5oIgogI2luY2x1ZGUgIkltYWdlU291cmNlLmgiCisjaW5jbHVkZSAiSW50UmVjdC5o
IgorI2luY2x1ZGUgIkludFNpemUuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVNjcmVlbi5oIgogI2lu
Y2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CkBAIC04
NSw3ICs4Niw3IEBAIHVzaW5nIENvbG9yUHJvZmlsZSA9IFZlY3RvcjxjaGFyPjsKICAgICAgICAg
Ly8gQWxsb2NhdGVzIHNwYWNlIGZvciB0aGUgcGl4ZWwgZGF0YS4gIE11c3QgYmUgY2FsbGVkIGJl
Zm9yZSBhbnkgcGl4ZWxzCiAgICAgICAgIC8vIGFyZSB3cml0dGVuLiAgTXVzdCBvbmx5IGJlIGNh
bGxlZCBvbmNlLiAgUmV0dXJucyB3aGV0aGVyIGFsbG9jYXRpb24KICAgICAgICAgLy8gc3VjY2Vl
ZGVkLgotICAgICAgICBib29sIHNldFNpemUoaW50IG5ld1dpZHRoLCBpbnQgbmV3SGVpZ2h0KTsK
KyAgICAgICAgYm9vbCBzZXRTaXplKGNvbnN0IEludFNpemUmLCBib29sIHByZW11bHRpcGx5QWxw
aGEpOwogICAgICAgICAKICAgICAgICAgSW50U2l6ZSBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9w
aXhlbHMtPnNpemUoKTsgfQogCkBAIC0xMDEsMTMgKzEwMiwxMSBAQCB1c2luZyBDb2xvclByb2Zp
bGUgPSBWZWN0b3I8Y2hhcj47CiAgICAgICAgIEZyYW1lU3RhdHVzIHN0YXR1cygpIGNvbnN0IHsg
cmV0dXJuIG1fc3RhdHVzOyB9CiAgICAgICAgIHVuc2lnbmVkIGR1cmF0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9kdXJhdGlvbjsgfQogICAgICAgICBGcmFtZURpc3Bvc2FsTWV0aG9kIGRpc3Bvc2Fs
TWV0aG9kKCkgY29uc3QgeyByZXR1cm4gbV9kaXNwb3NhbE1ldGhvZDsgfQotICAgICAgICBib29s
IHByZW11bHRpcGx5QWxwaGEoKSBjb25zdCB7IHJldHVybiBtX3ByZW11bHRpcGx5QWxwaGE7IH0K
IAogICAgICAgICB2b2lkIHNldEhhc0FscGhhKGJvb2wgYWxwaGEpOwogICAgICAgICB2b2lkIHNl
dFN0YXR1cyhGcmFtZVN0YXR1cyBzdGF0dXMpOwogICAgICAgICB2b2lkIHNldER1cmF0aW9uKHVu
c2lnbmVkIGR1cmF0aW9uKSB7IG1fZHVyYXRpb24gPSBkdXJhdGlvbjsgfQogICAgICAgICB2b2lk
IHNldERpc3Bvc2FsTWV0aG9kKEZyYW1lRGlzcG9zYWxNZXRob2QgbWV0aG9kKSB7IG1fZGlzcG9z
YWxNZXRob2QgPSBtZXRob2Q7IH0KLSAgICAgICAgdm9pZCBzZXRQcmVtdWx0aXBseUFscGhhKGJv
b2wgcHJlbXVsdGlwbHlBbHBoYSkgeyBtX3ByZW11bHRpcGx5QWxwaGEgPSBwcmVtdWx0aXBseUFs
cGhhOyB9CiAKICAgICAgICAgaW5saW5lIHZvaWQgc2V0UkdCQShpbnQgeCwgaW50IHksIHVuc2ln
bmVkIHIsIHVuc2lnbmVkIGcsIHVuc2lnbmVkIGIsIHVuc2lnbmVkIGEpCiAgICAgICAgIHsKQEAg
LTEzNyw3ICsxMzYsNiBAQCB1c2luZyBDb2xvclByb2ZpbGUgPSBWZWN0b3I8Y2hhcj47CiAgICAg
ICAgIEZyYW1lU3RhdHVzIG1fc3RhdHVzOwogICAgICAgICB1bnNpZ25lZCBtX2R1cmF0aW9uOwog
ICAgICAgICBGcmFtZURpc3Bvc2FsTWV0aG9kIG1fZGlzcG9zYWxNZXRob2Q7Ci0gICAgICAgIGJv
b2wgbV9wcmVtdWx0aXBseUFscGhhOwogICAgIH07CiAKICAgICAvLyBJbWFnZURlY29kZXIgaXMg
YSBiYXNlIGZvciBhbGwgZm9ybWF0LXNwZWNpZmljIGRlY29kZXJzCkBAIC0xNjYsNiArMTY0LDgg
QEAgdXNpbmcgQ29sb3JQcm9maWxlID0gVmVjdG9yPGNoYXI+OwogCiAgICAgICAgIHZpcnR1YWwg
U3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3QgPSAwOwogCisgICAgICAgIGJvb2wgcHJl
bXVsdGlwbHlBbHBoYSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJlbXVsdGlwbHlBbHBoYTsgfQorCiAg
ICAgICAgIGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzQWxsRGF0
YVJlY2VpdmVkOyB9CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVy
JiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKQEAgLTIwMywxMSArMjAzLDExIEBAIHVzaW5n
IENvbG9yUHJvZmlsZSA9IFZlY3RvcjxjaGFyPjsKIAogICAgICAgICAvLyBSZXR1cm5zIHdoZXRo
ZXIgdGhlIHNpemUgaXMgbGVnYWwgKGkuZS4gbm90IGdvaW5nIHRvIHJlc3VsdCBpbgogICAgICAg
ICAvLyBvdmVyZmxvdyBlbHNld2hlcmUpLiAgSWYgbm90LCBtYXJrcyBkZWNvZGluZyBhcyBmYWls
ZWQuCi0gICAgICAgIHZpcnR1YWwgYm9vbCBzZXRTaXplKHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25l
ZCBoZWlnaHQpCisgICAgICAgIHZpcnR1YWwgYm9vbCBzZXRTaXplKGNvbnN0IEludFNpemUmIHNp
emUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmIChpc092ZXJTaXplKHdpZHRoLCBoZWlnaHQp
KQorICAgICAgICAgICAgaWYgKGlzT3ZlclNpemUoc2l6ZSkpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIHNldEZhaWxlZCgpOwotICAgICAgICAgICAgbV9zaXplID0gSW50U2l6ZSh3aWR0aCwgaGVp
Z2h0KTsKKyAgICAgICAgICAgIG1fc2l6ZSA9IHNpemU7CiAgICAgICAgICAgICBtX3NpemVBdmFp
bGFibGUgPSB0cnVlOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KQEAgLTMw
NCwxMSArMzA0LDEwIEBAIHVzaW5nIENvbG9yUHJvZmlsZSA9IFZlY3RvcjxjaGFyPjsKICAgICBw
cml2YXRlOgogICAgICAgICAvLyBTb21lIGNvZGUgcGF0aHMgY29tcHV0ZSB0aGUgc2l6ZSBvZiB0
aGUgaW1hZ2UgYXMgIndpZHRoICogaGVpZ2h0ICogNCIKICAgICAgICAgLy8gYW5kIHJldHVybiBp
dCBhcyBhIChzaWduZWQpIGludC4gIEF2b2lkIG92ZXJmbG93LgotICAgICAgICBzdGF0aWMgYm9v
bCBpc092ZXJTaXplKHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQpCisgICAgICAgIHN0
YXRpYyBib29sIGlzT3ZlclNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKICAgICAgICAgewotICAg
ICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsX3NpemUgPSBzdGF0aWNfY2FzdDx1bnNp
Z25lZCBsb25nIGxvbmc+KHdpZHRoKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKiBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KGhlaWdodCk7Ci0gICAg
ICAgICAgICByZXR1cm4gdG90YWxfc2l6ZSA+ICgoMSA8PCAyOSkgLSAxKTsKKyAgICAgICAgICAg
IHVuc2lnbmVkIGxvbmcgbG9uZyBwaXhlbHMgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxv
bmc+KHNpemUud2lkdGgoKSkgKiBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KHNpemUu
aGVpZ2h0KCkpOworICAgICAgICAgICAgcmV0dXJuIHBpeGVscyA+ICgoMSA8PCAyOSkgLSAxKTsK
ICAgICAgICAgfQogCiAgICAgICAgIEludFNpemUgbV9zaXplOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNv
ZGVyLmNwcAppbmRleCBjYWYzNWM5Li40NTdhZWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVy
LmNwcApAQCAtNzAsMTAgKzcwLDggQEAgSW1hZ2VGcmFtZSogQk1QSW1hZ2VEZWNvZGVyOjpmcmFt
ZUJ1ZmZlckF0SW5kZXgoc2l6ZV90IGluZGV4KQogICAgIGlmIChpbmRleCkKICAgICAgICAgcmV0
dXJuIDA7CiAKLSAgICBpZiAobV9mcmFtZUJ1ZmZlckNhY2hlLmlzRW1wdHkoKSkgeworICAgIGlm
IChtX2ZyYW1lQnVmZmVyQ2FjaGUuaXNFbXB0eSgpKQogICAgICAgICBtX2ZyYW1lQnVmZmVyQ2Fj
aGUucmVzaXplKDEpOwotICAgICAgICBtX2ZyYW1lQnVmZmVyQ2FjaGUuZmlyc3QoKS5zZXRQcmVt
dWx0aXBseUFscGhhKG1fcHJlbXVsdGlwbHlBbHBoYSk7Ci0gICAgfQogCiAgICAgSW1hZ2VGcmFt
ZSogYnVmZmVyID0gJm1fZnJhbWVCdWZmZXJDYWNoZS5maXJzdCgpOwogICAgIGlmIChidWZmZXIt
PnN0YXR1cygpICE9IEltYWdlRnJhbWU6OkZyYW1lQ29tcGxldGUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VSZWFkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVh
ZGVyLmNwcAppbmRleCBmOTE4Y2YzLi45ODFjMTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VSZWFkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5j
cHAKQEAgLTc4LDcgKzc4LDcgQEAgYm9vbCBCTVBJbWFnZVJlYWRlcjo6ZGVjb2RlQk1QKGJvb2wg
b25seVNpemUpCiAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgZnJhbWVidWZmZXIgaWYgbmVlZGVkLgog
ICAgIEFTU0VSVChtX2J1ZmZlcik7ICAvLyBQYXJlbnQgc2hvdWxkIHNldCB0aGlzIGJlZm9yZSBh
c2tpbmcgdXMgdG8gZGVjb2RlIQogICAgIGlmIChtX2J1ZmZlci0+c3RhdHVzKCkgPT0gSW1hZ2VG
cmFtZTo6RnJhbWVFbXB0eSkgewotICAgICAgICBpZiAoIW1fYnVmZmVyLT5zZXRTaXplKG1fcGFy
ZW50LT5zaXplKCkud2lkdGgoKSwgbV9wYXJlbnQtPnNpemUoKS5oZWlnaHQoKSkpCisgICAgICAg
IGlmICghbV9idWZmZXItPnNldFNpemUobV9wYXJlbnQtPnNpemUoKSwgbV9wYXJlbnQtPnByZW11
bHRpcGx5QWxwaGEoKSkpCiAgICAgICAgICAgICByZXR1cm4gbV9wYXJlbnQtPnNldEZhaWxlZCgp
OyAvLyBVbmFibGUgdG8gYWxsb2NhdGUuCiAgICAgICAgIG1fYnVmZmVyLT5zZXRTdGF0dXMoSW1h
Z2VGcmFtZTo6RnJhbWVQYXJ0aWFsKTsKICAgICAgICAgLy8gc2V0U2l6ZSgpIGNhbGxzIGVyYXNl
QVJHQigpLCB3aGljaCByZXNldHMgdGhlIGFscGhhIGZsYWcsIHNvIHdlIGZvcmNlCkBAIC0xNjgs
NyArMTY4LDcgQEAgYm9vbCBCTVBJbWFnZVJlYWRlcjo6cHJvY2Vzc0luZm9IZWFkZXIoKQogICAg
ICAgICByZXR1cm4gbV9wYXJlbnQtPnNldEZhaWxlZCgpOwogCiAgICAgLy8gU2V0IG91ciBzaXpl
LgotICAgIGlmICghbV9wYXJlbnQtPnNldFNpemUobV9pbmZvSGVhZGVyLmJpV2lkdGgsIG1faW5m
b0hlYWRlci5iaUhlaWdodCkpCisgICAgaWYgKCFtX3BhcmVudC0+c2V0U2l6ZShJbnRTaXplKG1f
aW5mb0hlYWRlci5iaVdpZHRoLCBtX2luZm9IZWFkZXIuYmlIZWlnaHQpKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCiAgICAgLy8gRm9yIHBhbGV0dGVkIGltYWdlcywgYml0bWFwcyBjYW4gc2V0
IGJpQ2xyVXNlZCB0byAwIHRvIG1lYW4gImFsbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcApp
bmRleCBjNmI2MTkwLi4yNWE3NDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcApAQCAt
NjAsMTIgKzYwLDEyIEBAIGJvb2wgR0lGSW1hZ2VEZWNvZGVyOjppc1NpemVBdmFpbGFibGUoKQog
ICAgIHJldHVybiBJbWFnZURlY29kZXI6OmlzU2l6ZUF2YWlsYWJsZSgpOwogfQogCi1ib29sIEdJ
RkltYWdlRGVjb2Rlcjo6c2V0U2l6ZSh1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0KQor
Ym9vbCBHSUZJbWFnZURlY29kZXI6OnNldFNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKLSAg
ICBpZiAoSW1hZ2VEZWNvZGVyOjppc1NpemVBdmFpbGFibGUoKSAmJiBzaXplKCkgPT0gSW50U2l6
ZSh3aWR0aCwgaGVpZ2h0KSkKKyAgICBpZiAoSW1hZ2VEZWNvZGVyOjppc1NpemVBdmFpbGFibGUo
KSAmJiB0aGlzLT5zaXplKCkgPT1zaXplKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlm
ICghSW1hZ2VEZWNvZGVyOjpzZXRTaXplKHdpZHRoLCBoZWlnaHQpKQorICAgIGlmICghSW1hZ2VE
ZWNvZGVyOjpzZXRTaXplKHNpemUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBwcmVw
YXJlU2NhbGVEYXRhSWZOZWNlc3NhcnkoKTsKQEAgLTMyMSwxMCArMzIxLDcgQEAgdm9pZCBHSUZJ
bWFnZURlY29kZXI6OmRlY29kZSh1bnNpZ25lZCBoYWx0QXRGcmFtZSwgR0lGUXVlcnkgcXVlcnkp
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBjb25zdCBzaXplX3Qgb2xkU2l6ZSA9IG1f
ZnJhbWVCdWZmZXJDYWNoZS5zaXplKCk7CiAgICAgbV9mcmFtZUJ1ZmZlckNhY2hlLnJlc2l6ZSht
X3JlYWRlci0+aW1hZ2VzQ291bnQoKSk7Ci0gICAgZm9yIChzaXplX3QgaSA9IG9sZFNpemU7IGkg
PCBtX3JlYWRlci0+aW1hZ2VzQ291bnQoKTsgKytpKQotICAgICAgICBtX2ZyYW1lQnVmZmVyQ2Fj
aGVbaV0uc2V0UHJlbXVsdGlwbHlBbHBoYShtX3ByZW11bHRpcGx5QWxwaGEpOwogCiAgICAgaWYg
KHF1ZXJ5ID09IEdJRkZyYW1lQ291bnRRdWVyeSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzYyLDcg
KzM1Myw3IEBAIGJvb2wgR0lGSW1hZ2VEZWNvZGVyOjppbml0RnJhbWVCdWZmZXIodW5zaWduZWQg
ZnJhbWVJbmRleCkKIAogICAgIGlmICghZnJhbWVJbmRleCkgewogICAgICAgICAvLyBUaGlzIGlz
IHRoZSBmaXJzdCBmcmFtZSwgc28gd2UncmUgbm90IHJlbHlpbmcgb24gYW55IHByZXZpb3VzIGRh
dGEuCi0gICAgICAgIGlmICghYnVmZmVyLT5zZXRTaXplKHNjYWxlZFNpemUoKS53aWR0aCgpLCBz
Y2FsZWRTaXplKCkuaGVpZ2h0KCkpKQorICAgICAgICBpZiAoIWJ1ZmZlci0+c2V0U2l6ZShzY2Fs
ZWRTaXplKCksIHByZW11bHRpcGx5QWxwaGEoKSkpCiAgICAgICAgICAgICByZXR1cm4gc2V0RmFp
bGVkKCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gVGhlIHN0YXJ0aW5nIHN0YXRlIGZvciB0
aGlzIGZyYW1lIGRlcGVuZHMgb24gdGhlIHByZXZpb3VzIGZyYW1lJ3MKQEAgLTM5Myw3ICszODQs
NyBAQCBib29sIEdJRkltYWdlRGVjb2Rlcjo6aW5pdEZyYW1lQnVmZmVyKHVuc2lnbmVkIGZyYW1l
SW5kZXgpCiAgICAgICAgICAgICBpZiAoIWZyYW1lSW5kZXggfHwgcHJldlJlY3QuY29udGFpbnMo
SW50UmVjdChJbnRQb2ludCgpLCBzY2FsZWRTaXplKCkpKSkgewogICAgICAgICAgICAgICAgIC8v
IENsZWFyaW5nIHRoZSBmaXJzdCBmcmFtZSwgb3IgYSBmcmFtZSB0aGUgc2l6ZSBvZiB0aGUgd2hv
bGUKICAgICAgICAgICAgICAgICAvLyBpbWFnZSwgcmVzdWx0cyBpbiBhIGNvbXBsZXRlbHkgZW1w
dHkgaW1hZ2UuCi0gICAgICAgICAgICAgICAgaWYgKCFidWZmZXItPnNldFNpemUoYnVmZmVyU2l6
ZS53aWR0aCgpLCBidWZmZXJTaXplLmhlaWdodCgpKSkKKyAgICAgICAgICAgICAgICBpZiAoIWJ1
ZmZlci0+c2V0U2l6ZShidWZmZXJTaXplLCBwcmVtdWx0aXBseUFscGhhKCkpKQogICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gc2V0RmFpbGVkKCk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgICAgIC8vIENvcHkgdGhlIHdob2xlIHByZXZpb3VzIGJ1ZmZlciwgdGhlbiBjbGVh
ciBqdXN0IGl0cyBmcmFtZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaAppbmRleCA5NWVjNmQwLi43
YjhkODdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9naWYvR0lGSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5oCkBAIC00NCw3ICs0NCw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgU3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gImdpZiI7IH0KICAgICAgICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1
ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIG92ZXJyaWRlOwogICAgICAgICBib29s
IGlzU2l6ZUF2YWlsYWJsZSgpIG92ZXJyaWRlOwotICAgICAgICBib29sIHNldFNpemUodW5zaWdu
ZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCkgb3ZlcnJpZGU7CisgICAgICAgIGJvb2wgc2V0U2l6
ZShjb25zdCBJbnRTaXplJikgb3ZlcnJpZGU7CiAgICAgICAgIHNpemVfdCBmcmFtZUNvdW50KCkg
b3ZlcnJpZGU7CiAgICAgICAgIGludCByZXBldGl0aW9uQ291bnQoKSBjb25zdCBvdmVycmlkZTsK
ICAgICAgICAgSW1hZ2VGcmFtZSogZnJhbWVCdWZmZXJBdEluZGV4KHNpemVfdCBpbmRleCkgb3Zl
cnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9naWYvR0lGSW1hZ2VSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmNwcAppbmRleCAwMGQyNTJjLi41NThkOTc5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lG
SW1hZ2VSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5jcHAKQEAgLTQ0Nyw3ICs0NDcsNyBAQCBib29sIEdJRklt
YWdlUmVhZGVyOjpwYXJzZShzaXplX3QgZGF0YVBvc2l0aW9uLCBzaXplX3QgbGVuLCBib29sIHBh
cnNlU2l6ZU9ubHkpCiAKICAgICAgICAgICAgIC8vIENBTExCQUNLOiBJbmZvcm0gdGhlIGRlY29k
ZXJwbHVnaW4gb2Ygb3VyIHNpemUuCiAgICAgICAgICAgICAvLyBOb3RlOiBBIHN1YnNlcXVlbnQg
ZnJhbWUgbWlnaHQgaGF2ZSBkaW1lbnNpb25zIGxhcmdlciB0aGFuIHRoZSAic2NyZWVuIiBkaW1l
bnNpb25zLgotICAgICAgICAgICAgaWYgKG1fY2xpZW50ICYmICFtX2NsaWVudC0+c2V0U2l6ZSht
X3NjcmVlbldpZHRoLCBtX3NjcmVlbkhlaWdodCkpCisgICAgICAgICAgICBpZiAobV9jbGllbnQg
JiYgIW1fY2xpZW50LT5zZXRTaXplKFdlYkNvcmU6OkludFNpemUobV9zY3JlZW5XaWR0aCwgbV9z
Y3JlZW5IZWlnaHQpKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAg
ICAgIG1fc2NyZWVuQmdjb2xvciA9IGN1cnJlbnRDb21wb25lbnRbNV07CkBAIC02NjQsNyArNjY0
LDcgQEAgYm9vbCBHSUZJbWFnZVJlYWRlcjo6cGFyc2Uoc2l6ZV90IGRhdGFQb3NpdGlvbiwgc2l6
ZV90IGxlbiwgYm9vbCBwYXJzZVNpemVPbmx5KQogICAgICAgICAgICAgICAgIHlPZmZzZXQgPSAw
OwogCiAgICAgICAgICAgICAgICAgLy8gQ0FMTEJBQ0s6IEluZm9ybSB0aGUgZGVjb2RlcnBsdWdp
biBvZiBvdXIgc2l6ZS4KLSAgICAgICAgICAgICAgICBpZiAobV9jbGllbnQgJiYgIW1fY2xpZW50
LT5zZXRTaXplKG1fc2NyZWVuV2lkdGgsIG1fc2NyZWVuSGVpZ2h0KSkKKyAgICAgICAgICAgICAg
ICBpZiAobV9jbGllbnQgJiYgIW1fY2xpZW50LT5zZXRTaXplKFdlYkNvcmU6OkludFNpemUobV9z
Y3JlZW5XaWR0aCwgbV9zY3JlZW5IZWlnaHQpKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCmluZGV4
IGE1OTIwMWIuLjNjYjRhMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCkBAIC04OCwy
MSArODgsMjAgQEAgSW50U2l6ZSBJQ09JbWFnZURlY29kZXI6OmZyYW1lU2l6ZUF0SW5kZXgoc2l6
ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsKQogICAgIHJldHVybiAoaW5kZXggJiYgKGluZGV4
IDwgbV9kaXJFbnRyaWVzLnNpemUoKSkpID8gbV9kaXJFbnRyaWVzW2luZGV4XS5tX3NpemUgOiBz
aXplKCk7CiB9CiAKLWJvb2wgSUNPSW1hZ2VEZWNvZGVyOjpzZXRTaXplKHVuc2lnbmVkIHdpZHRo
LCB1bnNpZ25lZCBoZWlnaHQpCitib29sIElDT0ltYWdlRGVjb2Rlcjo6c2V0U2l6ZShjb25zdCBJ
bnRTaXplJiBzaXplKQogewogICAgIC8vIFRoZSBzaXplIGNhbGN1bGF0ZWQgaW5zaWRlIHRoZSBC
TVBJbWFnZVJlYWRlciBoYWQgYmV0dGVyIG1hdGNoIHRoZSBvbmUgaW4KICAgICAvLyB0aGUgaWNv
biBkaXJlY3RvcnkuCi0gICAgcmV0dXJuIG1fZnJhbWVTaXplLmlzRW1wdHkoKSA/IEltYWdlRGVj
b2Rlcjo6c2V0U2l6ZSh3aWR0aCwgaGVpZ2h0KSA6ICgoSW50U2l6ZSh3aWR0aCwgaGVpZ2h0KSA9
PSBtX2ZyYW1lU2l6ZSkgfHwgc2V0RmFpbGVkKCkpOworICAgIHJldHVybiBtX2ZyYW1lU2l6ZS5p
c0VtcHR5KCkgPyBJbWFnZURlY29kZXI6OnNldFNpemUoc2l6ZSkgOiAoKHNpemUgPT0gbV9mcmFt
ZVNpemUpIHx8IHNldEZhaWxlZCgpKTsKIH0KIAogc2l6ZV90IElDT0ltYWdlRGVjb2Rlcjo6ZnJh
bWVDb3VudCgpCiB7CiAgICAgZGVjb2RlKDAsIHRydWUpOwotICAgIGlmIChtX2ZyYW1lQnVmZmVy
Q2FjaGUuaXNFbXB0eSgpKSB7CisKKyAgICBpZiAobV9mcmFtZUJ1ZmZlckNhY2hlLmlzRW1wdHko
KSkKICAgICAgICAgbV9mcmFtZUJ1ZmZlckNhY2hlLnJlc2l6ZShtX2RpckVudHJpZXMuc2l6ZSgp
KTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2RpckVudHJpZXMuc2l6ZSgpOyAr
K2kpCi0gICAgICAgICAgICBtX2ZyYW1lQnVmZmVyQ2FjaGVbaV0uc2V0UHJlbXVsdGlwbHlBbHBo
YShtX3ByZW11bHRpcGx5QWxwaGEpOwotICAgIH0KKwogICAgIC8vIENBVVRJT046IFdlIG11c3Qg
bm90IHJlc2l6ZSBtX2ZyYW1lQnVmZmVyQ2FjaGUgYWdhaW4gYWZ0ZXIgdGhpcywgYXMKICAgICAv
LyBkZWNvZGVBdEluZGV4KCkgbWF5IGdpdmUgYSBCTVBJbWFnZVJlYWRlciBhIHBvaW50ZXIgdG8g
b25lIG9mIHRoZQogICAgIC8vIGVudHJpZXMuCkBAIC0yMjAsNyArMjE5LDcgQEAgYm9vbCBJQ09J
bWFnZURlY29kZXI6OmRlY29kZUF0SW5kZXgoc2l6ZV90IGluZGV4KQogCiAgICAgaWYgKCFtX3Bu
Z0RlY29kZXJzW2luZGV4XSkgewogICAgICAgICBtX3BuZ0RlY29kZXJzW2luZGV4XSA9IHN0ZDo6
bWFrZV91bmlxdWU8Ci0gICAgICAgICAgICBQTkdJbWFnZURlY29kZXI+KG1fcHJlbXVsdGlwbHlB
bHBoYSA/IEltYWdlU291cmNlOjpBbHBoYVByZW11bHRpcGxpZWQgOiBJbWFnZVNvdXJjZTo6QWxw
aGFOb3RQcmVtdWx0aXBsaWVkLAorICAgICAgICAgICAgUE5HSW1hZ2VEZWNvZGVyPihwcmVtdWx0
aXBseUFscGhhKCkgPyBJbWFnZVNvdXJjZTo6QWxwaGFQcmVtdWx0aXBsaWVkIDogSW1hZ2VTb3Vy
Y2U6OkFscGhhTm90UHJlbXVsdGlwbGllZCwKICAgICAgICAgICAgICAgICBtX2lnbm9yZUdhbW1h
QW5kQ29sb3JQcm9maWxlID8gSW1hZ2VTb3VyY2U6OkdhbW1hQW5kQ29sb3JQcm9maWxlSWdub3Jl
ZCA6IEltYWdlU291cmNlOjpHYW1tYUFuZENvbG9yUHJvZmlsZUFwcGxpZWQpOwogICAgICAgICBz
ZXREYXRhRm9yUE5HRGVjb2RlckF0SW5kZXgoaW5kZXgpOwogICAgIH0KQEAgLTI3OSw3ICsyNzgs
NyBAQCBib29sIElDT0ltYWdlRGVjb2Rlcjo6cHJvY2Vzc0RpcmVjdG9yeUVudHJpZXMoKQogICAg
IGNvbnN0IEljb25EaXJlY3RvcnlFbnRyeSYgZGlyRW50cnkgPSBtX2RpckVudHJpZXMuZmlyc3Qo
KTsKICAgICAvLyBUZWNobmljYWxseSwgdGhpcyBuZXh0IGNhbGwgc2hvdWxkbid0IGJlIGFibGUg
dG8gZmFpbCwgc2luY2UgdGhlIHdpZHRoCiAgICAgLy8gYW5kIGhlaWdodCBoZXJlIGFyZSBlYWNo
IDw9IDI1NiwgYW5kIHxtX2ZyYW1lU2l6ZXwgaXMgZW1wdHkuCi0gICAgcmV0dXJuIHNldFNpemUo
ZGlyRW50cnkubV9zaXplLndpZHRoKCksIGRpckVudHJ5Lm1fc2l6ZS5oZWlnaHQoKSk7CisgICAg
cmV0dXJuIHNldFNpemUoZGlyRW50cnkubV9zaXplKTsKIH0KIAogSUNPSW1hZ2VEZWNvZGVyOjpJ
Y29uRGlyZWN0b3J5RW50cnkgSUNPSW1hZ2VEZWNvZGVyOjpyZWFkRGlyZWN0b3J5RW50cnkoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lD
T0ltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
aWNvL0lDT0ltYWdlRGVjb2Rlci5oCmluZGV4IDU4MGM2N2EuLmQzM2QwNTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29k
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNP
SW1hZ2VEZWNvZGVyLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICBib29sIGlzU2l6ZUF2YWlsYWJsZSgpIG92ZXJyaWRlOwogICAgICAgICBJbnRTaXplIHNp
emUoKSBvdmVycmlkZTsKICAgICAgICAgSW50U2l6ZSBmcmFtZVNpemVBdEluZGV4KHNpemVfdCwg
U3Vic2FtcGxpbmdMZXZlbCkgb3ZlcnJpZGU7Ci0gICAgICAgIGJvb2wgc2V0U2l6ZSh1bnNpZ25l
ZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0KSBvdmVycmlkZTsKKyAgICAgICAgYm9vbCBzZXRTaXpl
KGNvbnN0IEludFNpemUmKSBvdmVycmlkZTsKICAgICAgICAgc2l6ZV90IGZyYW1lQ291bnQoKSBv
dmVycmlkZTsKICAgICAgICAgSW1hZ2VGcmFtZSogZnJhbWVCdWZmZXJBdEluZGV4KHNpemVfdCkg
b3ZlcnJpZGU7CiAgICAgICAgIC8vIENBVVRJT046IHNldEZhaWxlZCgpIGRlbGV0ZXMgYWxsIHJl
YWRlcnMgYW5kIGRlY29kZXJzLiAgQmUgY2FyZWZ1bCB0bwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVj
b2Rlci5jcHAKaW5kZXggYWRkYjBkYS4uMDkzNTcwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURl
Y29kZXIuY3BwCkBAIC0zMjIsNyArMzIyLDcgQEAgcHVibGljOgogICAgICAgICAgICAgbV9zdGF0
ZSA9IEpQRUdfU1RBUlRfREVDT01QUkVTUzsKIAogICAgICAgICAgICAgLy8gV2UgY2FuIGZpbGwg
aW4gdGhlIHNpemUgbm93IHRoYXQgdGhlIGhlYWRlciBpcyBhdmFpbGFibGUuCi0gICAgICAgICAg
ICBpZiAoIW1fZGVjb2Rlci0+c2V0U2l6ZShtX2luZm8uaW1hZ2Vfd2lkdGgsIG1faW5mby5pbWFn
ZV9oZWlnaHQpKQorICAgICAgICAgICAgaWYgKCFtX2RlY29kZXItPnNldFNpemUoSW50U2l6ZSht
X2luZm8uaW1hZ2Vfd2lkdGgsIG1faW5mby5pbWFnZV9oZWlnaHQpKSkKICAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgICAgIG1fZGVjb2Rlci0+c2V0T3JpZW50YXRpb24o
cmVhZEltYWdlT3JpZW50YXRpb24oaW5mbygpKSk7CkBAIC01MTksOSArNTE5LDkgQEAgYm9vbCBK
UEVHSW1hZ2VEZWNvZGVyOjppc1NpemVBdmFpbGFibGUoKQogICAgIHJldHVybiBJbWFnZURlY29k
ZXI6OmlzU2l6ZUF2YWlsYWJsZSgpOwogfQogCi1ib29sIEpQRUdJbWFnZURlY29kZXI6OnNldFNp
emUodW5zaWduZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCkKK2Jvb2wgSlBFR0ltYWdlRGVjb2Rl
cjo6c2V0U2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQogewotICAgIGlmICghSW1hZ2VEZWNvZGVy
OjpzZXRTaXplKHdpZHRoLCBoZWlnaHQpKQorICAgIGlmICghSW1hZ2VEZWNvZGVyOjpzZXRTaXpl
KHNpemUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBwcmVwYXJlU2NhbGVEYXRhSWZO
ZWNlc3NhcnkoKTsKQEAgLTUzMywxMCArNTMzLDggQEAgSW1hZ2VGcmFtZSogSlBFR0ltYWdlRGVj
b2Rlcjo6ZnJhbWVCdWZmZXJBdEluZGV4KHNpemVfdCBpbmRleCkKICAgICBpZiAoaW5kZXgpCiAg
ICAgICAgIHJldHVybiAwOwogCi0gICAgaWYgKG1fZnJhbWVCdWZmZXJDYWNoZS5pc0VtcHR5KCkp
IHsKKyAgICBpZiAobV9mcmFtZUJ1ZmZlckNhY2hlLmlzRW1wdHkoKSkKICAgICAgICAgbV9mcmFt
ZUJ1ZmZlckNhY2hlLnJlc2l6ZSgxKTsKLSAgICAgICAgbV9mcmFtZUJ1ZmZlckNhY2hlWzBdLnNl
dFByZW11bHRpcGx5QWxwaGEobV9wcmVtdWx0aXBseUFscGhhKTsKLSAgICB9CiAKICAgICBJbWFn
ZUZyYW1lJiBmcmFtZSA9IG1fZnJhbWVCdWZmZXJDYWNoZVswXTsKICAgICBpZiAoZnJhbWUuc3Rh
dHVzKCkgIT0gSW1hZ2VGcmFtZTo6RnJhbWVDb21wbGV0ZSkKQEAgLTYxNyw3ICs2MTUsNyBAQCBi
b29sIEpQRUdJbWFnZURlY29kZXI6Om91dHB1dFNjYW5saW5lcygpCiAgICAgLy8gSW5pdGlhbGl6
ZSB0aGUgZnJhbWVidWZmZXIgaWYgbmVlZGVkLgogICAgIEltYWdlRnJhbWUmIGJ1ZmZlciA9IG1f
ZnJhbWVCdWZmZXJDYWNoZVswXTsKICAgICBpZiAoYnVmZmVyLnN0YXR1cygpID09IEltYWdlRnJh
bWU6OkZyYW1lRW1wdHkpIHsKLSAgICAgICAgaWYgKCFidWZmZXIuc2V0U2l6ZShzY2FsZWRTaXpl
KCkud2lkdGgoKSwgc2NhbGVkU2l6ZSgpLmhlaWdodCgpKSkKKyAgICAgICAgaWYgKCFidWZmZXIu
c2V0U2l6ZShzY2FsZWRTaXplKCksIHByZW11bHRpcGx5QWxwaGEoKSkpCiAgICAgICAgICAgICBy
ZXR1cm4gc2V0RmFpbGVkKCk7CiAgICAgICAgIGJ1ZmZlci5zZXRTdGF0dXMoSW1hZ2VGcmFtZTo6
RnJhbWVQYXJ0aWFsKTsKICAgICAgICAgLy8gVGhlIGJ1ZmZlciBpcyB0cmFuc3BhcmVudCBvdXRz
aWRlIHRoZSBkZWNvZGVkIGFyZWEgd2hpbGUgdGhlIGltYWdlIGlzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdl
RGVjb2Rlci5oCmluZGV4IDYyMWVkNTEuLmZjMjNmYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVj
b2Rlci5oCkBAIC01MCw3ICs1MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8g
SW1hZ2VEZWNvZGVyCiAgICAgICAgIFN0cmluZyBmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuICJqcGciOyB9CiAgICAgICAgIGJvb2wgaXNTaXplQXZhaWxhYmxlKCkg
b3ZlcnJpZGU7Ci0gICAgICAgIGJvb2wgc2V0U2l6ZSh1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQg
aGVpZ2h0KSBvdmVycmlkZTsKKyAgICAgICAgYm9vbCBzZXRTaXplKGNvbnN0IEludFNpemUmKSBv
dmVycmlkZTsKICAgICAgICAgSW1hZ2VGcmFtZSogZnJhbWVCdWZmZXJBdEluZGV4KHNpemVfdCBp
bmRleCkgb3ZlcnJpZGU7CiAgICAgICAgIC8vIENBVVRJT046IHNldEZhaWxlZCgpIGRlbGV0ZXMg
fG1fcmVhZGVyfC4gIEJlIGNhcmVmdWwgdG8gYXZvaWQKICAgICAgICAgLy8gYWNjZXNzaW5nIGRl
bGV0ZWQgbWVtb3J5LCBlc3BlY2lhbGx5IHdoZW4gY2FsbGluZyB0aGlzIGZyb20gaW5zaWRlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5H
SW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L3BuZy9QTkdJbWFnZURlY29kZXIuY3BwCmluZGV4IDBmZDFlM2MuLjYyMzg2MjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURl
Y29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3Bu
Zy9QTkdJbWFnZURlY29kZXIuY3BwCkBAIC0yMzUsOSArMjM1LDkgQEAgYm9vbCBQTkdJbWFnZURl
Y29kZXI6OmlzU2l6ZUF2YWlsYWJsZSgpCiAgICAgcmV0dXJuIEltYWdlRGVjb2Rlcjo6aXNTaXpl
QXZhaWxhYmxlKCk7CiB9CiAKLWJvb2wgUE5HSW1hZ2VEZWNvZGVyOjpzZXRTaXplKHVuc2lnbmVk
IHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQpCitib29sIFBOR0ltYWdlRGVjb2Rlcjo6c2V0U2l6ZShj
b25zdCBJbnRTaXplJiBzaXplKQogewotICAgIGlmICghSW1hZ2VEZWNvZGVyOjpzZXRTaXplKHdp
ZHRoLCBoZWlnaHQpKQorICAgIGlmICghSW1hZ2VEZWNvZGVyOjpzZXRTaXplKHNpemUpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBwcmVwYXJlU2NhbGVEYXRhSWZOZWNlc3NhcnkoKTsK
QEAgLTI1NywxMCArMjU3LDggQEAgSW1hZ2VGcmFtZSogUE5HSW1hZ2VEZWNvZGVyOjpmcmFtZUJ1
ZmZlckF0SW5kZXgoc2l6ZV90IGluZGV4KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICNlbmRp
ZgogCi0gICAgaWYgKG1fZnJhbWVCdWZmZXJDYWNoZS5pc0VtcHR5KCkpIHsKKyAgICBpZiAobV9m
cmFtZUJ1ZmZlckNhY2hlLmlzRW1wdHkoKSkKICAgICAgICAgbV9mcmFtZUJ1ZmZlckNhY2hlLnJl
c2l6ZSgxKTsKLSAgICAgICAgbV9mcmFtZUJ1ZmZlckNhY2hlWzBdLnNldFByZW11bHRpcGx5QWxw
aGEobV9wcmVtdWx0aXBseUFscGhhKTsKLSAgICB9CiAKICAgICBJbWFnZUZyYW1lJiBmcmFtZSA9
IG1fZnJhbWVCdWZmZXJDYWNoZVtpbmRleF07CiAgICAgaWYgKGZyYW1lLnN0YXR1cygpICE9IElt
YWdlRnJhbWU6OkZyYW1lQ29tcGxldGUpCkBAIC0yOTUsNyArMjkzLDcgQEAgdm9pZCBQTkdJbWFn
ZURlY29kZXI6OmhlYWRlckF2YWlsYWJsZSgpCiAgICAgLy8gd2lsbCBjZWFzZSB0byBleGlzdC4g
IE5vdGUgdGhhdCB3ZSdsbCBzdGlsbCBwcm9wZXJseSBzZXQgdGhlIGZhaWx1cmUgZmxhZwogICAg
IC8vIGluIHRoaXMgY2FzZSBhcyBzb29uIGFzIHdlIGxvbmdqbXAoKS4KICAgICBtX2RvTm90aGlu
Z09uRmFpbHVyZSA9IHRydWU7Ci0gICAgYm9vbCByZXN1bHQgPSBzZXRTaXplKHdpZHRoLCBoZWln
aHQpOworICAgIGJvb2wgcmVzdWx0ID0gc2V0U2l6ZShJbnRTaXplKHdpZHRoLCBoZWlnaHQpKTsK
ICAgICBtX2RvTm90aGluZ09uRmFpbHVyZSA9IGZhbHNlOwogICAgIGlmICghcmVzdWx0KSB7CiAg
ICAgICAgIGxvbmdqbXAoSk1QQlVGKHBuZyksIDEpOwpAQCAtNDQ3LDcgKzQ0NSw3IEBAIHZvaWQg
UE5HSW1hZ2VEZWNvZGVyOjpyb3dBdmFpbGFibGUodW5zaWduZWQgY2hhciogcm93QnVmZmVyLCB1
bnNpZ25lZCByb3dJbmRleCwKICAgICBJbWFnZUZyYW1lJiBidWZmZXIgPSBtX2ZyYW1lQnVmZmVy
Q2FjaGVbbV9jdXJyZW50RnJhbWVdOwogICAgIGlmIChidWZmZXIuc3RhdHVzKCkgPT0gSW1hZ2VG
cmFtZTo6RnJhbWVFbXB0eSkgewogICAgICAgICBwbmdfc3RydWN0cCBwbmcgPSBtX3JlYWRlci0+
cG5nUHRyKCk7Ci0gICAgICAgIGlmICghYnVmZmVyLnNldFNpemUoc2NhbGVkU2l6ZSgpLndpZHRo
KCksIHNjYWxlZFNpemUoKS5oZWlnaHQoKSkpIHsKKyAgICAgICAgaWYgKCFidWZmZXIuc2V0U2l6
ZShzY2FsZWRTaXplKCksIHByZW11bHRpcGx5QWxwaGEoKSkpIHsKICAgICAgICAgICAgIGxvbmdq
bXAoSk1QQlVGKHBuZyksIDEpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC01
NDUsNyArNTQzLDcgQEAgdm9pZCBQTkdJbWFnZURlY29kZXI6OnJvd0F2YWlsYWJsZSh1bnNpZ25l
ZCBjaGFyKiByb3dCdWZmZXIsIHVuc2lnbmVkIHJvd0luZGV4LAogICAgIHsKICAgICAgICAgcG5n
X2J5dGVwIHBpeGVsID0gcm93OwogICAgICAgICBpZiAoaGFzQWxwaGEpIHsKLSAgICAgICAgICAg
IGlmIChidWZmZXIucHJlbXVsdGlwbHlBbHBoYSgpKSB7CisgICAgICAgICAgICBpZiAocHJlbXVs
dGlwbHlBbHBoYSgpKSB7CiAgICAgICAgICAgICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCB3aWR0
aDsgKyt4LCBwaXhlbCArPSA0KQogICAgICAgICAgICAgICAgICAgICBzZXRQaXhlbFByZW11bHRp
cGxpZWRSR0JBKGFkZHJlc3MrKywgcGl4ZWwsIG5vblRyaXZpYWxBbHBoYU1hc2spOwogICAgICAg
ICAgICAgfSBlbHNlIHsKQEAgLTYxOCw4ICs2MTYsNiBAQCB2b2lkIFBOR0ltYWdlRGVjb2Rlcjo6
cmVhZENodW5rcyhwbmdfdW5rbm93bl9jaHVua3AgY2h1bmspCiAgICAgICAgICAgICByZXR1cm47
CiAKICAgICAgICAgbV9mcmFtZUJ1ZmZlckNhY2hlLnJlc2l6ZShtX2ZyYW1lQ291bnQpOwotICAg
ICAgICBmb3IgKGF1dG8mIGltYWdlRnJhbWUgOiBtX2ZyYW1lQnVmZmVyQ2FjaGUpCi0gICAgICAg
ICAgICBpbWFnZUZyYW1lLnNldFByZW11bHRpcGx5QWxwaGEobV9wcmVtdWx0aXBseUFscGhhKTsK
ICAgICB9IGVsc2UgaWYgKCFtZW1jbXAoY2h1bmstPm5hbWUsICJmY1RMIiwgNCkgJiYgY2h1bmst
PnNpemUgPT0gMjYpIHsKICAgICAgICAgaWYgKG1faGFzSW5mbyAmJiAhbV9pc0FuaW1hdGVkKQog
ICAgICAgICAgICAgcmV0dXJuOwpAQCAtNjYxLDEwICs2NTcsOCBAQCB2b2lkIFBOR0ltYWdlRGVj
b2Rlcjo6cmVhZENodW5rcyhwbmdfdW5rbm93bl9jaHVua3AgY2h1bmspCiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBpZiAobV9mcmFtZUJ1ZmZlckNhY2hlLmlzRW1w
dHkoKSkgeworICAgICAgICBpZiAobV9mcmFtZUJ1ZmZlckNhY2hlLmlzRW1wdHkoKSkKICAgICAg
ICAgICAgIG1fZnJhbWVCdWZmZXJDYWNoZS5yZXNpemUoMSk7Ci0gICAgICAgICAgICBtX2ZyYW1l
QnVmZmVyQ2FjaGVbMF0uc2V0UHJlbXVsdGlwbHlBbHBoYShtX3ByZW11bHRpcGx5QWxwaGEpOwot
ICAgICAgICB9CiAKICAgICAgICAgaWYgKG1fY3VycmVudEZyYW1lIDwgbV9mcmFtZUJ1ZmZlckNh
Y2hlLnNpemUoKSkgewogICAgICAgICAgICAgSW1hZ2VGcmFtZSYgYnVmZmVyID0gbV9mcmFtZUJ1
ZmZlckNhY2hlW21fY3VycmVudEZyYW1lXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuaAppbmRleCAw
NWZjNzRiLi45ODc0MjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5oCkBAIC00OCw3ICs0OCw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgaW50IHJlcGV0aXRpb25Db3VudCgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcGxheUNvdW50LTE7IH0KICNlbmRpZgogICAgICAgICBi
b29sIGlzU2l6ZUF2YWlsYWJsZSgpIG92ZXJyaWRlOwotICAgICAgICBib29sIHNldFNpemUodW5z
aWduZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCkgb3ZlcnJpZGU7CisgICAgICAgIGJvb2wgc2V0
U2l6ZShjb25zdCBJbnRTaXplJikgb3ZlcnJpZGU7CiAgICAgICAgIEltYWdlRnJhbWUqIGZyYW1l
QnVmZmVyQXRJbmRleChzaXplX3QgaW5kZXgpIG92ZXJyaWRlOwogICAgICAgICAvLyBDQVVUSU9O
OiBzZXRGYWlsZWQoKSBkZWxldGVzIHxtX3JlYWRlcnwuICBCZSBjYXJlZnVsIHRvIGF2b2lkCiAg
ICAgICAgIC8vIGFjY2Vzc2luZyBkZWxldGVkIG1lbW9yeSwgZXNwZWNpYWxseSB3aGVuIGNhbGxp
bmcgdGhpcyBmcm9tIGluc2lkZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAKaW5kZXgg
MDIyYzZmMC4uMTU5NjA0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwCkBAIC03
OCwxMCArNzgsOCBAQCBJbWFnZUZyYW1lKiBXRUJQSW1hZ2VEZWNvZGVyOjpmcmFtZUJ1ZmZlckF0
SW5kZXgoc2l6ZV90IGluZGV4KQogICAgIGlmIChpbmRleCkKICAgICAgICAgcmV0dXJuIDA7CiAK
LSAgICBpZiAobV9mcmFtZUJ1ZmZlckNhY2hlLmlzRW1wdHkoKSkgeworICAgIGlmIChtX2ZyYW1l
QnVmZmVyQ2FjaGUuaXNFbXB0eSgpKQogICAgICAgICBtX2ZyYW1lQnVmZmVyQ2FjaGUucmVzaXpl
KDEpOwotICAgICAgICBtX2ZyYW1lQnVmZmVyQ2FjaGVbMF0uc2V0UHJlbXVsdGlwbHlBbHBoYSht
X3ByZW11bHRpcGx5QWxwaGEpOwotICAgIH0KIAogICAgIEltYWdlRnJhbWUmIGZyYW1lID0gbV9m
cmFtZUJ1ZmZlckNhY2hlWzBdOwogICAgIGlmIChmcmFtZS5zdGF0dXMoKSAhPSBJbWFnZUZyYW1l
OjpGcmFtZUNvbXBsZXRlKQpAQCAtMTE1LDcgKzExMyw3IEBAIGJvb2wgV0VCUEltYWdlRGVjb2Rl
cjo6ZGVjb2RlKGJvb2wgb25seVNpemUpCiAgICAgICAgICAgICByZXR1cm4gc2V0RmFpbGVkKCk7
CiAgICAgICAgIG1faGFzQWxwaGEgPSBmYWxzZTsKICNlbmRpZgotICAgICAgICBpZiAoIXNldFNp
emUod2lkdGgsIGhlaWdodCkpCisgICAgICAgIGlmICghc2V0U2l6ZShJbnRTaXplKHdpZHRoLCBo
ZWlnaHQpKSkKICAgICAgICAgICAgIHJldHVybiBzZXRGYWlsZWQoKTsKICAgICB9CiAKQEAgLTEy
OCw3ICsxMjYsNyBAQCBib29sIFdFQlBJbWFnZURlY29kZXI6OmRlY29kZShib29sIG9ubHlTaXpl
KQogICAgIEFTU0VSVChidWZmZXIuc3RhdHVzKCkgIT0gSW1hZ2VGcmFtZTo6RnJhbWVDb21wbGV0
ZSk7CiAKICAgICBpZiAoYnVmZmVyLnN0YXR1cygpID09IEltYWdlRnJhbWU6OkZyYW1lRW1wdHkp
IHsKLSAgICAgICAgaWYgKCFidWZmZXIuc2V0U2l6ZShzaXplKCkud2lkdGgoKSwgc2l6ZSgpLmhl
aWdodCgpKSkKKyAgICAgICAgaWYgKCFidWZmZXIuc2V0U2l6ZShzaXplKCksIHByZW11bHRpcGx5
QWxwaGEoKSkpCiAgICAgICAgICAgICByZXR1cm4gc2V0RmFpbGVkKCk7CiAgICAgICAgIGJ1ZmZl
ci5zZXRTdGF0dXMoSW1hZ2VGcmFtZTo6RnJhbWVQYXJ0aWFsKTsKICAgICAgICAgYnVmZmVyLnNl
dEhhc0FscGhhKG1faGFzQWxwaGEpOwpAQCAtMTM2LDcgKzEzNCw3IEBAIGJvb2wgV0VCUEltYWdl
RGVjb2Rlcjo6ZGVjb2RlKGJvb2wgb25seVNpemUpCiAKICAgICBpZiAoIW1fZGVjb2Rlcikgewog
ICAgICAgICBXRUJQX0NTUF9NT0RFIG1vZGUgPSBvdXRwdXRNb2RlKG1faGFzQWxwaGEpOwotICAg
ICAgICBpZiAoIW1fcHJlbXVsdGlwbHlBbHBoYSkKKyAgICAgICAgaWYgKCFwcmVtdWx0aXBseUFs
cGhhKCkpCiAgICAgICAgICAgICBtb2RlID0gb3V0cHV0TW9kZShmYWxzZSk7CiAgICAgICAgIGlu
dCByb3dTdHJpZGUgPSBzaXplKCkud2lkdGgoKSAqIHNpemVvZihSR0JBMzIpOwogICAgICAgICB1
aW50OF90KiBvdXRwdXQgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihidWZmZXIuZ2V0QWRk
cigwLCAwKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>288644</attachid>
            <date>2016-09-12 17:11:25 -0700</date>
            <delta_ts>2016-09-13 10:32:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159721-20160912170851.patch</filename>
            <type>text/plain</type>
            <size>13857</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNTg0MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQzIEBACisyMDE2LTA5LTEyICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgR2V0IHJpZCBv
ZiB0aGUgbV9wcmVtdWx0aXBseUFscGhhIGZsYWcgb2YgdGhlIEltYWdlRnJhbWUgY2xhc3MKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTcyMQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgZmxhZyB3
YXMgb25seSBuZWVkZWQgd2hlbiBjYWxsaW5nIEltYWdlQmFja2luZ1N0b3JlOjpzZXRTaXplKCku
IEluc3RlYWQKKyAgICAgICAgd2UgY2FuIHBhc3MgdGhlIEltYWdlRGVjb2Rlcjo6bV9wcmVtdWx0
aXBseUFscGhhIHRvIEltYWdlRnJhbWU6OnNldFNpemUoKQorICAgICAgICB3aGljaCB3aWxsIHBh
c3MgaXQgdG8gSW1hZ2VCYWNraW5nU3RvcmU6OnNldFNpemUoKS4KKworICAgICAgICAqIHBsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUZyYW1lOjpJbWFnZUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OnNl
dFNpemUpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5o
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6ZGlzcG9zYWxNZXRob2QpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6c2V0RGlzcG9zYWxNZXRob2QpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VEZWNvZGVyOjpwcmVtdWx0aXBseUFscGhhKToKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlRnJhbWU6OnByZW11bHRpcGx5QWxwaGEpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VGcmFtZTo6c2V0UHJlbXVsdGlwbHlBbHBoYSk6IERlbGV0ZWQuCisgICAgICAgICog
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpCTVBJbWFnZURlY29kZXI6OmZyYW1lQnVmZmVyQXRJbmRleCk6CisgICAgICAg
ICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVhZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkJNUEltYWdlUmVhZGVyOjpkZWNvZGVCTVApOgorICAgICAgICAqIHBsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6R0lGSW1hZ2VEZWNvZGVyOjpkZWNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6R0lGSW1h
Z2VEZWNvZGVyOjppbml0RnJhbWVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SUNPSW1h
Z2VEZWNvZGVyOjpmcmFtZUNvdW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlBFR0ltYWdl
RGVjb2Rlcjo6ZnJhbWVCdWZmZXJBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkpQRUdJbWFn
ZURlY29kZXI6Om91dHB1dFNjYW5saW5lcyk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQTkdJbWFn
ZURlY29kZXI6OmZyYW1lQnVmZmVyQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpQTkdJbWFn
ZURlY29kZXI6OnJvd0F2YWlsYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpQTkdJbWFnZURlY29k
ZXI6OnJlYWRDaHVua3MpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAv
V0VCUEltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXRUJQSW1hZ2VEZWNvZGVy
OjpmcmFtZUJ1ZmZlckF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6V0VCUEltYWdlRGVjb2Rl
cjo6ZGVjb2RlKToKKwogMjAxNi0wOS0xMiAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxh
d2FAYXBwbGUuY29tPgogCiAgICAgICAgIE1vdmUgdGhlIHBpeGVsIGRhdGEgb2YgSW1hZ2VGcmFt
ZSB0byBhIHNlcGFyYXRlIGNsYXNzIG5hbWVkIEltYWdlQmFja2luZ1N0b3JlCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVj
b2Rlci5jcHAJKHJldmlzaW9uIDIwNTg0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMiw3ICsx
MzIsNiBAQCBJbWFnZUZyYW1lOjpJbWFnZUZyYW1lKCkKICAgICAsIG1fc3RhdHVzKEZyYW1lRW1w
dHkpCiAgICAgLCBtX2R1cmF0aW9uKDApCiAgICAgLCBtX2Rpc3Bvc2FsTWV0aG9kKERpc3Bvc2VO
b3RTcGVjaWZpZWQpCi0gICAgLCBtX3ByZW11bHRpcGx5QWxwaGEodHJ1ZSkKIHsKIH0gCiAKQEAg
LTE4OCwxMCArMTg3LDEwIEBAIGJvb2wgSW1hZ2VGcmFtZTo6Y29weUJpdG1hcERhdGEoY29uc3Qg
SW0KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBJbWFnZUZyYW1lOjpzZXRTaXplKGNvbnN0
IEludFNpemUmIHNpemUpCitib29sIEltYWdlRnJhbWU6OnNldFNpemUoY29uc3QgSW50U2l6ZSYg
c2l6ZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhKQogewogICAgIEFTU0VSVCghbV9iYWNraW5nU3Rv
cmUpOwotICAgIG1fYmFja2luZ1N0b3JlID0gSW1hZ2VCYWNraW5nU3RvcmU6OmNyZWF0ZShzaXpl
LCBtX3ByZW11bHRpcGx5QWxwaGEpOworICAgIG1fYmFja2luZ1N0b3JlID0gSW1hZ2VCYWNraW5n
U3RvcmU6OmNyZWF0ZShzaXplLCBwcmVtdWx0aXBseUFscGhhKTsKICAgICByZXR1cm4gbV9iYWNr
aW5nU3RvcmUgIT0gbnVsbHB0cjsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmgJKHJldmlzaW9uIDIwNTg0
MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC04OSw3ICs4OSw3IEBAIHVzaW5nIENvbG9yUHJvZmlsZSA9
IFZlY3RvcjxjaGFyPjsKICAgICAgICAgLy8gQWxsb2NhdGVzIHNwYWNlIGZvciB0aGUgcGl4ZWwg
ZGF0YS4gIE11c3QgYmUgY2FsbGVkIGJlZm9yZSBhbnkgcGl4ZWxzCiAgICAgICAgIC8vIGFyZSB3
cml0dGVuLiAgTXVzdCBvbmx5IGJlIGNhbGxlZCBvbmNlLiAgUmV0dXJucyB3aGV0aGVyIGFsbG9j
YXRpb24KICAgICAgICAgLy8gc3VjY2VlZGVkLgotICAgICAgICBib29sIHNldFNpemUoY29uc3Qg
SW50U2l6ZSYpOworICAgICAgICBib29sIHNldFNpemUoY29uc3QgSW50U2l6ZSYsIGJvb2wgcHJl
bXVsdGlwbHlBbHBoYSk7CiAgICAgICAgIEludFNpemUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
YmFja2luZ1N0b3JlID8gbV9iYWNraW5nU3RvcmUtPnNpemUoKSA6IEludFNpemUoKTsgfQogCiAg
ICAgICAgIC8vIFJldHVybnMgYSBjYWxsZXItb3duZWQgcG9pbnRlciB0byB0aGUgdW5kZXJseWlu
ZyBuYXRpdmUgaW1hZ2UgZGF0YS4KQEAgLTEwNSwxNCArMTA1LDEyIEBAIHVzaW5nIENvbG9yUHJv
ZmlsZSA9IFZlY3RvcjxjaGFyPjsKICAgICAgICAgRnJhbWVTdGF0dXMgc3RhdHVzKCkgY29uc3Qg
eyByZXR1cm4gbV9zdGF0dXM7IH0KICAgICAgICAgdW5zaWduZWQgZHVyYXRpb24oKSBjb25zdCB7
IHJldHVybiBtX2R1cmF0aW9uOyB9CiAgICAgICAgIEZyYW1lRGlzcG9zYWxNZXRob2QgZGlzcG9z
YWxNZXRob2QoKSBjb25zdCB7IHJldHVybiBtX2Rpc3Bvc2FsTWV0aG9kOyB9Ci0gICAgICAgIGJv
b2wgcHJlbXVsdGlwbHlBbHBoYSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJlbXVsdGlwbHlBbHBoYTsg
fQogCiAgICAgICAgIHZvaWQgc2V0SGFzQWxwaGEoYm9vbCBhbHBoYSk7CiAgICAgICAgIHZvaWQg
c2V0T3JpZ2luYWxGcmFtZVJlY3QoY29uc3QgSW50UmVjdCYpOwogICAgICAgICB2b2lkIHNldFN0
YXR1cyhGcmFtZVN0YXR1cyBzdGF0dXMpOwogICAgICAgICB2b2lkIHNldER1cmF0aW9uKHVuc2ln
bmVkIGR1cmF0aW9uKSB7IG1fZHVyYXRpb24gPSBkdXJhdGlvbjsgfQogICAgICAgICB2b2lkIHNl
dERpc3Bvc2FsTWV0aG9kKEZyYW1lRGlzcG9zYWxNZXRob2QgbWV0aG9kKSB7IG1fZGlzcG9zYWxN
ZXRob2QgPSBtZXRob2Q7IH0KLSAgICAgICAgdm9pZCBzZXRQcmVtdWx0aXBseUFscGhhKGJvb2wg
cHJlbXVsdGlwbHlBbHBoYSkgeyBtX3ByZW11bHRpcGx5QWxwaGEgPSBwcmVtdWx0aXBseUFscGhh
OyB9CiAKICAgICAgICAgaW5saW5lIFJHQkEzMiogcGl4ZWxBdChpbnQgeCwgaW50IHkpCiAgICAg
ICAgIHsKQEAgLTE0Niw3ICsxNDQsNiBAQCB1c2luZyBDb2xvclByb2ZpbGUgPSBWZWN0b3I8Y2hh
cj47CiAgICAgICAgIEZyYW1lU3RhdHVzIG1fc3RhdHVzOwogICAgICAgICB1bnNpZ25lZCBtX2R1
cmF0aW9uOwogICAgICAgICBGcmFtZURpc3Bvc2FsTWV0aG9kIG1fZGlzcG9zYWxNZXRob2Q7Ci0g
ICAgICAgIGJvb2wgbV9wcmVtdWx0aXBseUFscGhhOwogICAgIH07CiAKICAgICAvLyBJbWFnZURl
Y29kZXIgaXMgYSBiYXNlIGZvciBhbGwgZm9ybWF0LXNwZWNpZmljIGRlY29kZXJzCkBAIC0xNzQs
NiArMTcxLDggQEAgdXNpbmcgQ29sb3JQcm9maWxlID0gVmVjdG9yPGNoYXI+OwogICAgICAgICBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlRGVjb2Rlcj4gY3JlYXRlKGNvbnN0IFNoYXJlZEJ1
ZmZlciYgZGF0YSwgSW1hZ2VTb3VyY2U6OkFscGhhT3B0aW9uLCBJbWFnZVNvdXJjZTo6R2FtbWFB
bmRDb2xvclByb2ZpbGVPcHRpb24pOwogCiAgICAgICAgIHZpcnR1YWwgU3RyaW5nIGZpbGVuYW1l
RXh0ZW5zaW9uKCkgY29uc3QgPSAwOworICAgICAgICAKKyAgICAgICAgYm9vbCBwcmVtdWx0aXBs
eUFscGhhKCkgY29uc3QgeyByZXR1cm4gbV9wcmVtdWx0aXBseUFscGhhOyB9CiAKICAgICAgICAg
Ym9vbCBpc0FsbERhdGFSZWNlaXZlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNBbGxEYXRhUmVjZWl2
ZWQ7IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1w
L0JNUEltYWdlRGVjb2Rlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAJKHJldmlzaW9uIDIwNTg0
MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFn
ZURlY29kZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MCwxMCArNzAsOCBAQCBJbWFnZUZyYW1l
KiBCTVBJbWFnZURlY29kZXI6OmZyYW1lQnVmZmVyCiAgICAgaWYgKGluZGV4KQogICAgICAgICBy
ZXR1cm4gMDsKIAotICAgIGlmIChtX2ZyYW1lQnVmZmVyQ2FjaGUuaXNFbXB0eSgpKSB7CisgICAg
aWYgKG1fZnJhbWVCdWZmZXJDYWNoZS5pc0VtcHR5KCkpCiAgICAgICAgIG1fZnJhbWVCdWZmZXJD
YWNoZS5yZXNpemUoMSk7Ci0gICAgICAgIG1fZnJhbWVCdWZmZXJDYWNoZS5maXJzdCgpLnNldFBy
ZW11bHRpcGx5QWxwaGEobV9wcmVtdWx0aXBseUFscGhhKTsKLSAgICB9CiAKICAgICBJbWFnZUZy
YW1lKiBidWZmZXIgPSAmbV9mcmFtZUJ1ZmZlckNhY2hlLmZpcnN0KCk7CiAgICAgaWYgKGJ1ZmZl
ci0+c3RhdHVzKCkgIT0gSW1hZ2VGcmFtZTo6RnJhbWVDb21wbGV0ZSkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JN
UEltYWdlUmVhZGVyLmNwcAkocmV2aXNpb24gMjA1ODQxKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVhZGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNzgsNyArNzgsNyBAQCBib29sIEJNUEltYWdlUmVhZGVyOjpkZWNvZGVCTVAoYm9vbCBv
bmx5CiAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgZnJhbWVidWZmZXIgaWYgbmVlZGVkLgogICAgIEFT
U0VSVChtX2J1ZmZlcik7ICAvLyBQYXJlbnQgc2hvdWxkIHNldCB0aGlzIGJlZm9yZSBhc2tpbmcg
dXMgdG8gZGVjb2RlIQogICAgIGlmIChtX2J1ZmZlci0+c3RhdHVzKCkgPT0gSW1hZ2VGcmFtZTo6
RnJhbWVFbXB0eSkgewotICAgICAgICBpZiAoIW1fYnVmZmVyLT5zZXRTaXplKG1fcGFyZW50LT5z
aXplKCkpKQorICAgICAgICBpZiAoIW1fYnVmZmVyLT5zZXRTaXplKG1fcGFyZW50LT5zaXplKCks
IG1fcGFyZW50LT5wcmVtdWx0aXBseUFscGhhKCkpKQogICAgICAgICAgICAgcmV0dXJuIG1fcGFy
ZW50LT5zZXRGYWlsZWQoKTsgLy8gVW5hYmxlIHRvIGFsbG9jYXRlLgogICAgICAgICBtX2J1ZmZl
ci0+c2V0U3RhdHVzKEltYWdlRnJhbWU6OkZyYW1lUGFydGlhbCk7CiAgICAgICAgIC8vIHNldFNp
emUoKSBjYWxscyBlcmFzZUFSR0IoKSwgd2hpY2ggcmVzZXRzIHRoZSBhbHBoYSBmbGFnLCBzbyB3
ZSBmb3JjZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lm
L0dJRkltYWdlRGVjb2Rlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAJKHJldmlzaW9uIDIwNTg0
MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFn
ZURlY29kZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjEsMTAgKzMyMSw3IEBAIHZvaWQgR0lG
SW1hZ2VEZWNvZGVyOjpkZWNvZGUodW5zaWduZWQgaGEKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIGNvbnN0IHNpemVfdCBvbGRTaXplID0gbV9mcmFtZUJ1ZmZlckNhY2hlLnNpemUoKTsK
ICAgICBtX2ZyYW1lQnVmZmVyQ2FjaGUucmVzaXplKG1fcmVhZGVyLT5pbWFnZXNDb3VudCgpKTsK
LSAgICBmb3IgKHNpemVfdCBpID0gb2xkU2l6ZTsgaSA8IG1fcmVhZGVyLT5pbWFnZXNDb3VudCgp
OyArK2kpCi0gICAgICAgIG1fZnJhbWVCdWZmZXJDYWNoZVtpXS5zZXRQcmVtdWx0aXBseUFscGhh
KG1fcHJlbXVsdGlwbHlBbHBoYSk7CiAKICAgICBpZiAocXVlcnkgPT0gR0lGRnJhbWVDb3VudFF1
ZXJ5KQogICAgICAgICByZXR1cm47CkBAIC0zNjEsNyArMzU4LDcgQEAgYm9vbCBHSUZJbWFnZURl
Y29kZXI6OmluaXRGcmFtZUJ1ZmZlcih1bgogCiAgICAgaWYgKCFmcmFtZUluZGV4KSB7CiAgICAg
ICAgIC8vIFRoaXMgaXMgdGhlIGZpcnN0IGZyYW1lLCBzbyB3ZSdyZSBub3QgcmVseWluZyBvbiBh
bnkgcHJldmlvdXMgZGF0YS4KLSAgICAgICAgaWYgKCFidWZmZXItPnNldFNpemUoc2NhbGVkU2l6
ZSgpKSkKKyAgICAgICAgaWYgKCFidWZmZXItPnNldFNpemUoc2NhbGVkU2l6ZSgpLCBtX3ByZW11
bHRpcGx5QWxwaGEpKQogICAgICAgICAgICAgcmV0dXJuIHNldEZhaWxlZCgpOwogICAgIH0gZWxz
ZSB7CiAgICAgICAgIC8vIFRoZSBzdGFydGluZyBzdGF0ZSBmb3IgdGhpcyBmcmFtZSBkZXBlbmRz
IG9uIHRoZSBwcmV2aW91cyBmcmFtZSdzCkBAIC0zOTIsNyArMzg5LDcgQEAgYm9vbCBHSUZJbWFn
ZURlY29kZXI6OmluaXRGcmFtZUJ1ZmZlcih1bgogICAgICAgICAgICAgaWYgKCFmcmFtZUluZGV4
IHx8IHByZXZSZWN0LmNvbnRhaW5zKEludFJlY3QoSW50UG9pbnQoKSwgc2NhbGVkU2l6ZSgpKSkp
IHsKICAgICAgICAgICAgICAgICAvLyBDbGVhcmluZyB0aGUgZmlyc3QgZnJhbWUsIG9yIGEgZnJh
bWUgdGhlIHNpemUgb2YgdGhlIHdob2xlCiAgICAgICAgICAgICAgICAgLy8gaW1hZ2UsIHJlc3Vs
dHMgaW4gYSBjb21wbGV0ZWx5IGVtcHR5IGltYWdlLgotICAgICAgICAgICAgICAgIGlmICghYnVm
ZmVyLT5zZXRTaXplKGJ1ZmZlclNpemUpKQorICAgICAgICAgICAgICAgIGlmICghYnVmZmVyLT5z
ZXRTaXplKGJ1ZmZlclNpemUsIHByZW11bHRpcGx5QWxwaGEoKSkpCiAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBzZXRGYWlsZWQoKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICAgICAgLy8gQ29weSB0aGUgd2hvbGUgcHJldmlvdXMgYnVmZmVyLCB0aGVuIGNsZWFyIGp1c3Qg
aXRzIGZyYW1lLgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
aWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAJKHJldmlzaW9uIDIw
NTg0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09J
bWFnZURlY29kZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05OCwxMSArOTgsOCBAQCBib29sIElD
T0ltYWdlRGVjb2Rlcjo6c2V0U2l6ZShjb25zdCBJbnRTCiBzaXplX3QgSUNPSW1hZ2VEZWNvZGVy
OjpmcmFtZUNvdW50KCkKIHsKICAgICBkZWNvZGUoMCwgdHJ1ZSk7Ci0gICAgaWYgKG1fZnJhbWVC
dWZmZXJDYWNoZS5pc0VtcHR5KCkpIHsKKyAgICBpZiAobV9mcmFtZUJ1ZmZlckNhY2hlLmlzRW1w
dHkoKSkKICAgICAgICAgbV9mcmFtZUJ1ZmZlckNhY2hlLnJlc2l6ZShtX2RpckVudHJpZXMuc2l6
ZSgpKTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2RpckVudHJpZXMuc2l6ZSgp
OyArK2kpCi0gICAgICAgICAgICBtX2ZyYW1lQnVmZmVyQ2FjaGVbaV0uc2V0UHJlbXVsdGlwbHlB
bHBoYShtX3ByZW11bHRpcGx5QWxwaGEpOwotICAgIH0KICAgICAvLyBDQVVUSU9OOiBXZSBtdXN0
IG5vdCByZXNpemUgbV9mcmFtZUJ1ZmZlckNhY2hlIGFnYWluIGFmdGVyIHRoaXMsIGFzCiAgICAg
Ly8gZGVjb2RlQXRJbmRleCgpIG1heSBnaXZlIGEgQk1QSW1hZ2VSZWFkZXIgYSBwb2ludGVyIHRv
IG9uZSBvZiB0aGUKICAgICAvLyBlbnRyaWVzLgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURl
Y29kZXIuY3BwCShyZXZpc2lvbiAyMDU4NDEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01MzMsMTAgKzUzMyw4IEBAIEltYWdlRnJhbWUqIEpQRUdJbWFnZURlY29kZXI6OmZyYW1lQnVm
ZmUKICAgICBpZiAoaW5kZXgpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgaWYgKG1fZnJhbWVC
dWZmZXJDYWNoZS5pc0VtcHR5KCkpIHsKKyAgICBpZiAobV9mcmFtZUJ1ZmZlckNhY2hlLmlzRW1w
dHkoKSkKICAgICAgICAgbV9mcmFtZUJ1ZmZlckNhY2hlLnJlc2l6ZSgxKTsKLSAgICAgICAgbV9m
cmFtZUJ1ZmZlckNhY2hlWzBdLnNldFByZW11bHRpcGx5QWxwaGEobV9wcmVtdWx0aXBseUFscGhh
KTsKLSAgICB9CiAKICAgICBJbWFnZUZyYW1lJiBmcmFtZSA9IG1fZnJhbWVCdWZmZXJDYWNoZVsw
XTsKICAgICBpZiAoZnJhbWUuc3RhdHVzKCkgIT0gSW1hZ2VGcmFtZTo6RnJhbWVDb21wbGV0ZSkK
QEAgLTYxNyw3ICs2MTUsNyBAQCBib29sIEpQRUdJbWFnZURlY29kZXI6Om91dHB1dFNjYW5saW5l
cygpCiAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgZnJhbWVidWZmZXIgaWYgbmVlZGVkLgogICAgIElt
YWdlRnJhbWUmIGJ1ZmZlciA9IG1fZnJhbWVCdWZmZXJDYWNoZVswXTsKICAgICBpZiAoYnVmZmVy
LnN0YXR1cygpID09IEltYWdlRnJhbWU6OkZyYW1lRW1wdHkpIHsKLSAgICAgICAgaWYgKCFidWZm
ZXIuc2V0U2l6ZShzY2FsZWRTaXplKCkpKQorICAgICAgICBpZiAoIWJ1ZmZlci5zZXRTaXplKHNj
YWxlZFNpemUoKSwgbV9wcmVtdWx0aXBseUFscGhhKSkKICAgICAgICAgICAgIHJldHVybiBzZXRG
YWlsZWQoKTsKICAgICAgICAgYnVmZmVyLnNldFN0YXR1cyhJbWFnZUZyYW1lOjpGcmFtZVBhcnRp
YWwpOwogICAgICAgICAvLyBUaGUgYnVmZmVyIGlzIHRyYW5zcGFyZW50IG91dHNpZGUgdGhlIGRl
Y29kZWQgYXJlYSB3aGlsZSB0aGUgaW1hZ2UgaXMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29k
ZXIuY3BwCShyZXZpc2lvbiAyMDU4NDEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjU3
LDEwICsyNTcsOCBAQCBJbWFnZUZyYW1lKiBQTkdJbWFnZURlY29kZXI6OmZyYW1lQnVmZmVyCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogI2VuZGlmCiAKLSAgICBpZiAobV9mcmFtZUJ1ZmZlckNh
Y2hlLmlzRW1wdHkoKSkgeworICAgIGlmIChtX2ZyYW1lQnVmZmVyQ2FjaGUuaXNFbXB0eSgpKQog
ICAgICAgICBtX2ZyYW1lQnVmZmVyQ2FjaGUucmVzaXplKDEpOwotICAgICAgICBtX2ZyYW1lQnVm
ZmVyQ2FjaGVbMF0uc2V0UHJlbXVsdGlwbHlBbHBoYShtX3ByZW11bHRpcGx5QWxwaGEpOwotICAg
IH0KIAogICAgIEltYWdlRnJhbWUmIGZyYW1lID0gbV9mcmFtZUJ1ZmZlckNhY2hlW2luZGV4XTsK
ICAgICBpZiAoZnJhbWUuc3RhdHVzKCkgIT0gSW1hZ2VGcmFtZTo6RnJhbWVDb21wbGV0ZSkKQEAg
LTQ0Nyw3ICs0NDUsNyBAQCB2b2lkIFBOR0ltYWdlRGVjb2Rlcjo6cm93QXZhaWxhYmxlKHVuc2ln
CiAgICAgSW1hZ2VGcmFtZSYgYnVmZmVyID0gbV9mcmFtZUJ1ZmZlckNhY2hlW21fY3VycmVudEZy
YW1lXTsKICAgICBpZiAoYnVmZmVyLnN0YXR1cygpID09IEltYWdlRnJhbWU6OkZyYW1lRW1wdHkp
IHsKICAgICAgICAgcG5nX3N0cnVjdHAgcG5nID0gbV9yZWFkZXItPnBuZ1B0cigpOwotICAgICAg
ICBpZiAoIWJ1ZmZlci5zZXRTaXplKHNjYWxlZFNpemUoKSkpIHsKKyAgICAgICAgaWYgKCFidWZm
ZXIuc2V0U2l6ZShzY2FsZWRTaXplKCksIG1fcHJlbXVsdGlwbHlBbHBoYSkpIHsKICAgICAgICAg
ICAgIGxvbmdqbXAoSk1QQlVGKHBuZyksIDEpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CkBAIC02MTgsOCArNjE2LDYgQEAgdm9pZCBQTkdJbWFnZURlY29kZXI6OnJlYWRDaHVua3Mo
cG5nX3VuawogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIG1fZnJhbWVCdWZmZXJDYWNo
ZS5yZXNpemUobV9mcmFtZUNvdW50KTsKLSAgICAgICAgZm9yIChhdXRvJiBpbWFnZUZyYW1lIDog
bV9mcmFtZUJ1ZmZlckNhY2hlKQotICAgICAgICAgICAgaW1hZ2VGcmFtZS5zZXRQcmVtdWx0aXBs
eUFscGhhKG1fcHJlbXVsdGlwbHlBbHBoYSk7CiAgICAgfSBlbHNlIGlmICghbWVtY21wKGNodW5r
LT5uYW1lLCAiZmNUTCIsIDQpICYmIGNodW5rLT5zaXplID09IDI2KSB7CiAgICAgICAgIGlmICht
X2hhc0luZm8gJiYgIW1faXNBbmltYXRlZCkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTY2MSwx
MCArNjU3LDggQEAgdm9pZCBQTkdJbWFnZURlY29kZXI6OnJlYWRDaHVua3MocG5nX3VuawogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKG1fZnJhbWVCdWZmZXJD
YWNoZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgaWYgKG1fZnJhbWVCdWZmZXJDYWNoZS5pc0VtcHR5
KCkpCiAgICAgICAgICAgICBtX2ZyYW1lQnVmZmVyQ2FjaGUucmVzaXplKDEpOwotICAgICAgICAg
ICAgbV9mcmFtZUJ1ZmZlckNhY2hlWzBdLnNldFByZW11bHRpcGx5QWxwaGEobV9wcmVtdWx0aXBs
eUFscGhhKTsKLSAgICAgICAgfQogCiAgICAgICAgIGlmIChtX2N1cnJlbnRGcmFtZSA8IG1fZnJh
bWVCdWZmZXJDYWNoZS5zaXplKCkpIHsKICAgICAgICAgICAgIEltYWdlRnJhbWUmIGJ1ZmZlciA9
IG1fZnJhbWVCdWZmZXJDYWNoZVttX2N1cnJlbnRGcmFtZV07CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VC
UEltYWdlRGVjb2Rlci5jcHAJKHJldmlzaW9uIDIwNTg0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTc4LDEwICs3OCw4IEBAIEltYWdlRnJhbWUqIFdFQlBJbWFnZURlY29kZXI6OmZy
YW1lQnVmZmUKICAgICBpZiAoaW5kZXgpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgaWYgKG1f
ZnJhbWVCdWZmZXJDYWNoZS5pc0VtcHR5KCkpIHsKKyAgICBpZiAobV9mcmFtZUJ1ZmZlckNhY2hl
LmlzRW1wdHkoKSkKICAgICAgICAgbV9mcmFtZUJ1ZmZlckNhY2hlLnJlc2l6ZSgxKTsKLSAgICAg
ICAgbV9mcmFtZUJ1ZmZlckNhY2hlWzBdLnNldFByZW11bHRpcGx5QWxwaGEobV9wcmVtdWx0aXBs
eUFscGhhKTsKLSAgICB9CiAKICAgICBJbWFnZUZyYW1lJiBmcmFtZSA9IG1fZnJhbWVCdWZmZXJD
YWNoZVswXTsKICAgICBpZiAoZnJhbWUuc3RhdHVzKCkgIT0gSW1hZ2VGcmFtZTo6RnJhbWVDb21w
bGV0ZSkKQEAgLTEyOCw3ICsxMjYsNyBAQCBib29sIFdFQlBJbWFnZURlY29kZXI6OmRlY29kZShi
b29sIG9ubHlTCiAgICAgQVNTRVJUKGJ1ZmZlci5zdGF0dXMoKSAhPSBJbWFnZUZyYW1lOjpGcmFt
ZUNvbXBsZXRlKTsKIAogICAgIGlmIChidWZmZXIuc3RhdHVzKCkgPT0gSW1hZ2VGcmFtZTo6RnJh
bWVFbXB0eSkgewotICAgICAgICBpZiAoIWJ1ZmZlci5zZXRTaXplKHNpemUoKSkpCisgICAgICAg
IGlmICghYnVmZmVyLnNldFNpemUoc2l6ZSgpLCBtX3ByZW11bHRpcGx5QWxwaGEpKQogICAgICAg
ICAgICAgcmV0dXJuIHNldEZhaWxlZCgpOwogICAgICAgICBidWZmZXIuc2V0U3RhdHVzKEltYWdl
RnJhbWU6OkZyYW1lUGFydGlhbCk7CiAgICAgICAgIGJ1ZmZlci5zZXRIYXNBbHBoYShtX2hhc0Fs
cGhhKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>288695</attachid>
            <date>2016-09-13 10:32:44 -0700</date>
            <delta_ts>2016-09-13 10:43:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159721-20160913103009.patch</filename>
            <type>text/plain</type>
            <size>20291</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNTg2MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUxIEBACisyMDE2LTA5LTEzICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgR2V0IHJpZCBv
ZiB0aGUgbV9wcmVtdWx0aXBseUFscGhhIGZsYWcgb2YgdGhlIEltYWdlRnJhbWUgY2xhc3MKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTcyMQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgZmxhZyB3
YXMgb25seSBuZWVkZWQgd2hlbiBjYWxsaW5nIEltYWdlQmFja2luZ1N0b3JlOjpjcmVhdGUoKSBp
biAKKyAgICAgICAgSW1hZ2VGcmFtZTo6c2V0U2l6ZSgpLiBJbnN0ZWFkIHdlIGNhbiBwYXNzIElt
YWdlRGVjb2Rlcjo6bV9wcmVtdWx0aXBseUFscGhhIAorICAgICAgICB0byBJbWFnZUZyYW1lOjpz
ZXRTaXplKCksIHdoaWNoIHNob3VsZCBiZSByZW5hbWVkIEltYWdlRnJhbWU6OmluaXRpYWxpemVC
YWNraW5nU3RvcmUoKS4KKyAgICAgICAgVGhlIHBhc3NlZCBwcmVtdWx0aXBseUFscGhhIGNhbiB0
aGVuIGJlIHBhc3NlZCB0byBJbWFnZUJhY2tpbmdTdG9yZTo6Y3JlYXRlKCkuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VGcmFtZTo6SW1hZ2VGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZy
YW1lOjpvcGVyYXRvcj0pOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6aW5pdGlhbGl6
ZUJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpjb3B5Qml0bWFw
RGF0YSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpzZXRTaXplKTog
RGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OmRpc3Bvc2FsTWV0aG9kKToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OnNldERpc3Bvc2FsTWV0aG9kKToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlRGVjb2Rlcjo6cHJlbXVsdGlwbHlBbHBoYSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZUZyYW1lOjpwcmVtdWx0aXBseUFscGhhKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlRnJhbWU6OnNldFByZW11bHRpcGx5QWxwaGEpOiBEZWxldGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Qk1QSW1hZ2VEZWNvZGVyOjpmcmFtZUJ1ZmZlckF0SW5kZXgpOgorICAgICAg
ICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpCTVBJbWFnZVJlYWRlcjo6ZGVjb2RlQk1QKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkdJRkltYWdlRGVjb2Rlcjo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkdJRklt
YWdlRGVjb2Rlcjo6aW5pdEZyYW1lQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklDT0lt
YWdlRGVjb2Rlcjo6ZnJhbWVDb3VudCk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpQRUdJbWFn
ZURlY29kZXI6OmZyYW1lQnVmZmVyQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpKUEVHSW1h
Z2VEZWNvZGVyOjpvdXRwdXRTY2FubGluZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UE5HSW1h
Z2VEZWNvZGVyOjpmcmFtZUJ1ZmZlckF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6UE5HSW1h
Z2VEZWNvZGVyOjpyb3dBdmFpbGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6UE5HSW1hZ2VEZWNv
ZGVyOjpyZWFkQ2h1bmtzKToKKyAgICAgICAgKFdlYkNvcmU6OlBOR0ltYWdlRGVjb2Rlcjo6aW5p
dEZyYW1lQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldFBpeGVsUkdCKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OnNldFBpeGVsUkdCQSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpzZXRQaXhlbFByZW11bHRpcGxpZWRSR0JBKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V0VCUEltYWdlRGVjb2Rlcjo6ZnJhbWVCdWZmZXJBdEluZGV4KToKKyAgICAgICAg
KFdlYkNvcmU6OldFQlBJbWFnZURlY29kZXI6OmRlY29kZSk6CisKIDIwMTYtMDktMTIgIFphbGFu
IEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBJbnB1dCB0eXBlIG9iamVjdCBh
bmQgdGhlIGFzc29jaWF0ZWQgcmVuZGVyIGNhbiBnbyBvdXQgb2Ygc3luYy4KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNv
ZGVyLmNwcAkocmV2aXNpb24gMjA1ODQxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMyLDcgKzEz
Miw2IEBAIEltYWdlRnJhbWU6OkltYWdlRnJhbWUoKQogICAgICwgbV9zdGF0dXMoRnJhbWVFbXB0
eSkKICAgICAsIG1fZHVyYXRpb24oMCkKICAgICAsIG1fZGlzcG9zYWxNZXRob2QoRGlzcG9zZU5v
dFNwZWNpZmllZCkKLSAgICAsIG1fcHJlbXVsdGlwbHlBbHBoYSh0cnVlKQogewogfSAKIApAQCAt
MTQxLDcgKzE0MCw3IEBAIEltYWdlRnJhbWUmIEltYWdlRnJhbWU6Om9wZXJhdG9yPShjb25zdCAK
ICAgICBpZiAodGhpcyA9PSAmb3RoZXIpCiAgICAgICAgIHJldHVybiAqdGhpczsKIAotICAgIGNv
cHlCaXRtYXBEYXRhKG90aGVyKTsKKyAgICBpbml0aWFsaXplQmFja2luZ1N0b3JlKG90aGVyLmJh
Y2tpbmdTdG9yZSgpKTsKICAgICBzZXRIYXNBbHBoYShvdGhlci5tX2hhc0FscGhhKTsKICAgICBz
ZXRTdGF0dXMob3RoZXIuc3RhdHVzKCkpOwogICAgIHNldER1cmF0aW9uKG90aGVyLmR1cmF0aW9u
KCkpOwpAQCAtMTc1LDIzICsxNzQsMjQgQEAgdm9pZCBJbWFnZUZyYW1lOjp6ZXJvRmlsbEZyYW1l
UmVjdChjb25zdAogICAgIHNldEhhc0FscGhhKHRydWUpOwogfQogCi1ib29sIEltYWdlRnJhbWU6
OmNvcHlCaXRtYXBEYXRhKGNvbnN0IEltYWdlRnJhbWUmIG90aGVyKQorYm9vbCBJbWFnZUZyYW1l
Ojppbml0aWFsaXplQmFja2luZ1N0b3JlKGNvbnN0IEltYWdlQmFja2luZ1N0b3JlKiBiYWNraW5n
U3RvcmUpCiB7Ci0gICAgaWYgKHRoaXMgPT0gJm90aGVyKQorICAgIGlmICghYmFja2luZ1N0b3Jl
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoYmFja2luZ1N0b3JlID09IHRoaXMt
PmJhY2tpbmdTdG9yZSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmIChvdGhlci5t
X2JhY2tpbmdTdG9yZSkKLSAgICAgICAgbV9iYWNraW5nU3RvcmUgPSBJbWFnZUJhY2tpbmdTdG9y
ZTo6Y3JlYXRlKCpvdGhlci5tX2JhY2tpbmdTdG9yZS5nZXQoKSk7Ci0gICAgZWxzZQotICAgICAg
ICBtX2JhY2tpbmdTdG9yZSA9IG51bGxwdHI7Ci0gICAgCi0gICAgcmV0dXJuIHRydWU7CisgICAg
bV9iYWNraW5nU3RvcmUgPSBJbWFnZUJhY2tpbmdTdG9yZTo6Y3JlYXRlKGJhY2tpbmdTdG9yZSk7
CisgICAgcmV0dXJuIG1fYmFja2luZ1N0b3JlICE9IG51bGxwdHI7CiB9CiAKLWJvb2wgSW1hZ2VG
cmFtZTo6c2V0U2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQorYm9vbCBJbWFnZUZyYW1lOjppbml0
aWFsaXplQmFja2luZ1N0b3JlKGNvbnN0IEludFNpemUmIHNpemUsIGJvb2wgcHJlbXVsdGlwbHlB
bHBoYSkKIHsKLSAgICBBU1NFUlQoIW1fYmFja2luZ1N0b3JlKTsKLSAgICBtX2JhY2tpbmdTdG9y
ZSA9IEltYWdlQmFja2luZ1N0b3JlOjpjcmVhdGUoc2l6ZSwgbV9wcmVtdWx0aXBseUFscGhhKTsK
KyAgICBpZiAoc2l6ZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIG1f
YmFja2luZ1N0b3JlID0gSW1hZ2VCYWNraW5nU3RvcmU6OmNyZWF0ZShzaXplLCBwcmVtdWx0aXBs
eUFscGhhKTsKICAgICByZXR1cm4gbV9iYWNraW5nU3RvcmUgIT0gbnVsbHB0cjsKIH0KIApJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1h
Z2VEZWNvZGVyLmgJKHJldmlzaW9uIDIwNTg0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oCSh3b3JraW5nIGNvcHkpCkBAIC03MiwxMiAr
NzIsNyBAQCB1c2luZyBDb2xvclByb2ZpbGUgPSBWZWN0b3I8Y2hhcj47CiAgICAgICAgIHZvaWQg
Y2xlYXJQaXhlbERhdGEoKTsKICAgICAgICAgdm9pZCB6ZXJvRmlsbFBpeGVsRGF0YSgpOwogICAg
ICAgICB2b2lkIHplcm9GaWxsRnJhbWVSZWN0KGNvbnN0IEludFJlY3QmKTsKLQotICAgICAgICAv
LyBNYWtlcyB0aGlzIGZyYW1lIGhhdmUgYW4gaW5kZXBlbmRlbnQgY29weSBvZiB0aGUgcHJvdmlk
ZWQgaW1hZ2UncwotICAgICAgICAvLyBwaXhlbCBkYXRhLCBzbyB0aGF0IG1vZGlmaWNhdGlvbnMg
aW4gb25lIGZyYW1lIGFyZSBub3QgcmVmbGVjdGVkIGluCi0gICAgICAgIC8vIHRoZSBvdGhlci4g
IFJldHVybnMgd2hldGhlciB0aGUgY29weSBzdWNjZWVkZWQuCi0gICAgICAgIGJvb2wgY29weUJp
dG1hcERhdGEoY29uc3QgSW1hZ2VGcmFtZSYpOwotCisgICAgICAgIAogICAgICAgICAvLyBDb3Bp
ZXMgdGhlIHBpeGVsIGRhdGEgYXQgWyhzdGFydFgsIHN0YXJ0WSksIChlbmRYLCBzdGFydFkpKSB0
byB0aGUKICAgICAgICAgLy8gc2FtZSBYLWNvb3JkaW5hdGVzIG9uIGVhY2ggc3Vic2VxdWVudCBy
b3cgdXAgdG8gYnV0IG5vdCBpbmNsdWRpbmcKICAgICAgICAgLy8gZW5kWS4KQEAgLTg2LDEwICs4
MSwxNCBAQCB1c2luZyBDb2xvclByb2ZpbGUgPSBWZWN0b3I8Y2hhcj47CiAgICAgICAgICAgICBt
X2JhY2tpbmdTdG9yZS0+cmVwZWF0Rmlyc3RSb3coSW50UmVjdChzdGFydFgsIHN0YXJ0WSwgZW5k
WCAtc3RhcnRYICwgZW5kWSAtIHN0YXJ0WSkpOwogICAgICAgICB9CiAKLSAgICAgICAgLy8gQWxs
b2NhdGVzIHNwYWNlIGZvciB0aGUgcGl4ZWwgZGF0YS4gIE11c3QgYmUgY2FsbGVkIGJlZm9yZSBh
bnkgcGl4ZWxzCi0gICAgICAgIC8vIGFyZSB3cml0dGVuLiAgTXVzdCBvbmx5IGJlIGNhbGxlZCBv
bmNlLiAgUmV0dXJucyB3aGV0aGVyIGFsbG9jYXRpb24KLSAgICAgICAgLy8gc3VjY2VlZGVkLgot
ICAgICAgICBib29sIHNldFNpemUoY29uc3QgSW50U2l6ZSYpOworICAgICAgICAvLyBNYWtlcyB0
aGlzIGZyYW1lIGhhdmUgYW4gaW5kZXBlbmRlbnQgY29weSBvZiB0aGUgcHJvdmlkZWQgaW1hZ2Un
cworICAgICAgICAvLyBwaXhlbCBkYXRhLCBzbyB0aGF0IG1vZGlmaWNhdGlvbnMgaW4gb25lIGZy
YW1lIGFyZSBub3QgcmVmbGVjdGVkIGluCisgICAgICAgIC8vIHRoZSBvdGhlci4gUmV0dXJucyB3
aGV0aGVyIHRoZSBjb3B5IHN1Y2NlZWRlZC4KKyAgICAgICAgYm9vbCBpbml0aWFsaXplQmFja2lu
Z1N0b3JlKGNvbnN0IEltYWdlQmFja2luZ1N0b3JlKik7CisKKyAgICAgICAgLy8gQWxsb2NhdGVz
IHNwYWNlIGZvciB0aGUgcGl4ZWwgZGF0YS4gUmV0dXJucyB3aGV0aGVyIGFsbG9jYXRpb24gc3Vj
Y2VlZGVkLgorICAgICAgICBib29sIGluaXRpYWxpemVCYWNraW5nU3RvcmUoY29uc3QgSW50U2l6
ZSYsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSk7CisKICAgICAgICAgSW50U2l6ZSBzaXplKCkgY29u
c3QgeyByZXR1cm4gbV9iYWNraW5nU3RvcmUgPyBtX2JhY2tpbmdTdG9yZS0+c2l6ZSgpIDogSW50
U2l6ZSgpOyB9CiAKICAgICAgICAgLy8gUmV0dXJucyBhIGNhbGxlci1vd25lZCBwb2ludGVyIHRv
IHRoZSB1bmRlcmx5aW5nIG5hdGl2ZSBpbWFnZSBkYXRhLgpAQCAtMTA1LDE0ICsxMDQsMTIgQEAg
dXNpbmcgQ29sb3JQcm9maWxlID0gVmVjdG9yPGNoYXI+OwogICAgICAgICBGcmFtZVN0YXR1cyBz
dGF0dXMoKSBjb25zdCB7IHJldHVybiBtX3N0YXR1czsgfQogICAgICAgICB1bnNpZ25lZCBkdXJh
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZHVyYXRpb247IH0KICAgICAgICAgRnJhbWVEaXNwb3Nh
bE1ldGhvZCBkaXNwb3NhbE1ldGhvZCgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcG9zYWxNZXRob2Q7
IH0KLSAgICAgICAgYm9vbCBwcmVtdWx0aXBseUFscGhhKCkgY29uc3QgeyByZXR1cm4gbV9wcmVt
dWx0aXBseUFscGhhOyB9CiAKICAgICAgICAgdm9pZCBzZXRIYXNBbHBoYShib29sIGFscGhhKTsK
ICAgICAgICAgdm9pZCBzZXRPcmlnaW5hbEZyYW1lUmVjdChjb25zdCBJbnRSZWN0Jik7CiAgICAg
ICAgIHZvaWQgc2V0U3RhdHVzKEZyYW1lU3RhdHVzIHN0YXR1cyk7CiAgICAgICAgIHZvaWQgc2V0
RHVyYXRpb24odW5zaWduZWQgZHVyYXRpb24pIHsgbV9kdXJhdGlvbiA9IGR1cmF0aW9uOyB9CiAg
ICAgICAgIHZvaWQgc2V0RGlzcG9zYWxNZXRob2QoRnJhbWVEaXNwb3NhbE1ldGhvZCBtZXRob2Qp
IHsgbV9kaXNwb3NhbE1ldGhvZCA9IG1ldGhvZDsgfQotICAgICAgICB2b2lkIHNldFByZW11bHRp
cGx5QWxwaGEoYm9vbCBwcmVtdWx0aXBseUFscGhhKSB7IG1fcHJlbXVsdGlwbHlBbHBoYSA9IHBy
ZW11bHRpcGx5QWxwaGE7IH0KIAogICAgICAgICBpbmxpbmUgUkdCQTMyKiBwaXhlbEF0KGludCB4
LCBpbnQgeSkKICAgICAgICAgewpAQCAtMTQ2LDcgKzE0Myw2IEBAIHVzaW5nIENvbG9yUHJvZmls
ZSA9IFZlY3RvcjxjaGFyPjsKICAgICAgICAgRnJhbWVTdGF0dXMgbV9zdGF0dXM7CiAgICAgICAg
IHVuc2lnbmVkIG1fZHVyYXRpb247CiAgICAgICAgIEZyYW1lRGlzcG9zYWxNZXRob2QgbV9kaXNw
b3NhbE1ldGhvZDsKLSAgICAgICAgYm9vbCBtX3ByZW11bHRpcGx5QWxwaGE7CiAgICAgfTsKIAog
ICAgIC8vIEltYWdlRGVjb2RlciBpcyBhIGJhc2UgZm9yIGFsbCBmb3JtYXQtc3BlY2lmaWMgZGVj
b2RlcnMKQEAgLTE3NCw2ICsxNzAsOCBAQCB1c2luZyBDb2xvclByb2ZpbGUgPSBWZWN0b3I8Y2hh
cj47CiAgICAgICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VEZWNvZGVyPiBjcmVhdGUo
Y29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhLCBJbWFnZVNvdXJjZTo6QWxwaGFPcHRpb24sIEltYWdl
U291cmNlOjpHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CiAKICAgICAgICAgdmlydHVhbCBT
dHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdCA9IDA7CisgICAgICAgIAorICAgICAgICBi
b29sIHByZW11bHRpcGx5QWxwaGEoKSBjb25zdCB7IHJldHVybiBtX3ByZW11bHRpcGx5QWxwaGE7
IH0KIAogICAgICAgICBib29sIGlzQWxsRGF0YVJlY2VpdmVkKCkgY29uc3QgeyByZXR1cm4gbV9p
c0FsbERhdGFSZWNlaXZlZDsgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcAko
cmV2aXNpb24gMjA1ODQxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcwLDEwICs3MCw4
IEBAIEltYWdlRnJhbWUqIEJNUEltYWdlRGVjb2Rlcjo6ZnJhbWVCdWZmZXIKICAgICBpZiAoaW5k
ZXgpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgaWYgKG1fZnJhbWVCdWZmZXJDYWNoZS5pc0Vt
cHR5KCkpIHsKKyAgICBpZiAobV9mcmFtZUJ1ZmZlckNhY2hlLmlzRW1wdHkoKSkKICAgICAgICAg
bV9mcmFtZUJ1ZmZlckNhY2hlLnJlc2l6ZSgxKTsKLSAgICAgICAgbV9mcmFtZUJ1ZmZlckNhY2hl
LmZpcnN0KCkuc2V0UHJlbXVsdGlwbHlBbHBoYShtX3ByZW11bHRpcGx5QWxwaGEpOwotICAgIH0K
IAogICAgIEltYWdlRnJhbWUqIGJ1ZmZlciA9ICZtX2ZyYW1lQnVmZmVyQ2FjaGUuZmlyc3QoKTsK
ICAgICBpZiAoYnVmZmVyLT5zdGF0dXMoKSAhPSBJbWFnZUZyYW1lOjpGcmFtZUNvbXBsZXRlKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdl
UmVhZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9ibXAvQk1QSW1hZ2VSZWFkZXIuY3BwCShyZXZpc2lvbiAyMDU4NDEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VSZWFkZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03OCwxMiArNzgsMTAgQEAgYm9vbCBCTVBJbWFnZVJlYWRlcjo6
ZGVjb2RlQk1QKGJvb2wgb25seQogICAgIC8vIEluaXRpYWxpemUgdGhlIGZyYW1lYnVmZmVyIGlm
IG5lZWRlZC4KICAgICBBU1NFUlQobV9idWZmZXIpOyAgLy8gUGFyZW50IHNob3VsZCBzZXQgdGhp
cyBiZWZvcmUgYXNraW5nIHVzIHRvIGRlY29kZSEKICAgICBpZiAobV9idWZmZXItPnN0YXR1cygp
ID09IEltYWdlRnJhbWU6OkZyYW1lRW1wdHkpIHsKLSAgICAgICAgaWYgKCFtX2J1ZmZlci0+c2V0
U2l6ZShtX3BhcmVudC0+c2l6ZSgpKSkKKyAgICAgICAgaWYgKCFtX2J1ZmZlci0+aW5pdGlhbGl6
ZUJhY2tpbmdTdG9yZShtX3BhcmVudC0+c2l6ZSgpLCBtX3BhcmVudC0+cHJlbXVsdGlwbHlBbHBo
YSgpKSkKICAgICAgICAgICAgIHJldHVybiBtX3BhcmVudC0+c2V0RmFpbGVkKCk7IC8vIFVuYWJs
ZSB0byBhbGxvY2F0ZS4KKwogICAgICAgICBtX2J1ZmZlci0+c2V0U3RhdHVzKEltYWdlRnJhbWU6
OkZyYW1lUGFydGlhbCk7Ci0gICAgICAgIC8vIHNldFNpemUoKSBjYWxscyBlcmFzZUFSR0IoKSwg
d2hpY2ggcmVzZXRzIHRoZSBhbHBoYSBmbGFnLCBzbyB3ZSBmb3JjZQotICAgICAgICAvLyBpdCBi
YWNrIHRvIGZhbHNlIGhlcmUuICBXZSdsbCBzZXQgaXQgdHJ1ZSBiZWxvdyBpbiBhbGwgY2FzZXMg
d2hlcmUKLSAgICAgICAgLy8gdGhlc2UgMHMgY291bGQgYWN0dWFsbHkgc2hvdyB0aHJvdWdoLgog
ICAgICAgICBtX2J1ZmZlci0+c2V0SGFzQWxwaGEoZmFsc2UpOwogCiAgICAgICAgIGlmICghbV9p
c1RvcERvd24pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9n
aWYvR0lGSW1hZ2VEZWNvZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcAkocmV2aXNpb24gMjA1
ODQxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRklt
YWdlRGVjb2Rlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyMSwxMCArMzIxLDcgQEAgdm9pZCBH
SUZJbWFnZURlY29kZXI6OmRlY29kZSh1bnNpZ25lZCBoYQogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgY29uc3Qgc2l6ZV90IG9sZFNpemUgPSBtX2ZyYW1lQnVmZmVyQ2FjaGUuc2l6ZSgp
OwogICAgIG1fZnJhbWVCdWZmZXJDYWNoZS5yZXNpemUobV9yZWFkZXItPmltYWdlc0NvdW50KCkp
OwotICAgIGZvciAoc2l6ZV90IGkgPSBvbGRTaXplOyBpIDwgbV9yZWFkZXItPmltYWdlc0NvdW50
KCk7ICsraSkKLSAgICAgICAgbV9mcmFtZUJ1ZmZlckNhY2hlW2ldLnNldFByZW11bHRpcGx5QWxw
aGEobV9wcmVtdWx0aXBseUFscGhhKTsKIAogICAgIGlmIChxdWVyeSA9PSBHSUZGcmFtZUNvdW50
UXVlcnkpCiAgICAgICAgIHJldHVybjsKQEAgLTM2MSw3ICszNTgsNyBAQCBib29sIEdJRkltYWdl
RGVjb2Rlcjo6aW5pdEZyYW1lQnVmZmVyKHVuCiAKICAgICBpZiAoIWZyYW1lSW5kZXgpIHsKICAg
ICAgICAgLy8gVGhpcyBpcyB0aGUgZmlyc3QgZnJhbWUsIHNvIHdlJ3JlIG5vdCByZWx5aW5nIG9u
IGFueSBwcmV2aW91cyBkYXRhLgotICAgICAgICBpZiAoIWJ1ZmZlci0+c2V0U2l6ZShzY2FsZWRT
aXplKCkpKQorICAgICAgICBpZiAoIWJ1ZmZlci0+aW5pdGlhbGl6ZUJhY2tpbmdTdG9yZShzY2Fs
ZWRTaXplKCksIG1fcHJlbXVsdGlwbHlBbHBoYSkpCiAgICAgICAgICAgICByZXR1cm4gc2V0RmFp
bGVkKCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gVGhlIHN0YXJ0aW5nIHN0YXRlIGZvciB0
aGlzIGZyYW1lIGRlcGVuZHMgb24gdGhlIHByZXZpb3VzIGZyYW1lJ3MKQEAgLTM4Miw3ICszNzks
NyBAQCBib29sIEdJRkltYWdlRGVjb2Rlcjo6aW5pdEZyYW1lQnVmZmVyKHVuCiAKICAgICAgICAg
aWYgKChwcmV2TWV0aG9kID09IEltYWdlRnJhbWU6OkRpc3Bvc2VOb3RTcGVjaWZpZWQpIHx8IChw
cmV2TWV0aG9kID09IEltYWdlRnJhbWU6OkRpc3Bvc2VLZWVwKSkgewogICAgICAgICAgICAgLy8g
UHJlc2VydmUgdGhlIGxhc3QgZnJhbWUgYXMgdGhlIHN0YXJ0aW5nIHN0YXRlIGZvciB0aGlzIGZy
YW1lLgotICAgICAgICAgICAgaWYgKCFidWZmZXItPmNvcHlCaXRtYXBEYXRhKCpwcmV2QnVmZmVy
KSkKKyAgICAgICAgICAgIGlmICghYnVmZmVyLT5pbml0aWFsaXplQmFja2luZ1N0b3JlKHByZXZC
dWZmZXItPmJhY2tTdG9yZSgpKSkKICAgICAgICAgICAgICAgICByZXR1cm4gc2V0RmFpbGVkKCk7
CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvLyBXZSB3YW50IHRvIGNsZWFyIHRoZSBw
cmV2aW91cyBmcmFtZSB0byB0cmFuc3BhcmVudCwgd2l0aG91dApAQCAtMzkyLDExICszODksMTEg
QEAgYm9vbCBHSUZJbWFnZURlY29kZXI6OmluaXRGcmFtZUJ1ZmZlcih1bgogICAgICAgICAgICAg
aWYgKCFmcmFtZUluZGV4IHx8IHByZXZSZWN0LmNvbnRhaW5zKEludFJlY3QoSW50UG9pbnQoKSwg
c2NhbGVkU2l6ZSgpKSkpIHsKICAgICAgICAgICAgICAgICAvLyBDbGVhcmluZyB0aGUgZmlyc3Qg
ZnJhbWUsIG9yIGEgZnJhbWUgdGhlIHNpemUgb2YgdGhlIHdob2xlCiAgICAgICAgICAgICAgICAg
Ly8gaW1hZ2UsIHJlc3VsdHMgaW4gYSBjb21wbGV0ZWx5IGVtcHR5IGltYWdlLgotICAgICAgICAg
ICAgICAgIGlmICghYnVmZmVyLT5zZXRTaXplKGJ1ZmZlclNpemUpKQorICAgICAgICAgICAgICAg
IGlmICghYnVmZmVyLT5pbml0aWFsaXplQmFja2luZ1N0b3JlKGJ1ZmZlclNpemUsIG1fcHJlbXVs
dGlwbHlBbHBoYSkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZXRGYWlsZWQoKTsKICAg
ICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgLy8gQ29weSB0aGUgd2hvbGUgcHJl
dmlvdXMgYnVmZmVyLCB0aGVuIGNsZWFyIGp1c3QgaXRzIGZyYW1lLgotICAgICAgICAgICAgICAg
IGlmICghYnVmZmVyLT5jb3B5Qml0bWFwRGF0YSgqcHJldkJ1ZmZlcikpCisgICAgICAgICAgICAg
ICAgaWYgKCFidWZmZXItPmluaXRpYWxpemVCYWNraW5nU3RvcmUocHJldkJ1ZmZlci0+YmFja2lu
Z1N0b3JlKCkpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2V0RmFpbGVkKCk7CiAgICAg
ICAgICAgICAgICAgYnVmZmVyLT56ZXJvRmlsbEZyYW1lUmVjdChwcmV2UmVjdCk7CiAgICAgICAg
ICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28v
SUNPSW1hZ2VEZWNvZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcAkocmV2aXNpb24gMjA1ODQx
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdl
RGVjb2Rlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk4LDExICs5OCw4IEBAIGJvb2wgSUNPSW1h
Z2VEZWNvZGVyOjpzZXRTaXplKGNvbnN0IEludFMKIHNpemVfdCBJQ09JbWFnZURlY29kZXI6OmZy
YW1lQ291bnQoKQogewogICAgIGRlY29kZSgwLCB0cnVlKTsKLSAgICBpZiAobV9mcmFtZUJ1ZmZl
ckNhY2hlLmlzRW1wdHkoKSkgeworICAgIGlmIChtX2ZyYW1lQnVmZmVyQ2FjaGUuaXNFbXB0eSgp
KQogICAgICAgICBtX2ZyYW1lQnVmZmVyQ2FjaGUucmVzaXplKG1fZGlyRW50cmllcy5zaXplKCkp
OwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZGlyRW50cmllcy5zaXplKCk7ICsr
aSkKLSAgICAgICAgICAgIG1fZnJhbWVCdWZmZXJDYWNoZVtpXS5zZXRQcmVtdWx0aXBseUFscGhh
KG1fcHJlbXVsdGlwbHlBbHBoYSk7Ci0gICAgfQogICAgIC8vIENBVVRJT046IFdlIG11c3Qgbm90
IHJlc2l6ZSBtX2ZyYW1lQnVmZmVyQ2FjaGUgYWdhaW4gYWZ0ZXIgdGhpcywgYXMKICAgICAvLyBk
ZWNvZGVBdEluZGV4KCkgbWF5IGdpdmUgYSBCTVBJbWFnZVJlYWRlciBhIHBvaW50ZXIgdG8gb25l
IG9mIHRoZQogICAgIC8vIGVudHJpZXMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rl
ci5jcHAJKHJldmlzaW9uIDIwNTg0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUz
MywxMCArNTMzLDggQEAgSW1hZ2VGcmFtZSogSlBFR0ltYWdlRGVjb2Rlcjo6ZnJhbWVCdWZmZQog
ICAgIGlmIChpbmRleCkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBpZiAobV9mcmFtZUJ1ZmZl
ckNhY2hlLmlzRW1wdHkoKSkgeworICAgIGlmIChtX2ZyYW1lQnVmZmVyQ2FjaGUuaXNFbXB0eSgp
KQogICAgICAgICBtX2ZyYW1lQnVmZmVyQ2FjaGUucmVzaXplKDEpOwotICAgICAgICBtX2ZyYW1l
QnVmZmVyQ2FjaGVbMF0uc2V0UHJlbXVsdGlwbHlBbHBoYShtX3ByZW11bHRpcGx5QWxwaGEpOwot
ICAgIH0KIAogICAgIEltYWdlRnJhbWUmIGZyYW1lID0gbV9mcmFtZUJ1ZmZlckNhY2hlWzBdOwog
ICAgIGlmIChmcmFtZS5zdGF0dXMoKSAhPSBJbWFnZUZyYW1lOjpGcmFtZUNvbXBsZXRlKQpAQCAt
NjE3LDcgKzYxNSw3IEBAIGJvb2wgSlBFR0ltYWdlRGVjb2Rlcjo6b3V0cHV0U2NhbmxpbmVzKCkK
ICAgICAvLyBJbml0aWFsaXplIHRoZSBmcmFtZWJ1ZmZlciBpZiBuZWVkZWQuCiAgICAgSW1hZ2VG
cmFtZSYgYnVmZmVyID0gbV9mcmFtZUJ1ZmZlckNhY2hlWzBdOwogICAgIGlmIChidWZmZXIuc3Rh
dHVzKCkgPT0gSW1hZ2VGcmFtZTo6RnJhbWVFbXB0eSkgewotICAgICAgICBpZiAoIWJ1ZmZlci5z
ZXRTaXplKHNjYWxlZFNpemUoKSkpCisgICAgICAgIGlmICghYnVmZmVyLmluaXRpYWxpemVCYWNr
aW5nU3RvcmUoc2NhbGVkU2l6ZSgpLCBtX3ByZW11bHRpcGx5QWxwaGEpKQogICAgICAgICAgICAg
cmV0dXJuIHNldEZhaWxlZCgpOwogICAgICAgICBidWZmZXIuc2V0U3RhdHVzKEltYWdlRnJhbWU6
OkZyYW1lUGFydGlhbCk7CiAgICAgICAgIC8vIFRoZSBidWZmZXIgaXMgdHJhbnNwYXJlbnQgb3V0
c2lkZSB0aGUgZGVjb2RlZCBhcmVhIHdoaWxlIHRoZSBpbWFnZSBpcwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BO
R0ltYWdlRGVjb2Rlci5jcHAJKHJldmlzaW9uIDIwNTg0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNTcsMTAgKzI1Nyw4IEBAIEltYWdlRnJhbWUqIFBOR0ltYWdlRGVjb2Rlcjo6ZnJh
bWVCdWZmZXIKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAjZW5kaWYKIAotICAgIGlmIChtX2Zy
YW1lQnVmZmVyQ2FjaGUuaXNFbXB0eSgpKSB7CisgICAgaWYgKG1fZnJhbWVCdWZmZXJDYWNoZS5p
c0VtcHR5KCkpCiAgICAgICAgIG1fZnJhbWVCdWZmZXJDYWNoZS5yZXNpemUoMSk7Ci0gICAgICAg
IG1fZnJhbWVCdWZmZXJDYWNoZVswXS5zZXRQcmVtdWx0aXBseUFscGhhKG1fcHJlbXVsdGlwbHlB
bHBoYSk7Ci0gICAgfQogCiAgICAgSW1hZ2VGcmFtZSYgZnJhbWUgPSBtX2ZyYW1lQnVmZmVyQ2Fj
aGVbaW5kZXhdOwogICAgIGlmIChmcmFtZS5zdGF0dXMoKSAhPSBJbWFnZUZyYW1lOjpGcmFtZUNv
bXBsZXRlKQpAQCAtNDExLDI5ICs0MDksNiBAQCB2b2lkIFBOR0ltYWdlRGVjb2Rlcjo6aGVhZGVy
QXZhaWxhYmxlKCkKICAgICB9CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBzZXRQaXhlbFJHQihS
R0JBMzIqIGRlc3QsIHBuZ19ieXRlcCBwaXhlbCkKLXsKLSAgICAqZGVzdCA9IDB4RkYwMDAwMDBV
IHwgcGl4ZWxbMF0gPDwgMTYgfCBwaXhlbFsxXSA8PCA4IHwgcGl4ZWxbMl07Ci19Ci0KLXN0YXRp
YyBpbmxpbmUgdm9pZCBzZXRQaXhlbFJHQkEoUkdCQTMyKiBkZXN0LCBwbmdfYnl0ZXAgcGl4ZWws
IHVuc2lnbmVkIGNoYXImIG5vblRyaXZpYWxBbHBoYU1hc2spCi17Ci0gICAgdW5zaWduZWQgY2hh
ciBhID0gcGl4ZWxbM107Ci0gICAgKmRlc3QgPSBhIDw8IDI0IHwgcGl4ZWxbMF0gPDwgMTYgfCBw
aXhlbFsxXSA8PCA4IHwgcGl4ZWxbMl07Ci0gICAgbm9uVHJpdmlhbEFscGhhTWFzayB8PSAoMjU1
IC0gYSk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgdm9pZCBzZXRQaXhlbFByZW11bHRpcGxpZWRSR0JB
KFJHQkEzMiogZGVzdCwgcG5nX2J5dGVwIHBpeGVsLCB1bnNpZ25lZCBjaGFyJiBub25Ucml2aWFs
QWxwaGFNYXNrKQotewotICAgIHVuc2lnbmVkIGNoYXIgYSA9IHBpeGVsWzNdOwotICAgIHVuc2ln
bmVkIGNoYXIgciA9IGZhc3REaXZpZGVCeTI1NShwaXhlbFswXSAqIGEpOwotICAgIHVuc2lnbmVk
IGNoYXIgZyA9IGZhc3REaXZpZGVCeTI1NShwaXhlbFsxXSAqIGEpOwotICAgIHVuc2lnbmVkIGNo
YXIgYiA9IGZhc3REaXZpZGVCeTI1NShwaXhlbFsyXSAqIGEpOwotCi0gICAgKmRlc3QgPSBhIDw8
IDI0IHwgciA8PCAxNiB8IGcgPDwgOCB8IGI7Ci0gICAgbm9uVHJpdmlhbEFscGhhTWFzayB8PSAo
MjU1IC0gYSk7Ci19Ci0KIHZvaWQgUE5HSW1hZ2VEZWNvZGVyOjpyb3dBdmFpbGFibGUodW5zaWdu
ZWQgY2hhciogcm93QnVmZmVyLCB1bnNpZ25lZCByb3dJbmRleCwgaW50KQogewogICAgIGlmICht
X2ZyYW1lQnVmZmVyQ2FjaGUuaXNFbXB0eSgpKQpAQCAtNDQ3LDcgKzQyMiw3IEBAIHZvaWQgUE5H
SW1hZ2VEZWNvZGVyOjpyb3dBdmFpbGFibGUodW5zaWcKICAgICBJbWFnZUZyYW1lJiBidWZmZXIg
PSBtX2ZyYW1lQnVmZmVyQ2FjaGVbbV9jdXJyZW50RnJhbWVdOwogICAgIGlmIChidWZmZXIuc3Rh
dHVzKCkgPT0gSW1hZ2VGcmFtZTo6RnJhbWVFbXB0eSkgewogICAgICAgICBwbmdfc3RydWN0cCBw
bmcgPSBtX3JlYWRlci0+cG5nUHRyKCk7Ci0gICAgICAgIGlmICghYnVmZmVyLnNldFNpemUoc2Nh
bGVkU2l6ZSgpKSkgeworICAgICAgICBpZiAoIWJ1ZmZlci5pbml0aWFsaXplQmFja2luZ1N0b3Jl
KHNjYWxlZFNpemUoKSwgbV9wcmVtdWx0aXBseUFscGhhKSkgewogICAgICAgICAgICAgbG9uZ2pt
cChKTVBCVUYocG5nKSwgMSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTU0
NSwyMCArNTIwLDE3IEBAIHZvaWQgUE5HSW1hZ2VEZWNvZGVyOjpyb3dBdmFpbGFibGUodW5zaWcK
ICAgICB7CiAgICAgICAgIHBuZ19ieXRlcCBwaXhlbCA9IHJvdzsKICAgICAgICAgaWYgKGhhc0Fs
cGhhKSB7Ci0gICAgICAgICAgICBpZiAoYnVmZmVyLnByZW11bHRpcGx5QWxwaGEoKSkgewotICAg
ICAgICAgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgd2lkdGg7ICsreCwgcGl4ZWwgKz0gNCkK
LSAgICAgICAgICAgICAgICAgICAgc2V0UGl4ZWxQcmVtdWx0aXBsaWVkUkdCQShhZGRyZXNzKyss
IHBpeGVsLCBub25Ucml2aWFsQWxwaGFNYXNrKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCB3aWR0aDsgKyt4LCBwaXhlbCArPSA0KQot
ICAgICAgICAgICAgICAgICAgICBzZXRQaXhlbFJHQkEoYWRkcmVzcysrLCBwaXhlbCwgbm9uVHJp
dmlhbEFscGhhTWFzayk7CisgICAgICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IHdpZHRoOyAr
K3gsIHBpeGVsICs9IDQpIHsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBhbHBoYSA9IHBpeGVs
WzNdOworICAgICAgICAgICAgICAgIGJ1ZmZlci5zZXRQaXhlbChhZGRyZXNzKyssIHBpeGVsWzBd
LCBwaXhlbFsxXSwgcGl4ZWxbMl0sIGFscGhhKTsKKyAgICAgICAgICAgICAgICBub25Ucml2aWFs
QWxwaGFNYXNrIHw9ICgyNTUgLSBhbHBoYSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IHdpZHRoOyArK3gsIHBpeGVsICs9
IDMpCi0gICAgICAgICAgICAgICAgc2V0UGl4ZWxSR0IoYWRkcmVzcysrLCBwaXhlbCk7CisgICAg
ICAgICAgICAgICAgYWRkcmVzcysrID0gbWFrZVJHQihwaXhlbFswXSwgcGl4ZWxbMV0sIHBpeGVs
WzJdKTsKICAgICAgICAgfQogICAgIH0KIAotCiAgICAgaWYgKG5vblRyaXZpYWxBbHBoYU1hc2sg
JiYgIWJ1ZmZlci5oYXNBbHBoYSgpKQogICAgICAgICBidWZmZXIuc2V0SGFzQWxwaGEodHJ1ZSk7
CiB9CkBAIC02MTgsOCArNTkwLDYgQEAgdm9pZCBQTkdJbWFnZURlY29kZXI6OnJlYWRDaHVua3Mo
cG5nX3VuawogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIG1fZnJhbWVCdWZmZXJDYWNo
ZS5yZXNpemUobV9mcmFtZUNvdW50KTsKLSAgICAgICAgZm9yIChhdXRvJiBpbWFnZUZyYW1lIDog
bV9mcmFtZUJ1ZmZlckNhY2hlKQotICAgICAgICAgICAgaW1hZ2VGcmFtZS5zZXRQcmVtdWx0aXBs
eUFscGhhKG1fcHJlbXVsdGlwbHlBbHBoYSk7CiAgICAgfSBlbHNlIGlmICghbWVtY21wKGNodW5r
LT5uYW1lLCAiZmNUTCIsIDQpICYmIGNodW5rLT5zaXplID09IDI2KSB7CiAgICAgICAgIGlmICht
X2hhc0luZm8gJiYgIW1faXNBbmltYXRlZCkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTY2MSwx
MCArNjMxLDggQEAgdm9pZCBQTkdJbWFnZURlY29kZXI6OnJlYWRDaHVua3MocG5nX3VuawogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKG1fZnJhbWVCdWZmZXJD
YWNoZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgaWYgKG1fZnJhbWVCdWZmZXJDYWNoZS5pc0VtcHR5
KCkpCiAgICAgICAgICAgICBtX2ZyYW1lQnVmZmVyQ2FjaGUucmVzaXplKDEpOwotICAgICAgICAg
ICAgbV9mcmFtZUJ1ZmZlckNhY2hlWzBdLnNldFByZW11bHRpcGx5QWxwaGEobV9wcmVtdWx0aXBs
eUFscGhhKTsKLSAgICAgICAgfQogCiAgICAgICAgIGlmIChtX2N1cnJlbnRGcmFtZSA8IG1fZnJh
bWVCdWZmZXJDYWNoZS5zaXplKCkpIHsKICAgICAgICAgICAgIEltYWdlRnJhbWUmIGJ1ZmZlciA9
IG1fZnJhbWVCdWZmZXJDYWNoZVttX2N1cnJlbnRGcmFtZV07CkBAIC04MTMsNyArNzgxLDcgQEAg
dm9pZCBQTkdJbWFnZURlY29kZXI6OmluaXRGcmFtZUJ1ZmZlcihzaQogCiAgICAgaWYgKHByZXZN
ZXRob2QgPT0gSW1hZ2VGcmFtZTo6RGlzcG9zZUtlZXApIHsKICAgICAgICAgLy8gUHJlc2VydmUg
dGhlIGxhc3QgZnJhbWUgYXMgdGhlIHN0YXJ0aW5nIHN0YXRlIGZvciB0aGlzIGZyYW1lLgotICAg
ICAgICBidWZmZXIuY29weUJpdG1hcERhdGEoKnByZXZCdWZmZXIpOworICAgICAgICBidWZmZXIu
aW5pdGlhbGl6ZUJhY2tpbmdTdG9yZShwcmV2QnVmZmVyLT5iYWNraW5nU3RvcmUoKSk7CiAgICAg
fSBlbHNlIHsKICAgICAgICAgLy8gV2Ugd2FudCB0byBjbGVhciB0aGUgcHJldmlvdXMgZnJhbWUg
dG8gdHJhbnNwYXJlbnQsIHdpdGhvdXQKICAgICAgICAgLy8gYWZmZWN0aW5nIHBpeGVscyBpbiB0
aGUgaW1hZ2Ugb3V0c2lkZSBvZiB0aGUgZnJhbWUuCkBAIC04MjQsNyArNzkyLDcgQEAgdm9pZCBQ
TkdJbWFnZURlY29kZXI6OmluaXRGcmFtZUJ1ZmZlcihzaQogICAgICAgICAgICAgYnVmZmVyLnpl
cm9GaWxsUGl4ZWxEYXRhKCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvLyBDb3B5
IHRoZSB3aG9sZSBwcmV2aW91cyBidWZmZXIsIHRoZW4gY2xlYXIganVzdCBpdHMgZnJhbWUuCi0g
ICAgICAgICAgICBidWZmZXIuY29weUJpdG1hcERhdGEoKnByZXZCdWZmZXIpOworICAgICAgICAg
ICAgYnVmZmVyLmluaXRpYWxpemVCYWNraW5nU3RvcmUocHJldkJ1ZmZlci0+YmFja2luZ1N0b3Jl
KCkpOwogICAgICAgICAgICAgYnVmZmVyLnplcm9GaWxsRnJhbWVSZWN0KHByZXZSZWN0KTsKICAg
ICAgICAgfQogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcAkocmV2
aXNpb24gMjA1ODQxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
d2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzgsMTAgKzc4LDgg
QEAgSW1hZ2VGcmFtZSogV0VCUEltYWdlRGVjb2Rlcjo6ZnJhbWVCdWZmZQogICAgIGlmIChpbmRl
eCkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBpZiAobV9mcmFtZUJ1ZmZlckNhY2hlLmlzRW1w
dHkoKSkgeworICAgIGlmIChtX2ZyYW1lQnVmZmVyQ2FjaGUuaXNFbXB0eSgpKQogICAgICAgICBt
X2ZyYW1lQnVmZmVyQ2FjaGUucmVzaXplKDEpOwotICAgICAgICBtX2ZyYW1lQnVmZmVyQ2FjaGVb
MF0uc2V0UHJlbXVsdGlwbHlBbHBoYShtX3ByZW11bHRpcGx5QWxwaGEpOwotICAgIH0KIAogICAg
IEltYWdlRnJhbWUmIGZyYW1lID0gbV9mcmFtZUJ1ZmZlckNhY2hlWzBdOwogICAgIGlmIChmcmFt
ZS5zdGF0dXMoKSAhPSBJbWFnZUZyYW1lOjpGcmFtZUNvbXBsZXRlKQpAQCAtMTI4LDcgKzEyNiw3
IEBAIGJvb2wgV0VCUEltYWdlRGVjb2Rlcjo6ZGVjb2RlKGJvb2wgb25seVMKICAgICBBU1NFUlQo
YnVmZmVyLnN0YXR1cygpICE9IEltYWdlRnJhbWU6OkZyYW1lQ29tcGxldGUpOwogCiAgICAgaWYg
KGJ1ZmZlci5zdGF0dXMoKSA9PSBJbWFnZUZyYW1lOjpGcmFtZUVtcHR5KSB7Ci0gICAgICAgIGlm
ICghYnVmZmVyLnNldFNpemUoc2l6ZSgpKSkKKyAgICAgICAgaWYgKCFidWZmZXIuaW5pdGlhbGl6
ZUJhY2tpbmdTdG9yZShzaXplKCksIG1fcHJlbXVsdGlwbHlBbHBoYSkpCiAgICAgICAgICAgICBy
ZXR1cm4gc2V0RmFpbGVkKCk7CiAgICAgICAgIGJ1ZmZlci5zZXRTdGF0dXMoSW1hZ2VGcmFtZTo6
RnJhbWVQYXJ0aWFsKTsKICAgICAgICAgYnVmZmVyLnNldEhhc0FscGhhKG1faGFzQWxwaGEpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>288696</attachid>
            <date>2016-09-13 10:43:39 -0700</date>
            <delta_ts>2016-09-13 10:51:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159721-20160913104104.patch</filename>
            <type>text/plain</type>
            <size>20949</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNTg2MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUxIEBACisyMDE2LTA5LTEzICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgR2V0IHJpZCBv
ZiB0aGUgbV9wcmVtdWx0aXBseUFscGhhIGZsYWcgb2YgdGhlIEltYWdlRnJhbWUgY2xhc3MKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTcyMQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgZmxhZyB3
YXMgb25seSBuZWVkZWQgd2hlbiBjYWxsaW5nIEltYWdlQmFja2luZ1N0b3JlOjpjcmVhdGUoKSBp
biAKKyAgICAgICAgSW1hZ2VGcmFtZTo6c2V0U2l6ZSgpLiBJbnN0ZWFkIHdlIGNhbiBwYXNzIElt
YWdlRGVjb2Rlcjo6bV9wcmVtdWx0aXBseUFscGhhIAorICAgICAgICB0byBJbWFnZUZyYW1lOjpz
ZXRTaXplKCksIHdoaWNoIHNob3VsZCBiZSByZW5hbWVkIEltYWdlRnJhbWU6OmluaXRpYWxpemVC
YWNraW5nU3RvcmUoKS4KKyAgICAgICAgVGhlIHBhc3NlZCBwcmVtdWx0aXBseUFscGhhIGNhbiB0
aGVuIGJlIHBhc3NlZCB0byBJbWFnZUJhY2tpbmdTdG9yZTo6Y3JlYXRlKCkuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VGcmFtZTo6SW1hZ2VGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZy
YW1lOjpvcGVyYXRvcj0pOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6aW5pdGlhbGl6
ZUJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpjb3B5Qml0bWFw
RGF0YSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpzZXRTaXplKTog
RGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OmRpc3Bvc2FsTWV0aG9kKToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OnNldERpc3Bvc2FsTWV0aG9kKToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlRGVjb2Rlcjo6cHJlbXVsdGlwbHlBbHBoYSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZUZyYW1lOjpwcmVtdWx0aXBseUFscGhhKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlRnJhbWU6OnNldFByZW11bHRpcGx5QWxwaGEpOiBEZWxldGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Qk1QSW1hZ2VEZWNvZGVyOjpmcmFtZUJ1ZmZlckF0SW5kZXgpOgorICAgICAg
ICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpCTVBJbWFnZVJlYWRlcjo6ZGVjb2RlQk1QKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkdJRkltYWdlRGVjb2Rlcjo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkdJRklt
YWdlRGVjb2Rlcjo6aW5pdEZyYW1lQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklDT0lt
YWdlRGVjb2Rlcjo6ZnJhbWVDb3VudCk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpQRUdJbWFn
ZURlY29kZXI6OmZyYW1lQnVmZmVyQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpKUEVHSW1h
Z2VEZWNvZGVyOjpvdXRwdXRTY2FubGluZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UE5HSW1h
Z2VEZWNvZGVyOjpmcmFtZUJ1ZmZlckF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6UE5HSW1h
Z2VEZWNvZGVyOjpyb3dBdmFpbGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6UE5HSW1hZ2VEZWNv
ZGVyOjpyZWFkQ2h1bmtzKToKKyAgICAgICAgKFdlYkNvcmU6OlBOR0ltYWdlRGVjb2Rlcjo6aW5p
dEZyYW1lQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldFBpeGVsUkdCKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OnNldFBpeGVsUkdCQSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpzZXRQaXhlbFByZW11bHRpcGxpZWRSR0JBKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V0VCUEltYWdlRGVjb2Rlcjo6ZnJhbWVCdWZmZXJBdEluZGV4KToKKyAgICAgICAg
KFdlYkNvcmU6OldFQlBJbWFnZURlY29kZXI6OmRlY29kZSk6CisKIDIwMTYtMDktMTIgIFphbGFu
IEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBJbnB1dCB0eXBlIG9iamVjdCBh
bmQgdGhlIGFzc29jaWF0ZWQgcmVuZGVyIGNhbiBnbyBvdXQgb2Ygc3luYy4KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNv
ZGVyLmNwcAkocmV2aXNpb24gMjA1ODQxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMyLDcgKzEz
Miw2IEBAIEltYWdlRnJhbWU6OkltYWdlRnJhbWUoKQogICAgICwgbV9zdGF0dXMoRnJhbWVFbXB0
eSkKICAgICAsIG1fZHVyYXRpb24oMCkKICAgICAsIG1fZGlzcG9zYWxNZXRob2QoRGlzcG9zZU5v
dFNwZWNpZmllZCkKLSAgICAsIG1fcHJlbXVsdGlwbHlBbHBoYSh0cnVlKQogewogfSAKIApAQCAt
MTQxLDcgKzE0MCw3IEBAIEltYWdlRnJhbWUmIEltYWdlRnJhbWU6Om9wZXJhdG9yPShjb25zdCAK
ICAgICBpZiAodGhpcyA9PSAmb3RoZXIpCiAgICAgICAgIHJldHVybiAqdGhpczsKIAotICAgIGNv
cHlCaXRtYXBEYXRhKG90aGVyKTsKKyAgICBpbml0aWFsaXplQmFja2luZ1N0b3JlKG90aGVyLmJh
Y2tpbmdTdG9yZSgpKTsKICAgICBzZXRIYXNBbHBoYShvdGhlci5tX2hhc0FscGhhKTsKICAgICBz
ZXRTdGF0dXMob3RoZXIuc3RhdHVzKCkpOwogICAgIHNldER1cmF0aW9uKG90aGVyLmR1cmF0aW9u
KCkpOwpAQCAtMTc1LDIzICsxNzQsMjQgQEAgdm9pZCBJbWFnZUZyYW1lOjp6ZXJvRmlsbEZyYW1l
UmVjdChjb25zdAogICAgIHNldEhhc0FscGhhKHRydWUpOwogfQogCi1ib29sIEltYWdlRnJhbWU6
OmNvcHlCaXRtYXBEYXRhKGNvbnN0IEltYWdlRnJhbWUmIG90aGVyKQorYm9vbCBJbWFnZUZyYW1l
Ojppbml0aWFsaXplQmFja2luZ1N0b3JlKGNvbnN0IEltYWdlQmFja2luZ1N0b3JlKiBiYWNraW5n
U3RvcmUpCiB7Ci0gICAgaWYgKHRoaXMgPT0gJm90aGVyKQorICAgIGlmICghYmFja2luZ1N0b3Jl
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoYmFja2luZ1N0b3JlID09IHRoaXMt
PmJhY2tpbmdTdG9yZSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmIChvdGhlci5t
X2JhY2tpbmdTdG9yZSkKLSAgICAgICAgbV9iYWNraW5nU3RvcmUgPSBJbWFnZUJhY2tpbmdTdG9y
ZTo6Y3JlYXRlKCpvdGhlci5tX2JhY2tpbmdTdG9yZS5nZXQoKSk7Ci0gICAgZWxzZQotICAgICAg
ICBtX2JhY2tpbmdTdG9yZSA9IG51bGxwdHI7Ci0gICAgCi0gICAgcmV0dXJuIHRydWU7CisgICAg
bV9iYWNraW5nU3RvcmUgPSBJbWFnZUJhY2tpbmdTdG9yZTo6Y3JlYXRlKGJhY2tpbmdTdG9yZSk7
CisgICAgcmV0dXJuIG1fYmFja2luZ1N0b3JlICE9IG51bGxwdHI7CiB9CiAKLWJvb2wgSW1hZ2VG
cmFtZTo6c2V0U2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQorYm9vbCBJbWFnZUZyYW1lOjppbml0
aWFsaXplQmFja2luZ1N0b3JlKGNvbnN0IEludFNpemUmIHNpemUsIGJvb2wgcHJlbXVsdGlwbHlB
bHBoYSkKIHsKLSAgICBBU1NFUlQoIW1fYmFja2luZ1N0b3JlKTsKLSAgICBtX2JhY2tpbmdTdG9y
ZSA9IEltYWdlQmFja2luZ1N0b3JlOjpjcmVhdGUoc2l6ZSwgbV9wcmVtdWx0aXBseUFscGhhKTsK
KyAgICBpZiAoc2l6ZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIG1f
YmFja2luZ1N0b3JlID0gSW1hZ2VCYWNraW5nU3RvcmU6OmNyZWF0ZShzaXplLCBwcmVtdWx0aXBs
eUFscGhhKTsKICAgICByZXR1cm4gbV9iYWNraW5nU3RvcmUgIT0gbnVsbHB0cjsKIH0KIApJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1h
Z2VEZWNvZGVyLmgJKHJldmlzaW9uIDIwNTg0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oCSh3b3JraW5nIGNvcHkpCkBAIC03MiwxMiAr
NzIsNyBAQCB1c2luZyBDb2xvclByb2ZpbGUgPSBWZWN0b3I8Y2hhcj47CiAgICAgICAgIHZvaWQg
Y2xlYXJQaXhlbERhdGEoKTsKICAgICAgICAgdm9pZCB6ZXJvRmlsbFBpeGVsRGF0YSgpOwogICAg
ICAgICB2b2lkIHplcm9GaWxsRnJhbWVSZWN0KGNvbnN0IEludFJlY3QmKTsKLQotICAgICAgICAv
LyBNYWtlcyB0aGlzIGZyYW1lIGhhdmUgYW4gaW5kZXBlbmRlbnQgY29weSBvZiB0aGUgcHJvdmlk
ZWQgaW1hZ2UncwotICAgICAgICAvLyBwaXhlbCBkYXRhLCBzbyB0aGF0IG1vZGlmaWNhdGlvbnMg
aW4gb25lIGZyYW1lIGFyZSBub3QgcmVmbGVjdGVkIGluCi0gICAgICAgIC8vIHRoZSBvdGhlci4g
IFJldHVybnMgd2hldGhlciB0aGUgY29weSBzdWNjZWVkZWQuCi0gICAgICAgIGJvb2wgY29weUJp
dG1hcERhdGEoY29uc3QgSW1hZ2VGcmFtZSYpOwotCisgICAgICAgIAogICAgICAgICAvLyBDb3Bp
ZXMgdGhlIHBpeGVsIGRhdGEgYXQgWyhzdGFydFgsIHN0YXJ0WSksIChlbmRYLCBzdGFydFkpKSB0
byB0aGUKICAgICAgICAgLy8gc2FtZSBYLWNvb3JkaW5hdGVzIG9uIGVhY2ggc3Vic2VxdWVudCBy
b3cgdXAgdG8gYnV0IG5vdCBpbmNsdWRpbmcKICAgICAgICAgLy8gZW5kWS4KQEAgLTg2LDEwICs4
MSwxNCBAQCB1c2luZyBDb2xvclByb2ZpbGUgPSBWZWN0b3I8Y2hhcj47CiAgICAgICAgICAgICBt
X2JhY2tpbmdTdG9yZS0+cmVwZWF0Rmlyc3RSb3coSW50UmVjdChzdGFydFgsIHN0YXJ0WSwgZW5k
WCAtc3RhcnRYICwgZW5kWSAtIHN0YXJ0WSkpOwogICAgICAgICB9CiAKLSAgICAgICAgLy8gQWxs
b2NhdGVzIHNwYWNlIGZvciB0aGUgcGl4ZWwgZGF0YS4gIE11c3QgYmUgY2FsbGVkIGJlZm9yZSBh
bnkgcGl4ZWxzCi0gICAgICAgIC8vIGFyZSB3cml0dGVuLiAgTXVzdCBvbmx5IGJlIGNhbGxlZCBv
bmNlLiAgUmV0dXJucyB3aGV0aGVyIGFsbG9jYXRpb24KLSAgICAgICAgLy8gc3VjY2VlZGVkLgot
ICAgICAgICBib29sIHNldFNpemUoY29uc3QgSW50U2l6ZSYpOworICAgICAgICAvLyBNYWtlcyB0
aGlzIGZyYW1lIGhhdmUgYW4gaW5kZXBlbmRlbnQgY29weSBvZiB0aGUgcHJvdmlkZWQgaW1hZ2Un
cworICAgICAgICAvLyBwaXhlbCBkYXRhLCBzbyB0aGF0IG1vZGlmaWNhdGlvbnMgaW4gb25lIGZy
YW1lIGFyZSBub3QgcmVmbGVjdGVkIGluCisgICAgICAgIC8vIHRoZSBvdGhlci4gUmV0dXJucyB3
aGV0aGVyIHRoZSBjb3B5IHN1Y2NlZWRlZC4KKyAgICAgICAgYm9vbCBpbml0aWFsaXplQmFja2lu
Z1N0b3JlKGNvbnN0IEltYWdlQmFja2luZ1N0b3JlKik7CisKKyAgICAgICAgLy8gQWxsb2NhdGVz
IHNwYWNlIGZvciB0aGUgcGl4ZWwgZGF0YS4gUmV0dXJucyB3aGV0aGVyIGFsbG9jYXRpb24gc3Vj
Y2VlZGVkLgorICAgICAgICBib29sIGluaXRpYWxpemVCYWNraW5nU3RvcmUoY29uc3QgSW50U2l6
ZSYsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSk7CisKICAgICAgICAgSW50U2l6ZSBzaXplKCkgY29u
c3QgeyByZXR1cm4gbV9iYWNraW5nU3RvcmUgPyBtX2JhY2tpbmdTdG9yZS0+c2l6ZSgpIDogSW50
U2l6ZSgpOyB9CiAKICAgICAgICAgLy8gUmV0dXJucyBhIGNhbGxlci1vd25lZCBwb2ludGVyIHRv
IHRoZSB1bmRlcmx5aW5nIG5hdGl2ZSBpbWFnZSBkYXRhLgpAQCAtMTA1LDE0ICsxMDQsMTIgQEAg
dXNpbmcgQ29sb3JQcm9maWxlID0gVmVjdG9yPGNoYXI+OwogICAgICAgICBGcmFtZVN0YXR1cyBz
dGF0dXMoKSBjb25zdCB7IHJldHVybiBtX3N0YXR1czsgfQogICAgICAgICB1bnNpZ25lZCBkdXJh
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZHVyYXRpb247IH0KICAgICAgICAgRnJhbWVEaXNwb3Nh
bE1ldGhvZCBkaXNwb3NhbE1ldGhvZCgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcG9zYWxNZXRob2Q7
IH0KLSAgICAgICAgYm9vbCBwcmVtdWx0aXBseUFscGhhKCkgY29uc3QgeyByZXR1cm4gbV9wcmVt
dWx0aXBseUFscGhhOyB9CiAKICAgICAgICAgdm9pZCBzZXRIYXNBbHBoYShib29sIGFscGhhKTsK
ICAgICAgICAgdm9pZCBzZXRPcmlnaW5hbEZyYW1lUmVjdChjb25zdCBJbnRSZWN0Jik7CiAgICAg
ICAgIHZvaWQgc2V0U3RhdHVzKEZyYW1lU3RhdHVzIHN0YXR1cyk7CiAgICAgICAgIHZvaWQgc2V0
RHVyYXRpb24odW5zaWduZWQgZHVyYXRpb24pIHsgbV9kdXJhdGlvbiA9IGR1cmF0aW9uOyB9CiAg
ICAgICAgIHZvaWQgc2V0RGlzcG9zYWxNZXRob2QoRnJhbWVEaXNwb3NhbE1ldGhvZCBtZXRob2Qp
IHsgbV9kaXNwb3NhbE1ldGhvZCA9IG1ldGhvZDsgfQotICAgICAgICB2b2lkIHNldFByZW11bHRp
cGx5QWxwaGEoYm9vbCBwcmVtdWx0aXBseUFscGhhKSB7IG1fcHJlbXVsdGlwbHlBbHBoYSA9IHBy
ZW11bHRpcGx5QWxwaGE7IH0KIAogICAgICAgICBpbmxpbmUgUkdCQTMyKiBwaXhlbEF0KGludCB4
LCBpbnQgeSkKICAgICAgICAgewpAQCAtMTQ2LDcgKzE0Myw2IEBAIHVzaW5nIENvbG9yUHJvZmls
ZSA9IFZlY3RvcjxjaGFyPjsKICAgICAgICAgRnJhbWVTdGF0dXMgbV9zdGF0dXM7CiAgICAgICAg
IHVuc2lnbmVkIG1fZHVyYXRpb247CiAgICAgICAgIEZyYW1lRGlzcG9zYWxNZXRob2QgbV9kaXNw
b3NhbE1ldGhvZDsKLSAgICAgICAgYm9vbCBtX3ByZW11bHRpcGx5QWxwaGE7CiAgICAgfTsKIAog
ICAgIC8vIEltYWdlRGVjb2RlciBpcyBhIGJhc2UgZm9yIGFsbCBmb3JtYXQtc3BlY2lmaWMgZGVj
b2RlcnMKQEAgLTE3NCw2ICsxNzAsOCBAQCB1c2luZyBDb2xvclByb2ZpbGUgPSBWZWN0b3I8Y2hh
cj47CiAgICAgICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VEZWNvZGVyPiBjcmVhdGUo
Y29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhLCBJbWFnZVNvdXJjZTo6QWxwaGFPcHRpb24sIEltYWdl
U291cmNlOjpHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CiAKICAgICAgICAgdmlydHVhbCBT
dHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdCA9IDA7CisgICAgICAgIAorICAgICAgICBi
b29sIHByZW11bHRpcGx5QWxwaGEoKSBjb25zdCB7IHJldHVybiBtX3ByZW11bHRpcGx5QWxwaGE7
IH0KIAogICAgICAgICBib29sIGlzQWxsRGF0YVJlY2VpdmVkKCkgY29uc3QgeyByZXR1cm4gbV9p
c0FsbERhdGFSZWNlaXZlZDsgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcAko
cmV2aXNpb24gMjA1ODQxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcwLDEwICs3MCw4
IEBAIEltYWdlRnJhbWUqIEJNUEltYWdlRGVjb2Rlcjo6ZnJhbWVCdWZmZXIKICAgICBpZiAoaW5k
ZXgpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgaWYgKG1fZnJhbWVCdWZmZXJDYWNoZS5pc0Vt
cHR5KCkpIHsKKyAgICBpZiAobV9mcmFtZUJ1ZmZlckNhY2hlLmlzRW1wdHkoKSkKICAgICAgICAg
bV9mcmFtZUJ1ZmZlckNhY2hlLnJlc2l6ZSgxKTsKLSAgICAgICAgbV9mcmFtZUJ1ZmZlckNhY2hl
LmZpcnN0KCkuc2V0UHJlbXVsdGlwbHlBbHBoYShtX3ByZW11bHRpcGx5QWxwaGEpOwotICAgIH0K
IAogICAgIEltYWdlRnJhbWUqIGJ1ZmZlciA9ICZtX2ZyYW1lQnVmZmVyQ2FjaGUuZmlyc3QoKTsK
ICAgICBpZiAoYnVmZmVyLT5zdGF0dXMoKSAhPSBJbWFnZUZyYW1lOjpGcmFtZUNvbXBsZXRlKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdl
UmVhZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9ibXAvQk1QSW1hZ2VSZWFkZXIuY3BwCShyZXZpc2lvbiAyMDU4NDEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VSZWFkZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03OCwxMiArNzgsMTAgQEAgYm9vbCBCTVBJbWFnZVJlYWRlcjo6
ZGVjb2RlQk1QKGJvb2wgb25seQogICAgIC8vIEluaXRpYWxpemUgdGhlIGZyYW1lYnVmZmVyIGlm
IG5lZWRlZC4KICAgICBBU1NFUlQobV9idWZmZXIpOyAgLy8gUGFyZW50IHNob3VsZCBzZXQgdGhp
cyBiZWZvcmUgYXNraW5nIHVzIHRvIGRlY29kZSEKICAgICBpZiAobV9idWZmZXItPnN0YXR1cygp
ID09IEltYWdlRnJhbWU6OkZyYW1lRW1wdHkpIHsKLSAgICAgICAgaWYgKCFtX2J1ZmZlci0+c2V0
U2l6ZShtX3BhcmVudC0+c2l6ZSgpKSkKKyAgICAgICAgaWYgKCFtX2J1ZmZlci0+aW5pdGlhbGl6
ZUJhY2tpbmdTdG9yZShtX3BhcmVudC0+c2l6ZSgpLCBtX3BhcmVudC0+cHJlbXVsdGlwbHlBbHBo
YSgpKSkKICAgICAgICAgICAgIHJldHVybiBtX3BhcmVudC0+c2V0RmFpbGVkKCk7IC8vIFVuYWJs
ZSB0byBhbGxvY2F0ZS4KKwogICAgICAgICBtX2J1ZmZlci0+c2V0U3RhdHVzKEltYWdlRnJhbWU6
OkZyYW1lUGFydGlhbCk7Ci0gICAgICAgIC8vIHNldFNpemUoKSBjYWxscyBlcmFzZUFSR0IoKSwg
d2hpY2ggcmVzZXRzIHRoZSBhbHBoYSBmbGFnLCBzbyB3ZSBmb3JjZQotICAgICAgICAvLyBpdCBi
YWNrIHRvIGZhbHNlIGhlcmUuICBXZSdsbCBzZXQgaXQgdHJ1ZSBiZWxvdyBpbiBhbGwgY2FzZXMg
d2hlcmUKLSAgICAgICAgLy8gdGhlc2UgMHMgY291bGQgYWN0dWFsbHkgc2hvdyB0aHJvdWdoLgog
ICAgICAgICBtX2J1ZmZlci0+c2V0SGFzQWxwaGEoZmFsc2UpOwogCiAgICAgICAgIGlmICghbV9p
c1RvcERvd24pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9n
aWYvR0lGSW1hZ2VEZWNvZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcAkocmV2aXNpb24gMjA1
ODQxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRklt
YWdlRGVjb2Rlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyMSwxMCArMzIxLDcgQEAgdm9pZCBH
SUZJbWFnZURlY29kZXI6OmRlY29kZSh1bnNpZ25lZCBoYQogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgY29uc3Qgc2l6ZV90IG9sZFNpemUgPSBtX2ZyYW1lQnVmZmVyQ2FjaGUuc2l6ZSgp
OwogICAgIG1fZnJhbWVCdWZmZXJDYWNoZS5yZXNpemUobV9yZWFkZXItPmltYWdlc0NvdW50KCkp
OwotICAgIGZvciAoc2l6ZV90IGkgPSBvbGRTaXplOyBpIDwgbV9yZWFkZXItPmltYWdlc0NvdW50
KCk7ICsraSkKLSAgICAgICAgbV9mcmFtZUJ1ZmZlckNhY2hlW2ldLnNldFByZW11bHRpcGx5QWxw
aGEobV9wcmVtdWx0aXBseUFscGhhKTsKIAogICAgIGlmIChxdWVyeSA9PSBHSUZGcmFtZUNvdW50
UXVlcnkpCiAgICAgICAgIHJldHVybjsKQEAgLTM2MSw3ICszNTgsNyBAQCBib29sIEdJRkltYWdl
RGVjb2Rlcjo6aW5pdEZyYW1lQnVmZmVyKHVuCiAKICAgICBpZiAoIWZyYW1lSW5kZXgpIHsKICAg
ICAgICAgLy8gVGhpcyBpcyB0aGUgZmlyc3QgZnJhbWUsIHNvIHdlJ3JlIG5vdCByZWx5aW5nIG9u
IGFueSBwcmV2aW91cyBkYXRhLgotICAgICAgICBpZiAoIWJ1ZmZlci0+c2V0U2l6ZShzY2FsZWRT
aXplKCkpKQorICAgICAgICBpZiAoIWJ1ZmZlci0+aW5pdGlhbGl6ZUJhY2tpbmdTdG9yZShzY2Fs
ZWRTaXplKCksIG1fcHJlbXVsdGlwbHlBbHBoYSkpCiAgICAgICAgICAgICByZXR1cm4gc2V0RmFp
bGVkKCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gVGhlIHN0YXJ0aW5nIHN0YXRlIGZvciB0
aGlzIGZyYW1lIGRlcGVuZHMgb24gdGhlIHByZXZpb3VzIGZyYW1lJ3MKQEAgLTM4Miw3ICszNzks
NyBAQCBib29sIEdJRkltYWdlRGVjb2Rlcjo6aW5pdEZyYW1lQnVmZmVyKHVuCiAKICAgICAgICAg
aWYgKChwcmV2TWV0aG9kID09IEltYWdlRnJhbWU6OkRpc3Bvc2VOb3RTcGVjaWZpZWQpIHx8IChw
cmV2TWV0aG9kID09IEltYWdlRnJhbWU6OkRpc3Bvc2VLZWVwKSkgewogICAgICAgICAgICAgLy8g
UHJlc2VydmUgdGhlIGxhc3QgZnJhbWUgYXMgdGhlIHN0YXJ0aW5nIHN0YXRlIGZvciB0aGlzIGZy
YW1lLgotICAgICAgICAgICAgaWYgKCFidWZmZXItPmNvcHlCaXRtYXBEYXRhKCpwcmV2QnVmZmVy
KSkKKyAgICAgICAgICAgIGlmICghYnVmZmVyLT5pbml0aWFsaXplQmFja2luZ1N0b3JlKHByZXZC
dWZmZXItPmJhY2tTdG9yZSgpKSkKICAgICAgICAgICAgICAgICByZXR1cm4gc2V0RmFpbGVkKCk7
CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvLyBXZSB3YW50IHRvIGNsZWFyIHRoZSBw
cmV2aW91cyBmcmFtZSB0byB0cmFuc3BhcmVudCwgd2l0aG91dApAQCAtMzkyLDExICszODksMTEg
QEAgYm9vbCBHSUZJbWFnZURlY29kZXI6OmluaXRGcmFtZUJ1ZmZlcih1bgogICAgICAgICAgICAg
aWYgKCFmcmFtZUluZGV4IHx8IHByZXZSZWN0LmNvbnRhaW5zKEludFJlY3QoSW50UG9pbnQoKSwg
c2NhbGVkU2l6ZSgpKSkpIHsKICAgICAgICAgICAgICAgICAvLyBDbGVhcmluZyB0aGUgZmlyc3Qg
ZnJhbWUsIG9yIGEgZnJhbWUgdGhlIHNpemUgb2YgdGhlIHdob2xlCiAgICAgICAgICAgICAgICAg
Ly8gaW1hZ2UsIHJlc3VsdHMgaW4gYSBjb21wbGV0ZWx5IGVtcHR5IGltYWdlLgotICAgICAgICAg
ICAgICAgIGlmICghYnVmZmVyLT5zZXRTaXplKGJ1ZmZlclNpemUpKQorICAgICAgICAgICAgICAg
IGlmICghYnVmZmVyLT5pbml0aWFsaXplQmFja2luZ1N0b3JlKGJ1ZmZlclNpemUsIG1fcHJlbXVs
dGlwbHlBbHBoYSkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZXRGYWlsZWQoKTsKICAg
ICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgLy8gQ29weSB0aGUgd2hvbGUgcHJl
dmlvdXMgYnVmZmVyLCB0aGVuIGNsZWFyIGp1c3QgaXRzIGZyYW1lLgotICAgICAgICAgICAgICAg
IGlmICghYnVmZmVyLT5jb3B5Qml0bWFwRGF0YSgqcHJldkJ1ZmZlcikpCisgICAgICAgICAgICAg
ICAgaWYgKCFidWZmZXItPmluaXRpYWxpemVCYWNraW5nU3RvcmUocHJldkJ1ZmZlci0+YmFja2lu
Z1N0b3JlKCkpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2V0RmFpbGVkKCk7CiAgICAg
ICAgICAgICAgICAgYnVmZmVyLT56ZXJvRmlsbEZyYW1lUmVjdChwcmV2UmVjdCk7CiAgICAgICAg
ICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28v
SUNPSW1hZ2VEZWNvZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcAkocmV2aXNpb24gMjA1ODQx
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdl
RGVjb2Rlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk4LDExICs5OCw4IEBAIGJvb2wgSUNPSW1h
Z2VEZWNvZGVyOjpzZXRTaXplKGNvbnN0IEludFMKIHNpemVfdCBJQ09JbWFnZURlY29kZXI6OmZy
YW1lQ291bnQoKQogewogICAgIGRlY29kZSgwLCB0cnVlKTsKLSAgICBpZiAobV9mcmFtZUJ1ZmZl
ckNhY2hlLmlzRW1wdHkoKSkgeworICAgIGlmIChtX2ZyYW1lQnVmZmVyQ2FjaGUuaXNFbXB0eSgp
KQogICAgICAgICBtX2ZyYW1lQnVmZmVyQ2FjaGUucmVzaXplKG1fZGlyRW50cmllcy5zaXplKCkp
OwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZGlyRW50cmllcy5zaXplKCk7ICsr
aSkKLSAgICAgICAgICAgIG1fZnJhbWVCdWZmZXJDYWNoZVtpXS5zZXRQcmVtdWx0aXBseUFscGhh
KG1fcHJlbXVsdGlwbHlBbHBoYSk7Ci0gICAgfQogICAgIC8vIENBVVRJT046IFdlIG11c3Qgbm90
IHJlc2l6ZSBtX2ZyYW1lQnVmZmVyQ2FjaGUgYWdhaW4gYWZ0ZXIgdGhpcywgYXMKICAgICAvLyBk
ZWNvZGVBdEluZGV4KCkgbWF5IGdpdmUgYSBCTVBJbWFnZVJlYWRlciBhIHBvaW50ZXIgdG8gb25l
IG9mIHRoZQogICAgIC8vIGVudHJpZXMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rl
ci5jcHAJKHJldmlzaW9uIDIwNTg0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUz
MywxMCArNTMzLDggQEAgSW1hZ2VGcmFtZSogSlBFR0ltYWdlRGVjb2Rlcjo6ZnJhbWVCdWZmZQog
ICAgIGlmIChpbmRleCkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBpZiAobV9mcmFtZUJ1ZmZl
ckNhY2hlLmlzRW1wdHkoKSkgeworICAgIGlmIChtX2ZyYW1lQnVmZmVyQ2FjaGUuaXNFbXB0eSgp
KQogICAgICAgICBtX2ZyYW1lQnVmZmVyQ2FjaGUucmVzaXplKDEpOwotICAgICAgICBtX2ZyYW1l
QnVmZmVyQ2FjaGVbMF0uc2V0UHJlbXVsdGlwbHlBbHBoYShtX3ByZW11bHRpcGx5QWxwaGEpOwot
ICAgIH0KIAogICAgIEltYWdlRnJhbWUmIGZyYW1lID0gbV9mcmFtZUJ1ZmZlckNhY2hlWzBdOwog
ICAgIGlmIChmcmFtZS5zdGF0dXMoKSAhPSBJbWFnZUZyYW1lOjpGcmFtZUNvbXBsZXRlKQpAQCAt
NjE3LDcgKzYxNSw3IEBAIGJvb2wgSlBFR0ltYWdlRGVjb2Rlcjo6b3V0cHV0U2NhbmxpbmVzKCkK
ICAgICAvLyBJbml0aWFsaXplIHRoZSBmcmFtZWJ1ZmZlciBpZiBuZWVkZWQuCiAgICAgSW1hZ2VG
cmFtZSYgYnVmZmVyID0gbV9mcmFtZUJ1ZmZlckNhY2hlWzBdOwogICAgIGlmIChidWZmZXIuc3Rh
dHVzKCkgPT0gSW1hZ2VGcmFtZTo6RnJhbWVFbXB0eSkgewotICAgICAgICBpZiAoIWJ1ZmZlci5z
ZXRTaXplKHNjYWxlZFNpemUoKSkpCisgICAgICAgIGlmICghYnVmZmVyLmluaXRpYWxpemVCYWNr
aW5nU3RvcmUoc2NhbGVkU2l6ZSgpLCBtX3ByZW11bHRpcGx5QWxwaGEpKQogICAgICAgICAgICAg
cmV0dXJuIHNldEZhaWxlZCgpOwogICAgICAgICBidWZmZXIuc2V0U3RhdHVzKEltYWdlRnJhbWU6
OkZyYW1lUGFydGlhbCk7CiAgICAgICAgIC8vIFRoZSBidWZmZXIgaXMgdHJhbnNwYXJlbnQgb3V0
c2lkZSB0aGUgZGVjb2RlZCBhcmVhIHdoaWxlIHRoZSBpbWFnZSBpcwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BO
R0ltYWdlRGVjb2Rlci5jcHAJKHJldmlzaW9uIDIwNTg0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNTcsMTAgKzI1Nyw4IEBAIEltYWdlRnJhbWUqIFBOR0ltYWdlRGVjb2Rlcjo6ZnJh
bWVCdWZmZXIKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAjZW5kaWYKIAotICAgIGlmIChtX2Zy
YW1lQnVmZmVyQ2FjaGUuaXNFbXB0eSgpKSB7CisgICAgaWYgKG1fZnJhbWVCdWZmZXJDYWNoZS5p
c0VtcHR5KCkpCiAgICAgICAgIG1fZnJhbWVCdWZmZXJDYWNoZS5yZXNpemUoMSk7Ci0gICAgICAg
IG1fZnJhbWVCdWZmZXJDYWNoZVswXS5zZXRQcmVtdWx0aXBseUFscGhhKG1fcHJlbXVsdGlwbHlB
bHBoYSk7Ci0gICAgfQogCiAgICAgSW1hZ2VGcmFtZSYgZnJhbWUgPSBtX2ZyYW1lQnVmZmVyQ2Fj
aGVbaW5kZXhdOwogICAgIGlmIChmcmFtZS5zdGF0dXMoKSAhPSBJbWFnZUZyYW1lOjpGcmFtZUNv
bXBsZXRlKQpAQCAtNDExLDI5ICs0MDksNiBAQCB2b2lkIFBOR0ltYWdlRGVjb2Rlcjo6aGVhZGVy
QXZhaWxhYmxlKCkKICAgICB9CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBzZXRQaXhlbFJHQihS
R0JBMzIqIGRlc3QsIHBuZ19ieXRlcCBwaXhlbCkKLXsKLSAgICAqZGVzdCA9IDB4RkYwMDAwMDBV
IHwgcGl4ZWxbMF0gPDwgMTYgfCBwaXhlbFsxXSA8PCA4IHwgcGl4ZWxbMl07Ci19Ci0KLXN0YXRp
YyBpbmxpbmUgdm9pZCBzZXRQaXhlbFJHQkEoUkdCQTMyKiBkZXN0LCBwbmdfYnl0ZXAgcGl4ZWws
IHVuc2lnbmVkIGNoYXImIG5vblRyaXZpYWxBbHBoYU1hc2spCi17Ci0gICAgdW5zaWduZWQgY2hh
ciBhID0gcGl4ZWxbM107Ci0gICAgKmRlc3QgPSBhIDw8IDI0IHwgcGl4ZWxbMF0gPDwgMTYgfCBw
aXhlbFsxXSA8PCA4IHwgcGl4ZWxbMl07Ci0gICAgbm9uVHJpdmlhbEFscGhhTWFzayB8PSAoMjU1
IC0gYSk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgdm9pZCBzZXRQaXhlbFByZW11bHRpcGxpZWRSR0JB
KFJHQkEzMiogZGVzdCwgcG5nX2J5dGVwIHBpeGVsLCB1bnNpZ25lZCBjaGFyJiBub25Ucml2aWFs
QWxwaGFNYXNrKQotewotICAgIHVuc2lnbmVkIGNoYXIgYSA9IHBpeGVsWzNdOwotICAgIHVuc2ln
bmVkIGNoYXIgciA9IGZhc3REaXZpZGVCeTI1NShwaXhlbFswXSAqIGEpOwotICAgIHVuc2lnbmVk
IGNoYXIgZyA9IGZhc3REaXZpZGVCeTI1NShwaXhlbFsxXSAqIGEpOwotICAgIHVuc2lnbmVkIGNo
YXIgYiA9IGZhc3REaXZpZGVCeTI1NShwaXhlbFsyXSAqIGEpOwotCi0gICAgKmRlc3QgPSBhIDw8
IDI0IHwgciA8PCAxNiB8IGcgPDwgOCB8IGI7Ci0gICAgbm9uVHJpdmlhbEFscGhhTWFzayB8PSAo
MjU1IC0gYSk7Ci19Ci0KIHZvaWQgUE5HSW1hZ2VEZWNvZGVyOjpyb3dBdmFpbGFibGUodW5zaWdu
ZWQgY2hhciogcm93QnVmZmVyLCB1bnNpZ25lZCByb3dJbmRleCwgaW50KQogewogICAgIGlmICht
X2ZyYW1lQnVmZmVyQ2FjaGUuaXNFbXB0eSgpKQpAQCAtNDQ3LDcgKzQyMiw3IEBAIHZvaWQgUE5H
SW1hZ2VEZWNvZGVyOjpyb3dBdmFpbGFibGUodW5zaWcKICAgICBJbWFnZUZyYW1lJiBidWZmZXIg
PSBtX2ZyYW1lQnVmZmVyQ2FjaGVbbV9jdXJyZW50RnJhbWVdOwogICAgIGlmIChidWZmZXIuc3Rh
dHVzKCkgPT0gSW1hZ2VGcmFtZTo6RnJhbWVFbXB0eSkgewogICAgICAgICBwbmdfc3RydWN0cCBw
bmcgPSBtX3JlYWRlci0+cG5nUHRyKCk7Ci0gICAgICAgIGlmICghYnVmZmVyLnNldFNpemUoc2Nh
bGVkU2l6ZSgpKSkgeworICAgICAgICBpZiAoIWJ1ZmZlci5pbml0aWFsaXplQmFja2luZ1N0b3Jl
KHNjYWxlZFNpemUoKSwgbV9wcmVtdWx0aXBseUFscGhhKSkgewogICAgICAgICAgICAgbG9uZ2pt
cChKTVBCVUYocG5nKSwgMSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTUz
NCwxMCArNTA5LDEwIEBAIHZvaWQgUE5HSW1hZ2VEZWNvZGVyOjpyb3dBdmFpbGFibGUodW5zaWcK
IAogI2lmIEVOQUJMRShJTUFHRV9ERUNPREVSX0RPV05fU0FNUExJTkcpCiAgICAgaWYgKG1fc2Nh
bGVkKSB7Ci0gICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgd2lkdGg7ICsreCkgeworICAgICAg
ICBmb3IgKGludCB4ID0gMDsgeCA8IHdpZHRoOyArK3gsICsrYWRkcmVzcykgewogICAgICAgICAg
ICAgcG5nX2J5dGVwIHBpeGVsID0gcm93ICsgbV9zY2FsZWRDb2x1bW5zW3hdICogY29sb3JDaGFu
bmVsczsKICAgICAgICAgICAgIHVuc2lnbmVkIGFscGhhID0gaGFzQWxwaGEgPyBwaXhlbFszXSA6
IDI1NTsKLSAgICAgICAgICAgIGJ1ZmZlci5zZXRQaXhlbChhZGRyZXNzKyssIHBpeGVsWzBdLCBw
aXhlbFsxXSwgcGl4ZWxbMl0sIGFscGhhKTsKKyAgICAgICAgICAgIGJ1ZmZlci5zZXRQaXhlbChh
ZGRyZXNzLCBwaXhlbFswXSwgcGl4ZWxbMV0sIHBpeGVsWzJdLCBhbHBoYSk7CiAgICAgICAgICAg
ICBub25Ucml2aWFsQWxwaGFNYXNrIHw9ICgyNTUgLSBhbHBoYSk7CiAgICAgICAgIH0KICAgICB9
IGVsc2UKQEAgLTU0NSwyMCArNTIwLDE3IEBAIHZvaWQgUE5HSW1hZ2VEZWNvZGVyOjpyb3dBdmFp
bGFibGUodW5zaWcKICAgICB7CiAgICAgICAgIHBuZ19ieXRlcCBwaXhlbCA9IHJvdzsKICAgICAg
ICAgaWYgKGhhc0FscGhhKSB7Ci0gICAgICAgICAgICBpZiAoYnVmZmVyLnByZW11bHRpcGx5QWxw
aGEoKSkgewotICAgICAgICAgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgd2lkdGg7ICsreCwg
cGl4ZWwgKz0gNCkKLSAgICAgICAgICAgICAgICAgICAgc2V0UGl4ZWxQcmVtdWx0aXBsaWVkUkdC
QShhZGRyZXNzKyssIHBpeGVsLCBub25Ucml2aWFsQWxwaGFNYXNrKTsKLSAgICAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCB3aWR0aDsgKyt4LCBw
aXhlbCArPSA0KQotICAgICAgICAgICAgICAgICAgICBzZXRQaXhlbFJHQkEoYWRkcmVzcysrLCBw
aXhlbCwgbm9uVHJpdmlhbEFscGhhTWFzayk7CisgICAgICAgICAgICBmb3IgKGludCB4ID0gMDsg
eCA8IHdpZHRoOyArK3gsIHBpeGVsICs9IDQsICsrYWRkcmVzcykgeworICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGFscGhhID0gcGl4ZWxbM107CisgICAgICAgICAgICAgICAgYnVmZmVyLnNldFBp
eGVsKGFkZHJlc3MsIHBpeGVsWzBdLCBwaXhlbFsxXSwgcGl4ZWxbMl0sIGFscGhhKTsKKyAgICAg
ICAgICAgICAgICBub25Ucml2aWFsQWxwaGFNYXNrIHw9ICgyNTUgLSBhbHBoYSk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8
IHdpZHRoOyArK3gsIHBpeGVsICs9IDMpCi0gICAgICAgICAgICAgICAgc2V0UGl4ZWxSR0IoYWRk
cmVzcysrLCBwaXhlbCk7CisgICAgICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IHdpZHRoOyAr
K3gsIHBpeGVsICs9IDMsICsrYWRkcmVzcykKKyAgICAgICAgICAgICAgICAqYWRkcmVzcyA9IG1h
a2VSR0IocGl4ZWxbMF0sIHBpeGVsWzFdLCBwaXhlbFsyXSk7CiAgICAgICAgIH0KICAgICB9CiAK
LQogICAgIGlmIChub25Ucml2aWFsQWxwaGFNYXNrICYmICFidWZmZXIuaGFzQWxwaGEoKSkKICAg
ICAgICAgYnVmZmVyLnNldEhhc0FscGhhKHRydWUpOwogfQpAQCAtNjE4LDggKzU5MCw2IEBAIHZv
aWQgUE5HSW1hZ2VEZWNvZGVyOjpyZWFkQ2h1bmtzKHBuZ191bmsKICAgICAgICAgICAgIHJldHVy
bjsKIAogICAgICAgICBtX2ZyYW1lQnVmZmVyQ2FjaGUucmVzaXplKG1fZnJhbWVDb3VudCk7Ci0g
ICAgICAgIGZvciAoYXV0byYgaW1hZ2VGcmFtZSA6IG1fZnJhbWVCdWZmZXJDYWNoZSkKLSAgICAg
ICAgICAgIGltYWdlRnJhbWUuc2V0UHJlbXVsdGlwbHlBbHBoYShtX3ByZW11bHRpcGx5QWxwaGEp
OwogICAgIH0gZWxzZSBpZiAoIW1lbWNtcChjaHVuay0+bmFtZSwgImZjVEwiLCA0KSAmJiBjaHVu
ay0+c2l6ZSA9PSAyNikgewogICAgICAgICBpZiAobV9oYXNJbmZvICYmICFtX2lzQW5pbWF0ZWQp
CiAgICAgICAgICAgICByZXR1cm47CkBAIC02NjEsMTAgKzYzMSw4IEBAIHZvaWQgUE5HSW1hZ2VE
ZWNvZGVyOjpyZWFkQ2h1bmtzKHBuZ191bmsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogCi0gICAgICAgIGlmIChtX2ZyYW1lQnVmZmVyQ2FjaGUuaXNFbXB0eSgpKSB7CisgICAgICAg
IGlmIChtX2ZyYW1lQnVmZmVyQ2FjaGUuaXNFbXB0eSgpKQogICAgICAgICAgICAgbV9mcmFtZUJ1
ZmZlckNhY2hlLnJlc2l6ZSgxKTsKLSAgICAgICAgICAgIG1fZnJhbWVCdWZmZXJDYWNoZVswXS5z
ZXRQcmVtdWx0aXBseUFscGhhKG1fcHJlbXVsdGlwbHlBbHBoYSk7Ci0gICAgICAgIH0KIAogICAg
ICAgICBpZiAobV9jdXJyZW50RnJhbWUgPCBtX2ZyYW1lQnVmZmVyQ2FjaGUuc2l6ZSgpKSB7CiAg
ICAgICAgICAgICBJbWFnZUZyYW1lJiBidWZmZXIgPSBtX2ZyYW1lQnVmZmVyQ2FjaGVbbV9jdXJy
ZW50RnJhbWVdOwpAQCAtODEzLDcgKzc4MSw3IEBAIHZvaWQgUE5HSW1hZ2VEZWNvZGVyOjppbml0
RnJhbWVCdWZmZXIoc2kKIAogICAgIGlmIChwcmV2TWV0aG9kID09IEltYWdlRnJhbWU6OkRpc3Bv
c2VLZWVwKSB7CiAgICAgICAgIC8vIFByZXNlcnZlIHRoZSBsYXN0IGZyYW1lIGFzIHRoZSBzdGFy
dGluZyBzdGF0ZSBmb3IgdGhpcyBmcmFtZS4KLSAgICAgICAgYnVmZmVyLmNvcHlCaXRtYXBEYXRh
KCpwcmV2QnVmZmVyKTsKKyAgICAgICAgYnVmZmVyLmluaXRpYWxpemVCYWNraW5nU3RvcmUocHJl
dkJ1ZmZlci0+YmFja2luZ1N0b3JlKCkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIFdlIHdh
bnQgdG8gY2xlYXIgdGhlIHByZXZpb3VzIGZyYW1lIHRvIHRyYW5zcGFyZW50LCB3aXRob3V0CiAg
ICAgICAgIC8vIGFmZmVjdGluZyBwaXhlbHMgaW4gdGhlIGltYWdlIG91dHNpZGUgb2YgdGhlIGZy
YW1lLgpAQCAtODI0LDcgKzc5Miw3IEBAIHZvaWQgUE5HSW1hZ2VEZWNvZGVyOjppbml0RnJhbWVC
dWZmZXIoc2kKICAgICAgICAgICAgIGJ1ZmZlci56ZXJvRmlsbFBpeGVsRGF0YSgpOwogICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgLy8gQ29weSB0aGUgd2hvbGUgcHJldmlvdXMgYnVmZmVy
LCB0aGVuIGNsZWFyIGp1c3QgaXRzIGZyYW1lLgotICAgICAgICAgICAgYnVmZmVyLmNvcHlCaXRt
YXBEYXRhKCpwcmV2QnVmZmVyKTsKKyAgICAgICAgICAgIGJ1ZmZlci5pbml0aWFsaXplQmFja2lu
Z1N0b3JlKHByZXZCdWZmZXItPmJhY2tpbmdTdG9yZSgpKTsKICAgICAgICAgICAgIGJ1ZmZlci56
ZXJvRmlsbEZyYW1lUmVjdChwcmV2UmVjdCk7CiAgICAgICAgIH0KICAgICB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAJKHJldmlzaW9uIDIwNTg0MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTc4LDEwICs3OCw4IEBAIEltYWdlRnJhbWUqIFdFQlBJbWFnZURl
Y29kZXI6OmZyYW1lQnVmZmUKICAgICBpZiAoaW5kZXgpCiAgICAgICAgIHJldHVybiAwOwogCi0g
ICAgaWYgKG1fZnJhbWVCdWZmZXJDYWNoZS5pc0VtcHR5KCkpIHsKKyAgICBpZiAobV9mcmFtZUJ1
ZmZlckNhY2hlLmlzRW1wdHkoKSkKICAgICAgICAgbV9mcmFtZUJ1ZmZlckNhY2hlLnJlc2l6ZSgx
KTsKLSAgICAgICAgbV9mcmFtZUJ1ZmZlckNhY2hlWzBdLnNldFByZW11bHRpcGx5QWxwaGEobV9w
cmVtdWx0aXBseUFscGhhKTsKLSAgICB9CiAKICAgICBJbWFnZUZyYW1lJiBmcmFtZSA9IG1fZnJh
bWVCdWZmZXJDYWNoZVswXTsKICAgICBpZiAoZnJhbWUuc3RhdHVzKCkgIT0gSW1hZ2VGcmFtZTo6
RnJhbWVDb21wbGV0ZSkKQEAgLTEyOCw3ICsxMjYsNyBAQCBib29sIFdFQlBJbWFnZURlY29kZXI6
OmRlY29kZShib29sIG9ubHlTCiAgICAgQVNTRVJUKGJ1ZmZlci5zdGF0dXMoKSAhPSBJbWFnZUZy
YW1lOjpGcmFtZUNvbXBsZXRlKTsKIAogICAgIGlmIChidWZmZXIuc3RhdHVzKCkgPT0gSW1hZ2VG
cmFtZTo6RnJhbWVFbXB0eSkgewotICAgICAgICBpZiAoIWJ1ZmZlci5zZXRTaXplKHNpemUoKSkp
CisgICAgICAgIGlmICghYnVmZmVyLmluaXRpYWxpemVCYWNraW5nU3RvcmUoc2l6ZSgpLCBtX3By
ZW11bHRpcGx5QWxwaGEpKQogICAgICAgICAgICAgcmV0dXJuIHNldEZhaWxlZCgpOwogICAgICAg
ICBidWZmZXIuc2V0U3RhdHVzKEltYWdlRnJhbWU6OkZyYW1lUGFydGlhbCk7CiAgICAgICAgIGJ1
ZmZlci5zZXRIYXNBbHBoYShtX2hhc0FscGhhKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>288697</attachid>
            <date>2016-09-13 10:51:19 -0700</date>
            <delta_ts>2016-09-13 10:55:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159721-20160913104844.patch</filename>
            <type>text/plain</type>
            <size>20952</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNTg2MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUxIEBACisyMDE2LTA5LTEzICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgR2V0IHJpZCBv
ZiB0aGUgbV9wcmVtdWx0aXBseUFscGhhIGZsYWcgb2YgdGhlIEltYWdlRnJhbWUgY2xhc3MKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTcyMQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgZmxhZyB3
YXMgb25seSBuZWVkZWQgd2hlbiBjYWxsaW5nIEltYWdlQmFja2luZ1N0b3JlOjpjcmVhdGUoKSBp
biAKKyAgICAgICAgSW1hZ2VGcmFtZTo6c2V0U2l6ZSgpLiBJbnN0ZWFkIHdlIGNhbiBwYXNzIElt
YWdlRGVjb2Rlcjo6bV9wcmVtdWx0aXBseUFscGhhIAorICAgICAgICB0byBJbWFnZUZyYW1lOjpz
ZXRTaXplKCksIHdoaWNoIHNob3VsZCBiZSByZW5hbWVkIEltYWdlRnJhbWU6OmluaXRpYWxpemVC
YWNraW5nU3RvcmUoKS4KKyAgICAgICAgVGhlIHBhc3NlZCBwcmVtdWx0aXBseUFscGhhIGNhbiB0
aGVuIGJlIHBhc3NlZCB0byBJbWFnZUJhY2tpbmdTdG9yZTo6Y3JlYXRlKCkuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VGcmFtZTo6SW1hZ2VGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZy
YW1lOjpvcGVyYXRvcj0pOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6aW5pdGlhbGl6
ZUJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpjb3B5Qml0bWFw
RGF0YSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpzZXRTaXplKTog
RGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OmRpc3Bvc2FsTWV0aG9kKToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OnNldERpc3Bvc2FsTWV0aG9kKToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlRGVjb2Rlcjo6cHJlbXVsdGlwbHlBbHBoYSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZUZyYW1lOjpwcmVtdWx0aXBseUFscGhhKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlRnJhbWU6OnNldFByZW11bHRpcGx5QWxwaGEpOiBEZWxldGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Qk1QSW1hZ2VEZWNvZGVyOjpmcmFtZUJ1ZmZlckF0SW5kZXgpOgorICAgICAg
ICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpCTVBJbWFnZVJlYWRlcjo6ZGVjb2RlQk1QKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkdJRkltYWdlRGVjb2Rlcjo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkdJRklt
YWdlRGVjb2Rlcjo6aW5pdEZyYW1lQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklDT0lt
YWdlRGVjb2Rlcjo6ZnJhbWVDb3VudCk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpQRUdJbWFn
ZURlY29kZXI6OmZyYW1lQnVmZmVyQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpKUEVHSW1h
Z2VEZWNvZGVyOjpvdXRwdXRTY2FubGluZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UE5HSW1h
Z2VEZWNvZGVyOjpmcmFtZUJ1ZmZlckF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6UE5HSW1h
Z2VEZWNvZGVyOjpyb3dBdmFpbGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6UE5HSW1hZ2VEZWNv
ZGVyOjpyZWFkQ2h1bmtzKToKKyAgICAgICAgKFdlYkNvcmU6OlBOR0ltYWdlRGVjb2Rlcjo6aW5p
dEZyYW1lQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldFBpeGVsUkdCKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OnNldFBpeGVsUkdCQSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpzZXRQaXhlbFByZW11bHRpcGxpZWRSR0JBKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V0VCUEltYWdlRGVjb2Rlcjo6ZnJhbWVCdWZmZXJBdEluZGV4KToKKyAgICAgICAg
KFdlYkNvcmU6OldFQlBJbWFnZURlY29kZXI6OmRlY29kZSk6CisKIDIwMTYtMDktMTIgIFphbGFu
IEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBJbnB1dCB0eXBlIG9iamVjdCBh
bmQgdGhlIGFzc29jaWF0ZWQgcmVuZGVyIGNhbiBnbyBvdXQgb2Ygc3luYy4KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNv
ZGVyLmNwcAkocmV2aXNpb24gMjA1ODQxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMyLDcgKzEz
Miw2IEBAIEltYWdlRnJhbWU6OkltYWdlRnJhbWUoKQogICAgICwgbV9zdGF0dXMoRnJhbWVFbXB0
eSkKICAgICAsIG1fZHVyYXRpb24oMCkKICAgICAsIG1fZGlzcG9zYWxNZXRob2QoRGlzcG9zZU5v
dFNwZWNpZmllZCkKLSAgICAsIG1fcHJlbXVsdGlwbHlBbHBoYSh0cnVlKQogewogfSAKIApAQCAt
MTQxLDcgKzE0MCw3IEBAIEltYWdlRnJhbWUmIEltYWdlRnJhbWU6Om9wZXJhdG9yPShjb25zdCAK
ICAgICBpZiAodGhpcyA9PSAmb3RoZXIpCiAgICAgICAgIHJldHVybiAqdGhpczsKIAotICAgIGNv
cHlCaXRtYXBEYXRhKG90aGVyKTsKKyAgICBpbml0aWFsaXplQmFja2luZ1N0b3JlKG90aGVyLmJh
Y2tpbmdTdG9yZSgpKTsKICAgICBzZXRIYXNBbHBoYShvdGhlci5tX2hhc0FscGhhKTsKICAgICBz
ZXRTdGF0dXMob3RoZXIuc3RhdHVzKCkpOwogICAgIHNldER1cmF0aW9uKG90aGVyLmR1cmF0aW9u
KCkpOwpAQCAtMTc1LDIzICsxNzQsMjQgQEAgdm9pZCBJbWFnZUZyYW1lOjp6ZXJvRmlsbEZyYW1l
UmVjdChjb25zdAogICAgIHNldEhhc0FscGhhKHRydWUpOwogfQogCi1ib29sIEltYWdlRnJhbWU6
OmNvcHlCaXRtYXBEYXRhKGNvbnN0IEltYWdlRnJhbWUmIG90aGVyKQorYm9vbCBJbWFnZUZyYW1l
Ojppbml0aWFsaXplQmFja2luZ1N0b3JlKGNvbnN0IEltYWdlQmFja2luZ1N0b3JlKiBiYWNraW5n
U3RvcmUpCiB7Ci0gICAgaWYgKHRoaXMgPT0gJm90aGVyKQorICAgIGlmICghYmFja2luZ1N0b3Jl
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoYmFja2luZ1N0b3JlID09IHRoaXMt
PmJhY2tpbmdTdG9yZSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmIChvdGhlci5t
X2JhY2tpbmdTdG9yZSkKLSAgICAgICAgbV9iYWNraW5nU3RvcmUgPSBJbWFnZUJhY2tpbmdTdG9y
ZTo6Y3JlYXRlKCpvdGhlci5tX2JhY2tpbmdTdG9yZS5nZXQoKSk7Ci0gICAgZWxzZQotICAgICAg
ICBtX2JhY2tpbmdTdG9yZSA9IG51bGxwdHI7Ci0gICAgCi0gICAgcmV0dXJuIHRydWU7CisgICAg
bV9iYWNraW5nU3RvcmUgPSBJbWFnZUJhY2tpbmdTdG9yZTo6Y3JlYXRlKGJhY2tpbmdTdG9yZSk7
CisgICAgcmV0dXJuIG1fYmFja2luZ1N0b3JlICE9IG51bGxwdHI7CiB9CiAKLWJvb2wgSW1hZ2VG
cmFtZTo6c2V0U2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQorYm9vbCBJbWFnZUZyYW1lOjppbml0
aWFsaXplQmFja2luZ1N0b3JlKGNvbnN0IEludFNpemUmIHNpemUsIGJvb2wgcHJlbXVsdGlwbHlB
bHBoYSkKIHsKLSAgICBBU1NFUlQoIW1fYmFja2luZ1N0b3JlKTsKLSAgICBtX2JhY2tpbmdTdG9y
ZSA9IEltYWdlQmFja2luZ1N0b3JlOjpjcmVhdGUoc2l6ZSwgbV9wcmVtdWx0aXBseUFscGhhKTsK
KyAgICBpZiAoc2l6ZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIG1f
YmFja2luZ1N0b3JlID0gSW1hZ2VCYWNraW5nU3RvcmU6OmNyZWF0ZShzaXplLCBwcmVtdWx0aXBs
eUFscGhhKTsKICAgICByZXR1cm4gbV9iYWNraW5nU3RvcmUgIT0gbnVsbHB0cjsKIH0KIApJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1h
Z2VEZWNvZGVyLmgJKHJldmlzaW9uIDIwNTg0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oCSh3b3JraW5nIGNvcHkpCkBAIC03MiwxMiAr
NzIsNyBAQCB1c2luZyBDb2xvclByb2ZpbGUgPSBWZWN0b3I8Y2hhcj47CiAgICAgICAgIHZvaWQg
Y2xlYXJQaXhlbERhdGEoKTsKICAgICAgICAgdm9pZCB6ZXJvRmlsbFBpeGVsRGF0YSgpOwogICAg
ICAgICB2b2lkIHplcm9GaWxsRnJhbWVSZWN0KGNvbnN0IEludFJlY3QmKTsKLQotICAgICAgICAv
LyBNYWtlcyB0aGlzIGZyYW1lIGhhdmUgYW4gaW5kZXBlbmRlbnQgY29weSBvZiB0aGUgcHJvdmlk
ZWQgaW1hZ2UncwotICAgICAgICAvLyBwaXhlbCBkYXRhLCBzbyB0aGF0IG1vZGlmaWNhdGlvbnMg
aW4gb25lIGZyYW1lIGFyZSBub3QgcmVmbGVjdGVkIGluCi0gICAgICAgIC8vIHRoZSBvdGhlci4g
IFJldHVybnMgd2hldGhlciB0aGUgY29weSBzdWNjZWVkZWQuCi0gICAgICAgIGJvb2wgY29weUJp
dG1hcERhdGEoY29uc3QgSW1hZ2VGcmFtZSYpOwotCisgICAgICAgIAogICAgICAgICAvLyBDb3Bp
ZXMgdGhlIHBpeGVsIGRhdGEgYXQgWyhzdGFydFgsIHN0YXJ0WSksIChlbmRYLCBzdGFydFkpKSB0
byB0aGUKICAgICAgICAgLy8gc2FtZSBYLWNvb3JkaW5hdGVzIG9uIGVhY2ggc3Vic2VxdWVudCBy
b3cgdXAgdG8gYnV0IG5vdCBpbmNsdWRpbmcKICAgICAgICAgLy8gZW5kWS4KQEAgLTg2LDEwICs4
MSwxNCBAQCB1c2luZyBDb2xvclByb2ZpbGUgPSBWZWN0b3I8Y2hhcj47CiAgICAgICAgICAgICBt
X2JhY2tpbmdTdG9yZS0+cmVwZWF0Rmlyc3RSb3coSW50UmVjdChzdGFydFgsIHN0YXJ0WSwgZW5k
WCAtc3RhcnRYICwgZW5kWSAtIHN0YXJ0WSkpOwogICAgICAgICB9CiAKLSAgICAgICAgLy8gQWxs
b2NhdGVzIHNwYWNlIGZvciB0aGUgcGl4ZWwgZGF0YS4gIE11c3QgYmUgY2FsbGVkIGJlZm9yZSBh
bnkgcGl4ZWxzCi0gICAgICAgIC8vIGFyZSB3cml0dGVuLiAgTXVzdCBvbmx5IGJlIGNhbGxlZCBv
bmNlLiAgUmV0dXJucyB3aGV0aGVyIGFsbG9jYXRpb24KLSAgICAgICAgLy8gc3VjY2VlZGVkLgot
ICAgICAgICBib29sIHNldFNpemUoY29uc3QgSW50U2l6ZSYpOworICAgICAgICAvLyBNYWtlcyB0
aGlzIGZyYW1lIGhhdmUgYW4gaW5kZXBlbmRlbnQgY29weSBvZiB0aGUgcHJvdmlkZWQgaW1hZ2Un
cworICAgICAgICAvLyBwaXhlbCBkYXRhLCBzbyB0aGF0IG1vZGlmaWNhdGlvbnMgaW4gb25lIGZy
YW1lIGFyZSBub3QgcmVmbGVjdGVkIGluCisgICAgICAgIC8vIHRoZSBvdGhlci4gUmV0dXJucyB3
aGV0aGVyIHRoZSBjb3B5IHN1Y2NlZWRlZC4KKyAgICAgICAgYm9vbCBpbml0aWFsaXplQmFja2lu
Z1N0b3JlKGNvbnN0IEltYWdlQmFja2luZ1N0b3JlKik7CisKKyAgICAgICAgLy8gQWxsb2NhdGVz
IHNwYWNlIGZvciB0aGUgcGl4ZWwgZGF0YS4gUmV0dXJucyB3aGV0aGVyIGFsbG9jYXRpb24gc3Vj
Y2VlZGVkLgorICAgICAgICBib29sIGluaXRpYWxpemVCYWNraW5nU3RvcmUoY29uc3QgSW50U2l6
ZSYsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSk7CisKICAgICAgICAgSW50U2l6ZSBzaXplKCkgY29u
c3QgeyByZXR1cm4gbV9iYWNraW5nU3RvcmUgPyBtX2JhY2tpbmdTdG9yZS0+c2l6ZSgpIDogSW50
U2l6ZSgpOyB9CiAKICAgICAgICAgLy8gUmV0dXJucyBhIGNhbGxlci1vd25lZCBwb2ludGVyIHRv
IHRoZSB1bmRlcmx5aW5nIG5hdGl2ZSBpbWFnZSBkYXRhLgpAQCAtMTA1LDE0ICsxMDQsMTIgQEAg
dXNpbmcgQ29sb3JQcm9maWxlID0gVmVjdG9yPGNoYXI+OwogICAgICAgICBGcmFtZVN0YXR1cyBz
dGF0dXMoKSBjb25zdCB7IHJldHVybiBtX3N0YXR1czsgfQogICAgICAgICB1bnNpZ25lZCBkdXJh
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZHVyYXRpb247IH0KICAgICAgICAgRnJhbWVEaXNwb3Nh
bE1ldGhvZCBkaXNwb3NhbE1ldGhvZCgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcG9zYWxNZXRob2Q7
IH0KLSAgICAgICAgYm9vbCBwcmVtdWx0aXBseUFscGhhKCkgY29uc3QgeyByZXR1cm4gbV9wcmVt
dWx0aXBseUFscGhhOyB9CiAKICAgICAgICAgdm9pZCBzZXRIYXNBbHBoYShib29sIGFscGhhKTsK
ICAgICAgICAgdm9pZCBzZXRPcmlnaW5hbEZyYW1lUmVjdChjb25zdCBJbnRSZWN0Jik7CiAgICAg
ICAgIHZvaWQgc2V0U3RhdHVzKEZyYW1lU3RhdHVzIHN0YXR1cyk7CiAgICAgICAgIHZvaWQgc2V0
RHVyYXRpb24odW5zaWduZWQgZHVyYXRpb24pIHsgbV9kdXJhdGlvbiA9IGR1cmF0aW9uOyB9CiAg
ICAgICAgIHZvaWQgc2V0RGlzcG9zYWxNZXRob2QoRnJhbWVEaXNwb3NhbE1ldGhvZCBtZXRob2Qp
IHsgbV9kaXNwb3NhbE1ldGhvZCA9IG1ldGhvZDsgfQotICAgICAgICB2b2lkIHNldFByZW11bHRp
cGx5QWxwaGEoYm9vbCBwcmVtdWx0aXBseUFscGhhKSB7IG1fcHJlbXVsdGlwbHlBbHBoYSA9IHBy
ZW11bHRpcGx5QWxwaGE7IH0KIAogICAgICAgICBpbmxpbmUgUkdCQTMyKiBwaXhlbEF0KGludCB4
LCBpbnQgeSkKICAgICAgICAgewpAQCAtMTQ2LDcgKzE0Myw2IEBAIHVzaW5nIENvbG9yUHJvZmls
ZSA9IFZlY3RvcjxjaGFyPjsKICAgICAgICAgRnJhbWVTdGF0dXMgbV9zdGF0dXM7CiAgICAgICAg
IHVuc2lnbmVkIG1fZHVyYXRpb247CiAgICAgICAgIEZyYW1lRGlzcG9zYWxNZXRob2QgbV9kaXNw
b3NhbE1ldGhvZDsKLSAgICAgICAgYm9vbCBtX3ByZW11bHRpcGx5QWxwaGE7CiAgICAgfTsKIAog
ICAgIC8vIEltYWdlRGVjb2RlciBpcyBhIGJhc2UgZm9yIGFsbCBmb3JtYXQtc3BlY2lmaWMgZGVj
b2RlcnMKQEAgLTE3NCw2ICsxNzAsOCBAQCB1c2luZyBDb2xvclByb2ZpbGUgPSBWZWN0b3I8Y2hh
cj47CiAgICAgICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VEZWNvZGVyPiBjcmVhdGUo
Y29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhLCBJbWFnZVNvdXJjZTo6QWxwaGFPcHRpb24sIEltYWdl
U291cmNlOjpHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CiAKICAgICAgICAgdmlydHVhbCBT
dHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdCA9IDA7CisgICAgICAgIAorICAgICAgICBi
b29sIHByZW11bHRpcGx5QWxwaGEoKSBjb25zdCB7IHJldHVybiBtX3ByZW11bHRpcGx5QWxwaGE7
IH0KIAogICAgICAgICBib29sIGlzQWxsRGF0YVJlY2VpdmVkKCkgY29uc3QgeyByZXR1cm4gbV9p
c0FsbERhdGFSZWNlaXZlZDsgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcAko
cmV2aXNpb24gMjA1ODQxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcwLDEwICs3MCw4
IEBAIEltYWdlRnJhbWUqIEJNUEltYWdlRGVjb2Rlcjo6ZnJhbWVCdWZmZXIKICAgICBpZiAoaW5k
ZXgpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgaWYgKG1fZnJhbWVCdWZmZXJDYWNoZS5pc0Vt
cHR5KCkpIHsKKyAgICBpZiAobV9mcmFtZUJ1ZmZlckNhY2hlLmlzRW1wdHkoKSkKICAgICAgICAg
bV9mcmFtZUJ1ZmZlckNhY2hlLnJlc2l6ZSgxKTsKLSAgICAgICAgbV9mcmFtZUJ1ZmZlckNhY2hl
LmZpcnN0KCkuc2V0UHJlbXVsdGlwbHlBbHBoYShtX3ByZW11bHRpcGx5QWxwaGEpOwotICAgIH0K
IAogICAgIEltYWdlRnJhbWUqIGJ1ZmZlciA9ICZtX2ZyYW1lQnVmZmVyQ2FjaGUuZmlyc3QoKTsK
ICAgICBpZiAoYnVmZmVyLT5zdGF0dXMoKSAhPSBJbWFnZUZyYW1lOjpGcmFtZUNvbXBsZXRlKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdl
UmVhZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9ibXAvQk1QSW1hZ2VSZWFkZXIuY3BwCShyZXZpc2lvbiAyMDU4NDEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VSZWFkZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03OCwxMiArNzgsMTAgQEAgYm9vbCBCTVBJbWFnZVJlYWRlcjo6
ZGVjb2RlQk1QKGJvb2wgb25seQogICAgIC8vIEluaXRpYWxpemUgdGhlIGZyYW1lYnVmZmVyIGlm
IG5lZWRlZC4KICAgICBBU1NFUlQobV9idWZmZXIpOyAgLy8gUGFyZW50IHNob3VsZCBzZXQgdGhp
cyBiZWZvcmUgYXNraW5nIHVzIHRvIGRlY29kZSEKICAgICBpZiAobV9idWZmZXItPnN0YXR1cygp
ID09IEltYWdlRnJhbWU6OkZyYW1lRW1wdHkpIHsKLSAgICAgICAgaWYgKCFtX2J1ZmZlci0+c2V0
U2l6ZShtX3BhcmVudC0+c2l6ZSgpKSkKKyAgICAgICAgaWYgKCFtX2J1ZmZlci0+aW5pdGlhbGl6
ZUJhY2tpbmdTdG9yZShtX3BhcmVudC0+c2l6ZSgpLCBtX3BhcmVudC0+cHJlbXVsdGlwbHlBbHBo
YSgpKSkKICAgICAgICAgICAgIHJldHVybiBtX3BhcmVudC0+c2V0RmFpbGVkKCk7IC8vIFVuYWJs
ZSB0byBhbGxvY2F0ZS4KKwogICAgICAgICBtX2J1ZmZlci0+c2V0U3RhdHVzKEltYWdlRnJhbWU6
OkZyYW1lUGFydGlhbCk7Ci0gICAgICAgIC8vIHNldFNpemUoKSBjYWxscyBlcmFzZUFSR0IoKSwg
d2hpY2ggcmVzZXRzIHRoZSBhbHBoYSBmbGFnLCBzbyB3ZSBmb3JjZQotICAgICAgICAvLyBpdCBi
YWNrIHRvIGZhbHNlIGhlcmUuICBXZSdsbCBzZXQgaXQgdHJ1ZSBiZWxvdyBpbiBhbGwgY2FzZXMg
d2hlcmUKLSAgICAgICAgLy8gdGhlc2UgMHMgY291bGQgYWN0dWFsbHkgc2hvdyB0aHJvdWdoLgog
ICAgICAgICBtX2J1ZmZlci0+c2V0SGFzQWxwaGEoZmFsc2UpOwogCiAgICAgICAgIGlmICghbV9p
c1RvcERvd24pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9n
aWYvR0lGSW1hZ2VEZWNvZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcAkocmV2aXNpb24gMjA1
ODQxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRklt
YWdlRGVjb2Rlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyMSwxMCArMzIxLDcgQEAgdm9pZCBH
SUZJbWFnZURlY29kZXI6OmRlY29kZSh1bnNpZ25lZCBoYQogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgY29uc3Qgc2l6ZV90IG9sZFNpemUgPSBtX2ZyYW1lQnVmZmVyQ2FjaGUuc2l6ZSgp
OwogICAgIG1fZnJhbWVCdWZmZXJDYWNoZS5yZXNpemUobV9yZWFkZXItPmltYWdlc0NvdW50KCkp
OwotICAgIGZvciAoc2l6ZV90IGkgPSBvbGRTaXplOyBpIDwgbV9yZWFkZXItPmltYWdlc0NvdW50
KCk7ICsraSkKLSAgICAgICAgbV9mcmFtZUJ1ZmZlckNhY2hlW2ldLnNldFByZW11bHRpcGx5QWxw
aGEobV9wcmVtdWx0aXBseUFscGhhKTsKIAogICAgIGlmIChxdWVyeSA9PSBHSUZGcmFtZUNvdW50
UXVlcnkpCiAgICAgICAgIHJldHVybjsKQEAgLTM2MSw3ICszNTgsNyBAQCBib29sIEdJRkltYWdl
RGVjb2Rlcjo6aW5pdEZyYW1lQnVmZmVyKHVuCiAKICAgICBpZiAoIWZyYW1lSW5kZXgpIHsKICAg
ICAgICAgLy8gVGhpcyBpcyB0aGUgZmlyc3QgZnJhbWUsIHNvIHdlJ3JlIG5vdCByZWx5aW5nIG9u
IGFueSBwcmV2aW91cyBkYXRhLgotICAgICAgICBpZiAoIWJ1ZmZlci0+c2V0U2l6ZShzY2FsZWRT
aXplKCkpKQorICAgICAgICBpZiAoIWJ1ZmZlci0+aW5pdGlhbGl6ZUJhY2tpbmdTdG9yZShzY2Fs
ZWRTaXplKCksIG1fcHJlbXVsdGlwbHlBbHBoYSkpCiAgICAgICAgICAgICByZXR1cm4gc2V0RmFp
bGVkKCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gVGhlIHN0YXJ0aW5nIHN0YXRlIGZvciB0
aGlzIGZyYW1lIGRlcGVuZHMgb24gdGhlIHByZXZpb3VzIGZyYW1lJ3MKQEAgLTM4Miw3ICszNzks
NyBAQCBib29sIEdJRkltYWdlRGVjb2Rlcjo6aW5pdEZyYW1lQnVmZmVyKHVuCiAKICAgICAgICAg
aWYgKChwcmV2TWV0aG9kID09IEltYWdlRnJhbWU6OkRpc3Bvc2VOb3RTcGVjaWZpZWQpIHx8IChw
cmV2TWV0aG9kID09IEltYWdlRnJhbWU6OkRpc3Bvc2VLZWVwKSkgewogICAgICAgICAgICAgLy8g
UHJlc2VydmUgdGhlIGxhc3QgZnJhbWUgYXMgdGhlIHN0YXJ0aW5nIHN0YXRlIGZvciB0aGlzIGZy
YW1lLgotICAgICAgICAgICAgaWYgKCFidWZmZXItPmNvcHlCaXRtYXBEYXRhKCpwcmV2QnVmZmVy
KSkKKyAgICAgICAgICAgIGlmICghYnVmZmVyLT5pbml0aWFsaXplQmFja2luZ1N0b3JlKHByZXZC
dWZmZXItPmJhY2tpbmdTdG9yZSgpKSkKICAgICAgICAgICAgICAgICByZXR1cm4gc2V0RmFpbGVk
KCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvLyBXZSB3YW50IHRvIGNsZWFyIHRo
ZSBwcmV2aW91cyBmcmFtZSB0byB0cmFuc3BhcmVudCwgd2l0aG91dApAQCAtMzkyLDExICszODks
MTEgQEAgYm9vbCBHSUZJbWFnZURlY29kZXI6OmluaXRGcmFtZUJ1ZmZlcih1bgogICAgICAgICAg
ICAgaWYgKCFmcmFtZUluZGV4IHx8IHByZXZSZWN0LmNvbnRhaW5zKEludFJlY3QoSW50UG9pbnQo
KSwgc2NhbGVkU2l6ZSgpKSkpIHsKICAgICAgICAgICAgICAgICAvLyBDbGVhcmluZyB0aGUgZmly
c3QgZnJhbWUsIG9yIGEgZnJhbWUgdGhlIHNpemUgb2YgdGhlIHdob2xlCiAgICAgICAgICAgICAg
ICAgLy8gaW1hZ2UsIHJlc3VsdHMgaW4gYSBjb21wbGV0ZWx5IGVtcHR5IGltYWdlLgotICAgICAg
ICAgICAgICAgIGlmICghYnVmZmVyLT5zZXRTaXplKGJ1ZmZlclNpemUpKQorICAgICAgICAgICAg
ICAgIGlmICghYnVmZmVyLT5pbml0aWFsaXplQmFja2luZ1N0b3JlKGJ1ZmZlclNpemUsIG1fcHJl
bXVsdGlwbHlBbHBoYSkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZXRGYWlsZWQoKTsK
ICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgLy8gQ29weSB0aGUgd2hvbGUg
cHJldmlvdXMgYnVmZmVyLCB0aGVuIGNsZWFyIGp1c3QgaXRzIGZyYW1lLgotICAgICAgICAgICAg
ICAgIGlmICghYnVmZmVyLT5jb3B5Qml0bWFwRGF0YSgqcHJldkJ1ZmZlcikpCisgICAgICAgICAg
ICAgICAgaWYgKCFidWZmZXItPmluaXRpYWxpemVCYWNraW5nU3RvcmUocHJldkJ1ZmZlci0+YmFj
a2luZ1N0b3JlKCkpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2V0RmFpbGVkKCk7CiAg
ICAgICAgICAgICAgICAgYnVmZmVyLT56ZXJvRmlsbEZyYW1lUmVjdChwcmV2UmVjdCk7CiAgICAg
ICAgICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9p
Y28vSUNPSW1hZ2VEZWNvZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcAkocmV2aXNpb24gMjA1
ODQxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0lt
YWdlRGVjb2Rlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk4LDExICs5OCw4IEBAIGJvb2wgSUNP
SW1hZ2VEZWNvZGVyOjpzZXRTaXplKGNvbnN0IEludFMKIHNpemVfdCBJQ09JbWFnZURlY29kZXI6
OmZyYW1lQ291bnQoKQogewogICAgIGRlY29kZSgwLCB0cnVlKTsKLSAgICBpZiAobV9mcmFtZUJ1
ZmZlckNhY2hlLmlzRW1wdHkoKSkgeworICAgIGlmIChtX2ZyYW1lQnVmZmVyQ2FjaGUuaXNFbXB0
eSgpKQogICAgICAgICBtX2ZyYW1lQnVmZmVyQ2FjaGUucmVzaXplKG1fZGlyRW50cmllcy5zaXpl
KCkpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZGlyRW50cmllcy5zaXplKCk7
ICsraSkKLSAgICAgICAgICAgIG1fZnJhbWVCdWZmZXJDYWNoZVtpXS5zZXRQcmVtdWx0aXBseUFs
cGhhKG1fcHJlbXVsdGlwbHlBbHBoYSk7Ci0gICAgfQogICAgIC8vIENBVVRJT046IFdlIG11c3Qg
bm90IHJlc2l6ZSBtX2ZyYW1lQnVmZmVyQ2FjaGUgYWdhaW4gYWZ0ZXIgdGhpcywgYXMKICAgICAv
LyBkZWNvZGVBdEluZGV4KCkgbWF5IGdpdmUgYSBCTVBJbWFnZVJlYWRlciBhIHBvaW50ZXIgdG8g
b25lIG9mIHRoZQogICAgIC8vIGVudHJpZXMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVj
b2Rlci5jcHAJKHJldmlzaW9uIDIwNTg0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTUzMywxMCArNTMzLDggQEAgSW1hZ2VGcmFtZSogSlBFR0ltYWdlRGVjb2Rlcjo6ZnJhbWVCdWZm
ZQogICAgIGlmIChpbmRleCkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBpZiAobV9mcmFtZUJ1
ZmZlckNhY2hlLmlzRW1wdHkoKSkgeworICAgIGlmIChtX2ZyYW1lQnVmZmVyQ2FjaGUuaXNFbXB0
eSgpKQogICAgICAgICBtX2ZyYW1lQnVmZmVyQ2FjaGUucmVzaXplKDEpOwotICAgICAgICBtX2Zy
YW1lQnVmZmVyQ2FjaGVbMF0uc2V0UHJlbXVsdGlwbHlBbHBoYShtX3ByZW11bHRpcGx5QWxwaGEp
OwotICAgIH0KIAogICAgIEltYWdlRnJhbWUmIGZyYW1lID0gbV9mcmFtZUJ1ZmZlckNhY2hlWzBd
OwogICAgIGlmIChmcmFtZS5zdGF0dXMoKSAhPSBJbWFnZUZyYW1lOjpGcmFtZUNvbXBsZXRlKQpA
QCAtNjE3LDcgKzYxNSw3IEBAIGJvb2wgSlBFR0ltYWdlRGVjb2Rlcjo6b3V0cHV0U2NhbmxpbmVz
KCkKICAgICAvLyBJbml0aWFsaXplIHRoZSBmcmFtZWJ1ZmZlciBpZiBuZWVkZWQuCiAgICAgSW1h
Z2VGcmFtZSYgYnVmZmVyID0gbV9mcmFtZUJ1ZmZlckNhY2hlWzBdOwogICAgIGlmIChidWZmZXIu
c3RhdHVzKCkgPT0gSW1hZ2VGcmFtZTo6RnJhbWVFbXB0eSkgewotICAgICAgICBpZiAoIWJ1ZmZl
ci5zZXRTaXplKHNjYWxlZFNpemUoKSkpCisgICAgICAgIGlmICghYnVmZmVyLmluaXRpYWxpemVC
YWNraW5nU3RvcmUoc2NhbGVkU2l6ZSgpLCBtX3ByZW11bHRpcGx5QWxwaGEpKQogICAgICAgICAg
ICAgcmV0dXJuIHNldEZhaWxlZCgpOwogICAgICAgICBidWZmZXIuc2V0U3RhdHVzKEltYWdlRnJh
bWU6OkZyYW1lUGFydGlhbCk7CiAgICAgICAgIC8vIFRoZSBidWZmZXIgaXMgdHJhbnNwYXJlbnQg
b3V0c2lkZSB0aGUgZGVjb2RlZCBhcmVhIHdoaWxlIHRoZSBpbWFnZSBpcwpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5n
L1BOR0ltYWdlRGVjb2Rlci5jcHAJKHJldmlzaW9uIDIwNTg0MSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNTcsMTAgKzI1Nyw4IEBAIEltYWdlRnJhbWUqIFBOR0ltYWdlRGVjb2Rlcjo6
ZnJhbWVCdWZmZXIKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAjZW5kaWYKIAotICAgIGlmICht
X2ZyYW1lQnVmZmVyQ2FjaGUuaXNFbXB0eSgpKSB7CisgICAgaWYgKG1fZnJhbWVCdWZmZXJDYWNo
ZS5pc0VtcHR5KCkpCiAgICAgICAgIG1fZnJhbWVCdWZmZXJDYWNoZS5yZXNpemUoMSk7Ci0gICAg
ICAgIG1fZnJhbWVCdWZmZXJDYWNoZVswXS5zZXRQcmVtdWx0aXBseUFscGhhKG1fcHJlbXVsdGlw
bHlBbHBoYSk7Ci0gICAgfQogCiAgICAgSW1hZ2VGcmFtZSYgZnJhbWUgPSBtX2ZyYW1lQnVmZmVy
Q2FjaGVbaW5kZXhdOwogICAgIGlmIChmcmFtZS5zdGF0dXMoKSAhPSBJbWFnZUZyYW1lOjpGcmFt
ZUNvbXBsZXRlKQpAQCAtNDExLDI5ICs0MDksNiBAQCB2b2lkIFBOR0ltYWdlRGVjb2Rlcjo6aGVh
ZGVyQXZhaWxhYmxlKCkKICAgICB9CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBzZXRQaXhlbFJH
QihSR0JBMzIqIGRlc3QsIHBuZ19ieXRlcCBwaXhlbCkKLXsKLSAgICAqZGVzdCA9IDB4RkYwMDAw
MDBVIHwgcGl4ZWxbMF0gPDwgMTYgfCBwaXhlbFsxXSA8PCA4IHwgcGl4ZWxbMl07Ci19Ci0KLXN0
YXRpYyBpbmxpbmUgdm9pZCBzZXRQaXhlbFJHQkEoUkdCQTMyKiBkZXN0LCBwbmdfYnl0ZXAgcGl4
ZWwsIHVuc2lnbmVkIGNoYXImIG5vblRyaXZpYWxBbHBoYU1hc2spCi17Ci0gICAgdW5zaWduZWQg
Y2hhciBhID0gcGl4ZWxbM107Ci0gICAgKmRlc3QgPSBhIDw8IDI0IHwgcGl4ZWxbMF0gPDwgMTYg
fCBwaXhlbFsxXSA8PCA4IHwgcGl4ZWxbMl07Ci0gICAgbm9uVHJpdmlhbEFscGhhTWFzayB8PSAo
MjU1IC0gYSk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgdm9pZCBzZXRQaXhlbFByZW11bHRpcGxpZWRS
R0JBKFJHQkEzMiogZGVzdCwgcG5nX2J5dGVwIHBpeGVsLCB1bnNpZ25lZCBjaGFyJiBub25Ucml2
aWFsQWxwaGFNYXNrKQotewotICAgIHVuc2lnbmVkIGNoYXIgYSA9IHBpeGVsWzNdOwotICAgIHVu
c2lnbmVkIGNoYXIgciA9IGZhc3REaXZpZGVCeTI1NShwaXhlbFswXSAqIGEpOwotICAgIHVuc2ln
bmVkIGNoYXIgZyA9IGZhc3REaXZpZGVCeTI1NShwaXhlbFsxXSAqIGEpOwotICAgIHVuc2lnbmVk
IGNoYXIgYiA9IGZhc3REaXZpZGVCeTI1NShwaXhlbFsyXSAqIGEpOwotCi0gICAgKmRlc3QgPSBh
IDw8IDI0IHwgciA8PCAxNiB8IGcgPDwgOCB8IGI7Ci0gICAgbm9uVHJpdmlhbEFscGhhTWFzayB8
PSAoMjU1IC0gYSk7Ci19Ci0KIHZvaWQgUE5HSW1hZ2VEZWNvZGVyOjpyb3dBdmFpbGFibGUodW5z
aWduZWQgY2hhciogcm93QnVmZmVyLCB1bnNpZ25lZCByb3dJbmRleCwgaW50KQogewogICAgIGlm
IChtX2ZyYW1lQnVmZmVyQ2FjaGUuaXNFbXB0eSgpKQpAQCAtNDQ3LDcgKzQyMiw3IEBAIHZvaWQg
UE5HSW1hZ2VEZWNvZGVyOjpyb3dBdmFpbGFibGUodW5zaWcKICAgICBJbWFnZUZyYW1lJiBidWZm
ZXIgPSBtX2ZyYW1lQnVmZmVyQ2FjaGVbbV9jdXJyZW50RnJhbWVdOwogICAgIGlmIChidWZmZXIu
c3RhdHVzKCkgPT0gSW1hZ2VGcmFtZTo6RnJhbWVFbXB0eSkgewogICAgICAgICBwbmdfc3RydWN0
cCBwbmcgPSBtX3JlYWRlci0+cG5nUHRyKCk7Ci0gICAgICAgIGlmICghYnVmZmVyLnNldFNpemUo
c2NhbGVkU2l6ZSgpKSkgeworICAgICAgICBpZiAoIWJ1ZmZlci5pbml0aWFsaXplQmFja2luZ1N0
b3JlKHNjYWxlZFNpemUoKSwgbV9wcmVtdWx0aXBseUFscGhhKSkgewogICAgICAgICAgICAgbG9u
Z2ptcChKTVBCVUYocG5nKSwgMSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAg
LTUzNCwxMCArNTA5LDEwIEBAIHZvaWQgUE5HSW1hZ2VEZWNvZGVyOjpyb3dBdmFpbGFibGUodW5z
aWcKIAogI2lmIEVOQUJMRShJTUFHRV9ERUNPREVSX0RPV05fU0FNUExJTkcpCiAgICAgaWYgKG1f
c2NhbGVkKSB7Ci0gICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgd2lkdGg7ICsreCkgeworICAg
ICAgICBmb3IgKGludCB4ID0gMDsgeCA8IHdpZHRoOyArK3gsICsrYWRkcmVzcykgewogICAgICAg
ICAgICAgcG5nX2J5dGVwIHBpeGVsID0gcm93ICsgbV9zY2FsZWRDb2x1bW5zW3hdICogY29sb3JD
aGFubmVsczsKICAgICAgICAgICAgIHVuc2lnbmVkIGFscGhhID0gaGFzQWxwaGEgPyBwaXhlbFsz
XSA6IDI1NTsKLSAgICAgICAgICAgIGJ1ZmZlci5zZXRQaXhlbChhZGRyZXNzKyssIHBpeGVsWzBd
LCBwaXhlbFsxXSwgcGl4ZWxbMl0sIGFscGhhKTsKKyAgICAgICAgICAgIGJ1ZmZlci5zZXRQaXhl
bChhZGRyZXNzLCBwaXhlbFswXSwgcGl4ZWxbMV0sIHBpeGVsWzJdLCBhbHBoYSk7CiAgICAgICAg
ICAgICBub25Ucml2aWFsQWxwaGFNYXNrIHw9ICgyNTUgLSBhbHBoYSk7CiAgICAgICAgIH0KICAg
ICB9IGVsc2UKQEAgLTU0NSwyMCArNTIwLDE3IEBAIHZvaWQgUE5HSW1hZ2VEZWNvZGVyOjpyb3dB
dmFpbGFibGUodW5zaWcKICAgICB7CiAgICAgICAgIHBuZ19ieXRlcCBwaXhlbCA9IHJvdzsKICAg
ICAgICAgaWYgKGhhc0FscGhhKSB7Ci0gICAgICAgICAgICBpZiAoYnVmZmVyLnByZW11bHRpcGx5
QWxwaGEoKSkgewotICAgICAgICAgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgd2lkdGg7ICsr
eCwgcGl4ZWwgKz0gNCkKLSAgICAgICAgICAgICAgICAgICAgc2V0UGl4ZWxQcmVtdWx0aXBsaWVk
UkdCQShhZGRyZXNzKyssIHBpeGVsLCBub25Ucml2aWFsQWxwaGFNYXNrKTsKLSAgICAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCB3aWR0aDsgKyt4
LCBwaXhlbCArPSA0KQotICAgICAgICAgICAgICAgICAgICBzZXRQaXhlbFJHQkEoYWRkcmVzcysr
LCBwaXhlbCwgbm9uVHJpdmlhbEFscGhhTWFzayk7CisgICAgICAgICAgICBmb3IgKGludCB4ID0g
MDsgeCA8IHdpZHRoOyArK3gsIHBpeGVsICs9IDQsICsrYWRkcmVzcykgeworICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGFscGhhID0gcGl4ZWxbM107CisgICAgICAgICAgICAgICAgYnVmZmVyLnNl
dFBpeGVsKGFkZHJlc3MsIHBpeGVsWzBdLCBwaXhlbFsxXSwgcGl4ZWxbMl0sIGFscGhhKTsKKyAg
ICAgICAgICAgICAgICBub25Ucml2aWFsQWxwaGFNYXNrIHw9ICgyNTUgLSBhbHBoYSk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBmb3IgKGludCB4ID0gMDsg
eCA8IHdpZHRoOyArK3gsIHBpeGVsICs9IDMpCi0gICAgICAgICAgICAgICAgc2V0UGl4ZWxSR0Io
YWRkcmVzcysrLCBwaXhlbCk7CisgICAgICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IHdpZHRo
OyArK3gsIHBpeGVsICs9IDMsICsrYWRkcmVzcykKKyAgICAgICAgICAgICAgICAqYWRkcmVzcyA9
IG1ha2VSR0IocGl4ZWxbMF0sIHBpeGVsWzFdLCBwaXhlbFsyXSk7CiAgICAgICAgIH0KICAgICB9
CiAKLQogICAgIGlmIChub25Ucml2aWFsQWxwaGFNYXNrICYmICFidWZmZXIuaGFzQWxwaGEoKSkK
ICAgICAgICAgYnVmZmVyLnNldEhhc0FscGhhKHRydWUpOwogfQpAQCAtNjE4LDggKzU5MCw2IEBA
IHZvaWQgUE5HSW1hZ2VEZWNvZGVyOjpyZWFkQ2h1bmtzKHBuZ191bmsKICAgICAgICAgICAgIHJl
dHVybjsKIAogICAgICAgICBtX2ZyYW1lQnVmZmVyQ2FjaGUucmVzaXplKG1fZnJhbWVDb3VudCk7
Ci0gICAgICAgIGZvciAoYXV0byYgaW1hZ2VGcmFtZSA6IG1fZnJhbWVCdWZmZXJDYWNoZSkKLSAg
ICAgICAgICAgIGltYWdlRnJhbWUuc2V0UHJlbXVsdGlwbHlBbHBoYShtX3ByZW11bHRpcGx5QWxw
aGEpOwogICAgIH0gZWxzZSBpZiAoIW1lbWNtcChjaHVuay0+bmFtZSwgImZjVEwiLCA0KSAmJiBj
aHVuay0+c2l6ZSA9PSAyNikgewogICAgICAgICBpZiAobV9oYXNJbmZvICYmICFtX2lzQW5pbWF0
ZWQpCiAgICAgICAgICAgICByZXR1cm47CkBAIC02NjEsMTAgKzYzMSw4IEBAIHZvaWQgUE5HSW1h
Z2VEZWNvZGVyOjpyZWFkQ2h1bmtzKHBuZ191bmsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogCi0gICAgICAgIGlmIChtX2ZyYW1lQnVmZmVyQ2FjaGUuaXNFbXB0eSgpKSB7CisgICAg
ICAgIGlmIChtX2ZyYW1lQnVmZmVyQ2FjaGUuaXNFbXB0eSgpKQogICAgICAgICAgICAgbV9mcmFt
ZUJ1ZmZlckNhY2hlLnJlc2l6ZSgxKTsKLSAgICAgICAgICAgIG1fZnJhbWVCdWZmZXJDYWNoZVsw
XS5zZXRQcmVtdWx0aXBseUFscGhhKG1fcHJlbXVsdGlwbHlBbHBoYSk7Ci0gICAgICAgIH0KIAog
ICAgICAgICBpZiAobV9jdXJyZW50RnJhbWUgPCBtX2ZyYW1lQnVmZmVyQ2FjaGUuc2l6ZSgpKSB7
CiAgICAgICAgICAgICBJbWFnZUZyYW1lJiBidWZmZXIgPSBtX2ZyYW1lQnVmZmVyQ2FjaGVbbV9j
dXJyZW50RnJhbWVdOwpAQCAtODEzLDcgKzc4MSw3IEBAIHZvaWQgUE5HSW1hZ2VEZWNvZGVyOjpp
bml0RnJhbWVCdWZmZXIoc2kKIAogICAgIGlmIChwcmV2TWV0aG9kID09IEltYWdlRnJhbWU6OkRp
c3Bvc2VLZWVwKSB7CiAgICAgICAgIC8vIFByZXNlcnZlIHRoZSBsYXN0IGZyYW1lIGFzIHRoZSBz
dGFydGluZyBzdGF0ZSBmb3IgdGhpcyBmcmFtZS4KLSAgICAgICAgYnVmZmVyLmNvcHlCaXRtYXBE
YXRhKCpwcmV2QnVmZmVyKTsKKyAgICAgICAgYnVmZmVyLmluaXRpYWxpemVCYWNraW5nU3RvcmUo
cHJldkJ1ZmZlci0+YmFja2luZ1N0b3JlKCkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIFdl
IHdhbnQgdG8gY2xlYXIgdGhlIHByZXZpb3VzIGZyYW1lIHRvIHRyYW5zcGFyZW50LCB3aXRob3V0
CiAgICAgICAgIC8vIGFmZmVjdGluZyBwaXhlbHMgaW4gdGhlIGltYWdlIG91dHNpZGUgb2YgdGhl
IGZyYW1lLgpAQCAtODI0LDcgKzc5Miw3IEBAIHZvaWQgUE5HSW1hZ2VEZWNvZGVyOjppbml0RnJh
bWVCdWZmZXIoc2kKICAgICAgICAgICAgIGJ1ZmZlci56ZXJvRmlsbFBpeGVsRGF0YSgpOwogICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgLy8gQ29weSB0aGUgd2hvbGUgcHJldmlvdXMgYnVm
ZmVyLCB0aGVuIGNsZWFyIGp1c3QgaXRzIGZyYW1lLgotICAgICAgICAgICAgYnVmZmVyLmNvcHlC
aXRtYXBEYXRhKCpwcmV2QnVmZmVyKTsKKyAgICAgICAgICAgIGJ1ZmZlci5pbml0aWFsaXplQmFj
a2luZ1N0b3JlKHByZXZCdWZmZXItPmJhY2tpbmdTdG9yZSgpKTsKICAgICAgICAgICAgIGJ1ZmZl
ci56ZXJvRmlsbEZyYW1lUmVjdChwcmV2UmVjdCk7CiAgICAgICAgIH0KICAgICB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29k
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAJKHJldmlzaW9uIDIwNTg0MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTc4LDEwICs3OCw4IEBAIEltYWdlRnJhbWUqIFdFQlBJbWFn
ZURlY29kZXI6OmZyYW1lQnVmZmUKICAgICBpZiAoaW5kZXgpCiAgICAgICAgIHJldHVybiAwOwog
Ci0gICAgaWYgKG1fZnJhbWVCdWZmZXJDYWNoZS5pc0VtcHR5KCkpIHsKKyAgICBpZiAobV9mcmFt
ZUJ1ZmZlckNhY2hlLmlzRW1wdHkoKSkKICAgICAgICAgbV9mcmFtZUJ1ZmZlckNhY2hlLnJlc2l6
ZSgxKTsKLSAgICAgICAgbV9mcmFtZUJ1ZmZlckNhY2hlWzBdLnNldFByZW11bHRpcGx5QWxwaGEo
bV9wcmVtdWx0aXBseUFscGhhKTsKLSAgICB9CiAKICAgICBJbWFnZUZyYW1lJiBmcmFtZSA9IG1f
ZnJhbWVCdWZmZXJDYWNoZVswXTsKICAgICBpZiAoZnJhbWUuc3RhdHVzKCkgIT0gSW1hZ2VGcmFt
ZTo6RnJhbWVDb21wbGV0ZSkKQEAgLTEyOCw3ICsxMjYsNyBAQCBib29sIFdFQlBJbWFnZURlY29k
ZXI6OmRlY29kZShib29sIG9ubHlTCiAgICAgQVNTRVJUKGJ1ZmZlci5zdGF0dXMoKSAhPSBJbWFn
ZUZyYW1lOjpGcmFtZUNvbXBsZXRlKTsKIAogICAgIGlmIChidWZmZXIuc3RhdHVzKCkgPT0gSW1h
Z2VGcmFtZTo6RnJhbWVFbXB0eSkgewotICAgICAgICBpZiAoIWJ1ZmZlci5zZXRTaXplKHNpemUo
KSkpCisgICAgICAgIGlmICghYnVmZmVyLmluaXRpYWxpemVCYWNraW5nU3RvcmUoc2l6ZSgpLCBt
X3ByZW11bHRpcGx5QWxwaGEpKQogICAgICAgICAgICAgcmV0dXJuIHNldEZhaWxlZCgpOwogICAg
ICAgICBidWZmZXIuc2V0U3RhdHVzKEltYWdlRnJhbWU6OkZyYW1lUGFydGlhbCk7CiAgICAgICAg
IGJ1ZmZlci5zZXRIYXNBbHBoYShtX2hhc0FscGhhKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>288698</attachid>
            <date>2016-09-13 10:55:11 -0700</date>
            <delta_ts>2016-09-13 12:41:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159721-20160913105236.patch</filename>
            <type>text/plain</type>
            <size>21079</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNTg2MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUxIEBACisyMDE2LTA5LTEzICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgR2V0IHJpZCBv
ZiB0aGUgbV9wcmVtdWx0aXBseUFscGhhIGZsYWcgb2YgdGhlIEltYWdlRnJhbWUgY2xhc3MKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTcyMQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgZmxhZyB3
YXMgb25seSBuZWVkZWQgd2hlbiBjYWxsaW5nIEltYWdlQmFja2luZ1N0b3JlOjpjcmVhdGUoKSBp
biAKKyAgICAgICAgSW1hZ2VGcmFtZTo6c2V0U2l6ZSgpLiBJbnN0ZWFkIHdlIGNhbiBwYXNzIElt
YWdlRGVjb2Rlcjo6bV9wcmVtdWx0aXBseUFscGhhIAorICAgICAgICB0byBJbWFnZUZyYW1lOjpz
ZXRTaXplKCksIHdoaWNoIHNob3VsZCBiZSByZW5hbWVkIEltYWdlRnJhbWU6OmluaXRpYWxpemVC
YWNraW5nU3RvcmUoKS4KKyAgICAgICAgVGhlIHBhc3NlZCBwcmVtdWx0aXBseUFscGhhIGNhbiB0
aGVuIGJlIHBhc3NlZCB0byBJbWFnZUJhY2tpbmdTdG9yZTo6Y3JlYXRlKCkuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VGcmFtZTo6SW1hZ2VGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZy
YW1lOjpvcGVyYXRvcj0pOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6aW5pdGlhbGl6
ZUJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpjb3B5Qml0bWFw
RGF0YSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpzZXRTaXplKTog
RGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OmRpc3Bvc2FsTWV0aG9kKToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OnNldERpc3Bvc2FsTWV0aG9kKToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlRGVjb2Rlcjo6cHJlbXVsdGlwbHlBbHBoYSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZUZyYW1lOjpwcmVtdWx0aXBseUFscGhhKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlRnJhbWU6OnNldFByZW11bHRpcGx5QWxwaGEpOiBEZWxldGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Qk1QSW1hZ2VEZWNvZGVyOjpmcmFtZUJ1ZmZlckF0SW5kZXgpOgorICAgICAg
ICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpCTVBJbWFnZVJlYWRlcjo6ZGVjb2RlQk1QKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkdJRkltYWdlRGVjb2Rlcjo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkdJRklt
YWdlRGVjb2Rlcjo6aW5pdEZyYW1lQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklDT0lt
YWdlRGVjb2Rlcjo6ZnJhbWVDb3VudCk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpQRUdJbWFn
ZURlY29kZXI6OmZyYW1lQnVmZmVyQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpKUEVHSW1h
Z2VEZWNvZGVyOjpvdXRwdXRTY2FubGluZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UE5HSW1h
Z2VEZWNvZGVyOjpmcmFtZUJ1ZmZlckF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6UE5HSW1h
Z2VEZWNvZGVyOjpyb3dBdmFpbGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6UE5HSW1hZ2VEZWNv
ZGVyOjpyZWFkQ2h1bmtzKToKKyAgICAgICAgKFdlYkNvcmU6OlBOR0ltYWdlRGVjb2Rlcjo6aW5p
dEZyYW1lQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldFBpeGVsUkdCKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OnNldFBpeGVsUkdCQSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpzZXRQaXhlbFByZW11bHRpcGxpZWRSR0JBKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V0VCUEltYWdlRGVjb2Rlcjo6ZnJhbWVCdWZmZXJBdEluZGV4KToKKyAgICAgICAg
KFdlYkNvcmU6OldFQlBJbWFnZURlY29kZXI6OmRlY29kZSk6CisKIDIwMTYtMDktMTIgIFphbGFu
IEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBJbnB1dCB0eXBlIG9iamVjdCBh
bmQgdGhlIGFzc29jaWF0ZWQgcmVuZGVyIGNhbiBnbyBvdXQgb2Ygc3luYy4KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNv
ZGVyLmNwcAkocmV2aXNpb24gMjA1ODQxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMyLDcgKzEz
Miw2IEBAIEltYWdlRnJhbWU6OkltYWdlRnJhbWUoKQogICAgICwgbV9zdGF0dXMoRnJhbWVFbXB0
eSkKICAgICAsIG1fZHVyYXRpb24oMCkKICAgICAsIG1fZGlzcG9zYWxNZXRob2QoRGlzcG9zZU5v
dFNwZWNpZmllZCkKLSAgICAsIG1fcHJlbXVsdGlwbHlBbHBoYSh0cnVlKQogewogfSAKIApAQCAt
MTQxLDEyICsxNDAsMTEgQEAgSW1hZ2VGcmFtZSYgSW1hZ2VGcmFtZTo6b3BlcmF0b3I9KGNvbnN0
IAogICAgIGlmICh0aGlzID09ICZvdGhlcikKICAgICAgICAgcmV0dXJuICp0aGlzOwogCi0gICAg
Y29weUJpdG1hcERhdGEob3RoZXIpOworICAgIGluaXRpYWxpemVCYWNraW5nU3RvcmUob3RoZXIu
YmFja2luZ1N0b3JlKCkpOwogICAgIHNldEhhc0FscGhhKG90aGVyLm1faGFzQWxwaGEpOwogICAg
IHNldFN0YXR1cyhvdGhlci5zdGF0dXMoKSk7CiAgICAgc2V0RHVyYXRpb24ob3RoZXIuZHVyYXRp
b24oKSk7CiAgICAgc2V0RGlzcG9zYWxNZXRob2Qob3RoZXIuZGlzcG9zYWxNZXRob2QoKSk7Ci0g
ICAgc2V0UHJlbXVsdGlwbHlBbHBoYShvdGhlci5wcmVtdWx0aXBseUFscGhhKCkpOwogICAgIHJl
dHVybiAqdGhpczsKIH0KIApAQCAtMTc1LDIzICsxNzMsMjQgQEAgdm9pZCBJbWFnZUZyYW1lOjp6
ZXJvRmlsbEZyYW1lUmVjdChjb25zdAogICAgIHNldEhhc0FscGhhKHRydWUpOwogfQogCi1ib29s
IEltYWdlRnJhbWU6OmNvcHlCaXRtYXBEYXRhKGNvbnN0IEltYWdlRnJhbWUmIG90aGVyKQorYm9v
bCBJbWFnZUZyYW1lOjppbml0aWFsaXplQmFja2luZ1N0b3JlKGNvbnN0IEltYWdlQmFja2luZ1N0
b3JlKiBiYWNraW5nU3RvcmUpCiB7Ci0gICAgaWYgKHRoaXMgPT0gJm90aGVyKQorICAgIGlmICgh
YmFja2luZ1N0b3JlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoYmFja2luZ1N0
b3JlID09IHRoaXMtPmJhY2tpbmdTdG9yZSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAg
IGlmIChvdGhlci5tX2JhY2tpbmdTdG9yZSkKLSAgICAgICAgbV9iYWNraW5nU3RvcmUgPSBJbWFn
ZUJhY2tpbmdTdG9yZTo6Y3JlYXRlKCpvdGhlci5tX2JhY2tpbmdTdG9yZS5nZXQoKSk7Ci0gICAg
ZWxzZQotICAgICAgICBtX2JhY2tpbmdTdG9yZSA9IG51bGxwdHI7Ci0gICAgCi0gICAgcmV0dXJu
IHRydWU7CisgICAgbV9iYWNraW5nU3RvcmUgPSBJbWFnZUJhY2tpbmdTdG9yZTo6Y3JlYXRlKCpi
YWNraW5nU3RvcmUpOworICAgIHJldHVybiBtX2JhY2tpbmdTdG9yZSAhPSBudWxscHRyOwogfQog
Ci1ib29sIEltYWdlRnJhbWU6OnNldFNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKK2Jvb2wgSW1h
Z2VGcmFtZTo6aW5pdGlhbGl6ZUJhY2tpbmdTdG9yZShjb25zdCBJbnRTaXplJiBzaXplLCBib29s
IHByZW11bHRpcGx5QWxwaGEpCiB7Ci0gICAgQVNTRVJUKCFtX2JhY2tpbmdTdG9yZSk7Ci0gICAg
bV9iYWNraW5nU3RvcmUgPSBJbWFnZUJhY2tpbmdTdG9yZTo6Y3JlYXRlKHNpemUsIG1fcHJlbXVs
dGlwbHlBbHBoYSk7CisgICAgaWYgKHNpemUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBtX2JhY2tpbmdTdG9yZSA9IEltYWdlQmFja2luZ1N0b3JlOjpjcmVhdGUoc2l6
ZSwgcHJlbXVsdGlwbHlBbHBoYSk7CiAgICAgcmV0dXJuIG1fYmFja2luZ1N0b3JlICE9IG51bGxw
dHI7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0lt
YWdlRGVjb2Rlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oCShyZXZpc2lvbiAyMDU4NDEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtNzIsMTIgKzcyLDcgQEAgdXNpbmcgQ29sb3JQcm9maWxlID0gVmVjdG9yPGNoYXI+Owog
ICAgICAgICB2b2lkIGNsZWFyUGl4ZWxEYXRhKCk7CiAgICAgICAgIHZvaWQgemVyb0ZpbGxQaXhl
bERhdGEoKTsKICAgICAgICAgdm9pZCB6ZXJvRmlsbEZyYW1lUmVjdChjb25zdCBJbnRSZWN0Jik7
Ci0KLSAgICAgICAgLy8gTWFrZXMgdGhpcyBmcmFtZSBoYXZlIGFuIGluZGVwZW5kZW50IGNvcHkg
b2YgdGhlIHByb3ZpZGVkIGltYWdlJ3MKLSAgICAgICAgLy8gcGl4ZWwgZGF0YSwgc28gdGhhdCBt
b2RpZmljYXRpb25zIGluIG9uZSBmcmFtZSBhcmUgbm90IHJlZmxlY3RlZCBpbgotICAgICAgICAv
LyB0aGUgb3RoZXIuICBSZXR1cm5zIHdoZXRoZXIgdGhlIGNvcHkgc3VjY2VlZGVkLgotICAgICAg
ICBib29sIGNvcHlCaXRtYXBEYXRhKGNvbnN0IEltYWdlRnJhbWUmKTsKLQorICAgICAgICAKICAg
ICAgICAgLy8gQ29waWVzIHRoZSBwaXhlbCBkYXRhIGF0IFsoc3RhcnRYLCBzdGFydFkpLCAoZW5k
WCwgc3RhcnRZKSkgdG8gdGhlCiAgICAgICAgIC8vIHNhbWUgWC1jb29yZGluYXRlcyBvbiBlYWNo
IHN1YnNlcXVlbnQgcm93IHVwIHRvIGJ1dCBub3QgaW5jbHVkaW5nCiAgICAgICAgIC8vIGVuZFku
CkBAIC04NiwxMCArODEsMTQgQEAgdXNpbmcgQ29sb3JQcm9maWxlID0gVmVjdG9yPGNoYXI+Owog
ICAgICAgICAgICAgbV9iYWNraW5nU3RvcmUtPnJlcGVhdEZpcnN0Um93KEludFJlY3Qoc3RhcnRY
LCBzdGFydFksIGVuZFggLXN0YXJ0WCAsIGVuZFkgLSBzdGFydFkpKTsKICAgICAgICAgfQogCi0g
ICAgICAgIC8vIEFsbG9jYXRlcyBzcGFjZSBmb3IgdGhlIHBpeGVsIGRhdGEuICBNdXN0IGJlIGNh
bGxlZCBiZWZvcmUgYW55IHBpeGVscwotICAgICAgICAvLyBhcmUgd3JpdHRlbi4gIE11c3Qgb25s
eSBiZSBjYWxsZWQgb25jZS4gIFJldHVybnMgd2hldGhlciBhbGxvY2F0aW9uCi0gICAgICAgIC8v
IHN1Y2NlZWRlZC4KLSAgICAgICAgYm9vbCBzZXRTaXplKGNvbnN0IEludFNpemUmKTsKKyAgICAg
ICAgLy8gTWFrZXMgdGhpcyBmcmFtZSBoYXZlIGFuIGluZGVwZW5kZW50IGNvcHkgb2YgdGhlIHBy
b3ZpZGVkIGltYWdlJ3MKKyAgICAgICAgLy8gcGl4ZWwgZGF0YSwgc28gdGhhdCBtb2RpZmljYXRp
b25zIGluIG9uZSBmcmFtZSBhcmUgbm90IHJlZmxlY3RlZCBpbgorICAgICAgICAvLyB0aGUgb3Ro
ZXIuIFJldHVybnMgd2hldGhlciB0aGUgY29weSBzdWNjZWVkZWQuCisgICAgICAgIGJvb2wgaW5p
dGlhbGl6ZUJhY2tpbmdTdG9yZShjb25zdCBJbWFnZUJhY2tpbmdTdG9yZSopOworCisgICAgICAg
IC8vIEFsbG9jYXRlcyBzcGFjZSBmb3IgdGhlIHBpeGVsIGRhdGEuIFJldHVybnMgd2hldGhlciBh
bGxvY2F0aW9uIHN1Y2NlZWRlZC4KKyAgICAgICAgYm9vbCBpbml0aWFsaXplQmFja2luZ1N0b3Jl
KGNvbnN0IEludFNpemUmLCBib29sIHByZW11bHRpcGx5QWxwaGEpOworCiAgICAgICAgIEludFNp
emUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2luZ1N0b3JlID8gbV9iYWNraW5nU3RvcmUt
PnNpemUoKSA6IEludFNpemUoKTsgfQogCiAgICAgICAgIC8vIFJldHVybnMgYSBjYWxsZXItb3du
ZWQgcG9pbnRlciB0byB0aGUgdW5kZXJseWluZyBuYXRpdmUgaW1hZ2UgZGF0YS4KQEAgLTEwNSwx
NCArMTA0LDEyIEBAIHVzaW5nIENvbG9yUHJvZmlsZSA9IFZlY3RvcjxjaGFyPjsKICAgICAgICAg
RnJhbWVTdGF0dXMgc3RhdHVzKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0dXM7IH0KICAgICAgICAg
dW5zaWduZWQgZHVyYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2R1cmF0aW9uOyB9CiAgICAgICAg
IEZyYW1lRGlzcG9zYWxNZXRob2QgZGlzcG9zYWxNZXRob2QoKSBjb25zdCB7IHJldHVybiBtX2Rp
c3Bvc2FsTWV0aG9kOyB9Ci0gICAgICAgIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSgpIGNvbnN0IHsg
cmV0dXJuIG1fcHJlbXVsdGlwbHlBbHBoYTsgfQogCiAgICAgICAgIHZvaWQgc2V0SGFzQWxwaGEo
Ym9vbCBhbHBoYSk7CiAgICAgICAgIHZvaWQgc2V0T3JpZ2luYWxGcmFtZVJlY3QoY29uc3QgSW50
UmVjdCYpOwogICAgICAgICB2b2lkIHNldFN0YXR1cyhGcmFtZVN0YXR1cyBzdGF0dXMpOwogICAg
ICAgICB2b2lkIHNldER1cmF0aW9uKHVuc2lnbmVkIGR1cmF0aW9uKSB7IG1fZHVyYXRpb24gPSBk
dXJhdGlvbjsgfQogICAgICAgICB2b2lkIHNldERpc3Bvc2FsTWV0aG9kKEZyYW1lRGlzcG9zYWxN
ZXRob2QgbWV0aG9kKSB7IG1fZGlzcG9zYWxNZXRob2QgPSBtZXRob2Q7IH0KLSAgICAgICAgdm9p
ZCBzZXRQcmVtdWx0aXBseUFscGhhKGJvb2wgcHJlbXVsdGlwbHlBbHBoYSkgeyBtX3ByZW11bHRp
cGx5QWxwaGEgPSBwcmVtdWx0aXBseUFscGhhOyB9CiAKICAgICAgICAgaW5saW5lIFJHQkEzMiog
cGl4ZWxBdChpbnQgeCwgaW50IHkpCiAgICAgICAgIHsKQEAgLTE0Niw3ICsxNDMsNiBAQCB1c2lu
ZyBDb2xvclByb2ZpbGUgPSBWZWN0b3I8Y2hhcj47CiAgICAgICAgIEZyYW1lU3RhdHVzIG1fc3Rh
dHVzOwogICAgICAgICB1bnNpZ25lZCBtX2R1cmF0aW9uOwogICAgICAgICBGcmFtZURpc3Bvc2Fs
TWV0aG9kIG1fZGlzcG9zYWxNZXRob2Q7Ci0gICAgICAgIGJvb2wgbV9wcmVtdWx0aXBseUFscGhh
OwogICAgIH07CiAKICAgICAvLyBJbWFnZURlY29kZXIgaXMgYSBiYXNlIGZvciBhbGwgZm9ybWF0
LXNwZWNpZmljIGRlY29kZXJzCkBAIC0xNzQsNiArMTcwLDggQEAgdXNpbmcgQ29sb3JQcm9maWxl
ID0gVmVjdG9yPGNoYXI+OwogICAgICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlRGVj
b2Rlcj4gY3JlYXRlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSwgSW1hZ2VTb3VyY2U6OkFscGhh
T3B0aW9uLCBJbWFnZVNvdXJjZTo6R2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwogCiAgICAg
ICAgIHZpcnR1YWwgU3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3QgPSAwOworICAgICAg
ICAKKyAgICAgICAgYm9vbCBwcmVtdWx0aXBseUFscGhhKCkgY29uc3QgeyByZXR1cm4gbV9wcmVt
dWx0aXBseUFscGhhOyB9CiAKICAgICAgICAgYm9vbCBpc0FsbERhdGFSZWNlaXZlZCgpIGNvbnN0
IHsgcmV0dXJuIG1faXNBbGxEYXRhUmVjZWl2ZWQ7IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdl
RGVjb2Rlci5jcHAJKHJldmlzaW9uIDIwNTg0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC03MCwxMCArNzAsOCBAQCBJbWFnZUZyYW1lKiBCTVBJbWFnZURlY29kZXI6OmZyYW1lQnVmZmVy
CiAgICAgaWYgKGluZGV4KQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGlmIChtX2ZyYW1lQnVm
ZmVyQ2FjaGUuaXNFbXB0eSgpKSB7CisgICAgaWYgKG1fZnJhbWVCdWZmZXJDYWNoZS5pc0VtcHR5
KCkpCiAgICAgICAgIG1fZnJhbWVCdWZmZXJDYWNoZS5yZXNpemUoMSk7Ci0gICAgICAgIG1fZnJh
bWVCdWZmZXJDYWNoZS5maXJzdCgpLnNldFByZW11bHRpcGx5QWxwaGEobV9wcmVtdWx0aXBseUFs
cGhhKTsKLSAgICB9CiAKICAgICBJbWFnZUZyYW1lKiBidWZmZXIgPSAmbV9mcmFtZUJ1ZmZlckNh
Y2hlLmZpcnN0KCk7CiAgICAgaWYgKGJ1ZmZlci0+c3RhdHVzKCkgIT0gSW1hZ2VGcmFtZTo6RnJh
bWVDb21wbGV0ZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2JtcC9CTVBJbWFnZVJlYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVhZGVyLmNwcAkocmV2aXNpb24gMjA1
ODQxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUElt
YWdlUmVhZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzgsMTIgKzc4LDEwIEBAIGJvb2wgQk1Q
SW1hZ2VSZWFkZXI6OmRlY29kZUJNUChib29sIG9ubHkKICAgICAvLyBJbml0aWFsaXplIHRoZSBm
cmFtZWJ1ZmZlciBpZiBuZWVkZWQuCiAgICAgQVNTRVJUKG1fYnVmZmVyKTsgIC8vIFBhcmVudCBz
aG91bGQgc2V0IHRoaXMgYmVmb3JlIGFza2luZyB1cyB0byBkZWNvZGUhCiAgICAgaWYgKG1fYnVm
ZmVyLT5zdGF0dXMoKSA9PSBJbWFnZUZyYW1lOjpGcmFtZUVtcHR5KSB7Ci0gICAgICAgIGlmICgh
bV9idWZmZXItPnNldFNpemUobV9wYXJlbnQtPnNpemUoKSkpCisgICAgICAgIGlmICghbV9idWZm
ZXItPmluaXRpYWxpemVCYWNraW5nU3RvcmUobV9wYXJlbnQtPnNpemUoKSwgbV9wYXJlbnQtPnBy
ZW11bHRpcGx5QWxwaGEoKSkpCiAgICAgICAgICAgICByZXR1cm4gbV9wYXJlbnQtPnNldEZhaWxl
ZCgpOyAvLyBVbmFibGUgdG8gYWxsb2NhdGUuCisKICAgICAgICAgbV9idWZmZXItPnNldFN0YXR1
cyhJbWFnZUZyYW1lOjpGcmFtZVBhcnRpYWwpOwotICAgICAgICAvLyBzZXRTaXplKCkgY2FsbHMg
ZXJhc2VBUkdCKCksIHdoaWNoIHJlc2V0cyB0aGUgYWxwaGEgZmxhZywgc28gd2UgZm9yY2UKLSAg
ICAgICAgLy8gaXQgYmFjayB0byBmYWxzZSBoZXJlLiAgV2UnbGwgc2V0IGl0IHRydWUgYmVsb3cg
aW4gYWxsIGNhc2VzIHdoZXJlCi0gICAgICAgIC8vIHRoZXNlIDBzIGNvdWxkIGFjdHVhbGx5IHNo
b3cgdGhyb3VnaC4KICAgICAgICAgbV9idWZmZXItPnNldEhhc0FscGhhKGZhbHNlKTsKIAogICAg
ICAgICBpZiAoIW1faXNUb3BEb3duKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAJ
KHJldmlzaW9uIDIwNTg0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjEsMTAgKzMy
MSw3IEBAIHZvaWQgR0lGSW1hZ2VEZWNvZGVyOjpkZWNvZGUodW5zaWduZWQgaGEKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIGNvbnN0IHNpemVfdCBvbGRTaXplID0gbV9mcmFtZUJ1ZmZl
ckNhY2hlLnNpemUoKTsKICAgICBtX2ZyYW1lQnVmZmVyQ2FjaGUucmVzaXplKG1fcmVhZGVyLT5p
bWFnZXNDb3VudCgpKTsKLSAgICBmb3IgKHNpemVfdCBpID0gb2xkU2l6ZTsgaSA8IG1fcmVhZGVy
LT5pbWFnZXNDb3VudCgpOyArK2kpCi0gICAgICAgIG1fZnJhbWVCdWZmZXJDYWNoZVtpXS5zZXRQ
cmVtdWx0aXBseUFscGhhKG1fcHJlbXVsdGlwbHlBbHBoYSk7CiAKICAgICBpZiAocXVlcnkgPT0g
R0lGRnJhbWVDb3VudFF1ZXJ5KQogICAgICAgICByZXR1cm47CkBAIC0zNjEsNyArMzU4LDcgQEAg
Ym9vbCBHSUZJbWFnZURlY29kZXI6OmluaXRGcmFtZUJ1ZmZlcih1bgogCiAgICAgaWYgKCFmcmFt
ZUluZGV4KSB7CiAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGZpcnN0IGZyYW1lLCBzbyB3ZSdyZSBu
b3QgcmVseWluZyBvbiBhbnkgcHJldmlvdXMgZGF0YS4KLSAgICAgICAgaWYgKCFidWZmZXItPnNl
dFNpemUoc2NhbGVkU2l6ZSgpKSkKKyAgICAgICAgaWYgKCFidWZmZXItPmluaXRpYWxpemVCYWNr
aW5nU3RvcmUoc2NhbGVkU2l6ZSgpLCBtX3ByZW11bHRpcGx5QWxwaGEpKQogICAgICAgICAgICAg
cmV0dXJuIHNldEZhaWxlZCgpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIFRoZSBzdGFydGlu
ZyBzdGF0ZSBmb3IgdGhpcyBmcmFtZSBkZXBlbmRzIG9uIHRoZSBwcmV2aW91cyBmcmFtZSdzCkBA
IC0zODIsNyArMzc5LDcgQEAgYm9vbCBHSUZJbWFnZURlY29kZXI6OmluaXRGcmFtZUJ1ZmZlcih1
bgogCiAgICAgICAgIGlmICgocHJldk1ldGhvZCA9PSBJbWFnZUZyYW1lOjpEaXNwb3NlTm90U3Bl
Y2lmaWVkKSB8fCAocHJldk1ldGhvZCA9PSBJbWFnZUZyYW1lOjpEaXNwb3NlS2VlcCkpIHsKICAg
ICAgICAgICAgIC8vIFByZXNlcnZlIHRoZSBsYXN0IGZyYW1lIGFzIHRoZSBzdGFydGluZyBzdGF0
ZSBmb3IgdGhpcyBmcmFtZS4KLSAgICAgICAgICAgIGlmICghYnVmZmVyLT5jb3B5Qml0bWFwRGF0
YSgqcHJldkJ1ZmZlcikpCisgICAgICAgICAgICBpZiAoIWJ1ZmZlci0+aW5pdGlhbGl6ZUJhY2tp
bmdTdG9yZShwcmV2QnVmZmVyLT5iYWNraW5nU3RvcmUoKSkpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIHNldEZhaWxlZCgpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgLy8gV2Ugd2Fu
dCB0byBjbGVhciB0aGUgcHJldmlvdXMgZnJhbWUgdG8gdHJhbnNwYXJlbnQsIHdpdGhvdXQKQEAg
LTM5MiwxMSArMzg5LDExIEBAIGJvb2wgR0lGSW1hZ2VEZWNvZGVyOjppbml0RnJhbWVCdWZmZXIo
dW4KICAgICAgICAgICAgIGlmICghZnJhbWVJbmRleCB8fCBwcmV2UmVjdC5jb250YWlucyhJbnRS
ZWN0KEludFBvaW50KCksIHNjYWxlZFNpemUoKSkpKSB7CiAgICAgICAgICAgICAgICAgLy8gQ2xl
YXJpbmcgdGhlIGZpcnN0IGZyYW1lLCBvciBhIGZyYW1lIHRoZSBzaXplIG9mIHRoZSB3aG9sZQog
ICAgICAgICAgICAgICAgIC8vIGltYWdlLCByZXN1bHRzIGluIGEgY29tcGxldGVseSBlbXB0eSBp
bWFnZS4KLSAgICAgICAgICAgICAgICBpZiAoIWJ1ZmZlci0+c2V0U2l6ZShidWZmZXJTaXplKSkK
KyAgICAgICAgICAgICAgICBpZiAoIWJ1ZmZlci0+aW5pdGlhbGl6ZUJhY2tpbmdTdG9yZShidWZm
ZXJTaXplLCBtX3ByZW11bHRpcGx5QWxwaGEpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4g
c2V0RmFpbGVkKCk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIC8vIENv
cHkgdGhlIHdob2xlIHByZXZpb3VzIGJ1ZmZlciwgdGhlbiBjbGVhciBqdXN0IGl0cyBmcmFtZS4K
LSAgICAgICAgICAgICAgICBpZiAoIWJ1ZmZlci0+Y29weUJpdG1hcERhdGEoKnByZXZCdWZmZXIp
KQorICAgICAgICAgICAgICAgIGlmICghYnVmZmVyLT5pbml0aWFsaXplQmFja2luZ1N0b3JlKHBy
ZXZCdWZmZXItPmJhY2tpbmdTdG9yZSgpKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNl
dEZhaWxlZCgpOwogICAgICAgICAgICAgICAgIGJ1ZmZlci0+emVyb0ZpbGxGcmFtZVJlY3QocHJl
dlJlY3QpOwogICAgICAgICAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAJ
KHJldmlzaW9uIDIwNTg0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05OCwxMSArOTgs
OCBAQCBib29sIElDT0ltYWdlRGVjb2Rlcjo6c2V0U2l6ZShjb25zdCBJbnRTCiBzaXplX3QgSUNP
SW1hZ2VEZWNvZGVyOjpmcmFtZUNvdW50KCkKIHsKICAgICBkZWNvZGUoMCwgdHJ1ZSk7Ci0gICAg
aWYgKG1fZnJhbWVCdWZmZXJDYWNoZS5pc0VtcHR5KCkpIHsKKyAgICBpZiAobV9mcmFtZUJ1ZmZl
ckNhY2hlLmlzRW1wdHkoKSkKICAgICAgICAgbV9mcmFtZUJ1ZmZlckNhY2hlLnJlc2l6ZShtX2Rp
ckVudHJpZXMuc2l6ZSgpKTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2RpckVu
dHJpZXMuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBtX2ZyYW1lQnVmZmVyQ2FjaGVbaV0uc2V0
UHJlbXVsdGlwbHlBbHBoYShtX3ByZW11bHRpcGx5QWxwaGEpOwotICAgIH0KICAgICAvLyBDQVVU
SU9OOiBXZSBtdXN0IG5vdCByZXNpemUgbV9mcmFtZUJ1ZmZlckNhY2hlIGFnYWluIGFmdGVyIHRo
aXMsIGFzCiAgICAgLy8gZGVjb2RlQXRJbmRleCgpIG1heSBnaXZlIGEgQk1QSW1hZ2VSZWFkZXIg
YSBwb2ludGVyIHRvIG9uZSBvZiB0aGUKICAgICAvLyBlbnRyaWVzLgpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVn
L0pQRUdJbWFnZURlY29kZXIuY3BwCShyZXZpc2lvbiAyMDU4NDEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01MzMsMTAgKzUzMyw4IEBAIEltYWdlRnJhbWUqIEpQRUdJbWFnZURlY29k
ZXI6OmZyYW1lQnVmZmUKICAgICBpZiAoaW5kZXgpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAg
aWYgKG1fZnJhbWVCdWZmZXJDYWNoZS5pc0VtcHR5KCkpIHsKKyAgICBpZiAobV9mcmFtZUJ1ZmZl
ckNhY2hlLmlzRW1wdHkoKSkKICAgICAgICAgbV9mcmFtZUJ1ZmZlckNhY2hlLnJlc2l6ZSgxKTsK
LSAgICAgICAgbV9mcmFtZUJ1ZmZlckNhY2hlWzBdLnNldFByZW11bHRpcGx5QWxwaGEobV9wcmVt
dWx0aXBseUFscGhhKTsKLSAgICB9CiAKICAgICBJbWFnZUZyYW1lJiBmcmFtZSA9IG1fZnJhbWVC
dWZmZXJDYWNoZVswXTsKICAgICBpZiAoZnJhbWUuc3RhdHVzKCkgIT0gSW1hZ2VGcmFtZTo6RnJh
bWVDb21wbGV0ZSkKQEAgLTYxNyw3ICs2MTUsNyBAQCBib29sIEpQRUdJbWFnZURlY29kZXI6Om91
dHB1dFNjYW5saW5lcygpCiAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgZnJhbWVidWZmZXIgaWYgbmVl
ZGVkLgogICAgIEltYWdlRnJhbWUmIGJ1ZmZlciA9IG1fZnJhbWVCdWZmZXJDYWNoZVswXTsKICAg
ICBpZiAoYnVmZmVyLnN0YXR1cygpID09IEltYWdlRnJhbWU6OkZyYW1lRW1wdHkpIHsKLSAgICAg
ICAgaWYgKCFidWZmZXIuc2V0U2l6ZShzY2FsZWRTaXplKCkpKQorICAgICAgICBpZiAoIWJ1ZmZl
ci5pbml0aWFsaXplQmFja2luZ1N0b3JlKHNjYWxlZFNpemUoKSwgbV9wcmVtdWx0aXBseUFscGhh
KSkKICAgICAgICAgICAgIHJldHVybiBzZXRGYWlsZWQoKTsKICAgICAgICAgYnVmZmVyLnNldFN0
YXR1cyhJbWFnZUZyYW1lOjpGcmFtZVBhcnRpYWwpOwogICAgICAgICAvLyBUaGUgYnVmZmVyIGlz
IHRyYW5zcGFyZW50IG91dHNpZGUgdGhlIGRlY29kZWQgYXJlYSB3aGlsZSB0aGUgaW1hZ2UgaXMK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFn
ZURlY29kZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwCShyZXZpc2lvbiAyMDU4NDEpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjU3LDEwICsyNTcsOCBAQCBJbWFnZUZyYW1lKiBQTkdJ
bWFnZURlY29kZXI6OmZyYW1lQnVmZmVyCiAgICAgICAgIHJldHVybiBudWxscHRyOwogI2VuZGlm
CiAKLSAgICBpZiAobV9mcmFtZUJ1ZmZlckNhY2hlLmlzRW1wdHkoKSkgeworICAgIGlmIChtX2Zy
YW1lQnVmZmVyQ2FjaGUuaXNFbXB0eSgpKQogICAgICAgICBtX2ZyYW1lQnVmZmVyQ2FjaGUucmVz
aXplKDEpOwotICAgICAgICBtX2ZyYW1lQnVmZmVyQ2FjaGVbMF0uc2V0UHJlbXVsdGlwbHlBbHBo
YShtX3ByZW11bHRpcGx5QWxwaGEpOwotICAgIH0KIAogICAgIEltYWdlRnJhbWUmIGZyYW1lID0g
bV9mcmFtZUJ1ZmZlckNhY2hlW2luZGV4XTsKICAgICBpZiAoZnJhbWUuc3RhdHVzKCkgIT0gSW1h
Z2VGcmFtZTo6RnJhbWVDb21wbGV0ZSkKQEAgLTQxMSwyOSArNDA5LDYgQEAgdm9pZCBQTkdJbWFn
ZURlY29kZXI6OmhlYWRlckF2YWlsYWJsZSgpCiAgICAgfQogfQogCi1zdGF0aWMgaW5saW5lIHZv
aWQgc2V0UGl4ZWxSR0IoUkdCQTMyKiBkZXN0LCBwbmdfYnl0ZXAgcGl4ZWwpCi17Ci0gICAgKmRl
c3QgPSAweEZGMDAwMDAwVSB8IHBpeGVsWzBdIDw8IDE2IHwgcGl4ZWxbMV0gPDwgOCB8IHBpeGVs
WzJdOwotfQotCi1zdGF0aWMgaW5saW5lIHZvaWQgc2V0UGl4ZWxSR0JBKFJHQkEzMiogZGVzdCwg
cG5nX2J5dGVwIHBpeGVsLCB1bnNpZ25lZCBjaGFyJiBub25Ucml2aWFsQWxwaGFNYXNrKQotewot
ICAgIHVuc2lnbmVkIGNoYXIgYSA9IHBpeGVsWzNdOwotICAgICpkZXN0ID0gYSA8PCAyNCB8IHBp
eGVsWzBdIDw8IDE2IHwgcGl4ZWxbMV0gPDwgOCB8IHBpeGVsWzJdOwotICAgIG5vblRyaXZpYWxB
bHBoYU1hc2sgfD0gKDI1NSAtIGEpOwotfQotCi1zdGF0aWMgaW5saW5lIHZvaWQgc2V0UGl4ZWxQ
cmVtdWx0aXBsaWVkUkdCQShSR0JBMzIqIGRlc3QsIHBuZ19ieXRlcCBwaXhlbCwgdW5zaWduZWQg
Y2hhciYgbm9uVHJpdmlhbEFscGhhTWFzaykKLXsKLSAgICB1bnNpZ25lZCBjaGFyIGEgPSBwaXhl
bFszXTsKLSAgICB1bnNpZ25lZCBjaGFyIHIgPSBmYXN0RGl2aWRlQnkyNTUocGl4ZWxbMF0gKiBh
KTsKLSAgICB1bnNpZ25lZCBjaGFyIGcgPSBmYXN0RGl2aWRlQnkyNTUocGl4ZWxbMV0gKiBhKTsK
LSAgICB1bnNpZ25lZCBjaGFyIGIgPSBmYXN0RGl2aWRlQnkyNTUocGl4ZWxbMl0gKiBhKTsKLQot
ICAgICpkZXN0ID0gYSA8PCAyNCB8IHIgPDwgMTYgfCBnIDw8IDggfCBiOwotICAgIG5vblRyaXZp
YWxBbHBoYU1hc2sgfD0gKDI1NSAtIGEpOwotfQotCiB2b2lkIFBOR0ltYWdlRGVjb2Rlcjo6cm93
QXZhaWxhYmxlKHVuc2lnbmVkIGNoYXIqIHJvd0J1ZmZlciwgdW5zaWduZWQgcm93SW5kZXgsIGlu
dCkKIHsKICAgICBpZiAobV9mcmFtZUJ1ZmZlckNhY2hlLmlzRW1wdHkoKSkKQEAgLTQ0Nyw3ICs0
MjIsNyBAQCB2b2lkIFBOR0ltYWdlRGVjb2Rlcjo6cm93QXZhaWxhYmxlKHVuc2lnCiAgICAgSW1h
Z2VGcmFtZSYgYnVmZmVyID0gbV9mcmFtZUJ1ZmZlckNhY2hlW21fY3VycmVudEZyYW1lXTsKICAg
ICBpZiAoYnVmZmVyLnN0YXR1cygpID09IEltYWdlRnJhbWU6OkZyYW1lRW1wdHkpIHsKICAgICAg
ICAgcG5nX3N0cnVjdHAgcG5nID0gbV9yZWFkZXItPnBuZ1B0cigpOwotICAgICAgICBpZiAoIWJ1
ZmZlci5zZXRTaXplKHNjYWxlZFNpemUoKSkpIHsKKyAgICAgICAgaWYgKCFidWZmZXIuaW5pdGlh
bGl6ZUJhY2tpbmdTdG9yZShzY2FsZWRTaXplKCksIG1fcHJlbXVsdGlwbHlBbHBoYSkpIHsKICAg
ICAgICAgICAgIGxvbmdqbXAoSk1QQlVGKHBuZyksIDEpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CkBAIC01MzQsMTAgKzUwOSwxMCBAQCB2b2lkIFBOR0ltYWdlRGVjb2Rlcjo6cm93
QXZhaWxhYmxlKHVuc2lnCiAKICNpZiBFTkFCTEUoSU1BR0VfREVDT0RFUl9ET1dOX1NBTVBMSU5H
KQogICAgIGlmIChtX3NjYWxlZCkgewotICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IHdpZHRo
OyArK3gpIHsKKyAgICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCB3aWR0aDsgKyt4LCArK2FkZHJl
c3MpIHsKICAgICAgICAgICAgIHBuZ19ieXRlcCBwaXhlbCA9IHJvdyArIG1fc2NhbGVkQ29sdW1u
c1t4XSAqIGNvbG9yQ2hhbm5lbHM7CiAgICAgICAgICAgICB1bnNpZ25lZCBhbHBoYSA9IGhhc0Fs
cGhhID8gcGl4ZWxbM10gOiAyNTU7Ci0gICAgICAgICAgICBidWZmZXIuc2V0UGl4ZWwoYWRkcmVz
cysrLCBwaXhlbFswXSwgcGl4ZWxbMV0sIHBpeGVsWzJdLCBhbHBoYSk7CisgICAgICAgICAgICBi
dWZmZXIuc2V0UGl4ZWwoYWRkcmVzcywgcGl4ZWxbMF0sIHBpeGVsWzFdLCBwaXhlbFsyXSwgYWxw
aGEpOwogICAgICAgICAgICAgbm9uVHJpdmlhbEFscGhhTWFzayB8PSAoMjU1IC0gYWxwaGEpOwog
ICAgICAgICB9CiAgICAgfSBlbHNlCkBAIC01NDUsMjAgKzUyMCwxNyBAQCB2b2lkIFBOR0ltYWdl
RGVjb2Rlcjo6cm93QXZhaWxhYmxlKHVuc2lnCiAgICAgewogICAgICAgICBwbmdfYnl0ZXAgcGl4
ZWwgPSByb3c7CiAgICAgICAgIGlmIChoYXNBbHBoYSkgewotICAgICAgICAgICAgaWYgKGJ1ZmZl
ci5wcmVtdWx0aXBseUFscGhhKCkpIHsKLSAgICAgICAgICAgICAgICBmb3IgKGludCB4ID0gMDsg
eCA8IHdpZHRoOyArK3gsIHBpeGVsICs9IDQpCi0gICAgICAgICAgICAgICAgICAgIHNldFBpeGVs
UHJlbXVsdGlwbGllZFJHQkEoYWRkcmVzcysrLCBwaXhlbCwgbm9uVHJpdmlhbEFscGhhTWFzayk7
Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGZvciAoaW50IHggPSAwOyB4
IDwgd2lkdGg7ICsreCwgcGl4ZWwgKz0gNCkKLSAgICAgICAgICAgICAgICAgICAgc2V0UGl4ZWxS
R0JBKGFkZHJlc3MrKywgcGl4ZWwsIG5vblRyaXZpYWxBbHBoYU1hc2spOworICAgICAgICAgICAg
Zm9yIChpbnQgeCA9IDA7IHggPCB3aWR0aDsgKyt4LCBwaXhlbCArPSA0LCArK2FkZHJlc3MpIHsK
KyAgICAgICAgICAgICAgICB1bnNpZ25lZCBhbHBoYSA9IHBpeGVsWzNdOworICAgICAgICAgICAg
ICAgIGJ1ZmZlci5zZXRQaXhlbChhZGRyZXNzLCBwaXhlbFswXSwgcGl4ZWxbMV0sIHBpeGVsWzJd
LCBhbHBoYSk7CisgICAgICAgICAgICAgICAgbm9uVHJpdmlhbEFscGhhTWFzayB8PSAoMjU1IC0g
YWxwaGEpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgZm9y
IChpbnQgeCA9IDA7IHggPCB3aWR0aDsgKyt4LCBwaXhlbCArPSAzKQotICAgICAgICAgICAgICAg
IHNldFBpeGVsUkdCKGFkZHJlc3MrKywgcGl4ZWwpOworICAgICAgICAgICAgZm9yIChpbnQgeCA9
IDA7IHggPCB3aWR0aDsgKyt4LCBwaXhlbCArPSAzLCArK2FkZHJlc3MpCisgICAgICAgICAgICAg
ICAgKmFkZHJlc3MgPSBtYWtlUkdCKHBpeGVsWzBdLCBwaXhlbFsxXSwgcGl4ZWxbMl0pOwogICAg
ICAgICB9CiAgICAgfQogCi0KICAgICBpZiAobm9uVHJpdmlhbEFscGhhTWFzayAmJiAhYnVmZmVy
Lmhhc0FscGhhKCkpCiAgICAgICAgIGJ1ZmZlci5zZXRIYXNBbHBoYSh0cnVlKTsKIH0KQEAgLTYx
OCw4ICs1OTAsNiBAQCB2b2lkIFBOR0ltYWdlRGVjb2Rlcjo6cmVhZENodW5rcyhwbmdfdW5rCiAg
ICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgbV9mcmFtZUJ1ZmZlckNhY2hlLnJlc2l6ZSht
X2ZyYW1lQ291bnQpOwotICAgICAgICBmb3IgKGF1dG8mIGltYWdlRnJhbWUgOiBtX2ZyYW1lQnVm
ZmVyQ2FjaGUpCi0gICAgICAgICAgICBpbWFnZUZyYW1lLnNldFByZW11bHRpcGx5QWxwaGEobV9w
cmVtdWx0aXBseUFscGhhKTsKICAgICB9IGVsc2UgaWYgKCFtZW1jbXAoY2h1bmstPm5hbWUsICJm
Y1RMIiwgNCkgJiYgY2h1bmstPnNpemUgPT0gMjYpIHsKICAgICAgICAgaWYgKG1faGFzSW5mbyAm
JiAhbV9pc0FuaW1hdGVkKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtNjYxLDEwICs2MzEsOCBA
QCB2b2lkIFBOR0ltYWdlRGVjb2Rlcjo6cmVhZENodW5rcyhwbmdfdW5rCiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBpZiAobV9mcmFtZUJ1ZmZlckNhY2hlLmlzRW1w
dHkoKSkgeworICAgICAgICBpZiAobV9mcmFtZUJ1ZmZlckNhY2hlLmlzRW1wdHkoKSkKICAgICAg
ICAgICAgIG1fZnJhbWVCdWZmZXJDYWNoZS5yZXNpemUoMSk7Ci0gICAgICAgICAgICBtX2ZyYW1l
QnVmZmVyQ2FjaGVbMF0uc2V0UHJlbXVsdGlwbHlBbHBoYShtX3ByZW11bHRpcGx5QWxwaGEpOwot
ICAgICAgICB9CiAKICAgICAgICAgaWYgKG1fY3VycmVudEZyYW1lIDwgbV9mcmFtZUJ1ZmZlckNh
Y2hlLnNpemUoKSkgewogICAgICAgICAgICAgSW1hZ2VGcmFtZSYgYnVmZmVyID0gbV9mcmFtZUJ1
ZmZlckNhY2hlW21fY3VycmVudEZyYW1lXTsKQEAgLTgxMyw3ICs3ODEsNyBAQCB2b2lkIFBOR0lt
YWdlRGVjb2Rlcjo6aW5pdEZyYW1lQnVmZmVyKHNpCiAKICAgICBpZiAocHJldk1ldGhvZCA9PSBJ
bWFnZUZyYW1lOjpEaXNwb3NlS2VlcCkgewogICAgICAgICAvLyBQcmVzZXJ2ZSB0aGUgbGFzdCBm
cmFtZSBhcyB0aGUgc3RhcnRpbmcgc3RhdGUgZm9yIHRoaXMgZnJhbWUuCi0gICAgICAgIGJ1ZmZl
ci5jb3B5Qml0bWFwRGF0YSgqcHJldkJ1ZmZlcik7CisgICAgICAgIGJ1ZmZlci5pbml0aWFsaXpl
QmFja2luZ1N0b3JlKHByZXZCdWZmZXItPmJhY2tpbmdTdG9yZSgpKTsKICAgICB9IGVsc2Ugewog
ICAgICAgICAvLyBXZSB3YW50IHRvIGNsZWFyIHRoZSBwcmV2aW91cyBmcmFtZSB0byB0cmFuc3Bh
cmVudCwgd2l0aG91dAogICAgICAgICAvLyBhZmZlY3RpbmcgcGl4ZWxzIGluIHRoZSBpbWFnZSBv
dXRzaWRlIG9mIHRoZSBmcmFtZS4KQEAgLTgyNCw3ICs3OTIsNyBAQCB2b2lkIFBOR0ltYWdlRGVj
b2Rlcjo6aW5pdEZyYW1lQnVmZmVyKHNpCiAgICAgICAgICAgICBidWZmZXIuemVyb0ZpbGxQaXhl
bERhdGEoKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vIENvcHkgdGhlIHdob2xl
IHByZXZpb3VzIGJ1ZmZlciwgdGhlbiBjbGVhciBqdXN0IGl0cyBmcmFtZS4KLSAgICAgICAgICAg
IGJ1ZmZlci5jb3B5Qml0bWFwRGF0YSgqcHJldkJ1ZmZlcik7CisgICAgICAgICAgICBidWZmZXIu
aW5pdGlhbGl6ZUJhY2tpbmdTdG9yZShwcmV2QnVmZmVyLT5iYWNraW5nU3RvcmUoKSk7CiAgICAg
ICAgICAgICBidWZmZXIuemVyb0ZpbGxGcmFtZVJlY3QocHJldlJlY3QpOwogICAgICAgICB9CiAg
ICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9X
RUJQSW1hZ2VEZWNvZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwCShyZXZpc2lvbiAyMDU4
NDEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJ
bWFnZURlY29kZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OCwxMCArNzgsOCBAQCBJbWFnZUZy
YW1lKiBXRUJQSW1hZ2VEZWNvZGVyOjpmcmFtZUJ1ZmZlCiAgICAgaWYgKGluZGV4KQogICAgICAg
ICByZXR1cm4gMDsKIAotICAgIGlmIChtX2ZyYW1lQnVmZmVyQ2FjaGUuaXNFbXB0eSgpKSB7Cisg
ICAgaWYgKG1fZnJhbWVCdWZmZXJDYWNoZS5pc0VtcHR5KCkpCiAgICAgICAgIG1fZnJhbWVCdWZm
ZXJDYWNoZS5yZXNpemUoMSk7Ci0gICAgICAgIG1fZnJhbWVCdWZmZXJDYWNoZVswXS5zZXRQcmVt
dWx0aXBseUFscGhhKG1fcHJlbXVsdGlwbHlBbHBoYSk7Ci0gICAgfQogCiAgICAgSW1hZ2VGcmFt
ZSYgZnJhbWUgPSBtX2ZyYW1lQnVmZmVyQ2FjaGVbMF07CiAgICAgaWYgKGZyYW1lLnN0YXR1cygp
ICE9IEltYWdlRnJhbWU6OkZyYW1lQ29tcGxldGUpCkBAIC0xMjgsNyArMTI2LDcgQEAgYm9vbCBX
RUJQSW1hZ2VEZWNvZGVyOjpkZWNvZGUoYm9vbCBvbmx5UwogICAgIEFTU0VSVChidWZmZXIuc3Rh
dHVzKCkgIT0gSW1hZ2VGcmFtZTo6RnJhbWVDb21wbGV0ZSk7CiAKICAgICBpZiAoYnVmZmVyLnN0
YXR1cygpID09IEltYWdlRnJhbWU6OkZyYW1lRW1wdHkpIHsKLSAgICAgICAgaWYgKCFidWZmZXIu
c2V0U2l6ZShzaXplKCkpKQorICAgICAgICBpZiAoIWJ1ZmZlci5pbml0aWFsaXplQmFja2luZ1N0
b3JlKHNpemUoKSwgbV9wcmVtdWx0aXBseUFscGhhKSkKICAgICAgICAgICAgIHJldHVybiBzZXRG
YWlsZWQoKTsKICAgICAgICAgYnVmZmVyLnNldFN0YXR1cyhJbWFnZUZyYW1lOjpGcmFtZVBhcnRp
YWwpOwogICAgICAgICBidWZmZXIuc2V0SGFzQWxwaGEobV9oYXNBbHBoYSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>288717</attachid>
            <date>2016-09-13 12:41:41 -0700</date>
            <delta_ts>2016-09-13 12:54:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159721-20160913123906.patch</filename>
            <type>text/plain</type>
            <size>21320</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNTg2MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUxIEBACisyMDE2LTA5LTEzICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgR2V0IHJpZCBv
ZiB0aGUgbV9wcmVtdWx0aXBseUFscGhhIGZsYWcgb2YgdGhlIEltYWdlRnJhbWUgY2xhc3MKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTcyMQorCisg
ICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAgICBUaGlzIGZsYWcgd2Fz
IG9ubHkgbmVlZGVkIHdoZW4gY2FsbGluZyBJbWFnZUJhY2tpbmdTdG9yZTo6Y3JlYXRlKCkgaW4g
CisgICAgICAgIEltYWdlRnJhbWU6OnNldFNpemUoKS4gSW5zdGVhZCB3ZSBjYW4gcGFzcyBJbWFn
ZURlY29kZXI6Om1fcHJlbXVsdGlwbHlBbHBoYSAKKyAgICAgICAgdG8gSW1hZ2VGcmFtZTo6c2V0
U2l6ZSgpLCB3aGljaCBpcyByZW5hbWVkIEltYWdlRnJhbWU6OmluaXRpYWxpemVCYWNraW5nU3Rv
cmUoKS4KKyAgICAgICAgVGhlIHBhc3NlZCBwcmVtdWx0aXBseUFscGhhIGNhbiB0aGVuIGJlIHBh
c3NlZCB0byBJbWFnZUJhY2tpbmdTdG9yZTo6Y3JlYXRlKCkuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VGcmFtZTo6SW1hZ2VGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpvcGVy
YXRvcj0pOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6aW5pdGlhbGl6ZUJhY2tpbmdT
dG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpjb3B5Qml0bWFwRGF0YSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpzZXRTaXplKTogRGVsZXRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OmRpc3Bvc2FsTWV0aG9kKToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlRnJhbWU6OnNldERpc3Bvc2FsTWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlRGVjb2Rlcjo6cHJlbXVsdGlwbHlBbHBoYSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZy
YW1lOjpwcmVtdWx0aXBseUFscGhhKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
RnJhbWU6OnNldFByZW11bHRpcGx5QWxwaGEpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Qk1QSW1hZ2VEZWNvZGVyOjpmcmFtZUJ1ZmZlckF0SW5kZXgpOgorICAgICAgICAqIHBsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpCTVBJbWFnZVJlYWRlcjo6ZGVjb2RlQk1QKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdJ
RkltYWdlRGVjb2Rlcjo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkdJRkltYWdlRGVjb2Rl
cjo6aW5pdEZyYW1lQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9p
Y28vSUNPSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklDT0ltYWdlRGVjb2Rl
cjo6ZnJhbWVDb3VudCk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9K
UEVHSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpQRUdJbWFnZURlY29kZXI6
OmZyYW1lQnVmZmVyQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpKUEVHSW1hZ2VEZWNvZGVy
OjpvdXRwdXRTY2FubGluZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3Bu
Zy9QTkdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UE5HSW1hZ2VEZWNvZGVy
OjpmcmFtZUJ1ZmZlckF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6UE5HSW1hZ2VEZWNvZGVy
Ojpyb3dBdmFpbGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6UE5HSW1hZ2VEZWNvZGVyOjpyZWFk
Q2h1bmtzKToKKyAgICAgICAgKFdlYkNvcmU6OlBOR0ltYWdlRGVjb2Rlcjo6aW5pdEZyYW1lQnVm
ZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldFBpeGVsUkdCKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OnNldFBpeGVsUkdCQSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpzZXRQ
aXhlbFByZW11bHRpcGxpZWRSR0JBKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V0VCUEltYWdlRGVjb2Rlcjo6ZnJhbWVCdWZmZXJBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6
OldFQlBJbWFnZURlY29kZXI6OmRlY29kZSk6CisKIDIwMTYtMDktMTIgIFphbGFuIEJ1anRhcyAg
PHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBJbnB1dCB0eXBlIG9iamVjdCBhbmQgdGhlIGFz
c29jaWF0ZWQgcmVuZGVyIGNhbiBnbyBvdXQgb2Ygc3luYy4KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcAko
cmV2aXNpb24gMjA1ODQxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvSW1hZ2VEZWNvZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMyLDcgKzEzMiw2IEBAIElt
YWdlRnJhbWU6OkltYWdlRnJhbWUoKQogICAgICwgbV9zdGF0dXMoRnJhbWVFbXB0eSkKICAgICAs
IG1fZHVyYXRpb24oMCkKICAgICAsIG1fZGlzcG9zYWxNZXRob2QoRGlzcG9zZU5vdFNwZWNpZmll
ZCkKLSAgICAsIG1fcHJlbXVsdGlwbHlBbHBoYSh0cnVlKQogewogfSAKIApAQCAtMTQxLDEyICsx
NDAsMTMgQEAgSW1hZ2VGcmFtZSYgSW1hZ2VGcmFtZTo6b3BlcmF0b3I9KGNvbnN0IAogICAgIGlm
ICh0aGlzID09ICZvdGhlcikKICAgICAgICAgcmV0dXJuICp0aGlzOwogCi0gICAgY29weUJpdG1h
cERhdGEob3RoZXIpOworICAgIGlmIChvdGhlci5iYWNraW5nU3RvcmUoKSkKKyAgICAgICAgaW5p
dGlhbGl6ZUJhY2tpbmdTdG9yZSgqb3RoZXIuYmFja2luZ1N0b3JlKCkpOworCiAgICAgc2V0SGFz
QWxwaGEob3RoZXIubV9oYXNBbHBoYSk7CiAgICAgc2V0U3RhdHVzKG90aGVyLnN0YXR1cygpKTsK
ICAgICBzZXREdXJhdGlvbihvdGhlci5kdXJhdGlvbigpKTsKICAgICBzZXREaXNwb3NhbE1ldGhv
ZChvdGhlci5kaXNwb3NhbE1ldGhvZCgpKTsKLSAgICBzZXRQcmVtdWx0aXBseUFscGhhKG90aGVy
LnByZW11bHRpcGx5QWxwaGEoKSk7CiAgICAgcmV0dXJuICp0aGlzOwogfQogCkBAIC0xNzUsMjMg
KzE3NSwyMSBAQCB2b2lkIEltYWdlRnJhbWU6Onplcm9GaWxsRnJhbWVSZWN0KGNvbnN0CiAgICAg
c2V0SGFzQWxwaGEodHJ1ZSk7CiB9CiAKLWJvb2wgSW1hZ2VGcmFtZTo6Y29weUJpdG1hcERhdGEo
Y29uc3QgSW1hZ2VGcmFtZSYgb3RoZXIpCitib29sIEltYWdlRnJhbWU6OmluaXRpYWxpemVCYWNr
aW5nU3RvcmUoY29uc3QgSW1hZ2VCYWNraW5nU3RvcmUmIGJhY2tpbmdTdG9yZSkKIHsKLSAgICBp
ZiAodGhpcyA9PSAmb3RoZXIpCisgICAgaWYgKCZiYWNraW5nU3RvcmUgPT0gdGhpcy0+YmFja2lu
Z1N0b3JlKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYgKG90aGVyLm1fYmFja2lu
Z1N0b3JlKQotICAgICAgICBtX2JhY2tpbmdTdG9yZSA9IEltYWdlQmFja2luZ1N0b3JlOjpjcmVh
dGUoKm90aGVyLm1fYmFja2luZ1N0b3JlLmdldCgpKTsKLSAgICBlbHNlCi0gICAgICAgIG1fYmFj
a2luZ1N0b3JlID0gbnVsbHB0cjsKLSAgICAKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICBtX2JhY2tp
bmdTdG9yZSA9IEltYWdlQmFja2luZ1N0b3JlOjpjcmVhdGUoYmFja2luZ1N0b3JlKTsKKyAgICBy
ZXR1cm4gbV9iYWNraW5nU3RvcmUgIT0gbnVsbHB0cjsKIH0KIAotYm9vbCBJbWFnZUZyYW1lOjpz
ZXRTaXplKGNvbnN0IEludFNpemUmIHNpemUpCitib29sIEltYWdlRnJhbWU6OmluaXRpYWxpemVC
YWNraW5nU3RvcmUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhKQog
ewotICAgIEFTU0VSVCghbV9iYWNraW5nU3RvcmUpOwotICAgIG1fYmFja2luZ1N0b3JlID0gSW1h
Z2VCYWNraW5nU3RvcmU6OmNyZWF0ZShzaXplLCBtX3ByZW11bHRpcGx5QWxwaGEpOworICAgIGlm
IChzaXplLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgbV9iYWNraW5n
U3RvcmUgPSBJbWFnZUJhY2tpbmdTdG9yZTo6Y3JlYXRlKHNpemUsIHByZW11bHRpcGx5QWxwaGEp
OwogICAgIHJldHVybiBtX2JhY2tpbmdTdG9yZSAhPSBudWxscHRyOwogfQogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29k
ZXIuaAkocmV2aXNpb24gMjA1ODQxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTcyLDEyICs3Miw3IEBA
IHVzaW5nIENvbG9yUHJvZmlsZSA9IFZlY3RvcjxjaGFyPjsKICAgICAgICAgdm9pZCBjbGVhclBp
eGVsRGF0YSgpOwogICAgICAgICB2b2lkIHplcm9GaWxsUGl4ZWxEYXRhKCk7CiAgICAgICAgIHZv
aWQgemVyb0ZpbGxGcmFtZVJlY3QoY29uc3QgSW50UmVjdCYpOwotCi0gICAgICAgIC8vIE1ha2Vz
IHRoaXMgZnJhbWUgaGF2ZSBhbiBpbmRlcGVuZGVudCBjb3B5IG9mIHRoZSBwcm92aWRlZCBpbWFn
ZSdzCi0gICAgICAgIC8vIHBpeGVsIGRhdGEsIHNvIHRoYXQgbW9kaWZpY2F0aW9ucyBpbiBvbmUg
ZnJhbWUgYXJlIG5vdCByZWZsZWN0ZWQgaW4KLSAgICAgICAgLy8gdGhlIG90aGVyLiAgUmV0dXJu
cyB3aGV0aGVyIHRoZSBjb3B5IHN1Y2NlZWRlZC4KLSAgICAgICAgYm9vbCBjb3B5Qml0bWFwRGF0
YShjb25zdCBJbWFnZUZyYW1lJik7Ci0KKyAgICAgICAgCiAgICAgICAgIC8vIENvcGllcyB0aGUg
cGl4ZWwgZGF0YSBhdCBbKHN0YXJ0WCwgc3RhcnRZKSwgKGVuZFgsIHN0YXJ0WSkpIHRvIHRoZQog
ICAgICAgICAvLyBzYW1lIFgtY29vcmRpbmF0ZXMgb24gZWFjaCBzdWJzZXF1ZW50IHJvdyB1cCB0
byBidXQgbm90IGluY2x1ZGluZwogICAgICAgICAvLyBlbmRZLgpAQCAtODYsMTAgKzgxLDE0IEBA
IHVzaW5nIENvbG9yUHJvZmlsZSA9IFZlY3RvcjxjaGFyPjsKICAgICAgICAgICAgIG1fYmFja2lu
Z1N0b3JlLT5yZXBlYXRGaXJzdFJvdyhJbnRSZWN0KHN0YXJ0WCwgc3RhcnRZLCBlbmRYIC1zdGFy
dFggLCBlbmRZIC0gc3RhcnRZKSk7CiAgICAgICAgIH0KIAotICAgICAgICAvLyBBbGxvY2F0ZXMg
c3BhY2UgZm9yIHRoZSBwaXhlbCBkYXRhLiAgTXVzdCBiZSBjYWxsZWQgYmVmb3JlIGFueSBwaXhl
bHMKLSAgICAgICAgLy8gYXJlIHdyaXR0ZW4uICBNdXN0IG9ubHkgYmUgY2FsbGVkIG9uY2UuICBS
ZXR1cm5zIHdoZXRoZXIgYWxsb2NhdGlvbgotICAgICAgICAvLyBzdWNjZWVkZWQuCi0gICAgICAg
IGJvb2wgc2V0U2l6ZShjb25zdCBJbnRTaXplJik7CisgICAgICAgIC8vIE1ha2VzIHRoaXMgZnJh
bWUgaGF2ZSBhbiBpbmRlcGVuZGVudCBjb3B5IG9mIHRoZSBwcm92aWRlZCBpbWFnZSdzCisgICAg
ICAgIC8vIHBpeGVsIGRhdGEsIHNvIHRoYXQgbW9kaWZpY2F0aW9ucyBpbiBvbmUgZnJhbWUgYXJl
IG5vdCByZWZsZWN0ZWQgaW4KKyAgICAgICAgLy8gdGhlIG90aGVyLiBSZXR1cm5zIHdoZXRoZXIg
dGhlIGNvcHkgc3VjY2VlZGVkLgorICAgICAgICBib29sIGluaXRpYWxpemVCYWNraW5nU3RvcmUo
Y29uc3QgSW1hZ2VCYWNraW5nU3RvcmUmKTsKKworICAgICAgICAvLyBBbGxvY2F0ZXMgc3BhY2Ug
Zm9yIHRoZSBwaXhlbCBkYXRhLiBSZXR1cm5zIHdoZXRoZXIgYWxsb2NhdGlvbiBzdWNjZWVkZWQu
CisgICAgICAgIGJvb2wgaW5pdGlhbGl6ZUJhY2tpbmdTdG9yZShjb25zdCBJbnRTaXplJiwgYm9v
bCBwcmVtdWx0aXBseUFscGhhKTsKKwogICAgICAgICBJbnRTaXplIHNpemUoKSBjb25zdCB7IHJl
dHVybiBtX2JhY2tpbmdTdG9yZSA/IG1fYmFja2luZ1N0b3JlLT5zaXplKCkgOiBJbnRTaXplKCk7
IH0KIAogICAgICAgICAvLyBSZXR1cm5zIGEgY2FsbGVyLW93bmVkIHBvaW50ZXIgdG8gdGhlIHVu
ZGVybHlpbmcgbmF0aXZlIGltYWdlIGRhdGEuCkBAIC0xMDUsMTQgKzEwNCwxMiBAQCB1c2luZyBD
b2xvclByb2ZpbGUgPSBWZWN0b3I8Y2hhcj47CiAgICAgICAgIEZyYW1lU3RhdHVzIHN0YXR1cygp
IGNvbnN0IHsgcmV0dXJuIG1fc3RhdHVzOyB9CiAgICAgICAgIHVuc2lnbmVkIGR1cmF0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9kdXJhdGlvbjsgfQogICAgICAgICBGcmFtZURpc3Bvc2FsTWV0aG9k
IGRpc3Bvc2FsTWV0aG9kKCkgY29uc3QgeyByZXR1cm4gbV9kaXNwb3NhbE1ldGhvZDsgfQotICAg
ICAgICBib29sIHByZW11bHRpcGx5QWxwaGEoKSBjb25zdCB7IHJldHVybiBtX3ByZW11bHRpcGx5
QWxwaGE7IH0KIAogICAgICAgICB2b2lkIHNldEhhc0FscGhhKGJvb2wgYWxwaGEpOwogICAgICAg
ICB2b2lkIHNldE9yaWdpbmFsRnJhbWVSZWN0KGNvbnN0IEludFJlY3QmKTsKICAgICAgICAgdm9p
ZCBzZXRTdGF0dXMoRnJhbWVTdGF0dXMgc3RhdHVzKTsKICAgICAgICAgdm9pZCBzZXREdXJhdGlv
bih1bnNpZ25lZCBkdXJhdGlvbikgeyBtX2R1cmF0aW9uID0gZHVyYXRpb247IH0KICAgICAgICAg
dm9pZCBzZXREaXNwb3NhbE1ldGhvZChGcmFtZURpc3Bvc2FsTWV0aG9kIG1ldGhvZCkgeyBtX2Rp
c3Bvc2FsTWV0aG9kID0gbWV0aG9kOyB9Ci0gICAgICAgIHZvaWQgc2V0UHJlbXVsdGlwbHlBbHBo
YShib29sIHByZW11bHRpcGx5QWxwaGEpIHsgbV9wcmVtdWx0aXBseUFscGhhID0gcHJlbXVsdGlw
bHlBbHBoYTsgfQogCiAgICAgICAgIGlubGluZSBSR0JBMzIqIHBpeGVsQXQoaW50IHgsIGludCB5
KQogICAgICAgICB7CkBAIC0xNDYsNyArMTQzLDYgQEAgdXNpbmcgQ29sb3JQcm9maWxlID0gVmVj
dG9yPGNoYXI+OwogICAgICAgICBGcmFtZVN0YXR1cyBtX3N0YXR1czsKICAgICAgICAgdW5zaWdu
ZWQgbV9kdXJhdGlvbjsKICAgICAgICAgRnJhbWVEaXNwb3NhbE1ldGhvZCBtX2Rpc3Bvc2FsTWV0
aG9kOwotICAgICAgICBib29sIG1fcHJlbXVsdGlwbHlBbHBoYTsKICAgICB9OwogCiAgICAgLy8g
SW1hZ2VEZWNvZGVyIGlzIGEgYmFzZSBmb3IgYWxsIGZvcm1hdC1zcGVjaWZpYyBkZWNvZGVycwpA
QCAtMTc0LDYgKzE3MCw4IEBAIHVzaW5nIENvbG9yUHJvZmlsZSA9IFZlY3RvcjxjaGFyPjsKICAg
ICAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZURlY29kZXI+IGNyZWF0ZShjb25zdCBT
aGFyZWRCdWZmZXImIGRhdGEsIEltYWdlU291cmNlOjpBbHBoYU9wdGlvbiwgSW1hZ2VTb3VyY2U6
OkdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKIAogICAgICAgICB2aXJ0dWFsIFN0cmluZyBm
aWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0ID0gMDsKKyAgICAgICAgCisgICAgICAgIGJvb2wgcHJl
bXVsdGlwbHlBbHBoYSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJlbXVsdGlwbHlBbHBoYTsgfQogCiAg
ICAgICAgIGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzQWxsRGF0
YVJlY2VpdmVkOyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwCShyZXZpc2lv
biAyMDU4NDEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAv
Qk1QSW1hZ2VEZWNvZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzAsMTAgKzcwLDggQEAgSW1h
Z2VGcmFtZSogQk1QSW1hZ2VEZWNvZGVyOjpmcmFtZUJ1ZmZlcgogICAgIGlmIChpbmRleCkKICAg
ICAgICAgcmV0dXJuIDA7CiAKLSAgICBpZiAobV9mcmFtZUJ1ZmZlckNhY2hlLmlzRW1wdHkoKSkg
eworICAgIGlmIChtX2ZyYW1lQnVmZmVyQ2FjaGUuaXNFbXB0eSgpKQogICAgICAgICBtX2ZyYW1l
QnVmZmVyQ2FjaGUucmVzaXplKDEpOwotICAgICAgICBtX2ZyYW1lQnVmZmVyQ2FjaGUuZmlyc3Qo
KS5zZXRQcmVtdWx0aXBseUFscGhhKG1fcHJlbXVsdGlwbHlBbHBoYSk7Ci0gICAgfQogCiAgICAg
SW1hZ2VGcmFtZSogYnVmZmVyID0gJm1fZnJhbWVCdWZmZXJDYWNoZS5maXJzdCgpOwogICAgIGlm
IChidWZmZXItPnN0YXR1cygpICE9IEltYWdlRnJhbWU6OkZyYW1lQ29tcGxldGUpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VSZWFkZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2JtcC9CTVBJbWFnZVJlYWRlci5jcHAJKHJldmlzaW9uIDIwNTg0MSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTc4LDEyICs3OCwxMCBAQCBib29sIEJNUEltYWdlUmVhZGVyOjpkZWNvZGVC
TVAoYm9vbCBvbmx5CiAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgZnJhbWVidWZmZXIgaWYgbmVlZGVk
LgogICAgIEFTU0VSVChtX2J1ZmZlcik7ICAvLyBQYXJlbnQgc2hvdWxkIHNldCB0aGlzIGJlZm9y
ZSBhc2tpbmcgdXMgdG8gZGVjb2RlIQogICAgIGlmIChtX2J1ZmZlci0+c3RhdHVzKCkgPT0gSW1h
Z2VGcmFtZTo6RnJhbWVFbXB0eSkgewotICAgICAgICBpZiAoIW1fYnVmZmVyLT5zZXRTaXplKG1f
cGFyZW50LT5zaXplKCkpKQorICAgICAgICBpZiAoIW1fYnVmZmVyLT5pbml0aWFsaXplQmFja2lu
Z1N0b3JlKG1fcGFyZW50LT5zaXplKCksIG1fcGFyZW50LT5wcmVtdWx0aXBseUFscGhhKCkpKQog
ICAgICAgICAgICAgcmV0dXJuIG1fcGFyZW50LT5zZXRGYWlsZWQoKTsgLy8gVW5hYmxlIHRvIGFs
bG9jYXRlLgorCiAgICAgICAgIG1fYnVmZmVyLT5zZXRTdGF0dXMoSW1hZ2VGcmFtZTo6RnJhbWVQ
YXJ0aWFsKTsKLSAgICAgICAgLy8gc2V0U2l6ZSgpIGNhbGxzIGVyYXNlQVJHQigpLCB3aGljaCBy
ZXNldHMgdGhlIGFscGhhIGZsYWcsIHNvIHdlIGZvcmNlCi0gICAgICAgIC8vIGl0IGJhY2sgdG8g
ZmFsc2UgaGVyZS4gIFdlJ2xsIHNldCBpdCB0cnVlIGJlbG93IGluIGFsbCBjYXNlcyB3aGVyZQot
ICAgICAgICAvLyB0aGVzZSAwcyBjb3VsZCBhY3R1YWxseSBzaG93IHRocm91Z2guCiAgICAgICAg
IG1fYnVmZmVyLT5zZXRIYXNBbHBoYShmYWxzZSk7CiAKICAgICAgICAgaWYgKCFtX2lzVG9wRG93
bikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJ
bWFnZURlY29kZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwCShyZXZpc2lvbiAyMDU4NDEpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNv
ZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIxLDEwICszMjEsNyBAQCB2b2lkIEdJRkltYWdl
RGVjb2Rlcjo6ZGVjb2RlKHVuc2lnbmVkIGhhCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBjb25zdCBzaXplX3Qgb2xkU2l6ZSA9IG1fZnJhbWVCdWZmZXJDYWNoZS5zaXplKCk7CiAgICAg
bV9mcmFtZUJ1ZmZlckNhY2hlLnJlc2l6ZShtX3JlYWRlci0+aW1hZ2VzQ291bnQoKSk7Ci0gICAg
Zm9yIChzaXplX3QgaSA9IG9sZFNpemU7IGkgPCBtX3JlYWRlci0+aW1hZ2VzQ291bnQoKTsgKytp
KQotICAgICAgICBtX2ZyYW1lQnVmZmVyQ2FjaGVbaV0uc2V0UHJlbXVsdGlwbHlBbHBoYShtX3By
ZW11bHRpcGx5QWxwaGEpOwogCiAgICAgaWYgKHF1ZXJ5ID09IEdJRkZyYW1lQ291bnRRdWVyeSkK
ICAgICAgICAgcmV0dXJuOwpAQCAtMzYxLDcgKzM1OCw3IEBAIGJvb2wgR0lGSW1hZ2VEZWNvZGVy
Ojppbml0RnJhbWVCdWZmZXIodW4KIAogICAgIGlmICghZnJhbWVJbmRleCkgewogICAgICAgICAv
LyBUaGlzIGlzIHRoZSBmaXJzdCBmcmFtZSwgc28gd2UncmUgbm90IHJlbHlpbmcgb24gYW55IHBy
ZXZpb3VzIGRhdGEuCi0gICAgICAgIGlmICghYnVmZmVyLT5zZXRTaXplKHNjYWxlZFNpemUoKSkp
CisgICAgICAgIGlmICghYnVmZmVyLT5pbml0aWFsaXplQmFja2luZ1N0b3JlKHNjYWxlZFNpemUo
KSwgbV9wcmVtdWx0aXBseUFscGhhKSkKICAgICAgICAgICAgIHJldHVybiBzZXRGYWlsZWQoKTsK
ICAgICB9IGVsc2UgewogICAgICAgICAvLyBUaGUgc3RhcnRpbmcgc3RhdGUgZm9yIHRoaXMgZnJh
bWUgZGVwZW5kcyBvbiB0aGUgcHJldmlvdXMgZnJhbWUncwpAQCAtMzgyLDcgKzM3OSw3IEBAIGJv
b2wgR0lGSW1hZ2VEZWNvZGVyOjppbml0RnJhbWVCdWZmZXIodW4KIAogICAgICAgICBpZiAoKHBy
ZXZNZXRob2QgPT0gSW1hZ2VGcmFtZTo6RGlzcG9zZU5vdFNwZWNpZmllZCkgfHwgKHByZXZNZXRo
b2QgPT0gSW1hZ2VGcmFtZTo6RGlzcG9zZUtlZXApKSB7CiAgICAgICAgICAgICAvLyBQcmVzZXJ2
ZSB0aGUgbGFzdCBmcmFtZSBhcyB0aGUgc3RhcnRpbmcgc3RhdGUgZm9yIHRoaXMgZnJhbWUuCi0g
ICAgICAgICAgICBpZiAoIWJ1ZmZlci0+Y29weUJpdG1hcERhdGEoKnByZXZCdWZmZXIpKQorICAg
ICAgICAgICAgaWYgKCFwcmV2QnVmZmVyLT5iYWNraW5nU3RvcmUoKSB8fCAhYnVmZmVyLT5pbml0
aWFsaXplQmFja2luZ1N0b3JlKCpwcmV2QnVmZmVyLT5iYWNraW5nU3RvcmUoKSkpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIHNldEZhaWxlZCgpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgLy8gV2Ugd2FudCB0byBjbGVhciB0aGUgcHJldmlvdXMgZnJhbWUgdG8gdHJhbnNwYXJlbnQs
IHdpdGhvdXQKQEAgLTM5MiwxMSArMzg5LDExIEBAIGJvb2wgR0lGSW1hZ2VEZWNvZGVyOjppbml0
RnJhbWVCdWZmZXIodW4KICAgICAgICAgICAgIGlmICghZnJhbWVJbmRleCB8fCBwcmV2UmVjdC5j
b250YWlucyhJbnRSZWN0KEludFBvaW50KCksIHNjYWxlZFNpemUoKSkpKSB7CiAgICAgICAgICAg
ICAgICAgLy8gQ2xlYXJpbmcgdGhlIGZpcnN0IGZyYW1lLCBvciBhIGZyYW1lIHRoZSBzaXplIG9m
IHRoZSB3aG9sZQogICAgICAgICAgICAgICAgIC8vIGltYWdlLCByZXN1bHRzIGluIGEgY29tcGxl
dGVseSBlbXB0eSBpbWFnZS4KLSAgICAgICAgICAgICAgICBpZiAoIWJ1ZmZlci0+c2V0U2l6ZShi
dWZmZXJTaXplKSkKKyAgICAgICAgICAgICAgICBpZiAoIWJ1ZmZlci0+aW5pdGlhbGl6ZUJhY2tp
bmdTdG9yZShidWZmZXJTaXplLCBtX3ByZW11bHRpcGx5QWxwaGEpKQogICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gc2V0RmFpbGVkKCk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgICAgIC8vIENvcHkgdGhlIHdob2xlIHByZXZpb3VzIGJ1ZmZlciwgdGhlbiBjbGVhciBqdXN0
IGl0cyBmcmFtZS4KLSAgICAgICAgICAgICAgICBpZiAoIWJ1ZmZlci0+Y29weUJpdG1hcERhdGEo
KnByZXZCdWZmZXIpKQorICAgICAgICAgICAgICAgIGlmICghcHJldkJ1ZmZlci0+YmFja2luZ1N0
b3JlKCkgfHwgIWJ1ZmZlci0+aW5pdGlhbGl6ZUJhY2tpbmdTdG9yZSgqcHJldkJ1ZmZlci0+YmFj
a2luZ1N0b3JlKCkpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2V0RmFpbGVkKCk7CiAg
ICAgICAgICAgICAgICAgYnVmZmVyLT56ZXJvRmlsbEZyYW1lUmVjdChwcmV2UmVjdCk7CiAgICAg
ICAgICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9p
Y28vSUNPSW1hZ2VEZWNvZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcAkocmV2aXNpb24gMjA1
ODQxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0lt
YWdlRGVjb2Rlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk4LDExICs5OCw4IEBAIGJvb2wgSUNP
SW1hZ2VEZWNvZGVyOjpzZXRTaXplKGNvbnN0IEludFMKIHNpemVfdCBJQ09JbWFnZURlY29kZXI6
OmZyYW1lQ291bnQoKQogewogICAgIGRlY29kZSgwLCB0cnVlKTsKLSAgICBpZiAobV9mcmFtZUJ1
ZmZlckNhY2hlLmlzRW1wdHkoKSkgeworICAgIGlmIChtX2ZyYW1lQnVmZmVyQ2FjaGUuaXNFbXB0
eSgpKQogICAgICAgICBtX2ZyYW1lQnVmZmVyQ2FjaGUucmVzaXplKG1fZGlyRW50cmllcy5zaXpl
KCkpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZGlyRW50cmllcy5zaXplKCk7
ICsraSkKLSAgICAgICAgICAgIG1fZnJhbWVCdWZmZXJDYWNoZVtpXS5zZXRQcmVtdWx0aXBseUFs
cGhhKG1fcHJlbXVsdGlwbHlBbHBoYSk7Ci0gICAgfQogICAgIC8vIENBVVRJT046IFdlIG11c3Qg
bm90IHJlc2l6ZSBtX2ZyYW1lQnVmZmVyQ2FjaGUgYWdhaW4gYWZ0ZXIgdGhpcywgYXMKICAgICAv
LyBkZWNvZGVBdEluZGV4KCkgbWF5IGdpdmUgYSBCTVBJbWFnZVJlYWRlciBhIHBvaW50ZXIgdG8g
b25lIG9mIHRoZQogICAgIC8vIGVudHJpZXMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVj
b2Rlci5jcHAJKHJldmlzaW9uIDIwNTg0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTUzMywxMCArNTMzLDggQEAgSW1hZ2VGcmFtZSogSlBFR0ltYWdlRGVjb2Rlcjo6ZnJhbWVCdWZm
ZQogICAgIGlmIChpbmRleCkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBpZiAobV9mcmFtZUJ1
ZmZlckNhY2hlLmlzRW1wdHkoKSkgeworICAgIGlmIChtX2ZyYW1lQnVmZmVyQ2FjaGUuaXNFbXB0
eSgpKQogICAgICAgICBtX2ZyYW1lQnVmZmVyQ2FjaGUucmVzaXplKDEpOwotICAgICAgICBtX2Zy
YW1lQnVmZmVyQ2FjaGVbMF0uc2V0UHJlbXVsdGlwbHlBbHBoYShtX3ByZW11bHRpcGx5QWxwaGEp
OwotICAgIH0KIAogICAgIEltYWdlRnJhbWUmIGZyYW1lID0gbV9mcmFtZUJ1ZmZlckNhY2hlWzBd
OwogICAgIGlmIChmcmFtZS5zdGF0dXMoKSAhPSBJbWFnZUZyYW1lOjpGcmFtZUNvbXBsZXRlKQpA
QCAtNjE3LDcgKzYxNSw3IEBAIGJvb2wgSlBFR0ltYWdlRGVjb2Rlcjo6b3V0cHV0U2NhbmxpbmVz
KCkKICAgICAvLyBJbml0aWFsaXplIHRoZSBmcmFtZWJ1ZmZlciBpZiBuZWVkZWQuCiAgICAgSW1h
Z2VGcmFtZSYgYnVmZmVyID0gbV9mcmFtZUJ1ZmZlckNhY2hlWzBdOwogICAgIGlmIChidWZmZXIu
c3RhdHVzKCkgPT0gSW1hZ2VGcmFtZTo6RnJhbWVFbXB0eSkgewotICAgICAgICBpZiAoIWJ1ZmZl
ci5zZXRTaXplKHNjYWxlZFNpemUoKSkpCisgICAgICAgIGlmICghYnVmZmVyLmluaXRpYWxpemVC
YWNraW5nU3RvcmUoc2NhbGVkU2l6ZSgpLCBtX3ByZW11bHRpcGx5QWxwaGEpKQogICAgICAgICAg
ICAgcmV0dXJuIHNldEZhaWxlZCgpOwogICAgICAgICBidWZmZXIuc2V0U3RhdHVzKEltYWdlRnJh
bWU6OkZyYW1lUGFydGlhbCk7CiAgICAgICAgIC8vIFRoZSBidWZmZXIgaXMgdHJhbnNwYXJlbnQg
b3V0c2lkZSB0aGUgZGVjb2RlZCBhcmVhIHdoaWxlIHRoZSBpbWFnZSBpcwpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5n
L1BOR0ltYWdlRGVjb2Rlci5jcHAJKHJldmlzaW9uIDIwNTg0MSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNTcsMTAgKzI1Nyw4IEBAIEltYWdlRnJhbWUqIFBOR0ltYWdlRGVjb2Rlcjo6
ZnJhbWVCdWZmZXIKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAjZW5kaWYKIAotICAgIGlmICht
X2ZyYW1lQnVmZmVyQ2FjaGUuaXNFbXB0eSgpKSB7CisgICAgaWYgKG1fZnJhbWVCdWZmZXJDYWNo
ZS5pc0VtcHR5KCkpCiAgICAgICAgIG1fZnJhbWVCdWZmZXJDYWNoZS5yZXNpemUoMSk7Ci0gICAg
ICAgIG1fZnJhbWVCdWZmZXJDYWNoZVswXS5zZXRQcmVtdWx0aXBseUFscGhhKG1fcHJlbXVsdGlw
bHlBbHBoYSk7Ci0gICAgfQogCiAgICAgSW1hZ2VGcmFtZSYgZnJhbWUgPSBtX2ZyYW1lQnVmZmVy
Q2FjaGVbaW5kZXhdOwogICAgIGlmIChmcmFtZS5zdGF0dXMoKSAhPSBJbWFnZUZyYW1lOjpGcmFt
ZUNvbXBsZXRlKQpAQCAtNDExLDI5ICs0MDksNiBAQCB2b2lkIFBOR0ltYWdlRGVjb2Rlcjo6aGVh
ZGVyQXZhaWxhYmxlKCkKICAgICB9CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBzZXRQaXhlbFJH
QihSR0JBMzIqIGRlc3QsIHBuZ19ieXRlcCBwaXhlbCkKLXsKLSAgICAqZGVzdCA9IDB4RkYwMDAw
MDBVIHwgcGl4ZWxbMF0gPDwgMTYgfCBwaXhlbFsxXSA8PCA4IHwgcGl4ZWxbMl07Ci19Ci0KLXN0
YXRpYyBpbmxpbmUgdm9pZCBzZXRQaXhlbFJHQkEoUkdCQTMyKiBkZXN0LCBwbmdfYnl0ZXAgcGl4
ZWwsIHVuc2lnbmVkIGNoYXImIG5vblRyaXZpYWxBbHBoYU1hc2spCi17Ci0gICAgdW5zaWduZWQg
Y2hhciBhID0gcGl4ZWxbM107Ci0gICAgKmRlc3QgPSBhIDw8IDI0IHwgcGl4ZWxbMF0gPDwgMTYg
fCBwaXhlbFsxXSA8PCA4IHwgcGl4ZWxbMl07Ci0gICAgbm9uVHJpdmlhbEFscGhhTWFzayB8PSAo
MjU1IC0gYSk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgdm9pZCBzZXRQaXhlbFByZW11bHRpcGxpZWRS
R0JBKFJHQkEzMiogZGVzdCwgcG5nX2J5dGVwIHBpeGVsLCB1bnNpZ25lZCBjaGFyJiBub25Ucml2
aWFsQWxwaGFNYXNrKQotewotICAgIHVuc2lnbmVkIGNoYXIgYSA9IHBpeGVsWzNdOwotICAgIHVu
c2lnbmVkIGNoYXIgciA9IGZhc3REaXZpZGVCeTI1NShwaXhlbFswXSAqIGEpOwotICAgIHVuc2ln
bmVkIGNoYXIgZyA9IGZhc3REaXZpZGVCeTI1NShwaXhlbFsxXSAqIGEpOwotICAgIHVuc2lnbmVk
IGNoYXIgYiA9IGZhc3REaXZpZGVCeTI1NShwaXhlbFsyXSAqIGEpOwotCi0gICAgKmRlc3QgPSBh
IDw8IDI0IHwgciA8PCAxNiB8IGcgPDwgOCB8IGI7Ci0gICAgbm9uVHJpdmlhbEFscGhhTWFzayB8
PSAoMjU1IC0gYSk7Ci19Ci0KIHZvaWQgUE5HSW1hZ2VEZWNvZGVyOjpyb3dBdmFpbGFibGUodW5z
aWduZWQgY2hhciogcm93QnVmZmVyLCB1bnNpZ25lZCByb3dJbmRleCwgaW50KQogewogICAgIGlm
IChtX2ZyYW1lQnVmZmVyQ2FjaGUuaXNFbXB0eSgpKQpAQCAtNDQ3LDcgKzQyMiw3IEBAIHZvaWQg
UE5HSW1hZ2VEZWNvZGVyOjpyb3dBdmFpbGFibGUodW5zaWcKICAgICBJbWFnZUZyYW1lJiBidWZm
ZXIgPSBtX2ZyYW1lQnVmZmVyQ2FjaGVbbV9jdXJyZW50RnJhbWVdOwogICAgIGlmIChidWZmZXIu
c3RhdHVzKCkgPT0gSW1hZ2VGcmFtZTo6RnJhbWVFbXB0eSkgewogICAgICAgICBwbmdfc3RydWN0
cCBwbmcgPSBtX3JlYWRlci0+cG5nUHRyKCk7Ci0gICAgICAgIGlmICghYnVmZmVyLnNldFNpemUo
c2NhbGVkU2l6ZSgpKSkgeworICAgICAgICBpZiAoIWJ1ZmZlci5pbml0aWFsaXplQmFja2luZ1N0
b3JlKHNjYWxlZFNpemUoKSwgbV9wcmVtdWx0aXBseUFscGhhKSkgewogICAgICAgICAgICAgbG9u
Z2ptcChKTVBCVUYocG5nKSwgMSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAg
LTUzNCwxMCArNTA5LDEwIEBAIHZvaWQgUE5HSW1hZ2VEZWNvZGVyOjpyb3dBdmFpbGFibGUodW5z
aWcKIAogI2lmIEVOQUJMRShJTUFHRV9ERUNPREVSX0RPV05fU0FNUExJTkcpCiAgICAgaWYgKG1f
c2NhbGVkKSB7Ci0gICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgd2lkdGg7ICsreCkgeworICAg
ICAgICBmb3IgKGludCB4ID0gMDsgeCA8IHdpZHRoOyArK3gsICsrYWRkcmVzcykgewogICAgICAg
ICAgICAgcG5nX2J5dGVwIHBpeGVsID0gcm93ICsgbV9zY2FsZWRDb2x1bW5zW3hdICogY29sb3JD
aGFubmVsczsKICAgICAgICAgICAgIHVuc2lnbmVkIGFscGhhID0gaGFzQWxwaGEgPyBwaXhlbFsz
XSA6IDI1NTsKLSAgICAgICAgICAgIGJ1ZmZlci5zZXRQaXhlbChhZGRyZXNzKyssIHBpeGVsWzBd
LCBwaXhlbFsxXSwgcGl4ZWxbMl0sIGFscGhhKTsKKyAgICAgICAgICAgIGJ1ZmZlci5zZXRQaXhl
bChhZGRyZXNzLCBwaXhlbFswXSwgcGl4ZWxbMV0sIHBpeGVsWzJdLCBhbHBoYSk7CiAgICAgICAg
ICAgICBub25Ucml2aWFsQWxwaGFNYXNrIHw9ICgyNTUgLSBhbHBoYSk7CiAgICAgICAgIH0KICAg
ICB9IGVsc2UKQEAgLTU0NSwyMCArNTIwLDE3IEBAIHZvaWQgUE5HSW1hZ2VEZWNvZGVyOjpyb3dB
dmFpbGFibGUodW5zaWcKICAgICB7CiAgICAgICAgIHBuZ19ieXRlcCBwaXhlbCA9IHJvdzsKICAg
ICAgICAgaWYgKGhhc0FscGhhKSB7Ci0gICAgICAgICAgICBpZiAoYnVmZmVyLnByZW11bHRpcGx5
QWxwaGEoKSkgewotICAgICAgICAgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgd2lkdGg7ICsr
eCwgcGl4ZWwgKz0gNCkKLSAgICAgICAgICAgICAgICAgICAgc2V0UGl4ZWxQcmVtdWx0aXBsaWVk
UkdCQShhZGRyZXNzKyssIHBpeGVsLCBub25Ucml2aWFsQWxwaGFNYXNrKTsKLSAgICAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCB3aWR0aDsgKyt4
LCBwaXhlbCArPSA0KQotICAgICAgICAgICAgICAgICAgICBzZXRQaXhlbFJHQkEoYWRkcmVzcysr
LCBwaXhlbCwgbm9uVHJpdmlhbEFscGhhTWFzayk7CisgICAgICAgICAgICBmb3IgKGludCB4ID0g
MDsgeCA8IHdpZHRoOyArK3gsIHBpeGVsICs9IDQsICsrYWRkcmVzcykgeworICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGFscGhhID0gcGl4ZWxbM107CisgICAgICAgICAgICAgICAgYnVmZmVyLnNl
dFBpeGVsKGFkZHJlc3MsIHBpeGVsWzBdLCBwaXhlbFsxXSwgcGl4ZWxbMl0sIGFscGhhKTsKKyAg
ICAgICAgICAgICAgICBub25Ucml2aWFsQWxwaGFNYXNrIHw9ICgyNTUgLSBhbHBoYSk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBmb3IgKGludCB4ID0gMDsg
eCA8IHdpZHRoOyArK3gsIHBpeGVsICs9IDMpCi0gICAgICAgICAgICAgICAgc2V0UGl4ZWxSR0Io
YWRkcmVzcysrLCBwaXhlbCk7CisgICAgICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IHdpZHRo
OyArK3gsIHBpeGVsICs9IDMsICsrYWRkcmVzcykKKyAgICAgICAgICAgICAgICAqYWRkcmVzcyA9
IG1ha2VSR0IocGl4ZWxbMF0sIHBpeGVsWzFdLCBwaXhlbFsyXSk7CiAgICAgICAgIH0KICAgICB9
CiAKLQogICAgIGlmIChub25Ucml2aWFsQWxwaGFNYXNrICYmICFidWZmZXIuaGFzQWxwaGEoKSkK
ICAgICAgICAgYnVmZmVyLnNldEhhc0FscGhhKHRydWUpOwogfQpAQCAtNjE4LDggKzU5MCw2IEBA
IHZvaWQgUE5HSW1hZ2VEZWNvZGVyOjpyZWFkQ2h1bmtzKHBuZ191bmsKICAgICAgICAgICAgIHJl
dHVybjsKIAogICAgICAgICBtX2ZyYW1lQnVmZmVyQ2FjaGUucmVzaXplKG1fZnJhbWVDb3VudCk7
Ci0gICAgICAgIGZvciAoYXV0byYgaW1hZ2VGcmFtZSA6IG1fZnJhbWVCdWZmZXJDYWNoZSkKLSAg
ICAgICAgICAgIGltYWdlRnJhbWUuc2V0UHJlbXVsdGlwbHlBbHBoYShtX3ByZW11bHRpcGx5QWxw
aGEpOwogICAgIH0gZWxzZSBpZiAoIW1lbWNtcChjaHVuay0+bmFtZSwgImZjVEwiLCA0KSAmJiBj
aHVuay0+c2l6ZSA9PSAyNikgewogICAgICAgICBpZiAobV9oYXNJbmZvICYmICFtX2lzQW5pbWF0
ZWQpCiAgICAgICAgICAgICByZXR1cm47CkBAIC02NjEsMTAgKzYzMSw4IEBAIHZvaWQgUE5HSW1h
Z2VEZWNvZGVyOjpyZWFkQ2h1bmtzKHBuZ191bmsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogCi0gICAgICAgIGlmIChtX2ZyYW1lQnVmZmVyQ2FjaGUuaXNFbXB0eSgpKSB7CisgICAg
ICAgIGlmIChtX2ZyYW1lQnVmZmVyQ2FjaGUuaXNFbXB0eSgpKQogICAgICAgICAgICAgbV9mcmFt
ZUJ1ZmZlckNhY2hlLnJlc2l6ZSgxKTsKLSAgICAgICAgICAgIG1fZnJhbWVCdWZmZXJDYWNoZVsw
XS5zZXRQcmVtdWx0aXBseUFscGhhKG1fcHJlbXVsdGlwbHlBbHBoYSk7Ci0gICAgICAgIH0KIAog
ICAgICAgICBpZiAobV9jdXJyZW50RnJhbWUgPCBtX2ZyYW1lQnVmZmVyQ2FjaGUuc2l6ZSgpKSB7
CiAgICAgICAgICAgICBJbWFnZUZyYW1lJiBidWZmZXIgPSBtX2ZyYW1lQnVmZmVyQ2FjaGVbbV9j
dXJyZW50RnJhbWVdOwpAQCAtODEzLDcgKzc4MSw4IEBAIHZvaWQgUE5HSW1hZ2VEZWNvZGVyOjpp
bml0RnJhbWVCdWZmZXIoc2kKIAogICAgIGlmIChwcmV2TWV0aG9kID09IEltYWdlRnJhbWU6OkRp
c3Bvc2VLZWVwKSB7CiAgICAgICAgIC8vIFByZXNlcnZlIHRoZSBsYXN0IGZyYW1lIGFzIHRoZSBz
dGFydGluZyBzdGF0ZSBmb3IgdGhpcyBmcmFtZS4KLSAgICAgICAgYnVmZmVyLmNvcHlCaXRtYXBE
YXRhKCpwcmV2QnVmZmVyKTsKKyAgICAgICAgaWYgKCFwcmV2QnVmZmVyLT5iYWNraW5nU3RvcmUo
KSB8fCAhYnVmZmVyLmluaXRpYWxpemVCYWNraW5nU3RvcmUoKnByZXZCdWZmZXItPmJhY2tpbmdT
dG9yZSgpKSkKKyAgICAgICAgICAgIGxvbmdqbXAoSk1QQlVGKHBuZyksIDEpOwogICAgIH0gZWxz
ZSB7CiAgICAgICAgIC8vIFdlIHdhbnQgdG8gY2xlYXIgdGhlIHByZXZpb3VzIGZyYW1lIHRvIHRy
YW5zcGFyZW50LCB3aXRob3V0CiAgICAgICAgIC8vIGFmZmVjdGluZyBwaXhlbHMgaW4gdGhlIGlt
YWdlIG91dHNpZGUgb2YgdGhlIGZyYW1lLgpAQCAtODI0LDcgKzc5MywxMCBAQCB2b2lkIFBOR0lt
YWdlRGVjb2Rlcjo6aW5pdEZyYW1lQnVmZmVyKHNpCiAgICAgICAgICAgICBidWZmZXIuemVyb0Zp
bGxQaXhlbERhdGEoKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vIENvcHkgdGhl
IHdob2xlIHByZXZpb3VzIGJ1ZmZlciwgdGhlbiBjbGVhciBqdXN0IGl0cyBmcmFtZS4KLSAgICAg
ICAgICAgIGJ1ZmZlci5jb3B5Qml0bWFwRGF0YSgqcHJldkJ1ZmZlcik7CisgICAgICAgICAgICBp
ZiAoIXByZXZCdWZmZXItPmJhY2tpbmdTdG9yZSgpIHx8ICFidWZmZXIuaW5pdGlhbGl6ZUJhY2tp
bmdTdG9yZSgqcHJldkJ1ZmZlci0+YmFja2luZ1N0b3JlKCkpKSB7CisgICAgICAgICAgICAgICAg
bG9uZ2ptcChKTVBCVUYocG5nKSwgMSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgfQogICAgICAgICAgICAgYnVmZmVyLnplcm9GaWxsRnJhbWVSZWN0KHByZXZSZWN0KTsK
ICAgICAgICAgfQogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcAko
cmV2aXNpb24gMjA1ODQxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzgsMTAgKzc4
LDggQEAgSW1hZ2VGcmFtZSogV0VCUEltYWdlRGVjb2Rlcjo6ZnJhbWVCdWZmZQogICAgIGlmIChp
bmRleCkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBpZiAobV9mcmFtZUJ1ZmZlckNhY2hlLmlz
RW1wdHkoKSkgeworICAgIGlmIChtX2ZyYW1lQnVmZmVyQ2FjaGUuaXNFbXB0eSgpKQogICAgICAg
ICBtX2ZyYW1lQnVmZmVyQ2FjaGUucmVzaXplKDEpOwotICAgICAgICBtX2ZyYW1lQnVmZmVyQ2Fj
aGVbMF0uc2V0UHJlbXVsdGlwbHlBbHBoYShtX3ByZW11bHRpcGx5QWxwaGEpOwotICAgIH0KIAog
ICAgIEltYWdlRnJhbWUmIGZyYW1lID0gbV9mcmFtZUJ1ZmZlckNhY2hlWzBdOwogICAgIGlmIChm
cmFtZS5zdGF0dXMoKSAhPSBJbWFnZUZyYW1lOjpGcmFtZUNvbXBsZXRlKQpAQCAtMTI4LDcgKzEy
Niw3IEBAIGJvb2wgV0VCUEltYWdlRGVjb2Rlcjo6ZGVjb2RlKGJvb2wgb25seVMKICAgICBBU1NF
UlQoYnVmZmVyLnN0YXR1cygpICE9IEltYWdlRnJhbWU6OkZyYW1lQ29tcGxldGUpOwogCiAgICAg
aWYgKGJ1ZmZlci5zdGF0dXMoKSA9PSBJbWFnZUZyYW1lOjpGcmFtZUVtcHR5KSB7Ci0gICAgICAg
IGlmICghYnVmZmVyLnNldFNpemUoc2l6ZSgpKSkKKyAgICAgICAgaWYgKCFidWZmZXIuaW5pdGlh
bGl6ZUJhY2tpbmdTdG9yZShzaXplKCksIG1fcHJlbXVsdGlwbHlBbHBoYSkpCiAgICAgICAgICAg
ICByZXR1cm4gc2V0RmFpbGVkKCk7CiAgICAgICAgIGJ1ZmZlci5zZXRTdGF0dXMoSW1hZ2VGcmFt
ZTo6RnJhbWVQYXJ0aWFsKTsKICAgICAgICAgYnVmZmVyLnNldEhhc0FscGhhKG1faGFzQWxwaGEp
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>288719</attachid>
            <date>2016-09-13 12:54:23 -0700</date>
            <delta_ts>2016-09-13 13:58:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159721-20160913125148.patch</filename>
            <type>text/plain</type>
            <size>21547</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNTg2MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUxIEBACisyMDE2LTA5LTEzICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgR2V0IHJpZCBv
ZiB0aGUgbV9wcmVtdWx0aXBseUFscGhhIGZsYWcgb2YgdGhlIEltYWdlRnJhbWUgY2xhc3MKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTcyMQorCisg
ICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAgICBUaGlzIGZsYWcgd2Fz
IG9ubHkgbmVlZGVkIHdoZW4gY2FsbGluZyBJbWFnZUJhY2tpbmdTdG9yZTo6Y3JlYXRlKCkgaW4g
CisgICAgICAgIEltYWdlRnJhbWU6OnNldFNpemUoKS4gSW5zdGVhZCB3ZSBjYW4gcGFzcyBJbWFn
ZURlY29kZXI6Om1fcHJlbXVsdGlwbHlBbHBoYSAKKyAgICAgICAgdG8gSW1hZ2VGcmFtZTo6c2V0
U2l6ZSgpLCB3aGljaCBpcyByZW5hbWVkIEltYWdlRnJhbWU6OmluaXRpYWxpemVCYWNraW5nU3Rv
cmUoKS4KKyAgICAgICAgVGhlIHBhc3NlZCBwcmVtdWx0aXBseUFscGhhIGNhbiB0aGVuIGJlIHBh
c3NlZCB0byBJbWFnZUJhY2tpbmdTdG9yZTo6Y3JlYXRlKCkuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VGcmFtZTo6SW1hZ2VGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpvcGVy
YXRvcj0pOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6aW5pdGlhbGl6ZUJhY2tpbmdT
dG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpjb3B5Qml0bWFwRGF0YSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpzZXRTaXplKTogRGVsZXRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OmRpc3Bvc2FsTWV0aG9kKToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlRnJhbWU6OnNldERpc3Bvc2FsTWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlRGVjb2Rlcjo6cHJlbXVsdGlwbHlBbHBoYSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZy
YW1lOjpwcmVtdWx0aXBseUFscGhhKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
RnJhbWU6OnNldFByZW11bHRpcGx5QWxwaGEpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Qk1QSW1hZ2VEZWNvZGVyOjpmcmFtZUJ1ZmZlckF0SW5kZXgpOgorICAgICAgICAqIHBsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpCTVBJbWFnZVJlYWRlcjo6ZGVjb2RlQk1QKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdJ
RkltYWdlRGVjb2Rlcjo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkdJRkltYWdlRGVjb2Rl
cjo6aW5pdEZyYW1lQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9p
Y28vSUNPSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklDT0ltYWdlRGVjb2Rl
cjo6ZnJhbWVDb3VudCk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9K
UEVHSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpQRUdJbWFnZURlY29kZXI6
OmZyYW1lQnVmZmVyQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpKUEVHSW1hZ2VEZWNvZGVy
OjpvdXRwdXRTY2FubGluZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3Bu
Zy9QTkdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UE5HSW1hZ2VEZWNvZGVy
OjpmcmFtZUJ1ZmZlckF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6UE5HSW1hZ2VEZWNvZGVy
Ojpyb3dBdmFpbGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6UE5HSW1hZ2VEZWNvZGVyOjpyZWFk
Q2h1bmtzKToKKyAgICAgICAgKFdlYkNvcmU6OlBOR0ltYWdlRGVjb2Rlcjo6aW5pdEZyYW1lQnVm
ZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldFBpeGVsUkdCKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OnNldFBpeGVsUkdCQSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpzZXRQ
aXhlbFByZW11bHRpcGxpZWRSR0JBKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V0VCUEltYWdlRGVjb2Rlcjo6ZnJhbWVCdWZmZXJBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6
OldFQlBJbWFnZURlY29kZXI6OmRlY29kZSk6CisKIDIwMTYtMDktMTIgIFphbGFuIEJ1anRhcyAg
PHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBJbnB1dCB0eXBlIG9iamVjdCBhbmQgdGhlIGFz
c29jaWF0ZWQgcmVuZGVyIGNhbiBnbyBvdXQgb2Ygc3luYy4KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcAko
cmV2aXNpb24gMjA1ODQxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvSW1hZ2VEZWNvZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMyLDcgKzEzMiw2IEBAIElt
YWdlRnJhbWU6OkltYWdlRnJhbWUoKQogICAgICwgbV9zdGF0dXMoRnJhbWVFbXB0eSkKICAgICAs
IG1fZHVyYXRpb24oMCkKICAgICAsIG1fZGlzcG9zYWxNZXRob2QoRGlzcG9zZU5vdFNwZWNpZmll
ZCkKLSAgICAsIG1fcHJlbXVsdGlwbHlBbHBoYSh0cnVlKQogewogfSAKIApAQCAtMTQxLDEyICsx
NDAsMTMgQEAgSW1hZ2VGcmFtZSYgSW1hZ2VGcmFtZTo6b3BlcmF0b3I9KGNvbnN0IAogICAgIGlm
ICh0aGlzID09ICZvdGhlcikKICAgICAgICAgcmV0dXJuICp0aGlzOwogCi0gICAgY29weUJpdG1h
cERhdGEob3RoZXIpOworICAgIGlmIChvdGhlci5iYWNraW5nU3RvcmUoKSkKKyAgICAgICAgaW5p
dGlhbGl6ZUJhY2tpbmdTdG9yZSgqb3RoZXIuYmFja2luZ1N0b3JlKCkpOworCiAgICAgc2V0SGFz
QWxwaGEob3RoZXIubV9oYXNBbHBoYSk7CiAgICAgc2V0U3RhdHVzKG90aGVyLnN0YXR1cygpKTsK
ICAgICBzZXREdXJhdGlvbihvdGhlci5kdXJhdGlvbigpKTsKICAgICBzZXREaXNwb3NhbE1ldGhv
ZChvdGhlci5kaXNwb3NhbE1ldGhvZCgpKTsKLSAgICBzZXRQcmVtdWx0aXBseUFscGhhKG90aGVy
LnByZW11bHRpcGx5QWxwaGEoKSk7CiAgICAgcmV0dXJuICp0aGlzOwogfQogCkBAIC0xNzUsMjMg
KzE3NSwyMSBAQCB2b2lkIEltYWdlRnJhbWU6Onplcm9GaWxsRnJhbWVSZWN0KGNvbnN0CiAgICAg
c2V0SGFzQWxwaGEodHJ1ZSk7CiB9CiAKLWJvb2wgSW1hZ2VGcmFtZTo6Y29weUJpdG1hcERhdGEo
Y29uc3QgSW1hZ2VGcmFtZSYgb3RoZXIpCitib29sIEltYWdlRnJhbWU6OmluaXRpYWxpemVCYWNr
aW5nU3RvcmUoY29uc3QgSW1hZ2VCYWNraW5nU3RvcmUmIGJhY2tpbmdTdG9yZSkKIHsKLSAgICBp
ZiAodGhpcyA9PSAmb3RoZXIpCisgICAgaWYgKCZiYWNraW5nU3RvcmUgPT0gdGhpcy0+YmFja2lu
Z1N0b3JlKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYgKG90aGVyLm1fYmFja2lu
Z1N0b3JlKQotICAgICAgICBtX2JhY2tpbmdTdG9yZSA9IEltYWdlQmFja2luZ1N0b3JlOjpjcmVh
dGUoKm90aGVyLm1fYmFja2luZ1N0b3JlLmdldCgpKTsKLSAgICBlbHNlCi0gICAgICAgIG1fYmFj
a2luZ1N0b3JlID0gbnVsbHB0cjsKLSAgICAKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICBtX2JhY2tp
bmdTdG9yZSA9IEltYWdlQmFja2luZ1N0b3JlOjpjcmVhdGUoYmFja2luZ1N0b3JlKTsKKyAgICBy
ZXR1cm4gbV9iYWNraW5nU3RvcmUgIT0gbnVsbHB0cjsKIH0KIAotYm9vbCBJbWFnZUZyYW1lOjpz
ZXRTaXplKGNvbnN0IEludFNpemUmIHNpemUpCitib29sIEltYWdlRnJhbWU6OmluaXRpYWxpemVC
YWNraW5nU3RvcmUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhKQog
ewotICAgIEFTU0VSVCghbV9iYWNraW5nU3RvcmUpOwotICAgIG1fYmFja2luZ1N0b3JlID0gSW1h
Z2VCYWNraW5nU3RvcmU6OmNyZWF0ZShzaXplLCBtX3ByZW11bHRpcGx5QWxwaGEpOworICAgIGlm
IChzaXplLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgbV9iYWNraW5n
U3RvcmUgPSBJbWFnZUJhY2tpbmdTdG9yZTo6Y3JlYXRlKHNpemUsIHByZW11bHRpcGx5QWxwaGEp
OwogICAgIHJldHVybiBtX2JhY2tpbmdTdG9yZSAhPSBudWxscHRyOwogfQogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29k
ZXIuaAkocmV2aXNpb24gMjA1ODQxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTcyLDEyICs3Miw3IEBA
IHVzaW5nIENvbG9yUHJvZmlsZSA9IFZlY3RvcjxjaGFyPjsKICAgICAgICAgdm9pZCBjbGVhclBp
eGVsRGF0YSgpOwogICAgICAgICB2b2lkIHplcm9GaWxsUGl4ZWxEYXRhKCk7CiAgICAgICAgIHZv
aWQgemVyb0ZpbGxGcmFtZVJlY3QoY29uc3QgSW50UmVjdCYpOwotCi0gICAgICAgIC8vIE1ha2Vz
IHRoaXMgZnJhbWUgaGF2ZSBhbiBpbmRlcGVuZGVudCBjb3B5IG9mIHRoZSBwcm92aWRlZCBpbWFn
ZSdzCi0gICAgICAgIC8vIHBpeGVsIGRhdGEsIHNvIHRoYXQgbW9kaWZpY2F0aW9ucyBpbiBvbmUg
ZnJhbWUgYXJlIG5vdCByZWZsZWN0ZWQgaW4KLSAgICAgICAgLy8gdGhlIG90aGVyLiAgUmV0dXJu
cyB3aGV0aGVyIHRoZSBjb3B5IHN1Y2NlZWRlZC4KLSAgICAgICAgYm9vbCBjb3B5Qml0bWFwRGF0
YShjb25zdCBJbWFnZUZyYW1lJik7Ci0KKyAgICAgICAgCiAgICAgICAgIC8vIENvcGllcyB0aGUg
cGl4ZWwgZGF0YSBhdCBbKHN0YXJ0WCwgc3RhcnRZKSwgKGVuZFgsIHN0YXJ0WSkpIHRvIHRoZQog
ICAgICAgICAvLyBzYW1lIFgtY29vcmRpbmF0ZXMgb24gZWFjaCBzdWJzZXF1ZW50IHJvdyB1cCB0
byBidXQgbm90IGluY2x1ZGluZwogICAgICAgICAvLyBlbmRZLgpAQCAtODYsMTAgKzgxLDE0IEBA
IHVzaW5nIENvbG9yUHJvZmlsZSA9IFZlY3RvcjxjaGFyPjsKICAgICAgICAgICAgIG1fYmFja2lu
Z1N0b3JlLT5yZXBlYXRGaXJzdFJvdyhJbnRSZWN0KHN0YXJ0WCwgc3RhcnRZLCBlbmRYIC1zdGFy
dFggLCBlbmRZIC0gc3RhcnRZKSk7CiAgICAgICAgIH0KIAotICAgICAgICAvLyBBbGxvY2F0ZXMg
c3BhY2UgZm9yIHRoZSBwaXhlbCBkYXRhLiAgTXVzdCBiZSBjYWxsZWQgYmVmb3JlIGFueSBwaXhl
bHMKLSAgICAgICAgLy8gYXJlIHdyaXR0ZW4uICBNdXN0IG9ubHkgYmUgY2FsbGVkIG9uY2UuICBS
ZXR1cm5zIHdoZXRoZXIgYWxsb2NhdGlvbgotICAgICAgICAvLyBzdWNjZWVkZWQuCi0gICAgICAg
IGJvb2wgc2V0U2l6ZShjb25zdCBJbnRTaXplJik7CisgICAgICAgIC8vIE1ha2VzIHRoaXMgZnJh
bWUgaGF2ZSBhbiBpbmRlcGVuZGVudCBjb3B5IG9mIHRoZSBwcm92aWRlZCBpbWFnZSdzCisgICAg
ICAgIC8vIHBpeGVsIGRhdGEsIHNvIHRoYXQgbW9kaWZpY2F0aW9ucyBpbiBvbmUgZnJhbWUgYXJl
IG5vdCByZWZsZWN0ZWQgaW4KKyAgICAgICAgLy8gdGhlIG90aGVyLiBSZXR1cm5zIHdoZXRoZXIg
dGhlIGNvcHkgc3VjY2VlZGVkLgorICAgICAgICBib29sIGluaXRpYWxpemVCYWNraW5nU3RvcmUo
Y29uc3QgSW1hZ2VCYWNraW5nU3RvcmUmKTsKKworICAgICAgICAvLyBBbGxvY2F0ZXMgc3BhY2Ug
Zm9yIHRoZSBwaXhlbCBkYXRhLiBSZXR1cm5zIHdoZXRoZXIgYWxsb2NhdGlvbiBzdWNjZWVkZWQu
CisgICAgICAgIGJvb2wgaW5pdGlhbGl6ZUJhY2tpbmdTdG9yZShjb25zdCBJbnRTaXplJiwgYm9v
bCBwcmVtdWx0aXBseUFscGhhKTsKKwogICAgICAgICBJbnRTaXplIHNpemUoKSBjb25zdCB7IHJl
dHVybiBtX2JhY2tpbmdTdG9yZSA/IG1fYmFja2luZ1N0b3JlLT5zaXplKCkgOiBJbnRTaXplKCk7
IH0KIAogICAgICAgICAvLyBSZXR1cm5zIGEgY2FsbGVyLW93bmVkIHBvaW50ZXIgdG8gdGhlIHVu
ZGVybHlpbmcgbmF0aXZlIGltYWdlIGRhdGEuCkBAIC0xMDUsMTQgKzEwNCwxMiBAQCB1c2luZyBD
b2xvclByb2ZpbGUgPSBWZWN0b3I8Y2hhcj47CiAgICAgICAgIEZyYW1lU3RhdHVzIHN0YXR1cygp
IGNvbnN0IHsgcmV0dXJuIG1fc3RhdHVzOyB9CiAgICAgICAgIHVuc2lnbmVkIGR1cmF0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9kdXJhdGlvbjsgfQogICAgICAgICBGcmFtZURpc3Bvc2FsTWV0aG9k
IGRpc3Bvc2FsTWV0aG9kKCkgY29uc3QgeyByZXR1cm4gbV9kaXNwb3NhbE1ldGhvZDsgfQotICAg
ICAgICBib29sIHByZW11bHRpcGx5QWxwaGEoKSBjb25zdCB7IHJldHVybiBtX3ByZW11bHRpcGx5
QWxwaGE7IH0KIAogICAgICAgICB2b2lkIHNldEhhc0FscGhhKGJvb2wgYWxwaGEpOwogICAgICAg
ICB2b2lkIHNldE9yaWdpbmFsRnJhbWVSZWN0KGNvbnN0IEludFJlY3QmKTsKICAgICAgICAgdm9p
ZCBzZXRTdGF0dXMoRnJhbWVTdGF0dXMgc3RhdHVzKTsKICAgICAgICAgdm9pZCBzZXREdXJhdGlv
bih1bnNpZ25lZCBkdXJhdGlvbikgeyBtX2R1cmF0aW9uID0gZHVyYXRpb247IH0KICAgICAgICAg
dm9pZCBzZXREaXNwb3NhbE1ldGhvZChGcmFtZURpc3Bvc2FsTWV0aG9kIG1ldGhvZCkgeyBtX2Rp
c3Bvc2FsTWV0aG9kID0gbWV0aG9kOyB9Ci0gICAgICAgIHZvaWQgc2V0UHJlbXVsdGlwbHlBbHBo
YShib29sIHByZW11bHRpcGx5QWxwaGEpIHsgbV9wcmVtdWx0aXBseUFscGhhID0gcHJlbXVsdGlw
bHlBbHBoYTsgfQogCiAgICAgICAgIGlubGluZSBSR0JBMzIqIHBpeGVsQXQoaW50IHgsIGludCB5
KQogICAgICAgICB7CkBAIC0xNDYsNyArMTQzLDYgQEAgdXNpbmcgQ29sb3JQcm9maWxlID0gVmVj
dG9yPGNoYXI+OwogICAgICAgICBGcmFtZVN0YXR1cyBtX3N0YXR1czsKICAgICAgICAgdW5zaWdu
ZWQgbV9kdXJhdGlvbjsKICAgICAgICAgRnJhbWVEaXNwb3NhbE1ldGhvZCBtX2Rpc3Bvc2FsTWV0
aG9kOwotICAgICAgICBib29sIG1fcHJlbXVsdGlwbHlBbHBoYTsKICAgICB9OwogCiAgICAgLy8g
SW1hZ2VEZWNvZGVyIGlzIGEgYmFzZSBmb3IgYWxsIGZvcm1hdC1zcGVjaWZpYyBkZWNvZGVycwpA
QCAtMTc0LDYgKzE3MCw4IEBAIHVzaW5nIENvbG9yUHJvZmlsZSA9IFZlY3RvcjxjaGFyPjsKICAg
ICAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZURlY29kZXI+IGNyZWF0ZShjb25zdCBT
aGFyZWRCdWZmZXImIGRhdGEsIEltYWdlU291cmNlOjpBbHBoYU9wdGlvbiwgSW1hZ2VTb3VyY2U6
OkdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKIAogICAgICAgICB2aXJ0dWFsIFN0cmluZyBm
aWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0ID0gMDsKKyAgICAgICAgCisgICAgICAgIGJvb2wgcHJl
bXVsdGlwbHlBbHBoYSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJlbXVsdGlwbHlBbHBoYTsgfQogCiAg
ICAgICAgIGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzQWxsRGF0
YVJlY2VpdmVkOyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwCShyZXZpc2lv
biAyMDU4NDEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAv
Qk1QSW1hZ2VEZWNvZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzAsMTAgKzcwLDggQEAgSW1h
Z2VGcmFtZSogQk1QSW1hZ2VEZWNvZGVyOjpmcmFtZUJ1ZmZlcgogICAgIGlmIChpbmRleCkKICAg
ICAgICAgcmV0dXJuIDA7CiAKLSAgICBpZiAobV9mcmFtZUJ1ZmZlckNhY2hlLmlzRW1wdHkoKSkg
eworICAgIGlmIChtX2ZyYW1lQnVmZmVyQ2FjaGUuaXNFbXB0eSgpKQogICAgICAgICBtX2ZyYW1l
QnVmZmVyQ2FjaGUucmVzaXplKDEpOwotICAgICAgICBtX2ZyYW1lQnVmZmVyQ2FjaGUuZmlyc3Qo
KS5zZXRQcmVtdWx0aXBseUFscGhhKG1fcHJlbXVsdGlwbHlBbHBoYSk7Ci0gICAgfQogCiAgICAg
SW1hZ2VGcmFtZSogYnVmZmVyID0gJm1fZnJhbWVCdWZmZXJDYWNoZS5maXJzdCgpOwogICAgIGlm
IChidWZmZXItPnN0YXR1cygpICE9IEltYWdlRnJhbWU6OkZyYW1lQ29tcGxldGUpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VSZWFkZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2JtcC9CTVBJbWFnZVJlYWRlci5jcHAJKHJldmlzaW9uIDIwNTg0MSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTc4LDEyICs3OCwxMCBAQCBib29sIEJNUEltYWdlUmVhZGVyOjpkZWNvZGVC
TVAoYm9vbCBvbmx5CiAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgZnJhbWVidWZmZXIgaWYgbmVlZGVk
LgogICAgIEFTU0VSVChtX2J1ZmZlcik7ICAvLyBQYXJlbnQgc2hvdWxkIHNldCB0aGlzIGJlZm9y
ZSBhc2tpbmcgdXMgdG8gZGVjb2RlIQogICAgIGlmIChtX2J1ZmZlci0+c3RhdHVzKCkgPT0gSW1h
Z2VGcmFtZTo6RnJhbWVFbXB0eSkgewotICAgICAgICBpZiAoIW1fYnVmZmVyLT5zZXRTaXplKG1f
cGFyZW50LT5zaXplKCkpKQorICAgICAgICBpZiAoIW1fYnVmZmVyLT5pbml0aWFsaXplQmFja2lu
Z1N0b3JlKG1fcGFyZW50LT5zaXplKCksIG1fcGFyZW50LT5wcmVtdWx0aXBseUFscGhhKCkpKQog
ICAgICAgICAgICAgcmV0dXJuIG1fcGFyZW50LT5zZXRGYWlsZWQoKTsgLy8gVW5hYmxlIHRvIGFs
bG9jYXRlLgorCiAgICAgICAgIG1fYnVmZmVyLT5zZXRTdGF0dXMoSW1hZ2VGcmFtZTo6RnJhbWVQ
YXJ0aWFsKTsKLSAgICAgICAgLy8gc2V0U2l6ZSgpIGNhbGxzIGVyYXNlQVJHQigpLCB3aGljaCBy
ZXNldHMgdGhlIGFscGhhIGZsYWcsIHNvIHdlIGZvcmNlCi0gICAgICAgIC8vIGl0IGJhY2sgdG8g
ZmFsc2UgaGVyZS4gIFdlJ2xsIHNldCBpdCB0cnVlIGJlbG93IGluIGFsbCBjYXNlcyB3aGVyZQot
ICAgICAgICAvLyB0aGVzZSAwcyBjb3VsZCBhY3R1YWxseSBzaG93IHRocm91Z2guCiAgICAgICAg
IG1fYnVmZmVyLT5zZXRIYXNBbHBoYShmYWxzZSk7CiAKICAgICAgICAgaWYgKCFtX2lzVG9wRG93
bikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJ
bWFnZURlY29kZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwCShyZXZpc2lvbiAyMDU4NDEpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNv
ZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIxLDEwICszMjEsNyBAQCB2b2lkIEdJRkltYWdl
RGVjb2Rlcjo6ZGVjb2RlKHVuc2lnbmVkIGhhCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBjb25zdCBzaXplX3Qgb2xkU2l6ZSA9IG1fZnJhbWVCdWZmZXJDYWNoZS5zaXplKCk7CiAgICAg
bV9mcmFtZUJ1ZmZlckNhY2hlLnJlc2l6ZShtX3JlYWRlci0+aW1hZ2VzQ291bnQoKSk7Ci0gICAg
Zm9yIChzaXplX3QgaSA9IG9sZFNpemU7IGkgPCBtX3JlYWRlci0+aW1hZ2VzQ291bnQoKTsgKytp
KQotICAgICAgICBtX2ZyYW1lQnVmZmVyQ2FjaGVbaV0uc2V0UHJlbXVsdGlwbHlBbHBoYShtX3By
ZW11bHRpcGx5QWxwaGEpOwogCiAgICAgaWYgKHF1ZXJ5ID09IEdJRkZyYW1lQ291bnRRdWVyeSkK
ICAgICAgICAgcmV0dXJuOwpAQCAtMzYxLDcgKzM1OCw3IEBAIGJvb2wgR0lGSW1hZ2VEZWNvZGVy
Ojppbml0RnJhbWVCdWZmZXIodW4KIAogICAgIGlmICghZnJhbWVJbmRleCkgewogICAgICAgICAv
LyBUaGlzIGlzIHRoZSBmaXJzdCBmcmFtZSwgc28gd2UncmUgbm90IHJlbHlpbmcgb24gYW55IHBy
ZXZpb3VzIGRhdGEuCi0gICAgICAgIGlmICghYnVmZmVyLT5zZXRTaXplKHNjYWxlZFNpemUoKSkp
CisgICAgICAgIGlmICghYnVmZmVyLT5pbml0aWFsaXplQmFja2luZ1N0b3JlKHNjYWxlZFNpemUo
KSwgbV9wcmVtdWx0aXBseUFscGhhKSkKICAgICAgICAgICAgIHJldHVybiBzZXRGYWlsZWQoKTsK
ICAgICB9IGVsc2UgewogICAgICAgICAvLyBUaGUgc3RhcnRpbmcgc3RhdGUgZm9yIHRoaXMgZnJh
bWUgZGVwZW5kcyBvbiB0aGUgcHJldmlvdXMgZnJhbWUncwpAQCAtMzgyLDcgKzM3OSw3IEBAIGJv
b2wgR0lGSW1hZ2VEZWNvZGVyOjppbml0RnJhbWVCdWZmZXIodW4KIAogICAgICAgICBpZiAoKHBy
ZXZNZXRob2QgPT0gSW1hZ2VGcmFtZTo6RGlzcG9zZU5vdFNwZWNpZmllZCkgfHwgKHByZXZNZXRo
b2QgPT0gSW1hZ2VGcmFtZTo6RGlzcG9zZUtlZXApKSB7CiAgICAgICAgICAgICAvLyBQcmVzZXJ2
ZSB0aGUgbGFzdCBmcmFtZSBhcyB0aGUgc3RhcnRpbmcgc3RhdGUgZm9yIHRoaXMgZnJhbWUuCi0g
ICAgICAgICAgICBpZiAoIWJ1ZmZlci0+Y29weUJpdG1hcERhdGEoKnByZXZCdWZmZXIpKQorICAg
ICAgICAgICAgaWYgKCFwcmV2QnVmZmVyLT5iYWNraW5nU3RvcmUoKSB8fCAhYnVmZmVyLT5pbml0
aWFsaXplQmFja2luZ1N0b3JlKCpwcmV2QnVmZmVyLT5iYWNraW5nU3RvcmUoKSkpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIHNldEZhaWxlZCgpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgLy8gV2Ugd2FudCB0byBjbGVhciB0aGUgcHJldmlvdXMgZnJhbWUgdG8gdHJhbnNwYXJlbnQs
IHdpdGhvdXQKQEAgLTM5MiwxMSArMzg5LDExIEBAIGJvb2wgR0lGSW1hZ2VEZWNvZGVyOjppbml0
RnJhbWVCdWZmZXIodW4KICAgICAgICAgICAgIGlmICghZnJhbWVJbmRleCB8fCBwcmV2UmVjdC5j
b250YWlucyhJbnRSZWN0KEludFBvaW50KCksIHNjYWxlZFNpemUoKSkpKSB7CiAgICAgICAgICAg
ICAgICAgLy8gQ2xlYXJpbmcgdGhlIGZpcnN0IGZyYW1lLCBvciBhIGZyYW1lIHRoZSBzaXplIG9m
IHRoZSB3aG9sZQogICAgICAgICAgICAgICAgIC8vIGltYWdlLCByZXN1bHRzIGluIGEgY29tcGxl
dGVseSBlbXB0eSBpbWFnZS4KLSAgICAgICAgICAgICAgICBpZiAoIWJ1ZmZlci0+c2V0U2l6ZShi
dWZmZXJTaXplKSkKKyAgICAgICAgICAgICAgICBpZiAoIWJ1ZmZlci0+aW5pdGlhbGl6ZUJhY2tp
bmdTdG9yZShidWZmZXJTaXplLCBtX3ByZW11bHRpcGx5QWxwaGEpKQogICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gc2V0RmFpbGVkKCk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgICAgIC8vIENvcHkgdGhlIHdob2xlIHByZXZpb3VzIGJ1ZmZlciwgdGhlbiBjbGVhciBqdXN0
IGl0cyBmcmFtZS4KLSAgICAgICAgICAgICAgICBpZiAoIWJ1ZmZlci0+Y29weUJpdG1hcERhdGEo
KnByZXZCdWZmZXIpKQorICAgICAgICAgICAgICAgIGlmICghcHJldkJ1ZmZlci0+YmFja2luZ1N0
b3JlKCkgfHwgIWJ1ZmZlci0+aW5pdGlhbGl6ZUJhY2tpbmdTdG9yZSgqcHJldkJ1ZmZlci0+YmFj
a2luZ1N0b3JlKCkpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2V0RmFpbGVkKCk7CiAg
ICAgICAgICAgICAgICAgYnVmZmVyLT56ZXJvRmlsbEZyYW1lUmVjdChwcmV2UmVjdCk7CiAgICAg
ICAgICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9p
Y28vSUNPSW1hZ2VEZWNvZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcAkocmV2aXNpb24gMjA1
ODQxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0lt
YWdlRGVjb2Rlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk4LDExICs5OCw4IEBAIGJvb2wgSUNP
SW1hZ2VEZWNvZGVyOjpzZXRTaXplKGNvbnN0IEludFMKIHNpemVfdCBJQ09JbWFnZURlY29kZXI6
OmZyYW1lQ291bnQoKQogewogICAgIGRlY29kZSgwLCB0cnVlKTsKLSAgICBpZiAobV9mcmFtZUJ1
ZmZlckNhY2hlLmlzRW1wdHkoKSkgeworICAgIGlmIChtX2ZyYW1lQnVmZmVyQ2FjaGUuaXNFbXB0
eSgpKQogICAgICAgICBtX2ZyYW1lQnVmZmVyQ2FjaGUucmVzaXplKG1fZGlyRW50cmllcy5zaXpl
KCkpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZGlyRW50cmllcy5zaXplKCk7
ICsraSkKLSAgICAgICAgICAgIG1fZnJhbWVCdWZmZXJDYWNoZVtpXS5zZXRQcmVtdWx0aXBseUFs
cGhhKG1fcHJlbXVsdGlwbHlBbHBoYSk7Ci0gICAgfQogICAgIC8vIENBVVRJT046IFdlIG11c3Qg
bm90IHJlc2l6ZSBtX2ZyYW1lQnVmZmVyQ2FjaGUgYWdhaW4gYWZ0ZXIgdGhpcywgYXMKICAgICAv
LyBkZWNvZGVBdEluZGV4KCkgbWF5IGdpdmUgYSBCTVBJbWFnZVJlYWRlciBhIHBvaW50ZXIgdG8g
b25lIG9mIHRoZQogICAgIC8vIGVudHJpZXMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVj
b2Rlci5jcHAJKHJldmlzaW9uIDIwNTg0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTUzMywxMCArNTMzLDggQEAgSW1hZ2VGcmFtZSogSlBFR0ltYWdlRGVjb2Rlcjo6ZnJhbWVCdWZm
ZQogICAgIGlmIChpbmRleCkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBpZiAobV9mcmFtZUJ1
ZmZlckNhY2hlLmlzRW1wdHkoKSkgeworICAgIGlmIChtX2ZyYW1lQnVmZmVyQ2FjaGUuaXNFbXB0
eSgpKQogICAgICAgICBtX2ZyYW1lQnVmZmVyQ2FjaGUucmVzaXplKDEpOwotICAgICAgICBtX2Zy
YW1lQnVmZmVyQ2FjaGVbMF0uc2V0UHJlbXVsdGlwbHlBbHBoYShtX3ByZW11bHRpcGx5QWxwaGEp
OwotICAgIH0KIAogICAgIEltYWdlRnJhbWUmIGZyYW1lID0gbV9mcmFtZUJ1ZmZlckNhY2hlWzBd
OwogICAgIGlmIChmcmFtZS5zdGF0dXMoKSAhPSBJbWFnZUZyYW1lOjpGcmFtZUNvbXBsZXRlKQpA
QCAtNjE3LDcgKzYxNSw3IEBAIGJvb2wgSlBFR0ltYWdlRGVjb2Rlcjo6b3V0cHV0U2NhbmxpbmVz
KCkKICAgICAvLyBJbml0aWFsaXplIHRoZSBmcmFtZWJ1ZmZlciBpZiBuZWVkZWQuCiAgICAgSW1h
Z2VGcmFtZSYgYnVmZmVyID0gbV9mcmFtZUJ1ZmZlckNhY2hlWzBdOwogICAgIGlmIChidWZmZXIu
c3RhdHVzKCkgPT0gSW1hZ2VGcmFtZTo6RnJhbWVFbXB0eSkgewotICAgICAgICBpZiAoIWJ1ZmZl
ci5zZXRTaXplKHNjYWxlZFNpemUoKSkpCisgICAgICAgIGlmICghYnVmZmVyLmluaXRpYWxpemVC
YWNraW5nU3RvcmUoc2NhbGVkU2l6ZSgpLCBtX3ByZW11bHRpcGx5QWxwaGEpKQogICAgICAgICAg
ICAgcmV0dXJuIHNldEZhaWxlZCgpOwogICAgICAgICBidWZmZXIuc2V0U3RhdHVzKEltYWdlRnJh
bWU6OkZyYW1lUGFydGlhbCk7CiAgICAgICAgIC8vIFRoZSBidWZmZXIgaXMgdHJhbnNwYXJlbnQg
b3V0c2lkZSB0aGUgZGVjb2RlZCBhcmVhIHdoaWxlIHRoZSBpbWFnZSBpcwpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5n
L1BOR0ltYWdlRGVjb2Rlci5jcHAJKHJldmlzaW9uIDIwNTg0MSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNTcsMTAgKzI1Nyw4IEBAIEltYWdlRnJhbWUqIFBOR0ltYWdlRGVjb2Rlcjo6
ZnJhbWVCdWZmZXIKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAjZW5kaWYKIAotICAgIGlmICht
X2ZyYW1lQnVmZmVyQ2FjaGUuaXNFbXB0eSgpKSB7CisgICAgaWYgKG1fZnJhbWVCdWZmZXJDYWNo
ZS5pc0VtcHR5KCkpCiAgICAgICAgIG1fZnJhbWVCdWZmZXJDYWNoZS5yZXNpemUoMSk7Ci0gICAg
ICAgIG1fZnJhbWVCdWZmZXJDYWNoZVswXS5zZXRQcmVtdWx0aXBseUFscGhhKG1fcHJlbXVsdGlw
bHlBbHBoYSk7Ci0gICAgfQogCiAgICAgSW1hZ2VGcmFtZSYgZnJhbWUgPSBtX2ZyYW1lQnVmZmVy
Q2FjaGVbaW5kZXhdOwogICAgIGlmIChmcmFtZS5zdGF0dXMoKSAhPSBJbWFnZUZyYW1lOjpGcmFt
ZUNvbXBsZXRlKQpAQCAtNDExLDI5ICs0MDksNiBAQCB2b2lkIFBOR0ltYWdlRGVjb2Rlcjo6aGVh
ZGVyQXZhaWxhYmxlKCkKICAgICB9CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBzZXRQaXhlbFJH
QihSR0JBMzIqIGRlc3QsIHBuZ19ieXRlcCBwaXhlbCkKLXsKLSAgICAqZGVzdCA9IDB4RkYwMDAw
MDBVIHwgcGl4ZWxbMF0gPDwgMTYgfCBwaXhlbFsxXSA8PCA4IHwgcGl4ZWxbMl07Ci19Ci0KLXN0
YXRpYyBpbmxpbmUgdm9pZCBzZXRQaXhlbFJHQkEoUkdCQTMyKiBkZXN0LCBwbmdfYnl0ZXAgcGl4
ZWwsIHVuc2lnbmVkIGNoYXImIG5vblRyaXZpYWxBbHBoYU1hc2spCi17Ci0gICAgdW5zaWduZWQg
Y2hhciBhID0gcGl4ZWxbM107Ci0gICAgKmRlc3QgPSBhIDw8IDI0IHwgcGl4ZWxbMF0gPDwgMTYg
fCBwaXhlbFsxXSA8PCA4IHwgcGl4ZWxbMl07Ci0gICAgbm9uVHJpdmlhbEFscGhhTWFzayB8PSAo
MjU1IC0gYSk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgdm9pZCBzZXRQaXhlbFByZW11bHRpcGxpZWRS
R0JBKFJHQkEzMiogZGVzdCwgcG5nX2J5dGVwIHBpeGVsLCB1bnNpZ25lZCBjaGFyJiBub25Ucml2
aWFsQWxwaGFNYXNrKQotewotICAgIHVuc2lnbmVkIGNoYXIgYSA9IHBpeGVsWzNdOwotICAgIHVu
c2lnbmVkIGNoYXIgciA9IGZhc3REaXZpZGVCeTI1NShwaXhlbFswXSAqIGEpOwotICAgIHVuc2ln
bmVkIGNoYXIgZyA9IGZhc3REaXZpZGVCeTI1NShwaXhlbFsxXSAqIGEpOwotICAgIHVuc2lnbmVk
IGNoYXIgYiA9IGZhc3REaXZpZGVCeTI1NShwaXhlbFsyXSAqIGEpOwotCi0gICAgKmRlc3QgPSBh
IDw8IDI0IHwgciA8PCAxNiB8IGcgPDwgOCB8IGI7Ci0gICAgbm9uVHJpdmlhbEFscGhhTWFzayB8
PSAoMjU1IC0gYSk7Ci19Ci0KIHZvaWQgUE5HSW1hZ2VEZWNvZGVyOjpyb3dBdmFpbGFibGUodW5z
aWduZWQgY2hhciogcm93QnVmZmVyLCB1bnNpZ25lZCByb3dJbmRleCwgaW50KQogewogICAgIGlm
IChtX2ZyYW1lQnVmZmVyQ2FjaGUuaXNFbXB0eSgpKQpAQCAtNDQ3LDcgKzQyMiw3IEBAIHZvaWQg
UE5HSW1hZ2VEZWNvZGVyOjpyb3dBdmFpbGFibGUodW5zaWcKICAgICBJbWFnZUZyYW1lJiBidWZm
ZXIgPSBtX2ZyYW1lQnVmZmVyQ2FjaGVbbV9jdXJyZW50RnJhbWVdOwogICAgIGlmIChidWZmZXIu
c3RhdHVzKCkgPT0gSW1hZ2VGcmFtZTo6RnJhbWVFbXB0eSkgewogICAgICAgICBwbmdfc3RydWN0
cCBwbmcgPSBtX3JlYWRlci0+cG5nUHRyKCk7Ci0gICAgICAgIGlmICghYnVmZmVyLnNldFNpemUo
c2NhbGVkU2l6ZSgpKSkgeworICAgICAgICBpZiAoIWJ1ZmZlci5pbml0aWFsaXplQmFja2luZ1N0
b3JlKHNjYWxlZFNpemUoKSwgbV9wcmVtdWx0aXBseUFscGhhKSkgewogICAgICAgICAgICAgbG9u
Z2ptcChKTVBCVUYocG5nKSwgMSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAg
LTUzNCwxMCArNTA5LDEwIEBAIHZvaWQgUE5HSW1hZ2VEZWNvZGVyOjpyb3dBdmFpbGFibGUodW5z
aWcKIAogI2lmIEVOQUJMRShJTUFHRV9ERUNPREVSX0RPV05fU0FNUExJTkcpCiAgICAgaWYgKG1f
c2NhbGVkKSB7Ci0gICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgd2lkdGg7ICsreCkgeworICAg
ICAgICBmb3IgKGludCB4ID0gMDsgeCA8IHdpZHRoOyArK3gsICsrYWRkcmVzcykgewogICAgICAg
ICAgICAgcG5nX2J5dGVwIHBpeGVsID0gcm93ICsgbV9zY2FsZWRDb2x1bW5zW3hdICogY29sb3JD
aGFubmVsczsKICAgICAgICAgICAgIHVuc2lnbmVkIGFscGhhID0gaGFzQWxwaGEgPyBwaXhlbFsz
XSA6IDI1NTsKLSAgICAgICAgICAgIGJ1ZmZlci5zZXRQaXhlbChhZGRyZXNzKyssIHBpeGVsWzBd
LCBwaXhlbFsxXSwgcGl4ZWxbMl0sIGFscGhhKTsKKyAgICAgICAgICAgIGJ1ZmZlci5zZXRQaXhl
bChhZGRyZXNzLCBwaXhlbFswXSwgcGl4ZWxbMV0sIHBpeGVsWzJdLCBhbHBoYSk7CiAgICAgICAg
ICAgICBub25Ucml2aWFsQWxwaGFNYXNrIHw9ICgyNTUgLSBhbHBoYSk7CiAgICAgICAgIH0KICAg
ICB9IGVsc2UKQEAgLTU0NSwyMCArNTIwLDE3IEBAIHZvaWQgUE5HSW1hZ2VEZWNvZGVyOjpyb3dB
dmFpbGFibGUodW5zaWcKICAgICB7CiAgICAgICAgIHBuZ19ieXRlcCBwaXhlbCA9IHJvdzsKICAg
ICAgICAgaWYgKGhhc0FscGhhKSB7Ci0gICAgICAgICAgICBpZiAoYnVmZmVyLnByZW11bHRpcGx5
QWxwaGEoKSkgewotICAgICAgICAgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgd2lkdGg7ICsr
eCwgcGl4ZWwgKz0gNCkKLSAgICAgICAgICAgICAgICAgICAgc2V0UGl4ZWxQcmVtdWx0aXBsaWVk
UkdCQShhZGRyZXNzKyssIHBpeGVsLCBub25Ucml2aWFsQWxwaGFNYXNrKTsKLSAgICAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCB3aWR0aDsgKyt4
LCBwaXhlbCArPSA0KQotICAgICAgICAgICAgICAgICAgICBzZXRQaXhlbFJHQkEoYWRkcmVzcysr
LCBwaXhlbCwgbm9uVHJpdmlhbEFscGhhTWFzayk7CisgICAgICAgICAgICBmb3IgKGludCB4ID0g
MDsgeCA8IHdpZHRoOyArK3gsIHBpeGVsICs9IDQsICsrYWRkcmVzcykgeworICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGFscGhhID0gcGl4ZWxbM107CisgICAgICAgICAgICAgICAgYnVmZmVyLnNl
dFBpeGVsKGFkZHJlc3MsIHBpeGVsWzBdLCBwaXhlbFsxXSwgcGl4ZWxbMl0sIGFscGhhKTsKKyAg
ICAgICAgICAgICAgICBub25Ucml2aWFsQWxwaGFNYXNrIHw9ICgyNTUgLSBhbHBoYSk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBmb3IgKGludCB4ID0gMDsg
eCA8IHdpZHRoOyArK3gsIHBpeGVsICs9IDMpCi0gICAgICAgICAgICAgICAgc2V0UGl4ZWxSR0Io
YWRkcmVzcysrLCBwaXhlbCk7CisgICAgICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IHdpZHRo
OyArK3gsIHBpeGVsICs9IDMsICsrYWRkcmVzcykKKyAgICAgICAgICAgICAgICAqYWRkcmVzcyA9
IG1ha2VSR0IocGl4ZWxbMF0sIHBpeGVsWzFdLCBwaXhlbFsyXSk7CiAgICAgICAgIH0KICAgICB9
CiAKLQogICAgIGlmIChub25Ucml2aWFsQWxwaGFNYXNrICYmICFidWZmZXIuaGFzQWxwaGEoKSkK
ICAgICAgICAgYnVmZmVyLnNldEhhc0FscGhhKHRydWUpOwogfQpAQCAtNjE4LDggKzU5MCw2IEBA
IHZvaWQgUE5HSW1hZ2VEZWNvZGVyOjpyZWFkQ2h1bmtzKHBuZ191bmsKICAgICAgICAgICAgIHJl
dHVybjsKIAogICAgICAgICBtX2ZyYW1lQnVmZmVyQ2FjaGUucmVzaXplKG1fZnJhbWVDb3VudCk7
Ci0gICAgICAgIGZvciAoYXV0byYgaW1hZ2VGcmFtZSA6IG1fZnJhbWVCdWZmZXJDYWNoZSkKLSAg
ICAgICAgICAgIGltYWdlRnJhbWUuc2V0UHJlbXVsdGlwbHlBbHBoYShtX3ByZW11bHRpcGx5QWxw
aGEpOwogICAgIH0gZWxzZSBpZiAoIW1lbWNtcChjaHVuay0+bmFtZSwgImZjVEwiLCA0KSAmJiBj
aHVuay0+c2l6ZSA9PSAyNikgewogICAgICAgICBpZiAobV9oYXNJbmZvICYmICFtX2lzQW5pbWF0
ZWQpCiAgICAgICAgICAgICByZXR1cm47CkBAIC02NjEsMTAgKzYzMSw4IEBAIHZvaWQgUE5HSW1h
Z2VEZWNvZGVyOjpyZWFkQ2h1bmtzKHBuZ191bmsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogCi0gICAgICAgIGlmIChtX2ZyYW1lQnVmZmVyQ2FjaGUuaXNFbXB0eSgpKSB7CisgICAg
ICAgIGlmIChtX2ZyYW1lQnVmZmVyQ2FjaGUuaXNFbXB0eSgpKQogICAgICAgICAgICAgbV9mcmFt
ZUJ1ZmZlckNhY2hlLnJlc2l6ZSgxKTsKLSAgICAgICAgICAgIG1fZnJhbWVCdWZmZXJDYWNoZVsw
XS5zZXRQcmVtdWx0aXBseUFscGhhKG1fcHJlbXVsdGlwbHlBbHBoYSk7Ci0gICAgICAgIH0KIAog
ICAgICAgICBpZiAobV9jdXJyZW50RnJhbWUgPCBtX2ZyYW1lQnVmZmVyQ2FjaGUuc2l6ZSgpKSB7
CiAgICAgICAgICAgICBJbWFnZUZyYW1lJiBidWZmZXIgPSBtX2ZyYW1lQnVmZmVyQ2FjaGVbbV9j
dXJyZW50RnJhbWVdOwpAQCAtODA5LDExICs3NzcsMTQgQEAgdm9pZCBQTkdJbWFnZURlY29kZXI6
OmluaXRGcmFtZUJ1ZmZlcihzaQogICAgICAgICBwcmV2QnVmZmVyID0gJm1fZnJhbWVCdWZmZXJD
YWNoZVstLWZyYW1lSW5kZXhdOwogICAgICAgICBwcmV2TWV0aG9kID0gcHJldkJ1ZmZlci0+ZGlz
cG9zYWxNZXRob2QoKTsKICAgICB9CisKKyAgICBwbmdfc3RydWN0cCBwbmcgPSBtX3JlYWRlci0+
cG5nUHRyKCk7CiAgICAgQVNTRVJUKHByZXZCdWZmZXItPnN0YXR1cygpID09IEltYWdlRnJhbWU6
OkZyYW1lQ29tcGxldGUpOwogCiAgICAgaWYgKHByZXZNZXRob2QgPT0gSW1hZ2VGcmFtZTo6RGlz
cG9zZUtlZXApIHsKICAgICAgICAgLy8gUHJlc2VydmUgdGhlIGxhc3QgZnJhbWUgYXMgdGhlIHN0
YXJ0aW5nIHN0YXRlIGZvciB0aGlzIGZyYW1lLgotICAgICAgICBidWZmZXIuY29weUJpdG1hcERh
dGEoKnByZXZCdWZmZXIpOworICAgICAgICBpZiAoIXByZXZCdWZmZXItPmJhY2tpbmdTdG9yZSgp
IHx8ICFidWZmZXIuaW5pdGlhbGl6ZUJhY2tpbmdTdG9yZSgqcHJldkJ1ZmZlci0+YmFja2luZ1N0
b3JlKCkpKQorICAgICAgICAgICAgbG9uZ2ptcChKTVBCVUYocG5nKSwgMSk7CiAgICAgfSBlbHNl
IHsKICAgICAgICAgLy8gV2Ugd2FudCB0byBjbGVhciB0aGUgcHJldmlvdXMgZnJhbWUgdG8gdHJh
bnNwYXJlbnQsIHdpdGhvdXQKICAgICAgICAgLy8gYWZmZWN0aW5nIHBpeGVscyBpbiB0aGUgaW1h
Z2Ugb3V0c2lkZSBvZiB0aGUgZnJhbWUuCkBAIC04MjQsNyArNzk1LDEwIEBAIHZvaWQgUE5HSW1h
Z2VEZWNvZGVyOjppbml0RnJhbWVCdWZmZXIoc2kKICAgICAgICAgICAgIGJ1ZmZlci56ZXJvRmls
bFBpeGVsRGF0YSgpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgLy8gQ29weSB0aGUg
d2hvbGUgcHJldmlvdXMgYnVmZmVyLCB0aGVuIGNsZWFyIGp1c3QgaXRzIGZyYW1lLgotICAgICAg
ICAgICAgYnVmZmVyLmNvcHlCaXRtYXBEYXRhKCpwcmV2QnVmZmVyKTsKKyAgICAgICAgICAgIGlm
ICghcHJldkJ1ZmZlci0+YmFja2luZ1N0b3JlKCkgfHwgIWJ1ZmZlci5pbml0aWFsaXplQmFja2lu
Z1N0b3JlKCpwcmV2QnVmZmVyLT5iYWNraW5nU3RvcmUoKSkpIHsKKyAgICAgICAgICAgICAgICBs
b25nam1wKEpNUEJVRihwbmcpLCAxKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICB9CiAgICAgICAgICAgICBidWZmZXIuemVyb0ZpbGxGcmFtZVJlY3QocHJldlJlY3QpOwog
ICAgICAgICB9CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwCShy
ZXZpc2lvbiAyMDU4NDEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OCwxMCArNzgs
OCBAQCBJbWFnZUZyYW1lKiBXRUJQSW1hZ2VEZWNvZGVyOjpmcmFtZUJ1ZmZlCiAgICAgaWYgKGlu
ZGV4KQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGlmIChtX2ZyYW1lQnVmZmVyQ2FjaGUuaXNF
bXB0eSgpKSB7CisgICAgaWYgKG1fZnJhbWVCdWZmZXJDYWNoZS5pc0VtcHR5KCkpCiAgICAgICAg
IG1fZnJhbWVCdWZmZXJDYWNoZS5yZXNpemUoMSk7Ci0gICAgICAgIG1fZnJhbWVCdWZmZXJDYWNo
ZVswXS5zZXRQcmVtdWx0aXBseUFscGhhKG1fcHJlbXVsdGlwbHlBbHBoYSk7Ci0gICAgfQogCiAg
ICAgSW1hZ2VGcmFtZSYgZnJhbWUgPSBtX2ZyYW1lQnVmZmVyQ2FjaGVbMF07CiAgICAgaWYgKGZy
YW1lLnN0YXR1cygpICE9IEltYWdlRnJhbWU6OkZyYW1lQ29tcGxldGUpCkBAIC0xMjgsNyArMTI2
LDcgQEAgYm9vbCBXRUJQSW1hZ2VEZWNvZGVyOjpkZWNvZGUoYm9vbCBvbmx5UwogICAgIEFTU0VS
VChidWZmZXIuc3RhdHVzKCkgIT0gSW1hZ2VGcmFtZTo6RnJhbWVDb21wbGV0ZSk7CiAKICAgICBp
ZiAoYnVmZmVyLnN0YXR1cygpID09IEltYWdlRnJhbWU6OkZyYW1lRW1wdHkpIHsKLSAgICAgICAg
aWYgKCFidWZmZXIuc2V0U2l6ZShzaXplKCkpKQorICAgICAgICBpZiAoIWJ1ZmZlci5pbml0aWFs
aXplQmFja2luZ1N0b3JlKHNpemUoKSwgbV9wcmVtdWx0aXBseUFscGhhKSkKICAgICAgICAgICAg
IHJldHVybiBzZXRGYWlsZWQoKTsKICAgICAgICAgYnVmZmVyLnNldFN0YXR1cyhJbWFnZUZyYW1l
OjpGcmFtZVBhcnRpYWwpOwogICAgICAgICBidWZmZXIuc2V0SGFzQWxwaGEobV9oYXNBbHBoYSk7
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>