<?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>225959</bug_id>
          
          <creation_ts>2021-05-18 22:46:31 -0700</creation_ts>
          <short_desc>[GPU Process] Delete GraphicsContext::clipToDrawingCommands()</short_desc>
          <delta_ts>2022-02-27 16:06:56 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Canvas</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=217026</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=222230</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=222881</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=237261</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>235758</dependson>
          <blocked>236508</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Said Abou-Hallawa">sabouhallawa</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>fred.wang</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1761474</commentid>
    <comment_count>0</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-05-18 22:46:31 -0700</bug_when>
    <thetext>If the underlying ImageBuffer of a GraphicsContext is a RemoteImageBufferProxy, ImageBuffer::createCompatibleBuffer() should create a RemoteImageBufferProxy. This will fix things like clipToDrawingCommands. This methods and its corresponding DisplayList items can be removed. The masking ImageBuffer will be remote. All the clipping commands will be recorded and sent to the GPUP. The caller in the WeP can just call clipToImageBuffer(). This will apply the drawing commands to the mask ImageBuffer in the GPUP. And then the masking ImageBuffer will be used to clip the original ImageBuffer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761475</commentid>
    <comment_count>1</comment_count>
      <attachid>429033</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-05-18 22:50:29 -0700</bug_when>
    <thetext>Created attachment 429033
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761479</commentid>
    <comment_count>2</comment_count>
      <attachid>429035</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-05-18 23:22:35 -0700</bug_when>
    <thetext>Created attachment 429035
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1763829</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-05-25 22:47:20 -0700</bug_when>
    <thetext>&lt;rdar://problem/78495380&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835223</commentid>
    <comment_count>4</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-01-28 19:04:21 -0800</bug_when>
    <thetext>I am going to repurpose this bug for deleting the GraphicsContext::clipToDrawingCommands() and make it blocked by bug 235758.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835228</commentid>
    <comment_count>5</comment_count>
      <attachid>450303</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-01-28 19:39:45 -0800</bug_when>
    <thetext>Created attachment 450303
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835229</commentid>
    <comment_count>6</comment_count>
      <attachid>450304</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-01-28 19:49:55 -0800</bug_when>
    <thetext>Created attachment 450304
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835238</commentid>
    <comment_count>7</comment_count>
      <attachid>450308</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-01-28 21:05:16 -0800</bug_when>
    <thetext>Created attachment 450308
Patch for review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836864</commentid>
    <comment_count>8</comment_count>
      <attachid>450308</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-02-03 04:27:25 -0800</bug_when>
    <thetext>Comment on attachment 450308
Patch for review

Need a new try that passes EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839570</commentid>
    <comment_count>9</comment_count>
      <attachid>451506</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-02-10 01:47:09 -0800</bug_when>
    <thetext>Created attachment 451506
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839822</commentid>
    <comment_count>10</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-02-10 11:05:23 -0800</bug_when>
    <thetext>This patch is reverting the following revisions:

r267742
r273291
r277715</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839846</commentid>
    <comment_count>11</comment_count>
      <attachid>451584</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-02-10 11:35:27 -0800</bug_when>
    <thetext>Created attachment 451584
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839851</commentid>
    <comment_count>12</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-02-10 11:38:18 -0800</bug_when>
    <thetext>(In reply to Said Abou-Hallawa from comment #11)
&gt; Created attachment 451584 [details]
&gt; Patch

Forgot to remove the unused member RemoteDisplayListRecorder::m_maskImageBuffer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840038</commentid>
    <comment_count>13</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-02-10 16:28:31 -0800</bug_when>
    <thetext>Committed r289594 (247107@main): &lt;https://commits.webkit.org/247107@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 451584.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429033</attachid>
            <date>2021-05-18 22:50:29 -0700</date>
            <delta_ts>2021-05-19 00:23:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225959-20210518225028.patch</filename>
            <type>text/plain</type>
            <size>46452</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3NzE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTZhYjExMmU0ODQwNzQy
ZTM2OWE4YWZjZjRjMWNlNGE2ZTIxZTQ4Ni4uMWEzNTg4N2QxNDk5YjQzNDAzYTgxNjVjMGNmZWI3
ZDQ0YWY2MzJmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgwIEBACisyMDIxLTA1LTE4ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
VGhlIGNvbXBhdGlibGUgSW1hZ2VCdWZmZXIgdHlwZSBzaG91bGQgbWF0Y2ggdGhlIEdyYXBoaWNz
Q29udGV4dCB1bmRlcmx5aW5nIEltYWdlQnVmZmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU5NTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBJZiB0aGUgdW5kZXJseWluZyBJbWFnZUJ1ZmZlciBvZiBh
IEdyYXBoaWNzQ29udGV4dCBpcyBhIFJlbW90ZUltYWdlQnVmZmVyUHJveHksCisgICAgICAgIElt
YWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKCkgc2hvdWxkIGNyZWF0ZSBhIFJlbW90
ZUltYWdlQnVmZmVyUHJveHkuCisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJp
bmdDb250ZXh0MkRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyREJhc2U6OmRyYXdUZXh0VW5jaGVja2VkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0Ojpvd25lckltYWdlQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDo6Y2xpcFRvRHJhd2luZ0NvbW1hbmRzKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDo6aW1wbCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQ6OmltcGwpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0SW1wbDo6
R3JhcGhpY3NDb250ZXh0SW1wbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0SW1wbC5oOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0SW1wbDo6
b3duZXJJbWFnZUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBh
dGlibGVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmg6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Y2FuQXBwZW5kSXRlbU9mVHlwZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Y2FuRHJhd0ltYWdlQnVmZmVyIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpjYWNoZU5hdGl2ZUltYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpjYWNoZUZvbnQpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlQnVmZmVyQ0dCYWNrZW5kOjpzZXR1cENvbnRleHQgY29uc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6OmFwcGVuZCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdpbmdDb250ZXh0OjpEcmF3aW5n
Q29udGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0RHJhd2luZ0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpE
cmF3aW5nQ29udGV4dDo6RHJhd2luZ0NvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEltYWdlQnVmZmVyLmg6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6SW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFuZGxlOjphcHBseSk6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZTo6ZGVzdHJveSk6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZTo6c2FmZUNvcHkgY29uc3QpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpzaXplT2ZJdGVtSW5CeXRlcyk6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6aXNEcmF3aW5nSXRlbSk6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6aXNJbmxpbmVJdGVtKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpvcGVyYXRvcjw8KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOjpCZWdpbkNs
aXBUb0RyYXdpbmdDb21tYW5kcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM6OmRlc3RpbmF0aW9uIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpCZWdpbkNsaXBUb0RyYXdpbmdD
b21tYW5kczo6Y29sb3JTcGFjZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOjpFbmRDbGlwVG9EcmF3aW5nQ29t
bWFuZHMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkVuZENsaXBU
b0RyYXdpbmdDb21tYW5kczo6ZGVzdGluYXRpb24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6UmVjb3JkZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjp+UmVjb3JkZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpjYWNoZU5hdGl2ZUltYWdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6Y2FuQXBwZW5kSXRlbU9mVHlw
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmNhbkRy
YXdJbWFnZUJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVj
b3JkZXI6OnJlbmRlcmluZ01vZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OlJlY29yZGVyOjphcHBlbmREcmF3R2x5cGhzSXRlbVdpdGhDYWNoZWRGb250KToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6Y2xpcFRvRHJhd2luZ0NvbW1hbmRz
KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RSZWNvcmRlci5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29y
ZGVyOjppc0VtcHR5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNv
cmRlcjo6RGVsZWdhdGU6On5EZWxlZ2F0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6UmVjb3JkZXI6OkRlbGVnYXRlOjpjYW5BcHBlbmRJdGVtT2ZUeXBlKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6RGVsZWdhdGU6
OmNhY2hlTmF0aXZlSW1hZ2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OlJlY29yZGVyOjpEZWxlZ2F0ZTo6aXNDYWNoZWRJbWFnZUJ1ZmZlciBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OkRlbGVnYXRlOjpj
YWNoZUZvbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29y
ZGVyOjpEZWxlZ2F0ZTo6cmVuZGVyaW5nTW9kZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlcGxheWVyOjphcHBseUl0ZW0pOgorCiAy
MDIxLTA1LTE4ICBDYW1lcm9uIE1jQ29ybWFjayAgPGhleWNhbUBhcHBsZS5jb20+CiAKICAgICAg
ICAgUmVjb3JkIGdyYWRpZW50IGFuZCBwYXR0ZXJuIGZpbGxlZCBjYW52YXMgdGV4dCBpbiB0aGUg
Y29ycmVjdCBjb29yZGluYXRlIHN5c3RlbS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggODE2MTViY2Y0NjQ2MTkxZjFi
MzBmNjRjN2Q3YmU2ZDFhNTUyZDE0OS4uYzUwMTZkNGMwMzM5ZDJiZTRkNjI3OWViMDE2NzVmNTU1
NzQ2ZTQxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0wNS0xOCAgU2FpZCBBYm91
LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3NdIFRoZSBj
b21wYXRpYmxlIEltYWdlQnVmZmVyIHR5cGUgc2hvdWxkIG1hdGNoIHRoZSBHcmFwaGljc0NvbnRl
eHQgdW5kZXJseWluZyBJbWFnZUJ1ZmZlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjI1OTU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpkZWNv
ZGVJdGVtKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1
ZmZlclByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyUHJveHk6OlJl
bW90ZUltYWdlQnVmZmVyUHJveHkpOgorCiAyMDIxLTA1LTE4ICBUaW0gSG9ydG9uICA8dGltb3Ro
eV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIGFsbG93c0NvbnRlbnRKYXZhU2NyaXB0IEFQ
SSBub3QgYXBwbGllZCBmcm9tIGRlZmF1bHRXZWJwYWdlUHJlZmVyZW5jZXMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
QmFzZS5jcHAKaW5kZXggNjRhODI4ZTI0Yjc3OTE5NDllNjAxMTQzNDA2MDBjYjg4OTRjMTU1ZC4u
ZDQ0ZDQzMWU3ZDY1N2I1NWE0MjQ4ZDVjZDM0MTNkNjQ0NGEyNmY2NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
QmFzZS5jcHAKQEAgLTI0ODcsMzMgKzI0ODcsMzMgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkRCYXNlOjpkcmF3VGV4dFVuY2hlY2tlZChjb25zdCBUZXh0UnVuJiB0ZXh0UnVuLCBmbG8K
ICAgICAgICAgICAgIGZvbnRQcm94eS5kcmF3QmlkaVRleHQoKmMsIHRleHRSdW4sIGxvY2F0aW9u
ICsgb2Zmc2V0LCBGb250Q2FzY2FkZTo6VXNlRmFsbGJhY2tJZkZvbnROb3RSZWFkeSk7CiAgICAg
ICAgIH0KIAotICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmMp
OworICAgICAgICBhdXRvIG1hc2tJbWFnZSA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxl
QnVmZmVyKG1hc2tSZWN0LnNpemUoKSwgKmMpOworICAgICAgICBpZiAoIW1hc2tJbWFnZSkKKyAg
ICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBhdXRvIHBhaW50TWFza0ltYWdlID0gWyZdIChH
cmFwaGljc0NvbnRleHQmIG1hc2tJbWFnZUNvbnRleHQpIHsKLSAgICAgICAgICAgIGlmIChmaWxs
KQotICAgICAgICAgICAgICAgIG1hc2tJbWFnZUNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjpi
bGFjayk7Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBtYXNrSW1hZ2VDb250
ZXh0LnNldFN0cm9rZUNvbG9yKENvbG9yOjpibGFjayk7Ci0gICAgICAgICAgICAgICAgbWFza0lt
YWdlQ29udGV4dC5zZXRTdHJva2VUaGlja25lc3MoYy0+c3Ryb2tlVGhpY2tuZXNzKCkpOwotICAg
ICAgICAgICAgfQorICAgICAgICBhdXRvJiBtYXNrSW1hZ2VDb250ZXh0ID0gbWFza0ltYWdlLT5j
b250ZXh0KCk7CisgICAgICAgIAorICAgICAgICBpZiAoZmlsbCkKKyAgICAgICAgICAgIG1hc2tJ
bWFnZUNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjpibGFjayk7CisgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgbWFza0ltYWdlQ29udGV4dC5zZXRTdHJva2VDb2xvcihDb2xvcjo6YmxhY2sp
OworICAgICAgICAgICAgbWFza0ltYWdlQ29udGV4dC5zZXRTdHJva2VUaGlja25lc3MoYy0+c3Ry
b2tlVGhpY2tuZXNzKCkpOworICAgICAgICB9CiAKLSAgICAgICAgICAgIG1hc2tJbWFnZUNvbnRl
eHQuc2V0VGV4dERyYXdpbmdNb2RlKGZpbGwgPyBUZXh0RHJhd2luZ01vZGU6OkZpbGwgOiBUZXh0
RHJhd2luZ01vZGU6OlN0cm9rZSk7CisgICAgICAgIG1hc2tJbWFnZUNvbnRleHQuc2V0VGV4dERy
YXdpbmdNb2RlKGZpbGwgPyBUZXh0RHJhd2luZ01vZGU6OkZpbGwgOiBUZXh0RHJhd2luZ01vZGU6
OlN0cm9rZSk7CiAKLSAgICAgICAgICAgIGlmICh1c2VNYXhXaWR0aCkgewotICAgICAgICAgICAg
ICAgIG1hc2tJbWFnZUNvbnRleHQudHJhbnNsYXRlKGxvY2F0aW9uIC0gbWFza1JlY3QubG9jYXRp
b24oKSk7Ci0gICAgICAgICAgICAgICAgLy8gV2UgZHJhdyB3aGVuIGZvbnRXaWR0aCBpcyAwIHNv
IGNvbXBvc2l0aW5nIG9wZXJhdGlvbnMgKGVnLCBhICJjb3B5IiBvcCkgc3RpbGwgd29yay4KLSAg
ICAgICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LnNjYWxlKEZsb2F0U2l6ZSgoZm9udFdpZHRo
ID4gMCA/ICh3aWR0aCAvIGZvbnRXaWR0aCkgOiAwKSwgMSkpOwotICAgICAgICAgICAgICAgIGZv
bnRQcm94eS5kcmF3QmlkaVRleHQobWFza0ltYWdlQ29udGV4dCwgdGV4dFJ1biwgRmxvYXRQb2lu
dCgwLCAwKSwgRm9udENhc2NhZGU6OlVzZUZhbGxiYWNrSWZGb250Tm90UmVhZHkpOwotICAgICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LnRyYW5zbGF0
ZSgtbWFza1JlY3QubG9jYXRpb24oKSk7Ci0gICAgICAgICAgICAgICAgZm9udFByb3h5LmRyYXdC
aWRpVGV4dChtYXNrSW1hZ2VDb250ZXh0LCB0ZXh0UnVuLCBsb2NhdGlvbiwgRm9udENhc2NhZGU6
OlVzZUZhbGxiYWNrSWZGb250Tm90UmVhZHkpOwotICAgICAgICAgICAgfQotICAgICAgICB9Owot
Ci0gICAgICAgIC8vIEZJWE1FOiBIYW5kbGluZyBncmFkaWVudHMgYW5kIHBhdHRlcm5zIGJ5IHBh
aW50aW5nIHRoZSB0ZXh0IGludG8gYSBtYXNrIGlzIHByb2JhYmx5IHRoZSB3cm9uZyB0aGluZyB0
byBkbyBpbiB0aGUgcHJlc2VuY2Ugb2YgY29sb3IgZ2x5cGhzLgotICAgICAgICBpZiAoYy0+Y2xp
cFRvRHJhd2luZ0NvbW1hbmRzKG1hc2tSZWN0LCBjb2xvclNwYWNlKCksIFdURk1vdmUocGFpbnRN
YXNrSW1hZ2UpKSA9PSBHcmFwaGljc0NvbnRleHQ6OkNsaXBUb0RyYXdpbmdDb21tYW5kc1Jlc3Vs
dDo6RmFpbGVkVG9DcmVhdGVJbWFnZUJ1ZmZlcikKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgaWYgKHVzZU1heFdpZHRoKSB7CisgICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LnRyYW5z
bGF0ZShsb2NhdGlvbiAtIG1hc2tSZWN0LmxvY2F0aW9uKCkpOworICAgICAgICAgICAgLy8gV2Ug
ZHJhdyB3aGVuIGZvbnRXaWR0aCBpcyAwIHNvIGNvbXBvc2l0aW5nIG9wZXJhdGlvbnMgKGVnLCBh
ICJjb3B5IiBvcCkgc3RpbGwgd29yay4KKyAgICAgICAgICAgIG1hc2tJbWFnZUNvbnRleHQuc2Nh
bGUoRmxvYXRTaXplKChmb250V2lkdGggPiAwID8gKHdpZHRoIC8gZm9udFdpZHRoKSA6IDApLCAx
KSk7CisgICAgICAgICAgICBmb250UHJveHkuZHJhd0JpZGlUZXh0KG1hc2tJbWFnZUNvbnRleHQs
IHRleHRSdW4sIEZsb2F0UG9pbnQoMCwgMCksIEZvbnRDYXNjYWRlOjpVc2VGYWxsYmFja0lmRm9u
dE5vdFJlYWR5KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1hc2tJbWFnZUNvbnRl
eHQudHJhbnNsYXRlKC1tYXNrUmVjdC5sb2NhdGlvbigpKTsKKyAgICAgICAgICAgIGZvbnRQcm94
eS5kcmF3QmlkaVRleHQobWFza0ltYWdlQ29udGV4dCwgdGV4dFJ1biwgbG9jYXRpb24sIEZvbnRD
YXNjYWRlOjpVc2VGYWxsYmFja0lmRm9udE5vdFJlYWR5KTsKKyAgICAgICAgfQogCisgICAgICAg
IEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqYyk7CisgICAgICAgIGMtPmNs
aXBUb0ltYWdlQnVmZmVyKCptYXNrSW1hZ2UsIG1hc2tSZWN0KTsKICAgICAgICAgZHJhd1N0eWxl
LmFwcGx5RmlsbENvbG9yKCpjKTsKICAgICAgICAgYy0+ZmlsbFJlY3QobWFza1JlY3QpOwogICAg
ICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0LmNwcAppbmRleCA4OTRiNWNjZTQyMTFkYjFkZmUyZDQ2Y2FmMGY2NWM0
NDIxYTUxYTRkLi5iMWJmZjQ0NDNlNGE1Y2Q3Nzk1Yjc3ZGIwNGZlMjIyYWY5Mzg1OGUzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dC5jcHAKQEAgLTM5MCw2ICszOTAsMTEgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQ6Omhhc1BsYXRm
b3JtQ29udGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuICEhbV9kYXRhOwogfQogCitJbWFnZUJ1ZmZl
ciogR3JhcGhpY3NDb250ZXh0Ojpvd25lckltYWdlQnVmZmVyKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gaW1wbCgpID8gaW1wbCgpLT5vd25lckltYWdlQnVmZmVyKCkgOiBudWxscHRyOworfQorCiB2
b2lkIEdyYXBoaWNzQ29udGV4dDo6c2F2ZSgpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQo
KSkKQEAgLTg4MywyNSArODg4LDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBPdXRSb3Vu
ZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByZWN0KQogICAgIGNsaXBPdXQocGF0aCk7
CiB9CiAKLUdyYXBoaWNzQ29udGV4dDo6Q2xpcFRvRHJhd2luZ0NvbW1hbmRzUmVzdWx0IEdyYXBo
aWNzQ29udGV4dDo6Y2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGlu
YXRpb24sIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBGdW5jdGlvbjx2b2lkKEdy
YXBoaWNzQ29udGV4dCYpPiYmIGRyYXdpbmdGdW5jdGlvbikKLXsKLSAgICBpZiAocGFpbnRpbmdE
aXNhYmxlZCgpKQotICAgICAgICByZXR1cm4gQ2xpcFRvRHJhd2luZ0NvbW1hbmRzUmVzdWx0OjpT
dWNjZXNzOwotCi0gICAgaWYgKG1faW1wbCkgewotICAgICAgICBtX2ltcGwtPmNsaXBUb0RyYXdp
bmdDb21tYW5kcyhkZXN0aW5hdGlvbiwgY29sb3JTcGFjZSwgV1RGTW92ZShkcmF3aW5nRnVuY3Rp
b24pKTsKLSAgICAgICAgcmV0dXJuIENsaXBUb0RyYXdpbmdDb21tYW5kc1Jlc3VsdDo6U3VjY2Vz
czsKLSAgICB9Ci0KLSAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNv
bXBhdGlibGVCdWZmZXIoZGVzdGluYXRpb24uc2l6ZSgpLCBjb2xvclNwYWNlLCAqdGhpcyk7Ci0g
ICAgaWYgKCFpbWFnZUJ1ZmZlcikKLSAgICAgICAgcmV0dXJuIENsaXBUb0RyYXdpbmdDb21tYW5k
c1Jlc3VsdDo6RmFpbGVkVG9DcmVhdGVJbWFnZUJ1ZmZlcjsKLQotICAgIGRyYXdpbmdGdW5jdGlv
bihpbWFnZUJ1ZmZlci0+Y29udGV4dCgpKTsKLSAgICBjbGlwVG9JbWFnZUJ1ZmZlcigqaW1hZ2VC
dWZmZXIsIGRlc3RpbmF0aW9uKTsKLSAgICByZXR1cm4gQ2xpcFRvRHJhd2luZ0NvbW1hbmRzUmVz
dWx0OjpTdWNjZXNzOwotfQotCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcFRvSW1hZ2VCdWZm
ZXIoSW1hZ2VCdWZmZXImIGltYWdlQnVmZmVyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9u
UmVjdCkKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCBjNzhhZjdlMjVk
ZGI1NDE0M2NlYjU5YTExZmZmYzIzYWFhMzQ3MTY3Li5jNWU2MTM2MmUwMDI4ZjE5NjMwZjYyYzRm
YmNiMjc0ODdjZDAwMmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQuaApAQCAtMjg0LDYgKzI4NCw4IEBAIHB1YmxpYzoKIAogICAg
IFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFzUGxhdGZvcm1Db250ZXh0KCkgY29uc3Q7CiAgICAgV0VC
Q09SRV9FWFBPUlQgUGxhdGZvcm1HcmFwaGljc0NvbnRleHQqIHBsYXRmb3JtQ29udGV4dCgpIGNv
bnN0OworICAgIEdyYXBoaWNzQ29udGV4dEltcGwqIGltcGwoKSBjb25zdCB7IHJldHVybiBtX2lt
cGwuZ2V0KCk7IH0KKyAgICBJbWFnZUJ1ZmZlciogb3duZXJJbWFnZUJ1ZmZlcigpIGNvbnN0Owog
CiAgICAgYm9vbCBwYWludGluZ0Rpc2FibGVkKCkgY29uc3QgeyByZXR1cm4gIW1fZGF0YSAmJiAh
bV9pbXBsOyB9CiAgICAgYm9vbCBwZXJmb3JtaW5nUGFpbnRJbnZhbGlkYXRpb24oKSBjb25zdCB7
IHJldHVybiBtX3BhaW50SW52YWxpZGF0aW9uUmVhc29ucyAhPSBQYWludEludmFsaWRhdGlvblJl
YXNvbnM6Ok5vbmU7IH0KQEAgLTQwOSw5ICs0MTEsNiBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBjbGlwUGF0aChjb25zdCBQYXRoJiwgV2luZFJ1bGUgPSBXaW5kUnVsZTo6RXZl
bk9kZCk7CiAgICAgdm9pZCBjbGlwVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZs
b2F0UmVjdCYpOwogCi0gICAgZW51bSBjbGFzcyBDbGlwVG9EcmF3aW5nQ29tbWFuZHNSZXN1bHQg
OiBib29sIHsgU3VjY2VzcywgRmFpbGVkVG9DcmVhdGVJbWFnZUJ1ZmZlciB9OwotICAgIENsaXBU
b0RyYXdpbmdDb21tYW5kc1Jlc3VsdCBjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRS
ZWN0JiBkZXN0aW5hdGlvbiwgRGVzdGluYXRpb25Db2xvclNwYWNlLCBGdW5jdGlvbjx2b2lkKEdy
YXBoaWNzQ29udGV4dCYpPiYmKTsKLSAgICAKICAgICBJbnRSZWN0IGNsaXBCb3VuZHMoKSBjb25z
dDsKIAogICAgIHZvaWQgc2V0VGV4dERyYXdpbmdNb2RlKFRleHREcmF3aW5nTW9kZUZsYWdzKTsK
QEAgLTU4OSw4ICs1ODgsNiBAQCBwdWJsaWM6CiAKICAgICBib29sIHN1cHBvcnRzSW50ZXJuYWxM
aW5rcygpIGNvbnN0OwogCi0gICAgR3JhcGhpY3NDb250ZXh0SW1wbCogaW1wbCgpIHsgcmV0dXJu
IG1faW1wbC5nZXQoKTsgfQotCiBwcml2YXRlOgogICAgIHZvaWQgcGxhdGZvcm1Jbml0KFBsYXRm
b3JtR3JhcGhpY3NDb250ZXh0Kik7CiAgICAgdm9pZCBwbGF0Zm9ybURlc3Ryb3koKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dElt
cGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
SW1wbC5jcHAKaW5kZXggMTE2ZWNiZTQ4N2YxMjczMGM5MzMyZmExMTA3NmMyNjc5MTc3ZmU2Yi4u
ZjQ0OTE4NzdhZjg1YjcxNTRhNjc0NmExNzI1YjAyOWYzZGRjMzk5MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5j
cHAKQEAgLTI4LDggKzI4LDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1HcmFwaGljc0Nv
bnRleHRJbXBsOjpHcmFwaGljc0NvbnRleHRJbXBsKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJikKK0dyYXBoaWNzQ29udGV4
dEltcGw6OkdyYXBoaWNzQ29udGV4dEltcGwoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBJbWFn
ZUJ1ZmZlciogb3duZXJJbWFnZUJ1ZmZlcikKICAgICA6IG1fZ3JhcGhpY3NDb250ZXh0KGNvbnRl
eHQpCisgICAgLCBtX293bmVySW1hZ2VCdWZmZXIob3duZXJJbWFnZUJ1ZmZlcikKIHsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0SW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0SW1wbC5oCmluZGV4IGViNDc5NmFhMTQ3NmVhZTM5NzYyNGFkZDQ4OGZjYmMxOTY1MTUwNDQu
LjAyZDU4Mjg4NjJkNzVjOTU5NjI5Y2UzZTRhZTdhM2IzNjg2NTYzNDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmgK
QEAgLTMzLDEwICszMywxMSBAQCBjbGFzcyBHcmFwaGljc0NvbnRleHRJbXBsIHsKICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShHcmFwaGljc0Nv
bnRleHRJbXBsKTsKIHB1YmxpYzoKLSAgICBHcmFwaGljc0NvbnRleHRJbXBsKEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYpOworICAgIEdyYXBoaWNzQ29udGV4dEltcGwoR3JhcGhpY3NDb250ZXh0JiwgSW1hZ2VCdWZm
ZXIqID0gbnVsbHB0cik7CiAgICAgdmlydHVhbCB+R3JhcGhpY3NDb250ZXh0SW1wbCgpOwogCiAg
ICAgR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2dy
YXBoaWNzQ29udGV4dDsgfQorICAgIEltYWdlQnVmZmVyKiBvd25lckltYWdlQnVmZmVyKCkgY29u
c3QgeyByZXR1cm4gbV9vd25lckltYWdlQnVmZmVyOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgaGFz
UGxhdGZvcm1Db250ZXh0KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBjYW5EcmF3SW1h
Z2VCdWZmZXIoY29uc3QgSW1hZ2VCdWZmZXImKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CkBAIC0x
MDQsNyArMTA1LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjbGlwUGF0aChjb25zdCBQ
YXRoJiwgV2luZFJ1bGUpID0gMDsKICAgICB2aXJ0dWFsIEludFJlY3QgY2xpcEJvdW5kcygpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgY2xpcFRvSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25z
dCBGbG9hdFJlY3QmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGNsaXBUb0RyYXdpbmdDb21tYW5k
cyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIEZ1
bmN0aW9uPHZvaWQoR3JhcGhpY3NDb250ZXh0Jik+JiYgZHJhd2luZ0Z1bmN0aW9uKSA9IDA7CiAj
aWYgRU5BQkxFKFZJREVPKQogICAgIHZpcnR1YWwgdm9pZCBwYWludEZyYW1lRm9yTWVkaWEoTWVk
aWFQbGF5ZXImLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uKSA9IDA7CiAgICAgdmlydHVh
bCBib29sIGNhblBhaW50RnJhbWVGb3JNZWRpYShjb25zdCBNZWRpYVBsYXllciYpIGNvbnN0ID0g
MDsKQEAgLTExNyw2ICsxMTcsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFz
cyBHcmFwaGljc0NvbnRleHQ7CiAgICAgR3JhcGhpY3NDb250ZXh0JiBtX2dyYXBoaWNzQ29udGV4
dDsKKyAgICBJbWFnZUJ1ZmZlciogbV9vd25lckltYWdlQnVmZmVyIHsgbnVsbHB0ciB9OwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwCmluZGV4IDcwZDUzYzNkMGJhZDBhZGQ5YWJhOGYxMTc1
MjI2ZTUxMTcxMWQ0MGYuLjdhMzFhYjZkODRiOWYxMjQ0MDUzY2EzYmUyN2EwMGM0ZWY5Y2Y5NTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5j
cHAKQEAgLTgxLDcgKzgxLDEwIEBAIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6OmNy
ZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBjCiAKICAgICBSZWZQ
dHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyOwogCi0gICAgaWYgKGNvbnRleHQucmVuZGVyaW5n
TW9kZSgpID09IFJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkKQorICAgIGlmIChhdXRvKiBvd25l
ckltYWdlQnVmZmVyID0gY29udGV4dC5vd25lckltYWdlQnVmZmVyKCkpCisgICAgICAgIGltYWdl
QnVmZmVyID0gb3duZXJJbWFnZUJ1ZmZlci0+Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihzaXplKTsK
KworICAgIGlmICghaW1hZ2VCdWZmZXIgJiYgY29udGV4dC5yZW5kZXJpbmdNb2RlKCkgPT0gUmVu
ZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQpCiAgICAgICAgIGltYWdlQnVmZmVyID0gQWNjZWxlcmF0
ZWRJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNjYWxlZFNpemUsIGNvbnRleHQpOwogICAgIAogICAgIGlm
ICghaW1hZ2VCdWZmZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VCdWZmZXIuaAppbmRleCAwYjZlMDJhMDBhZGVjYWFjYmQ5NDVjMTAzNTUyNjI2ZDQ3NzA1ZTg0
Li5kOGUzNTU4ODA5ZTNhMjcyNzBhNDU4NjFkNmFlOWJhODY3ZTI1MGIyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKQEAgLTEsNiArMSw2IEBA
CiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFu
bkBrZGUub3JnPgotICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEwIFRvcmNoIE1vYmlsZSAoQmVp
amluZykgQ28uIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAg
LTM5LDkgKzM5LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBEaXNwbGF5TGlz
dCB7CiBjbGFzcyBEaXNwbGF5TGlzdDsKIGNsYXNzIERyYXdpbmdDb250ZXh0OworZW51bSBjbGFz
cyBJdGVtVHlwZSA6IHVpbnQ4X3Q7CiBzdHJ1Y3QgSXRlbUJ1ZmZlckhhbmRsZTsKIH0KIAorY2xh
c3MgRm9udDsKKwogY2xhc3MgSW1hZ2VCdWZmZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50
ZWQ8SW1hZ2VCdWZmZXI+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8SW1hZ2VCdWZmZXI+IHsKIHB1
YmxpYzoKICAgICAvLyBXaWxsIHJldHVybiBhIG51bGwgcG9pbnRlciBvbiBhbGxvY2F0aW9uIGZh
aWx1cmUuCkBAIC02NCw2ICs2Nyw4IEBAIHB1YmxpYzoKICAgICAKICAgICBXRUJDT1JFX0VYUE9S
VCB2aXJ0dWFsIH5JbWFnZUJ1ZmZlcigpID0gZGVmYXVsdDsKIAorICAgIHZpcnR1YWwgUmVmUHRy
PEltYWdlQnVmZmVyPiBjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYpIHsg
cmV0dXJuIG51bGxwdHI7IH0KKwogICAgIHZpcnR1YWwgdm9pZCBzZXRCYWNrZW5kKHN0ZDo6dW5p
cXVlX3B0cjxJbWFnZUJ1ZmZlckJhY2tlbmQ+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2xl
YXJCYWNrZW5kKCkgPSAwOwogICAgIHZpcnR1YWwgSW1hZ2VCdWZmZXJCYWNrZW5kKiBlbnN1cmVC
YWNrZW5kQ3JlYXRlZCgpIGNvbnN0ID0gMDsKQEAgLTc3LDYgKzgyLDEwIEBAIHB1YmxpYzoKIAog
ICAgIHZpcnR1YWwgRGlzcGxheUxpc3Q6OkRyYXdpbmdDb250ZXh0KiBkcmF3aW5nQ29udGV4dCgp
IHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICB2aXJ0dWFsIGJvb2wgcHJlZmVyc1ByZXBhcmF0aW9u
Rm9yRGlzcGxheSgpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGNhbkFwcGVu
ZEl0ZW1PZlR5cGUoRGlzcGxheUxpc3Q6Okl0ZW1UeXBlKSB7IHJldHVybiB0cnVlOyB9CisgICAg
dmlydHVhbCBib29sIGNhbkRyYXdJbWFnZUJ1ZmZlcihjb25zdCBJbWFnZUJ1ZmZlciYpIGNvbnN0
IHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIHZvaWQgY2FjaGVOYXRpdmVJbWFnZShOYXRp
dmVJbWFnZSYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBjYWNoZUZvbnQoRm9udCYpIHsgfQogICAg
IHZpcnR1YWwgdm9pZCBmbHVzaERyYXdpbmdDb250ZXh0KCkgeyB9CiAgICAgdmlydHVhbCB2b2lk
IGZsdXNoRHJhd2luZ0NvbnRleHRBc3luYygpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRGbHVz
aChEaXNwbGF5TGlzdDo6Rmx1c2hJZGVudGlmaWVyKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmNw
cAppbmRleCA1MTQ1MDJlNjk1YmY2MDU4YjEzOTlhMmEzOGM1ZmZhZjUwNmZkMDE2Li5mZmU2ZWNh
ZGQyZTY2NDU5OTUxNGNkOWMyOTc0NjdmZmRmOWEwZmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQu
Y3BwCkBAIC04MSw3ICs4MSw2IEBAIFJldGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+IEltYWdlQnVm
ZmVyQ0dCYWNrZW5kOjpjb250ZXh0Q29sb3JTcGFjZShjb25zdCBHcmFwaGljCiAKIHZvaWQgSW1h
Z2VCdWZmZXJDR0JhY2tlbmQ6OnNldHVwQ29udGV4dCgpIGNvbnN0CiB7Ci0gICAgLy8gVGhlIGlu
aXRpYWwgQ1RNIG1hdGNoZXMgRGlzcGxheUxpc3Q6OlJlY29yZGVyOjpjbGlwVG9EcmF3aW5nQ29t
bWFuZHMoKSdzIGluaXRpYWwgQ1RNLgogICAgIGNvbnRleHQoKS5zY2FsZShGbG9hdFNpemUoMSwg
LTEpKTsKICAgICBjb250ZXh0KCkudHJhbnNsYXRlKDAsIC1iYWNrZW5kU2l6ZSgpLmhlaWdodCgp
KTsKICAgICBjb250ZXh0KCkuYXBwbHlEZXZpY2VTY2FsZUZhY3RvcihyZXNvbHV0aW9uU2NhbGUo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcAppbmRleCBhNmZiNjhmODk3MDc5ZjIyYjJlNjg2
NzMxZGZmZjA4NDAzNmIyN2Y2Li5jZTc2NGMxYmJmYTM2OTg1ZDcyN2QzZTU1ZmY0NTZjMDFjOGNj
ZmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAKQEAgLTI0NCwxMCArMjQ0LDYgQEAgdm9p
ZCBEaXNwbGF5TGlzdDo6YXBwZW5kKEl0ZW1IYW5kbGUgaXRlbSkKICAgICAgICAgcmV0dXJuIGFw
cGVuZDxDbGlwT3V0VG9QYXRoPihpdGVtLmdldDxDbGlwT3V0VG9QYXRoPigpKTsKICAgICBjYXNl
IEl0ZW1UeXBlOjpDbGlwUGF0aDoKICAgICAgICAgcmV0dXJuIGFwcGVuZDxDbGlwUGF0aD4oaXRl
bS5nZXQ8Q2xpcFBhdGg+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2luQ2xpcFRvRHJhd2lu
Z0NvbW1hbmRzOgotICAgICAgICByZXR1cm4gYXBwZW5kPEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1h
bmRzPihpdGVtLmdldDxCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcz4oKSk7Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOgotICAgICAgICByZXR1cm4gYXBwZW5k
PEVuZENsaXBUb0RyYXdpbmdDb21tYW5kcz4oaXRlbS5nZXQ8RW5kQ2xpcFRvRHJhd2luZ0NvbW1h
bmRzPigpKTsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3R2x5cGhzOgogICAgICAgICByZXR1cm4g
YXBwZW5kPERyYXdHbHlwaHM+KGl0ZW0uZ2V0PERyYXdHbHlwaHM+KCkpOwogICAgIGNhc2UgSXRl
bVR5cGU6OkRyYXdJbWFnZUJ1ZmZlcjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dERyYXdpbmdDb250ZXh0LmNwcAppbmRleCA1NGQ4NTQ3MTIzZjg5NDdkNmYyZmFjZDdmY2E2Zjk5
NTE4MWEyNjcxLi4wNTYzMjM3OWRmYmVkMTQ2NTdiYzg1ZmVkNTExNWVmODA0MzdmM2YyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3REcmF3aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuY3BwCkBAIC0z
Myw5ICszMyw5IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgRGlzcGxheUxpc3Qg
ewogCi1EcmF3aW5nQ29udGV4dDo6RHJhd2luZ0NvbnRleHQoY29uc3QgRmxvYXRTaXplJiBsb2dp
Y2FsU2l6ZSwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBpbml0aWFsQ1RNLCBSZWNvcmRlcjo6RGVs
ZWdhdGUqIGRlbGVnYXRlKQorRHJhd2luZ0NvbnRleHQ6OkRyYXdpbmdDb250ZXh0KGNvbnN0IEZs
b2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgaW5pdGlhbENUTSwg
SW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVyKQogICAgIDogbV9jb250ZXh0KFsmXShHcmFwaGljc0Nv
bnRleHQmIGRpc3BsYXlMaXN0Q29udGV4dCkgewotICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxS
ZWNvcmRlcj4oZGlzcGxheUxpc3RDb250ZXh0LCBtX2Rpc3BsYXlMaXN0LCBHcmFwaGljc0NvbnRl
eHRTdGF0ZSgpLCBGbG9hdFJlY3QoeyB9LCBsb2dpY2FsU2l6ZSksIGluaXRpYWxDVE0sIGRlbGVn
YXRlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVjb3JkZXI+KGRpc3BsYXlMaXN0Q29u
dGV4dCwgbV9kaXNwbGF5TGlzdCwgR3JhcGhpY3NDb250ZXh0U3RhdGUoKSwgRmxvYXRSZWN0KHsg
fSwgbG9naWNhbFNpemUpLCBpbml0aWFsQ1RNLCBpbWFnZUJ1ZmZlcik7CiAgICAgfSkKIHsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5oCmluZGV4IGQz
N2MwNzM1YmViNTU0OTJkOTBmZjllY2U0Y2E0ZGI3OTk1ZDVmNTguLjk2YjE3MTE3ZjA3YzY4YmNh
MDM4NzczYTM1NjlmNTQyYjllM2FiMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0RHJhd2luZ0NvbnRleHQuaApAQCAtMzcsNyArMzcsNyBAQCBjbGFzcyBJbk1lbW9yeURpc3Bs
YXlMaXN0OwogY2xhc3MgRHJhd2luZ0NvbnRleHQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIERyYXdpbmdDb250ZXh0KGNvbnN0IEZs
b2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgaW5pdGlhbENUTSA9
IHsgfSwgUmVjb3JkZXI6OkRlbGVnYXRlKiA9IG51bGxwdHIpOworICAgIFdFQkNPUkVfRVhQT1JU
IERyYXdpbmdDb250ZXh0KGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYgaW5pdGlhbENUTSA9IHsgfSwgSW1hZ2VCdWZmZXIqID0gbnVsbHB0cik7CiAK
ICAgICBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQoKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0
PERyYXdpbmdDb250ZXh0Jj4oKnRoaXMpLm1fY29udGV4dDsgfQogICAgIFdFQkNPUkVfRVhQT1JU
IFJlY29yZGVyJiByZWNvcmRlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEltYWdl
QnVmZmVyLmgKaW5kZXggZDdjYmEyMDdlYmM1NWJhNzNiOGZmMDRiMzhiNDFjNzVkNWU3MDlmYS4u
YWVkZDdlYjllMzcyM2M0OWM3MTU1ZmEzZTRjOGIyNzQ0ZjAzMTk2MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SW1h
Z2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oCkBAIC01OSw5ICs1OSw5IEBAIHB1YmxpYzoK
ICAgICAgICAgbV9kcmF3aW5nQ29udGV4dC5kaXNwbGF5TGlzdCgpLnNldEl0ZW1CdWZmZXJSZWFk
aW5nQ2xpZW50KG1fcmVhZGluZ0NsaWVudC5nZXQoKSk7CiAgICAgfQogCi0gICAgSW1hZ2VCdWZm
ZXIoY29uc3QgSW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBSZWNv
cmRlcjo6RGVsZWdhdGUqIGRlbGVnYXRlID0gbnVsbHB0cikKKyAgICBJbWFnZUJ1ZmZlcihjb25z
dCBJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiAgICAgICAgIDog
QmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXIocGFyYW1ldGVycykKLSAgICAgICAgLCBtX2RyYXdpbmdD
b250ZXh0KGxvZ2ljYWxTaXplKCksIGJhc2VUcmFuc2Zvcm0oKSwgZGVsZWdhdGUpCisgICAgICAg
ICwgbV9kcmF3aW5nQ29udGV4dChsb2dpY2FsU2l6ZSgpLCBiYXNlVHJhbnNmb3JtKCksIHRoaXMp
CiAgICAgICAgICwgbV93cml0aW5nQ2xpZW50KFdURjo6bWFrZVVuaXF1ZTxJbk1lbW9yeURpc3Bs
YXlMaXN0OjpXcml0aW5nQ2xpZW50PigpKQogICAgICAgICAsIG1fcmVhZGluZ0NsaWVudChXVEY6
Om1ha2VVbmlxdWU8SW5NZW1vcnlEaXNwbGF5TGlzdDo6UmVhZGluZ0NsaWVudD4oKSkKICAgICB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwCmluZGV4IDdhNmJi
YzU2NDhjMTVhOTIwZDkwZWYzMDE2NDkzNThjZmNhY2I2MjkuLjA1M2RiYzhkYzA5NzNhM2U2Yjhk
MmQyNDUyM2EyMTA3MTkwM2U3ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1CdWZmZXIuY3BwCkBAIC0xMTEsMTIgKzExMSw2IEBAIHZvaWQgSXRlbUhhbmRsZTo6YXBwbHko
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBQYXRoOgog
ICAgICAgICBnZXQ8Q2xpcFBhdGg+KCkuYXBwbHkoY29udGV4dCk7CiAgICAgICAgIHJldHVybjsK
LSAgICBjYXNlIEl0ZW1UeXBlOjpCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kczoKLSAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBl
OjpFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM6Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotICAgICAgICByZXR1cm47CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0dseXBoczoKICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybjsKQEAgLTMwNiw5ICszMDAs
NiBAQCB2b2lkIEl0ZW1IYW5kbGU6OmRlc3Ryb3koKQogICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0
ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxBcHBseVN0cm9rZVBhdHRlcm4+Ojp2YWx1ZSk7
CiAgICAgICAgIHJldHVybjsKICNlbmRpZgotICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2luQ2xpcFRv
RHJhd2luZ0NvbW1hbmRzOgotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5
X2Rlc3RydWN0aWJsZTxCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcz46OnZhbHVlKTsKLSAgICAg
ICAgcmV0dXJuOwogICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2luVHJhbnNwYXJlbmN5TGF5ZXI6CiAg
ICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPEJlZ2lu
VHJhbnNwYXJlbmN5TGF5ZXI+Ojp2YWx1ZSk7CiAgICAgICAgIHJldHVybjsKQEAgLTM1MSw5ICsz
NDIsNiBAQCB2b2lkIEl0ZW1IYW5kbGU6OmRlc3Ryb3koKQogICAgIGNhc2UgSXRlbVR5cGU6OkRy
YXdSZWN0OgogICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0
aWJsZTxEcmF3UmVjdD46OnZhbHVlKTsKICAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5
cGU6OkVuZENsaXBUb0RyYXdpbmdDb21tYW5kczoKLSAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6
OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPjo6dmFs
dWUpOwotICAgICAgICByZXR1cm47CiAgICAgY2FzZSBJdGVtVHlwZTo6RW5kVHJhbnNwYXJlbmN5
TGF5ZXI6CiAgICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3Rp
YmxlPEVuZFRyYW5zcGFyZW5jeUxheWVyPjo6dmFsdWUpOwogICAgICAgICByZXR1cm47CkBAIC01
MjIsOCArNTEwLDYgQEAgYm9vbCBJdGVtSGFuZGxlOjpzYWZlQ29weShJdGVtSGFuZGxlIGRlc3Rp
bmF0aW9uKSBjb25zdAogICAgIGNhc2UgSXRlbVR5cGU6OkFwcGx5U3Ryb2tlUGF0dGVybjoKICAg
ICAgICAgcmV0dXJuIGNvcHlJbnRvPEFwcGx5U3Ryb2tlUGF0dGVybj4oaXRlbU9mZnNldCwgKnRo
aXMpOwogI2VuZGlmCi0gICAgY2FzZSBJdGVtVHlwZTo6QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFu
ZHM6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcz4o
aXRlbU9mZnNldCwgKnRoaXMpOwogICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2luVHJhbnNwYXJlbmN5
TGF5ZXI6CiAgICAgICAgIHJldHVybiBjb3B5SW50bzxCZWdpblRyYW5zcGFyZW5jeUxheWVyPihp
dGVtT2Zmc2V0LCAqdGhpcyk7CiAgICAgY2FzZSBJdGVtVHlwZTo6Q2xlYXJSZWN0OgpAQCAtNTQ2
LDggKzUzMiw2IEBAIGJvb2wgSXRlbUhhbmRsZTo6c2FmZUNvcHkoSXRlbUhhbmRsZSBkZXN0aW5h
dGlvbikgY29uc3QKICAgICAgICAgcmV0dXJuIGNvcHlJbnRvPERyYXdMaW5lPihpdGVtT2Zmc2V0
LCAqdGhpcyk7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1JlY3Q6CiAgICAgICAgIHJldHVybiBj
b3B5SW50bzxEcmF3UmVjdD4oaXRlbU9mZnNldCwgKnRoaXMpOwotICAgIGNhc2UgSXRlbVR5cGU6
OkVuZENsaXBUb0RyYXdpbmdDb21tYW5kczoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPEVuZENs
aXBUb0RyYXdpbmdDb21tYW5kcz4oaXRlbU9mZnNldCwgKnRoaXMpOwogICAgIGNhc2UgSXRlbVR5
cGU6OkVuZFRyYW5zcGFyZW5jeUxheWVyOgogICAgICAgICByZXR1cm4gY29weUludG88RW5kVHJh
bnNwYXJlbmN5TGF5ZXI+KGl0ZW1PZmZzZXQsICp0aGlzKTsKICAgICBjYXNlIEl0ZW1UeXBlOjpG
aWxsRWxsaXBzZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmNwcAppbmRl
eCAxYTYwZWZmNjQ5NzliZmIwZWI4OGNlZjlhMDNiNzVmNDUxZDA2ZmU0Li4wNGExY2VkMjcxZDk4
Mjg4YmZmYjM0ODZjNTA4MTcyMjM1YjY3ZWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0SXRlbVR5cGUuY3BwCkBAIC03OCwxMCArNzgsNiBAQCBzdGF0aWMgc2l6ZV90IHNpemVPZkl0
ZW1JbkJ5dGVzKEl0ZW1UeXBlIHR5cGUpCiAgICAgICAgIHJldHVybiBzaXplb2YoQ2xpcE91dFRv
UGF0aCk7CiAgICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFBhdGg6CiAgICAgICAgIHJldHVybiBzaXpl
b2YoQ2xpcFBhdGgpOwotICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1h
bmRzOgotICAgICAgICByZXR1cm4gc2l6ZW9mKEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKTsK
LSAgICBjYXNlIEl0ZW1UeXBlOjpFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM6Ci0gICAgICAgIHJl
dHVybiBzaXplb2YoRW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKTsKICAgICBjYXNlIEl0ZW1UeXBl
OjpEcmF3R2x5cGhzOgogICAgICAgICByZXR1cm4gc2l6ZW9mKERyYXdHbHlwaHMpOwogICAgIGNh
c2UgSXRlbVR5cGU6OkRyYXdJbWFnZUJ1ZmZlcjoKQEAgLTE4OCw4ICsxODQsNiBAQCBib29sIGlz
RHJhd2luZ0l0ZW0oSXRlbVR5cGUgdHlwZSkKICAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwVG9JbWFn
ZUJ1ZmZlcjoKICAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwT3V0VG9QYXRoOgogICAgIGNhc2UgSXRl
bVR5cGU6OkNsaXBQYXRoOgotICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2luQ2xpcFRvRHJhd2luZ0Nv
bW1hbmRzOgotICAgIGNhc2UgSXRlbVR5cGU6OkVuZENsaXBUb0RyYXdpbmdDb21tYW5kczoKICAg
ICBjYXNlIEl0ZW1UeXBlOjpDb25jYXRlbmF0ZUNUTToKICAgICBjYXNlIEl0ZW1UeXBlOjpGbHVz
aENvbnRleHQ6CiAgICAgY2FzZSBJdGVtVHlwZTo6TWV0YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlv
bkltYWdlQnVmZmVyOgpAQCAtMzEwLDggKzMwNCw2IEBAIGJvb2wgaXNJbmxpbmVJdGVtKEl0ZW1U
eXBlIHR5cGUpCiAgICAgY2FzZSBJdGVtVHlwZTo6Q2xpcDoKICAgICBjYXNlIEl0ZW1UeXBlOjpD
bGlwT3V0OgogICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBUb0ltYWdlQnVmZmVyOgotICAgIGNhc2Ug
SXRlbVR5cGU6OkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOgotICAgIGNhc2UgSXRlbVR5cGU6
OkVuZENsaXBUb0RyYXdpbmdDb21tYW5kczoKICAgICBjYXNlIEl0ZW1UeXBlOjpDb25jYXRlbmF0
ZUNUTToKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3RG90c0ZvckRvY3VtZW50TWFya2VyOgogICAg
IGNhc2UgSXRlbVR5cGU6OkRyYXdFbGxpcHNlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1UeXBlLmgKaW5kZXggYzNlMWNlY2YwZWM0YmRkNTU1OTE2NzdhYTQwYWFlZGQ2MjcwMjI5Yi4u
ZDVjMWIzZDE3YWQwMjRiZDFkYzM4MWZjNTUzNDAxZDVmNzhhNjdlMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRl
bVR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJdGVtVHlwZS5oCkBAIC01MSw4ICs1MSw2IEBAIGVudW0gY2xhc3MgSXRl
bVR5cGUgOiB1aW50OF90IHsKICAgICBDbGlwVG9JbWFnZUJ1ZmZlciwKICAgICBDbGlwT3V0VG9Q
YXRoLAogICAgIENsaXBQYXRoLAotICAgIEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzLAotICAg
IEVuZENsaXBUb0RyYXdpbmdDb21tYW5kcywKICAgICBEcmF3R2x5cGhzLAogICAgIERyYXdJbWFn
ZUJ1ZmZlciwKICAgICBEcmF3TmF0aXZlSW1hZ2UsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVtcy5jcHAKaW5kZXggMWE0ZWE2ZGUzYjVhOGNlMzVkOGU3NzlmY2VjZWZiNDZiMTgyYzBhMy4u
MWI0YzRhYTZlODI1NjNhMmZlOGI3NWQ0N2JmM2NjNjJkYzBmOTU0MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRl
bXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcApAQCAtMzYzLDE5ICszNjMsNiBAQCBzdGF0aWMgVGV4dFN0
cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgQ2xpcFBhdGgmIGl0ZW0pCiAg
ICAgcmV0dXJuIHRzOwogfQogCi1zdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3Ry
ZWFtJiB0cywgY29uc3QgQmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHMmIGl0ZW0pCi17Ci0gICAg
dHMuZHVtcFByb3BlcnR5KCJkZXN0aW5hdGlvbiIsIGl0ZW0uZGVzdGluYXRpb24oKSk7Ci0gICAg
dHMuZHVtcFByb3BlcnR5KCJjb2xvci1zcGFjZSIsIGl0ZW0uY29sb3JTcGFjZSgpKTsKLSAgICBy
ZXR1cm4gdHM7Ci19Ci0KLXN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0m
IHRzLCBjb25zdCBFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHMmIGl0ZW0pCi17Ci0gICAgdHMuZHVt
cFByb3BlcnR5KCJkZXN0aW5hdGlvbiIsIGl0ZW0uZGVzdGluYXRpb24oKSk7Ci0gICAgcmV0dXJu
IHRzOwotfQotCiBEcmF3R2x5cGhzOjpEcmF3R2x5cGhzKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllciBmb250SWRlbnRpZmllciwgVmVjdG9yPEdseXBoQnVmZmVyR2x5cGgsIDEyOD4mJiBnbHlw
aHMsIFZlY3RvcjxHbHlwaEJ1ZmZlckFkdmFuY2UsIDEyOD4mJiBhZHZhbmNlcywgY29uc3QgRmxv
YXRSZWN0JiBib3VuZHMsIGNvbnN0IEZsb2F0UG9pbnQmIGxvY2FsQW5jaG9yLCBGb250U21vb3Ro
aW5nTW9kZSBzbW9vdGhpbmdNb2RlKQogICAgIDogbV9mb250SWRlbnRpZmllcihmb250SWRlbnRp
ZmllcikKICAgICAsIG1fZ2x5cGhzKFdURk1vdmUoZ2x5cGhzKSkKQEAgLTEwNzUsOCArMTA2Miw2
IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBJdGVtVHlw
ZSB0eXBlKQogICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBUb0ltYWdlQnVmZmVyOiB0cyA8PCAiY2xp
cC10by1pbWFnZS1idWZmZXIiOyBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwT3V0VG9Q
YXRoOiB0cyA8PCAiY2xpcC1vdXQtdG8tcGF0aCI7IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6
OkNsaXBQYXRoOiB0cyA8PCAiY2xpcC1wYXRoIjsgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6
QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM6IHRzIDw8ICJiZWdpbi1jbGlwLXRvLWRyYXdpbmct
Y29tbWFuZHM6IjsgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RW5kQ2xpcFRvRHJhd2luZ0Nv
bW1hbmRzOiB0cyA8PCAiZW5kLWNsaXAtdG8tZHJhd2luZy1jb21tYW5kcyI7IGJyZWFrOwogICAg
IGNhc2UgSXRlbVR5cGU6OkRyYXdHbHlwaHM6IHRzIDw8ICJkcmF3LWdseXBocyI7IGJyZWFrOwog
ICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdJbWFnZUJ1ZmZlcjogdHMgPDwgImRyYXctaW1hZ2UtYnVm
ZmVyIjsgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlOiB0cyA8PCAi
ZHJhdy1uYXRpdmUtaW1hZ2UiOyBicmVhazsKQEAgLTExOTAsMTIgKzExNzUsNiBAQCBUZXh0U3Ry
ZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBJdGVtSGFuZGxlIGl0ZW0pCiAgICAgY2Fz
ZSBJdGVtVHlwZTo6Q2xpcFBhdGg6CiAgICAgICAgIHRzIDw8IGl0ZW0uZ2V0PENsaXBQYXRoPigp
OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpCZWdpbkNsaXBUb0RyYXdpbmdD
b21tYW5kczoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFu
ZHM+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkVuZENsaXBUb0RyYXdp
bmdDb21tYW5kczoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RW5kQ2xpcFRvRHJhd2luZ0NvbW1h
bmRzPigpOwotICAgICAgICBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3R2x5cGhzOgog
ICAgICAgICB0cyA8PCBpdGVtLmdldDxEcmF3R2x5cGhzPigpOwogICAgICAgICBicmVhazsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCmluZGV4IDU3ODY0MTVjZGE3YmQ1ZGJjNzdmYzRi
Njg0YjBkNzg2NmYzM2Y3YjYuLjczMGFhMzE0YzlhYWIxNGU0OWVkYTBhNjAzZTUyMmZmYzUzMDMx
YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaApAQCAtODc3LDQzICs4NzcsNiBA
QCBPcHRpb25hbDxDbGlwUGF0aD4gQ2xpcFBhdGg6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQog
ICAgIHJldHVybiB7eyBXVEZNb3ZlKCpwYXRoKSwgKndpbmRSdWxlIH19OwogfQogCi1jbGFzcyBC
ZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcyB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0ZXhw
ciBJdGVtVHlwZSBpdGVtVHlwZSA9IEl0ZW1UeXBlOjpCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5k
czsKLSAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNJbmxpbmVJdGVtID0gdHJ1ZTsKLSAgICBz
dGF0aWMgY29uc3RleHByIGJvb2wgaXNEcmF3aW5nSXRlbSA9IGZhbHNlOwotCi0gICAgQmVnaW5D
bGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgRGVzdGlu
YXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UpCi0gICAgICAgIDogbV9kZXN0aW5hdGlvbihkZXN0
aW5hdGlvbikKLSAgICAgICAgLCBtX2NvbG9yU3BhY2UoY29sb3JTcGFjZSkKLSAgICB7Ci0gICAg
fQotCi0gICAgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
ZGVzdGluYXRpb247IH0KLSAgICBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSgpIGNv
bnN0IHsgcmV0dXJuIG1fY29sb3JTcGFjZTsgfQotCi1wcml2YXRlOgotICAgIEZsb2F0UmVjdCBt
X2Rlc3RpbmF0aW9uOwotICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBtX2NvbG9yU3BhY2U7Ci19
OwotCi1jbGFzcyBFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHMgewotcHVibGljOgotICAgIHN0YXRp
YyBjb25zdGV4cHIgSXRlbVR5cGUgaXRlbVR5cGUgPSBJdGVtVHlwZTo6RW5kQ2xpcFRvRHJhd2lu
Z0NvbW1hbmRzOwotICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0lubGluZUl0ZW0gPSB0cnVl
OwotICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0RyYXdpbmdJdGVtID0gZmFsc2U7Ci0KLSAg
ICBFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbikK
LSAgICAgICAgOiBtX2Rlc3RpbmF0aW9uKGRlc3RpbmF0aW9uKQotICAgIHsKLSAgICB9Ci0KLSAg
ICBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9kZXN0aW5h
dGlvbjsgfQotCi1wcml2YXRlOgotICAgIEZsb2F0UmVjdCBtX2Rlc3RpbmF0aW9uOwotfTsKLQog
Y2xhc3MgRHJhd0dseXBocyB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBJdGVtVHlw
ZSBpdGVtVHlwZSA9IEl0ZW1UeXBlOjpEcmF3R2x5cGhzOwpAQCAtMjI5OSw3ICsyMjYyLDYgQEAg
cHJpdmF0ZToKIAogdXNpbmcgRGlzcGxheUxpc3RJdGVtID0gVmFyaWFudAogICAgIDwgQXBwbHlE
ZXZpY2VTY2FsZUZhY3RvcgotICAgICwgQmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHMKICAgICAs
IEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIKICAgICAsIENsZWFyUmVjdAogICAgICwgQ2xlYXJTaGFk
b3cKQEAgLTIzMjEsNyArMjI4Myw2IEBAIHVzaW5nIERpc3BsYXlMaXN0SXRlbSA9IFZhcmlhbnQK
ICAgICAsIERyYXdQYXRoCiAgICAgLCBEcmF3UGF0dGVybgogICAgICwgRHJhd1JlY3QKLSAgICAs
IEVuZENsaXBUb0RyYXdpbmdDb21tYW5kcwogICAgICwgRW5kVHJhbnNwYXJlbmN5TGF5ZXIKICAg
ICAsIEZpbGxDb21wb3NpdGVkUmVjdAogICAgICwgRmlsbEVsbGlwc2UKQEAgLTI0MDYsOCArMjM2
Nyw2IEBAIHRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6RGlzcGxheUxpc3Q6
Okl0ZW1UeXBlPiB7CiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpDbGlwVG9J
bWFnZUJ1ZmZlciwKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkNsaXBPdXRU
b1BhdGgsCiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpDbGlwUGF0aCwKLSAg
ICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1h
bmRzLAotICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RW5kQ2xpcFRvRHJhd2lu
Z0NvbW1hbmRzLAogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0dseXBo
cywKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdJbWFnZUJ1ZmZlciwK
ICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZSwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdFJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAppbmRleCAwOTFlM2ZkMjc0ZDUx
OWExYjY1NjZjZWU4NWVkZTA0OGZjMWI4ZjczLi4zZjkyM2MxODQyOGU2NTBmZDE4ZDkzN2YyOGJi
NjZjZmZmNzE5OGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3Bw
CkBAIC0zOSwzMiArMzksMTkgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBEaXNw
bGF5TGlzdCB7CiAKLVJlY29yZGVyOjpSZWNvcmRlcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IERpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCwgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0
YXRlLCBjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
IGluaXRpYWxDVE0sIERlbGVnYXRlKiBkZWxlZ2F0ZSwgRHJhd0dseXBoc1JlY29yZGVyOjpEcmF3
R2x5cGhzRGVjb25zdHJ1Y3Rpb24gZHJhd0dseXBoc0RlY29uc3RydWN0aW9uKQotICAgIDogR3Jh
cGhpY3NDb250ZXh0SW1wbChjb250ZXh0LCBpbml0aWFsQ2xpcCwgQWZmaW5lVHJhbnNmb3JtKCkp
CitSZWNvcmRlcjo6UmVjb3JkZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBEaXNwbGF5TGlz
dCYgZGlzcGxheUxpc3QsIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgY29uc3Qg
RmxvYXRSZWN0JiBpbml0aWFsQ2xpcCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBpbml0aWFsQ1RN
LCBJbWFnZUJ1ZmZlciogb3duZXJJbWFnZUJ1ZmZlciwgIERyYXdHbHlwaHNSZWNvcmRlcjo6RHJh
d0dseXBoc0RlY29uc3RydWN0aW9uIGRyYXdHbHlwaHNEZWNvbnN0cnVjdGlvbikKKyAgICA6IEdy
YXBoaWNzQ29udGV4dEltcGwoY29udGV4dCwgb3duZXJJbWFnZUJ1ZmZlcikKICAgICAsIG1fZGlz
cGxheUxpc3QoZGlzcGxheUxpc3QpCi0gICAgLCBtX2RlbGVnYXRlKGRlbGVnYXRlKQotICAgICwg
bV9pc05lc3RlZChmYWxzZSkKICAgICAsIG1fZHJhd0dseXBoc1JlY29yZGVyKCp0aGlzLCBkcmF3
R2x5cGhzRGVjb25zdHJ1Y3Rpb24pCiB7CiAgICAgTE9HX1dJVEhfU1RSRUFNKERpc3BsYXlMaXN0
cywgc3RyZWFtIDw8ICJcblJlY29yZGluZyB3aXRoIGNsaXAgIiA8PCBpbml0aWFsQ2xpcCk7CiAg
ICAgbV9zdGF0ZVN0YWNrLmFwcGVuZCh7IHN0YXRlLCBpbml0aWFsQ1RNLCBpbml0aWFsQ2xpcCB9
KTsKIH0KIAotUmVjb3JkZXI6OlJlY29yZGVyKFJlY29yZGVyJiBwYXJlbnQsIEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBjb25zdCBG
bG9hdFJlY3QmIGluaXRpYWxDbGlwLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGluaXRpYWxDVE0p
Ci0gICAgOiBHcmFwaGljc0NvbnRleHRJbXBsKGNvbnRleHQsIGluaXRpYWxDbGlwLCBBZmZpbmVU
cmFuc2Zvcm0oKSkKLSAgICAsIG1fZGlzcGxheUxpc3QocGFyZW50Lm1fZGlzcGxheUxpc3QpCi0g
ICAgLCBtX2RlbGVnYXRlKHBhcmVudC5tX2RlbGVnYXRlKQotICAgICwgbV9pc05lc3RlZCh0cnVl
KQotICAgICwgbV9kcmF3R2x5cGhzUmVjb3JkZXIoKnRoaXMsIHBhcmVudC5tX2RyYXdHbHlwaHNS
ZWNvcmRlci5kcmF3R2x5cGhzRGVjb25zdHJ1Y3Rpb24oKSkKLXsKLSAgICBtX3N0YXRlU3RhY2su
YXBwZW5kKHsgc3RhdGUsIGluaXRpYWxDVE0sIGluaXRpYWxDbGlwIH0pOwotfQotCiBSZWNvcmRl
cjo6flJlY29yZGVyKCkKIHsKICAgICBBU1NFUlQobV9zdGF0ZVN0YWNrLnNpemUoKSA9PSAxKTsg
Ly8gSWYgdGhpcyBmaXJlcywgaXQgaW5kaWNhdGVzIG1pc21hdGNoZWQgc2F2ZS9yZXN0b3JlLgot
ICAgIGlmICghbV9pc05lc3RlZCkKLSAgICAgICAgTE9HKERpc3BsYXlMaXN0cywgIlJlY29yZGVk
IGRpc3BsYXkgbGlzdDpcbiVzIiwgbV9kaXNwbGF5TGlzdC5kZXNjcmlwdGlvbigpLmRhdGEoKSk7
CisgICAgTE9HKERpc3BsYXlMaXN0cywgIlJlY29yZGVkIGRpc3BsYXkgbGlzdDpcbiVzIiwgbV9k
aXNwbGF5TGlzdC5kZXNjcmlwdGlvbigpLmRhdGEoKSk7CiB9CiAKIHZvaWQgUmVjb3JkZXI6Omdl
dFBpeGVsQnVmZmVyKGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiBvdXRwdXRGb3JtYXQsIGNvbnN0
IEludFJlY3QmIHNvdXJjZVJlY3QpCkBAIC0xMDQsOCArOTEsOCBAQCBzdGF0aWMgYm9vbCBjb250
YWluc09ubHlJbmxpbmVTdGF0ZUNoYW5nZXMoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFu
Z2UmIGNoYQogCiB2b2lkIFJlY29yZGVyOjpjYWNoZU5hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiBp
bWFnZSkKIHsKLSAgICBpZiAobV9kZWxlZ2F0ZSkKLSAgICAgICAgbV9kZWxlZ2F0ZS0+Y2FjaGVO
YXRpdmVJbWFnZShpbWFnZSk7CisgICAgaWYgKG93bmVySW1hZ2VCdWZmZXIoKSkKKyAgICAgICAg
b3duZXJJbWFnZUJ1ZmZlcigpLT5jYWNoZU5hdGl2ZUltYWdlKGltYWdlKTsKICAgICBtX2Rpc3Bs
YXlMaXN0LmNhY2hlTmF0aXZlSW1hZ2UoaW1hZ2UpOwogfQogCkBAIC0xMzUsNyArMTIyLDcgQEAg
dm9pZCBSZWNvcmRlcjo6YXBwZW5kU3RhdGVDaGFuZ2VJdGVtKGNvbnN0IEdyYXBoaWNzQ29udGV4
dFN0YXRlQ2hhbmdlJiBjaGFuZ2VzLAogCiBib29sIFJlY29yZGVyOjpjYW5BcHBlbmRJdGVtT2ZU
eXBlKEl0ZW1UeXBlIHR5cGUpIGNvbnN0CiB7Ci0gICAgcmV0dXJuICFtX2RlbGVnYXRlIHx8IG1f
ZGVsZWdhdGUtPmNhbkFwcGVuZEl0ZW1PZlR5cGUodHlwZSk7CisgICAgcmV0dXJuICFvd25lcklt
YWdlQnVmZmVyKCkgfHwgb3duZXJJbWFnZUJ1ZmZlcigpLT5jYW5BcHBlbmRJdGVtT2ZUeXBlKHR5
cGUpOwogfQogCiB2b2lkIFJlY29yZGVyOjphcHBlbmRTdGF0ZUNoYW5nZUl0ZW1JZk5lY2Vzc2Fy
eSgpCkBAIC0xNTgsMTIgKzE0NSwxMiBAQCB2b2lkIFJlY29yZGVyOjp1cGRhdGVTdGF0ZShjb25z
dCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YQogCiBib29s
IFJlY29yZGVyOjpjYW5EcmF3SW1hZ2VCdWZmZXIoY29uc3QgSW1hZ2VCdWZmZXImIGltYWdlQnVm
ZmVyKSBjb25zdAogewotICAgIHJldHVybiAhbV9kZWxlZ2F0ZSB8fCBtX2RlbGVnYXRlLT5pc0Nh
Y2hlZEltYWdlQnVmZmVyKGltYWdlQnVmZmVyKTsKKyAgICByZXR1cm4gIW93bmVySW1hZ2VCdWZm
ZXIoKSB8fCBvd25lckltYWdlQnVmZmVyKCktPmNhbkRyYXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZl
cik7CiB9CiAKIFJlbmRlcmluZ01vZGUgUmVjb3JkZXI6OnJlbmRlcmluZ01vZGUoKSBjb25zdAog
ewotICAgIHJldHVybiBtX2RlbGVnYXRlID8gbV9kZWxlZ2F0ZS0+cmVuZGVyaW5nTW9kZSgpIDog
UmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZDsKKyAgICByZXR1cm4gb3duZXJJbWFnZUJ1ZmZl
cigpID8gb3duZXJJbWFnZUJ1ZmZlcigpLT5yZW5kZXJpbmdNb2RlKCkgOiBSZW5kZXJpbmdNb2Rl
OjpVbmFjY2VsZXJhdGVkOwogfQogCiB2b2lkIFJlY29yZGVyOjpjbGVhclNoYWRvdygpCkBAIC0x
OTgsOCArMTg1LDggQEAgdm9pZCBSZWNvcmRlcjo6ZHJhd0dseXBocyhjb25zdCBGb250JiBmb250
LCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMsIGNvbnMKIAogdm9pZCBSZWNvcmRlcjo6
YXBwZW5kRHJhd0dseXBoc0l0ZW1XaXRoQ2FjaGVkRm9udChjb25zdCBGb250JiBmb250LCBjb25z
dCBHbHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMsIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSogYWR2
YW5jZXMsIHVuc2lnbmVkIGNvdW50LCBjb25zdCBGbG9hdFBvaW50JiBsb2NhbEFuY2hvciwgRm9u
dFNtb290aGluZ01vZGUgc21vb3RoaW5nTW9kZSkKIHsKLSAgICBpZiAobV9kZWxlZ2F0ZSkKLSAg
ICAgICAgbV9kZWxlZ2F0ZS0+Y2FjaGVGb250KGNvbnN0X2Nhc3Q8Rm9udCY+KGZvbnQpKTsKKyAg
ICBpZiAob3duZXJJbWFnZUJ1ZmZlcigpKQorICAgICAgICBvd25lckltYWdlQnVmZmVyKCktPmNh
Y2hlRm9udChjb25zdF9jYXN0PEZvbnQmPihmb250KSk7CiAgICAgbV9kaXNwbGF5TGlzdC5jYWNo
ZUZvbnQoY29uc3RfY2FzdDxGb250Jj4oZm9udCkpOwogICAgIGFwcGVuZDxEcmF3R2x5cGhzPihm
b250LCBnbHlwaHMsIGFkdmFuY2VzLCBjb3VudCwgbG9jYWxBbmNob3IsIHNtb290aGluZ01vZGUp
OwogfQpAQCAtNDUyLDI3ICs0MzksNiBAQCB2b2lkIFJlY29yZGVyOjpjbGlwVG9JbWFnZUJ1ZmZl
cihJbWFnZUJ1ZmZlciYgaW1hZ2VCdWZmZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdAogICAgIGFw
cGVuZDxDbGlwVG9JbWFnZUJ1ZmZlcj4oaW1hZ2VCdWZmZXIucmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyKCksIGRlc3RSZWN0KTsKIH0KIAotdm9pZCBSZWNvcmRlcjo6Y2xpcFRvRHJhd2luZ0Nv
bW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSBjb2xvclNwYWNlLCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYmIGRyYXdpbmdG
dW5jdGlvbikKLXsKLSAgICBHcmFwaGljc0NvbnRleHQgbmVzdGVkQ29udGV4dChbJl0oR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgIGF1dG8gaW5pdGlhbENsaXAgPSBGbG9hdFJl
Y3QoRmxvYXRQb2ludCgpLCBkZXN0aW5hdGlvbi5zaXplKCkpOwotCi0gICAgICAgIC8vIFRoZSBp
bml0aWFsIENUTSBtYXRjaGVzIEltYWdlQnVmZmVyJ3MgaW5pdGlhbCBDVE0uCi0gICAgICAgIEFm
ZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm0gPSBnZXRDVE0oR3JhcGhpY3NDb250ZXh0OjpEZWZpbml0
ZWx5SW5jbHVkZURldmljZVNjYWxlKTsKLSAgICAgICAgRmxvYXRTaXplIHNjYWxlRmFjdG9yKHRy
YW5zZm9ybS54U2NhbGUoKSwgdHJhbnNmb3JtLnlTY2FsZSgpKTsKLSAgICAgICAgYXV0byBzY2Fs
ZWRTaXplID0gZXhwYW5kZWRJbnRTaXplKGRlc3RpbmF0aW9uLnNpemUoKSAqIHNjYWxlRmFjdG9y
KTsKLSAgICAgICAgQWZmaW5lVHJhbnNmb3JtIGluaXRpYWxDVE07Ci0gICAgICAgIGluaXRpYWxD
VE0uc2NhbGUoMSwgLTEpOwotICAgICAgICBpbml0aWFsQ1RNLnRyYW5zbGF0ZSgwLCAtc2NhbGVk
U2l6ZS5oZWlnaHQoKSk7Ci0gICAgICAgIGluaXRpYWxDVE0uc2NhbGUoc2NhbGVkU2l6ZSAvIGRl
c3RpbmF0aW9uLnNpemUoKSk7Ci0KLSAgICAgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxSZWNv
cmRlcj4obmV3IFJlY29yZGVyKCp0aGlzLCBjb250ZXh0LCBHcmFwaGljc0NvbnRleHRTdGF0ZSgp
LCBpbml0aWFsQ2xpcCwgaW5pdGlhbENUTSkpOwotICAgIH0pOwotICAgIGFwcGVuZDxCZWdpbkNs
aXBUb0RyYXdpbmdDb21tYW5kcz4oZGVzdGluYXRpb24sIGNvbG9yU3BhY2UpOwotICAgIGRyYXdp
bmdGdW5jdGlvbihuZXN0ZWRDb250ZXh0KTsKLSAgICBhcHBlbmQ8RW5kQ2xpcFRvRHJhd2luZ0Nv
bW1hbmRzPihkZXN0aW5hdGlvbik7Ci19Ci0KICNpZiBFTkFCTEUoVklERU8pCiBib29sIFJlY29y
ZGVyOjpjYW5QYWludEZyYW1lRm9yTWVkaWEoY29uc3QgTWVkaWFQbGF5ZXImIHBsYXllcikgY29u
c3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCmluZGV4IDc2MzM5YWJl
OGE2MDgwNGJjNzJjYzA5MWZmNGQyMWFmMTRjYWUwNTQuLmNjZWFhZGFmMmI5MDQzMzhmNWRiYzg1
MTg0MThlNjkxNmZjOTc0NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIu
aApAQCAtNTQsMjUgKzU0LDEzIEBAIGNsYXNzIFJlY29yZGVyIDogcHVibGljIEdyYXBoaWNzQ29u
dGV4dEltcGwgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKFJlY29yZGVyKTsKIHB1YmxpYzoKLSAgICBjbGFzcyBEZWxlZ2F0ZTsKLSAgICBX
RUJDT1JFX0VYUE9SVCBSZWNvcmRlcihHcmFwaGljc0NvbnRleHQmLCBEaXNwbGF5TGlzdCYsIGNv
bnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgY29uc3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xpcCwg
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgRGVsZWdhdGUqID0gbnVsbHB0ciwgRHJhd0dseXBoc1Jl
Y29yZGVyOjpEcmF3R2x5cGhzRGVjb25zdHJ1Y3Rpb24gPSBEcmF3R2x5cGhzUmVjb3JkZXI6OkRy
YXdHbHlwaHNEZWNvbnN0cnVjdGlvbjo6RGVjb25zdHJ1Y3QpOworICAgIFdFQkNPUkVfRVhQT1JU
IFJlY29yZGVyKEdyYXBoaWNzQ29udGV4dCYsIERpc3BsYXlMaXN0JiwgY29uc3QgR3JhcGhpY3ND
b250ZXh0U3RhdGUmLCBjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwLCBjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mLCBJbWFnZUJ1ZmZlciogPSBudWxscHRyLCBEcmF3R2x5cGhzUmVjb3JkZXI6OkRy
YXdHbHlwaHNEZWNvbnN0cnVjdGlvbiA9IERyYXdHbHlwaHNSZWNvcmRlcjo6RHJhd0dseXBoc0Rl
Y29uc3RydWN0aW9uOjpEZWNvbnN0cnVjdCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+
UmVjb3JkZXIoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0UGl4ZWxCdWZmZXIoY29u
c3QgUGl4ZWxCdWZmZXJGb3JtYXQmIG91dHB1dEZvcm1hdCwgY29uc3QgSW50UmVjdCYgc291cmNl
UmVjdCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwdXRQaXhlbEJ1ZmZlcihjb25zdCBQaXhl
bEJ1ZmZlciYsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9p
bnQsIEFscGhhUHJlbXVsdGlwbGljYXRpb24gZGVzdEZvcm1hdCk7CiAKICAgICBib29sIGlzRW1w
dHkoKSBjb25zdCB7IHJldHVybiBtX2Rpc3BsYXlMaXN0LmlzRW1wdHkoKTsgfQotCi0gICAgY2xh
c3MgRGVsZWdhdGUgewotICAgIHB1YmxpYzoKLSAgICAgICAgdmlydHVhbCB+RGVsZWdhdGUoKSB7
IH0KLSAgICAgICAgdmlydHVhbCBib29sIGNhbkFwcGVuZEl0ZW1PZlR5cGUoSXRlbVR5cGUpIHsg
cmV0dXJuIGZhbHNlOyB9Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBjYWNoZU5hdGl2ZUltYWdlKE5h
dGl2ZUltYWdlJikgeyB9Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBpc0NhY2hlZEltYWdlQnVmZmVy
KGNvbnN0IEltYWdlQnVmZmVyJikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICAgICAgdmly
dHVhbCB2b2lkIGNhY2hlRm9udChGb250JikgeyB9Ci0gICAgICAgIHZpcnR1YWwgUmVuZGVyaW5n
TW9kZSByZW5kZXJpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4gUmVuZGVyaW5nTW9kZTo6VW5hY2Nl
bGVyYXRlZDsgfQotICAgIH07Ci0KICAgICB2b2lkIGZsdXNoQ29udGV4dChGbHVzaElkZW50aWZp
ZXIgaWRlbnRpZmllcikgeyBhcHBlbmQ8Rmx1c2hDb250ZXh0PihpZGVudGlmaWVyKTsgfQogCiBw
cml2YXRlOgpAQCAtMTQ3LDcgKzEzNSw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjbGlwUGF0aChj
b25zdCBQYXRoJiwgV2luZFJ1bGUpIG92ZXJyaWRlOwogICAgIEludFJlY3QgY2xpcEJvdW5kcygp
IG92ZXJyaWRlOwogICAgIHZvaWQgY2xpcFRvSW1hZ2VCdWZmZXIoV2ViQ29yZTo6SW1hZ2VCdWZm
ZXImLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKLSAgICB2b2lkIGNsaXBUb0RyYXdpbmdD
b21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UsIEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3NDb250ZXh0Jik+JiYpIG92ZXJyaWRlOwogI2lmIEVO
QUJMRShWSURFTykKICAgICB2b2lkIHBhaW50RnJhbWVGb3JNZWRpYShNZWRpYVBsYXllciYsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24pIG92ZXJyaWRlOwogICAgIGJvb2wgY2FuUGFpbnRG
cmFtZUZvck1lZGlhKGNvbnN0IE1lZGlhUGxheWVyJikgY29uc3Qgb3ZlcnJpZGU7CkBAIC0yMzUs
MTEgKzIyMiw3IEBAIHByaXZhdGU6CiAgICAgQ29udGV4dFN0YXRlJiBjdXJyZW50U3RhdGUoKTsK
IAogICAgIERpc3BsYXlMaXN0JiBtX2Rpc3BsYXlMaXN0OwotICAgIERlbGVnYXRlKiBtX2RlbGVn
YXRlOwotICAgIGJvb2wgbV9pc05lc3RlZDsKLQogICAgIFZlY3RvcjxDb250ZXh0U3RhdGUsIDQ+
IG1fc3RhdGVTdGFjazsKLQogICAgIERyYXdHbHlwaHNSZWNvcmRlciBtX2RyYXdHbHlwaHNSZWNv
cmRlcjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcAppbmRl
eCAxMDdmMjBlYzRmMWM0MTJmODAxZTgyMGMwNGIwNzI4ZjI0ODgzYWEzLi5hNDJiNGVhOTU1YjUx
MjdmMjgwNjE3OWY1N2ZmMTRlYjY2MzBkYjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0UmVwbGF5ZXIuY3BwCkBAIC0xNTMsMjUgKzE1Myw2IEBAIHN0ZDo6cGFpcjxPcHRpb25hbDxT
dG9wUmVwbGF5UmVhc29uPiwgT3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPj4g
UmVwCiAgICAgICAgIHJldHVybiB7IFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0IH07CiAgICAg
fQogCi0gICAgaWYgKGl0ZW0uaXM8QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM+KCkpIHsKLSAg
ICAgICAgaWYgKG1fbWFza0ltYWdlQnVmZmVyKQotICAgICAgICAgICAgcmV0dXJuIHsgU3RvcFJl
cGxheVJlYXNvbjo6SW52YWxpZEl0ZW1PckV4dGVudCwgV1RGOjpudWxsb3B0IH07Ci0gICAgICAg
IGF1dG8mIGNsaXBJdGVtID0gaXRlbS5nZXQ8QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM+KCk7
Ci0gICAgICAgIG1fbWFza0ltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGli
bGVCdWZmZXIoY2xpcEl0ZW0uZGVzdGluYXRpb24oKS5zaXplKCksIGNsaXBJdGVtLmNvbG9yU3Bh
Y2UoKSwgbV9jb250ZXh0KTsKLSAgICAgICAgaWYgKCFtX21hc2tJbWFnZUJ1ZmZlcikKLSAgICAg
ICAgICAgIHJldHVybiB7IFN0b3BSZXBsYXlSZWFzb246Ok91dE9mTWVtb3J5LCBXVEY6Om51bGxv
cHQgfTsKLSAgICAgICAgcmV0dXJuIHsgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQgfTsKLSAg
ICB9Ci0KLSAgICBpZiAoaXRlbS5pczxFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM+KCkpIHsKLSAg
ICAgICAgaWYgKCFtX21hc2tJbWFnZUJ1ZmZlcikKLSAgICAgICAgICAgIHJldHVybiB7IFN0b3BS
ZXBsYXlSZWFzb246OkludmFsaWRJdGVtT3JFeHRlbnQsIFdURjo6bnVsbG9wdCB9OwotICAgICAg
ICBhdXRvJiBjbGlwSXRlbSA9IGl0ZW0uZ2V0PEVuZENsaXBUb0RyYXdpbmdDb21tYW5kcz4oKTsK
LSAgICAgICAgbV9jb250ZXh0LmNsaXBUb0ltYWdlQnVmZmVyKCptX21hc2tJbWFnZUJ1ZmZlciwg
Y2xpcEl0ZW0uZGVzdGluYXRpb24oKSk7Ci0gICAgICAgIG1fbWFza0ltYWdlQnVmZmVyID0gbnVs
bHB0cjsKLSAgICAgICAgcmV0dXJuIHsgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQgfTsKLSAg
ICB9Ci0KICAgICBpdGVtLmFwcGx5KGNvbnRleHQoKSk7CiAgICAgcmV0dXJuIHsgV1RGOjpudWxs
b3B0LCBXVEY6Om51bGxvcHQgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAppbmRleCBjMzY2
NWI2NDc0NmQ2NWYzMWNhMzU5NjMzMGMwOWU2ZDZkMDhiNzNiLi41YjU3ZGZmZTFiYzVhMjU4ZGM4
N2I0YWY3NzM1OGMzNTY4NjQ5MWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCkBAIC01NDgs
OCArNTQ4LDYgQEAgT3B0aW9uYWw8RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGU+IFdBUk5fVU5VU0VE
X1JFVFVSTiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpkZWMKICAgICBjYXNlIERpc3BsYXlMaXN0
OjpJdGVtVHlwZTo6Q2xpcDoKICAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Q2xpcE91
dDoKICAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Q2xpcFRvSW1hZ2VCdWZmZXI6Ci0g
ICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRz
OgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpFbmRDbGlwVG9EcmF3aW5nQ29tbWFu
ZHM6CiAgICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkNvbmNhdGVuYXRlQ1RNOgogICAg
IGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3RG90c0ZvckRvY3VtZW50TWFya2VyOgog
ICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3RWxsaXBzZToKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQ
cm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFn
ZUJ1ZmZlclByb3h5LmgKaW5kZXggZDJlZGFhOTc3MTVkYWY0YmIwN2NmNDFmNzc4ZmQzOTJkZDFl
NmQ1MS4uZmNjNTBjNTBjYzUxN2QwNzk3MjViYTFiMDRmMjFjODUyMGE3NWVmNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZl
clByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVJbWFnZUJ1ZmZlclByb3h5LmgKQEAgLTQ2LDExICs0NiwxNCBAQCBjbGFzcyBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kOwogdGVtcGxhdGU8dHlwZW5hbWUgQmFja2VuZFR5cGU+IGNsYXNzIFRocmVh
ZFNhZmVSZW1vdGVJbWFnZUJ1ZmZlckZsdXNoZXI7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEJhY2tl
bmRUeXBlPgotY2xhc3MgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eSA6IHB1YmxpYyBXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6SW1hZ2VCdWZmZXI8QmFja2VuZFR5cGU+LCBwdWJsaWMgV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OlJlY29yZGVyOjpEZWxlZ2F0ZSwgcHVibGljIFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpJdGVtQnVmZmVyV3JpdGluZ0NsaWVudCB7CitjbGFzcyBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5
IDogcHVibGljIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJbWFnZUJ1ZmZlcjxCYWNrZW5kVHlwZT4s
IHB1YmxpYyBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcldyaXRpbmdDbGllbnQgewog
ICAgIHVzaW5nIEJhc2VEaXNwbGF5TGlzdEltYWdlQnVmZmVyID0gV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OkltYWdlQnVmZmVyPEJhY2tlbmRUeXBlPjsKICAgICB1c2luZyBCYXNlRGlzcGxheUxpc3RJ
bWFnZUJ1ZmZlcjo6bV9iYWNrZW5kOwogICAgIHVzaW5nIEJhc2VEaXNwbGF5TGlzdEltYWdlQnVm
ZmVyOjptX2RyYXdpbmdDb250ZXh0OwogICAgIHVzaW5nIEJhc2VEaXNwbGF5TGlzdEltYWdlQnVm
ZmVyOjptX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjsKKyAgICB1c2luZyBCYXNlRGlzcGxh
eUxpc3RJbWFnZUJ1ZmZlcjo6Y29sb3JTcGFjZTsKKyAgICB1c2luZyBCYXNlRGlzcGxheUxpc3RJ
bWFnZUJ1ZmZlcjo6cGl4ZWxGb3JtYXQ7CisgICAgdXNpbmcgQmFzZURpc3BsYXlMaXN0SW1hZ2VC
dWZmZXI6OnJlbmRlcmluZ01vZGU7CiAgICAgdXNpbmcgQmFzZURpc3BsYXlMaXN0SW1hZ2VCdWZm
ZXI6OnJlc29sdXRpb25TY2FsZTsKIAogcHVibGljOgpAQCAtOTcsNyArMTAwLDcgQEAgcHVibGlj
OgogCiBwcm90ZWN0ZWQ6CiAgICAgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eShjb25zdCBXZWJDb3Jl
OjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eSYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQotICAgICAgICA6
IEJhc2VEaXNwbGF5TGlzdEltYWdlQnVmZmVyKHBhcmFtZXRlcnMsIHRoaXMpCisgICAgICAgIDog
QmFzZURpc3BsYXlMaXN0SW1hZ2VCdWZmZXIocGFyYW1ldGVycykKICAgICAgICAgLCBtX3JlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eShtYWtlV2Vha1B0cihyZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHkpKQogICAgIHsKICAgICAgICAgQVNTRVJUKG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5KTsKQEAgLTEwOCw4ICsxMTEsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIG1fZHJhd2luZ0Nv
bnRleHQuZGlzcGxheUxpc3QoKS5zZXRUcmFja3NEcmF3aW5nSXRlbUV4dGVudHMoZmFsc2UpOwog
ICAgIH0KIAotICAgIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIEJhc2VEaXNwbGF5TGlzdEltYWdlQnVmZmVyOjpyZW5kZXJpbmdN
b2RlKCk7IH0KLQogICAgIGJvb2wgaGFzUGVuZGluZ0ZsdXNoKCkgY29uc3QgeyByZXR1cm4gbV9z
ZW50Rmx1c2hJZGVudGlmaWVyICE9IG1fcmVjZWl2ZWRGbHVzaElkZW50aWZpZXI7IH0KIAogICAg
IHZvaWQgZGlkRmx1c2goV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRpZmllciBmbHVz
aElkZW50aWZpZXIpIG92ZXJyaWRlCkBAIC0xMzMsNiArMTM0LDEzIEBAIHByb3RlY3RlZDoKICAg
ICAgICAgfQogICAgIH0KIAorICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gY3JlYXRl
Q29tcGF0aWJsZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNpemUpIG92ZXJyaWRl
CisgICAgeworICAgICAgICBpZiAoIW1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQorICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBtX3JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eS0+Y3JlYXRlSW1hZ2VCdWZmZXIoc2l6ZSwgcmVuZGVyaW5nTW9kZSgpLCBy
ZXNvbHV0aW9uU2NhbGUoKSwgY29sb3JTcGFjZSgpLCBwaXhlbEZvcm1hdCgpKTsKKyAgICB9CisK
ICAgICBXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQqIGVuc3VyZUJhY2tlbmRDcmVhdGVkKCkg
Y29uc3Qgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIGlmICghbV9yZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHkpCkBAIC0yNjYsNyArMjc0LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICAgICAgbV9y
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPnJlbW90ZVJlc291cmNlQ2FjaGVQcm94eSgpLmNh
Y2hlTmF0aXZlSW1hZ2UoaW1hZ2UpOwogICAgIH0KIAotICAgIGJvb2wgaXNDYWNoZWRJbWFnZUJ1
ZmZlcihjb25zdCBXZWJDb3JlOjpJbWFnZUJ1ZmZlciYgaW1hZ2VCdWZmZXIpIGNvbnN0IG92ZXJy
aWRlCisgICAgYm9vbCBjYW5EcmF3SW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6SW1hZ2VCdWZm
ZXImIGltYWdlQnVmZmVyKSBjb25zdCBvdmVycmlkZQogICAgIHsKICAgICAgICAgaWYgKCFtX3Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
</data>
<flag name="commit-queue"
          id="450113"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429035</attachid>
            <date>2021-05-18 23:22:35 -0700</date>
            <delta_ts>2022-01-28 19:39:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225959-20210518232234.patch</filename>
            <type>text/plain</type>
            <size>55308</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3NzE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTZhYjExMmU0ODQwNzQy
ZTM2OWE4YWZjZjRjMWNlNGE2ZTIxZTQ4Ni4uNmRmYzIwNzJhMGNhZTIzNzQxOTZjYjg5MTZmNTU0
Mjc4YmExMDViNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk1IEBACisyMDIxLTA1LTE4ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
VGhlIGNvbXBhdGlibGUgSW1hZ2VCdWZmZXIgdHlwZSBzaG91bGQgbWF0Y2ggdGhlIEdyYXBoaWNz
Q29udGV4dCB1bmRlcmx5aW5nIEltYWdlQnVmZmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU5NTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBJZiB0aGUgdW5kZXJseWluZyBJbWFnZUJ1ZmZlciBvZiBh
IEdyYXBoaWNzQ29udGV4dCBpcyBhIFJlbW90ZUltYWdlQnVmZmVyUHJveHksCisgICAgICAgIElt
YWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKCkgc2hvdWxkIGNyZWF0ZSBhIFJlbW90
ZUltYWdlQnVmZmVyUHJveHkuCisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJp
bmdDb250ZXh0MkRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyREJhc2U6OmRyYXdUZXh0VW5jaGVja2VkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0Ojpvd25lckltYWdlQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDo6Y2xpcFRvRHJhd2luZ0NvbW1hbmRzKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDo6aW1wbCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQ6OmltcGwpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0SW1wbDo6
R3JhcGhpY3NDb250ZXh0SW1wbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0SW1wbC5oOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0SW1wbDo6
b3duZXJJbWFnZUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBh
dGlibGVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmg6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Y2FuQXBwZW5kSXRlbU9mVHlwZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Y2FuRHJhd0ltYWdlQnVmZmVyIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpjYWNoZU5hdGl2ZUltYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpjYWNoZUZvbnQpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OkdyYXBoaWNzQ29udGV4dEltcGxDYWly
byk6CisgICAgICAgICgpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6bV9wcml2YXRlKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6Y2xp
cFRvRHJhd2luZ0NvbW1hbmRzKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUJ1ZmZlckNHQmFja2VuZDo6c2V0dXBDb250ZXh0IGNvbnN0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjphcHBlbmQpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3aW5nQ29udGV4dDo6RHJhd2luZ0Nv
bnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdERyYXdpbmdDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJh
d2luZ0NvbnRleHQ6OkRyYXdpbmdDb250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OkltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZTo6YXBwbHkpOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGU6OmRlc3Ryb3kpOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGU6OnNhZmVDb3B5IGNvbnN0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6c2l6ZU9mSXRlbUluQnl0ZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OmlzRHJhd2luZ0l0ZW0pOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OmlzSW5saW5lSXRlbSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6b3BlcmF0b3I8PCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kczo6QmVnaW5DbGlw
VG9EcmF3aW5nQ29tbWFuZHMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOjpkZXN0aW5hdGlvbiBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6QmVnaW5DbGlwVG9EcmF3aW5nQ29t
bWFuZHM6OmNvbG9yU3BhY2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OkVuZENsaXBUb0RyYXdpbmdDb21tYW5kczo6RW5kQ2xpcFRvRHJhd2luZ0NvbW1h
bmRzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpFbmRDbGlwVG9E
cmF3aW5nQ29tbWFuZHM6OmRlc3RpbmF0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OlJlY29yZGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6flJlY29yZGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6Y2FjaGVOYXRpdmVJbWFnZSk6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmNhbkFwcGVuZEl0ZW1PZlR5cGUg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpjYW5EcmF3
SW1hZ2VCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29y
ZGVyOjpyZW5kZXJpbmdNb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpSZWNvcmRlcjo6YXBwZW5kRHJhd0dseXBoc0l0ZW1XaXRoQ2FjaGVkRm9udCk6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmNsaXBUb0RyYXdpbmdDb21tYW5kcyk6
IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0UmVjb3JkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRl
cjo6aXNFbXB0eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3Jk
ZXI6OkRlbGVnYXRlOjp+RGVsZWdhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OlJlY29yZGVyOjpEZWxlZ2F0ZTo6Y2FuQXBwZW5kSXRlbU9mVHlwZSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OkRlbGVnYXRlOjpj
YWNoZU5hdGl2ZUltYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpSZWNvcmRlcjo6RGVsZWdhdGU6OmlzQ2FjaGVkSW1hZ2VCdWZmZXIgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpEZWxlZ2F0ZTo6Y2Fj
aGVGb250KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRl
cjo6RGVsZWdhdGU6OnJlbmRlcmluZ01vZGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXllcjo6YXBwbHlJdGVtKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlv
blJlY29yZGVyLmNwcDoKKyAgICAgICAgKE5pY29zaWE6OkNhaXJvT3BlcmF0aW9uUmVjb3JkZXI6
OkNhaXJvT3BlcmF0aW9uUmVjb3JkZXIpOgorICAgICAgICAoTmljb3NpYTo6bV9jb21tYW5kTGlz
dCk6IERlbGV0ZWQuCisgICAgICAgIChOaWNvc2lhOjpDYWlyb09wZXJhdGlvblJlY29yZGVyOjpj
bGlwVG9EcmF3aW5nQ29tbWFuZHMpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6R3JhcGhp
Y3NDb250ZXh0SW1wbERpcmVjdDJEKToKKyAgICAgICAgKFdlYkNvcmU6Om1fcHJpdmF0ZSk6IERl
bGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dElt
cGxEaXJlY3QyRC5oOgorCiAyMDIxLTA1LTE4ICBDYW1lcm9uIE1jQ29ybWFjayAgPGhleWNhbUBh
cHBsZS5jb20+CiAKICAgICAgICAgUmVjb3JkIGdyYWRpZW50IGFuZCBwYXR0ZXJuIGZpbGxlZCBj
YW52YXMgdGV4dCBpbiB0aGUgY29ycmVjdCBjb29yZGluYXRlIHN5c3RlbS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXgg
ODE2MTViY2Y0NjQ2MTkxZjFiMzBmNjRjN2Q3YmU2ZDFhNTUyZDE0OS4uYzUwMTZkNGMwMzM5ZDJi
ZTRkNjI3OWViMDE2NzVmNTU1NzQ2ZTQxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAy
MS0wNS0xOCAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBb
R1BVIFByb2Nlc3NdIFRoZSBjb21wYXRpYmxlIEltYWdlQnVmZmVyIHR5cGUgc2hvdWxkIG1hdGNo
IHRoZSBHcmFwaGljc0NvbnRleHQgdW5kZXJseWluZyBJbWFnZUJ1ZmZlcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1OTU5CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kOjpkZWNvZGVJdGVtKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUlt
YWdlQnVmZmVyUHJveHk6OlJlbW90ZUltYWdlQnVmZmVyUHJveHkpOgorCiAyMDIxLTA1LTE4ICBU
aW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIGFsbG93c0Nv
bnRlbnRKYXZhU2NyaXB0IEFQSSBub3QgYXBwbGllZCBmcm9tIGRlZmF1bHRXZWJwYWdlUHJlZmVy
ZW5jZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQyREJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKaW5kZXggNjRhODI4ZTI0Yjc3OTE5NDllNjAxMTQz
NDA2MDBjYjg4OTRjMTU1ZC4uZDQ0ZDQzMWU3ZDY1N2I1NWE0MjQ4ZDVjZDM0MTNkNjQ0NGEyNmY2
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKQEAgLTI0ODcsMzMgKzI0ODcsMzMgQEAgdm9pZCBD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpkcmF3VGV4dFVuY2hlY2tlZChjb25zdCBUZXh0
UnVuJiB0ZXh0UnVuLCBmbG8KICAgICAgICAgICAgIGZvbnRQcm94eS5kcmF3QmlkaVRleHQoKmMs
IHRleHRSdW4sIGxvY2F0aW9uICsgb2Zmc2V0LCBGb250Q2FzY2FkZTo6VXNlRmFsbGJhY2tJZkZv
bnROb3RSZWFkeSk7CiAgICAgICAgIH0KIAotICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNh
dmVyIHN0YXRlU2F2ZXIoKmMpOworICAgICAgICBhdXRvIG1hc2tJbWFnZSA9IEltYWdlQnVmZmVy
OjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKG1hc2tSZWN0LnNpemUoKSwgKmMpOworICAgICAgICBp
ZiAoIW1hc2tJbWFnZSkKKyAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBhdXRvIHBhaW50
TWFza0ltYWdlID0gWyZdIChHcmFwaGljc0NvbnRleHQmIG1hc2tJbWFnZUNvbnRleHQpIHsKLSAg
ICAgICAgICAgIGlmIChmaWxsKQotICAgICAgICAgICAgICAgIG1hc2tJbWFnZUNvbnRleHQuc2V0
RmlsbENvbG9yKENvbG9yOjpibGFjayk7Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAg
ICAgICBtYXNrSW1hZ2VDb250ZXh0LnNldFN0cm9rZUNvbG9yKENvbG9yOjpibGFjayk7Ci0gICAg
ICAgICAgICAgICAgbWFza0ltYWdlQ29udGV4dC5zZXRTdHJva2VUaGlja25lc3MoYy0+c3Ryb2tl
VGhpY2tuZXNzKCkpOwotICAgICAgICAgICAgfQorICAgICAgICBhdXRvJiBtYXNrSW1hZ2VDb250
ZXh0ID0gbWFza0ltYWdlLT5jb250ZXh0KCk7CisgICAgICAgIAorICAgICAgICBpZiAoZmlsbCkK
KyAgICAgICAgICAgIG1hc2tJbWFnZUNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjpibGFjayk7
CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbWFza0ltYWdlQ29udGV4dC5zZXRTdHJva2VD
b2xvcihDb2xvcjo6YmxhY2spOworICAgICAgICAgICAgbWFza0ltYWdlQ29udGV4dC5zZXRTdHJv
a2VUaGlja25lc3MoYy0+c3Ryb2tlVGhpY2tuZXNzKCkpOworICAgICAgICB9CiAKLSAgICAgICAg
ICAgIG1hc2tJbWFnZUNvbnRleHQuc2V0VGV4dERyYXdpbmdNb2RlKGZpbGwgPyBUZXh0RHJhd2lu
Z01vZGU6OkZpbGwgOiBUZXh0RHJhd2luZ01vZGU6OlN0cm9rZSk7CisgICAgICAgIG1hc2tJbWFn
ZUNvbnRleHQuc2V0VGV4dERyYXdpbmdNb2RlKGZpbGwgPyBUZXh0RHJhd2luZ01vZGU6OkZpbGwg
OiBUZXh0RHJhd2luZ01vZGU6OlN0cm9rZSk7CiAKLSAgICAgICAgICAgIGlmICh1c2VNYXhXaWR0
aCkgewotICAgICAgICAgICAgICAgIG1hc2tJbWFnZUNvbnRleHQudHJhbnNsYXRlKGxvY2F0aW9u
IC0gbWFza1JlY3QubG9jYXRpb24oKSk7Ci0gICAgICAgICAgICAgICAgLy8gV2UgZHJhdyB3aGVu
IGZvbnRXaWR0aCBpcyAwIHNvIGNvbXBvc2l0aW5nIG9wZXJhdGlvbnMgKGVnLCBhICJjb3B5IiBv
cCkgc3RpbGwgd29yay4KLSAgICAgICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LnNjYWxlKEZs
b2F0U2l6ZSgoZm9udFdpZHRoID4gMCA/ICh3aWR0aCAvIGZvbnRXaWR0aCkgOiAwKSwgMSkpOwot
ICAgICAgICAgICAgICAgIGZvbnRQcm94eS5kcmF3QmlkaVRleHQobWFza0ltYWdlQ29udGV4dCwg
dGV4dFJ1biwgRmxvYXRQb2ludCgwLCAwKSwgRm9udENhc2NhZGU6OlVzZUZhbGxiYWNrSWZGb250
Tm90UmVhZHkpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBtYXNrSW1h
Z2VDb250ZXh0LnRyYW5zbGF0ZSgtbWFza1JlY3QubG9jYXRpb24oKSk7Ci0gICAgICAgICAgICAg
ICAgZm9udFByb3h5LmRyYXdCaWRpVGV4dChtYXNrSW1hZ2VDb250ZXh0LCB0ZXh0UnVuLCBsb2Nh
dGlvbiwgRm9udENhc2NhZGU6OlVzZUZhbGxiYWNrSWZGb250Tm90UmVhZHkpOwotICAgICAgICAg
ICAgfQotICAgICAgICB9OwotCi0gICAgICAgIC8vIEZJWE1FOiBIYW5kbGluZyBncmFkaWVudHMg
YW5kIHBhdHRlcm5zIGJ5IHBhaW50aW5nIHRoZSB0ZXh0IGludG8gYSBtYXNrIGlzIHByb2JhYmx5
IHRoZSB3cm9uZyB0aGluZyB0byBkbyBpbiB0aGUgcHJlc2VuY2Ugb2YgY29sb3IgZ2x5cGhzLgot
ICAgICAgICBpZiAoYy0+Y2xpcFRvRHJhd2luZ0NvbW1hbmRzKG1hc2tSZWN0LCBjb2xvclNwYWNl
KCksIFdURk1vdmUocGFpbnRNYXNrSW1hZ2UpKSA9PSBHcmFwaGljc0NvbnRleHQ6OkNsaXBUb0Ry
YXdpbmdDb21tYW5kc1Jlc3VsdDo6RmFpbGVkVG9DcmVhdGVJbWFnZUJ1ZmZlcikKLSAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgaWYgKHVzZU1heFdpZHRoKSB7CisgICAgICAgICAgICBtYXNr
SW1hZ2VDb250ZXh0LnRyYW5zbGF0ZShsb2NhdGlvbiAtIG1hc2tSZWN0LmxvY2F0aW9uKCkpOwor
ICAgICAgICAgICAgLy8gV2UgZHJhdyB3aGVuIGZvbnRXaWR0aCBpcyAwIHNvIGNvbXBvc2l0aW5n
IG9wZXJhdGlvbnMgKGVnLCBhICJjb3B5IiBvcCkgc3RpbGwgd29yay4KKyAgICAgICAgICAgIG1h
c2tJbWFnZUNvbnRleHQuc2NhbGUoRmxvYXRTaXplKChmb250V2lkdGggPiAwID8gKHdpZHRoIC8g
Zm9udFdpZHRoKSA6IDApLCAxKSk7CisgICAgICAgICAgICBmb250UHJveHkuZHJhd0JpZGlUZXh0
KG1hc2tJbWFnZUNvbnRleHQsIHRleHRSdW4sIEZsb2F0UG9pbnQoMCwgMCksIEZvbnRDYXNjYWRl
OjpVc2VGYWxsYmFja0lmRm9udE5vdFJlYWR5KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIG1hc2tJbWFnZUNvbnRleHQudHJhbnNsYXRlKC1tYXNrUmVjdC5sb2NhdGlvbigpKTsKKyAg
ICAgICAgICAgIGZvbnRQcm94eS5kcmF3QmlkaVRleHQobWFza0ltYWdlQ29udGV4dCwgdGV4dFJ1
biwgbG9jYXRpb24sIEZvbnRDYXNjYWRlOjpVc2VGYWxsYmFja0lmRm9udE5vdFJlYWR5KTsKKyAg
ICAgICAgfQogCisgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigq
Yyk7CisgICAgICAgIGMtPmNsaXBUb0ltYWdlQnVmZmVyKCptYXNrSW1hZ2UsIG1hc2tSZWN0KTsK
ICAgICAgICAgZHJhd1N0eWxlLmFwcGx5RmlsbENvbG9yKCpjKTsKICAgICAgICAgYy0+ZmlsbFJl
Y3QobWFza1JlY3QpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAppbmRleCA4OTRiNWNjZTQyMTFk
YjFkZmUyZDQ2Y2FmMGY2NWM0NDIxYTUxYTRkLi5iMWJmZjQ0NDNlNGE1Y2Q3Nzk1Yjc3ZGIwNGZl
MjIyYWY5Mzg1OGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKQEAgLTM5MCw2ICszOTAsMTEgQEAgYm9vbCBHcmFwaGlj
c0NvbnRleHQ6Omhhc1BsYXRmb3JtQ29udGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuICEhbV9kYXRh
OwogfQogCitJbWFnZUJ1ZmZlciogR3JhcGhpY3NDb250ZXh0Ojpvd25lckltYWdlQnVmZmVyKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gaW1wbCgpID8gaW1wbCgpLT5vd25lckltYWdlQnVmZmVyKCkg
OiBudWxscHRyOworfQorCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2F2ZSgpCiB7CiAgICAgaWYg
KHBhaW50aW5nRGlzYWJsZWQoKSkKQEAgLTg4MywyNSArODg4LDYgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OmNsaXBPdXRSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByZWN0KQog
ICAgIGNsaXBPdXQocGF0aCk7CiB9CiAKLUdyYXBoaWNzQ29udGV4dDo6Q2xpcFRvRHJhd2luZ0Nv
bW1hbmRzUmVzdWx0IEdyYXBoaWNzQ29udGV4dDo6Y2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0
IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNl
LCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYmIGRyYXdpbmdGdW5jdGlvbikKLXsK
LSAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQotICAgICAgICByZXR1cm4gQ2xpcFRvRHJhd2lu
Z0NvbW1hbmRzUmVzdWx0OjpTdWNjZXNzOwotCi0gICAgaWYgKG1faW1wbCkgewotICAgICAgICBt
X2ltcGwtPmNsaXBUb0RyYXdpbmdDb21tYW5kcyhkZXN0aW5hdGlvbiwgY29sb3JTcGFjZSwgV1RG
TW92ZShkcmF3aW5nRnVuY3Rpb24pKTsKLSAgICAgICAgcmV0dXJuIENsaXBUb0RyYXdpbmdDb21t
YW5kc1Jlc3VsdDo6U3VjY2VzczsKLSAgICB9Ci0KLSAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1h
Z2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoZGVzdGluYXRpb24uc2l6ZSgpLCBjb2xv
clNwYWNlLCAqdGhpcyk7Ci0gICAgaWYgKCFpbWFnZUJ1ZmZlcikKLSAgICAgICAgcmV0dXJuIENs
aXBUb0RyYXdpbmdDb21tYW5kc1Jlc3VsdDo6RmFpbGVkVG9DcmVhdGVJbWFnZUJ1ZmZlcjsKLQot
ICAgIGRyYXdpbmdGdW5jdGlvbihpbWFnZUJ1ZmZlci0+Y29udGV4dCgpKTsKLSAgICBjbGlwVG9J
bWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIsIGRlc3RpbmF0aW9uKTsKLSAgICByZXR1cm4gQ2xpcFRv
RHJhd2luZ0NvbW1hbmRzUmVzdWx0OjpTdWNjZXNzOwotfQotCiB2b2lkIEdyYXBoaWNzQ29udGV4
dDo6Y2xpcFRvSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImIGltYWdlQnVmZmVyLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RpbmF0aW9uUmVjdCkKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQu
aAppbmRleCBjNzhhZjdlMjVkZGI1NDE0M2NlYjU5YTExZmZmYzIzYWFhMzQ3MTY3Li5jNWU2MTM2
MmUwMDI4ZjE5NjMwZjYyYzRmYmNiMjc0ODdjZDAwMmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApAQCAtMjg0LDYgKzI4NCw4
IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFzUGxhdGZvcm1Db250ZXh0
KCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgUGxhdGZvcm1HcmFwaGljc0NvbnRleHQqIHBs
YXRmb3JtQ29udGV4dCgpIGNvbnN0OworICAgIEdyYXBoaWNzQ29udGV4dEltcGwqIGltcGwoKSBj
b25zdCB7IHJldHVybiBtX2ltcGwuZ2V0KCk7IH0KKyAgICBJbWFnZUJ1ZmZlciogb3duZXJJbWFn
ZUJ1ZmZlcigpIGNvbnN0OwogCiAgICAgYm9vbCBwYWludGluZ0Rpc2FibGVkKCkgY29uc3QgeyBy
ZXR1cm4gIW1fZGF0YSAmJiAhbV9pbXBsOyB9CiAgICAgYm9vbCBwZXJmb3JtaW5nUGFpbnRJbnZh
bGlkYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3BhaW50SW52YWxpZGF0aW9uUmVhc29ucyAhPSBQ
YWludEludmFsaWRhdGlvblJlYXNvbnM6Ok5vbmU7IH0KQEAgLTQwOSw5ICs0MTEsNiBAQCBwdWJs
aWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGlwUGF0aChjb25zdCBQYXRoJiwgV2luZFJ1
bGUgPSBXaW5kUnVsZTo6RXZlbk9kZCk7CiAgICAgdm9pZCBjbGlwVG9JbWFnZUJ1ZmZlcihJbWFn
ZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYpOwogCi0gICAgZW51bSBjbGFzcyBDbGlwVG9EcmF3
aW5nQ29tbWFuZHNSZXN1bHQgOiBib29sIHsgU3VjY2VzcywgRmFpbGVkVG9DcmVhdGVJbWFnZUJ1
ZmZlciB9OwotICAgIENsaXBUb0RyYXdpbmdDb21tYW5kc1Jlc3VsdCBjbGlwVG9EcmF3aW5nQ29t
bWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgRGVzdGluYXRpb25Db2xvclNwYWNl
LCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYmKTsKLSAgICAKICAgICBJbnRSZWN0
IGNsaXBCb3VuZHMoKSBjb25zdDsKIAogICAgIHZvaWQgc2V0VGV4dERyYXdpbmdNb2RlKFRleHRE
cmF3aW5nTW9kZUZsYWdzKTsKQEAgLTU4OSw4ICs1ODgsNiBAQCBwdWJsaWM6CiAKICAgICBib29s
IHN1cHBvcnRzSW50ZXJuYWxMaW5rcygpIGNvbnN0OwogCi0gICAgR3JhcGhpY3NDb250ZXh0SW1w
bCogaW1wbCgpIHsgcmV0dXJuIG1faW1wbC5nZXQoKTsgfQotCiBwcml2YXRlOgogICAgIHZvaWQg
cGxhdGZvcm1Jbml0KFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0Kik7CiAgICAgdm9pZCBwbGF0Zm9y
bURlc3Ryb3koKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0SW1wbC5jcHAKaW5kZXggMTE2ZWNiZTQ4N2YxMjczMGM5MzMyZmEx
MTA3NmMyNjc5MTc3ZmU2Yi4uZjQ0OTE4NzdhZjg1YjcxNTRhNjc0NmExNzI1YjAyOWYzZGRjMzk5
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0SW1wbC5jcHAKQEAgLTI4LDggKzI4LDkgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1HcmFwaGljc0NvbnRleHRJbXBsOjpHcmFwaGljc0NvbnRleHRJbXBsKEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JikKK0dyYXBoaWNzQ29udGV4dEltcGw6OkdyYXBoaWNzQ29udGV4dEltcGwoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBJbWFnZUJ1ZmZlciogb3duZXJJbWFnZUJ1ZmZlcikKICAgICA6IG1fZ3Jh
cGhpY3NDb250ZXh0KGNvbnRleHQpCisgICAgLCBtX293bmVySW1hZ2VCdWZmZXIob3duZXJJbWFn
ZUJ1ZmZlcikKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oCmluZGV4IGViNDc5NmFhMTQ3NmVhZTM5NzYyNGFk
ZDQ4OGZjYmMxOTY1MTUwNDQuLjAyZDU4Mjg4NjJkNzVjOTU5NjI5Y2UzZTRhZTdhM2IzNjg2NTYz
NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHRJbXBsLmgKQEAgLTMzLDEwICszMywxMSBAQCBjbGFzcyBHcmFwaGljc0NvbnRl
eHRJbXBsIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShHcmFwaGljc0NvbnRleHRJbXBsKTsKIHB1YmxpYzoKLSAgICBHcmFwaGljc0NvbnRl
eHRJbXBsKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYpOworICAgIEdyYXBoaWNzQ29udGV4dEltcGwoR3JhcGhpY3ND
b250ZXh0JiwgSW1hZ2VCdWZmZXIqID0gbnVsbHB0cik7CiAgICAgdmlydHVhbCB+R3JhcGhpY3ND
b250ZXh0SW1wbCgpOwogCiAgICAgR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQoKSBj
b25zdCB7IHJldHVybiBtX2dyYXBoaWNzQ29udGV4dDsgfQorICAgIEltYWdlQnVmZmVyKiBvd25l
ckltYWdlQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9vd25lckltYWdlQnVmZmVyOyB9CiAKICAg
ICB2aXJ0dWFsIGJvb2wgaGFzUGxhdGZvcm1Db250ZXh0KCkgY29uc3QgPSAwOwogICAgIHZpcnR1
YWwgYm9vbCBjYW5EcmF3SW1hZ2VCdWZmZXIoY29uc3QgSW1hZ2VCdWZmZXImKSBjb25zdCB7IHJl
dHVybiB0cnVlOyB9CkBAIC0xMDQsNyArMTA1LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBjbGlwUGF0aChjb25zdCBQYXRoJiwgV2luZFJ1bGUpID0gMDsKICAgICB2aXJ0dWFsIEludFJl
Y3QgY2xpcEJvdW5kcygpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2xpcFRvSW1hZ2VCdWZmZXIo
SW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGNs
aXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UsIEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3NDb250ZXh0Jik+JiYgZHJhd2lu
Z0Z1bmN0aW9uKSA9IDA7CiAjaWYgRU5BQkxFKFZJREVPKQogICAgIHZpcnR1YWwgdm9pZCBwYWlu
dEZyYW1lRm9yTWVkaWEoTWVkaWFQbGF5ZXImLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9u
KSA9IDA7CiAgICAgdmlydHVhbCBib29sIGNhblBhaW50RnJhbWVGb3JNZWRpYShjb25zdCBNZWRp
YVBsYXllciYpIGNvbnN0ID0gMDsKQEAgLTExNyw2ICsxMTcsNyBAQCBwdWJsaWM6CiBwcml2YXRl
OgogICAgIGZyaWVuZCBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiAgICAgR3JhcGhpY3NDb250ZXh0
JiBtX2dyYXBoaWNzQ29udGV4dDsKKyAgICBJbWFnZUJ1ZmZlciogbV9vd25lckltYWdlQnVmZmVy
IHsgbnVsbHB0ciB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwCmluZGV4IDcwZDUzYzNk
MGJhZDBhZGQ5YWJhOGYxMTc1MjI2ZTUxMTcxMWQ0MGYuLjdhMzFhYjZkODRiOWYxMjQ0MDUzY2Ez
YmUyN2EwMGM0ZWY5Y2Y5NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZUJ1ZmZlci5jcHAKQEAgLTgxLDcgKzgxLDEwIEBAIFJlZlB0cjxJbWFnZUJ1ZmZl
cj4gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBz
aXplLCBjCiAKICAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyOwogCi0gICAgaWYg
KGNvbnRleHQucmVuZGVyaW5nTW9kZSgpID09IFJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkKQor
ICAgIGlmIChhdXRvKiBvd25lckltYWdlQnVmZmVyID0gY29udGV4dC5vd25lckltYWdlQnVmZmVy
KCkpCisgICAgICAgIGltYWdlQnVmZmVyID0gb3duZXJJbWFnZUJ1ZmZlci0+Y3JlYXRlQ29tcGF0
aWJsZUJ1ZmZlcihzaXplKTsKKworICAgIGlmICghaW1hZ2VCdWZmZXIgJiYgY29udGV4dC5yZW5k
ZXJpbmdNb2RlKCkgPT0gUmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQpCiAgICAgICAgIGltYWdl
QnVmZmVyID0gQWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNjYWxlZFNpemUsIGNvbnRl
eHQpOwogICAgIAogICAgIGlmICghaW1hZ2VCdWZmZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAppbmRleCAwYjZlMDJhMDBhZGVjYWFjYmQ5NDVj
MTAzNTUyNjI2ZDQ3NzA1ZTg0Li5kOGUzNTU4ODA5ZTNhMjcyNzBhNDU4NjFkNmFlOWJhODY3ZTI1
MGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1
ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVy
LmgKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA2IE5pa29sYXMgWmlt
bWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgotICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LTIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEw
IFRvcmNoIE1vYmlsZSAoQmVpamluZykgQ28uIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKQEAgLTM5LDkgKzM5LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5h
bWVzcGFjZSBEaXNwbGF5TGlzdCB7CiBjbGFzcyBEaXNwbGF5TGlzdDsKIGNsYXNzIERyYXdpbmdD
b250ZXh0OworZW51bSBjbGFzcyBJdGVtVHlwZSA6IHVpbnQ4X3Q7CiBzdHJ1Y3QgSXRlbUJ1ZmZl
ckhhbmRsZTsKIH0KIAorY2xhc3MgRm9udDsKKwogY2xhc3MgSW1hZ2VCdWZmZXIgOiBwdWJsaWMg
VGhyZWFkU2FmZVJlZkNvdW50ZWQ8SW1hZ2VCdWZmZXI+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8
SW1hZ2VCdWZmZXI+IHsKIHB1YmxpYzoKICAgICAvLyBXaWxsIHJldHVybiBhIG51bGwgcG9pbnRl
ciBvbiBhbGxvY2F0aW9uIGZhaWx1cmUuCkBAIC02NCw2ICs2Nyw4IEBAIHB1YmxpYzoKICAgICAK
ICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5JbWFnZUJ1ZmZlcigpID0gZGVmYXVsdDsKIAor
ICAgIHZpcnR1YWwgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGNv
bnN0IEZsb2F0U2l6ZSYpIHsgcmV0dXJuIG51bGxwdHI7IH0KKwogICAgIHZpcnR1YWwgdm9pZCBz
ZXRCYWNrZW5kKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckJhY2tlbmQ+JiYpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgY2xlYXJCYWNrZW5kKCkgPSAwOwogICAgIHZpcnR1YWwgSW1hZ2VCdWZm
ZXJCYWNrZW5kKiBlbnN1cmVCYWNrZW5kQ3JlYXRlZCgpIGNvbnN0ID0gMDsKQEAgLTc3LDYgKzgy
LDEwIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgRGlzcGxheUxpc3Q6OkRyYXdpbmdDb250ZXh0
KiBkcmF3aW5nQ29udGV4dCgpIHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICB2aXJ0dWFsIGJvb2wg
cHJlZmVyc1ByZXBhcmF0aW9uRm9yRGlzcGxheSgpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmly
dHVhbCBib29sIGNhbkFwcGVuZEl0ZW1PZlR5cGUoRGlzcGxheUxpc3Q6Okl0ZW1UeXBlKSB7IHJl
dHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIGNhbkRyYXdJbWFnZUJ1ZmZlcihjb25zdCBJ
bWFnZUJ1ZmZlciYpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIHZvaWQgY2Fj
aGVOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBjYWNoZUZv
bnQoRm9udCYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBmbHVzaERyYXdpbmdDb250ZXh0KCkgeyB9
CiAgICAgdmlydHVhbCB2b2lkIGZsdXNoRHJhd2luZ0NvbnRleHRBc3luYygpIHsgfQogICAgIHZp
cnR1YWwgdm9pZCBkaWRGbHVzaChEaXNwbGF5TGlzdDo6Rmx1c2hJZGVudGlmaWVyKSB7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNz
Q29udGV4dEltcGxDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwCmluZGV4IDRlZGMxZDBmMDMwNWY5NjA2
NjY2OTA4Y2UyYzZjNTMzM2M2M2ZiZmEuLjg3NTM4YTVmYjdhNzI1Mjk0ZTVlZTMxMDYyNTA1M2Yy
YzNjZmIyZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcApAQCAtNTks
NyArNTksNyBAQCBHcmFwaGljc0NvbnRleHQ6OkdyYXBoaWNzQ29udGV4dEltcGxGYWN0b3J5IEdy
YXBoaWNzQ29udGV4dEltcGxDYWlybzo6Y3JlYXRlRmFjdAogfQogCiBHcmFwaGljc0NvbnRleHRJ
bXBsQ2Fpcm86OkdyYXBoaWNzQ29udGV4dEltcGxDYWlybyhHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQpCi0gICAgOiBHcmFwaGlj
c0NvbnRleHRJbXBsKGNvbnRleHQsIEZsb2F0UmVjdCB7IH0sIEFmZmluZVRyYW5zZm9ybSB7IH0p
CisgICAgOiBHcmFwaGljc0NvbnRleHRJbXBsKGNvbnRleHQpCiAgICAgLCBtX3BsYXRmb3JtQ29u
dGV4dChwbGF0Zm9ybUNvbnRleHQpCiAgICAgLCBtX3ByaXZhdGUobWFrZVVuaXF1ZTxHcmFwaGlj
c0NvbnRleHRQbGF0Zm9ybVByaXZhdGU+KG1fcGxhdGZvcm1Db250ZXh0KSkKIHsKQEAgLTY4LDcg
KzY4LDcgQEAgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpHcmFwaGljc0NvbnRleHRJbXBsQ2Fp
cm8oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBQbGEKIH0KIAogR3JhcGhpY3NDb250ZXh0SW1w
bENhaXJvOjpHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjYWlyb190KiBjYWlyb0NvbnRleHQpCi0gICAgOiBHcmFwaGljc0NvbnRleHRJbXBsKGNvbnRl
eHQsIEZsb2F0UmVjdCB7IH0sIEFmZmluZVRyYW5zZm9ybSB7IH0pCisgICAgOiBHcmFwaGljc0Nv
bnRleHRJbXBsKGNvbnRleHQpCiAgICAgLCBtX293bmVkUGxhdGZvcm1Db250ZXh0KG1ha2VVbmlx
dWU8UGxhdGZvcm1Db250ZXh0Q2Fpcm8+KGNhaXJvQ29udGV4dCkpCiAgICAgLCBtX3BsYXRmb3Jt
Q29udGV4dCgqbV9vd25lZFBsYXRmb3JtQ29udGV4dCkKICAgICAsIG1fcHJpdmF0ZShtYWtlVW5p
cXVlPEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZT4obV9wbGF0Zm9ybUNvbnRleHQpKQpA
QCAtNDE0LDExICs0MTQsNiBAQCBGbG9hdFJlY3QgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpy
b3VuZFRvRGV2aWNlUGl4ZWxzKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgRwogICAgIHJldHVybiBD
YWlybzo6U3RhdGU6OnJvdW5kVG9EZXZpY2VQaXhlbHMobV9wbGF0Zm9ybUNvbnRleHQsIHJlY3Qp
OwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6Y2xpcFRvRHJhd2luZ0NvbW1h
bmRzKGNvbnN0IEZsb2F0UmVjdCYsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgRnVuY3Rpb248dm9p
ZChHcmFwaGljc0NvbnRleHQmKT4mJikKLXsKLSAgICAvLyBGSVhNRTogTm90IGltcGxlbWVudGVk
LgotfQotCiAjaWYgRU5BQkxFKFZJREVPKQogdm9pZCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86
OnBhaW50RnJhbWVGb3JNZWRpYShNZWRpYVBsYXllciYsIGNvbnN0IEZsb2F0UmVjdCYpCiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGlj
c0NvbnRleHRJbXBsQ2Fpcm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5oCmluZGV4IDkyYTFlZWUzOTA3M2EyNmUwOTdi
OTZjNzQ2NTNmYTYxNmY5MjY1MjIuLjE0ZTUwMmQwMmQ5YzYzMGZlNWZkZmQxMTRiZTZhM2JjODg3
NWUwNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5oCkBAIC0xMDQsNyArMTA0
LDYgQEAgcHVibGljOgogICAgIHZvaWQgY2xpcFBhdGgoY29uc3QgUGF0aCYsIFdpbmRSdWxlKSBv
dmVycmlkZTsKICAgICBJbnRSZWN0IGNsaXBCb3VuZHMoKSBvdmVycmlkZTsKICAgICB2b2lkIGNs
aXBUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5h
dGlvbiwgRGVzdGluYXRpb25Db2xvclNwYWNlLCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4
dCYpPiYmKSBvdmVycmlkZTsKICNpZiBFTkFCTEUoVklERU8pCiAgICAgdm9pZCBwYWludEZyYW1l
Rm9yTWVkaWEoTWVkaWFQbGF5ZXImLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uKSBvdmVy
cmlkZTsKICAgICBib29sIGNhblBhaW50RnJhbWVGb3JNZWRpYShjb25zdCBNZWRpYVBsYXllciYp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5jcHAK
aW5kZXggNTE0NTAyZTY5NWJmNjA1OGIxMzk5YTJhMzhjNWZmYWY1MDZmZDAxNi4uZmZlNmVjYWRk
MmU2NjQ1OTk1MTRjZDljMjk3NDY3ZmZkZjlhMGZiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmNw
cApAQCAtODEsNyArODEsNiBAQCBSZXRhaW5QdHI8Q0dDb2xvclNwYWNlUmVmPiBJbWFnZUJ1ZmZl
ckNHQmFja2VuZDo6Y29udGV4dENvbG9yU3BhY2UoY29uc3QgR3JhcGhpYwogCiB2b2lkIEltYWdl
QnVmZmVyQ0dCYWNrZW5kOjpzZXR1cENvbnRleHQoKSBjb25zdAogewotICAgIC8vIFRoZSBpbml0
aWFsIENUTSBtYXRjaGVzIERpc3BsYXlMaXN0OjpSZWNvcmRlcjo6Y2xpcFRvRHJhd2luZ0NvbW1h
bmRzKCkncyBpbml0aWFsIENUTS4KICAgICBjb250ZXh0KCkuc2NhbGUoRmxvYXRTaXplKDEsIC0x
KSk7CiAgICAgY29udGV4dCgpLnRyYW5zbGF0ZSgwLCAtYmFja2VuZFNpemUoKS5oZWlnaHQoKSk7
CiAgICAgY29udGV4dCgpLmFwcGx5RGV2aWNlU2NhbGVGYWN0b3IocmVzb2x1dGlvblNjYWxlKCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAKaW5kZXggYTZmYjY4Zjg5NzA3OWYyMmIyZTY4Njcz
MWRmZmYwODQwMzZiMjdmNi4uY2U3NjRjMWJiZmEzNjk4NWQ3MjdkM2U1NWZmNDU2YzAxYzhjY2Zh
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwCkBAIC0yNDQsMTAgKzI0NCw2IEBAIHZvaWQg
RGlzcGxheUxpc3Q6OmFwcGVuZChJdGVtSGFuZGxlIGl0ZW0pCiAgICAgICAgIHJldHVybiBhcHBl
bmQ8Q2xpcE91dFRvUGF0aD4oaXRlbS5nZXQ8Q2xpcE91dFRvUGF0aD4oKSk7CiAgICAgY2FzZSBJ
dGVtVHlwZTo6Q2xpcFBhdGg6CiAgICAgICAgIHJldHVybiBhcHBlbmQ8Q2xpcFBhdGg+KGl0ZW0u
Z2V0PENsaXBQYXRoPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpCZWdpbkNsaXBUb0RyYXdpbmdD
b21tYW5kczoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5k
cz4oaXRlbS5nZXQ8QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM+KCkpOwotICAgIGNhc2UgSXRl
bVR5cGU6OkVuZENsaXBUb0RyYXdpbmdDb21tYW5kczoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxF
bmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM+KGl0ZW0uZ2V0PEVuZENsaXBUb0RyYXdpbmdDb21tYW5k
cz4oKSk7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0dseXBoczoKICAgICAgICAgcmV0dXJuIGFw
cGVuZDxEcmF3R2x5cGhzPihpdGVtLmdldDxEcmF3R2x5cGhzPigpKTsKICAgICBjYXNlIEl0ZW1U
eXBlOjpEcmF3SW1hZ2VCdWZmZXI6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RE
cmF3aW5nQ29udGV4dC5jcHAKaW5kZXggNTRkODU0NzEyM2Y4OTQ3ZDZmMmZhY2Q3ZmNhNmY5OTUx
ODFhMjY3MS4uMDU2MzIzNzlkZmJlZDE0NjU3YmM4NWZlZDUxMTVlZjgwNDM3ZjNmMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0RHJhd2luZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmNwcApAQCAtMzMs
OSArMzMsOSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsK
IAotRHJhd2luZ0NvbnRleHQ6OkRyYXdpbmdDb250ZXh0KGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNh
bFNpemUsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgaW5pdGlhbENUTSwgUmVjb3JkZXI6OkRlbGVn
YXRlKiBkZWxlZ2F0ZSkKK0RyYXdpbmdDb250ZXh0OjpEcmF3aW5nQ29udGV4dChjb25zdCBGbG9h
dFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGluaXRpYWxDVE0sIElt
YWdlQnVmZmVyKiBpbWFnZUJ1ZmZlcikKICAgICA6IG1fY29udGV4dChbJl0oR3JhcGhpY3NDb250
ZXh0JiBkaXNwbGF5TGlzdENvbnRleHQpIHsKLSAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVj
b3JkZXI+KGRpc3BsYXlMaXN0Q29udGV4dCwgbV9kaXNwbGF5TGlzdCwgR3JhcGhpY3NDb250ZXh0
U3RhdGUoKSwgRmxvYXRSZWN0KHsgfSwgbG9naWNhbFNpemUpLCBpbml0aWFsQ1RNLCBkZWxlZ2F0
ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlY29yZGVyPihkaXNwbGF5TGlzdENvbnRl
eHQsIG1fZGlzcGxheUxpc3QsIEdyYXBoaWNzQ29udGV4dFN0YXRlKCksIEZsb2F0UmVjdCh7IH0s
IGxvZ2ljYWxTaXplKSwgaW5pdGlhbENUTSwgaW1hZ2VCdWZmZXIpOwogICAgIH0pCiB7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuaAppbmRleCBkMzdj
MDczNWJlYjU1NDkyZDkwZmY5ZWNlNGNhNGRiNzk5NWQ1ZjU4Li45NmIxNzExN2YwN2M2OGJjYTAz
ODc3M2EzNTY5ZjU0MmI5ZTNhYjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dERyYXdpbmdDb250ZXh0LmgKQEAgLTM3LDcgKzM3LDcgQEAgY2xhc3MgSW5NZW1vcnlEaXNwbGF5
TGlzdDsKIGNsYXNzIERyYXdpbmdDb250ZXh0IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBEcmF3aW5nQ29udGV4dChjb25zdCBGbG9h
dFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGluaXRpYWxDVE0gPSB7
IH0sIFJlY29yZGVyOjpEZWxlZ2F0ZSogPSBudWxscHRyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBE
cmF3aW5nQ29udGV4dChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mIGluaXRpYWxDVE0gPSB7IH0sIEltYWdlQnVmZmVyKiA9IG51bGxwdHIpOwogCiAg
ICAgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxE
cmF3aW5nQ29udGV4dCY+KCp0aGlzKS5tX2NvbnRleHQ7IH0KICAgICBXRUJDT1JFX0VYUE9SVCBS
ZWNvcmRlciYgcmVjb3JkZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEltYWdlQnVmZmVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJbWFnZUJ1
ZmZlci5oCmluZGV4IGQ3Y2JhMjA3ZWJjNTViYTczYjhmZjA0YjM4YjQxYzc1ZDVlNzA5ZmEuLmFl
ZGQ3ZWI5ZTM3MjNjNDljNzE1NWZhM2U0YzhiMjc0NGYwMzE5NjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEltYWdl
QnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaApAQCAtNTksOSArNTksOSBAQCBwdWJsaWM6CiAg
ICAgICAgIG1fZHJhd2luZ0NvbnRleHQuZGlzcGxheUxpc3QoKS5zZXRJdGVtQnVmZmVyUmVhZGlu
Z0NsaWVudChtX3JlYWRpbmdDbGllbnQuZ2V0KCkpOwogICAgIH0KIAotICAgIEltYWdlQnVmZmVy
KGNvbnN0IEltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVycyYgcGFyYW1ldGVycywgUmVjb3Jk
ZXI6OkRlbGVnYXRlKiBkZWxlZ2F0ZSA9IG51bGxwdHIpCisgICAgSW1hZ2VCdWZmZXIoY29uc3Qg
SW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogICAgICAgICA6IEJh
c2VDb25jcmV0ZUltYWdlQnVmZmVyKHBhcmFtZXRlcnMpCi0gICAgICAgICwgbV9kcmF3aW5nQ29u
dGV4dChsb2dpY2FsU2l6ZSgpLCBiYXNlVHJhbnNmb3JtKCksIGRlbGVnYXRlKQorICAgICAgICAs
IG1fZHJhd2luZ0NvbnRleHQobG9naWNhbFNpemUoKSwgYmFzZVRyYW5zZm9ybSgpLCB0aGlzKQog
ICAgICAgICAsIG1fd3JpdGluZ0NsaWVudChXVEY6Om1ha2VVbmlxdWU8SW5NZW1vcnlEaXNwbGF5
TGlzdDo6V3JpdGluZ0NsaWVudD4oKSkKICAgICAgICAgLCBtX3JlYWRpbmdDbGllbnQoV1RGOjpt
YWtlVW5pcXVlPEluTWVtb3J5RGlzcGxheUxpc3Q6OlJlYWRpbmdDbGllbnQ+KCkpCiAgICAgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcAppbmRleCA3YTZiYmM1
NjQ4YzE1YTkyMGQ5MGVmMzAxNjQ5MzU4Y2ZjYWNiNjI5Li4wNTNkYmM4ZGMwOTczYTNlNmI4ZDJk
MjQ1MjNhMjEwNzE5MDNlNzg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVt
QnVmZmVyLmNwcApAQCAtMTExLDEyICsxMTEsNiBAQCB2b2lkIEl0ZW1IYW5kbGU6OmFwcGx5KEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCkKICAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwUGF0aDoKICAg
ICAgICAgZ2V0PENsaXBQYXRoPigpLmFwcGx5KGNvbnRleHQpOwogICAgICAgICByZXR1cm47Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM6Ci0gICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6
RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdHbHlwaHM6CiAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm47CkBAIC0zMDYsOSArMzAwLDYg
QEAgdm9pZCBJdGVtSGFuZGxlOjpkZXN0cm95KCkKICAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6
OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8QXBwbHlTdHJva2VQYXR0ZXJuPjo6dmFsdWUpOwog
ICAgICAgICByZXR1cm47CiAjZW5kaWYKLSAgICBjYXNlIEl0ZW1UeXBlOjpCZWdpbkNsaXBUb0Ry
YXdpbmdDb21tYW5kczoKLSAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9k
ZXN0cnVjdGlibGU8QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM+Ojp2YWx1ZSk7Ci0gICAgICAg
IHJldHVybjsKICAgICBjYXNlIEl0ZW1UeXBlOjpCZWdpblRyYW5zcGFyZW5jeUxheWVyOgogICAg
ICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxCZWdpblRy
YW5zcGFyZW5jeUxheWVyPjo6dmFsdWUpOwogICAgICAgICByZXR1cm47CkBAIC0zNTEsOSArMzQy
LDYgQEAgdm9pZCBJdGVtSGFuZGxlOjpkZXN0cm95KCkKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3
UmVjdDoKICAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGli
bGU8RHJhd1JlY3Q+Ojp2YWx1ZSk7CiAgICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBl
OjpFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM6Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjpp
c190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPEVuZENsaXBUb0RyYXdpbmdDb21tYW5kcz46OnZhbHVl
KTsKLSAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgSXRlbVR5cGU6OkVuZFRyYW5zcGFyZW5jeUxh
eWVyOgogICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJs
ZTxFbmRUcmFuc3BhcmVuY3lMYXllcj46OnZhbHVlKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNTIy
LDggKzUxMCw2IEBAIGJvb2wgSXRlbUhhbmRsZTo6c2FmZUNvcHkoSXRlbUhhbmRsZSBkZXN0aW5h
dGlvbikgY29uc3QKICAgICBjYXNlIEl0ZW1UeXBlOjpBcHBseVN0cm9rZVBhdHRlcm46CiAgICAg
ICAgIHJldHVybiBjb3B5SW50bzxBcHBseVN0cm9rZVBhdHRlcm4+KGl0ZW1PZmZzZXQsICp0aGlz
KTsKICNlbmRpZgotICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRz
OgotICAgICAgICByZXR1cm4gY29weUludG88QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM+KGl0
ZW1PZmZzZXQsICp0aGlzKTsKICAgICBjYXNlIEl0ZW1UeXBlOjpCZWdpblRyYW5zcGFyZW5jeUxh
eWVyOgogICAgICAgICByZXR1cm4gY29weUludG88QmVnaW5UcmFuc3BhcmVuY3lMYXllcj4oaXRl
bU9mZnNldCwgKnRoaXMpOwogICAgIGNhc2UgSXRlbVR5cGU6OkNsZWFyUmVjdDoKQEAgLTU0Niw4
ICs1MzIsNiBAQCBib29sIEl0ZW1IYW5kbGU6OnNhZmVDb3B5KEl0ZW1IYW5kbGUgZGVzdGluYXRp
b24pIGNvbnN0CiAgICAgICAgIHJldHVybiBjb3B5SW50bzxEcmF3TGluZT4oaXRlbU9mZnNldCwg
KnRoaXMpOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdSZWN0OgogICAgICAgICByZXR1cm4gY29w
eUludG88RHJhd1JlY3Q+KGl0ZW1PZmZzZXQsICp0aGlzKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpF
bmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxFbmRDbGlw
VG9EcmF3aW5nQ29tbWFuZHM+KGl0ZW1PZmZzZXQsICp0aGlzKTsKICAgICBjYXNlIEl0ZW1UeXBl
OjpFbmRUcmFuc3BhcmVuY3lMYXllcjoKICAgICAgICAgcmV0dXJuIGNvcHlJbnRvPEVuZFRyYW5z
cGFyZW5jeUxheWVyPihpdGVtT2Zmc2V0LCAqdGhpcyk7CiAgICAgY2FzZSBJdGVtVHlwZTo6Rmls
bEVsbGlwc2U6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5jcHAKaW5kZXgg
MWE2MGVmZjY0OTc5YmZiMGViODhjZWY5YTAzYjc1ZjQ1MWQwNmZlNC4uMDRhMWNlZDI3MWQ5ODI4
OGJmZmIzNDg2YzUwODE3MjIzNWI2N2ViOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dEl0ZW1UeXBlLmNwcApAQCAtNzgsMTAgKzc4LDYgQEAgc3RhdGljIHNpemVfdCBzaXplT2ZJdGVt
SW5CeXRlcyhJdGVtVHlwZSB0eXBlKQogICAgICAgICByZXR1cm4gc2l6ZW9mKENsaXBPdXRUb1Bh
dGgpOwogICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBQYXRoOgogICAgICAgICByZXR1cm4gc2l6ZW9m
KENsaXBQYXRoKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5k
czoKLSAgICAgICAgcmV0dXJuIHNpemVvZihCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcyk7Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOgotICAgICAgICByZXR1
cm4gc2l6ZW9mKEVuZENsaXBUb0RyYXdpbmdDb21tYW5kcyk7CiAgICAgY2FzZSBJdGVtVHlwZTo6
RHJhd0dseXBoczoKICAgICAgICAgcmV0dXJuIHNpemVvZihEcmF3R2x5cGhzKTsKICAgICBjYXNl
IEl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXI6CkBAIC0xODgsOCArMTg0LDYgQEAgYm9vbCBpc0Ry
YXdpbmdJdGVtKEl0ZW1UeXBlIHR5cGUpCiAgICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFRvSW1hZ2VC
dWZmZXI6CiAgICAgY2FzZSBJdGVtVHlwZTo6Q2xpcE91dFRvUGF0aDoKICAgICBjYXNlIEl0ZW1U
eXBlOjpDbGlwUGF0aDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpCZWdpbkNsaXBUb0RyYXdpbmdDb21t
YW5kczoKLSAgICBjYXNlIEl0ZW1UeXBlOjpFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM6CiAgICAg
Y2FzZSBJdGVtVHlwZTo6Q29uY2F0ZW5hdGVDVE06CiAgICAgY2FzZSBJdGVtVHlwZTo6Rmx1c2hD
b250ZXh0OgogICAgIGNhc2UgSXRlbVR5cGU6Ok1ldGFDb21tYW5kQ2hhbmdlRGVzdGluYXRpb25J
bWFnZUJ1ZmZlcjoKQEAgLTMxMCw4ICszMDQsNiBAQCBib29sIGlzSW5saW5lSXRlbShJdGVtVHlw
ZSB0eXBlKQogICAgIGNhc2UgSXRlbVR5cGU6OkNsaXA6CiAgICAgY2FzZSBJdGVtVHlwZTo6Q2xp
cE91dDoKICAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwVG9JbWFnZUJ1ZmZlcjoKLSAgICBjYXNlIEl0
ZW1UeXBlOjpCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kczoKLSAgICBjYXNlIEl0ZW1UeXBlOjpF
bmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM6CiAgICAgY2FzZSBJdGVtVHlwZTo6Q29uY2F0ZW5hdGVD
VE06CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlcjoKICAgICBj
YXNlIEl0ZW1UeXBlOjpEcmF3RWxsaXBzZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVt
VHlwZS5oCmluZGV4IGMzZTFjZWNmMGVjNGJkZDU1NTkxNjc3YWE0MGFhZWRkNjI3MDIyOWIuLmQ1
YzFiM2QxN2FkMDI0YmQxZGMzODFmYzU1MzQwMWQ1Zjc4YTY3ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1U
eXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0SXRlbVR5cGUuaApAQCAtNTEsOCArNTEsNiBAQCBlbnVtIGNsYXNzIEl0ZW1U
eXBlIDogdWludDhfdCB7CiAgICAgQ2xpcFRvSW1hZ2VCdWZmZXIsCiAgICAgQ2xpcE91dFRvUGF0
aCwKICAgICBDbGlwUGF0aCwKLSAgICBCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcywKLSAgICBF
bmRDbGlwVG9EcmF3aW5nQ29tbWFuZHMsCiAgICAgRHJhd0dseXBocywKICAgICBEcmF3SW1hZ2VC
dWZmZXIsCiAgICAgRHJhd05hdGl2ZUltYWdlLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRl
bXMuY3BwCmluZGV4IDFhNGVhNmRlM2I1YThjZTM1ZDhlNzc5ZmNlY2VmYjQ2YjE4MmMwYTMuLjFi
NGM0YWE2ZTgyNTYzYTJmZThiNzVkNDdiZjNjYzYyZGMwZjk1NDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1z
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVtcy5jcHAKQEAgLTM2MywxOSArMzYzLDYgQEAgc3RhdGljIFRleHRTdHJl
YW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IENsaXBQYXRoJiBpdGVtKQogICAg
IHJldHVybiB0czsKIH0KIAotc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVh
bSYgdHMsIGNvbnN0IEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzJiBpdGVtKQotewotICAgIHRz
LmR1bXBQcm9wZXJ0eSgiZGVzdGluYXRpb24iLCBpdGVtLmRlc3RpbmF0aW9uKCkpOwotICAgIHRz
LmR1bXBQcm9wZXJ0eSgiY29sb3Itc3BhY2UiLCBpdGVtLmNvbG9yU3BhY2UoKSk7Ci0gICAgcmV0
dXJuIHRzOwotfQotCi1zdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0
cywgY29uc3QgRW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzJiBpdGVtKQotewotICAgIHRzLmR1bXBQ
cm9wZXJ0eSgiZGVzdGluYXRpb24iLCBpdGVtLmRlc3RpbmF0aW9uKCkpOwotICAgIHJldHVybiB0
czsKLX0KLQogRHJhd0dseXBoczo6RHJhd0dseXBocyhSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIgZm9udElkZW50aWZpZXIsIFZlY3RvcjxHbHlwaEJ1ZmZlckdseXBoLCAxMjg+JiYgZ2x5cGhz
LCBWZWN0b3I8R2x5cGhCdWZmZXJBZHZhbmNlLCAxMjg+JiYgYWR2YW5jZXMsIGNvbnN0IEZsb2F0
UmVjdCYgYm91bmRzLCBjb25zdCBGbG9hdFBvaW50JiBsb2NhbEFuY2hvciwgRm9udFNtb290aGlu
Z01vZGUgc21vb3RoaW5nTW9kZSkKICAgICA6IG1fZm9udElkZW50aWZpZXIoZm9udElkZW50aWZp
ZXIpCiAgICAgLCBtX2dseXBocyhXVEZNb3ZlKGdseXBocykpCkBAIC0xMDc1LDggKzEwNjIsNiBA
QCBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgSXRlbVR5cGUg
dHlwZSkKICAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwVG9JbWFnZUJ1ZmZlcjogdHMgPDwgImNsaXAt
dG8taW1hZ2UtYnVmZmVyIjsgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6Q2xpcE91dFRvUGF0
aDogdHMgPDwgImNsaXAtb3V0LXRvLXBhdGgiOyBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpD
bGlwUGF0aDogdHMgPDwgImNsaXAtcGF0aCI7IGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkJl
Z2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOiB0cyA8PCAiYmVnaW4tY2xpcC10by1kcmF3aW5nLWNv
bW1hbmRzOiI7IGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkVuZENsaXBUb0RyYXdpbmdDb21t
YW5kczogdHMgPDwgImVuZC1jbGlwLXRvLWRyYXdpbmctY29tbWFuZHMiOyBicmVhazsKICAgICBj
YXNlIEl0ZW1UeXBlOjpEcmF3R2x5cGhzOiB0cyA8PCAiZHJhdy1nbHlwaHMiOyBicmVhazsKICAg
ICBjYXNlIEl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXI6IHRzIDw8ICJkcmF3LWltYWdlLWJ1ZmZl
ciI7IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZTogdHMgPDwgImRy
YXctbmF0aXZlLWltYWdlIjsgYnJlYWs7CkBAIC0xMTkwLDEyICsxMTc1LDYgQEAgVGV4dFN0cmVh
bSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgSXRlbUhhbmRsZSBpdGVtKQogICAgIGNhc2Ug
SXRlbVR5cGU6OkNsaXBQYXRoOgogICAgICAgICB0cyA8PCBpdGVtLmdldDxDbGlwUGF0aD4oKTsK
ICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6QmVnaW5DbGlwVG9EcmF3aW5nQ29t
bWFuZHM6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRz
PigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpFbmRDbGlwVG9EcmF3aW5n
Q29tbWFuZHM6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PEVuZENsaXBUb0RyYXdpbmdDb21tYW5k
cz4oKTsKLSAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0dseXBoczoKICAg
ICAgICAgdHMgPDwgaXRlbS5nZXQ8RHJhd0dseXBocz4oKTsKICAgICAgICAgYnJlYWs7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJdGVtcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAppbmRleCA1Nzg2NDE1Y2RhN2JkNWRiYzc3ZmM0YjY4
NGIwZDc4NjZmMzNmN2I2Li43MzBhYTMxNGM5YWFiMTRlNDllZGEwYTYwM2U1MjJmZmM1MzAzMWIw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJdGVtcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKQEAgLTg3Nyw0MyArODc3LDYgQEAg
T3B0aW9uYWw8Q2xpcFBhdGg+IENsaXBQYXRoOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAg
ICByZXR1cm4ge3sgV1RGTW92ZSgqcGF0aCksICp3aW5kUnVsZSB9fTsKIH0KIAotY2xhc3MgQmVn
aW5DbGlwVG9EcmF3aW5nQ29tbWFuZHMgewotcHVibGljOgotICAgIHN0YXRpYyBjb25zdGV4cHIg
SXRlbVR5cGUgaXRlbVR5cGUgPSBJdGVtVHlwZTo6QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM7
Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzSW5saW5lSXRlbSA9IHRydWU7Ci0gICAgc3Rh
dGljIGNvbnN0ZXhwciBib29sIGlzRHJhd2luZ0l0ZW0gPSBmYWxzZTsKLQotICAgIEJlZ2luQ2xp
cFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIERlc3RpbmF0
aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlKQotICAgICAgICA6IG1fZGVzdGluYXRpb24oZGVzdGlu
YXRpb24pCi0gICAgICAgICwgbV9jb2xvclNwYWNlKGNvbG9yU3BhY2UpCi0gICAgewotICAgIH0K
LQotICAgIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2Rl
c3RpbmF0aW9uOyB9Ci0gICAgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UoKSBjb25z
dCB7IHJldHVybiBtX2NvbG9yU3BhY2U7IH0KLQotcHJpdmF0ZToKLSAgICBGbG9hdFJlY3QgbV9k
ZXN0aW5hdGlvbjsKLSAgICBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgbV9jb2xvclNwYWNlOwotfTsK
LQotY2xhc3MgRW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMg
Y29uc3RleHByIEl0ZW1UeXBlIGl0ZW1UeXBlID0gSXRlbVR5cGU6OkVuZENsaXBUb0RyYXdpbmdD
b21tYW5kczsKLSAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNJbmxpbmVJdGVtID0gdHJ1ZTsK
LSAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNEcmF3aW5nSXRlbSA9IGZhbHNlOwotCi0gICAg
RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24pCi0g
ICAgICAgIDogbV9kZXN0aW5hdGlvbihkZXN0aW5hdGlvbikKLSAgICB7Ci0gICAgfQotCi0gICAg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZGVzdGluYXRp
b247IH0KLQotcHJpdmF0ZToKLSAgICBGbG9hdFJlY3QgbV9kZXN0aW5hdGlvbjsKLX07Ci0KIGNs
YXNzIERyYXdHbHlwaHMgewogcHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4cHIgSXRlbVR5cGUg
aXRlbVR5cGUgPSBJdGVtVHlwZTo6RHJhd0dseXBoczsKQEAgLTIyOTksNyArMjI2Miw2IEBAIHBy
aXZhdGU6CiAKIHVzaW5nIERpc3BsYXlMaXN0SXRlbSA9IFZhcmlhbnQKICAgICA8IEFwcGx5RGV2
aWNlU2NhbGVGYWN0b3IKLSAgICAsIEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzCiAgICAgLCBC
ZWdpblRyYW5zcGFyZW5jeUxheWVyCiAgICAgLCBDbGVhclJlY3QKICAgICAsIENsZWFyU2hhZG93
CkBAIC0yMzIxLDcgKzIyODMsNiBAQCB1c2luZyBEaXNwbGF5TGlzdEl0ZW0gPSBWYXJpYW50CiAg
ICAgLCBEcmF3UGF0aAogICAgICwgRHJhd1BhdHRlcm4KICAgICAsIERyYXdSZWN0Ci0gICAgLCBF
bmRDbGlwVG9EcmF3aW5nQ29tbWFuZHMKICAgICAsIEVuZFRyYW5zcGFyZW5jeUxheWVyCiAgICAg
LCBGaWxsQ29tcG9zaXRlZFJlY3QKICAgICAsIEZpbGxFbGxpcHNlCkBAIC0yNDA2LDggKzIzNjcs
NiBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJ
dGVtVHlwZT4gewogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Q2xpcFRvSW1h
Z2VCdWZmZXIsCiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpDbGlwT3V0VG9Q
YXRoLAogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Q2xpcFBhdGgsCi0gICAg
V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5k
cywKLSAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkVuZENsaXBUb0RyYXdpbmdD
b21tYW5kcywKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdHbHlwaHMs
CiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXIsCiAg
ICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2UsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKaW5kZXggMDkxZTNmZDI3NGQ1MTlh
MWI2NTY2Y2VlODVlZGUwNDhmYzFiOGY3My4uM2Y5MjNjMTg0MjhlNjUwZmQxOGQ5MzdmMjhiYjY2
Y2ZmZjcxOThiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcApA
QCAtMzksMzIgKzM5LDE5IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgRGlzcGxh
eUxpc3QgewogCi1SZWNvcmRlcjo6UmVjb3JkZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBE
aXNwbGF5TGlzdCYgZGlzcGxheUxpc3QsIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0
ZSwgY29uc3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xpcCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBp
bml0aWFsQ1RNLCBEZWxlZ2F0ZSogZGVsZWdhdGUsIERyYXdHbHlwaHNSZWNvcmRlcjo6RHJhd0ds
eXBoc0RlY29uc3RydWN0aW9uIGRyYXdHbHlwaHNEZWNvbnN0cnVjdGlvbikKLSAgICA6IEdyYXBo
aWNzQ29udGV4dEltcGwoY29udGV4dCwgaW5pdGlhbENsaXAsIEFmZmluZVRyYW5zZm9ybSgpKQor
UmVjb3JkZXI6OlJlY29yZGVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgRGlzcGxheUxpc3Qm
IGRpc3BsYXlMaXN0LCBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIGNvbnN0IEZs
b2F0UmVjdCYgaW5pdGlhbENsaXAsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgaW5pdGlhbENUTSwg
SW1hZ2VCdWZmZXIqIG93bmVySW1hZ2VCdWZmZXIsICBEcmF3R2x5cGhzUmVjb3JkZXI6OkRyYXdH
bHlwaHNEZWNvbnN0cnVjdGlvbiBkcmF3R2x5cGhzRGVjb25zdHJ1Y3Rpb24pCisgICAgOiBHcmFw
aGljc0NvbnRleHRJbXBsKGNvbnRleHQsIG93bmVySW1hZ2VCdWZmZXIpCiAgICAgLCBtX2Rpc3Bs
YXlMaXN0KGRpc3BsYXlMaXN0KQotICAgICwgbV9kZWxlZ2F0ZShkZWxlZ2F0ZSkKLSAgICAsIG1f
aXNOZXN0ZWQoZmFsc2UpCiAgICAgLCBtX2RyYXdHbHlwaHNSZWNvcmRlcigqdGhpcywgZHJhd0ds
eXBoc0RlY29uc3RydWN0aW9uKQogewogICAgIExPR19XSVRIX1NUUkVBTShEaXNwbGF5TGlzdHMs
IHN0cmVhbSA8PCAiXG5SZWNvcmRpbmcgd2l0aCBjbGlwICIgPDwgaW5pdGlhbENsaXApOwogICAg
IG1fc3RhdGVTdGFjay5hcHBlbmQoeyBzdGF0ZSwgaW5pdGlhbENUTSwgaW5pdGlhbENsaXAgfSk7
CiB9CiAKLVJlY29yZGVyOjpSZWNvcmRlcihSZWNvcmRlciYgcGFyZW50LCBHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgY29uc3QgRmxv
YXRSZWN0JiBpbml0aWFsQ2xpcCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBpbml0aWFsQ1RNKQot
ICAgIDogR3JhcGhpY3NDb250ZXh0SW1wbChjb250ZXh0LCBpbml0aWFsQ2xpcCwgQWZmaW5lVHJh
bnNmb3JtKCkpCi0gICAgLCBtX2Rpc3BsYXlMaXN0KHBhcmVudC5tX2Rpc3BsYXlMaXN0KQotICAg
ICwgbV9kZWxlZ2F0ZShwYXJlbnQubV9kZWxlZ2F0ZSkKLSAgICAsIG1faXNOZXN0ZWQodHJ1ZSkK
LSAgICAsIG1fZHJhd0dseXBoc1JlY29yZGVyKCp0aGlzLCBwYXJlbnQubV9kcmF3R2x5cGhzUmVj
b3JkZXIuZHJhd0dseXBoc0RlY29uc3RydWN0aW9uKCkpCi17Ci0gICAgbV9zdGF0ZVN0YWNrLmFw
cGVuZCh7IHN0YXRlLCBpbml0aWFsQ1RNLCBpbml0aWFsQ2xpcCB9KTsKLX0KLQogUmVjb3JkZXI6
On5SZWNvcmRlcigpCiB7CiAgICAgQVNTRVJUKG1fc3RhdGVTdGFjay5zaXplKCkgPT0gMSk7IC8v
IElmIHRoaXMgZmlyZXMsIGl0IGluZGljYXRlcyBtaXNtYXRjaGVkIHNhdmUvcmVzdG9yZS4KLSAg
ICBpZiAoIW1faXNOZXN0ZWQpCi0gICAgICAgIExPRyhEaXNwbGF5TGlzdHMsICJSZWNvcmRlZCBk
aXNwbGF5IGxpc3Q6XG4lcyIsIG1fZGlzcGxheUxpc3QuZGVzY3JpcHRpb24oKS5kYXRhKCkpOwor
ICAgIExPRyhEaXNwbGF5TGlzdHMsICJSZWNvcmRlZCBkaXNwbGF5IGxpc3Q6XG4lcyIsIG1fZGlz
cGxheUxpc3QuZGVzY3JpcHRpb24oKS5kYXRhKCkpOwogfQogCiB2b2lkIFJlY29yZGVyOjpnZXRQ
aXhlbEJ1ZmZlcihjb25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYgb3V0cHV0Rm9ybWF0LCBjb25zdCBJ
bnRSZWN0JiBzb3VyY2VSZWN0KQpAQCAtMTA0LDggKzkxLDggQEAgc3RhdGljIGJvb2wgY29udGFp
bnNPbmx5SW5saW5lU3RhdGVDaGFuZ2VzKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdl
JiBjaGEKIAogdm9pZCBSZWNvcmRlcjo6Y2FjaGVOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYgaW1h
Z2UpCiB7Ci0gICAgaWYgKG1fZGVsZWdhdGUpCi0gICAgICAgIG1fZGVsZWdhdGUtPmNhY2hlTmF0
aXZlSW1hZ2UoaW1hZ2UpOworICAgIGlmIChvd25lckltYWdlQnVmZmVyKCkpCisgICAgICAgIG93
bmVySW1hZ2VCdWZmZXIoKS0+Y2FjaGVOYXRpdmVJbWFnZShpbWFnZSk7CiAgICAgbV9kaXNwbGF5
TGlzdC5jYWNoZU5hdGl2ZUltYWdlKGltYWdlKTsKIH0KIApAQCAtMTM1LDcgKzEyMiw3IEBAIHZv
aWQgUmVjb3JkZXI6OmFwcGVuZFN0YXRlQ2hhbmdlSXRlbShjb25zdCBHcmFwaGljc0NvbnRleHRT
dGF0ZUNoYW5nZSYgY2hhbmdlcywKIAogYm9vbCBSZWNvcmRlcjo6Y2FuQXBwZW5kSXRlbU9mVHlw
ZShJdGVtVHlwZSB0eXBlKSBjb25zdAogewotICAgIHJldHVybiAhbV9kZWxlZ2F0ZSB8fCBtX2Rl
bGVnYXRlLT5jYW5BcHBlbmRJdGVtT2ZUeXBlKHR5cGUpOworICAgIHJldHVybiAhb3duZXJJbWFn
ZUJ1ZmZlcigpIHx8IG93bmVySW1hZ2VCdWZmZXIoKS0+Y2FuQXBwZW5kSXRlbU9mVHlwZSh0eXBl
KTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6YXBwZW5kU3RhdGVDaGFuZ2VJdGVtSWZOZWNlc3Nhcnko
KQpAQCAtMTU4LDEyICsxNDUsMTIgQEAgdm9pZCBSZWNvcmRlcjo6dXBkYXRlU3RhdGUoY29uc3Qg
R3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBHcmFwaGljc0NvbnRleHRTdGEKIAogYm9vbCBS
ZWNvcmRlcjo6Y2FuRHJhd0ltYWdlQnVmZmVyKGNvbnN0IEltYWdlQnVmZmVyJiBpbWFnZUJ1ZmZl
cikgY29uc3QKIHsKLSAgICByZXR1cm4gIW1fZGVsZWdhdGUgfHwgbV9kZWxlZ2F0ZS0+aXNDYWNo
ZWRJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlcik7CisgICAgcmV0dXJuICFvd25lckltYWdlQnVmZmVy
KCkgfHwgb3duZXJJbWFnZUJ1ZmZlcigpLT5jYW5EcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIp
OwogfQogCiBSZW5kZXJpbmdNb2RlIFJlY29yZGVyOjpyZW5kZXJpbmdNb2RlKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gbV9kZWxlZ2F0ZSA/IG1fZGVsZWdhdGUtPnJlbmRlcmluZ01vZGUoKSA6IFJl
bmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQ7CisgICAgcmV0dXJuIG93bmVySW1hZ2VCdWZmZXIo
KSA/IG93bmVySW1hZ2VCdWZmZXIoKS0+cmVuZGVyaW5nTW9kZSgpIDogUmVuZGVyaW5nTW9kZTo6
VW5hY2NlbGVyYXRlZDsKIH0KIAogdm9pZCBSZWNvcmRlcjo6Y2xlYXJTaGFkb3coKQpAQCAtMTk4
LDggKzE4NSw4IEBAIHZvaWQgUmVjb3JkZXI6OmRyYXdHbHlwaHMoY29uc3QgRm9udCYgZm9udCwg
Y29uc3QgR2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhzLCBjb25zCiAKIHZvaWQgUmVjb3JkZXI6OmFw
cGVuZERyYXdHbHlwaHNJdGVtV2l0aENhY2hlZEZvbnQoY29uc3QgRm9udCYgZm9udCwgY29uc3Qg
R2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhzLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqIGFkdmFu
Y2VzLCB1bnNpZ25lZCBjb3VudCwgY29uc3QgRmxvYXRQb2ludCYgbG9jYWxBbmNob3IsIEZvbnRT
bW9vdGhpbmdNb2RlIHNtb290aGluZ01vZGUpCiB7Ci0gICAgaWYgKG1fZGVsZWdhdGUpCi0gICAg
ICAgIG1fZGVsZWdhdGUtPmNhY2hlRm9udChjb25zdF9jYXN0PEZvbnQmPihmb250KSk7CisgICAg
aWYgKG93bmVySW1hZ2VCdWZmZXIoKSkKKyAgICAgICAgb3duZXJJbWFnZUJ1ZmZlcigpLT5jYWNo
ZUZvbnQoY29uc3RfY2FzdDxGb250Jj4oZm9udCkpOwogICAgIG1fZGlzcGxheUxpc3QuY2FjaGVG
b250KGNvbnN0X2Nhc3Q8Rm9udCY+KGZvbnQpKTsKICAgICBhcHBlbmQ8RHJhd0dseXBocz4oZm9u
dCwgZ2x5cGhzLCBhZHZhbmNlcywgY291bnQsIGxvY2FsQW5jaG9yLCBzbW9vdGhpbmdNb2RlKTsK
IH0KQEAgLTQ1MiwyNyArNDM5LDYgQEAgdm9pZCBSZWNvcmRlcjo6Y2xpcFRvSW1hZ2VCdWZmZXIo
SW1hZ2VCdWZmZXImIGltYWdlQnVmZmVyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3QKICAgICBhcHBl
bmQ8Q2xpcFRvSW1hZ2VCdWZmZXI+KGltYWdlQnVmZmVyLnJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllcigpLCBkZXN0UmVjdCk7CiB9CiAKLXZvaWQgUmVjb3JkZXI6OmNsaXBUb0RyYXdpbmdDb21t
YW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2Ug
Y29sb3JTcGFjZSwgRnVuY3Rpb248dm9pZChHcmFwaGljc0NvbnRleHQmKT4mJiBkcmF3aW5nRnVu
Y3Rpb24pCi17Ci0gICAgR3JhcGhpY3NDb250ZXh0IG5lc3RlZENvbnRleHQoWyZdKEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCkgewotICAgICAgICBhdXRvIGluaXRpYWxDbGlwID0gRmxvYXRSZWN0
KEZsb2F0UG9pbnQoKSwgZGVzdGluYXRpb24uc2l6ZSgpKTsKLQotICAgICAgICAvLyBUaGUgaW5p
dGlhbCBDVE0gbWF0Y2hlcyBJbWFnZUJ1ZmZlcidzIGluaXRpYWwgQ1RNLgotICAgICAgICBBZmZp
bmVUcmFuc2Zvcm0gdHJhbnNmb3JtID0gZ2V0Q1RNKEdyYXBoaWNzQ29udGV4dDo6RGVmaW5pdGVs
eUluY2x1ZGVEZXZpY2VTY2FsZSk7Ci0gICAgICAgIEZsb2F0U2l6ZSBzY2FsZUZhY3Rvcih0cmFu
c2Zvcm0ueFNjYWxlKCksIHRyYW5zZm9ybS55U2NhbGUoKSk7Ci0gICAgICAgIGF1dG8gc2NhbGVk
U2l6ZSA9IGV4cGFuZGVkSW50U2l6ZShkZXN0aW5hdGlvbi5zaXplKCkgKiBzY2FsZUZhY3Rvcik7
Ci0gICAgICAgIEFmZmluZVRyYW5zZm9ybSBpbml0aWFsQ1RNOwotICAgICAgICBpbml0aWFsQ1RN
LnNjYWxlKDEsIC0xKTsKLSAgICAgICAgaW5pdGlhbENUTS50cmFuc2xhdGUoMCwgLXNjYWxlZFNp
emUuaGVpZ2h0KCkpOwotICAgICAgICBpbml0aWFsQ1RNLnNjYWxlKHNjYWxlZFNpemUgLyBkZXN0
aW5hdGlvbi5zaXplKCkpOwotCi0gICAgICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8UmVjb3Jk
ZXI+KG5ldyBSZWNvcmRlcigqdGhpcywgY29udGV4dCwgR3JhcGhpY3NDb250ZXh0U3RhdGUoKSwg
aW5pdGlhbENsaXAsIGluaXRpYWxDVE0pKTsKLSAgICB9KTsKLSAgICBhcHBlbmQ8QmVnaW5DbGlw
VG9EcmF3aW5nQ29tbWFuZHM+KGRlc3RpbmF0aW9uLCBjb2xvclNwYWNlKTsKLSAgICBkcmF3aW5n
RnVuY3Rpb24obmVzdGVkQ29udGV4dCk7Ci0gICAgYXBwZW5kPEVuZENsaXBUb0RyYXdpbmdDb21t
YW5kcz4oZGVzdGluYXRpb24pOwotfQotCiAjaWYgRU5BQkxFKFZJREVPKQogYm9vbCBSZWNvcmRl
cjo6Y2FuUGFpbnRGcmFtZUZvck1lZGlhKGNvbnN0IE1lZGlhUGxheWVyJiBwbGF5ZXIpIGNvbnN0
CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAppbmRleCA3NjMzOWFiZThh
NjA4MDRiYzcyY2MwOTFmZjRkMjFhZjE0Y2FlMDU0Li5jY2VhYWRhZjJiOTA0MzM4ZjVkYmM4NTE4
NDE4ZTY5MTZmYzk3NDUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgK
QEAgLTU0LDI1ICs1NCwxMyBAQCBjbGFzcyBSZWNvcmRlciA6IHB1YmxpYyBHcmFwaGljc0NvbnRl
eHRJbXBsIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShSZWNvcmRlcik7CiBwdWJsaWM6Ci0gICAgY2xhc3MgRGVsZWdhdGU7Ci0gICAgV0VC
Q09SRV9FWFBPUlQgUmVjb3JkZXIoR3JhcGhpY3NDb250ZXh0JiwgRGlzcGxheUxpc3QmLCBjb25z
dCBHcmFwaGljc0NvbnRleHRTdGF0ZSYsIGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYsIERlbGVnYXRlKiA9IG51bGxwdHIsIERyYXdHbHlwaHNSZWNv
cmRlcjo6RHJhd0dseXBoc0RlY29uc3RydWN0aW9uID0gRHJhd0dseXBoc1JlY29yZGVyOjpEcmF3
R2x5cGhzRGVjb25zdHJ1Y3Rpb246OkRlY29uc3RydWN0KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBS
ZWNvcmRlcihHcmFwaGljc0NvbnRleHQmLCBEaXNwbGF5TGlzdCYsIGNvbnN0IEdyYXBoaWNzQ29u
dGV4dFN0YXRlJiwgY29uc3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xpcCwgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiwgSW1hZ2VCdWZmZXIqID0gbnVsbHB0ciwgRHJhd0dseXBoc1JlY29yZGVyOjpEcmF3
R2x5cGhzRGVjb25zdHJ1Y3Rpb24gPSBEcmF3R2x5cGhzUmVjb3JkZXI6OkRyYXdHbHlwaHNEZWNv
bnN0cnVjdGlvbjo6RGVjb25zdHJ1Y3QpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgflJl
Y29yZGVyKCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdldFBpeGVsQnVmZmVyKGNvbnN0
IFBpeGVsQnVmZmVyRm9ybWF0JiBvdXRwdXRGb3JtYXQsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJl
Y3QpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcHV0UGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxC
dWZmZXImLCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50
LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIGRlc3RGb3JtYXQpOwogCiAgICAgYm9vbCBpc0VtcHR5
KCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5TGlzdC5pc0VtcHR5KCk7IH0KLQotICAgIGNsYXNz
IERlbGVnYXRlIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIHZpcnR1YWwgfkRlbGVnYXRlKCkgeyB9
Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBjYW5BcHBlbmRJdGVtT2ZUeXBlKEl0ZW1UeXBlKSB7IHJl
dHVybiBmYWxzZTsgfQotICAgICAgICB2aXJ0dWFsIHZvaWQgY2FjaGVOYXRpdmVJbWFnZShOYXRp
dmVJbWFnZSYpIHsgfQotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNDYWNoZWRJbWFnZUJ1ZmZlcihj
b25zdCBJbWFnZUJ1ZmZlciYpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgICAgIHZpcnR1
YWwgdm9pZCBjYWNoZUZvbnQoRm9udCYpIHsgfQotICAgICAgICB2aXJ0dWFsIFJlbmRlcmluZ01v
ZGUgcmVuZGVyaW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxl
cmF0ZWQ7IH0KLSAgICB9OwotCiAgICAgdm9pZCBmbHVzaENvbnRleHQoRmx1c2hJZGVudGlmaWVy
IGlkZW50aWZpZXIpIHsgYXBwZW5kPEZsdXNoQ29udGV4dD4oaWRlbnRpZmllcik7IH0KIAogcHJp
dmF0ZToKQEAgLTE0Nyw3ICsxMzUsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgY2xpcFBhdGgoY29u
c3QgUGF0aCYsIFdpbmRSdWxlKSBvdmVycmlkZTsKICAgICBJbnRSZWN0IGNsaXBCb3VuZHMoKSBv
dmVycmlkZTsKICAgICB2b2lkIGNsaXBUb0ltYWdlQnVmZmVyKFdlYkNvcmU6OkltYWdlQnVmZmVy
JiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjbGlwVG9EcmF3aW5nQ29t
bWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgRGVzdGluYXRpb25Db2xvclNwYWNl
LCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYmKSBvdmVycmlkZTsKICNpZiBFTkFC
TEUoVklERU8pCiAgICAgdm9pZCBwYWludEZyYW1lRm9yTWVkaWEoTWVkaWFQbGF5ZXImLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uKSBvdmVycmlkZTsKICAgICBib29sIGNhblBhaW50RnJh
bWVGb3JNZWRpYShjb25zdCBNZWRpYVBsYXllciYpIGNvbnN0IG92ZXJyaWRlOwpAQCAtMjM1LDEx
ICsyMjIsNyBAQCBwcml2YXRlOgogICAgIENvbnRleHRTdGF0ZSYgY3VycmVudFN0YXRlKCk7CiAK
ICAgICBEaXNwbGF5TGlzdCYgbV9kaXNwbGF5TGlzdDsKLSAgICBEZWxlZ2F0ZSogbV9kZWxlZ2F0
ZTsKLSAgICBib29sIG1faXNOZXN0ZWQ7Ci0KICAgICBWZWN0b3I8Q29udGV4dFN0YXRlLCA0PiBt
X3N0YXRlU3RhY2s7Ci0KICAgICBEcmF3R2x5cGhzUmVjb3JkZXIgbV9kcmF3R2x5cGhzUmVjb3Jk
ZXI7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAKaW5kZXgg
MTA3ZjIwZWM0ZjFjNDEyZjgwMWU4MjBjMDRiMDcyOGYyNDg4M2FhMy4uYTQyYjRlYTk1NWI1MTI3
ZjI4MDYxNzlmNTdmZjE0ZWI2NjMwZGI1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dFJlcGxheWVyLmNwcApAQCAtMTUzLDI1ICsxNTMsNiBAQCBzdGQ6OnBhaXI8T3B0aW9uYWw8U3Rv
cFJlcGxheVJlYXNvbj4sIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4+IFJl
cAogICAgICAgICByZXR1cm4geyBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCB9OwogICAgIH0K
IAotICAgIGlmIChpdGVtLmlzPEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPigpKSB7Ci0gICAg
ICAgIGlmIChtX21hc2tJbWFnZUJ1ZmZlcikKLSAgICAgICAgICAgIHJldHVybiB7IFN0b3BSZXBs
YXlSZWFzb246OkludmFsaWRJdGVtT3JFeHRlbnQsIFdURjo6bnVsbG9wdCB9OwotICAgICAgICBh
dXRvJiBjbGlwSXRlbSA9IGl0ZW0uZ2V0PEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPigpOwot
ICAgICAgICBtX21hc2tJbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxl
QnVmZmVyKGNsaXBJdGVtLmRlc3RpbmF0aW9uKCkuc2l6ZSgpLCBjbGlwSXRlbS5jb2xvclNwYWNl
KCksIG1fY29udGV4dCk7Ci0gICAgICAgIGlmICghbV9tYXNrSW1hZ2VCdWZmZXIpCi0gICAgICAg
ICAgICByZXR1cm4geyBTdG9wUmVwbGF5UmVhc29uOjpPdXRPZk1lbW9yeSwgV1RGOjpudWxsb3B0
IH07Ci0gICAgICAgIHJldHVybiB7IFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0IH07Ci0gICAg
fQotCi0gICAgaWYgKGl0ZW0uaXM8RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPigpKSB7Ci0gICAg
ICAgIGlmICghbV9tYXNrSW1hZ2VCdWZmZXIpCi0gICAgICAgICAgICByZXR1cm4geyBTdG9wUmVw
bGF5UmVhc29uOjpJbnZhbGlkSXRlbU9yRXh0ZW50LCBXVEY6Om51bGxvcHQgfTsKLSAgICAgICAg
YXV0byYgY2xpcEl0ZW0gPSBpdGVtLmdldDxFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM+KCk7Ci0g
ICAgICAgIG1fY29udGV4dC5jbGlwVG9JbWFnZUJ1ZmZlcigqbV9tYXNrSW1hZ2VCdWZmZXIsIGNs
aXBJdGVtLmRlc3RpbmF0aW9uKCkpOwotICAgICAgICBtX21hc2tJbWFnZUJ1ZmZlciA9IG51bGxw
dHI7Ci0gICAgICAgIHJldHVybiB7IFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0IH07Ci0gICAg
fQotCiAgICAgaXRlbS5hcHBseShjb250ZXh0KCkpOwogICAgIHJldHVybiB7IFdURjo6bnVsbG9w
dCwgV1RGOjpudWxsb3B0IH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3Np
YUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCmluZGV4IDE3NDVlMGZhOWMyNDY2MWEzMTNiNzZk
ZTU3NGZlYjIyODk4ZGE1ZWQuLjE2YWU4NjRmZjdjNzA4Mzc3MDAwYzVmMDcwN2Y2MDk5OTg5NDMx
MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEv
Y2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9u
UmVjb3JkZXIuY3BwCkBAIC03Myw3ICs3Myw3IEBAIGF1dG8gY3JlYXRlQ29tbWFuZCgpIC0+IHN0
ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19iYXNlX29mPE9wZXJhdGlvbkRhdGE8PiwgVD46OnZhCiB9
CiAKIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OkNhaXJvT3BlcmF0aW9uUmVjb3JkZXIoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBQYWludGluZ09wZXJhdGlvbnMmIGNvbW1hbmRMaXN0KQotICAg
IDogR3JhcGhpY3NDb250ZXh0SW1wbChjb250ZXh0LCBGbG9hdFJlY3QgeyB9LCBBZmZpbmVUcmFu
c2Zvcm0geyB9KQorICAgIDogR3JhcGhpY3NDb250ZXh0SW1wbChjb250ZXh0KQogICAgICwgbV9j
b21tYW5kTGlzdChjb21tYW5kTGlzdCkKIHsKICAgICBtX3N0YXRlU3RhY2suYXBwZW5kKHsgeyB9
LCB7IH0sIEZsb2F0UmVjdDo6aW5maW5pdGVSZWN0KCkgfSk7CkBAIC0xMDc2LDExICsxMDc2LDYg
QEAgdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjphcHBlbmQoc3RkOjp1bmlxdWVfcHRyPFBh
aW50aW5nT3BlcmF0aW9uPiYmIGNvbW1hbmQKICAgICBtX2NvbW1hbmRMaXN0LmFwcGVuZChXVEZN
b3ZlKGNvbW1hbmQpKTsKIH0KIAotdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpjbGlwVG9E
cmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiwgRGVzdGluYXRpb25Db2xvclNwYWNlLCBG
dW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYmKQotewotICAgIC8vIEZJWE1FOiBOb3Qg
aW1wbGVtZW50ZWQuCi19Ci0KICNpZiBFTkFCTEUoVklERU8pCiB2b2lkIENhaXJvT3BlcmF0aW9u
UmVjb3JkZXI6OnBhaW50RnJhbWVGb3JNZWRpYShNZWRpYVBsYXllciYsIGNvbnN0IEZsb2F0UmVj
dCYpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNv
c2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJl
Y29yZGVyLmgKaW5kZXggNjU4OTNiMGIyYmMwNmJiYjUwZDVjMDRhZDdiOTc2YjhiZmQ2ZjBiYy4u
YmMxYmVlZDA1MTRhMDYxNThiNGE1YzUyZWYwOWQxOWU5ZDJhYjc2YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9P
cGVyYXRpb25SZWNvcmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaApAQCAtOTcsNyAr
OTcsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgY2xpcFBhdGgoY29uc3QgV2ViQ29yZTo6UGF0aCYs
IFdlYkNvcmU6OldpbmRSdWxlKSBvdmVycmlkZTsKICAgICBXZWJDb3JlOjpJbnRSZWN0IGNsaXBC
b3VuZHMoKSBvdmVycmlkZTsKICAgICB2b2lkIGNsaXBUb0ltYWdlQnVmZmVyKFdlYkNvcmU6Oklt
YWdlQnVmZmVyJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jikgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBkZXN0aW5h
dGlvbiwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlLCBGdW5jdGlvbjx2b2lkKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dCYpPiYmKSBvdmVycmlkZTsKICNpZiBFTkFCTEUoVklERU8pCiAg
ICAgdm9pZCBwYWludEZyYW1lRm9yTWVkaWEoV2ViQ29yZTo6TWVkaWFQbGF5ZXImLCBjb25zdCBX
ZWJDb3JlOjpGbG9hdFJlY3QmIGRlc3RpbmF0aW9uKSBvdmVycmlkZTsKICAgICBib29sIGNhblBh
aW50RnJhbWVGb3JNZWRpYShjb25zdCBXZWJDb3JlOjpNZWRpYVBsYXllciYpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQu
Y3BwCmluZGV4IGUzNzI4NGUwZDA3MjkxMzkxZjlkYzVjZWFjZmM1MGI0MTEyZDdlYjguLmVjNGFm
ZmVlY2ZmYTZlNWJlOWY2ODkzOTc3NTc0Y2U2OTU2NjgxNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0Nv
bnRleHRJbXBsRGlyZWN0MkQuY3BwCkBAIC02MCw3ICs2MCw3IEBAIEdyYXBoaWNzQ29udGV4dDo6
R3JhcGhpY3NDb250ZXh0SW1wbEZhY3RvcnkgR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpj
cmVhdGVGCiB9CiAKIEdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6R3JhcGhpY3NDb250ZXh0
SW1wbERpcmVjdDJEKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgUGxhdGZvcm1Db250ZXh0RGly
ZWN0MkQmIHBsYXRmb3JtQ29udGV4dCkKLSAgICA6IEdyYXBoaWNzQ29udGV4dEltcGwoY29udGV4
dCwgRmxvYXRSZWN0IHsgfSwgQWZmaW5lVHJhbnNmb3JtIHsgfSkKKyAgICA6IEdyYXBoaWNzQ29u
dGV4dEltcGwoY29udGV4dCkKICAgICAsIG1fcGxhdGZvcm1Db250ZXh0KHBsYXRmb3JtQ29udGV4
dCkKICAgICAsIG1fcHJpdmF0ZShtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJp
dmF0ZT4obV9wbGF0Zm9ybUNvbnRleHQsIEdyYXBoaWNzQ29udGV4dDo6Qml0bWFwUmVuZGVyaW5n
Q29udGV4dFR5cGU6OkdQVU1lbW9yeSkpCiB7CkBAIC02OSw3ICs2OSw3IEBAIEdyYXBoaWNzQ29u
dGV4dEltcGxEaXJlY3QyRDo6R3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEKEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4CiB9CiAKIEdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6R3JhcGhpY3ND
b250ZXh0SW1wbERpcmVjdDJEKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgSUQyRDFSZW5kZXJU
YXJnZXQqIHJlbmRlclRhcmdldCkKLSAgICA6IEdyYXBoaWNzQ29udGV4dEltcGwoY29udGV4dCwg
RmxvYXRSZWN0IHsgfSwgQWZmaW5lVHJhbnNmb3JtIHsgfSkKKyAgICA6IEdyYXBoaWNzQ29udGV4
dEltcGwoY29udGV4dCkKICAgICAsIG1fb3duZWRQbGF0Zm9ybUNvbnRleHQobWFrZVVuaXF1ZTxQ
bGF0Zm9ybUNvbnRleHREaXJlY3QyRD4ocmVuZGVyVGFyZ2V0KSkKICAgICAsIG1fcGxhdGZvcm1D
b250ZXh0KCptX293bmVkUGxhdGZvcm1Db250ZXh0KQogICAgICwgbV9wcml2YXRlKG1ha2VVbmlx
dWU8R3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlPihtX3BsYXRmb3JtQ29udGV4dCwgR3Jh
cGhpY3NDb250ZXh0OjpCaXRtYXBSZW5kZXJpbmdDb250ZXh0VHlwZTo6R1BVTWVtb3J5KSkKQEAg
LTQyMCwxMSArNDIwLDYgQEAgRmxvYXRSZWN0IEdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6
cm91bmRUb0RldmljZVBpeGVscyhjb25zdCBGbG9hdFJlY3QmIHJlY3QKICAgICByZXR1cm4gRGly
ZWN0MkQ6OlN0YXRlOjpyb3VuZFRvRGV2aWNlUGl4ZWxzKG1fcGxhdGZvcm1Db250ZXh0LCByZWN0
KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQ6OmNsaXBUb0RyYXdpbmdD
b21tYW5kcyhjb25zdCBGbG9hdFJlY3QmLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIEZ1bmN0aW9u
PHZvaWQoR3JhcGhpY3NDb250ZXh0Jik+JiYpCi17Ci0gICAgLy8gRklYTUU6IE5vdCBpbXBsZW1l
bnRlZC4KLX0KLQogI2lmIEVOQUJMRShWSURFTykKIHZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbERp
cmVjdDJEOjpwYWludEZyYW1lRm9yTWVkaWEoTWVkaWFQbGF5ZXImLCBjb25zdCBGbG9hdFJlY3Qm
KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dy
YXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5oCmluZGV4IGNlYjA0NTA1MzE3
MDNmYjkwZWVhN2I0MmYyNDc0ZjU5MzZiZDNiYTIuLmViMDk0ODE3YjAzMDhkMmI0MTBjZmVjMDk3
NDdmM2IxZTYxOWYyNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmgKQEAg
LTEwMSw3ICsxMDEsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGlwUGF0aChjb25zdCBQYXRoJiwg
V2luZFJ1bGUpIG92ZXJyaWRlOwogICAgIEludFJlY3QgY2xpcEJvdW5kcygpIG92ZXJyaWRlOwog
ICAgIHZvaWQgY2xpcFRvSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3Qm
KSBvdmVycmlkZTsKLSAgICB2b2lkIGNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJl
Y3QmIGRlc3RpbmF0aW9uLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIEZ1bmN0aW9uPHZvaWQoR3Jh
cGhpY3NDb250ZXh0Jik+JiYpIG92ZXJyaWRlOwogI2lmIEVOQUJMRShWSURFTykKICAgICB2b2lk
IHBhaW50RnJhbWVGb3JNZWRpYShNZWRpYVBsYXllciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGlu
YXRpb24pIG92ZXJyaWRlOwogICAgIGJvb2wgY2FuUGFpbnRGcmFtZUZvck1lZGlhKGNvbnN0IE1l
ZGlhUGxheWVyJikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5k
LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kLmNwcAppbmRleCBjMzY2NWI2NDc0NmQ2NWYzMWNhMzU5NjMzMGMwOWU2ZDZkMDhiNzNi
Li41YjU3ZGZmZTFiYzVhMjU4ZGM4N2I0YWY3NzM1OGMzNTY4NjQ5MWRlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQuY3BwCkBAIC01NDgsOCArNTQ4LDYgQEAgT3B0aW9uYWw8RGlzcGxheUxpc3Q6Okl0
ZW1IYW5kbGU+IFdBUk5fVU5VU0VEX1JFVFVSTiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpkZWMK
ICAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Q2xpcDoKICAgICBjYXNlIERpc3BsYXlM
aXN0OjpJdGVtVHlwZTo6Q2xpcE91dDoKICAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6
Q2xpcFRvSW1hZ2VCdWZmZXI6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkJlZ2lu
Q2xpcFRvRHJhd2luZ0NvbW1hbmRzOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpF
bmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM6CiAgICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6
OkNvbmNhdGVuYXRlQ1RNOgogICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3RG90
c0ZvckRvY3VtZW50TWFya2VyOgogICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3
RWxsaXBzZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKaW5kZXggZDJlZGFhOTc3MTVkYWY0
YmIwN2NmNDFmNzc4ZmQzOTJkZDFlNmQ1MS4uZmNjNTBjNTBjYzUxN2QwNzk3MjViYTFiMDRmMjFj
ODUyMGE3NWVmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKQEAgLTQ2LDExICs0Niwx
NCBAQCBjbGFzcyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOwogdGVtcGxhdGU8dHlwZW5hbWUgQmFj
a2VuZFR5cGU+IGNsYXNzIFRocmVhZFNhZmVSZW1vdGVJbWFnZUJ1ZmZlckZsdXNoZXI7CiAKIHRl
bXBsYXRlPHR5cGVuYW1lIEJhY2tlbmRUeXBlPgotY2xhc3MgUmVtb3RlSW1hZ2VCdWZmZXJQcm94
eSA6IHB1YmxpYyBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SW1hZ2VCdWZmZXI8QmFja2VuZFR5cGU+
LCBwdWJsaWMgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpEZWxlZ2F0ZSwgcHVibGlj
IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVyV3JpdGluZ0NsaWVudCB7CitjbGFzcyBS
ZW1vdGVJbWFnZUJ1ZmZlclByb3h5IDogcHVibGljIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJbWFn
ZUJ1ZmZlcjxCYWNrZW5kVHlwZT4sIHB1YmxpYyBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1
ZmZlcldyaXRpbmdDbGllbnQgewogICAgIHVzaW5nIEJhc2VEaXNwbGF5TGlzdEltYWdlQnVmZmVy
ID0gV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkltYWdlQnVmZmVyPEJhY2tlbmRUeXBlPjsKICAgICB1
c2luZyBCYXNlRGlzcGxheUxpc3RJbWFnZUJ1ZmZlcjo6bV9iYWNrZW5kOwogICAgIHVzaW5nIEJh
c2VEaXNwbGF5TGlzdEltYWdlQnVmZmVyOjptX2RyYXdpbmdDb250ZXh0OwogICAgIHVzaW5nIEJh
c2VEaXNwbGF5TGlzdEltYWdlQnVmZmVyOjptX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjsK
KyAgICB1c2luZyBCYXNlRGlzcGxheUxpc3RJbWFnZUJ1ZmZlcjo6Y29sb3JTcGFjZTsKKyAgICB1
c2luZyBCYXNlRGlzcGxheUxpc3RJbWFnZUJ1ZmZlcjo6cGl4ZWxGb3JtYXQ7CisgICAgdXNpbmcg
QmFzZURpc3BsYXlMaXN0SW1hZ2VCdWZmZXI6OnJlbmRlcmluZ01vZGU7CiAgICAgdXNpbmcgQmFz
ZURpc3BsYXlMaXN0SW1hZ2VCdWZmZXI6OnJlc29sdXRpb25TY2FsZTsKIAogcHVibGljOgpAQCAt
OTcsNyArMTAwLDcgQEAgcHVibGljOgogCiBwcm90ZWN0ZWQ6CiAgICAgUmVtb3RlSW1hZ2VCdWZm
ZXJQcm94eShjb25zdCBXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnMmIHBh
cmFtZXRlcnMsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYgcmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5KQotICAgICAgICA6IEJhc2VEaXNwbGF5TGlzdEltYWdlQnVmZmVyKHBhcmFtZXRl
cnMsIHRoaXMpCisgICAgICAgIDogQmFzZURpc3BsYXlMaXN0SW1hZ2VCdWZmZXIocGFyYW1ldGVy
cykKICAgICAgICAgLCBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eShtYWtlV2Vha1B0cihy
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpKQogICAgIHsKICAgICAgICAgQVNTRVJUKG1fcmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KTsKQEAgLTEwOCw4ICsxMTEsNiBAQCBwcm90ZWN0ZWQ6
CiAgICAgICAgIG1fZHJhd2luZ0NvbnRleHQuZGlzcGxheUxpc3QoKS5zZXRUcmFja3NEcmF3aW5n
SXRlbUV4dGVudHMoZmFsc2UpOwogICAgIH0KIAotICAgIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUg
cmVuZGVyaW5nTW9kZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEJhc2VEaXNwbGF5TGlzdElt
YWdlQnVmZmVyOjpyZW5kZXJpbmdNb2RlKCk7IH0KLQogICAgIGJvb2wgaGFzUGVuZGluZ0ZsdXNo
KCkgY29uc3QgeyByZXR1cm4gbV9zZW50Rmx1c2hJZGVudGlmaWVyICE9IG1fcmVjZWl2ZWRGbHVz
aElkZW50aWZpZXI7IH0KIAogICAgIHZvaWQgZGlkRmx1c2goV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OkZsdXNoSWRlbnRpZmllciBmbHVzaElkZW50aWZpZXIpIG92ZXJyaWRlCkBAIC0xMzMsNiArMTM0
LDEzIEBAIHByb3RlY3RlZDoKICAgICAgICAgfQogICAgIH0KIAorICAgIFJlZlB0cjxXZWJDb3Jl
OjpJbWFnZUJ1ZmZlcj4gY3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9h
dFNpemUmIHNpemUpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAoIW1fcmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJl
dHVybiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+Y3JlYXRlSW1hZ2VCdWZmZXIoc2l6
ZSwgcmVuZGVyaW5nTW9kZSgpLCByZXNvbHV0aW9uU2NhbGUoKSwgY29sb3JTcGFjZSgpLCBwaXhl
bEZvcm1hdCgpKTsKKyAgICB9CisKICAgICBXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQqIGVu
c3VyZUJhY2tlbmRDcmVhdGVkKCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIGlmICgh
bV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCkBAIC0yNjYsNyArMjc0LDcgQEAgcHJvdGVj
dGVkOgogICAgICAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPnJlbW90ZVJl
c291cmNlQ2FjaGVQcm94eSgpLmNhY2hlTmF0aXZlSW1hZ2UoaW1hZ2UpOwogICAgIH0KIAotICAg
IGJvb2wgaXNDYWNoZWRJbWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpJbWFnZUJ1ZmZlciYgaW1h
Z2VCdWZmZXIpIGNvbnN0IG92ZXJyaWRlCisgICAgYm9vbCBjYW5EcmF3SW1hZ2VCdWZmZXIoY29u
c3QgV2ViQ29yZTo6SW1hZ2VCdWZmZXImIGltYWdlQnVmZmVyKSBjb25zdCBvdmVycmlkZQogICAg
IHsKICAgICAgICAgaWYgKCFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450303</attachid>
            <date>2022-01-28 19:39:45 -0800</date>
            <delta_ts>2022-01-28 20:10:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225959-20220128193945.patch</filename>
            <type>text/plain</type>
            <size>95637</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4NTQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2U1MDRmM2FkYmQ2ZDY5
OTllMzAxNWFlMWIxZTRkNzFlYmQ1MmNhOC4uNTA5YmI3NjgwZDA4OWE2MDdjZWMwOTIzODNjMTA1
YjZkZmI5N2I0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3MyBAQAorMjAyMi0wMS0yOCAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3Nd
IERlbGV0ZSBHcmFwaGljc0NvbnRleHQ6OmNsaXBUb0RyYXdpbmdDb21tYW5kcygpCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU5NTkKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGZ1bmN0aW9uIHdh
cyBhZGRlZCBpbiByMjY3NzQyIGFzIGEgd29ya2Fyb3VuZCBmb3IgR1BVUHJvY2VzcyBjYXNlCisg
ICAgICAgIHdoaWNoIHdhcyBoYXBwZW5pbmcgYmVjYXVzZSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29t
cGF0aWJsZUJ1ZmZlcigpIHVzZWQKKyAgICAgICAgdG8gcmV0dXJuIGluLXByb2Nlc3MgSW1hZ2VC
dWZmZXIuIGNsaXBUb0RyYXdpbmdDb21tYW5kcygpIHdhcyBhIHdheSB0bworICAgICAgICByZWNv
cmQgdGhlIGNsaXBwZXIgbWFzayBpbWFnZSBpbnRvIGEgdGVtcG9yYXJ5IHJlbW90ZSBJbWFnZUJ1
ZmZlci4KKworICAgICAgICBJZiBHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZUNvbXBhdGlibGVJbWFn
ZUJ1ZmZlcigpIGNhbiBjcmVhdGUgYW4KKyAgICAgICAgSW1hZ2VCdWZmZXIgc2ltaWxhciB0byB0
aGUgdW5kZXJseWluZyBJbWFnZUJ1ZmZlciBvZiB0aGUgR3JhcGhpY3NDb250ZXh0LAorICAgICAg
ICB0aGVuIEdyYXBoaWNzQ29udGV4dDo6Y2xpcFRvRHJhd2luZ0NvbW1hbmRzKCkgaXMgbm90IG5l
ZWRlZC4gCisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRC
YXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6
OmRyYXdUZXh0VW5jaGVja2VkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpjbGlwVG9E
cmF3aW5nQ29tbWFuZHMpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL051bGxHcmFwaGlj
c0NvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0
OjphcHBlbmQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdEl0ZW1CdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0
ZW1IYW5kbGU6OmFwcGx5KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFu
ZGxlOjpkZXN0cm95KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFuZGxl
OjpzYWZlQ29weSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OnNpemVPZkl0ZW1JbkJ5dGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0Ojpp
c0RyYXdpbmdJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0Ojppc0lubGluZUl0
ZW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dEl0ZW1UeXBlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SXRlbXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Om9wZXJh
dG9yPDwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEl0ZW1zLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6QmVnaW5DbGlwVG9E
cmF3aW5nQ29tbWFuZHM6OkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kczo6
fkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kczo6ZGVzdGluYXRpb24gY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkJlZ2luQ2xpcFRv
RHJhd2luZ0NvbW1hbmRzOjpjb2xvclNwYWNlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kczo6ZW5jb2RlIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpCZWdpbkNsaXBU
b0RyYXdpbmdDb21tYW5kczo6ZGVjb2RlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM6OkVuZENsaXBUb0RyYXdpbmdDb21t
YW5kcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RW5kQ2xpcFRv
RHJhd2luZ0NvbW1hbmRzOjpkZXN0aW5hdGlvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpjbGlwVG9EcmF3aW5nQ29t
bWFuZHMpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdFJlY29yZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OnJlY29yZEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1h
bmRzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcklt
cGw6OnJlY29yZEVuZENsaXBUb0RyYXdpbmdDb21tYW5kcyk6IERlbGV0ZWQuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVw
bGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlcGxheWVyOjpSZXBs
YXllcik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVwbGF5ZXI6OmFwcGx5SXRl
bSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVwbGF5ZXI6OmNvbnRleHQgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdFJlcGxheWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVw
bGF5ZXI6OkRlbGVnYXRlOjphcHBseSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
UmVwbGF5ZXI6OkRlbGVnYXRlOjpkaWRDcmVhdGVNYXNrSW1hZ2VCdWZmZXIpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlcGxheWVyOjpEZWxlZ2F0ZTo6ZGlkUmVz
ZXRNYXNrSW1hZ2VCdWZmZXIpOiBEZWxldGVkLgorCisyMDIyLTAxLTI4ICBTYWlkIEFib3UtSGFs
bGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10gTW92ZSBJbWFn
ZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUltYWdlQnVmZmVyKCkgdG8gR3JhcGhpY3NDb250ZXh0
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzU3NTgK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgZ29h
bCBvZiB0aGlzIHBhdGNoIGlzIHRvIHJlY29yZCB0aGUgZHJhd2luZyBpZiB0aGUgY29uY3JldGUg
dHlwZSBvZiAKKyAgICAgICAgdGhlIEdyYXBoaWNzQ29udGV4dCBpcyBSZW1vdGVEaXNwbGF5TGlz
dFJlY29yZGVyUHJveHkuIEN1cnJlbnRseSBhbGwgdGhlCisgICAgICAgIGludGVybWVkaWF0ZSBj
b21wYXRpYmxlIEltYWdlQnVmZmVycyBhcmUgb2YgdHlwZSBDb25jcmV0ZUltYWdlQnVmZmVyLgor
ICAgICAgICBUaGUgZHJhd2luZyB0byB0aGVzZSBJbWFnZUJ1ZmZlcnMgc3RpbGwgaGFwcGVucyBp
biB0aGUgV2ViUHJvY2Vzcy4gTW9yZW92ZXIKKyAgICAgICAgd2hlbiB3ZSBjYWxsIGRyYXdJbWFn
ZUJ1ZmZlcigpIGZvciBvbmUgb2YgdGhlc2UgaW50ZXJtZWRpYXRlIEltYWdlQnVmZmVycworICAg
ICAgICB0byBhIHJlbW90ZSBJbWFnZUJ1ZmZlciwgd2Ugc2luayB0aGUgaW50ZXJtZWRpYXRlIElt
YWdlQnVmZmVyIHRvIGEgTmF0aXZlSW1hZ2UKKyAgICAgICAgYW5kIHNlbmQgaXQgdG8gR1BVUHJv
Y2Vzcy4KKworICAgICAgICBUbyBmaXggdGhpcywgR3JhcGhpY3NDb250ZXh0IHdpbGwgcHJvdmlk
ZSB0aHJlZSBmdW5jdGlvbnMgZm9yIGNyZWF0aW5nCisgICAgICAgIHRoZSBJbWFnZUJ1ZmZlcjoK
KworICAgICAgICAxLiBHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKCk6IEl0IGlz
IGEgdmlydHVhbCBmdW5jdGlvbi4gSXQgd2lsbCAKKyAgICAgICAgICAgY3JlYXRlIGFuIEltYWdl
QnVmZmVyIHNpbWlsYXIgdG8gdGhlIHVuZGVybHlpbmcgSW1hZ2VCdWZmZXIgb2YgdGhlCisgICAg
ICAgICAgIEdyYXBoaWNzQ29udGV4dC4gQmVjYXVzZSBSZWNvcmRlckltcGwgYW5kIFJlbW90ZURp
c3BsYXlMaXN0UmVjb3JkZXJQcm94eQorICAgICAgICAgICBhcmUgc3VwZXIgY2xhc3NlcyBvZiBH
cmFwaGljc0NvbnRleHQsIHRoZXkgd2lsbCBvdmVycmlkZSB0aGlzIG1ldGhvZAorICAgICAgICAg
ICBhbmQgcmV0dXJuIHRoZSBkZXNpcmVkIHR5cGUgb2YgSW1hZ2VCdWZmZXIuCisKKyAgICAgICAg
Mi4gR3JhcGhpY3NDb250ZXh0OjpjcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIoKSB3aWxsIHRh
a2UgdGhlIHNjYWxlRmFjdG9yKCkKKyAgICAgICAgICAgaW50byBjb25zaWRlcmF0aW9uIHdoZW4g
Y3JlYXRpbmcgdGhlIEltYWdlQnVmZmVyLiBUaGUgdHlwZSBvZiB0aGUKKyAgICAgICAgICAgcmV0
dXJuZWQgSW1hZ2VCdWZmZXIgd2lsbCBiZSBlaXRoZXIgQ29uY3JldGVJbWFnZUJ1ZmZlciBvciBp
dCB3aWxsIGJlCisgICAgICAgICAgIHNpbWlsYXIgdG8gdGhlIHVuZGVybHlpbmcgSW1hZ2VCdWZm
ZXIgb2YgdGhlIEdyYXBoaWNzQ29udGV4dC4gVGhpcyB3aWxsCisgICAgICAgICAgIGJlIGNvbnRy
b2xsZWQgYnkgYSBuZXcgZW51bSBjYWxsZWQgSW1hZ2VCdWZmZXJUeXBlLiBUd28gdmVyc2lvbnMg
b2YKKyAgICAgICAgICAgdGhpcyBmdW5jdGlvbiB3aWxsIGJlIHByb3ZpZGVkOiBvbmUgdGFrZXMg
YSBGbG9hdFNpemUgYW5kIHRoZSBvdGhlciAKKyAgICAgICAgICAgdGFrZXMgYSBGbG9hdFJlY2N0
LiBUaGUgRmxvYXRSZWN0IHZlcnNpb24gZXhwYW5kcyB0aGUgZm91ciBjb3JuZXJzIAorICAgICAg
ICAgICBvZiB0aGUgcmVjdGFuZ2xlIHRvIGZ1bGwgcGl4ZWxzLgorCisgICAgICAgIDMuIEdyYXBo
aWNzQ29udGV4dDo6Y29weVJlY3RUb0NvbXBhdGlibGVJbWFnZUJ1ZmZlcigpLCB3aWxsIGNyZWF0
ZSBhbgorICAgICAgICAgICBJbWFnZUJ1ZmZlciBjb21wYXRpYmxlIHdpdGggR3JhcGhpY3NDb250
ZXh0IGFuZCBpdHMgdW5kZXJseWluZworICAgICAgICAgICBJbWFnZUJ1ZmZlci4gSXQgd2lsbCB0
aGVuIGNvcHkgYSByZWN0YW5nbGUgZnJvbSBhICdzb3VyY2VJbWFnZScgdG8KKyAgICAgICAgICAg
dGhlIG5ld2x5IGNyZWF0ZWQgSW1hZ2VCdWZmZXIuCisKKyAgICAgICAgU28gZmFyIHR3byBwbGFj
ZXMgaW4gdGhlIGNvZGUgd2hpY2ggd2FudCB0byBjcmVhdGUgQ29uY3JldGVJbWFnZUJ1ZmZlcgor
ICAgICAgICB0aHJvdWdoIEdyYXBoaWNzQ29udGV4dDo6Y3JlYXRlQ29tcGF0aWJsZUltYWdlQnVm
ZmVyKCk6IHRoZSB0ZXh0IHJ1bnMgCisgICAgICAgIHdpdGggU1ZHIGZvbnRzIGFuZCB0aGUgUERG
IGltYWdlcy4gVGhlIGRlY29kaW5nIG9mIHRoZSBTVkcgZm9udHMgYW5kIHRoZQorICAgICAgICBQ
REYgaW1hZ2VzIGhhcyB0byBoYXBwZW4gaW4gdGhlIFdlYlByb2Nlc3MuIFNvIGluIHRoZXNlIGNh
c2VzIGFuZCBpbiB0aGUKKyAgICAgICAgY2FzZSBvZiBHUFUgUHJvY2VzcyBhbmQgYW5kIGFmdGVy
IHJlbmRlcmluZyB0byB0aGVzZSBJbWFnZUJ1ZmZlcnMsCisgICAgICAgIFJlY29yZGVyOjpkcmF3
SW1hZ2VCdWZmZXIoKSB3aWxsIGNvbnZlcnQgdGhlIEltYWdlQnVmZmVyIHRvIGEgTmF0aXZlSW1h
Z2UKKyAgICAgICAgYW5kIHNlbmQgaXQgdG8gR1BVIFByb2Nlc3MuCisKKyAgICAgICAgVGhlIHBs
YW4gaXMgdG8gcmVwbGFjZSBhbGwgaW50ZXJtZWRpYXRlIEltYWdlQnVmZmVyOjpjcmVhdGUoKSB3
aXRoCisgICAgICAgIEdyYXBoaWNzQ29udGV4dDo6Y3JlYXRlQ29tcGF0aWJsZUltYWdlQnVmZmVy
KCkuIFRoZSBleGNlcHRpb24gd2lsbCBiZSB0aGUKKyAgICAgICAgdG9wIGxldmVsIG9uZXM6IHRo
ZSBjYW52YXMgYW5kIHRoZSByZW5kZXIgbGF5ZXJzLiBUaGUgUmVuZGVyaW5nUHVycG9zZQorICAg
ICAgICB3aWxsIGJlIHVzZWQgb25seSBpbiB0aGVzZSB0d28gcGxhY2VzLgorCisgICAgICAgICog
aHRtbC9DdXN0b21QYWludENhbnZhcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21QYWlu
dENhbnZhczo6cmVwbGF5RGlzcGxheUxpc3QgY29uc3QpOgorICAgICAgICAqIGh0bWwvQ3VzdG9t
UGFpbnRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21QYWludEltYWdlOjpkcmF3
UGF0dGVybik6CisgICAgICAgICogaHRtbC9PZmZzY3JlZW5DYW52YXMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6T2Zmc2NyZWVuQ2FudmFzOjp0cmFuc2ZlclRvSW1hZ2VCaXRtYXApOgorICAgICAg
ICAoV2ViQ29yZTo6T2Zmc2NyZWVuQ2FudmFzOjpjb21taXRUb1BsYWNlaG9sZGVyQ2FudmFzKToK
KyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmRyYXdJbWFn
ZSk6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvVGhlbWVDb2NvYS5tbToKKyAgICAgICAgKFdl
YkNvcmU6OmRyYXdBcHBsZVBheUJ1dHRvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Qml0bWFwSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXdQYXR0
ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYWRpZW50SW1hZ2U6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0Ojpjb21wYXRpYmxlSW1hZ2VCdWZmZXJTaXplIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y29tcGF0aWJsZUltYWdlQnVmZmVyUmVjdCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVm
ZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVNjYWxlZEltYWdlQnVmZmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y3JlYXRlQ29tcGF0aWJsZUltYWdl
QnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y29weVJl
Y3RUb0NvbXBhdGlibGVJbWFnZUJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQ6OmNsaXBUb0RyYXdpbmdDb21tYW5kcyk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNyZWF0ZUNv
bXBhdGlibGVCdWZmZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6
OmNvbXBhdGlibGVCdWZmZXJTaXplKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
QnVmZmVyOjpjb21wYXRpYmxlQnVmZmVySW5mbyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZUJ1ZmZlcjo6Y29weVJlY3RUb0J1ZmZlcik6IERlbGV0ZWQuCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmFtZWRJ
bWFnZUdlbmVyYXRlZEltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvUmVuZGVyaW5nTW9kZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1BE
RkRvY3VtZW50SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UERGRG9jdW1lbnRJbWFnZTo6
dXBkYXRlQ2FjaGVkSW1hZ2VJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpQREZEb2N1bWVu
dEltYWdlOjpkcmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9EcmF3
R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmF3R2x5cGhz
UmVjb3JkZXI6OmRyYXdPVFNWR1J1bik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OmNyZWF0ZUltYWdlQnVmZmVyIGNvbnN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRl
ckltcGwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RSZXBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVwbGF5
ZXI6OmFwcGx5SXRlbSk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6VGhlbWVNYWM6OmRyYXdDZWxsT3JGb2N1c1JpbmdXaXRoVmlld0ludG9D
b250ZXh0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVyRXh0
ZW5kZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6cGF0dGVybkZvckRlc2NyaXB0aW9uKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyVGhlbWVDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQ29j
b2E6OnBhaW50QXBwbGVQYXlCdXR0b24pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVt
ZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpwYWludExpc3RCdXR0
b25Gb3JJbnB1dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFpbnRQcm9n
cmVzc0Jhcik6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlcmluZ0NvbnRleHQ6OmJ1ZmZlckZvcmVncm91
bmQpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdJbWFnZTo6ZHJhd1BhdHRlcm5Gb3JDb250YWluZXIpOgorCiAyMDIyLTAxLTI1ICBa
aXJhbiBTdW4gIDx6c3VuQGlnYWxpYS5jb20+CiAKICAgICAgICAgW2Nzcy1ncmlkXSBGaXggZ3Jp
ZCBzaG9ydGhhbmQgZXhwYW5zaW9uIG9mIGluaXRpYWwgdmFsdWVzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDhjMzA4
YmMyM2NlZWNiY2EwYTEzOGVkMGU1MTc2M2I1YzE3ZTY5YmQuLjEyNmQwZTIwMzdkMzc0YWQ4ZjA1
MGI5ZGRkZmNlOWRiOWQxMGVmYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMjItMDEt
MjggIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQ
cm9jZXNzXSBEZWxldGUgR3JhcGhpY3NDb250ZXh0OjpjbGlwVG9EcmF3aW5nQ29tbWFuZHMoKQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1OTU5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyOjpkcmF3aW5nQ29udGV4dCk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXI6OmJlZ2luQ2xpcFRvRHJhd2luZ0Nv
bW1hbmRzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlRGlzcGxheUxpc3RSZWNv
cmRlcjo6ZW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKTogRGVsZXRlZC4KKyAgICAgICAgKiBHUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIuaDoKKyAgICAgICAgKiBH
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIubWVzc2FnZXMuaW46
CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNv
cmRlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRl
clByb3h5OjpyZWNvcmRCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcyk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eTo6cmVjb3JkRW5kQ2xp
cFRvRHJhd2luZ0NvbW1hbmRzKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkuaDoKKworMjAyMi0wMS0yOCAg
U2FpZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nl
c3NdIE1vdmUgSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcigpIHRvIEdy
YXBoaWNzQ29udGV4dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjM1NzU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyOjpiZWdpbkNsaXBU
b0RyYXdpbmdDb21tYW5kcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
RGlzcGxheUxpc3RSZWNvcmRlclByb3h5OjpjcmVhdGVJbWFnZUJ1ZmZlciBjb25zdCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclBy
b3h5Lmg6CisKIDIwMjItMDEtMjQgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxl
LmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OKHIyODIzMjApOiBbQ29jb2FdIFVzZXItaW5zdGFs
bGVkIGZvbnRzIGRvbid0IHdvcmsgaW4gdGhlIEdQVSBQcm9jZXNzIChpbiBXS1dlYlZpZXcpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0N1c3RvbVBhaW50Q2FudmFzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvQ3VzdG9tUGFpbnRDYW52YXMuY3BwCmluZGV4IDJjMWEzYWE2YzY1
NzkzZWM2ZjVkODRiZGE0ZWY3M2VjNjk2OThlYTMuLjQwNDI5MTFkMDdiYzc3ODM5MDMwMTMxZDc4
ZDczYTU1N2I2M2QwZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ3VzdG9tUGFp
bnRDYW52YXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ3VzdG9tUGFpbnRDYW52YXMu
Y3BwCkBAIC03Myw3ICs3Myw3IEBAIHZvaWQgQ3VzdG9tUGFpbnRDYW52YXM6OnJlcGxheURpc3Bs
YXlMaXN0KEdyYXBoaWNzQ29udGV4dCogY3R4KSBjb25zdAogICAgIC8vIEZJWE1FOiBVc2luZyBh
biBpbnRlcm1lZGlhdGUgYnVmZmVyIGlzIG5vdCBuZWVkZWQgaWYgdGhlcmUgYXJlIG5vIGNvbXBv
c2l0ZSBvcGVyYXRpb25zLgogICAgIGF1dG8gY2xpcEJvdW5kcyA9IGN0eC0+Y2xpcEJvdW5kcygp
OwogCi0gICAgYXV0byBpbWFnZSA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVy
KGNsaXBCb3VuZHMuc2l6ZSgpLCAqY3R4KTsKKyAgICBhdXRvIGltYWdlID0gY3R4LT5jcmVhdGVD
b21wYXRpYmxlSW1hZ2VCdWZmZXIoY2xpcEJvdW5kcy5zaXplKCkpOwogICAgIGlmICghaW1hZ2Up
CiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9DdXN0
b21QYWludEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ3VzdG9tUGFpbnRJbWFnZS5j
cHAKaW5kZXggZjQ3MTk5NDZjNThlMDU5YmUzM2RiNzFkM2Y3YjZmNjA5MjBhNWNhYy4uZmI4YWU2
YmZkNzFmM2VmNjFhMzQwZTI3MDAxNDAzOGUyNzY2OTcwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9DdXN0b21QYWludEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0N1c3RvbVBhaW50SW1hZ2UuY3BwCkBAIC0xOTksNyArMTk5LDcgQEAgdm9pZCBDdXN0b21QYWlu
dEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBG
bG9hdFJlY3QKICAgICBhZGp1c3RlZFBhdHRlcm5DVE0uc2NhbGUoMS4wIC8geFNjYWxlLCAxLjAg
LyB5U2NhbGUpOwogICAgIGFkanVzdGVkU3JjUmVjdC5zY2FsZSh4U2NhbGUsIHlTY2FsZSk7CiAK
LSAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGFk
anVzdGVkU2l6ZSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIGRlc3RDb250ZXh0KTsK
KyAgICBhdXRvIGJ1ZmZlciA9IGRlc3RDb250ZXh0LmNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZl
cihhZGp1c3RlZFNpemUpOwogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm47CiAgICAg
ZG9DdXN0b21QYWludChidWZmZXItPmNvbnRleHQoKSwgYWRqdXN0ZWRTaXplKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcAppbmRleCA0YzljOGNmZjE4YjljN2VhMTJkMTQx
MzEyYzY2MDY2NmRjZjBjODc5Li5hNzgwNTllZWNmNjI0NWIwNDgzYjJkYjMwNDIzNzY2NTFlYjA3
NDFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuY3BwCkBAIC0yODMsNyAr
MjgzLDcgQEAgRXhjZXB0aW9uT3I8UmVmUHRyPEltYWdlQml0bWFwPj4gT2Zmc2NyZWVuQ2FudmFz
Ojp0cmFuc2ZlclRvSW1hZ2VCaXRtYXAoKQogICAgICAgICAvLyBBcyB0aGUgY2FudmFzIGNvbnRl
eHQgc3RhdGUgaXMgc3RvcmVkIGluIEdyYXBoaWNzQ29udGV4dCwgd2hpY2ggaXMgb3duZWQKICAg
ICAgICAgLy8gYnkgYnVmZmVyKCksIHRvIGF2b2lkIHJlc2V0dGluZyB0aGUgY29udGV4dCBzdGF0
ZSwgd2UgaGF2ZSB0byBtYWtlIGEgY29weSBhbmQKICAgICAgICAgLy8gY2xlYXIgdGhlIG9yaWdp
bmFsIGJ1ZmZlciByYXRoZXIgdGhhbiByZXR1cm5pbmcgdGhlIG9yaWdpbmFsIGJ1ZmZlci4KLSAg
ICAgICAgYXV0byBidWZmZXJDb3B5ID0gYnVmZmVyKCktPmNvcHlSZWN0VG9CdWZmZXIoRmxvYXRS
ZWN0KEZsb2F0UG9pbnQoKSwgYnVmZmVyKCktPmxvZ2ljYWxTaXplKCkpLCBidWZmZXIoKS0+Y29s
b3JTcGFjZSgpLCAqZHJhd2luZ0NvbnRleHQoKSk7CisgICAgICAgIGF1dG8gYnVmZmVyQ29weSA9
IGRyYXdpbmdDb250ZXh0KCktPmNvcHlSZWN0VG9Db21wYXRpYmxlSW1hZ2VCdWZmZXIoKmJ1ZmZl
cigpLCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBidWZmZXIoKS0+bG9naWNhbFNpemUoKSksIGJ1
ZmZlcigpLT5jb2xvclNwYWNlKCkpOwogICAgICAgICBkb3duY2FzdDxPZmZzY3JlZW5DYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ+KCptX2NvbnRleHQpLmNsZWFyQ2FudmFzKCk7CiAgICAgICAgIGNs
ZWFyQ29waWVkSW1hZ2UoKTsKIApAQCAtNDUxLDE0ICs0NTEsMTQgQEAgdm9pZCBPZmZzY3JlZW5D
YW52YXM6OmNvbW1pdFRvUGxhY2Vob2xkZXJDYW52YXMoKQogICAgICAgICBtX2NvbnRleHQtPnBh
aW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCk7CiAKICAgICBpZiAobV9wbGFjZWhvbGRlckRh
dGEtPmJ1ZmZlclBpcGVTb3VyY2UpIHsKLSAgICAgICAgYXV0byBidWZmZXJDb3B5ID0gaW1hZ2VC
dWZmZXItPmNvcHlSZWN0VG9CdWZmZXIoRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2VCdWZm
ZXItPmxvZ2ljYWxTaXplKCkpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgaW1hZ2VC
dWZmZXItPmNvbnRleHQoKSk7CisgICAgICAgIGF1dG8gYnVmZmVyQ29weSA9IGltYWdlQnVmZmVy
LT5jb250ZXh0KCkuY29weVJlY3RUb0NvbXBhdGlibGVJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIs
IEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGltYWdlQnVmZmVyLT5sb2dpY2FsU2l6ZSgpKSk7CiAg
ICAgICAgIGlmIChidWZmZXJDb3B5KQogICAgICAgICAgICAgbV9wbGFjZWhvbGRlckRhdGEtPmJ1
ZmZlclBpcGVTb3VyY2UtPmhhbmRsZShXVEZNb3ZlKGJ1ZmZlckNvcHkpKTsKICAgICB9CiAKICAg
ICBMb2NrZXIgbG9ja2VyIHsgbV9wbGFjZWhvbGRlckRhdGEtPmJ1ZmZlckxvY2sgfTsKICAgICBi
b29sIHNob3VsZFB1c2hCdWZmZXIgPSAhbV9wbGFjZWhvbGRlckRhdGEtPnBlbmRpbmdDb21taXRC
dWZmZXI7Ci0gICAgbV9wbGFjZWhvbGRlckRhdGEtPnBlbmRpbmdDb21taXRCdWZmZXIgPSBpbWFn
ZUJ1ZmZlci0+Y29weVJlY3RUb0J1ZmZlcihGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBpbWFnZUJ1
ZmZlci0+bG9naWNhbFNpemUoKSksIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBpbWFn
ZUJ1ZmZlci0+Y29udGV4dCgpKTsKKyAgICBtX3BsYWNlaG9sZGVyRGF0YS0+cGVuZGluZ0NvbW1p
dEJ1ZmZlciA9IGltYWdlQnVmZmVyLT5jb250ZXh0KCkuY29weVJlY3RUb0NvbXBhdGlibGVJbWFn
ZUJ1ZmZlcigqaW1hZ2VCdWZmZXIsIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGltYWdlQnVmZmVy
LT5sb2dpY2FsU2l6ZSgpKSk7CiAgICAgaWYgKG1fcGxhY2Vob2xkZXJEYXRhLT5wZW5kaW5nQ29t
bWl0QnVmZmVyICYmIHNob3VsZFB1c2hCdWZmZXIpCiAgICAgICAgIHB1c2hCdWZmZXJUb1BsYWNl
aG9sZGVyKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCmluZGV4IDU3N2Q1NWU3ZjA0MmE3ODQ4
MjIwZTM4YWMzMmQzMDY5ODM2YTM4OWQuLjU3YmFmNmQ3Mzg2NDcwODhkM2RlYmRhZGMzNzhiMzQ2
YWYyYTZlMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCkBAIC0xNjExLDcgKzE2MTEsNyBAQCBF
eGNlcHRpb25Pcjx2b2lkPiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpkcmF3SW1hZ2Uo
Q2FudmFzQmFzZSYgc291cmNlQ2FudgogICAgICAgICByZXBhaW50RW50aXJlQ2FudmFzID0gdHJ1
ZTsKICAgICB9IGVsc2UgaWYgKHN0YXRlKCkuZ2xvYmFsQ29tcG9zaXRlID09IENvbXBvc2l0ZU9w
ZXJhdG9yOjpDb3B5KSB7CiAgICAgICAgIGlmICgmc291cmNlQ2FudmFzID09ICZjYW52YXNCYXNl
KCkpIHsKLSAgICAgICAgICAgIGlmIChhdXRvIGNvcHkgPSBidWZmZXItPmNvcHlSZWN0VG9CdWZm
ZXIoc3JjUmVjdCwgY29sb3JTcGFjZSgpLCAqYykpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIGNv
cHkgPSBjLT5jb3B5UmVjdFRvQ29tcGF0aWJsZUltYWdlQnVmZmVyKCpidWZmZXIsIHNyY1JlY3Qs
IGNvbG9yU3BhY2UoKSkpIHsKICAgICAgICAgICAgICAgICBjbGVhckNhbnZhcygpOwogICAgICAg
ICAgICAgICAgIGMtPmRyYXdJbWFnZUJ1ZmZlcigqY29weSwgZHN0UmVjdCwgeyB7IH0sIHNyY1Jl
Y3Quc2l6ZSgpIH0sIHsgc3RhdGUoKS5nbG9iYWxDb21wb3NpdGUsIHN0YXRlKCkuZ2xvYmFsQmxl
bmQgfSk7CiAgICAgICAgICAgICB9CkBAIC0yNDU4LDMzICsyNDU4LDMzIEBAIHZvaWQgQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6ZHJhd1RleHRVbmNoZWNrZWQoY29uc3QgVGV4dFJ1biYg
dGV4dFJ1biwgZG91CiAgICAgICAgICAgICBmb250UHJveHkuZHJhd0JpZGlUZXh0KCpjLCB0ZXh0
UnVuLCBsb2NhdGlvbiArIG9mZnNldCwgRm9udENhc2NhZGU6OlVzZUZhbGxiYWNrSWZGb250Tm90
UmVhZHkpOwogICAgICAgICB9CiAKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBz
dGF0ZVNhdmVyKCpjKTsKKyAgICAgICAgYXV0byBtYXNrSW1hZ2UgPSBjLT5jcmVhdGVDb21wYXRp
YmxlSW1hZ2VCdWZmZXIobWFza1JlY3Quc2l6ZSgpKTsKKyAgICAgICAgaWYgKCFtYXNrSW1hZ2Up
CisgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgYXV0byBwYWludE1hc2tJbWFnZSA9IFsm
XSAoR3JhcGhpY3NDb250ZXh0JiBtYXNrSW1hZ2VDb250ZXh0KSB7Ci0gICAgICAgICAgICBpZiAo
ZmlsbCkKLSAgICAgICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LnNldEZpbGxDb2xvcihDb2xv
cjo6YmxhY2spOwotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgbWFza0ltYWdl
Q29udGV4dC5zZXRTdHJva2VDb2xvcihDb2xvcjo6YmxhY2spOwotICAgICAgICAgICAgICAgIG1h
c2tJbWFnZUNvbnRleHQuc2V0U3Ryb2tlVGhpY2tuZXNzKGMtPnN0cm9rZVRoaWNrbmVzcygpKTsK
LSAgICAgICAgICAgIH0KKyAgICAgICAgYXV0byYgbWFza0ltYWdlQ29udGV4dCA9IG1hc2tJbWFn
ZS0+Y29udGV4dCgpOwogCi0gICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LnNldFRleHREcmF3
aW5nTW9kZShmaWxsID8gVGV4dERyYXdpbmdNb2RlOjpGaWxsIDogVGV4dERyYXdpbmdNb2RlOjpT
dHJva2UpOworICAgICAgICBpZiAoZmlsbCkKKyAgICAgICAgICAgIG1hc2tJbWFnZUNvbnRleHQu
c2V0RmlsbENvbG9yKENvbG9yOjpibGFjayk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
bWFza0ltYWdlQ29udGV4dC5zZXRTdHJva2VDb2xvcihDb2xvcjo6YmxhY2spOworICAgICAgICAg
ICAgbWFza0ltYWdlQ29udGV4dC5zZXRTdHJva2VUaGlja25lc3MoYy0+c3Ryb2tlVGhpY2tuZXNz
KCkpOworICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmICh1c2VNYXhXaWR0aCkgewotICAgICAg
ICAgICAgICAgIG1hc2tJbWFnZUNvbnRleHQudHJhbnNsYXRlKGxvY2F0aW9uIC0gbWFza1JlY3Qu
bG9jYXRpb24oKSk7Ci0gICAgICAgICAgICAgICAgLy8gV2UgZHJhdyB3aGVuIGZvbnRXaWR0aCBp
cyAwIHNvIGNvbXBvc2l0aW5nIG9wZXJhdGlvbnMgKGVnLCBhICJjb3B5IiBvcCkgc3RpbGwgd29y
ay4KLSAgICAgICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LnNjYWxlKEZsb2F0U2l6ZSgoZm9u
dFdpZHRoID4gMCA/ICh3aWR0aCAvIGZvbnRXaWR0aCkgOiAwKSwgMSkpOwotICAgICAgICAgICAg
ICAgIGZvbnRQcm94eS5kcmF3QmlkaVRleHQobWFza0ltYWdlQ29udGV4dCwgdGV4dFJ1biwgRmxv
YXRQb2ludCgwLCAwKSwgRm9udENhc2NhZGU6OlVzZUZhbGxiYWNrSWZGb250Tm90UmVhZHkpOwot
ICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LnRy
YW5zbGF0ZSgtbWFza1JlY3QubG9jYXRpb24oKSk7Ci0gICAgICAgICAgICAgICAgZm9udFByb3h5
LmRyYXdCaWRpVGV4dChtYXNrSW1hZ2VDb250ZXh0LCB0ZXh0UnVuLCBsb2NhdGlvbiwgRm9udENh
c2NhZGU6OlVzZUZhbGxiYWNrSWZGb250Tm90UmVhZHkpOwotICAgICAgICAgICAgfQotICAgICAg
ICB9OworICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LnNldFRleHREcmF3aW5nTW9kZShmaWxsID8g
VGV4dERyYXdpbmdNb2RlOjpGaWxsIDogVGV4dERyYXdpbmdNb2RlOjpTdHJva2UpOwogCi0gICAg
ICAgIC8vIEZJWE1FOiBIYW5kbGluZyBncmFkaWVudHMgYW5kIHBhdHRlcm5zIGJ5IHBhaW50aW5n
IHRoZSB0ZXh0IGludG8gYSBtYXNrIGlzIHByb2JhYmx5IHRoZSB3cm9uZyB0aGluZyB0byBkbyBp
biB0aGUgcHJlc2VuY2Ugb2YgY29sb3IgZ2x5cGhzLgotICAgICAgICBpZiAoYy0+Y2xpcFRvRHJh
d2luZ0NvbW1hbmRzKG1hc2tSZWN0LCBjb2xvclNwYWNlKCksIFdURk1vdmUocGFpbnRNYXNrSW1h
Z2UpKSA9PSBHcmFwaGljc0NvbnRleHQ6OkNsaXBUb0RyYXdpbmdDb21tYW5kc1Jlc3VsdDo6RmFp
bGVkVG9DcmVhdGVJbWFnZUJ1ZmZlcikKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYg
KHVzZU1heFdpZHRoKSB7CisgICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LnRyYW5zbGF0ZShs
b2NhdGlvbiAtIG1hc2tSZWN0LmxvY2F0aW9uKCkpOworICAgICAgICAgICAgLy8gV2UgZHJhdyB3
aGVuIGZvbnRXaWR0aCBpcyAwIHNvIGNvbXBvc2l0aW5nIG9wZXJhdGlvbnMgKGVnLCBhICJjb3B5
IiBvcCkgc3RpbGwgd29yay4KKyAgICAgICAgICAgIG1hc2tJbWFnZUNvbnRleHQuc2NhbGUoRmxv
YXRTaXplKChmb250V2lkdGggPiAwID8gKHdpZHRoIC8gZm9udFdpZHRoKSA6IDApLCAxKSk7Cisg
ICAgICAgICAgICBmb250UHJveHkuZHJhd0JpZGlUZXh0KG1hc2tJbWFnZUNvbnRleHQsIHRleHRS
dW4sIEZsb2F0UG9pbnQoMCwgMCksIEZvbnRDYXNjYWRlOjpVc2VGYWxsYmFja0lmRm9udE5vdFJl
YWR5KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1hc2tJbWFnZUNvbnRleHQudHJh
bnNsYXRlKC1tYXNrUmVjdC5sb2NhdGlvbigpKTsKKyAgICAgICAgICAgIGZvbnRQcm94eS5kcmF3
QmlkaVRleHQobWFza0ltYWdlQ29udGV4dCwgdGV4dFJ1biwgbG9jYXRpb24sIEZvbnRDYXNjYWRl
OjpVc2VGYWxsYmFja0lmRm9udE5vdFJlYWR5KTsKKyAgICAgICAgfQogCisgICAgICAgIEdyYXBo
aWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqYyk7CisgICAgICAgIGMtPmNsaXBUb0lt
YWdlQnVmZmVyKCptYXNrSW1hZ2UsIG1hc2tSZWN0KTsKICAgICAgICAgZHJhd1N0eWxlLmFwcGx5
RmlsbENvbG9yKCpjKTsKICAgICAgICAgYy0+ZmlsbFJlY3QobWFza1JlY3QpOwogICAgICAgICBy
ZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9UaGVtZUNv
Y29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVGhlbWVDb2NvYS5tbQppbmRl
eCBlY2Q1MGI3MGZkYmJmNmU5ODNmM2E3MTU2NTI3YjIxMDY4ODRmYmZlLi5lMmI0OTA0ZDhmODYy
OGQzOGI2MTcwZTBhNTgwN2MzNTU2MWNmMTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9UaGVtZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NvY29hL1RoZW1lQ29jb2EubW0KQEAgLTExMCw3ICsxMTAsNyBAQCBzdGF0aWMgQ0dQREZQYWdl
UmVmIGFwcGxlUGF5QnV0dG9uTG9nb1doaXRlKCkKIAogc3RhdGljIHZvaWQgZHJhd0FwcGxlUGF5
QnV0dG9uKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgQ0dQREZQYWdlUmVmIHBhZ2UsIGNvbnN0
IEZsb2F0U2l6ZSYgc2l6ZSkKIHsKLSAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6
OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoc2l6ZSwgY29udGV4dCk7CisgICAgYXV0byBpbWFnZUJ1
ZmZlciA9IGNvbnRleHQuY3JlYXRlQ29tcGF0aWJsZUltYWdlQnVmZmVyKHNpemUpOwogICAgIGlm
ICghaW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCmluZGV4IDgwMjc0MzVhZDI5NDU2NjI5
OGE3OTFiM2FmNmFmYTliZjI3ODFlNjguLjU3NDU0NDdjOGM1NGZmODhhOTM2NmY1MGZlYjM2NGQ3
NzgwY2IwOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Jp
dG1hcEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRt
YXBJbWFnZS5jcHAKQEAgLTM0Nyw3ICszNDcsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3UGF0
dGVybihHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsCiAg
ICAgfQogCiAgICAgaWYgKCFtX2NhY2hlZEltYWdlKSB7Ci0gICAgICAgIGF1dG8gYnVmZmVyID0g
SW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoZXhwYW5kZWRJbnRTaXplKHRpbGVS
ZWN0LnNpemUoKSksIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBjdHh0KTsKKyAgICAg
ICAgYXV0byBidWZmZXIgPSBjdHh0LmNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcihleHBhbmRl
ZEludFNpemUodGlsZVJlY3Quc2l6ZSgpKSk7CiAgICAgICAgIGlmICghYnVmZmVyKQogICAgICAg
ICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFkaWVudEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYWRpZW50SW1hZ2UuY3BwCmluZGV4IGZlZjM2ZTU3YTY1YTE0ODY5MGRiMzBhMmMyYTU2ODRk
MDAwYzhhZGMuLmJkYTcwMTEwOThmYTUxN2E2NDQzMmFmZWNiZDA1M2MxZjk1OTVjNTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuY3Bw
CkBAIC03Miw3ICs3Miw3IEBAIHZvaWQgR3JhZGllbnRJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhp
Y3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkCiAgICAgdW5zaWduZWQg
Z2VuZXJhdG9ySGFzaCA9IG1fZ3JhZGllbnQtPmhhc2goKTsKIAogICAgIGlmICghbV9jYWNoZWRJ
bWFnZSB8fCBtX2NhY2hlZEdlbmVyYXRvckhhc2ggIT0gZ2VuZXJhdG9ySGFzaCB8fCBtX2NhY2hl
ZEFkanVzdGVkU2l6ZSAhPSBhZGp1c3RlZFNpemUgfHwgIWFyZUVzc2VudGlhbGx5RXF1YWwoZGVz
dENvbnRleHQuc2NhbGVGYWN0b3IoKSwgbV9jYWNoZWRTY2FsZUZhY3RvcikpIHsKLSAgICAgICAg
YXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGFk
anVzdGVkU2l6ZSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIGRlc3RDb250ZXh0KTsK
KyAgICAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IGRlc3RDb250ZXh0LmNyZWF0ZUNvbXBhdGlibGVJ
bWFnZUJ1ZmZlcihhZGp1c3RlZFNpemUpOwogICAgICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAg
ICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAppbmRleCBhNDkyZTk4ZGEyODBjMjNlYzczNjMwN2Fk
ZTJkZGVmMzJiZmE0Y2VmLi5lMDhkNjc4MzE1YWNjYWQ0MmM2MjEwZmNmYmVkNThlYzkwMWE4MjZl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dC5jcHAKQEAgLTU1MSw2ICs1NTEsODQgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRy
YXdCaWRpVGV4dChjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3QgVGV4dFJ1biYgcnVuLAog
ICAgIGJpZGlSdW5zLmNsZWFyKCk7CiB9CiAKK0ludFNpemUgR3JhcGhpY3NDb250ZXh0Ojpjb21w
YXRpYmxlSW1hZ2VCdWZmZXJTaXplKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkgY29uc3QKK3sKKyAg
ICAvLyBFbmxhcmdlIHRoZSBidWZmZXIgc2l6ZSBpZiB0aGUgY29udGV4dCdzIHRyYW5zZm9ybSBp
cyBzY2FsaW5nIGl0IHNvIHdlIG5lZWQgYSBoaWdoZXIKKyAgICAvLyByZXNvbHV0aW9uIHRoYW4g
b25lIHBpeGVsIHBlciB1bml0LgorICAgIHJldHVybiBleHBhbmRlZEludFNpemUoc2l6ZSAqIHNj
YWxlRmFjdG9yKCkpOworfQorCitJbnRSZWN0IEdyYXBoaWNzQ29udGV4dDo6Y29tcGF0aWJsZUlt
YWdlQnVmZmVyUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpIGNvbnN0Cit7CisgICAgYXV0byBz
Y2FsZWRSZWN0ID0gcmVjdDsKKyAgICBzY2FsZWRSZWN0LnNjYWxlKHNjYWxlRmFjdG9yKCkpOwor
CisgICAgRmxvYXRTaXplIHNjYWxlKDEsIDEpOworICAgIEltYWdlQnVmZmVyOjpzaXplTmVlZHND
bGFtcGluZyhzY2FsZWRSZWN0LnNpemUoKSwgc2NhbGUpOworICAgIHNjYWxlZFJlY3Quc2NhbGUo
c2NhbGUpOworCisgICAgcmV0dXJuIGVuY2xvc2luZ0ludFJlY3Qoc2NhbGVkUmVjdCk7Cit9CisK
K1JlZlB0cjxJbWFnZUJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihj
b25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3QgRGVzdGlu
YXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlKSBjb25zdAoreworICAgIHJldHVybiBJbWFnZUJ1
ZmZlcjo6Y3JlYXRlKHNpemUsIHJlbmRlcmluZ01vZGUoKSwgcmVzb2x1dGlvblNjYWxlLCBjb2xv
clNwYWNlLCBQaXhlbEZvcm1hdDo6QkdSQTgpOworfQorCitzdGF0aWMgUmVmUHRyPEltYWdlQnVm
ZmVyPiBjcmVhdGVTY2FsZWRJbWFnZUJ1ZmZlcihjb25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IEZsb2F0U2l6ZSYgc2NhbGVkU2l6ZSwgY29uc3QgRmxvYXRTaXplJiBzaXplLCBj
b25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIEltYWdlQnVmZmVyVHlwZSB0
eXBlKQoreworICAgIEFTU0VSVCghc2NhbGVkU2l6ZS5pc0VtcHR5KCkgJiYgIXNpemUuaXNFbXB0
eSgpKTsKKworICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXI7CisgICAgCisgICAg
aWYgKHR5cGUgPT0gSW1hZ2VCdWZmZXJUeXBlOjpDb21wYXRpYmxlKQorICAgICAgICBpbWFnZUJ1
ZmZlciA9IGNvbnRleHQuY3JlYXRlSW1hZ2VCdWZmZXIoc2NhbGVkU2l6ZSwgMSwgY29sb3JTcGFj
ZSk7CisgICAgZWxzZQorICAgICAgICBpbWFnZUJ1ZmZlciA9IGNvbnRleHQuR3JhcGhpY3NDb250
ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihzY2FsZWRTaXplLCAxLCBjb2xvclNwYWNlKTsKKworICAg
IGlmICghaW1hZ2VCdWZmZXIpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgaW1hZ2VC
dWZmZXItPmNvbnRleHQoKS5zY2FsZShzY2FsZWRTaXplIC8gc2l6ZSk7CisgICAgcmV0dXJuIGlt
YWdlQnVmZmVyOworfQorCitSZWZQdHI8SW1hZ2VCdWZmZXI+IEdyYXBoaWNzQ29udGV4dDo6Y3Jl
YXRlQ29tcGF0aWJsZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgY29uc3QgRGVz
dGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBJbWFnZUJ1ZmZlclR5cGUgdHlwZSkgY29u
c3QKK3sKKyAgICBpZiAoc2l6ZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
CisgICAgYXV0byBzY2FsZWRTaXplID0gY29tcGF0aWJsZUltYWdlQnVmZmVyU2l6ZShzaXplKTsK
KyAgICByZXR1cm4gY3JlYXRlU2NhbGVkSW1hZ2VCdWZmZXIoKnRoaXMsIHNjYWxlZFNpemUsIHNp
emUsIGNvbG9yU3BhY2UsIHR5cGUpOworfQorCitSZWZQdHI8SW1hZ2VCdWZmZXI+IEdyYXBoaWNz
Q29udGV4dDo6Y3JlYXRlQ29tcGF0aWJsZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgcmVj
dCwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBJbWFnZUJ1ZmZlclR5
cGUgdHlwZSkgY29uc3QKK3sKKyAgICBpZiAocmVjdC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVy
biBudWxscHRyOworCisgICAgYXV0byBzY2FsZWRSZWN0ID0gY29tcGF0aWJsZUltYWdlQnVmZmVy
UmVjdChyZWN0KTsKKyAgICBhdXRvIGltYWdlQnVmZmVyID0gY3JlYXRlU2NhbGVkSW1hZ2VCdWZm
ZXIoKnRoaXMsIHNjYWxlZFJlY3Quc2l6ZSgpLCByZWN0LnNpemUoKSwgY29sb3JTcGFjZSwgdHlw
ZSk7CisgICAgaWYgKCFpbWFnZUJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAg
ICBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpLnRyYW5zbGF0ZSgtZW5jbG9zaW5nSW50UmVjdChyZWN0
KS5sb2NhdGlvbigpKTsKKyAgICByZXR1cm4gaW1hZ2VCdWZmZXI7Cit9CisKK1JlZlB0cjxJbWFn
ZUJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0Ojpjb3B5UmVjdFRvQ29tcGF0aWJsZUltYWdlQnVmZmVy
KEltYWdlQnVmZmVyJiBzb3VyY2VJbWFnZSwgY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UpIGNvbnN0Cit7CisgICAgaWYgKHJlY3Qu
aXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8gaW1hZ2VCdWZm
ZXIgPSBjcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIocmVjdC5zaXplKCksIGNvbG9yU3BhY2Up
OworICAgIGlmICghaW1hZ2VCdWZmZXIpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAg
aW1hZ2VCdWZmZXItPmNvbnRleHQoKS5kcmF3SW1hZ2VCdWZmZXIoc291cmNlSW1hZ2UsIC1yZWN0
LmxvY2F0aW9uKCkpOworICAgIHJldHVybiBpbWFnZUJ1ZmZlcjsKK30KKwogSW1hZ2VEcmF3UmVz
dWx0IEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRQ
b2ludCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50
aW5nT3B0aW9ucykKIHsKICAgICByZXR1cm4gZHJhd0ltYWdlKGltYWdlLCBGbG9hdFJlY3QoZGVz
dGluYXRpb24sIGltYWdlLnNpemUoKSksIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGltYWdlLnNp
emUoKSksIGltYWdlUGFpbnRpbmdPcHRpb25zKTsKQEAgLTY2NiwxNyArNzQ0LDYgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHQ6OmNsaXBPdXRSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0
JiByZWN0KQogICAgIGNsaXBPdXQocGF0aCk7CiB9CiAKLUdyYXBoaWNzQ29udGV4dDo6Q2xpcFRv
RHJhd2luZ0NvbW1hbmRzUmVzdWx0IEdyYXBoaWNzQ29udGV4dDo6Y2xpcFRvRHJhd2luZ0NvbW1h
bmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JT
cGFjZSYgY29sb3JTcGFjZSwgRnVuY3Rpb248dm9pZChHcmFwaGljc0NvbnRleHQmKT4mJiBkcmF3
aW5nRnVuY3Rpb24pCi17Ci0gICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVh
dGVDb21wYXRpYmxlQnVmZmVyKGRlc3RpbmF0aW9uLnNpemUoKSwgY29sb3JTcGFjZSwgKnRoaXMp
OwotICAgIGlmICghaW1hZ2VCdWZmZXIpCi0gICAgICAgIHJldHVybiBDbGlwVG9EcmF3aW5nQ29t
bWFuZHNSZXN1bHQ6OkZhaWxlZFRvQ3JlYXRlSW1hZ2VCdWZmZXI7Ci0KLSAgICBkcmF3aW5nRnVu
Y3Rpb24oaW1hZ2VCdWZmZXItPmNvbnRleHQoKSk7Ci0gICAgY2xpcFRvSW1hZ2VCdWZmZXIoKmlt
YWdlQnVmZmVyLCBkZXN0aW5hdGlvbik7Ci0gICAgcmV0dXJuIENsaXBUb0RyYXdpbmdDb21tYW5k
c1Jlc3VsdDo6U3VjY2VzczsKLX0KLQogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBUb0ltYWdl
QnVmZmVyKEltYWdlQnVmZmVyJiBpbWFnZUJ1ZmZlciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5h
dGlvblJlY3QpCiB7CiAgICAgaW1hZ2VCdWZmZXIuY2xpcFRvTWFzaygqdGhpcywgZGVzdGluYXRp
b25SZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0LmgKaW5kZXggY2Y3MDkyZGUzM2JjNWI3MjhhZDQ2MWIwZmMwMjE3N2Y2OWVlZmYz
Mi4uMjMyOWEzOGQ5NzhhYjVmYWY2OGEyMzc3ZGFjYjAxMDcwZTYxZWFkYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTQx
Niw2ICs0MTYsMTQgQEAgcHVibGljOgogCiAgICAgLy8gSW1hZ2VzLCBQYXR0ZXJucywgYW5kIE1l
ZGlhCiAKKyAgICBJbnRTaXplIGNvbXBhdGlibGVJbWFnZUJ1ZmZlclNpemUoY29uc3QgRmxvYXRT
aXplJikgY29uc3Q7CisgICAgSW50UmVjdCBjb21wYXRpYmxlSW1hZ2VCdWZmZXJSZWN0KGNvbnN0
IEZsb2F0UmVjdCYpIGNvbnN0OworCisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBSZWZQdHI8
SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIGZsb2F0IHJl
c29sdXRpb25TY2FsZSA9IDEsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgPSBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0IoKSkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRy
PEltYWdlQnVmZmVyPiBjcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXpl
JiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiA9IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQigpLCBJbWFnZUJ1ZmZlclR5cGUgPSBJbWFnZUJ1ZmZlclR5cGU6OkNvbXBhdGlibGUpIGNv
bnN0OworICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlQ29tcGF0aWJsZUltYWdlQnVmZmVy
KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgPSBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgSW1hZ2VCdWZmZXJUeXBlID0gSW1hZ2VCdWZmZXJUeXBl
OjpDb21wYXRpYmxlKSBjb25zdDsKKyAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNvcHlSZWN0VG9D
b21wYXRpYmxlSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImIHNvdXJjZUltYWdlLCBjb25zdCBGbG9h
dFJlY3QmLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmID0gRGVzdGluYXRpb25Db2xvclNw
YWNlOjpTUkdCKCkpIGNvbnN0OworCiAgICAgdmlydHVhbCB2b2lkIGRyYXdOYXRpdmVJbWFnZShO
YXRpdmVJbWFnZSYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmID0geyB9KSA9IDA7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBJbWFnZURyYXdSZXN1bHQg
ZHJhd0ltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRQb2ludCYgZGVzdGluYXRpb24sIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgSW1hZ2VPcmllbnRhdGlvbjo6RnJvbUltYWdlIH0pOwpA
QCAtNDUzLDEwICs0NjEsNiBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2
b2lkIGNsaXBPdXRSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0Jik7CiAgICAgdmly
dHVhbCB2b2lkIGNsaXBQYXRoKGNvbnN0IFBhdGgmLCBXaW5kUnVsZSA9IFdpbmRSdWxlOjpFdmVu
T2RkKSA9IDA7CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGNsaXBUb0ltYWdlQnVm
ZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0Jik7Ci0KLSAgICBlbnVtIGNsYXNzIENs
aXBUb0RyYXdpbmdDb21tYW5kc1Jlc3VsdCA6IGJvb2wgeyBTdWNjZXNzLCBGYWlsZWRUb0NyZWF0
ZUltYWdlQnVmZmVyIH07Ci0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBDbGlwVG9EcmF3aW5n
Q29tbWFuZHNSZXN1bHQgY2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVz
dGluYXRpb24sIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIEZ1bmN0aW9uPHZvaWQoR3Jh
cGhpY3NDb250ZXh0Jik+JiYpOwotCiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBJbnRSZWN0
IGNsaXBCb3VuZHMoKSBjb25zdDsKIAogICAgIC8vIFRleHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcAppbmRleCAwMTkzYmZiMGY5NmM3ZDM0
MDUzZTc2OGEwYzI1OGZjMTI1NzgwZmQzLi43NzE4MjhiNjQ1Y2IzMTEzYjU1Mzg3YTdhMmUyNGMw
MjgzMTQ3NjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VCdWZmZXIuY3BwCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwOSBE
aXJrIFNjaHVsemUgPGtyaXRAd2Via2l0Lm9yZz4KICAqIENvcHlyaWdodCAoQykgUmVzZWFyY2gg
SW4gTW90aW9uIExpbWl0ZWQgMjAxMS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdo
dCAoQykgMjAxNi0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxNi0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNzIsNzUgKzcyLDYgQEAgUmVmUHRyPEltYWdl
QnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVuZGVy
aW5nTW9kZSByZW4KICAgICByZXR1cm4gaW1hZ2VCdWZmZXI7CiB9CiAKLVJlZlB0cjxJbWFnZUJ1
ZmZlcj4gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29uc3QgRmxvYXRTaXpl
JiBzaXplLCBjb25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCi17Ci0gICAgaWYgKHNpemUu
aXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIEludFNpemUgc2NhbGVk
U2l6ZSA9IEltYWdlQnVmZmVyOjpjb21wYXRpYmxlQnVmZmVyU2l6ZShzaXplLCBjb250ZXh0KTsK
LQotICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXI7Ci0KLSAgICBpZiAoY29udGV4
dC5yZW5kZXJpbmdNb2RlKCkgPT0gUmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQpCi0gICAgICAg
IGltYWdlQnVmZmVyID0gQWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNjYWxlZFNpemUs
IGNvbnRleHQpOwotICAgIAotICAgIGlmICghaW1hZ2VCdWZmZXIpCi0gICAgICAgIGltYWdlQnVm
ZmVyID0gVW5hY2NlbGVyYXRlZEltYWdlQnVmZmVyOjpjcmVhdGUoc2NhbGVkU2l6ZSwgY29udGV4
dCk7Ci0KLSAgICBpZiAoIWltYWdlQnVmZmVyKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQot
ICAgIGltYWdlQnVmZmVyLT5jb250ZXh0KCkuc2NhbGUoc2NhbGVkU2l6ZSAvIHNpemUpOwotICAg
IHJldHVybiBpbWFnZUJ1ZmZlcjsKLX0KLQotLy8gVGhpcyBpcyB1c2VmdWwgd2hlbiB5b3UgbmVl
ZCB0byBtYWtlIHN1cmUgdGhlIHBpeGVsIGdyaWQgb2YgdGhlIEltYWdlQnVmZmVyIGFsaWducyB3
aXRoIHRoZSBwaXhlbCBncmlkIG9mIHRoZSBjb250ZXh0LgotLy8gU2ltcGx5IHNheWluZyBjcmVh
dGVDb21wYXRpYmxlQnVmZmVyKHJlY3Quc2l6ZSgpLCBjb250ZXh0KSBpc24ndCBzdWZmaWNpZW50
IGluIHRoaXMgc2l0dWF0aW9uLCBiZWNhdXNlIHJlY3QubG9jYXRpb24oKSBtYXkgbm90IGxpZSBv
biBhIHBpeGVsIGJvdW5kYXJ5LgotLy8gSW4gdGhpcyBzaXR1YXRpb24sIHdlIGhhdmUgdG8gaW5m
bGF0ZSBib3RoIHRoZSBsZWZ0IHNpZGUgYW5kIHRoZSByaWdodCBzaWRlLCB3aGljaCBjYW4gbGVh
ZCB0byBkaWZmZXJlbnQgcmVzdWx0cyB0aGFuCi0vLyBjcmVhdGVDb21wYXRpYmxlQnVmZmVyKHJl
Y3Quc2l6ZSgpLCBjb250ZXh0KSB3b3VsZCBoYXZlIHByb2R1Y2VkLgotYXV0byBJbWFnZUJ1ZmZl
cjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCkgLT4gc3RkOjpvcHRpb25hbDxDb21wYXRpYmxlQnVmZmVy
RGVzY3JpcHRpb24+Ci17Ci0gICAgaWYgKHJlY3QuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwotCi0gICAgYXV0byBpbmZvID0gSW1hZ2VCdWZmZXI6OmNvbXBhdGlibGVC
dWZmZXJJbmZvKHJlY3QsIGNvbnRleHQpOwotCi0gICAgUmVmUHRyPEltYWdlQnVmZmVyPiBpbWFn
ZUJ1ZmZlcjsKLQotICAgIGlmIChjb250ZXh0LnJlbmRlcmluZ01vZGUoKSA9PSBSZW5kZXJpbmdN
b2RlOjpBY2NlbGVyYXRlZCkKLSAgICAgICAgaW1hZ2VCdWZmZXIgPSBBY2NlbGVyYXRlZEltYWdl
QnVmZmVyOjpjcmVhdGUoaW5mby5waHlzaWNhbFNpemVJbkRldmljZUNvb3JkaW5hdGVzLCBjb250
ZXh0KTsKLSAgICAKLSAgICBpZiAoIWltYWdlQnVmZmVyKQotICAgICAgICBpbWFnZUJ1ZmZlciA9
IFVuYWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGluZm8ucGh5c2ljYWxTaXplSW5EZXZp
Y2VDb29yZGluYXRlcywgY29udGV4dCk7Ci0KLSAgICBpZiAoIWltYWdlQnVmZmVyKQotICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgaW1hZ2VCdWZmZXItPmNvbnRleHQoKS5zY2Fs
ZShpbmZvLnNjYWxlKTsKLSAgICBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpLnRyYW5zbGF0ZSgtaW5m
by5pbmZsYXRlZFJlY3RJblVzZXJDb29yZGluYXRlcy5sb2NhdGlvbigpKTsKLSAgICByZXR1cm4g
eyB7IGltYWdlQnVmZmVyLnJlbGVhc2VOb25OdWxsKCksIGluZm8uaW5mbGF0ZWRSZWN0SW5Vc2Vy
Q29vcmRpbmF0ZXMgfSB9OwotfQotCi1SZWZQdHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyOjpj
cmVhdGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgY29uc3QgRGVzdGlu
YXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBjb25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQpCi17Ci0gICAgaWYgKHNpemUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LQotICAgIEludFNpemUgc2NhbGVkU2l6ZSA9IEltYWdlQnVmZmVyOjpjb21wYXRpYmxlQnVmZmVy
U2l6ZShzaXplLCBjb250ZXh0KTsKLQotICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZl
cjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihzY2FsZWRTaXplLCAxLCBjb2xvclNwYWNlLCBjb250
ZXh0KTsKLSAgICBpZiAoIWltYWdlQnVmZmVyKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQot
ICAgIGltYWdlQnVmZmVyLT5jb250ZXh0KCkuc2NhbGUoc2NhbGVkU2l6ZSAvIHNpemUpOwotICAg
IHJldHVybiBpbWFnZUJ1ZmZlcjsKLX0KLQotUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZl
cjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJl
c29sdXRpb25TY2FsZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBj
b25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCi17Ci0gICAgcmV0dXJuIEltYWdlQnVmZmVy
OjpjcmVhdGUoc2l6ZSwgY29udGV4dC5yZW5kZXJpbmdNb2RlKCksIHJlc29sdXRpb25TY2FsZSwg
Y29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKLX0KLQogYm9vbCBJbWFnZUJ1ZmZlcjo6
c2l6ZU5lZWRzQ2xhbXBpbmcoY29uc3QgRmxvYXRTaXplJiBzaXplKQogewogICAgIGlmIChzaXpl
LmlzRW1wdHkoKSkKQEAgLTE4NSw1OCArMTE2LDYgQEAgRmxvYXRSZWN0IEltYWdlQnVmZmVyOjpj
bGFtcGVkUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAgICAgcmV0dXJuIEZsb2F0UmVjdChy
ZWN0LmxvY2F0aW9uKCksIGNsYW1wZWRTaXplKHJlY3Quc2l6ZSgpKSk7CiB9CiAKLUludFNpemUg
SW1hZ2VCdWZmZXI6OmNvbXBhdGlibGVCdWZmZXJTaXplKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwg
Y29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQotewotICAgIC8vIEVubGFyZ2UgdGhlIGJ1
ZmZlciBzaXplIGlmIHRoZSBjb250ZXh0J3MgdHJhbnNmb3JtIGlzIHNjYWxpbmcgaXQgc28gd2Ug
bmVlZCBhIGhpZ2hlcgotICAgIC8vIHJlc29sdXRpb24gdGhhbiBvbmUgcGl4ZWwgcGVyIHVuaXQu
Ci0gICAgcmV0dXJuIGV4cGFuZGVkSW50U2l6ZShzaXplICogY29udGV4dC5zY2FsZUZhY3Rvcigp
KTsKLX0KLQotYXV0byBJbWFnZUJ1ZmZlcjo6Y29tcGF0aWJsZUJ1ZmZlckluZm8oY29uc3QgRmxv
YXRSZWN0JiByZWN0LCBjb25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIC0+IENvbXBhdGli
bGVCdWZmZXJJbmZvCi17Ci0gICAgYXV0byBzY2FsZUZhY3RvciA9IGNvbnRleHQuc2NhbGVGYWN0
b3IoKTsKLSAgICBhdXRvIHNjYWxlZFJlY3QgPSByZWN0OwotICAgIHNjYWxlZFJlY3Quc2NhbGUo
c2NhbGVGYWN0b3IpOwotICAgIGF1dG8gaW5mbGF0ZWRTY2FsZWRSZWN0ID0gZW5jbG9zaW5nSW50
UmVjdChzY2FsZWRSZWN0KTsKLSAgICBhdXRvIGluZmxhdGVkUmVjdEluVXNlckNvb3JkaW5hdGVz
ID0gRmxvYXRSZWN0KGluZmxhdGVkU2NhbGVkUmVjdCk7Ci0KLSAgICAvLyBXZSBkb24ndCB3YW50
IHRvIGFsbG9jYXRlIGh1Z2UgSW1hZ2VCdWZmZXJzIGJlY2F1c2UgdGhleSBjYW4gdGFrZSBhIGxv
dCBvZiBtZW1vcnksCi0gICAgLy8gc28gaWYgdGhlIHNpemUgd291bGQgaGF2ZSBiZWVuIHRvbyBi
aWcsIGRlY3JlYXNlIHJlc29sdXRpb24gYW5kIHNjYWxlIHRoZSByZXN1bHRpbmcgY29udGV4dC4K
LSAgICAvLyBUaGlzIHdpbGwgbWVhbiB0aGF0IHRoZSBJbWFnZUJ1ZmZlciB3aWxsIGxvc2UgcXVh
bGl0eSwgYnV0IHdpbGwgc3RpbGwgZ2VuZXJhbGx5IGxvb2sgY29ycmVjdC4KLSAgICBjb25zdGV4
cHIgaW50IG1heERpbWVuc2lvbiA9IDQwOTY7Ci0gICAgaWYgKGluZmxhdGVkU2NhbGVkUmVjdC53
aWR0aCgpID4gbWF4RGltZW5zaW9uKSB7Ci0gICAgICAgIC8vIFRoZSBwaXhlbCBncmlkcyB3b24n
dCBhbGlnbiBhbnkgbW9yZSwgc28gdGhlcmUncyBubyBuZWVkIHRvIHRyeSB0byBoYW5kbGUgZnJh
Y3Rpb25zIG9mIHBpeGVscy4KLSAgICAgICAgaW5mbGF0ZWRTY2FsZWRSZWN0LnNldFdpZHRoKG1h
eERpbWVuc2lvbik7Ci0gICAgICAgIGluZmxhdGVkUmVjdEluVXNlckNvb3JkaW5hdGVzLnNjYWxl
KG1heERpbWVuc2lvbiAvIGluZmxhdGVkUmVjdEluVXNlckNvb3JkaW5hdGVzLndpZHRoKCksIDEp
OwotICAgICAgICBzY2FsZUZhY3Rvci5zZXRXaWR0aChtYXhEaW1lbnNpb24gLyByZWN0LndpZHRo
KCkpOwotICAgIH0KLSAgICBpZiAoaW5mbGF0ZWRTY2FsZWRSZWN0LmhlaWdodCgpID4gbWF4RGlt
ZW5zaW9uKSB7Ci0gICAgICAgIC8vIFRoZSBwaXhlbCBncmlkcyB3b24ndCBhbGlnbiBhbnkgbW9y
ZSwgc28gdGhlcmUncyBubyBuZWVkIHRvIHRyeSB0byBoYW5kbGUgZnJhY3Rpb25zIG9mIHBpeGVs
cy4KLSAgICAgICAgaW5mbGF0ZWRTY2FsZWRSZWN0LnNldEhlaWdodChtYXhEaW1lbnNpb24pOwot
ICAgICAgICBpbmZsYXRlZFJlY3RJblVzZXJDb29yZGluYXRlcy5zY2FsZSgxLCBtYXhEaW1lbnNp
b24gLyBpbmZsYXRlZFJlY3RJblVzZXJDb29yZGluYXRlcy5oZWlnaHQoKSk7Ci0gICAgICAgIHNj
YWxlRmFjdG9yLnNldEhlaWdodChtYXhEaW1lbnNpb24gLyByZWN0LmhlaWdodCgpKTsKLSAgICB9
Ci0KLSAgICBhdXRvIHBoeXNpY2FsU2l6ZUluRGV2aWNlQ29vcmRpbmF0ZXMgPSBpbmZsYXRlZFNj
YWxlZFJlY3Quc2l6ZSgpOwotICAgIGluZmxhdGVkUmVjdEluVXNlckNvb3JkaW5hdGVzLnNjYWxl
KDEuMGYgLyBzY2FsZUZhY3Rvcik7Ci0gICAgcmV0dXJuIHsgV1RGTW92ZShwaHlzaWNhbFNpemVJ
bkRldmljZUNvb3JkaW5hdGVzKSwgV1RGTW92ZShpbmZsYXRlZFJlY3RJblVzZXJDb29yZGluYXRl
cyksIHNjYWxlRmFjdG9yIH07Ci19Ci0KLVJlZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6
OmNvcHlSZWN0VG9CdWZmZXIoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkK
LXsKLSAgICBpZiAocmVjdC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0g
ICAgSW50U2l6ZSBzY2FsZWRTaXplID0gSW1hZ2VCdWZmZXI6OmNvbXBhdGlibGVCdWZmZXJTaXpl
KHJlY3Quc2l6ZSgpLCBjb250ZXh0KTsKLQotICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6
OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoc2NhbGVkU2l6ZSwgMSwgY29sb3JTcGFjZSwgY29udGV4
dCk7Ci0gICAgaWYgKCFidWZmZXIpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgYnVm
ZmVyLT5jb250ZXh0KCkuZHJhd0ltYWdlQnVmZmVyKCp0aGlzLCAtcmVjdC5sb2NhdGlvbigpKTsK
LSAgICByZXR1cm4gYnVmZmVyOwotfQotCiBSZWZQdHI8TmF0aXZlSW1hZ2U+IEltYWdlQnVmZmVy
OjpzaW5rSW50b05hdGl2ZUltYWdlKFJlZlB0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIpCiB7
CiAgICAgcmV0dXJuIGltYWdlQnVmZmVyLT5zaW5rSW50b05hdGl2ZUltYWdlKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAppbmRleCBkMmQ5YmU5
ZWY0MDMyZmFhMjViZTYyY2FjZTQzNzgyZGVmY2I3NDE1Li41MzA5NDhlMjYxOGM2MjZjZTIzYzhi
Y2NjYjVhYzU2YTFjOTQ3YmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlQnVmZmVyLmgKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAy
MDA2IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgotICogQ29weXJpZ2h0
IChDKSAyMDA3LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDA3LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29w
eXJpZ2h0IChDKSAyMDEwIFRvcmNoIE1vYmlsZSAoQmVpamluZykgQ28uIEx0ZC4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTUwLDE2ICs1MCw2IEBAIHB1YmxpYzoK
ICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGUoY29u
c3QgRmxvYXRTaXplJiwgUmVuZGVyaW5nTW9kZSwgU2hvdWxkVXNlRGlzcGxheUxpc3QsIFJlbmRl
cmluZ1B1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3QgRGVzdGluYXRpb25Db2xv
clNwYWNlJiwgUGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5kb3cqID0gbnVsbHB0cik7CiAgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlKGNvbnN0IEZs
b2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3QgRGVz
dGluYXRpb25Db2xvclNwYWNlJiwgUGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5kb3cqID0gbnVs
bHB0cik7CiAKLSAgICAvLyBDcmVhdGUgYW4gaW1hZ2UgYnVmZmVyIGNvbXBhdGlibGUgd2l0aCB0
aGUgY29udGV4dCwgd2l0aCBzdWl0YWJsZSByZXNvbHV0aW9uIGZvciBkcmF3aW5nIGludG8gdGhl
IGJ1ZmZlciBhbmQgdGhlbiBpbnRvIHRoaXMgY29udGV4dC4KLSAgICBzdGF0aWMgUmVmUHRyPElt
YWdlQnVmZmVyPiBjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0
IEdyYXBoaWNzQ29udGV4dCYpOwotICAgIHN0cnVjdCBDb21wYXRpYmxlQnVmZmVyRGVzY3JpcHRp
b24gewotICAgICAgICBSZWY8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyOwotICAgICAgICBGbG9h
dFJlY3QgaW5mbGF0ZWRSZWN0SW5Vc2VyQ29vcmRpbmF0ZXM7Ci0gICAgfTsKLSAgICBzdGF0aWMg
c3RkOjpvcHRpb25hbDxDb21wYXRpYmxlQnVmZmVyRGVzY3JpcHRpb24+IGNyZWF0ZUNvbXBhdGli
bGVCdWZmZXIoY29uc3QgRmxvYXRSZWN0JiByZWN0SW5Vc2VyQ29vcmRpbmF0ZXMsIGNvbnN0IEdy
YXBoaWNzQ29udGV4dCYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SW1hZ2VC
dWZmZXI+IGNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwgY29uc3QgRGVz
dGluYXRpb25Db2xvclNwYWNlJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0Jik7Ci0gICAgc3RhdGlj
IFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjb25zdCBGbG9hdFNp
emUmLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYs
IGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpOwotCiAgICAgLy8gVGhlc2UgZnVuY3Rpb25zIGFyZSB1
c2VkIHdoZW4gY2xhbXBpbmcgdGhlIEltYWdlQnVmZmVyIHdoaWNoIGlzIGNyZWF0ZWQgZm9yIGZp
bHRlciwgbWFza2VyIG9yIGNsaXBwZXIuCiAgICAgc3RhdGljIGJvb2wgc2l6ZU5lZWRzQ2xhbXBp
bmcoY29uc3QgRmxvYXRTaXplJik7CiAgICAgc3RhdGljIGJvb2wgc2l6ZU5lZWRzQ2xhbXBpbmco
Y29uc3QgRmxvYXRTaXplJiwgRmxvYXRTaXplJiBzY2FsZSk7CkBAIC02NywxNCArNTcsNiBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIEZsb2F0U2l6ZSBjbGFtcGVkU2l6ZShjb25zdCBGbG9hdFNpemUm
LCBGbG9hdFNpemUmIHNjYWxlKTsKICAgICBzdGF0aWMgRmxvYXRSZWN0IGNsYW1wZWRSZWN0KGNv
bnN0IEZsb2F0UmVjdCYpOwogCi0gICAgc3RhdGljIEludFNpemUgY29tcGF0aWJsZUJ1ZmZlclNp
emUoY29uc3QgRmxvYXRTaXplJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0Jik7Ci0gICAgc3RydWN0
IENvbXBhdGlibGVCdWZmZXJJbmZvIHsKLSAgICAgICAgSW50U2l6ZSBwaHlzaWNhbFNpemVJbkRl
dmljZUNvb3JkaW5hdGVzOwotICAgICAgICBGbG9hdFJlY3QgaW5mbGF0ZWRSZWN0SW5Vc2VyQ29v
cmRpbmF0ZXM7Ci0gICAgICAgIEZsb2F0U2l6ZSBzY2FsZTsKLSAgICB9OwotICAgIHN0YXRpYyBD
b21wYXRpYmxlQnVmZmVySW5mbyBjb21wYXRpYmxlQnVmZmVySW5mbyhjb25zdCBGbG9hdFJlY3Qm
LCBjb25zdCBHcmFwaGljc0NvbnRleHQmKTsKLSAgICAKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0
dWFsIH5JbWFnZUJ1ZmZlcigpID0gZGVmYXVsdDsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRCYWNr
ZW5kKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckJhY2tlbmQ+JiYpID0gMDsKQEAgLTEyMiw5
ICsxMDQsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBSZWZQdHI8SW1hZ2U+IGNvcHlJbWFnZShC
YWNraW5nU3RvcmVDb3B5ID0gQ29weUJhY2tpbmdTdG9yZSwgUHJlc2VydmVSZXNvbHV0aW9uID0g
UHJlc2VydmVSZXNvbHV0aW9uOjpObykgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgUmVmUHRyPElt
YWdlPiBmaWx0ZXJlZEltYWdlKEZpbHRlciYpID0gMDsKIAotICAgIC8vIENyZWF0ZSBhbiBpbWFn
ZSBidWZmZXIgY29tcGF0aWJsZSB3aXRoIHRoZSBjb250ZXh0IGFuZCBjb3B5IHJlY3QgZnJvbSB0
aGlzIGJ1ZmZlciBpbnRvIHRoaXMgbmV3IG9uZS4KLSAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNv
cHlSZWN0VG9CdWZmZXIoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNw
YWNlJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0Jik7Ci0KICAgICB2aXJ0dWFsIHZvaWQgZHJhdyhH
cmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QgPSBGbG9hdFJlY3QoMCwgMCwgLTEsIC0xKSwgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmID0geyB9KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBG
bG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYgPSB7IH0pID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5jcHAKaW5k
ZXggNmZmYzI4MmI5Y2M3NTA0MDg4OGNiMzY0ZmIzMzAyMDJmY2IwM2JkMC4uMzcwYzdkYzI4OTZm
Mzk2MmNiM2VkNTA5ODJkYWI2OTk3NGY2MzJjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3Bw
CkBAIC02NSw3ICs2NSw3IEBAIEltYWdlRHJhd1Jlc3VsdCBOYW1lZEltYWdlR2VuZXJhdGVkSW1h
Z2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGCiB2b2lkIE5hbWVkSW1h
Z2VHZW5lcmF0ZWRJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBj
b25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFz
ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYg
b3B0aW9ucykKIHsKICNpZiBVU0UoTkVXX1RIRU1FKQotICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihzaXplKCksIGNvbnRleHQpOworICAg
IGF1dG8gaW1hZ2VCdWZmZXIgPSBjb250ZXh0LmNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcihz
aXplKCkpOwogICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTnVsbEdyYXBoaWNzQ29udGV4
dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTnVsbEdyYXBoaWNzQ29udGV4
dC5oCmluZGV4IDIxZDIwYzcxNzlmMmNkYTIzYmNjNjBmYjUzMDczODcxNzZkYzNiMzcuLmQwZjk2
MzVkY2Q1NDQwMTcyYmZkODUwNmRmOWY3MDcxNWNjMDdlNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL051bGxHcmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OdWxsR3JhcGhpY3NDb250ZXh0LmgKQEAgLTEz
MSw4ICsxMzEsNiBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBjbGlwUm91bmRlZFJlY3QoY29uc3Qg
RmxvYXRSb3VuZGVkUmVjdCYpIGZpbmFsIHsgfQogICAgIHZvaWQgY2xpcE91dFJvdW5kZWRSZWN0
KGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmKSBmaW5hbCB7IH0KLQotICAgIENsaXBUb0RyYXdpbmdD
b21tYW5kc1Jlc3VsdCBjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiwgY29u
c3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgRnVuY3Rpb248dm9pZChHcmFwaGljc0NvbnRleHQm
KT4mJikgZmluYWwgeyByZXR1cm4gQ2xpcFRvRHJhd2luZ0NvbW1hbmRzUmVzdWx0OjpTdWNjZXNz
OyB9CiAgICAgdm9pZCBjbGlwVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0
UmVjdCYpIGZpbmFsIHsgfQogCiAgICAgdm9pZCBmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmLCBH
cmFkaWVudCYpIGZpbmFsIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvUmVuZGVyaW5nTW9kZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvUmVuZGVyaW5nTW9kZS5oCmluZGV4IDA1MmJjY2EzODIxZjY5OTA2ZDhkYWM1NDcwZjg1MWJm
NjllNGZlMzYuLjk2YjhhY2U5NjQ3NTkyMDAwMGVmMTZjZTAyYWJhOTFhYTE3Yzc0YWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbmRlcmluZ01vZGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW5kZXJpbmdNb2RlLmgKQEAg
LTM1LDYgKzM1LDcgQEAgZW51bSBjbGFzcyBSZW5kZXJpbmdQdXJwb3NlIDogdWludDhfdCB7CiB9
OwogCiBlbnVtIGNsYXNzIFNob3VsZFVzZURpc3BsYXlMaXN0IDogYm9vbCB7IE5vLCBZZXMgfTsK
K2VudW0gY2xhc3MgSW1hZ2VCdWZmZXJUeXBlIDogYm9vbCB7IENvbXBhdGlibGUsIENvbmNyZXRl
IH07CiBlbnVtIGNsYXNzIFJlbmRlcmluZ01vZGUgOiBib29sIHsgVW5hY2NlbGVyYXRlZCwgQWNj
ZWxlcmF0ZWQgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAppbmRl
eCAzNjRiYzIzYTMwYjBhYjViMjVkYmQ5ZWY3NTc2NDA3MjU3YThjMjRkLi4yOThkNGFhZjBkYjZk
NDI0YWFlYzkxNzIxNjg5MGEzNjUyMjBjZmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcApAQCAtMjMyLDE0
ICsyMzIsMTUgQEAgdm9pZCBQREZEb2N1bWVudEltYWdlOjp1cGRhdGVDYWNoZWRJbWFnZUlmTmVl
ZGVkKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QKIAogICAgIC8vIENhY2hlIHRoZSBQ
REYgaW1hZ2Ugb25seSBpZiB0aGUgc2l6ZSBvZiB0aGUgbmV3IGltYWdlIHdvbid0IGV4Y2VlZCB0
aGUgY2FjaGUgdGhyZXNob2xkLgogICAgIGlmIChtX3BkZkltYWdlQ2FjaGluZ1BvbGljeSA9PSBQ
REZJbWFnZUNhY2hpbmdQb2xpY3k6OkJlbG93TWVtb3J5TGltaXQpIHsKLSAgICAgICAgSW50U2l6
ZSBzY2FsZWRTaXplID0gSW1hZ2VCdWZmZXI6OmNvbXBhdGlibGVCdWZmZXJTaXplKGNhY2hlZElt
YWdlU2l6ZSwgY29udGV4dCk7CisgICAgICAgIGF1dG8gc2NhbGVkU2l6ZSA9IGNvbnRleHQuY29t
cGF0aWJsZUltYWdlQnVmZmVyU2l6ZShjYWNoZWRJbWFnZVNpemUpOwogICAgICAgICBpZiAoc19h
bGxEZWNvZGVkRGF0YVNpemUgKyBzY2FsZWRTaXplLnVuY2xhbXBlZEFyZWEoKSAqIDQgLSBtX2Nh
Y2hlZEJ5dGVzID4gc19tYXhEZWNvZGVkRGF0YVNpemUpIHsKICAgICAgICAgICAgIGRlc3Ryb3lE
ZWNvZGVkRGF0YSgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQogCi0g
ICAgbV9jYWNoZWRJbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVm
ZmVyKGNhY2hlZEltYWdlU2l6ZSwgY29udGV4dCk7CisgICAgLy8gQ3JlYXRlIGluLXByb2Nlc3Mg
SW1hZ2VCdWZmZXIgc2luY2UgdGhlIGRlb2NvZGluZyBvZiBQREYgaW1hZ2VzIGhhcyB0byBoYXBw
ZW4gaW4gV2ViUHJvY2Vzcy4KKyAgICBtX2NhY2hlZEltYWdlQnVmZmVyID0gY29udGV4dC5jcmVh
dGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIoY2FjaGVkSW1hZ2VTaXplLCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0IoKSwgSW1hZ2VCdWZmZXJUeXBlOjpDb25jcmV0ZSk7CiAgICAgaWYgKCFtX2Nh
Y2hlZEltYWdlQnVmZmVyKSB7CiAgICAgICAgIGRlc3Ryb3lEZWNvZGVkRGF0YSgpOwogICAgICAg
ICByZXR1cm47CkBAIC0yOTIsNyArMjkzLDcgQEAgSW1hZ2VEcmF3UmVzdWx0IFBERkRvY3VtZW50
SW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QKICAg
ICAgICAgICAgIC8vIHNjYWxhciA9IHNxcnQobWF4IG51bWJlciBvZiBwaXhlbHMgLyAod2lkdGgg
KiBoZWlnaHQpKQogICAgICAgICAgICAgYXV0byBzY2FsYXIgPSBzdGQ6Om1pbigxLmYsIHN0ZDo6
c3FydChzdGF0aWNfY2FzdDxmbG9hdD4oc19tYXhDYWNoZWRJbWFnZUFyZWEpIC8gKGRzdFJlY3Qu
d2lkdGgoKSAqIGRzdFJlY3QuaGVpZ2h0KCkpKSk7CiAgICAgICAgICAgICBGbG9hdFJlY3QgbG9j
YWxEZXN0aW5hdGlvblJlY3QoRmxvYXRQb2ludCgpLCBkc3RSZWN0LnNpemUoKSAqIHNjYWxhcik7
Ci0gICAgICAgICAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVD
b21wYXRpYmxlQnVmZmVyKGxvY2FsRGVzdGluYXRpb25SZWN0LnNpemUoKSwgY29udGV4dCkpIHsK
KyAgICAgICAgICAgIGlmIChhdXRvIGltYWdlQnVmZmVyID0gY29udGV4dC5jcmVhdGVDb21wYXRp
YmxlSW1hZ2VCdWZmZXIobG9jYWxEZXN0aW5hdGlvblJlY3Quc2l6ZSgpLCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0IoKSwgSW1hZ2VCdWZmZXJUeXBlOjpDb25jcmV0ZSkpIHsKICAgICAgICAg
ICAgICAgICBhdXRvJiBidWZmZXJDb250ZXh0ID0gaW1hZ2VCdWZmZXItPmNvbnRleHQoKTsKICAg
ICAgICAgICAgICAgICB0cmFuc2Zvcm1Db250ZXh0Rm9yUGFpbnRpbmcoYnVmZmVyQ29udGV4dCwg
bG9jYWxEZXN0aW5hdGlvblJlY3QsIHNyY1JlY3QpOwogICAgICAgICAgICAgICAgIGRyYXdQREZQ
YWdlKGJ1ZmZlckNvbnRleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29yZXRleHQvRHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRHJhd0dseXBoc1JlY29yZGVyQ29y
ZVRleHQuY3BwCmluZGV4IGMyOTVlZmU4MzQ3YjA0NWJlMzFkYjM2NzY3M2VlN2Y5OTViMWE0YzMu
LmY2OTIzMjJhNGViMDNmZTc3YTE4NzVmMDU3Yzg0NzE3ZWRiNzVkMmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0RyYXdHbHlwaHNSZWNvcmRl
ckNvcmVUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3Jl
dGV4dC9EcmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHAKQEAgLTM3NiwxMSArMzc2LDE0IEBA
IHZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjpkcmF3T1RTVkdSdW4oY29uc3QgRm9udCYgZm9udCwg
Y29uc3QgR2x5cGhCdWZmZXJHbHlwaCoKICAgICBGbG9hdFBvaW50IHBlblBvc2l0aW9uID0gc3Rh
cnRQb2ludDsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtR2x5cGhzOyArK2kpIHsK
ICAgICAgICAgYXV0byBib3VuZHMgPSBmb250LmJvdW5kc0ZvckdseXBoKGdseXBoc1tpXSk7Ci0g
ICAgICAgIGlmIChhdXRvIGltYWdlQnVmZmVyRGVzY3JpcHRpb24gPSBJbWFnZUJ1ZmZlcjo6Y3Jl
YXRlQ29tcGF0aWJsZUJ1ZmZlcihib3VuZHMsIG1fb3duZXIpKSB7Ci0gICAgICAgICAgICBGb250
Q2FzY2FkZTo6ZHJhd0dseXBocyhpbWFnZUJ1ZmZlckRlc2NyaXB0aW9uLT5pbWFnZUJ1ZmZlci0+
Y29udGV4dCgpLCBmb250LCBnbHlwaHMgKyBpLCBhZHZhbmNlcyArIGksIDEsIEZsb2F0UG9pbnQo
KSwgc21vb3RoaW5nTW9kZSk7Ci0gICAgICAgICAgICBhdXRvIGRlc3RpbmF0aW9uUmVjdCA9IGlt
YWdlQnVmZmVyRGVzY3JpcHRpb24tPmluZmxhdGVkUmVjdEluVXNlckNvb3JkaW5hdGVzOworCisg
ICAgICAgIC8vIENyZWF0ZSBpbi1wcm9jZXNzIEltYWdlQnVmZmVyIHNpbmNlIHRoZSBkZW9jb2Rp
bmcgb2YgT1QtU1ZHIGZvbnRzIGhhcyB0byBoYXBwZW4gaW4gV2ViUHJvY2Vzcy4KKyAgICAgICAg
aWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBtX293bmVyLmNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZl
cihib3VuZHMsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBJbWFnZUJ1ZmZlclR5cGU6
OkNvbmNyZXRlKSkgeworICAgICAgICAgICAgRm9udENhc2NhZGU6OmRyYXdHbHlwaHMoaW1hZ2VC
dWZmZXItPmNvbnRleHQoKSwgZm9udCwgZ2x5cGhzICsgaSwgYWR2YW5jZXMgKyBpLCAxLCBGbG9h
dFBvaW50KCksIHNtb290aGluZ01vZGUpOworCisgICAgICAgICAgICBGbG9hdFJlY3QgZGVzdGlu
YXRpb25SZWN0ID0gZW5jbG9zaW5nSW50UmVjdChib3VuZHMpOwogICAgICAgICAgICAgZGVzdGlu
YXRpb25SZWN0Lm1vdmVCeShwZW5Qb3NpdGlvbik7Ci0gICAgICAgICAgICBtX293bmVyLmRyYXdJ
bWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlckRlc2NyaXB0aW9uLT5pbWFnZUJ1ZmZlciwgZGVzdGluYXRp
b25SZWN0KTsKKyAgICAgICAgICAgIG1fb3duZXIuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZl
ciwgZGVzdGluYXRpb25SZWN0KTsKICAgICAgICAgfQogICAgICAgICBwZW5Qb3NpdGlvbi5tb3Zl
KHNpemUoYWR2YW5jZXNbaV0pKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcAppbmRl
eCBkOWIwZWRkYzI2OGMyOTViNzNkOWI2NjFlZThjMTU2ZGJhM2RiOTc2Li4zMDI1ZmZlYzlkNWJi
MGE4YjkzODc2NTA5MzQ1ZDY3MjkzYWUzMzY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAK
QEAgLTI0MCwxMCArMjQwLDYgQEAgdm9pZCBEaXNwbGF5TGlzdDo6YXBwZW5kKEl0ZW1IYW5kbGUg
aXRlbSkKICAgICAgICAgcmV0dXJuIGFwcGVuZDxDbGlwT3V0VG9QYXRoPihpdGVtLmdldDxDbGlw
T3V0VG9QYXRoPigpKTsKICAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwUGF0aDoKICAgICAgICAgcmV0
dXJuIGFwcGVuZDxDbGlwUGF0aD4oaXRlbS5nZXQ8Q2xpcFBhdGg+KCkpOwotICAgIGNhc2UgSXRl
bVR5cGU6OkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOgotICAgICAgICByZXR1cm4gYXBwZW5k
PEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPihpdGVtLmdldDxCZWdpbkNsaXBUb0RyYXdpbmdD
b21tYW5kcz4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRz
OgotICAgICAgICByZXR1cm4gYXBwZW5kPEVuZENsaXBUb0RyYXdpbmdDb21tYW5kcz4oaXRlbS5n
ZXQ8RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPigpKTsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3
RmlsdGVyZWRJbWFnZUJ1ZmZlcjoKICAgICAgICAgcmV0dXJuIGFwcGVuZDxEcmF3RmlsdGVyZWRJ
bWFnZUJ1ZmZlcj4oaXRlbS5nZXQ8RHJhd0ZpbHRlcmVkSW1hZ2VCdWZmZXI+KCkpOwogICAgIGNh
c2UgSXRlbVR5cGU6OkRyYXdHbHlwaHM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1CdWZmZXIuY3BwCmluZGV4IDQ2M2IxMzQ2ZGMzNzIzNDVhNDljYjhhNWI1NjIyZDI2ZDc4NjE0
MTguLjc4MmY4ODlhYjA2MTM4MGQ5Yjk4MDE4MTJmYWJhZmQ4MWY4NWVjOTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dEl0ZW1CdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwCkBAIC0xMDksMTIgKzEwOSw2IEBA
IHZvaWQgSXRlbUhhbmRsZTo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogICAgIGNh
c2UgSXRlbVR5cGU6OkNsaXBQYXRoOgogICAgICAgICBnZXQ8Q2xpcFBhdGg+KCkuYXBwbHkoY29u
dGV4dCk7CiAgICAgICAgIHJldHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpCZWdpbkNsaXBUb0Ry
YXdpbmdDb21tYW5kczoKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM6Ci0gICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm47CiAgICAgY2FzZSBJdGVt
VHlwZTo6RHJhd0ZpbHRlcmVkSW1hZ2VCdWZmZXI6CiAgICAgICAgIGdldDxEcmF3RmlsdGVyZWRJ
bWFnZUJ1ZmZlcj4oKS5hcHBseShjb250ZXh0KTsKICAgICAgICAgcmV0dXJuOwpAQCAtMzIyLDkg
KzMxNiw2IEBAIHZvaWQgSXRlbUhhbmRsZTo6ZGVzdHJveSgpCiAgICAgICAgIHN0YXRpY19hc3Nl
cnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPEFwcGx5U3Ryb2tlUGF0dGVybj46OnZh
bHVlKTsKICAgICAgICAgcmV0dXJuOwogI2VuZGlmCi0gICAgY2FzZSBJdGVtVHlwZTo6QmVnaW5D
bGlwVG9EcmF3aW5nQ29tbWFuZHM6Ci0gICAgICAgIGdldDxCZWdpbkNsaXBUb0RyYXdpbmdDb21t
YW5kcz4oKS5+QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHMoKTsKLSAgICAgICAgcmV0dXJuOwog
ICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2luVHJhbnNwYXJlbmN5TGF5ZXI6CiAgICAgICAgIHN0YXRp
Y19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPEJlZ2luVHJhbnNwYXJlbmN5
TGF5ZXI+Ojp2YWx1ZSk7CiAgICAgICAgIHJldHVybjsKQEAgLTM2Nyw5ICszNTgsNiBAQCB2b2lk
IEl0ZW1IYW5kbGU6OmRlc3Ryb3koKQogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdSZWN0OgogICAg
ICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxEcmF3UmVj
dD46OnZhbHVlKTsKICAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OkVuZENsaXBU
b0RyYXdpbmdDb21tYW5kczoKLSAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxs
eV9kZXN0cnVjdGlibGU8RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPjo6dmFsdWUpOwotICAgICAg
ICByZXR1cm47CiAgICAgY2FzZSBJdGVtVHlwZTo6RW5kVHJhbnNwYXJlbmN5TGF5ZXI6CiAgICAg
ICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPEVuZFRyYW5z
cGFyZW5jeUxheWVyPjo6dmFsdWUpOwogICAgICAgICByZXR1cm47CkBAIC01NDYsOCArNTM0LDYg
QEAgYm9vbCBJdGVtSGFuZGxlOjpzYWZlQ29weShJdGVtVHlwZSBpdGVtVHlwZSwgSXRlbUhhbmRs
ZSBkZXN0aW5hdGlvbikgY29uc3QKICAgICBjYXNlIEl0ZW1UeXBlOjpBcHBseVN0cm9rZVBhdHRl
cm46CiAgICAgICAgIHJldHVybiBjb3B5SW50bzxBcHBseVN0cm9rZVBhdHRlcm4+KGl0ZW1PZmZz
ZXQsICp0aGlzKTsKICNlbmRpZgotICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2luQ2xpcFRvRHJhd2lu
Z0NvbW1hbmRzOgotICAgICAgICByZXR1cm4gY29weUludG88QmVnaW5DbGlwVG9EcmF3aW5nQ29t
bWFuZHM+KGl0ZW1PZmZzZXQsICp0aGlzKTsKICAgICBjYXNlIEl0ZW1UeXBlOjpCZWdpblRyYW5z
cGFyZW5jeUxheWVyOgogICAgICAgICByZXR1cm4gY29weUludG88QmVnaW5UcmFuc3BhcmVuY3lM
YXllcj4oaXRlbU9mZnNldCwgKnRoaXMpOwogICAgIGNhc2UgSXRlbVR5cGU6OkNsZWFyUmVjdDoK
QEAgLTU3MCw4ICs1NTYsNiBAQCBib29sIEl0ZW1IYW5kbGU6OnNhZmVDb3B5KEl0ZW1UeXBlIGl0
ZW1UeXBlLCBJdGVtSGFuZGxlIGRlc3RpbmF0aW9uKSBjb25zdAogICAgICAgICByZXR1cm4gY29w
eUludG88RHJhd0xpbmU+KGl0ZW1PZmZzZXQsICp0aGlzKTsKICAgICBjYXNlIEl0ZW1UeXBlOjpE
cmF3UmVjdDoKICAgICAgICAgcmV0dXJuIGNvcHlJbnRvPERyYXdSZWN0PihpdGVtT2Zmc2V0LCAq
dGhpcyk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOgotICAg
ICAgICByZXR1cm4gY29weUludG88RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPihpdGVtT2Zmc2V0
LCAqdGhpcyk7CiAgICAgY2FzZSBJdGVtVHlwZTo6RW5kVHJhbnNwYXJlbmN5TGF5ZXI6CiAgICAg
ICAgIHJldHVybiBjb3B5SW50bzxFbmRUcmFuc3BhcmVuY3lMYXllcj4oaXRlbU9mZnNldCwgKnRo
aXMpOwogICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxFbGxpcHNlOgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5
cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SXRlbVR5cGUuY3BwCmluZGV4IGRmYTFlNzRmYjI0ODZjMzRhMDljMWZhMWJhMmNi
ZGU3NDkwMDRkZGIuLmY2NzdhNmRhMzk5ZjUxOGQ5YzFiYWJlZTkyODdlNWU3M2U1NDViYWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1UeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5jcHAKQEAgLTc2LDEwICs3Niw2
IEBAIHN0YXRpYyBzaXplX3Qgc2l6ZU9mSXRlbUluQnl0ZXMoSXRlbVR5cGUgdHlwZSkKICAgICAg
ICAgcmV0dXJuIHNpemVvZihDbGlwT3V0VG9QYXRoKTsKICAgICBjYXNlIEl0ZW1UeXBlOjpDbGlw
UGF0aDoKICAgICAgICAgcmV0dXJuIHNpemVvZihDbGlwUGF0aCk7Ci0gICAgY2FzZSBJdGVtVHlw
ZTo6QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM6Ci0gICAgICAgIHJldHVybiBzaXplb2YoQmVn
aW5DbGlwVG9EcmF3aW5nQ29tbWFuZHMpOwotICAgIGNhc2UgSXRlbVR5cGU6OkVuZENsaXBUb0Ry
YXdpbmdDb21tYW5kczoKLSAgICAgICAgcmV0dXJuIHNpemVvZihFbmRDbGlwVG9EcmF3aW5nQ29t
bWFuZHMpOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdGaWx0ZXJlZEltYWdlQnVmZmVyOgogICAg
ICAgICByZXR1cm4gc2l6ZW9mKERyYXdGaWx0ZXJlZEltYWdlQnVmZmVyKTsKICAgICBjYXNlIEl0
ZW1UeXBlOjpEcmF3R2x5cGhzOgpAQCAtMTk0LDggKzE5MCw2IEBAIGJvb2wgaXNEcmF3aW5nSXRl
bShJdGVtVHlwZSB0eXBlKQogICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBUb0ltYWdlQnVmZmVyOgog
ICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBPdXRUb1BhdGg6CiAgICAgY2FzZSBJdGVtVHlwZTo6Q2xp
cFBhdGg6Ci0gICAgY2FzZSBJdGVtVHlwZTo6QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM6Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOgogICAgIGNhc2UgSXRl
bVR5cGU6OkNvbmNhdGVuYXRlQ1RNOgogICAgIGNhc2UgSXRlbVR5cGU6OkZsdXNoQ29udGV4dDoK
ICAgICBjYXNlIEl0ZW1UeXBlOjpSZXN0b3JlOgpAQCAtMjkwLDcgKzI4NCw2IEBAIGJvb2wgaXNJ
bmxpbmVJdGVtKEl0ZW1UeXBlIHR5cGUpCiAgICAgICogYW5kICgzKSBhbGwgdGhlICJzdGF0aWMg
Y29uc3RleHByIGJvb2wgaXNJbmxpbmVJdGVtInMgaW5zaWRlIHRoZSBpbmRpdmlkdWFsIGl0ZW0g
Y2xhc3Nlcy4gKi8KIAogICAgIHN3aXRjaCAodHlwZSkgewotICAgIGNhc2UgSXRlbVR5cGU6OkJl
Z2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOgogICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBPdXRUb1Bh
dGg6CiAgICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFBhdGg6CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJh
d0ZvY3VzUmluZ1BhdGg6CkBAIC0zMjEsNyArMzE0LDYgQEAgYm9vbCBpc0lubGluZUl0ZW0oSXRl
bVR5cGUgdHlwZSkKICAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwOgogICAgIGNhc2UgSXRlbVR5cGU6
OkNsaXBPdXQ6CiAgICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFRvSW1hZ2VCdWZmZXI6Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOgogICAgIGNhc2UgSXRlbVR5cGU6
OkNvbmNhdGVuYXRlQ1RNOgogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdEb3RzRm9yRG9jdW1lbnRN
YXJrZXI6CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0VsbGlwc2U6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVt
VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SXRlbVR5cGUuaAppbmRleCA5MWYzZjVmNTI4OGJjN2ViMmRhZDZlNDJkZGZiM2Ri
ZjE5ODBjNzgzLi5hZDliZGU0ZTdiOGNkZDAwZDYyZTYzNDAzM2U1Y2JjOTAzMjM2YzI2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJdGVtVHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmgKQEAgLTUwLDggKzUwLDYgQEAgZW51
bSBjbGFzcyBJdGVtVHlwZSA6IHVpbnQ4X3QgewogICAgIENsaXBUb0ltYWdlQnVmZmVyLAogICAg
IENsaXBPdXRUb1BhdGgsCiAgICAgQ2xpcFBhdGgsCi0gICAgQmVnaW5DbGlwVG9EcmF3aW5nQ29t
bWFuZHMsCi0gICAgRW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzLAogICAgIERyYXdGaWx0ZXJlZElt
YWdlQnVmZmVyLAogICAgIERyYXdHbHlwaHMsCiAgICAgRHJhd0ltYWdlQnVmZmVyLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0SXRlbXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCmluZGV4IDMxYWM4YjRhZDdkYmY3MmRhMzY0YTA1
NTc3NmY2YjI5NzlhNDY5ZDcuLjU3ZjliOTBmZmNhZjkwNmYwZjQxNGFlNzg4ZGJiNjIzNGRhMDcx
ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKQEAgLTI4NywxOSArMjg3
LDYgQEAgc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0
IENsaXBQYXRoJiBpdGVtKQogICAgIHJldHVybiB0czsKIH0KIAotc3RhdGljIFRleHRTdHJlYW0m
IG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1h
bmRzJiBpdGVtKQotewotICAgIHRzLmR1bXBQcm9wZXJ0eSgiZGVzdGluYXRpb24iLCBpdGVtLmRl
c3RpbmF0aW9uKCkpOwotICAgIHRzLmR1bXBQcm9wZXJ0eSgiY29sb3Itc3BhY2UiLCBpdGVtLmNv
bG9yU3BhY2UoKSk7Ci0gICAgcmV0dXJuIHRzOwotfQotCi1zdGF0aWMgVGV4dFN0cmVhbSYgb3Bl
cmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzJiBp
dGVtKQotewotICAgIHRzLmR1bXBQcm9wZXJ0eSgiZGVzdGluYXRpb24iLCBpdGVtLmRlc3RpbmF0
aW9uKCkpOwotICAgIHJldHVybiB0czsKLX0KLQogRHJhd0ZpbHRlcmVkSW1hZ2VCdWZmZXI6OkRy
YXdGaWx0ZXJlZEltYWdlQnVmZmVyKHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyPiBzb3VyY2VJbWFnZUlkZW50aWZpZXIsIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlSW1h
Z2VSZWN0LCBGaWx0ZXImIGZpbHRlcikKICAgICA6IG1fc291cmNlSW1hZ2VJZGVudGlmaWVyKHNv
dXJjZUltYWdlSWRlbnRpZmllcikKICAgICAsIG1fc291cmNlSW1hZ2VSZWN0KHNvdXJjZUltYWdl
UmVjdCkKQEAgLTEwODIsOCArMTA2OSw2IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8
KFRleHRTdHJlYW0mIHRzLCBJdGVtVHlwZSB0eXBlKQogICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBU
b0ltYWdlQnVmZmVyOiB0cyA8PCAiY2xpcC10by1pbWFnZS1idWZmZXIiOyBicmVhazsKICAgICBj
YXNlIEl0ZW1UeXBlOjpDbGlwT3V0VG9QYXRoOiB0cyA8PCAiY2xpcC1vdXQtdG8tcGF0aCI7IGJy
ZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBQYXRoOiB0cyA8PCAiY2xpcC1wYXRoIjsgYnJl
YWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM6IHRzIDw8
ICJiZWdpbi1jbGlwLXRvLWRyYXdpbmctY29tbWFuZHM6IjsgYnJlYWs7Ci0gICAgY2FzZSBJdGVt
VHlwZTo6RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOiB0cyA8PCAiZW5kLWNsaXAtdG8tZHJhd2lu
Zy1jb21tYW5kcyI7IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdGaWx0ZXJlZEltYWdl
QnVmZmVyOiB0cyA8PCAiZHJhdy1maWx0ZXJlZC1pbWFnZS1idWZmZXIiOyBicmVhazsKICAgICBj
YXNlIEl0ZW1UeXBlOjpEcmF3R2x5cGhzOiB0cyA8PCAiZHJhdy1nbHlwaHMiOyBicmVhazsKICAg
ICBjYXNlIEl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXI6IHRzIDw8ICJkcmF3LWltYWdlLWJ1ZmZl
ciI7IGJyZWFrOwpAQCAtMTE5OCwxMiArMTE4Myw2IEBAIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwo
VGV4dFN0cmVhbSYgdHMsIEl0ZW1IYW5kbGUgaXRlbSkKICAgICBjYXNlIEl0ZW1UeXBlOjpDbGlw
UGF0aDoKICAgICAgICAgdHMgPDwgaXRlbS5nZXQ8Q2xpcFBhdGg+KCk7CiAgICAgICAgIGJyZWFr
OwotICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOgotICAgICAg
ICB0cyA8PCBpdGVtLmdldDxCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcz4oKTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOgotICAg
ICAgICB0cyA8PCBpdGVtLmdldDxFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM+KCk7Ci0gICAgICAg
IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdGaWx0ZXJlZEltYWdlQnVmZmVyOgogICAg
ICAgICB0cyA8PCBpdGVtLmdldDxEcmF3RmlsdGVyZWRJbWFnZUJ1ZmZlcj4oKTsKICAgICAgICAg
YnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAppbmRleCBlZjBjMTg3N2QxOTM4
YmRjMDYxMDU0Yjk0MmZhNjI4MGJjNDdmMjAzLi5lZmI1MWQyYmE0YzEwNTZlOTczZmY3NjcxZTZl
NWE1ZjQ3ZjI4ZGU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKQEAgLTg0NCw3
NCArODQ0LDYgQEAgc3RkOjpvcHRpb25hbDxDbGlwUGF0aD4gQ2xpcFBhdGg6OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyKQogICAgIHJldHVybiB7eyBXVEZNb3ZlKCpwYXRoKSwgKndpbmRSdWxlIH19
OwogfQogCi1jbGFzcyBCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcyB7Ci1wdWJsaWM6Ci0gICAg
c3RhdGljIGNvbnN0ZXhwciBJdGVtVHlwZSBpdGVtVHlwZSA9IEl0ZW1UeXBlOjpCZWdpbkNsaXBU
b0RyYXdpbmdDb21tYW5kczsKLSAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNJbmxpbmVJdGVt
ID0gZmFsc2U7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzRHJhd2luZ0l0ZW0gPSBmYWxz
ZTsKLQotICAgIEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVz
dGluYXRpb24sIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlKQotICAgICAgICA6IG1f
ZGVzdGluYXRpb24oZGVzdGluYXRpb24pCi0gICAgICAgICwgbV9jb2xvclNwYWNlKFdURk1vdmUo
Y29sb3JTcGFjZSkpCi0gICAgewotICAgIH0KLQotICAgIC8vIEV4cGxpY2l0IGRlc3RydWN0b3Ig
YWRkZWQgdG8gZm9yY2Ugbm9uLXRyaXZpYWwgZGVzdHJ1Y3RvciBvbiBhbGwgcGxhdGZvcm1zCi0g
ICAgLy8gYXMgdGhlIGVuY29kaW5nIGxvZ2ljIGN1cnJlbnRseSBoYXJkY29kZXMgd2hpY2ggZGlz
cGxheSBsaXN0IGl0ZW0gdHlwZXMgbmVlZAotICAgIC8vIG91dCBvZiBsaW5lIHRyZWF0bWVudCBy
YXRoZXIgdGhhbiB1c2luZyB0aGUgaXNJbmxpbmVJdGVtIGNvbnN0YW50LgotICAgIH5CZWdpbkNs
aXBUb0RyYXdpbmdDb21tYW5kcygpIHsgfQotCi0gICAgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5h
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZGVzdGluYXRpb247IH0KLSAgICBjb25zdCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UoKSBjb25zdCB7IHJldHVybiBtX2NvbG9yU3BhY2U7
IH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBj
b25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxC
ZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcz4gZGVjb2RlKERlY29kZXImKTsKLQotcHJpdmF0ZToK
LSAgICBGbG9hdFJlY3QgbV9kZXN0aW5hdGlvbjsKLSAgICBEZXN0aW5hdGlvbkNvbG9yU3BhY2Ug
bV9jb2xvclNwYWNlOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KLXZvaWQgQmVnaW5D
bGlwVG9EcmF3aW5nQ29tbWFuZHM6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAotewot
ICAgIGVuY29kZXIgPDwgbV9kZXN0aW5hdGlvbjsKLSAgICBlbmNvZGVyIDw8IG1fY29sb3JTcGFj
ZTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLXN0ZDo6b3B0aW9uYWw8QmVnaW5DbGlw
VG9EcmF3aW5nQ29tbWFuZHM+IEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKLXsKLSAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gZGVzdGluYXRp
b247Ci0gICAgZGVjb2RlciA+PiBkZXN0aW5hdGlvbjsKLSAgICBpZiAoIWRlc3RpbmF0aW9uKQot
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgc3RkOjpvcHRpb25hbDxEZXN0aW5h
dGlvbkNvbG9yU3BhY2U+IGNvbG9yU3BhY2U7Ci0gICAgZGVjb2RlciA+PiBjb2xvclNwYWNlOwot
ICAgIGlmICghY29sb3JTcGFjZSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAg
IHJldHVybiB7eyAqZGVzdGluYXRpb24sIFdURk1vdmUoKmNvbG9yU3BhY2UpIH19OwotfQotCi1j
bGFzcyBFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHMgewotcHVibGljOgotICAgIHN0YXRpYyBjb25z
dGV4cHIgSXRlbVR5cGUgaXRlbVR5cGUgPSBJdGVtVHlwZTo6RW5kQ2xpcFRvRHJhd2luZ0NvbW1h
bmRzOwotICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0lubGluZUl0ZW0gPSB0cnVlOwotICAg
IHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0RyYXdpbmdJdGVtID0gZmFsc2U7Ci0KLSAgICBFbmRD
bGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbikKLSAgICAg
ICAgOiBtX2Rlc3RpbmF0aW9uKGRlc3RpbmF0aW9uKQotICAgIHsKLSAgICB9Ci0KLSAgICBjb25z
dCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9kZXN0aW5hdGlvbjsg
fQotCi1wcml2YXRlOgotICAgIEZsb2F0UmVjdCBtX2Rlc3RpbmF0aW9uOwotfTsKLQogY2xhc3Mg
RHJhd0ZpbHRlcmVkSW1hZ2VCdWZmZXIgewogcHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4cHIg
SXRlbVR5cGUgaXRlbVR5cGUgPSBJdGVtVHlwZTo6RHJhd0ZpbHRlcmVkSW1hZ2VCdWZmZXI7CkBA
IC0yNDE2LDcgKzIzNDgsNiBAQCBwcml2YXRlOgogCiB1c2luZyBEaXNwbGF5TGlzdEl0ZW0gPSBz
dGQ6OnZhcmlhbnQKICAgICA8IEFwcGx5RGV2aWNlU2NhbGVGYWN0b3IKLSAgICAsIEJlZ2luQ2xp
cFRvRHJhd2luZ0NvbW1hbmRzCiAgICAgLCBCZWdpblRyYW5zcGFyZW5jeUxheWVyCiAgICAgLCBD
bGVhclJlY3QKICAgICAsIENsZWFyU2hhZG93CkBAIC0yNDM5LDcgKzIzNzAsNiBAQCB1c2luZyBE
aXNwbGF5TGlzdEl0ZW0gPSBzdGQ6OnZhcmlhbnQKICAgICAsIERyYXdQYXRoCiAgICAgLCBEcmF3
UGF0dGVybgogICAgICwgRHJhd1JlY3QKLSAgICAsIEVuZENsaXBUb0RyYXdpbmdDb21tYW5kcwog
ICAgICwgRW5kVHJhbnNwYXJlbmN5TGF5ZXIKICAgICAsIEZpbGxDb21wb3NpdGVkUmVjdAogICAg
ICwgRmlsbEVsbGlwc2UKQEAgLTI1MjUsOCArMjQ1NSw2IEBAIHRlbXBsYXRlPD4gc3RydWN0IEVu
dW1UcmFpdHM8V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlPiB7CiAgICAgV2ViQ29yZTo6
RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpDbGlwVG9JbWFnZUJ1ZmZlciwKICAgICBXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6SXRlbVR5cGU6OkNsaXBPdXRUb1BhdGgsCiAgICAgV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6Okl0ZW1UeXBlOjpDbGlwUGF0aCwKLSAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRl
bVR5cGU6OkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzLAotICAgIFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpJdGVtVHlwZTo6RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzLAogICAgIFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0dseXBocywKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6SXRlbVR5cGU6OkRyYXdJbWFnZUJ1ZmZlciwKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
SXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJl
Y29yZGVyLmNwcAppbmRleCA4OWYzZDM1M2RhN2JiNDE3MTE4ZmY3MTg4Y2VkYzA3YzA4YmNjODQ3
Li5hZTNkNzM1MDQzYjgwYTBjMWZiYmFlMjIwNTMxZGJjNTc1ZmQxNGQyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RS
ZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCkBAIC00ODYsMjcgKzQ4Niw2IEBAIHZvaWQg
UmVjb3JkZXI6OmNsaXBUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiBpbWFnZUJ1ZmZlciwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0CiAgICAgcmVjb3JkQ2xpcFRvSW1hZ2VCdWZmZXIoaW1hZ2VCdWZm
ZXIucmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCksIGRlc3RSZWN0KTsKIH0KIAotR3JhcGhp
Y3NDb250ZXh0OjpDbGlwVG9EcmF3aW5nQ29tbWFuZHNSZXN1bHQgUmVjb3JkZXI6OmNsaXBUb0Ry
YXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3NDb250ZXh0
Jik+JiYgZHJhd2luZ0Z1bmN0aW9uKQotewotICAgIGF1dG8gaW5pdGlhbENsaXAgPSBGbG9hdFJl
Y3QoRmxvYXRQb2ludCgpLCBkZXN0aW5hdGlvbi5zaXplKCkpOwotCi0gICAgLy8gVGhlIGluaXRp
YWwgQ1RNIG1hdGNoZXMgSW1hZ2VCdWZmZXIncyBpbml0aWFsIENUTS4KLSAgICBBZmZpbmVUcmFu
c2Zvcm0gdHJhbnNmb3JtID0gZ2V0Q1RNKEdyYXBoaWNzQ29udGV4dDo6RGVmaW5pdGVseUluY2x1
ZGVEZXZpY2VTY2FsZSk7Ci0gICAgRmxvYXRTaXplIHNjYWxlRmFjdG9yKHRyYW5zZm9ybS54U2Nh
bGUoKSwgdHJhbnNmb3JtLnlTY2FsZSgpKTsKLSAgICBhdXRvIHNjYWxlZFNpemUgPSBleHBhbmRl
ZEludFNpemUoZGVzdGluYXRpb24uc2l6ZSgpICogc2NhbGVGYWN0b3IpOwotICAgIEFmZmluZVRy
YW5zZm9ybSBpbml0aWFsQ1RNOwotICAgIGluaXRpYWxDVE0uc2NhbGUoMSwgLTEpOwotICAgIGlu
aXRpYWxDVE0udHJhbnNsYXRlKDAsIC1zY2FsZWRTaXplLmhlaWdodCgpKTsKLSAgICBpbml0aWFs
Q1RNLnNjYWxlKHNjYWxlZFNpemUgLyBkZXN0aW5hdGlvbi5zaXplKCkpOwotCi0gICAgYXV0byBu
ZXN0ZWRDb250ZXh0ID0gY3JlYXRlTmVzdGVkQ29udGV4dChpbml0aWFsQ2xpcCwgaW5pdGlhbENU
TSk7Ci0gICAgcmVjb3JkQmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHMoZGVzdGluYXRpb24sIGNv
bG9yU3BhY2UpOwotICAgIGRyYXdpbmdGdW5jdGlvbigqbmVzdGVkQ29udGV4dCk7Ci0gICAgcmVj
b3JkRW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKGRlc3RpbmF0aW9uKTsKLQotICAgIHJldHVybiBD
bGlwVG9EcmF3aW5nQ29tbWFuZHNSZXN1bHQ6OlN1Y2Nlc3M7Ci19Ci0KICNpZiBFTkFCTEUoVklE
RU8pCiB2b2lkIFJlY29yZGVyOjpwYWludEZyYW1lRm9yTWVkaWEoTWVkaWFQbGF5ZXImIHBsYXll
ciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RSZWNvcmRlci5oCmluZGV4IDliMmIwYjkzNzkwMWQ4NjUxMTYxZWI4MmI5MGY0ZDA1Yjk0
MjVlMGYuLjllN2JlNTBlZTcwMWVhYzFmNDM0ZDlmMDkxNGJjY2NmMjc3YTE5MzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdFJlY29yZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaApAQCAtODksOCArODksNiBAQCBwcm90ZWN0
ZWQ6CiAgICAgdmlydHVhbCB2b2lkIHJlY29yZENsaXBUb0ltYWdlQnVmZmVyKFJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllciBpbWFnZUJ1ZmZlcklkZW50aWZpZXIsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdGluYXRpb25SZWN0KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlY29yZENsaXBPdXRUb1Bh
dGgoY29uc3QgUGF0aCYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkQ2xpcFBhdGgoY29u
c3QgUGF0aCYsIFdpbmRSdWxlKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHJlY29yZEJlZ2luQ2xp
cFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIERlc3RpbmF0
aW9uQ29sb3JTcGFjZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCByZWNvcmRFbmRDbGlwVG9EcmF3
aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCByZWNvcmREcmF3RmlsdGVyZWRJbWFnZUJ1ZmZlcihzdGQ6Om9wdGlvbmFsPFJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcj4gc291cmNlSW1hZ2VJZGVudGlmaWVyLCBjb25zdCBGbG9h
dFJlY3QmIHNvdXJjZUltYWdlUmVjdCwgRmlsdGVyJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBy
ZWNvcmREcmF3R2x5cGhzKGNvbnN0IEZvbnQmLCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiwgY29u
c3QgR2x5cGhCdWZmZXJBZHZhbmNlKiwgdW5zaWduZWQgY291bnQsIGNvbnN0IEZsb2F0UG9pbnQm
IGxvY2FsQW5jaG9yLCBGb250U21vb3RoaW5nTW9kZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBy
ZWNvcmREcmF3SW1hZ2VCdWZmZXIoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGltYWdlQnVm
ZmVySWRlbnRpZmllciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsKQEAgLTE0OCw4ICsx
NDYsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBib29sIGNhbkRyYXdJbWFnZUJ1ZmZlcihj
b25zdCBJbWFnZUJ1ZmZlciYpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFJlbmRlcmluZ01vZGUg
cmVuZGVyaW5nTW9kZSgpIGNvbnN0ID0gMDsKIAotICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRy
PEdyYXBoaWNzQ29udGV4dD4gY3JlYXRlTmVzdGVkQ29udGV4dChjb25zdCBGbG9hdFJlY3QmIGlu
aXRpYWxDbGlwLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGluaXRpYWxDVE0pID0gMDsKLQogICAg
IHN0cnVjdCBDb250ZXh0U3RhdGUgewogICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gY3RtOwogICAg
ICAgICBGbG9hdFJlY3QgY2xpcEJvdW5kczsKQEAgLTI3Myw3ICsyNjksNiBAQCBwcml2YXRlOgog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xpcFBhdGgoY29uc3QgUGF0aCYsIFdpbmRSdWxlKSBm
aW5hbDsKICAgICBXRUJDT1JFX0VYUE9SVCBJbnRSZWN0IGNsaXBCb3VuZHMoKSBjb25zdCBmaW5h
bDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsaXBUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVy
JiwgY29uc3QgRmxvYXRSZWN0JikgZmluYWw7Ci0gICAgV0VCQ09SRV9FWFBPUlQgR3JhcGhpY3ND
b250ZXh0OjpDbGlwVG9EcmF3aW5nQ29tbWFuZHNSZXN1bHQgY2xpcFRvRHJhd2luZ0NvbW1hbmRz
KGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSYsIEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3NDb250ZXh0Jik+JiYpIGZpbmFsOwogCiAjaWYgRU5B
QkxFKFZJREVPKQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcGFpbnRGcmFtZUZvck1lZGlhKE1l
ZGlhUGxheWVyJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbikgZmluYWw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RSZWNvcmRlckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmNwcAppbmRleCBmZTUxNTU4ZDc4
MjM1MzQxOWE2NGM5YTdmOWI4OTc5MDNhYTZmOWE0Li4xODQ5ZWE2NGJkYjI1NDc3ZWZjMjQ2OWE1
MTZhYTJiODAzNGY4ZWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlckltcGwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29y
ZGVySW1wbC5jcHAKQEAgLTUwLDE5ICs1MCw5IEBAIFJlY29yZGVySW1wbDo6UmVjb3JkZXJJbXBs
KERpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCwgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmCiAg
ICAgTE9HX1dJVEhfU1RSRUFNKERpc3BsYXlMaXN0cywgc3RyZWFtIDw8ICJcblJlY29yZGluZyB3
aXRoIGNsaXAgIiA8PCBpbml0aWFsQ2xpcCk7CiB9CiAKLVJlY29yZGVySW1wbDo6UmVjb3JkZXJJ
bXBsKFJlY29yZGVySW1wbCYgcGFyZW50LCBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3Rh
dGUsIGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYg
aW5pdGlhbENUTSkKLSAgICA6IFJlY29yZGVyKHBhcmVudCwgc3RhdGUsIGluaXRpYWxDbGlwLCBp
bml0aWFsQ1RNKQotICAgICwgbV9kaXNwbGF5TGlzdChwYXJlbnQubV9kaXNwbGF5TGlzdCkKLSAg
ICAsIG1fZGVsZWdhdGUocGFyZW50Lm1fZGVsZWdhdGUpCi0gICAgLCBtX2lzTmVzdGVkKHRydWUp
Ci17Ci19Ci0KIFJlY29yZGVySW1wbDo6flJlY29yZGVySW1wbCgpCiB7CiAgICAgQVNTRVJUKHN0
YXRlU3RhY2soKS5zaXplKCkgPT0gMSk7IC8vIElmIHRoaXMgZmlyZXMsIGl0IGluZGljYXRlcyBt
aXNtYXRjaGVkIHNhdmUvcmVzdG9yZS4KLSAgICBpZiAoIW1faXNOZXN0ZWQpCi0gICAgICAgIExP
RyhEaXNwbGF5TGlzdHMsICJSZWNvcmRlZCBkaXNwbGF5IGxpc3Q6XG4lcyIsIG1fZGlzcGxheUxp
c3QuZGVzY3JpcHRpb24oKS5kYXRhKCkpOwogfQogCiB2b2lkIFJlY29yZGVySW1wbDo6Z2V0UGl4
ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmIG91dHB1dEZvcm1hdCwgY29uc3QgSW50
UmVjdCYgc291cmNlUmVjdCkKQEAgLTkwLDExICs4MCw2IEBAIFJlbmRlcmluZ01vZGUgUmVjb3Jk
ZXJJbXBsOjpyZW5kZXJpbmdNb2RlKCkgY29uc3QKICAgICByZXR1cm4gbV9kZWxlZ2F0ZSA/IG1f
ZGVsZWdhdGUtPnJlbmRlcmluZ01vZGUoKSA6IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQ7
CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHQ+IFJlY29yZGVySW1wbDo6Y3Jl
YXRlTmVzdGVkQ29udGV4dChjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwLCBjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mIGluaXRpYWxDVE0pCi17Ci0gICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVjb3Jk
ZXJJbXBsPigqdGhpcywgR3JhcGhpY3NDb250ZXh0U3RhdGUgeyB9LCBpbml0aWFsQ2xpcCwgaW5p
dGlhbENUTSk7Ci19Ci0KIHZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRTYXZlKCkKIHsKICAgICBh
cHBlbmQ8U2F2ZT4oKTsKQEAgLTIwMCwxNiArMTg1LDYgQEAgdm9pZCBSZWNvcmRlckltcGw6OnJl
Y29yZENsaXBQYXRoKGNvbnN0IFBhdGgmIHBhdGgsIFdpbmRSdWxlIHJ1bGUpCiAgICAgYXBwZW5k
PENsaXBQYXRoPihwYXRoLCBydWxlKTsKIH0KIAotdm9pZCBSZWNvcmRlckltcGw6OnJlY29yZEJl
Z2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIERl
c3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlKQotewotICAgIGFwcGVuZDxCZWdpbkNsaXBU
b0RyYXdpbmdDb21tYW5kcz4oZGVzdGluYXRpb24sIGNvbG9yU3BhY2UpOwotfQotCi12b2lkIFJl
Y29yZGVySW1wbDo6cmVjb3JkRW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVj
dCYgZGVzdGluYXRpb24pCi17Ci0gICAgYXBwZW5kPEVuZENsaXBUb0RyYXdpbmdDb21tYW5kcz4o
ZGVzdGluYXRpb24pOwotfQotCiB2b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkRHJhd0ZpbHRlcmVk
SW1hZ2VCdWZmZXIoc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IHNv
dXJjZUltYWdlSWRlbnRpZmllciwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2VJbWFnZVJlY3QsIEZp
bHRlciYgZmlsdGVyKQogewogICAgIGFwcGVuZDxEcmF3RmlsdGVyZWRJbWFnZUJ1ZmZlcj4oc291
cmNlSW1hZ2VJZGVudGlmaWVyLCBzb3VyY2VJbWFnZVJlY3QsIGZpbHRlcik7CkBAIC00NTYsNiAr
NDMxLDExIEBAIGJvb2wgUmVjb3JkZXJJbXBsOjpyZWNvcmRSZXNvdXJjZVVzZShGb250JiBmb250
KQogICAgIHJldHVybiB0cnVlOwogfQogCitSZWZQdHI8SW1hZ2VCdWZmZXI+IFJlY29yZGVySW1w
bDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0
aW9uU2NhbGUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSkgY29uc3QK
K3sKKyAgICByZXR1cm4gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCByZW5kZXJpbmdNb2RlKCks
IFNob3VsZFVzZURpc3BsYXlMaXN0OjpZZXMsIFJlbmRlcmluZ1B1cnBvc2U6OlVuc3BlY2lmaWVk
LCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JBOCk7Cit9CisK
IC8vIEZJWE1FOiBzaGFyZSB3aXRoIFNoYWRvd0RhdGEKIHN0YXRpYyBpbmxpbmUgZmxvYXQgc2hh
ZG93UGFpbnRpbmdFeHRlbnQoZmxvYXQgYmx1clJhZGl1cykKIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29y
ZGVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmgKaW5kZXggZWQ0NzEwYjNkNjkwM2JlZDYyNjljZGJj
NmIyNTdmNTdmZmY1ODhlYy4uMmJhZWE3ZWI1NTM0YzJhY2JjYWYyYTMyMjYwOGQzZTk5NDQ3ZTBl
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmgKQEAgLTM3
LDggKzM3LDYgQEAgY2xhc3MgUmVjb3JkZXJJbXBsIDogcHVibGljIFJlY29yZGVyIHsKIHB1Ymxp
YzoKICAgICBjbGFzcyBEZWxlZ2F0ZTsKICAgICBXRUJDT1JFX0VYUE9SVCBSZWNvcmRlckltcGwo
RGlzcGxheUxpc3QmLCBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYsIGNvbnN0IEZsb2F0UmVj
dCYgaW5pdGlhbENsaXAsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIERlbGVnYXRlKiA9IG51bGxw
dHIsIERyYXdHbHlwaHNSZWNvcmRlcjo6RGVjb25zdHJ1Y3REcmF3R2x5cGhzID0gRHJhd0dseXBo
c1JlY29yZGVyOjpEZWNvbnN0cnVjdERyYXdHbHlwaHM6Olllcyk7Ci0gICAgUmVjb3JkZXJJbXBs
KFJlY29yZGVySW1wbCYgcGFyZW50LCBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYsIGNvbnN0
IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgaW5pdGlhbENU
TSk7Ci0KICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5SZWNvcmRlckltcGwoKTsKIAogICAg
IGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcGxheUxpc3QuaXNFbXB0eSgpOyB9
CkBAIC04Niw4ICs4NCw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZWNvcmRDbGlwVG9JbWFnZUJ1
ZmZlcihSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVyLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uUmVjdCkgZmluYWw7CiAgICAgdm9pZCByZWNvcmRD
bGlwT3V0VG9QYXRoKGNvbnN0IFBhdGgmKSBmaW5hbDsKICAgICB2b2lkIHJlY29yZENsaXBQYXRo
KGNvbnN0IFBhdGgmLCBXaW5kUnVsZSkgZmluYWw7Ci0gICAgdm9pZCByZWNvcmRCZWdpbkNsaXBU
b0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2UpIGZpbmFsOwotICAgIHZvaWQgcmVjb3JkRW5kQ2xpcFRvRHJhd2luZ0NvbW1h
bmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24pIGZpbmFsOwogICAgIHZvaWQgcmVjb3Jk
RHJhd0ZpbHRlcmVkSW1hZ2VCdWZmZXIoc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXI+IHNvdXJjZUltYWdlSWRlbnRpZmllciwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2VJ
bWFnZVJlY3QsIEZpbHRlciYpIGZpbmFsOwogICAgIHZvaWQgcmVjb3JkRHJhd0dseXBocyhjb25z
dCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCosIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5j
ZSosIHVuc2lnbmVkIGNvdW50LCBjb25zdCBGbG9hdFBvaW50JiBsb2NhbEFuY2hvciwgRm9udFNt
b290aGluZ01vZGUpIGZpbmFsOwogICAgIHZvaWQgcmVjb3JkRHJhd0ltYWdlQnVmZmVyKFJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllciBpbWFnZUJ1ZmZlcklkZW50aWZpZXIsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWlu
dGluZ09wdGlvbnMmKSBmaW5hbDsKQEAgLTE0MSw3ICsxMzcsNyBAQCBwcml2YXRlOgogICAgIGJv
b2wgcmVjb3JkUmVzb3VyY2VVc2UoY29uc3QgU291cmNlSW1hZ2UmKSBmaW5hbDsKICAgICBib29s
IHJlY29yZFJlc291cmNlVXNlKEZvbnQmKSBmaW5hbDsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxH
cmFwaGljc0NvbnRleHQ+IGNyZWF0ZU5lc3RlZENvbnRleHQoY29uc3QgRmxvYXRSZWN0JiBpbml0
aWFsQ2xpcCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBpbml0aWFsQ1RNKSBmaW5hbDsKKyAgICBS
ZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZsb2F0
U2l6ZSYsIGZsb2F0IHJlc29sdXRpb25TY2FsZSA9IDEsIGNvbnN0IFdlYkNvcmU6OkRlc3RpbmF0
aW9uQ29sb3JTcGFjZSYgPSBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSkg
Y29uc3QgZmluYWw7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBjbGFzcy4uLiBBcmdzPgog
ICAgIHZvaWQgYXBwZW5kKEFyZ3MmJi4uLiBhcmdzKQpAQCAtMTcwLDcgKzE2Niw2IEBAIHByaXZh
dGU6CiAKICAgICBEaXNwbGF5TGlzdCYgbV9kaXNwbGF5TGlzdDsKICAgICBEZWxlZ2F0ZSogbV9k
ZWxlZ2F0ZSB7IG51bGxwdHIgfTsKLSAgICBib29sIG1faXNOZXN0ZWQgeyBmYWxzZSB9OwogfTsK
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCmluZGV4IDIxODY1
MGFmNThhNGE3YmNmMmMxNDEwZmYwZWYwMDUwNjgxYjZlZWQuLjA1NjBkNGRkZmUwNGNmNDc2YjMz
YWRiYzYyMDA1ZDM3NDg0MDdhZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBs
YXllci5jcHAKQEAgLTM3LDkgKzM3LDggQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFj
ZSBEaXNwbGF5TGlzdCB7CiAKLVJlcGxheWVyOjpSZXBsYXllcihHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIGNvbnN0IERpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCwgY29uc3QgUmVzb3VyY2VIZWFw
KiByZXNvdXJjZUhlYXAsIEltYWdlQnVmZmVyKiBtYXNrSW1hZ2VCdWZmZXIsIERlbGVnYXRlKiBk
ZWxlZ2F0ZSkKK1JlcGxheWVyOjpSZXBsYXllcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNv
bnN0IERpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCwgY29uc3QgUmVzb3VyY2VIZWFwKiByZXNvdXJj
ZUhlYXAsIERlbGVnYXRlKiBkZWxlZ2F0ZSkKICAgICA6IG1fY29udGV4dChjb250ZXh0KQotICAg
ICwgbV9tYXNrSW1hZ2VCdWZmZXIobWFza0ltYWdlQnVmZmVyKQogICAgICwgbV9kaXNwbGF5TGlz
dChkaXNwbGF5TGlzdCkKICAgICAsIG1fcmVzb3VyY2VIZWFwKHJlc291cmNlSGVhcCA/ICpyZXNv
dXJjZUhlYXAgOiBtX2Rpc3BsYXlMaXN0LnJlc291cmNlSGVhcCgpKQogICAgICwgbV9kZWxlZ2F0
ZShkZWxlZ2F0ZSkKQEAgLTQ4LDExICs0Nyw2IEBAIFJlcGxheWVyOjpSZXBsYXllcihHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IERpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCwgY29uCiAK
IFJlcGxheWVyOjp+UmVwbGF5ZXIoKSA9IGRlZmF1bHQ7CiAKLUdyYXBoaWNzQ29udGV4dCYgUmVw
bGF5ZXI6OmNvbnRleHQoKSBjb25zdAotewotICAgIHJldHVybiBtX21hc2tJbWFnZUJ1ZmZlciA/
IG1fbWFza0ltYWdlQnVmZmVyLT5jb250ZXh0KCkgOiBtX2NvbnRleHQ7Ci19Ci0KIHRlbXBsYXRl
PGNsYXNzIFQ+CiBpbmxpbmUgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyPiBhcHBseUltYWdlQnVmZmVySXRlbShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IFJlc291cmNlSGVhcCYgcmVzb3VyY2VIZWFwLCBJdGVtSGFuZGxlIGl0ZW0sIFJlcGxh
eWVyOjpEZWxlZ2F0ZSogZGVsZWdhdGUpCiB7CkBAIC0xMzAsNjkgKzEyNCw0NiBAQCBpbmxpbmUg
c3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBhcHBseUZv
bnRJdGVtKEdyYXBoaWNzQwogCiBzdGQ6OnBhaXI8c3RkOjpvcHRpb25hbDxTdG9wUmVwbGF5UmVh
c29uPiwgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+PiBSZXBsYXll
cjo6YXBwbHlJdGVtKEl0ZW1IYW5kbGUgaXRlbSkKIHsKLSAgICBpZiAobV9kZWxlZ2F0ZSAmJiBt
X2RlbGVnYXRlLT5hcHBseShpdGVtLCBjb250ZXh0KCkpKQorICAgIGlmIChtX2RlbGVnYXRlICYm
IG1fZGVsZWdhdGUtPmFwcGx5KGl0ZW0sIG1fY29udGV4dCkpCiAgICAgICAgIHJldHVybiB7IHN0
ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0IH07CiAKICAgICBpZiAoaXRlbS5pczxEcmF3SW1hZ2VC
dWZmZXI+KCkpIHsKLSAgICAgICAgaWYgKGF1dG8gbWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRp
ZmllciA9IGFwcGx5SW1hZ2VCdWZmZXJJdGVtPERyYXdJbWFnZUJ1ZmZlcj4oY29udGV4dCgpLCBt
X3Jlc291cmNlSGVhcCwgaXRlbSwgbV9kZWxlZ2F0ZSkpCisgICAgICAgIGlmIChhdXRvIG1pc3Np
bmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIgPSBhcHBseUltYWdlQnVmZmVySXRlbTxEcmF3SW1h
Z2VCdWZmZXI+KG1fY29udGV4dCwgbV9yZXNvdXJjZUhlYXAsIGl0ZW0sIG1fZGVsZWdhdGUpKQog
ICAgICAgICAgICAgcmV0dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6TWlzc2luZ0NhY2hlZFJlc291
cmNlLCBXVEZNb3ZlKG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIpIH07CiAgICAgICAg
IHJldHVybiB7IHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0IH07CiAgICAgfQogCiAgICAgaWYg
KGl0ZW0uaXM8Q2xpcFRvSW1hZ2VCdWZmZXI+KCkpIHsKLSAgICAgICAgaWYgKGF1dG8gbWlzc2lu
Z0NhY2hlZFJlc291cmNlSWRlbnRpZmllciA9IGFwcGx5SW1hZ2VCdWZmZXJJdGVtPENsaXBUb0lt
YWdlQnVmZmVyPihjb250ZXh0KCksIG1fcmVzb3VyY2VIZWFwLCBpdGVtLCBtX2RlbGVnYXRlKSkK
KyAgICAgICAgaWYgKGF1dG8gbWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllciA9IGFwcGx5
SW1hZ2VCdWZmZXJJdGVtPENsaXBUb0ltYWdlQnVmZmVyPihtX2NvbnRleHQsIG1fcmVzb3VyY2VI
ZWFwLCBpdGVtLCBtX2RlbGVnYXRlKSkKICAgICAgICAgICAgIHJldHVybiB7IFN0b3BSZXBsYXlS
ZWFzb246Ok1pc3NpbmdDYWNoZWRSZXNvdXJjZSwgV1RGTW92ZShtaXNzaW5nQ2FjaGVkUmVzb3Vy
Y2VJZGVudGlmaWVyKSB9OwogICAgICAgICByZXR1cm4geyBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVs
bG9wdCB9OwogICAgIH0KIAogICAgIGlmIChpdGVtLmlzPERyYXdOYXRpdmVJbWFnZT4oKSkgewot
ICAgICAgICBpZiAoYXV0byBtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyID0gYXBwbHlO
YXRpdmVJbWFnZUl0ZW08RHJhd05hdGl2ZUltYWdlPihjb250ZXh0KCksIG1fcmVzb3VyY2VIZWFw
LCBpdGVtLCBtX2RlbGVnYXRlKSkKKyAgICAgICAgaWYgKGF1dG8gbWlzc2luZ0NhY2hlZFJlc291
cmNlSWRlbnRpZmllciA9IGFwcGx5TmF0aXZlSW1hZ2VJdGVtPERyYXdOYXRpdmVJbWFnZT4obV9j
b250ZXh0LCBtX3Jlc291cmNlSGVhcCwgaXRlbSwgbV9kZWxlZ2F0ZSkpCiAgICAgICAgICAgICBy
ZXR1cm4geyBTdG9wUmVwbGF5UmVhc29uOjpNaXNzaW5nQ2FjaGVkUmVzb3VyY2UsIFdURk1vdmUo
bWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllcikgfTsKICAgICAgICAgcmV0dXJuIHsgc3Rk
OjpudWxsb3B0LCBzdGQ6Om51bGxvcHQgfTsKICAgICB9CiAKICAgICBpZiAoaXRlbS5pczxEcmF3
R2x5cGhzPigpKSB7Ci0gICAgICAgIGlmIChhdXRvIG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50
aWZpZXIgPSBhcHBseUZvbnRJdGVtPERyYXdHbHlwaHM+KGNvbnRleHQoKSwgbV9yZXNvdXJjZUhl
YXAsIGl0ZW0sIG1fZGVsZWdhdGUpKQorICAgICAgICBpZiAoYXV0byBtaXNzaW5nQ2FjaGVkUmVz
b3VyY2VJZGVudGlmaWVyID0gYXBwbHlGb250SXRlbTxEcmF3R2x5cGhzPihtX2NvbnRleHQsIG1f
cmVzb3VyY2VIZWFwLCBpdGVtLCBtX2RlbGVnYXRlKSkKICAgICAgICAgICAgIHJldHVybiB7IFN0
b3BSZXBsYXlSZWFzb246Ok1pc3NpbmdDYWNoZWRSZXNvdXJjZSwgV1RGTW92ZShtaXNzaW5nQ2Fj
aGVkUmVzb3VyY2VJZGVudGlmaWVyKSB9OwogICAgICAgICByZXR1cm4geyBzdGQ6Om51bGxvcHQs
IHN0ZDo6bnVsbG9wdCB9OwogICAgIH0KIAogICAgIGlmIChpdGVtLmlzPERyYXdQYXR0ZXJuPigp
KSB7Ci0gICAgICAgIGlmIChhdXRvIG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIgPSBh
cHBseU5hdGl2ZUltYWdlSXRlbTxEcmF3UGF0dGVybj4oY29udGV4dCgpLCBtX3Jlc291cmNlSGVh
cCwgaXRlbSwgbV9kZWxlZ2F0ZSkpCisgICAgICAgIGlmIChhdXRvIG1pc3NpbmdDYWNoZWRSZXNv
dXJjZUlkZW50aWZpZXIgPSBhcHBseU5hdGl2ZUltYWdlSXRlbTxEcmF3UGF0dGVybj4obV9jb250
ZXh0LCBtX3Jlc291cmNlSGVhcCwgaXRlbSwgbV9kZWxlZ2F0ZSkpCiAgICAgICAgICAgICByZXR1
cm4geyBTdG9wUmVwbGF5UmVhc29uOjpNaXNzaW5nQ2FjaGVkUmVzb3VyY2UsIFdURk1vdmUobWlz
c2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllcikgfTsKICAgICAgICAgcmV0dXJuIHsgc3RkOjpu
dWxsb3B0LCBzdGQ6Om51bGxvcHQgfTsKICAgICB9CiAKICAgICBpZiAoaXRlbS5pczxTZXRTdGF0
ZT4oKSkgewotICAgICAgICBpZiAoYXV0byBtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVy
ID0gYXBwbHlTZXRTdGF0ZUl0ZW0oY29udGV4dCgpLCBtX3Jlc291cmNlSGVhcCwgaXRlbSwgbV9k
ZWxlZ2F0ZSkpCisgICAgICAgIGlmIChhdXRvIG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZp
ZXIgPSBhcHBseVNldFN0YXRlSXRlbShtX2NvbnRleHQsIG1fcmVzb3VyY2VIZWFwLCBpdGVtLCBt
X2RlbGVnYXRlKSkKICAgICAgICAgICAgIHJldHVybiB7IFN0b3BSZXBsYXlSZWFzb246Ok1pc3Np
bmdDYWNoZWRSZXNvdXJjZSwgV1RGTW92ZShtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVy
KSB9OwogICAgICAgICByZXR1cm4geyBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCB9OwogICAg
IH0KIAotICAgIGlmIChpdGVtLmlzPEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPigpKSB7Ci0g
ICAgICAgIGlmIChtX21hc2tJbWFnZUJ1ZmZlcikKLSAgICAgICAgICAgIHJldHVybiB7IFN0b3BS
ZXBsYXlSZWFzb246OkludmFsaWRJdGVtT3JFeHRlbnQsIHN0ZDo6bnVsbG9wdCB9OwotICAgICAg
ICBhdXRvJiBjbGlwSXRlbSA9IGl0ZW0uZ2V0PEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPigp
OwotICAgICAgICBtX21hc2tJbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRp
YmxlQnVmZmVyKGNsaXBJdGVtLmRlc3RpbmF0aW9uKCkuc2l6ZSgpLCBjbGlwSXRlbS5jb2xvclNw
YWNlKCksIG1fY29udGV4dCk7Ci0gICAgICAgIGlmICghbV9tYXNrSW1hZ2VCdWZmZXIpCi0gICAg
ICAgICAgICByZXR1cm4geyBTdG9wUmVwbGF5UmVhc29uOjpPdXRPZk1lbW9yeSwgc3RkOjpudWxs
b3B0IH07Ci0gICAgICAgIGlmIChtX2RlbGVnYXRlKQotICAgICAgICAgICAgbV9kZWxlZ2F0ZS0+
ZGlkQ3JlYXRlTWFza0ltYWdlQnVmZmVyKCptX21hc2tJbWFnZUJ1ZmZlcik7Ci0gICAgICAgIHJl
dHVybiB7IHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0IH07Ci0gICAgfQotCi0gICAgaWYgKGl0
ZW0uaXM8RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPigpKSB7Ci0gICAgICAgIGlmICghbV9tYXNr
SW1hZ2VCdWZmZXIpCi0gICAgICAgICAgICByZXR1cm4geyBTdG9wUmVwbGF5UmVhc29uOjpJbnZh
bGlkSXRlbU9yRXh0ZW50LCBzdGQ6Om51bGxvcHQgfTsKLSAgICAgICAgYXV0byYgY2xpcEl0ZW0g
PSBpdGVtLmdldDxFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM+KCk7Ci0gICAgICAgIG1fY29udGV4
dC5jbGlwVG9JbWFnZUJ1ZmZlcigqbV9tYXNrSW1hZ2VCdWZmZXIsIGNsaXBJdGVtLmRlc3RpbmF0
aW9uKCkpOwotICAgICAgICBtX21hc2tJbWFnZUJ1ZmZlciA9IG51bGxwdHI7Ci0gICAgICAgIGlm
IChtX2RlbGVnYXRlKQotICAgICAgICAgICAgbV9kZWxlZ2F0ZS0+ZGlkUmVzZXRNYXNrSW1hZ2VC
dWZmZXIoKTsKLSAgICAgICAgcmV0dXJuIHsgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQgfTsK
LSAgICB9Ci0KLSAgICBpdGVtLmFwcGx5KGNvbnRleHQoKSk7CisgICAgaXRlbS5hcHBseShtX2Nv
bnRleHQpOwogICAgIHJldHVybiB7IHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0IH07CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdFJlcGxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5oCmluZGV4IDkyODViYmRkMTAwNDhj
MmFlZjliZmRkMzllMjBhZTFjNjMzZDVjN2MuLjM3M2M1MzFhZTk4YmFkNzEyNGEyMjM1NDIwMTVh
YWUzZmE4ZDBiYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaApAQCAt
NTksNyArNTksNyBAQCBjbGFzcyBSZXBsYXllciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
UmVwbGF5ZXIpOwogcHVibGljOgogICAgIGNsYXNzIERlbGVnYXRlOwotICAgIFdFQkNPUkVfRVhQ
T1JUIFJlcGxheWVyKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IERpc3BsYXlMaXN0JiwgY29uc3Qg
UmVzb3VyY2VIZWFwKiA9IG51bGxwdHIsIFdlYkNvcmU6OkltYWdlQnVmZmVyKiBtYXNrSW1hZ2VC
dWZmZXIgPSBudWxscHRyLCBEZWxlZ2F0ZSogPSBudWxscHRyKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBSZXBsYXllcihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBEaXNwbGF5TGlzdCYsIGNvbnN0IFJl
c291cmNlSGVhcCogPSBudWxscHRyLCBEZWxlZ2F0ZSogPSBudWxscHRyKTsKICAgICBXRUJDT1JF
X0VYUE9SVCB+UmVwbGF5ZXIoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFJlcGxheVJlc3VsdCBy
ZXBsYXkoY29uc3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xpcCA9IHsgfSwgYm9vbCB0cmFja1JlcGxh
eUxpc3QgPSBmYWxzZSk7CkBAIC02OCwxNyArNjgsMTMgQEAgcHVibGljOgogICAgIHB1YmxpYzoK
ICAgICAgICAgdmlydHVhbCB+RGVsZWdhdGUoKSB7IH0KICAgICAgICAgdmlydHVhbCBib29sIGFw
cGx5KEl0ZW1IYW5kbGUsIEdyYXBoaWNzQ29udGV4dCYpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAg
ICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVNYXNrSW1hZ2VCdWZmZXIoV2ViQ29yZTo6SW1hZ2VC
dWZmZXImKSB7IH0KLSAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlc2V0TWFza0ltYWdlQnVmZmVy
KCkgeyB9CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZWNvcmRSZXNvdXJjZVVzZShSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIpIHsgfQogICAgIH07CiAgICAgCiBwcml2YXRlOgotICAgIEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCgpIGNvbnN0OwogICAgIHN0ZDo6cGFpcjxzdGQ6Om9wdGlvbmFs
PFN0b3BSZXBsYXlSZWFzb24+LCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
Zmllcj4+IGFwcGx5SXRlbShJdGVtSGFuZGxlKTsKIAogICAgIEdyYXBoaWNzQ29udGV4dCYgbV9j
b250ZXh0OwotICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gbV9tYXNrSW1hZ2VCdWZm
ZXI7CiAgICAgY29uc3QgRGlzcGxheUxpc3QmIG1fZGlzcGxheUxpc3Q7CiAgICAgY29uc3QgUmVz
b3VyY2VIZWFwJiBtX3Jlc291cmNlSGVhcDsKICAgICBEZWxlZ2F0ZSogbV9kZWxlZ2F0ZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQppbmRleCBkNzllODVhYTJiYzk3NTg3
MmFmZmIxZDcwNzE5NGRkZWRiZDM5MDlhLi4zMGUwMmM0ZTAzYjhhYmJmYmMxZTM5ZmRhZjIyN2Iy
NGViNzU3ZTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVN
YWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tCkBAIC03
MzQsNyArNzM0LDcgQEAgYm9vbCBUaGVtZU1hYzo6ZHJhd0NlbGxPckZvY3VzUmluZ1dpdGhWaWV3
SW50b0NvbnRleHQoTlNDZWxsICpjZWxsLCBHcmFwaGljc0NvbnQKIAogICAgIGlmICh1c2VJbWFn
ZUJ1ZmZlcikgewogICAgICAgICBOU1JlY3QgaW1hZ2VCdWZmZXJEcmF3UmVjdCA9IE5TUmVjdChG
bG9hdFJlY3QoYnV0dG9uRm9jdXNSZWN0T3V0bGluZVdpZHRoLCBidXR0b25Gb2N1c1JlY3RPdXRs
aW5lV2lkdGgsIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSkpOwotICAgICAgICBhdXRvIGlt
YWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIocmVjdC5zaXpl
KCkgKyAyICogRmxvYXRTaXplKGJ1dHRvbkZvY3VzUmVjdE91dGxpbmVXaWR0aCwgYnV0dG9uRm9j
dXNSZWN0T3V0bGluZVdpZHRoKSwgZGV2aWNlU2NhbGVGYWN0b3IsIERlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6U1JHQigpLCBjb250ZXh0KTsKKyAgICAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IGNvbnRl
eHQuY3JlYXRlSW1hZ2VCdWZmZXIocmVjdC5zaXplKCkgKyAyICogRmxvYXRTaXplKGJ1dHRvbkZv
Y3VzUmVjdE91dGxpbmVXaWR0aCwgYnV0dG9uRm9jdXNSZWN0T3V0bGluZVdpZHRoKSwgZGV2aWNl
U2NhbGVGYWN0b3IpOwogICAgICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICAgICAgcmV0
dXJuIG5lZWRzUmVwYWludDsKICAgICAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0
LmNwcAppbmRleCAzODAzNmViZDYzMTAzMGU4OGU1YjgxM2U3NzM3NDVjNzlkMmE1OWU3Li5kOTlm
MzRkZDAxZDUyNTM4ZTVjYWUxNzc3M2FiNDhjMjExM2FmMmE3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdl
U2Vzc2lvbkNGTmV0LmNwcApAQCAtMzksMzEgKzM5LDIxIEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotUmV0YWluUHRyPENGVVJMU3RvcmFnZVNlc3Npb25SZWY+IE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6Y3JlYXRlQ0ZTdG9yYWdlU2Vzc2lvbkZvcklkZW50aWZpZXIoQ0ZTdHJpbmdSZWYgaWRl
bnRpZmllciwgU2hvdWxkRGlzYWJsZUNGVVJMQ2FjaGUgc2hvdWxkRGlzYWJsZUNGVVJMQ2FjaGUp
CitSZXRhaW5QdHI8Q0ZVUkxTdG9yYWdlU2Vzc2lvblJlZj4gTmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpjcmVhdGVDRlN0b3JhZ2VTZXNzaW9uRm9ySWRlbnRpZmllcihDRlN0cmluZ1JlZiBpZGVudGlm
aWVyLCBTaG91bGREaXNhYmxlQ0ZVUkxDYWNoZSkKIHsKICAgICBhdXRvIHN0b3JhZ2VTZXNzaW9u
ID0gYWRvcHRDRihfQ0ZVUkxTdG9yYWdlU2Vzc2lvbkNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0
LCBpZGVudGlmaWVyLCBudWxscHRyKSk7CiAKICAgICBpZiAoIXN0b3JhZ2VTZXNzaW9uKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGlmIChzaG91bGREaXNhYmxlQ0ZVUkxDYWNoZSA9
PSBTaG91bGREaXNhYmxlQ0ZVUkxDYWNoZTo6WWVzKSB7Ci0jaWYgSEFWRShDRk5FVFdPUktfRElT
QUJMRV9DQUNIRV9TUEkpCi0gICAgICAgIF9DRlVSTFN0b3JhZ2VTZXNzaW9uRGlzYWJsZUNhY2hl
KHN0b3JhZ2VTZXNzaW9uLmdldCgpKTsKLSNlbHNlCi0gICAgICAgIHNob3VsZERpc2FibGVDRlVS
TENhY2hlID0gU2hvdWxkRGlzYWJsZUNGVVJMQ2FjaGU6Ok5vOwotI2VuZGlmCi0gICAgfQotCi0g
ICAgaWYgKHNob3VsZERpc2FibGVDRlVSTENhY2hlID09IFNob3VsZERpc2FibGVDRlVSTENhY2hl
OjpObykgewotICAgICAgICBhdXRvIGNhY2hlID0gYWRvcHRDRihfQ0ZVUkxTdG9yYWdlU2Vzc2lv
bkNvcHlDYWNoZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBzdG9yYWdlU2Vzc2lvbi5nZXQoKSkpOwot
ICAgICAgICBpZiAoIWNhY2hlKQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgYXV0
byBjYWNoZSA9IGFkb3B0Q0YoX0NGVVJMU3RvcmFnZVNlc3Npb25Db3B5Q2FjaGUoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwgc3RvcmFnZVNlc3Npb24uZ2V0KCkpKTsKKyAgICBpZiAoIWNhY2hlKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgICAgICBDRlVSTENhY2hlU2V0RGlza0NhcGFjaXR5
KGNhY2hlLmdldCgpLCAwKTsKKyAgICBDRlVSTENhY2hlU2V0RGlza0NhcGFjaXR5KGNhY2hlLmdl
dCgpLCAwKTsKIAotICAgICAgICBhdXRvIHNoYXJlZENhY2hlID0gYWRvcHRDRihDRlVSTENhY2hl
Q29weVNoYXJlZFVSTENhY2hlKCkpOwotICAgICAgICBDRlVSTENhY2hlU2V0TWVtb3J5Q2FwYWNp
dHkoY2FjaGUuZ2V0KCksIENGVVJMQ2FjaGVNZW1vcnlDYXBhY2l0eShzaGFyZWRDYWNoZS5nZXQo
KSkpOwotICAgIH0KKyAgICBhdXRvIHNoYXJlZENhY2hlID0gYWRvcHRDRihDRlVSTENhY2hlQ29w
eVNoYXJlZFVSTENhY2hlKCkpOworICAgIENGVVJMQ2FjaGVTZXRNZW1vcnlDYXBhY2l0eShjYWNo
ZS5nZXQoKSwgQ0ZVUkxDYWNoZU1lbW9yeUNhcGFjaXR5KHNoYXJlZENhY2hlLmdldCgpKSk7CiAK
ICAgICBpZiAoIU5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6cHJvY2Vzc01heVVzZUNvb2tpZUFQSSgp
KQogICAgICAgICByZXR1cm4gc3RvcmFnZVNlc3Npb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNl
c3Npb25Db2NvYS5tbQppbmRleCAyOTlmYzRiZDJlYmNmNzA3NzU1NDc0NDUwYTRkNzlkZGU2Nzhi
ZWZlLi5iMzI1OTBlOGEwZjIxYzgxN2VmZTE3OWNiY2MzZjBhMzYzODZhODcyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vz
c2lvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2Ev
TmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0KQEAgLTE3MSw3ICsxNzEsNyBAQCBDb29raWVT
dG9yYWdlT2JzZXJ2ZXImIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llU3RvcmFnZU9ic2Vy
dmVyKCkgY29uc3QKICAgICByZXR1cm4gKm1fY29va2llU3RvcmFnZU9ic2VydmVyOwogfQogCi1S
ZXRhaW5QdHI8Q0ZVUkxTdG9yYWdlU2Vzc2lvblJlZj4gY3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNz
aW9uKENGU3RyaW5nUmVmIGlkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8SFRUUENvb2tpZUFjY2Vw
dFBvbGljeT4gY29va2llQWNjZXB0UG9saWN5LCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OlNob3Vs
ZERpc2FibGVDRlVSTENhY2hlIHNob3VsZERpc2FibGVDRlVSTENhY2hlKQorUmV0YWluUHRyPENG
VVJMU3RvcmFnZVNlc3Npb25SZWY+IGNyZWF0ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbihDRlN0cmlu
Z1JlZiBpZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPEhUVFBDb29raWVBY2NlcHRQb2xpY3k+IGNv
b2tpZUFjY2VwdFBvbGljeSwgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpTaG91bGREaXNhYmxlQ0ZV
UkxDYWNoZSkKIHsKICAgICBjb25zdCB2b2lkKiBzZXNzaW9uUHJvcGVydHlLZXlzW10gPSB7IF9r
Q0ZVUkxTdG9yYWdlU2Vzc2lvbklzUHJpdmF0ZSB9OwogICAgIGNvbnN0IHZvaWQqIHNlc3Npb25Q
cm9wZXJ0eVZhbHVlc1tdID0geyBrQ0ZCb29sZWFuVHJ1ZSB9OwpAQCAtMTgxLDE0ICsxODEsNiBA
QCBSZXRhaW5QdHI8Q0ZVUkxTdG9yYWdlU2Vzc2lvblJlZj4gY3JlYXRlUHJpdmF0ZVN0b3JhZ2VT
ZXNzaW9uKENGU3RyaW5nUmVmIGlkZW50aQogICAgIGlmICghc3RvcmFnZVNlc3Npb24pCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCi0gICAgaWYgKHNob3VsZERpc2FibGVDRlVSTENhY2hlID09
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6U2hvdWxkRGlzYWJsZUNGVVJMQ2FjaGU6Olllcykgewot
I2lmIEhBVkUoQ0ZORVRXT1JLX0RJU0FCTEVfQ0FDSEVfU1BJKQotICAgICAgICBfQ0ZVUkxTdG9y
YWdlU2Vzc2lvbkRpc2FibGVDYWNoZShzdG9yYWdlU2Vzc2lvbi5nZXQoKSk7Ci0jZWxzZQotICAg
ICAgICBzaG91bGREaXNhYmxlQ0ZVUkxDYWNoZSA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6U2hv
dWxkRGlzYWJsZUNGVVJMQ2FjaGU6Ok5vOwotI2VuZGlmCi0gICAgfQotCiAgICAgLy8gVGhlIHBy
aXZhdGUgc3RvcmFnZSBzZXNzaW9uIHNob3VsZCBoYXZlIHRoZSBzYW1lIHByb3BlcnRpZXMgYXMg
dGhlIGRlZmF1bHQgc3RvcmFnZSBzZXNzaW9uLAogICAgIC8vIHdpdGggdGhlIGV4Y2VwdGlvbiB0
aGF0IGl0IHNob3VsZCBiZSBpbi1tZW1vcnkgb25seSBzdG9yYWdlLgogCkBAIC0xOTYsMTMgKzE4
OCwxMiBAQCBSZXRhaW5QdHI8Q0ZVUkxTdG9yYWdlU2Vzc2lvblJlZj4gY3JlYXRlUHJpdmF0ZVN0
b3JhZ2VTZXNzaW9uKENGU3RyaW5nUmVmIGlkZW50aQogICAgIC8vIFRoaXMgY291bGQgb2NjdXIg
aWYgdGhlcmUgaXMgYW4gaXNzdWUgZmlndXJpbmcgb3V0IHdoZXJlIHRvIHBsYWNlIGEgc3RvcmFn
ZSBvbiBkaXNrIChlLmcuIHRoZQogICAgIC8vIHNhbmRib3ggZG9lcyBub3QgYWxsb3cgQ0ZOZXR3
b3JrIGFjY2VzcykuCiAKLSAgICBpZiAoc2hvdWxkRGlzYWJsZUNGVVJMQ2FjaGUgPT0gTmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpTaG91bGREaXNhYmxlQ0ZVUkxDYWNoZTo6Tm8pIHsKLSAgICAgICAg
YXV0byBjYWNoZSA9IGFkb3B0Q0YoX0NGVVJMU3RvcmFnZVNlc3Npb25Db3B5Q2FjaGUoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgc3RvcmFnZVNlc3Npb24uZ2V0KCkpKTsKLSAgICAgICAgaWYgKCFjYWNo
ZSkKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGF1dG8gY2FjaGUgPSBhZG9wdENG
KF9DRlVSTFN0b3JhZ2VTZXNzaW9uQ29weUNhY2hlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHN0b3Jh
Z2VTZXNzaW9uLmdldCgpKSk7CisgICAgaWYgKCFjYWNoZSkKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKLSAgICAgICAgQ0ZVUkxDYWNoZVNldE1lbW9yeUNhcGFjaXR5KGNhY2hlLmdldCgpLCBb
W05TVVJMQ2FjaGUgc2hhcmVkVVJMQ2FjaGVdIG1lbW9yeUNhcGFjaXR5XSk7Ci0gICAgfQorICAg
IENGVVJMQ2FjaGVTZXREaXNrQ2FwYWNpdHkoY2FjaGUuZ2V0KCksIDApOyAvLyBTZXR0aW5nIGRp
c2sgY2FjaGUgc2l6ZSBzaG91bGQgbm90IGJlIG5lY2Vzc2FyeSBvbmNlIDxyZGFyOi8vcHJvYmxl
bS8xMjY1NjgxND4gaXMgZml4ZWQuCisgICAgQ0ZVUkxDYWNoZVNldE1lbW9yeUNhcGFjaXR5KGNh
Y2hlLmdldCgpLCBbW05TVVJMQ2FjaGUgc2hhcmVkVVJMQ2FjaGVdIG1lbW9yeUNhcGFjaXR5XSk7
CiAKICAgICBhdXRvIGNvb2tpZVN0b3JhZ2UgPSBhZG9wdENGKF9DRlVSTFN0b3JhZ2VTZXNzaW9u
Q29weUNvb2tpZVN0b3JhZ2Uoa0NGQWxsb2NhdG9yRGVmYXVsdCwgc3RvcmFnZVNlc3Npb24uZ2V0
KCkpKTsKICAgICBpZiAoIWNvb2tpZVN0b3JhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAppbmRleCA1MjhmMDIyMDRhNjE4NmY5ODUx
YTMyNGM1MGU5YjYxY2IyNTIwMzc0Li4xOWJiMGM0MmZiYzVmYzIxMzU3NjA3ODIyNjU3ZmJiNjJh
Zjg3MjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9k
ZWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2Rl
bE9iamVjdC5jcHAKQEAgLTg5NCw3ICs4OTQsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0
OjpwYWludEZpbGxMYXllckV4dGVuZGVkKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjbwog
ICAgICAgICBtYXNrUmVjdC5pbnRlcnNlY3Qoc25hcFJlY3RUb0RldmljZVBpeGVscyhwYWludElu
Zm8ucmVjdCwgZGV2aWNlU2NhbGVGYWN0b3IpKTsKIAogICAgICAgICAvLyBOb3cgY3JlYXRlIHRo
ZSBtYXNrLgotICAgICAgICBtYXNrSW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJs
ZUJ1ZmZlcihtYXNrUmVjdC5zaXplKCksIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBj
b250ZXh0KTsKKyAgICAgICAgbWFza0ltYWdlID0gY29udGV4dC5jcmVhdGVDb21wYXRpYmxlSW1h
Z2VCdWZmZXIobWFza1JlY3Quc2l6ZSgpKTsKICAgICAgICAgaWYgKCFtYXNrSW1hZ2UpCiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIHBhaW50TWFza0ZvclRleHRGaWxsQm94KG1hc2tJbWFn
ZS5nZXQoKSwgbWFza1JlY3QsIGJveCwgc2Nyb2xsZWRQYWludFJlY3QpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAppbmRleCA2ODc5Y2E1ZWU3
MGY1MWI3ZjQyYjRjNWY1NGNmMWI0MGMyOWUyZWJmLi43YzIyMzM3NDg0MjgxNzFiMTg4MjYyNzBh
YzQ5YzgxNDZlOTU4ZDllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJCYWNraW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJCYWNraW5nLmNwcApAQCAtMzMxMiw3ICszMzEyLDcgQEAgc3RhdGljIFJlZlB0cjxQYXR0
ZXJuPiBwYXR0ZXJuRm9yRGVzY3JpcHRpb24oUGF0dGVybkRlc2NyaXB0aW9uIGRlc2NyaXB0aW9u
LCBGbG8KIHsKICAgICBjb25zdCBGbG9hdFNpemUgdGlsZVNpemUgeyAzMiwgMTggfTsKIAotICAg
IGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcih0
aWxlU2l6ZSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIGRlc3RDb250ZXh0KTsKKyAg
ICBhdXRvIGltYWdlQnVmZmVyID0gZGVzdENvbnRleHQuY3JlYXRlQ29tcGF0aWJsZUltYWdlQnVm
ZmVyKHRpbGVTaXplKTsKICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
Q29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDb2NvYS5tbQpp
bmRleCAxYTY2NzMyMjcyMmFkMzhmYzE1MTRiYmIxMTllZGNlM2E4ZWY3M2YzLi5hYmQ0YzFkYjEz
MTRkNDQyMWI3MzIyYWE4NTc1MWFlYjJmNTkzYWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGhlbWVDb2NvYS5tbQpAQCAtMTU0LDcgKzE1NCw3IEBAIGJvb2wgUmVuZGVy
VGhlbWVDb2NvYTo6cGFpbnRBcHBsZVBheUJ1dHRvbihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRl
cmVyLCBjb25zdCBQCiB7CiAgICAgYXV0byYgZGVzdGluYXRpb25Db250ZXh0ID0gcGFpbnRJbmZv
LmNvbnRleHQoKTsKIAotICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRl
Q29tcGF0aWJsZUJ1ZmZlcihwYWludFJlY3Quc2l6ZSgpLCBkZXN0aW5hdGlvbkNvbnRleHQpOwor
ICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBkZXN0aW5hdGlvbkNvbnRleHQuY3JlYXRlQ29tcGF0aWJs
ZUltYWdlQnVmZmVyKHBhaW50UmVjdC5zaXplKCkpOwogICAgIGlmICghaW1hZ2VCdWZmZXIpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRoZW1lTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lTWFjLm1tCmluZGV4IDZjOTRlOTJlMGZmZjg0MDEzZjFhNmVjNjgyOWM3ZTkwMGEyMDA3OGYu
LjI3YWFlMGVjYTUxNmExYzc4OTE3MGJjYmY0MzBmYzI4MTZkMmMyNmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KQEAgLTk5Niw3ICs5OTYsNyBAQCB2b2lk
IFJlbmRlclRoZW1lTWFjOjpwYWludExpc3RCdXR0b25Gb3JJbnB1dChjb25zdCBSZW5kZXJPYmpl
Y3QmIG8sIEdyYXBoaWNzQ29udAogCiAgICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IgPSBvLmRv
Y3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKTsKIAotICAgIGF1dG8gY29tYm9Cb3hJbWFnZUJ1
ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGNvbWJvQm94U2l6ZSwg
ZGV2aWNlU2NhbGVGYWN0b3IsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBjb250ZXh0
KTsKKyAgICBhdXRvIGNvbWJvQm94SW1hZ2VCdWZmZXIgPSBjb250ZXh0LmNyZWF0ZUltYWdlQnVm
ZmVyKGNvbWJvQm94U2l6ZSwgZGV2aWNlU2NhbGVGYWN0b3IpOwogICAgIGlmICghY29tYm9Cb3hJ
bWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCkBAIC0xMDIwLDcgKzEwMjAsNyBAQCB2b2lk
IFJlbmRlclRoZW1lTWFjOjpwYWludExpc3RCdXR0b25Gb3JJbnB1dChjb25zdCBSZW5kZXJPYmpl
Y3QmIG8sIEdyYXBoaWNzQ29udAogICAgICAgICAoX19icmlkZ2UgTlNTdHJpbmcgKilrQ1VJVXNl
ckludGVyZmFjZUxheW91dERpcmVjdGlvbktleSA6IChfX2JyaWRnZSBOU1N0cmluZyAqKWtDVUlV
c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uTGVmdFRvUmlnaHQsCiAgICAgfV07CiAKLSAgICBh
dXRvIGNvbWJvQm94QnV0dG9uSW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0
aWJsZUJ1ZmZlcihkZXNpcmVkQ29tYm9Cb3hCdXR0b25TaXplLCBkZXZpY2VTY2FsZUZhY3Rvciwg
RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIGNvbnRleHQpOworICAgIGF1dG8gY29tYm9C
b3hCdXR0b25JbWFnZUJ1ZmZlciA9IGNvbnRleHQuY3JlYXRlSW1hZ2VCdWZmZXIoZGVzaXJlZENv
bWJvQm94QnV0dG9uU2l6ZSwgZGV2aWNlU2NhbGVGYWN0b3IpOwogICAgIGlmICghY29tYm9Cb3hC
dXR0b25JbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCkBAIC0xMzc5LDcgKzEzNzksNyBA
QCBib29sIFJlbmRlclRoZW1lTWFjOjpwYWludFByb2dyZXNzQmFyKGNvbnN0IFJlbmRlck9iamVj
dCYgcmVuZGVyT2JqZWN0LCBjb25zdCBQYQogICAgIGNvbnN0IGF1dG8mIHJlbmRlclByb2dyZXNz
ID0gZG93bmNhc3Q8UmVuZGVyUHJvZ3Jlc3M+KHJlbmRlck9iamVjdCk7CiAgICAgZmxvYXQgZGV2
aWNlU2NhbGVGYWN0b3IgPSByZW5kZXJPYmplY3QuZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3Rv
cigpOwogICAgIGJvb2wgaXNJbmRldGVybWluYXRlID0gcmVuZGVyUHJvZ3Jlc3MucG9zaXRpb24o
KSA8IDA7Ci0gICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRp
YmxlQnVmZmVyKGluZmxhdGVkUmVjdC5zaXplKCksIGRldmljZVNjYWxlRmFjdG9yLCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgcGFpbnRJbmZvLmNvbnRleHQoKSk7CisgICAgYXV0byBp
bWFnZUJ1ZmZlciA9IHBhaW50SW5mby5jb250ZXh0KCkuY3JlYXRlSW1hZ2VCdWZmZXIoaW5mbGF0
ZWRSZWN0LnNpemUoKSwgZGV2aWNlU2NhbGVGYWN0b3IpOwogICAgIGlmICghaW1hZ2VCdWZmZXIp
CiAgICAgICAgIHJldHVybiB0cnVlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCBmMDhlODcyZDI4NjZhZTUzNDI0
ODZlM2M5Zjk5OGVkYzk0NDk4NGI5Li40NDhmOTE2NTJhOTI5ZGE4NDQ0NDIyMGRkOWM3NzFmMGJh
NDU5N2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRl
cmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVu
ZGVyaW5nQ29udGV4dC5jcHAKQEAgLTMzMyw3ICszMzMsNyBAQCBib29sIFNWR1JlbmRlcmluZ0Nv
bnRleHQ6OmJ1ZmZlckZvcmVncm91bmQoUmVmUHRyPEltYWdlQnVmZmVyPiYgaW1hZ2VCdWZmZXIp
CiAKICAgICAvLyBDcmVhdGUgYSBuZXcgYnVmZmVyIGFuZCBwYWludCB0aGUgZm9yZWdyb3VuZCBp
bnRvIGl0LgogICAgIGlmICghaW1hZ2VCdWZmZXIpIHsKLSAgICAgICAgaW1hZ2VCdWZmZXIgPSBJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihleHBhbmRlZEludFNpemUoYm91bmRp
bmdCb3guc2l6ZSgpKSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIG1fcGFpbnRJbmZv
LT5jb250ZXh0KCkpOworICAgICAgICBpbWFnZUJ1ZmZlciA9IG1fcGFpbnRJbmZvLT5jb250ZXh0
KCkuY3JlYXRlQ29tcGF0aWJsZUltYWdlQnVmZmVyKGV4cGFuZGVkSW50U2l6ZShib3VuZGluZ0Jv
eC5zaXplKCkpKTsKICAgICAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
U1ZHSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcApp
bmRleCBmNDE0MDEyMzM4OTE5MDM4N2FkMjc2OTZhNTA1NDQ1NGRmODkwMjhhLi42YmZmODk3NmM3
OGJjYmYxZjRjMzMwMzdhYmY3YmM1MjViZGY0NGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFw
aGljcy9TVkdJbWFnZS5jcHAKQEAgLTI1MCw3ICsyNTAsNyBAQCB2b2lkIFNWR0ltYWdlOjpkcmF3
UGF0dGVybkZvckNvbnRhaW5lcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0
U2l6ZQogICAgIEZsb2F0UmVjdCBpbWFnZUJ1ZmZlclNpemUgPSB6b29tZWRDb250YWluZXJSZWN0
OwogICAgIGltYWdlQnVmZmVyU2l6ZS5zY2FsZShpbWFnZUJ1ZmZlclNjYWxlLndpZHRoKCksIGlt
YWdlQnVmZmVyU2NhbGUuaGVpZ2h0KCkpOwogCi0gICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZl
cjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihleHBhbmRlZEludFNpemUoaW1hZ2VCdWZmZXJTaXpl
LnNpemUoKSksIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBjb250ZXh0KTsKKyAg
ICBhdXRvIGJ1ZmZlciA9IGNvbnRleHQuY3JlYXRlSW1hZ2VCdWZmZXIoZXhwYW5kZWRJbnRTaXpl
KGltYWdlQnVmZmVyU2l6ZS5zaXplKCkpKTsKICAgICBpZiAoIWJ1ZmZlcikgLy8gRmFpbGVkIHRv
IGFsbG9jYXRlIGJ1ZmZlci4KICAgICAgICAgcmV0dXJuOwogICAgIGRyYXdGb3JDb250YWluZXIo
YnVmZmVyLT5jb250ZXh0KCksIGNvbnRhaW5lclNpemUsIGNvbnRhaW5lclpvb20sIGluaXRpYWxG
cmFnbWVudFVSTCwgaW1hZ2VCdWZmZXJTaXplLCB6b29tZWRDb250YWluZXJSZWN0KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlz
dFJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVE
aXNwbGF5TGlzdFJlY29yZGVyLmNwcAppbmRleCBkOWFmNTg0MGRmNjg0M2Q5ZTYxOWRiNjYyZWM5
MGVhNDgxODU3OTZhLi4wMjI4YWUzYTRjNzViZTZlNzY0MjJjOWVlOGVhMGU0NjFkNWFjNjMxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxh
eUxpc3RSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCkBAIC01MCw3ICs1MCw3IEBAIFJlbW90ZVJl
c291cmNlQ2FjaGUmIFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXI6OnJlc291cmNlQ2FjaGUoKQog
CiBHcmFwaGljc0NvbnRleHQmIFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXI6OmRyYXdpbmdDb250
ZXh0KCkKIHsKLSAgICByZXR1cm4gbV9tYXNrSW1hZ2VCdWZmZXIgPyBtX21hc2tJbWFnZUJ1ZmZl
ci0+Y29udGV4dCgpIDogbV9pbWFnZUJ1ZmZlci0+Y29udGV4dCgpOworICAgIHJldHVybiBtX2lt
YWdlQnVmZmVyLT5jb250ZXh0KCk7CiB9CiAKIHZvaWQgUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRl
cjo6c3RhcnRMaXN0ZW5pbmdGb3JJUEMoKQpAQCAtMjA2LDIyICsyMDYsNiBAQCB2b2lkIFJlbW90
ZURpc3BsYXlMaXN0UmVjb3JkZXI6OmNsaXBQYXRoKGNvbnN0IFBhdGgmIHBhdGgsIFdpbmRSdWxl
IHJ1bGUpCiAgICAgaGFuZGxlSXRlbShEaXNwbGF5TGlzdDo6Q2xpcFBhdGgocGF0aCwgcnVsZSkp
OwogfQogCi12b2lkIFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXI6OmJlZ2luQ2xpcFRvRHJhd2lu
Z0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IERlc3RpbmF0aW9u
Q29sb3JTcGFjZSYgY29sb3JTcGFjZSkKLXsKLSAgICBtX21hc2tJbWFnZUJ1ZmZlciA9IEltYWdl
QnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGRlc3RpbmF0aW9uLnNpemUoKSwgY29sb3JT
cGFjZSwgZHJhd2luZ0NvbnRleHQoKSk7Ci19Ci0KLXZvaWQgUmVtb3RlRGlzcGxheUxpc3RSZWNv
cmRlcjo6ZW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRp
b24pCi17Ci0gICAgYXV0byBtYXNrSW1hZ2VCdWZmZXIgPSBzdGQ6OmV4Y2hhbmdlKG1fbWFza0lt
YWdlQnVmZmVyLCB7IH0pOwotICAgIGlmICghbWFza0ltYWdlQnVmZmVyKSB7Ci0gICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgZHJhd2lu
Z0NvbnRleHQoKS5jbGlwVG9JbWFnZUJ1ZmZlcigqbWFza0ltYWdlQnVmZmVyLCBkZXN0aW5hdGlv
bik7Ci19Ci0KIHZvaWQgUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlcjo6ZHJhd0ZpbHRlcmVkSW1h
Z2VCdWZmZXIoc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IHNvdXJj
ZUltYWdlSWRlbnRpZmllciwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2VJbWFnZVJlY3QsIElQQzo6
RmlsdGVyUmVmZXJlbmNlIGZpbHRlclJlZmVyZW5jZSkKIHsKICAgICBSZWZQdHI8SW1hZ2VCdWZm
ZXI+IHNvdXJjZUltYWdlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyLmgKaW5kZXggZTE2OGU1YWVh
MjE0YTgzMDBiNDEzNDE3Zjg5ODViNGQ5MWQzNGY5ZS4uYjA0YjdlYTIwMDNiZDAxODU3NDQ4Mjhl
Y2RlNDNjNjYwNDE5OWEzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5oCkBAIC03OCw4ICs3
OCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsaXBUb0ltYWdlQnVmZmVyKFdlYkNvcmU6OlJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBkZXN0aW5h
dGlvblJlY3QpOwogICAgIHZvaWQgY2xpcE91dFRvUGF0aChjb25zdCBXZWJDb3JlOjpQYXRoJik7
CiAgICAgdm9pZCBjbGlwUGF0aChjb25zdCBXZWJDb3JlOjpQYXRoJiwgV2ViQ29yZTo6V2luZFJ1
bGUpOwotICAgIHZvaWQgYmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgV2ViQ29yZTo6
RmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNw
YWNlJik7Ci0gICAgdm9pZCBlbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgV2ViQ29yZTo6
RmxvYXRSZWN0JiBkZXN0aW5hdGlvbik7CiAgICAgdm9pZCBkcmF3R2x5cGhzKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpEcmF3R2x5cGhzJiYpOwogICAgIHZvaWQgZHJhd0ZpbHRlcmVkSW1hZ2VCdWZm
ZXIoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IHNv
dXJjZUltYWdlSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBzb3VyY2VJbWFn
ZVJlY3QsIElQQzo6RmlsdGVyUmVmZXJlbmNlKTsKICAgICB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihX
ZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVy
LCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGRlc3RpbmF0aW9uUmVjdCwgY29uc3QgV2ViQ29y
ZTo6RmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9u
cyYpOwpAQCAtMTYwLDcgKzE1OCw2IEBAIHByaXZhdGU6CiAgICAgUXVhbGlmaWVkUmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyIG1faW1hZ2VCdWZmZXJJZGVudGlmaWVyOwogICAgIFdlYkNvcmU6
OlByb2Nlc3NJZGVudGlmaWVyIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXI7CiAgICAgUmVmUHRyPFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ+IG1fcmVuZGVyaW5nQmFja2VuZDsKLSAgICBSZWZQdHI8V2Vi
Q29yZTo6SW1hZ2VCdWZmZXI+IG1fbWFza0ltYWdlQnVmZmVyOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyLm1lc3NhZ2VzLmluCmlu
ZGV4IGUyM2VhY2NhNTcyZjc1ZjcxNTEyMmRhNjM2ZjMzMTBjNjk4NWE3NjQuLmQ3YzgwNmQ0YmM0
NzZhN2JmMjg0YWNhNGI0NTQ1YTBlYTMxNjljNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyLm1lc3NhZ2VzLmlu
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlz
dFJlY29yZGVyLm1lc3NhZ2VzLmluCkBAIC00NCw4ICs0NCw2IEBAIG1lc3NhZ2VzIC0+IFJlbW90
ZURpc3BsYXlMaXN0UmVjb3JkZXIgTm90UmVmQ291bnRlZCBTdHJlYW0gewogICAgIENsaXBUb0lt
YWdlQnVmZmVyKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIsIFdlYkNvcmU6OkZsb2F0UmVjdCBkZXN0aW5hdGlvblJlY3QpCiAg
ICAgQ2xpcE91dFRvUGF0aChXZWJDb3JlOjpQYXRoIHBhdGgpCiAgICAgQ2xpcFBhdGgoV2ViQ29y
ZTo6UGF0aCBwYXRoLCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6V2luZFJ1bGUgd2luZFJ1bGUpCi0g
ICAgQmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHMoV2ViQ29yZTo6RmxvYXRSZWN0IGRlc3RpbmF0
aW9uLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSkKLSAgICBFbmRD
bGlwVG9EcmF3aW5nQ29tbWFuZHMoV2ViQ29yZTo6RmxvYXRSZWN0IGRlc3RpbmF0aW9uKQogICAg
IERyYXdHbHlwaHMoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdHbHlwaHMgaXRlbSkKICAgICBE
cmF3RmlsdGVyZWRJbWFnZUJ1ZmZlcihzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcj4gc291cmNlSW1hZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpGbG9hdFJl
Y3Qgc291cmNlSW1hZ2VSZWN0LCBJUEM6OkZpbHRlclJlZmVyZW5jZSBmaWx0ZXIpCiAgICAgRHJh
d0ltYWdlQnVmZmVyKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBpbWFnZUJ1
ZmZlcklkZW50aWZpZXIsIFdlYkNvcmU6OkZsb2F0UmVjdCBkZXN0aW5hdGlvblJlY3QsIFdlYkNv
cmU6OkZsb2F0UmVjdCBzcmNSZWN0LCBzdHJ1Y3QgV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlv
bnMgb3B0aW9ucykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5LmNw
cAppbmRleCAyNDMzZmRjYzk3NGFiNjY3OTcxYTI1YWY2NDc4OTM1NjBhMzMxYzk2Li44OWNmOWRm
Njc0NGE0NWQ1ZjkzZDY4ZmJhYzI5MDQ3NDNlYTExOThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVE
aXNwbGF5TGlzdFJlY29yZGVyUHJveHkuY3BwCkBAIC0xOTUsMTYgKzE5NSw2IEBAIHZvaWQgUmVt
b3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5OjpyZWNvcmRDbGlwUGF0aChjb25zdCBQYXRoJiBw
YXRoLCBXaW5kUnVsZSByCiAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlRGlzcGxheUxpc3RSZWNv
cmRlcjo6Q2xpcFBhdGgocGF0aCwgcnVsZSkpOwogfQogCi12b2lkIFJlbW90ZURpc3BsYXlMaXN0
UmVjb3JkZXJQcm94eTo6cmVjb3JkQmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxv
YXRSZWN0JiBkZXN0aW5hdGlvbiwgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UpCi17
Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlcjo6QmVnaW5DbGlw
VG9EcmF3aW5nQ29tbWFuZHMoZGVzdGluYXRpb24sIGNvbG9yU3BhY2UpKTsKLX0KLQotdm9pZCBS
ZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHk6OnJlY29yZEVuZENsaXBUb0RyYXdpbmdDb21t
YW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uKQotewotICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXI6OkVuZENsaXBUb0RyYXdpbmdDb21tYW5kcyhkZXN0
aW5hdGlvbikpOwotfQotCiB2b2lkIFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eTo6cmVj
b3JkRHJhd0ZpbHRlcmVkSW1hZ2VCdWZmZXIoc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXI+IHNvdXJjZUltYWdlSWRlbnRpZmllciwgY29uc3QgRmxvYXRSZWN0JiBzb3Vy
Y2VJbWFnZVJlY3QsIEZpbHRlciYgZmlsdGVyKQogewogICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZURpc3BsYXlMaXN0UmVjb3JkZXI6OkRyYXdGaWx0ZXJlZEltYWdlQnVmZmVyKHNvdXJjZUltYWdl
SWRlbnRpZmllciwgc291cmNlSW1hZ2VSZWN0LCBJUEM6OkZpbHRlclJlZmVyZW5jZShSZWY8Rmls
dGVyPiB7IGZpbHRlciB9KSkpOwpAQCAtNDY0LDkgKzQ1NCwxNCBAQCB2b2lkIFJlbW90ZURpc3Bs
YXlMaXN0UmVjb3JkZXJQcm94eTo6Zmx1c2hDb250ZXh0KEdyYXBoaWNzQ29udGV4dEZsdXNoSWRl
bnRpZmllcgogICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXI6OkZs
dXNoQ29udGV4dChpZGVudGlmaWVyKSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0Nv
bnRleHQ+IFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eTo6Y3JlYXRlTmVzdGVkQ29udGV4
dChjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGlu
aXRpYWxDVE0pCitSZWZQdHI8SW1hZ2VCdWZmZXI+IFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQ
cm94eTo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNv
bHV0aW9uU2NhbGUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSkgY29u
c3QKIHsKLSAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJv
eHk+KCp0aGlzLCBpbml0aWFsQ2xpcCwgaW5pdGlhbENUTSk7CisgICAgaWYgKFVOTElLRUxZKCFt
X3JlbmRlcmluZ0JhY2tlbmQpKSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICByZXR1cm4gbV9yZW5kZXJpbmdCYWNr
ZW5kLT5jcmVhdGVJbWFnZUJ1ZmZlcihzaXplLCByZW5kZXJpbmdNb2RlKCksIHJlc29sdXRpb25T
Y2FsZSwgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5LmgKaW5k
ZXggYTQxOGVmMmZiMDNlYjNlMjIxY2NkN2Y1YTY0MTU0ODJkNzFjMzQ2YS4uNDdmYTNkNzRhOTk1
YTc1ZmQ3N2RjYjEwMTlmMTQ1YTA5ZjI3MTcwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlM
aXN0UmVjb3JkZXJQcm94eS5oCkBAIC05MCw4ICs5MCw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBy
ZWNvcmRDbGlwVG9JbWFnZUJ1ZmZlcihXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGRlc3Rp
bmF0aW9uUmVjdCkgZmluYWw7CiAgICAgdm9pZCByZWNvcmRDbGlwT3V0VG9QYXRoKGNvbnN0IFdl
YkNvcmU6OlBhdGgmKSBmaW5hbDsKICAgICB2b2lkIHJlY29yZENsaXBQYXRoKGNvbnN0IFdlYkNv
cmU6OlBhdGgmLCBXZWJDb3JlOjpXaW5kUnVsZSkgZmluYWw7Ci0gICAgdm9pZCByZWNvcmRCZWdp
bkNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGRlc3RpbmF0
aW9uLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UpIGZpbmFsOwotICAgIHZvaWQgcmVj
b3JkRW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgZGVz
dGluYXRpb24pIGZpbmFsOwogICAgIHZvaWQgcmVjb3JkRHJhd0ZpbHRlcmVkSW1hZ2VCdWZmZXIo
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IHNvdXJj
ZUltYWdlSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBzb3VyY2VJbWFnZVJl
Y3QsIFdlYkNvcmU6OkZpbHRlciYpIGZpbmFsOwogICAgIHZvaWQgcmVjb3JkRHJhd0dseXBocyhj
b25zdCBXZWJDb3JlOjpGb250JiwgY29uc3QgV2ViQ29yZTo6R2x5cGhCdWZmZXJHbHlwaCosIGNv
bnN0IFdlYkNvcmU6OkdseXBoQnVmZmVyQWR2YW5jZSosIHVuc2lnbmVkIGNvdW50LCBjb25zdCBX
ZWJDb3JlOjpGbG9hdFBvaW50JiBsb2NhbEFuY2hvciwgV2ViQ29yZTo6Rm9udFNtb290aGluZ01v
ZGUpIGZpbmFsOwogICAgIHZvaWQgcmVjb3JkRHJhd0ltYWdlQnVmZmVyKFdlYkNvcmU6OlJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllciBpbWFnZUJ1ZmZlcklkZW50aWZpZXIsIGNvbnN0IFdlYkNv
cmU6OkZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgc3JjUmVj
dCwgY29uc3QgV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnMmKSBmaW5hbDsKQEAgLTE0Myw3
ICsxNDEsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgcmVjb3JkUmVzb3VyY2VVc2UoY29uc3QgV2Vi
Q29yZTo6U291cmNlSW1hZ2UmKSBmaW5hbDsKICAgICBib29sIHJlY29yZFJlc291cmNlVXNlKFdl
YkNvcmU6OkZvbnQmKSBmaW5hbDsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQ+IGNyZWF0ZU5lc3RlZENvbnRleHQoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0
JiBpbml0aWFsQ2xpcCwgY29uc3QgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtJiBpbml0aWFsQ1RN
KSBmaW5hbDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVm
ZmVyKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIGZsb2F0IHJlc29sdXRpb25TY2FsZSA9IDEs
IGNvbnN0IFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSYgPSBXZWJDb3JlOjpEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0IoKSkgY29uc3QgZmluYWw7CiAKICAgICBXZWJDb3JlOjpSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgbV9kZXN0aW5hdGlvbkJ1ZmZlcklkZW50aWZpZXI7CiAg
ICAgV2Vha1B0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gbV9pbWFnZUJ1ZmZlcjsK
</data>
<flag name="commit-queue"
          id="476683"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450304</attachid>
            <date>2022-01-28 19:49:55 -0800</date>
            <delta_ts>2022-02-10 01:47:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225959-20220128194954.patch</filename>
            <type>text/plain</type>
            <size>92969</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4NTQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2U1MDRmM2FkYmQ2ZDY5
OTllMzAxNWFlMWIxZTRkNzFlYmQ1MmNhOC4uZTY0NzY1OWIwMjU2Nzc1NjU3MTFmMWZiNGVmNDcw
NDcwZjI5ODFmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3NiBAQAorMjAyMi0wMS0yOCAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3Nd
IERlbGV0ZSBHcmFwaGljc0NvbnRleHQ6OmNsaXBUb0RyYXdpbmdDb21tYW5kcygpCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU5NTkKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGZ1bmN0aW9uIHdh
cyBhZGRlZCBpbiByMjY3NzQyIGFzIGEgd29ya2Fyb3VuZCBmb3IgR1BVUHJvY2VzcyBjYXNlCisg
ICAgICAgIHdoaWNoIHdhcyBoYXBwZW5pbmcgYmVjYXVzZSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29t
cGF0aWJsZUJ1ZmZlcigpIHVzZWQKKyAgICAgICAgdG8gcmV0dXJuIGluLXByb2Nlc3MgSW1hZ2VC
dWZmZXIuIGNsaXBUb0RyYXdpbmdDb21tYW5kcygpIHdhcyBhIHdheSB0bworICAgICAgICByZWNv
cmQgdGhlIGNsaXBwZXIgbWFzayBpbWFnZSBpbnRvIGEgdGVtcG9yYXJ5IHJlbW90ZSBJbWFnZUJ1
ZmZlci4KKworICAgICAgICBJZiBHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZUNvbXBhdGlibGVJbWFn
ZUJ1ZmZlcigpIGNhbiBjcmVhdGUgYW4KKyAgICAgICAgSW1hZ2VCdWZmZXIgc2ltaWxhciB0byB0
aGUgdW5kZXJseWluZyBJbWFnZUJ1ZmZlciBvZiB0aGUgR3JhcGhpY3NDb250ZXh0LAorICAgICAg
ICB0aGVuIEdyYXBoaWNzQ29udGV4dDo6Y2xpcFRvRHJhd2luZ0NvbW1hbmRzKCkgaXMgbm90IG5l
ZWRlZC4gCisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRC
YXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6
OmRyYXdUZXh0VW5jaGVja2VkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpjbGlwVG9E
cmF3aW5nQ29tbWFuZHMpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL051bGxHcmFwaGlj
c0NvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0
OjphcHBlbmQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdEl0ZW1CdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0
ZW1IYW5kbGU6OmFwcGx5KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFu
ZGxlOjpkZXN0cm95KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFuZGxl
OjpzYWZlQ29weSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OnNpemVPZkl0ZW1JbkJ5dGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0Ojpp
c0RyYXdpbmdJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0Ojppc0lubGluZUl0
ZW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dEl0ZW1UeXBlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SXRlbXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Om9wZXJh
dG9yPDwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEl0ZW1zLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6QmVnaW5DbGlwVG9E
cmF3aW5nQ29tbWFuZHM6OkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kczo6
fkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kczo6ZGVzdGluYXRpb24gY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkJlZ2luQ2xpcFRv
RHJhd2luZ0NvbW1hbmRzOjpjb2xvclNwYWNlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kczo6ZW5jb2RlIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpCZWdpbkNsaXBU
b0RyYXdpbmdDb21tYW5kczo6ZGVjb2RlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM6OkVuZENsaXBUb0RyYXdpbmdDb21t
YW5kcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RW5kQ2xpcFRv
RHJhd2luZ0NvbW1hbmRzOjpkZXN0aW5hdGlvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpjbGlwVG9EcmF3aW5nQ29t
bWFuZHMpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdFJlY29yZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OnJlY29yZEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1h
bmRzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcklt
cGw6OnJlY29yZEVuZENsaXBUb0RyYXdpbmdDb21tYW5kcyk6IERlbGV0ZWQuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVw
bGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlcGxheWVyOjpSZXBs
YXllcik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVwbGF5ZXI6OmFwcGx5SXRl
bSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVwbGF5ZXI6OmNvbnRleHQgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdFJlcGxheWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVw
bGF5ZXI6OkRlbGVnYXRlOjphcHBseSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
UmVwbGF5ZXI6OkRlbGVnYXRlOjpkaWRDcmVhdGVNYXNrSW1hZ2VCdWZmZXIpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlcGxheWVyOjpEZWxlZ2F0ZTo6ZGlkUmVz
ZXRNYXNrSW1hZ2VCdWZmZXIpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwOgorICAgICAg
ICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6Y2xpcFRvRHJhd2luZ0NvbW1hbmRz
KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05p
Y29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmg6CisKKzIwMjItMDEtMjggIFNhaWQgQWJvdS1I
YWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBNb3ZlIElt
YWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIoKSB0byBHcmFwaGljc0NvbnRl
eHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTc1
OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBn
b2FsIG9mIHRoaXMgcGF0Y2ggaXMgdG8gcmVjb3JkIHRoZSBkcmF3aW5nIGlmIHRoZSBjb25jcmV0
ZSB0eXBlIG9mIAorICAgICAgICB0aGUgR3JhcGhpY3NDb250ZXh0IGlzIFJlbW90ZURpc3BsYXlM
aXN0UmVjb3JkZXJQcm94eS4gQ3VycmVudGx5IGFsbCB0aGUKKyAgICAgICAgaW50ZXJtZWRpYXRl
IGNvbXBhdGlibGUgSW1hZ2VCdWZmZXJzIGFyZSBvZiB0eXBlIENvbmNyZXRlSW1hZ2VCdWZmZXIu
CisgICAgICAgIFRoZSBkcmF3aW5nIHRvIHRoZXNlIEltYWdlQnVmZmVycyBzdGlsbCBoYXBwZW5z
IGluIHRoZSBXZWJQcm9jZXNzLiBNb3Jlb3ZlcgorICAgICAgICB3aGVuIHdlIGNhbGwgZHJhd0lt
YWdlQnVmZmVyKCkgZm9yIG9uZSBvZiB0aGVzZSBpbnRlcm1lZGlhdGUgSW1hZ2VCdWZmZXJzCisg
ICAgICAgIHRvIGEgcmVtb3RlIEltYWdlQnVmZmVyLCB3ZSBzaW5rIHRoZSBpbnRlcm1lZGlhdGUg
SW1hZ2VCdWZmZXIgdG8gYSBOYXRpdmVJbWFnZQorICAgICAgICBhbmQgc2VuZCBpdCB0byBHUFVQ
cm9jZXNzLgorCisgICAgICAgIFRvIGZpeCB0aGlzLCBHcmFwaGljc0NvbnRleHQgd2lsbCBwcm92
aWRlIHRocmVlIGZ1bmN0aW9ucyBmb3IgY3JlYXRpbmcKKyAgICAgICAgdGhlIEltYWdlQnVmZmVy
OgorCisgICAgICAgIDEuIEdyYXBoaWNzQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIoKTogSXQg
aXMgYSB2aXJ0dWFsIGZ1bmN0aW9uLiBJdCB3aWxsIAorICAgICAgICAgICBjcmVhdGUgYW4gSW1h
Z2VCdWZmZXIgc2ltaWxhciB0byB0aGUgdW5kZXJseWluZyBJbWFnZUJ1ZmZlciBvZiB0aGUKKyAg
ICAgICAgICAgR3JhcGhpY3NDb250ZXh0LiBCZWNhdXNlIFJlY29yZGVySW1wbCBhbmQgUmVtb3Rl
RGlzcGxheUxpc3RSZWNvcmRlclByb3h5CisgICAgICAgICAgIGFyZSBzdXBlciBjbGFzc2VzIG9m
IEdyYXBoaWNzQ29udGV4dCwgdGhleSB3aWxsIG92ZXJyaWRlIHRoaXMgbWV0aG9kCisgICAgICAg
ICAgIGFuZCByZXR1cm4gdGhlIGRlc2lyZWQgdHlwZSBvZiBJbWFnZUJ1ZmZlci4KKworICAgICAg
ICAyLiBHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcigpIHdpbGwg
dGFrZSB0aGUgc2NhbGVGYWN0b3IoKQorICAgICAgICAgICBpbnRvIGNvbnNpZGVyYXRpb24gd2hl
biBjcmVhdGluZyB0aGUgSW1hZ2VCdWZmZXIuIFRoZSB0eXBlIG9mIHRoZQorICAgICAgICAgICBy
ZXR1cm5lZCBJbWFnZUJ1ZmZlciB3aWxsIGJlIGVpdGhlciBDb25jcmV0ZUltYWdlQnVmZmVyIG9y
IGl0IHdpbGwgYmUKKyAgICAgICAgICAgc2ltaWxhciB0byB0aGUgdW5kZXJseWluZyBJbWFnZUJ1
ZmZlciBvZiB0aGUgR3JhcGhpY3NDb250ZXh0LiBUaGlzIHdpbGwKKyAgICAgICAgICAgYmUgY29u
dHJvbGxlZCBieSBhIG5ldyBlbnVtIGNhbGxlZCBJbWFnZUJ1ZmZlclR5cGUuIFR3byB2ZXJzaW9u
cyBvZgorICAgICAgICAgICB0aGlzIGZ1bmN0aW9uIHdpbGwgYmUgcHJvdmlkZWQ6IG9uZSB0YWtl
cyBhIEZsb2F0U2l6ZSBhbmQgdGhlIG90aGVyIAorICAgICAgICAgICB0YWtlcyBhIEZsb2F0UmVj
Y3QuIFRoZSBGbG9hdFJlY3QgdmVyc2lvbiBleHBhbmRzIHRoZSBmb3VyIGNvcm5lcnMgCisgICAg
ICAgICAgIG9mIHRoZSByZWN0YW5nbGUgdG8gZnVsbCBwaXhlbHMuCisKKyAgICAgICAgMy4gR3Jh
cGhpY3NDb250ZXh0Ojpjb3B5UmVjdFRvQ29tcGF0aWJsZUltYWdlQnVmZmVyKCksIHdpbGwgY3Jl
YXRlIGFuCisgICAgICAgICAgIEltYWdlQnVmZmVyIGNvbXBhdGlibGUgd2l0aCBHcmFwaGljc0Nv
bnRleHQgYW5kIGl0cyB1bmRlcmx5aW5nCisgICAgICAgICAgIEltYWdlQnVmZmVyLiBJdCB3aWxs
IHRoZW4gY29weSBhIHJlY3RhbmdsZSBmcm9tIGEgJ3NvdXJjZUltYWdlJyB0bworICAgICAgICAg
ICB0aGUgbmV3bHkgY3JlYXRlZCBJbWFnZUJ1ZmZlci4KKworICAgICAgICBTbyBmYXIgdHdvIHBs
YWNlcyBpbiB0aGUgY29kZSB3aGljaCB3YW50IHRvIGNyZWF0ZSBDb25jcmV0ZUltYWdlQnVmZmVy
CisgICAgICAgIHRocm91Z2ggR3JhcGhpY3NDb250ZXh0OjpjcmVhdGVDb21wYXRpYmxlSW1hZ2VC
dWZmZXIoKTogdGhlIHRleHQgcnVucyAKKyAgICAgICAgd2l0aCBTVkcgZm9udHMgYW5kIHRoZSBQ
REYgaW1hZ2VzLiBUaGUgZGVjb2Rpbmcgb2YgdGhlIFNWRyBmb250cyBhbmQgdGhlCisgICAgICAg
IFBERiBpbWFnZXMgaGFzIHRvIGhhcHBlbiBpbiB0aGUgV2ViUHJvY2Vzcy4gU28gaW4gdGhlc2Ug
Y2FzZXMgYW5kIGluIHRoZQorICAgICAgICBjYXNlIG9mIEdQVSBQcm9jZXNzIGFuZCBhbmQgYWZ0
ZXIgcmVuZGVyaW5nIHRvIHRoZXNlIEltYWdlQnVmZmVycywKKyAgICAgICAgUmVjb3JkZXI6OmRy
YXdJbWFnZUJ1ZmZlcigpIHdpbGwgY29udmVydCB0aGUgSW1hZ2VCdWZmZXIgdG8gYSBOYXRpdmVJ
bWFnZQorICAgICAgICBhbmQgc2VuZCBpdCB0byBHUFUgUHJvY2Vzcy4KKworICAgICAgICBUaGUg
cGxhbiBpcyB0byByZXBsYWNlIGFsbCBpbnRlcm1lZGlhdGUgSW1hZ2VCdWZmZXI6OmNyZWF0ZSgp
IHdpdGgKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0OjpjcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZm
ZXIoKS4gVGhlIGV4Y2VwdGlvbiB3aWxsIGJlIHRoZQorICAgICAgICB0b3AgbGV2ZWwgb25lczog
dGhlIGNhbnZhcyBhbmQgdGhlIHJlbmRlciBsYXllcnMuIFRoZSBSZW5kZXJpbmdQdXJwb3NlCisg
ICAgICAgIHdpbGwgYmUgdXNlZCBvbmx5IGluIHRoZXNlIHR3byBwbGFjZXMuCisKKyAgICAgICAg
KiBodG1sL0N1c3RvbVBhaW50Q2FudmFzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbVBh
aW50Q2FudmFzOjpyZXBsYXlEaXNwbGF5TGlzdCBjb25zdCk6CisgICAgICAgICogaHRtbC9DdXN0
b21QYWludEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbVBhaW50SW1hZ2U6OmRy
YXdQYXR0ZXJuKToKKyAgICAgICAgKiBodG1sL09mZnNjcmVlbkNhbnZhcy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpPZmZzY3JlZW5DYW52YXM6OnRyYW5zZmVyVG9JbWFnZUJpdG1hcCk6CisgICAg
ICAgIChXZWJDb3JlOjpPZmZzY3JlZW5DYW52YXM6OmNvbW1pdFRvUGxhY2Vob2xkZXJDYW52YXMp
OgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6ZHJhd0lt
YWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9UaGVtZUNvY29hLm1tOgorICAgICAgICAo
V2ViQ29yZTo6ZHJhd0FwcGxlUGF5QnV0dG9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9CaXRtYXBJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhd1Bh
dHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhZGllbnRJbWFnZTo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ6OmNvbXBhdGlibGVJbWFnZUJ1ZmZlclNpemUgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojpjb21wYXRpYmxlSW1hZ2VCdWZmZXJSZWN0
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y3JlYXRlSW1hZ2VC
dWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlU2NhbGVkSW1hZ2VCdWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpjcmVhdGVDb21wYXRpYmxlSW1h
Z2VCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojpjb3B5
UmVjdFRvQ29tcGF0aWJsZUltYWdlQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6Y2xpcFRvRHJhd2luZ0NvbW1hbmRzKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZUJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Y3JlYXRl
Q29tcGF0aWJsZUJ1ZmZlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZl
cjo6Y29tcGF0aWJsZUJ1ZmZlclNpemUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VCdWZmZXI6OmNvbXBhdGlibGVCdWZmZXJJbmZvKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlQnVmZmVyOjpjb3B5UmVjdFRvQnVmZmVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYW1l
ZEltYWdlR2VuZXJhdGVkSW1hZ2U6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9SZW5kZXJpbmdNb2RlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
UERGRG9jdW1lbnRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQREZEb2N1bWVudEltYWdl
Ojp1cGRhdGVDYWNoZWRJbWFnZUlmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3Vt
ZW50SW1hZ2U6OmRyYXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0Ry
YXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdHbHlw
aHNSZWNvcmRlcjo6ZHJhd09UU1ZHUnVuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlckltcGwuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6Y3JlYXRlSW1hZ2VCdWZmZXIgY29uc3QpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29y
ZGVySW1wbC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdFJlcGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBs
YXllcjo6YXBwbHlJdGVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW06Cisg
ICAgICAgIChXZWJDb3JlOjpUaGVtZU1hYzo6ZHJhd0NlbGxPckZvY3VzUmluZ1dpdGhWaWV3SW50
b0NvbnRleHQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJF
eHRlbmRlZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpwYXR0ZXJuRm9yRGVzY3JpcHRpb24pOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJUaGVtZUNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVD
b2NvYTo6cGFpbnRBcHBsZVBheUJ1dHRvbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRo
ZW1lTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnBhaW50TGlzdEJ1
dHRvbkZvcklucHV0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpwYWludFBy
b2dyZXNzQmFyKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyaW5nQ29udGV4dDo6YnVmZmVyRm9yZWdy
b3VuZCk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ltYWdlOjpkcmF3UGF0dGVybkZvckNvbnRhaW5lcik6CisKIDIwMjItMDEtMjUg
IFppcmFuIFN1biAgPHpzdW5AaWdhbGlhLmNvbT4KIAogICAgICAgICBbY3NzLWdyaWRdIEZpeCBn
cmlkIHNob3J0aGFuZCBleHBhbnNpb24gb2YgaW5pdGlhbCB2YWx1ZXMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggOGMz
MDhiYzIzY2VlY2JjYTBhMTM4ZWQwZTUxNzYzYjVjMTdlNjliZC4uMTI2ZDBlMjAzN2QzNzRhZDhm
MDUwYjlkZGRmY2U5ZGI5ZDEwZWZhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNCBAQAorMjAyMi0w
MS0yOCAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BV
IFByb2Nlc3NdIERlbGV0ZSBHcmFwaGljc0NvbnRleHQ6OmNsaXBUb0RyYXdpbmdDb21tYW5kcygp
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU5NTkK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXI6OmRyYXdpbmdDb250ZXh0KToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlcjo6YmVnaW5DbGlwVG9EcmF3aW5n
Q29tbWFuZHMpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVEaXNwbGF5TGlzdFJl
Y29yZGVyOjplbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHMpOiBEZWxldGVkLgorICAgICAgICAqIEdQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5oOgorICAgICAgICAq
IEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5tZXNzYWdlcy5p
bjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJl
Y29yZGVyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVEaXNwbGF5TGlzdFJlY29y
ZGVyUHJveHk6OnJlY29yZEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5OjpyZWNvcmRFbmRD
bGlwVG9EcmF3aW5nQ29tbWFuZHMpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eS5oOgorCisyMDIyLTAxLTI4
ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJv
Y2Vzc10gTW92ZSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUltYWdlQnVmZmVyKCkgdG8g
R3JhcGhpY3NDb250ZXh0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzU3NTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXI6OmJlZ2luQ2xp
cFRvRHJhd2luZ0NvbW1hbmRzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHk6OmNyZWF0ZUltYWdlQnVmZmVyIGNvbnN0KToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVy
UHJveHkuaDoKKwogMjAyMi0wMS0yNCAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBw
bGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjI4MjMyMCk6IFtDb2NvYV0gVXNlci1pbnN0
YWxsZWQgZm9udHMgZG9uJ3Qgd29yayBpbiB0aGUgR1BVIFByb2Nlc3MgKGluIFdLV2ViVmlldykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ3VzdG9tUGFpbnRDYW52YXMuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9DdXN0b21QYWludENhbnZhcy5jcHAKaW5kZXggMmMxYTNhYTZj
NjU3OTNlYzZmNWQ4NGJkYTRlZjczZWM2OTY5OGVhMy4uNDA0MjkxMWQwN2JjNzc4MzkwMzAxMzFk
NzhkNzNhNTU3YjYzZDBlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9DdXN0b21Q
YWludENhbnZhcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9DdXN0b21QYWludENhbnZh
cy5jcHAKQEAgLTczLDcgKzczLDcgQEAgdm9pZCBDdXN0b21QYWludENhbnZhczo6cmVwbGF5RGlz
cGxheUxpc3QoR3JhcGhpY3NDb250ZXh0KiBjdHgpIGNvbnN0CiAgICAgLy8gRklYTUU6IFVzaW5n
IGFuIGludGVybWVkaWF0ZSBidWZmZXIgaXMgbm90IG5lZWRlZCBpZiB0aGVyZSBhcmUgbm8gY29t
cG9zaXRlIG9wZXJhdGlvbnMuCiAgICAgYXV0byBjbGlwQm91bmRzID0gY3R4LT5jbGlwQm91bmRz
KCk7CiAKLSAgICBhdXRvIGltYWdlID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZm
ZXIoY2xpcEJvdW5kcy5zaXplKCksICpjdHgpOworICAgIGF1dG8gaW1hZ2UgPSBjdHgtPmNyZWF0
ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcihjbGlwQm91bmRzLnNpemUoKSk7CiAgICAgaWYgKCFpbWFn
ZSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0N1
c3RvbVBhaW50SW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9DdXN0b21QYWludEltYWdl
LmNwcAppbmRleCBmNDcxOTk0NmM1OGUwNTliZTMzZGI3MWQzZjdiNmY2MDkyMGE1Y2FjLi5mYjhh
ZTZiZmQ3MWYzZWY2MWEzNDBlMjcwMDE0MDM4ZTI3NjY5NzBmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0N1c3RvbVBhaW50SW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvQ3VzdG9tUGFpbnRJbWFnZS5jcHAKQEAgLTE5OSw3ICsxOTksNyBAQCB2b2lkIEN1c3RvbVBh
aW50SW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0
IEZsb2F0UmVjdAogICAgIGFkanVzdGVkUGF0dGVybkNUTS5zY2FsZSgxLjAgLyB4U2NhbGUsIDEu
MCAvIHlTY2FsZSk7CiAgICAgYWRqdXN0ZWRTcmNSZWN0LnNjYWxlKHhTY2FsZSwgeVNjYWxlKTsK
IAotICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIo
YWRqdXN0ZWRTaXplLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgZGVzdENvbnRleHQp
OworICAgIGF1dG8gYnVmZmVyID0gZGVzdENvbnRleHQuY3JlYXRlQ29tcGF0aWJsZUltYWdlQnVm
ZmVyKGFkanVzdGVkU2l6ZSk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybjsKICAg
ICBkb0N1c3RvbVBhaW50KGJ1ZmZlci0+Y29udGV4dCgpLCBhZGp1c3RlZFNpemUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuY3BwCmluZGV4IDRjOWM4Y2ZmMThiOWM3ZWExMmQx
NDEzMTJjNjYwNjY2ZGNmMGM4NzkuLmE3ODA1OWVlY2Y2MjQ1YjA0ODNiMmRiMzA0MjM3NjY1MWVi
MDc0MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5jcHAKQEAgLTI4Myw3
ICsyODMsNyBAQCBFeGNlcHRpb25PcjxSZWZQdHI8SW1hZ2VCaXRtYXA+PiBPZmZzY3JlZW5DYW52
YXM6OnRyYW5zZmVyVG9JbWFnZUJpdG1hcCgpCiAgICAgICAgIC8vIEFzIHRoZSBjYW52YXMgY29u
dGV4dCBzdGF0ZSBpcyBzdG9yZWQgaW4gR3JhcGhpY3NDb250ZXh0LCB3aGljaCBpcyBvd25lZAog
ICAgICAgICAvLyBieSBidWZmZXIoKSwgdG8gYXZvaWQgcmVzZXR0aW5nIHRoZSBjb250ZXh0IHN0
YXRlLCB3ZSBoYXZlIHRvIG1ha2UgYSBjb3B5IGFuZAogICAgICAgICAvLyBjbGVhciB0aGUgb3Jp
Z2luYWwgYnVmZmVyIHJhdGhlciB0aGFuIHJldHVybmluZyB0aGUgb3JpZ2luYWwgYnVmZmVyLgot
ICAgICAgICBhdXRvIGJ1ZmZlckNvcHkgPSBidWZmZXIoKS0+Y29weVJlY3RUb0J1ZmZlcihGbG9h
dFJlY3QoRmxvYXRQb2ludCgpLCBidWZmZXIoKS0+bG9naWNhbFNpemUoKSksIGJ1ZmZlcigpLT5j
b2xvclNwYWNlKCksICpkcmF3aW5nQ29udGV4dCgpKTsKKyAgICAgICAgYXV0byBidWZmZXJDb3B5
ID0gZHJhd2luZ0NvbnRleHQoKS0+Y29weVJlY3RUb0NvbXBhdGlibGVJbWFnZUJ1ZmZlcigqYnVm
ZmVyKCksIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGJ1ZmZlcigpLT5sb2dpY2FsU2l6ZSgpKSwg
YnVmZmVyKCktPmNvbG9yU3BhY2UoKSk7CiAgICAgICAgIGRvd25jYXN0PE9mZnNjcmVlbkNhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRD4oKm1fY29udGV4dCkuY2xlYXJDYW52YXMoKTsKICAgICAgICAg
Y2xlYXJDb3BpZWRJbWFnZSgpOwogCkBAIC00NTEsMTQgKzQ1MSwxNCBAQCB2b2lkIE9mZnNjcmVl
bkNhbnZhczo6Y29tbWl0VG9QbGFjZWhvbGRlckNhbnZhcygpCiAgICAgICAgIG1fY29udGV4dC0+
cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoKTsKIAogICAgIGlmIChtX3BsYWNlaG9sZGVy
RGF0YS0+YnVmZmVyUGlwZVNvdXJjZSkgewotICAgICAgICBhdXRvIGJ1ZmZlckNvcHkgPSBpbWFn
ZUJ1ZmZlci0+Y29weVJlY3RUb0J1ZmZlcihGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBpbWFnZUJ1
ZmZlci0+bG9naWNhbFNpemUoKSksIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBpbWFn
ZUJ1ZmZlci0+Y29udGV4dCgpKTsKKyAgICAgICAgYXV0byBidWZmZXJDb3B5ID0gaW1hZ2VCdWZm
ZXItPmNvbnRleHQoKS5jb3B5UmVjdFRvQ29tcGF0aWJsZUltYWdlQnVmZmVyKCppbWFnZUJ1ZmZl
ciwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2VCdWZmZXItPmxvZ2ljYWxTaXplKCkpKTsK
ICAgICAgICAgaWYgKGJ1ZmZlckNvcHkpCiAgICAgICAgICAgICBtX3BsYWNlaG9sZGVyRGF0YS0+
YnVmZmVyUGlwZVNvdXJjZS0+aGFuZGxlKFdURk1vdmUoYnVmZmVyQ29weSkpOwogICAgIH0KIAog
ICAgIExvY2tlciBsb2NrZXIgeyBtX3BsYWNlaG9sZGVyRGF0YS0+YnVmZmVyTG9jayB9OwogICAg
IGJvb2wgc2hvdWxkUHVzaEJ1ZmZlciA9ICFtX3BsYWNlaG9sZGVyRGF0YS0+cGVuZGluZ0NvbW1p
dEJ1ZmZlcjsKLSAgICBtX3BsYWNlaG9sZGVyRGF0YS0+cGVuZGluZ0NvbW1pdEJ1ZmZlciA9IGlt
YWdlQnVmZmVyLT5jb3B5UmVjdFRvQnVmZmVyKEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGltYWdl
QnVmZmVyLT5sb2dpY2FsU2l6ZSgpKSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIGlt
YWdlQnVmZmVyLT5jb250ZXh0KCkpOworICAgIG1fcGxhY2Vob2xkZXJEYXRhLT5wZW5kaW5nQ29t
bWl0QnVmZmVyID0gaW1hZ2VCdWZmZXItPmNvbnRleHQoKS5jb3B5UmVjdFRvQ29tcGF0aWJsZUlt
YWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2VCdWZm
ZXItPmxvZ2ljYWxTaXplKCkpKTsKICAgICBpZiAobV9wbGFjZWhvbGRlckRhdGEtPnBlbmRpbmdD
b21taXRCdWZmZXIgJiYgc2hvdWxkUHVzaEJ1ZmZlcikKICAgICAgICAgcHVzaEJ1ZmZlclRvUGxh
Y2Vob2xkZXIoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKaW5kZXggNTc3ZDU1ZTdmMDQyYTc4
NDgyMjBlMzhhYzMyZDMwNjk4MzZhMzg5ZC4uNTdiYWY2ZDczODY0NzA4OGQzZGViZGFkYzM3OGIz
NDZhZjJhNmUwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKQEAgLTE2MTEsNyArMTYxMSw3IEBA
IEV4Y2VwdGlvbk9yPHZvaWQ+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmRyYXdJbWFn
ZShDYW52YXNCYXNlJiBzb3VyY2VDYW52CiAgICAgICAgIHJlcGFpbnRFbnRpcmVDYW52YXMgPSB0
cnVlOwogICAgIH0gZWxzZSBpZiAoc3RhdGUoKS5nbG9iYWxDb21wb3NpdGUgPT0gQ29tcG9zaXRl
T3BlcmF0b3I6OkNvcHkpIHsKICAgICAgICAgaWYgKCZzb3VyY2VDYW52YXMgPT0gJmNhbnZhc0Jh
c2UoKSkgewotICAgICAgICAgICAgaWYgKGF1dG8gY29weSA9IGJ1ZmZlci0+Y29weVJlY3RUb0J1
ZmZlcihzcmNSZWN0LCBjb2xvclNwYWNlKCksICpjKSkgeworICAgICAgICAgICAgaWYgKGF1dG8g
Y29weSA9IGMtPmNvcHlSZWN0VG9Db21wYXRpYmxlSW1hZ2VCdWZmZXIoKmJ1ZmZlciwgc3JjUmVj
dCwgY29sb3JTcGFjZSgpKSkgewogICAgICAgICAgICAgICAgIGNsZWFyQ2FudmFzKCk7CiAgICAg
ICAgICAgICAgICAgYy0+ZHJhd0ltYWdlQnVmZmVyKCpjb3B5LCBkc3RSZWN0LCB7IHsgfSwgc3Jj
UmVjdC5zaXplKCkgfSwgeyBzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSwgc3RhdGUoKS5nbG9iYWxC
bGVuZCB9KTsKICAgICAgICAgICAgIH0KQEAgLTI0NTgsMzMgKzI0NTgsMzMgQEAgdm9pZCBDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpkcmF3VGV4dFVuY2hlY2tlZChjb25zdCBUZXh0UnVu
JiB0ZXh0UnVuLCBkb3UKICAgICAgICAgICAgIGZvbnRQcm94eS5kcmF3QmlkaVRleHQoKmMsIHRl
eHRSdW4sIGxvY2F0aW9uICsgb2Zmc2V0LCBGb250Q2FzY2FkZTo6VXNlRmFsbGJhY2tJZkZvbnRO
b3RSZWFkeSk7CiAgICAgICAgIH0KIAotICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVy
IHN0YXRlU2F2ZXIoKmMpOworICAgICAgICBhdXRvIG1hc2tJbWFnZSA9IGMtPmNyZWF0ZUNvbXBh
dGlibGVJbWFnZUJ1ZmZlcihtYXNrUmVjdC5zaXplKCkpOworICAgICAgICBpZiAoIW1hc2tJbWFn
ZSkKKyAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBhdXRvIHBhaW50TWFza0ltYWdlID0g
WyZdIChHcmFwaGljc0NvbnRleHQmIG1hc2tJbWFnZUNvbnRleHQpIHsKLSAgICAgICAgICAgIGlm
IChmaWxsKQotICAgICAgICAgICAgICAgIG1hc2tJbWFnZUNvbnRleHQuc2V0RmlsbENvbG9yKENv
bG9yOjpibGFjayk7Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBtYXNrSW1h
Z2VDb250ZXh0LnNldFN0cm9rZUNvbG9yKENvbG9yOjpibGFjayk7Ci0gICAgICAgICAgICAgICAg
bWFza0ltYWdlQ29udGV4dC5zZXRTdHJva2VUaGlja25lc3MoYy0+c3Ryb2tlVGhpY2tuZXNzKCkp
OwotICAgICAgICAgICAgfQorICAgICAgICBhdXRvJiBtYXNrSW1hZ2VDb250ZXh0ID0gbWFza0lt
YWdlLT5jb250ZXh0KCk7CiAKLSAgICAgICAgICAgIG1hc2tJbWFnZUNvbnRleHQuc2V0VGV4dERy
YXdpbmdNb2RlKGZpbGwgPyBUZXh0RHJhd2luZ01vZGU6OkZpbGwgOiBUZXh0RHJhd2luZ01vZGU6
OlN0cm9rZSk7CisgICAgICAgIGlmIChmaWxsKQorICAgICAgICAgICAgbWFza0ltYWdlQ29udGV4
dC5zZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNrKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICBtYXNrSW1hZ2VDb250ZXh0LnNldFN0cm9rZUNvbG9yKENvbG9yOjpibGFjayk7CisgICAgICAg
ICAgICBtYXNrSW1hZ2VDb250ZXh0LnNldFN0cm9rZVRoaWNrbmVzcyhjLT5zdHJva2VUaGlja25l
c3MoKSk7CisgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKHVzZU1heFdpZHRoKSB7Ci0gICAg
ICAgICAgICAgICAgbWFza0ltYWdlQ29udGV4dC50cmFuc2xhdGUobG9jYXRpb24gLSBtYXNrUmVj
dC5sb2NhdGlvbigpKTsKLSAgICAgICAgICAgICAgICAvLyBXZSBkcmF3IHdoZW4gZm9udFdpZHRo
IGlzIDAgc28gY29tcG9zaXRpbmcgb3BlcmF0aW9ucyAoZWcsIGEgImNvcHkiIG9wKSBzdGlsbCB3
b3JrLgotICAgICAgICAgICAgICAgIG1hc2tJbWFnZUNvbnRleHQuc2NhbGUoRmxvYXRTaXplKChm
b250V2lkdGggPiAwID8gKHdpZHRoIC8gZm9udFdpZHRoKSA6IDApLCAxKSk7Ci0gICAgICAgICAg
ICAgICAgZm9udFByb3h5LmRyYXdCaWRpVGV4dChtYXNrSW1hZ2VDb250ZXh0LCB0ZXh0UnVuLCBG
bG9hdFBvaW50KDAsIDApLCBGb250Q2FzY2FkZTo6VXNlRmFsbGJhY2tJZkZvbnROb3RSZWFkeSk7
Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIG1hc2tJbWFnZUNvbnRleHQu
dHJhbnNsYXRlKC1tYXNrUmVjdC5sb2NhdGlvbigpKTsKLSAgICAgICAgICAgICAgICBmb250UHJv
eHkuZHJhd0JpZGlUZXh0KG1hc2tJbWFnZUNvbnRleHQsIHRleHRSdW4sIGxvY2F0aW9uLCBGb250
Q2FzY2FkZTo6VXNlRmFsbGJhY2tJZkZvbnROb3RSZWFkeSk7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH07CisgICAgICAgIG1hc2tJbWFnZUNvbnRleHQuc2V0VGV4dERyYXdpbmdNb2RlKGZpbGwg
PyBUZXh0RHJhd2luZ01vZGU6OkZpbGwgOiBUZXh0RHJhd2luZ01vZGU6OlN0cm9rZSk7CiAKLSAg
ICAgICAgLy8gRklYTUU6IEhhbmRsaW5nIGdyYWRpZW50cyBhbmQgcGF0dGVybnMgYnkgcGFpbnRp
bmcgdGhlIHRleHQgaW50byBhIG1hc2sgaXMgcHJvYmFibHkgdGhlIHdyb25nIHRoaW5nIHRvIGRv
IGluIHRoZSBwcmVzZW5jZSBvZiBjb2xvciBnbHlwaHMuCi0gICAgICAgIGlmIChjLT5jbGlwVG9E
cmF3aW5nQ29tbWFuZHMobWFza1JlY3QsIGNvbG9yU3BhY2UoKSwgV1RGTW92ZShwYWludE1hc2tJ
bWFnZSkpID09IEdyYXBoaWNzQ29udGV4dDo6Q2xpcFRvRHJhd2luZ0NvbW1hbmRzUmVzdWx0OjpG
YWlsZWRUb0NyZWF0ZUltYWdlQnVmZmVyKQotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBp
ZiAodXNlTWF4V2lkdGgpIHsKKyAgICAgICAgICAgIG1hc2tJbWFnZUNvbnRleHQudHJhbnNsYXRl
KGxvY2F0aW9uIC0gbWFza1JlY3QubG9jYXRpb24oKSk7CisgICAgICAgICAgICAvLyBXZSBkcmF3
IHdoZW4gZm9udFdpZHRoIGlzIDAgc28gY29tcG9zaXRpbmcgb3BlcmF0aW9ucyAoZWcsIGEgImNv
cHkiIG9wKSBzdGlsbCB3b3JrLgorICAgICAgICAgICAgbWFza0ltYWdlQ29udGV4dC5zY2FsZShG
bG9hdFNpemUoKGZvbnRXaWR0aCA+IDAgPyAod2lkdGggLyBmb250V2lkdGgpIDogMCksIDEpKTsK
KyAgICAgICAgICAgIGZvbnRQcm94eS5kcmF3QmlkaVRleHQobWFza0ltYWdlQ29udGV4dCwgdGV4
dFJ1biwgRmxvYXRQb2ludCgwLCAwKSwgRm9udENhc2NhZGU6OlVzZUZhbGxiYWNrSWZGb250Tm90
UmVhZHkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbWFza0ltYWdlQ29udGV4dC50
cmFuc2xhdGUoLW1hc2tSZWN0LmxvY2F0aW9uKCkpOworICAgICAgICAgICAgZm9udFByb3h5LmRy
YXdCaWRpVGV4dChtYXNrSW1hZ2VDb250ZXh0LCB0ZXh0UnVuLCBsb2NhdGlvbiwgRm9udENhc2Nh
ZGU6OlVzZUZhbGxiYWNrSWZGb250Tm90UmVhZHkpOworICAgICAgICB9CiAKKyAgICAgICAgR3Jh
cGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpjKTsKKyAgICAgICAgYy0+Y2xpcFRv
SW1hZ2VCdWZmZXIoKm1hc2tJbWFnZSwgbWFza1JlY3QpOwogICAgICAgICBkcmF3U3R5bGUuYXBw
bHlGaWxsQ29sb3IoKmMpOwogICAgICAgICBjLT5maWxsUmVjdChtYXNrUmVjdCk7CiAgICAgICAg
IHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1RoZW1l
Q29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9UaGVtZUNvY29hLm1tCmlu
ZGV4IGVjZDUwYjcwZmRiYmY2ZTk4M2YzYTcxNTY1MjdiMjEwNjg4NGZiZmUuLmUyYjQ5MDRkOGY4
NjI4ZDM4YjYxNzBlMGE1ODA3YzM1NTYxY2YxNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL1RoZW1lQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY29jb2EvVGhlbWVDb2NvYS5tbQpAQCAtMTEwLDcgKzExMCw3IEBAIHN0YXRpYyBDR1BERlBh
Z2VSZWYgYXBwbGVQYXlCdXR0b25Mb2dvV2hpdGUoKQogCiBzdGF0aWMgdm9pZCBkcmF3QXBwbGVQ
YXlCdXR0b24oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBDR1BERlBhZ2VSZWYgcGFnZSwgY29u
c3QgRmxvYXRTaXplJiBzaXplKQogewotICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZl
cjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihzaXplLCBjb250ZXh0KTsKKyAgICBhdXRvIGltYWdl
QnVmZmVyID0gY29udGV4dC5jcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIoc2l6ZSk7CiAgICAg
aWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKaW5kZXggODAyNzQzNWFkMjk0NTY2
Mjk4YTc5MWIzYWY2YWZhOWJmMjc4MWU2OC4uNTc0NTQ0N2M4YzU0ZmY4OGE5MzY2ZjUwZmViMzY0
ZDc3ODBjYjA4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Qml0bWFwSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Jp
dG1hcEltYWdlLmNwcApAQCAtMzQ3LDcgKzM0Nyw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXdQ
YXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwK
ICAgICB9CiAKICAgICBpZiAoIW1fY2FjaGVkSW1hZ2UpIHsKLSAgICAgICAgYXV0byBidWZmZXIg
PSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihleHBhbmRlZEludFNpemUodGls
ZVJlY3Quc2l6ZSgpKSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIGN0eHQpOworICAg
ICAgICBhdXRvIGJ1ZmZlciA9IGN0eHQuY3JlYXRlQ29tcGF0aWJsZUltYWdlQnVmZmVyKGV4cGFu
ZGVkSW50U2l6ZSh0aWxlUmVjdC5zaXplKCkpKTsKICAgICAgICAgaWYgKCFidWZmZXIpCiAgICAg
ICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYWRpZW50SW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhZGllbnRJbWFnZS5jcHAKaW5kZXggZmVmMzZlNTdhNjVhMTQ4NjkwZGIzMGEyYzJhNTY4
NGQwMDBjOGFkYy4uYmRhNzAxMTA5OGZhNTE3YTY0NDMyYWZlY2JkMDUzYzFmOTU5NWM1MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5j
cHAKQEAgLTcyLDcgKzcyLDcgQEAgdm9pZCBHcmFkaWVudEltYWdlOjpkcmF3UGF0dGVybihHcmFw
aGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGQKICAgICB1bnNpZ25l
ZCBnZW5lcmF0b3JIYXNoID0gbV9ncmFkaWVudC0+aGFzaCgpOwogCiAgICAgaWYgKCFtX2NhY2hl
ZEltYWdlIHx8IG1fY2FjaGVkR2VuZXJhdG9ySGFzaCAhPSBnZW5lcmF0b3JIYXNoIHx8IG1fY2Fj
aGVkQWRqdXN0ZWRTaXplICE9IGFkanVzdGVkU2l6ZSB8fCAhYXJlRXNzZW50aWFsbHlFcXVhbChk
ZXN0Q29udGV4dC5zY2FsZUZhY3RvcigpLCBtX2NhY2hlZFNjYWxlRmFjdG9yKSkgewotICAgICAg
ICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIo
YWRqdXN0ZWRTaXplLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgZGVzdENvbnRleHQp
OworICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0gZGVzdENvbnRleHQuY3JlYXRlQ29tcGF0aWJs
ZUltYWdlQnVmZmVyKGFkanVzdGVkU2l6ZSk7CiAgICAgICAgIGlmICghaW1hZ2VCdWZmZXIpCiAg
ICAgICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCmluZGV4IGE0OTJlOThkYTI4MGMyM2VjNzM2MzA3
YWRlMmRkZWYzMmJmYTRjZWYuLmUwOGQ2NzgzMTVhY2NhZDQyYzYyMTBmY2ZiZWQ1OGVjOTAxYTgy
NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0LmNwcApAQCAtNTUxLDYgKzU1MSw4NCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
ZHJhd0JpZGlUZXh0KGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBjb25zdCBUZXh0UnVuJiBydW4s
CiAgICAgYmlkaVJ1bnMuY2xlYXIoKTsKIH0KIAorSW50U2l6ZSBHcmFwaGljc0NvbnRleHQ6OmNv
bXBhdGlibGVJbWFnZUJ1ZmZlclNpemUoY29uc3QgRmxvYXRTaXplJiBzaXplKSBjb25zdAorewor
ICAgIC8vIEVubGFyZ2UgdGhlIGJ1ZmZlciBzaXplIGlmIHRoZSBjb250ZXh0J3MgdHJhbnNmb3Jt
IGlzIHNjYWxpbmcgaXQgc28gd2UgbmVlZCBhIGhpZ2hlcgorICAgIC8vIHJlc29sdXRpb24gdGhh
biBvbmUgcGl4ZWwgcGVyIHVuaXQuCisgICAgcmV0dXJuIGV4cGFuZGVkSW50U2l6ZShzaXplICog
c2NhbGVGYWN0b3IoKSk7Cit9CisKK0ludFJlY3QgR3JhcGhpY3NDb250ZXh0Ojpjb21wYXRpYmxl
SW1hZ2VCdWZmZXJSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkgY29uc3QKK3sKKyAgICBhdXRv
IHNjYWxlZFJlY3QgPSByZWN0OworICAgIHNjYWxlZFJlY3Quc2NhbGUoc2NhbGVGYWN0b3IoKSk7
CisKKyAgICBGbG9hdFNpemUgc2NhbGUoMSwgMSk7CisgICAgSW1hZ2VCdWZmZXI6OnNpemVOZWVk
c0NsYW1waW5nKHNjYWxlZFJlY3Quc2l6ZSgpLCBzY2FsZSk7CisgICAgc2NhbGVkUmVjdC5zY2Fs
ZShzY2FsZSk7CisKKyAgICByZXR1cm4gZW5jbG9zaW5nSW50UmVjdChzY2FsZWRSZWN0KTsKK30K
KworUmVmUHRyPEltYWdlQnVmZmVyPiBHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVy
KGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBjb25zdCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UpIGNvbnN0Cit7CisgICAgcmV0dXJuIEltYWdl
QnVmZmVyOjpjcmVhdGUoc2l6ZSwgcmVuZGVyaW5nTW9kZSgpLCByZXNvbHV0aW9uU2NhbGUsIGNv
bG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JBOCk7Cit9CisKK3N0YXRpYyBSZWZQdHI8SW1hZ2VC
dWZmZXI+IGNyZWF0ZVNjYWxlZEltYWdlQnVmZmVyKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgRmxvYXRTaXplJiBzY2FsZWRTaXplLCBjb25zdCBGbG9hdFNpemUmIHNpemUs
IGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgSW1hZ2VCdWZmZXJUeXBl
IHR5cGUpCit7CisgICAgQVNTRVJUKCFzY2FsZWRTaXplLmlzRW1wdHkoKSAmJiAhc2l6ZS5pc0Vt
cHR5KCkpOworCisgICAgUmVmUHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlcjsKKyAgICAKKyAg
ICBpZiAodHlwZSA9PSBJbWFnZUJ1ZmZlclR5cGU6OkNvbXBhdGlibGUpCisgICAgICAgIGltYWdl
QnVmZmVyID0gY29udGV4dC5jcmVhdGVJbWFnZUJ1ZmZlcihzY2FsZWRTaXplLCAxLCBjb2xvclNw
YWNlKTsKKyAgICBlbHNlCisgICAgICAgIGltYWdlQnVmZmVyID0gY29udGV4dC5HcmFwaGljc0Nv
bnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKHNjYWxlZFNpemUsIDEsIGNvbG9yU3BhY2UpOworCisg
ICAgaWYgKCFpbWFnZUJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBpbWFn
ZUJ1ZmZlci0+Y29udGV4dCgpLnNjYWxlKHNjYWxlZFNpemUgLyBzaXplKTsKKyAgICByZXR1cm4g
aW1hZ2VCdWZmZXI7Cit9CisKK1JlZlB0cjxJbWFnZUJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0Ojpj
cmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBjb25zdCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIEltYWdlQnVmZmVyVHlwZSB0eXBlKSBj
b25zdAoreworICAgIGlmIChzaXplLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisKKyAgICBhdXRvIHNjYWxlZFNpemUgPSBjb21wYXRpYmxlSW1hZ2VCdWZmZXJTaXplKHNpemUp
OworICAgIHJldHVybiBjcmVhdGVTY2FsZWRJbWFnZUJ1ZmZlcigqdGhpcywgc2NhbGVkU2l6ZSwg
c2l6ZSwgY29sb3JTcGFjZSwgdHlwZSk7Cit9CisKK1JlZlB0cjxJbWFnZUJ1ZmZlcj4gR3JhcGhp
Y3NDb250ZXh0OjpjcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRSZWN0JiBy
ZWN0LCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIEltYWdlQnVmZmVy
VHlwZSB0eXBlKSBjb25zdAoreworICAgIGlmIChyZWN0LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisKKyAgICBhdXRvIHNjYWxlZFJlY3QgPSBjb21wYXRpYmxlSW1hZ2VCdWZm
ZXJSZWN0KHJlY3QpOworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBjcmVhdGVTY2FsZWRJbWFnZUJ1
ZmZlcigqdGhpcywgc2NhbGVkUmVjdC5zaXplKCksIHJlY3Quc2l6ZSgpLCBjb2xvclNwYWNlLCB0
eXBlKTsKKyAgICBpZiAoIWltYWdlQnVmZmVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwor
ICAgIGltYWdlQnVmZmVyLT5jb250ZXh0KCkudHJhbnNsYXRlKC1lbmNsb3NpbmdJbnRSZWN0KHJl
Y3QpLmxvY2F0aW9uKCkpOworICAgIHJldHVybiBpbWFnZUJ1ZmZlcjsKK30KKworUmVmUHRyPElt
YWdlQnVmZmVyPiBHcmFwaGljc0NvbnRleHQ6OmNvcHlSZWN0VG9Db21wYXRpYmxlSW1hZ2VCdWZm
ZXIoSW1hZ2VCdWZmZXImIHNvdXJjZUltYWdlLCBjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0
IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSkgY29uc3QKK3sKKyAgICBpZiAocmVj
dC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYXV0byBpbWFnZUJ1
ZmZlciA9IGNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcihyZWN0LnNpemUoKSwgY29sb3JTcGFj
ZSk7CisgICAgaWYgKCFpbWFnZUJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAg
ICBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpLmRyYXdJbWFnZUJ1ZmZlcihzb3VyY2VJbWFnZSwgLXJl
Y3QubG9jYXRpb24oKSk7CisgICAgcmV0dXJuIGltYWdlQnVmZmVyOworfQorCiBJbWFnZURyYXdS
ZXN1bHQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2UoSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9h
dFBvaW50JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIGltYWdlUGFp
bnRpbmdPcHRpb25zKQogewogICAgIHJldHVybiBkcmF3SW1hZ2UoaW1hZ2UsIEZsb2F0UmVjdChk
ZXN0aW5hdGlvbiwgaW1hZ2Uuc2l6ZSgpKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2Uu
c2l6ZSgpKSwgaW1hZ2VQYWludGluZ09wdGlvbnMpOwpAQCAtNjY2LDE3ICs3NDQsNiBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dDo6Y2xpcE91dFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0Um91bmRlZFJl
Y3QmIHJlY3QpCiAgICAgY2xpcE91dChwYXRoKTsKIH0KIAotR3JhcGhpY3NDb250ZXh0OjpDbGlw
VG9EcmF3aW5nQ29tbWFuZHNSZXN1bHQgR3JhcGhpY3NDb250ZXh0OjpjbGlwVG9EcmF3aW5nQ29t
bWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRGVzdGluYXRpb25Db2xv
clNwYWNlJiBjb2xvclNwYWNlLCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYmIGRy
YXdpbmdGdW5jdGlvbikKLXsKLSAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNy
ZWF0ZUNvbXBhdGlibGVCdWZmZXIoZGVzdGluYXRpb24uc2l6ZSgpLCBjb2xvclNwYWNlLCAqdGhp
cyk7Ci0gICAgaWYgKCFpbWFnZUJ1ZmZlcikKLSAgICAgICAgcmV0dXJuIENsaXBUb0RyYXdpbmdD
b21tYW5kc1Jlc3VsdDo6RmFpbGVkVG9DcmVhdGVJbWFnZUJ1ZmZlcjsKLQotICAgIGRyYXdpbmdG
dW5jdGlvbihpbWFnZUJ1ZmZlci0+Y29udGV4dCgpKTsKLSAgICBjbGlwVG9JbWFnZUJ1ZmZlcigq
aW1hZ2VCdWZmZXIsIGRlc3RpbmF0aW9uKTsKLSAgICByZXR1cm4gQ2xpcFRvRHJhd2luZ0NvbW1h
bmRzUmVzdWx0OjpTdWNjZXNzOwotfQotCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcFRvSW1h
Z2VCdWZmZXIoSW1hZ2VCdWZmZXImIGltYWdlQnVmZmVyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3Rp
bmF0aW9uUmVjdCkKIHsKICAgICBpbWFnZUJ1ZmZlci5jbGlwVG9NYXNrKCp0aGlzLCBkZXN0aW5h
dGlvblJlY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQuaAppbmRleCBjZjcwOTJkZTMzYmM1YjcyOGFkNDYxYjBmYzAyMTc3ZjY5ZWVm
ZjMyLi4yMzI5YTM4ZDk3OGFiNWZhZjY4YTIzNzdkYWNiMDEwNzBlNjFlYWRiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApAQCAt
NDE2LDYgKzQxNiwxNCBAQCBwdWJsaWM6CiAKICAgICAvLyBJbWFnZXMsIFBhdHRlcm5zLCBhbmQg
TWVkaWEKIAorICAgIEludFNpemUgY29tcGF0aWJsZUltYWdlQnVmZmVyU2l6ZShjb25zdCBGbG9h
dFNpemUmKSBjb25zdDsKKyAgICBJbnRSZWN0IGNvbXBhdGlibGVJbWFnZUJ1ZmZlclJlY3QoY29u
c3QgRmxvYXRSZWN0JikgY29uc3Q7CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIFJlZlB0
cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwgZmxvYXQg
cmVzb2x1dGlvblNjYWxlID0gMSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiA9IERlc3Rp
bmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQ
dHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNp
emUmLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmID0gRGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCKCksIEltYWdlQnVmZmVyVHlwZSA9IEltYWdlQnVmZmVyVHlwZTo6Q29tcGF0aWJsZSkg
Y29uc3Q7CisgICAgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZm
ZXIoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiA9IERlc3Rp
bmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBJbWFnZUJ1ZmZlclR5cGUgPSBJbWFnZUJ1ZmZlclR5
cGU6OkNvbXBhdGlibGUpIGNvbnN0OworICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY29weVJlY3RU
b0NvbXBhdGlibGVJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYgc291cmNlSW1hZ2UsIGNvbnN0IEZs
b2F0UmVjdCYsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgPSBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0IoKSkgY29uc3Q7CisKICAgICB2aXJ0dWFsIHZvaWQgZHJhd05hdGl2ZUltYWdl
KE5hdGl2ZUltYWdlJiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYgPSB7IH0pID0gMDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIEltYWdlRHJhd1Jlc3Vs
dCBkcmF3SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFBvaW50JiBkZXN0aW5hdGlvbiwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmID0geyBJbWFnZU9yaWVudGF0aW9uOjpGcm9tSW1hZ2UgfSk7
CkBAIC00NTMsMTAgKzQ2MSw2IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFs
IHZvaWQgY2xpcE91dFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmKTsKICAgICB2
aXJ0dWFsIHZvaWQgY2xpcFBhdGgoY29uc3QgUGF0aCYsIFdpbmRSdWxlID0gV2luZFJ1bGU6OkV2
ZW5PZGQpID0gMDsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgY2xpcFRvSW1hZ2VC
dWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmKTsKLQotICAgIGVudW0gY2xhc3Mg
Q2xpcFRvRHJhd2luZ0NvbW1hbmRzUmVzdWx0IDogYm9vbCB7IFN1Y2Nlc3MsIEZhaWxlZFRvQ3Jl
YXRlSW1hZ2VCdWZmZXIgfTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIENsaXBUb0RyYXdp
bmdDb21tYW5kc1Jlc3VsdCBjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBk
ZXN0aW5hdGlvbiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgRnVuY3Rpb248dm9pZChH
cmFwaGljc0NvbnRleHQmKT4mJik7Ci0KICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIEludFJl
Y3QgY2xpcEJvdW5kcygpIGNvbnN0OwogCiAgICAgLy8gVGV4dApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwCmluZGV4IDAxOTNiZmIwZjk2Yzdk
MzQwNTNlNzY4YTBjMjU4ZmMxMjU3ODBmZDMuLjc3MTgyOGI2NDVjYjMxMTNiNTUzODdhN2EyZTI0
YzAyODMxNDc2MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZUJ1ZmZlci5jcHAKQEAgLTEsNyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA5
IERpcmsgU2NodWx6ZSA8a3JpdEB3ZWJraXQub3JnPgogICogQ29weXJpZ2h0IChDKSBSZXNlYXJj
aCBJbiBNb3Rpb24gTGltaXRlZCAyMDExLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJp
Z2h0IChDKSAyMDE2LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE2LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03Miw3NSArNzIsNiBAQCBSZWZQdHI8SW1h
Z2VCdWZmZXI+IEltYWdlQnVmZmVyOjpjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBSZW5k
ZXJpbmdNb2RlIHJlbgogICAgIHJldHVybiBpbWFnZUJ1ZmZlcjsKIH0KIAotUmVmUHRyPEltYWdl
QnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjb25zdCBGbG9hdFNp
emUmIHNpemUsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKLXsKLSAgICBpZiAoc2l6
ZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgSW50U2l6ZSBzY2Fs
ZWRTaXplID0gSW1hZ2VCdWZmZXI6OmNvbXBhdGlibGVCdWZmZXJTaXplKHNpemUsIGNvbnRleHQp
OwotCi0gICAgUmVmUHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlcjsKLQotICAgIGlmIChjb250
ZXh0LnJlbmRlcmluZ01vZGUoKSA9PSBSZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCkKLSAgICAg
ICAgaW1hZ2VCdWZmZXIgPSBBY2NlbGVyYXRlZEltYWdlQnVmZmVyOjpjcmVhdGUoc2NhbGVkU2l6
ZSwgY29udGV4dCk7Ci0gICAgCi0gICAgaWYgKCFpbWFnZUJ1ZmZlcikKLSAgICAgICAgaW1hZ2VC
dWZmZXIgPSBVbmFjY2VsZXJhdGVkSW1hZ2VCdWZmZXI6OmNyZWF0ZShzY2FsZWRTaXplLCBjb250
ZXh0KTsKLQotICAgIGlmICghaW1hZ2VCdWZmZXIpCi0gICAgICAgIHJldHVybiBudWxscHRyOwot
Ci0gICAgaW1hZ2VCdWZmZXItPmNvbnRleHQoKS5zY2FsZShzY2FsZWRTaXplIC8gc2l6ZSk7Ci0g
ICAgcmV0dXJuIGltYWdlQnVmZmVyOwotfQotCi0vLyBUaGlzIGlzIHVzZWZ1bCB3aGVuIHlvdSBu
ZWVkIHRvIG1ha2Ugc3VyZSB0aGUgcGl4ZWwgZ3JpZCBvZiB0aGUgSW1hZ2VCdWZmZXIgYWxpZ25z
IHdpdGggdGhlIHBpeGVsIGdyaWQgb2YgdGhlIGNvbnRleHQuCi0vLyBTaW1wbHkgc2F5aW5nIGNy
ZWF0ZUNvbXBhdGlibGVCdWZmZXIocmVjdC5zaXplKCksIGNvbnRleHQpIGlzbid0IHN1ZmZpY2ll
bnQgaW4gdGhpcyBzaXR1YXRpb24sIGJlY2F1c2UgcmVjdC5sb2NhdGlvbigpIG1heSBub3QgbGll
IG9uIGEgcGl4ZWwgYm91bmRhcnkuCi0vLyBJbiB0aGlzIHNpdHVhdGlvbiwgd2UgaGF2ZSB0byBp
bmZsYXRlIGJvdGggdGhlIGxlZnQgc2lkZSBhbmQgdGhlIHJpZ2h0IHNpZGUsIHdoaWNoIGNhbiBs
ZWFkIHRvIGRpZmZlcmVudCByZXN1bHRzIHRoYW4KLS8vIGNyZWF0ZUNvbXBhdGlibGVCdWZmZXIo
cmVjdC5zaXplKCksIGNvbnRleHQpIHdvdWxkIGhhdmUgcHJvZHVjZWQuCi1hdXRvIEltYWdlQnVm
ZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3Qg
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSAtPiBzdGQ6Om9wdGlvbmFsPENvbXBhdGlibGVCdWZm
ZXJEZXNjcmlwdGlvbj4KLXsKLSAgICBpZiAocmVjdC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7Ci0KLSAgICBhdXRvIGluZm8gPSBJbWFnZUJ1ZmZlcjo6Y29tcGF0aWJs
ZUJ1ZmZlckluZm8ocmVjdCwgY29udGV4dCk7Ci0KLSAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IGlt
YWdlQnVmZmVyOwotCi0gICAgaWYgKGNvbnRleHQucmVuZGVyaW5nTW9kZSgpID09IFJlbmRlcmlu
Z01vZGU6OkFjY2VsZXJhdGVkKQotICAgICAgICBpbWFnZUJ1ZmZlciA9IEFjY2VsZXJhdGVkSW1h
Z2VCdWZmZXI6OmNyZWF0ZShpbmZvLnBoeXNpY2FsU2l6ZUluRGV2aWNlQ29vcmRpbmF0ZXMsIGNv
bnRleHQpOwotICAgIAotICAgIGlmICghaW1hZ2VCdWZmZXIpCi0gICAgICAgIGltYWdlQnVmZmVy
ID0gVW5hY2NlbGVyYXRlZEltYWdlQnVmZmVyOjpjcmVhdGUoaW5mby5waHlzaWNhbFNpemVJbkRl
dmljZUNvb3JkaW5hdGVzLCBjb250ZXh0KTsKLQotICAgIGlmICghaW1hZ2VCdWZmZXIpCi0gICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpLnNj
YWxlKGluZm8uc2NhbGUpOwotICAgIGltYWdlQnVmZmVyLT5jb250ZXh0KCkudHJhbnNsYXRlKC1p
bmZvLmluZmxhdGVkUmVjdEluVXNlckNvb3JkaW5hdGVzLmxvY2F0aW9uKCkpOwotICAgIHJldHVy
biB7IHsgaW1hZ2VCdWZmZXIucmVsZWFzZU5vbk51bGwoKSwgaW5mby5pbmZsYXRlZFJlY3RJblVz
ZXJDb29yZGluYXRlcyB9IH07Ci19Ci0KLVJlZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6
OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBjb25zdCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCkKLXsKLSAgICBpZiAoc2l6ZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBudWxscHRy
OwotCi0gICAgSW50U2l6ZSBzY2FsZWRTaXplID0gSW1hZ2VCdWZmZXI6OmNvbXBhdGlibGVCdWZm
ZXJTaXplKHNpemUsIGNvbnRleHQpOwotCi0gICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVm
ZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKHNjYWxlZFNpemUsIDEsIGNvbG9yU3BhY2UsIGNv
bnRleHQpOwotICAgIGlmICghaW1hZ2VCdWZmZXIpCi0gICAgICAgIHJldHVybiBudWxscHRyOwot
Ci0gICAgaW1hZ2VCdWZmZXItPmNvbnRleHQoKS5zY2FsZShzY2FsZWRTaXplIC8gc2l6ZSk7Ci0g
ICAgcmV0dXJuIGltYWdlQnVmZmVyOwotfQotCi1SZWZQdHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVm
ZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQg
cmVzb2x1dGlvblNjYWxlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2Us
IGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKLXsKLSAgICByZXR1cm4gSW1hZ2VCdWZm
ZXI6OmNyZWF0ZShzaXplLCBjb250ZXh0LnJlbmRlcmluZ01vZGUoKSwgcmVzb2x1dGlvblNjYWxl
LCBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwotfQotCiBib29sIEltYWdlQnVmZmVy
OjpzaXplTmVlZHNDbGFtcGluZyhjb25zdCBGbG9hdFNpemUmIHNpemUpCiB7CiAgICAgaWYgKHNp
emUuaXNFbXB0eSgpKQpAQCAtMTg1LDU4ICsxMTYsNiBAQCBGbG9hdFJlY3QgSW1hZ2VCdWZmZXI6
OmNsYW1wZWRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKICAgICByZXR1cm4gRmxvYXRSZWN0
KHJlY3QubG9jYXRpb24oKSwgY2xhbXBlZFNpemUocmVjdC5zaXplKCkpKTsKIH0KIAotSW50U2l6
ZSBJbWFnZUJ1ZmZlcjo6Y29tcGF0aWJsZUJ1ZmZlclNpemUoY29uc3QgRmxvYXRTaXplJiBzaXpl
LCBjb25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCi17Ci0gICAgLy8gRW5sYXJnZSB0aGUg
YnVmZmVyIHNpemUgaWYgdGhlIGNvbnRleHQncyB0cmFuc2Zvcm0gaXMgc2NhbGluZyBpdCBzbyB3
ZSBuZWVkIGEgaGlnaGVyCi0gICAgLy8gcmVzb2x1dGlvbiB0aGFuIG9uZSBwaXhlbCBwZXIgdW5p
dC4KLSAgICByZXR1cm4gZXhwYW5kZWRJbnRTaXplKHNpemUgKiBjb250ZXh0LnNjYWxlRmFjdG9y
KCkpOwotfQotCi1hdXRvIEltYWdlQnVmZmVyOjpjb21wYXRpYmxlQnVmZmVySW5mbyhjb25zdCBG
bG9hdFJlY3QmIHJlY3QsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgLT4gQ29tcGF0
aWJsZUJ1ZmZlckluZm8KLXsKLSAgICBhdXRvIHNjYWxlRmFjdG9yID0gY29udGV4dC5zY2FsZUZh
Y3RvcigpOwotICAgIGF1dG8gc2NhbGVkUmVjdCA9IHJlY3Q7Ci0gICAgc2NhbGVkUmVjdC5zY2Fs
ZShzY2FsZUZhY3Rvcik7Ci0gICAgYXV0byBpbmZsYXRlZFNjYWxlZFJlY3QgPSBlbmNsb3NpbmdJ
bnRSZWN0KHNjYWxlZFJlY3QpOwotICAgIGF1dG8gaW5mbGF0ZWRSZWN0SW5Vc2VyQ29vcmRpbmF0
ZXMgPSBGbG9hdFJlY3QoaW5mbGF0ZWRTY2FsZWRSZWN0KTsKLQotICAgIC8vIFdlIGRvbid0IHdh
bnQgdG8gYWxsb2NhdGUgaHVnZSBJbWFnZUJ1ZmZlcnMgYmVjYXVzZSB0aGV5IGNhbiB0YWtlIGEg
bG90IG9mIG1lbW9yeSwKLSAgICAvLyBzbyBpZiB0aGUgc2l6ZSB3b3VsZCBoYXZlIGJlZW4gdG9v
IGJpZywgZGVjcmVhc2UgcmVzb2x1dGlvbiBhbmQgc2NhbGUgdGhlIHJlc3VsdGluZyBjb250ZXh0
LgotICAgIC8vIFRoaXMgd2lsbCBtZWFuIHRoYXQgdGhlIEltYWdlQnVmZmVyIHdpbGwgbG9zZSBx
dWFsaXR5LCBidXQgd2lsbCBzdGlsbCBnZW5lcmFsbHkgbG9vayBjb3JyZWN0LgotICAgIGNvbnN0
ZXhwciBpbnQgbWF4RGltZW5zaW9uID0gNDA5NjsKLSAgICBpZiAoaW5mbGF0ZWRTY2FsZWRSZWN0
LndpZHRoKCkgPiBtYXhEaW1lbnNpb24pIHsKLSAgICAgICAgLy8gVGhlIHBpeGVsIGdyaWRzIHdv
bid0IGFsaWduIGFueSBtb3JlLCBzbyB0aGVyZSdzIG5vIG5lZWQgdG8gdHJ5IHRvIGhhbmRsZSBm
cmFjdGlvbnMgb2YgcGl4ZWxzLgotICAgICAgICBpbmZsYXRlZFNjYWxlZFJlY3Quc2V0V2lkdGgo
bWF4RGltZW5zaW9uKTsKLSAgICAgICAgaW5mbGF0ZWRSZWN0SW5Vc2VyQ29vcmRpbmF0ZXMuc2Nh
bGUobWF4RGltZW5zaW9uIC8gaW5mbGF0ZWRSZWN0SW5Vc2VyQ29vcmRpbmF0ZXMud2lkdGgoKSwg
MSk7Ci0gICAgICAgIHNjYWxlRmFjdG9yLnNldFdpZHRoKG1heERpbWVuc2lvbiAvIHJlY3Qud2lk
dGgoKSk7Ci0gICAgfQotICAgIGlmIChpbmZsYXRlZFNjYWxlZFJlY3QuaGVpZ2h0KCkgPiBtYXhE
aW1lbnNpb24pIHsKLSAgICAgICAgLy8gVGhlIHBpeGVsIGdyaWRzIHdvbid0IGFsaWduIGFueSBt
b3JlLCBzbyB0aGVyZSdzIG5vIG5lZWQgdG8gdHJ5IHRvIGhhbmRsZSBmcmFjdGlvbnMgb2YgcGl4
ZWxzLgotICAgICAgICBpbmZsYXRlZFNjYWxlZFJlY3Quc2V0SGVpZ2h0KG1heERpbWVuc2lvbik7
Ci0gICAgICAgIGluZmxhdGVkUmVjdEluVXNlckNvb3JkaW5hdGVzLnNjYWxlKDEsIG1heERpbWVu
c2lvbiAvIGluZmxhdGVkUmVjdEluVXNlckNvb3JkaW5hdGVzLmhlaWdodCgpKTsKLSAgICAgICAg
c2NhbGVGYWN0b3Iuc2V0SGVpZ2h0KG1heERpbWVuc2lvbiAvIHJlY3QuaGVpZ2h0KCkpOwotICAg
IH0KLQotICAgIGF1dG8gcGh5c2ljYWxTaXplSW5EZXZpY2VDb29yZGluYXRlcyA9IGluZmxhdGVk
U2NhbGVkUmVjdC5zaXplKCk7Ci0gICAgaW5mbGF0ZWRSZWN0SW5Vc2VyQ29vcmRpbmF0ZXMuc2Nh
bGUoMS4wZiAvIHNjYWxlRmFjdG9yKTsKLSAgICByZXR1cm4geyBXVEZNb3ZlKHBoeXNpY2FsU2l6
ZUluRGV2aWNlQ29vcmRpbmF0ZXMpLCBXVEZNb3ZlKGluZmxhdGVkUmVjdEluVXNlckNvb3JkaW5h
dGVzKSwgc2NhbGVGYWN0b3IgfTsKLX0KLQotUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZl
cjo6Y29weVJlY3RUb0J1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IERlc3RpbmF0
aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
KQotewotICAgIGlmIChyZWN0LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0K
LSAgICBJbnRTaXplIHNjYWxlZFNpemUgPSBJbWFnZUJ1ZmZlcjo6Y29tcGF0aWJsZUJ1ZmZlclNp
emUocmVjdC5zaXplKCksIGNvbnRleHQpOwotCi0gICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZl
cjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihzY2FsZWRTaXplLCAxLCBjb2xvclNwYWNlLCBjb250
ZXh0KTsKLSAgICBpZiAoIWJ1ZmZlcikKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBi
dWZmZXItPmNvbnRleHQoKS5kcmF3SW1hZ2VCdWZmZXIoKnRoaXMsIC1yZWN0LmxvY2F0aW9uKCkp
OwotICAgIHJldHVybiBidWZmZXI7Ci19Ci0KIFJlZlB0cjxOYXRpdmVJbWFnZT4gSW1hZ2VCdWZm
ZXI6OnNpbmtJbnRvTmF0aXZlSW1hZ2UoUmVmUHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlcikK
IHsKICAgICByZXR1cm4gaW1hZ2VCdWZmZXItPnNpbmtJbnRvTmF0aXZlSW1hZ2UoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCmluZGV4IGQyZDli
ZTllZjQwMzJmYWEyNWJlNjJjYWNlNDM3ODJkZWZjYjc0MTUuLjUzMDk0OGUyNjE4YzYyNmNlMjNj
OGJjY2NiNWFjNTZhMWM5NDdiZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VCdWZmZXIuaApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+Ci0gKiBDb3B5cmln
aHQgKEMpIDIwMDctMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDctMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgVG9yY2ggTW9iaWxlIChCZWlqaW5nKSBDby4gTHRkLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtNTAsMTYgKzUwLDYgQEAgcHVibGlj
OgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZShj
b25zdCBGbG9hdFNpemUmLCBSZW5kZXJpbmdNb2RlLCBTaG91bGRVc2VEaXNwbGF5TGlzdCwgUmVu
ZGVyaW5nUHVycG9zZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBjb25zdCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UmLCBQaXhlbEZvcm1hdCwgY29uc3QgSG9zdFdpbmRvdyogPSBudWxscHRyKTsKICAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGUoY29uc3Qg
RmxvYXRTaXplJiwgUmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBjb25zdCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBQaXhlbEZvcm1hdCwgY29uc3QgSG9zdFdpbmRvdyogPSBu
dWxscHRyKTsKIAotICAgIC8vIENyZWF0ZSBhbiBpbWFnZSBidWZmZXIgY29tcGF0aWJsZSB3aXRo
IHRoZSBjb250ZXh0LCB3aXRoIHN1aXRhYmxlIHJlc29sdXRpb24gZm9yIGRyYXdpbmcgaW50byB0
aGUgYnVmZmVyIGFuZCB0aGVuIGludG8gdGhpcyBjb250ZXh0LgotICAgIHN0YXRpYyBSZWZQdHI8
SW1hZ2VCdWZmZXI+IGNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwgY29u
c3QgR3JhcGhpY3NDb250ZXh0Jik7Ci0gICAgc3RydWN0IENvbXBhdGlibGVCdWZmZXJEZXNjcmlw
dGlvbiB7Ci0gICAgICAgIFJlZjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXI7Ci0gICAgICAgIEZs
b2F0UmVjdCBpbmZsYXRlZFJlY3RJblVzZXJDb29yZGluYXRlczsKLSAgICB9OwotICAgIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPENvbXBhdGlibGVCdWZmZXJEZXNjcmlwdGlvbj4gY3JlYXRlQ29tcGF0
aWJsZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHJlY3RJblVzZXJDb29yZGluYXRlcywgY29uc3Qg
R3JhcGhpY3NDb250ZXh0Jik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxJbWFn
ZUJ1ZmZlcj4gY3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmLCBjb25zdCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBjb25zdCBHcmFwaGljc0NvbnRleHQmKTsKLSAgICBzdGF0
aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0IEZsb2F0
U2l6ZSYsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNl
JiwgY29uc3QgR3JhcGhpY3NDb250ZXh0Jik7Ci0KICAgICAvLyBUaGVzZSBmdW5jdGlvbnMgYXJl
IHVzZWQgd2hlbiBjbGFtcGluZyB0aGUgSW1hZ2VCdWZmZXIgd2hpY2ggaXMgY3JlYXRlZCBmb3Ig
ZmlsdGVyLCBtYXNrZXIgb3IgY2xpcHBlci4KICAgICBzdGF0aWMgYm9vbCBzaXplTmVlZHNDbGFt
cGluZyhjb25zdCBGbG9hdFNpemUmKTsKICAgICBzdGF0aWMgYm9vbCBzaXplTmVlZHNDbGFtcGlu
Zyhjb25zdCBGbG9hdFNpemUmLCBGbG9hdFNpemUmIHNjYWxlKTsKQEAgLTY3LDE0ICs1Nyw2IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgRmxvYXRTaXplIGNsYW1wZWRTaXplKGNvbnN0IEZsb2F0U2l6
ZSYsIEZsb2F0U2l6ZSYgc2NhbGUpOwogICAgIHN0YXRpYyBGbG9hdFJlY3QgY2xhbXBlZFJlY3Qo
Y29uc3QgRmxvYXRSZWN0Jik7CiAKLSAgICBzdGF0aWMgSW50U2l6ZSBjb21wYXRpYmxlQnVmZmVy
U2l6ZShjb25zdCBGbG9hdFNpemUmLCBjb25zdCBHcmFwaGljc0NvbnRleHQmKTsKLSAgICBzdHJ1
Y3QgQ29tcGF0aWJsZUJ1ZmZlckluZm8gewotICAgICAgICBJbnRTaXplIHBoeXNpY2FsU2l6ZUlu
RGV2aWNlQ29vcmRpbmF0ZXM7Ci0gICAgICAgIEZsb2F0UmVjdCBpbmZsYXRlZFJlY3RJblVzZXJD
b29yZGluYXRlczsKLSAgICAgICAgRmxvYXRTaXplIHNjYWxlOwotICAgIH07Ci0gICAgc3RhdGlj
IENvbXBhdGlibGVCdWZmZXJJbmZvIGNvbXBhdGlibGVCdWZmZXJJbmZvKGNvbnN0IEZsb2F0UmVj
dCYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpOwotICAgIAogICAgIFdFQkNPUkVfRVhQT1JUIHZp
cnR1YWwgfkltYWdlQnVmZmVyKCkgPSBkZWZhdWx0OwogCiAgICAgdmlydHVhbCB2b2lkIHNldEJh
Y2tlbmQoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQmFja2VuZD4mJikgPSAwOwpAQCAtMTIy
LDkgKzEwNCw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFJlZlB0cjxJbWFnZT4gY29weUltYWdl
KEJhY2tpbmdTdG9yZUNvcHkgPSBDb3B5QmFja2luZ1N0b3JlLCBQcmVzZXJ2ZVJlc29sdXRpb24g
PSBQcmVzZXJ2ZVJlc29sdXRpb246Ok5vKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBSZWZQdHI8
SW1hZ2U+IGZpbHRlcmVkSW1hZ2UoRmlsdGVyJikgPSAwOwogCi0gICAgLy8gQ3JlYXRlIGFuIGlt
YWdlIGJ1ZmZlciBjb21wYXRpYmxlIHdpdGggdGhlIGNvbnRleHQgYW5kIGNvcHkgcmVjdCBmcm9t
IHRoaXMgYnVmZmVyIGludG8gdGhpcyBuZXcgb25lLgotICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4g
Y29weVJlY3RUb0J1ZmZlcihjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2UmLCBjb25zdCBHcmFwaGljc0NvbnRleHQmKTsKLQogICAgIHZpcnR1YWwgdm9pZCBkcmF3
KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCA9IEZsb2F0UmVjdCgwLCAwLCAtMSwgLTEpLCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYgPSB7IH0pID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1BhdHRlcm4oR3Jh
cGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0
IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmNwcApp
bmRleCA2ZmZjMjgyYjljYzc1MDQwODg4Y2IzNjRmYjMzMDIwMmZjYjAzYmQwLi4zNzBjN2RjMjg5
NmYzOTYyY2IzZWQ1MDk4MmRhYjY5OTc0ZjYzMmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5j
cHAKQEAgLTY1LDcgKzY1LDcgQEAgSW1hZ2VEcmF3UmVzdWx0IE5hbWVkSW1hZ2VHZW5lcmF0ZWRJ
bWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEYKIHZvaWQgTmFtZWRJ
bWFnZUdlbmVyYXRlZEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBo
YXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JiBvcHRpb25zKQogewogI2lmIFVTRShORVdfVEhFTUUpCi0gICAgYXV0byBpbWFnZUJ1ZmZlciA9
IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKHNpemUoKSwgY29udGV4dCk7Cisg
ICAgYXV0byBpbWFnZUJ1ZmZlciA9IGNvbnRleHQuY3JlYXRlQ29tcGF0aWJsZUltYWdlQnVmZmVy
KHNpemUoKSk7CiAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OdWxsR3JhcGhpY3NDb250
ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OdWxsR3JhcGhpY3NDb250
ZXh0LmgKaW5kZXggMjFkMjBjNzE3OWYyY2RhMjNiY2M2MGZiNTMwNzM4NzE3NmRjM2IzNy4uZDBm
OTYzNWRjZDU0NDAxNzJiZmQ4NTA2ZGY5ZjcwNzE1Y2MwN2U2YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTnVsbEdyYXBoaWNzQ29udGV4dC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL051bGxHcmFwaGljc0NvbnRleHQuaApAQCAt
MTMxLDggKzEzMSw2IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGNsaXBSb3VuZGVkUmVjdChjb25z
dCBGbG9hdFJvdW5kZWRSZWN0JikgZmluYWwgeyB9CiAgICAgdm9pZCBjbGlwT3V0Um91bmRlZFJl
Y3QoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYpIGZpbmFsIHsgfQotCi0gICAgQ2xpcFRvRHJhd2lu
Z0NvbW1hbmRzUmVzdWx0IGNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmLCBj
b25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4
dCYpPiYmKSBmaW5hbCB7IHJldHVybiBDbGlwVG9EcmF3aW5nQ29tbWFuZHNSZXN1bHQ6OlN1Y2Nl
c3M7IH0KICAgICB2b2lkIGNsaXBUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxv
YXRSZWN0JikgZmluYWwgeyB9CiAKICAgICB2b2lkIGZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYs
IEdyYWRpZW50JikgZmluYWwgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9SZW5kZXJpbmdNb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9SZW5kZXJpbmdNb2RlLmgKaW5kZXggMDUyYmNjYTM4MjFmNjk5MDZkOGRhYzU0NzBmODUx
YmY2OWU0ZmUzNi4uOTZiOGFjZTk2NDc1OTIwMDAwZWYxNmNlMDJhYmE5MWFhMTdjNzRhZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVuZGVyaW5nTW9kZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbmRlcmluZ01vZGUuaApA
QCAtMzUsNiArMzUsNyBAQCBlbnVtIGNsYXNzIFJlbmRlcmluZ1B1cnBvc2UgOiB1aW50OF90IHsK
IH07CiAKIGVudW0gY2xhc3MgU2hvdWxkVXNlRGlzcGxheUxpc3QgOiBib29sIHsgTm8sIFllcyB9
OworZW51bSBjbGFzcyBJbWFnZUJ1ZmZlclR5cGUgOiBib29sIHsgQ29tcGF0aWJsZSwgQ29uY3Jl
dGUgfTsKIGVudW0gY2xhc3MgUmVuZGVyaW5nTW9kZSA6IGJvb2wgeyBVbmFjY2VsZXJhdGVkLCBB
Y2NlbGVyYXRlZCB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwCmlu
ZGV4IDM2NGJjMjNhMzBiMGFiNWIyNWRiZDllZjc1NzY0MDcyNTdhOGMyNGQuLjI5OGQ0YWFmMGRi
NmQ0MjRhYWVjOTE3MjE2ODkwYTM2NTIyMGNmZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwCkBAIC0yMzIs
MTQgKzIzMiwxNSBAQCB2b2lkIFBERkRvY3VtZW50SW1hZ2U6OnVwZGF0ZUNhY2hlZEltYWdlSWZO
ZWVkZWQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdAogCiAgICAgLy8gQ2FjaGUgdGhl
IFBERiBpbWFnZSBvbmx5IGlmIHRoZSBzaXplIG9mIHRoZSBuZXcgaW1hZ2Ugd29uJ3QgZXhjZWVk
IHRoZSBjYWNoZSB0aHJlc2hvbGQuCiAgICAgaWYgKG1fcGRmSW1hZ2VDYWNoaW5nUG9saWN5ID09
IFBERkltYWdlQ2FjaGluZ1BvbGljeTo6QmVsb3dNZW1vcnlMaW1pdCkgewotICAgICAgICBJbnRT
aXplIHNjYWxlZFNpemUgPSBJbWFnZUJ1ZmZlcjo6Y29tcGF0aWJsZUJ1ZmZlclNpemUoY2FjaGVk
SW1hZ2VTaXplLCBjb250ZXh0KTsKKyAgICAgICAgYXV0byBzY2FsZWRTaXplID0gY29udGV4dC5j
b21wYXRpYmxlSW1hZ2VCdWZmZXJTaXplKGNhY2hlZEltYWdlU2l6ZSk7CiAgICAgICAgIGlmIChz
X2FsbERlY29kZWREYXRhU2l6ZSArIHNjYWxlZFNpemUudW5jbGFtcGVkQXJlYSgpICogNCAtIG1f
Y2FjaGVkQnl0ZXMgPiBzX21heERlY29kZWREYXRhU2l6ZSkgewogICAgICAgICAgICAgZGVzdHJv
eURlY29kZWREYXRhKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CiAK
LSAgICBtX2NhY2hlZEltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVC
dWZmZXIoY2FjaGVkSW1hZ2VTaXplLCBjb250ZXh0KTsKKyAgICAvLyBDcmVhdGUgaW4tcHJvY2Vz
cyBJbWFnZUJ1ZmZlciBzaW5jZSB0aGUgZGVvY29kaW5nIG9mIFBERiBpbWFnZXMgaGFzIHRvIGhh
cHBlbiBpbiBXZWJQcm9jZXNzLgorICAgIG1fY2FjaGVkSW1hZ2VCdWZmZXIgPSBjb250ZXh0LmNy
ZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcihjYWNoZWRJbWFnZVNpemUsIERlc3RpbmF0aW9uQ29s
b3JTcGFjZTo6U1JHQigpLCBJbWFnZUJ1ZmZlclR5cGU6OkNvbmNyZXRlKTsKICAgICBpZiAoIW1f
Y2FjaGVkSW1hZ2VCdWZmZXIpIHsKICAgICAgICAgZGVzdHJveURlY29kZWREYXRhKCk7CiAgICAg
ICAgIHJldHVybjsKQEAgLTI5Miw3ICsyOTMsNyBAQCBJbWFnZURyYXdSZXN1bHQgUERGRG9jdW1l
bnRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdAog
ICAgICAgICAgICAgLy8gc2NhbGFyID0gc3FydChtYXggbnVtYmVyIG9mIHBpeGVscyAvICh3aWR0
aCAqIGhlaWdodCkpCiAgICAgICAgICAgICBhdXRvIHNjYWxhciA9IHN0ZDo6bWluKDEuZiwgc3Rk
OjpzcXJ0KHN0YXRpY19jYXN0PGZsb2F0PihzX21heENhY2hlZEltYWdlQXJlYSkgLyAoZHN0UmVj
dC53aWR0aCgpICogZHN0UmVjdC5oZWlnaHQoKSkpKTsKICAgICAgICAgICAgIEZsb2F0UmVjdCBs
b2NhbERlc3RpbmF0aW9uUmVjdChGbG9hdFBvaW50KCksIGRzdFJlY3Quc2l6ZSgpICogc2NhbGFy
KTsKLSAgICAgICAgICAgIGlmIChhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0
ZUNvbXBhdGlibGVCdWZmZXIobG9jYWxEZXN0aW5hdGlvblJlY3Quc2l6ZSgpLCBjb250ZXh0KSkg
eworICAgICAgICAgICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBjb250ZXh0LmNyZWF0ZUNvbXBh
dGlibGVJbWFnZUJ1ZmZlcihsb2NhbERlc3RpbmF0aW9uUmVjdC5zaXplKCksIERlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6U1JHQigpLCBJbWFnZUJ1ZmZlclR5cGU6OkNvbmNyZXRlKSkgewogICAgICAg
ICAgICAgICAgIGF1dG8mIGJ1ZmZlckNvbnRleHQgPSBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpOwog
ICAgICAgICAgICAgICAgIHRyYW5zZm9ybUNvbnRleHRGb3JQYWludGluZyhidWZmZXJDb250ZXh0
LCBsb2NhbERlc3RpbmF0aW9uUmVjdCwgc3JjUmVjdCk7CiAgICAgICAgICAgICAgICAgZHJhd1BE
RlBhZ2UoYnVmZmVyQ29udGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb3JldGV4dC9EcmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9EcmF3R2x5cGhzUmVjb3JkZXJD
b3JlVGV4dC5jcHAKaW5kZXggYzI5NWVmZTgzNDdiMDQ1YmUzMWRiMzY3NjczZWU3Zjk5NWIxYTRj
My4uZjY5MjMyMmE0ZWIwM2ZlNzdhMTg3NWYwNTdjODQ3MTdlZGI3NWQyYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRHJhd0dseXBoc1JlY29y
ZGVyQ29yZVRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
cmV0ZXh0L0RyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcApAQCAtMzc2LDExICszNzYsMTQg
QEAgdm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6OmRyYXdPVFNWR1J1bihjb25zdCBGb250JiBmb250
LCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKgogICAgIEZsb2F0UG9pbnQgcGVuUG9zaXRpb24gPSBz
dGFydFBvaW50OwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1HbHlwaHM7ICsraSkg
ewogICAgICAgICBhdXRvIGJvdW5kcyA9IGZvbnQuYm91bmRzRm9yR2x5cGgoZ2x5cGhzW2ldKTsK
LSAgICAgICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXJEZXNjcmlwdGlvbiA9IEltYWdlQnVmZmVyOjpj
cmVhdGVDb21wYXRpYmxlQnVmZmVyKGJvdW5kcywgbV9vd25lcikpIHsKLSAgICAgICAgICAgIEZv
bnRDYXNjYWRlOjpkcmF3R2x5cGhzKGltYWdlQnVmZmVyRGVzY3JpcHRpb24tPmltYWdlQnVmZmVy
LT5jb250ZXh0KCksIGZvbnQsIGdseXBocyArIGksIGFkdmFuY2VzICsgaSwgMSwgRmxvYXRQb2lu
dCgpLCBzbW9vdGhpbmdNb2RlKTsKLSAgICAgICAgICAgIGF1dG8gZGVzdGluYXRpb25SZWN0ID0g
aW1hZ2VCdWZmZXJEZXNjcmlwdGlvbi0+aW5mbGF0ZWRSZWN0SW5Vc2VyQ29vcmRpbmF0ZXM7CisK
KyAgICAgICAgLy8gQ3JlYXRlIGluLXByb2Nlc3MgSW1hZ2VCdWZmZXIgc2luY2UgdGhlIGRlb2Nv
ZGluZyBvZiBPVC1TVkcgZm9udHMgaGFzIHRvIGhhcHBlbiBpbiBXZWJQcm9jZXNzLgorICAgICAg
ICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IG1fb3duZXIuY3JlYXRlQ29tcGF0aWJsZUltYWdlQnVm
ZmVyKGJvdW5kcywgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIEltYWdlQnVmZmVyVHlw
ZTo6Q29uY3JldGUpKSB7CisgICAgICAgICAgICBGb250Q2FzY2FkZTo6ZHJhd0dseXBocyhpbWFn
ZUJ1ZmZlci0+Y29udGV4dCgpLCBmb250LCBnbHlwaHMgKyBpLCBhZHZhbmNlcyArIGksIDEsIEZs
b2F0UG9pbnQoKSwgc21vb3RoaW5nTW9kZSk7CisKKyAgICAgICAgICAgIEZsb2F0UmVjdCBkZXN0
aW5hdGlvblJlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KGJvdW5kcyk7CiAgICAgICAgICAgICBkZXN0
aW5hdGlvblJlY3QubW92ZUJ5KHBlblBvc2l0aW9uKTsKLSAgICAgICAgICAgIG1fb3duZXIuZHJh
d0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyRGVzY3JpcHRpb24tPmltYWdlQnVmZmVyLCBkZXN0aW5h
dGlvblJlY3QpOworICAgICAgICAgICAgbV9vd25lci5kcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVm
ZmVyLCBkZXN0aW5hdGlvblJlY3QpOwogICAgICAgICB9CiAgICAgICAgIHBlblBvc2l0aW9uLm1v
dmUoc2l6ZShhZHZhbmNlc1tpXSkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwCmlu
ZGV4IGQ5YjBlZGRjMjY4YzI5NWI3M2Q5YjY2MWVlOGMxNTZkYmEzZGI5NzYuLjMwMjVmZmVjOWQ1
YmIwYThiOTM4NzY1MDkzNDVkNjcyOTNhZTMzNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNw
cApAQCAtMjQwLDEwICsyNDAsNiBAQCB2b2lkIERpc3BsYXlMaXN0OjphcHBlbmQoSXRlbUhhbmRs
ZSBpdGVtKQogICAgICAgICByZXR1cm4gYXBwZW5kPENsaXBPdXRUb1BhdGg+KGl0ZW0uZ2V0PENs
aXBPdXRUb1BhdGg+KCkpOwogICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBQYXRoOgogICAgICAgICBy
ZXR1cm4gYXBwZW5kPENsaXBQYXRoPihpdGVtLmdldDxDbGlwUGF0aD4oKSk7Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM6Ci0gICAgICAgIHJldHVybiBhcHBl
bmQ8QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM+KGl0ZW0uZ2V0PEJlZ2luQ2xpcFRvRHJhd2lu
Z0NvbW1hbmRzPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpFbmRDbGlwVG9EcmF3aW5nQ29tbWFu
ZHM6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPihpdGVt
LmdldDxFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM+KCkpOwogICAgIGNhc2UgSXRlbVR5cGU6OkRy
YXdGaWx0ZXJlZEltYWdlQnVmZmVyOgogICAgICAgICByZXR1cm4gYXBwZW5kPERyYXdGaWx0ZXJl
ZEltYWdlQnVmZmVyPihpdGVtLmdldDxEcmF3RmlsdGVyZWRJbWFnZUJ1ZmZlcj4oKSk7CiAgICAg
Y2FzZSBJdGVtVHlwZTo6RHJhd0dseXBoczoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlbUJ1ZmZlci5jcHAKaW5kZXggNDYzYjEzNDZkYzM3MjM0NWE0OWNiOGE1YjU2MjJkMjZkNzg2
MTQxOC4uNzgyZjg4OWFiMDYxMzgwZDliOTgwMTgxMmZhYmFmZDgxZjg1ZWM5NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0SXRlbUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKQEAgLTEwOSwxMiArMTA5LDYg
QEAgdm9pZCBJdGVtSGFuZGxlOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiAgICAg
Y2FzZSBJdGVtVHlwZTo6Q2xpcFBhdGg6CiAgICAgICAgIGdldDxDbGlwUGF0aD4oKS5hcHBseShj
b250ZXh0KTsKICAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2luQ2xpcFRv
RHJhd2luZ0NvbW1hbmRzOgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OkVuZENsaXBUb0RyYXdpbmdDb21tYW5kczoKLSAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybjsKICAgICBjYXNlIEl0
ZW1UeXBlOjpEcmF3RmlsdGVyZWRJbWFnZUJ1ZmZlcjoKICAgICAgICAgZ2V0PERyYXdGaWx0ZXJl
ZEltYWdlQnVmZmVyPigpLmFwcGx5KGNvbnRleHQpOwogICAgICAgICByZXR1cm47CkBAIC0zMjIs
OSArMzE2LDYgQEAgdm9pZCBJdGVtSGFuZGxlOjpkZXN0cm95KCkKICAgICAgICAgc3RhdGljX2Fz
c2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8QXBwbHlTdHJva2VQYXR0ZXJuPjo6
dmFsdWUpOwogICAgICAgICByZXR1cm47CiAjZW5kaWYKLSAgICBjYXNlIEl0ZW1UeXBlOjpCZWdp
bkNsaXBUb0RyYXdpbmdDb21tYW5kczoKLSAgICAgICAgZ2V0PEJlZ2luQ2xpcFRvRHJhd2luZ0Nv
bW1hbmRzPigpLn5CZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcygpOwotICAgICAgICByZXR1cm47
CiAgICAgY2FzZSBJdGVtVHlwZTo6QmVnaW5UcmFuc3BhcmVuY3lMYXllcjoKICAgICAgICAgc3Rh
dGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8QmVnaW5UcmFuc3BhcmVu
Y3lMYXllcj46OnZhbHVlKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMzY3LDkgKzM1OCw2IEBAIHZv
aWQgSXRlbUhhbmRsZTo6ZGVzdHJveSgpCiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1JlY3Q6CiAg
ICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPERyYXdS
ZWN0Pjo6dmFsdWUpOwogICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6RW5kQ2xp
cFRvRHJhd2luZ0NvbW1hbmRzOgotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlh
bGx5X2Rlc3RydWN0aWJsZTxFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM+Ojp2YWx1ZSk7Ci0gICAg
ICAgIHJldHVybjsKICAgICBjYXNlIEl0ZW1UeXBlOjpFbmRUcmFuc3BhcmVuY3lMYXllcjoKICAg
ICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8RW5kVHJh
bnNwYXJlbmN5TGF5ZXI+Ojp2YWx1ZSk7CiAgICAgICAgIHJldHVybjsKQEAgLTU0Niw4ICs1MzQs
NiBAQCBib29sIEl0ZW1IYW5kbGU6OnNhZmVDb3B5KEl0ZW1UeXBlIGl0ZW1UeXBlLCBJdGVtSGFu
ZGxlIGRlc3RpbmF0aW9uKSBjb25zdAogICAgIGNhc2UgSXRlbVR5cGU6OkFwcGx5U3Ryb2tlUGF0
dGVybjoKICAgICAgICAgcmV0dXJuIGNvcHlJbnRvPEFwcGx5U3Ryb2tlUGF0dGVybj4oaXRlbU9m
ZnNldCwgKnRoaXMpOwogI2VuZGlmCi0gICAgY2FzZSBJdGVtVHlwZTo6QmVnaW5DbGlwVG9EcmF3
aW5nQ29tbWFuZHM6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxCZWdpbkNsaXBUb0RyYXdpbmdD
b21tYW5kcz4oaXRlbU9mZnNldCwgKnRoaXMpOwogICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2luVHJh
bnNwYXJlbmN5TGF5ZXI6CiAgICAgICAgIHJldHVybiBjb3B5SW50bzxCZWdpblRyYW5zcGFyZW5j
eUxheWVyPihpdGVtT2Zmc2V0LCAqdGhpcyk7CiAgICAgY2FzZSBJdGVtVHlwZTo6Q2xlYXJSZWN0
OgpAQCAtNTcwLDggKzU1Niw2IEBAIGJvb2wgSXRlbUhhbmRsZTo6c2FmZUNvcHkoSXRlbVR5cGUg
aXRlbVR5cGUsIEl0ZW1IYW5kbGUgZGVzdGluYXRpb24pIGNvbnN0CiAgICAgICAgIHJldHVybiBj
b3B5SW50bzxEcmF3TGluZT4oaXRlbU9mZnNldCwgKnRoaXMpOwogICAgIGNhc2UgSXRlbVR5cGU6
OkRyYXdSZWN0OgogICAgICAgICByZXR1cm4gY29weUludG88RHJhd1JlY3Q+KGl0ZW1PZmZzZXQs
ICp0aGlzKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM6Ci0g
ICAgICAgIHJldHVybiBjb3B5SW50bzxFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM+KGl0ZW1PZmZz
ZXQsICp0aGlzKTsKICAgICBjYXNlIEl0ZW1UeXBlOjpFbmRUcmFuc3BhcmVuY3lMYXllcjoKICAg
ICAgICAgcmV0dXJuIGNvcHlJbnRvPEVuZFRyYW5zcGFyZW5jeUxheWVyPihpdGVtT2Zmc2V0LCAq
dGhpcyk7CiAgICAgY2FzZSBJdGVtVHlwZTo6RmlsbEVsbGlwc2U6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVt
VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVtVHlwZS5jcHAKaW5kZXggZGZhMWU3NGZiMjQ4NmMzNGEwOWMxZmExYmEy
Y2JkZTc0OTAwNGRkYi4uZjY3N2E2ZGEzOTlmNTE4ZDljMWJhYmVlOTI4N2U1ZTczZTU0NWJhYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0SXRlbVR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmNwcApAQCAtNzYsMTAgKzc2
LDYgQEAgc3RhdGljIHNpemVfdCBzaXplT2ZJdGVtSW5CeXRlcyhJdGVtVHlwZSB0eXBlKQogICAg
ICAgICByZXR1cm4gc2l6ZW9mKENsaXBPdXRUb1BhdGgpOwogICAgIGNhc2UgSXRlbVR5cGU6OkNs
aXBQYXRoOgogICAgICAgICByZXR1cm4gc2l6ZW9mKENsaXBQYXRoKTsKLSAgICBjYXNlIEl0ZW1U
eXBlOjpCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kczoKLSAgICAgICAgcmV0dXJuIHNpemVvZihC
ZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcyk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RW5kQ2xpcFRv
RHJhd2luZ0NvbW1hbmRzOgotICAgICAgICByZXR1cm4gc2l6ZW9mKEVuZENsaXBUb0RyYXdpbmdD
b21tYW5kcyk7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ZpbHRlcmVkSW1hZ2VCdWZmZXI6CiAg
ICAgICAgIHJldHVybiBzaXplb2YoRHJhd0ZpbHRlcmVkSW1hZ2VCdWZmZXIpOwogICAgIGNhc2Ug
SXRlbVR5cGU6OkRyYXdHbHlwaHM6CkBAIC0xOTQsOCArMTkwLDYgQEAgYm9vbCBpc0RyYXdpbmdJ
dGVtKEl0ZW1UeXBlIHR5cGUpCiAgICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFRvSW1hZ2VCdWZmZXI6
CiAgICAgY2FzZSBJdGVtVHlwZTo6Q2xpcE91dFRvUGF0aDoKICAgICBjYXNlIEl0ZW1UeXBlOjpD
bGlwUGF0aDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kczoK
LSAgICBjYXNlIEl0ZW1UeXBlOjpFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM6CiAgICAgY2FzZSBJ
dGVtVHlwZTo6Q29uY2F0ZW5hdGVDVE06CiAgICAgY2FzZSBJdGVtVHlwZTo6Rmx1c2hDb250ZXh0
OgogICAgIGNhc2UgSXRlbVR5cGU6OlJlc3RvcmU6CkBAIC0yOTAsNyArMjg0LDYgQEAgYm9vbCBp
c0lubGluZUl0ZW0oSXRlbVR5cGUgdHlwZSkKICAgICAgKiBhbmQgKDMpIGFsbCB0aGUgInN0YXRp
YyBjb25zdGV4cHIgYm9vbCBpc0lubGluZUl0ZW0icyBpbnNpZGUgdGhlIGluZGl2aWR1YWwgaXRl
bSBjbGFzc2VzLiAqLwogCiAgICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBJdGVtVHlwZTo6
QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM6CiAgICAgY2FzZSBJdGVtVHlwZTo6Q2xpcE91dFRv
UGF0aDoKICAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwUGF0aDoKICAgICBjYXNlIEl0ZW1UeXBlOjpE
cmF3Rm9jdXNSaW5nUGF0aDoKQEAgLTMyMSw3ICszMTQsNiBAQCBib29sIGlzSW5saW5lSXRlbShJ
dGVtVHlwZSB0eXBlKQogICAgIGNhc2UgSXRlbVR5cGU6OkNsaXA6CiAgICAgY2FzZSBJdGVtVHlw
ZTo6Q2xpcE91dDoKICAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwVG9JbWFnZUJ1ZmZlcjoKLSAgICBj
YXNlIEl0ZW1UeXBlOjpFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM6CiAgICAgY2FzZSBJdGVtVHlw
ZTo6Q29uY2F0ZW5hdGVDVE06CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0RvdHNGb3JEb2N1bWVu
dE1hcmtlcjoKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3RWxsaXBzZToKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1UeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVtVHlwZS5oCmluZGV4IDkxZjNmNWY1Mjg4YmM3ZWIyZGFkNmU0MmRkZmIz
ZGJmMTk4MGM3ODMuLmFkOWJkZTRlN2I4Y2RkMDBkNjJlNjM0MDMzZTVjYmM5MDMyMzZjMjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1UeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuaApAQCAtNTAsOCArNTAsNiBAQCBl
bnVtIGNsYXNzIEl0ZW1UeXBlIDogdWludDhfdCB7CiAgICAgQ2xpcFRvSW1hZ2VCdWZmZXIsCiAg
ICAgQ2xpcE91dFRvUGF0aCwKICAgICBDbGlwUGF0aCwKLSAgICBCZWdpbkNsaXBUb0RyYXdpbmdD
b21tYW5kcywKLSAgICBFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHMsCiAgICAgRHJhd0ZpbHRlcmVk
SW1hZ2VCdWZmZXIsCiAgICAgRHJhd0dseXBocywKICAgICBEcmF3SW1hZ2VCdWZmZXIsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJdGVtcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKaW5kZXggMzFhYzhiNGFkN2RiZjcyZGEzNjRh
MDU1Nzc2ZjZiMjk3OWE0NjlkNy4uNTdmOWI5MGZmY2FmOTA2ZjBmNDE0YWU3ODhkYmI2MjM0ZGEw
NzFlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcApAQCAtMjg3LDE5ICsy
ODcsNiBAQCBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29u
c3QgQ2xpcFBhdGgmIGl0ZW0pCiAgICAgcmV0dXJuIHRzOwogfQogCi1zdGF0aWMgVGV4dFN0cmVh
bSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgQmVnaW5DbGlwVG9EcmF3aW5nQ29t
bWFuZHMmIGl0ZW0pCi17Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJkZXN0aW5hdGlvbiIsIGl0ZW0u
ZGVzdGluYXRpb24oKSk7Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJjb2xvci1zcGFjZSIsIGl0ZW0u
Y29sb3JTcGFjZSgpKTsKLSAgICByZXR1cm4gdHM7Ci19Ci0KLXN0YXRpYyBUZXh0U3RyZWFtJiBv
cGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHMm
IGl0ZW0pCi17Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJkZXN0aW5hdGlvbiIsIGl0ZW0uZGVzdGlu
YXRpb24oKSk7Ci0gICAgcmV0dXJuIHRzOwotfQotCiBEcmF3RmlsdGVyZWRJbWFnZUJ1ZmZlcjo6
RHJhd0ZpbHRlcmVkSW1hZ2VCdWZmZXIoc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXI+IHNvdXJjZUltYWdlSWRlbnRpZmllciwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2VJ
bWFnZVJlY3QsIEZpbHRlciYgZmlsdGVyKQogICAgIDogbV9zb3VyY2VJbWFnZUlkZW50aWZpZXIo
c291cmNlSW1hZ2VJZGVudGlmaWVyKQogICAgICwgbV9zb3VyY2VJbWFnZVJlY3Qoc291cmNlSW1h
Z2VSZWN0KQpAQCAtMTA4Miw4ICsxMDY5LDYgQEAgc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9y
PDwoVGV4dFN0cmVhbSYgdHMsIEl0ZW1UeXBlIHR5cGUpCiAgICAgY2FzZSBJdGVtVHlwZTo6Q2xp
cFRvSW1hZ2VCdWZmZXI6IHRzIDw8ICJjbGlwLXRvLWltYWdlLWJ1ZmZlciI7IGJyZWFrOwogICAg
IGNhc2UgSXRlbVR5cGU6OkNsaXBPdXRUb1BhdGg6IHRzIDw8ICJjbGlwLW91dC10by1wYXRoIjsg
YnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFBhdGg6IHRzIDw8ICJjbGlwLXBhdGgiOyBi
cmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kczogdHMg
PDwgImJlZ2luLWNsaXAtdG8tZHJhd2luZy1jb21tYW5kczoiOyBicmVhazsKLSAgICBjYXNlIEl0
ZW1UeXBlOjpFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM6IHRzIDw8ICJlbmQtY2xpcC10by1kcmF3
aW5nLWNvbW1hbmRzIjsgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ZpbHRlcmVkSW1h
Z2VCdWZmZXI6IHRzIDw8ICJkcmF3LWZpbHRlcmVkLWltYWdlLWJ1ZmZlciI7IGJyZWFrOwogICAg
IGNhc2UgSXRlbVR5cGU6OkRyYXdHbHlwaHM6IHRzIDw8ICJkcmF3LWdseXBocyI7IGJyZWFrOwog
ICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdJbWFnZUJ1ZmZlcjogdHMgPDwgImRyYXctaW1hZ2UtYnVm
ZmVyIjsgYnJlYWs7CkBAIC0xMTk4LDEyICsxMTgzLDYgQEAgVGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChUZXh0U3RyZWFtJiB0cywgSXRlbUhhbmRsZSBpdGVtKQogICAgIGNhc2UgSXRlbVR5cGU6OkNs
aXBQYXRoOgogICAgICAgICB0cyA8PCBpdGVtLmdldDxDbGlwUGF0aD4oKTsKICAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM6Ci0gICAg
ICAgIHRzIDw8IGl0ZW0uZ2V0PEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPigpOwotICAgICAg
ICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM6Ci0g
ICAgICAgIHRzIDw8IGl0ZW0uZ2V0PEVuZENsaXBUb0RyYXdpbmdDb21tYW5kcz4oKTsKLSAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ZpbHRlcmVkSW1hZ2VCdWZmZXI6CiAg
ICAgICAgIHRzIDw8IGl0ZW0uZ2V0PERyYXdGaWx0ZXJlZEltYWdlQnVmZmVyPigpOwogICAgICAg
ICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCmluZGV4IGVmMGMxODc3ZDE5
MzhiZGMwNjEwNTRiOTQyZmE2MjgwYmM0N2YyMDMuLmVmYjUxZDJiYTRjMTA1NmU5NzNmZjc2NzFl
NmU1YTVmNDdmMjhkZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaApAQCAtODQ0
LDc0ICs4NDQsNiBAQCBzdGQ6Om9wdGlvbmFsPENsaXBQYXRoPiBDbGlwUGF0aDo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIpCiAgICAgcmV0dXJuIHt7IFdURk1vdmUoKnBhdGgpLCAqd2luZFJ1bGUg
fX07CiB9CiAKLWNsYXNzIEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzIHsKLXB1YmxpYzoKLSAg
ICBzdGF0aWMgY29uc3RleHByIEl0ZW1UeXBlIGl0ZW1UeXBlID0gSXRlbVR5cGU6OkJlZ2luQ2xp
cFRvRHJhd2luZ0NvbW1hbmRzOwotICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0lubGluZUl0
ZW0gPSBmYWxzZTsKLSAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNEcmF3aW5nSXRlbSA9IGZh
bHNlOwotCi0gICAgQmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBk
ZXN0aW5hdGlvbiwgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UpCi0gICAgICAgIDog
bV9kZXN0aW5hdGlvbihkZXN0aW5hdGlvbikKLSAgICAgICAgLCBtX2NvbG9yU3BhY2UoV1RGTW92
ZShjb2xvclNwYWNlKSkKLSAgICB7Ci0gICAgfQotCi0gICAgLy8gRXhwbGljaXQgZGVzdHJ1Y3Rv
ciBhZGRlZCB0byBmb3JjZSBub24tdHJpdmlhbCBkZXN0cnVjdG9yIG9uIGFsbCBwbGF0Zm9ybXMK
LSAgICAvLyBhcyB0aGUgZW5jb2RpbmcgbG9naWMgY3VycmVudGx5IGhhcmRjb2RlcyB3aGljaCBk
aXNwbGF5IGxpc3QgaXRlbSB0eXBlcyBuZWVkCi0gICAgLy8gb3V0IG9mIGxpbmUgdHJlYXRtZW50
IHJhdGhlciB0aGFuIHVzaW5nIHRoZSBpc0lubGluZUl0ZW0gY29uc3RhbnQuCi0gICAgfkJlZ2lu
Q2xpcFRvRHJhd2luZ0NvbW1hbmRzKCkgeyB9Ci0KLSAgICBjb25zdCBGbG9hdFJlY3QmIGRlc3Rp
bmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9kZXN0aW5hdGlvbjsgfQotICAgIGNvbnN0IERlc3Rp
bmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29sb3JTcGFj
ZTsgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYp
IGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPiBkZWNvZGUoRGVjb2RlciYpOwotCi1wcml2YXRl
OgotICAgIEZsb2F0UmVjdCBtX2Rlc3RpbmF0aW9uOwotICAgIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSBtX2NvbG9yU3BhY2U7Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgotdm9pZCBCZWdp
bkNsaXBUb0RyYXdpbmdDb21tYW5kczo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Ci17
Ci0gICAgZW5jb2RlciA8PCBtX2Rlc3RpbmF0aW9uOwotICAgIGVuY29kZXIgPDwgbV9jb2xvclNw
YWNlOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotc3RkOjpvcHRpb25hbDxCZWdpbkNs
aXBUb0RyYXdpbmdDb21tYW5kcz4gQmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM6OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQotewotICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBkZXN0aW5h
dGlvbjsKLSAgICBkZWNvZGVyID4+IGRlc3RpbmF0aW9uOwotICAgIGlmICghZGVzdGluYXRpb24p
Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICBzdGQ6Om9wdGlvbmFsPERlc3Rp
bmF0aW9uQ29sb3JTcGFjZT4gY29sb3JTcGFjZTsKLSAgICBkZWNvZGVyID4+IGNvbG9yU3BhY2U7
Ci0gICAgaWYgKCFjb2xvclNwYWNlKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0g
ICAgcmV0dXJuIHt7ICpkZXN0aW5hdGlvbiwgV1RGTW92ZSgqY29sb3JTcGFjZSkgfX07Ci19Ci0K
LWNsYXNzIEVuZENsaXBUb0RyYXdpbmdDb21tYW5kcyB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIGNv
bnN0ZXhwciBJdGVtVHlwZSBpdGVtVHlwZSA9IEl0ZW1UeXBlOjpFbmRDbGlwVG9EcmF3aW5nQ29t
bWFuZHM7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzSW5saW5lSXRlbSA9IHRydWU7Ci0g
ICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzRHJhd2luZ0l0ZW0gPSBmYWxzZTsKLQotICAgIEVu
ZENsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uKQotICAg
ICAgICA6IG1fZGVzdGluYXRpb24oZGVzdGluYXRpb24pCi0gICAgewotICAgIH0KLQotICAgIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2Rlc3RpbmF0aW9u
OyB9Ci0KLXByaXZhdGU6Ci0gICAgRmxvYXRSZWN0IG1fZGVzdGluYXRpb247Ci19OwotCiBjbGFz
cyBEcmF3RmlsdGVyZWRJbWFnZUJ1ZmZlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhw
ciBJdGVtVHlwZSBpdGVtVHlwZSA9IEl0ZW1UeXBlOjpEcmF3RmlsdGVyZWRJbWFnZUJ1ZmZlcjsK
QEAgLTI0MTYsNyArMjM0OCw2IEBAIHByaXZhdGU6CiAKIHVzaW5nIERpc3BsYXlMaXN0SXRlbSA9
IHN0ZDo6dmFyaWFudAogICAgIDwgQXBwbHlEZXZpY2VTY2FsZUZhY3RvcgotICAgICwgQmVnaW5D
bGlwVG9EcmF3aW5nQ29tbWFuZHMKICAgICAsIEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIKICAgICAs
IENsZWFyUmVjdAogICAgICwgQ2xlYXJTaGFkb3cKQEAgLTI0MzksNyArMjM3MCw2IEBAIHVzaW5n
IERpc3BsYXlMaXN0SXRlbSA9IHN0ZDo6dmFyaWFudAogICAgICwgRHJhd1BhdGgKICAgICAsIERy
YXdQYXR0ZXJuCiAgICAgLCBEcmF3UmVjdAotICAgICwgRW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRz
CiAgICAgLCBFbmRUcmFuc3BhcmVuY3lMYXllcgogICAgICwgRmlsbENvbXBvc2l0ZWRSZWN0CiAg
ICAgLCBGaWxsRWxsaXBzZQpAQCAtMjUyNSw4ICsyNDU1LDYgQEAgdGVtcGxhdGU8PiBzdHJ1Y3Qg
RW51bVRyYWl0czxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU+IHsKICAgICBXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkNsaXBUb0ltYWdlQnVmZmVyLAogICAgIFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Q2xpcE91dFRvUGF0aCwKICAgICBXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6SXRlbVR5cGU6OkNsaXBQYXRoLAotICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJ
dGVtVHlwZTo6QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHMsCi0gICAgV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6Okl0ZW1UeXBlOjpFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHMsCiAgICAgV2ViQ29yZTo6
RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3R2x5cGhzLAogICAgIFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpJdGVtVHlwZTo6RHJhd0ltYWdlQnVmZmVyLAogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
UmVjb3JkZXIuY3BwCmluZGV4IDg5ZjNkMzUzZGE3YmI0MTcxMThmZjcxODhjZWRjMDdjMDhiY2M4
NDcuLmFlM2Q3MzUwNDNiODBhMGMxZmJiYWUyMjA1MzFkYmM1NzVmZDE0ZDIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dFJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKQEAgLTQ4NiwyNyArNDg2LDYgQEAgdm9p
ZCBSZWNvcmRlcjo6Y2xpcFRvSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImIGltYWdlQnVmZmVyLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3QKICAgICByZWNvcmRDbGlwVG9JbWFnZUJ1ZmZlcihpbWFnZUJ1
ZmZlci5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSwgZGVzdFJlY3QpOwogfQogCi1HcmFw
aGljc0NvbnRleHQ6OkNsaXBUb0RyYXdpbmdDb21tYW5kc1Jlc3VsdCBSZWNvcmRlcjo6Y2xpcFRv
RHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IERlc3Rp
bmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgRnVuY3Rpb248dm9pZChHcmFwaGljc0NvbnRl
eHQmKT4mJiBkcmF3aW5nRnVuY3Rpb24pCi17Ci0gICAgYXV0byBpbml0aWFsQ2xpcCA9IEZsb2F0
UmVjdChGbG9hdFBvaW50KCksIGRlc3RpbmF0aW9uLnNpemUoKSk7Ci0KLSAgICAvLyBUaGUgaW5p
dGlhbCBDVE0gbWF0Y2hlcyBJbWFnZUJ1ZmZlcidzIGluaXRpYWwgQ1RNLgotICAgIEFmZmluZVRy
YW5zZm9ybSB0cmFuc2Zvcm0gPSBnZXRDVE0oR3JhcGhpY3NDb250ZXh0OjpEZWZpbml0ZWx5SW5j
bHVkZURldmljZVNjYWxlKTsKLSAgICBGbG9hdFNpemUgc2NhbGVGYWN0b3IodHJhbnNmb3JtLnhT
Y2FsZSgpLCB0cmFuc2Zvcm0ueVNjYWxlKCkpOwotICAgIGF1dG8gc2NhbGVkU2l6ZSA9IGV4cGFu
ZGVkSW50U2l6ZShkZXN0aW5hdGlvbi5zaXplKCkgKiBzY2FsZUZhY3Rvcik7Ci0gICAgQWZmaW5l
VHJhbnNmb3JtIGluaXRpYWxDVE07Ci0gICAgaW5pdGlhbENUTS5zY2FsZSgxLCAtMSk7Ci0gICAg
aW5pdGlhbENUTS50cmFuc2xhdGUoMCwgLXNjYWxlZFNpemUuaGVpZ2h0KCkpOwotICAgIGluaXRp
YWxDVE0uc2NhbGUoc2NhbGVkU2l6ZSAvIGRlc3RpbmF0aW9uLnNpemUoKSk7Ci0KLSAgICBhdXRv
IG5lc3RlZENvbnRleHQgPSBjcmVhdGVOZXN0ZWRDb250ZXh0KGluaXRpYWxDbGlwLCBpbml0aWFs
Q1RNKTsKLSAgICByZWNvcmRCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcyhkZXN0aW5hdGlvbiwg
Y29sb3JTcGFjZSk7Ci0gICAgZHJhd2luZ0Z1bmN0aW9uKCpuZXN0ZWRDb250ZXh0KTsKLSAgICBy
ZWNvcmRFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHMoZGVzdGluYXRpb24pOwotCi0gICAgcmV0dXJu
IENsaXBUb0RyYXdpbmdDb21tYW5kc1Jlc3VsdDo6U3VjY2VzczsKLX0KLQogI2lmIEVOQUJMRShW
SURFTykKIHZvaWQgUmVjb3JkZXI6OnBhaW50RnJhbWVGb3JNZWRpYShNZWRpYVBsYXllciYgcGxh
eWVyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uKQogewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3Jk
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdFJlY29yZGVyLmgKaW5kZXggOWIyYjBiOTM3OTAxZDg2NTExNjFlYjgyYjkwZjRkMDVi
OTQyNWUwZi4uOWU3YmU1MGVlNzAxZWFjMWY0MzRkOWYwOTE0YmNjY2YyNzdhMTkzNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0UmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCkBAIC04OSw4ICs4OSw2IEBAIHByb3Rl
Y3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkQ2xpcFRvSW1hZ2VCdWZmZXIoUmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyIGltYWdlQnVmZmVySWRlbnRpZmllciwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0aW5hdGlvblJlY3QpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkQ2xpcE91dFRv
UGF0aChjb25zdCBQYXRoJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZWNvcmRDbGlwUGF0aChj
b25zdCBQYXRoJiwgV2luZFJ1bGUpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkQmVnaW5D
bGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgRGVzdGlu
YXRpb25Db2xvclNwYWNlKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHJlY29yZEVuZENsaXBUb0Ry
YXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIHJlY29yZERyYXdGaWx0ZXJlZEltYWdlQnVmZmVyKHN0ZDo6b3B0aW9uYWw8UmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBzb3VyY2VJbWFnZUlkZW50aWZpZXIsIGNvbnN0IEZs
b2F0UmVjdCYgc291cmNlSW1hZ2VSZWN0LCBGaWx0ZXImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IHJlY29yZERyYXdHbHlwaHMoY29uc3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqLCBj
b25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqLCB1bnNpZ25lZCBjb3VudCwgY29uc3QgRmxvYXRQb2lu
dCYgbG9jYWxBbmNob3IsIEZvbnRTbW9vdGhpbmdNb2RlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IHJlY29yZERyYXdJbWFnZUJ1ZmZlcihSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgaW1hZ2VC
dWZmZXJJZGVudGlmaWVyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSAwOwpAQCAtMTQ4LDgg
KzE0Niw2IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIGJvb2wgY2FuRHJhd0ltYWdlQnVmZmVy
KGNvbnN0IEltYWdlQnVmZmVyJikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgUmVuZGVyaW5nTW9k
ZSByZW5kZXJpbmdNb2RlKCkgY29uc3QgPSAwOwogCi0gICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9w
dHI8R3JhcGhpY3NDb250ZXh0PiBjcmVhdGVOZXN0ZWRDb250ZXh0KGNvbnN0IEZsb2F0UmVjdCYg
aW5pdGlhbENsaXAsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgaW5pdGlhbENUTSkgPSAwOwotCiAg
ICAgc3RydWN0IENvbnRleHRTdGF0ZSB7CiAgICAgICAgIEFmZmluZVRyYW5zZm9ybSBjdG07CiAg
ICAgICAgIEZsb2F0UmVjdCBjbGlwQm91bmRzOwpAQCAtMjczLDcgKzI2OSw2IEBAIHByaXZhdGU6
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGlwUGF0aChjb25zdCBQYXRoJiwgV2luZFJ1bGUp
IGZpbmFsOwogICAgIFdFQkNPUkVfRVhQT1JUIEludFJlY3QgY2xpcEJvdW5kcygpIGNvbnN0IGZp
bmFsOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xpcFRvSW1hZ2VCdWZmZXIoSW1hZ2VCdWZm
ZXImLCBjb25zdCBGbG9hdFJlY3QmKSBmaW5hbDsKLSAgICBXRUJDT1JFX0VYUE9SVCBHcmFwaGlj
c0NvbnRleHQ6OkNsaXBUb0RyYXdpbmdDb21tYW5kc1Jlc3VsdCBjbGlwVG9EcmF3aW5nQ29tbWFu
ZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNw
YWNlJiwgRnVuY3Rpb248dm9pZChHcmFwaGljc0NvbnRleHQmKT4mJikgZmluYWw7CiAKICNpZiBF
TkFCTEUoVklERU8pCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwYWludEZyYW1lRm9yTWVkaWEo
TWVkaWFQbGF5ZXImLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uKSBmaW5hbDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdFJlY29yZGVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlckltcGwuY3BwCmluZGV4IGZlNTE1NThk
NzgyMzUzNDE5YTY0YzlhN2Y5Yjg5NzkwM2FhNmY5YTQuLjE4NDllYTY0YmRiMjU0NzdlZmMyNDY5
YTUxNmFhMmI4MDM0ZjhlZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVj
b3JkZXJJbXBsLmNwcApAQCAtNTAsMTkgKzUwLDkgQEAgUmVjb3JkZXJJbXBsOjpSZWNvcmRlcklt
cGwoRGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0LCBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYK
ICAgICBMT0dfV0lUSF9TVFJFQU0oRGlzcGxheUxpc3RzLCBzdHJlYW0gPDwgIlxuUmVjb3JkaW5n
IHdpdGggY2xpcCAiIDw8IGluaXRpYWxDbGlwKTsKIH0KIAotUmVjb3JkZXJJbXBsOjpSZWNvcmRl
ckltcGwoUmVjb3JkZXJJbXBsJiBwYXJlbnQsIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBz
dGF0ZSwgY29uc3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xpcCwgY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiBpbml0aWFsQ1RNKQotICAgIDogUmVjb3JkZXIocGFyZW50LCBzdGF0ZSwgaW5pdGlhbENsaXAs
IGluaXRpYWxDVE0pCi0gICAgLCBtX2Rpc3BsYXlMaXN0KHBhcmVudC5tX2Rpc3BsYXlMaXN0KQot
ICAgICwgbV9kZWxlZ2F0ZShwYXJlbnQubV9kZWxlZ2F0ZSkKLSAgICAsIG1faXNOZXN0ZWQodHJ1
ZSkKLXsKLX0KLQogUmVjb3JkZXJJbXBsOjp+UmVjb3JkZXJJbXBsKCkKIHsKICAgICBBU1NFUlQo
c3RhdGVTdGFjaygpLnNpemUoKSA9PSAxKTsgLy8gSWYgdGhpcyBmaXJlcywgaXQgaW5kaWNhdGVz
IG1pc21hdGNoZWQgc2F2ZS9yZXN0b3JlLgotICAgIGlmICghbV9pc05lc3RlZCkKLSAgICAgICAg
TE9HKERpc3BsYXlMaXN0cywgIlJlY29yZGVkIGRpc3BsYXkgbGlzdDpcbiVzIiwgbV9kaXNwbGF5
TGlzdC5kZXNjcmlwdGlvbigpLmRhdGEoKSk7CiB9CiAKIHZvaWQgUmVjb3JkZXJJbXBsOjpnZXRQ
aXhlbEJ1ZmZlcihjb25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYgb3V0cHV0Rm9ybWF0LCBjb25zdCBJ
bnRSZWN0JiBzb3VyY2VSZWN0KQpAQCAtOTAsMTEgKzgwLDYgQEAgUmVuZGVyaW5nTW9kZSBSZWNv
cmRlckltcGw6OnJlbmRlcmluZ01vZGUoKSBjb25zdAogICAgIHJldHVybiBtX2RlbGVnYXRlID8g
bV9kZWxlZ2F0ZS0+cmVuZGVyaW5nTW9kZSgpIDogUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRl
ZDsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dD4gUmVjb3JkZXJJbXBsOjpj
cmVhdGVOZXN0ZWRDb250ZXh0KGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYgaW5pdGlhbENUTSkKLXsKLSAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZWNv
cmRlckltcGw+KCp0aGlzLCBHcmFwaGljc0NvbnRleHRTdGF0ZSB7IH0sIGluaXRpYWxDbGlwLCBp
bml0aWFsQ1RNKTsKLX0KLQogdm9pZCBSZWNvcmRlckltcGw6OnJlY29yZFNhdmUoKQogewogICAg
IGFwcGVuZDxTYXZlPigpOwpAQCAtMjAwLDE2ICsxODUsNiBAQCB2b2lkIFJlY29yZGVySW1wbDo6
cmVjb3JkQ2xpcFBhdGgoY29uc3QgUGF0aCYgcGF0aCwgV2luZFJ1bGUgcnVsZSkKICAgICBhcHBl
bmQ8Q2xpcFBhdGg+KHBhdGgsIHJ1bGUpOwogfQogCi12b2lkIFJlY29yZGVySW1wbDo6cmVjb3Jk
QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwg
RGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UpCi17Ci0gICAgYXBwZW5kPEJlZ2luQ2xp
cFRvRHJhd2luZ0NvbW1hbmRzPihkZXN0aW5hdGlvbiwgY29sb3JTcGFjZSk7Ci19Ci0KLXZvaWQg
UmVjb3JkZXJJbXBsOjpyZWNvcmRFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRS
ZWN0JiBkZXN0aW5hdGlvbikKLXsKLSAgICBhcHBlbmQ8RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRz
PihkZXN0aW5hdGlvbik7Ci19Ci0KIHZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmREcmF3RmlsdGVy
ZWRJbWFnZUJ1ZmZlcihzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4g
c291cmNlSW1hZ2VJZGVudGlmaWVyLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZUltYWdlUmVjdCwg
RmlsdGVyJiBmaWx0ZXIpCiB7CiAgICAgYXBwZW5kPERyYXdGaWx0ZXJlZEltYWdlQnVmZmVyPihz
b3VyY2VJbWFnZUlkZW50aWZpZXIsIHNvdXJjZUltYWdlUmVjdCwgZmlsdGVyKTsKQEAgLTQ1Niw2
ICs0MzEsMTEgQEAgYm9vbCBSZWNvcmRlckltcGw6OnJlY29yZFJlc291cmNlVXNlKEZvbnQmIGZv
bnQpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK1JlZlB0cjxJbWFnZUJ1ZmZlcj4gUmVjb3JkZXJJ
bXBsOjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29s
dXRpb25TY2FsZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlKSBjb25z
dAoreworICAgIHJldHVybiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIHJlbmRlcmluZ01vZGUo
KSwgU2hvdWxkVXNlRGlzcGxheUxpc3Q6OlllcywgUmVuZGVyaW5nUHVycG9zZTo6VW5zcGVjaWZp
ZWQsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKK30K
KwogLy8gRklYTUU6IHNoYXJlIHdpdGggU2hhZG93RGF0YQogc3RhdGljIGlubGluZSBmbG9hdCBz
aGFkb3dQYWludGluZ0V4dGVudChmbG9hdCBibHVyUmFkaXVzKQogewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVj
b3JkZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZWNvcmRlckltcGwuaAppbmRleCBlZDQ3MTBiM2Q2OTAzYmVkNjI2OWNk
YmM2YjI1N2Y1N2ZmZjU4OGVjLi4yYmFlYTdlYjU1MzRjMmFjYmNhZjJhMzIyNjA4ZDNlOTk0NDdl
MGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlckltcGwuaApAQCAt
MzcsOCArMzcsNiBAQCBjbGFzcyBSZWNvcmRlckltcGwgOiBwdWJsaWMgUmVjb3JkZXIgewogcHVi
bGljOgogICAgIGNsYXNzIERlbGVnYXRlOwogICAgIFdFQkNPUkVfRVhQT1JUIFJlY29yZGVySW1w
bChEaXNwbGF5TGlzdCYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgY29uc3QgRmxvYXRS
ZWN0JiBpbml0aWFsQ2xpcCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgRGVsZWdhdGUqID0gbnVs
bHB0ciwgRHJhd0dseXBoc1JlY29yZGVyOjpEZWNvbnN0cnVjdERyYXdHbHlwaHMgPSBEcmF3R2x5
cGhzUmVjb3JkZXI6OkRlY29uc3RydWN0RHJhd0dseXBoczo6WWVzKTsKLSAgICBSZWNvcmRlcklt
cGwoUmVjb3JkZXJJbXBsJiBwYXJlbnQsIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgY29u
c3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xpcCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBpbml0aWFs
Q1RNKTsKLQogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgflJlY29yZGVySW1wbCgpOwogCiAg
ICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5TGlzdC5pc0VtcHR5KCk7
IH0KQEAgLTg2LDggKzg0LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlY29yZENsaXBUb0ltYWdl
QnVmZmVyKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBpbWFnZUJ1ZmZlcklkZW50aWZpZXIs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb25SZWN0KSBmaW5hbDsKICAgICB2b2lkIHJlY29y
ZENsaXBPdXRUb1BhdGgoY29uc3QgUGF0aCYpIGZpbmFsOwogICAgIHZvaWQgcmVjb3JkQ2xpcFBh
dGgoY29uc3QgUGF0aCYsIFdpbmRSdWxlKSBmaW5hbDsKLSAgICB2b2lkIHJlY29yZEJlZ2luQ2xp
cFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIERlc3RpbmF0
aW9uQ29sb3JTcGFjZSkgZmluYWw7Ci0gICAgdm9pZCByZWNvcmRFbmRDbGlwVG9EcmF3aW5nQ29t
bWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbikgZmluYWw7CiAgICAgdm9pZCByZWNv
cmREcmF3RmlsdGVyZWRJbWFnZUJ1ZmZlcihzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcj4gc291cmNlSW1hZ2VJZGVudGlmaWVyLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJj
ZUltYWdlUmVjdCwgRmlsdGVyJikgZmluYWw7CiAgICAgdm9pZCByZWNvcmREcmF3R2x5cGhzKGNv
bnN0IEZvbnQmLCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiwgY29uc3QgR2x5cGhCdWZmZXJBZHZh
bmNlKiwgdW5zaWduZWQgY291bnQsIGNvbnN0IEZsb2F0UG9pbnQmIGxvY2FsQW5jaG9yLCBGb250
U21vb3RoaW5nTW9kZSkgZmluYWw7CiAgICAgdm9pZCByZWNvcmREcmF3SW1hZ2VCdWZmZXIoUmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGltYWdlQnVmZmVySWRlbnRpZmllciwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYpIGZpbmFsOwpAQCAtMTQxLDcgKzEzNyw3IEBAIHByaXZhdGU6CiAgICAg
Ym9vbCByZWNvcmRSZXNvdXJjZVVzZShjb25zdCBTb3VyY2VJbWFnZSYpIGZpbmFsOwogICAgIGJv
b2wgcmVjb3JkUmVzb3VyY2VVc2UoRm9udCYpIGZpbmFsOwogCi0gICAgc3RkOjp1bmlxdWVfcHRy
PEdyYXBoaWNzQ29udGV4dD4gY3JlYXRlTmVzdGVkQ29udGV4dChjb25zdCBGbG9hdFJlY3QmIGlu
aXRpYWxDbGlwLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGluaXRpYWxDVE0pIGZpbmFsOworICAg
IFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6Rmxv
YXRTaXplJiwgZmxvYXQgcmVzb2x1dGlvblNjYWxlID0gMSwgY29uc3QgV2ViQ29yZTo6RGVzdGlu
YXRpb25Db2xvclNwYWNlJiA9IFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigp
KSBjb25zdCBmaW5hbDsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIGNsYXNzLi4uIEFyZ3M+
CiAgICAgdm9pZCBhcHBlbmQoQXJncyYmLi4uIGFyZ3MpCkBAIC0xNzAsNyArMTY2LDYgQEAgcHJp
dmF0ZToKIAogICAgIERpc3BsYXlMaXN0JiBtX2Rpc3BsYXlMaXN0OwogICAgIERlbGVnYXRlKiBt
X2RlbGVnYXRlIHsgbnVsbHB0ciB9OwotICAgIGJvb2wgbV9pc05lc3RlZCB7IGZhbHNlIH07CiB9
OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAKaW5kZXggMjE4
NjUwYWY1OGE0YTdiY2YyYzE0MTBmZjBlZjAwNTA2ODFiNmVlZC4uMDU2MGQ0ZGRmZTA0Y2Y0NzZi
MzNhZGJjNjIwMDVkMzc0ODQwN2FlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJl
cGxheWVyLmNwcApAQCAtMzcsOSArMzcsOCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNw
YWNlIERpc3BsYXlMaXN0IHsKIAotUmVwbGF5ZXI6OlJlcGxheWVyKEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgRGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0LCBjb25zdCBSZXNvdXJjZUhl
YXAqIHJlc291cmNlSGVhcCwgSW1hZ2VCdWZmZXIqIG1hc2tJbWFnZUJ1ZmZlciwgRGVsZWdhdGUq
IGRlbGVnYXRlKQorUmVwbGF5ZXI6OlJlcGxheWVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgRGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0LCBjb25zdCBSZXNvdXJjZUhlYXAqIHJlc291
cmNlSGVhcCwgRGVsZWdhdGUqIGRlbGVnYXRlKQogICAgIDogbV9jb250ZXh0KGNvbnRleHQpCi0g
ICAgLCBtX21hc2tJbWFnZUJ1ZmZlcihtYXNrSW1hZ2VCdWZmZXIpCiAgICAgLCBtX2Rpc3BsYXlM
aXN0KGRpc3BsYXlMaXN0KQogICAgICwgbV9yZXNvdXJjZUhlYXAocmVzb3VyY2VIZWFwID8gKnJl
c291cmNlSGVhcCA6IG1fZGlzcGxheUxpc3QucmVzb3VyY2VIZWFwKCkpCiAgICAgLCBtX2RlbGVn
YXRlKGRlbGVnYXRlKQpAQCAtNDgsMTEgKzQ3LDYgQEAgUmVwbGF5ZXI6OlJlcGxheWVyKEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0LCBjb24K
IAogUmVwbGF5ZXI6On5SZXBsYXllcigpID0gZGVmYXVsdDsKIAotR3JhcGhpY3NDb250ZXh0JiBS
ZXBsYXllcjo6Y29udGV4dCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fbWFza0ltYWdlQnVmZmVy
ID8gbV9tYXNrSW1hZ2VCdWZmZXItPmNvbnRleHQoKSA6IG1fY29udGV4dDsKLX0KLQogdGVtcGxh
dGU8Y2xhc3MgVD4KIGlubGluZSBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXI+IGFwcGx5SW1hZ2VCdWZmZXJJdGVtKEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgY29uc3QgUmVzb3VyY2VIZWFwJiByZXNvdXJjZUhlYXAsIEl0ZW1IYW5kbGUgaXRlbSwgUmVw
bGF5ZXI6OkRlbGVnYXRlKiBkZWxlZ2F0ZSkKIHsKQEAgLTEzMCw2OSArMTI0LDQ2IEBAIGlubGlu
ZSBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGFwcGx5
Rm9udEl0ZW0oR3JhcGhpY3NDCiAKIHN0ZDo6cGFpcjxzdGQ6Om9wdGlvbmFsPFN0b3BSZXBsYXlS
ZWFzb24+LCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4+IFJlcGxh
eWVyOjphcHBseUl0ZW0oSXRlbUhhbmRsZSBpdGVtKQogewotICAgIGlmIChtX2RlbGVnYXRlICYm
IG1fZGVsZWdhdGUtPmFwcGx5KGl0ZW0sIGNvbnRleHQoKSkpCisgICAgaWYgKG1fZGVsZWdhdGUg
JiYgbV9kZWxlZ2F0ZS0+YXBwbHkoaXRlbSwgbV9jb250ZXh0KSkKICAgICAgICAgcmV0dXJuIHsg
c3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQgfTsKIAogICAgIGlmIChpdGVtLmlzPERyYXdJbWFn
ZUJ1ZmZlcj4oKSkgewotICAgICAgICBpZiAoYXV0byBtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVu
dGlmaWVyID0gYXBwbHlJbWFnZUJ1ZmZlckl0ZW08RHJhd0ltYWdlQnVmZmVyPihjb250ZXh0KCks
IG1fcmVzb3VyY2VIZWFwLCBpdGVtLCBtX2RlbGVnYXRlKSkKKyAgICAgICAgaWYgKGF1dG8gbWlz
c2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllciA9IGFwcGx5SW1hZ2VCdWZmZXJJdGVtPERyYXdJ
bWFnZUJ1ZmZlcj4obV9jb250ZXh0LCBtX3Jlc291cmNlSGVhcCwgaXRlbSwgbV9kZWxlZ2F0ZSkp
CiAgICAgICAgICAgICByZXR1cm4geyBTdG9wUmVwbGF5UmVhc29uOjpNaXNzaW5nQ2FjaGVkUmVz
b3VyY2UsIFdURk1vdmUobWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllcikgfTsKICAgICAg
ICAgcmV0dXJuIHsgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQgfTsKICAgICB9CiAKICAgICBp
ZiAoaXRlbS5pczxDbGlwVG9JbWFnZUJ1ZmZlcj4oKSkgewotICAgICAgICBpZiAoYXV0byBtaXNz
aW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyID0gYXBwbHlJbWFnZUJ1ZmZlckl0ZW08Q2xpcFRv
SW1hZ2VCdWZmZXI+KGNvbnRleHQoKSwgbV9yZXNvdXJjZUhlYXAsIGl0ZW0sIG1fZGVsZWdhdGUp
KQorICAgICAgICBpZiAoYXV0byBtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyID0gYXBw
bHlJbWFnZUJ1ZmZlckl0ZW08Q2xpcFRvSW1hZ2VCdWZmZXI+KG1fY29udGV4dCwgbV9yZXNvdXJj
ZUhlYXAsIGl0ZW0sIG1fZGVsZWdhdGUpKQogICAgICAgICAgICAgcmV0dXJuIHsgU3RvcFJlcGxh
eVJlYXNvbjo6TWlzc2luZ0NhY2hlZFJlc291cmNlLCBXVEZNb3ZlKG1pc3NpbmdDYWNoZWRSZXNv
dXJjZUlkZW50aWZpZXIpIH07CiAgICAgICAgIHJldHVybiB7IHN0ZDo6bnVsbG9wdCwgc3RkOjpu
dWxsb3B0IH07CiAgICAgfQogCiAgICAgaWYgKGl0ZW0uaXM8RHJhd05hdGl2ZUltYWdlPigpKSB7
Ci0gICAgICAgIGlmIChhdXRvIG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIgPSBhcHBs
eU5hdGl2ZUltYWdlSXRlbTxEcmF3TmF0aXZlSW1hZ2U+KGNvbnRleHQoKSwgbV9yZXNvdXJjZUhl
YXAsIGl0ZW0sIG1fZGVsZWdhdGUpKQorICAgICAgICBpZiAoYXV0byBtaXNzaW5nQ2FjaGVkUmVz
b3VyY2VJZGVudGlmaWVyID0gYXBwbHlOYXRpdmVJbWFnZUl0ZW08RHJhd05hdGl2ZUltYWdlPiht
X2NvbnRleHQsIG1fcmVzb3VyY2VIZWFwLCBpdGVtLCBtX2RlbGVnYXRlKSkKICAgICAgICAgICAg
IHJldHVybiB7IFN0b3BSZXBsYXlSZWFzb246Ok1pc3NpbmdDYWNoZWRSZXNvdXJjZSwgV1RGTW92
ZShtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyKSB9OwogICAgICAgICByZXR1cm4geyBz
dGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCB9OwogICAgIH0KIAogICAgIGlmIChpdGVtLmlzPERy
YXdHbHlwaHM+KCkpIHsKLSAgICAgICAgaWYgKGF1dG8gbWlzc2luZ0NhY2hlZFJlc291cmNlSWRl
bnRpZmllciA9IGFwcGx5Rm9udEl0ZW08RHJhd0dseXBocz4oY29udGV4dCgpLCBtX3Jlc291cmNl
SGVhcCwgaXRlbSwgbV9kZWxlZ2F0ZSkpCisgICAgICAgIGlmIChhdXRvIG1pc3NpbmdDYWNoZWRS
ZXNvdXJjZUlkZW50aWZpZXIgPSBhcHBseUZvbnRJdGVtPERyYXdHbHlwaHM+KG1fY29udGV4dCwg
bV9yZXNvdXJjZUhlYXAsIGl0ZW0sIG1fZGVsZWdhdGUpKQogICAgICAgICAgICAgcmV0dXJuIHsg
U3RvcFJlcGxheVJlYXNvbjo6TWlzc2luZ0NhY2hlZFJlc291cmNlLCBXVEZNb3ZlKG1pc3NpbmdD
YWNoZWRSZXNvdXJjZUlkZW50aWZpZXIpIH07CiAgICAgICAgIHJldHVybiB7IHN0ZDo6bnVsbG9w
dCwgc3RkOjpudWxsb3B0IH07CiAgICAgfQogCiAgICAgaWYgKGl0ZW0uaXM8RHJhd1BhdHRlcm4+
KCkpIHsKLSAgICAgICAgaWYgKGF1dG8gbWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllciA9
IGFwcGx5TmF0aXZlSW1hZ2VJdGVtPERyYXdQYXR0ZXJuPihjb250ZXh0KCksIG1fcmVzb3VyY2VI
ZWFwLCBpdGVtLCBtX2RlbGVnYXRlKSkKKyAgICAgICAgaWYgKGF1dG8gbWlzc2luZ0NhY2hlZFJl
c291cmNlSWRlbnRpZmllciA9IGFwcGx5TmF0aXZlSW1hZ2VJdGVtPERyYXdQYXR0ZXJuPihtX2Nv
bnRleHQsIG1fcmVzb3VyY2VIZWFwLCBpdGVtLCBtX2RlbGVnYXRlKSkKICAgICAgICAgICAgIHJl
dHVybiB7IFN0b3BSZXBsYXlSZWFzb246Ok1pc3NpbmdDYWNoZWRSZXNvdXJjZSwgV1RGTW92ZSht
aXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyKSB9OwogICAgICAgICByZXR1cm4geyBzdGQ6
Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCB9OwogICAgIH0KIAogICAgIGlmIChpdGVtLmlzPFNldFN0
YXRlPigpKSB7Ci0gICAgICAgIGlmIChhdXRvIG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZp
ZXIgPSBhcHBseVNldFN0YXRlSXRlbShjb250ZXh0KCksIG1fcmVzb3VyY2VIZWFwLCBpdGVtLCBt
X2RlbGVnYXRlKSkKKyAgICAgICAgaWYgKGF1dG8gbWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRp
ZmllciA9IGFwcGx5U2V0U3RhdGVJdGVtKG1fY29udGV4dCwgbV9yZXNvdXJjZUhlYXAsIGl0ZW0s
IG1fZGVsZWdhdGUpKQogICAgICAgICAgICAgcmV0dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6TWlz
c2luZ0NhY2hlZFJlc291cmNlLCBXVEZNb3ZlKG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZp
ZXIpIH07CiAgICAgICAgIHJldHVybiB7IHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0IH07CiAg
ICAgfQogCi0gICAgaWYgKGl0ZW0uaXM8QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM+KCkpIHsK
LSAgICAgICAgaWYgKG1fbWFza0ltYWdlQnVmZmVyKQotICAgICAgICAgICAgcmV0dXJuIHsgU3Rv
cFJlcGxheVJlYXNvbjo6SW52YWxpZEl0ZW1PckV4dGVudCwgc3RkOjpudWxsb3B0IH07Ci0gICAg
ICAgIGF1dG8mIGNsaXBJdGVtID0gaXRlbS5nZXQ8QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM+
KCk7Ci0gICAgICAgIG1fbWFza0ltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBh
dGlibGVCdWZmZXIoY2xpcEl0ZW0uZGVzdGluYXRpb24oKS5zaXplKCksIGNsaXBJdGVtLmNvbG9y
U3BhY2UoKSwgbV9jb250ZXh0KTsKLSAgICAgICAgaWYgKCFtX21hc2tJbWFnZUJ1ZmZlcikKLSAg
ICAgICAgICAgIHJldHVybiB7IFN0b3BSZXBsYXlSZWFzb246Ok91dE9mTWVtb3J5LCBzdGQ6Om51
bGxvcHQgfTsKLSAgICAgICAgaWYgKG1fZGVsZWdhdGUpCi0gICAgICAgICAgICBtX2RlbGVnYXRl
LT5kaWRDcmVhdGVNYXNrSW1hZ2VCdWZmZXIoKm1fbWFza0ltYWdlQnVmZmVyKTsKLSAgICAgICAg
cmV0dXJuIHsgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQgfTsKLSAgICB9Ci0KLSAgICBpZiAo
aXRlbS5pczxFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM+KCkpIHsKLSAgICAgICAgaWYgKCFtX21h
c2tJbWFnZUJ1ZmZlcikKLSAgICAgICAgICAgIHJldHVybiB7IFN0b3BSZXBsYXlSZWFzb246Oklu
dmFsaWRJdGVtT3JFeHRlbnQsIHN0ZDo6bnVsbG9wdCB9OwotICAgICAgICBhdXRvJiBjbGlwSXRl
bSA9IGl0ZW0uZ2V0PEVuZENsaXBUb0RyYXdpbmdDb21tYW5kcz4oKTsKLSAgICAgICAgbV9jb250
ZXh0LmNsaXBUb0ltYWdlQnVmZmVyKCptX21hc2tJbWFnZUJ1ZmZlciwgY2xpcEl0ZW0uZGVzdGlu
YXRpb24oKSk7Ci0gICAgICAgIG1fbWFza0ltYWdlQnVmZmVyID0gbnVsbHB0cjsKLSAgICAgICAg
aWYgKG1fZGVsZWdhdGUpCi0gICAgICAgICAgICBtX2RlbGVnYXRlLT5kaWRSZXNldE1hc2tJbWFn
ZUJ1ZmZlcigpOwotICAgICAgICByZXR1cm4geyBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCB9
OwotICAgIH0KLQotICAgIGl0ZW0uYXBwbHkoY29udGV4dCgpKTsKKyAgICBpdGVtLmFwcGx5KG1f
Y29udGV4dCk7CiAgICAgcmV0dXJuIHsgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQgfTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmgKaW5kZXggOTI4NWJiZGQxMDA0
OGMyYWVmOWJmZGQzOWUyMGFlMWM2MzNkNWM3Yy4uMzczYzUzMWFlOThiYWQ3MTI0YTIyMzU0MjAx
NWFhZTNmYThkMGJjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5oCkBA
IC01OSw3ICs1OSw3IEBAIGNsYXNzIFJlcGxheWVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShSZXBsYXllcik7CiBwdWJsaWM6CiAgICAgY2xhc3MgRGVsZWdhdGU7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgUmVwbGF5ZXIoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRGlzcGxheUxpc3QmLCBjb25z
dCBSZXNvdXJjZUhlYXAqID0gbnVsbHB0ciwgV2ViQ29yZTo6SW1hZ2VCdWZmZXIqIG1hc2tJbWFn
ZUJ1ZmZlciA9IG51bGxwdHIsIERlbGVnYXRlKiA9IG51bGxwdHIpOworICAgIFdFQkNPUkVfRVhQ
T1JUIFJlcGxheWVyKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IERpc3BsYXlMaXN0JiwgY29uc3Qg
UmVzb3VyY2VIZWFwKiA9IG51bGxwdHIsIERlbGVnYXRlKiA9IG51bGxwdHIpOwogICAgIFdFQkNP
UkVfRVhQT1JUIH5SZXBsYXllcigpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgUmVwbGF5UmVzdWx0
IHJlcGxheShjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwID0geyB9LCBib29sIHRyYWNrUmVw
bGF5TGlzdCA9IGZhbHNlKTsKQEAgLTY4LDE3ICs2OCwxMyBAQCBwdWJsaWM6CiAgICAgcHVibGlj
OgogICAgICAgICB2aXJ0dWFsIH5EZWxlZ2F0ZSgpIHsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wg
YXBwbHkoSXRlbUhhbmRsZSwgR3JhcGhpY3NDb250ZXh0JikgeyByZXR1cm4gZmFsc2U7IH0KLSAg
ICAgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZU1hc2tJbWFnZUJ1ZmZlcihXZWJDb3JlOjpJbWFn
ZUJ1ZmZlciYpIHsgfQotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVzZXRNYXNrSW1hZ2VCdWZm
ZXIoKSB7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIHJlY29yZFJlc291cmNlVXNlKFJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcikgeyB9CiAgICAgfTsKICAgICAKIHByaXZhdGU6Ci0gICAgR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0KCkgY29uc3Q7CiAgICAgc3RkOjpwYWlyPHN0ZDo6b3B0aW9u
YWw8U3RvcFJlcGxheVJlYXNvbj4sIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyPj4gYXBwbHlJdGVtKEl0ZW1IYW5kbGUpOwogCiAgICAgR3JhcGhpY3NDb250ZXh0JiBt
X2NvbnRleHQ7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBtX21hc2tJbWFnZUJ1
ZmZlcjsKICAgICBjb25zdCBEaXNwbGF5TGlzdCYgbV9kaXNwbGF5TGlzdDsKICAgICBjb25zdCBS
ZXNvdXJjZUhlYXAmIG1fcmVzb3VyY2VIZWFwOwogICAgIERlbGVnYXRlKiBtX2RlbGVnYXRlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWly
by9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVy
LmNwcAppbmRleCA5OTBjNzFmYTQ3NDMwZjU5M2UyYzI0YzBiNzlkNzk1OGM0OGY3ZmVkLi45MjQ3
ZjMwZTcyMjQ3MzYwMTBlOTFmYjcyNjIwOGI3NGE4ZTlhZjEyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJh
dGlvblJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9u
aWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcApAQCAtMTEwNiwx
MiArMTEwNiw2IEBAIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6YXBwZW5kKHN0ZDo6dW5p
cXVlX3B0cjxQYWludGluZ09wZXJhdGlvbj4mJiBjb21tYW5kCiAgICAgbV9jb21tYW5kTGlzdC5h
cHBlbmQoV1RGTW92ZShjb21tYW5kKSk7CiB9CiAKLUdyYXBoaWNzQ29udGV4dDo6Q2xpcFRvRHJh
d2luZ0NvbW1hbmRzUmVzdWx0IENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmNsaXBUb0RyYXdpbmdD
b21tYW5kcyhjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBG
dW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYmKQotewotICAgIC8vIEZJWE1FOiBOb3Qg
aW1wbGVtZW50ZWQuCi0gICAgcmV0dXJuIENsaXBUb0RyYXdpbmdDb21tYW5kc1Jlc3VsdDo6U3Vj
Y2VzczsKLX0KLQogI2lmIEVOQUJMRShWSURFTykKIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRl
cjo6cGFpbnRGcmFtZUZvck1lZGlhKE1lZGlhUGxheWVyJiBwbGF5ZXIsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdGluYXRpb24pCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWly
b09wZXJhdGlvblJlY29yZGVyLmgKaW5kZXggYWE5NGRlODg2MjcyNTViZDY1MDQ3MDcyZjVjYTJi
OWRmZDNjYzgzNS4uNzM5Nzc4ODZjZTczYTdmYTY3ZWYwOWExM2E4YjAyM2M3YzgzMWY5NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9O
aWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIu
aApAQCAtOTYsNyArOTYsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgY2xpcFBhdGgoY29uc3QgV2Vi
Q29yZTo6UGF0aCYsIFdlYkNvcmU6OldpbmRSdWxlKSBvdmVycmlkZTsKICAgICBXZWJDb3JlOjpJ
bnRSZWN0IGNsaXBCb3VuZHMoKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIGNsaXBUb0ltYWdl
QnVmZmVyKFdlYkNvcmU6OkltYWdlQnVmZmVyJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jikg
b3ZlcnJpZGU7Ci0gICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpDbGlwVG9EcmF3aW5nQ29t
bWFuZHNSZXN1bHQgY2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVj
dCYgZGVzdGluYXRpb24sIGNvbnN0IFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIEZ1
bmN0aW9uPHZvaWQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Jik+JiYpIG92ZXJyaWRlOwogI2lm
IEVOQUJMRShWSURFTykKICAgICB2b2lkIHBhaW50RnJhbWVGb3JNZWRpYShXZWJDb3JlOjpNZWRp
YVBsYXllciYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgZGVzdGluYXRpb24pIG92ZXJyaWRl
OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVN
YWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0KaW5kZXggZDc5
ZTg1YWEyYmM5NzU4NzJhZmZiMWQ3MDcxOTRkZGVkYmQzOTA5YS4uMzBlMDJjNGUwM2I4YWJiZmJj
MWUzOWZkYWYyMjdiMjRlYjc1N2U1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1RoZW1lTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVt
ZU1hYy5tbQpAQCAtNzM0LDcgKzczNCw3IEBAIGJvb2wgVGhlbWVNYWM6OmRyYXdDZWxsT3JGb2N1
c1JpbmdXaXRoVmlld0ludG9Db250ZXh0KE5TQ2VsbCAqY2VsbCwgR3JhcGhpY3NDb250CiAKICAg
ICBpZiAodXNlSW1hZ2VCdWZmZXIpIHsKICAgICAgICAgTlNSZWN0IGltYWdlQnVmZmVyRHJhd1Jl
Y3QgPSBOU1JlY3QoRmxvYXRSZWN0KGJ1dHRvbkZvY3VzUmVjdE91dGxpbmVXaWR0aCwgYnV0dG9u
Rm9jdXNSZWN0T3V0bGluZVdpZHRoLCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpKTsKLSAg
ICAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVm
ZmVyKHJlY3Quc2l6ZSgpICsgMiAqIEZsb2F0U2l6ZShidXR0b25Gb2N1c1JlY3RPdXRsaW5lV2lk
dGgsIGJ1dHRvbkZvY3VzUmVjdE91dGxpbmVXaWR0aCksIGRldmljZVNjYWxlRmFjdG9yLCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgY29udGV4dCk7CisgICAgICAgIGF1dG8gaW1hZ2VC
dWZmZXIgPSBjb250ZXh0LmNyZWF0ZUltYWdlQnVmZmVyKHJlY3Quc2l6ZSgpICsgMiAqIEZsb2F0
U2l6ZShidXR0b25Gb2N1c1JlY3RPdXRsaW5lV2lkdGgsIGJ1dHRvbkZvY3VzUmVjdE91dGxpbmVX
aWR0aCksIGRldmljZVNjYWxlRmFjdG9yKTsKICAgICAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKICAg
ICAgICAgICAgIHJldHVybiBuZWVkc1JlcGFpbnQ7CiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCmluZGV4IDUyOGYwMjIw
NGE2MTg2Zjk4NTFhMzI0YzUwZTliNjFjYjI1MjAzNzQuLjE5YmIwYzQyZmJjNWZjMjEzNTc2MDc4
MjI2NTdmYmI2MmFmODcyODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJveE1vZGVsT2JqZWN0LmNwcApAQCAtODk0LDcgKzg5NCw3IEBAIHZvaWQgUmVuZGVyQm94
TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVyRXh0ZW5kZWQoY29uc3QgUGFpbnRJbmZvJiBwYWlu
dEluZm8sIGNvCiAgICAgICAgIG1hc2tSZWN0LmludGVyc2VjdChzbmFwUmVjdFRvRGV2aWNlUGl4
ZWxzKHBhaW50SW5mby5yZWN0LCBkZXZpY2VTY2FsZUZhY3RvcikpOwogCiAgICAgICAgIC8vIE5v
dyBjcmVhdGUgdGhlIG1hc2suCi0gICAgICAgIG1hc2tJbWFnZSA9IEltYWdlQnVmZmVyOjpjcmVh
dGVDb21wYXRpYmxlQnVmZmVyKG1hc2tSZWN0LnNpemUoKSwgRGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCKCksIGNvbnRleHQpOworICAgICAgICBtYXNrSW1hZ2UgPSBjb250ZXh0LmNyZWF0ZUNv
bXBhdGlibGVJbWFnZUJ1ZmZlcihtYXNrUmVjdC5zaXplKCkpOwogICAgICAgICBpZiAoIW1hc2tJ
bWFnZSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgcGFpbnRNYXNrRm9yVGV4dEZpbGxC
b3gobWFza0ltYWdlLmdldCgpLCBtYXNrUmVjdCwgYm94LCBzY3JvbGxlZFBhaW50UmVjdCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCmluZGV4
IDY4NzljYTVlZTcwZjUxYjdmNDJiNGM1ZjU0Y2YxYjQwYzI5ZTJlYmYuLjdjMjIzMzc0ODQyODE3
MWIxODgyNjI3MGFjNDljODE0NmU5NThkOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCkBAIC0zMzEyLDcgKzMzMTIsNyBAQCBzdGF0aWMg
UmVmUHRyPFBhdHRlcm4+IHBhdHRlcm5Gb3JEZXNjcmlwdGlvbihQYXR0ZXJuRGVzY3JpcHRpb24g
ZGVzY3JpcHRpb24sIEZsbwogewogICAgIGNvbnN0IEZsb2F0U2l6ZSB0aWxlU2l6ZSB7IDMyLCAx
OCB9OwogCi0gICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRp
YmxlQnVmZmVyKHRpbGVTaXplLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgZGVzdENv
bnRleHQpOworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBkZXN0Q29udGV4dC5jcmVhdGVDb21wYXRp
YmxlSW1hZ2VCdWZmZXIodGlsZVNpemUpOwogICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVt
ZUNvY29hLm1tCmluZGV4IDFhNjY3MzIyNzIyYWQzOGZjMTUxNGJiYjExOWVkY2UzYThlZjczZjMu
LmFiZDRjMWRiMTMxNGQ0NDIxYjczMjJhYTg1NzUxYWViMmY1OTNhZGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNvY29hLm1tCkBAIC0xNTQsNyArMTU0LDcgQEAg
Ym9vbCBSZW5kZXJUaGVtZUNvY29hOjpwYWludEFwcGxlUGF5QnV0dG9uKGNvbnN0IFJlbmRlck9i
amVjdCYgcmVuZGVyZXIsIGNvbnN0IFAKIHsKICAgICBhdXRvJiBkZXN0aW5hdGlvbkNvbnRleHQg
PSBwYWludEluZm8uY29udGV4dCgpOwogCi0gICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVm
ZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKHBhaW50UmVjdC5zaXplKCksIGRlc3RpbmF0aW9u
Q29udGV4dCk7CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IGRlc3RpbmF0aW9uQ29udGV4dC5jcmVh
dGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIocGFpbnRSZWN0LnNpemUoKSk7CiAgICAgaWYgKCFpbWFn
ZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGhlbWVNYWMubW0KaW5kZXggNmM5NGU5MmUwZmZmODQwMTNmMWE2ZWM2ODI5Yzdl
OTAwYTIwMDc4Zi4uMjdhYWUwZWNhNTE2YTFjNzg5MTcwYmNiZjQzMGZjMjgxNmQyYzI2ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQpAQCAtOTk2LDcgKzk5
Niw3IEBAIHZvaWQgUmVuZGVyVGhlbWVNYWM6OnBhaW50TGlzdEJ1dHRvbkZvcklucHV0KGNvbnN0
IFJlbmRlck9iamVjdCYgbywgR3JhcGhpY3NDb250CiAKICAgICBmbG9hdCBkZXZpY2VTY2FsZUZh
Y3RvciA9IG8uZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpOwogCi0gICAgYXV0byBjb21i
b0JveEltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29t
Ym9Cb3hTaXplLCBkZXZpY2VTY2FsZUZhY3RvciwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdC
KCksIGNvbnRleHQpOworICAgIGF1dG8gY29tYm9Cb3hJbWFnZUJ1ZmZlciA9IGNvbnRleHQuY3Jl
YXRlSW1hZ2VCdWZmZXIoY29tYm9Cb3hTaXplLCBkZXZpY2VTY2FsZUZhY3Rvcik7CiAgICAgaWYg
KCFjb21ib0JveEltYWdlQnVmZmVyKQogICAgICAgICByZXR1cm47CiAKQEAgLTEwMjAsNyArMTAy
MCw3IEBAIHZvaWQgUmVuZGVyVGhlbWVNYWM6OnBhaW50TGlzdEJ1dHRvbkZvcklucHV0KGNvbnN0
IFJlbmRlck9iamVjdCYgbywgR3JhcGhpY3NDb250CiAgICAgICAgIChfX2JyaWRnZSBOU1N0cmlu
ZyAqKWtDVUlVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uS2V5IDogKF9fYnJpZGdlIE5TU3Ry
aW5nICopa0NVSVVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb25MZWZ0VG9SaWdodCwKICAgICB9
XTsKIAotICAgIGF1dG8gY29tYm9Cb3hCdXR0b25JbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpj
cmVhdGVDb21wYXRpYmxlQnVmZmVyKGRlc2lyZWRDb21ib0JveEJ1dHRvblNpemUsIGRldmljZVNj
YWxlRmFjdG9yLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgY29udGV4dCk7CisgICAg
YXV0byBjb21ib0JveEJ1dHRvbkltYWdlQnVmZmVyID0gY29udGV4dC5jcmVhdGVJbWFnZUJ1ZmZl
cihkZXNpcmVkQ29tYm9Cb3hCdXR0b25TaXplLCBkZXZpY2VTY2FsZUZhY3Rvcik7CiAgICAgaWYg
KCFjb21ib0JveEJ1dHRvbkltYWdlQnVmZmVyKQogICAgICAgICByZXR1cm47CiAKQEAgLTEzNzks
NyArMTM3OSw3IEBAIGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50UHJvZ3Jlc3NCYXIoY29uc3Qg
UmVuZGVyT2JqZWN0JiByZW5kZXJPYmplY3QsIGNvbnN0IFBhCiAgICAgY29uc3QgYXV0byYgcmVu
ZGVyUHJvZ3Jlc3MgPSBkb3duY2FzdDxSZW5kZXJQcm9ncmVzcz4ocmVuZGVyT2JqZWN0KTsKICAg
ICBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciA9IHJlbmRlck9iamVjdC5kb2N1bWVudCgpLmRldmlj
ZVNjYWxlRmFjdG9yKCk7CiAgICAgYm9vbCBpc0luZGV0ZXJtaW5hdGUgPSByZW5kZXJQcm9ncmVz
cy5wb3NpdGlvbigpIDwgMDsKLSAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNy
ZWF0ZUNvbXBhdGlibGVCdWZmZXIoaW5mbGF0ZWRSZWN0LnNpemUoKSwgZGV2aWNlU2NhbGVGYWN0
b3IsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBwYWludEluZm8uY29udGV4dCgpKTsK
KyAgICBhdXRvIGltYWdlQnVmZmVyID0gcGFpbnRJbmZvLmNvbnRleHQoKS5jcmVhdGVJbWFnZUJ1
ZmZlcihpbmZsYXRlZFJlY3Quc2l6ZSgpLCBkZXZpY2VTY2FsZUZhY3Rvcik7CiAgICAgaWYgKCFp
bWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuIHRydWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IGYwOGU4NzJk
Mjg2NmFlNTM0MjQ4NmUzYzlmOTk4ZWRjOTQ0OTg0YjkuLjQ0OGY5MTY1MmE5MjlkYTg0NDQ0MjIw
ZGQ5Yzc3MWYwYmE0NTk3ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtMzMzLDcgKzMzMyw3IEBAIGJvb2wgU1ZH
UmVuZGVyaW5nQ29udGV4dDo6YnVmZmVyRm9yZWdyb3VuZChSZWZQdHI8SW1hZ2VCdWZmZXI+JiBp
bWFnZUJ1ZmZlcikKIAogICAgIC8vIENyZWF0ZSBhIG5ldyBidWZmZXIgYW5kIHBhaW50IHRoZSBm
b3JlZ3JvdW5kIGludG8gaXQuCiAgICAgaWYgKCFpbWFnZUJ1ZmZlcikgewotICAgICAgICBpbWFn
ZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGV4cGFuZGVkSW50
U2l6ZShib3VuZGluZ0JveC5zaXplKCkpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwg
bV9wYWludEluZm8tPmNvbnRleHQoKSk7CisgICAgICAgIGltYWdlQnVmZmVyID0gbV9wYWludElu
Zm8tPmNvbnRleHQoKS5jcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIoZXhwYW5kZWRJbnRTaXpl
KGJvdW5kaW5nQm94LnNpemUoKSkpOwogICAgICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2UuY3BwCmluZGV4IGY0MTQwMTIzMzg5MTkwMzg3YWQyNzY5NmE1MDU0NDU0ZGY4OTAyOGEu
LjZiZmY4OTc2Yzc4YmNiZjFmNGMzMzAzN2FiZjdiYzUyNWJkZjQ0ZGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcApAQCAtMjUwLDcgKzI1MCw3IEBAIHZvaWQgU1ZH
SW1hZ2U6OmRyYXdQYXR0ZXJuRm9yQ29udGFpbmVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgRmxvYXRTaXplCiAgICAgRmxvYXRSZWN0IGltYWdlQnVmZmVyU2l6ZSA9IHpvb21lZENv
bnRhaW5lclJlY3Q7CiAgICAgaW1hZ2VCdWZmZXJTaXplLnNjYWxlKGltYWdlQnVmZmVyU2NhbGUu
d2lkdGgoKSwgaW1hZ2VCdWZmZXJTY2FsZS5oZWlnaHQoKSk7CiAKLSAgICBhdXRvIGJ1ZmZlciA9
IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGV4cGFuZGVkSW50U2l6ZShpbWFn
ZUJ1ZmZlclNpemUuc2l6ZSgpKSwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIGNv
bnRleHQpOworICAgIGF1dG8gYnVmZmVyID0gY29udGV4dC5jcmVhdGVJbWFnZUJ1ZmZlcihleHBh
bmRlZEludFNpemUoaW1hZ2VCdWZmZXJTaXplLnNpemUoKSkpOwogICAgIGlmICghYnVmZmVyKSAv
LyBGYWlsZWQgdG8gYWxsb2NhdGUgYnVmZmVyLgogICAgICAgICByZXR1cm47CiAgICAgZHJhd0Zv
ckNvbnRhaW5lcihidWZmZXItPmNvbnRleHQoKSwgY29udGFpbmVyU2l6ZSwgY29udGFpbmVyWm9v
bSwgaW5pdGlhbEZyYWdtZW50VVJMLCBpbWFnZUJ1ZmZlclNpemUsIHpvb21lZENvbnRhaW5lclJl
Y3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZURpc3BsYXlMaXN0UmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCmluZGV4IGQ5YWY1ODQwZGY2ODQzZDll
NjE5ZGI2NjJlYzkwZWE0ODE4NTc5NmEuLjAyMjhhZTNhNGM3NWJlNmU3NjQyMmM5ZWU4ZWEwZTQ2
MWQ1YWM2MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKQEAgLTUwLDcgKzUwLDcg
QEAgUmVtb3RlUmVzb3VyY2VDYWNoZSYgUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlcjo6cmVzb3Vy
Y2VDYWNoZSgpCiAKIEdyYXBoaWNzQ29udGV4dCYgUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlcjo6
ZHJhd2luZ0NvbnRleHQoKQogewotICAgIHJldHVybiBtX21hc2tJbWFnZUJ1ZmZlciA/IG1fbWFz
a0ltYWdlQnVmZmVyLT5jb250ZXh0KCkgOiBtX2ltYWdlQnVmZmVyLT5jb250ZXh0KCk7CisgICAg
cmV0dXJuIG1faW1hZ2VCdWZmZXItPmNvbnRleHQoKTsKIH0KIAogdm9pZCBSZW1vdGVEaXNwbGF5
TGlzdFJlY29yZGVyOjpzdGFydExpc3RlbmluZ0ZvcklQQygpCkBAIC0yMDYsMjIgKzIwNiw2IEBA
IHZvaWQgUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlcjo6Y2xpcFBhdGgoY29uc3QgUGF0aCYgcGF0
aCwgV2luZFJ1bGUgcnVsZSkKICAgICBoYW5kbGVJdGVtKERpc3BsYXlMaXN0OjpDbGlwUGF0aChw
YXRoLCBydWxlKSk7CiB9CiAKLXZvaWQgUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlcjo6YmVnaW5D
bGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3Qg
RGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlKQotewotICAgIG1fbWFza0ltYWdlQnVm
ZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoZGVzdGluYXRpb24uc2l6
ZSgpLCBjb2xvclNwYWNlLCBkcmF3aW5nQ29udGV4dCgpKTsKLX0KLQotdm9pZCBSZW1vdGVEaXNw
bGF5TGlzdFJlY29yZGVyOjplbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0
JiBkZXN0aW5hdGlvbikKLXsKLSAgICBhdXRvIG1hc2tJbWFnZUJ1ZmZlciA9IHN0ZDo6ZXhjaGFu
Z2UobV9tYXNrSW1hZ2VCdWZmZXIsIHsgfSk7Ci0gICAgaWYgKCFtYXNrSW1hZ2VCdWZmZXIpIHsK
LSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBkcmF3aW5nQ29udGV4dCgpLmNsaXBUb0ltYWdlQnVmZmVyKCptYXNrSW1hZ2VCdWZmZXIs
IGRlc3RpbmF0aW9uKTsKLX0KLQogdm9pZCBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyOjpkcmF3
RmlsdGVyZWRJbWFnZUJ1ZmZlcihzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
Zmllcj4gc291cmNlSW1hZ2VJZGVudGlmaWVyLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZUltYWdl
UmVjdCwgSVBDOjpGaWx0ZXJSZWZlcmVuY2UgZmlsdGVyUmVmZXJlbmNlKQogewogICAgIFJlZlB0
cjxJbWFnZUJ1ZmZlcj4gc291cmNlSW1hZ2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5oIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIuaAppbmRl
eCBlMTY4ZTVhZWEyMTRhODMwMGI0MTM0MTdmODk4NWI0ZDkxZDM0ZjllLi5iMDRiN2VhMjAwM2Jk
MDE4NTc0NDgyOGVjZGU0M2M2NjA0MTk5YTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyLmgK
QEAgLTc4LDggKzc4LDYgQEAgcHVibGljOgogICAgIHZvaWQgY2xpcFRvSW1hZ2VCdWZmZXIoV2Vi
Q29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJl
Y3QmIGRlc3RpbmF0aW9uUmVjdCk7CiAgICAgdm9pZCBjbGlwT3V0VG9QYXRoKGNvbnN0IFdlYkNv
cmU6OlBhdGgmKTsKICAgICB2b2lkIGNsaXBQYXRoKGNvbnN0IFdlYkNvcmU6OlBhdGgmLCBXZWJD
b3JlOjpXaW5kUnVsZSk7Ci0gICAgdm9pZCBiZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25z
dCBXZWJDb3JlOjpGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBXZWJDb3JlOjpEZXN0aW5h
dGlvbkNvbG9yU3BhY2UmKTsKLSAgICB2b2lkIGVuZENsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25z
dCBXZWJDb3JlOjpGbG9hdFJlY3QmIGRlc3RpbmF0aW9uKTsKICAgICB2b2lkIGRyYXdHbHlwaHMo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdHbHlwaHMmJik7CiAgICAgdm9pZCBkcmF3RmlsdGVy
ZWRJbWFnZUJ1ZmZlcihzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcj4gc291cmNlSW1hZ2VJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3Qm
IHNvdXJjZUltYWdlUmVjdCwgSVBDOjpGaWx0ZXJSZWZlcmVuY2UpOwogICAgIHZvaWQgZHJhd0lt
YWdlQnVmZmVyKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBpbWFnZUJ1ZmZl
cklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgZGVzdGluYXRpb25SZWN0LCBj
b25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFp
bnRpbmdPcHRpb25zJik7CkBAIC0xNjAsNyArMTU4LDYgQEAgcHJpdmF0ZToKICAgICBRdWFsaWZp
ZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgbV9pbWFnZUJ1ZmZlcklkZW50aWZpZXI7CiAg
ICAgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgbV93ZWJQcm9jZXNzSWRlbnRpZmllcjsKICAg
ICBSZWZQdHI8UmVtb3RlUmVuZGVyaW5nQmFja2VuZD4gbV9yZW5kZXJpbmdCYWNrZW5kOwotICAg
IFJlZlB0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gbV9tYXNrSW1hZ2VCdWZmZXI7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyLm1lc3NhZ2VzLmluIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIubWVz
c2FnZXMuaW4KaW5kZXggZTIzZWFjY2E1NzJmNzVmNzE1MTIyZGE2MzZmMzMxMGM2OTg1YTc2NC4u
ZDdjODA2ZDRiYzQ3NmE3YmYyODRhY2E0YjQ1NDVhMGVhMzE2OWM2OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIu
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZURpc3BsYXlMaXN0UmVjb3JkZXIubWVzc2FnZXMuaW4KQEAgLTQ0LDggKzQ0LDYgQEAgbWVzc2Fn
ZXMgLT4gUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlciBOb3RSZWZDb3VudGVkIFN0cmVhbSB7CiAg
ICAgQ2xpcFRvSW1hZ2VCdWZmZXIoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
IHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgV2ViQ29yZTo6RmxvYXRSZWN0IGRlc3RpbmF0
aW9uUmVjdCkKICAgICBDbGlwT3V0VG9QYXRoKFdlYkNvcmU6OlBhdGggcGF0aCkKICAgICBDbGlw
UGF0aChXZWJDb3JlOjpQYXRoIHBhdGgsIGVudW06dWludDhfdCBXZWJDb3JlOjpXaW5kUnVsZSB3
aW5kUnVsZSkKLSAgICBCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcyhXZWJDb3JlOjpGbG9hdFJl
Y3QgZGVzdGluYXRpb24sIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNl
KQotICAgIEVuZENsaXBUb0RyYXdpbmdDb21tYW5kcyhXZWJDb3JlOjpGbG9hdFJlY3QgZGVzdGlu
YXRpb24pCiAgICAgRHJhd0dseXBocyhXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0dseXBocyBp
dGVtKQogICAgIERyYXdGaWx0ZXJlZEltYWdlQnVmZmVyKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBzb3VyY2VJbWFnZUlkZW50aWZpZXIsIFdlYkNv
cmU6OkZsb2F0UmVjdCBzb3VyY2VJbWFnZVJlY3QsIElQQzo6RmlsdGVyUmVmZXJlbmNlIGZpbHRl
cikKICAgICBEcmF3SW1hZ2VCdWZmZXIoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyIGltYWdlQnVmZmVySWRlbnRpZmllciwgV2ViQ29yZTo6RmxvYXRSZWN0IGRlc3RpbmF0aW9u
UmVjdCwgV2ViQ29yZTo6RmxvYXRSZWN0IHNyY1JlY3QsIHN0cnVjdCBXZWJDb3JlOjpJbWFnZVBh
aW50aW5nT3B0aW9ucyBvcHRpb25zKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29y
ZGVyUHJveHkuY3BwCmluZGV4IDI0MzNmZGNjOTc0YWI2Njc5NzFhMjVhZjY0Nzg5MzU2MGEzMzFj
OTYuLjg5Y2Y5ZGY2NzQ0YTQ1ZDVmOTNkNjhmYmFjMjkwNDc0M2VhMTE5OGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RS
ZWNvcmRlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eS5jcHAKQEAgLTE5NSwxNiArMTk1LDYg
QEAgdm9pZCBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHk6OnJlY29yZENsaXBQYXRoKGNv
bnN0IFBhdGgmIHBhdGgsIFdpbmRSdWxlIHIKICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVEaXNw
bGF5TGlzdFJlY29yZGVyOjpDbGlwUGF0aChwYXRoLCBydWxlKSk7CiB9CiAKLXZvaWQgUmVtb3Rl
RGlzcGxheUxpc3RSZWNvcmRlclByb3h5OjpyZWNvcmRCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5k
cyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29s
b3JTcGFjZSkKLXsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVy
OjpCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcyhkZXN0aW5hdGlvbiwgY29sb3JTcGFjZSkpOwot
fQotCi12b2lkIFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eTo6cmVjb3JkRW5kQ2xpcFRv
RHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24pCi17Ci0gICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlcjo6RW5kQ2xpcFRvRHJhd2luZ0Nv
bW1hbmRzKGRlc3RpbmF0aW9uKSk7Ci19Ci0KIHZvaWQgUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRl
clByb3h5OjpyZWNvcmREcmF3RmlsdGVyZWRJbWFnZUJ1ZmZlcihzdGQ6Om9wdGlvbmFsPFJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcj4gc291cmNlSW1hZ2VJZGVudGlmaWVyLCBjb25zdCBGbG9h
dFJlY3QmIHNvdXJjZUltYWdlUmVjdCwgRmlsdGVyJiBmaWx0ZXIpCiB7CiAgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlcjo6RHJhd0ZpbHRlcmVkSW1hZ2VCdWZmZXIo
c291cmNlSW1hZ2VJZGVudGlmaWVyLCBzb3VyY2VJbWFnZVJlY3QsIElQQzo6RmlsdGVyUmVmZXJl
bmNlKFJlZjxGaWx0ZXI+IHsgZmlsdGVyIH0pKSk7CkBAIC00NjQsOSArNDU0LDE0IEBAIHZvaWQg
UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5OjpmbHVzaENvbnRleHQoR3JhcGhpY3NDb250
ZXh0Rmx1c2hJZGVudGlmaWVyCiAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlRGlzcGxheUxpc3RS
ZWNvcmRlcjo6Rmx1c2hDb250ZXh0KGlkZW50aWZpZXIpKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRy
PEdyYXBoaWNzQ29udGV4dD4gUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5OjpjcmVhdGVO
ZXN0ZWRDb250ZXh0KGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYgaW5pdGlhbENUTSkKK1JlZlB0cjxJbWFnZUJ1ZmZlcj4gUmVtb3RlRGlzcGxheUxp
c3RSZWNvcmRlclByb3h5OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUs
IGZsb2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xv
clNwYWNlKSBjb25zdAogewotICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbW90ZURpc3BsYXlMaXN0
UmVjb3JkZXJQcm94eT4oKnRoaXMsIGluaXRpYWxDbGlwLCBpbml0aWFsQ1RNKTsKKyAgICBpZiAo
VU5MSUtFTFkoIW1fcmVuZGVyaW5nQmFja2VuZCkpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIHJldHVybiBtX3Jl
bmRlcmluZ0JhY2tlbmQtPmNyZWF0ZUltYWdlQnVmZmVyKHNpemUsIHJlbmRlcmluZ01vZGUoKSwg
cmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eS5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVy
UHJveHkuaAppbmRleCBhNDE4ZWYyZmIwM2ViM2UyMjFjY2Q3ZjVhNjQxNTQ4MmQ3MWMzNDZhLi40
N2ZhM2Q3NGE5OTVhNzVmZDc3ZGNiMTAxOWYxNDVhMDlmMjcxNzA4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3Jk
ZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5LmgKQEAgLTkwLDggKzkwLDYgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHJlY29yZENsaXBUb0ltYWdlQnVmZmVyKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllciBpbWFnZUJ1ZmZlcklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkZsb2F0
UmVjdCYgZGVzdGluYXRpb25SZWN0KSBmaW5hbDsKICAgICB2b2lkIHJlY29yZENsaXBPdXRUb1Bh
dGgoY29uc3QgV2ViQ29yZTo6UGF0aCYpIGZpbmFsOwogICAgIHZvaWQgcmVjb3JkQ2xpcFBhdGgo
Y29uc3QgV2ViQ29yZTo6UGF0aCYsIFdlYkNvcmU6OldpbmRSdWxlKSBmaW5hbDsKLSAgICB2b2lk
IHJlY29yZEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVj
dCYgZGVzdGluYXRpb24sIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSkgZmluYWw7Ci0g
ICAgdm9pZCByZWNvcmRFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgV2ViQ29yZTo6Rmxv
YXRSZWN0JiBkZXN0aW5hdGlvbikgZmluYWw7CiAgICAgdm9pZCByZWNvcmREcmF3RmlsdGVyZWRJ
bWFnZUJ1ZmZlcihzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
Zmllcj4gc291cmNlSW1hZ2VJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHNv
dXJjZUltYWdlUmVjdCwgV2ViQ29yZTo6RmlsdGVyJikgZmluYWw7CiAgICAgdm9pZCByZWNvcmRE
cmF3R2x5cGhzKGNvbnN0IFdlYkNvcmU6OkZvbnQmLCBjb25zdCBXZWJDb3JlOjpHbHlwaEJ1ZmZl
ckdseXBoKiwgY29uc3QgV2ViQ29yZTo6R2x5cGhCdWZmZXJBZHZhbmNlKiwgdW5zaWduZWQgY291
bnQsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIGxvY2FsQW5jaG9yLCBXZWJDb3JlOjpGb250
U21vb3RoaW5nTW9kZSkgZmluYWw7CiAgICAgdm9pZCByZWNvcmREcmF3SW1hZ2VCdWZmZXIoV2Vi
Q29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGltYWdlQnVmZmVySWRlbnRpZmllciwg
Y29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgV2ViQ29yZTo6RmxvYXRS
ZWN0JiBzcmNSZWN0LCBjb25zdCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYpIGZpbmFs
OwpAQCAtMTQzLDcgKzE0MSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCByZWNvcmRSZXNvdXJjZVVz
ZShjb25zdCBXZWJDb3JlOjpTb3VyY2VJbWFnZSYpIGZpbmFsOwogICAgIGJvb2wgcmVjb3JkUmVz
b3VyY2VVc2UoV2ViQ29yZTo6Rm9udCYpIGZpbmFsOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dD4gY3JlYXRlTmVzdGVkQ29udGV4dChjb25zdCBXZWJDb3Jl
OjpGbG9hdFJlY3QmIGluaXRpYWxDbGlwLCBjb25zdCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0m
IGluaXRpYWxDVE0pIGZpbmFsOworICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gY3Jl
YXRlSW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgZmxvYXQgcmVzb2x1dGlv
blNjYWxlID0gMSwgY29uc3QgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlJiA9IFdlYkNv
cmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKSBjb25zdCBmaW5hbDsKIAogICAgIFdl
YkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBtX2Rlc3RpbmF0aW9uQnVmZmVySWRl
bnRpZmllcjsKICAgICBXZWFrUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBtX2ltYWdlQnVmZmVy
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450308</attachid>
            <date>2022-01-28 21:05:16 -0800</date>
            <delta_ts>2022-02-10 01:47:06 -0800</delta_ts>
            <desc>Patch for review</desc>
            <filename>delete-clipToDrawingCommands.patch</filename>
            <type>text/plain</type>
            <size>50051</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBlMGM2YmNiMTNmZjguLmU2NDc2NTliMDI1NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDY2IEBACisyMDIyLTAxLTI4ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUu
Y29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10gRGVsZXRlIEdyYXBoaWNzQ29udGV4dDo6Y2xp
cFRvRHJhd2luZ0NvbW1hbmRzKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyNTk1OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRoaXMgZnVuY3Rpb24gd2FzIGFkZGVkIGluIHIyNjc3NDIgYXMgYSB3b3Jr
YXJvdW5kIGZvciBHUFVQcm9jZXNzIGNhc2UKKyAgICAgICAgd2hpY2ggd2FzIGhhcHBlbmluZyBi
ZWNhdXNlIEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKCkgdXNlZAorICAgICAg
ICB0byByZXR1cm4gaW4tcHJvY2VzcyBJbWFnZUJ1ZmZlci4gY2xpcFRvRHJhd2luZ0NvbW1hbmRz
KCkgd2FzIGEgd2F5IHRvCisgICAgICAgIHJlY29yZCB0aGUgY2xpcHBlciBtYXNrIGltYWdlIGlu
dG8gYSB0ZW1wb3JhcnkgcmVtb3RlIEltYWdlQnVmZmVyLgorCisgICAgICAgIElmIEdyYXBoaWNz
Q29udGV4dDo6Y3JlYXRlQ29tcGF0aWJsZUltYWdlQnVmZmVyKCkgY2FuIGNyZWF0ZSBhbgorICAg
ICAgICBJbWFnZUJ1ZmZlciBzaW1pbGFyIHRvIHRoZSB1bmRlcmx5aW5nIEltYWdlQnVmZmVyIG9m
IHRoZSBHcmFwaGljc0NvbnRleHQsCisgICAgICAgIHRoZW4gR3JhcGhpY3NDb250ZXh0OjpjbGlw
VG9EcmF3aW5nQ29tbWFuZHMoKSBpcyBub3QgbmVlZGVkLiAKKworICAgICAgICAqIGh0bWwvY2Fu
dmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6ZHJhd1RleHRVbmNoZWNrZWQpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQ6OmNsaXBUb0RyYXdpbmdDb21tYW5kcyk6IERlbGV0ZWQuCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvTnVsbEdyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6OmFwcGVuZCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZTo6YXBwbHkpOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGU6OmRlc3Ryb3kpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGU6OnNhZmVDb3B5IGNvbnN0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6c2l6ZU9mSXRlbUluQnl0ZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OmlzRHJhd2luZ0l0ZW0pOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OmlzSW5saW5lSXRlbSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6b3BlcmF0b3I8PCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kczo6QmVnaW5DbGlwVG9E
cmF3aW5nQ29tbWFuZHMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOjp+QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHMp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkJlZ2luQ2xpcFRvRHJh
d2luZ0NvbW1hbmRzOjpkZXN0aW5hdGlvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM6OmNvbG9yU3BhY2Ug
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkJlZ2luQ2xp
cFRvRHJhd2luZ0NvbW1hbmRzOjplbmNvZGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOjpkZWNvZGUpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkVuZENsaXBUb0RyYXdpbmdD
b21tYW5kczo6RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM6OmRlc3RpbmF0aW9u
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6UmVjb3JkZXI6OmNsaXBUb0RyYXdpbmdDb21tYW5kcyk6IERlbGV0ZWQuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRl
ckltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6
cmVjb3JkQmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHMpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkRW5kQ2xpcFRvRHJhd2luZ0Nv
bW1hbmRzKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZWNvcmRlckltcGwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6UmVwbGF5ZXI6OlJlcGxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpSZXBsYXllcjo6YXBwbHlJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpSZXBsYXllcjo6Y29udGV4dCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXllcjo6RGVsZWdhdGU6OmFwcGx5KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXllcjo6RGVsZWdhdGU6OmRpZENyZWF0
ZU1hc2tJbWFnZUJ1ZmZlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6UmVwbGF5ZXI6OkRlbGVnYXRlOjpkaWRSZXNldE1hc2tJbWFnZUJ1ZmZlcik6IERlbGV0ZWQu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9P
cGVyYXRpb25SZWNvcmRlci5jcHA6CisgICAgICAgIChOaWNvc2lhOjpDYWlyb09wZXJhdGlvblJl
Y29yZGVyOjpjbGlwVG9EcmF3aW5nQ29tbWFuZHMpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIu
aDoKKwogMjAyMi0wMS0yOCAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbR1BVIFByb2Nlc3NdIE1vdmUgSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVJ
bWFnZUJ1ZmZlcigpIHRvIEdyYXBoaWNzQ29udGV4dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcAppbmRl
eCBlZWNhNTI2ODU4NTMuLjU3YmFmNmQ3Mzg2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKQEAg
LTI0NTgsMzMgKzI0NTgsMzMgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpk
cmF3VGV4dFVuY2hlY2tlZChjb25zdCBUZXh0UnVuJiB0ZXh0UnVuLCBkb3UKICAgICAgICAgICAg
IGZvbnRQcm94eS5kcmF3QmlkaVRleHQoKmMsIHRleHRSdW4sIGxvY2F0aW9uICsgb2Zmc2V0LCBG
b250Q2FzY2FkZTo6VXNlRmFsbGJhY2tJZkZvbnROb3RSZWFkeSk7CiAgICAgICAgIH0KIAotICAg
ICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmMpOworICAgICAgICBh
dXRvIG1hc2tJbWFnZSA9IGMtPmNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcihtYXNrUmVjdC5z
aXplKCkpOworICAgICAgICBpZiAoIW1hc2tJbWFnZSkKKyAgICAgICAgICAgIHJldHVybjsKIAot
ICAgICAgICBhdXRvIHBhaW50TWFza0ltYWdlID0gWyZdIChHcmFwaGljc0NvbnRleHQmIG1hc2tJ
bWFnZUNvbnRleHQpIHsKLSAgICAgICAgICAgIGlmIChmaWxsKQotICAgICAgICAgICAgICAgIG1h
c2tJbWFnZUNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjpibGFjayk7Ci0gICAgICAgICAgICBl
bHNlIHsKLSAgICAgICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LnNldFN0cm9rZUNvbG9yKENv
bG9yOjpibGFjayk7Ci0gICAgICAgICAgICAgICAgbWFza0ltYWdlQ29udGV4dC5zZXRTdHJva2VU
aGlja25lc3MoYy0+c3Ryb2tlVGhpY2tuZXNzKCkpOwotICAgICAgICAgICAgfQorICAgICAgICBh
dXRvJiBtYXNrSW1hZ2VDb250ZXh0ID0gbWFza0ltYWdlLT5jb250ZXh0KCk7CiAKLSAgICAgICAg
ICAgIG1hc2tJbWFnZUNvbnRleHQuc2V0VGV4dERyYXdpbmdNb2RlKGZpbGwgPyBUZXh0RHJhd2lu
Z01vZGU6OkZpbGwgOiBUZXh0RHJhd2luZ01vZGU6OlN0cm9rZSk7CisgICAgICAgIGlmIChmaWxs
KQorICAgICAgICAgICAgbWFza0ltYWdlQ29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNr
KTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LnNldFN0cm9r
ZUNvbG9yKENvbG9yOjpibGFjayk7CisgICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LnNldFN0
cm9rZVRoaWNrbmVzcyhjLT5zdHJva2VUaGlja25lc3MoKSk7CisgICAgICAgIH0KIAotICAgICAg
ICAgICAgaWYgKHVzZU1heFdpZHRoKSB7Ci0gICAgICAgICAgICAgICAgbWFza0ltYWdlQ29udGV4
dC50cmFuc2xhdGUobG9jYXRpb24gLSBtYXNrUmVjdC5sb2NhdGlvbigpKTsKLSAgICAgICAgICAg
ICAgICAvLyBXZSBkcmF3IHdoZW4gZm9udFdpZHRoIGlzIDAgc28gY29tcG9zaXRpbmcgb3BlcmF0
aW9ucyAoZWcsIGEgImNvcHkiIG9wKSBzdGlsbCB3b3JrLgotICAgICAgICAgICAgICAgIG1hc2tJ
bWFnZUNvbnRleHQuc2NhbGUoRmxvYXRTaXplKChmb250V2lkdGggPiAwID8gKHdpZHRoIC8gZm9u
dFdpZHRoKSA6IDApLCAxKSk7Ci0gICAgICAgICAgICAgICAgZm9udFByb3h5LmRyYXdCaWRpVGV4
dChtYXNrSW1hZ2VDb250ZXh0LCB0ZXh0UnVuLCBGbG9hdFBvaW50KDAsIDApLCBGb250Q2FzY2Fk
ZTo6VXNlRmFsbGJhY2tJZkZvbnROb3RSZWFkeSk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgICAgIG1hc2tJbWFnZUNvbnRleHQudHJhbnNsYXRlKC1tYXNrUmVjdC5sb2NhdGlv
bigpKTsKLSAgICAgICAgICAgICAgICBmb250UHJveHkuZHJhd0JpZGlUZXh0KG1hc2tJbWFnZUNv
bnRleHQsIHRleHRSdW4sIGxvY2F0aW9uLCBGb250Q2FzY2FkZTo6VXNlRmFsbGJhY2tJZkZvbnRO
b3RSZWFkeSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH07CisgICAgICAgIG1hc2tJbWFnZUNv
bnRleHQuc2V0VGV4dERyYXdpbmdNb2RlKGZpbGwgPyBUZXh0RHJhd2luZ01vZGU6OkZpbGwgOiBU
ZXh0RHJhd2luZ01vZGU6OlN0cm9rZSk7CiAKLSAgICAgICAgLy8gRklYTUU6IEhhbmRsaW5nIGdy
YWRpZW50cyBhbmQgcGF0dGVybnMgYnkgcGFpbnRpbmcgdGhlIHRleHQgaW50byBhIG1hc2sgaXMg
cHJvYmFibHkgdGhlIHdyb25nIHRoaW5nIHRvIGRvIGluIHRoZSBwcmVzZW5jZSBvZiBjb2xvciBn
bHlwaHMuCi0gICAgICAgIGlmIChjLT5jbGlwVG9EcmF3aW5nQ29tbWFuZHMobWFza1JlY3QsIGNv
bG9yU3BhY2UoKSwgV1RGTW92ZShwYWludE1hc2tJbWFnZSkpID09IEdyYXBoaWNzQ29udGV4dDo6
Q2xpcFRvRHJhd2luZ0NvbW1hbmRzUmVzdWx0OjpGYWlsZWRUb0NyZWF0ZUltYWdlQnVmZmVyKQot
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAodXNlTWF4V2lkdGgpIHsKKyAgICAgICAg
ICAgIG1hc2tJbWFnZUNvbnRleHQudHJhbnNsYXRlKGxvY2F0aW9uIC0gbWFza1JlY3QubG9jYXRp
b24oKSk7CisgICAgICAgICAgICAvLyBXZSBkcmF3IHdoZW4gZm9udFdpZHRoIGlzIDAgc28gY29t
cG9zaXRpbmcgb3BlcmF0aW9ucyAoZWcsIGEgImNvcHkiIG9wKSBzdGlsbCB3b3JrLgorICAgICAg
ICAgICAgbWFza0ltYWdlQ29udGV4dC5zY2FsZShGbG9hdFNpemUoKGZvbnRXaWR0aCA+IDAgPyAo
d2lkdGggLyBmb250V2lkdGgpIDogMCksIDEpKTsKKyAgICAgICAgICAgIGZvbnRQcm94eS5kcmF3
QmlkaVRleHQobWFza0ltYWdlQ29udGV4dCwgdGV4dFJ1biwgRmxvYXRQb2ludCgwLCAwKSwgRm9u
dENhc2NhZGU6OlVzZUZhbGxiYWNrSWZGb250Tm90UmVhZHkpOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgbWFza0ltYWdlQ29udGV4dC50cmFuc2xhdGUoLW1hc2tSZWN0LmxvY2F0aW9u
KCkpOworICAgICAgICAgICAgZm9udFByb3h5LmRyYXdCaWRpVGV4dChtYXNrSW1hZ2VDb250ZXh0
LCB0ZXh0UnVuLCBsb2NhdGlvbiwgRm9udENhc2NhZGU6OlVzZUZhbGxiYWNrSWZGb250Tm90UmVh
ZHkpOworICAgICAgICB9CiAKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0
ZVNhdmVyKCpjKTsKKyAgICAgICAgYy0+Y2xpcFRvSW1hZ2VCdWZmZXIoKm1hc2tJbWFnZSwgbWFz
a1JlY3QpOwogICAgICAgICBkcmF3U3R5bGUuYXBwbHlGaWxsQ29sb3IoKmMpOwogICAgICAgICBj
LT5maWxsUmVjdChtYXNrUmVjdCk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCmluZGV4IDA2OTdj
MzllOGJlMS4uZTA4ZDY3ODMxNWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKQEAgLTc0NCwxNyArNzQ0LDYgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBPdXRSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRS
ZWN0JiByZWN0KQogICAgIGNsaXBPdXQocGF0aCk7CiB9CiAKLUdyYXBoaWNzQ29udGV4dDo6Q2xp
cFRvRHJhd2luZ0NvbW1hbmRzUmVzdWx0IEdyYXBoaWNzQ29udGV4dDo6Y2xpcFRvRHJhd2luZ0Nv
bW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IERlc3RpbmF0aW9uQ29s
b3JTcGFjZSYgY29sb3JTcGFjZSwgRnVuY3Rpb248dm9pZChHcmFwaGljc0NvbnRleHQmKT4mJiBk
cmF3aW5nRnVuY3Rpb24pCi17Ci0gICAgYXV0byBpbWFnZUJ1ZmZlciA9IGNyZWF0ZUNvbXBhdGli
bGVJbWFnZUJ1ZmZlcihkZXN0aW5hdGlvbi5zaXplKCksIGNvbG9yU3BhY2UpOwotICAgIGlmICgh
aW1hZ2VCdWZmZXIpCi0gICAgICAgIHJldHVybiBDbGlwVG9EcmF3aW5nQ29tbWFuZHNSZXN1bHQ6
OkZhaWxlZFRvQ3JlYXRlSW1hZ2VCdWZmZXI7Ci0KLSAgICBkcmF3aW5nRnVuY3Rpb24oaW1hZ2VC
dWZmZXItPmNvbnRleHQoKSk7Ci0gICAgY2xpcFRvSW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyLCBk
ZXN0aW5hdGlvbik7Ci0gICAgcmV0dXJuIENsaXBUb0RyYXdpbmdDb21tYW5kc1Jlc3VsdDo6U3Vj
Y2VzczsKLX0KLQogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBUb0ltYWdlQnVmZmVyKEltYWdl
QnVmZmVyJiBpbWFnZUJ1ZmZlciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvblJlY3QpCiB7
CiAgICAgaW1hZ2VCdWZmZXIuY2xpcFRvTWFzaygqdGhpcywgZGVzdGluYXRpb25SZWN0KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgK
aW5kZXggMTc1ZDBiMjExYWFlLi4yMzI5YTM4ZDk3OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCkBAIC00NjEsMTAgKzQ2MSw2
IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgY2xpcE91dFJvdW5k
ZWRSZWN0KGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmKTsKICAgICB2aXJ0dWFsIHZvaWQgY2xpcFBh
dGgoY29uc3QgUGF0aCYsIFdpbmRSdWxlID0gV2luZFJ1bGU6OkV2ZW5PZGQpID0gMDsKICAgICBX
RUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgY2xpcFRvSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIm
LCBjb25zdCBGbG9hdFJlY3QmKTsKLQotICAgIGVudW0gY2xhc3MgQ2xpcFRvRHJhd2luZ0NvbW1h
bmRzUmVzdWx0IDogYm9vbCB7IFN1Y2Nlc3MsIEZhaWxlZFRvQ3JlYXRlSW1hZ2VCdWZmZXIgfTsK
LSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIENsaXBUb0RyYXdpbmdDb21tYW5kc1Jlc3VsdCBj
bGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3Qg
RGVzdGluYXRpb25Db2xvclNwYWNlJiwgRnVuY3Rpb248dm9pZChHcmFwaGljc0NvbnRleHQmKT4m
Jik7Ci0KICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIEludFJlY3QgY2xpcEJvdW5kcygpIGNv
bnN0OwogCiAgICAgLy8gVGV4dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTnVsbEdyYXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTnVsbEdyYXBoaWNzQ29udGV4dC5oCmluZGV4IDIxZDIwYzcxNzlmMi4uZDBmOTYz
NWRjZDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OdWxs
R3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TnVsbEdyYXBoaWNzQ29udGV4dC5oCkBAIC0xMzEsOCArMTMxLDYgQEAgcHJpdmF0ZToKIAogICAg
IHZvaWQgY2xpcFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmKSBmaW5hbCB7IH0K
ICAgICB2b2lkIGNsaXBPdXRSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JikgZmlu
YWwgeyB9Ci0KLSAgICBDbGlwVG9EcmF3aW5nQ29tbWFuZHNSZXN1bHQgY2xpcFRvRHJhd2luZ0Nv
bW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIEZ1
bmN0aW9uPHZvaWQoR3JhcGhpY3NDb250ZXh0Jik+JiYpIGZpbmFsIHsgcmV0dXJuIENsaXBUb0Ry
YXdpbmdDb21tYW5kc1Jlc3VsdDo6U3VjY2VzczsgfQogICAgIHZvaWQgY2xpcFRvSW1hZ2VCdWZm
ZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmKSBmaW5hbCB7IH0KIAogICAgIHZvaWQg
ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiwgR3JhZGllbnQmKSBmaW5hbCB7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3QuY3BwCmluZGV4IGQ5YjBlZGRjMjY4Yy4uMzAyNWZmZWM5ZDViIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdC5jcHAKQEAgLTI0MCwxMCArMjQwLDYgQEAgdm9pZCBEaXNwbGF5TGlz
dDo6YXBwZW5kKEl0ZW1IYW5kbGUgaXRlbSkKICAgICAgICAgcmV0dXJuIGFwcGVuZDxDbGlwT3V0
VG9QYXRoPihpdGVtLmdldDxDbGlwT3V0VG9QYXRoPigpKTsKICAgICBjYXNlIEl0ZW1UeXBlOjpD
bGlwUGF0aDoKICAgICAgICAgcmV0dXJuIGFwcGVuZDxDbGlwUGF0aD4oaXRlbS5nZXQ8Q2xpcFBh
dGg+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOgot
ICAgICAgICByZXR1cm4gYXBwZW5kPEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPihpdGVtLmdl
dDxCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcz4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RW5k
Q2xpcFRvRHJhd2luZ0NvbW1hbmRzOgotICAgICAgICByZXR1cm4gYXBwZW5kPEVuZENsaXBUb0Ry
YXdpbmdDb21tYW5kcz4oaXRlbS5nZXQ8RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPigpKTsKICAg
ICBjYXNlIEl0ZW1UeXBlOjpEcmF3RmlsdGVyZWRJbWFnZUJ1ZmZlcjoKICAgICAgICAgcmV0dXJu
IGFwcGVuZDxEcmF3RmlsdGVyZWRJbWFnZUJ1ZmZlcj4oaXRlbS5nZXQ8RHJhd0ZpbHRlcmVkSW1h
Z2VCdWZmZXI+KCkpOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdHbHlwaHM6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJdGVtQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwCmluZGV4IDQ2M2IxMzQ2ZGMzNy4uNzgy
Zjg4OWFiMDYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNw
cApAQCAtMTA5LDEyICsxMDksNiBAQCB2b2lkIEl0ZW1IYW5kbGU6OmFwcGx5KEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCkKICAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwUGF0aDoKICAgICAgICAgZ2V0
PENsaXBQYXRoPigpLmFwcGx5KGNvbnRleHQpOwogICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM6Ci0gICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6RW5kQ2xpcFRv
RHJhd2luZ0NvbW1hbmRzOgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAg
cmV0dXJuOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdGaWx0ZXJlZEltYWdlQnVmZmVyOgogICAg
ICAgICBnZXQ8RHJhd0ZpbHRlcmVkSW1hZ2VCdWZmZXI+KCkuYXBwbHkoY29udGV4dCk7CiAgICAg
ICAgIHJldHVybjsKQEAgLTMyMiw5ICszMTYsNiBAQCB2b2lkIEl0ZW1IYW5kbGU6OmRlc3Ryb3ko
KQogICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxB
cHBseVN0cm9rZVBhdHRlcm4+Ojp2YWx1ZSk7CiAgICAgICAgIHJldHVybjsKICNlbmRpZgotICAg
IGNhc2UgSXRlbVR5cGU6OkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOgotICAgICAgICBnZXQ8
QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM+KCkufkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRz
KCk7Ci0gICAgICAgIHJldHVybjsKICAgICBjYXNlIEl0ZW1UeXBlOjpCZWdpblRyYW5zcGFyZW5j
eUxheWVyOgogICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0
aWJsZTxCZWdpblRyYW5zcGFyZW5jeUxheWVyPjo6dmFsdWUpOwogICAgICAgICByZXR1cm47CkBA
IC0zNjcsOSArMzU4LDYgQEAgdm9pZCBJdGVtSGFuZGxlOjpkZXN0cm95KCkKICAgICBjYXNlIEl0
ZW1UeXBlOjpEcmF3UmVjdDoKICAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxs
eV9kZXN0cnVjdGlibGU8RHJhd1JlY3Q+Ojp2YWx1ZSk7CiAgICAgICAgIHJldHVybjsKLSAgICBj
YXNlIEl0ZW1UeXBlOjpFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM6Ci0gICAgICAgIHN0YXRpY19h
c3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPEVuZENsaXBUb0RyYXdpbmdDb21t
YW5kcz46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgSXRlbVR5cGU6OkVuZFRy
YW5zcGFyZW5jeUxheWVyOgogICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5
X2Rlc3RydWN0aWJsZTxFbmRUcmFuc3BhcmVuY3lMYXllcj46OnZhbHVlKTsKICAgICAgICAgcmV0
dXJuOwpAQCAtNTQ2LDggKzUzNCw2IEBAIGJvb2wgSXRlbUhhbmRsZTo6c2FmZUNvcHkoSXRlbVR5
cGUgaXRlbVR5cGUsIEl0ZW1IYW5kbGUgZGVzdGluYXRpb24pIGNvbnN0CiAgICAgY2FzZSBJdGVt
VHlwZTo6QXBwbHlTdHJva2VQYXR0ZXJuOgogICAgICAgICByZXR1cm4gY29weUludG88QXBwbHlT
dHJva2VQYXR0ZXJuPihpdGVtT2Zmc2V0LCAqdGhpcyk7CiAjZW5kaWYKLSAgICBjYXNlIEl0ZW1U
eXBlOjpCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kczoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRv
PEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPihpdGVtT2Zmc2V0LCAqdGhpcyk7CiAgICAgY2Fz
ZSBJdGVtVHlwZTo6QmVnaW5UcmFuc3BhcmVuY3lMYXllcjoKICAgICAgICAgcmV0dXJuIGNvcHlJ
bnRvPEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXI+KGl0ZW1PZmZzZXQsICp0aGlzKTsKICAgICBjYXNl
IEl0ZW1UeXBlOjpDbGVhclJlY3Q6CkBAIC01NzAsOCArNTU2LDYgQEAgYm9vbCBJdGVtSGFuZGxl
OjpzYWZlQ29weShJdGVtVHlwZSBpdGVtVHlwZSwgSXRlbUhhbmRsZSBkZXN0aW5hdGlvbikgY29u
c3QKICAgICAgICAgcmV0dXJuIGNvcHlJbnRvPERyYXdMaW5lPihpdGVtT2Zmc2V0LCAqdGhpcyk7
CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1JlY3Q6CiAgICAgICAgIHJldHVybiBjb3B5SW50bzxE
cmF3UmVjdD4oaXRlbU9mZnNldCwgKnRoaXMpOwotICAgIGNhc2UgSXRlbVR5cGU6OkVuZENsaXBU
b0RyYXdpbmdDb21tYW5kczoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPEVuZENsaXBUb0RyYXdp
bmdDb21tYW5kcz4oaXRlbU9mZnNldCwgKnRoaXMpOwogICAgIGNhc2UgSXRlbVR5cGU6OkVuZFRy
YW5zcGFyZW5jeUxheWVyOgogICAgICAgICByZXR1cm4gY29weUludG88RW5kVHJhbnNwYXJlbmN5
TGF5ZXI+KGl0ZW1PZmZzZXQsICp0aGlzKTsKICAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsRWxsaXBz
ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmNwcAppbmRleCBkZmExZTc0
ZmIyNDguLmY2NzdhNmRhMzk5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1U
eXBlLmNwcApAQCAtNzYsMTAgKzc2LDYgQEAgc3RhdGljIHNpemVfdCBzaXplT2ZJdGVtSW5CeXRl
cyhJdGVtVHlwZSB0eXBlKQogICAgICAgICByZXR1cm4gc2l6ZW9mKENsaXBPdXRUb1BhdGgpOwog
ICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBQYXRoOgogICAgICAgICByZXR1cm4gc2l6ZW9mKENsaXBQ
YXRoKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kczoKLSAg
ICAgICAgcmV0dXJuIHNpemVvZihCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcyk7Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOgotICAgICAgICByZXR1cm4gc2l6
ZW9mKEVuZENsaXBUb0RyYXdpbmdDb21tYW5kcyk7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0Zp
bHRlcmVkSW1hZ2VCdWZmZXI6CiAgICAgICAgIHJldHVybiBzaXplb2YoRHJhd0ZpbHRlcmVkSW1h
Z2VCdWZmZXIpOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdHbHlwaHM6CkBAIC0xOTQsOCArMTkw
LDYgQEAgYm9vbCBpc0RyYXdpbmdJdGVtKEl0ZW1UeXBlIHR5cGUpCiAgICAgY2FzZSBJdGVtVHlw
ZTo6Q2xpcFRvSW1hZ2VCdWZmZXI6CiAgICAgY2FzZSBJdGVtVHlwZTo6Q2xpcE91dFRvUGF0aDoK
ICAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwUGF0aDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpCZWdpbkNs
aXBUb0RyYXdpbmdDb21tYW5kczoKLSAgICBjYXNlIEl0ZW1UeXBlOjpFbmRDbGlwVG9EcmF3aW5n
Q29tbWFuZHM6CiAgICAgY2FzZSBJdGVtVHlwZTo6Q29uY2F0ZW5hdGVDVE06CiAgICAgY2FzZSBJ
dGVtVHlwZTo6Rmx1c2hDb250ZXh0OgogICAgIGNhc2UgSXRlbVR5cGU6OlJlc3RvcmU6CkBAIC0y
OTAsNyArMjg0LDYgQEAgYm9vbCBpc0lubGluZUl0ZW0oSXRlbVR5cGUgdHlwZSkKICAgICAgKiBh
bmQgKDMpIGFsbCB0aGUgInN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0lubGluZUl0ZW0icyBpbnNp
ZGUgdGhlIGluZGl2aWR1YWwgaXRlbSBjbGFzc2VzLiAqLwogCiAgICAgc3dpdGNoICh0eXBlKSB7
Ci0gICAgY2FzZSBJdGVtVHlwZTo6QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM6CiAgICAgY2Fz
ZSBJdGVtVHlwZTo6Q2xpcE91dFRvUGF0aDoKICAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwUGF0aDoK
ICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3Rm9jdXNSaW5nUGF0aDoKQEAgLTMyMSw3ICszMTQsNiBA
QCBib29sIGlzSW5saW5lSXRlbShJdGVtVHlwZSB0eXBlKQogICAgIGNhc2UgSXRlbVR5cGU6OkNs
aXA6CiAgICAgY2FzZSBJdGVtVHlwZTo6Q2xpcE91dDoKICAgICBjYXNlIEl0ZW1UeXBlOjpDbGlw
VG9JbWFnZUJ1ZmZlcjoKLSAgICBjYXNlIEl0ZW1UeXBlOjpFbmRDbGlwVG9EcmF3aW5nQ29tbWFu
ZHM6CiAgICAgY2FzZSBJdGVtVHlwZTo6Q29uY2F0ZW5hdGVDVE06CiAgICAgY2FzZSBJdGVtVHlw
ZTo6RHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlcjoKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3RWxs
aXBzZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5oCmluZGV4IDkxZjNmNWY1
Mjg4Yi4uYWQ5YmRlNGU3YjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBl
LmgKQEAgLTUwLDggKzUwLDYgQEAgZW51bSBjbGFzcyBJdGVtVHlwZSA6IHVpbnQ4X3QgewogICAg
IENsaXBUb0ltYWdlQnVmZmVyLAogICAgIENsaXBPdXRUb1BhdGgsCiAgICAgQ2xpcFBhdGgsCi0g
ICAgQmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHMsCi0gICAgRW5kQ2xpcFRvRHJhd2luZ0NvbW1h
bmRzLAogICAgIERyYXdGaWx0ZXJlZEltYWdlQnVmZmVyLAogICAgIERyYXdHbHlwaHMsCiAgICAg
RHJhd0ltYWdlQnVmZmVyLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCmluZGV4
IDMxYWM4YjRhZDdkYi4uNTdmOWI5MGZmY2FmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlbXMuY3BwCkBAIC0yODcsMTkgKzI4Nyw2IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRv
cjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBDbGlwUGF0aCYgaXRlbSkKICAgICByZXR1cm4gdHM7
CiB9CiAKLXN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25z
dCBCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcyYgaXRlbSkKLXsKLSAgICB0cy5kdW1wUHJvcGVy
dHkoImRlc3RpbmF0aW9uIiwgaXRlbS5kZXN0aW5hdGlvbigpKTsKLSAgICB0cy5kdW1wUHJvcGVy
dHkoImNvbG9yLXNwYWNlIiwgaXRlbS5jb2xvclNwYWNlKCkpOwotICAgIHJldHVybiB0czsKLX0K
LQotc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEVu
ZENsaXBUb0RyYXdpbmdDb21tYW5kcyYgaXRlbSkKLXsKLSAgICB0cy5kdW1wUHJvcGVydHkoImRl
c3RpbmF0aW9uIiwgaXRlbS5kZXN0aW5hdGlvbigpKTsKLSAgICByZXR1cm4gdHM7Ci19Ci0KIERy
YXdGaWx0ZXJlZEltYWdlQnVmZmVyOjpEcmF3RmlsdGVyZWRJbWFnZUJ1ZmZlcihzdGQ6Om9wdGlv
bmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gc291cmNlSW1hZ2VJZGVudGlmaWVyLCBj
b25zdCBGbG9hdFJlY3QmIHNvdXJjZUltYWdlUmVjdCwgRmlsdGVyJiBmaWx0ZXIpCiAgICAgOiBt
X3NvdXJjZUltYWdlSWRlbnRpZmllcihzb3VyY2VJbWFnZUlkZW50aWZpZXIpCiAgICAgLCBtX3Nv
dXJjZUltYWdlUmVjdChzb3VyY2VJbWFnZVJlY3QpCkBAIC0xMDgyLDggKzEwNjksNiBAQCBzdGF0
aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgSXRlbVR5cGUgdHlwZSkK
ICAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwVG9JbWFnZUJ1ZmZlcjogdHMgPDwgImNsaXAtdG8taW1h
Z2UtYnVmZmVyIjsgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6Q2xpcE91dFRvUGF0aDogdHMg
PDwgImNsaXAtb3V0LXRvLXBhdGgiOyBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwUGF0
aDogdHMgPDwgImNsaXAtcGF0aCI7IGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2luQ2xp
cFRvRHJhd2luZ0NvbW1hbmRzOiB0cyA8PCAiYmVnaW4tY2xpcC10by1kcmF3aW5nLWNvbW1hbmRz
OiI7IGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkVuZENsaXBUb0RyYXdpbmdDb21tYW5kczog
dHMgPDwgImVuZC1jbGlwLXRvLWRyYXdpbmctY29tbWFuZHMiOyBicmVhazsKICAgICBjYXNlIEl0
ZW1UeXBlOjpEcmF3RmlsdGVyZWRJbWFnZUJ1ZmZlcjogdHMgPDwgImRyYXctZmlsdGVyZWQtaW1h
Z2UtYnVmZmVyIjsgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0dseXBoczogdHMgPDwg
ImRyYXctZ2x5cGhzIjsgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ltYWdlQnVmZmVy
OiB0cyA8PCAiZHJhdy1pbWFnZS1idWZmZXIiOyBicmVhazsKQEAgLTExOTgsMTIgKzExODMsNiBA
QCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBJdGVtSGFuZGxlIGl0ZW0p
CiAgICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFBhdGg6CiAgICAgICAgIHRzIDw8IGl0ZW0uZ2V0PENs
aXBQYXRoPigpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpCZWdpbkNsaXBU
b0RyYXdpbmdDb21tYW5kczoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8QmVnaW5DbGlwVG9EcmF3
aW5nQ29tbWFuZHM+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkVuZENs
aXBUb0RyYXdpbmdDb21tYW5kczoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RW5kQ2xpcFRvRHJh
d2luZ0NvbW1hbmRzPigpOwotICAgICAgICBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3
RmlsdGVyZWRJbWFnZUJ1ZmZlcjoKICAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RHJhd0ZpbHRlcmVk
SW1hZ2VCdWZmZXI+KCk7CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1zLmgKaW5kZXggZWYwYzE4NzdkMTkzLi5lZmI1MWQyYmE0YzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1z
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SXRlbXMuaApAQCAtODQ0LDc0ICs4NDQsNiBAQCBzdGQ6Om9wdGlvbmFsPENsaXBQ
YXRoPiBDbGlwUGF0aDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgcmV0dXJuIHt7IFdU
Rk1vdmUoKnBhdGgpLCAqd2luZFJ1bGUgfX07CiB9CiAKLWNsYXNzIEJlZ2luQ2xpcFRvRHJhd2lu
Z0NvbW1hbmRzIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgY29uc3RleHByIEl0ZW1UeXBlIGl0ZW1U
eXBlID0gSXRlbVR5cGU6OkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOwotICAgIHN0YXRpYyBj
b25zdGV4cHIgYm9vbCBpc0lubGluZUl0ZW0gPSBmYWxzZTsKLSAgICBzdGF0aWMgY29uc3RleHBy
IGJvb2wgaXNEcmF3aW5nSXRlbSA9IGZhbHNlOwotCi0gICAgQmVnaW5DbGlwVG9EcmF3aW5nQ29t
bWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgRGVzdGluYXRpb25Db2xvclNwYWNl
IGNvbG9yU3BhY2UpCi0gICAgICAgIDogbV9kZXN0aW5hdGlvbihkZXN0aW5hdGlvbikKLSAgICAg
ICAgLCBtX2NvbG9yU3BhY2UoV1RGTW92ZShjb2xvclNwYWNlKSkKLSAgICB7Ci0gICAgfQotCi0g
ICAgLy8gRXhwbGljaXQgZGVzdHJ1Y3RvciBhZGRlZCB0byBmb3JjZSBub24tdHJpdmlhbCBkZXN0
cnVjdG9yIG9uIGFsbCBwbGF0Zm9ybXMKLSAgICAvLyBhcyB0aGUgZW5jb2RpbmcgbG9naWMgY3Vy
cmVudGx5IGhhcmRjb2RlcyB3aGljaCBkaXNwbGF5IGxpc3QgaXRlbSB0eXBlcyBuZWVkCi0gICAg
Ly8gb3V0IG9mIGxpbmUgdHJlYXRtZW50IHJhdGhlciB0aGFuIHVzaW5nIHRoZSBpc0lubGluZUl0
ZW0gY29uc3RhbnQuCi0gICAgfkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKCkgeyB9Ci0KLSAg
ICBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9kZXN0aW5h
dGlvbjsgfQotICAgIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSgpIGNv
bnN0IHsgcmV0dXJuIG1fY29sb3JTcGFjZTsgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rl
cj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPiBkZWNv
ZGUoRGVjb2RlciYpOwotCi1wcml2YXRlOgotICAgIEZsb2F0UmVjdCBtX2Rlc3RpbmF0aW9uOwot
ICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBtX2NvbG9yU3BhY2U7Ci19OwotCi10ZW1wbGF0ZTxj
bGFzcyBFbmNvZGVyPgotdm9pZCBCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kczo6ZW5jb2RlKEVu
Y29kZXImIGVuY29kZXIpIGNvbnN0Ci17Ci0gICAgZW5jb2RlciA8PCBtX2Rlc3RpbmF0aW9uOwot
ICAgIGVuY29kZXIgPDwgbV9jb2xvclNwYWNlOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBEZWNvZGVy
Pgotc3RkOjpvcHRpb25hbDxCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcz4gQmVnaW5DbGlwVG9E
cmF3aW5nQ29tbWFuZHM6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQotewotICAgIHN0ZDo6b3B0
aW9uYWw8RmxvYXRSZWN0PiBkZXN0aW5hdGlvbjsKLSAgICBkZWNvZGVyID4+IGRlc3RpbmF0aW9u
OwotICAgIGlmICghZGVzdGluYXRpb24pCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0K
LSAgICBzdGQ6Om9wdGlvbmFsPERlc3RpbmF0aW9uQ29sb3JTcGFjZT4gY29sb3JTcGFjZTsKLSAg
ICBkZWNvZGVyID4+IGNvbG9yU3BhY2U7Ci0gICAgaWYgKCFjb2xvclNwYWNlKQotICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgcmV0dXJuIHt7ICpkZXN0aW5hdGlvbiwgV1RGTW92
ZSgqY29sb3JTcGFjZSkgfX07Ci19Ci0KLWNsYXNzIEVuZENsaXBUb0RyYXdpbmdDb21tYW5kcyB7
Ci1wdWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBJdGVtVHlwZSBpdGVtVHlwZSA9IEl0ZW1U
eXBlOjpFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBib29s
IGlzSW5saW5lSXRlbSA9IHRydWU7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzRHJhd2lu
Z0l0ZW0gPSBmYWxzZTsKLQotICAgIEVuZENsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9h
dFJlY3QmIGRlc3RpbmF0aW9uKQotICAgICAgICA6IG1fZGVzdGluYXRpb24oZGVzdGluYXRpb24p
Ci0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24oKSBjb25z
dCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uOyB9Ci0KLXByaXZhdGU6Ci0gICAgRmxvYXRSZWN0IG1f
ZGVzdGluYXRpb247Ci19OwotCiBjbGFzcyBEcmF3RmlsdGVyZWRJbWFnZUJ1ZmZlciB7CiBwdWJs
aWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBJdGVtVHlwZSBpdGVtVHlwZSA9IEl0ZW1UeXBlOjpE
cmF3RmlsdGVyZWRJbWFnZUJ1ZmZlcjsKQEAgLTI0MTYsNyArMjM0OCw2IEBAIHByaXZhdGU6CiAK
IHVzaW5nIERpc3BsYXlMaXN0SXRlbSA9IHN0ZDo6dmFyaWFudAogICAgIDwgQXBwbHlEZXZpY2VT
Y2FsZUZhY3RvcgotICAgICwgQmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHMKICAgICAsIEJlZ2lu
VHJhbnNwYXJlbmN5TGF5ZXIKICAgICAsIENsZWFyUmVjdAogICAgICwgQ2xlYXJTaGFkb3cKQEAg
LTI0MzksNyArMjM3MCw2IEBAIHVzaW5nIERpc3BsYXlMaXN0SXRlbSA9IHN0ZDo6dmFyaWFudAog
ICAgICwgRHJhd1BhdGgKICAgICAsIERyYXdQYXR0ZXJuCiAgICAgLCBEcmF3UmVjdAotICAgICwg
RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzCiAgICAgLCBFbmRUcmFuc3BhcmVuY3lMYXllcgogICAg
ICwgRmlsbENvbXBvc2l0ZWRSZWN0CiAgICAgLCBGaWxsRWxsaXBzZQpAQCAtMjUyNSw4ICsyNDU1
LDYgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
SXRlbVR5cGU+IHsKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkNsaXBUb0lt
YWdlQnVmZmVyLAogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Q2xpcE91dFRv
UGF0aCwKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkNsaXBQYXRoLAotICAg
IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFu
ZHMsCi0gICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpFbmRDbGlwVG9EcmF3aW5n
Q29tbWFuZHMsCiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3R2x5cGhz
LAogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0ltYWdlQnVmZmVyLAog
ICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0UmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCmluZGV4IDg5ZjNkMzUzZGE3Yi4u
YWUzZDczNTA0M2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3Bw
CkBAIC00ODYsMjcgKzQ4Niw2IEBAIHZvaWQgUmVjb3JkZXI6OmNsaXBUb0ltYWdlQnVmZmVyKElt
YWdlQnVmZmVyJiBpbWFnZUJ1ZmZlciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0CiAgICAgcmVjb3Jk
Q2xpcFRvSW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIucmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KCksIGRlc3RSZWN0KTsKIH0KIAotR3JhcGhpY3NDb250ZXh0OjpDbGlwVG9EcmF3aW5nQ29tbWFu
ZHNSZXN1bHQgUmVjb3JkZXI6OmNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3Qm
IGRlc3RpbmF0aW9uLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIEZ1
bmN0aW9uPHZvaWQoR3JhcGhpY3NDb250ZXh0Jik+JiYgZHJhd2luZ0Z1bmN0aW9uKQotewotICAg
IGF1dG8gaW5pdGlhbENsaXAgPSBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBkZXN0aW5hdGlvbi5z
aXplKCkpOwotCi0gICAgLy8gVGhlIGluaXRpYWwgQ1RNIG1hdGNoZXMgSW1hZ2VCdWZmZXIncyBp
bml0aWFsIENUTS4KLSAgICBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtID0gZ2V0Q1RNKEdyYXBo
aWNzQ29udGV4dDo6RGVmaW5pdGVseUluY2x1ZGVEZXZpY2VTY2FsZSk7Ci0gICAgRmxvYXRTaXpl
IHNjYWxlRmFjdG9yKHRyYW5zZm9ybS54U2NhbGUoKSwgdHJhbnNmb3JtLnlTY2FsZSgpKTsKLSAg
ICBhdXRvIHNjYWxlZFNpemUgPSBleHBhbmRlZEludFNpemUoZGVzdGluYXRpb24uc2l6ZSgpICog
c2NhbGVGYWN0b3IpOwotICAgIEFmZmluZVRyYW5zZm9ybSBpbml0aWFsQ1RNOwotICAgIGluaXRp
YWxDVE0uc2NhbGUoMSwgLTEpOwotICAgIGluaXRpYWxDVE0udHJhbnNsYXRlKDAsIC1zY2FsZWRT
aXplLmhlaWdodCgpKTsKLSAgICBpbml0aWFsQ1RNLnNjYWxlKHNjYWxlZFNpemUgLyBkZXN0aW5h
dGlvbi5zaXplKCkpOwotCi0gICAgYXV0byBuZXN0ZWRDb250ZXh0ID0gY3JlYXRlTmVzdGVkQ29u
dGV4dChpbml0aWFsQ2xpcCwgaW5pdGlhbENUTSk7Ci0gICAgcmVjb3JkQmVnaW5DbGlwVG9EcmF3
aW5nQ29tbWFuZHMoZGVzdGluYXRpb24sIGNvbG9yU3BhY2UpOwotICAgIGRyYXdpbmdGdW5jdGlv
bigqbmVzdGVkQ29udGV4dCk7Ci0gICAgcmVjb3JkRW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKGRl
c3RpbmF0aW9uKTsKLQotICAgIHJldHVybiBDbGlwVG9EcmF3aW5nQ29tbWFuZHNSZXN1bHQ6OlN1
Y2Nlc3M7Ci19Ci0KICNpZiBFTkFCTEUoVklERU8pCiB2b2lkIFJlY29yZGVyOjpwYWludEZyYW1l
Rm9yTWVkaWEoTWVkaWFQbGF5ZXImIHBsYXllciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlv
bikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCmluZGV4IDliMmIwYjkz
NzkwMS4uOWU3YmU1MGVlNzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVy
LmgKQEAgLTg5LDggKzg5LDYgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCByZWNvcmRD
bGlwVG9JbWFnZUJ1ZmZlcihSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgaW1hZ2VCdWZmZXJJ
ZGVudGlmaWVyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uUmVjdCkgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCByZWNvcmRDbGlwT3V0VG9QYXRoKGNvbnN0IFBhdGgmKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIHJlY29yZENsaXBQYXRoKGNvbnN0IFBhdGgmLCBXaW5kUnVsZSkgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCByZWNvcmRCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9h
dFJlY3QmIGRlc3RpbmF0aW9uLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgcmVjb3JkRW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdGluYXRpb24pID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkRHJhd0ZpbHRlcmVkSW1h
Z2VCdWZmZXIoc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IHNvdXJj
ZUltYWdlSWRlbnRpZmllciwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2VJbWFnZVJlY3QsIEZpbHRl
ciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkRHJhd0dseXBocyhjb25zdCBGb250Jiwg
Y29uc3QgR2x5cGhCdWZmZXJHbHlwaCosIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSosIHVuc2ln
bmVkIGNvdW50LCBjb25zdCBGbG9hdFBvaW50JiBsb2NhbEFuY2hvciwgRm9udFNtb290aGluZ01v
ZGUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkRHJhd0ltYWdlQnVmZmVyKFJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciBpbWFnZUJ1ZmZlcklkZW50aWZpZXIsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmKSA9IDA7CkBAIC0xNDgsOCArMTQ2LDYgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1
YWwgYm9vbCBjYW5EcmF3SW1hZ2VCdWZmZXIoY29uc3QgSW1hZ2VCdWZmZXImKSBjb25zdCA9IDA7
CiAgICAgdmlydHVhbCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUoKSBjb25zdCA9IDA7CiAK
LSAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHQ+IGNyZWF0ZU5lc3Rl
ZENvbnRleHQoY29uc3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xpcCwgY29uc3QgQWZmaW5lVHJhbnNm
b3JtJiBpbml0aWFsQ1RNKSA9IDA7Ci0KICAgICBzdHJ1Y3QgQ29udGV4dFN0YXRlIHsKICAgICAg
ICAgQWZmaW5lVHJhbnNmb3JtIGN0bTsKICAgICAgICAgRmxvYXRSZWN0IGNsaXBCb3VuZHM7CkBA
IC0yNzMsNyArMjY5LDYgQEAgcHJpdmF0ZToKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsaXBQ
YXRoKGNvbnN0IFBhdGgmLCBXaW5kUnVsZSkgZmluYWw7CiAgICAgV0VCQ09SRV9FWFBPUlQgSW50
UmVjdCBjbGlwQm91bmRzKCkgY29uc3QgZmluYWw7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBj
bGlwVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYpIGZpbmFsOwot
ICAgIFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNzQ29udGV4dDo6Q2xpcFRvRHJhd2luZ0NvbW1hbmRz
UmVzdWx0IGNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9u
LCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29u
dGV4dCYpPiYmKSBmaW5hbDsKIAogI2lmIEVOQUJMRShWSURFTykKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHBhaW50RnJhbWVGb3JNZWRpYShNZWRpYVBsYXllciYsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdGluYXRpb24pIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29y
ZGVySW1wbC5jcHAKaW5kZXggNTAxZGE2MjYwNTY5Li4xODQ5ZWE2NGJkYjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dFJlY29yZGVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmNwcApAQCAtNTAsMTkgKzUwLDkg
QEAgUmVjb3JkZXJJbXBsOjpSZWNvcmRlckltcGwoRGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0LCBj
b25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYKICAgICBMT0dfV0lUSF9TVFJFQU0oRGlzcGxheUxp
c3RzLCBzdHJlYW0gPDwgIlxuUmVjb3JkaW5nIHdpdGggY2xpcCAiIDw8IGluaXRpYWxDbGlwKTsK
IH0KIAotUmVjb3JkZXJJbXBsOjpSZWNvcmRlckltcGwoUmVjb3JkZXJJbXBsJiBwYXJlbnQsIGNv
bnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgY29uc3QgRmxvYXRSZWN0JiBpbml0aWFs
Q2xpcCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBpbml0aWFsQ1RNKQotICAgIDogUmVjb3JkZXIo
cGFyZW50LCBzdGF0ZSwgaW5pdGlhbENsaXAsIGluaXRpYWxDVE0pCi0gICAgLCBtX2Rpc3BsYXlM
aXN0KHBhcmVudC5tX2Rpc3BsYXlMaXN0KQotICAgICwgbV9kZWxlZ2F0ZShwYXJlbnQubV9kZWxl
Z2F0ZSkKLSAgICAsIG1faXNOZXN0ZWQodHJ1ZSkKLXsKLX0KLQogUmVjb3JkZXJJbXBsOjp+UmVj
b3JkZXJJbXBsKCkKIHsKICAgICBBU1NFUlQoc3RhdGVTdGFjaygpLnNpemUoKSA9PSAxKTsgLy8g
SWYgdGhpcyBmaXJlcywgaXQgaW5kaWNhdGVzIG1pc21hdGNoZWQgc2F2ZS9yZXN0b3JlLgotICAg
IGlmICghbV9pc05lc3RlZCkKLSAgICAgICAgTE9HKERpc3BsYXlMaXN0cywgIlJlY29yZGVkIGRp
c3BsYXkgbGlzdDpcbiVzIiwgbV9kaXNwbGF5TGlzdC5kZXNjcmlwdGlvbigpLmRhdGEoKSk7CiB9
CiAKIHZvaWQgUmVjb3JkZXJJbXBsOjpnZXRQaXhlbEJ1ZmZlcihjb25zdCBQaXhlbEJ1ZmZlckZv
cm1hdCYgb3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0KQpAQCAtOTAsMTEg
KzgwLDYgQEAgUmVuZGVyaW5nTW9kZSBSZWNvcmRlckltcGw6OnJlbmRlcmluZ01vZGUoKSBjb25z
dAogICAgIHJldHVybiBtX2RlbGVnYXRlID8gbV9kZWxlZ2F0ZS0+cmVuZGVyaW5nTW9kZSgpIDog
UmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZDsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEdyYXBo
aWNzQ29udGV4dD4gUmVjb3JkZXJJbXBsOjpjcmVhdGVOZXN0ZWRDb250ZXh0KGNvbnN0IEZsb2F0
UmVjdCYgaW5pdGlhbENsaXAsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgaW5pdGlhbENUTSkKLXsK
LSAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZWNvcmRlckltcGw+KCp0aGlzLCBHcmFwaGljc0NvbnRl
eHRTdGF0ZSB7IH0sIGluaXRpYWxDbGlwLCBpbml0aWFsQ1RNKTsKLX0KLQogdm9pZCBSZWNvcmRl
ckltcGw6OnJlY29yZFNhdmUoKQogewogICAgIGFwcGVuZDxTYXZlPigpOwpAQCAtMjAwLDE2ICsx
ODUsNiBAQCB2b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkQ2xpcFBhdGgoY29uc3QgUGF0aCYgcGF0
aCwgV2luZFJ1bGUgcnVsZSkKICAgICBhcHBlbmQ8Q2xpcFBhdGg+KHBhdGgsIHJ1bGUpOwogfQog
Ci12b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkQmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29u
c3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3Bh
Y2UpCi17Ci0gICAgYXBwZW5kPEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPihkZXN0aW5hdGlv
biwgY29sb3JTcGFjZSk7Ci19Ci0KLXZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRFbmRDbGlwVG9E
cmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbikKLXsKLSAgICBhcHBl
bmQ8RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPihkZXN0aW5hdGlvbik7Ci19Ci0KIHZvaWQgUmVj
b3JkZXJJbXBsOjpyZWNvcmREcmF3RmlsdGVyZWRJbWFnZUJ1ZmZlcihzdGQ6Om9wdGlvbmFsPFJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gc291cmNlSW1hZ2VJZGVudGlmaWVyLCBjb25zdCBG
bG9hdFJlY3QmIHNvdXJjZUltYWdlUmVjdCwgRmlsdGVyJiBmaWx0ZXIpCiB7CiAgICAgYXBwZW5k
PERyYXdGaWx0ZXJlZEltYWdlQnVmZmVyPihzb3VyY2VJbWFnZUlkZW50aWZpZXIsIHNvdXJjZUlt
YWdlUmVjdCwgZmlsdGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJ
bXBsLmgKaW5kZXggZDdhN2MzZjIzNTI0Li4yYmFlYTdlYjU1MzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29y
ZGVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5oCkBAIC0zNyw4ICszNyw2IEBAIGNsYXNzIFJl
Y29yZGVySW1wbCA6IHB1YmxpYyBSZWNvcmRlciB7CiBwdWJsaWM6CiAgICAgY2xhc3MgRGVsZWdh
dGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgUmVjb3JkZXJJbXBsKERpc3BsYXlMaXN0JiwgY29uc3Qg
R3JhcGhpY3NDb250ZXh0U3RhdGUmLCBjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwLCBjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mLCBEZWxlZ2F0ZSogPSBudWxscHRyLCBEcmF3R2x5cGhzUmVjb3Jk
ZXI6OkRlY29uc3RydWN0RHJhd0dseXBocyA9IERyYXdHbHlwaHNSZWNvcmRlcjo6RGVjb25zdHJ1
Y3REcmF3R2x5cGhzOjpZZXMpOwotICAgIFJlY29yZGVySW1wbChSZWNvcmRlckltcGwmIHBhcmVu
dCwgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmLCBjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxD
bGlwLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGluaXRpYWxDVE0pOwotCiAgICAgV0VCQ09SRV9F
WFBPUlQgdmlydHVhbCB+UmVjb3JkZXJJbXBsKCk7CiAKICAgICBib29sIGlzRW1wdHkoKSBjb25z
dCB7IHJldHVybiBtX2Rpc3BsYXlMaXN0LmlzRW1wdHkoKTsgfQpAQCAtODYsOCArODQsNiBAQCBw
cml2YXRlOgogICAgIHZvaWQgcmVjb3JkQ2xpcFRvSW1hZ2VCdWZmZXIoUmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyIGltYWdlQnVmZmVySWRlbnRpZmllciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
aW5hdGlvblJlY3QpIGZpbmFsOwogICAgIHZvaWQgcmVjb3JkQ2xpcE91dFRvUGF0aChjb25zdCBQ
YXRoJikgZmluYWw7CiAgICAgdm9pZCByZWNvcmRDbGlwUGF0aChjb25zdCBQYXRoJiwgV2luZFJ1
bGUpIGZpbmFsOwotICAgIHZvaWQgcmVjb3JkQmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29u
c3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgRGVzdGluYXRpb25Db2xvclNwYWNlKSBmaW5hbDsK
LSAgICB2b2lkIHJlY29yZEVuZENsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3Qm
IGRlc3RpbmF0aW9uKSBmaW5hbDsKICAgICB2b2lkIHJlY29yZERyYXdGaWx0ZXJlZEltYWdlQnVm
ZmVyKHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBzb3VyY2VJbWFn
ZUlkZW50aWZpZXIsIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlSW1hZ2VSZWN0LCBGaWx0ZXImKSBm
aW5hbDsKICAgICB2b2lkIHJlY29yZERyYXdHbHlwaHMoY29uc3QgRm9udCYsIGNvbnN0IEdseXBo
QnVmZmVyR2x5cGgqLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqLCB1bnNpZ25lZCBjb3VudCwg
Y29uc3QgRmxvYXRQb2ludCYgbG9jYWxBbmNob3IsIEZvbnRTbW9vdGhpbmdNb2RlKSBmaW5hbDsK
ICAgICB2b2lkIHJlY29yZERyYXdJbWFnZUJ1ZmZlcihSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgZmluYWw7
CkBAIC0xNDEsOCArMTM3LDYgQEAgcHJpdmF0ZToKICAgICBib29sIHJlY29yZFJlc291cmNlVXNl
KGNvbnN0IFNvdXJjZUltYWdlJikgZmluYWw7CiAgICAgYm9vbCByZWNvcmRSZXNvdXJjZVVzZShG
b250JikgZmluYWw7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0PiBjcmVh
dGVOZXN0ZWRDb250ZXh0KGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYgaW5pdGlhbENUTSkgZmluYWw7Ci0KICAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+
IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIGZsb2F0IHJlc29s
dXRpb25TY2FsZSA9IDEsIGNvbnN0IFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSYgPSBX
ZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSkgY29uc3QgZmluYWw7CiAKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBjbGFzcy4uLiBBcmdzPgpAQCAtMTcyLDcgKzE2Niw2IEBA
IHByaXZhdGU6CiAKICAgICBEaXNwbGF5TGlzdCYgbV9kaXNwbGF5TGlzdDsKICAgICBEZWxlZ2F0
ZSogbV9kZWxlZ2F0ZSB7IG51bGxwdHIgfTsKLSAgICBib29sIG1faXNOZXN0ZWQgeyBmYWxzZSB9
OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCmluZGV4
IDJjNGFlNDRkZTkyYy4uMDU2MGQ0ZGRmZTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0UmVwbGF5ZXIuY3BwCkBAIC0zNyw5ICszNyw4IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBu
YW1lc3BhY2UgRGlzcGxheUxpc3QgewogCi1SZXBsYXllcjo6UmVwbGF5ZXIoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QsIGNvbnN0IFJlc291
cmNlSGVhcCogcmVzb3VyY2VIZWFwLCBJbWFnZUJ1ZmZlciogbWFza0ltYWdlQnVmZmVyLCBEZWxl
Z2F0ZSogZGVsZWdhdGUpCitSZXBsYXllcjo6UmVwbGF5ZXIoR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBjb25zdCBEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QsIGNvbnN0IFJlc291cmNlSGVhcCog
cmVzb3VyY2VIZWFwLCBEZWxlZ2F0ZSogZGVsZWdhdGUpCiAgICAgOiBtX2NvbnRleHQoY29udGV4
dCkKLSAgICAsIG1fbWFza0ltYWdlQnVmZmVyKG1hc2tJbWFnZUJ1ZmZlcikKICAgICAsIG1fZGlz
cGxheUxpc3QoZGlzcGxheUxpc3QpCiAgICAgLCBtX3Jlc291cmNlSGVhcChyZXNvdXJjZUhlYXAg
PyAqcmVzb3VyY2VIZWFwIDogbV9kaXNwbGF5TGlzdC5yZXNvdXJjZUhlYXAoKSkKICAgICAsIG1f
ZGVsZWdhdGUoZGVsZWdhdGUpCkBAIC00OCwxMSArNDcsNiBAQCBSZXBsYXllcjo6UmVwbGF5ZXIo
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3Qs
IGNvbgogCiBSZXBsYXllcjo6flJlcGxheWVyKCkgPSBkZWZhdWx0OwogCi1HcmFwaGljc0NvbnRl
eHQmIFJlcGxheWVyOjpjb250ZXh0KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9tYXNrSW1hZ2VC
dWZmZXIgPyBtX21hc2tJbWFnZUJ1ZmZlci0+Y29udGV4dCgpIDogbV9jb250ZXh0OwotfQotCiB0
ZW1wbGF0ZTxjbGFzcyBUPgogaW5saW5lIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcj4gYXBwbHlJbWFnZUJ1ZmZlckl0ZW0oR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBjb25zdCBSZXNvdXJjZUhlYXAmIHJlc291cmNlSGVhcCwgSXRlbUhhbmRsZSBpdGVt
LCBSZXBsYXllcjo6RGVsZWdhdGUqIGRlbGVnYXRlKQogewpAQCAtMTMwLDY5ICsxMjQsNDYgQEAg
aW5saW5lIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4g
YXBwbHlGb250SXRlbShHcmFwaGljc0MKIAogc3RkOjpwYWlyPHN0ZDo6b3B0aW9uYWw8U3RvcFJl
cGxheVJlYXNvbj4sIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPj4g
UmVwbGF5ZXI6OmFwcGx5SXRlbShJdGVtSGFuZGxlIGl0ZW0pCiB7Ci0gICAgaWYgKG1fZGVsZWdh
dGUgJiYgbV9kZWxlZ2F0ZS0+YXBwbHkoaXRlbSwgY29udGV4dCgpKSkKKyAgICBpZiAobV9kZWxl
Z2F0ZSAmJiBtX2RlbGVnYXRlLT5hcHBseShpdGVtLCBtX2NvbnRleHQpKQogICAgICAgICByZXR1
cm4geyBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCB9OwogCiAgICAgaWYgKGl0ZW0uaXM8RHJh
d0ltYWdlQnVmZmVyPigpKSB7Ci0gICAgICAgIGlmIChhdXRvIG1pc3NpbmdDYWNoZWRSZXNvdXJj
ZUlkZW50aWZpZXIgPSBhcHBseUltYWdlQnVmZmVySXRlbTxEcmF3SW1hZ2VCdWZmZXI+KGNvbnRl
eHQoKSwgbV9yZXNvdXJjZUhlYXAsIGl0ZW0sIG1fZGVsZWdhdGUpKQorICAgICAgICBpZiAoYXV0
byBtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyID0gYXBwbHlJbWFnZUJ1ZmZlckl0ZW08
RHJhd0ltYWdlQnVmZmVyPihtX2NvbnRleHQsIG1fcmVzb3VyY2VIZWFwLCBpdGVtLCBtX2RlbGVn
YXRlKSkKICAgICAgICAgICAgIHJldHVybiB7IFN0b3BSZXBsYXlSZWFzb246Ok1pc3NpbmdDYWNo
ZWRSZXNvdXJjZSwgV1RGTW92ZShtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyKSB9Owog
ICAgICAgICByZXR1cm4geyBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCB9OwogICAgIH0KIAog
ICAgIGlmIChpdGVtLmlzPENsaXBUb0ltYWdlQnVmZmVyPigpKSB7Ci0gICAgICAgIGlmIChhdXRv
IG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIgPSBhcHBseUltYWdlQnVmZmVySXRlbTxD
bGlwVG9JbWFnZUJ1ZmZlcj4oY29udGV4dCgpLCBtX3Jlc291cmNlSGVhcCwgaXRlbSwgbV9kZWxl
Z2F0ZSkpCisgICAgICAgIGlmIChhdXRvIG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIg
PSBhcHBseUltYWdlQnVmZmVySXRlbTxDbGlwVG9JbWFnZUJ1ZmZlcj4obV9jb250ZXh0LCBtX3Jl
c291cmNlSGVhcCwgaXRlbSwgbV9kZWxlZ2F0ZSkpCiAgICAgICAgICAgICByZXR1cm4geyBTdG9w
UmVwbGF5UmVhc29uOjpNaXNzaW5nQ2FjaGVkUmVzb3VyY2UsIFdURk1vdmUobWlzc2luZ0NhY2hl
ZFJlc291cmNlSWRlbnRpZmllcikgfTsKICAgICAgICAgcmV0dXJuIHsgc3RkOjpudWxsb3B0LCBz
dGQ6Om51bGxvcHQgfTsKICAgICB9CiAKICAgICBpZiAoaXRlbS5pczxEcmF3TmF0aXZlSW1hZ2U+
KCkpIHsKLSAgICAgICAgaWYgKGF1dG8gbWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllciA9
IGFwcGx5TmF0aXZlSW1hZ2VJdGVtPERyYXdOYXRpdmVJbWFnZT4oY29udGV4dCgpLCBtX3Jlc291
cmNlSGVhcCwgaXRlbSwgbV9kZWxlZ2F0ZSkpCisgICAgICAgIGlmIChhdXRvIG1pc3NpbmdDYWNo
ZWRSZXNvdXJjZUlkZW50aWZpZXIgPSBhcHBseU5hdGl2ZUltYWdlSXRlbTxEcmF3TmF0aXZlSW1h
Z2U+KG1fY29udGV4dCwgbV9yZXNvdXJjZUhlYXAsIGl0ZW0sIG1fZGVsZWdhdGUpKQogICAgICAg
ICAgICAgcmV0dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6TWlzc2luZ0NhY2hlZFJlc291cmNlLCBX
VEZNb3ZlKG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIpIH07CiAgICAgICAgIHJldHVy
biB7IHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0IH07CiAgICAgfQogCiAgICAgaWYgKGl0ZW0u
aXM8RHJhd0dseXBocz4oKSkgewotICAgICAgICBpZiAoYXV0byBtaXNzaW5nQ2FjaGVkUmVzb3Vy
Y2VJZGVudGlmaWVyID0gYXBwbHlGb250SXRlbTxEcmF3R2x5cGhzPihjb250ZXh0KCksIG1fcmVz
b3VyY2VIZWFwLCBpdGVtLCBtX2RlbGVnYXRlKSkKKyAgICAgICAgaWYgKGF1dG8gbWlzc2luZ0Nh
Y2hlZFJlc291cmNlSWRlbnRpZmllciA9IGFwcGx5Rm9udEl0ZW08RHJhd0dseXBocz4obV9jb250
ZXh0LCBtX3Jlc291cmNlSGVhcCwgaXRlbSwgbV9kZWxlZ2F0ZSkpCiAgICAgICAgICAgICByZXR1
cm4geyBTdG9wUmVwbGF5UmVhc29uOjpNaXNzaW5nQ2FjaGVkUmVzb3VyY2UsIFdURk1vdmUobWlz
c2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllcikgfTsKICAgICAgICAgcmV0dXJuIHsgc3RkOjpu
dWxsb3B0LCBzdGQ6Om51bGxvcHQgfTsKICAgICB9CiAKICAgICBpZiAoaXRlbS5pczxEcmF3UGF0
dGVybj4oKSkgewotICAgICAgICBpZiAoYXV0byBtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlm
aWVyID0gYXBwbHlOYXRpdmVJbWFnZUl0ZW08RHJhd1BhdHRlcm4+KGNvbnRleHQoKSwgbV9yZXNv
dXJjZUhlYXAsIGl0ZW0sIG1fZGVsZWdhdGUpKQorICAgICAgICBpZiAoYXV0byBtaXNzaW5nQ2Fj
aGVkUmVzb3VyY2VJZGVudGlmaWVyID0gYXBwbHlOYXRpdmVJbWFnZUl0ZW08RHJhd1BhdHRlcm4+
KG1fY29udGV4dCwgbV9yZXNvdXJjZUhlYXAsIGl0ZW0sIG1fZGVsZWdhdGUpKQogICAgICAgICAg
ICAgcmV0dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6TWlzc2luZ0NhY2hlZFJlc291cmNlLCBXVEZN
b3ZlKG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIpIH07CiAgICAgICAgIHJldHVybiB7
IHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0IH07CiAgICAgfQogCiAgICAgaWYgKGl0ZW0uaXM8
U2V0U3RhdGU+KCkpIHsKLSAgICAgICAgaWYgKGF1dG8gbWlzc2luZ0NhY2hlZFJlc291cmNlSWRl
bnRpZmllciA9IGFwcGx5U2V0U3RhdGVJdGVtKGNvbnRleHQoKSwgbV9yZXNvdXJjZUhlYXAsIGl0
ZW0sIG1fZGVsZWdhdGUpKQorICAgICAgICBpZiAoYXV0byBtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJ
ZGVudGlmaWVyID0gYXBwbHlTZXRTdGF0ZUl0ZW0obV9jb250ZXh0LCBtX3Jlc291cmNlSGVhcCwg
aXRlbSwgbV9kZWxlZ2F0ZSkpCiAgICAgICAgICAgICByZXR1cm4geyBTdG9wUmVwbGF5UmVhc29u
OjpNaXNzaW5nQ2FjaGVkUmVzb3VyY2UsIFdURk1vdmUobWlzc2luZ0NhY2hlZFJlc291cmNlSWRl
bnRpZmllcikgfTsKICAgICAgICAgcmV0dXJuIHsgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQg
fTsKICAgICB9CiAKLSAgICBpZiAoaXRlbS5pczxCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcz4o
KSkgewotICAgICAgICBpZiAobV9tYXNrSW1hZ2VCdWZmZXIpCi0gICAgICAgICAgICByZXR1cm4g
eyBTdG9wUmVwbGF5UmVhc29uOjpJbnZhbGlkSXRlbU9yRXh0ZW50LCBzdGQ6Om51bGxvcHQgfTsK
LSAgICAgICAgYXV0byYgY2xpcEl0ZW0gPSBpdGVtLmdldDxCZWdpbkNsaXBUb0RyYXdpbmdDb21t
YW5kcz4oKTsKLSAgICAgICAgbV9tYXNrSW1hZ2VCdWZmZXIgPSBtX2NvbnRleHQuY3JlYXRlQ29t
cGF0aWJsZUltYWdlQnVmZmVyKGNsaXBJdGVtLmRlc3RpbmF0aW9uKCkuc2l6ZSgpLCBjbGlwSXRl
bS5jb2xvclNwYWNlKCkpOwotICAgICAgICBpZiAoIW1fbWFza0ltYWdlQnVmZmVyKQotICAgICAg
ICAgICAgcmV0dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6T3V0T2ZNZW1vcnksIHN0ZDo6bnVsbG9w
dCB9OwotICAgICAgICBpZiAobV9kZWxlZ2F0ZSkKLSAgICAgICAgICAgIG1fZGVsZWdhdGUtPmRp
ZENyZWF0ZU1hc2tJbWFnZUJ1ZmZlcigqbV9tYXNrSW1hZ2VCdWZmZXIpOwotICAgICAgICByZXR1
cm4geyBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCB9OwotICAgIH0KLQotICAgIGlmIChpdGVt
LmlzPEVuZENsaXBUb0RyYXdpbmdDb21tYW5kcz4oKSkgewotICAgICAgICBpZiAoIW1fbWFza0lt
YWdlQnVmZmVyKQotICAgICAgICAgICAgcmV0dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6SW52YWxp
ZEl0ZW1PckV4dGVudCwgc3RkOjpudWxsb3B0IH07Ci0gICAgICAgIGF1dG8mIGNsaXBJdGVtID0g
aXRlbS5nZXQ8RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPigpOwotICAgICAgICBtX2NvbnRleHQu
Y2xpcFRvSW1hZ2VCdWZmZXIoKm1fbWFza0ltYWdlQnVmZmVyLCBjbGlwSXRlbS5kZXN0aW5hdGlv
bigpKTsKLSAgICAgICAgbV9tYXNrSW1hZ2VCdWZmZXIgPSBudWxscHRyOwotICAgICAgICBpZiAo
bV9kZWxlZ2F0ZSkKLSAgICAgICAgICAgIG1fZGVsZWdhdGUtPmRpZFJlc2V0TWFza0ltYWdlQnVm
ZmVyKCk7Ci0gICAgICAgIHJldHVybiB7IHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0IH07Ci0g
ICAgfQotCi0gICAgaXRlbS5hcHBseShjb250ZXh0KCkpOworICAgIGl0ZW0uYXBwbHkobV9jb250
ZXh0KTsKICAgICByZXR1cm4geyBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCB9OwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RSZXBsYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaAppbmRleCA5Mjg1YmJkZDEwMDQuLjM3
M2M1MzFhZTk4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5oCkBAIC01
OSw3ICs1OSw3IEBAIGNsYXNzIFJlcGxheWVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShS
ZXBsYXllcik7CiBwdWJsaWM6CiAgICAgY2xhc3MgRGVsZWdhdGU7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgUmVwbGF5ZXIoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRGlzcGxheUxpc3QmLCBjb25zdCBS
ZXNvdXJjZUhlYXAqID0gbnVsbHB0ciwgV2ViQ29yZTo6SW1hZ2VCdWZmZXIqIG1hc2tJbWFnZUJ1
ZmZlciA9IG51bGxwdHIsIERlbGVnYXRlKiA9IG51bGxwdHIpOworICAgIFdFQkNPUkVfRVhQT1JU
IFJlcGxheWVyKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IERpc3BsYXlMaXN0JiwgY29uc3QgUmVz
b3VyY2VIZWFwKiA9IG51bGxwdHIsIERlbGVnYXRlKiA9IG51bGxwdHIpOwogICAgIFdFQkNPUkVf
RVhQT1JUIH5SZXBsYXllcigpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgUmVwbGF5UmVzdWx0IHJl
cGxheShjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwID0geyB9LCBib29sIHRyYWNrUmVwbGF5
TGlzdCA9IGZhbHNlKTsKQEAgLTY4LDE3ICs2OCwxMyBAQCBwdWJsaWM6CiAgICAgcHVibGljOgog
ICAgICAgICB2aXJ0dWFsIH5EZWxlZ2F0ZSgpIHsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgYXBw
bHkoSXRlbUhhbmRsZSwgR3JhcGhpY3NDb250ZXh0JikgeyByZXR1cm4gZmFsc2U7IH0KLSAgICAg
ICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZU1hc2tJbWFnZUJ1ZmZlcihXZWJDb3JlOjpJbWFnZUJ1
ZmZlciYpIHsgfQotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVzZXRNYXNrSW1hZ2VCdWZmZXIo
KSB7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIHJlY29yZFJlc291cmNlVXNlKFJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcikgeyB9CiAgICAgfTsKICAgICAKIHByaXZhdGU6Ci0gICAgR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0KCkgY29uc3Q7CiAgICAgc3RkOjpwYWlyPHN0ZDo6b3B0aW9uYWw8
U3RvcFJlcGxheVJlYXNvbj4sIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyPj4gYXBwbHlJdGVtKEl0ZW1IYW5kbGUpOwogCiAgICAgR3JhcGhpY3NDb250ZXh0JiBtX2Nv
bnRleHQ7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBtX21hc2tJbWFnZUJ1ZmZl
cjsKICAgICBjb25zdCBEaXNwbGF5TGlzdCYgbV9kaXNwbGF5TGlzdDsKICAgICBjb25zdCBSZXNv
dXJjZUhlYXAmIG1fcmVzb3VyY2VIZWFwOwogICAgIERlbGVnYXRlKiBtX2RlbGVnYXRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9O
aWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNw
cAppbmRleCA5OTBjNzFmYTQ3NDMuLjkyNDdmMzBlNzIyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRp
b25SZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmlj
b3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAKQEAgLTExMDYsMTIg
KzExMDYsNiBAQCB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmFwcGVuZChzdGQ6OnVuaXF1
ZV9wdHI8UGFpbnRpbmdPcGVyYXRpb24+JiYgY29tbWFuZAogICAgIG1fY29tbWFuZExpc3QuYXBw
ZW5kKFdURk1vdmUoY29tbWFuZCkpOwogfQogCi1HcmFwaGljc0NvbnRleHQ6OkNsaXBUb0RyYXdp
bmdDb21tYW5kc1Jlc3VsdCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpjbGlwVG9EcmF3aW5nQ29t
bWFuZHMoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgRnVu
Y3Rpb248dm9pZChHcmFwaGljc0NvbnRleHQmKT4mJikKLXsKLSAgICAvLyBGSVhNRTogTm90IGlt
cGxlbWVudGVkLgotICAgIHJldHVybiBDbGlwVG9EcmF3aW5nQ29tbWFuZHNSZXN1bHQ6OlN1Y2Nl
c3M7Ci19Ci0KICNpZiBFTkFCTEUoVklERU8pCiB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6
OnBhaW50RnJhbWVGb3JNZWRpYShNZWRpYVBsYXllciYgcGxheWVyLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RpbmF0aW9uKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9P
cGVyYXRpb25SZWNvcmRlci5oCmluZGV4IGFhOTRkZTg4NjI3Mi4uNzM5Nzc4ODZjZTczIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05p
Y29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5o
CkBAIC05Niw3ICs5Niw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjbGlwUGF0aChjb25zdCBXZWJD
b3JlOjpQYXRoJiwgV2ViQ29yZTo6V2luZFJ1bGUpIG92ZXJyaWRlOwogICAgIFdlYkNvcmU6Oklu
dFJlY3QgY2xpcEJvdW5kcygpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgY2xpcFRvSW1hZ2VC
dWZmZXIoV2ViQ29yZTo6SW1hZ2VCdWZmZXImLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKSBv
dmVycmlkZTsKLSAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OkNsaXBUb0RyYXdpbmdDb21t
YW5kc1Jlc3VsdCBjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0
JiBkZXN0aW5hdGlvbiwgY29uc3QgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlJiwgRnVu
Y3Rpb248dm9pZChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmKT4mJikgb3ZlcnJpZGU7CiAjaWYg
RU5BQkxFKFZJREVPKQogICAgIHZvaWQgcGFpbnRGcmFtZUZvck1lZGlhKFdlYkNvcmU6Ok1lZGlh
UGxheWVyJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBkZXN0aW5hdGlvbikgb3ZlcnJpZGU7
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKaW5kZXggNTQ5Njg0YzI0ZjIxLi4xMjZkMGUyMDM3ZDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjEgQEAKKzIwMjItMDEtMjggIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBh
cHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBEZWxldGUgR3JhcGhpY3NDb250ZXh0
OjpjbGlwVG9EcmF3aW5nQ29tbWFuZHMoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjI1OTU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0
UmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVy
OjpkcmF3aW5nQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZURpc3BsYXlMaXN0UmVj
b3JkZXI6OmJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlcjo6ZW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRz
KTogRGVsZXRlZC4KKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlM
aXN0UmVjb3JkZXIuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3Bs
YXlMaXN0UmVjb3JkZXIubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5OjpyZWNvcmRCZWdpbkNsaXBUb0RyYXdp
bmdDb21tYW5kcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZURpc3BsYXlMaXN0
UmVjb3JkZXJQcm94eTo6cmVjb3JkRW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKTogRGVsZXRlZC4K
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29y
ZGVyUHJveHkuaDoKKwogMjAyMi0wMS0yOCAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxl
LmNvbT4KIAogICAgICAgICBbR1BVIFByb2Nlc3NdIE1vdmUgSW1hZ2VCdWZmZXI6OmNyZWF0ZUNv
bXBhdGlibGVJbWFnZUJ1ZmZlcigpIHRvIEdyYXBoaWNzQ29udGV4dApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0
UmVjb3JkZXIuY3BwCmluZGV4IDE5Mzc0MTlmZWJlNi4uMDIyOGFlM2E0Yzc1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNv
cmRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURp
c3BsYXlMaXN0UmVjb3JkZXIuY3BwCkBAIC01MCw3ICs1MCw3IEBAIFJlbW90ZVJlc291cmNlQ2Fj
aGUmIFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXI6OnJlc291cmNlQ2FjaGUoKQogCiBHcmFwaGlj
c0NvbnRleHQmIFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXI6OmRyYXdpbmdDb250ZXh0KCkKIHsK
LSAgICByZXR1cm4gbV9tYXNrSW1hZ2VCdWZmZXIgPyBtX21hc2tJbWFnZUJ1ZmZlci0+Y29udGV4
dCgpIDogbV9pbWFnZUJ1ZmZlci0+Y29udGV4dCgpOworICAgIHJldHVybiBtX2ltYWdlQnVmZmVy
LT5jb250ZXh0KCk7CiB9CiAKIHZvaWQgUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlcjo6c3RhcnRM
aXN0ZW5pbmdGb3JJUEMoKQpAQCAtMjA2LDIyICsyMDYsNiBAQCB2b2lkIFJlbW90ZURpc3BsYXlM
aXN0UmVjb3JkZXI6OmNsaXBQYXRoKGNvbnN0IFBhdGgmIHBhdGgsIFdpbmRSdWxlIHJ1bGUpCiAg
ICAgaGFuZGxlSXRlbShEaXNwbGF5TGlzdDo6Q2xpcFBhdGgocGF0aCwgcnVsZSkpOwogfQogCi12
b2lkIFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXI6OmJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRz
KGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSYgY29sb3JTcGFjZSkKLXsKLSAgICBtX21hc2tJbWFnZUJ1ZmZlciA9IGRyYXdpbmdDb250ZXh0
KCkuY3JlYXRlQ29tcGF0aWJsZUltYWdlQnVmZmVyKGRlc3RpbmF0aW9uLnNpemUoKSwgY29sb3JT
cGFjZSk7Ci19Ci0KLXZvaWQgUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlcjo6ZW5kQ2xpcFRvRHJh
d2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24pCi17Ci0gICAgYXV0byBt
YXNrSW1hZ2VCdWZmZXIgPSBzdGQ6OmV4Y2hhbmdlKG1fbWFza0ltYWdlQnVmZmVyLCB7IH0pOwot
ICAgIGlmICghbWFza0ltYWdlQnVmZmVyKSB7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgZHJhd2luZ0NvbnRleHQoKS5jbGlwVG9J
bWFnZUJ1ZmZlcigqbWFza0ltYWdlQnVmZmVyLCBkZXN0aW5hdGlvbik7Ci19Ci0KIHZvaWQgUmVt
b3RlRGlzcGxheUxpc3RSZWNvcmRlcjo6ZHJhd0ZpbHRlcmVkSW1hZ2VCdWZmZXIoc3RkOjpvcHRp
b25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IHNvdXJjZUltYWdlSWRlbnRpZmllciwg
Y29uc3QgRmxvYXRSZWN0JiBzb3VyY2VJbWFnZVJlY3QsIElQQzo6RmlsdGVyUmVmZXJlbmNlIGZp
bHRlclJlZmVyZW5jZSkKIHsKICAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IHNvdXJjZUltYWdlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3Bs
YXlMaXN0UmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVEaXNwbGF5TGlzdFJlY29yZGVyLmgKaW5kZXggZTE2OGU1YWVhMjE0Li5iMDRiN2VhMjAwM2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNw
bGF5TGlzdFJlY29yZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIuaApAQCAtNzgsOCArNzgsNiBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBjbGlwVG9JbWFnZUJ1ZmZlcihXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgZGVzdGluYXRpb25SZWN0KTsKICAgICB2
b2lkIGNsaXBPdXRUb1BhdGgoY29uc3QgV2ViQ29yZTo6UGF0aCYpOwogICAgIHZvaWQgY2xpcFBh
dGgoY29uc3QgV2ViQ29yZTo6UGF0aCYsIFdlYkNvcmU6OldpbmRSdWxlKTsKLSAgICB2b2lkIGJl
Z2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgZGVzdGlu
YXRpb24sIGNvbnN0IFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSYpOwotICAgIHZvaWQg
ZW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgZGVzdGlu
YXRpb24pOwogICAgIHZvaWQgZHJhd0dseXBocyhXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0ds
eXBocyYmKTsKICAgICB2b2lkIGRyYXdGaWx0ZXJlZEltYWdlQnVmZmVyKHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBzb3VyY2VJbWFnZUlkZW50aWZp
ZXIsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgc291cmNlSW1hZ2VSZWN0LCBJUEM6OkZpbHRl
clJlZmVyZW5jZSk7CiAgICAgdm9pZCBkcmF3SW1hZ2VCdWZmZXIoV2ViQ29yZTo6UmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyIGltYWdlQnVmZmVySWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6
RmxvYXRSZWN0JiBkZXN0aW5hdGlvblJlY3QsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgc3Jj
UmVjdCwgY29uc3QgV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnMmKTsKQEAgLTE2MCw3ICsx
NTgsNiBAQCBwcml2YXRlOgogICAgIFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
ciBtX2ltYWdlQnVmZmVySWRlbnRpZmllcjsKICAgICBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmll
ciBtX3dlYlByb2Nlc3NJZGVudGlmaWVyOwogICAgIFJlZlB0cjxSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kPiBtX3JlbmRlcmluZ0JhY2tlbmQ7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVy
PiBtX21hc2tJbWFnZUJ1ZmZlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0
UmVjb3JkZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5tZXNzYWdlcy5pbgppbmRleCBlMjNlYWNjYTU3MmYu
LmQ3YzgwNmQ0YmM0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIubWVzc2Fn
ZXMuaW4KQEAgLTQ0LDggKzQ0LDYgQEAgbWVzc2FnZXMgLT4gUmVtb3RlRGlzcGxheUxpc3RSZWNv
cmRlciBOb3RSZWZDb3VudGVkIFN0cmVhbSB7CiAgICAgQ2xpcFRvSW1hZ2VCdWZmZXIoV2ViQ29y
ZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
ciwgV2ViQ29yZTo6RmxvYXRSZWN0IGRlc3RpbmF0aW9uUmVjdCkKICAgICBDbGlwT3V0VG9QYXRo
KFdlYkNvcmU6OlBhdGggcGF0aCkKICAgICBDbGlwUGF0aChXZWJDb3JlOjpQYXRoIHBhdGgsIGVu
dW06dWludDhfdCBXZWJDb3JlOjpXaW5kUnVsZSB3aW5kUnVsZSkKLSAgICBCZWdpbkNsaXBUb0Ry
YXdpbmdDb21tYW5kcyhXZWJDb3JlOjpGbG9hdFJlY3QgZGVzdGluYXRpb24sIFdlYkNvcmU6OkRl
c3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlKQotICAgIEVuZENsaXBUb0RyYXdpbmdDb21t
YW5kcyhXZWJDb3JlOjpGbG9hdFJlY3QgZGVzdGluYXRpb24pCiAgICAgRHJhd0dseXBocyhXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6RHJhd0dseXBocyBpdGVtKQogICAgIERyYXdGaWx0ZXJlZEltYWdl
QnVmZmVyKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
PiBzb3VyY2VJbWFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OkZsb2F0UmVjdCBzb3VyY2VJbWFnZVJl
Y3QsIElQQzo6RmlsdGVyUmVmZXJlbmNlIGZpbHRlcikKICAgICBEcmF3SW1hZ2VCdWZmZXIoV2Vi
Q29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGltYWdlQnVmZmVySWRlbnRpZmllciwg
V2ViQ29yZTo6RmxvYXRSZWN0IGRlc3RpbmF0aW9uUmVjdCwgV2ViQ29yZTo6RmxvYXRSZWN0IHNy
Y1JlY3QsIHN0cnVjdCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyBvcHRpb25zKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVEaXNw
bGF5TGlzdFJlY29yZGVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkuY3BwCmluZGV4IDAyN2Y4MmIw
OTI0ZC4uODljZjlkZjY3NDRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29y
ZGVyUHJveHkuY3BwCkBAIC0xOTUsMTYgKzE5NSw2IEBAIHZvaWQgUmVtb3RlRGlzcGxheUxpc3RS
ZWNvcmRlclByb3h5OjpyZWNvcmRDbGlwUGF0aChjb25zdCBQYXRoJiBwYXRoLCBXaW5kUnVsZSBy
CiAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlcjo6Q2xpcFBhdGgo
cGF0aCwgcnVsZSkpOwogfQogCi12b2lkIFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eTo6
cmVjb3JkQmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5h
dGlvbiwgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UpCi17Ci0gICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlcjo6QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFu
ZHMoZGVzdGluYXRpb24sIGNvbG9yU3BhY2UpKTsKLX0KLQotdm9pZCBSZW1vdGVEaXNwbGF5TGlz
dFJlY29yZGVyUHJveHk6OnJlY29yZEVuZENsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9h
dFJlY3QmIGRlc3RpbmF0aW9uKQotewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZURpc3BsYXlM
aXN0UmVjb3JkZXI6OkVuZENsaXBUb0RyYXdpbmdDb21tYW5kcyhkZXN0aW5hdGlvbikpOwotfQot
CiB2b2lkIFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eTo6cmVjb3JkRHJhd0ZpbHRlcmVk
SW1hZ2VCdWZmZXIoc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IHNv
dXJjZUltYWdlSWRlbnRpZmllciwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2VJbWFnZVJlY3QsIEZp
bHRlciYgZmlsdGVyKQogewogICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZURpc3BsYXlMaXN0UmVj
b3JkZXI6OkRyYXdGaWx0ZXJlZEltYWdlQnVmZmVyKHNvdXJjZUltYWdlSWRlbnRpZmllciwgc291
cmNlSW1hZ2VSZWN0LCBJUEM6OkZpbHRlclJlZmVyZW5jZShSZWY8RmlsdGVyPiB7IGZpbHRlciB9
KSkpOwpAQCAtNDY0LDExICs0NTQsNiBAQCB2b2lkIFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQ
cm94eTo6Zmx1c2hDb250ZXh0KEdyYXBoaWNzQ29udGV4dEZsdXNoSWRlbnRpZmllcgogICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXI6OkZsdXNoQ29udGV4dChpZGVu
dGlmaWVyKSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHQ+IFJlbW90ZURp
c3BsYXlMaXN0UmVjb3JkZXJQcm94eTo6Y3JlYXRlTmVzdGVkQ29udGV4dChjb25zdCBGbG9hdFJl
Y3QmIGluaXRpYWxDbGlwLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGluaXRpYWxDVE0pCi17Ci0g
ICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5PigqdGhp
cywgaW5pdGlhbENsaXAsIGluaXRpYWxDVE0pOwotfQotCiBSZWZQdHI8SW1hZ2VCdWZmZXI+IFJl
bW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eTo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxv
YXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IERlc3RpbmF0aW9uQ29s
b3JTcGFjZSYgY29sb3JTcGFjZSkgY29uc3QKIHsKICAgICBpZiAoVU5MSUtFTFkoIW1fcmVuZGVy
aW5nQmFja2VuZCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eS5o
CmluZGV4IDA3ZjYzODE4NjI3ZS4uNDdmYTNkNzRhOTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlz
cGxheUxpc3RSZWNvcmRlclByb3h5LmgKQEAgLTkwLDggKzkwLDYgQEAgcHJpdmF0ZToKICAgICB2
b2lkIHJlY29yZENsaXBUb0ltYWdlQnVmZmVyKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllciBpbWFnZUJ1ZmZlcklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYg
ZGVzdGluYXRpb25SZWN0KSBmaW5hbDsKICAgICB2b2lkIHJlY29yZENsaXBPdXRUb1BhdGgoY29u
c3QgV2ViQ29yZTo6UGF0aCYpIGZpbmFsOwogICAgIHZvaWQgcmVjb3JkQ2xpcFBhdGgoY29uc3Qg
V2ViQ29yZTo6UGF0aCYsIFdlYkNvcmU6OldpbmRSdWxlKSBmaW5hbDsKLSAgICB2b2lkIHJlY29y
ZEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgZGVz
dGluYXRpb24sIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSkgZmluYWw7Ci0gICAgdm9p
ZCByZWNvcmRFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0
JiBkZXN0aW5hdGlvbikgZmluYWw7CiAgICAgdm9pZCByZWNvcmREcmF3RmlsdGVyZWRJbWFnZUJ1
ZmZlcihzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4g
c291cmNlSW1hZ2VJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHNvdXJjZUlt
YWdlUmVjdCwgV2ViQ29yZTo6RmlsdGVyJikgZmluYWw7CiAgICAgdm9pZCByZWNvcmREcmF3R2x5
cGhzKGNvbnN0IFdlYkNvcmU6OkZvbnQmLCBjb25zdCBXZWJDb3JlOjpHbHlwaEJ1ZmZlckdseXBo
KiwgY29uc3QgV2ViQ29yZTo6R2x5cGhCdWZmZXJBZHZhbmNlKiwgdW5zaWduZWQgY291bnQsIGNv
bnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIGxvY2FsQW5jaG9yLCBXZWJDb3JlOjpGb250U21vb3Ro
aW5nTW9kZSkgZmluYWw7CiAgICAgdm9pZCByZWNvcmREcmF3SW1hZ2VCdWZmZXIoV2ViQ29yZTo6
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGltYWdlQnVmZmVySWRlbnRpZmllciwgY29uc3Qg
V2ViQ29yZTo6RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBz
cmNSZWN0LCBjb25zdCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYpIGZpbmFsOwpAQCAt
MTQzLDggKzE0MSw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCByZWNvcmRSZXNvdXJjZVVzZShjb25z
dCBXZWJDb3JlOjpTb3VyY2VJbWFnZSYpIGZpbmFsOwogICAgIGJvb2wgcmVjb3JkUmVzb3VyY2VV
c2UoV2ViQ29yZTo6Rm9udCYpIGZpbmFsOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dD4gY3JlYXRlTmVzdGVkQ29udGV4dChjb25zdCBXZWJDb3JlOjpGbG9h
dFJlY3QmIGluaXRpYWxDbGlwLCBjb25zdCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mIGluaXRp
YWxDVE0pIGZpbmFsOwotCiAgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBjcmVhdGVJ
bWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBmbG9hdCByZXNvbHV0aW9uU2Nh
bGUgPSAxLCBjb25zdCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UmID0gV2ViQ29yZTo6
RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpIGNvbnN0IGZpbmFsOwogCiAgICAgV2ViQ29y
ZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIG1fZGVzdGluYXRpb25CdWZmZXJJZGVudGlm
aWVyOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451506</attachid>
            <date>2022-02-10 01:47:09 -0800</date>
            <delta_ts>2022-02-10 09:24:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225959-20220210014709.patch</filename>
            <type>text/plain</type>
            <size>53401</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5NTE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2JhNWM4NWZjZDI4Yzc0
NmEyOTA4YzM1NTJkMTJiZTUxYWM3ZDg0Yy4uNTE3ZTY2YjQyZTYwMTE3ZDEwNzY5NmI4NDQ5ODMw
NTFhNWUwODQ5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDIyLTAyLTEwICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
RGVsZXRlIEdyYXBoaWNzQ29udGV4dDo6Y2xpcFRvRHJhd2luZ0NvbW1hbmRzKCkKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTk1OQorICAgICAgICBy
ZGFyOi8vNzg0OTUzODAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGlzIGZ1bmN0aW9uIHdhcyBhZGRlZCBpbiByMjY3NzQyIGFzIGEgd29ya2Fyb3Vu
ZCBmb3IgR1BVUHJvY2VzcyBjYXNlCisgICAgICAgIHdoaWNoIHdhcyBoYXBwZW5pbmcgYmVjYXVz
ZSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcigpIHVzZWQKKyAgICAgICAgdG8g
cmV0dXJuIGluLXByb2Nlc3MgSW1hZ2VCdWZmZXIuIGNsaXBUb0RyYXdpbmdDb21tYW5kcygpIHdh
cyBhIHdheSB0bworICAgICAgICByZWNvcmQgdGhlIGNsaXBwZXIgbWFzayBpbWFnZSBpbnRvIGEg
dGVtcG9yYXJ5IHJlbW90ZSBJbWFnZUJ1ZmZlci4KKworICAgICAgICBJZiBHcmFwaGljc0NvbnRl
eHQ6OmNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcigpIGNhbiBjcmVhdGUgYW4KKyAgICAgICAg
SW1hZ2VCdWZmZXIgc2ltaWxhciB0byB0aGUgdW5kZXJseWluZyBJbWFnZUJ1ZmZlciBvZiB0aGUg
R3JhcGhpY3NDb250ZXh0LAorICAgICAgICB0aGVuIEdyYXBoaWNzQ29udGV4dDo6Y2xpcFRvRHJh
d2luZ0NvbW1hbmRzKCkgaXMgbm90IG5lZWRlZC4KKworICAgICAgICAqIGh0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6ZHJhd1RleHRVbmNoZWNrZWQpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQ6OmNsaXBUb0RyYXdpbmdDb21tYW5kcyk6IERlbGV0ZWQuCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvTnVsbEdyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6OmFwcGVuZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZTo6YXBwbHkpOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGU6OmRlc3Ryb3kpOgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGU6OnNhZmVDb3B5IGNvbnN0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6c2l6ZU9mSXRlbUluQnl0ZXMpOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OmlzRHJhd2luZ0l0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OmlzSW5saW5lSXRlbSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6b3BlcmF0b3I8PCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kczo6QmVnaW5DbGlwVG9EcmF3aW5n
Q29tbWFuZHMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkJlZ2lu
Q2xpcFRvRHJhd2luZ0NvbW1hbmRzOjp+QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHMpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkJlZ2luQ2xpcFRvRHJhd2luZ0Nv
bW1hbmRzOjpkZXN0aW5hdGlvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM6OmNvbG9yU3BhY2UgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkJlZ2luQ2xpcFRvRHJh
d2luZ0NvbW1hbmRzOjplbmNvZGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOjpkZWNvZGUpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkVuZENsaXBUb0RyYXdpbmdDb21tYW5k
czo6RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM6OmRlc3RpbmF0aW9uIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RSZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVj
b3JkZXI6OmNsaXBUb0RyYXdpbmdDb21tYW5kcyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlckltcGwu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6flJlY29y
ZGVySW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpj
cmVhdGVOZXN0ZWRDb250ZXh0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpSZWNvcmRlckltcGw6OnJlY29yZEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OnJlY29y
ZEVuZENsaXBUb0RyYXdpbmdDb21tYW5kcyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlcGxheWVyOjphcHBseUl0ZW0pOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlcGxheWVyOjpjb250ZXh0IGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RSZXBsYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fp
cm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwOgorICAgICAgICAoTmljb3NpYTo6
Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6Y2xpcFRvRHJhd2luZ0NvbW1hbmRzKTogRGVsZXRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09w
ZXJhdGlvblJlY29yZGVyLmg6CisKIDIwMjItMDItMDkgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fp
ZEBhcHBsZS5jb20+CiAKICAgICAgICAgW0dQVSBQcm9jZXNzXSBNb3ZlIEltYWdlQnVmZmVyOjpj
cmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIoKSBhbmQgU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3Jl
YXRlSW1hZ2VCdWZmZXIgdG8gR3JhcGhpY3NDb250ZXh0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGNjYTc0ZWU3ZGE1
MzNlYmIwMmQ5YjAxZjExOGJkNWFhMjRlMzllNTcuLmI4ZGUxZWEwZjNkYzljYTIzNjhiMTRjY2Vl
MmRlNTVjZGJhNWY3ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMjItMDItMTAgIFNh
aWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9jZXNz
XSBEZWxldGUgR3JhcGhpY3NDb250ZXh0OjpjbGlwVG9EcmF3aW5nQ29tbWFuZHMoKQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1OTU5CisgICAgICAg
IHJkYXI6Ly83ODQ5NTM4MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlcjo6ZHJhd2lu
Z0NvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyOjpi
ZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZURpc3BsYXlMaXN0UmVjb3JkZXI6OmVuZENsaXBUb0RyYXdpbmdDb21tYW5kcyk6IERlbGV0
ZWQuCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29y
ZGVyLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJl
Y29yZGVyLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1Jl
bW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eTo6cmVjb3JkQmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFu
ZHMpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVy
UHJveHk6OnJlY29yZEVuZENsaXBUb0RyYXdpbmdDb21tYW5kcyk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eTo6Y3JlYXRlTmVzdGVkQ29u
dGV4dCk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
RGlzcGxheUxpc3RSZWNvcmRlclByb3h5Lmg6CisKIDIwMjItMDItMDkgIFNhaWQgQWJvdS1IYWxs
YXdhICA8c2FpZEBhcHBsZS5jb20+CiAKICAgICAgICAgW0dQVSBQcm9jZXNzXSBNb3ZlIEltYWdl
QnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIoKSBhbmQgU1ZHUmVuZGVyaW5nQ29u
dGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIgdG8gR3JhcGhpY3NDb250ZXh0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJh
c2UuY3BwCmluZGV4IDIwNWVlNjIxOTgyYWUxYTk4ZGJiYTljNjBiYTY4MDQ1NjdjY2Y4ZTMuLjll
YmQwZDhkYTAxZjA4NzBhMTU2OTA0ZDc2OWZhMmQwOGY1MTQxMDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJh
c2UuY3BwCkBAIC0yNDU5LDMzICsyNDU5LDMzIEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEQmFzZTo6ZHJhd1RleHRVbmNoZWNrZWQoY29uc3QgVGV4dFJ1biYgdGV4dFJ1biwgZG91CiAg
ICAgICAgICAgICBmb250UHJveHkuZHJhd0JpZGlUZXh0KCpjLCB0ZXh0UnVuLCBsb2NhdGlvbiAr
IG9mZnNldCwgRm9udENhc2NhZGU6OlVzZUZhbGxiYWNrSWZGb250Tm90UmVhZHkpOwogICAgICAg
ICB9CiAKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpjKTsK
KyAgICAgICAgYXV0byBtYXNrSW1hZ2UgPSBjLT5jcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIo
bWFza1JlY3Quc2l6ZSgpKTsKKyAgICAgICAgaWYgKCFtYXNrSW1hZ2UpCisgICAgICAgICAgICBy
ZXR1cm47CiAKLSAgICAgICAgYXV0byBwYWludE1hc2tJbWFnZSA9IFsmXSAoR3JhcGhpY3NDb250
ZXh0JiBtYXNrSW1hZ2VDb250ZXh0KSB7Ci0gICAgICAgICAgICBpZiAoZmlsbCkKLSAgICAgICAg
ICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6YmxhY2spOwotICAg
ICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgbWFza0ltYWdlQ29udGV4dC5zZXRTdHJv
a2VDb2xvcihDb2xvcjo6YmxhY2spOwotICAgICAgICAgICAgICAgIG1hc2tJbWFnZUNvbnRleHQu
c2V0U3Ryb2tlVGhpY2tuZXNzKGMtPnN0cm9rZVRoaWNrbmVzcygpKTsKLSAgICAgICAgICAgIH0K
KyAgICAgICAgYXV0byYgbWFza0ltYWdlQ29udGV4dCA9IG1hc2tJbWFnZS0+Y29udGV4dCgpOwog
Ci0gICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LnNldFRleHREcmF3aW5nTW9kZShmaWxsID8g
VGV4dERyYXdpbmdNb2RlOjpGaWxsIDogVGV4dERyYXdpbmdNb2RlOjpTdHJva2UpOworICAgICAg
ICBpZiAoZmlsbCkKKyAgICAgICAgICAgIG1hc2tJbWFnZUNvbnRleHQuc2V0RmlsbENvbG9yKENv
bG9yOjpibGFjayk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbWFza0ltYWdlQ29udGV4
dC5zZXRTdHJva2VDb2xvcihDb2xvcjo6YmxhY2spOworICAgICAgICAgICAgbWFza0ltYWdlQ29u
dGV4dC5zZXRTdHJva2VUaGlja25lc3MoYy0+c3Ryb2tlVGhpY2tuZXNzKCkpOworICAgICAgICB9
CiAKLSAgICAgICAgICAgIGlmICh1c2VNYXhXaWR0aCkgewotICAgICAgICAgICAgICAgIG1hc2tJ
bWFnZUNvbnRleHQudHJhbnNsYXRlKGxvY2F0aW9uIC0gbWFza1JlY3QubG9jYXRpb24oKSk7Ci0g
ICAgICAgICAgICAgICAgLy8gV2UgZHJhdyB3aGVuIGZvbnRXaWR0aCBpcyAwIHNvIGNvbXBvc2l0
aW5nIG9wZXJhdGlvbnMgKGVnLCBhICJjb3B5IiBvcCkgc3RpbGwgd29yay4KLSAgICAgICAgICAg
ICAgICBtYXNrSW1hZ2VDb250ZXh0LnNjYWxlKEZsb2F0U2l6ZSgoZm9udFdpZHRoID4gMCA/ICh3
aWR0aCAvIGZvbnRXaWR0aCkgOiAwKSwgMSkpOwotICAgICAgICAgICAgICAgIGZvbnRQcm94eS5k
cmF3QmlkaVRleHQobWFza0ltYWdlQ29udGV4dCwgdGV4dFJ1biwgRmxvYXRQb2ludCgwLCAwKSwg
Rm9udENhc2NhZGU6OlVzZUZhbGxiYWNrSWZGb250Tm90UmVhZHkpOwotICAgICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LnRyYW5zbGF0ZSgtbWFza1Jl
Y3QubG9jYXRpb24oKSk7Ci0gICAgICAgICAgICAgICAgZm9udFByb3h5LmRyYXdCaWRpVGV4dCht
YXNrSW1hZ2VDb250ZXh0LCB0ZXh0UnVuLCBsb2NhdGlvbiwgRm9udENhc2NhZGU6OlVzZUZhbGxi
YWNrSWZGb250Tm90UmVhZHkpOwotICAgICAgICAgICAgfQotICAgICAgICB9OworICAgICAgICBt
YXNrSW1hZ2VDb250ZXh0LnNldFRleHREcmF3aW5nTW9kZShmaWxsID8gVGV4dERyYXdpbmdNb2Rl
OjpGaWxsIDogVGV4dERyYXdpbmdNb2RlOjpTdHJva2UpOwogCi0gICAgICAgIC8vIEZJWE1FOiBI
YW5kbGluZyBncmFkaWVudHMgYW5kIHBhdHRlcm5zIGJ5IHBhaW50aW5nIHRoZSB0ZXh0IGludG8g
YSBtYXNrIGlzIHByb2JhYmx5IHRoZSB3cm9uZyB0aGluZyB0byBkbyBpbiB0aGUgcHJlc2VuY2Ug
b2YgY29sb3IgZ2x5cGhzLgotICAgICAgICBpZiAoYy0+Y2xpcFRvRHJhd2luZ0NvbW1hbmRzKG1h
c2tSZWN0LCBjb2xvclNwYWNlKCksIFdURk1vdmUocGFpbnRNYXNrSW1hZ2UpKSA9PSBHcmFwaGlj
c0NvbnRleHQ6OkNsaXBUb0RyYXdpbmdDb21tYW5kc1Jlc3VsdDo6RmFpbGVkVG9DcmVhdGVJbWFn
ZUJ1ZmZlcikKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKHVzZU1heFdpZHRoKSB7
CisgICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LnRyYW5zbGF0ZShsb2NhdGlvbiAtIG1hc2tS
ZWN0LmxvY2F0aW9uKCkpOworICAgICAgICAgICAgLy8gV2UgZHJhdyB3aGVuIGZvbnRXaWR0aCBp
cyAwIHNvIGNvbXBvc2l0aW5nIG9wZXJhdGlvbnMgKGVnLCBhICJjb3B5IiBvcCkgc3RpbGwgd29y
ay4KKyAgICAgICAgICAgIG1hc2tJbWFnZUNvbnRleHQuc2NhbGUoRmxvYXRTaXplKChmb250V2lk
dGggPiAwID8gKHdpZHRoIC8gZm9udFdpZHRoKSA6IDApLCAxKSk7CisgICAgICAgICAgICBmb250
UHJveHkuZHJhd0JpZGlUZXh0KG1hc2tJbWFnZUNvbnRleHQsIHRleHRSdW4sIEZsb2F0UG9pbnQo
MCwgMCksIEZvbnRDYXNjYWRlOjpVc2VGYWxsYmFja0lmRm9udE5vdFJlYWR5KTsKKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgIG1hc2tJbWFnZUNvbnRleHQudHJhbnNsYXRlKC1tYXNrUmVj
dC5sb2NhdGlvbigpKTsKKyAgICAgICAgICAgIGZvbnRQcm94eS5kcmF3QmlkaVRleHQobWFza0lt
YWdlQ29udGV4dCwgdGV4dFJ1biwgbG9jYXRpb24sIEZvbnRDYXNjYWRlOjpVc2VGYWxsYmFja0lm
Rm9udE5vdFJlYWR5KTsKKyAgICAgICAgfQogCisgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRl
U2F2ZXIgc3RhdGVTYXZlcigqYyk7CisgICAgICAgIGMtPmNsaXBUb0ltYWdlQnVmZmVyKCptYXNr
SW1hZ2UsIG1hc2tSZWN0KTsKICAgICAgICAgZHJhd1N0eWxlLmFwcGx5RmlsbENvbG9yKCpjKTsK
ICAgICAgICAgYy0+ZmlsbFJlY3QobWFza1JlY3QpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcApp
bmRleCBlYjA2YzcwOTExYWUxOTkzYWU1N2E5MGIyYTNiN2NjNWE0MjhjODdmLi41MTkzYTY2YWU5
OGJiMzE0ZmRiM2RhYjcyMGYyNWI1Yjc5YzU1YjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKQEAgLTc1MywxNyArNzUz
LDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBPdXRSb3VuZGVkUmVjdChjb25zdCBGbG9h
dFJvdW5kZWRSZWN0JiByZWN0KQogICAgIGNsaXBPdXQocGF0aCk7CiB9CiAKLUdyYXBoaWNzQ29u
dGV4dDo6Q2xpcFRvRHJhd2luZ0NvbW1hbmRzUmVzdWx0IEdyYXBoaWNzQ29udGV4dDo6Y2xpcFRv
RHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IERlc3Rp
bmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgRnVuY3Rpb248dm9pZChHcmFwaGljc0NvbnRl
eHQmKT4mJiBkcmF3aW5nRnVuY3Rpb24pCi17Ci0gICAgYXV0byBpbWFnZUJ1ZmZlciA9IGNyZWF0
ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcihkZXN0aW5hdGlvbi5zaXplKCksIGNvbG9yU3BhY2UpOwot
ICAgIGlmICghaW1hZ2VCdWZmZXIpCi0gICAgICAgIHJldHVybiBDbGlwVG9EcmF3aW5nQ29tbWFu
ZHNSZXN1bHQ6OkZhaWxlZFRvQ3JlYXRlSW1hZ2VCdWZmZXI7Ci0KLSAgICBkcmF3aW5nRnVuY3Rp
b24oaW1hZ2VCdWZmZXItPmNvbnRleHQoKSk7Ci0gICAgY2xpcFRvSW1hZ2VCdWZmZXIoKmltYWdl
QnVmZmVyLCBkZXN0aW5hdGlvbik7Ci0gICAgcmV0dXJuIENsaXBUb0RyYXdpbmdDb21tYW5kc1Jl
c3VsdDo6U3VjY2VzczsKLX0KLQogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBUb0ltYWdlQnVm
ZmVyKEltYWdlQnVmZmVyJiBpbWFnZUJ1ZmZlciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlv
blJlY3QpCiB7CiAgICAgaW1hZ2VCdWZmZXIuY2xpcFRvTWFzaygqdGhpcywgZGVzdGluYXRpb25S
ZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0LmgKaW5kZXggYzljNTJmYzIwODkxM2E0NTVjYjYwMWUxYWZhZjA0YmE3OWZlZjZhYi4u
NTZhOTA5ZTUzYmFiODA1ZjJkZDA3OWYxNDhhNmYwYWY5MzFjYTc0ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTQ2MSwx
MCArNDYxLDYgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBjbGlw
T3V0Um91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYpOwogICAgIHZpcnR1YWwgdm9p
ZCBjbGlwUGF0aChjb25zdCBQYXRoJiwgV2luZFJ1bGUgPSBXaW5kUnVsZTo6RXZlbk9kZCkgPSAw
OwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBjbGlwVG9JbWFnZUJ1ZmZlcihJbWFn
ZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYpOwotCi0gICAgZW51bSBjbGFzcyBDbGlwVG9EcmF3
aW5nQ29tbWFuZHNSZXN1bHQgOiBib29sIHsgU3VjY2VzcywgRmFpbGVkVG9DcmVhdGVJbWFnZUJ1
ZmZlciB9OwotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgQ2xpcFRvRHJhd2luZ0NvbW1hbmRz
UmVzdWx0IGNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9u
LCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29u
dGV4dCYpPiYmKTsKLQogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgSW50UmVjdCBjbGlwQm91
bmRzKCkgY29uc3Q7CiAKICAgICAvLyBUZXh0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9OdWxsR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9OdWxsR3JhcGhpY3NDb250ZXh0LmgKaW5kZXggMjFkMjBjNzE3OWYy
Y2RhMjNiY2M2MGZiNTMwNzM4NzE3NmRjM2IzNy4uZDBmOTYzNWRjZDU0NDAxNzJiZmQ4NTA2ZGY5
ZjcwNzE1Y2MwN2U2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTnVsbEdyYXBoaWNzQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL051bGxHcmFwaGljc0NvbnRleHQuaApAQCAtMTMxLDggKzEzMSw2IEBAIHByaXZhdGU6
CiAKICAgICB2b2lkIGNsaXBSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JikgZmlu
YWwgeyB9CiAgICAgdm9pZCBjbGlwT3V0Um91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVkUmVj
dCYpIGZpbmFsIHsgfQotCi0gICAgQ2xpcFRvRHJhd2luZ0NvbW1hbmRzUmVzdWx0IGNsaXBUb0Ry
YXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UmLCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYmKSBmaW5hbCB7IHJldHVybiBD
bGlwVG9EcmF3aW5nQ29tbWFuZHNSZXN1bHQ6OlN1Y2Nlc3M7IH0KICAgICB2b2lkIGNsaXBUb0lt
YWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JikgZmluYWwgeyB9CiAKICAg
ICB2b2lkIGZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIEdyYWRpZW50JikgZmluYWwgeyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0LmNwcAppbmRleCBkOWIwZWRkYzI2OGMyOTViNzNkOWI2NjFlZThj
MTU2ZGJhM2RiOTc2Li5hYTYwNzViNTc4ZmUxZDc0MTkxYWIxYzA2YTcwZWEyYjYzOTFiZjA5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE2LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNDAsMTAgKzI0MCw2IEBAIHZvaWQgRGlz
cGxheUxpc3Q6OmFwcGVuZChJdGVtSGFuZGxlIGl0ZW0pCiAgICAgICAgIHJldHVybiBhcHBlbmQ8
Q2xpcE91dFRvUGF0aD4oaXRlbS5nZXQ8Q2xpcE91dFRvUGF0aD4oKSk7CiAgICAgY2FzZSBJdGVt
VHlwZTo6Q2xpcFBhdGg6CiAgICAgICAgIHJldHVybiBhcHBlbmQ8Q2xpcFBhdGg+KGl0ZW0uZ2V0
PENsaXBQYXRoPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpCZWdpbkNsaXBUb0RyYXdpbmdDb21t
YW5kczoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcz4o
aXRlbS5nZXQ8QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM+KCkpOwotICAgIGNhc2UgSXRlbVR5
cGU6OkVuZENsaXBUb0RyYXdpbmdDb21tYW5kczoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxFbmRD
bGlwVG9EcmF3aW5nQ29tbWFuZHM+KGl0ZW0uZ2V0PEVuZENsaXBUb0RyYXdpbmdDb21tYW5kcz4o
KSk7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ZpbHRlcmVkSW1hZ2VCdWZmZXI6CiAgICAgICAg
IHJldHVybiBhcHBlbmQ8RHJhd0ZpbHRlcmVkSW1hZ2VCdWZmZXI+KGl0ZW0uZ2V0PERyYXdGaWx0
ZXJlZEltYWdlQnVmZmVyPigpKTsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3R2x5cGhzOgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcAppbmRleCA0NjNiMTM0NmRj
MzcyMzQ1YTQ5Y2I4YTViNTYyMmQyNmQ3ODYxNDE4Li4zZjljZDExNmQxNDU3M2YxNWM0ODEwMDZh
YjIxM2M0N2I5MTcwNDI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVm
ZmVyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAy
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTEwOSwxMiArMTA5LDYgQEAgdm9pZCBJdGVtSGFuZGxlOjphcHBseShHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQpCiAgICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFBhdGg6CiAgICAg
ICAgIGdldDxDbGlwUGF0aD4oKS5hcHBseShjb250ZXh0KTsKICAgICAgICAgcmV0dXJuOwotICAg
IGNhc2UgSXRlbVR5cGU6OkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOgotICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OkVu
ZENsaXBUb0RyYXdpbmdDb21tYW5kczoKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgICAgIHJldHVybjsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3RmlsdGVyZWRJbWFnZUJ1ZmZl
cjoKICAgICAgICAgZ2V0PERyYXdGaWx0ZXJlZEltYWdlQnVmZmVyPigpLmFwcGx5KGNvbnRleHQp
OwogICAgICAgICByZXR1cm47CkBAIC0zMjIsOSArMzE2LDYgQEAgdm9pZCBJdGVtSGFuZGxlOjpk
ZXN0cm95KCkKICAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVj
dGlibGU8QXBwbHlTdHJva2VQYXR0ZXJuPjo6dmFsdWUpOwogICAgICAgICByZXR1cm47CiAjZW5k
aWYKLSAgICBjYXNlIEl0ZW1UeXBlOjpCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kczoKLSAgICAg
ICAgZ2V0PEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPigpLn5CZWdpbkNsaXBUb0RyYXdpbmdD
b21tYW5kcygpOwotICAgICAgICByZXR1cm47CiAgICAgY2FzZSBJdGVtVHlwZTo6QmVnaW5UcmFu
c3BhcmVuY3lMYXllcjoKICAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9k
ZXN0cnVjdGlibGU8QmVnaW5UcmFuc3BhcmVuY3lMYXllcj46OnZhbHVlKTsKICAgICAgICAgcmV0
dXJuOwpAQCAtMzY3LDkgKzM1OCw2IEBAIHZvaWQgSXRlbUhhbmRsZTo6ZGVzdHJveSgpCiAgICAg
Y2FzZSBJdGVtVHlwZTo6RHJhd1JlY3Q6CiAgICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190
cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPERyYXdSZWN0Pjo6dmFsdWUpOwogICAgICAgICByZXR1cm47
Ci0gICAgY2FzZSBJdGVtVHlwZTo6RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOgotICAgICAgICBz
dGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxFbmRDbGlwVG9EcmF3
aW5nQ29tbWFuZHM+Ojp2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKICAgICBjYXNlIEl0ZW1UeXBl
OjpFbmRUcmFuc3BhcmVuY3lMYXllcjoKICAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3Ry
aXZpYWxseV9kZXN0cnVjdGlibGU8RW5kVHJhbnNwYXJlbmN5TGF5ZXI+Ojp2YWx1ZSk7CiAgICAg
ICAgIHJldHVybjsKQEAgLTU0Niw4ICs1MzQsNiBAQCBib29sIEl0ZW1IYW5kbGU6OnNhZmVDb3B5
KEl0ZW1UeXBlIGl0ZW1UeXBlLCBJdGVtSGFuZGxlIGRlc3RpbmF0aW9uKSBjb25zdAogICAgIGNh
c2UgSXRlbVR5cGU6OkFwcGx5U3Ryb2tlUGF0dGVybjoKICAgICAgICAgcmV0dXJuIGNvcHlJbnRv
PEFwcGx5U3Ryb2tlUGF0dGVybj4oaXRlbU9mZnNldCwgKnRoaXMpOwogI2VuZGlmCi0gICAgY2Fz
ZSBJdGVtVHlwZTo6QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM6Ci0gICAgICAgIHJldHVybiBj
b3B5SW50bzxCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcz4oaXRlbU9mZnNldCwgKnRoaXMpOwog
ICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2luVHJhbnNwYXJlbmN5TGF5ZXI6CiAgICAgICAgIHJldHVy
biBjb3B5SW50bzxCZWdpblRyYW5zcGFyZW5jeUxheWVyPihpdGVtT2Zmc2V0LCAqdGhpcyk7CiAg
ICAgY2FzZSBJdGVtVHlwZTo6Q2xlYXJSZWN0OgpAQCAtNTcwLDggKzU1Niw2IEBAIGJvb2wgSXRl
bUhhbmRsZTo6c2FmZUNvcHkoSXRlbVR5cGUgaXRlbVR5cGUsIEl0ZW1IYW5kbGUgZGVzdGluYXRp
b24pIGNvbnN0CiAgICAgICAgIHJldHVybiBjb3B5SW50bzxEcmF3TGluZT4oaXRlbU9mZnNldCwg
KnRoaXMpOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdSZWN0OgogICAgICAgICByZXR1cm4gY29w
eUludG88RHJhd1JlY3Q+KGl0ZW1PZmZzZXQsICp0aGlzKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpF
bmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxFbmRDbGlw
VG9EcmF3aW5nQ29tbWFuZHM+KGl0ZW1PZmZzZXQsICp0aGlzKTsKICAgICBjYXNlIEl0ZW1UeXBl
OjpFbmRUcmFuc3BhcmVuY3lMYXllcjoKICAgICAgICAgcmV0dXJuIGNvcHlJbnRvPEVuZFRyYW5z
cGFyZW5jeUxheWVyPihpdGVtT2Zmc2V0LCAqdGhpcyk7CiAgICAgY2FzZSBJdGVtVHlwZTo6Rmls
bEVsbGlwc2U6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5jcHAKaW5kZXgg
ZGZhMWU3NGZiMjQ4NmMzNGEwOWMxZmExYmEyY2JkZTc0OTAwNGRkYi4uOTFkM2IzYjhjMWUxYTlj
ZGQxMDRjYWM5NDgzMTExMGYxYWZjODVjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dEl0ZW1UeXBlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAt
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTc2LDEwICs3Niw2IEBAIHN0YXRpYyBzaXplX3Qgc2l6ZU9mSXRl
bUluQnl0ZXMoSXRlbVR5cGUgdHlwZSkKICAgICAgICAgcmV0dXJuIHNpemVvZihDbGlwT3V0VG9Q
YXRoKTsKICAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwUGF0aDoKICAgICAgICAgcmV0dXJuIHNpemVv
ZihDbGlwUGF0aCk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFu
ZHM6Ci0gICAgICAgIHJldHVybiBzaXplb2YoQmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHMpOwot
ICAgIGNhc2UgSXRlbVR5cGU6OkVuZENsaXBUb0RyYXdpbmdDb21tYW5kczoKLSAgICAgICAgcmV0
dXJuIHNpemVvZihFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHMpOwogICAgIGNhc2UgSXRlbVR5cGU6
OkRyYXdGaWx0ZXJlZEltYWdlQnVmZmVyOgogICAgICAgICByZXR1cm4gc2l6ZW9mKERyYXdGaWx0
ZXJlZEltYWdlQnVmZmVyKTsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3R2x5cGhzOgpAQCAtMTk0
LDggKzE5MCw2IEBAIGJvb2wgaXNEcmF3aW5nSXRlbShJdGVtVHlwZSB0eXBlKQogICAgIGNhc2Ug
SXRlbVR5cGU6OkNsaXBUb0ltYWdlQnVmZmVyOgogICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBPdXRU
b1BhdGg6CiAgICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFBhdGg6Ci0gICAgY2FzZSBJdGVtVHlwZTo6
QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM6Ci0gICAgY2FzZSBJdGVtVHlwZTo6RW5kQ2xpcFRv
RHJhd2luZ0NvbW1hbmRzOgogICAgIGNhc2UgSXRlbVR5cGU6OkNvbmNhdGVuYXRlQ1RNOgogICAg
IGNhc2UgSXRlbVR5cGU6OkZsdXNoQ29udGV4dDoKICAgICBjYXNlIEl0ZW1UeXBlOjpSZXN0b3Jl
OgpAQCAtMjkwLDcgKzI4NCw2IEBAIGJvb2wgaXNJbmxpbmVJdGVtKEl0ZW1UeXBlIHR5cGUpCiAg
ICAgICogYW5kICgzKSBhbGwgdGhlICJzdGF0aWMgY29uc3RleHByIGJvb2wgaXNJbmxpbmVJdGVt
InMgaW5zaWRlIHRoZSBpbmRpdmlkdWFsIGl0ZW0gY2xhc3Nlcy4gKi8KIAogICAgIHN3aXRjaCAo
dHlwZSkgewotICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOgog
ICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBPdXRUb1BhdGg6CiAgICAgY2FzZSBJdGVtVHlwZTo6Q2xp
cFBhdGg6CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ZvY3VzUmluZ1BhdGg6CkBAIC0zMjEsNyAr
MzE0LDYgQEAgYm9vbCBpc0lubGluZUl0ZW0oSXRlbVR5cGUgdHlwZSkKICAgICBjYXNlIEl0ZW1U
eXBlOjpDbGlwOgogICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBPdXQ6CiAgICAgY2FzZSBJdGVtVHlw
ZTo6Q2xpcFRvSW1hZ2VCdWZmZXI6Ci0gICAgY2FzZSBJdGVtVHlwZTo6RW5kQ2xpcFRvRHJhd2lu
Z0NvbW1hbmRzOgogICAgIGNhc2UgSXRlbVR5cGU6OkNvbmNhdGVuYXRlQ1RNOgogICAgIGNhc2Ug
SXRlbVR5cGU6OkRyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXI6CiAgICAgY2FzZSBJdGVtVHlwZTo6
RHJhd0VsbGlwc2U6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuaAppbmRleCA5
MWYzZjVmNTI4OGJjN2ViMmRhZDZlNDJkZGZiM2RiZjE5ODBjNzgzLi43MWU4NmQyMTBjZDdkYWYy
NzUwNTY5ZjA5NDRlMDRiNThhMzliZGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1UeXBlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtNTAsOCArNTAsNiBAQCBlbnVtIGNsYXNzIEl0ZW1UeXBlIDogdWludDhfdCB7CiAg
ICAgQ2xpcFRvSW1hZ2VCdWZmZXIsCiAgICAgQ2xpcE91dFRvUGF0aCwKICAgICBDbGlwUGF0aCwK
LSAgICBCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcywKLSAgICBFbmRDbGlwVG9EcmF3aW5nQ29t
bWFuZHMsCiAgICAgRHJhd0ZpbHRlcmVkSW1hZ2VCdWZmZXIsCiAgICAgRHJhd0dseXBocywKICAg
ICBEcmF3SW1hZ2VCdWZmZXIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKaW5k
ZXggYTM3NWRjMjYyNThjN2E0ZWJmNGUwZjE1NzAwYzlhNDBjY2IzYTZkYy4uODNlYjJlNWE5OGJi
NGYxNTA4ZWVjZDIwNzdjNDExMWY5NTFkNWI5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dEl0ZW1zLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUt
MjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTI4MSwxOSArMjgxLDYgQEAgc3RhdGljIFRleHRTdHJlYW0mIG9wZXJh
dG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IENsaXBQYXRoJiBpdGVtKQogICAgIHJldHVybiB0
czsKIH0KIAotc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNv
bnN0IEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzJiBpdGVtKQotewotICAgIHRzLmR1bXBQcm9w
ZXJ0eSgiZGVzdGluYXRpb24iLCBpdGVtLmRlc3RpbmF0aW9uKCkpOwotICAgIHRzLmR1bXBQcm9w
ZXJ0eSgiY29sb3Itc3BhY2UiLCBpdGVtLmNvbG9yU3BhY2UoKSk7Ci0gICAgcmV0dXJuIHRzOwot
fQotCi1zdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3Qg
RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzJiBpdGVtKQotewotICAgIHRzLmR1bXBQcm9wZXJ0eSgi
ZGVzdGluYXRpb24iLCBpdGVtLmRlc3RpbmF0aW9uKCkpOwotICAgIHJldHVybiB0czsKLX0KLQog
RHJhd0ZpbHRlcmVkSW1hZ2VCdWZmZXI6OkRyYXdGaWx0ZXJlZEltYWdlQnVmZmVyKHN0ZDo6b3B0
aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBzb3VyY2VJbWFnZUlkZW50aWZpZXIs
IGNvbnN0IEZsb2F0UmVjdCYgc291cmNlSW1hZ2VSZWN0LCBGaWx0ZXImIGZpbHRlcikKICAgICA6
IG1fc291cmNlSW1hZ2VJZGVudGlmaWVyKHNvdXJjZUltYWdlSWRlbnRpZmllcikKICAgICAsIG1f
c291cmNlSW1hZ2VSZWN0KHNvdXJjZUltYWdlUmVjdCkKQEAgLTEwNzYsOCArMTA2Myw2IEBAIHN0
YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBJdGVtVHlwZSB0eXBl
KQogICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBUb0ltYWdlQnVmZmVyOiB0cyA8PCAiY2xpcC10by1p
bWFnZS1idWZmZXIiOyBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwT3V0VG9QYXRoOiB0
cyA8PCAiY2xpcC1vdXQtdG8tcGF0aCI7IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBQ
YXRoOiB0cyA8PCAiY2xpcC1wYXRoIjsgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6QmVnaW5D
bGlwVG9EcmF3aW5nQ29tbWFuZHM6IHRzIDw8ICJiZWdpbi1jbGlwLXRvLWRyYXdpbmctY29tbWFu
ZHM6IjsgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRz
OiB0cyA8PCAiZW5kLWNsaXAtdG8tZHJhd2luZy1jb21tYW5kcyI7IGJyZWFrOwogICAgIGNhc2Ug
SXRlbVR5cGU6OkRyYXdGaWx0ZXJlZEltYWdlQnVmZmVyOiB0cyA8PCAiZHJhdy1maWx0ZXJlZC1p
bWFnZS1idWZmZXIiOyBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3R2x5cGhzOiB0cyA8
PCAiZHJhdy1nbHlwaHMiOyBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZm
ZXI6IHRzIDw8ICJkcmF3LWltYWdlLWJ1ZmZlciI7IGJyZWFrOwpAQCAtMTE5MiwxMiArMTE3Nyw2
IEBAIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIEl0ZW1IYW5kbGUgaXRl
bSkKICAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwUGF0aDoKICAgICAgICAgdHMgPDwgaXRlbS5nZXQ8
Q2xpcFBhdGg+KCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2luQ2xp
cFRvRHJhd2luZ0NvbW1hbmRzOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxCZWdpbkNsaXBUb0Ry
YXdpbmdDb21tYW5kcz4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RW5k
Q2xpcFRvRHJhd2luZ0NvbW1hbmRzOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxFbmRDbGlwVG9E
cmF3aW5nQ29tbWFuZHM+KCk7Ci0gICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRy
YXdGaWx0ZXJlZEltYWdlQnVmZmVyOgogICAgICAgICB0cyA8PCBpdGVtLmdldDxEcmF3RmlsdGVy
ZWRJbWFnZUJ1ZmZlcj4oKTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlbXMuaAppbmRleCBlZjQ4MDc4ZDZmYWM1ZmY2NWQxMWYzMDQ5NjAzNjU1MTQxMjg3NzY4Li5j
ZWExY2I0OTRlNDMwYmZkOTEzNTEyYjRkOWJiNGYzYmNjMThlNDM0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVt
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1zLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDE1LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDE1LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC04MTcsNzQgKzgxNyw2IEBAIHN0ZDo6b3B0aW9uYWw8Q2xp
cFBhdGg+IENsaXBQYXRoOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICByZXR1cm4ge3sg
V1RGTW92ZSgqcGF0aCksICp3aW5kUnVsZSB9fTsKIH0KIAotY2xhc3MgQmVnaW5DbGlwVG9EcmF3
aW5nQ29tbWFuZHMgewotcHVibGljOgotICAgIHN0YXRpYyBjb25zdGV4cHIgSXRlbVR5cGUgaXRl
bVR5cGUgPSBJdGVtVHlwZTo6QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM7Ci0gICAgc3RhdGlj
IGNvbnN0ZXhwciBib29sIGlzSW5saW5lSXRlbSA9IGZhbHNlOwotICAgIHN0YXRpYyBjb25zdGV4
cHIgYm9vbCBpc0RyYXdpbmdJdGVtID0gZmFsc2U7Ci0KLSAgICBCZWdpbkNsaXBUb0RyYXdpbmdD
b21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UgY29sb3JTcGFjZSkKLSAgICAgICAgOiBtX2Rlc3RpbmF0aW9uKGRlc3RpbmF0aW9uKQotICAg
ICAgICAsIG1fY29sb3JTcGFjZShXVEZNb3ZlKGNvbG9yU3BhY2UpKQotICAgIHsKLSAgICB9Ci0K
LSAgICAvLyBFeHBsaWNpdCBkZXN0cnVjdG9yIGFkZGVkIHRvIGZvcmNlIG5vbi10cml2aWFsIGRl
c3RydWN0b3Igb24gYWxsIHBsYXRmb3JtcwotICAgIC8vIGFzIHRoZSBlbmNvZGluZyBsb2dpYyBj
dXJyZW50bHkgaGFyZGNvZGVzIHdoaWNoIGRpc3BsYXkgbGlzdCBpdGVtIHR5cGVzIG5lZWQKLSAg
ICAvLyBvdXQgb2YgbGluZSB0cmVhdG1lbnQgcmF0aGVyIHRoYW4gdXNpbmcgdGhlIGlzSW5saW5l
SXRlbSBjb25zdGFudC4KLSAgICB+QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHMoKSB7IH0KLQot
ICAgIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2Rlc3Rp
bmF0aW9uOyB9Ci0gICAgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlKCkg
Y29uc3QgeyByZXR1cm4gbV9jb2xvclNwYWNlOyB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNv
ZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVj
b2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM+IGRl
Y29kZShEZWNvZGVyJik7Ci0KLXByaXZhdGU6Ci0gICAgRmxvYXRSZWN0IG1fZGVzdGluYXRpb247
Ci0gICAgRGVzdGluYXRpb25Db2xvclNwYWNlIG1fY29sb3JTcGFjZTsKLX07Ci0KLXRlbXBsYXRl
PGNsYXNzIEVuY29kZXI+Ci12b2lkIEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOjplbmNvZGUo
RW5jb2RlciYgZW5jb2RlcikgY29uc3QKLXsKLSAgICBlbmNvZGVyIDw8IG1fZGVzdGluYXRpb247
Ci0gICAgZW5jb2RlciA8PCBtX2NvbG9yU3BhY2U7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+Ci1zdGQ6Om9wdGlvbmFsPEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPiBCZWdpbkNsaXBU
b0RyYXdpbmdDb21tYW5kczo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCi17Ci0gICAgc3RkOjpv
cHRpb25hbDxGbG9hdFJlY3Q+IGRlc3RpbmF0aW9uOwotICAgIGRlY29kZXIgPj4gZGVzdGluYXRp
b247Ci0gICAgaWYgKCFkZXN0aW5hdGlvbikKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
LQotICAgIHN0ZDo6b3B0aW9uYWw8RGVzdGluYXRpb25Db2xvclNwYWNlPiBjb2xvclNwYWNlOwot
ICAgIGRlY29kZXIgPj4gY29sb3JTcGFjZTsKLSAgICBpZiAoIWNvbG9yU3BhY2UpCi0gICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICByZXR1cm4ge3sgKmRlc3RpbmF0aW9uLCBXVEZN
b3ZlKCpjb2xvclNwYWNlKSB9fTsKLX0KLQotY2xhc3MgRW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRz
IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgY29uc3RleHByIEl0ZW1UeXBlIGl0ZW1UeXBlID0gSXRl
bVR5cGU6OkVuZENsaXBUb0RyYXdpbmdDb21tYW5kczsKLSAgICBzdGF0aWMgY29uc3RleHByIGJv
b2wgaXNJbmxpbmVJdGVtID0gdHJ1ZTsKLSAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNEcmF3
aW5nSXRlbSA9IGZhbHNlOwotCi0gICAgRW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZs
b2F0UmVjdCYgZGVzdGluYXRpb24pCi0gICAgICAgIDogbV9kZXN0aW5hdGlvbihkZXN0aW5hdGlv
bikKLSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1fZGVzdGluYXRpb247IH0KLQotcHJpdmF0ZToKLSAgICBGbG9hdFJlY3Qg
bV9kZXN0aW5hdGlvbjsKLX07Ci0KIGNsYXNzIERyYXdGaWx0ZXJlZEltYWdlQnVmZmVyIHsKIHB1
YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIEl0ZW1UeXBlIGl0ZW1UeXBlID0gSXRlbVR5cGU6
OkRyYXdGaWx0ZXJlZEltYWdlQnVmZmVyOwpAQCAtMjM4OSw3ICsyMzIxLDYgQEAgcHJpdmF0ZToK
IAogdXNpbmcgRGlzcGxheUxpc3RJdGVtID0gc3RkOjp2YXJpYW50CiAgICAgPCBBcHBseURldmlj
ZVNjYWxlRmFjdG9yCi0gICAgLCBCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcwogICAgICwgQmVn
aW5UcmFuc3BhcmVuY3lMYXllcgogICAgICwgQ2xlYXJSZWN0CiAgICAgLCBDbGVhclNoYWRvdwpA
QCAtMjQxMiw3ICsyMzQzLDYgQEAgdXNpbmcgRGlzcGxheUxpc3RJdGVtID0gc3RkOjp2YXJpYW50
CiAgICAgLCBEcmF3UGF0aAogICAgICwgRHJhd1BhdHRlcm4KICAgICAsIERyYXdSZWN0Ci0gICAg
LCBFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHMKICAgICAsIEVuZFRyYW5zcGFyZW5jeUxheWVyCiAg
ICAgLCBGaWxsQ29tcG9zaXRlZFJlY3QKICAgICAsIEZpbGxFbGxpcHNlCkBAIC0yNDk4LDggKzI0
MjgsNiBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpJdGVtVHlwZT4gewogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Q2xpcFRv
SW1hZ2VCdWZmZXIsCiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpDbGlwT3V0
VG9QYXRoLAogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Q2xpcFBhdGgsCi0g
ICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpCZWdpbkNsaXBUb0RyYXdpbmdDb21t
YW5kcywKLSAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkVuZENsaXBUb0RyYXdp
bmdDb21tYW5kcywKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdHbHlw
aHMsCiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXIs
CiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2UsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKaW5kZXggODJjYjI1NTZiNTFh
MTM2M2RiNmIwOWFjM2EyN2E0MTE0MzdiZGZjOS4uY2U5MmNlNTU4NzdiNGJmZDc4MjQ0ZDBhNDRj
YzU0ZWJhNWM4NjA2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNw
cApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTQ4NiwyNyArNDg2LDYgQEAgdm9pZCBSZWNvcmRlcjo6Y2xpcFRvSW1hZ2VCdWZmZXIo
SW1hZ2VCdWZmZXImIGltYWdlQnVmZmVyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3QKICAgICByZWNv
cmRDbGlwVG9JbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlciwgZGVzdFJlY3QpOwogfQogCi1HcmFwaGlj
c0NvbnRleHQ6OkNsaXBUb0RyYXdpbmdDb21tYW5kc1Jlc3VsdCBSZWNvcmRlcjo6Y2xpcFRvRHJh
d2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IERlc3RpbmF0
aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgRnVuY3Rpb248dm9pZChHcmFwaGljc0NvbnRleHQm
KT4mJiBkcmF3aW5nRnVuY3Rpb24pCi17Ci0gICAgYXV0byBpbml0aWFsQ2xpcCA9IEZsb2F0UmVj
dChGbG9hdFBvaW50KCksIGRlc3RpbmF0aW9uLnNpemUoKSk7Ci0KLSAgICAvLyBUaGUgaW5pdGlh
bCBDVE0gbWF0Y2hlcyBJbWFnZUJ1ZmZlcidzIGluaXRpYWwgQ1RNLgotICAgIEFmZmluZVRyYW5z
Zm9ybSB0cmFuc2Zvcm0gPSBnZXRDVE0oR3JhcGhpY3NDb250ZXh0OjpEZWZpbml0ZWx5SW5jbHVk
ZURldmljZVNjYWxlKTsKLSAgICBGbG9hdFNpemUgc2NhbGVGYWN0b3IodHJhbnNmb3JtLnhTY2Fs
ZSgpLCB0cmFuc2Zvcm0ueVNjYWxlKCkpOwotICAgIGF1dG8gc2NhbGVkU2l6ZSA9IGV4cGFuZGVk
SW50U2l6ZShkZXN0aW5hdGlvbi5zaXplKCkgKiBzY2FsZUZhY3Rvcik7Ci0gICAgQWZmaW5lVHJh
bnNmb3JtIGluaXRpYWxDVE07Ci0gICAgaW5pdGlhbENUTS5zY2FsZSgxLCAtMSk7Ci0gICAgaW5p
dGlhbENUTS50cmFuc2xhdGUoMCwgLXNjYWxlZFNpemUuaGVpZ2h0KCkpOwotICAgIGluaXRpYWxD
VE0uc2NhbGUoc2NhbGVkU2l6ZSAvIGRlc3RpbmF0aW9uLnNpemUoKSk7Ci0KLSAgICBhdXRvIG5l
c3RlZENvbnRleHQgPSBjcmVhdGVOZXN0ZWRDb250ZXh0KGluaXRpYWxDbGlwLCBpbml0aWFsQ1RN
KTsKLSAgICByZWNvcmRCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcyhkZXN0aW5hdGlvbiwgY29s
b3JTcGFjZSk7Ci0gICAgZHJhd2luZ0Z1bmN0aW9uKCpuZXN0ZWRDb250ZXh0KTsKLSAgICByZWNv
cmRFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHMoZGVzdGluYXRpb24pOwotCi0gICAgcmV0dXJuIENs
aXBUb0RyYXdpbmdDb21tYW5kc1Jlc3VsdDo6U3VjY2VzczsKLX0KLQogUmVmUHRyPEltYWdlQnVm
ZmVyPiBSZWNvcmRlcjo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBj
b25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGUgcmVu
ZGVyaW5nTW9kZSwgUmVuZGVyaW5nTWV0aG9kIHJlbmRlcmluZ01ldGhvZCkgY29uc3QKIHsKICAg
ICBpZiAocmVuZGVyaW5nTWV0aG9kID09IFJlbmRlcmluZ01ldGhvZDo6RGVmYXVsdCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdFJlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCmluZGV4IDY1MGJhNTA3MDM4MDM5YmQxYTc2
NjY1NjNiYzAzYjU5ZWY3NDkxNWEuLjExMDEwNWYyOGIyMGQ2NDc5MWQyYjYxOGEzYmE1NjQ0MjZj
NmQ0NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaApAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTg5LDgg
Kzg5LDYgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCByZWNvcmRDbGlwVG9JbWFnZUJ1
ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb25SZWN0KSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIHJlY29yZENsaXBPdXRUb1BhdGgoY29uc3QgUGF0aCYpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkQ2xpcFBhdGgoY29uc3QgUGF0aCYsIFdpbmRSdWxlKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIHJlY29yZEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNv
bnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIERlc3RpbmF0aW9uQ29sb3JTcGFjZSkgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCByZWNvcmRFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxv
YXRSZWN0JiBkZXN0aW5hdGlvbikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZWNvcmREcmF3Rmls
dGVyZWRJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciosIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlSW1h
Z2VSZWN0LCBGaWx0ZXImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlY29yZERyYXdHbHlwaHMo
Y29uc3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqLCBjb25zdCBHbHlwaEJ1ZmZlckFk
dmFuY2UqLCB1bnNpZ25lZCBjb3VudCwgY29uc3QgRmxvYXRQb2ludCYgbG9jYWxBbmNob3IsIEZv
bnRTbW9vdGhpbmdNb2RlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlY29yZERyYXdJbWFnZUJ1
ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9IDA7CkBAIC0xNDQs
OCArMTQyLDYgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgYm9vbCByZWNvcmRSZXNvdXJjZVVz
ZShjb25zdCBTb3VyY2VJbWFnZSYpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgcmVjb3JkUmVzb3Vy
Y2VVc2UoRm9udCYpID0gMDsKIAotICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNz
Q29udGV4dD4gY3JlYXRlTmVzdGVkQ29udGV4dChjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlw
LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGluaXRpYWxDVE0pID0gMDsKLQogICAgIHN0cnVjdCBD
b250ZXh0U3RhdGUgewogICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gY3RtOwogICAgICAgICBGbG9h
dFJlY3QgY2xpcEJvdW5kczsKQEAgLTI3MSw3ICsyNjcsNiBAQCBwcml2YXRlOgogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgY2xpcFBhdGgoY29uc3QgUGF0aCYsIFdpbmRSdWxlKSBmaW5hbDsKICAg
ICBXRUJDT1JFX0VYUE9SVCBJbnRSZWN0IGNsaXBCb3VuZHMoKSBjb25zdCBmaW5hbDsKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGNsaXBUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3Qg
RmxvYXRSZWN0JikgZmluYWw7Ci0gICAgV0VCQ09SRV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0OjpD
bGlwVG9EcmF3aW5nQ29tbWFuZHNSZXN1bHQgY2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZs
b2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIEZ1bmN0
aW9uPHZvaWQoR3JhcGhpY3NDb250ZXh0Jik+JiYpIGZpbmFsOwogCiAjaWYgRU5BQkxFKFZJREVP
KQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcGFpbnRGcmFtZUZvck1lZGlhKE1lZGlhUGxheWVy
JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNv
cmRlckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmNwcAppbmRleCA5MjY1NGQ3MzIxMThmZjBmODcz
M2QwMmVjMzU2MmVhYTA2ZjJlNjQxLi42NDViMzI3ZWQ2NTAyNDc3YWEyZWY5MDY4ZGM3ZDUwMDU0
ZjlhNDJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5j
cHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMS0yMDIyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtNDksMTggKzQ5LDkgQEAgUmVjb3JkZXJJbXBsOjpSZWNvcmRlckltcGwoRGlzcGxheUxpc3Qm
IGRpc3BsYXlMaXN0LCBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYKICAgICBMT0dfV0lUSF9T
VFJFQU0oRGlzcGxheUxpc3RzLCBzdHJlYW0gPDwgIlxuUmVjb3JkaW5nIHdpdGggY2xpcCAiIDw8
IGluaXRpYWxDbGlwKTsKIH0KIAotUmVjb3JkZXJJbXBsOjpSZWNvcmRlckltcGwoUmVjb3JkZXJJ
bXBsJiBwYXJlbnQsIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgY29uc3QgRmxv
YXRSZWN0JiBpbml0aWFsQ2xpcCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBpbml0aWFsQ1RNKQot
ICAgIDogUmVjb3JkZXIocGFyZW50LCBzdGF0ZSwgaW5pdGlhbENsaXAsIGluaXRpYWxDVE0pCi0g
ICAgLCBtX2Rpc3BsYXlMaXN0KHBhcmVudC5tX2Rpc3BsYXlMaXN0KQotICAgICwgbV9pc05lc3Rl
ZCh0cnVlKQotewotfQotCiBSZWNvcmRlckltcGw6On5SZWNvcmRlckltcGwoKQogewogICAgIEFT
U0VSVChzdGF0ZVN0YWNrKCkuc2l6ZSgpID09IDEpOyAvLyBJZiB0aGlzIGZpcmVzLCBpdCBpbmRp
Y2F0ZXMgbWlzbWF0Y2hlZCBzYXZlL3Jlc3RvcmUuCi0gICAgaWYgKCFtX2lzTmVzdGVkKQotICAg
ICAgICBMT0coRGlzcGxheUxpc3RzLCAiUmVjb3JkZWQgZGlzcGxheSBsaXN0OlxuJXMiLCBtX2Rp
c3BsYXlMaXN0LmRlc2NyaXB0aW9uKCkuZGF0YSgpKTsKIH0KIAogdm9pZCBSZWNvcmRlckltcGw6
OmdldFBpeGVsQnVmZmVyKGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiBvdXRwdXRGb3JtYXQsIGNv
bnN0IEludFJlY3QmIHNvdXJjZVJlY3QpCkBAIC03MywxMSArNjQsNiBAQCB2b2lkIFJlY29yZGVy
SW1wbDo6cHV0UGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZmZXImIHBpeGVsQnVmZmVyLCBjb25z
dCBJbnRSZWN0JgogICAgIGFwcGVuZDxQdXRQaXhlbEJ1ZmZlcj4ocGl4ZWxCdWZmZXIsIHNyY1Jl
Y3QsIGRlc3RQb2ludCwgZGVzdEZvcm1hdCk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxHcmFwaGlj
c0NvbnRleHQ+IFJlY29yZGVySW1wbDo6Y3JlYXRlTmVzdGVkQ29udGV4dChjb25zdCBGbG9hdFJl
Y3QmIGluaXRpYWxDbGlwLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGluaXRpYWxDVE0pCi17Ci0g
ICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVjb3JkZXJJbXBsPigqdGhpcywgR3JhcGhpY3NDb250ZXh0
U3RhdGUgeyB9LCBpbml0aWFsQ2xpcCwgaW5pdGlhbENUTSk7Ci19Ci0KIHZvaWQgUmVjb3JkZXJJ
bXBsOjpyZWNvcmRTYXZlKCkKIHsKICAgICBhcHBlbmQ8U2F2ZT4oKTsKQEAgLTE4MywxNiArMTY5
LDYgQEAgdm9pZCBSZWNvcmRlckltcGw6OnJlY29yZENsaXBQYXRoKGNvbnN0IFBhdGgmIHBhdGgs
IFdpbmRSdWxlIHJ1bGUpCiAgICAgYXBwZW5kPENsaXBQYXRoPihwYXRoLCBydWxlKTsKIH0KIAot
dm9pZCBSZWNvcmRlckltcGw6OnJlY29yZEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0
IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNl
KQotewotICAgIGFwcGVuZDxCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcz4oZGVzdGluYXRpb24s
IGNvbG9yU3BhY2UpOwotfQotCi12b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkRW5kQ2xpcFRvRHJh
d2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24pCi17Ci0gICAgYXBwZW5k
PEVuZENsaXBUb0RyYXdpbmdDb21tYW5kcz4oZGVzdGluYXRpb24pOwotfQotCiB2b2lkIFJlY29y
ZGVySW1wbDo6cmVjb3JkRHJhd0ZpbHRlcmVkSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqIHNvdXJj
ZUltYWdlLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZUltYWdlUmVjdCwgRmlsdGVyJiBmaWx0ZXIp
CiB7CiAgICAgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGlkZW50
aWZpZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5oCmluZGV4
IDJjYTQzOGVmM2QzNTY4NjVmYjZhODg0MWIxMjAwNzBjNTcwYzU1NzAuLjNiOWY1YjE1ZDMxODYx
MGUzNDY1MjJiZDFhNWJmOGYyZDZhNTFhNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdFJlY29yZGVySW1wbC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjEtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTM2LDggKzM2LDYgQEAgY2xhc3MgUmVjb3JkZXJJbXBsIDogcHVi
bGljIFJlY29yZGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShSZWNvcmRlckltcGwpOwog
cHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFJlY29yZGVySW1wbChEaXNwbGF5TGlzdCYsIGNv
bnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgY29uc3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xpcCwg
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgRHJhd0dseXBoc1JlY29yZGVyOjpEZWNvbnN0cnVjdERy
YXdHbHlwaHMgPSBEcmF3R2x5cGhzUmVjb3JkZXI6OkRlY29uc3RydWN0RHJhd0dseXBoczo6WWVz
KTsKLSAgICBSZWNvcmRlckltcGwoUmVjb3JkZXJJbXBsJiBwYXJlbnQsIGNvbnN0IEdyYXBoaWNz
Q29udGV4dFN0YXRlJiwgY29uc3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xpcCwgY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiBpbml0aWFsQ1RNKTsKLQogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgflJl
Y29yZGVySW1wbCgpOwogCiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9kaXNw
bGF5TGlzdC5pc0VtcHR5KCk7IH0KQEAgLTcwLDggKzY4LDYgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHJlY29yZENsaXBUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0aW5hdGlvblJlY3QpIGZpbmFsOwogICAgIHZvaWQgcmVjb3JkQ2xpcE91dFRvUGF0aChjb25z
dCBQYXRoJikgZmluYWw7CiAgICAgdm9pZCByZWNvcmRDbGlwUGF0aChjb25zdCBQYXRoJiwgV2lu
ZFJ1bGUpIGZpbmFsOwotICAgIHZvaWQgcmVjb3JkQmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHMo
Y29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgRGVzdGluYXRpb25Db2xvclNwYWNlKSBmaW5h
bDsKLSAgICB2b2lkIHJlY29yZEVuZENsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJl
Y3QmIGRlc3RpbmF0aW9uKSBmaW5hbDsKICAgICB2b2lkIHJlY29yZERyYXdGaWx0ZXJlZEltYWdl
QnVmZmVyKEltYWdlQnVmZmVyKiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2VJbWFnZVJlY3QsIEZp
bHRlciYpIGZpbmFsOwogICAgIHZvaWQgcmVjb3JkRHJhd0dseXBocyhjb25zdCBGb250JiwgY29u
c3QgR2x5cGhCdWZmZXJHbHlwaCosIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSosIHVuc2lnbmVk
IGNvdW50LCBjb25zdCBGbG9hdFBvaW50JiBsb2NhbEFuY2hvciwgRm9udFNtb290aGluZ01vZGUp
IGZpbmFsOwogICAgIHZvaWQgcmVjb3JkRHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYpIGZpbmFsOwpAQCAtMTI1LDggKzEyMSw2IEBAIHByaXZhdGU6
CiAgICAgYm9vbCByZWNvcmRSZXNvdXJjZVVzZShjb25zdCBTb3VyY2VJbWFnZSYpIGZpbmFsOwog
ICAgIGJvb2wgcmVjb3JkUmVzb3VyY2VVc2UoRm9udCYpIGZpbmFsOwogCi0gICAgc3RkOjp1bmlx
dWVfcHRyPEdyYXBoaWNzQ29udGV4dD4gY3JlYXRlTmVzdGVkQ29udGV4dChjb25zdCBGbG9hdFJl
Y3QmIGluaXRpYWxDbGlwLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGluaXRpYWxDVE0pIGZpbmFs
OwotCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgY2xhc3MuLi4gQXJncz4KICAgICB2b2lkIGFw
cGVuZChBcmdzJiYuLi4gYXJncykKICAgICB7CkBAIC0xNDksNyArMTQzLDYgQEAgcHJpdmF0ZToK
ICAgICBGbG9hdFJlY3QgZXh0ZW50RnJvbUxvY2FsQm91bmRzKGNvbnN0IEZsb2F0UmVjdCYpIGNv
bnN0OwogCiAgICAgRGlzcGxheUxpc3QmIG1fZGlzcGxheUxpc3Q7Ci0gICAgYm9vbCBtX2lzTmVz
dGVkIHsgZmFsc2UgfTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxh
eWVyLmNwcAppbmRleCBiYWVkMTRjZTBhZDdjOWMwNGM5NWIwZTcxNTA1MmE2NTBlMDc5YTllLi42
MmVlM2JiYjRhY2Q1OTUzNDA0MTJlNTYxNTU0MzY3ZjJkNmZkN2ExIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBs
YXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxNi0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDQsMTEgKzQ0LDYgQEAgUmVwbGF5ZXI6
OlJlcGxheWVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRGlzcGxheUxpc3QmIGRp
c3BsYXlMaXN0LCBjb24KIHsKIH0KIAotR3JhcGhpY3NDb250ZXh0JiBSZXBsYXllcjo6Y29udGV4
dCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fbWFza0ltYWdlQnVmZmVyID8gbV9tYXNrSW1hZ2VC
dWZmZXItPmNvbnRleHQoKSA6IG1fY29udGV4dDsKLX0KLQogdGVtcGxhdGU8Y2xhc3MgVD4KIGlu
bGluZSBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGFw
cGx5SW1hZ2VCdWZmZXJJdGVtKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgUmVzb3Vy
Y2VIZWFwJiByZXNvdXJjZUhlYXAsIEl0ZW1IYW5kbGUgaXRlbSkKIHsKQEAgLTExNSw2MSArMTEw
LDQyIEBAIGlubGluZSBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXI+IGFwcGx5Rm9udEl0ZW0oR3JhcGhpY3NDCiBzdGQ6OnBhaXI8c3RkOjpvcHRpb25hbDxT
dG9wUmVwbGF5UmVhc29uPiwgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXI+PiBSZXBsYXllcjo6YXBwbHlJdGVtKEl0ZW1IYW5kbGUgaXRlbSkKIHsKICAgICBpZiAoaXRl
bS5pczxEcmF3SW1hZ2VCdWZmZXI+KCkpIHsKLSAgICAgICAgaWYgKGF1dG8gbWlzc2luZ0NhY2hl
ZFJlc291cmNlSWRlbnRpZmllciA9IGFwcGx5SW1hZ2VCdWZmZXJJdGVtPERyYXdJbWFnZUJ1ZmZl
cj4oY29udGV4dCgpLCBtX3Jlc291cmNlSGVhcCwgaXRlbSkpCisgICAgICAgIGlmIChhdXRvIG1p
c3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIgPSBhcHBseUltYWdlQnVmZmVySXRlbTxEcmF3
SW1hZ2VCdWZmZXI+KG1fY29udGV4dCwgbV9yZXNvdXJjZUhlYXAsIGl0ZW0pKQogICAgICAgICAg
ICAgcmV0dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6TWlzc2luZ0NhY2hlZFJlc291cmNlLCBXVEZN
b3ZlKG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIpIH07CiAgICAgICAgIHJldHVybiB7
IHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0IH07CiAgICAgfQogCiAgICAgaWYgKGl0ZW0uaXM8
Q2xpcFRvSW1hZ2VCdWZmZXI+KCkpIHsKLSAgICAgICAgaWYgKGF1dG8gbWlzc2luZ0NhY2hlZFJl
c291cmNlSWRlbnRpZmllciA9IGFwcGx5SW1hZ2VCdWZmZXJJdGVtPENsaXBUb0ltYWdlQnVmZmVy
Pihjb250ZXh0KCksIG1fcmVzb3VyY2VIZWFwLCBpdGVtKSkKKyAgICAgICAgaWYgKGF1dG8gbWlz
c2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllciA9IGFwcGx5SW1hZ2VCdWZmZXJJdGVtPENsaXBU
b0ltYWdlQnVmZmVyPihtX2NvbnRleHQsIG1fcmVzb3VyY2VIZWFwLCBpdGVtKSkKICAgICAgICAg
ICAgIHJldHVybiB7IFN0b3BSZXBsYXlSZWFzb246Ok1pc3NpbmdDYWNoZWRSZXNvdXJjZSwgV1RG
TW92ZShtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyKSB9OwogICAgICAgICByZXR1cm4g
eyBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCB9OwogICAgIH0KIAogICAgIGlmIChpdGVtLmlz
PERyYXdOYXRpdmVJbWFnZT4oKSkgewotICAgICAgICBpZiAoYXV0byBtaXNzaW5nQ2FjaGVkUmVz
b3VyY2VJZGVudGlmaWVyID0gYXBwbHlOYXRpdmVJbWFnZUl0ZW08RHJhd05hdGl2ZUltYWdlPihj
b250ZXh0KCksIG1fcmVzb3VyY2VIZWFwLCBpdGVtKSkKKyAgICAgICAgaWYgKGF1dG8gbWlzc2lu
Z0NhY2hlZFJlc291cmNlSWRlbnRpZmllciA9IGFwcGx5TmF0aXZlSW1hZ2VJdGVtPERyYXdOYXRp
dmVJbWFnZT4obV9jb250ZXh0LCBtX3Jlc291cmNlSGVhcCwgaXRlbSkpCiAgICAgICAgICAgICBy
ZXR1cm4geyBTdG9wUmVwbGF5UmVhc29uOjpNaXNzaW5nQ2FjaGVkUmVzb3VyY2UsIFdURk1vdmUo
bWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllcikgfTsKICAgICAgICAgcmV0dXJuIHsgc3Rk
OjpudWxsb3B0LCBzdGQ6Om51bGxvcHQgfTsKICAgICB9CiAKICAgICBpZiAoaXRlbS5pczxEcmF3
R2x5cGhzPigpKSB7Ci0gICAgICAgIGlmIChhdXRvIG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50
aWZpZXIgPSBhcHBseUZvbnRJdGVtPERyYXdHbHlwaHM+KGNvbnRleHQoKSwgbV9yZXNvdXJjZUhl
YXAsIGl0ZW0pKQorICAgICAgICBpZiAoYXV0byBtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlm
aWVyID0gYXBwbHlGb250SXRlbTxEcmF3R2x5cGhzPihtX2NvbnRleHQsIG1fcmVzb3VyY2VIZWFw
LCBpdGVtKSkKICAgICAgICAgICAgIHJldHVybiB7IFN0b3BSZXBsYXlSZWFzb246Ok1pc3NpbmdD
YWNoZWRSZXNvdXJjZSwgV1RGTW92ZShtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyKSB9
OwogICAgICAgICByZXR1cm4geyBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCB9OwogICAgIH0K
IAogICAgIGlmIChpdGVtLmlzPERyYXdQYXR0ZXJuPigpKSB7Ci0gICAgICAgIGlmIChhdXRvIG1p
c3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIgPSBhcHBseU5hdGl2ZUltYWdlSXRlbTxEcmF3
UGF0dGVybj4oY29udGV4dCgpLCBtX3Jlc291cmNlSGVhcCwgaXRlbSkpCisgICAgICAgIGlmIChh
dXRvIG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIgPSBhcHBseU5hdGl2ZUltYWdlSXRl
bTxEcmF3UGF0dGVybj4obV9jb250ZXh0LCBtX3Jlc291cmNlSGVhcCwgaXRlbSkpCiAgICAgICAg
ICAgICByZXR1cm4geyBTdG9wUmVwbGF5UmVhc29uOjpNaXNzaW5nQ2FjaGVkUmVzb3VyY2UsIFdU
Rk1vdmUobWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllcikgfTsKICAgICAgICAgcmV0dXJu
IHsgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQgfTsKICAgICB9CiAKICAgICBpZiAoaXRlbS5p
czxTZXRTdGF0ZT4oKSkgewotICAgICAgICBpZiAoYXV0byBtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJ
ZGVudGlmaWVyID0gYXBwbHlTZXRTdGF0ZUl0ZW0oY29udGV4dCgpLCBtX3Jlc291cmNlSGVhcCwg
aXRlbSkpCisgICAgICAgIGlmIChhdXRvIG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIg
PSBhcHBseVNldFN0YXRlSXRlbShtX2NvbnRleHQsIG1fcmVzb3VyY2VIZWFwLCBpdGVtKSkKICAg
ICAgICAgICAgIHJldHVybiB7IFN0b3BSZXBsYXlSZWFzb246Ok1pc3NpbmdDYWNoZWRSZXNvdXJj
ZSwgV1RGTW92ZShtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyKSB9OwogICAgICAgICBy
ZXR1cm4geyBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCB9OwogICAgIH0KIAotICAgIGlmIChp
dGVtLmlzPEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPigpKSB7Ci0gICAgICAgIGlmIChtX21h
c2tJbWFnZUJ1ZmZlcikKLSAgICAgICAgICAgIHJldHVybiB7IFN0b3BSZXBsYXlSZWFzb246Oklu
dmFsaWRJdGVtT3JFeHRlbnQsIHN0ZDo6bnVsbG9wdCB9OwotICAgICAgICBhdXRvJiBjbGlwSXRl
bSA9IGl0ZW0uZ2V0PEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPigpOwotICAgICAgICBtX21h
c2tJbWFnZUJ1ZmZlciA9IG1fY29udGV4dC5jcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIoY2xp
cEl0ZW0uZGVzdGluYXRpb24oKS5zaXplKCksIGNsaXBJdGVtLmNvbG9yU3BhY2UoKSk7Ci0gICAg
ICAgIGlmICghbV9tYXNrSW1hZ2VCdWZmZXIpCi0gICAgICAgICAgICByZXR1cm4geyBTdG9wUmVw
bGF5UmVhc29uOjpPdXRPZk1lbW9yeSwgc3RkOjpudWxsb3B0IH07Ci0gICAgICAgIHJldHVybiB7
IHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0IH07Ci0gICAgfQotCi0gICAgaWYgKGl0ZW0uaXM8
RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPigpKSB7Ci0gICAgICAgIGlmICghbV9tYXNrSW1hZ2VC
dWZmZXIpCi0gICAgICAgICAgICByZXR1cm4geyBTdG9wUmVwbGF5UmVhc29uOjpJbnZhbGlkSXRl
bU9yRXh0ZW50LCBzdGQ6Om51bGxvcHQgfTsKLSAgICAgICAgYXV0byYgY2xpcEl0ZW0gPSBpdGVt
LmdldDxFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM+KCk7Ci0gICAgICAgIG1fY29udGV4dC5jbGlw
VG9JbWFnZUJ1ZmZlcigqbV9tYXNrSW1hZ2VCdWZmZXIsIGNsaXBJdGVtLmRlc3RpbmF0aW9uKCkp
OwotICAgICAgICBtX21hc2tJbWFnZUJ1ZmZlciA9IG51bGxwdHI7Ci0gICAgICAgIHJldHVybiB7
IHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0IH07Ci0gICAgfQotCi0gICAgaXRlbS5hcHBseShj
b250ZXh0KCkpOworICAgIGl0ZW0uYXBwbHkobV9jb250ZXh0KTsKICAgICByZXR1cm4geyBzdGQ6
Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
UmVwbGF5ZXIuaAppbmRleCA2Zjc3MmJmNDU1MjYzOWJiZjMwNGRiNjZkMTliNjk4ODFmMTQ0NDU1
Li4yNTg0YTUzOWZjMDUzMDhjNjI0MmExMWZjMTc2NWVkYmE4YjBkOWY2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RS
ZXBsYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE2LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02MSwxMyArNjEsMTEgQEAgcHVibGljOgog
ICAgIFdFQkNPUkVfRVhQT1JUIFJlcGxheVJlc3VsdCByZXBsYXkoY29uc3QgRmxvYXRSZWN0JiBp
bml0aWFsQ2xpcCA9IHsgfSwgYm9vbCB0cmFja1JlcGxheUxpc3QgPSBmYWxzZSk7CiAKIHByaXZh
dGU6Ci0gICAgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KCkgY29uc3Q7CiAgICAgc3RkOjpwYWly
PHN0ZDo6b3B0aW9uYWw8U3RvcFJlcGxheVJlYXNvbj4sIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyPj4gYXBwbHlJdGVtKEl0ZW1IYW5kbGUpOwogCiAgICAgR3JhcGhp
Y3NDb250ZXh0JiBtX2NvbnRleHQ7CiAgICAgY29uc3QgRGlzcGxheUxpc3QmIG1fZGlzcGxheUxp
c3Q7CiAgICAgY29uc3QgUmVzb3VyY2VIZWFwJiBtX3Jlc291cmNlSGVhcDsKLSAgICBSZWZQdHI8
V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IG1fbWFza0ltYWdlQnVmZmVyOwogfTsKIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNv
c2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcApp
bmRleCA5OTBjNzFmYTQ3NDMwZjU5M2UyYzI0YzBiNzlkNzk1OGM0OGY3ZmVkLi45MjQ3ZjMwZTcy
MjQ3MzYwMTBlOTFmYjcyNjIwOGI3NGE4ZTlhZjEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJl
Y29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lh
L2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcApAQCAtMTEwNiwxMiArMTEw
Niw2IEBAIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6YXBwZW5kKHN0ZDo6dW5pcXVlX3B0
cjxQYWludGluZ09wZXJhdGlvbj4mJiBjb21tYW5kCiAgICAgbV9jb21tYW5kTGlzdC5hcHBlbmQo
V1RGTW92ZShjb21tYW5kKSk7CiB9CiAKLUdyYXBoaWNzQ29udGV4dDo6Q2xpcFRvRHJhd2luZ0Nv
bW1hbmRzUmVzdWx0IENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmNsaXBUb0RyYXdpbmdDb21tYW5k
cyhjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBGdW5jdGlv
bjx2b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYmKQotewotICAgIC8vIEZJWE1FOiBOb3QgaW1wbGVt
ZW50ZWQuCi0gICAgcmV0dXJuIENsaXBUb0RyYXdpbmdDb21tYW5kc1Jlc3VsdDo6U3VjY2VzczsK
LX0KLQogI2lmIEVOQUJMRShWSURFTykKIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6cGFp
bnRGcmFtZUZvck1lZGlhKE1lZGlhUGxheWVyJiBwbGF5ZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dGluYXRpb24pCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJh
dGlvblJlY29yZGVyLmgKaW5kZXggYWE5NGRlODg2MjcyNTViZDY1MDQ3MDcyZjVjYTJiOWRmZDNj
YzgzNS4uNzM5Nzc4ODZjZTczYTdmYTY3ZWYwOWExM2E4YjAyM2M3YzgzMWY5NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lh
Q2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaApAQCAt
OTYsNyArOTYsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgY2xpcFBhdGgoY29uc3QgV2ViQ29yZTo6
UGF0aCYsIFdlYkNvcmU6OldpbmRSdWxlKSBvdmVycmlkZTsKICAgICBXZWJDb3JlOjpJbnRSZWN0
IGNsaXBCb3VuZHMoKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIGNsaXBUb0ltYWdlQnVmZmVy
KFdlYkNvcmU6OkltYWdlQnVmZmVyJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jikgb3ZlcnJp
ZGU7Ci0gICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpDbGlwVG9EcmF3aW5nQ29tbWFuZHNS
ZXN1bHQgY2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgZGVz
dGluYXRpb24sIGNvbnN0IFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIEZ1bmN0aW9u
PHZvaWQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Jik+JiYpIG92ZXJyaWRlOwogI2lmIEVOQUJM
RShWSURFTykKICAgICB2b2lkIHBhaW50RnJhbWVGb3JNZWRpYShXZWJDb3JlOjpNZWRpYVBsYXll
ciYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgZGVzdGluYXRpb24pIG92ZXJyaWRlOwogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
RGlzcGxheUxpc3RSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKaW5kZXggNjMzYjM1ZjU3NTdjZjE4MDcx
NDFlZmIwMjQ1OWIzYzM4YTNmODM5MC4uYWZlNjMwYjk5ZjdlOGNmMTkyYmRiMTcwNDRmYmE2Nzgy
ZWM5ZjQ4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZURpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyLmNwcApAQCAtNTAsNyArNTAsNyBA
QCBSZW1vdGVSZXNvdXJjZUNhY2hlJiBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyOjpyZXNvdXJj
ZUNhY2hlKCkKIAogR3JhcGhpY3NDb250ZXh0JiBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyOjpk
cmF3aW5nQ29udGV4dCgpCiB7Ci0gICAgcmV0dXJuIG1fbWFza0ltYWdlQnVmZmVyID8gbV9tYXNr
SW1hZ2VCdWZmZXItPmNvbnRleHQoKSA6IG1faW1hZ2VCdWZmZXItPmNvbnRleHQoKTsKKyAgICBy
ZXR1cm4gbV9pbWFnZUJ1ZmZlci0+Y29udGV4dCgpOwogfQogCiB2b2lkIFJlbW90ZURpc3BsYXlM
aXN0UmVjb3JkZXI6OnN0YXJ0TGlzdGVuaW5nRm9ySVBDKCkKQEAgLTIwMCwyMiArMjAwLDYgQEAg
dm9pZCBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyOjpjbGlwUGF0aChjb25zdCBQYXRoJiBwYXRo
LCBXaW5kUnVsZSBydWxlKQogICAgIGhhbmRsZUl0ZW0oRGlzcGxheUxpc3Q6OkNsaXBQYXRoKHBh
dGgsIHJ1bGUpKTsKIH0KIAotdm9pZCBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyOjpiZWdpbkNs
aXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UpCi17Ci0gICAgbV9tYXNrSW1hZ2VCdWZm
ZXIgPSBkcmF3aW5nQ29udGV4dCgpLmNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcihkZXN0aW5h
dGlvbi5zaXplKCksIGNvbG9yU3BhY2UpOwotfQotCi12b2lkIFJlbW90ZURpc3BsYXlMaXN0UmVj
b3JkZXI6OmVuZENsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0
aW9uKQotewotICAgIGF1dG8gbWFza0ltYWdlQnVmZmVyID0gc3RkOjpleGNoYW5nZShtX21hc2tJ
bWFnZUJ1ZmZlciwgeyB9KTsKLSAgICBpZiAoIW1hc2tJbWFnZUJ1ZmZlcikgewotICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGRyYXdp
bmdDb250ZXh0KCkuY2xpcFRvSW1hZ2VCdWZmZXIoKm1hc2tJbWFnZUJ1ZmZlciwgZGVzdGluYXRp
b24pOwotfQotCiB2b2lkIFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXI6OmRyYXdGaWx0ZXJlZElt
YWdlQnVmZmVyKHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBzb3Vy
Y2VJbWFnZUlkZW50aWZpZXIsIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlSW1hZ2VSZWN0LCBJUEM6
OkZpbHRlclJlZmVyZW5jZSBmaWx0ZXJSZWZlcmVuY2UpCiB7CiAgICAgUmVmUHRyPEltYWdlQnVm
ZmVyPiBzb3VyY2VJbWFnZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5oCmluZGV4IGUxNjhlNWFl
YTIxNGE4MzAwYjQxMzQxN2Y4OTg1YjRkOTFkMzRmOWUuLjA4ZjkwZTZmNGFkZGVkNjQ3MzllZGQy
ZWRhNjY2NzQ1MDFlZGRmMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIuaApAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIxLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03OCw4ICs3OCw2
IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsaXBUb0ltYWdlQnVmZmVyKFdlYkNvcmU6OlJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBkZXN0aW5hdGlv
blJlY3QpOwogICAgIHZvaWQgY2xpcE91dFRvUGF0aChjb25zdCBXZWJDb3JlOjpQYXRoJik7CiAg
ICAgdm9pZCBjbGlwUGF0aChjb25zdCBXZWJDb3JlOjpQYXRoJiwgV2ViQ29yZTo6V2luZFJ1bGUp
OwotICAgIHZvaWQgYmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgV2ViQ29yZTo6Rmxv
YXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNl
Jik7Ci0gICAgdm9pZCBlbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgV2ViQ29yZTo6Rmxv
YXRSZWN0JiBkZXN0aW5hdGlvbik7CiAgICAgdm9pZCBkcmF3R2x5cGhzKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpEcmF3R2x5cGhzJiYpOwogICAgIHZvaWQgZHJhd0ZpbHRlcmVkSW1hZ2VCdWZmZXIo
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IHNvdXJj
ZUltYWdlSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBzb3VyY2VJbWFnZVJl
Y3QsIElQQzo6RmlsdGVyUmVmZXJlbmNlKTsKICAgICB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihXZWJD
b3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVyLCBj
b25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGRlc3RpbmF0aW9uUmVjdCwgY29uc3QgV2ViQ29yZTo6
RmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURp
c3BsYXlMaXN0UmVjb3JkZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5tZXNzYWdlcy5pbgppbmRleCBlMjNl
YWNjYTU3MmY3NWY3MTUxMjJkYTYzNmYzMzEwYzY5ODVhNzY0Li42OWI0MjgzNmMxMjBkY2M4ODdj
MGQ4OTIxMmYzN2ZlZDk0ZGQyNzU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5tZXNzYWdlcy5pbgorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRl
ci5tZXNzYWdlcy5pbgpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDIxLTIwMjIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC00NCw4ICs0NCw2IEBAIG1lc3NhZ2VzIC0+IFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIg
Tm90UmVmQ291bnRlZCBTdHJlYW0gewogICAgIENsaXBUb0ltYWdlQnVmZmVyKFdlYkNvcmU6OlJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFdl
YkNvcmU6OkZsb2F0UmVjdCBkZXN0aW5hdGlvblJlY3QpCiAgICAgQ2xpcE91dFRvUGF0aChXZWJD
b3JlOjpQYXRoIHBhdGgpCiAgICAgQ2xpcFBhdGgoV2ViQ29yZTo6UGF0aCBwYXRoLCBlbnVtOnVp
bnQ4X3QgV2ViQ29yZTo6V2luZFJ1bGUgd2luZFJ1bGUpCi0gICAgQmVnaW5DbGlwVG9EcmF3aW5n
Q29tbWFuZHMoV2ViQ29yZTo6RmxvYXRSZWN0IGRlc3RpbmF0aW9uLCBXZWJDb3JlOjpEZXN0aW5h
dGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSkKLSAgICBFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHMo
V2ViQ29yZTo6RmxvYXRSZWN0IGRlc3RpbmF0aW9uKQogICAgIERyYXdHbHlwaHMoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OkRyYXdHbHlwaHMgaXRlbSkKICAgICBEcmF3RmlsdGVyZWRJbWFnZUJ1ZmZl
cihzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gc291
cmNlSW1hZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpGbG9hdFJlY3Qgc291cmNlSW1hZ2VSZWN0LCBJ
UEM6OkZpbHRlclJlZmVyZW5jZSBmaWx0ZXIpCiAgICAgRHJhd0ltYWdlQnVmZmVyKFdlYkNvcmU6
OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBpbWFnZUJ1ZmZlcklkZW50aWZpZXIsIFdlYkNv
cmU6OkZsb2F0UmVjdCBkZXN0aW5hdGlvblJlY3QsIFdlYkNvcmU6OkZsb2F0UmVjdCBzcmNSZWN0
LCBzdHJ1Y3QgV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnMgb3B0aW9ucykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxp
c3RSZWNvcmRlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5LmNwcAppbmRleCBmNTQ3NTE5MGVkYzkw
MmQ2MzhjZjI3MDhhMDc0ZTU2ZWJiMDg2ZDAwLi4zMTY0NmI1Njk4NjUyMjM1ZTc0ZDRkZWM5MTkz
ZjdhODhmMWMwZjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJv
eHkuY3BwCkBAIC0xOTAsMTYgKzE5MCw2IEBAIHZvaWQgUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRl
clByb3h5OjpyZWNvcmRDbGlwUGF0aChjb25zdCBQYXRoJiBwYXRoLCBXaW5kUnVsZSByCiAgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlcjo6Q2xpcFBhdGgocGF0aCwg
cnVsZSkpOwogfQogCi12b2lkIFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eTo6cmVjb3Jk
QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwg
RGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UpCi17Ci0gICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlcjo6QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHMoZGVz
dGluYXRpb24sIGNvbG9yU3BhY2UpKTsKLX0KLQotdm9pZCBSZW1vdGVEaXNwbGF5TGlzdFJlY29y
ZGVyUHJveHk6OnJlY29yZEVuZENsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3Qm
IGRlc3RpbmF0aW9uKQotewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZURpc3BsYXlMaXN0UmVj
b3JkZXI6OkVuZENsaXBUb0RyYXdpbmdDb21tYW5kcyhkZXN0aW5hdGlvbikpOwotfQotCiB2b2lk
IFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eTo6cmVjb3JkRHJhd0ZpbHRlcmVkSW1hZ2VC
dWZmZXIoSW1hZ2VCdWZmZXIqIHNvdXJjZUltYWdlLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZUlt
YWdlUmVjdCwgRmlsdGVyJiBmaWx0ZXIpCiB7CiAgICAgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXI+IGlkZW50aWZpZXI7CkBAIC00NjIsMTEgKzQ1Miw2IEBAIHZvaWQg
UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5OjpmbHVzaENvbnRleHQoR3JhcGhpY3NDb250
ZXh0Rmx1c2hJZGVudGlmaWVyCiAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlRGlzcGxheUxpc3RS
ZWNvcmRlcjo6Rmx1c2hDb250ZXh0KGlkZW50aWZpZXIpKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRy
PEdyYXBoaWNzQ29udGV4dD4gUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5OjpjcmVhdGVO
ZXN0ZWRDb250ZXh0KGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYgaW5pdGlhbENUTSkKLXsKLSAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW1vdGVEaXNw
bGF5TGlzdFJlY29yZGVyUHJveHk+KCp0aGlzLCBpbml0aWFsQ2xpcCwgaW5pdGlhbENUTSk7Ci19
Ci0KIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5Ojpj
cmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIGNvbnN0IERlc3RpbmF0aW9u
Q29sb3JTcGFjZSYgY29sb3JTcGFjZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBSZW5k
ZXJpbmdNZXRob2QgcmVuZGVyaW5nTWV0aG9kKSBjb25zdAogewogICAgIGlmIChVTkxJS0VMWSgh
bV9yZW5kZXJpbmdCYWNrZW5kKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRl
clByb3h5LmgKaW5kZXggMWE5MDllMjI2MzYxNjBlNzY4Y2EzNzhmZDA3NTk1NjZmMWNmOGMxNC4u
N2UyMzdjYjUyZGIwYjllODIzNGUwNTRkNzY4MWMyMDNhMWUyMTNiMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29y
ZGVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1Jl
bW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjEtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTg5LDggKzg5LDYgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHJlY29yZENsaXBUb0ltYWdlQnVmZmVyKFdlYkNvcmU6OkltYWdlQnVmZmVyJiwgY29u
c3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBkZXN0aW5hdGlvblJlY3QpIGZpbmFsOwogICAgIHZvaWQg
cmVjb3JkQ2xpcE91dFRvUGF0aChjb25zdCBXZWJDb3JlOjpQYXRoJikgZmluYWw7CiAgICAgdm9p
ZCByZWNvcmRDbGlwUGF0aChjb25zdCBXZWJDb3JlOjpQYXRoJiwgV2ViQ29yZTo6V2luZFJ1bGUp
IGZpbmFsOwotICAgIHZvaWQgcmVjb3JkQmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3Qg
V2ViQ29yZTo6RmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xv
clNwYWNlKSBmaW5hbDsKLSAgICB2b2lkIHJlY29yZEVuZENsaXBUb0RyYXdpbmdDb21tYW5kcyhj
b25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGRlc3RpbmF0aW9uKSBmaW5hbDsKICAgICB2b2lkIHJl
Y29yZERyYXdGaWx0ZXJlZEltYWdlQnVmZmVyKFdlYkNvcmU6OkltYWdlQnVmZmVyKiwgY29uc3Qg
V2ViQ29yZTo6RmxvYXRSZWN0JiBzb3VyY2VJbWFnZVJlY3QsIFdlYkNvcmU6OkZpbHRlciYpIGZp
bmFsOwogICAgIHZvaWQgcmVjb3JkRHJhd0dseXBocyhjb25zdCBXZWJDb3JlOjpGb250JiwgY29u
c3QgV2ViQ29yZTo6R2x5cGhCdWZmZXJHbHlwaCosIGNvbnN0IFdlYkNvcmU6OkdseXBoQnVmZmVy
QWR2YW5jZSosIHVuc2lnbmVkIGNvdW50LCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiBsb2Nh
bEFuY2hvciwgV2ViQ29yZTo6Rm9udFNtb290aGluZ01vZGUpIGZpbmFsOwogICAgIHZvaWQgcmVj
b3JkRHJhd0ltYWdlQnVmZmVyKFdlYkNvcmU6OkltYWdlQnVmZmVyJiwgY29uc3QgV2ViQ29yZTo6
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYpIGZpbmFsOwpAQCAtMTQyLDggKzE0
MCw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCByZWNvcmRSZXNvdXJjZVVzZShjb25zdCBXZWJDb3Jl
OjpTb3VyY2VJbWFnZSYpIGZpbmFsOwogICAgIGJvb2wgcmVjb3JkUmVzb3VyY2VVc2UoV2ViQ29y
ZTo6Rm9udCYpIGZpbmFsOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dD4gY3JlYXRlTmVzdGVkQ29udGV4dChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGlu
aXRpYWxDbGlwLCBjb25zdCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mIGluaXRpYWxDVE0pIGZp
bmFsOwotCiAgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZl
cihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBjb25zdCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNv
bG9yU3BhY2UmLCBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlLCBXZWJDb3JlOjpSZW5kZXJpbmdNZXRo
b2QpIGNvbnN0IGZpbmFsOwogICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gY3JlYXRl
Q29tcGF0aWJsZUltYWdlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIGNvbnN0IFdl
YkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSYgPSBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0IoKSwgV2ViQ29yZTo6UmVuZGVyaW5nTWV0aG9kID0gV2ViQ29yZTo6UmVuZGVy
aW5nTWV0aG9kOjpEZWZhdWx0KSBjb25zdCBmaW5hbDsKICAgICBSZWZQdHI8V2ViQ29yZTo6SW1h
Z2VCdWZmZXI+IGNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9h
dFJlY3QmLCBjb25zdCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UmID0gV2ViQ29yZTo6
RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFdlYkNvcmU6OlJlbmRlcmluZ01ldGhvZCA9
IFdlYkNvcmU6OlJlbmRlcmluZ01ldGhvZDo6RGVmYXVsdCkgY29uc3QgZmluYWw7Cg==
</data>
<flag name="review"
          id="478250"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451584</attachid>
            <date>2022-02-10 11:35:27 -0800</date>
            <delta_ts>2022-02-10 16:28:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225959-20220210113526.patch</filename>
            <type>text/plain</type>
            <size>53687</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5NTE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2JhNWM4NWZjZDI4Yzc0
NmEyOTA4YzM1NTJkMTJiZTUxYWM3ZDg0Yy4uNzNiMGNkNmYzMjk0YmNkZThhMDFhZDUzMTBiYmVm
NGRiOTc2NTAxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDIyLTAyLTEwICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
RGVsZXRlIEdyYXBoaWNzQ29udGV4dDo6Y2xpcFRvRHJhd2luZ0NvbW1hbmRzKCkKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTk1OQorICAgICAgICBy
ZGFyOi8vNzg0OTUzODAKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAg
ICAgICBUaGlzIGZ1bmN0aW9uIHdhcyBhZGRlZCBpbiByMjY3NzQyIGFzIGEgd29ya2Fyb3VuZCBm
b3IgYSBHUFVQcm9jZXNzIGNhc2UKKyAgICAgICAgd2hpY2ggd2FzIGhhcHBlbmluZyBiZWNhdXNl
IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKCkgdXNlZAorICAgICAgICB0byBy
ZXR1cm4gaW4tcHJvY2VzcyBJbWFnZUJ1ZmZlci4gY2xpcFRvRHJhd2luZ0NvbW1hbmRzKCkgd2Fz
IGEgd2F5IHRvCisgICAgICAgIHJlY29yZCB0aGUgY2xpcHBlciBtYXNrIGltYWdlIGludG8gYSB0
ZW1wb3JhcnkgcmVtb3RlIEltYWdlQnVmZmVyLgorCisgICAgICAgIElmIEdyYXBoaWNzQ29udGV4
dDo6Y3JlYXRlQ29tcGF0aWJsZUltYWdlQnVmZmVyKCkgY2FuIGNyZWF0ZSBhbgorICAgICAgICBJ
bWFnZUJ1ZmZlciBzaW1pbGFyIHRvIHRoZSB1bmRlcmx5aW5nIEltYWdlQnVmZmVyIG9mIHRoZSBH
cmFwaGljc0NvbnRleHQsCisgICAgICAgIHRoZW4gR3JhcGhpY3NDb250ZXh0OjpjbGlwVG9EcmF3
aW5nQ29tbWFuZHMoKSBpcyBub3QgbmVlZGVkLgorCisgICAgICAgICogaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpkcmF3VGV4dFVuY2hlY2tlZCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6Y2xpcFRvRHJhd2luZ0NvbW1hbmRzKTogRGVsZXRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9OdWxsR3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6YXBwZW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFuZGxlOjphcHBseSk6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZTo6ZGVzdHJveSk6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6SXRlbUhhbmRsZTo6c2FmZUNvcHkgY29uc3QpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpzaXplT2ZJdGVtSW5CeXRlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6aXNEcmF3aW5nSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6aXNJbmxpbmVJdGVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpvcGVyYXRvcjw8KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOjpCZWdpbkNsaXBUb0RyYXdpbmdD
b21tYW5kcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6QmVnaW5D
bGlwVG9EcmF3aW5nQ29tbWFuZHM6On5CZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcyk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6QmVnaW5DbGlwVG9EcmF3aW5nQ29t
bWFuZHM6OmRlc3RpbmF0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kczo6Y29sb3JTcGFjZSBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6QmVnaW5DbGlwVG9EcmF3
aW5nQ29tbWFuZHM6OmVuY29kZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM6OmRlY29kZSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRz
OjpFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OkVuZENsaXBUb0RyYXdpbmdDb21tYW5kczo6ZGVzdGluYXRpb24gY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdFJlY29yZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNv
cmRlcjo6Y2xpcFRvRHJhd2luZ0NvbW1hbmRzKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjp+UmVjb3Jk
ZXJJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OmNy
ZWF0ZU5lc3RlZENvbnRleHQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkQmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHMpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3Jk
RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlckltcGwuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVwbGF5ZXI6OmFwcGx5SXRlbSk6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVwbGF5ZXI6OmNvbnRleHQgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdFJlcGxheWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWly
by9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHA6CisgICAgICAgIChOaWNvc2lhOjpD
YWlyb09wZXJhdGlvblJlY29yZGVyOjpjbGlwVG9EcmF3aW5nQ29tbWFuZHMpOiBEZWxldGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3Bl
cmF0aW9uUmVjb3JkZXIuaDoKKwogMjAyMi0wMi0wOSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlk
QGFwcGxlLmNvbT4KIAogICAgICAgICBbR1BVIFByb2Nlc3NdIE1vdmUgSW1hZ2VCdWZmZXI6OmNy
ZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcigpIGFuZCBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVh
dGVJbWFnZUJ1ZmZlciB0byBHcmFwaGljc0NvbnRleHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggY2NhNzRlZTdkYTUz
M2ViYjAyZDliMDFmMTE4YmQ1YWEyNGUzOWU1Ny4uNTFlNzJiZDFiYmMxZThhZDA5NzVhYWNkOWI1
ZDJkNmI4MWU4YjBjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAyMi0wMi0xMCAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3Nd
IERlbGV0ZSBHcmFwaGljc0NvbnRleHQ6OmNsaXBUb0RyYXdpbmdDb21tYW5kcygpCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU5NTkKKyAgICAgICAg
cmRhcjovLzc4NDk1MzgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAg
ICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyOjpkcmF3aW5nQ29u
dGV4dCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXI6OmJlZ2lu
Q2xpcFRvRHJhd2luZ0NvbW1hbmRzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
RGlzcGxheUxpc3RSZWNvcmRlcjo6ZW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKTogRGVsZXRlZC4K
KyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIu
aDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3Jk
ZXIubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
RGlzcGxheUxpc3RSZWNvcmRlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlRGlz
cGxheUxpc3RSZWNvcmRlclByb3h5OjpyZWNvcmRCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcyk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94
eTo6cmVjb3JkRW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5OjpjcmVhdGVOZXN0ZWRDb250ZXh0
KTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVEaXNw
bGF5TGlzdFJlY29yZGVyUHJveHkuaDoKKwogMjAyMi0wMi0wOSAgU2FpZCBBYm91LUhhbGxhd2Eg
IDxzYWlkQGFwcGxlLmNvbT4KIAogICAgICAgICBbR1BVIFByb2Nlc3NdIE1vdmUgSW1hZ2VCdWZm
ZXI6OmNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcigpIGFuZCBTVkdSZW5kZXJpbmdDb250ZXh0
OjpjcmVhdGVJbWFnZUJ1ZmZlciB0byBHcmFwaGljc0NvbnRleHQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5j
cHAKaW5kZXggMjA1ZWU2MjE5ODJhZTFhOThkYmJhOWM2MGJhNjgwNDU2N2NjZjhlMy4uOWViZDBk
OGRhMDFmMDg3MGExNTY5MDRkNzY5ZmEyZDA4ZjUxNDEwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5j
cHAKQEAgLTI0NTksMzMgKzI0NTksMzMgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRC
YXNlOjpkcmF3VGV4dFVuY2hlY2tlZChjb25zdCBUZXh0UnVuJiB0ZXh0UnVuLCBkb3UKICAgICAg
ICAgICAgIGZvbnRQcm94eS5kcmF3QmlkaVRleHQoKmMsIHRleHRSdW4sIGxvY2F0aW9uICsgb2Zm
c2V0LCBGb250Q2FzY2FkZTo6VXNlRmFsbGJhY2tJZkZvbnROb3RSZWFkeSk7CiAgICAgICAgIH0K
IAotICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmMpOworICAg
ICAgICBhdXRvIG1hc2tJbWFnZSA9IGMtPmNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcihtYXNr
UmVjdC5zaXplKCkpOworICAgICAgICBpZiAoIW1hc2tJbWFnZSkKKyAgICAgICAgICAgIHJldHVy
bjsKIAotICAgICAgICBhdXRvIHBhaW50TWFza0ltYWdlID0gWyZdIChHcmFwaGljc0NvbnRleHQm
IG1hc2tJbWFnZUNvbnRleHQpIHsKLSAgICAgICAgICAgIGlmIChmaWxsKQotICAgICAgICAgICAg
ICAgIG1hc2tJbWFnZUNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjpibGFjayk7Ci0gICAgICAg
ICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LnNldFN0cm9rZUNv
bG9yKENvbG9yOjpibGFjayk7Ci0gICAgICAgICAgICAgICAgbWFza0ltYWdlQ29udGV4dC5zZXRT
dHJva2VUaGlja25lc3MoYy0+c3Ryb2tlVGhpY2tuZXNzKCkpOwotICAgICAgICAgICAgfQorICAg
ICAgICBhdXRvJiBtYXNrSW1hZ2VDb250ZXh0ID0gbWFza0ltYWdlLT5jb250ZXh0KCk7CiAKLSAg
ICAgICAgICAgIG1hc2tJbWFnZUNvbnRleHQuc2V0VGV4dERyYXdpbmdNb2RlKGZpbGwgPyBUZXh0
RHJhd2luZ01vZGU6OkZpbGwgOiBUZXh0RHJhd2luZ01vZGU6OlN0cm9rZSk7CisgICAgICAgIGlm
IChmaWxsKQorICAgICAgICAgICAgbWFza0ltYWdlQ29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3I6
OmJsYWNrKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LnNl
dFN0cm9rZUNvbG9yKENvbG9yOjpibGFjayk7CisgICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0
LnNldFN0cm9rZVRoaWNrbmVzcyhjLT5zdHJva2VUaGlja25lc3MoKSk7CisgICAgICAgIH0KIAot
ICAgICAgICAgICAgaWYgKHVzZU1heFdpZHRoKSB7Ci0gICAgICAgICAgICAgICAgbWFza0ltYWdl
Q29udGV4dC50cmFuc2xhdGUobG9jYXRpb24gLSBtYXNrUmVjdC5sb2NhdGlvbigpKTsKLSAgICAg
ICAgICAgICAgICAvLyBXZSBkcmF3IHdoZW4gZm9udFdpZHRoIGlzIDAgc28gY29tcG9zaXRpbmcg
b3BlcmF0aW9ucyAoZWcsIGEgImNvcHkiIG9wKSBzdGlsbCB3b3JrLgotICAgICAgICAgICAgICAg
IG1hc2tJbWFnZUNvbnRleHQuc2NhbGUoRmxvYXRTaXplKChmb250V2lkdGggPiAwID8gKHdpZHRo
IC8gZm9udFdpZHRoKSA6IDApLCAxKSk7Ci0gICAgICAgICAgICAgICAgZm9udFByb3h5LmRyYXdC
aWRpVGV4dChtYXNrSW1hZ2VDb250ZXh0LCB0ZXh0UnVuLCBGbG9hdFBvaW50KDAsIDApLCBGb250
Q2FzY2FkZTo6VXNlRmFsbGJhY2tJZkZvbnROb3RSZWFkeSk7Ci0gICAgICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgICAgIG1hc2tJbWFnZUNvbnRleHQudHJhbnNsYXRlKC1tYXNrUmVjdC5s
b2NhdGlvbigpKTsKLSAgICAgICAgICAgICAgICBmb250UHJveHkuZHJhd0JpZGlUZXh0KG1hc2tJ
bWFnZUNvbnRleHQsIHRleHRSdW4sIGxvY2F0aW9uLCBGb250Q2FzY2FkZTo6VXNlRmFsbGJhY2tJ
ZkZvbnROb3RSZWFkeSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH07CisgICAgICAgIG1hc2tJ
bWFnZUNvbnRleHQuc2V0VGV4dERyYXdpbmdNb2RlKGZpbGwgPyBUZXh0RHJhd2luZ01vZGU6OkZp
bGwgOiBUZXh0RHJhd2luZ01vZGU6OlN0cm9rZSk7CiAKLSAgICAgICAgLy8gRklYTUU6IEhhbmRs
aW5nIGdyYWRpZW50cyBhbmQgcGF0dGVybnMgYnkgcGFpbnRpbmcgdGhlIHRleHQgaW50byBhIG1h
c2sgaXMgcHJvYmFibHkgdGhlIHdyb25nIHRoaW5nIHRvIGRvIGluIHRoZSBwcmVzZW5jZSBvZiBj
b2xvciBnbHlwaHMuCi0gICAgICAgIGlmIChjLT5jbGlwVG9EcmF3aW5nQ29tbWFuZHMobWFza1Jl
Y3QsIGNvbG9yU3BhY2UoKSwgV1RGTW92ZShwYWludE1hc2tJbWFnZSkpID09IEdyYXBoaWNzQ29u
dGV4dDo6Q2xpcFRvRHJhd2luZ0NvbW1hbmRzUmVzdWx0OjpGYWlsZWRUb0NyZWF0ZUltYWdlQnVm
ZmVyKQotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAodXNlTWF4V2lkdGgpIHsKKyAg
ICAgICAgICAgIG1hc2tJbWFnZUNvbnRleHQudHJhbnNsYXRlKGxvY2F0aW9uIC0gbWFza1JlY3Qu
bG9jYXRpb24oKSk7CisgICAgICAgICAgICAvLyBXZSBkcmF3IHdoZW4gZm9udFdpZHRoIGlzIDAg
c28gY29tcG9zaXRpbmcgb3BlcmF0aW9ucyAoZWcsIGEgImNvcHkiIG9wKSBzdGlsbCB3b3JrLgor
ICAgICAgICAgICAgbWFza0ltYWdlQ29udGV4dC5zY2FsZShGbG9hdFNpemUoKGZvbnRXaWR0aCA+
IDAgPyAod2lkdGggLyBmb250V2lkdGgpIDogMCksIDEpKTsKKyAgICAgICAgICAgIGZvbnRQcm94
eS5kcmF3QmlkaVRleHQobWFza0ltYWdlQ29udGV4dCwgdGV4dFJ1biwgRmxvYXRQb2ludCgwLCAw
KSwgRm9udENhc2NhZGU6OlVzZUZhbGxiYWNrSWZGb250Tm90UmVhZHkpOworICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgbWFza0ltYWdlQ29udGV4dC50cmFuc2xhdGUoLW1hc2tSZWN0Lmxv
Y2F0aW9uKCkpOworICAgICAgICAgICAgZm9udFByb3h5LmRyYXdCaWRpVGV4dChtYXNrSW1hZ2VD
b250ZXh0LCB0ZXh0UnVuLCBsb2NhdGlvbiwgRm9udENhc2NhZGU6OlVzZUZhbGxiYWNrSWZGb250
Tm90UmVhZHkpOworICAgICAgICB9CiAKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZl
ciBzdGF0ZVNhdmVyKCpjKTsKKyAgICAgICAgYy0+Y2xpcFRvSW1hZ2VCdWZmZXIoKm1hc2tJbWFn
ZSwgbWFza1JlY3QpOwogICAgICAgICBkcmF3U3R5bGUuYXBwbHlGaWxsQ29sb3IoKmMpOwogICAg
ICAgICBjLT5maWxsUmVjdChtYXNrUmVjdCk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCmluZGV4
IGViMDZjNzA5MTFhZTE5OTNhZTU3YTkwYjJhM2I3Y2M1YTQyOGM4N2YuLjUxOTNhNjZhZTk4YmIz
MTRmZGIzZGFiNzIwZjI1YjViNzljNTViNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcApAQCAtNzUzLDE3ICs3NTMsNiBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcE91dFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0Um91
bmRlZFJlY3QmIHJlY3QpCiAgICAgY2xpcE91dChwYXRoKTsKIH0KIAotR3JhcGhpY3NDb250ZXh0
OjpDbGlwVG9EcmF3aW5nQ29tbWFuZHNSZXN1bHQgR3JhcGhpY3NDb250ZXh0OjpjbGlwVG9EcmF3
aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRGVzdGluYXRp
b25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4dCYp
PiYmIGRyYXdpbmdGdW5jdGlvbikKLXsKLSAgICBhdXRvIGltYWdlQnVmZmVyID0gY3JlYXRlQ29t
cGF0aWJsZUltYWdlQnVmZmVyKGRlc3RpbmF0aW9uLnNpemUoKSwgY29sb3JTcGFjZSk7Ci0gICAg
aWYgKCFpbWFnZUJ1ZmZlcikKLSAgICAgICAgcmV0dXJuIENsaXBUb0RyYXdpbmdDb21tYW5kc1Jl
c3VsdDo6RmFpbGVkVG9DcmVhdGVJbWFnZUJ1ZmZlcjsKLQotICAgIGRyYXdpbmdGdW5jdGlvbihp
bWFnZUJ1ZmZlci0+Y29udGV4dCgpKTsKLSAgICBjbGlwVG9JbWFnZUJ1ZmZlcigqaW1hZ2VCdWZm
ZXIsIGRlc3RpbmF0aW9uKTsKLSAgICByZXR1cm4gQ2xpcFRvRHJhd2luZ0NvbW1hbmRzUmVzdWx0
OjpTdWNjZXNzOwotfQotCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcFRvSW1hZ2VCdWZmZXIo
SW1hZ2VCdWZmZXImIGltYWdlQnVmZmVyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uUmVj
dCkKIHsKICAgICBpbWFnZUJ1ZmZlci5jbGlwVG9NYXNrKCp0aGlzLCBkZXN0aW5hdGlvblJlY3Qp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuaAppbmRleCBjOWM1MmZjMjA4OTEzYTQ1NWNiNjAxZTFhZmFmMDRiYTc5ZmVmNmFiLi41NmE5
MDllNTNiYWI4MDVmMmRkMDc5ZjE0OGE2ZjBhZjkzMWNhNzRkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApAQCAtNDYxLDEwICs0
NjEsNiBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGNsaXBPdXRS
b3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0Jik7CiAgICAgdmlydHVhbCB2b2lkIGNs
aXBQYXRoKGNvbnN0IFBhdGgmLCBXaW5kUnVsZSA9IFdpbmRSdWxlOjpFdmVuT2RkKSA9IDA7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGNsaXBUb0ltYWdlQnVmZmVyKEltYWdlQnVm
ZmVyJiwgY29uc3QgRmxvYXRSZWN0Jik7Ci0KLSAgICBlbnVtIGNsYXNzIENsaXBUb0RyYXdpbmdD
b21tYW5kc1Jlc3VsdCA6IGJvb2wgeyBTdWNjZXNzLCBGYWlsZWRUb0NyZWF0ZUltYWdlQnVmZmVy
IH07Ci0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBDbGlwVG9EcmF3aW5nQ29tbWFuZHNSZXN1
bHQgY2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNv
bnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3NDb250ZXh0
Jik+JiYpOwotCiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBJbnRSZWN0IGNsaXBCb3VuZHMo
KSBjb25zdDsKIAogICAgIC8vIFRleHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL051bGxHcmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL051bGxHcmFwaGljc0NvbnRleHQuaAppbmRleCAyMWQyMGM3MTc5ZjJjZGEy
M2JjYzYwZmI1MzA3Mzg3MTc2ZGMzYjM3Li5kMGY5NjM1ZGNkNTQ0MDE3MmJmZDg1MDZkZjlmNzA3
MTVjYzA3ZTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9O
dWxsR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTnVsbEdyYXBoaWNzQ29udGV4dC5oCkBAIC0xMzEsOCArMTMxLDYgQEAgcHJpdmF0ZToKIAog
ICAgIHZvaWQgY2xpcFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmKSBmaW5hbCB7
IH0KICAgICB2b2lkIGNsaXBPdXRSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0Jikg
ZmluYWwgeyB9Ci0KLSAgICBDbGlwVG9EcmF3aW5nQ29tbWFuZHNSZXN1bHQgY2xpcFRvRHJhd2lu
Z0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYs
IEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3NDb250ZXh0Jik+JiYpIGZpbmFsIHsgcmV0dXJuIENsaXBU
b0RyYXdpbmdDb21tYW5kc1Jlc3VsdDo6U3VjY2VzczsgfQogICAgIHZvaWQgY2xpcFRvSW1hZ2VC
dWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmKSBmaW5hbCB7IH0KIAogICAgIHZv
aWQgZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiwgR3JhZGllbnQmKSBmaW5hbCB7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3QuY3BwCmluZGV4IGQ5YjBlZGRjMjY4YzI5NWI3M2Q5YjY2MWVlOGMxNTZk
YmEzZGI5NzYuLmFhNjA3NWI1NzhmZTFkNzQxOTFhYjFjMDZhNzBlYTJiNjM5MWJmMDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTYtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI0MCwxMCArMjQwLDYgQEAgdm9pZCBEaXNwbGF5
TGlzdDo6YXBwZW5kKEl0ZW1IYW5kbGUgaXRlbSkKICAgICAgICAgcmV0dXJuIGFwcGVuZDxDbGlw
T3V0VG9QYXRoPihpdGVtLmdldDxDbGlwT3V0VG9QYXRoPigpKTsKICAgICBjYXNlIEl0ZW1UeXBl
OjpDbGlwUGF0aDoKICAgICAgICAgcmV0dXJuIGFwcGVuZDxDbGlwUGF0aD4oaXRlbS5nZXQ8Q2xp
cFBhdGg+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRz
OgotICAgICAgICByZXR1cm4gYXBwZW5kPEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPihpdGVt
LmdldDxCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcz4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6
RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOgotICAgICAgICByZXR1cm4gYXBwZW5kPEVuZENsaXBU
b0RyYXdpbmdDb21tYW5kcz4oaXRlbS5nZXQ8RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPigpKTsK
ICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3RmlsdGVyZWRJbWFnZUJ1ZmZlcjoKICAgICAgICAgcmV0
dXJuIGFwcGVuZDxEcmF3RmlsdGVyZWRJbWFnZUJ1ZmZlcj4oaXRlbS5nZXQ8RHJhd0ZpbHRlcmVk
SW1hZ2VCdWZmZXI+KCkpOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdHbHlwaHM6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJdGVtQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwCmluZGV4IDQ2M2IxMzQ2ZGMzNzIz
NDVhNDljYjhhNWI1NjIyZDI2ZDc4NjE0MTguLjNmOWNkMTE2ZDE0NTczZjE1YzQ4MTAwNmFiMjEz
YzQ3YjkxNzA0MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIu
Y3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMTA5LDEyICsxMDksNiBAQCB2b2lkIEl0ZW1IYW5kbGU6OmFwcGx5KEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCkKICAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwUGF0aDoKICAgICAgICAg
Z2V0PENsaXBQYXRoPigpLmFwcGx5KGNvbnRleHQpOwogICAgICAgICByZXR1cm47Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM6Ci0gICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6RW5kQ2xp
cFRvRHJhd2luZ0NvbW1hbmRzOgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAg
ICAgcmV0dXJuOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdGaWx0ZXJlZEltYWdlQnVmZmVyOgog
ICAgICAgICBnZXQ8RHJhd0ZpbHRlcmVkSW1hZ2VCdWZmZXI+KCkuYXBwbHkoY29udGV4dCk7CiAg
ICAgICAgIHJldHVybjsKQEAgLTMyMiw5ICszMTYsNiBAQCB2b2lkIEl0ZW1IYW5kbGU6OmRlc3Ry
b3koKQogICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJs
ZTxBcHBseVN0cm9rZVBhdHRlcm4+Ojp2YWx1ZSk7CiAgICAgICAgIHJldHVybjsKICNlbmRpZgot
ICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOgotICAgICAgICBn
ZXQ8QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM+KCkufkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1h
bmRzKCk7Ci0gICAgICAgIHJldHVybjsKICAgICBjYXNlIEl0ZW1UeXBlOjpCZWdpblRyYW5zcGFy
ZW5jeUxheWVyOgogICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3Ry
dWN0aWJsZTxCZWdpblRyYW5zcGFyZW5jeUxheWVyPjo6dmFsdWUpOwogICAgICAgICByZXR1cm47
CkBAIC0zNjcsOSArMzU4LDYgQEAgdm9pZCBJdGVtSGFuZGxlOjpkZXN0cm95KCkKICAgICBjYXNl
IEl0ZW1UeXBlOjpEcmF3UmVjdDoKICAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZp
YWxseV9kZXN0cnVjdGlibGU8RHJhd1JlY3Q+Ojp2YWx1ZSk7CiAgICAgICAgIHJldHVybjsKLSAg
ICBjYXNlIEl0ZW1UeXBlOjpFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM6Ci0gICAgICAgIHN0YXRp
Y19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPEVuZENsaXBUb0RyYXdpbmdD
b21tYW5kcz46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgSXRlbVR5cGU6OkVu
ZFRyYW5zcGFyZW5jeUxheWVyOgogICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlh
bGx5X2Rlc3RydWN0aWJsZTxFbmRUcmFuc3BhcmVuY3lMYXllcj46OnZhbHVlKTsKICAgICAgICAg
cmV0dXJuOwpAQCAtNTQ2LDggKzUzNCw2IEBAIGJvb2wgSXRlbUhhbmRsZTo6c2FmZUNvcHkoSXRl
bVR5cGUgaXRlbVR5cGUsIEl0ZW1IYW5kbGUgZGVzdGluYXRpb24pIGNvbnN0CiAgICAgY2FzZSBJ
dGVtVHlwZTo6QXBwbHlTdHJva2VQYXR0ZXJuOgogICAgICAgICByZXR1cm4gY29weUludG88QXBw
bHlTdHJva2VQYXR0ZXJuPihpdGVtT2Zmc2V0LCAqdGhpcyk7CiAjZW5kaWYKLSAgICBjYXNlIEl0
ZW1UeXBlOjpCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kczoKLSAgICAgICAgcmV0dXJuIGNvcHlJ
bnRvPEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPihpdGVtT2Zmc2V0LCAqdGhpcyk7CiAgICAg
Y2FzZSBJdGVtVHlwZTo6QmVnaW5UcmFuc3BhcmVuY3lMYXllcjoKICAgICAgICAgcmV0dXJuIGNv
cHlJbnRvPEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXI+KGl0ZW1PZmZzZXQsICp0aGlzKTsKICAgICBj
YXNlIEl0ZW1UeXBlOjpDbGVhclJlY3Q6CkBAIC01NzAsOCArNTU2LDYgQEAgYm9vbCBJdGVtSGFu
ZGxlOjpzYWZlQ29weShJdGVtVHlwZSBpdGVtVHlwZSwgSXRlbUhhbmRsZSBkZXN0aW5hdGlvbikg
Y29uc3QKICAgICAgICAgcmV0dXJuIGNvcHlJbnRvPERyYXdMaW5lPihpdGVtT2Zmc2V0LCAqdGhp
cyk7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1JlY3Q6CiAgICAgICAgIHJldHVybiBjb3B5SW50
bzxEcmF3UmVjdD4oaXRlbU9mZnNldCwgKnRoaXMpOwotICAgIGNhc2UgSXRlbVR5cGU6OkVuZENs
aXBUb0RyYXdpbmdDb21tYW5kczoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPEVuZENsaXBUb0Ry
YXdpbmdDb21tYW5kcz4oaXRlbU9mZnNldCwgKnRoaXMpOwogICAgIGNhc2UgSXRlbVR5cGU6OkVu
ZFRyYW5zcGFyZW5jeUxheWVyOgogICAgICAgICByZXR1cm4gY29weUludG88RW5kVHJhbnNwYXJl
bmN5TGF5ZXI+KGl0ZW1PZmZzZXQsICp0aGlzKTsKICAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsRWxs
aXBzZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmNwcAppbmRleCBkZmEx
ZTc0ZmIyNDg2YzM0YTA5YzFmYTFiYTJjYmRlNzQ5MDA0ZGRiLi45MWQzYjNiOGMxZTFhOWNkZDEw
NGNhYzk0ODMxMTEwZjFhZmM4NWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRl
bVR5cGUuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0y
MDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtNzYsMTAgKzc2LDYgQEAgc3RhdGljIHNpemVfdCBzaXplT2ZJdGVtSW5C
eXRlcyhJdGVtVHlwZSB0eXBlKQogICAgICAgICByZXR1cm4gc2l6ZW9mKENsaXBPdXRUb1BhdGgp
OwogICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBQYXRoOgogICAgICAgICByZXR1cm4gc2l6ZW9mKENs
aXBQYXRoKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kczoK
LSAgICAgICAgcmV0dXJuIHNpemVvZihCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcyk7Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOgotICAgICAgICByZXR1cm4g
c2l6ZW9mKEVuZENsaXBUb0RyYXdpbmdDb21tYW5kcyk7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJh
d0ZpbHRlcmVkSW1hZ2VCdWZmZXI6CiAgICAgICAgIHJldHVybiBzaXplb2YoRHJhd0ZpbHRlcmVk
SW1hZ2VCdWZmZXIpOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdHbHlwaHM6CkBAIC0xOTQsOCAr
MTkwLDYgQEAgYm9vbCBpc0RyYXdpbmdJdGVtKEl0ZW1UeXBlIHR5cGUpCiAgICAgY2FzZSBJdGVt
VHlwZTo6Q2xpcFRvSW1hZ2VCdWZmZXI6CiAgICAgY2FzZSBJdGVtVHlwZTo6Q2xpcE91dFRvUGF0
aDoKICAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwUGF0aDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpCZWdp
bkNsaXBUb0RyYXdpbmdDb21tYW5kczoKLSAgICBjYXNlIEl0ZW1UeXBlOjpFbmRDbGlwVG9EcmF3
aW5nQ29tbWFuZHM6CiAgICAgY2FzZSBJdGVtVHlwZTo6Q29uY2F0ZW5hdGVDVE06CiAgICAgY2Fz
ZSBJdGVtVHlwZTo6Rmx1c2hDb250ZXh0OgogICAgIGNhc2UgSXRlbVR5cGU6OlJlc3RvcmU6CkBA
IC0yOTAsNyArMjg0LDYgQEAgYm9vbCBpc0lubGluZUl0ZW0oSXRlbVR5cGUgdHlwZSkKICAgICAg
KiBhbmQgKDMpIGFsbCB0aGUgInN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0lubGluZUl0ZW0icyBp
bnNpZGUgdGhlIGluZGl2aWR1YWwgaXRlbSBjbGFzc2VzLiAqLwogCiAgICAgc3dpdGNoICh0eXBl
KSB7Ci0gICAgY2FzZSBJdGVtVHlwZTo6QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM6CiAgICAg
Y2FzZSBJdGVtVHlwZTo6Q2xpcE91dFRvUGF0aDoKICAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwUGF0
aDoKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3Rm9jdXNSaW5nUGF0aDoKQEAgLTMyMSw3ICszMTQs
NiBAQCBib29sIGlzSW5saW5lSXRlbShJdGVtVHlwZSB0eXBlKQogICAgIGNhc2UgSXRlbVR5cGU6
OkNsaXA6CiAgICAgY2FzZSBJdGVtVHlwZTo6Q2xpcE91dDoKICAgICBjYXNlIEl0ZW1UeXBlOjpD
bGlwVG9JbWFnZUJ1ZmZlcjoKLSAgICBjYXNlIEl0ZW1UeXBlOjpFbmRDbGlwVG9EcmF3aW5nQ29t
bWFuZHM6CiAgICAgY2FzZSBJdGVtVHlwZTo6Q29uY2F0ZW5hdGVDVE06CiAgICAgY2FzZSBJdGVt
VHlwZTo6RHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlcjoKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3
RWxsaXBzZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5oCmluZGV4IDkxZjNm
NWY1Mjg4YmM3ZWIyZGFkNmU0MmRkZmIzZGJmMTk4MGM3ODMuLjcxZTg2ZDIxMGNkN2RhZjI3NTA1
NjlmMDk0NGUwNGI1OGEzOWJkYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5
cGUuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC01MCw4ICs1MCw2IEBAIGVudW0gY2xhc3MgSXRlbVR5cGUgOiB1aW50OF90IHsKICAgICBD
bGlwVG9JbWFnZUJ1ZmZlciwKICAgICBDbGlwT3V0VG9QYXRoLAogICAgIENsaXBQYXRoLAotICAg
IEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzLAotICAgIEVuZENsaXBUb0RyYXdpbmdDb21tYW5k
cywKICAgICBEcmF3RmlsdGVyZWRJbWFnZUJ1ZmZlciwKICAgICBEcmF3R2x5cGhzLAogICAgIERy
YXdJbWFnZUJ1ZmZlciwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAppbmRleCBh
Mzc1ZGMyNjI1OGM3YTRlYmY0ZTBmMTU3MDBjOWE0MGNjYjNhNmRjLi44M2ViMmU1YTk4YmI0ZjE1
MDhlZWNkMjA3N2M0MTExZjk1MWQ1YjlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRl
bXMuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDIy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjgxLDE5ICsyODEsNiBAQCBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChUZXh0U3RyZWFtJiB0cywgY29uc3QgQ2xpcFBhdGgmIGl0ZW0pCiAgICAgcmV0dXJuIHRzOwog
fQogCi1zdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3Qg
QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHMmIGl0ZW0pCi17Ci0gICAgdHMuZHVtcFByb3BlcnR5
KCJkZXN0aW5hdGlvbiIsIGl0ZW0uZGVzdGluYXRpb24oKSk7Ci0gICAgdHMuZHVtcFByb3BlcnR5
KCJjb2xvci1zcGFjZSIsIGl0ZW0uY29sb3JTcGFjZSgpKTsKLSAgICByZXR1cm4gdHM7Ci19Ci0K
LXN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBFbmRD
bGlwVG9EcmF3aW5nQ29tbWFuZHMmIGl0ZW0pCi17Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJkZXN0
aW5hdGlvbiIsIGl0ZW0uZGVzdGluYXRpb24oKSk7Ci0gICAgcmV0dXJuIHRzOwotfQotCiBEcmF3
RmlsdGVyZWRJbWFnZUJ1ZmZlcjo6RHJhd0ZpbHRlcmVkSW1hZ2VCdWZmZXIoc3RkOjpvcHRpb25h
bDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IHNvdXJjZUltYWdlSWRlbnRpZmllciwgY29u
c3QgRmxvYXRSZWN0JiBzb3VyY2VJbWFnZVJlY3QsIEZpbHRlciYgZmlsdGVyKQogICAgIDogbV9z
b3VyY2VJbWFnZUlkZW50aWZpZXIoc291cmNlSW1hZ2VJZGVudGlmaWVyKQogICAgICwgbV9zb3Vy
Y2VJbWFnZVJlY3Qoc291cmNlSW1hZ2VSZWN0KQpAQCAtMTA3Niw4ICsxMDYzLDYgQEAgc3RhdGlj
IFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIEl0ZW1UeXBlIHR5cGUpCiAg
ICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFRvSW1hZ2VCdWZmZXI6IHRzIDw8ICJjbGlwLXRvLWltYWdl
LWJ1ZmZlciI7IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBPdXRUb1BhdGg6IHRzIDw8
ICJjbGlwLW91dC10by1wYXRoIjsgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFBhdGg6
IHRzIDw8ICJjbGlwLXBhdGgiOyBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpCZWdpbkNsaXBU
b0RyYXdpbmdDb21tYW5kczogdHMgPDwgImJlZ2luLWNsaXAtdG8tZHJhd2luZy1jb21tYW5kczoi
OyBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM6IHRz
IDw8ICJlbmQtY2xpcC10by1kcmF3aW5nLWNvbW1hbmRzIjsgYnJlYWs7CiAgICAgY2FzZSBJdGVt
VHlwZTo6RHJhd0ZpbHRlcmVkSW1hZ2VCdWZmZXI6IHRzIDw8ICJkcmF3LWZpbHRlcmVkLWltYWdl
LWJ1ZmZlciI7IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdHbHlwaHM6IHRzIDw8ICJk
cmF3LWdseXBocyI7IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdJbWFnZUJ1ZmZlcjog
dHMgPDwgImRyYXctaW1hZ2UtYnVmZmVyIjsgYnJlYWs7CkBAIC0xMTkyLDEyICsxMTc3LDYgQEAg
VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgSXRlbUhhbmRsZSBpdGVtKQog
ICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBQYXRoOgogICAgICAgICB0cyA8PCBpdGVtLmdldDxDbGlw
UGF0aD4oKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6QmVnaW5DbGlwVG9E
cmF3aW5nQ29tbWFuZHM6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PEJlZ2luQ2xpcFRvRHJhd2lu
Z0NvbW1hbmRzPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpFbmRDbGlw
VG9EcmF3aW5nQ29tbWFuZHM6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PEVuZENsaXBUb0RyYXdp
bmdDb21tYW5kcz4oKTsKLSAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0Zp
bHRlcmVkSW1hZ2VCdWZmZXI6CiAgICAgICAgIHRzIDw8IGl0ZW0uZ2V0PERyYXdGaWx0ZXJlZElt
YWdlQnVmZmVyPigpOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVt
cy5oCmluZGV4IGVmNDgwNzhkNmZhYzVmZjY1ZDExZjMwNDk2MDM2NTUxNDEyODc3NjguLmNlYTFj
YjQ5NGU0MzBiZmQ5MTM1MTJiNGQ5YmI0ZjNiY2MxOGU0MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0SXRlbXMuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUt
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTUtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTgxNyw3NCArODE3LDYgQEAgc3RkOjpvcHRpb25hbDxDbGlwUGF0
aD4gQ2xpcFBhdGg6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIHJldHVybiB7eyBXVEZN
b3ZlKCpwYXRoKSwgKndpbmRSdWxlIH19OwogfQogCi1jbGFzcyBCZWdpbkNsaXBUb0RyYXdpbmdD
b21tYW5kcyB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBJdGVtVHlwZSBpdGVtVHlw
ZSA9IEl0ZW1UeXBlOjpCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kczsKLSAgICBzdGF0aWMgY29u
c3RleHByIGJvb2wgaXNJbmxpbmVJdGVtID0gZmFsc2U7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBi
b29sIGlzRHJhd2luZ0l0ZW0gPSBmYWxzZTsKLQotICAgIEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1h
bmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBj
b2xvclNwYWNlKQotICAgICAgICA6IG1fZGVzdGluYXRpb24oZGVzdGluYXRpb24pCi0gICAgICAg
ICwgbV9jb2xvclNwYWNlKFdURk1vdmUoY29sb3JTcGFjZSkpCi0gICAgewotICAgIH0KLQotICAg
IC8vIEV4cGxpY2l0IGRlc3RydWN0b3IgYWRkZWQgdG8gZm9yY2Ugbm9uLXRyaXZpYWwgZGVzdHJ1
Y3RvciBvbiBhbGwgcGxhdGZvcm1zCi0gICAgLy8gYXMgdGhlIGVuY29kaW5nIGxvZ2ljIGN1cnJl
bnRseSBoYXJkY29kZXMgd2hpY2ggZGlzcGxheSBsaXN0IGl0ZW0gdHlwZXMgbmVlZAotICAgIC8v
IG91dCBvZiBsaW5lIHRyZWF0bWVudCByYXRoZXIgdGhhbiB1c2luZyB0aGUgaXNJbmxpbmVJdGVt
IGNvbnN0YW50LgotICAgIH5CZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcygpIHsgfQotCi0gICAg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZGVzdGluYXRp
b247IH0KLSAgICBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UoKSBjb25z
dCB7IHJldHVybiBtX2NvbG9yU3BhY2U7IH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+
IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVy
PiBzdGF0aWMgc3RkOjpvcHRpb25hbDxCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcz4gZGVjb2Rl
KERlY29kZXImKTsKLQotcHJpdmF0ZToKLSAgICBGbG9hdFJlY3QgbV9kZXN0aW5hdGlvbjsKLSAg
ICBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgbV9jb2xvclNwYWNlOwotfTsKLQotdGVtcGxhdGU8Y2xh
c3MgRW5jb2Rlcj4KLXZvaWQgQmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM6OmVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyKSBjb25zdAotewotICAgIGVuY29kZXIgPDwgbV9kZXN0aW5hdGlvbjsKLSAg
ICBlbmNvZGVyIDw8IG1fY29sb3JTcGFjZTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4K
LXN0ZDo6b3B0aW9uYWw8QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM+IEJlZ2luQ2xpcFRvRHJh
d2luZ0NvbW1hbmRzOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKLXsKLSAgICBzdGQ6Om9wdGlv
bmFsPEZsb2F0UmVjdD4gZGVzdGluYXRpb247Ci0gICAgZGVjb2RlciA+PiBkZXN0aW5hdGlvbjsK
LSAgICBpZiAoIWRlc3RpbmF0aW9uKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0g
ICAgc3RkOjpvcHRpb25hbDxEZXN0aW5hdGlvbkNvbG9yU3BhY2U+IGNvbG9yU3BhY2U7Ci0gICAg
ZGVjb2RlciA+PiBjb2xvclNwYWNlOwotICAgIGlmICghY29sb3JTcGFjZSkKLSAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgIHJldHVybiB7eyAqZGVzdGluYXRpb24sIFdURk1vdmUo
KmNvbG9yU3BhY2UpIH19OwotfQotCi1jbGFzcyBFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHMgewot
cHVibGljOgotICAgIHN0YXRpYyBjb25zdGV4cHIgSXRlbVR5cGUgaXRlbVR5cGUgPSBJdGVtVHlw
ZTo6RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOwotICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBp
c0lubGluZUl0ZW0gPSB0cnVlOwotICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0RyYXdpbmdJ
dGVtID0gZmFsc2U7Ci0KLSAgICBFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRS
ZWN0JiBkZXN0aW5hdGlvbikKLSAgICAgICAgOiBtX2Rlc3RpbmF0aW9uKGRlc3RpbmF0aW9uKQot
ICAgIHsKLSAgICB9Ci0KLSAgICBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9kZXN0aW5hdGlvbjsgfQotCi1wcml2YXRlOgotICAgIEZsb2F0UmVjdCBtX2Rl
c3RpbmF0aW9uOwotfTsKLQogY2xhc3MgRHJhd0ZpbHRlcmVkSW1hZ2VCdWZmZXIgewogcHVibGlj
OgogICAgIHN0YXRpYyBjb25zdGV4cHIgSXRlbVR5cGUgaXRlbVR5cGUgPSBJdGVtVHlwZTo6RHJh
d0ZpbHRlcmVkSW1hZ2VCdWZmZXI7CkBAIC0yMzg5LDcgKzIzMjEsNiBAQCBwcml2YXRlOgogCiB1
c2luZyBEaXNwbGF5TGlzdEl0ZW0gPSBzdGQ6OnZhcmlhbnQKICAgICA8IEFwcGx5RGV2aWNlU2Nh
bGVGYWN0b3IKLSAgICAsIEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzCiAgICAgLCBCZWdpblRy
YW5zcGFyZW5jeUxheWVyCiAgICAgLCBDbGVhclJlY3QKICAgICAsIENsZWFyU2hhZG93CkBAIC0y
NDEyLDcgKzIzNDMsNiBAQCB1c2luZyBEaXNwbGF5TGlzdEl0ZW0gPSBzdGQ6OnZhcmlhbnQKICAg
ICAsIERyYXdQYXRoCiAgICAgLCBEcmF3UGF0dGVybgogICAgICwgRHJhd1JlY3QKLSAgICAsIEVu
ZENsaXBUb0RyYXdpbmdDb21tYW5kcwogICAgICwgRW5kVHJhbnNwYXJlbmN5TGF5ZXIKICAgICAs
IEZpbGxDb21wb3NpdGVkUmVjdAogICAgICwgRmlsbEVsbGlwc2UKQEAgLTI0OTgsOCArMjQyOCw2
IEBAIHRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0
ZW1UeXBlPiB7CiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpDbGlwVG9JbWFn
ZUJ1ZmZlciwKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkNsaXBPdXRUb1Bh
dGgsCiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpDbGlwUGF0aCwKLSAgICBX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRz
LAotICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RW5kQ2xpcFRvRHJhd2luZ0Nv
bW1hbmRzLAogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0dseXBocywK
ICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdJbWFnZUJ1ZmZlciwKICAg
ICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZSwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdFJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAppbmRleCA4MmNiMjU1NmI1MWExMzYz
ZGI2YjA5YWMzYTI3YTQxMTQzN2JkZmM5Li5jZTkyY2U1NTg3N2I0YmZkNzgyNDRkMGE0NGNjNTRl
YmE1Yzg2MDYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtNDg2LDI3ICs0ODYsNiBAQCB2b2lkIFJlY29yZGVyOjpjbGlwVG9JbWFnZUJ1ZmZlcihJbWFn
ZUJ1ZmZlciYgaW1hZ2VCdWZmZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdAogICAgIHJlY29yZENs
aXBUb0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyLCBkZXN0UmVjdCk7CiB9CiAKLUdyYXBoaWNzQ29u
dGV4dDo6Q2xpcFRvRHJhd2luZ0NvbW1hbmRzUmVzdWx0IFJlY29yZGVyOjpjbGlwVG9EcmF3aW5n
Q29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRGVzdGluYXRpb25D
b2xvclNwYWNlJiBjb2xvclNwYWNlLCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYm
IGRyYXdpbmdGdW5jdGlvbikKLXsKLSAgICBhdXRvIGluaXRpYWxDbGlwID0gRmxvYXRSZWN0KEZs
b2F0UG9pbnQoKSwgZGVzdGluYXRpb24uc2l6ZSgpKTsKLQotICAgIC8vIFRoZSBpbml0aWFsIENU
TSBtYXRjaGVzIEltYWdlQnVmZmVyJ3MgaW5pdGlhbCBDVE0uCi0gICAgQWZmaW5lVHJhbnNmb3Jt
IHRyYW5zZm9ybSA9IGdldENUTShHcmFwaGljc0NvbnRleHQ6OkRlZmluaXRlbHlJbmNsdWRlRGV2
aWNlU2NhbGUpOwotICAgIEZsb2F0U2l6ZSBzY2FsZUZhY3Rvcih0cmFuc2Zvcm0ueFNjYWxlKCks
IHRyYW5zZm9ybS55U2NhbGUoKSk7Ci0gICAgYXV0byBzY2FsZWRTaXplID0gZXhwYW5kZWRJbnRT
aXplKGRlc3RpbmF0aW9uLnNpemUoKSAqIHNjYWxlRmFjdG9yKTsKLSAgICBBZmZpbmVUcmFuc2Zv
cm0gaW5pdGlhbENUTTsKLSAgICBpbml0aWFsQ1RNLnNjYWxlKDEsIC0xKTsKLSAgICBpbml0aWFs
Q1RNLnRyYW5zbGF0ZSgwLCAtc2NhbGVkU2l6ZS5oZWlnaHQoKSk7Ci0gICAgaW5pdGlhbENUTS5z
Y2FsZShzY2FsZWRTaXplIC8gZGVzdGluYXRpb24uc2l6ZSgpKTsKLQotICAgIGF1dG8gbmVzdGVk
Q29udGV4dCA9IGNyZWF0ZU5lc3RlZENvbnRleHQoaW5pdGlhbENsaXAsIGluaXRpYWxDVE0pOwot
ICAgIHJlY29yZEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKGRlc3RpbmF0aW9uLCBjb2xvclNw
YWNlKTsKLSAgICBkcmF3aW5nRnVuY3Rpb24oKm5lc3RlZENvbnRleHQpOwotICAgIHJlY29yZEVu
ZENsaXBUb0RyYXdpbmdDb21tYW5kcyhkZXN0aW5hdGlvbik7Ci0KLSAgICByZXR1cm4gQ2xpcFRv
RHJhd2luZ0NvbW1hbmRzUmVzdWx0OjpTdWNjZXNzOwotfQotCiBSZWZQdHI8SW1hZ2VCdWZmZXI+
IFJlY29yZGVyOjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIGNvbnN0
IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJp
bmdNb2RlLCBSZW5kZXJpbmdNZXRob2QgcmVuZGVyaW5nTWV0aG9kKSBjb25zdAogewogICAgIGlm
IChyZW5kZXJpbmdNZXRob2QgPT0gUmVuZGVyaW5nTWV0aG9kOjpEZWZhdWx0KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0UmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKaW5kZXggNjUwYmE1MDcwMzgwMzliZDFhNzY2NjU2
M2JjMDNiNTllZjc0OTE1YS4uMTEwMTA1ZjI4YjIwZDY0NzkxZDJiNjE4YTNiYTU2NDQyNmM2ZDQ1
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtODksOCArODks
NiBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIHJlY29yZENsaXBUb0ltYWdlQnVmZmVy
KEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvblJlY3QpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgcmVjb3JkQ2xpcE91dFRvUGF0aChjb25zdCBQYXRoJikgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCByZWNvcmRDbGlwUGF0aChjb25zdCBQYXRoJiwgV2luZFJ1bGUpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkQmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3Qg
RmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgRGVzdGluYXRpb25Db2xvclNwYWNlKSA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIHJlY29yZEVuZENsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJl
Y3QmIGRlc3RpbmF0aW9uKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlY29yZERyYXdGaWx0ZXJl
ZEltYWdlQnVmZmVyKEltYWdlQnVmZmVyKiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2VJbWFnZVJl
Y3QsIEZpbHRlciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkRHJhd0dseXBocyhjb25z
dCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCosIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5j
ZSosIHVuc2lnbmVkIGNvdW50LCBjb25zdCBGbG9hdFBvaW50JiBsb2NhbEFuY2hvciwgRm9udFNt
b290aGluZ01vZGUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkRHJhd0ltYWdlQnVmZmVy
KEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsKQEAgLTE0NCw4ICsx
NDIsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBib29sIHJlY29yZFJlc291cmNlVXNlKGNv
bnN0IFNvdXJjZUltYWdlJikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCByZWNvcmRSZXNvdXJjZVVz
ZShGb250JikgPSAwOwogCi0gICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250
ZXh0PiBjcmVhdGVOZXN0ZWRDb250ZXh0KGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYgaW5pdGlhbENUTSkgPSAwOwotCiAgICAgc3RydWN0IENvbnRl
eHRTdGF0ZSB7CiAgICAgICAgIEFmZmluZVRyYW5zZm9ybSBjdG07CiAgICAgICAgIEZsb2F0UmVj
dCBjbGlwQm91bmRzOwpAQCAtMjcxLDcgKzI2Nyw2IEBAIHByaXZhdGU6CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBjbGlwUGF0aChjb25zdCBQYXRoJiwgV2luZFJ1bGUpIGZpbmFsOwogICAgIFdF
QkNPUkVfRVhQT1JUIEludFJlY3QgY2xpcEJvdW5kcygpIGNvbnN0IGZpbmFsOwogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgY2xpcFRvSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9h
dFJlY3QmKSBmaW5hbDsKLSAgICBXRUJDT1JFX0VYUE9SVCBHcmFwaGljc0NvbnRleHQ6OkNsaXBU
b0RyYXdpbmdDb21tYW5kc1Jlc3VsdCBjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRS
ZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgRnVuY3Rpb248
dm9pZChHcmFwaGljc0NvbnRleHQmKT4mJikgZmluYWw7CiAKICNpZiBFTkFCTEUoVklERU8pCiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwYWludEZyYW1lRm9yTWVkaWEoTWVkaWFQbGF5ZXImLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVy
SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RSZWNvcmRlckltcGwuY3BwCmluZGV4IDkyNjU0ZDczMjExOGZmMGY4NzMzZDAy
ZWMzNTYyZWFhMDZmMmU2NDEuLjY0NWIzMjdlZDY1MDI0NzdhYTJlZjkwNjhkYzdkNTAwNTRmOWE0
MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmNwcApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIxLTIwMjIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00
OSwxOCArNDksOSBAQCBSZWNvcmRlckltcGw6OlJlY29yZGVySW1wbChEaXNwbGF5TGlzdCYgZGlz
cGxheUxpc3QsIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJgogICAgIExPR19XSVRIX1NUUkVB
TShEaXNwbGF5TGlzdHMsIHN0cmVhbSA8PCAiXG5SZWNvcmRpbmcgd2l0aCBjbGlwICIgPDwgaW5p
dGlhbENsaXApOwogfQogCi1SZWNvcmRlckltcGw6OlJlY29yZGVySW1wbChSZWNvcmRlckltcGwm
IHBhcmVudCwgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBjb25zdCBGbG9hdFJl
Y3QmIGluaXRpYWxDbGlwLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGluaXRpYWxDVE0pCi0gICAg
OiBSZWNvcmRlcihwYXJlbnQsIHN0YXRlLCBpbml0aWFsQ2xpcCwgaW5pdGlhbENUTSkKLSAgICAs
IG1fZGlzcGxheUxpc3QocGFyZW50Lm1fZGlzcGxheUxpc3QpCi0gICAgLCBtX2lzTmVzdGVkKHRy
dWUpCi17Ci19Ci0KIFJlY29yZGVySW1wbDo6flJlY29yZGVySW1wbCgpCiB7CiAgICAgQVNTRVJU
KHN0YXRlU3RhY2soKS5zaXplKCkgPT0gMSk7IC8vIElmIHRoaXMgZmlyZXMsIGl0IGluZGljYXRl
cyBtaXNtYXRjaGVkIHNhdmUvcmVzdG9yZS4KLSAgICBpZiAoIW1faXNOZXN0ZWQpCi0gICAgICAg
IExPRyhEaXNwbGF5TGlzdHMsICJSZWNvcmRlZCBkaXNwbGF5IGxpc3Q6XG4lcyIsIG1fZGlzcGxh
eUxpc3QuZGVzY3JpcHRpb24oKS5kYXRhKCkpOwogfQogCiB2b2lkIFJlY29yZGVySW1wbDo6Z2V0
UGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmIG91dHB1dEZvcm1hdCwgY29uc3Qg
SW50UmVjdCYgc291cmNlUmVjdCkKQEAgLTczLDExICs2NCw2IEBAIHZvaWQgUmVjb3JkZXJJbXBs
OjpwdXRQaXhlbEJ1ZmZlcihjb25zdCBQaXhlbEJ1ZmZlciYgcGl4ZWxCdWZmZXIsIGNvbnN0IElu
dFJlY3QmCiAgICAgYXBwZW5kPFB1dFBpeGVsQnVmZmVyPihwaXhlbEJ1ZmZlciwgc3JjUmVjdCwg
ZGVzdFBvaW50LCBkZXN0Rm9ybWF0KTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29u
dGV4dD4gUmVjb3JkZXJJbXBsOjpjcmVhdGVOZXN0ZWRDb250ZXh0KGNvbnN0IEZsb2F0UmVjdCYg
aW5pdGlhbENsaXAsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgaW5pdGlhbENUTSkKLXsKLSAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxSZWNvcmRlckltcGw+KCp0aGlzLCBHcmFwaGljc0NvbnRleHRTdGF0
ZSB7IH0sIGluaXRpYWxDbGlwLCBpbml0aWFsQ1RNKTsKLX0KLQogdm9pZCBSZWNvcmRlckltcGw6
OnJlY29yZFNhdmUoKQogewogICAgIGFwcGVuZDxTYXZlPigpOwpAQCAtMTgzLDE2ICsxNjksNiBA
QCB2b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkQ2xpcFBhdGgoY29uc3QgUGF0aCYgcGF0aCwgV2lu
ZFJ1bGUgcnVsZSkKICAgICBhcHBlbmQ8Q2xpcFBhdGg+KHBhdGgsIHJ1bGUpOwogfQogCi12b2lk
IFJlY29yZGVySW1wbDo6cmVjb3JkQmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxv
YXRSZWN0JiBkZXN0aW5hdGlvbiwgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UpCi17
Ci0gICAgYXBwZW5kPEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPihkZXN0aW5hdGlvbiwgY29s
b3JTcGFjZSk7Ci19Ci0KLXZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRFbmRDbGlwVG9EcmF3aW5n
Q29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbikKLXsKLSAgICBhcHBlbmQ8RW5k
Q2xpcFRvRHJhd2luZ0NvbW1hbmRzPihkZXN0aW5hdGlvbik7Ci19Ci0KIHZvaWQgUmVjb3JkZXJJ
bXBsOjpyZWNvcmREcmF3RmlsdGVyZWRJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciogc291cmNlSW1h
Z2UsIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlSW1hZ2VSZWN0LCBGaWx0ZXImIGZpbHRlcikKIHsK
ICAgICBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gaWRlbnRpZmll
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmgKaW5kZXggMmNh
NDM4ZWYzZDM1Njg2NWZiNmE4ODQxYjEyMDA3MGM1NzBjNTU3MC4uM2I5ZjViMTVkMzE4NjEwZTM0
NjUyMmJkMWE1YmY4ZjJkNmE1MWE0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
UmVjb3JkZXJJbXBsLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMS0y
MDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMzYsOCArMzYsNiBAQCBjbGFzcyBSZWNvcmRlckltcGwgOiBwdWJsaWMg
UmVjb3JkZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJlY29yZGVySW1wbCk7CiBwdWJs
aWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgUmVjb3JkZXJJbXBsKERpc3BsYXlMaXN0JiwgY29uc3Qg
R3JhcGhpY3NDb250ZXh0U3RhdGUmLCBjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwLCBjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mLCBEcmF3R2x5cGhzUmVjb3JkZXI6OkRlY29uc3RydWN0RHJhd0ds
eXBocyA9IERyYXdHbHlwaHNSZWNvcmRlcjo6RGVjb25zdHJ1Y3REcmF3R2x5cGhzOjpZZXMpOwot
ICAgIFJlY29yZGVySW1wbChSZWNvcmRlckltcGwmIHBhcmVudCwgY29uc3QgR3JhcGhpY3NDb250
ZXh0U3RhdGUmLCBjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwLCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIGluaXRpYWxDVE0pOwotCiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+UmVjb3Jk
ZXJJbXBsKCk7CiAKICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2Rpc3BsYXlM
aXN0LmlzRW1wdHkoKTsgfQpAQCAtNzAsOCArNjgsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVj
b3JkQ2xpcFRvSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmIGRlc3Rp
bmF0aW9uUmVjdCkgZmluYWw7CiAgICAgdm9pZCByZWNvcmRDbGlwT3V0VG9QYXRoKGNvbnN0IFBh
dGgmKSBmaW5hbDsKICAgICB2b2lkIHJlY29yZENsaXBQYXRoKGNvbnN0IFBhdGgmLCBXaW5kUnVs
ZSkgZmluYWw7Ci0gICAgdm9pZCByZWNvcmRCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25z
dCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UpIGZpbmFsOwot
ICAgIHZvaWQgcmVjb3JkRW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdGluYXRpb24pIGZpbmFsOwogICAgIHZvaWQgcmVjb3JkRHJhd0ZpbHRlcmVkSW1hZ2VCdWZm
ZXIoSW1hZ2VCdWZmZXIqLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZUltYWdlUmVjdCwgRmlsdGVy
JikgZmluYWw7CiAgICAgdm9pZCByZWNvcmREcmF3R2x5cGhzKGNvbnN0IEZvbnQmLCBjb25zdCBH
bHlwaEJ1ZmZlckdseXBoKiwgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiwgdW5zaWduZWQgY291
bnQsIGNvbnN0IEZsb2F0UG9pbnQmIGxvY2FsQW5jaG9yLCBGb250U21vb3RoaW5nTW9kZSkgZmlu
YWw7CiAgICAgdm9pZCByZWNvcmREcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJikgZmluYWw7CkBAIC0xMjUsOCArMTIxLDYgQEAgcHJpdmF0ZToKICAg
ICBib29sIHJlY29yZFJlc291cmNlVXNlKGNvbnN0IFNvdXJjZUltYWdlJikgZmluYWw7CiAgICAg
Ym9vbCByZWNvcmRSZXNvdXJjZVVzZShGb250JikgZmluYWw7CiAKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8R3JhcGhpY3NDb250ZXh0PiBjcmVhdGVOZXN0ZWRDb250ZXh0KGNvbnN0IEZsb2F0UmVjdCYg
aW5pdGlhbENsaXAsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgaW5pdGlhbENUTSkgZmluYWw7Ci0K
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBjbGFzcy4uLiBBcmdzPgogICAgIHZvaWQgYXBwZW5k
KEFyZ3MmJi4uLiBhcmdzKQogICAgIHsKQEAgLTE0OSw3ICsxNDMsNiBAQCBwcml2YXRlOgogICAg
IEZsb2F0UmVjdCBleHRlbnRGcm9tTG9jYWxCb3VuZHMoY29uc3QgRmxvYXRSZWN0JikgY29uc3Q7
CiAKICAgICBEaXNwbGF5TGlzdCYgbV9kaXNwbGF5TGlzdDsKLSAgICBib29sIG1faXNOZXN0ZWQg
eyBmYWxzZSB9OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIu
Y3BwCmluZGV4IGJhZWQxNGNlMGFkN2M5YzA0Yzk1YjBlNzE1MDUyYTY1MGUwNzlhOWUuLjYyZWUz
YmJiNGFjZDU5NTM0MDQxMmU1NjE1NTQzNjdmMmQ2ZmQ3YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RSZXBsYXllci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE2LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00NCwxMSArNDQsNiBAQCBSZXBsYXllcjo6UmVw
bGF5ZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBEaXNwbGF5TGlzdCYgZGlzcGxh
eUxpc3QsIGNvbgogewogfQogCi1HcmFwaGljc0NvbnRleHQmIFJlcGxheWVyOjpjb250ZXh0KCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gbV9tYXNrSW1hZ2VCdWZmZXIgPyBtX21hc2tJbWFnZUJ1ZmZl
ci0+Y29udGV4dCgpIDogbV9jb250ZXh0OwotfQotCiB0ZW1wbGF0ZTxjbGFzcyBUPgogaW5saW5l
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gYXBwbHlJ
bWFnZUJ1ZmZlckl0ZW0oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBSZXNvdXJjZUhl
YXAmIHJlc291cmNlSGVhcCwgSXRlbUhhbmRsZSBpdGVtKQogewpAQCAtMTE1LDYxICsxMTAsNDIg
QEAgaW5saW5lIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cj4gYXBwbHlGb250SXRlbShHcmFwaGljc0MKIHN0ZDo6cGFpcjxzdGQ6Om9wdGlvbmFsPFN0b3BS
ZXBsYXlSZWFzb24+LCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4+
IFJlcGxheWVyOjphcHBseUl0ZW0oSXRlbUhhbmRsZSBpdGVtKQogewogICAgIGlmIChpdGVtLmlz
PERyYXdJbWFnZUJ1ZmZlcj4oKSkgewotICAgICAgICBpZiAoYXV0byBtaXNzaW5nQ2FjaGVkUmVz
b3VyY2VJZGVudGlmaWVyID0gYXBwbHlJbWFnZUJ1ZmZlckl0ZW08RHJhd0ltYWdlQnVmZmVyPihj
b250ZXh0KCksIG1fcmVzb3VyY2VIZWFwLCBpdGVtKSkKKyAgICAgICAgaWYgKGF1dG8gbWlzc2lu
Z0NhY2hlZFJlc291cmNlSWRlbnRpZmllciA9IGFwcGx5SW1hZ2VCdWZmZXJJdGVtPERyYXdJbWFn
ZUJ1ZmZlcj4obV9jb250ZXh0LCBtX3Jlc291cmNlSGVhcCwgaXRlbSkpCiAgICAgICAgICAgICBy
ZXR1cm4geyBTdG9wUmVwbGF5UmVhc29uOjpNaXNzaW5nQ2FjaGVkUmVzb3VyY2UsIFdURk1vdmUo
bWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllcikgfTsKICAgICAgICAgcmV0dXJuIHsgc3Rk
OjpudWxsb3B0LCBzdGQ6Om51bGxvcHQgfTsKICAgICB9CiAKICAgICBpZiAoaXRlbS5pczxDbGlw
VG9JbWFnZUJ1ZmZlcj4oKSkgewotICAgICAgICBpZiAoYXV0byBtaXNzaW5nQ2FjaGVkUmVzb3Vy
Y2VJZGVudGlmaWVyID0gYXBwbHlJbWFnZUJ1ZmZlckl0ZW08Q2xpcFRvSW1hZ2VCdWZmZXI+KGNv
bnRleHQoKSwgbV9yZXNvdXJjZUhlYXAsIGl0ZW0pKQorICAgICAgICBpZiAoYXV0byBtaXNzaW5n
Q2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyID0gYXBwbHlJbWFnZUJ1ZmZlckl0ZW08Q2xpcFRvSW1h
Z2VCdWZmZXI+KG1fY29udGV4dCwgbV9yZXNvdXJjZUhlYXAsIGl0ZW0pKQogICAgICAgICAgICAg
cmV0dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6TWlzc2luZ0NhY2hlZFJlc291cmNlLCBXVEZNb3Zl
KG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIpIH07CiAgICAgICAgIHJldHVybiB7IHN0
ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0IH07CiAgICAgfQogCiAgICAgaWYgKGl0ZW0uaXM8RHJh
d05hdGl2ZUltYWdlPigpKSB7Ci0gICAgICAgIGlmIChhdXRvIG1pc3NpbmdDYWNoZWRSZXNvdXJj
ZUlkZW50aWZpZXIgPSBhcHBseU5hdGl2ZUltYWdlSXRlbTxEcmF3TmF0aXZlSW1hZ2U+KGNvbnRl
eHQoKSwgbV9yZXNvdXJjZUhlYXAsIGl0ZW0pKQorICAgICAgICBpZiAoYXV0byBtaXNzaW5nQ2Fj
aGVkUmVzb3VyY2VJZGVudGlmaWVyID0gYXBwbHlOYXRpdmVJbWFnZUl0ZW08RHJhd05hdGl2ZUlt
YWdlPihtX2NvbnRleHQsIG1fcmVzb3VyY2VIZWFwLCBpdGVtKSkKICAgICAgICAgICAgIHJldHVy
biB7IFN0b3BSZXBsYXlSZWFzb246Ok1pc3NpbmdDYWNoZWRSZXNvdXJjZSwgV1RGTW92ZShtaXNz
aW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyKSB9OwogICAgICAgICByZXR1cm4geyBzdGQ6Om51
bGxvcHQsIHN0ZDo6bnVsbG9wdCB9OwogICAgIH0KIAogICAgIGlmIChpdGVtLmlzPERyYXdHbHlw
aHM+KCkpIHsKLSAgICAgICAgaWYgKGF1dG8gbWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmll
ciA9IGFwcGx5Rm9udEl0ZW08RHJhd0dseXBocz4oY29udGV4dCgpLCBtX3Jlc291cmNlSGVhcCwg
aXRlbSkpCisgICAgICAgIGlmIChhdXRvIG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIg
PSBhcHBseUZvbnRJdGVtPERyYXdHbHlwaHM+KG1fY29udGV4dCwgbV9yZXNvdXJjZUhlYXAsIGl0
ZW0pKQogICAgICAgICAgICAgcmV0dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6TWlzc2luZ0NhY2hl
ZFJlc291cmNlLCBXVEZNb3ZlKG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIpIH07CiAg
ICAgICAgIHJldHVybiB7IHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0IH07CiAgICAgfQogCiAg
ICAgaWYgKGl0ZW0uaXM8RHJhd1BhdHRlcm4+KCkpIHsKLSAgICAgICAgaWYgKGF1dG8gbWlzc2lu
Z0NhY2hlZFJlc291cmNlSWRlbnRpZmllciA9IGFwcGx5TmF0aXZlSW1hZ2VJdGVtPERyYXdQYXR0
ZXJuPihjb250ZXh0KCksIG1fcmVzb3VyY2VIZWFwLCBpdGVtKSkKKyAgICAgICAgaWYgKGF1dG8g
bWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllciA9IGFwcGx5TmF0aXZlSW1hZ2VJdGVtPERy
YXdQYXR0ZXJuPihtX2NvbnRleHQsIG1fcmVzb3VyY2VIZWFwLCBpdGVtKSkKICAgICAgICAgICAg
IHJldHVybiB7IFN0b3BSZXBsYXlSZWFzb246Ok1pc3NpbmdDYWNoZWRSZXNvdXJjZSwgV1RGTW92
ZShtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyKSB9OwogICAgICAgICByZXR1cm4geyBz
dGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCB9OwogICAgIH0KIAogICAgIGlmIChpdGVtLmlzPFNl
dFN0YXRlPigpKSB7Ci0gICAgICAgIGlmIChhdXRvIG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50
aWZpZXIgPSBhcHBseVNldFN0YXRlSXRlbShjb250ZXh0KCksIG1fcmVzb3VyY2VIZWFwLCBpdGVt
KSkKKyAgICAgICAgaWYgKGF1dG8gbWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllciA9IGFw
cGx5U2V0U3RhdGVJdGVtKG1fY29udGV4dCwgbV9yZXNvdXJjZUhlYXAsIGl0ZW0pKQogICAgICAg
ICAgICAgcmV0dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6TWlzc2luZ0NhY2hlZFJlc291cmNlLCBX
VEZNb3ZlKG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIpIH07CiAgICAgICAgIHJldHVy
biB7IHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0IH07CiAgICAgfQogCi0gICAgaWYgKGl0ZW0u
aXM8QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM+KCkpIHsKLSAgICAgICAgaWYgKG1fbWFza0lt
YWdlQnVmZmVyKQotICAgICAgICAgICAgcmV0dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6SW52YWxp
ZEl0ZW1PckV4dGVudCwgc3RkOjpudWxsb3B0IH07Ci0gICAgICAgIGF1dG8mIGNsaXBJdGVtID0g
aXRlbS5nZXQ8QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM+KCk7Ci0gICAgICAgIG1fbWFza0lt
YWdlQnVmZmVyID0gbV9jb250ZXh0LmNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcihjbGlwSXRl
bS5kZXN0aW5hdGlvbigpLnNpemUoKSwgY2xpcEl0ZW0uY29sb3JTcGFjZSgpKTsKLSAgICAgICAg
aWYgKCFtX21hc2tJbWFnZUJ1ZmZlcikKLSAgICAgICAgICAgIHJldHVybiB7IFN0b3BSZXBsYXlS
ZWFzb246Ok91dE9mTWVtb3J5LCBzdGQ6Om51bGxvcHQgfTsKLSAgICAgICAgcmV0dXJuIHsgc3Rk
OjpudWxsb3B0LCBzdGQ6Om51bGxvcHQgfTsKLSAgICB9Ci0KLSAgICBpZiAoaXRlbS5pczxFbmRD
bGlwVG9EcmF3aW5nQ29tbWFuZHM+KCkpIHsKLSAgICAgICAgaWYgKCFtX21hc2tJbWFnZUJ1ZmZl
cikKLSAgICAgICAgICAgIHJldHVybiB7IFN0b3BSZXBsYXlSZWFzb246OkludmFsaWRJdGVtT3JF
eHRlbnQsIHN0ZDo6bnVsbG9wdCB9OwotICAgICAgICBhdXRvJiBjbGlwSXRlbSA9IGl0ZW0uZ2V0
PEVuZENsaXBUb0RyYXdpbmdDb21tYW5kcz4oKTsKLSAgICAgICAgbV9jb250ZXh0LmNsaXBUb0lt
YWdlQnVmZmVyKCptX21hc2tJbWFnZUJ1ZmZlciwgY2xpcEl0ZW0uZGVzdGluYXRpb24oKSk7Ci0g
ICAgICAgIG1fbWFza0ltYWdlQnVmZmVyID0gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJuIHsgc3Rk
OjpudWxsb3B0LCBzdGQ6Om51bGxvcHQgfTsKLSAgICB9Ci0KLSAgICBpdGVtLmFwcGx5KGNvbnRl
eHQoKSk7CisgICAgaXRlbS5hcHBseShtX2NvbnRleHQpOwogICAgIHJldHVybiB7IHN0ZDo6bnVs
bG9wdCwgc3RkOjpudWxsb3B0IH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBs
YXllci5oCmluZGV4IDZmNzcyYmY0NTUyNjM5YmJmMzA0ZGI2NmQxOWI2OTg4MWYxNDQ0NTUuLjI1
ODRhNTM5ZmMwNTMwOGM2MjQyYTExZmMxNzY1ZWRiYThiMGQ5ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxh
eWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTYtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTYxLDEzICs2MSwxMSBAQCBwdWJsaWM6CiAgICAg
V0VCQ09SRV9FWFBPUlQgUmVwbGF5UmVzdWx0IHJlcGxheShjb25zdCBGbG9hdFJlY3QmIGluaXRp
YWxDbGlwID0geyB9LCBib29sIHRyYWNrUmVwbGF5TGlzdCA9IGZhbHNlKTsKIAogcHJpdmF0ZToK
LSAgICBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQoKSBjb25zdDsKICAgICBzdGQ6OnBhaXI8c3Rk
OjpvcHRpb25hbDxTdG9wUmVwbGF5UmVhc29uPiwgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXI+PiBhcHBseUl0ZW0oSXRlbUhhbmRsZSk7CiAKICAgICBHcmFwaGljc0Nv
bnRleHQmIG1fY29udGV4dDsKICAgICBjb25zdCBEaXNwbGF5TGlzdCYgbV9kaXNwbGF5TGlzdDsK
ICAgICBjb25zdCBSZXNvdXJjZUhlYXAmIG1fcmVzb3VyY2VIZWFwOwotICAgIFJlZlB0cjxXZWJD
b3JlOjpJbWFnZUJ1ZmZlcj4gbV9tYXNrSW1hZ2VCdWZmZXI7CiB9OwogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFD
YWlyb09wZXJhdGlvblJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCmluZGV4
IDk5MGM3MWZhNDc0MzBmNTkzZTJjMjRjMGI3OWQ3OTU4YzQ4ZjdmZWQuLjkyNDdmMzBlNzIyNDcz
NjAxMGU5MWZiNzI2MjA4Yjc0YThlOWFmMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3Jk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fp
cm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCkBAIC0xMTA2LDEyICsxMTA2LDYg
QEAgdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjphcHBlbmQoc3RkOjp1bmlxdWVfcHRyPFBh
aW50aW5nT3BlcmF0aW9uPiYmIGNvbW1hbmQKICAgICBtX2NvbW1hbmRMaXN0LmFwcGVuZChXVEZN
b3ZlKGNvbW1hbmQpKTsKIH0KIAotR3JhcGhpY3NDb250ZXh0OjpDbGlwVG9EcmF3aW5nQ29tbWFu
ZHNSZXN1bHQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6Y2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNv
bnN0IEZsb2F0UmVjdCYsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIEZ1bmN0aW9uPHZv
aWQoR3JhcGhpY3NDb250ZXh0Jik+JiYpCi17Ci0gICAgLy8gRklYTUU6IE5vdCBpbXBsZW1lbnRl
ZC4KLSAgICByZXR1cm4gQ2xpcFRvRHJhd2luZ0NvbW1hbmRzUmVzdWx0OjpTdWNjZXNzOwotfQot
CiAjaWYgRU5BQkxFKFZJREVPKQogdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpwYWludEZy
YW1lRm9yTWVkaWEoTWVkaWFQbGF5ZXImIHBsYXllciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5h
dGlvbikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25p
Y29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9u
UmVjb3JkZXIuaAppbmRleCBhYTk0ZGU4ODYyNzI1NWJkNjUwNDcwNzJmNWNhMmI5ZGZkM2NjODM1
Li43Mzk3Nzg4NmNlNzNhN2ZhNjdlZjA5YTEzYThiMDIzYzdjODMxZjk0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWly
b09wZXJhdGlvblJlY29yZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oCkBAIC05Niw3
ICs5Niw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjbGlwUGF0aChjb25zdCBXZWJDb3JlOjpQYXRo
JiwgV2ViQ29yZTo6V2luZFJ1bGUpIG92ZXJyaWRlOwogICAgIFdlYkNvcmU6OkludFJlY3QgY2xp
cEJvdW5kcygpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgY2xpcFRvSW1hZ2VCdWZmZXIoV2Vi
Q29yZTo6SW1hZ2VCdWZmZXImLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKSBvdmVycmlkZTsK
LSAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OkNsaXBUb0RyYXdpbmdDb21tYW5kc1Jlc3Vs
dCBjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBkZXN0aW5h
dGlvbiwgY29uc3QgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlJiwgRnVuY3Rpb248dm9p
ZChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmKT4mJikgb3ZlcnJpZGU7CiAjaWYgRU5BQkxFKFZJ
REVPKQogICAgIHZvaWQgcGFpbnRGcmFtZUZvck1lZGlhKFdlYkNvcmU6Ok1lZGlhUGxheWVyJiwg
Y29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBkZXN0aW5hdGlvbikgb3ZlcnJpZGU7CiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNw
bGF5TGlzdFJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyLmNwcAppbmRleCA2MzNiMzVmNTc1N2NmMTgwNzE0MWVm
YjAyNDU5YjNjMzhhM2Y4MzkwLi5hZmU2MzBiOTlmN2U4Y2YxOTJiZGIxNzA0NGZiYTY3ODJlYzlm
NDhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
RGlzcGxheUxpc3RSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCkBAIC01MCw3ICs1MCw3IEBAIFJl
bW90ZVJlc291cmNlQ2FjaGUmIFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXI6OnJlc291cmNlQ2Fj
aGUoKQogCiBHcmFwaGljc0NvbnRleHQmIFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXI6OmRyYXdp
bmdDb250ZXh0KCkKIHsKLSAgICByZXR1cm4gbV9tYXNrSW1hZ2VCdWZmZXIgPyBtX21hc2tJbWFn
ZUJ1ZmZlci0+Y29udGV4dCgpIDogbV9pbWFnZUJ1ZmZlci0+Y29udGV4dCgpOworICAgIHJldHVy
biBtX2ltYWdlQnVmZmVyLT5jb250ZXh0KCk7CiB9CiAKIHZvaWQgUmVtb3RlRGlzcGxheUxpc3RS
ZWNvcmRlcjo6c3RhcnRMaXN0ZW5pbmdGb3JJUEMoKQpAQCAtMjAwLDIyICsyMDAsNiBAQCB2b2lk
IFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXI6OmNsaXBQYXRoKGNvbnN0IFBhdGgmIHBhdGgsIFdp
bmRSdWxlIHJ1bGUpCiAgICAgaGFuZGxlSXRlbShEaXNwbGF5TGlzdDo6Q2xpcFBhdGgocGF0aCwg
cnVsZSkpOwogfQogCi12b2lkIFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXI6OmJlZ2luQ2xpcFRv
RHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IERlc3Rp
bmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSkKLXsKLSAgICBtX21hc2tJbWFnZUJ1ZmZlciA9
IGRyYXdpbmdDb250ZXh0KCkuY3JlYXRlQ29tcGF0aWJsZUltYWdlQnVmZmVyKGRlc3RpbmF0aW9u
LnNpemUoKSwgY29sb3JTcGFjZSk7Ci19Ci0KLXZvaWQgUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRl
cjo6ZW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24p
Ci17Ci0gICAgYXV0byBtYXNrSW1hZ2VCdWZmZXIgPSBzdGQ6OmV4Y2hhbmdlKG1fbWFza0ltYWdl
QnVmZmVyLCB7IH0pOwotICAgIGlmICghbWFza0ltYWdlQnVmZmVyKSB7Ci0gICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgZHJhd2luZ0Nv
bnRleHQoKS5jbGlwVG9JbWFnZUJ1ZmZlcigqbWFza0ltYWdlQnVmZmVyLCBkZXN0aW5hdGlvbik7
Ci19Ci0KIHZvaWQgUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlcjo6ZHJhd0ZpbHRlcmVkSW1hZ2VC
dWZmZXIoc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IHNvdXJjZUlt
YWdlSWRlbnRpZmllciwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2VJbWFnZVJlY3QsIElQQzo6Rmls
dGVyUmVmZXJlbmNlIGZpbHRlclJlZmVyZW5jZSkKIHsKICAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+
IHNvdXJjZUltYWdlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyLmgKaW5kZXggZTE2OGU1YWVhMjE0
YTgzMDBiNDEzNDE3Zjg5ODViNGQ5MWQzNGY5ZS4uMTBhZTIwMWFhZDE1OGIyZmU3ZmJhMzM3ZmIy
N2JkMTgwN2QwMmRmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5oCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTc4LDggKzc4LDYgQEAg
cHVibGljOgogICAgIHZvaWQgY2xpcFRvSW1hZ2VCdWZmZXIoV2ViQ29yZTo6UmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGRlc3RpbmF0aW9uUmVj
dCk7CiAgICAgdm9pZCBjbGlwT3V0VG9QYXRoKGNvbnN0IFdlYkNvcmU6OlBhdGgmKTsKICAgICB2
b2lkIGNsaXBQYXRoKGNvbnN0IFdlYkNvcmU6OlBhdGgmLCBXZWJDb3JlOjpXaW5kUnVsZSk7Ci0g
ICAgdm9pZCBiZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBXZWJDb3JlOjpGbG9hdFJl
Y3QmIGRlc3RpbmF0aW9uLCBjb25zdCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UmKTsK
LSAgICB2b2lkIGVuZENsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBXZWJDb3JlOjpGbG9hdFJl
Y3QmIGRlc3RpbmF0aW9uKTsKICAgICB2b2lkIGRyYXdHbHlwaHMoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OkRyYXdHbHlwaHMmJik7CiAgICAgdm9pZCBkcmF3RmlsdGVyZWRJbWFnZUJ1ZmZlcihzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gc291cmNlSW1h
Z2VJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHNvdXJjZUltYWdlUmVjdCwg
SVBDOjpGaWx0ZXJSZWZlcmVuY2UpOwogICAgIHZvaWQgZHJhd0ltYWdlQnVmZmVyKFdlYkNvcmU6
OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBpbWFnZUJ1ZmZlcklkZW50aWZpZXIsIGNvbnN0
IFdlYkNvcmU6OkZsb2F0UmVjdCYgZGVzdGluYXRpb25SZWN0LCBjb25zdCBXZWJDb3JlOjpGbG9h
dFJlY3QmIHNyY1JlY3QsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJik7CkBA
IC0xNjAsNyArMTU4LDYgQEAgcHJpdmF0ZToKICAgICBRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIgbV9pbWFnZUJ1ZmZlcklkZW50aWZpZXI7CiAgICAgV2ViQ29yZTo6UHJvY2Vz
c0lkZW50aWZpZXIgbV93ZWJQcm9jZXNzSWRlbnRpZmllcjsKICAgICBSZWZQdHI8UmVtb3RlUmVu
ZGVyaW5nQmFja2VuZD4gbV9yZW5kZXJpbmdCYWNrZW5kOwotICAgIFJlZlB0cjxXZWJDb3JlOjpJ
bWFnZUJ1ZmZlcj4gbV9tYXNrSW1hZ2VCdWZmZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVE
aXNwbGF5TGlzdFJlY29yZGVyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIubWVzc2FnZXMuaW4KaW5kZXggZTIz
ZWFjY2E1NzJmNzVmNzE1MTIyZGE2MzZmMzMxMGM2OTg1YTc2NC4uNjliNDI4MzZjMTIwZGNjODg3
YzBkODkyMTJmMzdmZWQ5NGRkMjc1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIubWVzc2FnZXMuaW4KKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3Jk
ZXIubWVzc2FnZXMuaW4KQEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAoQykgMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAyMS0yMDIyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtNDQsOCArNDQsNiBAQCBtZXNzYWdlcyAtPiBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVy
IE5vdFJlZkNvdW50ZWQgU3RyZWFtIHsKICAgICBDbGlwVG9JbWFnZUJ1ZmZlcihXZWJDb3JlOjpS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBX
ZWJDb3JlOjpGbG9hdFJlY3QgZGVzdGluYXRpb25SZWN0KQogICAgIENsaXBPdXRUb1BhdGgoV2Vi
Q29yZTo6UGF0aCBwYXRoKQogICAgIENsaXBQYXRoKFdlYkNvcmU6OlBhdGggcGF0aCwgZW51bTp1
aW50OF90IFdlYkNvcmU6OldpbmRSdWxlIHdpbmRSdWxlKQotICAgIEJlZ2luQ2xpcFRvRHJhd2lu
Z0NvbW1hbmRzKFdlYkNvcmU6OkZsb2F0UmVjdCBkZXN0aW5hdGlvbiwgV2ViQ29yZTo6RGVzdGlu
YXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UpCi0gICAgRW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRz
KFdlYkNvcmU6OkZsb2F0UmVjdCBkZXN0aW5hdGlvbikKICAgICBEcmF3R2x5cGhzKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpEcmF3R2x5cGhzIGl0ZW0pCiAgICAgRHJhd0ZpbHRlcmVkSW1hZ2VCdWZm
ZXIoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IHNv
dXJjZUltYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6RmxvYXRSZWN0IHNvdXJjZUltYWdlUmVjdCwg
SVBDOjpGaWx0ZXJSZWZlcmVuY2UgZmlsdGVyKQogICAgIERyYXdJbWFnZUJ1ZmZlcihXZWJDb3Jl
OjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVyLCBXZWJD
b3JlOjpGbG9hdFJlY3QgZGVzdGluYXRpb25SZWN0LCBXZWJDb3JlOjpGbG9hdFJlY3Qgc3JjUmVj
dCwgc3RydWN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zIG9wdGlvbnMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlM
aXN0UmVjb3JkZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eS5jcHAKaW5kZXggZjU0NzUxOTBlZGM5
MDJkNjM4Y2YyNzA4YTA3NGU1NmViYjA4NmQwMC4uMzE2NDZiNTY5ODY1MjIzNWU3NGQ0ZGVjOTE5
M2Y3YTg4ZjFjMGY0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclBy
b3h5LmNwcApAQCAtMTkwLDE2ICsxOTAsNiBAQCB2b2lkIFJlbW90ZURpc3BsYXlMaXN0UmVjb3Jk
ZXJQcm94eTo6cmVjb3JkQ2xpcFBhdGgoY29uc3QgUGF0aCYgcGF0aCwgV2luZFJ1bGUgcgogICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXI6OkNsaXBQYXRoKHBhdGgs
IHJ1bGUpKTsKIH0KIAotdm9pZCBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHk6OnJlY29y
ZEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24s
IERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlKQotewotICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXI6OkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKGRl
c3RpbmF0aW9uLCBjb2xvclNwYWNlKSk7Ci19Ci0KLXZvaWQgUmVtb3RlRGlzcGxheUxpc3RSZWNv
cmRlclByb3h5OjpyZWNvcmRFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0
JiBkZXN0aW5hdGlvbikKLXsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVEaXNwbGF5TGlzdFJl
Y29yZGVyOjpFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHMoZGVzdGluYXRpb24pKTsKLX0KLQogdm9p
ZCBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHk6OnJlY29yZERyYXdGaWx0ZXJlZEltYWdl
QnVmZmVyKEltYWdlQnVmZmVyKiBzb3VyY2VJbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2VJ
bWFnZVJlY3QsIEZpbHRlciYgZmlsdGVyKQogewogICAgIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyPiBpZGVudGlmaWVyOwpAQCAtNDYyLDExICs0NTIsNiBAQCB2b2lk
IFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eTo6Zmx1c2hDb250ZXh0KEdyYXBoaWNzQ29u
dGV4dEZsdXNoSWRlbnRpZmllcgogICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZURpc3BsYXlMaXN0
UmVjb3JkZXI6OkZsdXNoQ29udGV4dChpZGVudGlmaWVyKSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0
cjxHcmFwaGljc0NvbnRleHQ+IFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eTo6Y3JlYXRl
TmVzdGVkQ29udGV4dChjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwLCBjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mIGluaXRpYWxDVE0pCi17Ci0gICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVtb3RlRGlz
cGxheUxpc3RSZWNvcmRlclByb3h5PigqdGhpcywgaW5pdGlhbENsaXAsIGluaXRpYWxDVE0pOwot
fQotCiBSZWZQdHI8SW1hZ2VCdWZmZXI+IFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eTo6
Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBjb25zdCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgUmVu
ZGVyaW5nTWV0aG9kIHJlbmRlcmluZ01ldGhvZCkgY29uc3QKIHsKICAgICBpZiAoVU5MSUtFTFko
IW1fcmVuZGVyaW5nQmFja2VuZCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3Jk
ZXJQcm94eS5oCmluZGV4IDFhOTA5ZTIyNjM2MTYwZTc2OGNhMzc4ZmQwNzU5NTY2ZjFjZjhjMTQu
LjdlMjM3Y2I1MmRiMGI5ZTgyMzRlMDU0ZDc2ODFjMjAzYTFlMjEzYjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNv
cmRlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDIxLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC04OSw4ICs4OSw2IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCByZWNvcmRDbGlwVG9JbWFnZUJ1ZmZlcihXZWJDb3JlOjpJbWFnZUJ1ZmZlciYsIGNv
bnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgZGVzdGluYXRpb25SZWN0KSBmaW5hbDsKICAgICB2b2lk
IHJlY29yZENsaXBPdXRUb1BhdGgoY29uc3QgV2ViQ29yZTo6UGF0aCYpIGZpbmFsOwogICAgIHZv
aWQgcmVjb3JkQ2xpcFBhdGgoY29uc3QgV2ViQ29yZTo6UGF0aCYsIFdlYkNvcmU6OldpbmRSdWxl
KSBmaW5hbDsKLSAgICB2b2lkIHJlY29yZEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0
IFdlYkNvcmU6OkZsb2F0UmVjdCYgZGVzdGluYXRpb24sIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29s
b3JTcGFjZSkgZmluYWw7Ci0gICAgdm9pZCByZWNvcmRFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHMo
Y29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBkZXN0aW5hdGlvbikgZmluYWw7CiAgICAgdm9pZCBy
ZWNvcmREcmF3RmlsdGVyZWRJbWFnZUJ1ZmZlcihXZWJDb3JlOjpJbWFnZUJ1ZmZlciosIGNvbnN0
IFdlYkNvcmU6OkZsb2F0UmVjdCYgc291cmNlSW1hZ2VSZWN0LCBXZWJDb3JlOjpGaWx0ZXImKSBm
aW5hbDsKICAgICB2b2lkIHJlY29yZERyYXdHbHlwaHMoY29uc3QgV2ViQ29yZTo6Rm9udCYsIGNv
bnN0IFdlYkNvcmU6OkdseXBoQnVmZmVyR2x5cGgqLCBjb25zdCBXZWJDb3JlOjpHbHlwaEJ1ZmZl
ckFkdmFuY2UqLCB1bnNpZ25lZCBjb3VudCwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgbG9j
YWxBbmNob3IsIFdlYkNvcmU6OkZvbnRTbW9vdGhpbmdNb2RlKSBmaW5hbDsKICAgICB2b2lkIHJl
Y29yZERyYXdJbWFnZUJ1ZmZlcihXZWJDb3JlOjpJbWFnZUJ1ZmZlciYsIGNvbnN0IFdlYkNvcmU6
OkZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgc3JjUmVjdCwg
Y29uc3QgV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnMmKSBmaW5hbDsKQEAgLTE0Miw4ICsx
NDAsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgcmVjb3JkUmVzb3VyY2VVc2UoY29uc3QgV2ViQ29y
ZTo6U291cmNlSW1hZ2UmKSBmaW5hbDsKICAgICBib29sIHJlY29yZFJlc291cmNlVXNlKFdlYkNv
cmU6OkZvbnQmKSBmaW5hbDsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQ+IGNyZWF0ZU5lc3RlZENvbnRleHQoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBp
bml0aWFsQ2xpcCwgY29uc3QgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtJiBpbml0aWFsQ1RNKSBm
aW5hbDsKLQogICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZm
ZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgY29uc3QgV2ViQ29yZTo6RGVzdGluYXRpb25D
b2xvclNwYWNlJiwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSwgV2ViQ29yZTo6UmVuZGVyaW5nTWV0
aG9kKSBjb25zdCBmaW5hbDsKICAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IGNyZWF0
ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBjb25zdCBX
ZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UmID0gV2ViQ29yZTo6RGVzdGluYXRpb25Db2xv
clNwYWNlOjpTUkdCKCksIFdlYkNvcmU6OlJlbmRlcmluZ01ldGhvZCA9IFdlYkNvcmU6OlJlbmRl
cmluZ01ldGhvZDo6RGVmYXVsdCkgY29uc3QgZmluYWw7CiAgICAgUmVmUHRyPFdlYkNvcmU6Oklt
YWdlQnVmZmVyPiBjcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6Rmxv
YXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlJiA9IFdlYkNvcmU6
OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBXZWJDb3JlOjpSZW5kZXJpbmdNZXRob2Qg
PSBXZWJDb3JlOjpSZW5kZXJpbmdNZXRob2Q6OkRlZmF1bHQpIGNvbnN0IGZpbmFsOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>