<?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>46004</bug_id>
          
          <creation_ts>2010-09-17 15:26:35 -0700</creation_ts>
          <short_desc>Change Clipboard to use an enum instead of isForDragging = true/false</short_desc>
          <delta_ts>2010-09-21 13:52:40 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Daniel Cheng">dcheng</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>eric</cc>
    
    <cc>gustavo</cc>
    
    <cc>levin</cc>
    
    <cc>tony</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>280914</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2010-09-17 15:26:35 -0700</bug_when>
    <thetext>The bool parameter can get hard to follow, and leads to mistakes--I fixed one probable error while updating the various platforms to use the enum instead of the bool.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>280919</commentid>
    <comment_count>1</comment_count>
      <attachid>67962</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2010-09-17 15:28:58 -0700</bug_when>
    <thetext>Created attachment 67962
Patch

Flagging for R? so the EWS bots can try out the patch first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>280928</commentid>
    <comment_count>2</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-09-17 15:35:54 -0700</bug_when>
    <thetext>This is great.  I will r+ cq+ as soon as the ews bots go green (I think r+&apos;ing cancels the ews run).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>280941</commentid>
    <comment_count>3</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-09-17 15:43:24 -0700</bug_when>
    <thetext>I prefer enums over booleans. Is it proper to call these drag-drop and copy-paste instead of drag-and-drop and copy-and-paste? Hence, name the enum value DragAndDrop and CopyAndPaste.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>280986</commentid>
    <comment_count>4</comment_count>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2010-09-17 16:47:57 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; I prefer enums over booleans. Is it proper to call these drag-drop and copy-paste instead of drag-and-drop and copy-and-paste? Hence, name the enum value DragAndDrop and CopyAndPaste.

I like this idea. I&apos;ll update the patch once I get back EWS results.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>280989</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-09-17 16:50:14 -0700</bug_when>
    <thetext>Attachment 67962 did not build on gtk:
Build output: http://queues.webkit.org/results/4071054</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281202</commentid>
    <comment_count>6</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-09-18 16:11:29 -0700</bug_when>
    <thetext>Attachment 67962 did not build on qt:
Build output: http://queues.webkit.org/results/4066060</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281256</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-09-18 21:46:47 -0700</bug_when>
    <thetext>Attachment 67962 did not build on win:
Build output: http://queues.webkit.org/results/4034072</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281696</commentid>
    <comment_count>8</comment_count>
      <attachid>68114</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2010-09-20 11:32:19 -0700</bug_when>
    <thetext>Created attachment 68114
Patch

Fix the compile errors and rename CopyPaste/DragDrop to CopyAndPaste/DragAndDrop.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281824</commentid>
    <comment_count>9</comment_count>
      <attachid>68114</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2010-09-20 14:44:22 -0700</bug_when>
    <thetext>Comment on attachment 68114
Patch

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

&gt; WebCore/ChangeLog:8
&gt; +        No new tests. (OOPS!)

This needs to be replaced with an explanation. Either:
1. Name the test(s),
2. Describe why a test isn&apos;t possible, or
3. Indicate that no new functionality is exposed so no new test is needed.

&gt; WebCore/dom/Clipboard.h:96
&gt; +        Clipboard(ClipboardAccessPolicy, ClipboardType clipboardType);

Parameter name &quot;clipboardType&quot; shouldn&apos;t be here.

&gt; WebCore/platform/chromium/ClipboardChromium.cpp:207
&gt;              // If this isn&apos;t for a drag, it&apos;s for a cut/paste event handler.

It looks like this comment isn&apos;t needed anymore (but if you remove it, you need to update the next comment line slightly).

&gt; WebCore/platform/chromium/ClipboardChromium.cpp:223
&gt;              // If this isn&apos;t for a drag, it&apos;s for a cut/paste event handler.

Ditto.

&gt; WebCore/platform/mac/ClipboardMac.h:82
&gt; +    ClipboardMac(ClipboardType clipboardType, NSPasteboard *, ClipboardAccessPolicy, Frame*);

Param name should go away.

&gt; WebCore/platform/win/ClipboardWin.h:81
&gt; +    ClipboardWin(ClipboardType clipboardType, IDataObject*, ClipboardAccessPolicy, Frame*);
&gt; +    ClipboardWin(ClipboardType clipboardType, WCDataObject*, ClipboardAccessPolicy, Frame*);

Param name should go away.

&gt; WebCore/platform/wx/ClipboardWx.h:68
&gt; +        ClipboardWx(ClipboardAccessPolicy, ClipboardType clipboardType);

Param name should go away.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281828</commentid>
    <comment_count>10</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2010-09-20 14:47:27 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 68114 [details])

Basically consider this an r- (but I want to make sure the ews runs finish.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282120</commentid>
    <comment_count>11</comment_count>
      <attachid>68194</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2010-09-20 23:42:02 -0700</bug_when>
    <thetext>Created attachment 68194
Patch

(In reply to comment #9)
&gt; (From update of attachment 68114 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=68114&amp;action=review
&gt; 
&gt; &gt; WebCore/ChangeLog:8
&gt; &gt; +        No new tests. (OOPS!)
&gt; 
&gt; This needs to be replaced with an explanation. Either:
&gt; 1. Name the test(s),
&gt; 2. Describe why a test isn&apos;t possible, or
&gt; 3. Indicate that no new functionality is exposed so no new test is needed.
&gt; 

Done.

&gt; &gt; WebCore/dom/Clipboard.h:96
&gt; &gt; +        Clipboard(ClipboardAccessPolicy, ClipboardType clipboardType);
&gt; 
&gt; Parameter name &quot;clipboardType&quot; shouldn&apos;t be here.
&gt; 

Done.

&gt; &gt; WebCore/platform/chromium/ClipboardChromium.cpp:207
&gt; &gt;              // If this isn&apos;t for a drag, it&apos;s for a cut/paste event handler.
&gt; 
&gt; It looks like this comment isn&apos;t needed anymore (but if you remove it, you need to update the next comment line slightly).
&gt; 
&gt; &gt; WebCore/platform/chromium/ClipboardChromium.cpp:223
&gt; &gt;              // If this isn&apos;t for a drag, it&apos;s for a cut/paste event handler.
&gt; 
&gt; Ditto.

Done.

&gt; 
&gt; &gt; WebCore/platform/mac/ClipboardMac.h:82
&gt; &gt; +    ClipboardMac(ClipboardType clipboardType, NSPasteboard *, ClipboardAccessPolicy, Frame*);
&gt; 
&gt; Param name should go away.
&gt; 

Done.

&gt; &gt; WebCore/platform/win/ClipboardWin.h:81
&gt; &gt; +    ClipboardWin(ClipboardType clipboardType, IDataObject*, ClipboardAccessPolicy, Frame*);
&gt; &gt; +    ClipboardWin(ClipboardType clipboardType, WCDataObject*, ClipboardAccessPolicy, Frame*);
&gt; 
&gt; Param name should go away.
&gt; 

Done.

&gt; &gt; WebCore/platform/wx/ClipboardWx.h:68
&gt; &gt; +        ClipboardWx(ClipboardAccessPolicy, ClipboardType clipboardType);
&gt; 
&gt; Param name should go away.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282461</commentid>
    <comment_count>12</comment_count>
      <attachid>68194</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-09-21 11:50:32 -0700</bug_when>
    <thetext>Comment on attachment 68194
Patch

Clearing flags on attachment: 68194

Committed r67973: &lt;http://trac.webkit.org/changeset/67973&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282462</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-09-21 11:50:38 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282536</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-09-21 13:52:40 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/67973 might have broken Qt Windows 32-bit Debug
The following changes are on the blame list:
http://trac.webkit.org/changeset/67973
http://trac.webkit.org/changeset/67974
http://trac.webkit.org/changeset/67975
http://trac.webkit.org/changeset/67976
http://trac.webkit.org/changeset/67977
http://trac.webkit.org/changeset/67978
http://trac.webkit.org/changeset/67979</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>67962</attachid>
            <date>2010-09-17 15:28:58 -0700</date>
            <delta_ts>2010-09-20 11:32:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>refactory.patch</filename>
            <type>text/plain</type>
            <size>45073</size>
            <attacher name="Daniel Cheng">dcheng</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZTU5ODI3Ny4uZTI0MmY2OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMTcgQEAKKzIwMTAtMDktMTcgIERhbmllbCBDaGVu
ZyAgPGRjaGVuZ0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQ2hhbmdlIENsaXBib2FyZCB0byB1c2UgYW4gZW51bSBpbnN0ZWFk
IG9mIGlzRm9yRHJhZ2dpbmcgPSB0cnVlL2ZhbHNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NjAwNAorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gKE9P
UFMhKQorCisgICAgICAgICogYmluZGluZ3MvanMvSlNDbGlwYm9hcmRDdXN0b20uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SlNDbGlwYm9hcmQ6OnNldERyYWdJbWFnZSk6CisgICAgICAgICogYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4Q2xpcGJvYXJkQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlY4Q2xpcGJvYXJkOjpzZXREcmFnSW1hZ2VDYWxsYmFjayk6CisgICAgICAgICogZG9tL0NsaXBi
b2FyZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmQ6OkNsaXBib2FyZCk6CisgICAg
ICAgIChXZWJDb3JlOjpDbGlwYm9hcmQ6OnNldERyb3BFZmZlY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2xpcGJvYXJkOjpzZXRFZmZlY3RBbGxvd2VkKToKKyAgICAgICAgKiBkb20vQ2xpcGJvYXJk
Lmg6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmQ6OmlzRm9yQ29weVBhc3RlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNsaXBib2FyZDo6aXNGb3JEcmFnRHJvcCk6CisgICAgICAgICogZWRpdGlu
Zy9hbmRyb2lkL0VkaXRvckFuZHJvaWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpu
ZXdHZW5lcmFsQ2xpcGJvYXJkKToKKyAgICAgICAgKiBlZGl0aW5nL2JyZXcvRWRpdG9yQnJldy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6Om5ld0dlbmVyYWxDbGlwYm9hcmQpOgorICAg
ICAgICAqIGVkaXRpbmcvY2hyb21pdW0vRWRpdG9yQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RWRpdG9yOjpuZXdHZW5lcmFsQ2xpcGJvYXJkKToKKyAgICAgICAgKiBlZGl0aW5nL2hh
aWt1L0VkaXRvckhhaWt1LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bmV3R2VuZXJh
bENsaXBib2FyZCk6CisgICAgICAgICogZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6RWRpdG9yOjpuZXdHZW5lcmFsQ2xpcGJvYXJkKToKKyAgICAgICAgKiBlZGl0
aW5nL3d4L0VkaXRvcld4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bmV3R2VuZXJh
bENsaXBib2FyZCk6CisgICAgICAgICogcGFnZS9jaHJvbWl1bS9FdmVudEhhbmRsZXJDaHJvbWl1
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmNyZWF0ZURyYWdnaW5nQ2xp
cGJvYXJkKToKKyAgICAgICAgKiBwYWdlL2VmbC9FdmVudEhhbmRsZXJFZmwuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpjcmVhdGVEcmFnZ2luZ0NsaXBib2FyZCk6CisgICAg
ICAgICogcGFnZS9ndGsvRXZlbnRIYW5kbGVyR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2
ZW50SGFuZGxlcjo6Y3JlYXRlRHJhZ2dpbmdDbGlwYm9hcmQpOgorICAgICAgICAqIHBhZ2UvaGFp
a3UvRXZlbnRIYW5kbGVySGFpa3UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVy
OjpjcmVhdGVEcmFnZ2luZ0NsaXBib2FyZCk6CisgICAgICAgICogcGFnZS9tYWMvRXZlbnRIYW5k
bGVyTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpjcmVhdGVEcmFnZ2lu
Z0NsaXBib2FyZCk6CisgICAgICAgICogcGFnZS9xdC9FdmVudEhhbmRsZXJRdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmNyZWF0ZURyYWdnaW5nQ2xpcGJvYXJkKToKKyAg
ICAgICAgKiBwYWdlL3dpbi9FdmVudEhhbmRsZXJXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RXZlbnRIYW5kbGVyOjpjcmVhdGVEcmFnZ2luZ0NsaXBib2FyZCk6CisgICAgICAgICogcGFnZS93
eC9FdmVudEhhbmRsZXJXeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmNy
ZWF0ZURyYWdnaW5nQ2xpcGJvYXJkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hbmRyb2lkL0NsaXBi
b2FyZEFuZHJvaWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkQW5kcm9pZDo6Q2xp
cGJvYXJkQW5kcm9pZCk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRBbmRyb2lkOjpjbGVh
ckRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkQW5kcm9pZDo6Y2xlYXJBbGxEYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEFuZHJvaWQ6OnNldERhdGEpOgorICAgICAg
ICAqIHBsYXRmb3JtL2FuZHJvaWQvQ2xpcGJvYXJkQW5kcm9pZC5oOgorICAgICAgICAqIHBsYXRm
b3JtL2JyZXcvQ2xpcGJvYXJkQnJldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRC
cmV3OjpDbGlwYm9hcmRCcmV3KToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEJyZXc6OmNs
ZWFyRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRCcmV3OjpjbGVhckFsbERhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkQnJldzo6c2V0RGF0YSk6CisgICAgICAgICog
cGxhdGZvcm0vYnJldy9DbGlwYm9hcmRCcmV3Lmg6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21p
dW0vQ2xpcGJvYXJkQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkQ2hyb21pdW06OkNsaXBib2FyZENo
cm9taXVtKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZENocm9taXVtOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkQ2hyb21pdW06OmdldERhdGEpOgorICAgICAgICAq
IHBsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9taXVtLmg6CisgICAgICAgICogcGxhdGZv
cm0vZWZsL0NsaXBib2FyZEVmbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6Om5ld0dl
bmVyYWxDbGlwYm9hcmQpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkRWZsOjpDbGlwYm9h
cmRFZmwpOgorICAgICAgICAqIHBsYXRmb3JtL2VmbC9DbGlwYm9hcmRFZmwuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkNsaXBib2FyZEVmbDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsv
Q2xpcGJvYXJkR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bmV3R2VuZXJhbENs
aXBib2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmQ6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpDbGlwYm9hcmRHdGs6OkNsaXBib2FyZEd0ayk6CisgICAgICAgICogcGxhdGZv
cm0vZ3RrL0NsaXBib2FyZEd0ay5oOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkR3RrOjpj
cmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2hhaWt1L0NsaXBib2FyZEhhaWt1LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNs
aXBib2FyZEhhaWt1OjpDbGlwYm9hcmRIYWlrdSk6CisgICAgICAgICogcGxhdGZvcm0vaGFpa3Uv
Q2xpcGJvYXJkSGFpa3UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEhhaWt1OjpjcmVh
dGUpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9DbGlwYm9hcmRNYWMuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkNsaXBib2FyZE1hYzo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvQ2xp
cGJvYXJkTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkTWFjOjpDbGlwYm9hcmRNYWMpOgorICAgICAgICAqIHBs
YXRmb3JtL3F0L0NsaXBib2FyZFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZFF0
OjpDbGlwYm9hcmRRdCk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRRdDo6fkNsaXBib2Fy
ZFF0KToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZFF0OjpjbGVhckRhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2xpcGJvYXJkUXQ6OmNsZWFyQWxsRGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpDbGlwYm9hcmRRdDo6c2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRRdDo6
ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZFF0
Ojp3cml0ZVVSTCk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRRdDo6d3JpdGVSYW5nZSk6
CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRRdDo6d3JpdGVQbGFpblRleHQpOgorICAgICAg
ICAqIHBsYXRmb3JtL3F0L0NsaXBib2FyZFF0Lmg6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9h
cmRRdDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vQ2xpcGJvYXJkV2luLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZFdpbjo6Q2xpcGJvYXJkV2luKToKKyAgICAgICAg
KFdlYkNvcmU6OkNsaXBib2FyZFdpbjo6Y2xlYXJEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNs
aXBib2FyZFdpbjo6Y2xlYXJBbGxEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZFdp
bjo6c2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRXaW46OnNldEV4dGVybmFs
RGF0YU9iamVjdCk6CisgICAgICAgICogcGxhdGZvcm0vd2luL0NsaXBib2FyZFdpbi5oOgorICAg
ICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkV2luOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L3dpbi9FZGl0b3JXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpuZXdHZW5lcmFs
Q2xpcGJvYXJkKToKKyAgICAgICAgKiBwbGF0Zm9ybS93eC9DbGlwYm9hcmRXeC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDbGlwYm9hcmRXeDo6Q2xpcGJvYXJkV3gpOgorICAgICAgICAqIHBsYXRm
b3JtL3d4L0NsaXBib2FyZFd4Lmg6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRXeDo6Y3Jl
YXRlKToKKwogMjAxMC0wOS0xNCAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBSZXZpZXdlZCBieSBZdXJ5IFNlbWlraGF0c2t5LgpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NsaXBib2FyZEN1c3RvbS5jcHAgYi9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQ2xpcGJvYXJkQ3VzdG9tLmNwcAppbmRleCAyYThkMzA5Li41MDkyZjcxIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2xpcGJvYXJkQ3VzdG9tLmNwcAorKysgYi9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2xpcGJvYXJkQ3VzdG9tLmNwcApAQCAtMTAxLDcgKzEwMSw3
IEBAIEpTVmFsdWUgSlNDbGlwYm9hcmQ6OnNldERyYWdJbWFnZShFeGVjU3RhdGUqIGV4ZWMpCiB7
CiAgICAgQ2xpcGJvYXJkKiBjbGlwYm9hcmQgPSBpbXBsKCk7CiAKLSAgICBpZiAoIWNsaXBib2Fy
ZC0+aXNGb3JEcmFnZ2luZygpKQorICAgIGlmICghY2xpcGJvYXJkLT5pc0ZvckRyYWdEcm9wKCkp
CiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogCiAgICAgLy8gRklYTUU6IEl0IGRvZXMg
bm90IG1hdGNoIHRoZSByZXN0IG9mIHRoZSBKUyBiaW5kaW5ncyB0byB0aHJvdyBvbiBpbnZhbGlk
IG51bWJlciBvZiBhcmd1bWVudHMuIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhDbGlwYm9hcmRDdXN0b20uY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhDbGlwYm9hcmRDdXN0b20uY3BwCmluZGV4IDY5NzQyZjguLmNlZWM0NDcgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q2xpcGJvYXJkQ3VzdG9tLmNwcAorKysgYi9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENsaXBib2FyZEN1c3RvbS5jcHAKQEAgLTEwMSw3
ICsxMDEsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDbGlwYm9hcmQ6OnNldERyYWdJbWFn
ZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZwogICAgIElOQ19TVEFUUygiRE9NLkNs
aXBib2FyZC5zZXREcmFnSW1hZ2UoKSIpOwogICAgIENsaXBib2FyZCogY2xpcGJvYXJkID0gVjhD
bGlwYm9hcmQ6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogCi0gICAgaWYgKCFjbGlwYm9hcmQt
PmlzRm9yRHJhZ2dpbmcoKSkKKyAgICBpZiAoIWNsaXBib2FyZC0+aXNGb3JEcmFnRHJvcCgpKQog
ICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogCiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkg
IT0gMykKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0NsaXBib2FyZC5jcHAgYi9XZWJDb3JlL2Rv
bS9DbGlwYm9hcmQuY3BwCmluZGV4IGQ2NDRiY2MuLjBhNTllOGUgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvZG9tL0NsaXBib2FyZC5jcHAKKysrIGIvV2ViQ29yZS9kb20vQ2xpcGJvYXJkLmNwcApAQCAt
MzMsMTIgKzMzLDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ2xpcGJvYXJkOjpDbGlw
Ym9hcmQoQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSwgYm9vbCBpc0ZvckRyYWdnaW5nKSAK
K0NsaXBib2FyZDo6Q2xpcGJvYXJkKENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIENsaXBi
b2FyZFR5cGUgY2xpcGJvYXJkVHlwZSkgCiAgICAgOiBtX3BvbGljeShwb2xpY3kpCiAgICAgLCBt
X2Ryb3BFZmZlY3QoInVuaW5pdGlhbGl6ZWQiKQogICAgICwgbV9lZmZlY3RBbGxvd2VkKCJ1bmlu
aXRpYWxpemVkIikKICAgICAsIG1fZHJhZ1N0YXJ0ZWQoZmFsc2UpCi0gICAgLCBtX2ZvckRyYWdn
aW5nKGlzRm9yRHJhZ2dpbmcpCisgICAgLCBtX2NsaXBib2FyZFR5cGUoY2xpcGJvYXJkVHlwZSkK
ICAgICAsIG1fZHJhZ0ltYWdlKDApCiB7CiB9CkBAIC0xMjcsNyArMTI3LDcgQEAgdm9pZCBDbGlw
Ym9hcmQ6OnNldERlc3RpbmF0aW9uT3BlcmF0aW9uKERyYWdPcGVyYXRpb24gb3ApCiAKIHZvaWQg
Q2xpcGJvYXJkOjpzZXREcm9wRWZmZWN0KGNvbnN0IFN0cmluZyAmZWZmZWN0KQogewotICAgIGlm
ICghbV9mb3JEcmFnZ2luZykKKyAgICBpZiAoIWlzRm9yRHJhZ0Ryb3AoKSkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgLy8gVGhlIGF0dHJpYnV0ZSBtdXN0IGlnbm9yZSBhbnkgYXR0ZW1wdHMgdG8g
c2V0IGl0IHRvIGEgdmFsdWUgb3RoZXIgdGhhbiBub25lLCBjb3B5LCBsaW5rLCBhbmQgbW92ZS4g
CkBAIC0xNDAsNyArMTQwLDcgQEAgdm9pZCBDbGlwYm9hcmQ6OnNldERyb3BFZmZlY3QoY29uc3Qg
U3RyaW5nICZlZmZlY3QpCiAKIHZvaWQgQ2xpcGJvYXJkOjpzZXRFZmZlY3RBbGxvd2VkKGNvbnN0
IFN0cmluZyAmZWZmZWN0KQogewotICAgIGlmICghbV9mb3JEcmFnZ2luZykKKyAgICBpZiAoIWlz
Rm9yRHJhZ0Ryb3AoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGRyYWdPcEZyb21JRU9w
KGVmZmVjdCkgPT0gRHJhZ09wZXJhdGlvblByaXZhdGUpIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
ZG9tL0NsaXBib2FyZC5oIGIvV2ViQ29yZS9kb20vQ2xpcGJvYXJkLmgKaW5kZXggMDU2MjI4MC4u
MDFiM2Y4NyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vQ2xpcGJvYXJkLmgKKysrIGIvV2ViQ29y
ZS9kb20vQ2xpcGJvYXJkLmgKQEAgLTQwLDEyICs0MCwxNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgLy8gU3RhdGUgYXZhaWxhYmxlIGR1cmluZyBJRSdzIGV2ZW50cyBmb3IgZHJhZyBhbmQg
ZHJvcCBhbmQgY29weS9wYXN0ZQogICAgIGNsYXNzIENsaXBib2FyZCA6IHB1YmxpYyBSZWZDb3Vu
dGVkPENsaXBib2FyZD4gewogICAgIHB1YmxpYzoKKyAgICAgICAgLy8gV2hldGhlciB0aGlzIGNs
aXBib2FyZCBpcyBzZXJ2aW5nIGEgZHJhZy1kcm9wIG9yIGNvcHktcGFzdGUgcmVxdWVzdC4KKyAg
ICAgICAgZW51bSBDbGlwYm9hcmRUeXBlIHsKKyAgICAgICAgICAgIENvcHlQYXN0ZSwKKyAgICAg
ICAgICAgIERyYWdEcm9wLAorICAgICAgICB9OwogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxD
bGlwYm9hcmQ+IGNyZWF0ZShDbGlwYm9hcmRBY2Nlc3NQb2xpY3ksIERyYWdEYXRhKiwgRnJhbWUq
KTsKIAogICAgICAgICB2aXJ0dWFsIH5DbGlwYm9hcmQoKSB7IH0KIAotICAgICAgICAvLyBJcyB0
aGlzIG9wZXJhdGlvbiBhIGRyYWctZHJvcCBvciBhIGNvcHktcGFzdGU/Ci0gICAgICAgIGJvb2wg
aXNGb3JEcmFnZ2luZygpIGNvbnN0IHsgcmV0dXJuIG1fZm9yRHJhZ2dpbmc7IH0KKyAgICAgICAg
Ym9vbCBpc0ZvckNvcHlQYXN0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpcGJvYXJkVHlwZSA9PSBD
b3B5UGFzdGU7IH0KKyAgICAgICAgYm9vbCBpc0ZvckRyYWdEcm9wKCkgY29uc3QgeyByZXR1cm4g
bV9jbGlwYm9hcmRUeXBlID09IERyYWdEcm9wOyB9CiAKICAgICAgICAgU3RyaW5nIGRyb3BFZmZl
Y3QoKSBjb25zdCB7IHJldHVybiBkcm9wRWZmZWN0SXNVbmluaXRpYWxpemVkKCkgPyAibm9uZSIg
OiBtX2Ryb3BFZmZlY3Q7IH0KICAgICAgICAgdm9pZCBzZXREcm9wRWZmZWN0KGNvbnN0IFN0cmlu
ZyYpOwpAQCAtODgsNyArOTMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQg
c2V0RHJhZ0hhc1N0YXJ0ZWQoKSB7IG1fZHJhZ1N0YXJ0ZWQgPSB0cnVlOyB9CiAgICAgICAgIAog
ICAgIHByb3RlY3RlZDoKLSAgICAgICAgQ2xpcGJvYXJkKENsaXBib2FyZEFjY2Vzc1BvbGljeSwg
Ym9vbCBpc0ZvckRyYWdnaW5nKTsKKyAgICAgICAgQ2xpcGJvYXJkKENsaXBib2FyZEFjY2Vzc1Bv
bGljeSwgQ2xpcGJvYXJkVHlwZSBjbGlwYm9hcmRUeXBlKTsKIAogICAgICAgICBDbGlwYm9hcmRB
Y2Nlc3NQb2xpY3kgcG9saWN5KCkgY29uc3QgeyByZXR1cm4gbV9wb2xpY3k7IH0KICAgICAgICAg
Ym9vbCBkcmFnU3RhcnRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZHJhZ1N0YXJ0ZWQ7IH0KQEAgLTk4
LDkgKzEwMyw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgU3RyaW5nIG1fZHJvcEVm
ZmVjdDsKICAgICAgICAgU3RyaW5nIG1fZWZmZWN0QWxsb3dlZDsKICAgICAgICAgYm9vbCBtX2Ry
YWdTdGFydGVkOworICAgICAgICBDbGlwYm9hcmRUeXBlIG1fY2xpcGJvYXJkVHlwZTsKICAgICAg
ICAgCiAgICAgcHJvdGVjdGVkOgotICAgICAgICBib29sIG1fZm9yRHJhZ2dpbmc7CiAgICAgICAg
IEludFBvaW50IG1fZHJhZ0xvYzsKICAgICAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVk
SW1hZ2U+IG1fZHJhZ0ltYWdlOwogICAgICAgICBSZWZQdHI8Tm9kZT4gbV9kcmFnSW1hZ2VFbGVt
ZW50OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL2FuZHJvaWQvRWRpdG9yQW5kcm9pZC5j
cHAgYi9XZWJDb3JlL2VkaXRpbmcvYW5kcm9pZC9FZGl0b3JBbmRyb2lkLmNwcAppbmRleCA2MWNj
ZTAxLi4wZjEwMDE0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvYW5kcm9pZC9FZGl0b3JB
bmRyb2lkLmNwcAorKysgYi9XZWJDb3JlL2VkaXRpbmcvYW5kcm9pZC9FZGl0b3JBbmRyb2lkLmNw
cApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFBhc3NSZWZQdHI8Q2xp
cGJvYXJkPiBFZGl0b3I6Om5ld0dlbmVyYWxDbGlwYm9hcmQoQ2xpcGJvYXJkQWNjZXNzUG9saWN5
IHBvbGljeSwgRnJhbWUqKQogewotICAgIHJldHVybiBuZXcgQ2xpcGJvYXJkQW5kcm9pZChwb2xp
Y3ksIGZhbHNlKTsKKyAgICByZXR1cm4gbmV3IENsaXBib2FyZEFuZHJvaWQocG9saWN5LCBDbGlw
Ym9hcmQ6OkNvcHlQYXN0ZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvZWRpdGluZy9icmV3L0VkaXRvckJyZXcuY3BwIGIvV2ViQ29yZS9lZGl0aW5n
L2JyZXcvRWRpdG9yQnJldy5jcHAKaW5kZXggNGExZjRkNy4uMTljNzZlNiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9lZGl0aW5nL2JyZXcvRWRpdG9yQnJldy5jcHAKKysrIGIvV2ViQ29yZS9lZGl0aW5n
L2JyZXcvRWRpdG9yQnJldy5jcHAKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBQYXNzUmVmUHRyPENsaXBib2FyZD4gRWRpdG9yOjpuZXdHZW5lcmFsQ2xpcGJvYXJkKENs
aXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIEZyYW1lKikKIHsKLSAgICByZXR1cm4gbmV3IENs
aXBib2FyZEJyZXcocG9saWN5LCBmYWxzZSk7CisgICAgcmV0dXJuIG5ldyBDbGlwYm9hcmRCcmV3
KHBvbGljeSwgQ2xpcGJvYXJkOjpDb3B5UGFzdGUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcvY2hyb21pdW0vRWRpdG9yQ2hyb21pdW0u
Y3BwIGIvV2ViQ29yZS9lZGl0aW5nL2Nocm9taXVtL0VkaXRvckNocm9taXVtLmNwcAppbmRleCA3
YTEzYjEyLi45NWY3MzI2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvY2hyb21pdW0vRWRp
dG9yQ2hyb21pdW0uY3BwCisrKyBiL1dlYkNvcmUvZWRpdGluZy9jaHJvbWl1bS9FZGl0b3JDaHJv
bWl1bS5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBQYXNzUmVm
UHRyPENsaXBib2FyZD4gRWRpdG9yOjpuZXdHZW5lcmFsQ2xpcGJvYXJkKENsaXBib2FyZEFjY2Vz
c1BvbGljeSBwb2xpY3ksIEZyYW1lKiBmcmFtZSkKIHsKLSAgICByZXR1cm4gQ2xpcGJvYXJkQ2hy
b21pdW06OmNyZWF0ZShmYWxzZSwgQ2hyb21pdW1EYXRhT2JqZWN0OjpjcmVhdGUoKSwgcG9saWN5
LCBmcmFtZSk7CisgICAgcmV0dXJuIENsaXBib2FyZENocm9taXVtOjpjcmVhdGUoQ2xpcGJvYXJk
OjpDb3B5UGFzdGUsIENocm9taXVtRGF0YU9iamVjdDo6Y3JlYXRlKCksIHBvbGljeSwgZnJhbWUp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRp
bmcvaGFpa3UvRWRpdG9ySGFpa3UuY3BwIGIvV2ViQ29yZS9lZGl0aW5nL2hhaWt1L0VkaXRvckhh
aWt1LmNwcAppbmRleCA0NTk2YzllLi5iMjFhZTE3IDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRp
bmcvaGFpa3UvRWRpdG9ySGFpa3UuY3BwCisrKyBiL1dlYkNvcmUvZWRpdGluZy9oYWlrdS9FZGl0
b3JIYWlrdS5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBQYXNz
UmVmUHRyPENsaXBib2FyZD4gRWRpdG9yOjpuZXdHZW5lcmFsQ2xpcGJvYXJkKENsaXBib2FyZEFj
Y2Vzc1BvbGljeSBwb2xpY3ksIEZyYW1lKikKIHsKLSAgICByZXR1cm4gQ2xpcGJvYXJkSGFpa3U6
OmNyZWF0ZShwb2xpY3ksIGZhbHNlKTsKKyAgICByZXR1cm4gQ2xpcGJvYXJkSGFpa3U6OmNyZWF0
ZShwb2xpY3ksIENsaXBib2FyZDo6Q29weVBhc3RlKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0gYi9XZWJD
b3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQppbmRleCBmMDEwOTA4Li45YzcwNGI4IDEwMDY0
NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQorKysgYi9XZWJDb3JlL2Vk
aXRpbmcvbWFjL0VkaXRvck1hYy5tbQpAQCAtNDIsNyArNDIsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIFBhc3NSZWZQdHI8Q2xpcGJvYXJkPiBFZGl0b3I6Om5ld0dlbmVyYWxDbGlwYm9hcmQo
Q2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSwgRnJhbWUqIGZyYW1lKQogewotICAgIHJldHVy
biBDbGlwYm9hcmRNYWM6OmNyZWF0ZShmYWxzZSwgW05TUGFzdGVib2FyZCBnZW5lcmFsUGFzdGVi
b2FyZF0sIHBvbGljeSwgZnJhbWUpOworICAgIHJldHVybiBDbGlwYm9hcmRNYWM6OmNyZWF0ZShD
bGlwYm9hcmQ6OkNvcHlQYXN0ZSwgW05TUGFzdGVib2FyZCBnZW5lcmFsUGFzdGVib2FyZF0sIHBv
bGljeSwgZnJhbWUpOwogfQogCiB2b2lkIEVkaXRvcjo6c2hvd0ZvbnRQYW5lbCgpCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2VkaXRpbmcvd3gvRWRpdG9yV3guY3BwIGIvV2ViQ29yZS9lZGl0aW5nL3d4
L0VkaXRvcld4LmNwcAppbmRleCBhMmVjNjU0Li4wMWE0MTQxIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2VkaXRpbmcvd3gvRWRpdG9yV3guY3BwCisrKyBiL1dlYkNvcmUvZWRpdGluZy93eC9FZGl0b3JX
eC5jcHAKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBQYXNzUmVmUHRy
PENsaXBib2FyZD4gRWRpdG9yOjpuZXdHZW5lcmFsQ2xpcGJvYXJkKENsaXBib2FyZEFjY2Vzc1Bv
bGljeSBwb2xpY3ksIEZyYW1lKikgCiB7IAotICAgIHJldHVybiBDbGlwYm9hcmRXeDo6Y3JlYXRl
KHBvbGljeSwgdHJ1ZSk7CisgICAgcmV0dXJuIENsaXBib2FyZFd4OjpjcmVhdGUocG9saWN5LCBD
bGlwYm9hcmQ6OkNvcHlQYXN0ZSk7CiB9CiAKIHZvaWQgRWRpdG9yOjpzaG93Q29sb3JQYW5lbCgp
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvY2hyb21pdW0vRXZlbnRIYW5kbGVyQ2hyb21pdW0u
Y3BwIGIvV2ViQ29yZS9wYWdlL2Nocm9taXVtL0V2ZW50SGFuZGxlckNocm9taXVtLmNwcAppbmRl
eCBkZDZjZjk5Li5lMjhkMWU1IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvY2hyb21pdW0vRXZl
bnRIYW5kbGVyQ2hyb21pdW0uY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9jaHJvbWl1bS9FdmVudEhh
bmRsZXJDaHJvbWl1bS5jcHAKQEAgLTEyOSw3ICsxMjksNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6
ZXZlbnRBY3RpdmF0ZWRWaWV3KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQpIGNvbnN0
CiBQYXNzUmVmUHRyPENsaXBib2FyZD4gRXZlbnRIYW5kbGVyOjpjcmVhdGVEcmFnZ2luZ0NsaXBi
b2FyZCgpIGNvbnN0CiB7CiAgICAgUmVmUHRyPENocm9taXVtRGF0YU9iamVjdD4gZGF0YU9iamVj
dCA9IENocm9taXVtRGF0YU9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgcmV0dXJuIENsaXBib2FyZENo
cm9taXVtOjpjcmVhdGUodHJ1ZSwgZGF0YU9iamVjdC5nZXQoKSwgQ2xpcGJvYXJkV3JpdGFibGUs
IG1fZnJhbWUpOworICAgIHJldHVybiBDbGlwYm9hcmRDaHJvbWl1bTo6Y3JlYXRlKENsaXBib2Fy
ZDo6RHJhZ0Ryb3AsIGRhdGFPYmplY3QuZ2V0KCksIENsaXBib2FyZFdyaXRhYmxlLCBtX2ZyYW1l
KTsKIH0KIAogdm9pZCBFdmVudEhhbmRsZXI6OmZvY3VzRG9jdW1lbnRWaWV3KCkKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcGFnZS9lZmwvRXZlbnRIYW5kbGVyRWZsLmNwcCBiL1dlYkNvcmUvcGFnZS9l
ZmwvRXZlbnRIYW5kbGVyRWZsLmNwcAppbmRleCBhY2Y0MzQzLi4xZDRiZDEzIDEwMDY0NAotLS0g
YS9XZWJDb3JlL3BhZ2UvZWZsL0V2ZW50SGFuZGxlckVmbC5jcHAKKysrIGIvV2ViQ29yZS9wYWdl
L2VmbC9FdmVudEhhbmRsZXJFZmwuY3BwCkBAIC0xMTAsNyArMTEwLDcgQEAgYm9vbCBFdmVudEhh
bmRsZXI6OnBhc3NXaGVlbEV2ZW50VG9XaWRnZXQoUGxhdGZvcm1XaGVlbEV2ZW50JiBldmVudCwg
V2lkZ2V0KiB3aWQKIAogUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IEV2ZW50SGFuZGxlcjo6Y3JlYXRl
RHJhZ2dpbmdDbGlwYm9hcmQoKSBjb25zdAogewotICAgIHJldHVybiBDbGlwYm9hcmRFZmw6OmNy
ZWF0ZShDbGlwYm9hcmRXcml0YWJsZSwgdHJ1ZSk7CisgICAgcmV0dXJuIENsaXBib2FyZEVmbDo6
Y3JlYXRlKENsaXBib2FyZFdyaXRhYmxlLCBDbGlwYm9hcmQ6OkRyYWdEcm9wKTsKIH0KIAogYm9v
bCBFdmVudEhhbmRsZXI6OnBhc3NNb3VzZVByZXNzRXZlbnRUb1N1YmZyYW1lKE1vdXNlRXZlbnRX
aXRoSGl0VGVzdFJlc3VsdHMmIG1ldiwgRnJhbWUqIHN1YmZyYW1lKQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wYWdlL2d0ay9FdmVudEhhbmRsZXJHdGsuY3BwIGIvV2ViQ29yZS9wYWdlL2d0ay9FdmVu
dEhhbmRsZXJHdGsuY3BwCmluZGV4IDQyOWFlYTYuLmE1NTVlNTYgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcGFnZS9ndGsvRXZlbnRIYW5kbGVyR3RrLmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvZ3RrL0V2
ZW50SGFuZGxlckd0ay5jcHAKQEAgLTk2LDcgKzk2LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OnBh
c3NXaGVlbEV2ZW50VG9XaWRnZXQoUGxhdGZvcm1XaGVlbEV2ZW50JiBldmVudCwgV2lkZ2V0KiB3
aWQKIAogUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IEV2ZW50SGFuZGxlcjo6Y3JlYXRlRHJhZ2dpbmdD
bGlwYm9hcmQoKSBjb25zdAogewotICAgIHJldHVybiBDbGlwYm9hcmRHdGs6OmNyZWF0ZShDbGlw
Ym9hcmRXcml0YWJsZSwgRGF0YU9iamVjdEd0azo6Y3JlYXRlKCksIHRydWUsIG1fZnJhbWUpOwor
ICAgIHJldHVybiBDbGlwYm9hcmRHdGs6OmNyZWF0ZShDbGlwYm9hcmRXcml0YWJsZSwgRGF0YU9i
amVjdEd0azo6Y3JlYXRlKCksIENsaXBib2FyZDo6RHJhZ0Ryb3AsIG1fZnJhbWUpOwogfQogCiBi
b29sIEV2ZW50SGFuZGxlcjo6cGFzc01vdXNlUHJlc3NFdmVudFRvU3ViZnJhbWUoTW91c2VFdmVu
dFdpdGhIaXRUZXN0UmVzdWx0cyYgbWV2LCBGcmFtZSogc3ViZnJhbWUpCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3BhZ2UvaGFpa3UvRXZlbnRIYW5kbGVySGFpa3UuY3BwIGIvV2ViQ29yZS9wYWdlL2hh
aWt1L0V2ZW50SGFuZGxlckhhaWt1LmNwcAppbmRleCA0NTA0MTRkLi5jYzkwYjhiIDEwMDY0NAot
LS0gYS9XZWJDb3JlL3BhZ2UvaGFpa3UvRXZlbnRIYW5kbGVySGFpa3UuY3BwCisrKyBiL1dlYkNv
cmUvcGFnZS9oYWlrdS9FdmVudEhhbmRsZXJIYWlrdS5jcHAKQEAgLTEyMiw3ICsxMjIsNyBAQCBi
b29sIEV2ZW50SGFuZGxlcjo6cGFzc1doZWVsRXZlbnRUb1dpZGdldChQbGF0Zm9ybVdoZWVsRXZl
bnQmIGV2ZW50LCBXaWRnZXQqIHdpZAogCiBQYXNzUmVmUHRyPENsaXBib2FyZD4gRXZlbnRIYW5k
bGVyOjpjcmVhdGVEcmFnZ2luZ0NsaXBib2FyZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIENsaXBi
b2FyZEhhaWt1OjpjcmVhdGUoQ2xpcGJvYXJkV3JpdGFibGUsIHRydWUpOworICAgIHJldHVybiBD
bGlwYm9hcmRIYWlrdTo6Y3JlYXRlKENsaXBib2FyZFdyaXRhYmxlLCBDbGlwYm9hcmQ6OkRyYWdE
cm9wKTsKIH0KIAogYm9vbCBFdmVudEhhbmRsZXI6OnBhc3NNb3VzZVByZXNzRXZlbnRUb1N1YmZy
YW1lKE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIG1ldiwgRnJhbWUqIHN1YmZyYW1lKQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0gYi9XZWJDb3Jl
L3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbQppbmRleCA1ODRmMzhmLi41OTkxMDZjIDEwMDY0
NAotLS0gYS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbQorKysgYi9XZWJDb3Jl
L3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbQpAQCAtNzEyLDcgKzcxMiw3IEBAIFBhc3NSZWZQ
dHI8Q2xpcGJvYXJkPiBFdmVudEhhbmRsZXI6OmNyZWF0ZURyYWdnaW5nQ2xpcGJvYXJkKCkgY29u
c3QKICAgICAvLyBNdXN0IGJlIGRvbmUgYmVmb3JlIG9uZHJhZ3N0YXJ0IGFkZHMgdHlwZXMgYW5k
IGRhdGEgdG8gdGhlIHBib2FyZCwKICAgICAvLyBhbHNvIGRvbmUgZm9yIHNlY3VyaXR5LCBhcyBp
dCBlcmFzZXMgZGF0YSBmcm9tIHRoZSBsYXN0IGRyYWcKICAgICBbcGFzdGVib2FyZCBkZWNsYXJl
VHlwZXM6W05TQXJyYXkgYXJyYXldIG93bmVyOm5pbF07Ci0gICAgcmV0dXJuIENsaXBib2FyZE1h
Yzo6Y3JlYXRlKHRydWUsIHBhc3RlYm9hcmQsIENsaXBib2FyZFdyaXRhYmxlLCBtX2ZyYW1lKTsK
KyAgICByZXR1cm4gQ2xpcGJvYXJkTWFjOjpjcmVhdGUoQ2xpcGJvYXJkOjpEcmFnRHJvcCwgcGFz
dGVib2FyZCwgQ2xpcGJvYXJkV3JpdGFibGUsIG1fZnJhbWUpOwogfQogCiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvcGFnZS9xdC9FdmVudEhhbmRsZXJRdC5jcHAgYi9XZWJDb3JlL3BhZ2Uv
cXQvRXZlbnRIYW5kbGVyUXQuY3BwCmluZGV4IDE4ZDliNzMuLjI4ZWQxNzYgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcGFnZS9xdC9FdmVudEhhbmRsZXJRdC5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL3F0
L0V2ZW50SGFuZGxlclF0LmNwcApAQCAtMTEzLDcgKzExMyw3IEBAIGJvb2wgRXZlbnRIYW5kbGVy
OjpwYXNzV2hlZWxFdmVudFRvV2lkZ2V0KFBsYXRmb3JtV2hlZWxFdmVudCYgZXZlbnQsIFdpZGdl
dCogd2lkCiAKIFBhc3NSZWZQdHI8Q2xpcGJvYXJkPiBFdmVudEhhbmRsZXI6OmNyZWF0ZURyYWdn
aW5nQ2xpcGJvYXJkKCkgY29uc3QKIHsKLSAgICByZXR1cm4gQ2xpcGJvYXJkUXQ6OmNyZWF0ZShD
bGlwYm9hcmRXcml0YWJsZSwgdHJ1ZSk7CisgICAgcmV0dXJuIENsaXBib2FyZFF0OjpjcmVhdGUo
Q2xpcGJvYXJkV3JpdGFibGUsIENsaXBib2FyZDo6RHJhZ0Ryb3ApOwogfQogCiBib29sIEV2ZW50
SGFuZGxlcjo6cGFzc01vdXNlUHJlc3NFdmVudFRvU3ViZnJhbWUoTW91c2VFdmVudFdpdGhIaXRU
ZXN0UmVzdWx0cyYgbWV2LCBGcmFtZSogc3ViZnJhbWUpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3Bh
Z2Uvd2luL0V2ZW50SGFuZGxlcldpbi5jcHAgYi9XZWJDb3JlL3BhZ2Uvd2luL0V2ZW50SGFuZGxl
cldpbi5jcHAKaW5kZXggZWU0YjM2MC4uOTk4OGE1YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdl
L3dpbi9FdmVudEhhbmRsZXJXaW4uY3BwCisrKyBiL1dlYkNvcmUvcGFnZS93aW4vRXZlbnRIYW5k
bGVyV2luLmNwcApAQCAtOTgsNyArOTgsNyBAQCBQYXNzUmVmUHRyPENsaXBib2FyZD4gRXZlbnRI
YW5kbGVyOjpjcmVhdGVEcmFnZ2luZ0NsaXBib2FyZCgpIGNvbnN0CiAjZWxzZQogICAgIENPTVB0
cjxXQ0RhdGFPYmplY3Q+IGRhdGFPYmplY3Q7CiAgICAgV0NEYXRhT2JqZWN0OjpjcmVhdGVJbnN0
YW5jZSgmZGF0YU9iamVjdCk7Ci0gICAgcmV0dXJuIENsaXBib2FyZFdpbjo6Y3JlYXRlKHRydWUs
IGRhdGFPYmplY3QuZ2V0KCksIENsaXBib2FyZFdyaXRhYmxlLCBtX2ZyYW1lKTsKKyAgICByZXR1
cm4gQ2xpcGJvYXJkV2luOjpjcmVhdGUoQ2xpcGJvYXJkOjpEcmFnRHJvcCwgZGF0YU9iamVjdC5n
ZXQoKSwgQ2xpcGJvYXJkV3JpdGFibGUsIG1fZnJhbWUpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcGFnZS93eC9FdmVudEhhbmRsZXJXeC5jcHAgYi9XZWJDb3JlL3BhZ2Uvd3gv
RXZlbnRIYW5kbGVyV3guY3BwCmluZGV4IGY0ZjY5MTQuLmI0MzQ1ZTggMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcGFnZS93eC9FdmVudEhhbmRsZXJXeC5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL3d4L0V2
ZW50SGFuZGxlcld4LmNwcApAQCAtMTE2LDcgKzExNiw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpl
dmVudEFjdGl2YXRlZFZpZXcoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JikgY29uc3QKIAogUGFz
c1JlZlB0cjxDbGlwYm9hcmQ+IEV2ZW50SGFuZGxlcjo6Y3JlYXRlRHJhZ2dpbmdDbGlwYm9hcmQo
KSBjb25zdCAKIHsKLSAgICByZXR1cm4gQ2xpcGJvYXJkV3g6OmNyZWF0ZShDbGlwYm9hcmRXcml0
YWJsZSwgdHJ1ZSk7CisgICAgcmV0dXJuIENsaXBib2FyZFd4OjpjcmVhdGUoQ2xpcGJvYXJkV3Jp
dGFibGUsIENsaXBib2FyZDo6RHJhZ0Ryb3ApOwogfQogCiB1bnNpZ25lZCBFdmVudEhhbmRsZXI6
OmFjY2Vzc0tleU1vZGlmaWVycygpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2FuZHJv
aWQvQ2xpcGJvYXJkQW5kcm9pZC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2FuZHJvaWQvQ2xpcGJv
YXJkQW5kcm9pZC5jcHAKaW5kZXggZDliMmQ2OC4uYTM3OTQ2YSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9wbGF0Zm9ybS9hbmRyb2lkL0NsaXBib2FyZEFuZHJvaWQuY3BwCisrKyBiL1dlYkNvcmUvcGxh
dGZvcm0vYW5kcm9pZC9DbGlwYm9hcmRBbmRyb2lkLmNwcApAQCAtNDAsOCArNDAsOCBAQCBQYXNz
UmVmUHRyPENsaXBib2FyZD4gQ2xpcGJvYXJkOjpjcmVhdGUoQ2xpcGJvYXJkQWNjZXNzUG9saWN5
LCBEcmFnRGF0YSosIEZyYW1lKgogICAgIHJldHVybiAwOwogfQogCi1DbGlwYm9hcmRBbmRyb2lk
OjpDbGlwYm9hcmRBbmRyb2lkKENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIGJvb2wgaXNG
b3JEcmFnZ2luZykKLSAgICA6IENsaXBib2FyZChwb2xpY3ksIGlzRm9yRHJhZ2dpbmcpCitDbGlw
Ym9hcmRBbmRyb2lkOjpDbGlwYm9hcmRBbmRyb2lkKENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xp
Y3ksIENsaXBib2FyZFR5cGUgY2xpcGJvYXJkVHlwZSkKKyAgICA6IENsaXBib2FyZChwb2xpY3ks
IGNsaXBib2FyZFR5cGUpCiB7CiB9CiAKQEAgLTUxLDEyICs1MSwxMiBAQCBDbGlwYm9hcmRBbmRy
b2lkOjp+Q2xpcGJvYXJkQW5kcm9pZCgpCiAKIHZvaWQgQ2xpcGJvYXJkQW5kcm9pZDo6Y2xlYXJE
YXRhKGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgQVNTRVJUKGlzRm9yRHJhZ2dpbmcoKSk7CisgICAg
QVNTRVJUKGlzRm9yRHJhZ0Ryb3AoKSk7CiB9CiAKIHZvaWQgQ2xpcGJvYXJkQW5kcm9pZDo6Y2xl
YXJBbGxEYXRhKCkKIHsKLSAgICBBU1NFUlQoaXNGb3JEcmFnZ2luZygpKTsKKyAgICBBU1NFUlQo
aXNGb3JEcmFnRHJvcCgpKTsKIH0KIAogU3RyaW5nIENsaXBib2FyZEFuZHJvaWQ6OmdldERhdGEo
Y29uc3QgU3RyaW5nJiwgYm9vbCYgc3VjY2VzcykgY29uc3QKQEAgLTY3LDcgKzY3LDcgQEAgU3Ry
aW5nIENsaXBib2FyZEFuZHJvaWQ6OmdldERhdGEoY29uc3QgU3RyaW5nJiwgYm9vbCYgc3VjY2Vz
cykgY29uc3QKIAogYm9vbCBDbGlwYm9hcmRBbmRyb2lkOjpzZXREYXRhKGNvbnN0IFN0cmluZyYs
IGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgQVNTRVJUKGlzRm9yRHJhZ2dpbmcoKSk7CisgICAgQVNT
RVJUKGlzRm9yRHJhZ0Ryb3AoKSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCmRpZmYgLS1naXQg
YS9XZWJDb3JlL3BsYXRmb3JtL2FuZHJvaWQvQ2xpcGJvYXJkQW5kcm9pZC5oIGIvV2ViQ29yZS9w
bGF0Zm9ybS9hbmRyb2lkL0NsaXBib2FyZEFuZHJvaWQuaAppbmRleCAyM2JmZGY2Li44MDc2NTNi
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2FuZHJvaWQvQ2xpcGJvYXJkQW5kcm9pZC5o
CisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vYW5kcm9pZC9DbGlwYm9hcmRBbmRyb2lkLmgKQEAgLTM3
LDcgKzM3LDcgQEAgY2xhc3MgQ2FjaGVkSW1hZ2U7CiAKIGNsYXNzIENsaXBib2FyZEFuZHJvaWQg
OiBwdWJsaWMgQ2xpcGJvYXJkLCBwdWJsaWMgQ2FjaGVkUmVzb3VyY2VDbGllbnQgewogcHVibGlj
OgotICAgIENsaXBib2FyZEFuZHJvaWQoQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSwgYm9v
bCBpc0ZvckRyYWdnaW5nKTsKKyAgICBDbGlwYm9hcmRBbmRyb2lkKENsaXBib2FyZEFjY2Vzc1Bv
bGljeSBwb2xpY3ksIENsaXBib2FyZFR5cGUpOwogICAgIH5DbGlwYm9hcmRBbmRyb2lkKCk7CiAK
ICAgICB2b2lkIGNsZWFyRGF0YShjb25zdCBTdHJpbmcmKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cGxhdGZvcm0vYnJldy9DbGlwYm9hcmRCcmV3LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vYnJldy9D
bGlwYm9hcmRCcmV3LmNwcAppbmRleCA3MjBkNmE2Li4yZDE3YjliIDEwMDY0NAotLS0gYS9XZWJD
b3JlL3BsYXRmb3JtL2JyZXcvQ2xpcGJvYXJkQnJldy5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9y
bS9icmV3L0NsaXBib2FyZEJyZXcuY3BwCkBAIC00MSw4ICs0MSw4IEBAIFBhc3NSZWZQdHI8Q2xp
cGJvYXJkPiBDbGlwYm9hcmQ6OmNyZWF0ZShDbGlwYm9hcmRBY2Nlc3NQb2xpY3ksIERyYWdEYXRh
KiwgRnJhbWUqCiAgICAgcmV0dXJuIDA7CiB9CiAKLUNsaXBib2FyZEJyZXc6OkNsaXBib2FyZEJy
ZXcoQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSwgYm9vbCBpc0ZvckRyYWdnaW5nKQotICAg
IDogQ2xpcGJvYXJkKHBvbGljeSwgaXNGb3JEcmFnZ2luZykKK0NsaXBib2FyZEJyZXc6OkNsaXBi
b2FyZEJyZXcoQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSwgQ2xpcGJvYXJkVHlwZSBjbGlw
Ym9hcmRUeXBlKQorICAgIDogQ2xpcGJvYXJkKGNsaXBib2FyZFR5cGUsIGlzRm9yRHJhZ2dpbmcp
CiB7CiB9CiAKQEAgLTUyLDEyICs1MiwxMiBAQCBDbGlwYm9hcmRCcmV3Ojp+Q2xpcGJvYXJkQnJl
dygpCiAKIHZvaWQgQ2xpcGJvYXJkQnJldzo6Y2xlYXJEYXRhKGNvbnN0IFN0cmluZyYpCiB7Ci0g
ICAgQVNTRVJUKGlzRm9yRHJhZ2dpbmcoKSk7CisgICAgQVNTRVJUKGlzRm9yRHJhZ0Ryb3AoKSk7
CiB9CiAKIHZvaWQgQ2xpcGJvYXJkQnJldzo6Y2xlYXJBbGxEYXRhKCkKIHsKLSAgICBBU1NFUlQo
aXNGb3JEcmFnZ2luZygpKTsKKyAgICBBU1NFUlQoaXNGb3JEcmFnRHJvcCgpKTsKIH0KIAogU3Ry
aW5nIENsaXBib2FyZEJyZXc6OmdldERhdGEoY29uc3QgU3RyaW5nJiwgYm9vbCYgc3VjY2Vzcykg
Y29uc3QKQEAgLTY4LDcgKzY4LDcgQEAgU3RyaW5nIENsaXBib2FyZEJyZXc6OmdldERhdGEoY29u
c3QgU3RyaW5nJiwgYm9vbCYgc3VjY2VzcykgY29uc3QKIAogYm9vbCBDbGlwYm9hcmRCcmV3Ojpz
ZXREYXRhKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgQVNTRVJUKGlzRm9y
RHJhZ2dpbmcoKSk7CisgICAgQVNTRVJUKGlzRm9yRHJhZ0Ryb3AoKSk7CiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2JyZXcvQ2xpcGJvYXJkQnJl
dy5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9icmV3L0NsaXBib2FyZEJyZXcuaAppbmRleCBhOTY2ZGIx
Li4xZmFmMDMxIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2JyZXcvQ2xpcGJvYXJkQnJl
dy5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vYnJldy9DbGlwYm9hcmRCcmV3LmgKQEAgLTM2LDcg
KzM2LDcgQEAgY2xhc3MgQ2FjaGVkSW1hZ2U7CiAKIGNsYXNzIENsaXBib2FyZEJyZXcgOiBwdWJs
aWMgQ2xpcGJvYXJkLCBwdWJsaWMgQ2FjaGVkUmVzb3VyY2VDbGllbnQgewogcHVibGljOgotICAg
IENsaXBib2FyZEJyZXcoQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSwgYm9vbCBpc0ZvckRy
YWdnaW5nKTsKKyAgICBDbGlwYm9hcmRCcmV3KENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ks
IENsaXBib2FyZFR5cGUpOwogICAgIH5DbGlwYm9hcmRCcmV3KCk7CiAKICAgICB2b2lkIGNsZWFy
RGF0YShjb25zdCBTdHJpbmcmKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21p
dW0vQ2xpcGJvYXJkQ2hyb21pdW0uY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlw
Ym9hcmRDaHJvbWl1bS5jcHAKaW5kZXggM2Q4MmFlYS4uMmMyZTlmZiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5jcHAKKysrIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5jcHAKQEAgLTkzLDIzICs5Mywy
MyBAQCBzdGF0aWMgQ2xpcGJvYXJkRGF0YVR5cGUgY2xpcGJvYXJkVHlwZUZyb21NSU1FVHlwZShj
b25zdCBTdHJpbmcmIHR5cGUpCiAKIFBhc3NSZWZQdHI8Q2xpcGJvYXJkPiBDbGlwYm9hcmQ6OmNy
ZWF0ZShDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5LCBEcmFnRGF0YSogZHJhZ0RhdGEsIEZy
YW1lKiBmcmFtZSkKIHsKLSAgICByZXR1cm4gQ2xpcGJvYXJkQ2hyb21pdW06OmNyZWF0ZSh0cnVl
LCBkcmFnRGF0YS0+cGxhdGZvcm1EYXRhKCksIHBvbGljeSwgZnJhbWUpOworICAgIHJldHVybiBD
bGlwYm9hcmRDaHJvbWl1bTo6Y3JlYXRlKENsaXBib2FyZDo6RHJhZ0Ryb3AsIGRyYWdEYXRhLT5w
bGF0Zm9ybURhdGEoKSwgcG9saWN5LCBmcmFtZSk7CiB9CiAKLUNsaXBib2FyZENocm9taXVtOjpD
bGlwYm9hcmRDaHJvbWl1bShib29sIGlzRm9yRHJhZ2dpbmcsCitDbGlwYm9hcmRDaHJvbWl1bTo6
Q2xpcGJvYXJkQ2hyb21pdW0oQ2xpcGJvYXJkVHlwZSBjbGlwYm9hcmRUeXBlLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhc3NSZWZQdHI8Q2hyb21pdW1EYXRhT2JqZWN0
PiBkYXRhT2JqZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsaXBi
b2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRnJhbWUqIGZyYW1lKQotICAgIDogQ2xpcGJvYXJkKHBvbGljeSwgaXNGb3JEcmFnZ2lu
ZykKKyAgICA6IENsaXBib2FyZChwb2xpY3ksIGNsaXBib2FyZFR5cGUpCiAgICAgLCBtX2RhdGFP
YmplY3QoZGF0YU9iamVjdCkKICAgICAsIG1fZnJhbWUoZnJhbWUpCiB7CiB9CiAKLVBhc3NSZWZQ
dHI8Q2xpcGJvYXJkQ2hyb21pdW0+IENsaXBib2FyZENocm9taXVtOjpjcmVhdGUoYm9vbCBpc0Zv
ckRyYWdnaW5nLAorUGFzc1JlZlB0cjxDbGlwYm9hcmRDaHJvbWl1bT4gQ2xpcGJvYXJkQ2hyb21p
dW06OmNyZWF0ZShDbGlwYm9hcmRUeXBlIGNsaXBib2FyZFR5cGUsCiAgICAgUGFzc1JlZlB0cjxD
aHJvbWl1bURhdGFPYmplY3Q+IGRhdGFPYmplY3QsIENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xp
Y3ksIEZyYW1lKiBmcmFtZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IENsaXBib2FyZENo
cm9taXVtKGlzRm9yRHJhZ2dpbmcsIGRhdGFPYmplY3QsIHBvbGljeSwgZnJhbWUpKTsKKyAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IENsaXBib2FyZENocm9taXVtKGNsaXBib2FyZFR5cGUsIGRhdGFP
YmplY3QsIHBvbGljeSwgZnJhbWUpKTsKIH0KIAogdm9pZCBDbGlwYm9hcmRDaHJvbWl1bTo6Y2xl
YXJEYXRhKGNvbnN0IFN0cmluZyYgdHlwZSkKQEAgLTIwMyw3ICsyMDMsNyBAQCBTdHJpbmcgQ2xp
cGJvYXJkQ2hyb21pdW06OmdldERhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBib29sJiBzdWNjZXNz
KSBjb25zdAogICAgICAgICByZXR1cm4gbV9kYXRhT2JqZWN0LT5kb3dubG9hZE1ldGFkYXRhOwog
ICAgIAogICAgIGNhc2UgQ2xpcGJvYXJkRGF0YVR5cGVQbGFpblRleHQ6Ci0gICAgICAgIGlmICgh
aXNGb3JEcmFnZ2luZygpKSB7CisgICAgICAgIGlmIChpc0ZvckNvcHlQYXN0ZSgpKSB7CiAgICAg
ICAgICAgICAvLyBJZiB0aGlzIGlzbid0IGZvciBhIGRyYWcsIGl0J3MgZm9yIGEgY3V0L3Bhc3Rl
IGV2ZW50IGhhbmRsZXIuCiAgICAgICAgICAgICAvLyBJbiB0aGlzIGNhc2UsIHdlIG5lZWQgdG8g
Y2hlY2sgdGhlIGNsaXBib2FyZC4KICAgICAgICAgICAgIFBhc3RlYm9hcmRQcml2YXRlOjpDbGlw
Ym9hcmRCdWZmZXIgYnVmZmVyID0gCkBAIC0yMTksNyArMjE5LDcgQEAgU3RyaW5nIENsaXBib2Fy
ZENocm9taXVtOjpnZXREYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgYm9vbCYgc3VjY2VzcykgY29u
c3QKICAgICAgICAgcmV0dXJuIG1fZGF0YU9iamVjdC0+cGxhaW5UZXh0OwogCiAgICAgY2FzZSBD
bGlwYm9hcmREYXRhVHlwZUhUTUw6Ci0gICAgICAgIGlmICghaXNGb3JEcmFnZ2luZygpKSB7Cisg
ICAgICAgIGlmIChpc0ZvckNvcHlQYXN0ZSgpKSB7CiAgICAgICAgICAgICAvLyBJZiB0aGlzIGlz
bid0IGZvciBhIGRyYWcsIGl0J3MgZm9yIGEgY3V0L3Bhc3RlIGV2ZW50IGhhbmRsZXIuCiAgICAg
ICAgICAgICAvLyBJbiB0aGlzIGNhc2UsIHdlIG5lZWQgdG8gY2hlY2sgdGhlIGNsaXBib2FyZC4K
ICAgICAgICAgICAgIFBhc3RlYm9hcmRQcml2YXRlOjpDbGlwYm9hcmRCdWZmZXIgYnVmZmVyID0g
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9taXVt
LmggYi9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9taXVtLmgKaW5kZXgg
YTQxNTBkMC4uMTRmNTllOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9D
bGlwYm9hcmRDaHJvbWl1bS5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJv
YXJkQ2hyb21pdW0uaApAQCAtNDYsNyArNDYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIH5DbGlwYm9hcmRDaHJvbWl1bSgpIHt9CiAKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8
Q2xpcGJvYXJkQ2hyb21pdW0+IGNyZWF0ZSgKLSAgICAgICAgICAgIGJvb2wgaXNGb3JEcmFnZ2lu
ZywgUGFzc1JlZlB0cjxDaHJvbWl1bURhdGFPYmplY3Q+LCBDbGlwYm9hcmRBY2Nlc3NQb2xpY3ks
IEZyYW1lKik7CisgICAgICAgICAgICBDbGlwYm9hcmRUeXBlLCBQYXNzUmVmUHRyPENocm9taXVt
RGF0YU9iamVjdD4sIENsaXBib2FyZEFjY2Vzc1BvbGljeSwgRnJhbWUqKTsKIAogICAgICAgICAv
LyBSZXR1cm5zIHRoZSBmaWxlIG5hbWUgKG5vdCBpbmNsdWRpbmcgdGhlIGV4dGVuc2lvbikuIFRo
aXMgcmVtb3ZlcyBhbnkKICAgICAgICAgLy8gaW52YWxpZCBmaWxlIHN5c3RlbSBjaGFyYWN0ZXJz
IGFzIHdlbGwgYXMgbWFraW5nIHN1cmUgdGhlCkBAIC04MCw3ICs4MCw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBib29sIGhhc0RhdGEoKTsKIAogICAgIHByaXZhdGU6
Ci0gICAgICAgIENsaXBib2FyZENocm9taXVtKGJvb2wsIFBhc3NSZWZQdHI8Q2hyb21pdW1EYXRh
T2JqZWN0PiwgQ2xpcGJvYXJkQWNjZXNzUG9saWN5LCBGcmFtZSopOworICAgICAgICBDbGlwYm9h
cmRDaHJvbWl1bShDbGlwYm9hcmRUeXBlLCBQYXNzUmVmUHRyPENocm9taXVtRGF0YU9iamVjdD4s
IENsaXBib2FyZEFjY2Vzc1BvbGljeSwgRnJhbWUqKTsKIAogICAgICAgICB2b2lkIHJlc2V0RnJv
bUNsaXBib2FyZCgpOwogICAgICAgICB2b2lkIHNldERyYWdJbWFnZShDYWNoZWRJbWFnZSosIE5v
ZGUqLCBjb25zdCBJbnRQb2ludCYpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9lZmwv
Q2xpcGJvYXJkRWZsLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZWZsL0NsaXBib2FyZEVmbC5jcHAK
aW5kZXggNmZjODBkYy4uZmNjOWY4YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9lZmwv
Q2xpcGJvYXJkRWZsLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2VmbC9DbGlwYm9hcmRFZmwu
Y3BwCkBAIC0yOSw3ICsyOSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBQYXNzUmVmUHRyPENs
aXBib2FyZD4gRWRpdG9yOjpuZXdHZW5lcmFsQ2xpcGJvYXJkKENsaXBib2FyZEFjY2Vzc1BvbGlj
eSBwb2xpY3ksIEZyYW1lKikKIHsKLSAgICByZXR1cm4gQ2xpcGJvYXJkRWZsOjpjcmVhdGUocG9s
aWN5LCBmYWxzZSk7CisgICAgcmV0dXJuIENsaXBib2FyZEVmbDo6Y3JlYXRlKHBvbGljeSwgQ2xp
cGJvYXJkOjpDb3B5UGFzdGUpOwogfQogCiBQYXNzUmVmUHRyPENsaXBib2FyZD4gQ2xpcGJvYXJk
OjpjcmVhdGUoQ2xpcGJvYXJkQWNjZXNzUG9saWN5LCBEcmFnRGF0YSosIEZyYW1lKikKQEAgLTM3
LDggKzM3LDggQEAgUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IENsaXBib2FyZDo6Y3JlYXRlKENsaXBi
b2FyZEFjY2Vzc1BvbGljeSwgRHJhZ0RhdGEqLCBGcmFtZSoKICAgICByZXR1cm4gMDsKIH0KIAot
Q2xpcGJvYXJkRWZsOjpDbGlwYm9hcmRFZmwoQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSwg
Ym9vbCBmb3JEcmFnZ2luZykKLSAgICA6IENsaXBib2FyZChwb2xpY3ksIGZvckRyYWdnaW5nKQor
Q2xpcGJvYXJkRWZsOjpDbGlwYm9hcmRFZmwoQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSwg
Q2xpcGJvYXJkVHlwZSBjbGlwYm9hcmRUeXBlKQorICAgIDogQ2xpcGJvYXJkKGNsaXBib2FyZFR5
cGUsIGZvckRyYWdnaW5nKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CmRpZmYgLS1naXQg
YS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9DbGlwYm9hcmRFZmwuaCBiL1dlYkNvcmUvcGxhdGZvcm0v
ZWZsL0NsaXBib2FyZEVmbC5oCmluZGV4IDVkYjJmZWQuLjIyNDI3MDMgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcGxhdGZvcm0vZWZsL0NsaXBib2FyZEVmbC5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0v
ZWZsL0NsaXBib2FyZEVmbC5oCkBAIC0yOCw5ICsyOCw5IEBAIGNsYXNzIENhY2hlZEltYWdlOwog
CiBjbGFzcyBDbGlwYm9hcmRFZmwgOiBwdWJsaWMgQ2xpcGJvYXJkIHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxDbGlwYm9hcmRFZmw+IGNyZWF0ZShDbGlwYm9hcmRBY2Nlc3NQb2xp
Y3kgcG9saWN5LCBib29sIGZvckRyYWdnaW5nID0gZmFsc2UpCisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8Q2xpcGJvYXJkRWZsPiBjcmVhdGUoQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSwgQ2xp
cGJvYXJkVHlwZSBjbGlwYm9hcmRUeXBlID0gQ2xpcGJvYXJkOjpDb3B5UGFzdGUpCiAgICAgewot
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENsaXBib2FyZEVmbChwb2xpY3ksIGZvckRyYWdn
aW5nKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ2xpcGJvYXJkRWZsKHBvbGljeSwg
Y2xpcGJvYXJkVHlwZSkpOwogICAgIH0KICAgICB+Q2xpcGJvYXJkRWZsKCk7CiAKQEAgLTU4LDcg
KzU4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3cml0ZVBsYWluVGV4dChjb25zdCBX
VEY6OlN0cmluZyYpOwogCiBwcml2YXRlOgotICAgIENsaXBib2FyZEVmbChDbGlwYm9hcmRBY2Nl
c3NQb2xpY3ksIGJvb2wpOworICAgIENsaXBib2FyZEVmbChDbGlwYm9hcmRBY2Nlc3NQb2xpY3ks
IENsaXBib2FyZFR5cGUpOwogfTsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvQ2xpcGJvYXJkR3RrLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0NsaXBib2FyZEd0ay5j
cHAKaW5kZXggMzI3ZjA2OS4uMjNhOGMxYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvQ2xpcGJvYXJkR3RrLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9DbGlwYm9hcmRH
dGsuY3BwCkBAIC00OCwxNiArNDgsMTYgQEAgZW51bSBDbGlwYm9hcmRUeXBlIHsKIAogUGFzc1Jl
ZlB0cjxDbGlwYm9hcmQ+IEVkaXRvcjo6bmV3R2VuZXJhbENsaXBib2FyZChDbGlwYm9hcmRBY2Nl
c3NQb2xpY3kgcG9saWN5LCBGcmFtZSogZnJhbWUpCiB7Ci0gICAgcmV0dXJuIENsaXBib2FyZEd0
azo6Y3JlYXRlKHBvbGljeSwgZ3RrX2NsaXBib2FyZF9nZXRfZm9yX2Rpc3BsYXkoZ2RrX2Rpc3Bs
YXlfZ2V0X2RlZmF1bHQoKSwgR0RLX1NFTEVDVElPTl9DTElQQk9BUkQpLCBmYWxzZSwgZnJhbWUp
OworICAgIHJldHVybiBDbGlwYm9hcmRHdGs6OmNyZWF0ZShwb2xpY3ksIGd0a19jbGlwYm9hcmRf
Z2V0X2Zvcl9kaXNwbGF5KGdka19kaXNwbGF5X2dldF9kZWZhdWx0KCksIEdES19TRUxFQ1RJT05f
Q0xJUEJPQVJEKSwgZnJhbWUpOwogfQogCiBQYXNzUmVmUHRyPENsaXBib2FyZD4gQ2xpcGJvYXJk
OjpjcmVhdGUoQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSwgRHJhZ0RhdGEqIGRyYWdEYXRh
LCBGcmFtZSogZnJhbWUpCiB7Ci0gICAgcmV0dXJuIENsaXBib2FyZEd0azo6Y3JlYXRlKHBvbGlj
eSwgZHJhZ0RhdGEtPnBsYXRmb3JtRGF0YSgpLCB0cnVlLCBmcmFtZSk7CisgICAgcmV0dXJuIENs
aXBib2FyZEd0azo6Y3JlYXRlKHBvbGljeSwgZHJhZ0RhdGEtPnBsYXRmb3JtRGF0YSgpLCBDbGlw
Ym9hcmQ6OkRyYWdEcm9wLCBmcmFtZSk7CiB9CiAKIENsaXBib2FyZEd0azo6Q2xpcGJvYXJkR3Rr
KENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIEd0a0NsaXBib2FyZCogY2xpcGJvYXJkLCBG
cmFtZSogZnJhbWUpCi0gICAgOiBDbGlwYm9hcmQocG9saWN5LCBmYWxzZSkKKyAgICA6IENsaXBi
b2FyZChwb2xpY3ksIENsaXBib2FyZDo6Q29weVBhc3RlKQogICAgICwgbV9kYXRhT2JqZWN0KERh
dGFPYmplY3RHdGs6OmZvckNsaXBib2FyZChjbGlwYm9hcmQpKQogICAgICwgbV9jbGlwYm9hcmQo
Y2xpcGJvYXJkKQogICAgICwgbV9oZWxwZXIoUGFzdGVib2FyZDo6Z2VuZXJhbFBhc3RlYm9hcmQo
KS0+aGVscGVyKCkpCkBAIC02NSw4ICs2NSw4IEBAIENsaXBib2FyZEd0azo6Q2xpcGJvYXJkR3Rr
KENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIEd0a0NsaXBib2FyZCogY2xpcGJvYXJkCiB7
CiB9CiAKLUNsaXBib2FyZEd0azo6Q2xpcGJvYXJkR3RrKENsaXBib2FyZEFjY2Vzc1BvbGljeSBw
b2xpY3ksIFBhc3NSZWZQdHI8RGF0YU9iamVjdEd0az4gZGF0YU9iamVjdCwgYm9vbCBmb3JEcmFn
Z2luZywgRnJhbWUqIGZyYW1lKQotICAgIDogQ2xpcGJvYXJkKHBvbGljeSwgZm9yRHJhZ2dpbmcp
CitDbGlwYm9hcmRHdGs6OkNsaXBib2FyZEd0ayhDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5
LCBQYXNzUmVmUHRyPERhdGFPYmplY3RHdGs+IGRhdGFPYmplY3QsIENsaXBib2FyZFR5cGUgY2xp
cGJvYXJkVHlwZSwgRnJhbWUqIGZyYW1lKQorICAgIDogQ2xpcGJvYXJkKHBvbGljeSwgY2xpcGJv
YXJkVHlwZSkKICAgICAsIG1fZGF0YU9iamVjdChkYXRhT2JqZWN0KQogICAgICwgbV9jbGlwYm9h
cmQoMCkKICAgICAsIG1faGVscGVyKFBhc3RlYm9hcmQ6OmdlbmVyYWxQYXN0ZWJvYXJkKCktPmhl
bHBlcigpKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3RrLmgg
Yi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9DbGlwYm9hcmRHdGsuaAppbmRleCBmMGFmMzE4Li5lMTRh
NTgzIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9DbGlwYm9hcmRHdGsuaAorKysg
Yi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9DbGlwYm9hcmRHdGsuaApAQCAtNDAsMTQgKzQwLDE0IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAvLyBDcmVhdGVkIGZyb20gdGhlIEV2ZW50SGFuZGxl
ckd0ayB0byBiZSB1c2VkIGJ5IHRoZSBkb20KICAgICBjbGFzcyBDbGlwYm9hcmRHdGsgOiBwdWJs
aWMgQ2xpcGJvYXJkLCBwdWJsaWMgQ2FjaGVkUmVzb3VyY2VDbGllbnQgewogICAgIHB1YmxpYzoK
LSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q2xpcGJvYXJkR3RrPiBjcmVhdGUoQ2xpcGJvYXJk
QWNjZXNzUG9saWN5IHBvbGljeSwgR3RrQ2xpcGJvYXJkKiBjbGlwYm9hcmQsIGJvb2wgaXNGb3JE
cmFnZ2luZywgRnJhbWUqIGZyYW1lKQorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDbGlwYm9h
cmRHdGs+IGNyZWF0ZShDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5LCBHdGtDbGlwYm9hcmQq
IGNsaXBib2FyZCwgRnJhbWUqIGZyYW1lKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IENsaXBib2FyZEd0ayhwb2xpY3ksIGNsaXBib2FyZCwgZnJhbWUpKTsKICAg
ICAgICAgfQogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPENsaXBib2FyZEd0az4gY3JlYXRl
KENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIFBhc3NSZWZQdHI8RGF0YU9iamVjdEd0az4g
ZGF0YU9iamVjdCwgYm9vbCBpc0ZvckRyYWdnaW5nLCBGcmFtZSogZnJhbWUpCisgICAgICAgIHN0
YXRpYyBQYXNzUmVmUHRyPENsaXBib2FyZEd0az4gY3JlYXRlKENsaXBib2FyZEFjY2Vzc1BvbGlj
eSBwb2xpY3ksIFBhc3NSZWZQdHI8RGF0YU9iamVjdEd0az4gZGF0YU9iamVjdCwgQ2xpcGJvYXJk
VHlwZSBjbGlwYm9hcmRUeXBlLCBGcmFtZSogZnJhbWUpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgQ2xpcGJvYXJkR3RrKHBvbGljeSwgZGF0YU9iamVjdCwgaXNG
b3JEcmFnZ2luZywgZnJhbWUpKTsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ2xp
cGJvYXJkR3RrKHBvbGljeSwgZGF0YU9iamVjdCwgY2xpcGJvYXJkVHlwZSwgZnJhbWUpKTsKICAg
ICAgICAgfQogICAgICAgICB2aXJ0dWFsIH5DbGlwYm9hcmRHdGsoKTsKIApAQCAtNzgsNyArNzgs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBwcml2YXRlOgogICAgICAgICBDbGlwYm9h
cmRHdGsoQ2xpcGJvYXJkQWNjZXNzUG9saWN5LCBHdGtDbGlwYm9hcmQqLCBGcmFtZSopOwotICAg
ICAgICBDbGlwYm9hcmRHdGsoQ2xpcGJvYXJkQWNjZXNzUG9saWN5LCBQYXNzUmVmUHRyPERhdGFP
YmplY3RHdGs+LCBib29sLCBGcmFtZSopOworICAgICAgICBDbGlwYm9hcmRHdGsoQ2xpcGJvYXJk
QWNjZXNzUG9saWN5LCBQYXNzUmVmUHRyPERhdGFPYmplY3RHdGs+LCBDbGlwYm9hcmRUeXBlLCBG
cmFtZSopOwogCiAgICAgICAgIFJlZlB0cjxEYXRhT2JqZWN0R3RrPiBtX2RhdGFPYmplY3Q7CiAg
ICAgICAgIEd0a0NsaXBib2FyZCogbV9jbGlwYm9hcmQ7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3Bs
YXRmb3JtL2hhaWt1L0NsaXBib2FyZEhhaWt1LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vaGFpa3Uv
Q2xpcGJvYXJkSGFpa3UuY3BwCmluZGV4IGRhMjQyYzEuLmFiZWQxZGEgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcGxhdGZvcm0vaGFpa3UvQ2xpcGJvYXJkSGFpa3UuY3BwCisrKyBiL1dlYkNvcmUvcGxh
dGZvcm0vaGFpa3UvQ2xpcGJvYXJkSGFpa3UuY3BwCkBAIC00NCwxMSArNDQsMTEgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBQYXNzUmVmUHRyPENsaXBib2FyZD4gQ2xpcGJvYXJkOjpjcmVhdGUo
Q2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSwgRHJhZ0RhdGEqLCBGcmFtZSopCiB7Ci0gICAg
cmV0dXJuIENsaXBib2FyZEhhaWt1OjpjcmVhdGUocG9saWN5LCB0cnVlKTsKKyAgICByZXR1cm4g
Q2xpcGJvYXJkSGFpa3U6OmNyZWF0ZShwb2xpY3ksIENsaXBib2FyZDo6RHJhZ0Ryb3ApOwogfQog
Ci1DbGlwYm9hcmRIYWlrdTo6Q2xpcGJvYXJkSGFpa3UoQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBv
bGljeSwgYm9vbCBmb3JEcmFnZ2luZykKLSAgICA6IENsaXBib2FyZChwb2xpY3ksIGZvckRyYWdn
aW5nKQorQ2xpcGJvYXJkSGFpa3U6OkNsaXBib2FyZEhhaWt1KENsaXBib2FyZEFjY2Vzc1BvbGlj
eSBwb2xpY3ksIENsaXBib2FyZFR5cGUgY2xpcGJvYXJkVHlwZSkKKyAgICA6IENsaXBib2FyZChw
b2xpY3ksIGNsaXBib2FyZFR5cGUpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZv
cm0vaGFpa3UvQ2xpcGJvYXJkSGFpa3UuaCBiL1dlYkNvcmUvcGxhdGZvcm0vaGFpa3UvQ2xpcGJv
YXJkSGFpa3UuaAppbmRleCAzN2ZmZTVjLi44OWRjN2JkIDEwMDY0NAotLS0gYS9XZWJDb3JlL3Bs
YXRmb3JtL2hhaWt1L0NsaXBib2FyZEhhaWt1LmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9oYWlr
dS9DbGlwYm9hcmRIYWlrdS5oCkBAIC0zNiw5ICszNiw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAvLyBTdGF0ZSBhdmFpbGFibGUgZHVyaW5nIElFJ3MgZXZlbnRzIGZvciBkcmFnIGFuZCBk
cm9wIGFuZCBjb3B5L3Bhc3RlLgogICAgIGNsYXNzIENsaXBib2FyZEhhaWt1IDogcHVibGljIENs
aXBib2FyZCB7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDbGlwYm9h
cmRIYWlrdT4gY3JlYXRlKENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIGJvb2wgZm9yRHJh
Z2dpbmcpCisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPENsaXBib2FyZEhhaWt1PiBjcmVhdGUo
Q2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSwgQ2xpcGJvYXJkVHlwZSBjbGlwYm9hcmRUeXBl
KQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENsaXBib2FyZEhh
aWt1KHBvbGljeSwgZm9yRHJhZ2dpbmcpKTsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgQ2xpcGJvYXJkSGFpa3UocG9saWN5LCBjbGlwYm9hcmRUeXBlKSk7CiAgICAgICAgIH0KICAg
ICAgICAgfkNsaXBib2FyZEhhaWt1KCkgeyB9CiAKQEAgLTY2LDcgKzY2LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIGJvb2wgaGFzRGF0YSgpOwogCiAgICAgcHJpdmF0
ZToKLSAgICAgICAgQ2xpcGJvYXJkSGFpa3UoQ2xpcGJvYXJkQWNjZXNzUG9saWN5LCBib29sIGZv
ckRyYWdnaW5nKTsKKyAgICAgICAgQ2xpcGJvYXJkSGFpa3UoQ2xpcGJvYXJkQWNjZXNzUG9saWN5
LCBDbGlwYm9hcmRUeXBlKTsKICAgICB9OwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYg
LS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL21hYy9DbGlwYm9hcmRNYWMuaCBiL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL0NsaXBib2FyZE1hYy5oCmluZGV4IGFkZGUwOWMuLmQ3YWU4ODcgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0NsaXBib2FyZE1hYy5oCisrKyBiL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL0NsaXBib2FyZE1hYy5oCkBAIC00NSw5ICs0NSw5IEBAIGNsYXNzIEZpbGVMaXN0
OwogCiBjbGFzcyBDbGlwYm9hcmRNYWMgOiBwdWJsaWMgQ2xpcGJvYXJkLCBwdWJsaWMgQ2FjaGVk
UmVzb3VyY2VDbGllbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPENsaXBib2Fy
ZE1hYz4gY3JlYXRlKGJvb2wgZm9yRHJhZ2dpbmcsIE5TUGFzdGVib2FyZCAqcGFzdGVib2FyZCwg
Q2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSwgRnJhbWUqIGZyYW1lKQorICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPENsaXBib2FyZE1hYz4gY3JlYXRlKENsaXBib2FyZFR5cGUgY2xpcGJvYXJkVHlw
ZSwgTlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkLCBDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5
LCBGcmFtZSogZnJhbWUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENsaXBi
b2FyZE1hYyhmb3JEcmFnZ2luZywgcGFzdGVib2FyZCwgcG9saWN5LCBmcmFtZSkpOworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IENsaXBib2FyZE1hYyhjbGlwYm9hcmRUeXBlLCBwYXN0ZWJv
YXJkLCBwb2xpY3ksIGZyYW1lKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+Q2xpcGJvYXJkTWFj
KCk7CkBAIC03OSw3ICs3OSw3IEBAIHB1YmxpYzoKICAgICBOU1Bhc3RlYm9hcmQgKnBhc3RlYm9h
cmQoKSB7IHJldHVybiBtX3Bhc3RlYm9hcmQuZ2V0KCk7IH0KIAogcHJpdmF0ZToKLSAgICBDbGlw
Ym9hcmRNYWMoYm9vbCBmb3JEcmFnZ2luZywgTlNQYXN0ZWJvYXJkICosIENsaXBib2FyZEFjY2Vz
c1BvbGljeSwgRnJhbWUqKTsKKyAgICBDbGlwYm9hcmRNYWMoQ2xpcGJvYXJkVHlwZSBjbGlwYm9h
cmRUeXBlLCBOU1Bhc3RlYm9hcmQgKiwgQ2xpcGJvYXJkQWNjZXNzUG9saWN5LCBGcmFtZSopOwog
CiAgICAgdm9pZCBzZXREcmFnSW1hZ2UoQ2FjaGVkSW1hZ2UqLCBOb2RlKiwgY29uc3QgSW50UG9p
bnQmKTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQ2xpcGJvYXJkTWFjLm1t
IGIvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQ2xpcGJvYXJkTWFjLm1tCmluZGV4IDc0YTkzYjYuLmE1
YjVjMjkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0NsaXBib2FyZE1hYy5tbQor
KysgYi9XZWJDb3JlL3BsYXRmb3JtL21hYy9DbGlwYm9hcmRNYWMubW0KQEAgLTUwLDExICs1MCwx
MSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFBhc3NSZWZQdHI8Q2xpcGJvYXJkPiBDbGlwYm9h
cmQ6OmNyZWF0ZShDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5LCBEcmFnRGF0YSogZHJhZ0Rh
dGEsIEZyYW1lKiBmcmFtZSkKIHsKLSAgICByZXR1cm4gQ2xpcGJvYXJkTWFjOjpjcmVhdGUodHJ1
ZSwgW2RyYWdEYXRhLT5wbGF0Zm9ybURhdGEoKSBkcmFnZ2luZ1Bhc3RlYm9hcmRdLCBwb2xpY3ks
IGZyYW1lKTsKKyAgICByZXR1cm4gQ2xpcGJvYXJkTWFjOjpjcmVhdGUoQ2xpcGJvYXJkOjpEcmFn
RHJvcCwgW2RyYWdEYXRhLT5wbGF0Zm9ybURhdGEoKSBkcmFnZ2luZ1Bhc3RlYm9hcmRdLCBwb2xp
Y3ksIGZyYW1lKTsKIH0KIAotQ2xpcGJvYXJkTWFjOjpDbGlwYm9hcmRNYWMoYm9vbCBmb3JEcmFn
Z2luZywgTlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkLCBDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9s
aWN5LCBGcmFtZSAqZnJhbWUpCi0gICAgOiBDbGlwYm9hcmQocG9saWN5LCBmb3JEcmFnZ2luZykK
K0NsaXBib2FyZE1hYzo6Q2xpcGJvYXJkTWFjKENsaXBib2FyZFR5cGUgY2xpcGJvYXJkVHlwZSwg
TlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkLCBDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5LCBG
cmFtZSAqZnJhbWUpCisgICAgOiBDbGlwYm9hcmQocG9saWN5LCBjbGlwYm9hcmRUeXBlKQogICAg
ICwgbV9wYXN0ZWJvYXJkKHBhc3RlYm9hcmQpCiAgICAgLCBtX2ZyYW1lKGZyYW1lKQogewpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9xdC9DbGlwYm9hcmRRdC5jcHAgYi9XZWJDb3JlL3Bs
YXRmb3JtL3F0L0NsaXBib2FyZFF0LmNwcAppbmRleCA2Y2JkZTBjLi45Y2QxNzdlIDEwMDY0NAot
LS0gYS9XZWJDb3JlL3BsYXRmb3JtL3F0L0NsaXBib2FyZFF0LmNwcAorKysgYi9XZWJDb3JlL3Bs
YXRmb3JtL3F0L0NsaXBib2FyZFF0LmNwcApAQCAtNzUsMTUgKzc1LDE1IEBAIFBhc3NSZWZQdHI8
Q2xpcGJvYXJkPiBDbGlwYm9hcmQ6OmNyZWF0ZShDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5
LCBEcmFnRGF0YSoKIH0KIAogQ2xpcGJvYXJkUXQ6OkNsaXBib2FyZFF0KENsaXBib2FyZEFjY2Vz
c1BvbGljeSBwb2xpY3ksIGNvbnN0IFFNaW1lRGF0YSogcmVhZGFibGVDbGlwYm9hcmQpCi0gICAg
OiBDbGlwYm9hcmQocG9saWN5LCB0cnVlKQorICAgIDogQ2xpcGJvYXJkKHBvbGljeSwgQ2xpcGJv
YXJkOjpEcmFnRHJvcCkKICAgICAsIG1fcmVhZGFibGVEYXRhKHJlYWRhYmxlQ2xpcGJvYXJkKQog
ICAgICwgbV93cml0YWJsZURhdGEoMCkKIHsKICAgICBRX0FTU0VSVChwb2xpY3kgPT0gQ2xpcGJv
YXJkUmVhZGFibGUgfHwgcG9saWN5ID09IENsaXBib2FyZFR5cGVzUmVhZGFibGUpOwogfQogCi1D
bGlwYm9hcmRRdDo6Q2xpcGJvYXJkUXQoQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSwgYm9v
bCBmb3JEcmFnZ2luZykKLSAgICA6IENsaXBib2FyZChwb2xpY3ksIGZvckRyYWdnaW5nKQorQ2xp
cGJvYXJkUXQ6OkNsaXBib2FyZFF0KENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIENsaXBi
b2FyZFR5cGUgY2xpcGJvYXJkVHlwZSkKKyAgICA6IENsaXBib2FyZChwb2xpY3ksIGNsaXBib2Fy
ZFR5cGUpCiAgICAgLCBtX3JlYWRhYmxlRGF0YSgwKQogICAgICwgbV93cml0YWJsZURhdGEoMCkK
IHsKQEAgLTk5LDcgKzk5LDcgQEAgQ2xpcGJvYXJkUXQ6OkNsaXBib2FyZFF0KENsaXBib2FyZEFj
Y2Vzc1BvbGljeSBwb2xpY3ksIGJvb2wgZm9yRHJhZ2dpbmcpCiAKIENsaXBib2FyZFF0Ojp+Q2xp
cGJvYXJkUXQoKQogewotICAgIGlmIChtX3dyaXRhYmxlRGF0YSAmJiAhaXNGb3JEcmFnZ2luZygp
KQorICAgIGlmIChtX3dyaXRhYmxlRGF0YSAmJiBpc0ZvckNvcHlQYXN0ZSgpKQogICAgICAgICBt
X3dyaXRhYmxlRGF0YSA9IDA7CiAgICAgZWxzZQogICAgICAgICBkZWxldGUgbV93cml0YWJsZURh
dGE7CkBAIC0xMTQsMTMgKzExNCwxMyBAQCB2b2lkIENsaXBib2FyZFF0OjpjbGVhckRhdGEoY29u
c3QgU3RyaW5nJiB0eXBlKQogICAgIGlmIChtX3dyaXRhYmxlRGF0YSkgewogICAgICAgICBtX3dy
aXRhYmxlRGF0YS0+cmVtb3ZlRm9ybWF0KHR5cGUpOwogICAgICAgICBpZiAobV93cml0YWJsZURh
dGEtPmZvcm1hdHMoKS5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIGlmIChpc0ZvckRyYWdnaW5n
KCkpCisgICAgICAgICAgICBpZiAoaXNGb3JEcmFnRHJvcCgpKQogICAgICAgICAgICAgICAgIGRl
bGV0ZSBtX3dyaXRhYmxlRGF0YTsKICAgICAgICAgICAgIG1fd3JpdGFibGVEYXRhID0gMDsKICAg
ICAgICAgfQogICAgIH0KICNpZm5kZWYgUVRfTk9fQ0xJUEJPQVJECi0gICAgaWYgKCFpc0ZvckRy
YWdnaW5nKCkpCisgICAgaWYgKGlzRm9yQ29weVBhc3RlKCkpCiAgICAgICAgIFFBcHBsaWNhdGlv
bjo6Y2xpcGJvYXJkKCktPnNldE1pbWVEYXRhKG1fd3JpdGFibGVEYXRhKTsKICNlbmRpZgogfQpA
QCAtMTMxLDcgKzEzMSw3IEBAIHZvaWQgQ2xpcGJvYXJkUXQ6OmNsZWFyQWxsRGF0YSgpCiAgICAg
ICAgIHJldHVybjsKIAogI2lmbmRlZiBRVF9OT19DTElQQk9BUkQKLSAgICBpZiAoIWlzRm9yRHJh
Z2dpbmcoKSkKKyAgICBpZiAoaXNGb3JDb3B5UGFzdGUoKSkKICAgICAgICAgUUFwcGxpY2F0aW9u
OjpjbGlwYm9hcmQoKS0+c2V0TWltZURhdGEoMCk7CiAgICAgZWxzZQogI2VuZGlmCkBAIC0xODIs
NyArMTgyLDcgQEAgYm9vbCBDbGlwYm9hcmRRdDo6c2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGUs
IGNvbnN0IFN0cmluZyYgZGF0YSkKICAgICB9CiAKICNpZm5kZWYgUVRfTk9fQ0xJUEJPQVJECi0g
ICAgaWYgKCFpc0ZvckRyYWdnaW5nKCkpCisgICAgaWYgKGlzRm9yQ29weVBhc3RlKCkpCiAgICAg
ICAgIFFBcHBsaWNhdGlvbjo6Y2xpcGJvYXJkKCktPnNldE1pbWVEYXRhKG1fd3JpdGFibGVEYXRh
KTsKICNlbmRpZgogICAgIHJldHVybiB0cnVlOwpAQCAtMjg3LDcgKzI4Nyw3IEBAIHZvaWQgQ2xp
cGJvYXJkUXQ6OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShFbGVtZW50KiBlbGVtZW50LCBjb25z
dCBLVVJMJiB1cmwsIGNvCiAgICAgbV93cml0YWJsZURhdGEtPnNldFRleHQodGl0bGUpOwogICAg
IG1fd3JpdGFibGVEYXRhLT5zZXRVcmxzKHVybHMpOwogI2lmbmRlZiBRVF9OT19DTElQQk9BUkQK
LSAgICBpZiAoIWlzRm9yRHJhZ2dpbmcoKSkKKyAgICBpZiAoaXNGb3JDb3B5UGFzdGUoKSkKICAg
ICAgICAgUUFwcGxpY2F0aW9uOjpjbGlwYm9hcmQoKS0+c2V0TWltZURhdGEobV93cml0YWJsZURh
dGEpOwogI2VuZGlmCiB9CkBAIC0zMDMsNyArMzAzLDcgQEAgdm9pZCBDbGlwYm9hcmRRdDo6d3Jp
dGVVUkwoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBGcmFtZSogZnJhbWUp
CiAgICAgbV93cml0YWJsZURhdGEtPnNldFVybHModXJscyk7CiAgICAgbV93cml0YWJsZURhdGEt
PnNldFRleHQodGl0bGUpOwogI2lmbmRlZiBRVF9OT19DTElQQk9BUkQKLSAgICBpZiAoIWlzRm9y
RHJhZ2dpbmcoKSkKKyAgICBpZiAoaXNGb3JDb3B5UGFzdGUoKSkKICAgICAgICAgUUFwcGxpY2F0
aW9uOjpjbGlwYm9hcmQoKS0+c2V0TWltZURhdGEobV93cml0YWJsZURhdGEpOwogI2VuZGlmCiB9
CkBAIC0zMjAsNyArMzIwLDcgQEAgdm9pZCBDbGlwYm9hcmRRdDo6d3JpdGVSYW5nZShSYW5nZSog
cmFuZ2UsIEZyYW1lKiBmcmFtZSkKICAgICBtX3dyaXRhYmxlRGF0YS0+c2V0VGV4dCh0ZXh0KTsK
ICAgICBtX3dyaXRhYmxlRGF0YS0+c2V0SHRtbChjcmVhdGVNYXJrdXAocmFuZ2UsIDAsIEFubm90
YXRlRm9ySW50ZXJjaGFuZ2UsIGZhbHNlLCBBYnNvbHV0ZVVSTHMpKTsKICNpZm5kZWYgUVRfTk9f
Q0xJUEJPQVJECi0gICAgaWYgKCFpc0ZvckRyYWdnaW5nKCkpCisgICAgaWYgKGlzRm9yQ29weVBh
c3RlKCkpCiAgICAgICAgIFFBcHBsaWNhdGlvbjo6Y2xpcGJvYXJkKCktPnNldE1pbWVEYXRhKG1f
d3JpdGFibGVEYXRhKTsKICNlbmRpZgogfQpAQCAtMzMzLDcgKzMzMyw3IEBAIHZvaWQgQ2xpcGJv
YXJkUXQ6OndyaXRlUGxhaW5UZXh0KGNvbnN0IFN0cmluZyYgc3RyKQogICAgIHRleHQucmVwbGFj
ZShRQ2hhcigweGEwKSwgUUxhdGluMUNoYXIoJyAnKSk7CiAgICAgbV93cml0YWJsZURhdGEtPnNl
dFRleHQodGV4dCk7CiAjaWZuZGVmIFFUX05PX0NMSVBCT0FSRAotICAgIGlmICghaXNGb3JEcmFn
Z2luZygpKQorICAgIGlmIChpc0ZvckNvcHlQYXN0ZSgpKQogICAgICAgICBRQXBwbGljYXRpb246
OmNsaXBib2FyZCgpLT5zZXRNaW1lRGF0YShtX3dyaXRhYmxlRGF0YSk7CiAjZW5kaWYKIH0KZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vcXQvQ2xpcGJvYXJkUXQuaCBiL1dlYkNvcmUvcGxh
dGZvcm0vcXQvQ2xpcGJvYXJkUXQuaAppbmRleCA5YjU0ZDVmLi5lOTQ4YjNlIDEwMDY0NAotLS0g
YS9XZWJDb3JlL3BsYXRmb3JtL3F0L0NsaXBib2FyZFF0LmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9y
bS9xdC9DbGlwYm9hcmRRdC5oCkBAIC00NCw3ICs0NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDbGlwYm9hcmRRdChw
b2xpY3ksIHJlYWRhYmxlQ2xpcGJvYXJkKSk7CiAgICAgICAgIH0KLSAgICAgICAgc3RhdGljIFBh
c3NSZWZQdHI8Q2xpcGJvYXJkUXQ+IGNyZWF0ZShDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5
LCBib29sIGZvckRyYWdnaW5nID0gZmFsc2UpCisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPENs
aXBib2FyZFF0PiBjcmVhdGUoQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSwgQ2xpcGJvYXJk
VHlwZSBjbGlwYm9hcmRUeXBlID0gQ2xpcGJvYXJkOjpDb3B5UGFzdGUpCiAgICAgICAgIHsKICAg
ICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ2xpcGJvYXJkUXQocG9saWN5LCBmb3JEcmFn
Z2luZykpOwogICAgICAgICB9CkBAIC03Nyw3ICs3Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgQ2xpcGJvYXJkUXQoQ2xpcGJvYXJkQWNjZXNzUG9saWN5LCBjb25zdCBRTWltZURh
dGEqIHJlYWRhYmxlQ2xpcGJvYXJkKTsKIAogICAgICAgICAvLyBDbGlwYm9hcmQgaXMgd3JpdGFi
bGUgc28gaXQgd2lsbCBjcmVhdGUgaXRzIG93biBRTWltZURhdGEgb2JqZWN0Ci0gICAgICAgIENs
aXBib2FyZFF0KENsaXBib2FyZEFjY2Vzc1BvbGljeSwgYm9vbCBmb3JEcmFnZ2luZyk7CisgICAg
ICAgIENsaXBib2FyZFF0KENsaXBib2FyZEFjY2Vzc1BvbGljeSwgQ2xpcGJvYXJkVHlwZSBjbGlw
Ym9hcmRUeXBlKTsKIAogICAgICAgICB2b2lkIHNldERyYWdJbWFnZShDYWNoZWRJbWFnZSosIE5v
ZGUqLCBjb25zdCBJbnRQb2ludCYgbG9jKTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vQ2xpcGJvYXJkV2luLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFdp
bi5jcHAKaW5kZXggYjEzNDczYS4uMjVlZGIxZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vQ2xpcGJvYXJkV2luLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9h
cmRXaW4uY3BwCkBAIC00MDAsMTYgKzQwMCwxNiBAQCBQYXNzUmVmUHRyPENsaXBib2FyZD4gQ2xp
cGJvYXJkOjpjcmVhdGUoQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSwgRHJhZ0RhdGEqCiAg
ICAgcmV0dXJuIENsaXBib2FyZFdpbjo6Y3JlYXRlKHRydWUsIGRyYWdEYXRhLT5wbGF0Zm9ybURh
dGEoKSwgcG9saWN5LCBmcmFtZSk7CiB9CiAKLUNsaXBib2FyZFdpbjo6Q2xpcGJvYXJkV2luKGJv
b2wgaXNGb3JEcmFnZ2luZywgSURhdGFPYmplY3QqIGRhdGFPYmplY3QsIENsaXBib2FyZEFjY2Vz
c1BvbGljeSBwb2xpY3ksIEZyYW1lKiBmcmFtZSkKLSAgICA6IENsaXBib2FyZChwb2xpY3ksIGlz
Rm9yRHJhZ2dpbmcpCitDbGlwYm9hcmRXaW46OkNsaXBib2FyZFdpbihDbGlwYm9hcmRUeXBlIGNs
aXBib2FyZFR5cGUsIElEYXRhT2JqZWN0KiBkYXRhT2JqZWN0LCBDbGlwYm9hcmRBY2Nlc3NQb2xp
Y3kgcG9saWN5LCBGcmFtZSogZnJhbWUpCisgICAgOiBDbGlwYm9hcmQocG9saWN5LCBjbGlwYm9h
cmRUeXBlKQogICAgICwgbV9kYXRhT2JqZWN0KGRhdGFPYmplY3QpCiAgICAgLCBtX3dyaXRhYmxl
RGF0YU9iamVjdCgwKQogICAgICwgbV9mcmFtZShmcmFtZSkKIHsKIH0KIAotQ2xpcGJvYXJkV2lu
OjpDbGlwYm9hcmRXaW4oYm9vbCBpc0ZvckRyYWdnaW5nLCBXQ0RhdGFPYmplY3QqIGRhdGFPYmpl
Y3QsIENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIEZyYW1lKiBmcmFtZSkKLSAgICA6IENs
aXBib2FyZChwb2xpY3ksIGlzRm9yRHJhZ2dpbmcpCitDbGlwYm9hcmRXaW46OkNsaXBib2FyZFdp
bihDbGlwYm9hcmRUeXBlIGNsaXBib2FyZFR5cGUsIFdDRGF0YU9iamVjdCogZGF0YU9iamVjdCwg
Q2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSwgRnJhbWUqIGZyYW1lKQorICAgIDogQ2xpcGJv
YXJkKHBvbGljeSwgY2xpcGJvYXJkVHlwZSkKICAgICAsIG1fZGF0YU9iamVjdChkYXRhT2JqZWN0
KQogICAgICwgbV93cml0YWJsZURhdGFPYmplY3QoZGF0YU9iamVjdCkKICAgICAsIG1fZnJhbWUo
ZnJhbWUpCkBAIC00NjcsNyArNDY3LDcgQEAgc3RhdGljIGJvb2wgd3JpdGVVUkwoV0NEYXRhT2Jq
ZWN0ICpkYXRhLCBjb25zdCBLVVJMJiB1cmwsIFN0cmluZyB0aXRsZSwgYm9vbCB3aXQKIHZvaWQg
Q2xpcGJvYXJkV2luOjpjbGVhckRhdGEoY29uc3QgU3RyaW5nJiB0eXBlKQogewogICAgIC8vIEZJ
WE1FOiBOZWVkIHRvIGJlIGFibGUgdG8gd3JpdGUgdG8gdGhlIHN5c3RlbSBjbGlwYm9hcmQgPHJk
YXI6Ly9wcm9ibGVtLzUwMTU5NDE+Ci0gICAgQVNTRVJUKGlzRm9yRHJhZ2dpbmcoKSk7CisgICAg
QVNTRVJUKGlzRm9yRHJhZ0Ryb3AoKSk7CiAgICAgaWYgKHBvbGljeSgpICE9IENsaXBib2FyZFdy
aXRhYmxlIHx8ICFtX3dyaXRhYmxlRGF0YU9iamVjdCkKICAgICAgICAgcmV0dXJuOwogCkBAIC00
ODcsNyArNDg3LDcgQEAgdm9pZCBDbGlwYm9hcmRXaW46OmNsZWFyRGF0YShjb25zdCBTdHJpbmcm
IHR5cGUpCiB2b2lkIENsaXBib2FyZFdpbjo6Y2xlYXJBbGxEYXRhKCkKIHsKICAgICAvLyBGSVhN
RTogTmVlZCB0byBiZSBhYmxlIHRvIHdyaXRlIHRvIHRoZSBzeXN0ZW0gY2xpcGJvYXJkIDxyZGFy
Oi8vcHJvYmxlbS81MDE1OTQxPgotICAgIEFTU0VSVChpc0ZvckRyYWdnaW5nKCkpOworICAgIEFT
U0VSVChpc0ZvckRyYWdEcm9wKCkpOwogICAgIGlmIChwb2xpY3koKSAhPSBDbGlwYm9hcmRXcml0
YWJsZSkKICAgICAgICAgcmV0dXJuOwogICAgIApAQCAtNTIwLDcgKzUyMCw3IEBAIFN0cmluZyBD
bGlwYm9hcmRXaW46OmdldERhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBib29sJiBzdWNjZXNzKSBj
b25zdAogYm9vbCBDbGlwYm9hcmRXaW46OnNldERhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25z
dCBTdHJpbmcmIGRhdGEpCiB7CiAgICAgLy8gRklYTUU6IE5lZWQgdG8gYmUgYWJsZSB0byB3cml0
ZSB0byB0aGUgc3lzdGVtIGNsaXBib2FyZCA8cmRhcjovL3Byb2JsZW0vNTAxNTk0MT4KLSAgICBB
U1NFUlQoaXNGb3JEcmFnZ2luZygpKTsKKyAgICBBU1NFUlQoaXNGb3JEcmFnRHJvcCgpKTsKICAg
ICBpZiAocG9saWN5KCkgIT0gQ2xpcGJvYXJkV3JpdGFibGUgfHwgIW1fd3JpdGFibGVEYXRhT2Jq
ZWN0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTgzMSw3ICs4MzEsNyBAQCBib29sIENs
aXBib2FyZFdpbjo6aGFzRGF0YSgpCiAKIHZvaWQgQ2xpcGJvYXJkV2luOjpzZXRFeHRlcm5hbERh
dGFPYmplY3QoSURhdGFPYmplY3QgKmRhdGFPYmplY3QpCiB7Ci0gICAgQVNTRVJUKGlzRm9yRHJh
Z2dpbmcoKSk7CisgICAgQVNTRVJUKGlzRm9yRHJhZ0Ryb3AoKSk7CiAKICAgICBtX3dyaXRhYmxl
RGF0YU9iamVjdCA9IDA7CiAgICAgbV9kYXRhT2JqZWN0ID0gZGF0YU9iamVjdDsKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFdpbi5oIGIvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vQ2xpcGJvYXJkV2luLmgKaW5kZXggNmEwODA4Ny4uNDM3ZTEyNCAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkV2luLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vQ2xpcGJvYXJkV2luLmgKQEAgLTQyLDEzICs0MiwxMyBAQCBjbGFzcyBXQ0RhdGFPYmpl
Y3Q7CiAvLyBTdGF0ZSBhdmFpbGFibGUgZHVyaW5nIElFJ3MgZXZlbnRzIGZvciBkcmFnIGFuZCBk
cm9wIGFuZCBjb3B5L3Bhc3RlCiBjbGFzcyBDbGlwYm9hcmRXaW4gOiBwdWJsaWMgQ2xpcGJvYXJk
LCBwdWJsaWMgQ2FjaGVkUmVzb3VyY2VDbGllbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPENsaXBib2FyZFdpbj4gY3JlYXRlKGJvb2wgaXNGb3JEcmFnZ2luZywgSURhdGFPYmpl
Y3QqIGRhdGFPYmplY3QsIENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIEZyYW1lKiBmcmFt
ZSkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxDbGlwYm9hcmRXaW4+IGNyZWF0ZShDbGlwYm9hcmRU
eXBlIGNsaXBib2FyZFR5cGUsIElEYXRhT2JqZWN0KiBkYXRhT2JqZWN0LCBDbGlwYm9hcmRBY2Nl
c3NQb2xpY3kgcG9saWN5LCBGcmFtZSogZnJhbWUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IENsaXBib2FyZFdpbihpc0ZvckRyYWdnaW5nLCBkYXRhT2JqZWN0LCBwb2xpY3ks
IGZyYW1lKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ2xpcGJvYXJkV2luKGNsaXBi
b2FyZFR5cGUsIGRhdGFPYmplY3QsIHBvbGljeSwgZnJhbWUpKTsKICAgICB9Ci0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8Q2xpcGJvYXJkV2luPiBjcmVhdGUoYm9vbCBpc0ZvckRyYWdnaW5nLCBXQ0Rh
dGFPYmplY3QqIGRhdGFPYmplY3QsIENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIEZyYW1l
KiBmcmFtZSkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxDbGlwYm9hcmRXaW4+IGNyZWF0ZShDbGlw
Ym9hcmRUeXBlIGNsaXBib2FyZFR5cGUsIFdDRGF0YU9iamVjdCogZGF0YU9iamVjdCwgQ2xpcGJv
YXJkQWNjZXNzUG9saWN5IHBvbGljeSwgRnJhbWUqIGZyYW1lKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBDbGlwYm9hcmRXaW4oaXNGb3JEcmFnZ2luZywgZGF0YU9iamVjdCwg
cG9saWN5LCBmcmFtZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENsaXBib2FyZFdp
bihjbGlwYm9hcmRUeXBlLCBkYXRhT2JqZWN0LCBwb2xpY3ksIGZyYW1lKSk7CiAgICAgfQogICAg
IH5DbGlwYm9hcmRXaW4oKTsKIApAQCAtNzcsOCArNzcsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZXRFeHRlcm5hbERhdGFPYmplY3QoSURhdGFPYmplY3QgKmRhdGFPYmplY3QpOwogCiBwcml2YXRl
OgotICAgIENsaXBib2FyZFdpbihib29sIGlzRm9yRHJhZ2dpbmcsIElEYXRhT2JqZWN0KiwgQ2xp
cGJvYXJkQWNjZXNzUG9saWN5LCBGcmFtZSopOwotICAgIENsaXBib2FyZFdpbihib29sIGlzRm9y
RHJhZ2dpbmcsIFdDRGF0YU9iamVjdCosIENsaXBib2FyZEFjY2Vzc1BvbGljeSwgRnJhbWUqKTsK
KyAgICBDbGlwYm9hcmRXaW4oQ2xpcGJvYXJkVHlwZSBjbGlwYm9hcmRUeXBlLCBJRGF0YU9iamVj
dCosIENsaXBib2FyZEFjY2Vzc1BvbGljeSwgRnJhbWUqKTsKKyAgICBDbGlwYm9hcmRXaW4oQ2xp
cGJvYXJkVHlwZSBjbGlwYm9hcmRUeXBlLCBXQ0RhdGFPYmplY3QqLCBDbGlwYm9hcmRBY2Nlc3NQ
b2xpY3ksIEZyYW1lKik7CiAKICAgICB2b2lkIHJlc2V0RnJvbUNsaXBib2FyZCgpOwogICAgIHZv
aWQgc2V0RHJhZ0ltYWdlKENhY2hlZEltYWdlKiwgTm9kZSosIGNvbnN0IEludFBvaW50Jik7CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9FZGl0b3JXaW4uY3BwIGIvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vRWRpdG9yV2luLmNwcAppbmRleCAwNzU4MjdkLi5iYjViMzU5IDEwMDY0NAot
LS0gYS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9FZGl0b3JXaW4uY3BwCisrKyBiL1dlYkNvcmUvcGxh
dGZvcm0vd2luL0VkaXRvcldpbi5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgUGFzc1JlZlB0cjxDbGlw
Ym9hcmQ+IEVkaXRvcjo6bmV3R2VuZXJhbENsaXBib2FyZChDbGlwYm9hcmRBY2Nlc3NQb2xpY3kg
cG9saWN5LAogICAgIGlmICghU1VDQ0VFREVEKE9sZUdldENsaXBib2FyZCgmY2xpcGJvYXJkRGF0
YSkpKQogICAgICAgICBjbGlwYm9hcmREYXRhID0gMDsKIAotICAgIHJldHVybiBDbGlwYm9hcmRX
aW46OmNyZWF0ZShmYWxzZSwgY2xpcGJvYXJkRGF0YS5nZXQoKSwgcG9saWN5LCBmcmFtZSk7Cisg
ICAgcmV0dXJuIENsaXBib2FyZFdpbjo6Y3JlYXRlKENsaXBib2FyZDo6Q29weVBhc3RlLCBjbGlw
Ym9hcmREYXRhLmdldCgpLCBwb2xpY3ksIGZyYW1lKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS93eC9DbGlwYm9hcmRXeC5jcHAgYi9X
ZWJDb3JlL3BsYXRmb3JtL3d4L0NsaXBib2FyZFd4LmNwcAppbmRleCAyZWY5NDNmLi4zMjIxNmE2
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3d4L0NsaXBib2FyZFd4LmNwcAorKysgYi9X
ZWJDb3JlL3BsYXRmb3JtL3d4L0NsaXBib2FyZFd4LmNwcApAQCAtNDIsOCArNDIsOCBAQCBQYXNz
UmVmUHRyPENsaXBib2FyZD4gQ2xpcGJvYXJkOjpjcmVhdGUoQ2xpcGJvYXJkQWNjZXNzUG9saWN5
LCBEcmFnRGF0YSosIEZyYW1lKgogICAgIHJldHVybiAwOwogfQogCi1DbGlwYm9hcmRXeDo6Q2xp
cGJvYXJkV3goQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSwgYm9vbCBmb3JEcmFnZ2luZykg
Ci0gICAgOiBDbGlwYm9hcmQocG9saWN5LCBmb3JEcmFnZ2luZykKK0NsaXBib2FyZFd4OjpDbGlw
Ym9hcmRXeChDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5LCBDbGlwYm9hcmRUeXBlIGNsaXBi
b2FyZFR5cGUpIAorICAgIDogQ2xpcGJvYXJkKHBvbGljeSwgY2xpcGJvYXJkVHlwZSkKIHsKIH0K
IApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS93eC9DbGlwYm9hcmRXeC5oIGIvV2ViQ29y
ZS9wbGF0Zm9ybS93eC9DbGlwYm9hcmRXeC5oCmluZGV4IDQ1ZDFjZjMuLmNjMWRkN2EgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vd3gvQ2xpcGJvYXJkV3guaAorKysgYi9XZWJDb3JlL3Bs
YXRmb3JtL3d4L0NsaXBib2FyZFd4LmgKQEAgLTM1LDkgKzM1LDkgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgIC8vIFN0YXRlIGF2YWlsYWJsZSBkdXJpbmcgSUUncyBldmVudHMgZm9yIGRyYWcg
YW5kIGRyb3AgYW5kIGNvcHkvcGFzdGUKICAgICBjbGFzcyBDbGlwYm9hcmRXeCA6IHB1YmxpYyBD
bGlwYm9hcmQgewogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q2xpcGJv
YXJkV3g+IGNyZWF0ZShDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5LCBib29sIGZvckRyYWdn
aW5nKQorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDbGlwYm9hcmRXeD4gY3JlYXRlKENsaXBi
b2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIENsaXBib2FyZFR5cGUgY2xpcGJvYXJkVHlwZSkKICAg
ICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDbGlwYm9hcmRXeChwb2xp
Y3ksIGZvckRyYWdnaW5nKSk7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENsaXBi
b2FyZFd4KHBvbGljeSwgY2xpcGJvYXJkVHlwZSkpOwogICAgICAgICB9CiAKICAgICAgICAgdm9p
ZCBjbGVhckRhdGEoY29uc3QgU3RyaW5nJiB0eXBlKTsKQEAgLTY1LDcgKzY1LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIGJvb2wgaGFzRGF0YSgpOwogCiAgICAgcHJp
dmF0ZToKLSAgICAgICAgQ2xpcGJvYXJkV3goQ2xpcGJvYXJkQWNjZXNzUG9saWN5LCBib29sIGZv
ckRyYWdnaW5nKTsKKyAgICAgICAgQ2xpcGJvYXJkV3goQ2xpcGJvYXJkQWNjZXNzUG9saWN5LCBD
bGlwYm9hcmRUeXBlIGNsaXBib2FyZFR5cGUpOwogICAgIH07CiB9IAogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>68114</attachid>
            <date>2010-09-20 11:32:19 -0700</date>
            <delta_ts>2010-09-20 23:42:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>foo.patch</filename>
            <type>text/plain</type>
            <size>50197</size>
            <attacher name="Daniel Cheng">dcheng</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YWNmZjY3NS4uZWJiY2Y4MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMTcgQEAKKzIwMTAtMDktMjAgIERhbmllbCBDaGVu
ZyAgPGRjaGVuZ0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQ2hhbmdlIENsaXBib2FyZCB0byB1c2UgYW4gZW51bSBpbnN0ZWFk
IG9mIGlzRm9yRHJhZ2dpbmcgPSB0cnVlL2ZhbHNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NjAwNAorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gKE9P
UFMhKQorCisgICAgICAgICogYmluZGluZ3MvanMvSlNDbGlwYm9hcmRDdXN0b20uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SlNDbGlwYm9hcmQ6OnNldERyYWdJbWFnZSk6CisgICAgICAgICogYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4Q2xpcGJvYXJkQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlY4Q2xpcGJvYXJkOjpzZXREcmFnSW1hZ2VDYWxsYmFjayk6CisgICAgICAgICogZG9tL0NsaXBi
b2FyZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmQ6OkNsaXBib2FyZCk6CisgICAg
ICAgIChXZWJDb3JlOjpDbGlwYm9hcmQ6OnNldERyb3BFZmZlY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2xpcGJvYXJkOjpzZXRFZmZlY3RBbGxvd2VkKToKKyAgICAgICAgKiBkb20vQ2xpcGJvYXJk
Lmg6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmQ6OmlzRm9yQ29weUFuZFBhc3RlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZDo6aXNGb3JEcmFnQW5kRHJvcCk6CisgICAgICAgICog
ZWRpdGluZy9hbmRyb2lkL0VkaXRvckFuZHJvaWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRp
dG9yOjpuZXdHZW5lcmFsQ2xpcGJvYXJkKToKKyAgICAgICAgKiBlZGl0aW5nL2JyZXcvRWRpdG9y
QnJldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6Om5ld0dlbmVyYWxDbGlwYm9hcmQp
OgorICAgICAgICAqIGVkaXRpbmcvY2hyb21pdW0vRWRpdG9yQ2hyb21pdW0uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RWRpdG9yOjpuZXdHZW5lcmFsQ2xpcGJvYXJkKToKKyAgICAgICAgKiBlZGl0
aW5nL2hhaWt1L0VkaXRvckhhaWt1LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bmV3
R2VuZXJhbENsaXBib2FyZCk6CisgICAgICAgICogZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpuZXdHZW5lcmFsQ2xpcGJvYXJkKToKKyAgICAgICAg
KiBlZGl0aW5nL3d4L0VkaXRvcld4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bmV3
R2VuZXJhbENsaXBib2FyZCk6CisgICAgICAgICogcGFnZS9jaHJvbWl1bS9FdmVudEhhbmRsZXJD
aHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmNyZWF0ZURyYWdn
aW5nQ2xpcGJvYXJkKToKKyAgICAgICAgKiBwYWdlL2VmbC9FdmVudEhhbmRsZXJFZmwuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpjcmVhdGVEcmFnZ2luZ0NsaXBib2FyZCk6
CisgICAgICAgICogcGFnZS9ndGsvRXZlbnRIYW5kbGVyR3RrLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkV2ZW50SGFuZGxlcjo6Y3JlYXRlRHJhZ2dpbmdDbGlwYm9hcmQpOgorICAgICAgICAqIHBh
Z2UvaGFpa3UvRXZlbnRIYW5kbGVySGFpa3UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRI
YW5kbGVyOjpjcmVhdGVEcmFnZ2luZ0NsaXBib2FyZCk6CisgICAgICAgICogcGFnZS9tYWMvRXZl
bnRIYW5kbGVyTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpjcmVhdGVE
cmFnZ2luZ0NsaXBib2FyZCk6CisgICAgICAgICogcGFnZS9xdC9FdmVudEhhbmRsZXJRdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmNyZWF0ZURyYWdnaW5nQ2xpcGJvYXJk
KToKKyAgICAgICAgKiBwYWdlL3dpbi9FdmVudEhhbmRsZXJXaW4uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RXZlbnRIYW5kbGVyOjpjcmVhdGVEcmFnZ2luZ0NsaXBib2FyZCk6CisgICAgICAgICog
cGFnZS93eC9FdmVudEhhbmRsZXJXeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRs
ZXI6OmNyZWF0ZURyYWdnaW5nQ2xpcGJvYXJkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hbmRyb2lk
L0NsaXBib2FyZEFuZHJvaWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkQW5kcm9p
ZDo6Q2xpcGJvYXJkQW5kcm9pZCk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRBbmRyb2lk
OjpjbGVhckRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkQW5kcm9pZDo6Y2xlYXJB
bGxEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEFuZHJvaWQ6OnNldERhdGEpOgor
ICAgICAgICAqIHBsYXRmb3JtL2FuZHJvaWQvQ2xpcGJvYXJkQW5kcm9pZC5oOgorICAgICAgICAq
IHBsYXRmb3JtL2JyZXcvQ2xpcGJvYXJkQnJldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlw
Ym9hcmRCcmV3OjpDbGlwYm9hcmRCcmV3KToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEJy
ZXc6OmNsZWFyRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRCcmV3OjpjbGVhckFs
bERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkQnJldzo6c2V0RGF0YSk6CisgICAg
ICAgICogcGxhdGZvcm0vYnJldy9DbGlwYm9hcmRCcmV3Lmg6CisgICAgICAgICogcGxhdGZvcm0v
Y2hyb21pdW0vQ2xpcGJvYXJkQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJv
YXJkOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkQ2hyb21pdW06OkNsaXBi
b2FyZENocm9taXVtKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZENocm9taXVtOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkQ2hyb21pdW06OmdldERhdGEpOgorICAg
ICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9taXVtLmg6CisgICAgICAgICog
cGxhdGZvcm0vZWZsL0NsaXBib2FyZEVmbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6
Om5ld0dlbmVyYWxDbGlwYm9hcmQpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkRWZsOjpD
bGlwYm9hcmRFZmwpOgorICAgICAgICAqIHBsYXRmb3JtL2VmbC9DbGlwYm9hcmRFZmwuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEVmbDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ndGsvQ2xpcGJvYXJkR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bmV3R2Vu
ZXJhbENsaXBib2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmQ6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRHdGs6OkNsaXBib2FyZEd0ayk6CisgICAgICAgICog
cGxhdGZvcm0vZ3RrL0NsaXBib2FyZEd0ay5oOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJk
R3RrOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2hhaWt1L0NsaXBib2FyZEhhaWt1LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNsaXBib2FyZEhhaWt1OjpDbGlwYm9hcmRIYWlrdSk6CisgICAgICAgICogcGxhdGZvcm0v
aGFpa3UvQ2xpcGJvYXJkSGFpa3UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEhhaWt1
OjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9DbGlwYm9hcmRNYWMuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNsaXBib2FyZE1hYzo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9t
YWMvQ2xpcGJvYXJkTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkTWFjOjpDbGlwYm9hcmRNYWMpOgorICAgICAg
ICAqIHBsYXRmb3JtL3F0L0NsaXBib2FyZFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBi
b2FyZFF0OjpDbGlwYm9hcmRRdCk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRRdDo6fkNs
aXBib2FyZFF0KToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZFF0OjpjbGVhckRhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkUXQ6OmNsZWFyQWxsRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpDbGlwYm9hcmRRdDo6c2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9h
cmRRdDo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBi
b2FyZFF0Ojp3cml0ZVVSTCk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRRdDo6d3JpdGVS
YW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRRdDo6d3JpdGVQbGFpblRleHQpOgor
ICAgICAgICAqIHBsYXRmb3JtL3F0L0NsaXBib2FyZFF0Lmg6CisgICAgICAgIChXZWJDb3JlOjpD
bGlwYm9hcmRRdDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vQ2xpcGJvYXJkV2lu
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZFdpbjo6Q2xpcGJvYXJkV2luKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZFdpbjo6Y2xlYXJEYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6OkNsaXBib2FyZFdpbjo6Y2xlYXJBbGxEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBi
b2FyZFdpbjo6c2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRXaW46OnNldEV4
dGVybmFsRGF0YU9iamVjdCk6CisgICAgICAgICogcGxhdGZvcm0vd2luL0NsaXBib2FyZFdpbi5o
OgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkV2luOjpjcmVhdGUpOgorICAgICAgICAqIHBs
YXRmb3JtL3dpbi9FZGl0b3JXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpuZXdH
ZW5lcmFsQ2xpcGJvYXJkKToKKyAgICAgICAgKiBwbGF0Zm9ybS93eC9DbGlwYm9hcmRXeC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRXeDo6Q2xpcGJvYXJkV3gpOgorICAgICAgICAq
IHBsYXRmb3JtL3d4L0NsaXBib2FyZFd4Lmg6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRX
eDo6Y3JlYXRlKToKKwogMjAxMC0wOS0xOSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJv
dEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjY3NzQ5Lgpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NsaXBib2FyZEN1c3RvbS5jcHAgYi9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2xpcGJvYXJkQ3VzdG9tLmNwcAppbmRleCAyYThkMzA5Li41
MDkyZjcxIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2xpcGJvYXJkQ3VzdG9t
LmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2xpcGJvYXJkQ3VzdG9tLmNwcApAQCAt
MTAxLDcgKzEwMSw3IEBAIEpTVmFsdWUgSlNDbGlwYm9hcmQ6OnNldERyYWdJbWFnZShFeGVjU3Rh
dGUqIGV4ZWMpCiB7CiAgICAgQ2xpcGJvYXJkKiBjbGlwYm9hcmQgPSBpbXBsKCk7CiAKLSAgICBp
ZiAoIWNsaXBib2FyZC0+aXNGb3JEcmFnZ2luZygpKQorICAgIGlmICghY2xpcGJvYXJkLT5pc0Zv
ckRyYWdBbmREcm9wKCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogCiAgICAgLy8g
RklYTUU6IEl0IGRvZXMgbm90IG1hdGNoIHRoZSByZXN0IG9mIHRoZSBKUyBiaW5kaW5ncyB0byB0
aHJvdyBvbiBpbnZhbGlkIG51bWJlciBvZiBhcmd1bWVudHMuIApkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDbGlwYm9hcmRDdXN0b20uY3BwIGIvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhDbGlwYm9hcmRDdXN0b20uY3BwCmluZGV4IDY5NzQyZjguLmNlZWM0
NDcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q2xpcGJvYXJkQ3Vz
dG9tLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENsaXBib2FyZEN1c3Rv
bS5jcHAKQEAgLTEwMSw3ICsxMDEsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDbGlwYm9h
cmQ6OnNldERyYWdJbWFnZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZwogICAgIElO
Q19TVEFUUygiRE9NLkNsaXBib2FyZC5zZXREcmFnSW1hZ2UoKSIpOwogICAgIENsaXBib2FyZCog
Y2xpcGJvYXJkID0gVjhDbGlwYm9hcmQ6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogCi0gICAg
aWYgKCFjbGlwYm9hcmQtPmlzRm9yRHJhZ2dpbmcoKSkKKyAgICBpZiAoIWNsaXBib2FyZC0+aXNG
b3JEcmFnQW5kRHJvcCgpKQogICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogCiAgICAg
aWYgKGFyZ3MuTGVuZ3RoKCkgIT0gMykKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0NsaXBib2Fy
ZC5jcHAgYi9XZWJDb3JlL2RvbS9DbGlwYm9hcmQuY3BwCmluZGV4IGQ2NDRiY2MuLjBhNTllOGUg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0NsaXBib2FyZC5jcHAKKysrIGIvV2ViQ29yZS9kb20v
Q2xpcGJvYXJkLmNwcApAQCAtMzMsMTIgKzMzLDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotQ2xpcGJvYXJkOjpDbGlwYm9hcmQoQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSwgYm9v
bCBpc0ZvckRyYWdnaW5nKSAKK0NsaXBib2FyZDo6Q2xpcGJvYXJkKENsaXBib2FyZEFjY2Vzc1Bv
bGljeSBwb2xpY3ksIENsaXBib2FyZFR5cGUgY2xpcGJvYXJkVHlwZSkgCiAgICAgOiBtX3BvbGlj
eShwb2xpY3kpCiAgICAgLCBtX2Ryb3BFZmZlY3QoInVuaW5pdGlhbGl6ZWQiKQogICAgICwgbV9l
ZmZlY3RBbGxvd2VkKCJ1bmluaXRpYWxpemVkIikKICAgICAsIG1fZHJhZ1N0YXJ0ZWQoZmFsc2Up
Ci0gICAgLCBtX2ZvckRyYWdnaW5nKGlzRm9yRHJhZ2dpbmcpCisgICAgLCBtX2NsaXBib2FyZFR5
cGUoY2xpcGJvYXJkVHlwZSkKICAgICAsIG1fZHJhZ0ltYWdlKDApCiB7CiB9CkBAIC0xMjcsNyAr
MTI3LDcgQEAgdm9pZCBDbGlwYm9hcmQ6OnNldERlc3RpbmF0aW9uT3BlcmF0aW9uKERyYWdPcGVy
YXRpb24gb3ApCiAKIHZvaWQgQ2xpcGJvYXJkOjpzZXREcm9wRWZmZWN0KGNvbnN0IFN0cmluZyAm
ZWZmZWN0KQogewotICAgIGlmICghbV9mb3JEcmFnZ2luZykKKyAgICBpZiAoIWlzRm9yRHJhZ0Fu
ZERyb3AoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gVGhlIGF0dHJpYnV0ZSBtdXN0IGln
bm9yZSBhbnkgYXR0ZW1wdHMgdG8gc2V0IGl0IHRvIGEgdmFsdWUgb3RoZXIgdGhhbiBub25lLCBj
b3B5LCBsaW5rLCBhbmQgbW92ZS4gCkBAIC0xNDAsNyArMTQwLDcgQEAgdm9pZCBDbGlwYm9hcmQ6
OnNldERyb3BFZmZlY3QoY29uc3QgU3RyaW5nICZlZmZlY3QpCiAKIHZvaWQgQ2xpcGJvYXJkOjpz
ZXRFZmZlY3RBbGxvd2VkKGNvbnN0IFN0cmluZyAmZWZmZWN0KQogewotICAgIGlmICghbV9mb3JE
cmFnZ2luZykKKyAgICBpZiAoIWlzRm9yRHJhZ0FuZERyb3AoKSkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgaWYgKGRyYWdPcEZyb21JRU9wKGVmZmVjdCkgPT0gRHJhZ09wZXJhdGlvblByaXZhdGUp
IHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0NsaXBib2FyZC5oIGIvV2ViQ29yZS9kb20vQ2xp
cGJvYXJkLmgKaW5kZXggMDU2MjI4MC4uMDFiM2Y4NyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20v
Q2xpcGJvYXJkLmgKKysrIGIvV2ViQ29yZS9kb20vQ2xpcGJvYXJkLmgKQEAgLTQwLDEyICs0MCwx
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgLy8gU3RhdGUgYXZhaWxhYmxlIGR1cmluZyBJ
RSdzIGV2ZW50cyBmb3IgZHJhZyBhbmQgZHJvcCBhbmQgY29weS9wYXN0ZQogICAgIGNsYXNzIENs
aXBib2FyZCA6IHB1YmxpYyBSZWZDb3VudGVkPENsaXBib2FyZD4gewogICAgIHB1YmxpYzoKKyAg
ICAgICAgLy8gV2hldGhlciB0aGlzIGNsaXBib2FyZCBpcyBzZXJ2aW5nIGEgZHJhZy1kcm9wIG9y
IGNvcHktcGFzdGUgcmVxdWVzdC4KKyAgICAgICAgZW51bSBDbGlwYm9hcmRUeXBlIHsKKyAgICAg
ICAgICAgIENvcHlBbmRQYXN0ZSwKKyAgICAgICAgICAgIERyYWdBbmREcm9wLAorICAgICAgICB9
OwogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IGNyZWF0ZShDbGlwYm9hcmRB
Y2Nlc3NQb2xpY3ksIERyYWdEYXRhKiwgRnJhbWUqKTsKIAogICAgICAgICB2aXJ0dWFsIH5DbGlw
Ym9hcmQoKSB7IH0KIAotICAgICAgICAvLyBJcyB0aGlzIG9wZXJhdGlvbiBhIGRyYWctZHJvcCBv
ciBhIGNvcHktcGFzdGU/Ci0gICAgICAgIGJvb2wgaXNGb3JEcmFnZ2luZygpIGNvbnN0IHsgcmV0
dXJuIG1fZm9yRHJhZ2dpbmc7IH0KKyAgICAgICAgYm9vbCBpc0ZvckNvcHlBbmRQYXN0ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fY2xpcGJvYXJkVHlwZSA9PSBDb3B5QW5kUGFzdGU7IH0KKyAgICAgICAg
Ym9vbCBpc0ZvckRyYWdBbmREcm9wKCkgY29uc3QgeyByZXR1cm4gbV9jbGlwYm9hcmRUeXBlID09
IERyYWdBbmREcm9wOyB9CiAKICAgICAgICAgU3RyaW5nIGRyb3BFZmZlY3QoKSBjb25zdCB7IHJl
dHVybiBkcm9wRWZmZWN0SXNVbmluaXRpYWxpemVkKCkgPyAibm9uZSIgOiBtX2Ryb3BFZmZlY3Q7
IH0KICAgICAgICAgdm9pZCBzZXREcm9wRWZmZWN0KGNvbnN0IFN0cmluZyYpOwpAQCAtODgsNyAr
OTMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc2V0RHJhZ0hhc1N0YXJ0
ZWQoKSB7IG1fZHJhZ1N0YXJ0ZWQgPSB0cnVlOyB9CiAgICAgICAgIAogICAgIHByb3RlY3RlZDoK
LSAgICAgICAgQ2xpcGJvYXJkKENsaXBib2FyZEFjY2Vzc1BvbGljeSwgYm9vbCBpc0ZvckRyYWdn
aW5nKTsKKyAgICAgICAgQ2xpcGJvYXJkKENsaXBib2FyZEFjY2Vzc1BvbGljeSwgQ2xpcGJvYXJk
VHlwZSBjbGlwYm9hcmRUeXBlKTsKIAogICAgICAgICBDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9s
aWN5KCkgY29uc3QgeyByZXR1cm4gbV9wb2xpY3k7IH0KICAgICAgICAgYm9vbCBkcmFnU3RhcnRl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fZHJhZ1N0YXJ0ZWQ7IH0KQEAgLTk4LDkgKzEwMyw5IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgU3RyaW5nIG1fZHJvcEVmZmVjdDsKICAgICAgICAg
U3RyaW5nIG1fZWZmZWN0QWxsb3dlZDsKICAgICAgICAgYm9vbCBtX2RyYWdTdGFydGVkOworICAg
ICAgICBDbGlwYm9hcmRUeXBlIG1fY2xpcGJvYXJkVHlwZTsKICAgICAgICAgCiAgICAgcHJvdGVj
dGVkOgotICAgICAgICBib29sIG1fZm9yRHJhZ2dpbmc7CiAgICAgICAgIEludFBvaW50IG1fZHJh
Z0xvYzsKICAgICAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkSW1hZ2U+IG1fZHJhZ0lt
YWdlOwogICAgICAgICBSZWZQdHI8Tm9kZT4gbV9kcmFnSW1hZ2VFbGVtZW50OwpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9lZGl0aW5nL2FuZHJvaWQvRWRpdG9yQW5kcm9pZC5jcHAgYi9XZWJDb3JlL2Vk
aXRpbmcvYW5kcm9pZC9FZGl0b3JBbmRyb2lkLmNwcAppbmRleCA2MWNjZTAxLi4wZjEwMDE0IDEw
MDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvYW5kcm9pZC9FZGl0b3JBbmRyb2lkLmNwcAorKysg
Yi9XZWJDb3JlL2VkaXRpbmcvYW5kcm9pZC9FZGl0b3JBbmRyb2lkLmNwcApAQCAtMzMsNyArMzMs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFBhc3NSZWZQdHI8Q2xpcGJvYXJkPiBFZGl0b3I6
Om5ld0dlbmVyYWxDbGlwYm9hcmQoQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSwgRnJhbWUq
KQogewotICAgIHJldHVybiBuZXcgQ2xpcGJvYXJkQW5kcm9pZChwb2xpY3ksIGZhbHNlKTsKKyAg
ICByZXR1cm4gbmV3IENsaXBib2FyZEFuZHJvaWQocG9saWN5LCBDbGlwYm9hcmQ6OkNvcHlBbmRQ
YXN0ZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
ZWRpdGluZy9icmV3L0VkaXRvckJyZXcuY3BwIGIvV2ViQ29yZS9lZGl0aW5nL2JyZXcvRWRpdG9y
QnJldy5jcHAKaW5kZXggNGExZjRkNy4uMTljNzZlNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9lZGl0
aW5nL2JyZXcvRWRpdG9yQnJldy5jcHAKKysrIGIvV2ViQ29yZS9lZGl0aW5nL2JyZXcvRWRpdG9y
QnJldy5jcHAKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBQYXNzUmVm
UHRyPENsaXBib2FyZD4gRWRpdG9yOjpuZXdHZW5lcmFsQ2xpcGJvYXJkKENsaXBib2FyZEFjY2Vz
c1BvbGljeSBwb2xpY3ksIEZyYW1lKikKIHsKLSAgICByZXR1cm4gbmV3IENsaXBib2FyZEJyZXco
cG9saWN5LCBmYWxzZSk7CisgICAgcmV0dXJuIG5ldyBDbGlwYm9hcmRCcmV3KHBvbGljeSwgQ2xp
cGJvYXJkOjpDb3B5QW5kUGFzdGUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9XZWJDb3JlL2VkaXRpbmcvY2hyb21pdW0vRWRpdG9yQ2hyb21pdW0uY3BwIGIvV2Vi
Q29yZS9lZGl0aW5nL2Nocm9taXVtL0VkaXRvckNocm9taXVtLmNwcAppbmRleCA3YTEzYjEyLi45
NWY3MzI2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvY2hyb21pdW0vRWRpdG9yQ2hyb21p
dW0uY3BwCisrKyBiL1dlYkNvcmUvZWRpdGluZy9jaHJvbWl1bS9FZGl0b3JDaHJvbWl1bS5jcHAK
QEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBQYXNzUmVmUHRyPENsaXBi
b2FyZD4gRWRpdG9yOjpuZXdHZW5lcmFsQ2xpcGJvYXJkKENsaXBib2FyZEFjY2Vzc1BvbGljeSBw
b2xpY3ksIEZyYW1lKiBmcmFtZSkKIHsKLSAgICByZXR1cm4gQ2xpcGJvYXJkQ2hyb21pdW06OmNy
ZWF0ZShmYWxzZSwgQ2hyb21pdW1EYXRhT2JqZWN0OjpjcmVhdGUoKSwgcG9saWN5LCBmcmFtZSk7
CisgICAgcmV0dXJuIENsaXBib2FyZENocm9taXVtOjpjcmVhdGUoQ2xpcGJvYXJkOjpDb3B5QW5k
UGFzdGUsIENocm9taXVtRGF0YU9iamVjdDo6Y3JlYXRlKCksIHBvbGljeSwgZnJhbWUpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcvaGFp
a3UvRWRpdG9ySGFpa3UuY3BwIGIvV2ViQ29yZS9lZGl0aW5nL2hhaWt1L0VkaXRvckhhaWt1LmNw
cAppbmRleCA0NTk2YzllLi5iMjFhZTE3IDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvaGFp
a3UvRWRpdG9ySGFpa3UuY3BwCisrKyBiL1dlYkNvcmUvZWRpdGluZy9oYWlrdS9FZGl0b3JIYWlr
dS5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBQYXNzUmVmUHRy
PENsaXBib2FyZD4gRWRpdG9yOjpuZXdHZW5lcmFsQ2xpcGJvYXJkKENsaXBib2FyZEFjY2Vzc1Bv
bGljeSBwb2xpY3ksIEZyYW1lKikKIHsKLSAgICByZXR1cm4gQ2xpcGJvYXJkSGFpa3U6OmNyZWF0
ZShwb2xpY3ksIGZhbHNlKTsKKyAgICByZXR1cm4gQ2xpcGJvYXJkSGFpa3U6OmNyZWF0ZShwb2xp
Y3ksIENsaXBib2FyZDo6Q29weUFuZFBhc3RlKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0gYi9XZWJDb3Jl
L2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQppbmRleCBmMDEwOTA4Li45YzcwNGI4IDEwMDY0NAot
LS0gYS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQorKysgYi9XZWJDb3JlL2VkaXRp
bmcvbWFjL0VkaXRvck1hYy5tbQpAQCAtNDIsNyArNDIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIFBhc3NSZWZQdHI8Q2xpcGJvYXJkPiBFZGl0b3I6Om5ld0dlbmVyYWxDbGlwYm9hcmQoQ2xp
cGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSwgRnJhbWUqIGZyYW1lKQogewotICAgIHJldHVybiBD
bGlwYm9hcmRNYWM6OmNyZWF0ZShmYWxzZSwgW05TUGFzdGVib2FyZCBnZW5lcmFsUGFzdGVib2Fy
ZF0sIHBvbGljeSwgZnJhbWUpOworICAgIHJldHVybiBDbGlwYm9hcmRNYWM6OmNyZWF0ZShDbGlw
Ym9hcmQ6OkNvcHlBbmRQYXN0ZSwgW05TUGFzdGVib2FyZCBnZW5lcmFsUGFzdGVib2FyZF0sIHBv
bGljeSwgZnJhbWUpOwogfQogCiB2b2lkIEVkaXRvcjo6c2hvd0ZvbnRQYW5lbCgpCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2VkaXRpbmcvd3gvRWRpdG9yV3guY3BwIGIvV2ViQ29yZS9lZGl0aW5nL3d4
L0VkaXRvcld4LmNwcAppbmRleCBhMmVjNjU0Li4wMWE0MTQxIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2VkaXRpbmcvd3gvRWRpdG9yV3guY3BwCisrKyBiL1dlYkNvcmUvZWRpdGluZy93eC9FZGl0b3JX
eC5jcHAKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBQYXNzUmVmUHRy
PENsaXBib2FyZD4gRWRpdG9yOjpuZXdHZW5lcmFsQ2xpcGJvYXJkKENsaXBib2FyZEFjY2Vzc1Bv
bGljeSBwb2xpY3ksIEZyYW1lKikgCiB7IAotICAgIHJldHVybiBDbGlwYm9hcmRXeDo6Y3JlYXRl
KHBvbGljeSwgdHJ1ZSk7CisgICAgcmV0dXJuIENsaXBib2FyZFd4OjpjcmVhdGUocG9saWN5LCBD
bGlwYm9hcmQ6OkNvcHlBbmRQYXN0ZSk7CiB9CiAKIHZvaWQgRWRpdG9yOjpzaG93Q29sb3JQYW5l
bCgpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvY2hyb21pdW0vRXZlbnRIYW5kbGVyQ2hyb21p
dW0uY3BwIGIvV2ViQ29yZS9wYWdlL2Nocm9taXVtL0V2ZW50SGFuZGxlckNocm9taXVtLmNwcApp
bmRleCBkZDZjZjk5Li5lMjhkMWU1IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvY2hyb21pdW0v
RXZlbnRIYW5kbGVyQ2hyb21pdW0uY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9jaHJvbWl1bS9FdmVu
dEhhbmRsZXJDaHJvbWl1bS5jcHAKQEAgLTEyOSw3ICsxMjksNyBAQCBib29sIEV2ZW50SGFuZGxl
cjo6ZXZlbnRBY3RpdmF0ZWRWaWV3KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQpIGNv
bnN0CiBQYXNzUmVmUHRyPENsaXBib2FyZD4gRXZlbnRIYW5kbGVyOjpjcmVhdGVEcmFnZ2luZ0Ns
aXBib2FyZCgpIGNvbnN0CiB7CiAgICAgUmVmUHRyPENocm9taXVtRGF0YU9iamVjdD4gZGF0YU9i
amVjdCA9IENocm9taXVtRGF0YU9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgcmV0dXJuIENsaXBib2Fy
ZENocm9taXVtOjpjcmVhdGUodHJ1ZSwgZGF0YU9iamVjdC5nZXQoKSwgQ2xpcGJvYXJkV3JpdGFi
bGUsIG1fZnJhbWUpOworICAgIHJldHVybiBDbGlwYm9hcmRDaHJvbWl1bTo6Y3JlYXRlKENsaXBi
b2FyZDo6RHJhZ0FuZERyb3AsIGRhdGFPYmplY3QuZ2V0KCksIENsaXBib2FyZFdyaXRhYmxlLCBt
X2ZyYW1lKTsKIH0KIAogdm9pZCBFdmVudEhhbmRsZXI6OmZvY3VzRG9jdW1lbnRWaWV3KCkKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9lZmwvRXZlbnRIYW5kbGVyRWZsLmNwcCBiL1dlYkNvcmUv
cGFnZS9lZmwvRXZlbnRIYW5kbGVyRWZsLmNwcAppbmRleCBhY2Y0MzQzLi4xZDRiZDEzIDEwMDY0
NAotLS0gYS9XZWJDb3JlL3BhZ2UvZWZsL0V2ZW50SGFuZGxlckVmbC5jcHAKKysrIGIvV2ViQ29y
ZS9wYWdlL2VmbC9FdmVudEhhbmRsZXJFZmwuY3BwCkBAIC0xMTAsNyArMTEwLDcgQEAgYm9vbCBF
dmVudEhhbmRsZXI6OnBhc3NXaGVlbEV2ZW50VG9XaWRnZXQoUGxhdGZvcm1XaGVlbEV2ZW50JiBl
dmVudCwgV2lkZ2V0KiB3aWQKIAogUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IEV2ZW50SGFuZGxlcjo6
Y3JlYXRlRHJhZ2dpbmdDbGlwYm9hcmQoKSBjb25zdAogewotICAgIHJldHVybiBDbGlwYm9hcmRF
Zmw6OmNyZWF0ZShDbGlwYm9hcmRXcml0YWJsZSwgdHJ1ZSk7CisgICAgcmV0dXJuIENsaXBib2Fy
ZEVmbDo6Y3JlYXRlKENsaXBib2FyZFdyaXRhYmxlLCBDbGlwYm9hcmQ6OkRyYWdBbmREcm9wKTsK
IH0KIAogYm9vbCBFdmVudEhhbmRsZXI6OnBhc3NNb3VzZVByZXNzRXZlbnRUb1N1YmZyYW1lKE1v
dXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIG1ldiwgRnJhbWUqIHN1YmZyYW1lKQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wYWdlL2d0ay9FdmVudEhhbmRsZXJHdGsuY3BwIGIvV2ViQ29yZS9wYWdl
L2d0ay9FdmVudEhhbmRsZXJHdGsuY3BwCmluZGV4IDQyOWFlYTYuLmE1NTVlNTYgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvcGFnZS9ndGsvRXZlbnRIYW5kbGVyR3RrLmNwcAorKysgYi9XZWJDb3JlL3Bh
Z2UvZ3RrL0V2ZW50SGFuZGxlckd0ay5jcHAKQEAgLTk2LDcgKzk2LDcgQEAgYm9vbCBFdmVudEhh
bmRsZXI6OnBhc3NXaGVlbEV2ZW50VG9XaWRnZXQoUGxhdGZvcm1XaGVlbEV2ZW50JiBldmVudCwg
V2lkZ2V0KiB3aWQKIAogUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IEV2ZW50SGFuZGxlcjo6Y3JlYXRl
RHJhZ2dpbmdDbGlwYm9hcmQoKSBjb25zdAogewotICAgIHJldHVybiBDbGlwYm9hcmRHdGs6OmNy
ZWF0ZShDbGlwYm9hcmRXcml0YWJsZSwgRGF0YU9iamVjdEd0azo6Y3JlYXRlKCksIHRydWUsIG1f
ZnJhbWUpOworICAgIHJldHVybiBDbGlwYm9hcmRHdGs6OmNyZWF0ZShDbGlwYm9hcmRXcml0YWJs
ZSwgRGF0YU9iamVjdEd0azo6Y3JlYXRlKCksIENsaXBib2FyZDo6RHJhZ0FuZERyb3AsIG1fZnJh
bWUpOwogfQogCiBib29sIEV2ZW50SGFuZGxlcjo6cGFzc01vdXNlUHJlc3NFdmVudFRvU3ViZnJh
bWUoTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgbWV2LCBGcmFtZSogc3ViZnJhbWUpCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvaGFpa3UvRXZlbnRIYW5kbGVySGFpa3UuY3BwIGIvV2Vi
Q29yZS9wYWdlL2hhaWt1L0V2ZW50SGFuZGxlckhhaWt1LmNwcAppbmRleCA0NTA0MTRkLi5jYzkw
YjhiIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvaGFpa3UvRXZlbnRIYW5kbGVySGFpa3UuY3Bw
CisrKyBiL1dlYkNvcmUvcGFnZS9oYWlrdS9FdmVudEhhbmRsZXJIYWlrdS5jcHAKQEAgLTEyMiw3
ICsxMjIsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6cGFzc1doZWVsRXZlbnRUb1dpZGdldChQbGF0
Zm9ybVdoZWVsRXZlbnQmIGV2ZW50LCBXaWRnZXQqIHdpZAogCiBQYXNzUmVmUHRyPENsaXBib2Fy
ZD4gRXZlbnRIYW5kbGVyOjpjcmVhdGVEcmFnZ2luZ0NsaXBib2FyZCgpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIENsaXBib2FyZEhhaWt1OjpjcmVhdGUoQ2xpcGJvYXJkV3JpdGFibGUsIHRydWUpOwor
ICAgIHJldHVybiBDbGlwYm9hcmRIYWlrdTo6Y3JlYXRlKENsaXBib2FyZFdyaXRhYmxlLCBDbGlw
Ym9hcmQ6OkRyYWdBbmREcm9wKTsKIH0KIAogYm9vbCBFdmVudEhhbmRsZXI6OnBhc3NNb3VzZVBy
ZXNzRXZlbnRUb1N1YmZyYW1lKE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIG1ldiwgRnJh
bWUqIHN1YmZyYW1lKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJN
YWMubW0gYi9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbQppbmRleCA1ODRmMzhm
Li41OTkxMDZjIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5t
bQorKysgYi9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbQpAQCAtNzEyLDcgKzcx
Miw3IEBAIFBhc3NSZWZQdHI8Q2xpcGJvYXJkPiBFdmVudEhhbmRsZXI6OmNyZWF0ZURyYWdnaW5n
Q2xpcGJvYXJkKCkgY29uc3QKICAgICAvLyBNdXN0IGJlIGRvbmUgYmVmb3JlIG9uZHJhZ3N0YXJ0
IGFkZHMgdHlwZXMgYW5kIGRhdGEgdG8gdGhlIHBib2FyZCwKICAgICAvLyBhbHNvIGRvbmUgZm9y
IHNlY3VyaXR5LCBhcyBpdCBlcmFzZXMgZGF0YSBmcm9tIHRoZSBsYXN0IGRyYWcKICAgICBbcGFz
dGVib2FyZCBkZWNsYXJlVHlwZXM6W05TQXJyYXkgYXJyYXldIG93bmVyOm5pbF07Ci0gICAgcmV0
dXJuIENsaXBib2FyZE1hYzo6Y3JlYXRlKHRydWUsIHBhc3RlYm9hcmQsIENsaXBib2FyZFdyaXRh
YmxlLCBtX2ZyYW1lKTsKKyAgICByZXR1cm4gQ2xpcGJvYXJkTWFjOjpjcmVhdGUoQ2xpcGJvYXJk
OjpEcmFnQW5kRHJvcCwgcGFzdGVib2FyZCwgQ2xpcGJvYXJkV3JpdGFibGUsIG1fZnJhbWUpOwog
fQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9xdC9FdmVudEhhbmRsZXJRdC5j
cHAgYi9XZWJDb3JlL3BhZ2UvcXQvRXZlbnRIYW5kbGVyUXQuY3BwCmluZGV4IDE4ZDliNzMuLjI4
ZWQxNzYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9xdC9FdmVudEhhbmRsZXJRdC5jcHAKKysr
IGIvV2ViQ29yZS9wYWdlL3F0L0V2ZW50SGFuZGxlclF0LmNwcApAQCAtMTEzLDcgKzExMyw3IEBA
IGJvb2wgRXZlbnRIYW5kbGVyOjpwYXNzV2hlZWxFdmVudFRvV2lkZ2V0KFBsYXRmb3JtV2hlZWxF
dmVudCYgZXZlbnQsIFdpZGdldCogd2lkCiAKIFBhc3NSZWZQdHI8Q2xpcGJvYXJkPiBFdmVudEhh
bmRsZXI6OmNyZWF0ZURyYWdnaW5nQ2xpcGJvYXJkKCkgY29uc3QKIHsKLSAgICByZXR1cm4gQ2xp
cGJvYXJkUXQ6OmNyZWF0ZShDbGlwYm9hcmRXcml0YWJsZSwgdHJ1ZSk7CisgICAgcmV0dXJuIENs
aXBib2FyZFF0OjpjcmVhdGUoQ2xpcGJvYXJkV3JpdGFibGUsIENsaXBib2FyZDo6RHJhZ0FuZERy
b3ApOwogfQogCiBib29sIEV2ZW50SGFuZGxlcjo6cGFzc01vdXNlUHJlc3NFdmVudFRvU3ViZnJh
bWUoTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgbWV2LCBGcmFtZSogc3ViZnJhbWUpCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2Uvd2luL0V2ZW50SGFuZGxlcldpbi5jcHAgYi9XZWJDb3Jl
L3BhZ2Uvd2luL0V2ZW50SGFuZGxlcldpbi5jcHAKaW5kZXggZWU0YjM2MC4uOTk4OGE1YyAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9wYWdlL3dpbi9FdmVudEhhbmRsZXJXaW4uY3BwCisrKyBiL1dlYkNv
cmUvcGFnZS93aW4vRXZlbnRIYW5kbGVyV2luLmNwcApAQCAtOTgsNyArOTgsNyBAQCBQYXNzUmVm
UHRyPENsaXBib2FyZD4gRXZlbnRIYW5kbGVyOjpjcmVhdGVEcmFnZ2luZ0NsaXBib2FyZCgpIGNv
bnN0CiAjZWxzZQogICAgIENPTVB0cjxXQ0RhdGFPYmplY3Q+IGRhdGFPYmplY3Q7CiAgICAgV0NE
YXRhT2JqZWN0OjpjcmVhdGVJbnN0YW5jZSgmZGF0YU9iamVjdCk7Ci0gICAgcmV0dXJuIENsaXBi
b2FyZFdpbjo6Y3JlYXRlKHRydWUsIGRhdGFPYmplY3QuZ2V0KCksIENsaXBib2FyZFdyaXRhYmxl
LCBtX2ZyYW1lKTsKKyAgICByZXR1cm4gQ2xpcGJvYXJkV2luOjpjcmVhdGUoQ2xpcGJvYXJkOjpE
cmFnQW5kRHJvcCwgZGF0YU9iamVjdC5nZXQoKSwgQ2xpcGJvYXJkV3JpdGFibGUsIG1fZnJhbWUp
OwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS93eC9FdmVudEhhbmRsZXJX
eC5jcHAgYi9XZWJDb3JlL3BhZ2Uvd3gvRXZlbnRIYW5kbGVyV3guY3BwCmluZGV4IGY0ZjY5MTQu
LmI0MzQ1ZTggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS93eC9FdmVudEhhbmRsZXJXeC5jcHAK
KysrIGIvV2ViQ29yZS9wYWdlL3d4L0V2ZW50SGFuZGxlcld4LmNwcApAQCAtMTE2LDcgKzExNiw3
IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpldmVudEFjdGl2YXRlZFZpZXcoY29uc3QgUGxhdGZvcm1N
b3VzZUV2ZW50JikgY29uc3QKIAogUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IEV2ZW50SGFuZGxlcjo6
Y3JlYXRlRHJhZ2dpbmdDbGlwYm9hcmQoKSBjb25zdCAKIHsKLSAgICByZXR1cm4gQ2xpcGJvYXJk
V3g6OmNyZWF0ZShDbGlwYm9hcmRXcml0YWJsZSwgdHJ1ZSk7CisgICAgcmV0dXJuIENsaXBib2Fy
ZFd4OjpjcmVhdGUoQ2xpcGJvYXJkV3JpdGFibGUsIENsaXBib2FyZDo6RHJhZ0FuZERyb3ApOwog
fQogCiB1bnNpZ25lZCBFdmVudEhhbmRsZXI6OmFjY2Vzc0tleU1vZGlmaWVycygpCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3BsYXRmb3JtL2FuZHJvaWQvQ2xpcGJvYXJkQW5kcm9pZC5jcHAgYi9XZWJD
b3JlL3BsYXRmb3JtL2FuZHJvaWQvQ2xpcGJvYXJkQW5kcm9pZC5jcHAKaW5kZXggZDliMmQ2OC4u
YTM3OTQ2YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9hbmRyb2lkL0NsaXBib2FyZEFu
ZHJvaWQuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vYW5kcm9pZC9DbGlwYm9hcmRBbmRyb2lk
LmNwcApAQCAtNDAsOCArNDAsOCBAQCBQYXNzUmVmUHRyPENsaXBib2FyZD4gQ2xpcGJvYXJkOjpj
cmVhdGUoQ2xpcGJvYXJkQWNjZXNzUG9saWN5LCBEcmFnRGF0YSosIEZyYW1lKgogICAgIHJldHVy
biAwOwogfQogCi1DbGlwYm9hcmRBbmRyb2lkOjpDbGlwYm9hcmRBbmRyb2lkKENsaXBib2FyZEFj
Y2Vzc1BvbGljeSBwb2xpY3ksIGJvb2wgaXNGb3JEcmFnZ2luZykKLSAgICA6IENsaXBib2FyZChw
b2xpY3ksIGlzRm9yRHJhZ2dpbmcpCitDbGlwYm9hcmRBbmRyb2lkOjpDbGlwYm9hcmRBbmRyb2lk
KENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIENsaXBib2FyZFR5cGUgY2xpcGJvYXJkVHlw
ZSkKKyAgICA6IENsaXBib2FyZChwb2xpY3ksIGNsaXBib2FyZFR5cGUpCiB7CiB9CiAKQEAgLTUx
LDEyICs1MSwxMiBAQCBDbGlwYm9hcmRBbmRyb2lkOjp+Q2xpcGJvYXJkQW5kcm9pZCgpCiAKIHZv
aWQgQ2xpcGJvYXJkQW5kcm9pZDo6Y2xlYXJEYXRhKGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgQVNT
RVJUKGlzRm9yRHJhZ2dpbmcoKSk7CisgICAgQVNTRVJUKGlzRm9yRHJhZ0FuZERyb3AoKSk7CiB9
CiAKIHZvaWQgQ2xpcGJvYXJkQW5kcm9pZDo6Y2xlYXJBbGxEYXRhKCkKIHsKLSAgICBBU1NFUlQo
aXNGb3JEcmFnZ2luZygpKTsKKyAgICBBU1NFUlQoaXNGb3JEcmFnQW5kRHJvcCgpKTsKIH0KIAog
U3RyaW5nIENsaXBib2FyZEFuZHJvaWQ6OmdldERhdGEoY29uc3QgU3RyaW5nJiwgYm9vbCYgc3Vj
Y2VzcykgY29uc3QKQEAgLTY3LDcgKzY3LDcgQEAgU3RyaW5nIENsaXBib2FyZEFuZHJvaWQ6Omdl
dERhdGEoY29uc3QgU3RyaW5nJiwgYm9vbCYgc3VjY2VzcykgY29uc3QKIAogYm9vbCBDbGlwYm9h
cmRBbmRyb2lkOjpzZXREYXRhKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAg
QVNTRVJUKGlzRm9yRHJhZ2dpbmcoKSk7CisgICAgQVNTRVJUKGlzRm9yRHJhZ0FuZERyb3AoKSk7
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2Fu
ZHJvaWQvQ2xpcGJvYXJkQW5kcm9pZC5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9hbmRyb2lkL0NsaXBi
b2FyZEFuZHJvaWQuaAppbmRleCAyM2JmZGY2Li44MDc2NTNiIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3BsYXRmb3JtL2FuZHJvaWQvQ2xpcGJvYXJkQW5kcm9pZC5oCisrKyBiL1dlYkNvcmUvcGxhdGZv
cm0vYW5kcm9pZC9DbGlwYm9hcmRBbmRyb2lkLmgKQEAgLTM3LDcgKzM3LDcgQEAgY2xhc3MgQ2Fj
aGVkSW1hZ2U7CiAKIGNsYXNzIENsaXBib2FyZEFuZHJvaWQgOiBwdWJsaWMgQ2xpcGJvYXJkLCBw
dWJsaWMgQ2FjaGVkUmVzb3VyY2VDbGllbnQgewogcHVibGljOgotICAgIENsaXBib2FyZEFuZHJv
aWQoQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSwgYm9vbCBpc0ZvckRyYWdnaW5nKTsKKyAg
ICBDbGlwYm9hcmRBbmRyb2lkKENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIENsaXBib2Fy
ZFR5cGUpOwogICAgIH5DbGlwYm9hcmRBbmRyb2lkKCk7CiAKICAgICB2b2lkIGNsZWFyRGF0YShj
b25zdCBTdHJpbmcmKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vYnJldy9DbGlwYm9h
cmRCcmV3LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vYnJldy9DbGlwYm9hcmRCcmV3LmNwcAppbmRl
eCA3MjBkNmE2Li4yZDE3YjliIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2JyZXcvQ2xp
cGJvYXJkQnJldy5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9icmV3L0NsaXBib2FyZEJyZXcu
Y3BwCkBAIC00MSw4ICs0MSw4IEBAIFBhc3NSZWZQdHI8Q2xpcGJvYXJkPiBDbGlwYm9hcmQ6OmNy
ZWF0ZShDbGlwYm9hcmRBY2Nlc3NQb2xpY3ksIERyYWdEYXRhKiwgRnJhbWUqCiAgICAgcmV0dXJu
IDA7CiB9CiAKLUNsaXBib2FyZEJyZXc6OkNsaXBib2FyZEJyZXcoQ2xpcGJvYXJkQWNjZXNzUG9s
aWN5IHBvbGljeSwgYm9vbCBpc0ZvckRyYWdnaW5nKQotICAgIDogQ2xpcGJvYXJkKHBvbGljeSwg
aXNGb3JEcmFnZ2luZykKK0NsaXBib2FyZEJyZXc6OkNsaXBib2FyZEJyZXcoQ2xpcGJvYXJkQWNj
ZXNzUG9saWN5IHBvbGljeSwgQ2xpcGJvYXJkVHlwZSBjbGlwYm9hcmRUeXBlKQorICAgIDogQ2xp
cGJvYXJkKGNsaXBib2FyZFR5cGUsIGlzRm9yRHJhZ2dpbmcpCiB7CiB9CiAKQEAgLTUyLDEyICs1
MiwxMiBAQCBDbGlwYm9hcmRCcmV3Ojp+Q2xpcGJvYXJkQnJldygpCiAKIHZvaWQgQ2xpcGJvYXJk
QnJldzo6Y2xlYXJEYXRhKGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgQVNTRVJUKGlzRm9yRHJhZ2dp
bmcoKSk7CisgICAgQVNTRVJUKGlzRm9yRHJhZ0FuZERyb3AoKSk7CiB9CiAKIHZvaWQgQ2xpcGJv
YXJkQnJldzo6Y2xlYXJBbGxEYXRhKCkKIHsKLSAgICBBU1NFUlQoaXNGb3JEcmFnZ2luZygpKTsK
KyAgICBBU1NFUlQoaXNGb3JEcmFnQW5kRHJvcCgpKTsKIH0KIAogU3RyaW5nIENsaXBib2FyZEJy
ZXc6OmdldERhdGEoY29uc3QgU3RyaW5nJiwgYm9vbCYgc3VjY2VzcykgY29uc3QKQEAgLTY4LDcg
KzY4LDcgQEAgU3RyaW5nIENsaXBib2FyZEJyZXc6OmdldERhdGEoY29uc3QgU3RyaW5nJiwgYm9v
bCYgc3VjY2VzcykgY29uc3QKIAogYm9vbCBDbGlwYm9hcmRCcmV3OjpzZXREYXRhKGNvbnN0IFN0
cmluZyYsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgQVNTRVJUKGlzRm9yRHJhZ2dpbmcoKSk7Cisg
ICAgQVNTRVJUKGlzRm9yRHJhZ0FuZERyb3AoKSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2JyZXcvQ2xpcGJvYXJkQnJldy5oIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9icmV3L0NsaXBib2FyZEJyZXcuaAppbmRleCBhOTY2ZGIxLi4xZmFmMDMxIDEw
MDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2JyZXcvQ2xpcGJvYXJkQnJldy5oCisrKyBiL1dl
YkNvcmUvcGxhdGZvcm0vYnJldy9DbGlwYm9hcmRCcmV3LmgKQEAgLTM2LDcgKzM2LDcgQEAgY2xh
c3MgQ2FjaGVkSW1hZ2U7CiAKIGNsYXNzIENsaXBib2FyZEJyZXcgOiBwdWJsaWMgQ2xpcGJvYXJk
LCBwdWJsaWMgQ2FjaGVkUmVzb3VyY2VDbGllbnQgewogcHVibGljOgotICAgIENsaXBib2FyZEJy
ZXcoQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSwgYm9vbCBpc0ZvckRyYWdnaW5nKTsKKyAg
ICBDbGlwYm9hcmRCcmV3KENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIENsaXBib2FyZFR5
cGUpOwogICAgIH5DbGlwYm9hcmRCcmV3KCk7CiAKICAgICB2b2lkIGNsZWFyRGF0YShjb25zdCBT
dHJpbmcmKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJk
Q2hyb21pdW0uY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1
bS5jcHAKaW5kZXggM2Q4MmFlYS4uYWQ0MmU5NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9y
bS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9j
aHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5jcHAKQEAgLTkzLDIzICs5MywyMyBAQCBzdGF0aWMg
Q2xpcGJvYXJkRGF0YVR5cGUgY2xpcGJvYXJkVHlwZUZyb21NSU1FVHlwZShjb25zdCBTdHJpbmcm
IHR5cGUpCiAKIFBhc3NSZWZQdHI8Q2xpcGJvYXJkPiBDbGlwYm9hcmQ6OmNyZWF0ZShDbGlwYm9h
cmRBY2Nlc3NQb2xpY3kgcG9saWN5LCBEcmFnRGF0YSogZHJhZ0RhdGEsIEZyYW1lKiBmcmFtZSkK
IHsKLSAgICByZXR1cm4gQ2xpcGJvYXJkQ2hyb21pdW06OmNyZWF0ZSh0cnVlLCBkcmFnRGF0YS0+
cGxhdGZvcm1EYXRhKCksIHBvbGljeSwgZnJhbWUpOworICAgIHJldHVybiBDbGlwYm9hcmRDaHJv
bWl1bTo6Y3JlYXRlKERyYWdBbmREcm9wLCBkcmFnRGF0YS0+cGxhdGZvcm1EYXRhKCksIHBvbGlj
eSwgZnJhbWUpOwogfQogCi1DbGlwYm9hcmRDaHJvbWl1bTo6Q2xpcGJvYXJkQ2hyb21pdW0oYm9v
bCBpc0ZvckRyYWdnaW5nLAorQ2xpcGJvYXJkQ2hyb21pdW06OkNsaXBib2FyZENocm9taXVtKENs
aXBib2FyZFR5cGUgY2xpcGJvYXJkVHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBQYXNzUmVmUHRyPENocm9taXVtRGF0YU9iamVjdD4gZGF0YU9iamVjdCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9s
aWN5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyYW1lKiBmcmFtZSkK
LSAgICA6IENsaXBib2FyZChwb2xpY3ksIGlzRm9yRHJhZ2dpbmcpCisgICAgOiBDbGlwYm9hcmQo
cG9saWN5LCBjbGlwYm9hcmRUeXBlKQogICAgICwgbV9kYXRhT2JqZWN0KGRhdGFPYmplY3QpCiAg
ICAgLCBtX2ZyYW1lKGZyYW1lKQogewogfQogCi1QYXNzUmVmUHRyPENsaXBib2FyZENocm9taXVt
PiBDbGlwYm9hcmRDaHJvbWl1bTo6Y3JlYXRlKGJvb2wgaXNGb3JEcmFnZ2luZywKK1Bhc3NSZWZQ
dHI8Q2xpcGJvYXJkQ2hyb21pdW0+IENsaXBib2FyZENocm9taXVtOjpjcmVhdGUoQ2xpcGJvYXJk
VHlwZSBjbGlwYm9hcmRUeXBlLAogICAgIFBhc3NSZWZQdHI8Q2hyb21pdW1EYXRhT2JqZWN0PiBk
YXRhT2JqZWN0LCBDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5LCBGcmFtZSogZnJhbWUpCiB7
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDbGlwYm9hcmRDaHJvbWl1bShpc0ZvckRyYWdnaW5n
LCBkYXRhT2JqZWN0LCBwb2xpY3ksIGZyYW1lKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBD
bGlwYm9hcmRDaHJvbWl1bShjbGlwYm9hcmRUeXBlLCBkYXRhT2JqZWN0LCBwb2xpY3ksIGZyYW1l
KSk7CiB9CiAKIHZvaWQgQ2xpcGJvYXJkQ2hyb21pdW06OmNsZWFyRGF0YShjb25zdCBTdHJpbmcm
IHR5cGUpCkBAIC0yMDMsNyArMjAzLDcgQEAgU3RyaW5nIENsaXBib2FyZENocm9taXVtOjpnZXRE
YXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgYm9vbCYgc3VjY2VzcykgY29uc3QKICAgICAgICAgcmV0
dXJuIG1fZGF0YU9iamVjdC0+ZG93bmxvYWRNZXRhZGF0YTsKICAgICAKICAgICBjYXNlIENsaXBi
b2FyZERhdGFUeXBlUGxhaW5UZXh0OgotICAgICAgICBpZiAoIWlzRm9yRHJhZ2dpbmcoKSkgewor
ICAgICAgICBpZiAoaXNGb3JDb3B5QW5kUGFzdGUoKSkgewogICAgICAgICAgICAgLy8gSWYgdGhp
cyBpc24ndCBmb3IgYSBkcmFnLCBpdCdzIGZvciBhIGN1dC9wYXN0ZSBldmVudCBoYW5kbGVyLgog
ICAgICAgICAgICAgLy8gSW4gdGhpcyBjYXNlLCB3ZSBuZWVkIHRvIGNoZWNrIHRoZSBjbGlwYm9h
cmQuCiAgICAgICAgICAgICBQYXN0ZWJvYXJkUHJpdmF0ZTo6Q2xpcGJvYXJkQnVmZmVyIGJ1ZmZl
ciA9IApAQCAtMjE5LDcgKzIxOSw3IEBAIFN0cmluZyBDbGlwYm9hcmRDaHJvbWl1bTo6Z2V0RGF0
YShjb25zdCBTdHJpbmcmIHR5cGUsIGJvb2wmIHN1Y2Nlc3MpIGNvbnN0CiAgICAgICAgIHJldHVy
biBtX2RhdGFPYmplY3QtPnBsYWluVGV4dDsKIAogICAgIGNhc2UgQ2xpcGJvYXJkRGF0YVR5cGVI
VE1MOgotICAgICAgICBpZiAoIWlzRm9yRHJhZ2dpbmcoKSkgeworICAgICAgICBpZiAoaXNGb3JD
b3B5QW5kUGFzdGUoKSkgewogICAgICAgICAgICAgLy8gSWYgdGhpcyBpc24ndCBmb3IgYSBkcmFn
LCBpdCdzIGZvciBhIGN1dC9wYXN0ZSBldmVudCBoYW5kbGVyLgogICAgICAgICAgICAgLy8gSW4g
dGhpcyBjYXNlLCB3ZSBuZWVkIHRvIGNoZWNrIHRoZSBjbGlwYm9hcmQuCiAgICAgICAgICAgICBQ
YXN0ZWJvYXJkUHJpdmF0ZTo6Q2xpcGJvYXJkQnVmZmVyIGJ1ZmZlciA9IApkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5oIGIvV2ViQ29yZS9w
bGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5oCmluZGV4IGE0MTUwZDAuLjE0ZjU5
ZTkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJkQ2hyb21p
dW0uaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9taXVtLmgK
QEAgLTQ2LDcgKzQ2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB+Q2xpcGJvYXJk
Q2hyb21pdW0oKSB7fQogCiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPENsaXBib2FyZENocm9t
aXVtPiBjcmVhdGUoCi0gICAgICAgICAgICBib29sIGlzRm9yRHJhZ2dpbmcsIFBhc3NSZWZQdHI8
Q2hyb21pdW1EYXRhT2JqZWN0PiwgQ2xpcGJvYXJkQWNjZXNzUG9saWN5LCBGcmFtZSopOworICAg
ICAgICAgICAgQ2xpcGJvYXJkVHlwZSwgUGFzc1JlZlB0cjxDaHJvbWl1bURhdGFPYmplY3Q+LCBD
bGlwYm9hcmRBY2Nlc3NQb2xpY3ksIEZyYW1lKik7CiAKICAgICAgICAgLy8gUmV0dXJucyB0aGUg
ZmlsZSBuYW1lIChub3QgaW5jbHVkaW5nIHRoZSBleHRlbnNpb24pLiBUaGlzIHJlbW92ZXMgYW55
CiAgICAgICAgIC8vIGludmFsaWQgZmlsZSBzeXN0ZW0gY2hhcmFjdGVycyBhcyB3ZWxsIGFzIG1h
a2luZyBzdXJlIHRoZQpAQCAtODAsNyArODAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIHZpcnR1YWwgYm9vbCBoYXNEYXRhKCk7CiAKICAgICBwcml2YXRlOgotICAgICAgICBDbGlw
Ym9hcmRDaHJvbWl1bShib29sLCBQYXNzUmVmUHRyPENocm9taXVtRGF0YU9iamVjdD4sIENsaXBi
b2FyZEFjY2Vzc1BvbGljeSwgRnJhbWUqKTsKKyAgICAgICAgQ2xpcGJvYXJkQ2hyb21pdW0oQ2xp
cGJvYXJkVHlwZSwgUGFzc1JlZlB0cjxDaHJvbWl1bURhdGFPYmplY3Q+LCBDbGlwYm9hcmRBY2Nl
c3NQb2xpY3ksIEZyYW1lKik7CiAKICAgICAgICAgdm9pZCByZXNldEZyb21DbGlwYm9hcmQoKTsK
ICAgICAgICAgdm9pZCBzZXREcmFnSW1hZ2UoQ2FjaGVkSW1hZ2UqLCBOb2RlKiwgY29uc3QgSW50
UG9pbnQmKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZWZsL0NsaXBib2FyZEVmbC5j
cHAgYi9XZWJDb3JlL3BsYXRmb3JtL2VmbC9DbGlwYm9hcmRFZmwuY3BwCmluZGV4IDZmYzgwZGMu
LmZjYzlmOGEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZWZsL0NsaXBib2FyZEVmbC5j
cHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvQ2xpcGJvYXJkRWZsLmNwcApAQCAtMjksNyAr
MjksNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IEVkaXRv
cjo6bmV3R2VuZXJhbENsaXBib2FyZChDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5LCBGcmFt
ZSopCiB7Ci0gICAgcmV0dXJuIENsaXBib2FyZEVmbDo6Y3JlYXRlKHBvbGljeSwgZmFsc2UpOwor
ICAgIHJldHVybiBDbGlwYm9hcmRFZmw6OmNyZWF0ZShwb2xpY3ksIENsaXBib2FyZDo6Q29weUFu
ZFBhc3RlKTsKIH0KIAogUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IENsaXBib2FyZDo6Y3JlYXRlKENs
aXBib2FyZEFjY2Vzc1BvbGljeSwgRHJhZ0RhdGEqLCBGcmFtZSopCkBAIC0zNyw4ICszNyw4IEBA
IFBhc3NSZWZQdHI8Q2xpcGJvYXJkPiBDbGlwYm9hcmQ6OmNyZWF0ZShDbGlwYm9hcmRBY2Nlc3NQ
b2xpY3ksIERyYWdEYXRhKiwgRnJhbWUqCiAgICAgcmV0dXJuIDA7CiB9CiAKLUNsaXBib2FyZEVm
bDo6Q2xpcGJvYXJkRWZsKENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIGJvb2wgZm9yRHJh
Z2dpbmcpCi0gICAgOiBDbGlwYm9hcmQocG9saWN5LCBmb3JEcmFnZ2luZykKK0NsaXBib2FyZEVm
bDo6Q2xpcGJvYXJkRWZsKENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIENsaXBib2FyZFR5
cGUgY2xpcGJvYXJkVHlwZSkKKyAgICA6IENsaXBib2FyZChjbGlwYm9hcmRUeXBlLCBmb3JEcmFn
Z2luZykKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
bGF0Zm9ybS9lZmwvQ2xpcGJvYXJkRWZsLmggYi9XZWJDb3JlL3BsYXRmb3JtL2VmbC9DbGlwYm9h
cmRFZmwuaAppbmRleCA1ZGIyZmVkLi43Nzg5OTE1IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRm
b3JtL2VmbC9DbGlwYm9hcmRFZmwuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2VmbC9DbGlwYm9h
cmRFZmwuaApAQCAtMjgsOSArMjgsOSBAQCBjbGFzcyBDYWNoZWRJbWFnZTsKIAogY2xhc3MgQ2xp
cGJvYXJkRWZsIDogcHVibGljIENsaXBib2FyZCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8Q2xpcGJvYXJkRWZsPiBjcmVhdGUoQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSwg
Ym9vbCBmb3JEcmFnZ2luZyA9IGZhbHNlKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPENsaXBib2Fy
ZEVmbD4gY3JlYXRlKENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIENsaXBib2FyZFR5cGUg
Y2xpcGJvYXJkVHlwZSA9IENvcHlBbmRQYXN0ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgQ2xpcGJvYXJkRWZsKHBvbGljeSwgZm9yRHJhZ2dpbmcpKTsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBDbGlwYm9hcmRFZmwocG9saWN5LCBjbGlwYm9hcmRUeXBlKSk7CiAg
ICAgfQogICAgIH5DbGlwYm9hcmRFZmwoKTsKIApAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIHdyaXRlUGxhaW5UZXh0KGNvbnN0IFdURjo6U3RyaW5nJik7CiAKIHBy
aXZhdGU6Ci0gICAgQ2xpcGJvYXJkRWZsKENsaXBib2FyZEFjY2Vzc1BvbGljeSwgYm9vbCk7Cisg
ICAgQ2xpcGJvYXJkRWZsKENsaXBib2FyZEFjY2Vzc1BvbGljeSwgQ2xpcGJvYXJkVHlwZSk7CiB9
OwogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9DbGlwYm9hcmRHdGsuY3Bw
IGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3RrLmNwcAppbmRleCAzMjdmMDY5Li40
YWViY2MwIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9DbGlwYm9hcmRHdGsuY3Bw
CisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0NsaXBib2FyZEd0ay5jcHAKQEAgLTM3LDI3ICsz
NywyNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWVudW0gQ2xpcGJvYXJkVHlwZSB7Ci0g
ICAgQ2xpcGJvYXJkVHlwZVRleHQsCi0gICAgQ2xpcGJvYXJkVHlwZU1hcmt1cCwKLSAgICBDbGlw
Ym9hcmRUeXBlVVJJTGlzdCwKLSAgICBDbGlwYm9hcmRUeXBlVVJMLAotICAgIENsaXBib2FyZFR5
cGVJbWFnZSwKLSAgICBDbGlwYm9hcmRUeXBlVW5rbm93bgorZW51bSBDbGlwYm9hcmREYXRhVHlw
ZSB7CisgICAgQ2xpcGJvYXJkRGF0YVR5cGVUZXh0LAorICAgIENsaXBib2FyZERhdGFUeXBlTWFy
a3VwLAorICAgIENsaXBib2FyZERhdGFUeXBlVVJJTGlzdCwKKyAgICBDbGlwYm9hcmREYXRhVHlw
ZVVSTCwKKyAgICBDbGlwYm9hcmREYXRhVHlwZUltYWdlLAorICAgIENsaXBib2FyZERhdGFUeXBl
VW5rbm93bgogfTsKIAogUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IEVkaXRvcjo6bmV3R2VuZXJhbENs
aXBib2FyZChDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5LCBGcmFtZSogZnJhbWUpCiB7Ci0g
ICAgcmV0dXJuIENsaXBib2FyZEd0azo6Y3JlYXRlKHBvbGljeSwgZ3RrX2NsaXBib2FyZF9nZXRf
Zm9yX2Rpc3BsYXkoZ2RrX2Rpc3BsYXlfZ2V0X2RlZmF1bHQoKSwgR0RLX1NFTEVDVElPTl9DTElQ
Qk9BUkQpLCBmYWxzZSwgZnJhbWUpOworICAgIHJldHVybiBDbGlwYm9hcmRHdGs6OmNyZWF0ZShw
b2xpY3ksIGd0a19jbGlwYm9hcmRfZ2V0X2Zvcl9kaXNwbGF5KGdka19kaXNwbGF5X2dldF9kZWZh
dWx0KCksIEdES19TRUxFQ1RJT05fQ0xJUEJPQVJEKSwgZnJhbWUpOwogfQogCiBQYXNzUmVmUHRy
PENsaXBib2FyZD4gQ2xpcGJvYXJkOjpjcmVhdGUoQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGlj
eSwgRHJhZ0RhdGEqIGRyYWdEYXRhLCBGcmFtZSogZnJhbWUpCiB7Ci0gICAgcmV0dXJuIENsaXBi
b2FyZEd0azo6Y3JlYXRlKHBvbGljeSwgZHJhZ0RhdGEtPnBsYXRmb3JtRGF0YSgpLCB0cnVlLCBm
cmFtZSk7CisgICAgcmV0dXJuIENsaXBib2FyZEd0azo6Y3JlYXRlKHBvbGljeSwgZHJhZ0RhdGEt
PnBsYXRmb3JtRGF0YSgpLCBEcmFnQW5kRHJvcCwgZnJhbWUpOwogfQogCiBDbGlwYm9hcmRHdGs6
OkNsaXBib2FyZEd0ayhDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5LCBHdGtDbGlwYm9hcmQq
IGNsaXBib2FyZCwgRnJhbWUqIGZyYW1lKQotICAgIDogQ2xpcGJvYXJkKHBvbGljeSwgZmFsc2Up
CisgICAgOiBDbGlwYm9hcmQocG9saWN5LCBDb3B5QW5kUGFzdGUpCiAgICAgLCBtX2RhdGFPYmpl
Y3QoRGF0YU9iamVjdEd0azo6Zm9yQ2xpcGJvYXJkKGNsaXBib2FyZCkpCiAgICAgLCBtX2NsaXBi
b2FyZChjbGlwYm9hcmQpCiAgICAgLCBtX2hlbHBlcihQYXN0ZWJvYXJkOjpnZW5lcmFsUGFzdGVi
b2FyZCgpLT5oZWxwZXIoKSkKQEAgLTY1LDggKzY1LDggQEAgQ2xpcGJvYXJkR3RrOjpDbGlwYm9h
cmRHdGsoQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSwgR3RrQ2xpcGJvYXJkKiBjbGlwYm9h
cmQKIHsKIH0KIAotQ2xpcGJvYXJkR3RrOjpDbGlwYm9hcmRHdGsoQ2xpcGJvYXJkQWNjZXNzUG9s
aWN5IHBvbGljeSwgUGFzc1JlZlB0cjxEYXRhT2JqZWN0R3RrPiBkYXRhT2JqZWN0LCBib29sIGZv
ckRyYWdnaW5nLCBGcmFtZSogZnJhbWUpCi0gICAgOiBDbGlwYm9hcmQocG9saWN5LCBmb3JEcmFn
Z2luZykKK0NsaXBib2FyZEd0azo6Q2xpcGJvYXJkR3RrKENsaXBib2FyZEFjY2Vzc1BvbGljeSBw
b2xpY3ksIFBhc3NSZWZQdHI8RGF0YU9iamVjdEd0az4gZGF0YU9iamVjdCwgQ2xpcGJvYXJkVHlw
ZSBjbGlwYm9hcmRUeXBlLCBGcmFtZSogZnJhbWUpCisgICAgOiBDbGlwYm9hcmQocG9saWN5LCBj
bGlwYm9hcmRUeXBlKQogICAgICwgbV9kYXRhT2JqZWN0KGRhdGFPYmplY3QpCiAgICAgLCBtX2Ns
aXBib2FyZCgwKQogICAgICwgbV9oZWxwZXIoUGFzdGVib2FyZDo6Z2VuZXJhbFBhc3RlYm9hcmQo
KS0+aGVscGVyKCkpCkBAIC03OCwyNyArNzgsMjcgQEAgQ2xpcGJvYXJkR3RrOjp+Q2xpcGJvYXJk
R3RrKCkKIHsKIH0KIAotc3RhdGljIENsaXBib2FyZFR5cGUgZGF0YU9iamVjdFR5cGVGcm9tSFRN
TENsaXBib2FyZFR5cGUoY29uc3QgU3RyaW5nJiByYXdUeXBlKQorc3RhdGljIENsaXBib2FyZERh
dGFUeXBlIGRhdGFPYmplY3RUeXBlRnJvbUhUTUxDbGlwYm9hcmRUeXBlKGNvbnN0IFN0cmluZyYg
cmF3VHlwZSkKIHsKICAgICBTdHJpbmcgdHlwZShyYXdUeXBlLnN0cmlwV2hpdGVTcGFjZSgpKTsK
IAogICAgIC8vIFR3byBzcGVjaWFsIGNhc2VzIGZvciBJRSBjb21wYXRpYmlsaXR5CiAgICAgaWYg
KHR5cGUgPT0gIlRleHQiKQotICAgICAgICByZXR1cm4gQ2xpcGJvYXJkVHlwZVRleHQ7CisgICAg
ICAgIHJldHVybiBDbGlwYm9hcmREYXRhVHlwZVRleHQ7CiAgICAgaWYgKHR5cGUgPT0gIlVSTCIp
Ci0gICAgICAgIHJldHVybiBDbGlwYm9hcmRUeXBlVVJMOworICAgICAgICByZXR1cm4gQ2xpcGJv
YXJkRGF0YVR5cGVVUkw7CiAKICAgICAvLyBGcm9tIHRoZSBNYWMgcG9ydDogSWdub3JlIGFueSB0
cmFpbGluZyBjaGFyc2V0IC0gSlMgc3RyaW5ncyBhcmUKICAgICAvLyBVbmljb2RlLCB3aGljaCBl
bmNhcHN1bGF0ZXMgdGhlIGNoYXJzZXQgaXNzdWUuCiAgICAgaWYgKHR5cGUgPT0gInRleHQvcGxh
aW4iIHx8IHR5cGUuc3RhcnRzV2l0aCgidGV4dC9wbGFpbjsiKSkKLSAgICAgICAgcmV0dXJuIENs
aXBib2FyZFR5cGVUZXh0OworICAgICAgICByZXR1cm4gQ2xpcGJvYXJkRGF0YVR5cGVUZXh0Owog
ICAgIGlmICh0eXBlID09ICJ0ZXh0L2h0bWwiIHx8IHR5cGUuc3RhcnRzV2l0aCgidGV4dC9odG1s
OyIpKQotICAgICAgICByZXR1cm4gQ2xpcGJvYXJkVHlwZU1hcmt1cDsKKyAgICAgICAgcmV0dXJu
IENsaXBib2FyZERhdGFUeXBlTWFya3VwOwogICAgIGlmICh0eXBlID09ICJGaWxlcyIgfHwgdHlw
ZSA9PSAidGV4dC91cmktbGlzdCIgfHwgdHlwZS5zdGFydHNXaXRoKCJ0ZXh0L3VyaS1saXN0OyIp
KQotICAgICAgICByZXR1cm4gQ2xpcGJvYXJkVHlwZVVSSUxpc3Q7CisgICAgICAgIHJldHVybiBD
bGlwYm9hcmREYXRhVHlwZVVSSUxpc3Q7CiAKICAgICAvLyBOb3QgYSBrbm93biB0eXBlLCBzbyBq
dXN0IGRlZmF1bHQgdG8gdXNpbmcgdGhlIHRleHQgcG9ydGlvbi4KLSAgICByZXR1cm4gQ2xpcGJv
YXJkVHlwZVVua25vd247CisgICAgcmV0dXJuIENsaXBib2FyZERhdGFUeXBlVW5rbm93bjsKIH0K
IAogdm9pZCBDbGlwYm9hcmRHdGs6OmNsZWFyRGF0YShjb25zdCBTdHJpbmcmIHR5cGVTdHJpbmcp
CkBAIC0xMDYsMTkgKzEwNiwxOSBAQCB2b2lkIENsaXBib2FyZEd0azo6Y2xlYXJEYXRhKGNvbnN0
IFN0cmluZyYgdHlwZVN0cmluZykKICAgICBpZiAocG9saWN5KCkgIT0gQ2xpcGJvYXJkV3JpdGFi
bGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIENsaXBib2FyZFR5cGUgdHlwZSA9IGRhdGFPYmpl
Y3RUeXBlRnJvbUhUTUxDbGlwYm9hcmRUeXBlKHR5cGVTdHJpbmcpOworICAgIENsaXBib2FyZERh
dGFUeXBlIHR5cGUgPSBkYXRhT2JqZWN0VHlwZUZyb21IVE1MQ2xpcGJvYXJkVHlwZSh0eXBlU3Ry
aW5nKTsKICAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIENsaXBib2FyZFR5cGVVUklMaXN0
OgotICAgIGNhc2UgQ2xpcGJvYXJkVHlwZVVSTDoKKyAgICBjYXNlIENsaXBib2FyZERhdGFUeXBl
VVJJTGlzdDoKKyAgICBjYXNlIENsaXBib2FyZERhdGFUeXBlVVJMOgogICAgICAgICBtX2RhdGFP
YmplY3QtPmNsZWFyVVJJTGlzdCgpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIENsaXBib2Fy
ZFR5cGVNYXJrdXA6CisgICAgY2FzZSBDbGlwYm9hcmREYXRhVHlwZU1hcmt1cDoKICAgICAgICAg
bV9kYXRhT2JqZWN0LT5jbGVhck1hcmt1cCgpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIENs
aXBib2FyZFR5cGVUZXh0OgorICAgIGNhc2UgQ2xpcGJvYXJkRGF0YVR5cGVUZXh0OgogICAgICAg
ICBtX2RhdGFPYmplY3QtPmNsZWFyVGV4dCgpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIENs
aXBib2FyZFR5cGVVbmtub3duOgorICAgIGNhc2UgQ2xpcGJvYXJkRGF0YVR5cGVVbmtub3duOgog
ICAgIGRlZmF1bHQ6CiAgICAgICAgIG1fZGF0YU9iamVjdC0+Y2xlYXIoKTsKICAgICB9CkBAIC0x
NjIsMjkgKzE2MiwyOSBAQCBTdHJpbmcgQ2xpcGJvYXJkR3RrOjpnZXREYXRhKGNvbnN0IFN0cmlu
ZyYgdHlwZVN0cmluZywgYm9vbCYgc3VjY2VzcykgY29uc3QKICAgICBpZiAobV9jbGlwYm9hcmQp
CiAgICAgICAgIG1faGVscGVyLT5nZXRDbGlwYm9hcmRDb250ZW50cyhtX2NsaXBib2FyZCk7CiAK
LSAgICBDbGlwYm9hcmRUeXBlIHR5cGUgPSBkYXRhT2JqZWN0VHlwZUZyb21IVE1MQ2xpcGJvYXJk
VHlwZSh0eXBlU3RyaW5nKTsKLSAgICBpZiAodHlwZSA9PSBDbGlwYm9hcmRUeXBlVVJJTGlzdCkg
eworICAgIENsaXBib2FyZERhdGFUeXBlIHR5cGUgPSBkYXRhT2JqZWN0VHlwZUZyb21IVE1MQ2xp
cGJvYXJkVHlwZSh0eXBlU3RyaW5nKTsKKyAgICBpZiAodHlwZSA9PSBDbGlwYm9hcmREYXRhVHlw
ZVVSSUxpc3QpIHsKICAgICAgICAgaWYgKCFtX2RhdGFPYmplY3QtPmhhc1VSSUxpc3QoKSkKICAg
ICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICAgICAgc3VjY2VzcyA9IHRydWU7CiAgICAg
ICAgIHJldHVybiBqb2luVVJJTGlzdChtX2RhdGFPYmplY3QtPnVyaUxpc3QoKSk7CiAgICAgfQog
Ci0gICAgaWYgKHR5cGUgPT0gQ2xpcGJvYXJkVHlwZVVSTCkgeworICAgIGlmICh0eXBlID09IENs
aXBib2FyZERhdGFUeXBlVVJMKSB7CiAgICAgICAgIGlmICghbV9kYXRhT2JqZWN0LT5oYXNVUkwo
KSkKICAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICAgICAgc3VjY2VzcyA9IHRydWU7
CiAgICAgICAgIHJldHVybiBtX2RhdGFPYmplY3QtPnVybCgpOwogICAgIH0KIAotICAgIGlmICh0
eXBlID09IENsaXBib2FyZFR5cGVNYXJrdXApIHsKKyAgICBpZiAodHlwZSA9PSBDbGlwYm9hcmRE
YXRhVHlwZU1hcmt1cCkgewogICAgICAgICBpZiAoIW1fZGF0YU9iamVjdC0+aGFzTWFya3VwKCkp
CiAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlOwog
ICAgICAgICByZXR1cm4gbV9kYXRhT2JqZWN0LT5tYXJrdXAoKTsKICAgICB9CiAKLSAgICBpZiAo
dHlwZSA9PSBDbGlwYm9hcmRUeXBlVGV4dCkgeworICAgIGlmICh0eXBlID09IENsaXBib2FyZERh
dGFUeXBlVGV4dCkgewogICAgICAgICBpZiAoIW1fZGF0YU9iamVjdC0+aGFzVGV4dCgpKQogICAg
ICAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICAgICAgc3VjY2VzcyA9IHRydWU7CkBA
IC0yMDAsOCArMjAwLDggQEAgYm9vbCBDbGlwYm9hcmRHdGs6OnNldERhdGEoY29uc3QgU3RyaW5n
JiB0eXBlU3RyaW5nLCBjb25zdCBTdHJpbmcmIGRhdGEpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIGJvb2wgc3VjY2VzcyA9IGZhbHNlOwotICAgIENsaXBib2FyZFR5cGUgdHlwZSA9IGRh
dGFPYmplY3RUeXBlRnJvbUhUTUxDbGlwYm9hcmRUeXBlKHR5cGVTdHJpbmcpOwotICAgIGlmICh0
eXBlID09IENsaXBib2FyZFR5cGVVUklMaXN0IHx8IHR5cGUgPT0gQ2xpcGJvYXJkVHlwZVVSTCkg
eworICAgIENsaXBib2FyZERhdGFUeXBlIHR5cGUgPSBkYXRhT2JqZWN0VHlwZUZyb21IVE1MQ2xp
cGJvYXJkVHlwZSh0eXBlU3RyaW5nKTsKKyAgICBpZiAodHlwZSA9PSBDbGlwYm9hcmREYXRhVHlw
ZVVSSUxpc3QgfHwgdHlwZSA9PSBDbGlwYm9hcmREYXRhVHlwZVVSTCkgewogICAgICAgICBWZWN0
b3I8S1VSTD4gdXJpTGlzdDsKICAgICAgICAgZ2NoYXIqKiB1cmlzID0gZ191cmlfbGlzdF9leHRy
YWN0X3VyaXMoZGF0YS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgaWYgKHVyaXMpIHsKQEAgLTIx
NCwxMCArMjE0LDEwIEBAIGJvb2wgQ2xpcGJvYXJkR3RrOjpzZXREYXRhKGNvbnN0IFN0cmluZyYg
dHlwZVN0cmluZywgY29uc3QgU3RyaW5nJiBkYXRhKQogICAgICAgICAgICAgbV9kYXRhT2JqZWN0
LT5zZXRVUklMaXN0KHVyaUxpc3QpOwogICAgICAgICAgICAgc3VjY2VzcyA9IHRydWU7CiAgICAg
ICAgIH0KLSAgICB9IGVsc2UgaWYgKHR5cGUgPT0gQ2xpcGJvYXJkVHlwZU1hcmt1cCkgeworICAg
IH0gZWxzZSBpZiAodHlwZSA9PSBDbGlwYm9hcmREYXRhVHlwZU1hcmt1cCkgewogICAgICAgICBt
X2RhdGFPYmplY3QtPnNldE1hcmt1cChkYXRhKTsKICAgICAgICAgc3VjY2VzcyA9IHRydWU7Ci0g
ICAgfSBlbHNlIGlmICh0eXBlID09IENsaXBib2FyZFR5cGVUZXh0KSB7CisgICAgfSBlbHNlIGlm
ICh0eXBlID09IENsaXBib2FyZERhdGFUeXBlVGV4dCkgewogICAgICAgICBtX2RhdGFPYmplY3Qt
PnNldFRleHQoZGF0YSk7CiAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlOwogICAgIH0KZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0NsaXBib2FyZEd0ay5oIGIvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvQ2xpcGJvYXJkR3RrLmgKaW5kZXggZjBhZjMxOC4uZTE0YTU4MyAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3RrLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvQ2xpcGJvYXJkR3RrLmgKQEAgLTQwLDE0ICs0MCwxNCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgLy8gQ3JlYXRlZCBmcm9tIHRoZSBFdmVudEhhbmRsZXJHdGsgdG8gYmUgdXNlZCBi
eSB0aGUgZG9tCiAgICAgY2xhc3MgQ2xpcGJvYXJkR3RrIDogcHVibGljIENsaXBib2FyZCwgcHVi
bGljIENhY2hlZFJlc291cmNlQ2xpZW50IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPENsaXBib2FyZEd0az4gY3JlYXRlKENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xp
Y3ksIEd0a0NsaXBib2FyZCogY2xpcGJvYXJkLCBib29sIGlzRm9yRHJhZ2dpbmcsIEZyYW1lKiBm
cmFtZSkKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q2xpcGJvYXJkR3RrPiBjcmVhdGUoQ2xp
cGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSwgR3RrQ2xpcGJvYXJkKiBjbGlwYm9hcmQsIEZyYW1l
KiBmcmFtZSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDbGlw
Ym9hcmRHdGsocG9saWN5LCBjbGlwYm9hcmQsIGZyYW1lKSk7CiAgICAgICAgIH0KIAotICAgICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxDbGlwYm9hcmRHdGs+IGNyZWF0ZShDbGlwYm9hcmRBY2Nlc3NQ
b2xpY3kgcG9saWN5LCBQYXNzUmVmUHRyPERhdGFPYmplY3RHdGs+IGRhdGFPYmplY3QsIGJvb2wg
aXNGb3JEcmFnZ2luZywgRnJhbWUqIGZyYW1lKQorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxD
bGlwYm9hcmRHdGs+IGNyZWF0ZShDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5LCBQYXNzUmVm
UHRyPERhdGFPYmplY3RHdGs+IGRhdGFPYmplY3QsIENsaXBib2FyZFR5cGUgY2xpcGJvYXJkVHlw
ZSwgRnJhbWUqIGZyYW1lKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IENsaXBib2FyZEd0ayhwb2xpY3ksIGRhdGFPYmplY3QsIGlzRm9yRHJhZ2dpbmcsIGZyYW1l
KSk7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENsaXBib2FyZEd0ayhwb2xpY3ks
IGRhdGFPYmplY3QsIGNsaXBib2FyZFR5cGUsIGZyYW1lKSk7CiAgICAgICAgIH0KICAgICAgICAg
dmlydHVhbCB+Q2xpcGJvYXJkR3RrKCk7CiAKQEAgLTc4LDcgKzc4LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiAgICAgcHJpdmF0ZToKICAgICAgICAgQ2xpcGJvYXJkR3RrKENsaXBib2FyZEFj
Y2Vzc1BvbGljeSwgR3RrQ2xpcGJvYXJkKiwgRnJhbWUqKTsKLSAgICAgICAgQ2xpcGJvYXJkR3Rr
KENsaXBib2FyZEFjY2Vzc1BvbGljeSwgUGFzc1JlZlB0cjxEYXRhT2JqZWN0R3RrPiwgYm9vbCwg
RnJhbWUqKTsKKyAgICAgICAgQ2xpcGJvYXJkR3RrKENsaXBib2FyZEFjY2Vzc1BvbGljeSwgUGFz
c1JlZlB0cjxEYXRhT2JqZWN0R3RrPiwgQ2xpcGJvYXJkVHlwZSwgRnJhbWUqKTsKIAogICAgICAg
ICBSZWZQdHI8RGF0YU9iamVjdEd0az4gbV9kYXRhT2JqZWN0OwogICAgICAgICBHdGtDbGlwYm9h
cmQqIG1fY2xpcGJvYXJkOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9oYWlrdS9DbGlw
Ym9hcmRIYWlrdS5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2hhaWt1L0NsaXBib2FyZEhhaWt1LmNw
cAppbmRleCBkYTI0MmMxLi5kNDZmYTZkIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2hh
aWt1L0NsaXBib2FyZEhhaWt1LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2hhaWt1L0NsaXBi
b2FyZEhhaWt1LmNwcApAQCAtNDQsMTEgKzQ0LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
UGFzc1JlZlB0cjxDbGlwYm9hcmQ+IENsaXBib2FyZDo6Y3JlYXRlKENsaXBib2FyZEFjY2Vzc1Bv
bGljeSBwb2xpY3ksIERyYWdEYXRhKiwgRnJhbWUqKQogewotICAgIHJldHVybiBDbGlwYm9hcmRI
YWlrdTo6Y3JlYXRlKHBvbGljeSwgdHJ1ZSk7CisgICAgcmV0dXJuIENsaXBib2FyZEhhaWt1Ojpj
cmVhdGUocG9saWN5LCBEcmFnQW5kRHJvcCk7CiB9CiAKLUNsaXBib2FyZEhhaWt1OjpDbGlwYm9h
cmRIYWlrdShDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5LCBib29sIGZvckRyYWdnaW5nKQot
ICAgIDogQ2xpcGJvYXJkKHBvbGljeSwgZm9yRHJhZ2dpbmcpCitDbGlwYm9hcmRIYWlrdTo6Q2xp
cGJvYXJkSGFpa3UoQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSwgQ2xpcGJvYXJkVHlwZSBj
bGlwYm9hcmRUeXBlKQorICAgIDogQ2xpcGJvYXJkKHBvbGljeSwgY2xpcGJvYXJkVHlwZSkKIHsK
IH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9oYWlrdS9DbGlwYm9hcmRIYWlrdS5o
IGIvV2ViQ29yZS9wbGF0Zm9ybS9oYWlrdS9DbGlwYm9hcmRIYWlrdS5oCmluZGV4IDM3ZmZlNWMu
Ljg5ZGM3YmQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vaGFpa3UvQ2xpcGJvYXJkSGFp
a3UuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2hhaWt1L0NsaXBib2FyZEhhaWt1LmgKQEAgLTM2
LDkgKzM2LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIC8vIFN0YXRlIGF2YWlsYWJsZSBk
dXJpbmcgSUUncyBldmVudHMgZm9yIGRyYWcgYW5kIGRyb3AgYW5kIGNvcHkvcGFzdGUuCiAgICAg
Y2xhc3MgQ2xpcGJvYXJkSGFpa3UgOiBwdWJsaWMgQ2xpcGJvYXJkIHsKICAgICBwdWJsaWM6Ci0g
ICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPENsaXBib2FyZEhhaWt1PiBjcmVhdGUoQ2xpcGJvYXJk
QWNjZXNzUG9saWN5IHBvbGljeSwgYm9vbCBmb3JEcmFnZ2luZykKKyAgICAgICAgc3RhdGljIFBh
c3NSZWZQdHI8Q2xpcGJvYXJkSGFpa3U+IGNyZWF0ZShDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9s
aWN5LCBDbGlwYm9hcmRUeXBlIGNsaXBib2FyZFR5cGUpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgQ2xpcGJvYXJkSGFpa3UocG9saWN5LCBmb3JEcmFnZ2luZykp
OworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDbGlwYm9hcmRIYWlrdShwb2xpY3ks
IGNsaXBib2FyZFR5cGUpKTsKICAgICAgICAgfQogICAgICAgICB+Q2xpcGJvYXJkSGFpa3UoKSB7
IH0KIApAQCAtNjYsNyArNjYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1
YWwgYm9vbCBoYXNEYXRhKCk7CiAKICAgICBwcml2YXRlOgotICAgICAgICBDbGlwYm9hcmRIYWlr
dShDbGlwYm9hcmRBY2Nlc3NQb2xpY3ksIGJvb2wgZm9yRHJhZ2dpbmcpOworICAgICAgICBDbGlw
Ym9hcmRIYWlrdShDbGlwYm9hcmRBY2Nlc3NQb2xpY3ksIENsaXBib2FyZFR5cGUpOwogICAgIH07
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL0NsaXBib2FyZE1hYy5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQ2xpcGJvYXJkTWFjLmgK
aW5kZXggYWRkZTA5Yy4uZDdhZTg4NyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
Q2xpcGJvYXJkTWFjLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQ2xpcGJvYXJkTWFjLmgK
QEAgLTQ1LDkgKzQ1LDkgQEAgY2xhc3MgRmlsZUxpc3Q7CiAKIGNsYXNzIENsaXBib2FyZE1hYyA6
IHB1YmxpYyBDbGlwYm9hcmQsIHB1YmxpYyBDYWNoZWRSZXNvdXJjZUNsaWVudCB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8Q2xpcGJvYXJkTWFjPiBjcmVhdGUoYm9vbCBmb3JEcmFn
Z2luZywgTlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkLCBDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9s
aWN5LCBGcmFtZSogZnJhbWUpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8Q2xpcGJvYXJkTWFjPiBj
cmVhdGUoQ2xpcGJvYXJkVHlwZSBjbGlwYm9hcmRUeXBlLCBOU1Bhc3RlYm9hcmQgKnBhc3RlYm9h
cmQsIENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIEZyYW1lKiBmcmFtZSkKICAgICB7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ2xpcGJvYXJkTWFjKGZvckRyYWdnaW5nLCBwYXN0
ZWJvYXJkLCBwb2xpY3ksIGZyYW1lKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ2xp
cGJvYXJkTWFjKGNsaXBib2FyZFR5cGUsIHBhc3RlYm9hcmQsIHBvbGljeSwgZnJhbWUpKTsKICAg
ICB9CiAKICAgICB2aXJ0dWFsIH5DbGlwYm9hcmRNYWMoKTsKQEAgLTc5LDcgKzc5LDcgQEAgcHVi
bGljOgogICAgIE5TUGFzdGVib2FyZCAqcGFzdGVib2FyZCgpIHsgcmV0dXJuIG1fcGFzdGVib2Fy
ZC5nZXQoKTsgfQogCiBwcml2YXRlOgotICAgIENsaXBib2FyZE1hYyhib29sIGZvckRyYWdnaW5n
LCBOU1Bhc3RlYm9hcmQgKiwgQ2xpcGJvYXJkQWNjZXNzUG9saWN5LCBGcmFtZSopOworICAgIENs
aXBib2FyZE1hYyhDbGlwYm9hcmRUeXBlIGNsaXBib2FyZFR5cGUsIE5TUGFzdGVib2FyZCAqLCBD
bGlwYm9hcmRBY2Nlc3NQb2xpY3ksIEZyYW1lKik7CiAKICAgICB2b2lkIHNldERyYWdJbWFnZShD
YWNoZWRJbWFnZSosIE5vZGUqLCBjb25zdCBJbnRQb2ludCYpOwogCmRpZmYgLS1naXQgYS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9DbGlwYm9hcmRNYWMubW0gYi9XZWJDb3JlL3BsYXRmb3JtL21hYy9D
bGlwYm9hcmRNYWMubW0KaW5kZXggNzRhOTNiNi4uYjMwODBkMyAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvQ2xpcGJvYXJkTWFjLm1tCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L0NsaXBib2FyZE1hYy5tbQpAQCAtNTAsMTEgKzUwLDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IENsaXBib2FyZDo6Y3JlYXRlKENsaXBib2FyZEFjY2Vz
c1BvbGljeSBwb2xpY3ksIERyYWdEYXRhKiBkcmFnRGF0YSwgRnJhbWUqIGZyYW1lKQogewotICAg
IHJldHVybiBDbGlwYm9hcmRNYWM6OmNyZWF0ZSh0cnVlLCBbZHJhZ0RhdGEtPnBsYXRmb3JtRGF0
YSgpIGRyYWdnaW5nUGFzdGVib2FyZF0sIHBvbGljeSwgZnJhbWUpOworICAgIHJldHVybiBDbGlw
Ym9hcmRNYWM6OmNyZWF0ZShEcmFnQW5kRHJvcCwgW2RyYWdEYXRhLT5wbGF0Zm9ybURhdGEoKSBk
cmFnZ2luZ1Bhc3RlYm9hcmRdLCBwb2xpY3ksIGZyYW1lKTsKIH0KIAotQ2xpcGJvYXJkTWFjOjpD
bGlwYm9hcmRNYWMoYm9vbCBmb3JEcmFnZ2luZywgTlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkLCBD
bGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5LCBGcmFtZSAqZnJhbWUpCi0gICAgOiBDbGlwYm9h
cmQocG9saWN5LCBmb3JEcmFnZ2luZykKK0NsaXBib2FyZE1hYzo6Q2xpcGJvYXJkTWFjKENsaXBi
b2FyZFR5cGUgY2xpcGJvYXJkVHlwZSwgTlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkLCBDbGlwYm9h
cmRBY2Nlc3NQb2xpY3kgcG9saWN5LCBGcmFtZSAqZnJhbWUpCisgICAgOiBDbGlwYm9hcmQocG9s
aWN5LCBjbGlwYm9hcmRUeXBlKQogICAgICwgbV9wYXN0ZWJvYXJkKHBhc3RlYm9hcmQpCiAgICAg
LCBtX2ZyYW1lKGZyYW1lKQogewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9xdC9DbGlw
Ym9hcmRRdC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL3F0L0NsaXBib2FyZFF0LmNwcAppbmRleCA2
Y2JkZTBjLi41YjY2ODJiIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3F0L0NsaXBib2Fy
ZFF0LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL3F0L0NsaXBib2FyZFF0LmNwcApAQCAtNzUs
MTUgKzc1LDE1IEBAIFBhc3NSZWZQdHI8Q2xpcGJvYXJkPiBDbGlwYm9hcmQ6OmNyZWF0ZShDbGlw
Ym9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5LCBEcmFnRGF0YSoKIH0KIAogQ2xpcGJvYXJkUXQ6OkNs
aXBib2FyZFF0KENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIGNvbnN0IFFNaW1lRGF0YSog
cmVhZGFibGVDbGlwYm9hcmQpCi0gICAgOiBDbGlwYm9hcmQocG9saWN5LCB0cnVlKQorICAgIDog
Q2xpcGJvYXJkKHBvbGljeSwgRHJhZ0FuZERyb3ApCiAgICAgLCBtX3JlYWRhYmxlRGF0YShyZWFk
YWJsZUNsaXBib2FyZCkKICAgICAsIG1fd3JpdGFibGVEYXRhKDApCiB7CiAgICAgUV9BU1NFUlQo
cG9saWN5ID09IENsaXBib2FyZFJlYWRhYmxlIHx8IHBvbGljeSA9PSBDbGlwYm9hcmRUeXBlc1Jl
YWRhYmxlKTsKIH0KIAotQ2xpcGJvYXJkUXQ6OkNsaXBib2FyZFF0KENsaXBib2FyZEFjY2Vzc1Bv
bGljeSBwb2xpY3ksIGJvb2wgZm9yRHJhZ2dpbmcpCi0gICAgOiBDbGlwYm9hcmQocG9saWN5LCBm
b3JEcmFnZ2luZykKK0NsaXBib2FyZFF0OjpDbGlwYm9hcmRRdChDbGlwYm9hcmRBY2Nlc3NQb2xp
Y3kgcG9saWN5LCBDbGlwYm9hcmRUeXBlIGNsaXBib2FyZFR5cGUpCisgICAgOiBDbGlwYm9hcmQo
cG9saWN5LCBjbGlwYm9hcmRUeXBlKQogICAgICwgbV9yZWFkYWJsZURhdGEoMCkKICAgICAsIG1f
d3JpdGFibGVEYXRhKDApCiB7CkBAIC05OSw3ICs5OSw3IEBAIENsaXBib2FyZFF0OjpDbGlwYm9h
cmRRdChDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5LCBib29sIGZvckRyYWdnaW5nKQogCiBD
bGlwYm9hcmRRdDo6fkNsaXBib2FyZFF0KCkKIHsKLSAgICBpZiAobV93cml0YWJsZURhdGEgJiYg
IWlzRm9yRHJhZ2dpbmcoKSkKKyAgICBpZiAobV93cml0YWJsZURhdGEgJiYgaXNGb3JDb3B5QW5k
UGFzdGUoKSkKICAgICAgICAgbV93cml0YWJsZURhdGEgPSAwOwogICAgIGVsc2UKICAgICAgICAg
ZGVsZXRlIG1fd3JpdGFibGVEYXRhOwpAQCAtMTE0LDEzICsxMTQsMTMgQEAgdm9pZCBDbGlwYm9h
cmRRdDo6Y2xlYXJEYXRhKGNvbnN0IFN0cmluZyYgdHlwZSkKICAgICBpZiAobV93cml0YWJsZURh
dGEpIHsKICAgICAgICAgbV93cml0YWJsZURhdGEtPnJlbW92ZUZvcm1hdCh0eXBlKTsKICAgICAg
ICAgaWYgKG1fd3JpdGFibGVEYXRhLT5mb3JtYXRzKCkuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAg
ICBpZiAoaXNGb3JEcmFnZ2luZygpKQorICAgICAgICAgICAgaWYgKGlzRm9yRHJhZ0FuZERyb3Ao
KSkKICAgICAgICAgICAgICAgICBkZWxldGUgbV93cml0YWJsZURhdGE7CiAgICAgICAgICAgICBt
X3dyaXRhYmxlRGF0YSA9IDA7CiAgICAgICAgIH0KICAgICB9CiAjaWZuZGVmIFFUX05PX0NMSVBC
T0FSRAotICAgIGlmICghaXNGb3JEcmFnZ2luZygpKQorICAgIGlmIChpc0ZvckNvcHlBbmRQYXN0
ZSgpKQogICAgICAgICBRQXBwbGljYXRpb246OmNsaXBib2FyZCgpLT5zZXRNaW1lRGF0YShtX3dy
aXRhYmxlRGF0YSk7CiAjZW5kaWYKIH0KQEAgLTEzMSw3ICsxMzEsNyBAQCB2b2lkIENsaXBib2Fy
ZFF0OjpjbGVhckFsbERhdGEoKQogICAgICAgICByZXR1cm47CiAKICNpZm5kZWYgUVRfTk9fQ0xJ
UEJPQVJECi0gICAgaWYgKCFpc0ZvckRyYWdnaW5nKCkpCisgICAgaWYgKGlzRm9yQ29weUFuZFBh
c3RlKCkpCiAgICAgICAgIFFBcHBsaWNhdGlvbjo6Y2xpcGJvYXJkKCktPnNldE1pbWVEYXRhKDAp
OwogICAgIGVsc2UKICNlbmRpZgpAQCAtMTgyLDcgKzE4Miw3IEBAIGJvb2wgQ2xpcGJvYXJkUXQ6
OnNldERhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpCiAgICAgfQog
CiAjaWZuZGVmIFFUX05PX0NMSVBCT0FSRAotICAgIGlmICghaXNGb3JEcmFnZ2luZygpKQorICAg
IGlmIChpc0ZvckNvcHlBbmRQYXN0ZSgpKQogICAgICAgICBRQXBwbGljYXRpb246OmNsaXBib2Fy
ZCgpLT5zZXRNaW1lRGF0YShtX3dyaXRhYmxlRGF0YSk7CiAjZW5kaWYKICAgICByZXR1cm4gdHJ1
ZTsKQEAgLTI4Nyw3ICsyODcsNyBAQCB2b2lkIENsaXBib2FyZFF0OjpkZWNsYXJlQW5kV3JpdGVE
cmFnSW1hZ2UoRWxlbWVudCogZWxlbWVudCwgY29uc3QgS1VSTCYgdXJsLCBjbwogICAgIG1fd3Jp
dGFibGVEYXRhLT5zZXRUZXh0KHRpdGxlKTsKICAgICBtX3dyaXRhYmxlRGF0YS0+c2V0VXJscyh1
cmxzKTsKICNpZm5kZWYgUVRfTk9fQ0xJUEJPQVJECi0gICAgaWYgKCFpc0ZvckRyYWdnaW5nKCkp
CisgICAgaWYgKGlzRm9yQ29weUFuZFBhc3RlKCkpCiAgICAgICAgIFFBcHBsaWNhdGlvbjo6Y2xp
cGJvYXJkKCktPnNldE1pbWVEYXRhKG1fd3JpdGFibGVEYXRhKTsKICNlbmRpZgogfQpAQCAtMzAz
LDcgKzMwMyw3IEBAIHZvaWQgQ2xpcGJvYXJkUXQ6OndyaXRlVVJMKGNvbnN0IEtVUkwmIHVybCwg
Y29uc3QgU3RyaW5nJiB0aXRsZSwgRnJhbWUqIGZyYW1lKQogICAgIG1fd3JpdGFibGVEYXRhLT5z
ZXRVcmxzKHVybHMpOwogICAgIG1fd3JpdGFibGVEYXRhLT5zZXRUZXh0KHRpdGxlKTsKICNpZm5k
ZWYgUVRfTk9fQ0xJUEJPQVJECi0gICAgaWYgKCFpc0ZvckRyYWdnaW5nKCkpCisgICAgaWYgKGlz
Rm9yQ29weUFuZFBhc3RlKCkpCiAgICAgICAgIFFBcHBsaWNhdGlvbjo6Y2xpcGJvYXJkKCktPnNl
dE1pbWVEYXRhKG1fd3JpdGFibGVEYXRhKTsKICNlbmRpZgogfQpAQCAtMzIwLDcgKzMyMCw3IEBA
IHZvaWQgQ2xpcGJvYXJkUXQ6OndyaXRlUmFuZ2UoUmFuZ2UqIHJhbmdlLCBGcmFtZSogZnJhbWUp
CiAgICAgbV93cml0YWJsZURhdGEtPnNldFRleHQodGV4dCk7CiAgICAgbV93cml0YWJsZURhdGEt
PnNldEh0bWwoY3JlYXRlTWFya3VwKHJhbmdlLCAwLCBBbm5vdGF0ZUZvckludGVyY2hhbmdlLCBm
YWxzZSwgQWJzb2x1dGVVUkxzKSk7CiAjaWZuZGVmIFFUX05PX0NMSVBCT0FSRAotICAgIGlmICgh
aXNGb3JEcmFnZ2luZygpKQorICAgIGlmIChpc0ZvckNvcHlBbmRQYXN0ZSgpKQogICAgICAgICBR
QXBwbGljYXRpb246OmNsaXBib2FyZCgpLT5zZXRNaW1lRGF0YShtX3dyaXRhYmxlRGF0YSk7CiAj
ZW5kaWYKIH0KQEAgLTMzMyw3ICszMzMsNyBAQCB2b2lkIENsaXBib2FyZFF0Ojp3cml0ZVBsYWlu
VGV4dChjb25zdCBTdHJpbmcmIHN0cikKICAgICB0ZXh0LnJlcGxhY2UoUUNoYXIoMHhhMCksIFFM
YXRpbjFDaGFyKCcgJykpOwogICAgIG1fd3JpdGFibGVEYXRhLT5zZXRUZXh0KHRleHQpOwogI2lm
bmRlZiBRVF9OT19DTElQQk9BUkQKLSAgICBpZiAoIWlzRm9yRHJhZ2dpbmcoKSkKKyAgICBpZiAo
aXNGb3JDb3B5QW5kUGFzdGUoKSkKICAgICAgICAgUUFwcGxpY2F0aW9uOjpjbGlwYm9hcmQoKS0+
c2V0TWltZURhdGEobV93cml0YWJsZURhdGEpOwogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9XZWJD
b3JlL3BsYXRmb3JtL3F0L0NsaXBib2FyZFF0LmggYi9XZWJDb3JlL3BsYXRmb3JtL3F0L0NsaXBi
b2FyZFF0LmgKaW5kZXggOWI1NGQ1Zi4uZmI2ZTMwZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0
Zm9ybS9xdC9DbGlwYm9hcmRRdC5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vcXQvQ2xpcGJvYXJk
UXQuaApAQCAtNDQsOSArNDQsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHsKICAg
ICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ2xpcGJvYXJkUXQocG9saWN5LCByZWFkYWJs
ZUNsaXBib2FyZCkpOwogICAgICAgICB9Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPENsaXBi
b2FyZFF0PiBjcmVhdGUoQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSwgYm9vbCBmb3JEcmFn
Z2luZyA9IGZhbHNlKQorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDbGlwYm9hcmRRdD4gY3Jl
YXRlKENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIENsaXBib2FyZFR5cGUgY2xpcGJvYXJk
VHlwZSA9IENvcHlBbmRQYXN0ZSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBDbGlwYm9hcmRRdChwb2xpY3ksIGZvckRyYWdnaW5nKSk7CisgICAgICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IENsaXBib2FyZFF0KHBvbGljeSwgY2xpcGJvYXJkVHlwZSkpOwog
ICAgICAgICB9CiAgICAgICAgIHZpcnR1YWwgfkNsaXBib2FyZFF0KCk7CiAKQEAgLTc3LDcgKzc3
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBDbGlwYm9hcmRRdChDbGlwYm9hcmRB
Y2Nlc3NQb2xpY3ksIGNvbnN0IFFNaW1lRGF0YSogcmVhZGFibGVDbGlwYm9hcmQpOwogCiAgICAg
ICAgIC8vIENsaXBib2FyZCBpcyB3cml0YWJsZSBzbyBpdCB3aWxsIGNyZWF0ZSBpdHMgb3duIFFN
aW1lRGF0YSBvYmplY3QKLSAgICAgICAgQ2xpcGJvYXJkUXQoQ2xpcGJvYXJkQWNjZXNzUG9saWN5
LCBib29sIGZvckRyYWdnaW5nKTsKKyAgICAgICAgQ2xpcGJvYXJkUXQoQ2xpcGJvYXJkQWNjZXNz
UG9saWN5LCBDbGlwYm9hcmRUeXBlIGNsaXBib2FyZFR5cGUpOwogCiAgICAgICAgIHZvaWQgc2V0
RHJhZ0ltYWdlKENhY2hlZEltYWdlKiwgTm9kZSosIGNvbnN0IEludFBvaW50JiBsb2MpOwogCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRXaW4uY3BwIGIvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkV2luLmNwcAppbmRleCBiMTM0NzNhLi5kNDhlYTc1IDEw
MDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRXaW4uY3BwCisrKyBiL1dl
YkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFdpbi5jcHAKQEAgLTM5NywxOSArMzk3LDE5IEBA
IGV4aXQ6CiAKIFBhc3NSZWZQdHI8Q2xpcGJvYXJkPiBDbGlwYm9hcmQ6OmNyZWF0ZShDbGlwYm9h
cmRBY2Nlc3NQb2xpY3kgcG9saWN5LCBEcmFnRGF0YSogZHJhZ0RhdGEsIEZyYW1lKiBmcmFtZSkK
IHsKLSAgICByZXR1cm4gQ2xpcGJvYXJkV2luOjpjcmVhdGUodHJ1ZSwgZHJhZ0RhdGEtPnBsYXRm
b3JtRGF0YSgpLCBwb2xpY3ksIGZyYW1lKTsKKyAgICByZXR1cm4gQ2xpcGJvYXJkV2luOjpjcmVh
dGUoRHJhZ0FuZERyb3AsIGRyYWdEYXRhLT5wbGF0Zm9ybURhdGEoKSwgcG9saWN5LCBmcmFtZSk7
CiB9CiAKLUNsaXBib2FyZFdpbjo6Q2xpcGJvYXJkV2luKGJvb2wgaXNGb3JEcmFnZ2luZywgSURh
dGFPYmplY3QqIGRhdGFPYmplY3QsIENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIEZyYW1l
KiBmcmFtZSkKLSAgICA6IENsaXBib2FyZChwb2xpY3ksIGlzRm9yRHJhZ2dpbmcpCitDbGlwYm9h
cmRXaW46OkNsaXBib2FyZFdpbihDbGlwYm9hcmRUeXBlIGNsaXBib2FyZFR5cGUsIElEYXRhT2Jq
ZWN0KiBkYXRhT2JqZWN0LCBDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5LCBGcmFtZSogZnJh
bWUpCisgICAgOiBDbGlwYm9hcmQocG9saWN5LCBjbGlwYm9hcmRUeXBlKQogICAgICwgbV9kYXRh
T2JqZWN0KGRhdGFPYmplY3QpCiAgICAgLCBtX3dyaXRhYmxlRGF0YU9iamVjdCgwKQogICAgICwg
bV9mcmFtZShmcmFtZSkKIHsKIH0KIAotQ2xpcGJvYXJkV2luOjpDbGlwYm9hcmRXaW4oYm9vbCBp
c0ZvckRyYWdnaW5nLCBXQ0RhdGFPYmplY3QqIGRhdGFPYmplY3QsIENsaXBib2FyZEFjY2Vzc1Bv
bGljeSBwb2xpY3ksIEZyYW1lKiBmcmFtZSkKLSAgICA6IENsaXBib2FyZChwb2xpY3ksIGlzRm9y
RHJhZ2dpbmcpCitDbGlwYm9hcmRXaW46OkNsaXBib2FyZFdpbihDbGlwYm9hcmRUeXBlIGNsaXBi
b2FyZFR5cGUsIFdDRGF0YU9iamVjdCogZGF0YU9iamVjdCwgQ2xpcGJvYXJkQWNjZXNzUG9saWN5
IHBvbGljeSwgRnJhbWUqIGZyYW1lKQorICAgIDogQ2xpcGJvYXJkKHBvbGljeSwgY2xpcGJvYXJk
VHlwZSkKICAgICAsIG1fZGF0YU9iamVjdChkYXRhT2JqZWN0KQogICAgICwgbV93cml0YWJsZURh
dGFPYmplY3QoZGF0YU9iamVjdCkKICAgICAsIG1fZnJhbWUoZnJhbWUpCkBAIC00NjcsNyArNDY3
LDcgQEAgc3RhdGljIGJvb2wgd3JpdGVVUkwoV0NEYXRhT2JqZWN0ICpkYXRhLCBjb25zdCBLVVJM
JiB1cmwsIFN0cmluZyB0aXRsZSwgYm9vbCB3aXQKIHZvaWQgQ2xpcGJvYXJkV2luOjpjbGVhckRh
dGEoY29uc3QgU3RyaW5nJiB0eXBlKQogewogICAgIC8vIEZJWE1FOiBOZWVkIHRvIGJlIGFibGUg
dG8gd3JpdGUgdG8gdGhlIHN5c3RlbSBjbGlwYm9hcmQgPHJkYXI6Ly9wcm9ibGVtLzUwMTU5NDE+
Ci0gICAgQVNTRVJUKGlzRm9yRHJhZ2dpbmcoKSk7CisgICAgQVNTRVJUKGlzRm9yRHJhZ0FuZERy
b3AoKSk7CiAgICAgaWYgKHBvbGljeSgpICE9IENsaXBib2FyZFdyaXRhYmxlIHx8ICFtX3dyaXRh
YmxlRGF0YU9iamVjdCkKICAgICAgICAgcmV0dXJuOwogCkBAIC00ODcsNyArNDg3LDcgQEAgdm9p
ZCBDbGlwYm9hcmRXaW46OmNsZWFyRGF0YShjb25zdCBTdHJpbmcmIHR5cGUpCiB2b2lkIENsaXBi
b2FyZFdpbjo6Y2xlYXJBbGxEYXRhKCkKIHsKICAgICAvLyBGSVhNRTogTmVlZCB0byBiZSBhYmxl
IHRvIHdyaXRlIHRvIHRoZSBzeXN0ZW0gY2xpcGJvYXJkIDxyZGFyOi8vcHJvYmxlbS81MDE1OTQx
PgotICAgIEFTU0VSVChpc0ZvckRyYWdnaW5nKCkpOworICAgIEFTU0VSVChpc0ZvckRyYWdBbmRE
cm9wKCkpOwogICAgIGlmIChwb2xpY3koKSAhPSBDbGlwYm9hcmRXcml0YWJsZSkKICAgICAgICAg
cmV0dXJuOwogICAgIApAQCAtNTIwLDcgKzUyMCw3IEBAIFN0cmluZyBDbGlwYm9hcmRXaW46Omdl
dERhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBib29sJiBzdWNjZXNzKSBjb25zdAogYm9vbCBDbGlw
Ym9hcmRXaW46OnNldERhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEp
CiB7CiAgICAgLy8gRklYTUU6IE5lZWQgdG8gYmUgYWJsZSB0byB3cml0ZSB0byB0aGUgc3lzdGVt
IGNsaXBib2FyZCA8cmRhcjovL3Byb2JsZW0vNTAxNTk0MT4KLSAgICBBU1NFUlQoaXNGb3JEcmFn
Z2luZygpKTsKKyAgICBBU1NFUlQoaXNGb3JEcmFnQW5kRHJvcCgpKTsKICAgICBpZiAocG9saWN5
KCkgIT0gQ2xpcGJvYXJkV3JpdGFibGUgfHwgIW1fd3JpdGFibGVEYXRhT2JqZWN0KQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKQEAgLTgzMSw3ICs4MzEsNyBAQCBib29sIENsaXBib2FyZFdpbjo6
aGFzRGF0YSgpCiAKIHZvaWQgQ2xpcGJvYXJkV2luOjpzZXRFeHRlcm5hbERhdGFPYmplY3QoSURh
dGFPYmplY3QgKmRhdGFPYmplY3QpCiB7Ci0gICAgQVNTRVJUKGlzRm9yRHJhZ2dpbmcoKSk7Cisg
ICAgQVNTRVJUKGlzRm9yRHJhZ0FuZERyb3AoKSk7CiAKICAgICBtX3dyaXRhYmxlRGF0YU9iamVj
dCA9IDA7CiAgICAgbV9kYXRhT2JqZWN0ID0gZGF0YU9iamVjdDsKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFdpbi5oIGIvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xp
cGJvYXJkV2luLmgKaW5kZXggNmEwODA4Ny4uNDM3ZTEyNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vQ2xpcGJvYXJkV2luLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xp
cGJvYXJkV2luLmgKQEAgLTQyLDEzICs0MiwxMyBAQCBjbGFzcyBXQ0RhdGFPYmplY3Q7CiAvLyBT
dGF0ZSBhdmFpbGFibGUgZHVyaW5nIElFJ3MgZXZlbnRzIGZvciBkcmFnIGFuZCBkcm9wIGFuZCBj
b3B5L3Bhc3RlCiBjbGFzcyBDbGlwYm9hcmRXaW4gOiBwdWJsaWMgQ2xpcGJvYXJkLCBwdWJsaWMg
Q2FjaGVkUmVzb3VyY2VDbGllbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPENs
aXBib2FyZFdpbj4gY3JlYXRlKGJvb2wgaXNGb3JEcmFnZ2luZywgSURhdGFPYmplY3QqIGRhdGFP
YmplY3QsIENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIEZyYW1lKiBmcmFtZSkKKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxDbGlwYm9hcmRXaW4+IGNyZWF0ZShDbGlwYm9hcmRUeXBlIGNsaXBi
b2FyZFR5cGUsIElEYXRhT2JqZWN0KiBkYXRhT2JqZWN0LCBDbGlwYm9hcmRBY2Nlc3NQb2xpY3kg
cG9saWN5LCBGcmFtZSogZnJhbWUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IENsaXBib2FyZFdpbihpc0ZvckRyYWdnaW5nLCBkYXRhT2JqZWN0LCBwb2xpY3ksIGZyYW1lKSk7
CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ2xpcGJvYXJkV2luKGNsaXBib2FyZFR5cGUs
IGRhdGFPYmplY3QsIHBvbGljeSwgZnJhbWUpKTsKICAgICB9Ci0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8Q2xpcGJvYXJkV2luPiBjcmVhdGUoYm9vbCBpc0ZvckRyYWdnaW5nLCBXQ0RhdGFPYmplY3Qq
IGRhdGFPYmplY3QsIENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIEZyYW1lKiBmcmFtZSkK
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxDbGlwYm9hcmRXaW4+IGNyZWF0ZShDbGlwYm9hcmRUeXBl
IGNsaXBib2FyZFR5cGUsIFdDRGF0YU9iamVjdCogZGF0YU9iamVjdCwgQ2xpcGJvYXJkQWNjZXNz
UG9saWN5IHBvbGljeSwgRnJhbWUqIGZyYW1lKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBDbGlwYm9hcmRXaW4oaXNGb3JEcmFnZ2luZywgZGF0YU9iamVjdCwgcG9saWN5LCBm
cmFtZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENsaXBib2FyZFdpbihjbGlwYm9h
cmRUeXBlLCBkYXRhT2JqZWN0LCBwb2xpY3ksIGZyYW1lKSk7CiAgICAgfQogICAgIH5DbGlwYm9h
cmRXaW4oKTsKIApAQCAtNzcsOCArNzcsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRFeHRlcm5h
bERhdGFPYmplY3QoSURhdGFPYmplY3QgKmRhdGFPYmplY3QpOwogCiBwcml2YXRlOgotICAgIENs
aXBib2FyZFdpbihib29sIGlzRm9yRHJhZ2dpbmcsIElEYXRhT2JqZWN0KiwgQ2xpcGJvYXJkQWNj
ZXNzUG9saWN5LCBGcmFtZSopOwotICAgIENsaXBib2FyZFdpbihib29sIGlzRm9yRHJhZ2dpbmcs
IFdDRGF0YU9iamVjdCosIENsaXBib2FyZEFjY2Vzc1BvbGljeSwgRnJhbWUqKTsKKyAgICBDbGlw
Ym9hcmRXaW4oQ2xpcGJvYXJkVHlwZSBjbGlwYm9hcmRUeXBlLCBJRGF0YU9iamVjdCosIENsaXBi
b2FyZEFjY2Vzc1BvbGljeSwgRnJhbWUqKTsKKyAgICBDbGlwYm9hcmRXaW4oQ2xpcGJvYXJkVHlw
ZSBjbGlwYm9hcmRUeXBlLCBXQ0RhdGFPYmplY3QqLCBDbGlwYm9hcmRBY2Nlc3NQb2xpY3ksIEZy
YW1lKik7CiAKICAgICB2b2lkIHJlc2V0RnJvbUNsaXBib2FyZCgpOwogICAgIHZvaWQgc2V0RHJh
Z0ltYWdlKENhY2hlZEltYWdlKiwgTm9kZSosIGNvbnN0IEludFBvaW50Jik7CmRpZmYgLS1naXQg
YS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9FZGl0b3JXaW4uY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vRWRpdG9yV2luLmNwcAppbmRleCAwNzU4MjdkLi5iYjViMzU5IDEwMDY0NAotLS0gYS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9FZGl0b3JXaW4uY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L0VkaXRvcldpbi5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IEVk
aXRvcjo6bmV3R2VuZXJhbENsaXBib2FyZChDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5LAog
ICAgIGlmICghU1VDQ0VFREVEKE9sZUdldENsaXBib2FyZCgmY2xpcGJvYXJkRGF0YSkpKQogICAg
ICAgICBjbGlwYm9hcmREYXRhID0gMDsKIAotICAgIHJldHVybiBDbGlwYm9hcmRXaW46OmNyZWF0
ZShmYWxzZSwgY2xpcGJvYXJkRGF0YS5nZXQoKSwgcG9saWN5LCBmcmFtZSk7CisgICAgcmV0dXJu
IENsaXBib2FyZFdpbjo6Y3JlYXRlKENsaXBib2FyZDo6Q29weUFuZFBhc3RlLCBjbGlwYm9hcmRE
YXRhLmdldCgpLCBwb2xpY3ksIGZyYW1lKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS93eC9DbGlwYm9hcmRXeC5jcHAgYi9XZWJDb3Jl
L3BsYXRmb3JtL3d4L0NsaXBib2FyZFd4LmNwcAppbmRleCAyZWY5NDNmLi4zMjIxNmE2IDEwMDY0
NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3d4L0NsaXBib2FyZFd4LmNwcAorKysgYi9XZWJDb3Jl
L3BsYXRmb3JtL3d4L0NsaXBib2FyZFd4LmNwcApAQCAtNDIsOCArNDIsOCBAQCBQYXNzUmVmUHRy
PENsaXBib2FyZD4gQ2xpcGJvYXJkOjpjcmVhdGUoQ2xpcGJvYXJkQWNjZXNzUG9saWN5LCBEcmFn
RGF0YSosIEZyYW1lKgogICAgIHJldHVybiAwOwogfQogCi1DbGlwYm9hcmRXeDo6Q2xpcGJvYXJk
V3goQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSwgYm9vbCBmb3JEcmFnZ2luZykgCi0gICAg
OiBDbGlwYm9hcmQocG9saWN5LCBmb3JEcmFnZ2luZykKK0NsaXBib2FyZFd4OjpDbGlwYm9hcmRX
eChDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5LCBDbGlwYm9hcmRUeXBlIGNsaXBib2FyZFR5
cGUpIAorICAgIDogQ2xpcGJvYXJkKHBvbGljeSwgY2xpcGJvYXJkVHlwZSkKIHsKIH0KIApkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS93eC9DbGlwYm9hcmRXeC5oIGIvV2ViQ29yZS9wbGF0
Zm9ybS93eC9DbGlwYm9hcmRXeC5oCmluZGV4IDQ1ZDFjZjMuLmNjMWRkN2EgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcGxhdGZvcm0vd3gvQ2xpcGJvYXJkV3guaAorKysgYi9XZWJDb3JlL3BsYXRmb3Jt
L3d4L0NsaXBib2FyZFd4LmgKQEAgLTM1LDkgKzM1LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgIC8vIFN0YXRlIGF2YWlsYWJsZSBkdXJpbmcgSUUncyBldmVudHMgZm9yIGRyYWcgYW5kIGRy
b3AgYW5kIGNvcHkvcGFzdGUKICAgICBjbGFzcyBDbGlwYm9hcmRXeCA6IHB1YmxpYyBDbGlwYm9h
cmQgewogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q2xpcGJvYXJkV3g+
IGNyZWF0ZShDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5LCBib29sIGZvckRyYWdnaW5nKQor
ICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDbGlwYm9hcmRXeD4gY3JlYXRlKENsaXBib2FyZEFj
Y2Vzc1BvbGljeSBwb2xpY3ksIENsaXBib2FyZFR5cGUgY2xpcGJvYXJkVHlwZSkKICAgICAgICAg
ewotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDbGlwYm9hcmRXeChwb2xpY3ksIGZv
ckRyYWdnaW5nKSk7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENsaXBib2FyZFd4
KHBvbGljeSwgY2xpcGJvYXJkVHlwZSkpOwogICAgICAgICB9CiAKICAgICAgICAgdm9pZCBjbGVh
ckRhdGEoY29uc3QgU3RyaW5nJiB0eXBlKTsKQEAgLTY1LDcgKzY1LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICB2aXJ0dWFsIGJvb2wgaGFzRGF0YSgpOwogCiAgICAgcHJpdmF0ZToK
LSAgICAgICAgQ2xpcGJvYXJkV3goQ2xpcGJvYXJkQWNjZXNzUG9saWN5LCBib29sIGZvckRyYWdn
aW5nKTsKKyAgICAgICAgQ2xpcGJvYXJkV3goQ2xpcGJvYXJkQWNjZXNzUG9saWN5LCBDbGlwYm9h
cmRUeXBlIGNsaXBib2FyZFR5cGUpOwogICAgIH07CiB9IAogCg==
</data>
<flag name="commit-queue"
          id="57572"
          type_id="3"
          status="-"
          setter="levin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>68194</attachid>
            <date>2010-09-20 23:42:02 -0700</date>
            <delta_ts>2010-09-21 11:50:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>foo.patch</filename>
            <type>text/plain</type>
            <size>50614</size>
            <attacher name="Daniel Cheng">dcheng</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ODk1YWZiMy4uOTI1ZjI3MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMjIgQEAKKzIwMTAtMDktMjAgIERhbmllbCBDaGVu
ZyAgPGRjaGVuZ0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQ2hhbmdlIENsaXBib2FyZCB0byB1c2UgYW4gZW51bSBpbnN0ZWFk
IG9mIGlzRm9yRHJhZ2dpbmcgPSB0cnVlL2ZhbHNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NjAwNAorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgc2lu
Y2UgaXQncyBqdXN0IGEgcmVmYWN0b3JpbmcgY2hhbmdlLgorCisgICAgICAgICogYmluZGluZ3Mv
anMvSlNDbGlwYm9hcmRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNDbGlwYm9hcmQ6
OnNldERyYWdJbWFnZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q2xpcGJvYXJk
Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4Q2xpcGJvYXJkOjpzZXREcmFnSW1hZ2VD
YWxsYmFjayk6CisgICAgICAgICogZG9tL0NsaXBib2FyZC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDbGlwYm9hcmQ6OkNsaXBib2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmQ6OnNl
dERyb3BFZmZlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkOjpzZXRFZmZlY3RBbGxv
d2VkKToKKyAgICAgICAgKiBkb20vQ2xpcGJvYXJkLmg6CisgICAgICAgIChXZWJDb3JlOjpDbGlw
Ym9hcmQ6OmlzRm9yQ29weUFuZFBhc3RlKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZDo6
aXNGb3JEcmFnQW5kRHJvcCk6CisgICAgICAgICogZWRpdGluZy9hbmRyb2lkL0VkaXRvckFuZHJv
aWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpuZXdHZW5lcmFsQ2xpcGJvYXJkKToK
KyAgICAgICAgKiBlZGl0aW5nL2JyZXcvRWRpdG9yQnJldy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpFZGl0b3I6Om5ld0dlbmVyYWxDbGlwYm9hcmQpOgorICAgICAgICAqIGVkaXRpbmcvY2hyb21p
dW0vRWRpdG9yQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpuZXdHZW5l
cmFsQ2xpcGJvYXJkKToKKyAgICAgICAgKiBlZGl0aW5nL2hhaWt1L0VkaXRvckhhaWt1LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bmV3R2VuZXJhbENsaXBib2FyZCk6CisgICAgICAg
ICogZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpu
ZXdHZW5lcmFsQ2xpcGJvYXJkKToKKyAgICAgICAgKiBlZGl0aW5nL3d4L0VkaXRvcld4LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bmV3R2VuZXJhbENsaXBib2FyZCk6CisgICAgICAg
ICogcGFnZS9jaHJvbWl1bS9FdmVudEhhbmRsZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpFdmVudEhhbmRsZXI6OmNyZWF0ZURyYWdnaW5nQ2xpcGJvYXJkKToKKyAgICAgICAgKiBw
YWdlL2VmbC9FdmVudEhhbmRsZXJFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5k
bGVyOjpjcmVhdGVEcmFnZ2luZ0NsaXBib2FyZCk6CisgICAgICAgICogcGFnZS9ndGsvRXZlbnRI
YW5kbGVyR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6Y3JlYXRlRHJh
Z2dpbmdDbGlwYm9hcmQpOgorICAgICAgICAqIHBhZ2UvaGFpa3UvRXZlbnRIYW5kbGVySGFpa3Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpjcmVhdGVEcmFnZ2luZ0NsaXBi
b2FyZCk6CisgICAgICAgICogcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tOgorICAgICAgICAo
V2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpjcmVhdGVEcmFnZ2luZ0NsaXBib2FyZCk6CisgICAgICAg
ICogcGFnZS9xdC9FdmVudEhhbmRsZXJRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhh
bmRsZXI6OmNyZWF0ZURyYWdnaW5nQ2xpcGJvYXJkKToKKyAgICAgICAgKiBwYWdlL3dpbi9FdmVu
dEhhbmRsZXJXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpjcmVhdGVE
cmFnZ2luZ0NsaXBib2FyZCk6CisgICAgICAgICogcGFnZS93eC9FdmVudEhhbmRsZXJXeC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmNyZWF0ZURyYWdnaW5nQ2xpcGJvYXJk
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9hbmRyb2lkL0NsaXBib2FyZEFuZHJvaWQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkQW5kcm9pZDo6Q2xpcGJvYXJkQW5kcm9pZCk6CisgICAg
ICAgIChXZWJDb3JlOjpDbGlwYm9hcmRBbmRyb2lkOjpjbGVhckRhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2xpcGJvYXJkQW5kcm9pZDo6Y2xlYXJBbGxEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OkNsaXBib2FyZEFuZHJvaWQ6OnNldERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2FuZHJvaWQv
Q2xpcGJvYXJkQW5kcm9pZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2JyZXcvQ2xpcGJvYXJkQnJl
dy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRCcmV3OjpDbGlwYm9hcmRCcmV3KToK
KyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEJyZXc6OmNsZWFyRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpDbGlwYm9hcmRCcmV3OjpjbGVhckFsbERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
Q2xpcGJvYXJkQnJldzo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vYnJldy9DbGlwYm9h
cmRCcmV3Lmg6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJkQ2hyb21pdW0u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2xpcGJvYXJkQ2hyb21pdW06OkNsaXBib2FyZENocm9taXVtKToKKyAgICAgICAgKFdl
YkNvcmU6OkNsaXBib2FyZENocm9taXVtOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2xp
cGJvYXJkQ2hyb21pdW06OmdldERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL0Ns
aXBib2FyZENocm9taXVtLmg6CisgICAgICAgICogcGxhdGZvcm0vZWZsL0NsaXBib2FyZEVmbC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6Om5ld0dlbmVyYWxDbGlwYm9hcmQpOgorICAg
ICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkRWZsOjpDbGlwYm9hcmRFZmwpOgorICAgICAgICAqIHBs
YXRmb3JtL2VmbC9DbGlwYm9hcmRFZmwuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEVm
bDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3RrLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bmV3R2VuZXJhbENsaXBib2FyZCk6CisgICAgICAgIChX
ZWJDb3JlOjpDbGlwYm9hcmQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRH
dGs6OkNsaXBib2FyZEd0ayk6CisgICAgICAgIChXZWJDb3JlOjpkYXRhT2JqZWN0VHlwZUZyb21I
VE1MQ2xpcGJvYXJkVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRHdGs6OmNsZWFy
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRHdGs6OmdldERhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2xpcGJvYXJkR3RrOjpzZXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
dGsvQ2xpcGJvYXJkR3RrLmg6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRHdGs6OmNyZWF0
ZSk6CisgICAgICAgICogcGxhdGZvcm0vaGFpa3UvQ2xpcGJvYXJkSGFpa3UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q2xpcGJvYXJkOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJv
YXJkSGFpa3U6OkNsaXBib2FyZEhhaWt1KToKKyAgICAgICAgKiBwbGF0Zm9ybS9oYWlrdS9DbGlw
Ym9hcmRIYWlrdS5oOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSGFpa3U6OmNyZWF0ZSk6
CisgICAgICAgICogcGxhdGZvcm0vbWFjL0NsaXBib2FyZE1hYy5oOgorICAgICAgICAoV2ViQ29y
ZTo6Q2xpcGJvYXJkTWFjOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9DbGlwYm9h
cmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmQ6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpDbGlwYm9hcmRNYWM6OkNsaXBib2FyZE1hYyk6CisgICAgICAgICogcGxhdGZv
cm0vcXQvQ2xpcGJvYXJkUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkUXQ6OkNs
aXBib2FyZFF0KToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZFF0Ojp+Q2xpcGJvYXJkUXQp
OgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkUXQ6OmNsZWFyRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpDbGlwYm9hcmRRdDo6Y2xlYXJBbGxEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNs
aXBib2FyZFF0OjpzZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZFF0OjpkZWNs
YXJlQW5kV3JpdGVEcmFnSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkUXQ6Ondy
aXRlVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZFF0Ojp3cml0ZVJhbmdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZFF0Ojp3cml0ZVBsYWluVGV4dCk6CisgICAgICAgICog
cGxhdGZvcm0vcXQvQ2xpcGJvYXJkUXQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZFF0
OjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9DbGlwYm9hcmRXaW4uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2xp
cGJvYXJkV2luOjpDbGlwYm9hcmRXaW4pOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkV2lu
OjpjbGVhckRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkV2luOjpjbGVhckFsbERh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkV2luOjpzZXREYXRhKToKKyAgICAgICAg
KFdlYkNvcmU6OkNsaXBib2FyZFdpbjo6c2V0RXh0ZXJuYWxEYXRhT2JqZWN0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS93aW4vQ2xpcGJvYXJkV2luLmg6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9h
cmRXaW46OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vd2luL0VkaXRvcldpbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpFZGl0b3I6Om5ld0dlbmVyYWxDbGlwYm9hcmQpOgorICAgICAgICAq
IHBsYXRmb3JtL3d4L0NsaXBib2FyZFd4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2Fy
ZFd4OjpDbGlwYm9hcmRXeCk6CisgICAgICAgICogcGxhdGZvcm0vd3gvQ2xpcGJvYXJkV3guaDoK
KyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZFd4OjpjcmVhdGUpOgorCiAyMDEwLTA5LTIwICBQ
YXZlbCBQb2Rpdmlsb3YgIDxwb2Rpdmlsb3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IFBhdmVsIEZlbGRtYW4uCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
Q2xpcGJvYXJkQ3VzdG9tLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDbGlwYm9hcmRDdXN0
b20uY3BwCmluZGV4IDJhOGQzMDkuLjE3YzY2NDAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNDbGlwYm9hcmRDdXN0b20uY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlND
bGlwYm9hcmRDdXN0b20uY3BwCkBAIC0xMDEsNyArMTAxLDcgQEAgSlNWYWx1ZSBKU0NsaXBib2Fy
ZDo6c2V0RHJhZ0ltYWdlKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBDbGlwYm9hcmQqIGNsaXBi
b2FyZCA9IGltcGwoKTsKIAotICAgIGlmICghY2xpcGJvYXJkLT5pc0ZvckRyYWdnaW5nKCkpCisg
ICAgaWYgKCFjbGlwYm9hcmQtPmlzRm9yRHJhZ0FuZERyb3AoKSkKICAgICAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CiAKICAgICAvLyBGSVhNRTogSXQgZG9lcyBub3QgbWF0Y2ggdGhlIHJlc3Qg
b2YgdGhlIEpTIGJpbmRpbmdzIHRvIHRocm93IG9uIGludmFsaWQgbnVtYmVyIG9mIGFyZ3VtZW50
cy4gCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENsaXBib2FyZEN1
c3RvbS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENsaXBib2FyZEN1c3RvbS5j
cHAKaW5kZXggNjk3NDJmOC4uZDg1ZDdhMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhDbGlwYm9hcmRDdXN0b20uY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4Q2xpcGJvYXJkQ3VzdG9tLmNwcApAQCAtMTAxLDcgKzEwMSw3IEBAIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBWOENsaXBib2FyZDo6c2V0RHJhZ0ltYWdlQ2FsbGJhY2soY29uc3Qgdjg6
OkFyZ3VtZW50cyYgYXJnCiAgICAgSU5DX1NUQVRTKCJET00uQ2xpcGJvYXJkLnNldERyYWdJbWFn
ZSgpIik7CiAgICAgQ2xpcGJvYXJkKiBjbGlwYm9hcmQgPSBWOENsaXBib2FyZDo6dG9OYXRpdmUo
YXJncy5Ib2xkZXIoKSk7CiAKLSAgICBpZiAoIWNsaXBib2FyZC0+aXNGb3JEcmFnZ2luZygpKQor
ICAgIGlmICghY2xpcGJvYXJkLT5pc0ZvckRyYWdBbmREcm9wKCkpCiAgICAgICAgIHJldHVybiB2
ODo6VW5kZWZpbmVkKCk7CiAKICAgICBpZiAoYXJncy5MZW5ndGgoKSAhPSAzKQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9kb20vQ2xpcGJvYXJkLmNwcCBiL1dlYkNvcmUvZG9tL0NsaXBib2FyZC5jcHAK
aW5kZXggZDY0NGJjYy4uNjk1NjI1NyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vQ2xpcGJvYXJk
LmNwcAorKysgYi9XZWJDb3JlL2RvbS9DbGlwYm9hcmQuY3BwCkBAIC0zMywxMiArMzMsMTIgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1DbGlwYm9hcmQ6OkNsaXBib2FyZChDbGlwYm9hcmRB
Y2Nlc3NQb2xpY3kgcG9saWN5LCBib29sIGlzRm9yRHJhZ2dpbmcpIAorQ2xpcGJvYXJkOjpDbGlw
Ym9hcmQoQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSwgQ2xpcGJvYXJkVHlwZSBjbGlwYm9h
cmRUeXBlKSAKICAgICA6IG1fcG9saWN5KHBvbGljeSkKICAgICAsIG1fZHJvcEVmZmVjdCgidW5p
bml0aWFsaXplZCIpCiAgICAgLCBtX2VmZmVjdEFsbG93ZWQoInVuaW5pdGlhbGl6ZWQiKQogICAg
ICwgbV9kcmFnU3RhcnRlZChmYWxzZSkKLSAgICAsIG1fZm9yRHJhZ2dpbmcoaXNGb3JEcmFnZ2lu
ZykKKyAgICAsIG1fY2xpcGJvYXJkVHlwZShjbGlwYm9hcmRUeXBlKQogICAgICwgbV9kcmFnSW1h
Z2UoMCkKIHsKIH0KQEAgLTEyNyw3ICsxMjcsNyBAQCB2b2lkIENsaXBib2FyZDo6c2V0RGVzdGlu
YXRpb25PcGVyYXRpb24oRHJhZ09wZXJhdGlvbiBvcCkKIAogdm9pZCBDbGlwYm9hcmQ6OnNldERy
b3BFZmZlY3QoY29uc3QgU3RyaW5nICZlZmZlY3QpCiB7Ci0gICAgaWYgKCFtX2ZvckRyYWdnaW5n
KQorICAgIGlmICghaXNGb3JEcmFnQW5kRHJvcCgpKQogICAgICAgICByZXR1cm47CiAKICAgICAv
LyBUaGUgYXR0cmlidXRlIG11c3QgaWdub3JlIGFueSBhdHRlbXB0cyB0byBzZXQgaXQgdG8gYSB2
YWx1ZSBvdGhlciB0aGFuIG5vbmUsIGNvcHksIGxpbmssIGFuZCBtb3ZlLiAKQEAgLTE0MCw3ICsx
NDAsNyBAQCB2b2lkIENsaXBib2FyZDo6c2V0RHJvcEVmZmVjdChjb25zdCBTdHJpbmcgJmVmZmVj
dCkKIAogdm9pZCBDbGlwYm9hcmQ6OnNldEVmZmVjdEFsbG93ZWQoY29uc3QgU3RyaW5nICZlZmZl
Y3QpCiB7Ci0gICAgaWYgKCFtX2ZvckRyYWdnaW5nKQorICAgIGlmICghaXNGb3JEcmFnQW5kRHJv
cCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoZHJhZ09wRnJvbUlFT3AoZWZmZWN0KSA9
PSBEcmFnT3BlcmF0aW9uUHJpdmF0ZSkgewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vQ2xpcGJv
YXJkLmggYi9XZWJDb3JlL2RvbS9DbGlwYm9hcmQuaAppbmRleCAwNTYyMjgwLi5iOGVhZGZiIDEw
MDY0NAotLS0gYS9XZWJDb3JlL2RvbS9DbGlwYm9hcmQuaAorKysgYi9XZWJDb3JlL2RvbS9DbGlw
Ym9hcmQuaApAQCAtNDAsMTIgKzQwLDE3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAvLyBT
dGF0ZSBhdmFpbGFibGUgZHVyaW5nIElFJ3MgZXZlbnRzIGZvciBkcmFnIGFuZCBkcm9wIGFuZCBj
b3B5L3Bhc3RlCiAgICAgY2xhc3MgQ2xpcGJvYXJkIDogcHVibGljIFJlZkNvdW50ZWQ8Q2xpcGJv
YXJkPiB7CiAgICAgcHVibGljOgorICAgICAgICAvLyBXaGV0aGVyIHRoaXMgY2xpcGJvYXJkIGlz
IHNlcnZpbmcgYSBkcmFnLWRyb3Agb3IgY29weS1wYXN0ZSByZXF1ZXN0LgorICAgICAgICBlbnVt
IENsaXBib2FyZFR5cGUgeworICAgICAgICAgICAgQ29weUFuZFBhc3RlLAorICAgICAgICAgICAg
RHJhZ0FuZERyb3AsCisgICAgICAgIH07CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPENsaXBi
b2FyZD4gY3JlYXRlKENsaXBib2FyZEFjY2Vzc1BvbGljeSwgRHJhZ0RhdGEqLCBGcmFtZSopOwog
CiAgICAgICAgIHZpcnR1YWwgfkNsaXBib2FyZCgpIHsgfQogCi0gICAgICAgIC8vIElzIHRoaXMg
b3BlcmF0aW9uIGEgZHJhZy1kcm9wIG9yIGEgY29weS1wYXN0ZT8KLSAgICAgICAgYm9vbCBpc0Zv
ckRyYWdnaW5nKCkgY29uc3QgeyByZXR1cm4gbV9mb3JEcmFnZ2luZzsgfQorICAgICAgICBib29s
IGlzRm9yQ29weUFuZFBhc3RlKCkgY29uc3QgeyByZXR1cm4gbV9jbGlwYm9hcmRUeXBlID09IENv
cHlBbmRQYXN0ZTsgfQorICAgICAgICBib29sIGlzRm9yRHJhZ0FuZERyb3AoKSBjb25zdCB7IHJl
dHVybiBtX2NsaXBib2FyZFR5cGUgPT0gRHJhZ0FuZERyb3A7IH0KIAogICAgICAgICBTdHJpbmcg
ZHJvcEVmZmVjdCgpIGNvbnN0IHsgcmV0dXJuIGRyb3BFZmZlY3RJc1VuaW5pdGlhbGl6ZWQoKSA/
ICJub25lIiA6IG1fZHJvcEVmZmVjdDsgfQogICAgICAgICB2b2lkIHNldERyb3BFZmZlY3QoY29u
c3QgU3RyaW5nJik7CkBAIC04OCw3ICs5Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgdm9pZCBzZXREcmFnSGFzU3RhcnRlZCgpIHsgbV9kcmFnU3RhcnRlZCA9IHRydWU7IH0KICAg
ICAgICAgCiAgICAgcHJvdGVjdGVkOgotICAgICAgICBDbGlwYm9hcmQoQ2xpcGJvYXJkQWNjZXNz
UG9saWN5LCBib29sIGlzRm9yRHJhZ2dpbmcpOworICAgICAgICBDbGlwYm9hcmQoQ2xpcGJvYXJk
QWNjZXNzUG9saWN5LCBDbGlwYm9hcmRUeXBlKTsKIAogICAgICAgICBDbGlwYm9hcmRBY2Nlc3NQ
b2xpY3kgcG9saWN5KCkgY29uc3QgeyByZXR1cm4gbV9wb2xpY3k7IH0KICAgICAgICAgYm9vbCBk
cmFnU3RhcnRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZHJhZ1N0YXJ0ZWQ7IH0KQEAgLTk4LDkgKzEw
Myw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgU3RyaW5nIG1fZHJvcEVmZmVjdDsK
ICAgICAgICAgU3RyaW5nIG1fZWZmZWN0QWxsb3dlZDsKICAgICAgICAgYm9vbCBtX2RyYWdTdGFy
dGVkOworICAgICAgICBDbGlwYm9hcmRUeXBlIG1fY2xpcGJvYXJkVHlwZTsKICAgICAgICAgCiAg
ICAgcHJvdGVjdGVkOgotICAgICAgICBib29sIG1fZm9yRHJhZ2dpbmc7CiAgICAgICAgIEludFBv
aW50IG1fZHJhZ0xvYzsKICAgICAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkSW1hZ2U+
IG1fZHJhZ0ltYWdlOwogICAgICAgICBSZWZQdHI8Tm9kZT4gbV9kcmFnSW1hZ2VFbGVtZW50Owpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL2FuZHJvaWQvRWRpdG9yQW5kcm9pZC5jcHAgYi9X
ZWJDb3JlL2VkaXRpbmcvYW5kcm9pZC9FZGl0b3JBbmRyb2lkLmNwcAppbmRleCA2MWNjZTAxLi4y
OWMwYmU1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvYW5kcm9pZC9FZGl0b3JBbmRyb2lk
LmNwcAorKysgYi9XZWJDb3JlL2VkaXRpbmcvYW5kcm9pZC9FZGl0b3JBbmRyb2lkLmNwcApAQCAt
MzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFBhc3NSZWZQdHI8Q2xpcGJvYXJk
PiBFZGl0b3I6Om5ld0dlbmVyYWxDbGlwYm9hcmQoQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGlj
eSwgRnJhbWUqKQogewotICAgIHJldHVybiBuZXcgQ2xpcGJvYXJkQW5kcm9pZChwb2xpY3ksIGZh
bHNlKTsKKyAgICByZXR1cm4gbmV3IENsaXBib2FyZEFuZHJvaWQocG9saWN5LCBDbGlwYm9hcmQ6
OkNvcHlBbmRQYXN0ZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvZWRpdGluZy9icmV3L0VkaXRvckJyZXcuY3BwIGIvV2ViQ29yZS9lZGl0aW5nL2Jy
ZXcvRWRpdG9yQnJldy5jcHAKaW5kZXggNGExZjRkNy4uZTYwOTg5MSAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9lZGl0aW5nL2JyZXcvRWRpdG9yQnJldy5jcHAKKysrIGIvV2ViQ29yZS9lZGl0aW5nL2Jy
ZXcvRWRpdG9yQnJldy5jcHAKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBQYXNzUmVmUHRyPENsaXBib2FyZD4gRWRpdG9yOjpuZXdHZW5lcmFsQ2xpcGJvYXJkKENsaXBi
b2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIEZyYW1lKikKIHsKLSAgICByZXR1cm4gbmV3IENsaXBi
b2FyZEJyZXcocG9saWN5LCBmYWxzZSk7CisgICAgcmV0dXJuIG5ldyBDbGlwYm9hcmRCcmV3KHBv
bGljeSwgQ2xpcGJvYXJkOjpDb3B5QW5kUGFzdGUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcvY2hyb21pdW0vRWRpdG9yQ2hyb21pdW0u
Y3BwIGIvV2ViQ29yZS9lZGl0aW5nL2Nocm9taXVtL0VkaXRvckNocm9taXVtLmNwcAppbmRleCA3
YTEzYjEyLi5jOTM4YTdlIDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvY2hyb21pdW0vRWRp
dG9yQ2hyb21pdW0uY3BwCisrKyBiL1dlYkNvcmUvZWRpdGluZy9jaHJvbWl1bS9FZGl0b3JDaHJv
bWl1bS5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBQYXNzUmVm
UHRyPENsaXBib2FyZD4gRWRpdG9yOjpuZXdHZW5lcmFsQ2xpcGJvYXJkKENsaXBib2FyZEFjY2Vz
c1BvbGljeSBwb2xpY3ksIEZyYW1lKiBmcmFtZSkKIHsKLSAgICByZXR1cm4gQ2xpcGJvYXJkQ2hy
b21pdW06OmNyZWF0ZShmYWxzZSwgQ2hyb21pdW1EYXRhT2JqZWN0OjpjcmVhdGUoKSwgcG9saWN5
LCBmcmFtZSk7CisgICAgcmV0dXJuIENsaXBib2FyZENocm9taXVtOjpjcmVhdGUoQ2xpcGJvYXJk
OjpDb3B5QW5kUGFzdGUsIENocm9taXVtRGF0YU9iamVjdDo6Y3JlYXRlKCksIHBvbGljeSwgZnJh
bWUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Vk
aXRpbmcvaGFpa3UvRWRpdG9ySGFpa3UuY3BwIGIvV2ViQ29yZS9lZGl0aW5nL2hhaWt1L0VkaXRv
ckhhaWt1LmNwcAppbmRleCA0NTk2YzllLi4yYjNkMGJhIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Vk
aXRpbmcvaGFpa3UvRWRpdG9ySGFpa3UuY3BwCisrKyBiL1dlYkNvcmUvZWRpdGluZy9oYWlrdS9F
ZGl0b3JIYWlrdS5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBQ
YXNzUmVmUHRyPENsaXBib2FyZD4gRWRpdG9yOjpuZXdHZW5lcmFsQ2xpcGJvYXJkKENsaXBib2Fy
ZEFjY2Vzc1BvbGljeSBwb2xpY3ksIEZyYW1lKikKIHsKLSAgICByZXR1cm4gQ2xpcGJvYXJkSGFp
a3U6OmNyZWF0ZShwb2xpY3ksIGZhbHNlKTsKKyAgICByZXR1cm4gQ2xpcGJvYXJkSGFpa3U6OmNy
ZWF0ZShwb2xpY3ksIENsaXBib2FyZDo6Q29weUFuZFBhc3RlKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0g
Yi9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQppbmRleCBmMDEwOTA4Li5iNWUzYjI1
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQorKysgYi9XZWJD
b3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQpAQCAtNDIsNyArNDIsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIFBhc3NSZWZQdHI8Q2xpcGJvYXJkPiBFZGl0b3I6Om5ld0dlbmVyYWxDbGlw
Ym9hcmQoQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSwgRnJhbWUqIGZyYW1lKQogewotICAg
IHJldHVybiBDbGlwYm9hcmRNYWM6OmNyZWF0ZShmYWxzZSwgW05TUGFzdGVib2FyZCBnZW5lcmFs
UGFzdGVib2FyZF0sIHBvbGljeSwgZnJhbWUpOworICAgIHJldHVybiBDbGlwYm9hcmRNYWM6OmNy
ZWF0ZShDbGlwYm9hcmQ6OkNvcHlBbmRQYXN0ZSwgW05TUGFzdGVib2FyZCBnZW5lcmFsUGFzdGVi
b2FyZF0sIHBvbGljeSwgZnJhbWUpOwogfQogCiB2b2lkIEVkaXRvcjo6c2hvd0ZvbnRQYW5lbCgp
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcvd3gvRWRpdG9yV3guY3BwIGIvV2ViQ29yZS9l
ZGl0aW5nL3d4L0VkaXRvcld4LmNwcAppbmRleCBhMmVjNjU0Li44M2Q2Yjc4IDEwMDY0NAotLS0g
YS9XZWJDb3JlL2VkaXRpbmcvd3gvRWRpdG9yV3guY3BwCisrKyBiL1dlYkNvcmUvZWRpdGluZy93
eC9FZGl0b3JXeC5jcHAKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBQ
YXNzUmVmUHRyPENsaXBib2FyZD4gRWRpdG9yOjpuZXdHZW5lcmFsQ2xpcGJvYXJkKENsaXBib2Fy
ZEFjY2Vzc1BvbGljeSBwb2xpY3ksIEZyYW1lKikgCiB7IAotICAgIHJldHVybiBDbGlwYm9hcmRX
eDo6Y3JlYXRlKHBvbGljeSwgdHJ1ZSk7CisgICAgcmV0dXJuIENsaXBib2FyZFd4OjpjcmVhdGUo
cG9saWN5LCBDbGlwYm9hcmQ6OkNvcHlBbmRQYXN0ZSk7CiB9CiAKIHZvaWQgRWRpdG9yOjpzaG93
Q29sb3JQYW5lbCgpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvY2hyb21pdW0vRXZlbnRIYW5k
bGVyQ2hyb21pdW0uY3BwIGIvV2ViQ29yZS9wYWdlL2Nocm9taXVtL0V2ZW50SGFuZGxlckNocm9t
aXVtLmNwcAppbmRleCBkZDZjZjk5Li45ZTlhNzlhIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2Uv
Y2hyb21pdW0vRXZlbnRIYW5kbGVyQ2hyb21pdW0uY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9jaHJv
bWl1bS9FdmVudEhhbmRsZXJDaHJvbWl1bS5jcHAKQEAgLTEyOSw3ICsxMjksNyBAQCBib29sIEV2
ZW50SGFuZGxlcjo6ZXZlbnRBY3RpdmF0ZWRWaWV3KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYg
ZXZlbnQpIGNvbnN0CiBQYXNzUmVmUHRyPENsaXBib2FyZD4gRXZlbnRIYW5kbGVyOjpjcmVhdGVE
cmFnZ2luZ0NsaXBib2FyZCgpIGNvbnN0CiB7CiAgICAgUmVmUHRyPENocm9taXVtRGF0YU9iamVj
dD4gZGF0YU9iamVjdCA9IENocm9taXVtRGF0YU9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgcmV0dXJu
IENsaXBib2FyZENocm9taXVtOjpjcmVhdGUodHJ1ZSwgZGF0YU9iamVjdC5nZXQoKSwgQ2xpcGJv
YXJkV3JpdGFibGUsIG1fZnJhbWUpOworICAgIHJldHVybiBDbGlwYm9hcmRDaHJvbWl1bTo6Y3Jl
YXRlKENsaXBib2FyZDo6RHJhZ0FuZERyb3AsIGRhdGFPYmplY3QuZ2V0KCksIENsaXBib2FyZFdy
aXRhYmxlLCBtX2ZyYW1lKTsKIH0KIAogdm9pZCBFdmVudEhhbmRsZXI6OmZvY3VzRG9jdW1lbnRW
aWV3KCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9lZmwvRXZlbnRIYW5kbGVyRWZsLmNwcCBi
L1dlYkNvcmUvcGFnZS9lZmwvRXZlbnRIYW5kbGVyRWZsLmNwcAppbmRleCBhY2Y0MzQzLi4zM2Ri
MTdlIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvZWZsL0V2ZW50SGFuZGxlckVmbC5jcHAKKysr
IGIvV2ViQ29yZS9wYWdlL2VmbC9FdmVudEhhbmRsZXJFZmwuY3BwCkBAIC0xMTAsNyArMTEwLDcg
QEAgYm9vbCBFdmVudEhhbmRsZXI6OnBhc3NXaGVlbEV2ZW50VG9XaWRnZXQoUGxhdGZvcm1XaGVl
bEV2ZW50JiBldmVudCwgV2lkZ2V0KiB3aWQKIAogUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IEV2ZW50
SGFuZGxlcjo6Y3JlYXRlRHJhZ2dpbmdDbGlwYm9hcmQoKSBjb25zdAogewotICAgIHJldHVybiBD
bGlwYm9hcmRFZmw6OmNyZWF0ZShDbGlwYm9hcmRXcml0YWJsZSwgdHJ1ZSk7CisgICAgcmV0dXJu
IENsaXBib2FyZEVmbDo6Y3JlYXRlKENsaXBib2FyZFdyaXRhYmxlLCBDbGlwYm9hcmQ6OkRyYWdB
bmREcm9wKTsKIH0KIAogYm9vbCBFdmVudEhhbmRsZXI6OnBhc3NNb3VzZVByZXNzRXZlbnRUb1N1
YmZyYW1lKE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIG1ldiwgRnJhbWUqIHN1YmZyYW1l
KQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL2d0ay9FdmVudEhhbmRsZXJHdGsuY3BwIGIvV2Vi
Q29yZS9wYWdlL2d0ay9FdmVudEhhbmRsZXJHdGsuY3BwCmluZGV4IDQyOWFlYTYuLjZlNjlkOWYg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9ndGsvRXZlbnRIYW5kbGVyR3RrLmNwcAorKysgYi9X
ZWJDb3JlL3BhZ2UvZ3RrL0V2ZW50SGFuZGxlckd0ay5jcHAKQEAgLTk2LDcgKzk2LDcgQEAgYm9v
bCBFdmVudEhhbmRsZXI6OnBhc3NXaGVlbEV2ZW50VG9XaWRnZXQoUGxhdGZvcm1XaGVlbEV2ZW50
JiBldmVudCwgV2lkZ2V0KiB3aWQKIAogUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IEV2ZW50SGFuZGxl
cjo6Y3JlYXRlRHJhZ2dpbmdDbGlwYm9hcmQoKSBjb25zdAogewotICAgIHJldHVybiBDbGlwYm9h
cmRHdGs6OmNyZWF0ZShDbGlwYm9hcmRXcml0YWJsZSwgRGF0YU9iamVjdEd0azo6Y3JlYXRlKCks
IHRydWUsIG1fZnJhbWUpOworICAgIHJldHVybiBDbGlwYm9hcmRHdGs6OmNyZWF0ZShDbGlwYm9h
cmRXcml0YWJsZSwgRGF0YU9iamVjdEd0azo6Y3JlYXRlKCksIENsaXBib2FyZDo6RHJhZ0FuZERy
b3AsIG1fZnJhbWUpOwogfQogCiBib29sIEV2ZW50SGFuZGxlcjo6cGFzc01vdXNlUHJlc3NFdmVu
dFRvU3ViZnJhbWUoTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgbWV2LCBGcmFtZSogc3Vi
ZnJhbWUpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvaGFpa3UvRXZlbnRIYW5kbGVySGFpa3Uu
Y3BwIGIvV2ViQ29yZS9wYWdlL2hhaWt1L0V2ZW50SGFuZGxlckhhaWt1LmNwcAppbmRleCA0NTA0
MTRkLi45MzM5MjFhIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvaGFpa3UvRXZlbnRIYW5kbGVy
SGFpa3UuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9oYWlrdS9FdmVudEhhbmRsZXJIYWlrdS5jcHAK
QEAgLTEyMiw3ICsxMjIsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6cGFzc1doZWVsRXZlbnRUb1dp
ZGdldChQbGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50LCBXaWRnZXQqIHdpZAogCiBQYXNzUmVmUHRy
PENsaXBib2FyZD4gRXZlbnRIYW5kbGVyOjpjcmVhdGVEcmFnZ2luZ0NsaXBib2FyZCgpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIENsaXBib2FyZEhhaWt1OjpjcmVhdGUoQ2xpcGJvYXJkV3JpdGFibGUs
IHRydWUpOworICAgIHJldHVybiBDbGlwYm9hcmRIYWlrdTo6Y3JlYXRlKENsaXBib2FyZFdyaXRh
YmxlLCBDbGlwYm9hcmQ6OkRyYWdBbmREcm9wKTsKIH0KIAogYm9vbCBFdmVudEhhbmRsZXI6OnBh
c3NNb3VzZVByZXNzRXZlbnRUb1N1YmZyYW1lKE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMm
IG1ldiwgRnJhbWUqIHN1YmZyYW1lKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL21hYy9FdmVu
dEhhbmRsZXJNYWMubW0gYi9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbQppbmRl
eCA1ODRmMzhmLi4yZGI3MTNmIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFu
ZGxlck1hYy5tbQorKysgYi9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbQpAQCAt
NzEyLDcgKzcxMiw3IEBAIFBhc3NSZWZQdHI8Q2xpcGJvYXJkPiBFdmVudEhhbmRsZXI6OmNyZWF0
ZURyYWdnaW5nQ2xpcGJvYXJkKCkgY29uc3QKICAgICAvLyBNdXN0IGJlIGRvbmUgYmVmb3JlIG9u
ZHJhZ3N0YXJ0IGFkZHMgdHlwZXMgYW5kIGRhdGEgdG8gdGhlIHBib2FyZCwKICAgICAvLyBhbHNv
IGRvbmUgZm9yIHNlY3VyaXR5LCBhcyBpdCBlcmFzZXMgZGF0YSBmcm9tIHRoZSBsYXN0IGRyYWcK
ICAgICBbcGFzdGVib2FyZCBkZWNsYXJlVHlwZXM6W05TQXJyYXkgYXJyYXldIG93bmVyOm5pbF07
Ci0gICAgcmV0dXJuIENsaXBib2FyZE1hYzo6Y3JlYXRlKHRydWUsIHBhc3RlYm9hcmQsIENsaXBi
b2FyZFdyaXRhYmxlLCBtX2ZyYW1lKTsKKyAgICByZXR1cm4gQ2xpcGJvYXJkTWFjOjpjcmVhdGUo
Q2xpcGJvYXJkOjpEcmFnQW5kRHJvcCwgcGFzdGVib2FyZCwgQ2xpcGJvYXJkV3JpdGFibGUsIG1f
ZnJhbWUpOwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9xdC9FdmVudEhh
bmRsZXJRdC5jcHAgYi9XZWJDb3JlL3BhZ2UvcXQvRXZlbnRIYW5kbGVyUXQuY3BwCmluZGV4IDE4
ZDliNzMuLjJjNjU4ZTcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9xdC9FdmVudEhhbmRsZXJR
dC5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL3F0L0V2ZW50SGFuZGxlclF0LmNwcApAQCAtMTEzLDcg
KzExMyw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpwYXNzV2hlZWxFdmVudFRvV2lkZ2V0KFBsYXRm
b3JtV2hlZWxFdmVudCYgZXZlbnQsIFdpZGdldCogd2lkCiAKIFBhc3NSZWZQdHI8Q2xpcGJvYXJk
PiBFdmVudEhhbmRsZXI6OmNyZWF0ZURyYWdnaW5nQ2xpcGJvYXJkKCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gQ2xpcGJvYXJkUXQ6OmNyZWF0ZShDbGlwYm9hcmRXcml0YWJsZSwgdHJ1ZSk7CisgICAg
cmV0dXJuIENsaXBib2FyZFF0OjpjcmVhdGUoQ2xpcGJvYXJkV3JpdGFibGUsIENsaXBib2FyZDo6
RHJhZ0FuZERyb3ApOwogfQogCiBib29sIEV2ZW50SGFuZGxlcjo6cGFzc01vdXNlUHJlc3NFdmVu
dFRvU3ViZnJhbWUoTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgbWV2LCBGcmFtZSogc3Vi
ZnJhbWUpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2Uvd2luL0V2ZW50SGFuZGxlcldpbi5jcHAg
Yi9XZWJDb3JlL3BhZ2Uvd2luL0V2ZW50SGFuZGxlcldpbi5jcHAKaW5kZXggZWU0YjM2MC4uYTFj
MTVjNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL3dpbi9FdmVudEhhbmRsZXJXaW4uY3BwCisr
KyBiL1dlYkNvcmUvcGFnZS93aW4vRXZlbnRIYW5kbGVyV2luLmNwcApAQCAtOTgsNyArOTgsNyBA
QCBQYXNzUmVmUHRyPENsaXBib2FyZD4gRXZlbnRIYW5kbGVyOjpjcmVhdGVEcmFnZ2luZ0NsaXBi
b2FyZCgpIGNvbnN0CiAjZWxzZQogICAgIENPTVB0cjxXQ0RhdGFPYmplY3Q+IGRhdGFPYmplY3Q7
CiAgICAgV0NEYXRhT2JqZWN0OjpjcmVhdGVJbnN0YW5jZSgmZGF0YU9iamVjdCk7Ci0gICAgcmV0
dXJuIENsaXBib2FyZFdpbjo6Y3JlYXRlKHRydWUsIGRhdGFPYmplY3QuZ2V0KCksIENsaXBib2Fy
ZFdyaXRhYmxlLCBtX2ZyYW1lKTsKKyAgICByZXR1cm4gQ2xpcGJvYXJkV2luOjpjcmVhdGUoQ2xp
cGJvYXJkOjpEcmFnQW5kRHJvcCwgZGF0YU9iamVjdC5nZXQoKSwgQ2xpcGJvYXJkV3JpdGFibGUs
IG1fZnJhbWUpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS93eC9FdmVu
dEhhbmRsZXJXeC5jcHAgYi9XZWJDb3JlL3BhZ2Uvd3gvRXZlbnRIYW5kbGVyV3guY3BwCmluZGV4
IGY0ZjY5MTQuLmZiYjFlYWEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS93eC9FdmVudEhhbmRs
ZXJXeC5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL3d4L0V2ZW50SGFuZGxlcld4LmNwcApAQCAtMTE2
LDcgKzExNiw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpldmVudEFjdGl2YXRlZFZpZXcoY29uc3Qg
UGxhdGZvcm1Nb3VzZUV2ZW50JikgY29uc3QKIAogUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IEV2ZW50
SGFuZGxlcjo6Y3JlYXRlRHJhZ2dpbmdDbGlwYm9hcmQoKSBjb25zdCAKIHsKLSAgICByZXR1cm4g
Q2xpcGJvYXJkV3g6OmNyZWF0ZShDbGlwYm9hcmRXcml0YWJsZSwgdHJ1ZSk7CisgICAgcmV0dXJu
IENsaXBib2FyZFd4OjpjcmVhdGUoQ2xpcGJvYXJkV3JpdGFibGUsIENsaXBib2FyZDo6RHJhZ0Fu
ZERyb3ApOwogfQogCiB1bnNpZ25lZCBFdmVudEhhbmRsZXI6OmFjY2Vzc0tleU1vZGlmaWVycygp
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2FuZHJvaWQvQ2xpcGJvYXJkQW5kcm9pZC5j
cHAgYi9XZWJDb3JlL3BsYXRmb3JtL2FuZHJvaWQvQ2xpcGJvYXJkQW5kcm9pZC5jcHAKaW5kZXgg
ZDliMmQ2OC4uYTkxZmQyMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9hbmRyb2lkL0Ns
aXBib2FyZEFuZHJvaWQuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vYW5kcm9pZC9DbGlwYm9h
cmRBbmRyb2lkLmNwcApAQCAtNDAsOCArNDAsOCBAQCBQYXNzUmVmUHRyPENsaXBib2FyZD4gQ2xp
cGJvYXJkOjpjcmVhdGUoQ2xpcGJvYXJkQWNjZXNzUG9saWN5LCBEcmFnRGF0YSosIEZyYW1lKgog
ICAgIHJldHVybiAwOwogfQogCi1DbGlwYm9hcmRBbmRyb2lkOjpDbGlwYm9hcmRBbmRyb2lkKENs
aXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIGJvb2wgaXNGb3JEcmFnZ2luZykKLSAgICA6IENs
aXBib2FyZChwb2xpY3ksIGlzRm9yRHJhZ2dpbmcpCitDbGlwYm9hcmRBbmRyb2lkOjpDbGlwYm9h
cmRBbmRyb2lkKENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIENsaXBib2FyZFR5cGUgY2xp
cGJvYXJkVHlwZSkKKyAgICA6IENsaXBib2FyZChwb2xpY3ksIGNsaXBib2FyZFR5cGUpCiB7CiB9
CiAKQEAgLTUxLDEyICs1MSwxMiBAQCBDbGlwYm9hcmRBbmRyb2lkOjp+Q2xpcGJvYXJkQW5kcm9p
ZCgpCiAKIHZvaWQgQ2xpcGJvYXJkQW5kcm9pZDo6Y2xlYXJEYXRhKGNvbnN0IFN0cmluZyYpCiB7
Ci0gICAgQVNTRVJUKGlzRm9yRHJhZ2dpbmcoKSk7CisgICAgQVNTRVJUKGlzRm9yRHJhZ0FuZERy
b3AoKSk7CiB9CiAKIHZvaWQgQ2xpcGJvYXJkQW5kcm9pZDo6Y2xlYXJBbGxEYXRhKCkKIHsKLSAg
ICBBU1NFUlQoaXNGb3JEcmFnZ2luZygpKTsKKyAgICBBU1NFUlQoaXNGb3JEcmFnQW5kRHJvcCgp
KTsKIH0KIAogU3RyaW5nIENsaXBib2FyZEFuZHJvaWQ6OmdldERhdGEoY29uc3QgU3RyaW5nJiwg
Ym9vbCYgc3VjY2VzcykgY29uc3QKQEAgLTY3LDcgKzY3LDcgQEAgU3RyaW5nIENsaXBib2FyZEFu
ZHJvaWQ6OmdldERhdGEoY29uc3QgU3RyaW5nJiwgYm9vbCYgc3VjY2VzcykgY29uc3QKIAogYm9v
bCBDbGlwYm9hcmRBbmRyb2lkOjpzZXREYXRhKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYp
CiB7Ci0gICAgQVNTRVJUKGlzRm9yRHJhZ2dpbmcoKSk7CisgICAgQVNTRVJUKGlzRm9yRHJhZ0Fu
ZERyb3AoKSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3Bs
YXRmb3JtL2FuZHJvaWQvQ2xpcGJvYXJkQW5kcm9pZC5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9hbmRy
b2lkL0NsaXBib2FyZEFuZHJvaWQuaAppbmRleCAyM2JmZGY2Li44MDc2NTNiIDEwMDY0NAotLS0g
YS9XZWJDb3JlL3BsYXRmb3JtL2FuZHJvaWQvQ2xpcGJvYXJkQW5kcm9pZC5oCisrKyBiL1dlYkNv
cmUvcGxhdGZvcm0vYW5kcm9pZC9DbGlwYm9hcmRBbmRyb2lkLmgKQEAgLTM3LDcgKzM3LDcgQEAg
Y2xhc3MgQ2FjaGVkSW1hZ2U7CiAKIGNsYXNzIENsaXBib2FyZEFuZHJvaWQgOiBwdWJsaWMgQ2xp
cGJvYXJkLCBwdWJsaWMgQ2FjaGVkUmVzb3VyY2VDbGllbnQgewogcHVibGljOgotICAgIENsaXBi
b2FyZEFuZHJvaWQoQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSwgYm9vbCBpc0ZvckRyYWdn
aW5nKTsKKyAgICBDbGlwYm9hcmRBbmRyb2lkKENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ks
IENsaXBib2FyZFR5cGUpOwogICAgIH5DbGlwYm9hcmRBbmRyb2lkKCk7CiAKICAgICB2b2lkIGNs
ZWFyRGF0YShjb25zdCBTdHJpbmcmKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vYnJl
dy9DbGlwYm9hcmRCcmV3LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vYnJldy9DbGlwYm9hcmRCcmV3
LmNwcAppbmRleCA3MjBkNmE2Li4xMDAyNWQ2IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3Jt
L2JyZXcvQ2xpcGJvYXJkQnJldy5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9icmV3L0NsaXBi
b2FyZEJyZXcuY3BwCkBAIC00MSw4ICs0MSw4IEBAIFBhc3NSZWZQdHI8Q2xpcGJvYXJkPiBDbGlw
Ym9hcmQ6OmNyZWF0ZShDbGlwYm9hcmRBY2Nlc3NQb2xpY3ksIERyYWdEYXRhKiwgRnJhbWUqCiAg
ICAgcmV0dXJuIDA7CiB9CiAKLUNsaXBib2FyZEJyZXc6OkNsaXBib2FyZEJyZXcoQ2xpcGJvYXJk
QWNjZXNzUG9saWN5IHBvbGljeSwgYm9vbCBpc0ZvckRyYWdnaW5nKQotICAgIDogQ2xpcGJvYXJk
KHBvbGljeSwgaXNGb3JEcmFnZ2luZykKK0NsaXBib2FyZEJyZXc6OkNsaXBib2FyZEJyZXcoQ2xp
cGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSwgQ2xpcGJvYXJkVHlwZSBjbGlwYm9hcmRUeXBlKQor
ICAgIDogQ2xpcGJvYXJkKGNsaXBib2FyZFR5cGUsIGlzRm9yRHJhZ2dpbmcpCiB7CiB9CiAKQEAg
LTUyLDEyICs1MiwxMiBAQCBDbGlwYm9hcmRCcmV3Ojp+Q2xpcGJvYXJkQnJldygpCiAKIHZvaWQg
Q2xpcGJvYXJkQnJldzo6Y2xlYXJEYXRhKGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgQVNTRVJUKGlz
Rm9yRHJhZ2dpbmcoKSk7CisgICAgQVNTRVJUKGlzRm9yRHJhZ0FuZERyb3AoKSk7CiB9CiAKIHZv
aWQgQ2xpcGJvYXJkQnJldzo6Y2xlYXJBbGxEYXRhKCkKIHsKLSAgICBBU1NFUlQoaXNGb3JEcmFn
Z2luZygpKTsKKyAgICBBU1NFUlQoaXNGb3JEcmFnQW5kRHJvcCgpKTsKIH0KIAogU3RyaW5nIENs
aXBib2FyZEJyZXc6OmdldERhdGEoY29uc3QgU3RyaW5nJiwgYm9vbCYgc3VjY2VzcykgY29uc3QK
QEAgLTY4LDcgKzY4LDcgQEAgU3RyaW5nIENsaXBib2FyZEJyZXc6OmdldERhdGEoY29uc3QgU3Ry
aW5nJiwgYm9vbCYgc3VjY2VzcykgY29uc3QKIAogYm9vbCBDbGlwYm9hcmRCcmV3OjpzZXREYXRh
KGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgQVNTRVJUKGlzRm9yRHJhZ2dp
bmcoKSk7CisgICAgQVNTRVJUKGlzRm9yRHJhZ0FuZERyb3AoKSk7CiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2JyZXcvQ2xpcGJvYXJkQnJldy5o
IGIvV2ViQ29yZS9wbGF0Zm9ybS9icmV3L0NsaXBib2FyZEJyZXcuaAppbmRleCBhOTY2ZGIxLi4x
ZmFmMDMxIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2JyZXcvQ2xpcGJvYXJkQnJldy5o
CisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vYnJldy9DbGlwYm9hcmRCcmV3LmgKQEAgLTM2LDcgKzM2
LDcgQEAgY2xhc3MgQ2FjaGVkSW1hZ2U7CiAKIGNsYXNzIENsaXBib2FyZEJyZXcgOiBwdWJsaWMg
Q2xpcGJvYXJkLCBwdWJsaWMgQ2FjaGVkUmVzb3VyY2VDbGllbnQgewogcHVibGljOgotICAgIENs
aXBib2FyZEJyZXcoQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSwgYm9vbCBpc0ZvckRyYWdn
aW5nKTsKKyAgICBDbGlwYm9hcmRCcmV3KENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIENs
aXBib2FyZFR5cGUpOwogICAgIH5DbGlwYm9hcmRCcmV3KCk7CiAKICAgICB2b2lkIGNsZWFyRGF0
YShjb25zdCBTdHJpbmcmKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0v
Q2xpcGJvYXJkQ2hyb21pdW0uY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9h
cmRDaHJvbWl1bS5jcHAKaW5kZXggM2Q4MmFlYS4uYzJlYzgwYyAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5jcHAKKysrIGIvV2ViQ29yZS9w
bGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5jcHAKQEAgLTkzLDIzICs5MywyMyBA
QCBzdGF0aWMgQ2xpcGJvYXJkRGF0YVR5cGUgY2xpcGJvYXJkVHlwZUZyb21NSU1FVHlwZShjb25z
dCBTdHJpbmcmIHR5cGUpCiAKIFBhc3NSZWZQdHI8Q2xpcGJvYXJkPiBDbGlwYm9hcmQ6OmNyZWF0
ZShDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5LCBEcmFnRGF0YSogZHJhZ0RhdGEsIEZyYW1l
KiBmcmFtZSkKIHsKLSAgICByZXR1cm4gQ2xpcGJvYXJkQ2hyb21pdW06OmNyZWF0ZSh0cnVlLCBk
cmFnRGF0YS0+cGxhdGZvcm1EYXRhKCksIHBvbGljeSwgZnJhbWUpOworICAgIHJldHVybiBDbGlw
Ym9hcmRDaHJvbWl1bTo6Y3JlYXRlKERyYWdBbmREcm9wLCBkcmFnRGF0YS0+cGxhdGZvcm1EYXRh
KCksIHBvbGljeSwgZnJhbWUpOwogfQogCi1DbGlwYm9hcmRDaHJvbWl1bTo6Q2xpcGJvYXJkQ2hy
b21pdW0oYm9vbCBpc0ZvckRyYWdnaW5nLAorQ2xpcGJvYXJkQ2hyb21pdW06OkNsaXBib2FyZENo
cm9taXVtKENsaXBib2FyZFR5cGUgY2xpcGJvYXJkVHlwZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBQYXNzUmVmUHRyPENocm9taXVtRGF0YU9iamVjdD4gZGF0YU9iamVj
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbGlwYm9hcmRBY2Nlc3NQ
b2xpY3kgcG9saWN5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyYW1l
KiBmcmFtZSkKLSAgICA6IENsaXBib2FyZChwb2xpY3ksIGlzRm9yRHJhZ2dpbmcpCisgICAgOiBD
bGlwYm9hcmQocG9saWN5LCBjbGlwYm9hcmRUeXBlKQogICAgICwgbV9kYXRhT2JqZWN0KGRhdGFP
YmplY3QpCiAgICAgLCBtX2ZyYW1lKGZyYW1lKQogewogfQogCi1QYXNzUmVmUHRyPENsaXBib2Fy
ZENocm9taXVtPiBDbGlwYm9hcmRDaHJvbWl1bTo6Y3JlYXRlKGJvb2wgaXNGb3JEcmFnZ2luZywK
K1Bhc3NSZWZQdHI8Q2xpcGJvYXJkQ2hyb21pdW0+IENsaXBib2FyZENocm9taXVtOjpjcmVhdGUo
Q2xpcGJvYXJkVHlwZSBjbGlwYm9hcmRUeXBlLAogICAgIFBhc3NSZWZQdHI8Q2hyb21pdW1EYXRh
T2JqZWN0PiBkYXRhT2JqZWN0LCBDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5LCBGcmFtZSog
ZnJhbWUpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDbGlwYm9hcmRDaHJvbWl1bShpc0Zv
ckRyYWdnaW5nLCBkYXRhT2JqZWN0LCBwb2xpY3ksIGZyYW1lKSk7CisgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBDbGlwYm9hcmRDaHJvbWl1bShjbGlwYm9hcmRUeXBlLCBkYXRhT2JqZWN0LCBwb2xp
Y3ksIGZyYW1lKSk7CiB9CiAKIHZvaWQgQ2xpcGJvYXJkQ2hyb21pdW06OmNsZWFyRGF0YShjb25z
dCBTdHJpbmcmIHR5cGUpCkBAIC0yMDMsOSArMjAzLDcgQEAgU3RyaW5nIENsaXBib2FyZENocm9t
aXVtOjpnZXREYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgYm9vbCYgc3VjY2VzcykgY29uc3QKICAg
ICAgICAgcmV0dXJuIG1fZGF0YU9iamVjdC0+ZG93bmxvYWRNZXRhZGF0YTsKICAgICAKICAgICBj
YXNlIENsaXBib2FyZERhdGFUeXBlUGxhaW5UZXh0OgotICAgICAgICBpZiAoIWlzRm9yRHJhZ2dp
bmcoKSkgewotICAgICAgICAgICAgLy8gSWYgdGhpcyBpc24ndCBmb3IgYSBkcmFnLCBpdCdzIGZv
ciBhIGN1dC9wYXN0ZSBldmVudCBoYW5kbGVyLgotICAgICAgICAgICAgLy8gSW4gdGhpcyBjYXNl
LCB3ZSBuZWVkIHRvIGNoZWNrIHRoZSBjbGlwYm9hcmQuCisgICAgICAgIGlmIChpc0ZvckNvcHlB
bmRQYXN0ZSgpKSB7CiAgICAgICAgICAgICBQYXN0ZWJvYXJkUHJpdmF0ZTo6Q2xpcGJvYXJkQnVm
ZmVyIGJ1ZmZlciA9IAogICAgICAgICAgICAgICAgIFBhc3RlYm9hcmQ6OmdlbmVyYWxQYXN0ZWJv
YXJkKCktPmlzU2VsZWN0aW9uTW9kZSgpID8KICAgICAgICAgICAgICAgICBQYXN0ZWJvYXJkUHJp
dmF0ZTo6U2VsZWN0aW9uQnVmZmVyIDogCkBAIC0yMTksOSArMjE3LDcgQEAgU3RyaW5nIENsaXBi
b2FyZENocm9taXVtOjpnZXREYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgYm9vbCYgc3VjY2Vzcykg
Y29uc3QKICAgICAgICAgcmV0dXJuIG1fZGF0YU9iamVjdC0+cGxhaW5UZXh0OwogCiAgICAgY2Fz
ZSBDbGlwYm9hcmREYXRhVHlwZUhUTUw6Ci0gICAgICAgIGlmICghaXNGb3JEcmFnZ2luZygpKSB7
Ci0gICAgICAgICAgICAvLyBJZiB0aGlzIGlzbid0IGZvciBhIGRyYWcsIGl0J3MgZm9yIGEgY3V0
L3Bhc3RlIGV2ZW50IGhhbmRsZXIuCi0gICAgICAgICAgICAvLyBJbiB0aGlzIGNhc2UsIHdlIG5l
ZWQgdG8gY2hlY2sgdGhlIGNsaXBib2FyZC4KKyAgICAgICAgaWYgKGlzRm9yQ29weUFuZFBhc3Rl
KCkpIHsKICAgICAgICAgICAgIFBhc3RlYm9hcmRQcml2YXRlOjpDbGlwYm9hcmRCdWZmZXIgYnVm
ZmVyID0gCiAgICAgICAgICAgICAgICAgUGFzdGVib2FyZDo6Z2VuZXJhbFBhc3RlYm9hcmQoKS0+
aXNTZWxlY3Rpb25Nb2RlKCkgPwogICAgICAgICAgICAgICAgIFBhc3RlYm9hcmRQcml2YXRlOjpT
ZWxlY3Rpb25CdWZmZXIgOiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0v
Q2xpcGJvYXJkQ2hyb21pdW0uaCBiL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJk
Q2hyb21pdW0uaAppbmRleCBhNDE1MGQwLi4xNGY1OWU5IDEwMDY0NAotLS0gYS9XZWJDb3JlL3Bs
YXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9taXVtLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9y
bS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5oCkBAIC00Niw3ICs0Niw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgfkNsaXBib2FyZENocm9taXVtKCkge30KIAogICAgICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxDbGlwYm9hcmRDaHJvbWl1bT4gY3JlYXRlKAotICAgICAgICAgICAg
Ym9vbCBpc0ZvckRyYWdnaW5nLCBQYXNzUmVmUHRyPENocm9taXVtRGF0YU9iamVjdD4sIENsaXBi
b2FyZEFjY2Vzc1BvbGljeSwgRnJhbWUqKTsKKyAgICAgICAgICAgIENsaXBib2FyZFR5cGUsIFBh
c3NSZWZQdHI8Q2hyb21pdW1EYXRhT2JqZWN0PiwgQ2xpcGJvYXJkQWNjZXNzUG9saWN5LCBGcmFt
ZSopOwogCiAgICAgICAgIC8vIFJldHVybnMgdGhlIGZpbGUgbmFtZSAobm90IGluY2x1ZGluZyB0
aGUgZXh0ZW5zaW9uKS4gVGhpcyByZW1vdmVzIGFueQogICAgICAgICAvLyBpbnZhbGlkIGZpbGUg
c3lzdGVtIGNoYXJhY3RlcnMgYXMgd2VsbCBhcyBtYWtpbmcgc3VyZSB0aGUKQEAgLTgwLDcgKzgw
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIGJvb2wgaGFzRGF0YSgp
OwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgQ2xpcGJvYXJkQ2hyb21pdW0oYm9vbCwgUGFzc1Jl
ZlB0cjxDaHJvbWl1bURhdGFPYmplY3Q+LCBDbGlwYm9hcmRBY2Nlc3NQb2xpY3ksIEZyYW1lKik7
CisgICAgICAgIENsaXBib2FyZENocm9taXVtKENsaXBib2FyZFR5cGUsIFBhc3NSZWZQdHI8Q2hy
b21pdW1EYXRhT2JqZWN0PiwgQ2xpcGJvYXJkQWNjZXNzUG9saWN5LCBGcmFtZSopOwogCiAgICAg
ICAgIHZvaWQgcmVzZXRGcm9tQ2xpcGJvYXJkKCk7CiAgICAgICAgIHZvaWQgc2V0RHJhZ0ltYWdl
KENhY2hlZEltYWdlKiwgTm9kZSosIGNvbnN0IEludFBvaW50Jik7CmRpZmYgLS1naXQgYS9XZWJD
b3JlL3BsYXRmb3JtL2VmbC9DbGlwYm9hcmRFZmwuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9lZmwv
Q2xpcGJvYXJkRWZsLmNwcAppbmRleCA2ZmM4MGRjLi5mZGMzODEzIDEwMDY0NAotLS0gYS9XZWJD
b3JlL3BsYXRmb3JtL2VmbC9DbGlwYm9hcmRFZmwuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0v
ZWZsL0NsaXBib2FyZEVmbC5jcHAKQEAgLTI5LDcgKzI5LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIFBhc3NSZWZQdHI8Q2xpcGJvYXJkPiBFZGl0b3I6Om5ld0dlbmVyYWxDbGlwYm9hcmQoQ2xp
cGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSwgRnJhbWUqKQogewotICAgIHJldHVybiBDbGlwYm9h
cmRFZmw6OmNyZWF0ZShwb2xpY3ksIGZhbHNlKTsKKyAgICByZXR1cm4gQ2xpcGJvYXJkRWZsOjpj
cmVhdGUocG9saWN5LCBDbGlwYm9hcmQ6OkNvcHlBbmRQYXN0ZSk7CiB9CiAKIFBhc3NSZWZQdHI8
Q2xpcGJvYXJkPiBDbGlwYm9hcmQ6OmNyZWF0ZShDbGlwYm9hcmRBY2Nlc3NQb2xpY3ksIERyYWdE
YXRhKiwgRnJhbWUqKQpAQCAtMzcsOCArMzcsOCBAQCBQYXNzUmVmUHRyPENsaXBib2FyZD4gQ2xp
cGJvYXJkOjpjcmVhdGUoQ2xpcGJvYXJkQWNjZXNzUG9saWN5LCBEcmFnRGF0YSosIEZyYW1lKgog
ICAgIHJldHVybiAwOwogfQogCi1DbGlwYm9hcmRFZmw6OkNsaXBib2FyZEVmbChDbGlwYm9hcmRB
Y2Nlc3NQb2xpY3kgcG9saWN5LCBib29sIGZvckRyYWdnaW5nKQotICAgIDogQ2xpcGJvYXJkKHBv
bGljeSwgZm9yRHJhZ2dpbmcpCitDbGlwYm9hcmRFZmw6OkNsaXBib2FyZEVmbChDbGlwYm9hcmRB
Y2Nlc3NQb2xpY3kgcG9saWN5LCBDbGlwYm9hcmRUeXBlIGNsaXBib2FyZFR5cGUpCisgICAgOiBD
bGlwYm9hcmQoY2xpcGJvYXJkVHlwZSwgZm9yRHJhZ2dpbmcpCiB7CiAgICAgbm90SW1wbGVtZW50
ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZWZsL0NsaXBib2FyZEVmbC5o
IGIvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvQ2xpcGJvYXJkRWZsLmgKaW5kZXggNWRiMmZlZC4uMDZm
NGU1OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvQ2xpcGJvYXJkRWZsLmgKKysr
IGIvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvQ2xpcGJvYXJkRWZsLmgKQEAgLTI4LDkgKzI4LDkgQEAg
Y2xhc3MgQ2FjaGVkSW1hZ2U7CiAKIGNsYXNzIENsaXBib2FyZEVmbCA6IHB1YmxpYyBDbGlwYm9h
cmQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPENsaXBib2FyZEVmbD4gY3JlYXRl
KENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIGJvb2wgZm9yRHJhZ2dpbmcgPSBmYWxzZSkK
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxDbGlwYm9hcmRFZmw+IGNyZWF0ZShDbGlwYm9hcmRBY2Nl
c3NQb2xpY3kgcG9saWN5LCBDbGlwYm9hcmRUeXBlIGNsaXBib2FyZFR5cGUgPSBDb3B5QW5kUGFz
dGUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENsaXBib2FyZEVmbChwb2xp
Y3ksIGZvckRyYWdnaW5nKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ2xpcGJvYXJk
RWZsKHBvbGljeSwgY2xpcGJvYXJkVHlwZSkpOwogICAgIH0KICAgICB+Q2xpcGJvYXJkRWZsKCk7
CiAKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3cml0ZVBsYWlu
VGV4dChjb25zdCBXVEY6OlN0cmluZyYpOwogCiBwcml2YXRlOgotICAgIENsaXBib2FyZEVmbChD
bGlwYm9hcmRBY2Nlc3NQb2xpY3ksIGJvb2wpOworICAgIENsaXBib2FyZEVmbChDbGlwYm9hcmRB
Y2Nlc3NQb2xpY3ksIENsaXBib2FyZFR5cGUpOwogfTsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3RrLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0Ns
aXBib2FyZEd0ay5jcHAKaW5kZXggMzI3ZjA2OS4uZTdlZTQzMiAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3RrLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9DbGlwYm9hcmRHdGsuY3BwCkBAIC0zNywyNyArMzcsMjcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1lbnVtIENsaXBib2FyZFR5cGUgewotICAgIENsaXBib2FyZFR5cGVUZXh0LAotICAg
IENsaXBib2FyZFR5cGVNYXJrdXAsCi0gICAgQ2xpcGJvYXJkVHlwZVVSSUxpc3QsCi0gICAgQ2xp
cGJvYXJkVHlwZVVSTCwKLSAgICBDbGlwYm9hcmRUeXBlSW1hZ2UsCi0gICAgQ2xpcGJvYXJkVHlw
ZVVua25vd24KK2VudW0gQ2xpcGJvYXJkRGF0YVR5cGUgeworICAgIENsaXBib2FyZERhdGFUeXBl
VGV4dCwKKyAgICBDbGlwYm9hcmREYXRhVHlwZU1hcmt1cCwKKyAgICBDbGlwYm9hcmREYXRhVHlw
ZVVSSUxpc3QsCisgICAgQ2xpcGJvYXJkRGF0YVR5cGVVUkwsCisgICAgQ2xpcGJvYXJkRGF0YVR5
cGVJbWFnZSwKKyAgICBDbGlwYm9hcmREYXRhVHlwZVVua25vd24KIH07CiAKIFBhc3NSZWZQdHI8
Q2xpcGJvYXJkPiBFZGl0b3I6Om5ld0dlbmVyYWxDbGlwYm9hcmQoQ2xpcGJvYXJkQWNjZXNzUG9s
aWN5IHBvbGljeSwgRnJhbWUqIGZyYW1lKQogewotICAgIHJldHVybiBDbGlwYm9hcmRHdGs6OmNy
ZWF0ZShwb2xpY3ksIGd0a19jbGlwYm9hcmRfZ2V0X2Zvcl9kaXNwbGF5KGdka19kaXNwbGF5X2dl
dF9kZWZhdWx0KCksIEdES19TRUxFQ1RJT05fQ0xJUEJPQVJEKSwgZmFsc2UsIGZyYW1lKTsKKyAg
ICByZXR1cm4gQ2xpcGJvYXJkR3RrOjpjcmVhdGUocG9saWN5LCBndGtfY2xpcGJvYXJkX2dldF9m
b3JfZGlzcGxheShnZGtfZGlzcGxheV9nZXRfZGVmYXVsdCgpLCBHREtfU0VMRUNUSU9OX0NMSVBC
T0FSRCksIGZyYW1lKTsKIH0KIAogUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IENsaXBib2FyZDo6Y3Jl
YXRlKENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIERyYWdEYXRhKiBkcmFnRGF0YSwgRnJh
bWUqIGZyYW1lKQogewotICAgIHJldHVybiBDbGlwYm9hcmRHdGs6OmNyZWF0ZShwb2xpY3ksIGRy
YWdEYXRhLT5wbGF0Zm9ybURhdGEoKSwgdHJ1ZSwgZnJhbWUpOworICAgIHJldHVybiBDbGlwYm9h
cmRHdGs6OmNyZWF0ZShwb2xpY3ksIGRyYWdEYXRhLT5wbGF0Zm9ybURhdGEoKSwgRHJhZ0FuZERy
b3AsIGZyYW1lKTsKIH0KIAogQ2xpcGJvYXJkR3RrOjpDbGlwYm9hcmRHdGsoQ2xpcGJvYXJkQWNj
ZXNzUG9saWN5IHBvbGljeSwgR3RrQ2xpcGJvYXJkKiBjbGlwYm9hcmQsIEZyYW1lKiBmcmFtZSkK
LSAgICA6IENsaXBib2FyZChwb2xpY3ksIGZhbHNlKQorICAgIDogQ2xpcGJvYXJkKHBvbGljeSwg
Q29weUFuZFBhc3RlKQogICAgICwgbV9kYXRhT2JqZWN0KERhdGFPYmplY3RHdGs6OmZvckNsaXBi
b2FyZChjbGlwYm9hcmQpKQogICAgICwgbV9jbGlwYm9hcmQoY2xpcGJvYXJkKQogICAgICwgbV9o
ZWxwZXIoUGFzdGVib2FyZDo6Z2VuZXJhbFBhc3RlYm9hcmQoKS0+aGVscGVyKCkpCkBAIC02NSw4
ICs2NSw4IEBAIENsaXBib2FyZEd0azo6Q2xpcGJvYXJkR3RrKENsaXBib2FyZEFjY2Vzc1BvbGlj
eSBwb2xpY3ksIEd0a0NsaXBib2FyZCogY2xpcGJvYXJkCiB7CiB9CiAKLUNsaXBib2FyZEd0azo6
Q2xpcGJvYXJkR3RrKENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIFBhc3NSZWZQdHI8RGF0
YU9iamVjdEd0az4gZGF0YU9iamVjdCwgYm9vbCBmb3JEcmFnZ2luZywgRnJhbWUqIGZyYW1lKQot
ICAgIDogQ2xpcGJvYXJkKHBvbGljeSwgZm9yRHJhZ2dpbmcpCitDbGlwYm9hcmRHdGs6OkNsaXBi
b2FyZEd0ayhDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5LCBQYXNzUmVmUHRyPERhdGFPYmpl
Y3RHdGs+IGRhdGFPYmplY3QsIENsaXBib2FyZFR5cGUgY2xpcGJvYXJkVHlwZSwgRnJhbWUqIGZy
YW1lKQorICAgIDogQ2xpcGJvYXJkKHBvbGljeSwgY2xpcGJvYXJkVHlwZSkKICAgICAsIG1fZGF0
YU9iamVjdChkYXRhT2JqZWN0KQogICAgICwgbV9jbGlwYm9hcmQoMCkKICAgICAsIG1faGVscGVy
KFBhc3RlYm9hcmQ6OmdlbmVyYWxQYXN0ZWJvYXJkKCktPmhlbHBlcigpKQpAQCAtNzgsMjcgKzc4
LDI3IEBAIENsaXBib2FyZEd0azo6fkNsaXBib2FyZEd0aygpCiB7CiB9CiAKLXN0YXRpYyBDbGlw
Ym9hcmRUeXBlIGRhdGFPYmplY3RUeXBlRnJvbUhUTUxDbGlwYm9hcmRUeXBlKGNvbnN0IFN0cmlu
ZyYgcmF3VHlwZSkKK3N0YXRpYyBDbGlwYm9hcmREYXRhVHlwZSBkYXRhT2JqZWN0VHlwZUZyb21I
VE1MQ2xpcGJvYXJkVHlwZShjb25zdCBTdHJpbmcmIHJhd1R5cGUpCiB7CiAgICAgU3RyaW5nIHR5
cGUocmF3VHlwZS5zdHJpcFdoaXRlU3BhY2UoKSk7CiAKICAgICAvLyBUd28gc3BlY2lhbCBjYXNl
cyBmb3IgSUUgY29tcGF0aWJpbGl0eQogICAgIGlmICh0eXBlID09ICJUZXh0IikKLSAgICAgICAg
cmV0dXJuIENsaXBib2FyZFR5cGVUZXh0OworICAgICAgICByZXR1cm4gQ2xpcGJvYXJkRGF0YVR5
cGVUZXh0OwogICAgIGlmICh0eXBlID09ICJVUkwiKQotICAgICAgICByZXR1cm4gQ2xpcGJvYXJk
VHlwZVVSTDsKKyAgICAgICAgcmV0dXJuIENsaXBib2FyZERhdGFUeXBlVVJMOwogCiAgICAgLy8g
RnJvbSB0aGUgTWFjIHBvcnQ6IElnbm9yZSBhbnkgdHJhaWxpbmcgY2hhcnNldCAtIEpTIHN0cmlu
Z3MgYXJlCiAgICAgLy8gVW5pY29kZSwgd2hpY2ggZW5jYXBzdWxhdGVzIHRoZSBjaGFyc2V0IGlz
c3VlLgogICAgIGlmICh0eXBlID09ICJ0ZXh0L3BsYWluIiB8fCB0eXBlLnN0YXJ0c1dpdGgoInRl
eHQvcGxhaW47IikpCi0gICAgICAgIHJldHVybiBDbGlwYm9hcmRUeXBlVGV4dDsKKyAgICAgICAg
cmV0dXJuIENsaXBib2FyZERhdGFUeXBlVGV4dDsKICAgICBpZiAodHlwZSA9PSAidGV4dC9odG1s
IiB8fCB0eXBlLnN0YXJ0c1dpdGgoInRleHQvaHRtbDsiKSkKLSAgICAgICAgcmV0dXJuIENsaXBi
b2FyZFR5cGVNYXJrdXA7CisgICAgICAgIHJldHVybiBDbGlwYm9hcmREYXRhVHlwZU1hcmt1cDsK
ICAgICBpZiAodHlwZSA9PSAiRmlsZXMiIHx8IHR5cGUgPT0gInRleHQvdXJpLWxpc3QiIHx8IHR5
cGUuc3RhcnRzV2l0aCgidGV4dC91cmktbGlzdDsiKSkKLSAgICAgICAgcmV0dXJuIENsaXBib2Fy
ZFR5cGVVUklMaXN0OworICAgICAgICByZXR1cm4gQ2xpcGJvYXJkRGF0YVR5cGVVUklMaXN0Owog
CiAgICAgLy8gTm90IGEga25vd24gdHlwZSwgc28ganVzdCBkZWZhdWx0IHRvIHVzaW5nIHRoZSB0
ZXh0IHBvcnRpb24uCi0gICAgcmV0dXJuIENsaXBib2FyZFR5cGVVbmtub3duOworICAgIHJldHVy
biBDbGlwYm9hcmREYXRhVHlwZVVua25vd247CiB9CiAKIHZvaWQgQ2xpcGJvYXJkR3RrOjpjbGVh
ckRhdGEoY29uc3QgU3RyaW5nJiB0eXBlU3RyaW5nKQpAQCAtMTA2LDE5ICsxMDYsMTkgQEAgdm9p
ZCBDbGlwYm9hcmRHdGs6OmNsZWFyRGF0YShjb25zdCBTdHJpbmcmIHR5cGVTdHJpbmcpCiAgICAg
aWYgKHBvbGljeSgpICE9IENsaXBib2FyZFdyaXRhYmxlKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBDbGlwYm9hcmRUeXBlIHR5cGUgPSBkYXRhT2JqZWN0VHlwZUZyb21IVE1MQ2xpcGJvYXJkVHlw
ZSh0eXBlU3RyaW5nKTsKKyAgICBDbGlwYm9hcmREYXRhVHlwZSB0eXBlID0gZGF0YU9iamVjdFR5
cGVGcm9tSFRNTENsaXBib2FyZFR5cGUodHlwZVN0cmluZyk7CiAgICAgc3dpdGNoICh0eXBlKSB7
Ci0gICAgY2FzZSBDbGlwYm9hcmRUeXBlVVJJTGlzdDoKLSAgICBjYXNlIENsaXBib2FyZFR5cGVV
Ukw6CisgICAgY2FzZSBDbGlwYm9hcmREYXRhVHlwZVVSSUxpc3Q6CisgICAgY2FzZSBDbGlwYm9h
cmREYXRhVHlwZVVSTDoKICAgICAgICAgbV9kYXRhT2JqZWN0LT5jbGVhclVSSUxpc3QoKTsKICAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDbGlwYm9hcmRUeXBlTWFya3VwOgorICAgIGNhc2UgQ2xp
cGJvYXJkRGF0YVR5cGVNYXJrdXA6CiAgICAgICAgIG1fZGF0YU9iamVjdC0+Y2xlYXJNYXJrdXAo
KTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDbGlwYm9hcmRUeXBlVGV4dDoKKyAgICBjYXNl
IENsaXBib2FyZERhdGFUeXBlVGV4dDoKICAgICAgICAgbV9kYXRhT2JqZWN0LT5jbGVhclRleHQo
KTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDbGlwYm9hcmRUeXBlVW5rbm93bjoKKyAgICBj
YXNlIENsaXBib2FyZERhdGFUeXBlVW5rbm93bjoKICAgICBkZWZhdWx0OgogICAgICAgICBtX2Rh
dGFPYmplY3QtPmNsZWFyKCk7CiAgICAgfQpAQCAtMTYyLDI5ICsxNjIsMjkgQEAgU3RyaW5nIENs
aXBib2FyZEd0azo6Z2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGVTdHJpbmcsIGJvb2wmIHN1Y2Nl
c3MpIGNvbnN0CiAgICAgaWYgKG1fY2xpcGJvYXJkKQogICAgICAgICBtX2hlbHBlci0+Z2V0Q2xp
cGJvYXJkQ29udGVudHMobV9jbGlwYm9hcmQpOwogCi0gICAgQ2xpcGJvYXJkVHlwZSB0eXBlID0g
ZGF0YU9iamVjdFR5cGVGcm9tSFRNTENsaXBib2FyZFR5cGUodHlwZVN0cmluZyk7Ci0gICAgaWYg
KHR5cGUgPT0gQ2xpcGJvYXJkVHlwZVVSSUxpc3QpIHsKKyAgICBDbGlwYm9hcmREYXRhVHlwZSB0
eXBlID0gZGF0YU9iamVjdFR5cGVGcm9tSFRNTENsaXBib2FyZFR5cGUodHlwZVN0cmluZyk7Cisg
ICAgaWYgKHR5cGUgPT0gQ2xpcGJvYXJkRGF0YVR5cGVVUklMaXN0KSB7CiAgICAgICAgIGlmICgh
bV9kYXRhT2JqZWN0LT5oYXNVUklMaXN0KCkpCiAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7
CiAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlOwogICAgICAgICByZXR1cm4gam9pblVSSUxpc3QobV9k
YXRhT2JqZWN0LT51cmlMaXN0KCkpOwogICAgIH0KIAotICAgIGlmICh0eXBlID09IENsaXBib2Fy
ZFR5cGVVUkwpIHsKKyAgICBpZiAodHlwZSA9PSBDbGlwYm9hcmREYXRhVHlwZVVSTCkgewogICAg
ICAgICBpZiAoIW1fZGF0YU9iamVjdC0+aGFzVVJMKCkpCiAgICAgICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7CiAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlOwogICAgICAgICByZXR1cm4gbV9kYXRhT2Jq
ZWN0LT51cmwoKTsKICAgICB9CiAKLSAgICBpZiAodHlwZSA9PSBDbGlwYm9hcmRUeXBlTWFya3Vw
KSB7CisgICAgaWYgKHR5cGUgPT0gQ2xpcGJvYXJkRGF0YVR5cGVNYXJrdXApIHsKICAgICAgICAg
aWYgKCFtX2RhdGFPYmplY3QtPmhhc01hcmt1cCgpKQogICAgICAgICAgICAgcmV0dXJuIFN0cmlu
ZygpOwogICAgICAgICBzdWNjZXNzID0gdHJ1ZTsKICAgICAgICAgcmV0dXJuIG1fZGF0YU9iamVj
dC0+bWFya3VwKCk7CiAgICAgfQogCi0gICAgaWYgKHR5cGUgPT0gQ2xpcGJvYXJkVHlwZVRleHQp
IHsKKyAgICBpZiAodHlwZSA9PSBDbGlwYm9hcmREYXRhVHlwZVRleHQpIHsKICAgICAgICAgaWYg
KCFtX2RhdGFPYmplY3QtPmhhc1RleHQoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gU3RyaW5n
KCk7CiAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlOwpAQCAtMjAwLDggKzIwMCw4IEBAIGJvb2wgQ2xp
cGJvYXJkR3RrOjpzZXREYXRhKGNvbnN0IFN0cmluZyYgdHlwZVN0cmluZywgY29uc3QgU3RyaW5n
JiBkYXRhKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBib29sIHN1Y2Nlc3MgPSBmYWxz
ZTsKLSAgICBDbGlwYm9hcmRUeXBlIHR5cGUgPSBkYXRhT2JqZWN0VHlwZUZyb21IVE1MQ2xpcGJv
YXJkVHlwZSh0eXBlU3RyaW5nKTsKLSAgICBpZiAodHlwZSA9PSBDbGlwYm9hcmRUeXBlVVJJTGlz
dCB8fCB0eXBlID09IENsaXBib2FyZFR5cGVVUkwpIHsKKyAgICBDbGlwYm9hcmREYXRhVHlwZSB0
eXBlID0gZGF0YU9iamVjdFR5cGVGcm9tSFRNTENsaXBib2FyZFR5cGUodHlwZVN0cmluZyk7Cisg
ICAgaWYgKHR5cGUgPT0gQ2xpcGJvYXJkRGF0YVR5cGVVUklMaXN0IHx8IHR5cGUgPT0gQ2xpcGJv
YXJkRGF0YVR5cGVVUkwpIHsKICAgICAgICAgVmVjdG9yPEtVUkw+IHVyaUxpc3Q7CiAgICAgICAg
IGdjaGFyKiogdXJpcyA9IGdfdXJpX2xpc3RfZXh0cmFjdF91cmlzKGRhdGEudXRmOCgpLmRhdGEo
KSk7CiAgICAgICAgIGlmICh1cmlzKSB7CkBAIC0yMTQsMTAgKzIxNCwxMCBAQCBib29sIENsaXBi
b2FyZEd0azo6c2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGVTdHJpbmcsIGNvbnN0IFN0cmluZyYg
ZGF0YSkKICAgICAgICAgICAgIG1fZGF0YU9iamVjdC0+c2V0VVJJTGlzdCh1cmlMaXN0KTsKICAg
ICAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlOwogICAgICAgICB9Ci0gICAgfSBlbHNlIGlmICh0eXBl
ID09IENsaXBib2FyZFR5cGVNYXJrdXApIHsKKyAgICB9IGVsc2UgaWYgKHR5cGUgPT0gQ2xpcGJv
YXJkRGF0YVR5cGVNYXJrdXApIHsKICAgICAgICAgbV9kYXRhT2JqZWN0LT5zZXRNYXJrdXAoZGF0
YSk7CiAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlOwotICAgIH0gZWxzZSBpZiAodHlwZSA9PSBDbGlw
Ym9hcmRUeXBlVGV4dCkgeworICAgIH0gZWxzZSBpZiAodHlwZSA9PSBDbGlwYm9hcmREYXRhVHlw
ZVRleHQpIHsKICAgICAgICAgbV9kYXRhT2JqZWN0LT5zZXRUZXh0KGRhdGEpOwogICAgICAgICBz
dWNjZXNzID0gdHJ1ZTsKICAgICB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9D
bGlwYm9hcmRHdGsuaCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0NsaXBib2FyZEd0ay5oCmluZGV4
IGYwYWYzMTguLmUxNGE1ODMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0NsaXBi
b2FyZEd0ay5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0NsaXBib2FyZEd0ay5oCkBAIC00
MCwxNCArNDAsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIC8vIENyZWF0ZWQgZnJvbSB0
aGUgRXZlbnRIYW5kbGVyR3RrIHRvIGJlIHVzZWQgYnkgdGhlIGRvbQogICAgIGNsYXNzIENsaXBi
b2FyZEd0ayA6IHB1YmxpYyBDbGlwYm9hcmQsIHB1YmxpYyBDYWNoZWRSZXNvdXJjZUNsaWVudCB7
CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDbGlwYm9hcmRHdGs+IGNy
ZWF0ZShDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5LCBHdGtDbGlwYm9hcmQqIGNsaXBib2Fy
ZCwgYm9vbCBpc0ZvckRyYWdnaW5nLCBGcmFtZSogZnJhbWUpCisgICAgICAgIHN0YXRpYyBQYXNz
UmVmUHRyPENsaXBib2FyZEd0az4gY3JlYXRlKENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ks
IEd0a0NsaXBib2FyZCogY2xpcGJvYXJkLCBGcmFtZSogZnJhbWUpCiAgICAgICAgIHsKICAgICAg
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ2xpcGJvYXJkR3RrKHBvbGljeSwgY2xpcGJvYXJk
LCBmcmFtZSkpOwogICAgICAgICB9CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q2xpcGJv
YXJkR3RrPiBjcmVhdGUoQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSwgUGFzc1JlZlB0cjxE
YXRhT2JqZWN0R3RrPiBkYXRhT2JqZWN0LCBib29sIGlzRm9yRHJhZ2dpbmcsIEZyYW1lKiBmcmFt
ZSkKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q2xpcGJvYXJkR3RrPiBjcmVhdGUoQ2xpcGJv
YXJkQWNjZXNzUG9saWN5IHBvbGljeSwgUGFzc1JlZlB0cjxEYXRhT2JqZWN0R3RrPiBkYXRhT2Jq
ZWN0LCBDbGlwYm9hcmRUeXBlIGNsaXBib2FyZFR5cGUsIEZyYW1lKiBmcmFtZSkKICAgICAgICAg
ewotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDbGlwYm9hcmRHdGsocG9saWN5LCBk
YXRhT2JqZWN0LCBpc0ZvckRyYWdnaW5nLCBmcmFtZSkpOworICAgICAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBDbGlwYm9hcmRHdGsocG9saWN5LCBkYXRhT2JqZWN0LCBjbGlwYm9hcmRUeXBl
LCBmcmFtZSkpOwogICAgICAgICB9CiAgICAgICAgIHZpcnR1YWwgfkNsaXBib2FyZEd0aygpOwog
CkBAIC03OCw3ICs3OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIHByaXZhdGU6CiAg
ICAgICAgIENsaXBib2FyZEd0ayhDbGlwYm9hcmRBY2Nlc3NQb2xpY3ksIEd0a0NsaXBib2FyZCos
IEZyYW1lKik7Ci0gICAgICAgIENsaXBib2FyZEd0ayhDbGlwYm9hcmRBY2Nlc3NQb2xpY3ksIFBh
c3NSZWZQdHI8RGF0YU9iamVjdEd0az4sIGJvb2wsIEZyYW1lKik7CisgICAgICAgIENsaXBib2Fy
ZEd0ayhDbGlwYm9hcmRBY2Nlc3NQb2xpY3ksIFBhc3NSZWZQdHI8RGF0YU9iamVjdEd0az4sIENs
aXBib2FyZFR5cGUsIEZyYW1lKik7CiAKICAgICAgICAgUmVmUHRyPERhdGFPYmplY3RHdGs+IG1f
ZGF0YU9iamVjdDsKICAgICAgICAgR3RrQ2xpcGJvYXJkKiBtX2NsaXBib2FyZDsKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcGxhdGZvcm0vaGFpa3UvQ2xpcGJvYXJkSGFpa3UuY3BwIGIvV2ViQ29yZS9w
bGF0Zm9ybS9oYWlrdS9DbGlwYm9hcmRIYWlrdS5jcHAKaW5kZXggZGEyNDJjMS4uNDk1ZjFkMiAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9oYWlrdS9DbGlwYm9hcmRIYWlrdS5jcHAKKysr
IGIvV2ViQ29yZS9wbGF0Zm9ybS9oYWlrdS9DbGlwYm9hcmRIYWlrdS5jcHAKQEAgLTQ0LDExICs0
NCwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFBhc3NSZWZQdHI8Q2xpcGJvYXJkPiBDbGlw
Ym9hcmQ6OmNyZWF0ZShDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5LCBEcmFnRGF0YSosIEZy
YW1lKikKIHsKLSAgICByZXR1cm4gQ2xpcGJvYXJkSGFpa3U6OmNyZWF0ZShwb2xpY3ksIHRydWUp
OworICAgIHJldHVybiBDbGlwYm9hcmRIYWlrdTo6Y3JlYXRlKHBvbGljeSwgRHJhZ0FuZERyb3Ap
OwogfQogCi1DbGlwYm9hcmRIYWlrdTo6Q2xpcGJvYXJkSGFpa3UoQ2xpcGJvYXJkQWNjZXNzUG9s
aWN5IHBvbGljeSwgYm9vbCBmb3JEcmFnZ2luZykKLSAgICA6IENsaXBib2FyZChwb2xpY3ksIGZv
ckRyYWdnaW5nKQorQ2xpcGJvYXJkSGFpa3U6OkNsaXBib2FyZEhhaWt1KENsaXBib2FyZEFjY2Vz
c1BvbGljeSBwb2xpY3ksIENsaXBib2FyZFR5cGUgY2xpcGJvYXJkVHlwZSkKKyAgICA6IENsaXBi
b2FyZChwb2xpY3ksIGNsaXBib2FyZFR5cGUpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cGxhdGZvcm0vaGFpa3UvQ2xpcGJvYXJkSGFpa3UuaCBiL1dlYkNvcmUvcGxhdGZvcm0vaGFpa3Uv
Q2xpcGJvYXJkSGFpa3UuaAppbmRleCAzN2ZmZTVjLi44OWRjN2JkIDEwMDY0NAotLS0gYS9XZWJD
b3JlL3BsYXRmb3JtL2hhaWt1L0NsaXBib2FyZEhhaWt1LmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9y
bS9oYWlrdS9DbGlwYm9hcmRIYWlrdS5oCkBAIC0zNiw5ICszNiw5IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAvLyBTdGF0ZSBhdmFpbGFibGUgZHVyaW5nIElFJ3MgZXZlbnRzIGZvciBkcmFn
IGFuZCBkcm9wIGFuZCBjb3B5L3Bhc3RlLgogICAgIGNsYXNzIENsaXBib2FyZEhhaWt1IDogcHVi
bGljIENsaXBib2FyZCB7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxD
bGlwYm9hcmRIYWlrdT4gY3JlYXRlKENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIGJvb2wg
Zm9yRHJhZ2dpbmcpCisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPENsaXBib2FyZEhhaWt1PiBj
cmVhdGUoQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSwgQ2xpcGJvYXJkVHlwZSBjbGlwYm9h
cmRUeXBlKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENsaXBi
b2FyZEhhaWt1KHBvbGljeSwgZm9yRHJhZ2dpbmcpKTsKKyAgICAgICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgQ2xpcGJvYXJkSGFpa3UocG9saWN5LCBjbGlwYm9hcmRUeXBlKSk7CiAgICAgICAg
IH0KICAgICAgICAgfkNsaXBib2FyZEhhaWt1KCkgeyB9CiAKQEAgLTY2LDcgKzY2LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIGJvb2wgaGFzRGF0YSgpOwogCiAgICAg
cHJpdmF0ZToKLSAgICAgICAgQ2xpcGJvYXJkSGFpa3UoQ2xpcGJvYXJkQWNjZXNzUG9saWN5LCBi
b29sIGZvckRyYWdnaW5nKTsKKyAgICAgICAgQ2xpcGJvYXJkSGFpa3UoQ2xpcGJvYXJkQWNjZXNz
UG9saWN5LCBDbGlwYm9hcmRUeXBlKTsKICAgICB9OwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL21hYy9DbGlwYm9hcmRNYWMuaCBiL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL0NsaXBib2FyZE1hYy5oCmluZGV4IGFkZGUwOWMuLjcxODdlY2YgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0NsaXBib2FyZE1hYy5oCisrKyBiL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL0NsaXBib2FyZE1hYy5oCkBAIC00NSw5ICs0NSw5IEBAIGNsYXNzIEZp
bGVMaXN0OwogCiBjbGFzcyBDbGlwYm9hcmRNYWMgOiBwdWJsaWMgQ2xpcGJvYXJkLCBwdWJsaWMg
Q2FjaGVkUmVzb3VyY2VDbGllbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPENs
aXBib2FyZE1hYz4gY3JlYXRlKGJvb2wgZm9yRHJhZ2dpbmcsIE5TUGFzdGVib2FyZCAqcGFzdGVi
b2FyZCwgQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSwgRnJhbWUqIGZyYW1lKQorICAgIHN0
YXRpYyBQYXNzUmVmUHRyPENsaXBib2FyZE1hYz4gY3JlYXRlKENsaXBib2FyZFR5cGUgY2xpcGJv
YXJkVHlwZSwgTlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkLCBDbGlwYm9hcmRBY2Nlc3NQb2xpY3kg
cG9saWN5LCBGcmFtZSogZnJhbWUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IENsaXBib2FyZE1hYyhmb3JEcmFnZ2luZywgcGFzdGVib2FyZCwgcG9saWN5LCBmcmFtZSkpOwor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENsaXBib2FyZE1hYyhjbGlwYm9hcmRUeXBlLCBw
YXN0ZWJvYXJkLCBwb2xpY3ksIGZyYW1lKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+Q2xpcGJv
YXJkTWFjKCk7CkBAIC03OSw3ICs3OSw3IEBAIHB1YmxpYzoKICAgICBOU1Bhc3RlYm9hcmQgKnBh
c3RlYm9hcmQoKSB7IHJldHVybiBtX3Bhc3RlYm9hcmQuZ2V0KCk7IH0KIAogcHJpdmF0ZToKLSAg
ICBDbGlwYm9hcmRNYWMoYm9vbCBmb3JEcmFnZ2luZywgTlNQYXN0ZWJvYXJkICosIENsaXBib2Fy
ZEFjY2Vzc1BvbGljeSwgRnJhbWUqKTsKKyAgICBDbGlwYm9hcmRNYWMoQ2xpcGJvYXJkVHlwZSwg
TlNQYXN0ZWJvYXJkICosIENsaXBib2FyZEFjY2Vzc1BvbGljeSwgRnJhbWUqKTsKIAogICAgIHZv
aWQgc2V0RHJhZ0ltYWdlKENhY2hlZEltYWdlKiwgTm9kZSosIGNvbnN0IEludFBvaW50Jik7CiAK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0NsaXBib2FyZE1hYy5tbSBiL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL0NsaXBib2FyZE1hYy5tbQppbmRleCA3NGE5M2I2Li44NWQ0NzBjIDEw
MDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL21hYy9DbGlwYm9hcmRNYWMubW0KKysrIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvQ2xpcGJvYXJkTWFjLm1tCkBAIC01MCwxMSArNTAsMTEgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBQYXNzUmVmUHRyPENsaXBib2FyZD4gQ2xpcGJvYXJkOjpjcmVh
dGUoQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSwgRHJhZ0RhdGEqIGRyYWdEYXRhLCBGcmFt
ZSogZnJhbWUpCiB7Ci0gICAgcmV0dXJuIENsaXBib2FyZE1hYzo6Y3JlYXRlKHRydWUsIFtkcmFn
RGF0YS0+cGxhdGZvcm1EYXRhKCkgZHJhZ2dpbmdQYXN0ZWJvYXJkXSwgcG9saWN5LCBmcmFtZSk7
CisgICAgcmV0dXJuIENsaXBib2FyZE1hYzo6Y3JlYXRlKERyYWdBbmREcm9wLCBbZHJhZ0RhdGEt
PnBsYXRmb3JtRGF0YSgpIGRyYWdnaW5nUGFzdGVib2FyZF0sIHBvbGljeSwgZnJhbWUpOwogfQog
Ci1DbGlwYm9hcmRNYWM6OkNsaXBib2FyZE1hYyhib29sIGZvckRyYWdnaW5nLCBOU1Bhc3RlYm9h
cmQgKnBhc3RlYm9hcmQsIENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIEZyYW1lICpmcmFt
ZSkKLSAgICA6IENsaXBib2FyZChwb2xpY3ksIGZvckRyYWdnaW5nKQorQ2xpcGJvYXJkTWFjOjpD
bGlwYm9hcmRNYWMoQ2xpcGJvYXJkVHlwZSBjbGlwYm9hcmRUeXBlLCBOU1Bhc3RlYm9hcmQgKnBh
c3RlYm9hcmQsIENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIEZyYW1lICpmcmFtZSkKKyAg
ICA6IENsaXBib2FyZChwb2xpY3ksIGNsaXBib2FyZFR5cGUpCiAgICAgLCBtX3Bhc3RlYm9hcmQo
cGFzdGVib2FyZCkKICAgICAsIG1fZnJhbWUoZnJhbWUpCiB7CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3BsYXRmb3JtL3F0L0NsaXBib2FyZFF0LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vcXQvQ2xpcGJv
YXJkUXQuY3BwCmluZGV4IDZjYmRlMGMuLmM4N2ZhNmIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxh
dGZvcm0vcXQvQ2xpcGJvYXJkUXQuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vcXQvQ2xpcGJv
YXJkUXQuY3BwCkBAIC03NSwxNSArNzUsMTUgQEAgUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IENsaXBi
b2FyZDo6Y3JlYXRlKENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIERyYWdEYXRhKgogfQog
CiBDbGlwYm9hcmRRdDo6Q2xpcGJvYXJkUXQoQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSwg
Y29uc3QgUU1pbWVEYXRhKiByZWFkYWJsZUNsaXBib2FyZCkKLSAgICA6IENsaXBib2FyZChwb2xp
Y3ksIHRydWUpCisgICAgOiBDbGlwYm9hcmQocG9saWN5LCBEcmFnQW5kRHJvcCkKICAgICAsIG1f
cmVhZGFibGVEYXRhKHJlYWRhYmxlQ2xpcGJvYXJkKQogICAgICwgbV93cml0YWJsZURhdGEoMCkK
IHsKICAgICBRX0FTU0VSVChwb2xpY3kgPT0gQ2xpcGJvYXJkUmVhZGFibGUgfHwgcG9saWN5ID09
IENsaXBib2FyZFR5cGVzUmVhZGFibGUpOwogfQogCi1DbGlwYm9hcmRRdDo6Q2xpcGJvYXJkUXQo
Q2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSwgYm9vbCBmb3JEcmFnZ2luZykKLSAgICA6IENs
aXBib2FyZChwb2xpY3ksIGZvckRyYWdnaW5nKQorQ2xpcGJvYXJkUXQ6OkNsaXBib2FyZFF0KENs
aXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIENsaXBib2FyZFR5cGUgY2xpcGJvYXJkVHlwZSkK
KyAgICA6IENsaXBib2FyZChwb2xpY3ksIGNsaXBib2FyZFR5cGUpCiAgICAgLCBtX3JlYWRhYmxl
RGF0YSgwKQogICAgICwgbV93cml0YWJsZURhdGEoMCkKIHsKQEAgLTk5LDcgKzk5LDcgQEAgQ2xp
cGJvYXJkUXQ6OkNsaXBib2FyZFF0KENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIGJvb2wg
Zm9yRHJhZ2dpbmcpCiAKIENsaXBib2FyZFF0Ojp+Q2xpcGJvYXJkUXQoKQogewotICAgIGlmICht
X3dyaXRhYmxlRGF0YSAmJiAhaXNGb3JEcmFnZ2luZygpKQorICAgIGlmIChtX3dyaXRhYmxlRGF0
YSAmJiBpc0ZvckNvcHlBbmRQYXN0ZSgpKQogICAgICAgICBtX3dyaXRhYmxlRGF0YSA9IDA7CiAg
ICAgZWxzZQogICAgICAgICBkZWxldGUgbV93cml0YWJsZURhdGE7CkBAIC0xMTQsMTMgKzExNCwx
MyBAQCB2b2lkIENsaXBib2FyZFF0OjpjbGVhckRhdGEoY29uc3QgU3RyaW5nJiB0eXBlKQogICAg
IGlmIChtX3dyaXRhYmxlRGF0YSkgewogICAgICAgICBtX3dyaXRhYmxlRGF0YS0+cmVtb3ZlRm9y
bWF0KHR5cGUpOwogICAgICAgICBpZiAobV93cml0YWJsZURhdGEtPmZvcm1hdHMoKS5pc0VtcHR5
KCkpIHsKLSAgICAgICAgICAgIGlmIChpc0ZvckRyYWdnaW5nKCkpCisgICAgICAgICAgICBpZiAo
aXNGb3JEcmFnQW5kRHJvcCgpKQogICAgICAgICAgICAgICAgIGRlbGV0ZSBtX3dyaXRhYmxlRGF0
YTsKICAgICAgICAgICAgIG1fd3JpdGFibGVEYXRhID0gMDsKICAgICAgICAgfQogICAgIH0KICNp
Zm5kZWYgUVRfTk9fQ0xJUEJPQVJECi0gICAgaWYgKCFpc0ZvckRyYWdnaW5nKCkpCisgICAgaWYg
KGlzRm9yQ29weUFuZFBhc3RlKCkpCiAgICAgICAgIFFBcHBsaWNhdGlvbjo6Y2xpcGJvYXJkKCkt
PnNldE1pbWVEYXRhKG1fd3JpdGFibGVEYXRhKTsKICNlbmRpZgogfQpAQCAtMTMxLDcgKzEzMSw3
IEBAIHZvaWQgQ2xpcGJvYXJkUXQ6OmNsZWFyQWxsRGF0YSgpCiAgICAgICAgIHJldHVybjsKIAog
I2lmbmRlZiBRVF9OT19DTElQQk9BUkQKLSAgICBpZiAoIWlzRm9yRHJhZ2dpbmcoKSkKKyAgICBp
ZiAoaXNGb3JDb3B5QW5kUGFzdGUoKSkKICAgICAgICAgUUFwcGxpY2F0aW9uOjpjbGlwYm9hcmQo
KS0+c2V0TWltZURhdGEoMCk7CiAgICAgZWxzZQogI2VuZGlmCkBAIC0xODIsNyArMTgyLDcgQEAg
Ym9vbCBDbGlwYm9hcmRRdDo6c2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmlu
ZyYgZGF0YSkKICAgICB9CiAKICNpZm5kZWYgUVRfTk9fQ0xJUEJPQVJECi0gICAgaWYgKCFpc0Zv
ckRyYWdnaW5nKCkpCisgICAgaWYgKGlzRm9yQ29weUFuZFBhc3RlKCkpCiAgICAgICAgIFFBcHBs
aWNhdGlvbjo6Y2xpcGJvYXJkKCktPnNldE1pbWVEYXRhKG1fd3JpdGFibGVEYXRhKTsKICNlbmRp
ZgogICAgIHJldHVybiB0cnVlOwpAQCAtMjg3LDcgKzI4Nyw3IEBAIHZvaWQgQ2xpcGJvYXJkUXQ6
OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShFbGVtZW50KiBlbGVtZW50LCBjb25zdCBLVVJMJiB1
cmwsIGNvCiAgICAgbV93cml0YWJsZURhdGEtPnNldFRleHQodGl0bGUpOwogICAgIG1fd3JpdGFi
bGVEYXRhLT5zZXRVcmxzKHVybHMpOwogI2lmbmRlZiBRVF9OT19DTElQQk9BUkQKLSAgICBpZiAo
IWlzRm9yRHJhZ2dpbmcoKSkKKyAgICBpZiAoaXNGb3JDb3B5QW5kUGFzdGUoKSkKICAgICAgICAg
UUFwcGxpY2F0aW9uOjpjbGlwYm9hcmQoKS0+c2V0TWltZURhdGEobV93cml0YWJsZURhdGEpOwog
I2VuZGlmCiB9CkBAIC0zMDMsNyArMzAzLDcgQEAgdm9pZCBDbGlwYm9hcmRRdDo6d3JpdGVVUkwo
Y29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBGcmFtZSogZnJhbWUpCiAgICAg
bV93cml0YWJsZURhdGEtPnNldFVybHModXJscyk7CiAgICAgbV93cml0YWJsZURhdGEtPnNldFRl
eHQodGl0bGUpOwogI2lmbmRlZiBRVF9OT19DTElQQk9BUkQKLSAgICBpZiAoIWlzRm9yRHJhZ2dp
bmcoKSkKKyAgICBpZiAoaXNGb3JDb3B5QW5kUGFzdGUoKSkKICAgICAgICAgUUFwcGxpY2F0aW9u
OjpjbGlwYm9hcmQoKS0+c2V0TWltZURhdGEobV93cml0YWJsZURhdGEpOwogI2VuZGlmCiB9CkBA
IC0zMjAsNyArMzIwLDcgQEAgdm9pZCBDbGlwYm9hcmRRdDo6d3JpdGVSYW5nZShSYW5nZSogcmFu
Z2UsIEZyYW1lKiBmcmFtZSkKICAgICBtX3dyaXRhYmxlRGF0YS0+c2V0VGV4dCh0ZXh0KTsKICAg
ICBtX3dyaXRhYmxlRGF0YS0+c2V0SHRtbChjcmVhdGVNYXJrdXAocmFuZ2UsIDAsIEFubm90YXRl
Rm9ySW50ZXJjaGFuZ2UsIGZhbHNlLCBBYnNvbHV0ZVVSTHMpKTsKICNpZm5kZWYgUVRfTk9fQ0xJ
UEJPQVJECi0gICAgaWYgKCFpc0ZvckRyYWdnaW5nKCkpCisgICAgaWYgKGlzRm9yQ29weUFuZFBh
c3RlKCkpCiAgICAgICAgIFFBcHBsaWNhdGlvbjo6Y2xpcGJvYXJkKCktPnNldE1pbWVEYXRhKG1f
d3JpdGFibGVEYXRhKTsKICNlbmRpZgogfQpAQCAtMzMzLDcgKzMzMyw3IEBAIHZvaWQgQ2xpcGJv
YXJkUXQ6OndyaXRlUGxhaW5UZXh0KGNvbnN0IFN0cmluZyYgc3RyKQogICAgIHRleHQucmVwbGFj
ZShRQ2hhcigweGEwKSwgUUxhdGluMUNoYXIoJyAnKSk7CiAgICAgbV93cml0YWJsZURhdGEtPnNl
dFRleHQodGV4dCk7CiAjaWZuZGVmIFFUX05PX0NMSVBCT0FSRAotICAgIGlmICghaXNGb3JEcmFn
Z2luZygpKQorICAgIGlmIChpc0ZvckNvcHlBbmRQYXN0ZSgpKQogICAgICAgICBRQXBwbGljYXRp
b246OmNsaXBib2FyZCgpLT5zZXRNaW1lRGF0YShtX3dyaXRhYmxlRGF0YSk7CiAjZW5kaWYKIH0K
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vcXQvQ2xpcGJvYXJkUXQuaCBiL1dlYkNvcmUv
cGxhdGZvcm0vcXQvQ2xpcGJvYXJkUXQuaAppbmRleCA5YjU0ZDVmLi41YWNhMWE2IDEwMDY0NAot
LS0gYS9XZWJDb3JlL3BsYXRmb3JtL3F0L0NsaXBib2FyZFF0LmgKKysrIGIvV2ViQ29yZS9wbGF0
Zm9ybS9xdC9DbGlwYm9hcmRRdC5oCkBAIC00NCw5ICs0NCw5IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDbGlwYm9hcmRR
dChwb2xpY3ksIHJlYWRhYmxlQ2xpcGJvYXJkKSk7CiAgICAgICAgIH0KLSAgICAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8Q2xpcGJvYXJkUXQ+IGNyZWF0ZShDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9s
aWN5LCBib29sIGZvckRyYWdnaW5nID0gZmFsc2UpCisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRy
PENsaXBib2FyZFF0PiBjcmVhdGUoQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSwgQ2xpcGJv
YXJkVHlwZSBjbGlwYm9hcmRUeXBlID0gQ29weUFuZFBhc3RlKQogICAgICAgICB7Ci0gICAgICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENsaXBib2FyZFF0KHBvbGljeSwgZm9yRHJhZ2dpbmcp
KTsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ2xpcGJvYXJkUXQocG9saWN5LCBj
bGlwYm9hcmRUeXBlKSk7CiAgICAgICAgIH0KICAgICAgICAgdmlydHVhbCB+Q2xpcGJvYXJkUXQo
KTsKIApAQCAtNzcsNyArNzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIENsaXBi
b2FyZFF0KENsaXBib2FyZEFjY2Vzc1BvbGljeSwgY29uc3QgUU1pbWVEYXRhKiByZWFkYWJsZUNs
aXBib2FyZCk7CiAKICAgICAgICAgLy8gQ2xpcGJvYXJkIGlzIHdyaXRhYmxlIHNvIGl0IHdpbGwg
Y3JlYXRlIGl0cyBvd24gUU1pbWVEYXRhIG9iamVjdAotICAgICAgICBDbGlwYm9hcmRRdChDbGlw
Ym9hcmRBY2Nlc3NQb2xpY3ksIGJvb2wgZm9yRHJhZ2dpbmcpOworICAgICAgICBDbGlwYm9hcmRR
dChDbGlwYm9hcmRBY2Nlc3NQb2xpY3ksIENsaXBib2FyZFR5cGUpOwogCiAgICAgICAgIHZvaWQg
c2V0RHJhZ0ltYWdlKENhY2hlZEltYWdlKiwgTm9kZSosIGNvbnN0IEludFBvaW50JiBsb2MpOwog
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRXaW4uY3BwIGIvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkV2luLmNwcAppbmRleCBiMTM0NzNhLi41Mjk5NjNm
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRXaW4uY3BwCisrKyBi
L1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFdpbi5jcHAKQEAgLTM5NywxOSArMzk3LDE5
IEBAIGV4aXQ6CiAKIFBhc3NSZWZQdHI8Q2xpcGJvYXJkPiBDbGlwYm9hcmQ6OmNyZWF0ZShDbGlw
Ym9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5LCBEcmFnRGF0YSogZHJhZ0RhdGEsIEZyYW1lKiBmcmFt
ZSkKIHsKLSAgICByZXR1cm4gQ2xpcGJvYXJkV2luOjpjcmVhdGUodHJ1ZSwgZHJhZ0RhdGEtPnBs
YXRmb3JtRGF0YSgpLCBwb2xpY3ksIGZyYW1lKTsKKyAgICByZXR1cm4gQ2xpcGJvYXJkV2luOjpj
cmVhdGUoRHJhZ0FuZERyb3AsIGRyYWdEYXRhLT5wbGF0Zm9ybURhdGEoKSwgcG9saWN5LCBmcmFt
ZSk7CiB9CiAKLUNsaXBib2FyZFdpbjo6Q2xpcGJvYXJkV2luKGJvb2wgaXNGb3JEcmFnZ2luZywg
SURhdGFPYmplY3QqIGRhdGFPYmplY3QsIENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIEZy
YW1lKiBmcmFtZSkKLSAgICA6IENsaXBib2FyZChwb2xpY3ksIGlzRm9yRHJhZ2dpbmcpCitDbGlw
Ym9hcmRXaW46OkNsaXBib2FyZFdpbihDbGlwYm9hcmRUeXBlIGNsaXBib2FyZFR5cGUsIElEYXRh
T2JqZWN0KiBkYXRhT2JqZWN0LCBDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5LCBGcmFtZSog
ZnJhbWUpCisgICAgOiBDbGlwYm9hcmQocG9saWN5LCBjbGlwYm9hcmRUeXBlKQogICAgICwgbV9k
YXRhT2JqZWN0KGRhdGFPYmplY3QpCiAgICAgLCBtX3dyaXRhYmxlRGF0YU9iamVjdCgwKQogICAg
ICwgbV9mcmFtZShmcmFtZSkKIHsKIH0KIAotQ2xpcGJvYXJkV2luOjpDbGlwYm9hcmRXaW4oYm9v
bCBpc0ZvckRyYWdnaW5nLCBXQ0RhdGFPYmplY3QqIGRhdGFPYmplY3QsIENsaXBib2FyZEFjY2Vz
c1BvbGljeSBwb2xpY3ksIEZyYW1lKiBmcmFtZSkKLSAgICA6IENsaXBib2FyZChwb2xpY3ksIGlz
Rm9yRHJhZ2dpbmcpCitDbGlwYm9hcmRXaW46OkNsaXBib2FyZFdpbihDbGlwYm9hcmRUeXBlIGNs
aXBib2FyZFR5cGUsIFdDRGF0YU9iamVjdCogZGF0YU9iamVjdCwgQ2xpcGJvYXJkQWNjZXNzUG9s
aWN5IHBvbGljeSwgRnJhbWUqIGZyYW1lKQorICAgIDogQ2xpcGJvYXJkKHBvbGljeSwgY2xpcGJv
YXJkVHlwZSkKICAgICAsIG1fZGF0YU9iamVjdChkYXRhT2JqZWN0KQogICAgICwgbV93cml0YWJs
ZURhdGFPYmplY3QoZGF0YU9iamVjdCkKICAgICAsIG1fZnJhbWUoZnJhbWUpCkBAIC00NjcsNyAr
NDY3LDcgQEAgc3RhdGljIGJvb2wgd3JpdGVVUkwoV0NEYXRhT2JqZWN0ICpkYXRhLCBjb25zdCBL
VVJMJiB1cmwsIFN0cmluZyB0aXRsZSwgYm9vbCB3aXQKIHZvaWQgQ2xpcGJvYXJkV2luOjpjbGVh
ckRhdGEoY29uc3QgU3RyaW5nJiB0eXBlKQogewogICAgIC8vIEZJWE1FOiBOZWVkIHRvIGJlIGFi
bGUgdG8gd3JpdGUgdG8gdGhlIHN5c3RlbSBjbGlwYm9hcmQgPHJkYXI6Ly9wcm9ibGVtLzUwMTU5
NDE+Ci0gICAgQVNTRVJUKGlzRm9yRHJhZ2dpbmcoKSk7CisgICAgQVNTRVJUKGlzRm9yRHJhZ0Fu
ZERyb3AoKSk7CiAgICAgaWYgKHBvbGljeSgpICE9IENsaXBib2FyZFdyaXRhYmxlIHx8ICFtX3dy
aXRhYmxlRGF0YU9iamVjdCkKICAgICAgICAgcmV0dXJuOwogCkBAIC00ODcsNyArNDg3LDcgQEAg
dm9pZCBDbGlwYm9hcmRXaW46OmNsZWFyRGF0YShjb25zdCBTdHJpbmcmIHR5cGUpCiB2b2lkIENs
aXBib2FyZFdpbjo6Y2xlYXJBbGxEYXRhKCkKIHsKICAgICAvLyBGSVhNRTogTmVlZCB0byBiZSBh
YmxlIHRvIHdyaXRlIHRvIHRoZSBzeXN0ZW0gY2xpcGJvYXJkIDxyZGFyOi8vcHJvYmxlbS81MDE1
OTQxPgotICAgIEFTU0VSVChpc0ZvckRyYWdnaW5nKCkpOworICAgIEFTU0VSVChpc0ZvckRyYWdB
bmREcm9wKCkpOwogICAgIGlmIChwb2xpY3koKSAhPSBDbGlwYm9hcmRXcml0YWJsZSkKICAgICAg
ICAgcmV0dXJuOwogICAgIApAQCAtNTIwLDcgKzUyMCw3IEBAIFN0cmluZyBDbGlwYm9hcmRXaW46
OmdldERhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBib29sJiBzdWNjZXNzKSBjb25zdAogYm9vbCBD
bGlwYm9hcmRXaW46OnNldERhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRh
dGEpCiB7CiAgICAgLy8gRklYTUU6IE5lZWQgdG8gYmUgYWJsZSB0byB3cml0ZSB0byB0aGUgc3lz
dGVtIGNsaXBib2FyZCA8cmRhcjovL3Byb2JsZW0vNTAxNTk0MT4KLSAgICBBU1NFUlQoaXNGb3JE
cmFnZ2luZygpKTsKKyAgICBBU1NFUlQoaXNGb3JEcmFnQW5kRHJvcCgpKTsKICAgICBpZiAocG9s
aWN5KCkgIT0gQ2xpcGJvYXJkV3JpdGFibGUgfHwgIW1fd3JpdGFibGVEYXRhT2JqZWN0KQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTgzMSw3ICs4MzEsNyBAQCBib29sIENsaXBib2FyZFdp
bjo6aGFzRGF0YSgpCiAKIHZvaWQgQ2xpcGJvYXJkV2luOjpzZXRFeHRlcm5hbERhdGFPYmplY3Qo
SURhdGFPYmplY3QgKmRhdGFPYmplY3QpCiB7Ci0gICAgQVNTRVJUKGlzRm9yRHJhZ2dpbmcoKSk7
CisgICAgQVNTRVJUKGlzRm9yRHJhZ0FuZERyb3AoKSk7CiAKICAgICBtX3dyaXRhYmxlRGF0YU9i
amVjdCA9IDA7CiAgICAgbV9kYXRhT2JqZWN0ID0gZGF0YU9iamVjdDsKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFdpbi5oIGIvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
Q2xpcGJvYXJkV2luLmgKaW5kZXggNmEwODA4Ny4uY2U2NGI4NSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkV2luLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
Q2xpcGJvYXJkV2luLmgKQEAgLTQyLDEzICs0MiwxMyBAQCBjbGFzcyBXQ0RhdGFPYmplY3Q7CiAv
LyBTdGF0ZSBhdmFpbGFibGUgZHVyaW5nIElFJ3MgZXZlbnRzIGZvciBkcmFnIGFuZCBkcm9wIGFu
ZCBjb3B5L3Bhc3RlCiBjbGFzcyBDbGlwYm9hcmRXaW4gOiBwdWJsaWMgQ2xpcGJvYXJkLCBwdWJs
aWMgQ2FjaGVkUmVzb3VyY2VDbGllbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRy
PENsaXBib2FyZFdpbj4gY3JlYXRlKGJvb2wgaXNGb3JEcmFnZ2luZywgSURhdGFPYmplY3QqIGRh
dGFPYmplY3QsIENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIEZyYW1lKiBmcmFtZSkKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxDbGlwYm9hcmRXaW4+IGNyZWF0ZShDbGlwYm9hcmRUeXBlIGNs
aXBib2FyZFR5cGUsIElEYXRhT2JqZWN0KiBkYXRhT2JqZWN0LCBDbGlwYm9hcmRBY2Nlc3NQb2xp
Y3kgcG9saWN5LCBGcmFtZSogZnJhbWUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IENsaXBib2FyZFdpbihpc0ZvckRyYWdnaW5nLCBkYXRhT2JqZWN0LCBwb2xpY3ksIGZyYW1l
KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ2xpcGJvYXJkV2luKGNsaXBib2FyZFR5
cGUsIGRhdGFPYmplY3QsIHBvbGljeSwgZnJhbWUpKTsKICAgICB9Ci0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8Q2xpcGJvYXJkV2luPiBjcmVhdGUoYm9vbCBpc0ZvckRyYWdnaW5nLCBXQ0RhdGFPYmpl
Y3QqIGRhdGFPYmplY3QsIENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIEZyYW1lKiBmcmFt
ZSkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxDbGlwYm9hcmRXaW4+IGNyZWF0ZShDbGlwYm9hcmRU
eXBlIGNsaXBib2FyZFR5cGUsIFdDRGF0YU9iamVjdCogZGF0YU9iamVjdCwgQ2xpcGJvYXJkQWNj
ZXNzUG9saWN5IHBvbGljeSwgRnJhbWUqIGZyYW1lKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBDbGlwYm9hcmRXaW4oaXNGb3JEcmFnZ2luZywgZGF0YU9iamVjdCwgcG9saWN5
LCBmcmFtZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENsaXBib2FyZFdpbihjbGlw
Ym9hcmRUeXBlLCBkYXRhT2JqZWN0LCBwb2xpY3ksIGZyYW1lKSk7CiAgICAgfQogICAgIH5DbGlw
Ym9hcmRXaW4oKTsKIApAQCAtNzcsOCArNzcsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRFeHRl
cm5hbERhdGFPYmplY3QoSURhdGFPYmplY3QgKmRhdGFPYmplY3QpOwogCiBwcml2YXRlOgotICAg
IENsaXBib2FyZFdpbihib29sIGlzRm9yRHJhZ2dpbmcsIElEYXRhT2JqZWN0KiwgQ2xpcGJvYXJk
QWNjZXNzUG9saWN5LCBGcmFtZSopOwotICAgIENsaXBib2FyZFdpbihib29sIGlzRm9yRHJhZ2dp
bmcsIFdDRGF0YU9iamVjdCosIENsaXBib2FyZEFjY2Vzc1BvbGljeSwgRnJhbWUqKTsKKyAgICBD
bGlwYm9hcmRXaW4oQ2xpcGJvYXJkVHlwZSwgSURhdGFPYmplY3QqLCBDbGlwYm9hcmRBY2Nlc3NQ
b2xpY3ksIEZyYW1lKik7CisgICAgQ2xpcGJvYXJkV2luKENsaXBib2FyZFR5cGUsIFdDRGF0YU9i
amVjdCosIENsaXBib2FyZEFjY2Vzc1BvbGljeSwgRnJhbWUqKTsKIAogICAgIHZvaWQgcmVzZXRG
cm9tQ2xpcGJvYXJkKCk7CiAgICAgdm9pZCBzZXREcmFnSW1hZ2UoQ2FjaGVkSW1hZ2UqLCBOb2Rl
KiwgY29uc3QgSW50UG9pbnQmKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vd2luL0Vk
aXRvcldpbi5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL3dpbi9FZGl0b3JXaW4uY3BwCmluZGV4IDA3
NTgyN2QuLjQ5NjVjOTcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vd2luL0VkaXRvcldp
bi5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRWRpdG9yV2luLmNwcApAQCAtNDUsNyAr
NDUsNyBAQCBQYXNzUmVmUHRyPENsaXBib2FyZD4gRWRpdG9yOjpuZXdHZW5lcmFsQ2xpcGJvYXJk
KENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksCiAgICAgaWYgKCFTVUNDRUVERUQoT2xlR2V0
Q2xpcGJvYXJkKCZjbGlwYm9hcmREYXRhKSkpCiAgICAgICAgIGNsaXBib2FyZERhdGEgPSAwOwog
Ci0gICAgcmV0dXJuIENsaXBib2FyZFdpbjo6Y3JlYXRlKGZhbHNlLCBjbGlwYm9hcmREYXRhLmdl
dCgpLCBwb2xpY3ksIGZyYW1lKTsKKyAgICByZXR1cm4gQ2xpcGJvYXJkV2luOjpjcmVhdGUoQ2xp
cGJvYXJkOjpDb3B5QW5kUGFzdGUsIGNsaXBib2FyZERhdGEuZ2V0KCksIHBvbGljeSwgZnJhbWUp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRm
b3JtL3d4L0NsaXBib2FyZFd4LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vd3gvQ2xpcGJvYXJkV3gu
Y3BwCmluZGV4IDJlZjk0M2YuLjMyMjE2YTYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0v
d3gvQ2xpcGJvYXJkV3guY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vd3gvQ2xpcGJvYXJkV3gu
Y3BwCkBAIC00Miw4ICs0Miw4IEBAIFBhc3NSZWZQdHI8Q2xpcGJvYXJkPiBDbGlwYm9hcmQ6OmNy
ZWF0ZShDbGlwYm9hcmRBY2Nlc3NQb2xpY3ksIERyYWdEYXRhKiwgRnJhbWUqCiAgICAgcmV0dXJu
IDA7CiB9CiAKLUNsaXBib2FyZFd4OjpDbGlwYm9hcmRXeChDbGlwYm9hcmRBY2Nlc3NQb2xpY3kg
cG9saWN5LCBib29sIGZvckRyYWdnaW5nKSAKLSAgICA6IENsaXBib2FyZChwb2xpY3ksIGZvckRy
YWdnaW5nKQorQ2xpcGJvYXJkV3g6OkNsaXBib2FyZFd4KENsaXBib2FyZEFjY2Vzc1BvbGljeSBw
b2xpY3ksIENsaXBib2FyZFR5cGUgY2xpcGJvYXJkVHlwZSkgCisgICAgOiBDbGlwYm9hcmQocG9s
aWN5LCBjbGlwYm9hcmRUeXBlKQogewogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3Jt
L3d4L0NsaXBib2FyZFd4LmggYi9XZWJDb3JlL3BsYXRmb3JtL3d4L0NsaXBib2FyZFd4LmgKaW5k
ZXggNDVkMWNmMy4uMTM4NjM1YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS93eC9DbGlw
Ym9hcmRXeC5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vd3gvQ2xpcGJvYXJkV3guaApAQCAtMzUs
OSArMzUsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgLy8gU3RhdGUgYXZhaWxhYmxlIGR1
cmluZyBJRSdzIGV2ZW50cyBmb3IgZHJhZyBhbmQgZHJvcCBhbmQgY29weS9wYXN0ZQogICAgIGNs
YXNzIENsaXBib2FyZFd4IDogcHVibGljIENsaXBib2FyZCB7CiAgICAgcHVibGljOgotICAgICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxDbGlwYm9hcmRXeD4gY3JlYXRlKENsaXBib2FyZEFjY2Vzc1Bv
bGljeSBwb2xpY3ksIGJvb2wgZm9yRHJhZ2dpbmcpCisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRy
PENsaXBib2FyZFd4PiBjcmVhdGUoQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSwgQ2xpcGJv
YXJkVHlwZSBjbGlwYm9hcmRUeXBlKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IENsaXBib2FyZFd4KHBvbGljeSwgZm9yRHJhZ2dpbmcpKTsKKyAgICAgICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgQ2xpcGJvYXJkV3gocG9saWN5LCBjbGlwYm9hcmRUeXBlKSk7
CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIGNsZWFyRGF0YShjb25zdCBTdHJpbmcmIHR5cGUp
OwpAQCAtNjUsNyArNjUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwg
Ym9vbCBoYXNEYXRhKCk7CiAKICAgICBwcml2YXRlOgotICAgICAgICBDbGlwYm9hcmRXeChDbGlw
Ym9hcmRBY2Nlc3NQb2xpY3ksIGJvb2wgZm9yRHJhZ2dpbmcpOworICAgICAgICBDbGlwYm9hcmRX
eChDbGlwYm9hcmRBY2Nlc3NQb2xpY3ksIENsaXBib2FyZFR5cGUpOwogICAgIH07CiB9IAogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>