<?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>64317</bug_id>
          
          <creation_ts>2011-07-11 14:43:02 -0700</creation_ts>
          <short_desc>Switch lineTop and lineBottom to new layout types</short_desc>
          <delta_ts>2011-07-11 16:31:26 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>63567</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Levi Weintraub">leviw</reporter>
          <assigned_to name="Levi Weintraub">leviw</assigned_to>
          <cc>eae</cc>
    
    <cc>eric</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>435209</commentid>
    <comment_count>0</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-07-11 14:43:02 -0700</bug_when>
    <thetext>And converting their usages.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435213</commentid>
    <comment_count>1</comment_count>
      <attachid>100365</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-07-11 14:54:35 -0700</bug_when>
    <thetext>Created attachment 100365
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435271</commentid>
    <comment_count>2</comment_count>
      <attachid>100365</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-07-11 16:10:37 -0700</bug_when>
    <thetext>Comment on attachment 100365
Patch

I am very grateful to you two for demonstrating the stamina to make (or at least start) this long-needed cleanup (and eventual float transition) of the rendering tree.  Keep up the great work!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435284</commentid>
    <comment_count>3</comment_count>
      <attachid>100365</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-07-11 16:31:23 -0700</bug_when>
    <thetext>Comment on attachment 100365
Patch

Clearing flags on attachment: 100365

Committed r90791: &lt;http://trac.webkit.org/changeset/90791&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435285</commentid>
    <comment_count>4</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-07-11 16:31:26 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>100365</attachid>
            <date>2011-07-11 14:54:35 -0700</date>
            <delta_ts>2011-07-11 16:31:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-64317-20110711145433.patch</filename>
            <type>text/plain</type>
            <size>43406</size>
            <attacher name="Levi Weintraub">leviw</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkwNzgyKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNjkgQEAKKzIwMTEtMDctMTEgIExldmkgV2Vp
bnRyYXViICA8bGV2aXdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFN3aXRjaCBsaW5lVG9wIGFu
ZCBsaW5lQm90dG9tIHRvIG5ldyBsYXlvdXQgdHlwZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0MzE3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQ2hhbmdpbmcgbGluZVRvcCBhbmQgbGluZUJvdHRvbSB0
byBMYXlvdXRVbml0cyBhbmQgcHJlcGFyaW5nIGFsbCB1c2VzCisgICAgICAgIG9mIHRoZW0gZm9y
IHRoZSB1cGNvbWluZyBjb252ZXJzaW9uLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gbmV3
IGZ1bmN0aW9uYWxpdHkuCisKKyAgICAgICAgKiByZW5kZXJpbmcvRWxsaXBzaXNCb3guY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RWxsaXBzaXNCb3g6Om5vZGVBdFBvaW50KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvRWxsaXBzaXNCb3guaDoKKyAgICAgICAgKiByZW5kZXJpbmcvR2FwUmVjdHMuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkdhcFJlY3RzOjpsZWZ0KToKKyAgICAgICAgKFdlYkNvcmU6Okdh
cFJlY3RzOjpjZW50ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R2FwUmVjdHM6OnJpZ2h0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdhcFJlY3RzOjp1bml0ZUxlZnQpOgorICAgICAgICAoV2ViQ29yZTo6
R2FwUmVjdHM6OnVuaXRlQ2VudGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdhcFJlY3RzOjp1bml0
ZVJpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OkdhcFJlY3RzOjpvcGVyYXRvciBMYXlvdXRSZWN0
KToKKyAgICAgICAgKiByZW5kZXJpbmcvSW5saW5lQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OklubGluZUJveDo6bm9kZUF0UG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVCb3gu
aDoKKyAgICAgICAgKiByZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbmxpbmVGbG93Qm94OjpwbGFjZUJveGVzSW5CbG9ja0RpcmVjdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpJbmxpbmVGbG93Qm94OjpmbGlwTGluZXNJbkJsb2NrRGlyZWN0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dCb3g6OmNvbXB1dGVPdmVyZmxvdyk6CisgICAgICAg
IChXZWJDb3JlOjpJbmxpbmVGbG93Qm94OjpzZXRMYXlvdXRPdmVyZmxvdyk6CisgICAgICAgIChX
ZWJDb3JlOjpJbmxpbmVGbG93Qm94OjpzZXRWaXN1YWxPdmVyZmxvdyk6CisgICAgICAgIChXZWJD
b3JlOjpJbmxpbmVGbG93Qm94OjpzZXRPdmVyZmxvd0Zyb21Mb2dpY2FsUmVjdHMpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5saW5lRmxvd0JveDo6bm9kZUF0UG9pbnQpOgorICAgICAgICAqIHJlbmRl
cmluZy9JbmxpbmVGbG93Qm94Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVGbG93Qm94Ojps
YXlvdXRPdmVyZmxvd1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lRmxvd0JveDo6dmlz
dWFsT3ZlcmZsb3dSZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94Ojpub2RlQXRQb2ludCk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckxpbmVCb3hMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckxpbmVCb3hMaXN0OjphbnlMaW5lSW50ZXJzZWN0c1JlY3QpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJMaW5lQm94TGlzdC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0
SXRlbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0SXRlbTo6cG9zaXRpb25MaXN0
TWFya2VyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmU6OmFkanVzdENvbnRyb2xIZWlnaHRC
YXNlZE9uTGluZUhlaWdodCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9s
U2luZ2xlTGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Q29udHJvbFNpbmds
ZUxpbmU6OmFkanVzdENvbnRyb2xIZWlnaHRCYXNlZE9uTGluZUhlaWdodCk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5oOgorICAgICAgICAqIHJlbmRl
cmluZy9Sb290SW5saW5lQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJvb3RJbmxpbmVCb3g6
Om5vZGVBdFBvaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUm9vdElubGluZUJveC5oOgorICAg
ICAgICAoV2ViQ29yZTo6Um9vdElubGluZUJveDo6bGluZVRvcCk6CisgICAgICAgIChXZWJDb3Jl
OjpSb290SW5saW5lQm94OjpsaW5lQm90dG9tKToKKyAgICAgICAgKFdlYkNvcmU6OlJvb3RJbmxp
bmVCb3g6OnNldExpbmVUb3BCb3R0b21Qb3NpdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6Um9v
dElubGluZUJveDo6bG9naWNhbFRvcFZpc3VhbE92ZXJmbG93KToKKyAgICAgICAgKFdlYkNvcmU6
OlJvb3RJbmxpbmVCb3g6OmxvZ2ljYWxCb3R0b21WaXN1YWxPdmVyZmxvdyk6CisgICAgICAgIChX
ZWJDb3JlOjpSb290SW5saW5lQm94Ojpsb2dpY2FsVG9wTGF5b3V0T3ZlcmZsb3cpOgorICAgICAg
ICAoV2ViQ29yZTo6Um9vdElubGluZUJveDo6bG9naWNhbEJvdHRvbUxheW91dE92ZXJmbG93KToK
KyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR0lubGluZUZsb3dCb3guaDoKKyAgICAgICAgKiBy
ZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
SW5saW5lVGV4dEJveDo6bm9kZUF0UG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZH
SW5saW5lVGV4dEJveC5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUm9vdElubGluZUJv
eC5oOgorCiAyMDExLTA3LTExICBCcmFkbGV5IE5lbHNvbiAgPGJyYWRuZWxzb25AY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEZpc2hlci4KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9FbGxpcHNpc0JveC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0VsbGlwc2lzQm94LmNwcAkocmV2aXNpb24gOTA3NzgpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvRWxsaXBzaXNCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDIsNyArMTAyLDcgQEAgdm9pZCBFbGxpcHNpc0JveDo6cGFpbnRTZWxlY3Rpb24oR3JhcGhpYwog
ICAgIGNvbnRleHQtPmRyYXdIaWdobGlnaHRGb3JUZXh0KGZvbnQsIFJlbmRlckJsb2NrOjpjb25z
dHJ1Y3RUZXh0UnVuKHJlbmRlcmVyKCksIGZvbnQsIG1fc3RyLCBzdHlsZSwgVGV4dFJ1bjo6QWxs
b3dUcmFpbGluZ0V4cGFuc2lvbiksIEludFBvaW50KHgoKSArIHBhaW50T2Zmc2V0LngoKSwgeSgp
ICsgcGFpbnRPZmZzZXQueSgpICsgdG9wKSwgaCwgYywgc3R5bGUtPmNvbG9yU3BhY2UoKSk7CiB9
CiAKLWJvb2wgRWxsaXBzaXNCb3g6Om5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiBy
ZXF1ZXN0LCBIaXRUZXN0UmVzdWx0JiByZXN1bHQsIGNvbnN0IExheW91dFBvaW50JiBwb2ludElu
Q29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQsIGludCBsaW5l
VG9wLCBpbnQgbGluZUJvdHRvbSkKK2Jvb2wgRWxsaXBzaXNCb3g6Om5vZGVBdFBvaW50KGNvbnN0
IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdWx0JiByZXN1bHQsIGNvbnN0IExh
eW91dFBvaW50JiBwb2ludEluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0
ZWRPZmZzZXQsIExheW91dFVuaXQgbGluZVRvcCwgTGF5b3V0VW5pdCBsaW5lQm90dG9tKQogewog
ICAgIExheW91dFBvaW50IGFkanVzdGVkTG9jYXRpb24gPSBhY2N1bXVsYXRlZE9mZnNldCArIHJv
dW5kZWRMYXlvdXRQb2ludCh0b3BMZWZ0KCkpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvRWxsaXBzaXNCb3guaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvRWxsaXBzaXNCb3guaAkocmV2aXNpb24gOTA3NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvRWxsaXBzaXNCb3guaAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQCBwdWJs
aWM6CiAgICAgfQogCiAgICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExh
eW91dFBvaW50JiwgTGF5b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXRVbml0IGxpbmVCb3R0b20pOwot
ICAgIHZpcnR1YWwgYm9vbCBub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRl
c3RSZXN1bHQmLCBjb25zdCBMYXlvdXRQb2ludCYgcG9pbnRJbkNvbnRhaW5lciwgY29uc3QgTGF5
b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBpbnQgbGluZVRvcCwgaW50IGxpbmVCb3R0b20p
OworICAgIHZpcnR1YWwgYm9vbCBub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhp
dFRlc3RSZXN1bHQmLCBjb25zdCBMYXlvdXRQb2ludCYgcG9pbnRJbkNvbnRhaW5lciwgY29uc3Qg
TGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBMYXlvdXRVbml0IGxpbmVUb3AsIExheW91
dFVuaXQgbGluZUJvdHRvbSk7CiAgICAgdm9pZCBzZXRTZWxlY3Rpb25TdGF0ZShSZW5kZXJPYmpl
Y3Q6OlNlbGVjdGlvblN0YXRlIHMpIHsgbV9zZWxlY3Rpb25TdGF0ZSA9IHM7IH0KICAgICBJbnRS
ZWN0IHNlbGVjdGlvblJlY3QoKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dh
cFJlY3RzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dhcFJlY3Rz
LmgJKHJldmlzaW9uIDkwNzc4KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dhcFJlY3Rz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDIzICsyMywyMyBAQAogI2lmbmRlZiBHYXBSZWN0c19o
CiAjZGVmaW5lIEdhcFJlY3RzX2gKIAotI2luY2x1ZGUgIkludFJlY3QuaCIKKyNpbmNsdWRlICJM
YXlvdXRUeXBlcy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBzdHJ1Y3QgR2FwUmVj
dHMgewotICAgICAgICBjb25zdCBJbnRSZWN0JiBsZWZ0KCkgY29uc3QgeyByZXR1cm4gbV9sZWZ0
OyB9Ci0gICAgICAgIGNvbnN0IEludFJlY3QmIGNlbnRlcigpIGNvbnN0IHsgcmV0dXJuIG1fY2Vu
dGVyOyB9Ci0gICAgICAgIGNvbnN0IEludFJlY3QmIHJpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9y
aWdodDsgfQorICAgICAgICBjb25zdCBMYXlvdXRSZWN0JiBsZWZ0KCkgY29uc3QgeyByZXR1cm4g
bV9sZWZ0OyB9CisgICAgICAgIGNvbnN0IExheW91dFJlY3QmIGNlbnRlcigpIGNvbnN0IHsgcmV0
dXJuIG1fY2VudGVyOyB9CisgICAgICAgIGNvbnN0IExheW91dFJlY3QmIHJpZ2h0KCkgY29uc3Qg
eyByZXR1cm4gbV9yaWdodDsgfQogICAgICAgICAKLSAgICAgICAgdm9pZCB1bml0ZUxlZnQoY29u
c3QgSW50UmVjdCYgcikgeyBtX2xlZnQudW5pdGUocik7IH0KLSAgICAgICAgdm9pZCB1bml0ZUNl
bnRlcihjb25zdCBJbnRSZWN0JiByKSB7IG1fY2VudGVyLnVuaXRlKHIpOyB9Ci0gICAgICAgIHZv
aWQgdW5pdGVSaWdodChjb25zdCBJbnRSZWN0JiByKSB7IG1fcmlnaHQudW5pdGUocik7IH0KKyAg
ICAgICAgdm9pZCB1bml0ZUxlZnQoY29uc3QgTGF5b3V0UmVjdCYgcikgeyBtX2xlZnQudW5pdGUo
cik7IH0KKyAgICAgICAgdm9pZCB1bml0ZUNlbnRlcihjb25zdCBMYXlvdXRSZWN0JiByKSB7IG1f
Y2VudGVyLnVuaXRlKHIpOyB9CisgICAgICAgIHZvaWQgdW5pdGVSaWdodChjb25zdCBMYXlvdXRS
ZWN0JiByKSB7IG1fcmlnaHQudW5pdGUocik7IH0KICAgICAgICAgdm9pZCB1bml0ZShjb25zdCBH
YXBSZWN0cyYgbykgeyB1bml0ZUxlZnQoby5sZWZ0KCkpOyB1bml0ZUNlbnRlcihvLmNlbnRlcigp
KTsgdW5pdGVSaWdodChvLnJpZ2h0KCkpOyB9CiAKLSAgICAgICAgb3BlcmF0b3IgSW50UmVjdCgp
IGNvbnN0CisgICAgICAgIG9wZXJhdG9yIExheW91dFJlY3QoKSBjb25zdAogICAgICAgICB7Ci0g
ICAgICAgICAgICBJbnRSZWN0IHJlc3VsdCA9IG1fbGVmdDsKKyAgICAgICAgICAgIExheW91dFJl
Y3QgcmVzdWx0ID0gbV9sZWZ0OwogICAgICAgICAgICAgcmVzdWx0LnVuaXRlKG1fY2VudGVyKTsK
ICAgICAgICAgICAgIHJlc3VsdC51bml0ZShtX3JpZ2h0KTsKICAgICAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CkBAIC01Miw5ICs1Miw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IEdhcFJlY3RzJiBvdGhlcikgeyByZXR1cm4gISgqdGhpcyA9PSBv
dGhlcik7IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIEludFJlY3QgbV9sZWZ0OwotICAgICAg
ICBJbnRSZWN0IG1fY2VudGVyOwotICAgICAgICBJbnRSZWN0IG1fcmlnaHQ7CisgICAgICAgIExh
eW91dFJlY3QgbV9sZWZ0OworICAgICAgICBMYXlvdXRSZWN0IG1fY2VudGVyOworICAgICAgICBM
YXlvdXRSZWN0IG1fcmlnaHQ7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUJveC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUJveC5jcHAJKHJldmlzaW9uIDkwNzc4KQor
KysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUJveC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTIyNCw3ICsyMjQsNyBAQCB2b2lkIElubGluZUJveDo6cGFpbnQoUGFpbnRJbmZvJiBwYWlu
dEluCiAgICAgfQogfQogCi1ib29sIElubGluZUJveDo6bm9kZUF0UG9pbnQoY29uc3QgSGl0VGVz
dFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgY29uc3QgTGF5b3V0UG9p
bnQmIHBvaW50SW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNl
dCwgaW50IC8qIGxpbmVUb3AgKi8sIGludCAvKmxpbmVCb3R0b20qLykKK2Jvb2wgSW5saW5lQm94
Ojpub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3Vs
dCYgcmVzdWx0LCBjb25zdCBMYXlvdXRQb2ludCYgcG9pbnRJbkNvbnRhaW5lciwgY29uc3QgTGF5
b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBMYXlvdXRVbml0IC8qIGxpbmVUb3AgKi8sIExh
eW91dFVuaXQgLypsaW5lQm90dG9tKi8pCiB7CiAgICAgLy8gSGl0IHRlc3QgYWxsIHBoYXNlcyBv
ZiByZXBsYWNlZCBlbGVtZW50cyBhdG9taWNhbGx5LCBhcyB0aG91Z2ggdGhlIHJlcGxhY2VkIGVs
ZW1lbnQgZXN0YWJsaXNoZWQgaXRzCiAgICAgLy8gb3duIHN0YWNraW5nIGNvbnRleHQuICAoU2Vl
IEFwcGVuZGl4IEUuMiwgc2VjdGlvbiA2LjQgb24gaW5saW5lIGJsb2NrL3RhYmxlIGVsZW1lbnRz
IGluIHRoZSBDU1MyLjEKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVCb3gu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lQm94LmgJKHJl
dmlzaW9uIDkwNzc4KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUJveC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMjcsNyArMTI3LDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIHZp
cnR1YWwgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYsIExheW91dFVu
aXQgbGluZVRvcCwgTGF5b3V0VW5pdCBsaW5lQm90dG9tKTsKLSAgICB2aXJ0dWFsIGJvb2wgbm9k
ZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgTGF5
b3V0UG9pbnQmIHBvaW50SW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRl
ZE9mZnNldCwgaW50IGxpbmVUb3AsIGludCBsaW5lQm90dG9tKTsKKyAgICB2aXJ0dWFsIGJvb2wg
bm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3Qg
TGF5b3V0UG9pbnQmIHBvaW50SW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVs
YXRlZE9mZnNldCwgTGF5b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXRVbml0IGxpbmVCb3R0b20pOwog
CiAgICAgSW5saW5lQm94KiBuZXh0KCkgY29uc3QgeyByZXR1cm4gbV9uZXh0OyB9CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAJKHJldmlzaW9uIDkw
Nzc4KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01NzIsOCArNTcyLDggQEAgdm9pZCBJbmxpbmVGbG93Qm94Ojpjb21wdXRl
TG9naWNhbEJveEhlaQogICAgIH0KIH0KIAotdm9pZCBJbmxpbmVGbG93Qm94OjpwbGFjZUJveGVz
SW5CbG9ja0RpcmVjdGlvbihpbnQgdG9wLCBpbnQgbWF4SGVpZ2h0LCBpbnQgbWF4QXNjZW50LCBi
b29sIHN0cmljdE1vZGUsIGludCYgbGluZVRvcCwgaW50JiBsaW5lQm90dG9tLCBib29sJiBzZXRM
aW5lVG9wLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQmIGxpbmVUb3BJbmNsdWRpbmdNYXJnaW5zLCBpbnQmIGxpbmVCb3R0b21JbmNsdWRpbmdNYXJn
aW5zLCBib29sJiBoYXNBbm5vdGF0aW9uc0JlZm9yZSwgYm9vbCYgaGFzQW5ub3RhdGlvbnNBZnRl
ciwgRm9udEJhc2VsaW5lIGJhc2VsaW5lVHlwZSkKK3ZvaWQgSW5saW5lRmxvd0JveDo6cGxhY2VC
b3hlc0luQmxvY2tEaXJlY3Rpb24oaW50IHRvcCwgaW50IG1heEhlaWdodCwgaW50IG1heEFzY2Vu
dCwgYm9vbCBzdHJpY3RNb2RlLCBMYXlvdXRVbml0JiBsaW5lVG9wLCBMYXlvdXRVbml0JiBsaW5l
Qm90dG9tLCBib29sJiBzZXRMaW5lVG9wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBMYXlvdXRVbml0JiBsaW5lVG9wSW5jbHVkaW5nTWFyZ2lucywgTGF5
b3V0VW5pdCYgbGluZUJvdHRvbUluY2x1ZGluZ01hcmdpbnMsIGJvb2wmIGhhc0Fubm90YXRpb25z
QmVmb3JlLCBib29sJiBoYXNBbm5vdGF0aW9uc0FmdGVyLCBGb250QmFzZWxpbmUgYmFzZWxpbmVU
eXBlKQogewogICAgIGJvb2wgaXNSb290Qm94ID0gaXNSb290SW5saW5lQm94KCk7CiAgICAgaWYg
KGlzUm9vdEJveCkgewpAQCAtNTgxLDcgKzU4MSw3IEBAIHZvaWQgSW5saW5lRmxvd0JveDo6cGxh
Y2VCb3hlc0luQmxvY2tEaXIKICAgICAgICAgc2V0TG9naWNhbFRvcCh0b3AgKyBtYXhBc2NlbnQg
LSBmb250TWV0cmljcy5hc2NlbnQoYmFzZWxpbmVUeXBlKSk7CiAgICAgfQogCi0gICAgaW50IGFk
anVzdG1lbnRGb3JDaGlsZHJlbldpdGhTYW1lTGluZUhlaWdodEFuZEJhc2VsaW5lID0gMDsKKyAg
ICBMYXlvdXRVbml0IGFkanVzdG1lbnRGb3JDaGlsZHJlbldpdGhTYW1lTGluZUhlaWdodEFuZEJh
c2VsaW5lID0gMDsKICAgICBpZiAoZGVzY2VuZGFudHNIYXZlU2FtZUxpbmVIZWlnaHRBbmRCYXNl
bGluZSgpKSB7CiAgICAgICAgIGFkanVzdG1lbnRGb3JDaGlsZHJlbldpdGhTYW1lTGluZUhlaWdo
dEFuZEJhc2VsaW5lID0gbG9naWNhbFRvcCgpOwogICAgICAgICBpZiAocGFyZW50KCkpCkBAIC02
MDcsMTQgKzYwNywxNCBAQCB2b2lkIElubGluZUZsb3dCb3g6OnBsYWNlQm94ZXNJbkJsb2NrRGly
CiAgICAgICAgICAgICBpZiAoIXN0cmljdE1vZGUgJiYgaW5saW5lRmxvd0JveCAmJiAhaW5saW5l
Rmxvd0JveC0+aGFzVGV4dENoaWxkcmVuKCkgJiYgIWN1cnItPmJveE1vZGVsT2JqZWN0KCktPmhh
c0lubGluZURpcmVjdGlvbkJvcmRlcnNPclBhZGRpbmcoKQogICAgICAgICAgICAgICAgICYmICEo
aW5saW5lRmxvd0JveC0+ZGVzY2VuZGFudHNIYXZlU2FtZUxpbmVIZWlnaHRBbmRCYXNlbGluZSgp
ICYmIGlubGluZUZsb3dCb3gtPmhhc1RleHREZXNjZW5kYW50cygpKSkKICAgICAgICAgICAgICAg
ICBjaGlsZEFmZmVjdHNUb3BCb3R0b21Qb3MgPSBmYWxzZTsKLSAgICAgICAgICAgIGludCBwb3NB
ZGp1c3QgPSBtYXhBc2NlbnQgLSBjdXJyLT5iYXNlbGluZVBvc2l0aW9uKGJhc2VsaW5lVHlwZSk7
CisgICAgICAgICAgICBMYXlvdXRVbml0IHBvc0FkanVzdCA9IG1heEFzY2VudCAtIGN1cnItPmJh
c2VsaW5lUG9zaXRpb24oYmFzZWxpbmVUeXBlKTsKICAgICAgICAgICAgIGN1cnItPnNldExvZ2lj
YWxUb3AoY3Vyci0+bG9naWNhbFRvcCgpICsgdG9wICsgcG9zQWRqdXN0KTsKICAgICAgICAgfQog
ICAgICAgICAKLSAgICAgICAgaW50IG5ld0xvZ2ljYWxUb3AgPSBjdXJyLT5sb2dpY2FsVG9wKCk7
Ci0gICAgICAgIGludCBuZXdMb2dpY2FsVG9wSW5jbHVkaW5nTWFyZ2lucyA9IG5ld0xvZ2ljYWxU
b3A7Ci0gICAgICAgIGludCBib3hIZWlnaHQgPSBjdXJyLT5sb2dpY2FsSGVpZ2h0KCk7Ci0gICAg
ICAgIGludCBib3hIZWlnaHRJbmNsdWRpbmdNYXJnaW5zID0gYm94SGVpZ2h0OworICAgICAgICBM
YXlvdXRVbml0IG5ld0xvZ2ljYWxUb3AgPSBjdXJyLT5sb2dpY2FsVG9wKCk7CisgICAgICAgIExh
eW91dFVuaXQgbmV3TG9naWNhbFRvcEluY2x1ZGluZ01hcmdpbnMgPSBuZXdMb2dpY2FsVG9wOwor
ICAgICAgICBMYXlvdXRVbml0IGJveEhlaWdodCA9IGN1cnItPmxvZ2ljYWxIZWlnaHQoKTsKKyAg
ICAgICAgTGF5b3V0VW5pdCBib3hIZWlnaHRJbmNsdWRpbmdNYXJnaW5zID0gYm94SGVpZ2h0Owog
ICAgICAgICAgICAgCiAgICAgICAgIGlmIChjdXJyLT5pc1RleHQoKSB8fCBjdXJyLT5pc0lubGlu
ZUZsb3dCb3goKSkgewogICAgICAgICAgICAgY29uc3QgRm9udE1ldHJpY3MmIGZvbnRNZXRyaWNz
ID0gY3Vyci0+cmVuZGVyZXIoKS0+c3R5bGUobV9maXJzdExpbmUpLT5mb250TWV0cmljcygpOwpA
QCAtNjI4LDggKzYyOCw4IEBAIHZvaWQgSW5saW5lRmxvd0JveDo6cGxhY2VCb3hlc0luQmxvY2tE
aXIKICAgICAgICAgfSBlbHNlIGlmICghY3Vyci0+cmVuZGVyZXIoKS0+aXNCUigpKSB7CiAgICAg
ICAgICAgICBSZW5kZXJCb3gqIGJveCA9IHRvUmVuZGVyQm94KGN1cnItPnJlbmRlcmVyKCkpOwog
ICAgICAgICAgICAgbmV3TG9naWNhbFRvcEluY2x1ZGluZ01hcmdpbnMgPSBuZXdMb2dpY2FsVG9w
OwotICAgICAgICAgICAgaW50IG92ZXJTaWRlTWFyZ2luID0gY3Vyci0+aXNIb3Jpem9udGFsKCkg
PyBib3gtPm1hcmdpblRvcCgpIDogYm94LT5tYXJnaW5SaWdodCgpOwotICAgICAgICAgICAgaW50
IHVuZGVyU2lkZU1hcmdpbiA9IGN1cnItPmlzSG9yaXpvbnRhbCgpID8gYm94LT5tYXJnaW5Cb3R0
b20oKSA6IGJveC0+bWFyZ2luTGVmdCgpOworICAgICAgICAgICAgTGF5b3V0VW5pdCBvdmVyU2lk
ZU1hcmdpbiA9IGN1cnItPmlzSG9yaXpvbnRhbCgpID8gYm94LT5tYXJnaW5Ub3AoKSA6IGJveC0+
bWFyZ2luUmlnaHQoKTsKKyAgICAgICAgICAgIExheW91dFVuaXQgdW5kZXJTaWRlTWFyZ2luID0g
Y3Vyci0+aXNIb3Jpem9udGFsKCkgPyBib3gtPm1hcmdpbkJvdHRvbSgpIDogYm94LT5tYXJnaW5M
ZWZ0KCk7CiAgICAgICAgICAgICBuZXdMb2dpY2FsVG9wICs9IG92ZXJTaWRlTWFyZ2luOwogICAg
ICAgICAgICAgYm94SGVpZ2h0SW5jbHVkaW5nTWFyZ2lucyArPSBvdmVyU2lkZU1hcmdpbiArIHVu
ZGVyU2lkZU1hcmdpbjsKICAgICAgICAgfQpAQCAtNjQ4LDggKzY0OCw4IEBAIHZvaWQgSW5saW5l
Rmxvd0JveDo6cGxhY2VCb3hlc0luQmxvY2tEaXIKIAogICAgICAgICAgICAgICAgIFJlbmRlclJ1
YnlSdW4qIHJ1YnlSdW4gPSB0b1JlbmRlclJ1YnlSdW4oY3Vyci0+cmVuZGVyZXIoKSk7CiAgICAg
ICAgICAgICAgICAgaWYgKFJlbmRlclJ1YnlCYXNlKiBydWJ5QmFzZSA9IHJ1YnlSdW4tPnJ1YnlC
YXNlKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaW50IGJvdHRvbVJ1YnlCYXNlTGVhZGluZyA9
IChjdXJyLT5sb2dpY2FsSGVpZ2h0KCkgLSBydWJ5QmFzZS0+bG9naWNhbEJvdHRvbSgpKSArIHJ1
YnlCYXNlLT5sb2dpY2FsSGVpZ2h0KCkgLSAocnVieUJhc2UtPmxhc3RSb290Qm94KCkgPyBydWJ5
QmFzZS0+bGFzdFJvb3RCb3goKS0+bGluZUJvdHRvbSgpIDogMCk7Ci0gICAgICAgICAgICAgICAg
ICAgIGludCB0b3BSdWJ5QmFzZUxlYWRpbmcgPSBydWJ5QmFzZS0+bG9naWNhbFRvcCgpICsgKHJ1
YnlCYXNlLT5maXJzdFJvb3RCb3goKSA/IHJ1YnlCYXNlLT5maXJzdFJvb3RCb3goKS0+bGluZVRv
cCgpIDogMCk7CisgICAgICAgICAgICAgICAgICAgIExheW91dFVuaXQgYm90dG9tUnVieUJhc2VM
ZWFkaW5nID0gKGN1cnItPmxvZ2ljYWxIZWlnaHQoKSAtIHJ1YnlCYXNlLT5sb2dpY2FsQm90dG9t
KCkpICsgcnVieUJhc2UtPmxvZ2ljYWxIZWlnaHQoKSAtIChydWJ5QmFzZS0+bGFzdFJvb3RCb3go
KSA/IHJ1YnlCYXNlLT5sYXN0Um9vdEJveCgpLT5saW5lQm90dG9tKCkgOiAwKTsKKyAgICAgICAg
ICAgICAgICAgICAgTGF5b3V0VW5pdCB0b3BSdWJ5QmFzZUxlYWRpbmcgPSBydWJ5QmFzZS0+bG9n
aWNhbFRvcCgpICsgKHJ1YnlCYXNlLT5maXJzdFJvb3RCb3goKSA/IHJ1YnlCYXNlLT5maXJzdFJv
b3RCb3goKS0+bGluZVRvcCgpIDogMCk7CiAgICAgICAgICAgICAgICAgICAgIG5ld0xvZ2ljYWxU
b3AgKz0gIXJlbmRlcmVyKCktPnN0eWxlKCktPmlzRmxpcHBlZExpbmVzV3JpdGluZ01vZGUoKSA/
IHRvcFJ1YnlCYXNlTGVhZGluZyA6IGJvdHRvbVJ1YnlCYXNlTGVhZGluZzsKICAgICAgICAgICAg
ICAgICAgICAgYm94SGVpZ2h0IC09ICh0b3BSdWJ5QmFzZUxlYWRpbmcgKyBib3R0b21SdWJ5QmFz
ZUxlYWRpbmcpOwogICAgICAgICAgICAgICAgIH0KQEAgLTcwMyw3ICs3MDMsNyBAQCB2b2lkIElu
bGluZUZsb3dCb3g6OnBsYWNlQm94ZXNJbkJsb2NrRGlyCiAgICAgfQogfQogCi12b2lkIElubGlu
ZUZsb3dCb3g6OmZsaXBMaW5lc0luQmxvY2tEaXJlY3Rpb24oaW50IGxpbmVUb3AsIGludCBsaW5l
Qm90dG9tKQordm9pZCBJbmxpbmVGbG93Qm94OjpmbGlwTGluZXNJbkJsb2NrRGlyZWN0aW9uKExh
eW91dFVuaXQgbGluZVRvcCwgTGF5b3V0VW5pdCBsaW5lQm90dG9tKQogewogICAgIC8vIEZsaXAg
dGhlIGJveCBvbiB0aGUgbGluZSBzdWNoIHRoYXQgdGhlIHRvcCBpcyBub3cgcmVsYXRpdmUgdG8g
dGhlIGxpbmVCb3R0b20gaW5zdGVhZCBvZiB0aGUgbGluZVRvcC4KICAgICBzZXRMb2dpY2FsVG9w
KGxpbmVCb3R0b20gLSAobG9naWNhbFRvcCgpIC0gbGluZVRvcCkgLSBsb2dpY2FsSGVpZ2h0KCkp
OwpAQCAtODIzLDcgKzgyMyw3IEBAIGlubGluZSB2b2lkIElubGluZUZsb3dCb3g6OmFkZFJlcGxh
Y2VkQ2gKICAgICBsb2dpY2FsTGF5b3V0T3ZlcmZsb3cudW5pdGUoY2hpbGRMb2dpY2FsTGF5b3V0
T3ZlcmZsb3cpOwogfQogCi12b2lkIElubGluZUZsb3dCb3g6OmNvbXB1dGVPdmVyZmxvdyhpbnQg
bGluZVRvcCwgaW50IGxpbmVCb3R0b20sIEdseXBoT3ZlcmZsb3dBbmRGYWxsYmFja0ZvbnRzTWFw
JiB0ZXh0Qm94RGF0YU1hcCkKK3ZvaWQgSW5saW5lRmxvd0JveDo6Y29tcHV0ZU92ZXJmbG93KExh
eW91dFVuaXQgbGluZVRvcCwgTGF5b3V0VW5pdCBsaW5lQm90dG9tLCBHbHlwaE92ZXJmbG93QW5k
RmFsbGJhY2tGb250c01hcCYgdGV4dEJveERhdGFNYXApCiB7CiAgICAgLy8gSWYgd2Uga25vdyB3
ZSBoYXZlIG5vIG92ZXJmbG93LCB3ZSBjYW4ganVzdCBiYWlsLgogICAgIGlmIChrbm93blRvSGF2
ZU5vT3ZlcmZsb3coKSkKQEAgLTgzMiw4ICs4MzIsOCBAQCB2b2lkIElubGluZUZsb3dCb3g6OmNv
bXB1dGVPdmVyZmxvdyhpbnQgCiAgICAgLy8gVmlzdWFsIG92ZXJmbG93IGp1c3QgaW5jbHVkZXMg
b3ZlcmZsb3cgZm9yIHN0dWZmIHdlIG5lZWQgdG8gcmVwYWludCBvdXJzZWx2ZXMuICBTZWxmLXBh
aW50aW5nIGxheWVycyBhcmUgaWdub3JlZC4KICAgICAvLyBMYXlvdXQgb3ZlcmZsb3cgaXMgdXNl
ZCB0byBkZXRlcm1pbmUgc2Nyb2xsaW5nIGV4dGVudCwgc28gaXQgc3RpbGwgaW5jbHVkZXMgY2hp
bGQgbGF5ZXJzIGFuZCBhbHNvIGZhY3RvcnMgaW4KICAgICAvLyB0cmFuc2Zvcm1zLCByZWxhdGl2
ZSBwb3NpdGlvbmluZywgZXRjLgotICAgIEludFJlY3QgbG9naWNhbExheW91dE92ZXJmbG93KGVu
Y2xvc2luZ0ludFJlY3QobG9naWNhbEZyYW1lUmVjdEluY2x1ZGluZ0xpbmVIZWlnaHQobGluZVRv
cCwgbGluZUJvdHRvbSkpKTsKLSAgICBJbnRSZWN0IGxvZ2ljYWxWaXN1YWxPdmVyZmxvdyhsb2dp
Y2FsTGF5b3V0T3ZlcmZsb3cpOworICAgIExheW91dFJlY3QgbG9naWNhbExheW91dE92ZXJmbG93
KGVuY2xvc2luZ0xheW91dFJlY3QobG9naWNhbEZyYW1lUmVjdEluY2x1ZGluZ0xpbmVIZWlnaHQo
bGluZVRvcCwgbGluZUJvdHRvbSkpKTsKKyAgICBMYXlvdXRSZWN0IGxvZ2ljYWxWaXN1YWxPdmVy
Zmxvdyhsb2dpY2FsTGF5b3V0T3ZlcmZsb3cpOwogICAKICAgICAvLyBib3gtc2hhZG93IG9uIHJv
b3QgbGluZSBib3hlcyBpcyBhcHBseWluZyB0byB0aGUgYmxvY2sgYW5kIG5vdCB0byB0aGUgbGlu
ZXMuCiAgICAgYWRkQm94U2hhZG93VmlzdWFsT3ZlcmZsb3cobG9naWNhbFZpc3VhbE92ZXJmbG93
KTsKQEAgLTg0Nyw3ICs4NDcsNyBAQCB2b2lkIElubGluZUZsb3dCb3g6OmNvbXB1dGVPdmVyZmxv
dyhpbnQgCiAgICAgICAgICAgICBSZW5kZXJUZXh0KiBydCA9IHRvUmVuZGVyVGV4dCh0ZXh0LT5y
ZW5kZXJlcigpKTsKICAgICAgICAgICAgIGlmIChydC0+aXNCUigpKQogICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwotICAgICAgICAgICAgSW50UmVjdCB0ZXh0Qm94T3ZlcmZsb3coZW5jbG9zaW5n
SW50UmVjdCh0ZXh0LT5sb2dpY2FsRnJhbWVSZWN0KCkpKTsKKyAgICAgICAgICAgIExheW91dFJl
Y3QgdGV4dEJveE92ZXJmbG93KGVuY2xvc2luZ0xheW91dFJlY3QodGV4dC0+bG9naWNhbEZyYW1l
UmVjdCgpKSk7CiAgICAgICAgICAgICBhZGRUZXh0Qm94VmlzdWFsT3ZlcmZsb3codGV4dCwgdGV4
dEJveERhdGFNYXAsIHRleHRCb3hPdmVyZmxvdyk7CiAgICAgICAgICAgICBsb2dpY2FsVmlzdWFs
T3ZlcmZsb3cudW5pdGUodGV4dEJveE92ZXJmbG93KTsKICAgICAgICAgfSBlbHNlICBpZiAoY3Vy
ci0+cmVuZGVyZXIoKS0+aXNSZW5kZXJJbmxpbmUoKSkgewpAQCAtODU1LDcgKzg1NSw3IEBAIHZv
aWQgSW5saW5lRmxvd0JveDo6Y29tcHV0ZU92ZXJmbG93KGludCAKICAgICAgICAgICAgIGZsb3ct
PmNvbXB1dGVPdmVyZmxvdyhsaW5lVG9wLCBsaW5lQm90dG9tLCB0ZXh0Qm94RGF0YU1hcCk7CiAg
ICAgICAgICAgICBpZiAoIWZsb3ctPmJveE1vZGVsT2JqZWN0KCktPmhhc1NlbGZQYWludGluZ0xh
eWVyKCkpCiAgICAgICAgICAgICAgICAgbG9naWNhbFZpc3VhbE92ZXJmbG93LnVuaXRlKGZsb3ct
PmxvZ2ljYWxWaXN1YWxPdmVyZmxvd1JlY3QobGluZVRvcCwgbGluZUJvdHRvbSkpOwotICAgICAg
ICAgICAgSW50UmVjdCBjaGlsZExheW91dE92ZXJmbG93ID0gZmxvdy0+bG9naWNhbExheW91dE92
ZXJmbG93UmVjdChsaW5lVG9wLCBsaW5lQm90dG9tKTsKKyAgICAgICAgICAgIExheW91dFJlY3Qg
Y2hpbGRMYXlvdXRPdmVyZmxvdyA9IGZsb3ctPmxvZ2ljYWxMYXlvdXRPdmVyZmxvd1JlY3QobGlu
ZVRvcCwgbGluZUJvdHRvbSk7CiAgICAgICAgICAgICBjaGlsZExheW91dE92ZXJmbG93Lm1vdmUo
Zmxvdy0+Ym94TW9kZWxPYmplY3QoKS0+cmVsYXRpdmVQb3NpdGlvbkxvZ2ljYWxPZmZzZXQoKSk7
CiAgICAgICAgICAgICBsb2dpY2FsTGF5b3V0T3ZlcmZsb3cudW5pdGUoY2hpbGRMYXlvdXRPdmVy
Zmxvdyk7CiAgICAgICAgIH0gZWxzZQpAQCAtODY1LDkgKzg2NSw5IEBAIHZvaWQgSW5saW5lRmxv
d0JveDo6Y29tcHV0ZU92ZXJmbG93KGludCAKICAgICBzZXRPdmVyZmxvd0Zyb21Mb2dpY2FsUmVj
dHMobG9naWNhbExheW91dE92ZXJmbG93LCBsb2dpY2FsVmlzdWFsT3ZlcmZsb3csIGxpbmVUb3As
IGxpbmVCb3R0b20pOwogfQogCi12b2lkIElubGluZUZsb3dCb3g6OnNldExheW91dE92ZXJmbG93
KGNvbnN0IEludFJlY3QmIHJlY3QsIGludCBsaW5lVG9wLCBpbnQgbGluZUJvdHRvbSkKK3ZvaWQg
SW5saW5lRmxvd0JveDo6c2V0TGF5b3V0T3ZlcmZsb3coY29uc3QgTGF5b3V0UmVjdCYgcmVjdCwg
TGF5b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXRVbml0IGxpbmVCb3R0b20pCiB7Ci0gICAgSW50UmVj
dCBmcmFtZUJveCA9IGVuY2xvc2luZ0ludFJlY3QoZnJhbWVSZWN0SW5jbHVkaW5nTGluZUhlaWdo
dChsaW5lVG9wLCBsaW5lQm90dG9tKSk7CisgICAgTGF5b3V0UmVjdCBmcmFtZUJveCA9IGVuY2xv
c2luZ0xheW91dFJlY3QoZnJhbWVSZWN0SW5jbHVkaW5nTGluZUhlaWdodChsaW5lVG9wLCBsaW5l
Qm90dG9tKSk7CiAgICAgaWYgKGZyYW1lQm94LmNvbnRhaW5zKHJlY3QpIHx8IHJlY3QuaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTg3Nyw5ICs4NzcsOSBAQCB2b2lkIElubGluZUZs
b3dCb3g6OnNldExheW91dE92ZXJmbG93KGNvCiAgICAgbV9vdmVyZmxvdy0+c2V0TGF5b3V0T3Zl
cmZsb3cocmVjdCk7CiB9CiAKLXZvaWQgSW5saW5lRmxvd0JveDo6c2V0VmlzdWFsT3ZlcmZsb3co
Y29uc3QgSW50UmVjdCYgcmVjdCwgaW50IGxpbmVUb3AsIGludCBsaW5lQm90dG9tKQordm9pZCBJ
bmxpbmVGbG93Qm94OjpzZXRWaXN1YWxPdmVyZmxvdyhjb25zdCBMYXlvdXRSZWN0JiByZWN0LCBM
YXlvdXRVbml0IGxpbmVUb3AsIExheW91dFVuaXQgbGluZUJvdHRvbSkKIHsKLSAgICBJbnRSZWN0
IGZyYW1lQm94ID0gZW5jbG9zaW5nSW50UmVjdChmcmFtZVJlY3RJbmNsdWRpbmdMaW5lSGVpZ2h0
KGxpbmVUb3AsIGxpbmVCb3R0b20pKTsKKyAgICBMYXlvdXRSZWN0IGZyYW1lQm94ID0gZW5jbG9z
aW5nTGF5b3V0UmVjdChmcmFtZVJlY3RJbmNsdWRpbmdMaW5lSGVpZ2h0KGxpbmVUb3AsIGxpbmVC
b3R0b20pKTsKICAgICBpZiAoZnJhbWVCb3guY29udGFpbnMocmVjdCkgfHwgcmVjdC5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybjsKICAgICAgICAgCkBAIC04ODksMTYgKzg4OSwxNiBAQCB2b2lk
IElubGluZUZsb3dCb3g6OnNldFZpc3VhbE92ZXJmbG93KGNvCiAgICAgbV9vdmVyZmxvdy0+c2V0
VmlzdWFsT3ZlcmZsb3cocmVjdCk7CiB9CiAKLXZvaWQgSW5saW5lRmxvd0JveDo6c2V0T3ZlcmZs
b3dGcm9tTG9naWNhbFJlY3RzKGNvbnN0IEludFJlY3QmIGxvZ2ljYWxMYXlvdXRPdmVyZmxvdywg
Y29uc3QgSW50UmVjdCYgbG9naWNhbFZpc3VhbE92ZXJmbG93LCBpbnQgbGluZVRvcCwgaW50IGxp
bmVCb3R0b20pCit2b2lkIElubGluZUZsb3dCb3g6OnNldE92ZXJmbG93RnJvbUxvZ2ljYWxSZWN0
cyhjb25zdCBMYXlvdXRSZWN0JiBsb2dpY2FsTGF5b3V0T3ZlcmZsb3csIGNvbnN0IExheW91dFJl
Y3QmIGxvZ2ljYWxWaXN1YWxPdmVyZmxvdywgTGF5b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXRVbml0
IGxpbmVCb3R0b20pCiB7Ci0gICAgSW50UmVjdCBsYXlvdXRPdmVyZmxvdyhpc0hvcml6b250YWwo
KSA/IGxvZ2ljYWxMYXlvdXRPdmVyZmxvdyA6IGxvZ2ljYWxMYXlvdXRPdmVyZmxvdy50cmFuc3Bv
c2VkUmVjdCgpKTsKKyAgICBMYXlvdXRSZWN0IGxheW91dE92ZXJmbG93KGlzSG9yaXpvbnRhbCgp
ID8gbG9naWNhbExheW91dE92ZXJmbG93IDogbG9naWNhbExheW91dE92ZXJmbG93LnRyYW5zcG9z
ZWRSZWN0KCkpOwogICAgIHNldExheW91dE92ZXJmbG93KGxheW91dE92ZXJmbG93LCBsaW5lVG9w
LCBsaW5lQm90dG9tKTsKICAgICAKLSAgICBJbnRSZWN0IHZpc3VhbE92ZXJmbG93KGlzSG9yaXpv
bnRhbCgpID8gbG9naWNhbFZpc3VhbE92ZXJmbG93IDogbG9naWNhbFZpc3VhbE92ZXJmbG93LnRy
YW5zcG9zZWRSZWN0KCkpOworICAgIExheW91dFJlY3QgdmlzdWFsT3ZlcmZsb3coaXNIb3Jpem9u
dGFsKCkgPyBsb2dpY2FsVmlzdWFsT3ZlcmZsb3cgOiBsb2dpY2FsVmlzdWFsT3ZlcmZsb3cudHJh
bnNwb3NlZFJlY3QoKSk7CiAgICAgc2V0VmlzdWFsT3ZlcmZsb3codmlzdWFsT3ZlcmZsb3csIGxp
bmVUb3AsIGxpbmVCb3R0b20pOwogfQogCi1ib29sIElubGluZUZsb3dCb3g6Om5vZGVBdFBvaW50
KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdWx0JiByZXN1bHQsIGNv
bnN0IExheW91dFBvaW50JiBwb2ludEluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYgYWNj
dW11bGF0ZWRPZmZzZXQsIGludCBsaW5lVG9wLCBpbnQgbGluZUJvdHRvbSkKK2Jvb2wgSW5saW5l
Rmxvd0JveDo6bm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRl
c3RSZXN1bHQmIHJlc3VsdCwgY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50SW5Db250YWluZXIsIGNv
bnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgTGF5b3V0VW5pdCBsaW5lVG9wLCBM
YXlvdXRVbml0IGxpbmVCb3R0b20pCiB7CiAgICAgTGF5b3V0UmVjdCBvdmVyZmxvd1JlY3Qodmlz
dWFsT3ZlcmZsb3dSZWN0KGxpbmVUb3AsIGxpbmVCb3R0b20pKTsKICAgICBmbGlwRm9yV3JpdGlu
Z01vZGUob3ZlcmZsb3dSZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Jbmxp
bmVGbG93Qm94LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGlu
ZUZsb3dCb3guaAkocmV2aXNpb24gOTA3NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
SW5saW5lRmxvd0JveC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDksNyArMTA5LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgcGFpbnRGaWxsTGF5ZXIoY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgQ29sb3Im
LCBjb25zdCBGaWxsTGF5ZXIqLCBjb25zdCBMYXlvdXRSZWN0JiwgQ29tcG9zaXRlT3BlcmF0b3Ig
PSBDb21wb3NpdGVTb3VyY2VPdmVyKTsKICAgICB2b2lkIHBhaW50Qm94U2hhZG93KEdyYXBoaWNz
Q29udGV4dCosIFJlbmRlclN0eWxlKiwgU2hhZG93U3R5bGUsIGNvbnN0IExheW91dFJlY3QmKTsK
ICAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmLCBM
YXlvdXRVbml0IGxpbmVUb3AsIExheW91dFVuaXQgbGluZUJvdHRvbSk7Ci0gICAgdmlydHVhbCBi
b29sIG5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNv
bnN0IExheW91dFBvaW50JiBwb2ludEluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYgYWNj
dW11bGF0ZWRPZmZzZXQsIGludCBsaW5lVG9wLCBpbnQgbGluZUJvdHRvbSk7CisgICAgdmlydHVh
bCBib29sIG5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYs
IGNvbnN0IExheW91dFBvaW50JiBwb2ludEluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYg
YWNjdW11bGF0ZWRPZmZzZXQsIExheW91dFVuaXQgbGluZVRvcCwgTGF5b3V0VW5pdCBsaW5lQm90
dG9tKTsKIAogICAgIHZpcnR1YWwgUmVuZGVyTGluZUJveExpc3QqIHJlbmRlcmVyTGluZUJveGVz
KCkgY29uc3Q7CiAKQEAgLTE3MCwxNSArMTcwLDE1IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBib29sIHN0cmljdE1vZGUsIEdseXBoT3ZlcmZsb3dBbmRGYWxs
YmFja0ZvbnRzTWFwJiwgRm9udEJhc2VsaW5lLCBWZXJ0aWNhbFBvc2l0aW9uQ2FjaGUmKTsKICAg
ICB2b2lkIGFkanVzdE1heEFzY2VudEFuZERlc2NlbnQoaW50JiBtYXhBc2NlbnQsIGludCYgbWF4
RGVzY2VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG1heFBvc2l0
aW9uVG9wLCBpbnQgbWF4UG9zaXRpb25Cb3R0b20pOwotICAgIHZvaWQgcGxhY2VCb3hlc0luQmxv
Y2tEaXJlY3Rpb24oaW50IGxvZ2ljYWxUb3AsIGludCBtYXhIZWlnaHQsIGludCBtYXhBc2NlbnQs
IGJvb2wgc3RyaWN0TW9kZSwgaW50JiBsaW5lVG9wLCBpbnQmIGxpbmVCb3R0b20sIGJvb2wmIHNl
dExpbmVUb3AsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQmIGxpbmVU
b3BJbmNsdWRpbmdNYXJnaW5zLCBpbnQmIGxpbmVCb3R0b21JbmNsdWRpbmdNYXJnaW5zLCBib29s
JiBoYXNBbm5vdGF0aW9uc0JlZm9yZSwgYm9vbCYgaGFzQW5ub3RhdGlvbnNBZnRlciwgRm9udEJh
c2VsaW5lKTsKLSAgICB2b2lkIGZsaXBMaW5lc0luQmxvY2tEaXJlY3Rpb24oaW50IGxpbmVUb3As
IGludCBsaW5lQm90dG9tKTsKKyAgICB2b2lkIHBsYWNlQm94ZXNJbkJsb2NrRGlyZWN0aW9uKExh
eW91dFVuaXQgbG9naWNhbFRvcCwgTGF5b3V0VW5pdCBtYXhIZWlnaHQsIExheW91dFVuaXQgbWF4
QXNjZW50LCBib29sIHN0cmljdE1vZGUsIExheW91dFVuaXQmIGxpbmVUb3AsIExheW91dFVuaXQm
IGxpbmVCb3R0b20sIGJvb2wmIHNldExpbmVUb3AsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBMYXlvdXRVbml0JiBsaW5lVG9wSW5jbHVkaW5nTWFyZ2lucywgTGF5b3V0VW5p
dCYgbGluZUJvdHRvbUluY2x1ZGluZ01hcmdpbnMsIGJvb2wmIGhhc0Fubm90YXRpb25zQmVmb3Jl
LCBib29sJiBoYXNBbm5vdGF0aW9uc0FmdGVyLCBGb250QmFzZWxpbmUpOworICAgIHZvaWQgZmxp
cExpbmVzSW5CbG9ja0RpcmVjdGlvbihMYXlvdXRVbml0IGxpbmVUb3AsIExheW91dFVuaXQgbGlu
ZUJvdHRvbSk7CiAgICAgYm9vbCByZXF1aXJlc0lkZW9ncmFwaGljQmFzZWxpbmUoY29uc3QgR2x5
cGhPdmVyZmxvd0FuZEZhbGxiYWNrRm9udHNNYXAmKSBjb25zdDsKIAogICAgIGludCBjb21wdXRl
T3ZlckFubm90YXRpb25BZGp1c3RtZW50KGludCBhbGxvd2VkUG9zaXRpb24pIGNvbnN0OwogICAg
IGludCBjb21wdXRlVW5kZXJBbm5vdGF0aW9uQWRqdXN0bWVudChpbnQgYWxsb3dlZFBvc2l0aW9u
KSBjb25zdDsKIAotICAgIHZvaWQgY29tcHV0ZU92ZXJmbG93KGludCBsaW5lVG9wLCBpbnQgbGlu
ZUJvdHRvbSwgR2x5cGhPdmVyZmxvd0FuZEZhbGxiYWNrRm9udHNNYXAmKTsKKyAgICB2b2lkIGNv
bXB1dGVPdmVyZmxvdyhMYXlvdXRVbml0IGxpbmVUb3AsIExheW91dFVuaXQgbGluZUJvdHRvbSwg
R2x5cGhPdmVyZmxvd0FuZEZhbGxiYWNrRm9udHNNYXAmKTsKICAgICAKICAgICB2b2lkIHJlbW92
ZUNoaWxkKElubGluZUJveCogY2hpbGQpOwogCkBAIC0xOTgsNyArMTk4LDcgQEAgcHVibGljOgog
ICAgIC8vIHJlc3BlY3RpdmVseSBhcmUgZmxpcHBlZCB3aGVuIGNvbXBhcmVkIHRvIHRoZWlyIHBo
eXNpY2FsIGNvdW50ZXJwYXJ0cy4gIEZvciBleGFtcGxlIG1pblggaXMgb24gdGhlIGxlZnQgaW4g
dmVydGljYWwtbHIsIGJ1dCBpdCBpcyBvbiB0aGUgcmlnaHQgaW4gdmVydGljYWwtcmwuCiAgICAg
TGF5b3V0UmVjdCBsYXlvdXRPdmVyZmxvd1JlY3QoTGF5b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXRV
bml0IGxpbmVCb3R0b20pIGNvbnN0CiAgICAgeyAKLSAgICAgICAgcmV0dXJuIG1fb3ZlcmZsb3cg
PyBtX292ZXJmbG93LT5sYXlvdXRPdmVyZmxvd1JlY3QoKSA6IGVuY2xvc2luZ0ludFJlY3QoZnJh
bWVSZWN0SW5jbHVkaW5nTGluZUhlaWdodChsaW5lVG9wLCBsaW5lQm90dG9tKSk7CisgICAgICAg
IHJldHVybiBtX292ZXJmbG93ID8gbV9vdmVyZmxvdy0+bGF5b3V0T3ZlcmZsb3dSZWN0KCkgOiBl
bmNsb3NpbmdMYXlvdXRSZWN0KGZyYW1lUmVjdEluY2x1ZGluZ0xpbmVIZWlnaHQobGluZVRvcCwg
bGluZUJvdHRvbSkpOwogICAgIH0KICAgICBMYXlvdXRVbml0IGxvZ2ljYWxMZWZ0TGF5b3V0T3Zl
cmZsb3coKSBjb25zdCB7IHJldHVybiBtX292ZXJmbG93ID8gKGlzSG9yaXpvbnRhbCgpID8gbV9v
dmVyZmxvdy0+bWluWExheW91dE92ZXJmbG93KCkgOiBtX292ZXJmbG93LT5taW5ZTGF5b3V0T3Zl
cmZsb3coKSkgOiBsb2dpY2FsTGVmdCgpOyB9CiAgICAgTGF5b3V0VW5pdCBsb2dpY2FsUmlnaHRM
YXlvdXRPdmVyZmxvdygpIGNvbnN0IHsgcmV0dXJuIG1fb3ZlcmZsb3cgPyAoaXNIb3Jpem9udGFs
KCkgPyBtX292ZXJmbG93LT5tYXhYTGF5b3V0T3ZlcmZsb3coKSA6IG1fb3ZlcmZsb3ctPm1heFlM
YXlvdXRPdmVyZmxvdygpKSA6IGNlaWxmKGxvZ2ljYWxSaWdodCgpKTsgfQpAQCAtMjI0LDcgKzIy
NCw3IEBAIHB1YmxpYzoKIAogICAgIExheW91dFJlY3QgdmlzdWFsT3ZlcmZsb3dSZWN0KExheW91
dFVuaXQgbGluZVRvcCwgTGF5b3V0VW5pdCBsaW5lQm90dG9tKSBjb25zdAogICAgIHsgCi0gICAg
ICAgIHJldHVybiBtX292ZXJmbG93ID8gbV9vdmVyZmxvdy0+dmlzdWFsT3ZlcmZsb3dSZWN0KCkg
OiBlbmNsb3NpbmdJbnRSZWN0KGZyYW1lUmVjdEluY2x1ZGluZ0xpbmVIZWlnaHQobGluZVRvcCwg
bGluZUJvdHRvbSkpOworICAgICAgICByZXR1cm4gbV9vdmVyZmxvdyA/IG1fb3ZlcmZsb3ctPnZp
c3VhbE92ZXJmbG93UmVjdCgpIDogZW5jbG9zaW5nTGF5b3V0UmVjdChmcmFtZVJlY3RJbmNsdWRp
bmdMaW5lSGVpZ2h0KGxpbmVUb3AsIGxpbmVCb3R0b20pKTsKICAgICB9CiAgICAgTGF5b3V0VW5p
dCBsb2dpY2FsTGVmdFZpc3VhbE92ZXJmbG93KCkgY29uc3QgeyByZXR1cm4gbV9vdmVyZmxvdyA/
IChpc0hvcml6b250YWwoKSA/IG1fb3ZlcmZsb3ctPm1pblhWaXN1YWxPdmVyZmxvdygpIDogbV9v
dmVyZmxvdy0+bWluWVZpc3VhbE92ZXJmbG93KCkpIDogbG9naWNhbExlZnQoKTsgfQogICAgIExh
eW91dFVuaXQgbG9naWNhbFJpZ2h0VmlzdWFsT3ZlcmZsb3coKSBjb25zdCB7IHJldHVybiBtX292
ZXJmbG93ID8gKGlzSG9yaXpvbnRhbCgpID8gbV9vdmVyZmxvdy0+bWF4WFZpc3VhbE92ZXJmbG93
KCkgOiBtX292ZXJmbG93LT5tYXhZVmlzdWFsT3ZlcmZsb3coKSkgOiBjZWlsZihsb2dpY2FsUmln
aHQoKSk7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5j
cHAJKHJldmlzaW9uIDkwNzc4KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRl
eHRCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNDUsNyArMzQ1LDcgQEAgYm9vbCBJbmxpbmVU
ZXh0Qm94Ojppc0xpbmVCcmVhaygpIGNvbnN0CiAgICAgcmV0dXJuIHJlbmRlcmVyKCktPmlzQlIo
KSB8fCAocmVuZGVyZXIoKS0+c3R5bGUoKS0+cHJlc2VydmVOZXdsaW5lKCkgJiYgbGVuKCkgPT0g
MSAmJiAoKnRleHRSZW5kZXJlcigpLT50ZXh0KCkpW3N0YXJ0KCldID09ICdcbicpOwogfQogCi1i
b29sIElubGluZVRleHRCb3g6Om5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0
VGVzdFJlc3VsdCYgcmVzdWx0LCBjb25zdCBMYXlvdXRQb2ludCYgcG9pbnRJbkNvbnRhaW5lciwg
Y29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBpbnQgLyogbGluZVRvcCAqLywg
aW50IC8qbGluZUJvdHRvbSovKQorYm9vbCBJbmxpbmVUZXh0Qm94Ojpub2RlQXRQb2ludChjb25z
dCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgY29uc3QgTGF5b3V0UG9p
bnQmIHBvaW50SW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNl
dCwgTGF5b3V0VW5pdCAvKiBsaW5lVG9wICovLCBMYXlvdXRVbml0IC8qbGluZUJvdHRvbSovKQog
ewogICAgIGlmIChpc0xpbmVCcmVhaygpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJveExpc3QuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQm94TGlzdC5jcHAJKHJldmlz
aW9uIDkwNzc4KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCb3hMaXN0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcxLDcgKzE3MSw3IEBAIGJvb2wgUmVuZGVyTGluZUJv
eExpc3Q6OnJhbmdlSW50ZXJzZWN0c1IKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBSZW5k
ZXJMaW5lQm94TGlzdDo6YW55TGluZUludGVyc2VjdHNSZWN0KFJlbmRlckJveE1vZGVsT2JqZWN0
KiByZW5kZXJlciwgY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW50UG9pbnQmIG9mZnNldCwg
Ym9vbCB1c2VQcmludFJlY3QsIGludCBvdXRsaW5lU2l6ZSkgY29uc3QKK2Jvb2wgUmVuZGVyTGlu
ZUJveExpc3Q6OmFueUxpbmVJbnRlcnNlY3RzUmVjdChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVu
ZGVyZXIsIGNvbnN0IExheW91dFJlY3QmIHJlY3QsIGNvbnN0IExheW91dFBvaW50JiBvZmZzZXQs
IGJvb2wgdXNlUHJpbnRSZWN0LCBMYXlvdXRVbml0IG91dGxpbmVTaXplKSBjb25zdAogewogICAg
IC8vIFdlIGNhbiBjaGVjayB0aGUgZmlyc3QgYm94IGFuZCBsYXN0IGJveCBhbmQgYXZvaWQgcGFp
bnRpbmcvaGl0IHRlc3RpbmcgaWYgd2UgZG9uJ3QKICAgICAvLyBpbnRlcnNlY3QuICBUaGlzIGlz
IGEgcXVpY2sgc2hvcnQtY2lyY3VpdCB0aGF0IHdlIGNhbiB0YWtlIHRvIGF2b2lkIHdhbGtpbmcg
YW55IGxpbmVzLgpAQCAtMTc5LDE0ICsxNzksMTQgQEAgYm9vbCBSZW5kZXJMaW5lQm94TGlzdDo6
YW55TGluZUludGVyc2VjdAogICAgIC8vIGlmIHNvbWUgbGluZSBpbiB0aGUgbWlkZGxlIGhhcyBh
IGh1Z2Ugb3ZlcmZsb3csIGl0IG1pZ2h0IGFjdHVhbGx5IGV4dGVuZCBiZWxvdyB0aGUgbGFzdCBs
aW5lLgogICAgIFJvb3RJbmxpbmVCb3gqIGZpcnN0Um9vdEJveCA9IGZpcnN0TGluZUJveCgpLT5y
b290KCk7CiAgICAgUm9vdElubGluZUJveCogbGFzdFJvb3RCb3ggPSBsYXN0TGluZUJveCgpLT5y
b290KCk7Ci0gICAgaW50IGZpcnN0TGluZVRvcCA9IGZpcnN0TGluZUJveCgpLT5sb2dpY2FsVG9w
VmlzdWFsT3ZlcmZsb3coZmlyc3RSb290Qm94LT5saW5lVG9wKCkpOworICAgIExheW91dFVuaXQg
Zmlyc3RMaW5lVG9wID0gZmlyc3RMaW5lQm94KCktPmxvZ2ljYWxUb3BWaXN1YWxPdmVyZmxvdyhm
aXJzdFJvb3RCb3gtPmxpbmVUb3AoKSk7CiAgICAgaWYgKHVzZVByaW50UmVjdCAmJiAhZmlyc3RM
aW5lQm94KCktPnBhcmVudCgpKQogICAgICAgICBmaXJzdExpbmVUb3AgPSBtaW4oZmlyc3RMaW5l
VG9wLCBmaXJzdExpbmVCb3goKS0+cm9vdCgpLT5saW5lVG9wKCkpOwotICAgIGludCBsYXN0TGlu
ZUJvdHRvbSA9IGxhc3RMaW5lQm94KCktPmxvZ2ljYWxCb3R0b21WaXN1YWxPdmVyZmxvdyhsYXN0
Um9vdEJveC0+bGluZUJvdHRvbSgpKTsKKyAgICBMYXlvdXRVbml0IGxhc3RMaW5lQm90dG9tID0g
bGFzdExpbmVCb3goKS0+bG9naWNhbEJvdHRvbVZpc3VhbE92ZXJmbG93KGxhc3RSb290Qm94LT5s
aW5lQm90dG9tKCkpOwogICAgIGlmICh1c2VQcmludFJlY3QgJiYgIWxhc3RMaW5lQm94KCktPnBh
cmVudCgpKQogICAgICAgICBsYXN0TGluZUJvdHRvbSA9IG1heChsYXN0TGluZUJvdHRvbSwgbGFz
dExpbmVCb3goKS0+cm9vdCgpLT5saW5lQm90dG9tKCkpOwotICAgIGludCBsb2dpY2FsVG9wID0g
Zmlyc3RMaW5lVG9wIC0gb3V0bGluZVNpemU7Ci0gICAgaW50IGxvZ2ljYWxCb3R0b20gPSBvdXRs
aW5lU2l6ZSArIGxhc3RMaW5lQm90dG9tOworICAgIExheW91dFVuaXQgbG9naWNhbFRvcCA9IGZp
cnN0TGluZVRvcCAtIG91dGxpbmVTaXplOworICAgIExheW91dFVuaXQgbG9naWNhbEJvdHRvbSA9
IG91dGxpbmVTaXplICsgbGFzdExpbmVCb3R0b207CiAgICAgCiAgICAgcmV0dXJuIHJhbmdlSW50
ZXJzZWN0c1JlY3QocmVuZGVyZXIsIGxvZ2ljYWxUb3AsIGxvZ2ljYWxCb3R0b20sIHJlY3QsIG9m
ZnNldCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJveExp
c3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJv
eExpc3QuaAkocmV2aXNpb24gOTA3NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGluZUJveExpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtNjcsOSArNjcsOSBAQCBwdWJsaWM6
CiAgICAgYm9vbCBoaXRUZXN0KFJlbmRlckJveE1vZGVsT2JqZWN0KiwgY29uc3QgSGl0VGVzdFJl
cXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50SW5Db250YWlu
ZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgSGl0VGVzdEFjdGlvbikg
Y29uc3Q7CiAgICAgCiBwcml2YXRlOgotICAgIGJvb2wgYW55TGluZUludGVyc2VjdHNSZWN0KFJl
bmRlckJveE1vZGVsT2JqZWN0KiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFBvaW50JiwgYm9v
bCB1c2VQcmludFJlY3QgPSBmYWxzZSwgaW50IG91dGxpbmVTaXplID0gMCkgY29uc3Q7Ci0gICAg
Ym9vbCBsaW5lSW50ZXJzZWN0c0RpcnR5UmVjdChSZW5kZXJCb3hNb2RlbE9iamVjdCosIElubGlu
ZUZsb3dCb3gqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRQb2ludCYpIGNvbnN0OwotICAg
IGJvb2wgcmFuZ2VJbnRlcnNlY3RzUmVjdChSZW5kZXJCb3hNb2RlbE9iamVjdCosIGludCBsb2dp
Y2FsVG9wLCBpbnQgbG9naWNhbEJvdHRvbSwgY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFBvaW50
JikgY29uc3Q7CisgICAgYm9vbCBhbnlMaW5lSW50ZXJzZWN0c1JlY3QoUmVuZGVyQm94TW9kZWxP
YmplY3QqLCBjb25zdCBMYXlvdXRSZWN0JiwgY29uc3QgTGF5b3V0UG9pbnQmLCBib29sIHVzZVBy
aW50UmVjdCA9IGZhbHNlLCBMYXlvdXRVbml0IG91dGxpbmVTaXplID0gMCkgY29uc3Q7CisgICAg
Ym9vbCBsaW5lSW50ZXJzZWN0c0RpcnR5UmVjdChSZW5kZXJCb3hNb2RlbE9iamVjdCosIElubGlu
ZUZsb3dCb3gqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIGNvbnN0Owor
ICAgIGJvb2wgcmFuZ2VJbnRlcnNlY3RzUmVjdChSZW5kZXJCb3hNb2RlbE9iamVjdCosIExheW91
dFVuaXQgbG9naWNhbFRvcCwgTGF5b3V0VW5pdCBsb2dpY2FsQm90dG9tLCBjb25zdCBMYXlvdXRS
ZWN0JiwgY29uc3QgTGF5b3V0UG9pbnQmKSBjb25zdDsKIAogICAgIC8vIEZvciBibG9jayBmbG93
cywgZWFjaCBib3ggcmVwcmVzZW50cyB0aGUgcm9vdCBpbmxpbmUgYm94IGZvciBhIGxpbmUgaW4g
dGhlCiAgICAgLy8gcGFyYWdyYXBoLgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxpc3RJdGVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGlzdEl0ZW0uY3BwCShyZXZpc2lvbiA5MDc3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMaXN0SXRlbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1MSwzMSArMjUx
LDMxIEBAIHZvaWQgUmVuZGVyTGlzdEl0ZW06OmFkZE92ZXJmbG93RnJvbUNoaWwKIHZvaWQgUmVu
ZGVyTGlzdEl0ZW06OnBvc2l0aW9uTGlzdE1hcmtlcigpCiB7CiAgICAgaWYgKG1fbWFya2VyICYm
IG1fbWFya2VyLT5wYXJlbnQoKS0+aXNCb3goKSAmJiAhbV9tYXJrZXItPmlzSW5zaWRlKCkgJiYg
bV9tYXJrZXItPmlubGluZUJveFdyYXBwZXIoKSkgewotICAgICAgICBpbnQgbWFya2VyT2xkTG9n
aWNhbExlZnQgPSBtX21hcmtlci0+bG9naWNhbExlZnQoKTsKLSAgICAgICAgaW50IGJsb2NrT2Zm
c2V0ID0gMDsKLSAgICAgICAgaW50IGxpbmVPZmZzZXQgPSAwOworICAgICAgICBMYXlvdXRVbml0
IG1hcmtlck9sZExvZ2ljYWxMZWZ0ID0gbV9tYXJrZXItPmxvZ2ljYWxMZWZ0KCk7CisgICAgICAg
IExheW91dFVuaXQgYmxvY2tPZmZzZXQgPSAwOworICAgICAgICBMYXlvdXRVbml0IGxpbmVPZmZz
ZXQgPSAwOwogICAgICAgICBmb3IgKFJlbmRlckJveCogbyA9IG1fbWFya2VyLT5wYXJlbnRCb3go
KTsgbyAhPSB0aGlzOyBvID0gby0+cGFyZW50Qm94KCkpIHsKICAgICAgICAgICAgIGJsb2NrT2Zm
c2V0ICs9IG8tPmxvZ2ljYWxUb3AoKTsKICAgICAgICAgICAgIGxpbmVPZmZzZXQgKz0gby0+bG9n
aWNhbExlZnQoKTsKICAgICAgICAgfQogCiAgICAgICAgIGJvb2wgYWRqdXN0T3ZlcmZsb3cgPSBm
YWxzZTsKLSAgICAgICAgaW50IG1hcmtlckxvZ2ljYWxMZWZ0OworICAgICAgICBMYXlvdXRVbml0
IG1hcmtlckxvZ2ljYWxMZWZ0OwogICAgICAgICBSb290SW5saW5lQm94KiByb290ID0gbV9tYXJr
ZXItPmlubGluZUJveFdyYXBwZXIoKS0+cm9vdCgpOwogICAgICAgICBib29sIGhpdFNlbGZQYWlu
dGluZ0xheWVyID0gZmFsc2U7CiAgICAgICAgIAogICAgICAgICBSb290SW5saW5lQm94KiByb290
Qm94ID0gbV9tYXJrZXItPmlubGluZUJveFdyYXBwZXIoKS0+cm9vdCgpOwotICAgICAgICBpbnQg
bGluZVRvcCA9IHJvb3RCb3gtPmxpbmVUb3AoKTsKLSAgICAgICAgaW50IGxpbmVCb3R0b20gPSBy
b290Qm94LT5saW5lQm90dG9tKCk7CisgICAgICAgIExheW91dFVuaXQgbGluZVRvcCA9IHJvb3RC
b3gtPmxpbmVUb3AoKTsKKyAgICAgICAgTGF5b3V0VW5pdCBsaW5lQm90dG9tID0gcm9vdEJveC0+
bGluZUJvdHRvbSgpOwogCiAgICAgICAgIC8vIEZJWE1FOiBOZWVkIHRvIGFjY291bnQgZm9yIHJl
bGF0aXZlIHBvc2l0aW9uaW5nIGluIHRoZSBsYXlvdXQgb3ZlcmZsb3cuCiAgICAgICAgIGlmIChz
dHlsZSgpLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkpIHsKLSAgICAgICAgICAgIGludCBsZWZ0
TGluZU9mZnNldCA9IGxvZ2ljYWxMZWZ0T2Zmc2V0Rm9yTGluZShibG9ja09mZnNldCwgbG9naWNh
bExlZnRPZmZzZXRGb3JMaW5lKGJsb2NrT2Zmc2V0LCBmYWxzZSksIGZhbHNlKTsKKyAgICAgICAg
ICAgIExheW91dFVuaXQgbGVmdExpbmVPZmZzZXQgPSBsb2dpY2FsTGVmdE9mZnNldEZvckxpbmUo
YmxvY2tPZmZzZXQsIGxvZ2ljYWxMZWZ0T2Zmc2V0Rm9yTGluZShibG9ja09mZnNldCwgZmFsc2Up
LCBmYWxzZSk7CiAgICAgICAgICAgICBtYXJrZXJMb2dpY2FsTGVmdCA9IGxlZnRMaW5lT2Zmc2V0
IC0gbGluZU9mZnNldCAtIHBhZGRpbmdTdGFydCgpIC0gYm9yZGVyU3RhcnQoKSArIG1fbWFya2Vy
LT5tYXJnaW5TdGFydCgpOwogICAgICAgICAgICAgbV9tYXJrZXItPmlubGluZUJveFdyYXBwZXIo
KS0+YWRqdXN0TGluZURpcmVjdGlvblBvc2l0aW9uKG1hcmtlckxvZ2ljYWxMZWZ0IC0gbWFya2Vy
T2xkTG9naWNhbExlZnQpOwogICAgICAgICAgICAgZm9yIChJbmxpbmVGbG93Qm94KiBib3ggPSBt
X21hcmtlci0+aW5saW5lQm94V3JhcHBlcigpLT5wYXJlbnQoKTsgYm94OyBib3ggPSBib3gtPnBh
cmVudCgpKSB7Ci0gICAgICAgICAgICAgICAgSW50UmVjdCBuZXdMb2dpY2FsVmlzdWFsT3ZlcmZs
b3dSZWN0ID0gYm94LT5sb2dpY2FsVmlzdWFsT3ZlcmZsb3dSZWN0KGxpbmVUb3AsIGxpbmVCb3R0
b20pOwotICAgICAgICAgICAgICAgIEludFJlY3QgbmV3TG9naWNhbExheW91dE92ZXJmbG93UmVj
dCA9IGJveC0+bG9naWNhbExheW91dE92ZXJmbG93UmVjdChsaW5lVG9wLCBsaW5lQm90dG9tKTsK
KyAgICAgICAgICAgICAgICBMYXlvdXRSZWN0IG5ld0xvZ2ljYWxWaXN1YWxPdmVyZmxvd1JlY3Qg
PSBib3gtPmxvZ2ljYWxWaXN1YWxPdmVyZmxvd1JlY3QobGluZVRvcCwgbGluZUJvdHRvbSk7Cisg
ICAgICAgICAgICAgICAgTGF5b3V0UmVjdCBuZXdMb2dpY2FsTGF5b3V0T3ZlcmZsb3dSZWN0ID0g
Ym94LT5sb2dpY2FsTGF5b3V0T3ZlcmZsb3dSZWN0KGxpbmVUb3AsIGxpbmVCb3R0b20pOwogICAg
ICAgICAgICAgICAgIGlmIChtYXJrZXJMb2dpY2FsTGVmdCA8IG5ld0xvZ2ljYWxWaXN1YWxPdmVy
Zmxvd1JlY3QueCgpICYmICFoaXRTZWxmUGFpbnRpbmdMYXllcikgewogICAgICAgICAgICAgICAg
ICAgICBuZXdMb2dpY2FsVmlzdWFsT3ZlcmZsb3dSZWN0LnNldFdpZHRoKG5ld0xvZ2ljYWxWaXN1
YWxPdmVyZmxvd1JlY3QubWF4WCgpIC0gbWFya2VyTG9naWNhbExlZnQpOwogICAgICAgICAgICAg
ICAgICAgICBuZXdMb2dpY2FsVmlzdWFsT3ZlcmZsb3dSZWN0LnNldFgobWFya2VyTG9naWNhbExl
ZnQpOwpAQCAtMjk0LDEyICsyOTQsMTIgQEAgdm9pZCBSZW5kZXJMaXN0SXRlbTo6cG9zaXRpb25M
aXN0TWFya2VyKAogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
bWFya2VyTG9naWNhbExlZnQgPSBtX21hcmtlci0+bG9naWNhbExlZnQoKSArIHBhZGRpbmdTdGFy
dCgpICsgYm9yZGVyU3RhcnQoKSArIG1fbWFya2VyLT5tYXJnaW5FbmQoKTsKLSAgICAgICAgICAg
IGludCByaWdodExpbmVPZmZzZXQgPSBsb2dpY2FsUmlnaHRPZmZzZXRGb3JMaW5lKGJsb2NrT2Zm
c2V0LCBsb2dpY2FsUmlnaHRPZmZzZXRGb3JMaW5lKGJsb2NrT2Zmc2V0LCBmYWxzZSksIGZhbHNl
KTsKKyAgICAgICAgICAgIExheW91dFVuaXQgcmlnaHRMaW5lT2Zmc2V0ID0gbG9naWNhbFJpZ2h0
T2Zmc2V0Rm9yTGluZShibG9ja09mZnNldCwgbG9naWNhbFJpZ2h0T2Zmc2V0Rm9yTGluZShibG9j
a09mZnNldCwgZmFsc2UpLCBmYWxzZSk7CiAgICAgICAgICAgICBtYXJrZXJMb2dpY2FsTGVmdCA9
IHJpZ2h0TGluZU9mZnNldCAtIGxpbmVPZmZzZXQgKyBwYWRkaW5nU3RhcnQoKSArIGJvcmRlclN0
YXJ0KCkgKyBtX21hcmtlci0+bWFyZ2luRW5kKCk7CiAgICAgICAgICAgICBtX21hcmtlci0+aW5s
aW5lQm94V3JhcHBlcigpLT5hZGp1c3RMaW5lRGlyZWN0aW9uUG9zaXRpb24obWFya2VyTG9naWNh
bExlZnQgLSBtYXJrZXJPbGRMb2dpY2FsTGVmdCk7CiAgICAgICAgICAgICBmb3IgKElubGluZUZs
b3dCb3gqIGJveCA9IG1fbWFya2VyLT5pbmxpbmVCb3hXcmFwcGVyKCktPnBhcmVudCgpOyBib3g7
IGJveCA9IGJveC0+cGFyZW50KCkpIHsKLSAgICAgICAgICAgICAgICBJbnRSZWN0IG5ld0xvZ2lj
YWxWaXN1YWxPdmVyZmxvd1JlY3QgPSBib3gtPmxvZ2ljYWxWaXN1YWxPdmVyZmxvd1JlY3QobGlu
ZVRvcCwgbGluZUJvdHRvbSk7Ci0gICAgICAgICAgICAgICAgSW50UmVjdCBuZXdMb2dpY2FsTGF5
b3V0T3ZlcmZsb3dSZWN0ID0gYm94LT5sb2dpY2FsTGF5b3V0T3ZlcmZsb3dSZWN0KGxpbmVUb3As
IGxpbmVCb3R0b20pOworICAgICAgICAgICAgICAgIExheW91dFJlY3QgbmV3TG9naWNhbFZpc3Vh
bE92ZXJmbG93UmVjdCA9IGJveC0+bG9naWNhbFZpc3VhbE92ZXJmbG93UmVjdChsaW5lVG9wLCBs
aW5lQm90dG9tKTsKKyAgICAgICAgICAgICAgICBMYXlvdXRSZWN0IG5ld0xvZ2ljYWxMYXlvdXRP
dmVyZmxvd1JlY3QgPSBib3gtPmxvZ2ljYWxMYXlvdXRPdmVyZmxvd1JlY3QobGluZVRvcCwgbGlu
ZUJvdHRvbSk7CiAgICAgICAgICAgICAgICAgaWYgKG1hcmtlckxvZ2ljYWxMZWZ0ICsgbV9tYXJr
ZXItPmxvZ2ljYWxXaWR0aCgpID4gbmV3TG9naWNhbFZpc3VhbE92ZXJmbG93UmVjdC5tYXhYKCkg
JiYgIWhpdFNlbGZQYWludGluZ0xheWVyKSB7CiAgICAgICAgICAgICAgICAgICAgIG5ld0xvZ2lj
YWxWaXN1YWxPdmVyZmxvd1JlY3Quc2V0V2lkdGgobWFya2VyTG9naWNhbExlZnQgKyBtX21hcmtl
ci0+bG9naWNhbFdpZHRoKCkgLSBuZXdMb2dpY2FsVmlzdWFsT3ZlcmZsb3dSZWN0LngoKSk7CiAg
ICAgICAgICAgICAgICAgICAgIGlmIChib3ggPT0gcm9vdCkKQEAgLTMxOCw3ICszMTgsNyBAQCB2
b2lkIFJlbmRlckxpc3RJdGVtOjpwb3NpdGlvbkxpc3RNYXJrZXIoCiAgICAgICAgIH0KIAogICAg
ICAgICBpZiAoYWRqdXN0T3ZlcmZsb3cpIHsKLSAgICAgICAgICAgIEludFJlY3QgbWFya2VyUmVj
dChtYXJrZXJMb2dpY2FsTGVmdCArIGxpbmVPZmZzZXQsIGJsb2NrT2Zmc2V0LCBtX21hcmtlci0+
d2lkdGgoKSwgbV9tYXJrZXItPmhlaWdodCgpKTsKKyAgICAgICAgICAgIExheW91dFJlY3QgbWFy
a2VyUmVjdChtYXJrZXJMb2dpY2FsTGVmdCArIGxpbmVPZmZzZXQsIGJsb2NrT2Zmc2V0LCBtX21h
cmtlci0+d2lkdGgoKSwgbV9tYXJrZXItPmhlaWdodCgpKTsKICAgICAgICAgICAgIGlmICghc3R5
bGUoKS0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkKICAgICAgICAgICAgICAgICBtYXJrZXJS
ZWN0ID0gbWFya2VyUmVjdC50cmFuc3Bvc2VkUmVjdCgpOwogICAgICAgICAgICAgUmVuZGVyQm94
KiBvID0gbV9tYXJrZXI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4
dENvbnRyb2wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGV4dENvbnRyb2wuaAkocmV2aXNpb24gOTA3NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGV4dENvbnRyb2wuaAkod29ya2luZyBjb3B5KQpAQCAtNzMsNyArNzMsNyBAQCBw
cm90ZWN0ZWQ6CiAgICAgc3RhdGljIGJvb2wgaGFzVmFsaWRBdmdDaGFyV2lkdGgoQXRvbWljU3Ry
aW5nIGZhbWlseSk7CiAgICAgdmlydHVhbCBmbG9hdCBnZXRBdmdDaGFyV2lkdGgoQXRvbWljU3Ry
aW5nIGZhbWlseSk7CiAgICAgdmlydHVhbCBpbnQgcHJlZmVycmVkQ29udGVudFdpZHRoKGZsb2F0
IGNoYXJXaWR0aCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RDb250cm9sSGVp
Z2h0QmFzZWRPbkxpbmVIZWlnaHQoaW50IGxpbmVIZWlnaHQpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgYWRqdXN0Q29udHJvbEhlaWdodEJhc2VkT25MaW5lSGVpZ2h0KExheW91dFVuaXQgbGluZUhl
aWdodCkgPSAwOwogICAgIHZpcnR1YWwgUmVuZGVyU3R5bGUqIHRleHRCYXNlU3R5bGUoKSBjb25z
dCA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRnJvbUVsZW1lbnQoKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVs
dGlMaW5lLmNwcAkocmV2aXNpb24gOTA3NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Miw3ICs5
Miw3IEBAIGludCBSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZTo6cHJlZmVycmUKICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8aW50PihjZWlsZihjaGFyV2lkdGggKiBmYWN0b3IpKSArIHNjcm9sbGJh
clRoaWNrbmVzcygpOwogfQogCi12b2lkIFJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lOjphZGp1
c3RDb250cm9sSGVpZ2h0QmFzZWRPbkxpbmVIZWlnaHQoaW50IGxpbmVIZWlnaHQpCit2b2lkIFJl
bmRlclRleHRDb250cm9sTXVsdGlMaW5lOjphZGp1c3RDb250cm9sSGVpZ2h0QmFzZWRPbkxpbmVI
ZWlnaHQoTGF5b3V0VW5pdCBsaW5lSGVpZ2h0KQogewogICAgIHNldEhlaWdodChoZWlnaHQoKSAr
IGxpbmVIZWlnaHQgKiBzdGF0aWNfY2FzdDxIVE1MVGV4dEFyZWFFbGVtZW50Kj4obm9kZSgpKS0+
cm93cygpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29u
dHJvbFNpbmdsZUxpbmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwCShyZXZpc2lvbiA5MDc3OCkKKysrIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00ODAsNyArNDgwLDcgQEAgaW50IFJlbmRlclRleHRDb250cm9sU2lu
Z2xlTGluZTo6cHJlZmVycgogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXZvaWQgUmVuZGVyVGV4
dENvbnRyb2xTaW5nbGVMaW5lOjphZGp1c3RDb250cm9sSGVpZ2h0QmFzZWRPbkxpbmVIZWlnaHQo
aW50IGxpbmVIZWlnaHQpCit2b2lkIFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6YWRqdXN0
Q29udHJvbEhlaWdodEJhc2VkT25MaW5lSGVpZ2h0KExheW91dFVuaXQgbGluZUhlaWdodCkKIHsK
ICAgICBIVE1MRWxlbWVudCogcmVzdWx0c0J1dHRvbiA9IHJlc3VsdHNCdXR0b25FbGVtZW50KCk7
CiAgICAgaWYgKFJlbmRlckJveCogcmVzdWx0c1JlbmRlcmVyID0gcmVzdWx0c0J1dHRvbiA/IHJl
c3VsdHNCdXR0b24tPnJlbmRlckJveCgpIDogMCkgewpJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuaAkocmV2aXNp
b24gOTA3NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xT
aW5nbGVMaW5lLmgJKHdvcmtpbmcgY29weSkKQEAgLTgxLDcgKzgxLDcgQEAgcHJpdmF0ZToKICAg
ICBpbnQgdGV4dEJsb2NrV2lkdGgoKSBjb25zdDsKICAgICB2aXJ0dWFsIGZsb2F0IGdldEF2Z0No
YXJXaWR0aChBdG9taWNTdHJpbmcgZmFtaWx5KTsKICAgICB2aXJ0dWFsIGludCBwcmVmZXJyZWRD
b250ZW50V2lkdGgoZmxvYXQgY2hhcldpZHRoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgYWRq
dXN0Q29udHJvbEhlaWdodEJhc2VkT25MaW5lSGVpZ2h0KGludCBsaW5lSGVpZ2h0KTsKKyAgICB2
aXJ0dWFsIHZvaWQgYWRqdXN0Q29udHJvbEhlaWdodEJhc2VkT25MaW5lSGVpZ2h0KExheW91dFVu
aXQgbGluZUhlaWdodCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRnJvbUVsZW1lbnQoKTsK
ICAgICB2aXJ0dWFsIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBS
ZW5kZXJTdHlsZSogb2xkU3R5bGUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jv
b3RJbmxpbmVCb3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
b290SW5saW5lQm94LmNwcAkocmV2aXNpb24gOTA3NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUm9vdElubGluZUJveC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4OSw3ICsxODksNyBA
QCB2b2lkIFJvb3RJbmxpbmVCb3g6OnBhaW50KFBhaW50SW5mbyYgcGFpCiAjZW5kaWYKIH0KIAot
Ym9vbCBSb290SW5saW5lQm94Ojpub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVx
dWVzdCwgSGl0VGVzdFJlc3VsdCYgcmVzdWx0LCBjb25zdCBMYXlvdXRQb2ludCYgcG9pbnRJbkNv
bnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBpbnQgbGluZVRv
cCwgaW50IGxpbmVCb3R0b20pCitib29sIFJvb3RJbmxpbmVCb3g6Om5vZGVBdFBvaW50KGNvbnN0
IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdWx0JiByZXN1bHQsIGNvbnN0IExh
eW91dFBvaW50JiBwb2ludEluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0
ZWRPZmZzZXQsIExheW91dFVuaXQgbGluZVRvcCwgTGF5b3V0VW5pdCBsaW5lQm90dG9tKQogewog
ICAgIGlmIChoYXNFbGxpcHNpc0JveCgpICYmIHZpc2libGVUb0hpdFRlc3RpbmcoKSkgewogICAg
ICAgICBpZiAoZWxsaXBzaXNCb3goKS0+bm9kZUF0UG9pbnQocmVxdWVzdCwgcmVzdWx0LCBwb2lu
dEluQ29udGFpbmVyLCBhY2N1bXVsYXRlZE9mZnNldCwgbGluZVRvcCwgbGluZUJvdHRvbSkpIHsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guaAkocmV2aXNpb24g
OTA3NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00Nyw4ICs0Nyw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBh
ZGp1c3RQb3NpdGlvbihmbG9hdCBkeCwgZmxvYXQgZHkpOwogCi0gICAgaW50IGxpbmVUb3AoKSBj
b25zdCB7IHJldHVybiBtX2xpbmVUb3A7IH0KLSAgICBpbnQgbGluZUJvdHRvbSgpIGNvbnN0IHsg
cmV0dXJuIG1fbGluZUJvdHRvbTsgfQorICAgIExheW91dFVuaXQgbGluZVRvcCgpIGNvbnN0IHsg
cmV0dXJuIG1fbGluZVRvcDsgfQorICAgIExheW91dFVuaXQgbGluZUJvdHRvbSgpIGNvbnN0IHsg
cmV0dXJuIG1fbGluZUJvdHRvbTsgfQogCiAgICAgaW50IHBhZ2luYXRpb25TdHJ1dCgpIGNvbnN0
IHsgcmV0dXJuIG1fcGFnaW5hdGlvblN0cnV0OyB9CiAgICAgdm9pZCBzZXRQYWdpbmF0aW9uU3Ry
dXQoaW50IHMpIHsgbV9wYWdpbmF0aW9uU3RydXQgPSBzOyB9CkBAIC02MCw3ICs2MCwxMSBAQCBw
dWJsaWM6CiAgICAgaW50IGJsb2NrRGlyZWN0aW9uUG9pbnRJbkxpbmUoKSBjb25zdCB7IHJldHVy
biBtYXgobGluZVRvcCgpLCBzZWxlY3Rpb25Ub3AoKSk7IH0KIAogICAgIGludCBhbGlnbkJveGVz
SW5CbG9ja0RpcmVjdGlvbihpbnQgaGVpZ2h0T2ZCbG9jaywgR2x5cGhPdmVyZmxvd0FuZEZhbGxi
YWNrRm9udHNNYXAmLCBWZXJ0aWNhbFBvc2l0aW9uQ2FjaGUmKTsKLSAgICB2b2lkIHNldExpbmVU
b3BCb3R0b21Qb3NpdGlvbnMoaW50IHRvcCwgaW50IGJvdHRvbSk7CisgICAgdm9pZCBzZXRMaW5l
VG9wQm90dG9tUG9zaXRpb25zKExheW91dFVuaXQgdG9wLCBMYXlvdXRVbml0IGJvdHRvbSkKKyAg
ICB7IAorICAgICAgICBtX2xpbmVUb3AgPSB0b3A7IAorICAgICAgICBtX2xpbmVCb3R0b20gPSBi
b3R0b207IAorICAgIH0KIAogICAgIHZpcnR1YWwgUmVuZGVyTGluZUJveExpc3QqIHJlbmRlcmVy
TGluZUJveGVzKCkgY29uc3Q7CiAKQEAgLTk4LDcgKzEwMiw3IEBAIHB1YmxpYzoKICNlbmRpZgog
CiAgICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jiwg
TGF5b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXRVbml0IGxpbmVCb3R0b20pOwotICAgIHZpcnR1YWwg
Ym9vbCBub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBj
b25zdCBMYXlvdXRQb2ludCYgcG9pbnRJbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFj
Y3VtdWxhdGVkT2Zmc2V0LCBpbnQgbGluZVRvcCwgaW50IGxpbmVCb3R0b20pOworICAgIHZpcnR1
YWwgYm9vbCBub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQm
LCBjb25zdCBMYXlvdXRQb2ludCYgcG9pbnRJbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQm
IGFjY3VtdWxhdGVkT2Zmc2V0LCBMYXlvdXRVbml0IGxpbmVUb3AsIExheW91dFVuaXQgbGluZUJv
dHRvbSk7CiAKICAgICBib29sIGhhc1NlbGVjdGVkQ2hpbGRyZW4oKSBjb25zdCB7IHJldHVybiBt
X2hhc1NlbGVjdGVkQ2hpbGRyZW5PckNhbkhhdmVMZWFkaW5nRXhwYW5zaW9uOyB9CiAgICAgdm9p
ZCBzZXRIYXNTZWxlY3RlZENoaWxkcmVuKGJvb2wgaGFzU2VsZWN0ZWRDaGlsZHJlbikgeyBtX2hh
c1NlbGVjdGVkQ2hpbGRyZW5PckNhbkhhdmVMZWFkaW5nRXhwYW5zaW9uID0gaGFzU2VsZWN0ZWRD
aGlsZHJlbjsgfQpAQCAtMTQ1LDE5ICsxNDksMTkgQEAgcHVibGljOgogICAgIGJvb2wgZml0c1Rv
R2x5cGhzKCkgY29uc3Q7CiAgICAgYm9vbCBpbmNsdWRlc1Jvb3RMaW5lQm94Rm9udE9yTGVhZGlu
ZygpIGNvbnN0OwogICAgIAotICAgIGludCBsb2dpY2FsVG9wVmlzdWFsT3ZlcmZsb3coKSBjb25z
dAorICAgIExheW91dFVuaXQgbG9naWNhbFRvcFZpc3VhbE92ZXJmbG93KCkgY29uc3QKICAgICB7
CiAgICAgICAgIHJldHVybiBJbmxpbmVGbG93Qm94Ojpsb2dpY2FsVG9wVmlzdWFsT3ZlcmZsb3co
bGluZVRvcCgpKTsKICAgICB9Ci0gICAgaW50IGxvZ2ljYWxCb3R0b21WaXN1YWxPdmVyZmxvdygp
IGNvbnN0CisgICAgTGF5b3V0VW5pdCBsb2dpY2FsQm90dG9tVmlzdWFsT3ZlcmZsb3coKSBjb25z
dAogICAgIHsKICAgICAgICAgcmV0dXJuIElubGluZUZsb3dCb3g6OmxvZ2ljYWxCb3R0b21WaXN1
YWxPdmVyZmxvdyhsaW5lQm90dG9tKCkpOwogICAgIH0KLSAgICBpbnQgbG9naWNhbFRvcExheW91
dE92ZXJmbG93KCkgY29uc3QKKyAgICBMYXlvdXRVbml0IGxvZ2ljYWxUb3BMYXlvdXRPdmVyZmxv
dygpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gSW5saW5lRmxvd0JveDo6bG9naWNhbFRv
cExheW91dE92ZXJmbG93KGxpbmVUb3AoKSk7CiAgICAgfQotICAgIGludCBsb2dpY2FsQm90dG9t
TGF5b3V0T3ZlcmZsb3coKSBjb25zdAorICAgIExheW91dFVuaXQgbG9naWNhbEJvdHRvbUxheW91
dE92ZXJmbG93KCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBJbmxpbmVGbG93Qm94Ojps
b2dpY2FsQm90dG9tTGF5b3V0T3ZlcmZsb3cobGluZUJvdHRvbSgpKTsKICAgICB9CkBAIC0xNzks
OCArMTgzLDggQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX2xpbmVCcmVha1BvczsKICAgICBS
ZWZQdHI8QmlkaUNvbnRleHQ+IG1fbGluZUJyZWFrQ29udGV4dDsKIAotICAgIGludCBtX2xpbmVU
b3A7Ci0gICAgaW50IG1fbGluZUJvdHRvbTsKKyAgICBMYXlvdXRVbml0IG1fbGluZVRvcDsKKyAg
ICBMYXlvdXRVbml0IG1fbGluZUJvdHRvbTsKIAogICAgIGludCBtX3BhZ2luYXRpb25TdHJ1dDsK
IApAQCAtMjAzLDEyICsyMDcsNiBAQCBwcml2YXRlOgogICAgIFdURjo6VW5pY29kZTo6RGlyZWN0
aW9uIG1fbGluZUJyZWFrQmlkaVN0YXR1c0xhc3QgOiA1OwogfTsKIAotaW5saW5lIHZvaWQgUm9v
dElubGluZUJveDo6c2V0TGluZVRvcEJvdHRvbVBvc2l0aW9ucyhpbnQgdG9wLCBpbnQgYm90dG9t
KSAKLXsgCi0gICAgbV9saW5lVG9wID0gdG9wOyAKLSAgICBtX2xpbmVCb3R0b20gPSBib3R0b207
IAotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBSb290SW5saW5lQm94
X2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lRmxvd0JveC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lRmxv
d0JveC5oCShyZXZpc2lvbiA5MDc3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
U1ZHSW5saW5lRmxvd0JveC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldExvZ2ljYWxIZWlnaHQoaW50IGgpIHsgbV9sb2dpY2FsSGVpZ2h0ID0g
aDsgfQogCiAgICAgdm9pZCBwYWludFNlbGVjdGlvbkJhY2tncm91bmQoUGFpbnRJbmZvJik7Ci0g
ICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IEludFBvaW50JiwgaW50IGxp
bmVUb3AsIGludCBsaW5lQm90dG9tKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZv
JiwgY29uc3QgTGF5b3V0UG9pbnQmLCBMYXlvdXRVbml0IGxpbmVUb3AsIExheW91dFVuaXQgbGlu
ZUJvdHRvbSk7CiAKICAgICB2aXJ0dWFsIEludFJlY3QgY2FsY3VsYXRlQm91bmRhcmllcygpIGNv
bnN0OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRC
b3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5s
aW5lVGV4dEJveC5jcHAJKHJldmlzaW9uIDkwNzc4KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzI4LDcgKzcy
OCw3IEBAIEludFJlY3QgU1ZHSW5saW5lVGV4dEJveDo6Y2FsY3VsYXRlQm91bmQKICAgICByZXR1
cm4gZW5jbG9zaW5nSW50UmVjdCh0ZXh0UmVjdCk7CiB9CiAKLWJvb2wgU1ZHSW5saW5lVGV4dEJv
eDo6bm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1
bHQmIHJlc3VsdCwgY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50SW5Db250YWluZXIsIGNvbnN0IExh
eW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgaW50LCBpbnQpCitib29sIFNWR0lubGluZVRl
eHRCb3g6Om5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0
UmVzdWx0JiByZXN1bHQsIGNvbnN0IExheW91dFBvaW50JiBwb2ludEluQ29udGFpbmVyLCBjb25z
dCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQsIExheW91dFVuaXQsIExheW91dFVuaXQp
CiB7CiAgICAgLy8gRklYTUU6IGludGVncmF0ZSB3aXRoIElubGluZVRleHRCb3g6Om5vZGVBdFBv
aW50IGJldHRlci4KICAgICBBU1NFUlQoIWlzTGluZUJyZWFrKCkpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmgJKHJldmlzaW9uIDkw
Nzc4KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgZmxv
YXQgcG9zaXRpb25Gb3JPZmZzZXQoaW50IG9mZnNldCkgY29uc3Q7CiAKICAgICB2b2lkIHBhaW50
U2VsZWN0aW9uQmFja2dyb3VuZChQYWludEluZm8mKTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnQo
UGFpbnRJbmZvJiwgY29uc3QgSW50UG9pbnQmLCBpbnQgbGluZVRvcCwgaW50IGxpbmVCb3R0b20p
OworICAgIHZpcnR1YWwgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYs
IExheW91dFVuaXQgbGluZVRvcCwgTGF5b3V0VW5pdCBsaW5lQm90dG9tKTsKICAgICB2aXJ0dWFs
IEludFJlY3Qgc2VsZWN0aW9uUmVjdChpbnQgc3RhcnRQb3NpdGlvbiwgaW50IGVuZFBvc2l0aW9u
KTsKIAogICAgIGJvb2wgbWFwU3RhcnRFbmRQb3NpdGlvbnNJbnRvRnJhZ21lbnRDb29yZGluYXRl
cyhjb25zdCBTVkdUZXh0RnJhZ21lbnQmLCBpbnQmIHN0YXJ0UG9zaXRpb24sIGludCYgZW5kUG9z
aXRpb24pIGNvbnN0OwpAQCAtNzcsNyArNzcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcGFpbnRU
ZXh0V2l0aFNoYWRvd3MoR3JhcGhpY3NDb250ZXh0KiwgUmVuZGVyU3R5bGUqLCBUZXh0UnVuJiwg
Y29uc3QgU1ZHVGV4dEZyYWdtZW50JiwgaW50IHN0YXJ0UG9zaXRpb24sIGludCBlbmRQb3NpdGlv
bik7CiAgICAgdm9pZCBwYWludFRleHQoR3JhcGhpY3NDb250ZXh0KiwgUmVuZGVyU3R5bGUqLCBS
ZW5kZXJTdHlsZSogc2VsZWN0aW9uU3R5bGUsIGNvbnN0IFNWR1RleHRGcmFnbWVudCYsIGJvb2wg
aGFzU2VsZWN0aW9uLCBib29sIHBhaW50U2VsZWN0ZWRUZXh0T25seSk7CiAKLSAgICB2aXJ0dWFs
IGJvb2wgbm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0Jiwg
Y29uc3QgTGF5b3V0UG9pbnQmIHBvaW50SW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBh
Y2N1bXVsYXRlZE9mZnNldCwgaW50IGxpbmVUb3AsIGludCBsaW5lQm90dG9tKTsKKyAgICB2aXJ0
dWFsIGJvb2wgbm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0
JiwgY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50SW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50
JiBhY2N1bXVsYXRlZE9mZnNldCwgTGF5b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXRVbml0IGxpbmVC
b3R0b20pOwogCiBwcml2YXRlOgogICAgIGludCBtX2xvZ2ljYWxIZWlnaHQ7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jvb3RJbmxpbmVCb3guaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jvb3RJbmxpbmVCb3guaAkocmV2aXNp
b24gOTA3NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jvb3RJbmxpbmVC
b3guaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBpbnQgdmlydHVhbExvZ2ljYWxIZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX2xvZ2ljYWxIZWln
aHQ7IH0KICAgICB2b2lkIHNldExvZ2ljYWxIZWlnaHQoaW50IGhlaWdodCkgeyBtX2xvZ2ljYWxI
ZWlnaHQgPSBoZWlnaHQ7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBwYWludChQYWludEluZm8mLCBj
b25zdCBJbnRQb2ludCYsIGludCBsaW5lVG9wLCBpbnQgbGluZUJvdHRvbSk7CisgICAgdmlydHVh
bCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50JiwgTGF5b3V0VW5pdCBs
aW5lVG9wLCBMYXlvdXRVbml0IGxpbmVCb3R0b20pOwogCiAgICAgdm9pZCBjb21wdXRlUGVyQ2hh
cmFjdGVyTGF5b3V0SW5mb3JtYXRpb24oKTsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>