<?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>175858</bug_id>
          
          <creation_ts>2017-08-22 16:17:35 -0700</creation_ts>
          <short_desc>_WKThumbnailView should use the screen color space instead of sRGB</short_desc>
          <delta_ts>2017-08-23 11:15:33 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Horton">thorton</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>anshu</cc>
    
    <cc>bdakin</cc>
    
    <cc>dino</cc>
    
    <cc>don.olmstead</cc>
    
    <cc>megan_gardner</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1341332</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2017-08-22 16:17:35 -0700</bug_when>
    <thetext>_WKThumbnailView should use the screen color space instead of sRGB</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1341333</commentid>
    <comment_count>1</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2017-08-22 16:17:46 -0700</bug_when>
    <thetext>&lt;rdar://problem/33925559&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1341336</commentid>
    <comment_count>2</comment_count>
      <attachid>318820</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2017-08-22 16:21:25 -0700</bug_when>
    <thetext>Created attachment 318820
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1341352</commentid>
    <comment_count>3</comment_count>
      <attachid>318824</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2017-08-22 16:41:20 -0700</bug_when>
    <thetext>Created attachment 318824
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1341367</commentid>
    <comment_count>4</comment_count>
      <attachid>318824</attachid>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2017-08-22 17:08:16 -0700</bug_when>
    <thetext>Comment on attachment 318824
Patch

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

I don&apos;t really like switching supportsAlpha to isOpaque, but I see how it makes sense, as most things support alpha, thus allowing the default to more easily be default. I think that something like &quot;noAlpha&quot; might be more clear, though, as Alpha is the channel that is present or not.

Other than extraneous log, it looks good to me.

&gt; Source/WebKit/Shared/cg/ShareableBitmapCG.cpp:77
&gt; +

Leftover logging? Please remove if so.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1341384</commentid>
    <comment_count>5</comment_count>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2017-08-22 17:24:58 -0700</bug_when>
    <thetext>Well, looks good to what I am familiar with, obviously will need a real reviewer, and to fix the SharableBitmap build breaker.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1341393</commentid>
    <comment_count>6</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2017-08-22 17:44:40 -0700</bug_when>
    <thetext>(In reply to Megan Gardner from comment #4)
&gt; Comment on attachment 318824 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=318824&amp;action=review
&gt; 
&gt; I don&apos;t really like switching supportsAlpha to isOpaque, but I see how it
&gt; makes sense, as most things support alpha, thus allowing the default to more
&gt; easily be default. I think that something like &quot;noAlpha&quot; might be more
&gt; clear, though, as Alpha is the channel that is present or not.

IsOpaque is the name used on e.g. CALayer/NSView/UIView (and our own RemoteLayerBackingStore, among others). Thoughts? :)

&gt; Other than extraneous log, it looks good to me.

That and the fact that it doesn&apos;t build basically anywhere.

&gt; &gt; Source/WebKit/Shared/cg/ShareableBitmapCG.cpp:77
&gt; &gt; +
&gt; 
&gt; Leftover logging? Please remove if so.

Good call!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1341395</commentid>
    <comment_count>7</comment_count>
      <attachid>318836</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2017-08-22 17:45:53 -0700</bug_when>
    <thetext>Created attachment 318836
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1341397</commentid>
    <comment_count>8</comment_count>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2017-08-22 18:03:47 -0700</bug_when>
    <thetext>(In reply to Tim Horton from comment #6)
&gt; (In reply to Megan Gardner from comment #4)
&gt; &gt; Comment on attachment 318824 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=318824&amp;action=review
&gt; &gt; 
&gt; &gt; I don&apos;t really like switching supportsAlpha to isOpaque, but I see how it
&gt; &gt; makes sense, as most things support alpha, thus allowing the default to more
&gt; &gt; easily be default. I think that something like &quot;noAlpha&quot; might be more
&gt; &gt; clear, though, as Alpha is the channel that is present or not.
&gt; 
&gt; IsOpaque is the name used on e.g. CALayer/NSView/UIView (and our own
&gt; RemoteLayerBackingStore, among others). Thoughts? :)

Ok looking at those flags, at least in CALayer and UIView, seems to be more about optimization of drawing, in that it is guarantees that all the pixels have relevant data rather than the presence or absence of an alpha channel, which I guess after looking at the code more closely is also sorta what ours is about. So I guess that makes sense. It&apos;s a shame that the SharableBitmap flag is SupportsAlpha though.

&gt; 
&gt; &gt; Other than extraneous log, it looks good to me.
&gt; 
&gt; That and the fact that it doesn&apos;t build basically anywhere.

Yeah, also that

&gt; 
&gt; &gt; &gt; Source/WebKit/Shared/cg/ShareableBitmapCG.cpp:77
&gt; &gt; &gt; +
&gt; &gt; 
&gt; &gt; Leftover logging? Please remove if so.
&gt; 
&gt; Good call!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1341400</commentid>
    <comment_count>9</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2017-08-22 18:05:59 -0700</bug_when>
    <thetext>(In reply to Megan Gardner from comment #8)
&gt; (In reply to Tim Horton from comment #6)
&gt; &gt; (In reply to Megan Gardner from comment #4)
&gt; Ok looking at those flags, at least in CALayer and UIView, seems to be more
&gt; about optimization of drawing, in that it is guarantees that all the pixels
&gt; have relevant data rather than the presence or absence of an alpha channel,
&gt; which I guess after looking at the code more closely is also sorta what ours
&gt; is about. So I guess that makes sense. It&apos;s a shame that the SharableBitmap
&gt; flag is SupportsAlpha though.

Hmm, what? The ShareableBitmap flag is the one I changed. Is there another that I should change? I don&apos;t see any more SupportsAlpha in the tree after my change</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1341402</commentid>
    <comment_count>10</comment_count>
      <attachid>318838</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2017-08-22 18:06:14 -0700</bug_when>
    <thetext>Created attachment 318838
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1341406</commentid>
    <comment_count>11</comment_count>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2017-08-22 18:08:35 -0700</bug_when>
    <thetext>Sry, I was looking at the unchanged code to compare flags and I got my streams crossed.

(In reply to Tim Horton from comment #9)
&gt; (In reply to Megan Gardner from comment #8)
&gt; &gt; (In reply to Tim Horton from comment #6)
&gt; &gt; &gt; (In reply to Megan Gardner from comment #4)
&gt; &gt; Ok looking at those flags, at least in CALayer and UIView, seems to be more
&gt; &gt; about optimization of drawing, in that it is guarantees that all the pixels
&gt; &gt; have relevant data rather than the presence or absence of an alpha channel,
&gt; &gt; which I guess after looking at the code more closely is also sorta what ours
&gt; &gt; is about. So I guess that makes sense. It&apos;s a shame that the SharableBitmap
&gt; &gt; flag is SupportsAlpha though.
&gt; 
&gt; Hmm, what? The ShareableBitmap flag is the one I changed. Is there another
&gt; that I should change? I don&apos;t see any more SupportsAlpha in the tree after
&gt; my change</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1341407</commentid>
    <comment_count>12</comment_count>
      <attachid>318840</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2017-08-22 18:13:33 -0700</bug_when>
    <thetext>Created attachment 318840
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1341412</commentid>
    <comment_count>13</comment_count>
      <attachid>318840</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2017-08-22 18:29:43 -0700</bug_when>
    <thetext>Comment on attachment 318840
Patch

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

&gt; Source/WebKit/ChangeLog:13
&gt; +        if the snapshot was instead originally painted in display space.

s/painted/taken/ ?

&gt; Source/WebCore/platform/PlatformScreen.h:45
&gt; +typedef struct CGColorSpace *CGColorSpaceRef;

We are inconsistent through WebCore as to whether the * should be on the left or right :(

&gt; Source/WebKit/Shared/cg/ShareableBitmapCG.cpp:42
&gt; +    return configuration.colorSpace.cgColorSpace.get() ?: sRGBColorSpaceRef();

What does this do? :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1341450</commentid>
    <comment_count>14</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2017-08-22 21:58:35 -0700</bug_when>
    <thetext>(In reply to Dean Jackson from comment #13)
&gt; Comment on attachment 318840 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=318840&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/ChangeLog:13
&gt; &gt; +        if the snapshot was instead originally painted in display space.
&gt; 
&gt; s/painted/taken/ ?

Sure!

&gt; &gt; Source/WebCore/platform/PlatformScreen.h:45
&gt; &gt; +typedef struct CGColorSpace *CGColorSpaceRef;
&gt; 
&gt; We are inconsistent through WebCore as to whether the * should be on the
&gt; left or right :(

Nah, this one isn&apos;t an ObjC type so it should be on the left. I think it just keeps ending up on the right because people copy it out of CGColorSpace.h and that&apos;s how it is there.

&gt; &gt; Source/WebKit/Shared/cg/ShareableBitmapCG.cpp:42
&gt; &gt; +    return configuration.colorSpace.cgColorSpace.get() ?: sRGBColorSpaceRef();
&gt; 
&gt; What does this do? :)

Haha :|

Thank you!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1341451</commentid>
    <comment_count>15</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2017-08-22 21:59:46 -0700</bug_when>
    <thetext>https://trac.webkit.org/changeset/221068/webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1341652</commentid>
    <comment_count>16</comment_count>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2017-08-23 11:04:45 -0700</bug_when>
    <thetext>This ended up breaking WinCairo builds since its including GraphicsContextCG.h

https://build.webkit.org/builders/WinCairo%2064-Bit%20Release/builds/5459/steps/compile-webkit/logs/stdio</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1341659</commentid>
    <comment_count>17</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2017-08-23 11:11:38 -0700</bug_when>
    <thetext>(In reply to Don Olmstead from comment #16)
&gt; This ended up breaking WinCairo builds since its including
&gt; GraphicsContextCG.h
&gt; 
&gt; https://build.webkit.org/builders/WinCairo%2064-Bit%20Release/builds/5459/
&gt; steps/compile-webkit/logs/stdio

Err, heh, yeah, I may have forgotten about WinCairo and thought I was safe. Easy to fix, anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1341660</commentid>
    <comment_count>18</comment_count>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2017-08-23 11:13:59 -0700</bug_when>
    <thetext>(In reply to Tim Horton from comment #17)
&gt; (In reply to Don Olmstead from comment #16)
&gt; &gt; This ended up breaking WinCairo builds since its including
&gt; &gt; GraphicsContextCG.h
&gt; &gt; 
&gt; &gt; https://build.webkit.org/builders/WinCairo%2064-Bit%20Release/builds/5459/
&gt; &gt; steps/compile-webkit/logs/stdio
&gt; 
&gt; Err, heh, yeah, I may have forgotten about WinCairo and thought I was safe.
&gt; Easy to fix, anyway.

No worries. We really really need an EWS bot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1341665</commentid>
    <comment_count>19</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2017-08-23 11:15:33 -0700</bug_when>
    <thetext>(In reply to Don Olmstead from comment #18)
&gt; (In reply to Tim Horton from comment #17)
&gt; &gt; (In reply to Don Olmstead from comment #16)
&gt; &gt; &gt; This ended up breaking WinCairo builds since its including
&gt; &gt; &gt; GraphicsContextCG.h
&gt; &gt; &gt; 
&gt; &gt; &gt; https://build.webkit.org/builders/WinCairo%2064-Bit%20Release/builds/5459/
&gt; &gt; &gt; steps/compile-webkit/logs/stdio
&gt; &gt; 
&gt; &gt; Err, heh, yeah, I may have forgotten about WinCairo and thought I was safe.
&gt; &gt; Easy to fix, anyway.
&gt; 
&gt; No worries. We really really need an EWS bot.

Should be fixed in https://trac.webkit.org/changeset/221088/webkit</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318820</attachid>
            <date>2017-08-22 16:21:25 -0700</date>
            <delta_ts>2017-08-22 16:41:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175858-20170822162125.patch</filename>
            <type>text/plain</type>
            <size>41038</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxMDUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjY1ZWU5YzZmMzM4YTg0
NTdjY2VhOGVmMzkyMmE5ODYxZTZkMzdiMS4uZTQ0ZTJjZTRiMWIyOTdhNzdhOTUxMGJhYjI5NjZm
ZGJlNjNkOWU4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE3LTA4LTIyICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIF9XS1RodW1ibmFp
bFZpZXcgc2hvdWxkIHVzZSB0aGUgc2NyZWVuIGNvbG9yIHNwYWNlIGluc3RlYWQgb2Ygc1JHQgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1ODU4Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMzkyNTU1OT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtU2NyZWVuLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vaW9zL1BsYXRmb3JtU2NyZWVuSU9TLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6c2NyZWVuQ29sb3JTcGFjZSk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1BsYXRmb3Jt
U2NyZWVuTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6c2NyZWVuQ29sb3JTcGFjZSk6CisgICAg
ICAgIChXZWJDb3JlOjpzY3JlZW5TdXBwb3J0c0V4dGVuZGVkQ29sb3IpOgorICAgICAgICAqIHBs
YXRmb3JtL3dpbi9QbGF0Zm9ybVNjcmVlbldpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzY3Jl
ZW5Db2xvclNwYWNlKToKKwogMjAxNy0wOC0yMiAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFw
cGxlLmNvbT4KIAogICAgICAgICBDb3JyZWN0IFNPVVAgYW5kIGNVUkwgYnVpbGRzIGFmdGVyIHIy
MjEwMTcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCmluZGV4IDZiN2I1YjkxOGE5N2Y0OGFjMmVkOTFiZDVkY2ExZWU2NThiNjA0
OTEuLjM5MzMwOTE0MDVhNGFmYWJlMWQ4OThmYTRhMWYxNjI3MTBhNWUyNTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNzMgQEAKKzIwMTctMDgtMjIgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBh
cHBsZS5jb20+CisKKyAgICAgICAgX1dLVGh1bWJuYWlsVmlldyBzaG91bGQgdXNlIHRoZSBzY3Jl
ZW4gY29sb3Igc3BhY2UgaW5zdGVhZCBvZiBzUkdCCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU4NTgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMz
OTI1NTU5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IENoYW5nZUxvZyBwZW5kaW5nLgorCisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLU2hhcmVkQVBJ
Q2FzdC5oOgorICAgICAgICAoV2ViS2l0OjpzbmFwc2hvdE9wdGlvbnNGcm9tSW1hZ2VPcHRpb25z
KToKKyAgICAgICAgKFdlYktpdDo6dG9TbmFwc2hvdE9wdGlvbnMpOgorICAgICAgICAqIFNoYXJl
ZC9Db250ZXh0TWVudUNvbnRleHREYXRhLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q29udGV4dE1l
bnVDb250ZXh0RGF0YTo6Q29udGV4dE1lbnVDb250ZXh0RGF0YSk6CisgICAgICAgICogU2hhcmVk
L0ltYWdlT3B0aW9ucy5oOgorICAgICAgICAoV2ViS2l0OjpzbmFwc2hvdE9wdGlvbnNUb0ltYWdl
T3B0aW9ucyk6CisgICAgICAgICogU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlOjpIYW5kbGUpOgorICAgICAgICAoV2Vi
S2l0OjpTaGFyZWFibGVCaXRtYXA6OkhhbmRsZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6U2hhcmVhYmxlQml0bWFwOjpIYW5kbGU6OmRlY29kZSk6CisgICAgICAgIChXZWJLaXQ6
OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlOjpjbGVhcik6CisgICAgICAgIChXZWJLaXQ6OlNoYXJl
YWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbjo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktp
dDo6U2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uOjpkZWNvZGUpOgorICAgICAgICAoV2Vi
S2l0OjpTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJs
ZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlQml0
bWFwOjpjcmVhdGVIYW5kbGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRt
YXA6OlNoYXJlYWJsZUJpdG1hcCk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6
Y2FsY3VsYXRlQnl0ZXNQZXJQaXhlbCk6CisgICAgICAgIChXZWJLaXQ6OmNhbGN1bGF0ZUJ5dGVz
UGVyUGl4ZWwpOiBEZWxldGVkLgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVCaXRtYXAuaDoK
KyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpudW1CeXRlc0ZvclNpemUpOgorICAg
ICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OnNpemVJbkJ5dGVzIGNvbnN0KToKKyAgICAg
ICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKElQQzo6ZW5j
b2RlSW1hZ2UpOgorICAgICAgICAqIFNoYXJlZC9XZWJJbWFnZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYkltYWdlOjpjcmVhdGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJJbWFnZS5oOgorICAg
ICAgICAqIFNoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5jcHA6CisgICAgICAgIChXZWJLaXQ6
OmNvbG9yU3BhY2UpOgorICAgICAgICAoV2ViS2l0OjpiaXRtYXBJbmZvKToKKyAgICAgICAgKFdl
YktpdDo6U2hhcmVhYmxlQml0bWFwOjpjYWxjdWxhdGVCeXRlc1BlclBpeGVsKToKKyAgICAgICAg
KFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpjcmVhdGVHcmFwaGljc0NvbnRleHQpOgorICAgICAg
ICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUNHSW1hZ2UgY29uc3QpOgorICAgICAg
ICAqIFNoYXJlZC9tYWMvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW06CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpzd2FwVG9WYWxpZEZyb250QnVmZmVyKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1RodW1ibmFpbFZpZXcubW06CisgICAgICAg
ICgtW19XS1RodW1ibmFpbFZpZXcgcmVxdWVzdFNuYXBzaG90XSk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OnJlbmRlcmVkSW1hZ2Up
OgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpzbmFwc2hvdCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW06CisgICAgICAgIChXZWJLaXQ6
OlBERlBsdWdpbjo6c25hcHNob3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5Qcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb3h5OjpnZW9tZXRyeURpZENo
YW5nZSk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb3h5Ojp1cGRhdGVCYWNraW5nU3RvcmUp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRN
YWMubW06CisgICAgICAgIChXZWJLaXQ6OmNvbnZlcnRJbWFnZVRvQml0bWFwKToKKyAgICAgICAg
KFdlYktpdDo6Y29udmVydENHSW1hZ2VUb0JpdG1hcCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OmNyZWF0ZVNl
bGVjdGlvblNuYXBzaG90IGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OnNuYXBzaG90T3B0aW9uc1RvQml0bWFwQ29uZmln
dXJhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNuYXBzaG90QXRTaXplKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c25hcHNob3ROb2RlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6ZHJhd1JlY3RUb0ltYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
aW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldFBvc2l0aW9u
SW5mb3JtYXRpb24pOgorCiAyMDE3LTA4LTIyICBNYXR0IExld2lzICA8amxld2lzM0BhcHBsZS5j
b20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIyMTAyNi4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU2NyZWVuLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNjcmVlbi5oCmluZGV4IGUyOGZmMTk5NTBkZGE1NGUwOTA2
ZDk4MGFiYzQ1MmFiMzcyMjYxZGIuLmFlYzc0YmIxNTg5YmU5MjAwYTFmNTgxNGUyMDc3NmU1NjU0
YmJhYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU2NyZWVu
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TY3JlZW4uaApAQCAtNDEs
NiArNDEsMTAgQEAgdHlwZWRlZiBzdHJ1Y3QgX05TUG9pbnQgTlNQb2ludDsKIE9CSkNfQ0xBU1Mg
VUlTY3JlZW47CiAjZW5kaWYKIAorI2lmIFVTRShDRykKK3R5cGVkZWYgc3RydWN0IENHQ29sb3JT
cGFjZSAqQ0dDb2xvclNwYWNlUmVmOworI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgRmxvYXRSZWN0OwpAQCAtNjAsNiArNjQsMTAgQEAgRmxvYXRSZWN0IHNjcmVlbkF2YWls
YWJsZVJlY3QoV2lkZ2V0Kik7CiAKIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2NyZWVuU3VwcG9ydHNF
eHRlbmRlZENvbG9yKFdpZGdldCogPSBudWxscHRyKTsKIAorI2lmIFVTRShDRykKK1dFQkNPUkVf
RVhQT1JUIENHQ29sb3JTcGFjZVJlZiBzY3JlZW5Db2xvclNwYWNlKFdpZGdldCogPSBudWxscHRy
KTsKKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oTUFDKQogCiBOU1NjcmVlbiAqc2NyZWVuKE5TV2lu
ZG93ICopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3Jt
U2NyZWVuSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtU2NyZWVu
SU9TLm1tCmluZGV4IDgwOGVkOTdkMjc0ZWU4Y2E5YzRlMGYwZWZkMGRjMzBmZmJkYzYyZDIuLjBl
OWI5ZDg1M2VkOTZlNDcwYmNmMTFiYTA3MTVhZTk2ZDZmZDNiMGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVNjcmVlbklPUy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1TY3JlZW5JT1MubW0KQEAgLTMwLDYgKzMwLDcg
QEAKICNpbXBvcnQgIkZsb2F0UmVjdC5oIgogI2ltcG9ydCAiRmxvYXRTaXplLmgiCiAjaW1wb3J0
ICJGcmFtZVZpZXcuaCIKKyNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dENHLmgiCiAjaW1wb3J0ICJI
b3N0V2luZG93LmgiCiAjaW1wb3J0ICJJbnRSZWN0LmgiCiAjaW1wb3J0ICJXQUtXaW5kb3cuaCIK
QEAgLTc0LDYgKzc1LDExIEBAIGJvb2wgc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yKFdpZGdl
dCopCiAgICAgcmV0dXJuIE1HR2V0Qm9vbEFuc3dlcihrTUdRSGFzRXh0ZW5kZWRDb2xvckRpc3Bs
YXkpOwogfQogCitDR0NvbG9yU3BhY2VSZWYgc2NyZWVuQ29sb3JTcGFjZShXaWRnZXQqKQorewor
ICAgIHJldHVybiBzY3JlZW5TdXBwb3J0c0V4dGVuZGVkQ29sb3IgPyBleHRlbmRlZFNSR0JDb2xv
clNwYWNlUmVmKCkgOiBzUkdCQ29sb3JTcGFjZVJlZigpOworfQorCiAvLyBUaGVzZSBmdW5jdGlv
bnMgc2NhbGUgYmV0d2VlbiBzY3JlZW4gYW5kIHBhZ2UgY29vcmRpbmF0ZXMgYmVjYXVzZSBKYXZh
U2NyaXB0L0RPTSBvcGVyYXRpb25zCiAvLyBhc3N1bWUgdGhhdCB0aGUgc2NyZWVuIGFuZCB0aGUg
cGFnZSBzaGFyZSB0aGUgc2FtZSBjb29yZGluYXRlIHN5c3RlbS4KIEZsb2F0UmVjdCBzY3JlZW5S
ZWN0KFdpZGdldCogd2lkZ2V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1BsYXRmb3JtU2NyZWVuTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bs
YXRmb3JtU2NyZWVuTWFjLm1tCmluZGV4IDBmOTE3MmFlNTk0NTkzOWYxODQ0ZmNkMTkxY2E1NmRm
ZmQ4ODI4NTkuLmYwZjY3MWI1OGVkYjhjNjg2MjYwNTMxMGMyMjlhNzk0ZTMyOTYzZDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVNjcmVlbk1hYy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1TY3JlZW5NYWMubW0KQEAg
LTEzNCw2ICsxMzQsMTEgQEAgTlNTY3JlZW4gKnNjcmVlbihQbGF0Zm9ybURpc3BsYXlJRCBkaXNw
bGF5SUQpCiAgICAgcmV0dXJuIGZpcnN0U2NyZWVuKCk7CiB9CiAKK0NHQ29sb3JTcGFjZVJlZiBz
Y3JlZW5Db2xvclNwYWNlKFdpZGdldCogd2lkZ2V0KQoreworICAgIHJldHVybiBzY3JlZW4od2lk
Z2V0KS5jb2xvclNwYWNlLkNHQ29sb3JTcGFjZTsKK30KKwogYm9vbCBzY3JlZW5TdXBwb3J0c0V4
dGVuZGVkQ29sb3IoV2lkZ2V0KiB3aWRnZXQpCiB7CiAgICAgaWYgKCF3aWRnZXQpCkBAIC0xNDIs
NyArMTQ3LDcgQEAgYm9vbCBzY3JlZW5TdXBwb3J0c0V4dGVuZGVkQ29sb3IoV2lkZ2V0KiB3aWRn
ZXQpCiAjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEyMDAKICAgICBy
ZXR1cm4gW3NjcmVlbih3aWRnZXQpIGNhblJlcHJlc2VudERpc3BsYXlHYW11dDpOU0Rpc3BsYXlH
YW11dFAzXTsKICNlbHNlCi0gICAgYXV0byBjb2xvclNwYWNlID0gc2NyZWVuKHdpZGdldCkuY29s
b3JTcGFjZS5DR0NvbG9yU3BhY2U7CisgICAgYXV0byBjb2xvclNwYWNlID0gc2NyZWVuQ29sb3JT
cGFjZSh3aWRnZXQpOwogICAgIGF1dG8gaWNjRGF0YSA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ29w
eUlDQ1Byb2ZpbGUoY29sb3JTcGFjZSkpOwogICAgIGF1dG8gcHJvZmlsZSA9IGFkb3B0Q0YoQ29s
b3JTeW5jUHJvZmlsZUNyZWF0ZShpY2NEYXRhLmdldCgpLCBudWxscHRyKSk7CiAgICAgcmV0dXJu
IHByb2ZpbGUgJiYgQ29sb3JTeW5jUHJvZmlsZUlzV2lkZUdhbXV0KHByb2ZpbGUuZ2V0KCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1BsYXRmb3JtU2NyZWVuV2lu
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QbGF0Zm9ybVNjcmVlbldpbi5jcHAK
aW5kZXggNjlhMmVjNThmZTQyYzkyMTEzNjc2ZTlmZWU0NDhjZjM2ZTFlMmU5YS4uMTVlYjJkZmNh
NjIxMTVkMzJjMmJhYmFlYzdiYmRiYjFhZDM0OTIyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vd2luL1BsYXRmb3JtU2NyZWVuV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vUGxhdGZvcm1TY3JlZW5XaW4uY3BwCkBAIC0zMCw2ICszMCw3IEBACiAj
aW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFt
ZVZpZXcuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRDRy5oIgogI2luY2x1ZGUgIkhvc3RX
aW5kb3cuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQu
aCIKQEAgLTEwMCw2ICsxMDEsMTEgQEAgRmxvYXRSZWN0IHNjcmVlbkF2YWlsYWJsZVJlY3QoV2lk
Z2V0KiB3aWRnZXQpCiAgICAgcmV0dXJuIG1vbml0b3JJbmZvLnJjV29yazsKIH0KIAorQ0dDb2xv
clNwYWNlUmVmIHNjcmVlbkNvbG9yU3BhY2UoV2lkZ2V0KikKK3sKKyAgICByZXR1cm4gc1JHQkNv
bG9yU3BhY2VSZWYoKTsKK30KKwogYm9vbCBzY3JlZW5TdXBwb3J0c0V4dGVuZGVkQ29sb3IoV2lk
Z2V0KikKIHsKICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BUEkvYy9XS1NoYXJlZEFQSUNhc3QuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9j
L1dLU2hhcmVkQVBJQ2FzdC5oCmluZGV4IGI0ODA5ZjNhMTVmZjhjZGU2NDJkMWRkNGU2NTkxNzJk
MDUwZmU0NjAuLjViODJkNGQ0NGM1MzMwOWE3MjU3ZWI0YTE5MWRhYzJmNmQ5YzM5OGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLU2hhcmVkQVBJQ2FzdC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLU2hhcmVkQVBJQ2FzdC5oCkBAIC05MzAsOSAr
OTMwLDYgQEAgaW5saW5lIFNuYXBzaG90T3B0aW9ucyBzbmFwc2hvdE9wdGlvbnNGcm9tSW1hZ2VP
cHRpb25zKFdLSW1hZ2VPcHRpb25zIHdrSW1hZ2VPcHQKIAogICAgIGlmICh3a0ltYWdlT3B0aW9u
cyAmIGtXS0ltYWdlT3B0aW9uc1NoYXJlYWJsZSkKICAgICAgICAgc25hcHNob3RPcHRpb25zIHw9
IFNuYXBzaG90T3B0aW9uc1NoYXJlYWJsZTsKLQotICAgIGlmICh3a0ltYWdlT3B0aW9ucyAmIGtX
S1NuYXBzaG90T3B0aW9uc0V4dGVuZGVkQ29sb3IpCi0gICAgICAgIHNuYXBzaG90T3B0aW9ucyB8
PSBTbmFwc2hvdE9wdGlvbnNFeHRlbmRlZENvbG9yOwogICAgIAogICAgIHJldHVybiBzbmFwc2hv
dE9wdGlvbnM7CiB9CkBAIC05NTUsNiArOTUyLDggQEAgaW5saW5lIFNuYXBzaG90T3B0aW9ucyB0
b1NuYXBzaG90T3B0aW9ucyhXS1NuYXBzaG90T3B0aW9ucyB3a1NuYXBzaG90T3B0aW9ucykKICAg
ICAgICAgc25hcHNob3RPcHRpb25zIHw9IFNuYXBzaG90T3B0aW9uc0ZvcmNlV2hpdGVUZXh0Owog
ICAgIGlmICh3a1NuYXBzaG90T3B0aW9ucyAmIGtXS1NuYXBzaG90T3B0aW9uc1ByaW50aW5nKQog
ICAgICAgICBzbmFwc2hvdE9wdGlvbnMgfD0gU25hcHNob3RPcHRpb25zUHJpbnRpbmc7CisgICAg
aWYgKHdrU25hcHNob3RPcHRpb25zICYga1dLU25hcHNob3RPcHRpb25zRXh0ZW5kZWRDb2xvcikK
KyAgICAgICAgc25hcHNob3RPcHRpb25zIHw9IFNuYXBzaG90T3B0aW9uc1VzZVNjcmVlbkNvbG9y
U3BhY2U7CiAKICAgICByZXR1cm4gc25hcHNob3RPcHRpb25zOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvQ29udGV4dE1lbnVDb250ZXh0RGF0YS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9Db250ZXh0TWVudUNvbnRleHREYXRhLmNwcAppbmRleCAzOWJkYjMyZTFkMWEx
ZDE5NTA3ZWY4NWZiMjhmMjYxMWI5Yjk2MzliLi5mZTJkMTg0NjZkYTYxM2JiYjRhMjQzNWQ5YTU0
NWMwMTdhYzkwYmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db250ZXh0TWVu
dUNvbnRleHREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db250ZXh0TWVudUNv
bnRleHREYXRhLmNwcApAQCAtNjUsNyArNjUsNyBAQCBDb250ZXh0TWVudUNvbnRleHREYXRhOjpD
b250ZXh0TWVudUNvbnRleHREYXRhKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBtZW51TG9jYQog
ICAgICAgICByZXR1cm47CiAKICAgICAvLyBGSVhNRTogZmlndXJlIG91dCB0aGUgcm91bmRpbmcg
c3RhcnRlZ3kgZm9yIFNoYXJlYWJsZUJpdG1hcC4KLSAgICBtX2NvbnRyb2xsZWRJbWFnZSA9IFNo
YXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKEludFNpemUoaW1hZ2UtPnNpemUoKSksIFNo
YXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNBbHBoYSk7CisgICAgbV9jb250cm9sbGVkSW1hZ2UgPSBT
aGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShJbnRTaXplKGltYWdlLT5zaXplKCkpLCB7
IH0pOwogICAgIG1fY29udHJvbGxlZEltYWdlLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKS0+ZHJh
d0ltYWdlKCppbWFnZSwgSW50UG9pbnQoKSk7CiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0ltYWdlT3B0aW9ucy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvSW1h
Z2VPcHRpb25zLmgKaW5kZXggYzMwYWYwMjljMjIyYzFiYmIzMWM0ODJjNGFmM2E1M2Y1YmMyODAz
Ny4uOTE4MjE5NmVjZGJmMjBhM2EyYzliYTZmMmUyZTdjZjQ2ZTA0ODc1OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvSW1hZ2VPcHRpb25zLmgKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvSW1hZ2VPcHRpb25zLmgKQEAgLTMwLDcgKzMwLDYgQEAgbmFtZXNwYWNlIFdlYktpdCB7
CiAKIGVudW0gSW1hZ2VPcHRpb25zIHsKICAgICBJbWFnZU9wdGlvbnNTaGFyZWFibGUgPSAxIDw8
IDAsCi0gICAgSW1hZ2VPcHRpb25zRXh0ZW5kZWRDb2xvciA9IDEgPDwgMSwKIH07CiAKIGVudW0g
ewpAQCAtNDIsMjEgKzQxLDE2IEBAIGVudW0gewogICAgIFNuYXBzaG90T3B0aW9uc0ZvcmNlQmxh
Y2tUZXh0ID0gMSA8PCA2LAogICAgIFNuYXBzaG90T3B0aW9uc0ZvcmNlV2hpdGVUZXh0ID0gMSA8
PCA3LAogICAgIFNuYXBzaG90T3B0aW9uc1ByaW50aW5nID0gMSA8PCA4LAotICAgIFNuYXBzaG90
T3B0aW9uc0V4dGVuZGVkQ29sb3IgPSAxIDw8IDksCisgICAgU25hcHNob3RPcHRpb25zVXNlU2Ny
ZWVuQ29sb3JTcGFjZSA9IDEgPDwgOSwKIH07CiB0eXBlZGVmIHVpbnQzMl90IFNuYXBzaG90T3B0
aW9uczsKIAotCiBpbmxpbmUgSW1hZ2VPcHRpb25zIHNuYXBzaG90T3B0aW9uc1RvSW1hZ2VPcHRp
b25zKFNuYXBzaG90T3B0aW9ucyBzbmFwc2hvdE9wdGlvbnMpCiB7CiAgICAgdW5zaWduZWQgaW1h
Z2VPcHRpb25zID0gMDsKIAogICAgIGlmIChzbmFwc2hvdE9wdGlvbnMgJiBTbmFwc2hvdE9wdGlv
bnNTaGFyZWFibGUpCiAgICAgICAgIGltYWdlT3B0aW9ucyB8PSBJbWFnZU9wdGlvbnNTaGFyZWFi
bGU7Ci0gICAgCi0gICAgaWYgKHNuYXBzaG90T3B0aW9ucyAmIFNuYXBzaG90T3B0aW9uc0V4dGVu
ZGVkQ29sb3IpCi0gICAgICAgIGltYWdlT3B0aW9ucyB8PSBJbWFnZU9wdGlvbnNFeHRlbmRlZENv
bG9yOwotICAgIAogCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEltYWdlT3B0aW9ucz4oaW1hZ2VP
cHRpb25zKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJp
dG1hcC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuY3BwCmluZGV4
IDk5NDJlN2MyNjc1ZDc0MGQwZDFjNTFkMWVjNjNiYzIwZTYwN2EzODYuLjgzYTBlNjdmMmNmZTE0
MDc1MDRjYjdhZjgzMzY5Zjg5ZDMxODczODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1NoYXJlYWJsZUJpdG1hcC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVh
YmxlQml0bWFwLmNwcApAQCAtMzMsMTYgKzMzLDggQEAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKLSAgICAKLXN0YXRpYyB1bnNpZ25lZCBjYWxjdWxhdGVC
eXRlc1BlclBpeGVsKFNoYXJlYWJsZUJpdG1hcDo6RmxhZ3MgZmxhZ3MpCi17Ci0gICAgaWYgKGZs
YWdzICYgU2hhcmVhYmxlQml0bWFwOjpTdXBwb3J0c0V4dGVuZGVkQ29sb3IpCi0gICAgICAgIHJl
dHVybiA4OyAvLyBmb3IgZXh0ZW5kZWQgY29sb3IsIHdlIGFyZSB1c2luZyBoYWxmLWZsb2F0IHJl
cHJlc2VudGF0aW9ucwotICAgIHJldHVybiA0OwotfQogCiBTaGFyZWFibGVCaXRtYXA6OkhhbmRs
ZTo6SGFuZGxlKCkKLSAgICA6IG1fZmxhZ3MoMCkKIHsKIH0KIApAQCAtNTAsNyArNDIsNyBAQCB2
b2lkIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVy
KSBjb25zdAogewogICAgIGVuY29kZXIgPDwgbV9oYW5kbGU7CiAgICAgZW5jb2RlciA8PCBtX3Np
emU7Ci0gICAgZW5jb2RlciA8PCBtX2ZsYWdzOworICAgIGVuY29kZXIgPDwgbV9jb25maWd1cmF0
aW9uOwogfQogCiBib29sIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlOjpkZWNvZGUoSVBDOjpEZWNv
ZGVyJiBkZWNvZGVyLCBIYW5kbGUmIGhhbmRsZSkKQEAgLTU5LDkgKzUxLDggQEAgYm9vbCBTaGFy
ZWFibGVCaXRtYXA6OkhhbmRsZTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgSGFuZGxl
JiBoYW5kbGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGhhbmRsZS5tX3NpemUpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFkZWNvZGVy
LmRlY29kZShoYW5kbGUubV9mbGFncykpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYW5kbGUu
bV9jb25maWd1cmF0aW9uKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGhhbmRsZS5tX2J5
dGVzUGVyUGl4ZWwgPSBjYWxjdWxhdGVCeXRlc1BlclBpeGVsKGhhbmRsZS5tX2ZsYWdzKTsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNjksMTQgKzYwLDMxIEBAIHZvaWQgU2hhcmVhYmxlQml0
bWFwOjpIYW5kbGU6OmNsZWFyKCkKIHsKICAgICBtX2hhbmRsZS5jbGVhcigpOwogICAgIG1fc2l6
ZSA9IEludFNpemUoKTsKLSAgICBtX2ZsYWdzID0gRmxhZzo6Tm9GbGFnczsKLSAgICBtX2J5dGVz
UGVyUGl4ZWwgPSBjYWxjdWxhdGVCeXRlc1BlclBpeGVsKG1fZmxhZ3MpOworICAgIG1fY29uZmln
dXJhdGlvbiA9IHsgfTsKIH0KIAotUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gU2hhcmVhYmxlQml0
bWFwOjpjcmVhdGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgRmxhZ3MgZmxhZ3MpCit2b2lkIFNoYXJl
YWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbjo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKIHsKLSAgICB1bnNpZ25lZCBieXRlc1BlclBpeGVsID0gY2FsY3VsYXRlQnl0ZXNQZXJQ
aXhlbChmbGFncyk7Ci0gICAgYXV0byBudW1CeXRlcyA9IG51bUJ5dGVzRm9yU2l6ZShzaXplLCBi
eXRlc1BlclBpeGVsKTsKKyAgICBlbmNvZGVyIDw8IGlzT3BhcXVlOworI2lmIFBMQVRGT1JNKENP
Q09BKQorICAgIGVuY29kZXIgPDwgY29sb3JTcGFjZTsKKyNlbmRpZgorfQorCitib29sIFNoYXJl
YWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbjo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2Rlciwg
Q29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKK3sKKyAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGNvbmZpZ3VyYXRpb24uaXNPcGFxdWUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisjaWYgUExB
VEZPUk0oQ09DT0EpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjb25maWd1cmF0aW9uLmNvbG9y
U3BhY2UpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoY29u
c3QgSW50U2l6ZSYgc2l6ZSwgQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKQoreworICAgIGF1
dG8gbnVtQnl0ZXMgPSBudW1CeXRlc0ZvclNpemUoc2l6ZSwgY2FsY3VsYXRlQnl0ZXNQZXJQaXhl
bChjb25maWd1cmF0aW9uKSk7CiAgICAgaWYgKG51bUJ5dGVzLmhhc092ZXJmbG93ZWQoKSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTg0LDEzICs5MiwxMiBAQCBSZWZQdHI8U2hhcmVh
YmxlQml0bWFwPiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShjb25zdCBJbnRTaXplJiBzaXplLCBG
bGFncyBmbGFncwogICAgIGlmICghdHJ5RmFzdE1hbGxvYyhudW1CeXRlcy51bnNhZmVHZXQoKSku
Z2V0VmFsdWUoZGF0YSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBTaGFyZWFibGVCaXRtYXAoc2l6ZSwgZmxhZ3MsIGRhdGEpKTsKKyAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFNoYXJlYWJsZUJpdG1hcChzaXplLCBjb25maWd1cmF0aW9uLCBkYXRh
KSk7CiB9CiAKLVJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRl
U2hhcmVhYmxlKGNvbnN0IEludFNpemUmIHNpemUsIEZsYWdzIGZsYWdzKQorUmVmUHRyPFNoYXJl
YWJsZUJpdG1hcD4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoY29uc3QgSW50U2l6
ZSYgc2l6ZSwgQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKQogewotICAgIHVuc2lnbmVkIGJ5
dGVzUGVyUGl4ZWwgPSBjYWxjdWxhdGVCeXRlc1BlclBpeGVsKGZsYWdzKTsKLSAgICBhdXRvIG51
bUJ5dGVzID0gbnVtQnl0ZXNGb3JTaXplKHNpemUsIGJ5dGVzUGVyUGl4ZWwpOworICAgIGF1dG8g
bnVtQnl0ZXMgPSBudW1CeXRlc0ZvclNpemUoc2l6ZSwgY2FsY3VsYXRlQnl0ZXNQZXJQaXhlbChj
b25maWd1cmF0aW9uKSk7CiAgICAgaWYgKG51bUJ5dGVzLmhhc092ZXJmbG93ZWQoKSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTk4LDE1ICsxMDUsMTQgQEAgUmVmUHRyPFNoYXJlYWJs
ZUJpdG1hcD4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoY29uc3QgSW50U2l6ZSYg
c2l6ZSwgRmwKICAgICBpZiAoIXNoYXJlZE1lbW9yeSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYXJlYWJsZUJpdG1hcChzaXplLCBmbGFncywg
c2hhcmVkTWVtb3J5KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFyZWFibGVCaXRtYXAo
c2l6ZSwgY29uZmlndXJhdGlvbiwgc2hhcmVkTWVtb3J5KSk7CiB9CiAKLVJlZlB0cjxTaGFyZWFi
bGVCaXRtYXA+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGNvbnN0IEludFNpemUmIHNpemUsIEZs
YWdzIGZsYWdzLCBSZWZQdHI8U2hhcmVkTWVtb3J5PiBzaGFyZWRNZW1vcnkpCitSZWZQdHI8U2hh
cmVhYmxlQml0bWFwPiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShjb25zdCBJbnRTaXplJiBzaXpl
LCBDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24sIFJlZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJl
ZE1lbW9yeSkKIHsKICAgICBBU1NFUlQoc2hhcmVkTWVtb3J5KTsKIAotICAgIHVuc2lnbmVkIGJ5
dGVzUGVyUGl4ZWwgPSBjYWxjdWxhdGVCeXRlc1BlclBpeGVsKGZsYWdzKTsKLSAgICBhdXRvIG51
bUJ5dGVzID0gbnVtQnl0ZXNGb3JTaXplKHNpemUsIGJ5dGVzUGVyUGl4ZWwpOworICAgIGF1dG8g
bnVtQnl0ZXMgPSBudW1CeXRlc0ZvclNpemUoc2l6ZSwgY2FsY3VsYXRlQnl0ZXNQZXJQaXhlbChj
b25maWd1cmF0aW9uKSk7CiAgICAgaWYgKG51bUJ5dGVzLmhhc092ZXJmbG93ZWQoKSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgaWYgKHNoYXJlZE1lbW9yeS0+c2l6ZSgpIDwgbnVtQnl0
ZXMudW5zYWZlR2V0KCkpIHsKQEAgLTExNCw3ICsxMjAsNyBAQCBSZWZQdHI8U2hhcmVhYmxlQml0
bWFwPiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShjb25zdCBJbnRTaXplJiBzaXplLCBGbGFncyBm
bGFncwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgCi0gICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBTaGFyZWFibGVCaXRtYXAoc2l6ZSwgZmxhZ3MsIHNoYXJlZE1lbW9yeSkpOwor
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2hhcmVhYmxlQml0bWFwKHNpemUsIGNvbmZpZ3VyYXRp
b24sIHNoYXJlZE1lbW9yeSkpOwogfQogCiBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBTaGFyZWFi
bGVCaXRtYXA6OmNyZWF0ZShjb25zdCBIYW5kbGUmIGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90
ZWN0aW9uIHByb3RlY3Rpb24pCkBAIC0xMjQsNyArMTMwLDcgQEAgUmVmUHRyPFNoYXJlYWJsZUJp
dG1hcD4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoY29uc3QgSGFuZGxlJiBoYW5kbGUsIFNoYXJl
ZE1lbW8KICAgICBpZiAoIXNoYXJlZE1lbW9yeSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
LSAgICByZXR1cm4gY3JlYXRlKGhhbmRsZS5tX3NpemUsIGhhbmRsZS5tX2ZsYWdzLCBXVEZNb3Zl
KHNoYXJlZE1lbW9yeSkpOworICAgIHJldHVybiBjcmVhdGUoaGFuZGxlLm1fc2l6ZSwgaGFuZGxl
Lm1fY29uZmlndXJhdGlvbiwgV1RGTW92ZShzaGFyZWRNZW1vcnkpKTsKIH0KIAogYm9vbCBTaGFy
ZWFibGVCaXRtYXA6OmNyZWF0ZUhhbmRsZShIYW5kbGUmIGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQ
cm90ZWN0aW9uIHByb3RlY3Rpb24pIGNvbnN0CkBAIC0xMzQsMjYgKzE0MCwyMyBAQCBib29sIFNo
YXJlYWJsZUJpdG1hcDo6Y3JlYXRlSGFuZGxlKEhhbmRsZSYgaGFuZGxlLCBTaGFyZWRNZW1vcnk6
OlByb3RlY3Rpb24gcHJvdAogICAgIGlmICghbV9zaGFyZWRNZW1vcnktPmNyZWF0ZUhhbmRsZSho
YW5kbGUubV9oYW5kbGUsIHByb3RlY3Rpb24pKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
aGFuZGxlLm1fc2l6ZSA9IG1fc2l6ZTsKLSAgICBoYW5kbGUubV9mbGFncyA9IG1fZmxhZ3M7Ci0g
ICAgaGFuZGxlLm1fYnl0ZXNQZXJQaXhlbCA9IG1fYnl0ZXNQZXJQaXhlbDsKKyAgICBoYW5kbGUu
bV9jb25maWd1cmF0aW9uID0gbV9jb25maWd1cmF0aW9uOwogICAgIHJldHVybiB0cnVlOwogfQog
Ci1TaGFyZWFibGVCaXRtYXA6OlNoYXJlYWJsZUJpdG1hcChjb25zdCBJbnRTaXplJiBzaXplLCBG
bGFncyBmbGFncywgdm9pZCogZGF0YSkKK1NoYXJlYWJsZUJpdG1hcDo6U2hhcmVhYmxlQml0bWFw
KGNvbnN0IEludFNpemUmIHNpemUsIENvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbiwgdm9pZCog
ZGF0YSkKICAgICA6IG1fc2l6ZShzaXplKQotICAgICwgbV9mbGFncyhmbGFncykKKyAgICAsIG1f
Y29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uKQogICAgICwgbV9kYXRhKGRhdGEpCiB7Ci0gICAg
bV9ieXRlc1BlclBpeGVsID0gY2FsY3VsYXRlQnl0ZXNQZXJQaXhlbChmbGFncyk7CiB9CiAKLVNo
YXJlYWJsZUJpdG1hcDo6U2hhcmVhYmxlQml0bWFwKGNvbnN0IEludFNpemUmIHNpemUsIEZsYWdz
IGZsYWdzLCBSZWZQdHI8U2hhcmVkTWVtb3J5PiBzaGFyZWRNZW1vcnkpCitTaGFyZWFibGVCaXRt
YXA6OlNoYXJlYWJsZUJpdG1hcChjb25zdCBJbnRTaXplJiBzaXplLCBDb25maWd1cmF0aW9uIGNv
bmZpZ3VyYXRpb24sIFJlZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJlZE1lbW9yeSkKICAgICA6IG1f
c2l6ZShzaXplKQotICAgICwgbV9mbGFncyhmbGFncykKKyAgICAsIG1fY29uZmlndXJhdGlvbihj
b25maWd1cmF0aW9uKQogICAgICwgbV9zaGFyZWRNZW1vcnkoc2hhcmVkTWVtb3J5KQotICAgICwg
bV9kYXRhKDApCisgICAgLCBtX2RhdGEobnVsbHB0cikKIHsKLSAgICBtX2J5dGVzUGVyUGl4ZWwg
PSBjYWxjdWxhdGVCeXRlc1BlclBpeGVsKGZsYWdzKTsKIH0KIAogU2hhcmVhYmxlQml0bWFwOjp+
U2hhcmVhYmxlQml0bWFwKCkKQEAgLTE3MSw0ICsxNzQsMTEgQEAgdm9pZCogU2hhcmVhYmxlQml0
bWFwOjpkYXRhKCkgY29uc3QKICAgICByZXR1cm4gbV9kYXRhOwogfQogCisjaWYgIVVTRShDRykK
K3Vuc2lnbmVkIFNoYXJlYWJsZUJpdG1hcDo6Y2FsY3VsYXRlQnl0ZXNQZXJQaXhlbChjb25zdCBD
b25maWd1cmF0aW9uJikKK3sKKyAgICByZXR1cm4gNDsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJp
dG1hcC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmgKaW5kZXggZGY2
YzQ1YzFkMTZhZjZiZGFmMWNlZmE2MzQ0M2IxZTdkYTRhYTQzYi4uM2FiOGIyNmI4MDY0NGZiNWI4
ODNiZTVjYmU5MDQwNWE1MzQwYzUxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
U2hhcmVhYmxlQml0bWFwLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlQml0
bWFwLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKICNpZiBV
U0UoQ0cpCisjaW5jbHVkZSAiQ29sb3JTcGFjZURhdGEuaCIKICNpbmNsdWRlIDx3dGYvUmV0YWlu
UHRyLmg+CiAjZW5kaWYKIApAQCAtNDAsMjAgKzQxLDIzIEBACiAjZW5kaWYKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewotICAgIGNsYXNzIEltYWdlOwotICAgIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsK
K2NsYXNzIEltYWdlOworY2xhc3MgR3JhcGhpY3NDb250ZXh0OwogfQogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKICAgICAKIGNsYXNzIFNoYXJlYWJsZUJpdG1hcCA6IHB1YmxpYyBSZWZDb3VudGVkPFNo
YXJlYWJsZUJpdG1hcD4gewogcHVibGljOgotICAgIGVudW0gRmxhZyB7Ci0gICAgICAgIE5vRmxh
Z3MgPSAwLAotICAgICAgICBTdXBwb3J0c0FscGhhID0gMSA8PCAwLAotICAgICAgICBTdXBwb3J0
c0V4dGVuZGVkQ29sb3IgPSAxIDw8IDEsCisgICAgc3RydWN0IENvbmZpZ3VyYXRpb24geworICAg
ICAgICBib29sIGlzT3BhcXVlIHsgZmFsc2UgfTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICAg
ICAgQ29sb3JTcGFjZURhdGEgY29sb3JTcGFjZTsKKyNlbmRpZgorCisgICAgICAgIHZvaWQgZW5j
b2RlKElQQzo6RW5jb2RlciYpIGNvbnN0OworICAgICAgICBzdGF0aWMgYm9vbCBkZWNvZGUoSVBD
OjpEZWNvZGVyJiwgQ29uZmlndXJhdGlvbiYpOwogICAgIH07Ci0gICAgdHlwZWRlZiB1bnNpZ25l
ZCBGbGFnczsKIAogICAgIGNsYXNzIEhhbmRsZSB7CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKEhhbmRsZSk7CkBAIC03MiwxOCArNzYsMTcgQEAgcHVibGljOgogCiAgICAgICAgIG11dGFi
bGUgU2hhcmVkTWVtb3J5OjpIYW5kbGUgbV9oYW5kbGU7CiAgICAgICAgIFdlYkNvcmU6OkludFNp
emUgbV9zaXplOwotICAgICAgICBGbGFncyBtX2ZsYWdzOwotICAgICAgICB1bnNpZ25lZCBtX2J5
dGVzUGVyUGl4ZWw7CisgICAgICAgIENvbmZpZ3VyYXRpb24gbV9jb25maWd1cmF0aW9uOwogICAg
IH07CiAKICAgICAvLyBDcmVhdGUgYSBzaGFyZWFibGUgYml0bWFwIHRoYXQgdXNlcyBtYWxsb2Nl
ZCBtZW1vcnkuCi0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGNyZWF0ZShjb25z
dCBXZWJDb3JlOjpJbnRTaXplJiwgRmxhZ3MpOworICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVhYmxl
Qml0bWFwPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIENvbmZpZ3VyYXRpb24pOwog
CiAgICAgLy8gQ3JlYXRlIGEgc2hhcmVhYmxlIGJpdG1hcCB3aG9zZSBiYWNraW5nIG1lbW9yeSBj
YW4gYmUgc2hhcmVkIHdpdGggYW5vdGhlciBwcm9jZXNzLgotICAgIHN0YXRpYyBSZWZQdHI8U2hh
cmVhYmxlQml0bWFwPiBjcmVhdGVTaGFyZWFibGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIEZs
YWdzKTsKKyAgICBzdGF0aWMgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gY3JlYXRlU2hhcmVhYmxl
KGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBDb25maWd1cmF0aW9uKTsKIAogICAgIC8vIENyZWF0
ZSBhIHNoYXJlYWJsZSBiaXRtYXAgZnJvbSBhbiBhbHJlYWR5IGV4aXN0aW5nIHNoYXJlZCBtZW1v
cnkgYmxvY2suCi0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGNyZWF0ZShjb25z
dCBXZWJDb3JlOjpJbnRTaXplJiwgRmxhZ3MsIFJlZlB0cjxTaGFyZWRNZW1vcnk+KTsKKyAgICBz
dGF0aWMgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkludFNp
emUmLCBDb25maWd1cmF0aW9uLCBSZWZQdHI8U2hhcmVkTWVtb3J5Pik7CiAKICAgICAvLyBDcmVh
dGUgYSBzaGFyZWFibGUgYml0bWFwIGZyb20gYSBoYW5kbGUuCiAgICAgc3RhdGljIFJlZlB0cjxT
aGFyZWFibGVCaXRtYXA+IGNyZWF0ZShjb25zdCBIYW5kbGUmLCBTaGFyZWRNZW1vcnk6OlByb3Rl
Y3Rpb24gPSBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRXcml0ZSk7CkBAIC0xMjMsMTUg
KzEyNiwxMCBAQCBwdWJsaWM6CiAjZW5kaWYKIAogcHJpdmF0ZToKLSAgICBTaGFyZWFibGVCaXRt
YXAoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIEZsYWdzLCB2b2lkKik7Ci0gICAgU2hhcmVhYmxl
Qml0bWFwKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBGbGFncywgUmVmUHRyPFNoYXJlZE1lbW9y
eT4pOworICAgIFNoYXJlYWJsZUJpdG1hcChjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgQ29uZmln
dXJhdGlvbiwgdm9pZCopOworICAgIFNoYXJlYWJsZUJpdG1hcChjb25zdCBXZWJDb3JlOjpJbnRT
aXplJiwgQ29uZmlndXJhdGlvbiwgUmVmUHRyPFNoYXJlZE1lbW9yeT4pOwogCi0jaWYgVVNFKENB
SVJPKQotICAgIHN0YXRpYyBDaGVja2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVyZmxvdz4gbnVtQnl0
ZXNGb3JTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsKLSAgICBzdGF0aWMgQ2hlY2tlZDx1
bnNpZ25lZCwgUmVjb3JkT3ZlcmZsb3c+IG51bUJ5dGVzRm9yU2l6ZShjb25zdCBXZWJDb3JlOjpJ
bnRTaXplJiBzaXplLCB1bnNpZ25lZCBieXRlc1BlclBpeGVsKSB7IHJldHVybiBudW1CeXRlc0Zv
clNpemUoc2l6ZSk7IH0KLSNlbHNlCiAgICAgc3RhdGljIENoZWNrZWQ8dW5zaWduZWQsIFJlY29y
ZE92ZXJmbG93PiBudW1CeXRlc0ZvclNpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSwg
dW5zaWduZWQgYnl0ZXNQZXJQaXhlbCkgeyByZXR1cm4gc2l6ZS5hcmVhPFJlY29yZE92ZXJmbG93
PigpICogYnl0ZXNQZXJQaXhlbDsgfQotI2VuZGlmCiAKICNpZiBVU0UoQ0cpCiAgICAgUmV0YWlu
UHRyPENHSW1hZ2VSZWY+IGNyZWF0ZUNHSW1hZ2UoQ0dEYXRhUHJvdmlkZXJSZWYpIGNvbnN0OwpA
QCAtMTQ0LDE1ICsxNDIsMTIgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgdm9pZCogZGF0YSgp
IGNvbnN0OwotI2lmIFVTRShDQUlSTykKLSAgICBzaXplX3Qgc2l6ZUluQnl0ZXMoKSBjb25zdCB7
IHJldHVybiBudW1CeXRlc0ZvclNpemUobV9zaXplKS51bnNhZmVHZXQoKTsgfQotI2Vsc2UKLSAg
ICBzaXplX3Qgc2l6ZUluQnl0ZXMoKSBjb25zdCB7IHJldHVybiBudW1CeXRlc0ZvclNpemUobV9z
aXplLCBtX2J5dGVzUGVyUGl4ZWwpLnVuc2FmZUdldCgpOyB9Ci0jZW5kaWYKLSAgICAKKworICAg
IHN0YXRpYyB1bnNpZ25lZCBjYWxjdWxhdGVCeXRlc1BlclBpeGVsKGNvbnN0IENvbmZpZ3VyYXRp
b24mKTsKKyAgICBzaXplX3Qgc2l6ZUluQnl0ZXMoKSBjb25zdCB7IHJldHVybiBudW1CeXRlc0Zv
clNpemUobV9zaXplLCBjYWxjdWxhdGVCeXRlc1BlclBpeGVsKG1fY29uZmlndXJhdGlvbikpLnVu
c2FmZUdldCgpOyB9CisKICAgICBXZWJDb3JlOjpJbnRTaXplIG1fc2l6ZTsKLSAgICBGbGFncyBt
X2ZsYWdzOwotICAgIHVuc2lnbmVkIG1fYnl0ZXNQZXJQaXhlbDsKKyAgICBDb25maWd1cmF0aW9u
IG1fY29uZmlndXJhdGlvbjsKIAogICAgIC8vIElmIHRoZSBzaGFyZWFibGUgYml0bWFwIGlzIGJh
Y2tlZCBieSBzaGFyZWQgbWVtb3J5LCB0aGlzIHBvaW50cyB0byB0aGUgc2hhcmVkIG1lbW9yeSBv
YmplY3QuCiAgICAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gbV9zaGFyZWRNZW1vcnk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCAzNzE1YmU0
NDE1OTQ1NDI3YzMyN2JlZmZmMzMzNjU2OWYxMzA3YjA4Li43YzQ5Y2U4NjI5OGI2MjFmZWY2NzZi
NWUwNjU4MjEwNGQ1NGY4ZmY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVB
cmd1bWVudENvZGVycy5jcHAKQEAgLTExMTksNyArMTExOSw3IEBAIGJvb2wgQXJndW1lbnRDb2Rl
cjxDcmVkZW50aWFsPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIENyZWRlbnRpYWwmIGNyZWRl
bnRpYWwpCiAKIHN0YXRpYyB2b2lkIGVuY29kZUltYWdlKEVuY29kZXImIGVuY29kZXIsIEltYWdl
JiBpbWFnZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiaXRtYXAgPSBTaGFyZWFi
bGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShJbnRTaXplKGltYWdlLnNpemUoKSksIFNoYXJlYWJs
ZUJpdG1hcDo6U3VwcG9ydHNBbHBoYSk7CisgICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gYml0
bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoSW50U2l6ZShpbWFnZS5zaXpl
KCkpLCB7IH0pOwogICAgIGJpdG1hcC0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCktPmRyYXdJbWFn
ZShpbWFnZSwgSW50UG9pbnQoKSk7CiAKICAgICBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBoYW5k
bGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJJbWFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJJbWFnZS5jcHAKaW5kZXggODRjNjljNTdmMDJhODhlOTFhZDVj
NTQ2Mjg2ZTM1ZWNjY2ZlNTdlNC4uZDk0M2RiZjRkOTRkNTMyN2M3ZGQwZDYxMWU4YTA4MTM5YmJi
MGU4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViSW1hZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkltYWdlLmNwcApAQCAtMjYsMjUgKzI2LDI0IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViSW1hZ2UuaCIKIAotI2luY2x1ZGUgIlNo
YXJlYWJsZUJpdG1hcC5oIgotCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKIFJlZlB0cjxXZWJJbWFnZT4gV2ViSW1hZ2U6OmNyZWF0ZShjb25zdCBJbnRT
aXplJiBzaXplLCBJbWFnZU9wdGlvbnMgb3B0aW9ucykKIHsKLSAgICBpbnQgc2hhcmFibGVPcHRp
b25zID0gU2hhcmVhYmxlQml0bWFwOjpTdXBwb3J0c0FscGhhOwotICAgIAotICAgIGlmIChvcHRp
b25zICYgSW1hZ2VPcHRpb25zRXh0ZW5kZWRDb2xvcikKLSAgICAgICAgc2hhcmFibGVPcHRpb25z
IHw9IFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNFeHRlbmRlZENvbG9yOworICAgIHJldHVybiBX
ZWJJbWFnZTo6Y3JlYXRlKHNpemUsIG9wdGlvbnMsIHsgfSk7Cit9CisKK1JlZlB0cjxXZWJJbWFn
ZT4gV2ViSW1hZ2U6OmNyZWF0ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplLCBJbWFnZU9w
dGlvbnMgb3B0aW9ucywgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uJiBiaXRt
YXBDb25maWd1cmF0aW9uKQorewogICAgIGlmIChvcHRpb25zICYgSW1hZ2VPcHRpb25zU2hhcmVh
YmxlKSB7Ci0gICAgICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFy
ZWFibGUoc2l6ZSwgc2hhcmFibGVPcHRpb25zKTsKKyAgICAgICAgYXV0byBiaXRtYXAgPSBTaGFy
ZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShzaXplLCBiaXRtYXBDb25maWd1cmF0aW9uKTsK
ICAgICAgICAgaWYgKCFiaXRtYXApCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAg
ICAgcmV0dXJuIFdlYkltYWdlOjpjcmVhdGUoYml0bWFwLnJlbGVhc2VOb25OdWxsKCkpOwogICAg
IH0KLSAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKHNpemUsIHNoYXJh
YmxlT3B0aW9ucyk7CisgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShz
aXplLCBiaXRtYXBDb25maWd1cmF0aW9uKTsKICAgICBpZiAoIWJpdG1hcCkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIFdlYkltYWdlOjpjcmVhdGUoYml0bWFwLnJlbGVhc2VO
b25OdWxsKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViSW1hZ2UuaCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkltYWdlLmgKaW5kZXggNDU3NGM5ZTQ5ZWQxNDQwYjI1
MmM1MGIzY2Y4MjRhNDlhYWU1OWE1MS4uMjJmMzg2ZjlkMjlhNWRmNTc0MzhmYmFiNDc4YmJmODZm
ZTFjZDEwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViSW1hZ2UuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJJbWFnZS5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNp
bmNsdWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJJbWFnZU9wdGlvbnMuaCIKKyNpbmNsdWRl
ICJTaGFyZWFibGVCaXRtYXAuaCIKICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTM1LDEzICszNiwxMiBAQCBjbGFzcyBJbnRTaXplOwogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAotY2xhc3MgU2hhcmVhYmxlQml0bWFwOwotCiAvLyBXZWJJbWFnZSAtIEFuIGlt
YWdlIHR5cGUgc3VpdGFibGUgZm9yIHZlbmRpbmcgdG8gYW4gQVBJLgogCiBjbGFzcyBXZWJJbWFn
ZSA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OkltYWdlPiB7CiBw
dWJsaWM6CiAgICAgc3RhdGljIFJlZlB0cjxXZWJJbWFnZT4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6
OkludFNpemUmLCBJbWFnZU9wdGlvbnMpOworICAgIHN0YXRpYyBSZWZQdHI8V2ViSW1hZ2U+IGNy
ZWF0ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgSW1hZ2VPcHRpb25zLCBjb25zdCBTaGFyZWFi
bGVCaXRtYXA6OkNvbmZpZ3VyYXRpb24mKTsKICAgICBzdGF0aWMgUmVmPFdlYkltYWdlPiBjcmVh
dGUoUmVmPFNoYXJlYWJsZUJpdG1hcD4mJik7CiAgICAgfldlYkltYWdlKCk7CiAgICAgCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5jcHAgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5jcHAKaW5kZXggOWZlMGZh
YjVjY2U2MjU2NDgwZDk4YTBhMTBiZDljMDY2ZjY5NWZiMy4uMWI1NzEwYjRhNTk3MGQ5YzNjN2Iw
NzI5YTM0NDMwYzIxM2EzYjU4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvY2cv
U2hhcmVhYmxlQml0bWFwQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NnL1NoYXJl
YWJsZUJpdG1hcENHLmNwcApAQCAtMzUsNDIgKzM1LDQ3IEBACiB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CisgICAgCitzdGF0aWMgQ0dDb2xvclNwYWNlUmVm
IGNvbG9yU3BhY2UoY29uc3QgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uJiBjb25maWd1
cmF0aW9uKQoreworICAgIHJldHVybiBjb25maWd1cmF0aW9uLmNvbG9yU3BhY2UuY2dDb2xvclNw
YWNlLmdldCgpID86IHNSR0JDb2xvclNwYWNlUmVmKCk7Cit9CiAKLXN0YXRpYyBDR0JpdG1hcElu
Zm8gYml0bWFwSW5mbyhTaGFyZWFibGVCaXRtYXA6OkZsYWdzIGZsYWdzKQorc3RhdGljIENHQml0
bWFwSW5mbyBiaXRtYXBJbmZvKGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbiYg
Y29uZmlndXJhdGlvbikKIHsKICAgICBDR0JpdG1hcEluZm8gaW5mbyA9IDA7Ci0gICAgaWYgKGZs
YWdzICYgU2hhcmVhYmxlQml0bWFwOjpTdXBwb3J0c0V4dGVuZGVkQ29sb3IpIHsKKyAgICBpZiAo
Q0dDb2xvclNwYWNlVXNlc0V4dGVuZGVkUmFuZ2UoY29sb3JTcGFjZShjb25maWd1cmF0aW9uKSkp
IHsKICAgICAgICAgaW5mbyB8PSBrQ0dCaXRtYXBGbG9hdENvbXBvbmVudHMgfCBrQ0dCaXRtYXBC
eXRlT3JkZXIxNkhvc3Q7Ci0gICAgICAgIAotICAgICAgICBpZiAoZmxhZ3MgJiBTaGFyZWFibGVC
aXRtYXA6OlN1cHBvcnRzQWxwaGEpCi0gICAgICAgICAgICBpbmZvIHw9IGtDR0ltYWdlQWxwaGFQ
cmVtdWx0aXBsaWVkTGFzdDsKLSAgICAgICAgZWxzZQorCisgICAgICAgIGlmIChjb25maWd1cmF0
aW9uLmlzT3BhcXVlKQogICAgICAgICAgICAgaW5mbyB8PSBrQ0dJbWFnZUFscGhhTm9uZVNraXBM
YXN0OwotICAgICAgICAKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgaW5mbyB8PSBrQ0dJbWFn
ZUFscGhhUHJlbXVsdGlwbGllZExhc3Q7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaW5mbyB8PSBr
Q0dCaXRtYXBCeXRlT3JkZXIzMkhvc3Q7Ci0gICAgICAgIAotICAgICAgICBpZiAoZmxhZ3MgJiBT
aGFyZWFibGVCaXRtYXA6OlN1cHBvcnRzQWxwaGEpCi0gICAgICAgICAgICBpbmZvIHw9IGtDR0lt
YWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3Q7Ci0gICAgICAgIGVsc2UKKworICAgICAgICBpZiAo
Y29uZmlndXJhdGlvbi5pc09wYXF1ZSkKICAgICAgICAgICAgIGluZm8gfD0ga0NHSW1hZ2VBbHBo
YU5vbmVTa2lwRmlyc3Q7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGluZm8gfD0ga0NHSW1h
Z2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdDsKICAgICB9Ci0gICAgCisKICAgICByZXR1cm4gaW5m
bzsKIH0KLSAgICAKLXN0YXRpYyBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZShTaGFyZWFibGVC
aXRtYXA6OkZsYWdzIGZsYWdzKQorCit1bnNpZ25lZCBTaGFyZWFibGVCaXRtYXA6OmNhbGN1bGF0
ZUJ5dGVzUGVyUGl4ZWwoY29uc3QgQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKIHsKLSAg
ICBpZiAoZmxhZ3MgJiBTaGFyZWFibGVCaXRtYXA6OlN1cHBvcnRzRXh0ZW5kZWRDb2xvcikKLSAg
ICAgICAgcmV0dXJuIGV4dGVuZGVkU1JHQkNvbG9yU3BhY2VSZWYoKTsKLSAgICByZXR1cm4gc1JH
QkNvbG9yU3BhY2VSZWYoKTsKKyAgICByZXR1cm4gQ0dDb2xvclNwYWNlVXNlc0V4dGVuZGVkUmFu
Z2UoY29sb3JTcGFjZShjb25maWd1cmF0aW9uKSkgPyA4IDogNDsKIH0KIAogc3RkOjp1bmlxdWVf
cHRyPEdyYXBoaWNzQ29udGV4dD4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVHcmFwaGljc0NvbnRl
eHQoKQogewogICAgIHJlZigpOyAvLyBCYWxhbmNlZCBieSBkZXJlZiBpbiByZWxlYXNlQml0bWFw
Q29udGV4dERhdGEuCi0gICAgCi0gICAgUmV0YWluUHRyPENHQ29udGV4dFJlZj4gYml0bWFwQ29u
dGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlV2l0aERhdGEoZGF0YSgpLCBtX3Np
emUud2lkdGgoKSwgbV9zaXplLmhlaWdodCgpLCBtX2J5dGVzUGVyUGl4ZWwgKiA4IC8gNCwgbV9z
aXplLndpZHRoKCkgKiBtX2J5dGVzUGVyUGl4ZWwsIGNvbG9yU3BhY2UobV9mbGFncyksIGJpdG1h
cEluZm8obV9mbGFncyksIHJlbGVhc2VCaXRtYXBDb250ZXh0RGF0YSwgdGhpcykpOworCisgICAg
Q0ZTaG93KGNvbG9yU3BhY2UobV9jb25maWd1cmF0aW9uKSk7CisKKyAgICB1bnNpZ25lZCBieXRl
c1BlclBpeGVsID0gY2FsY3VsYXRlQnl0ZXNQZXJQaXhlbChtX2NvbmZpZ3VyYXRpb24pOworICAg
IFJldGFpblB0cjxDR0NvbnRleHRSZWY+IGJpdG1hcENvbnRleHQgPSBhZG9wdENGKENHQml0bWFw
Q29udGV4dENyZWF0ZVdpdGhEYXRhKGRhdGEoKSwgbV9zaXplLndpZHRoKCksIG1fc2l6ZS5oZWln
aHQoKSwgYnl0ZXNQZXJQaXhlbCAqIDggLyA0LCBtX3NpemUud2lkdGgoKSAqIGJ5dGVzUGVyUGl4
ZWwsIGNvbG9yU3BhY2UobV9jb25maWd1cmF0aW9uKSwgYml0bWFwSW5mbyhtX2NvbmZpZ3VyYXRp
b24pLCByZWxlYXNlQml0bWFwQ29udGV4dERhdGEsIHRoaXMpKTsKICAgICAKICAgICBBU1NFUlQo
Yml0bWFwQ29udGV4dC5nZXQoKSk7CiAKQEAgLTEwOCw3ICsxMTMsOCBAQCBSZXRhaW5QdHI8Q0dJ
bWFnZVJlZj4gU2hhcmVhYmxlQml0bWFwOjptYWtlQ0dJbWFnZSgpCiBSZXRhaW5QdHI8Q0dJbWFn
ZVJlZj4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVDR0ltYWdlKENHRGF0YVByb3ZpZGVyUmVmIGRh
dGFQcm92aWRlcikgY29uc3QKIHsKICAgICBBU1NFUlRfQVJHKGRhdGFQcm92aWRlciwgZGF0YVBy
b3ZpZGVyKTsKLSAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2UgPSBhZG9wdENGKENHSW1h
Z2VDcmVhdGUobV9zaXplLndpZHRoKCksIG1fc2l6ZS5oZWlnaHQoKSwgbV9ieXRlc1BlclBpeGVs
ICogOCAvIDQsIG1fYnl0ZXNQZXJQaXhlbCAqIDgsIG1fc2l6ZS53aWR0aCgpICogbV9ieXRlc1Bl
clBpeGVsLCBjb2xvclNwYWNlKG1fZmxhZ3MpLCBiaXRtYXBJbmZvKG1fZmxhZ3MpLCBkYXRhUHJv
dmlkZXIsIDAsIGZhbHNlLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0KSk7CisgICAgdW5zaWdu
ZWQgYnl0ZXNQZXJQaXhlbCA9IGNhbGN1bGF0ZUJ5dGVzUGVyUGl4ZWwobV9jb25maWd1cmF0aW9u
KTsKKyAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2UgPSBhZG9wdENGKENHSW1hZ2VDcmVh
dGUobV9zaXplLndpZHRoKCksIG1fc2l6ZS5oZWlnaHQoKSwgYnl0ZXNQZXJQaXhlbCAqIDggLyA0
LCBieXRlc1BlclBpeGVsICogOCwgbV9zaXplLndpZHRoKCkgKiBieXRlc1BlclBpeGVsLCBjb2xv
clNwYWNlKG1fY29uZmlndXJhdGlvbiksIGJpdG1hcEluZm8obV9jb25maWd1cmF0aW9uKSwgZGF0
YVByb3ZpZGVyLCAwLCBmYWxzZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpOwogICAgIHJl
dHVybiBpbWFnZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1Jl
bW90ZUxheWVyQmFja2luZ1N0b3JlLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1JlbW90
ZUxheWVyQmFja2luZ1N0b3JlLm1tCmluZGV4IDRkMDliODQ0NjZlYWFlNDkzMDVhOGMxNjgwNDI1
OTk5MWFiNzE2MTkuLjJhNWQyZWNkMWI5NzkxMjNiNTBjNzZhODU3ZGJlYzY5NWE2NWM1YWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9SZW1vdGVMYXllckJhY2tpbmdTdG9y
ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJCYWNraW5nU3Rv
cmUubW0KQEAgLTIxMiw4ICsyMTIsMTEgQEAgdm9pZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6
c3dhcFRvVmFsaWRGcm9udEJ1ZmZlcigpCiAgICAgQVNTRVJUKCFtX2FjY2VsZXJhdGVzRHJhd2lu
Zyk7CiAgICAgc3RkOjpzd2FwKG1fZnJvbnRCdWZmZXIsIG1fYmFja0J1ZmZlcik7CiAKLSAgICBp
ZiAoIW1fZnJvbnRCdWZmZXIuYml0bWFwKQotICAgICAgICBtX2Zyb250QnVmZmVyLmJpdG1hcCA9
IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGV4cGFuZGVkU2NhbGVkU2l6ZSwgbV9p
c09wYXF1ZSA/IFNoYXJlYWJsZUJpdG1hcDo6Tm9GbGFncyA6IFNoYXJlYWJsZUJpdG1hcDo6U3Vw
cG9ydHNBbHBoYSk7CisgICAgaWYgKCFtX2Zyb250QnVmZmVyLmJpdG1hcCkgeworICAgICAgICBT
aGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb24gYml0bWFwQ29uZmlndXJhdGlvbjsKKyAgICAg
ICAgYml0bWFwQ29uZmlndXJhdGlvbi5pc09wYXF1ZSA9IG1faXNPcGFxdWU7CisgICAgICAgIG1f
ZnJvbnRCdWZmZXIuYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoZXhw
YW5kZWRTY2FsZWRTaXplLCBiaXRtYXBDb25maWd1cmF0aW9uKTsKKyAgICB9CiB9CiAKIGJvb2wg
UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmRpc3BsYXkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1RodW1ibmFpbFZpZXcubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVGh1bWJuYWlsVmlldy5tbQppbmRleCA4NDQyODIz
ZmUxN2QyNjRlZjA4NDNhYTA0NzEzNWNjN2Q3ZmZmN2JlLi5lZmI1NjM0YTNjM2MxMGJjODU1ZjMw
OTcyNThjYTE0Y2IyOTlkNGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLVGh1bWJuYWlsVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLVGh1bWJuYWlsVmlldy5tbQpAQCAtOTIsNyArOTIsNyBAQCAtICh2b2lk
KXJlcXVlc3RTbmFwc2hvdAogCiAgICAgUmV0YWluUHRyPF9XS1RodW1ibmFpbFZpZXc+IHRodW1i
bmFpbFZpZXcgPSBzZWxmOwogICAgIEludFJlY3Qgc25hcHNob3RSZWN0KEludFBvaW50KCksIF93
ZWJQYWdlUHJveHktPnZpZXdTaXplKCkgLSBJbnRTaXplKDAsIF93ZWJQYWdlUHJveHktPnRvcENv
bnRlbnRJbnNldCgpKSk7Ci0gICAgU25hcHNob3RPcHRpb25zIG9wdGlvbnMgPSBTbmFwc2hvdE9w
dGlvbnNJblZpZXdDb29yZGluYXRlczsKKyAgICBTbmFwc2hvdE9wdGlvbnMgb3B0aW9ucyA9IFNu
YXBzaG90T3B0aW9uc0luVmlld0Nvb3JkaW5hdGVzIHwgU25hcHNob3RPcHRpb25zVXNlU2NyZWVu
Q29sb3JTcGFjZTsKICAgICBJbnRTaXplIGJpdG1hcFNpemUgPSBzbmFwc2hvdFJlY3Quc2l6ZSgp
OwogICAgIGJpdG1hcFNpemUuc2NhbGUoX3NjYWxlICogX3dlYlBhZ2VQcm94eS0+ZGV2aWNlU2Nh
bGVGYWN0b3IoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5k
bGUuY3BwCmluZGV4IGQxZmJjMjVkNWMyMjc2MDkxMGMyNzQ0OTY1ZTk2NDNmY2QyNjlmMmIuLmQ0
NmM5MmQwYWJmMDZlNDFjZTQ2OWZiNzZjODk1MDdiNWIyYzUyM2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5n
ZUhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcApAQCAtMTMwLDcgKzEzMCw3IEBAIFJl
ZlB0cjxXZWJJbWFnZT4gSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZTo6cmVuZGVyZWRJbWFnZShT
bmFwc2hvdE9wdGlvbnMgb3B0aW9uCiAgICAgSW50U2l6ZSBiYWNraW5nU3RvcmVTaXplID0gcGFp
bnRSZWN0LnNpemUoKTsKICAgICBiYWNraW5nU3RvcmVTaXplLnNjYWxlKHNjYWxlRmFjdG9yKTsK
IAotICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJhY2tpbmdTdG9yZSA9IFNoYXJlYWJsZUJp
dG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGJhY2tpbmdTdG9yZVNpemUsIFNoYXJlYWJsZUJpdG1hcDo6
U3VwcG9ydHNBbHBoYSk7CisgICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gYmFja2luZ1N0b3Jl
ID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoYmFja2luZ1N0b3JlU2l6ZSwgeyB9
KTsKICAgICBpZiAoIWJhY2tpbmdTdG9yZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNj
YXBlUGx1Z2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L05ldHNjYXBlUGx1Z2luLmNwcAppbmRleCBhNGQ3ZjFhOTBjYzkwMjkxYTc3MTA5ZDE2ODFmZTI0
YmIzMzIwNWI0Li5jYjk3M2Q3ZjdhZWU1MjMwMGEwYzhiZTVkNmE5ZWFlNGJiMGI3MWIwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2Fw
ZVBsdWdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUvTmV0c2NhcGVQbHVnaW4uY3BwCkBAIC03NTQsNyArNzU0LDcgQEAgUmVmUHRyPFNoYXJlYWJs
ZUJpdG1hcD4gTmV0c2NhcGVQbHVnaW46OnNuYXBzaG90KCkKICAgICBJbnRTaXplIGJhY2tpbmdT
dG9yZVNpemUgPSBtX3BsdWdpblNpemU7CiAgICAgYmFja2luZ1N0b3JlU2l6ZS5zY2FsZShjb250
ZW50c1NjYWxlRmFjdG9yKCkpOwogCi0gICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gYml0bWFw
ID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoYmFja2luZ1N0b3JlU2l6ZSwgU2hh
cmVhYmxlQml0bWFwOjpTdXBwb3J0c0FscGhhKTsKKyAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFw
PiBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShiYWNraW5nU3RvcmVT
aXplLCB7IH0pOwogICAgIGF1dG8gY29udGV4dCA9IGJpdG1hcC0+Y3JlYXRlR3JhcGhpY3NDb250
ZXh0KCk7CiAKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHJlYWxseSBjYWxsIGFwcGx5RGV2aWNl
U2NhbGVGYWN0b3IgaW5zdGVhZCBvZiBzY2FsZSwgYnV0IHRoYXQgZW5kcyB1cCBjYWxsaW5nIGlu
dG8gV0tTSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERG
L1BERlBsdWdpbi5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQ
bHVnaW4ubW0KaW5kZXggZjJmMDgwY2MxOTUzYTkwZjAwYTZjN2IyMTk1ZjEzMDhmZTBmZTFhOS4u
OTI3YzhhYzQzZDI1ZDZmN2M3Yjg3ODU2NjY2MDdiZDI3M2IzZWJhMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCkBAIC0xMjQ2LDcg
KzEyNDYsNyBAQCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBQREZQbHVnaW46OnNuYXBzaG90KCkK
ICAgICBJbnRTaXplIGJhY2tpbmdTdG9yZVNpemUgPSBzaXplKCk7CiAgICAgYmFja2luZ1N0b3Jl
U2l6ZS5zY2FsZShjb250ZW50c1NjYWxlRmFjdG9yKTsKIAotICAgIFJlZlB0cjxTaGFyZWFibGVC
aXRtYXA+IGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGJhY2tpbmdT
dG9yZVNpemUsIFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNBbHBoYSk7CisgICAgUmVmUHRyPFNo
YXJlYWJsZUJpdG1hcD4gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUo
YmFja2luZ1N0b3JlU2l6ZSwgeyB9KTsKICAgICBhdXRvIGNvbnRleHQgPSBiaXRtYXAtPmNyZWF0
ZUdyYXBoaWNzQ29udGV4dCgpOwogCiAgICAgY29udGV4dC0+c2NhbGUoRmxvYXRTaXplKGNvbnRl
bnRzU2NhbGVGYWN0b3IsIC1jb250ZW50c1NjYWxlRmFjdG9yKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAKaW5kZXggNmI0ZGRmY2M5OTVk
ODYxOTNlZDY1ZmIwZTk5NGFhN2JjMDViN2Y0Zi4uZTY4ZDlkYWZlOWRjYTM0YThiMTQyNmYzZjU2
NmVlYTBlNzQ4ODUzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblByb3h5LmNwcApAQCAtMjcwLDcgKzI3MCw3IEBAIHZvaWQgUGx1Z2luUHJveHk6Omdl
b21ldHJ5RGlkQ2hhbmdlKCkKIAogICAgIGlmICh1cGRhdGVCYWNraW5nU3RvcmUoKSkgewogICAg
ICAgICAvLyBDcmVhdGUgYSBuZXcgcGx1Zy1pbiBiYWNraW5nIHN0b3JlLgotICAgICAgICBtX3Bs
dWdpbkJhY2tpbmdTdG9yZSA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKG1fYmFj
a2luZ1N0b3JlLT5zaXplKCksIFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNBbHBoYSk7CisgICAg
ICAgIG1fcGx1Z2luQmFja2luZ1N0b3JlID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFi
bGUobV9iYWNraW5nU3RvcmUtPnNpemUoKSwgeyB9KTsKICAgICAgICAgaWYgKCFtX3BsdWdpbkJh
Y2tpbmdTdG9yZSkKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtNjEzLDcgKzYxMyw3IEBAIGJv
b2wgUGx1Z2luUHJveHk6OnVwZGF0ZUJhY2tpbmdTdG9yZSgpCiAgICAgICAgIG1fYmFja2luZ1N0
b3JlID0gbnVsbHB0cjsgLy8gR2l2ZSBtYWxsb2MgYSBjaGFuY2UgdG8gcmVjeWNsZSBvdXIgYmFj
a2luZyBzdG9yZS4KICAgICB9CiAKLSAgICBtX2JhY2tpbmdTdG9yZSA9IFNoYXJlYWJsZUJpdG1h
cDo6Y3JlYXRlKGJhY2tpbmdTdG9yZVNpemUsIFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNBbHBo
YSk7CisgICAgbV9iYWNraW5nU3RvcmUgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShiYWNraW5n
U3RvcmVTaXplLCB7IH0pOwogICAgIHJldHVybiAhIW1fYmFja2luZ1N0b3JlOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRy
YWdDbGllbnRNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
bWFjL1dlYkRyYWdDbGllbnRNYWMubW0KaW5kZXggYjBjZWUyMWE4ODExMjQwOWY0MjJhNmE3N2Y2
MGNmNTU1ZGZlYjAzZi4uYjAzZjVmNGNlYjIxYTg0NzFjNDQ3ZjVlY2VmY2IzNTc2NWI1YzE0ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9X
ZWJEcmFnQ2xpZW50TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQpAQCAtNDEsNyArNDEsNyBAQAogI2ltcG9y
dCA8V2ViQ29yZS9GcmFtZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZURlc3RydWN0aW9uT2Jz
ZXJ2ZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWVWaWV3Lmg+Ci0jaW1wb3J0IDxXZWJDb3Jl
L0dyYXBoaWNzQ29udGV4dC5oPgorI2ltcG9ydCA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRDRy5o
PgogI2ltcG9ydCA8V2ViQ29yZS9MZWdhY3lXZWJBcmNoaXZlLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L01haW5GcmFtZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgpAQCAtNjcs
MTIgKzY3LDkgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHN0YXRpYyBSZWZQdHI8U2hhcmVhYmxl
Qml0bWFwPiBjb252ZXJ0SW1hZ2VUb0JpdG1hcChOU0ltYWdlICppbWFnZSwgY29uc3QgSW50U2l6
ZSYgc2l6ZSwgRnJhbWUmIGZyYW1lKQogewotICAgIFNoYXJlYWJsZUJpdG1hcDo6RmxhZ3MgZmxh
Z3MgPSBTaGFyZWFibGVCaXRtYXA6OlN1cHBvcnRzQWxwaGE7Ci0jaWYgX19NQUNfT1NfWF9WRVJT
SU9OX01JTl9SRVFVSVJFRCA+PSAxMDEyMDAKLSAgICBpZiAoc2NyZWVuU3VwcG9ydHNFeHRlbmRl
ZENvbG9yKGZyYW1lLm1haW5GcmFtZSgpLnZpZXcoKSkpCi0gICAgICAgIGZsYWdzIHw9IFNoYXJl
YWJsZUJpdG1hcDo6U3VwcG9ydHNFeHRlbmRlZENvbG9yOwotI2VuZGlmCi0gICAgYXV0byBiaXRt
YXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShzaXplLCBmbGFncyk7CisgICAg
U2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uIGJpdG1hcENvbmZpZ3VyYXRpb247CisgICAg
Yml0bWFwQ29uZmlndXJhdGlvbi5jb2xvclNwYWNlLmNnQ29sb3JTcGFjZSA9IHNjcmVlbkNvbG9y
U3BhY2UoZnJhbWUubWFpbkZyYW1lKCkudmlldygpKTsKKyAgICBhdXRvIGJpdG1hcCA9IFNoYXJl
YWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKHNpemUsIGJpdG1hcENvbmZpZ3VyYXRpb24pOwog
ICAgIGlmICghYml0bWFwKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtMTk1LDcgKzE5
Miw5IEBAIHZvaWQgV2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIEVsZW1lCiAKIHN0YXRpYyBSZWZQdHI8U2hhcmVhYmxl
Qml0bWFwPiBjb252ZXJ0Q0dJbWFnZVRvQml0bWFwKENHSW1hZ2VSZWYgaW1hZ2UsIGNvbnN0IElu
dFNpemUmIHNpemUsIEZyYW1lJiBmcmFtZSkKIHsKLSAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJs
ZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKHNpemUsIFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNB
bHBoYSB8IFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNFeHRlbmRlZENvbG9yKTsKKyAgICBTaGFy
ZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb24gYml0bWFwQ29uZmlndXJhdGlvbjsKKyAgICBiaXRt
YXBDb25maWd1cmF0aW9uLmNvbG9yU3BhY2UuY2dDb2xvclNwYWNlID0gc2NyZWVuQ29sb3JTcGFj
ZShmcmFtZS5tYWluRnJhbWUoKS52aWV3KCkpOworICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxl
Qml0bWFwOjpjcmVhdGVTaGFyZWFibGUoc2l6ZSwgYml0bWFwQ29uZmlndXJhdGlvbik7CiAgICAg
aWYgKCFiaXRtYXApCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKaW5kZXggMjJhYmMyMDg4N2M5MGQwNTUy
ZjRlM2M5ZDZmYTM0NzNiYWE2N2U2Ni4uOWRkYjhlYmVlMmRjZDI2MjRiZTlkZjljMWQ0ZmJiMzVk
ODI5NDFlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
RnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1l
LmNwcApAQCAtODI0LDcgKzgyNCw3IEBAIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IFdlYkZyYW1l
OjpjcmVhdGVTZWxlY3Rpb25TbmFwc2hvdCgpIGNvbnN0CiAgICAgaWYgKCFzbmFwc2hvdCkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIHNoYXJlZFNuYXBzaG90ID0gU2hhcmVh
YmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoc25hcHNob3QtPmludGVybmFsU2l6ZSgpLCBTaGFy
ZWFibGVCaXRtYXA6OlN1cHBvcnRzQWxwaGEpOworICAgIGF1dG8gc2hhcmVkU25hcHNob3QgPSBT
aGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShzbmFwc2hvdC0+aW50ZXJuYWxTaXplKCks
IHsgfSk7CiAgICAgaWYgKCFzaGFyZWRTbmFwc2hvdCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXgg
YTBhN2I3MzUyYjI0NzE4NWI4M2Q4N2UyYzBhNjczNTIyYzY0NmY1My4uNWEzNjhlMWE1ZDQ3ZDI0
MzYzMWYwYTRmMzBjZDIwOTE1NWQxMTJhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTE5ODksNiArMTk4OSwxNiBAQCBzdGF0aWMgdm9pZCBw
YWludFNuYXBzaG90QXRTaXplKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEludFNpemUmIGJp
dG1hcFNpemUsCiAgICAgfQogfQogCitzdGF0aWMgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0
aW9uIHNuYXBzaG90T3B0aW9uc1RvQml0bWFwQ29uZmlndXJhdGlvbihTbmFwc2hvdE9wdGlvbnMg
b3B0aW9ucywgV2ViUGFnZSYgcGFnZSkKK3sKKyAgICBTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3Vy
YXRpb24gY29uZmlndXJhdGlvbjsKKyNpZiBVU0UoQ0cpCisgICAgaWYgKG9wdGlvbnMgJiBTbmFw
c2hvdE9wdGlvbnNVc2VTY3JlZW5Db2xvclNwYWNlKQorICAgICAgICBjb25maWd1cmF0aW9uLmNv
bG9yU3BhY2UuY2dDb2xvclNwYWNlID0gc2NyZWVuQ29sb3JTcGFjZShwYWdlLmNvcmVQYWdlKCkt
Pm1haW5GcmFtZSgpLnZpZXcoKSk7CisjZW5kaWYKKyAgICByZXR1cm4gY29uZmlndXJhdGlvbjsK
K30KKwogUmVmUHRyPFdlYkltYWdlPiBXZWJQYWdlOjpzbmFwc2hvdEF0U2l6ZShjb25zdCBJbnRS
ZWN0JiByZWN0LCBjb25zdCBJbnRTaXplJiBiaXRtYXBTaXplLCBTbmFwc2hvdE9wdGlvbnMgb3B0
aW9ucykKIHsKICAgICBGcmFtZSogY29yZUZyYW1lID0gbV9tYWluRnJhbWUtPmNvcmVGcmFtZSgp
OwpAQCAtMTk5OSw3ICsyMDA5LDkgQEAgUmVmUHRyPFdlYkltYWdlPiBXZWJQYWdlOjpzbmFwc2hv
dEF0U2l6ZShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbnRTaXplJiBiaXQKICAgICBpZiAo
IWZyYW1lVmlldykKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIHNuYXBzaG90
ID0gV2ViSW1hZ2U6OmNyZWF0ZShiaXRtYXBTaXplLCBzbmFwc2hvdE9wdGlvbnNUb0ltYWdlT3B0
aW9ucyhvcHRpb25zKSk7CisgICAgYXV0byBzbmFwc2hvdCA9IFdlYkltYWdlOjpjcmVhdGUoYml0
bWFwU2l6ZSwgc25hcHNob3RPcHRpb25zVG9JbWFnZU9wdGlvbnMob3B0aW9ucyksIHNuYXBzaG90
T3B0aW9uc1RvQml0bWFwQ29uZmlndXJhdGlvbihvcHRpb25zLCAqdGhpcykpOworICAgIGlmICgh
c25hcHNob3QpCisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGF1dG8gZ3JhcGhpY3NDb250
ZXh0ID0gc25hcHNob3QtPmJpdG1hcCgpLmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOwogCiAgICAg
cGFpbnRTbmFwc2hvdEF0U2l6ZShyZWN0LCBiaXRtYXBTaXplLCBvcHRpb25zLCAqY29yZUZyYW1l
LCAqZnJhbWVWaWV3LCAqZ3JhcGhpY3NDb250ZXh0KTsKQEAgLTIwNjYsOCArMjA3OCw5IEBAIFJl
ZlB0cjxXZWJJbWFnZT4gV2ViUGFnZTo6c25hcHNob3ROb2RlKFdlYkNvcmU6Ok5vZGUmIG5vZGUs
IFNuYXBzaG90T3B0aW9ucyBvcHRpCiAgICAgICAgIHNuYXBzaG90U2l6ZSA9IEludFNpemUoc25h
cHNob3RTaXplLndpZHRoKCkgKiBzY2FsZUZhY3RvciwgbWF4aW11bUhlaWdodCk7CiAgICAgfQog
Ci0gICAgYXV0byBzbmFwc2hvdCA9IFdlYkltYWdlOjpjcmVhdGUoc25hcHNob3RTaXplLCBzbmFw
c2hvdE9wdGlvbnNUb0ltYWdlT3B0aW9ucyhvcHRpb25zKSk7Ci0KKyAgICBhdXRvIHNuYXBzaG90
ID0gV2ViSW1hZ2U6OmNyZWF0ZShzbmFwc2hvdFNpemUsIHNuYXBzaG90T3B0aW9uc1RvSW1hZ2VP
cHRpb25zKG9wdGlvbnMpLCBzbmFwc2hvdE9wdGlvbnNUb0JpdG1hcENvbmZpZ3VyYXRpb24ob3B0
aW9ucywgKnRoaXMpKTsKKyAgICBpZiAoIXNuYXBzaG90KQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICBhdXRvIGdyYXBoaWNzQ29udGV4dCA9IHNuYXBzaG90LT5iaXRtYXAoKS5jcmVhdGVH
cmFwaGljc0NvbnRleHQoKTsKIAogICAgIGlmICghKG9wdGlvbnMgJiBTbmFwc2hvdE9wdGlvbnNF
eGNsdWRlRGV2aWNlU2NhbGVGYWN0b3IpKSB7CkBAIC00NDM0LDcgKzQ0NDcsNyBAQCB2b2lkIFdl
YlBhZ2U6OmRyYXdSZWN0VG9JbWFnZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBQcmludEluZm8m
IHByaW50SW5mbywgY29ucwogICAgICAgICBBU1NFUlQoY29yZUZyYW1lLT5kb2N1bWVudCgpLT5w
cmludGluZygpKTsKICNlbmRpZgogCi0gICAgICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0
bWFwOjpjcmVhdGVTaGFyZWFibGUoaW1hZ2VTaXplLCBTaGFyZWFibGVCaXRtYXA6OlN1cHBvcnRz
QWxwaGEpOworICAgICAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hh
cmVhYmxlKGltYWdlU2l6ZSwgeyB9KTsKICAgICAgICAgaWYgKCFiaXRtYXApIHsKICAgICAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCBm
NjQxZTA3ZGQzODgzZjJkYzRkMjYzMjI2NWExMGVmOTAxZjQ1Y2NhLi44Yzg5Y2YyYTZiNTA4Mjll
ZWY0Y2ZiYzQyZmNmNTI5NmVlOWYzYzc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtMjUzMyw5ICsyNTMzLDkgQEAgdm9p
ZCBXZWJQYWdlOjpnZXRQb3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0IEludGVyYWN0aW9uSW5mb3Jt
YXRpb25SZXF1ZXN0JiByZXF1ZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEZsb2F0U2l6ZSBzY2FsZWRTaXplID0gbGFyZ2VzdFJlY3RXaXRoQXNwZWN0UmF0aW9JbnNpZGVS
ZWN0KGltYWdlLT5zaXplKCkud2lkdGgoKSAvIGltYWdlLT5zaXplKCkuaGVpZ2h0KCksIEZsb2F0
UmVjdCgwLCAwLCBzY3JlZW5TaXplSW5QaXhlbHMud2lkdGgoKSwgc2NyZWVuU2l6ZUluUGl4ZWxz
LmhlaWdodCgpKSkuc2l6ZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RmxvYXRTaXplIGJpdG1hcFNpemUgPSBzY2FsZWRTaXplLndpZHRoKCkgPCBpbWFnZS0+c2l6ZSgp
LndpZHRoKCkgPyBzY2FsZWRTaXplIDogaW1hZ2UtPnNpemUoKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBPbmx5IHNlbGVjdCBFeHRlbmRlZENvbG9yIG9u
IGltYWdlcyBrbm93biB0byBuZWVkIHdpZGUgZ2FtdXQKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFNoYXJlYWJsZUJpdG1hcDo6RmxhZ3MgZmxhZ3MgPSBTaGFyZWFibGVCaXRt
YXA6OlN1cHBvcnRzQWxwaGE7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBm
bGFncyB8PSBzY3JlZW5TdXBwb3J0c0V4dGVuZGVkQ29sb3IoKSA/IFNoYXJlYWJsZUJpdG1hcDo6
U3VwcG9ydHNFeHRlbmRlZENvbG9yIDogMDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBzaGFyZWRCaXRtYXAgPSBTaGFyZWFi
bGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShJbnRTaXplKGJpdG1hcFNpemUpLCBmbGFncykpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYXJlYWJsZUJpdG1hcDo6Q29u
ZmlndXJhdGlvbiBiaXRtYXBDb25maWd1cmF0aW9uOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYml0bWFwQ29uZmlndXJhdGlvbi5jb2xvclNwYWNlLmNnQ29sb3JTcGFjZSA9
IHNjcmVlbkNvbG9yU3BhY2UobV9wYWdlLT5tYWluRnJhbWUoKS52aWV3KCkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IHNo
YXJlZEJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKEludFNpemUoYml0
bWFwU2l6ZSksIGJpdG1hcENvbmZpZ3VyYXRpb24pKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYXV0byBncmFwaGljc0NvbnRleHQgPSBzaGFyZWRCaXRtYXAtPmNy
ZWF0ZUdyYXBoaWNzQ29udGV4dCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd0ltYWdlKCppbWFnZSwgRmxvYXRSZWN0KDAsIDAs
IGJpdG1hcFNpemUud2lkdGgoKSwgYml0bWFwU2l6ZS5oZWlnaHQoKSkpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm8uaW1hZ2UgPSBzaGFyZWRCaXRtYXA7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318824</attachid>
            <date>2017-08-22 16:41:20 -0700</date>
            <delta_ts>2017-08-22 17:45:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175858-20170822164119.patch</filename>
            <type>text/plain</type>
            <size>42295</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxMDUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjY1ZWU5YzZmMzM4YTg0
NTdjY2VhOGVmMzkyMmE5ODYxZTZkMzdiMS4uYWE2MDdlMWY2Y2FmZDEzMzIxZTJiNjRiOGJiNzY2
N2UzNzI1MmM4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE3LTA4LTIyICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIF9XS1RodW1ibmFp
bFZpZXcgc2hvdWxkIHVzZSB0aGUgc2NyZWVuIGNvbG9yIHNwYWNlIGluc3RlYWQgb2Ygc1JHQgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1ODU4Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMzkyNTU1OT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtU2NyZWVuLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vaW9zL1BsYXRmb3JtU2NyZWVuSU9TLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6c2NyZWVuQ29sb3JTcGFjZSk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1BsYXRmb3Jt
U2NyZWVuTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6c2NyZWVuQ29sb3JTcGFjZSk6CisgICAg
ICAgIChXZWJDb3JlOjpzY3JlZW5TdXBwb3J0c0V4dGVuZGVkQ29sb3IpOgorICAgICAgICAqIHBs
YXRmb3JtL3dpbi9QbGF0Zm9ybVNjcmVlbldpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzY3Jl
ZW5Db2xvclNwYWNlKToKKyAgICAgICAgQWRkIHNjcmVlbkNvbG9yU3BhY2UsIHdoaWNoIHJldHVy
bnMgdGhlIGFjdGl2ZSBjb2xvciBzcGFjZSBmb3IgdGhlCisgICAgICAgIGdpdmVuIFdpZGdldCdz
IHNjcmVlbi4gT24gV2luZG93cywganVzdCBmYWxsIGJhY2sgdG8gc1JHQiBsaWtlIHdlIHVzdWFs
bHkgZG8uCisKIDIwMTctMDgtMjIgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+
CiAKICAgICAgICAgQ29ycmVjdCBTT1VQIGFuZCBjVVJMIGJ1aWxkcyBhZnRlciByMjIxMDE3Lgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwppbmRleCA2YjdiNWI5MThhOTdmNDhhYzJlZDkxYmQ1ZGNhMWVlNjU4YjYwNDkxLi4zOTMz
MDkxNDA1YTRhZmFiZTFkODk4ZmE0YTFmMTYyNzEwYTVlMjUyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDczIEBACisyMDE3LTA4LTIyICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29t
PgorCisgICAgICAgIF9XS1RodW1ibmFpbFZpZXcgc2hvdWxkIHVzZSB0aGUgc2NyZWVuIGNvbG9y
IHNwYWNlIGluc3RlYWQgb2Ygc1JHQgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTc1ODU4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMzkyNTU1OT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaGFuZ2VM
b2cgcGVuZGluZy4KKworICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS1NoYXJlZEFQSUNhc3QuaDoK
KyAgICAgICAgKFdlYktpdDo6c25hcHNob3RPcHRpb25zRnJvbUltYWdlT3B0aW9ucyk6CisgICAg
ICAgIChXZWJLaXQ6OnRvU25hcHNob3RPcHRpb25zKToKKyAgICAgICAgKiBTaGFyZWQvQ29udGV4
dE1lbnVDb250ZXh0RGF0YS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNvbnRleHRNZW51Q29udGV4
dERhdGE6OkNvbnRleHRNZW51Q29udGV4dERhdGEpOgorICAgICAgICAqIFNoYXJlZC9JbWFnZU9w
dGlvbnMuaDoKKyAgICAgICAgKFdlYktpdDo6c25hcHNob3RPcHRpb25zVG9JbWFnZU9wdGlvbnMp
OgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVCaXRtYXAuY3BwOgorICAgICAgICAoV2ViS2l0
OjpTaGFyZWFibGVCaXRtYXA6OkhhbmRsZTo6SGFuZGxlKToKKyAgICAgICAgKFdlYktpdDo6U2hh
cmVhYmxlQml0bWFwOjpIYW5kbGU6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlNo
YXJlYWJsZUJpdG1hcDo6SGFuZGxlOjpkZWNvZGUpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFi
bGVCaXRtYXA6OkhhbmRsZTo6Y2xlYXIpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRt
YXA6OkNvbmZpZ3VyYXRpb246OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJl
YWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbjo6ZGVjb2RlKToKKyAgICAgICAgKFdlYktpdDo6U2hh
cmVhYmxlQml0bWFwOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6
OmNyZWF0ZVNoYXJlYWJsZSk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Y3Jl
YXRlSGFuZGxlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpTaGFy
ZWFibGVCaXRtYXApOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OmNhbGN1bGF0
ZUJ5dGVzUGVyUGl4ZWwpOgorICAgICAgICAoV2ViS2l0OjpjYWxjdWxhdGVCeXRlc1BlclBpeGVs
KTogRGVsZXRlZC4KKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlQml0bWFwLmg6CisgICAgICAg
IChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6bnVtQnl0ZXNGb3JTaXplKToKKyAgICAgICAgKFdl
YktpdDo6U2hhcmVhYmxlQml0bWFwOjpzaXplSW5CeXRlcyBjb25zdCk6CisgICAgICAgICogU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OmVuY29kZUltYWdl
KToKKyAgICAgICAgKiBTaGFyZWQvV2ViSW1hZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJ
bWFnZTo6Y3JlYXRlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViSW1hZ2UuaDoKKyAgICAgICAgKiBT
aGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwOgorICAgICAgICAoV2ViS2l0Ojpjb2xvclNw
YWNlKToKKyAgICAgICAgKFdlYktpdDo6Yml0bWFwSW5mbyk6CisgICAgICAgIChXZWJLaXQ6OlNo
YXJlYWJsZUJpdG1hcDo6Y2FsY3VsYXRlQnl0ZXNQZXJQaXhlbCk6CisgICAgICAgIChXZWJLaXQ6
OlNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0KToKKyAgICAgICAgKFdlYktp
dDo6U2hhcmVhYmxlQml0bWFwOjpjcmVhdGVDR0ltYWdlIGNvbnN0KToKKyAgICAgICAgKiBTaGFy
ZWQvbWFjL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVMYXllckJhY2tpbmdTdG9yZTo6c3dhcFRvVmFsaWRGcm9udEJ1ZmZlcik6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tUaHVtYm5haWxWaWV3Lm1tOgorICAgICAgICAoLVtfV0tU
aHVtYm5haWxWaWV3IHJlcXVlc3RTbmFwc2hvdF0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwOgorICAgICAgICAo
V2ViS2l0OjpJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlOjpyZW5kZXJlZEltYWdlKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwOgorICAg
ICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6c25hcHNob3QpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVn
aW46OnNuYXBzaG90KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm94eTo6Z2VvbWV0cnlEaWRDaGFuZ2UpOgor
ICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm94eTo6dXBkYXRlQmFja2luZ1N0b3JlKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tOgor
ICAgICAgICAoV2ViS2l0Ojpjb252ZXJ0SW1hZ2VUb0JpdG1hcCk6CisgICAgICAgIChXZWJLaXQ6
OmNvbnZlcnRDR0ltYWdlVG9CaXRtYXApOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjpjcmVhdGVTZWxlY3Rpb25T
bmFwc2hvdCBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpzbmFwc2hvdE9wdGlvbnNUb0JpdG1hcENvbmZpZ3VyYXRpb24p
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzbmFwc2hvdEF0U2l6ZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OnNuYXBzaG90Tm9kZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OmRyYXdSZWN0VG9JbWFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQ
YWdlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRQb3NpdGlvbkluZm9ybWF0
aW9uKToKKwogMjAxNy0wOC0yMiAgTWF0dCBMZXdpcyAgPGpsZXdpczNAYXBwbGUuY29tPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMjEwMjYuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaCBiL1NvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oCmluZGV4IGYzY2JlYzQxYzg5NjE1
Zjg0ZGUzNjU3MDBmY2Y3NDNhMGY3N2Y2ZmUuLjFlM2VjNDM0MTJmMmExYTQzN2NiOGQwNzhlYTFi
ZWM4ZmU4OTA0YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NnL0Nv
cmVHcmFwaGljc1NQSS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NnL0NvcmVH
cmFwaGljc1NQSS5oCkBAIC0xODcsNiArMTg3LDggQEAgQ0dEYXRhUHJvdmlkZXJSZWYgQ0dQREZE
b2N1bWVudEdldERhdGFQcm92aWRlcihDR1BERkRvY3VtZW50UmVmKTsKIENHRm9udEFudGlhbGlh
c2luZ1N0eWxlIENHQ29udGV4dEdldEZvbnRBbnRpYWxpYXNpbmdTdHlsZShDR0NvbnRleHRSZWYp
Owogdm9pZCBDR0NvbnRleHRTZXRGb250QW50aWFsaWFzaW5nU3R5bGUoQ0dDb250ZXh0UmVmLCBD
R0ZvbnRBbnRpYWxpYXNpbmdTdHlsZSk7CiAKK2Jvb2wgQ0dDb2xvclNwYWNlVXNlc0V4dGVuZGVk
UmFuZ2UoQ0dDb2xvclNwYWNlUmVmKTsKKwogI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09T
X1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMjAwKSB8fCBQTEFURk9STShJT1MpCiB0eXBl
ZGVmIHN0cnVjdCBDR1BERkFubm90YXRpb24gKkNHUERGQW5ub3RhdGlvblJlZjsKIHR5cGVkZWYg
Ym9vbCAoXkNHUERGQW5ub3RhdGlvbkRyYXdDYWxsYmFja1R5cGUpKENHQ29udGV4dFJlZiBjb250
ZXh0LCBDR1BERlBhZ2VSZWYgcGFnZSwgQ0dQREZBbm5vdGF0aW9uUmVmIGFubm90YXRpb24pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TY3JlZW4uaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU2NyZWVuLmgKaW5kZXggZTI4ZmYxOTk1MGRk
YTU0ZTA5MDZkOTgwYWJjNDUyYWIzNzIyNjFkYi4uYWVjNzRiYjE1ODliZTkyMDBhMWY1ODE0ZTIw
Nzc2ZTU2NTRiYmFiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZv
cm1TY3JlZW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNjcmVlbi5o
CkBAIC00MSw2ICs0MSwxMCBAQCB0eXBlZGVmIHN0cnVjdCBfTlNQb2ludCBOU1BvaW50OwogT0JK
Q19DTEFTUyBVSVNjcmVlbjsKICNlbmRpZgogCisjaWYgVVNFKENHKQordHlwZWRlZiBzdHJ1Y3Qg
Q0dDb2xvclNwYWNlICpDR0NvbG9yU3BhY2VSZWY7CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBGbG9hdFJlY3Q7CkBAIC02MCw2ICs2NCwxMCBAQCBGbG9hdFJlY3Qgc2Ny
ZWVuQXZhaWxhYmxlUmVjdChXaWRnZXQqKTsKIAogV0VCQ09SRV9FWFBPUlQgYm9vbCBzY3JlZW5T
dXBwb3J0c0V4dGVuZGVkQ29sb3IoV2lkZ2V0KiA9IG51bGxwdHIpOwogCisjaWYgVVNFKENHKQor
V0VCQ09SRV9FWFBPUlQgQ0dDb2xvclNwYWNlUmVmIHNjcmVlbkNvbG9yU3BhY2UoV2lkZ2V0KiA9
IG51bGxwdHIpOworI2VuZGlmCisKICNpZiBQTEFURk9STShNQUMpCiAKIE5TU2NyZWVuICpzY3Jl
ZW4oTlNXaW5kb3cgKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
UGxhdGZvcm1TY3JlZW5JT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZv
cm1TY3JlZW5JT1MubW0KaW5kZXggODA4ZWQ5N2QyNzRlZThjYTljNGUwZjBlZmQwZGMzMGZmYmRj
NjJkMi4uMjEyYTZlOGZjOTBkMzk5ZWUyZTI1ODc5M2Q2OGJjNjVhNTBjYTYwMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtU2NyZWVuSU9TLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVNjcmVlbklPUy5tbQpAQCAtMzAs
NiArMzAsNyBAQAogI2ltcG9ydCAiRmxvYXRSZWN0LmgiCiAjaW1wb3J0ICJGbG9hdFNpemUuaCIK
ICNpbXBvcnQgIkZyYW1lVmlldy5oIgorI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0Q0cuaCIKICNp
bXBvcnQgIkhvc3RXaW5kb3cuaCIKICNpbXBvcnQgIkludFJlY3QuaCIKICNpbXBvcnQgIldBS1dp
bmRvdy5oIgpAQCAtNzQsNiArNzUsMTEgQEAgYm9vbCBzY3JlZW5TdXBwb3J0c0V4dGVuZGVkQ29s
b3IoV2lkZ2V0KikKICAgICByZXR1cm4gTUdHZXRCb29sQW5zd2VyKGtNR1FIYXNFeHRlbmRlZENv
bG9yRGlzcGxheSk7CiB9CiAKK0NHQ29sb3JTcGFjZVJlZiBzY3JlZW5Db2xvclNwYWNlKFdpZGdl
dCogd2lkZ2V0KQoreworICAgIHJldHVybiBzY3JlZW5TdXBwb3J0c0V4dGVuZGVkQ29sb3Iod2lk
Z2V0KSA/IGV4dGVuZGVkU1JHQkNvbG9yU3BhY2VSZWYoKSA6IHNSR0JDb2xvclNwYWNlUmVmKCk7
Cit9CisKIC8vIFRoZXNlIGZ1bmN0aW9ucyBzY2FsZSBiZXR3ZWVuIHNjcmVlbiBhbmQgcGFnZSBj
b29yZGluYXRlcyBiZWNhdXNlIEphdmFTY3JpcHQvRE9NIG9wZXJhdGlvbnMKIC8vIGFzc3VtZSB0
aGF0IHRoZSBzY3JlZW4gYW5kIHRoZSBwYWdlIHNoYXJlIHRoZSBzYW1lIGNvb3JkaW5hdGUgc3lz
dGVtLgogRmxvYXRSZWN0IHNjcmVlblJlY3QoV2lkZ2V0KiB3aWRnZXQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1TY3JlZW5NYWMubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1TY3JlZW5NYWMubW0KaW5kZXggMGY5MTcyYWU1
OTQ1OTM5ZjE4NDRmY2QxOTFjYTU2ZGZmZDg4Mjg1OS4uZjBmNjcxYjU4ZWRiOGM2ODYyNjA1MzEw
YzIyOWE3OTRlMzI5NjNkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1BsYXRmb3JtU2NyZWVuTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Q
bGF0Zm9ybVNjcmVlbk1hYy5tbQpAQCAtMTM0LDYgKzEzNCwxMSBAQCBOU1NjcmVlbiAqc2NyZWVu
KFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCkKICAgICByZXR1cm4gZmlyc3RTY3JlZW4oKTsK
IH0KIAorQ0dDb2xvclNwYWNlUmVmIHNjcmVlbkNvbG9yU3BhY2UoV2lkZ2V0KiB3aWRnZXQpCit7
CisgICAgcmV0dXJuIHNjcmVlbih3aWRnZXQpLmNvbG9yU3BhY2UuQ0dDb2xvclNwYWNlOworfQor
CiBib29sIHNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xvcihXaWRnZXQqIHdpZGdldCkKIHsKICAg
ICBpZiAoIXdpZGdldCkKQEAgLTE0Miw3ICsxNDcsNyBAQCBib29sIHNjcmVlblN1cHBvcnRzRXh0
ZW5kZWRDb2xvcihXaWRnZXQqIHdpZGdldCkKICNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDEwMTIwMAogICAgIHJldHVybiBbc2NyZWVuKHdpZGdldCkgY2FuUmVwcmVzZW50
RGlzcGxheUdhbXV0Ok5TRGlzcGxheUdhbXV0UDNdOwogI2Vsc2UKLSAgICBhdXRvIGNvbG9yU3Bh
Y2UgPSBzY3JlZW4od2lkZ2V0KS5jb2xvclNwYWNlLkNHQ29sb3JTcGFjZTsKKyAgICBhdXRvIGNv
bG9yU3BhY2UgPSBzY3JlZW5Db2xvclNwYWNlKHdpZGdldCk7CiAgICAgYXV0byBpY2NEYXRhID0g
YWRvcHRDRihDR0NvbG9yU3BhY2VDb3B5SUNDUHJvZmlsZShjb2xvclNwYWNlKSk7CiAgICAgYXV0
byBwcm9maWxlID0gYWRvcHRDRihDb2xvclN5bmNQcm9maWxlQ3JlYXRlKGljY0RhdGEuZ2V0KCks
IG51bGxwdHIpKTsKICAgICByZXR1cm4gcHJvZmlsZSAmJiBDb2xvclN5bmNQcm9maWxlSXNXaWRl
R2FtdXQocHJvZmlsZS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vUGxhdGZvcm1TY3JlZW5XaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L1BsYXRmb3JtU2NyZWVuV2luLmNwcAppbmRleCA2OWEyZWM1OGZlNDJjOTIxMTM2NzZlOWZlZTQ0
OGNmMzZlMWUyZTlhLi4xNWViMmRmY2E2MjExNWQzMmMyYmFiYWVjN2JiZGJiMWFkMzQ5MjJmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGxhdGZvcm1TY3JlZW5XaW4u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QbGF0Zm9ybVNjcmVlbldpbi5j
cHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJG
cmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4
dENHLmgiCiAjaW5jbHVkZSAiSG9zdFdpbmRvdy5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNp
bmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgpAQCAtMTAwLDYgKzEwMSwxMSBAQCBGbG9hdFJlY3Qg
c2NyZWVuQXZhaWxhYmxlUmVjdChXaWRnZXQqIHdpZGdldCkKICAgICByZXR1cm4gbW9uaXRvcklu
Zm8ucmNXb3JrOwogfQogCitDR0NvbG9yU3BhY2VSZWYgc2NyZWVuQ29sb3JTcGFjZShXaWRnZXQq
KQoreworICAgIHJldHVybiBzUkdCQ29sb3JTcGFjZVJlZigpOworfQorCiBib29sIHNjcmVlblN1
cHBvcnRzRXh0ZW5kZWRDb2xvcihXaWRnZXQqKQogewogICAgIHJldHVybiBmYWxzZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLU2hhcmVkQVBJQ2FzdC5oIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tTaGFyZWRBUElDYXN0LmgKaW5kZXggYjQ4MDlmM2Ex
NWZmOGNkZTY0MmQxZGQ0ZTY1OTE3MmQwNTBmZTQ2MC4uNWI4MmQ0ZDQ0YzUzMzA5YTcyNTdlYjRh
MTkxZGFjMmY2ZDljMzk4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2Mv
V0tTaGFyZWRBUElDYXN0LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tTaGFy
ZWRBUElDYXN0LmgKQEAgLTkzMCw5ICs5MzAsNiBAQCBpbmxpbmUgU25hcHNob3RPcHRpb25zIHNu
YXBzaG90T3B0aW9uc0Zyb21JbWFnZU9wdGlvbnMoV0tJbWFnZU9wdGlvbnMgd2tJbWFnZU9wdAog
CiAgICAgaWYgKHdrSW1hZ2VPcHRpb25zICYga1dLSW1hZ2VPcHRpb25zU2hhcmVhYmxlKQogICAg
ICAgICBzbmFwc2hvdE9wdGlvbnMgfD0gU25hcHNob3RPcHRpb25zU2hhcmVhYmxlOwotCi0gICAg
aWYgKHdrSW1hZ2VPcHRpb25zICYga1dLU25hcHNob3RPcHRpb25zRXh0ZW5kZWRDb2xvcikKLSAg
ICAgICAgc25hcHNob3RPcHRpb25zIHw9IFNuYXBzaG90T3B0aW9uc0V4dGVuZGVkQ29sb3I7CiAg
ICAgCiAgICAgcmV0dXJuIHNuYXBzaG90T3B0aW9uczsKIH0KQEAgLTk1NSw2ICs5NTIsOCBAQCBp
bmxpbmUgU25hcHNob3RPcHRpb25zIHRvU25hcHNob3RPcHRpb25zKFdLU25hcHNob3RPcHRpb25z
IHdrU25hcHNob3RPcHRpb25zKQogICAgICAgICBzbmFwc2hvdE9wdGlvbnMgfD0gU25hcHNob3RP
cHRpb25zRm9yY2VXaGl0ZVRleHQ7CiAgICAgaWYgKHdrU25hcHNob3RPcHRpb25zICYga1dLU25h
cHNob3RPcHRpb25zUHJpbnRpbmcpCiAgICAgICAgIHNuYXBzaG90T3B0aW9ucyB8PSBTbmFwc2hv
dE9wdGlvbnNQcmludGluZzsKKyAgICBpZiAod2tTbmFwc2hvdE9wdGlvbnMgJiBrV0tTbmFwc2hv
dE9wdGlvbnNFeHRlbmRlZENvbG9yKQorICAgICAgICBzbmFwc2hvdE9wdGlvbnMgfD0gU25hcHNo
b3RPcHRpb25zVXNlU2NyZWVuQ29sb3JTcGFjZTsKIAogICAgIHJldHVybiBzbmFwc2hvdE9wdGlv
bnM7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db250ZXh0TWVudUNvbnRl
eHREYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvbnRleHRNZW51Q29udGV4dERhdGEu
Y3BwCmluZGV4IDM5YmRiMzJlMWQxYTFkMTk1MDdlZjg1ZmIyOGYyNjExYjliOTYzOWIuLmZlMmQx
ODQ2NmRhNjEzYmJiNGEyNDM1ZDlhNTQ1YzAxN2FjOTBiYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0NvbnRleHRNZW51Q29udGV4dERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0NvbnRleHRNZW51Q29udGV4dERhdGEuY3BwCkBAIC02NSw3ICs2NSw3IEBAIENv
bnRleHRNZW51Q29udGV4dERhdGE6OkNvbnRleHRNZW51Q29udGV4dERhdGEoY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQmIG1lbnVMb2NhCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIEZJWE1FOiBm
aWd1cmUgb3V0IHRoZSByb3VuZGluZyBzdGFydGVneSBmb3IgU2hhcmVhYmxlQml0bWFwLgotICAg
IG1fY29udHJvbGxlZEltYWdlID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoSW50
U2l6ZShpbWFnZS0+c2l6ZSgpKSwgU2hhcmVhYmxlQml0bWFwOjpTdXBwb3J0c0FscGhhKTsKKyAg
ICBtX2NvbnRyb2xsZWRJbWFnZSA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKElu
dFNpemUoaW1hZ2UtPnNpemUoKSksIHsgfSk7CiAgICAgbV9jb250cm9sbGVkSW1hZ2UtPmNyZWF0
ZUdyYXBoaWNzQ29udGV4dCgpLT5kcmF3SW1hZ2UoKmltYWdlLCBJbnRQb2ludCgpKTsKICNlbmRp
ZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvSW1hZ2VPcHRpb25zLmggYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9JbWFnZU9wdGlvbnMuaAppbmRleCBjMzBhZjAyOWMyMjJjMWJi
YjMxYzQ4MmM0YWYzYTUzZjViYzI4MDM3Li45MTgyMTk2ZWNkYmYyMGEzYTJjOWJhNmYyZTJlN2Nm
NDZlMDQ4NzU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9JbWFnZU9wdGlvbnMu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9JbWFnZU9wdGlvbnMuaApAQCAtMzAsNyArMzAs
NiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogZW51bSBJbWFnZU9wdGlvbnMgewogICAgIEltYWdl
T3B0aW9uc1NoYXJlYWJsZSA9IDEgPDwgMCwKLSAgICBJbWFnZU9wdGlvbnNFeHRlbmRlZENvbG9y
ID0gMSA8PCAxLAogfTsKIAogZW51bSB7CkBAIC00MiwyMSArNDEsMTYgQEAgZW51bSB7CiAgICAg
U25hcHNob3RPcHRpb25zRm9yY2VCbGFja1RleHQgPSAxIDw8IDYsCiAgICAgU25hcHNob3RPcHRp
b25zRm9yY2VXaGl0ZVRleHQgPSAxIDw8IDcsCiAgICAgU25hcHNob3RPcHRpb25zUHJpbnRpbmcg
PSAxIDw8IDgsCi0gICAgU25hcHNob3RPcHRpb25zRXh0ZW5kZWRDb2xvciA9IDEgPDwgOSwKKyAg
ICBTbmFwc2hvdE9wdGlvbnNVc2VTY3JlZW5Db2xvclNwYWNlID0gMSA8PCA5LAogfTsKIHR5cGVk
ZWYgdWludDMyX3QgU25hcHNob3RPcHRpb25zOwogCi0KIGlubGluZSBJbWFnZU9wdGlvbnMgc25h
cHNob3RPcHRpb25zVG9JbWFnZU9wdGlvbnMoU25hcHNob3RPcHRpb25zIHNuYXBzaG90T3B0aW9u
cykKIHsKICAgICB1bnNpZ25lZCBpbWFnZU9wdGlvbnMgPSAwOwogCiAgICAgaWYgKHNuYXBzaG90
T3B0aW9ucyAmIFNuYXBzaG90T3B0aW9uc1NoYXJlYWJsZSkKICAgICAgICAgaW1hZ2VPcHRpb25z
IHw9IEltYWdlT3B0aW9uc1NoYXJlYWJsZTsKLSAgICAKLSAgICBpZiAoc25hcHNob3RPcHRpb25z
ICYgU25hcHNob3RPcHRpb25zRXh0ZW5kZWRDb2xvcikKLSAgICAgICAgaW1hZ2VPcHRpb25zIHw9
IEltYWdlT3B0aW9uc0V4dGVuZGVkQ29sb3I7Ci0gICAgCiAKICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8SW1hZ2VPcHRpb25zPihpbWFnZU9wdGlvbnMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1No
YXJlYWJsZUJpdG1hcC5jcHAKaW5kZXggOTk0MmU3YzI2NzVkNzQwZDBkMWM1MWQxZWM2M2JjMjBl
NjA3YTM4Ni4uODNhMGU2N2YyY2ZlMTQwNzUwNGNiN2FmODMzNjlmODlkMzE4NzM4MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuY3BwCkBAIC0zMywxNiArMzMsOCBAQAog
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewotICAgIAotc3Rh
dGljIHVuc2lnbmVkIGNhbGN1bGF0ZUJ5dGVzUGVyUGl4ZWwoU2hhcmVhYmxlQml0bWFwOjpGbGFn
cyBmbGFncykKLXsKLSAgICBpZiAoZmxhZ3MgJiBTaGFyZWFibGVCaXRtYXA6OlN1cHBvcnRzRXh0
ZW5kZWRDb2xvcikKLSAgICAgICAgcmV0dXJuIDg7IC8vIGZvciBleHRlbmRlZCBjb2xvciwgd2Ug
YXJlIHVzaW5nIGhhbGYtZmxvYXQgcmVwcmVzZW50YXRpb25zCi0gICAgcmV0dXJuIDQ7Ci19CiAK
IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlOjpIYW5kbGUoKQotICAgIDogbV9mbGFncygwKQogewog
fQogCkBAIC01MCw3ICs0Miw3IEBAIHZvaWQgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGU6OmVuY29k
ZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAgICAgZW5jb2RlciA8PCBtX2hhbmRs
ZTsKICAgICBlbmNvZGVyIDw8IG1fc2l6ZTsKLSAgICBlbmNvZGVyIDw8IG1fZmxhZ3M7CisgICAg
ZW5jb2RlciA8PCBtX2NvbmZpZ3VyYXRpb247CiB9CiAKIGJvb2wgU2hhcmVhYmxlQml0bWFwOjpI
YW5kbGU6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIEhhbmRsZSYgaGFuZGxlKQpAQCAt
NTksOSArNTEsOCBAQCBib29sIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlOjpkZWNvZGUoSVBDOjpE
ZWNvZGVyJiBkZWNvZGVyLCBIYW5kbGUmIGhhbmRsZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFuZGxlLm1fc2l6ZSkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhbmRsZS5tX2ZsYWdzKSkKKyAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGhhbmRsZS5tX2NvbmZpZ3VyYXRpb24pKQogICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgaGFuZGxlLm1fYnl0ZXNQZXJQaXhlbCA9IGNhbGN1bGF0ZUJ5dGVzUGVyUGl4
ZWwoaGFuZGxlLm1fZmxhZ3MpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC02OSwxNCArNjAs
MzEgQEAgdm9pZCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZTo6Y2xlYXIoKQogewogICAgIG1faGFu
ZGxlLmNsZWFyKCk7CiAgICAgbV9zaXplID0gSW50U2l6ZSgpOwotICAgIG1fZmxhZ3MgPSBGbGFn
OjpOb0ZsYWdzOwotICAgIG1fYnl0ZXNQZXJQaXhlbCA9IGNhbGN1bGF0ZUJ5dGVzUGVyUGl4ZWwo
bV9mbGFncyk7CisgICAgbV9jb25maWd1cmF0aW9uID0geyB9OwogfQogCi1SZWZQdHI8U2hhcmVh
YmxlQml0bWFwPiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShjb25zdCBJbnRTaXplJiBzaXplLCBG
bGFncyBmbGFncykKK3ZvaWQgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uOjplbmNvZGUo
SVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewotICAgIHVuc2lnbmVkIGJ5dGVzUGVyUGl4
ZWwgPSBjYWxjdWxhdGVCeXRlc1BlclBpeGVsKGZsYWdzKTsKLSAgICBhdXRvIG51bUJ5dGVzID0g
bnVtQnl0ZXNGb3JTaXplKHNpemUsIGJ5dGVzUGVyUGl4ZWwpOworICAgIGVuY29kZXIgPDwgaXNP
cGFxdWU7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgZW5jb2RlciA8PCBjb2xvclNwYWNlOwor
I2VuZGlmCit9CisKK2Jvb2wgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uOjpkZWNvZGUo
SVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKQorewor
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY29uZmlndXJhdGlvbi5pc09wYXF1ZSkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGNvbmZpZ3VyYXRpb24uY29sb3JTcGFjZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyNl
bmRpZgorICAgIHJldHVybiB0cnVlOworfQorCitSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBTaGFy
ZWFibGVCaXRtYXA6OmNyZWF0ZShjb25zdCBJbnRTaXplJiBzaXplLCBDb25maWd1cmF0aW9uIGNv
bmZpZ3VyYXRpb24pCit7CisgICAgYXV0byBudW1CeXRlcyA9IG51bUJ5dGVzRm9yU2l6ZShzaXpl
LCBjYWxjdWxhdGVCeXRlc1BlclBpeGVsKGNvbmZpZ3VyYXRpb24pKTsKICAgICBpZiAobnVtQnl0
ZXMuaGFzT3ZlcmZsb3dlZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtODQsMTMg
KzkyLDEyIEBAIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRl
KGNvbnN0IEludFNpemUmIHNpemUsIEZsYWdzIGZsYWdzCiAgICAgaWYgKCF0cnlGYXN0TWFsbG9j
KG51bUJ5dGVzLnVuc2FmZUdldCgpKS5nZXRWYWx1ZShkYXRhKSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYXJlYWJsZUJpdG1hcChzaXplLCBm
bGFncywgZGF0YSkpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2hhcmVhYmxlQml0bWFwKHNp
emUsIGNvbmZpZ3VyYXRpb24sIGRhdGEpKTsKIH0KIAotUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4g
U2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgRmxh
Z3MgZmxhZ3MpCitSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0
ZVNoYXJlYWJsZShjb25zdCBJbnRTaXplJiBzaXplLCBDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRp
b24pCiB7Ci0gICAgdW5zaWduZWQgYnl0ZXNQZXJQaXhlbCA9IGNhbGN1bGF0ZUJ5dGVzUGVyUGl4
ZWwoZmxhZ3MpOwotICAgIGF1dG8gbnVtQnl0ZXMgPSBudW1CeXRlc0ZvclNpemUoc2l6ZSwgYnl0
ZXNQZXJQaXhlbCk7CisgICAgYXV0byBudW1CeXRlcyA9IG51bUJ5dGVzRm9yU2l6ZShzaXplLCBj
YWxjdWxhdGVCeXRlc1BlclBpeGVsKGNvbmZpZ3VyYXRpb24pKTsKICAgICBpZiAobnVtQnl0ZXMu
aGFzT3ZlcmZsb3dlZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtOTgsMTUgKzEw
NSwxNCBAQCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNo
YXJlYWJsZShjb25zdCBJbnRTaXplJiBzaXplLCBGbAogICAgIGlmICghc2hhcmVkTWVtb3J5KQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2hhcmVh
YmxlQml0bWFwKHNpemUsIGZsYWdzLCBzaGFyZWRNZW1vcnkpKTsKKyAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFNoYXJlYWJsZUJpdG1hcChzaXplLCBjb25maWd1cmF0aW9uLCBzaGFyZWRNZW1vcnkp
KTsKIH0KIAotUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUo
Y29uc3QgSW50U2l6ZSYgc2l6ZSwgRmxhZ3MgZmxhZ3MsIFJlZlB0cjxTaGFyZWRNZW1vcnk+IHNo
YXJlZE1lbW9yeSkKK1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+IFNoYXJlYWJsZUJpdG1hcDo6Y3Jl
YXRlKGNvbnN0IEludFNpemUmIHNpemUsIENvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbiwgUmVm
UHRyPFNoYXJlZE1lbW9yeT4gc2hhcmVkTWVtb3J5KQogewogICAgIEFTU0VSVChzaGFyZWRNZW1v
cnkpOwogCi0gICAgdW5zaWduZWQgYnl0ZXNQZXJQaXhlbCA9IGNhbGN1bGF0ZUJ5dGVzUGVyUGl4
ZWwoZmxhZ3MpOwotICAgIGF1dG8gbnVtQnl0ZXMgPSBudW1CeXRlc0ZvclNpemUoc2l6ZSwgYnl0
ZXNQZXJQaXhlbCk7CisgICAgYXV0byBudW1CeXRlcyA9IG51bUJ5dGVzRm9yU2l6ZShzaXplLCBj
YWxjdWxhdGVCeXRlc1BlclBpeGVsKGNvbmZpZ3VyYXRpb24pKTsKICAgICBpZiAobnVtQnl0ZXMu
aGFzT3ZlcmZsb3dlZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBpZiAoc2hhcmVk
TWVtb3J5LT5zaXplKCkgPCBudW1CeXRlcy51bnNhZmVHZXQoKSkgewpAQCAtMTE0LDcgKzEyMCw3
IEBAIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGNvbnN0
IEludFNpemUmIHNpemUsIEZsYWdzIGZsYWdzCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IH0KICAgICAKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYXJlYWJsZUJpdG1hcChzaXplLCBm
bGFncywgc2hhcmVkTWVtb3J5KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFyZWFibGVC
aXRtYXAoc2l6ZSwgY29uZmlndXJhdGlvbiwgc2hhcmVkTWVtb3J5KSk7CiB9CiAKIFJlZlB0cjxT
aGFyZWFibGVCaXRtYXA+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGNvbnN0IEhhbmRsZSYgaGFu
ZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb24gcHJvdGVjdGlvbikKQEAgLTEyNCw3ICsxMzAs
NyBAQCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShjb25z
dCBIYW5kbGUmIGhhbmRsZSwgU2hhcmVkTWVtbwogICAgIGlmICghc2hhcmVkTWVtb3J5KQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBjcmVhdGUoaGFuZGxlLm1fc2l6ZSwg
aGFuZGxlLm1fZmxhZ3MsIFdURk1vdmUoc2hhcmVkTWVtb3J5KSk7CisgICAgcmV0dXJuIGNyZWF0
ZShoYW5kbGUubV9zaXplLCBoYW5kbGUubV9jb25maWd1cmF0aW9uLCBXVEZNb3ZlKHNoYXJlZE1l
bW9yeSkpOwogfQogCiBib29sIFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlSGFuZGxlKEhhbmRsZSYg
aGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb24gcHJvdGVjdGlvbikgY29uc3QKQEAgLTEz
NCwyNiArMTQwLDIzIEBAIGJvb2wgU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVIYW5kbGUoSGFuZGxl
JiBoYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbiBwcm90CiAgICAgaWYgKCFtX3NoYXJl
ZE1lbW9yeS0+Y3JlYXRlSGFuZGxlKGhhbmRsZS5tX2hhbmRsZSwgcHJvdGVjdGlvbikpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICBoYW5kbGUubV9zaXplID0gbV9zaXplOwotICAgIGhhbmRs
ZS5tX2ZsYWdzID0gbV9mbGFnczsKLSAgICBoYW5kbGUubV9ieXRlc1BlclBpeGVsID0gbV9ieXRl
c1BlclBpeGVsOworICAgIGhhbmRsZS5tX2NvbmZpZ3VyYXRpb24gPSBtX2NvbmZpZ3VyYXRpb247
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVNoYXJlYWJsZUJpdG1hcDo6U2hhcmVhYmxlQml0bWFw
KGNvbnN0IEludFNpemUmIHNpemUsIEZsYWdzIGZsYWdzLCB2b2lkKiBkYXRhKQorU2hhcmVhYmxl
Qml0bWFwOjpTaGFyZWFibGVCaXRtYXAoY29uc3QgSW50U2l6ZSYgc2l6ZSwgQ29uZmlndXJhdGlv
biBjb25maWd1cmF0aW9uLCB2b2lkKiBkYXRhKQogICAgIDogbV9zaXplKHNpemUpCi0gICAgLCBt
X2ZsYWdzKGZsYWdzKQorICAgICwgbV9jb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24pCiAgICAg
LCBtX2RhdGEoZGF0YSkKIHsKLSAgICBtX2J5dGVzUGVyUGl4ZWwgPSBjYWxjdWxhdGVCeXRlc1Bl
clBpeGVsKGZsYWdzKTsKIH0KIAotU2hhcmVhYmxlQml0bWFwOjpTaGFyZWFibGVCaXRtYXAoY29u
c3QgSW50U2l6ZSYgc2l6ZSwgRmxhZ3MgZmxhZ3MsIFJlZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJl
ZE1lbW9yeSkKK1NoYXJlYWJsZUJpdG1hcDo6U2hhcmVhYmxlQml0bWFwKGNvbnN0IEludFNpemUm
IHNpemUsIENvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbiwgUmVmUHRyPFNoYXJlZE1lbW9yeT4g
c2hhcmVkTWVtb3J5KQogICAgIDogbV9zaXplKHNpemUpCi0gICAgLCBtX2ZsYWdzKGZsYWdzKQor
ICAgICwgbV9jb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24pCiAgICAgLCBtX3NoYXJlZE1lbW9y
eShzaGFyZWRNZW1vcnkpCi0gICAgLCBtX2RhdGEoMCkKKyAgICAsIG1fZGF0YShudWxscHRyKQog
ewotICAgIG1fYnl0ZXNQZXJQaXhlbCA9IGNhbGN1bGF0ZUJ5dGVzUGVyUGl4ZWwoZmxhZ3MpOwog
fQogCiBTaGFyZWFibGVCaXRtYXA6On5TaGFyZWFibGVCaXRtYXAoKQpAQCAtMTcxLDQgKzE3NCwx
MSBAQCB2b2lkKiBTaGFyZWFibGVCaXRtYXA6OmRhdGEoKSBjb25zdAogICAgIHJldHVybiBtX2Rh
dGE7CiB9CiAKKyNpZiAhVVNFKENHKQordW5zaWduZWQgU2hhcmVhYmxlQml0bWFwOjpjYWxjdWxh
dGVCeXRlc1BlclBpeGVsKGNvbnN0IENvbmZpZ3VyYXRpb24mKQoreworICAgIHJldHVybiA0Owor
fQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFy
ZWFibGVCaXRtYXAuaAppbmRleCBkZjZjNDVjMWQxNmFmNmJkYWYxY2VmYTYzNDQzYjFlN2RhNGFh
NDNiLi4zYWI4YjI2YjgwNjQ0ZmI1Yjg4M2JlNWNiZTkwNDA1YTUzNDBjNTFhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KIAogI2lmIFVTRShDRykKKyNpbmNsdWRlICJDb2xvclNwYWNlRGF0YS5o
IgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNlbmRpZgogCkBAIC00MCwyMCArNDEsMjMg
QEAKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgY2xhc3MgSW1hZ2U7Ci0gICAg
Y2xhc3MgR3JhcGhpY3NDb250ZXh0OworY2xhc3MgSW1hZ2U7CitjbGFzcyBHcmFwaGljc0NvbnRl
eHQ7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogICAgIAogY2xhc3MgU2hhcmVhYmxlQml0bWFw
IDogcHVibGljIFJlZkNvdW50ZWQ8U2hhcmVhYmxlQml0bWFwPiB7CiBwdWJsaWM6Ci0gICAgZW51
bSBGbGFnIHsKLSAgICAgICAgTm9GbGFncyA9IDAsCi0gICAgICAgIFN1cHBvcnRzQWxwaGEgPSAx
IDw8IDAsCi0gICAgICAgIFN1cHBvcnRzRXh0ZW5kZWRDb2xvciA9IDEgPDwgMSwKKyAgICBzdHJ1
Y3QgQ29uZmlndXJhdGlvbiB7CisgICAgICAgIGJvb2wgaXNPcGFxdWUgeyBmYWxzZSB9OworI2lm
IFBMQVRGT1JNKENPQ09BKQorICAgICAgICBDb2xvclNwYWNlRGF0YSBjb2xvclNwYWNlOworI2Vu
ZGlmCisKKyAgICAgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7CisgICAgICAg
IHN0YXRpYyBib29sIGRlY29kZShJUEM6OkRlY29kZXImLCBDb25maWd1cmF0aW9uJik7CiAgICAg
fTsKLSAgICB0eXBlZGVmIHVuc2lnbmVkIEZsYWdzOwogCiAgICAgY2xhc3MgSGFuZGxlIHsKICAg
ICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSGFuZGxlKTsKQEAgLTcyLDE4ICs3NiwxNyBAQCBw
dWJsaWM6CiAKICAgICAgICAgbXV0YWJsZSBTaGFyZWRNZW1vcnk6OkhhbmRsZSBtX2hhbmRsZTsK
ICAgICAgICAgV2ViQ29yZTo6SW50U2l6ZSBtX3NpemU7Ci0gICAgICAgIEZsYWdzIG1fZmxhZ3M7
Ci0gICAgICAgIHVuc2lnbmVkIG1fYnl0ZXNQZXJQaXhlbDsKKyAgICAgICAgQ29uZmlndXJhdGlv
biBtX2NvbmZpZ3VyYXRpb247CiAgICAgfTsKIAogICAgIC8vIENyZWF0ZSBhIHNoYXJlYWJsZSBi
aXRtYXAgdGhhdCB1c2VzIG1hbGxvY2VkIG1lbW9yeS4KLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJl
YWJsZUJpdG1hcD4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBGbGFncyk7CisgICAg
c3RhdGljIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpJbnRT
aXplJiwgQ29uZmlndXJhdGlvbik7CiAKICAgICAvLyBDcmVhdGUgYSBzaGFyZWFibGUgYml0bWFw
IHdob3NlIGJhY2tpbmcgbWVtb3J5IGNhbiBiZSBzaGFyZWQgd2l0aCBhbm90aGVyIHByb2Nlc3Mu
Ci0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGNyZWF0ZVNoYXJlYWJsZShjb25z
dCBXZWJDb3JlOjpJbnRTaXplJiwgRmxhZ3MpOworICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVhYmxl
Qml0bWFwPiBjcmVhdGVTaGFyZWFibGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIENvbmZpZ3Vy
YXRpb24pOwogCiAgICAgLy8gQ3JlYXRlIGEgc2hhcmVhYmxlIGJpdG1hcCBmcm9tIGFuIGFscmVh
ZHkgZXhpc3Rpbmcgc2hhcmVkIG1lbW9yeSBibG9jay4KLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJl
YWJsZUJpdG1hcD4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBGbGFncywgUmVmUHRy
PFNoYXJlZE1lbW9yeT4pOworICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBjcmVh
dGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIENvbmZpZ3VyYXRpb24sIFJlZlB0cjxTaGFyZWRN
ZW1vcnk+KTsKIAogICAgIC8vIENyZWF0ZSBhIHNoYXJlYWJsZSBiaXRtYXAgZnJvbSBhIGhhbmRs
ZS4KICAgICBzdGF0aWMgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gY3JlYXRlKGNvbnN0IEhhbmRs
ZSYsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbiA9IFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6
UmVhZFdyaXRlKTsKQEAgLTEyMywxNSArMTI2LDEwIEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2
YXRlOgotICAgIFNoYXJlYWJsZUJpdG1hcChjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgRmxhZ3Ms
IHZvaWQqKTsKLSAgICBTaGFyZWFibGVCaXRtYXAoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIEZs
YWdzLCBSZWZQdHI8U2hhcmVkTWVtb3J5Pik7CisgICAgU2hhcmVhYmxlQml0bWFwKGNvbnN0IFdl
YkNvcmU6OkludFNpemUmLCBDb25maWd1cmF0aW9uLCB2b2lkKik7CisgICAgU2hhcmVhYmxlQml0
bWFwKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBDb25maWd1cmF0aW9uLCBSZWZQdHI8U2hhcmVk
TWVtb3J5Pik7CiAKLSNpZiBVU0UoQ0FJUk8pCi0gICAgc3RhdGljIENoZWNrZWQ8dW5zaWduZWQs
IFJlY29yZE92ZXJmbG93PiBudW1CeXRlc0ZvclNpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYp
OwotICAgIHN0YXRpYyBDaGVja2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVyZmxvdz4gbnVtQnl0ZXNG
b3JTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUsIHVuc2lnbmVkIGJ5dGVzUGVyUGl4
ZWwpIHsgcmV0dXJuIG51bUJ5dGVzRm9yU2l6ZShzaXplKTsgfQotI2Vsc2UKICAgICBzdGF0aWMg
Q2hlY2tlZDx1bnNpZ25lZCwgUmVjb3JkT3ZlcmZsb3c+IG51bUJ5dGVzRm9yU2l6ZShjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJiBzaXplLCB1bnNpZ25lZCBieXRlc1BlclBpeGVsKSB7IHJldHVybiBz
aXplLmFyZWE8UmVjb3JkT3ZlcmZsb3c+KCkgKiBieXRlc1BlclBpeGVsOyB9Ci0jZW5kaWYKIAog
I2lmIFVTRShDRykKICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gY3JlYXRlQ0dJbWFnZShDR0Rh
dGFQcm92aWRlclJlZikgY29uc3Q7CkBAIC0xNDQsMTUgKzE0MiwxMiBAQCBwcml2YXRlOgogI2Vu
ZGlmCiAKICAgICB2b2lkKiBkYXRhKCkgY29uc3Q7Ci0jaWYgVVNFKENBSVJPKQotICAgIHNpemVf
dCBzaXplSW5CeXRlcygpIGNvbnN0IHsgcmV0dXJuIG51bUJ5dGVzRm9yU2l6ZShtX3NpemUpLnVu
c2FmZUdldCgpOyB9Ci0jZWxzZQotICAgIHNpemVfdCBzaXplSW5CeXRlcygpIGNvbnN0IHsgcmV0
dXJuIG51bUJ5dGVzRm9yU2l6ZShtX3NpemUsIG1fYnl0ZXNQZXJQaXhlbCkudW5zYWZlR2V0KCk7
IH0KLSNlbmRpZgotICAgIAorCisgICAgc3RhdGljIHVuc2lnbmVkIGNhbGN1bGF0ZUJ5dGVzUGVy
UGl4ZWwoY29uc3QgQ29uZmlndXJhdGlvbiYpOworICAgIHNpemVfdCBzaXplSW5CeXRlcygpIGNv
bnN0IHsgcmV0dXJuIG51bUJ5dGVzRm9yU2l6ZShtX3NpemUsIGNhbGN1bGF0ZUJ5dGVzUGVyUGl4
ZWwobV9jb25maWd1cmF0aW9uKSkudW5zYWZlR2V0KCk7IH0KKwogICAgIFdlYkNvcmU6OkludFNp
emUgbV9zaXplOwotICAgIEZsYWdzIG1fZmxhZ3M7Ci0gICAgdW5zaWduZWQgbV9ieXRlc1BlclBp
eGVsOworICAgIENvbmZpZ3VyYXRpb24gbV9jb25maWd1cmF0aW9uOwogCiAgICAgLy8gSWYgdGhl
IHNoYXJlYWJsZSBiaXRtYXAgaXMgYmFja2VkIGJ5IHNoYXJlZCBtZW1vcnksIHRoaXMgcG9pbnRz
IHRvIHRoZSBzaGFyZWQgbWVtb3J5IG9iamVjdC4KICAgICBSZWZQdHI8U2hhcmVkTWVtb3J5PiBt
X3NoYXJlZE1lbW9yeTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVB
cmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuY3BwCmluZGV4IDM3MTViZTQ0MTU5NDU0MjdjMzI3YmVmZmYzMzM2NTY5ZjEzMDdiMDgu
LjdjNDljZTg2Mjk4YjYyMWZlZjY3NmI1ZTA2NTgyMTA0ZDU0ZjhmZjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtMTExOSw3ICsxMTE5
LDcgQEAgYm9vbCBBcmd1bWVudENvZGVyPENyZWRlbnRpYWw+OjpkZWNvZGUoRGVjb2RlciYgZGVj
b2RlciwgQ3JlZGVudGlhbCYgY3JlZGVudGlhbCkKIAogc3RhdGljIHZvaWQgZW5jb2RlSW1hZ2Uo
RW5jb2RlciYgZW5jb2RlciwgSW1hZ2UmIGltYWdlKQogewotICAgIFJlZlB0cjxTaGFyZWFibGVC
aXRtYXA+IGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKEludFNpemUo
aW1hZ2Uuc2l6ZSgpKSwgU2hhcmVhYmxlQml0bWFwOjpTdXBwb3J0c0FscGhhKTsKKyAgICBSZWZQ
dHI8U2hhcmVhYmxlQml0bWFwPiBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJl
YWJsZShJbnRTaXplKGltYWdlLnNpemUoKSksIHsgfSk7CiAgICAgYml0bWFwLT5jcmVhdGVHcmFw
aGljc0NvbnRleHQoKS0+ZHJhd0ltYWdlKGltYWdlLCBJbnRQb2ludCgpKTsKIAogICAgIFNoYXJl
YWJsZUJpdG1hcDo6SGFuZGxlIGhhbmRsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkltYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkltYWdlLmNwcAppbmRl
eCA4NGM2OWM1N2YwMmE4OGU5MWFkNWM1NDYyODZlMzVlY2NjZmU1N2U0Li5kOTQzZGJmNGQ5NGQ1
MzI3YzdkZDBkNjExZThhMDgxMzliYmIwZThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViSW1hZ2UuY3Bw
CkBAIC0yNiwyNSArMjYsMjQgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJJ
bWFnZS5oIgogCi0jaW5jbHVkZSAiU2hhcmVhYmxlQml0bWFwLmgiCi0KIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogUmVmUHRyPFdlYkltYWdlPiBXZWJJ
bWFnZTo6Y3JlYXRlKGNvbnN0IEludFNpemUmIHNpemUsIEltYWdlT3B0aW9ucyBvcHRpb25zKQog
ewotICAgIGludCBzaGFyYWJsZU9wdGlvbnMgPSBTaGFyZWFibGVCaXRtYXA6OlN1cHBvcnRzQWxw
aGE7Ci0gICAgCi0gICAgaWYgKG9wdGlvbnMgJiBJbWFnZU9wdGlvbnNFeHRlbmRlZENvbG9yKQot
ICAgICAgICBzaGFyYWJsZU9wdGlvbnMgfD0gU2hhcmVhYmxlQml0bWFwOjpTdXBwb3J0c0V4dGVu
ZGVkQ29sb3I7CisgICAgcmV0dXJuIFdlYkltYWdlOjpjcmVhdGUoc2l6ZSwgb3B0aW9ucywgeyB9
KTsKK30KKworUmVmUHRyPFdlYkltYWdlPiBXZWJJbWFnZTo6Y3JlYXRlKGNvbnN0IFdlYkNvcmU6
OkludFNpemUmIHNpemUsIEltYWdlT3B0aW9ucyBvcHRpb25zLCBjb25zdCBTaGFyZWFibGVCaXRt
YXA6OkNvbmZpZ3VyYXRpb24mIGJpdG1hcENvbmZpZ3VyYXRpb24pCit7CiAgICAgaWYgKG9wdGlv
bnMgJiBJbWFnZU9wdGlvbnNTaGFyZWFibGUpIHsKLSAgICAgICAgYXV0byBiaXRtYXAgPSBTaGFy
ZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShzaXplLCBzaGFyYWJsZU9wdGlvbnMpOworICAg
ICAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKHNpemUs
IGJpdG1hcENvbmZpZ3VyYXRpb24pOwogICAgICAgICBpZiAoIWJpdG1hcCkKICAgICAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgICAgICByZXR1cm4gV2ViSW1hZ2U6OmNyZWF0ZShiaXRtYXAu
cmVsZWFzZU5vbk51bGwoKSk7CiAgICAgfQotICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0
bWFwOjpjcmVhdGUoc2l6ZSwgc2hhcmFibGVPcHRpb25zKTsKKyAgICBhdXRvIGJpdG1hcCA9IFNo
YXJlYWJsZUJpdG1hcDo6Y3JlYXRlKHNpemUsIGJpdG1hcENvbmZpZ3VyYXRpb24pOwogICAgIGlm
ICghYml0bWFwKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gV2ViSW1hZ2U6
OmNyZWF0ZShiaXRtYXAucmVsZWFzZU5vbk51bGwoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJJbWFnZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViSW1hZ2UuaApp
bmRleCA0NTc0YzllNDllZDE0NDBiMjUyYzUwYjNjZjgyNGE0OWFhZTU5YTUxLi4yMmYzODZmOWQy
OWE1ZGY1NzQzOGZiYWI0NzhiYmY4NmZlMWNkMTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkltYWdlLmgK
QEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgogI2luY2x1ZGUgIklt
YWdlT3B0aW9ucy5oIgorI2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5oIgogI2luY2x1ZGUgPHd0
Zi9SZWYuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzUsMTMgKzM2LDEyIEBAIGNsYXNz
IEludFNpemU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBTaGFyZWFibGVCaXRtYXA7
Ci0KIC8vIFdlYkltYWdlIC0gQW4gaW1hZ2UgdHlwZSBzdWl0YWJsZSBmb3IgdmVuZGluZyB0byBh
biBBUEkuCiAKIGNsYXNzIFdlYkltYWdlIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9i
amVjdDo6VHlwZTo6SW1hZ2U+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmUHRyPFdlYkltYWdl
PiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIEltYWdlT3B0aW9ucyk7CisgICAgc3Rh
dGljIFJlZlB0cjxXZWJJbWFnZT4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBJbWFn
ZU9wdGlvbnMsIGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbiYpOwogICAgIHN0
YXRpYyBSZWY8V2ViSW1hZ2U+IGNyZWF0ZShSZWY8U2hhcmVhYmxlQml0bWFwPiYmKTsKICAgICB+
V2ViSW1hZ2UoKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NnL1No
YXJlYWJsZUJpdG1hcENHLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NnL1NoYXJlYWJsZUJp
dG1hcENHLmNwcAppbmRleCA5ZmUwZmFiNWNjZTYyNTY0ODBkOThhMGExMGJkOWMwNjZmNjk1ZmIz
Li4yMjc0MmI0NTI5ZGE2ZTc1NGM2OTQwZjllNjg2YzYwYTA3NDhjMTA5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwCkBAIC0yOSw0OCArMjksNTQg
QEAKICNpbmNsdWRlIDxXZWJDb3JlL0JpdG1hcEltYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9H
cmFwaGljc0NvbnRleHRDRy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1TY3JlZW4uaD4K
KyNpbmNsdWRlIDxwYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oPgogI2luY2x1ZGUgPHd0Zi9S
ZXRhaW5QdHIuaD4KICNpbmNsdWRlICJDR1V0aWxpdGllcy5oIgogCiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CisgICAgCitzdGF0aWMgQ0dDb2xvclNwYWNl
UmVmIGNvbG9yU3BhY2UoY29uc3QgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uJiBjb25m
aWd1cmF0aW9uKQoreworICAgIHJldHVybiBjb25maWd1cmF0aW9uLmNvbG9yU3BhY2UuY2dDb2xv
clNwYWNlLmdldCgpID86IHNSR0JDb2xvclNwYWNlUmVmKCk7Cit9CiAKLXN0YXRpYyBDR0JpdG1h
cEluZm8gYml0bWFwSW5mbyhTaGFyZWFibGVCaXRtYXA6OkZsYWdzIGZsYWdzKQorc3RhdGljIENH
Qml0bWFwSW5mbyBiaXRtYXBJbmZvKGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlv
biYgY29uZmlndXJhdGlvbikKIHsKICAgICBDR0JpdG1hcEluZm8gaW5mbyA9IDA7Ci0gICAgaWYg
KGZsYWdzICYgU2hhcmVhYmxlQml0bWFwOjpTdXBwb3J0c0V4dGVuZGVkQ29sb3IpIHsKKyAgICBp
ZiAoQ0dDb2xvclNwYWNlVXNlc0V4dGVuZGVkUmFuZ2UoY29sb3JTcGFjZShjb25maWd1cmF0aW9u
KSkpIHsKICAgICAgICAgaW5mbyB8PSBrQ0dCaXRtYXBGbG9hdENvbXBvbmVudHMgfCBrQ0dCaXRt
YXBCeXRlT3JkZXIxNkhvc3Q7Ci0gICAgICAgIAotICAgICAgICBpZiAoZmxhZ3MgJiBTaGFyZWFi
bGVCaXRtYXA6OlN1cHBvcnRzQWxwaGEpCi0gICAgICAgICAgICBpbmZvIHw9IGtDR0ltYWdlQWxw
aGFQcmVtdWx0aXBsaWVkTGFzdDsKLSAgICAgICAgZWxzZQorCisgICAgICAgIGlmIChjb25maWd1
cmF0aW9uLmlzT3BhcXVlKQogICAgICAgICAgICAgaW5mbyB8PSBrQ0dJbWFnZUFscGhhTm9uZVNr
aXBMYXN0OwotICAgICAgICAKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgaW5mbyB8PSBrQ0dJ
bWFnZUFscGhhUHJlbXVsdGlwbGllZExhc3Q7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaW5mbyB8
PSBrQ0dCaXRtYXBCeXRlT3JkZXIzMkhvc3Q7Ci0gICAgICAgIAotICAgICAgICBpZiAoZmxhZ3Mg
JiBTaGFyZWFibGVCaXRtYXA6OlN1cHBvcnRzQWxwaGEpCi0gICAgICAgICAgICBpbmZvIHw9IGtD
R0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3Q7Ci0gICAgICAgIGVsc2UKKworICAgICAgICBp
ZiAoY29uZmlndXJhdGlvbi5pc09wYXF1ZSkKICAgICAgICAgICAgIGluZm8gfD0ga0NHSW1hZ2VB
bHBoYU5vbmVTa2lwRmlyc3Q7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGluZm8gfD0ga0NH
SW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdDsKICAgICB9Ci0gICAgCisKICAgICByZXR1cm4g
aW5mbzsKIH0KLSAgICAKLXN0YXRpYyBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZShTaGFyZWFi
bGVCaXRtYXA6OkZsYWdzIGZsYWdzKQorCit1bnNpZ25lZCBTaGFyZWFibGVCaXRtYXA6OmNhbGN1
bGF0ZUJ5dGVzUGVyUGl4ZWwoY29uc3QgQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKIHsK
LSAgICBpZiAoZmxhZ3MgJiBTaGFyZWFibGVCaXRtYXA6OlN1cHBvcnRzRXh0ZW5kZWRDb2xvcikK
LSAgICAgICAgcmV0dXJuIGV4dGVuZGVkU1JHQkNvbG9yU3BhY2VSZWYoKTsKLSAgICByZXR1cm4g
c1JHQkNvbG9yU3BhY2VSZWYoKTsKKyAgICByZXR1cm4gQ0dDb2xvclNwYWNlVXNlc0V4dGVuZGVk
UmFuZ2UoY29sb3JTcGFjZShjb25maWd1cmF0aW9uKSkgPyA4IDogNDsKIH0KIAogc3RkOjp1bmlx
dWVfcHRyPEdyYXBoaWNzQ29udGV4dD4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVHcmFwaGljc0Nv
bnRleHQoKQogewogICAgIHJlZigpOyAvLyBCYWxhbmNlZCBieSBkZXJlZiBpbiByZWxlYXNlQml0
bWFwQ29udGV4dERhdGEuCi0gICAgCi0gICAgUmV0YWluUHRyPENHQ29udGV4dFJlZj4gYml0bWFw
Q29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlV2l0aERhdGEoZGF0YSgpLCBt
X3NpemUud2lkdGgoKSwgbV9zaXplLmhlaWdodCgpLCBtX2J5dGVzUGVyUGl4ZWwgKiA4IC8gNCwg
bV9zaXplLndpZHRoKCkgKiBtX2J5dGVzUGVyUGl4ZWwsIGNvbG9yU3BhY2UobV9mbGFncyksIGJp
dG1hcEluZm8obV9mbGFncyksIHJlbGVhc2VCaXRtYXBDb250ZXh0RGF0YSwgdGhpcykpOworCisg
ICAgQ0ZTaG93KGNvbG9yU3BhY2UobV9jb25maWd1cmF0aW9uKSk7CisKKyAgICB1bnNpZ25lZCBi
eXRlc1BlclBpeGVsID0gY2FsY3VsYXRlQnl0ZXNQZXJQaXhlbChtX2NvbmZpZ3VyYXRpb24pOwor
ICAgIFJldGFpblB0cjxDR0NvbnRleHRSZWY+IGJpdG1hcENvbnRleHQgPSBhZG9wdENGKENHQml0
bWFwQ29udGV4dENyZWF0ZVdpdGhEYXRhKGRhdGEoKSwgbV9zaXplLndpZHRoKCksIG1fc2l6ZS5o
ZWlnaHQoKSwgYnl0ZXNQZXJQaXhlbCAqIDggLyA0LCBtX3NpemUud2lkdGgoKSAqIGJ5dGVzUGVy
UGl4ZWwsIGNvbG9yU3BhY2UobV9jb25maWd1cmF0aW9uKSwgYml0bWFwSW5mbyhtX2NvbmZpZ3Vy
YXRpb24pLCByZWxlYXNlQml0bWFwQ29udGV4dERhdGEsIHRoaXMpKTsKICAgICAKICAgICBBU1NF
UlQoYml0bWFwQ29udGV4dC5nZXQoKSk7CiAKQEAgLTEwOCw3ICsxMTQsOCBAQCBSZXRhaW5QdHI8
Q0dJbWFnZVJlZj4gU2hhcmVhYmxlQml0bWFwOjptYWtlQ0dJbWFnZSgpCiBSZXRhaW5QdHI8Q0dJ
bWFnZVJlZj4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVDR0ltYWdlKENHRGF0YVByb3ZpZGVyUmVm
IGRhdGFQcm92aWRlcikgY29uc3QKIHsKICAgICBBU1NFUlRfQVJHKGRhdGFQcm92aWRlciwgZGF0
YVByb3ZpZGVyKTsKLSAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2UgPSBhZG9wdENGKENH
SW1hZ2VDcmVhdGUobV9zaXplLndpZHRoKCksIG1fc2l6ZS5oZWlnaHQoKSwgbV9ieXRlc1BlclBp
eGVsICogOCAvIDQsIG1fYnl0ZXNQZXJQaXhlbCAqIDgsIG1fc2l6ZS53aWR0aCgpICogbV9ieXRl
c1BlclBpeGVsLCBjb2xvclNwYWNlKG1fZmxhZ3MpLCBiaXRtYXBJbmZvKG1fZmxhZ3MpLCBkYXRh
UHJvdmlkZXIsIDAsIGZhbHNlLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0KSk7CisgICAgdW5z
aWduZWQgYnl0ZXNQZXJQaXhlbCA9IGNhbGN1bGF0ZUJ5dGVzUGVyUGl4ZWwobV9jb25maWd1cmF0
aW9uKTsKKyAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2UgPSBhZG9wdENGKENHSW1hZ2VD
cmVhdGUobV9zaXplLndpZHRoKCksIG1fc2l6ZS5oZWlnaHQoKSwgYnl0ZXNQZXJQaXhlbCAqIDgg
LyA0LCBieXRlc1BlclBpeGVsICogOCwgbV9zaXplLndpZHRoKCkgKiBieXRlc1BlclBpeGVsLCBj
b2xvclNwYWNlKG1fY29uZmlndXJhdGlvbiksIGJpdG1hcEluZm8obV9jb25maWd1cmF0aW9uKSwg
ZGF0YVByb3ZpZGVyLCAwLCBmYWxzZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpOwogICAg
IHJldHVybiBpbWFnZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFj
L1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1Jl
bW90ZUxheWVyQmFja2luZ1N0b3JlLm1tCmluZGV4IDRkMDliODQ0NjZlYWFlNDkzMDVhOGMxNjgw
NDI1OTk5MWFiNzE2MTkuLjJhNWQyZWNkMWI5NzkxMjNiNTBjNzZhODU3ZGJlYzY5NWE2NWM1YWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9SZW1vdGVMYXllckJhY2tpbmdT
dG9yZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJCYWNraW5n
U3RvcmUubW0KQEAgLTIxMiw4ICsyMTIsMTEgQEAgdm9pZCBSZW1vdGVMYXllckJhY2tpbmdTdG9y
ZTo6c3dhcFRvVmFsaWRGcm9udEJ1ZmZlcigpCiAgICAgQVNTRVJUKCFtX2FjY2VsZXJhdGVzRHJh
d2luZyk7CiAgICAgc3RkOjpzd2FwKG1fZnJvbnRCdWZmZXIsIG1fYmFja0J1ZmZlcik7CiAKLSAg
ICBpZiAoIW1fZnJvbnRCdWZmZXIuYml0bWFwKQotICAgICAgICBtX2Zyb250QnVmZmVyLmJpdG1h
cCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGV4cGFuZGVkU2NhbGVkU2l6ZSwg
bV9pc09wYXF1ZSA/IFNoYXJlYWJsZUJpdG1hcDo6Tm9GbGFncyA6IFNoYXJlYWJsZUJpdG1hcDo6
U3VwcG9ydHNBbHBoYSk7CisgICAgaWYgKCFtX2Zyb250QnVmZmVyLmJpdG1hcCkgeworICAgICAg
ICBTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb24gYml0bWFwQ29uZmlndXJhdGlvbjsKKyAg
ICAgICAgYml0bWFwQ29uZmlndXJhdGlvbi5pc09wYXF1ZSA9IG1faXNPcGFxdWU7CisgICAgICAg
IG1fZnJvbnRCdWZmZXIuYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUo
ZXhwYW5kZWRTY2FsZWRTaXplLCBiaXRtYXBDb25maWd1cmF0aW9uKTsKKyAgICB9CiB9CiAKIGJv
b2wgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmRpc3BsYXkoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1RodW1ibmFpbFZpZXcubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVGh1bWJuYWlsVmlldy5tbQppbmRleCA4NDQy
ODIzZmUxN2QyNjRlZjA4NDNhYTA0NzEzNWNjN2Q3ZmZmN2JlLi5lZmI1NjM0YTNjM2MxMGJjODU1
ZjMwOTcyNThjYTE0Y2IyOTlkNGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLVGh1bWJuYWlsVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLVGh1bWJuYWlsVmlldy5tbQpAQCAtOTIsNyArOTIsNyBAQCAtICh2
b2lkKXJlcXVlc3RTbmFwc2hvdAogCiAgICAgUmV0YWluUHRyPF9XS1RodW1ibmFpbFZpZXc+IHRo
dW1ibmFpbFZpZXcgPSBzZWxmOwogICAgIEludFJlY3Qgc25hcHNob3RSZWN0KEludFBvaW50KCks
IF93ZWJQYWdlUHJveHktPnZpZXdTaXplKCkgLSBJbnRTaXplKDAsIF93ZWJQYWdlUHJveHktPnRv
cENvbnRlbnRJbnNldCgpKSk7Ci0gICAgU25hcHNob3RPcHRpb25zIG9wdGlvbnMgPSBTbmFwc2hv
dE9wdGlvbnNJblZpZXdDb29yZGluYXRlczsKKyAgICBTbmFwc2hvdE9wdGlvbnMgb3B0aW9ucyA9
IFNuYXBzaG90T3B0aW9uc0luVmlld0Nvb3JkaW5hdGVzIHwgU25hcHNob3RPcHRpb25zVXNlU2Ny
ZWVuQ29sb3JTcGFjZTsKICAgICBJbnRTaXplIGJpdG1hcFNpemUgPSBzbmFwc2hvdFJlY3Quc2l6
ZSgpOwogICAgIGJpdG1hcFNpemUuc2NhbGUoX3NjYWxlICogX3dlYlBhZ2VQcm94eS0+ZGV2aWNl
U2NhbGVGYWN0b3IoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VI
YW5kbGUuY3BwCmluZGV4IGQxZmJjMjVkNWMyMjc2MDkxMGMyNzQ0OTY1ZTk2NDNmY2QyNjlmMmIu
LmQ0NmM5MmQwYWJmMDZlNDFjZTQ2OWZiNzZjODk1MDdiNWIyYzUyM2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVS
YW5nZUhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcApAQCAtMTMwLDcgKzEzMCw3IEBA
IFJlZlB0cjxXZWJJbWFnZT4gSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZTo6cmVuZGVyZWRJbWFn
ZShTbmFwc2hvdE9wdGlvbnMgb3B0aW9uCiAgICAgSW50U2l6ZSBiYWNraW5nU3RvcmVTaXplID0g
cGFpbnRSZWN0LnNpemUoKTsKICAgICBiYWNraW5nU3RvcmVTaXplLnNjYWxlKHNjYWxlRmFjdG9y
KTsKIAotICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJhY2tpbmdTdG9yZSA9IFNoYXJlYWJs
ZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGJhY2tpbmdTdG9yZVNpemUsIFNoYXJlYWJsZUJpdG1h
cDo6U3VwcG9ydHNBbHBoYSk7CisgICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gYmFja2luZ1N0
b3JlID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoYmFja2luZ1N0b3JlU2l6ZSwg
eyB9KTsKICAgICBpZiAoIWJhY2tpbmdTdG9yZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05l
dHNjYXBlUGx1Z2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL05ldHNjYXBlUGx1Z2luLmNwcAppbmRleCBhNGQ3ZjFhOTBjYzkwMjkxYTc3MTA5ZDE2ODFm
ZTI0YmIzMzIwNWI0Li5jYjk3M2Q3ZjdhZWU1MjMwMGEwYzhiZTVkNmE5ZWFlNGJiMGI3MWIwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRz
Y2FwZVBsdWdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCkBAIC03NTQsNyArNzU0LDcgQEAgUmVmUHRyPFNoYXJl
YWJsZUJpdG1hcD4gTmV0c2NhcGVQbHVnaW46OnNuYXBzaG90KCkKICAgICBJbnRTaXplIGJhY2tp
bmdTdG9yZVNpemUgPSBtX3BsdWdpblNpemU7CiAgICAgYmFja2luZ1N0b3JlU2l6ZS5zY2FsZShj
b250ZW50c1NjYWxlRmFjdG9yKCkpOwogCi0gICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gYml0
bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoYmFja2luZ1N0b3JlU2l6ZSwg
U2hhcmVhYmxlQml0bWFwOjpTdXBwb3J0c0FscGhhKTsKKyAgICBSZWZQdHI8U2hhcmVhYmxlQml0
bWFwPiBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShiYWNraW5nU3Rv
cmVTaXplLCB7IH0pOwogICAgIGF1dG8gY29udGV4dCA9IGJpdG1hcC0+Y3JlYXRlR3JhcGhpY3ND
b250ZXh0KCk7CiAKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHJlYWxseSBjYWxsIGFwcGx5RGV2
aWNlU2NhbGVGYWN0b3IgaW5zdGVhZCBvZiBzY2FsZSwgYnV0IHRoYXQgZW5kcyB1cCBjYWxsaW5n
IGludG8gV0tTSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMv
UERGL1BERlBsdWdpbi5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9Q
REZQbHVnaW4ubW0KaW5kZXggZjJmMDgwY2MxOTUzYTkwZjAwYTZjN2IyMTk1ZjEzMDhmZTBmZTFh
OS4uOTI3YzhhYzQzZDI1ZDZmN2M3Yjg3ODU2NjY2MDdiZDI3M2IzZWJhMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCkBAIC0xMjQ2
LDcgKzEyNDYsNyBAQCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBQREZQbHVnaW46OnNuYXBzaG90
KCkKICAgICBJbnRTaXplIGJhY2tpbmdTdG9yZVNpemUgPSBzaXplKCk7CiAgICAgYmFja2luZ1N0
b3JlU2l6ZS5zY2FsZShjb250ZW50c1NjYWxlRmFjdG9yKTsKIAotICAgIFJlZlB0cjxTaGFyZWFi
bGVCaXRtYXA+IGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGJhY2tp
bmdTdG9yZVNpemUsIFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNBbHBoYSk7CisgICAgUmVmUHRy
PFNoYXJlYWJsZUJpdG1hcD4gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFi
bGUoYmFja2luZ1N0b3JlU2l6ZSwgeyB9KTsKICAgICBhdXRvIGNvbnRleHQgPSBiaXRtYXAtPmNy
ZWF0ZUdyYXBoaWNzQ29udGV4dCgpOwogCiAgICAgY29udGV4dC0+c2NhbGUoRmxvYXRTaXplKGNv
bnRlbnRzU2NhbGVGYWN0b3IsIC1jb250ZW50c1NjYWxlRmFjdG9yKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAKaW5kZXggNmI0ZGRmY2M5
OTVkODYxOTNlZDY1ZmIwZTk5NGFhN2JjMDViN2Y0Zi4uZTY4ZDlkYWZlOWRjYTM0YThiMTQyNmYz
ZjU2NmVlYTBlNzQ4ODUzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblByb3h5LmNwcApAQCAtMjcwLDcgKzI3MCw3IEBAIHZvaWQgUGx1Z2luUHJveHk6
Omdlb21ldHJ5RGlkQ2hhbmdlKCkKIAogICAgIGlmICh1cGRhdGVCYWNraW5nU3RvcmUoKSkgewog
ICAgICAgICAvLyBDcmVhdGUgYSBuZXcgcGx1Zy1pbiBiYWNraW5nIHN0b3JlLgotICAgICAgICBt
X3BsdWdpbkJhY2tpbmdTdG9yZSA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKG1f
YmFja2luZ1N0b3JlLT5zaXplKCksIFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNBbHBoYSk7Cisg
ICAgICAgIG1fcGx1Z2luQmFja2luZ1N0b3JlID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFy
ZWFibGUobV9iYWNraW5nU3RvcmUtPnNpemUoKSwgeyB9KTsKICAgICAgICAgaWYgKCFtX3BsdWdp
bkJhY2tpbmdTdG9yZSkKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtNjEzLDcgKzYxMyw3IEBA
IGJvb2wgUGx1Z2luUHJveHk6OnVwZGF0ZUJhY2tpbmdTdG9yZSgpCiAgICAgICAgIG1fYmFja2lu
Z1N0b3JlID0gbnVsbHB0cjsgLy8gR2l2ZSBtYWxsb2MgYSBjaGFuY2UgdG8gcmVjeWNsZSBvdXIg
YmFja2luZyBzdG9yZS4KICAgICB9CiAKLSAgICBtX2JhY2tpbmdTdG9yZSA9IFNoYXJlYWJsZUJp
dG1hcDo6Y3JlYXRlKGJhY2tpbmdTdG9yZVNpemUsIFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNB
bHBoYSk7CisgICAgbV9iYWNraW5nU3RvcmUgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShiYWNr
aW5nU3RvcmVTaXplLCB7IH0pOwogICAgIHJldHVybiAhIW1fYmFja2luZ1N0b3JlOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dl
YkRyYWdDbGllbnRNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0KaW5kZXggYjBjZWUyMWE4ODExMjQwOWY0MjJhNmE3
N2Y2MGNmNTU1ZGZlYjAzZi4uYjAzZjVmNGNlYjIxYTg0NzFjNDQ3ZjVlY2VmY2IzNTc2NWI1YzE0
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21h
Yy9XZWJEcmFnQ2xpZW50TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQpAQCAtNDEsNyArNDEsNyBAQAogI2lt
cG9ydCA8V2ViQ29yZS9GcmFtZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZURlc3RydWN0aW9u
T2JzZXJ2ZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWVWaWV3Lmg+Ci0jaW1wb3J0IDxXZWJD
b3JlL0dyYXBoaWNzQ29udGV4dC5oPgorI2ltcG9ydCA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRD
Ry5oPgogI2ltcG9ydCA8V2ViQ29yZS9MZWdhY3lXZWJBcmNoaXZlLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL01haW5GcmFtZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgpAQCAt
NjcsMTIgKzY3LDkgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHN0YXRpYyBSZWZQdHI8U2hhcmVh
YmxlQml0bWFwPiBjb252ZXJ0SW1hZ2VUb0JpdG1hcChOU0ltYWdlICppbWFnZSwgY29uc3QgSW50
U2l6ZSYgc2l6ZSwgRnJhbWUmIGZyYW1lKQogewotICAgIFNoYXJlYWJsZUJpdG1hcDo6RmxhZ3Mg
ZmxhZ3MgPSBTaGFyZWFibGVCaXRtYXA6OlN1cHBvcnRzQWxwaGE7Ci0jaWYgX19NQUNfT1NfWF9W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEyMDAKLSAgICBpZiAoc2NyZWVuU3VwcG9ydHNFeHRl
bmRlZENvbG9yKGZyYW1lLm1haW5GcmFtZSgpLnZpZXcoKSkpCi0gICAgICAgIGZsYWdzIHw9IFNo
YXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNFeHRlbmRlZENvbG9yOwotI2VuZGlmCi0gICAgYXV0byBi
aXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShzaXplLCBmbGFncyk7Cisg
ICAgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uIGJpdG1hcENvbmZpZ3VyYXRpb247Cisg
ICAgYml0bWFwQ29uZmlndXJhdGlvbi5jb2xvclNwYWNlLmNnQ29sb3JTcGFjZSA9IHNjcmVlbkNv
bG9yU3BhY2UoZnJhbWUubWFpbkZyYW1lKCkudmlldygpKTsKKyAgICBhdXRvIGJpdG1hcCA9IFNo
YXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKHNpemUsIGJpdG1hcENvbmZpZ3VyYXRpb24p
OwogICAgIGlmICghYml0bWFwKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtMTk1LDcg
KzE5Miw5IEBAIHZvaWQgV2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIEVsZW1lCiAKIHN0YXRpYyBSZWZQdHI8U2hhcmVh
YmxlQml0bWFwPiBjb252ZXJ0Q0dJbWFnZVRvQml0bWFwKENHSW1hZ2VSZWYgaW1hZ2UsIGNvbnN0
IEludFNpemUmIHNpemUsIEZyYW1lJiBmcmFtZSkKIHsKLSAgICBhdXRvIGJpdG1hcCA9IFNoYXJl
YWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKHNpemUsIFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9y
dHNBbHBoYSB8IFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNFeHRlbmRlZENvbG9yKTsKKyAgICBT
aGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb24gYml0bWFwQ29uZmlndXJhdGlvbjsKKyAgICBi
aXRtYXBDb25maWd1cmF0aW9uLmNvbG9yU3BhY2UuY2dDb2xvclNwYWNlID0gc2NyZWVuQ29sb3JT
cGFjZShmcmFtZS5tYWluRnJhbWUoKS52aWV3KCkpOworICAgIGF1dG8gYml0bWFwID0gU2hhcmVh
YmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoc2l6ZSwgYml0bWFwQ29uZmlndXJhdGlvbik7CiAg
ICAgaWYgKCFiaXRtYXApCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKaW5kZXggMjJhYmMyMDg4N2M5MGQw
NTUyZjRlM2M5ZDZmYTM0NzNiYWE2N2U2Ni4uOWRkYjhlYmVlMmRjZDI2MjRiZTlkZjljMWQ0ZmJi
MzVkODI5NDFlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZy
YW1lLmNwcApAQCAtODI0LDcgKzgyNCw3IEBAIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IFdlYkZy
YW1lOjpjcmVhdGVTZWxlY3Rpb25TbmFwc2hvdCgpIGNvbnN0CiAgICAgaWYgKCFzbmFwc2hvdCkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIHNoYXJlZFNuYXBzaG90ID0gU2hh
cmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoc25hcHNob3QtPmludGVybmFsU2l6ZSgpLCBT
aGFyZWFibGVCaXRtYXA6OlN1cHBvcnRzQWxwaGEpOworICAgIGF1dG8gc2hhcmVkU25hcHNob3Qg
PSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShzbmFwc2hvdC0+aW50ZXJuYWxTaXpl
KCksIHsgfSk7CiAgICAgaWYgKCFzaGFyZWRTbmFwc2hvdCkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5k
ZXggYTBhN2I3MzUyYjI0NzE4NWI4M2Q4N2UyYzBhNjczNTIyYzY0NmY1My4uNWEzNjhlMWE1ZDQ3
ZDI0MzYzMWYwYTRmMzBjZDIwOTE1NWQxMTJhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTE5ODksNiArMTk4OSwxNiBAQCBzdGF0aWMgdm9p
ZCBwYWludFNuYXBzaG90QXRTaXplKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEludFNpemUm
IGJpdG1hcFNpemUsCiAgICAgfQogfQogCitzdGF0aWMgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1
cmF0aW9uIHNuYXBzaG90T3B0aW9uc1RvQml0bWFwQ29uZmlndXJhdGlvbihTbmFwc2hvdE9wdGlv
bnMgb3B0aW9ucywgV2ViUGFnZSYgcGFnZSkKK3sKKyAgICBTaGFyZWFibGVCaXRtYXA6OkNvbmZp
Z3VyYXRpb24gY29uZmlndXJhdGlvbjsKKyNpZiBVU0UoQ0cpCisgICAgaWYgKG9wdGlvbnMgJiBT
bmFwc2hvdE9wdGlvbnNVc2VTY3JlZW5Db2xvclNwYWNlKQorICAgICAgICBjb25maWd1cmF0aW9u
LmNvbG9yU3BhY2UuY2dDb2xvclNwYWNlID0gc2NyZWVuQ29sb3JTcGFjZShwYWdlLmNvcmVQYWdl
KCktPm1haW5GcmFtZSgpLnZpZXcoKSk7CisjZW5kaWYKKyAgICByZXR1cm4gY29uZmlndXJhdGlv
bjsKK30KKwogUmVmUHRyPFdlYkltYWdlPiBXZWJQYWdlOjpzbmFwc2hvdEF0U2l6ZShjb25zdCBJ
bnRSZWN0JiByZWN0LCBjb25zdCBJbnRTaXplJiBiaXRtYXBTaXplLCBTbmFwc2hvdE9wdGlvbnMg
b3B0aW9ucykKIHsKICAgICBGcmFtZSogY29yZUZyYW1lID0gbV9tYWluRnJhbWUtPmNvcmVGcmFt
ZSgpOwpAQCAtMTk5OSw3ICsyMDA5LDkgQEAgUmVmUHRyPFdlYkltYWdlPiBXZWJQYWdlOjpzbmFw
c2hvdEF0U2l6ZShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbnRTaXplJiBiaXQKICAgICBp
ZiAoIWZyYW1lVmlldykKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIHNuYXBz
aG90ID0gV2ViSW1hZ2U6OmNyZWF0ZShiaXRtYXBTaXplLCBzbmFwc2hvdE9wdGlvbnNUb0ltYWdl
T3B0aW9ucyhvcHRpb25zKSk7CisgICAgYXV0byBzbmFwc2hvdCA9IFdlYkltYWdlOjpjcmVhdGUo
Yml0bWFwU2l6ZSwgc25hcHNob3RPcHRpb25zVG9JbWFnZU9wdGlvbnMob3B0aW9ucyksIHNuYXBz
aG90T3B0aW9uc1RvQml0bWFwQ29uZmlndXJhdGlvbihvcHRpb25zLCAqdGhpcykpOworICAgIGlm
ICghc25hcHNob3QpCisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGF1dG8gZ3JhcGhpY3ND
b250ZXh0ID0gc25hcHNob3QtPmJpdG1hcCgpLmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOwogCiAg
ICAgcGFpbnRTbmFwc2hvdEF0U2l6ZShyZWN0LCBiaXRtYXBTaXplLCBvcHRpb25zLCAqY29yZUZy
YW1lLCAqZnJhbWVWaWV3LCAqZ3JhcGhpY3NDb250ZXh0KTsKQEAgLTIwNjYsOCArMjA3OCw5IEBA
IFJlZlB0cjxXZWJJbWFnZT4gV2ViUGFnZTo6c25hcHNob3ROb2RlKFdlYkNvcmU6Ok5vZGUmIG5v
ZGUsIFNuYXBzaG90T3B0aW9ucyBvcHRpCiAgICAgICAgIHNuYXBzaG90U2l6ZSA9IEludFNpemUo
c25hcHNob3RTaXplLndpZHRoKCkgKiBzY2FsZUZhY3RvciwgbWF4aW11bUhlaWdodCk7CiAgICAg
fQogCi0gICAgYXV0byBzbmFwc2hvdCA9IFdlYkltYWdlOjpjcmVhdGUoc25hcHNob3RTaXplLCBz
bmFwc2hvdE9wdGlvbnNUb0ltYWdlT3B0aW9ucyhvcHRpb25zKSk7Ci0KKyAgICBhdXRvIHNuYXBz
aG90ID0gV2ViSW1hZ2U6OmNyZWF0ZShzbmFwc2hvdFNpemUsIHNuYXBzaG90T3B0aW9uc1RvSW1h
Z2VPcHRpb25zKG9wdGlvbnMpLCBzbmFwc2hvdE9wdGlvbnNUb0JpdG1hcENvbmZpZ3VyYXRpb24o
b3B0aW9ucywgKnRoaXMpKTsKKyAgICBpZiAoIXNuYXBzaG90KQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICBhdXRvIGdyYXBoaWNzQ29udGV4dCA9IHNuYXBzaG90LT5iaXRtYXAoKS5jcmVh
dGVHcmFwaGljc0NvbnRleHQoKTsKIAogICAgIGlmICghKG9wdGlvbnMgJiBTbmFwc2hvdE9wdGlv
bnNFeGNsdWRlRGV2aWNlU2NhbGVGYWN0b3IpKSB7CkBAIC00NDM0LDcgKzQ0NDcsNyBAQCB2b2lk
IFdlYlBhZ2U6OmRyYXdSZWN0VG9JbWFnZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBQcmludElu
Zm8mIHByaW50SW5mbywgY29ucwogICAgICAgICBBU1NFUlQoY29yZUZyYW1lLT5kb2N1bWVudCgp
LT5wcmludGluZygpKTsKICNlbmRpZgogCi0gICAgICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxl
Qml0bWFwOjpjcmVhdGVTaGFyZWFibGUoaW1hZ2VTaXplLCBTaGFyZWFibGVCaXRtYXA6OlN1cHBv
cnRzQWxwaGEpOworICAgICAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRl
U2hhcmVhYmxlKGltYWdlU2l6ZSwgeyB9KTsKICAgICAgICAgaWYgKCFiaXRtYXApIHsKICAgICAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0g
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRl
eCBmNjQxZTA3ZGQzODgzZjJkYzRkMjYzMjI2NWExMGVmOTAxZjQ1Y2NhLi44Yzg5Y2YyYTZiNTA4
MjllZWY0Y2ZiYzQyZmNmNTI5NmVlOWYzYzc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtMjUzMyw5ICsyNTMzLDkgQEAg
dm9pZCBXZWJQYWdlOjpnZXRQb3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0IEludGVyYWN0aW9uSW5m
b3JtYXRpb25SZXF1ZXN0JiByZXF1ZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEZsb2F0U2l6ZSBzY2FsZWRTaXplID0gbGFyZ2VzdFJlY3RXaXRoQXNwZWN0UmF0aW9JbnNp
ZGVSZWN0KGltYWdlLT5zaXplKCkud2lkdGgoKSAvIGltYWdlLT5zaXplKCkuaGVpZ2h0KCksIEZs
b2F0UmVjdCgwLCAwLCBzY3JlZW5TaXplSW5QaXhlbHMud2lkdGgoKSwgc2NyZWVuU2l6ZUluUGl4
ZWxzLmhlaWdodCgpKSkuc2l6ZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRmxvYXRTaXplIGJpdG1hcFNpemUgPSBzY2FsZWRTaXplLndpZHRoKCkgPCBpbWFnZS0+c2l6
ZSgpLndpZHRoKCkgPyBzY2FsZWRTaXplIDogaW1hZ2UtPnNpemUoKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBPbmx5IHNlbGVjdCBFeHRlbmRlZENvbG9y
IG9uIGltYWdlcyBrbm93biB0byBuZWVkIHdpZGUgZ2FtdXQKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFNoYXJlYWJsZUJpdG1hcDo6RmxhZ3MgZmxhZ3MgPSBTaGFyZWFibGVC
aXRtYXA6OlN1cHBvcnRzQWxwaGE7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBmbGFncyB8PSBzY3JlZW5TdXBwb3J0c0V4dGVuZGVkQ29sb3IoKSA/IFNoYXJlYWJsZUJpdG1h
cDo6U3VwcG9ydHNFeHRlbmRlZENvbG9yIDogMDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBzaGFyZWRCaXRtYXAgPSBTaGFy
ZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShJbnRTaXplKGJpdG1hcFNpemUpLCBmbGFncykp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYXJlYWJsZUJpdG1hcDo6
Q29uZmlndXJhdGlvbiBiaXRtYXBDb25maWd1cmF0aW9uOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYml0bWFwQ29uZmlndXJhdGlvbi5jb2xvclNwYWNlLmNnQ29sb3JTcGFj
ZSA9IHNjcmVlbkNvbG9yU3BhY2UobV9wYWdlLT5tYWluRnJhbWUoKS52aWV3KCkpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+
IHNoYXJlZEJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKEludFNpemUo
Yml0bWFwU2l6ZSksIGJpdG1hcENvbmZpZ3VyYXRpb24pKSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYXV0byBncmFwaGljc0NvbnRleHQgPSBzaGFyZWRCaXRtYXAt
PmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd0ltYWdlKCppbWFnZSwgRmxvYXRSZWN0KDAs
IDAsIGJpdG1hcFNpemUud2lkdGgoKSwgYml0bWFwU2l6ZS5oZWlnaHQoKSkpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm8uaW1hZ2UgPSBzaGFyZWRCaXRtYXA7
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318836</attachid>
            <date>2017-08-22 17:45:53 -0700</date>
            <delta_ts>2017-08-22 18:06:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175858-20170822174552.patch</filename>
            <type>text/plain</type>
            <size>47659</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxMDUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjY1ZWU5YzZmMzM4YTg0
NTdjY2VhOGVmMzkyMmE5ODYxZTZkMzdiMS4uYWE2MDdlMWY2Y2FmZDEzMzIxZTJiNjRiOGJiNzY2
N2UzNzI1MmM4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE3LTA4LTIyICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIF9XS1RodW1ibmFp
bFZpZXcgc2hvdWxkIHVzZSB0aGUgc2NyZWVuIGNvbG9yIHNwYWNlIGluc3RlYWQgb2Ygc1JHQgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1ODU4Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMzkyNTU1OT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtU2NyZWVuLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vaW9zL1BsYXRmb3JtU2NyZWVuSU9TLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6c2NyZWVuQ29sb3JTcGFjZSk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1BsYXRmb3Jt
U2NyZWVuTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6c2NyZWVuQ29sb3JTcGFjZSk6CisgICAg
ICAgIChXZWJDb3JlOjpzY3JlZW5TdXBwb3J0c0V4dGVuZGVkQ29sb3IpOgorICAgICAgICAqIHBs
YXRmb3JtL3dpbi9QbGF0Zm9ybVNjcmVlbldpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzY3Jl
ZW5Db2xvclNwYWNlKToKKyAgICAgICAgQWRkIHNjcmVlbkNvbG9yU3BhY2UsIHdoaWNoIHJldHVy
bnMgdGhlIGFjdGl2ZSBjb2xvciBzcGFjZSBmb3IgdGhlCisgICAgICAgIGdpdmVuIFdpZGdldCdz
IHNjcmVlbi4gT24gV2luZG93cywganVzdCBmYWxsIGJhY2sgdG8gc1JHQiBsaWtlIHdlIHVzdWFs
bHkgZG8uCisKIDIwMTctMDgtMjIgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+
CiAKICAgICAgICAgQ29ycmVjdCBTT1VQIGFuZCBjVVJMIGJ1aWxkcyBhZnRlciByMjIxMDE3Lgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwppbmRleCA2YjdiNWI5MThhOTdmNDhhYzJlZDkxYmQ1ZGNhMWVlNjU4YjYwNDkxLi5iZmY4
ZjdlOTk1ZWM5MDA0MTY1MDQwZjI1MGZiMjMwYzYxYjVjYzQzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDEyMiBAQAorMjAxNy0wOC0yMiAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNv
bT4KKworICAgICAgICBfV0tUaHVtYm5haWxWaWV3IHNob3VsZCB1c2UgdGhlIHNjcmVlbiBjb2xv
ciBzcGFjZSBpbnN0ZWFkIG9mIHNSR0IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE3NTg1OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzM5MjU1NTk+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ3VycmVu
dGx5LCBfV0tUaHVtYm5haWxWaWV3IHVzZXMgc29mdHdhcmUgc25hcHNob3R0aW5nIHZpYQorICAg
ICAgICBXZWJQYWdlJ3MgdGFrZVNuYXBzaG90IGFuZCBmcmllbmRzLCB3aGljaCBhbHdheXMgdXNl
IHNSR0IuCisgICAgICAgIEhvd2V2ZXIsIGl0IGlzIGltbWVkaWF0ZWx5IHByZXNlbnRlZCBpbiBk
aXNwbGF5IHNwYWNlLCB3aGljaAorICAgICAgICBjYXVzZXMgYW4gZXhwZW5zaXZlIGNvbG9yIGNv
bnZlcnNpb24sIHdoaWNoIGNvdWxkIGhhdmUgYmVlbiBhdm9pZGVkCisgICAgICAgIGlmIHRoZSBz
bmFwc2hvdCB3YXMgaW5zdGVhZCBvcmlnaW5hbGx5IHBhaW50ZWQgaW4gZGlzcGxheSBzcGFjZS4K
KworICAgICAgICBUbyBzb2x2ZSB0aGlzLCBhZGQ6CisKKyAgICAgICAgLSBhIG1lY2hhbmlzbSBh
bGxvd2luZyBTaGFyZWFibGVCaXRtYXAgdG8gYmUgY29uc3RydWN0ZWQgd2l0aCBhCisgICAgICAg
ICAgY29uZmlndXJhdGlvbiwgd2hpY2ggY2FuIGluY2x1ZGUgYSBjb2xvciBzcGFjZSBhcyB3ZWxs
IGFzIHRoZQorICAgICAgICAgIGV4aXN0aW5nIGZsYWdzIChmbGlwcGluZyBTdXBwb3J0c0FscGhh
IHRvIGJlIElzT3BhcXVlIGluc3RlYWQKKyAgICAgICAgICBiZWNhdXNlIG1vc3QgY2FsbGVycyB3
YW50IGFscGhhKQorCisgICAgICAgIC0gYSBXZWJJbWFnZSBjb25zdHJ1Y3RvciBhbGxvd2luZyBj
YWxsZXJzIHRvIHBhc3MgYSBTaGFyZWFibGVCaXRtYXAKKyAgICAgICAgICBjb25maWd1cmF0aW9u
IHRocm91Z2gKKworICAgICAgICAtIGEgYml0IGluIFNuYXBzaG90T3B0aW9ucyBmb3IgY2FsbGVy
cyB0byBpbmRpY2F0ZSB0aGF0IHRoZXkKKyAgICAgICAgICB3YW50IHRvIHNuYXBzaG90IGluIHRo
ZSBkaXNwbGF5J3MgY29sb3Igc3BhY2UgKHJlcHVycG9zZWQKKyAgICAgICAgICBmcm9tIHRoZSBF
eHRlbmRlZENvbG9yIGJpdCkKKworICAgICAgICBBbmQgdGhlbiBtYWtlIHVzZSBvZiB0aGF0IGJp
dCBpbiBfV0tUaHVtYm5haWxWaWV3LgorCisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLU2hhcmVk
QVBJQ2FzdC5oOgorICAgICAgICAoV2ViS2l0OjpzbmFwc2hvdE9wdGlvbnNGcm9tSW1hZ2VPcHRp
b25zKToKKyAgICAgICAgUmVtb3ZlIHRoaXMgaW5jb3JyZWN0IGNvbnZlcnNpb24gKFdLSW1hZ2VP
cHRpb25zIGRvZXNuJ3QgaW5jbHVkZQorICAgICAgICBrV0tTbmFwc2hvdE9wdGlvbnNFeHRlbmRl
ZENvbG9yKS4KKworICAgICAgICAoV2ViS2l0Ojp0b1NuYXBzaG90T3B0aW9ucyk6CisgICAgICAg
IFBsdW1iIGtXS1NuYXBzaG90T3B0aW9uc0V4dGVuZGVkQ29sb3IgdG8gV2ViS2l0OjpTbmFwc2hv
dE9wdGlvbnMKKyAgICAgICAgYXMgdGhlICJVc2VTY3JlZW5Db2xvclNwYWNlIi4gTGVhdmUgdGhl
IFNQSSBuYW1lIGludGFjdCBiZWNhdXNlCisgICAgICAgIGl0IGhhcyBjbGllbnRzLCBidXQgdGhl
IGRpZmZlcmVuY2UgaXNuJ3Qgc28gaHVnZSB0aGF0IGl0IHdpbGwgYmUKKyAgICAgICAgYSBwcm9i
bGVtLgorCisgICAgICAgICogU2hhcmVkL0ltYWdlT3B0aW9ucy5oOgorICAgICAgICAoV2ViS2l0
OjpzbmFwc2hvdE9wdGlvbnNUb0ltYWdlT3B0aW9ucyk6CisgICAgICAgIFJlbW92ZSBJbWFnZU9w
dGlvbnNFeHRlbmRlZENvbG9yLCBhbmQgcmVuYW1lCisgICAgICAgIFNuYXBzaG90T3B0aW9uc0V4
dGVuZGVkQ29sb3IgdG8gU25hcHNob3RPcHRpb25zVXNlU2NyZWVuQ29sb3JTcGFjZS4KKworICAg
ICAgICAqIFNoYXJlZC9TaGFyZWFibGVCaXRtYXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFy
ZWFibGVCaXRtYXA6OkhhbmRsZTo6SGFuZGxlKToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxl
Qml0bWFwOjpIYW5kbGU6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJs
ZUJpdG1hcDo6SGFuZGxlOjpkZWNvZGUpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRt
YXA6OkhhbmRsZTo6Y2xlYXIpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OkNv
bmZpZ3VyYXRpb246OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJp
dG1hcDo6Q29uZmlndXJhdGlvbjo6ZGVjb2RlKToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxl
Qml0bWFwOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OmNyZWF0
ZVNoYXJlYWJsZSk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlSGFu
ZGxlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpTaGFyZWFibGVC
aXRtYXApOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OmNhbGN1bGF0ZUJ5dGVz
UGVyUGl4ZWwpOgorICAgICAgICAoV2ViS2l0OjpjYWxjdWxhdGVCeXRlc1BlclBpeGVsKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlQml0bWFwLmg6CisgICAgICAgIChXZWJL
aXQ6OlNoYXJlYWJsZUJpdG1hcDo6bnVtQnl0ZXNGb3JTaXplKToKKyAgICAgICAgKFdlYktpdDo6
U2hhcmVhYmxlQml0bWFwOjpzaXplSW5CeXRlcyBjb25zdCk6CisgICAgICAgICogU2hhcmVkL2Nn
L1NoYXJlYWJsZUJpdG1hcENHLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Y29sb3JTcGFjZSk6Cisg
ICAgICAgIChXZWJLaXQ6OmJpdG1hcEluZm8pOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVC
aXRtYXA6OmNhbGN1bGF0ZUJ5dGVzUGVyUGl4ZWwpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFi
bGVCaXRtYXA6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJl
YWJsZUJpdG1hcDo6Y3JlYXRlQ0dJbWFnZSBjb25zdCk6CisgICAgICAgIFJlbW92ZSBTaGFyZWFi
bGVCaXRtYXAncyBmbGFncyBwYXJhbWV0ZXIsIGFuZCByZXBsYWNlIGl0IHdpdGgKKyAgICAgICAg
YSBjb25maWd1cmF0aW9uIHBhcmFtZXRlci4gQ29uZmlndXJhdGlvbiBpcyBhIHN0cnVjdCB0aGF0
IGN1cnJlbnRseQorICAgICAgICBlbmNvbXBhc3NlcyB0aGUgbmV3bHktZmxpcHBlZCBJc09wYXF1
ZSBiaXQgYW5kIChvbiBDb2NvYSBwbGF0Zm9ybXMpCisgICAgICAgIGEgcGxhdGZvcm0gY29sb3Jz
cGFjZSBvYmplY3QuIENvbXB1dGUgYnl0ZXNQZXJQaXhlbCBkeW5hbWljYWxseQorICAgICAgICBi
YXNlZCBvbiB0aGUgY29sb3JzcGFjZSBhbmQgd2hldGhlciBpdCB1c2VzIGV4dGVuZGVkIGNvbG9y
cyBvciBub3QuCisKKyAgICAgICAgKiBTaGFyZWQvV2ViSW1hZ2UuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJJbWFnZTo6Y3JlYXRlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViSW1hZ2UuaDoKKyAg
ICAgICAgUGFzcyBTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb24gdGhyb3VnaCB0byB0aGUg
U2hhcmVhYmxlQml0bWFwCisgICAgICAgIGNvbnN0cnVjdG9yLCBpZiBwcm92aWRlZC4KKworICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVGh1bWJuYWlsVmlldy5tbToKKyAgICAgICAg
KC1bX1dLVGh1bWJuYWlsVmlldyByZXF1ZXN0U25hcHNob3RdKToKKyAgICAgICAgTWFrZSB1c2Ug
b2YgdGhlIG5ldyBiaXQsIGFuZCB1c2UgdGhlIHNjcmVlbidzIGNvbG9yIHNwYWNlLgorCisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0Ojpz
bmFwc2hvdE9wdGlvbnNUb0JpdG1hcENvbmZpZ3VyYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjpzbmFwc2hvdEF0U2l6ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNuYXBz
aG90Tm9kZSk6CisgICAgICAgIElmIHRoZSBzbmFwc2hvdCBvcHRpb24gdG8gdXNlIHRoZSBkaXNw
bGF5IGNvbG9yIHNwYWNlIGlzIHNldCwKKyAgICAgICAgZmlsbCBpbiB0aGUgY29sb3JTcGFjZSBm
aWVsZCBpbiB0aGUgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uCisgICAgICAgIHdpdGgg
dGhlIHNjcmVlbidzIGNvbG9yIHNwYWNlLgorCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRy
YXdSZWN0VG9JbWFnZSk6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5j
cHA6CisgICAgICAgIChJUEM6OmVuY29kZUltYWdlKToKKyAgICAgICAgKiBTaGFyZWQvQ29udGV4
dE1lbnVDb250ZXh0RGF0YS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNvbnRleHRNZW51Q29udGV4
dERhdGE6OkNvbnRleHRNZW51Q29udGV4dERhdGEpOgorICAgICAgICAqIFNoYXJlZC9tYWMvUmVt
b3RlTGF5ZXJCYWNraW5nU3RvcmUubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFj
a2luZ1N0b3JlOjpzd2FwVG9WYWxpZEZyb250QnVmZmVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZTo6cmVuZGVyZWRJbWFnZSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OnNuYXBzaG90KToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbToKKyAgICAgICAgKFdlYktpdDo6UERG
UGx1Z2luOjpzbmFwc2hvdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblBy
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJveHk6Omdlb21ldHJ5RGlkQ2hhbmdl
KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJveHk6OnVwZGF0ZUJhY2tpbmdTdG9yZSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5t
bToKKyAgICAgICAgKFdlYktpdDo6Y29udmVydEltYWdlVG9CaXRtYXApOgorICAgICAgICAoV2Vi
S2l0Ojpjb252ZXJ0Q0dJbWFnZVRvQml0bWFwKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6Y3JlYXRlU2VsZWN0
aW9uU25hcHNob3QgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2Vi
UGFnZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0UG9zaXRpb25JbmZvcm1h
dGlvbik6CisgICAgICAgIEFkb3B0IFNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbi4gU2lu
Y2UgSXNPcGFxdWUKKyAgICAgICAgZGVmYXVsdHMgdG8gZmFsc2UsIGFsbCBjYWxsZXJzIHdobyBw
cmV2aW91c2x5IGNvbnN0cnVjdGVkCisgICAgICAgIFNoYXJlYWJsZUJpdG1hcCB3aXRoIFN1cHBv
cnRzQWxwaGEgbm93IGRvbid0IGhhdmUgdG8gZG8gYW55dGhpbmcuCisKIDIwMTctMDgtMjIgIE1h
dHQgTGV3aXMgIDxqbGV3aXMzQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xs
aW5nIG91dCByMjIxMDI2LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkv
Y2cvQ29yZUdyYXBoaWNzU1BJLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZy9Db3Jl
R3JhcGhpY3NTUEkuaAppbmRleCBmM2NiZWM0MWM4OTYxNWY4NGRlMzY1NzAwZmNmNzQzYTBmNzdm
NmZlLi43MDJhYzQyODgwMDU2OTliMWVjZjgyMWQ5Yjk2MjBjZTBmOWZlYjljIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaApAQCAtMTg4LDYg
KzE4OCwxMCBAQCBDR0ZvbnRBbnRpYWxpYXNpbmdTdHlsZSBDR0NvbnRleHRHZXRGb250QW50aWFs
aWFzaW5nU3R5bGUoQ0dDb250ZXh0UmVmKTsKIHZvaWQgQ0dDb250ZXh0U2V0Rm9udEFudGlhbGlh
c2luZ1N0eWxlKENHQ29udGV4dFJlZiwgQ0dGb250QW50aWFsaWFzaW5nU3R5bGUpOwogCiAjaWYg
KFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEy
MDApIHx8IFBMQVRGT1JNKElPUykKK2Jvb2wgQ0dDb2xvclNwYWNlVXNlc0V4dGVuZGVkUmFuZ2Uo
Q0dDb2xvclNwYWNlUmVmKTsKKyNlbmRpZgorCisjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNf
T1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEyMDApIHx8IFBMQVRGT1JNKElPUykKIHR5
cGVkZWYgc3RydWN0IENHUERGQW5ub3RhdGlvbiAqQ0dQREZBbm5vdGF0aW9uUmVmOwogdHlwZWRl
ZiBib29sICheQ0dQREZBbm5vdGF0aW9uRHJhd0NhbGxiYWNrVHlwZSkoQ0dDb250ZXh0UmVmIGNv
bnRleHQsIENHUERGUGFnZVJlZiBwYWdlLCBDR1BERkFubm90YXRpb25SZWYgYW5ub3RhdGlvbik7
CiB2b2lkIENHQ29udGV4dERyYXdQREZQYWdlV2l0aEFubm90YXRpb25zKENHQ29udGV4dFJlZiwg
Q0dQREZQYWdlUmVmLCBDR1BERkFubm90YXRpb25EcmF3Q2FsbGJhY2tUeXBlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU2NyZWVuLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNjcmVlbi5oCmluZGV4IGUyOGZmMTk5NTBkZGE1NGUwOTA2
ZDk4MGFiYzQ1MmFiMzcyMjYxZGIuLmFlYzc0YmIxNTg5YmU5MjAwYTFmNTgxNGUyMDc3NmU1NjU0
YmJhYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU2NyZWVu
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TY3JlZW4uaApAQCAtNDEs
NiArNDEsMTAgQEAgdHlwZWRlZiBzdHJ1Y3QgX05TUG9pbnQgTlNQb2ludDsKIE9CSkNfQ0xBU1Mg
VUlTY3JlZW47CiAjZW5kaWYKIAorI2lmIFVTRShDRykKK3R5cGVkZWYgc3RydWN0IENHQ29sb3JT
cGFjZSAqQ0dDb2xvclNwYWNlUmVmOworI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgRmxvYXRSZWN0OwpAQCAtNjAsNiArNjQsMTAgQEAgRmxvYXRSZWN0IHNjcmVlbkF2YWls
YWJsZVJlY3QoV2lkZ2V0Kik7CiAKIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2NyZWVuU3VwcG9ydHNF
eHRlbmRlZENvbG9yKFdpZGdldCogPSBudWxscHRyKTsKIAorI2lmIFVTRShDRykKK1dFQkNPUkVf
RVhQT1JUIENHQ29sb3JTcGFjZVJlZiBzY3JlZW5Db2xvclNwYWNlKFdpZGdldCogPSBudWxscHRy
KTsKKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oTUFDKQogCiBOU1NjcmVlbiAqc2NyZWVuKE5TV2lu
ZG93ICopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3Jt
U2NyZWVuSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtU2NyZWVu
SU9TLm1tCmluZGV4IDgwOGVkOTdkMjc0ZWU4Y2E5YzRlMGYwZWZkMGRjMzBmZmJkYzYyZDIuLjIx
MmE2ZThmYzkwZDM5OWVlMmUyNTg3OTNkNjhiYzY1YTUwY2E2MDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVNjcmVlbklPUy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1TY3JlZW5JT1MubW0KQEAgLTMwLDYgKzMwLDcg
QEAKICNpbXBvcnQgIkZsb2F0UmVjdC5oIgogI2ltcG9ydCAiRmxvYXRTaXplLmgiCiAjaW1wb3J0
ICJGcmFtZVZpZXcuaCIKKyNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dENHLmgiCiAjaW1wb3J0ICJI
b3N0V2luZG93LmgiCiAjaW1wb3J0ICJJbnRSZWN0LmgiCiAjaW1wb3J0ICJXQUtXaW5kb3cuaCIK
QEAgLTc0LDYgKzc1LDExIEBAIGJvb2wgc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yKFdpZGdl
dCopCiAgICAgcmV0dXJuIE1HR2V0Qm9vbEFuc3dlcihrTUdRSGFzRXh0ZW5kZWRDb2xvckRpc3Bs
YXkpOwogfQogCitDR0NvbG9yU3BhY2VSZWYgc2NyZWVuQ29sb3JTcGFjZShXaWRnZXQqIHdpZGdl
dCkKK3sKKyAgICByZXR1cm4gc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yKHdpZGdldCkgPyBl
eHRlbmRlZFNSR0JDb2xvclNwYWNlUmVmKCkgOiBzUkdCQ29sb3JTcGFjZVJlZigpOworfQorCiAv
LyBUaGVzZSBmdW5jdGlvbnMgc2NhbGUgYmV0d2VlbiBzY3JlZW4gYW5kIHBhZ2UgY29vcmRpbmF0
ZXMgYmVjYXVzZSBKYXZhU2NyaXB0L0RPTSBvcGVyYXRpb25zCiAvLyBhc3N1bWUgdGhhdCB0aGUg
c2NyZWVuIGFuZCB0aGUgcGFnZSBzaGFyZSB0aGUgc2FtZSBjb29yZGluYXRlIHN5c3RlbS4KIEZs
b2F0UmVjdCBzY3JlZW5SZWN0KFdpZGdldCogd2lkZ2V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtU2NyZWVuTWFjLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1BsYXRmb3JtU2NyZWVuTWFjLm1tCmluZGV4IDBmOTE3MmFlNTk0NTkzOWYx
ODQ0ZmNkMTkxY2E1NmRmZmQ4ODI4NTkuLmYwZjY3MWI1OGVkYjhjNjg2MjYwNTMxMGMyMjlhNzk0
ZTMyOTYzZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9y
bVNjcmVlbk1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1T
Y3JlZW5NYWMubW0KQEAgLTEzNCw2ICsxMzQsMTEgQEAgTlNTY3JlZW4gKnNjcmVlbihQbGF0Zm9y
bURpc3BsYXlJRCBkaXNwbGF5SUQpCiAgICAgcmV0dXJuIGZpcnN0U2NyZWVuKCk7CiB9CiAKK0NH
Q29sb3JTcGFjZVJlZiBzY3JlZW5Db2xvclNwYWNlKFdpZGdldCogd2lkZ2V0KQoreworICAgIHJl
dHVybiBzY3JlZW4od2lkZ2V0KS5jb2xvclNwYWNlLkNHQ29sb3JTcGFjZTsKK30KKwogYm9vbCBz
Y3JlZW5TdXBwb3J0c0V4dGVuZGVkQ29sb3IoV2lkZ2V0KiB3aWRnZXQpCiB7CiAgICAgaWYgKCF3
aWRnZXQpCkBAIC0xNDIsNyArMTQ3LDcgQEAgYm9vbCBzY3JlZW5TdXBwb3J0c0V4dGVuZGVkQ29s
b3IoV2lkZ2V0KiB3aWRnZXQpCiAjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+
PSAxMDEyMDAKICAgICByZXR1cm4gW3NjcmVlbih3aWRnZXQpIGNhblJlcHJlc2VudERpc3BsYXlH
YW11dDpOU0Rpc3BsYXlHYW11dFAzXTsKICNlbHNlCi0gICAgYXV0byBjb2xvclNwYWNlID0gc2Ny
ZWVuKHdpZGdldCkuY29sb3JTcGFjZS5DR0NvbG9yU3BhY2U7CisgICAgYXV0byBjb2xvclNwYWNl
ID0gc2NyZWVuQ29sb3JTcGFjZSh3aWRnZXQpOwogICAgIGF1dG8gaWNjRGF0YSA9IGFkb3B0Q0Yo
Q0dDb2xvclNwYWNlQ29weUlDQ1Byb2ZpbGUoY29sb3JTcGFjZSkpOwogICAgIGF1dG8gcHJvZmls
ZSA9IGFkb3B0Q0YoQ29sb3JTeW5jUHJvZmlsZUNyZWF0ZShpY2NEYXRhLmdldCgpLCBudWxscHRy
KSk7CiAgICAgcmV0dXJuIHByb2ZpbGUgJiYgQ29sb3JTeW5jUHJvZmlsZUlzV2lkZUdhbXV0KHBy
b2ZpbGUuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bs
YXRmb3JtU2NyZWVuV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QbGF0Zm9y
bVNjcmVlbldpbi5jcHAKaW5kZXggNjlhMmVjNThmZTQyYzkyMTEzNjc2ZTlmZWU0NDhjZjM2ZTFl
MmU5YS4uMTVlYjJkZmNhNjIxMTVkMzJjMmJhYmFlYzdiYmRiYjFhZDM0OTIyZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1BsYXRmb3JtU2NyZWVuV2luLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGxhdGZvcm1TY3JlZW5XaW4uY3BwCkBAIC0z
MCw2ICszMCw3IEBACiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIK
ICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRDRy5oIgog
I2luY2x1ZGUgIkhvc3RXaW5kb3cuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAi
Tm90SW1wbGVtZW50ZWQuaCIKQEAgLTEwMCw2ICsxMDEsMTEgQEAgRmxvYXRSZWN0IHNjcmVlbkF2
YWlsYWJsZVJlY3QoV2lkZ2V0KiB3aWRnZXQpCiAgICAgcmV0dXJuIG1vbml0b3JJbmZvLnJjV29y
azsKIH0KIAorQ0dDb2xvclNwYWNlUmVmIHNjcmVlbkNvbG9yU3BhY2UoV2lkZ2V0KikKK3sKKyAg
ICByZXR1cm4gc1JHQkNvbG9yU3BhY2VSZWYoKTsKK30KKwogYm9vbCBzY3JlZW5TdXBwb3J0c0V4
dGVuZGVkQ29sb3IoV2lkZ2V0KikKIHsKICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1NoYXJlZEFQSUNhc3QuaCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FQSS9jL1dLU2hhcmVkQVBJQ2FzdC5oCmluZGV4IGI0ODA5ZjNhMTVmZjhjZGU2
NDJkMWRkNGU2NTkxNzJkMDUwZmU0NjAuLjViODJkNGQ0NGM1MzMwOWE3MjU3ZWI0YTE5MWRhYzJm
NmQ5YzM5OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLU2hhcmVk
QVBJQ2FzdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLU2hhcmVkQVBJQ2Fz
dC5oCkBAIC05MzAsOSArOTMwLDYgQEAgaW5saW5lIFNuYXBzaG90T3B0aW9ucyBzbmFwc2hvdE9w
dGlvbnNGcm9tSW1hZ2VPcHRpb25zKFdLSW1hZ2VPcHRpb25zIHdrSW1hZ2VPcHQKIAogICAgIGlm
ICh3a0ltYWdlT3B0aW9ucyAmIGtXS0ltYWdlT3B0aW9uc1NoYXJlYWJsZSkKICAgICAgICAgc25h
cHNob3RPcHRpb25zIHw9IFNuYXBzaG90T3B0aW9uc1NoYXJlYWJsZTsKLQotICAgIGlmICh3a0lt
YWdlT3B0aW9ucyAmIGtXS1NuYXBzaG90T3B0aW9uc0V4dGVuZGVkQ29sb3IpCi0gICAgICAgIHNu
YXBzaG90T3B0aW9ucyB8PSBTbmFwc2hvdE9wdGlvbnNFeHRlbmRlZENvbG9yOwogICAgIAogICAg
IHJldHVybiBzbmFwc2hvdE9wdGlvbnM7CiB9CkBAIC05NTUsNiArOTUyLDggQEAgaW5saW5lIFNu
YXBzaG90T3B0aW9ucyB0b1NuYXBzaG90T3B0aW9ucyhXS1NuYXBzaG90T3B0aW9ucyB3a1NuYXBz
aG90T3B0aW9ucykKICAgICAgICAgc25hcHNob3RPcHRpb25zIHw9IFNuYXBzaG90T3B0aW9uc0Zv
cmNlV2hpdGVUZXh0OwogICAgIGlmICh3a1NuYXBzaG90T3B0aW9ucyAmIGtXS1NuYXBzaG90T3B0
aW9uc1ByaW50aW5nKQogICAgICAgICBzbmFwc2hvdE9wdGlvbnMgfD0gU25hcHNob3RPcHRpb25z
UHJpbnRpbmc7CisgICAgaWYgKHdrU25hcHNob3RPcHRpb25zICYga1dLU25hcHNob3RPcHRpb25z
RXh0ZW5kZWRDb2xvcikKKyAgICAgICAgc25hcHNob3RPcHRpb25zIHw9IFNuYXBzaG90T3B0aW9u
c1VzZVNjcmVlbkNvbG9yU3BhY2U7CiAKICAgICByZXR1cm4gc25hcHNob3RPcHRpb25zOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29udGV4dE1lbnVDb250ZXh0RGF0YS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db250ZXh0TWVudUNvbnRleHREYXRhLmNwcAppbmRl
eCAzOWJkYjMyZTFkMWExZDE5NTA3ZWY4NWZiMjhmMjYxMWI5Yjk2MzliLi5mZTJkMTg0NjZkYTYx
M2JiYjRhMjQzNWQ5YTU0NWMwMTdhYzkwYmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9Db250ZXh0TWVudUNvbnRleHREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9Db250ZXh0TWVudUNvbnRleHREYXRhLmNwcApAQCAtNjUsNyArNjUsNyBAQCBDb250ZXh0TWVu
dUNvbnRleHREYXRhOjpDb250ZXh0TWVudUNvbnRleHREYXRhKGNvbnN0IFdlYkNvcmU6OkludFBv
aW50JiBtZW51TG9jYQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBGSVhNRTogZmlndXJlIG91
dCB0aGUgcm91bmRpbmcgc3RhcnRlZ3kgZm9yIFNoYXJlYWJsZUJpdG1hcC4KLSAgICBtX2NvbnRy
b2xsZWRJbWFnZSA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKEludFNpemUoaW1h
Z2UtPnNpemUoKSksIFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNBbHBoYSk7CisgICAgbV9jb250
cm9sbGVkSW1hZ2UgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShJbnRTaXplKGlt
YWdlLT5zaXplKCkpLCB7IH0pOwogICAgIG1fY29udHJvbGxlZEltYWdlLT5jcmVhdGVHcmFwaGlj
c0NvbnRleHQoKS0+ZHJhd0ltYWdlKCppbWFnZSwgSW50UG9pbnQoKSk7CiAjZW5kaWYKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0ltYWdlT3B0aW9ucy5oIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvSW1hZ2VPcHRpb25zLmgKaW5kZXggYzMwYWYwMjljMjIyYzFiYmIzMWM0ODJj
NGFmM2E1M2Y1YmMyODAzNy4uOTE4MjE5NmVjZGJmMjBhM2EyYzliYTZmMmUyZTdjZjQ2ZTA0ODc1
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvSW1hZ2VPcHRpb25zLmgKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvSW1hZ2VPcHRpb25zLmgKQEAgLTMwLDcgKzMwLDYgQEAgbmFt
ZXNwYWNlIFdlYktpdCB7CiAKIGVudW0gSW1hZ2VPcHRpb25zIHsKICAgICBJbWFnZU9wdGlvbnNT
aGFyZWFibGUgPSAxIDw8IDAsCi0gICAgSW1hZ2VPcHRpb25zRXh0ZW5kZWRDb2xvciA9IDEgPDwg
MSwKIH07CiAKIGVudW0gewpAQCAtNDIsMjEgKzQxLDE2IEBAIGVudW0gewogICAgIFNuYXBzaG90
T3B0aW9uc0ZvcmNlQmxhY2tUZXh0ID0gMSA8PCA2LAogICAgIFNuYXBzaG90T3B0aW9uc0ZvcmNl
V2hpdGVUZXh0ID0gMSA8PCA3LAogICAgIFNuYXBzaG90T3B0aW9uc1ByaW50aW5nID0gMSA8PCA4
LAotICAgIFNuYXBzaG90T3B0aW9uc0V4dGVuZGVkQ29sb3IgPSAxIDw8IDksCisgICAgU25hcHNo
b3RPcHRpb25zVXNlU2NyZWVuQ29sb3JTcGFjZSA9IDEgPDwgOSwKIH07CiB0eXBlZGVmIHVpbnQz
Ml90IFNuYXBzaG90T3B0aW9uczsKIAotCiBpbmxpbmUgSW1hZ2VPcHRpb25zIHNuYXBzaG90T3B0
aW9uc1RvSW1hZ2VPcHRpb25zKFNuYXBzaG90T3B0aW9ucyBzbmFwc2hvdE9wdGlvbnMpCiB7CiAg
ICAgdW5zaWduZWQgaW1hZ2VPcHRpb25zID0gMDsKIAogICAgIGlmIChzbmFwc2hvdE9wdGlvbnMg
JiBTbmFwc2hvdE9wdGlvbnNTaGFyZWFibGUpCiAgICAgICAgIGltYWdlT3B0aW9ucyB8PSBJbWFn
ZU9wdGlvbnNTaGFyZWFibGU7Ci0gICAgCi0gICAgaWYgKHNuYXBzaG90T3B0aW9ucyAmIFNuYXBz
aG90T3B0aW9uc0V4dGVuZGVkQ29sb3IpCi0gICAgICAgIGltYWdlT3B0aW9ucyB8PSBJbWFnZU9w
dGlvbnNFeHRlbmRlZENvbG9yOwotICAgIAogCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEltYWdl
T3B0aW9ucz4oaW1hZ2VPcHRpb25zKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1NoYXJlYWJsZUJpdG1hcC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVC
aXRtYXAuY3BwCmluZGV4IDk5NDJlN2MyNjc1ZDc0MGQwZDFjNTFkMWVjNjNiYzIwZTYwN2EzODYu
LjgzYTBlNjdmMmNmZTE0MDc1MDRjYjdhZjgzMzY5Zjg5ZDMxODczODMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmNwcApAQCAtMzMsMTYgKzMzLDggQEAKIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKLSAgICAKLXN0YXRpYyB1bnNp
Z25lZCBjYWxjdWxhdGVCeXRlc1BlclBpeGVsKFNoYXJlYWJsZUJpdG1hcDo6RmxhZ3MgZmxhZ3Mp
Ci17Ci0gICAgaWYgKGZsYWdzICYgU2hhcmVhYmxlQml0bWFwOjpTdXBwb3J0c0V4dGVuZGVkQ29s
b3IpCi0gICAgICAgIHJldHVybiA4OyAvLyBmb3IgZXh0ZW5kZWQgY29sb3IsIHdlIGFyZSB1c2lu
ZyBoYWxmLWZsb2F0IHJlcHJlc2VudGF0aW9ucwotICAgIHJldHVybiA0OwotfQogCiBTaGFyZWFi
bGVCaXRtYXA6OkhhbmRsZTo6SGFuZGxlKCkKLSAgICA6IG1fZmxhZ3MoMCkKIHsKIH0KIApAQCAt
NTAsNyArNDIsNyBAQCB2b2lkIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlOjplbmNvZGUoSVBDOjpF
bmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewogICAgIGVuY29kZXIgPDwgbV9oYW5kbGU7CiAgICAg
ZW5jb2RlciA8PCBtX3NpemU7Ci0gICAgZW5jb2RlciA8PCBtX2ZsYWdzOworICAgIGVuY29kZXIg
PDwgbV9jb25maWd1cmF0aW9uOwogfQogCiBib29sIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlOjpk
ZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBIYW5kbGUmIGhhbmRsZSkKQEAgLTU5LDkgKzUx
LDggQEAgYm9vbCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZTo6ZGVjb2RlKElQQzo6RGVjb2RlciYg
ZGVjb2RlciwgSGFuZGxlJiBoYW5kbGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGhhbmRsZS5tX3NpemUpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYW5kbGUubV9mbGFncykpCisgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShoYW5kbGUubV9jb25maWd1cmF0aW9uKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIGhhbmRsZS5tX2J5dGVzUGVyUGl4ZWwgPSBjYWxjdWxhdGVCeXRlc1BlclBpeGVsKGhhbmRs
ZS5tX2ZsYWdzKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNjksMTQgKzYwLDMxIEBAIHZv
aWQgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGU6OmNsZWFyKCkKIHsKICAgICBtX2hhbmRsZS5jbGVh
cigpOwogICAgIG1fc2l6ZSA9IEludFNpemUoKTsKLSAgICBtX2ZsYWdzID0gRmxhZzo6Tm9GbGFn
czsKLSAgICBtX2J5dGVzUGVyUGl4ZWwgPSBjYWxjdWxhdGVCeXRlc1BlclBpeGVsKG1fZmxhZ3Mp
OworICAgIG1fY29uZmlndXJhdGlvbiA9IHsgfTsKIH0KIAotUmVmUHRyPFNoYXJlYWJsZUJpdG1h
cD4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgRmxhZ3MgZmxh
Z3MpCit2b2lkIFNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbjo6ZW5jb2RlKElQQzo6RW5j
b2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICB1bnNpZ25lZCBieXRlc1BlclBpeGVsID0gY2Fs
Y3VsYXRlQnl0ZXNQZXJQaXhlbChmbGFncyk7Ci0gICAgYXV0byBudW1CeXRlcyA9IG51bUJ5dGVz
Rm9yU2l6ZShzaXplLCBieXRlc1BlclBpeGVsKTsKKyAgICBlbmNvZGVyIDw8IGlzT3BhcXVlOwor
I2lmIFBMQVRGT1JNKENPQ09BKQorICAgIGVuY29kZXIgPDwgY29sb3JTcGFjZTsKKyNlbmRpZgor
fQorCitib29sIFNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbjo6ZGVjb2RlKElQQzo6RGVj
b2RlciYgZGVjb2RlciwgQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKK3sKKyAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGNvbmZpZ3VyYXRpb24uaXNPcGFxdWUpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjb25m
aWd1cmF0aW9uLmNvbG9yU3BhY2UpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKworUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gU2hhcmVhYmxlQml0
bWFwOjpjcmVhdGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgQ29uZmlndXJhdGlvbiBjb25maWd1cmF0
aW9uKQoreworICAgIGF1dG8gbnVtQnl0ZXMgPSBudW1CeXRlc0ZvclNpemUoc2l6ZSwgY2FsY3Vs
YXRlQnl0ZXNQZXJQaXhlbChjb25maWd1cmF0aW9uKSk7CiAgICAgaWYgKG51bUJ5dGVzLmhhc092
ZXJmbG93ZWQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTg0LDEzICs5MiwxMiBA
QCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShjb25zdCBJ
bnRTaXplJiBzaXplLCBGbGFncyBmbGFncwogICAgIGlmICghdHJ5RmFzdE1hbGxvYyhudW1CeXRl
cy51bnNhZmVHZXQoKSkuZ2V0VmFsdWUoZGF0YSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFyZWFibGVCaXRtYXAoc2l6ZSwgZmxhZ3MsIGRh
dGEpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYXJlYWJsZUJpdG1hcChzaXplLCBjb25m
aWd1cmF0aW9uLCBkYXRhKSk7CiB9CiAKLVJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IFNoYXJlYWJs
ZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGNvbnN0IEludFNpemUmIHNpemUsIEZsYWdzIGZsYWdz
KQorUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFi
bGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKQogewot
ICAgIHVuc2lnbmVkIGJ5dGVzUGVyUGl4ZWwgPSBjYWxjdWxhdGVCeXRlc1BlclBpeGVsKGZsYWdz
KTsKLSAgICBhdXRvIG51bUJ5dGVzID0gbnVtQnl0ZXNGb3JTaXplKHNpemUsIGJ5dGVzUGVyUGl4
ZWwpOworICAgIGF1dG8gbnVtQnl0ZXMgPSBudW1CeXRlc0ZvclNpemUoc2l6ZSwgY2FsY3VsYXRl
Qnl0ZXNQZXJQaXhlbChjb25maWd1cmF0aW9uKSk7CiAgICAgaWYgKG51bUJ5dGVzLmhhc092ZXJm
bG93ZWQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTk4LDE1ICsxMDUsMTQgQEAg
UmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUo
Y29uc3QgSW50U2l6ZSYgc2l6ZSwgRmwKICAgICBpZiAoIXNoYXJlZE1lbW9yeSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYXJlYWJsZUJpdG1h
cChzaXplLCBmbGFncywgc2hhcmVkTWVtb3J5KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBT
aGFyZWFibGVCaXRtYXAoc2l6ZSwgY29uZmlndXJhdGlvbiwgc2hhcmVkTWVtb3J5KSk7CiB9CiAK
LVJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGNvbnN0IElu
dFNpemUmIHNpemUsIEZsYWdzIGZsYWdzLCBSZWZQdHI8U2hhcmVkTWVtb3J5PiBzaGFyZWRNZW1v
cnkpCitSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShjb25z
dCBJbnRTaXplJiBzaXplLCBDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24sIFJlZlB0cjxTaGFy
ZWRNZW1vcnk+IHNoYXJlZE1lbW9yeSkKIHsKICAgICBBU1NFUlQoc2hhcmVkTWVtb3J5KTsKIAot
ICAgIHVuc2lnbmVkIGJ5dGVzUGVyUGl4ZWwgPSBjYWxjdWxhdGVCeXRlc1BlclBpeGVsKGZsYWdz
KTsKLSAgICBhdXRvIG51bUJ5dGVzID0gbnVtQnl0ZXNGb3JTaXplKHNpemUsIGJ5dGVzUGVyUGl4
ZWwpOworICAgIGF1dG8gbnVtQnl0ZXMgPSBudW1CeXRlc0ZvclNpemUoc2l6ZSwgY2FsY3VsYXRl
Qnl0ZXNQZXJQaXhlbChjb25maWd1cmF0aW9uKSk7CiAgICAgaWYgKG51bUJ5dGVzLmhhc092ZXJm
bG93ZWQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgaWYgKHNoYXJlZE1lbW9yeS0+
c2l6ZSgpIDwgbnVtQnl0ZXMudW5zYWZlR2V0KCkpIHsKQEAgLTExNCw3ICsxMjAsNyBAQCBSZWZQ
dHI8U2hhcmVhYmxlQml0bWFwPiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShjb25zdCBJbnRTaXpl
JiBzaXplLCBGbGFncyBmbGFncwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAg
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFyZWFibGVCaXRtYXAoc2l6ZSwgZmxhZ3MsIHNo
YXJlZE1lbW9yeSkpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2hhcmVhYmxlQml0bWFwKHNp
emUsIGNvbmZpZ3VyYXRpb24sIHNoYXJlZE1lbW9yeSkpOwogfQogCiBSZWZQdHI8U2hhcmVhYmxl
Qml0bWFwPiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShjb25zdCBIYW5kbGUmIGhhbmRsZSwgU2hh
cmVkTWVtb3J5OjpQcm90ZWN0aW9uIHByb3RlY3Rpb24pCkBAIC0xMjQsNyArMTMwLDcgQEAgUmVm
UHRyPFNoYXJlYWJsZUJpdG1hcD4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoY29uc3QgSGFuZGxl
JiBoYW5kbGUsIFNoYXJlZE1lbW8KICAgICBpZiAoIXNoYXJlZE1lbW9yeSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gY3JlYXRlKGhhbmRsZS5tX3NpemUsIGhhbmRsZS5t
X2ZsYWdzLCBXVEZNb3ZlKHNoYXJlZE1lbW9yeSkpOworICAgIHJldHVybiBjcmVhdGUoaGFuZGxl
Lm1fc2l6ZSwgaGFuZGxlLm1fY29uZmlndXJhdGlvbiwgV1RGTW92ZShzaGFyZWRNZW1vcnkpKTsK
IH0KIAogYm9vbCBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUhhbmRsZShIYW5kbGUmIGhhbmRsZSwg
U2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uIHByb3RlY3Rpb24pIGNvbnN0CkBAIC0xMzQsMjYgKzE0
MCwyMyBAQCBib29sIFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlSGFuZGxlKEhhbmRsZSYgaGFuZGxl
LCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb24gcHJvdAogICAgIGlmICghbV9zaGFyZWRNZW1vcnkt
PmNyZWF0ZUhhbmRsZShoYW5kbGUubV9oYW5kbGUsIHByb3RlY3Rpb24pKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgaGFuZGxlLm1fc2l6ZSA9IG1fc2l6ZTsKLSAgICBoYW5kbGUubV9mbGFn
cyA9IG1fZmxhZ3M7Ci0gICAgaGFuZGxlLm1fYnl0ZXNQZXJQaXhlbCA9IG1fYnl0ZXNQZXJQaXhl
bDsKKyAgICBoYW5kbGUubV9jb25maWd1cmF0aW9uID0gbV9jb25maWd1cmF0aW9uOwogICAgIHJl
dHVybiB0cnVlOwogfQogCi1TaGFyZWFibGVCaXRtYXA6OlNoYXJlYWJsZUJpdG1hcChjb25zdCBJ
bnRTaXplJiBzaXplLCBGbGFncyBmbGFncywgdm9pZCogZGF0YSkKK1NoYXJlYWJsZUJpdG1hcDo6
U2hhcmVhYmxlQml0bWFwKGNvbnN0IEludFNpemUmIHNpemUsIENvbmZpZ3VyYXRpb24gY29uZmln
dXJhdGlvbiwgdm9pZCogZGF0YSkKICAgICA6IG1fc2l6ZShzaXplKQotICAgICwgbV9mbGFncyhm
bGFncykKKyAgICAsIG1fY29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uKQogICAgICwgbV9kYXRh
KGRhdGEpCiB7Ci0gICAgbV9ieXRlc1BlclBpeGVsID0gY2FsY3VsYXRlQnl0ZXNQZXJQaXhlbChm
bGFncyk7CiB9CiAKLVNoYXJlYWJsZUJpdG1hcDo6U2hhcmVhYmxlQml0bWFwKGNvbnN0IEludFNp
emUmIHNpemUsIEZsYWdzIGZsYWdzLCBSZWZQdHI8U2hhcmVkTWVtb3J5PiBzaGFyZWRNZW1vcnkp
CitTaGFyZWFibGVCaXRtYXA6OlNoYXJlYWJsZUJpdG1hcChjb25zdCBJbnRTaXplJiBzaXplLCBD
b25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24sIFJlZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJlZE1l
bW9yeSkKICAgICA6IG1fc2l6ZShzaXplKQotICAgICwgbV9mbGFncyhmbGFncykKKyAgICAsIG1f
Y29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uKQogICAgICwgbV9zaGFyZWRNZW1vcnkoc2hhcmVk
TWVtb3J5KQotICAgICwgbV9kYXRhKDApCisgICAgLCBtX2RhdGEobnVsbHB0cikKIHsKLSAgICBt
X2J5dGVzUGVyUGl4ZWwgPSBjYWxjdWxhdGVCeXRlc1BlclBpeGVsKGZsYWdzKTsKIH0KIAogU2hh
cmVhYmxlQml0bWFwOjp+U2hhcmVhYmxlQml0bWFwKCkKQEAgLTE3MSw0ICsxNzQsMTEgQEAgdm9p
ZCogU2hhcmVhYmxlQml0bWFwOjpkYXRhKCkgY29uc3QKICAgICByZXR1cm4gbV9kYXRhOwogfQog
CisjaWYgIVVTRShDRykKK3Vuc2lnbmVkIFNoYXJlYWJsZUJpdG1hcDo6Y2FsY3VsYXRlQnl0ZXNQ
ZXJQaXhlbChjb25zdCBDb25maWd1cmF0aW9uJikKK3sKKyAgICByZXR1cm4gNDsKK30KKyNlbmRp
ZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1NoYXJlYWJsZUJpdG1hcC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlQml0
bWFwLmgKaW5kZXggZGY2YzQ1YzFkMTZhZjZiZGFmMWNlZmE2MzQ0M2IxZTdkYTRhYTQzYi4uM2Fi
OGIyNmI4MDY0NGZiNWI4ODNiZTVjYmU5MDQwNWE1MzQwYzUxYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvU2hhcmVhYmxlQml0bWFwLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+CiAKICNpZiBVU0UoQ0cpCisjaW5jbHVkZSAiQ29sb3JTcGFjZURhdGEuaCIKICNpbmNs
dWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjZW5kaWYKIApAQCAtNDAsMjAgKzQxLDIzIEBACiAjZW5k
aWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIGNsYXNzIEltYWdlOwotICAgIGNsYXNzIEdy
YXBoaWNzQ29udGV4dDsKK2NsYXNzIEltYWdlOworY2xhc3MgR3JhcGhpY3NDb250ZXh0OwogfQog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKICAgICAKIGNsYXNzIFNoYXJlYWJsZUJpdG1hcCA6IHB1Ymxp
YyBSZWZDb3VudGVkPFNoYXJlYWJsZUJpdG1hcD4gewogcHVibGljOgotICAgIGVudW0gRmxhZyB7
Ci0gICAgICAgIE5vRmxhZ3MgPSAwLAotICAgICAgICBTdXBwb3J0c0FscGhhID0gMSA8PCAwLAot
ICAgICAgICBTdXBwb3J0c0V4dGVuZGVkQ29sb3IgPSAxIDw8IDEsCisgICAgc3RydWN0IENvbmZp
Z3VyYXRpb24geworICAgICAgICBib29sIGlzT3BhcXVlIHsgZmFsc2UgfTsKKyNpZiBQTEFURk9S
TShDT0NPQSkKKyAgICAgICAgQ29sb3JTcGFjZURhdGEgY29sb3JTcGFjZTsKKyNlbmRpZgorCisg
ICAgICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNvbnN0OworICAgICAgICBzdGF0aWMg
Ym9vbCBkZWNvZGUoSVBDOjpEZWNvZGVyJiwgQ29uZmlndXJhdGlvbiYpOwogICAgIH07Ci0gICAg
dHlwZWRlZiB1bnNpZ25lZCBGbGFnczsKIAogICAgIGNsYXNzIEhhbmRsZSB7CiAgICAgICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKEhhbmRsZSk7CkBAIC03MiwxOCArNzYsMTcgQEAgcHVibGljOgog
CiAgICAgICAgIG11dGFibGUgU2hhcmVkTWVtb3J5OjpIYW5kbGUgbV9oYW5kbGU7CiAgICAgICAg
IFdlYkNvcmU6OkludFNpemUgbV9zaXplOwotICAgICAgICBGbGFncyBtX2ZsYWdzOwotICAgICAg
ICB1bnNpZ25lZCBtX2J5dGVzUGVyUGl4ZWw7CisgICAgICAgIENvbmZpZ3VyYXRpb24gbV9jb25m
aWd1cmF0aW9uOwogICAgIH07CiAKICAgICAvLyBDcmVhdGUgYSBzaGFyZWFibGUgYml0bWFwIHRo
YXQgdXNlcyBtYWxsb2NlZCBtZW1vcnkuCi0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWFibGVCaXRt
YXA+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgRmxhZ3MpOworICAgIHN0YXRpYyBS
ZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIENv
bmZpZ3VyYXRpb24pOwogCiAgICAgLy8gQ3JlYXRlIGEgc2hhcmVhYmxlIGJpdG1hcCB3aG9zZSBi
YWNraW5nIG1lbW9yeSBjYW4gYmUgc2hhcmVkIHdpdGggYW5vdGhlciBwcm9jZXNzLgotICAgIHN0
YXRpYyBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBjcmVhdGVTaGFyZWFibGUoY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYsIEZsYWdzKTsKKyAgICBzdGF0aWMgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4g
Y3JlYXRlU2hhcmVhYmxlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBDb25maWd1cmF0aW9uKTsK
IAogICAgIC8vIENyZWF0ZSBhIHNoYXJlYWJsZSBiaXRtYXAgZnJvbSBhbiBhbHJlYWR5IGV4aXN0
aW5nIHNoYXJlZCBtZW1vcnkgYmxvY2suCi0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWFibGVCaXRt
YXA+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgRmxhZ3MsIFJlZlB0cjxTaGFyZWRN
ZW1vcnk+KTsKKyAgICBzdGF0aWMgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gY3JlYXRlKGNvbnN0
IFdlYkNvcmU6OkludFNpemUmLCBDb25maWd1cmF0aW9uLCBSZWZQdHI8U2hhcmVkTWVtb3J5Pik7
CiAKICAgICAvLyBDcmVhdGUgYSBzaGFyZWFibGUgYml0bWFwIGZyb20gYSBoYW5kbGUuCiAgICAg
c3RhdGljIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGNyZWF0ZShjb25zdCBIYW5kbGUmLCBTaGFy
ZWRNZW1vcnk6OlByb3RlY3Rpb24gPSBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRXcml0
ZSk7CkBAIC0xMjMsMTUgKzEyNiwxMCBAQCBwdWJsaWM6CiAjZW5kaWYKIAogcHJpdmF0ZToKLSAg
ICBTaGFyZWFibGVCaXRtYXAoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIEZsYWdzLCB2b2lkKik7
Ci0gICAgU2hhcmVhYmxlQml0bWFwKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBGbGFncywgUmVm
UHRyPFNoYXJlZE1lbW9yeT4pOworICAgIFNoYXJlYWJsZUJpdG1hcChjb25zdCBXZWJDb3JlOjpJ
bnRTaXplJiwgQ29uZmlndXJhdGlvbiwgdm9pZCopOworICAgIFNoYXJlYWJsZUJpdG1hcChjb25z
dCBXZWJDb3JlOjpJbnRTaXplJiwgQ29uZmlndXJhdGlvbiwgUmVmUHRyPFNoYXJlZE1lbW9yeT4p
OwogCi0jaWYgVVNFKENBSVJPKQotICAgIHN0YXRpYyBDaGVja2VkPHVuc2lnbmVkLCBSZWNvcmRP
dmVyZmxvdz4gbnVtQnl0ZXNGb3JTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsKLSAgICBz
dGF0aWMgQ2hlY2tlZDx1bnNpZ25lZCwgUmVjb3JkT3ZlcmZsb3c+IG51bUJ5dGVzRm9yU2l6ZShj
b25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplLCB1bnNpZ25lZCBieXRlc1BlclBpeGVsKSB7IHJl
dHVybiBudW1CeXRlc0ZvclNpemUoc2l6ZSk7IH0KLSNlbHNlCiAgICAgc3RhdGljIENoZWNrZWQ8
dW5zaWduZWQsIFJlY29yZE92ZXJmbG93PiBudW1CeXRlc0ZvclNpemUoY29uc3QgV2ViQ29yZTo6
SW50U2l6ZSYgc2l6ZSwgdW5zaWduZWQgYnl0ZXNQZXJQaXhlbCkgeyByZXR1cm4gc2l6ZS5hcmVh
PFJlY29yZE92ZXJmbG93PigpICogYnl0ZXNQZXJQaXhlbDsgfQotI2VuZGlmCiAKICNpZiBVU0Uo
Q0cpCiAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNyZWF0ZUNHSW1hZ2UoQ0dEYXRhUHJvdmlk
ZXJSZWYpIGNvbnN0OwpAQCAtMTQ0LDE1ICsxNDIsMTIgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAg
ICAgdm9pZCogZGF0YSgpIGNvbnN0OwotI2lmIFVTRShDQUlSTykKLSAgICBzaXplX3Qgc2l6ZUlu
Qnl0ZXMoKSBjb25zdCB7IHJldHVybiBudW1CeXRlc0ZvclNpemUobV9zaXplKS51bnNhZmVHZXQo
KTsgfQotI2Vsc2UKLSAgICBzaXplX3Qgc2l6ZUluQnl0ZXMoKSBjb25zdCB7IHJldHVybiBudW1C
eXRlc0ZvclNpemUobV9zaXplLCBtX2J5dGVzUGVyUGl4ZWwpLnVuc2FmZUdldCgpOyB9Ci0jZW5k
aWYKLSAgICAKKworICAgIHN0YXRpYyB1bnNpZ25lZCBjYWxjdWxhdGVCeXRlc1BlclBpeGVsKGNv
bnN0IENvbmZpZ3VyYXRpb24mKTsKKyAgICBzaXplX3Qgc2l6ZUluQnl0ZXMoKSBjb25zdCB7IHJl
dHVybiBudW1CeXRlc0ZvclNpemUobV9zaXplLCBjYWxjdWxhdGVCeXRlc1BlclBpeGVsKG1fY29u
ZmlndXJhdGlvbikpLnVuc2FmZUdldCgpOyB9CisKICAgICBXZWJDb3JlOjpJbnRTaXplIG1fc2l6
ZTsKLSAgICBGbGFncyBtX2ZsYWdzOwotICAgIHVuc2lnbmVkIG1fYnl0ZXNQZXJQaXhlbDsKKyAg
ICBDb25maWd1cmF0aW9uIG1fY29uZmlndXJhdGlvbjsKIAogICAgIC8vIElmIHRoZSBzaGFyZWFi
bGUgYml0bWFwIGlzIGJhY2tlZCBieSBzaGFyZWQgbWVtb3J5LCB0aGlzIHBvaW50cyB0byB0aGUg
c2hhcmVkIG1lbW9yeSBvYmplY3QuCiAgICAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gbV9zaGFyZWRN
ZW1vcnk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNw
cAppbmRleCAzNzE1YmU0NDE1OTQ1NDI3YzMyN2JlZmZmMzMzNjU2OWYxMzA3YjA4Li43YzQ5Y2U4
NjI5OGI2MjFmZWY2NzZiNWUwNjU4MjEwNGQ1NGY4ZmY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTExMTksNyArMTExOSw3IEBAIGJv
b2wgQXJndW1lbnRDb2RlcjxDcmVkZW50aWFsPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIENy
ZWRlbnRpYWwmIGNyZWRlbnRpYWwpCiAKIHN0YXRpYyB2b2lkIGVuY29kZUltYWdlKEVuY29kZXIm
IGVuY29kZXIsIEltYWdlJiBpbWFnZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBi
aXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShJbnRTaXplKGltYWdlLnNp
emUoKSksIFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNBbHBoYSk7CisgICAgUmVmUHRyPFNoYXJl
YWJsZUJpdG1hcD4gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoSW50
U2l6ZShpbWFnZS5zaXplKCkpLCB7IH0pOwogICAgIGJpdG1hcC0+Y3JlYXRlR3JhcGhpY3NDb250
ZXh0KCktPmRyYXdJbWFnZShpbWFnZSwgSW50UG9pbnQoKSk7CiAKICAgICBTaGFyZWFibGVCaXRt
YXA6OkhhbmRsZSBoYW5kbGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJJ
bWFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJJbWFnZS5jcHAKaW5kZXggODRjNjlj
NTdmMDJhODhlOTFhZDVjNTQ2Mjg2ZTM1ZWNjY2ZlNTdlNC4uZDk0M2RiZjRkOTRkNTMyN2M3ZGQw
ZDYxMWU4YTA4MTM5YmJiMGU4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
SW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkltYWdlLmNwcApAQCAtMjYs
MjUgKzI2LDI0IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViSW1hZ2UuaCIK
IAotI2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5oIgotCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIFJlZlB0cjxXZWJJbWFnZT4gV2ViSW1hZ2U6OmNy
ZWF0ZShjb25zdCBJbnRTaXplJiBzaXplLCBJbWFnZU9wdGlvbnMgb3B0aW9ucykKIHsKLSAgICBp
bnQgc2hhcmFibGVPcHRpb25zID0gU2hhcmVhYmxlQml0bWFwOjpTdXBwb3J0c0FscGhhOwotICAg
IAotICAgIGlmIChvcHRpb25zICYgSW1hZ2VPcHRpb25zRXh0ZW5kZWRDb2xvcikKLSAgICAgICAg
c2hhcmFibGVPcHRpb25zIHw9IFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNFeHRlbmRlZENvbG9y
OworICAgIHJldHVybiBXZWJJbWFnZTo6Y3JlYXRlKHNpemUsIG9wdGlvbnMsIHsgfSk7Cit9CisK
K1JlZlB0cjxXZWJJbWFnZT4gV2ViSW1hZ2U6OmNyZWF0ZShjb25zdCBXZWJDb3JlOjpJbnRTaXpl
JiBzaXplLCBJbWFnZU9wdGlvbnMgb3B0aW9ucywgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpDb25m
aWd1cmF0aW9uJiBiaXRtYXBDb25maWd1cmF0aW9uKQorewogICAgIGlmIChvcHRpb25zICYgSW1h
Z2VPcHRpb25zU2hhcmVhYmxlKSB7Ci0gICAgICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0
bWFwOjpjcmVhdGVTaGFyZWFibGUoc2l6ZSwgc2hhcmFibGVPcHRpb25zKTsKKyAgICAgICAgYXV0
byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShzaXplLCBiaXRtYXBD
b25maWd1cmF0aW9uKTsKICAgICAgICAgaWYgKCFiaXRtYXApCiAgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICAgICAgcmV0dXJuIFdlYkltYWdlOjpjcmVhdGUoYml0bWFwLnJlbGVhc2VO
b25OdWxsKCkpOwogICAgIH0KLSAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3Jl
YXRlKHNpemUsIHNoYXJhYmxlT3B0aW9ucyk7CisgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVC
aXRtYXA6OmNyZWF0ZShzaXplLCBiaXRtYXBDb25maWd1cmF0aW9uKTsKICAgICBpZiAoIWJpdG1h
cCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIFdlYkltYWdlOjpjcmVhdGUo
Yml0bWFwLnJlbGVhc2VOb25OdWxsKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViSW1hZ2UuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkltYWdlLmgKaW5kZXggNDU3
NGM5ZTQ5ZWQxNDQwYjI1MmM1MGIzY2Y4MjRhNDlhYWU1OWE1MS4uMjJmMzg2ZjlkMjlhNWRmNTc0
MzhmYmFiNDc4YmJmODZmZTFjZDEwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJJbWFnZS5oCkBAIC0yNyw2
ICsyNyw3IEBACiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJJbWFnZU9wdGlv
bnMuaCIKKyNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIKICNpbmNsdWRlIDx3dGYvUmVmLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM1LDEzICszNiwxMiBAQCBjbGFzcyBJbnRTaXpl
OwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgU2hhcmVhYmxlQml0bWFwOwotCiAvLyBX
ZWJJbWFnZSAtIEFuIGltYWdlIHR5cGUgc3VpdGFibGUgZm9yIHZlbmRpbmcgdG8gYW4gQVBJLgog
CiBjbGFzcyBXZWJJbWFnZSA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5
cGU6OkltYWdlPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZlB0cjxXZWJJbWFnZT4gY3JlYXRl
KGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBJbWFnZU9wdGlvbnMpOworICAgIHN0YXRpYyBSZWZQ
dHI8V2ViSW1hZ2U+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgSW1hZ2VPcHRpb25z
LCBjb25zdCBTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb24mKTsKICAgICBzdGF0aWMgUmVm
PFdlYkltYWdlPiBjcmVhdGUoUmVmPFNoYXJlYWJsZUJpdG1hcD4mJik7CiAgICAgfldlYkltYWdl
KCk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZy9TaGFyZWFibGVC
aXRtYXBDRy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5j
cHAKaW5kZXggOWZlMGZhYjVjY2U2MjU2NDgwZDk4YTBhMTBiZDljMDY2ZjY5NWZiMy4uOWU1YTE0
ZWZlMzRkMWE5NDUyOGZlMzFiZjk5YWY5YzgwZWQzMGFmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcApAQCAtMjksNDggKzI5LDYyIEBACiAjaW5j
bHVkZSA8V2ViQ29yZS9CaXRtYXBJbWFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3ND
b250ZXh0Q0cuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtU2NyZWVuLmg+CisjaW5jbHVk
ZSA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRy
Lmg+CiAjaW5jbHVkZSAiQ0dVdGlsaXRpZXMuaCIKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKIG5hbWVzcGFjZSBXZWJLaXQgeworICAgIAorc3RhdGljIENHQ29sb3JTcGFjZVJlZiBjb2xv
clNwYWNlKGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlv
bikKK3sKKyAgICByZXR1cm4gY29uZmlndXJhdGlvbi5jb2xvclNwYWNlLmNnQ29sb3JTcGFjZS5n
ZXQoKSA/OiBzUkdCQ29sb3JTcGFjZVJlZigpOworfQorCitzdGF0aWMgYm9vbCB3YW50c0V4dGVu
ZGVkUmFuZ2UoY29uc3QgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uJiBjb25maWd1cmF0
aW9uKQoreworI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTAxMjAwKSB8fCBQTEFURk9STShJT1MpCisgICAgcmV0dXJuIENHQ29sb3JTcGFj
ZVVzZXNFeHRlbmRlZFJhbmdlKGNvbG9yU3BhY2UoY29uZmlndXJhdGlvbikpOworI2Vsc2UKKyAg
ICBVTlVTRURfUEFSQU0oY29uZmlndXJhdGlvbik7CisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlm
Cit9CiAKLXN0YXRpYyBDR0JpdG1hcEluZm8gYml0bWFwSW5mbyhTaGFyZWFibGVCaXRtYXA6OkZs
YWdzIGZsYWdzKQorc3RhdGljIENHQml0bWFwSW5mbyBiaXRtYXBJbmZvKGNvbnN0IFNoYXJlYWJs
ZUJpdG1hcDo6Q29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKIHsKICAgICBDR0JpdG1hcElu
Zm8gaW5mbyA9IDA7Ci0gICAgaWYgKGZsYWdzICYgU2hhcmVhYmxlQml0bWFwOjpTdXBwb3J0c0V4
dGVuZGVkQ29sb3IpIHsKKyAgICBpZiAod2FudHNFeHRlbmRlZFJhbmdlKGNvbmZpZ3VyYXRpb24p
KSB7CiAgICAgICAgIGluZm8gfD0ga0NHQml0bWFwRmxvYXRDb21wb25lbnRzIHwga0NHQml0bWFw
Qnl0ZU9yZGVyMTZIb3N0OwotICAgICAgICAKLSAgICAgICAgaWYgKGZsYWdzICYgU2hhcmVhYmxl
Qml0bWFwOjpTdXBwb3J0c0FscGhhKQotICAgICAgICAgICAgaW5mbyB8PSBrQ0dJbWFnZUFscGhh
UHJlbXVsdGlwbGllZExhc3Q7Ci0gICAgICAgIGVsc2UKKworICAgICAgICBpZiAoY29uZmlndXJh
dGlvbi5pc09wYXF1ZSkKICAgICAgICAgICAgIGluZm8gfD0ga0NHSW1hZ2VBbHBoYU5vbmVTa2lw
TGFzdDsKLSAgICAgICAgCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGluZm8gfD0ga0NHSW1h
Z2VBbHBoYVByZW11bHRpcGxpZWRMYXN0OwogICAgIH0gZWxzZSB7CiAgICAgICAgIGluZm8gfD0g
a0NHQml0bWFwQnl0ZU9yZGVyMzJIb3N0OwotICAgICAgICAKLSAgICAgICAgaWYgKGZsYWdzICYg
U2hhcmVhYmxlQml0bWFwOjpTdXBwb3J0c0FscGhhKQotICAgICAgICAgICAgaW5mbyB8PSBrQ0dJ
bWFnZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0OwotICAgICAgICBlbHNlCisKKyAgICAgICAgaWYg
KGNvbmZpZ3VyYXRpb24uaXNPcGFxdWUpCiAgICAgICAgICAgICBpbmZvIHw9IGtDR0ltYWdlQWxw
aGFOb25lU2tpcEZpcnN0OworICAgICAgICBlbHNlCisgICAgICAgICAgICBpbmZvIHw9IGtDR0lt
YWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3Q7CiAgICAgfQotICAgIAorCiAgICAgcmV0dXJuIGlu
Zm87CiB9Ci0gICAgCi1zdGF0aWMgQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2UoU2hhcmVhYmxl
Qml0bWFwOjpGbGFncyBmbGFncykKKwordW5zaWduZWQgU2hhcmVhYmxlQml0bWFwOjpjYWxjdWxh
dGVCeXRlc1BlclBpeGVsKGNvbnN0IENvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCiB7Ci0g
ICAgaWYgKGZsYWdzICYgU2hhcmVhYmxlQml0bWFwOjpTdXBwb3J0c0V4dGVuZGVkQ29sb3IpCi0g
ICAgICAgIHJldHVybiBleHRlbmRlZFNSR0JDb2xvclNwYWNlUmVmKCk7Ci0gICAgcmV0dXJuIHNS
R0JDb2xvclNwYWNlUmVmKCk7CisgICAgcmV0dXJuIHdhbnRzRXh0ZW5kZWRSYW5nZShjb25maWd1
cmF0aW9uKSA/IDggOiA0OwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0PiBT
aGFyZWFibGVCaXRtYXA6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpCiB7CiAgICAgcmVmKCk7IC8v
IEJhbGFuY2VkIGJ5IGRlcmVmIGluIHJlbGVhc2VCaXRtYXBDb250ZXh0RGF0YS4KLSAgICAKLSAg
ICBSZXRhaW5QdHI8Q0dDb250ZXh0UmVmPiBiaXRtYXBDb250ZXh0ID0gYWRvcHRDRihDR0JpdG1h
cENvbnRleHRDcmVhdGVXaXRoRGF0YShkYXRhKCksIG1fc2l6ZS53aWR0aCgpLCBtX3NpemUuaGVp
Z2h0KCksIG1fYnl0ZXNQZXJQaXhlbCAqIDggLyA0LCBtX3NpemUud2lkdGgoKSAqIG1fYnl0ZXNQ
ZXJQaXhlbCwgY29sb3JTcGFjZShtX2ZsYWdzKSwgYml0bWFwSW5mbyhtX2ZsYWdzKSwgcmVsZWFz
ZUJpdG1hcENvbnRleHREYXRhLCB0aGlzKSk7CisKKyAgICB1bnNpZ25lZCBieXRlc1BlclBpeGVs
ID0gY2FsY3VsYXRlQnl0ZXNQZXJQaXhlbChtX2NvbmZpZ3VyYXRpb24pOworICAgIFJldGFpblB0
cjxDR0NvbnRleHRSZWY+IGJpdG1hcENvbnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENy
ZWF0ZVdpdGhEYXRhKGRhdGEoKSwgbV9zaXplLndpZHRoKCksIG1fc2l6ZS5oZWlnaHQoKSwgYnl0
ZXNQZXJQaXhlbCAqIDggLyA0LCBtX3NpemUud2lkdGgoKSAqIGJ5dGVzUGVyUGl4ZWwsIGNvbG9y
U3BhY2UobV9jb25maWd1cmF0aW9uKSwgYml0bWFwSW5mbyhtX2NvbmZpZ3VyYXRpb24pLCByZWxl
YXNlQml0bWFwQ29udGV4dERhdGEsIHRoaXMpKTsKICAgICAKICAgICBBU1NFUlQoYml0bWFwQ29u
dGV4dC5nZXQoKSk7CiAKQEAgLTEwOCw3ICsxMjIsOCBAQCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4g
U2hhcmVhYmxlQml0bWFwOjptYWtlQ0dJbWFnZSgpCiBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gU2hh
cmVhYmxlQml0bWFwOjpjcmVhdGVDR0ltYWdlKENHRGF0YVByb3ZpZGVyUmVmIGRhdGFQcm92aWRl
cikgY29uc3QKIHsKICAgICBBU1NFUlRfQVJHKGRhdGFQcm92aWRlciwgZGF0YVByb3ZpZGVyKTsK
LSAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2UgPSBhZG9wdENGKENHSW1hZ2VDcmVhdGUo
bV9zaXplLndpZHRoKCksIG1fc2l6ZS5oZWlnaHQoKSwgbV9ieXRlc1BlclBpeGVsICogOCAvIDQs
IG1fYnl0ZXNQZXJQaXhlbCAqIDgsIG1fc2l6ZS53aWR0aCgpICogbV9ieXRlc1BlclBpeGVsLCBj
b2xvclNwYWNlKG1fZmxhZ3MpLCBiaXRtYXBJbmZvKG1fZmxhZ3MpLCBkYXRhUHJvdmlkZXIsIDAs
IGZhbHNlLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0KSk7CisgICAgdW5zaWduZWQgYnl0ZXNQ
ZXJQaXhlbCA9IGNhbGN1bGF0ZUJ5dGVzUGVyUGl4ZWwobV9jb25maWd1cmF0aW9uKTsKKyAgICBS
ZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2UgPSBhZG9wdENGKENHSW1hZ2VDcmVhdGUobV9zaXpl
LndpZHRoKCksIG1fc2l6ZS5oZWlnaHQoKSwgYnl0ZXNQZXJQaXhlbCAqIDggLyA0LCBieXRlc1Bl
clBpeGVsICogOCwgbV9zaXplLndpZHRoKCkgKiBieXRlc1BlclBpeGVsLCBjb2xvclNwYWNlKG1f
Y29uZmlndXJhdGlvbiksIGJpdG1hcEluZm8obV9jb25maWd1cmF0aW9uKSwgZGF0YVByb3ZpZGVy
LCAwLCBmYWxzZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpOwogICAgIHJldHVybiBpbWFn
ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29k
ZXJzR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5j
cHAKaW5kZXggMzQyNjI2MDIwMDI2ZGRmOTcwMWJhMGFiYzdmOWNlMGUxMjQ1OTEzYi4uN2RlYzlj
ZTliODJlOGI1OWZlOGJiM2IzY2Y3NGIwZGMwNjkyMzE2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwCkBAIC00Miw3ICs0Miw3IEBAIG5hbWVz
cGFjZSBJUEMgewogCiBzdGF0aWMgdm9pZCBlbmNvZGVJbWFnZShFbmNvZGVyJiBlbmNvZGVyLCBJ
bWFnZSYgaW1hZ2UpCiB7Ci0gICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gYml0bWFwID0gU2hh
cmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoSW50U2l6ZShpbWFnZS5zaXplKCkpLCBTaGFy
ZWFibGVCaXRtYXA6OlN1cHBvcnRzQWxwaGEpOworICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+
IGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKEludFNpemUoaW1hZ2Uu
c2l6ZSgpKSwgeyB9KTsKICAgICBiaXRtYXAtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpLT5kcmF3
SW1hZ2UoaW1hZ2UsIEludFBvaW50KCkpOwogCiAgICAgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUg
aGFuZGxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1JlbW90ZUxheWVy
QmFja2luZ1N0b3JlLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1JlbW90ZUxheWVyQmFj
a2luZ1N0b3JlLm1tCmluZGV4IDRkMDliODQ0NjZlYWFlNDkzMDVhOGMxNjgwNDI1OTk5MWFiNzE2
MTkuLjJhNWQyZWNkMWI5NzkxMjNiNTBjNzZhODU3ZGJlYzY5NWE2NWM1YWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0KQEAg
LTIxMiw4ICsyMTIsMTEgQEAgdm9pZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6c3dhcFRvVmFs
aWRGcm9udEJ1ZmZlcigpCiAgICAgQVNTRVJUKCFtX2FjY2VsZXJhdGVzRHJhd2luZyk7CiAgICAg
c3RkOjpzd2FwKG1fZnJvbnRCdWZmZXIsIG1fYmFja0J1ZmZlcik7CiAKLSAgICBpZiAoIW1fZnJv
bnRCdWZmZXIuYml0bWFwKQotICAgICAgICBtX2Zyb250QnVmZmVyLmJpdG1hcCA9IFNoYXJlYWJs
ZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGV4cGFuZGVkU2NhbGVkU2l6ZSwgbV9pc09wYXF1ZSA/
IFNoYXJlYWJsZUJpdG1hcDo6Tm9GbGFncyA6IFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNBbHBo
YSk7CisgICAgaWYgKCFtX2Zyb250QnVmZmVyLmJpdG1hcCkgeworICAgICAgICBTaGFyZWFibGVC
aXRtYXA6OkNvbmZpZ3VyYXRpb24gYml0bWFwQ29uZmlndXJhdGlvbjsKKyAgICAgICAgYml0bWFw
Q29uZmlndXJhdGlvbi5pc09wYXF1ZSA9IG1faXNPcGFxdWU7CisgICAgICAgIG1fZnJvbnRCdWZm
ZXIuYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoZXhwYW5kZWRTY2Fs
ZWRTaXplLCBiaXRtYXBDb25maWd1cmF0aW9uKTsKKyAgICB9CiB9CiAKIGJvb2wgUmVtb3RlTGF5
ZXJCYWNraW5nU3RvcmU6OmRpc3BsYXkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL19XS1RodW1ibmFpbFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLVGh1bWJuYWlsVmlldy5tbQppbmRleCA4NDQyODIzZmUxN2QyNjRl
ZjA4NDNhYTA0NzEzNWNjN2Q3ZmZmN2JlLi5lZmI1NjM0YTNjM2MxMGJjODU1ZjMwOTcyNThjYTE0
Y2IyOTlkNGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLVGh1bWJuYWlsVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLVGh1bWJuYWlsVmlldy5tbQpAQCAtOTIsNyArOTIsNyBAQCAtICh2b2lkKXJlcXVlc3RT
bmFwc2hvdAogCiAgICAgUmV0YWluUHRyPF9XS1RodW1ibmFpbFZpZXc+IHRodW1ibmFpbFZpZXcg
PSBzZWxmOwogICAgIEludFJlY3Qgc25hcHNob3RSZWN0KEludFBvaW50KCksIF93ZWJQYWdlUHJv
eHktPnZpZXdTaXplKCkgLSBJbnRTaXplKDAsIF93ZWJQYWdlUHJveHktPnRvcENvbnRlbnRJbnNl
dCgpKSk7Ci0gICAgU25hcHNob3RPcHRpb25zIG9wdGlvbnMgPSBTbmFwc2hvdE9wdGlvbnNJblZp
ZXdDb29yZGluYXRlczsKKyAgICBTbmFwc2hvdE9wdGlvbnMgb3B0aW9ucyA9IFNuYXBzaG90T3B0
aW9uc0luVmlld0Nvb3JkaW5hdGVzIHwgU25hcHNob3RPcHRpb25zVXNlU2NyZWVuQ29sb3JTcGFj
ZTsKICAgICBJbnRTaXplIGJpdG1hcFNpemUgPSBzbmFwc2hvdFJlY3Quc2l6ZSgpOwogICAgIGJp
dG1hcFNpemUuc2NhbGUoX3NjYWxlICogX3dlYlBhZ2VQcm94eS0+ZGV2aWNlU2NhbGVGYWN0b3Io
KSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwCmlu
ZGV4IGQxZmJjMjVkNWMyMjc2MDkxMGMyNzQ0OTY1ZTk2NDNmY2QyNjlmMmIuLmQ0NmM5MmQwYWJm
MDZlNDFjZTQ2OWZiNzZjODk1MDdiNWIyYzUyM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9Jbmpl
Y3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcApAQCAtMTMwLDcgKzEzMCw3IEBAIFJlZlB0cjxXZWJJ
bWFnZT4gSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZTo6cmVuZGVyZWRJbWFnZShTbmFwc2hvdE9w
dGlvbnMgb3B0aW9uCiAgICAgSW50U2l6ZSBiYWNraW5nU3RvcmVTaXplID0gcGFpbnRSZWN0LnNp
emUoKTsKICAgICBiYWNraW5nU3RvcmVTaXplLnNjYWxlKHNjYWxlRmFjdG9yKTsKIAotICAgIFJl
ZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJhY2tpbmdTdG9yZSA9IFNoYXJlYWJsZUJpdG1hcDo6Y3Jl
YXRlU2hhcmVhYmxlKGJhY2tpbmdTdG9yZVNpemUsIFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNB
bHBoYSk7CisgICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gYmFja2luZ1N0b3JlID0gU2hhcmVh
YmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoYmFja2luZ1N0b3JlU2l6ZSwgeyB9KTsKICAgICBp
ZiAoIWJhY2tpbmdTdG9yZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2lu
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBl
UGx1Z2luLmNwcAppbmRleCBhNGQ3ZjFhOTBjYzkwMjkxYTc3MTA5ZDE2ODFmZTI0YmIzMzIwNWI0
Li5jYjk3M2Q3ZjdhZWU1MjMwMGEwYzhiZTVkNmE5ZWFlNGJiMGI3MWIwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2Nh
cGVQbHVnaW4uY3BwCkBAIC03NTQsNyArNzU0LDcgQEAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4g
TmV0c2NhcGVQbHVnaW46OnNuYXBzaG90KCkKICAgICBJbnRTaXplIGJhY2tpbmdTdG9yZVNpemUg
PSBtX3BsdWdpblNpemU7CiAgICAgYmFja2luZ1N0b3JlU2l6ZS5zY2FsZShjb250ZW50c1NjYWxl
RmFjdG9yKCkpOwogCi0gICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gYml0bWFwID0gU2hhcmVh
YmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoYmFja2luZ1N0b3JlU2l6ZSwgU2hhcmVhYmxlQml0
bWFwOjpTdXBwb3J0c0FscGhhKTsKKyAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiaXRtYXAg
PSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShiYWNraW5nU3RvcmVTaXplLCB7IH0p
OwogICAgIGF1dG8gY29udGV4dCA9IGJpdG1hcC0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7CiAK
ICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHJlYWxseSBjYWxsIGFwcGx5RGV2aWNlU2NhbGVGYWN0
b3IgaW5zdGVhZCBvZiBzY2FsZSwgYnV0IHRoYXQgZW5kcyB1cCBjYWxsaW5nIGludG8gV0tTSQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdp
bi5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0K
aW5kZXggZjJmMDgwY2MxOTUzYTkwZjAwYTZjN2IyMTk1ZjEzMDhmZTBmZTFhOS4uOTI3YzhhYzQz
ZDI1ZDZmN2M3Yjg3ODU2NjY2MDdiZDI3M2IzZWJhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCkBAIC0xMjQ2LDcgKzEyNDYsNyBA
QCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBQREZQbHVnaW46OnNuYXBzaG90KCkKICAgICBJbnRT
aXplIGJhY2tpbmdTdG9yZVNpemUgPSBzaXplKCk7CiAgICAgYmFja2luZ1N0b3JlU2l6ZS5zY2Fs
ZShjb250ZW50c1NjYWxlRmFjdG9yKTsKIAotICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJp
dG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGJhY2tpbmdTdG9yZVNpemUs
IFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNBbHBoYSk7CisgICAgUmVmUHRyPFNoYXJlYWJsZUJp
dG1hcD4gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoYmFja2luZ1N0
b3JlU2l6ZSwgeyB9KTsKICAgICBhdXRvIGNvbnRleHQgPSBiaXRtYXAtPmNyZWF0ZUdyYXBoaWNz
Q29udGV4dCgpOwogCiAgICAgY29udGV4dC0+c2NhbGUoRmxvYXRTaXplKGNvbnRlbnRzU2NhbGVG
YWN0b3IsIC1jb250ZW50c1NjYWxlRmFjdG9yKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAKaW5kZXggNmI0ZGRmY2M5OTVkODYxOTNlZDY1
ZmIwZTk5NGFhN2JjMDViN2Y0Zi4uZTY4ZDlkYWZlOWRjYTM0YThiMTQyNmYzZjU2NmVlYTBlNzQ4
ODUzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblBy
b3h5LmNwcApAQCAtMjcwLDcgKzI3MCw3IEBAIHZvaWQgUGx1Z2luUHJveHk6Omdlb21ldHJ5RGlk
Q2hhbmdlKCkKIAogICAgIGlmICh1cGRhdGVCYWNraW5nU3RvcmUoKSkgewogICAgICAgICAvLyBD
cmVhdGUgYSBuZXcgcGx1Zy1pbiBiYWNraW5nIHN0b3JlLgotICAgICAgICBtX3BsdWdpbkJhY2tp
bmdTdG9yZSA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKG1fYmFja2luZ1N0b3Jl
LT5zaXplKCksIFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNBbHBoYSk7CisgICAgICAgIG1fcGx1
Z2luQmFja2luZ1N0b3JlID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUobV9iYWNr
aW5nU3RvcmUtPnNpemUoKSwgeyB9KTsKICAgICAgICAgaWYgKCFtX3BsdWdpbkJhY2tpbmdTdG9y
ZSkKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtNjEzLDcgKzYxMyw3IEBAIGJvb2wgUGx1Z2lu
UHJveHk6OnVwZGF0ZUJhY2tpbmdTdG9yZSgpCiAgICAgICAgIG1fYmFja2luZ1N0b3JlID0gbnVs
bHB0cjsgLy8gR2l2ZSBtYWxsb2MgYSBjaGFuY2UgdG8gcmVjeWNsZSBvdXIgYmFja2luZyBzdG9y
ZS4KICAgICB9CiAKLSAgICBtX2JhY2tpbmdTdG9yZSA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRl
KGJhY2tpbmdTdG9yZVNpemUsIFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNBbHBoYSk7CisgICAg
bV9iYWNraW5nU3RvcmUgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShiYWNraW5nU3RvcmVTaXpl
LCB7IH0pOwogICAgIHJldHVybiAhIW1fYmFja2luZ1N0b3JlOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkRyYWdDbGllbnRH
dGsuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJE
cmFnQ2xpZW50R3RrLmNwcAppbmRleCBhMmJjODRkYThiYjg0Mjk3MTJlN2Y2MDUzMDFhMTJkYmU3
NTY3Y2U4Li40YzNkYjA4N2RiYTVhNjkzOWQwZTVhYzM4MGQyNmUyYzc5NDRjNWNlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkRyYWdD
bGllbnRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9ndGsvV2ViRHJhZ0NsaWVudEd0ay5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgc3RhdGljIFJlZlB0
cjxTaGFyZWFibGVCaXRtYXA+IGNvbnZlcnRDYWlyb1N1cmZhY2VUb1NoYXJlYWJsZUJpdG1hcChj
YWlyb19zdXJmYWMKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBJbnRTaXplIGltYWdl
U2l6ZShjYWlyb19pbWFnZV9zdXJmYWNlX2dldF93aWR0aChzdXJmYWNlKSwgY2Fpcm9faW1hZ2Vf
c3VyZmFjZV9nZXRfaGVpZ2h0KHN1cmZhY2UpKTsKLSAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFw
PiBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShpbWFnZVNpemUsIFNo
YXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNBbHBoYSk7CisgICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1h
cD4gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoaW1hZ2VTaXplLCB7
IH0pOwogICAgIGF1dG8gZ3JhcGhpY3NDb250ZXh0ID0gYml0bWFwLT5jcmVhdGVHcmFwaGljc0Nv
bnRleHQoKTsKIAogICAgIGdyYXBoaWNzQ29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmRyYXdT
dXJmYWNlVG9Db250ZXh0KHN1cmZhY2UsIEludFJlY3QoSW50UG9pbnQoKSwgaW1hZ2VTaXplKSwg
SW50UmVjdChJbnRQb2ludCgpLCBpbWFnZVNpemUpLCAqZ3JhcGhpY3NDb250ZXh0KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJh
Z0NsaWVudE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9t
YWMvV2ViRHJhZ0NsaWVudE1hYy5tbQppbmRleCBiMGNlZTIxYTg4MTEyNDA5ZjQyMmE2YTc3ZjYw
Y2Y1NTVkZmViMDNmLi5iMDNmNWY0Y2ViMjFhODQ3MWM0NDdmNWVjZWZjYjM1NzY1YjVjMTRmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dl
YkRyYWdDbGllbnRNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCkBAIC00MSw3ICs0MSw3IEBACiAjaW1wb3J0
IDxXZWJDb3JlL0ZyYW1lLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lRGVzdHJ1Y3Rpb25PYnNl
cnZlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZVZpZXcuaD4KLSNpbXBvcnQgPFdlYkNvcmUv
R3JhcGhpY3NDb250ZXh0Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dENHLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL0xlZ2FjeVdlYkFyY2hpdmUuaD4KICNpbXBvcnQgPFdlYkNvcmUv
TWFpbkZyYW1lLmg+CiAjaW1wb3J0IDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CkBAIC02Nywx
MiArNjcsOSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RhdGljIFJlZlB0cjxTaGFyZWFibGVC
aXRtYXA+IGNvbnZlcnRJbWFnZVRvQml0bWFwKE5TSW1hZ2UgKmltYWdlLCBjb25zdCBJbnRTaXpl
JiBzaXplLCBGcmFtZSYgZnJhbWUpCiB7Ci0gICAgU2hhcmVhYmxlQml0bWFwOjpGbGFncyBmbGFn
cyA9IFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNBbHBoYTsKLSNpZiBfX01BQ19PU19YX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEID49IDEwMTIwMAotICAgIGlmIChzY3JlZW5TdXBwb3J0c0V4dGVuZGVk
Q29sb3IoZnJhbWUubWFpbkZyYW1lKCkudmlldygpKSkKLSAgICAgICAgZmxhZ3MgfD0gU2hhcmVh
YmxlQml0bWFwOjpTdXBwb3J0c0V4dGVuZGVkQ29sb3I7Ci0jZW5kaWYKLSAgICBhdXRvIGJpdG1h
cCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKHNpemUsIGZsYWdzKTsKKyAgICBT
aGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb24gYml0bWFwQ29uZmlndXJhdGlvbjsKKyAgICBi
aXRtYXBDb25maWd1cmF0aW9uLmNvbG9yU3BhY2UuY2dDb2xvclNwYWNlID0gc2NyZWVuQ29sb3JT
cGFjZShmcmFtZS5tYWluRnJhbWUoKS52aWV3KCkpOworICAgIGF1dG8gYml0bWFwID0gU2hhcmVh
YmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoc2l6ZSwgYml0bWFwQ29uZmlndXJhdGlvbik7CiAg
ICAgaWYgKCFiaXRtYXApCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC0xOTUsNyArMTky
LDkgQEAgdm9pZCBXZWJEcmFnQ2xpZW50OjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgRWxlbWUKIAogc3RhdGljIFJlZlB0cjxTaGFyZWFibGVC
aXRtYXA+IGNvbnZlcnRDR0ltYWdlVG9CaXRtYXAoQ0dJbWFnZVJlZiBpbWFnZSwgY29uc3QgSW50
U2l6ZSYgc2l6ZSwgRnJhbWUmIGZyYW1lKQogewotICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxl
Qml0bWFwOjpjcmVhdGVTaGFyZWFibGUoc2l6ZSwgU2hhcmVhYmxlQml0bWFwOjpTdXBwb3J0c0Fs
cGhhIHwgU2hhcmVhYmxlQml0bWFwOjpTdXBwb3J0c0V4dGVuZGVkQ29sb3IpOworICAgIFNoYXJl
YWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbiBiaXRtYXBDb25maWd1cmF0aW9uOworICAgIGJpdG1h
cENvbmZpZ3VyYXRpb24uY29sb3JTcGFjZS5jZ0NvbG9yU3BhY2UgPSBzY3JlZW5Db2xvclNwYWNl
KGZyYW1lLm1haW5GcmFtZSgpLnZpZXcoKSk7CisgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVC
aXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShzaXplLCBiaXRtYXBDb25maWd1cmF0aW9uKTsKICAgICBp
ZiAoIWJpdG1hcCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhSW1wbC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYUltcGwuY3BwCmluZGV4IDAzMTUy
MjgwYmY2ZTAzMmY0OTdiY2I1MmYxZGRiNmMxNGNiNzQ5NTkuLjcwZGJmNTU3NGM1ZjUyYjI3YTM5
YjRkODBmMDg1YTQ0OTFhMzJmZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL0RyYXdpbmdBcmVhSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWFJbXBsLmNwcApAQCAtNDE2LDcgKzQxNiw3IEBAIHZvaWQg
RHJhd2luZ0FyZWFJbXBsOjpkaXNwbGF5KFVwZGF0ZUluZm8mIHVwZGF0ZUluZm8pCiAgICAgSW50
U2l6ZSBiaXRtYXBTaXplID0gYm91bmRzLnNpemUoKTsKICAgICBmbG9hdCBkZXZpY2VTY2FsZUZh
Y3RvciA9IG1fd2ViUGFnZS5jb3JlUGFnZSgpLT5kZXZpY2VTY2FsZUZhY3RvcigpOwogICAgIGJp
dG1hcFNpemUuc2NhbGUoZGV2aWNlU2NhbGVGYWN0b3IpOwotICAgIFJlZlB0cjxTaGFyZWFibGVC
aXRtYXA+IGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGJpdG1hcFNp
emUsIFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNBbHBoYSk7CisgICAgUmVmUHRyPFNoYXJlYWJs
ZUJpdG1hcD4gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoYml0bWFw
U2l6ZSwgeyB9KTsKICAgICBpZiAoIWJpdG1hcCkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKaW5kZXggMjJhYmMyMDg4
N2M5MGQwNTUyZjRlM2M5ZDZmYTM0NzNiYWE2N2U2Ni4uOWRkYjhlYmVlMmRjZDI2MjRiZTlkZjlj
MWQ0ZmJiMzVkODI5NDFlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkZyYW1lLmNwcApAQCAtODI0LDcgKzgyNCw3IEBAIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+
IFdlYkZyYW1lOjpjcmVhdGVTZWxlY3Rpb25TbmFwc2hvdCgpIGNvbnN0CiAgICAgaWYgKCFzbmFw
c2hvdCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIHNoYXJlZFNuYXBzaG90
ID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoc25hcHNob3QtPmludGVybmFsU2l6
ZSgpLCBTaGFyZWFibGVCaXRtYXA6OlN1cHBvcnRzQWxwaGEpOworICAgIGF1dG8gc2hhcmVkU25h
cHNob3QgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShzbmFwc2hvdC0+aW50ZXJu
YWxTaXplKCksIHsgfSk7CiAgICAgaWYgKCFzaGFyZWRTbmFwc2hvdCkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAKaW5kZXggYTBhN2I3MzUyYjI0NzE4NWI4M2Q4N2UyYzBhNjczNTIyYzY0NmY1My4uNWEzNjhl
MWE1ZDQ3ZDI0MzYzMWYwYTRmMzBjZDIwOTE1NWQxMTJhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTE5ODksNiArMTk4OSwxNiBAQCBzdGF0
aWMgdm9pZCBwYWludFNuYXBzaG90QXRTaXplKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IElu
dFNpemUmIGJpdG1hcFNpemUsCiAgICAgfQogfQogCitzdGF0aWMgU2hhcmVhYmxlQml0bWFwOjpD
b25maWd1cmF0aW9uIHNuYXBzaG90T3B0aW9uc1RvQml0bWFwQ29uZmlndXJhdGlvbihTbmFwc2hv
dE9wdGlvbnMgb3B0aW9ucywgV2ViUGFnZSYgcGFnZSkKK3sKKyAgICBTaGFyZWFibGVCaXRtYXA6
OkNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbjsKKyNpZiBVU0UoQ0cpCisgICAgaWYgKG9wdGlv
bnMgJiBTbmFwc2hvdE9wdGlvbnNVc2VTY3JlZW5Db2xvclNwYWNlKQorICAgICAgICBjb25maWd1
cmF0aW9uLmNvbG9yU3BhY2UuY2dDb2xvclNwYWNlID0gc2NyZWVuQ29sb3JTcGFjZShwYWdlLmNv
cmVQYWdlKCktPm1haW5GcmFtZSgpLnZpZXcoKSk7CisjZW5kaWYKKyAgICByZXR1cm4gY29uZmln
dXJhdGlvbjsKK30KKwogUmVmUHRyPFdlYkltYWdlPiBXZWJQYWdlOjpzbmFwc2hvdEF0U2l6ZShj
b25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbnRTaXplJiBiaXRtYXBTaXplLCBTbmFwc2hvdE9w
dGlvbnMgb3B0aW9ucykKIHsKICAgICBGcmFtZSogY29yZUZyYW1lID0gbV9tYWluRnJhbWUtPmNv
cmVGcmFtZSgpOwpAQCAtMTk5OSw3ICsyMDA5LDkgQEAgUmVmUHRyPFdlYkltYWdlPiBXZWJQYWdl
OjpzbmFwc2hvdEF0U2l6ZShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbnRTaXplJiBiaXQK
ICAgICBpZiAoIWZyYW1lVmlldykKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRv
IHNuYXBzaG90ID0gV2ViSW1hZ2U6OmNyZWF0ZShiaXRtYXBTaXplLCBzbmFwc2hvdE9wdGlvbnNU
b0ltYWdlT3B0aW9ucyhvcHRpb25zKSk7CisgICAgYXV0byBzbmFwc2hvdCA9IFdlYkltYWdlOjpj
cmVhdGUoYml0bWFwU2l6ZSwgc25hcHNob3RPcHRpb25zVG9JbWFnZU9wdGlvbnMob3B0aW9ucyks
IHNuYXBzaG90T3B0aW9uc1RvQml0bWFwQ29uZmlndXJhdGlvbihvcHRpb25zLCAqdGhpcykpOwor
ICAgIGlmICghc25hcHNob3QpCisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGF1dG8gZ3Jh
cGhpY3NDb250ZXh0ID0gc25hcHNob3QtPmJpdG1hcCgpLmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgp
OwogCiAgICAgcGFpbnRTbmFwc2hvdEF0U2l6ZShyZWN0LCBiaXRtYXBTaXplLCBvcHRpb25zLCAq
Y29yZUZyYW1lLCAqZnJhbWVWaWV3LCAqZ3JhcGhpY3NDb250ZXh0KTsKQEAgLTIwNjYsOCArMjA3
OCw5IEBAIFJlZlB0cjxXZWJJbWFnZT4gV2ViUGFnZTo6c25hcHNob3ROb2RlKFdlYkNvcmU6Ok5v
ZGUmIG5vZGUsIFNuYXBzaG90T3B0aW9ucyBvcHRpCiAgICAgICAgIHNuYXBzaG90U2l6ZSA9IElu
dFNpemUoc25hcHNob3RTaXplLndpZHRoKCkgKiBzY2FsZUZhY3RvciwgbWF4aW11bUhlaWdodCk7
CiAgICAgfQogCi0gICAgYXV0byBzbmFwc2hvdCA9IFdlYkltYWdlOjpjcmVhdGUoc25hcHNob3RT
aXplLCBzbmFwc2hvdE9wdGlvbnNUb0ltYWdlT3B0aW9ucyhvcHRpb25zKSk7Ci0KKyAgICBhdXRv
IHNuYXBzaG90ID0gV2ViSW1hZ2U6OmNyZWF0ZShzbmFwc2hvdFNpemUsIHNuYXBzaG90T3B0aW9u
c1RvSW1hZ2VPcHRpb25zKG9wdGlvbnMpLCBzbmFwc2hvdE9wdGlvbnNUb0JpdG1hcENvbmZpZ3Vy
YXRpb24ob3B0aW9ucywgKnRoaXMpKTsKKyAgICBpZiAoIXNuYXBzaG90KQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICBhdXRvIGdyYXBoaWNzQ29udGV4dCA9IHNuYXBzaG90LT5iaXRtYXAo
KS5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKIAogICAgIGlmICghKG9wdGlvbnMgJiBTbmFwc2hv
dE9wdGlvbnNFeGNsdWRlRGV2aWNlU2NhbGVGYWN0b3IpKSB7CkBAIC00NDM0LDcgKzQ0NDcsNyBA
QCB2b2lkIFdlYlBhZ2U6OmRyYXdSZWN0VG9JbWFnZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBQ
cmludEluZm8mIHByaW50SW5mbywgY29ucwogICAgICAgICBBU1NFUlQoY29yZUZyYW1lLT5kb2N1
bWVudCgpLT5wcmludGluZygpKTsKICNlbmRpZgogCi0gICAgICAgIGF1dG8gYml0bWFwID0gU2hh
cmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoaW1hZ2VTaXplLCBTaGFyZWFibGVCaXRtYXA6
OlN1cHBvcnRzQWxwaGEpOworICAgICAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6
Y3JlYXRlU2hhcmVhYmxlKGltYWdlU2l6ZSwgeyB9KTsKICAgICAgICAgaWYgKCFiaXRtYXApIHsK
ICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgcmV0dXJuOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJ
T1MubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5t
bQppbmRleCBmNjQxZTA3ZGQzODgzZjJkYzRkMjYzMjI2NWExMGVmOTAxZjQ1Y2NhLi44Yzg5Y2Yy
YTZiNTA4MjllZWY0Y2ZiYzQyZmNmNTI5NmVlOWYzYzc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtMjUzMyw5ICsyNTMz
LDkgQEAgdm9pZCBXZWJQYWdlOjpnZXRQb3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0IEludGVyYWN0
aW9uSW5mb3JtYXRpb25SZXF1ZXN0JiByZXF1ZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEZsb2F0U2l6ZSBzY2FsZWRTaXplID0gbGFyZ2VzdFJlY3RXaXRoQXNwZWN0UmF0
aW9JbnNpZGVSZWN0KGltYWdlLT5zaXplKCkud2lkdGgoKSAvIGltYWdlLT5zaXplKCkuaGVpZ2h0
KCksIEZsb2F0UmVjdCgwLCAwLCBzY3JlZW5TaXplSW5QaXhlbHMud2lkdGgoKSwgc2NyZWVuU2l6
ZUluUGl4ZWxzLmhlaWdodCgpKSkuc2l6ZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRmxvYXRTaXplIGJpdG1hcFNpemUgPSBzY2FsZWRTaXplLndpZHRoKCkgPCBpbWFn
ZS0+c2l6ZSgpLndpZHRoKCkgPyBzY2FsZWRTaXplIDogaW1hZ2UtPnNpemUoKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBPbmx5IHNlbGVjdCBFeHRlbmRl
ZENvbG9yIG9uIGltYWdlcyBrbm93biB0byBuZWVkIHdpZGUgZ2FtdXQKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFNoYXJlYWJsZUJpdG1hcDo6RmxhZ3MgZmxhZ3MgPSBTaGFy
ZWFibGVCaXRtYXA6OlN1cHBvcnRzQWxwaGE7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmbGFncyB8PSBzY3JlZW5TdXBwb3J0c0V4dGVuZGVkQ29sb3IoKSA/IFNoYXJlYWJs
ZUJpdG1hcDo6U3VwcG9ydHNFeHRlbmRlZENvbG9yIDogMDsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBzaGFyZWRCaXRtYXAg
PSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShJbnRTaXplKGJpdG1hcFNpemUpLCBm
bGFncykpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYXJlYWJsZUJp
dG1hcDo6Q29uZmlndXJhdGlvbiBiaXRtYXBDb25maWd1cmF0aW9uOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYml0bWFwQ29uZmlndXJhdGlvbi5jb2xvclNwYWNlLmNnQ29s
b3JTcGFjZSA9IHNjcmVlbkNvbG9yU3BhY2UobV9wYWdlLT5tYWluRnJhbWUoKS52aWV3KCkpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFJlZlB0cjxTaGFyZWFibGVC
aXRtYXA+IHNoYXJlZEJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKElu
dFNpemUoYml0bWFwU2l6ZSksIGJpdG1hcENvbmZpZ3VyYXRpb24pKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBncmFwaGljc0NvbnRleHQgPSBzaGFyZWRC
aXRtYXAtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd0ltYWdlKCppbWFnZSwgRmxvYXRS
ZWN0KDAsIDAsIGJpdG1hcFNpemUud2lkdGgoKSwgYml0bWFwU2l6ZS5oZWlnaHQoKSkpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm8uaW1hZ2UgPSBzaGFyZWRC
aXRtYXA7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318838</attachid>
            <date>2017-08-22 18:06:14 -0700</date>
            <delta_ts>2017-08-22 18:13:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175858-20170822180613.patch</filename>
            <type>text/plain</type>
            <size>47318</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxMDUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjY1ZWU5YzZmMzM4YTg0
NTdjY2VhOGVmMzkyMmE5ODYxZTZkMzdiMS4uYWE2MDdlMWY2Y2FmZDEzMzIxZTJiNjRiOGJiNzY2
N2UzNzI1MmM4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE3LTA4LTIyICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIF9XS1RodW1ibmFp
bFZpZXcgc2hvdWxkIHVzZSB0aGUgc2NyZWVuIGNvbG9yIHNwYWNlIGluc3RlYWQgb2Ygc1JHQgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1ODU4Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMzkyNTU1OT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtU2NyZWVuLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vaW9zL1BsYXRmb3JtU2NyZWVuSU9TLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6c2NyZWVuQ29sb3JTcGFjZSk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1BsYXRmb3Jt
U2NyZWVuTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6c2NyZWVuQ29sb3JTcGFjZSk6CisgICAg
ICAgIChXZWJDb3JlOjpzY3JlZW5TdXBwb3J0c0V4dGVuZGVkQ29sb3IpOgorICAgICAgICAqIHBs
YXRmb3JtL3dpbi9QbGF0Zm9ybVNjcmVlbldpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzY3Jl
ZW5Db2xvclNwYWNlKToKKyAgICAgICAgQWRkIHNjcmVlbkNvbG9yU3BhY2UsIHdoaWNoIHJldHVy
bnMgdGhlIGFjdGl2ZSBjb2xvciBzcGFjZSBmb3IgdGhlCisgICAgICAgIGdpdmVuIFdpZGdldCdz
IHNjcmVlbi4gT24gV2luZG93cywganVzdCBmYWxsIGJhY2sgdG8gc1JHQiBsaWtlIHdlIHVzdWFs
bHkgZG8uCisKIDIwMTctMDgtMjIgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+
CiAKICAgICAgICAgQ29ycmVjdCBTT1VQIGFuZCBjVVJMIGJ1aWxkcyBhZnRlciByMjIxMDE3Lgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwppbmRleCA2YjdiNWI5MThhOTdmNDhhYzJlZDkxYmQ1ZGNhMWVlNjU4YjYwNDkxLi5iZmY4
ZjdlOTk1ZWM5MDA0MTY1MDQwZjI1MGZiMjMwYzYxYjVjYzQzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDEyMiBAQAorMjAxNy0wOC0yMiAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNv
bT4KKworICAgICAgICBfV0tUaHVtYm5haWxWaWV3IHNob3VsZCB1c2UgdGhlIHNjcmVlbiBjb2xv
ciBzcGFjZSBpbnN0ZWFkIG9mIHNSR0IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE3NTg1OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzM5MjU1NTk+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ3VycmVu
dGx5LCBfV0tUaHVtYm5haWxWaWV3IHVzZXMgc29mdHdhcmUgc25hcHNob3R0aW5nIHZpYQorICAg
ICAgICBXZWJQYWdlJ3MgdGFrZVNuYXBzaG90IGFuZCBmcmllbmRzLCB3aGljaCBhbHdheXMgdXNl
IHNSR0IuCisgICAgICAgIEhvd2V2ZXIsIGl0IGlzIGltbWVkaWF0ZWx5IHByZXNlbnRlZCBpbiBk
aXNwbGF5IHNwYWNlLCB3aGljaAorICAgICAgICBjYXVzZXMgYW4gZXhwZW5zaXZlIGNvbG9yIGNv
bnZlcnNpb24sIHdoaWNoIGNvdWxkIGhhdmUgYmVlbiBhdm9pZGVkCisgICAgICAgIGlmIHRoZSBz
bmFwc2hvdCB3YXMgaW5zdGVhZCBvcmlnaW5hbGx5IHBhaW50ZWQgaW4gZGlzcGxheSBzcGFjZS4K
KworICAgICAgICBUbyBzb2x2ZSB0aGlzLCBhZGQ6CisKKyAgICAgICAgLSBhIG1lY2hhbmlzbSBh
bGxvd2luZyBTaGFyZWFibGVCaXRtYXAgdG8gYmUgY29uc3RydWN0ZWQgd2l0aCBhCisgICAgICAg
ICAgY29uZmlndXJhdGlvbiwgd2hpY2ggY2FuIGluY2x1ZGUgYSBjb2xvciBzcGFjZSBhcyB3ZWxs
IGFzIHRoZQorICAgICAgICAgIGV4aXN0aW5nIGZsYWdzIChmbGlwcGluZyBTdXBwb3J0c0FscGhh
IHRvIGJlIElzT3BhcXVlIGluc3RlYWQKKyAgICAgICAgICBiZWNhdXNlIG1vc3QgY2FsbGVycyB3
YW50IGFscGhhKQorCisgICAgICAgIC0gYSBXZWJJbWFnZSBjb25zdHJ1Y3RvciBhbGxvd2luZyBj
YWxsZXJzIHRvIHBhc3MgYSBTaGFyZWFibGVCaXRtYXAKKyAgICAgICAgICBjb25maWd1cmF0aW9u
IHRocm91Z2gKKworICAgICAgICAtIGEgYml0IGluIFNuYXBzaG90T3B0aW9ucyBmb3IgY2FsbGVy
cyB0byBpbmRpY2F0ZSB0aGF0IHRoZXkKKyAgICAgICAgICB3YW50IHRvIHNuYXBzaG90IGluIHRo
ZSBkaXNwbGF5J3MgY29sb3Igc3BhY2UgKHJlcHVycG9zZWQKKyAgICAgICAgICBmcm9tIHRoZSBF
eHRlbmRlZENvbG9yIGJpdCkKKworICAgICAgICBBbmQgdGhlbiBtYWtlIHVzZSBvZiB0aGF0IGJp
dCBpbiBfV0tUaHVtYm5haWxWaWV3LgorCisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLU2hhcmVk
QVBJQ2FzdC5oOgorICAgICAgICAoV2ViS2l0OjpzbmFwc2hvdE9wdGlvbnNGcm9tSW1hZ2VPcHRp
b25zKToKKyAgICAgICAgUmVtb3ZlIHRoaXMgaW5jb3JyZWN0IGNvbnZlcnNpb24gKFdLSW1hZ2VP
cHRpb25zIGRvZXNuJ3QgaW5jbHVkZQorICAgICAgICBrV0tTbmFwc2hvdE9wdGlvbnNFeHRlbmRl
ZENvbG9yKS4KKworICAgICAgICAoV2ViS2l0Ojp0b1NuYXBzaG90T3B0aW9ucyk6CisgICAgICAg
IFBsdW1iIGtXS1NuYXBzaG90T3B0aW9uc0V4dGVuZGVkQ29sb3IgdG8gV2ViS2l0OjpTbmFwc2hv
dE9wdGlvbnMKKyAgICAgICAgYXMgdGhlICJVc2VTY3JlZW5Db2xvclNwYWNlIi4gTGVhdmUgdGhl
IFNQSSBuYW1lIGludGFjdCBiZWNhdXNlCisgICAgICAgIGl0IGhhcyBjbGllbnRzLCBidXQgdGhl
IGRpZmZlcmVuY2UgaXNuJ3Qgc28gaHVnZSB0aGF0IGl0IHdpbGwgYmUKKyAgICAgICAgYSBwcm9i
bGVtLgorCisgICAgICAgICogU2hhcmVkL0ltYWdlT3B0aW9ucy5oOgorICAgICAgICAoV2ViS2l0
OjpzbmFwc2hvdE9wdGlvbnNUb0ltYWdlT3B0aW9ucyk6CisgICAgICAgIFJlbW92ZSBJbWFnZU9w
dGlvbnNFeHRlbmRlZENvbG9yLCBhbmQgcmVuYW1lCisgICAgICAgIFNuYXBzaG90T3B0aW9uc0V4
dGVuZGVkQ29sb3IgdG8gU25hcHNob3RPcHRpb25zVXNlU2NyZWVuQ29sb3JTcGFjZS4KKworICAg
ICAgICAqIFNoYXJlZC9TaGFyZWFibGVCaXRtYXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFy
ZWFibGVCaXRtYXA6OkhhbmRsZTo6SGFuZGxlKToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxl
Qml0bWFwOjpIYW5kbGU6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJs
ZUJpdG1hcDo6SGFuZGxlOjpkZWNvZGUpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRt
YXA6OkhhbmRsZTo6Y2xlYXIpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OkNv
bmZpZ3VyYXRpb246OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJp
dG1hcDo6Q29uZmlndXJhdGlvbjo6ZGVjb2RlKToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxl
Qml0bWFwOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OmNyZWF0
ZVNoYXJlYWJsZSk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlSGFu
ZGxlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpTaGFyZWFibGVC
aXRtYXApOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OmNhbGN1bGF0ZUJ5dGVz
UGVyUGl4ZWwpOgorICAgICAgICAoV2ViS2l0OjpjYWxjdWxhdGVCeXRlc1BlclBpeGVsKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlQml0bWFwLmg6CisgICAgICAgIChXZWJL
aXQ6OlNoYXJlYWJsZUJpdG1hcDo6bnVtQnl0ZXNGb3JTaXplKToKKyAgICAgICAgKFdlYktpdDo6
U2hhcmVhYmxlQml0bWFwOjpzaXplSW5CeXRlcyBjb25zdCk6CisgICAgICAgICogU2hhcmVkL2Nn
L1NoYXJlYWJsZUJpdG1hcENHLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Y29sb3JTcGFjZSk6Cisg
ICAgICAgIChXZWJLaXQ6OmJpdG1hcEluZm8pOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVC
aXRtYXA6OmNhbGN1bGF0ZUJ5dGVzUGVyUGl4ZWwpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFi
bGVCaXRtYXA6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJl
YWJsZUJpdG1hcDo6Y3JlYXRlQ0dJbWFnZSBjb25zdCk6CisgICAgICAgIFJlbW92ZSBTaGFyZWFi
bGVCaXRtYXAncyBmbGFncyBwYXJhbWV0ZXIsIGFuZCByZXBsYWNlIGl0IHdpdGgKKyAgICAgICAg
YSBjb25maWd1cmF0aW9uIHBhcmFtZXRlci4gQ29uZmlndXJhdGlvbiBpcyBhIHN0cnVjdCB0aGF0
IGN1cnJlbnRseQorICAgICAgICBlbmNvbXBhc3NlcyB0aGUgbmV3bHktZmxpcHBlZCBJc09wYXF1
ZSBiaXQgYW5kIChvbiBDb2NvYSBwbGF0Zm9ybXMpCisgICAgICAgIGEgcGxhdGZvcm0gY29sb3Jz
cGFjZSBvYmplY3QuIENvbXB1dGUgYnl0ZXNQZXJQaXhlbCBkeW5hbWljYWxseQorICAgICAgICBi
YXNlZCBvbiB0aGUgY29sb3JzcGFjZSBhbmQgd2hldGhlciBpdCB1c2VzIGV4dGVuZGVkIGNvbG9y
cyBvciBub3QuCisKKyAgICAgICAgKiBTaGFyZWQvV2ViSW1hZ2UuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJJbWFnZTo6Y3JlYXRlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViSW1hZ2UuaDoKKyAg
ICAgICAgUGFzcyBTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb24gdGhyb3VnaCB0byB0aGUg
U2hhcmVhYmxlQml0bWFwCisgICAgICAgIGNvbnN0cnVjdG9yLCBpZiBwcm92aWRlZC4KKworICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVGh1bWJuYWlsVmlldy5tbToKKyAgICAgICAg
KC1bX1dLVGh1bWJuYWlsVmlldyByZXF1ZXN0U25hcHNob3RdKToKKyAgICAgICAgTWFrZSB1c2Ug
b2YgdGhlIG5ldyBiaXQsIGFuZCB1c2UgdGhlIHNjcmVlbidzIGNvbG9yIHNwYWNlLgorCisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0Ojpz
bmFwc2hvdE9wdGlvbnNUb0JpdG1hcENvbmZpZ3VyYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjpzbmFwc2hvdEF0U2l6ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNuYXBz
aG90Tm9kZSk6CisgICAgICAgIElmIHRoZSBzbmFwc2hvdCBvcHRpb24gdG8gdXNlIHRoZSBkaXNw
bGF5IGNvbG9yIHNwYWNlIGlzIHNldCwKKyAgICAgICAgZmlsbCBpbiB0aGUgY29sb3JTcGFjZSBm
aWVsZCBpbiB0aGUgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uCisgICAgICAgIHdpdGgg
dGhlIHNjcmVlbidzIGNvbG9yIHNwYWNlLgorCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRy
YXdSZWN0VG9JbWFnZSk6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5j
cHA6CisgICAgICAgIChJUEM6OmVuY29kZUltYWdlKToKKyAgICAgICAgKiBTaGFyZWQvQ29udGV4
dE1lbnVDb250ZXh0RGF0YS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNvbnRleHRNZW51Q29udGV4
dERhdGE6OkNvbnRleHRNZW51Q29udGV4dERhdGEpOgorICAgICAgICAqIFNoYXJlZC9tYWMvUmVt
b3RlTGF5ZXJCYWNraW5nU3RvcmUubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFj
a2luZ1N0b3JlOjpzd2FwVG9WYWxpZEZyb250QnVmZmVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZTo6cmVuZGVyZWRJbWFnZSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OnNuYXBzaG90KToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbToKKyAgICAgICAgKFdlYktpdDo6UERG
UGx1Z2luOjpzbmFwc2hvdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblBy
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJveHk6Omdlb21ldHJ5RGlkQ2hhbmdl
KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJveHk6OnVwZGF0ZUJhY2tpbmdTdG9yZSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5t
bToKKyAgICAgICAgKFdlYktpdDo6Y29udmVydEltYWdlVG9CaXRtYXApOgorICAgICAgICAoV2Vi
S2l0Ojpjb252ZXJ0Q0dJbWFnZVRvQml0bWFwKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6Y3JlYXRlU2VsZWN0
aW9uU25hcHNob3QgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2Vi
UGFnZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0UG9zaXRpb25JbmZvcm1h
dGlvbik6CisgICAgICAgIEFkb3B0IFNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbi4gU2lu
Y2UgSXNPcGFxdWUKKyAgICAgICAgZGVmYXVsdHMgdG8gZmFsc2UsIGFsbCBjYWxsZXJzIHdobyBw
cmV2aW91c2x5IGNvbnN0cnVjdGVkCisgICAgICAgIFNoYXJlYWJsZUJpdG1hcCB3aXRoIFN1cHBv
cnRzQWxwaGEgbm93IGRvbid0IGhhdmUgdG8gZG8gYW55dGhpbmcuCisKIDIwMTctMDgtMjIgIE1h
dHQgTGV3aXMgIDxqbGV3aXMzQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xs
aW5nIG91dCByMjIxMDI2LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkv
Y2cvQ29yZUdyYXBoaWNzU1BJLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZy9Db3Jl
R3JhcGhpY3NTUEkuaAppbmRleCBmM2NiZWM0MWM4OTYxNWY4NGRlMzY1NzAwZmNmNzQzYTBmNzdm
NmZlLi43YzI5MWM5MTRkNjlmNTZkODZkYmI0YTg4MWZiMjMxODljNWE1YTVjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaApAQCAtMTg4LDYg
KzE4OCw4IEBAIENHRm9udEFudGlhbGlhc2luZ1N0eWxlIENHQ29udGV4dEdldEZvbnRBbnRpYWxp
YXNpbmdTdHlsZShDR0NvbnRleHRSZWYpOwogdm9pZCBDR0NvbnRleHRTZXRGb250QW50aWFsaWFz
aW5nU3R5bGUoQ0dDb250ZXh0UmVmLCBDR0ZvbnRBbnRpYWxpYXNpbmdTdHlsZSk7CiAKICNpZiAo
UExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTIw
MCkgfHwgUExBVEZPUk0oSU9TKQorYm9vbCBDR0NvbG9yU3BhY2VVc2VzRXh0ZW5kZWRSYW5nZShD
R0NvbG9yU3BhY2VSZWYpOworCiB0eXBlZGVmIHN0cnVjdCBDR1BERkFubm90YXRpb24gKkNHUERG
QW5ub3RhdGlvblJlZjsKIHR5cGVkZWYgYm9vbCAoXkNHUERGQW5ub3RhdGlvbkRyYXdDYWxsYmFj
a1R5cGUpKENHQ29udGV4dFJlZiBjb250ZXh0LCBDR1BERlBhZ2VSZWYgcGFnZSwgQ0dQREZBbm5v
dGF0aW9uUmVmIGFubm90YXRpb24pOwogdm9pZCBDR0NvbnRleHREcmF3UERGUGFnZVdpdGhBbm5v
dGF0aW9ucyhDR0NvbnRleHRSZWYsIENHUERGUGFnZVJlZiwgQ0dQREZBbm5vdGF0aW9uRHJhd0Nh
bGxiYWNrVHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9y
bVNjcmVlbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TY3JlZW4uaAppbmRl
eCBlMjhmZjE5OTUwZGRhNTRlMDkwNmQ5ODBhYmM0NTJhYjM3MjI2MWRiLi5hZWM3NGJiMTU4OWJl
OTIwMGExZjU4MTRlMjA3NzZlNTY1NGJiYWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QbGF0Zm9ybVNjcmVlbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bs
YXRmb3JtU2NyZWVuLmgKQEAgLTQxLDYgKzQxLDEwIEBAIHR5cGVkZWYgc3RydWN0IF9OU1BvaW50
IE5TUG9pbnQ7CiBPQkpDX0NMQVNTIFVJU2NyZWVuOwogI2VuZGlmCiAKKyNpZiBVU0UoQ0cpCit0
eXBlZGVmIHN0cnVjdCBDR0NvbG9yU3BhY2UgKkNHQ29sb3JTcGFjZVJlZjsKKyNlbmRpZgorCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZsb2F0UmVjdDsKQEAgLTYwLDYgKzY0LDEwIEBA
IEZsb2F0UmVjdCBzY3JlZW5BdmFpbGFibGVSZWN0KFdpZGdldCopOwogCiBXRUJDT1JFX0VYUE9S
VCBib29sIHNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xvcihXaWRnZXQqID0gbnVsbHB0cik7CiAK
KyNpZiBVU0UoQ0cpCitXRUJDT1JFX0VYUE9SVCBDR0NvbG9yU3BhY2VSZWYgc2NyZWVuQ29sb3JT
cGFjZShXaWRnZXQqID0gbnVsbHB0cik7CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKE1BQykKIAog
TlNTY3JlZW4gKnNjcmVlbihOU1dpbmRvdyAqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVNjcmVlbklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9QbGF0Zm9ybVNjcmVlbklPUy5tbQppbmRleCA4MDhlZDk3ZDI3NGVlOGNhOWM0ZTBm
MGVmZDBkYzMwZmZiZGM2MmQyLi4yMTJhNmU4ZmM5MGQzOTllZTJlMjU4NzkzZDY4YmM2NWE1MGNh
NjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1TY3Jl
ZW5JT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtU2NyZWVu
SU9TLm1tCkBAIC0zMCw2ICszMCw3IEBACiAjaW1wb3J0ICJGbG9hdFJlY3QuaCIKICNpbXBvcnQg
IkZsb2F0U2l6ZS5oIgogI2ltcG9ydCAiRnJhbWVWaWV3LmgiCisjaW1wb3J0ICJHcmFwaGljc0Nv
bnRleHRDRy5oIgogI2ltcG9ydCAiSG9zdFdpbmRvdy5oIgogI2ltcG9ydCAiSW50UmVjdC5oIgog
I2ltcG9ydCAiV0FLV2luZG93LmgiCkBAIC03NCw2ICs3NSwxMSBAQCBib29sIHNjcmVlblN1cHBv
cnRzRXh0ZW5kZWRDb2xvcihXaWRnZXQqKQogICAgIHJldHVybiBNR0dldEJvb2xBbnN3ZXIoa01H
UUhhc0V4dGVuZGVkQ29sb3JEaXNwbGF5KTsKIH0KIAorQ0dDb2xvclNwYWNlUmVmIHNjcmVlbkNv
bG9yU3BhY2UoV2lkZ2V0KiB3aWRnZXQpCit7CisgICAgcmV0dXJuIHNjcmVlblN1cHBvcnRzRXh0
ZW5kZWRDb2xvcih3aWRnZXQpID8gZXh0ZW5kZWRTUkdCQ29sb3JTcGFjZVJlZigpIDogc1JHQkNv
bG9yU3BhY2VSZWYoKTsKK30KKwogLy8gVGhlc2UgZnVuY3Rpb25zIHNjYWxlIGJldHdlZW4gc2Ny
ZWVuIGFuZCBwYWdlIGNvb3JkaW5hdGVzIGJlY2F1c2UgSmF2YVNjcmlwdC9ET00gb3BlcmF0aW9u
cwogLy8gYXNzdW1lIHRoYXQgdGhlIHNjcmVlbiBhbmQgdGhlIHBhZ2Ugc2hhcmUgdGhlIHNhbWUg
Y29vcmRpbmF0ZSBzeXN0ZW0uCiBGbG9hdFJlY3Qgc2NyZWVuUmVjdChXaWRnZXQqIHdpZGdldCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVNjcmVlbk1h
Yy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVNjcmVlbk1hYy5tbQpp
bmRleCAwZjkxNzJhZTU5NDU5MzlmMTg0NGZjZDE5MWNhNTZkZmZkODgyODU5Li5mMGY2NzFiNThl
ZGI4YzY4NjI2MDUzMTBjMjI5YTc5NGUzMjk2M2QzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1TY3JlZW5NYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1BsYXRmb3JtU2NyZWVuTWFjLm1tCkBAIC0xMzQsNiArMTM0LDExIEBAIE5T
U2NyZWVuICpzY3JlZW4oUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKQogICAgIHJldHVybiBm
aXJzdFNjcmVlbigpOwogfQogCitDR0NvbG9yU3BhY2VSZWYgc2NyZWVuQ29sb3JTcGFjZShXaWRn
ZXQqIHdpZGdldCkKK3sKKyAgICByZXR1cm4gc2NyZWVuKHdpZGdldCkuY29sb3JTcGFjZS5DR0Nv
bG9yU3BhY2U7Cit9CisKIGJvb2wgc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yKFdpZGdldCog
d2lkZ2V0KQogewogICAgIGlmICghd2lkZ2V0KQpAQCAtMTQyLDcgKzE0Nyw3IEBAIGJvb2wgc2Ny
ZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yKFdpZGdldCogd2lkZ2V0KQogI2lmIF9fTUFDX09TX1hf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMjAwCiAgICAgcmV0dXJuIFtzY3JlZW4od2lkZ2V0
KSBjYW5SZXByZXNlbnREaXNwbGF5R2FtdXQ6TlNEaXNwbGF5R2FtdXRQM107CiAjZWxzZQotICAg
IGF1dG8gY29sb3JTcGFjZSA9IHNjcmVlbih3aWRnZXQpLmNvbG9yU3BhY2UuQ0dDb2xvclNwYWNl
OworICAgIGF1dG8gY29sb3JTcGFjZSA9IHNjcmVlbkNvbG9yU3BhY2Uod2lkZ2V0KTsKICAgICBh
dXRvIGljY0RhdGEgPSBhZG9wdENGKENHQ29sb3JTcGFjZUNvcHlJQ0NQcm9maWxlKGNvbG9yU3Bh
Y2UpKTsKICAgICBhdXRvIHByb2ZpbGUgPSBhZG9wdENGKENvbG9yU3luY1Byb2ZpbGVDcmVhdGUo
aWNjRGF0YS5nZXQoKSwgbnVsbHB0cikpOwogICAgIHJldHVybiBwcm9maWxlICYmIENvbG9yU3lu
Y1Byb2ZpbGVJc1dpZGVHYW11dChwcm9maWxlLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3dpbi9QbGF0Zm9ybVNjcmVlbldpbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vUGxhdGZvcm1TY3JlZW5XaW4uY3BwCmluZGV4IDY5YTJlYzU4ZmU0MmM5
MjExMzY3NmU5ZmVlNDQ4Y2YzNmUxZTJlOWEuLjE1ZWIyZGZjYTYyMTE1ZDMyYzJiYWJhZWM3YmJk
YmIxYWQzNDkyMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QbGF0
Zm9ybVNjcmVlbldpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1BsYXRm
b3JtU2NyZWVuV2luLmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkZsb2F0UmVjdC5o
IgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCisjaW5jbHVkZSAi
R3JhcGhpY3NDb250ZXh0Q0cuaCIKICNpbmNsdWRlICJIb3N0V2luZG93LmgiCiAjaW5jbHVkZSAi
SW50UmVjdC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCkBAIC0xMDAsNiArMTAxLDEx
IEBAIEZsb2F0UmVjdCBzY3JlZW5BdmFpbGFibGVSZWN0KFdpZGdldCogd2lkZ2V0KQogICAgIHJl
dHVybiBtb25pdG9ySW5mby5yY1dvcms7CiB9CiAKK0NHQ29sb3JTcGFjZVJlZiBzY3JlZW5Db2xv
clNwYWNlKFdpZGdldCopCit7CisgICAgcmV0dXJuIHNSR0JDb2xvclNwYWNlUmVmKCk7Cit9CisK
IGJvb2wgc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yKFdpZGdldCopCiB7CiAgICAgcmV0dXJu
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tTaGFyZWRB
UElDYXN0LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1NoYXJlZEFQSUNhc3QuaApp
bmRleCBiNDgwOWYzYTE1ZmY4Y2RlNjQyZDFkZDRlNjU5MTcyZDA1MGZlNDYwLi41YjgyZDRkNDRj
NTMzMDlhNzI1N2ViNGExOTFkYWMyZjZkOWMzOThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BUEkvYy9XS1NoYXJlZEFQSUNhc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BUEkvYy9XS1NoYXJlZEFQSUNhc3QuaApAQCAtOTMwLDkgKzkzMCw2IEBAIGlubGluZSBTbmFw
c2hvdE9wdGlvbnMgc25hcHNob3RPcHRpb25zRnJvbUltYWdlT3B0aW9ucyhXS0ltYWdlT3B0aW9u
cyB3a0ltYWdlT3B0CiAKICAgICBpZiAod2tJbWFnZU9wdGlvbnMgJiBrV0tJbWFnZU9wdGlvbnNT
aGFyZWFibGUpCiAgICAgICAgIHNuYXBzaG90T3B0aW9ucyB8PSBTbmFwc2hvdE9wdGlvbnNTaGFy
ZWFibGU7Ci0KLSAgICBpZiAod2tJbWFnZU9wdGlvbnMgJiBrV0tTbmFwc2hvdE9wdGlvbnNFeHRl
bmRlZENvbG9yKQotICAgICAgICBzbmFwc2hvdE9wdGlvbnMgfD0gU25hcHNob3RPcHRpb25zRXh0
ZW5kZWRDb2xvcjsKICAgICAKICAgICByZXR1cm4gc25hcHNob3RPcHRpb25zOwogfQpAQCAtOTU1
LDYgKzk1Miw4IEBAIGlubGluZSBTbmFwc2hvdE9wdGlvbnMgdG9TbmFwc2hvdE9wdGlvbnMoV0tT
bmFwc2hvdE9wdGlvbnMgd2tTbmFwc2hvdE9wdGlvbnMpCiAgICAgICAgIHNuYXBzaG90T3B0aW9u
cyB8PSBTbmFwc2hvdE9wdGlvbnNGb3JjZVdoaXRlVGV4dDsKICAgICBpZiAod2tTbmFwc2hvdE9w
dGlvbnMgJiBrV0tTbmFwc2hvdE9wdGlvbnNQcmludGluZykKICAgICAgICAgc25hcHNob3RPcHRp
b25zIHw9IFNuYXBzaG90T3B0aW9uc1ByaW50aW5nOworICAgIGlmICh3a1NuYXBzaG90T3B0aW9u
cyAmIGtXS1NuYXBzaG90T3B0aW9uc0V4dGVuZGVkQ29sb3IpCisgICAgICAgIHNuYXBzaG90T3B0
aW9ucyB8PSBTbmFwc2hvdE9wdGlvbnNVc2VTY3JlZW5Db2xvclNwYWNlOwogCiAgICAgcmV0dXJu
IHNuYXBzaG90T3B0aW9uczsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nv
bnRleHRNZW51Q29udGV4dERhdGEuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29udGV4dE1l
bnVDb250ZXh0RGF0YS5jcHAKaW5kZXggMzliZGIzMmUxZDFhMWQxOTUwN2VmODVmYjI4ZjI2MTFi
OWI5NjM5Yi4uNzkyMjA4OGI5NmVmNTRiNzNlNDc2NDAzN2VjMjY4MzAzNzhkMDA1ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29udGV4dE1lbnVDb250ZXh0RGF0YS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29udGV4dE1lbnVDb250ZXh0RGF0YS5jcHAKQEAgLTY0
LDggKzY0LDggQEAgQ29udGV4dE1lbnVDb250ZXh0RGF0YTo6Q29udGV4dE1lbnVDb250ZXh0RGF0
YShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgbWVudUxvY2EKICAgICBpZiAoIWltYWdlKQogICAg
ICAgICByZXR1cm47CiAKLSAgICAvLyBGSVhNRTogZmlndXJlIG91dCB0aGUgcm91bmRpbmcgc3Rh
cnRlZ3kgZm9yIFNoYXJlYWJsZUJpdG1hcC4KLSAgICBtX2NvbnRyb2xsZWRJbWFnZSA9IFNoYXJl
YWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKEludFNpemUoaW1hZ2UtPnNpemUoKSksIFNoYXJl
YWJsZUJpdG1hcDo6U3VwcG9ydHNBbHBoYSk7CisgICAgLy8gRklYTUU6IGZpZ3VyZSBvdXQgdGhl
IHJvdW5kaW5nIHN0cmF0ZWd5IGZvciBTaGFyZWFibGVCaXRtYXAuCisgICAgbV9jb250cm9sbGVk
SW1hZ2UgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShJbnRTaXplKGltYWdlLT5z
aXplKCkpLCB7IH0pOwogICAgIG1fY29udHJvbGxlZEltYWdlLT5jcmVhdGVHcmFwaGljc0NvbnRl
eHQoKS0+ZHJhd0ltYWdlKCppbWFnZSwgSW50UG9pbnQoKSk7CiAjZW5kaWYKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0ltYWdlT3B0aW9ucy5oIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvSW1hZ2VPcHRpb25zLmgKaW5kZXggYzMwYWYwMjljMjIyYzFiYmIzMWM0ODJjNGFmM2E1
M2Y1YmMyODAzNy4uOTE4MjE5NmVjZGJmMjBhM2EyYzliYTZmMmUyZTdjZjQ2ZTA0ODc1OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvSW1hZ2VPcHRpb25zLmgKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvSW1hZ2VPcHRpb25zLmgKQEAgLTMwLDcgKzMwLDYgQEAgbmFtZXNwYWNl
IFdlYktpdCB7CiAKIGVudW0gSW1hZ2VPcHRpb25zIHsKICAgICBJbWFnZU9wdGlvbnNTaGFyZWFi
bGUgPSAxIDw8IDAsCi0gICAgSW1hZ2VPcHRpb25zRXh0ZW5kZWRDb2xvciA9IDEgPDwgMSwKIH07
CiAKIGVudW0gewpAQCAtNDIsMjEgKzQxLDE2IEBAIGVudW0gewogICAgIFNuYXBzaG90T3B0aW9u
c0ZvcmNlQmxhY2tUZXh0ID0gMSA8PCA2LAogICAgIFNuYXBzaG90T3B0aW9uc0ZvcmNlV2hpdGVU
ZXh0ID0gMSA8PCA3LAogICAgIFNuYXBzaG90T3B0aW9uc1ByaW50aW5nID0gMSA8PCA4LAotICAg
IFNuYXBzaG90T3B0aW9uc0V4dGVuZGVkQ29sb3IgPSAxIDw8IDksCisgICAgU25hcHNob3RPcHRp
b25zVXNlU2NyZWVuQ29sb3JTcGFjZSA9IDEgPDwgOSwKIH07CiB0eXBlZGVmIHVpbnQzMl90IFNu
YXBzaG90T3B0aW9uczsKIAotCiBpbmxpbmUgSW1hZ2VPcHRpb25zIHNuYXBzaG90T3B0aW9uc1Rv
SW1hZ2VPcHRpb25zKFNuYXBzaG90T3B0aW9ucyBzbmFwc2hvdE9wdGlvbnMpCiB7CiAgICAgdW5z
aWduZWQgaW1hZ2VPcHRpb25zID0gMDsKIAogICAgIGlmIChzbmFwc2hvdE9wdGlvbnMgJiBTbmFw
c2hvdE9wdGlvbnNTaGFyZWFibGUpCiAgICAgICAgIGltYWdlT3B0aW9ucyB8PSBJbWFnZU9wdGlv
bnNTaGFyZWFibGU7Ci0gICAgCi0gICAgaWYgKHNuYXBzaG90T3B0aW9ucyAmIFNuYXBzaG90T3B0
aW9uc0V4dGVuZGVkQ29sb3IpCi0gICAgICAgIGltYWdlT3B0aW9ucyB8PSBJbWFnZU9wdGlvbnNF
eHRlbmRlZENvbG9yOwotICAgIAogCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEltYWdlT3B0aW9u
cz4oaW1hZ2VPcHRpb25zKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1No
YXJlYWJsZUJpdG1hcC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVCaXRtYXAu
Y3BwCmluZGV4IDk5NDJlN2MyNjc1ZDc0MGQwZDFjNTFkMWVjNjNiYzIwZTYwN2EzODYuLjgzYTBl
NjdmMmNmZTE0MDc1MDRjYjdhZjgzMzY5Zjg5ZDMxODczODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvU2hhcmVhYmxlQml0bWFwLmNwcApAQCAtMzMsMTYgKzMzLDggQEAKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKLSAgICAKLXN0YXRpYyB1bnNpZ25lZCBj
YWxjdWxhdGVCeXRlc1BlclBpeGVsKFNoYXJlYWJsZUJpdG1hcDo6RmxhZ3MgZmxhZ3MpCi17Ci0g
ICAgaWYgKGZsYWdzICYgU2hhcmVhYmxlQml0bWFwOjpTdXBwb3J0c0V4dGVuZGVkQ29sb3IpCi0g
ICAgICAgIHJldHVybiA4OyAvLyBmb3IgZXh0ZW5kZWQgY29sb3IsIHdlIGFyZSB1c2luZyBoYWxm
LWZsb2F0IHJlcHJlc2VudGF0aW9ucwotICAgIHJldHVybiA0OwotfQogCiBTaGFyZWFibGVCaXRt
YXA6OkhhbmRsZTo6SGFuZGxlKCkKLSAgICA6IG1fZmxhZ3MoMCkKIHsKIH0KIApAQCAtNTAsNyAr
NDIsNyBAQCB2b2lkIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlOjplbmNvZGUoSVBDOjpFbmNvZGVy
JiBlbmNvZGVyKSBjb25zdAogewogICAgIGVuY29kZXIgPDwgbV9oYW5kbGU7CiAgICAgZW5jb2Rl
ciA8PCBtX3NpemU7Ci0gICAgZW5jb2RlciA8PCBtX2ZsYWdzOworICAgIGVuY29kZXIgPDwgbV9j
b25maWd1cmF0aW9uOwogfQogCiBib29sIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlOjpkZWNvZGUo
SVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBIYW5kbGUmIGhhbmRsZSkKQEAgLTU5LDkgKzUxLDggQEAg
Ym9vbCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2Rl
ciwgSGFuZGxlJiBoYW5kbGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGhhbmRsZS5tX3NpemUpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYg
KCFkZWNvZGVyLmRlY29kZShoYW5kbGUubV9mbGFncykpCisgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShoYW5kbGUubV9jb25maWd1cmF0aW9uKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGhh
bmRsZS5tX2J5dGVzUGVyUGl4ZWwgPSBjYWxjdWxhdGVCeXRlc1BlclBpeGVsKGhhbmRsZS5tX2Zs
YWdzKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNjksMTQgKzYwLDMxIEBAIHZvaWQgU2hh
cmVhYmxlQml0bWFwOjpIYW5kbGU6OmNsZWFyKCkKIHsKICAgICBtX2hhbmRsZS5jbGVhcigpOwog
ICAgIG1fc2l6ZSA9IEludFNpemUoKTsKLSAgICBtX2ZsYWdzID0gRmxhZzo6Tm9GbGFnczsKLSAg
ICBtX2J5dGVzUGVyUGl4ZWwgPSBjYWxjdWxhdGVCeXRlc1BlclBpeGVsKG1fZmxhZ3MpOworICAg
IG1fY29uZmlndXJhdGlvbiA9IHsgfTsKIH0KIAotUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gU2hh
cmVhYmxlQml0bWFwOjpjcmVhdGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgRmxhZ3MgZmxhZ3MpCit2
b2lkIFNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbjo6ZW5jb2RlKElQQzo6RW5jb2RlciYg
ZW5jb2RlcikgY29uc3QKIHsKLSAgICB1bnNpZ25lZCBieXRlc1BlclBpeGVsID0gY2FsY3VsYXRl
Qnl0ZXNQZXJQaXhlbChmbGFncyk7Ci0gICAgYXV0byBudW1CeXRlcyA9IG51bUJ5dGVzRm9yU2l6
ZShzaXplLCBieXRlc1BlclBpeGVsKTsKKyAgICBlbmNvZGVyIDw8IGlzT3BhcXVlOworI2lmIFBM
QVRGT1JNKENPQ09BKQorICAgIGVuY29kZXIgPDwgY29sb3JTcGFjZTsKKyNlbmRpZgorfQorCiti
b29sIFNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbjo6ZGVjb2RlKElQQzo6RGVjb2RlciYg
ZGVjb2RlciwgQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKK3sKKyAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGNvbmZpZ3VyYXRpb24uaXNPcGFxdWUpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjb25maWd1cmF0
aW9uLmNvbG9yU3BhY2UpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gU2hhcmVhYmxlQml0bWFwOjpj
cmVhdGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKQor
eworICAgIGF1dG8gbnVtQnl0ZXMgPSBudW1CeXRlc0ZvclNpemUoc2l6ZSwgY2FsY3VsYXRlQnl0
ZXNQZXJQaXhlbChjb25maWd1cmF0aW9uKSk7CiAgICAgaWYgKG51bUJ5dGVzLmhhc092ZXJmbG93
ZWQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTg0LDEzICs5MiwxMiBAQCBSZWZQ
dHI8U2hhcmVhYmxlQml0bWFwPiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShjb25zdCBJbnRTaXpl
JiBzaXplLCBGbGFncyBmbGFncwogICAgIGlmICghdHJ5RmFzdE1hbGxvYyhudW1CeXRlcy51bnNh
ZmVHZXQoKSkuZ2V0VmFsdWUoZGF0YSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFyZWFibGVCaXRtYXAoc2l6ZSwgZmxhZ3MsIGRhdGEpKTsK
KyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYXJlYWJsZUJpdG1hcChzaXplLCBjb25maWd1cmF0
aW9uLCBkYXRhKSk7CiB9CiAKLVJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IFNoYXJlYWJsZUJpdG1h
cDo6Y3JlYXRlU2hhcmVhYmxlKGNvbnN0IEludFNpemUmIHNpemUsIEZsYWdzIGZsYWdzKQorUmVm
UHRyPFNoYXJlYWJsZUJpdG1hcD4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoY29u
c3QgSW50U2l6ZSYgc2l6ZSwgQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKQogewotICAgIHVu
c2lnbmVkIGJ5dGVzUGVyUGl4ZWwgPSBjYWxjdWxhdGVCeXRlc1BlclBpeGVsKGZsYWdzKTsKLSAg
ICBhdXRvIG51bUJ5dGVzID0gbnVtQnl0ZXNGb3JTaXplKHNpemUsIGJ5dGVzUGVyUGl4ZWwpOwor
ICAgIGF1dG8gbnVtQnl0ZXMgPSBudW1CeXRlc0ZvclNpemUoc2l6ZSwgY2FsY3VsYXRlQnl0ZXNQ
ZXJQaXhlbChjb25maWd1cmF0aW9uKSk7CiAgICAgaWYgKG51bUJ5dGVzLmhhc092ZXJmbG93ZWQo
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTk4LDE1ICsxMDUsMTQgQEAgUmVmUHRy
PFNoYXJlYWJsZUJpdG1hcD4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoY29uc3Qg
SW50U2l6ZSYgc2l6ZSwgRmwKICAgICBpZiAoIXNoYXJlZE1lbW9yeSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYXJlYWJsZUJpdG1hcChzaXpl
LCBmbGFncywgc2hhcmVkTWVtb3J5KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFyZWFi
bGVCaXRtYXAoc2l6ZSwgY29uZmlndXJhdGlvbiwgc2hhcmVkTWVtb3J5KSk7CiB9CiAKLVJlZlB0
cjxTaGFyZWFibGVCaXRtYXA+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGNvbnN0IEludFNpemUm
IHNpemUsIEZsYWdzIGZsYWdzLCBSZWZQdHI8U2hhcmVkTWVtb3J5PiBzaGFyZWRNZW1vcnkpCitS
ZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShjb25zdCBJbnRT
aXplJiBzaXplLCBDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24sIFJlZlB0cjxTaGFyZWRNZW1v
cnk+IHNoYXJlZE1lbW9yeSkKIHsKICAgICBBU1NFUlQoc2hhcmVkTWVtb3J5KTsKIAotICAgIHVu
c2lnbmVkIGJ5dGVzUGVyUGl4ZWwgPSBjYWxjdWxhdGVCeXRlc1BlclBpeGVsKGZsYWdzKTsKLSAg
ICBhdXRvIG51bUJ5dGVzID0gbnVtQnl0ZXNGb3JTaXplKHNpemUsIGJ5dGVzUGVyUGl4ZWwpOwor
ICAgIGF1dG8gbnVtQnl0ZXMgPSBudW1CeXRlc0ZvclNpemUoc2l6ZSwgY2FsY3VsYXRlQnl0ZXNQ
ZXJQaXhlbChjb25maWd1cmF0aW9uKSk7CiAgICAgaWYgKG51bUJ5dGVzLmhhc092ZXJmbG93ZWQo
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgaWYgKHNoYXJlZE1lbW9yeS0+c2l6ZSgp
IDwgbnVtQnl0ZXMudW5zYWZlR2V0KCkpIHsKQEAgLTExNCw3ICsxMjAsNyBAQCBSZWZQdHI8U2hh
cmVhYmxlQml0bWFwPiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShjb25zdCBJbnRTaXplJiBzaXpl
LCBGbGFncyBmbGFncwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgCi0gICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFyZWFibGVCaXRtYXAoc2l6ZSwgZmxhZ3MsIHNoYXJlZE1l
bW9yeSkpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2hhcmVhYmxlQml0bWFwKHNpemUsIGNv
bmZpZ3VyYXRpb24sIHNoYXJlZE1lbW9yeSkpOwogfQogCiBSZWZQdHI8U2hhcmVhYmxlQml0bWFw
PiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShjb25zdCBIYW5kbGUmIGhhbmRsZSwgU2hhcmVkTWVt
b3J5OjpQcm90ZWN0aW9uIHByb3RlY3Rpb24pCkBAIC0xMjQsNyArMTMwLDcgQEAgUmVmUHRyPFNo
YXJlYWJsZUJpdG1hcD4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoY29uc3QgSGFuZGxlJiBoYW5k
bGUsIFNoYXJlZE1lbW8KICAgICBpZiAoIXNoYXJlZE1lbW9yeSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKLSAgICByZXR1cm4gY3JlYXRlKGhhbmRsZS5tX3NpemUsIGhhbmRsZS5tX2ZsYWdz
LCBXVEZNb3ZlKHNoYXJlZE1lbW9yeSkpOworICAgIHJldHVybiBjcmVhdGUoaGFuZGxlLm1fc2l6
ZSwgaGFuZGxlLm1fY29uZmlndXJhdGlvbiwgV1RGTW92ZShzaGFyZWRNZW1vcnkpKTsKIH0KIAog
Ym9vbCBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUhhbmRsZShIYW5kbGUmIGhhbmRsZSwgU2hhcmVk
TWVtb3J5OjpQcm90ZWN0aW9uIHByb3RlY3Rpb24pIGNvbnN0CkBAIC0xMzQsMjYgKzE0MCwyMyBA
QCBib29sIFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlSGFuZGxlKEhhbmRsZSYgaGFuZGxlLCBTaGFy
ZWRNZW1vcnk6OlByb3RlY3Rpb24gcHJvdAogICAgIGlmICghbV9zaGFyZWRNZW1vcnktPmNyZWF0
ZUhhbmRsZShoYW5kbGUubV9oYW5kbGUsIHByb3RlY3Rpb24pKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgaGFuZGxlLm1fc2l6ZSA9IG1fc2l6ZTsKLSAgICBoYW5kbGUubV9mbGFncyA9IG1f
ZmxhZ3M7Ci0gICAgaGFuZGxlLm1fYnl0ZXNQZXJQaXhlbCA9IG1fYnl0ZXNQZXJQaXhlbDsKKyAg
ICBoYW5kbGUubV9jb25maWd1cmF0aW9uID0gbV9jb25maWd1cmF0aW9uOwogICAgIHJldHVybiB0
cnVlOwogfQogCi1TaGFyZWFibGVCaXRtYXA6OlNoYXJlYWJsZUJpdG1hcChjb25zdCBJbnRTaXpl
JiBzaXplLCBGbGFncyBmbGFncywgdm9pZCogZGF0YSkKK1NoYXJlYWJsZUJpdG1hcDo6U2hhcmVh
YmxlQml0bWFwKGNvbnN0IEludFNpemUmIHNpemUsIENvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlv
biwgdm9pZCogZGF0YSkKICAgICA6IG1fc2l6ZShzaXplKQotICAgICwgbV9mbGFncyhmbGFncykK
KyAgICAsIG1fY29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uKQogICAgICwgbV9kYXRhKGRhdGEp
CiB7Ci0gICAgbV9ieXRlc1BlclBpeGVsID0gY2FsY3VsYXRlQnl0ZXNQZXJQaXhlbChmbGFncyk7
CiB9CiAKLVNoYXJlYWJsZUJpdG1hcDo6U2hhcmVhYmxlQml0bWFwKGNvbnN0IEludFNpemUmIHNp
emUsIEZsYWdzIGZsYWdzLCBSZWZQdHI8U2hhcmVkTWVtb3J5PiBzaGFyZWRNZW1vcnkpCitTaGFy
ZWFibGVCaXRtYXA6OlNoYXJlYWJsZUJpdG1hcChjb25zdCBJbnRTaXplJiBzaXplLCBDb25maWd1
cmF0aW9uIGNvbmZpZ3VyYXRpb24sIFJlZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJlZE1lbW9yeSkK
ICAgICA6IG1fc2l6ZShzaXplKQotICAgICwgbV9mbGFncyhmbGFncykKKyAgICAsIG1fY29uZmln
dXJhdGlvbihjb25maWd1cmF0aW9uKQogICAgICwgbV9zaGFyZWRNZW1vcnkoc2hhcmVkTWVtb3J5
KQotICAgICwgbV9kYXRhKDApCisgICAgLCBtX2RhdGEobnVsbHB0cikKIHsKLSAgICBtX2J5dGVz
UGVyUGl4ZWwgPSBjYWxjdWxhdGVCeXRlc1BlclBpeGVsKGZsYWdzKTsKIH0KIAogU2hhcmVhYmxl
Qml0bWFwOjp+U2hhcmVhYmxlQml0bWFwKCkKQEAgLTE3MSw0ICsxNzQsMTEgQEAgdm9pZCogU2hh
cmVhYmxlQml0bWFwOjpkYXRhKCkgY29uc3QKICAgICByZXR1cm4gbV9kYXRhOwogfQogCisjaWYg
IVVTRShDRykKK3Vuc2lnbmVkIFNoYXJlYWJsZUJpdG1hcDo6Y2FsY3VsYXRlQnl0ZXNQZXJQaXhl
bChjb25zdCBDb25maWd1cmF0aW9uJikKK3sKKyAgICByZXR1cm4gNDsKK30KKyNlbmRpZgorCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1No
YXJlYWJsZUJpdG1hcC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmgK
aW5kZXggZGY2YzQ1YzFkMTZhZjZiZGFmMWNlZmE2MzQ0M2IxZTdkYTRhYTQzYi4uZDllMzIzYTZh
OWQ2YzlmNjg2YmNhNGMyMjFlMDA4YmIyM2Y3Njg5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hh
cmVhYmxlQml0bWFwLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
CiAKICNpZiBVU0UoQ0cpCisjaW5jbHVkZSAiQ29sb3JTcGFjZURhdGEuaCIKICNpbmNsdWRlIDx3
dGYvUmV0YWluUHRyLmg+CiAjZW5kaWYKIApAQCAtNDAsMjAgKzQxLDIzIEBACiAjZW5kaWYKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewotICAgIGNsYXNzIEltYWdlOwotICAgIGNsYXNzIEdyYXBoaWNz
Q29udGV4dDsKK2NsYXNzIEltYWdlOworY2xhc3MgR3JhcGhpY3NDb250ZXh0OwogfQogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKICAgICAKIGNsYXNzIFNoYXJlYWJsZUJpdG1hcCA6IHB1YmxpYyBSZWZD
b3VudGVkPFNoYXJlYWJsZUJpdG1hcD4gewogcHVibGljOgotICAgIGVudW0gRmxhZyB7Ci0gICAg
ICAgIE5vRmxhZ3MgPSAwLAotICAgICAgICBTdXBwb3J0c0FscGhhID0gMSA8PCAwLAotICAgICAg
ICBTdXBwb3J0c0V4dGVuZGVkQ29sb3IgPSAxIDw8IDEsCisgICAgc3RydWN0IENvbmZpZ3VyYXRp
b24geworICAgICAgICBib29sIGlzT3BhcXVlIHsgZmFsc2UgfTsKKyNpZiBQTEFURk9STShDT0NP
QSkKKyAgICAgICAgQ29sb3JTcGFjZURhdGEgY29sb3JTcGFjZTsKKyNlbmRpZgorCisgICAgICAg
IHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNvbnN0OworICAgICAgICBzdGF0aWMgYm9vbCBk
ZWNvZGUoSVBDOjpEZWNvZGVyJiwgQ29uZmlndXJhdGlvbiYpOwogICAgIH07Ci0gICAgdHlwZWRl
ZiB1bnNpZ25lZCBGbGFnczsKIAogICAgIGNsYXNzIEhhbmRsZSB7CiAgICAgICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKEhhbmRsZSk7CkBAIC03MiwxOCArNzYsMTcgQEAgcHVibGljOgogCiAgICAg
ICAgIG11dGFibGUgU2hhcmVkTWVtb3J5OjpIYW5kbGUgbV9oYW5kbGU7CiAgICAgICAgIFdlYkNv
cmU6OkludFNpemUgbV9zaXplOwotICAgICAgICBGbGFncyBtX2ZsYWdzOwotICAgICAgICB1bnNp
Z25lZCBtX2J5dGVzUGVyUGl4ZWw7CisgICAgICAgIENvbmZpZ3VyYXRpb24gbV9jb25maWd1cmF0
aW9uOwogICAgIH07CiAKICAgICAvLyBDcmVhdGUgYSBzaGFyZWFibGUgYml0bWFwIHRoYXQgdXNl
cyBtYWxsb2NlZCBtZW1vcnkuCi0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGNy
ZWF0ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgRmxhZ3MpOworICAgIHN0YXRpYyBSZWZQdHI8
U2hhcmVhYmxlQml0bWFwPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIENvbmZpZ3Vy
YXRpb24pOwogCiAgICAgLy8gQ3JlYXRlIGEgc2hhcmVhYmxlIGJpdG1hcCB3aG9zZSBiYWNraW5n
IG1lbW9yeSBjYW4gYmUgc2hhcmVkIHdpdGggYW5vdGhlciBwcm9jZXNzLgotICAgIHN0YXRpYyBS
ZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBjcmVhdGVTaGFyZWFibGUoY29uc3QgV2ViQ29yZTo6SW50
U2l6ZSYsIEZsYWdzKTsKKyAgICBzdGF0aWMgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gY3JlYXRl
U2hhcmVhYmxlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBDb25maWd1cmF0aW9uKTsKIAogICAg
IC8vIENyZWF0ZSBhIHNoYXJlYWJsZSBiaXRtYXAgZnJvbSBhbiBhbHJlYWR5IGV4aXN0aW5nIHNo
YXJlZCBtZW1vcnkgYmxvY2suCi0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGNy
ZWF0ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgRmxhZ3MsIFJlZlB0cjxTaGFyZWRNZW1vcnk+
KTsKKyAgICBzdGF0aWMgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gY3JlYXRlKGNvbnN0IFdlYkNv
cmU6OkludFNpemUmLCBDb25maWd1cmF0aW9uLCBSZWZQdHI8U2hhcmVkTWVtb3J5Pik7CiAKICAg
ICAvLyBDcmVhdGUgYSBzaGFyZWFibGUgYml0bWFwIGZyb20gYSBoYW5kbGUuCiAgICAgc3RhdGlj
IFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGNyZWF0ZShjb25zdCBIYW5kbGUmLCBTaGFyZWRNZW1v
cnk6OlByb3RlY3Rpb24gPSBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRXcml0ZSk7CkBA
IC0xMjMsOCArMTI2LDggQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgU2hhcmVh
YmxlQml0bWFwKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBGbGFncywgdm9pZCopOwotICAgIFNo
YXJlYWJsZUJpdG1hcChjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgRmxhZ3MsIFJlZlB0cjxTaGFy
ZWRNZW1vcnk+KTsKKyAgICBTaGFyZWFibGVCaXRtYXAoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYs
IENvbmZpZ3VyYXRpb24sIHZvaWQqKTsKKyAgICBTaGFyZWFibGVCaXRtYXAoY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYsIENvbmZpZ3VyYXRpb24sIFJlZlB0cjxTaGFyZWRNZW1vcnk+KTsKIAogI2lm
IFVTRShDQUlSTykKICAgICBzdGF0aWMgQ2hlY2tlZDx1bnNpZ25lZCwgUmVjb3JkT3ZlcmZsb3c+
IG51bUJ5dGVzRm9yU2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJik7CkBAIC0xNDcsMTIgKzE1
MCwxNCBAQCBwcml2YXRlOgogI2lmIFVTRShDQUlSTykKICAgICBzaXplX3Qgc2l6ZUluQnl0ZXMo
KSBjb25zdCB7IHJldHVybiBudW1CeXRlc0ZvclNpemUobV9zaXplKS51bnNhZmVHZXQoKTsgfQog
I2Vsc2UKLSAgICBzaXplX3Qgc2l6ZUluQnl0ZXMoKSBjb25zdCB7IHJldHVybiBudW1CeXRlc0Zv
clNpemUobV9zaXplLCBtX2J5dGVzUGVyUGl4ZWwpLnVuc2FmZUdldCgpOyB9CisgICAgc2l6ZV90
IHNpemVJbkJ5dGVzKCkgY29uc3QgeyByZXR1cm4gbnVtQnl0ZXNGb3JTaXplKG1fc2l6ZSwgY2Fs
Y3VsYXRlQnl0ZXNQZXJQaXhlbChtX2NvbmZpZ3VyYXRpb24pKS51bnNhZmVHZXQoKTsgfQogI2Vu
ZGlmCi0gICAgCisKKyAgICBzdGF0aWMgdW5zaWduZWQgY2FsY3VsYXRlQnl0ZXNQZXJQaXhlbChj
b25zdCBDb25maWd1cmF0aW9uJik7CisgICAgc2l6ZV90IHNpemVJbkJ5dGVzKCkgY29uc3QgeyBy
ZXR1cm4gbnVtQnl0ZXNGb3JTaXplKG1fc2l6ZSwgY2FsY3VsYXRlQnl0ZXNQZXJQaXhlbChtX2Nv
bmZpZ3VyYXRpb24pKS51bnNhZmVHZXQoKTsgfQorCiAgICAgV2ViQ29yZTo6SW50U2l6ZSBtX3Np
emU7Ci0gICAgRmxhZ3MgbV9mbGFnczsKLSAgICB1bnNpZ25lZCBtX2J5dGVzUGVyUGl4ZWw7Cisg
ICAgQ29uZmlndXJhdGlvbiBtX2NvbmZpZ3VyYXRpb247CiAKICAgICAvLyBJZiB0aGUgc2hhcmVh
YmxlIGJpdG1hcCBpcyBiYWNrZWQgYnkgc2hhcmVkIG1lbW9yeSwgdGhpcyBwb2ludHMgdG8gdGhl
IHNoYXJlZCBtZW1vcnkgb2JqZWN0LgogICAgIFJlZlB0cjxTaGFyZWRNZW1vcnk+IG1fc2hhcmVk
TWVtb3J5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5j
cHAKaW5kZXggMzcxNWJlNDQxNTk0NTQyN2MzMjdiZWZmZjMzMzY1NjlmMTMwN2IwOC4uN2M0OWNl
ODYyOThiNjIxZmVmNjc2YjVlMDY1ODIxMDRkNTRmOGZmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0xMTE5LDcgKzExMTksNyBAQCBi
b29sIEFyZ3VtZW50Q29kZXI8Q3JlZGVudGlhbD46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBD
cmVkZW50aWFsJiBjcmVkZW50aWFsKQogCiBzdGF0aWMgdm9pZCBlbmNvZGVJbWFnZShFbmNvZGVy
JiBlbmNvZGVyLCBJbWFnZSYgaW1hZ2UpCiB7Ci0gICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4g
Yml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoSW50U2l6ZShpbWFnZS5z
aXplKCkpLCBTaGFyZWFibGVCaXRtYXA6OlN1cHBvcnRzQWxwaGEpOworICAgIFJlZlB0cjxTaGFy
ZWFibGVCaXRtYXA+IGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKElu
dFNpemUoaW1hZ2Uuc2l6ZSgpKSwgeyB9KTsKICAgICBiaXRtYXAtPmNyZWF0ZUdyYXBoaWNzQ29u
dGV4dCgpLT5kcmF3SW1hZ2UoaW1hZ2UsIEludFBvaW50KCkpOwogCiAgICAgU2hhcmVhYmxlQml0
bWFwOjpIYW5kbGUgaGFuZGxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
SW1hZ2UuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViSW1hZ2UuY3BwCmluZGV4IDg0YzY5
YzU3ZjAyYTg4ZTkxYWQ1YzU0NjI4NmUzNWVjY2NmZTU3ZTQuLmQ5NDNkYmY0ZDk0ZDUzMjdjN2Rk
MGQ2MTFlOGEwODEzOWJiYjBlOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJJbWFnZS5jcHAKQEAgLTI2
LDI1ICsyNiwyNCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYkltYWdlLmgi
CiAKLSNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIKLQogdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBSZWZQdHI8V2ViSW1hZ2U+IFdlYkltYWdlOjpj
cmVhdGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgSW1hZ2VPcHRpb25zIG9wdGlvbnMpCiB7Ci0gICAg
aW50IHNoYXJhYmxlT3B0aW9ucyA9IFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNBbHBoYTsKLSAg
ICAKLSAgICBpZiAob3B0aW9ucyAmIEltYWdlT3B0aW9uc0V4dGVuZGVkQ29sb3IpCi0gICAgICAg
IHNoYXJhYmxlT3B0aW9ucyB8PSBTaGFyZWFibGVCaXRtYXA6OlN1cHBvcnRzRXh0ZW5kZWRDb2xv
cjsKKyAgICByZXR1cm4gV2ViSW1hZ2U6OmNyZWF0ZShzaXplLCBvcHRpb25zLCB7IH0pOworfQor
CitSZWZQdHI8V2ViSW1hZ2U+IFdlYkltYWdlOjpjcmVhdGUoY29uc3QgV2ViQ29yZTo6SW50U2l6
ZSYgc2l6ZSwgSW1hZ2VPcHRpb25zIG9wdGlvbnMsIGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6Q29u
ZmlndXJhdGlvbiYgYml0bWFwQ29uZmlndXJhdGlvbikKK3sKICAgICBpZiAob3B0aW9ucyAmIElt
YWdlT3B0aW9uc1NoYXJlYWJsZSkgewotICAgICAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJp
dG1hcDo6Y3JlYXRlU2hhcmVhYmxlKHNpemUsIHNoYXJhYmxlT3B0aW9ucyk7CisgICAgICAgIGF1
dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoc2l6ZSwgYml0bWFw
Q29uZmlndXJhdGlvbik7CiAgICAgICAgIGlmICghYml0bWFwKQogICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgICAgIHJldHVybiBXZWJJbWFnZTo6Y3JlYXRlKGJpdG1hcC5yZWxlYXNl
Tm9uTnVsbCgpKTsKICAgICB9Ci0gICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNy
ZWF0ZShzaXplLCBzaGFyYWJsZU9wdGlvbnMpOworICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxl
Qml0bWFwOjpjcmVhdGUoc2l6ZSwgYml0bWFwQ29uZmlndXJhdGlvbik7CiAgICAgaWYgKCFiaXRt
YXApCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHJldHVybiBXZWJJbWFnZTo6Y3JlYXRl
KGJpdG1hcC5yZWxlYXNlTm9uTnVsbCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkltYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJJbWFnZS5oCmluZGV4IDQ1
NzRjOWU0OWVkMTQ0MGIyNTJjNTBiM2NmODI0YTQ5YWFlNTlhNTEuLjIyZjM4NmY5ZDI5YTVkZjU3
NDM4ZmJhYjQ3OGJiZjg2ZmUxY2QxMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkltYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViSW1hZ2UuaApAQCAtMjcs
NiArMjcsNyBAQAogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAiSW1hZ2VPcHRp
b25zLmgiCisjaW5jbHVkZSAiU2hhcmVhYmxlQml0bWFwLmgiCiAjaW5jbHVkZSA8d3RmL1JlZi5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zNSwxMyArMzYsMTIgQEAgY2xhc3MgSW50U2l6
ZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIFNoYXJlYWJsZUJpdG1hcDsKLQogLy8g
V2ViSW1hZ2UgLSBBbiBpbWFnZSB0eXBlIHN1aXRhYmxlIGZvciB2ZW5kaW5nIHRvIGFuIEFQSS4K
IAogY2xhc3MgV2ViSW1hZ2UgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpU
eXBlOjpJbWFnZT4gewogcHVibGljOgogICAgIHN0YXRpYyBSZWZQdHI8V2ViSW1hZ2U+IGNyZWF0
ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgSW1hZ2VPcHRpb25zKTsKKyAgICBzdGF0aWMgUmVm
UHRyPFdlYkltYWdlPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIEltYWdlT3B0aW9u
cywgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uJik7CiAgICAgc3RhdGljIFJl
ZjxXZWJJbWFnZT4gY3JlYXRlKFJlZjxTaGFyZWFibGVCaXRtYXA+JiYpOwogICAgIH5XZWJJbWFn
ZSgpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvY2cvU2hhcmVhYmxl
Qml0bWFwQ0cuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cu
Y3BwCmluZGV4IDlmZTBmYWI1Y2NlNjI1NjQ4MGQ5OGEwYTEwYmQ5YzA2NmY2OTVmYjMuLjllNWEx
NGVmZTM0ZDFhOTQ1MjhmZTMxYmY5OWFmOWM4MGVkMzBhZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5jcHAKQEAgLTI5LDQ4ICsyOSw2MiBAQAogI2lu
Y2x1ZGUgPFdlYkNvcmUvQml0bWFwSW1hZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNz
Q29udGV4dENHLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVNjcmVlbi5oPgorI2luY2x1
ZGUgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0
ci5oPgogI2luY2x1ZGUgIkNHVXRpbGl0aWVzLmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKKyAgICAKK3N0YXRpYyBDR0NvbG9yU3BhY2VSZWYgY29s
b3JTcGFjZShjb25zdCBTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRp
b24pCit7CisgICAgcmV0dXJuIGNvbmZpZ3VyYXRpb24uY29sb3JTcGFjZS5jZ0NvbG9yU3BhY2Uu
Z2V0KCkgPzogc1JHQkNvbG9yU3BhY2VSZWYoKTsKK30KKworc3RhdGljIGJvb2wgd2FudHNFeHRl
bmRlZFJhbmdlKGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbiYgY29uZmlndXJh
dGlvbikKK3sKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDEwMTIwMCkgfHwgUExBVEZPUk0oSU9TKQorICAgIHJldHVybiBDR0NvbG9yU3Bh
Y2VVc2VzRXh0ZW5kZWRSYW5nZShjb2xvclNwYWNlKGNvbmZpZ3VyYXRpb24pKTsKKyNlbHNlCisg
ICAgVU5VU0VEX1BBUkFNKGNvbmZpZ3VyYXRpb24pOworICAgIHJldHVybiBmYWxzZTsKKyNlbmRp
ZgorfQogCi1zdGF0aWMgQ0dCaXRtYXBJbmZvIGJpdG1hcEluZm8oU2hhcmVhYmxlQml0bWFwOjpG
bGFncyBmbGFncykKK3N0YXRpYyBDR0JpdG1hcEluZm8gYml0bWFwSW5mbyhjb25zdCBTaGFyZWFi
bGVCaXRtYXA6OkNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCiB7CiAgICAgQ0dCaXRtYXBJ
bmZvIGluZm8gPSAwOwotICAgIGlmIChmbGFncyAmIFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNF
eHRlbmRlZENvbG9yKSB7CisgICAgaWYgKHdhbnRzRXh0ZW5kZWRSYW5nZShjb25maWd1cmF0aW9u
KSkgewogICAgICAgICBpbmZvIHw9IGtDR0JpdG1hcEZsb2F0Q29tcG9uZW50cyB8IGtDR0JpdG1h
cEJ5dGVPcmRlcjE2SG9zdDsKLSAgICAgICAgCi0gICAgICAgIGlmIChmbGFncyAmIFNoYXJlYWJs
ZUJpdG1hcDo6U3VwcG9ydHNBbHBoYSkKLSAgICAgICAgICAgIGluZm8gfD0ga0NHSW1hZ2VBbHBo
YVByZW11bHRpcGxpZWRMYXN0OwotICAgICAgICBlbHNlCisKKyAgICAgICAgaWYgKGNvbmZpZ3Vy
YXRpb24uaXNPcGFxdWUpCiAgICAgICAgICAgICBpbmZvIHw9IGtDR0ltYWdlQWxwaGFOb25lU2tp
cExhc3Q7Ci0gICAgICAgIAorICAgICAgICBlbHNlCisgICAgICAgICAgICBpbmZvIHw9IGtDR0lt
YWdlQWxwaGFQcmVtdWx0aXBsaWVkTGFzdDsKICAgICB9IGVsc2UgewogICAgICAgICBpbmZvIHw9
IGtDR0JpdG1hcEJ5dGVPcmRlcjMySG9zdDsKLSAgICAgICAgCi0gICAgICAgIGlmIChmbGFncyAm
IFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNBbHBoYSkKLSAgICAgICAgICAgIGluZm8gfD0ga0NH
SW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdDsKLSAgICAgICAgZWxzZQorCisgICAgICAgIGlm
IChjb25maWd1cmF0aW9uLmlzT3BhcXVlKQogICAgICAgICAgICAgaW5mbyB8PSBrQ0dJbWFnZUFs
cGhhTm9uZVNraXBGaXJzdDsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgaW5mbyB8PSBrQ0dJ
bWFnZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0OwogICAgIH0KLSAgICAKKwogICAgIHJldHVybiBp
bmZvOwogfQotICAgIAotc3RhdGljIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlKFNoYXJlYWJs
ZUJpdG1hcDo6RmxhZ3MgZmxhZ3MpCisKK3Vuc2lnbmVkIFNoYXJlYWJsZUJpdG1hcDo6Y2FsY3Vs
YXRlQnl0ZXNQZXJQaXhlbChjb25zdCBDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKQogewot
ICAgIGlmIChmbGFncyAmIFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNFeHRlbmRlZENvbG9yKQot
ICAgICAgICByZXR1cm4gZXh0ZW5kZWRTUkdCQ29sb3JTcGFjZVJlZigpOwotICAgIHJldHVybiBz
UkdCQ29sb3JTcGFjZVJlZigpOworICAgIHJldHVybiB3YW50c0V4dGVuZGVkUmFuZ2UoY29uZmln
dXJhdGlvbikgPyA4IDogNDsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dD4g
U2hhcmVhYmxlQml0bWFwOjpjcmVhdGVHcmFwaGljc0NvbnRleHQoKQogewogICAgIHJlZigpOyAv
LyBCYWxhbmNlZCBieSBkZXJlZiBpbiByZWxlYXNlQml0bWFwQ29udGV4dERhdGEuCi0gICAgCi0g
ICAgUmV0YWluUHRyPENHQ29udGV4dFJlZj4gYml0bWFwQ29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRt
YXBDb250ZXh0Q3JlYXRlV2l0aERhdGEoZGF0YSgpLCBtX3NpemUud2lkdGgoKSwgbV9zaXplLmhl
aWdodCgpLCBtX2J5dGVzUGVyUGl4ZWwgKiA4IC8gNCwgbV9zaXplLndpZHRoKCkgKiBtX2J5dGVz
UGVyUGl4ZWwsIGNvbG9yU3BhY2UobV9mbGFncyksIGJpdG1hcEluZm8obV9mbGFncyksIHJlbGVh
c2VCaXRtYXBDb250ZXh0RGF0YSwgdGhpcykpOworCisgICAgdW5zaWduZWQgYnl0ZXNQZXJQaXhl
bCA9IGNhbGN1bGF0ZUJ5dGVzUGVyUGl4ZWwobV9jb25maWd1cmF0aW9uKTsKKyAgICBSZXRhaW5Q
dHI8Q0dDb250ZXh0UmVmPiBiaXRtYXBDb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRD
cmVhdGVXaXRoRGF0YShkYXRhKCksIG1fc2l6ZS53aWR0aCgpLCBtX3NpemUuaGVpZ2h0KCksIGJ5
dGVzUGVyUGl4ZWwgKiA4IC8gNCwgbV9zaXplLndpZHRoKCkgKiBieXRlc1BlclBpeGVsLCBjb2xv
clNwYWNlKG1fY29uZmlndXJhdGlvbiksIGJpdG1hcEluZm8obV9jb25maWd1cmF0aW9uKSwgcmVs
ZWFzZUJpdG1hcENvbnRleHREYXRhLCB0aGlzKSk7CiAgICAgCiAgICAgQVNTRVJUKGJpdG1hcENv
bnRleHQuZ2V0KCkpOwogCkBAIC0xMDgsNyArMTIyLDggQEAgUmV0YWluUHRyPENHSW1hZ2VSZWY+
IFNoYXJlYWJsZUJpdG1hcDo6bWFrZUNHSW1hZ2UoKQogUmV0YWluUHRyPENHSW1hZ2VSZWY+IFNo
YXJlYWJsZUJpdG1hcDo6Y3JlYXRlQ0dJbWFnZShDR0RhdGFQcm92aWRlclJlZiBkYXRhUHJvdmlk
ZXIpIGNvbnN0CiB7CiAgICAgQVNTRVJUX0FSRyhkYXRhUHJvdmlkZXIsIGRhdGFQcm92aWRlcik7
Ci0gICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGltYWdlID0gYWRvcHRDRihDR0ltYWdlQ3JlYXRl
KG1fc2l6ZS53aWR0aCgpLCBtX3NpemUuaGVpZ2h0KCksIG1fYnl0ZXNQZXJQaXhlbCAqIDggLyA0
LCBtX2J5dGVzUGVyUGl4ZWwgKiA4LCBtX3NpemUud2lkdGgoKSAqIG1fYnl0ZXNQZXJQaXhlbCwg
Y29sb3JTcGFjZShtX2ZsYWdzKSwgYml0bWFwSW5mbyhtX2ZsYWdzKSwgZGF0YVByb3ZpZGVyLCAw
LCBmYWxzZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpOworICAgIHVuc2lnbmVkIGJ5dGVz
UGVyUGl4ZWwgPSBjYWxjdWxhdGVCeXRlc1BlclBpeGVsKG1fY29uZmlndXJhdGlvbik7CisgICAg
UmV0YWluUHRyPENHSW1hZ2VSZWY+IGltYWdlID0gYWRvcHRDRihDR0ltYWdlQ3JlYXRlKG1fc2l6
ZS53aWR0aCgpLCBtX3NpemUuaGVpZ2h0KCksIGJ5dGVzUGVyUGl4ZWwgKiA4IC8gNCwgYnl0ZXNQ
ZXJQaXhlbCAqIDgsIG1fc2l6ZS53aWR0aCgpICogYnl0ZXNQZXJQaXhlbCwgY29sb3JTcGFjZSht
X2NvbmZpZ3VyYXRpb24pLCBiaXRtYXBJbmZvKG1fY29uZmlndXJhdGlvbiksIGRhdGFQcm92aWRl
ciwgMCwgZmFsc2UsIGtDR1JlbmRlcmluZ0ludGVudERlZmF1bHQpKTsKICAgICByZXR1cm4gaW1h
Z2U7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9Bcmd1bWVudENv
ZGVyc0d0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsu
Y3BwCmluZGV4IDM0MjYyNjAyMDAyNmRkZjk3MDFiYTBhYmM3ZjljZTBlMTI0NTkxM2IuLjdkZWM5
Y2U5YjgyZThiNTlmZThiYjNiM2NmNzRiMGRjMDY5MjMxNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcApAQCAtNDIsNyArNDIsNyBAQCBuYW1l
c3BhY2UgSVBDIHsKIAogc3RhdGljIHZvaWQgZW5jb2RlSW1hZ2UoRW5jb2RlciYgZW5jb2Rlciwg
SW1hZ2UmIGltYWdlKQogewotICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJpdG1hcCA9IFNo
YXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKEludFNpemUoaW1hZ2Uuc2l6ZSgpKSwgU2hh
cmVhYmxlQml0bWFwOjpTdXBwb3J0c0FscGhhKTsKKyAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFw
PiBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShJbnRTaXplKGltYWdl
LnNpemUoKSksIHsgfSk7CiAgICAgYml0bWFwLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKS0+ZHJh
d0ltYWdlKGltYWdlLCBJbnRQb2ludCgpKTsKIAogICAgIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxl
IGhhbmRsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9SZW1vdGVMYXll
ckJhY2tpbmdTdG9yZS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9SZW1vdGVMYXllckJh
Y2tpbmdTdG9yZS5tbQppbmRleCA0ZDA5Yjg0NDY2ZWFhZTQ5MzA1YThjMTY4MDQyNTk5OTFhYjcx
NjE5Li4yYTVkMmVjZDFiOTc5MTIzYjUwYzc2YTg1N2RiZWM2OTVhNjVjNWFiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0KKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tCkBA
IC0yMTIsOCArMjEyLDExIEBAIHZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OnN3YXBUb1Zh
bGlkRnJvbnRCdWZmZXIoKQogICAgIEFTU0VSVCghbV9hY2NlbGVyYXRlc0RyYXdpbmcpOwogICAg
IHN0ZDo6c3dhcChtX2Zyb250QnVmZmVyLCBtX2JhY2tCdWZmZXIpOwogCi0gICAgaWYgKCFtX2Zy
b250QnVmZmVyLmJpdG1hcCkKLSAgICAgICAgbV9mcm9udEJ1ZmZlci5iaXRtYXAgPSBTaGFyZWFi
bGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShleHBhbmRlZFNjYWxlZFNpemUsIG1faXNPcGFxdWUg
PyBTaGFyZWFibGVCaXRtYXA6Ok5vRmxhZ3MgOiBTaGFyZWFibGVCaXRtYXA6OlN1cHBvcnRzQWxw
aGEpOworICAgIGlmICghbV9mcm9udEJ1ZmZlci5iaXRtYXApIHsKKyAgICAgICAgU2hhcmVhYmxl
Qml0bWFwOjpDb25maWd1cmF0aW9uIGJpdG1hcENvbmZpZ3VyYXRpb247CisgICAgICAgIGJpdG1h
cENvbmZpZ3VyYXRpb24uaXNPcGFxdWUgPSBtX2lzT3BhcXVlOworICAgICAgICBtX2Zyb250QnVm
ZmVyLmJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGV4cGFuZGVkU2Nh
bGVkU2l6ZSwgYml0bWFwQ29uZmlndXJhdGlvbik7CisgICAgfQogfQogCiBib29sIFJlbW90ZUxh
eWVyQmFja2luZ1N0b3JlOjpkaXNwbGF5KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tUaHVtYm5haWxWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL19XS1RodW1ibmFpbFZpZXcubW0KaW5kZXggODQ0MjgyM2ZlMTdkMjY0
ZWYwODQzYWEwNDcxMzVjYzdkN2ZmZjdiZS4uZWZiNTYzNGEzYzNjMTBiYzg1NWYzMDk3MjU4Y2Ex
NGNiMjk5ZDRiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS1RodW1ibmFpbFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS1RodW1ibmFpbFZpZXcubW0KQEAgLTkyLDcgKzkyLDcgQEAgLSAodm9pZClyZXF1ZXN0
U25hcHNob3QKIAogICAgIFJldGFpblB0cjxfV0tUaHVtYm5haWxWaWV3PiB0aHVtYm5haWxWaWV3
ID0gc2VsZjsKICAgICBJbnRSZWN0IHNuYXBzaG90UmVjdChJbnRQb2ludCgpLCBfd2ViUGFnZVBy
b3h5LT52aWV3U2l6ZSgpIC0gSW50U2l6ZSgwLCBfd2ViUGFnZVByb3h5LT50b3BDb250ZW50SW5z
ZXQoKSkpOwotICAgIFNuYXBzaG90T3B0aW9ucyBvcHRpb25zID0gU25hcHNob3RPcHRpb25zSW5W
aWV3Q29vcmRpbmF0ZXM7CisgICAgU25hcHNob3RPcHRpb25zIG9wdGlvbnMgPSBTbmFwc2hvdE9w
dGlvbnNJblZpZXdDb29yZGluYXRlcyB8IFNuYXBzaG90T3B0aW9uc1VzZVNjcmVlbkNvbG9yU3Bh
Y2U7CiAgICAgSW50U2l6ZSBiaXRtYXBTaXplID0gc25hcHNob3RSZWN0LnNpemUoKTsKICAgICBi
aXRtYXBTaXplLnNjYWxlKF9zY2FsZSAqIF93ZWJQYWdlUHJveHktPmRldmljZVNjYWxlRmFjdG9y
KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcApp
bmRleCBkMWZiYzI1ZDVjMjI3NjA5MTBjMjc0NDk2NWU5NjQzZmNkMjY5ZjJiLi5kNDZjOTJkMGFi
ZjA2ZTQxY2U0NjlmYjc2Yzg5NTA3YjViMmM1MjNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5q
ZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAKQEAgLTEzMCw3ICsxMzAsNyBAQCBSZWZQdHI8V2Vi
SW1hZ2U+IEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OnJlbmRlcmVkSW1hZ2UoU25hcHNob3RP
cHRpb25zIG9wdGlvbgogICAgIEludFNpemUgYmFja2luZ1N0b3JlU2l6ZSA9IHBhaW50UmVjdC5z
aXplKCk7CiAgICAgYmFja2luZ1N0b3JlU2l6ZS5zY2FsZShzY2FsZUZhY3Rvcik7CiAKLSAgICBS
ZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiYWNraW5nU3RvcmUgPSBTaGFyZWFibGVCaXRtYXA6OmNy
ZWF0ZVNoYXJlYWJsZShiYWNraW5nU3RvcmVTaXplLCBTaGFyZWFibGVCaXRtYXA6OlN1cHBvcnRz
QWxwaGEpOworICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJhY2tpbmdTdG9yZSA9IFNoYXJl
YWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGJhY2tpbmdTdG9yZVNpemUsIHsgfSk7CiAgICAg
aWYgKCFiYWNraW5nU3RvcmUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdp
bi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2Fw
ZVBsdWdpbi5jcHAKaW5kZXggYTRkN2YxYTkwY2M5MDI5MWE3NzEwOWQxNjgxZmUyNGJiMzMyMDVi
NC4uY2I5NzNkN2Y3YWVlNTIzMDBhMGM4YmU1ZDZhOWVhZTRiYjBiNzFiMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNj
YXBlUGx1Z2luLmNwcApAQCAtNzU0LDcgKzc1NCw3IEBAIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+
IE5ldHNjYXBlUGx1Z2luOjpzbmFwc2hvdCgpCiAgICAgSW50U2l6ZSBiYWNraW5nU3RvcmVTaXpl
ID0gbV9wbHVnaW5TaXplOwogICAgIGJhY2tpbmdTdG9yZVNpemUuc2NhbGUoY29udGVudHNTY2Fs
ZUZhY3RvcigpKTsKIAotICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJpdG1hcCA9IFNoYXJl
YWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGJhY2tpbmdTdG9yZVNpemUsIFNoYXJlYWJsZUJp
dG1hcDo6U3VwcG9ydHNBbHBoYSk7CisgICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gYml0bWFw
ID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoYmFja2luZ1N0b3JlU2l6ZSwgeyB9
KTsKICAgICBhdXRvIGNvbnRleHQgPSBiaXRtYXAtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOwog
CiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCByZWFsbHkgY2FsbCBhcHBseURldmljZVNjYWxlRmFj
dG9yIGluc3RlYWQgb2Ygc2NhbGUsIGJ1dCB0aGF0IGVuZHMgdXAgY2FsbGluZyBpbnRvIFdLU0kK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVn
aW4ubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1t
CmluZGV4IGYyZjA4MGNjMTk1M2E5MGYwMGE2YzdiMjE5NWYxMzA4ZmUwZmUxYTkuLjkyN2M4YWM0
M2QyNWQ2ZjdjN2I4Nzg1NjY2NjA3YmQyNzNiM2ViYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQpAQCAtMTI0Niw3ICsxMjQ2LDcg
QEAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gUERGUGx1Z2luOjpzbmFwc2hvdCgpCiAgICAgSW50
U2l6ZSBiYWNraW5nU3RvcmVTaXplID0gc2l6ZSgpOwogICAgIGJhY2tpbmdTdG9yZVNpemUuc2Nh
bGUoY29udGVudHNTY2FsZUZhY3Rvcik7CiAKLSAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBi
aXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShiYWNraW5nU3RvcmVTaXpl
LCBTaGFyZWFibGVCaXRtYXA6OlN1cHBvcnRzQWxwaGEpOworICAgIFJlZlB0cjxTaGFyZWFibGVC
aXRtYXA+IGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGJhY2tpbmdT
dG9yZVNpemUsIHsgfSk7CiAgICAgYXV0byBjb250ZXh0ID0gYml0bWFwLT5jcmVhdGVHcmFwaGlj
c0NvbnRleHQoKTsKIAogICAgIGNvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZShjb250ZW50c1NjYWxl
RmFjdG9yLCAtY29udGVudHNTY2FsZUZhY3RvcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwCmluZGV4IDZiNGRkZmNjOTk1ZDg2MTkzZWQ2
NWZiMGU5OTRhYTdiYzA1YjdmNGYuLmU2OGQ5ZGFmZTlkY2EzNGE4YjE0MjZmM2Y1NjZlZWEwZTc0
ODg1MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Q
cm94eS5jcHAKQEAgLTI3MCw3ICsyNzAsNyBAQCB2b2lkIFBsdWdpblByb3h5OjpnZW9tZXRyeURp
ZENoYW5nZSgpCiAKICAgICBpZiAodXBkYXRlQmFja2luZ1N0b3JlKCkpIHsKICAgICAgICAgLy8g
Q3JlYXRlIGEgbmV3IHBsdWctaW4gYmFja2luZyBzdG9yZS4KLSAgICAgICAgbV9wbHVnaW5CYWNr
aW5nU3RvcmUgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShtX2JhY2tpbmdTdG9y
ZS0+c2l6ZSgpLCBTaGFyZWFibGVCaXRtYXA6OlN1cHBvcnRzQWxwaGEpOworICAgICAgICBtX3Bs
dWdpbkJhY2tpbmdTdG9yZSA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKG1fYmFj
a2luZ1N0b3JlLT5zaXplKCksIHsgfSk7CiAgICAgICAgIGlmICghbV9wbHVnaW5CYWNraW5nU3Rv
cmUpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTYxMyw3ICs2MTMsNyBAQCBib29sIFBsdWdp
blByb3h5Ojp1cGRhdGVCYWNraW5nU3RvcmUoKQogICAgICAgICBtX2JhY2tpbmdTdG9yZSA9IG51
bGxwdHI7IC8vIEdpdmUgbWFsbG9jIGEgY2hhbmNlIHRvIHJlY3ljbGUgb3VyIGJhY2tpbmcgc3Rv
cmUuCiAgICAgfQogCi0gICAgbV9iYWNraW5nU3RvcmUgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0
ZShiYWNraW5nU3RvcmVTaXplLCBTaGFyZWFibGVCaXRtYXA6OlN1cHBvcnRzQWxwaGEpOworICAg
IG1fYmFja2luZ1N0b3JlID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoYmFja2luZ1N0b3JlU2l6
ZSwgeyB9KTsKICAgICByZXR1cm4gISFtX2JhY2tpbmdTdG9yZTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJEcmFnQ2xpZW50
R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2Vi
RHJhZ0NsaWVudEd0ay5jcHAKaW5kZXggYTJiYzg0ZGE4YmI4NDI5NzEyZTdmNjA1MzAxYTEyZGJl
NzU2N2NlOC4uNGMzZGIwODdkYmE1YTY5MzlkMGU1YWMzODBkMjZlMmM3OTQ0YzVjZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJEcmFn
Q2xpZW50R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvZ3RrL1dlYkRyYWdDbGllbnRHdGsuY3BwCkBAIC00OSw3ICs0OSw3IEBAIHN0YXRpYyBSZWZQ
dHI8U2hhcmVhYmxlQml0bWFwPiBjb252ZXJ0Q2Fpcm9TdXJmYWNlVG9TaGFyZWFibGVCaXRtYXAo
Y2Fpcm9fc3VyZmFjCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgSW50U2l6ZSBpbWFn
ZVNpemUoY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfd2lkdGgoc3VyZmFjZSksIGNhaXJvX2ltYWdl
X3N1cmZhY2VfZ2V0X2hlaWdodChzdXJmYWNlKSk7Ci0gICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1h
cD4gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoaW1hZ2VTaXplLCBT
aGFyZWFibGVCaXRtYXA6OlN1cHBvcnRzQWxwaGEpOworICAgIFJlZlB0cjxTaGFyZWFibGVCaXRt
YXA+IGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGltYWdlU2l6ZSwg
eyB9KTsKICAgICBhdXRvIGdyYXBoaWNzQ29udGV4dCA9IGJpdG1hcC0+Y3JlYXRlR3JhcGhpY3ND
b250ZXh0KCk7CiAKICAgICBncmFwaGljc0NvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5kcmF3
U3VyZmFjZVRvQ29udGV4dChzdXJmYWNlLCBJbnRSZWN0KEludFBvaW50KCksIGltYWdlU2l6ZSks
IEludFJlY3QoSW50UG9pbnQoKSwgaW1hZ2VTaXplKSwgKmdyYXBoaWNzQ29udGV4dCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRy
YWdDbGllbnRNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
bWFjL1dlYkRyYWdDbGllbnRNYWMubW0KaW5kZXggYjBjZWUyMWE4ODExMjQwOWY0MjJhNmE3N2Y2
MGNmNTU1ZGZlYjAzZi4uYjAzZjVmNGNlYjIxYTg0NzFjNDQ3ZjVlY2VmY2IzNTc2NWI1YzE0ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9X
ZWJEcmFnQ2xpZW50TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQpAQCAtNDEsNyArNDEsNyBAQAogI2ltcG9y
dCA8V2ViQ29yZS9GcmFtZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZURlc3RydWN0aW9uT2Jz
ZXJ2ZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWVWaWV3Lmg+Ci0jaW1wb3J0IDxXZWJDb3Jl
L0dyYXBoaWNzQ29udGV4dC5oPgorI2ltcG9ydCA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRDRy5o
PgogI2ltcG9ydCA8V2ViQ29yZS9MZWdhY3lXZWJBcmNoaXZlLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L01haW5GcmFtZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgpAQCAtNjcs
MTIgKzY3LDkgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHN0YXRpYyBSZWZQdHI8U2hhcmVhYmxl
Qml0bWFwPiBjb252ZXJ0SW1hZ2VUb0JpdG1hcChOU0ltYWdlICppbWFnZSwgY29uc3QgSW50U2l6
ZSYgc2l6ZSwgRnJhbWUmIGZyYW1lKQogewotICAgIFNoYXJlYWJsZUJpdG1hcDo6RmxhZ3MgZmxh
Z3MgPSBTaGFyZWFibGVCaXRtYXA6OlN1cHBvcnRzQWxwaGE7Ci0jaWYgX19NQUNfT1NfWF9WRVJT
SU9OX01JTl9SRVFVSVJFRCA+PSAxMDEyMDAKLSAgICBpZiAoc2NyZWVuU3VwcG9ydHNFeHRlbmRl
ZENvbG9yKGZyYW1lLm1haW5GcmFtZSgpLnZpZXcoKSkpCi0gICAgICAgIGZsYWdzIHw9IFNoYXJl
YWJsZUJpdG1hcDo6U3VwcG9ydHNFeHRlbmRlZENvbG9yOwotI2VuZGlmCi0gICAgYXV0byBiaXRt
YXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShzaXplLCBmbGFncyk7CisgICAg
U2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uIGJpdG1hcENvbmZpZ3VyYXRpb247CisgICAg
Yml0bWFwQ29uZmlndXJhdGlvbi5jb2xvclNwYWNlLmNnQ29sb3JTcGFjZSA9IHNjcmVlbkNvbG9y
U3BhY2UoZnJhbWUubWFpbkZyYW1lKCkudmlldygpKTsKKyAgICBhdXRvIGJpdG1hcCA9IFNoYXJl
YWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKHNpemUsIGJpdG1hcENvbmZpZ3VyYXRpb24pOwog
ICAgIGlmICghYml0bWFwKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtMTk1LDcgKzE5
Miw5IEBAIHZvaWQgV2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIEVsZW1lCiAKIHN0YXRpYyBSZWZQdHI8U2hhcmVhYmxl
Qml0bWFwPiBjb252ZXJ0Q0dJbWFnZVRvQml0bWFwKENHSW1hZ2VSZWYgaW1hZ2UsIGNvbnN0IElu
dFNpemUmIHNpemUsIEZyYW1lJiBmcmFtZSkKIHsKLSAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJs
ZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKHNpemUsIFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNB
bHBoYSB8IFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNFeHRlbmRlZENvbG9yKTsKKyAgICBTaGFy
ZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb24gYml0bWFwQ29uZmlndXJhdGlvbjsKKyAgICBiaXRt
YXBDb25maWd1cmF0aW9uLmNvbG9yU3BhY2UuY2dDb2xvclNwYWNlID0gc2NyZWVuQ29sb3JTcGFj
ZShmcmFtZS5tYWluRnJhbWUoKS52aWV3KCkpOworICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxl
Qml0bWFwOjpjcmVhdGVTaGFyZWFibGUoc2l6ZSwgYml0bWFwQ29uZmlndXJhdGlvbik7CiAgICAg
aWYgKCFiaXRtYXApCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYUltcGwuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWFJbXBsLmNwcAppbmRleCAwMzE1
MjI4MGJmNmUwMzJmNDk3YmNiNTJmMWRkYjZjMTRjYjc0OTU5Li43MGRiZjU1NzRjNWY1MmIyN2Ez
OWI0ZDgwZjA4NWE0NDkxYTMyZmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9EcmF3aW5nQXJlYUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhSW1wbC5jcHAKQEAgLTQxNiw3ICs0MTYsNyBAQCB2b2lk
IERyYXdpbmdBcmVhSW1wbDo6ZGlzcGxheShVcGRhdGVJbmZvJiB1cGRhdGVJbmZvKQogICAgIElu
dFNpemUgYml0bWFwU2l6ZSA9IGJvdW5kcy5zaXplKCk7CiAgICAgZmxvYXQgZGV2aWNlU2NhbGVG
YWN0b3IgPSBtX3dlYlBhZ2UuY29yZVBhZ2UoKS0+ZGV2aWNlU2NhbGVGYWN0b3IoKTsKICAgICBi
aXRtYXBTaXplLnNjYWxlKGRldmljZVNjYWxlRmFjdG9yKTsKLSAgICBSZWZQdHI8U2hhcmVhYmxl
Qml0bWFwPiBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShiaXRtYXBT
aXplLCBTaGFyZWFibGVCaXRtYXA6OlN1cHBvcnRzQWxwaGEpOworICAgIFJlZlB0cjxTaGFyZWFi
bGVCaXRtYXA+IGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGJpdG1h
cFNpemUsIHsgfSk7CiAgICAgaWYgKCFiaXRtYXApCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmluZGV4IDIyYWJjMjA4
ODdjOTBkMDU1MmY0ZTNjOWQ2ZmEzNDczYmFhNjdlNjYuLjlkZGI4ZWJlZTJkY2QyNjI0YmU5ZGY5
YzFkNGZiYjM1ZDgyOTQxZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJGcmFtZS5jcHAKQEAgLTgyNCw3ICs4MjQsNyBAQCBSZWZQdHI8U2hhcmVhYmxlQml0bWFw
PiBXZWJGcmFtZTo6Y3JlYXRlU2VsZWN0aW9uU25hcHNob3QoKSBjb25zdAogICAgIGlmICghc25h
cHNob3QpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byBzaGFyZWRTbmFwc2hv
dCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKHNuYXBzaG90LT5pbnRlcm5hbFNp
emUoKSwgU2hhcmVhYmxlQml0bWFwOjpTdXBwb3J0c0FscGhhKTsKKyAgICBhdXRvIHNoYXJlZFNu
YXBzaG90ID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoc25hcHNob3QtPmludGVy
bmFsU2l6ZSgpLCB7IH0pOwogICAgIGlmICghc2hhcmVkU25hcHNob3QpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCmluZGV4IGEwYTdiNzM1MmIyNDcxODViODNkODdlMmMwYTY3MzUyMmM2NDZmNTMuLjVhMzY4
ZTFhNWQ0N2QyNDM2MzFmMGE0ZjMwY2QyMDkxNTVkMTEyYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0xOTg5LDYgKzE5ODksMTYgQEAgc3Rh
dGljIHZvaWQgcGFpbnRTbmFwc2hvdEF0U2l6ZShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJ
bnRTaXplJiBiaXRtYXBTaXplLAogICAgIH0KIH0KIAorc3RhdGljIFNoYXJlYWJsZUJpdG1hcDo6
Q29uZmlndXJhdGlvbiBzbmFwc2hvdE9wdGlvbnNUb0JpdG1hcENvbmZpZ3VyYXRpb24oU25hcHNo
b3RPcHRpb25zIG9wdGlvbnMsIFdlYlBhZ2UmIHBhZ2UpCit7CisgICAgU2hhcmVhYmxlQml0bWFw
OjpDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb247CisjaWYgVVNFKENHKQorICAgIGlmIChvcHRp
b25zICYgU25hcHNob3RPcHRpb25zVXNlU2NyZWVuQ29sb3JTcGFjZSkKKyAgICAgICAgY29uZmln
dXJhdGlvbi5jb2xvclNwYWNlLmNnQ29sb3JTcGFjZSA9IHNjcmVlbkNvbG9yU3BhY2UocGFnZS5j
b3JlUGFnZSgpLT5tYWluRnJhbWUoKS52aWV3KCkpOworI2VuZGlmCisgICAgcmV0dXJuIGNvbmZp
Z3VyYXRpb247Cit9CisKIFJlZlB0cjxXZWJJbWFnZT4gV2ViUGFnZTo6c25hcHNob3RBdFNpemUo
Y29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW50U2l6ZSYgYml0bWFwU2l6ZSwgU25hcHNob3RP
cHRpb25zIG9wdGlvbnMpCiB7CiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9IG1fbWFpbkZyYW1lLT5j
b3JlRnJhbWUoKTsKQEAgLTE5OTksNyArMjAwOSw5IEBAIFJlZlB0cjxXZWJJbWFnZT4gV2ViUGFn
ZTo6c25hcHNob3RBdFNpemUoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW50U2l6ZSYgYml0
CiAgICAgaWYgKCFmcmFtZVZpZXcpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0
byBzbmFwc2hvdCA9IFdlYkltYWdlOjpjcmVhdGUoYml0bWFwU2l6ZSwgc25hcHNob3RPcHRpb25z
VG9JbWFnZU9wdGlvbnMob3B0aW9ucykpOworICAgIGF1dG8gc25hcHNob3QgPSBXZWJJbWFnZTo6
Y3JlYXRlKGJpdG1hcFNpemUsIHNuYXBzaG90T3B0aW9uc1RvSW1hZ2VPcHRpb25zKG9wdGlvbnMp
LCBzbmFwc2hvdE9wdGlvbnNUb0JpdG1hcENvbmZpZ3VyYXRpb24ob3B0aW9ucywgKnRoaXMpKTsK
KyAgICBpZiAoIXNuYXBzaG90KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBhdXRvIGdy
YXBoaWNzQ29udGV4dCA9IHNuYXBzaG90LT5iaXRtYXAoKS5jcmVhdGVHcmFwaGljc0NvbnRleHQo
KTsKIAogICAgIHBhaW50U25hcHNob3RBdFNpemUocmVjdCwgYml0bWFwU2l6ZSwgb3B0aW9ucywg
KmNvcmVGcmFtZSwgKmZyYW1lVmlldywgKmdyYXBoaWNzQ29udGV4dCk7CkBAIC0yMDY2LDggKzIw
NzgsOSBAQCBSZWZQdHI8V2ViSW1hZ2U+IFdlYlBhZ2U6OnNuYXBzaG90Tm9kZShXZWJDb3JlOjpO
b2RlJiBub2RlLCBTbmFwc2hvdE9wdGlvbnMgb3B0aQogICAgICAgICBzbmFwc2hvdFNpemUgPSBJ
bnRTaXplKHNuYXBzaG90U2l6ZS53aWR0aCgpICogc2NhbGVGYWN0b3IsIG1heGltdW1IZWlnaHQp
OwogICAgIH0KIAotICAgIGF1dG8gc25hcHNob3QgPSBXZWJJbWFnZTo6Y3JlYXRlKHNuYXBzaG90
U2l6ZSwgc25hcHNob3RPcHRpb25zVG9JbWFnZU9wdGlvbnMob3B0aW9ucykpOwotCisgICAgYXV0
byBzbmFwc2hvdCA9IFdlYkltYWdlOjpjcmVhdGUoc25hcHNob3RTaXplLCBzbmFwc2hvdE9wdGlv
bnNUb0ltYWdlT3B0aW9ucyhvcHRpb25zKSwgc25hcHNob3RPcHRpb25zVG9CaXRtYXBDb25maWd1
cmF0aW9uKG9wdGlvbnMsICp0aGlzKSk7CisgICAgaWYgKCFzbmFwc2hvdCkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgYXV0byBncmFwaGljc0NvbnRleHQgPSBzbmFwc2hvdC0+Yml0bWFw
KCkuY3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7CiAKICAgICBpZiAoIShvcHRpb25zICYgU25hcHNo
b3RPcHRpb25zRXhjbHVkZURldmljZVNjYWxlRmFjdG9yKSkgewpAQCAtNDQzNCw3ICs0NDQ3LDcg
QEAgdm9pZCBXZWJQYWdlOjpkcmF3UmVjdFRvSW1hZ2UodWludDY0X3QgZnJhbWVJRCwgY29uc3Qg
UHJpbnRJbmZvJiBwcmludEluZm8sIGNvbnMKICAgICAgICAgQVNTRVJUKGNvcmVGcmFtZS0+ZG9j
dW1lbnQoKS0+cHJpbnRpbmcoKSk7CiAjZW5kaWYKIAotICAgICAgICBhdXRvIGJpdG1hcCA9IFNo
YXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGltYWdlU2l6ZSwgU2hhcmVhYmxlQml0bWFw
OjpTdXBwb3J0c0FscGhhKTsKKyAgICAgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6
OmNyZWF0ZVNoYXJlYWJsZShpbWFnZVNpemUsIHsgfSk7CiAgICAgICAgIGlmICghYml0bWFwKSB7
CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJldHVybjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdl
SU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1Mu
bW0KaW5kZXggZjY0MWUwN2RkMzg4M2YyZGM0ZDI2MzIyNjVhMTBlZjkwMWY0NWNjYS4uOGM4OWNm
MmE2YjUwODI5ZWVmNGNmYmM0MmZjZjUyOTZlZTlmM2M3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTI1MzMsOSArMjUz
Myw5IEBAIHZvaWQgV2ViUGFnZTo6Z2V0UG9zaXRpb25JbmZvcm1hdGlvbihjb25zdCBJbnRlcmFj
dGlvbkluZm9ybWF0aW9uUmVxdWVzdCYgcmVxdWVzCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBGbG9hdFNpemUgc2NhbGVkU2l6ZSA9IGxhcmdlc3RSZWN0V2l0aEFzcGVjdFJh
dGlvSW5zaWRlUmVjdChpbWFnZS0+c2l6ZSgpLndpZHRoKCkgLyBpbWFnZS0+c2l6ZSgpLmhlaWdo
dCgpLCBGbG9hdFJlY3QoMCwgMCwgc2NyZWVuU2l6ZUluUGl4ZWxzLndpZHRoKCksIHNjcmVlblNp
emVJblBpeGVscy5oZWlnaHQoKSkpLnNpemUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEZsb2F0U2l6ZSBiaXRtYXBTaXplID0gc2NhbGVkU2l6ZS53aWR0aCgpIDwgaW1h
Z2UtPnNpemUoKS53aWR0aCgpID8gc2NhbGVkU2l6ZSA6IGltYWdlLT5zaXplKCk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogT25seSBzZWxlY3QgRXh0ZW5k
ZWRDb2xvciBvbiBpbWFnZXMga25vd24gdG8gbmVlZCB3aWRlIGdhbXV0Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBTaGFyZWFibGVCaXRtYXA6OkZsYWdzIGZsYWdzID0gU2hh
cmVhYmxlQml0bWFwOjpTdXBwb3J0c0FscGhhOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZmxhZ3MgfD0gc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yKCkgPyBTaGFyZWFi
bGVCaXRtYXA6OlN1cHBvcnRzRXh0ZW5kZWRDb2xvciA6IDA7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gc2hhcmVkQml0bWFw
ID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoSW50U2l6ZShiaXRtYXBTaXplKSwg
ZmxhZ3MpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFyZWFibGVC
aXRtYXA6OkNvbmZpZ3VyYXRpb24gYml0bWFwQ29uZmlndXJhdGlvbjsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJpdG1hcENvbmZpZ3VyYXRpb24uY29sb3JTcGFjZS5jZ0Nv
bG9yU3BhY2UgPSBzY3JlZW5Db2xvclNwYWNlKG1fcGFnZS0+bWFpbkZyYW1lKCkudmlldygpKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChSZWZQdHI8U2hhcmVhYmxl
Qml0bWFwPiBzaGFyZWRCaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShJ
bnRTaXplKGJpdG1hcFNpemUpLCBiaXRtYXBDb25maWd1cmF0aW9uKSkgewogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gZ3JhcGhpY3NDb250ZXh0ID0gc2hhcmVk
Qml0bWFwLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPmRyYXdJbWFnZSgqaW1hZ2UsIEZsb2F0
UmVjdCgwLCAwLCBiaXRtYXBTaXplLndpZHRoKCksIGJpdG1hcFNpemUuaGVpZ2h0KCkpKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvLmltYWdlID0gc2hhcmVk
Qml0bWFwOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318840</attachid>
            <date>2017-08-22 18:13:33 -0700</date>
            <delta_ts>2017-08-22 18:29:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175858-20170822181332.patch</filename>
            <type>text/plain</type>
            <size>47197</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxMDUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjY1ZWU5YzZmMzM4YTg0
NTdjY2VhOGVmMzkyMmE5ODYxZTZkMzdiMS4uYWE2MDdlMWY2Y2FmZDEzMzIxZTJiNjRiOGJiNzY2
N2UzNzI1MmM4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE3LTA4LTIyICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIF9XS1RodW1ibmFp
bFZpZXcgc2hvdWxkIHVzZSB0aGUgc2NyZWVuIGNvbG9yIHNwYWNlIGluc3RlYWQgb2Ygc1JHQgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1ODU4Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMzkyNTU1OT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtU2NyZWVuLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vaW9zL1BsYXRmb3JtU2NyZWVuSU9TLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6c2NyZWVuQ29sb3JTcGFjZSk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1BsYXRmb3Jt
U2NyZWVuTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6c2NyZWVuQ29sb3JTcGFjZSk6CisgICAg
ICAgIChXZWJDb3JlOjpzY3JlZW5TdXBwb3J0c0V4dGVuZGVkQ29sb3IpOgorICAgICAgICAqIHBs
YXRmb3JtL3dpbi9QbGF0Zm9ybVNjcmVlbldpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzY3Jl
ZW5Db2xvclNwYWNlKToKKyAgICAgICAgQWRkIHNjcmVlbkNvbG9yU3BhY2UsIHdoaWNoIHJldHVy
bnMgdGhlIGFjdGl2ZSBjb2xvciBzcGFjZSBmb3IgdGhlCisgICAgICAgIGdpdmVuIFdpZGdldCdz
IHNjcmVlbi4gT24gV2luZG93cywganVzdCBmYWxsIGJhY2sgdG8gc1JHQiBsaWtlIHdlIHVzdWFs
bHkgZG8uCisKIDIwMTctMDgtMjIgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+
CiAKICAgICAgICAgQ29ycmVjdCBTT1VQIGFuZCBjVVJMIGJ1aWxkcyBhZnRlciByMjIxMDE3Lgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwppbmRleCA2YjdiNWI5MThhOTdmNDhhYzJlZDkxYmQ1ZGNhMWVlNjU4YjYwNDkxLi5iZmY4
ZjdlOTk1ZWM5MDA0MTY1MDQwZjI1MGZiMjMwYzYxYjVjYzQzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDEyMiBAQAorMjAxNy0wOC0yMiAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNv
bT4KKworICAgICAgICBfV0tUaHVtYm5haWxWaWV3IHNob3VsZCB1c2UgdGhlIHNjcmVlbiBjb2xv
ciBzcGFjZSBpbnN0ZWFkIG9mIHNSR0IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE3NTg1OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzM5MjU1NTk+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ3VycmVu
dGx5LCBfV0tUaHVtYm5haWxWaWV3IHVzZXMgc29mdHdhcmUgc25hcHNob3R0aW5nIHZpYQorICAg
ICAgICBXZWJQYWdlJ3MgdGFrZVNuYXBzaG90IGFuZCBmcmllbmRzLCB3aGljaCBhbHdheXMgdXNl
IHNSR0IuCisgICAgICAgIEhvd2V2ZXIsIGl0IGlzIGltbWVkaWF0ZWx5IHByZXNlbnRlZCBpbiBk
aXNwbGF5IHNwYWNlLCB3aGljaAorICAgICAgICBjYXVzZXMgYW4gZXhwZW5zaXZlIGNvbG9yIGNv
bnZlcnNpb24sIHdoaWNoIGNvdWxkIGhhdmUgYmVlbiBhdm9pZGVkCisgICAgICAgIGlmIHRoZSBz
bmFwc2hvdCB3YXMgaW5zdGVhZCBvcmlnaW5hbGx5IHBhaW50ZWQgaW4gZGlzcGxheSBzcGFjZS4K
KworICAgICAgICBUbyBzb2x2ZSB0aGlzLCBhZGQ6CisKKyAgICAgICAgLSBhIG1lY2hhbmlzbSBh
bGxvd2luZyBTaGFyZWFibGVCaXRtYXAgdG8gYmUgY29uc3RydWN0ZWQgd2l0aCBhCisgICAgICAg
ICAgY29uZmlndXJhdGlvbiwgd2hpY2ggY2FuIGluY2x1ZGUgYSBjb2xvciBzcGFjZSBhcyB3ZWxs
IGFzIHRoZQorICAgICAgICAgIGV4aXN0aW5nIGZsYWdzIChmbGlwcGluZyBTdXBwb3J0c0FscGhh
IHRvIGJlIElzT3BhcXVlIGluc3RlYWQKKyAgICAgICAgICBiZWNhdXNlIG1vc3QgY2FsbGVycyB3
YW50IGFscGhhKQorCisgICAgICAgIC0gYSBXZWJJbWFnZSBjb25zdHJ1Y3RvciBhbGxvd2luZyBj
YWxsZXJzIHRvIHBhc3MgYSBTaGFyZWFibGVCaXRtYXAKKyAgICAgICAgICBjb25maWd1cmF0aW9u
IHRocm91Z2gKKworICAgICAgICAtIGEgYml0IGluIFNuYXBzaG90T3B0aW9ucyBmb3IgY2FsbGVy
cyB0byBpbmRpY2F0ZSB0aGF0IHRoZXkKKyAgICAgICAgICB3YW50IHRvIHNuYXBzaG90IGluIHRo
ZSBkaXNwbGF5J3MgY29sb3Igc3BhY2UgKHJlcHVycG9zZWQKKyAgICAgICAgICBmcm9tIHRoZSBF
eHRlbmRlZENvbG9yIGJpdCkKKworICAgICAgICBBbmQgdGhlbiBtYWtlIHVzZSBvZiB0aGF0IGJp
dCBpbiBfV0tUaHVtYm5haWxWaWV3LgorCisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLU2hhcmVk
QVBJQ2FzdC5oOgorICAgICAgICAoV2ViS2l0OjpzbmFwc2hvdE9wdGlvbnNGcm9tSW1hZ2VPcHRp
b25zKToKKyAgICAgICAgUmVtb3ZlIHRoaXMgaW5jb3JyZWN0IGNvbnZlcnNpb24gKFdLSW1hZ2VP
cHRpb25zIGRvZXNuJ3QgaW5jbHVkZQorICAgICAgICBrV0tTbmFwc2hvdE9wdGlvbnNFeHRlbmRl
ZENvbG9yKS4KKworICAgICAgICAoV2ViS2l0Ojp0b1NuYXBzaG90T3B0aW9ucyk6CisgICAgICAg
IFBsdW1iIGtXS1NuYXBzaG90T3B0aW9uc0V4dGVuZGVkQ29sb3IgdG8gV2ViS2l0OjpTbmFwc2hv
dE9wdGlvbnMKKyAgICAgICAgYXMgdGhlICJVc2VTY3JlZW5Db2xvclNwYWNlIi4gTGVhdmUgdGhl
IFNQSSBuYW1lIGludGFjdCBiZWNhdXNlCisgICAgICAgIGl0IGhhcyBjbGllbnRzLCBidXQgdGhl
IGRpZmZlcmVuY2UgaXNuJ3Qgc28gaHVnZSB0aGF0IGl0IHdpbGwgYmUKKyAgICAgICAgYSBwcm9i
bGVtLgorCisgICAgICAgICogU2hhcmVkL0ltYWdlT3B0aW9ucy5oOgorICAgICAgICAoV2ViS2l0
OjpzbmFwc2hvdE9wdGlvbnNUb0ltYWdlT3B0aW9ucyk6CisgICAgICAgIFJlbW92ZSBJbWFnZU9w
dGlvbnNFeHRlbmRlZENvbG9yLCBhbmQgcmVuYW1lCisgICAgICAgIFNuYXBzaG90T3B0aW9uc0V4
dGVuZGVkQ29sb3IgdG8gU25hcHNob3RPcHRpb25zVXNlU2NyZWVuQ29sb3JTcGFjZS4KKworICAg
ICAgICAqIFNoYXJlZC9TaGFyZWFibGVCaXRtYXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFy
ZWFibGVCaXRtYXA6OkhhbmRsZTo6SGFuZGxlKToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxl
Qml0bWFwOjpIYW5kbGU6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJs
ZUJpdG1hcDo6SGFuZGxlOjpkZWNvZGUpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRt
YXA6OkhhbmRsZTo6Y2xlYXIpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OkNv
bmZpZ3VyYXRpb246OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJp
dG1hcDo6Q29uZmlndXJhdGlvbjo6ZGVjb2RlKToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxl
Qml0bWFwOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OmNyZWF0
ZVNoYXJlYWJsZSk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlSGFu
ZGxlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpTaGFyZWFibGVC
aXRtYXApOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OmNhbGN1bGF0ZUJ5dGVz
UGVyUGl4ZWwpOgorICAgICAgICAoV2ViS2l0OjpjYWxjdWxhdGVCeXRlc1BlclBpeGVsKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlQml0bWFwLmg6CisgICAgICAgIChXZWJL
aXQ6OlNoYXJlYWJsZUJpdG1hcDo6bnVtQnl0ZXNGb3JTaXplKToKKyAgICAgICAgKFdlYktpdDo6
U2hhcmVhYmxlQml0bWFwOjpzaXplSW5CeXRlcyBjb25zdCk6CisgICAgICAgICogU2hhcmVkL2Nn
L1NoYXJlYWJsZUJpdG1hcENHLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Y29sb3JTcGFjZSk6Cisg
ICAgICAgIChXZWJLaXQ6OmJpdG1hcEluZm8pOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVC
aXRtYXA6OmNhbGN1bGF0ZUJ5dGVzUGVyUGl4ZWwpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFi
bGVCaXRtYXA6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJl
YWJsZUJpdG1hcDo6Y3JlYXRlQ0dJbWFnZSBjb25zdCk6CisgICAgICAgIFJlbW92ZSBTaGFyZWFi
bGVCaXRtYXAncyBmbGFncyBwYXJhbWV0ZXIsIGFuZCByZXBsYWNlIGl0IHdpdGgKKyAgICAgICAg
YSBjb25maWd1cmF0aW9uIHBhcmFtZXRlci4gQ29uZmlndXJhdGlvbiBpcyBhIHN0cnVjdCB0aGF0
IGN1cnJlbnRseQorICAgICAgICBlbmNvbXBhc3NlcyB0aGUgbmV3bHktZmxpcHBlZCBJc09wYXF1
ZSBiaXQgYW5kIChvbiBDb2NvYSBwbGF0Zm9ybXMpCisgICAgICAgIGEgcGxhdGZvcm0gY29sb3Jz
cGFjZSBvYmplY3QuIENvbXB1dGUgYnl0ZXNQZXJQaXhlbCBkeW5hbWljYWxseQorICAgICAgICBi
YXNlZCBvbiB0aGUgY29sb3JzcGFjZSBhbmQgd2hldGhlciBpdCB1c2VzIGV4dGVuZGVkIGNvbG9y
cyBvciBub3QuCisKKyAgICAgICAgKiBTaGFyZWQvV2ViSW1hZ2UuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJJbWFnZTo6Y3JlYXRlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViSW1hZ2UuaDoKKyAg
ICAgICAgUGFzcyBTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb24gdGhyb3VnaCB0byB0aGUg
U2hhcmVhYmxlQml0bWFwCisgICAgICAgIGNvbnN0cnVjdG9yLCBpZiBwcm92aWRlZC4KKworICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVGh1bWJuYWlsVmlldy5tbToKKyAgICAgICAg
KC1bX1dLVGh1bWJuYWlsVmlldyByZXF1ZXN0U25hcHNob3RdKToKKyAgICAgICAgTWFrZSB1c2Ug
b2YgdGhlIG5ldyBiaXQsIGFuZCB1c2UgdGhlIHNjcmVlbidzIGNvbG9yIHNwYWNlLgorCisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0Ojpz
bmFwc2hvdE9wdGlvbnNUb0JpdG1hcENvbmZpZ3VyYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjpzbmFwc2hvdEF0U2l6ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNuYXBz
aG90Tm9kZSk6CisgICAgICAgIElmIHRoZSBzbmFwc2hvdCBvcHRpb24gdG8gdXNlIHRoZSBkaXNw
bGF5IGNvbG9yIHNwYWNlIGlzIHNldCwKKyAgICAgICAgZmlsbCBpbiB0aGUgY29sb3JTcGFjZSBm
aWVsZCBpbiB0aGUgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uCisgICAgICAgIHdpdGgg
dGhlIHNjcmVlbidzIGNvbG9yIHNwYWNlLgorCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRy
YXdSZWN0VG9JbWFnZSk6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5j
cHA6CisgICAgICAgIChJUEM6OmVuY29kZUltYWdlKToKKyAgICAgICAgKiBTaGFyZWQvQ29udGV4
dE1lbnVDb250ZXh0RGF0YS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNvbnRleHRNZW51Q29udGV4
dERhdGE6OkNvbnRleHRNZW51Q29udGV4dERhdGEpOgorICAgICAgICAqIFNoYXJlZC9tYWMvUmVt
b3RlTGF5ZXJCYWNraW5nU3RvcmUubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFj
a2luZ1N0b3JlOjpzd2FwVG9WYWxpZEZyb250QnVmZmVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZTo6cmVuZGVyZWRJbWFnZSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OnNuYXBzaG90KToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbToKKyAgICAgICAgKFdlYktpdDo6UERG
UGx1Z2luOjpzbmFwc2hvdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblBy
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJveHk6Omdlb21ldHJ5RGlkQ2hhbmdl
KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJveHk6OnVwZGF0ZUJhY2tpbmdTdG9yZSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5t
bToKKyAgICAgICAgKFdlYktpdDo6Y29udmVydEltYWdlVG9CaXRtYXApOgorICAgICAgICAoV2Vi
S2l0Ojpjb252ZXJ0Q0dJbWFnZVRvQml0bWFwKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6Y3JlYXRlU2VsZWN0
aW9uU25hcHNob3QgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2Vi
UGFnZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0UG9zaXRpb25JbmZvcm1h
dGlvbik6CisgICAgICAgIEFkb3B0IFNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbi4gU2lu
Y2UgSXNPcGFxdWUKKyAgICAgICAgZGVmYXVsdHMgdG8gZmFsc2UsIGFsbCBjYWxsZXJzIHdobyBw
cmV2aW91c2x5IGNvbnN0cnVjdGVkCisgICAgICAgIFNoYXJlYWJsZUJpdG1hcCB3aXRoIFN1cHBv
cnRzQWxwaGEgbm93IGRvbid0IGhhdmUgdG8gZG8gYW55dGhpbmcuCisKIDIwMTctMDgtMjIgIE1h
dHQgTGV3aXMgIDxqbGV3aXMzQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xs
aW5nIG91dCByMjIxMDI2LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkv
Y2cvQ29yZUdyYXBoaWNzU1BJLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZy9Db3Jl
R3JhcGhpY3NTUEkuaAppbmRleCBmM2NiZWM0MWM4OTYxNWY4NGRlMzY1NzAwZmNmNzQzYTBmNzdm
NmZlLi43YzI5MWM5MTRkNjlmNTZkODZkYmI0YTg4MWZiMjMxODljNWE1YTVjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaApAQCAtMTg4LDYg
KzE4OCw4IEBAIENHRm9udEFudGlhbGlhc2luZ1N0eWxlIENHQ29udGV4dEdldEZvbnRBbnRpYWxp
YXNpbmdTdHlsZShDR0NvbnRleHRSZWYpOwogdm9pZCBDR0NvbnRleHRTZXRGb250QW50aWFsaWFz
aW5nU3R5bGUoQ0dDb250ZXh0UmVmLCBDR0ZvbnRBbnRpYWxpYXNpbmdTdHlsZSk7CiAKICNpZiAo
UExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTIw
MCkgfHwgUExBVEZPUk0oSU9TKQorYm9vbCBDR0NvbG9yU3BhY2VVc2VzRXh0ZW5kZWRSYW5nZShD
R0NvbG9yU3BhY2VSZWYpOworCiB0eXBlZGVmIHN0cnVjdCBDR1BERkFubm90YXRpb24gKkNHUERG
QW5ub3RhdGlvblJlZjsKIHR5cGVkZWYgYm9vbCAoXkNHUERGQW5ub3RhdGlvbkRyYXdDYWxsYmFj
a1R5cGUpKENHQ29udGV4dFJlZiBjb250ZXh0LCBDR1BERlBhZ2VSZWYgcGFnZSwgQ0dQREZBbm5v
dGF0aW9uUmVmIGFubm90YXRpb24pOwogdm9pZCBDR0NvbnRleHREcmF3UERGUGFnZVdpdGhBbm5v
dGF0aW9ucyhDR0NvbnRleHRSZWYsIENHUERGUGFnZVJlZiwgQ0dQREZBbm5vdGF0aW9uRHJhd0Nh
bGxiYWNrVHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9y
bVNjcmVlbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TY3JlZW4uaAppbmRl
eCBlMjhmZjE5OTUwZGRhNTRlMDkwNmQ5ODBhYmM0NTJhYjM3MjI2MWRiLi5hZWM3NGJiMTU4OWJl
OTIwMGExZjU4MTRlMjA3NzZlNTY1NGJiYWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QbGF0Zm9ybVNjcmVlbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bs
YXRmb3JtU2NyZWVuLmgKQEAgLTQxLDYgKzQxLDEwIEBAIHR5cGVkZWYgc3RydWN0IF9OU1BvaW50
IE5TUG9pbnQ7CiBPQkpDX0NMQVNTIFVJU2NyZWVuOwogI2VuZGlmCiAKKyNpZiBVU0UoQ0cpCit0
eXBlZGVmIHN0cnVjdCBDR0NvbG9yU3BhY2UgKkNHQ29sb3JTcGFjZVJlZjsKKyNlbmRpZgorCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZsb2F0UmVjdDsKQEAgLTYwLDYgKzY0LDEwIEBA
IEZsb2F0UmVjdCBzY3JlZW5BdmFpbGFibGVSZWN0KFdpZGdldCopOwogCiBXRUJDT1JFX0VYUE9S
VCBib29sIHNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xvcihXaWRnZXQqID0gbnVsbHB0cik7CiAK
KyNpZiBVU0UoQ0cpCitXRUJDT1JFX0VYUE9SVCBDR0NvbG9yU3BhY2VSZWYgc2NyZWVuQ29sb3JT
cGFjZShXaWRnZXQqID0gbnVsbHB0cik7CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKE1BQykKIAog
TlNTY3JlZW4gKnNjcmVlbihOU1dpbmRvdyAqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVNjcmVlbklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9QbGF0Zm9ybVNjcmVlbklPUy5tbQppbmRleCA4MDhlZDk3ZDI3NGVlOGNhOWM0ZTBm
MGVmZDBkYzMwZmZiZGM2MmQyLi4yMTJhNmU4ZmM5MGQzOTllZTJlMjU4NzkzZDY4YmM2NWE1MGNh
NjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1TY3Jl
ZW5JT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtU2NyZWVu
SU9TLm1tCkBAIC0zMCw2ICszMCw3IEBACiAjaW1wb3J0ICJGbG9hdFJlY3QuaCIKICNpbXBvcnQg
IkZsb2F0U2l6ZS5oIgogI2ltcG9ydCAiRnJhbWVWaWV3LmgiCisjaW1wb3J0ICJHcmFwaGljc0Nv
bnRleHRDRy5oIgogI2ltcG9ydCAiSG9zdFdpbmRvdy5oIgogI2ltcG9ydCAiSW50UmVjdC5oIgog
I2ltcG9ydCAiV0FLV2luZG93LmgiCkBAIC03NCw2ICs3NSwxMSBAQCBib29sIHNjcmVlblN1cHBv
cnRzRXh0ZW5kZWRDb2xvcihXaWRnZXQqKQogICAgIHJldHVybiBNR0dldEJvb2xBbnN3ZXIoa01H
UUhhc0V4dGVuZGVkQ29sb3JEaXNwbGF5KTsKIH0KIAorQ0dDb2xvclNwYWNlUmVmIHNjcmVlbkNv
bG9yU3BhY2UoV2lkZ2V0KiB3aWRnZXQpCit7CisgICAgcmV0dXJuIHNjcmVlblN1cHBvcnRzRXh0
ZW5kZWRDb2xvcih3aWRnZXQpID8gZXh0ZW5kZWRTUkdCQ29sb3JTcGFjZVJlZigpIDogc1JHQkNv
bG9yU3BhY2VSZWYoKTsKK30KKwogLy8gVGhlc2UgZnVuY3Rpb25zIHNjYWxlIGJldHdlZW4gc2Ny
ZWVuIGFuZCBwYWdlIGNvb3JkaW5hdGVzIGJlY2F1c2UgSmF2YVNjcmlwdC9ET00gb3BlcmF0aW9u
cwogLy8gYXNzdW1lIHRoYXQgdGhlIHNjcmVlbiBhbmQgdGhlIHBhZ2Ugc2hhcmUgdGhlIHNhbWUg
Y29vcmRpbmF0ZSBzeXN0ZW0uCiBGbG9hdFJlY3Qgc2NyZWVuUmVjdChXaWRnZXQqIHdpZGdldCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVNjcmVlbk1h
Yy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVNjcmVlbk1hYy5tbQpp
bmRleCAwZjkxNzJhZTU5NDU5MzlmMTg0NGZjZDE5MWNhNTZkZmZkODgyODU5Li5mMGY2NzFiNThl
ZGI4YzY4NjI2MDUzMTBjMjI5YTc5NGUzMjk2M2QzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1TY3JlZW5NYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1BsYXRmb3JtU2NyZWVuTWFjLm1tCkBAIC0xMzQsNiArMTM0LDExIEBAIE5T
U2NyZWVuICpzY3JlZW4oUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKQogICAgIHJldHVybiBm
aXJzdFNjcmVlbigpOwogfQogCitDR0NvbG9yU3BhY2VSZWYgc2NyZWVuQ29sb3JTcGFjZShXaWRn
ZXQqIHdpZGdldCkKK3sKKyAgICByZXR1cm4gc2NyZWVuKHdpZGdldCkuY29sb3JTcGFjZS5DR0Nv
bG9yU3BhY2U7Cit9CisKIGJvb2wgc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yKFdpZGdldCog
d2lkZ2V0KQogewogICAgIGlmICghd2lkZ2V0KQpAQCAtMTQyLDcgKzE0Nyw3IEBAIGJvb2wgc2Ny
ZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yKFdpZGdldCogd2lkZ2V0KQogI2lmIF9fTUFDX09TX1hf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMjAwCiAgICAgcmV0dXJuIFtzY3JlZW4od2lkZ2V0
KSBjYW5SZXByZXNlbnREaXNwbGF5R2FtdXQ6TlNEaXNwbGF5R2FtdXRQM107CiAjZWxzZQotICAg
IGF1dG8gY29sb3JTcGFjZSA9IHNjcmVlbih3aWRnZXQpLmNvbG9yU3BhY2UuQ0dDb2xvclNwYWNl
OworICAgIGF1dG8gY29sb3JTcGFjZSA9IHNjcmVlbkNvbG9yU3BhY2Uod2lkZ2V0KTsKICAgICBh
dXRvIGljY0RhdGEgPSBhZG9wdENGKENHQ29sb3JTcGFjZUNvcHlJQ0NQcm9maWxlKGNvbG9yU3Bh
Y2UpKTsKICAgICBhdXRvIHByb2ZpbGUgPSBhZG9wdENGKENvbG9yU3luY1Byb2ZpbGVDcmVhdGUo
aWNjRGF0YS5nZXQoKSwgbnVsbHB0cikpOwogICAgIHJldHVybiBwcm9maWxlICYmIENvbG9yU3lu
Y1Byb2ZpbGVJc1dpZGVHYW11dChwcm9maWxlLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3dpbi9QbGF0Zm9ybVNjcmVlbldpbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vUGxhdGZvcm1TY3JlZW5XaW4uY3BwCmluZGV4IDY5YTJlYzU4ZmU0MmM5
MjExMzY3NmU5ZmVlNDQ4Y2YzNmUxZTJlOWEuLjE1ZWIyZGZjYTYyMTE1ZDMyYzJiYWJhZWM3YmJk
YmIxYWQzNDkyMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QbGF0
Zm9ybVNjcmVlbldpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1BsYXRm
b3JtU2NyZWVuV2luLmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkZsb2F0UmVjdC5o
IgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCisjaW5jbHVkZSAi
R3JhcGhpY3NDb250ZXh0Q0cuaCIKICNpbmNsdWRlICJIb3N0V2luZG93LmgiCiAjaW5jbHVkZSAi
SW50UmVjdC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCkBAIC0xMDAsNiArMTAxLDEx
IEBAIEZsb2F0UmVjdCBzY3JlZW5BdmFpbGFibGVSZWN0KFdpZGdldCogd2lkZ2V0KQogICAgIHJl
dHVybiBtb25pdG9ySW5mby5yY1dvcms7CiB9CiAKK0NHQ29sb3JTcGFjZVJlZiBzY3JlZW5Db2xv
clNwYWNlKFdpZGdldCopCit7CisgICAgcmV0dXJuIHNSR0JDb2xvclNwYWNlUmVmKCk7Cit9CisK
IGJvb2wgc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yKFdpZGdldCopCiB7CiAgICAgcmV0dXJu
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tTaGFyZWRB
UElDYXN0LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1NoYXJlZEFQSUNhc3QuaApp
bmRleCBiNDgwOWYzYTE1ZmY4Y2RlNjQyZDFkZDRlNjU5MTcyZDA1MGZlNDYwLi41YjgyZDRkNDRj
NTMzMDlhNzI1N2ViNGExOTFkYWMyZjZkOWMzOThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BUEkvYy9XS1NoYXJlZEFQSUNhc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BUEkvYy9XS1NoYXJlZEFQSUNhc3QuaApAQCAtOTMwLDkgKzkzMCw2IEBAIGlubGluZSBTbmFw
c2hvdE9wdGlvbnMgc25hcHNob3RPcHRpb25zRnJvbUltYWdlT3B0aW9ucyhXS0ltYWdlT3B0aW9u
cyB3a0ltYWdlT3B0CiAKICAgICBpZiAod2tJbWFnZU9wdGlvbnMgJiBrV0tJbWFnZU9wdGlvbnNT
aGFyZWFibGUpCiAgICAgICAgIHNuYXBzaG90T3B0aW9ucyB8PSBTbmFwc2hvdE9wdGlvbnNTaGFy
ZWFibGU7Ci0KLSAgICBpZiAod2tJbWFnZU9wdGlvbnMgJiBrV0tTbmFwc2hvdE9wdGlvbnNFeHRl
bmRlZENvbG9yKQotICAgICAgICBzbmFwc2hvdE9wdGlvbnMgfD0gU25hcHNob3RPcHRpb25zRXh0
ZW5kZWRDb2xvcjsKICAgICAKICAgICByZXR1cm4gc25hcHNob3RPcHRpb25zOwogfQpAQCAtOTU1
LDYgKzk1Miw4IEBAIGlubGluZSBTbmFwc2hvdE9wdGlvbnMgdG9TbmFwc2hvdE9wdGlvbnMoV0tT
bmFwc2hvdE9wdGlvbnMgd2tTbmFwc2hvdE9wdGlvbnMpCiAgICAgICAgIHNuYXBzaG90T3B0aW9u
cyB8PSBTbmFwc2hvdE9wdGlvbnNGb3JjZVdoaXRlVGV4dDsKICAgICBpZiAod2tTbmFwc2hvdE9w
dGlvbnMgJiBrV0tTbmFwc2hvdE9wdGlvbnNQcmludGluZykKICAgICAgICAgc25hcHNob3RPcHRp
b25zIHw9IFNuYXBzaG90T3B0aW9uc1ByaW50aW5nOworICAgIGlmICh3a1NuYXBzaG90T3B0aW9u
cyAmIGtXS1NuYXBzaG90T3B0aW9uc0V4dGVuZGVkQ29sb3IpCisgICAgICAgIHNuYXBzaG90T3B0
aW9ucyB8PSBTbmFwc2hvdE9wdGlvbnNVc2VTY3JlZW5Db2xvclNwYWNlOwogCiAgICAgcmV0dXJu
IHNuYXBzaG90T3B0aW9uczsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nv
bnRleHRNZW51Q29udGV4dERhdGEuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29udGV4dE1l
bnVDb250ZXh0RGF0YS5jcHAKaW5kZXggMzliZGIzMmUxZDFhMWQxOTUwN2VmODVmYjI4ZjI2MTFi
OWI5NjM5Yi4uNzkyMjA4OGI5NmVmNTRiNzNlNDc2NDAzN2VjMjY4MzAzNzhkMDA1ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29udGV4dE1lbnVDb250ZXh0RGF0YS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29udGV4dE1lbnVDb250ZXh0RGF0YS5jcHAKQEAgLTY0
LDggKzY0LDggQEAgQ29udGV4dE1lbnVDb250ZXh0RGF0YTo6Q29udGV4dE1lbnVDb250ZXh0RGF0
YShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgbWVudUxvY2EKICAgICBpZiAoIWltYWdlKQogICAg
ICAgICByZXR1cm47CiAKLSAgICAvLyBGSVhNRTogZmlndXJlIG91dCB0aGUgcm91bmRpbmcgc3Rh
cnRlZ3kgZm9yIFNoYXJlYWJsZUJpdG1hcC4KLSAgICBtX2NvbnRyb2xsZWRJbWFnZSA9IFNoYXJl
YWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKEludFNpemUoaW1hZ2UtPnNpemUoKSksIFNoYXJl
YWJsZUJpdG1hcDo6U3VwcG9ydHNBbHBoYSk7CisgICAgLy8gRklYTUU6IGZpZ3VyZSBvdXQgdGhl
IHJvdW5kaW5nIHN0cmF0ZWd5IGZvciBTaGFyZWFibGVCaXRtYXAuCisgICAgbV9jb250cm9sbGVk
SW1hZ2UgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShJbnRTaXplKGltYWdlLT5z
aXplKCkpLCB7IH0pOwogICAgIG1fY29udHJvbGxlZEltYWdlLT5jcmVhdGVHcmFwaGljc0NvbnRl
eHQoKS0+ZHJhd0ltYWdlKCppbWFnZSwgSW50UG9pbnQoKSk7CiAjZW5kaWYKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0ltYWdlT3B0aW9ucy5oIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvSW1hZ2VPcHRpb25zLmgKaW5kZXggYzMwYWYwMjljMjIyYzFiYmIzMWM0ODJjNGFmM2E1
M2Y1YmMyODAzNy4uOTE4MjE5NmVjZGJmMjBhM2EyYzliYTZmMmUyZTdjZjQ2ZTA0ODc1OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvSW1hZ2VPcHRpb25zLmgKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvSW1hZ2VPcHRpb25zLmgKQEAgLTMwLDcgKzMwLDYgQEAgbmFtZXNwYWNl
IFdlYktpdCB7CiAKIGVudW0gSW1hZ2VPcHRpb25zIHsKICAgICBJbWFnZU9wdGlvbnNTaGFyZWFi
bGUgPSAxIDw8IDAsCi0gICAgSW1hZ2VPcHRpb25zRXh0ZW5kZWRDb2xvciA9IDEgPDwgMSwKIH07
CiAKIGVudW0gewpAQCAtNDIsMjEgKzQxLDE2IEBAIGVudW0gewogICAgIFNuYXBzaG90T3B0aW9u
c0ZvcmNlQmxhY2tUZXh0ID0gMSA8PCA2LAogICAgIFNuYXBzaG90T3B0aW9uc0ZvcmNlV2hpdGVU
ZXh0ID0gMSA8PCA3LAogICAgIFNuYXBzaG90T3B0aW9uc1ByaW50aW5nID0gMSA8PCA4LAotICAg
IFNuYXBzaG90T3B0aW9uc0V4dGVuZGVkQ29sb3IgPSAxIDw8IDksCisgICAgU25hcHNob3RPcHRp
b25zVXNlU2NyZWVuQ29sb3JTcGFjZSA9IDEgPDwgOSwKIH07CiB0eXBlZGVmIHVpbnQzMl90IFNu
YXBzaG90T3B0aW9uczsKIAotCiBpbmxpbmUgSW1hZ2VPcHRpb25zIHNuYXBzaG90T3B0aW9uc1Rv
SW1hZ2VPcHRpb25zKFNuYXBzaG90T3B0aW9ucyBzbmFwc2hvdE9wdGlvbnMpCiB7CiAgICAgdW5z
aWduZWQgaW1hZ2VPcHRpb25zID0gMDsKIAogICAgIGlmIChzbmFwc2hvdE9wdGlvbnMgJiBTbmFw
c2hvdE9wdGlvbnNTaGFyZWFibGUpCiAgICAgICAgIGltYWdlT3B0aW9ucyB8PSBJbWFnZU9wdGlv
bnNTaGFyZWFibGU7Ci0gICAgCi0gICAgaWYgKHNuYXBzaG90T3B0aW9ucyAmIFNuYXBzaG90T3B0
aW9uc0V4dGVuZGVkQ29sb3IpCi0gICAgICAgIGltYWdlT3B0aW9ucyB8PSBJbWFnZU9wdGlvbnNF
eHRlbmRlZENvbG9yOwotICAgIAogCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEltYWdlT3B0aW9u
cz4oaW1hZ2VPcHRpb25zKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1No
YXJlYWJsZUJpdG1hcC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVCaXRtYXAu
Y3BwCmluZGV4IDk5NDJlN2MyNjc1ZDc0MGQwZDFjNTFkMWVjNjNiYzIwZTYwN2EzODYuLjgzYTBl
NjdmMmNmZTE0MDc1MDRjYjdhZjgzMzY5Zjg5ZDMxODczODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvU2hhcmVhYmxlQml0bWFwLmNwcApAQCAtMzMsMTYgKzMzLDggQEAKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKLSAgICAKLXN0YXRpYyB1bnNpZ25lZCBj
YWxjdWxhdGVCeXRlc1BlclBpeGVsKFNoYXJlYWJsZUJpdG1hcDo6RmxhZ3MgZmxhZ3MpCi17Ci0g
ICAgaWYgKGZsYWdzICYgU2hhcmVhYmxlQml0bWFwOjpTdXBwb3J0c0V4dGVuZGVkQ29sb3IpCi0g
ICAgICAgIHJldHVybiA4OyAvLyBmb3IgZXh0ZW5kZWQgY29sb3IsIHdlIGFyZSB1c2luZyBoYWxm
LWZsb2F0IHJlcHJlc2VudGF0aW9ucwotICAgIHJldHVybiA0OwotfQogCiBTaGFyZWFibGVCaXRt
YXA6OkhhbmRsZTo6SGFuZGxlKCkKLSAgICA6IG1fZmxhZ3MoMCkKIHsKIH0KIApAQCAtNTAsNyAr
NDIsNyBAQCB2b2lkIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlOjplbmNvZGUoSVBDOjpFbmNvZGVy
JiBlbmNvZGVyKSBjb25zdAogewogICAgIGVuY29kZXIgPDwgbV9oYW5kbGU7CiAgICAgZW5jb2Rl
ciA8PCBtX3NpemU7Ci0gICAgZW5jb2RlciA8PCBtX2ZsYWdzOworICAgIGVuY29kZXIgPDwgbV9j
b25maWd1cmF0aW9uOwogfQogCiBib29sIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlOjpkZWNvZGUo
SVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBIYW5kbGUmIGhhbmRsZSkKQEAgLTU5LDkgKzUxLDggQEAg
Ym9vbCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2Rl
ciwgSGFuZGxlJiBoYW5kbGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGhhbmRsZS5tX3NpemUpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYg
KCFkZWNvZGVyLmRlY29kZShoYW5kbGUubV9mbGFncykpCisgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShoYW5kbGUubV9jb25maWd1cmF0aW9uKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGhh
bmRsZS5tX2J5dGVzUGVyUGl4ZWwgPSBjYWxjdWxhdGVCeXRlc1BlclBpeGVsKGhhbmRsZS5tX2Zs
YWdzKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNjksMTQgKzYwLDMxIEBAIHZvaWQgU2hh
cmVhYmxlQml0bWFwOjpIYW5kbGU6OmNsZWFyKCkKIHsKICAgICBtX2hhbmRsZS5jbGVhcigpOwog
ICAgIG1fc2l6ZSA9IEludFNpemUoKTsKLSAgICBtX2ZsYWdzID0gRmxhZzo6Tm9GbGFnczsKLSAg
ICBtX2J5dGVzUGVyUGl4ZWwgPSBjYWxjdWxhdGVCeXRlc1BlclBpeGVsKG1fZmxhZ3MpOworICAg
IG1fY29uZmlndXJhdGlvbiA9IHsgfTsKIH0KIAotUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gU2hh
cmVhYmxlQml0bWFwOjpjcmVhdGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgRmxhZ3MgZmxhZ3MpCit2
b2lkIFNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbjo6ZW5jb2RlKElQQzo6RW5jb2RlciYg
ZW5jb2RlcikgY29uc3QKIHsKLSAgICB1bnNpZ25lZCBieXRlc1BlclBpeGVsID0gY2FsY3VsYXRl
Qnl0ZXNQZXJQaXhlbChmbGFncyk7Ci0gICAgYXV0byBudW1CeXRlcyA9IG51bUJ5dGVzRm9yU2l6
ZShzaXplLCBieXRlc1BlclBpeGVsKTsKKyAgICBlbmNvZGVyIDw8IGlzT3BhcXVlOworI2lmIFBM
QVRGT1JNKENPQ09BKQorICAgIGVuY29kZXIgPDwgY29sb3JTcGFjZTsKKyNlbmRpZgorfQorCiti
b29sIFNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbjo6ZGVjb2RlKElQQzo6RGVjb2RlciYg
ZGVjb2RlciwgQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKK3sKKyAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGNvbmZpZ3VyYXRpb24uaXNPcGFxdWUpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjb25maWd1cmF0
aW9uLmNvbG9yU3BhY2UpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gU2hhcmVhYmxlQml0bWFwOjpj
cmVhdGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKQor
eworICAgIGF1dG8gbnVtQnl0ZXMgPSBudW1CeXRlc0ZvclNpemUoc2l6ZSwgY2FsY3VsYXRlQnl0
ZXNQZXJQaXhlbChjb25maWd1cmF0aW9uKSk7CiAgICAgaWYgKG51bUJ5dGVzLmhhc092ZXJmbG93
ZWQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTg0LDEzICs5MiwxMiBAQCBSZWZQ
dHI8U2hhcmVhYmxlQml0bWFwPiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShjb25zdCBJbnRTaXpl
JiBzaXplLCBGbGFncyBmbGFncwogICAgIGlmICghdHJ5RmFzdE1hbGxvYyhudW1CeXRlcy51bnNh
ZmVHZXQoKSkuZ2V0VmFsdWUoZGF0YSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFyZWFibGVCaXRtYXAoc2l6ZSwgZmxhZ3MsIGRhdGEpKTsK
KyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYXJlYWJsZUJpdG1hcChzaXplLCBjb25maWd1cmF0
aW9uLCBkYXRhKSk7CiB9CiAKLVJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IFNoYXJlYWJsZUJpdG1h
cDo6Y3JlYXRlU2hhcmVhYmxlKGNvbnN0IEludFNpemUmIHNpemUsIEZsYWdzIGZsYWdzKQorUmVm
UHRyPFNoYXJlYWJsZUJpdG1hcD4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoY29u
c3QgSW50U2l6ZSYgc2l6ZSwgQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKQogewotICAgIHVu
c2lnbmVkIGJ5dGVzUGVyUGl4ZWwgPSBjYWxjdWxhdGVCeXRlc1BlclBpeGVsKGZsYWdzKTsKLSAg
ICBhdXRvIG51bUJ5dGVzID0gbnVtQnl0ZXNGb3JTaXplKHNpemUsIGJ5dGVzUGVyUGl4ZWwpOwor
ICAgIGF1dG8gbnVtQnl0ZXMgPSBudW1CeXRlc0ZvclNpemUoc2l6ZSwgY2FsY3VsYXRlQnl0ZXNQ
ZXJQaXhlbChjb25maWd1cmF0aW9uKSk7CiAgICAgaWYgKG51bUJ5dGVzLmhhc092ZXJmbG93ZWQo
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTk4LDE1ICsxMDUsMTQgQEAgUmVmUHRy
PFNoYXJlYWJsZUJpdG1hcD4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoY29uc3Qg
SW50U2l6ZSYgc2l6ZSwgRmwKICAgICBpZiAoIXNoYXJlZE1lbW9yeSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYXJlYWJsZUJpdG1hcChzaXpl
LCBmbGFncywgc2hhcmVkTWVtb3J5KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFyZWFi
bGVCaXRtYXAoc2l6ZSwgY29uZmlndXJhdGlvbiwgc2hhcmVkTWVtb3J5KSk7CiB9CiAKLVJlZlB0
cjxTaGFyZWFibGVCaXRtYXA+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGNvbnN0IEludFNpemUm
IHNpemUsIEZsYWdzIGZsYWdzLCBSZWZQdHI8U2hhcmVkTWVtb3J5PiBzaGFyZWRNZW1vcnkpCitS
ZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShjb25zdCBJbnRT
aXplJiBzaXplLCBDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24sIFJlZlB0cjxTaGFyZWRNZW1v
cnk+IHNoYXJlZE1lbW9yeSkKIHsKICAgICBBU1NFUlQoc2hhcmVkTWVtb3J5KTsKIAotICAgIHVu
c2lnbmVkIGJ5dGVzUGVyUGl4ZWwgPSBjYWxjdWxhdGVCeXRlc1BlclBpeGVsKGZsYWdzKTsKLSAg
ICBhdXRvIG51bUJ5dGVzID0gbnVtQnl0ZXNGb3JTaXplKHNpemUsIGJ5dGVzUGVyUGl4ZWwpOwor
ICAgIGF1dG8gbnVtQnl0ZXMgPSBudW1CeXRlc0ZvclNpemUoc2l6ZSwgY2FsY3VsYXRlQnl0ZXNQ
ZXJQaXhlbChjb25maWd1cmF0aW9uKSk7CiAgICAgaWYgKG51bUJ5dGVzLmhhc092ZXJmbG93ZWQo
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgaWYgKHNoYXJlZE1lbW9yeS0+c2l6ZSgp
IDwgbnVtQnl0ZXMudW5zYWZlR2V0KCkpIHsKQEAgLTExNCw3ICsxMjAsNyBAQCBSZWZQdHI8U2hh
cmVhYmxlQml0bWFwPiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShjb25zdCBJbnRTaXplJiBzaXpl
LCBGbGFncyBmbGFncwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgCi0gICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFyZWFibGVCaXRtYXAoc2l6ZSwgZmxhZ3MsIHNoYXJlZE1l
bW9yeSkpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2hhcmVhYmxlQml0bWFwKHNpemUsIGNv
bmZpZ3VyYXRpb24sIHNoYXJlZE1lbW9yeSkpOwogfQogCiBSZWZQdHI8U2hhcmVhYmxlQml0bWFw
PiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShjb25zdCBIYW5kbGUmIGhhbmRsZSwgU2hhcmVkTWVt
b3J5OjpQcm90ZWN0aW9uIHByb3RlY3Rpb24pCkBAIC0xMjQsNyArMTMwLDcgQEAgUmVmUHRyPFNo
YXJlYWJsZUJpdG1hcD4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoY29uc3QgSGFuZGxlJiBoYW5k
bGUsIFNoYXJlZE1lbW8KICAgICBpZiAoIXNoYXJlZE1lbW9yeSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKLSAgICByZXR1cm4gY3JlYXRlKGhhbmRsZS5tX3NpemUsIGhhbmRsZS5tX2ZsYWdz
LCBXVEZNb3ZlKHNoYXJlZE1lbW9yeSkpOworICAgIHJldHVybiBjcmVhdGUoaGFuZGxlLm1fc2l6
ZSwgaGFuZGxlLm1fY29uZmlndXJhdGlvbiwgV1RGTW92ZShzaGFyZWRNZW1vcnkpKTsKIH0KIAog
Ym9vbCBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUhhbmRsZShIYW5kbGUmIGhhbmRsZSwgU2hhcmVk
TWVtb3J5OjpQcm90ZWN0aW9uIHByb3RlY3Rpb24pIGNvbnN0CkBAIC0xMzQsMjYgKzE0MCwyMyBA
QCBib29sIFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlSGFuZGxlKEhhbmRsZSYgaGFuZGxlLCBTaGFy
ZWRNZW1vcnk6OlByb3RlY3Rpb24gcHJvdAogICAgIGlmICghbV9zaGFyZWRNZW1vcnktPmNyZWF0
ZUhhbmRsZShoYW5kbGUubV9oYW5kbGUsIHByb3RlY3Rpb24pKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgaGFuZGxlLm1fc2l6ZSA9IG1fc2l6ZTsKLSAgICBoYW5kbGUubV9mbGFncyA9IG1f
ZmxhZ3M7Ci0gICAgaGFuZGxlLm1fYnl0ZXNQZXJQaXhlbCA9IG1fYnl0ZXNQZXJQaXhlbDsKKyAg
ICBoYW5kbGUubV9jb25maWd1cmF0aW9uID0gbV9jb25maWd1cmF0aW9uOwogICAgIHJldHVybiB0
cnVlOwogfQogCi1TaGFyZWFibGVCaXRtYXA6OlNoYXJlYWJsZUJpdG1hcChjb25zdCBJbnRTaXpl
JiBzaXplLCBGbGFncyBmbGFncywgdm9pZCogZGF0YSkKK1NoYXJlYWJsZUJpdG1hcDo6U2hhcmVh
YmxlQml0bWFwKGNvbnN0IEludFNpemUmIHNpemUsIENvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlv
biwgdm9pZCogZGF0YSkKICAgICA6IG1fc2l6ZShzaXplKQotICAgICwgbV9mbGFncyhmbGFncykK
KyAgICAsIG1fY29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uKQogICAgICwgbV9kYXRhKGRhdGEp
CiB7Ci0gICAgbV9ieXRlc1BlclBpeGVsID0gY2FsY3VsYXRlQnl0ZXNQZXJQaXhlbChmbGFncyk7
CiB9CiAKLVNoYXJlYWJsZUJpdG1hcDo6U2hhcmVhYmxlQml0bWFwKGNvbnN0IEludFNpemUmIHNp
emUsIEZsYWdzIGZsYWdzLCBSZWZQdHI8U2hhcmVkTWVtb3J5PiBzaGFyZWRNZW1vcnkpCitTaGFy
ZWFibGVCaXRtYXA6OlNoYXJlYWJsZUJpdG1hcChjb25zdCBJbnRTaXplJiBzaXplLCBDb25maWd1
cmF0aW9uIGNvbmZpZ3VyYXRpb24sIFJlZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJlZE1lbW9yeSkK
ICAgICA6IG1fc2l6ZShzaXplKQotICAgICwgbV9mbGFncyhmbGFncykKKyAgICAsIG1fY29uZmln
dXJhdGlvbihjb25maWd1cmF0aW9uKQogICAgICwgbV9zaGFyZWRNZW1vcnkoc2hhcmVkTWVtb3J5
KQotICAgICwgbV9kYXRhKDApCisgICAgLCBtX2RhdGEobnVsbHB0cikKIHsKLSAgICBtX2J5dGVz
UGVyUGl4ZWwgPSBjYWxjdWxhdGVCeXRlc1BlclBpeGVsKGZsYWdzKTsKIH0KIAogU2hhcmVhYmxl
Qml0bWFwOjp+U2hhcmVhYmxlQml0bWFwKCkKQEAgLTE3MSw0ICsxNzQsMTEgQEAgdm9pZCogU2hh
cmVhYmxlQml0bWFwOjpkYXRhKCkgY29uc3QKICAgICByZXR1cm4gbV9kYXRhOwogfQogCisjaWYg
IVVTRShDRykKK3Vuc2lnbmVkIFNoYXJlYWJsZUJpdG1hcDo6Y2FsY3VsYXRlQnl0ZXNQZXJQaXhl
bChjb25zdCBDb25maWd1cmF0aW9uJikKK3sKKyAgICByZXR1cm4gNDsKK30KKyNlbmRpZgorCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1No
YXJlYWJsZUJpdG1hcC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmgK
aW5kZXggZGY2YzQ1YzFkMTZhZjZiZGFmMWNlZmE2MzQ0M2IxZTdkYTRhYTQzYi4uZDAyZDVjNWZi
MzRjNGQxMDNhM2Q2YWI2MDI5OTExYzQ1OWE3NTk0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hh
cmVhYmxlQml0bWFwLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
CiAKICNpZiBVU0UoQ0cpCisjaW5jbHVkZSAiQ29sb3JTcGFjZURhdGEuaCIKICNpbmNsdWRlIDx3
dGYvUmV0YWluUHRyLmg+CiAjZW5kaWYKIApAQCAtNDAsMjAgKzQxLDIzIEBACiAjZW5kaWYKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewotICAgIGNsYXNzIEltYWdlOwotICAgIGNsYXNzIEdyYXBoaWNz
Q29udGV4dDsKK2NsYXNzIEltYWdlOworY2xhc3MgR3JhcGhpY3NDb250ZXh0OwogfQogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKICAgICAKIGNsYXNzIFNoYXJlYWJsZUJpdG1hcCA6IHB1YmxpYyBSZWZD
b3VudGVkPFNoYXJlYWJsZUJpdG1hcD4gewogcHVibGljOgotICAgIGVudW0gRmxhZyB7Ci0gICAg
ICAgIE5vRmxhZ3MgPSAwLAotICAgICAgICBTdXBwb3J0c0FscGhhID0gMSA8PCAwLAotICAgICAg
ICBTdXBwb3J0c0V4dGVuZGVkQ29sb3IgPSAxIDw8IDEsCisgICAgc3RydWN0IENvbmZpZ3VyYXRp
b24geworICAgICAgICBib29sIGlzT3BhcXVlIHsgZmFsc2UgfTsKKyNpZiBQTEFURk9STShDT0NP
QSkKKyAgICAgICAgQ29sb3JTcGFjZURhdGEgY29sb3JTcGFjZTsKKyNlbmRpZgorCisgICAgICAg
IHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNvbnN0OworICAgICAgICBzdGF0aWMgYm9vbCBk
ZWNvZGUoSVBDOjpEZWNvZGVyJiwgQ29uZmlndXJhdGlvbiYpOwogICAgIH07Ci0gICAgdHlwZWRl
ZiB1bnNpZ25lZCBGbGFnczsKIAogICAgIGNsYXNzIEhhbmRsZSB7CiAgICAgICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKEhhbmRsZSk7CkBAIC03MiwxOCArNzYsMTcgQEAgcHVibGljOgogCiAgICAg
ICAgIG11dGFibGUgU2hhcmVkTWVtb3J5OjpIYW5kbGUgbV9oYW5kbGU7CiAgICAgICAgIFdlYkNv
cmU6OkludFNpemUgbV9zaXplOwotICAgICAgICBGbGFncyBtX2ZsYWdzOwotICAgICAgICB1bnNp
Z25lZCBtX2J5dGVzUGVyUGl4ZWw7CisgICAgICAgIENvbmZpZ3VyYXRpb24gbV9jb25maWd1cmF0
aW9uOwogICAgIH07CiAKICAgICAvLyBDcmVhdGUgYSBzaGFyZWFibGUgYml0bWFwIHRoYXQgdXNl
cyBtYWxsb2NlZCBtZW1vcnkuCi0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGNy
ZWF0ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgRmxhZ3MpOworICAgIHN0YXRpYyBSZWZQdHI8
U2hhcmVhYmxlQml0bWFwPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIENvbmZpZ3Vy
YXRpb24pOwogCiAgICAgLy8gQ3JlYXRlIGEgc2hhcmVhYmxlIGJpdG1hcCB3aG9zZSBiYWNraW5n
IG1lbW9yeSBjYW4gYmUgc2hhcmVkIHdpdGggYW5vdGhlciBwcm9jZXNzLgotICAgIHN0YXRpYyBS
ZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBjcmVhdGVTaGFyZWFibGUoY29uc3QgV2ViQ29yZTo6SW50
U2l6ZSYsIEZsYWdzKTsKKyAgICBzdGF0aWMgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gY3JlYXRl
U2hhcmVhYmxlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBDb25maWd1cmF0aW9uKTsKIAogICAg
IC8vIENyZWF0ZSBhIHNoYXJlYWJsZSBiaXRtYXAgZnJvbSBhbiBhbHJlYWR5IGV4aXN0aW5nIHNo
YXJlZCBtZW1vcnkgYmxvY2suCi0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGNy
ZWF0ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgRmxhZ3MsIFJlZlB0cjxTaGFyZWRNZW1vcnk+
KTsKKyAgICBzdGF0aWMgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gY3JlYXRlKGNvbnN0IFdlYkNv
cmU6OkludFNpemUmLCBDb25maWd1cmF0aW9uLCBSZWZQdHI8U2hhcmVkTWVtb3J5Pik7CiAKICAg
ICAvLyBDcmVhdGUgYSBzaGFyZWFibGUgYml0bWFwIGZyb20gYSBoYW5kbGUuCiAgICAgc3RhdGlj
IFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGNyZWF0ZShjb25zdCBIYW5kbGUmLCBTaGFyZWRNZW1v
cnk6OlByb3RlY3Rpb24gPSBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRXcml0ZSk7CkBA
IC0xMjMsOCArMTI2LDggQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgU2hhcmVh
YmxlQml0bWFwKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBGbGFncywgdm9pZCopOwotICAgIFNo
YXJlYWJsZUJpdG1hcChjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgRmxhZ3MsIFJlZlB0cjxTaGFy
ZWRNZW1vcnk+KTsKKyAgICBTaGFyZWFibGVCaXRtYXAoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYs
IENvbmZpZ3VyYXRpb24sIHZvaWQqKTsKKyAgICBTaGFyZWFibGVCaXRtYXAoY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYsIENvbmZpZ3VyYXRpb24sIFJlZlB0cjxTaGFyZWRNZW1vcnk+KTsKIAogI2lm
IFVTRShDQUlSTykKICAgICBzdGF0aWMgQ2hlY2tlZDx1bnNpZ25lZCwgUmVjb3JkT3ZlcmZsb3c+
IG51bUJ5dGVzRm9yU2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJik7CkBAIC0xNDcsMTIgKzE1
MCwxMyBAQCBwcml2YXRlOgogI2lmIFVTRShDQUlSTykKICAgICBzaXplX3Qgc2l6ZUluQnl0ZXMo
KSBjb25zdCB7IHJldHVybiBudW1CeXRlc0ZvclNpemUobV9zaXplKS51bnNhZmVHZXQoKTsgfQog
I2Vsc2UKLSAgICBzaXplX3Qgc2l6ZUluQnl0ZXMoKSBjb25zdCB7IHJldHVybiBudW1CeXRlc0Zv
clNpemUobV9zaXplLCBtX2J5dGVzUGVyUGl4ZWwpLnVuc2FmZUdldCgpOyB9CisgICAgc2l6ZV90
IHNpemVJbkJ5dGVzKCkgY29uc3QgeyByZXR1cm4gbnVtQnl0ZXNGb3JTaXplKG1fc2l6ZSwgY2Fs
Y3VsYXRlQnl0ZXNQZXJQaXhlbChtX2NvbmZpZ3VyYXRpb24pKS51bnNhZmVHZXQoKTsgfQogI2Vu
ZGlmCi0gICAgCisKKyAgICBzdGF0aWMgdW5zaWduZWQgY2FsY3VsYXRlQnl0ZXNQZXJQaXhlbChj
b25zdCBDb25maWd1cmF0aW9uJik7CisKICAgICBXZWJDb3JlOjpJbnRTaXplIG1fc2l6ZTsKLSAg
ICBGbGFncyBtX2ZsYWdzOwotICAgIHVuc2lnbmVkIG1fYnl0ZXNQZXJQaXhlbDsKKyAgICBDb25m
aWd1cmF0aW9uIG1fY29uZmlndXJhdGlvbjsKIAogICAgIC8vIElmIHRoZSBzaGFyZWFibGUgYml0
bWFwIGlzIGJhY2tlZCBieSBzaGFyZWQgbWVtb3J5LCB0aGlzIHBvaW50cyB0byB0aGUgc2hhcmVk
IG1lbW9yeSBvYmplY3QuCiAgICAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gbV9zaGFyZWRNZW1vcnk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
Y3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRl
eCAzNzE1YmU0NDE1OTQ1NDI3YzMyN2JlZmZmMzMzNjU2OWYxMzA3YjA4Li43YzQ5Y2U4NjI5OGI2
MjFmZWY2NzZiNWUwNjU4MjEwNGQ1NGY4ZmY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTExMTksNyArMTExOSw3IEBAIGJvb2wgQXJn
dW1lbnRDb2RlcjxDcmVkZW50aWFsPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIENyZWRlbnRp
YWwmIGNyZWRlbnRpYWwpCiAKIHN0YXRpYyB2b2lkIGVuY29kZUltYWdlKEVuY29kZXImIGVuY29k
ZXIsIEltYWdlJiBpbWFnZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiaXRtYXAg
PSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShJbnRTaXplKGltYWdlLnNpemUoKSks
IFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNBbHBoYSk7CisgICAgUmVmUHRyPFNoYXJlYWJsZUJp
dG1hcD4gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoSW50U2l6ZShp
bWFnZS5zaXplKCkpLCB7IH0pOwogICAgIGJpdG1hcC0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCkt
PmRyYXdJbWFnZShpbWFnZSwgSW50UG9pbnQoKSk7CiAKICAgICBTaGFyZWFibGVCaXRtYXA6Okhh
bmRsZSBoYW5kbGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJJbWFnZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJJbWFnZS5jcHAKaW5kZXggODRjNjljNTdmMDJh
ODhlOTFhZDVjNTQ2Mjg2ZTM1ZWNjY2ZlNTdlNC4uZDk0M2RiZjRkOTRkNTMyN2M3ZGQwZDYxMWU4
YTA4MTM5YmJiMGU4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViSW1hZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkltYWdlLmNwcApAQCAtMjYsMjUgKzI2
LDI0IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViSW1hZ2UuaCIKIAotI2lu
Y2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5oIgotCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAog
bmFtZXNwYWNlIFdlYktpdCB7CiAKIFJlZlB0cjxXZWJJbWFnZT4gV2ViSW1hZ2U6OmNyZWF0ZShj
b25zdCBJbnRTaXplJiBzaXplLCBJbWFnZU9wdGlvbnMgb3B0aW9ucykKIHsKLSAgICBpbnQgc2hh
cmFibGVPcHRpb25zID0gU2hhcmVhYmxlQml0bWFwOjpTdXBwb3J0c0FscGhhOwotICAgIAotICAg
IGlmIChvcHRpb25zICYgSW1hZ2VPcHRpb25zRXh0ZW5kZWRDb2xvcikKLSAgICAgICAgc2hhcmFi
bGVPcHRpb25zIHw9IFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNFeHRlbmRlZENvbG9yOworICAg
IHJldHVybiBXZWJJbWFnZTo6Y3JlYXRlKHNpemUsIG9wdGlvbnMsIHsgfSk7Cit9CisKK1JlZlB0
cjxXZWJJbWFnZT4gV2ViSW1hZ2U6OmNyZWF0ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXpl
LCBJbWFnZU9wdGlvbnMgb3B0aW9ucywgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0
aW9uJiBiaXRtYXBDb25maWd1cmF0aW9uKQorewogICAgIGlmIChvcHRpb25zICYgSW1hZ2VPcHRp
b25zU2hhcmVhYmxlKSB7Ci0gICAgICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpj
cmVhdGVTaGFyZWFibGUoc2l6ZSwgc2hhcmFibGVPcHRpb25zKTsKKyAgICAgICAgYXV0byBiaXRt
YXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShzaXplLCBiaXRtYXBDb25maWd1
cmF0aW9uKTsKICAgICAgICAgaWYgKCFiaXRtYXApCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICAgICAgcmV0dXJuIFdlYkltYWdlOjpjcmVhdGUoYml0bWFwLnJlbGVhc2VOb25OdWxs
KCkpOwogICAgIH0KLSAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKHNp
emUsIHNoYXJhYmxlT3B0aW9ucyk7CisgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6
OmNyZWF0ZShzaXplLCBiaXRtYXBDb25maWd1cmF0aW9uKTsKICAgICBpZiAoIWJpdG1hcCkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIFdlYkltYWdlOjpjcmVhdGUoYml0bWFw
LnJlbGVhc2VOb25OdWxsKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
SW1hZ2UuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkltYWdlLmgKaW5kZXggNDU3NGM5ZTQ5
ZWQxNDQwYjI1MmM1MGIzY2Y4MjRhNDlhYWU1OWE1MS4uMjJmMzg2ZjlkMjlhNWRmNTc0MzhmYmFi
NDc4YmJmODZmZTFjZDEwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViSW1h
Z2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJJbWFnZS5oCkBAIC0yNyw2ICsyNyw3
IEBACiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJJbWFnZU9wdGlvbnMuaCIK
KyNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIKICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM1LDEzICszNiwxMiBAQCBjbGFzcyBJbnRTaXplOwogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgU2hhcmVhYmxlQml0bWFwOwotCiAvLyBXZWJJbWFn
ZSAtIEFuIGltYWdlIHR5cGUgc3VpdGFibGUgZm9yIHZlbmRpbmcgdG8gYW4gQVBJLgogCiBjbGFz
cyBXZWJJbWFnZSA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6Oklt
YWdlPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZlB0cjxXZWJJbWFnZT4gY3JlYXRlKGNvbnN0
IFdlYkNvcmU6OkludFNpemUmLCBJbWFnZU9wdGlvbnMpOworICAgIHN0YXRpYyBSZWZQdHI8V2Vi
SW1hZ2U+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgSW1hZ2VPcHRpb25zLCBjb25z
dCBTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb24mKTsKICAgICBzdGF0aWMgUmVmPFdlYklt
YWdlPiBjcmVhdGUoUmVmPFNoYXJlYWJsZUJpdG1hcD4mJik7CiAgICAgfldlYkltYWdlKCk7CiAg
ICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBD
Ry5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5jcHAKaW5k
ZXggOWZlMGZhYjVjY2U2MjU2NDgwZDk4YTBhMTBiZDljMDY2ZjY5NWZiMy4uOWU1YTE0ZWZlMzRk
MWE5NDUyOGZlMzFiZjk5YWY5YzgwZWQzMGFmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcApAQCAtMjksNDggKzI5LDYyIEBACiAjaW5jbHVkZSA8
V2ViQ29yZS9CaXRtYXBJbWFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0
Q0cuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtU2NyZWVuLmg+CisjaW5jbHVkZSA8cGFs
L3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAj
aW5jbHVkZSAiQ0dVdGlsaXRpZXMuaCIKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5h
bWVzcGFjZSBXZWJLaXQgeworICAgIAorc3RhdGljIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNl
KGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKK3sK
KyAgICByZXR1cm4gY29uZmlndXJhdGlvbi5jb2xvclNwYWNlLmNnQ29sb3JTcGFjZS5nZXQoKSA/
OiBzUkdCQ29sb3JTcGFjZVJlZigpOworfQorCitzdGF0aWMgYm9vbCB3YW50c0V4dGVuZGVkUmFu
Z2UoY29uc3QgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKQor
eworI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQg
Pj0gMTAxMjAwKSB8fCBQTEFURk9STShJT1MpCisgICAgcmV0dXJuIENHQ29sb3JTcGFjZVVzZXNF
eHRlbmRlZFJhbmdlKGNvbG9yU3BhY2UoY29uZmlndXJhdGlvbikpOworI2Vsc2UKKyAgICBVTlVT
RURfUEFSQU0oY29uZmlndXJhdGlvbik7CisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCit9CiAK
LXN0YXRpYyBDR0JpdG1hcEluZm8gYml0bWFwSW5mbyhTaGFyZWFibGVCaXRtYXA6OkZsYWdzIGZs
YWdzKQorc3RhdGljIENHQml0bWFwSW5mbyBiaXRtYXBJbmZvKGNvbnN0IFNoYXJlYWJsZUJpdG1h
cDo6Q29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKIHsKICAgICBDR0JpdG1hcEluZm8gaW5m
byA9IDA7Ci0gICAgaWYgKGZsYWdzICYgU2hhcmVhYmxlQml0bWFwOjpTdXBwb3J0c0V4dGVuZGVk
Q29sb3IpIHsKKyAgICBpZiAod2FudHNFeHRlbmRlZFJhbmdlKGNvbmZpZ3VyYXRpb24pKSB7CiAg
ICAgICAgIGluZm8gfD0ga0NHQml0bWFwRmxvYXRDb21wb25lbnRzIHwga0NHQml0bWFwQnl0ZU9y
ZGVyMTZIb3N0OwotICAgICAgICAKLSAgICAgICAgaWYgKGZsYWdzICYgU2hhcmVhYmxlQml0bWFw
OjpTdXBwb3J0c0FscGhhKQotICAgICAgICAgICAgaW5mbyB8PSBrQ0dJbWFnZUFscGhhUHJlbXVs
dGlwbGllZExhc3Q7Ci0gICAgICAgIGVsc2UKKworICAgICAgICBpZiAoY29uZmlndXJhdGlvbi5p
c09wYXF1ZSkKICAgICAgICAgICAgIGluZm8gfD0ga0NHSW1hZ2VBbHBoYU5vbmVTa2lwTGFzdDsK
LSAgICAgICAgCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGluZm8gfD0ga0NHSW1hZ2VBbHBo
YVByZW11bHRpcGxpZWRMYXN0OwogICAgIH0gZWxzZSB7CiAgICAgICAgIGluZm8gfD0ga0NHQml0
bWFwQnl0ZU9yZGVyMzJIb3N0OwotICAgICAgICAKLSAgICAgICAgaWYgKGZsYWdzICYgU2hhcmVh
YmxlQml0bWFwOjpTdXBwb3J0c0FscGhhKQotICAgICAgICAgICAgaW5mbyB8PSBrQ0dJbWFnZUFs
cGhhUHJlbXVsdGlwbGllZEZpcnN0OwotICAgICAgICBlbHNlCisKKyAgICAgICAgaWYgKGNvbmZp
Z3VyYXRpb24uaXNPcGFxdWUpCiAgICAgICAgICAgICBpbmZvIHw9IGtDR0ltYWdlQWxwaGFOb25l
U2tpcEZpcnN0OworICAgICAgICBlbHNlCisgICAgICAgICAgICBpbmZvIHw9IGtDR0ltYWdlQWxw
aGFQcmVtdWx0aXBsaWVkRmlyc3Q7CiAgICAgfQotICAgIAorCiAgICAgcmV0dXJuIGluZm87CiB9
Ci0gICAgCi1zdGF0aWMgQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2UoU2hhcmVhYmxlQml0bWFw
OjpGbGFncyBmbGFncykKKwordW5zaWduZWQgU2hhcmVhYmxlQml0bWFwOjpjYWxjdWxhdGVCeXRl
c1BlclBpeGVsKGNvbnN0IENvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCiB7Ci0gICAgaWYg
KGZsYWdzICYgU2hhcmVhYmxlQml0bWFwOjpTdXBwb3J0c0V4dGVuZGVkQ29sb3IpCi0gICAgICAg
IHJldHVybiBleHRlbmRlZFNSR0JDb2xvclNwYWNlUmVmKCk7Ci0gICAgcmV0dXJuIHNSR0JDb2xv
clNwYWNlUmVmKCk7CisgICAgcmV0dXJuIHdhbnRzRXh0ZW5kZWRSYW5nZShjb25maWd1cmF0aW9u
KSA/IDggOiA0OwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0PiBTaGFyZWFi
bGVCaXRtYXA6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpCiB7CiAgICAgcmVmKCk7IC8vIEJhbGFu
Y2VkIGJ5IGRlcmVmIGluIHJlbGVhc2VCaXRtYXBDb250ZXh0RGF0YS4KLSAgICAKLSAgICBSZXRh
aW5QdHI8Q0dDb250ZXh0UmVmPiBiaXRtYXBDb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRl
eHRDcmVhdGVXaXRoRGF0YShkYXRhKCksIG1fc2l6ZS53aWR0aCgpLCBtX3NpemUuaGVpZ2h0KCks
IG1fYnl0ZXNQZXJQaXhlbCAqIDggLyA0LCBtX3NpemUud2lkdGgoKSAqIG1fYnl0ZXNQZXJQaXhl
bCwgY29sb3JTcGFjZShtX2ZsYWdzKSwgYml0bWFwSW5mbyhtX2ZsYWdzKSwgcmVsZWFzZUJpdG1h
cENvbnRleHREYXRhLCB0aGlzKSk7CisKKyAgICB1bnNpZ25lZCBieXRlc1BlclBpeGVsID0gY2Fs
Y3VsYXRlQnl0ZXNQZXJQaXhlbChtX2NvbmZpZ3VyYXRpb24pOworICAgIFJldGFpblB0cjxDR0Nv
bnRleHRSZWY+IGJpdG1hcENvbnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZVdp
dGhEYXRhKGRhdGEoKSwgbV9zaXplLndpZHRoKCksIG1fc2l6ZS5oZWlnaHQoKSwgYnl0ZXNQZXJQ
aXhlbCAqIDggLyA0LCBtX3NpemUud2lkdGgoKSAqIGJ5dGVzUGVyUGl4ZWwsIGNvbG9yU3BhY2Uo
bV9jb25maWd1cmF0aW9uKSwgYml0bWFwSW5mbyhtX2NvbmZpZ3VyYXRpb24pLCByZWxlYXNlQml0
bWFwQ29udGV4dERhdGEsIHRoaXMpKTsKICAgICAKICAgICBBU1NFUlQoYml0bWFwQ29udGV4dC5n
ZXQoKSk7CiAKQEAgLTEwOCw3ICsxMjIsOCBAQCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gU2hhcmVh
YmxlQml0bWFwOjptYWtlQ0dJbWFnZSgpCiBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gU2hhcmVhYmxl
Qml0bWFwOjpjcmVhdGVDR0ltYWdlKENHRGF0YVByb3ZpZGVyUmVmIGRhdGFQcm92aWRlcikgY29u
c3QKIHsKICAgICBBU1NFUlRfQVJHKGRhdGFQcm92aWRlciwgZGF0YVByb3ZpZGVyKTsKLSAgICBS
ZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2UgPSBhZG9wdENGKENHSW1hZ2VDcmVhdGUobV9zaXpl
LndpZHRoKCksIG1fc2l6ZS5oZWlnaHQoKSwgbV9ieXRlc1BlclBpeGVsICogOCAvIDQsIG1fYnl0
ZXNQZXJQaXhlbCAqIDgsIG1fc2l6ZS53aWR0aCgpICogbV9ieXRlc1BlclBpeGVsLCBjb2xvclNw
YWNlKG1fZmxhZ3MpLCBiaXRtYXBJbmZvKG1fZmxhZ3MpLCBkYXRhUHJvdmlkZXIsIDAsIGZhbHNl
LCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0KSk7CisgICAgdW5zaWduZWQgYnl0ZXNQZXJQaXhl
bCA9IGNhbGN1bGF0ZUJ5dGVzUGVyUGl4ZWwobV9jb25maWd1cmF0aW9uKTsKKyAgICBSZXRhaW5Q
dHI8Q0dJbWFnZVJlZj4gaW1hZ2UgPSBhZG9wdENGKENHSW1hZ2VDcmVhdGUobV9zaXplLndpZHRo
KCksIG1fc2l6ZS5oZWlnaHQoKSwgYnl0ZXNQZXJQaXhlbCAqIDggLyA0LCBieXRlc1BlclBpeGVs
ICogOCwgbV9zaXplLndpZHRoKCkgKiBieXRlc1BlclBpeGVsLCBjb2xvclNwYWNlKG1fY29uZmln
dXJhdGlvbiksIGJpdG1hcEluZm8obV9jb25maWd1cmF0aW9uKSwgZGF0YVByb3ZpZGVyLCAwLCBm
YWxzZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpOwogICAgIHJldHVybiBpbWFnZTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3Rr
LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKaW5k
ZXggMzQyNjI2MDIwMDI2ZGRmOTcwMWJhMGFiYzdmOWNlMGUxMjQ1OTEzYi4uN2RlYzljZTliODJl
OGI1OWZlOGJiM2IzY2Y3NGIwZGMwNjkyMzE2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwCkBAIC00Miw3ICs0Miw3IEBAIG5hbWVzcGFjZSBJ
UEMgewogCiBzdGF0aWMgdm9pZCBlbmNvZGVJbWFnZShFbmNvZGVyJiBlbmNvZGVyLCBJbWFnZSYg
aW1hZ2UpCiB7Ci0gICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gYml0bWFwID0gU2hhcmVhYmxl
Qml0bWFwOjpjcmVhdGVTaGFyZWFibGUoSW50U2l6ZShpbWFnZS5zaXplKCkpLCBTaGFyZWFibGVC
aXRtYXA6OlN1cHBvcnRzQWxwaGEpOworICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJpdG1h
cCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKEludFNpemUoaW1hZ2Uuc2l6ZSgp
KSwgeyB9KTsKICAgICBiaXRtYXAtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpLT5kcmF3SW1hZ2Uo
aW1hZ2UsIEludFBvaW50KCkpOwogCiAgICAgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgaGFuZGxl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1JlbW90ZUxheWVyQmFja2lu
Z1N0b3JlLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1JlbW90ZUxheWVyQmFja2luZ1N0
b3JlLm1tCmluZGV4IDRkMDliODQ0NjZlYWFlNDkzMDVhOGMxNjgwNDI1OTk5MWFiNzE2MTkuLjJh
NWQyZWNkMWI5NzkxMjNiNTBjNzZhODU3ZGJlYzY5NWE2NWM1YWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL21hYy9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0KQEAgLTIxMiw4
ICsyMTIsMTEgQEAgdm9pZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6c3dhcFRvVmFsaWRGcm9u
dEJ1ZmZlcigpCiAgICAgQVNTRVJUKCFtX2FjY2VsZXJhdGVzRHJhd2luZyk7CiAgICAgc3RkOjpz
d2FwKG1fZnJvbnRCdWZmZXIsIG1fYmFja0J1ZmZlcik7CiAKLSAgICBpZiAoIW1fZnJvbnRCdWZm
ZXIuYml0bWFwKQotICAgICAgICBtX2Zyb250QnVmZmVyLmJpdG1hcCA9IFNoYXJlYWJsZUJpdG1h
cDo6Y3JlYXRlU2hhcmVhYmxlKGV4cGFuZGVkU2NhbGVkU2l6ZSwgbV9pc09wYXF1ZSA/IFNoYXJl
YWJsZUJpdG1hcDo6Tm9GbGFncyA6IFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNBbHBoYSk7Cisg
ICAgaWYgKCFtX2Zyb250QnVmZmVyLmJpdG1hcCkgeworICAgICAgICBTaGFyZWFibGVCaXRtYXA6
OkNvbmZpZ3VyYXRpb24gYml0bWFwQ29uZmlndXJhdGlvbjsKKyAgICAgICAgYml0bWFwQ29uZmln
dXJhdGlvbi5pc09wYXF1ZSA9IG1faXNPcGFxdWU7CisgICAgICAgIG1fZnJvbnRCdWZmZXIuYml0
bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoZXhwYW5kZWRTY2FsZWRTaXpl
LCBiaXRtYXBDb25maWd1cmF0aW9uKTsKKyAgICB9CiB9CiAKIGJvb2wgUmVtb3RlTGF5ZXJCYWNr
aW5nU3RvcmU6OmRpc3BsYXkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL19XS1RodW1ibmFpbFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLVGh1bWJuYWlsVmlldy5tbQppbmRleCA4NDQyODIzZmUxN2QyNjRlZjA4NDNh
YTA0NzEzNWNjN2Q3ZmZmN2JlLi5lZmI1NjM0YTNjM2MxMGJjODU1ZjMwOTcyNThjYTE0Y2IyOTlk
NGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVGh1
bWJuYWlsVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
VGh1bWJuYWlsVmlldy5tbQpAQCAtOTIsNyArOTIsNyBAQCAtICh2b2lkKXJlcXVlc3RTbmFwc2hv
dAogCiAgICAgUmV0YWluUHRyPF9XS1RodW1ibmFpbFZpZXc+IHRodW1ibmFpbFZpZXcgPSBzZWxm
OwogICAgIEludFJlY3Qgc25hcHNob3RSZWN0KEludFBvaW50KCksIF93ZWJQYWdlUHJveHktPnZp
ZXdTaXplKCkgLSBJbnRTaXplKDAsIF93ZWJQYWdlUHJveHktPnRvcENvbnRlbnRJbnNldCgpKSk7
Ci0gICAgU25hcHNob3RPcHRpb25zIG9wdGlvbnMgPSBTbmFwc2hvdE9wdGlvbnNJblZpZXdDb29y
ZGluYXRlczsKKyAgICBTbmFwc2hvdE9wdGlvbnMgb3B0aW9ucyA9IFNuYXBzaG90T3B0aW9uc0lu
Vmlld0Nvb3JkaW5hdGVzIHwgU25hcHNob3RPcHRpb25zVXNlU2NyZWVuQ29sb3JTcGFjZTsKICAg
ICBJbnRTaXplIGJpdG1hcFNpemUgPSBzbmFwc2hvdFJlY3Quc2l6ZSgpOwogICAgIGJpdG1hcFNp
emUuc2NhbGUoX3NjYWxlICogX3dlYlBhZ2VQcm94eS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00v
SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwCmluZGV4IGQx
ZmJjMjVkNWMyMjc2MDkxMGMyNzQ0OTY1ZTk2NDNmY2QyNjlmMmIuLmQ0NmM5MmQwYWJmMDZlNDFj
ZTQ2OWZiNzZjODk1MDdiNWIyYzUyM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1
bmRsZVJhbmdlSGFuZGxlLmNwcApAQCAtMTMwLDcgKzEzMCw3IEBAIFJlZlB0cjxXZWJJbWFnZT4g
SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZTo6cmVuZGVyZWRJbWFnZShTbmFwc2hvdE9wdGlvbnMg
b3B0aW9uCiAgICAgSW50U2l6ZSBiYWNraW5nU3RvcmVTaXplID0gcGFpbnRSZWN0LnNpemUoKTsK
ICAgICBiYWNraW5nU3RvcmVTaXplLnNjYWxlKHNjYWxlRmFjdG9yKTsKIAotICAgIFJlZlB0cjxT
aGFyZWFibGVCaXRtYXA+IGJhY2tpbmdTdG9yZSA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hh
cmVhYmxlKGJhY2tpbmdTdG9yZVNpemUsIFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNBbHBoYSk7
CisgICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gYmFja2luZ1N0b3JlID0gU2hhcmVhYmxlQml0
bWFwOjpjcmVhdGVTaGFyZWFibGUoYmFja2luZ1N0b3JlU2l6ZSwgeyB9KTsKICAgICBpZiAoIWJh
Y2tpbmdTdG9yZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2lu
LmNwcAppbmRleCBhNGQ3ZjFhOTBjYzkwMjkxYTc3MTA5ZDE2ODFmZTI0YmIzMzIwNWI0Li5jYjk3
M2Q3ZjdhZWU1MjMwMGEwYzhiZTVkNmE5ZWFlNGJiMGI3MWIwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVn
aW4uY3BwCkBAIC03NTQsNyArNzU0LDcgQEAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gTmV0c2Nh
cGVQbHVnaW46OnNuYXBzaG90KCkKICAgICBJbnRTaXplIGJhY2tpbmdTdG9yZVNpemUgPSBtX3Bs
dWdpblNpemU7CiAgICAgYmFja2luZ1N0b3JlU2l6ZS5zY2FsZShjb250ZW50c1NjYWxlRmFjdG9y
KCkpOwogCi0gICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gYml0bWFwID0gU2hhcmVhYmxlQml0
bWFwOjpjcmVhdGVTaGFyZWFibGUoYmFja2luZ1N0b3JlU2l6ZSwgU2hhcmVhYmxlQml0bWFwOjpT
dXBwb3J0c0FscGhhKTsKKyAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiaXRtYXAgPSBTaGFy
ZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShiYWNraW5nU3RvcmVTaXplLCB7IH0pOwogICAg
IGF1dG8gY29udGV4dCA9IGJpdG1hcC0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7CiAKICAgICAv
LyBGSVhNRTogV2Ugc2hvdWxkIHJlYWxseSBjYWxsIGFwcGx5RGV2aWNlU2NhbGVGYWN0b3IgaW5z
dGVhZCBvZiBzY2FsZSwgYnV0IHRoYXQgZW5kcyB1cCBjYWxsaW5nIGludG8gV0tTSQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbSBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KaW5kZXgg
ZjJmMDgwY2MxOTUzYTkwZjAwYTZjN2IyMTk1ZjEzMDhmZTBmZTFhOS4uOTI3YzhhYzQzZDI1ZDZm
N2M3Yjg3ODU2NjY2MDdiZDI3M2IzZWJhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCkBAIC0xMjQ2LDcgKzEyNDYsNyBAQCBSZWZQ
dHI8U2hhcmVhYmxlQml0bWFwPiBQREZQbHVnaW46OnNuYXBzaG90KCkKICAgICBJbnRTaXplIGJh
Y2tpbmdTdG9yZVNpemUgPSBzaXplKCk7CiAgICAgYmFja2luZ1N0b3JlU2l6ZS5zY2FsZShjb250
ZW50c1NjYWxlRmFjdG9yKTsKIAotICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJpdG1hcCA9
IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGJhY2tpbmdTdG9yZVNpemUsIFNoYXJl
YWJsZUJpdG1hcDo6U3VwcG9ydHNBbHBoYSk7CisgICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4g
Yml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoYmFja2luZ1N0b3JlU2l6
ZSwgeyB9KTsKICAgICBhdXRvIGNvbnRleHQgPSBiaXRtYXAtPmNyZWF0ZUdyYXBoaWNzQ29udGV4
dCgpOwogCiAgICAgY29udGV4dC0+c2NhbGUoRmxvYXRTaXplKGNvbnRlbnRzU2NhbGVGYWN0b3Is
IC1jb250ZW50c1NjYWxlRmFjdG9yKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAKaW5kZXggNmI0ZGRmY2M5OTVkODYxOTNlZDY1ZmIwZTk5
NGFhN2JjMDViN2Y0Zi4uZTY4ZDlkYWZlOWRjYTM0YThiMTQyNmYzZjU2NmVlYTBlNzQ4ODUzNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNw
cApAQCAtMjcwLDcgKzI3MCw3IEBAIHZvaWQgUGx1Z2luUHJveHk6Omdlb21ldHJ5RGlkQ2hhbmdl
KCkKIAogICAgIGlmICh1cGRhdGVCYWNraW5nU3RvcmUoKSkgewogICAgICAgICAvLyBDcmVhdGUg
YSBuZXcgcGx1Zy1pbiBiYWNraW5nIHN0b3JlLgotICAgICAgICBtX3BsdWdpbkJhY2tpbmdTdG9y
ZSA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKG1fYmFja2luZ1N0b3JlLT5zaXpl
KCksIFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNBbHBoYSk7CisgICAgICAgIG1fcGx1Z2luQmFj
a2luZ1N0b3JlID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUobV9iYWNraW5nU3Rv
cmUtPnNpemUoKSwgeyB9KTsKICAgICAgICAgaWYgKCFtX3BsdWdpbkJhY2tpbmdTdG9yZSkKICAg
ICAgICAgICAgIHJldHVybjsKIApAQCAtNjEzLDcgKzYxMyw3IEBAIGJvb2wgUGx1Z2luUHJveHk6
OnVwZGF0ZUJhY2tpbmdTdG9yZSgpCiAgICAgICAgIG1fYmFja2luZ1N0b3JlID0gbnVsbHB0cjsg
Ly8gR2l2ZSBtYWxsb2MgYSBjaGFuY2UgdG8gcmVjeWNsZSBvdXIgYmFja2luZyBzdG9yZS4KICAg
ICB9CiAKLSAgICBtX2JhY2tpbmdTdG9yZSA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGJhY2tp
bmdTdG9yZVNpemUsIFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNBbHBoYSk7CisgICAgbV9iYWNr
aW5nU3RvcmUgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShiYWNraW5nU3RvcmVTaXplLCB7IH0p
OwogICAgIHJldHVybiAhIW1fYmFja2luZ1N0b3JlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkRyYWdDbGllbnRHdGsuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJEcmFnQ2xp
ZW50R3RrLmNwcAppbmRleCBhMmJjODRkYThiYjg0Mjk3MTJlN2Y2MDUzMDFhMTJkYmU3NTY3Y2U4
Li40YzNkYjA4N2RiYTVhNjkzOWQwZTVhYzM4MGQyNmUyYzc5NDRjNWNlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkRyYWdDbGllbnRH
dGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsv
V2ViRHJhZ0NsaWVudEd0ay5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgc3RhdGljIFJlZlB0cjxTaGFy
ZWFibGVCaXRtYXA+IGNvbnZlcnRDYWlyb1N1cmZhY2VUb1NoYXJlYWJsZUJpdG1hcChjYWlyb19z
dXJmYWMKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBJbnRTaXplIGltYWdlU2l6ZShj
YWlyb19pbWFnZV9zdXJmYWNlX2dldF93aWR0aChzdXJmYWNlKSwgY2Fpcm9faW1hZ2Vfc3VyZmFj
ZV9nZXRfaGVpZ2h0KHN1cmZhY2UpKTsKLSAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiaXRt
YXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShpbWFnZVNpemUsIFNoYXJlYWJs
ZUJpdG1hcDo6U3VwcG9ydHNBbHBoYSk7CisgICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gYml0
bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoaW1hZ2VTaXplLCB7IH0pOwog
ICAgIGF1dG8gZ3JhcGhpY3NDb250ZXh0ID0gYml0bWFwLT5jcmVhdGVHcmFwaGljc0NvbnRleHQo
KTsKIAogICAgIGdyYXBoaWNzQ29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmRyYXdTdXJmYWNl
VG9Db250ZXh0KHN1cmZhY2UsIEludFJlY3QoSW50UG9pbnQoKSwgaW1hZ2VTaXplKSwgSW50UmVj
dChJbnRQb2ludCgpLCBpbWFnZVNpemUpLCAqZ3JhcGhpY3NDb250ZXh0KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVu
dE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2Vi
RHJhZ0NsaWVudE1hYy5tbQppbmRleCBiMGNlZTIxYTg4MTEyNDA5ZjQyMmE2YTc3ZjYwY2Y1NTVk
ZmViMDNmLi5iMDNmNWY0Y2ViMjFhODQ3MWM0NDdmNWVjZWZjYjM1NzY1YjVjMTRmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdD
bGllbnRNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCkBAIC00MSw3ICs0MSw3IEBACiAjaW1wb3J0IDxXZWJD
b3JlL0ZyYW1lLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlci5o
PgogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZVZpZXcuaD4KLSNpbXBvcnQgPFdlYkNvcmUvR3JhcGhp
Y3NDb250ZXh0Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dENHLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL0xlZ2FjeVdlYkFyY2hpdmUuaD4KICNpbXBvcnQgPFdlYkNvcmUvTWFpbkZy
YW1lLmg+CiAjaW1wb3J0IDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CkBAIC02NywxMiArNjcs
OSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RhdGljIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+
IGNvbnZlcnRJbWFnZVRvQml0bWFwKE5TSW1hZ2UgKmltYWdlLCBjb25zdCBJbnRTaXplJiBzaXpl
LCBGcmFtZSYgZnJhbWUpCiB7Ci0gICAgU2hhcmVhYmxlQml0bWFwOjpGbGFncyBmbGFncyA9IFNo
YXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNBbHBoYTsKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID49IDEwMTIwMAotICAgIGlmIChzY3JlZW5TdXBwb3J0c0V4dGVuZGVkQ29sb3Io
ZnJhbWUubWFpbkZyYW1lKCkudmlldygpKSkKLSAgICAgICAgZmxhZ3MgfD0gU2hhcmVhYmxlQml0
bWFwOjpTdXBwb3J0c0V4dGVuZGVkQ29sb3I7Ci0jZW5kaWYKLSAgICBhdXRvIGJpdG1hcCA9IFNo
YXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKHNpemUsIGZsYWdzKTsKKyAgICBTaGFyZWFi
bGVCaXRtYXA6OkNvbmZpZ3VyYXRpb24gYml0bWFwQ29uZmlndXJhdGlvbjsKKyAgICBiaXRtYXBD
b25maWd1cmF0aW9uLmNvbG9yU3BhY2UuY2dDb2xvclNwYWNlID0gc2NyZWVuQ29sb3JTcGFjZShm
cmFtZS5tYWluRnJhbWUoKS52aWV3KCkpOworICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0
bWFwOjpjcmVhdGVTaGFyZWFibGUoc2l6ZSwgYml0bWFwQ29uZmlndXJhdGlvbik7CiAgICAgaWYg
KCFiaXRtYXApCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC0xOTUsNyArMTkyLDkgQEAg
dm9pZCBXZWJEcmFnQ2xpZW50OjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgRWxlbWUKIAogc3RhdGljIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+
IGNvbnZlcnRDR0ltYWdlVG9CaXRtYXAoQ0dJbWFnZVJlZiBpbWFnZSwgY29uc3QgSW50U2l6ZSYg
c2l6ZSwgRnJhbWUmIGZyYW1lKQogewotICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFw
OjpjcmVhdGVTaGFyZWFibGUoc2l6ZSwgU2hhcmVhYmxlQml0bWFwOjpTdXBwb3J0c0FscGhhIHwg
U2hhcmVhYmxlQml0bWFwOjpTdXBwb3J0c0V4dGVuZGVkQ29sb3IpOworICAgIFNoYXJlYWJsZUJp
dG1hcDo6Q29uZmlndXJhdGlvbiBiaXRtYXBDb25maWd1cmF0aW9uOworICAgIGJpdG1hcENvbmZp
Z3VyYXRpb24uY29sb3JTcGFjZS5jZ0NvbG9yU3BhY2UgPSBzY3JlZW5Db2xvclNwYWNlKGZyYW1l
Lm1haW5GcmFtZSgpLnZpZXcoKSk7CisgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6
OmNyZWF0ZVNoYXJlYWJsZShzaXplLCBiaXRtYXBDb25maWd1cmF0aW9uKTsKICAgICBpZiAoIWJp
dG1hcCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYUltcGwuY3BwCmluZGV4IDAzMTUyMjgwYmY2
ZTAzMmY0OTdiY2I1MmYxZGRiNmMxNGNiNzQ5NTkuLjcwZGJmNTU3NGM1ZjUyYjI3YTM5YjRkODBm
MDg1YTQ0OTFhMzJmZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0RyYXdpbmdBcmVhSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvRHJhd2luZ0FyZWFJbXBsLmNwcApAQCAtNDE2LDcgKzQxNiw3IEBAIHZvaWQgRHJhd2lu
Z0FyZWFJbXBsOjpkaXNwbGF5KFVwZGF0ZUluZm8mIHVwZGF0ZUluZm8pCiAgICAgSW50U2l6ZSBi
aXRtYXBTaXplID0gYm91bmRzLnNpemUoKTsKICAgICBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciA9
IG1fd2ViUGFnZS5jb3JlUGFnZSgpLT5kZXZpY2VTY2FsZUZhY3RvcigpOwogICAgIGJpdG1hcFNp
emUuc2NhbGUoZGV2aWNlU2NhbGVGYWN0b3IpOwotICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+
IGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGJpdG1hcFNpemUsIFNo
YXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNBbHBoYSk7CisgICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1h
cD4gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoYml0bWFwU2l6ZSwg
eyB9KTsKICAgICBpZiAoIWJpdG1hcCkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKaW5kZXggMjJhYmMyMDg4N2M5MGQw
NTUyZjRlM2M5ZDZmYTM0NzNiYWE2N2U2Ni4uOWRkYjhlYmVlMmRjZDI2MjRiZTlkZjljMWQ0ZmJi
MzVkODI5NDFlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZy
YW1lLmNwcApAQCAtODI0LDcgKzgyNCw3IEBAIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IFdlYkZy
YW1lOjpjcmVhdGVTZWxlY3Rpb25TbmFwc2hvdCgpIGNvbnN0CiAgICAgaWYgKCFzbmFwc2hvdCkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIHNoYXJlZFNuYXBzaG90ID0gU2hh
cmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoc25hcHNob3QtPmludGVybmFsU2l6ZSgpLCBT
aGFyZWFibGVCaXRtYXA6OlN1cHBvcnRzQWxwaGEpOworICAgIGF1dG8gc2hhcmVkU25hcHNob3Qg
PSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShzbmFwc2hvdC0+aW50ZXJuYWxTaXpl
KCksIHsgfSk7CiAgICAgaWYgKCFzaGFyZWRTbmFwc2hvdCkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5k
ZXggYTBhN2I3MzUyYjI0NzE4NWI4M2Q4N2UyYzBhNjczNTIyYzY0NmY1My4uNWEzNjhlMWE1ZDQ3
ZDI0MzYzMWYwYTRmMzBjZDIwOTE1NWQxMTJhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTE5ODksNiArMTk4OSwxNiBAQCBzdGF0aWMgdm9p
ZCBwYWludFNuYXBzaG90QXRTaXplKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEludFNpemUm
IGJpdG1hcFNpemUsCiAgICAgfQogfQogCitzdGF0aWMgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1
cmF0aW9uIHNuYXBzaG90T3B0aW9uc1RvQml0bWFwQ29uZmlndXJhdGlvbihTbmFwc2hvdE9wdGlv
bnMgb3B0aW9ucywgV2ViUGFnZSYgcGFnZSkKK3sKKyAgICBTaGFyZWFibGVCaXRtYXA6OkNvbmZp
Z3VyYXRpb24gY29uZmlndXJhdGlvbjsKKyNpZiBVU0UoQ0cpCisgICAgaWYgKG9wdGlvbnMgJiBT
bmFwc2hvdE9wdGlvbnNVc2VTY3JlZW5Db2xvclNwYWNlKQorICAgICAgICBjb25maWd1cmF0aW9u
LmNvbG9yU3BhY2UuY2dDb2xvclNwYWNlID0gc2NyZWVuQ29sb3JTcGFjZShwYWdlLmNvcmVQYWdl
KCktPm1haW5GcmFtZSgpLnZpZXcoKSk7CisjZW5kaWYKKyAgICByZXR1cm4gY29uZmlndXJhdGlv
bjsKK30KKwogUmVmUHRyPFdlYkltYWdlPiBXZWJQYWdlOjpzbmFwc2hvdEF0U2l6ZShjb25zdCBJ
bnRSZWN0JiByZWN0LCBjb25zdCBJbnRTaXplJiBiaXRtYXBTaXplLCBTbmFwc2hvdE9wdGlvbnMg
b3B0aW9ucykKIHsKICAgICBGcmFtZSogY29yZUZyYW1lID0gbV9tYWluRnJhbWUtPmNvcmVGcmFt
ZSgpOwpAQCAtMTk5OSw3ICsyMDA5LDkgQEAgUmVmUHRyPFdlYkltYWdlPiBXZWJQYWdlOjpzbmFw
c2hvdEF0U2l6ZShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbnRTaXplJiBiaXQKICAgICBp
ZiAoIWZyYW1lVmlldykKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIHNuYXBz
aG90ID0gV2ViSW1hZ2U6OmNyZWF0ZShiaXRtYXBTaXplLCBzbmFwc2hvdE9wdGlvbnNUb0ltYWdl
T3B0aW9ucyhvcHRpb25zKSk7CisgICAgYXV0byBzbmFwc2hvdCA9IFdlYkltYWdlOjpjcmVhdGUo
Yml0bWFwU2l6ZSwgc25hcHNob3RPcHRpb25zVG9JbWFnZU9wdGlvbnMob3B0aW9ucyksIHNuYXBz
aG90T3B0aW9uc1RvQml0bWFwQ29uZmlndXJhdGlvbihvcHRpb25zLCAqdGhpcykpOworICAgIGlm
ICghc25hcHNob3QpCisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGF1dG8gZ3JhcGhpY3ND
b250ZXh0ID0gc25hcHNob3QtPmJpdG1hcCgpLmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOwogCiAg
ICAgcGFpbnRTbmFwc2hvdEF0U2l6ZShyZWN0LCBiaXRtYXBTaXplLCBvcHRpb25zLCAqY29yZUZy
YW1lLCAqZnJhbWVWaWV3LCAqZ3JhcGhpY3NDb250ZXh0KTsKQEAgLTIwNjYsOCArMjA3OCw5IEBA
IFJlZlB0cjxXZWJJbWFnZT4gV2ViUGFnZTo6c25hcHNob3ROb2RlKFdlYkNvcmU6Ok5vZGUmIG5v
ZGUsIFNuYXBzaG90T3B0aW9ucyBvcHRpCiAgICAgICAgIHNuYXBzaG90U2l6ZSA9IEludFNpemUo
c25hcHNob3RTaXplLndpZHRoKCkgKiBzY2FsZUZhY3RvciwgbWF4aW11bUhlaWdodCk7CiAgICAg
fQogCi0gICAgYXV0byBzbmFwc2hvdCA9IFdlYkltYWdlOjpjcmVhdGUoc25hcHNob3RTaXplLCBz
bmFwc2hvdE9wdGlvbnNUb0ltYWdlT3B0aW9ucyhvcHRpb25zKSk7Ci0KKyAgICBhdXRvIHNuYXBz
aG90ID0gV2ViSW1hZ2U6OmNyZWF0ZShzbmFwc2hvdFNpemUsIHNuYXBzaG90T3B0aW9uc1RvSW1h
Z2VPcHRpb25zKG9wdGlvbnMpLCBzbmFwc2hvdE9wdGlvbnNUb0JpdG1hcENvbmZpZ3VyYXRpb24o
b3B0aW9ucywgKnRoaXMpKTsKKyAgICBpZiAoIXNuYXBzaG90KQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICBhdXRvIGdyYXBoaWNzQ29udGV4dCA9IHNuYXBzaG90LT5iaXRtYXAoKS5jcmVh
dGVHcmFwaGljc0NvbnRleHQoKTsKIAogICAgIGlmICghKG9wdGlvbnMgJiBTbmFwc2hvdE9wdGlv
bnNFeGNsdWRlRGV2aWNlU2NhbGVGYWN0b3IpKSB7CkBAIC00NDM0LDcgKzQ0NDcsNyBAQCB2b2lk
IFdlYlBhZ2U6OmRyYXdSZWN0VG9JbWFnZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBQcmludElu
Zm8mIHByaW50SW5mbywgY29ucwogICAgICAgICBBU1NFUlQoY29yZUZyYW1lLT5kb2N1bWVudCgp
LT5wcmludGluZygpKTsKICNlbmRpZgogCi0gICAgICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxl
Qml0bWFwOjpjcmVhdGVTaGFyZWFibGUoaW1hZ2VTaXplLCBTaGFyZWFibGVCaXRtYXA6OlN1cHBv
cnRzQWxwaGEpOworICAgICAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRl
U2hhcmVhYmxlKGltYWdlU2l6ZSwgeyB9KTsKICAgICAgICAgaWYgKCFiaXRtYXApIHsKICAgICAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0g
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRl
eCBmNjQxZTA3ZGQzODgzZjJkYzRkMjYzMjI2NWExMGVmOTAxZjQ1Y2NhLi44Yzg5Y2YyYTZiNTA4
MjllZWY0Y2ZiYzQyZmNmNTI5NmVlOWYzYzc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtMjUzMyw5ICsyNTMzLDkgQEAg
dm9pZCBXZWJQYWdlOjpnZXRQb3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0IEludGVyYWN0aW9uSW5m
b3JtYXRpb25SZXF1ZXN0JiByZXF1ZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEZsb2F0U2l6ZSBzY2FsZWRTaXplID0gbGFyZ2VzdFJlY3RXaXRoQXNwZWN0UmF0aW9JbnNp
ZGVSZWN0KGltYWdlLT5zaXplKCkud2lkdGgoKSAvIGltYWdlLT5zaXplKCkuaGVpZ2h0KCksIEZs
b2F0UmVjdCgwLCAwLCBzY3JlZW5TaXplSW5QaXhlbHMud2lkdGgoKSwgc2NyZWVuU2l6ZUluUGl4
ZWxzLmhlaWdodCgpKSkuc2l6ZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRmxvYXRTaXplIGJpdG1hcFNpemUgPSBzY2FsZWRTaXplLndpZHRoKCkgPCBpbWFnZS0+c2l6
ZSgpLndpZHRoKCkgPyBzY2FsZWRTaXplIDogaW1hZ2UtPnNpemUoKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBPbmx5IHNlbGVjdCBFeHRlbmRlZENvbG9y
IG9uIGltYWdlcyBrbm93biB0byBuZWVkIHdpZGUgZ2FtdXQKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFNoYXJlYWJsZUJpdG1hcDo6RmxhZ3MgZmxhZ3MgPSBTaGFyZWFibGVC
aXRtYXA6OlN1cHBvcnRzQWxwaGE7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBmbGFncyB8PSBzY3JlZW5TdXBwb3J0c0V4dGVuZGVkQ29sb3IoKSA/IFNoYXJlYWJsZUJpdG1h
cDo6U3VwcG9ydHNFeHRlbmRlZENvbG9yIDogMDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBzaGFyZWRCaXRtYXAgPSBTaGFy
ZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShJbnRTaXplKGJpdG1hcFNpemUpLCBmbGFncykp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYXJlYWJsZUJpdG1hcDo6
Q29uZmlndXJhdGlvbiBiaXRtYXBDb25maWd1cmF0aW9uOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYml0bWFwQ29uZmlndXJhdGlvbi5jb2xvclNwYWNlLmNnQ29sb3JTcGFj
ZSA9IHNjcmVlbkNvbG9yU3BhY2UobV9wYWdlLT5tYWluRnJhbWUoKS52aWV3KCkpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+
IHNoYXJlZEJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKEludFNpemUo
Yml0bWFwU2l6ZSksIGJpdG1hcENvbmZpZ3VyYXRpb24pKSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYXV0byBncmFwaGljc0NvbnRleHQgPSBzaGFyZWRCaXRtYXAt
PmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd0ltYWdlKCppbWFnZSwgRmxvYXRSZWN0KDAs
IDAsIGJpdG1hcFNpemUud2lkdGgoKSwgYml0bWFwU2l6ZS5oZWlnaHQoKSkpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm8uaW1hZ2UgPSBzaGFyZWRCaXRtYXA7
Cg==
</data>
<flag name="review"
          id="339202"
          type_id="1"
          status="+"
          setter="dino"
    />
          </attachment>
      

    </bug>

</bugzilla>