<?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>96686</bug_id>
          
          <creation_ts>2012-09-13 12:50:51 -0700</creation_ts>
          <short_desc>REGRESSION(r128489): Does not compile on windows (Requested by jamesr on #webkit).</short_desc>
          <delta_ts>2012-09-13 12:57:42 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>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>90411</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Review Bot">webkit.review.bot</reporter>
          <assigned_to name="WebKit Review Bot">webkit.review.bot</assigned_to>
          <cc>jsbell</cc>
    
    <cc>tony</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>719818</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-13 12:50:51 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/128489 broke the build:
Does not compile on windows (Requested by jamesr on #webkit).

This is an automatic bug report generated by the sheriff-bot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests case pain.

&quot;Only you can prevent forest fires.&quot; -- Smokey the Bear</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719819</commentid>
    <comment_count>1</comment_count>
      <attachid>163941</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-13 12:51:25 -0700</bug_when>
    <thetext>Created attachment 163941
ROLLOUT of r128489

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the rollout will be successful.  This process takes approximately 15 minutes.

If you would like to land the rollout faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719824</commentid>
    <comment_count>2</comment_count>
      <attachid>163941</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-13 12:57:40 -0700</bug_when>
    <thetext>Comment on attachment 163941
ROLLOUT of r128489

Clearing flags on attachment: 163941

Committed r128496: &lt;http://trac.webkit.org/changeset/128496&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719825</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-13 12:57:42 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163941</attachid>
            <date>2012-09-13 12:51:25 -0700</date>
            <delta_ts>2012-09-13 12:57:40 -0700</delta_ts>
            <desc>ROLLOUT of r128489</desc>
            <filename>bug-96686-20120913195749.patch</filename>
            <type>text/plain</type>
            <size>65488</size>
            <attacher name="WebKit Review Bot">webkit.review.bot</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4NDk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzU4NGY0YTEwOTRmMDg3
ZTAyNzA5ZWZhOWJmZWUwNWJlNTM1MjhmMy4uZTExM2M1NzY2ZmJjYzNkYzk2ZmQzZWVhZDRmMDc5
OGExN2YwNWY0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDEyLTA5LTEzICBTaGVy
aWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KKworICAgICAgICBVbnJldmll
d2VkLCByb2xsaW5nIG91dCByMTI4NDg5LgorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3Jn
L2NoYW5nZXNldC8xMjg0ODkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTk2Njg2CisKKyAgICAgICAgRG9lcyBub3QgY29tcGlsZSBvbiB3aW5kb3dzIChS
ZXF1ZXN0ZWQgYnkgamFtZXNyIG9uICN3ZWJraXQpLgorCisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6SURCRGF0YWJhc2UpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6On5JREJEYXRhYmFzZSk6CisgICAgICAgIChXZWJD
b3JlOjpJREJEYXRhYmFzZTo6cmVnaXN0ZXJGcm9udGVuZENhbGxiYWNrcyk6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5oOgorICAg
ICAgICAoSURCRGF0YWJhc2UpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFi
YXNlQmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5k
SW1wbDo6UGVuZGluZ09wZW5DYWxsOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0
YWJhc2VCYWNrZW5kSW1wbDo6UGVuZGluZ09wZW5DYWxsOjpQZW5kaW5nT3BlbkNhbGwpOgorICAg
ICAgICAoSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6UGVuZGluZ09wZW5DYWxsKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OlBlbmRpbmdPcGVuV2l0aFZlcnNpb25D
YWxsOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6
UGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGw6OlBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OklEQkRhdGFiYXNlQmFj
a2VuZEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6c2V0
VmVyc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjb25u
ZWN0aW9uQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6
cHJvY2Vzc1BlbmRpbmdDYWxscyk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tl
bmRJbXBsOjpyZWdpc3RlckZyb250ZW5kQ2FsbGJhY2tzKToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6b3BlbkNvbm5lY3Rpb24p
OgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6cnVuSW50VmVyc2lv
bkNoYW5nZVRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2Vu
ZEltcGw6Om9wZW5Db25uZWN0aW9uV2l0aFZlcnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURC
RGF0YWJhc2VCYWNrZW5kSW1wbDo6ZGVsZXRlRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6
SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Y2xvc2UpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaDoKKyAgICAgICAgKElEQkRhdGFiYXNlQmFja2Vu
ZEltcGwpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZElu
dGVyZmFjZS5oOgorICAgICAgICAoSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlKToKKyAgICAg
ICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VDYWxsYmFja3NJbXBsOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCRGF0YWJhc2VDYWxsYmFja3NJbXBsOjpJREJEYXRhYmFzZUNhbGxiYWNr
c0ltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VDYWxsYmFja3NJbXBsOjp1bnJl
Z2lzdGVyRGF0YWJhc2UpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNl
Q2FsbGJhY2tzSW1wbC5oOgorICAgICAgICAoSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsKToKKyAg
ICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklEQkZhY3Rvcnk6Om9wZW4pOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkZh
Y3RvcnlCYWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJGYWN0b3J5QmFja2Vu
ZEltcGw6Om9wZW4pOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNr
ZW5kSW1wbC5oOgorICAgICAgICAoSURCRmFjdG9yeUJhY2tlbmRJbXBsKToKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEludGVyZmFjZS5oOgorICAgICAgICAo
SURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L0lEQk9wZW5EQlJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCT3BlbkRCUmVxdWVz
dDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9wZW5EQlJlcXVlc3Q6OklEQk9wZW5E
QlJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCT3BlbkRCUmVxdWVzdDo6b25VcGdyYWRl
TmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9wZW5EQlJlcXVlc3Q6Om9uU3VjY2Vzcyk6
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5oOgorICAgICAg
ICAoSURCT3BlbkRCUmVxdWVzdCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJh
bnNhY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246Om9uQWJvcnQp
OgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246Om9uQ29tcGxldGUpOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHA6CisgICAgICAgIChXZWJD
b3JlKToKKwogMjAxMi0wOS0xMyAgVG9ueSBDaGFuZyAgPHRvbnlAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFJlZmFjdG9yIGR1cGxpY2F0ZSBjb2RlIGludG8gUmVuZGVyRmxleGlibGVCb3g6Om1h
aW5BeGlzQ29udGVudEV4dGVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBlNDc3Yjk0
NmQ2ZmIwZTEwNzhiYmYxMGUxZmJiMzVjNzMzNDFkN2YyLi40OTA3YTY0ZjA3OGYxNWQwNTI2ZDE3
MmIzYWNmMWMxYmRiMGE5NjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDQ0IEBACisyMDEyLTA5LTEzICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWls
LmNvbT4KKworICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTI4NDg5LgorICAgICAg
ICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8xMjg0ODkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk2Njg2CisKKyAgICAgICAgRG9lcyBu
b3QgY29tcGlsZSBvbiB3aW5kb3dzIChSZXF1ZXN0ZWQgYnkgamFtZXNyIG9uICN3ZWJraXQpLgor
CisgICAgICAgICogcHVibGljL1dlYklEQkRhdGFiYXNlLmg6CisgICAgICAgICogcHVibGljL1dl
YklEQkZhY3RvcnkuaDoKKyAgICAgICAgKFdlYklEQkZhY3RvcnkpOgorICAgICAgICAqIHNyYy9J
REJDYWxsYmFja3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OklEQkNhbGxiYWNrc1Byb3h5
OjpvblN1Y2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpJREJDYWxsYmFja3NQcm94eTo6b25VcGdy
YWRlTmVlZGVkKToKKyAgICAgICAgKiBzcmMvSURCQ2FsbGJhY2tzUHJveHkuaDoKKyAgICAgICAg
KFdlYktpdCk6CisgICAgICAgIChJREJDYWxsYmFja3NQcm94eSk6CisgICAgICAgICogc3JjL0lE
QkRhdGFiYXNlQmFja2VuZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SURCRGF0YWJhc2VC
YWNrZW5kUHJveHk6OnJlZ2lzdGVyRnJvbnRlbmRDYWxsYmFja3MpOgorICAgICAgICAoV2ViS2l0
KToKKyAgICAgICAgKiBzcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuaDoKKyAgICAgICAgKElE
QkRhdGFiYXNlQmFja2VuZFByb3h5KToKKyAgICAgICAgKiBzcmMvSURCRmFjdG9yeUJhY2tlbmRQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OklEQkZhY3RvcnlCYWNrZW5kUHJveHk6Om9wZW4p
OgorICAgICAgICAqIHNyYy9JREJGYWN0b3J5QmFja2VuZFByb3h5Lmg6CisgICAgICAgIChJREJG
YWN0b3J5QmFja2VuZFByb3h5KToKKyAgICAgICAgKiBzcmMvV2ViSURCRGF0YWJhc2VJbXBsLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURCRGF0YWJhc2VJbXBsOjpXZWJJREJEYXRhYmFzZUlt
cGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJEYXRhYmFzZUltcGw6OmNsb3NlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViSURCRGF0YWJhc2VJbXBsOjpvcGVuKToKKyAgICAgICAgKFdlYktpdCk6
CisgICAgICAgICogc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5oOgorICAgICAgICAoV2ViSURCRGF0
YWJhc2VJbXBsKToKKyAgICAgICAgKiBzcmMvV2ViSURCRmFjdG9yeUltcGwuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJJREJGYWN0b3J5SW1wbDo6b3Blbik6CisgICAgICAgICogc3JjL1dlYklE
QkZhY3RvcnlJbXBsLmg6CisgICAgICAgIChXZWJJREJGYWN0b3J5SW1wbCk6CisgICAgICAgICog
dGVzdHMvSURCQWJvcnRPbkNvcnJ1cHRUZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRFU1Qp
OgorICAgICAgICAqIHRlc3RzL0lEQkRhdGFiYXNlQmFja2VuZFRlc3QuY3BwOgorCiAyMDEyLTA5
LTEzICBHbGVubiBIYXJ0bWFubiAgPGhhcnRtYW5uZ0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
QWRkIG5ldyBhY2NlbGVyYXRlZCBjb21wb3NpdGluZyBmb3Igb3ZlcmZsb3cgc2Nyb2xsIHNldHRp
bmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRh
YmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5j
cHAKaW5kZXggZDY0MWQwNGE0MzZlMWZmZjVmNjQxODRmZDgzNDJmNDJkNWMwMzc0OS4uYjNmNzBh
ZGQyOTMyY2UxNTk3ZWNhMDU1YWVkMWVlZjA3MGNkNWRhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcApAQCAtMzEsNyArMzEsNyBAQAog
I2luY2x1ZGUgIkV2ZW50UXVldWUuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5j
bHVkZSAiSURCQW55LmgiCi0jaW5jbHVkZSAiSURCRGF0YWJhc2VDYWxsYmFja3MuaCIKKyNpbmNs
dWRlICJJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuaCIKICNpbmNsdWRlICJJREJEYXRhYmFzZUVy
cm9yLmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VFeGNlcHRpb24uaCIKICNpbmNsdWRlICJJREJF
dmVudERpc3BhdGNoZXIuaCIKQEAgLTUwLDI4ICs1MCwyOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLVBhc3NSZWZQdHI8SURCRGF0YWJhc2U+IElEQkRhdGFiYXNlOjpjcmVhdGUoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJ
bnRlcmZhY2U+IGRhdGFiYXNlLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBjYWxs
YmFja3MpCitQYXNzUmVmUHRyPElEQkRhdGFiYXNlPiBJREJEYXRhYmFzZTo6Y3JlYXRlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5k
SW50ZXJmYWNlPiBkYXRhYmFzZSkKIHsKLSAgICBSZWZQdHI8SURCRGF0YWJhc2U+IGlkYkRhdGFi
YXNlKGFkb3B0UmVmKG5ldyBJREJEYXRhYmFzZShjb250ZXh0LCBkYXRhYmFzZSwgY2FsbGJhY2tz
KSkpOworICAgIFJlZlB0cjxJREJEYXRhYmFzZT4gaWRiRGF0YWJhc2UoYWRvcHRSZWYobmV3IElE
QkRhdGFiYXNlKGNvbnRleHQsIGRhdGFiYXNlKSkpOwogICAgIGlkYkRhdGFiYXNlLT5zdXNwZW5k
SWZOZWVkZWQoKTsKICAgICByZXR1cm4gaWRiRGF0YWJhc2UucmVsZWFzZSgpOwogfQogCi1JREJE
YXRhYmFzZTo6SURCRGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFz
c1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+IGJhY2tlbmQsIFBhc3NSZWZQdHI8
SURCRGF0YWJhc2VDYWxsYmFja3M+IGNhbGxiYWNrcykKK0lEQkRhdGFiYXNlOjpJREJEYXRhYmFz
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNl
QmFja2VuZEludGVyZmFjZT4gYmFja2VuZCkKICAgICA6IEFjdGl2ZURPTU9iamVjdChjb250ZXh0
LCB0aGlzKQogICAgICwgbV9iYWNrZW5kKGJhY2tlbmQpCiAgICAgLCBtX2Nsb3NlUGVuZGluZyhm
YWxzZSkKICAgICAsIG1fY29udGV4dFN0b3BwZWQoZmFsc2UpCi0gICAgLCBtX2RhdGFiYXNlQ2Fs
bGJhY2tzKGNhbGxiYWNrcykKIHsKICAgICAvLyBXZSBwYXNzIGEgcmVmZXJlbmNlIG9mIHRoaXMg
b2JqZWN0IGJlZm9yZSBpdCBjYW4gYmUgYWRvcHRlZC4KICAgICByZWxheEFkb3B0aW9uUmVxdWly
ZW1lbnQoKTsKKyAgICBtX2RhdGFiYXNlQ2FsbGJhY2tzID0gSURCRGF0YWJhc2VDYWxsYmFja3NJ
bXBsOjpjcmVhdGUodGhpcyk7CiAgICAgbV9tZXRhZGF0YSA9IG1fYmFja2VuZC0+bWV0YWRhdGEo
KTsKIH0KIAogSURCRGF0YWJhc2U6On5JREJEYXRhYmFzZSgpCiB7CiAgICAgY2xvc2UoKTsKKyAg
ICBtX2RhdGFiYXNlQ2FsbGJhY2tzLT51bnJlZ2lzdGVyRGF0YWJhc2UodGhpcyk7CiB9CiAKIHZv
aWQgSURCRGF0YWJhc2U6OnRyYW5zYWN0aW9uQ3JlYXRlZChJREJUcmFuc2FjdGlvbiogdHJhbnNh
Y3Rpb24pCkBAIC0zMzQsNiArMzM1LDEyIEBAIHZvaWQgSURCRGF0YWJhc2U6Om9uVmVyc2lvbkNo
YW5nZShjb25zdCBTdHJpbmcmIHZlcnNpb24pCiAgICAgZW5xdWV1ZUV2ZW50KElEQlZlcnNpb25D
aGFuZ2VFdmVudDo6Y3JlYXRlKHZlcnNpb24sIGV2ZW50TmFtZXMoKS52ZXJzaW9uY2hhbmdlRXZl
bnQpKTsKIH0KIAordm9pZCBJREJEYXRhYmFzZTo6cmVnaXN0ZXJGcm9udGVuZENhbGxiYWNrcygp
Cit7CisgICAgQVNTRVJUKG1fYmFja2VuZCk7CisgICAgbV9iYWNrZW5kLT5yZWdpc3RlckZyb250
ZW5kQ2FsbGJhY2tzKG1fZGF0YWJhc2VDYWxsYmFja3MpOworfQorCiB2b2lkIElEQkRhdGFiYXNl
OjplbnF1ZXVlRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQpCiB7CiAgICAgQVNTRVJUKCFt
X2NvbnRleHRTdG9wcGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkRhdGFiYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJEYXRhYmFzZS5oCmluZGV4IDY0OTkyNGFiNjYyZDk5NDVjNzhlMjMyZWJiNDM2OTA0NTY5MzI1
MGIuLjI3ZjAzYjZlMzU0OGE4MDBmNDFhM2ZhZTU4NjAxNzljODdmZDcyY2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaApAQCAtNTEsNyArNTEs
NyBAQCB0eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwogCiBjbGFzcyBJREJEYXRhYmFzZSA6IHB1
YmxpYyBSZWZDb3VudGVkPElEQkRhdGFiYXNlPiwgcHVibGljIEV2ZW50VGFyZ2V0LCBwdWJsaWMg
QWN0aXZlRE9NT2JqZWN0IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJEYXRh
YmFzZT4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkRhdGFi
YXNlQmFja2VuZEludGVyZmFjZT4sIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+KTsK
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJEYXRhYmFzZT4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4pOwogICAg
IH5JREJEYXRhYmFzZSgpOwogCiAgICAgdm9pZCB0cmFuc2FjdGlvbkNyZWF0ZWQoSURCVHJhbnNh
Y3Rpb24qKTsKQEAgLTg5LDYgKzg5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0OwogCiAgICAgdm9p
ZCBmb3JjZUNsb3NlKCk7CisgICAgdm9pZCByZWdpc3RlckZyb250ZW5kQ2FsbGJhY2tzKCk7CiAg
ICAgY29uc3QgSURCRGF0YWJhc2VNZXRhZGF0YSBtZXRhZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1f
bWV0YWRhdGE7IH0KICAgICB2b2lkIGVucXVldWVFdmVudChQYXNzUmVmUHRyPEV2ZW50Pik7CiAg
ICAgYm9vbCBkaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50LCBFeGNlcHRpb25D
b2RlJiBlYykgeyByZXR1cm4gRXZlbnRUYXJnZXQ6OmRpc3BhdGNoRXZlbnQoZXZlbnQsIGVjKTsg
fQpAQCAtOTgsNyArOTksNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgUmVmQ291bnRlZDxJREJEYXRh
YmFzZT46OmRlcmVmOwogCiBwcml2YXRlOgotICAgIElEQkRhdGFiYXNlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4sIFBhc3NS
ZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+KTsKKyAgICBJREJEYXRhYmFzZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+KTsK
IAogICAgIC8vIEV2ZW50VGFyZ2V0CiAgICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkg
eyByZWYoKTsgfQpAQCAtMTIyLDcgKzEyMyw3IEBAIHByaXZhdGU6CiAgICAgLy8gZGF0YWJhc2Ug
c28gdGhhdCB3ZSBjYW4gY2FuY2VsIHRoZW0gaWYgdGhlIGRhdGFiYXNlIGNsb3Nlcy4KICAgICBW
ZWN0b3I8UmVmUHRyPEV2ZW50PiA+IG1fZW5xdWV1ZWRFdmVudHM7CiAKLSAgICBSZWZQdHI8SURC
RGF0YWJhc2VDYWxsYmFja3M+IG1fZGF0YWJhc2VDYWxsYmFja3M7CisgICAgUmVmUHRyPElEQkRh
dGFiYXNlQ2FsbGJhY2tzSW1wbD4gbV9kYXRhYmFzZUNhbGxiYWNrczsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKaW5kZXggYmZiMmFlMjY3NjE1ZDYz
ODUyM2MwZGUyYmVlZTQ1ZGM1MmZhMzQ0YS4uODExMGMyNGMxM2IzYzQ2M2VlMzdiMjBkNGNmZmE3
MTI0MjQ0YjYzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKQEAgLTQxLDQzICs0MSwzNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OlBlbmRp
bmdPcGVuQ2FsbCA6IHB1YmxpYyBSZWZDb3VudGVkPFBlbmRpbmdPcGVuQ2FsbD4gewogcHVibGlj
OgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBlbmRpbmdPcGVuQ2FsbD4gY3JlYXRlKFBhc3NSZWZQ
dHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFj
a3M+IGRhdGFiYXNlQ2FsbGJhY2tzKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBlbmRpbmdPcGVu
Q2FsbD4gY3JlYXRlKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiAgICAgewot
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBlbmRpbmdPcGVuQ2FsbChjYWxsYmFja3MsIGRh
dGFiYXNlQ2FsbGJhY2tzKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGVuZGluZ09w
ZW5DYWxsKGNhbGxiYWNrcykpOwogICAgIH0KICAgICBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4g
Y2FsbGJhY2tzKCkgeyByZXR1cm4gbV9jYWxsYmFja3M7IH0KLSAgICBQYXNzUmVmUHRyPElEQkRh
dGFiYXNlQ2FsbGJhY2tzPiBkYXRhYmFzZUNhbGxiYWNrcygpIHsgcmV0dXJuIG1fZGF0YWJhc2VD
YWxsYmFja3M7IH0KIAogcHJpdmF0ZToKLSAgICBQZW5kaW5nT3BlbkNhbGwoUGFzc1JlZlB0cjxJ
REJDYWxsYmFja3M+IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4g
ZGF0YWJhc2VDYWxsYmFja3MpCisgICAgUGVuZGluZ09wZW5DYWxsKFBhc3NSZWZQdHI8SURCQ2Fs
bGJhY2tzPiBjYWxsYmFja3MpCiAgICAgICAgIDogbV9jYWxsYmFja3MoY2FsbGJhY2tzKQotICAg
ICAgICAsIG1fZGF0YWJhc2VDYWxsYmFja3MoZGF0YWJhc2VDYWxsYmFja3MpCiAgICAgewogICAg
IH0KIAogICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IG1fY2FsbGJhY2tzOwotICAgIFJlZlB0cjxJ
REJEYXRhYmFzZUNhbGxiYWNrcz4gbV9kYXRhYmFzZUNhbGxiYWNrczsKIH07CiAKIGNsYXNzIElE
QkRhdGFiYXNlQmFja2VuZEltcGw6OlBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsIDogcHVibGlj
IFJlZkNvdW50ZWQ8UGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGw+IHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxQZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbD4gY3JlYXRlKFBhc3NS
ZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxs
YmFja3M+IGRhdGFiYXNlQ2FsbGJhY2tzLCBpbnQ2NF90IHZlcnNpb24pCisgICAgc3RhdGljIFBh
c3NSZWZQdHI8UGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGw+IGNyZWF0ZShQYXNzUmVmUHRyPElE
QkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBpbnQ2NF90IHZlcnNpb24pCiAgICAgewotICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IFBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsKGNhbGxiYWNrcywg
ZGF0YWJhc2VDYWxsYmFja3MsIHZlcnNpb24pKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBQZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbChjYWxsYmFja3MsIHZlcnNpb24pKTsKICAgICB9
CiAgICAgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcygpIHsgcmV0dXJuIG1fY2Fs
bGJhY2tzOyB9Ci0gICAgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gZGF0YWJhc2VD
YWxsYmFja3MoKSB7IHJldHVybiBtX2RhdGFiYXNlQ2FsbGJhY2tzOyB9CiAgICAgaW50NjRfdCB2
ZXJzaW9uKCkgeyByZXR1cm4gbV92ZXJzaW9uOyB9CiAKIHByaXZhdGU6Ci0gICAgUGVuZGluZ09w
ZW5XaXRoVmVyc2lvbkNhbGwoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgUGFz
c1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gZGF0YWJhc2VDYWxsYmFja3MsIGludDY0X3Qg
dmVyc2lvbikKKyAgICBQZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbChQYXNzUmVmUHRyPElEQkNh
bGxiYWNrcz4gY2FsbGJhY2tzLCBpbnQ2NF90IHZlcnNpb24pCiAgICAgICAgIDogbV9jYWxsYmFj
a3MoY2FsbGJhY2tzKQotICAgICAgICAsIG1fZGF0YWJhc2VDYWxsYmFja3MoZGF0YWJhc2VDYWxs
YmFja3MpCiAgICAgICAgICwgbV92ZXJzaW9uKHZlcnNpb24pCiAgICAgewogICAgIH0KICAgICBS
ZWZQdHI8SURCQ2FsbGJhY2tzPiBtX2NhbGxiYWNrczsKLSAgICBSZWZQdHI8SURCRGF0YWJhc2VD
YWxsYmFja3M+IG1fZGF0YWJhc2VDYWxsYmFja3M7CiAgICAgaW50NjRfdCBtX3ZlcnNpb247CiB9
OwogCkBAIC0xMzYsNiArMTMwLDcgQEAgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6SURCRGF0YWJh
c2VCYWNrZW5kSW1wbChjb25zdCBTdHJpbmcmIG5hbWUsIElEQkJhY2tpbmdTdG8KICAgICAsIG1f
aWRlbnRpZmllcih1bmlxdWVJZGVudGlmaWVyKQogICAgICwgbV9mYWN0b3J5KGZhY3RvcnkpCiAg
ICAgLCBtX3RyYW5zYWN0aW9uQ29vcmRpbmF0b3IoY29vcmRpbmF0b3IpCisgICAgLCBtX3BlbmRp
bmdDb25uZWN0aW9uQ291bnQoMCkKIHsKICAgICBBU1NFUlQoIW1fbmFtZS5pc051bGwoKSk7CiB9
CkBAIC0yNDUsNyArMjQwLDYgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpzZXRWZXJz
aW9uKGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgUGFzc1JlZlB0cjxJREJDYWwKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICBmb3IgKERhdGFiYXNlQ2FsbGJhY2tzU2V0Ojpjb25zdF9pdGVyYXRv
ciBpdCA9IG1fZGF0YWJhc2VDYWxsYmFja3NTZXQuYmVnaW4oKTsgaXQgIT0gbV9kYXRhYmFzZUNh
bGxiYWNrc1NldC5lbmQoKTsgKytpdCkgewotICAgICAgICAvLyBGcm9udCBlbmQgZW5zdXJlcyB0
aGUgZXZlbnQgaXMgbm90IGZpcmVkIGF0IGNvbm5lY3Rpb25zIHRoYXQgaGF2ZSBjbG9zZVBlbmRp
bmcgc2V0LgogICAgICAgICBpZiAoKml0ICE9IGRhdGFiYXNlQ2FsbGJhY2tzKQogICAgICAgICAg
ICAgKCppdCktPm9uVmVyc2lvbkNoYW5nZSh2ZXJzaW9uKTsKICAgICB9CkBAIC0zNDgsMTAgKzM0
Miw5IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6dHJhbnNhY3Rpb25GaW5pc2hlZEFu
ZENvbXBsZXRlRmlyZWQoUGFzc1JlZlB0cjxJREJUCiAgICAgICAgIHByb2Nlc3NQZW5kaW5nQ2Fs
bHMoKTsKIH0KIAotc2l6ZV90IElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNvbm5lY3Rpb25Db3Vu
dCgpCitpbnQzMl90IElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNvbm5lY3Rpb25Db3VudCgpCiB7
Ci0gICAgLy8gVGhpcyBkb2VzIG5vdCBpbmNsdWRlIHBlbmRpbmcgb3BlbiBjYWxscywgYXMgdGhv
c2Ugc2hvdWxkIG5vdCBibG9jayB2ZXJzaW9uIGNoYW5nZXMgYW5kIGRlbGV0ZXMuCi0gICAgcmV0
dXJuIG1fZGF0YWJhc2VDYWxsYmFja3NTZXQuc2l6ZSgpOworICAgIHJldHVybiBtX2RhdGFiYXNl
Q2FsbGJhY2tzU2V0LnNpemUoKSArIG1fcGVuZGluZ0Nvbm5lY3Rpb25Db3VudDsKIH0KIAogdm9p
ZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpwcm9jZXNzUGVuZGluZ0NhbGxzKCkKQEAgLTM2Miw4
ICszNTUsOSBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnByb2Nlc3NQZW5kaW5nQ2Fs
bHMoKQogICAgICAgICBSZWZQdHI8UGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGw+IHBlbmRpbmdP
cGVuV2l0aFZlcnNpb25DYWxsID0gbV9wZW5kaW5nU2Vjb25kSGFsZk9wZW5XaXRoVmVyc2lvbkNh
bGxzLnRha2VGaXJzdCgpOwogICAgICAgICBBU1NFUlQocGVuZGluZ09wZW5XaXRoVmVyc2lvbkNh
bGwtPnZlcnNpb24oKSA9PSBtX2ludFZlcnNpb24pOwogICAgICAgICBBU1NFUlQobV9pZCAhPSBJ
bnZhbGlkSWQpOworICAgICAgICArK21fcGVuZGluZ0Nvbm5lY3Rpb25Db3VudDsKICAgICAgICAg
cGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGwtPmNhbGxiYWNrcygpLT5vblN1Y2Nlc3ModGhpcyk7
Ci0gICAgICAgIC8vIEZhbGwgdGhyb3VnaCB3aGVuIGNvbXBsZXRlLCBhcyBwZW5kaW5nIGRlbGV0
ZXMgbWF5IGJlIChwYXJ0aWFsbHkpIHVuYmxvY2tlZC4KKyAgICAgICAgcmV0dXJuOwogICAgIH0K
IAogICAgIC8vIFBlbmRpbmcgY2FsbHMgbWF5IGJlIHJlcXVldWVkIG9yIGFib3J0ZWQKQEAgLTQw
Niw3ICs0MDAsNyBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnByb2Nlc3NQZW5kaW5n
Q2FsbHMoKQogICAgIG1fcGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGxzLnN3YXAocGVuZGluZ09w
ZW5XaXRoVmVyc2lvbkNhbGxzKTsKICAgICB3aGlsZSAoIXBlbmRpbmdPcGVuV2l0aFZlcnNpb25D
YWxscy5pc0VtcHR5KCkpIHsKICAgICAgICAgUmVmUHRyPFBlbmRpbmdPcGVuV2l0aFZlcnNpb25D
YWxsPiBwZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbCA9IHBlbmRpbmdPcGVuV2l0aFZlcnNpb25D
YWxscy50YWtlRmlyc3QoKTsKLSAgICAgICAgb3BlbkNvbm5lY3Rpb25XaXRoVmVyc2lvbihwZW5k
aW5nT3BlbldpdGhWZXJzaW9uQ2FsbC0+Y2FsbGJhY2tzKCksIHBlbmRpbmdPcGVuV2l0aFZlcnNp
b25DYWxsLT5kYXRhYmFzZUNhbGxiYWNrcygpLCBwZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbC0+
dmVyc2lvbigpKTsKKyAgICAgICAgb3BlbkNvbm5lY3Rpb25XaXRoVmVyc2lvbihwZW5kaW5nT3Bl
bldpdGhWZXJzaW9uQ2FsbC0+Y2FsbGJhY2tzKCksIHBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxs
LT52ZXJzaW9uKCkpOwogICAgIH0KIAogICAgIC8vIEdpdmVuIHRoZSBjaGVjayBhYm92ZSwgaXQg
YXBwZWFycyB0aGF0IGNhbGxzIGNhbm5vdCBiZSByZXF1ZXVlZCBieQpAQCAtNDE1LDcgKzQwOSw3
IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6cHJvY2Vzc1BlbmRpbmdDYWxscygpCiAg
ICAgbV9wZW5kaW5nT3BlbkNhbGxzLnN3YXAocGVuZGluZ09wZW5DYWxscyk7CiAgICAgd2hpbGUg
KCFwZW5kaW5nT3BlbkNhbGxzLmlzRW1wdHkoKSkgewogICAgICAgICBSZWZQdHI8UGVuZGluZ09w
ZW5DYWxsPiBwZW5kaW5nT3BlbkNhbGwgPSBwZW5kaW5nT3BlbkNhbGxzLnRha2VGaXJzdCgpOwot
ICAgICAgICBvcGVuQ29ubmVjdGlvbihwZW5kaW5nT3BlbkNhbGwtPmNhbGxiYWNrcygpLCBwZW5k
aW5nT3BlbkNhbGwtPmRhdGFiYXNlQ2FsbGJhY2tzKCkpOworICAgICAgICBvcGVuQ29ubmVjdGlv
bihwZW5kaW5nT3BlbkNhbGwtPmNhbGxiYWNrcygpKTsKICAgICB9CiAgICAgQVNTRVJUKG1fcGVu
ZGluZ09wZW5DYWxscy5pc0VtcHR5KCkpOwogfQpAQCAtNDM0LDMwICs0MjgsNDQgQEAgUGFzc1Jl
ZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IElEQkRhdGFiYXNlQmFja2VuZElt
cGw6OnRyYW5zYWN0aW9uKEQKICAgICByZXR1cm4gdHJhbnNhY3Rpb24ucmVsZWFzZSgpOwogfQog
Ci12b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6Om9wZW5Db25uZWN0aW9uKFBhc3NSZWZQdHI8
SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+
IGRhdGFiYXNlQ2FsbGJhY2tzKQordm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpyZWdpc3Rl
ckZyb250ZW5kQ2FsbGJhY2tzKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IGNhbGxi
YWNrcykKK3sKKyAgICBBU1NFUlQobV9iYWNraW5nU3RvcmUuZ2V0KCkpOworICAgIEFTU0VSVCht
X3BlbmRpbmdDb25uZWN0aW9uQ291bnQpOworICAgIC0tbV9wZW5kaW5nQ29ubmVjdGlvbkNvdW50
OworICAgIG1fZGF0YWJhc2VDYWxsYmFja3NTZXQuYWRkKFJlZlB0cjxJREJEYXRhYmFzZUNhbGxi
YWNrcz4oY2FsbGJhY2tzKSk7CisgICAgLy8gV2UgZ2l2ZSBtYXggcHJpb3JpdHkgdG8gb3BlbiBj
YWxscyB0aGF0IGZvbGxvdyB1cGdyYWRlbmVlZGVkCisgICAgLy8gZXZlbnRzOyB0cmlnZ2VyIHRo
ZSByZXN0IG9mIHRoZSBxdWV1ZXMgdG8gYmUgc2VydmljZWQgd2hlbiB0aG9zZSBvcGVuCisgICAg
Ly8gY2FsbHMgYXJlIGZpbmlzaGVkLgorICAgIHByb2Nlc3NQZW5kaW5nQ2FsbHMoKTsKK30KKwor
dm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpvcGVuQ29ubmVjdGlvbihQYXNzUmVmUHRyPElE
QkNhbGxiYWNrcz4gY2FsbGJhY2tzKQogewogICAgIEFTU0VSVChtX2JhY2tpbmdTdG9yZS5nZXQo
KSk7CiAgICAgaWYgKCFtX3BlbmRpbmdEZWxldGVDYWxscy5pc0VtcHR5KCkgfHwgbV9ydW5uaW5n
VmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uIHx8ICFtX3BlbmRpbmdTZXRWZXJzaW9uQ2FsbHMuaXNF
bXB0eSgpKQotICAgICAgICBtX3BlbmRpbmdPcGVuQ2FsbHMuYXBwZW5kKFBlbmRpbmdPcGVuQ2Fs
bDo6Y3JlYXRlKGNhbGxiYWNrcywgZGF0YWJhc2VDYWxsYmFja3MpKTsKKyAgICAgICAgbV9wZW5k
aW5nT3BlbkNhbGxzLmFwcGVuZChQZW5kaW5nT3BlbkNhbGw6OmNyZWF0ZShjYWxsYmFja3MpKTsK
ICAgICBlbHNlIHsKICAgICAgICAgaWYgKG1faWQgPT0gSW52YWxpZElkICYmICFvcGVuSW50ZXJu
YWwoKSkKICAgICAgICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpj
cmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVOS05PV05fRVJSLCAiSW50ZXJuYWwgZXJyb3Iu
IikpOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIG1fZGF0YWJhc2VDYWxsYmFja3NTZXQu
YWRkKFJlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4oZGF0YWJhc2VDYWxsYmFja3MpKTsKKyAg
ICAgICAgICAgICsrbV9wZW5kaW5nQ29ubmVjdGlvbkNvdW50OwogICAgICAgICAgICAgY2FsbGJh
Y2tzLT5vblN1Y2Nlc3ModGhpcyk7CiAgICAgICAgIH0KICAgICB9CiB9CiAKLXZvaWQgSURCRGF0
YWJhc2VCYWNrZW5kSW1wbDo6cnVuSW50VmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKGludDY0X3Qg
cmVxdWVzdGVkVmVyc2lvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywg
UGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gcHJwRGF0YWJhc2VDYWxsYmFja3MpCit2
b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnJ1bkludFZlcnNpb25DaGFuZ2VUcmFuc2FjdGlv
bihpbnQ2NF90IHJlcXVlc3RlZFZlcnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBD
YWxsYmFja3MpCiB7CiAgICAgUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzID0gcHJwQ2Fs
bGJhY2tzOwotICAgIFJlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gZGF0YWJhc2VDYWxsYmFj
a3MgPSBwcnBEYXRhYmFzZUNhbGxiYWNrczsKICAgICBBU1NFUlQoY2FsbGJhY2tzKTsKICAgICBm
b3IgKERhdGFiYXNlQ2FsbGJhY2tzU2V0Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fZGF0YWJhc2VD
YWxsYmFja3NTZXQuYmVnaW4oKTsgaXQgIT0gbV9kYXRhYmFzZUNhbGxiYWNrc1NldC5lbmQoKTsg
KytpdCkgewotICAgICAgICAvLyBGcm9udCBlbmQgZW5zdXJlcyB0aGUgZXZlbnQgaXMgbm90IGZp
cmVkIGF0IGNvbm5lY3Rpb25zIHRoYXQgaGF2ZSBjbG9zZVBlbmRpbmcgc2V0LgotICAgICAgICBp
ZiAoKml0ICE9IGRhdGFiYXNlQ2FsbGJhY2tzKQotICAgICAgICAgICAgKCppdCktPm9uVmVyc2lv
bkNoYW5nZShtX2ludFZlcnNpb24sIHJlcXVlc3RlZFZlcnNpb24pOworICAgICAgICAvLyBOb3Rl
IHRoYXQgc29tZSBjb25uZWN0aW9ucyBtaWdodCBjbG9zZSBpbiB0aGUgdmVyc2lvbmNoYW5nZSBl
dmVudAorICAgICAgICAvLyBoYW5kbGVyIGZvciBzb21lIG90aGVyIGNvbm5lY3Rpb24sIGFmdGVy
IHdoaWNoIGl0cyBvd24gdmVyc2lvbmNoYW5nZQorICAgICAgICAvLyBldmVudCBzaG91bGQgbm90
IGJlIGZpcmVkLiBUaGUgYmFja2VuZCBkb2Vzbid0IHdvcnJ5IGFib3V0IHRoaXMsIHdlCisgICAg
ICAgIC8vIGp1c3QgcXVldWUgdXAgYSB2ZXJzaW9uIGNoYW5nZSBldmVudCBmb3IgZXZlcnkgY29u
bmVjdGlvbi4gVGhlCisgICAgICAgIC8vIGZyb250ZW5kIHRha2VzIGNhcmUgdG8gb25seSBkaXNw
YXRjaCB0byBvcGVuIGNvbm5lY3Rpb25zLgorICAgICAgICAoKml0KS0+b25WZXJzaW9uQ2hhbmdl
KG1faW50VmVyc2lvbiwgcmVxdWVzdGVkVmVyc2lvbik7CiAgICAgfQogICAgIC8vIFRoZSBzcGVj
IGRpY3RhdGVzIHdlIHdhaXQgdW50aWwgYWxsIHRoZSB2ZXJzaW9uIGNoYW5nZSBldmVudHMgYXJl
CiAgICAgLy8gZGVsaXZlcmVkIGFuZCB0aGVuIGNoZWNrIG1fZGF0YWJhc2VDYWxsYmFja3MuZW1w
dHkoKSBiZWZvcmUgcHJvY2VlZGluZwpAQCAtNDY2LDExICs0NzQsMTEgQEAgdm9pZCBJREJEYXRh
YmFzZUJhY2tlbmRJbXBsOjpydW5JbnRWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24oaW50NjRfdCBy
ZXF1ZXN0ZWRWZXIKICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoZSBjYWxsIHRvIG9uQmxvY2tlZCBh
bmQgaW5zdGVhZCB3YWl0IHVudGlsIHRoZSBmcm9udGVuZAogICAgIC8vIHRlbGxzIHVzIHRoYXQg
YWxsIHRoZSBibG9ja2VkIGV2ZW50cyBoYXZlIGJlZW4gZGVsaXZlcmVkLiBTZWUKICAgICAvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzExMzAKLSAgICBpZiAoY29u
bmVjdGlvbkNvdW50KCkpCisgICAgaWYgKGNvbm5lY3Rpb25Db3VudCgpID4gMCkKICAgICAgICAg
Y2FsbGJhY2tzLT5vbkJsb2NrZWQobV9pbnRWZXJzaW9uKTsKICAgICAvLyBGSVhNRTogQWRkIHRl
c3QgZm9yIG1fcnVubmluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbi4KLSAgICBpZiAobV9ydW5u
aW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uIHx8IGNvbm5lY3Rpb25Db3VudCgpKSB7Ci0gICAg
ICAgIG1fcGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGxzLmFwcGVuZChQZW5kaW5nT3BlbldpdGhW
ZXJzaW9uQ2FsbDo6Y3JlYXRlKGNhbGxiYWNrcywgZGF0YWJhc2VDYWxsYmFja3MsIHJlcXVlc3Rl
ZFZlcnNpb24pKTsKKyAgICBpZiAobV9ydW5uaW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uIHx8
IGNvbm5lY3Rpb25Db3VudCgpID4gMCkgeworICAgICAgICBtX3BlbmRpbmdPcGVuV2l0aFZlcnNp
b25DYWxscy5hcHBlbmQoUGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGw6OmNyZWF0ZShjYWxsYmFj
a3MsIHJlcXVlc3RlZFZlcnNpb24pKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNDg5
LDE2ICs0OTcsMTQgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpydW5JbnRWZXJzaW9u
Q2hhbmdlVHJhbnNhY3Rpb24oaW50NjRfdCByZXF1ZXN0ZWRWZXIKICAgICAgICAgZWMgPSBJREJE
YXRhYmFzZUV4Y2VwdGlvbjo6VFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSOwogICAgIH0KICAgICBB
U1NFUlRfV0lUSF9NRVNTQUdFKCFtX3BlbmRpbmdTZWNvbmRIYWxmT3BlbldpdGhWZXJzaW9uQ2Fs
bHMuc2l6ZSgpLCAibV9wZW5kaW5nU2Vjb25kSGFsZk9wZW5XaXRoVmVyc2lvbkNhbGxzLnNpemUg
PSAlenUiLCBtX3BlbmRpbmdTZWNvbmRIYWxmT3BlbldpdGhWZXJzaW9uQ2FsbHMuc2l6ZSgpKTsK
LSAgICBtX3BlbmRpbmdTZWNvbmRIYWxmT3BlbldpdGhWZXJzaW9uQ2FsbHMuYXBwZW5kKFBlbmRp
bmdPcGVuV2l0aFZlcnNpb25DYWxsOjpjcmVhdGUoY2FsbGJhY2tzLCBkYXRhYmFzZUNhbGxiYWNr
cywgcmVxdWVzdGVkVmVyc2lvbikpOwotICAgIG1fZGF0YWJhc2VDYWxsYmFja3NTZXQuYWRkKGRh
dGFiYXNlQ2FsbGJhY2tzKTsKKyAgICBtX3BlbmRpbmdTZWNvbmRIYWxmT3BlbldpdGhWZXJzaW9u
Q2FsbHMuYXBwZW5kKFBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsOjpjcmVhdGUoY2FsbGJhY2tz
LCByZXF1ZXN0ZWRWZXJzaW9uKSk7CiB9CiAKLXZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6
b3BlbkNvbm5lY3Rpb25XaXRoVmVyc2lvbihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2Fs
bGJhY2tzLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBwcnBEYXRhYmFzZUNhbGxi
YWNrcywgaW50NjRfdCB2ZXJzaW9uKQordm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpvcGVu
Q29ubmVjdGlvbldpdGhWZXJzaW9uKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFj
a3MsIGludDY0X3QgdmVyc2lvbikKIHsKICAgICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFj
a3MgPSBwcnBDYWxsYmFja3M7Ci0gICAgUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBkYXRh
YmFzZUNhbGxiYWNrcyA9IHBycERhdGFiYXNlQ2FsbGJhY2tzOwogICAgIGlmICghbV9wZW5kaW5n
RGVsZXRlQ2FsbHMuaXNFbXB0eSgpIHx8IG1fcnVubmluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlv
biB8fCAhbV9wZW5kaW5nU2V0VmVyc2lvbkNhbGxzLmlzRW1wdHkoKSkgewotICAgICAgICBtX3Bl
bmRpbmdPcGVuV2l0aFZlcnNpb25DYWxscy5hcHBlbmQoUGVuZGluZ09wZW5XaXRoVmVyc2lvbkNh
bGw6OmNyZWF0ZShjYWxsYmFja3MsIGRhdGFiYXNlQ2FsbGJhY2tzLCB2ZXJzaW9uKSk7CisgICAg
ICAgIG1fcGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGxzLmFwcGVuZChQZW5kaW5nT3BlbldpdGhW
ZXJzaW9uQ2FsbDo6Y3JlYXRlKGNhbGxiYWNrcywgdmVyc2lvbikpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogICAgIGlmIChtX2lkID09IEludmFsaWRJZCkgewpAQCAtNTEwLDcgKzUxNiw3IEBA
IHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6b3BlbkNvbm5lY3Rpb25XaXRoVmVyc2lvbihQ
YXNzUmVmUHRyPElEQkNhbGxiYWNrcz4KICAgICAgICAgfQogICAgIH0KICAgICBpZiAodmVyc2lv
biA+IG1faW50VmVyc2lvbikgewotICAgICAgICBydW5JbnRWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rp
b24odmVyc2lvbiwgY2FsbGJhY2tzLCBkYXRhYmFzZUNhbGxiYWNrcyk7CisgICAgICAgIHJ1bklu
dFZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbih2ZXJzaW9uLCBjYWxsYmFja3MpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogICAgIGlmICh2ZXJzaW9uIDwgbV9pbnRWZXJzaW9uKSB7CkBAIC01MTgs
NyArNTI0LDcgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpvcGVuQ29ubmVjdGlvbldp
dGhWZXJzaW9uKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPgogICAgICAgICByZXR1cm47CiAgICAg
fQogICAgIEFTU0VSVCh2ZXJzaW9uID09IG1faW50VmVyc2lvbik7Ci0gICAgbV9kYXRhYmFzZUNh
bGxiYWNrc1NldC5hZGQoZGF0YWJhc2VDYWxsYmFja3MpOworICAgICsrbV9wZW5kaW5nQ29ubmVj
dGlvbkNvdW50OwogICAgIGNhbGxiYWNrcy0+b25TdWNjZXNzKHRoaXMpOwogfQogCkBAIC01Mjks
MTQgKzUzNSwxNSBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmRlbGV0ZURhdGFiYXNl
KFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFjawogICAgICAgICByZXR1cm47CiAg
ICAgfQogICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcyA9IHBycENhbGxiYWNrczsK
LSAgICBmb3IgKERhdGFiYXNlQ2FsbGJhY2tzU2V0Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fZGF0
YWJhc2VDYWxsYmFja3NTZXQuYmVnaW4oKTsgaXQgIT0gbV9kYXRhYmFzZUNhbGxiYWNrc1NldC5l
bmQoKTsgKytpdCkgewotICAgICAgICAvLyBGcm9udCBlbmQgZW5zdXJlcyB0aGUgZXZlbnQgaXMg
bm90IGZpcmVkIGF0IGNvbm5lY3Rpb25zIHRoYXQgaGF2ZSBjbG9zZVBlbmRpbmcgc2V0LgorICAg
IC8vIEZJWE1FOiBPbmx5IGZpcmUgb25WZXJzaW9uQ2hhbmdlIGlmIHRoZXJlIHRoZSBjb25uZWN0
aW9uIGlzbid0IGluCisgICAgLy8gdGhlIHByb2Nlc3Mgb2YgY2xvc2luZy4KKyAgICAvLyBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzExMjkKKyAgICBmb3IgKERhdGFi
YXNlQ2FsbGJhY2tzU2V0Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fZGF0YWJhc2VDYWxsYmFja3NT
ZXQuYmVnaW4oKTsgaXQgIT0gbV9kYXRhYmFzZUNhbGxiYWNrc1NldC5lbmQoKTsgKytpdCkKICAg
ICAgICAgKCppdCktPm9uVmVyc2lvbkNoYW5nZSgiIik7Ci0gICAgfQogICAgIC8vIEZJWE1FOiBP
bmx5IGZpcmUgb25CbG9ja2VkIGlmIHRoZXJlIGFyZSBvcGVuIGNvbm5lY3Rpb25zIGFmdGVyIHRo
ZQogICAgIC8vIFZlcnNpb25DaGFuZ2VFdmVudHMgYXJlIHJlY2VpdmVkLCBub3QganVzdCBzZXQg
dXAgdG8gZmlyZS4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NzExMzAKLSAgICBpZiAoY29ubmVjdGlvbkNvdW50KCkpIHsKKyAgICBpZiAoY29ubmVjdGlv
bkNvdW50KCkgPj0gMSkgewogICAgICAgICBtX3BlbmRpbmdEZWxldGVDYWxscy5hcHBlbmQoUGVu
ZGluZ0RlbGV0ZUNhbGw6OmNyZWF0ZShjYWxsYmFja3MpKTsKICAgICAgICAgY2FsbGJhY2tzLT5v
bkJsb2NrZWQoKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNTU3LDE5ICs1NjQsMTggQEAgdm9pZCBJ
REJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjbG9zZShQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJh
Y2tzPiBwcnBDYWxsYmFja3MKIHsKICAgICBSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IGNh
bGxiYWNrcyA9IHBycENhbGxiYWNrczsKICAgICBBU1NFUlQobV9kYXRhYmFzZUNhbGxiYWNrc1Nl
dC5jb250YWlucyhjYWxsYmFja3MpKTsKLQogICAgIG1fZGF0YWJhc2VDYWxsYmFja3NTZXQucmVt
b3ZlKGNhbGxiYWNrcyk7Ci0gICAgLy8gRklYTUU6IElmIGNhbGxiYWNrcyBpcyBhbHNvIGhlbGQg
aW4gbV9wZW5kaW5nU2Vjb25kSGFsZk9wZW5XaXRoVmVyc2lvbkNhbGxzCi0gICAgLy8gaXQgc2hv
dWxkIGJlIHJlbW92ZWQgYW5kIG9uRXJyb3IgZmlyZWQgYWdhaW5zdCBpdC4KLQogICAgIGlmIChj
b25uZWN0aW9uQ291bnQoKSA+IDEpCiAgICAgICAgIHJldHVybjsKIAorICAgIFRyYW5zYWN0aW9u
U2V0IHRyYW5zYWN0aW9ucyhtX3RyYW5zYWN0aW9ucyk7CiAgICAgcHJvY2Vzc1BlbmRpbmdDYWxs
cygpOwogCi0gICAgLy8gRklYTUU6IEFkZCBhIHRlc3QgZm9yIHRoZSBtX3BlbmRpbmdPcGVuQ2Fs
bHPCt2FuZCBtX3BlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxscyBjYXNlcyBiZWxvdy4KLSAgICBp
ZiAoIWNvbm5lY3Rpb25Db3VudCgpICYmICFtX3BlbmRpbmdPcGVuQ2FsbHMuc2l6ZSgpICYmICFt
X3BlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxscy5zaXplKCkgJiYgIW1fcGVuZGluZ0RlbGV0ZUNh
bGxzLnNpemUoKSkgewotICAgICAgICBUcmFuc2FjdGlvblNldCB0cmFuc2FjdGlvbnMobV90cmFu
c2FjdGlvbnMpOworICAgIEFTU0VSVChtX3RyYW5zYWN0aW9ucy5zaXplKCkgLSB0cmFuc2FjdGlv
bnMuc2l6ZSgpIDw9IDEpOworICAgIC8vIEZJWE1FOiBJbnN0ZWFkIG9mIHJlbHlpbmcgb24gdHJh
bnNhY3Rpb25zLnNpemUoKSwgbWFrZSBjb25uZWN0aW9uQ291bnQKKyAgICAvLyBhd2FyZSBvZiBp
bi1mbGlnaHQgdXBncmFkZW5lZWRlZCBldmVudHMgYXMgd2VsbCBhcyBpbi1mbGlnaHQgc3VjY2Vz
cworICAgIC8vIGV2ZW50cy4KKyAgICBpZiAoIWNvbm5lY3Rpb25Db3VudCgpICYmICFtX3BlbmRp
bmdEZWxldGVDYWxscy5zaXplKCkgJiYgbV90cmFuc2FjdGlvbnMuc2l6ZSgpID09IHRyYW5zYWN0
aW9ucy5zaXplKCkpIHsKICAgICAgICAgZm9yIChUcmFuc2FjdGlvblNldDo6Y29uc3RfaXRlcmF0
b3IgaXQgPSB0cmFuc2FjdGlvbnMuYmVnaW4oKTsgaXQgIT0gdHJhbnNhY3Rpb25zLmVuZCgpOyAr
K2l0KQogICAgICAgICAgICAgKCppdCktPmFib3J0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaAppbmRl
eCAyMmNjYzQzMjIwYjUwNGZlNzA2ODU2N2I1OWE0NzYyNTVlZWE4NTRkLi43ZjMxY2IwNGVhNGVk
YmZjZDY3MjE3YzE5YzhjYTdhMmM5NzNiZTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oCkBAIC01NSw4
ICs1NSw5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgaW50NjRfdCBJbnZhbGlkSWQgPSAw
OwogICAgIGludDY0X3QgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CiAKLSAgICB2b2lkIG9w
ZW5Db25uZWN0aW9uKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxJREJEYXRh
YmFzZUNhbGxiYWNrcz4pOwotICAgIHZvaWQgb3BlbkNvbm5lY3Rpb25XaXRoVmVyc2lvbihQYXNz
UmVmUHRyPElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+LCBp
bnQ2NF90IHZlcnNpb24pOworICAgIHZvaWQgcmVnaXN0ZXJGcm9udGVuZENhbGxiYWNrcyhQYXNz
UmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPik7CisgICAgdm9pZCBvcGVuQ29ubmVjdGlvbihQ
YXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pOworICAgIHZvaWQgb3BlbkNvbm5lY3Rpb25XaXRoVmVy
c2lvbihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIGludDY0X3QgdmVyc2lvbik7CiAgICAgdm9p
ZCBkZWxldGVEYXRhYmFzZShQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pOwogCiAgICAgLy8gSURC
RGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlCkBAIC03OCw5ICs3OSw5IEBAIHByaXZhdGU6CiAgICAg
SURCRGF0YWJhc2VCYWNrZW5kSW1wbChjb25zdCBTdHJpbmcmIG5hbWUsIElEQkJhY2tpbmdTdG9y
ZSogZGF0YWJhc2UsIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IqLCBJREJGYWN0b3J5QmFja2Vu
ZEltcGwqLCBjb25zdCBTdHJpbmcmIHVuaXF1ZUlkZW50aWZpZXIpOwogCiAgICAgYm9vbCBvcGVu
SW50ZXJuYWwoKTsKLSAgICB2b2lkIHJ1bkludFZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbihpbnQ2
NF90IHJlcXVlc3RlZFZlcnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0
cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4pOworICAgIHZvaWQgcnVuSW50VmVyc2lvbkNoYW5nZVRy
YW5zYWN0aW9uKGludDY0X3QgcmVxdWVzdGVkVmVyc2lvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFj
a3M+KTsKICAgICB2b2lkIGxvYWRPYmplY3RTdG9yZXMoKTsKLSAgICBzaXplX3QgY29ubmVjdGlv
bkNvdW50KCk7CisgICAgaW50MzJfdCBjb25uZWN0aW9uQ291bnQoKTsKICAgICB2b2lkIHByb2Nl
c3NQZW5kaW5nQ2FsbHMoKTsKIAogICAgIHN0YXRpYyB2b2lkIGNyZWF0ZU9iamVjdFN0b3JlSW50
ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNr
ZW5kSW1wbD4sIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4sIFBhc3NSZWZQ
dHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4pOwpAQCAtMTI2LDYgKzEyNywxMCBAQCBwcml2
YXRlOgogICAgIGNsYXNzIFBlbmRpbmdEZWxldGVDYWxsOwogICAgIERlcXVlPFJlZlB0cjxQZW5k
aW5nRGVsZXRlQ2FsbD4gPiBtX3BlbmRpbmdEZWxldGVDYWxsczsKIAorICAgIC8vIEZJWE1FOiBF
bGltaW5hdGUgdGhlIGxpbWJvIHN0YXRlIGJldHdlZW4gb3BlbkNvbm5lY3Rpb24oKSBhbmQgcmVn
aXN0ZXJGcm9udGVuZENhbGxiYWNrcygpCisgICAgLy8gdGhhdCB0aGlzIGNvdW50ZXIgdHJhY2tz
LgorICAgIGludDMyX3QgbV9wZW5kaW5nQ29ubmVjdGlvbkNvdW50OworCiAgICAgdHlwZWRlZiBM
aXN0SGFzaFNldDxSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+ID4gRGF0YWJhc2VDYWxsYmFj
a3NTZXQ7CiAgICAgRGF0YWJhc2VDYWxsYmFja3NTZXQgbV9kYXRhYmFzZUNhbGxiYWNrc1NldDsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRh
YmFzZUJhY2tlbmRJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oCmluZGV4IDQyYjNiOTAyY2EzZmRlNjY3NDkx
MGZlYjk0MDU3MDgzYTMzMzVhYjkuLmM3ZDFkNjAxYmUyNmU3YmJjOTIxNzA2ODM0MjQ3NTI4NWEy
YTg1ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRh
dGFiYXNlQmFja2VuZEludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oCkBAIC02MCw2ICs2MCw4IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmVyc2lvbihjb25zdCBTdHJpbmcmIHZlcnNpb24s
IFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNr
cz4sIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQlRyYW5z
YWN0aW9uQmFja2VuZEludGVyZmFjZT4gdHJhbnNhY3Rpb24oRE9NU3RyaW5nTGlzdCogc3RvcmVO
YW1lcywgdW5zaWduZWQgc2hvcnQgbW9kZSwgRXhjZXB0aW9uQ29kZSYpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgY2xvc2UoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4pID0gMDsKKwor
ICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckZyb250ZW5kQ2FsbGJhY2tzKFBhc3NSZWZQdHI8SURC
RGF0YWJhc2VDYWxsYmFja3M+KSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUNh
bGxiYWNrc0ltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0
YWJhc2VDYWxsYmFja3NJbXBsLmNwcAppbmRleCA5NzBkM2ExNjdjYWY5OTZjN2YwMzFmZjU0YTRm
MTU5MjQ5ZjFhYTBiLi5mNjU2NWRjYTFiZDgyMmZlNmRjMTM1OTY4YzNiMGVkYjk5OTVhM2I4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUNh
bGxiYWNrc0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5jcHAKQEAgLTMyLDEzICszMiwxMyBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3NJbXBsPiBJREJE
YXRhYmFzZUNhbGxiYWNrc0ltcGw6OmNyZWF0ZSgpCitQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2Fs
bGJhY2tzSW1wbD4gSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsOjpjcmVhdGUoSURCRGF0YWJhc2Uq
IGRhdGFiYXNlKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCRGF0YWJhc2VDYWxsYmFj
a3NJbXBsKCkpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCRGF0YWJhc2VDYWxsYmFja3NJ
bXBsKGRhdGFiYXNlKSk7CiB9CiAKLUlEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbDo6SURCRGF0YWJh
c2VDYWxsYmFja3NJbXBsKCkKLSAgICA6IG1fZGF0YWJhc2UoMCkKK0lEQkRhdGFiYXNlQ2FsbGJh
Y2tzSW1wbDo6SURCRGF0YWJhc2VDYWxsYmFja3NJbXBsKElEQkRhdGFiYXNlKiBkYXRhYmFzZSkK
KyAgICA6IG1fZGF0YWJhc2UoZGF0YWJhc2UpCiB7CiB9CiAKQEAgLTY0LDExICs2NCwxMCBAQCB2
b2lkIElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbDo6b25WZXJzaW9uQ2hhbmdlKGludDY0X3Qgb2xk
VmVyc2lvbiwgaW50NjRfdCBuZXdWZQogICAgICAgICBtX2RhdGFiYXNlLT5vblZlcnNpb25DaGFu
Z2Uob2xkVmVyc2lvbiwgbmV3VmVyc2lvbik7CiB9CiAKLXZvaWQgSURCRGF0YWJhc2VDYWxsYmFj
a3NJbXBsOjpjb25uZWN0KElEQkRhdGFiYXNlKiBkYXRhYmFzZSkKK3ZvaWQgSURCRGF0YWJhc2VD
YWxsYmFja3NJbXBsOjp1bnJlZ2lzdGVyRGF0YWJhc2UoSURCRGF0YWJhc2UqIGRhdGFiYXNlKQog
ewotICAgIEFTU0VSVCghbV9kYXRhYmFzZSk7Ci0gICAgQVNTRVJUKGRhdGFiYXNlKTsKLSAgICBt
X2RhdGFiYXNlID0gZGF0YWJhc2U7CisgICAgQVNTRVJUX1VOVVNFRChkYXRhYmFzZSwgZGF0YWJh
c2UgPT0gbV9kYXRhYmFzZSk7CisgICAgbV9kYXRhYmFzZSA9IDA7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmgKaW5kZXggYmI0YTFhZTc0ZTgyMjczOGIz
M2RkNmMwODA5ZTcyZTYxMGZkM2NiYy4uODc4MWRiYjBhMzE1MGE0NDM5MjQyMzdlMmUxZjM0ZmJh
ZTI5MGU5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
RGF0YWJhc2VDYWxsYmFja3NJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmgKQEAgLTM4LDIwICszOCwxOCBAQCBjbGFz
cyBJREJEYXRhYmFzZTsKIAogY2xhc3MgSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsIDogcHVibGlj
IElEQkRhdGFiYXNlQ2FsbGJhY2tzIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJ
REJEYXRhYmFzZUNhbGxiYWNrc0ltcGw+IGNyZWF0ZSgpOworICAgIHN0YXRpYyBQYXNzUmVmUHRy
PElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbD4gY3JlYXRlKElEQkRhdGFiYXNlKik7CiAgICAgdmly
dHVhbCB+SURCRGF0YWJhc2VDYWxsYmFja3NJbXBsKCk7CiAKLSAgICAvLyBJREJEYXRhYmFzZUNh
bGxiYWNrcwogICAgIHZpcnR1YWwgdm9pZCBvbkZvcmNlZENsb3NlKCk7CiAgICAgdmlydHVhbCB2
b2lkIG9uVmVyc2lvbkNoYW5nZShjb25zdCBTdHJpbmcmIHZlcnNpb24pOwogICAgIHZpcnR1YWwg
dm9pZCBvblZlcnNpb25DaGFuZ2UoaW50NjRfdCBvbGRWZXJzaW9uLCBpbnQ2NF90IG5ld1ZlcnNp
b24pOwotCi0gICAgdm9pZCBjb25uZWN0KElEQkRhdGFiYXNlKik7CisgICAgdm9pZCB1bnJlZ2lz
dGVyRGF0YWJhc2UoSURCRGF0YWJhc2UqKTsKIAogcHJpdmF0ZToKLSAgICBJREJEYXRhYmFzZUNh
bGxiYWNrc0ltcGwoKTsKKyAgICBJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwoSURCRGF0YWJhc2Uq
KTsKIAotICAgIC8vIFRoZSBpbml0aWFsIElEQk9wZW5EQlJlcXVlc3Qgb3IgZmluYWwgSURCRGF0
YWJhc2UgbWFpbnRhaW5zIGEgUmVmUHRyIHRvIHRoaXMKKyAgICAvLyBtX2RhdGFiYXNlIGhhcyBh
IFJlZlB0ciB0byB0aGlzLCBzbyB1c2UgYSB3ZWFrIHBvaW50ZXIgdG8gYXZvaWQgYSBjeWNsZS4K
ICAgICBJREJEYXRhYmFzZSogbV9kYXRhYmFzZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5jcHAKaW5kZXggMDY4MDE0YzhlZWRkOWUyMGE2
NjhkZGY1YzlkYjEyMmJmYThkNmU2OS4uNDk5OGY2YTE3ZDcxMTFkYWY1OWU1YzM1NjJmODU1Njkx
MmI5ZTE4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
RmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFj
dG9yeS5jcHAKQEAgLTEyMCw5ICsxMjAsOCBAQCBQYXNzUmVmUHRyPElEQk9wZW5EQlJlcXVlc3Q+
IElEQkZhY3Rvcnk6Om9wZW4oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgYwogICAg
IGlmICghaXNDb250ZXh0VmFsaWQoY29udGV4dCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAg
UmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbD4gZGF0YWJhc2VDYWxsYmFja3MgPSBJREJE
YXRhYmFzZUNhbGxiYWNrc0ltcGw6OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxJREJPcGVuREJSZXF1
ZXN0PiByZXF1ZXN0ID0gSURCT3BlbkRCUmVxdWVzdDo6Y3JlYXRlKGNvbnRleHQsIElEQkFueTo6
Y3JlYXRlTnVsbCgpLCBkYXRhYmFzZUNhbGxiYWNrcywgdmVyc2lvbik7Ci0gICAgbV9iYWNrZW5k
LT5vcGVuKG5hbWUsIHZlcnNpb24sIHJlcXVlc3QsIGRhdGFiYXNlQ2FsbGJhY2tzLCBjb250ZXh0
LT5zZWN1cml0eU9yaWdpbigpLCBjb250ZXh0LCBnZXRJbmRleGVkREJEYXRhYmFzZVBhdGgoY29u
dGV4dCkpOworICAgIFJlZlB0cjxJREJPcGVuREJSZXF1ZXN0PiByZXF1ZXN0ID0gSURCT3BlbkRC
UmVxdWVzdDo6Y3JlYXRlKGNvbnRleHQsIElEQkFueTo6Y3JlYXRlTnVsbCgpLCB2ZXJzaW9uKTsK
KyAgICBtX2JhY2tlbmQtPm9wZW4obmFtZSwgdmVyc2lvbiwgcmVxdWVzdCwgY29udGV4dC0+c2Vj
dXJpdHlPcmlnaW4oKSwgY29udGV4dCwgZ2V0SW5kZXhlZERCRGF0YWJhc2VQYXRoKGNvbnRleHQp
KTsKICAgICByZXR1cm4gcmVxdWVzdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5jcHAKaW5kZXggYzdl
Zjg2MGUxM2UyZDE4MTc5YWU1ZWNjMGM3NTk3MDliODg0M2RlOS4uOGRhNWMwMmU0MjNmNmY2NGU1
Nzk3MzBkYjczZmEyOWVjMmJlNDYwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEltcGwuY3BwCkBAIC0xNTAsNyAr
MTUwLDcgQEAgUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU+IElEQkZhY3RvcnlCYWNrZW5kSW1w
bDo6b3BlbkJhY2tpbmdTdG9yZShQYXNzUmVmUHRyPFMKICAgICByZXR1cm4gMDsKIH0KIAotdm9p
ZCBJREJGYWN0b3J5QmFja2VuZEltcGw6Om9wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBpbnQ2NF90
IHZlcnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIFBhc3NSZWZQdHI8
SURCRGF0YWJhc2VDYWxsYmFja3M+IGRhdGFiYXNlQ2FsbGJhY2tzLCBQYXNzUmVmUHRyPFNlY3Vy
aXR5T3JpZ2luPiBwcnBTZWN1cml0eU9yaWdpbiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNv
bnN0IFN0cmluZyYgZGF0YURpcmVjdG9yeSkKK3ZvaWQgSURCRmFjdG9yeUJhY2tlbmRJbXBsOjpv
cGVuKGNvbnN0IFN0cmluZyYgbmFtZSwgaW50NjRfdCB2ZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNh
bGxiYWNrcz4gY2FsbGJhY2tzLCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBwcnBTZWN1cml0
eU9yaWdpbiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgZGF0YURpcmVj
dG9yeSkKIHsKICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luID0gcHJw
U2VjdXJpdHlPcmlnaW47CiAgICAgY29uc3QgU3RyaW5nIHVuaXF1ZUlkZW50aWZpZXIgPSBjb21w
dXRlVW5pcXVlSWRlbnRpZmllcihuYW1lLCBzZWN1cml0eU9yaWdpbi5nZXQoKSk7CkBAIC0xNzUs
OSArMTc1LDkgQEAgdm9pZCBJREJGYWN0b3J5QmFja2VuZEltcGw6Om9wZW4oY29uc3QgU3RyaW5n
JiBuYW1lLCBpbnQ2NF90IHZlcnNpb24sIFBhc3NSZWZQdHIKICAgICAgICAgZGF0YWJhc2VCYWNr
ZW5kID0gaXQtPnNlY29uZDsKIAogICAgIGlmICh2ZXJzaW9uID09IElEQkRhdGFiYXNlTWV0YWRh
dGE6Ok5vSW50VmVyc2lvbikKLSAgICAgICAgZGF0YWJhc2VCYWNrZW5kLT5vcGVuQ29ubmVjdGlv
bihjYWxsYmFja3MsIGRhdGFiYXNlQ2FsbGJhY2tzKTsKKyAgICAgICAgZGF0YWJhc2VCYWNrZW5k
LT5vcGVuQ29ubmVjdGlvbihjYWxsYmFja3MpOwogICAgIGVsc2UKLSAgICAgICAgZGF0YWJhc2VC
YWNrZW5kLT5vcGVuQ29ubmVjdGlvbldpdGhWZXJzaW9uKGNhbGxiYWNrcywgZGF0YWJhc2VDYWxs
YmFja3MsIHZlcnNpb24pOworICAgICAgICBkYXRhYmFzZUJhY2tlbmQtPm9wZW5Db25uZWN0aW9u
V2l0aFZlcnNpb24oY2FsbGJhY2tzLCB2ZXJzaW9uKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFj
dG9yeUJhY2tlbmRJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJG
YWN0b3J5QmFja2VuZEltcGwuaAppbmRleCAzYWUwNzAzMTBkYWU4NzY0MzU5NmNhOWIyOTkzYzMz
YTQ2NzBiMWIzLi5jYWQzYjVhMjRiMjk5YTkyOTljMmFkMjk0ZTNiMmVhMDRjZmQ3MmE1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2Vu
ZEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5
QmFja2VuZEltcGwuaApAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IHJlbW92ZUlEQkJhY2tpbmdTdG9yZShjb25zdCBTdHJpbmcmIGZpbGVJZGVudGlmaWVyKTsKIAog
ICAgIHZpcnR1YWwgdm9pZCBnZXREYXRhYmFzZU5hbWVzKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tz
PiwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBj
b25zdCBTdHJpbmcmIGRhdGFEaXIpOwotICAgIHZpcnR1YWwgdm9pZCBvcGVuKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgaW50NjRfdCB2ZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBhc3NS
ZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+LCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgZGF0YURpcik7CisgICAgdmly
dHVhbCB2b2lkIG9wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBpbnQ2NF90IHZlcnNpb24sIFBhc3NS
ZWZQdHI8SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4sIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIGRhdGFEaXIpOwogICAgIHZpcnR1YWwgdm9p
ZCBkZWxldGVEYXRhYmFzZShjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8SURCQ2FsbGJh
Y2tzPiwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBjb25zdCBTdHJpbmcmIGRhdGFEaXIpOwogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEludGVyZmFjZS5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbnRl
cmZhY2UuaAppbmRleCBhZTIyNzA2OGY1NjJjMjY5OTU5YjJlNWI5ZmI0MTI5MjZhMWJkZmE5Li5m
NTZmYzA2ZTAwZTYzM2RmNGQ3NGQ5ODNkYjIzYjAyOWI1MjA1NWU4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEludGVyZmFjZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5k
SW50ZXJmYWNlLmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfklEQkZh
Y3RvcnlCYWNrZW5kSW50ZXJmYWNlKCkgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZ2V0RGF0YWJh
c2VOYW1lcyhQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmln
aW4+LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKSA9IDA7
Ci0gICAgdmlydHVhbCB2b2lkIG9wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBpbnQ2NF90IHZlcnNp
b24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxi
YWNrcz4sIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIG9wZW4oY29u
c3QgU3RyaW5nJiBuYW1lLCBpbnQ2NF90IHZlcnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tz
PiwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBj
b25zdCBTdHJpbmcmIGRhdGFEaXIpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlRGF0YWJh
c2UoY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQ
dHI8U2VjdXJpdHlPcmlnaW4+LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5n
JiBkYXRhRGlyKSA9IDA7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJPcGVuREJSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3QuY3BwCmluZGV4IDZlZjE2Y2YwMjkzYTY5MTkwZjk2
Y2QzYTg1YWMzNTI3MjNlYmI2ZjMuLmU4OWE3NGNmZDliZmI3ZmY3NjNiYTZlZTI1ZmQyMmJjZjI0
Njk1MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9w
ZW5EQlJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
Qk9wZW5EQlJlcXVlc3QuY3BwCkBAIC0yOSw3ICsyOSw2IEBACiAjaWYgRU5BQkxFKElOREVYRURf
REFUQUJBU0UpCiAKICNpbmNsdWRlICJJREJEYXRhYmFzZS5oIgotI2luY2x1ZGUgIklEQkRhdGFi
YXNlQ2FsbGJhY2tzSW1wbC5oIgogI2luY2x1ZGUgIklEQlBlbmRpbmdUcmFuc2FjdGlvbk1vbml0
b3IuaCIKICNpbmNsdWRlICJJREJUcmFjaW5nLmgiCiAjaW5jbHVkZSAiSURCVXBncmFkZU5lZWRl
ZEV2ZW50LmgiCkBAIC0zNywxNiArMzYsMTUgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1Q
YXNzUmVmUHRyPElEQk9wZW5EQlJlcXVlc3Q+IElEQk9wZW5EQlJlcXVlc3Q6OmNyZWF0ZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQkFueT4gc291cmNlLCBQ
YXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbD4gY2FsbGJhY2tzLCBpbnQ2NF90IHZl
cnNpb24pCitQYXNzUmVmUHRyPElEQk9wZW5EQlJlcXVlc3Q+IElEQk9wZW5EQlJlcXVlc3Q6OmNy
ZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQkFueT4g
c291cmNlLCBpbnQ2NF90IHZlcnNpb24pCiB7Ci0gICAgUmVmUHRyPElEQk9wZW5EQlJlcXVlc3Q+
IHJlcXVlc3QoYWRvcHRSZWYobmV3IElEQk9wZW5EQlJlcXVlc3QoY29udGV4dCwgc291cmNlLCBj
YWxsYmFja3MsIHZlcnNpb24pKSk7CisgICAgUmVmUHRyPElEQk9wZW5EQlJlcXVlc3Q+IHJlcXVl
c3QoYWRvcHRSZWYobmV3IElEQk9wZW5EQlJlcXVlc3QoY29udGV4dCwgc291cmNlLCB2ZXJzaW9u
KSkpOwogICAgIHJlcXVlc3QtPnN1c3BlbmRJZk5lZWRlZCgpOwogICAgIHJldHVybiByZXF1ZXN0
LnJlbGVhc2UoKTsKIH0KIAotSURCT3BlbkRCUmVxdWVzdDo6SURCT3BlbkRCUmVxdWVzdChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQkFueT4gc291cmNlLCBQ
YXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbD4gY2FsbGJhY2tzLCBpbnQ2NF90IHZl
cnNpb24pCitJREJPcGVuREJSZXF1ZXN0OjpJREJPcGVuREJSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCQW55PiBzb3VyY2UsIGludDY0X3QgdmVy
c2lvbikKICAgICA6IElEQlJlcXVlc3QoY29udGV4dCwgc291cmNlLCBJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbnRlcmZhY2U6Ok5vcm1hbFRhc2ssIDApCi0gICAgLCBtX2RhdGFiYXNlQ2FsbGJhY2tz
KGNhbGxiYWNrcykKICAgICAsIG1fdmVyc2lvbih2ZXJzaW9uKQogewogICAgIEFTU0VSVCghbV9y
ZXN1bHQpOwpAQCAtNzQsMTMgKzcyLDkgQEAgdm9pZCBJREJPcGVuREJSZXF1ZXN0OjpvblVwZ3Jh
ZGVOZWVkZWQoaW50NjRfdCBvbGRWZXJzaW9uLCBQYXNzUmVmUHRyPElEQlRyYW5zYWMKICAgICBp
ZiAoIXNob3VsZEVucXVldWVFdmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBBU1NFUlQo
bV9kYXRhYmFzZUNhbGxiYWNrcyk7Ci0KICAgICBSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50
ZXJmYWNlPiBkYXRhYmFzZUJhY2tlbmQgPSBwcnBEYXRhYmFzZUJhY2tlbmQ7CiAgICAgUmVmUHRy
PElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gdHJhbnNhY3Rpb25CYWNrZW5kID0gcHJw
VHJhbnNhY3Rpb25CYWNrZW5kOwotICAgIFJlZlB0cjxJREJEYXRhYmFzZT4gaWRiRGF0YWJhc2Ug
PSBJREJEYXRhYmFzZTo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgZGF0YWJhc2VC
YWNrZW5kLCBtX2RhdGFiYXNlQ2FsbGJhY2tzKTsKLSAgICBtX2RhdGFiYXNlQ2FsbGJhY2tzLT5j
b25uZWN0KGlkYkRhdGFiYXNlLmdldCgpKTsKLSAgICBtX2RhdGFiYXNlQ2FsbGJhY2tzID0gMDsK
KyAgICBSZWZQdHI8SURCRGF0YWJhc2U+IGlkYkRhdGFiYXNlID0gSURCRGF0YWJhc2U6OmNyZWF0
ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGRhdGFiYXNlQmFja2VuZCk7CiAKICAgICBSZWZQ
dHI8SURCVHJhbnNhY3Rpb24+IGZyb250ZW5kID0gSURCVHJhbnNhY3Rpb246OmNyZWF0ZShzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCksIHRyYW5zYWN0aW9uQmFja2VuZCwgSURCVHJhbnNhY3Rpb246
OlZFUlNJT05fQ0hBTkdFLCBpZGJEYXRhYmFzZS5nZXQoKSwgdGhpcyk7CiAgICAgdHJhbnNhY3Rp
b25CYWNrZW5kLT5zZXRDYWxsYmFja3MoZnJvbnRlbmQuZ2V0KCkpOwpAQCAtMTA0LDE0ICs5OCwx
MSBAQCB2b2lkIElEQk9wZW5EQlJlcXVlc3Q6Om9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQkRhdGFi
YXNlQmFja2VuZEludGVyZmFjZT4gYmFja2VuZAogICAgIGlmIChtX3Jlc3VsdCkgewogICAgICAg
ICBpZGJEYXRhYmFzZSA9IG1fcmVzdWx0LT5pZGJEYXRhYmFzZSgpOwogICAgICAgICBBU1NFUlQo
aWRiRGF0YWJhc2UpOwotICAgICAgICBBU1NFUlQoIW1fZGF0YWJhc2VDYWxsYmFja3MpOwogICAg
IH0gZWxzZSB7Ci0gICAgICAgIEFTU0VSVChtX2RhdGFiYXNlQ2FsbGJhY2tzKTsKLSAgICAgICAg
aWRiRGF0YWJhc2UgPSBJREJEYXRhYmFzZTo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSwgYmFja2VuZCwgbV9kYXRhYmFzZUNhbGxiYWNrcyk7Ci0gICAgICAgIG1fZGF0YWJhc2VDYWxs
YmFja3MtPmNvbm5lY3QoaWRiRGF0YWJhc2UuZ2V0KCkpOwotICAgICAgICBtX2RhdGFiYXNlQ2Fs
bGJhY2tzID0gMDsKKyAgICAgICAgaWRiRGF0YWJhc2UgPSBJREJEYXRhYmFzZTo6Y3JlYXRlKHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgYmFja2VuZCk7CiAgICAgICAgIG1fcmVzdWx0ID0gSURC
QW55OjpjcmVhdGUoaWRiRGF0YWJhc2UuZ2V0KCkpOwogICAgIH0KKyAgICBpZGJEYXRhYmFzZS0+
cmVnaXN0ZXJGcm9udGVuZENhbGxiYWNrcygpOwogICAgIGVucXVldWVFdmVudChFdmVudDo6Y3Jl
YXRlKGV2ZW50TmFtZXMoKS5zdWNjZXNzRXZlbnQsIGZhbHNlLCBmYWxzZSkpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPcGVuREJSZXF1ZXN0
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPcGVuREJSZXF1ZXN0LmgK
aW5kZXggMWU4NGI1NGM5ZGE1MDdhZjU1MTljODA4ODk4NDZkNDJlZmRlZDQ5Zi4uYzg3ZGI3ZWQx
YmRkMmQ0MDUzZTc0YzEwMmEyZWM2ZDY5NTk3MmUzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3QuaApAQCAtMzIsMTEgKzMyLDkg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBJREJEYXRhYmFzZUNhbGxiYWNrc0lt
cGw7Ci0KIGNsYXNzIElEQk9wZW5EQlJlcXVlc3QgOiBwdWJsaWMgSURCUmVxdWVzdCB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURCT3BlbkRCUmVxdWVzdD4gY3JlYXRlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkFueT4gc291cmNlLCBQYXNzUmVmUHRy
PElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbD4sIGludDY0X3QgdmVyc2lvbik7CisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8SURCT3BlbkRCUmVxdWVzdD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBQYXNzUmVmUHRyPElEQkFueT4gc291cmNlLCBpbnQ2NF90IHZlcnNpb24pOwogICAgIHZp
cnR1YWwgfklEQk9wZW5EQlJlcXVlc3QoKTsKIAogICAgIHVzaW5nIElEQlJlcXVlc3Q6Om9uU3Vj
Y2VzczsKQEAgLTU1LDkgKzUzLDggQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgYm9vbCBzaG91
bGRFbnF1ZXVlRXZlbnQoKSBjb25zdCBPVkVSUklERTsKIAogcHJpdmF0ZToKLSAgICBJREJPcGVu
REJSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkFueT4gc291
cmNlLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbD4sIGludDY0X3QgdmVyc2lv
bik7CisgICAgSURCT3BlbkRCUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1Jl
ZlB0cjxJREJBbnk+IHNvdXJjZSwgaW50NjRfdCB2ZXJzaW9uKTsKIAotICAgIFJlZlB0cjxJREJE
YXRhYmFzZUNhbGxiYWNrc0ltcGw+IG1fZGF0YWJhc2VDYWxsYmFja3M7CiAgICAgaW50NjRfdCBt
X3ZlcnNpb247CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJUcmFuc2FjdGlvbi5jcHAKaW5kZXggZTFlMDVmMWYyODg2OGRiMmQyODlmMmVmMDVjZWI0
MmY1MjUwZWNjZC4uMjFlNWYzMjhlMzQ1NTM4OWNlMDg1NjYyMDcwZWVlYTE0NjU1ZjYyOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9u
LmNwcApAQCAtMjk0LDEwICsyOTQsMTIgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6b25BYm9ydCgp
CiAgICAgfQogICAgIG1fb2JqZWN0U3RvcmVDbGVhbnVwTWFwLmNsZWFyKCk7CiAgICAgY2xvc2VP
cGVuQ3Vyc29ycygpOworICAgIG1fZGF0YWJhc2UtPnRyYW5zYWN0aW9uRmluaXNoZWQodGhpcyk7
CisKKyAgICBpZiAobV9jb250ZXh0U3RvcHBlZCB8fCAhc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
KQorICAgICAgICByZXR1cm47CiAKLSAgICAvLyBFbnF1ZXVlIGV2ZW50cyBiZWZvcmUgbm90aWZ5
aW5nIGRhdGFiYXNlLCBhcyBkYXRhYmFzZSBtYXkgY2xvc2Ugd2hpY2ggZW5xdWV1ZXMgbW9yZSBl
dmVudHMgYW5kIG9yZGVyIG1hdHRlcnMuCiAgICAgZW5xdWV1ZUV2ZW50KEV2ZW50OjpjcmVhdGUo
ZXZlbnROYW1lcygpLmFib3J0RXZlbnQsIHRydWUsIGZhbHNlKSk7Ci0gICAgbV9kYXRhYmFzZS0+
dHJhbnNhY3Rpb25GaW5pc2hlZCh0aGlzKTsKIH0KIAogdm9pZCBJREJUcmFuc2FjdGlvbjo6b25D
b21wbGV0ZSgpCkBAIC0zMDcsMTAgKzMwOSwxMiBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpvbkNv
bXBsZXRlKCkKICAgICBtX3N0YXRlID0gRmluaXNoaW5nOwogICAgIG1fb2JqZWN0U3RvcmVDbGVh
bnVwTWFwLmNsZWFyKCk7CiAgICAgY2xvc2VPcGVuQ3Vyc29ycygpOworICAgIG1fZGF0YWJhc2Ut
PnRyYW5zYWN0aW9uRmluaXNoZWQodGhpcyk7CisKKyAgICBpZiAobV9jb250ZXh0U3RvcHBlZCB8
fCAhc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQorICAgICAgICByZXR1cm47CiAKLSAgICAvLyBF
bnF1ZXVlIGV2ZW50cyBiZWZvcmUgbm90aWZ5aW5nIGRhdGFiYXNlLCBhcyBkYXRhYmFzZSBtYXkg
Y2xvc2Ugd2hpY2ggZW5xdWV1ZXMgbW9yZSBldmVudHMgYW5kIG9yZGVyIG1hdHRlcnMuCiAgICAg
ZW5xdWV1ZUV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNvbXBsZXRlRXZlbnQsIGZh
bHNlLCBmYWxzZSkpOwotICAgIG1fZGF0YWJhc2UtPnRyYW5zYWN0aW9uRmluaXNoZWQodGhpcyk7
CiB9CiAKIGJvb2wgSURCVHJhbnNhY3Rpb246Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdl
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50
LmNwcAppbmRleCBmMTJiZDBkYWNmOGUzMGFmYjhkZjI1NTg2ZTU5MTU1YzZkOGQyYzQzLi41ZGZk
OTk1MTk1OGJhNjBlODI4ZTRlYzUzNTAzNmMzNTE0MTlhMmRhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKQEAgLTE3Miwz
NSArMTcyLDM1IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fc2VjdXJpdHlPcmlnaW47CiB9Owog
CitjbGFzcyBFeGVjdXRhYmxlV2l0aERhdGFiYXNlIDogcHVibGljIFJlZkNvdW50ZWQ8RXhlY3V0
YWJsZVdpdGhEYXRhYmFzZT4geworcHVibGljOgorICAgIHZpcnR1YWwgfkV4ZWN1dGFibGVXaXRo
RGF0YWJhc2UoKSB7IH07CisgICAgdm9pZCBzdGFydChJREJGYWN0b3J5QmFja2VuZEludGVyZmFj
ZSosIFNlY3VyaXR5T3JpZ2luKiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmlu
ZyYgZGF0YWJhc2VOYW1lKTsKKyAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZShQYXNzUmVmUHRyPElE
QkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4pID0gMDsKK307CisKIGNsYXNzIERhdGFiYXNlQ29u
bmVjdGlvbiB7CiBwdWJsaWM6CiAgICAgRGF0YWJhc2VDb25uZWN0aW9uKCkKICAgICAgICAgOiBt
X2lkYkRhdGFiYXNlQ2FsbGJhY2tzKEluc3BlY3RvcklEQkRhdGFiYXNlQ2FsbGJhY2tzOjpjcmVh
dGUoKSkgeyB9CiAKKyAgICB2b2lkIGNvbm5lY3QoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tl
bmRJbnRlcmZhY2U+IGlkYkRhdGFiYXNlKQorICAgIHsKKyAgICAgICAgbV9pZGJEYXRhYmFzZSA9
IGlkYkRhdGFiYXNlOworICAgICAgICBtX2lkYkRhdGFiYXNlLT5yZWdpc3RlckZyb250ZW5kQ2Fs
bGJhY2tzKG1faWRiRGF0YWJhc2VDYWxsYmFja3MpOworICAgIH0KKwogICAgIH5EYXRhYmFzZUNv
bm5lY3Rpb24oKQogICAgIHsKICAgICAgICAgaWYgKG1faWRiRGF0YWJhc2UpCiAgICAgICAgICAg
ICBtX2lkYkRhdGFiYXNlLT5jbG9zZShtX2lkYkRhdGFiYXNlQ2FsbGJhY2tzKTsKICAgICB9CiAK
LSAgICB2b2lkIGNvbm5lY3QoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+
IGRhdGFiYXNlKSB7IG1faWRiRGF0YWJhc2UgPSBkYXRhYmFzZTsgfQotICAgIFBhc3NSZWZQdHI8
SURCRGF0YWJhc2VDYWxsYmFja3M+IGNhbGxiYWNrcygpIHsgcmV0dXJuIG1faWRiRGF0YWJhc2VD
YWxsYmFja3M7IH0KLQogcHJpdmF0ZToKICAgICBSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50
ZXJmYWNlPiBtX2lkYkRhdGFiYXNlOwogICAgIFJlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4g
bV9pZGJEYXRhYmFzZUNhbGxiYWNrczsKIH07CiAKLWNsYXNzIEV4ZWN1dGFibGVXaXRoRGF0YWJh
c2UgOiBwdWJsaWMgUmVmQ291bnRlZDxFeGVjdXRhYmxlV2l0aERhdGFiYXNlPiB7Ci1wdWJsaWM6
Ci0gICAgdmlydHVhbCB+RXhlY3V0YWJsZVdpdGhEYXRhYmFzZSgpIHsgfTsKLSAgICB2b2lkIHN0
YXJ0KElEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlKiwgU2VjdXJpdHlPcmlnaW4qLCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUpOwotICAgIHZvaWQg
Y29ubmVjdChQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4gZGF0YWJhc2Up
IHsgbV9jb25uZWN0aW9uLmNvbm5lY3QoZGF0YWJhc2UpOyB9Ci0gICAgdmlydHVhbCB2b2lkIGV4
ZWN1dGUoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+KSA9IDA7Ci1wcml2
YXRlOgotICAgIERhdGFiYXNlQ29ubmVjdGlvbiBtX2Nvbm5lY3Rpb247Ci19OwotCiBjbGFzcyBP
cGVuRGF0YWJhc2VDYWxsYmFjayA6IHB1YmxpYyBJbnNwZWN0b3JJREJDYWxsYmFjayB7CiBwdWJs
aWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8T3BlbkRhdGFiYXNlQ2FsbGJhY2s+IGNyZWF0ZShF
eGVjdXRhYmxlV2l0aERhdGFiYXNlKiBleGVjdXRhYmxlV2l0aERhdGFiYXNlKQpAQCAtMjEzLDcg
KzIxMyw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8
SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBwcnBEYXRhYmFzZSkKICAgICB7CiAgICAgICAg
IFJlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+IGlkYkRhdGFiYXNlID0gcHJwRGF0
YWJhc2U7Ci0gICAgICAgIG1fZXhlY3V0YWJsZVdpdGhEYXRhYmFzZS0+Y29ubmVjdChpZGJEYXRh
YmFzZSk7CiAgICAgICAgIG1fZXhlY3V0YWJsZVdpdGhEYXRhYmFzZS0+ZXhlY3V0ZShpZGJEYXRh
YmFzZSk7CiAgICAgfQogCkBAIC0yMjYsNyArMjI1LDcgQEAgcHJpdmF0ZToKIHZvaWQgRXhlY3V0
YWJsZVdpdGhEYXRhYmFzZTo6c3RhcnQoSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UqIGlkYkZh
Y3RvcnksIFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbiwgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUpCiB7CiAgICAgUmVmUHRy
PE9wZW5EYXRhYmFzZUNhbGxiYWNrPiBjYWxsYmFjayA9IE9wZW5EYXRhYmFzZUNhbGxiYWNrOjpj
cmVhdGUodGhpcyk7Ci0gICAgaWRiRmFjdG9yeS0+b3BlbihkYXRhYmFzZU5hbWUsIElEQkRhdGFi
YXNlTWV0YWRhdGE6Ok5vSW50VmVyc2lvbiwgY2FsbGJhY2ssIG1fY29ubmVjdGlvbi5jYWxsYmFj
a3MoKSwgc2VjdXJpdHlPcmlnaW4sIGNvbnRleHQsIFN0cmluZygpKTsKKyAgICBpZGJGYWN0b3J5
LT5vcGVuKGRhdGFiYXNlTmFtZSwgSURCRGF0YWJhc2VNZXRhZGF0YTo6Tm9JbnRWZXJzaW9uLCBj
YWxsYmFjay5nZXQoKSwgc2VjdXJpdHlPcmlnaW4sIGNvbnRleHQsIFN0cmluZygpKTsKIH0KIAog
c3RhdGljIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiB0cmFuc2Fj
dGlvbkZvckRhdGFiYXNlKElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZSogaWRiRGF0YWJhc2Us
IGNvbnN0IFN0cmluZyYgb2JqZWN0U3RvcmVOYW1lKQpAQCAtMjk3LDYgKzI5Niw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZShQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2Vu
ZEludGVyZmFjZT4gcHJwRGF0YWJhc2UpCiAgICAgewogICAgICAgICBSZWZQdHI8SURCRGF0YWJh
c2VCYWNrZW5kSW50ZXJmYWNlPiBpZGJEYXRhYmFzZSA9IHBycERhdGFiYXNlOworICAgICAgICBt
X2Nvbm5lY3Rpb24uY29ubmVjdChpZGJEYXRhYmFzZSk7CiAgICAgICAgIGlmICghbV9yZXF1ZXN0
Q2FsbGJhY2stPmlzQWN0aXZlKCkpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTMzOSw2ICsz
MzksNyBAQCBwcml2YXRlOgogICAgIERhdGFiYXNlTG9hZGVyQ2FsbGJhY2soUGFzc1JlZlB0cjxS
ZXF1ZXN0RGF0YWJhc2VDYWxsYmFjaz4gcmVxdWVzdENhbGxiYWNrKQogICAgICAgICA6IG1fcmVx
dWVzdENhbGxiYWNrKHJlcXVlc3RDYWxsYmFjaykgeyB9CiAgICAgUmVmUHRyPFJlcXVlc3REYXRh
YmFzZUNhbGxiYWNrPiBtX3JlcXVlc3RDYWxsYmFjazsKKyAgICBEYXRhYmFzZUNvbm5lY3Rpb24g
bV9jb25uZWN0aW9uOwogfTsKIAogc3RhdGljIFBhc3NSZWZQdHI8SURCS2V5PiBpZGJLZXlGcm9t
SW5zcGVjdG9yT2JqZWN0KEluc3BlY3Rvck9iamVjdCoga2V5KQpAQCAtNTU0LDYgKzU1NSw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZShQYXNzUmVmUHRyPElEQkRhdGFiYXNl
QmFja2VuZEludGVyZmFjZT4gcHJwRGF0YWJhc2UpCiAgICAgewogICAgICAgICBSZWZQdHI8SURC
RGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBpZGJEYXRhYmFzZSA9IHBycERhdGFiYXNlOworICAg
ICAgICBtX2Nvbm5lY3Rpb24uY29ubmVjdChpZGJEYXRhYmFzZSk7CiAgICAgICAgIGlmICghbV9y
ZXF1ZXN0Q2FsbGJhY2stPmlzQWN0aXZlKCkpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTU5
NSw2ICs1OTcsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxJREJLZXlSYW5nZT4gbV9pZGJLZXlS
YW5nZTsKICAgICBpbnQgbV9za2lwQ291bnQ7CiAgICAgdW5zaWduZWQgbV9wYWdlU2l6ZTsKKyAg
ICBEYXRhYmFzZUNvbm5lY3Rpb24gbV9jb25uZWN0aW9uOwogfTsKIAogfSAvLyBuYW1lc3BhY2UK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkRhdGFiYXNl
LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJEYXRhYmFzZS5oCmluZGV4
IDU5MmExMGUzZTE5NzAxZmU0MDg4ZjMyOWQxMmVjOTgwMGY5NGQyOTUuLmE4YjAzNWM3MjdmODhk
ZGJmMGNlMTcwZWFkNzQxODVjNjhiZTJhZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYklEQkRhdGFiYXNlLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViSURCRGF0YWJhc2UuaApAQCAtNjYsNyArNjYsNiBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIGNsb3NlKCkgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgZm9yY2VDbG9zZSgpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OyB9CiAKLSAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgbWV0aG9kIGFmdGVyIFdLOTA0MTEgY2xl
YW51cCBpcyBjb21wbGV0ZSBvbiB0aGUgQ2hyb21pdW0gc2lkZS4KICAgICB2aXJ0dWFsIHZvaWQg
b3BlbihXZWJJREJEYXRhYmFzZUNhbGxiYWNrcyopIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOyB9CiAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYklEQkZhY3RvcnkuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YklEQkZhY3RvcnkuaAppbmRleCA2OWE0NTNhYmNkOTQ0ZTM3MjZhYjVhYmFlODZlNDdjN2Q5YTVj
NDM4Li43MGM4Yzg0MGMxMTgxMGVjN2VhNTE0NTVjNGZkZTc0MWMyYjMxYWRiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJGYWN0b3J5LmgKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCRmFjdG9yeS5oCkBAIC01NSw3ICs1NSw3
IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBnZXREYXRhYmFzZU5hbWVzKFdlYklEQkNh
bGxiYWNrcyogY2FsbGJhY2tzLCBjb25zdCBXZWJTZWN1cml0eU9yaWdpbiYgb3JpZ2luLCBXZWJG
cmFtZSogZnJhbWUsIGNvbnN0IFdlYlN0cmluZyYgZGF0YURpcikgeyBXRUJLSVRfQVNTRVJUX05P
VF9SRUFDSEVEKCk7IH0KIAotICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBvdmVybG9hZCBhZnRl
ciBXSzkwNDExIGNsZWFudXAgaXMgY29tcGxldGUgb24gdGhlIENocm9taXVtIHNpZGUuCisgICAg
Ly8gRklYTUU6IFRoaXMgb3ZlcmxvYWQgc2hvdWxkIGJlIHJlbW92ZWQgd2hlbiBXSzkwNDExIGxh
bmRzLgogICAgIC8vIFRoZSBXZWJLaXQgaW1wbGVtZW50YXRpb24gb2Ygb3BlbiBpZ25vcmVzIHRo
ZSBXZWJGcmFtZSogcGFyYW1ldGVyLgogICAgIHZpcnR1YWwgdm9pZCBvcGVuKGNvbnN0IFdlYlN0
cmluZyYgbmFtZSwgbG9uZyBsb25nIHZlcnNpb24sIFdlYklEQkNhbGxiYWNrcyogY2FsbGJhY2tz
LCBjb25zdCBXZWJTZWN1cml0eU9yaWdpbiYgb3JpZ2luLCBXZWJGcmFtZSogZnJhbWUsIGNvbnN0
IFdlYlN0cmluZyYgZGF0YURpcikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHkuY3BwCmlu
ZGV4IGFmNDk4NGE3N2M0Yjg1ZTI2ZTI5ZWY4OGE4ZDI4M2RlNDZhY2MzOGMuLjE5M2JmMmI1ZjZj
NjY2YzdiZDUwNjJhZDQ0NzQ0MTViZmIzMDQyOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5jcHAKQEAgLTM0LDE1ICszNCwxMyBAQAogI2lu
Y2x1ZGUgIklEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJJREJEYXRhYmFz
ZUJhY2tlbmRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJJREJEYXRhYmFzZUJhY2tlbmRQcm94eS5o
IgotI2luY2x1ZGUgIklEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHkuaCIKICNpbmNsdWRlICJJREJE
YXRhYmFzZUVycm9yLmgiCiAjaW5jbHVkZSAiSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNl
LmgiCiAjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVk
ZSAiV2ViSURCQ2FsbGJhY2tzLmgiCiAjaW5jbHVkZSAiV2ViSURCQ3Vyc29ySW1wbC5oIgotI2lu
Y2x1ZGUgIldlYklEQkRhdGFiYXNlQ2FsbGJhY2tzLmgiCi0jaW5jbHVkZSAiV2ViSURCRGF0YWJh
c2VFcnJvci5oIgogI2luY2x1ZGUgIldlYklEQkRhdGFiYXNlSW1wbC5oIgorI2luY2x1ZGUgIldl
YklEQkRhdGFiYXNlRXJyb3IuaCIKICNpbmNsdWRlICJXZWJJREJLZXkuaCIKICNpbmNsdWRlICJX
ZWJJREJUcmFuc2FjdGlvbkltcGwuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJTZXJpYWxpemVk
U2NyaXB0VmFsdWUuaCIKQEAgLTc3LDggKzc1LDcgQEAgdm9pZCBJREJDYWxsYmFja3NQcm94eTo6
b25TdWNjZXNzKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4gaWRiQ3Vyc28K
IAogdm9pZCBJREJDYWxsYmFja3NQcm94eTo6b25TdWNjZXNzKFBhc3NSZWZQdHI8SURCRGF0YWJh
c2VCYWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kKQogewotICAgIEFTU0VSVChtX2RhdGFiYXNlQ2Fs
bGJhY2tzLmdldCgpKTsKLSAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKG5ldyBXZWJJREJEYXRh
YmFzZUltcGwoYmFja2VuZCwgbV9kYXRhYmFzZUNhbGxiYWNrcy5yZWxlYXNlKCkpKTsKKyAgICBt
X2NhbGxiYWNrcy0+b25TdWNjZXNzKG5ldyBXZWJJREJEYXRhYmFzZUltcGwoYmFja2VuZCkpOwog
fQogCiB2b2lkIElEQkNhbGxiYWNrc1Byb3h5OjpvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJLZXk+
IGlkYktleSkKQEAgLTE0MCwxNyArMTM3LDkgQEAgdm9pZCBJREJDYWxsYmFja3NQcm94eTo6b25C
bG9ja2VkKGludDY0X3QgZXhpc3RpbmdWZXJzaW9uKQogCiB2b2lkIElEQkNhbGxiYWNrc1Byb3h5
OjpvblVwZ3JhZGVOZWVkZWQoaW50NjRfdCBvbGRWZXJzaW9uLCBQYXNzUmVmUHRyPElEQlRyYW5z
YWN0aW9uQmFja2VuZEludGVyZmFjZT4gdHJhbnNhY3Rpb24sIFBhc3NSZWZQdHI8SURCRGF0YWJh
c2VCYWNrZW5kSW50ZXJmYWNlPiBkYXRhYmFzZSkKIHsKLSAgICBBU1NFUlQobV9kYXRhYmFzZUNh
bGxiYWNrcyk7Ci0gICAgbV9jYWxsYmFja3MtPm9uVXBncmFkZU5lZWRlZChvbGRWZXJzaW9uLCBu
ZXcgV2ViSURCVHJhbnNhY3Rpb25JbXBsKHRyYW5zYWN0aW9uKSwgbmV3IFdlYklEQkRhdGFiYXNl
SW1wbChkYXRhYmFzZSwgbV9kYXRhYmFzZUNhbGxiYWNrcykpOwotfQotCi12b2lkIElEQkNhbGxi
YWNrc1Byb3h5OjpzZXREYXRhYmFzZUNhbGxiYWNrcyhQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2Fs
bGJhY2tzUHJveHk+IGRhdGFiYXNlQ2FsbGJhY2tzKQotewotICAgIEFTU0VSVCghbV9kYXRhYmFz
ZUNhbGxiYWNrcyk7Ci0gICAgbV9kYXRhYmFzZUNhbGxiYWNrcyA9IGRhdGFiYXNlQ2FsbGJhY2tz
OworICAgIG1fY2FsbGJhY2tzLT5vblVwZ3JhZGVOZWVkZWQob2xkVmVyc2lvbiwgbmV3IFdlYklE
QlRyYW5zYWN0aW9uSW1wbCh0cmFuc2FjdGlvbiksIG5ldyBXZWJJREJEYXRhYmFzZUltcGwoZGF0
YWJhc2UpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKLQogI2VuZGlmIC8vIEVOQUJM
RShJTkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvSURCQ2FsbGJhY2tzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNh
bGxiYWNrc1Byb3h5LmgKaW5kZXggZjYxM2E4NWMyZTRlZDE2Y2I4ODdmNjhhMDUwMzE4NDljYjFj
ZWYyMC4uODI1NzU4YWFkZTkzZjQxZjI2MjkzMDM2OGJkOTY2NjBmZTUyYTUyNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5oCkBAIC0zOSw3ICsz
OSw2IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViSURCQ2FsbGJhY2tzOwotY2xh
c3MgSURCRGF0YWJhc2VDYWxsYmFja3NQcm94eTsKIAogY2xhc3MgSURCQ2FsbGJhY2tzUHJveHkg
OiBwdWJsaWMgV2ViQ29yZTo6SURCQ2FsbGJhY2tzIHsKIHB1YmxpYzoKQEAgLTYwLDEzICs1OSwx
MCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIG9uQmxvY2tlZChpbnQ2NF90IGV4aXN0aW5n
VmVyc2lvbik7CiAgICAgdmlydHVhbCB2b2lkIG9uVXBncmFkZU5lZWRlZChpbnQ2NF90IG9sZFZl
cnNpb24sIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNl
PiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+KTsKIAot
ICAgIHZvaWQgc2V0RGF0YWJhc2VDYWxsYmFja3MoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxi
YWNrc1Byb3h5Pik7Ci0KIHByaXZhdGU6CiAgICAgSURCQ2FsbGJhY2tzUHJveHkoUGFzc093blB0
cjxXZWJJREJDYWxsYmFja3M+KTsKIAogICAgIE93blB0cjxXZWJJREJDYWxsYmFja3M+IG1fY2Fs
bGJhY2tzOwotICAgIFJlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5PiBtX2RhdGFiYXNl
Q2FsbGJhY2tzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5jcHAKaW5kZXgg
NTAxY2U2MWZiNTk1NjI2NmIwYzNiZjFiNGMwMmFlZjZjZGEwMDgwNi4uNTZhZmU1ZmI1ZDJiNjJm
YTQ0NDk5NTQ0NjkzMGEwMWQwYmM5Nzc5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmNwcApAQCAtMTA3LDYgKzEwNywx
MSBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZFByb3h5OjpjbG9zZShQYXNzUmVmUHRyPElEQkRh
dGFiYXNlQ2FsbGJhY2tzPikKICAgICBtX3dlYklEQkRhdGFiYXNlLT5jbG9zZSgpOwogfQogCit2
b2lkIElEQkRhdGFiYXNlQmFja2VuZFByb3h5OjpyZWdpc3RlckZyb250ZW5kQ2FsbGJhY2tzKFBh
c3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IGRhdGFiYXNlQ2FsbGJhY2tzKQoreworICAg
IG1fd2ViSURCRGF0YWJhc2UtPm9wZW4obmV3IFdlYklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbChk
YXRhYmFzZUNhbGxiYWNrcykpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlm
IC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmgKaW5kZXggNzk1NjEwYWE2NTcyZGNh
NDZjYzI2NGRiNWIwOGJkMTc4YzFjNTY1MC4uMmE5MzYwMGM2ZjJmYTBjMjY3YzJkYTA2ZmI4Yjky
MTZmZDgyOGUzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0
YWJhc2VCYWNrZW5kUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJE
YXRhYmFzZUJhY2tlbmRQcm94eS5oCkBAIC01MCw2ICs1MCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiB0
cmFuc2FjdGlvbihXZWJDb3JlOjpET01TdHJpbmdMaXN0KiBzdG9yZU5hbWVzLCB1bnNpZ25lZCBz
aG9ydCBtb2RlLCBXZWJDb3JlOjpFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lkIGNs
b3NlKFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCRGF0YWJhc2VDYWxsYmFja3M+KTsKIAorICAgIHZp
cnR1YWwgdm9pZCByZWdpc3RlckZyb250ZW5kQ2FsbGJhY2tzKFBhc3NSZWZQdHI8V2ViQ29yZTo6
SURCRGF0YWJhc2VDYWxsYmFja3M+KTsKKwogcHJpdmF0ZToKICAgICBJREJEYXRhYmFzZUJhY2tl
bmRQcm94eShQYXNzT3duUHRyPFdlYklEQkRhdGFiYXNlPik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkZhY3RvcnlCYWNrZW5kUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRmFjdG9yeUJhY2tlbmRQcm94eS5jcHAKaW5kZXggMjg5
OTVlYzY2MGUzMWZmN2NlZmFkOTNlYjNiZGEyMzQxYWExZWZmOC4uYmFiY2JhZTE4NDA5YzVkZDI1
OTJjMGRmZDkyMzMyNmZiZjYwZTk0YSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvSURCRmFjdG9yeUJhY2tlbmRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvSURCRmFjdG9yeUJhY2tlbmRQcm94eS5jcHAKQEAgLTM0LDE0ICszNCwxMiBAQAog
I2luY2x1ZGUgIkNyb3NzVGhyZWFkVGFzay5oIgogI2luY2x1ZGUgIkRPTVN0cmluZ0xpc3QuaCIK
ICNpbmNsdWRlICJJREJEYXRhYmFzZUJhY2tlbmRQcm94eS5oIgotI2luY2x1ZGUgIklEQkRhdGFi
YXNlQ2FsbGJhY2tzLmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VFcnJvci5oIgogI2luY2x1ZGUg
IlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgog
I2luY2x1ZGUgIldlYkZyYW1lSW1wbC5oIgogI2luY2x1ZGUgIldlYklEQkNhbGxiYWNrc0ltcGwu
aCIKICNpbmNsdWRlICJXZWJJREJEYXRhYmFzZS5oIgotI2luY2x1ZGUgIldlYklEQkRhdGFiYXNl
Q2FsbGJhY2tzSW1wbC5oIgogI2luY2x1ZGUgIldlYklEQkRhdGFiYXNlRXJyb3IuaCIKICNpbmNs
dWRlICJXZWJJREJGYWN0b3J5LmgiCiAjaW5jbHVkZSAiV2ViS2l0LmgiCkBAIC0yMDUsMTYgKzIw
MywxNSBAQCB2b2lkIElEQkZhY3RvcnlCYWNrZW5kUHJveHk6OmdldERhdGFiYXNlTmFtZXMoUGFz
c1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYQogfQogCiAKLXZvaWQgSURCRmFjdG9yeUJh
Y2tlbmRQcm94eTo6b3Blbihjb25zdCBTdHJpbmcmIG5hbWUsIGludDY0X3QgdmVyc2lvbiwgUGFz
c1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywgUGFzc1JlZlB0cjxJREJEYXRhYmFz
ZUNhbGxiYWNrcz4gcHJwRGF0YWJhc2VDYWxsYmFja3MsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmln
aW4+IHNlY3VyaXR5T3JpZ2luLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25z
dCBTdHJpbmcmIGRhdGFEaXIpCit2b2lkIElEQkZhY3RvcnlCYWNrZW5kUHJveHk6Om9wZW4oY29u
c3QgU3RyaW5nJiBuYW1lLCBpbnQ2NF90IHZlcnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tz
PiBwcnBDYWxsYmFja3MsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2lu
LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIGRhdGFEaXIp
CiB7CiAgICAgUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKHBycENhbGxiYWNrcyk7Ci0g
ICAgUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBkYXRhYmFzZUNhbGxiYWNrcyhwcnBEYXRh
YmFzZUNhbGxiYWNrcyk7CiAgICAgV2ViU2VjdXJpdHlPcmlnaW4gb3JpZ2luKHNlY3VyaXR5T3Jp
Z2luKTsKICAgICBpZiAoIWFsbG93SW5kZXhlZERCKGNvbnRleHQsIG5hbWUsIG9yaWdpbiwgY2Fs
bGJhY2tzKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgV2ViRnJhbWVJbXBsKiB3ZWJGcmFtZSA9
IGdldFdlYkZyYW1lKGNvbnRleHQpOwotICAgIG1fd2ViSURCRmFjdG9yeS0+b3BlbihuYW1lLCB2
ZXJzaW9uLCBuZXcgV2ViSURCQ2FsbGJhY2tzSW1wbChjYWxsYmFja3MpLCBuZXcgV2ViSURCRGF0
YWJhc2VDYWxsYmFja3NJbXBsKGRhdGFiYXNlQ2FsbGJhY2tzKSwgb3JpZ2luLCB3ZWJGcmFtZSwg
ZGF0YURpcik7CisgICAgbV93ZWJJREJGYWN0b3J5LT5vcGVuKG5hbWUsIHZlcnNpb24sIG5ldyBX
ZWJJREJDYWxsYmFja3NJbXBsKGNhbGxiYWNrcyksIG9yaWdpbiwgd2ViRnJhbWUsIGRhdGFEaXIp
OwogfQogCiB2b2lkIElEQkZhY3RvcnlCYWNrZW5kUHJveHk6OmRlbGV0ZURhdGFiYXNlKGNvbnN0
IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywgUGFz
c1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4sIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgZGF0YURpcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkZhY3RvcnlCYWNrZW5kUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0lEQkZhY3RvcnlCYWNrZW5kUHJveHkuaAppbmRleCA4ODM4MGQ3
YTQyZWQxMTczMDI5MzViZWJiY2FjY2ViNmY2ZTk3ZDc4Li5jMGRlOTEwYTkyY2RlYTkxYTNkM2Ex
YzUzMGEyODA3YzVhYmZhYTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9JREJGYWN0b3J5QmFja2VuZFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvSURCRmFjdG9yeUJhY2tlbmRQcm94eS5oCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIH5JREJGYWN0b3J5QmFja2VuZFByb3h5KCk7CiAKICAgICB2aXJ0dWFsIHZvaWQg
Z2V0RGF0YWJhc2VOYW1lcyhQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNrcz4sIFBhc3NS
ZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+LCBXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKTsKLSAgICB2aXJ0dWFsIHZvaWQgb3Blbihj
b25zdCBTdHJpbmcmIG5hbWUsIGludDY0X3QgdmVyc2lvbiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJ
REJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkRhdGFiYXNlQ2FsbGJhY2tzPiwg
UGFzc1JlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4sIFdlYkNvcmU6OlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIGRhdGFEaXIpOworICAgIHZpcnR1YWwgdm9pZCBv
cGVuKGNvbnN0IFN0cmluZyYgbmFtZSwgaW50NjRfdCB2ZXJzaW9uLCBQYXNzUmVmUHRyPFdlYkNv
cmU6OklEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+LCBX
ZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKTsK
ICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlRGF0YWJhc2UoY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNz
UmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW4+LCBXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5n
JiBkYXRhRGlyKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJJREJEYXRhYmFzZUltcGwuY3BwCmluZGV4IDUyODc5YTlhN2YzYjczODBhYmEzMDZlZDY3
M2QwYzQyYTEyOGZjNDYuLjBkMTQyYmMwMjkzYWExM2Y1YjE5MmMzZmRiYzU2MzM3Y2RhYzc1N2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1w
bC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBs
LmNwcApAQCAtNDUsOSArNDUsOCBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNw
YWNlIFdlYktpdCB7CiAKLVdlYklEQkRhdGFiYXNlSW1wbDo6V2ViSURCRGF0YWJhc2VJbXBsKFBh
c3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBkYXRhYmFzZUJhY2tlbmQsIFdU
Rjo6UGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5PiBkYXRhYmFzZUNhbGxiYWNr
cykKK1dlYklEQkRhdGFiYXNlSW1wbDo6V2ViSURCRGF0YWJhc2VJbXBsKFBhc3NSZWZQdHI8SURC
RGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBkYXRhYmFzZUJhY2tlbmQpCiAgICAgOiBtX2RhdGFi
YXNlQmFja2VuZChkYXRhYmFzZUJhY2tlbmQpCi0gICAgLCBtX2RhdGFiYXNlQ2FsbGJhY2tzKGRh
dGFiYXNlQ2FsbGJhY2tzKQogICAgICwgbV9jbG9zZVBlbmRpbmcoZmFsc2UpCiB7CiB9CkBAIC05
NCw3ICs5Myw3IEBAIFdlYklEQlRyYW5zYWN0aW9uKiBXZWJJREJEYXRhYmFzZUltcGw6OnRyYW5z
YWN0aW9uKGNvbnN0IFdlYkRPTVN0cmluZ0xpc3QmIG5hbWVzCiAKIHZvaWQgV2ViSURCRGF0YWJh
c2VJbXBsOjpjbG9zZSgpCiB7Ci0gICAgLy8gVXNlIHRoZSBjYWxsYmFja3MgcGFzc2VkIGluIHRv
IHRoZSBjb25zdHJ1Y3RvciBzbyB0aGF0IHRoZSBiYWNrZW5kIGluCisgICAgLy8gVXNlIHRoZSBj
YWxsYmFja3MgdGhhdCA6Om9wZW4gZ2F2ZSB1cyBzbyB0aGF0IHRoZSBiYWNrZW5kIGluCiAgICAg
Ly8gbXVsdGktcHJvY2VzcyBjaHJvbWl1bSBrbm93cyB3aGljaCBkYXRhYmFzZSBjb25uZWN0aW9u
IGlzIGNsb3NpbmcuCiAgICAgaWYgKCFtX2RhdGFiYXNlQ2FsbGJhY2tzKSB7CiAgICAgICAgIG1f
Y2xvc2VQZW5kaW5nID0gdHJ1ZTsKQEAgLTExNCw2ICsxMTMsMTUgQEAgdm9pZCBXZWJJREJEYXRh
YmFzZUltcGw6OmZvcmNlQ2xvc2UoKQogICAgIGNhbGxiYWNrcy0+b25Gb3JjZWRDbG9zZSgpOwog
fQogCit2b2lkIFdlYklEQkRhdGFiYXNlSW1wbDo6b3BlbihXZWJJREJEYXRhYmFzZUNhbGxiYWNr
cyogY2FsbGJhY2tzKQoreworICAgIEFTU0VSVCghbV9kYXRhYmFzZUNhbGxiYWNrcyk7CisgICAg
bV9kYXRhYmFzZUNhbGxiYWNrcyA9IElEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHk6OmNyZWF0ZShh
ZG9wdFB0cihjYWxsYmFja3MpKTsKKyAgICBtX2RhdGFiYXNlQmFja2VuZC0+cmVnaXN0ZXJGcm9u
dGVuZENhbGxiYWNrcyhtX2RhdGFiYXNlQ2FsbGJhY2tzKTsKKyAgICBpZiAobV9jbG9zZVBlbmRp
bmcpCisgICAgICAgIGNsb3NlKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5k
aWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5oCmluZGV4IDljZDFjYWY1OTIwNjliNTRkZmI5NmNj
ODc4NDRjMzc5NmRiM2EzMDcuLjRhODI4NGNlNTlhZDFlNjM2Y2M0ZmJjOTcyN2JjYjc3YTQyMmMz
MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNl
SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1w
bC5oCkBAIC00Nyw3ICs0Nyw3IEBAIGNsYXNzIFdlYklEQlRyYW5zYWN0aW9uOwogLy8gU2VlIGNv
bW1lbnQgaW4gV2ViSURCRmFjdG9yeSBmb3IgYSBoaWdoIGxldmVsIG92ZXJ2aWV3IHRoZXNlIGNs
YXNzZXMuCiBjbGFzcyBXZWJJREJEYXRhYmFzZUltcGwgOiBwdWJsaWMgV2ViSURCRGF0YWJhc2Ug
ewogcHVibGljOgotICAgIFdlYklEQkRhdGFiYXNlSW1wbChXVEY6OlBhc3NSZWZQdHI8V2ViQ29y
ZTo6SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiwgV1RGOjpQYXNzUmVmUHRyPElEQkRhdGFi
YXNlQ2FsbGJhY2tzUHJveHk+KTsKKyAgICBXZWJJREJEYXRhYmFzZUltcGwoV1RGOjpQYXNzUmVm
UHRyPFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4pOwogICAgIHZpcnR1YWwg
fldlYklEQkRhdGFiYXNlSW1wbCgpOwogCiAgICAgdmlydHVhbCBXZWJJREJNZXRhZGF0YSBtZXRh
ZGF0YSgpIGNvbnN0OwpAQCAtNTksNiArNTksOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IGZvcmNlQ2xvc2UoKTsKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2UoKTsKIAorICAgIC8vIEZJWE1F
OiBSZW5hbWUgIm9wZW4iIHRvIHJlZ2lzdGVyRnJvbnRlbmRDYWxsYmFja3MuCisgICAgdmlydHVh
bCB2b2lkIG9wZW4oV2ViSURCRGF0YWJhc2VDYWxsYmFja3MqKTsKKwogcHJpdmF0ZToKICAgICBX
VEY6OlJlZlB0cjxXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+IG1fZGF0YWJh
c2VCYWNrZW5kOwogICAgIFdURjo6UmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHk+IG1f
ZGF0YWJhc2VDYWxsYmFja3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJJREJGYWN0b3J5SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJ
REJGYWN0b3J5SW1wbC5jcHAKaW5kZXggOTRhOGQ0NjhhOTBhOTBjNDEyYzdhYTZjOThhZWZiNzRi
YjdhMzdiOC4uYWQ3MTQ3NmI3ZWJiNDY4NmVhODI1Yjk2MjE5MTZlNjNiMjkwYWM3NyAxMDA3NTUK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRmFjdG9yeUltcGwuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkZhY3RvcnlJbXBsLmNwcApAQCAt
MzUsMTAgKzM1LDggQEAKIAogI2luY2x1ZGUgIkRPTVN0cmluZ0xpc3QuaCIKICNpbmNsdWRlICJJ
REJDYWxsYmFja3NQcm94eS5oIgotI2luY2x1ZGUgIklEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHku
aCIKICNpbmNsdWRlICJJREJGYWN0b3J5QmFja2VuZEltcGwuaCIKICNpbmNsdWRlICJTZWN1cml0
eU9yaWdpbi5oIgotI2luY2x1ZGUgIldlYklEQkRhdGFiYXNlQ2FsbGJhY2tzLmgiCiAjaW5jbHVk
ZSAiV2ViSURCRGF0YWJhc2VFcnJvci5oIgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KIApAQCAt
NjUsMTIgKzYzLDkgQEAgdm9pZCBXZWJJREJGYWN0b3J5SW1wbDo6Z2V0RGF0YWJhc2VOYW1lcyhX
ZWJJREJDYWxsYmFja3MqIGNhbGxiYWNrcywgY29uc3QgV2ViU2UKICAgICBtX2lkYkZhY3RvcnlC
YWNrZW5kLT5nZXREYXRhYmFzZU5hbWVzKElEQkNhbGxiYWNrc1Byb3h5OjpjcmVhdGUoYWRvcHRQ
dHIoY2FsbGJhY2tzKSksIG9yaWdpbiwgMCwgZGF0YURpcik7CiB9CiAKLXZvaWQgV2ViSURCRmFj
dG9yeUltcGw6Om9wZW4oY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBsb25nIGxvbmcgdmVyc2lvbiwg
V2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFja3MsIFdlYklEQkRhdGFiYXNlQ2FsbGJhY2tzKiBkYXRh
YmFzZUNhbGxiYWNrcywgY29uc3QgV2ViU2VjdXJpdHlPcmlnaW4mIG9yaWdpbiwgV2ViRnJhbWUq
LCBjb25zdCBXZWJTdHJpbmcmIGRhdGFEaXIpCit2b2lkIFdlYklEQkZhY3RvcnlJbXBsOjpvcGVu
KGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgbG9uZyBsb25nIHZlcnNpb24sIFdlYklEQkNhbGxiYWNr
cyogY2FsbGJhY2tzLCBjb25zdCBXZWJTZWN1cml0eU9yaWdpbiYgb3JpZ2luLCBXZWJGcmFtZSos
IGNvbnN0IFdlYlN0cmluZyYgZGF0YURpcikKIHsKLSAgICBSZWZQdHI8SURCQ2FsbGJhY2tzUHJv
eHk+IGNhbGxiYWNrc1Byb3h5ID0gSURCQ2FsbGJhY2tzUHJveHk6OmNyZWF0ZShhZG9wdFB0cihj
YWxsYmFja3MpKTsKLSAgICBSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3NQcm94eT4gZGF0YWJh
c2VDYWxsYmFja3NQcm94eSA9IElEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHk6OmNyZWF0ZShhZG9w
dFB0cihkYXRhYmFzZUNhbGxiYWNrcykpOwotICAgIGNhbGxiYWNrc1Byb3h5LT5zZXREYXRhYmFz
ZUNhbGxiYWNrcyhkYXRhYmFzZUNhbGxiYWNrc1Byb3h5KTsKLSAgICBtX2lkYkZhY3RvcnlCYWNr
ZW5kLT5vcGVuKG5hbWUsIHZlcnNpb24sIGNhbGxiYWNrc1Byb3h5LmdldCgpLCBkYXRhYmFzZUNh
bGxiYWNrc1Byb3h5LmdldCgpLCBvcmlnaW4sIDAsIGRhdGFEaXIpOworICAgIG1faWRiRmFjdG9y
eUJhY2tlbmQtPm9wZW4obmFtZSwgdmVyc2lvbiwgSURCQ2FsbGJhY2tzUHJveHk6OmNyZWF0ZShh
ZG9wdFB0cihjYWxsYmFja3MpKS5nZXQoKSwgb3JpZ2luLCAwLCBkYXRhRGlyKTsKIH0KIAogdm9p
ZCBXZWJJREJGYWN0b3J5SW1wbDo6ZGVsZXRlRGF0YWJhc2UoY29uc3QgV2ViU3RyaW5nJiBuYW1l
LCBXZWJJREJDYWxsYmFja3MqIGNhbGxiYWNrcywgY29uc3QgV2ViU2VjdXJpdHlPcmlnaW4mIG9y
aWdpbiwgV2ViRnJhbWUqLCBjb25zdCBXZWJTdHJpbmcmIGRhdGFEaXIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJGYWN0b3J5SW1wbC5oIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRmFjdG9yeUltcGwuaAppbmRleCAzM2Y1YTIxZDJjNzRm
NThkZmY5NGUxZWI3YjkwZTVhZDQzMGQxNjI3Li44MzNlZWI1OTEyNTliODUzYzMyMWZkMTE4ZjA5
NGE1YjhhN2M4ODY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJ
REJGYWN0b3J5SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkZh
Y3RvcnlJbXBsLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfldlYklE
QkZhY3RvcnlJbXBsKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgZ2V0RGF0YWJhc2VOYW1lcyhXZWJJ
REJDYWxsYmFja3MqLCBjb25zdCBXZWJTZWN1cml0eU9yaWdpbiYsIFdlYkZyYW1lKiwgY29uc3Qg
V2ViU3RyaW5nJiBkYXRhRGlyKTsKLSAgICB2aXJ0dWFsIHZvaWQgb3Blbihjb25zdCBXZWJTdHJp
bmcmIG5hbWUsIGxvbmcgbG9uZyB2ZXJzaW9uLCBXZWJJREJDYWxsYmFja3MqLCBXZWJJREJEYXRh
YmFzZUNhbGxiYWNrcyosIGNvbnN0IFdlYlNlY3VyaXR5T3JpZ2luJiwgV2ViRnJhbWUqLCBjb25z
dCBXZWJTdHJpbmcmIGRhdGFEaXIpOworICAgIHZpcnR1YWwgdm9pZCBvcGVuKGNvbnN0IFdlYlN0
cmluZyYgbmFtZSwgbG9uZyBsb25nIHZlcnNpb24sIFdlYklEQkNhbGxiYWNrcyosIGNvbnN0IFdl
YlNlY3VyaXR5T3JpZ2luJiwgV2ViRnJhbWUqLCBjb25zdCBXZWJTdHJpbmcmIGRhdGFEaXIpOwog
ICAgIHZpcnR1YWwgdm9pZCBkZWxldGVEYXRhYmFzZShjb25zdCBXZWJTdHJpbmcmIG5hbWUsIFdl
YklEQkNhbGxiYWNrcyosIGNvbnN0IFdlYlNlY3VyaXR5T3JpZ2luJiwgV2ViRnJhbWUqLCBjb25z
dCBXZWJTdHJpbmcmIGRhdGFEaXIpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9JREJBYm9ydE9uQ29ycnVwdFRlc3QuY3BwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9JREJBYm9ydE9uQ29ycnVwdFRlc3QuY3BwCmluZGV4IGIwODBi
ZmM0ZGY1MWEyOThmNGZkYjVkOWMyOGU3NzE3ZjQwZGFmMTQuLjFkMzk1MDk2YWFkYjNhNWIzZGU5
YjcwZGFiNjBmMzE4OWNmYmE5ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvSURCQWJvcnRPbkNvcnJ1cHRUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0lEQkFib3J0T25Db3JydXB0VGVzdC5jcHAKQEAgLTI2LDcgKzI2LDYgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlLmgi
CiAjaW5jbHVkZSAiSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmgiCi0jaW5jbHVkZSAiSURC
RGF0YWJhc2VDYWxsYmFja3MuaCIKICNpbmNsdWRlICJJREJGYWN0b3J5QmFja2VuZEltcGwuaCIK
ICNpbmNsdWRlICJJREJGYWtlQmFja2luZ1N0b3JlLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmln
aW4uaCIKQEAgLTk3LDI2ICs5NiwxNCBAQCBwcm90ZWN0ZWQ6CiAgICAgfQogfTsKIAotY2xhc3Mg
RmFrZUlEQkRhdGFiYXNlQ2FsbGJhY2tzIDogcHVibGljIElEQkRhdGFiYXNlQ2FsbGJhY2tzIHsK
LXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxGYWtlSURCRGF0YWJhc2VDYWxsYmFja3M+
IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBGYWtlSURCRGF0YWJhc2VDYWxsYmFja3Mo
KSk7IH0KLSAgICB2aXJ0dWFsIH5GYWtlSURCRGF0YWJhc2VDYWxsYmFja3MoKSB7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgb25WZXJzaW9uQ2hhbmdlKGNvbnN0IFN0cmluZyYgdmVyc2lvbikgT1ZFUlJJ
REUgeyB9Ci0gICAgdmlydHVhbCB2b2lkIG9uVmVyc2lvbkNoYW5nZShpbnQ2NF90IG9sZFZlcnNp
b24sIGludDY0X3QgbmV3VmVyc2lvbikgT1ZFUlJJREUgeyB9Ci0gICAgdmlydHVhbCB2b2lkIG9u
Rm9yY2VkQ2xvc2UoKSBPVkVSUklERSB7IH0KLXByaXZhdGU6Ci0gICAgRmFrZUlEQkRhdGFiYXNl
Q2FsbGJhY2tzKCkgeyB9Ci19OwotCiBURVNUKElEQkFib3J0VGVzdCwgVGhlVGVzdCkKIHsKICAg
ICBSZWZQdHI8SURCRmFjdG9yeUJhY2tlbmRJbXBsPiBmYWN0b3J5ID0gRmFpbGluZ0lEQkZhY3Rv
cnlCYWNrZW5kSW1wbDo6Y3JlYXRlKCk7CiAgICAgY29uc3QgU3RyaW5nJiBuYW1lID0gImRiIG5h
bWUiOwogICAgIE1vY2tJREJDYWxsYmFja3MgY2FsbGJhY2tzOwotICAgIFJlZlB0cjxGYWtlSURC
RGF0YWJhc2VDYWxsYmFja3M+IGRhdGFiYXNlQ2FsbGJhY2tzID0gRmFrZUlEQkRhdGFiYXNlQ2Fs
bGJhY2tzOjpjcmVhdGUoKTsKICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbiA9IFNl
Y3VyaXR5T3JpZ2luOjpjcmVhdGUoImh0dHAiLCAibG9jYWxob3N0IiwgODEpOwogICAgIGNvbnN0
IGludDY0X3QgRHVtbXlWZXJzaW9uID0gMjsKLSAgICBmYWN0b3J5LT5vcGVuKG5hbWUsIER1bW15
VmVyc2lvbiwgJmNhbGxiYWNrcywgZGF0YWJhc2VDYWxsYmFja3MsIG9yaWdpbiwgMCAvKkZyYW1l
Ki8sIFN0cmluZygpIC8qcGF0aCovKTsKKyAgICBmYWN0b3J5LT5vcGVuKG5hbWUsIER1bW15VmVy
c2lvbiwgJmNhbGxiYWNrcywgb3JpZ2luLCAwIC8qRnJhbWUqLywgU3RyaW5nKCkgLypwYXRoKi8p
OwogfQogCiB9IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9JREJEYXRhYmFzZUJhY2tlbmRUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvSURCRGF0YWJhc2VCYWNrZW5kVGVzdC5jcHAKaW5kZXggY2I5NDI0M2QwNmFmZjIw
OTljOTlhOGVlNmJhNDYwZjVmMzIxZGVlYy4uMWZhMmMyNjJkYjFkMTU1MWVmZDI1ODFhMWI3MmU2
M2VkZDJlNzUwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJE
YXRhYmFzZUJhY2tlbmRUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0lEQkRhdGFiYXNlQmFja2VuZFRlc3QuY3BwCkBAIC0yNyw3ICsyNyw2IEBACiAjaW5jbHVkZSAi
SURCQmFja2luZ1N0b3JlLmgiCiAjaW5jbHVkZSAiSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZS5o
IgogI2luY2x1ZGUgIklEQkRhdGFiYXNlQmFja2VuZEltcGwuaCIKLSNpbmNsdWRlICJJREJEYXRh
YmFzZUNhbGxiYWNrc1Byb3h5LmgiCiAjaW5jbHVkZSAiSURCRmFjdG9yeUJhY2tlbmRJbXBsLmgi
CiAjaW5jbHVkZSAiSURCRmFrZUJhY2tpbmdTdG9yZS5oIgogI2luY2x1ZGUgIklEQkluZGV4QmFj
a2VuZEltcGwuaCIKQEAgLTQxLDEwICs0MCw5IEBACiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJB
U0UpCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotdXNpbmcgV2ViS2l0OjpJREJEYXRhYmFz
ZUNhbGxiYWNrc1Byb3h5OwogdXNpbmcgV2ViS2l0OjpXZWJJREJEYXRhYmFzZTsKLXVzaW5nIFdl
YktpdDo6V2ViSURCRGF0YWJhc2VJbXBsOwogdXNpbmcgV2ViS2l0OjpXZWJJREJEYXRhYmFzZUNh
bGxiYWNrc0ltcGw7Cit1c2luZyBXZWJLaXQ6OldlYklEQkRhdGFiYXNlSW1wbDsKIAogbmFtZXNw
YWNlIHsKIApAQCAtMTI0LDE2ICsxMjIsMjAgQEAgVEVTVChJREJEYXRhYmFzZUJhY2tlbmRUZXN0
LCBDb25uZWN0aW9uTGlmZWN5Y2xlKQogICAgIEVYUEVDVF9HVChiYWNraW5nU3RvcmUtPnJlZkNv
dW50KCksIDEpOwogCiAgICAgUmVmUHRyPE1vY2tJREJDYWxsYmFja3M+IHJlcXVlc3QxID0gTW9j
a0lEQkNhbGxiYWNrczo6Y3JlYXRlKCk7CisgICAgZGItPm9wZW5Db25uZWN0aW9uKHJlcXVlc3Qx
KTsKKwogICAgIFJlZlB0cjxGYWtlSURCRGF0YWJhc2VDYWxsYmFja3M+IGNvbm5lY3Rpb24xID0g
RmFrZUlEQkRhdGFiYXNlQ2FsbGJhY2tzOjpjcmVhdGUoKTsKLSAgICBkYi0+b3BlbkNvbm5lY3Rp
b24ocmVxdWVzdDEsIGNvbm5lY3Rpb24xKTsKKyAgICBkYi0+cmVnaXN0ZXJGcm9udGVuZENhbGxi
YWNrcyhjb25uZWN0aW9uMSk7CiAKICAgICBSZWZQdHI8TW9ja0lEQkNhbGxiYWNrcz4gcmVxdWVz
dDIgPSBNb2NrSURCQ2FsbGJhY2tzOjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8RmFrZUlEQkRhdGFi
YXNlQ2FsbGJhY2tzPiBjb25uZWN0aW9uMiA9IEZha2VJREJEYXRhYmFzZUNhbGxiYWNrczo6Y3Jl
YXRlKCk7Ci0gICAgZGItPm9wZW5Db25uZWN0aW9uKHJlcXVlc3QyLCBjb25uZWN0aW9uMik7Cisg
ICAgZGItPm9wZW5Db25uZWN0aW9uKHJlcXVlc3QyKTsKIAogICAgIGRiLT5jbG9zZShjb25uZWN0
aW9uMSk7CiAgICAgRVhQRUNUX0dUKGJhY2tpbmdTdG9yZS0+cmVmQ291bnQoKSwgMSk7CiAKKyAg
ICBSZWZQdHI8RmFrZUlEQkRhdGFiYXNlQ2FsbGJhY2tzPiBjb25uZWN0aW9uMiA9IEZha2VJREJE
YXRhYmFzZUNhbGxiYWNrczo6Y3JlYXRlKCk7CisgICAgZGItPnJlZ2lzdGVyRnJvbnRlbmRDYWxs
YmFja3MoY29ubmVjdGlvbjIpOworCiAgICAgZGItPmNsb3NlKGNvbm5lY3Rpb24yKTsKICAgICBF
WFBFQ1RfVFJVRShiYWNraW5nU3RvcmUtPmhhc09uZVJlZigpKTsKIH0KQEAgLTE0Nyw3ICsxNDks
NyBAQCBwdWJsaWM6CiAKICAgICB+TW9ja0lEQkRhdGFiYXNlQmFja2VuZFByb3h5KCkKICAgICB7
Ci0gICAgICAgIEVYUEVDVF9UUlVFKG1fd2FzQ2xvc2VDYWxsZWQpOworICAgICAgICBFWFBFQ1Rf
VFJVRShtX3dhc1JlZ2lzdGVyRnJvbnRlbmRDYWxsYmFja3NDYWxsZWQpOwogICAgIH0KIAogICAg
IHZpcnR1YWwgSURCRGF0YWJhc2VNZXRhZGF0YSBtZXRhZGF0YSgpIGNvbnN0IHsgcmV0dXJuIElE
QkRhdGFiYXNlTWV0YWRhdGEoKTsgfQpAQCAtMTYxLDEyICsxNjMsMTkgQEAgcHVibGljOgogICAg
ICAgICBtX3dhc0Nsb3NlQ2FsbGVkID0gdHJ1ZTsKICAgICAgICAgbV93ZWJEYXRhYmFzZS5jbG9z
ZSgpOwogICAgIH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJGcm9udGVuZENhbGxiYWNrcyhQ
YXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBjb25uZWN0aW9uKQorICAgIHsKKyAgICAg
ICAgbV93YXNSZWdpc3RlckZyb250ZW5kQ2FsbGJhY2tzQ2FsbGVkID0gdHJ1ZTsKKyAgICAgICAg
bV93ZWJEYXRhYmFzZS5vcGVuKG5ldyBXZWJJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwoY29ubmVj
dGlvbikpOworICAgIH0KIAogcHJpdmF0ZToKICAgICBNb2NrSURCRGF0YWJhc2VCYWNrZW5kUHJv
eHkoV2ViSURCRGF0YWJhc2VJbXBsJiB3ZWJEYXRhYmFzZSkKLSAgICAgICAgOiBtX3dhc0Nsb3Nl
Q2FsbGVkKGZhbHNlKQorICAgICAgICA6IG1fd2FzUmVnaXN0ZXJGcm9udGVuZENhbGxiYWNrc0Nh
bGxlZChmYWxzZSkKKyAgICAgICAgLCBtX3dhc0Nsb3NlQ2FsbGVkKGZhbHNlKQogICAgICAgICAs
IG1fd2ViRGF0YWJhc2Uod2ViRGF0YWJhc2UpIHsgfQogCisgICAgYm9vbCBtX3dhc1JlZ2lzdGVy
RnJvbnRlbmRDYWxsYmFja3NDYWxsZWQ7CiAgICAgYm9vbCBtX3dhc0Nsb3NlQ2FsbGVkOwogCiAg
ICAgV2ViSURCRGF0YWJhc2VJbXBsJiBtX3dlYkRhdGFiYXNlOwpAQCAtMTgyLDE5ICsxOTEsMTgg
QEAgVEVTVChJREJEYXRhYmFzZUJhY2tlbmRUZXN0LCBGb3JjZWRDbG9zZSkKICAgICBSZWZQdHI8
SURCRGF0YWJhc2VCYWNrZW5kSW1wbD4gYmFja2VuZCA9IElEQkRhdGFiYXNlQmFja2VuZEltcGw6
OmNyZWF0ZSgiZGIiLCBiYWNraW5nU3RvcmUuZ2V0KCksIGNvb3JkaW5hdG9yLCBmYWN0b3J5LCAi
dW5pcXVlaWQiKTsKICAgICBFWFBFQ1RfR1QoYmFja2luZ1N0b3JlLT5yZWZDb3VudCgpLCAxKTsK
IAotICAgIFJlZlB0cjxGYWtlSURCRGF0YWJhc2VDYWxsYmFja3M+IGNvbm5lY3Rpb24gPSBGYWtl
SURCRGF0YWJhc2VDYWxsYmFja3M6OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxJREJEYXRhYmFzZUNh
bGxiYWNrc1Byb3h5PiBjb25uZWN0aW9uUHJveHkgPSBJREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5
OjpjcmVhdGUoYWRvcHRQdHIobmV3IFdlYklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbChjb25uZWN0
aW9uKSkpOwotICAgIFdlYklEQkRhdGFiYXNlSW1wbCB3ZWJEYXRhYmFzZShiYWNrZW5kLCBjb25u
ZWN0aW9uUHJveHkpOworICAgIFdlYklEQkRhdGFiYXNlSW1wbCB3ZWJEYXRhYmFzZShiYWNrZW5k
KTsKKworICAgIFJlZlB0cjxNb2NrSURCQ2FsbGJhY2tzPiByZXF1ZXN0MSA9IE1vY2tJREJDYWxs
YmFja3M6OmNyZWF0ZSgpOworICAgIGJhY2tlbmQtPm9wZW5Db25uZWN0aW9uKHJlcXVlc3QxKTsK
IAogICAgIFJlZlB0cjxNb2NrSURCRGF0YWJhc2VCYWNrZW5kUHJveHk+IHByb3h5ID0gTW9ja0lE
QkRhdGFiYXNlQmFja2VuZFByb3h5OjpjcmVhdGUod2ViRGF0YWJhc2UpOwotICAgIFJlZlB0cjxN
b2NrSURCQ2FsbGJhY2tzPiByZXF1ZXN0ID0gTW9ja0lEQkNhbGxiYWNrczo6Y3JlYXRlKCk7Ci0g
ICAgYmFja2VuZC0+b3BlbkNvbm5lY3Rpb24ocmVxdWVzdCwgY29ubmVjdGlvblByb3h5KTsKIAog
ICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSAwOwotICAgIFJlZlB0cjxJREJE
YXRhYmFzZT4gaWRiRGF0YWJhc2UgPSBJREJEYXRhYmFzZTo6Y3JlYXRlKGNvbnRleHQsIHByb3h5
LCBjb25uZWN0aW9uKTsKKyAgICBSZWZQdHI8SURCRGF0YWJhc2U+IGlkYkRhdGFiYXNlID0gSURC
RGF0YWJhc2U6OmNyZWF0ZShjb250ZXh0LCBwcm94eSk7CisgICAgaWRiRGF0YWJhc2UtPnJlZ2lz
dGVyRnJvbnRlbmRDYWxsYmFja3MoKTsKIAogICAgIHdlYkRhdGFiYXNlLmZvcmNlQ2xvc2UoKTsK
LQogICAgIEVYUEVDVF9UUlVFKGJhY2tpbmdTdG9yZS0+aGFzT25lUmVmKCkpOwogfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>