<?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>127779</bug_id>
          
          <creation_ts>2014-01-28 08:17:14 -0800</creation_ts>
          <short_desc>Subpixel rendering: Make RoundedRect layout unit aware.</short_desc>
          <delta_ts>2014-01-30 21:37:09 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>127524</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>d-r</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>jonlee</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>972915</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2014-01-28 08:17:14 -0800</bug_when>
    <thetext>to be able to paint hairline borders.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>972926</commentid>
    <comment_count>1</comment_count>
      <attachid>222445</attachid>
    <who name="alan">zalan</who>
    <bug_when>2014-01-28 08:40:46 -0800</bug_when>
    <thetext>Created attachment 222445
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>972928</commentid>
    <comment_count>2</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2014-01-28 08:41:41 -0800</bug_when>
    <thetext>Alternatively, we could use FloatRoundedRect instead of LayouUnit based RoundedRect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>972929</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-28 08:42:18 -0800</bug_when>
    <thetext>Attachment 222445 did not pass style-queue:


ERROR: Source/WebCore/rendering/RenderBoxModelObject.cpp:2250:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/WebCore/rendering/RenderBoxModelObject.cpp:2250:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
Total errors found: 2 in 9 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>972984</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2014-01-28 10:01:49 -0800</bug_when>
    <thetext>&lt;rdar://problem/15926087&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>972994</commentid>
    <comment_count>5</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-01-28 10:25:38 -0800</bug_when>
    <thetext>Pls fix the red.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>973028</commentid>
    <comment_count>6</comment_count>
      <attachid>222472</attachid>
    <who name="alan">zalan</who>
    <bug_when>2014-01-28 12:08:43 -0800</bug_when>
    <thetext>Created attachment 222472
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>973031</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-28 12:10:53 -0800</bug_when>
    <thetext>Attachment 222472 did not pass style-queue:


ERROR: Source/WebCore/rendering/RenderBoxModelObject.cpp:2250:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/WebCore/rendering/RenderBoxModelObject.cpp:2250:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
Total errors found: 2 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>973033</commentid>
    <comment_count>8</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2014-01-28 12:13:09 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; Attachment 222472 [details] did not pass style-queue:
&gt; 
&gt; 
&gt; ERROR: Source/WebCore/rendering/RenderBoxModelObject.cpp:2250:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
&gt; ERROR: Source/WebCore/rendering/RenderBoxModelObject.cpp:2250:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
&gt; Total errors found: 2 in 11 files
&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against check-webkit-style.

The style checker gets confused and reports whitespace/indent issue on this, while it actually fails on the following line: (will file a bug against webkit-check-style)

RenderBoxModelObject::clipBorderSidePolygon()

-&gt; secondQuad[1] = side == BSTop || side == BSBottom ? FloatPoint(quad[0].x(), quad[1].y())
    : FloatPoint(quad[1].x(), quad[0].y());</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>973071</commentid>
    <comment_count>9</comment_count>
      <attachid>222482</attachid>
    <who name="alan">zalan</who>
    <bug_when>2014-01-28 13:51:32 -0800</bug_when>
    <thetext>Created attachment 222482
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>973072</commentid>
    <comment_count>10</comment_count>
      <attachid>222482</attachid>
    <who name="alan">zalan</who>
    <bug_when>2014-01-28 13:51:56 -0800</bug_when>
    <thetext>Comment on attachment 222482
Patch

ews first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>973261</commentid>
    <comment_count>11</comment_count>
      <attachid>222546</attachid>
    <who name="alan">zalan</who>
    <bug_when>2014-01-28 19:21:34 -0800</bug_when>
    <thetext>Created attachment 222546
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>973262</commentid>
    <comment_count>12</comment_count>
      <attachid>222546</attachid>
    <who name="alan">zalan</who>
    <bug_when>2014-01-28 19:22:33 -0800</bug_when>
    <thetext>Comment on attachment 222546
Patch

EWS (failed mac-wk2 before)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974189</commentid>
    <comment_count>13</comment_count>
      <attachid>222786</attachid>
    <who name="alan">zalan</who>
    <bug_when>2014-01-30 20:03:39 -0800</bug_when>
    <thetext>Created attachment 222786
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974190</commentid>
    <comment_count>14</comment_count>
      <attachid>222786</attachid>
    <who name="alan">zalan</who>
    <bug_when>2014-01-30 20:04:26 -0800</bug_when>
    <thetext>Comment on attachment 222786
Patch

EWS testing the other platform bots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974207</commentid>
    <comment_count>15</comment_count>
      <attachid>222786</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-30 21:37:06 -0800</bug_when>
    <thetext>Comment on attachment 222786
Patch

Clearing flags on attachment: 222786

Committed r163156: &lt;http://trac.webkit.org/changeset/163156&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974208</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-30 21:37:09 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222445</attachid>
            <date>2014-01-28 08:40:46 -0800</date>
            <delta_ts>2014-01-28 12:08:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-127779-20140128084048.patch</filename>
            <type>text/plain</type>
            <size>41587</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYyOTMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGFkYmNhZjVlYzkwZTNl
NmMxZjUzNDRiOGE3NTFhNzA5MWMwZDZlNi4uNDcyZWQ5ZjIyNGViMDc3NWI0OTk5OWFhOGVlNzcz
MTUwMDdiOWRlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY5IEBACisyMDE0LTAxLTI4ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgU3VicGl4ZWwgcmVuZGVyaW5n
OiBNYWtlIFJvdW5kZWRSZWN0IGxheW91dCB1bml0IGF3YXJlLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3Nzc5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW4gb3JkZXIgdG8gZHJhdyBoYWlybGluZSBi
b3JkZXJzLCBSb3VuZGVkUmVjdCBuZWVkcyB0byBiZQorICAgICAgICBMYXlvdXRVbml0IGJhc2Vk
LgorCisgICAgICAgIE5vIGNoYW5nZSBpbiBiZWhhdmlvci4KKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQ6OmZpbGxSb3VuZGVkUmVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZFJl
Y3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Um91bmRlZFJlY3Q6OlJhZGlpOjpzY2FsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSb3VuZGVkUmVjdDo6UmFkaWk6OmV4cGFuZCk6CisgICAgICAgIChX
ZWJDb3JlOjpSb3VuZGVkUmVjdDo6aW5mbGF0ZVdpdGhSYWRpaSk6CisgICAgICAgIChXZWJDb3Jl
OjpSb3VuZGVkUmVjdDo6Um91bmRlZFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Um91bmRlZFJl
Y3Q6OmludGVyc2VjdHNRdWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Sb3VuZGVk
UmVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6Um91bmRlZFJlY3Q6OlJhZGlpOjpSYWRpaSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSb3VuZGVkUmVjdDo6UmFkaWk6OnNldFRvcExlZnQpOgorICAgICAg
ICAoV2ViQ29yZTo6Um91bmRlZFJlY3Q6OlJhZGlpOjpzZXRUb3BSaWdodCk6CisgICAgICAgIChX
ZWJDb3JlOjpSb3VuZGVkUmVjdDo6UmFkaWk6OnNldEJvdHRvbUxlZnQpOgorICAgICAgICAoV2Vi
Q29yZTo6Um91bmRlZFJlY3Q6OlJhZGlpOjpzZXRCb3R0b21SaWdodCk6CisgICAgICAgIChXZWJD
b3JlOjpSb3VuZGVkUmVjdDo6UmFkaWk6OnRvcExlZnQpOgorICAgICAgICAoV2ViQ29yZTo6Um91
bmRlZFJlY3Q6OlJhZGlpOjp0b3BSaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpSb3VuZGVkUmVj
dDo6UmFkaWk6OmJvdHRvbUxlZnQpOgorICAgICAgICAoV2ViQ29yZTo6Um91bmRlZFJlY3Q6OlJh
ZGlpOjpib3R0b21SaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpSb3VuZGVkUmVjdDo6UmFkaWk6
OmV4cGFuZCk6CisgICAgICAgIChXZWJDb3JlOjpSb3VuZGVkUmVjdDo6UmFkaWk6OnNocmluayk6
CisgICAgICAgIChXZWJDb3JlOjpSb3VuZGVkUmVjdDo6cmVjdCk6CisgICAgICAgIChXZWJDb3Jl
OjpSb3VuZGVkUmVjdDo6c2V0UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSb3VuZGVkUmVjdDo6
bW92ZSk6CisgICAgICAgIChXZWJDb3JlOjpSb3VuZGVkUmVjdDo6aW5mbGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpSb3VuZGVkUmVjdDo6ZXhwYW5kUmFkaWkpOgorICAgICAgICAoV2ViQ29yZTo6
Um91bmRlZFJlY3Q6OnNocmlua1JhZGlpKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9T
aGFkb3dCbHVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmF0Y2hCdWZmZXI6OnNldENhY2hl
ZFNoYWRvd1ZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JhdGNoQnVmZmVyOjpzZXRDYWNo
ZWRJbnNldFNoYWRvd1ZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRlU2xpY2VTaXpl
c0Zyb21SYWRpaSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjp0ZW1wbGF0ZVNpemUp
OgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3cpOgorICAgICAg
ICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93KToKKyAgICAgICAgKFdlYkNv
cmU6OlNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0aG91dFRpbGluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRob3V0VGlsaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvd1dpdGhUaWxpbmcpOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3dXaXRoVGlsaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRyYXdMYXllclBpZWNlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFkb3dCbHVyOjpiZWdpblNoYWRvd0xheWVyKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9TaGFkb3dCbHVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
R3JhcGhpY3NDb250ZXh0Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
OjpwbGF0Zm9ybUluaXQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVj
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRPbmVC
b3JkZXJTaWRlKToKKyAgICAgICAgKFdlYkNvcmU6OmNhbGN1bGF0ZVNpZGVSZWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJvcmRlclNpZGVzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJvcmRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpjYWxjdWxhdGVTaWRlUmVjdEluY2x1ZGluZ0lubmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OmNhbGN1bGF0ZUFkanVzdGVkSW5uZXJCb3JkZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6YXJlYUNhc3RpbmdTaGFkb3dJbkhvbGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94
TW9kZWxPYmplY3Q6OnBhaW50Qm94U2hhZG93KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
Qm94TW9kZWxPYmplY3QuaDoKKwogMjAxNC0wMS0yOCAgTWFyayBSb3dlICA8bXJvd2VAYXBwbGUu
Y29tPgogCiAgICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8xMjc3Njc+IERpc2FibGUgc29t
ZSBkZXByZWNhdGlvbiB3YXJuaW5ncyB0byBmaXggdGhlIGJ1aWxkLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKaW5kZXggZjEy
ZjAyYTZmNmY4NTY2OWZlMmQ3YjJjMDM5MDdhNWMwM2UzODc4YS4uNmI0ZDdhOWEzZDcyZWRjMzI1
YTk5NGU3OWNmNjFhMWYwMTk3NjVhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCkBAIC03NzEsNyArNzcxLDYgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3Qg
Q29sb3ImIGNvbG9yLCBDb2xvclMKIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSb3VuZGVk
UmVjdChjb25zdCBSb3VuZGVkUmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNw
YWNlIGNvbG9yU3BhY2UsIEJsZW5kTW9kZSBibGVuZE1vZGUpCiB7Ci0KICAgICBpZiAocmVjdC5p
c1JvdW5kZWQoKSkgewogICAgICAgICBzZXRDb21wb3NpdGVPcGVyYXRpb24oY29tcG9zaXRlT3Bl
cmF0aW9uKCksIGJsZW5kTW9kZSk7CiAgICAgICAgIGZpbGxSb3VuZGVkUmVjdChyZWN0LnJlY3Qo
KSwgcmVjdC5yYWRpaSgpLnRvcExlZnQoKSwgcmVjdC5yYWRpaSgpLnRvcFJpZ2h0KCksIHJlY3Qu
cmFkaWkoKS5ib3R0b21MZWZ0KCksIHJlY3QucmFkaWkoKS5ib3R0b21SaWdodCgpLCBjb2xvciwg
Y29sb3JTcGFjZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dC5oCmluZGV4IGE0Mzc4MjdhYzYyYWRkMjBjYTlkZmRkODk5OGI0MmM3NjEy
ZjRjZGYuLjg4ODY4MmU5MDhlOWIxNDAwZTRmNTE1NWU2MmVjZjQxN2U2ZmFlZjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCkBA
IC0yOTQsOSArMjk0LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIGZpbGxS
ZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IENvbG9yJiwgQ29sb3JTcGFjZSk7CiAgICAgICAg
IHZvaWQgZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiwgR3JhZGllbnQmKTsKICAgICAgICAgdm9p
ZCBmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBDb2xvciYsIENvbG9yU3BhY2UsIENv
bXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwpOwotICAgICAgICB2
b2lkIGZpbGxSb3VuZGVkUmVjdChjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50U2l6ZSYgdG9wTGVm
dCwgY29uc3QgSW50U2l6ZSYgdG9wUmlnaHQsIGNvbnN0IEludFNpemUmIGJvdHRvbUxlZnQsIGNv
bnN0IEludFNpemUmIGJvdHRvbVJpZ2h0LCBjb25zdCBDb2xvciYsIENvbG9yU3BhY2UpOworICAg
ICAgICB2b2lkIGZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFNp
emUmIHRvcExlZnQsIGNvbnN0IEZsb2F0U2l6ZSYgdG9wUmlnaHQsIGNvbnN0IEZsb2F0U2l6ZSYg
Ym90dG9tTGVmdCwgY29uc3QgRmxvYXRTaXplJiBib3R0b21SaWdodCwgY29uc3QgQ29sb3ImLCBD
b2xvclNwYWNlKTsKICAgICAgICAgdm9pZCBmaWxsUm91bmRlZFJlY3QoY29uc3QgUm91bmRlZFJl
Y3QmLCBjb25zdCBDb2xvciYsIENvbG9yU3BhY2UsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1h
bCk7Ci0gICAgICAgIHZvaWQgZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUoY29uc3QgSW50UmVjdCYs
IGNvbnN0IFJvdW5kZWRSZWN0JiByb3VuZGVkSG9sZVJlY3QsIGNvbnN0IENvbG9yJiwgQ29sb3JT
cGFjZSk7CisgICAgICAgIHZvaWQgZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUoY29uc3QgRmxvYXRS
ZWN0JiwgY29uc3QgUm91bmRlZFJlY3QmIHJvdW5kZWRIb2xlUmVjdCwgY29uc3QgQ29sb3ImLCBD
b2xvclNwYWNlKTsKIAogICAgICAgICB2b2lkIGNsZWFyUmVjdChjb25zdCBGbG9hdFJlY3QmKTsK
IApAQCAtMzMyLDcgKzMzMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gRklY
TUU6IENvbnNpZGVyIHdyaXRpbmcgdGhpcyBpbiB0ZXJtcyBvZiBhIHNwZWNpYWxpemVkIFJvdW5k
ZWRSZWN0IHRoYXQgdXNlcyBGbG9hdFJlY3QgYW5kIEZsb2F0U2l6ZSByYWRpaS4KICAgICAgICAg
dm9pZCBjbGlwUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRTaXplJiB0
b3BMZWZ0LCBjb25zdCBGbG9hdFNpemUmIHRvcFJpZ2h0LCBjb25zdCBGbG9hdFNpemUmIGJvdHRv
bUxlZnQsIGNvbnN0IEZsb2F0U2l6ZSYgYm90dG9tUmlnaHQpOwogCi0gICAgICAgIHZvaWQgY2xp
cE91dChjb25zdCBJbnRSZWN0Jik7CisgICAgICAgIHZvaWQgY2xpcE91dChjb25zdCBGbG9hdFJl
Y3QmKTsKICAgICAgICAgdm9pZCBjbGlwT3V0Um91bmRlZFJlY3QoY29uc3QgUm91bmRlZFJlY3Qm
KTsKICAgICAgICAgdm9pZCBjbGlwUGF0aChjb25zdCBQYXRoJiwgV2luZFJ1bGUpOwogICAgICAg
ICB2b2lkIGNsaXBDb252ZXhQb2x5Z29uKHNpemVfdCBudW1Qb2ludHMsIGNvbnN0IEZsb2F0UG9p
bnQqLCBib29sIGFudGlhbGlhcyA9IHRydWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZFJlY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvUm91bmRlZFJlY3QuY3BwCmluZGV4IDhmMmYxY2Y5MWUyOTNlZmE3NTQ0M2Ix
Y2Q1ZjA1ZDc3YzEyNWI4M2UuLmQ3MjczMjRlNzc0ZjYwZjllM2FlOWZkNjE5OTZjYzYzYjJmODhl
NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JvdW5kZWRS
ZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Sb3VuZGVkUmVj
dC5jcHAKQEAgLTI4LDYgKzI4LDkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJS
b3VuZGVkUmVjdC5oIgogCisjaW5jbHVkZSAiTGF5b3V0UmVjdC5oIgorI2luY2x1ZGUgIkxheW91
dFVuaXQuaCIKKwogI2luY2x1ZGUgPGFsZ29yaXRobT4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpA
QCAtNDUsNDIgKzQ4LDQyIEBAIHZvaWQgUm91bmRlZFJlY3Q6OlJhZGlpOjpzY2FsZShmbG9hdCBm
YWN0b3IpCiAgICAgLy8gSWYgZWl0aGVyIHJhZGl1cyBvbiBhIGNvcm5lciBiZWNvbWVzIHplcm8s
IHJlc2V0IGJvdGggcmFkaWkgb24gdGhhdCBjb3JuZXIuCiAgICAgbV90b3BMZWZ0LnNjYWxlKGZh
Y3Rvcik7CiAgICAgaWYgKCFtX3RvcExlZnQud2lkdGgoKSB8fCAhbV90b3BMZWZ0LmhlaWdodCgp
KQotICAgICAgICBtX3RvcExlZnQgPSBJbnRTaXplKCk7CisgICAgICAgIG1fdG9wTGVmdCA9IExh
eW91dFNpemUoKTsKICAgICBtX3RvcFJpZ2h0LnNjYWxlKGZhY3Rvcik7CiAgICAgaWYgKCFtX3Rv
cFJpZ2h0LndpZHRoKCkgfHwgIW1fdG9wUmlnaHQuaGVpZ2h0KCkpCi0gICAgICAgIG1fdG9wUmln
aHQgPSBJbnRTaXplKCk7CisgICAgICAgIG1fdG9wUmlnaHQgPSBMYXlvdXRTaXplKCk7CiAgICAg
bV9ib3R0b21MZWZ0LnNjYWxlKGZhY3Rvcik7CiAgICAgaWYgKCFtX2JvdHRvbUxlZnQud2lkdGgo
KSB8fCAhbV9ib3R0b21MZWZ0LmhlaWdodCgpKQotICAgICAgICBtX2JvdHRvbUxlZnQgPSBJbnRT
aXplKCk7CisgICAgICAgIG1fYm90dG9tTGVmdCA9IExheW91dFNpemUoKTsKICAgICBtX2JvdHRv
bVJpZ2h0LnNjYWxlKGZhY3Rvcik7CiAgICAgaWYgKCFtX2JvdHRvbVJpZ2h0LndpZHRoKCkgfHwg
IW1fYm90dG9tUmlnaHQuaGVpZ2h0KCkpCi0gICAgICAgIG1fYm90dG9tUmlnaHQgPSBJbnRTaXpl
KCk7CisgICAgICAgIG1fYm90dG9tUmlnaHQgPSBMYXlvdXRTaXplKCk7CiAKIH0KIAotdm9pZCBS
b3VuZGVkUmVjdDo6UmFkaWk6OmV4cGFuZChpbnQgdG9wV2lkdGgsIGludCBib3R0b21XaWR0aCwg
aW50IGxlZnRXaWR0aCwgaW50IHJpZ2h0V2lkdGgpCit2b2lkIFJvdW5kZWRSZWN0OjpSYWRpaTo6
ZXhwYW5kKGNvbnN0IExheW91dFVuaXQmIHRvcFdpZHRoLCBjb25zdCBMYXlvdXRVbml0JiBib3R0
b21XaWR0aCwgY29uc3QgTGF5b3V0VW5pdCYgbGVmdFdpZHRoLCBjb25zdCBMYXlvdXRVbml0JiBy
aWdodFdpZHRoKQogewogICAgIGlmIChtX3RvcExlZnQud2lkdGgoKSA+IDAgJiYgbV90b3BMZWZ0
LmhlaWdodCgpID4gMCkgewotICAgICAgICBtX3RvcExlZnQuc2V0V2lkdGgoc3RkOjptYXg8aW50
PigwLCBtX3RvcExlZnQud2lkdGgoKSArIGxlZnRXaWR0aCkpOwotICAgICAgICBtX3RvcExlZnQu
c2V0SGVpZ2h0KHN0ZDo6bWF4PGludD4oMCwgbV90b3BMZWZ0LmhlaWdodCgpICsgdG9wV2lkdGgp
KTsKKyAgICAgICAgbV90b3BMZWZ0LnNldFdpZHRoKHN0ZDo6bWF4PExheW91dFVuaXQ+KDAsIG1f
dG9wTGVmdC53aWR0aCgpICsgbGVmdFdpZHRoKSk7CisgICAgICAgIG1fdG9wTGVmdC5zZXRIZWln
aHQoc3RkOjptYXg8TGF5b3V0VW5pdD4oMCwgbV90b3BMZWZ0LmhlaWdodCgpICsgdG9wV2lkdGgp
KTsKICAgICB9CiAgICAgaWYgKG1fdG9wUmlnaHQud2lkdGgoKSA+IDAgJiYgbV90b3BSaWdodC5o
ZWlnaHQoKSA+IDApIHsKLSAgICAgICAgbV90b3BSaWdodC5zZXRXaWR0aChzdGQ6Om1heDxpbnQ+
KDAsIG1fdG9wUmlnaHQud2lkdGgoKSArIHJpZ2h0V2lkdGgpKTsKLSAgICAgICAgbV90b3BSaWdo
dC5zZXRIZWlnaHQoc3RkOjptYXg8aW50PigwLCBtX3RvcFJpZ2h0LmhlaWdodCgpICsgdG9wV2lk
dGgpKTsKKyAgICAgICAgbV90b3BSaWdodC5zZXRXaWR0aChzdGQ6Om1heDxMYXlvdXRVbml0Pigw
LCBtX3RvcFJpZ2h0LndpZHRoKCkgKyByaWdodFdpZHRoKSk7CisgICAgICAgIG1fdG9wUmlnaHQu
c2V0SGVpZ2h0KHN0ZDo6bWF4PExheW91dFVuaXQ+KDAsIG1fdG9wUmlnaHQuaGVpZ2h0KCkgKyB0
b3BXaWR0aCkpOwogICAgIH0KICAgICBpZiAobV9ib3R0b21MZWZ0LndpZHRoKCkgPiAwICYmIG1f
Ym90dG9tTGVmdC5oZWlnaHQoKSA+IDApIHsKLSAgICAgICAgbV9ib3R0b21MZWZ0LnNldFdpZHRo
KHN0ZDo6bWF4PGludD4oMCwgbV9ib3R0b21MZWZ0LndpZHRoKCkgKyBsZWZ0V2lkdGgpKTsKLSAg
ICAgICAgbV9ib3R0b21MZWZ0LnNldEhlaWdodChzdGQ6Om1heDxpbnQ+KDAsIG1fYm90dG9tTGVm
dC5oZWlnaHQoKSArIGJvdHRvbVdpZHRoKSk7CisgICAgICAgIG1fYm90dG9tTGVmdC5zZXRXaWR0
aChzdGQ6Om1heDxMYXlvdXRVbml0PigwLCBtX2JvdHRvbUxlZnQud2lkdGgoKSArIGxlZnRXaWR0
aCkpOworICAgICAgICBtX2JvdHRvbUxlZnQuc2V0SGVpZ2h0KHN0ZDo6bWF4PExheW91dFVuaXQ+
KDAsIG1fYm90dG9tTGVmdC5oZWlnaHQoKSArIGJvdHRvbVdpZHRoKSk7CiAgICAgfQogICAgIGlm
IChtX2JvdHRvbVJpZ2h0LndpZHRoKCkgPiAwICYmIG1fYm90dG9tUmlnaHQuaGVpZ2h0KCkgPiAw
KSB7Ci0gICAgICAgIG1fYm90dG9tUmlnaHQuc2V0V2lkdGgoc3RkOjptYXg8aW50PigwLCBtX2Jv
dHRvbVJpZ2h0LndpZHRoKCkgKyByaWdodFdpZHRoKSk7Ci0gICAgICAgIG1fYm90dG9tUmlnaHQu
c2V0SGVpZ2h0KHN0ZDo6bWF4PGludD4oMCwgbV9ib3R0b21SaWdodC5oZWlnaHQoKSArIGJvdHRv
bVdpZHRoKSk7CisgICAgICAgIG1fYm90dG9tUmlnaHQuc2V0V2lkdGgoc3RkOjptYXg8TGF5b3V0
VW5pdD4oMCwgbV9ib3R0b21SaWdodC53aWR0aCgpICsgcmlnaHRXaWR0aCkpOworICAgICAgICBt
X2JvdHRvbVJpZ2h0LnNldEhlaWdodChzdGQ6Om1heDxMYXlvdXRVbml0PigwLCBtX2JvdHRvbVJp
Z2h0LmhlaWdodCgpICsgYm90dG9tV2lkdGgpKTsKICAgICB9CiB9CiAKLXZvaWQgUm91bmRlZFJl
Y3Q6OmluZmxhdGVXaXRoUmFkaWkoaW50IHNpemUpCit2b2lkIFJvdW5kZWRSZWN0OjppbmZsYXRl
V2l0aFJhZGlpKGNvbnN0IExheW91dFVuaXQmIHNpemUpCiB7Ci0gICAgSW50UmVjdCBvbGQgPSBt
X3JlY3Q7CisgICAgTGF5b3V0UmVjdCBvbGQgPSBtX3JlY3Q7CiAKICAgICBtX3JlY3QuaW5mbGF0
ZShzaXplKTsKICAgICAvLyBDb25zaWRlcmluZyB0aGUgaW5mbGF0aW9uIGZhY3RvciBvZiBzaG9y
dGVyIHNpemUgdG8gc2NhbGUgdGhlIHJhZGlpIHNlZW1zIGFwcHJvcHJpYXRlIGhlcmUKQEAgLTEz
MSwxOCArMTM0LDE4IEBAIHZvaWQgUm91bmRlZFJlY3Q6OlJhZGlpOjpleGNsdWRlTG9naWNhbEVk
Z2VzKGJvb2wgaXNIb3Jpem9udGFsLCBib29sIGV4Y2x1ZGVMb2dpCiAgICAgfQogfQogCi1Sb3Vu
ZGVkUmVjdDo6Um91bmRlZFJlY3QoaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQp
CitSb3VuZGVkUmVjdDo6Um91bmRlZFJlY3QoY29uc3QgTGF5b3V0VW5pdCYgeCwgY29uc3QgTGF5
b3V0VW5pdCYgeSwgY29uc3QgTGF5b3V0VW5pdCYgd2lkdGgsIGNvbnN0IExheW91dFVuaXQmIGhl
aWdodCkKICAgICA6IG1fcmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0KQogewogfQogCi1Sb3VuZGVk
UmVjdDo6Um91bmRlZFJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgUmFkaWkmIHJhZGlp
KQorUm91bmRlZFJlY3Q6OlJvdW5kZWRSZWN0KGNvbnN0IExheW91dFJlY3QmIHJlY3QsIGNvbnN0
IFJhZGlpJiByYWRpaSkKICAgICA6IG1fcmVjdChyZWN0KQogICAgICwgbV9yYWRpaShyYWRpaSkK
IHsKIH0KIAotUm91bmRlZFJlY3Q6OlJvdW5kZWRSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QsIGNv
bnN0IEludFNpemUmIHRvcExlZnQsIGNvbnN0IEludFNpemUmIHRvcFJpZ2h0LCBjb25zdCBJbnRT
aXplJiBib3R0b21MZWZ0LCBjb25zdCBJbnRTaXplJiBib3R0b21SaWdodCkKK1JvdW5kZWRSZWN0
OjpSb3VuZGVkUmVjdChjb25zdCBMYXlvdXRSZWN0JiByZWN0LCBjb25zdCBMYXlvdXRTaXplJiB0
b3BMZWZ0LCBjb25zdCBMYXlvdXRTaXplJiB0b3BSaWdodCwgY29uc3QgTGF5b3V0U2l6ZSYgYm90
dG9tTGVmdCwgY29uc3QgTGF5b3V0U2l6ZSYgYm90dG9tUmlnaHQpCiAgICAgOiBtX3JlY3QocmVj
dCkKICAgICAsIG1fcmFkaWkodG9wTGVmdCwgdG9wUmlnaHQsIGJvdHRvbUxlZnQsIGJvdHRvbVJp
Z2h0KQogewpAQCAtMTg2LDcgKzE4OSw3IEBAIGJvb2wgUm91bmRlZFJlY3Q6OmludGVyc2VjdHNR
dWFkKGNvbnN0IEZsb2F0UXVhZCYgcXVhZCkgY29uc3QKICAgICBpZiAoIXF1YWQuaW50ZXJzZWN0
c1JlY3QocmVjdCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGNvbnN0IEludFNpemUm
IHRvcExlZnQgPSBtX3JhZGlpLnRvcExlZnQoKTsKKyAgICBjb25zdCBMYXlvdXRTaXplJiB0b3BM
ZWZ0ID0gbV9yYWRpaS50b3BMZWZ0KCk7CiAgICAgaWYgKCF0b3BMZWZ0LmlzRW1wdHkoKSkgewog
ICAgICAgICBGbG9hdFJlY3QgcmVjdChtX3JlY3QueCgpLCBtX3JlY3QueSgpLCB0b3BMZWZ0Lndp
ZHRoKCksIHRvcExlZnQuaGVpZ2h0KCkpOwogICAgICAgICBpZiAocXVhZC5pbnRlcnNlY3RzUmVj
dChyZWN0KSkgewpAQCAtMTk3LDcgKzIwMCw3IEBAIGJvb2wgUm91bmRlZFJlY3Q6OmludGVyc2Vj
dHNRdWFkKGNvbnN0IEZsb2F0UXVhZCYgcXVhZCkgY29uc3QKICAgICAgICAgfQogICAgIH0KIAot
ICAgIGNvbnN0IEludFNpemUmIHRvcFJpZ2h0ID0gbV9yYWRpaS50b3BSaWdodCgpOworICAgIGNv
bnN0IExheW91dFNpemUmIHRvcFJpZ2h0ID0gbV9yYWRpaS50b3BSaWdodCgpOwogICAgIGlmICgh
dG9wUmlnaHQuaXNFbXB0eSgpKSB7CiAgICAgICAgIEZsb2F0UmVjdCByZWN0KG1fcmVjdC5tYXhY
KCkgLSB0b3BSaWdodC53aWR0aCgpLCBtX3JlY3QueSgpLCB0b3BSaWdodC53aWR0aCgpLCB0b3BS
aWdodC5oZWlnaHQoKSk7CiAgICAgICAgIGlmIChxdWFkLmludGVyc2VjdHNSZWN0KHJlY3QpKSB7
CkBAIC0yMDgsNyArMjExLDcgQEAgYm9vbCBSb3VuZGVkUmVjdDo6aW50ZXJzZWN0c1F1YWQoY29u
c3QgRmxvYXRRdWFkJiBxdWFkKSBjb25zdAogICAgICAgICB9CiAgICAgfQogCi0gICAgY29uc3Qg
SW50U2l6ZSYgYm90dG9tTGVmdCA9IG1fcmFkaWkuYm90dG9tTGVmdCgpOworICAgIGNvbnN0IExh
eW91dFNpemUmIGJvdHRvbUxlZnQgPSBtX3JhZGlpLmJvdHRvbUxlZnQoKTsKICAgICBpZiAoIWJv
dHRvbUxlZnQuaXNFbXB0eSgpKSB7CiAgICAgICAgIEZsb2F0UmVjdCByZWN0KG1fcmVjdC54KCks
IG1fcmVjdC5tYXhZKCkgLSBib3R0b21MZWZ0LmhlaWdodCgpLCBib3R0b21MZWZ0LndpZHRoKCks
IGJvdHRvbUxlZnQuaGVpZ2h0KCkpOwogICAgICAgICBpZiAocXVhZC5pbnRlcnNlY3RzUmVjdChy
ZWN0KSkgewpAQCAtMjE5LDcgKzIyMiw3IEBAIGJvb2wgUm91bmRlZFJlY3Q6OmludGVyc2VjdHNR
dWFkKGNvbnN0IEZsb2F0UXVhZCYgcXVhZCkgY29uc3QKICAgICAgICAgfQogICAgIH0KIAotICAg
IGNvbnN0IEludFNpemUmIGJvdHRvbVJpZ2h0ID0gbV9yYWRpaS5ib3R0b21SaWdodCgpOworICAg
IGNvbnN0IExheW91dFNpemUmIGJvdHRvbVJpZ2h0ID0gbV9yYWRpaS5ib3R0b21SaWdodCgpOwog
ICAgIGlmICghYm90dG9tUmlnaHQuaXNFbXB0eSgpKSB7CiAgICAgICAgIEZsb2F0UmVjdCByZWN0
KG1fcmVjdC5tYXhYKCkgLSBib3R0b21SaWdodC53aWR0aCgpLCBtX3JlY3QubWF4WSgpIC0gYm90
dG9tUmlnaHQuaGVpZ2h0KCksIGJvdHRvbVJpZ2h0LndpZHRoKCksIGJvdHRvbVJpZ2h0LmhlaWdo
dCgpKTsKICAgICAgICAgaWYgKHF1YWQuaW50ZXJzZWN0c1JlY3QocmVjdCkpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JvdW5kZWRSZWN0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Sb3VuZGVkUmVjdC5oCmluZGV4IGQ5MjNlMzUz
ZjQ4YWI5OGRlOTE1NzczNjNiYTYzNGM3OGE5YzIzMDMuLjYxYmRhOTdiZjVmNTA5NTIzNzU3MWE1
NWJlYWZiYTc3OTA1ZWY4MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1JvdW5kZWRSZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvUm91bmRlZFJlY3QuaApAQCAtMjgsMTcgKzI4LDE5IEBACiAjZGVmaW5lIFJvdW5kZWRSZWN0
X2gKIAogI2luY2x1ZGUgIkZsb2F0UXVhZC5oIgotI2luY2x1ZGUgIkludFJlY3QuaCIKKyNpbmNs
dWRlICJMYXlvdXRSZWN0LmgiCisjaW5jbHVkZSAiTGF5b3V0U2l6ZS5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKK2NsYXNzIExheW91dFVuaXQ7CiAKIGNsYXNzIFJvdW5kZWRSZWN0IHsKIHB1
YmxpYzoKICAgICBjbGFzcyBSYWRpaSB7CiAgICAgcHVibGljOgogICAgICAgICBSYWRpaSgpIHt9
Ci0gICAgICAgIFJhZGlpKGNvbnN0IEludFNpemUmIHRvcExlZnQsIGNvbnN0IEludFNpemUmIHRv
cFJpZ2h0LCBjb25zdCBJbnRTaXplJiBib3R0b21MZWZ0LCBjb25zdCBJbnRTaXplJiBib3R0b21S
aWdodCkKKyAgICAgICAgUmFkaWkoY29uc3QgTGF5b3V0U2l6ZSYgdG9wTGVmdCwgY29uc3QgTGF5
b3V0U2l6ZSYgdG9wUmlnaHQsIGNvbnN0IExheW91dFNpemUmIGJvdHRvbUxlZnQsIGNvbnN0IExh
eW91dFNpemUmIGJvdHRvbVJpZ2h0KQogICAgICAgICAgICAgOiBtX3RvcExlZnQodG9wTGVmdCkK
ICAgICAgICAgICAgICwgbV90b3BSaWdodCh0b3BSaWdodCkKICAgICAgICAgICAgICwgbV9ib3R0
b21MZWZ0KGJvdHRvbUxlZnQpCkBAIC00NiwxNCArNDgsMTQgQEAgcHVibGljOgogICAgICAgICB7
CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIHNldFRvcExlZnQoY29uc3QgSW50U2l6ZSYgc2l6
ZSkgeyBtX3RvcExlZnQgPSBzaXplOyB9Ci0gICAgICAgIHZvaWQgc2V0VG9wUmlnaHQoY29uc3Qg
SW50U2l6ZSYgc2l6ZSkgeyBtX3RvcFJpZ2h0ID0gc2l6ZTsgfQotICAgICAgICB2b2lkIHNldEJv
dHRvbUxlZnQoY29uc3QgSW50U2l6ZSYgc2l6ZSkgeyBtX2JvdHRvbUxlZnQgPSBzaXplOyB9Ci0g
ICAgICAgIHZvaWQgc2V0Qm90dG9tUmlnaHQoY29uc3QgSW50U2l6ZSYgc2l6ZSkgeyBtX2JvdHRv
bVJpZ2h0ID0gc2l6ZTsgfQotICAgICAgICBjb25zdCBJbnRTaXplJiB0b3BMZWZ0KCkgY29uc3Qg
eyByZXR1cm4gbV90b3BMZWZ0OyB9Ci0gICAgICAgIGNvbnN0IEludFNpemUmIHRvcFJpZ2h0KCkg
Y29uc3QgeyByZXR1cm4gbV90b3BSaWdodDsgfQotICAgICAgICBjb25zdCBJbnRTaXplJiBib3R0
b21MZWZ0KCkgY29uc3QgeyByZXR1cm4gbV9ib3R0b21MZWZ0OyB9Ci0gICAgICAgIGNvbnN0IElu
dFNpemUmIGJvdHRvbVJpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9ib3R0b21SaWdodDsgfQorICAg
ICAgICB2b2lkIHNldFRvcExlZnQoY29uc3QgTGF5b3V0U2l6ZSYgc2l6ZSkgeyBtX3RvcExlZnQg
PSBzaXplOyB9CisgICAgICAgIHZvaWQgc2V0VG9wUmlnaHQoY29uc3QgTGF5b3V0U2l6ZSYgc2l6
ZSkgeyBtX3RvcFJpZ2h0ID0gc2l6ZTsgfQorICAgICAgICB2b2lkIHNldEJvdHRvbUxlZnQoY29u
c3QgTGF5b3V0U2l6ZSYgc2l6ZSkgeyBtX2JvdHRvbUxlZnQgPSBzaXplOyB9CisgICAgICAgIHZv
aWQgc2V0Qm90dG9tUmlnaHQoY29uc3QgTGF5b3V0U2l6ZSYgc2l6ZSkgeyBtX2JvdHRvbVJpZ2h0
ID0gc2l6ZTsgfQorICAgICAgICBjb25zdCBMYXlvdXRTaXplJiB0b3BMZWZ0KCkgY29uc3QgeyBy
ZXR1cm4gbV90b3BMZWZ0OyB9CisgICAgICAgIGNvbnN0IExheW91dFNpemUmIHRvcFJpZ2h0KCkg
Y29uc3QgeyByZXR1cm4gbV90b3BSaWdodDsgfQorICAgICAgICBjb25zdCBMYXlvdXRTaXplJiBi
b3R0b21MZWZ0KCkgY29uc3QgeyByZXR1cm4gbV9ib3R0b21MZWZ0OyB9CisgICAgICAgIGNvbnN0
IExheW91dFNpemUmIGJvdHRvbVJpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9ib3R0b21SaWdodDsg
fQogCiAgICAgICAgIGJvb2wgaXNaZXJvKCkgY29uc3Q7CiAKQEAgLTYxLDM1ICs2MywzNSBAQCBw
dWJsaWM6CiAgICAgICAgIHZvaWQgZXhjbHVkZUxvZ2ljYWxFZGdlcyhib29sIGlzSG9yaXpvbnRh
bCwgYm9vbCBleGNsdWRlTG9naWNhbExlZnRFZGdlLCBib29sIGV4Y2x1ZGVMb2dpY2FsUmlnaHRF
ZGdlKTsKIAogICAgICAgICB2b2lkIHNjYWxlKGZsb2F0IGZhY3Rvcik7Ci0gICAgICAgIHZvaWQg
ZXhwYW5kKGludCB0b3BXaWR0aCwgaW50IGJvdHRvbVdpZHRoLCBpbnQgbGVmdFdpZHRoLCBpbnQg
cmlnaHRXaWR0aCk7Ci0gICAgICAgIHZvaWQgZXhwYW5kKGludCBzaXplKSB7IGV4cGFuZChzaXpl
LCBzaXplLCBzaXplLCBzaXplKTsgfQotICAgICAgICB2b2lkIHNocmluayhpbnQgdG9wV2lkdGgs
IGludCBib3R0b21XaWR0aCwgaW50IGxlZnRXaWR0aCwgaW50IHJpZ2h0V2lkdGgpIHsgZXhwYW5k
KC10b3BXaWR0aCwgLWJvdHRvbVdpZHRoLCAtbGVmdFdpZHRoLCAtcmlnaHRXaWR0aCk7IH0KLSAg
ICAgICAgdm9pZCBzaHJpbmsoaW50IHNpemUpIHsgc2hyaW5rKHNpemUsIHNpemUsIHNpemUsIHNp
emUpOyB9CisgICAgICAgIHZvaWQgZXhwYW5kKGNvbnN0IExheW91dFVuaXQmIHRvcFdpZHRoLCBj
b25zdCBMYXlvdXRVbml0JiBib3R0b21XaWR0aCwgY29uc3QgTGF5b3V0VW5pdCYgbGVmdFdpZHRo
LCBjb25zdCBMYXlvdXRVbml0JiByaWdodFdpZHRoKTsKKyAgICAgICAgdm9pZCBleHBhbmQoY29u
c3QgTGF5b3V0VW5pdCYgc2l6ZSkgeyBleHBhbmQoc2l6ZSwgc2l6ZSwgc2l6ZSwgc2l6ZSk7IH0K
KyAgICAgICAgdm9pZCBzaHJpbmsoY29uc3QgTGF5b3V0VW5pdCYgdG9wV2lkdGgsIGNvbnN0IExh
eW91dFVuaXQmIGJvdHRvbVdpZHRoLCBjb25zdCBMYXlvdXRVbml0JiBsZWZ0V2lkdGgsIGNvbnN0
IExheW91dFVuaXQmIHJpZ2h0V2lkdGgpIHsgZXhwYW5kKC10b3BXaWR0aCwgLWJvdHRvbVdpZHRo
LCAtbGVmdFdpZHRoLCAtcmlnaHRXaWR0aCk7IH0KKyAgICAgICAgdm9pZCBzaHJpbmsoY29uc3Qg
TGF5b3V0VW5pdCYgc2l6ZSkgeyBzaHJpbmsoc2l6ZSwgc2l6ZSwgc2l6ZSwgc2l6ZSk7IH0KIAog
ICAgIHByaXZhdGU6Ci0gICAgICAgIEludFNpemUgbV90b3BMZWZ0OwotICAgICAgICBJbnRTaXpl
IG1fdG9wUmlnaHQ7Ci0gICAgICAgIEludFNpemUgbV9ib3R0b21MZWZ0OwotICAgICAgICBJbnRT
aXplIG1fYm90dG9tUmlnaHQ7CisgICAgICAgIExheW91dFNpemUgbV90b3BMZWZ0OworICAgICAg
ICBMYXlvdXRTaXplIG1fdG9wUmlnaHQ7CisgICAgICAgIExheW91dFNpemUgbV9ib3R0b21MZWZ0
OworICAgICAgICBMYXlvdXRTaXplIG1fYm90dG9tUmlnaHQ7CiAgICAgfTsKIAotICAgIGV4cGxp
Y2l0IFJvdW5kZWRSZWN0KGNvbnN0IEludFJlY3QmLCBjb25zdCBSYWRpaSYgPSBSYWRpaSgpKTsK
LSAgICBSb3VuZGVkUmVjdChpbnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50IGhlaWdodCk7Ci0g
ICAgUm91bmRlZFJlY3QoY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFNpemUmIHRvcExlZnQsIGNv
bnN0IEludFNpemUmIHRvcFJpZ2h0LCBjb25zdCBJbnRTaXplJiBib3R0b21MZWZ0LCBjb25zdCBJ
bnRTaXplJiBib3R0b21SaWdodCk7CisgICAgZXhwbGljaXQgUm91bmRlZFJlY3QoY29uc3QgTGF5
b3V0UmVjdCYsIGNvbnN0IFJhZGlpJiA9IFJhZGlpKCkpOworICAgIFJvdW5kZWRSZWN0KGNvbnN0
IExheW91dFVuaXQmLCBjb25zdCBMYXlvdXRVbml0JiwgY29uc3QgTGF5b3V0VW5pdCYgd2lkdGgs
IGNvbnN0IExheW91dFVuaXQmIGhlaWdodCk7CisgICAgUm91bmRlZFJlY3QoY29uc3QgTGF5b3V0
UmVjdCYsIGNvbnN0IExheW91dFNpemUmIHRvcExlZnQsIGNvbnN0IExheW91dFNpemUmIHRvcFJp
Z2h0LCBjb25zdCBMYXlvdXRTaXplJiBib3R0b21MZWZ0LCBjb25zdCBMYXlvdXRTaXplJiBib3R0
b21SaWdodCk7CiAKLSAgICBjb25zdCBJbnRSZWN0JiByZWN0KCkgY29uc3QgeyByZXR1cm4gbV9y
ZWN0OyB9CisgICAgY29uc3QgTGF5b3V0UmVjdCYgcmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVj
dDsgfQogICAgIGNvbnN0IFJhZGlpJiByYWRpaSgpIGNvbnN0IHsgcmV0dXJuIG1fcmFkaWk7IH0K
ICAgICBib29sIGlzUm91bmRlZCgpIGNvbnN0IHsgcmV0dXJuICFtX3JhZGlpLmlzWmVybygpOyB9
CiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9yZWN0LmlzRW1wdHkoKTsgfQog
Ci0gICAgdm9pZCBzZXRSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QpIHsgbV9yZWN0ID0gcmVjdDsg
fQorICAgIHZvaWQgc2V0UmVjdChjb25zdCBMYXlvdXRSZWN0JiByZWN0KSB7IG1fcmVjdCA9IHJl
Y3Q7IH0KICAgICB2b2lkIHNldFJhZGlpKGNvbnN0IFJhZGlpJiByYWRpaSkgeyBtX3JhZGlpID0g
cmFkaWk7IH0KIAotICAgIHZvaWQgbW92ZShjb25zdCBJbnRTaXplJiBzaXplKSB7IG1fcmVjdC5t
b3ZlKHNpemUpOyB9Ci0gICAgdm9pZCBpbmZsYXRlKGludCBzaXplKSB7IG1fcmVjdC5pbmZsYXRl
KHNpemUpOyAgfQotICAgIHZvaWQgaW5mbGF0ZVdpdGhSYWRpaShpbnQgc2l6ZSk7Ci0gICAgdm9p
ZCBleHBhbmRSYWRpaShpbnQgc2l6ZSkgeyBtX3JhZGlpLmV4cGFuZChzaXplKTsgfQotICAgIHZv
aWQgc2hyaW5rUmFkaWkoaW50IHNpemUpIHsgbV9yYWRpaS5zaHJpbmsoc2l6ZSk7IH0KKyAgICB2
b2lkIG1vdmUoY29uc3QgTGF5b3V0U2l6ZSYgc2l6ZSkgeyBtX3JlY3QubW92ZShzaXplKTsgfQor
ICAgIHZvaWQgaW5mbGF0ZShjb25zdCBMYXlvdXRVbml0JiBzaXplKSB7IG1fcmVjdC5pbmZsYXRl
KHNpemUpOyAgfQorICAgIHZvaWQgaW5mbGF0ZVdpdGhSYWRpaShjb25zdCBMYXlvdXRVbml0JiBz
aXplKTsKKyAgICB2b2lkIGV4cGFuZFJhZGlpKGNvbnN0IExheW91dFVuaXQmIHNpemUpIHsgbV9y
YWRpaS5leHBhbmQoc2l6ZSk7IH0KKyAgICB2b2lkIHNocmlua1JhZGlpKGNvbnN0IExheW91dFVu
aXQmIHNpemUpIHsgbV9yYWRpaS5zaHJpbmsoc2l6ZSk7IH0KIAogICAgIHZvaWQgaW5jbHVkZUxv
Z2ljYWxFZGdlcyhjb25zdCBSYWRpaSYgZWRnZXMsIGJvb2wgaXNIb3Jpem9udGFsLCBib29sIGlu
Y2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOwogICAg
IHZvaWQgZXhjbHVkZUxvZ2ljYWxFZGdlcyhib29sIGlzSG9yaXpvbnRhbCwgYm9vbCBleGNsdWRl
TG9naWNhbExlZnRFZGdlLCBib29sIGV4Y2x1ZGVMb2dpY2FsUmlnaHRFZGdlKTsKQEAgLTEwMiw3
ICsxMDQsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpbnRlcnNlY3RzUXVhZChjb25zdCBGbG9hdFF1
YWQmKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBJbnRSZWN0IG1fcmVjdDsKKyAgICBMYXlvdXRS
ZWN0IG1fcmVjdDsKICAgICBSYWRpaSBtX3JhZGlpOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcAppbmRleCA4MmIxODBhNDZlN2EyM2Rh
NjU3Y2Y2ZWU3ZjJhMmEyMzlmZjU5Y2IyLi5kNjc1MjI4YmJiZWJkOWFhZDJmYzc2MmRkNGYyMzIz
Y2U4MmFlMDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9T
aGFkb3dCbHVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFk
b3dCbHVyLmNwcApAQCAtODMsNyArODMsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX2lt
YWdlQnVmZmVyLmdldCgpOwogICAgIH0KIAotICAgIGJvb2wgc2V0Q2FjaGVkU2hhZG93VmFsdWVz
KGNvbnN0IEZsb2F0U2l6ZSYgcmFkaXVzLCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2Ug
Y29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBzaGFkb3dSZWN0LCBjb25zdCBSb3VuZGVkUmVj
dDo6UmFkaWkmIHJhZGlpLCBjb25zdCBGbG9hdFNpemUmIGxheWVyU2l6ZSkKKyAgICBib29sIHNl
dENhY2hlZFNoYWRvd1ZhbHVlcyhjb25zdCBGbG9hdFNpemUmIHJhZGl1cywgY29uc3QgQ29sb3Im
IGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgc2hhZG93UmVj
dCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkmIHJhZGlpLCBjb25zdCBGbG9hdFNpemUm
IGxheWVyU2l6ZSkKICAgICB7CiAgICAgICAgIGlmICghbV9sYXN0V2FzSW5zZXQgJiYgbV9sYXN0
UmFkaXVzID09IHJhZGl1cyAmJiBtX2xhc3RDb2xvciA9PSBjb2xvciAmJiBtX2xhc3RDb2xvclNw
YWNlID09IGNvbG9yU3BhY2UgJiYgbV9sYXN0U2hhZG93UmVjdCA9PSBzaGFkb3dSZWN0ICYmICBt
X2xhc3RSYWRpaSA9PSByYWRpaSAmJiBtX2xhc3RMYXllclNpemUgPT0gbGF5ZXJTaXplKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtOTksNyArOTksNyBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIGJvb2wgc2V0Q2FjaGVkSW5zZXRTaGFkb3dWYWx1
ZXMoY29uc3QgRmxvYXRTaXplJiByYWRpdXMsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTcGFj
ZSBjb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kcywgY29uc3QgRmxvYXRSZWN0JiBz
aGFkb3dSZWN0LCBjb25zdCBSb3VuZGVkUmVjdDo6UmFkaWkmIHJhZGlpKQorICAgIGJvb2wgc2V0
Q2FjaGVkSW5zZXRTaGFkb3dWYWx1ZXMoY29uc3QgRmxvYXRTaXplJiByYWRpdXMsIGNvbnN0IENv
bG9yJiBjb2xvciwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5k
cywgY29uc3QgRmxvYXRSZWN0JiBzaGFkb3dSZWN0LCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0OjpS
YWRpaSYgcmFkaWkpCiAgICAgewogICAgICAgICBpZiAobV9sYXN0V2FzSW5zZXQgJiYgbV9sYXN0
UmFkaXVzID09IHJhZGl1cyAmJiBtX2xhc3RDb2xvciA9PSBjb2xvciAmJiBtX2xhc3RDb2xvclNw
YWNlID09IGNvbG9yU3BhY2UgJiYgbV9sYXN0SW5zZXRCb3VuZHMgPT0gYm91bmRzICYmIHNoYWRv
d1JlY3QgPT0gbV9sYXN0U2hhZG93UmVjdCAmJiByYWRpaSA9PSBtX2xhc3RSYWRpaSkKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE0Nyw3ICsxNDcsNyBAQCBwcml2YXRlOgogICAgIAog
ICAgIEZsb2F0UmVjdCBtX2xhc3RJbnNldEJvdW5kczsKICAgICBGbG9hdFJlY3QgbV9sYXN0U2hh
ZG93UmVjdDsKLSAgICBSb3VuZGVkUmVjdDo6UmFkaWkgbV9sYXN0UmFkaWk7CisgICAgRmxvYXRS
b3VuZGVkUmVjdDo6UmFkaWkgbV9sYXN0UmFkaWk7CiAgICAgQ29sb3IgbV9sYXN0Q29sb3I7CiAg
ICAgQ29sb3JTcGFjZSBtX2xhc3RDb2xvclNwYWNlOwogICAgIEZsb2F0U2l6ZSBtX2xhc3RSYWRp
dXM7CkBAIC00ODIsNyArNDgyLDcgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3U2hhZG93QnVmZmVy
KEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0KQogICAgIGdyYXBoaWNzQ29udGV4dC0+
ZmlsbFJlY3QoRmxvYXRSZWN0KG1fbGF5ZXJPcmlnaW4sIG1fc291cmNlUmVjdC5zaXplKCkpKTsK
IH0KIAotc3RhdGljIHZvaWQgY29tcHV0ZVNsaWNlU2l6ZXNGcm9tUmFkaWkoY29uc3QgSW50U2l6
ZSYgdHdpY2VSYWRpdXMsIGNvbnN0IFJvdW5kZWRSZWN0OjpSYWRpaSYgcmFkaWksIGludCYgbGVm
dFNsaWNlLCBpbnQmIHJpZ2h0U2xpY2UsIGludCYgdG9wU2xpY2UsIGludCYgYm90dG9tU2xpY2Up
CitzdGF0aWMgdm9pZCBjb21wdXRlU2xpY2VTaXplc0Zyb21SYWRpaShjb25zdCBJbnRTaXplJiB0
d2ljZVJhZGl1cywgY29uc3QgRmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkmIHJhZGlpLCBpbnQmIGxl
ZnRTbGljZSwgaW50JiByaWdodFNsaWNlLCBpbnQmIHRvcFNsaWNlLCBpbnQmIGJvdHRvbVNsaWNl
KQogewogICAgIGxlZnRTbGljZSA9IHR3aWNlUmFkaXVzLndpZHRoKCkgKyBzdGQ6Om1heChyYWRp
aS50b3BMZWZ0KCkud2lkdGgoKSwgcmFkaWkuYm90dG9tTGVmdCgpLndpZHRoKCkpOwogICAgIHJp
Z2h0U2xpY2UgPSB0d2ljZVJhZGl1cy53aWR0aCgpICsgc3RkOjptYXgocmFkaWkudG9wUmlnaHQo
KS53aWR0aCgpLCByYWRpaS5ib3R0b21SaWdodCgpLndpZHRoKCkpOwpAQCAtNDkxLDcgKzQ5MSw3
IEBAIHN0YXRpYyB2b2lkIGNvbXB1dGVTbGljZVNpemVzRnJvbVJhZGlpKGNvbnN0IEludFNpemUm
IHR3aWNlUmFkaXVzLCBjb25zdCBSb3VuZGVkCiAgICAgYm90dG9tU2xpY2UgPSB0d2ljZVJhZGl1
cy5oZWlnaHQoKSArIHN0ZDo6bWF4KHJhZGlpLmJvdHRvbUxlZnQoKS5oZWlnaHQoKSwgcmFkaWku
Ym90dG9tUmlnaHQoKS5oZWlnaHQoKSk7CiB9CiAKLUludFNpemUgU2hhZG93Qmx1cjo6dGVtcGxh
dGVTaXplKGNvbnN0IEludFNpemUmIHJhZGl1c1BhZGRpbmcsIGNvbnN0IFJvdW5kZWRSZWN0OjpS
YWRpaSYgcmFkaWkpIGNvbnN0CitJbnRTaXplIFNoYWRvd0JsdXI6OnRlbXBsYXRlU2l6ZShjb25z
dCBJbnRTaXplJiByYWRpdXNQYWRkaW5nLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSYg
cmFkaWkpIGNvbnN0CiB7CiAgICAgY29uc3QgaW50IHRlbXBsYXRlU2lkZUxlbmd0aCA9IDE7CiAK
QEAgLTUwOSw3ICs1MDksNyBAQCBJbnRTaXplIFNoYWRvd0JsdXI6OnRlbXBsYXRlU2l6ZShjb25z
dCBJbnRTaXplJiByYWRpdXNQYWRkaW5nLCBjb25zdCBSb3VuZGVkUmVjdAogICAgICAgICAgICAg
ICAgICAgIHRlbXBsYXRlU2lkZUxlbmd0aCArIHRvcFNsaWNlICsgYm90dG9tU2xpY2UpOwogfQog
Ci12b2lkIFNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93KEdyYXBoaWNzQ29udGV4dCogZ3JhcGhp
Y3NDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHNoYWRvd2VkUmVjdCwgY29uc3QgUm91bmRlZFJl
Y3Q6OlJhZGlpJiByYWRpaSkKK3ZvaWQgU2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3coR3JhcGhp
Y3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgc2hhZG93ZWRSZWN0
LCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSYgcmFkaWkpCiB7CiAgICAgSW50UmVjdCBs
YXllclJlY3QgPSBjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdChncmFwaGljc0NvbnRleHQsIHNo
YWRvd2VkUmVjdCwgZ3JhcGhpY3NDb250ZXh0LT5jbGlwQm91bmRzKCkpOwogICAgIGlmIChsYXll
clJlY3QuaXNFbXB0eSgpKQpAQCAtNTM2LDcgKzUzNiw3IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJh
d1JlY3RTaGFkb3coR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0
UmVjCiAgICAgZHJhd1JlY3RTaGFkb3dXaXRoVGlsaW5nKGdyYXBoaWNzQ29udGV4dCwgc2hhZG93
ZWRSZWN0LCByYWRpaSwgdGVtcGxhdGVTaXplLCBlZGdlU2l6ZSk7CiB9CiAKLXZvaWQgU2hhZG93
Qmx1cjo6ZHJhd0luc2V0U2hhZG93KEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBj
b25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgaG9sZVJlY3QsIGNvbnN0IFJv
dW5kZWRSZWN0OjpSYWRpaSYgaG9sZVJhZGlpKQordm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRT
aGFkb3coR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYg
cmVjdCwgY29uc3QgRmxvYXRSZWN0JiBob2xlUmVjdCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdDo6
UmFkaWkmIGhvbGVSYWRpaSkKIHsKICAgICBJbnRSZWN0IGxheWVyUmVjdCA9IGNhbGN1bGF0ZUxh
eWVyQm91bmRpbmdSZWN0KGdyYXBoaWNzQ29udGV4dCwgcmVjdCwgZ3JhcGhpY3NDb250ZXh0LT5j
bGlwQm91bmRzKCkpOwogICAgIGlmIChsYXllclJlY3QuaXNFbXB0eSgpKQpAQCAtNTYzLDcgKzU2
Myw3IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93KEdyYXBoaWNzQ29udGV4dCog
Z3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFJlCiAgICAgZHJhd0luc2V0U2hhZG93V2l0aFRp
bGluZyhncmFwaGljc0NvbnRleHQsIHJlY3QsIGhvbGVSZWN0LCBob2xlUmFkaWksIHRlbXBsYXRl
U2l6ZSwgZWRnZVNpemUpOwogfQogCi12b2lkIFNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0
aG91dFRpbGluZyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRS
ZWN0JiBzaGFkb3dlZFJlY3QsIGNvbnN0IFJvdW5kZWRSZWN0OjpSYWRpaSYgcmFkaWksIGNvbnN0
IEludFJlY3QmIGxheWVyUmVjdCkKK3ZvaWQgU2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3dXaXRo
b3V0VGlsaW5nKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFJl
Y3QmIHNoYWRvd2VkUmVjdCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkmIHJhZGlpLCBj
b25zdCBJbnRSZWN0JiBsYXllclJlY3QpCiB7CiAgICAgbV9sYXllckltYWdlID0gU2NyYXRjaEJ1
ZmZlcjo6c2hhcmVkKCkuZ2V0U2NyYXRjaEJ1ZmZlcihsYXllclJlY3Quc2l6ZSgpKTsKICAgICBp
ZiAoIW1fbGF5ZXJJbWFnZSkKQEAgLTU5OCw3ICs1OTgsNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRy
YXdSZWN0U2hhZG93V2l0aG91dFRpbGluZyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4
dCwgYwogICAgIFNjcmF0Y2hCdWZmZXI6OnNoYXJlZCgpLnNjaGVkdWxlU2NyYXRjaEJ1ZmZlclB1
cmdlKCk7CiB9CiAKLXZvaWQgU2hhZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93V2l0aG91dFRpbGlu
ZyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0
LCBjb25zdCBGbG9hdFJlY3QmIGhvbGVSZWN0LCBjb25zdCBSb3VuZGVkUmVjdDo6UmFkaWkmIGhv
bGVSYWRpaSwgY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0KQordm9pZCBTaGFkb3dCbHVyOjpkcmF3
SW5zZXRTaGFkb3dXaXRob3V0VGlsaW5nKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0
LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgaG9sZVJlY3QsIGNvbnN0
IEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpJiBob2xlUmFkaWksIGNvbnN0IEludFJlY3QmIGxheWVy
UmVjdCkKIHsKICAgICBtX2xheWVySW1hZ2UgPSBTY3JhdGNoQnVmZmVyOjpzaGFyZWQoKS5nZXRT
Y3JhdGNoQnVmZmVyKGxheWVyUmVjdC5zaXplKCkpOwogICAgIGlmICghbV9sYXllckltYWdlKQpA
QCAtNjcxLDcgKzY3MSw3IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93V2l0aG91
dFRpbGluZyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwKICAgICAgdGhlIHNoYWRv
dy4KICAqLwogCi12b2lkIFNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvd1dpdGhUaWxpbmcoR3Jh
cGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBob2xlUmVjdCwgY29uc3QgUm91bmRlZFJlY3Q6OlJhZGlpJiByYWRpaSwg
Y29uc3QgSW50U2l6ZSYgdGVtcGxhdGVTaXplLCBjb25zdCBJbnRTaXplJiBlZGdlU2l6ZSkKK3Zv
aWQgU2hhZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93V2l0aFRpbGluZyhHcmFwaGljc0NvbnRleHQq
IGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IGhvbGVSZWN0LCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSYgcmFkaWksIGNvbnN0IElu
dFNpemUmIHRlbXBsYXRlU2l6ZSwgY29uc3QgSW50U2l6ZSYgZWRnZVNpemUpCiB7CiAgICAgbV9s
YXllckltYWdlID0gU2NyYXRjaEJ1ZmZlcjo6c2hhcmVkKCkuZ2V0U2NyYXRjaEJ1ZmZlcih0ZW1w
bGF0ZVNpemUpOwogICAgIGlmICghbV9sYXllckltYWdlKQpAQCAtNzM2LDcgKzczNiw3IEBAIHZv
aWQgU2hhZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93V2l0aFRpbGluZyhHcmFwaGljc0NvbnRleHQq
IGdyYXBoaWNzQ29udGV4dCwgY29uCiAgICAgU2NyYXRjaEJ1ZmZlcjo6c2hhcmVkKCkuc2NoZWR1
bGVTY3JhdGNoQnVmZmVyUHVyZ2UoKTsKIH0KIAotdm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNo
YWRvd1dpdGhUaWxpbmcoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZs
b2F0UmVjdCYgc2hhZG93ZWRSZWN0LCBjb25zdCBSb3VuZGVkUmVjdDo6UmFkaWkmIHJhZGlpLCBj
b25zdCBJbnRTaXplJiB0ZW1wbGF0ZVNpemUsIGNvbnN0IEludFNpemUmIGVkZ2VTaXplKQordm9p
ZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvd1dpdGhUaWxpbmcoR3JhcGhpY3NDb250ZXh0KiBn
cmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgc2hhZG93ZWRSZWN0LCBjb25zdCBGbG9h
dFJvdW5kZWRSZWN0OjpSYWRpaSYgcmFkaWksIGNvbnN0IEludFNpemUmIHRlbXBsYXRlU2l6ZSwg
Y29uc3QgSW50U2l6ZSYgZWRnZVNpemUpCiB7CiAgICAgbV9sYXllckltYWdlID0gU2NyYXRjaEJ1
ZmZlcjo6c2hhcmVkKCkuZ2V0U2NyYXRjaEJ1ZmZlcih0ZW1wbGF0ZVNpemUpOwogICAgIGlmICgh
bV9sYXllckltYWdlKQpAQCAtNzgxLDcgKzc4MSw3IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd1Jl
Y3RTaGFkb3dXaXRoVGlsaW5nKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25z
CiAgICAgU2NyYXRjaEJ1ZmZlcjo6c2hhcmVkKCkuc2NoZWR1bGVTY3JhdGNoQnVmZmVyUHVyZ2Uo
KTsKIH0KIAotdm9pZCBTaGFkb3dCbHVyOjpkcmF3TGF5ZXJQaWVjZXMoR3JhcGhpY3NDb250ZXh0
KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgc2hhZG93Qm91bmRzLCBjb25zdCBS
b3VuZGVkUmVjdDo6UmFkaWkmIHJhZGlpLCBjb25zdCBJbnRTaXplJiBidWZmZXJQYWRkaW5nLCBj
b25zdCBJbnRTaXplJiB0ZW1wbGF0ZVNpemUsIFNoYWRvd0RpcmVjdGlvbiBkaXJlY3Rpb24pCit2
b2lkIFNoYWRvd0JsdXI6OmRyYXdMYXllclBpZWNlcyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNz
Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBzaGFkb3dCb3VuZHMsIGNvbnN0IEZsb2F0Um91bmRl
ZFJlY3Q6OlJhZGlpJiByYWRpaSwgY29uc3QgSW50U2l6ZSYgYnVmZmVyUGFkZGluZywgY29uc3Qg
SW50U2l6ZSYgdGVtcGxhdGVTaXplLCBTaGFkb3dEaXJlY3Rpb24gZGlyZWN0aW9uKQogewogICAg
IGNvbnN0IEludFNpemUgdHdpY2VSYWRpdXMgPSBJbnRTaXplKGJ1ZmZlclBhZGRpbmcud2lkdGgo
KSAqIDIsIGJ1ZmZlclBhZGRpbmcuaGVpZ2h0KCkgKiAyKTsKIApAQCAtODkzLDcgKzg5Myw3IEBA
IEdyYXBoaWNzQ29udGV4dCogU2hhZG93Qmx1cjo6YmVnaW5TaGFkb3dMYXllcihHcmFwaGljc0Nv
bnRleHQgKmNvbnRleHQsIGNvbnN0IEZsCiAKICAgICAvLyBXZSByZXNldCB0aGUgc2NyYXRjaCBi
dWZmZXIgdmFsdWVzIGhlcmUsIGJlY2F1c2UgdGhlIGJ1ZmZlciB3aWxsIG5vIGxvbmdlciBjb250
YWluCiAgICAgLy8gZGF0YSBmcm9tIGFueSBwcmV2aW91cyByZWN0YW5nbGUgb3IgaW5zZXQgc2hh
ZG93cyBkcmF3biB2aWEgdGhlIHRpbGluZyBwYXRoLgotICAgIFNjcmF0Y2hCdWZmZXI6OnNoYXJl
ZCgpLnNldENhY2hlZFNoYWRvd1ZhbHVlcyhGbG9hdFNpemUoKSwgQ29sb3I6OmJsYWNrLCBDb2xv
clNwYWNlRGV2aWNlUkdCLCBJbnRSZWN0KCksIFJvdW5kZWRSZWN0OjpSYWRpaSgpLCBtX2xheWVy
U2l6ZSk7CisgICAgU2NyYXRjaEJ1ZmZlcjo6c2hhcmVkKCkuc2V0Q2FjaGVkU2hhZG93VmFsdWVz
KEZsb2F0U2l6ZSgpLCBDb2xvcjo6YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0IsIEludFJlY3Qo
KSwgRmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkoKSwgbV9sYXllclNpemUpOwogICAgIG1fbGF5ZXJJ
bWFnZSA9IFNjcmF0Y2hCdWZmZXI6OnNoYXJlZCgpLmdldFNjcmF0Y2hCdWZmZXIobGF5ZXJSZWN0
LnNpemUoKSk7CiAKICAgICBHcmFwaGljc0NvbnRleHQqIHNoYWRvd0NvbnRleHQgPSBtX2xheWVy
SW1hZ2UtPmNvbnRleHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1NoYWRvd0JsdXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1No
YWRvd0JsdXIuaAppbmRleCAzMmZmNjBiNmNiMDNiMjJiOTY4YzhlNzg2N2Q4M2E2ZmFmOTIwNDE3
Li45NTllMTdlODliNjhjMjgwMjAzMmU1YTljMWY5NDk0OTBmMGI3YzUyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5oCkBAIC0zMiw3ICszMiw3IEBA
CiAjaW5jbHVkZSAiQ29sb3IuaCIKICNpbmNsdWRlICJDb2xvclNwYWNlLmgiCiAjaW5jbHVkZSAi
RmxvYXRSZWN0LmgiCi0jaW5jbHVkZSAiUm91bmRlZFJlY3QuaCIKKyNpbmNsdWRlICJGbG9hdFJv
dW5kZWRSZWN0LmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTYzLDggKzYzLDggQEAgcHVibGljOgogICAgIEdyYXBoaWNzQ29udGV4dCog
YmVnaW5TaGFkb3dMYXllcihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGxheWVy
QXJlYSk7CiAgICAgdm9pZCBlbmRTaGFkb3dMYXllcihHcmFwaGljc0NvbnRleHQqKTsKIAotICAg
IHZvaWQgZHJhd1JlY3RTaGFkb3coR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0Jiwg
Y29uc3QgUm91bmRlZFJlY3Q6OlJhZGlpJik7Ci0gICAgdm9pZCBkcmF3SW5zZXRTaGFkb3coR3Jh
cGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiBob2xlUmVj
dCwgY29uc3QgUm91bmRlZFJlY3Q6OlJhZGlpJiBob2xlUmFkaWkpOworICAgIHZvaWQgZHJhd1Jl
Y3RTaGFkb3coR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRS
b3VuZGVkUmVjdDo6UmFkaWkmKTsKKyAgICB2b2lkIGRyYXdJbnNldFNoYWRvdyhHcmFwaGljc0Nv
bnRleHQqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmIGhvbGVSZWN0LCBjb25z
dCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSYgaG9sZVJhZGlpKTsKIAogICAgIHZvaWQgYmx1ckxh
eWVySW1hZ2UodW5zaWduZWQgY2hhciosIGNvbnN0IEludFNpemUmLCBpbnQgc3RyaWRlKTsKIApA
QCAtODUsMTUgKzg1LDE1IEBAIHByaXZhdGU6CiAgICAgfTsKICAgICAKICAgICBJbnRSZWN0IGNh
bGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVj
dCYgbGF5ZXJBcmVhLCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCk7Ci0gICAgSW50U2l6ZSB0ZW1w
bGF0ZVNpemUoY29uc3QgSW50U2l6ZSYgYmx1cnJlZEVkZ2VTaXplLCBjb25zdCBSb3VuZGVkUmVj
dDo6UmFkaWkmKSBjb25zdDsKKyAgICBJbnRTaXplIHRlbXBsYXRlU2l6ZShjb25zdCBJbnRTaXpl
JiBibHVycmVkRWRnZVNpemUsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpJikgY29uc3Q7
CiAKLSAgICB2b2lkIGRyYXdSZWN0U2hhZG93V2l0aG91dFRpbGluZyhHcmFwaGljc0NvbnRleHQq
LCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBSb3VuZGVkUmVjdDo6UmFkaWkmLCBjb25zdCBJbnRS
ZWN0JiBsYXllclJlY3QpOwotICAgIHZvaWQgZHJhd1JlY3RTaGFkb3dXaXRoVGlsaW5nKEdyYXBo
aWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFJvdW5kZWRSZWN0OjpSYWRpaSYs
IGNvbnN0IEludFNpemUmIHNoYWRvd1RlbXBsYXRlU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmx1cnJl
ZEVkZ2VTaXplKTsKKyAgICB2b2lkIGRyYXdSZWN0U2hhZG93V2l0aG91dFRpbGluZyhHcmFwaGlj
c0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRp
aSYsIGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCk7CisgICAgdm9pZCBkcmF3UmVjdFNoYWRvd1dp
dGhUaWxpbmcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRS
b3VuZGVkUmVjdDo6UmFkaWkmLCBjb25zdCBJbnRTaXplJiBzaGFkb3dUZW1wbGF0ZVNpemUsIGNv
bnN0IEludFNpemUmIGJsdXJyZWRFZGdlU2l6ZSk7CiAKLSAgICB2b2lkIGRyYXdJbnNldFNoYWRv
d1dpdGhvdXRUaWxpbmcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3Qg
RmxvYXRSZWN0JiBob2xlUmVjdCwgY29uc3QgUm91bmRlZFJlY3Q6OlJhZGlpJiwgY29uc3QgSW50
UmVjdCYgbGF5ZXJSZWN0KTsKLSAgICB2b2lkIGRyYXdJbnNldFNoYWRvd1dpdGhUaWxpbmcoR3Jh
cGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiBob2xlUmVj
dCwgY29uc3QgUm91bmRlZFJlY3Q6OlJhZGlpJiwgY29uc3QgSW50U2l6ZSYgc2hhZG93VGVtcGxh
dGVTaXplLCBjb25zdCBJbnRTaXplJiBibHVycmVkRWRnZVNpemUpOworICAgIHZvaWQgZHJhd0lu
c2V0U2hhZG93V2l0aG91dFRpbGluZyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3Qm
LCBjb25zdCBGbG9hdFJlY3QmIGhvbGVSZWN0LCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRp
aSYsIGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCk7CisgICAgdm9pZCBkcmF3SW5zZXRTaGFkb3dX
aXRoVGlsaW5nKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0
UmVjdCYgaG9sZVJlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpJiwgY29uc3QgSW50
U2l6ZSYgc2hhZG93VGVtcGxhdGVTaXplLCBjb25zdCBJbnRTaXplJiBibHVycmVkRWRnZVNpemUp
OwogICAgIAotICAgIHZvaWQgZHJhd0xheWVyUGllY2VzKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0
IEZsb2F0UmVjdCYgc2hhZG93Qm91bmRzLCBjb25zdCBSb3VuZGVkUmVjdDo6UmFkaWkmLCBjb25z
dCBJbnRTaXplJiByb3VuZGVkUmFkaXVzLCBjb25zdCBJbnRTaXplJiB0ZW1wbGF0ZVNpemUsIFNo
YWRvd0RpcmVjdGlvbik7CisgICAgdm9pZCBkcmF3TGF5ZXJQaWVjZXMoR3JhcGhpY3NDb250ZXh0
KiwgY29uc3QgRmxvYXRSZWN0JiBzaGFkb3dCb3VuZHMsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3Q6
OlJhZGlpJiwgY29uc3QgSW50U2l6ZSYgcm91bmRlZFJhZGl1cywgY29uc3QgSW50U2l6ZSYgdGVt
cGxhdGVTaXplLCBTaGFkb3dEaXJlY3Rpb24pOwogICAgIAogICAgIHZvaWQgYmx1clNoYWRvd0J1
ZmZlcihjb25zdCBJbnRTaXplJiB0ZW1wbGF0ZVNpemUpOwogICAgIHZvaWQgYmx1ckFuZENvbG9y
U2hhZG93QnVmZmVyKGNvbnN0IEludFNpemUmIHRlbXBsYXRlU2l6ZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5j
cHAKaW5kZXggYjg1Nzg5OTcyZWEwYjhkMmRkOWYzZDhlMTZjZjZkMTEwMDk2N2I3OC4uN2YwNmJm
YWVlN2U1YmZiMDMyODY4YzU1ZTU4NjgzNjRjYzQ1NmFlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcApA
QCAtODQ2LDcgKzg0Niw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25zdCBG
bG9hdFJlY3QmIHJlY3QsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTCiAgICAgICAgIHNldENH
RmlsbENvbG9yKGNvbnRleHQsIG9sZEZpbGxDb2xvciwgb2xkQ29sb3JTcGFjZSk7CiB9CiAKLXZv
aWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUm91bmRlZFJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCwg
Y29uc3QgSW50U2l6ZSYgdG9wTGVmdCwgY29uc3QgSW50U2l6ZSYgdG9wUmlnaHQsIGNvbnN0IElu
dFNpemUmIGJvdHRvbUxlZnQsIGNvbnN0IEludFNpemUmIGJvdHRvbVJpZ2h0LCBjb25zdCBDb2xv
ciYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0Ojpm
aWxsUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdFNpemUmIHRv
cExlZnQsIGNvbnN0IEZsb2F0U2l6ZSYgdG9wUmlnaHQsIGNvbnN0IEZsb2F0U2l6ZSYgYm90dG9t
TGVmdCwgY29uc3QgRmxvYXRTaXplJiBib3R0b21SaWdodCwgY29uc3QgQ29sb3ImIGNvbG9yLCBD
b2xvclNwYWNlIGNvbG9yU3BhY2UpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAg
ICAgICAgcmV0dXJuOwpAQCAtODY1LDcgKzg2NSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpm
aWxsUm91bmRlZFJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW50U2l6ZSYgdG9wTGVm
CiAgICAgICAgIENHQ29udGV4dFNldFNoYWRvd1dpdGhDb2xvcihwbGF0Zm9ybUNvbnRleHQoKSwg
Q0dTaXplWmVybywgMCwgMCk7CiAKICAgICAgICAgU2hhZG93Qmx1ciBjb250ZXh0U2hhZG93KG1f
c3RhdGUpOwotICAgICAgICBjb250ZXh0U2hhZG93LmRyYXdSZWN0U2hhZG93KHRoaXMsIHJlY3Qs
IFJvdW5kZWRSZWN0OjpSYWRpaSh0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVmdCwgYm90dG9t
UmlnaHQpKTsKKyAgICAgICAgY29udGV4dFNoYWRvdy5kcmF3UmVjdFNoYWRvdyh0aGlzLCByZWN0
LCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSh0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVmdCwg
Ym90dG9tUmlnaHQpKTsKICAgICB9CiAKICAgICBib29sIGVxdWFsV2lkdGhzID0gKHRvcExlZnQu
d2lkdGgoKSA9PSB0b3BSaWdodC53aWR0aCgpICYmIHRvcFJpZ2h0LndpZHRoKCkgPT0gYm90dG9t
TGVmdC53aWR0aCgpICYmIGJvdHRvbUxlZnQud2lkdGgoKSA9PSBib3R0b21SaWdodC53aWR0aCgp
KTsKQEAgLTg4Niw3ICs4ODYsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJvdW5kZWRS
ZWN0KGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEludFNpemUmIHRvcExlZgogICAgICAgICBz
ZXRDR0ZpbGxDb2xvcihjb250ZXh0LCBvbGRGaWxsQ29sb3IsIG9sZENvbG9yU3BhY2UpOwogfQog
Ci12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUoY29uc3QgSW50
UmVjdCYgcmVjdCwgY29uc3QgUm91bmRlZFJlY3QmIHJvdW5kZWRIb2xlUmVjdCwgY29uc3QgQ29s
b3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6
ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBSb3Vu
ZGVkUmVjdCYgcm91bmRlZEhvbGVSZWN0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2Ug
Y29sb3JTcGFjZSkKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1
cm47CkBAIC05MzYsNyArOTM2LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXAoY29uc3Qg
RmxvYXRSZWN0JiByZWN0KQogICAgIG1fZGF0YS0+Y2xpcChyZWN0KTsKIH0KIAotdm9pZCBHcmFw
aGljc0NvbnRleHQ6OmNsaXBPdXQoY29uc3QgSW50UmVjdCYgcmVjdCkKK3ZvaWQgR3JhcGhpY3ND
b250ZXh0OjpjbGlwT3V0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIHsKICAgICBpZiAocGFpbnRp
bmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAppbmRleCA3NjdmYTkxOWJiNDE2MGRmYTQ1
MzA0NDIyMmNhYjEwMWNmN2IwYjlhLi43NGQzNWJlNzAzMmZmOTlkMzg3MjkwMmM4ZGU5ODU5MTZm
ZDQ3NDJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9k
ZWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2Rl
bE9iamVjdC5jcHAKQEAgLTE2NTksNyArMTY1OSw3IEBAIHN0YXRpYyBib29sIGpvaW5SZXF1aXJl
c01pdHJlKEJveFNpZGUgc2lkZSwgQm94U2lkZSBhZGphY2VudFNpZGUsIGNvbnN0IEJvcmRlckVk
CiB9CiAKIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50T25lQm9yZGVyU2lkZShHcmFw
aGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBj
b25zdCBSb3VuZGVkUmVjdCYgb3V0ZXJCb3JkZXIsIGNvbnN0IFJvdW5kZWRSZWN0JiBpbm5lckJv
cmRlciwKLSAgICBjb25zdCBJbnRSZWN0JiBzaWRlUmVjdCwgQm94U2lkZSBzaWRlLCBCb3hTaWRl
IGFkamFjZW50U2lkZTEsIEJveFNpZGUgYWRqYWNlbnRTaWRlMiwgY29uc3QgQm9yZGVyRWRnZSBl
ZGdlc1tdLCBjb25zdCBQYXRoKiBwYXRoLAorICAgIGNvbnN0IExheW91dFJlY3QmIHNpZGVSZWN0
LCBCb3hTaWRlIHNpZGUsIEJveFNpZGUgYWRqYWNlbnRTaWRlMSwgQm94U2lkZSBhZGphY2VudFNp
ZGUyLCBjb25zdCBCb3JkZXJFZGdlIGVkZ2VzW10sIGNvbnN0IFBhdGgqIHBhdGgsCiAgICAgQmFj
a2dyb3VuZEJsZWVkQXZvaWRhbmNlIGJsZWVkQXZvaWRhbmNlLCBib29sIGluY2x1ZGVMb2dpY2Fs
TGVmdEVkZ2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UsIGJvb2wgYW50aWFsaWFzLCBj
b25zdCBDb2xvciogb3ZlcnJpZGVDb2xvcikKIHsKICAgICBjb25zdCBCb3JkZXJFZGdlJiBlZGdl
VG9SZW5kZXIgPSBlZGdlc1tzaWRlXTsKQEAgLTE3MDUsOSArMTcwNSw5IEBAIHZvaWQgUmVuZGVy
Qm94TW9kZWxPYmplY3Q6OnBhaW50T25lQm9yZGVyU2lkZShHcmFwaGljc0NvbnRleHQqIGdyYXBo
aWNzQ29udGV4dCwKICAgICB9CiB9CiAKLXN0YXRpYyBJbnRSZWN0IGNhbGN1bGF0ZVNpZGVSZWN0
KGNvbnN0IFJvdW5kZWRSZWN0JiBvdXRlckJvcmRlciwgY29uc3QgQm9yZGVyRWRnZSBlZGdlc1td
LCBpbnQgc2lkZSkKK3N0YXRpYyBMYXlvdXRSZWN0IGNhbGN1bGF0ZVNpZGVSZWN0KGNvbnN0IFJv
dW5kZWRSZWN0JiBvdXRlckJvcmRlciwgY29uc3QgQm9yZGVyRWRnZSBlZGdlc1tdLCBpbnQgc2lk
ZSkKIHsKLSAgICBJbnRSZWN0IHNpZGVSZWN0ID0gb3V0ZXJCb3JkZXIucmVjdCgpOworICAgIExh
eW91dFJlY3Qgc2lkZVJlY3QgPSBvdXRlckJvcmRlci5yZWN0KCk7CiAgICAgaW50IHdpZHRoID0g
ZWRnZXNbc2lkZV0ud2lkdGg7CiAKICAgICBpZiAoc2lkZSA9PSBCU1RvcCkKQEAgLTE3MzgsNyAr
MTczOCw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVyU2lkZXMoR3Jh
cGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvCiAgICAgLy8gb25seSBkZXBlbmRzIG9u
IHNpZGVSZWN0IHdoZW4gcGFpbnRpbmcgc29saWQgYm9yZGVycy4KIAogICAgIGlmIChlZGdlc1tC
U1RvcF0uc2hvdWxkUmVuZGVyKCkgJiYgaW5jbHVkZXNFZGdlKGVkZ2VTZXQsIEJTVG9wKSkgewot
ICAgICAgICBJbnRSZWN0IHNpZGVSZWN0ID0gb3V0ZXJCb3JkZXIucmVjdCgpOworICAgICAgICBM
YXlvdXRSZWN0IHNpZGVSZWN0ID0gb3V0ZXJCb3JkZXIucmVjdCgpOwogICAgICAgICBzaWRlUmVj
dC5zZXRIZWlnaHQoZWRnZXNbQlNUb3BdLndpZHRoICsgaW5uZXJCb3JkZXJBZGp1c3RtZW50Lnko
KSk7CiAKICAgICAgICAgYm9vbCB1c2VQYXRoID0gcmVuZGVyUmFkaWkgJiYgKGJvcmRlclN0eWxl
SGFzSW5uZXJEZXRhaWwoZWRnZXNbQlNUb3BdLnN0eWxlKSB8fCBib3JkZXJXaWxsQXJjSW5uZXJF
ZGdlKGlubmVyQm9yZGVyLnJhZGlpKCkudG9wTGVmdCgpLCBpbm5lckJvcmRlci5yYWRpaSgpLnRv
cFJpZ2h0KCkpKTsKQEAgLTE3NDYsNyArMTc0Niw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmpl
Y3Q6OnBhaW50Qm9yZGVyU2lkZXMoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNv
CiAgICAgfQogCiAgICAgaWYgKGVkZ2VzW0JTQm90dG9tXS5zaG91bGRSZW5kZXIoKSAmJiBpbmNs
dWRlc0VkZ2UoZWRnZVNldCwgQlNCb3R0b20pKSB7Ci0gICAgICAgIEludFJlY3Qgc2lkZVJlY3Qg
PSBvdXRlckJvcmRlci5yZWN0KCk7CisgICAgICAgIExheW91dFJlY3Qgc2lkZVJlY3QgPSBvdXRl
ckJvcmRlci5yZWN0KCk7CiAgICAgICAgIHNpZGVSZWN0LnNoaWZ0WUVkZ2VUbyhzaWRlUmVjdC5t
YXhZKCkgLSBlZGdlc1tCU0JvdHRvbV0ud2lkdGggLSBpbm5lckJvcmRlckFkanVzdG1lbnQueSgp
KTsKIAogICAgICAgICBib29sIHVzZVBhdGggPSByZW5kZXJSYWRpaSAmJiAoYm9yZGVyU3R5bGVI
YXNJbm5lckRldGFpbChlZGdlc1tCU0JvdHRvbV0uc3R5bGUpIHx8IGJvcmRlcldpbGxBcmNJbm5l
ckVkZ2UoaW5uZXJCb3JkZXIucmFkaWkoKS5ib3R0b21MZWZ0KCksIGlubmVyQm9yZGVyLnJhZGlp
KCkuYm90dG9tUmlnaHQoKSkpOwpAQCAtMTc1NCw3ICsxNzU0LDcgQEAgdm9pZCBSZW5kZXJCb3hN
b2RlbE9iamVjdDo6cGFpbnRCb3JkZXJTaWRlcyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29u
dGV4dCwgY28KICAgICB9CiAKICAgICBpZiAoZWRnZXNbQlNMZWZ0XS5zaG91bGRSZW5kZXIoKSAm
JiBpbmNsdWRlc0VkZ2UoZWRnZVNldCwgQlNMZWZ0KSkgewotICAgICAgICBJbnRSZWN0IHNpZGVS
ZWN0ID0gb3V0ZXJCb3JkZXIucmVjdCgpOworICAgICAgICBMYXlvdXRSZWN0IHNpZGVSZWN0ID0g
b3V0ZXJCb3JkZXIucmVjdCgpOwogICAgICAgICBzaWRlUmVjdC5zZXRXaWR0aChlZGdlc1tCU0xl
ZnRdLndpZHRoICsgaW5uZXJCb3JkZXJBZGp1c3RtZW50LngoKSk7CiAKICAgICAgICAgYm9vbCB1
c2VQYXRoID0gcmVuZGVyUmFkaWkgJiYgKGJvcmRlclN0eWxlSGFzSW5uZXJEZXRhaWwoZWRnZXNb
QlNMZWZ0XS5zdHlsZSkgfHwgYm9yZGVyV2lsbEFyY0lubmVyRWRnZShpbm5lckJvcmRlci5yYWRp
aSgpLmJvdHRvbUxlZnQoKSwgaW5uZXJCb3JkZXIucmFkaWkoKS50b3BMZWZ0KCkpKTsKQEAgLTE3
NjIsNyArMTc2Miw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVyU2lk
ZXMoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvCiAgICAgfQogCiAgICAgaWYg
KGVkZ2VzW0JTUmlnaHRdLnNob3VsZFJlbmRlcigpICYmIGluY2x1ZGVzRWRnZShlZGdlU2V0LCBC
U1JpZ2h0KSkgewotICAgICAgICBJbnRSZWN0IHNpZGVSZWN0ID0gb3V0ZXJCb3JkZXIucmVjdCgp
OworICAgICAgICBMYXlvdXRSZWN0IHNpZGVSZWN0ID0gb3V0ZXJCb3JkZXIucmVjdCgpOwogICAg
ICAgICBzaWRlUmVjdC5zaGlmdFhFZGdlVG8oc2lkZVJlY3QubWF4WCgpIC0gZWRnZXNbQlNSaWdo
dF0ud2lkdGggLSBpbm5lckJvcmRlckFkanVzdG1lbnQueCgpKTsKIAogICAgICAgICBib29sIHVz
ZVBhdGggPSByZW5kZXJSYWRpaSAmJiAoYm9yZGVyU3R5bGVIYXNJbm5lckRldGFpbChlZGdlc1tC
U1JpZ2h0XS5zdHlsZSkgfHwgYm9yZGVyV2lsbEFyY0lubmVyRWRnZShpbm5lckJvcmRlci5yYWRp
aSgpLmJvdHRvbVJpZ2h0KCksIGlubmVyQm9yZGVyLnJhZGlpKCkudG9wUmlnaHQoKSkpOwpAQCAt
MTg4Nyw4ICsxODg3LDggQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3JkZXIo
Y29uc3QgUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBMYXlvdXRSZWN0JgogICAgICAgICAgICAgICAg
IHBhdGguYWRkUmVjdChvdXRlckJvcmRlci5yZWN0KCkpOwogCiAgICAgICAgICAgICBpZiAoaGF2
ZUFsbERvdWJsZUVkZ2VzKSB7Ci0gICAgICAgICAgICAgICAgSW50UmVjdCBpbm5lclRoaXJkUmVj
dCA9IG91dGVyQm9yZGVyLnJlY3QoKTsKLSAgICAgICAgICAgICAgICBJbnRSZWN0IG91dGVyVGhp
cmRSZWN0ID0gb3V0ZXJCb3JkZXIucmVjdCgpOworICAgICAgICAgICAgICAgIExheW91dFJlY3Qg
aW5uZXJUaGlyZFJlY3QgPSBvdXRlckJvcmRlci5yZWN0KCk7CisgICAgICAgICAgICAgICAgTGF5
b3V0UmVjdCBvdXRlclRoaXJkUmVjdCA9IG91dGVyQm9yZGVyLnJlY3QoKTsKICAgICAgICAgICAg
ICAgICBmb3IgKGludCBzaWRlID0gQlNUb3A7IHNpZGUgPD0gQlNMZWZ0OyArK3NpZGUpIHsKICAg
ICAgICAgICAgICAgICAgICAgaW50IG91dGVyV2lkdGg7CiAgICAgICAgICAgICAgICAgICAgIGlu
dCBpbm5lcldpZHRoOwpAQCAtMTk0Miw3ICsxOTQyLDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9i
amVjdDo6cGFpbnRCb3JkZXIoY29uc3QgUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBMYXlvdXRSZWN0
JgogICAgICAgICAgICAgZm9yIChpbnQgaSA9IEJTVG9wOyBpIDw9IEJTTGVmdDsgKytpKSB7CiAg
ICAgICAgICAgICAgICAgY29uc3QgQm9yZGVyRWRnZSYgY3VyckVkZ2UgPSBlZGdlc1tpXTsKICAg
ICAgICAgICAgICAgICBpZiAoY3VyckVkZ2Uuc2hvdWxkUmVuZGVyKCkpIHsKLSAgICAgICAgICAg
ICAgICAgICAgSW50UmVjdCBzaWRlUmVjdCA9IGNhbGN1bGF0ZVNpZGVSZWN0KG91dGVyQm9yZGVy
LCBlZGdlcywgaSk7CisgICAgICAgICAgICAgICAgICAgIExheW91dFJlY3Qgc2lkZVJlY3QgPSBj
YWxjdWxhdGVTaWRlUmVjdChvdXRlckJvcmRlciwgZWRnZXMsIGkpOwogICAgICAgICAgICAgICAg
ICAgICBwYXRoLmFkZFJlY3Qoc2lkZVJlY3QpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIH0KQEAgLTIyNDcsOSArMjI0Nyw5IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmNs
aXBCb3JkZXJTaWRlUG9seWdvbihHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4CiAgICAg
Z3JhcGhpY3NDb250ZXh0LT5jbGlwQ29udmV4UG9seWdvbig0LCBzZWNvbmRRdWFkLCAhc2Vjb25k
RWRnZU1hdGNoZXMpOwogfQogCi1zdGF0aWMgSW50UmVjdCBjYWxjdWxhdGVTaWRlUmVjdEluY2x1
ZGluZ0lubmVyKGNvbnN0IFJvdW5kZWRSZWN0JiBvdXRlckJvcmRlciwgY29uc3QgQm9yZGVyRWRn
ZSBlZGdlc1tdLCBCb3hTaWRlIHNpZGUpCitzdGF0aWMgTGF5b3V0UmVjdCBjYWxjdWxhdGVTaWRl
UmVjdEluY2x1ZGluZ0lubmVyKGNvbnN0IFJvdW5kZWRSZWN0JiBvdXRlckJvcmRlciwgY29uc3Qg
Qm9yZGVyRWRnZSBlZGdlc1tdLCBCb3hTaWRlIHNpZGUpCiB7Ci0gICAgSW50UmVjdCBzaWRlUmVj
dCA9IG91dGVyQm9yZGVyLnJlY3QoKTsKKyAgICBMYXlvdXRSZWN0IHNpZGVSZWN0ID0gb3V0ZXJC
b3JkZXIucmVjdCgpOwogICAgIGludCB3aWR0aDsKIAogICAgIHN3aXRjaCAoc2lkZSkgewpAQCAt
MjI4MCw3ICsyMjgwLDcgQEAgc3RhdGljIFJvdW5kZWRSZWN0IGNhbGN1bGF0ZUFkanVzdGVkSW5u
ZXJCb3JkZXIoY29uc3QgUm91bmRlZFJlY3QmaW5uZXJCb3JkZXIsIEIKICAgICAvLyBUaGlzIGZ1
bmN0aW9uIHJlbGllcyBvbiB0aGUgZmFjdCB3ZSBvbmx5IGdldCByYWRpaSBub3QgY29udGFpbmVk
IHdpdGhpbiBlYWNoIGVkZ2UgaWYgb25lIG9mIHRoZSByYWRpaQogICAgIC8vIGZvciBhbiBlZGdl
IGlzIHplcm8sIHNvIHdlIGNhbiBzaGlmdCB0aGUgYXJjIHRvd2FyZHMgdGhlIHplcm8gcmFkaXVz
IGNvcm5lci4KICAgICBSb3VuZGVkUmVjdDo6UmFkaWkgbmV3UmFkaWkgPSBpbm5lckJvcmRlci5y
YWRpaSgpOwotICAgIEludFJlY3QgbmV3UmVjdCA9IGlubmVyQm9yZGVyLnJlY3QoKTsKKyAgICBM
YXlvdXRSZWN0IG5ld1JlY3QgPSBpbm5lckJvcmRlci5yZWN0KCk7CiAKICAgICBmbG9hdCBvdmVy
c2hvb3Q7CiAgICAgZmxvYXQgbWF4UmFkaWk7CkBAIC0yNDc0LDE2ICsyNDc0LDE2IEBAIGJvb2wg
UmVuZGVyQm94TW9kZWxPYmplY3Q6OmJveFNoYWRvd1Nob3VsZEJlQXBwbGllZFRvQmFja2dyb3Vu
ZChCYWNrZ3JvdW5kQmxlZWRBCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBpbmxpbmUg
SW50UmVjdCBhcmVhQ2FzdGluZ1NoYWRvd0luSG9sZShjb25zdCBJbnRSZWN0JiBob2xlUmVjdCwg
aW50IHNoYWRvd0V4dGVudCwgaW50IHNoYWRvd1NwcmVhZCwgY29uc3QgSW50U2l6ZSYgc2hhZG93
T2Zmc2V0KQorc3RhdGljIGlubGluZSBMYXlvdXRSZWN0IGFyZWFDYXN0aW5nU2hhZG93SW5Ib2xl
KGNvbnN0IExheW91dFJlY3QmIGhvbGVSZWN0LCBpbnQgc2hhZG93RXh0ZW50LCBpbnQgc2hhZG93
U3ByZWFkLCBjb25zdCBJbnRTaXplJiBzaGFkb3dPZmZzZXQpCiB7Ci0gICAgSW50UmVjdCBib3Vu
ZHMoaG9sZVJlY3QpOworICAgIExheW91dFJlY3QgYm91bmRzKGhvbGVSZWN0KTsKICAgICAKICAg
ICBib3VuZHMuaW5mbGF0ZShzaGFkb3dFeHRlbnQpOwogCiAgICAgaWYgKHNoYWRvd1NwcmVhZCA8
IDApCiAgICAgICAgIGJvdW5kcy5pbmZsYXRlKC1zaGFkb3dTcHJlYWQpOwogICAgIAotICAgIElu
dFJlY3Qgb2Zmc2V0Qm91bmRzID0gYm91bmRzOworICAgIExheW91dFJlY3Qgb2Zmc2V0Qm91bmRz
ID0gYm91bmRzOwogICAgIG9mZnNldEJvdW5kcy5tb3ZlKC1zaGFkb3dPZmZzZXQpOwogICAgIHJl
dHVybiB1bmlvblJlY3QoYm91bmRzLCBvZmZzZXRCb3VuZHMpOwogfQpAQCAtMjU2NSw3ICsyNTY1
LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3hTaGFkb3coY29uc3QgUGFp
bnRJbmZvJiBpbmZvLCBjb25zdCBMYXlvdXRSZWMKICAgICAgICAgICAgICAgICAgICAgY29udGV4
dC0+ZmlsbFJvdW5kZWRSZWN0KGZpbGxSZWN0LCBDb2xvcjo6YmxhY2ssIHMtPmNvbG9yU3BhY2Uo
KSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
ICAgICBJbnRSZWN0IHJlY3RUb0NsaXBPdXQgPSBib3JkZXIucmVjdCgpOworICAgICAgICAgICAg
ICAgIExheW91dFJlY3QgcmVjdFRvQ2xpcE91dCA9IGJvcmRlci5yZWN0KCk7CiAKICAgICAgICAg
ICAgICAgICAvLyBJZiB0aGUgYm94IGlzIG9wYXF1ZSwgaXQgaXMgdW5uZWNlc3NhcnkgdG8gY2xp
cCBpdCBvdXQuIEhvd2V2ZXIsIGRvaW5nIHNvIHNhdmVzIHRpbWUKICAgICAgICAgICAgICAgICAv
LyB3aGVuIHBhaW50aW5nIHRoZSBzaGFkb3cuIE9uIHRoZSBvdGhlciBoYW5kLCBpdCBpbnRyb2R1
Y2VzIHN1YnBpeGVsIGdhcHMgYWxvbmcgdGhlCkBAIC0yNjE0LDcgKzI2MTQsNyBAQCB2b2lkIFJl
bmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJveFNoYWRvdyhjb25zdCBQYWludEluZm8mIGluZm8s
IGNvbnN0IExheW91dFJlYwogCiAgICAgICAgICAgICBDb2xvciBmaWxsQ29sb3Ioc2hhZG93Q29s
b3IucmVkKCksIHNoYWRvd0NvbG9yLmdyZWVuKCksIHNoYWRvd0NvbG9yLmJsdWUoKSwgMjU1KTsK
IAotICAgICAgICAgICAgSW50UmVjdCBvdXRlclJlY3QgPSBhcmVhQ2FzdGluZ1NoYWRvd0luSG9s
ZShib3JkZXIucmVjdCgpLCBzaGFkb3dQYWludGluZ0V4dGVudCwgc2hhZG93U3ByZWFkLCBzaGFk
b3dPZmZzZXQpOworICAgICAgICAgICAgTGF5b3V0UmVjdCBvdXRlclJlY3QgPSBhcmVhQ2FzdGlu
Z1NoYWRvd0luSG9sZShib3JkZXIucmVjdCgpLCBzaGFkb3dQYWludGluZ0V4dGVudCwgc2hhZG93
U3ByZWFkLCBzaGFkb3dPZmZzZXQpOwogICAgICAgICAgICAgUm91bmRlZFJlY3Qgcm91bmRlZEhv
bGUoaG9sZVJlY3QsIGJvcmRlci5yYWRpaSgpKTsKIAogICAgICAgICAgICAgR3JhcGhpY3NDb250
ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpjb250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgKaW5kZXggNmVkMjI2OTkxMzY2MGY2ZmU4
MTkxZWIzZjM2N2M4MDE2YzJkN2IwNy4uMWJmYzUwNTk1ZWI4ODg5NThkZGJmZWMwOGM4OWYzODFj
MmVmNDgwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1v
ZGVsT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVs
T2JqZWN0LmgKQEAgLTMzMiw4ICszMzIsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEJveFNpZGUsIGJvb2wgZmlyc3RFZGdlTWF0Y2hlcywgYm9vbCBzZWNvbmRF
ZGdlTWF0Y2hlcyk7CiAgICAgdm9pZCBjbGlwQm9yZGVyU2lkZUZvckNvbXBsZXhJbm5lclBhdGgo
R3JhcGhpY3NDb250ZXh0KiwgY29uc3QgUm91bmRlZFJlY3QmLCBjb25zdCBSb3VuZGVkUmVjdCYs
IEJveFNpZGUsIGNvbnN0IGNsYXNzIEJvcmRlckVkZ2VbXSk7CiAgICAgdm9pZCBwYWludE9uZUJv
cmRlclNpZGUoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgUmVuZGVyU3R5bGUqLCBjb25zdCBSb3Vu
ZGVkUmVjdCYgb3V0ZXJCb3JkZXIsIGNvbnN0IFJvdW5kZWRSZWN0JiBpbm5lckJvcmRlciwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSW50UmVjdCYgc2lkZVJlY3QsIEJv
eFNpZGUsIEJveFNpZGUgYWRqYWNlbnRTaWRlMSwgQm94U2lkZSBhZGphY2VudFNpZGUyLCBjb25z
dCBjbGFzcyBCb3JkZXJFZGdlW10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFBhdGgqLCBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxM
ZWZ0RWRnZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSwgYm9vbCBhbnRpYWxpYXMsIGNv
bnN0IENvbG9yKiBvdmVycmlkZUNvbG9yID0gMCk7CisgICAgICAgIGNvbnN0IExheW91dFJlY3Qm
IHNpZGVSZWN0LCBCb3hTaWRlLCBCb3hTaWRlIGFkamFjZW50U2lkZTEsIEJveFNpZGUgYWRqYWNl
bnRTaWRlMiwgY29uc3QgY2xhc3MgQm9yZGVyRWRnZVtdLAorICAgICAgICBjb25zdCBQYXRoKiwg
QmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlLCBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJv
b2wgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UsIGJvb2wgYW50aWFsaWFzLCBjb25zdCBDb2xvciog
b3ZlcnJpZGVDb2xvciA9IDApOwogICAgIHZvaWQgcGFpbnRUcmFuc2x1Y2VudEJvcmRlclNpZGVz
KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IFJlbmRlclN0eWxlKiwgY29uc3QgUm91bmRlZFJlY3Qm
IG91dGVyQm9yZGVyLCBjb25zdCBSb3VuZGVkUmVjdCYgaW5uZXJCb3JkZXIsIGNvbnN0IEludFBv
aW50JiBpbm5lckJvcmRlckFkanVzdG1lbnQsCiAgICAgICAgIGNvbnN0IGNsYXNzIEJvcmRlckVk
Z2VbXSwgQm9yZGVyRWRnZUZsYWdzLCBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UsIGJvb2wgaW5j
bHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSwgYm9vbCBh
bnRpYWxpYXMgPSBmYWxzZSk7CiAgICAgdm9pZCBwYWludEJvcmRlclNpZGVzKEdyYXBoaWNzQ29u
dGV4dCosIGNvbnN0IFJlbmRlclN0eWxlKiwgY29uc3QgUm91bmRlZFJlY3QmIG91dGVyQm9yZGVy
LCBjb25zdCBSb3VuZGVkUmVjdCYgaW5uZXJCb3JkZXIsCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222472</attachid>
            <date>2014-01-28 12:08:43 -0800</date>
            <delta_ts>2014-01-28 13:51:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-127779-20140128120847.patch</filename>
            <type>text/plain</type>
            <size>45291</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYyOTQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjYyY2U4OWVlNDM0YWYw
YjdiNzNmODAwNGE5YzFhMjE0YzZmNjRlYS4uMDFkNmE3YTRhODk1M2JiNWIzOGVhNGZlOWE1NTk4
YTcxZDM0ZDM0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc2IEBACisyMDE0LTAxLTI4ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgU3VicGl4ZWwgcmVuZGVyaW5n
OiBNYWtlIFJvdW5kZWRSZWN0IGxheW91dCB1bml0IGF3YXJlLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3Nzc5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW4gb3JkZXIgdG8gZHJhdyBoYWlybGluZSBi
b3JkZXJzLCBSb3VuZGVkUmVjdCBuZWVkcyB0byBiZQorICAgICAgICBMYXlvdXRVbml0IGJhc2Vk
LgorCisgICAgICAgIE5vIGNoYW5nZSBpbiBiZWhhdmlvci4KKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQ6OmZpbGxSb3VuZGVkUmVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZFJl
Y3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Um91bmRlZFJlY3Q6OlJhZGlpOjpzY2FsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSb3VuZGVkUmVjdDo6UmFkaWk6OmV4cGFuZCk6CisgICAgICAgIChX
ZWJDb3JlOjpSb3VuZGVkUmVjdDo6aW5mbGF0ZVdpdGhSYWRpaSk6CisgICAgICAgIChXZWJDb3Jl
OjpSb3VuZGVkUmVjdDo6Um91bmRlZFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Um91bmRlZFJl
Y3Q6OmludGVyc2VjdHNRdWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Sb3VuZGVk
UmVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6Um91bmRlZFJlY3Q6OlJhZGlpOjpSYWRpaSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSb3VuZGVkUmVjdDo6UmFkaWk6OnNldFRvcExlZnQpOgorICAgICAg
ICAoV2ViQ29yZTo6Um91bmRlZFJlY3Q6OlJhZGlpOjpzZXRUb3BSaWdodCk6CisgICAgICAgIChX
ZWJDb3JlOjpSb3VuZGVkUmVjdDo6UmFkaWk6OnNldEJvdHRvbUxlZnQpOgorICAgICAgICAoV2Vi
Q29yZTo6Um91bmRlZFJlY3Q6OlJhZGlpOjpzZXRCb3R0b21SaWdodCk6CisgICAgICAgIChXZWJD
b3JlOjpSb3VuZGVkUmVjdDo6UmFkaWk6OnRvcExlZnQpOgorICAgICAgICAoV2ViQ29yZTo6Um91
bmRlZFJlY3Q6OlJhZGlpOjp0b3BSaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpSb3VuZGVkUmVj
dDo6UmFkaWk6OmJvdHRvbUxlZnQpOgorICAgICAgICAoV2ViQ29yZTo6Um91bmRlZFJlY3Q6OlJh
ZGlpOjpib3R0b21SaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpSb3VuZGVkUmVjdDo6UmFkaWk6
OmV4cGFuZCk6CisgICAgICAgIChXZWJDb3JlOjpSb3VuZGVkUmVjdDo6UmFkaWk6OnNocmluayk6
CisgICAgICAgIChXZWJDb3JlOjpSb3VuZGVkUmVjdDo6cmVjdCk6CisgICAgICAgIChXZWJDb3Jl
OjpSb3VuZGVkUmVjdDo6c2V0UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSb3VuZGVkUmVjdDo6
bW92ZSk6CisgICAgICAgIChXZWJDb3JlOjpSb3VuZGVkUmVjdDo6aW5mbGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpSb3VuZGVkUmVjdDo6ZXhwYW5kUmFkaWkpOgorICAgICAgICAoV2ViQ29yZTo6
Um91bmRlZFJlY3Q6OnNocmlua1JhZGlpKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9T
aGFkb3dCbHVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmF0Y2hCdWZmZXI6OnNldENhY2hl
ZFNoYWRvd1ZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JhdGNoQnVmZmVyOjpzZXRDYWNo
ZWRJbnNldFNoYWRvd1ZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRlU2xpY2VTaXpl
c0Zyb21SYWRpaSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjp0ZW1wbGF0ZVNpemUp
OgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3cpOgorICAgICAg
ICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93KToKKyAgICAgICAgKFdlYkNv
cmU6OlNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0aG91dFRpbGluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRob3V0VGlsaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvd1dpdGhUaWxpbmcpOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3dXaXRoVGlsaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRyYXdMYXllclBpZWNlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFkb3dCbHVyOjpiZWdpblNoYWRvd0xheWVyKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9TaGFkb3dCbHVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0OjpjbGlwT3V0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Zmls
bFJvdW5kZWRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZmlsbFJl
Y3RXaXRoUm91bmRlZEhvbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBo
aWNzQ29udGV4dENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6cGxh
dGZvcm1Jbml0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9HcmFwaGljc0Nv
bnRleHRXaW5DRS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNsaXBP
dXQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUm91bmRlZFJlY3Qp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRPbmVCb3JkZXJTaWRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OmNhbGN1bGF0ZVNpZGVSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJvcmRlclNpZGVzKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJvcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpj
YWxjdWxhdGVTaWRlUmVjdEluY2x1ZGluZ0lubmVyKToKKyAgICAgICAgKFdlYkNvcmU6OmNhbGN1
bGF0ZUFkanVzdGVkSW5uZXJCb3JkZXIpOgorICAgICAgICAoV2ViQ29yZTo6YXJlYUNhc3RpbmdT
aGFkb3dJbkhvbGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBh
aW50Qm94U2hhZG93KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3Qu
aDoKKwogMjAxNC0wMS0yOCAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbTWFjXSBVc2UgZXhwbGljaXQsIHJhdGhlciB0aGFuIGNhbm9uaWNhbCwgQXVkaW9Gb3Jt
YXRGbGFncyBhbmQgdHlwZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAppbmRleCBmMTJmMDJhNmY2Zjg1NjY5ZmUyZDdiMmMw
MzkwN2E1YzAzZTM4NzhhLi42YjRkN2E5YTNkNzJlZGMzMjVhOTk0ZTc5Y2Y2MWExZjAxOTc2NWEz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dC5jcHAKQEAgLTc3MSw3ICs3NzEsNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Zmls
bFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9yUwog
CiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJvdW5kZWRSZWN0KGNvbnN0IFJvdW5kZWRSZWN0
JiByZWN0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgQmxlbmRN
b2RlIGJsZW5kTW9kZSkKIHsKLQogICAgIGlmIChyZWN0LmlzUm91bmRlZCgpKSB7CiAgICAgICAg
IHNldENvbXBvc2l0ZU9wZXJhdGlvbihjb21wb3NpdGVPcGVyYXRpb24oKSwgYmxlbmRNb2RlKTsK
ICAgICAgICAgZmlsbFJvdW5kZWRSZWN0KHJlY3QucmVjdCgpLCByZWN0LnJhZGlpKCkudG9wTGVm
dCgpLCByZWN0LnJhZGlpKCkudG9wUmlnaHQoKSwgcmVjdC5yYWRpaSgpLmJvdHRvbUxlZnQoKSwg
cmVjdC5yYWRpaSgpLmJvdHRvbVJpZ2h0KCksIGNvbG9yLCBjb2xvclNwYWNlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKaW5kZXgg
YTQzNzgyN2FjNjJhZGQyMGNhOWRmZGQ4OTk4YjQyYzc2MTJmNGNkZi4uODg4NjgyZTkwOGU5YjE0
MDBlNGY1MTU1ZTYyZWNmNDE3ZTZmYWVmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTI5NCw5ICsyOTQsOSBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0Jiwg
Y29uc3QgQ29sb3ImLCBDb2xvclNwYWNlKTsKICAgICAgICAgdm9pZCBmaWxsUmVjdChjb25zdCBG
bG9hdFJlY3QmLCBHcmFkaWVudCYpOwogICAgICAgICB2b2lkIGZpbGxSZWN0KGNvbnN0IEZsb2F0
UmVjdCYsIGNvbnN0IENvbG9yJiwgQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5k
TW9kZSA9IEJsZW5kTW9kZU5vcm1hbCk7Ci0gICAgICAgIHZvaWQgZmlsbFJvdW5kZWRSZWN0KGNv
bnN0IEludFJlY3QmLCBjb25zdCBJbnRTaXplJiB0b3BMZWZ0LCBjb25zdCBJbnRTaXplJiB0b3BS
aWdodCwgY29uc3QgSW50U2l6ZSYgYm90dG9tTGVmdCwgY29uc3QgSW50U2l6ZSYgYm90dG9tUmln
aHQsIGNvbnN0IENvbG9yJiwgQ29sb3JTcGFjZSk7CisgICAgICAgIHZvaWQgZmlsbFJvdW5kZWRS
ZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0U2l6ZSYgdG9wTGVmdCwgY29uc3QgRmxv
YXRTaXplJiB0b3BSaWdodCwgY29uc3QgRmxvYXRTaXplJiBib3R0b21MZWZ0LCBjb25zdCBGbG9h
dFNpemUmIGJvdHRvbVJpZ2h0LCBjb25zdCBDb2xvciYsIENvbG9yU3BhY2UpOwogICAgICAgICB2
b2lkIGZpbGxSb3VuZGVkUmVjdChjb25zdCBSb3VuZGVkUmVjdCYsIGNvbnN0IENvbG9yJiwgQ29s
b3JTcGFjZSwgQmxlbmRNb2RlID0gQmxlbmRNb2RlTm9ybWFsKTsKLSAgICAgICAgdm9pZCBmaWxs
UmVjdFdpdGhSb3VuZGVkSG9sZShjb25zdCBJbnRSZWN0JiwgY29uc3QgUm91bmRlZFJlY3QmIHJv
dW5kZWRIb2xlUmVjdCwgY29uc3QgQ29sb3ImLCBDb2xvclNwYWNlKTsKKyAgICAgICAgdm9pZCBm
aWxsUmVjdFdpdGhSb3VuZGVkSG9sZShjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBSb3VuZGVkUmVj
dCYgcm91bmRlZEhvbGVSZWN0LCBjb25zdCBDb2xvciYsIENvbG9yU3BhY2UpOwogCiAgICAgICAg
IHZvaWQgY2xlYXJSZWN0KGNvbnN0IEZsb2F0UmVjdCYpOwogCkBAIC0zMzIsNyArMzMyLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAvLyBGSVhNRTogQ29uc2lkZXIgd3JpdGluZyB0
aGlzIGluIHRlcm1zIG9mIGEgc3BlY2lhbGl6ZWQgUm91bmRlZFJlY3QgdGhhdCB1c2VzIEZsb2F0
UmVjdCBhbmQgRmxvYXRTaXplIHJhZGlpLgogICAgICAgICB2b2lkIGNsaXBSb3VuZGVkUmVjdChj
b25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFNpemUmIHRvcExlZnQsIGNvbnN0IEZsb2F0U2l6
ZSYgdG9wUmlnaHQsIGNvbnN0IEZsb2F0U2l6ZSYgYm90dG9tTGVmdCwgY29uc3QgRmxvYXRTaXpl
JiBib3R0b21SaWdodCk7CiAKLSAgICAgICAgdm9pZCBjbGlwT3V0KGNvbnN0IEludFJlY3QmKTsK
KyAgICAgICAgdm9pZCBjbGlwT3V0KGNvbnN0IEZsb2F0UmVjdCYpOwogICAgICAgICB2b2lkIGNs
aXBPdXRSb3VuZGVkUmVjdChjb25zdCBSb3VuZGVkUmVjdCYpOwogICAgICAgICB2b2lkIGNsaXBQ
YXRoKGNvbnN0IFBhdGgmLCBXaW5kUnVsZSk7CiAgICAgICAgIHZvaWQgY2xpcENvbnZleFBvbHln
b24oc2l6ZV90IG51bVBvaW50cywgY29uc3QgRmxvYXRQb2ludCosIGJvb2wgYW50aWFsaWFzID0g
dHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Sb3Vu
ZGVkUmVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Sb3VuZGVkUmVj
dC5jcHAKaW5kZXggOGYyZjFjZjkxZTI5M2VmYTc1NDQzYjFjZDVmMDVkNzdjMTI1YjgzZS4uZDcy
NzMyNGU3NzRmNjBmOWUzYWU5ZmQ2MTk5NmNjNjNiMmY4OGU2MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZFJlY3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JvdW5kZWRSZWN0LmNwcApAQCAtMjgsNiArMjgsOSBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlJvdW5kZWRSZWN0LmgiCiAKKyNpbmNs
dWRlICJMYXlvdXRSZWN0LmgiCisjaW5jbHVkZSAiTGF5b3V0VW5pdC5oIgorCiAjaW5jbHVkZSA8
YWxnb3JpdGhtPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00NSw0MiArNDgsNDIgQEAgdm9p
ZCBSb3VuZGVkUmVjdDo6UmFkaWk6OnNjYWxlKGZsb2F0IGZhY3RvcikKICAgICAvLyBJZiBlaXRo
ZXIgcmFkaXVzIG9uIGEgY29ybmVyIGJlY29tZXMgemVybywgcmVzZXQgYm90aCByYWRpaSBvbiB0
aGF0IGNvcm5lci4KICAgICBtX3RvcExlZnQuc2NhbGUoZmFjdG9yKTsKICAgICBpZiAoIW1fdG9w
TGVmdC53aWR0aCgpIHx8ICFtX3RvcExlZnQuaGVpZ2h0KCkpCi0gICAgICAgIG1fdG9wTGVmdCA9
IEludFNpemUoKTsKKyAgICAgICAgbV90b3BMZWZ0ID0gTGF5b3V0U2l6ZSgpOwogICAgIG1fdG9w
UmlnaHQuc2NhbGUoZmFjdG9yKTsKICAgICBpZiAoIW1fdG9wUmlnaHQud2lkdGgoKSB8fCAhbV90
b3BSaWdodC5oZWlnaHQoKSkKLSAgICAgICAgbV90b3BSaWdodCA9IEludFNpemUoKTsKKyAgICAg
ICAgbV90b3BSaWdodCA9IExheW91dFNpemUoKTsKICAgICBtX2JvdHRvbUxlZnQuc2NhbGUoZmFj
dG9yKTsKICAgICBpZiAoIW1fYm90dG9tTGVmdC53aWR0aCgpIHx8ICFtX2JvdHRvbUxlZnQuaGVp
Z2h0KCkpCi0gICAgICAgIG1fYm90dG9tTGVmdCA9IEludFNpemUoKTsKKyAgICAgICAgbV9ib3R0
b21MZWZ0ID0gTGF5b3V0U2l6ZSgpOwogICAgIG1fYm90dG9tUmlnaHQuc2NhbGUoZmFjdG9yKTsK
ICAgICBpZiAoIW1fYm90dG9tUmlnaHQud2lkdGgoKSB8fCAhbV9ib3R0b21SaWdodC5oZWlnaHQo
KSkKLSAgICAgICAgbV9ib3R0b21SaWdodCA9IEludFNpemUoKTsKKyAgICAgICAgbV9ib3R0b21S
aWdodCA9IExheW91dFNpemUoKTsKIAogfQogCi12b2lkIFJvdW5kZWRSZWN0OjpSYWRpaTo6ZXhw
YW5kKGludCB0b3BXaWR0aCwgaW50IGJvdHRvbVdpZHRoLCBpbnQgbGVmdFdpZHRoLCBpbnQgcmln
aHRXaWR0aCkKK3ZvaWQgUm91bmRlZFJlY3Q6OlJhZGlpOjpleHBhbmQoY29uc3QgTGF5b3V0VW5p
dCYgdG9wV2lkdGgsIGNvbnN0IExheW91dFVuaXQmIGJvdHRvbVdpZHRoLCBjb25zdCBMYXlvdXRV
bml0JiBsZWZ0V2lkdGgsIGNvbnN0IExheW91dFVuaXQmIHJpZ2h0V2lkdGgpCiB7CiAgICAgaWYg
KG1fdG9wTGVmdC53aWR0aCgpID4gMCAmJiBtX3RvcExlZnQuaGVpZ2h0KCkgPiAwKSB7Ci0gICAg
ICAgIG1fdG9wTGVmdC5zZXRXaWR0aChzdGQ6Om1heDxpbnQ+KDAsIG1fdG9wTGVmdC53aWR0aCgp
ICsgbGVmdFdpZHRoKSk7Ci0gICAgICAgIG1fdG9wTGVmdC5zZXRIZWlnaHQoc3RkOjptYXg8aW50
PigwLCBtX3RvcExlZnQuaGVpZ2h0KCkgKyB0b3BXaWR0aCkpOworICAgICAgICBtX3RvcExlZnQu
c2V0V2lkdGgoc3RkOjptYXg8TGF5b3V0VW5pdD4oMCwgbV90b3BMZWZ0LndpZHRoKCkgKyBsZWZ0
V2lkdGgpKTsKKyAgICAgICAgbV90b3BMZWZ0LnNldEhlaWdodChzdGQ6Om1heDxMYXlvdXRVbml0
PigwLCBtX3RvcExlZnQuaGVpZ2h0KCkgKyB0b3BXaWR0aCkpOwogICAgIH0KICAgICBpZiAobV90
b3BSaWdodC53aWR0aCgpID4gMCAmJiBtX3RvcFJpZ2h0LmhlaWdodCgpID4gMCkgewotICAgICAg
ICBtX3RvcFJpZ2h0LnNldFdpZHRoKHN0ZDo6bWF4PGludD4oMCwgbV90b3BSaWdodC53aWR0aCgp
ICsgcmlnaHRXaWR0aCkpOwotICAgICAgICBtX3RvcFJpZ2h0LnNldEhlaWdodChzdGQ6Om1heDxp
bnQ+KDAsIG1fdG9wUmlnaHQuaGVpZ2h0KCkgKyB0b3BXaWR0aCkpOworICAgICAgICBtX3RvcFJp
Z2h0LnNldFdpZHRoKHN0ZDo6bWF4PExheW91dFVuaXQ+KDAsIG1fdG9wUmlnaHQud2lkdGgoKSAr
IHJpZ2h0V2lkdGgpKTsKKyAgICAgICAgbV90b3BSaWdodC5zZXRIZWlnaHQoc3RkOjptYXg8TGF5
b3V0VW5pdD4oMCwgbV90b3BSaWdodC5oZWlnaHQoKSArIHRvcFdpZHRoKSk7CiAgICAgfQogICAg
IGlmIChtX2JvdHRvbUxlZnQud2lkdGgoKSA+IDAgJiYgbV9ib3R0b21MZWZ0LmhlaWdodCgpID4g
MCkgewotICAgICAgICBtX2JvdHRvbUxlZnQuc2V0V2lkdGgoc3RkOjptYXg8aW50PigwLCBtX2Jv
dHRvbUxlZnQud2lkdGgoKSArIGxlZnRXaWR0aCkpOwotICAgICAgICBtX2JvdHRvbUxlZnQuc2V0
SGVpZ2h0KHN0ZDo6bWF4PGludD4oMCwgbV9ib3R0b21MZWZ0LmhlaWdodCgpICsgYm90dG9tV2lk
dGgpKTsKKyAgICAgICAgbV9ib3R0b21MZWZ0LnNldFdpZHRoKHN0ZDo6bWF4PExheW91dFVuaXQ+
KDAsIG1fYm90dG9tTGVmdC53aWR0aCgpICsgbGVmdFdpZHRoKSk7CisgICAgICAgIG1fYm90dG9t
TGVmdC5zZXRIZWlnaHQoc3RkOjptYXg8TGF5b3V0VW5pdD4oMCwgbV9ib3R0b21MZWZ0LmhlaWdo
dCgpICsgYm90dG9tV2lkdGgpKTsKICAgICB9CiAgICAgaWYgKG1fYm90dG9tUmlnaHQud2lkdGgo
KSA+IDAgJiYgbV9ib3R0b21SaWdodC5oZWlnaHQoKSA+IDApIHsKLSAgICAgICAgbV9ib3R0b21S
aWdodC5zZXRXaWR0aChzdGQ6Om1heDxpbnQ+KDAsIG1fYm90dG9tUmlnaHQud2lkdGgoKSArIHJp
Z2h0V2lkdGgpKTsKLSAgICAgICAgbV9ib3R0b21SaWdodC5zZXRIZWlnaHQoc3RkOjptYXg8aW50
PigwLCBtX2JvdHRvbVJpZ2h0LmhlaWdodCgpICsgYm90dG9tV2lkdGgpKTsKKyAgICAgICAgbV9i
b3R0b21SaWdodC5zZXRXaWR0aChzdGQ6Om1heDxMYXlvdXRVbml0PigwLCBtX2JvdHRvbVJpZ2h0
LndpZHRoKCkgKyByaWdodFdpZHRoKSk7CisgICAgICAgIG1fYm90dG9tUmlnaHQuc2V0SGVpZ2h0
KHN0ZDo6bWF4PExheW91dFVuaXQ+KDAsIG1fYm90dG9tUmlnaHQuaGVpZ2h0KCkgKyBib3R0b21X
aWR0aCkpOwogICAgIH0KIH0KIAotdm9pZCBSb3VuZGVkUmVjdDo6aW5mbGF0ZVdpdGhSYWRpaShp
bnQgc2l6ZSkKK3ZvaWQgUm91bmRlZFJlY3Q6OmluZmxhdGVXaXRoUmFkaWkoY29uc3QgTGF5b3V0
VW5pdCYgc2l6ZSkKIHsKLSAgICBJbnRSZWN0IG9sZCA9IG1fcmVjdDsKKyAgICBMYXlvdXRSZWN0
IG9sZCA9IG1fcmVjdDsKIAogICAgIG1fcmVjdC5pbmZsYXRlKHNpemUpOwogICAgIC8vIENvbnNp
ZGVyaW5nIHRoZSBpbmZsYXRpb24gZmFjdG9yIG9mIHNob3J0ZXIgc2l6ZSB0byBzY2FsZSB0aGUg
cmFkaWkgc2VlbXMgYXBwcm9wcmlhdGUgaGVyZQpAQCAtMTMxLDE4ICsxMzQsMTggQEAgdm9pZCBS
b3VuZGVkUmVjdDo6UmFkaWk6OmV4Y2x1ZGVMb2dpY2FsRWRnZXMoYm9vbCBpc0hvcml6b250YWws
IGJvb2wgZXhjbHVkZUxvZ2kKICAgICB9CiB9CiAKLVJvdW5kZWRSZWN0OjpSb3VuZGVkUmVjdChp
bnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50IGhlaWdodCkKK1JvdW5kZWRSZWN0OjpSb3VuZGVk
UmVjdChjb25zdCBMYXlvdXRVbml0JiB4LCBjb25zdCBMYXlvdXRVbml0JiB5LCBjb25zdCBMYXlv
dXRVbml0JiB3aWR0aCwgY29uc3QgTGF5b3V0VW5pdCYgaGVpZ2h0KQogICAgIDogbV9yZWN0KHgs
IHksIHdpZHRoLCBoZWlnaHQpCiB7CiB9CiAKLVJvdW5kZWRSZWN0OjpSb3VuZGVkUmVjdChjb25z
dCBJbnRSZWN0JiByZWN0LCBjb25zdCBSYWRpaSYgcmFkaWkpCitSb3VuZGVkUmVjdDo6Um91bmRl
ZFJlY3QoY29uc3QgTGF5b3V0UmVjdCYgcmVjdCwgY29uc3QgUmFkaWkmIHJhZGlpKQogICAgIDog
bV9yZWN0KHJlY3QpCiAgICAgLCBtX3JhZGlpKHJhZGlpKQogewogfQogCi1Sb3VuZGVkUmVjdDo6
Um91bmRlZFJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW50U2l6ZSYgdG9wTGVmdCwg
Y29uc3QgSW50U2l6ZSYgdG9wUmlnaHQsIGNvbnN0IEludFNpemUmIGJvdHRvbUxlZnQsIGNvbnN0
IEludFNpemUmIGJvdHRvbVJpZ2h0KQorUm91bmRlZFJlY3Q6OlJvdW5kZWRSZWN0KGNvbnN0IExh
eW91dFJlY3QmIHJlY3QsIGNvbnN0IExheW91dFNpemUmIHRvcExlZnQsIGNvbnN0IExheW91dFNp
emUmIHRvcFJpZ2h0LCBjb25zdCBMYXlvdXRTaXplJiBib3R0b21MZWZ0LCBjb25zdCBMYXlvdXRT
aXplJiBib3R0b21SaWdodCkKICAgICA6IG1fcmVjdChyZWN0KQogICAgICwgbV9yYWRpaSh0b3BM
ZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVmdCwgYm90dG9tUmlnaHQpCiB7CkBAIC0xODYsNyArMTg5
LDcgQEAgYm9vbCBSb3VuZGVkUmVjdDo6aW50ZXJzZWN0c1F1YWQoY29uc3QgRmxvYXRRdWFkJiBx
dWFkKSBjb25zdAogICAgIGlmICghcXVhZC5pbnRlcnNlY3RzUmVjdChyZWN0KSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgY29uc3QgSW50U2l6ZSYgdG9wTGVmdCA9IG1fcmFkaWkudG9w
TGVmdCgpOworICAgIGNvbnN0IExheW91dFNpemUmIHRvcExlZnQgPSBtX3JhZGlpLnRvcExlZnQo
KTsKICAgICBpZiAoIXRvcExlZnQuaXNFbXB0eSgpKSB7CiAgICAgICAgIEZsb2F0UmVjdCByZWN0
KG1fcmVjdC54KCksIG1fcmVjdC55KCksIHRvcExlZnQud2lkdGgoKSwgdG9wTGVmdC5oZWlnaHQo
KSk7CiAgICAgICAgIGlmIChxdWFkLmludGVyc2VjdHNSZWN0KHJlY3QpKSB7CkBAIC0xOTcsNyAr
MjAwLDcgQEAgYm9vbCBSb3VuZGVkUmVjdDo6aW50ZXJzZWN0c1F1YWQoY29uc3QgRmxvYXRRdWFk
JiBxdWFkKSBjb25zdAogICAgICAgICB9CiAgICAgfQogCi0gICAgY29uc3QgSW50U2l6ZSYgdG9w
UmlnaHQgPSBtX3JhZGlpLnRvcFJpZ2h0KCk7CisgICAgY29uc3QgTGF5b3V0U2l6ZSYgdG9wUmln
aHQgPSBtX3JhZGlpLnRvcFJpZ2h0KCk7CiAgICAgaWYgKCF0b3BSaWdodC5pc0VtcHR5KCkpIHsK
ICAgICAgICAgRmxvYXRSZWN0IHJlY3QobV9yZWN0Lm1heFgoKSAtIHRvcFJpZ2h0LndpZHRoKCks
IG1fcmVjdC55KCksIHRvcFJpZ2h0LndpZHRoKCksIHRvcFJpZ2h0LmhlaWdodCgpKTsKICAgICAg
ICAgaWYgKHF1YWQuaW50ZXJzZWN0c1JlY3QocmVjdCkpIHsKQEAgLTIwOCw3ICsyMTEsNyBAQCBi
b29sIFJvdW5kZWRSZWN0OjppbnRlcnNlY3RzUXVhZChjb25zdCBGbG9hdFF1YWQmIHF1YWQpIGNv
bnN0CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBjb25zdCBJbnRTaXplJiBib3R0b21MZWZ0ID0g
bV9yYWRpaS5ib3R0b21MZWZ0KCk7CisgICAgY29uc3QgTGF5b3V0U2l6ZSYgYm90dG9tTGVmdCA9
IG1fcmFkaWkuYm90dG9tTGVmdCgpOwogICAgIGlmICghYm90dG9tTGVmdC5pc0VtcHR5KCkpIHsK
ICAgICAgICAgRmxvYXRSZWN0IHJlY3QobV9yZWN0LngoKSwgbV9yZWN0Lm1heFkoKSAtIGJvdHRv
bUxlZnQuaGVpZ2h0KCksIGJvdHRvbUxlZnQud2lkdGgoKSwgYm90dG9tTGVmdC5oZWlnaHQoKSk7
CiAgICAgICAgIGlmIChxdWFkLmludGVyc2VjdHNSZWN0KHJlY3QpKSB7CkBAIC0yMTksNyArMjIy
LDcgQEAgYm9vbCBSb3VuZGVkUmVjdDo6aW50ZXJzZWN0c1F1YWQoY29uc3QgRmxvYXRRdWFkJiBx
dWFkKSBjb25zdAogICAgICAgICB9CiAgICAgfQogCi0gICAgY29uc3QgSW50U2l6ZSYgYm90dG9t
UmlnaHQgPSBtX3JhZGlpLmJvdHRvbVJpZ2h0KCk7CisgICAgY29uc3QgTGF5b3V0U2l6ZSYgYm90
dG9tUmlnaHQgPSBtX3JhZGlpLmJvdHRvbVJpZ2h0KCk7CiAgICAgaWYgKCFib3R0b21SaWdodC5p
c0VtcHR5KCkpIHsKICAgICAgICAgRmxvYXRSZWN0IHJlY3QobV9yZWN0Lm1heFgoKSAtIGJvdHRv
bVJpZ2h0LndpZHRoKCksIG1fcmVjdC5tYXhZKCkgLSBib3R0b21SaWdodC5oZWlnaHQoKSwgYm90
dG9tUmlnaHQud2lkdGgoKSwgYm90dG9tUmlnaHQuaGVpZ2h0KCkpOwogICAgICAgICBpZiAocXVh
ZC5pbnRlcnNlY3RzUmVjdChyZWN0KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvUm91bmRlZFJlY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1JvdW5kZWRSZWN0LmgKaW5kZXggZDkyM2UzNTNmNDhhYjk4ZGU5MTU3NzM2M2JhNjM0
Yzc4YTljMjMwMy4uNjFiZGE5N2JmNWY1MDk1MjM3NTcxYTU1YmVhZmJhNzc5MDVlZjgwNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZFJlY3QuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Sb3VuZGVkUmVjdC5oCkBAIC0y
OCwxNyArMjgsMTkgQEAKICNkZWZpbmUgUm91bmRlZFJlY3RfaAogCiAjaW5jbHVkZSAiRmxvYXRR
dWFkLmgiCi0jaW5jbHVkZSAiSW50UmVjdC5oIgorI2luY2x1ZGUgIkxheW91dFJlY3QuaCIKKyNp
bmNsdWRlICJMYXlvdXRTaXplLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgTGF5
b3V0VW5pdDsKIAogY2xhc3MgUm91bmRlZFJlY3QgewogcHVibGljOgogICAgIGNsYXNzIFJhZGlp
IHsKICAgICBwdWJsaWM6CiAgICAgICAgIFJhZGlpKCkge30KLSAgICAgICAgUmFkaWkoY29uc3Qg
SW50U2l6ZSYgdG9wTGVmdCwgY29uc3QgSW50U2l6ZSYgdG9wUmlnaHQsIGNvbnN0IEludFNpemUm
IGJvdHRvbUxlZnQsIGNvbnN0IEludFNpemUmIGJvdHRvbVJpZ2h0KQorICAgICAgICBSYWRpaShj
b25zdCBMYXlvdXRTaXplJiB0b3BMZWZ0LCBjb25zdCBMYXlvdXRTaXplJiB0b3BSaWdodCwgY29u
c3QgTGF5b3V0U2l6ZSYgYm90dG9tTGVmdCwgY29uc3QgTGF5b3V0U2l6ZSYgYm90dG9tUmlnaHQp
CiAgICAgICAgICAgICA6IG1fdG9wTGVmdCh0b3BMZWZ0KQogICAgICAgICAgICAgLCBtX3RvcFJp
Z2h0KHRvcFJpZ2h0KQogICAgICAgICAgICAgLCBtX2JvdHRvbUxlZnQoYm90dG9tTGVmdCkKQEAg
LTQ2LDE0ICs0OCwxNCBAQCBwdWJsaWM6CiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAg
IHZvaWQgc2V0VG9wTGVmdChjb25zdCBJbnRTaXplJiBzaXplKSB7IG1fdG9wTGVmdCA9IHNpemU7
IH0KLSAgICAgICAgdm9pZCBzZXRUb3BSaWdodChjb25zdCBJbnRTaXplJiBzaXplKSB7IG1fdG9w
UmlnaHQgPSBzaXplOyB9Ci0gICAgICAgIHZvaWQgc2V0Qm90dG9tTGVmdChjb25zdCBJbnRTaXpl
JiBzaXplKSB7IG1fYm90dG9tTGVmdCA9IHNpemU7IH0KLSAgICAgICAgdm9pZCBzZXRCb3R0b21S
aWdodChjb25zdCBJbnRTaXplJiBzaXplKSB7IG1fYm90dG9tUmlnaHQgPSBzaXplOyB9Ci0gICAg
ICAgIGNvbnN0IEludFNpemUmIHRvcExlZnQoKSBjb25zdCB7IHJldHVybiBtX3RvcExlZnQ7IH0K
LSAgICAgICAgY29uc3QgSW50U2l6ZSYgdG9wUmlnaHQoKSBjb25zdCB7IHJldHVybiBtX3RvcFJp
Z2h0OyB9Ci0gICAgICAgIGNvbnN0IEludFNpemUmIGJvdHRvbUxlZnQoKSBjb25zdCB7IHJldHVy
biBtX2JvdHRvbUxlZnQ7IH0KLSAgICAgICAgY29uc3QgSW50U2l6ZSYgYm90dG9tUmlnaHQoKSBj
b25zdCB7IHJldHVybiBtX2JvdHRvbVJpZ2h0OyB9CisgICAgICAgIHZvaWQgc2V0VG9wTGVmdChj
b25zdCBMYXlvdXRTaXplJiBzaXplKSB7IG1fdG9wTGVmdCA9IHNpemU7IH0KKyAgICAgICAgdm9p
ZCBzZXRUb3BSaWdodChjb25zdCBMYXlvdXRTaXplJiBzaXplKSB7IG1fdG9wUmlnaHQgPSBzaXpl
OyB9CisgICAgICAgIHZvaWQgc2V0Qm90dG9tTGVmdChjb25zdCBMYXlvdXRTaXplJiBzaXplKSB7
IG1fYm90dG9tTGVmdCA9IHNpemU7IH0KKyAgICAgICAgdm9pZCBzZXRCb3R0b21SaWdodChjb25z
dCBMYXlvdXRTaXplJiBzaXplKSB7IG1fYm90dG9tUmlnaHQgPSBzaXplOyB9CisgICAgICAgIGNv
bnN0IExheW91dFNpemUmIHRvcExlZnQoKSBjb25zdCB7IHJldHVybiBtX3RvcExlZnQ7IH0KKyAg
ICAgICAgY29uc3QgTGF5b3V0U2l6ZSYgdG9wUmlnaHQoKSBjb25zdCB7IHJldHVybiBtX3RvcFJp
Z2h0OyB9CisgICAgICAgIGNvbnN0IExheW91dFNpemUmIGJvdHRvbUxlZnQoKSBjb25zdCB7IHJl
dHVybiBtX2JvdHRvbUxlZnQ7IH0KKyAgICAgICAgY29uc3QgTGF5b3V0U2l6ZSYgYm90dG9tUmln
aHQoKSBjb25zdCB7IHJldHVybiBtX2JvdHRvbVJpZ2h0OyB9CiAKICAgICAgICAgYm9vbCBpc1pl
cm8oKSBjb25zdDsKIApAQCAtNjEsMzUgKzYzLDM1IEBAIHB1YmxpYzoKICAgICAgICAgdm9pZCBl
eGNsdWRlTG9naWNhbEVkZ2VzKGJvb2wgaXNIb3Jpem9udGFsLCBib29sIGV4Y2x1ZGVMb2dpY2Fs
TGVmdEVkZ2UsIGJvb2wgZXhjbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOwogCiAgICAgICAgIHZvaWQg
c2NhbGUoZmxvYXQgZmFjdG9yKTsKLSAgICAgICAgdm9pZCBleHBhbmQoaW50IHRvcFdpZHRoLCBp
bnQgYm90dG9tV2lkdGgsIGludCBsZWZ0V2lkdGgsIGludCByaWdodFdpZHRoKTsKLSAgICAgICAg
dm9pZCBleHBhbmQoaW50IHNpemUpIHsgZXhwYW5kKHNpemUsIHNpemUsIHNpemUsIHNpemUpOyB9
Ci0gICAgICAgIHZvaWQgc2hyaW5rKGludCB0b3BXaWR0aCwgaW50IGJvdHRvbVdpZHRoLCBpbnQg
bGVmdFdpZHRoLCBpbnQgcmlnaHRXaWR0aCkgeyBleHBhbmQoLXRvcFdpZHRoLCAtYm90dG9tV2lk
dGgsIC1sZWZ0V2lkdGgsIC1yaWdodFdpZHRoKTsgfQotICAgICAgICB2b2lkIHNocmluayhpbnQg
c2l6ZSkgeyBzaHJpbmsoc2l6ZSwgc2l6ZSwgc2l6ZSwgc2l6ZSk7IH0KKyAgICAgICAgdm9pZCBl
eHBhbmQoY29uc3QgTGF5b3V0VW5pdCYgdG9wV2lkdGgsIGNvbnN0IExheW91dFVuaXQmIGJvdHRv
bVdpZHRoLCBjb25zdCBMYXlvdXRVbml0JiBsZWZ0V2lkdGgsIGNvbnN0IExheW91dFVuaXQmIHJp
Z2h0V2lkdGgpOworICAgICAgICB2b2lkIGV4cGFuZChjb25zdCBMYXlvdXRVbml0JiBzaXplKSB7
IGV4cGFuZChzaXplLCBzaXplLCBzaXplLCBzaXplKTsgfQorICAgICAgICB2b2lkIHNocmluayhj
b25zdCBMYXlvdXRVbml0JiB0b3BXaWR0aCwgY29uc3QgTGF5b3V0VW5pdCYgYm90dG9tV2lkdGgs
IGNvbnN0IExheW91dFVuaXQmIGxlZnRXaWR0aCwgY29uc3QgTGF5b3V0VW5pdCYgcmlnaHRXaWR0
aCkgeyBleHBhbmQoLXRvcFdpZHRoLCAtYm90dG9tV2lkdGgsIC1sZWZ0V2lkdGgsIC1yaWdodFdp
ZHRoKTsgfQorICAgICAgICB2b2lkIHNocmluayhjb25zdCBMYXlvdXRVbml0JiBzaXplKSB7IHNo
cmluayhzaXplLCBzaXplLCBzaXplLCBzaXplKTsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAg
SW50U2l6ZSBtX3RvcExlZnQ7Ci0gICAgICAgIEludFNpemUgbV90b3BSaWdodDsKLSAgICAgICAg
SW50U2l6ZSBtX2JvdHRvbUxlZnQ7Ci0gICAgICAgIEludFNpemUgbV9ib3R0b21SaWdodDsKKyAg
ICAgICAgTGF5b3V0U2l6ZSBtX3RvcExlZnQ7CisgICAgICAgIExheW91dFNpemUgbV90b3BSaWdo
dDsKKyAgICAgICAgTGF5b3V0U2l6ZSBtX2JvdHRvbUxlZnQ7CisgICAgICAgIExheW91dFNpemUg
bV9ib3R0b21SaWdodDsKICAgICB9OwogCi0gICAgZXhwbGljaXQgUm91bmRlZFJlY3QoY29uc3Qg
SW50UmVjdCYsIGNvbnN0IFJhZGlpJiA9IFJhZGlpKCkpOwotICAgIFJvdW5kZWRSZWN0KGludCB4
LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKLSAgICBSb3VuZGVkUmVjdChjb25zdCBJ
bnRSZWN0JiwgY29uc3QgSW50U2l6ZSYgdG9wTGVmdCwgY29uc3QgSW50U2l6ZSYgdG9wUmlnaHQs
IGNvbnN0IEludFNpemUmIGJvdHRvbUxlZnQsIGNvbnN0IEludFNpemUmIGJvdHRvbVJpZ2h0KTsK
KyAgICBleHBsaWNpdCBSb3VuZGVkUmVjdChjb25zdCBMYXlvdXRSZWN0JiwgY29uc3QgUmFkaWkm
ID0gUmFkaWkoKSk7CisgICAgUm91bmRlZFJlY3QoY29uc3QgTGF5b3V0VW5pdCYsIGNvbnN0IExh
eW91dFVuaXQmLCBjb25zdCBMYXlvdXRVbml0JiB3aWR0aCwgY29uc3QgTGF5b3V0VW5pdCYgaGVp
Z2h0KTsKKyAgICBSb3VuZGVkUmVjdChjb25zdCBMYXlvdXRSZWN0JiwgY29uc3QgTGF5b3V0U2l6
ZSYgdG9wTGVmdCwgY29uc3QgTGF5b3V0U2l6ZSYgdG9wUmlnaHQsIGNvbnN0IExheW91dFNpemUm
IGJvdHRvbUxlZnQsIGNvbnN0IExheW91dFNpemUmIGJvdHRvbVJpZ2h0KTsKIAotICAgIGNvbnN0
IEludFJlY3QmIHJlY3QoKSBjb25zdCB7IHJldHVybiBtX3JlY3Q7IH0KKyAgICBjb25zdCBMYXlv
dXRSZWN0JiByZWN0KCkgY29uc3QgeyByZXR1cm4gbV9yZWN0OyB9CiAgICAgY29uc3QgUmFkaWkm
IHJhZGlpKCkgY29uc3QgeyByZXR1cm4gbV9yYWRpaTsgfQogICAgIGJvb2wgaXNSb3VuZGVkKCkg
Y29uc3QgeyByZXR1cm4gIW1fcmFkaWkuaXNaZXJvKCk7IH0KICAgICBib29sIGlzRW1wdHkoKSBj
b25zdCB7IHJldHVybiBtX3JlY3QuaXNFbXB0eSgpOyB9CiAKLSAgICB2b2lkIHNldFJlY3QoY29u
c3QgSW50UmVjdCYgcmVjdCkgeyBtX3JlY3QgPSByZWN0OyB9CisgICAgdm9pZCBzZXRSZWN0KGNv
bnN0IExheW91dFJlY3QmIHJlY3QpIHsgbV9yZWN0ID0gcmVjdDsgfQogICAgIHZvaWQgc2V0UmFk
aWkoY29uc3QgUmFkaWkmIHJhZGlpKSB7IG1fcmFkaWkgPSByYWRpaTsgfQogCi0gICAgdm9pZCBt
b3ZlKGNvbnN0IEludFNpemUmIHNpemUpIHsgbV9yZWN0Lm1vdmUoc2l6ZSk7IH0KLSAgICB2b2lk
IGluZmxhdGUoaW50IHNpemUpIHsgbV9yZWN0LmluZmxhdGUoc2l6ZSk7ICB9Ci0gICAgdm9pZCBp
bmZsYXRlV2l0aFJhZGlpKGludCBzaXplKTsKLSAgICB2b2lkIGV4cGFuZFJhZGlpKGludCBzaXpl
KSB7IG1fcmFkaWkuZXhwYW5kKHNpemUpOyB9Ci0gICAgdm9pZCBzaHJpbmtSYWRpaShpbnQgc2l6
ZSkgeyBtX3JhZGlpLnNocmluayhzaXplKTsgfQorICAgIHZvaWQgbW92ZShjb25zdCBMYXlvdXRT
aXplJiBzaXplKSB7IG1fcmVjdC5tb3ZlKHNpemUpOyB9CisgICAgdm9pZCBpbmZsYXRlKGNvbnN0
IExheW91dFVuaXQmIHNpemUpIHsgbV9yZWN0LmluZmxhdGUoc2l6ZSk7ICB9CisgICAgdm9pZCBp
bmZsYXRlV2l0aFJhZGlpKGNvbnN0IExheW91dFVuaXQmIHNpemUpOworICAgIHZvaWQgZXhwYW5k
UmFkaWkoY29uc3QgTGF5b3V0VW5pdCYgc2l6ZSkgeyBtX3JhZGlpLmV4cGFuZChzaXplKTsgfQor
ICAgIHZvaWQgc2hyaW5rUmFkaWkoY29uc3QgTGF5b3V0VW5pdCYgc2l6ZSkgeyBtX3JhZGlpLnNo
cmluayhzaXplKTsgfQogCiAgICAgdm9pZCBpbmNsdWRlTG9naWNhbEVkZ2VzKGNvbnN0IFJhZGlp
JiBlZGdlcywgYm9vbCBpc0hvcml6b250YWwsIGJvb2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwg
Ym9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSk7CiAgICAgdm9pZCBleGNsdWRlTG9naWNhbEVk
Z2VzKGJvb2wgaXNIb3Jpem9udGFsLCBib29sIGV4Y2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wg
ZXhjbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOwpAQCAtMTAyLDcgKzEwNCw3IEBAIHB1YmxpYzoKICAg
ICBib29sIGludGVyc2VjdHNRdWFkKGNvbnN0IEZsb2F0UXVhZCYpIGNvbnN0OwogCiBwcml2YXRl
OgotICAgIEludFJlY3QgbV9yZWN0OworICAgIExheW91dFJlY3QgbV9yZWN0OwogICAgIFJhZGlp
IG1fcmFkaWk7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9TaGFkb3dCbHVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1No
YWRvd0JsdXIuY3BwCmluZGV4IDgyYjE4MGE0NmU3YTIzZGE2NTdjZjZlZTdmMmEyYTIzOWZmNTlj
YjIuLmQ2NzUyMjhiYmJlYmQ5YWFkMmZjNzYyZGQ0ZjIzMjNjZTgyYWUwODEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCkBAIC04Myw3ICs4
Myw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1faW1hZ2VCdWZmZXIuZ2V0KCk7CiAgICAg
fQogCi0gICAgYm9vbCBzZXRDYWNoZWRTaGFkb3dWYWx1ZXMoY29uc3QgRmxvYXRTaXplJiByYWRp
dXMsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBGbG9h
dFJlY3QmIHNoYWRvd1JlY3QsIGNvbnN0IFJvdW5kZWRSZWN0OjpSYWRpaSYgcmFkaWksIGNvbnN0
IEZsb2F0U2l6ZSYgbGF5ZXJTaXplKQorICAgIGJvb2wgc2V0Q2FjaGVkU2hhZG93VmFsdWVzKGNv
bnN0IEZsb2F0U2l6ZSYgcmFkaXVzLCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UgY29s
b3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBzaGFkb3dSZWN0LCBjb25zdCBGbG9hdFJvdW5kZWRS
ZWN0OjpSYWRpaSYgcmFkaWksIGNvbnN0IEZsb2F0U2l6ZSYgbGF5ZXJTaXplKQogICAgIHsKICAg
ICAgICAgaWYgKCFtX2xhc3RXYXNJbnNldCAmJiBtX2xhc3RSYWRpdXMgPT0gcmFkaXVzICYmIG1f
bGFzdENvbG9yID09IGNvbG9yICYmIG1fbGFzdENvbG9yU3BhY2UgPT0gY29sb3JTcGFjZSAmJiBt
X2xhc3RTaGFkb3dSZWN0ID09IHNoYWRvd1JlY3QgJiYgIG1fbGFzdFJhZGlpID09IHJhZGlpICYm
IG1fbGFzdExheWVyU2l6ZSA9PSBsYXllclNpemUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CkBAIC05OSw3ICs5OSw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQog
Ci0gICAgYm9vbCBzZXRDYWNoZWRJbnNldFNoYWRvd1ZhbHVlcyhjb25zdCBGbG9hdFNpemUmIHJh
ZGl1cywgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEZs
b2F0UmVjdCYgYm91bmRzLCBjb25zdCBGbG9hdFJlY3QmIHNoYWRvd1JlY3QsIGNvbnN0IFJvdW5k
ZWRSZWN0OjpSYWRpaSYgcmFkaWkpCisgICAgYm9vbCBzZXRDYWNoZWRJbnNldFNoYWRvd1ZhbHVl
cyhjb25zdCBGbG9hdFNpemUmIHJhZGl1cywgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNl
IGNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRzLCBjb25zdCBGbG9hdFJlY3QmIHNo
YWRvd1JlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpJiByYWRpaSkKICAgICB7CiAg
ICAgICAgIGlmIChtX2xhc3RXYXNJbnNldCAmJiBtX2xhc3RSYWRpdXMgPT0gcmFkaXVzICYmIG1f
bGFzdENvbG9yID09IGNvbG9yICYmIG1fbGFzdENvbG9yU3BhY2UgPT0gY29sb3JTcGFjZSAmJiBt
X2xhc3RJbnNldEJvdW5kcyA9PSBib3VuZHMgJiYgc2hhZG93UmVjdCA9PSBtX2xhc3RTaGFkb3dS
ZWN0ICYmIHJhZGlpID09IG1fbGFzdFJhZGlpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtMTQ3LDcgKzE0Nyw3IEBAIHByaXZhdGU6CiAgICAgCiAgICAgRmxvYXRSZWN0IG1fbGFzdElu
c2V0Qm91bmRzOwogICAgIEZsb2F0UmVjdCBtX2xhc3RTaGFkb3dSZWN0OwotICAgIFJvdW5kZWRS
ZWN0OjpSYWRpaSBtX2xhc3RSYWRpaTsKKyAgICBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSBtX2xh
c3RSYWRpaTsKICAgICBDb2xvciBtX2xhc3RDb2xvcjsKICAgICBDb2xvclNwYWNlIG1fbGFzdENv
bG9yU3BhY2U7CiAgICAgRmxvYXRTaXplIG1fbGFzdFJhZGl1czsKQEAgLTQ4Miw3ICs0ODIsNyBA
QCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdTaGFkb3dCdWZmZXIoR3JhcGhpY3NDb250ZXh0KiBncmFw
aGljc0NvbnRleHQpCiAgICAgZ3JhcGhpY3NDb250ZXh0LT5maWxsUmVjdChGbG9hdFJlY3QobV9s
YXllck9yaWdpbiwgbV9zb3VyY2VSZWN0LnNpemUoKSkpOwogfQogCi1zdGF0aWMgdm9pZCBjb21w
dXRlU2xpY2VTaXplc0Zyb21SYWRpaShjb25zdCBJbnRTaXplJiB0d2ljZVJhZGl1cywgY29uc3Qg
Um91bmRlZFJlY3Q6OlJhZGlpJiByYWRpaSwgaW50JiBsZWZ0U2xpY2UsIGludCYgcmlnaHRTbGlj
ZSwgaW50JiB0b3BTbGljZSwgaW50JiBib3R0b21TbGljZSkKK3N0YXRpYyB2b2lkIGNvbXB1dGVT
bGljZVNpemVzRnJvbVJhZGlpKGNvbnN0IEludFNpemUmIHR3aWNlUmFkaXVzLCBjb25zdCBGbG9h
dFJvdW5kZWRSZWN0OjpSYWRpaSYgcmFkaWksIGludCYgbGVmdFNsaWNlLCBpbnQmIHJpZ2h0U2xp
Y2UsIGludCYgdG9wU2xpY2UsIGludCYgYm90dG9tU2xpY2UpCiB7CiAgICAgbGVmdFNsaWNlID0g
dHdpY2VSYWRpdXMud2lkdGgoKSArIHN0ZDo6bWF4KHJhZGlpLnRvcExlZnQoKS53aWR0aCgpLCBy
YWRpaS5ib3R0b21MZWZ0KCkud2lkdGgoKSk7CiAgICAgcmlnaHRTbGljZSA9IHR3aWNlUmFkaXVz
LndpZHRoKCkgKyBzdGQ6Om1heChyYWRpaS50b3BSaWdodCgpLndpZHRoKCksIHJhZGlpLmJvdHRv
bVJpZ2h0KCkud2lkdGgoKSk7CkBAIC00OTEsNyArNDkxLDcgQEAgc3RhdGljIHZvaWQgY29tcHV0
ZVNsaWNlU2l6ZXNGcm9tUmFkaWkoY29uc3QgSW50U2l6ZSYgdHdpY2VSYWRpdXMsIGNvbnN0IFJv
dW5kZWQKICAgICBib3R0b21TbGljZSA9IHR3aWNlUmFkaXVzLmhlaWdodCgpICsgc3RkOjptYXgo
cmFkaWkuYm90dG9tTGVmdCgpLmhlaWdodCgpLCByYWRpaS5ib3R0b21SaWdodCgpLmhlaWdodCgp
KTsKIH0KIAotSW50U2l6ZSBTaGFkb3dCbHVyOjp0ZW1wbGF0ZVNpemUoY29uc3QgSW50U2l6ZSYg
cmFkaXVzUGFkZGluZywgY29uc3QgUm91bmRlZFJlY3Q6OlJhZGlpJiByYWRpaSkgY29uc3QKK0lu
dFNpemUgU2hhZG93Qmx1cjo6dGVtcGxhdGVTaXplKGNvbnN0IEludFNpemUmIHJhZGl1c1BhZGRp
bmcsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpJiByYWRpaSkgY29uc3QKIHsKICAgICBj
b25zdCBpbnQgdGVtcGxhdGVTaWRlTGVuZ3RoID0gMTsKIApAQCAtNTA5LDcgKzUwOSw3IEBAIElu
dFNpemUgU2hhZG93Qmx1cjo6dGVtcGxhdGVTaXplKGNvbnN0IEludFNpemUmIHJhZGl1c1BhZGRp
bmcsIGNvbnN0IFJvdW5kZWRSZWN0CiAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGVTaWRlTGVu
Z3RoICsgdG9wU2xpY2UgKyBib3R0b21TbGljZSk7CiB9CiAKLXZvaWQgU2hhZG93Qmx1cjo6ZHJh
d1JlY3RTaGFkb3coR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgc2hhZG93ZWRSZWN0LCBjb25zdCBSb3VuZGVkUmVjdDo6UmFkaWkmIHJhZGlpKQordm9p
ZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvdyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29u
dGV4dCwgY29uc3QgRmxvYXRSZWN0JiBzaGFkb3dlZFJlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJl
Y3Q6OlJhZGlpJiByYWRpaSkKIHsKICAgICBJbnRSZWN0IGxheWVyUmVjdCA9IGNhbGN1bGF0ZUxh
eWVyQm91bmRpbmdSZWN0KGdyYXBoaWNzQ29udGV4dCwgc2hhZG93ZWRSZWN0LCBncmFwaGljc0Nv
bnRleHQtPmNsaXBCb3VuZHMoKSk7CiAgICAgaWYgKGxheWVyUmVjdC5pc0VtcHR5KCkpCkBAIC01
MzYsNyArNTM2LDcgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvdyhHcmFwaGljc0Nv
bnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRSZWMKICAgICBkcmF3UmVjdFNoYWRv
d1dpdGhUaWxpbmcoZ3JhcGhpY3NDb250ZXh0LCBzaGFkb3dlZFJlY3QsIHJhZGlpLCB0ZW1wbGF0
ZVNpemUsIGVkZ2VTaXplKTsKIH0KIAotdm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3co
R3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBob2xlUmVjdCwgY29uc3QgUm91bmRlZFJlY3Q6OlJhZGlpJiBob2xl
UmFkaWkpCit2b2lkIFNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvdyhHcmFwaGljc0NvbnRleHQq
IGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IGhvbGVSZWN0LCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSYgaG9sZVJhZGlpKQogewog
ICAgIEludFJlY3QgbGF5ZXJSZWN0ID0gY2FsY3VsYXRlTGF5ZXJCb3VuZGluZ1JlY3QoZ3JhcGhp
Y3NDb250ZXh0LCByZWN0LCBncmFwaGljc0NvbnRleHQtPmNsaXBCb3VuZHMoKSk7CiAgICAgaWYg
KGxheWVyUmVjdC5pc0VtcHR5KCkpCkBAIC01NjMsNyArNTYzLDcgQEAgdm9pZCBTaGFkb3dCbHVy
OjpkcmF3SW5zZXRTaGFkb3coR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0
IEZsb2F0UmUKICAgICBkcmF3SW5zZXRTaGFkb3dXaXRoVGlsaW5nKGdyYXBoaWNzQ29udGV4dCwg
cmVjdCwgaG9sZVJlY3QsIGhvbGVSYWRpaSwgdGVtcGxhdGVTaXplLCBlZGdlU2l6ZSk7CiB9CiAK
LXZvaWQgU2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3dXaXRob3V0VGlsaW5nKEdyYXBoaWNzQ29u
dGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHNoYWRvd2VkUmVjdCwgY29u
c3QgUm91bmRlZFJlY3Q6OlJhZGlpJiByYWRpaSwgY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0KQor
dm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvd1dpdGhvdXRUaWxpbmcoR3JhcGhpY3NDb250
ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgc2hhZG93ZWRSZWN0LCBjb25z
dCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSYgcmFkaWksIGNvbnN0IEludFJlY3QmIGxheWVyUmVj
dCkKIHsKICAgICBtX2xheWVySW1hZ2UgPSBTY3JhdGNoQnVmZmVyOjpzaGFyZWQoKS5nZXRTY3Jh
dGNoQnVmZmVyKGxheWVyUmVjdC5zaXplKCkpOwogICAgIGlmICghbV9sYXllckltYWdlKQpAQCAt
NTk4LDcgKzU5OCw3IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3dXaXRob3V0VGls
aW5nKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjCiAgICAgU2NyYXRjaEJ1ZmZl
cjo6c2hhcmVkKCkuc2NoZWR1bGVTY3JhdGNoQnVmZmVyUHVyZ2UoKTsKIH0KIAotdm9pZCBTaGFk
b3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRob3V0VGlsaW5nKEdyYXBoaWNzQ29udGV4dCogZ3Jh
cGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgaG9s
ZVJlY3QsIGNvbnN0IFJvdW5kZWRSZWN0OjpSYWRpaSYgaG9sZVJhZGlpLCBjb25zdCBJbnRSZWN0
JiBsYXllclJlY3QpCit2b2lkIFNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvd1dpdGhvdXRUaWxp
bmcoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBob2xlUmVjdCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdDo6UmFk
aWkmIGhvbGVSYWRpaSwgY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0KQogewogICAgIG1fbGF5ZXJJ
bWFnZSA9IFNjcmF0Y2hCdWZmZXI6OnNoYXJlZCgpLmdldFNjcmF0Y2hCdWZmZXIobGF5ZXJSZWN0
LnNpemUoKSk7CiAgICAgaWYgKCFtX2xheWVySW1hZ2UpCkBAIC02NzEsNyArNjcxLDcgQEAgdm9p
ZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRob3V0VGlsaW5nKEdyYXBoaWNzQ29udGV4
dCogZ3JhcGhpY3NDb250ZXh0LAogICAgICB0aGUgc2hhZG93LgogICovCiAKLXZvaWQgU2hhZG93
Qmx1cjo6ZHJhd0luc2V0U2hhZG93V2l0aFRpbGluZyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNz
Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdFJlY3QmIGhvbGVSZWN0
LCBjb25zdCBSb3VuZGVkUmVjdDo6UmFkaWkmIHJhZGlpLCBjb25zdCBJbnRTaXplJiB0ZW1wbGF0
ZVNpemUsIGNvbnN0IEludFNpemUmIGVkZ2VTaXplKQordm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5z
ZXRTaGFkb3dXaXRoVGlsaW5nKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25z
dCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgaG9sZVJlY3QsIGNvbnN0IEZsb2F0
Um91bmRlZFJlY3Q6OlJhZGlpJiByYWRpaSwgY29uc3QgSW50U2l6ZSYgdGVtcGxhdGVTaXplLCBj
b25zdCBJbnRTaXplJiBlZGdlU2l6ZSkKIHsKICAgICBtX2xheWVySW1hZ2UgPSBTY3JhdGNoQnVm
ZmVyOjpzaGFyZWQoKS5nZXRTY3JhdGNoQnVmZmVyKHRlbXBsYXRlU2l6ZSk7CiAgICAgaWYgKCFt
X2xheWVySW1hZ2UpCkBAIC03MzYsNyArNzM2LDcgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5z
ZXRTaGFkb3dXaXRoVGlsaW5nKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb24K
ICAgICBTY3JhdGNoQnVmZmVyOjpzaGFyZWQoKS5zY2hlZHVsZVNjcmF0Y2hCdWZmZXJQdXJnZSgp
OwogfQogCi12b2lkIFNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0aFRpbGluZyhHcmFwaGlj
c0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBzaGFkb3dlZFJlY3Qs
IGNvbnN0IFJvdW5kZWRSZWN0OjpSYWRpaSYgcmFkaWksIGNvbnN0IEludFNpemUmIHRlbXBsYXRl
U2l6ZSwgY29uc3QgSW50U2l6ZSYgZWRnZVNpemUpCit2b2lkIFNoYWRvd0JsdXI6OmRyYXdSZWN0
U2hhZG93V2l0aFRpbGluZyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3Qg
RmxvYXRSZWN0JiBzaGFkb3dlZFJlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpJiBy
YWRpaSwgY29uc3QgSW50U2l6ZSYgdGVtcGxhdGVTaXplLCBjb25zdCBJbnRTaXplJiBlZGdlU2l6
ZSkKIHsKICAgICBtX2xheWVySW1hZ2UgPSBTY3JhdGNoQnVmZmVyOjpzaGFyZWQoKS5nZXRTY3Jh
dGNoQnVmZmVyKHRlbXBsYXRlU2l6ZSk7CiAgICAgaWYgKCFtX2xheWVySW1hZ2UpCkBAIC03ODEs
NyArNzgxLDcgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvd1dpdGhUaWxpbmcoR3Jh
cGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnMKICAgICBTY3JhdGNoQnVmZmVyOjpz
aGFyZWQoKS5zY2hlZHVsZVNjcmF0Y2hCdWZmZXJQdXJnZSgpOwogfQogCi12b2lkIFNoYWRvd0Js
dXI6OmRyYXdMYXllclBpZWNlcyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29u
c3QgRmxvYXRSZWN0JiBzaGFkb3dCb3VuZHMsIGNvbnN0IFJvdW5kZWRSZWN0OjpSYWRpaSYgcmFk
aWksIGNvbnN0IEludFNpemUmIGJ1ZmZlclBhZGRpbmcsIGNvbnN0IEludFNpemUmIHRlbXBsYXRl
U2l6ZSwgU2hhZG93RGlyZWN0aW9uIGRpcmVjdGlvbikKK3ZvaWQgU2hhZG93Qmx1cjo6ZHJhd0xh
eWVyUGllY2VzKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFJl
Y3QmIHNoYWRvd0JvdW5kcywgY29uc3QgRmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkmIHJhZGlpLCBj
b25zdCBJbnRTaXplJiBidWZmZXJQYWRkaW5nLCBjb25zdCBJbnRTaXplJiB0ZW1wbGF0ZVNpemUs
IFNoYWRvd0RpcmVjdGlvbiBkaXJlY3Rpb24pCiB7CiAgICAgY29uc3QgSW50U2l6ZSB0d2ljZVJh
ZGl1cyA9IEludFNpemUoYnVmZmVyUGFkZGluZy53aWR0aCgpICogMiwgYnVmZmVyUGFkZGluZy5o
ZWlnaHQoKSAqIDIpOwogCkBAIC04OTMsNyArODkzLDcgQEAgR3JhcGhpY3NDb250ZXh0KiBTaGFk
b3dCbHVyOjpiZWdpblNoYWRvd0xheWVyKEdyYXBoaWNzQ29udGV4dCAqY29udGV4dCwgY29uc3Qg
RmwKIAogICAgIC8vIFdlIHJlc2V0IHRoZSBzY3JhdGNoIGJ1ZmZlciB2YWx1ZXMgaGVyZSwgYmVj
YXVzZSB0aGUgYnVmZmVyIHdpbGwgbm8gbG9uZ2VyIGNvbnRhaW4KICAgICAvLyBkYXRhIGZyb20g
YW55IHByZXZpb3VzIHJlY3RhbmdsZSBvciBpbnNldCBzaGFkb3dzIGRyYXduIHZpYSB0aGUgdGls
aW5nIHBhdGguCi0gICAgU2NyYXRjaEJ1ZmZlcjo6c2hhcmVkKCkuc2V0Q2FjaGVkU2hhZG93VmFs
dWVzKEZsb2F0U2l6ZSgpLCBDb2xvcjo6YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0IsIEludFJl
Y3QoKSwgUm91bmRlZFJlY3Q6OlJhZGlpKCksIG1fbGF5ZXJTaXplKTsKKyAgICBTY3JhdGNoQnVm
ZmVyOjpzaGFyZWQoKS5zZXRDYWNoZWRTaGFkb3dWYWx1ZXMoRmxvYXRTaXplKCksIENvbG9yOjpi
bGFjaywgQ29sb3JTcGFjZURldmljZVJHQiwgSW50UmVjdCgpLCBGbG9hdFJvdW5kZWRSZWN0OjpS
YWRpaSgpLCBtX2xheWVyU2l6ZSk7CiAgICAgbV9sYXllckltYWdlID0gU2NyYXRjaEJ1ZmZlcjo6
c2hhcmVkKCkuZ2V0U2NyYXRjaEJ1ZmZlcihsYXllclJlY3Quc2l6ZSgpKTsKIAogICAgIEdyYXBo
aWNzQ29udGV4dCogc2hhZG93Q29udGV4dCA9IG1fbGF5ZXJJbWFnZS0+Y29udGV4dCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5oCmluZGV4IDMyZmY2
MGI2Y2IwM2IyMmI5NjhjOGU3ODY3ZDgzYTZmYWY5MjA0MTcuLjk1OWUxN2U4OWI2OGMyODAyMDMy
ZTVhOWMxZjk0OTQ5MGYwYjdjNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1NoYWRvd0JsdXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9TaGFkb3dCbHVyLmgKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlICJDb2xvci5oIgog
I2luY2x1ZGUgIkNvbG9yU3BhY2UuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKLSNpbmNsdWRl
ICJSb3VuZGVkUmVjdC5oIgorI2luY2x1ZGUgIkZsb2F0Um91bmRlZFJlY3QuaCIKICNpbmNsdWRl
IDx3dGYvTm9uY29weWFibGUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNjMsOCArNjMs
OCBAQCBwdWJsaWM6CiAgICAgR3JhcGhpY3NDb250ZXh0KiBiZWdpblNoYWRvd0xheWVyKEdyYXBo
aWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgbGF5ZXJBcmVhKTsKICAgICB2b2lkIGVuZFNo
YWRvd0xheWVyKEdyYXBoaWNzQ29udGV4dCopOwogCi0gICAgdm9pZCBkcmF3UmVjdFNoYWRvdyhH
cmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBSb3VuZGVkUmVjdDo6UmFk
aWkmKTsKLSAgICB2b2lkIGRyYXdJbnNldFNoYWRvdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBG
bG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmIGhvbGVSZWN0LCBjb25zdCBSb3VuZGVkUmVjdDo6
UmFkaWkmIGhvbGVSYWRpaSk7CisgICAgdm9pZCBkcmF3UmVjdFNoYWRvdyhHcmFwaGljc0NvbnRl
eHQqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSYpOwor
ICAgIHZvaWQgZHJhd0luc2V0U2hhZG93KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVj
dCYsIGNvbnN0IEZsb2F0UmVjdCYgaG9sZVJlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3Q6OlJh
ZGlpJiBob2xlUmFkaWkpOwogCiAgICAgdm9pZCBibHVyTGF5ZXJJbWFnZSh1bnNpZ25lZCBjaGFy
KiwgY29uc3QgSW50U2l6ZSYsIGludCBzdHJpZGUpOwogCkBAIC04NSwxNSArODUsMTUgQEAgcHJp
dmF0ZToKICAgICB9OwogICAgIAogICAgIEludFJlY3QgY2FsY3VsYXRlTGF5ZXJCb3VuZGluZ1Jl
Y3QoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBsYXllckFyZWEsIGNvbnN0IElu
dFJlY3QmIGNsaXBSZWN0KTsKLSAgICBJbnRTaXplIHRlbXBsYXRlU2l6ZShjb25zdCBJbnRTaXpl
JiBibHVycmVkRWRnZVNpemUsIGNvbnN0IFJvdW5kZWRSZWN0OjpSYWRpaSYpIGNvbnN0OworICAg
IEludFNpemUgdGVtcGxhdGVTaXplKGNvbnN0IEludFNpemUmIGJsdXJyZWRFZGdlU2l6ZSwgY29u
c3QgRmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkmKSBjb25zdDsKIAotICAgIHZvaWQgZHJhd1JlY3RT
aGFkb3dXaXRob3V0VGlsaW5nKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYsIGNv
bnN0IFJvdW5kZWRSZWN0OjpSYWRpaSYsIGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCk7Ci0gICAg
dm9pZCBkcmF3UmVjdFNoYWRvd1dpdGhUaWxpbmcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxv
YXRSZWN0JiwgY29uc3QgUm91bmRlZFJlY3Q6OlJhZGlpJiwgY29uc3QgSW50U2l6ZSYgc2hhZG93
VGVtcGxhdGVTaXplLCBjb25zdCBJbnRTaXplJiBibHVycmVkRWRnZVNpemUpOworICAgIHZvaWQg
ZHJhd1JlY3RTaGFkb3dXaXRob3V0VGlsaW5nKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0
UmVjdCYsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpJiwgY29uc3QgSW50UmVjdCYgbGF5
ZXJSZWN0KTsKKyAgICB2b2lkIGRyYXdSZWN0U2hhZG93V2l0aFRpbGluZyhHcmFwaGljc0NvbnRl
eHQqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSYsIGNv
bnN0IEludFNpemUmIHNoYWRvd1RlbXBsYXRlU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmx1cnJlZEVk
Z2VTaXplKTsKIAotICAgIHZvaWQgZHJhd0luc2V0U2hhZG93V2l0aG91dFRpbGluZyhHcmFwaGlj
c0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmIGhvbGVSZWN0LCBj
b25zdCBSb3VuZGVkUmVjdDo6UmFkaWkmLCBjb25zdCBJbnRSZWN0JiBsYXllclJlY3QpOwotICAg
IHZvaWQgZHJhd0luc2V0U2hhZG93V2l0aFRpbGluZyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBG
bG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmIGhvbGVSZWN0LCBjb25zdCBSb3VuZGVkUmVjdDo6
UmFkaWkmLCBjb25zdCBJbnRTaXplJiBzaGFkb3dUZW1wbGF0ZVNpemUsIGNvbnN0IEludFNpemUm
IGJsdXJyZWRFZGdlU2l6ZSk7CisgICAgdm9pZCBkcmF3SW5zZXRTaGFkb3dXaXRob3V0VGlsaW5n
KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYgaG9s
ZVJlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpJiwgY29uc3QgSW50UmVjdCYgbGF5
ZXJSZWN0KTsKKyAgICB2b2lkIGRyYXdJbnNldFNoYWRvd1dpdGhUaWxpbmcoR3JhcGhpY3NDb250
ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiBob2xlUmVjdCwgY29uc3Qg
RmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkmLCBjb25zdCBJbnRTaXplJiBzaGFkb3dUZW1wbGF0ZVNp
emUsIGNvbnN0IEludFNpemUmIGJsdXJyZWRFZGdlU2l6ZSk7CiAgICAgCi0gICAgdm9pZCBkcmF3
TGF5ZXJQaWVjZXMoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBzaGFkb3dCb3Vu
ZHMsIGNvbnN0IFJvdW5kZWRSZWN0OjpSYWRpaSYsIGNvbnN0IEludFNpemUmIHJvdW5kZWRSYWRp
dXMsIGNvbnN0IEludFNpemUmIHRlbXBsYXRlU2l6ZSwgU2hhZG93RGlyZWN0aW9uKTsKKyAgICB2
b2lkIGRyYXdMYXllclBpZWNlcyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIHNo
YWRvd0JvdW5kcywgY29uc3QgRmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkmLCBjb25zdCBJbnRTaXpl
JiByb3VuZGVkUmFkaXVzLCBjb25zdCBJbnRTaXplJiB0ZW1wbGF0ZVNpemUsIFNoYWRvd0RpcmVj
dGlvbik7CiAgICAgCiAgICAgdm9pZCBibHVyU2hhZG93QnVmZmVyKGNvbnN0IEludFNpemUmIHRl
bXBsYXRlU2l6ZSk7CiAgICAgdm9pZCBibHVyQW5kQ29sb3JTaGFkb3dCdWZmZXIoY29uc3QgSW50
U2l6ZSYgdGVtcGxhdGVTaXplKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAppbmRleCAw
ZmE3NTAzOTY5ZDUyZWQ0M2Y0NDJkZGIyOTcxNDJjN2U0MjI3ZWQ5Li45ZmZjMjkxNWE3Y2Y4OTRm
NWYwZTgwZTE5YTljZTU3YjU5M2EyMmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3Bw
CkBAIC0xMDEyLDcgKzEwMTIsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2NhbGUoY29uc3Qg
RmxvYXRTaXplJiBzaXplKQogICAgIG1fZGF0YS0+c2NhbGUoc2l6ZSk7CiB9CiAKLXZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpjbGlwT3V0KGNvbnN0IEludFJlY3QmIHIpCit2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6Y2xpcE91dChjb25zdCBGbG9hdFJlY3QmIHIpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlz
YWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTAyOCwxMyArMTAyOCwxMyBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dDo6Y2xpcE91dChjb25zdCBJbnRSZWN0JiByKQogICAgIGNhaXJvX3NldF9m
aWxsX3J1bGUoY3IsIHNhdmVkRmlsbFJ1bGUpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6
ZmlsbFJvdW5kZWRSZWN0KGNvbnN0IEludFJlY3QmIHIsIGNvbnN0IEludFNpemUmIHRvcExlZnQs
IGNvbnN0IEludFNpemUmIHRvcFJpZ2h0LCBjb25zdCBJbnRTaXplJiBib3R0b21MZWZ0LCBjb25z
dCBJbnRTaXplJiBib3R0b21SaWdodCwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlKQor
dm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJlY3QmIHIs
IGNvbnN0IEZsb2F0U2l6ZSYgdG9wTGVmdCwgY29uc3QgRmxvYXRTaXplJiB0b3BSaWdodCwgY29u
c3QgRmxvYXRTaXplJiBib3R0b21MZWZ0LCBjb25zdCBGbG9hdFNpemUmIGJvdHRvbVJpZ2h0LCBj
b25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJs
ZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGhhc1NoYWRvdygpKQotICAgICAgICBw
bGF0Zm9ybUNvbnRleHQoKS0+c2hhZG93Qmx1cigpLmRyYXdSZWN0U2hhZG93KHRoaXMsIHIsIFJv
dW5kZWRSZWN0OjpSYWRpaSh0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVmdCwgYm90dG9tUmln
aHQpKTsKKyAgICAgICAgcGxhdGZvcm1Db250ZXh0KCktPnNoYWRvd0JsdXIoKS5kcmF3UmVjdFNo
YWRvdyh0aGlzLCByLCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSh0b3BMZWZ0LCB0b3BSaWdodCwg
Ym90dG9tTGVmdCwgYm90dG9tUmlnaHQpKTsKIAogICAgIGNhaXJvX3QqIGNyID0gcGxhdGZvcm1D
b250ZXh0KCktPmNyKCk7CiAgICAgY2Fpcm9fc2F2ZShjcik7CkBAIC0xMDQ2LDcgKzEwNDYsNyBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJvdW5kZWRSZWN0KGNvbnN0IEludFJlY3QmIHIs
IGNvbnN0IEludFNpemUmIHRvcExlZnQsCiAgICAgY2Fpcm9fcmVzdG9yZShjcik7CiB9CiAKLXZv
aWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdFdpdGhSb3VuZGVkSG9sZShjb25zdCBJbnRSZWN0
JiByZWN0LCBjb25zdCBSb3VuZGVkUmVjdCYgcm91bmRlZEhvbGVSZWN0LCBjb25zdCBDb2xvciYg
Y29sb3IsIENvbG9yU3BhY2UpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3RXaXRoUm91
bmRlZEhvbGUoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBSb3VuZGVkUmVjdCYgcm91bmRl
ZEhvbGVSZWN0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UpCiB7CiAgICAgaWYgKHBh
aW50aW5nRGlzYWJsZWQoKSB8fCAhY29sb3IuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0Nv
bnRleHRDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGlj
c0NvbnRleHRDRy5jcHAKaW5kZXggYjg1Nzg5OTcyZWEwYjhkMmRkOWYzZDhlMTZjZjZkMTEwMDk2
N2I3OC4uN2YwNmJmYWVlN2U1YmZiMDMyODY4YzU1ZTU4NjgzNjRjYzQ1NmFlNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29u
dGV4dENHLmNwcApAQCAtODQ2LDcgKzg0Niw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxs
UmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTCiAg
ICAgICAgIHNldENHRmlsbENvbG9yKGNvbnRleHQsIG9sZEZpbGxDb2xvciwgb2xkQ29sb3JTcGFj
ZSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUm91bmRlZFJlY3QoY29uc3QgSW50
UmVjdCYgcmVjdCwgY29uc3QgSW50U2l6ZSYgdG9wTGVmdCwgY29uc3QgSW50U2l6ZSYgdG9wUmln
aHQsIGNvbnN0IEludFNpemUmIGJvdHRvbUxlZnQsIGNvbnN0IEludFNpemUmIGJvdHRvbVJpZ2h0
LCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpmaWxsUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBG
bG9hdFNpemUmIHRvcExlZnQsIGNvbnN0IEZsb2F0U2l6ZSYgdG9wUmlnaHQsIGNvbnN0IEZsb2F0
U2l6ZSYgYm90dG9tTGVmdCwgY29uc3QgRmxvYXRTaXplJiBib3R0b21SaWdodCwgY29uc3QgQ29s
b3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlz
YWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtODY1LDcgKzg2NSw3IEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpmaWxsUm91bmRlZFJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW50
U2l6ZSYgdG9wTGVmCiAgICAgICAgIENHQ29udGV4dFNldFNoYWRvd1dpdGhDb2xvcihwbGF0Zm9y
bUNvbnRleHQoKSwgQ0dTaXplWmVybywgMCwgMCk7CiAKICAgICAgICAgU2hhZG93Qmx1ciBjb250
ZXh0U2hhZG93KG1fc3RhdGUpOwotICAgICAgICBjb250ZXh0U2hhZG93LmRyYXdSZWN0U2hhZG93
KHRoaXMsIHJlY3QsIFJvdW5kZWRSZWN0OjpSYWRpaSh0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9t
TGVmdCwgYm90dG9tUmlnaHQpKTsKKyAgICAgICAgY29udGV4dFNoYWRvdy5kcmF3UmVjdFNoYWRv
dyh0aGlzLCByZWN0LCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSh0b3BMZWZ0LCB0b3BSaWdodCwg
Ym90dG9tTGVmdCwgYm90dG9tUmlnaHQpKTsKICAgICB9CiAKICAgICBib29sIGVxdWFsV2lkdGhz
ID0gKHRvcExlZnQud2lkdGgoKSA9PSB0b3BSaWdodC53aWR0aCgpICYmIHRvcFJpZ2h0LndpZHRo
KCkgPT0gYm90dG9tTGVmdC53aWR0aCgpICYmIGJvdHRvbUxlZnQud2lkdGgoKSA9PSBib3R0b21S
aWdodC53aWR0aCgpKTsKQEAgLTg4Niw3ICs4ODYsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
ZmlsbFJvdW5kZWRSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEludFNpemUmIHRvcExl
ZgogICAgICAgICBzZXRDR0ZpbGxDb2xvcihjb250ZXh0LCBvbGRGaWxsQ29sb3IsIG9sZENvbG9y
U3BhY2UpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3RXaXRoUm91bmRlZEhv
bGUoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgUm91bmRlZFJlY3QmIHJvdW5kZWRIb2xlUmVj
dCwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCit2b2lkIEdyYXBo
aWNzQ29udGV4dDo6ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUoY29uc3QgRmxvYXRSZWN0JiByZWN0
LCBjb25zdCBSb3VuZGVkUmVjdCYgcm91bmRlZEhvbGVSZWN0LCBjb25zdCBDb2xvciYgY29sb3Is
IENvbG9yU3BhY2UgY29sb3JTcGFjZSkKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQog
ICAgICAgICByZXR1cm47CkBAIC05MzYsNyArOTM2LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6
OmNsaXAoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogICAgIG1fZGF0YS0+Y2xpcChyZWN0KTsKIH0K
IAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBPdXQoY29uc3QgSW50UmVjdCYgcmVjdCkKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwT3V0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIHsKICAg
ICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9HcmFwaGljc0NvbnRleHRXaW5D
RS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9HcmFwaGljc0Nv
bnRleHRXaW5DRS5jcHAKaW5kZXggMzc2YmM3M2MwNzBhMWUwMTE5NGVjM2FjODgzYWYzM2Y2MTkx
NDU0OS4uNzYzZTI2ZTM1MTEwYTRiOTZiMTA3MmEyOTBjODI1YjIxNTFkMzE2OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvR3JhcGhpY3NDb250ZXh0
V2luQ0UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0dy
YXBoaWNzQ29udGV4dFdpbkNFLmNwcApAQCAtODk4LDcgKzg5OCw3IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0OjpjbGlwKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKICAgICB9CiB9CiAKLXZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpjbGlwT3V0KGNvbnN0IEludFJlY3QmIHJlY3QpCit2b2lkIEdyYXBoaWNz
Q29udGV4dDo6Y2xpcE91dChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiB7CiAgICAgaWYgKHBhaW50
aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTE1MCw3ICsxMTUwLDcgQEAgc3Rh
dGljIGlubGluZSBJbnRQb2ludCByZWN0Q2VudGVyUG9pbnQoY29uc3QgUkVDVCYgcmVjdCkKIHsK
ICAgICByZXR1cm4gSW50UG9pbnQocmVjdC5sZWZ0ICsgKHJlY3QucmlnaHQgLSByZWN0LmxlZnQp
IC8gMiwgcmVjdC50b3AgKyAocmVjdC5ib3R0b20gLSByZWN0LnRvcCkgLyAyKTsKIH0KLXZvaWQg
R3JhcGhpY3NDb250ZXh0OjpmaWxsUm91bmRlZFJlY3QoY29uc3QgSW50UmVjdCYgZmlsbFJlY3Qs
IGNvbnN0IEludFNpemUmIHRvcExlZnQsIGNvbnN0IEludFNpemUmIHRvcFJpZ2h0LCBjb25zdCBJ
bnRTaXplJiBib3R0b21MZWZ0LCBjb25zdCBJbnRTaXplJiBib3R0b21SaWdodCwgY29uc3QgQ29s
b3ImIGMsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxs
Um91bmRlZFJlY3QoY29uc3QgRmxvYXRSZWN0JiBmaWxsUmVjdCwgY29uc3QgRmxvYXRTaXplJiB0
b3BMZWZ0LCBjb25zdCBGbG9hdFNpemUmIHRvcFJpZ2h0LCBjb25zdCBGbG9hdFNpemUmIGJvdHRv
bUxlZnQsIGNvbnN0IEZsb2F0U2l6ZSYgYm90dG9tUmlnaHQsIGNvbnN0IENvbG9yJiBjLCBDb2xv
clNwYWNlIGNvbG9yU3BhY2UpCiB7CiAgICAgU2NvcGVEQ1Byb3ZpZGVyIGRjUHJvdmlkZXIobV9k
YXRhKTsKICAgICBpZiAoIW1fZGF0YS0+bV9kYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCmluZGV4IDc2N2ZhOTE5YmI0MTYwZGZhNDUz
MDQ0MjIyY2FiMTAxY2Y3YjBiOWEuLjc0ZDM1YmU3MDMyZmY5OWQzODcyOTAyYzhkZTk4NTkxNmZk
NDc0MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2Rl
bE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVs
T2JqZWN0LmNwcApAQCAtMTY1OSw3ICsxNjU5LDcgQEAgc3RhdGljIGJvb2wgam9pblJlcXVpcmVz
TWl0cmUoQm94U2lkZSBzaWRlLCBCb3hTaWRlIGFkamFjZW50U2lkZSwgY29uc3QgQm9yZGVyRWQK
IH0KIAogdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRPbmVCb3JkZXJTaWRlKEdyYXBo
aWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUsIGNv
bnN0IFJvdW5kZWRSZWN0JiBvdXRlckJvcmRlciwgY29uc3QgUm91bmRlZFJlY3QmIGlubmVyQm9y
ZGVyLAotICAgIGNvbnN0IEludFJlY3QmIHNpZGVSZWN0LCBCb3hTaWRlIHNpZGUsIEJveFNpZGUg
YWRqYWNlbnRTaWRlMSwgQm94U2lkZSBhZGphY2VudFNpZGUyLCBjb25zdCBCb3JkZXJFZGdlIGVk
Z2VzW10sIGNvbnN0IFBhdGgqIHBhdGgsCisgICAgY29uc3QgTGF5b3V0UmVjdCYgc2lkZVJlY3Qs
IEJveFNpZGUgc2lkZSwgQm94U2lkZSBhZGphY2VudFNpZGUxLCBCb3hTaWRlIGFkamFjZW50U2lk
ZTIsIGNvbnN0IEJvcmRlckVkZ2UgZWRnZXNbXSwgY29uc3QgUGF0aCogcGF0aCwKICAgICBCYWNr
Z3JvdW5kQmxlZWRBdm9pZGFuY2UgYmxlZWRBdm9pZGFuY2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxM
ZWZ0RWRnZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSwgYm9vbCBhbnRpYWxpYXMsIGNv
bnN0IENvbG9yKiBvdmVycmlkZUNvbG9yKQogewogICAgIGNvbnN0IEJvcmRlckVkZ2UmIGVkZ2VU
b1JlbmRlciA9IGVkZ2VzW3NpZGVdOwpAQCAtMTcwNSw5ICsxNzA1LDkgQEAgdm9pZCBSZW5kZXJC
b3hNb2RlbE9iamVjdDo6cGFpbnRPbmVCb3JkZXJTaWRlKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhp
Y3NDb250ZXh0LAogICAgIH0KIH0KIAotc3RhdGljIEludFJlY3QgY2FsY3VsYXRlU2lkZVJlY3Qo
Y29uc3QgUm91bmRlZFJlY3QmIG91dGVyQm9yZGVyLCBjb25zdCBCb3JkZXJFZGdlIGVkZ2VzW10s
IGludCBzaWRlKQorc3RhdGljIExheW91dFJlY3QgY2FsY3VsYXRlU2lkZVJlY3QoY29uc3QgUm91
bmRlZFJlY3QmIG91dGVyQm9yZGVyLCBjb25zdCBCb3JkZXJFZGdlIGVkZ2VzW10sIGludCBzaWRl
KQogewotICAgIEludFJlY3Qgc2lkZVJlY3QgPSBvdXRlckJvcmRlci5yZWN0KCk7CisgICAgTGF5
b3V0UmVjdCBzaWRlUmVjdCA9IG91dGVyQm9yZGVyLnJlY3QoKTsKICAgICBpbnQgd2lkdGggPSBl
ZGdlc1tzaWRlXS53aWR0aDsKIAogICAgIGlmIChzaWRlID09IEJTVG9wKQpAQCAtMTczOCw3ICsx
NzM4LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3JkZXJTaWRlcyhHcmFw
aGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY28KICAgICAvLyBvbmx5IGRlcGVuZHMgb24g
c2lkZVJlY3Qgd2hlbiBwYWludGluZyBzb2xpZCBib3JkZXJzLgogCiAgICAgaWYgKGVkZ2VzW0JT
VG9wXS5zaG91bGRSZW5kZXIoKSAmJiBpbmNsdWRlc0VkZ2UoZWRnZVNldCwgQlNUb3ApKSB7Ci0g
ICAgICAgIEludFJlY3Qgc2lkZVJlY3QgPSBvdXRlckJvcmRlci5yZWN0KCk7CisgICAgICAgIExh
eW91dFJlY3Qgc2lkZVJlY3QgPSBvdXRlckJvcmRlci5yZWN0KCk7CiAgICAgICAgIHNpZGVSZWN0
LnNldEhlaWdodChlZGdlc1tCU1RvcF0ud2lkdGggKyBpbm5lckJvcmRlckFkanVzdG1lbnQueSgp
KTsKIAogICAgICAgICBib29sIHVzZVBhdGggPSByZW5kZXJSYWRpaSAmJiAoYm9yZGVyU3R5bGVI
YXNJbm5lckRldGFpbChlZGdlc1tCU1RvcF0uc3R5bGUpIHx8IGJvcmRlcldpbGxBcmNJbm5lckVk
Z2UoaW5uZXJCb3JkZXIucmFkaWkoKS50b3BMZWZ0KCksIGlubmVyQm9yZGVyLnJhZGlpKCkudG9w
UmlnaHQoKSkpOwpAQCAtMTc0Niw3ICsxNzQ2LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVj
dDo6cGFpbnRCb3JkZXJTaWRlcyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY28K
ICAgICB9CiAKICAgICBpZiAoZWRnZXNbQlNCb3R0b21dLnNob3VsZFJlbmRlcigpICYmIGluY2x1
ZGVzRWRnZShlZGdlU2V0LCBCU0JvdHRvbSkpIHsKLSAgICAgICAgSW50UmVjdCBzaWRlUmVjdCA9
IG91dGVyQm9yZGVyLnJlY3QoKTsKKyAgICAgICAgTGF5b3V0UmVjdCBzaWRlUmVjdCA9IG91dGVy
Qm9yZGVyLnJlY3QoKTsKICAgICAgICAgc2lkZVJlY3Quc2hpZnRZRWRnZVRvKHNpZGVSZWN0Lm1h
eFkoKSAtIGVkZ2VzW0JTQm90dG9tXS53aWR0aCAtIGlubmVyQm9yZGVyQWRqdXN0bWVudC55KCkp
OwogCiAgICAgICAgIGJvb2wgdXNlUGF0aCA9IHJlbmRlclJhZGlpICYmIChib3JkZXJTdHlsZUhh
c0lubmVyRGV0YWlsKGVkZ2VzW0JTQm90dG9tXS5zdHlsZSkgfHwgYm9yZGVyV2lsbEFyY0lubmVy
RWRnZShpbm5lckJvcmRlci5yYWRpaSgpLmJvdHRvbUxlZnQoKSwgaW5uZXJCb3JkZXIucmFkaWko
KS5ib3R0b21SaWdodCgpKSk7CkBAIC0xNzU0LDcgKzE3NTQsNyBAQCB2b2lkIFJlbmRlckJveE1v
ZGVsT2JqZWN0OjpwYWludEJvcmRlclNpZGVzKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250
ZXh0LCBjbwogICAgIH0KIAogICAgIGlmIChlZGdlc1tCU0xlZnRdLnNob3VsZFJlbmRlcigpICYm
IGluY2x1ZGVzRWRnZShlZGdlU2V0LCBCU0xlZnQpKSB7Ci0gICAgICAgIEludFJlY3Qgc2lkZVJl
Y3QgPSBvdXRlckJvcmRlci5yZWN0KCk7CisgICAgICAgIExheW91dFJlY3Qgc2lkZVJlY3QgPSBv
dXRlckJvcmRlci5yZWN0KCk7CiAgICAgICAgIHNpZGVSZWN0LnNldFdpZHRoKGVkZ2VzW0JTTGVm
dF0ud2lkdGggKyBpbm5lckJvcmRlckFkanVzdG1lbnQueCgpKTsKIAogICAgICAgICBib29sIHVz
ZVBhdGggPSByZW5kZXJSYWRpaSAmJiAoYm9yZGVyU3R5bGVIYXNJbm5lckRldGFpbChlZGdlc1tC
U0xlZnRdLnN0eWxlKSB8fCBib3JkZXJXaWxsQXJjSW5uZXJFZGdlKGlubmVyQm9yZGVyLnJhZGlp
KCkuYm90dG9tTGVmdCgpLCBpbm5lckJvcmRlci5yYWRpaSgpLnRvcExlZnQoKSkpOwpAQCAtMTc2
Miw3ICsxNzYyLDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3JkZXJTaWRl
cyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY28KICAgICB9CiAKICAgICBpZiAo
ZWRnZXNbQlNSaWdodF0uc2hvdWxkUmVuZGVyKCkgJiYgaW5jbHVkZXNFZGdlKGVkZ2VTZXQsIEJT
UmlnaHQpKSB7Ci0gICAgICAgIEludFJlY3Qgc2lkZVJlY3QgPSBvdXRlckJvcmRlci5yZWN0KCk7
CisgICAgICAgIExheW91dFJlY3Qgc2lkZVJlY3QgPSBvdXRlckJvcmRlci5yZWN0KCk7CiAgICAg
ICAgIHNpZGVSZWN0LnNoaWZ0WEVkZ2VUbyhzaWRlUmVjdC5tYXhYKCkgLSBlZGdlc1tCU1JpZ2h0
XS53aWR0aCAtIGlubmVyQm9yZGVyQWRqdXN0bWVudC54KCkpOwogCiAgICAgICAgIGJvb2wgdXNl
UGF0aCA9IHJlbmRlclJhZGlpICYmIChib3JkZXJTdHlsZUhhc0lubmVyRGV0YWlsKGVkZ2VzW0JT
UmlnaHRdLnN0eWxlKSB8fCBib3JkZXJXaWxsQXJjSW5uZXJFZGdlKGlubmVyQm9yZGVyLnJhZGlp
KCkuYm90dG9tUmlnaHQoKSwgaW5uZXJCb3JkZXIucmFkaWkoKS50b3BSaWdodCgpKSk7CkBAIC0x
ODg3LDggKzE4ODcsOCBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJvcmRlcihj
b25zdCBQYWludEluZm8mIGluZm8sIGNvbnN0IExheW91dFJlY3QmCiAgICAgICAgICAgICAgICAg
cGF0aC5hZGRSZWN0KG91dGVyQm9yZGVyLnJlY3QoKSk7CiAKICAgICAgICAgICAgIGlmIChoYXZl
QWxsRG91YmxlRWRnZXMpIHsKLSAgICAgICAgICAgICAgICBJbnRSZWN0IGlubmVyVGhpcmRSZWN0
ID0gb3V0ZXJCb3JkZXIucmVjdCgpOwotICAgICAgICAgICAgICAgIEludFJlY3Qgb3V0ZXJUaGly
ZFJlY3QgPSBvdXRlckJvcmRlci5yZWN0KCk7CisgICAgICAgICAgICAgICAgTGF5b3V0UmVjdCBp
bm5lclRoaXJkUmVjdCA9IG91dGVyQm9yZGVyLnJlY3QoKTsKKyAgICAgICAgICAgICAgICBMYXlv
dXRSZWN0IG91dGVyVGhpcmRSZWN0ID0gb3V0ZXJCb3JkZXIucmVjdCgpOwogICAgICAgICAgICAg
ICAgIGZvciAoaW50IHNpZGUgPSBCU1RvcDsgc2lkZSA8PSBCU0xlZnQ7ICsrc2lkZSkgewogICAg
ICAgICAgICAgICAgICAgICBpbnQgb3V0ZXJXaWR0aDsKICAgICAgICAgICAgICAgICAgICAgaW50
IGlubmVyV2lkdGg7CkBAIC0xOTQyLDcgKzE5NDIsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2Jq
ZWN0OjpwYWludEJvcmRlcihjb25zdCBQYWludEluZm8mIGluZm8sIGNvbnN0IExheW91dFJlY3Qm
CiAgICAgICAgICAgICBmb3IgKGludCBpID0gQlNUb3A7IGkgPD0gQlNMZWZ0OyArK2kpIHsKICAg
ICAgICAgICAgICAgICBjb25zdCBCb3JkZXJFZGdlJiBjdXJyRWRnZSA9IGVkZ2VzW2ldOwogICAg
ICAgICAgICAgICAgIGlmIChjdXJyRWRnZS5zaG91bGRSZW5kZXIoKSkgewotICAgICAgICAgICAg
ICAgICAgICBJbnRSZWN0IHNpZGVSZWN0ID0gY2FsY3VsYXRlU2lkZVJlY3Qob3V0ZXJCb3JkZXIs
IGVkZ2VzLCBpKTsKKyAgICAgICAgICAgICAgICAgICAgTGF5b3V0UmVjdCBzaWRlUmVjdCA9IGNh
bGN1bGF0ZVNpZGVSZWN0KG91dGVyQm9yZGVyLCBlZGdlcywgaSk7CiAgICAgICAgICAgICAgICAg
ICAgIHBhdGguYWRkUmVjdChzaWRlUmVjdCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgfQpAQCAtMjI0Nyw5ICsyMjQ3LDkgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y2xp
cEJvcmRlclNpZGVQb2x5Z29uKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXgKICAgICBn
cmFwaGljc0NvbnRleHQtPmNsaXBDb252ZXhQb2x5Z29uKDQsIHNlY29uZFF1YWQsICFzZWNvbmRF
ZGdlTWF0Y2hlcyk7CiB9CiAKLXN0YXRpYyBJbnRSZWN0IGNhbGN1bGF0ZVNpZGVSZWN0SW5jbHVk
aW5nSW5uZXIoY29uc3QgUm91bmRlZFJlY3QmIG91dGVyQm9yZGVyLCBjb25zdCBCb3JkZXJFZGdl
IGVkZ2VzW10sIEJveFNpZGUgc2lkZSkKK3N0YXRpYyBMYXlvdXRSZWN0IGNhbGN1bGF0ZVNpZGVS
ZWN0SW5jbHVkaW5nSW5uZXIoY29uc3QgUm91bmRlZFJlY3QmIG91dGVyQm9yZGVyLCBjb25zdCBC
b3JkZXJFZGdlIGVkZ2VzW10sIEJveFNpZGUgc2lkZSkKIHsKLSAgICBJbnRSZWN0IHNpZGVSZWN0
ID0gb3V0ZXJCb3JkZXIucmVjdCgpOworICAgIExheW91dFJlY3Qgc2lkZVJlY3QgPSBvdXRlckJv
cmRlci5yZWN0KCk7CiAgICAgaW50IHdpZHRoOwogCiAgICAgc3dpdGNoIChzaWRlKSB7CkBAIC0y
MjgwLDcgKzIyODAsNyBAQCBzdGF0aWMgUm91bmRlZFJlY3QgY2FsY3VsYXRlQWRqdXN0ZWRJbm5l
ckJvcmRlcihjb25zdCBSb3VuZGVkUmVjdCZpbm5lckJvcmRlciwgQgogICAgIC8vIFRoaXMgZnVu
Y3Rpb24gcmVsaWVzIG9uIHRoZSBmYWN0IHdlIG9ubHkgZ2V0IHJhZGlpIG5vdCBjb250YWluZWQg
d2l0aGluIGVhY2ggZWRnZSBpZiBvbmUgb2YgdGhlIHJhZGlpCiAgICAgLy8gZm9yIGFuIGVkZ2Ug
aXMgemVybywgc28gd2UgY2FuIHNoaWZ0IHRoZSBhcmMgdG93YXJkcyB0aGUgemVybyByYWRpdXMg
Y29ybmVyLgogICAgIFJvdW5kZWRSZWN0OjpSYWRpaSBuZXdSYWRpaSA9IGlubmVyQm9yZGVyLnJh
ZGlpKCk7Ci0gICAgSW50UmVjdCBuZXdSZWN0ID0gaW5uZXJCb3JkZXIucmVjdCgpOworICAgIExh
eW91dFJlY3QgbmV3UmVjdCA9IGlubmVyQm9yZGVyLnJlY3QoKTsKIAogICAgIGZsb2F0IG92ZXJz
aG9vdDsKICAgICBmbG9hdCBtYXhSYWRpaTsKQEAgLTI0NzQsMTYgKzI0NzQsMTYgQEAgYm9vbCBS
ZW5kZXJCb3hNb2RlbE9iamVjdDo6Ym94U2hhZG93U2hvdWxkQmVBcHBsaWVkVG9CYWNrZ3JvdW5k
KEJhY2tncm91bmRCbGVlZEEKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIGlubGluZSBJ
bnRSZWN0IGFyZWFDYXN0aW5nU2hhZG93SW5Ib2xlKGNvbnN0IEludFJlY3QmIGhvbGVSZWN0LCBp
bnQgc2hhZG93RXh0ZW50LCBpbnQgc2hhZG93U3ByZWFkLCBjb25zdCBJbnRTaXplJiBzaGFkb3dP
ZmZzZXQpCitzdGF0aWMgaW5saW5lIExheW91dFJlY3QgYXJlYUNhc3RpbmdTaGFkb3dJbkhvbGUo
Y29uc3QgTGF5b3V0UmVjdCYgaG9sZVJlY3QsIGludCBzaGFkb3dFeHRlbnQsIGludCBzaGFkb3dT
cHJlYWQsIGNvbnN0IEludFNpemUmIHNoYWRvd09mZnNldCkKIHsKLSAgICBJbnRSZWN0IGJvdW5k
cyhob2xlUmVjdCk7CisgICAgTGF5b3V0UmVjdCBib3VuZHMoaG9sZVJlY3QpOwogICAgIAogICAg
IGJvdW5kcy5pbmZsYXRlKHNoYWRvd0V4dGVudCk7CiAKICAgICBpZiAoc2hhZG93U3ByZWFkIDwg
MCkKICAgICAgICAgYm91bmRzLmluZmxhdGUoLXNoYWRvd1NwcmVhZCk7CiAgICAgCi0gICAgSW50
UmVjdCBvZmZzZXRCb3VuZHMgPSBib3VuZHM7CisgICAgTGF5b3V0UmVjdCBvZmZzZXRCb3VuZHMg
PSBib3VuZHM7CiAgICAgb2Zmc2V0Qm91bmRzLm1vdmUoLXNoYWRvd09mZnNldCk7CiAgICAgcmV0
dXJuIHVuaW9uUmVjdChib3VuZHMsIG9mZnNldEJvdW5kcyk7CiB9CkBAIC0yNTY1LDcgKzI1NjUs
NyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJveFNoYWRvdyhjb25zdCBQYWlu
dEluZm8mIGluZm8sIGNvbnN0IExheW91dFJlYwogICAgICAgICAgICAgICAgICAgICBjb250ZXh0
LT5maWxsUm91bmRlZFJlY3QoZmlsbFJlY3QsIENvbG9yOjpibGFjaywgcy0+Y29sb3JTcGFjZSgp
KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
ICAgIEludFJlY3QgcmVjdFRvQ2xpcE91dCA9IGJvcmRlci5yZWN0KCk7CisgICAgICAgICAgICAg
ICAgTGF5b3V0UmVjdCByZWN0VG9DbGlwT3V0ID0gYm9yZGVyLnJlY3QoKTsKIAogICAgICAgICAg
ICAgICAgIC8vIElmIHRoZSBib3ggaXMgb3BhcXVlLCBpdCBpcyB1bm5lY2Vzc2FyeSB0byBjbGlw
IGl0IG91dC4gSG93ZXZlciwgZG9pbmcgc28gc2F2ZXMgdGltZQogICAgICAgICAgICAgICAgIC8v
IHdoZW4gcGFpbnRpbmcgdGhlIHNoYWRvdy4gT24gdGhlIG90aGVyIGhhbmQsIGl0IGludHJvZHVj
ZXMgc3VicGl4ZWwgZ2FwcyBhbG9uZyB0aGUKQEAgLTI2MTQsNyArMjYxNCw3IEBAIHZvaWQgUmVu
ZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm94U2hhZG93KGNvbnN0IFBhaW50SW5mbyYgaW5mbywg
Y29uc3QgTGF5b3V0UmVjCiAKICAgICAgICAgICAgIENvbG9yIGZpbGxDb2xvcihzaGFkb3dDb2xv
ci5yZWQoKSwgc2hhZG93Q29sb3IuZ3JlZW4oKSwgc2hhZG93Q29sb3IuYmx1ZSgpLCAyNTUpOwog
Ci0gICAgICAgICAgICBJbnRSZWN0IG91dGVyUmVjdCA9IGFyZWFDYXN0aW5nU2hhZG93SW5Ib2xl
KGJvcmRlci5yZWN0KCksIHNoYWRvd1BhaW50aW5nRXh0ZW50LCBzaGFkb3dTcHJlYWQsIHNoYWRv
d09mZnNldCk7CisgICAgICAgICAgICBMYXlvdXRSZWN0IG91dGVyUmVjdCA9IGFyZWFDYXN0aW5n
U2hhZG93SW5Ib2xlKGJvcmRlci5yZWN0KCksIHNoYWRvd1BhaW50aW5nRXh0ZW50LCBzaGFkb3dT
cHJlYWQsIHNoYWRvd09mZnNldCk7CiAgICAgICAgICAgICBSb3VuZGVkUmVjdCByb3VuZGVkSG9s
ZShob2xlUmVjdCwgYm9yZGVyLnJhZGlpKCkpOwogCiAgICAgICAgICAgICBHcmFwaGljc0NvbnRl
eHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmNvbnRleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaAppbmRleCA2ZWQyMjY5OTEzNjYwZjZmZTgx
OTFlYjNmMzY3YzgwMTZjMmQ3YjA3Li4xYmZjNTA1OTVlYjg4ODk1OGRkYmZlYzA4Yzg5ZjM4MWMy
ZWY0ODA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9k
ZWxPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxP
YmplY3QuaApAQCAtMzMyLDggKzMzMiw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQm94U2lkZSwgYm9vbCBmaXJzdEVkZ2VNYXRjaGVzLCBib29sIHNlY29uZEVk
Z2VNYXRjaGVzKTsKICAgICB2b2lkIGNsaXBCb3JkZXJTaWRlRm9yQ29tcGxleElubmVyUGF0aChH
cmFwaGljc0NvbnRleHQqLCBjb25zdCBSb3VuZGVkUmVjdCYsIGNvbnN0IFJvdW5kZWRSZWN0Jiwg
Qm94U2lkZSwgY29uc3QgY2xhc3MgQm9yZGVyRWRnZVtdKTsKICAgICB2b2lkIHBhaW50T25lQm9y
ZGVyU2lkZShHcmFwaGljc0NvbnRleHQqLCBjb25zdCBSZW5kZXJTdHlsZSosIGNvbnN0IFJvdW5k
ZWRSZWN0JiBvdXRlckJvcmRlciwgY29uc3QgUm91bmRlZFJlY3QmIGlubmVyQm9yZGVyLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJbnRSZWN0JiBzaWRlUmVjdCwgQm94
U2lkZSwgQm94U2lkZSBhZGphY2VudFNpZGUxLCBCb3hTaWRlIGFkamFjZW50U2lkZTIsIGNvbnN0
IGNsYXNzIEJvcmRlckVkZ2VbXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgUGF0aCosIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSwgYm9vbCBpbmNsdWRlTG9naWNhbExl
ZnRFZGdlLCBib29sIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlLCBib29sIGFudGlhbGlhcywgY29u
c3QgQ29sb3IqIG92ZXJyaWRlQ29sb3IgPSAwKTsKKyAgICAgICAgY29uc3QgTGF5b3V0UmVjdCYg
c2lkZVJlY3QsIEJveFNpZGUsIEJveFNpZGUgYWRqYWNlbnRTaWRlMSwgQm94U2lkZSBhZGphY2Vu
dFNpZGUyLCBjb25zdCBjbGFzcyBCb3JkZXJFZGdlW10sCisgICAgICAgIGNvbnN0IFBhdGgqLCBC
YWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9v
bCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSwgYm9vbCBhbnRpYWxpYXMsIGNvbnN0IENvbG9yKiBv
dmVycmlkZUNvbG9yID0gMCk7CiAgICAgdm9pZCBwYWludFRyYW5zbHVjZW50Qm9yZGVyU2lkZXMo
R3JhcGhpY3NDb250ZXh0KiwgY29uc3QgUmVuZGVyU3R5bGUqLCBjb25zdCBSb3VuZGVkUmVjdCYg
b3V0ZXJCb3JkZXIsIGNvbnN0IFJvdW5kZWRSZWN0JiBpbm5lckJvcmRlciwgY29uc3QgSW50UG9p
bnQmIGlubmVyQm9yZGVyQWRqdXN0bWVudCwKICAgICAgICAgY29uc3QgY2xhc3MgQm9yZGVyRWRn
ZVtdLCBCb3JkZXJFZGdlRmxhZ3MsIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSwgYm9vbCBpbmNs
dWRlTG9naWNhbExlZnRFZGdlLCBib29sIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlLCBib29sIGFu
dGlhbGlhcyA9IGZhbHNlKTsKICAgICB2b2lkIHBhaW50Qm9yZGVyU2lkZXMoR3JhcGhpY3NDb250
ZXh0KiwgY29uc3QgUmVuZGVyU3R5bGUqLCBjb25zdCBSb3VuZGVkUmVjdCYgb3V0ZXJCb3JkZXIs
IGNvbnN0IFJvdW5kZWRSZWN0JiBpbm5lckJvcmRlciwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222482</attachid>
            <date>2014-01-28 13:51:32 -0800</date>
            <delta_ts>2014-01-28 19:21:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-127779-20140128135136.patch</filename>
            <type>text/plain</type>
            <size>48318</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYyOTQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjYyY2U4OWVlNDM0YWYw
YjdiNzNmODAwNGE5YzFhMjE0YzZmNjRlYS4uNTI4M2JhYjc4NzAyYjhiODljMDQyYjllMWFkMjc5
M2RlODNjMDA5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgxIEBACisyMDE0LTAxLTI4ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgU3VicGl4ZWwgcmVuZGVyaW5n
OiBNYWtlIFJvdW5kZWRSZWN0IGxheW91dCB1bml0IGF3YXJlLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3Nzc5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW4gb3JkZXIgdG8gZHJhdyBoYWlybGluZSBi
b3JkZXJzLCBSb3VuZGVkUmVjdCBuZWVkcyB0byBiZQorICAgICAgICBMYXlvdXRVbml0IGJhc2Vk
LgorCisgICAgICAgIE5vIGNoYW5nZSBpbiBiZWhhdmlvci4KKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQ6OmZpbGxSb3VuZGVkUmVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZFJl
Y3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Um91bmRlZFJlY3Q6OlJhZGlpOjpzY2FsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSb3VuZGVkUmVjdDo6UmFkaWk6OmV4cGFuZCk6CisgICAgICAgIChX
ZWJDb3JlOjpSb3VuZGVkUmVjdDo6aW5mbGF0ZVdpdGhSYWRpaSk6CisgICAgICAgIChXZWJDb3Jl
OjpSb3VuZGVkUmVjdDo6Um91bmRlZFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Um91bmRlZFJl
Y3Q6OmludGVyc2VjdHNRdWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Sb3VuZGVk
UmVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6Um91bmRlZFJlY3Q6OlJhZGlpOjpSYWRpaSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSb3VuZGVkUmVjdDo6UmFkaWk6OnNldFRvcExlZnQpOgorICAgICAg
ICAoV2ViQ29yZTo6Um91bmRlZFJlY3Q6OlJhZGlpOjpzZXRUb3BSaWdodCk6CisgICAgICAgIChX
ZWJDb3JlOjpSb3VuZGVkUmVjdDo6UmFkaWk6OnNldEJvdHRvbUxlZnQpOgorICAgICAgICAoV2Vi
Q29yZTo6Um91bmRlZFJlY3Q6OlJhZGlpOjpzZXRCb3R0b21SaWdodCk6CisgICAgICAgIChXZWJD
b3JlOjpSb3VuZGVkUmVjdDo6UmFkaWk6OnRvcExlZnQpOgorICAgICAgICAoV2ViQ29yZTo6Um91
bmRlZFJlY3Q6OlJhZGlpOjp0b3BSaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpSb3VuZGVkUmVj
dDo6UmFkaWk6OmJvdHRvbUxlZnQpOgorICAgICAgICAoV2ViQ29yZTo6Um91bmRlZFJlY3Q6OlJh
ZGlpOjpib3R0b21SaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpSb3VuZGVkUmVjdDo6UmFkaWk6
OmV4cGFuZCk6CisgICAgICAgIChXZWJDb3JlOjpSb3VuZGVkUmVjdDo6UmFkaWk6OnNocmluayk6
CisgICAgICAgIChXZWJDb3JlOjpSb3VuZGVkUmVjdDo6cmVjdCk6CisgICAgICAgIChXZWJDb3Jl
OjpSb3VuZGVkUmVjdDo6c2V0UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSb3VuZGVkUmVjdDo6
bW92ZSk6CisgICAgICAgIChXZWJDb3JlOjpSb3VuZGVkUmVjdDo6aW5mbGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpSb3VuZGVkUmVjdDo6ZXhwYW5kUmFkaWkpOgorICAgICAgICAoV2ViQ29yZTo6
Um91bmRlZFJlY3Q6OnNocmlua1JhZGlpKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9T
aGFkb3dCbHVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmF0Y2hCdWZmZXI6OnNldENhY2hl
ZFNoYWRvd1ZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JhdGNoQnVmZmVyOjpzZXRDYWNo
ZWRJbnNldFNoYWRvd1ZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRlU2xpY2VTaXpl
c0Zyb21SYWRpaSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjp0ZW1wbGF0ZVNpemUp
OgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3cpOgorICAgICAg
ICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93KToKKyAgICAgICAgKFdlYkNv
cmU6OlNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0aG91dFRpbGluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRob3V0VGlsaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvd1dpdGhUaWxpbmcpOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3dXaXRoVGlsaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRyYXdMYXllclBpZWNlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFkb3dCbHVyOjpiZWdpblNoYWRvd0xheWVyKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9TaGFkb3dCbHVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0OjpjbGlwT3V0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Zmls
bFJvdW5kZWRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZmlsbFJl
Y3RXaXRoUm91bmRlZEhvbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBo
aWNzQ29udGV4dENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6cGxh
dGZvcm1Jbml0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9HcmFwaGljc0Nv
bnRleHRXaW5DRS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNsaXBP
dXQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUm91bmRlZFJlY3Qp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRPbmVCb3JkZXJTaWRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OmNhbGN1bGF0ZVNpZGVSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJvcmRlclNpZGVzKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJvcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCb3hNb2RlbE9iamVjdDo6Y2xpcEJvcmRlclNpZGVQb2x5Z29uKTogTXV0ZSBzdHlsZSBj
aGVja2VyLiBMaW5lCisgICAgICAgIGlzIG5vdCBsb25nIGVub3VnaCB0byBhYnNvbHV0ZWx5IHJl
cXVpcmUgbGluZSBicmVhay4KKyAgICAgICAgKFdlYkNvcmU6OmNhbGN1bGF0ZVNpZGVSZWN0SW5j
bHVkaW5nSW5uZXIpOgorICAgICAgICAoV2ViQ29yZTo6Y2FsY3VsYXRlQWRqdXN0ZWRJbm5lckJv
cmRlcik6CisgICAgICAgIChXZWJDb3JlOjphcmVhQ2FzdGluZ1NoYWRvd0luSG9sZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3hTaGFkb3cpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJUaGVtZVNhZmFyaS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVt
ZVNhZmFyaTo6cGFpbnRNZW51TGlzdEJ1dHRvbkdyYWRpZW50cyk6IEZpeCBpcyBiYXNlZCBvbiBS
ZW5kZXJUaGVtZU1hYy4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lU2FmYXJpOjpwYWlu
dFNsaWRlclRyYWNrKToKKwogMjAxNC0wMS0yOCAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxl
LmNvbT4KIAogICAgICAgICBbTWFjXSBVc2UgZXhwbGljaXQsIHJhdGhlciB0aGFuIGNhbm9uaWNh
bCwgQXVkaW9Gb3JtYXRGbGFncyBhbmQgdHlwZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAppbmRleCBmMTJmMDJhNmY2Zjg1
NjY5ZmUyZDdiMmMwMzkwN2E1YzAzZTM4NzhhLi42YjRkN2E5YTNkNzJlZGMzMjVhOTk0ZTc5Y2Y2
MWExZjAxOTc2NWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKQEAgLTc3MSw3ICs3NzEsNiBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYgY29s
b3IsIENvbG9yUwogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJvdW5kZWRSZWN0KGNvbnN0
IFJvdW5kZWRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JT
cGFjZSwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKIHsKLQogICAgIGlmIChyZWN0LmlzUm91bmRlZCgp
KSB7CiAgICAgICAgIHNldENvbXBvc2l0ZU9wZXJhdGlvbihjb21wb3NpdGVPcGVyYXRpb24oKSwg
YmxlbmRNb2RlKTsKICAgICAgICAgZmlsbFJvdW5kZWRSZWN0KHJlY3QucmVjdCgpLCByZWN0LnJh
ZGlpKCkudG9wTGVmdCgpLCByZWN0LnJhZGlpKCkudG9wUmlnaHQoKSwgcmVjdC5yYWRpaSgpLmJv
dHRvbUxlZnQoKSwgcmVjdC5yYWRpaSgpLmJvdHRvbVJpZ2h0KCksIGNvbG9yLCBjb2xvclNwYWNl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0LmgKaW5kZXggYTQzNzgyN2FjNjJhZGQyMGNhOWRmZGQ4OTk4YjQyYzc2MTJmNGNkZi4uODg4
NjgyZTkwOGU5YjE0MDBlNGY1MTU1ZTYyZWNmNDE3ZTZmYWVmNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTI5NCw5ICsy
OTQsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgZmlsbFJlY3QoY29uc3Qg
RmxvYXRSZWN0JiwgY29uc3QgQ29sb3ImLCBDb2xvclNwYWNlKTsKICAgICAgICAgdm9pZCBmaWxs
UmVjdChjb25zdCBGbG9hdFJlY3QmLCBHcmFkaWVudCYpOwogICAgICAgICB2b2lkIGZpbGxSZWN0
KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IENvbG9yJiwgQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3Bl
cmF0b3IsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1hbCk7Ci0gICAgICAgIHZvaWQgZmlsbFJv
dW5kZWRSZWN0KGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRTaXplJiB0b3BMZWZ0LCBjb25zdCBJ
bnRTaXplJiB0b3BSaWdodCwgY29uc3QgSW50U2l6ZSYgYm90dG9tTGVmdCwgY29uc3QgSW50U2l6
ZSYgYm90dG9tUmlnaHQsIGNvbnN0IENvbG9yJiwgQ29sb3JTcGFjZSk7CisgICAgICAgIHZvaWQg
ZmlsbFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0U2l6ZSYgdG9wTGVm
dCwgY29uc3QgRmxvYXRTaXplJiB0b3BSaWdodCwgY29uc3QgRmxvYXRTaXplJiBib3R0b21MZWZ0
LCBjb25zdCBGbG9hdFNpemUmIGJvdHRvbVJpZ2h0LCBjb25zdCBDb2xvciYsIENvbG9yU3BhY2Up
OwogICAgICAgICB2b2lkIGZpbGxSb3VuZGVkUmVjdChjb25zdCBSb3VuZGVkUmVjdCYsIGNvbnN0
IENvbG9yJiwgQ29sb3JTcGFjZSwgQmxlbmRNb2RlID0gQmxlbmRNb2RlTm9ybWFsKTsKLSAgICAg
ICAgdm9pZCBmaWxsUmVjdFdpdGhSb3VuZGVkSG9sZShjb25zdCBJbnRSZWN0JiwgY29uc3QgUm91
bmRlZFJlY3QmIHJvdW5kZWRIb2xlUmVjdCwgY29uc3QgQ29sb3ImLCBDb2xvclNwYWNlKTsKKyAg
ICAgICAgdm9pZCBmaWxsUmVjdFdpdGhSb3VuZGVkSG9sZShjb25zdCBGbG9hdFJlY3QmLCBjb25z
dCBSb3VuZGVkUmVjdCYgcm91bmRlZEhvbGVSZWN0LCBjb25zdCBDb2xvciYsIENvbG9yU3BhY2Up
OwogCiAgICAgICAgIHZvaWQgY2xlYXJSZWN0KGNvbnN0IEZsb2F0UmVjdCYpOwogCkBAIC0zMzIs
NyArMzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAvLyBGSVhNRTogQ29uc2lk
ZXIgd3JpdGluZyB0aGlzIGluIHRlcm1zIG9mIGEgc3BlY2lhbGl6ZWQgUm91bmRlZFJlY3QgdGhh
dCB1c2VzIEZsb2F0UmVjdCBhbmQgRmxvYXRTaXplIHJhZGlpLgogICAgICAgICB2b2lkIGNsaXBS
b3VuZGVkUmVjdChjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFNpemUmIHRvcExlZnQsIGNv
bnN0IEZsb2F0U2l6ZSYgdG9wUmlnaHQsIGNvbnN0IEZsb2F0U2l6ZSYgYm90dG9tTGVmdCwgY29u
c3QgRmxvYXRTaXplJiBib3R0b21SaWdodCk7CiAKLSAgICAgICAgdm9pZCBjbGlwT3V0KGNvbnN0
IEludFJlY3QmKTsKKyAgICAgICAgdm9pZCBjbGlwT3V0KGNvbnN0IEZsb2F0UmVjdCYpOwogICAg
ICAgICB2b2lkIGNsaXBPdXRSb3VuZGVkUmVjdChjb25zdCBSb3VuZGVkUmVjdCYpOwogICAgICAg
ICB2b2lkIGNsaXBQYXRoKGNvbnN0IFBhdGgmLCBXaW5kUnVsZSk7CiAgICAgICAgIHZvaWQgY2xp
cENvbnZleFBvbHlnb24oc2l6ZV90IG51bVBvaW50cywgY29uc3QgRmxvYXRQb2ludCosIGJvb2wg
YW50aWFsaWFzID0gdHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Sb3VuZGVkUmVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Sb3VuZGVkUmVjdC5jcHAKaW5kZXggOGYyZjFjZjkxZTI5M2VmYTc1NDQzYjFjZDVmMDVkNzdj
MTI1YjgzZS4uZDcyNzMyNGU3NzRmNjBmOWUzYWU5ZmQ2MTk5NmNjNjNiMmY4OGU2MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZFJlY3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JvdW5kZWRSZWN0LmNwcApAQCAt
MjgsNiArMjgsOSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlJvdW5kZWRSZWN0
LmgiCiAKKyNpbmNsdWRlICJMYXlvdXRSZWN0LmgiCisjaW5jbHVkZSAiTGF5b3V0VW5pdC5oIgor
CiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00NSw0MiAr
NDgsNDIgQEAgdm9pZCBSb3VuZGVkUmVjdDo6UmFkaWk6OnNjYWxlKGZsb2F0IGZhY3RvcikKICAg
ICAvLyBJZiBlaXRoZXIgcmFkaXVzIG9uIGEgY29ybmVyIGJlY29tZXMgemVybywgcmVzZXQgYm90
aCByYWRpaSBvbiB0aGF0IGNvcm5lci4KICAgICBtX3RvcExlZnQuc2NhbGUoZmFjdG9yKTsKICAg
ICBpZiAoIW1fdG9wTGVmdC53aWR0aCgpIHx8ICFtX3RvcExlZnQuaGVpZ2h0KCkpCi0gICAgICAg
IG1fdG9wTGVmdCA9IEludFNpemUoKTsKKyAgICAgICAgbV90b3BMZWZ0ID0gTGF5b3V0U2l6ZSgp
OwogICAgIG1fdG9wUmlnaHQuc2NhbGUoZmFjdG9yKTsKICAgICBpZiAoIW1fdG9wUmlnaHQud2lk
dGgoKSB8fCAhbV90b3BSaWdodC5oZWlnaHQoKSkKLSAgICAgICAgbV90b3BSaWdodCA9IEludFNp
emUoKTsKKyAgICAgICAgbV90b3BSaWdodCA9IExheW91dFNpemUoKTsKICAgICBtX2JvdHRvbUxl
ZnQuc2NhbGUoZmFjdG9yKTsKICAgICBpZiAoIW1fYm90dG9tTGVmdC53aWR0aCgpIHx8ICFtX2Jv
dHRvbUxlZnQuaGVpZ2h0KCkpCi0gICAgICAgIG1fYm90dG9tTGVmdCA9IEludFNpemUoKTsKKyAg
ICAgICAgbV9ib3R0b21MZWZ0ID0gTGF5b3V0U2l6ZSgpOwogICAgIG1fYm90dG9tUmlnaHQuc2Nh
bGUoZmFjdG9yKTsKICAgICBpZiAoIW1fYm90dG9tUmlnaHQud2lkdGgoKSB8fCAhbV9ib3R0b21S
aWdodC5oZWlnaHQoKSkKLSAgICAgICAgbV9ib3R0b21SaWdodCA9IEludFNpemUoKTsKKyAgICAg
ICAgbV9ib3R0b21SaWdodCA9IExheW91dFNpemUoKTsKIAogfQogCi12b2lkIFJvdW5kZWRSZWN0
OjpSYWRpaTo6ZXhwYW5kKGludCB0b3BXaWR0aCwgaW50IGJvdHRvbVdpZHRoLCBpbnQgbGVmdFdp
ZHRoLCBpbnQgcmlnaHRXaWR0aCkKK3ZvaWQgUm91bmRlZFJlY3Q6OlJhZGlpOjpleHBhbmQoY29u
c3QgTGF5b3V0VW5pdCYgdG9wV2lkdGgsIGNvbnN0IExheW91dFVuaXQmIGJvdHRvbVdpZHRoLCBj
b25zdCBMYXlvdXRVbml0JiBsZWZ0V2lkdGgsIGNvbnN0IExheW91dFVuaXQmIHJpZ2h0V2lkdGgp
CiB7CiAgICAgaWYgKG1fdG9wTGVmdC53aWR0aCgpID4gMCAmJiBtX3RvcExlZnQuaGVpZ2h0KCkg
PiAwKSB7Ci0gICAgICAgIG1fdG9wTGVmdC5zZXRXaWR0aChzdGQ6Om1heDxpbnQ+KDAsIG1fdG9w
TGVmdC53aWR0aCgpICsgbGVmdFdpZHRoKSk7Ci0gICAgICAgIG1fdG9wTGVmdC5zZXRIZWlnaHQo
c3RkOjptYXg8aW50PigwLCBtX3RvcExlZnQuaGVpZ2h0KCkgKyB0b3BXaWR0aCkpOworICAgICAg
ICBtX3RvcExlZnQuc2V0V2lkdGgoc3RkOjptYXg8TGF5b3V0VW5pdD4oMCwgbV90b3BMZWZ0Lndp
ZHRoKCkgKyBsZWZ0V2lkdGgpKTsKKyAgICAgICAgbV90b3BMZWZ0LnNldEhlaWdodChzdGQ6Om1h
eDxMYXlvdXRVbml0PigwLCBtX3RvcExlZnQuaGVpZ2h0KCkgKyB0b3BXaWR0aCkpOwogICAgIH0K
ICAgICBpZiAobV90b3BSaWdodC53aWR0aCgpID4gMCAmJiBtX3RvcFJpZ2h0LmhlaWdodCgpID4g
MCkgewotICAgICAgICBtX3RvcFJpZ2h0LnNldFdpZHRoKHN0ZDo6bWF4PGludD4oMCwgbV90b3BS
aWdodC53aWR0aCgpICsgcmlnaHRXaWR0aCkpOwotICAgICAgICBtX3RvcFJpZ2h0LnNldEhlaWdo
dChzdGQ6Om1heDxpbnQ+KDAsIG1fdG9wUmlnaHQuaGVpZ2h0KCkgKyB0b3BXaWR0aCkpOworICAg
ICAgICBtX3RvcFJpZ2h0LnNldFdpZHRoKHN0ZDo6bWF4PExheW91dFVuaXQ+KDAsIG1fdG9wUmln
aHQud2lkdGgoKSArIHJpZ2h0V2lkdGgpKTsKKyAgICAgICAgbV90b3BSaWdodC5zZXRIZWlnaHQo
c3RkOjptYXg8TGF5b3V0VW5pdD4oMCwgbV90b3BSaWdodC5oZWlnaHQoKSArIHRvcFdpZHRoKSk7
CiAgICAgfQogICAgIGlmIChtX2JvdHRvbUxlZnQud2lkdGgoKSA+IDAgJiYgbV9ib3R0b21MZWZ0
LmhlaWdodCgpID4gMCkgewotICAgICAgICBtX2JvdHRvbUxlZnQuc2V0V2lkdGgoc3RkOjptYXg8
aW50PigwLCBtX2JvdHRvbUxlZnQud2lkdGgoKSArIGxlZnRXaWR0aCkpOwotICAgICAgICBtX2Jv
dHRvbUxlZnQuc2V0SGVpZ2h0KHN0ZDo6bWF4PGludD4oMCwgbV9ib3R0b21MZWZ0LmhlaWdodCgp
ICsgYm90dG9tV2lkdGgpKTsKKyAgICAgICAgbV9ib3R0b21MZWZ0LnNldFdpZHRoKHN0ZDo6bWF4
PExheW91dFVuaXQ+KDAsIG1fYm90dG9tTGVmdC53aWR0aCgpICsgbGVmdFdpZHRoKSk7CisgICAg
ICAgIG1fYm90dG9tTGVmdC5zZXRIZWlnaHQoc3RkOjptYXg8TGF5b3V0VW5pdD4oMCwgbV9ib3R0
b21MZWZ0LmhlaWdodCgpICsgYm90dG9tV2lkdGgpKTsKICAgICB9CiAgICAgaWYgKG1fYm90dG9t
UmlnaHQud2lkdGgoKSA+IDAgJiYgbV9ib3R0b21SaWdodC5oZWlnaHQoKSA+IDApIHsKLSAgICAg
ICAgbV9ib3R0b21SaWdodC5zZXRXaWR0aChzdGQ6Om1heDxpbnQ+KDAsIG1fYm90dG9tUmlnaHQu
d2lkdGgoKSArIHJpZ2h0V2lkdGgpKTsKLSAgICAgICAgbV9ib3R0b21SaWdodC5zZXRIZWlnaHQo
c3RkOjptYXg8aW50PigwLCBtX2JvdHRvbVJpZ2h0LmhlaWdodCgpICsgYm90dG9tV2lkdGgpKTsK
KyAgICAgICAgbV9ib3R0b21SaWdodC5zZXRXaWR0aChzdGQ6Om1heDxMYXlvdXRVbml0PigwLCBt
X2JvdHRvbVJpZ2h0LndpZHRoKCkgKyByaWdodFdpZHRoKSk7CisgICAgICAgIG1fYm90dG9tUmln
aHQuc2V0SGVpZ2h0KHN0ZDo6bWF4PExheW91dFVuaXQ+KDAsIG1fYm90dG9tUmlnaHQuaGVpZ2h0
KCkgKyBib3R0b21XaWR0aCkpOwogICAgIH0KIH0KIAotdm9pZCBSb3VuZGVkUmVjdDo6aW5mbGF0
ZVdpdGhSYWRpaShpbnQgc2l6ZSkKK3ZvaWQgUm91bmRlZFJlY3Q6OmluZmxhdGVXaXRoUmFkaWko
Y29uc3QgTGF5b3V0VW5pdCYgc2l6ZSkKIHsKLSAgICBJbnRSZWN0IG9sZCA9IG1fcmVjdDsKKyAg
ICBMYXlvdXRSZWN0IG9sZCA9IG1fcmVjdDsKIAogICAgIG1fcmVjdC5pbmZsYXRlKHNpemUpOwog
ICAgIC8vIENvbnNpZGVyaW5nIHRoZSBpbmZsYXRpb24gZmFjdG9yIG9mIHNob3J0ZXIgc2l6ZSB0
byBzY2FsZSB0aGUgcmFkaWkgc2VlbXMgYXBwcm9wcmlhdGUgaGVyZQpAQCAtMTMxLDE4ICsxMzQs
MTggQEAgdm9pZCBSb3VuZGVkUmVjdDo6UmFkaWk6OmV4Y2x1ZGVMb2dpY2FsRWRnZXMoYm9vbCBp
c0hvcml6b250YWwsIGJvb2wgZXhjbHVkZUxvZ2kKICAgICB9CiB9CiAKLVJvdW5kZWRSZWN0OjpS
b3VuZGVkUmVjdChpbnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50IGhlaWdodCkKK1JvdW5kZWRS
ZWN0OjpSb3VuZGVkUmVjdChjb25zdCBMYXlvdXRVbml0JiB4LCBjb25zdCBMYXlvdXRVbml0JiB5
LCBjb25zdCBMYXlvdXRVbml0JiB3aWR0aCwgY29uc3QgTGF5b3V0VW5pdCYgaGVpZ2h0KQogICAg
IDogbV9yZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQpCiB7CiB9CiAKLVJvdW5kZWRSZWN0OjpSb3Vu
ZGVkUmVjdChjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBSYWRpaSYgcmFkaWkpCitSb3VuZGVk
UmVjdDo6Um91bmRlZFJlY3QoY29uc3QgTGF5b3V0UmVjdCYgcmVjdCwgY29uc3QgUmFkaWkmIHJh
ZGlpKQogICAgIDogbV9yZWN0KHJlY3QpCiAgICAgLCBtX3JhZGlpKHJhZGlpKQogewogfQogCi1S
b3VuZGVkUmVjdDo6Um91bmRlZFJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW50U2l6
ZSYgdG9wTGVmdCwgY29uc3QgSW50U2l6ZSYgdG9wUmlnaHQsIGNvbnN0IEludFNpemUmIGJvdHRv
bUxlZnQsIGNvbnN0IEludFNpemUmIGJvdHRvbVJpZ2h0KQorUm91bmRlZFJlY3Q6OlJvdW5kZWRS
ZWN0KGNvbnN0IExheW91dFJlY3QmIHJlY3QsIGNvbnN0IExheW91dFNpemUmIHRvcExlZnQsIGNv
bnN0IExheW91dFNpemUmIHRvcFJpZ2h0LCBjb25zdCBMYXlvdXRTaXplJiBib3R0b21MZWZ0LCBj
b25zdCBMYXlvdXRTaXplJiBib3R0b21SaWdodCkKICAgICA6IG1fcmVjdChyZWN0KQogICAgICwg
bV9yYWRpaSh0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVmdCwgYm90dG9tUmlnaHQpCiB7CkBA
IC0xODYsNyArMTg5LDcgQEAgYm9vbCBSb3VuZGVkUmVjdDo6aW50ZXJzZWN0c1F1YWQoY29uc3Qg
RmxvYXRRdWFkJiBxdWFkKSBjb25zdAogICAgIGlmICghcXVhZC5pbnRlcnNlY3RzUmVjdChyZWN0
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgY29uc3QgSW50U2l6ZSYgdG9wTGVmdCA9
IG1fcmFkaWkudG9wTGVmdCgpOworICAgIGNvbnN0IExheW91dFNpemUmIHRvcExlZnQgPSBtX3Jh
ZGlpLnRvcExlZnQoKTsKICAgICBpZiAoIXRvcExlZnQuaXNFbXB0eSgpKSB7CiAgICAgICAgIEZs
b2F0UmVjdCByZWN0KG1fcmVjdC54KCksIG1fcmVjdC55KCksIHRvcExlZnQud2lkdGgoKSwgdG9w
TGVmdC5oZWlnaHQoKSk7CiAgICAgICAgIGlmIChxdWFkLmludGVyc2VjdHNSZWN0KHJlY3QpKSB7
CkBAIC0xOTcsNyArMjAwLDcgQEAgYm9vbCBSb3VuZGVkUmVjdDo6aW50ZXJzZWN0c1F1YWQoY29u
c3QgRmxvYXRRdWFkJiBxdWFkKSBjb25zdAogICAgICAgICB9CiAgICAgfQogCi0gICAgY29uc3Qg
SW50U2l6ZSYgdG9wUmlnaHQgPSBtX3JhZGlpLnRvcFJpZ2h0KCk7CisgICAgY29uc3QgTGF5b3V0
U2l6ZSYgdG9wUmlnaHQgPSBtX3JhZGlpLnRvcFJpZ2h0KCk7CiAgICAgaWYgKCF0b3BSaWdodC5p
c0VtcHR5KCkpIHsKICAgICAgICAgRmxvYXRSZWN0IHJlY3QobV9yZWN0Lm1heFgoKSAtIHRvcFJp
Z2h0LndpZHRoKCksIG1fcmVjdC55KCksIHRvcFJpZ2h0LndpZHRoKCksIHRvcFJpZ2h0LmhlaWdo
dCgpKTsKICAgICAgICAgaWYgKHF1YWQuaW50ZXJzZWN0c1JlY3QocmVjdCkpIHsKQEAgLTIwOCw3
ICsyMTEsNyBAQCBib29sIFJvdW5kZWRSZWN0OjppbnRlcnNlY3RzUXVhZChjb25zdCBGbG9hdFF1
YWQmIHF1YWQpIGNvbnN0CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBjb25zdCBJbnRTaXplJiBi
b3R0b21MZWZ0ID0gbV9yYWRpaS5ib3R0b21MZWZ0KCk7CisgICAgY29uc3QgTGF5b3V0U2l6ZSYg
Ym90dG9tTGVmdCA9IG1fcmFkaWkuYm90dG9tTGVmdCgpOwogICAgIGlmICghYm90dG9tTGVmdC5p
c0VtcHR5KCkpIHsKICAgICAgICAgRmxvYXRSZWN0IHJlY3QobV9yZWN0LngoKSwgbV9yZWN0Lm1h
eFkoKSAtIGJvdHRvbUxlZnQuaGVpZ2h0KCksIGJvdHRvbUxlZnQud2lkdGgoKSwgYm90dG9tTGVm
dC5oZWlnaHQoKSk7CiAgICAgICAgIGlmIChxdWFkLmludGVyc2VjdHNSZWN0KHJlY3QpKSB7CkBA
IC0yMTksNyArMjIyLDcgQEAgYm9vbCBSb3VuZGVkUmVjdDo6aW50ZXJzZWN0c1F1YWQoY29uc3Qg
RmxvYXRRdWFkJiBxdWFkKSBjb25zdAogICAgICAgICB9CiAgICAgfQogCi0gICAgY29uc3QgSW50
U2l6ZSYgYm90dG9tUmlnaHQgPSBtX3JhZGlpLmJvdHRvbVJpZ2h0KCk7CisgICAgY29uc3QgTGF5
b3V0U2l6ZSYgYm90dG9tUmlnaHQgPSBtX3JhZGlpLmJvdHRvbVJpZ2h0KCk7CiAgICAgaWYgKCFi
b3R0b21SaWdodC5pc0VtcHR5KCkpIHsKICAgICAgICAgRmxvYXRSZWN0IHJlY3QobV9yZWN0Lm1h
eFgoKSAtIGJvdHRvbVJpZ2h0LndpZHRoKCksIG1fcmVjdC5tYXhZKCkgLSBib3R0b21SaWdodC5o
ZWlnaHQoKSwgYm90dG9tUmlnaHQud2lkdGgoKSwgYm90dG9tUmlnaHQuaGVpZ2h0KCkpOwogICAg
ICAgICBpZiAocXVhZC5pbnRlcnNlY3RzUmVjdChyZWN0KSkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZFJlY3QuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1JvdW5kZWRSZWN0LmgKaW5kZXggZDkyM2UzNTNmNDhhYjk4ZGU5
MTU3NzM2M2JhNjM0Yzc4YTljMjMwMy4uNjFiZGE5N2JmNWY1MDk1MjM3NTcxYTU1YmVhZmJhNzc5
MDVlZjgwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUm91
bmRlZFJlY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Sb3VuZGVk
UmVjdC5oCkBAIC0yOCwxNyArMjgsMTkgQEAKICNkZWZpbmUgUm91bmRlZFJlY3RfaAogCiAjaW5j
bHVkZSAiRmxvYXRRdWFkLmgiCi0jaW5jbHVkZSAiSW50UmVjdC5oIgorI2luY2x1ZGUgIkxheW91
dFJlY3QuaCIKKyNpbmNsdWRlICJMYXlvdXRTaXplLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAorY2xhc3MgTGF5b3V0VW5pdDsKIAogY2xhc3MgUm91bmRlZFJlY3QgewogcHVibGljOgogICAg
IGNsYXNzIFJhZGlpIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFJhZGlpKCkge30KLSAgICAgICAg
UmFkaWkoY29uc3QgSW50U2l6ZSYgdG9wTGVmdCwgY29uc3QgSW50U2l6ZSYgdG9wUmlnaHQsIGNv
bnN0IEludFNpemUmIGJvdHRvbUxlZnQsIGNvbnN0IEludFNpemUmIGJvdHRvbVJpZ2h0KQorICAg
ICAgICBSYWRpaShjb25zdCBMYXlvdXRTaXplJiB0b3BMZWZ0LCBjb25zdCBMYXlvdXRTaXplJiB0
b3BSaWdodCwgY29uc3QgTGF5b3V0U2l6ZSYgYm90dG9tTGVmdCwgY29uc3QgTGF5b3V0U2l6ZSYg
Ym90dG9tUmlnaHQpCiAgICAgICAgICAgICA6IG1fdG9wTGVmdCh0b3BMZWZ0KQogICAgICAgICAg
ICAgLCBtX3RvcFJpZ2h0KHRvcFJpZ2h0KQogICAgICAgICAgICAgLCBtX2JvdHRvbUxlZnQoYm90
dG9tTGVmdCkKQEAgLTQ2LDE0ICs0OCwxNCBAQCBwdWJsaWM6CiAgICAgICAgIHsKICAgICAgICAg
fQogCi0gICAgICAgIHZvaWQgc2V0VG9wTGVmdChjb25zdCBJbnRTaXplJiBzaXplKSB7IG1fdG9w
TGVmdCA9IHNpemU7IH0KLSAgICAgICAgdm9pZCBzZXRUb3BSaWdodChjb25zdCBJbnRTaXplJiBz
aXplKSB7IG1fdG9wUmlnaHQgPSBzaXplOyB9Ci0gICAgICAgIHZvaWQgc2V0Qm90dG9tTGVmdChj
b25zdCBJbnRTaXplJiBzaXplKSB7IG1fYm90dG9tTGVmdCA9IHNpemU7IH0KLSAgICAgICAgdm9p
ZCBzZXRCb3R0b21SaWdodChjb25zdCBJbnRTaXplJiBzaXplKSB7IG1fYm90dG9tUmlnaHQgPSBz
aXplOyB9Ci0gICAgICAgIGNvbnN0IEludFNpemUmIHRvcExlZnQoKSBjb25zdCB7IHJldHVybiBt
X3RvcExlZnQ7IH0KLSAgICAgICAgY29uc3QgSW50U2l6ZSYgdG9wUmlnaHQoKSBjb25zdCB7IHJl
dHVybiBtX3RvcFJpZ2h0OyB9Ci0gICAgICAgIGNvbnN0IEludFNpemUmIGJvdHRvbUxlZnQoKSBj
b25zdCB7IHJldHVybiBtX2JvdHRvbUxlZnQ7IH0KLSAgICAgICAgY29uc3QgSW50U2l6ZSYgYm90
dG9tUmlnaHQoKSBjb25zdCB7IHJldHVybiBtX2JvdHRvbVJpZ2h0OyB9CisgICAgICAgIHZvaWQg
c2V0VG9wTGVmdChjb25zdCBMYXlvdXRTaXplJiBzaXplKSB7IG1fdG9wTGVmdCA9IHNpemU7IH0K
KyAgICAgICAgdm9pZCBzZXRUb3BSaWdodChjb25zdCBMYXlvdXRTaXplJiBzaXplKSB7IG1fdG9w
UmlnaHQgPSBzaXplOyB9CisgICAgICAgIHZvaWQgc2V0Qm90dG9tTGVmdChjb25zdCBMYXlvdXRT
aXplJiBzaXplKSB7IG1fYm90dG9tTGVmdCA9IHNpemU7IH0KKyAgICAgICAgdm9pZCBzZXRCb3R0
b21SaWdodChjb25zdCBMYXlvdXRTaXplJiBzaXplKSB7IG1fYm90dG9tUmlnaHQgPSBzaXplOyB9
CisgICAgICAgIGNvbnN0IExheW91dFNpemUmIHRvcExlZnQoKSBjb25zdCB7IHJldHVybiBtX3Rv
cExlZnQ7IH0KKyAgICAgICAgY29uc3QgTGF5b3V0U2l6ZSYgdG9wUmlnaHQoKSBjb25zdCB7IHJl
dHVybiBtX3RvcFJpZ2h0OyB9CisgICAgICAgIGNvbnN0IExheW91dFNpemUmIGJvdHRvbUxlZnQo
KSBjb25zdCB7IHJldHVybiBtX2JvdHRvbUxlZnQ7IH0KKyAgICAgICAgY29uc3QgTGF5b3V0U2l6
ZSYgYm90dG9tUmlnaHQoKSBjb25zdCB7IHJldHVybiBtX2JvdHRvbVJpZ2h0OyB9CiAKICAgICAg
ICAgYm9vbCBpc1plcm8oKSBjb25zdDsKIApAQCAtNjEsMzUgKzYzLDM1IEBAIHB1YmxpYzoKICAg
ICAgICAgdm9pZCBleGNsdWRlTG9naWNhbEVkZ2VzKGJvb2wgaXNIb3Jpem9udGFsLCBib29sIGV4
Y2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wgZXhjbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOwogCiAg
ICAgICAgIHZvaWQgc2NhbGUoZmxvYXQgZmFjdG9yKTsKLSAgICAgICAgdm9pZCBleHBhbmQoaW50
IHRvcFdpZHRoLCBpbnQgYm90dG9tV2lkdGgsIGludCBsZWZ0V2lkdGgsIGludCByaWdodFdpZHRo
KTsKLSAgICAgICAgdm9pZCBleHBhbmQoaW50IHNpemUpIHsgZXhwYW5kKHNpemUsIHNpemUsIHNp
emUsIHNpemUpOyB9Ci0gICAgICAgIHZvaWQgc2hyaW5rKGludCB0b3BXaWR0aCwgaW50IGJvdHRv
bVdpZHRoLCBpbnQgbGVmdFdpZHRoLCBpbnQgcmlnaHRXaWR0aCkgeyBleHBhbmQoLXRvcFdpZHRo
LCAtYm90dG9tV2lkdGgsIC1sZWZ0V2lkdGgsIC1yaWdodFdpZHRoKTsgfQotICAgICAgICB2b2lk
IHNocmluayhpbnQgc2l6ZSkgeyBzaHJpbmsoc2l6ZSwgc2l6ZSwgc2l6ZSwgc2l6ZSk7IH0KKyAg
ICAgICAgdm9pZCBleHBhbmQoY29uc3QgTGF5b3V0VW5pdCYgdG9wV2lkdGgsIGNvbnN0IExheW91
dFVuaXQmIGJvdHRvbVdpZHRoLCBjb25zdCBMYXlvdXRVbml0JiBsZWZ0V2lkdGgsIGNvbnN0IExh
eW91dFVuaXQmIHJpZ2h0V2lkdGgpOworICAgICAgICB2b2lkIGV4cGFuZChjb25zdCBMYXlvdXRV
bml0JiBzaXplKSB7IGV4cGFuZChzaXplLCBzaXplLCBzaXplLCBzaXplKTsgfQorICAgICAgICB2
b2lkIHNocmluayhjb25zdCBMYXlvdXRVbml0JiB0b3BXaWR0aCwgY29uc3QgTGF5b3V0VW5pdCYg
Ym90dG9tV2lkdGgsIGNvbnN0IExheW91dFVuaXQmIGxlZnRXaWR0aCwgY29uc3QgTGF5b3V0VW5p
dCYgcmlnaHRXaWR0aCkgeyBleHBhbmQoLXRvcFdpZHRoLCAtYm90dG9tV2lkdGgsIC1sZWZ0V2lk
dGgsIC1yaWdodFdpZHRoKTsgfQorICAgICAgICB2b2lkIHNocmluayhjb25zdCBMYXlvdXRVbml0
JiBzaXplKSB7IHNocmluayhzaXplLCBzaXplLCBzaXplLCBzaXplKTsgfQogCiAgICAgcHJpdmF0
ZToKLSAgICAgICAgSW50U2l6ZSBtX3RvcExlZnQ7Ci0gICAgICAgIEludFNpemUgbV90b3BSaWdo
dDsKLSAgICAgICAgSW50U2l6ZSBtX2JvdHRvbUxlZnQ7Ci0gICAgICAgIEludFNpemUgbV9ib3R0
b21SaWdodDsKKyAgICAgICAgTGF5b3V0U2l6ZSBtX3RvcExlZnQ7CisgICAgICAgIExheW91dFNp
emUgbV90b3BSaWdodDsKKyAgICAgICAgTGF5b3V0U2l6ZSBtX2JvdHRvbUxlZnQ7CisgICAgICAg
IExheW91dFNpemUgbV9ib3R0b21SaWdodDsKICAgICB9OwogCi0gICAgZXhwbGljaXQgUm91bmRl
ZFJlY3QoY29uc3QgSW50UmVjdCYsIGNvbnN0IFJhZGlpJiA9IFJhZGlpKCkpOwotICAgIFJvdW5k
ZWRSZWN0KGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKLSAgICBSb3VuZGVk
UmVjdChjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50U2l6ZSYgdG9wTGVmdCwgY29uc3QgSW50U2l6
ZSYgdG9wUmlnaHQsIGNvbnN0IEludFNpemUmIGJvdHRvbUxlZnQsIGNvbnN0IEludFNpemUmIGJv
dHRvbVJpZ2h0KTsKKyAgICBleHBsaWNpdCBSb3VuZGVkUmVjdChjb25zdCBMYXlvdXRSZWN0Jiwg
Y29uc3QgUmFkaWkmID0gUmFkaWkoKSk7CisgICAgUm91bmRlZFJlY3QoY29uc3QgTGF5b3V0VW5p
dCYsIGNvbnN0IExheW91dFVuaXQmLCBjb25zdCBMYXlvdXRVbml0JiB3aWR0aCwgY29uc3QgTGF5
b3V0VW5pdCYgaGVpZ2h0KTsKKyAgICBSb3VuZGVkUmVjdChjb25zdCBMYXlvdXRSZWN0JiwgY29u
c3QgTGF5b3V0U2l6ZSYgdG9wTGVmdCwgY29uc3QgTGF5b3V0U2l6ZSYgdG9wUmlnaHQsIGNvbnN0
IExheW91dFNpemUmIGJvdHRvbUxlZnQsIGNvbnN0IExheW91dFNpemUmIGJvdHRvbVJpZ2h0KTsK
IAotICAgIGNvbnN0IEludFJlY3QmIHJlY3QoKSBjb25zdCB7IHJldHVybiBtX3JlY3Q7IH0KKyAg
ICBjb25zdCBMYXlvdXRSZWN0JiByZWN0KCkgY29uc3QgeyByZXR1cm4gbV9yZWN0OyB9CiAgICAg
Y29uc3QgUmFkaWkmIHJhZGlpKCkgY29uc3QgeyByZXR1cm4gbV9yYWRpaTsgfQogICAgIGJvb2wg
aXNSb3VuZGVkKCkgY29uc3QgeyByZXR1cm4gIW1fcmFkaWkuaXNaZXJvKCk7IH0KICAgICBib29s
IGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX3JlY3QuaXNFbXB0eSgpOyB9CiAKLSAgICB2b2lk
IHNldFJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkgeyBtX3JlY3QgPSByZWN0OyB9CisgICAgdm9p
ZCBzZXRSZWN0KGNvbnN0IExheW91dFJlY3QmIHJlY3QpIHsgbV9yZWN0ID0gcmVjdDsgfQogICAg
IHZvaWQgc2V0UmFkaWkoY29uc3QgUmFkaWkmIHJhZGlpKSB7IG1fcmFkaWkgPSByYWRpaTsgfQog
Ci0gICAgdm9pZCBtb3ZlKGNvbnN0IEludFNpemUmIHNpemUpIHsgbV9yZWN0Lm1vdmUoc2l6ZSk7
IH0KLSAgICB2b2lkIGluZmxhdGUoaW50IHNpemUpIHsgbV9yZWN0LmluZmxhdGUoc2l6ZSk7ICB9
Ci0gICAgdm9pZCBpbmZsYXRlV2l0aFJhZGlpKGludCBzaXplKTsKLSAgICB2b2lkIGV4cGFuZFJh
ZGlpKGludCBzaXplKSB7IG1fcmFkaWkuZXhwYW5kKHNpemUpOyB9Ci0gICAgdm9pZCBzaHJpbmtS
YWRpaShpbnQgc2l6ZSkgeyBtX3JhZGlpLnNocmluayhzaXplKTsgfQorICAgIHZvaWQgbW92ZShj
b25zdCBMYXlvdXRTaXplJiBzaXplKSB7IG1fcmVjdC5tb3ZlKHNpemUpOyB9CisgICAgdm9pZCBp
bmZsYXRlKGNvbnN0IExheW91dFVuaXQmIHNpemUpIHsgbV9yZWN0LmluZmxhdGUoc2l6ZSk7ICB9
CisgICAgdm9pZCBpbmZsYXRlV2l0aFJhZGlpKGNvbnN0IExheW91dFVuaXQmIHNpemUpOworICAg
IHZvaWQgZXhwYW5kUmFkaWkoY29uc3QgTGF5b3V0VW5pdCYgc2l6ZSkgeyBtX3JhZGlpLmV4cGFu
ZChzaXplKTsgfQorICAgIHZvaWQgc2hyaW5rUmFkaWkoY29uc3QgTGF5b3V0VW5pdCYgc2l6ZSkg
eyBtX3JhZGlpLnNocmluayhzaXplKTsgfQogCiAgICAgdm9pZCBpbmNsdWRlTG9naWNhbEVkZ2Vz
KGNvbnN0IFJhZGlpJiBlZGdlcywgYm9vbCBpc0hvcml6b250YWwsIGJvb2wgaW5jbHVkZUxvZ2lj
YWxMZWZ0RWRnZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSk7CiAgICAgdm9pZCBleGNs
dWRlTG9naWNhbEVkZ2VzKGJvb2wgaXNIb3Jpem9udGFsLCBib29sIGV4Y2x1ZGVMb2dpY2FsTGVm
dEVkZ2UsIGJvb2wgZXhjbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOwpAQCAtMTAyLDcgKzEwNCw3IEBA
IHB1YmxpYzoKICAgICBib29sIGludGVyc2VjdHNRdWFkKGNvbnN0IEZsb2F0UXVhZCYpIGNvbnN0
OwogCiBwcml2YXRlOgotICAgIEludFJlY3QgbV9yZWN0OworICAgIExheW91dFJlY3QgbV9yZWN0
OwogICAgIFJhZGlpIG1fcmFkaWk7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCmluZGV4IDgyYjE4MGE0NmU3YTIzZGE2NTdjZjZlZTdm
MmEyYTIzOWZmNTljYjIuLmQ2NzUyMjhiYmJlYmQ5YWFkMmZjNzYyZGQ0ZjIzMjNjZTgyYWUwODEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3Bw
CkBAIC04Myw3ICs4Myw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1faW1hZ2VCdWZmZXIu
Z2V0KCk7CiAgICAgfQogCi0gICAgYm9vbCBzZXRDYWNoZWRTaGFkb3dWYWx1ZXMoY29uc3QgRmxv
YXRTaXplJiByYWRpdXMsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTcGFjZSBjb2xvclNwYWNl
LCBjb25zdCBGbG9hdFJlY3QmIHNoYWRvd1JlY3QsIGNvbnN0IFJvdW5kZWRSZWN0OjpSYWRpaSYg
cmFkaWksIGNvbnN0IEZsb2F0U2l6ZSYgbGF5ZXJTaXplKQorICAgIGJvb2wgc2V0Q2FjaGVkU2hh
ZG93VmFsdWVzKGNvbnN0IEZsb2F0U2l6ZSYgcmFkaXVzLCBjb25zdCBDb2xvciYgY29sb3IsIENv
bG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBzaGFkb3dSZWN0LCBjb25zdCBG
bG9hdFJvdW5kZWRSZWN0OjpSYWRpaSYgcmFkaWksIGNvbnN0IEZsb2F0U2l6ZSYgbGF5ZXJTaXpl
KQogICAgIHsKICAgICAgICAgaWYgKCFtX2xhc3RXYXNJbnNldCAmJiBtX2xhc3RSYWRpdXMgPT0g
cmFkaXVzICYmIG1fbGFzdENvbG9yID09IGNvbG9yICYmIG1fbGFzdENvbG9yU3BhY2UgPT0gY29s
b3JTcGFjZSAmJiBtX2xhc3RTaGFkb3dSZWN0ID09IHNoYWRvd1JlY3QgJiYgIG1fbGFzdFJhZGlp
ID09IHJhZGlpICYmIG1fbGFzdExheWVyU2l6ZSA9PSBsYXllclNpemUpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CkBAIC05OSw3ICs5OSw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQogCi0gICAgYm9vbCBzZXRDYWNoZWRJbnNldFNoYWRvd1ZhbHVlcyhjb25zdCBG
bG9hdFNpemUmIHJhZGl1cywgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3Bh
Y2UsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRzLCBjb25zdCBGbG9hdFJlY3QmIHNoYWRvd1JlY3Qs
IGNvbnN0IFJvdW5kZWRSZWN0OjpSYWRpaSYgcmFkaWkpCisgICAgYm9vbCBzZXRDYWNoZWRJbnNl
dFNoYWRvd1ZhbHVlcyhjb25zdCBGbG9hdFNpemUmIHJhZGl1cywgY29uc3QgQ29sb3ImIGNvbG9y
LCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRzLCBjb25zdCBG
bG9hdFJlY3QmIHNoYWRvd1JlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpJiByYWRp
aSkKICAgICB7CiAgICAgICAgIGlmIChtX2xhc3RXYXNJbnNldCAmJiBtX2xhc3RSYWRpdXMgPT0g
cmFkaXVzICYmIG1fbGFzdENvbG9yID09IGNvbG9yICYmIG1fbGFzdENvbG9yU3BhY2UgPT0gY29s
b3JTcGFjZSAmJiBtX2xhc3RJbnNldEJvdW5kcyA9PSBib3VuZHMgJiYgc2hhZG93UmVjdCA9PSBt
X2xhc3RTaGFkb3dSZWN0ICYmIHJhZGlpID09IG1fbGFzdFJhZGlpKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwpAQCAtMTQ3LDcgKzE0Nyw3IEBAIHByaXZhdGU6CiAgICAgCiAgICAgRmxvYXRS
ZWN0IG1fbGFzdEluc2V0Qm91bmRzOwogICAgIEZsb2F0UmVjdCBtX2xhc3RTaGFkb3dSZWN0Owot
ICAgIFJvdW5kZWRSZWN0OjpSYWRpaSBtX2xhc3RSYWRpaTsKKyAgICBGbG9hdFJvdW5kZWRSZWN0
OjpSYWRpaSBtX2xhc3RSYWRpaTsKICAgICBDb2xvciBtX2xhc3RDb2xvcjsKICAgICBDb2xvclNw
YWNlIG1fbGFzdENvbG9yU3BhY2U7CiAgICAgRmxvYXRTaXplIG1fbGFzdFJhZGl1czsKQEAgLTQ4
Miw3ICs0ODIsNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdTaGFkb3dCdWZmZXIoR3JhcGhpY3ND
b250ZXh0KiBncmFwaGljc0NvbnRleHQpCiAgICAgZ3JhcGhpY3NDb250ZXh0LT5maWxsUmVjdChG
bG9hdFJlY3QobV9sYXllck9yaWdpbiwgbV9zb3VyY2VSZWN0LnNpemUoKSkpOwogfQogCi1zdGF0
aWMgdm9pZCBjb21wdXRlU2xpY2VTaXplc0Zyb21SYWRpaShjb25zdCBJbnRTaXplJiB0d2ljZVJh
ZGl1cywgY29uc3QgUm91bmRlZFJlY3Q6OlJhZGlpJiByYWRpaSwgaW50JiBsZWZ0U2xpY2UsIGlu
dCYgcmlnaHRTbGljZSwgaW50JiB0b3BTbGljZSwgaW50JiBib3R0b21TbGljZSkKK3N0YXRpYyB2
b2lkIGNvbXB1dGVTbGljZVNpemVzRnJvbVJhZGlpKGNvbnN0IEludFNpemUmIHR3aWNlUmFkaXVz
LCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSYgcmFkaWksIGludCYgbGVmdFNsaWNlLCBp
bnQmIHJpZ2h0U2xpY2UsIGludCYgdG9wU2xpY2UsIGludCYgYm90dG9tU2xpY2UpCiB7CiAgICAg
bGVmdFNsaWNlID0gdHdpY2VSYWRpdXMud2lkdGgoKSArIHN0ZDo6bWF4KHJhZGlpLnRvcExlZnQo
KS53aWR0aCgpLCByYWRpaS5ib3R0b21MZWZ0KCkud2lkdGgoKSk7CiAgICAgcmlnaHRTbGljZSA9
IHR3aWNlUmFkaXVzLndpZHRoKCkgKyBzdGQ6Om1heChyYWRpaS50b3BSaWdodCgpLndpZHRoKCks
IHJhZGlpLmJvdHRvbVJpZ2h0KCkud2lkdGgoKSk7CkBAIC00OTEsNyArNDkxLDcgQEAgc3RhdGlj
IHZvaWQgY29tcHV0ZVNsaWNlU2l6ZXNGcm9tUmFkaWkoY29uc3QgSW50U2l6ZSYgdHdpY2VSYWRp
dXMsIGNvbnN0IFJvdW5kZWQKICAgICBib3R0b21TbGljZSA9IHR3aWNlUmFkaXVzLmhlaWdodCgp
ICsgc3RkOjptYXgocmFkaWkuYm90dG9tTGVmdCgpLmhlaWdodCgpLCByYWRpaS5ib3R0b21SaWdo
dCgpLmhlaWdodCgpKTsKIH0KIAotSW50U2l6ZSBTaGFkb3dCbHVyOjp0ZW1wbGF0ZVNpemUoY29u
c3QgSW50U2l6ZSYgcmFkaXVzUGFkZGluZywgY29uc3QgUm91bmRlZFJlY3Q6OlJhZGlpJiByYWRp
aSkgY29uc3QKK0ludFNpemUgU2hhZG93Qmx1cjo6dGVtcGxhdGVTaXplKGNvbnN0IEludFNpemUm
IHJhZGl1c1BhZGRpbmcsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpJiByYWRpaSkgY29u
c3QKIHsKICAgICBjb25zdCBpbnQgdGVtcGxhdGVTaWRlTGVuZ3RoID0gMTsKIApAQCAtNTA5LDcg
KzUwOSw3IEBAIEludFNpemUgU2hhZG93Qmx1cjo6dGVtcGxhdGVTaXplKGNvbnN0IEludFNpemUm
IHJhZGl1c1BhZGRpbmcsIGNvbnN0IFJvdW5kZWRSZWN0CiAgICAgICAgICAgICAgICAgICAgdGVt
cGxhdGVTaWRlTGVuZ3RoICsgdG9wU2xpY2UgKyBib3R0b21TbGljZSk7CiB9CiAKLXZvaWQgU2hh
ZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3coR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQs
IGNvbnN0IEZsb2F0UmVjdCYgc2hhZG93ZWRSZWN0LCBjb25zdCBSb3VuZGVkUmVjdDo6UmFkaWkm
IHJhZGlpKQordm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvdyhHcmFwaGljc0NvbnRleHQq
IGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBzaGFkb3dlZFJlY3QsIGNvbnN0IEZs
b2F0Um91bmRlZFJlY3Q6OlJhZGlpJiByYWRpaSkKIHsKICAgICBJbnRSZWN0IGxheWVyUmVjdCA9
IGNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0KGdyYXBoaWNzQ29udGV4dCwgc2hhZG93ZWRSZWN0
LCBncmFwaGljc0NvbnRleHQtPmNsaXBCb3VuZHMoKSk7CiAgICAgaWYgKGxheWVyUmVjdC5pc0Vt
cHR5KCkpCkBAIC01MzYsNyArNTM2LDcgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRv
dyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRSZWMKICAgICBk
cmF3UmVjdFNoYWRvd1dpdGhUaWxpbmcoZ3JhcGhpY3NDb250ZXh0LCBzaGFkb3dlZFJlY3QsIHJh
ZGlpLCB0ZW1wbGF0ZVNpemUsIGVkZ2VTaXplKTsKIH0KIAotdm9pZCBTaGFkb3dCbHVyOjpkcmF3
SW5zZXRTaGFkb3coR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRSZWN0JiBob2xlUmVjdCwgY29uc3QgUm91bmRlZFJlY3Q6
OlJhZGlpJiBob2xlUmFkaWkpCit2b2lkIFNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvdyhHcmFw
aGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25z
dCBGbG9hdFJlY3QmIGhvbGVSZWN0LCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSYgaG9s
ZVJhZGlpKQogewogICAgIEludFJlY3QgbGF5ZXJSZWN0ID0gY2FsY3VsYXRlTGF5ZXJCb3VuZGlu
Z1JlY3QoZ3JhcGhpY3NDb250ZXh0LCByZWN0LCBncmFwaGljc0NvbnRleHQtPmNsaXBCb3VuZHMo
KSk7CiAgICAgaWYgKGxheWVyUmVjdC5pc0VtcHR5KCkpCkBAIC01NjMsNyArNTYzLDcgQEAgdm9p
ZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3coR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0Nv
bnRleHQsIGNvbnN0IEZsb2F0UmUKICAgICBkcmF3SW5zZXRTaGFkb3dXaXRoVGlsaW5nKGdyYXBo
aWNzQ29udGV4dCwgcmVjdCwgaG9sZVJlY3QsIGhvbGVSYWRpaSwgdGVtcGxhdGVTaXplLCBlZGdl
U2l6ZSk7CiB9CiAKLXZvaWQgU2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3dXaXRob3V0VGlsaW5n
KEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHNoYWRv
d2VkUmVjdCwgY29uc3QgUm91bmRlZFJlY3Q6OlJhZGlpJiByYWRpaSwgY29uc3QgSW50UmVjdCYg
bGF5ZXJSZWN0KQordm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvd1dpdGhvdXRUaWxpbmco
R3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgc2hhZG93
ZWRSZWN0LCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSYgcmFkaWksIGNvbnN0IEludFJl
Y3QmIGxheWVyUmVjdCkKIHsKICAgICBtX2xheWVySW1hZ2UgPSBTY3JhdGNoQnVmZmVyOjpzaGFy
ZWQoKS5nZXRTY3JhdGNoQnVmZmVyKGxheWVyUmVjdC5zaXplKCkpOwogICAgIGlmICghbV9sYXll
ckltYWdlKQpAQCAtNTk4LDcgKzU5OCw3IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFk
b3dXaXRob3V0VGlsaW5nKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjCiAgICAg
U2NyYXRjaEJ1ZmZlcjo6c2hhcmVkKCkuc2NoZWR1bGVTY3JhdGNoQnVmZmVyUHVyZ2UoKTsKIH0K
IAotdm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRob3V0VGlsaW5nKEdyYXBoaWNz
Q29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgaG9sZVJlY3QsIGNvbnN0IFJvdW5kZWRSZWN0OjpSYWRpaSYgaG9sZVJhZGlpLCBj
b25zdCBJbnRSZWN0JiBsYXllclJlY3QpCit2b2lkIFNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRv
d1dpdGhvdXRUaWxpbmcoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZs
b2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRSZWN0JiBob2xlUmVjdCwgY29uc3QgRmxvYXRSb3Vu
ZGVkUmVjdDo6UmFkaWkmIGhvbGVSYWRpaSwgY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0KQogewog
ICAgIG1fbGF5ZXJJbWFnZSA9IFNjcmF0Y2hCdWZmZXI6OnNoYXJlZCgpLmdldFNjcmF0Y2hCdWZm
ZXIobGF5ZXJSZWN0LnNpemUoKSk7CiAgICAgaWYgKCFtX2xheWVySW1hZ2UpCkBAIC02NzEsNyAr
NjcxLDcgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRob3V0VGlsaW5nKEdy
YXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LAogICAgICB0aGUgc2hhZG93LgogICovCiAK
LXZvaWQgU2hhZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93V2l0aFRpbGluZyhHcmFwaGljc0NvbnRl
eHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIGhvbGVSZWN0LCBjb25zdCBSb3VuZGVkUmVjdDo6UmFkaWkmIHJhZGlpLCBjb25zdCBJbnRT
aXplJiB0ZW1wbGF0ZVNpemUsIGNvbnN0IEludFNpemUmIGVkZ2VTaXplKQordm9pZCBTaGFkb3dC
bHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRoVGlsaW5nKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3ND
b250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgaG9sZVJlY3Qs
IGNvbnN0IEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpJiByYWRpaSwgY29uc3QgSW50U2l6ZSYgdGVt
cGxhdGVTaXplLCBjb25zdCBJbnRTaXplJiBlZGdlU2l6ZSkKIHsKICAgICBtX2xheWVySW1hZ2Ug
PSBTY3JhdGNoQnVmZmVyOjpzaGFyZWQoKS5nZXRTY3JhdGNoQnVmZmVyKHRlbXBsYXRlU2l6ZSk7
CiAgICAgaWYgKCFtX2xheWVySW1hZ2UpCkBAIC03MzYsNyArNzM2LDcgQEAgdm9pZCBTaGFkb3dC
bHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRoVGlsaW5nKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3ND
b250ZXh0LCBjb24KICAgICBTY3JhdGNoQnVmZmVyOjpzaGFyZWQoKS5zY2hlZHVsZVNjcmF0Y2hC
dWZmZXJQdXJnZSgpOwogfQogCi12b2lkIFNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0aFRp
bGluZyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBz
aGFkb3dlZFJlY3QsIGNvbnN0IFJvdW5kZWRSZWN0OjpSYWRpaSYgcmFkaWksIGNvbnN0IEludFNp
emUmIHRlbXBsYXRlU2l6ZSwgY29uc3QgSW50U2l6ZSYgZWRnZVNpemUpCit2b2lkIFNoYWRvd0Js
dXI6OmRyYXdSZWN0U2hhZG93V2l0aFRpbGluZyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29u
dGV4dCwgY29uc3QgRmxvYXRSZWN0JiBzaGFkb3dlZFJlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJl
Y3Q6OlJhZGlpJiByYWRpaSwgY29uc3QgSW50U2l6ZSYgdGVtcGxhdGVTaXplLCBjb25zdCBJbnRT
aXplJiBlZGdlU2l6ZSkKIHsKICAgICBtX2xheWVySW1hZ2UgPSBTY3JhdGNoQnVmZmVyOjpzaGFy
ZWQoKS5nZXRTY3JhdGNoQnVmZmVyKHRlbXBsYXRlU2l6ZSk7CiAgICAgaWYgKCFtX2xheWVySW1h
Z2UpCkBAIC03ODEsNyArNzgxLDcgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvd1dp
dGhUaWxpbmcoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnMKICAgICBTY3Jh
dGNoQnVmZmVyOjpzaGFyZWQoKS5zY2hlZHVsZVNjcmF0Y2hCdWZmZXJQdXJnZSgpOwogfQogCi12
b2lkIFNoYWRvd0JsdXI6OmRyYXdMYXllclBpZWNlcyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNz
Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBzaGFkb3dCb3VuZHMsIGNvbnN0IFJvdW5kZWRSZWN0
OjpSYWRpaSYgcmFkaWksIGNvbnN0IEludFNpemUmIGJ1ZmZlclBhZGRpbmcsIGNvbnN0IEludFNp
emUmIHRlbXBsYXRlU2l6ZSwgU2hhZG93RGlyZWN0aW9uIGRpcmVjdGlvbikKK3ZvaWQgU2hhZG93
Qmx1cjo6ZHJhd0xheWVyUGllY2VzKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBj
b25zdCBGbG9hdFJlY3QmIHNoYWRvd0JvdW5kcywgY29uc3QgRmxvYXRSb3VuZGVkUmVjdDo6UmFk
aWkmIHJhZGlpLCBjb25zdCBJbnRTaXplJiBidWZmZXJQYWRkaW5nLCBjb25zdCBJbnRTaXplJiB0
ZW1wbGF0ZVNpemUsIFNoYWRvd0RpcmVjdGlvbiBkaXJlY3Rpb24pCiB7CiAgICAgY29uc3QgSW50
U2l6ZSB0d2ljZVJhZGl1cyA9IEludFNpemUoYnVmZmVyUGFkZGluZy53aWR0aCgpICogMiwgYnVm
ZmVyUGFkZGluZy5oZWlnaHQoKSAqIDIpOwogCkBAIC04OTMsNyArODkzLDcgQEAgR3JhcGhpY3ND
b250ZXh0KiBTaGFkb3dCbHVyOjpiZWdpblNoYWRvd0xheWVyKEdyYXBoaWNzQ29udGV4dCAqY29u
dGV4dCwgY29uc3QgRmwKIAogICAgIC8vIFdlIHJlc2V0IHRoZSBzY3JhdGNoIGJ1ZmZlciB2YWx1
ZXMgaGVyZSwgYmVjYXVzZSB0aGUgYnVmZmVyIHdpbGwgbm8gbG9uZ2VyIGNvbnRhaW4KICAgICAv
LyBkYXRhIGZyb20gYW55IHByZXZpb3VzIHJlY3RhbmdsZSBvciBpbnNldCBzaGFkb3dzIGRyYXdu
IHZpYSB0aGUgdGlsaW5nIHBhdGguCi0gICAgU2NyYXRjaEJ1ZmZlcjo6c2hhcmVkKCkuc2V0Q2Fj
aGVkU2hhZG93VmFsdWVzKEZsb2F0U2l6ZSgpLCBDb2xvcjo6YmxhY2ssIENvbG9yU3BhY2VEZXZp
Y2VSR0IsIEludFJlY3QoKSwgUm91bmRlZFJlY3Q6OlJhZGlpKCksIG1fbGF5ZXJTaXplKTsKKyAg
ICBTY3JhdGNoQnVmZmVyOjpzaGFyZWQoKS5zZXRDYWNoZWRTaGFkb3dWYWx1ZXMoRmxvYXRTaXpl
KCksIENvbG9yOjpibGFjaywgQ29sb3JTcGFjZURldmljZVJHQiwgSW50UmVjdCgpLCBGbG9hdFJv
dW5kZWRSZWN0OjpSYWRpaSgpLCBtX2xheWVyU2l6ZSk7CiAgICAgbV9sYXllckltYWdlID0gU2Ny
YXRjaEJ1ZmZlcjo6c2hhcmVkKCkuZ2V0U2NyYXRjaEJ1ZmZlcihsYXllclJlY3Quc2l6ZSgpKTsK
IAogICAgIEdyYXBoaWNzQ29udGV4dCogc2hhZG93Q29udGV4dCA9IG1fbGF5ZXJJbWFnZS0+Y29u
dGV4dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hh
ZG93Qmx1ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5o
CmluZGV4IDMyZmY2MGI2Y2IwM2IyMmI5NjhjOGU3ODY3ZDgzYTZmYWY5MjA0MTcuLjk1OWUxN2U4
OWI2OGMyODAyMDMyZTVhOWMxZjk0OTQ5MGYwYjdjNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmgKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRl
ICJDb2xvci5oIgogI2luY2x1ZGUgIkNvbG9yU3BhY2UuaCIKICNpbmNsdWRlICJGbG9hdFJlY3Qu
aCIKLSNpbmNsdWRlICJSb3VuZGVkUmVjdC5oIgorI2luY2x1ZGUgIkZsb2F0Um91bmRlZFJlY3Qu
aCIKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpA
QCAtNjMsOCArNjMsOCBAQCBwdWJsaWM6CiAgICAgR3JhcGhpY3NDb250ZXh0KiBiZWdpblNoYWRv
d0xheWVyKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgbGF5ZXJBcmVhKTsKICAg
ICB2b2lkIGVuZFNoYWRvd0xheWVyKEdyYXBoaWNzQ29udGV4dCopOwogCi0gICAgdm9pZCBkcmF3
UmVjdFNoYWRvdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBSb3Vu
ZGVkUmVjdDo6UmFkaWkmKTsKLSAgICB2b2lkIGRyYXdJbnNldFNoYWRvdyhHcmFwaGljc0NvbnRl
eHQqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmIGhvbGVSZWN0LCBjb25zdCBS
b3VuZGVkUmVjdDo6UmFkaWkmIGhvbGVSYWRpaSk7CisgICAgdm9pZCBkcmF3UmVjdFNoYWRvdyhH
cmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0
OjpSYWRpaSYpOworICAgIHZvaWQgZHJhd0luc2V0U2hhZG93KEdyYXBoaWNzQ29udGV4dCosIGNv
bnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYgaG9sZVJlY3QsIGNvbnN0IEZsb2F0Um91
bmRlZFJlY3Q6OlJhZGlpJiBob2xlUmFkaWkpOwogCiAgICAgdm9pZCBibHVyTGF5ZXJJbWFnZSh1
bnNpZ25lZCBjaGFyKiwgY29uc3QgSW50U2l6ZSYsIGludCBzdHJpZGUpOwogCkBAIC04NSwxNSAr
ODUsMTUgQEAgcHJpdmF0ZToKICAgICB9OwogICAgIAogICAgIEludFJlY3QgY2FsY3VsYXRlTGF5
ZXJCb3VuZGluZ1JlY3QoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBsYXllckFy
ZWEsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KTsKLSAgICBJbnRTaXplIHRlbXBsYXRlU2l6ZShj
b25zdCBJbnRTaXplJiBibHVycmVkRWRnZVNpemUsIGNvbnN0IFJvdW5kZWRSZWN0OjpSYWRpaSYp
IGNvbnN0OworICAgIEludFNpemUgdGVtcGxhdGVTaXplKGNvbnN0IEludFNpemUmIGJsdXJyZWRF
ZGdlU2l6ZSwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkmKSBjb25zdDsKIAotICAgIHZv
aWQgZHJhd1JlY3RTaGFkb3dXaXRob3V0VGlsaW5nKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZs
b2F0UmVjdCYsIGNvbnN0IFJvdW5kZWRSZWN0OjpSYWRpaSYsIGNvbnN0IEludFJlY3QmIGxheWVy
UmVjdCk7Ci0gICAgdm9pZCBkcmF3UmVjdFNoYWRvd1dpdGhUaWxpbmcoR3JhcGhpY3NDb250ZXh0
KiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgUm91bmRlZFJlY3Q6OlJhZGlpJiwgY29uc3QgSW50
U2l6ZSYgc2hhZG93VGVtcGxhdGVTaXplLCBjb25zdCBJbnRTaXplJiBibHVycmVkRWRnZVNpemUp
OworICAgIHZvaWQgZHJhd1JlY3RTaGFkb3dXaXRob3V0VGlsaW5nKEdyYXBoaWNzQ29udGV4dCos
IGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpJiwgY29uc3Qg
SW50UmVjdCYgbGF5ZXJSZWN0KTsKKyAgICB2b2lkIGRyYXdSZWN0U2hhZG93V2l0aFRpbGluZyhH
cmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0
OjpSYWRpaSYsIGNvbnN0IEludFNpemUmIHNoYWRvd1RlbXBsYXRlU2l6ZSwgY29uc3QgSW50U2l6
ZSYgYmx1cnJlZEVkZ2VTaXplKTsKIAotICAgIHZvaWQgZHJhd0luc2V0U2hhZG93V2l0aG91dFRp
bGluZyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3Qm
IGhvbGVSZWN0LCBjb25zdCBSb3VuZGVkUmVjdDo6UmFkaWkmLCBjb25zdCBJbnRSZWN0JiBsYXll
clJlY3QpOwotICAgIHZvaWQgZHJhd0luc2V0U2hhZG93V2l0aFRpbGluZyhHcmFwaGljc0NvbnRl
eHQqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmIGhvbGVSZWN0LCBjb25zdCBS
b3VuZGVkUmVjdDo6UmFkaWkmLCBjb25zdCBJbnRTaXplJiBzaGFkb3dUZW1wbGF0ZVNpemUsIGNv
bnN0IEludFNpemUmIGJsdXJyZWRFZGdlU2l6ZSk7CisgICAgdm9pZCBkcmF3SW5zZXRTaGFkb3dX
aXRob3V0VGlsaW5nKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZs
b2F0UmVjdCYgaG9sZVJlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpJiwgY29uc3Qg
SW50UmVjdCYgbGF5ZXJSZWN0KTsKKyAgICB2b2lkIGRyYXdJbnNldFNoYWRvd1dpdGhUaWxpbmco
R3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiBob2xl
UmVjdCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkmLCBjb25zdCBJbnRTaXplJiBzaGFk
b3dUZW1wbGF0ZVNpemUsIGNvbnN0IEludFNpemUmIGJsdXJyZWRFZGdlU2l6ZSk7CiAgICAgCi0g
ICAgdm9pZCBkcmF3TGF5ZXJQaWVjZXMoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0
JiBzaGFkb3dCb3VuZHMsIGNvbnN0IFJvdW5kZWRSZWN0OjpSYWRpaSYsIGNvbnN0IEludFNpemUm
IHJvdW5kZWRSYWRpdXMsIGNvbnN0IEludFNpemUmIHRlbXBsYXRlU2l6ZSwgU2hhZG93RGlyZWN0
aW9uKTsKKyAgICB2b2lkIGRyYXdMYXllclBpZWNlcyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBG
bG9hdFJlY3QmIHNoYWRvd0JvdW5kcywgY29uc3QgRmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkmLCBj
b25zdCBJbnRTaXplJiByb3VuZGVkUmFkaXVzLCBjb25zdCBJbnRTaXplJiB0ZW1wbGF0ZVNpemUs
IFNoYWRvd0RpcmVjdGlvbik7CiAgICAgCiAgICAgdm9pZCBibHVyU2hhZG93QnVmZmVyKGNvbnN0
IEludFNpemUmIHRlbXBsYXRlU2l6ZSk7CiAgICAgdm9pZCBibHVyQW5kQ29sb3JTaGFkb3dCdWZm
ZXIoY29uc3QgSW50U2l6ZSYgdGVtcGxhdGVTaXplKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJv
LmNwcAppbmRleCAwZmE3NTAzOTY5ZDUyZWQ0M2Y0NDJkZGIyOTcxNDJjN2U0MjI3ZWQ5Li45ZmZj
MjkxNWE3Y2Y4OTRmNWYwZTgwZTE5YTljZTU3YjU5M2EyMmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250
ZXh0Q2Fpcm8uY3BwCkBAIC0xMDEyLDcgKzEwMTIsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
c2NhbGUoY29uc3QgRmxvYXRTaXplJiBzaXplKQogICAgIG1fZGF0YS0+c2NhbGUoc2l6ZSk7CiB9
CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwT3V0KGNvbnN0IEludFJlY3QmIHIpCit2b2lk
IEdyYXBoaWNzQ29udGV4dDo6Y2xpcE91dChjb25zdCBGbG9hdFJlY3QmIHIpCiB7CiAgICAgaWYg
KHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTAyOCwxMyArMTAyOCwx
MyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcE91dChjb25zdCBJbnRSZWN0JiByKQogICAg
IGNhaXJvX3NldF9maWxsX3J1bGUoY3IsIHNhdmVkRmlsbFJ1bGUpOwogfQogCi12b2lkIEdyYXBo
aWNzQ29udGV4dDo6ZmlsbFJvdW5kZWRSZWN0KGNvbnN0IEludFJlY3QmIHIsIGNvbnN0IEludFNp
emUmIHRvcExlZnQsIGNvbnN0IEludFNpemUmIHRvcFJpZ2h0LCBjb25zdCBJbnRTaXplJiBib3R0
b21MZWZ0LCBjb25zdCBJbnRTaXplJiBib3R0b21SaWdodCwgY29uc3QgQ29sb3ImIGNvbG9yLCBD
b2xvclNwYWNlKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSb3VuZGVkUmVjdChjb25zdCBG
bG9hdFJlY3QmIHIsIGNvbnN0IEZsb2F0U2l6ZSYgdG9wTGVmdCwgY29uc3QgRmxvYXRTaXplJiB0
b3BSaWdodCwgY29uc3QgRmxvYXRTaXplJiBib3R0b21MZWZ0LCBjb25zdCBGbG9hdFNpemUmIGJv
dHRvbVJpZ2h0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UpCiB7CiAgICAgaWYgKHBh
aW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGhhc1NoYWRvdygp
KQotICAgICAgICBwbGF0Zm9ybUNvbnRleHQoKS0+c2hhZG93Qmx1cigpLmRyYXdSZWN0U2hhZG93
KHRoaXMsIHIsIFJvdW5kZWRSZWN0OjpSYWRpaSh0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVm
dCwgYm90dG9tUmlnaHQpKTsKKyAgICAgICAgcGxhdGZvcm1Db250ZXh0KCktPnNoYWRvd0JsdXIo
KS5kcmF3UmVjdFNoYWRvdyh0aGlzLCByLCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSh0b3BMZWZ0
LCB0b3BSaWdodCwgYm90dG9tTGVmdCwgYm90dG9tUmlnaHQpKTsKIAogICAgIGNhaXJvX3QqIGNy
ID0gcGxhdGZvcm1Db250ZXh0KCktPmNyKCk7CiAgICAgY2Fpcm9fc2F2ZShjcik7CkBAIC0xMDQ2
LDcgKzEwNDYsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJvdW5kZWRSZWN0KGNvbnN0
IEludFJlY3QmIHIsIGNvbnN0IEludFNpemUmIHRvcExlZnQsCiAgICAgY2Fpcm9fcmVzdG9yZShj
cik7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdFdpdGhSb3VuZGVkSG9sZShj
b25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBSb3VuZGVkUmVjdCYgcm91bmRlZEhvbGVSZWN0LCBj
b25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6Zmls
bFJlY3RXaXRoUm91bmRlZEhvbGUoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBSb3VuZGVk
UmVjdCYgcm91bmRlZEhvbGVSZWN0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UpCiB7
CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSB8fCAhY29sb3IuaXNWYWxpZCgpKQogICAgICAg
ICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9HcmFwaGljc0NvbnRleHRDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKaW5kZXggYjg1Nzg5OTcyZWEwYjhkMmRkOWYzZDhl
MTZjZjZkMTEwMDk2N2I3OC4uN2YwNmJmYWVlN2U1YmZiMDMyODY4YzU1ZTU4NjgzNjRjYzQ1NmFl
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhp
Y3NDb250ZXh0Q0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0dyYXBoaWNzQ29udGV4dENHLmNwcApAQCAtODQ2LDcgKzg0Niw3IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0OjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IENvbG9yJiBjb2xv
ciwgQ29sb3JTCiAgICAgICAgIHNldENHRmlsbENvbG9yKGNvbnRleHQsIG9sZEZpbGxDb2xvciwg
b2xkQ29sb3JTcGFjZSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUm91bmRlZFJl
Y3QoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW50U2l6ZSYgdG9wTGVmdCwgY29uc3QgSW50
U2l6ZSYgdG9wUmlnaHQsIGNvbnN0IEludFNpemUmIGJvdHRvbUxlZnQsIGNvbnN0IEludFNpemUm
IGJvdHRvbVJpZ2h0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSZWN0JiBy
ZWN0LCBjb25zdCBGbG9hdFNpemUmIHRvcExlZnQsIGNvbnN0IEZsb2F0U2l6ZSYgdG9wUmlnaHQs
IGNvbnN0IEZsb2F0U2l6ZSYgYm90dG9tTGVmdCwgY29uc3QgRmxvYXRTaXplJiBib3R0b21SaWdo
dCwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCiB7CiAgICAgaWYg
KHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtODY1LDcgKzg2NSw3IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUm91bmRlZFJlY3QoY29uc3QgSW50UmVjdCYgcmVj
dCwgY29uc3QgSW50U2l6ZSYgdG9wTGVmCiAgICAgICAgIENHQ29udGV4dFNldFNoYWRvd1dpdGhD
b2xvcihwbGF0Zm9ybUNvbnRleHQoKSwgQ0dTaXplWmVybywgMCwgMCk7CiAKICAgICAgICAgU2hh
ZG93Qmx1ciBjb250ZXh0U2hhZG93KG1fc3RhdGUpOwotICAgICAgICBjb250ZXh0U2hhZG93LmRy
YXdSZWN0U2hhZG93KHRoaXMsIHJlY3QsIFJvdW5kZWRSZWN0OjpSYWRpaSh0b3BMZWZ0LCB0b3BS
aWdodCwgYm90dG9tTGVmdCwgYm90dG9tUmlnaHQpKTsKKyAgICAgICAgY29udGV4dFNoYWRvdy5k
cmF3UmVjdFNoYWRvdyh0aGlzLCByZWN0LCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSh0b3BMZWZ0
LCB0b3BSaWdodCwgYm90dG9tTGVmdCwgYm90dG9tUmlnaHQpKTsKICAgICB9CiAKICAgICBib29s
IGVxdWFsV2lkdGhzID0gKHRvcExlZnQud2lkdGgoKSA9PSB0b3BSaWdodC53aWR0aCgpICYmIHRv
cFJpZ2h0LndpZHRoKCkgPT0gYm90dG9tTGVmdC53aWR0aCgpICYmIGJvdHRvbUxlZnQud2lkdGgo
KSA9PSBib3R0b21SaWdodC53aWR0aCgpKTsKQEAgLTg4Niw3ICs4ODYsNyBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDo6ZmlsbFJvdW5kZWRSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IElu
dFNpemUmIHRvcExlZgogICAgICAgICBzZXRDR0ZpbGxDb2xvcihjb250ZXh0LCBvbGRGaWxsQ29s
b3IsIG9sZENvbG9yU3BhY2UpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3RX
aXRoUm91bmRlZEhvbGUoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgUm91bmRlZFJlY3QmIHJv
dW5kZWRIb2xlUmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2Up
Cit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUoY29uc3QgRmxv
YXRSZWN0JiByZWN0LCBjb25zdCBSb3VuZGVkUmVjdCYgcm91bmRlZEhvbGVSZWN0LCBjb25zdCBD
b2xvciYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKIHsKICAgICBpZiAocGFpbnRpbmdE
aXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CkBAIC05MzYsNyArOTM2LDcgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQ6OmNsaXAoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogICAgIG1fZGF0YS0+Y2xp
cChyZWN0KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBPdXQoY29uc3QgSW50UmVj
dCYgcmVjdCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwT3V0KGNvbnN0IEZsb2F0UmVjdCYg
cmVjdCkKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9HcmFwaGlj
c0NvbnRleHRXaW5DRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5j
ZS9HcmFwaGljc0NvbnRleHRXaW5DRS5jcHAKaW5kZXggMzc2YmM3M2MwNzBhMWUwMTE5NGVjM2Fj
ODgzYWYzM2Y2MTkxNDU0OS4uNzYzZTI2ZTM1MTEwYTRiOTZiMTA3MmEyOTBjODI1YjIxNTFkMzE2
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvR3Jh
cGhpY3NDb250ZXh0V2luQ0UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbmNlL0dyYXBoaWNzQ29udGV4dFdpbkNFLmNwcApAQCAtODk4LDcgKzg5OCw3IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKICAgICB9CiB9
CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwT3V0KGNvbnN0IEludFJlY3QmIHJlY3QpCit2
b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcE91dChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiB7CiAg
ICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTE1MCw3ICsx
MTUwLDcgQEAgc3RhdGljIGlubGluZSBJbnRQb2ludCByZWN0Q2VudGVyUG9pbnQoY29uc3QgUkVD
VCYgcmVjdCkKIHsKICAgICByZXR1cm4gSW50UG9pbnQocmVjdC5sZWZ0ICsgKHJlY3QucmlnaHQg
LSByZWN0LmxlZnQpIC8gMiwgcmVjdC50b3AgKyAocmVjdC5ib3R0b20gLSByZWN0LnRvcCkgLyAy
KTsKIH0KLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUm91bmRlZFJlY3QoY29uc3QgSW50UmVj
dCYgZmlsbFJlY3QsIGNvbnN0IEludFNpemUmIHRvcExlZnQsIGNvbnN0IEludFNpemUmIHRvcFJp
Z2h0LCBjb25zdCBJbnRTaXplJiBib3R0b21MZWZ0LCBjb25zdCBJbnRTaXplJiBib3R0b21SaWdo
dCwgY29uc3QgQ29sb3ImIGMsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKK3ZvaWQgR3JhcGhpY3ND
b250ZXh0OjpmaWxsUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSZWN0JiBmaWxsUmVjdCwgY29uc3Qg
RmxvYXRTaXplJiB0b3BMZWZ0LCBjb25zdCBGbG9hdFNpemUmIHRvcFJpZ2h0LCBjb25zdCBGbG9h
dFNpemUmIGJvdHRvbUxlZnQsIGNvbnN0IEZsb2F0U2l6ZSYgYm90dG9tUmlnaHQsIGNvbnN0IENv
bG9yJiBjLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCiB7CiAgICAgU2NvcGVEQ1Byb3ZpZGVyIGRj
UHJvdmlkZXIobV9kYXRhKTsKICAgICBpZiAoIW1fZGF0YS0+bV9kYykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCmluZGV4IDc2N2ZhOTE5
YmI0MTYwZGZhNDUzMDQ0MjIyY2FiMTAxY2Y3YjBiOWEuLjVhZWZiNmRjOWUzOWNhNjU3NzcwY2Nh
YzU4Y2RjN2FmODRhOGQwMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJveE1vZGVsT2JqZWN0LmNwcApAQCAtMTY1OSw3ICsxNjU5LDcgQEAgc3RhdGljIGJvb2wg
am9pblJlcXVpcmVzTWl0cmUoQm94U2lkZSBzaWRlLCBCb3hTaWRlIGFkamFjZW50U2lkZSwgY29u
c3QgQm9yZGVyRWQKIH0KIAogdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRPbmVCb3Jk
ZXJTaWRlKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBSZW5kZXJTdHls
ZSogc3R5bGUsIGNvbnN0IFJvdW5kZWRSZWN0JiBvdXRlckJvcmRlciwgY29uc3QgUm91bmRlZFJl
Y3QmIGlubmVyQm9yZGVyLAotICAgIGNvbnN0IEludFJlY3QmIHNpZGVSZWN0LCBCb3hTaWRlIHNp
ZGUsIEJveFNpZGUgYWRqYWNlbnRTaWRlMSwgQm94U2lkZSBhZGphY2VudFNpZGUyLCBjb25zdCBC
b3JkZXJFZGdlIGVkZ2VzW10sIGNvbnN0IFBhdGgqIHBhdGgsCisgICAgY29uc3QgTGF5b3V0UmVj
dCYgc2lkZVJlY3QsIEJveFNpZGUgc2lkZSwgQm94U2lkZSBhZGphY2VudFNpZGUxLCBCb3hTaWRl
IGFkamFjZW50U2lkZTIsIGNvbnN0IEJvcmRlckVkZ2UgZWRnZXNbXSwgY29uc3QgUGF0aCogcGF0
aCwKICAgICBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UgYmxlZWRBdm9pZGFuY2UsIGJvb2wgaW5j
bHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSwgYm9vbCBh
bnRpYWxpYXMsIGNvbnN0IENvbG9yKiBvdmVycmlkZUNvbG9yKQogewogICAgIGNvbnN0IEJvcmRl
ckVkZ2UmIGVkZ2VUb1JlbmRlciA9IGVkZ2VzW3NpZGVdOwpAQCAtMTcwNSw5ICsxNzA1LDkgQEAg
dm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRPbmVCb3JkZXJTaWRlKEdyYXBoaWNzQ29u
dGV4dCogZ3JhcGhpY3NDb250ZXh0LAogICAgIH0KIH0KIAotc3RhdGljIEludFJlY3QgY2FsY3Vs
YXRlU2lkZVJlY3QoY29uc3QgUm91bmRlZFJlY3QmIG91dGVyQm9yZGVyLCBjb25zdCBCb3JkZXJF
ZGdlIGVkZ2VzW10sIGludCBzaWRlKQorc3RhdGljIExheW91dFJlY3QgY2FsY3VsYXRlU2lkZVJl
Y3QoY29uc3QgUm91bmRlZFJlY3QmIG91dGVyQm9yZGVyLCBjb25zdCBCb3JkZXJFZGdlIGVkZ2Vz
W10sIGludCBzaWRlKQogewotICAgIEludFJlY3Qgc2lkZVJlY3QgPSBvdXRlckJvcmRlci5yZWN0
KCk7CisgICAgTGF5b3V0UmVjdCBzaWRlUmVjdCA9IG91dGVyQm9yZGVyLnJlY3QoKTsKICAgICBp
bnQgd2lkdGggPSBlZGdlc1tzaWRlXS53aWR0aDsKIAogICAgIGlmIChzaWRlID09IEJTVG9wKQpA
QCAtMTczOCw3ICsxNzM4LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3Jk
ZXJTaWRlcyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY28KICAgICAvLyBvbmx5
IGRlcGVuZHMgb24gc2lkZVJlY3Qgd2hlbiBwYWludGluZyBzb2xpZCBib3JkZXJzLgogCiAgICAg
aWYgKGVkZ2VzW0JTVG9wXS5zaG91bGRSZW5kZXIoKSAmJiBpbmNsdWRlc0VkZ2UoZWRnZVNldCwg
QlNUb3ApKSB7Ci0gICAgICAgIEludFJlY3Qgc2lkZVJlY3QgPSBvdXRlckJvcmRlci5yZWN0KCk7
CisgICAgICAgIExheW91dFJlY3Qgc2lkZVJlY3QgPSBvdXRlckJvcmRlci5yZWN0KCk7CiAgICAg
ICAgIHNpZGVSZWN0LnNldEhlaWdodChlZGdlc1tCU1RvcF0ud2lkdGggKyBpbm5lckJvcmRlckFk
anVzdG1lbnQueSgpKTsKIAogICAgICAgICBib29sIHVzZVBhdGggPSByZW5kZXJSYWRpaSAmJiAo
Ym9yZGVyU3R5bGVIYXNJbm5lckRldGFpbChlZGdlc1tCU1RvcF0uc3R5bGUpIHx8IGJvcmRlcldp
bGxBcmNJbm5lckVkZ2UoaW5uZXJCb3JkZXIucmFkaWkoKS50b3BMZWZ0KCksIGlubmVyQm9yZGVy
LnJhZGlpKCkudG9wUmlnaHQoKSkpOwpAQCAtMTc0Niw3ICsxNzQ2LDcgQEAgdm9pZCBSZW5kZXJC
b3hNb2RlbE9iamVjdDo6cGFpbnRCb3JkZXJTaWRlcyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNz
Q29udGV4dCwgY28KICAgICB9CiAKICAgICBpZiAoZWRnZXNbQlNCb3R0b21dLnNob3VsZFJlbmRl
cigpICYmIGluY2x1ZGVzRWRnZShlZGdlU2V0LCBCU0JvdHRvbSkpIHsKLSAgICAgICAgSW50UmVj
dCBzaWRlUmVjdCA9IG91dGVyQm9yZGVyLnJlY3QoKTsKKyAgICAgICAgTGF5b3V0UmVjdCBzaWRl
UmVjdCA9IG91dGVyQm9yZGVyLnJlY3QoKTsKICAgICAgICAgc2lkZVJlY3Quc2hpZnRZRWRnZVRv
KHNpZGVSZWN0Lm1heFkoKSAtIGVkZ2VzW0JTQm90dG9tXS53aWR0aCAtIGlubmVyQm9yZGVyQWRq
dXN0bWVudC55KCkpOwogCiAgICAgICAgIGJvb2wgdXNlUGF0aCA9IHJlbmRlclJhZGlpICYmIChi
b3JkZXJTdHlsZUhhc0lubmVyRGV0YWlsKGVkZ2VzW0JTQm90dG9tXS5zdHlsZSkgfHwgYm9yZGVy
V2lsbEFyY0lubmVyRWRnZShpbm5lckJvcmRlci5yYWRpaSgpLmJvdHRvbUxlZnQoKSwgaW5uZXJC
b3JkZXIucmFkaWkoKS5ib3R0b21SaWdodCgpKSk7CkBAIC0xNzU0LDcgKzE3NTQsNyBAQCB2b2lk
IFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJvcmRlclNpZGVzKEdyYXBoaWNzQ29udGV4dCog
Z3JhcGhpY3NDb250ZXh0LCBjbwogICAgIH0KIAogICAgIGlmIChlZGdlc1tCU0xlZnRdLnNob3Vs
ZFJlbmRlcigpICYmIGluY2x1ZGVzRWRnZShlZGdlU2V0LCBCU0xlZnQpKSB7Ci0gICAgICAgIElu
dFJlY3Qgc2lkZVJlY3QgPSBvdXRlckJvcmRlci5yZWN0KCk7CisgICAgICAgIExheW91dFJlY3Qg
c2lkZVJlY3QgPSBvdXRlckJvcmRlci5yZWN0KCk7CiAgICAgICAgIHNpZGVSZWN0LnNldFdpZHRo
KGVkZ2VzW0JTTGVmdF0ud2lkdGggKyBpbm5lckJvcmRlckFkanVzdG1lbnQueCgpKTsKIAogICAg
ICAgICBib29sIHVzZVBhdGggPSByZW5kZXJSYWRpaSAmJiAoYm9yZGVyU3R5bGVIYXNJbm5lckRl
dGFpbChlZGdlc1tCU0xlZnRdLnN0eWxlKSB8fCBib3JkZXJXaWxsQXJjSW5uZXJFZGdlKGlubmVy
Qm9yZGVyLnJhZGlpKCkuYm90dG9tTGVmdCgpLCBpbm5lckJvcmRlci5yYWRpaSgpLnRvcExlZnQo
KSkpOwpAQCAtMTc2Miw3ICsxNzYyLDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFp
bnRCb3JkZXJTaWRlcyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY28KICAgICB9
CiAKICAgICBpZiAoZWRnZXNbQlNSaWdodF0uc2hvdWxkUmVuZGVyKCkgJiYgaW5jbHVkZXNFZGdl
KGVkZ2VTZXQsIEJTUmlnaHQpKSB7Ci0gICAgICAgIEludFJlY3Qgc2lkZVJlY3QgPSBvdXRlckJv
cmRlci5yZWN0KCk7CisgICAgICAgIExheW91dFJlY3Qgc2lkZVJlY3QgPSBvdXRlckJvcmRlci5y
ZWN0KCk7CiAgICAgICAgIHNpZGVSZWN0LnNoaWZ0WEVkZ2VUbyhzaWRlUmVjdC5tYXhYKCkgLSBl
ZGdlc1tCU1JpZ2h0XS53aWR0aCAtIGlubmVyQm9yZGVyQWRqdXN0bWVudC54KCkpOwogCiAgICAg
ICAgIGJvb2wgdXNlUGF0aCA9IHJlbmRlclJhZGlpICYmIChib3JkZXJTdHlsZUhhc0lubmVyRGV0
YWlsKGVkZ2VzW0JTUmlnaHRdLnN0eWxlKSB8fCBib3JkZXJXaWxsQXJjSW5uZXJFZGdlKGlubmVy
Qm9yZGVyLnJhZGlpKCkuYm90dG9tUmlnaHQoKSwgaW5uZXJCb3JkZXIucmFkaWkoKS50b3BSaWdo
dCgpKSk7CkBAIC0xODg3LDggKzE4ODcsOCBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0Ojpw
YWludEJvcmRlcihjb25zdCBQYWludEluZm8mIGluZm8sIGNvbnN0IExheW91dFJlY3QmCiAgICAg
ICAgICAgICAgICAgcGF0aC5hZGRSZWN0KG91dGVyQm9yZGVyLnJlY3QoKSk7CiAKICAgICAgICAg
ICAgIGlmIChoYXZlQWxsRG91YmxlRWRnZXMpIHsKLSAgICAgICAgICAgICAgICBJbnRSZWN0IGlu
bmVyVGhpcmRSZWN0ID0gb3V0ZXJCb3JkZXIucmVjdCgpOwotICAgICAgICAgICAgICAgIEludFJl
Y3Qgb3V0ZXJUaGlyZFJlY3QgPSBvdXRlckJvcmRlci5yZWN0KCk7CisgICAgICAgICAgICAgICAg
TGF5b3V0UmVjdCBpbm5lclRoaXJkUmVjdCA9IG91dGVyQm9yZGVyLnJlY3QoKTsKKyAgICAgICAg
ICAgICAgICBMYXlvdXRSZWN0IG91dGVyVGhpcmRSZWN0ID0gb3V0ZXJCb3JkZXIucmVjdCgpOwog
ICAgICAgICAgICAgICAgIGZvciAoaW50IHNpZGUgPSBCU1RvcDsgc2lkZSA8PSBCU0xlZnQ7ICsr
c2lkZSkgewogICAgICAgICAgICAgICAgICAgICBpbnQgb3V0ZXJXaWR0aDsKICAgICAgICAgICAg
ICAgICAgICAgaW50IGlubmVyV2lkdGg7CkBAIC0xOTQyLDcgKzE5NDIsNyBAQCB2b2lkIFJlbmRl
ckJveE1vZGVsT2JqZWN0OjpwYWludEJvcmRlcihjb25zdCBQYWludEluZm8mIGluZm8sIGNvbnN0
IExheW91dFJlY3QmCiAgICAgICAgICAgICBmb3IgKGludCBpID0gQlNUb3A7IGkgPD0gQlNMZWZ0
OyArK2kpIHsKICAgICAgICAgICAgICAgICBjb25zdCBCb3JkZXJFZGdlJiBjdXJyRWRnZSA9IGVk
Z2VzW2ldOwogICAgICAgICAgICAgICAgIGlmIChjdXJyRWRnZS5zaG91bGRSZW5kZXIoKSkgewot
ICAgICAgICAgICAgICAgICAgICBJbnRSZWN0IHNpZGVSZWN0ID0gY2FsY3VsYXRlU2lkZVJlY3Qo
b3V0ZXJCb3JkZXIsIGVkZ2VzLCBpKTsKKyAgICAgICAgICAgICAgICAgICAgTGF5b3V0UmVjdCBz
aWRlUmVjdCA9IGNhbGN1bGF0ZVNpZGVSZWN0KG91dGVyQm9yZGVyLCBlZGdlcywgaSk7CiAgICAg
ICAgICAgICAgICAgICAgIHBhdGguYWRkUmVjdChzaWRlUmVjdCk7CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgfQpAQCAtMjIzMiwyNCArMjIzMiwyMiBAQCB2b2lkIFJlbmRlckJveE1v
ZGVsT2JqZWN0OjpjbGlwQm9yZGVyU2lkZVBvbHlnb24oR3JhcGhpY3NDb250ZXh0KiBncmFwaGlj
c0NvbnRleAogICAgIEZsb2F0UG9pbnQgZmlyc3RRdWFkWzRdOwogICAgIGZpcnN0UXVhZFswXSA9
IHF1YWRbMF07CiAgICAgZmlyc3RRdWFkWzFdID0gcXVhZFsxXTsKLSAgICBmaXJzdFF1YWRbMl0g
PSBzaWRlID09IEJTVG9wIHx8IHNpZGUgPT0gQlNCb3R0b20gPyBGbG9hdFBvaW50KHF1YWRbM10u
eCgpLCBxdWFkWzJdLnkoKSkKLSAgICAgICAgOiBGbG9hdFBvaW50KHF1YWRbMl0ueCgpLCBxdWFk
WzNdLnkoKSk7CisgICAgZmlyc3RRdWFkWzJdID0gc2lkZSA9PSBCU1RvcCB8fCBzaWRlID09IEJT
Qm90dG9tID8gRmxvYXRQb2ludChxdWFkWzNdLngoKSwgcXVhZFsyXS55KCkpIDogRmxvYXRQb2lu
dChxdWFkWzJdLngoKSwgcXVhZFszXS55KCkpOwogICAgIGZpcnN0UXVhZFszXSA9IHF1YWRbM107
CiAgICAgZ3JhcGhpY3NDb250ZXh0LT5jbGlwQ29udmV4UG9seWdvbig0LCBmaXJzdFF1YWQsICFm
aXJzdEVkZ2VNYXRjaGVzKTsKIAogICAgIEZsb2F0UG9pbnQgc2Vjb25kUXVhZFs0XTsKICAgICBz
ZWNvbmRRdWFkWzBdID0gcXVhZFswXTsKLSAgICBzZWNvbmRRdWFkWzFdID0gc2lkZSA9PSBCU1Rv
cCB8fCBzaWRlID09IEJTQm90dG9tID8gRmxvYXRQb2ludChxdWFkWzBdLngoKSwgcXVhZFsxXS55
KCkpCi0gICAgICAgIDogRmxvYXRQb2ludChxdWFkWzFdLngoKSwgcXVhZFswXS55KCkpOworICAg
IHNlY29uZFF1YWRbMV0gPSBzaWRlID09IEJTVG9wIHx8IHNpZGUgPT0gQlNCb3R0b20gPyBGbG9h
dFBvaW50KHF1YWRbMF0ueCgpLCBxdWFkWzFdLnkoKSkgOiBGbG9hdFBvaW50KHF1YWRbMV0ueCgp
LCBxdWFkWzBdLnkoKSk7CiAgICAgc2Vjb25kUXVhZFsyXSA9IHF1YWRbMl07CiAgICAgc2Vjb25k
UXVhZFszXSA9IHF1YWRbM107CiAgICAgLy8gQW50aWFsaWFzaW5nIGFmZmVjdHMgdGhlIHNlY29u
ZCBzaWRlLgogICAgIGdyYXBoaWNzQ29udGV4dC0+Y2xpcENvbnZleFBvbHlnb24oNCwgc2Vjb25k
UXVhZCwgIXNlY29uZEVkZ2VNYXRjaGVzKTsKIH0KIAotc3RhdGljIEludFJlY3QgY2FsY3VsYXRl
U2lkZVJlY3RJbmNsdWRpbmdJbm5lcihjb25zdCBSb3VuZGVkUmVjdCYgb3V0ZXJCb3JkZXIsIGNv
bnN0IEJvcmRlckVkZ2UgZWRnZXNbXSwgQm94U2lkZSBzaWRlKQorc3RhdGljIExheW91dFJlY3Qg
Y2FsY3VsYXRlU2lkZVJlY3RJbmNsdWRpbmdJbm5lcihjb25zdCBSb3VuZGVkUmVjdCYgb3V0ZXJC
b3JkZXIsIGNvbnN0IEJvcmRlckVkZ2UgZWRnZXNbXSwgQm94U2lkZSBzaWRlKQogewotICAgIElu
dFJlY3Qgc2lkZVJlY3QgPSBvdXRlckJvcmRlci5yZWN0KCk7CisgICAgTGF5b3V0UmVjdCBzaWRl
UmVjdCA9IG91dGVyQm9yZGVyLnJlY3QoKTsKICAgICBpbnQgd2lkdGg7CiAKICAgICBzd2l0Y2gg
KHNpZGUpIHsKQEAgLTIyODAsNyArMjI3OCw3IEBAIHN0YXRpYyBSb3VuZGVkUmVjdCBjYWxjdWxh
dGVBZGp1c3RlZElubmVyQm9yZGVyKGNvbnN0IFJvdW5kZWRSZWN0JmlubmVyQm9yZGVyLCBCCiAg
ICAgLy8gVGhpcyBmdW5jdGlvbiByZWxpZXMgb24gdGhlIGZhY3Qgd2Ugb25seSBnZXQgcmFkaWkg
bm90IGNvbnRhaW5lZCB3aXRoaW4gZWFjaCBlZGdlIGlmIG9uZSBvZiB0aGUgcmFkaWkKICAgICAv
LyBmb3IgYW4gZWRnZSBpcyB6ZXJvLCBzbyB3ZSBjYW4gc2hpZnQgdGhlIGFyYyB0b3dhcmRzIHRo
ZSB6ZXJvIHJhZGl1cyBjb3JuZXIuCiAgICAgUm91bmRlZFJlY3Q6OlJhZGlpIG5ld1JhZGlpID0g
aW5uZXJCb3JkZXIucmFkaWkoKTsKLSAgICBJbnRSZWN0IG5ld1JlY3QgPSBpbm5lckJvcmRlci5y
ZWN0KCk7CisgICAgTGF5b3V0UmVjdCBuZXdSZWN0ID0gaW5uZXJCb3JkZXIucmVjdCgpOwogCiAg
ICAgZmxvYXQgb3ZlcnNob290OwogICAgIGZsb2F0IG1heFJhZGlpOwpAQCAtMjQ3NCwxNiArMjQ3
MiwxNiBAQCBib29sIFJlbmRlckJveE1vZGVsT2JqZWN0Ojpib3hTaGFkb3dTaG91bGRCZUFwcGxp
ZWRUb0JhY2tncm91bmQoQmFja2dyb3VuZEJsZWVkQQogICAgIHJldHVybiB0cnVlOwogfQogCi1z
dGF0aWMgaW5saW5lIEludFJlY3QgYXJlYUNhc3RpbmdTaGFkb3dJbkhvbGUoY29uc3QgSW50UmVj
dCYgaG9sZVJlY3QsIGludCBzaGFkb3dFeHRlbnQsIGludCBzaGFkb3dTcHJlYWQsIGNvbnN0IElu
dFNpemUmIHNoYWRvd09mZnNldCkKK3N0YXRpYyBpbmxpbmUgTGF5b3V0UmVjdCBhcmVhQ2FzdGlu
Z1NoYWRvd0luSG9sZShjb25zdCBMYXlvdXRSZWN0JiBob2xlUmVjdCwgaW50IHNoYWRvd0V4dGVu
dCwgaW50IHNoYWRvd1NwcmVhZCwgY29uc3QgSW50U2l6ZSYgc2hhZG93T2Zmc2V0KQogewotICAg
IEludFJlY3QgYm91bmRzKGhvbGVSZWN0KTsKKyAgICBMYXlvdXRSZWN0IGJvdW5kcyhob2xlUmVj
dCk7CiAgICAgCiAgICAgYm91bmRzLmluZmxhdGUoc2hhZG93RXh0ZW50KTsKIAogICAgIGlmIChz
aGFkb3dTcHJlYWQgPCAwKQogICAgICAgICBib3VuZHMuaW5mbGF0ZSgtc2hhZG93U3ByZWFkKTsK
ICAgICAKLSAgICBJbnRSZWN0IG9mZnNldEJvdW5kcyA9IGJvdW5kczsKKyAgICBMYXlvdXRSZWN0
IG9mZnNldEJvdW5kcyA9IGJvdW5kczsKICAgICBvZmZzZXRCb3VuZHMubW92ZSgtc2hhZG93T2Zm
c2V0KTsKICAgICByZXR1cm4gdW5pb25SZWN0KGJvdW5kcywgb2Zmc2V0Qm91bmRzKTsKIH0KQEAg
LTI1NjUsNyArMjU2Myw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm94U2hh
ZG93KGNvbnN0IFBhaW50SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0UmVjCiAgICAgICAgICAgICAg
ICAgICAgIGNvbnRleHQtPmZpbGxSb3VuZGVkUmVjdChmaWxsUmVjdCwgQ29sb3I6OmJsYWNrLCBz
LT5jb2xvclNwYWNlKCkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICAgICAgSW50UmVjdCByZWN0VG9DbGlwT3V0ID0gYm9yZGVyLnJlY3QoKTsK
KyAgICAgICAgICAgICAgICBMYXlvdXRSZWN0IHJlY3RUb0NsaXBPdXQgPSBib3JkZXIucmVjdCgp
OwogCiAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIGJveCBpcyBvcGFxdWUsIGl0IGlzIHVubmVj
ZXNzYXJ5IHRvIGNsaXAgaXQgb3V0LiBIb3dldmVyLCBkb2luZyBzbyBzYXZlcyB0aW1lCiAgICAg
ICAgICAgICAgICAgLy8gd2hlbiBwYWludGluZyB0aGUgc2hhZG93LiBPbiB0aGUgb3RoZXIgaGFu
ZCwgaXQgaW50cm9kdWNlcyBzdWJwaXhlbCBnYXBzIGFsb25nIHRoZQpAQCAtMjYxNCw3ICsyNjEy
LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3hTaGFkb3coY29uc3QgUGFp
bnRJbmZvJiBpbmZvLCBjb25zdCBMYXlvdXRSZWMKIAogICAgICAgICAgICAgQ29sb3IgZmlsbENv
bG9yKHNoYWRvd0NvbG9yLnJlZCgpLCBzaGFkb3dDb2xvci5ncmVlbigpLCBzaGFkb3dDb2xvci5i
bHVlKCksIDI1NSk7CiAKLSAgICAgICAgICAgIEludFJlY3Qgb3V0ZXJSZWN0ID0gYXJlYUNhc3Rp
bmdTaGFkb3dJbkhvbGUoYm9yZGVyLnJlY3QoKSwgc2hhZG93UGFpbnRpbmdFeHRlbnQsIHNoYWRv
d1NwcmVhZCwgc2hhZG93T2Zmc2V0KTsKKyAgICAgICAgICAgIExheW91dFJlY3Qgb3V0ZXJSZWN0
ID0gYXJlYUNhc3RpbmdTaGFkb3dJbkhvbGUoYm9yZGVyLnJlY3QoKSwgc2hhZG93UGFpbnRpbmdF
eHRlbnQsIHNoYWRvd1NwcmVhZCwgc2hhZG93T2Zmc2V0KTsKICAgICAgICAgICAgIFJvdW5kZWRS
ZWN0IHJvdW5kZWRIb2xlKGhvbGVSZWN0LCBib3JkZXIucmFkaWkoKSk7CiAKICAgICAgICAgICAg
IEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqY29udGV4dCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCmluZGV4IDZlZDIy
Njk5MTM2NjBmNmZlODE5MWViM2YzNjdjODAxNmMyZDdiMDcuLjFiZmM1MDU5NWViODg4OTU4ZGRi
ZmVjMDhjODlmMzgxYzJlZjQ4MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCb3hNb2RlbE9iamVjdC5oCkBAIC0zMzIsOCArMzMyLDggQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBCb3hTaWRlLCBib29sIGZpcnN0RWRnZU1hdGNoZXMs
IGJvb2wgc2Vjb25kRWRnZU1hdGNoZXMpOwogICAgIHZvaWQgY2xpcEJvcmRlclNpZGVGb3JDb21w
bGV4SW5uZXJQYXRoKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IFJvdW5kZWRSZWN0JiwgY29uc3Qg
Um91bmRlZFJlY3QmLCBCb3hTaWRlLCBjb25zdCBjbGFzcyBCb3JkZXJFZGdlW10pOwogICAgIHZv
aWQgcGFpbnRPbmVCb3JkZXJTaWRlKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IFJlbmRlclN0eWxl
KiwgY29uc3QgUm91bmRlZFJlY3QmIG91dGVyQm9yZGVyLCBjb25zdCBSb3VuZGVkUmVjdCYgaW5u
ZXJCb3JkZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEludFJlY3Qm
IHNpZGVSZWN0LCBCb3hTaWRlLCBCb3hTaWRlIGFkamFjZW50U2lkZTEsIEJveFNpZGUgYWRqYWNl
bnRTaWRlMiwgY29uc3QgY2xhc3MgQm9yZGVyRWRnZVtdLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBQYXRoKiwgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlLCBib29sIGlu
Y2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UsIGJvb2wg
YW50aWFsaWFzLCBjb25zdCBDb2xvciogb3ZlcnJpZGVDb2xvciA9IDApOworICAgICAgICBjb25z
dCBMYXlvdXRSZWN0JiBzaWRlUmVjdCwgQm94U2lkZSwgQm94U2lkZSBhZGphY2VudFNpZGUxLCBC
b3hTaWRlIGFkamFjZW50U2lkZTIsIGNvbnN0IGNsYXNzIEJvcmRlckVkZ2VbXSwKKyAgICAgICAg
Y29uc3QgUGF0aCosIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSwgYm9vbCBpbmNsdWRlTG9naWNh
bExlZnRFZGdlLCBib29sIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlLCBib29sIGFudGlhbGlhcywg
Y29uc3QgQ29sb3IqIG92ZXJyaWRlQ29sb3IgPSAwKTsKICAgICB2b2lkIHBhaW50VHJhbnNsdWNl
bnRCb3JkZXJTaWRlcyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBSZW5kZXJTdHlsZSosIGNvbnN0
IFJvdW5kZWRSZWN0JiBvdXRlckJvcmRlciwgY29uc3QgUm91bmRlZFJlY3QmIGlubmVyQm9yZGVy
LCBjb25zdCBJbnRQb2ludCYgaW5uZXJCb3JkZXJBZGp1c3RtZW50LAogICAgICAgICBjb25zdCBj
bGFzcyBCb3JkZXJFZGdlW10sIEJvcmRlckVkZ2VGbGFncywgQmFja2dyb3VuZEJsZWVkQXZvaWRh
bmNlLCBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxSaWdo
dEVkZ2UsIGJvb2wgYW50aWFsaWFzID0gZmFsc2UpOwogICAgIHZvaWQgcGFpbnRCb3JkZXJTaWRl
cyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBSZW5kZXJTdHlsZSosIGNvbnN0IFJvdW5kZWRSZWN0
JiBvdXRlckJvcmRlciwgY29uc3QgUm91bmRlZFJlY3QmIGlubmVyQm9yZGVyLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lU2FmYXJpLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVNhZmFyaS5jcHAKaW5kZXggNzY0YzViNWMy
NWI2ZjQyYjQ4YzJmMzY0MjdiYWRhMmFlZThlYTZiYy4uMDhkYzEwODdlZDMzNDk2NDQ1YmM1NmVm
ZWE3NTkyNGY5ZGM0NDBlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRoZW1lU2FmYXJpLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWVTYWZhcmkuY3BwCkBAIC03NzgsNyArNzc4LDcgQEAgdm9pZCBSZW5kZXJUaGVtZVNhZmFy
aTo6cGFpbnRNZW51TGlzdEJ1dHRvbkdyYWRpZW50cyhSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBh
aW4KIAogICAgIFJldGFpblB0cjxDR1NoYWRpbmdSZWY+IHJpZ2h0U2hhZGluZyA9IGFkb3B0Q0Yo
Q0dTaGFkaW5nQ3JlYXRlQXhpYWwoY3NwYWNlLCBDR1BvaW50TWFrZShyLm1heFgoKSwgIHIueSgp
KSwgQ0dQb2ludE1ha2Uoci5tYXhYKCkgLSByYWRpdXMsIHIueSgpKSwgbWFpbkZ1bmN0aW9uLmdl
dCgpLCBmYWxzZSwgZmFsc2UpKTsKICAgICBwYWludEluZm8uY29udGV4dC0+c2F2ZSgpOwotICAg
IENHQ29udGV4dENsaXBUb1JlY3QoY29udGV4dCwgYm91bmQucmVjdCgpKTsKKyAgICBDR0NvbnRl
eHRDbGlwVG9SZWN0KGNvbnRleHQsIHIpOwogICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwUm91
bmRlZFJlY3QoYm91bmQpOwogICAgIENHQ29udGV4dERyYXdTaGFkaW5nKGNvbnRleHQsIG1haW5T
aGFkaW5nLmdldCgpKTsKICAgICBwYWludEluZm8uY29udGV4dC0+cmVzdG9yZSgpOwpAQCAtNzk4
LDcgKzc5OCw3IEBAIHZvaWQgUmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50TWVudUxpc3RCdXR0b25H
cmFkaWVudHMoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWluCiAgICAgfQogCiAgICAgcGFpbnRJ
bmZvLmNvbnRleHQtPnNhdmUoKTsKLSAgICBDR0NvbnRleHRDbGlwVG9SZWN0KGNvbnRleHQsIGJv
dW5kLnJlY3QoKSk7CisgICAgQ0dDb250ZXh0Q2xpcFRvUmVjdChjb250ZXh0LCByKTsKICAgICBw
YWludEluZm8uY29udGV4dC0+Y2xpcFJvdW5kZWRSZWN0KGJvdW5kKTsKICAgICBDR0NvbnRleHRE
cmF3U2hhZGluZyhjb250ZXh0LCBsZWZ0U2hhZGluZy5nZXQoKSk7CiAgICAgQ0dDb250ZXh0RHJh
d1NoYWRpbmcoY29udGV4dCwgcmlnaHRTaGFkaW5nLmdldCgpKTsKQEAgLTk3Myw3ICs5NzMsNyBA
QCBib29sIFJlbmRlclRoZW1lU2FmYXJpOjpwYWludFNsaWRlclRyYWNrKFJlbmRlck9iamVjdCog
bywgY29uc3QgUGFpbnRJbmZvJiBwYWludAogICAgIENHQ29sb3JTcGFjZVJlZiBjc3BhY2UgPSBk
ZXZpY2VSR0JDb2xvclNwYWNlUmVmKCk7CiAKICAgICBwYWludEluZm8uY29udGV4dC0+c2F2ZSgp
OwotICAgIENHQ29udGV4dENsaXBUb1JlY3QoY29udGV4dCwgYm91bmRzLnJlY3QoKSk7CisgICAg
Q0dDb250ZXh0Q2xpcFRvUmVjdChjb250ZXh0LCBwaXhlbFNuYXBwZWRJbnRSZWN0KGJvdW5kcy5y
ZWN0KCkpKTsKIAogICAgIHN0cnVjdCBDR0Z1bmN0aW9uQ2FsbGJhY2tzIG1haW5DYWxsYmFja3Mg
PSB7IDAsIFRyYWNrR3JhZGllbnRJbnRlcnBvbGF0ZSwgTlVMTCB9OwogICAgIFJldGFpblB0cjxD
R0Z1bmN0aW9uUmVmPiBtYWluRnVuY3Rpb24gPSBhZG9wdENGKENHRnVuY3Rpb25DcmVhdGUoTlVM
TCwgMSwgTlVMTCwgNCwgTlVMTCwgJm1haW5DYWxsYmFja3MpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222546</attachid>
            <date>2014-01-28 19:21:34 -0800</date>
            <delta_ts>2014-01-30 20:03:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-127779-20140128192133.patch</filename>
            <type>text/plain</type>
            <size>48199</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYyOTkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTY5NjhhMDkxMGEyMDIx
YWIwZjAyMTMyZjYyZTY2ZWY1ZTU3MTA2MC4uMjQ5NGNkMzg0OTZhOTFlZjlhNjQ1ZjVkZjRhODk3
NzliYzI4OGU2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgwIEBACisyMDE0LTAxLTI4ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgU3VicGl4ZWwgcmVuZGVyaW5n
OiBNYWtlIFJvdW5kZWRSZWN0IGxheW91dCB1bml0IGF3YXJlLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3Nzc5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW4gb3JkZXIgdG8gZHJhdyBoYWlybGluZSBi
b3JkZXJzLCBSb3VuZGVkUmVjdCBuZWVkcyB0byBiZQorICAgICAgICBMYXlvdXRVbml0IGJhc2Vk
LgorCisgICAgICAgIE5vIGNoYW5nZSBpbiBiZWhhdmlvci4KKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQ6OmZpbGxSb3VuZGVkUmVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZFJl
Y3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Um91bmRlZFJlY3Q6OlJhZGlpOjpzY2FsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSb3VuZGVkUmVjdDo6UmFkaWk6OmV4cGFuZCk6CisgICAgICAgIChX
ZWJDb3JlOjpSb3VuZGVkUmVjdDo6aW5mbGF0ZVdpdGhSYWRpaSk6CisgICAgICAgIChXZWJDb3Jl
OjpSb3VuZGVkUmVjdDo6Um91bmRlZFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Um91bmRlZFJl
Y3Q6OmludGVyc2VjdHNRdWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Sb3VuZGVk
UmVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6Um91bmRlZFJlY3Q6OlJhZGlpOjpSYWRpaSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSb3VuZGVkUmVjdDo6UmFkaWk6OnNldFRvcExlZnQpOgorICAgICAg
ICAoV2ViQ29yZTo6Um91bmRlZFJlY3Q6OlJhZGlpOjpzZXRUb3BSaWdodCk6CisgICAgICAgIChX
ZWJDb3JlOjpSb3VuZGVkUmVjdDo6UmFkaWk6OnNldEJvdHRvbUxlZnQpOgorICAgICAgICAoV2Vi
Q29yZTo6Um91bmRlZFJlY3Q6OlJhZGlpOjpzZXRCb3R0b21SaWdodCk6CisgICAgICAgIChXZWJD
b3JlOjpSb3VuZGVkUmVjdDo6UmFkaWk6OnRvcExlZnQpOgorICAgICAgICAoV2ViQ29yZTo6Um91
bmRlZFJlY3Q6OlJhZGlpOjp0b3BSaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpSb3VuZGVkUmVj
dDo6UmFkaWk6OmJvdHRvbUxlZnQpOgorICAgICAgICAoV2ViQ29yZTo6Um91bmRlZFJlY3Q6OlJh
ZGlpOjpib3R0b21SaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpSb3VuZGVkUmVjdDo6UmFkaWk6
OmV4cGFuZCk6CisgICAgICAgIChXZWJDb3JlOjpSb3VuZGVkUmVjdDo6UmFkaWk6OnNocmluayk6
CisgICAgICAgIChXZWJDb3JlOjpSb3VuZGVkUmVjdDo6cmVjdCk6CisgICAgICAgIChXZWJDb3Jl
OjpSb3VuZGVkUmVjdDo6c2V0UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSb3VuZGVkUmVjdDo6
bW92ZSk6CisgICAgICAgIChXZWJDb3JlOjpSb3VuZGVkUmVjdDo6aW5mbGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpSb3VuZGVkUmVjdDo6ZXhwYW5kUmFkaWkpOgorICAgICAgICAoV2ViQ29yZTo6
Um91bmRlZFJlY3Q6OnNocmlua1JhZGlpKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9T
aGFkb3dCbHVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmF0Y2hCdWZmZXI6OnNldENhY2hl
ZFNoYWRvd1ZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JhdGNoQnVmZmVyOjpzZXRDYWNo
ZWRJbnNldFNoYWRvd1ZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRlU2xpY2VTaXpl
c0Zyb21SYWRpaSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjp0ZW1wbGF0ZVNpemUp
OgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3cpOgorICAgICAg
ICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93KToKKyAgICAgICAgKFdlYkNv
cmU6OlNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0aG91dFRpbGluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRob3V0VGlsaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvd1dpdGhUaWxpbmcpOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3dXaXRoVGlsaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRyYXdMYXllclBpZWNlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFkb3dCbHVyOjpiZWdpblNoYWRvd0xheWVyKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9TaGFkb3dCbHVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0OjpjbGlwT3V0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Zmls
bFJvdW5kZWRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZmlsbFJl
Y3RXaXRoUm91bmRlZEhvbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBo
aWNzQ29udGV4dENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6cGxh
dGZvcm1Jbml0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9HcmFwaGljc0Nv
bnRleHRXaW5DRS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNsaXBP
dXQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUm91bmRlZFJlY3Qp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRPbmVCb3JkZXJTaWRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OmNhbGN1bGF0ZVNpZGVSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJvcmRlclNpZGVzKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJvcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCb3hNb2RlbE9iamVjdDo6Y2xpcEJvcmRlclNpZGVQb2x5Z29uKToKKyAgICAgICAgKFdl
YkNvcmU6OmNhbGN1bGF0ZVNpZGVSZWN0SW5jbHVkaW5nSW5uZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6Y2FsY3VsYXRlQWRqdXN0ZWRJbm5lckJvcmRlcik6CisgICAgICAgIChXZWJDb3JlOjphcmVh
Q2FzdGluZ1NoYWRvd0luSG9sZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9i
amVjdDo6cGFpbnRCb3hTaGFkb3cpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2Rl
bE9iamVjdC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZVNhZmFyaS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRNZW51TGlzdEJ1dHRvbkdy
YWRpZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRTbGlk
ZXJUcmFjayk6CisKIDIwMTQtMDEtMjggIFpvbHRhbiBIb3J2YXRoICA8em9sdGFuQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgW0NTUyBTaGFwZXNdIEFkanVzdCBpbnNldCBzaXppbmcgc3ludGF4IHRv
IHRoZSBsYXRlc3Qgc3BlY2lmaWNhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKaW5kZXggZjEyZjAyYTZmNmY4NTY2OWZl
MmQ3YjJjMDM5MDdhNWMwM2UzODc4YS4uNmI0ZDdhOWEzZDcyZWRjMzI1YTk5NGU3OWNmNjFhMWYw
MTk3NjVhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQuY3BwCkBAIC03NzEsNyArNzcxLDYgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBD
b2xvclMKIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSb3VuZGVkUmVjdChjb25zdCBSb3Vu
ZGVkUmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2Us
IEJsZW5kTW9kZSBibGVuZE1vZGUpCiB7Ci0KICAgICBpZiAocmVjdC5pc1JvdW5kZWQoKSkgewog
ICAgICAgICBzZXRDb21wb3NpdGVPcGVyYXRpb24oY29tcG9zaXRlT3BlcmF0aW9uKCksIGJsZW5k
TW9kZSk7CiAgICAgICAgIGZpbGxSb3VuZGVkUmVjdChyZWN0LnJlY3QoKSwgcmVjdC5yYWRpaSgp
LnRvcExlZnQoKSwgcmVjdC5yYWRpaSgpLnRvcFJpZ2h0KCksIHJlY3QucmFkaWkoKS5ib3R0b21M
ZWZ0KCksIHJlY3QucmFkaWkoKS5ib3R0b21SaWdodCgpLCBjb2xvciwgY29sb3JTcGFjZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5o
CmluZGV4IGE0Mzc4MjdhYzYyYWRkMjBjYTlkZmRkODk5OGI0MmM3NjEyZjRjZGYuLjg4ODY4MmU5
MDhlOWIxNDAwZTRmNTE1NWU2MmVjZjQxN2U2ZmFlZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCkBAIC0yOTQsOSArMjk0LDkg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIGZpbGxSZWN0KGNvbnN0IEZsb2F0
UmVjdCYsIGNvbnN0IENvbG9yJiwgQ29sb3JTcGFjZSk7CiAgICAgICAgIHZvaWQgZmlsbFJlY3Qo
Y29uc3QgRmxvYXRSZWN0JiwgR3JhZGllbnQmKTsKICAgICAgICAgdm9pZCBmaWxsUmVjdChjb25z
dCBGbG9hdFJlY3QmLCBjb25zdCBDb2xvciYsIENvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9y
LCBCbGVuZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwpOwotICAgICAgICB2b2lkIGZpbGxSb3VuZGVk
UmVjdChjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50U2l6ZSYgdG9wTGVmdCwgY29uc3QgSW50U2l6
ZSYgdG9wUmlnaHQsIGNvbnN0IEludFNpemUmIGJvdHRvbUxlZnQsIGNvbnN0IEludFNpemUmIGJv
dHRvbVJpZ2h0LCBjb25zdCBDb2xvciYsIENvbG9yU3BhY2UpOworICAgICAgICB2b2lkIGZpbGxS
b3VuZGVkUmVjdChjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFNpemUmIHRvcExlZnQsIGNv
bnN0IEZsb2F0U2l6ZSYgdG9wUmlnaHQsIGNvbnN0IEZsb2F0U2l6ZSYgYm90dG9tTGVmdCwgY29u
c3QgRmxvYXRTaXplJiBib3R0b21SaWdodCwgY29uc3QgQ29sb3ImLCBDb2xvclNwYWNlKTsKICAg
ICAgICAgdm9pZCBmaWxsUm91bmRlZFJlY3QoY29uc3QgUm91bmRlZFJlY3QmLCBjb25zdCBDb2xv
ciYsIENvbG9yU3BhY2UsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1hbCk7Ci0gICAgICAgIHZv
aWQgZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUoY29uc3QgSW50UmVjdCYsIGNvbnN0IFJvdW5kZWRS
ZWN0JiByb3VuZGVkSG9sZVJlY3QsIGNvbnN0IENvbG9yJiwgQ29sb3JTcGFjZSk7CisgICAgICAg
IHZvaWQgZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgUm91
bmRlZFJlY3QmIHJvdW5kZWRIb2xlUmVjdCwgY29uc3QgQ29sb3ImLCBDb2xvclNwYWNlKTsKIAog
ICAgICAgICB2b2lkIGNsZWFyUmVjdChjb25zdCBGbG9hdFJlY3QmKTsKIApAQCAtMzMyLDcgKzMz
Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gRklYTUU6IENvbnNpZGVyIHdy
aXRpbmcgdGhpcyBpbiB0ZXJtcyBvZiBhIHNwZWNpYWxpemVkIFJvdW5kZWRSZWN0IHRoYXQgdXNl
cyBGbG9hdFJlY3QgYW5kIEZsb2F0U2l6ZSByYWRpaS4KICAgICAgICAgdm9pZCBjbGlwUm91bmRl
ZFJlY3QoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRTaXplJiB0b3BMZWZ0LCBjb25zdCBG
bG9hdFNpemUmIHRvcFJpZ2h0LCBjb25zdCBGbG9hdFNpemUmIGJvdHRvbUxlZnQsIGNvbnN0IEZs
b2F0U2l6ZSYgYm90dG9tUmlnaHQpOwogCi0gICAgICAgIHZvaWQgY2xpcE91dChjb25zdCBJbnRS
ZWN0Jik7CisgICAgICAgIHZvaWQgY2xpcE91dChjb25zdCBGbG9hdFJlY3QmKTsKICAgICAgICAg
dm9pZCBjbGlwT3V0Um91bmRlZFJlY3QoY29uc3QgUm91bmRlZFJlY3QmKTsKICAgICAgICAgdm9p
ZCBjbGlwUGF0aChjb25zdCBQYXRoJiwgV2luZFJ1bGUpOwogICAgICAgICB2b2lkIGNsaXBDb252
ZXhQb2x5Z29uKHNpemVfdCBudW1Qb2ludHMsIGNvbnN0IEZsb2F0UG9pbnQqLCBib29sIGFudGlh
bGlhcyA9IHRydWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvUm91bmRlZFJlY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUm91
bmRlZFJlY3QuY3BwCmluZGV4IDhmMmYxY2Y5MWUyOTNlZmE3NTQ0M2IxY2Q1ZjA1ZDc3YzEyNWI4
M2UuLmQ3MjczMjRlNzc0ZjYwZjllM2FlOWZkNjE5OTZjYzYzYjJmODhlNjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JvdW5kZWRSZWN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Sb3VuZGVkUmVjdC5jcHAKQEAgLTI4LDYg
KzI4LDkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJSb3VuZGVkUmVjdC5oIgog
CisjaW5jbHVkZSAiTGF5b3V0UmVjdC5oIgorI2luY2x1ZGUgIkxheW91dFVuaXQuaCIKKwogI2lu
Y2x1ZGUgPGFsZ29yaXRobT4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDUsNDIgKzQ4LDQy
IEBAIHZvaWQgUm91bmRlZFJlY3Q6OlJhZGlpOjpzY2FsZShmbG9hdCBmYWN0b3IpCiAgICAgLy8g
SWYgZWl0aGVyIHJhZGl1cyBvbiBhIGNvcm5lciBiZWNvbWVzIHplcm8sIHJlc2V0IGJvdGggcmFk
aWkgb24gdGhhdCBjb3JuZXIuCiAgICAgbV90b3BMZWZ0LnNjYWxlKGZhY3Rvcik7CiAgICAgaWYg
KCFtX3RvcExlZnQud2lkdGgoKSB8fCAhbV90b3BMZWZ0LmhlaWdodCgpKQotICAgICAgICBtX3Rv
cExlZnQgPSBJbnRTaXplKCk7CisgICAgICAgIG1fdG9wTGVmdCA9IExheW91dFNpemUoKTsKICAg
ICBtX3RvcFJpZ2h0LnNjYWxlKGZhY3Rvcik7CiAgICAgaWYgKCFtX3RvcFJpZ2h0LndpZHRoKCkg
fHwgIW1fdG9wUmlnaHQuaGVpZ2h0KCkpCi0gICAgICAgIG1fdG9wUmlnaHQgPSBJbnRTaXplKCk7
CisgICAgICAgIG1fdG9wUmlnaHQgPSBMYXlvdXRTaXplKCk7CiAgICAgbV9ib3R0b21MZWZ0LnNj
YWxlKGZhY3Rvcik7CiAgICAgaWYgKCFtX2JvdHRvbUxlZnQud2lkdGgoKSB8fCAhbV9ib3R0b21M
ZWZ0LmhlaWdodCgpKQotICAgICAgICBtX2JvdHRvbUxlZnQgPSBJbnRTaXplKCk7CisgICAgICAg
IG1fYm90dG9tTGVmdCA9IExheW91dFNpemUoKTsKICAgICBtX2JvdHRvbVJpZ2h0LnNjYWxlKGZh
Y3Rvcik7CiAgICAgaWYgKCFtX2JvdHRvbVJpZ2h0LndpZHRoKCkgfHwgIW1fYm90dG9tUmlnaHQu
aGVpZ2h0KCkpCi0gICAgICAgIG1fYm90dG9tUmlnaHQgPSBJbnRTaXplKCk7CisgICAgICAgIG1f
Ym90dG9tUmlnaHQgPSBMYXlvdXRTaXplKCk7CiAKIH0KIAotdm9pZCBSb3VuZGVkUmVjdDo6UmFk
aWk6OmV4cGFuZChpbnQgdG9wV2lkdGgsIGludCBib3R0b21XaWR0aCwgaW50IGxlZnRXaWR0aCwg
aW50IHJpZ2h0V2lkdGgpCit2b2lkIFJvdW5kZWRSZWN0OjpSYWRpaTo6ZXhwYW5kKGNvbnN0IExh
eW91dFVuaXQmIHRvcFdpZHRoLCBjb25zdCBMYXlvdXRVbml0JiBib3R0b21XaWR0aCwgY29uc3Qg
TGF5b3V0VW5pdCYgbGVmdFdpZHRoLCBjb25zdCBMYXlvdXRVbml0JiByaWdodFdpZHRoKQogewog
ICAgIGlmIChtX3RvcExlZnQud2lkdGgoKSA+IDAgJiYgbV90b3BMZWZ0LmhlaWdodCgpID4gMCkg
ewotICAgICAgICBtX3RvcExlZnQuc2V0V2lkdGgoc3RkOjptYXg8aW50PigwLCBtX3RvcExlZnQu
d2lkdGgoKSArIGxlZnRXaWR0aCkpOwotICAgICAgICBtX3RvcExlZnQuc2V0SGVpZ2h0KHN0ZDo6
bWF4PGludD4oMCwgbV90b3BMZWZ0LmhlaWdodCgpICsgdG9wV2lkdGgpKTsKKyAgICAgICAgbV90
b3BMZWZ0LnNldFdpZHRoKHN0ZDo6bWF4PExheW91dFVuaXQ+KDAsIG1fdG9wTGVmdC53aWR0aCgp
ICsgbGVmdFdpZHRoKSk7CisgICAgICAgIG1fdG9wTGVmdC5zZXRIZWlnaHQoc3RkOjptYXg8TGF5
b3V0VW5pdD4oMCwgbV90b3BMZWZ0LmhlaWdodCgpICsgdG9wV2lkdGgpKTsKICAgICB9CiAgICAg
aWYgKG1fdG9wUmlnaHQud2lkdGgoKSA+IDAgJiYgbV90b3BSaWdodC5oZWlnaHQoKSA+IDApIHsK
LSAgICAgICAgbV90b3BSaWdodC5zZXRXaWR0aChzdGQ6Om1heDxpbnQ+KDAsIG1fdG9wUmlnaHQu
d2lkdGgoKSArIHJpZ2h0V2lkdGgpKTsKLSAgICAgICAgbV90b3BSaWdodC5zZXRIZWlnaHQoc3Rk
OjptYXg8aW50PigwLCBtX3RvcFJpZ2h0LmhlaWdodCgpICsgdG9wV2lkdGgpKTsKKyAgICAgICAg
bV90b3BSaWdodC5zZXRXaWR0aChzdGQ6Om1heDxMYXlvdXRVbml0PigwLCBtX3RvcFJpZ2h0Lndp
ZHRoKCkgKyByaWdodFdpZHRoKSk7CisgICAgICAgIG1fdG9wUmlnaHQuc2V0SGVpZ2h0KHN0ZDo6
bWF4PExheW91dFVuaXQ+KDAsIG1fdG9wUmlnaHQuaGVpZ2h0KCkgKyB0b3BXaWR0aCkpOwogICAg
IH0KICAgICBpZiAobV9ib3R0b21MZWZ0LndpZHRoKCkgPiAwICYmIG1fYm90dG9tTGVmdC5oZWln
aHQoKSA+IDApIHsKLSAgICAgICAgbV9ib3R0b21MZWZ0LnNldFdpZHRoKHN0ZDo6bWF4PGludD4o
MCwgbV9ib3R0b21MZWZ0LndpZHRoKCkgKyBsZWZ0V2lkdGgpKTsKLSAgICAgICAgbV9ib3R0b21M
ZWZ0LnNldEhlaWdodChzdGQ6Om1heDxpbnQ+KDAsIG1fYm90dG9tTGVmdC5oZWlnaHQoKSArIGJv
dHRvbVdpZHRoKSk7CisgICAgICAgIG1fYm90dG9tTGVmdC5zZXRXaWR0aChzdGQ6Om1heDxMYXlv
dXRVbml0PigwLCBtX2JvdHRvbUxlZnQud2lkdGgoKSArIGxlZnRXaWR0aCkpOworICAgICAgICBt
X2JvdHRvbUxlZnQuc2V0SGVpZ2h0KHN0ZDo6bWF4PExheW91dFVuaXQ+KDAsIG1fYm90dG9tTGVm
dC5oZWlnaHQoKSArIGJvdHRvbVdpZHRoKSk7CiAgICAgfQogICAgIGlmIChtX2JvdHRvbVJpZ2h0
LndpZHRoKCkgPiAwICYmIG1fYm90dG9tUmlnaHQuaGVpZ2h0KCkgPiAwKSB7Ci0gICAgICAgIG1f
Ym90dG9tUmlnaHQuc2V0V2lkdGgoc3RkOjptYXg8aW50PigwLCBtX2JvdHRvbVJpZ2h0LndpZHRo
KCkgKyByaWdodFdpZHRoKSk7Ci0gICAgICAgIG1fYm90dG9tUmlnaHQuc2V0SGVpZ2h0KHN0ZDo6
bWF4PGludD4oMCwgbV9ib3R0b21SaWdodC5oZWlnaHQoKSArIGJvdHRvbVdpZHRoKSk7CisgICAg
ICAgIG1fYm90dG9tUmlnaHQuc2V0V2lkdGgoc3RkOjptYXg8TGF5b3V0VW5pdD4oMCwgbV9ib3R0
b21SaWdodC53aWR0aCgpICsgcmlnaHRXaWR0aCkpOworICAgICAgICBtX2JvdHRvbVJpZ2h0LnNl
dEhlaWdodChzdGQ6Om1heDxMYXlvdXRVbml0PigwLCBtX2JvdHRvbVJpZ2h0LmhlaWdodCgpICsg
Ym90dG9tV2lkdGgpKTsKICAgICB9CiB9CiAKLXZvaWQgUm91bmRlZFJlY3Q6OmluZmxhdGVXaXRo
UmFkaWkoaW50IHNpemUpCit2b2lkIFJvdW5kZWRSZWN0OjppbmZsYXRlV2l0aFJhZGlpKGNvbnN0
IExheW91dFVuaXQmIHNpemUpCiB7Ci0gICAgSW50UmVjdCBvbGQgPSBtX3JlY3Q7CisgICAgTGF5
b3V0UmVjdCBvbGQgPSBtX3JlY3Q7CiAKICAgICBtX3JlY3QuaW5mbGF0ZShzaXplKTsKICAgICAv
LyBDb25zaWRlcmluZyB0aGUgaW5mbGF0aW9uIGZhY3RvciBvZiBzaG9ydGVyIHNpemUgdG8gc2Nh
bGUgdGhlIHJhZGlpIHNlZW1zIGFwcHJvcHJpYXRlIGhlcmUKQEAgLTEzMSwxOCArMTM0LDE4IEBA
IHZvaWQgUm91bmRlZFJlY3Q6OlJhZGlpOjpleGNsdWRlTG9naWNhbEVkZ2VzKGJvb2wgaXNIb3Jp
em9udGFsLCBib29sIGV4Y2x1ZGVMb2dpCiAgICAgfQogfQogCi1Sb3VuZGVkUmVjdDo6Um91bmRl
ZFJlY3QoaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCitSb3VuZGVkUmVjdDo6
Um91bmRlZFJlY3QoY29uc3QgTGF5b3V0VW5pdCYgeCwgY29uc3QgTGF5b3V0VW5pdCYgeSwgY29u
c3QgTGF5b3V0VW5pdCYgd2lkdGgsIGNvbnN0IExheW91dFVuaXQmIGhlaWdodCkKICAgICA6IG1f
cmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0KQogewogfQogCi1Sb3VuZGVkUmVjdDo6Um91bmRlZFJl
Y3QoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgUmFkaWkmIHJhZGlpKQorUm91bmRlZFJlY3Q6
OlJvdW5kZWRSZWN0KGNvbnN0IExheW91dFJlY3QmIHJlY3QsIGNvbnN0IFJhZGlpJiByYWRpaSkK
ICAgICA6IG1fcmVjdChyZWN0KQogICAgICwgbV9yYWRpaShyYWRpaSkKIHsKIH0KIAotUm91bmRl
ZFJlY3Q6OlJvdW5kZWRSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEludFNpemUmIHRv
cExlZnQsIGNvbnN0IEludFNpemUmIHRvcFJpZ2h0LCBjb25zdCBJbnRTaXplJiBib3R0b21MZWZ0
LCBjb25zdCBJbnRTaXplJiBib3R0b21SaWdodCkKK1JvdW5kZWRSZWN0OjpSb3VuZGVkUmVjdChj
b25zdCBMYXlvdXRSZWN0JiByZWN0LCBjb25zdCBMYXlvdXRTaXplJiB0b3BMZWZ0LCBjb25zdCBM
YXlvdXRTaXplJiB0b3BSaWdodCwgY29uc3QgTGF5b3V0U2l6ZSYgYm90dG9tTGVmdCwgY29uc3Qg
TGF5b3V0U2l6ZSYgYm90dG9tUmlnaHQpCiAgICAgOiBtX3JlY3QocmVjdCkKICAgICAsIG1fcmFk
aWkodG9wTGVmdCwgdG9wUmlnaHQsIGJvdHRvbUxlZnQsIGJvdHRvbVJpZ2h0KQogewpAQCAtMTg2
LDcgKzE4OSw3IEBAIGJvb2wgUm91bmRlZFJlY3Q6OmludGVyc2VjdHNRdWFkKGNvbnN0IEZsb2F0
UXVhZCYgcXVhZCkgY29uc3QKICAgICBpZiAoIXF1YWQuaW50ZXJzZWN0c1JlY3QocmVjdCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGNvbnN0IEludFNpemUmIHRvcExlZnQgPSBtX3Jh
ZGlpLnRvcExlZnQoKTsKKyAgICBjb25zdCBMYXlvdXRTaXplJiB0b3BMZWZ0ID0gbV9yYWRpaS50
b3BMZWZ0KCk7CiAgICAgaWYgKCF0b3BMZWZ0LmlzRW1wdHkoKSkgewogICAgICAgICBGbG9hdFJl
Y3QgcmVjdChtX3JlY3QueCgpLCBtX3JlY3QueSgpLCB0b3BMZWZ0LndpZHRoKCksIHRvcExlZnQu
aGVpZ2h0KCkpOwogICAgICAgICBpZiAocXVhZC5pbnRlcnNlY3RzUmVjdChyZWN0KSkgewpAQCAt
MTk3LDcgKzIwMCw3IEBAIGJvb2wgUm91bmRlZFJlY3Q6OmludGVyc2VjdHNRdWFkKGNvbnN0IEZs
b2F0UXVhZCYgcXVhZCkgY29uc3QKICAgICAgICAgfQogICAgIH0KIAotICAgIGNvbnN0IEludFNp
emUmIHRvcFJpZ2h0ID0gbV9yYWRpaS50b3BSaWdodCgpOworICAgIGNvbnN0IExheW91dFNpemUm
IHRvcFJpZ2h0ID0gbV9yYWRpaS50b3BSaWdodCgpOwogICAgIGlmICghdG9wUmlnaHQuaXNFbXB0
eSgpKSB7CiAgICAgICAgIEZsb2F0UmVjdCByZWN0KG1fcmVjdC5tYXhYKCkgLSB0b3BSaWdodC53
aWR0aCgpLCBtX3JlY3QueSgpLCB0b3BSaWdodC53aWR0aCgpLCB0b3BSaWdodC5oZWlnaHQoKSk7
CiAgICAgICAgIGlmIChxdWFkLmludGVyc2VjdHNSZWN0KHJlY3QpKSB7CkBAIC0yMDgsNyArMjEx
LDcgQEAgYm9vbCBSb3VuZGVkUmVjdDo6aW50ZXJzZWN0c1F1YWQoY29uc3QgRmxvYXRRdWFkJiBx
dWFkKSBjb25zdAogICAgICAgICB9CiAgICAgfQogCi0gICAgY29uc3QgSW50U2l6ZSYgYm90dG9t
TGVmdCA9IG1fcmFkaWkuYm90dG9tTGVmdCgpOworICAgIGNvbnN0IExheW91dFNpemUmIGJvdHRv
bUxlZnQgPSBtX3JhZGlpLmJvdHRvbUxlZnQoKTsKICAgICBpZiAoIWJvdHRvbUxlZnQuaXNFbXB0
eSgpKSB7CiAgICAgICAgIEZsb2F0UmVjdCByZWN0KG1fcmVjdC54KCksIG1fcmVjdC5tYXhZKCkg
LSBib3R0b21MZWZ0LmhlaWdodCgpLCBib3R0b21MZWZ0LndpZHRoKCksIGJvdHRvbUxlZnQuaGVp
Z2h0KCkpOwogICAgICAgICBpZiAocXVhZC5pbnRlcnNlY3RzUmVjdChyZWN0KSkgewpAQCAtMjE5
LDcgKzIyMiw3IEBAIGJvb2wgUm91bmRlZFJlY3Q6OmludGVyc2VjdHNRdWFkKGNvbnN0IEZsb2F0
UXVhZCYgcXVhZCkgY29uc3QKICAgICAgICAgfQogICAgIH0KIAotICAgIGNvbnN0IEludFNpemUm
IGJvdHRvbVJpZ2h0ID0gbV9yYWRpaS5ib3R0b21SaWdodCgpOworICAgIGNvbnN0IExheW91dFNp
emUmIGJvdHRvbVJpZ2h0ID0gbV9yYWRpaS5ib3R0b21SaWdodCgpOwogICAgIGlmICghYm90dG9t
UmlnaHQuaXNFbXB0eSgpKSB7CiAgICAgICAgIEZsb2F0UmVjdCByZWN0KG1fcmVjdC5tYXhYKCkg
LSBib3R0b21SaWdodC53aWR0aCgpLCBtX3JlY3QubWF4WSgpIC0gYm90dG9tUmlnaHQuaGVpZ2h0
KCksIGJvdHRvbVJpZ2h0LndpZHRoKCksIGJvdHRvbVJpZ2h0LmhlaWdodCgpKTsKICAgICAgICAg
aWYgKHF1YWQuaW50ZXJzZWN0c1JlY3QocmVjdCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JvdW5kZWRSZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Sb3VuZGVkUmVjdC5oCmluZGV4IGQ5MjNlMzUzZjQ4YWI5OGRlOTE1Nzcz
NjNiYTYzNGM3OGE5YzIzMDMuLjYxYmRhOTdiZjVmNTA5NTIzNzU3MWE1NWJlYWZiYTc3OTA1ZWY4
MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JvdW5kZWRS
ZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZFJlY3Qu
aApAQCAtMjgsMTcgKzI4LDE5IEBACiAjZGVmaW5lIFJvdW5kZWRSZWN0X2gKIAogI2luY2x1ZGUg
IkZsb2F0UXVhZC5oIgotI2luY2x1ZGUgIkludFJlY3QuaCIKKyNpbmNsdWRlICJMYXlvdXRSZWN0
LmgiCisjaW5jbHVkZSAiTGF5b3V0U2l6ZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2Ns
YXNzIExheW91dFVuaXQ7CiAKIGNsYXNzIFJvdW5kZWRSZWN0IHsKIHB1YmxpYzoKICAgICBjbGFz
cyBSYWRpaSB7CiAgICAgcHVibGljOgogICAgICAgICBSYWRpaSgpIHt9Ci0gICAgICAgIFJhZGlp
KGNvbnN0IEludFNpemUmIHRvcExlZnQsIGNvbnN0IEludFNpemUmIHRvcFJpZ2h0LCBjb25zdCBJ
bnRTaXplJiBib3R0b21MZWZ0LCBjb25zdCBJbnRTaXplJiBib3R0b21SaWdodCkKKyAgICAgICAg
UmFkaWkoY29uc3QgTGF5b3V0U2l6ZSYgdG9wTGVmdCwgY29uc3QgTGF5b3V0U2l6ZSYgdG9wUmln
aHQsIGNvbnN0IExheW91dFNpemUmIGJvdHRvbUxlZnQsIGNvbnN0IExheW91dFNpemUmIGJvdHRv
bVJpZ2h0KQogICAgICAgICAgICAgOiBtX3RvcExlZnQodG9wTGVmdCkKICAgICAgICAgICAgICwg
bV90b3BSaWdodCh0b3BSaWdodCkKICAgICAgICAgICAgICwgbV9ib3R0b21MZWZ0KGJvdHRvbUxl
ZnQpCkBAIC00NiwxNCArNDgsMTQgQEAgcHVibGljOgogICAgICAgICB7CiAgICAgICAgIH0KIAot
ICAgICAgICB2b2lkIHNldFRvcExlZnQoY29uc3QgSW50U2l6ZSYgc2l6ZSkgeyBtX3RvcExlZnQg
PSBzaXplOyB9Ci0gICAgICAgIHZvaWQgc2V0VG9wUmlnaHQoY29uc3QgSW50U2l6ZSYgc2l6ZSkg
eyBtX3RvcFJpZ2h0ID0gc2l6ZTsgfQotICAgICAgICB2b2lkIHNldEJvdHRvbUxlZnQoY29uc3Qg
SW50U2l6ZSYgc2l6ZSkgeyBtX2JvdHRvbUxlZnQgPSBzaXplOyB9Ci0gICAgICAgIHZvaWQgc2V0
Qm90dG9tUmlnaHQoY29uc3QgSW50U2l6ZSYgc2l6ZSkgeyBtX2JvdHRvbVJpZ2h0ID0gc2l6ZTsg
fQotICAgICAgICBjb25zdCBJbnRTaXplJiB0b3BMZWZ0KCkgY29uc3QgeyByZXR1cm4gbV90b3BM
ZWZ0OyB9Ci0gICAgICAgIGNvbnN0IEludFNpemUmIHRvcFJpZ2h0KCkgY29uc3QgeyByZXR1cm4g
bV90b3BSaWdodDsgfQotICAgICAgICBjb25zdCBJbnRTaXplJiBib3R0b21MZWZ0KCkgY29uc3Qg
eyByZXR1cm4gbV9ib3R0b21MZWZ0OyB9Ci0gICAgICAgIGNvbnN0IEludFNpemUmIGJvdHRvbVJp
Z2h0KCkgY29uc3QgeyByZXR1cm4gbV9ib3R0b21SaWdodDsgfQorICAgICAgICB2b2lkIHNldFRv
cExlZnQoY29uc3QgTGF5b3V0U2l6ZSYgc2l6ZSkgeyBtX3RvcExlZnQgPSBzaXplOyB9CisgICAg
ICAgIHZvaWQgc2V0VG9wUmlnaHQoY29uc3QgTGF5b3V0U2l6ZSYgc2l6ZSkgeyBtX3RvcFJpZ2h0
ID0gc2l6ZTsgfQorICAgICAgICB2b2lkIHNldEJvdHRvbUxlZnQoY29uc3QgTGF5b3V0U2l6ZSYg
c2l6ZSkgeyBtX2JvdHRvbUxlZnQgPSBzaXplOyB9CisgICAgICAgIHZvaWQgc2V0Qm90dG9tUmln
aHQoY29uc3QgTGF5b3V0U2l6ZSYgc2l6ZSkgeyBtX2JvdHRvbVJpZ2h0ID0gc2l6ZTsgfQorICAg
ICAgICBjb25zdCBMYXlvdXRTaXplJiB0b3BMZWZ0KCkgY29uc3QgeyByZXR1cm4gbV90b3BMZWZ0
OyB9CisgICAgICAgIGNvbnN0IExheW91dFNpemUmIHRvcFJpZ2h0KCkgY29uc3QgeyByZXR1cm4g
bV90b3BSaWdodDsgfQorICAgICAgICBjb25zdCBMYXlvdXRTaXplJiBib3R0b21MZWZ0KCkgY29u
c3QgeyByZXR1cm4gbV9ib3R0b21MZWZ0OyB9CisgICAgICAgIGNvbnN0IExheW91dFNpemUmIGJv
dHRvbVJpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9ib3R0b21SaWdodDsgfQogCiAgICAgICAgIGJv
b2wgaXNaZXJvKCkgY29uc3Q7CiAKQEAgLTYxLDM1ICs2MywzNSBAQCBwdWJsaWM6CiAgICAgICAg
IHZvaWQgZXhjbHVkZUxvZ2ljYWxFZGdlcyhib29sIGlzSG9yaXpvbnRhbCwgYm9vbCBleGNsdWRl
TG9naWNhbExlZnRFZGdlLCBib29sIGV4Y2x1ZGVMb2dpY2FsUmlnaHRFZGdlKTsKIAogICAgICAg
ICB2b2lkIHNjYWxlKGZsb2F0IGZhY3Rvcik7Ci0gICAgICAgIHZvaWQgZXhwYW5kKGludCB0b3BX
aWR0aCwgaW50IGJvdHRvbVdpZHRoLCBpbnQgbGVmdFdpZHRoLCBpbnQgcmlnaHRXaWR0aCk7Ci0g
ICAgICAgIHZvaWQgZXhwYW5kKGludCBzaXplKSB7IGV4cGFuZChzaXplLCBzaXplLCBzaXplLCBz
aXplKTsgfQotICAgICAgICB2b2lkIHNocmluayhpbnQgdG9wV2lkdGgsIGludCBib3R0b21XaWR0
aCwgaW50IGxlZnRXaWR0aCwgaW50IHJpZ2h0V2lkdGgpIHsgZXhwYW5kKC10b3BXaWR0aCwgLWJv
dHRvbVdpZHRoLCAtbGVmdFdpZHRoLCAtcmlnaHRXaWR0aCk7IH0KLSAgICAgICAgdm9pZCBzaHJp
bmsoaW50IHNpemUpIHsgc2hyaW5rKHNpemUsIHNpemUsIHNpemUsIHNpemUpOyB9CisgICAgICAg
IHZvaWQgZXhwYW5kKGNvbnN0IExheW91dFVuaXQmIHRvcFdpZHRoLCBjb25zdCBMYXlvdXRVbml0
JiBib3R0b21XaWR0aCwgY29uc3QgTGF5b3V0VW5pdCYgbGVmdFdpZHRoLCBjb25zdCBMYXlvdXRV
bml0JiByaWdodFdpZHRoKTsKKyAgICAgICAgdm9pZCBleHBhbmQoY29uc3QgTGF5b3V0VW5pdCYg
c2l6ZSkgeyBleHBhbmQoc2l6ZSwgc2l6ZSwgc2l6ZSwgc2l6ZSk7IH0KKyAgICAgICAgdm9pZCBz
aHJpbmsoY29uc3QgTGF5b3V0VW5pdCYgdG9wV2lkdGgsIGNvbnN0IExheW91dFVuaXQmIGJvdHRv
bVdpZHRoLCBjb25zdCBMYXlvdXRVbml0JiBsZWZ0V2lkdGgsIGNvbnN0IExheW91dFVuaXQmIHJp
Z2h0V2lkdGgpIHsgZXhwYW5kKC10b3BXaWR0aCwgLWJvdHRvbVdpZHRoLCAtbGVmdFdpZHRoLCAt
cmlnaHRXaWR0aCk7IH0KKyAgICAgICAgdm9pZCBzaHJpbmsoY29uc3QgTGF5b3V0VW5pdCYgc2l6
ZSkgeyBzaHJpbmsoc2l6ZSwgc2l6ZSwgc2l6ZSwgc2l6ZSk7IH0KIAogICAgIHByaXZhdGU6Ci0g
ICAgICAgIEludFNpemUgbV90b3BMZWZ0OwotICAgICAgICBJbnRTaXplIG1fdG9wUmlnaHQ7Ci0g
ICAgICAgIEludFNpemUgbV9ib3R0b21MZWZ0OwotICAgICAgICBJbnRTaXplIG1fYm90dG9tUmln
aHQ7CisgICAgICAgIExheW91dFNpemUgbV90b3BMZWZ0OworICAgICAgICBMYXlvdXRTaXplIG1f
dG9wUmlnaHQ7CisgICAgICAgIExheW91dFNpemUgbV9ib3R0b21MZWZ0OworICAgICAgICBMYXlv
dXRTaXplIG1fYm90dG9tUmlnaHQ7CiAgICAgfTsKIAotICAgIGV4cGxpY2l0IFJvdW5kZWRSZWN0
KGNvbnN0IEludFJlY3QmLCBjb25zdCBSYWRpaSYgPSBSYWRpaSgpKTsKLSAgICBSb3VuZGVkUmVj
dChpbnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50IGhlaWdodCk7Ci0gICAgUm91bmRlZFJlY3Qo
Y29uc3QgSW50UmVjdCYsIGNvbnN0IEludFNpemUmIHRvcExlZnQsIGNvbnN0IEludFNpemUmIHRv
cFJpZ2h0LCBjb25zdCBJbnRTaXplJiBib3R0b21MZWZ0LCBjb25zdCBJbnRTaXplJiBib3R0b21S
aWdodCk7CisgICAgZXhwbGljaXQgUm91bmRlZFJlY3QoY29uc3QgTGF5b3V0UmVjdCYsIGNvbnN0
IFJhZGlpJiA9IFJhZGlpKCkpOworICAgIFJvdW5kZWRSZWN0KGNvbnN0IExheW91dFVuaXQmLCBj
b25zdCBMYXlvdXRVbml0JiwgY29uc3QgTGF5b3V0VW5pdCYgd2lkdGgsIGNvbnN0IExheW91dFVu
aXQmIGhlaWdodCk7CisgICAgUm91bmRlZFJlY3QoY29uc3QgTGF5b3V0UmVjdCYsIGNvbnN0IExh
eW91dFNpemUmIHRvcExlZnQsIGNvbnN0IExheW91dFNpemUmIHRvcFJpZ2h0LCBjb25zdCBMYXlv
dXRTaXplJiBib3R0b21MZWZ0LCBjb25zdCBMYXlvdXRTaXplJiBib3R0b21SaWdodCk7CiAKLSAg
ICBjb25zdCBJbnRSZWN0JiByZWN0KCkgY29uc3QgeyByZXR1cm4gbV9yZWN0OyB9CisgICAgY29u
c3QgTGF5b3V0UmVjdCYgcmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdDsgfQogICAgIGNvbnN0
IFJhZGlpJiByYWRpaSgpIGNvbnN0IHsgcmV0dXJuIG1fcmFkaWk7IH0KICAgICBib29sIGlzUm91
bmRlZCgpIGNvbnN0IHsgcmV0dXJuICFtX3JhZGlpLmlzWmVybygpOyB9CiAgICAgYm9vbCBpc0Vt
cHR5KCkgY29uc3QgeyByZXR1cm4gbV9yZWN0LmlzRW1wdHkoKTsgfQogCi0gICAgdm9pZCBzZXRS
ZWN0KGNvbnN0IEludFJlY3QmIHJlY3QpIHsgbV9yZWN0ID0gcmVjdDsgfQorICAgIHZvaWQgc2V0
UmVjdChjb25zdCBMYXlvdXRSZWN0JiByZWN0KSB7IG1fcmVjdCA9IHJlY3Q7IH0KICAgICB2b2lk
IHNldFJhZGlpKGNvbnN0IFJhZGlpJiByYWRpaSkgeyBtX3JhZGlpID0gcmFkaWk7IH0KIAotICAg
IHZvaWQgbW92ZShjb25zdCBJbnRTaXplJiBzaXplKSB7IG1fcmVjdC5tb3ZlKHNpemUpOyB9Ci0g
ICAgdm9pZCBpbmZsYXRlKGludCBzaXplKSB7IG1fcmVjdC5pbmZsYXRlKHNpemUpOyAgfQotICAg
IHZvaWQgaW5mbGF0ZVdpdGhSYWRpaShpbnQgc2l6ZSk7Ci0gICAgdm9pZCBleHBhbmRSYWRpaShp
bnQgc2l6ZSkgeyBtX3JhZGlpLmV4cGFuZChzaXplKTsgfQotICAgIHZvaWQgc2hyaW5rUmFkaWko
aW50IHNpemUpIHsgbV9yYWRpaS5zaHJpbmsoc2l6ZSk7IH0KKyAgICB2b2lkIG1vdmUoY29uc3Qg
TGF5b3V0U2l6ZSYgc2l6ZSkgeyBtX3JlY3QubW92ZShzaXplKTsgfQorICAgIHZvaWQgaW5mbGF0
ZShjb25zdCBMYXlvdXRVbml0JiBzaXplKSB7IG1fcmVjdC5pbmZsYXRlKHNpemUpOyAgfQorICAg
IHZvaWQgaW5mbGF0ZVdpdGhSYWRpaShjb25zdCBMYXlvdXRVbml0JiBzaXplKTsKKyAgICB2b2lk
IGV4cGFuZFJhZGlpKGNvbnN0IExheW91dFVuaXQmIHNpemUpIHsgbV9yYWRpaS5leHBhbmQoc2l6
ZSk7IH0KKyAgICB2b2lkIHNocmlua1JhZGlpKGNvbnN0IExheW91dFVuaXQmIHNpemUpIHsgbV9y
YWRpaS5zaHJpbmsoc2l6ZSk7IH0KIAogICAgIHZvaWQgaW5jbHVkZUxvZ2ljYWxFZGdlcyhjb25z
dCBSYWRpaSYgZWRnZXMsIGJvb2wgaXNIb3Jpem9udGFsLCBib29sIGluY2x1ZGVMb2dpY2FsTGVm
dEVkZ2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOwogICAgIHZvaWQgZXhjbHVkZUxv
Z2ljYWxFZGdlcyhib29sIGlzSG9yaXpvbnRhbCwgYm9vbCBleGNsdWRlTG9naWNhbExlZnRFZGdl
LCBib29sIGV4Y2x1ZGVMb2dpY2FsUmlnaHRFZGdlKTsKQEAgLTEwMiw3ICsxMDQsNyBAQCBwdWJs
aWM6CiAgICAgYm9vbCBpbnRlcnNlY3RzUXVhZChjb25zdCBGbG9hdFF1YWQmKSBjb25zdDsKIAog
cHJpdmF0ZToKLSAgICBJbnRSZWN0IG1fcmVjdDsKKyAgICBMYXlvdXRSZWN0IG1fcmVjdDsKICAg
ICBSYWRpaSBtX3JhZGlpOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9TaGFkb3dCbHVyLmNwcAppbmRleCA4MmIxODBhNDZlN2EyM2RhNjU3Y2Y2ZWU3ZjJhMmEy
MzlmZjU5Y2IyLi5kNjc1MjI4YmJiZWJkOWFhZDJmYzc2MmRkNGYyMzIzY2U4MmFlMDgxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcApAQCAt
ODMsNyArODMsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX2ltYWdlQnVmZmVyLmdldCgp
OwogICAgIH0KIAotICAgIGJvb2wgc2V0Q2FjaGVkU2hhZG93VmFsdWVzKGNvbnN0IEZsb2F0U2l6
ZSYgcmFkaXVzLCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29u
c3QgRmxvYXRSZWN0JiBzaGFkb3dSZWN0LCBjb25zdCBSb3VuZGVkUmVjdDo6UmFkaWkmIHJhZGlp
LCBjb25zdCBGbG9hdFNpemUmIGxheWVyU2l6ZSkKKyAgICBib29sIHNldENhY2hlZFNoYWRvd1Zh
bHVlcyhjb25zdCBGbG9hdFNpemUmIHJhZGl1cywgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNw
YWNlIGNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgc2hhZG93UmVjdCwgY29uc3QgRmxvYXRS
b3VuZGVkUmVjdDo6UmFkaWkmIHJhZGlpLCBjb25zdCBGbG9hdFNpemUmIGxheWVyU2l6ZSkKICAg
ICB7CiAgICAgICAgIGlmICghbV9sYXN0V2FzSW5zZXQgJiYgbV9sYXN0UmFkaXVzID09IHJhZGl1
cyAmJiBtX2xhc3RDb2xvciA9PSBjb2xvciAmJiBtX2xhc3RDb2xvclNwYWNlID09IGNvbG9yU3Bh
Y2UgJiYgbV9sYXN0U2hhZG93UmVjdCA9PSBzaGFkb3dSZWN0ICYmICBtX2xhc3RSYWRpaSA9PSBy
YWRpaSAmJiBtX2xhc3RMYXllclNpemUgPT0gbGF5ZXJTaXplKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwpAQCAtOTksNyArOTksNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KIAotICAgIGJvb2wgc2V0Q2FjaGVkSW5zZXRTaGFkb3dWYWx1ZXMoY29uc3QgRmxvYXRT
aXplJiByYWRpdXMsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBj
b25zdCBGbG9hdFJlY3QmIGJvdW5kcywgY29uc3QgRmxvYXRSZWN0JiBzaGFkb3dSZWN0LCBjb25z
dCBSb3VuZGVkUmVjdDo6UmFkaWkmIHJhZGlpKQorICAgIGJvb2wgc2V0Q2FjaGVkSW5zZXRTaGFk
b3dWYWx1ZXMoY29uc3QgRmxvYXRTaXplJiByYWRpdXMsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29s
b3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kcywgY29uc3QgRmxvYXRS
ZWN0JiBzaGFkb3dSZWN0LCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSYgcmFkaWkpCiAg
ICAgewogICAgICAgICBpZiAobV9sYXN0V2FzSW5zZXQgJiYgbV9sYXN0UmFkaXVzID09IHJhZGl1
cyAmJiBtX2xhc3RDb2xvciA9PSBjb2xvciAmJiBtX2xhc3RDb2xvclNwYWNlID09IGNvbG9yU3Bh
Y2UgJiYgbV9sYXN0SW5zZXRCb3VuZHMgPT0gYm91bmRzICYmIHNoYWRvd1JlY3QgPT0gbV9sYXN0
U2hhZG93UmVjdCAmJiByYWRpaSA9PSBtX2xhc3RSYWRpaSkKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKQEAgLTE0Nyw3ICsxNDcsNyBAQCBwcml2YXRlOgogICAgIAogICAgIEZsb2F0UmVjdCBt
X2xhc3RJbnNldEJvdW5kczsKICAgICBGbG9hdFJlY3QgbV9sYXN0U2hhZG93UmVjdDsKLSAgICBS
b3VuZGVkUmVjdDo6UmFkaWkgbV9sYXN0UmFkaWk7CisgICAgRmxvYXRSb3VuZGVkUmVjdDo6UmFk
aWkgbV9sYXN0UmFkaWk7CiAgICAgQ29sb3IgbV9sYXN0Q29sb3I7CiAgICAgQ29sb3JTcGFjZSBt
X2xhc3RDb2xvclNwYWNlOwogICAgIEZsb2F0U2l6ZSBtX2xhc3RSYWRpdXM7CkBAIC00ODIsNyAr
NDgyLDcgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3U2hhZG93QnVmZmVyKEdyYXBoaWNzQ29udGV4
dCogZ3JhcGhpY3NDb250ZXh0KQogICAgIGdyYXBoaWNzQ29udGV4dC0+ZmlsbFJlY3QoRmxvYXRS
ZWN0KG1fbGF5ZXJPcmlnaW4sIG1fc291cmNlUmVjdC5zaXplKCkpKTsKIH0KIAotc3RhdGljIHZv
aWQgY29tcHV0ZVNsaWNlU2l6ZXNGcm9tUmFkaWkoY29uc3QgSW50U2l6ZSYgdHdpY2VSYWRpdXMs
IGNvbnN0IFJvdW5kZWRSZWN0OjpSYWRpaSYgcmFkaWksIGludCYgbGVmdFNsaWNlLCBpbnQmIHJp
Z2h0U2xpY2UsIGludCYgdG9wU2xpY2UsIGludCYgYm90dG9tU2xpY2UpCitzdGF0aWMgdm9pZCBj
b21wdXRlU2xpY2VTaXplc0Zyb21SYWRpaShjb25zdCBJbnRTaXplJiB0d2ljZVJhZGl1cywgY29u
c3QgRmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkmIHJhZGlpLCBpbnQmIGxlZnRTbGljZSwgaW50JiBy
aWdodFNsaWNlLCBpbnQmIHRvcFNsaWNlLCBpbnQmIGJvdHRvbVNsaWNlKQogewogICAgIGxlZnRT
bGljZSA9IHR3aWNlUmFkaXVzLndpZHRoKCkgKyBzdGQ6Om1heChyYWRpaS50b3BMZWZ0KCkud2lk
dGgoKSwgcmFkaWkuYm90dG9tTGVmdCgpLndpZHRoKCkpOwogICAgIHJpZ2h0U2xpY2UgPSB0d2lj
ZVJhZGl1cy53aWR0aCgpICsgc3RkOjptYXgocmFkaWkudG9wUmlnaHQoKS53aWR0aCgpLCByYWRp
aS5ib3R0b21SaWdodCgpLndpZHRoKCkpOwpAQCAtNDkxLDcgKzQ5MSw3IEBAIHN0YXRpYyB2b2lk
IGNvbXB1dGVTbGljZVNpemVzRnJvbVJhZGlpKGNvbnN0IEludFNpemUmIHR3aWNlUmFkaXVzLCBj
b25zdCBSb3VuZGVkCiAgICAgYm90dG9tU2xpY2UgPSB0d2ljZVJhZGl1cy5oZWlnaHQoKSArIHN0
ZDo6bWF4KHJhZGlpLmJvdHRvbUxlZnQoKS5oZWlnaHQoKSwgcmFkaWkuYm90dG9tUmlnaHQoKS5o
ZWlnaHQoKSk7CiB9CiAKLUludFNpemUgU2hhZG93Qmx1cjo6dGVtcGxhdGVTaXplKGNvbnN0IElu
dFNpemUmIHJhZGl1c1BhZGRpbmcsIGNvbnN0IFJvdW5kZWRSZWN0OjpSYWRpaSYgcmFkaWkpIGNv
bnN0CitJbnRTaXplIFNoYWRvd0JsdXI6OnRlbXBsYXRlU2l6ZShjb25zdCBJbnRTaXplJiByYWRp
dXNQYWRkaW5nLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSYgcmFkaWkpIGNvbnN0CiB7
CiAgICAgY29uc3QgaW50IHRlbXBsYXRlU2lkZUxlbmd0aCA9IDE7CiAKQEAgLTUwOSw3ICs1MDks
NyBAQCBJbnRTaXplIFNoYWRvd0JsdXI6OnRlbXBsYXRlU2l6ZShjb25zdCBJbnRTaXplJiByYWRp
dXNQYWRkaW5nLCBjb25zdCBSb3VuZGVkUmVjdAogICAgICAgICAgICAgICAgICAgIHRlbXBsYXRl
U2lkZUxlbmd0aCArIHRvcFNsaWNlICsgYm90dG9tU2xpY2UpOwogfQogCi12b2lkIFNoYWRvd0Js
dXI6OmRyYXdSZWN0U2hhZG93KEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25z
dCBGbG9hdFJlY3QmIHNoYWRvd2VkUmVjdCwgY29uc3QgUm91bmRlZFJlY3Q6OlJhZGlpJiByYWRp
aSkKK3ZvaWQgU2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3coR3JhcGhpY3NDb250ZXh0KiBncmFw
aGljc0NvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgc2hhZG93ZWRSZWN0LCBjb25zdCBGbG9hdFJv
dW5kZWRSZWN0OjpSYWRpaSYgcmFkaWkpCiB7CiAgICAgSW50UmVjdCBsYXllclJlY3QgPSBjYWxj
dWxhdGVMYXllckJvdW5kaW5nUmVjdChncmFwaGljc0NvbnRleHQsIHNoYWRvd2VkUmVjdCwgZ3Jh
cGhpY3NDb250ZXh0LT5jbGlwQm91bmRzKCkpOwogICAgIGlmIChsYXllclJlY3QuaXNFbXB0eSgp
KQpAQCAtNTM2LDcgKzUzNiw3IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3coR3Jh
cGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0UmVjCiAgICAgZHJhd1Jl
Y3RTaGFkb3dXaXRoVGlsaW5nKGdyYXBoaWNzQ29udGV4dCwgc2hhZG93ZWRSZWN0LCByYWRpaSwg
dGVtcGxhdGVTaXplLCBlZGdlU2l6ZSk7CiB9CiAKLXZvaWQgU2hhZG93Qmx1cjo6ZHJhd0luc2V0
U2hhZG93KEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFJlY3Qm
IHJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgaG9sZVJlY3QsIGNvbnN0IFJvdW5kZWRSZWN0OjpSYWRp
aSYgaG9sZVJhZGlpKQordm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3coR3JhcGhpY3ND
b250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBob2xlUmVjdCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkmIGhvbGVSYWRp
aSkKIHsKICAgICBJbnRSZWN0IGxheWVyUmVjdCA9IGNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0
KGdyYXBoaWNzQ29udGV4dCwgcmVjdCwgZ3JhcGhpY3NDb250ZXh0LT5jbGlwQm91bmRzKCkpOwog
ICAgIGlmIChsYXllclJlY3QuaXNFbXB0eSgpKQpAQCAtNTYzLDcgKzU2Myw3IEBAIHZvaWQgU2hh
ZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93KEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0
LCBjb25zdCBGbG9hdFJlCiAgICAgZHJhd0luc2V0U2hhZG93V2l0aFRpbGluZyhncmFwaGljc0Nv
bnRleHQsIHJlY3QsIGhvbGVSZWN0LCBob2xlUmFkaWksIHRlbXBsYXRlU2l6ZSwgZWRnZVNpemUp
OwogfQogCi12b2lkIFNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0aG91dFRpbGluZyhHcmFw
aGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBzaGFkb3dlZFJl
Y3QsIGNvbnN0IFJvdW5kZWRSZWN0OjpSYWRpaSYgcmFkaWksIGNvbnN0IEludFJlY3QmIGxheWVy
UmVjdCkKK3ZvaWQgU2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3dXaXRob3V0VGlsaW5nKEdyYXBo
aWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHNoYWRvd2VkUmVj
dCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkmIHJhZGlpLCBjb25zdCBJbnRSZWN0JiBs
YXllclJlY3QpCiB7CiAgICAgbV9sYXllckltYWdlID0gU2NyYXRjaEJ1ZmZlcjo6c2hhcmVkKCku
Z2V0U2NyYXRjaEJ1ZmZlcihsYXllclJlY3Quc2l6ZSgpKTsKICAgICBpZiAoIW1fbGF5ZXJJbWFn
ZSkKQEAgLTU5OCw3ICs1OTgsNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0
aG91dFRpbGluZyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgYwogICAgIFNjcmF0
Y2hCdWZmZXI6OnNoYXJlZCgpLnNjaGVkdWxlU2NyYXRjaEJ1ZmZlclB1cmdlKCk7CiB9CiAKLXZv
aWQgU2hhZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93V2l0aG91dFRpbGluZyhHcmFwaGljc0NvbnRl
eHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIGhvbGVSZWN0LCBjb25zdCBSb3VuZGVkUmVjdDo6UmFkaWkmIGhvbGVSYWRpaSwgY29uc3Qg
SW50UmVjdCYgbGF5ZXJSZWN0KQordm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRo
b3V0VGlsaW5nKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFJl
Y3QmIHJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgaG9sZVJlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJl
Y3Q6OlJhZGlpJiBob2xlUmFkaWksIGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCkKIHsKICAgICBt
X2xheWVySW1hZ2UgPSBTY3JhdGNoQnVmZmVyOjpzaGFyZWQoKS5nZXRTY3JhdGNoQnVmZmVyKGxh
eWVyUmVjdC5zaXplKCkpOwogICAgIGlmICghbV9sYXllckltYWdlKQpAQCAtNjcxLDcgKzY3MSw3
IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93V2l0aG91dFRpbGluZyhHcmFwaGlj
c0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwKICAgICAgdGhlIHNoYWRvdy4KICAqLwogCi12b2lk
IFNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvd1dpdGhUaWxpbmcoR3JhcGhpY3NDb250ZXh0KiBn
cmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRSZWN0JiBo
b2xlUmVjdCwgY29uc3QgUm91bmRlZFJlY3Q6OlJhZGlpJiByYWRpaSwgY29uc3QgSW50U2l6ZSYg
dGVtcGxhdGVTaXplLCBjb25zdCBJbnRTaXplJiBlZGdlU2l6ZSkKK3ZvaWQgU2hhZG93Qmx1cjo6
ZHJhd0luc2V0U2hhZG93V2l0aFRpbGluZyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4
dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdFJlY3QmIGhvbGVSZWN0LCBjb25z
dCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSYgcmFkaWksIGNvbnN0IEludFNpemUmIHRlbXBsYXRl
U2l6ZSwgY29uc3QgSW50U2l6ZSYgZWRnZVNpemUpCiB7CiAgICAgbV9sYXllckltYWdlID0gU2Ny
YXRjaEJ1ZmZlcjo6c2hhcmVkKCkuZ2V0U2NyYXRjaEJ1ZmZlcih0ZW1wbGF0ZVNpemUpOwogICAg
IGlmICghbV9sYXllckltYWdlKQpAQCAtNzM2LDcgKzczNiw3IEBAIHZvaWQgU2hhZG93Qmx1cjo6
ZHJhd0luc2V0U2hhZG93V2l0aFRpbGluZyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4
dCwgY29uCiAgICAgU2NyYXRjaEJ1ZmZlcjo6c2hhcmVkKCkuc2NoZWR1bGVTY3JhdGNoQnVmZmVy
UHVyZ2UoKTsKIH0KIAotdm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvd1dpdGhUaWxpbmco
R3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgc2hhZG93
ZWRSZWN0LCBjb25zdCBSb3VuZGVkUmVjdDo6UmFkaWkmIHJhZGlpLCBjb25zdCBJbnRTaXplJiB0
ZW1wbGF0ZVNpemUsIGNvbnN0IEludFNpemUmIGVkZ2VTaXplKQordm9pZCBTaGFkb3dCbHVyOjpk
cmF3UmVjdFNoYWRvd1dpdGhUaWxpbmcoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQs
IGNvbnN0IEZsb2F0UmVjdCYgc2hhZG93ZWRSZWN0LCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0OjpS
YWRpaSYgcmFkaWksIGNvbnN0IEludFNpemUmIHRlbXBsYXRlU2l6ZSwgY29uc3QgSW50U2l6ZSYg
ZWRnZVNpemUpCiB7CiAgICAgbV9sYXllckltYWdlID0gU2NyYXRjaEJ1ZmZlcjo6c2hhcmVkKCku
Z2V0U2NyYXRjaEJ1ZmZlcih0ZW1wbGF0ZVNpemUpOwogICAgIGlmICghbV9sYXllckltYWdlKQpA
QCAtNzgxLDcgKzc4MSw3IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3dXaXRoVGls
aW5nKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zCiAgICAgU2NyYXRjaEJ1
ZmZlcjo6c2hhcmVkKCkuc2NoZWR1bGVTY3JhdGNoQnVmZmVyUHVyZ2UoKTsKIH0KIAotdm9pZCBT
aGFkb3dCbHVyOjpkcmF3TGF5ZXJQaWVjZXMoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRl
eHQsIGNvbnN0IEZsb2F0UmVjdCYgc2hhZG93Qm91bmRzLCBjb25zdCBSb3VuZGVkUmVjdDo6UmFk
aWkmIHJhZGlpLCBjb25zdCBJbnRTaXplJiBidWZmZXJQYWRkaW5nLCBjb25zdCBJbnRTaXplJiB0
ZW1wbGF0ZVNpemUsIFNoYWRvd0RpcmVjdGlvbiBkaXJlY3Rpb24pCit2b2lkIFNoYWRvd0JsdXI6
OmRyYXdMYXllclBpZWNlcyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3Qg
RmxvYXRSZWN0JiBzaGFkb3dCb3VuZHMsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpJiBy
YWRpaSwgY29uc3QgSW50U2l6ZSYgYnVmZmVyUGFkZGluZywgY29uc3QgSW50U2l6ZSYgdGVtcGxh
dGVTaXplLCBTaGFkb3dEaXJlY3Rpb24gZGlyZWN0aW9uKQogewogICAgIGNvbnN0IEludFNpemUg
dHdpY2VSYWRpdXMgPSBJbnRTaXplKGJ1ZmZlclBhZGRpbmcud2lkdGgoKSAqIDIsIGJ1ZmZlclBh
ZGRpbmcuaGVpZ2h0KCkgKiAyKTsKIApAQCAtODkzLDcgKzg5Myw3IEBAIEdyYXBoaWNzQ29udGV4
dCogU2hhZG93Qmx1cjo6YmVnaW5TaGFkb3dMYXllcihHcmFwaGljc0NvbnRleHQgKmNvbnRleHQs
IGNvbnN0IEZsCiAKICAgICAvLyBXZSByZXNldCB0aGUgc2NyYXRjaCBidWZmZXIgdmFsdWVzIGhl
cmUsIGJlY2F1c2UgdGhlIGJ1ZmZlciB3aWxsIG5vIGxvbmdlciBjb250YWluCiAgICAgLy8gZGF0
YSBmcm9tIGFueSBwcmV2aW91cyByZWN0YW5nbGUgb3IgaW5zZXQgc2hhZG93cyBkcmF3biB2aWEg
dGhlIHRpbGluZyBwYXRoLgotICAgIFNjcmF0Y2hCdWZmZXI6OnNoYXJlZCgpLnNldENhY2hlZFNo
YWRvd1ZhbHVlcyhGbG9hdFNpemUoKSwgQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdC
LCBJbnRSZWN0KCksIFJvdW5kZWRSZWN0OjpSYWRpaSgpLCBtX2xheWVyU2l6ZSk7CisgICAgU2Ny
YXRjaEJ1ZmZlcjo6c2hhcmVkKCkuc2V0Q2FjaGVkU2hhZG93VmFsdWVzKEZsb2F0U2l6ZSgpLCBD
b2xvcjo6YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0IsIEludFJlY3QoKSwgRmxvYXRSb3VuZGVk
UmVjdDo6UmFkaWkoKSwgbV9sYXllclNpemUpOwogICAgIG1fbGF5ZXJJbWFnZSA9IFNjcmF0Y2hC
dWZmZXI6OnNoYXJlZCgpLmdldFNjcmF0Y2hCdWZmZXIobGF5ZXJSZWN0LnNpemUoKSk7CiAKICAg
ICBHcmFwaGljc0NvbnRleHQqIHNoYWRvd0NvbnRleHQgPSBtX2xheWVySW1hZ2UtPmNvbnRleHQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0Js
dXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuaAppbmRl
eCAzMmZmNjBiNmNiMDNiMjJiOTY4YzhlNzg2N2Q4M2E2ZmFmOTIwNDE3Li45NTllMTdlODliNjhj
MjgwMjAzMmU1YTljMWY5NDk0OTBmMGI3YzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5oCkBAIC0zMiw3ICszMiw3IEBACiAjaW5jbHVkZSAiQ29s
b3IuaCIKICNpbmNsdWRlICJDb2xvclNwYWNlLmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCi0j
aW5jbHVkZSAiUm91bmRlZFJlY3QuaCIKKyNpbmNsdWRlICJGbG9hdFJvdW5kZWRSZWN0LmgiCiAj
aW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTYz
LDggKzYzLDggQEAgcHVibGljOgogICAgIEdyYXBoaWNzQ29udGV4dCogYmVnaW5TaGFkb3dMYXll
cihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGxheWVyQXJlYSk7CiAgICAgdm9p
ZCBlbmRTaGFkb3dMYXllcihHcmFwaGljc0NvbnRleHQqKTsKIAotICAgIHZvaWQgZHJhd1JlY3RT
aGFkb3coR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgUm91bmRlZFJl
Y3Q6OlJhZGlpJik7Ci0gICAgdm9pZCBkcmF3SW5zZXRTaGFkb3coR3JhcGhpY3NDb250ZXh0Kiwg
Y29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiBob2xlUmVjdCwgY29uc3QgUm91bmRl
ZFJlY3Q6OlJhZGlpJiBob2xlUmFkaWkpOworICAgIHZvaWQgZHJhd1JlY3RTaGFkb3coR3JhcGhp
Y3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdDo6UmFk
aWkmKTsKKyAgICB2b2lkIGRyYXdJbnNldFNoYWRvdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBG
bG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmIGhvbGVSZWN0LCBjb25zdCBGbG9hdFJvdW5kZWRS
ZWN0OjpSYWRpaSYgaG9sZVJhZGlpKTsKIAogICAgIHZvaWQgYmx1ckxheWVySW1hZ2UodW5zaWdu
ZWQgY2hhciosIGNvbnN0IEludFNpemUmLCBpbnQgc3RyaWRlKTsKIApAQCAtODUsMTUgKzg1LDE1
IEBAIHByaXZhdGU6CiAgICAgfTsKICAgICAKICAgICBJbnRSZWN0IGNhbGN1bGF0ZUxheWVyQm91
bmRpbmdSZWN0KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgbGF5ZXJBcmVhLCBj
b25zdCBJbnRSZWN0JiBjbGlwUmVjdCk7Ci0gICAgSW50U2l6ZSB0ZW1wbGF0ZVNpemUoY29uc3Qg
SW50U2l6ZSYgYmx1cnJlZEVkZ2VTaXplLCBjb25zdCBSb3VuZGVkUmVjdDo6UmFkaWkmKSBjb25z
dDsKKyAgICBJbnRTaXplIHRlbXBsYXRlU2l6ZShjb25zdCBJbnRTaXplJiBibHVycmVkRWRnZVNp
emUsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpJikgY29uc3Q7CiAKLSAgICB2b2lkIGRy
YXdSZWN0U2hhZG93V2l0aG91dFRpbGluZyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJl
Y3QmLCBjb25zdCBSb3VuZGVkUmVjdDo6UmFkaWkmLCBjb25zdCBJbnRSZWN0JiBsYXllclJlY3Qp
OwotICAgIHZvaWQgZHJhd1JlY3RTaGFkb3dXaXRoVGlsaW5nKEdyYXBoaWNzQ29udGV4dCosIGNv
bnN0IEZsb2F0UmVjdCYsIGNvbnN0IFJvdW5kZWRSZWN0OjpSYWRpaSYsIGNvbnN0IEludFNpemUm
IHNoYWRvd1RlbXBsYXRlU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmx1cnJlZEVkZ2VTaXplKTsKKyAg
ICB2b2lkIGRyYXdSZWN0U2hhZG93V2l0aG91dFRpbGluZyhHcmFwaGljc0NvbnRleHQqLCBjb25z
dCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSYsIGNvbnN0IEludFJl
Y3QmIGxheWVyUmVjdCk7CisgICAgdm9pZCBkcmF3UmVjdFNoYWRvd1dpdGhUaWxpbmcoR3JhcGhp
Y3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdDo6UmFk
aWkmLCBjb25zdCBJbnRTaXplJiBzaGFkb3dUZW1wbGF0ZVNpemUsIGNvbnN0IEludFNpemUmIGJs
dXJyZWRFZGdlU2l6ZSk7CiAKLSAgICB2b2lkIGRyYXdJbnNldFNoYWRvd1dpdGhvdXRUaWxpbmco
R3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiBob2xl
UmVjdCwgY29uc3QgUm91bmRlZFJlY3Q6OlJhZGlpJiwgY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0
KTsKLSAgICB2b2lkIGRyYXdJbnNldFNoYWRvd1dpdGhUaWxpbmcoR3JhcGhpY3NDb250ZXh0Kiwg
Y29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiBob2xlUmVjdCwgY29uc3QgUm91bmRl
ZFJlY3Q6OlJhZGlpJiwgY29uc3QgSW50U2l6ZSYgc2hhZG93VGVtcGxhdGVTaXplLCBjb25zdCBJ
bnRTaXplJiBibHVycmVkRWRnZVNpemUpOworICAgIHZvaWQgZHJhd0luc2V0U2hhZG93V2l0aG91
dFRpbGluZyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJl
Y3QmIGhvbGVSZWN0LCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSYsIGNvbnN0IEludFJl
Y3QmIGxheWVyUmVjdCk7CisgICAgdm9pZCBkcmF3SW5zZXRTaGFkb3dXaXRoVGlsaW5nKEdyYXBo
aWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYgaG9sZVJlY3Qs
IGNvbnN0IEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpJiwgY29uc3QgSW50U2l6ZSYgc2hhZG93VGVt
cGxhdGVTaXplLCBjb25zdCBJbnRTaXplJiBibHVycmVkRWRnZVNpemUpOwogICAgIAotICAgIHZv
aWQgZHJhd0xheWVyUGllY2VzKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgc2hh
ZG93Qm91bmRzLCBjb25zdCBSb3VuZGVkUmVjdDo6UmFkaWkmLCBjb25zdCBJbnRTaXplJiByb3Vu
ZGVkUmFkaXVzLCBjb25zdCBJbnRTaXplJiB0ZW1wbGF0ZVNpemUsIFNoYWRvd0RpcmVjdGlvbik7
CisgICAgdm9pZCBkcmF3TGF5ZXJQaWVjZXMoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRS
ZWN0JiBzaGFkb3dCb3VuZHMsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpJiwgY29uc3Qg
SW50U2l6ZSYgcm91bmRlZFJhZGl1cywgY29uc3QgSW50U2l6ZSYgdGVtcGxhdGVTaXplLCBTaGFk
b3dEaXJlY3Rpb24pOwogICAgIAogICAgIHZvaWQgYmx1clNoYWRvd0J1ZmZlcihjb25zdCBJbnRT
aXplJiB0ZW1wbGF0ZVNpemUpOwogICAgIHZvaWQgYmx1ckFuZENvbG9yU2hhZG93QnVmZmVyKGNv
bnN0IEludFNpemUmIHRlbXBsYXRlU2l6ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAK
aW5kZXggMGZhNzUwMzk2OWQ1MmVkNDNmNDQyZGRiMjk3MTQyYzdlNDIyN2VkOS4uOWZmYzI5MTVh
N2NmODk0ZjVmMGU4MGUxOWE5Y2U1N2I1OTNhMjJkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENh
aXJvLmNwcApAQCAtMTAxMiw3ICsxMDEyLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNjYWxl
KGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKICAgICBtX2RhdGEtPnNjYWxlKHNpemUpOwogfQogCi12
b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcE91dChjb25zdCBJbnRSZWN0JiByKQordm9pZCBHcmFw
aGljc0NvbnRleHQ6OmNsaXBPdXQoY29uc3QgRmxvYXRSZWN0JiByKQogewogICAgIGlmIChwYWlu
dGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTEwMjgsMTMgKzEwMjgsMTMgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBPdXQoY29uc3QgSW50UmVjdCYgcikKICAgICBjYWly
b19zZXRfZmlsbF9ydWxlKGNyLCBzYXZlZEZpbGxSdWxlKTsKIH0KIAotdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OmZpbGxSb3VuZGVkUmVjdChjb25zdCBJbnRSZWN0JiByLCBjb25zdCBJbnRTaXplJiB0
b3BMZWZ0LCBjb25zdCBJbnRTaXplJiB0b3BSaWdodCwgY29uc3QgSW50U2l6ZSYgYm90dG9tTGVm
dCwgY29uc3QgSW50U2l6ZSYgYm90dG9tUmlnaHQsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JT
cGFjZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUm91bmRlZFJlY3QoY29uc3QgRmxvYXRS
ZWN0JiByLCBjb25zdCBGbG9hdFNpemUmIHRvcExlZnQsIGNvbnN0IEZsb2F0U2l6ZSYgdG9wUmln
aHQsIGNvbnN0IEZsb2F0U2l6ZSYgYm90dG9tTGVmdCwgY29uc3QgRmxvYXRTaXplJiBib3R0b21S
aWdodCwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlKQogewogICAgIGlmIChwYWludGlu
Z0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChoYXNTaGFkb3coKSkKLSAg
ICAgICAgcGxhdGZvcm1Db250ZXh0KCktPnNoYWRvd0JsdXIoKS5kcmF3UmVjdFNoYWRvdyh0aGlz
LCByLCBSb3VuZGVkUmVjdDo6UmFkaWkodG9wTGVmdCwgdG9wUmlnaHQsIGJvdHRvbUxlZnQsIGJv
dHRvbVJpZ2h0KSk7CisgICAgICAgIHBsYXRmb3JtQ29udGV4dCgpLT5zaGFkb3dCbHVyKCkuZHJh
d1JlY3RTaGFkb3codGhpcywgciwgRmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkodG9wTGVmdCwgdG9w
UmlnaHQsIGJvdHRvbUxlZnQsIGJvdHRvbVJpZ2h0KSk7CiAKICAgICBjYWlyb190KiBjciA9IHBs
YXRmb3JtQ29udGV4dCgpLT5jcigpOwogICAgIGNhaXJvX3NhdmUoY3IpOwpAQCAtMTA0Niw3ICsx
MDQ2LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSb3VuZGVkUmVjdChjb25zdCBJbnRS
ZWN0JiByLCBjb25zdCBJbnRTaXplJiB0b3BMZWZ0LAogICAgIGNhaXJvX3Jlc3RvcmUoY3IpOwog
fQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUoY29uc3Qg
SW50UmVjdCYgcmVjdCwgY29uc3QgUm91bmRlZFJlY3QmIHJvdW5kZWRIb2xlUmVjdCwgY29uc3Qg
Q29sb3ImIGNvbG9yLCBDb2xvclNwYWNlKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0
V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgUm91bmRlZFJlY3Qm
IHJvdW5kZWRIb2xlUmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlKQogewogICAg
IGlmIChwYWludGluZ0Rpc2FibGVkKCkgfHwgIWNvbG9yLmlzVmFsaWQoKSkKICAgICAgICAgcmV0
dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3Jh
cGhpY3NDb250ZXh0Q0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
R3JhcGhpY3NDb250ZXh0Q0cuY3BwCmluZGV4IGI4NTc4OTk3MmVhMGI4ZDJkZDlmM2Q4ZTE2Y2Y2
ZDExMDA5NjdiNzguLjdmMDZiZmFlZTdlNWJmYjAzMjg2OGM1NWU1ODY4MzY0Y2M0NTZhZTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29u
dGV4dENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFw
aGljc0NvbnRleHRDRy5jcHAKQEAgLTg0Niw3ICs4NDYsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dDo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYgY29sb3IsIENv
bG9yUwogICAgICAgICBzZXRDR0ZpbGxDb2xvcihjb250ZXh0LCBvbGRGaWxsQ29sb3IsIG9sZENv
bG9yU3BhY2UpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJvdW5kZWRSZWN0KGNv
bnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEludFNpemUmIHRvcExlZnQsIGNvbnN0IEludFNpemUm
IHRvcFJpZ2h0LCBjb25zdCBJbnRTaXplJiBib3R0b21MZWZ0LCBjb25zdCBJbnRTaXplJiBib3R0
b21SaWdodCwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCit2b2lk
IEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwg
Y29uc3QgRmxvYXRTaXplJiB0b3BMZWZ0LCBjb25zdCBGbG9hdFNpemUmIHRvcFJpZ2h0LCBjb25z
dCBGbG9hdFNpemUmIGJvdHRvbUxlZnQsIGNvbnN0IEZsb2F0U2l6ZSYgYm90dG9tUmlnaHQsIGNv
bnN0IENvbG9yJiBjb2xvciwgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQogewogICAgIGlmIChwYWlu
dGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTg2NSw3ICs4NjUsNyBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJvdW5kZWRSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QsIGNv
bnN0IEludFNpemUmIHRvcExlZgogICAgICAgICBDR0NvbnRleHRTZXRTaGFkb3dXaXRoQ29sb3Io
cGxhdGZvcm1Db250ZXh0KCksIENHU2l6ZVplcm8sIDAsIDApOwogCiAgICAgICAgIFNoYWRvd0Js
dXIgY29udGV4dFNoYWRvdyhtX3N0YXRlKTsKLSAgICAgICAgY29udGV4dFNoYWRvdy5kcmF3UmVj
dFNoYWRvdyh0aGlzLCByZWN0LCBSb3VuZGVkUmVjdDo6UmFkaWkodG9wTGVmdCwgdG9wUmlnaHQs
IGJvdHRvbUxlZnQsIGJvdHRvbVJpZ2h0KSk7CisgICAgICAgIGNvbnRleHRTaGFkb3cuZHJhd1Jl
Y3RTaGFkb3codGhpcywgcmVjdCwgRmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkodG9wTGVmdCwgdG9w
UmlnaHQsIGJvdHRvbUxlZnQsIGJvdHRvbVJpZ2h0KSk7CiAgICAgfQogCiAgICAgYm9vbCBlcXVh
bFdpZHRocyA9ICh0b3BMZWZ0LndpZHRoKCkgPT0gdG9wUmlnaHQud2lkdGgoKSAmJiB0b3BSaWdo
dC53aWR0aCgpID09IGJvdHRvbUxlZnQud2lkdGgoKSAmJiBib3R0b21MZWZ0LndpZHRoKCkgPT0g
Ym90dG9tUmlnaHQud2lkdGgoKSk7CkBAIC04ODYsNyArODg2LDcgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OmZpbGxSb3VuZGVkUmVjdChjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbnRTaXpl
JiB0b3BMZWYKICAgICAgICAgc2V0Q0dGaWxsQ29sb3IoY29udGV4dCwgb2xkRmlsbENvbG9yLCBv
bGRDb2xvclNwYWNlKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJv
dW5kZWRIb2xlKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IFJvdW5kZWRSZWN0JiByb3VuZGVk
SG9sZVJlY3QsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQordm9p
ZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEZsb2F0UmVj
dCYgcmVjdCwgY29uc3QgUm91bmRlZFJlY3QmIHJvdW5kZWRIb2xlUmVjdCwgY29uc3QgQ29sb3Im
IGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJs
ZWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtOTM2LDcgKzkzNiw3IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0OjpjbGlwKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKICAgICBtX2RhdGEtPmNsaXAocmVj
dCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwT3V0KGNvbnN0IEludFJlY3QmIHJl
Y3QpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcE91dChjb25zdCBGbG9hdFJlY3QmIHJlY3Qp
CiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvR3JhcGhpY3NDb250
ZXh0V2luQ0UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvR3Jh
cGhpY3NDb250ZXh0V2luQ0UuY3BwCmluZGV4IDM3NmJjNzNjMDcwYTFlMDExOTRlYzNhYzg4M2Fm
MzNmNjE5MTQ1NDkuLjc2M2UyNmUzNTExMGE0Yjk2YjEwNzJhMjkwYzgyNWIyMTUxZDMxNjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0dyYXBoaWNz
Q29udGV4dFdpbkNFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW5jZS9HcmFwaGljc0NvbnRleHRXaW5DRS5jcHAKQEAgLTg5OCw3ICs4OTgsNyBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dDo6Y2xpcChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAgICAgfQogfQogCi12
b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcE91dChjb25zdCBJbnRSZWN0JiByZWN0KQordm9pZCBH
cmFwaGljc0NvbnRleHQ6OmNsaXBPdXQoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewogICAgIGlm
IChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTExNTAsNyArMTE1MCw3
IEBAIHN0YXRpYyBpbmxpbmUgSW50UG9pbnQgcmVjdENlbnRlclBvaW50KGNvbnN0IFJFQ1QmIHJl
Y3QpCiB7CiAgICAgcmV0dXJuIEludFBvaW50KHJlY3QubGVmdCArIChyZWN0LnJpZ2h0IC0gcmVj
dC5sZWZ0KSAvIDIsIHJlY3QudG9wICsgKHJlY3QuYm90dG9tIC0gcmVjdC50b3ApIC8gMik7CiB9
Ci12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJvdW5kZWRSZWN0KGNvbnN0IEludFJlY3QmIGZp
bGxSZWN0LCBjb25zdCBJbnRTaXplJiB0b3BMZWZ0LCBjb25zdCBJbnRTaXplJiB0b3BSaWdodCwg
Y29uc3QgSW50U2l6ZSYgYm90dG9tTGVmdCwgY29uc3QgSW50U2l6ZSYgYm90dG9tUmlnaHQsIGNv
bnN0IENvbG9yJiBjLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCit2b2lkIEdyYXBoaWNzQ29udGV4
dDo6ZmlsbFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgZmlsbFJlY3QsIGNvbnN0IEZsb2F0
U2l6ZSYgdG9wTGVmdCwgY29uc3QgRmxvYXRTaXplJiB0b3BSaWdodCwgY29uc3QgRmxvYXRTaXpl
JiBib3R0b21MZWZ0LCBjb25zdCBGbG9hdFNpemUmIGJvdHRvbVJpZ2h0LCBjb25zdCBDb2xvciYg
YywgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQogewogICAgIFNjb3BlRENQcm92aWRlciBkY1Byb3Zp
ZGVyKG1fZGF0YSk7CiAgICAgaWYgKCFtX2RhdGEtPm1fZGMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAppbmRleCA3NjdmYTkxOWJiNDE2
MGRmYTQ1MzA0NDIyMmNhYjEwMWNmN2IwYjlhLi41YWVmYjZkYzllMzljYTY1Nzc3MGNjYWM1OGNk
YzdhZjg0YThkMDJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Qm94TW9kZWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
b3hNb2RlbE9iamVjdC5jcHAKQEAgLTE2NTksNyArMTY1OSw3IEBAIHN0YXRpYyBib29sIGpvaW5S
ZXF1aXJlc01pdHJlKEJveFNpZGUgc2lkZSwgQm94U2lkZSBhZGphY2VudFNpZGUsIGNvbnN0IEJv
cmRlckVkCiB9CiAKIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50T25lQm9yZGVyU2lk
ZShHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgUmVuZGVyU3R5bGUqIHN0
eWxlLCBjb25zdCBSb3VuZGVkUmVjdCYgb3V0ZXJCb3JkZXIsIGNvbnN0IFJvdW5kZWRSZWN0JiBp
bm5lckJvcmRlciwKLSAgICBjb25zdCBJbnRSZWN0JiBzaWRlUmVjdCwgQm94U2lkZSBzaWRlLCBC
b3hTaWRlIGFkamFjZW50U2lkZTEsIEJveFNpZGUgYWRqYWNlbnRTaWRlMiwgY29uc3QgQm9yZGVy
RWRnZSBlZGdlc1tdLCBjb25zdCBQYXRoKiBwYXRoLAorICAgIGNvbnN0IExheW91dFJlY3QmIHNp
ZGVSZWN0LCBCb3hTaWRlIHNpZGUsIEJveFNpZGUgYWRqYWNlbnRTaWRlMSwgQm94U2lkZSBhZGph
Y2VudFNpZGUyLCBjb25zdCBCb3JkZXJFZGdlIGVkZ2VzW10sIGNvbnN0IFBhdGgqIHBhdGgsCiAg
ICAgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlIGJsZWVkQXZvaWRhbmNlLCBib29sIGluY2x1ZGVM
b2dpY2FsTGVmdEVkZ2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UsIGJvb2wgYW50aWFs
aWFzLCBjb25zdCBDb2xvciogb3ZlcnJpZGVDb2xvcikKIHsKICAgICBjb25zdCBCb3JkZXJFZGdl
JiBlZGdlVG9SZW5kZXIgPSBlZGdlc1tzaWRlXTsKQEAgLTE3MDUsOSArMTcwNSw5IEBAIHZvaWQg
UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50T25lQm9yZGVyU2lkZShHcmFwaGljc0NvbnRleHQq
IGdyYXBoaWNzQ29udGV4dCwKICAgICB9CiB9CiAKLXN0YXRpYyBJbnRSZWN0IGNhbGN1bGF0ZVNp
ZGVSZWN0KGNvbnN0IFJvdW5kZWRSZWN0JiBvdXRlckJvcmRlciwgY29uc3QgQm9yZGVyRWRnZSBl
ZGdlc1tdLCBpbnQgc2lkZSkKK3N0YXRpYyBMYXlvdXRSZWN0IGNhbGN1bGF0ZVNpZGVSZWN0KGNv
bnN0IFJvdW5kZWRSZWN0JiBvdXRlckJvcmRlciwgY29uc3QgQm9yZGVyRWRnZSBlZGdlc1tdLCBp
bnQgc2lkZSkKIHsKLSAgICBJbnRSZWN0IHNpZGVSZWN0ID0gb3V0ZXJCb3JkZXIucmVjdCgpOwor
ICAgIExheW91dFJlY3Qgc2lkZVJlY3QgPSBvdXRlckJvcmRlci5yZWN0KCk7CiAgICAgaW50IHdp
ZHRoID0gZWRnZXNbc2lkZV0ud2lkdGg7CiAKICAgICBpZiAoc2lkZSA9PSBCU1RvcCkKQEAgLTE3
MzgsNyArMTczOCw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVyU2lk
ZXMoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvCiAgICAgLy8gb25seSBkZXBl
bmRzIG9uIHNpZGVSZWN0IHdoZW4gcGFpbnRpbmcgc29saWQgYm9yZGVycy4KIAogICAgIGlmIChl
ZGdlc1tCU1RvcF0uc2hvdWxkUmVuZGVyKCkgJiYgaW5jbHVkZXNFZGdlKGVkZ2VTZXQsIEJTVG9w
KSkgewotICAgICAgICBJbnRSZWN0IHNpZGVSZWN0ID0gb3V0ZXJCb3JkZXIucmVjdCgpOworICAg
ICAgICBMYXlvdXRSZWN0IHNpZGVSZWN0ID0gb3V0ZXJCb3JkZXIucmVjdCgpOwogICAgICAgICBz
aWRlUmVjdC5zZXRIZWlnaHQoZWRnZXNbQlNUb3BdLndpZHRoICsgaW5uZXJCb3JkZXJBZGp1c3Rt
ZW50LnkoKSk7CiAKICAgICAgICAgYm9vbCB1c2VQYXRoID0gcmVuZGVyUmFkaWkgJiYgKGJvcmRl
clN0eWxlSGFzSW5uZXJEZXRhaWwoZWRnZXNbQlNUb3BdLnN0eWxlKSB8fCBib3JkZXJXaWxsQXJj
SW5uZXJFZGdlKGlubmVyQm9yZGVyLnJhZGlpKCkudG9wTGVmdCgpLCBpbm5lckJvcmRlci5yYWRp
aSgpLnRvcFJpZ2h0KCkpKTsKQEAgLTE3NDYsNyArMTc0Niw3IEBAIHZvaWQgUmVuZGVyQm94TW9k
ZWxPYmplY3Q6OnBhaW50Qm9yZGVyU2lkZXMoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRl
eHQsIGNvCiAgICAgfQogCiAgICAgaWYgKGVkZ2VzW0JTQm90dG9tXS5zaG91bGRSZW5kZXIoKSAm
JiBpbmNsdWRlc0VkZ2UoZWRnZVNldCwgQlNCb3R0b20pKSB7Ci0gICAgICAgIEludFJlY3Qgc2lk
ZVJlY3QgPSBvdXRlckJvcmRlci5yZWN0KCk7CisgICAgICAgIExheW91dFJlY3Qgc2lkZVJlY3Qg
PSBvdXRlckJvcmRlci5yZWN0KCk7CiAgICAgICAgIHNpZGVSZWN0LnNoaWZ0WUVkZ2VUbyhzaWRl
UmVjdC5tYXhZKCkgLSBlZGdlc1tCU0JvdHRvbV0ud2lkdGggLSBpbm5lckJvcmRlckFkanVzdG1l
bnQueSgpKTsKIAogICAgICAgICBib29sIHVzZVBhdGggPSByZW5kZXJSYWRpaSAmJiAoYm9yZGVy
U3R5bGVIYXNJbm5lckRldGFpbChlZGdlc1tCU0JvdHRvbV0uc3R5bGUpIHx8IGJvcmRlcldpbGxB
cmNJbm5lckVkZ2UoaW5uZXJCb3JkZXIucmFkaWkoKS5ib3R0b21MZWZ0KCksIGlubmVyQm9yZGVy
LnJhZGlpKCkuYm90dG9tUmlnaHQoKSkpOwpAQCAtMTc1NCw3ICsxNzU0LDcgQEAgdm9pZCBSZW5k
ZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3JkZXJTaWRlcyhHcmFwaGljc0NvbnRleHQqIGdyYXBo
aWNzQ29udGV4dCwgY28KICAgICB9CiAKICAgICBpZiAoZWRnZXNbQlNMZWZ0XS5zaG91bGRSZW5k
ZXIoKSAmJiBpbmNsdWRlc0VkZ2UoZWRnZVNldCwgQlNMZWZ0KSkgewotICAgICAgICBJbnRSZWN0
IHNpZGVSZWN0ID0gb3V0ZXJCb3JkZXIucmVjdCgpOworICAgICAgICBMYXlvdXRSZWN0IHNpZGVS
ZWN0ID0gb3V0ZXJCb3JkZXIucmVjdCgpOwogICAgICAgICBzaWRlUmVjdC5zZXRXaWR0aChlZGdl
c1tCU0xlZnRdLndpZHRoICsgaW5uZXJCb3JkZXJBZGp1c3RtZW50LngoKSk7CiAKICAgICAgICAg
Ym9vbCB1c2VQYXRoID0gcmVuZGVyUmFkaWkgJiYgKGJvcmRlclN0eWxlSGFzSW5uZXJEZXRhaWwo
ZWRnZXNbQlNMZWZ0XS5zdHlsZSkgfHwgYm9yZGVyV2lsbEFyY0lubmVyRWRnZShpbm5lckJvcmRl
ci5yYWRpaSgpLmJvdHRvbUxlZnQoKSwgaW5uZXJCb3JkZXIucmFkaWkoKS50b3BMZWZ0KCkpKTsK
QEAgLTE3NjIsNyArMTc2Miw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm9y
ZGVyU2lkZXMoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvCiAgICAgfQogCiAg
ICAgaWYgKGVkZ2VzW0JTUmlnaHRdLnNob3VsZFJlbmRlcigpICYmIGluY2x1ZGVzRWRnZShlZGdl
U2V0LCBCU1JpZ2h0KSkgewotICAgICAgICBJbnRSZWN0IHNpZGVSZWN0ID0gb3V0ZXJCb3JkZXIu
cmVjdCgpOworICAgICAgICBMYXlvdXRSZWN0IHNpZGVSZWN0ID0gb3V0ZXJCb3JkZXIucmVjdCgp
OwogICAgICAgICBzaWRlUmVjdC5zaGlmdFhFZGdlVG8oc2lkZVJlY3QubWF4WCgpIC0gZWRnZXNb
QlNSaWdodF0ud2lkdGggLSBpbm5lckJvcmRlckFkanVzdG1lbnQueCgpKTsKIAogICAgICAgICBi
b29sIHVzZVBhdGggPSByZW5kZXJSYWRpaSAmJiAoYm9yZGVyU3R5bGVIYXNJbm5lckRldGFpbChl
ZGdlc1tCU1JpZ2h0XS5zdHlsZSkgfHwgYm9yZGVyV2lsbEFyY0lubmVyRWRnZShpbm5lckJvcmRl
ci5yYWRpaSgpLmJvdHRvbVJpZ2h0KCksIGlubmVyQm9yZGVyLnJhZGlpKCkudG9wUmlnaHQoKSkp
OwpAQCAtMTg4Nyw4ICsxODg3LDggQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRC
b3JkZXIoY29uc3QgUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBMYXlvdXRSZWN0JgogICAgICAgICAg
ICAgICAgIHBhdGguYWRkUmVjdChvdXRlckJvcmRlci5yZWN0KCkpOwogCiAgICAgICAgICAgICBp
ZiAoaGF2ZUFsbERvdWJsZUVkZ2VzKSB7Ci0gICAgICAgICAgICAgICAgSW50UmVjdCBpbm5lclRo
aXJkUmVjdCA9IG91dGVyQm9yZGVyLnJlY3QoKTsKLSAgICAgICAgICAgICAgICBJbnRSZWN0IG91
dGVyVGhpcmRSZWN0ID0gb3V0ZXJCb3JkZXIucmVjdCgpOworICAgICAgICAgICAgICAgIExheW91
dFJlY3QgaW5uZXJUaGlyZFJlY3QgPSBvdXRlckJvcmRlci5yZWN0KCk7CisgICAgICAgICAgICAg
ICAgTGF5b3V0UmVjdCBvdXRlclRoaXJkUmVjdCA9IG91dGVyQm9yZGVyLnJlY3QoKTsKICAgICAg
ICAgICAgICAgICBmb3IgKGludCBzaWRlID0gQlNUb3A7IHNpZGUgPD0gQlNMZWZ0OyArK3NpZGUp
IHsKICAgICAgICAgICAgICAgICAgICAgaW50IG91dGVyV2lkdGg7CiAgICAgICAgICAgICAgICAg
ICAgIGludCBpbm5lcldpZHRoOwpAQCAtMTk0Miw3ICsxOTQyLDcgQEAgdm9pZCBSZW5kZXJCb3hN
b2RlbE9iamVjdDo6cGFpbnRCb3JkZXIoY29uc3QgUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBMYXlv
dXRSZWN0JgogICAgICAgICAgICAgZm9yIChpbnQgaSA9IEJTVG9wOyBpIDw9IEJTTGVmdDsgKytp
KSB7CiAgICAgICAgICAgICAgICAgY29uc3QgQm9yZGVyRWRnZSYgY3VyckVkZ2UgPSBlZGdlc1tp
XTsKICAgICAgICAgICAgICAgICBpZiAoY3VyckVkZ2Uuc2hvdWxkUmVuZGVyKCkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgSW50UmVjdCBzaWRlUmVjdCA9IGNhbGN1bGF0ZVNpZGVSZWN0KG91dGVy
Qm9yZGVyLCBlZGdlcywgaSk7CisgICAgICAgICAgICAgICAgICAgIExheW91dFJlY3Qgc2lkZVJl
Y3QgPSBjYWxjdWxhdGVTaWRlUmVjdChvdXRlckJvcmRlciwgZWRnZXMsIGkpOwogICAgICAgICAg
ICAgICAgICAgICBwYXRoLmFkZFJlY3Qoc2lkZVJlY3QpOwogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIH0KQEAgLTIyMzIsMjQgKzIyMzIsMjIgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9i
amVjdDo6Y2xpcEJvcmRlclNpZGVQb2x5Z29uKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250
ZXgKICAgICBGbG9hdFBvaW50IGZpcnN0UXVhZFs0XTsKICAgICBmaXJzdFF1YWRbMF0gPSBxdWFk
WzBdOwogICAgIGZpcnN0UXVhZFsxXSA9IHF1YWRbMV07Ci0gICAgZmlyc3RRdWFkWzJdID0gc2lk
ZSA9PSBCU1RvcCB8fCBzaWRlID09IEJTQm90dG9tID8gRmxvYXRQb2ludChxdWFkWzNdLngoKSwg
cXVhZFsyXS55KCkpCi0gICAgICAgIDogRmxvYXRQb2ludChxdWFkWzJdLngoKSwgcXVhZFszXS55
KCkpOworICAgIGZpcnN0UXVhZFsyXSA9IHNpZGUgPT0gQlNUb3AgfHwgc2lkZSA9PSBCU0JvdHRv
bSA/IEZsb2F0UG9pbnQocXVhZFszXS54KCksIHF1YWRbMl0ueSgpKSA6IEZsb2F0UG9pbnQocXVh
ZFsyXS54KCksIHF1YWRbM10ueSgpKTsKICAgICBmaXJzdFF1YWRbM10gPSBxdWFkWzNdOwogICAg
IGdyYXBoaWNzQ29udGV4dC0+Y2xpcENvbnZleFBvbHlnb24oNCwgZmlyc3RRdWFkLCAhZmlyc3RF
ZGdlTWF0Y2hlcyk7CiAKICAgICBGbG9hdFBvaW50IHNlY29uZFF1YWRbNF07CiAgICAgc2Vjb25k
UXVhZFswXSA9IHF1YWRbMF07Ci0gICAgc2Vjb25kUXVhZFsxXSA9IHNpZGUgPT0gQlNUb3AgfHwg
c2lkZSA9PSBCU0JvdHRvbSA/IEZsb2F0UG9pbnQocXVhZFswXS54KCksIHF1YWRbMV0ueSgpKQot
ICAgICAgICA6IEZsb2F0UG9pbnQocXVhZFsxXS54KCksIHF1YWRbMF0ueSgpKTsKKyAgICBzZWNv
bmRRdWFkWzFdID0gc2lkZSA9PSBCU1RvcCB8fCBzaWRlID09IEJTQm90dG9tID8gRmxvYXRQb2lu
dChxdWFkWzBdLngoKSwgcXVhZFsxXS55KCkpIDogRmxvYXRQb2ludChxdWFkWzFdLngoKSwgcXVh
ZFswXS55KCkpOwogICAgIHNlY29uZFF1YWRbMl0gPSBxdWFkWzJdOwogICAgIHNlY29uZFF1YWRb
M10gPSBxdWFkWzNdOwogICAgIC8vIEFudGlhbGlhc2luZyBhZmZlY3RzIHRoZSBzZWNvbmQgc2lk
ZS4KICAgICBncmFwaGljc0NvbnRleHQtPmNsaXBDb252ZXhQb2x5Z29uKDQsIHNlY29uZFF1YWQs
ICFzZWNvbmRFZGdlTWF0Y2hlcyk7CiB9CiAKLXN0YXRpYyBJbnRSZWN0IGNhbGN1bGF0ZVNpZGVS
ZWN0SW5jbHVkaW5nSW5uZXIoY29uc3QgUm91bmRlZFJlY3QmIG91dGVyQm9yZGVyLCBjb25zdCBC
b3JkZXJFZGdlIGVkZ2VzW10sIEJveFNpZGUgc2lkZSkKK3N0YXRpYyBMYXlvdXRSZWN0IGNhbGN1
bGF0ZVNpZGVSZWN0SW5jbHVkaW5nSW5uZXIoY29uc3QgUm91bmRlZFJlY3QmIG91dGVyQm9yZGVy
LCBjb25zdCBCb3JkZXJFZGdlIGVkZ2VzW10sIEJveFNpZGUgc2lkZSkKIHsKLSAgICBJbnRSZWN0
IHNpZGVSZWN0ID0gb3V0ZXJCb3JkZXIucmVjdCgpOworICAgIExheW91dFJlY3Qgc2lkZVJlY3Qg
PSBvdXRlckJvcmRlci5yZWN0KCk7CiAgICAgaW50IHdpZHRoOwogCiAgICAgc3dpdGNoIChzaWRl
KSB7CkBAIC0yMjgwLDcgKzIyNzgsNyBAQCBzdGF0aWMgUm91bmRlZFJlY3QgY2FsY3VsYXRlQWRq
dXN0ZWRJbm5lckJvcmRlcihjb25zdCBSb3VuZGVkUmVjdCZpbm5lckJvcmRlciwgQgogICAgIC8v
IFRoaXMgZnVuY3Rpb24gcmVsaWVzIG9uIHRoZSBmYWN0IHdlIG9ubHkgZ2V0IHJhZGlpIG5vdCBj
b250YWluZWQgd2l0aGluIGVhY2ggZWRnZSBpZiBvbmUgb2YgdGhlIHJhZGlpCiAgICAgLy8gZm9y
IGFuIGVkZ2UgaXMgemVybywgc28gd2UgY2FuIHNoaWZ0IHRoZSBhcmMgdG93YXJkcyB0aGUgemVy
byByYWRpdXMgY29ybmVyLgogICAgIFJvdW5kZWRSZWN0OjpSYWRpaSBuZXdSYWRpaSA9IGlubmVy
Qm9yZGVyLnJhZGlpKCk7Ci0gICAgSW50UmVjdCBuZXdSZWN0ID0gaW5uZXJCb3JkZXIucmVjdCgp
OworICAgIExheW91dFJlY3QgbmV3UmVjdCA9IGlubmVyQm9yZGVyLnJlY3QoKTsKIAogICAgIGZs
b2F0IG92ZXJzaG9vdDsKICAgICBmbG9hdCBtYXhSYWRpaTsKQEAgLTI0NzQsMTYgKzI0NzIsMTYg
QEAgYm9vbCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6Ym94U2hhZG93U2hvdWxkQmVBcHBsaWVkVG9C
YWNrZ3JvdW5kKEJhY2tncm91bmRCbGVlZEEKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGlj
IGlubGluZSBJbnRSZWN0IGFyZWFDYXN0aW5nU2hhZG93SW5Ib2xlKGNvbnN0IEludFJlY3QmIGhv
bGVSZWN0LCBpbnQgc2hhZG93RXh0ZW50LCBpbnQgc2hhZG93U3ByZWFkLCBjb25zdCBJbnRTaXpl
JiBzaGFkb3dPZmZzZXQpCitzdGF0aWMgaW5saW5lIExheW91dFJlY3QgYXJlYUNhc3RpbmdTaGFk
b3dJbkhvbGUoY29uc3QgTGF5b3V0UmVjdCYgaG9sZVJlY3QsIGludCBzaGFkb3dFeHRlbnQsIGlu
dCBzaGFkb3dTcHJlYWQsIGNvbnN0IEludFNpemUmIHNoYWRvd09mZnNldCkKIHsKLSAgICBJbnRS
ZWN0IGJvdW5kcyhob2xlUmVjdCk7CisgICAgTGF5b3V0UmVjdCBib3VuZHMoaG9sZVJlY3QpOwog
ICAgIAogICAgIGJvdW5kcy5pbmZsYXRlKHNoYWRvd0V4dGVudCk7CiAKICAgICBpZiAoc2hhZG93
U3ByZWFkIDwgMCkKICAgICAgICAgYm91bmRzLmluZmxhdGUoLXNoYWRvd1NwcmVhZCk7CiAgICAg
Ci0gICAgSW50UmVjdCBvZmZzZXRCb3VuZHMgPSBib3VuZHM7CisgICAgTGF5b3V0UmVjdCBvZmZz
ZXRCb3VuZHMgPSBib3VuZHM7CiAgICAgb2Zmc2V0Qm91bmRzLm1vdmUoLXNoYWRvd09mZnNldCk7
CiAgICAgcmV0dXJuIHVuaW9uUmVjdChib3VuZHMsIG9mZnNldEJvdW5kcyk7CiB9CkBAIC0yNTY1
LDcgKzI1NjMsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJveFNoYWRvdyhj
b25zdCBQYWludEluZm8mIGluZm8sIGNvbnN0IExheW91dFJlYwogICAgICAgICAgICAgICAgICAg
ICBjb250ZXh0LT5maWxsUm91bmRlZFJlY3QoZmlsbFJlY3QsIENvbG9yOjpibGFjaywgcy0+Y29s
b3JTcGFjZSgpKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgICAgIEludFJlY3QgcmVjdFRvQ2xpcE91dCA9IGJvcmRlci5yZWN0KCk7CisgICAg
ICAgICAgICAgICAgTGF5b3V0UmVjdCByZWN0VG9DbGlwT3V0ID0gYm9yZGVyLnJlY3QoKTsKIAog
ICAgICAgICAgICAgICAgIC8vIElmIHRoZSBib3ggaXMgb3BhcXVlLCBpdCBpcyB1bm5lY2Vzc2Fy
eSB0byBjbGlwIGl0IG91dC4gSG93ZXZlciwgZG9pbmcgc28gc2F2ZXMgdGltZQogICAgICAgICAg
ICAgICAgIC8vIHdoZW4gcGFpbnRpbmcgdGhlIHNoYWRvdy4gT24gdGhlIG90aGVyIGhhbmQsIGl0
IGludHJvZHVjZXMgc3VicGl4ZWwgZ2FwcyBhbG9uZyB0aGUKQEAgLTI2MTQsNyArMjYxMiw3IEBA
IHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm94U2hhZG93KGNvbnN0IFBhaW50SW5m
byYgaW5mbywgY29uc3QgTGF5b3V0UmVjCiAKICAgICAgICAgICAgIENvbG9yIGZpbGxDb2xvcihz
aGFkb3dDb2xvci5yZWQoKSwgc2hhZG93Q29sb3IuZ3JlZW4oKSwgc2hhZG93Q29sb3IuYmx1ZSgp
LCAyNTUpOwogCi0gICAgICAgICAgICBJbnRSZWN0IG91dGVyUmVjdCA9IGFyZWFDYXN0aW5nU2hh
ZG93SW5Ib2xlKGJvcmRlci5yZWN0KCksIHNoYWRvd1BhaW50aW5nRXh0ZW50LCBzaGFkb3dTcHJl
YWQsIHNoYWRvd09mZnNldCk7CisgICAgICAgICAgICBMYXlvdXRSZWN0IG91dGVyUmVjdCA9IGFy
ZWFDYXN0aW5nU2hhZG93SW5Ib2xlKGJvcmRlci5yZWN0KCksIHNoYWRvd1BhaW50aW5nRXh0ZW50
LCBzaGFkb3dTcHJlYWQsIHNoYWRvd09mZnNldCk7CiAgICAgICAgICAgICBSb3VuZGVkUmVjdCBy
b3VuZGVkSG9sZShob2xlUmVjdCwgYm9yZGVyLnJhZGlpKCkpOwogCiAgICAgICAgICAgICBHcmFw
aGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmNvbnRleHQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaAppbmRleCA2ZWQyMjY5OTEz
NjYwZjZmZTgxOTFlYjNmMzY3YzgwMTZjMmQ3YjA3Li4xYmZjNTA1OTVlYjg4ODk1OGRkYmZlYzA4
Yzg5ZjM4MWMyZWY0ODA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94TW9kZWxPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Qm94TW9kZWxPYmplY3QuaApAQCAtMzMyLDggKzMzMiw4IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQm94U2lkZSwgYm9vbCBmaXJzdEVkZ2VNYXRjaGVzLCBib29s
IHNlY29uZEVkZ2VNYXRjaGVzKTsKICAgICB2b2lkIGNsaXBCb3JkZXJTaWRlRm9yQ29tcGxleElu
bmVyUGF0aChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBSb3VuZGVkUmVjdCYsIGNvbnN0IFJvdW5k
ZWRSZWN0JiwgQm94U2lkZSwgY29uc3QgY2xhc3MgQm9yZGVyRWRnZVtdKTsKICAgICB2b2lkIHBh
aW50T25lQm9yZGVyU2lkZShHcmFwaGljc0NvbnRleHQqLCBjb25zdCBSZW5kZXJTdHlsZSosIGNv
bnN0IFJvdW5kZWRSZWN0JiBvdXRlckJvcmRlciwgY29uc3QgUm91bmRlZFJlY3QmIGlubmVyQm9y
ZGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJbnRSZWN0JiBzaWRl
UmVjdCwgQm94U2lkZSwgQm94U2lkZSBhZGphY2VudFNpZGUxLCBCb3hTaWRlIGFkamFjZW50U2lk
ZTIsIGNvbnN0IGNsYXNzIEJvcmRlckVkZ2VbXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgUGF0aCosIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSwgYm9vbCBpbmNsdWRl
TG9naWNhbExlZnRFZGdlLCBib29sIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlLCBib29sIGFudGlh
bGlhcywgY29uc3QgQ29sb3IqIG92ZXJyaWRlQ29sb3IgPSAwKTsKKyAgICAgICAgY29uc3QgTGF5
b3V0UmVjdCYgc2lkZVJlY3QsIEJveFNpZGUsIEJveFNpZGUgYWRqYWNlbnRTaWRlMSwgQm94U2lk
ZSBhZGphY2VudFNpZGUyLCBjb25zdCBjbGFzcyBCb3JkZXJFZGdlW10sCisgICAgICAgIGNvbnN0
IFBhdGgqLCBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxMZWZ0
RWRnZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSwgYm9vbCBhbnRpYWxpYXMsIGNvbnN0
IENvbG9yKiBvdmVycmlkZUNvbG9yID0gMCk7CiAgICAgdm9pZCBwYWludFRyYW5zbHVjZW50Qm9y
ZGVyU2lkZXMoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgUmVuZGVyU3R5bGUqLCBjb25zdCBSb3Vu
ZGVkUmVjdCYgb3V0ZXJCb3JkZXIsIGNvbnN0IFJvdW5kZWRSZWN0JiBpbm5lckJvcmRlciwgY29u
c3QgSW50UG9pbnQmIGlubmVyQm9yZGVyQWRqdXN0bWVudCwKICAgICAgICAgY29uc3QgY2xhc3Mg
Qm9yZGVyRWRnZVtdLCBCb3JkZXJFZGdlRmxhZ3MsIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSwg
Ym9vbCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBib29sIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdl
LCBib29sIGFudGlhbGlhcyA9IGZhbHNlKTsKICAgICB2b2lkIHBhaW50Qm9yZGVyU2lkZXMoR3Jh
cGhpY3NDb250ZXh0KiwgY29uc3QgUmVuZGVyU3R5bGUqLCBjb25zdCBSb3VuZGVkUmVjdCYgb3V0
ZXJCb3JkZXIsIGNvbnN0IFJvdW5kZWRSZWN0JiBpbm5lckJvcmRlciwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVNhZmFyaS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVTYWZhcmkuY3BwCmluZGV4IDc2NGM1YjVjMjViNmY0
MmI0OGMyZjM2NDI3YmFkYTJhZWU4ZWE2YmMuLjA4ZGMxMDg3ZWQzMzQ5NjQ0NWJjNTZlZmVhNzU5
MjRmOWRjNDQwZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZVNhZmFyaS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
U2FmYXJpLmNwcApAQCAtNzc4LDcgKzc3OCw3IEBAIHZvaWQgUmVuZGVyVGhlbWVTYWZhcmk6OnBh
aW50TWVudUxpc3RCdXR0b25HcmFkaWVudHMoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWluCiAK
ICAgICBSZXRhaW5QdHI8Q0dTaGFkaW5nUmVmPiByaWdodFNoYWRpbmcgPSBhZG9wdENGKENHU2hh
ZGluZ0NyZWF0ZUF4aWFsKGNzcGFjZSwgQ0dQb2ludE1ha2Uoci5tYXhYKCksICByLnkoKSksIENH
UG9pbnRNYWtlKHIubWF4WCgpIC0gcmFkaXVzLCByLnkoKSksIG1haW5GdW5jdGlvbi5nZXQoKSwg
ZmFsc2UsIGZhbHNlKSk7CiAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNhdmUoKTsKLSAgICBDR0Nv
bnRleHRDbGlwVG9SZWN0KGNvbnRleHQsIGJvdW5kLnJlY3QoKSk7CisgICAgQ0dDb250ZXh0Q2xp
cFRvUmVjdChjb250ZXh0LCByKTsKICAgICBwYWludEluZm8uY29udGV4dC0+Y2xpcFJvdW5kZWRS
ZWN0KGJvdW5kKTsKICAgICBDR0NvbnRleHREcmF3U2hhZGluZyhjb250ZXh0LCBtYWluU2hhZGlu
Zy5nZXQoKSk7CiAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnJlc3RvcmUoKTsKQEAgLTc5OCw3ICs3
OTgsNyBAQCB2b2lkIFJlbmRlclRoZW1lU2FmYXJpOjpwYWludE1lbnVMaXN0QnV0dG9uR3JhZGll
bnRzKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbgogICAgIH0KIAogICAgIHBhaW50SW5mby5j
b250ZXh0LT5zYXZlKCk7Ci0gICAgQ0dDb250ZXh0Q2xpcFRvUmVjdChjb250ZXh0LCBib3VuZC5y
ZWN0KCkpOworICAgIENHQ29udGV4dENsaXBUb1JlY3QoY29udGV4dCwgcik7CiAgICAgcGFpbnRJ
bmZvLmNvbnRleHQtPmNsaXBSb3VuZGVkUmVjdChib3VuZCk7CiAgICAgQ0dDb250ZXh0RHJhd1No
YWRpbmcoY29udGV4dCwgbGVmdFNoYWRpbmcuZ2V0KCkpOwogICAgIENHQ29udGV4dERyYXdTaGFk
aW5nKGNvbnRleHQsIHJpZ2h0U2hhZGluZy5nZXQoKSk7CkBAIC05NzMsNyArOTczLDcgQEAgYm9v
bCBSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRTbGlkZXJUcmFjayhSZW5kZXJPYmplY3QqIG8sIGNv
bnN0IFBhaW50SW5mbyYgcGFpbnQKICAgICBDR0NvbG9yU3BhY2VSZWYgY3NwYWNlID0gZGV2aWNl
UkdCQ29sb3JTcGFjZVJlZigpOwogCiAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNhdmUoKTsKLSAg
ICBDR0NvbnRleHRDbGlwVG9SZWN0KGNvbnRleHQsIGJvdW5kcy5yZWN0KCkpOworICAgIENHQ29u
dGV4dENsaXBUb1JlY3QoY29udGV4dCwgcGl4ZWxTbmFwcGVkSW50UmVjdChib3VuZHMucmVjdCgp
KSk7CiAKICAgICBzdHJ1Y3QgQ0dGdW5jdGlvbkNhbGxiYWNrcyBtYWluQ2FsbGJhY2tzID0geyAw
LCBUcmFja0dyYWRpZW50SW50ZXJwb2xhdGUsIE5VTEwgfTsKICAgICBSZXRhaW5QdHI8Q0dGdW5j
dGlvblJlZj4gbWFpbkZ1bmN0aW9uID0gYWRvcHRDRihDR0Z1bmN0aW9uQ3JlYXRlKE5VTEwsIDEs
IE5VTEwsIDQsIE5VTEwsICZtYWluQ2FsbGJhY2tzKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222786</attachid>
            <date>2014-01-30 20:03:39 -0800</date>
            <delta_ts>2014-01-30 21:37:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-127779-20140130200338.patch</filename>
            <type>text/plain</type>
            <size>48288</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYzMTUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTVlNmMwYWRhNDlmNzhi
NGQwZjBlMDlhYTY3NGJhODlhMTE3M2I2NC4uNTEyMjM4Nzg1OTc4ZGU0MGRlYTRmNDU1MWM5OTU2
ODE0MDk2NmYyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDgyIEBACiAyMDE0LTAxLTMwICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKKyAgICAgICAgU3VicGl4ZWwgcmVuZGVyaW5n
OiBNYWtlIFJvdW5kZWRSZWN0IGxheW91dCB1bml0IGF3YXJlLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3Nzc5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgU2ltb24gRnJhc2VyLgorCisgICAgICAgIEluIG9yZGVyIHRvIGRyYXcgaGFpcmxpbmUgYm9y
ZGVycywgUm91bmRlZFJlY3QgbmVlZHMgdG8gYmUKKyAgICAgICAgTGF5b3V0VW5pdCBiYXNlZC4K
KworICAgICAgICBObyBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0OjpmaWxsUm91bmRlZFJlY3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1JvdW5kZWRSZWN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJvdW5kZWRSZWN0OjpSYWRpaTo6c2NhbGUpOgorICAg
ICAgICAoV2ViQ29yZTo6Um91bmRlZFJlY3Q6OlJhZGlpOjpleHBhbmQpOgorICAgICAgICAoV2Vi
Q29yZTo6Um91bmRlZFJlY3Q6OmluZmxhdGVXaXRoUmFkaWkpOgorICAgICAgICAoV2ViQ29yZTo6
Um91bmRlZFJlY3Q6OlJvdW5kZWRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJvdW5kZWRSZWN0
OjppbnRlcnNlY3RzUXVhZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZFJl
Y3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJvdW5kZWRSZWN0OjpSYWRpaTo6UmFkaWkpOgorICAg
ICAgICAoV2ViQ29yZTo6Um91bmRlZFJlY3Q6OlJhZGlpOjpzZXRUb3BMZWZ0KToKKyAgICAgICAg
KFdlYkNvcmU6OlJvdW5kZWRSZWN0OjpSYWRpaTo6c2V0VG9wUmlnaHQpOgorICAgICAgICAoV2Vi
Q29yZTo6Um91bmRlZFJlY3Q6OlJhZGlpOjpzZXRCb3R0b21MZWZ0KToKKyAgICAgICAgKFdlYkNv
cmU6OlJvdW5kZWRSZWN0OjpSYWRpaTo6c2V0Qm90dG9tUmlnaHQpOgorICAgICAgICAoV2ViQ29y
ZTo6Um91bmRlZFJlY3Q6OlJhZGlpOjp0b3BMZWZ0KToKKyAgICAgICAgKFdlYkNvcmU6OlJvdW5k
ZWRSZWN0OjpSYWRpaTo6dG9wUmlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6Um91bmRlZFJlY3Q6
OlJhZGlpOjpib3R0b21MZWZ0KToKKyAgICAgICAgKFdlYkNvcmU6OlJvdW5kZWRSZWN0OjpSYWRp
aTo6Ym90dG9tUmlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6Um91bmRlZFJlY3Q6OlJhZGlpOjpl
eHBhbmQpOgorICAgICAgICAoV2ViQ29yZTo6Um91bmRlZFJlY3Q6OlJhZGlpOjpzaHJpbmspOgor
ICAgICAgICAoV2ViQ29yZTo6Um91bmRlZFJlY3Q6OnJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6
Um91bmRlZFJlY3Q6OnNldFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Um91bmRlZFJlY3Q6Om1v
dmUpOgorICAgICAgICAoV2ViQ29yZTo6Um91bmRlZFJlY3Q6OmluZmxhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6Um91bmRlZFJlY3Q6OmV4cGFuZFJhZGlpKToKKyAgICAgICAgKFdlYkNvcmU6OlJv
dW5kZWRSZWN0OjpzaHJpbmtSYWRpaSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU2hh
ZG93Qmx1ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JhdGNoQnVmZmVyOjpzZXRDYWNoZWRT
aGFkb3dWYWx1ZXMpOgorICAgICAgICAoV2ViQ29yZTo6U2NyYXRjaEJ1ZmZlcjo6c2V0Q2FjaGVk
SW5zZXRTaGFkb3dWYWx1ZXMpOgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZVNsaWNlU2l6ZXNG
cm9tUmFkaWkpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6dGVtcGxhdGVTaXplKToK
KyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93KToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvdyk6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvd1dpdGhvdXRUaWxpbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6U2hhZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93V2l0aG91dFRpbGluZyk6CisgICAgICAg
IChXZWJDb3JlOjpTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRoVGlsaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0aFRpbGluZyk6CisgICAg
ICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjpkcmF3TGF5ZXJQaWVjZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6U2hhZG93Qmx1cjo6YmVnaW5TaGFkb3dMYXllcik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvU2hhZG93Qmx1ci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDo6Y2xpcE91dCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmZpbGxS
b3VuZGVkUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0
V2l0aFJvdW5kZWRIb2xlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGlj
c0NvbnRleHRDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnBsYXRm
b3JtSW5pdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvR3JhcGhpY3NDb250
ZXh0V2luQ0UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpjbGlwT3V0
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZmlsbFJvdW5kZWRSZWN0KToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50T25lQm9yZGVyU2lkZSk6CisgICAg
ICAgIChXZWJDb3JlOjpjYWxjdWxhdGVTaWRlUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3JkZXJTaWRlcyk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3JkZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyQm94TW9kZWxPYmplY3Q6OmNsaXBCb3JkZXJTaWRlUG9seWdvbik6CisgICAgICAgIChXZWJD
b3JlOjpjYWxjdWxhdGVTaWRlUmVjdEluY2x1ZGluZ0lubmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OmNhbGN1bGF0ZUFkanVzdGVkSW5uZXJCb3JkZXIpOgorICAgICAgICAoV2ViQ29yZTo6YXJlYUNh
c3RpbmdTaGFkb3dJbkhvbGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmpl
Y3Q6OnBhaW50Qm94U2hhZG93KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxP
YmplY3QuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVTYWZhcmkuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50TWVudUxpc3RCdXR0b25HcmFk
aWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50U2xpZGVy
VHJhY2spOgorCisyMDE0LTAxLTMwICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisK
ICAgICAgICAgU3VicGl4ZWwgcmVuZGVyaW5nOiBDaGFuZ2UgQm9yZGVyRGF0YSdzIHdpZHRoIGZy
b20gdW5zaWduZWQgdG8gZmxvYXQgdG8gZW5hYmxlIHN1YnBpeGVsIGJvcmRlciBwYWludGluZy4K
ICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNzk0OQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0LmNwcAppbmRleCBmMTJmMDJhNmY2Zjg1NjY5ZmUyZDdiMmMwMzkwN2E1YzAzZTM4NzhhLi42
YjRkN2E5YTNkNzJlZGMzMjVhOTk0ZTc5Y2Y2MWExZjAxOTc2NWEzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKQEAgLTc3
MSw3ICs3NzEsNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxvYXRS
ZWN0JiByZWN0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9yUwogCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6ZmlsbFJvdW5kZWRSZWN0KGNvbnN0IFJvdW5kZWRSZWN0JiByZWN0LCBjb25zdCBDb2xv
ciYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKIHsK
LQogICAgIGlmIChyZWN0LmlzUm91bmRlZCgpKSB7CiAgICAgICAgIHNldENvbXBvc2l0ZU9wZXJh
dGlvbihjb21wb3NpdGVPcGVyYXRpb24oKSwgYmxlbmRNb2RlKTsKICAgICAgICAgZmlsbFJvdW5k
ZWRSZWN0KHJlY3QucmVjdCgpLCByZWN0LnJhZGlpKCkudG9wTGVmdCgpLCByZWN0LnJhZGlpKCku
dG9wUmlnaHQoKSwgcmVjdC5yYWRpaSgpLmJvdHRvbUxlZnQoKSwgcmVjdC5yYWRpaSgpLmJvdHRv
bVJpZ2h0KCksIGNvbG9yLCBjb2xvclNwYWNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKaW5kZXggYTQzNzgyN2FjNjJhZGQyMGNh
OWRmZGQ4OTk4YjQyYzc2MTJmNGNkZi4uODg4NjgyZTkwOGU5YjE0MDBlNGY1MTU1ZTYyZWNmNDE3
ZTZmYWVmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0LmgKQEAgLTI5NCw5ICsyOTQsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIHZvaWQgZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQ29sb3ImLCBDb2xv
clNwYWNlKTsKICAgICAgICAgdm9pZCBmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmLCBHcmFkaWVu
dCYpOwogICAgICAgICB2b2lkIGZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IENvbG9y
JiwgQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5v
cm1hbCk7Ci0gICAgICAgIHZvaWQgZmlsbFJvdW5kZWRSZWN0KGNvbnN0IEludFJlY3QmLCBjb25z
dCBJbnRTaXplJiB0b3BMZWZ0LCBjb25zdCBJbnRTaXplJiB0b3BSaWdodCwgY29uc3QgSW50U2l6
ZSYgYm90dG9tTGVmdCwgY29uc3QgSW50U2l6ZSYgYm90dG9tUmlnaHQsIGNvbnN0IENvbG9yJiwg
Q29sb3JTcGFjZSk7CisgICAgICAgIHZvaWQgZmlsbFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0UmVj
dCYsIGNvbnN0IEZsb2F0U2l6ZSYgdG9wTGVmdCwgY29uc3QgRmxvYXRTaXplJiB0b3BSaWdodCwg
Y29uc3QgRmxvYXRTaXplJiBib3R0b21MZWZ0LCBjb25zdCBGbG9hdFNpemUmIGJvdHRvbVJpZ2h0
LCBjb25zdCBDb2xvciYsIENvbG9yU3BhY2UpOwogICAgICAgICB2b2lkIGZpbGxSb3VuZGVkUmVj
dChjb25zdCBSb3VuZGVkUmVjdCYsIGNvbnN0IENvbG9yJiwgQ29sb3JTcGFjZSwgQmxlbmRNb2Rl
ID0gQmxlbmRNb2RlTm9ybWFsKTsKLSAgICAgICAgdm9pZCBmaWxsUmVjdFdpdGhSb3VuZGVkSG9s
ZShjb25zdCBJbnRSZWN0JiwgY29uc3QgUm91bmRlZFJlY3QmIHJvdW5kZWRIb2xlUmVjdCwgY29u
c3QgQ29sb3ImLCBDb2xvclNwYWNlKTsKKyAgICAgICAgdm9pZCBmaWxsUmVjdFdpdGhSb3VuZGVk
SG9sZShjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBSb3VuZGVkUmVjdCYgcm91bmRlZEhvbGVSZWN0
LCBjb25zdCBDb2xvciYsIENvbG9yU3BhY2UpOwogCiAgICAgICAgIHZvaWQgY2xlYXJSZWN0KGNv
bnN0IEZsb2F0UmVjdCYpOwogCkBAIC0zMzIsNyArMzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICAvLyBGSVhNRTogQ29uc2lkZXIgd3JpdGluZyB0aGlzIGluIHRlcm1zIG9mIGEg
c3BlY2lhbGl6ZWQgUm91bmRlZFJlY3QgdGhhdCB1c2VzIEZsb2F0UmVjdCBhbmQgRmxvYXRTaXpl
IHJhZGlpLgogICAgICAgICB2b2lkIGNsaXBSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJlY3QmLCBj
b25zdCBGbG9hdFNpemUmIHRvcExlZnQsIGNvbnN0IEZsb2F0U2l6ZSYgdG9wUmlnaHQsIGNvbnN0
IEZsb2F0U2l6ZSYgYm90dG9tTGVmdCwgY29uc3QgRmxvYXRTaXplJiBib3R0b21SaWdodCk7CiAK
LSAgICAgICAgdm9pZCBjbGlwT3V0KGNvbnN0IEludFJlY3QmKTsKKyAgICAgICAgdm9pZCBjbGlw
T3V0KGNvbnN0IEZsb2F0UmVjdCYpOwogICAgICAgICB2b2lkIGNsaXBPdXRSb3VuZGVkUmVjdChj
b25zdCBSb3VuZGVkUmVjdCYpOwogICAgICAgICB2b2lkIGNsaXBQYXRoKGNvbnN0IFBhdGgmLCBX
aW5kUnVsZSk7CiAgICAgICAgIHZvaWQgY2xpcENvbnZleFBvbHlnb24oc2l6ZV90IG51bVBvaW50
cywgY29uc3QgRmxvYXRQb2ludCosIGJvb2wgYW50aWFsaWFzID0gdHJ1ZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Sb3VuZGVkUmVjdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Sb3VuZGVkUmVjdC5jcHAKaW5kZXggOGYyZjFj
ZjkxZTI5M2VmYTc1NDQzYjFjZDVmMDVkNzdjMTI1YjgzZS4uZDcyNzMyNGU3NzRmNjBmOWUzYWU5
ZmQ2MTk5NmNjNjNiMmY4OGU2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvUm91bmRlZFJlY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1JvdW5kZWRSZWN0LmNwcApAQCAtMjgsNiArMjgsOSBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIlJvdW5kZWRSZWN0LmgiCiAKKyNpbmNsdWRlICJMYXlvdXRSZWN0Lmgi
CisjaW5jbHVkZSAiTGF5b3V0VW5pdC5oIgorCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CkBAIC00NSw0MiArNDgsNDIgQEAgdm9pZCBSb3VuZGVkUmVjdDo6UmFk
aWk6OnNjYWxlKGZsb2F0IGZhY3RvcikKICAgICAvLyBJZiBlaXRoZXIgcmFkaXVzIG9uIGEgY29y
bmVyIGJlY29tZXMgemVybywgcmVzZXQgYm90aCByYWRpaSBvbiB0aGF0IGNvcm5lci4KICAgICBt
X3RvcExlZnQuc2NhbGUoZmFjdG9yKTsKICAgICBpZiAoIW1fdG9wTGVmdC53aWR0aCgpIHx8ICFt
X3RvcExlZnQuaGVpZ2h0KCkpCi0gICAgICAgIG1fdG9wTGVmdCA9IEludFNpemUoKTsKKyAgICAg
ICAgbV90b3BMZWZ0ID0gTGF5b3V0U2l6ZSgpOwogICAgIG1fdG9wUmlnaHQuc2NhbGUoZmFjdG9y
KTsKICAgICBpZiAoIW1fdG9wUmlnaHQud2lkdGgoKSB8fCAhbV90b3BSaWdodC5oZWlnaHQoKSkK
LSAgICAgICAgbV90b3BSaWdodCA9IEludFNpemUoKTsKKyAgICAgICAgbV90b3BSaWdodCA9IExh
eW91dFNpemUoKTsKICAgICBtX2JvdHRvbUxlZnQuc2NhbGUoZmFjdG9yKTsKICAgICBpZiAoIW1f
Ym90dG9tTGVmdC53aWR0aCgpIHx8ICFtX2JvdHRvbUxlZnQuaGVpZ2h0KCkpCi0gICAgICAgIG1f
Ym90dG9tTGVmdCA9IEludFNpemUoKTsKKyAgICAgICAgbV9ib3R0b21MZWZ0ID0gTGF5b3V0U2l6
ZSgpOwogICAgIG1fYm90dG9tUmlnaHQuc2NhbGUoZmFjdG9yKTsKICAgICBpZiAoIW1fYm90dG9t
UmlnaHQud2lkdGgoKSB8fCAhbV9ib3R0b21SaWdodC5oZWlnaHQoKSkKLSAgICAgICAgbV9ib3R0
b21SaWdodCA9IEludFNpemUoKTsKKyAgICAgICAgbV9ib3R0b21SaWdodCA9IExheW91dFNpemUo
KTsKIAogfQogCi12b2lkIFJvdW5kZWRSZWN0OjpSYWRpaTo6ZXhwYW5kKGludCB0b3BXaWR0aCwg
aW50IGJvdHRvbVdpZHRoLCBpbnQgbGVmdFdpZHRoLCBpbnQgcmlnaHRXaWR0aCkKK3ZvaWQgUm91
bmRlZFJlY3Q6OlJhZGlpOjpleHBhbmQoY29uc3QgTGF5b3V0VW5pdCYgdG9wV2lkdGgsIGNvbnN0
IExheW91dFVuaXQmIGJvdHRvbVdpZHRoLCBjb25zdCBMYXlvdXRVbml0JiBsZWZ0V2lkdGgsIGNv
bnN0IExheW91dFVuaXQmIHJpZ2h0V2lkdGgpCiB7CiAgICAgaWYgKG1fdG9wTGVmdC53aWR0aCgp
ID4gMCAmJiBtX3RvcExlZnQuaGVpZ2h0KCkgPiAwKSB7Ci0gICAgICAgIG1fdG9wTGVmdC5zZXRX
aWR0aChzdGQ6Om1heDxpbnQ+KDAsIG1fdG9wTGVmdC53aWR0aCgpICsgbGVmdFdpZHRoKSk7Ci0g
ICAgICAgIG1fdG9wTGVmdC5zZXRIZWlnaHQoc3RkOjptYXg8aW50PigwLCBtX3RvcExlZnQuaGVp
Z2h0KCkgKyB0b3BXaWR0aCkpOworICAgICAgICBtX3RvcExlZnQuc2V0V2lkdGgoc3RkOjptYXg8
TGF5b3V0VW5pdD4oMCwgbV90b3BMZWZ0LndpZHRoKCkgKyBsZWZ0V2lkdGgpKTsKKyAgICAgICAg
bV90b3BMZWZ0LnNldEhlaWdodChzdGQ6Om1heDxMYXlvdXRVbml0PigwLCBtX3RvcExlZnQuaGVp
Z2h0KCkgKyB0b3BXaWR0aCkpOwogICAgIH0KICAgICBpZiAobV90b3BSaWdodC53aWR0aCgpID4g
MCAmJiBtX3RvcFJpZ2h0LmhlaWdodCgpID4gMCkgewotICAgICAgICBtX3RvcFJpZ2h0LnNldFdp
ZHRoKHN0ZDo6bWF4PGludD4oMCwgbV90b3BSaWdodC53aWR0aCgpICsgcmlnaHRXaWR0aCkpOwot
ICAgICAgICBtX3RvcFJpZ2h0LnNldEhlaWdodChzdGQ6Om1heDxpbnQ+KDAsIG1fdG9wUmlnaHQu
aGVpZ2h0KCkgKyB0b3BXaWR0aCkpOworICAgICAgICBtX3RvcFJpZ2h0LnNldFdpZHRoKHN0ZDo6
bWF4PExheW91dFVuaXQ+KDAsIG1fdG9wUmlnaHQud2lkdGgoKSArIHJpZ2h0V2lkdGgpKTsKKyAg
ICAgICAgbV90b3BSaWdodC5zZXRIZWlnaHQoc3RkOjptYXg8TGF5b3V0VW5pdD4oMCwgbV90b3BS
aWdodC5oZWlnaHQoKSArIHRvcFdpZHRoKSk7CiAgICAgfQogICAgIGlmIChtX2JvdHRvbUxlZnQu
d2lkdGgoKSA+IDAgJiYgbV9ib3R0b21MZWZ0LmhlaWdodCgpID4gMCkgewotICAgICAgICBtX2Jv
dHRvbUxlZnQuc2V0V2lkdGgoc3RkOjptYXg8aW50PigwLCBtX2JvdHRvbUxlZnQud2lkdGgoKSAr
IGxlZnRXaWR0aCkpOwotICAgICAgICBtX2JvdHRvbUxlZnQuc2V0SGVpZ2h0KHN0ZDo6bWF4PGlu
dD4oMCwgbV9ib3R0b21MZWZ0LmhlaWdodCgpICsgYm90dG9tV2lkdGgpKTsKKyAgICAgICAgbV9i
b3R0b21MZWZ0LnNldFdpZHRoKHN0ZDo6bWF4PExheW91dFVuaXQ+KDAsIG1fYm90dG9tTGVmdC53
aWR0aCgpICsgbGVmdFdpZHRoKSk7CisgICAgICAgIG1fYm90dG9tTGVmdC5zZXRIZWlnaHQoc3Rk
OjptYXg8TGF5b3V0VW5pdD4oMCwgbV9ib3R0b21MZWZ0LmhlaWdodCgpICsgYm90dG9tV2lkdGgp
KTsKICAgICB9CiAgICAgaWYgKG1fYm90dG9tUmlnaHQud2lkdGgoKSA+IDAgJiYgbV9ib3R0b21S
aWdodC5oZWlnaHQoKSA+IDApIHsKLSAgICAgICAgbV9ib3R0b21SaWdodC5zZXRXaWR0aChzdGQ6
Om1heDxpbnQ+KDAsIG1fYm90dG9tUmlnaHQud2lkdGgoKSArIHJpZ2h0V2lkdGgpKTsKLSAgICAg
ICAgbV9ib3R0b21SaWdodC5zZXRIZWlnaHQoc3RkOjptYXg8aW50PigwLCBtX2JvdHRvbVJpZ2h0
LmhlaWdodCgpICsgYm90dG9tV2lkdGgpKTsKKyAgICAgICAgbV9ib3R0b21SaWdodC5zZXRXaWR0
aChzdGQ6Om1heDxMYXlvdXRVbml0PigwLCBtX2JvdHRvbVJpZ2h0LndpZHRoKCkgKyByaWdodFdp
ZHRoKSk7CisgICAgICAgIG1fYm90dG9tUmlnaHQuc2V0SGVpZ2h0KHN0ZDo6bWF4PExheW91dFVu
aXQ+KDAsIG1fYm90dG9tUmlnaHQuaGVpZ2h0KCkgKyBib3R0b21XaWR0aCkpOwogICAgIH0KIH0K
IAotdm9pZCBSb3VuZGVkUmVjdDo6aW5mbGF0ZVdpdGhSYWRpaShpbnQgc2l6ZSkKK3ZvaWQgUm91
bmRlZFJlY3Q6OmluZmxhdGVXaXRoUmFkaWkoY29uc3QgTGF5b3V0VW5pdCYgc2l6ZSkKIHsKLSAg
ICBJbnRSZWN0IG9sZCA9IG1fcmVjdDsKKyAgICBMYXlvdXRSZWN0IG9sZCA9IG1fcmVjdDsKIAog
ICAgIG1fcmVjdC5pbmZsYXRlKHNpemUpOwogICAgIC8vIENvbnNpZGVyaW5nIHRoZSBpbmZsYXRp
b24gZmFjdG9yIG9mIHNob3J0ZXIgc2l6ZSB0byBzY2FsZSB0aGUgcmFkaWkgc2VlbXMgYXBwcm9w
cmlhdGUgaGVyZQpAQCAtMTMxLDE4ICsxMzQsMTggQEAgdm9pZCBSb3VuZGVkUmVjdDo6UmFkaWk6
OmV4Y2x1ZGVMb2dpY2FsRWRnZXMoYm9vbCBpc0hvcml6b250YWwsIGJvb2wgZXhjbHVkZUxvZ2kK
ICAgICB9CiB9CiAKLVJvdW5kZWRSZWN0OjpSb3VuZGVkUmVjdChpbnQgeCwgaW50IHksIGludCB3
aWR0aCwgaW50IGhlaWdodCkKK1JvdW5kZWRSZWN0OjpSb3VuZGVkUmVjdChjb25zdCBMYXlvdXRV
bml0JiB4LCBjb25zdCBMYXlvdXRVbml0JiB5LCBjb25zdCBMYXlvdXRVbml0JiB3aWR0aCwgY29u
c3QgTGF5b3V0VW5pdCYgaGVpZ2h0KQogICAgIDogbV9yZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQp
CiB7CiB9CiAKLVJvdW5kZWRSZWN0OjpSb3VuZGVkUmVjdChjb25zdCBJbnRSZWN0JiByZWN0LCBj
b25zdCBSYWRpaSYgcmFkaWkpCitSb3VuZGVkUmVjdDo6Um91bmRlZFJlY3QoY29uc3QgTGF5b3V0
UmVjdCYgcmVjdCwgY29uc3QgUmFkaWkmIHJhZGlpKQogICAgIDogbV9yZWN0KHJlY3QpCiAgICAg
LCBtX3JhZGlpKHJhZGlpKQogewogfQogCi1Sb3VuZGVkUmVjdDo6Um91bmRlZFJlY3QoY29uc3Qg
SW50UmVjdCYgcmVjdCwgY29uc3QgSW50U2l6ZSYgdG9wTGVmdCwgY29uc3QgSW50U2l6ZSYgdG9w
UmlnaHQsIGNvbnN0IEludFNpemUmIGJvdHRvbUxlZnQsIGNvbnN0IEludFNpemUmIGJvdHRvbVJp
Z2h0KQorUm91bmRlZFJlY3Q6OlJvdW5kZWRSZWN0KGNvbnN0IExheW91dFJlY3QmIHJlY3QsIGNv
bnN0IExheW91dFNpemUmIHRvcExlZnQsIGNvbnN0IExheW91dFNpemUmIHRvcFJpZ2h0LCBjb25z
dCBMYXlvdXRTaXplJiBib3R0b21MZWZ0LCBjb25zdCBMYXlvdXRTaXplJiBib3R0b21SaWdodCkK
ICAgICA6IG1fcmVjdChyZWN0KQogICAgICwgbV9yYWRpaSh0b3BMZWZ0LCB0b3BSaWdodCwgYm90
dG9tTGVmdCwgYm90dG9tUmlnaHQpCiB7CkBAIC0xODYsNyArMTg5LDcgQEAgYm9vbCBSb3VuZGVk
UmVjdDo6aW50ZXJzZWN0c1F1YWQoY29uc3QgRmxvYXRRdWFkJiBxdWFkKSBjb25zdAogICAgIGlm
ICghcXVhZC5pbnRlcnNlY3RzUmVjdChyZWN0KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgY29uc3QgSW50U2l6ZSYgdG9wTGVmdCA9IG1fcmFkaWkudG9wTGVmdCgpOworICAgIGNvbnN0
IExheW91dFNpemUmIHRvcExlZnQgPSBtX3JhZGlpLnRvcExlZnQoKTsKICAgICBpZiAoIXRvcExl
ZnQuaXNFbXB0eSgpKSB7CiAgICAgICAgIEZsb2F0UmVjdCByZWN0KG1fcmVjdC54KCksIG1fcmVj
dC55KCksIHRvcExlZnQud2lkdGgoKSwgdG9wTGVmdC5oZWlnaHQoKSk7CiAgICAgICAgIGlmIChx
dWFkLmludGVyc2VjdHNSZWN0KHJlY3QpKSB7CkBAIC0xOTcsNyArMjAwLDcgQEAgYm9vbCBSb3Vu
ZGVkUmVjdDo6aW50ZXJzZWN0c1F1YWQoY29uc3QgRmxvYXRRdWFkJiBxdWFkKSBjb25zdAogICAg
ICAgICB9CiAgICAgfQogCi0gICAgY29uc3QgSW50U2l6ZSYgdG9wUmlnaHQgPSBtX3JhZGlpLnRv
cFJpZ2h0KCk7CisgICAgY29uc3QgTGF5b3V0U2l6ZSYgdG9wUmlnaHQgPSBtX3JhZGlpLnRvcFJp
Z2h0KCk7CiAgICAgaWYgKCF0b3BSaWdodC5pc0VtcHR5KCkpIHsKICAgICAgICAgRmxvYXRSZWN0
IHJlY3QobV9yZWN0Lm1heFgoKSAtIHRvcFJpZ2h0LndpZHRoKCksIG1fcmVjdC55KCksIHRvcFJp
Z2h0LndpZHRoKCksIHRvcFJpZ2h0LmhlaWdodCgpKTsKICAgICAgICAgaWYgKHF1YWQuaW50ZXJz
ZWN0c1JlY3QocmVjdCkpIHsKQEAgLTIwOCw3ICsyMTEsNyBAQCBib29sIFJvdW5kZWRSZWN0Ojpp
bnRlcnNlY3RzUXVhZChjb25zdCBGbG9hdFF1YWQmIHF1YWQpIGNvbnN0CiAgICAgICAgIH0KICAg
ICB9CiAKLSAgICBjb25zdCBJbnRTaXplJiBib3R0b21MZWZ0ID0gbV9yYWRpaS5ib3R0b21MZWZ0
KCk7CisgICAgY29uc3QgTGF5b3V0U2l6ZSYgYm90dG9tTGVmdCA9IG1fcmFkaWkuYm90dG9tTGVm
dCgpOwogICAgIGlmICghYm90dG9tTGVmdC5pc0VtcHR5KCkpIHsKICAgICAgICAgRmxvYXRSZWN0
IHJlY3QobV9yZWN0LngoKSwgbV9yZWN0Lm1heFkoKSAtIGJvdHRvbUxlZnQuaGVpZ2h0KCksIGJv
dHRvbUxlZnQud2lkdGgoKSwgYm90dG9tTGVmdC5oZWlnaHQoKSk7CiAgICAgICAgIGlmIChxdWFk
LmludGVyc2VjdHNSZWN0KHJlY3QpKSB7CkBAIC0yMTksNyArMjIyLDcgQEAgYm9vbCBSb3VuZGVk
UmVjdDo6aW50ZXJzZWN0c1F1YWQoY29uc3QgRmxvYXRRdWFkJiBxdWFkKSBjb25zdAogICAgICAg
ICB9CiAgICAgfQogCi0gICAgY29uc3QgSW50U2l6ZSYgYm90dG9tUmlnaHQgPSBtX3JhZGlpLmJv
dHRvbVJpZ2h0KCk7CisgICAgY29uc3QgTGF5b3V0U2l6ZSYgYm90dG9tUmlnaHQgPSBtX3JhZGlp
LmJvdHRvbVJpZ2h0KCk7CiAgICAgaWYgKCFib3R0b21SaWdodC5pc0VtcHR5KCkpIHsKICAgICAg
ICAgRmxvYXRSZWN0IHJlY3QobV9yZWN0Lm1heFgoKSAtIGJvdHRvbVJpZ2h0LndpZHRoKCksIG1f
cmVjdC5tYXhZKCkgLSBib3R0b21SaWdodC5oZWlnaHQoKSwgYm90dG9tUmlnaHQud2lkdGgoKSwg
Ym90dG9tUmlnaHQuaGVpZ2h0KCkpOwogICAgICAgICBpZiAocXVhZC5pbnRlcnNlY3RzUmVjdChy
ZWN0KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUm91
bmRlZFJlY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JvdW5kZWRSZWN0
LmgKaW5kZXggZDkyM2UzNTNmNDhhYjk4ZGU5MTU3NzM2M2JhNjM0Yzc4YTljMjMwMy4uNjFiZGE5
N2JmNWY1MDk1MjM3NTcxYTU1YmVhZmJhNzc5MDVlZjgwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZFJlY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Sb3VuZGVkUmVjdC5oCkBAIC0yOCwxNyArMjgsMTkgQEAKICNk
ZWZpbmUgUm91bmRlZFJlY3RfaAogCiAjaW5jbHVkZSAiRmxvYXRRdWFkLmgiCi0jaW5jbHVkZSAi
SW50UmVjdC5oIgorI2luY2x1ZGUgIkxheW91dFJlY3QuaCIKKyNpbmNsdWRlICJMYXlvdXRTaXpl
LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgTGF5b3V0VW5pdDsKIAogY2xhc3Mg
Um91bmRlZFJlY3QgewogcHVibGljOgogICAgIGNsYXNzIFJhZGlpIHsKICAgICBwdWJsaWM6CiAg
ICAgICAgIFJhZGlpKCkge30KLSAgICAgICAgUmFkaWkoY29uc3QgSW50U2l6ZSYgdG9wTGVmdCwg
Y29uc3QgSW50U2l6ZSYgdG9wUmlnaHQsIGNvbnN0IEludFNpemUmIGJvdHRvbUxlZnQsIGNvbnN0
IEludFNpemUmIGJvdHRvbVJpZ2h0KQorICAgICAgICBSYWRpaShjb25zdCBMYXlvdXRTaXplJiB0
b3BMZWZ0LCBjb25zdCBMYXlvdXRTaXplJiB0b3BSaWdodCwgY29uc3QgTGF5b3V0U2l6ZSYgYm90
dG9tTGVmdCwgY29uc3QgTGF5b3V0U2l6ZSYgYm90dG9tUmlnaHQpCiAgICAgICAgICAgICA6IG1f
dG9wTGVmdCh0b3BMZWZ0KQogICAgICAgICAgICAgLCBtX3RvcFJpZ2h0KHRvcFJpZ2h0KQogICAg
ICAgICAgICAgLCBtX2JvdHRvbUxlZnQoYm90dG9tTGVmdCkKQEAgLTQ2LDE0ICs0OCwxNCBAQCBw
dWJsaWM6CiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgc2V0VG9wTGVmdChj
b25zdCBJbnRTaXplJiBzaXplKSB7IG1fdG9wTGVmdCA9IHNpemU7IH0KLSAgICAgICAgdm9pZCBz
ZXRUb3BSaWdodChjb25zdCBJbnRTaXplJiBzaXplKSB7IG1fdG9wUmlnaHQgPSBzaXplOyB9Ci0g
ICAgICAgIHZvaWQgc2V0Qm90dG9tTGVmdChjb25zdCBJbnRTaXplJiBzaXplKSB7IG1fYm90dG9t
TGVmdCA9IHNpemU7IH0KLSAgICAgICAgdm9pZCBzZXRCb3R0b21SaWdodChjb25zdCBJbnRTaXpl
JiBzaXplKSB7IG1fYm90dG9tUmlnaHQgPSBzaXplOyB9Ci0gICAgICAgIGNvbnN0IEludFNpemUm
IHRvcExlZnQoKSBjb25zdCB7IHJldHVybiBtX3RvcExlZnQ7IH0KLSAgICAgICAgY29uc3QgSW50
U2l6ZSYgdG9wUmlnaHQoKSBjb25zdCB7IHJldHVybiBtX3RvcFJpZ2h0OyB9Ci0gICAgICAgIGNv
bnN0IEludFNpemUmIGJvdHRvbUxlZnQoKSBjb25zdCB7IHJldHVybiBtX2JvdHRvbUxlZnQ7IH0K
LSAgICAgICAgY29uc3QgSW50U2l6ZSYgYm90dG9tUmlnaHQoKSBjb25zdCB7IHJldHVybiBtX2Jv
dHRvbVJpZ2h0OyB9CisgICAgICAgIHZvaWQgc2V0VG9wTGVmdChjb25zdCBMYXlvdXRTaXplJiBz
aXplKSB7IG1fdG9wTGVmdCA9IHNpemU7IH0KKyAgICAgICAgdm9pZCBzZXRUb3BSaWdodChjb25z
dCBMYXlvdXRTaXplJiBzaXplKSB7IG1fdG9wUmlnaHQgPSBzaXplOyB9CisgICAgICAgIHZvaWQg
c2V0Qm90dG9tTGVmdChjb25zdCBMYXlvdXRTaXplJiBzaXplKSB7IG1fYm90dG9tTGVmdCA9IHNp
emU7IH0KKyAgICAgICAgdm9pZCBzZXRCb3R0b21SaWdodChjb25zdCBMYXlvdXRTaXplJiBzaXpl
KSB7IG1fYm90dG9tUmlnaHQgPSBzaXplOyB9CisgICAgICAgIGNvbnN0IExheW91dFNpemUmIHRv
cExlZnQoKSBjb25zdCB7IHJldHVybiBtX3RvcExlZnQ7IH0KKyAgICAgICAgY29uc3QgTGF5b3V0
U2l6ZSYgdG9wUmlnaHQoKSBjb25zdCB7IHJldHVybiBtX3RvcFJpZ2h0OyB9CisgICAgICAgIGNv
bnN0IExheW91dFNpemUmIGJvdHRvbUxlZnQoKSBjb25zdCB7IHJldHVybiBtX2JvdHRvbUxlZnQ7
IH0KKyAgICAgICAgY29uc3QgTGF5b3V0U2l6ZSYgYm90dG9tUmlnaHQoKSBjb25zdCB7IHJldHVy
biBtX2JvdHRvbVJpZ2h0OyB9CiAKICAgICAgICAgYm9vbCBpc1plcm8oKSBjb25zdDsKIApAQCAt
NjEsMzUgKzYzLDM1IEBAIHB1YmxpYzoKICAgICAgICAgdm9pZCBleGNsdWRlTG9naWNhbEVkZ2Vz
KGJvb2wgaXNIb3Jpem9udGFsLCBib29sIGV4Y2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wgZXhj
bHVkZUxvZ2ljYWxSaWdodEVkZ2UpOwogCiAgICAgICAgIHZvaWQgc2NhbGUoZmxvYXQgZmFjdG9y
KTsKLSAgICAgICAgdm9pZCBleHBhbmQoaW50IHRvcFdpZHRoLCBpbnQgYm90dG9tV2lkdGgsIGlu
dCBsZWZ0V2lkdGgsIGludCByaWdodFdpZHRoKTsKLSAgICAgICAgdm9pZCBleHBhbmQoaW50IHNp
emUpIHsgZXhwYW5kKHNpemUsIHNpemUsIHNpemUsIHNpemUpOyB9Ci0gICAgICAgIHZvaWQgc2hy
aW5rKGludCB0b3BXaWR0aCwgaW50IGJvdHRvbVdpZHRoLCBpbnQgbGVmdFdpZHRoLCBpbnQgcmln
aHRXaWR0aCkgeyBleHBhbmQoLXRvcFdpZHRoLCAtYm90dG9tV2lkdGgsIC1sZWZ0V2lkdGgsIC1y
aWdodFdpZHRoKTsgfQotICAgICAgICB2b2lkIHNocmluayhpbnQgc2l6ZSkgeyBzaHJpbmsoc2l6
ZSwgc2l6ZSwgc2l6ZSwgc2l6ZSk7IH0KKyAgICAgICAgdm9pZCBleHBhbmQoY29uc3QgTGF5b3V0
VW5pdCYgdG9wV2lkdGgsIGNvbnN0IExheW91dFVuaXQmIGJvdHRvbVdpZHRoLCBjb25zdCBMYXlv
dXRVbml0JiBsZWZ0V2lkdGgsIGNvbnN0IExheW91dFVuaXQmIHJpZ2h0V2lkdGgpOworICAgICAg
ICB2b2lkIGV4cGFuZChjb25zdCBMYXlvdXRVbml0JiBzaXplKSB7IGV4cGFuZChzaXplLCBzaXpl
LCBzaXplLCBzaXplKTsgfQorICAgICAgICB2b2lkIHNocmluayhjb25zdCBMYXlvdXRVbml0JiB0
b3BXaWR0aCwgY29uc3QgTGF5b3V0VW5pdCYgYm90dG9tV2lkdGgsIGNvbnN0IExheW91dFVuaXQm
IGxlZnRXaWR0aCwgY29uc3QgTGF5b3V0VW5pdCYgcmlnaHRXaWR0aCkgeyBleHBhbmQoLXRvcFdp
ZHRoLCAtYm90dG9tV2lkdGgsIC1sZWZ0V2lkdGgsIC1yaWdodFdpZHRoKTsgfQorICAgICAgICB2
b2lkIHNocmluayhjb25zdCBMYXlvdXRVbml0JiBzaXplKSB7IHNocmluayhzaXplLCBzaXplLCBz
aXplLCBzaXplKTsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgSW50U2l6ZSBtX3RvcExlZnQ7
Ci0gICAgICAgIEludFNpemUgbV90b3BSaWdodDsKLSAgICAgICAgSW50U2l6ZSBtX2JvdHRvbUxl
ZnQ7Ci0gICAgICAgIEludFNpemUgbV9ib3R0b21SaWdodDsKKyAgICAgICAgTGF5b3V0U2l6ZSBt
X3RvcExlZnQ7CisgICAgICAgIExheW91dFNpemUgbV90b3BSaWdodDsKKyAgICAgICAgTGF5b3V0
U2l6ZSBtX2JvdHRvbUxlZnQ7CisgICAgICAgIExheW91dFNpemUgbV9ib3R0b21SaWdodDsKICAg
ICB9OwogCi0gICAgZXhwbGljaXQgUm91bmRlZFJlY3QoY29uc3QgSW50UmVjdCYsIGNvbnN0IFJh
ZGlpJiA9IFJhZGlpKCkpOwotICAgIFJvdW5kZWRSZWN0KGludCB4LCBpbnQgeSwgaW50IHdpZHRo
LCBpbnQgaGVpZ2h0KTsKLSAgICBSb3VuZGVkUmVjdChjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50
U2l6ZSYgdG9wTGVmdCwgY29uc3QgSW50U2l6ZSYgdG9wUmlnaHQsIGNvbnN0IEludFNpemUmIGJv
dHRvbUxlZnQsIGNvbnN0IEludFNpemUmIGJvdHRvbVJpZ2h0KTsKKyAgICBleHBsaWNpdCBSb3Vu
ZGVkUmVjdChjb25zdCBMYXlvdXRSZWN0JiwgY29uc3QgUmFkaWkmID0gUmFkaWkoKSk7CisgICAg
Um91bmRlZFJlY3QoY29uc3QgTGF5b3V0VW5pdCYsIGNvbnN0IExheW91dFVuaXQmLCBjb25zdCBM
YXlvdXRVbml0JiB3aWR0aCwgY29uc3QgTGF5b3V0VW5pdCYgaGVpZ2h0KTsKKyAgICBSb3VuZGVk
UmVjdChjb25zdCBMYXlvdXRSZWN0JiwgY29uc3QgTGF5b3V0U2l6ZSYgdG9wTGVmdCwgY29uc3Qg
TGF5b3V0U2l6ZSYgdG9wUmlnaHQsIGNvbnN0IExheW91dFNpemUmIGJvdHRvbUxlZnQsIGNvbnN0
IExheW91dFNpemUmIGJvdHRvbVJpZ2h0KTsKIAotICAgIGNvbnN0IEludFJlY3QmIHJlY3QoKSBj
b25zdCB7IHJldHVybiBtX3JlY3Q7IH0KKyAgICBjb25zdCBMYXlvdXRSZWN0JiByZWN0KCkgY29u
c3QgeyByZXR1cm4gbV9yZWN0OyB9CiAgICAgY29uc3QgUmFkaWkmIHJhZGlpKCkgY29uc3QgeyBy
ZXR1cm4gbV9yYWRpaTsgfQogICAgIGJvb2wgaXNSb3VuZGVkKCkgY29uc3QgeyByZXR1cm4gIW1f
cmFkaWkuaXNaZXJvKCk7IH0KICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX3Jl
Y3QuaXNFbXB0eSgpOyB9CiAKLSAgICB2b2lkIHNldFJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkg
eyBtX3JlY3QgPSByZWN0OyB9CisgICAgdm9pZCBzZXRSZWN0KGNvbnN0IExheW91dFJlY3QmIHJl
Y3QpIHsgbV9yZWN0ID0gcmVjdDsgfQogICAgIHZvaWQgc2V0UmFkaWkoY29uc3QgUmFkaWkmIHJh
ZGlpKSB7IG1fcmFkaWkgPSByYWRpaTsgfQogCi0gICAgdm9pZCBtb3ZlKGNvbnN0IEludFNpemUm
IHNpemUpIHsgbV9yZWN0Lm1vdmUoc2l6ZSk7IH0KLSAgICB2b2lkIGluZmxhdGUoaW50IHNpemUp
IHsgbV9yZWN0LmluZmxhdGUoc2l6ZSk7ICB9Ci0gICAgdm9pZCBpbmZsYXRlV2l0aFJhZGlpKGlu
dCBzaXplKTsKLSAgICB2b2lkIGV4cGFuZFJhZGlpKGludCBzaXplKSB7IG1fcmFkaWkuZXhwYW5k
KHNpemUpOyB9Ci0gICAgdm9pZCBzaHJpbmtSYWRpaShpbnQgc2l6ZSkgeyBtX3JhZGlpLnNocmlu
ayhzaXplKTsgfQorICAgIHZvaWQgbW92ZShjb25zdCBMYXlvdXRTaXplJiBzaXplKSB7IG1fcmVj
dC5tb3ZlKHNpemUpOyB9CisgICAgdm9pZCBpbmZsYXRlKGNvbnN0IExheW91dFVuaXQmIHNpemUp
IHsgbV9yZWN0LmluZmxhdGUoc2l6ZSk7ICB9CisgICAgdm9pZCBpbmZsYXRlV2l0aFJhZGlpKGNv
bnN0IExheW91dFVuaXQmIHNpemUpOworICAgIHZvaWQgZXhwYW5kUmFkaWkoY29uc3QgTGF5b3V0
VW5pdCYgc2l6ZSkgeyBtX3JhZGlpLmV4cGFuZChzaXplKTsgfQorICAgIHZvaWQgc2hyaW5rUmFk
aWkoY29uc3QgTGF5b3V0VW5pdCYgc2l6ZSkgeyBtX3JhZGlpLnNocmluayhzaXplKTsgfQogCiAg
ICAgdm9pZCBpbmNsdWRlTG9naWNhbEVkZ2VzKGNvbnN0IFJhZGlpJiBlZGdlcywgYm9vbCBpc0hv
cml6b250YWwsIGJvb2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBpbmNsdWRlTG9naWNh
bFJpZ2h0RWRnZSk7CiAgICAgdm9pZCBleGNsdWRlTG9naWNhbEVkZ2VzKGJvb2wgaXNIb3Jpem9u
dGFsLCBib29sIGV4Y2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wgZXhjbHVkZUxvZ2ljYWxSaWdo
dEVkZ2UpOwpAQCAtMTAyLDcgKzEwNCw3IEBAIHB1YmxpYzoKICAgICBib29sIGludGVyc2VjdHNR
dWFkKGNvbnN0IEZsb2F0UXVhZCYpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIEludFJlY3QgbV9y
ZWN0OworICAgIExheW91dFJlY3QgbV9yZWN0OwogICAgIFJhZGlpIG1fcmFkaWk7CiB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCmluZGV4
IDgyYjE4MGE0NmU3YTIzZGE2NTdjZjZlZTdmMmEyYTIzOWZmNTljYjIuLmQ2NzUyMjhiYmJlYmQ5
YWFkMmZjNzYyZGQ0ZjIzMjNjZTgyYWUwODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCkBAIC04Myw3ICs4Myw3IEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuIG1faW1hZ2VCdWZmZXIuZ2V0KCk7CiAgICAgfQogCi0gICAgYm9vbCBzZXRD
YWNoZWRTaGFkb3dWYWx1ZXMoY29uc3QgRmxvYXRTaXplJiByYWRpdXMsIGNvbnN0IENvbG9yJiBj
b2xvciwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIHNoYWRvd1JlY3Qs
IGNvbnN0IFJvdW5kZWRSZWN0OjpSYWRpaSYgcmFkaWksIGNvbnN0IEZsb2F0U2l6ZSYgbGF5ZXJT
aXplKQorICAgIGJvb2wgc2V0Q2FjaGVkU2hhZG93VmFsdWVzKGNvbnN0IEZsb2F0U2l6ZSYgcmFk
aXVzLCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3QgRmxv
YXRSZWN0JiBzaGFkb3dSZWN0LCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSYgcmFkaWks
IGNvbnN0IEZsb2F0U2l6ZSYgbGF5ZXJTaXplKQogICAgIHsKICAgICAgICAgaWYgKCFtX2xhc3RX
YXNJbnNldCAmJiBtX2xhc3RSYWRpdXMgPT0gcmFkaXVzICYmIG1fbGFzdENvbG9yID09IGNvbG9y
ICYmIG1fbGFzdENvbG9yU3BhY2UgPT0gY29sb3JTcGFjZSAmJiBtX2xhc3RTaGFkb3dSZWN0ID09
IHNoYWRvd1JlY3QgJiYgIG1fbGFzdFJhZGlpID09IHJhZGlpICYmIG1fbGFzdExheWVyU2l6ZSA9
PSBsYXllclNpemUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC05OSw3ICs5OSw3IEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgYm9vbCBzZXRDYWNo
ZWRJbnNldFNoYWRvd1ZhbHVlcyhjb25zdCBGbG9hdFNpemUmIHJhZGl1cywgY29uc3QgQ29sb3Im
IGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRzLCBj
b25zdCBGbG9hdFJlY3QmIHNoYWRvd1JlY3QsIGNvbnN0IFJvdW5kZWRSZWN0OjpSYWRpaSYgcmFk
aWkpCisgICAgYm9vbCBzZXRDYWNoZWRJbnNldFNoYWRvd1ZhbHVlcyhjb25zdCBGbG9hdFNpemUm
IHJhZGl1cywgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0
IEZsb2F0UmVjdCYgYm91bmRzLCBjb25zdCBGbG9hdFJlY3QmIHNoYWRvd1JlY3QsIGNvbnN0IEZs
b2F0Um91bmRlZFJlY3Q6OlJhZGlpJiByYWRpaSkKICAgICB7CiAgICAgICAgIGlmIChtX2xhc3RX
YXNJbnNldCAmJiBtX2xhc3RSYWRpdXMgPT0gcmFkaXVzICYmIG1fbGFzdENvbG9yID09IGNvbG9y
ICYmIG1fbGFzdENvbG9yU3BhY2UgPT0gY29sb3JTcGFjZSAmJiBtX2xhc3RJbnNldEJvdW5kcyA9
PSBib3VuZHMgJiYgc2hhZG93UmVjdCA9PSBtX2xhc3RTaGFkb3dSZWN0ICYmIHJhZGlpID09IG1f
bGFzdFJhZGlpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTQ3LDcgKzE0Nyw3IEBA
IHByaXZhdGU6CiAgICAgCiAgICAgRmxvYXRSZWN0IG1fbGFzdEluc2V0Qm91bmRzOwogICAgIEZs
b2F0UmVjdCBtX2xhc3RTaGFkb3dSZWN0OwotICAgIFJvdW5kZWRSZWN0OjpSYWRpaSBtX2xhc3RS
YWRpaTsKKyAgICBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSBtX2xhc3RSYWRpaTsKICAgICBDb2xv
ciBtX2xhc3RDb2xvcjsKICAgICBDb2xvclNwYWNlIG1fbGFzdENvbG9yU3BhY2U7CiAgICAgRmxv
YXRTaXplIG1fbGFzdFJhZGl1czsKQEAgLTQ4Miw3ICs0ODIsNyBAQCB2b2lkIFNoYWRvd0JsdXI6
OmRyYXdTaGFkb3dCdWZmZXIoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQpCiAgICAg
Z3JhcGhpY3NDb250ZXh0LT5maWxsUmVjdChGbG9hdFJlY3QobV9sYXllck9yaWdpbiwgbV9zb3Vy
Y2VSZWN0LnNpemUoKSkpOwogfQogCi1zdGF0aWMgdm9pZCBjb21wdXRlU2xpY2VTaXplc0Zyb21S
YWRpaShjb25zdCBJbnRTaXplJiB0d2ljZVJhZGl1cywgY29uc3QgUm91bmRlZFJlY3Q6OlJhZGlp
JiByYWRpaSwgaW50JiBsZWZ0U2xpY2UsIGludCYgcmlnaHRTbGljZSwgaW50JiB0b3BTbGljZSwg
aW50JiBib3R0b21TbGljZSkKK3N0YXRpYyB2b2lkIGNvbXB1dGVTbGljZVNpemVzRnJvbVJhZGlp
KGNvbnN0IEludFNpemUmIHR3aWNlUmFkaXVzLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRp
aSYgcmFkaWksIGludCYgbGVmdFNsaWNlLCBpbnQmIHJpZ2h0U2xpY2UsIGludCYgdG9wU2xpY2Us
IGludCYgYm90dG9tU2xpY2UpCiB7CiAgICAgbGVmdFNsaWNlID0gdHdpY2VSYWRpdXMud2lkdGgo
KSArIHN0ZDo6bWF4KHJhZGlpLnRvcExlZnQoKS53aWR0aCgpLCByYWRpaS5ib3R0b21MZWZ0KCku
d2lkdGgoKSk7CiAgICAgcmlnaHRTbGljZSA9IHR3aWNlUmFkaXVzLndpZHRoKCkgKyBzdGQ6Om1h
eChyYWRpaS50b3BSaWdodCgpLndpZHRoKCksIHJhZGlpLmJvdHRvbVJpZ2h0KCkud2lkdGgoKSk7
CkBAIC00OTEsNyArNDkxLDcgQEAgc3RhdGljIHZvaWQgY29tcHV0ZVNsaWNlU2l6ZXNGcm9tUmFk
aWkoY29uc3QgSW50U2l6ZSYgdHdpY2VSYWRpdXMsIGNvbnN0IFJvdW5kZWQKICAgICBib3R0b21T
bGljZSA9IHR3aWNlUmFkaXVzLmhlaWdodCgpICsgc3RkOjptYXgocmFkaWkuYm90dG9tTGVmdCgp
LmhlaWdodCgpLCByYWRpaS5ib3R0b21SaWdodCgpLmhlaWdodCgpKTsKIH0KIAotSW50U2l6ZSBT
aGFkb3dCbHVyOjp0ZW1wbGF0ZVNpemUoY29uc3QgSW50U2l6ZSYgcmFkaXVzUGFkZGluZywgY29u
c3QgUm91bmRlZFJlY3Q6OlJhZGlpJiByYWRpaSkgY29uc3QKK0ludFNpemUgU2hhZG93Qmx1cjo6
dGVtcGxhdGVTaXplKGNvbnN0IEludFNpemUmIHJhZGl1c1BhZGRpbmcsIGNvbnN0IEZsb2F0Um91
bmRlZFJlY3Q6OlJhZGlpJiByYWRpaSkgY29uc3QKIHsKICAgICBjb25zdCBpbnQgdGVtcGxhdGVT
aWRlTGVuZ3RoID0gMTsKIApAQCAtNTA5LDcgKzUwOSw3IEBAIEludFNpemUgU2hhZG93Qmx1cjo6
dGVtcGxhdGVTaXplKGNvbnN0IEludFNpemUmIHJhZGl1c1BhZGRpbmcsIGNvbnN0IFJvdW5kZWRS
ZWN0CiAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGVTaWRlTGVuZ3RoICsgdG9wU2xpY2UgKyBi
b3R0b21TbGljZSk7CiB9CiAKLXZvaWQgU2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3coR3JhcGhp
Y3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgc2hhZG93ZWRSZWN0
LCBjb25zdCBSb3VuZGVkUmVjdDo6UmFkaWkmIHJhZGlpKQordm9pZCBTaGFkb3dCbHVyOjpkcmF3
UmVjdFNoYWRvdyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRS
ZWN0JiBzaGFkb3dlZFJlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpJiByYWRpaSkK
IHsKICAgICBJbnRSZWN0IGxheWVyUmVjdCA9IGNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0KGdy
YXBoaWNzQ29udGV4dCwgc2hhZG93ZWRSZWN0LCBncmFwaGljc0NvbnRleHQtPmNsaXBCb3VuZHMo
KSk7CiAgICAgaWYgKGxheWVyUmVjdC5pc0VtcHR5KCkpCkBAIC01MzYsNyArNTM2LDcgQEAgdm9p
ZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvdyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29u
dGV4dCwgY29uc3QgRmxvYXRSZWMKICAgICBkcmF3UmVjdFNoYWRvd1dpdGhUaWxpbmcoZ3JhcGhp
Y3NDb250ZXh0LCBzaGFkb3dlZFJlY3QsIHJhZGlpLCB0ZW1wbGF0ZVNpemUsIGVkZ2VTaXplKTsK
IH0KIAotdm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3coR3JhcGhpY3NDb250ZXh0KiBn
cmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRSZWN0JiBo
b2xlUmVjdCwgY29uc3QgUm91bmRlZFJlY3Q6OlJhZGlpJiBob2xlUmFkaWkpCit2b2lkIFNoYWRv
d0JsdXI6OmRyYXdJbnNldFNoYWRvdyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwg
Y29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdFJlY3QmIGhvbGVSZWN0LCBjb25zdCBG
bG9hdFJvdW5kZWRSZWN0OjpSYWRpaSYgaG9sZVJhZGlpKQogewogICAgIEludFJlY3QgbGF5ZXJS
ZWN0ID0gY2FsY3VsYXRlTGF5ZXJCb3VuZGluZ1JlY3QoZ3JhcGhpY3NDb250ZXh0LCByZWN0LCBn
cmFwaGljc0NvbnRleHQtPmNsaXBCb3VuZHMoKSk7CiAgICAgaWYgKGxheWVyUmVjdC5pc0VtcHR5
KCkpCkBAIC01NjMsNyArNTYzLDcgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3co
R3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0UmUKICAgICBkcmF3
SW5zZXRTaGFkb3dXaXRoVGlsaW5nKGdyYXBoaWNzQ29udGV4dCwgcmVjdCwgaG9sZVJlY3QsIGhv
bGVSYWRpaSwgdGVtcGxhdGVTaXplLCBlZGdlU2l6ZSk7CiB9CiAKLXZvaWQgU2hhZG93Qmx1cjo6
ZHJhd1JlY3RTaGFkb3dXaXRob3V0VGlsaW5nKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250
ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHNoYWRvd2VkUmVjdCwgY29uc3QgUm91bmRlZFJlY3Q6OlJh
ZGlpJiByYWRpaSwgY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0KQordm9pZCBTaGFkb3dCbHVyOjpk
cmF3UmVjdFNoYWRvd1dpdGhvdXRUaWxpbmcoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRl
eHQsIGNvbnN0IEZsb2F0UmVjdCYgc2hhZG93ZWRSZWN0LCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0
OjpSYWRpaSYgcmFkaWksIGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCkKIHsKICAgICBtX2xheWVy
SW1hZ2UgPSBTY3JhdGNoQnVmZmVyOjpzaGFyZWQoKS5nZXRTY3JhdGNoQnVmZmVyKGxheWVyUmVj
dC5zaXplKCkpOwogICAgIGlmICghbV9sYXllckltYWdlKQpAQCAtNTk4LDcgKzU5OCw3IEBAIHZv
aWQgU2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3dXaXRob3V0VGlsaW5nKEdyYXBoaWNzQ29udGV4
dCogZ3JhcGhpY3NDb250ZXh0LCBjCiAgICAgU2NyYXRjaEJ1ZmZlcjo6c2hhcmVkKCkuc2NoZWR1
bGVTY3JhdGNoQnVmZmVyUHVyZ2UoKTsKIH0KIAotdm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRT
aGFkb3dXaXRob3V0VGlsaW5nKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25z
dCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgaG9sZVJlY3QsIGNvbnN0IFJvdW5k
ZWRSZWN0OjpSYWRpaSYgaG9sZVJhZGlpLCBjb25zdCBJbnRSZWN0JiBsYXllclJlY3QpCit2b2lk
IFNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvd1dpdGhvdXRUaWxpbmcoR3JhcGhpY3NDb250ZXh0
KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBob2xlUmVjdCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkmIGhvbGVSYWRpaSwgY29u
c3QgSW50UmVjdCYgbGF5ZXJSZWN0KQogewogICAgIG1fbGF5ZXJJbWFnZSA9IFNjcmF0Y2hCdWZm
ZXI6OnNoYXJlZCgpLmdldFNjcmF0Y2hCdWZmZXIobGF5ZXJSZWN0LnNpemUoKSk7CiAgICAgaWYg
KCFtX2xheWVySW1hZ2UpCkBAIC02NzEsNyArNjcxLDcgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3
SW5zZXRTaGFkb3dXaXRob3V0VGlsaW5nKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0
LAogICAgICB0aGUgc2hhZG93LgogICovCiAKLXZvaWQgU2hhZG93Qmx1cjo6ZHJhd0luc2V0U2hh
ZG93V2l0aFRpbGluZyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxv
YXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdFJlY3QmIGhvbGVSZWN0LCBjb25zdCBSb3VuZGVkUmVj
dDo6UmFkaWkmIHJhZGlpLCBjb25zdCBJbnRTaXplJiB0ZW1wbGF0ZVNpemUsIGNvbnN0IEludFNp
emUmIGVkZ2VTaXplKQordm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRoVGlsaW5n
KEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgaG9sZVJlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlp
JiByYWRpaSwgY29uc3QgSW50U2l6ZSYgdGVtcGxhdGVTaXplLCBjb25zdCBJbnRTaXplJiBlZGdl
U2l6ZSkKIHsKICAgICBtX2xheWVySW1hZ2UgPSBTY3JhdGNoQnVmZmVyOjpzaGFyZWQoKS5nZXRT
Y3JhdGNoQnVmZmVyKHRlbXBsYXRlU2l6ZSk7CiAgICAgaWYgKCFtX2xheWVySW1hZ2UpCkBAIC03
MzYsNyArNzM2LDcgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRoVGlsaW5n
KEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb24KICAgICBTY3JhdGNoQnVmZmVy
OjpzaGFyZWQoKS5zY2hlZHVsZVNjcmF0Y2hCdWZmZXJQdXJnZSgpOwogfQogCi12b2lkIFNoYWRv
d0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0aFRpbGluZyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNz
Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBzaGFkb3dlZFJlY3QsIGNvbnN0IFJvdW5kZWRSZWN0
OjpSYWRpaSYgcmFkaWksIGNvbnN0IEludFNpemUmIHRlbXBsYXRlU2l6ZSwgY29uc3QgSW50U2l6
ZSYgZWRnZVNpemUpCit2b2lkIFNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0aFRpbGluZyhH
cmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBzaGFkb3dl
ZFJlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpJiByYWRpaSwgY29uc3QgSW50U2l6
ZSYgdGVtcGxhdGVTaXplLCBjb25zdCBJbnRTaXplJiBlZGdlU2l6ZSkKIHsKICAgICBtX2xheWVy
SW1hZ2UgPSBTY3JhdGNoQnVmZmVyOjpzaGFyZWQoKS5nZXRTY3JhdGNoQnVmZmVyKHRlbXBsYXRl
U2l6ZSk7CiAgICAgaWYgKCFtX2xheWVySW1hZ2UpCkBAIC03ODEsNyArNzgxLDcgQEAgdm9pZCBT
aGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvd1dpdGhUaWxpbmcoR3JhcGhpY3NDb250ZXh0KiBncmFw
aGljc0NvbnRleHQsIGNvbnMKICAgICBTY3JhdGNoQnVmZmVyOjpzaGFyZWQoKS5zY2hlZHVsZVNj
cmF0Y2hCdWZmZXJQdXJnZSgpOwogfQogCi12b2lkIFNoYWRvd0JsdXI6OmRyYXdMYXllclBpZWNl
cyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBzaGFk
b3dCb3VuZHMsIGNvbnN0IFJvdW5kZWRSZWN0OjpSYWRpaSYgcmFkaWksIGNvbnN0IEludFNpemUm
IGJ1ZmZlclBhZGRpbmcsIGNvbnN0IEludFNpemUmIHRlbXBsYXRlU2l6ZSwgU2hhZG93RGlyZWN0
aW9uIGRpcmVjdGlvbikKK3ZvaWQgU2hhZG93Qmx1cjo6ZHJhd0xheWVyUGllY2VzKEdyYXBoaWNz
Q29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHNoYWRvd0JvdW5kcywg
Y29uc3QgRmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkmIHJhZGlpLCBjb25zdCBJbnRTaXplJiBidWZm
ZXJQYWRkaW5nLCBjb25zdCBJbnRTaXplJiB0ZW1wbGF0ZVNpemUsIFNoYWRvd0RpcmVjdGlvbiBk
aXJlY3Rpb24pCiB7CiAgICAgY29uc3QgSW50U2l6ZSB0d2ljZVJhZGl1cyA9IEludFNpemUoYnVm
ZmVyUGFkZGluZy53aWR0aCgpICogMiwgYnVmZmVyUGFkZGluZy5oZWlnaHQoKSAqIDIpOwogCkBA
IC04OTMsNyArODkzLDcgQEAgR3JhcGhpY3NDb250ZXh0KiBTaGFkb3dCbHVyOjpiZWdpblNoYWRv
d0xheWVyKEdyYXBoaWNzQ29udGV4dCAqY29udGV4dCwgY29uc3QgRmwKIAogICAgIC8vIFdlIHJl
c2V0IHRoZSBzY3JhdGNoIGJ1ZmZlciB2YWx1ZXMgaGVyZSwgYmVjYXVzZSB0aGUgYnVmZmVyIHdp
bGwgbm8gbG9uZ2VyIGNvbnRhaW4KICAgICAvLyBkYXRhIGZyb20gYW55IHByZXZpb3VzIHJlY3Rh
bmdsZSBvciBpbnNldCBzaGFkb3dzIGRyYXduIHZpYSB0aGUgdGlsaW5nIHBhdGguCi0gICAgU2Ny
YXRjaEJ1ZmZlcjo6c2hhcmVkKCkuc2V0Q2FjaGVkU2hhZG93VmFsdWVzKEZsb2F0U2l6ZSgpLCBD
b2xvcjo6YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0IsIEludFJlY3QoKSwgUm91bmRlZFJlY3Q6
OlJhZGlpKCksIG1fbGF5ZXJTaXplKTsKKyAgICBTY3JhdGNoQnVmZmVyOjpzaGFyZWQoKS5zZXRD
YWNoZWRTaGFkb3dWYWx1ZXMoRmxvYXRTaXplKCksIENvbG9yOjpibGFjaywgQ29sb3JTcGFjZURl
dmljZVJHQiwgSW50UmVjdCgpLCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSgpLCBtX2xheWVyU2l6
ZSk7CiAgICAgbV9sYXllckltYWdlID0gU2NyYXRjaEJ1ZmZlcjo6c2hhcmVkKCkuZ2V0U2NyYXRj
aEJ1ZmZlcihsYXllclJlY3Quc2l6ZSgpKTsKIAogICAgIEdyYXBoaWNzQ29udGV4dCogc2hhZG93
Q29udGV4dCA9IG1fbGF5ZXJJbWFnZS0+Y29udGV4dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5oCmluZGV4IDMyZmY2MGI2Y2IwM2IyMmI5NjhjOGU3
ODY3ZDgzYTZmYWY5MjA0MTcuLjk1OWUxN2U4OWI2OGMyODAyMDMyZTVhOWMxZjk0OTQ5MGYwYjdj
NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0Js
dXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmgK
QEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlICJDb2xvci5oIgogI2luY2x1ZGUgIkNvbG9yU3Bh
Y2UuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKLSNpbmNsdWRlICJSb3VuZGVkUmVjdC5oIgor
I2luY2x1ZGUgIkZsb2F0Um91bmRlZFJlY3QuaCIKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNjMsOCArNjMsOCBAQCBwdWJsaWM6CiAgICAg
R3JhcGhpY3NDb250ZXh0KiBiZWdpblNoYWRvd0xheWVyKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0
IEZsb2F0UmVjdCYgbGF5ZXJBcmVhKTsKICAgICB2b2lkIGVuZFNoYWRvd0xheWVyKEdyYXBoaWNz
Q29udGV4dCopOwogCi0gICAgdm9pZCBkcmF3UmVjdFNoYWRvdyhHcmFwaGljc0NvbnRleHQqLCBj
b25zdCBGbG9hdFJlY3QmLCBjb25zdCBSb3VuZGVkUmVjdDo6UmFkaWkmKTsKLSAgICB2b2lkIGRy
YXdJbnNldFNoYWRvdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBG
bG9hdFJlY3QmIGhvbGVSZWN0LCBjb25zdCBSb3VuZGVkUmVjdDo6UmFkaWkmIGhvbGVSYWRpaSk7
CisgICAgdm9pZCBkcmF3UmVjdFNoYWRvdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJl
Y3QmLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSYpOworICAgIHZvaWQgZHJhd0luc2V0
U2hhZG93KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVj
dCYgaG9sZVJlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpJiBob2xlUmFkaWkpOwog
CiAgICAgdm9pZCBibHVyTGF5ZXJJbWFnZSh1bnNpZ25lZCBjaGFyKiwgY29uc3QgSW50U2l6ZSYs
IGludCBzdHJpZGUpOwogCkBAIC04NSwxNSArODUsMTUgQEAgcHJpdmF0ZToKICAgICB9OwogICAg
IAogICAgIEludFJlY3QgY2FsY3VsYXRlTGF5ZXJCb3VuZGluZ1JlY3QoR3JhcGhpY3NDb250ZXh0
KiwgY29uc3QgRmxvYXRSZWN0JiBsYXllckFyZWEsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KTsK
LSAgICBJbnRTaXplIHRlbXBsYXRlU2l6ZShjb25zdCBJbnRTaXplJiBibHVycmVkRWRnZVNpemUs
IGNvbnN0IFJvdW5kZWRSZWN0OjpSYWRpaSYpIGNvbnN0OworICAgIEludFNpemUgdGVtcGxhdGVT
aXplKGNvbnN0IEludFNpemUmIGJsdXJyZWRFZGdlU2l6ZSwgY29uc3QgRmxvYXRSb3VuZGVkUmVj
dDo6UmFkaWkmKSBjb25zdDsKIAotICAgIHZvaWQgZHJhd1JlY3RTaGFkb3dXaXRob3V0VGlsaW5n
KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFJvdW5kZWRSZWN0OjpS
YWRpaSYsIGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCk7Ci0gICAgdm9pZCBkcmF3UmVjdFNoYWRv
d1dpdGhUaWxpbmcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgUm91
bmRlZFJlY3Q6OlJhZGlpJiwgY29uc3QgSW50U2l6ZSYgc2hhZG93VGVtcGxhdGVTaXplLCBjb25z
dCBJbnRTaXplJiBibHVycmVkRWRnZVNpemUpOworICAgIHZvaWQgZHJhd1JlY3RTaGFkb3dXaXRo
b3V0VGlsaW5nKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0
Um91bmRlZFJlY3Q6OlJhZGlpJiwgY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0KTsKKyAgICB2b2lk
IGRyYXdSZWN0U2hhZG93V2l0aFRpbGluZyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJl
Y3QmLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSYsIGNvbnN0IEludFNpemUmIHNoYWRv
d1RlbXBsYXRlU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmx1cnJlZEVkZ2VTaXplKTsKIAotICAgIHZv
aWQgZHJhd0luc2V0U2hhZG93V2l0aG91dFRpbGluZyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBG
bG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmIGhvbGVSZWN0LCBjb25zdCBSb3VuZGVkUmVjdDo6
UmFkaWkmLCBjb25zdCBJbnRSZWN0JiBsYXllclJlY3QpOwotICAgIHZvaWQgZHJhd0luc2V0U2hh
ZG93V2l0aFRpbGluZyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBG
bG9hdFJlY3QmIGhvbGVSZWN0LCBjb25zdCBSb3VuZGVkUmVjdDo6UmFkaWkmLCBjb25zdCBJbnRT
aXplJiBzaGFkb3dUZW1wbGF0ZVNpemUsIGNvbnN0IEludFNpemUmIGJsdXJyZWRFZGdlU2l6ZSk7
CisgICAgdm9pZCBkcmF3SW5zZXRTaGFkb3dXaXRob3V0VGlsaW5nKEdyYXBoaWNzQ29udGV4dCos
IGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYgaG9sZVJlY3QsIGNvbnN0IEZsb2F0
Um91bmRlZFJlY3Q6OlJhZGlpJiwgY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0KTsKKyAgICB2b2lk
IGRyYXdJbnNldFNoYWRvd1dpdGhUaWxpbmcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRS
ZWN0JiwgY29uc3QgRmxvYXRSZWN0JiBob2xlUmVjdCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdDo6
UmFkaWkmLCBjb25zdCBJbnRTaXplJiBzaGFkb3dUZW1wbGF0ZVNpemUsIGNvbnN0IEludFNpemUm
IGJsdXJyZWRFZGdlU2l6ZSk7CiAgICAgCi0gICAgdm9pZCBkcmF3TGF5ZXJQaWVjZXMoR3JhcGhp
Y3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBzaGFkb3dCb3VuZHMsIGNvbnN0IFJvdW5kZWRS
ZWN0OjpSYWRpaSYsIGNvbnN0IEludFNpemUmIHJvdW5kZWRSYWRpdXMsIGNvbnN0IEludFNpemUm
IHRlbXBsYXRlU2l6ZSwgU2hhZG93RGlyZWN0aW9uKTsKKyAgICB2b2lkIGRyYXdMYXllclBpZWNl
cyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIHNoYWRvd0JvdW5kcywgY29uc3Qg
RmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkmLCBjb25zdCBJbnRTaXplJiByb3VuZGVkUmFkaXVzLCBj
b25zdCBJbnRTaXplJiB0ZW1wbGF0ZVNpemUsIFNoYWRvd0RpcmVjdGlvbik7CiAgICAgCiAgICAg
dm9pZCBibHVyU2hhZG93QnVmZmVyKGNvbnN0IEludFNpemUmIHRlbXBsYXRlU2l6ZSk7CiAgICAg
dm9pZCBibHVyQW5kQ29sb3JTaGFkb3dCdWZmZXIoY29uc3QgSW50U2l6ZSYgdGVtcGxhdGVTaXpl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dy
YXBoaWNzQ29udGV4dENhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAppbmRleCAwZmE3NTAzOTY5ZDUyZWQ0M2Y0
NDJkZGIyOTcxNDJjN2U0MjI3ZWQ5Li45ZmZjMjkxNWE3Y2Y4OTRmNWYwZTgwZTE5YTljZTU3YjU5
M2EyMmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCkBAIC0xMDEyLDcgKzEwMTIs
NyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2NhbGUoY29uc3QgRmxvYXRTaXplJiBzaXplKQog
ICAgIG1fZGF0YS0+c2NhbGUoc2l6ZSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlw
T3V0KGNvbnN0IEludFJlY3QmIHIpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcE91dChjb25z
dCBGbG9hdFJlY3QmIHIpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAg
cmV0dXJuOwpAQCAtMTAyOCwxMyArMTAyOCwxMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xp
cE91dChjb25zdCBJbnRSZWN0JiByKQogICAgIGNhaXJvX3NldF9maWxsX3J1bGUoY3IsIHNhdmVk
RmlsbFJ1bGUpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJvdW5kZWRSZWN0KGNv
bnN0IEludFJlY3QmIHIsIGNvbnN0IEludFNpemUmIHRvcExlZnQsIGNvbnN0IEludFNpemUmIHRv
cFJpZ2h0LCBjb25zdCBJbnRTaXplJiBib3R0b21MZWZ0LCBjb25zdCBJbnRTaXplJiBib3R0b21S
aWdodCwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlKQordm9pZCBHcmFwaGljc0NvbnRl
eHQ6OmZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJlY3QmIHIsIGNvbnN0IEZsb2F0U2l6ZSYg
dG9wTGVmdCwgY29uc3QgRmxvYXRTaXplJiB0b3BSaWdodCwgY29uc3QgRmxvYXRTaXplJiBib3R0
b21MZWZ0LCBjb25zdCBGbG9hdFNpemUmIGJvdHRvbVJpZ2h0LCBjb25zdCBDb2xvciYgY29sb3Is
IENvbG9yU3BhY2UpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgaWYgKGhhc1NoYWRvdygpKQotICAgICAgICBwbGF0Zm9ybUNvbnRleHQoKS0+
c2hhZG93Qmx1cigpLmRyYXdSZWN0U2hhZG93KHRoaXMsIHIsIFJvdW5kZWRSZWN0OjpSYWRpaSh0
b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVmdCwgYm90dG9tUmlnaHQpKTsKKyAgICAgICAgcGxh
dGZvcm1Db250ZXh0KCktPnNoYWRvd0JsdXIoKS5kcmF3UmVjdFNoYWRvdyh0aGlzLCByLCBGbG9h
dFJvdW5kZWRSZWN0OjpSYWRpaSh0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVmdCwgYm90dG9t
UmlnaHQpKTsKIAogICAgIGNhaXJvX3QqIGNyID0gcGxhdGZvcm1Db250ZXh0KCktPmNyKCk7CiAg
ICAgY2Fpcm9fc2F2ZShjcik7CkBAIC0xMDQ2LDcgKzEwNDYsNyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6ZmlsbFJvdW5kZWRSZWN0KGNvbnN0IEludFJlY3QmIHIsIGNvbnN0IEludFNpemUmIHRv
cExlZnQsCiAgICAgY2Fpcm9fcmVzdG9yZShjcik7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0
OjpmaWxsUmVjdFdpdGhSb3VuZGVkSG9sZShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBSb3Vu
ZGVkUmVjdCYgcm91bmRlZEhvbGVSZWN0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2Up
Cit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUoY29uc3QgRmxv
YXRSZWN0JiByZWN0LCBjb25zdCBSb3VuZGVkUmVjdCYgcm91bmRlZEhvbGVSZWN0LCBjb25zdCBD
b2xvciYgY29sb3IsIENvbG9yU3BhY2UpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSB8
fCAhY29sb3IuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKaW5k
ZXggYjg1Nzg5OTcyZWEwYjhkMmRkOWYzZDhlMTZjZjZkMTEwMDk2N2I3OC4uN2YwNmJmYWVlN2U1
YmZiMDMyODY4YzU1ZTU4NjgzNjRjYzQ1NmFlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcApAQCAtODQ2
LDcgKzg0Niw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25zdCBGbG9hdFJl
Y3QmIHJlY3QsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTCiAgICAgICAgIHNldENHRmlsbENv
bG9yKGNvbnRleHQsIG9sZEZpbGxDb2xvciwgb2xkQ29sb3JTcGFjZSk7CiB9CiAKLXZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpmaWxsUm91bmRlZFJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3Qg
SW50U2l6ZSYgdG9wTGVmdCwgY29uc3QgSW50U2l6ZSYgdG9wUmlnaHQsIGNvbnN0IEludFNpemUm
IGJvdHRvbUxlZnQsIGNvbnN0IEludFNpemUmIGJvdHRvbVJpZ2h0LCBjb25zdCBDb2xvciYgY29s
b3IsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUm91
bmRlZFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdFNpemUmIHRvcExlZnQs
IGNvbnN0IEZsb2F0U2l6ZSYgdG9wUmlnaHQsIGNvbnN0IEZsb2F0U2l6ZSYgYm90dG9tTGVmdCwg
Y29uc3QgRmxvYXRTaXplJiBib3R0b21SaWdodCwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNw
YWNlIGNvbG9yU3BhY2UpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAg
cmV0dXJuOwpAQCAtODY1LDcgKzg2NSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUm91
bmRlZFJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW50U2l6ZSYgdG9wTGVmCiAgICAg
ICAgIENHQ29udGV4dFNldFNoYWRvd1dpdGhDb2xvcihwbGF0Zm9ybUNvbnRleHQoKSwgQ0dTaXpl
WmVybywgMCwgMCk7CiAKICAgICAgICAgU2hhZG93Qmx1ciBjb250ZXh0U2hhZG93KG1fc3RhdGUp
OwotICAgICAgICBjb250ZXh0U2hhZG93LmRyYXdSZWN0U2hhZG93KHRoaXMsIHJlY3QsIFJvdW5k
ZWRSZWN0OjpSYWRpaSh0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVmdCwgYm90dG9tUmlnaHQp
KTsKKyAgICAgICAgY29udGV4dFNoYWRvdy5kcmF3UmVjdFNoYWRvdyh0aGlzLCByZWN0LCBGbG9h
dFJvdW5kZWRSZWN0OjpSYWRpaSh0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVmdCwgYm90dG9t
UmlnaHQpKTsKICAgICB9CiAKICAgICBib29sIGVxdWFsV2lkdGhzID0gKHRvcExlZnQud2lkdGgo
KSA9PSB0b3BSaWdodC53aWR0aCgpICYmIHRvcFJpZ2h0LndpZHRoKCkgPT0gYm90dG9tTGVmdC53
aWR0aCgpICYmIGJvdHRvbUxlZnQud2lkdGgoKSA9PSBib3R0b21SaWdodC53aWR0aCgpKTsKQEAg
LTg4Niw3ICs4ODYsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJvdW5kZWRSZWN0KGNv
bnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEludFNpemUmIHRvcExlZgogICAgICAgICBzZXRDR0Zp
bGxDb2xvcihjb250ZXh0LCBvbGRGaWxsQ29sb3IsIG9sZENvbG9yU3BhY2UpOwogfQogCi12b2lk
IEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUoY29uc3QgSW50UmVjdCYg
cmVjdCwgY29uc3QgUm91bmRlZFJlY3QmIHJvdW5kZWRIb2xlUmVjdCwgY29uc3QgQ29sb3ImIGNv
bG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJl
Y3RXaXRoUm91bmRlZEhvbGUoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBSb3VuZGVkUmVj
dCYgcm91bmRlZEhvbGVSZWN0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JT
cGFjZSkKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CkBA
IC05MzYsNyArOTM2LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXAoY29uc3QgRmxvYXRS
ZWN0JiByZWN0KQogICAgIG1fZGF0YS0+Y2xpcChyZWN0KTsKIH0KIAotdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OmNsaXBPdXQoY29uc3QgSW50UmVjdCYgcmVjdCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
OjpjbGlwT3V0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIHsKICAgICBpZiAocGFpbnRpbmdEaXNh
YmxlZCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW5jZS9HcmFwaGljc0NvbnRleHRXaW5DRS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9HcmFwaGljc0NvbnRleHRXaW5DRS5jcHAKaW5k
ZXggMzc2YmM3M2MwNzBhMWUwMTE5NGVjM2FjODgzYWYzM2Y2MTkxNDU0OS4uNzYzZTI2ZTM1MTEw
YTRiOTZiMTA3MmEyOTBjODI1YjIxNTFkMzE2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvR3JhcGhpY3NDb250ZXh0V2luQ0UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0dyYXBoaWNzQ29udGV4dFdpbkNF
LmNwcApAQCAtODk4LDcgKzg5OCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwKGNvbnN0
IEZsb2F0UmVjdCYgcmVjdCkKICAgICB9CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlw
T3V0KGNvbnN0IEludFJlY3QmIHJlY3QpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcE91dChj
b25zdCBGbG9hdFJlY3QmIHJlY3QpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAg
ICAgICAgcmV0dXJuOwpAQCAtMTE1MCw3ICsxMTUwLDcgQEAgc3RhdGljIGlubGluZSBJbnRQb2lu
dCByZWN0Q2VudGVyUG9pbnQoY29uc3QgUkVDVCYgcmVjdCkKIHsKICAgICByZXR1cm4gSW50UG9p
bnQocmVjdC5sZWZ0ICsgKHJlY3QucmlnaHQgLSByZWN0LmxlZnQpIC8gMiwgcmVjdC50b3AgKyAo
cmVjdC5ib3R0b20gLSByZWN0LnRvcCkgLyAyKTsKIH0KLXZvaWQgR3JhcGhpY3NDb250ZXh0Ojpm
aWxsUm91bmRlZFJlY3QoY29uc3QgSW50UmVjdCYgZmlsbFJlY3QsIGNvbnN0IEludFNpemUmIHRv
cExlZnQsIGNvbnN0IEludFNpemUmIHRvcFJpZ2h0LCBjb25zdCBJbnRTaXplJiBib3R0b21MZWZ0
LCBjb25zdCBJbnRTaXplJiBib3R0b21SaWdodCwgY29uc3QgQ29sb3ImIGMsIENvbG9yU3BhY2Ug
Y29sb3JTcGFjZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUm91bmRlZFJlY3QoY29uc3Qg
RmxvYXRSZWN0JiBmaWxsUmVjdCwgY29uc3QgRmxvYXRTaXplJiB0b3BMZWZ0LCBjb25zdCBGbG9h
dFNpemUmIHRvcFJpZ2h0LCBjb25zdCBGbG9hdFNpemUmIGJvdHRvbUxlZnQsIGNvbnN0IEZsb2F0
U2l6ZSYgYm90dG9tUmlnaHQsIGNvbnN0IENvbG9yJiBjLCBDb2xvclNwYWNlIGNvbG9yU3BhY2Up
CiB7CiAgICAgU2NvcGVEQ1Byb3ZpZGVyIGRjUHJvdmlkZXIobV9kYXRhKTsKICAgICBpZiAoIW1f
ZGF0YS0+bV9kYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
b3hNb2RlbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9k
ZWxPYmplY3QuY3BwCmluZGV4IGEzODg3MmVlYzk0NjdiYmEyZWNiMzA1ZTJlMWQwM2IyMWNkMmE4
YTEuLmY4NjI3YmU5NDcwMmUyYWU2YWI4ZDI1MDVmYjVhZjZiNWI4NTczYjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcApAQCAtMTY1
MCw3ICsxNjUwLDcgQEAgc3RhdGljIGJvb2wgam9pblJlcXVpcmVzTWl0cmUoQm94U2lkZSBzaWRl
LCBCb3hTaWRlIGFkamFjZW50U2lkZSwgY29uc3QgQm9yZGVyRWQKIH0KIAogdm9pZCBSZW5kZXJC
b3hNb2RlbE9iamVjdDo6cGFpbnRPbmVCb3JkZXJTaWRlKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhp
Y3NDb250ZXh0LCBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUsIGNvbnN0IFJvdW5kZWRSZWN0JiBv
dXRlckJvcmRlciwgY29uc3QgUm91bmRlZFJlY3QmIGlubmVyQm9yZGVyLAotICAgIGNvbnN0IElu
dFJlY3QmIHNpZGVSZWN0LCBCb3hTaWRlIHNpZGUsIEJveFNpZGUgYWRqYWNlbnRTaWRlMSwgQm94
U2lkZSBhZGphY2VudFNpZGUyLCBjb25zdCBCb3JkZXJFZGdlIGVkZ2VzW10sIGNvbnN0IFBhdGgq
IHBhdGgsCisgICAgY29uc3QgTGF5b3V0UmVjdCYgc2lkZVJlY3QsIEJveFNpZGUgc2lkZSwgQm94
U2lkZSBhZGphY2VudFNpZGUxLCBCb3hTaWRlIGFkamFjZW50U2lkZTIsIGNvbnN0IEJvcmRlckVk
Z2UgZWRnZXNbXSwgY29uc3QgUGF0aCogcGF0aCwKICAgICBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFu
Y2UgYmxlZWRBdm9pZGFuY2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBpbmNs
dWRlTG9naWNhbFJpZ2h0RWRnZSwgYm9vbCBhbnRpYWxpYXMsIGNvbnN0IENvbG9yKiBvdmVycmlk
ZUNvbG9yKQogewogICAgIGNvbnN0IEJvcmRlckVkZ2UmIGVkZ2VUb1JlbmRlciA9IGVkZ2VzW3Np
ZGVdOwpAQCAtMTY5Niw5ICsxNjk2LDkgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFp
bnRPbmVCb3JkZXJTaWRlKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LAogICAgIH0K
IH0KIAotc3RhdGljIEludFJlY3QgY2FsY3VsYXRlU2lkZVJlY3QoY29uc3QgUm91bmRlZFJlY3Qm
IG91dGVyQm9yZGVyLCBjb25zdCBCb3JkZXJFZGdlIGVkZ2VzW10sIGludCBzaWRlKQorc3RhdGlj
IExheW91dFJlY3QgY2FsY3VsYXRlU2lkZVJlY3QoY29uc3QgUm91bmRlZFJlY3QmIG91dGVyQm9y
ZGVyLCBjb25zdCBCb3JkZXJFZGdlIGVkZ2VzW10sIGludCBzaWRlKQogewotICAgIEludFJlY3Qg
c2lkZVJlY3QgPSBvdXRlckJvcmRlci5yZWN0KCk7CisgICAgTGF5b3V0UmVjdCBzaWRlUmVjdCA9
IG91dGVyQm9yZGVyLnJlY3QoKTsKICAgICBpbnQgd2lkdGggPSBlZGdlc1tzaWRlXS53aWR0aDsK
IAogICAgIGlmIChzaWRlID09IEJTVG9wKQpAQCAtMTcyOSw3ICsxNzI5LDcgQEAgdm9pZCBSZW5k
ZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3JkZXJTaWRlcyhHcmFwaGljc0NvbnRleHQqIGdyYXBo
aWNzQ29udGV4dCwgY28KICAgICAvLyBvbmx5IGRlcGVuZHMgb24gc2lkZVJlY3Qgd2hlbiBwYWlu
dGluZyBzb2xpZCBib3JkZXJzLgogCiAgICAgaWYgKGVkZ2VzW0JTVG9wXS5zaG91bGRSZW5kZXIo
KSAmJiBpbmNsdWRlc0VkZ2UoZWRnZVNldCwgQlNUb3ApKSB7Ci0gICAgICAgIEludFJlY3Qgc2lk
ZVJlY3QgPSBvdXRlckJvcmRlci5yZWN0KCk7CisgICAgICAgIExheW91dFJlY3Qgc2lkZVJlY3Qg
PSBvdXRlckJvcmRlci5yZWN0KCk7CiAgICAgICAgIHNpZGVSZWN0LnNldEhlaWdodChlZGdlc1tC
U1RvcF0ud2lkdGggKyBpbm5lckJvcmRlckFkanVzdG1lbnQueSgpKTsKIAogICAgICAgICBib29s
IHVzZVBhdGggPSByZW5kZXJSYWRpaSAmJiAoYm9yZGVyU3R5bGVIYXNJbm5lckRldGFpbChlZGdl
c1tCU1RvcF0uc3R5bGUpIHx8IGJvcmRlcldpbGxBcmNJbm5lckVkZ2UoaW5uZXJCb3JkZXIucmFk
aWkoKS50b3BMZWZ0KCksIGlubmVyQm9yZGVyLnJhZGlpKCkudG9wUmlnaHQoKSkpOwpAQCAtMTcz
Nyw3ICsxNzM3LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3JkZXJTaWRl
cyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY28KICAgICB9CiAKICAgICBpZiAo
ZWRnZXNbQlNCb3R0b21dLnNob3VsZFJlbmRlcigpICYmIGluY2x1ZGVzRWRnZShlZGdlU2V0LCBC
U0JvdHRvbSkpIHsKLSAgICAgICAgSW50UmVjdCBzaWRlUmVjdCA9IG91dGVyQm9yZGVyLnJlY3Qo
KTsKKyAgICAgICAgTGF5b3V0UmVjdCBzaWRlUmVjdCA9IG91dGVyQm9yZGVyLnJlY3QoKTsKICAg
ICAgICAgc2lkZVJlY3Quc2hpZnRZRWRnZVRvKHNpZGVSZWN0Lm1heFkoKSAtIGVkZ2VzW0JTQm90
dG9tXS53aWR0aCAtIGlubmVyQm9yZGVyQWRqdXN0bWVudC55KCkpOwogCiAgICAgICAgIGJvb2wg
dXNlUGF0aCA9IHJlbmRlclJhZGlpICYmIChib3JkZXJTdHlsZUhhc0lubmVyRGV0YWlsKGVkZ2Vz
W0JTQm90dG9tXS5zdHlsZSkgfHwgYm9yZGVyV2lsbEFyY0lubmVyRWRnZShpbm5lckJvcmRlci5y
YWRpaSgpLmJvdHRvbUxlZnQoKSwgaW5uZXJCb3JkZXIucmFkaWkoKS5ib3R0b21SaWdodCgpKSk7
CkBAIC0xNzQ1LDcgKzE3NDUsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJv
cmRlclNpZGVzKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjbwogICAgIH0KIAog
ICAgIGlmIChlZGdlc1tCU0xlZnRdLnNob3VsZFJlbmRlcigpICYmIGluY2x1ZGVzRWRnZShlZGdl
U2V0LCBCU0xlZnQpKSB7Ci0gICAgICAgIEludFJlY3Qgc2lkZVJlY3QgPSBvdXRlckJvcmRlci5y
ZWN0KCk7CisgICAgICAgIExheW91dFJlY3Qgc2lkZVJlY3QgPSBvdXRlckJvcmRlci5yZWN0KCk7
CiAgICAgICAgIHNpZGVSZWN0LnNldFdpZHRoKGVkZ2VzW0JTTGVmdF0ud2lkdGggKyBpbm5lckJv
cmRlckFkanVzdG1lbnQueCgpKTsKIAogICAgICAgICBib29sIHVzZVBhdGggPSByZW5kZXJSYWRp
aSAmJiAoYm9yZGVyU3R5bGVIYXNJbm5lckRldGFpbChlZGdlc1tCU0xlZnRdLnN0eWxlKSB8fCBi
b3JkZXJXaWxsQXJjSW5uZXJFZGdlKGlubmVyQm9yZGVyLnJhZGlpKCkuYm90dG9tTGVmdCgpLCBp
bm5lckJvcmRlci5yYWRpaSgpLnRvcExlZnQoKSkpOwpAQCAtMTc1Myw3ICsxNzUzLDcgQEAgdm9p
ZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3JkZXJTaWRlcyhHcmFwaGljc0NvbnRleHQq
IGdyYXBoaWNzQ29udGV4dCwgY28KICAgICB9CiAKICAgICBpZiAoZWRnZXNbQlNSaWdodF0uc2hv
dWxkUmVuZGVyKCkgJiYgaW5jbHVkZXNFZGdlKGVkZ2VTZXQsIEJTUmlnaHQpKSB7Ci0gICAgICAg
IEludFJlY3Qgc2lkZVJlY3QgPSBvdXRlckJvcmRlci5yZWN0KCk7CisgICAgICAgIExheW91dFJl
Y3Qgc2lkZVJlY3QgPSBvdXRlckJvcmRlci5yZWN0KCk7CiAgICAgICAgIHNpZGVSZWN0LnNoaWZ0
WEVkZ2VUbyhzaWRlUmVjdC5tYXhYKCkgLSBlZGdlc1tCU1JpZ2h0XS53aWR0aCAtIGlubmVyQm9y
ZGVyQWRqdXN0bWVudC54KCkpOwogCiAgICAgICAgIGJvb2wgdXNlUGF0aCA9IHJlbmRlclJhZGlp
ICYmIChib3JkZXJTdHlsZUhhc0lubmVyRGV0YWlsKGVkZ2VzW0JTUmlnaHRdLnN0eWxlKSB8fCBi
b3JkZXJXaWxsQXJjSW5uZXJFZGdlKGlubmVyQm9yZGVyLnJhZGlpKCkuYm90dG9tUmlnaHQoKSwg
aW5uZXJCb3JkZXIucmFkaWkoKS50b3BSaWdodCgpKSk7CkBAIC0xODc4LDggKzE4NzgsOCBAQCB2
b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJvcmRlcihjb25zdCBQYWludEluZm8mIGlu
Zm8sIGNvbnN0IExheW91dFJlY3QmCiAgICAgICAgICAgICAgICAgcGF0aC5hZGRSZWN0KG91dGVy
Qm9yZGVyLnJlY3QoKSk7CiAKICAgICAgICAgICAgIGlmIChoYXZlQWxsRG91YmxlRWRnZXMpIHsK
LSAgICAgICAgICAgICAgICBJbnRSZWN0IGlubmVyVGhpcmRSZWN0ID0gb3V0ZXJCb3JkZXIucmVj
dCgpOwotICAgICAgICAgICAgICAgIEludFJlY3Qgb3V0ZXJUaGlyZFJlY3QgPSBvdXRlckJvcmRl
ci5yZWN0KCk7CisgICAgICAgICAgICAgICAgTGF5b3V0UmVjdCBpbm5lclRoaXJkUmVjdCA9IG91
dGVyQm9yZGVyLnJlY3QoKTsKKyAgICAgICAgICAgICAgICBMYXlvdXRSZWN0IG91dGVyVGhpcmRS
ZWN0ID0gb3V0ZXJCb3JkZXIucmVjdCgpOwogICAgICAgICAgICAgICAgIGZvciAoaW50IHNpZGUg
PSBCU1RvcDsgc2lkZSA8PSBCU0xlZnQ7ICsrc2lkZSkgewogICAgICAgICAgICAgICAgICAgICBp
bnQgb3V0ZXJXaWR0aDsKICAgICAgICAgICAgICAgICAgICAgaW50IGlubmVyV2lkdGg7CkBAIC0x
OTMzLDcgKzE5MzMsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJvcmRlcihj
b25zdCBQYWludEluZm8mIGluZm8sIGNvbnN0IExheW91dFJlY3QmCiAgICAgICAgICAgICBmb3Ig
KGludCBpID0gQlNUb3A7IGkgPD0gQlNMZWZ0OyArK2kpIHsKICAgICAgICAgICAgICAgICBjb25z
dCBCb3JkZXJFZGdlJiBjdXJyRWRnZSA9IGVkZ2VzW2ldOwogICAgICAgICAgICAgICAgIGlmIChj
dXJyRWRnZS5zaG91bGRSZW5kZXIoKSkgewotICAgICAgICAgICAgICAgICAgICBJbnRSZWN0IHNp
ZGVSZWN0ID0gY2FsY3VsYXRlU2lkZVJlY3Qob3V0ZXJCb3JkZXIsIGVkZ2VzLCBpKTsKKyAgICAg
ICAgICAgICAgICAgICAgTGF5b3V0UmVjdCBzaWRlUmVjdCA9IGNhbGN1bGF0ZVNpZGVSZWN0KG91
dGVyQm9yZGVyLCBlZGdlcywgaSk7CiAgICAgICAgICAgICAgICAgICAgIHBhdGguYWRkUmVjdChz
aWRlUmVjdCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAtMjIyMywyNCAr
MjIyMywyMiBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpjbGlwQm9yZGVyU2lkZVBvbHln
b24oR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleAogICAgIEZsb2F0UG9pbnQgZmlyc3RR
dWFkWzRdOwogICAgIGZpcnN0UXVhZFswXSA9IHF1YWRbMF07CiAgICAgZmlyc3RRdWFkWzFdID0g
cXVhZFsxXTsKLSAgICBmaXJzdFF1YWRbMl0gPSBzaWRlID09IEJTVG9wIHx8IHNpZGUgPT0gQlNC
b3R0b20gPyBGbG9hdFBvaW50KHF1YWRbM10ueCgpLCBxdWFkWzJdLnkoKSkKLSAgICAgICAgOiBG
bG9hdFBvaW50KHF1YWRbMl0ueCgpLCBxdWFkWzNdLnkoKSk7CisgICAgZmlyc3RRdWFkWzJdID0g
c2lkZSA9PSBCU1RvcCB8fCBzaWRlID09IEJTQm90dG9tID8gRmxvYXRQb2ludChxdWFkWzNdLngo
KSwgcXVhZFsyXS55KCkpIDogRmxvYXRQb2ludChxdWFkWzJdLngoKSwgcXVhZFszXS55KCkpOwog
ICAgIGZpcnN0UXVhZFszXSA9IHF1YWRbM107CiAgICAgZ3JhcGhpY3NDb250ZXh0LT5jbGlwQ29u
dmV4UG9seWdvbig0LCBmaXJzdFF1YWQsICFmaXJzdEVkZ2VNYXRjaGVzKTsKIAogICAgIEZsb2F0
UG9pbnQgc2Vjb25kUXVhZFs0XTsKICAgICBzZWNvbmRRdWFkWzBdID0gcXVhZFswXTsKLSAgICBz
ZWNvbmRRdWFkWzFdID0gc2lkZSA9PSBCU1RvcCB8fCBzaWRlID09IEJTQm90dG9tID8gRmxvYXRQ
b2ludChxdWFkWzBdLngoKSwgcXVhZFsxXS55KCkpCi0gICAgICAgIDogRmxvYXRQb2ludChxdWFk
WzFdLngoKSwgcXVhZFswXS55KCkpOworICAgIHNlY29uZFF1YWRbMV0gPSBzaWRlID09IEJTVG9w
IHx8IHNpZGUgPT0gQlNCb3R0b20gPyBGbG9hdFBvaW50KHF1YWRbMF0ueCgpLCBxdWFkWzFdLnko
KSkgOiBGbG9hdFBvaW50KHF1YWRbMV0ueCgpLCBxdWFkWzBdLnkoKSk7CiAgICAgc2Vjb25kUXVh
ZFsyXSA9IHF1YWRbMl07CiAgICAgc2Vjb25kUXVhZFszXSA9IHF1YWRbM107CiAgICAgLy8gQW50
aWFsaWFzaW5nIGFmZmVjdHMgdGhlIHNlY29uZCBzaWRlLgogICAgIGdyYXBoaWNzQ29udGV4dC0+
Y2xpcENvbnZleFBvbHlnb24oNCwgc2Vjb25kUXVhZCwgIXNlY29uZEVkZ2VNYXRjaGVzKTsKIH0K
IAotc3RhdGljIEludFJlY3QgY2FsY3VsYXRlU2lkZVJlY3RJbmNsdWRpbmdJbm5lcihjb25zdCBS
b3VuZGVkUmVjdCYgb3V0ZXJCb3JkZXIsIGNvbnN0IEJvcmRlckVkZ2UgZWRnZXNbXSwgQm94U2lk
ZSBzaWRlKQorc3RhdGljIExheW91dFJlY3QgY2FsY3VsYXRlU2lkZVJlY3RJbmNsdWRpbmdJbm5l
cihjb25zdCBSb3VuZGVkUmVjdCYgb3V0ZXJCb3JkZXIsIGNvbnN0IEJvcmRlckVkZ2UgZWRnZXNb
XSwgQm94U2lkZSBzaWRlKQogewotICAgIEludFJlY3Qgc2lkZVJlY3QgPSBvdXRlckJvcmRlci5y
ZWN0KCk7CisgICAgTGF5b3V0UmVjdCBzaWRlUmVjdCA9IG91dGVyQm9yZGVyLnJlY3QoKTsKICAg
ICBpbnQgd2lkdGg7CiAKICAgICBzd2l0Y2ggKHNpZGUpIHsKQEAgLTIyNzEsNyArMjI2OSw3IEBA
IHN0YXRpYyBSb3VuZGVkUmVjdCBjYWxjdWxhdGVBZGp1c3RlZElubmVyQm9yZGVyKGNvbnN0IFJv
dW5kZWRSZWN0JmlubmVyQm9yZGVyLCBCCiAgICAgLy8gVGhpcyBmdW5jdGlvbiByZWxpZXMgb24g
dGhlIGZhY3Qgd2Ugb25seSBnZXQgcmFkaWkgbm90IGNvbnRhaW5lZCB3aXRoaW4gZWFjaCBlZGdl
IGlmIG9uZSBvZiB0aGUgcmFkaWkKICAgICAvLyBmb3IgYW4gZWRnZSBpcyB6ZXJvLCBzbyB3ZSBj
YW4gc2hpZnQgdGhlIGFyYyB0b3dhcmRzIHRoZSB6ZXJvIHJhZGl1cyBjb3JuZXIuCiAgICAgUm91
bmRlZFJlY3Q6OlJhZGlpIG5ld1JhZGlpID0gaW5uZXJCb3JkZXIucmFkaWkoKTsKLSAgICBJbnRS
ZWN0IG5ld1JlY3QgPSBpbm5lckJvcmRlci5yZWN0KCk7CisgICAgTGF5b3V0UmVjdCBuZXdSZWN0
ID0gaW5uZXJCb3JkZXIucmVjdCgpOwogCiAgICAgZmxvYXQgb3ZlcnNob290OwogICAgIGZsb2F0
IG1heFJhZGlpOwpAQCAtMjQ2NSwxNiArMjQ2MywxNiBAQCBib29sIFJlbmRlckJveE1vZGVsT2Jq
ZWN0Ojpib3hTaGFkb3dTaG91bGRCZUFwcGxpZWRUb0JhY2tncm91bmQoQmFja2dyb3VuZEJsZWVk
QQogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgaW5saW5lIEludFJlY3QgYXJlYUNhc3Rp
bmdTaGFkb3dJbkhvbGUoY29uc3QgSW50UmVjdCYgaG9sZVJlY3QsIGludCBzaGFkb3dFeHRlbnQs
IGludCBzaGFkb3dTcHJlYWQsIGNvbnN0IEludFNpemUmIHNoYWRvd09mZnNldCkKK3N0YXRpYyBp
bmxpbmUgTGF5b3V0UmVjdCBhcmVhQ2FzdGluZ1NoYWRvd0luSG9sZShjb25zdCBMYXlvdXRSZWN0
JiBob2xlUmVjdCwgaW50IHNoYWRvd0V4dGVudCwgaW50IHNoYWRvd1NwcmVhZCwgY29uc3QgSW50
U2l6ZSYgc2hhZG93T2Zmc2V0KQogewotICAgIEludFJlY3QgYm91bmRzKGhvbGVSZWN0KTsKKyAg
ICBMYXlvdXRSZWN0IGJvdW5kcyhob2xlUmVjdCk7CiAgICAgCiAgICAgYm91bmRzLmluZmxhdGUo
c2hhZG93RXh0ZW50KTsKIAogICAgIGlmIChzaGFkb3dTcHJlYWQgPCAwKQogICAgICAgICBib3Vu
ZHMuaW5mbGF0ZSgtc2hhZG93U3ByZWFkKTsKICAgICAKLSAgICBJbnRSZWN0IG9mZnNldEJvdW5k
cyA9IGJvdW5kczsKKyAgICBMYXlvdXRSZWN0IG9mZnNldEJvdW5kcyA9IGJvdW5kczsKICAgICBv
ZmZzZXRCb3VuZHMubW92ZSgtc2hhZG93T2Zmc2V0KTsKICAgICByZXR1cm4gdW5pb25SZWN0KGJv
dW5kcywgb2Zmc2V0Qm91bmRzKTsKIH0KQEAgLTI1NTYsNyArMjU1NCw3IEBAIHZvaWQgUmVuZGVy
Qm94TW9kZWxPYmplY3Q6OnBhaW50Qm94U2hhZG93KGNvbnN0IFBhaW50SW5mbyYgaW5mbywgY29u
c3QgTGF5b3V0UmVjCiAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmZpbGxSb3VuZGVkUmVj
dChmaWxsUmVjdCwgQ29sb3I6OmJsYWNrLCBzLT5jb2xvclNwYWNlKCkpOwogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgSW50UmVjdCByZWN0
VG9DbGlwT3V0ID0gYm9yZGVyLnJlY3QoKTsKKyAgICAgICAgICAgICAgICBMYXlvdXRSZWN0IHJl
Y3RUb0NsaXBPdXQgPSBib3JkZXIucmVjdCgpOwogCiAgICAgICAgICAgICAgICAgLy8gSWYgdGhl
IGJveCBpcyBvcGFxdWUsIGl0IGlzIHVubmVjZXNzYXJ5IHRvIGNsaXAgaXQgb3V0LiBIb3dldmVy
LCBkb2luZyBzbyBzYXZlcyB0aW1lCiAgICAgICAgICAgICAgICAgLy8gd2hlbiBwYWludGluZyB0
aGUgc2hhZG93LiBPbiB0aGUgb3RoZXIgaGFuZCwgaXQgaW50cm9kdWNlcyBzdWJwaXhlbCBnYXBz
IGFsb25nIHRoZQpAQCAtMjYwNSw3ICsyNjAzLDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVj
dDo6cGFpbnRCb3hTaGFkb3coY29uc3QgUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBMYXlvdXRSZWMK
IAogICAgICAgICAgICAgQ29sb3IgZmlsbENvbG9yKHNoYWRvd0NvbG9yLnJlZCgpLCBzaGFkb3dD
b2xvci5ncmVlbigpLCBzaGFkb3dDb2xvci5ibHVlKCksIDI1NSk7CiAKLSAgICAgICAgICAgIElu
dFJlY3Qgb3V0ZXJSZWN0ID0gYXJlYUNhc3RpbmdTaGFkb3dJbkhvbGUoYm9yZGVyLnJlY3QoKSwg
c2hhZG93UGFpbnRpbmdFeHRlbnQsIHNoYWRvd1NwcmVhZCwgc2hhZG93T2Zmc2V0KTsKKyAgICAg
ICAgICAgIExheW91dFJlY3Qgb3V0ZXJSZWN0ID0gYXJlYUNhc3RpbmdTaGFkb3dJbkhvbGUoYm9y
ZGVyLnJlY3QoKSwgc2hhZG93UGFpbnRpbmdFeHRlbnQsIHNoYWRvd1NwcmVhZCwgc2hhZG93T2Zm
c2V0KTsKICAgICAgICAgICAgIFJvdW5kZWRSZWN0IHJvdW5kZWRIb2xlKGhvbGVSZWN0LCBib3Jk
ZXIucmFkaWkoKSk7CiAKICAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3Rh
dGVTYXZlcigqY29udGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94TW9kZWxPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
b3hNb2RlbE9iamVjdC5oCmluZGV4IDU3MmIzNTcxYmM5N2Q1NDQyNWNkYWQyNDEzM2U3MTQ5NjMx
OGQ5YzcuLjE1MjI2MzM2MWRlM2U4OGJhZDA4N2E0MzUyNDY5ZTdmNDFhMTRjYTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCkBAIC0zMzAs
OCArMzMwLDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCb3hT
aWRlLCBib29sIGZpcnN0RWRnZU1hdGNoZXMsIGJvb2wgc2Vjb25kRWRnZU1hdGNoZXMpOwogICAg
IHZvaWQgY2xpcEJvcmRlclNpZGVGb3JDb21wbGV4SW5uZXJQYXRoKEdyYXBoaWNzQ29udGV4dCos
IGNvbnN0IFJvdW5kZWRSZWN0JiwgY29uc3QgUm91bmRlZFJlY3QmLCBCb3hTaWRlLCBjb25zdCBj
bGFzcyBCb3JkZXJFZGdlW10pOwogICAgIHZvaWQgcGFpbnRPbmVCb3JkZXJTaWRlKEdyYXBoaWNz
Q29udGV4dCosIGNvbnN0IFJlbmRlclN0eWxlKiwgY29uc3QgUm91bmRlZFJlY3QmIG91dGVyQm9y
ZGVyLCBjb25zdCBSb3VuZGVkUmVjdCYgaW5uZXJCb3JkZXIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEludFJlY3QmIHNpZGVSZWN0LCBCb3hTaWRlLCBCb3hTaWRlIGFk
amFjZW50U2lkZTEsIEJveFNpZGUgYWRqYWNlbnRTaWRlMiwgY29uc3QgY2xhc3MgQm9yZGVyRWRn
ZVtdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQYXRoKiwgQmFja2dy
b3VuZEJsZWVkQXZvaWRhbmNlLCBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wgaW5j
bHVkZUxvZ2ljYWxSaWdodEVkZ2UsIGJvb2wgYW50aWFsaWFzLCBjb25zdCBDb2xvciogb3ZlcnJp
ZGVDb2xvciA9IDApOworICAgICAgICBjb25zdCBMYXlvdXRSZWN0JiBzaWRlUmVjdCwgQm94U2lk
ZSwgQm94U2lkZSBhZGphY2VudFNpZGUxLCBCb3hTaWRlIGFkamFjZW50U2lkZTIsIGNvbnN0IGNs
YXNzIEJvcmRlckVkZ2VbXSwKKyAgICAgICAgY29uc3QgUGF0aCosIEJhY2tncm91bmRCbGVlZEF2
b2lkYW5jZSwgYm9vbCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBib29sIGluY2x1ZGVMb2dpY2Fs
UmlnaHRFZGdlLCBib29sIGFudGlhbGlhcywgY29uc3QgQ29sb3IqIG92ZXJyaWRlQ29sb3IgPSAw
KTsKICAgICB2b2lkIHBhaW50VHJhbnNsdWNlbnRCb3JkZXJTaWRlcyhHcmFwaGljc0NvbnRleHQq
LCBjb25zdCBSZW5kZXJTdHlsZSosIGNvbnN0IFJvdW5kZWRSZWN0JiBvdXRlckJvcmRlciwgY29u
c3QgUm91bmRlZFJlY3QmIGlubmVyQm9yZGVyLCBjb25zdCBJbnRQb2ludCYgaW5uZXJCb3JkZXJB
ZGp1c3RtZW50LAogICAgICAgICBjb25zdCBjbGFzcyBCb3JkZXJFZGdlW10sIEJvcmRlckVkZ2VG
bGFncywgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlLCBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVk
Z2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UsIGJvb2wgYW50aWFsaWFzID0gZmFsc2Up
OwogICAgIHZvaWQgcGFpbnRCb3JkZXJTaWRlcyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBSZW5k
ZXJTdHlsZSosIGNvbnN0IFJvdW5kZWRSZWN0JiBvdXRlckJvcmRlciwgY29uc3QgUm91bmRlZFJl
Y3QmIGlubmVyQm9yZGVyLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRoZW1lU2FmYXJpLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVt
ZVNhZmFyaS5jcHAKaW5kZXggNzY0YzViNWMyNWI2ZjQyYjQ4YzJmMzY0MjdiYWRhMmFlZThlYTZi
Yy4uMDhkYzEwODdlZDMzNDk2NDQ1YmM1NmVmZWE3NTkyNGY5ZGM0NDBlOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lU2FmYXJpLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVTYWZhcmkuY3BwCkBAIC03NzgsNyArNzc4
LDcgQEAgdm9pZCBSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRNZW51TGlzdEJ1dHRvbkdyYWRpZW50
cyhSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW4KIAogICAgIFJldGFpblB0cjxDR1NoYWRpbmdS
ZWY+IHJpZ2h0U2hhZGluZyA9IGFkb3B0Q0YoQ0dTaGFkaW5nQ3JlYXRlQXhpYWwoY3NwYWNlLCBD
R1BvaW50TWFrZShyLm1heFgoKSwgIHIueSgpKSwgQ0dQb2ludE1ha2Uoci5tYXhYKCkgLSByYWRp
dXMsIHIueSgpKSwgbWFpbkZ1bmN0aW9uLmdldCgpLCBmYWxzZSwgZmFsc2UpKTsKICAgICBwYWlu
dEluZm8uY29udGV4dC0+c2F2ZSgpOwotICAgIENHQ29udGV4dENsaXBUb1JlY3QoY29udGV4dCwg
Ym91bmQucmVjdCgpKTsKKyAgICBDR0NvbnRleHRDbGlwVG9SZWN0KGNvbnRleHQsIHIpOwogICAg
IHBhaW50SW5mby5jb250ZXh0LT5jbGlwUm91bmRlZFJlY3QoYm91bmQpOwogICAgIENHQ29udGV4
dERyYXdTaGFkaW5nKGNvbnRleHQsIG1haW5TaGFkaW5nLmdldCgpKTsKICAgICBwYWludEluZm8u
Y29udGV4dC0+cmVzdG9yZSgpOwpAQCAtNzk4LDcgKzc5OCw3IEBAIHZvaWQgUmVuZGVyVGhlbWVT
YWZhcmk6OnBhaW50TWVudUxpc3RCdXR0b25HcmFkaWVudHMoUmVuZGVyT2JqZWN0KiBvLCBjb25z
dCBQYWluCiAgICAgfQogCiAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNhdmUoKTsKLSAgICBDR0Nv
bnRleHRDbGlwVG9SZWN0KGNvbnRleHQsIGJvdW5kLnJlY3QoKSk7CisgICAgQ0dDb250ZXh0Q2xp
cFRvUmVjdChjb250ZXh0LCByKTsKICAgICBwYWludEluZm8uY29udGV4dC0+Y2xpcFJvdW5kZWRS
ZWN0KGJvdW5kKTsKICAgICBDR0NvbnRleHREcmF3U2hhZGluZyhjb250ZXh0LCBsZWZ0U2hhZGlu
Zy5nZXQoKSk7CiAgICAgQ0dDb250ZXh0RHJhd1NoYWRpbmcoY29udGV4dCwgcmlnaHRTaGFkaW5n
LmdldCgpKTsKQEAgLTk3Myw3ICs5NzMsNyBAQCBib29sIFJlbmRlclRoZW1lU2FmYXJpOjpwYWlu
dFNsaWRlclRyYWNrKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBwYWludAogICAg
IENHQ29sb3JTcGFjZVJlZiBjc3BhY2UgPSBkZXZpY2VSR0JDb2xvclNwYWNlUmVmKCk7CiAKICAg
ICBwYWludEluZm8uY29udGV4dC0+c2F2ZSgpOwotICAgIENHQ29udGV4dENsaXBUb1JlY3QoY29u
dGV4dCwgYm91bmRzLnJlY3QoKSk7CisgICAgQ0dDb250ZXh0Q2xpcFRvUmVjdChjb250ZXh0LCBw
aXhlbFNuYXBwZWRJbnRSZWN0KGJvdW5kcy5yZWN0KCkpKTsKIAogICAgIHN0cnVjdCBDR0Z1bmN0
aW9uQ2FsbGJhY2tzIG1haW5DYWxsYmFja3MgPSB7IDAsIFRyYWNrR3JhZGllbnRJbnRlcnBvbGF0
ZSwgTlVMTCB9OwogICAgIFJldGFpblB0cjxDR0Z1bmN0aW9uUmVmPiBtYWluRnVuY3Rpb24gPSBh
ZG9wdENGKENHRnVuY3Rpb25DcmVhdGUoTlVMTCwgMSwgTlVMTCwgNCwgTlVMTCwgJm1haW5DYWxs
YmFja3MpKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>