<?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>103922</bug_id>
          
          <creation_ts>2012-12-03 13:36:54 -0800</creation_ts>
          <short_desc>IndexedDB: propagate transaction_ids through open, commit, and abort</short_desc>
          <delta_ts>2012-12-07 15:21:04 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore JavaScript</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>
          <dependson>103921</dependson>
          <blocked>103923</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Alec Flett">alecflett</reporter>
          <assigned_to name="Alec Flett">alecflett</assigned_to>
          <cc>dgrogan</cc>
    
    <cc>jsbell</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>781827</commentid>
    <comment_count>0</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-12-03 13:36:54 -0800</bug_when>
    <thetext>IDBFactory.open() and IDBOpenRequest.onUpgradedNeeded() require a transaction id to originate on the frontend, rather than the backend.

This patch mints a new transaction id in open() then reflects it back through onUpgradeNeeded so the frontend can hook it up there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785936</commentid>
    <comment_count>1</comment_count>
      <attachid>178231</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-12-07 09:48:05 -0800</bug_when>
    <thetext>Created attachment 178231
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785948</commentid>
    <comment_count>2</comment_count>
      <attachid>178231</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-12-07 10:03:50 -0800</bug_when>
    <thetext>Comment on attachment 178231
Patch

actually wait there was one more thing I wanted to get into this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785987</commentid>
    <comment_count>3</comment_count>
      <attachid>178241</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-12-07 10:56:26 -0800</bug_when>
    <thetext>Created attachment 178241
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786158</commentid>
    <comment_count>4</comment_count>
      <attachid>178241</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-12-07 14:23:43 -0800</bug_when>
    <thetext>Comment on attachment 178241
Patch

lgtm</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786182</commentid>
    <comment_count>5</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-12-07 14:42:29 -0800</bug_when>
    <thetext>tony@ - r?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786222</commentid>
    <comment_count>6</comment_count>
      <attachid>178241</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-07 15:21:01 -0800</bug_when>
    <thetext>Comment on attachment 178241
Patch

Clearing flags on attachment: 178241

Committed r136992: &lt;http://trac.webkit.org/changeset/136992&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786223</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-07 15:21:04 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178231</attachid>
            <date>2012-12-07 09:48:05 -0800</date>
            <delta_ts>2012-12-07 10:56:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103922-20121207094529.patch</filename>
            <type>text/plain</type>
            <size>22871</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2OTQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGUzZTRiOWY4MTE1OTQx
M2FkY2RhNDYwZDE2MDVjYjU0MjA3MjM4Ny4uMjZmOWNmYTM3ZjA3ZjUyOTc5ZGQxYTczZGU5MTIz
NzdjZWU0N2QxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDEyLTEyLTA2ICBBbGVj
IEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IHBy
b3BhZ2F0ZSB0cmFuc2FjdGlvbl9pZHMgdGhyb3VnaCBvcGVuL3VwZ3JhZGVuZWVkZWQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzkyMgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2Ugc3VyZSBmcm9u
dC1lbmQgaXMgYWx3YXlzIGdlbmVyYXRpbmcgdGhlIHRyYW5zYWN0aW9uIGlkLAorICAgICAgICBz
byB0aGF0IGl0IGNhbiBiZSByZWxpZWQgdXBvbiBhcyBhbiBhbHRlcm5hdGl2ZSB0byB0aGUKKyAg
ICAgICAgdG8tYmUtZGVwcmVjYXRlZCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UgcG9p
bnRlci4KKworICAgICAgICBObyBuZXcgdGVzdHMsIHRoaXMgaXMgb25lIHN0YWdlIGluIGEgbGFy
Z2VyIHJlZmFjdG9yLgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VC
YWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBs
OjpWZXJzaW9uQ2hhbmdlT3BlcmF0aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SURC
RGF0YWJhc2VCYWNrZW5kSW1wbDo6VmVyc2lvbkNoYW5nZU9wZXJhdGlvbjo6VmVyc2lvbkNoYW5n
ZU9wZXJhdGlvbik6CisgICAgICAgIChJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpWZXJzaW9uQ2hh
bmdlT3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6
OlBlbmRpbmdPcGVuQ2FsbDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNl
QmFja2VuZEltcGw6OlBlbmRpbmdPcGVuQ2FsbDo6dHJhbnNhY3Rpb25JZCk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpQZW5kaW5nT3BlbkNhbGw6OlBlbmRpbmdP
cGVuQ2FsbCk6CisgICAgICAgIChJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpQZW5kaW5nT3BlbkNh
bGwpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6UGVuZGluZ09w
ZW5XaXRoVmVyc2lvbkNhbGw6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFz
ZUJhY2tlbmRJbXBsOjpQZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbDo6dHJhbnNhY3Rpb25JZCk6
CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpQZW5kaW5nT3Blbldp
dGhWZXJzaW9uQ2FsbDo6UGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGwpOgorICAgICAgICAoSURC
RGF0YWJhc2VCYWNrZW5kSW1wbDo6UGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGwpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6VmVyc2lvbkNoYW5nZU9wZXJhdGlv
bjo6cGVyZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpw
cm9jZXNzUGVuZGluZ0NhbGxzKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2Vu
ZEltcGw6OmNyZWF0ZVRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNl
QmFja2VuZEltcGw6Om9wZW5Db25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFi
YXNlQmFja2VuZEltcGw6OnJ1bkludFZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpvcGVuQ29ubmVjdGlvbldpdGhWZXJz
aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBs
Lmg6CisgICAgICAgIChJREJEYXRhYmFzZUJhY2tlbmRJbXBsKToKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkZhY3Rvcnk6
Om9wZW5JbnRlcm5hbCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJh
Y2tlbmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkZhY3RvcnlCYWNrZW5kSW1wbDo6
b3Blbik6CisKIDIwMTItMTItMDYgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFVzZSBhbHdheXMgdGhlIG9yZGVyIGl0ZXJhdG9yIGZyb20gZGF0
YSBtZW1iZXIgaW4gUmVuZGVyRmxleGlibGVCb3gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5k
ZXggYTYxZGE0M2RlYTE5NWVhODZkN2IyYjAxYzUwNzExNTNjN2UwNWY5Mi4uN2RiNjgzYTY1ZDlh
YTFlYmQ3MGFjMjlkNjY3N2U0OGM0NTk2YzljZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNCBAQAorMjAxMi0xMi0wNiAgQWxlYyBGbGV0dCAgPGFsZWNmbGV0dEBjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBwcm9wYWdhdGUgdHJhbnNhY3Rpb25faWRz
IHRocm91Z2ggb3Blbi91cGdyYWRlbmVlZGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMDM5MjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgdGVzdCB0byBhY2NvdW50IGZvciBwcmUtZ2VuZXJh
dGVkIHRyYW5zYWN0aW9uIGlkcy4KKworICAgICAgICAqIHRlc3RzL0lEQkRhdGFiYXNlQmFja2Vu
ZFRlc3QuY3BwOgorCiAyMDEyLTEyLTA3ICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkIHJvbGwgY3Job21pdW0gdG8gcjE3MTcwNy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNl
QmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0
YWJhc2VCYWNrZW5kSW1wbC5jcHAKaW5kZXggZWNiNjFlZTFmOTI5YTIwMTYyMGFmNmZhMjdkZDNi
ZTVjY2JhMTkzMC4uOWEwODc5MjVmYWZhY2M1NmIwNmVhYjgwNGFlZDU2ZjVjZDcyNjAwNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNr
ZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0
YWJhc2VCYWNrZW5kSW1wbC5jcHAKQEAgLTc2LDE0ICs3NiwxNSBAQCBwcml2YXRlOgogCiBjbGFz
cyBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpWZXJzaW9uQ2hhbmdlT3BlcmF0aW9uIDogcHVibGlj
IElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6Ok9wZXJhdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFBhc3NPd25QdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6T3BlcmF0aW9uPiBjcmVh
dGUoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBsPiBkYXRhYmFzZSwgaW50NjRfdCB2
ZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBQYXNzUmVmUHRyPElE
QkRhdGFiYXNlQ2FsbGJhY2tzPiBkYXRhYmFzZUNhbGxiYWNrcykKKyAgICBzdGF0aWMgUGFzc093
blB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpPcGVyYXRpb24+IGNyZWF0ZShQYXNzUmVm
UHRyPElEQkRhdGFiYXNlQmFja2VuZEltcGw+IGRhdGFiYXNlLCBpbnQ2NF90IHRyYW5zYWN0aW9u
SWQsIGludDY0X3QgdmVyc2lvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywg
UGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gZGF0YWJhc2VDYWxsYmFja3MpCiAgICAg
ewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFZlcnNpb25DaGFuZ2VPcGVyYXRpb24oZGF0
YWJhc2UsIHZlcnNpb24sIGNhbGxiYWNrcywgZGF0YWJhc2VDYWxsYmFja3MpKTsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UHRyKG5ldyBWZXJzaW9uQ2hhbmdlT3BlcmF0aW9uKGRhdGFiYXNlLCB0cmFu
c2FjdGlvbklkLCB2ZXJzaW9uLCBjYWxsYmFja3MsIGRhdGFiYXNlQ2FsbGJhY2tzKSk7CiAgICAg
fQogICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtKElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqKTsK
IHByaXZhdGU6Ci0gICAgVmVyc2lvbkNoYW5nZU9wZXJhdGlvbihQYXNzUmVmUHRyPElEQkRhdGFi
YXNlQmFja2VuZEltcGw+IGRhdGFiYXNlLCBpbnQ2NF90IHZlcnNpb24sIFBhc3NSZWZQdHI8SURC
Q2FsbGJhY2tzPiBjYWxsYmFja3MsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IGRh
dGFiYXNlQ2FsbGJhY2tzKQorICAgIFZlcnNpb25DaGFuZ2VPcGVyYXRpb24oUGFzc1JlZlB0cjxJ
REJEYXRhYmFzZUJhY2tlbmRJbXBsPiBkYXRhYmFzZSwgaW50NjRfdCB0cmFuc2FjdGlvbklkLCBp
bnQ2NF90IHZlcnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIFBhc3NS
ZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IGRhdGFiYXNlQ2FsbGJhY2tzKQogICAgICAgICA6
IG1fZGF0YWJhc2UoZGF0YWJhc2UpCisgICAgICAgICwgbV90cmFuc2FjdGlvbklkKHRyYW5zYWN0
aW9uSWQpCiAgICAgICAgICwgbV92ZXJzaW9uKHZlcnNpb24pCiAgICAgICAgICwgbV9jYWxsYmFj
a3MoY2FsbGJhY2tzKQogICAgICAgICAsIG1fZGF0YWJhc2VDYWxsYmFja3MoZGF0YWJhc2VDYWxs
YmFja3MpCkBAIC05MSw2ICs5Miw3IEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAgUmVmUHRyPElE
QkRhdGFiYXNlQmFja2VuZEltcGw+IG1fZGF0YWJhc2U7CisgICAgaW50NjRfdCBtX3RyYW5zYWN0
aW9uSWQ7CiAgICAgaW50NjRfdCBtX3ZlcnNpb247CiAgICAgUmVmUHRyPElEQkNhbGxiYWNrcz4g
bV9jYWxsYmFja3M7CiAgICAgUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBtX2RhdGFiYXNl
Q2FsbGJhY2tzOwpAQCAtMTU1LDQ0ICsxNTcsNTAgQEAgcHJpdmF0ZToKIAogY2xhc3MgSURCRGF0
YWJhc2VCYWNrZW5kSW1wbDo6UGVuZGluZ09wZW5DYWxsIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UGFzc093blB0cjxQZW5kaW5nT3BlbkNhbGw+IGNyZWF0ZShQYXNzUmVmUHRyPElEQkNhbGxiYWNr
cz4gY2FsbGJhY2tzLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBkYXRhYmFzZUNh
bGxiYWNrcykKKyAgICBzdGF0aWMgUGFzc093blB0cjxQZW5kaW5nT3BlbkNhbGw+IGNyZWF0ZShQ
YXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNl
Q2FsbGJhY2tzPiBkYXRhYmFzZUNhbGxiYWNrcywgaW50NjRfdCB0cmFuc2FjdGlvbklkKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBQZW5kaW5nT3BlbkNhbGwoY2FsbGJhY2tz
LCBkYXRhYmFzZUNhbGxiYWNrcykpOworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFBlbmRp
bmdPcGVuQ2FsbChjYWxsYmFja3MsIGRhdGFiYXNlQ2FsbGJhY2tzLCB0cmFuc2FjdGlvbklkKSk7
CiAgICAgfQogICAgIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MoKSB7IHJldHVy
biBtX2NhbGxiYWNrczsgfQogICAgIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IGRh
dGFiYXNlQ2FsbGJhY2tzKCkgeyByZXR1cm4gbV9kYXRhYmFzZUNhbGxiYWNrczsgfQorICAgIGlu
dDY0X3QgdHJhbnNhY3Rpb25JZCgpIGNvbnN0IHsgcmV0dXJuIG1fdHJhbnNhY3Rpb25JZDsgfQog
CiBwcml2YXRlOgotICAgIFBlbmRpbmdPcGVuQ2FsbChQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4g
Y2FsbGJhY2tzLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBkYXRhYmFzZUNhbGxi
YWNrcykKKyAgICBQZW5kaW5nT3BlbkNhbGwoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxi
YWNrcywgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gZGF0YWJhc2VDYWxsYmFja3Ms
IGludDY0X3QgdHJhbnNhY3Rpb25JZCkKICAgICAgICAgOiBtX2NhbGxiYWNrcyhjYWxsYmFja3Mp
CiAgICAgICAgICwgbV9kYXRhYmFzZUNhbGxiYWNrcyhkYXRhYmFzZUNhbGxiYWNrcykKKyAgICAg
ICAgLCBtX3RyYW5zYWN0aW9uSWQodHJhbnNhY3Rpb25JZCkKICAgICB7CiAgICAgfQogCiAgICAg
UmVmUHRyPElEQkNhbGxiYWNrcz4gbV9jYWxsYmFja3M7CiAgICAgUmVmUHRyPElEQkRhdGFiYXNl
Q2FsbGJhY2tzPiBtX2RhdGFiYXNlQ2FsbGJhY2tzOworICAgIGNvbnN0IGludDY0X3QgbV90cmFu
c2FjdGlvbklkOwogfTsKIAogY2xhc3MgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6UGVuZGluZ09w
ZW5XaXRoVmVyc2lvbkNhbGwgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPFBlbmRp
bmdPcGVuV2l0aFZlcnNpb25DYWxsPiBjcmVhdGUoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNh
bGxiYWNrcywgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gZGF0YWJhc2VDYWxsYmFj
a3MsIGludDY0X3QgdmVyc2lvbikKKyAgICBzdGF0aWMgUGFzc093blB0cjxQZW5kaW5nT3Blbldp
dGhWZXJzaW9uQ2FsbD4gY3JlYXRlKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3Ms
IFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IGRhdGFiYXNlQ2FsbGJhY2tzLCBpbnQ2
NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3QgdmVyc2lvbikKICAgICB7Ci0gICAgICAgIHJldHVy
biBhZG9wdFB0cihuZXcgUGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGwoY2FsbGJhY2tzLCBkYXRh
YmFzZUNhbGxiYWNrcywgdmVyc2lvbikpOworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFBl
bmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsKGNhbGxiYWNrcywgZGF0YWJhc2VDYWxsYmFja3MsIHRy
YW5zYWN0aW9uSWQsIHZlcnNpb24pKTsKICAgICB9CiAgICAgUGFzc1JlZlB0cjxJREJDYWxsYmFj
a3M+IGNhbGxiYWNrcygpIHsgcmV0dXJuIG1fY2FsbGJhY2tzOyB9CiAgICAgUGFzc1JlZlB0cjxJ
REJEYXRhYmFzZUNhbGxiYWNrcz4gZGF0YWJhc2VDYWxsYmFja3MoKSB7IHJldHVybiBtX2RhdGFi
YXNlQ2FsbGJhY2tzOyB9CiAgICAgaW50NjRfdCB2ZXJzaW9uKCkgeyByZXR1cm4gbV92ZXJzaW9u
OyB9CisgICAgaW50NjRfdCB0cmFuc2FjdGlvbklkKCkgY29uc3QgeyByZXR1cm4gbV90cmFuc2Fj
dGlvbklkOyB9CiAKIHByaXZhdGU6Ci0gICAgUGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGwoUGFz
c1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNh
bGxiYWNrcz4gZGF0YWJhc2VDYWxsYmFja3MsIGludDY0X3QgdmVyc2lvbikKKyAgICBQZW5kaW5n
T3BlbldpdGhWZXJzaW9uQ2FsbChQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBQ
YXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBkYXRhYmFzZUNhbGxiYWNrcywgaW50NjRf
dCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IHZlcnNpb24pCiAgICAgICAgIDogbV9jYWxsYmFja3Mo
Y2FsbGJhY2tzKQogICAgICAgICAsIG1fZGF0YWJhc2VDYWxsYmFja3MoZGF0YWJhc2VDYWxsYmFj
a3MpCiAgICAgICAgICwgbV92ZXJzaW9uKHZlcnNpb24pCisgICAgICAgICwgbV90cmFuc2FjdGlv
bklkKHRyYW5zYWN0aW9uSWQpCiAgICAgewogICAgIH0KICAgICBSZWZQdHI8SURCQ2FsbGJhY2tz
PiBtX2NhbGxiYWNrczsKICAgICBSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IG1fZGF0YWJh
c2VDYWxsYmFja3M7CiAgICAgaW50NjRfdCBtX3ZlcnNpb247CisgICAgY29uc3QgaW50NjRfdCBt
X3RyYW5zYWN0aW9uSWQ7CiB9OwogCiBjbGFzcyBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpQZW5k
aW5nRGVsZXRlQ2FsbCB7CkBAIC0zNDIsNyArMzUwLDcgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tl
bmRJbXBsOjpWZXJzaW9uQ2hhbmdlT3BlcmF0aW9uOjpwZXJmb3JtKElEQlRyYW5zYWN0aW9uQmFj
a2UKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBBU1NFUlQoIW1fZGF0YWJhc2UtPm1fcGVu
ZGluZ1NlY29uZEhhbGZPcGVuV2l0aFZlcnNpb24pOwotICAgIG1fZGF0YWJhc2UtPm1fcGVuZGlu
Z1NlY29uZEhhbGZPcGVuV2l0aFZlcnNpb24gPSBQZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbDo6
Y3JlYXRlKG1fY2FsbGJhY2tzLCBtX2RhdGFiYXNlQ2FsbGJhY2tzLCBtX3ZlcnNpb24pOworICAg
IG1fZGF0YWJhc2UtPm1fcGVuZGluZ1NlY29uZEhhbGZPcGVuV2l0aFZlcnNpb24gPSBQZW5kaW5n
T3BlbldpdGhWZXJzaW9uQ2FsbDo6Y3JlYXRlKG1fY2FsbGJhY2tzLCBtX2RhdGFiYXNlQ2FsbGJh
Y2tzLCBtX3RyYW5zYWN0aW9uSWQsIG1fdmVyc2lvbik7CiAgICAgbV9jYWxsYmFja3MtPm9uVXBn
cmFkZU5lZWRlZChvbGRWZXJzaW9uLCB0cmFuc2FjdGlvbiwgbV9kYXRhYmFzZSk7CiB9CiAKQEAg
LTM1OCw4ICszNjYsOSBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnRyYW5zYWN0aW9u
U3RhcnRlZChQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZAogdm9pZCBJREJEYXRhYmFz
ZUJhY2tlbmRJbXBsOjp0cmFuc2FjdGlvbkZpbmlzaGVkKFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rp
b25CYWNrZW5kSW1wbD4gcHJwVHJhbnNhY3Rpb24pCiB7CiAgICAgUmVmUHRyPElEQlRyYW5zYWN0
aW9uQmFja2VuZEltcGw+IHRyYW5zYWN0aW9uID0gcHJwVHJhbnNhY3Rpb247Ci0gICAgQVNTRVJU
KG1fdHJhbnNhY3Rpb25zLmNvbnRhaW5zKHRyYW5zYWN0aW9uLmdldCgpKSk7Ci0gICAgbV90cmFu
c2FjdGlvbnMucmVtb3ZlKHRyYW5zYWN0aW9uLmdldCgpKTsKKyAgICBBU1NFUlQobV90cmFuc2Fj
dGlvbnMuY29udGFpbnModHJhbnNhY3Rpb24tPmlkKCkpKTsKKyAgICBBU1NFUlQobV90cmFuc2Fj
dGlvbnMuZ2V0KHRyYW5zYWN0aW9uLT5pZCgpKSA9PSB0cmFuc2FjdGlvbi5nZXQoKSk7CisgICAg
bV90cmFuc2FjdGlvbnMucmVtb3ZlKHRyYW5zYWN0aW9uLT5pZCgpKTsKICAgICBpZiAodHJhbnNh
Y3Rpb24tPm1vZGUoKSA9PSBJREJUcmFuc2FjdGlvbjo6VkVSU0lPTl9DSEFOR0UpIHsKICAgICAg
ICAgQVNTRVJUKHRyYW5zYWN0aW9uLmdldCgpID09IG1fcnVubmluZ1ZlcnNpb25DaGFuZ2VUcmFu
c2FjdGlvbi5nZXQoKSk7CiAgICAgICAgIG1fcnVubmluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlv
bi5jbGVhcigpOwpAQCAtNDI2LDcgKzQzNSw3IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1w
bDo6cHJvY2Vzc1BlbmRpbmdDYWxscygpCiAgICAgbV9wZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2Fs
bHMuc3dhcChwZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbHMpOwogICAgIHdoaWxlICghcGVuZGlu
Z09wZW5XaXRoVmVyc2lvbkNhbGxzLmlzRW1wdHkoKSkgewogICAgICAgICBPd25QdHI8UGVuZGlu
Z09wZW5XaXRoVmVyc2lvbkNhbGw+IHBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsID0gcGVuZGlu
Z09wZW5XaXRoVmVyc2lvbkNhbGxzLnRha2VGaXJzdCgpOwotICAgICAgICBvcGVuQ29ubmVjdGlv
bldpdGhWZXJzaW9uKHBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsLT5jYWxsYmFja3MoKSwgcGVu
ZGluZ09wZW5XaXRoVmVyc2lvbkNhbGwtPmRhdGFiYXNlQ2FsbGJhY2tzKCksIHBlbmRpbmdPcGVu
V2l0aFZlcnNpb25DYWxsLT52ZXJzaW9uKCkpOworICAgICAgICBvcGVuQ29ubmVjdGlvbldpdGhW
ZXJzaW9uKHBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsLT5jYWxsYmFja3MoKSwgcGVuZGluZ09w
ZW5XaXRoVmVyc2lvbkNhbGwtPmRhdGFiYXNlQ2FsbGJhY2tzKCksIHBlbmRpbmdPcGVuV2l0aFZl
cnNpb25DYWxsLT50cmFuc2FjdGlvbklkKCksIHBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsLT52
ZXJzaW9uKCkpOwogICAgIH0KIAogICAgIC8vIE9wZW4gY2FsbHMgY2FuIGJlIHJlcXVldWVkIGlm
IGFuIG9wZW5XaXRoVmVyc2lvbiBjYWxsIHN0YXJ0ZWQgYSB2ZXJzaW9uCkBAIC00MzUsNyArNDQ0
LDcgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpwcm9jZXNzUGVuZGluZ0NhbGxzKCkK
ICAgICBtX3BlbmRpbmdPcGVuQ2FsbHMuc3dhcChwZW5kaW5nT3BlbkNhbGxzKTsKICAgICB3aGls
ZSAoIXBlbmRpbmdPcGVuQ2FsbHMuaXNFbXB0eSgpKSB7CiAgICAgICAgIE93blB0cjxQZW5kaW5n
T3BlbkNhbGw+IHBlbmRpbmdPcGVuQ2FsbCA9IHBlbmRpbmdPcGVuQ2FsbHMudGFrZUZpcnN0KCk7
Ci0gICAgICAgIG9wZW5Db25uZWN0aW9uKHBlbmRpbmdPcGVuQ2FsbC0+Y2FsbGJhY2tzKCksIHBl
bmRpbmdPcGVuQ2FsbC0+ZGF0YWJhc2VDYWxsYmFja3MoKSk7CisgICAgICAgIG9wZW5Db25uZWN0
aW9uKHBlbmRpbmdPcGVuQ2FsbC0+Y2FsbGJhY2tzKCksIHBlbmRpbmdPcGVuQ2FsbC0+ZGF0YWJh
c2VDYWxsYmFja3MoKSwgcGVuZGluZ09wZW5DYWxsLT50cmFuc2FjdGlvbklkKCkpOwogICAgIH0K
IH0KIApAQCAtNDQzLDcgKzQ1Miw4IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6cHJv
Y2Vzc1BlbmRpbmdDYWxscygpCiBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVy
ZmFjZT4gSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Y3JlYXRlVHJhbnNhY3Rpb24oaW50NjRfdCB0
cmFuc2FjdGlvbklkLCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIG9iamVjdFN0b3JlSWRzLCBJREJU
cmFuc2FjdGlvbjo6TW9kZSBtb2RlKQogewogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbXBsPiB0cmFuc2FjdGlvbiA9IElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmNyZWF0ZSh0
cmFuc2FjdGlvbklkLCBvYmplY3RTdG9yZUlkcywgbW9kZSwgdGhpcyk7Ci0gICAgbV90cmFuc2Fj
dGlvbnMuYWRkKHRyYW5zYWN0aW9uLmdldCgpKTsKKyAgICBBU1NFUlQoIW1fdHJhbnNhY3Rpb25z
LmNvbnRhaW5zKHRyYW5zYWN0aW9uSWQpKTsKKyAgICBtX3RyYW5zYWN0aW9ucy5hZGQodHJhbnNh
Y3Rpb25JZCwgdHJhbnNhY3Rpb24uZ2V0KCkpOwogICAgIHJldHVybiB0cmFuc2FjdGlvbi5yZWxl
YXNlKCk7CiB9CiAKQEAgLTQ1MiwxMSArNDYyLDExIEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5k
SW1wbDo6Y3JlYXRlVHJhbnNhY3Rpb24oaW50NjRfdCB0cmFuc2FjdGlvbklkLCBQYXNzUmVmUHRy
CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgSURCRGF0YWJhc2VCYWNrZW5k
SW1wbDo6b3BlbkNvbm5lY3Rpb24oUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywg
UGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gZGF0YWJhc2VDYWxsYmFja3MpCit2b2lk
IElEQkRhdGFiYXNlQmFja2VuZEltcGw6Om9wZW5Db25uZWN0aW9uKFBhc3NSZWZQdHI8SURCQ2Fs
bGJhY2tzPiBjYWxsYmFja3MsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IGRhdGFi
YXNlQ2FsbGJhY2tzLCBpbnQ2NF90IHRyYW5zYWN0aW9uSWQpCiB7CiAgICAgQVNTRVJUKG1fYmFj
a2luZ1N0b3JlLmdldCgpKTsKICAgICBpZiAoIW1fcGVuZGluZ0RlbGV0ZUNhbGxzLmlzRW1wdHko
KSB8fCBtX3J1bm5pbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24pIHsKLSAgICAgICAgbV9wZW5k
aW5nT3BlbkNhbGxzLmFwcGVuZChQZW5kaW5nT3BlbkNhbGw6OmNyZWF0ZShjYWxsYmFja3MsIGRh
dGFiYXNlQ2FsbGJhY2tzKSk7CisgICAgICAgIG1fcGVuZGluZ09wZW5DYWxscy5hcHBlbmQoUGVu
ZGluZ09wZW5DYWxsOjpjcmVhdGUoY2FsbGJhY2tzLCBkYXRhYmFzZUNhbGxiYWNrcywgdHJhbnNh
Y3Rpb25JZCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmIChtX21ldGFkYXRhLmlk
ID09IEludmFsaWRJZCAmJiAhb3BlbkludGVybmFsKCkpIHsKQEAgLTQ2NywxNCArNDc3LDE0IEBA
IHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6b3BlbkNvbm5lY3Rpb24oUGFzc1JlZlB0cjxJ
REJDYWxsYmFja3M+IGNhbGxiYWNrcywKICAgICAgICAgLy8gU3BlYyBzYXlzOiBJZiBubyB2ZXJz
aW9uIGlzIHNwZWNpZmllZCBhbmQgbm8gZGF0YWJhc2UgZXhpc3RzLCBzZXQKICAgICAgICAgLy8g
ZGF0YWJhc2UgdmVyc2lvbiB0byAxLiBXZSBpbmZlciB0aGF0IHRoZSBkYXRhYmFzZSBkaWRuJ3Qg
ZXhpc3QgZnJvbQogICAgICAgICAvLyBpdHMgbGFjayBvZiBlaXRoZXIgdHlwZSBvZiB2ZXJzaW9u
LgotICAgICAgICBvcGVuQ29ubmVjdGlvbldpdGhWZXJzaW9uKGNhbGxiYWNrcywgZGF0YWJhc2VD
YWxsYmFja3MsIDEpOworICAgICAgICBvcGVuQ29ubmVjdGlvbldpdGhWZXJzaW9uKGNhbGxiYWNr
cywgZGF0YWJhc2VDYWxsYmFja3MsIHRyYW5zYWN0aW9uSWQsIDEpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogICAgIG1fZGF0YWJhc2VDYWxsYmFja3NTZXQuYWRkKFJlZlB0cjxJREJEYXRhYmFz
ZUNhbGxiYWNrcz4oZGF0YWJhc2VDYWxsYmFja3MpKTsKICAgICBjYWxsYmFja3MtPm9uU3VjY2Vz
cyh0aGlzKTsKIH0KIAotdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpydW5JbnRWZXJzaW9u
Q2hhbmdlVHJhbnNhY3Rpb24oaW50NjRfdCByZXF1ZXN0ZWRWZXJzaW9uLCBQYXNzUmVmUHRyPElE
QkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tz
PiBwcnBEYXRhYmFzZUNhbGxiYWNrcykKK3ZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6cnVu
SW50VmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBD
YWxsYmFja3MsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IHBycERhdGFiYXNlQ2Fs
bGJhY2tzLCBpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3QgcmVxdWVzdGVkVmVyc2lvbikK
IHsKICAgICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MgPSBwcnBDYWxsYmFja3M7CiAg
ICAgUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBkYXRhYmFzZUNhbGxiYWNrcyA9IHBycERh
dGFiYXNlQ2FsbGJhY2tzOwpAQCAtNDk1LDI4ICs1MDUsMjcgQEAgdm9pZCBJREJEYXRhYmFzZUJh
Y2tlbmRJbXBsOjpydW5JbnRWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24oaW50NjRfdCByZXF1ZXN0
ZWRWZXIKICAgICAgICAgY2FsbGJhY2tzLT5vbkJsb2NrZWQobV9tZXRhZGF0YS5pbnRWZXJzaW9u
KTsKICAgICAvLyBGSVhNRTogQWRkIHRlc3QgZm9yIG1fcnVubmluZ1ZlcnNpb25DaGFuZ2VUcmFu
c2FjdGlvbi4KICAgICBpZiAobV9ydW5uaW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uIHx8IGNv
bm5lY3Rpb25Db3VudCgpKSB7Ci0gICAgICAgIG1fcGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGxz
LmFwcGVuZChQZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbDo6Y3JlYXRlKGNhbGxiYWNrcywgZGF0
YWJhc2VDYWxsYmFja3MsIHJlcXVlc3RlZFZlcnNpb24pKTsKKyAgICAgICAgbV9wZW5kaW5nT3Bl
bldpdGhWZXJzaW9uQ2FsbHMuYXBwZW5kKFBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsOjpjcmVh
dGUoY2FsbGJhY2tzLCBkYXRhYmFzZUNhbGxiYWNrcywgdHJhbnNhY3Rpb25JZCwgcmVxdWVzdGVk
VmVyc2lvbikpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgVmVjdG9yPGludDY0X3Q+
IG9iamVjdFN0b3JlSWRzOwotICAgIC8vIEZJWE1FOiBUaGUgdHJhbnNhY3Rpb25JZCBuZWVkcyB0
byBiZSBwaXBlZCBpbiB0aHJvdWdoIElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6b3Blbigp
LgotICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IHRyYW5zYWN0aW9u
SW50ZXJmYWNlID0gY3JlYXRlVHJhbnNhY3Rpb24oMCwgb2JqZWN0U3RvcmVJZHMsIElEQlRyYW5z
YWN0aW9uOjpWRVJTSU9OX0NIQU5HRSk7CisgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2Vu
ZEludGVyZmFjZT4gdHJhbnNhY3Rpb25JbnRlcmZhY2UgPSBjcmVhdGVUcmFuc2FjdGlvbih0cmFu
c2FjdGlvbklkLCBvYmplY3RTdG9yZUlkcywgSURCVHJhbnNhY3Rpb246OlZFUlNJT05fQ0hBTkdF
KTsKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24gPSBJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpmcm9tKHRyYW5zYWN0aW9uSW50ZXJmYWNlLmdldCgp
KTsKIAotICAgIGlmICghdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhWZXJzaW9uQ2hhbmdlT3Bl
cmF0aW9uOjpjcmVhdGUodGhpcywgcmVxdWVzdGVkVmVyc2lvbiwgY2FsbGJhY2tzLCBkYXRhYmFz
ZUNhbGxiYWNrcyksIFZlcnNpb25DaGFuZ2VBYm9ydE9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIG1f
bWV0YWRhdGEudmVyc2lvbiwgbV9tZXRhZGF0YS5pbnRWZXJzaW9uKSkpIHsKKyAgICBpZiAoIXRy
YW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soVmVyc2lvbkNoYW5nZU9wZXJhdGlvbjo6Y3JlYXRlKHRo
aXMsIHRyYW5zYWN0aW9uSWQsIHJlcXVlc3RlZFZlcnNpb24sIGNhbGxiYWNrcywgZGF0YWJhc2VD
YWxsYmFja3MpLCBWZXJzaW9uQ2hhbmdlQWJvcnRPcGVyYXRpb246OmNyZWF0ZSh0aGlzLCBtX21l
dGFkYXRhLnZlcnNpb24sIG1fbWV0YWRhdGEuaW50VmVyc2lvbikpKSB7CiAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KICAgICBBU1NFUlQoIW1fcGVuZGluZ1NlY29uZEhhbGZP
cGVuV2l0aFZlcnNpb24pOwogICAgIG1fZGF0YWJhc2VDYWxsYmFja3NTZXQuYWRkKGRhdGFiYXNl
Q2FsbGJhY2tzKTsKIH0KIAotdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpvcGVuQ29ubmVj
dGlvbldpdGhWZXJzaW9uKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIFBh
c3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IHBycERhdGFiYXNlQ2FsbGJhY2tzLCBpbnQ2
NF90IHZlcnNpb24pCit2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6Om9wZW5Db25uZWN0aW9u
V2l0aFZlcnNpb24oUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywgUGFzc1Jl
ZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gcHJwRGF0YWJhc2VDYWxsYmFja3MsIGludDY0X3Qg
dHJhbnNhY3Rpb25JZCwgaW50NjRfdCB2ZXJzaW9uKQogewogICAgIFJlZlB0cjxJREJDYWxsYmFj
a3M+IGNhbGxiYWNrcyA9IHBycENhbGxiYWNrczsKICAgICBSZWZQdHI8SURCRGF0YWJhc2VDYWxs
YmFja3M+IGRhdGFiYXNlQ2FsbGJhY2tzID0gcHJwRGF0YWJhc2VDYWxsYmFja3M7CiAgICAgaWYg
KCFtX3BlbmRpbmdEZWxldGVDYWxscy5pc0VtcHR5KCkgfHwgbV9ydW5uaW5nVmVyc2lvbkNoYW5n
ZVRyYW5zYWN0aW9uKSB7Ci0gICAgICAgIG1fcGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGxzLmFw
cGVuZChQZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbDo6Y3JlYXRlKGNhbGxiYWNrcywgZGF0YWJh
c2VDYWxsYmFja3MsIHZlcnNpb24pKTsKKyAgICAgICAgbV9wZW5kaW5nT3BlbldpdGhWZXJzaW9u
Q2FsbHMuYXBwZW5kKFBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsOjpjcmVhdGUoY2FsbGJhY2tz
LCBkYXRhYmFzZUNhbGxiYWNrcywgdHJhbnNhY3Rpb25JZCwgdmVyc2lvbikpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogICAgIGlmIChtX21ldGFkYXRhLmlkID09IEludmFsaWRJZCkgewpAQCAt
NTI4LDcgKzUzNyw3IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6b3BlbkNvbm5lY3Rp
b25XaXRoVmVyc2lvbihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4KICAgICAgICAgfQogICAgIH0K
ICAgICBpZiAodmVyc2lvbiA+IG1fbWV0YWRhdGEuaW50VmVyc2lvbikgewotICAgICAgICBydW5J
bnRWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24odmVyc2lvbiwgY2FsbGJhY2tzLCBkYXRhYmFzZUNh
bGxiYWNrcyk7CisgICAgICAgIHJ1bkludFZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbihjYWxsYmFj
a3MsIGRhdGFiYXNlQ2FsbGJhY2tzLCB0cmFuc2FjdGlvbklkLCB2ZXJzaW9uKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KICAgICBpZiAodmVyc2lvbiA8IG1fbWV0YWRhdGEuaW50VmVyc2lvbikg
ewpAQCAtNTk3LDggKzYwNiw4IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Y2xvc2Uo
UGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzCiAKICAgICAvLyBG
SVhNRTogQWRkIGEgdGVzdCBmb3IgdGhlIG1fcGVuZGluZ09wZW5DYWxscyBhbmQgbV9wZW5kaW5n
T3BlbldpdGhWZXJzaW9uQ2FsbHMgY2FzZXMgYmVsb3cuCiAgICAgaWYgKCFjb25uZWN0aW9uQ291
bnQoKSAmJiAhbV9wZW5kaW5nT3BlbkNhbGxzLnNpemUoKSAmJiAhbV9wZW5kaW5nT3BlbldpdGhW
ZXJzaW9uQ2FsbHMuc2l6ZSgpICYmICFtX3BlbmRpbmdEZWxldGVDYWxscy5zaXplKCkpIHsKLSAg
ICAgICAgVHJhbnNhY3Rpb25TZXQgdHJhbnNhY3Rpb25zKG1fdHJhbnNhY3Rpb25zKTsKLSAgICAg
ICAgZm9yIChUcmFuc2FjdGlvblNldDo6Y29uc3RfaXRlcmF0b3IgaXQgPSB0cmFuc2FjdGlvbnMu
YmVnaW4oKTsgaXQgIT0gdHJhbnNhY3Rpb25zLmVuZCgpOyArK2l0KQorICAgICAgICBUcmFuc2Fj
dGlvbk1hcCB0cmFuc2FjdGlvbnMobV90cmFuc2FjdGlvbnMpOworICAgICAgICBmb3IgKFRyYW5z
YWN0aW9uTWFwOjppdGVyYXRvcjo6VmFsdWVzIGl0ID0gdHJhbnNhY3Rpb25zLnZhbHVlcygpLmJl
Z2luKCk7IGl0ICE9IHRyYW5zYWN0aW9ucy52YWx1ZXMoKS5lbmQoKTsgKytpdCkKICAgICAgICAg
ICAgICgqaXQpLT5hYm9ydCgpOwogCiAgICAgICAgIEFTU0VSVChtX3RyYW5zYWN0aW9ucy5pc0Vt
cHR5KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
RGF0YWJhc2VCYWNrZW5kSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oCmluZGV4IDYzMmFhNmE0ZjE0NjkyOGJmOWU4MDZiMDVi
ZTdlMGE5NDA0ZTNmZTEuLjdhNjllOGJjNTIzNTEzODE3MjdlYmY5NjNmNGJlYzczZmVkNjI1Y2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNl
QmFja2VuZEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJE
YXRhYmFzZUJhY2tlbmRJbXBsLmgKQEAgLTU1LDggKzU1LDggQEAgcHVibGljOgogICAgIHN0YXRp
YyBjb25zdCBpbnQ2NF90IEludmFsaWRJZCA9IDA7CiAgICAgaW50NjRfdCBpZCgpIGNvbnN0IHsg
cmV0dXJuIG1fbWV0YWRhdGEuaWQ7IH0KIAotICAgIHZvaWQgb3BlbkNvbm5lY3Rpb24oUGFzc1Jl
ZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPik7Ci0g
ICAgdm9pZCBvcGVuQ29ubmVjdGlvbldpdGhWZXJzaW9uKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tz
PiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4sIGludDY0X3QgdmVyc2lvbik7Cisg
ICAgdm9pZCBvcGVuQ29ubmVjdGlvbihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQ
dHI8SURCRGF0YWJhc2VDYWxsYmFja3M+LCBpbnQ2NF90IHRyYW5zYWN0aW9uSWQpOworICAgIHZv
aWQgb3BlbkNvbm5lY3Rpb25XaXRoVmVyc2lvbihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBh
c3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+LCBpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGlu
dDY0X3QgdmVyc2lvbik7CiAgICAgdm9pZCBkZWxldGVEYXRhYmFzZShQYXNzUmVmUHRyPElEQkNh
bGxiYWNrcz4pOwogCiAgICAgLy8gSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlCkBAIC04Miw3
ICs4Miw3IEBAIHByaXZhdGU6CiAgICAgSURCRGF0YWJhc2VCYWNrZW5kSW1wbChjb25zdCBTdHJp
bmcmIG5hbWUsIElEQkJhY2tpbmdTdG9yZSogZGF0YWJhc2UsIElEQkZhY3RvcnlCYWNrZW5kSW1w
bCosIGNvbnN0IFN0cmluZyYgdW5pcXVlSWRlbnRpZmllcik7CiAKICAgICBib29sIG9wZW5JbnRl
cm5hbCgpOwotICAgIHZvaWQgcnVuSW50VmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKGludDY0X3Qg
cmVxdWVzdGVkVmVyc2lvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPElE
QkRhdGFiYXNlQ2FsbGJhY2tzPik7CisgICAgdm9pZCBydW5JbnRWZXJzaW9uQ2hhbmdlVHJhbnNh
Y3Rpb24oUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2Fs
bGJhY2tzPiwgaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IHJlcXVlc3RlZFZlcnNpb24p
OwogICAgIHZvaWQgbG9hZE9iamVjdFN0b3JlcygpOwogICAgIHNpemVfdCBjb25uZWN0aW9uQ291
bnQoKTsKICAgICB2b2lkIHByb2Nlc3NQZW5kaW5nQ2FsbHMoKTsKQEAgLTEwOSw4ICsxMDksOCBA
QCBwcml2YXRlOgogICAgIE93blB0cjxJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yPiBtX3RyYW5z
YWN0aW9uQ29vcmRpbmF0b3I7CiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+
IG1fcnVubmluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbjsKIAotICAgIHR5cGVkZWYgSGFzaFNl
dDxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKj4gVHJhbnNhY3Rpb25TZXQ7Ci0gICAgVHJhbnNh
Y3Rpb25TZXQgbV90cmFuc2FjdGlvbnM7CisgICAgdHlwZWRlZiBIYXNoTWFwPGludDY0X3QsIElE
QlRyYW5zYWN0aW9uQmFja2VuZEltcGwqPiBUcmFuc2FjdGlvbk1hcDsKKyAgICBUcmFuc2FjdGlv
bk1hcCBtX3RyYW5zYWN0aW9uczsKIAogICAgIGNsYXNzIFBlbmRpbmdPcGVuQ2FsbDsKICAgICBE
ZXF1ZTxPd25QdHI8UGVuZGluZ09wZW5DYWxsPiA+IG1fcGVuZGluZ09wZW5DYWxsczsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5jcHAKaW5kZXggM2Jj
YmM0NDAxMjY2YzNkYTcyNDJkMDRhNWY5NzRjZjY3MGY3ZjhjZC4uODQwY2E5OGVkYTMyMzkyODg0
YWU1MzAzOWExYzhiMTU0NDIzNDk4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCRmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCRmFjdG9yeS5jcHAKQEAgLTEyOSw4ICsxMjksNyBAQCBQYXNzUmVmUHRyPElE
Qk9wZW5EQlJlcXVlc3Q+IElEQkZhY3Rvcnk6Om9wZW5JbnRlcm5hbChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjbwogICAgIFJlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw+IGRhdGFiYXNl
Q2FsbGJhY2tzID0gSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsOjpjcmVhdGUoKTsKICAgICBpbnQ2
NF90IHRyYW5zYWN0aW9uSWQgPSBJREJEYXRhYmFzZTo6bmV4dFRyYW5zYWN0aW9uSWQoKTsKICAg
ICBSZWZQdHI8SURCT3BlbkRCUmVxdWVzdD4gcmVxdWVzdCA9IElEQk9wZW5EQlJlcXVlc3Q6OmNy
ZWF0ZShjb250ZXh0LCBJREJBbnk6OmNyZWF0ZU51bGwoKSwgZGF0YWJhc2VDYWxsYmFja3MsIHRy
YW5zYWN0aW9uSWQsIHZlcnNpb24pOwotICAgIC8vIEZJWE1FOiBwYXNzIHRoZSB0cmFuc2FjdGlv
bklkIGluIGhlcmUgaW4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEw
MzkyMgotICAgIG1fYmFja2VuZC0+b3BlbihuYW1lLCB2ZXJzaW9uLCByZXF1ZXN0LCBkYXRhYmFz
ZUNhbGxiYWNrcywgY29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKSwgY29udGV4dCwgZ2V0SW5kZXhl
ZERCRGF0YWJhc2VQYXRoKGNvbnRleHQpKTsKKyAgICBtX2JhY2tlbmQtPm9wZW4obmFtZSwgdmVy
c2lvbiwgdHJhbnNhY3Rpb25JZCwgcmVxdWVzdCwgZGF0YWJhc2VDYWxsYmFja3MsIGNvbnRleHQt
PnNlY3VyaXR5T3JpZ2luKCksIGNvbnRleHQsIGdldEluZGV4ZWREQkRhdGFiYXNlUGF0aChjb250
ZXh0KSk7CiAgICAgcmV0dXJuIHJlcXVlc3Q7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEltcGwuY3BwCmluZGV4
IGJlMDQ3Mzk4ZDg1ZTk0MWU5NTljMWY1MTc5ZTZiNDViNDYxNTAwZmIuLjUxYWU4Y2VkMTliODg2
M2VjZDFhYzllZDc4OTk5YzEyNDQ1ZTBlNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmNwcApAQCAtMTY2
LDkgKzE2Niw5IEBAIHZvaWQgSURCRmFjdG9yeUJhY2tlbmRJbXBsOjpvcGVuKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgaW50NjRfdCB2ZXJzaW9uLCBpbnQ2NF90IHRyCiAgICAgICAgIGRhdGFiYXNlQmFj
a2VuZCA9IGl0LT52YWx1ZTsKIAogICAgIGlmICh2ZXJzaW9uID09IElEQkRhdGFiYXNlTWV0YWRh
dGE6Ok5vSW50VmVyc2lvbikKLSAgICAgICAgZGF0YWJhc2VCYWNrZW5kLT5vcGVuQ29ubmVjdGlv
bihjYWxsYmFja3MsIGRhdGFiYXNlQ2FsbGJhY2tzKTsKKyAgICAgICAgZGF0YWJhc2VCYWNrZW5k
LT5vcGVuQ29ubmVjdGlvbihjYWxsYmFja3MsIGRhdGFiYXNlQ2FsbGJhY2tzLCB0cmFuc2FjdGlv
bklkKTsKICAgICBlbHNlCi0gICAgICAgIGRhdGFiYXNlQmFja2VuZC0+b3BlbkNvbm5lY3Rpb25X
aXRoVmVyc2lvbihjYWxsYmFja3MsIGRhdGFiYXNlQ2FsbGJhY2tzLCB2ZXJzaW9uKTsKKyAgICAg
ICAgZGF0YWJhc2VCYWNrZW5kLT5vcGVuQ29ubmVjdGlvbldpdGhWZXJzaW9uKGNhbGxiYWNrcywg
ZGF0YWJhc2VDYWxsYmFja3MsIHRyYW5zYWN0aW9uSWQsIHZlcnNpb24pOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0lEQkRhdGFiYXNlQmFja2VuZFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9JREJEYXRhYmFzZUJhY2tlbmRUZXN0LmNwcAppbmRleCBjMmVmYzE5ODE5NDNmN2NiMjExYjVh
NmVlMGU2NDU5YjA3MWJmNWM4Li4wODQ5MDM0NjU1OGQ2MDk0N2E4NDgwNzM0NmNiMjU4MWUyNmVi
MTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkRhdGFiYXNl
QmFja2VuZFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCRGF0
YWJhc2VCYWNrZW5kVGVzdC5jcHAKQEAgLTEyNSwxMSArMTI1LDExIEBAIFRFU1QoSURCRGF0YWJh
c2VCYWNrZW5kVGVzdCwgQ29ubmVjdGlvbkxpZmVjeWNsZSkKIAogICAgIFJlZlB0cjxNb2NrSURC
Q2FsbGJhY2tzPiByZXF1ZXN0MSA9IE1vY2tJREJDYWxsYmFja3M6OmNyZWF0ZSgpOwogICAgIFJl
ZlB0cjxGYWtlSURCRGF0YWJhc2VDYWxsYmFja3M+IGNvbm5lY3Rpb24xID0gRmFrZUlEQkRhdGFi
YXNlQ2FsbGJhY2tzOjpjcmVhdGUoKTsKLSAgICBkYi0+b3BlbkNvbm5lY3Rpb25XaXRoVmVyc2lv
bihyZXF1ZXN0MSwgY29ubmVjdGlvbjEsIElEQkRhdGFiYXNlTWV0YWRhdGE6Ok5vSW50VmVyc2lv
bik7CisgICAgZGItPm9wZW5Db25uZWN0aW9uV2l0aFZlcnNpb24ocmVxdWVzdDEsIGNvbm5lY3Rp
b24xLCAxLCBJREJEYXRhYmFzZU1ldGFkYXRhOjpOb0ludFZlcnNpb24pOwogCiAgICAgUmVmUHRy
PE1vY2tJREJDYWxsYmFja3M+IHJlcXVlc3QyID0gTW9ja0lEQkNhbGxiYWNrczo6Y3JlYXRlKCk7
CiAgICAgUmVmUHRyPEZha2VJREJEYXRhYmFzZUNhbGxiYWNrcz4gY29ubmVjdGlvbjIgPSBGYWtl
SURCRGF0YWJhc2VDYWxsYmFja3M6OmNyZWF0ZSgpOwotICAgIGRiLT5vcGVuQ29ubmVjdGlvbldp
dGhWZXJzaW9uKHJlcXVlc3QyLCBjb25uZWN0aW9uMiwgSURCRGF0YWJhc2VNZXRhZGF0YTo6Tm9J
bnRWZXJzaW9uKTsKKyAgICBkYi0+b3BlbkNvbm5lY3Rpb25XaXRoVmVyc2lvbihyZXF1ZXN0Miwg
Y29ubmVjdGlvbjIsIDIsIElEQkRhdGFiYXNlTWV0YWRhdGE6Ok5vSW50VmVyc2lvbik7CiAKICAg
ICBkYi0+Y2xvc2UoY29ubmVjdGlvbjEpOwogICAgIEVYUEVDVF9HVChiYWNraW5nU3RvcmUtPnJl
ZkNvdW50KCksIDEpOwpAQCAtMTkyLDcgKzE5Miw3IEBAIFRFU1QoSURCRGF0YWJhc2VCYWNrZW5k
VGVzdCwgRm9yY2VkQ2xvc2UpCiAKICAgICBSZWZQdHI8TW9ja0lEQkRhdGFiYXNlQmFja2VuZFBy
b3h5PiBwcm94eSA9IE1vY2tJREJEYXRhYmFzZUJhY2tlbmRQcm94eTo6Y3JlYXRlKHdlYkRhdGFi
YXNlKTsKICAgICBSZWZQdHI8TW9ja0lEQkNhbGxiYWNrcz4gcmVxdWVzdCA9IE1vY2tJREJDYWxs
YmFja3M6OmNyZWF0ZSgpOwotICAgIGJhY2tlbmQtPm9wZW5Db25uZWN0aW9uV2l0aFZlcnNpb24o
cmVxdWVzdCwgY29ubmVjdGlvblByb3h5LCBJREJEYXRhYmFzZU1ldGFkYXRhOjpOb0ludFZlcnNp
b24pOworICAgIGJhY2tlbmQtPm9wZW5Db25uZWN0aW9uV2l0aFZlcnNpb24ocmVxdWVzdCwgY29u
bmVjdGlvblByb3h5LCAzLCBJREJEYXRhYmFzZU1ldGFkYXRhOjpOb0ludFZlcnNpb24pOwogCiAg
ICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCA9IDA7CiAgICAgUmVmUHRyPElEQkRh
dGFiYXNlPiBpZGJEYXRhYmFzZSA9IElEQkRhdGFiYXNlOjpjcmVhdGUoY29udGV4dCwgcHJveHks
IGNvbm5lY3Rpb24pOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178241</attachid>
            <date>2012-12-07 10:56:26 -0800</date>
            <delta_ts>2012-12-07 15:21:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103922-20121207105350.patch</filename>
            <type>text/plain</type>
            <size>28076</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2OTQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGUzZTRiOWY4MTE1OTQx
M2FkY2RhNDYwZDE2MDVjYjU0MjA3MjM4Ny4uMjZmOWNmYTM3ZjA3ZjUyOTc5ZGQxYTczZGU5MTIz
NzdjZWU0N2QxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDEyLTEyLTA2ICBBbGVj
IEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IHBy
b3BhZ2F0ZSB0cmFuc2FjdGlvbl9pZHMgdGhyb3VnaCBvcGVuL3VwZ3JhZGVuZWVkZWQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzkyMgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2Ugc3VyZSBmcm9u
dC1lbmQgaXMgYWx3YXlzIGdlbmVyYXRpbmcgdGhlIHRyYW5zYWN0aW9uIGlkLAorICAgICAgICBz
byB0aGF0IGl0IGNhbiBiZSByZWxpZWQgdXBvbiBhcyBhbiBhbHRlcm5hdGl2ZSB0byB0aGUKKyAg
ICAgICAgdG8tYmUtZGVwcmVjYXRlZCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UgcG9p
bnRlci4KKworICAgICAgICBObyBuZXcgdGVzdHMsIHRoaXMgaXMgb25lIHN0YWdlIGluIGEgbGFy
Z2VyIHJlZmFjdG9yLgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VC
YWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBs
OjpWZXJzaW9uQ2hhbmdlT3BlcmF0aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SURC
RGF0YWJhc2VCYWNrZW5kSW1wbDo6VmVyc2lvbkNoYW5nZU9wZXJhdGlvbjo6VmVyc2lvbkNoYW5n
ZU9wZXJhdGlvbik6CisgICAgICAgIChJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpWZXJzaW9uQ2hh
bmdlT3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6
OlBlbmRpbmdPcGVuQ2FsbDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNl
QmFja2VuZEltcGw6OlBlbmRpbmdPcGVuQ2FsbDo6dHJhbnNhY3Rpb25JZCk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpQZW5kaW5nT3BlbkNhbGw6OlBlbmRpbmdP
cGVuQ2FsbCk6CisgICAgICAgIChJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpQZW5kaW5nT3BlbkNh
bGwpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6UGVuZGluZ09w
ZW5XaXRoVmVyc2lvbkNhbGw6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFz
ZUJhY2tlbmRJbXBsOjpQZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbDo6dHJhbnNhY3Rpb25JZCk6
CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpQZW5kaW5nT3Blbldp
dGhWZXJzaW9uQ2FsbDo6UGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGwpOgorICAgICAgICAoSURC
RGF0YWJhc2VCYWNrZW5kSW1wbDo6UGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGwpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6VmVyc2lvbkNoYW5nZU9wZXJhdGlv
bjo6cGVyZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpw
cm9jZXNzUGVuZGluZ0NhbGxzKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2Vu
ZEltcGw6OmNyZWF0ZVRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNl
QmFja2VuZEltcGw6Om9wZW5Db25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFi
YXNlQmFja2VuZEltcGw6OnJ1bkludFZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpvcGVuQ29ubmVjdGlvbldpdGhWZXJz
aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBs
Lmg6CisgICAgICAgIChJREJEYXRhYmFzZUJhY2tlbmRJbXBsKToKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkZhY3Rvcnk6
Om9wZW5JbnRlcm5hbCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJh
Y2tlbmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkZhY3RvcnlCYWNrZW5kSW1wbDo6
b3Blbik6CisKIDIwMTItMTItMDYgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFVzZSBhbHdheXMgdGhlIG9yZGVyIGl0ZXJhdG9yIGZyb20gZGF0
YSBtZW1iZXIgaW4gUmVuZGVyRmxleGlibGVCb3gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5k
ZXggYTYxZGE0M2RlYTE5NWVhODZkN2IyYjAxYzUwNzExNTNjN2UwNWY5Mi4uN2RiNjgzYTY1ZDlh
YTFlYmQ3MGFjMjlkNjY3N2U0OGM0NTk2YzljZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNCBAQAorMjAxMi0xMi0wNiAgQWxlYyBGbGV0dCAgPGFsZWNmbGV0dEBjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBwcm9wYWdhdGUgdHJhbnNhY3Rpb25faWRz
IHRocm91Z2ggb3Blbi91cGdyYWRlbmVlZGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMDM5MjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgdGVzdCB0byBhY2NvdW50IGZvciBwcmUtZ2VuZXJh
dGVkIHRyYW5zYWN0aW9uIGlkcy4KKworICAgICAgICAqIHRlc3RzL0lEQkRhdGFiYXNlQmFja2Vu
ZFRlc3QuY3BwOgorCiAyMDEyLTEyLTA3ICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkIHJvbGwgY3Job21pdW0gdG8gcjE3MTcwNy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcApp
bmRleCBlNDFlOGZjOTBjMjMxMThjYTk0YmQwNmZiMGEzYzg5ZjM3YTg5MmU3Li4xYmQ1Yjg4Mzdk
YmU0YjFhMmJkMWViNGYxYmUxM2Y2ZTk2ZTJiNTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwCkBAIC04NSw4ICs4NSw4IEBAIGludDY0
X3QgSURCRGF0YWJhc2U6Om5leHRUcmFuc2FjdGlvbklkKCkKIHZvaWQgSURCRGF0YWJhc2U6OnRy
YW5zYWN0aW9uQ3JlYXRlZChJREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24pCiB7CiAgICAgQVNT
RVJUKHRyYW5zYWN0aW9uKTsKLSAgICBBU1NFUlQoIW1fdHJhbnNhY3Rpb25zLmNvbnRhaW5zKHRy
YW5zYWN0aW9uKSk7Ci0gICAgbV90cmFuc2FjdGlvbnMuYWRkKHRyYW5zYWN0aW9uKTsKKyAgICBB
U1NFUlQoIW1fdHJhbnNhY3Rpb25zLmNvbnRhaW5zKHRyYW5zYWN0aW9uLT5pZCgpKSk7CisgICAg
bV90cmFuc2FjdGlvbnMuYWRkKHRyYW5zYWN0aW9uLT5pZCgpLCB0cmFuc2FjdGlvbik7CiAKICAg
ICBpZiAodHJhbnNhY3Rpb24tPmlzVmVyc2lvbkNoYW5nZSgpKSB7CiAgICAgICAgIEFTU0VSVCgh
bV92ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24pOwpAQCAtOTcsOCArOTcsOSBAQCB2b2lkIElEQkRh
dGFiYXNlOjp0cmFuc2FjdGlvbkNyZWF0ZWQoSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uKQog
dm9pZCBJREJEYXRhYmFzZTo6dHJhbnNhY3Rpb25GaW5pc2hlZChJREJUcmFuc2FjdGlvbiogdHJh
bnNhY3Rpb24pCiB7CiAgICAgQVNTRVJUKHRyYW5zYWN0aW9uKTsKLSAgICBBU1NFUlQobV90cmFu
c2FjdGlvbnMuY29udGFpbnModHJhbnNhY3Rpb24pKTsKLSAgICBtX3RyYW5zYWN0aW9ucy5yZW1v
dmUodHJhbnNhY3Rpb24pOworICAgIEFTU0VSVChtX3RyYW5zYWN0aW9ucy5jb250YWlucyh0cmFu
c2FjdGlvbi0+aWQoKSkpOworICAgIEFTU0VSVChtX3RyYW5zYWN0aW9ucy5nZXQodHJhbnNhY3Rp
b24tPmlkKCkpID09IHRyYW5zYWN0aW9uKTsKKyAgICBtX3RyYW5zYWN0aW9ucy5yZW1vdmUodHJh
bnNhY3Rpb24tPmlkKCkpOwogCiAgICAgaWYgKHRyYW5zYWN0aW9uLT5pc1ZlcnNpb25DaGFuZ2Uo
KSkgewogICAgICAgICBBU1NFUlQobV92ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24gPT0gdHJhbnNh
Y3Rpb24pOwpAQCAtMTExLDEyICsxMTIsMTQgQEAgdm9pZCBJREJEYXRhYmFzZTo6dHJhbnNhY3Rp
b25GaW5pc2hlZChJREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24pCiAKIHZvaWQgSURCRGF0YWJh
c2U6Om9uQWJvcnQoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNl
RXJyb3I+IGVycm9yKQogewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIEFTU0VSVCht
X3RyYW5zYWN0aW9ucy5jb250YWlucyh0cmFuc2FjdGlvbklkKSk7CisgICAgbV90cmFuc2FjdGlv
bnMuZ2V0KHRyYW5zYWN0aW9uSWQpLT5vbkFib3J0KGVycm9yKTsKIH0KIAogdm9pZCBJREJEYXRh
YmFzZTo6b25Db21wbGV0ZShpbnQ2NF90IHRyYW5zYWN0aW9uSWQpCiB7Ci0gICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgQVNTRVJUKG1fdHJhbnNhY3Rpb25zLmNvbnRhaW5zKHRyYW5zYWN0
aW9uSWQpKTsKKyAgICBtX3RyYW5zYWN0aW9ucy5nZXQodHJhbnNhY3Rpb25JZCktPm9uQ29tcGxl
dGUoKTsKIH0KIAogUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBJREJEYXRhYmFzZTo6b2JqZWN0
U3RvcmVOYW1lcygpIGNvbnN0CkBAIC0yNjgsNyArMjcxLDcgQEAgUGFzc1JlZlB0cjxJREJUcmFu
c2FjdGlvbj4gSURCRGF0YWJhc2U6OnRyYW5zYWN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnQKIHZvaWQgSURCRGF0YWJhc2U6OmZvcmNlQ2xvc2UoKQogewogICAgIEV4Y2VwdGlvbkNv
ZGUgZWMgPSAwOwotICAgIGZvciAoSGFzaFNldDxJREJUcmFuc2FjdGlvbio+OjppdGVyYXRvciBp
dCA9IG1fdHJhbnNhY3Rpb25zLmJlZ2luKCk7IGl0ICE9IG1fdHJhbnNhY3Rpb25zLmVuZCgpOyAr
K2l0KQorICAgIGZvciAoVHJhbnNhY3Rpb25NYXA6OmNvbnN0X2l0ZXJhdG9yOjpWYWx1ZXMgaXQg
PSBtX3RyYW5zYWN0aW9ucy5iZWdpbigpLnZhbHVlcygpLCBlbmQgPSBtX3RyYW5zYWN0aW9ucy5l
bmQoKS52YWx1ZXMoKTsgaXQgIT0gZW5kOyArK2l0KQogICAgICAgICAoKml0KS0+YWJvcnQoZWMp
OwogICAgIHRoaXMtPmNsb3NlKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCRGF0YWJhc2UuaAppbmRleCAyMGJjYWFhOTg2Mjk4Njg4YTIzOGQ2MTJkOWRkMGVk
ZDM5ZjQzODZlLi4xYzk3Nzk2YjgxNTkxM2Y4YTFjOTkwMjQ2NTVjYTZkNzg1NWJjNzg5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmgKQEAgLTEy
MCw3ICsxMjAsOCBAQCBwcml2YXRlOgogICAgIElEQkRhdGFiYXNlTWV0YWRhdGEgbV9tZXRhZGF0
YTsKICAgICBSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBtX2JhY2tlbmQ7CiAg
ICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uPiBtX3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbjsKLSAg
ICBIYXNoU2V0PElEQlRyYW5zYWN0aW9uKj4gbV90cmFuc2FjdGlvbnM7CisgICAgdHlwZWRlZiBI
YXNoTWFwPGludDY0X3QsIElEQlRyYW5zYWN0aW9uKj4gVHJhbnNhY3Rpb25NYXA7CisgICAgVHJh
bnNhY3Rpb25NYXAgbV90cmFuc2FjdGlvbnM7CiAKICAgICBib29sIG1fY2xvc2VQZW5kaW5nOwog
ICAgIGJvb2wgbV9jb250ZXh0U3RvcHBlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKaW5kZXggZWNi
NjFlZTFmOTI5YTIwMTYyMGFmNmZhMjdkZDNiZTVjY2JhMTkzMC4uM2JjNzU0YTg3MWVkNGUzYzEz
ZjU1Njg1MTIwMzk5NjgwNWQ3ZDk3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKQEAgLTc2LDE0
ICs3NiwxNSBAQCBwcml2YXRlOgogCiBjbGFzcyBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpWZXJz
aW9uQ2hhbmdlT3BlcmF0aW9uIDogcHVibGljIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6Ok9w
ZXJhdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8SURCVHJhbnNhY3Rpb25C
YWNrZW5kSW1wbDo6T3BlcmF0aW9uPiBjcmVhdGUoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tl
bmRJbXBsPiBkYXRhYmFzZSwgaW50NjRfdCB2ZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNr
cz4gY2FsbGJhY2tzLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBkYXRhYmFzZUNh
bGxiYWNrcykKKyAgICBzdGF0aWMgUGFzc093blB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBs
OjpPcGVyYXRpb24+IGNyZWF0ZShQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEltcGw+IGRh
dGFiYXNlLCBpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3QgdmVyc2lvbiwgUGFzc1JlZlB0
cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNr
cz4gZGF0YWJhc2VDYWxsYmFja3MpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3
IFZlcnNpb25DaGFuZ2VPcGVyYXRpb24oZGF0YWJhc2UsIHZlcnNpb24sIGNhbGxiYWNrcywgZGF0
YWJhc2VDYWxsYmFja3MpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBWZXJzaW9uQ2hh
bmdlT3BlcmF0aW9uKGRhdGFiYXNlLCB0cmFuc2FjdGlvbklkLCB2ZXJzaW9uLCBjYWxsYmFja3Ms
IGRhdGFiYXNlQ2FsbGJhY2tzKSk7CiAgICAgfQogICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtKElE
QlRyYW5zYWN0aW9uQmFja2VuZEltcGwqKTsKIHByaXZhdGU6Ci0gICAgVmVyc2lvbkNoYW5nZU9w
ZXJhdGlvbihQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEltcGw+IGRhdGFiYXNlLCBpbnQ2
NF90IHZlcnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIFBhc3NSZWZQ
dHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IGRhdGFiYXNlQ2FsbGJhY2tzKQorICAgIFZlcnNpb25D
aGFuZ2VPcGVyYXRpb24oUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBsPiBkYXRhYmFz
ZSwgaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IHZlcnNpb24sIFBhc3NSZWZQdHI8SURC
Q2FsbGJhY2tzPiBjYWxsYmFja3MsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IGRh
dGFiYXNlQ2FsbGJhY2tzKQogICAgICAgICA6IG1fZGF0YWJhc2UoZGF0YWJhc2UpCisgICAgICAg
ICwgbV90cmFuc2FjdGlvbklkKHRyYW5zYWN0aW9uSWQpCiAgICAgICAgICwgbV92ZXJzaW9uKHZl
cnNpb24pCiAgICAgICAgICwgbV9jYWxsYmFja3MoY2FsbGJhY2tzKQogICAgICAgICAsIG1fZGF0
YWJhc2VDYWxsYmFja3MoZGF0YWJhc2VDYWxsYmFja3MpCkBAIC05MSw2ICs5Miw3IEBAIHByaXZh
dGU6CiAgICAgfQogCiAgICAgUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEltcGw+IG1fZGF0YWJh
c2U7CisgICAgaW50NjRfdCBtX3RyYW5zYWN0aW9uSWQ7CiAgICAgaW50NjRfdCBtX3ZlcnNpb247
CiAgICAgUmVmUHRyPElEQkNhbGxiYWNrcz4gbV9jYWxsYmFja3M7CiAgICAgUmVmUHRyPElEQkRh
dGFiYXNlQ2FsbGJhY2tzPiBtX2RhdGFiYXNlQ2FsbGJhY2tzOwpAQCAtMTU1LDQ0ICsxNTcsNTAg
QEAgcHJpdmF0ZToKIAogY2xhc3MgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6UGVuZGluZ09wZW5D
YWxsIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxQZW5kaW5nT3BlbkNhbGw+IGNy
ZWF0ZShQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBQYXNzUmVmUHRyPElEQkRh
dGFiYXNlQ2FsbGJhY2tzPiBkYXRhYmFzZUNhbGxiYWNrcykKKyAgICBzdGF0aWMgUGFzc093blB0
cjxQZW5kaW5nT3BlbkNhbGw+IGNyZWF0ZShQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJh
Y2tzLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBkYXRhYmFzZUNhbGxiYWNrcywg
aW50NjRfdCB0cmFuc2FjdGlvbklkKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5l
dyBQZW5kaW5nT3BlbkNhbGwoY2FsbGJhY2tzLCBkYXRhYmFzZUNhbGxiYWNrcykpOworICAgICAg
ICByZXR1cm4gYWRvcHRQdHIobmV3IFBlbmRpbmdPcGVuQ2FsbChjYWxsYmFja3MsIGRhdGFiYXNl
Q2FsbGJhY2tzLCB0cmFuc2FjdGlvbklkKSk7CiAgICAgfQogICAgIFBhc3NSZWZQdHI8SURCQ2Fs
bGJhY2tzPiBjYWxsYmFja3MoKSB7IHJldHVybiBtX2NhbGxiYWNrczsgfQogICAgIFBhc3NSZWZQ
dHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IGRhdGFiYXNlQ2FsbGJhY2tzKCkgeyByZXR1cm4gbV9k
YXRhYmFzZUNhbGxiYWNrczsgfQorICAgIGludDY0X3QgdHJhbnNhY3Rpb25JZCgpIGNvbnN0IHsg
cmV0dXJuIG1fdHJhbnNhY3Rpb25JZDsgfQogCiBwcml2YXRlOgotICAgIFBlbmRpbmdPcGVuQ2Fs
bChQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBQYXNzUmVmUHRyPElEQkRhdGFi
YXNlQ2FsbGJhY2tzPiBkYXRhYmFzZUNhbGxiYWNrcykKKyAgICBQZW5kaW5nT3BlbkNhbGwoUGFz
c1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNh
bGxiYWNrcz4gZGF0YWJhc2VDYWxsYmFja3MsIGludDY0X3QgdHJhbnNhY3Rpb25JZCkKICAgICAg
ICAgOiBtX2NhbGxiYWNrcyhjYWxsYmFja3MpCiAgICAgICAgICwgbV9kYXRhYmFzZUNhbGxiYWNr
cyhkYXRhYmFzZUNhbGxiYWNrcykKKyAgICAgICAgLCBtX3RyYW5zYWN0aW9uSWQodHJhbnNhY3Rp
b25JZCkKICAgICB7CiAgICAgfQogCiAgICAgUmVmUHRyPElEQkNhbGxiYWNrcz4gbV9jYWxsYmFj
a3M7CiAgICAgUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBtX2RhdGFiYXNlQ2FsbGJhY2tz
OworICAgIGNvbnN0IGludDY0X3QgbV90cmFuc2FjdGlvbklkOwogfTsKIAogY2xhc3MgSURCRGF0
YWJhc2VCYWNrZW5kSW1wbDo6UGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGwgewogcHVibGljOgot
ICAgIHN0YXRpYyBQYXNzT3duUHRyPFBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsPiBjcmVhdGUo
UGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxJREJEYXRhYmFz
ZUNhbGxiYWNrcz4gZGF0YWJhc2VDYWxsYmFja3MsIGludDY0X3QgdmVyc2lvbikKKyAgICBzdGF0
aWMgUGFzc093blB0cjxQZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbD4gY3JlYXRlKFBhc3NSZWZQ
dHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFj
a3M+IGRhdGFiYXNlQ2FsbGJhY2tzLCBpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3QgdmVy
c2lvbikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgUGVuZGluZ09wZW5XaXRo
VmVyc2lvbkNhbGwoY2FsbGJhY2tzLCBkYXRhYmFzZUNhbGxiYWNrcywgdmVyc2lvbikpOworICAg
ICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsKGNhbGxi
YWNrcywgZGF0YWJhc2VDYWxsYmFja3MsIHRyYW5zYWN0aW9uSWQsIHZlcnNpb24pKTsKICAgICB9
CiAgICAgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcygpIHsgcmV0dXJuIG1fY2Fs
bGJhY2tzOyB9CiAgICAgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gZGF0YWJhc2VD
YWxsYmFja3MoKSB7IHJldHVybiBtX2RhdGFiYXNlQ2FsbGJhY2tzOyB9CiAgICAgaW50NjRfdCB2
ZXJzaW9uKCkgeyByZXR1cm4gbV92ZXJzaW9uOyB9CisgICAgaW50NjRfdCB0cmFuc2FjdGlvbklk
KCkgY29uc3QgeyByZXR1cm4gbV90cmFuc2FjdGlvbklkOyB9CiAKIHByaXZhdGU6Ci0gICAgUGVu
ZGluZ09wZW5XaXRoVmVyc2lvbkNhbGwoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNr
cywgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gZGF0YWJhc2VDYWxsYmFja3MsIGlu
dDY0X3QgdmVyc2lvbikKKyAgICBQZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbChQYXNzUmVmUHRy
PElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tz
PiBkYXRhYmFzZUNhbGxiYWNrcywgaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IHZlcnNp
b24pCiAgICAgICAgIDogbV9jYWxsYmFja3MoY2FsbGJhY2tzKQogICAgICAgICAsIG1fZGF0YWJh
c2VDYWxsYmFja3MoZGF0YWJhc2VDYWxsYmFja3MpCiAgICAgICAgICwgbV92ZXJzaW9uKHZlcnNp
b24pCisgICAgICAgICwgbV90cmFuc2FjdGlvbklkKHRyYW5zYWN0aW9uSWQpCiAgICAgewogICAg
IH0KICAgICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBtX2NhbGxiYWNrczsKICAgICBSZWZQdHI8SURC
RGF0YWJhc2VDYWxsYmFja3M+IG1fZGF0YWJhc2VDYWxsYmFja3M7CiAgICAgaW50NjRfdCBtX3Zl
cnNpb247CisgICAgY29uc3QgaW50NjRfdCBtX3RyYW5zYWN0aW9uSWQ7CiB9OwogCiBjbGFzcyBJ
REJEYXRhYmFzZUJhY2tlbmRJbXBsOjpQZW5kaW5nRGVsZXRlQ2FsbCB7CkBAIC0zMTgsNiArMzI2
LDE5IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6ZGVsZXRlT2JqZWN0U3RvcmUoaW50
NjRfdCBpZCwgSURCVHJhbnNhY3Rpb25CYWNrZW5kCiAgICAgbV9vYmplY3RTdG9yZXMucmVtb3Zl
KGlkKTsKIH0KIAordm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjb21taXQoaW50NjRfdCB0
cmFuc2FjdGlvbklkKQoreworICAgIEFTU0VSVChtX3RyYW5zYWN0aW9ucy5jb250YWlucyh0cmFu
c2FjdGlvbklkKSk7CisgICAgbV90cmFuc2FjdGlvbnMuZ2V0KHRyYW5zYWN0aW9uSWQpLT5jb21t
aXQoKTsKK30KKwordm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjphYm9ydChpbnQ2NF90IHRy
YW5zYWN0aW9uSWQpCit7CisgICAgQVNTRVJUKG1fdHJhbnNhY3Rpb25zLmNvbnRhaW5zKHRyYW5z
YWN0aW9uSWQpKTsKKyAgICBtX3RyYW5zYWN0aW9ucy5nZXQodHJhbnNhY3Rpb25JZCktPmFib3J0
KCk7Cit9CisKKwogdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpEZWxldGVPYmplY3RTdG9y
ZU9wZXJhdGlvbjo6cGVyZm9ybShJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlv
bikKIHsKICAgICBJREJfVFJBQ0UoIkRlbGV0ZU9iamVjdFN0b3JlT3BlcmF0aW9uIik7CkBAIC0z
NDIsNyArMzYzLDcgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpWZXJzaW9uQ2hhbmdl
T3BlcmF0aW9uOjpwZXJmb3JtKElEQlRyYW5zYWN0aW9uQmFja2UKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KICAgICBBU1NFUlQoIW1fZGF0YWJhc2UtPm1fcGVuZGluZ1NlY29uZEhhbGZPcGVuV2l0
aFZlcnNpb24pOwotICAgIG1fZGF0YWJhc2UtPm1fcGVuZGluZ1NlY29uZEhhbGZPcGVuV2l0aFZl
cnNpb24gPSBQZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbDo6Y3JlYXRlKG1fY2FsbGJhY2tzLCBt
X2RhdGFiYXNlQ2FsbGJhY2tzLCBtX3ZlcnNpb24pOworICAgIG1fZGF0YWJhc2UtPm1fcGVuZGlu
Z1NlY29uZEhhbGZPcGVuV2l0aFZlcnNpb24gPSBQZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbDo6
Y3JlYXRlKG1fY2FsbGJhY2tzLCBtX2RhdGFiYXNlQ2FsbGJhY2tzLCBtX3RyYW5zYWN0aW9uSWQs
IG1fdmVyc2lvbik7CiAgICAgbV9jYWxsYmFja3MtPm9uVXBncmFkZU5lZWRlZChvbGRWZXJzaW9u
LCB0cmFuc2FjdGlvbiwgbV9kYXRhYmFzZSk7CiB9CiAKQEAgLTM1OCw4ICszNzksOSBAQCB2b2lk
IElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnRyYW5zYWN0aW9uU3RhcnRlZChQYXNzUmVmUHRyPElE
QlRyYW5zYWN0aW9uQmFja2VuZAogdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjp0cmFuc2Fj
dGlvbkZpbmlzaGVkKFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gcHJwVHJh
bnNhY3Rpb24pCiB7CiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+IHRyYW5z
YWN0aW9uID0gcHJwVHJhbnNhY3Rpb247Ci0gICAgQVNTRVJUKG1fdHJhbnNhY3Rpb25zLmNvbnRh
aW5zKHRyYW5zYWN0aW9uLmdldCgpKSk7Ci0gICAgbV90cmFuc2FjdGlvbnMucmVtb3ZlKHRyYW5z
YWN0aW9uLmdldCgpKTsKKyAgICBBU1NFUlQobV90cmFuc2FjdGlvbnMuY29udGFpbnModHJhbnNh
Y3Rpb24tPmlkKCkpKTsKKyAgICBBU1NFUlQobV90cmFuc2FjdGlvbnMuZ2V0KHRyYW5zYWN0aW9u
LT5pZCgpKSA9PSB0cmFuc2FjdGlvbi5nZXQoKSk7CisgICAgbV90cmFuc2FjdGlvbnMucmVtb3Zl
KHRyYW5zYWN0aW9uLT5pZCgpKTsKICAgICBpZiAodHJhbnNhY3Rpb24tPm1vZGUoKSA9PSBJREJU
cmFuc2FjdGlvbjo6VkVSU0lPTl9DSEFOR0UpIHsKICAgICAgICAgQVNTRVJUKHRyYW5zYWN0aW9u
LmdldCgpID09IG1fcnVubmluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbi5nZXQoKSk7CiAgICAg
ICAgIG1fcnVubmluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbi5jbGVhcigpOwpAQCAtNDI2LDcg
KzQ0OCw3IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6cHJvY2Vzc1BlbmRpbmdDYWxs
cygpCiAgICAgbV9wZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbHMuc3dhcChwZW5kaW5nT3Blbldp
dGhWZXJzaW9uQ2FsbHMpOwogICAgIHdoaWxlICghcGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGxz
LmlzRW1wdHkoKSkgewogICAgICAgICBPd25QdHI8UGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGw+
IHBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsID0gcGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGxz
LnRha2VGaXJzdCgpOwotICAgICAgICBvcGVuQ29ubmVjdGlvbldpdGhWZXJzaW9uKHBlbmRpbmdP
cGVuV2l0aFZlcnNpb25DYWxsLT5jYWxsYmFja3MoKSwgcGVuZGluZ09wZW5XaXRoVmVyc2lvbkNh
bGwtPmRhdGFiYXNlQ2FsbGJhY2tzKCksIHBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsLT52ZXJz
aW9uKCkpOworICAgICAgICBvcGVuQ29ubmVjdGlvbldpdGhWZXJzaW9uKHBlbmRpbmdPcGVuV2l0
aFZlcnNpb25DYWxsLT5jYWxsYmFja3MoKSwgcGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGwtPmRh
dGFiYXNlQ2FsbGJhY2tzKCksIHBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsLT50cmFuc2FjdGlv
bklkKCksIHBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsLT52ZXJzaW9uKCkpOwogICAgIH0KIAog
ICAgIC8vIE9wZW4gY2FsbHMgY2FuIGJlIHJlcXVldWVkIGlmIGFuIG9wZW5XaXRoVmVyc2lvbiBj
YWxsIHN0YXJ0ZWQgYSB2ZXJzaW9uCkBAIC00MzUsNyArNDU3LDcgQEAgdm9pZCBJREJEYXRhYmFz
ZUJhY2tlbmRJbXBsOjpwcm9jZXNzUGVuZGluZ0NhbGxzKCkKICAgICBtX3BlbmRpbmdPcGVuQ2Fs
bHMuc3dhcChwZW5kaW5nT3BlbkNhbGxzKTsKICAgICB3aGlsZSAoIXBlbmRpbmdPcGVuQ2FsbHMu
aXNFbXB0eSgpKSB7CiAgICAgICAgIE93blB0cjxQZW5kaW5nT3BlbkNhbGw+IHBlbmRpbmdPcGVu
Q2FsbCA9IHBlbmRpbmdPcGVuQ2FsbHMudGFrZUZpcnN0KCk7Ci0gICAgICAgIG9wZW5Db25uZWN0
aW9uKHBlbmRpbmdPcGVuQ2FsbC0+Y2FsbGJhY2tzKCksIHBlbmRpbmdPcGVuQ2FsbC0+ZGF0YWJh
c2VDYWxsYmFja3MoKSk7CisgICAgICAgIG9wZW5Db25uZWN0aW9uKHBlbmRpbmdPcGVuQ2FsbC0+
Y2FsbGJhY2tzKCksIHBlbmRpbmdPcGVuQ2FsbC0+ZGF0YWJhc2VDYWxsYmFja3MoKSwgcGVuZGlu
Z09wZW5DYWxsLT50cmFuc2FjdGlvbklkKCkpOwogICAgIH0KIH0KIApAQCAtNDQzLDcgKzQ2NSw4
IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6cHJvY2Vzc1BlbmRpbmdDYWxscygpCiBQ
YXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gSURCRGF0YWJhc2VCYWNr
ZW5kSW1wbDo6Y3JlYXRlVHJhbnNhY3Rpb24oaW50NjRfdCB0cmFuc2FjdGlvbklkLCBjb25zdCBW
ZWN0b3I8aW50NjRfdD4mIG9iamVjdFN0b3JlSWRzLCBJREJUcmFuc2FjdGlvbjo6TW9kZSBtb2Rl
KQogewogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiB0cmFuc2FjdGlvbiA9
IElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmNyZWF0ZSh0cmFuc2FjdGlvbklkLCBvYmplY3RT
dG9yZUlkcywgbW9kZSwgdGhpcyk7Ci0gICAgbV90cmFuc2FjdGlvbnMuYWRkKHRyYW5zYWN0aW9u
LmdldCgpKTsKKyAgICBBU1NFUlQoIW1fdHJhbnNhY3Rpb25zLmNvbnRhaW5zKHRyYW5zYWN0aW9u
SWQpKTsKKyAgICBtX3RyYW5zYWN0aW9ucy5hZGQodHJhbnNhY3Rpb25JZCwgdHJhbnNhY3Rpb24u
Z2V0KCkpOwogICAgIHJldHVybiB0cmFuc2FjdGlvbi5yZWxlYXNlKCk7CiB9CiAKQEAgLTQ1Miwx
MSArNDc1LDExIEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Y3JlYXRlVHJhbnNhY3Rp
b24oaW50NjRfdCB0cmFuc2FjdGlvbklkLCBQYXNzUmVmUHRyCiAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiB9CiAKLXZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6b3BlbkNvbm5lY3Rpb24o
UGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxJREJEYXRhYmFz
ZUNhbGxiYWNrcz4gZGF0YWJhc2VDYWxsYmFja3MpCit2b2lkIElEQkRhdGFiYXNlQmFja2VuZElt
cGw6Om9wZW5Db25uZWN0aW9uKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIFBh
c3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IGRhdGFiYXNlQ2FsbGJhY2tzLCBpbnQ2NF90
IHRyYW5zYWN0aW9uSWQpCiB7CiAgICAgQVNTRVJUKG1fYmFja2luZ1N0b3JlLmdldCgpKTsKICAg
ICBpZiAoIW1fcGVuZGluZ0RlbGV0ZUNhbGxzLmlzRW1wdHkoKSB8fCBtX3J1bm5pbmdWZXJzaW9u
Q2hhbmdlVHJhbnNhY3Rpb24pIHsKLSAgICAgICAgbV9wZW5kaW5nT3BlbkNhbGxzLmFwcGVuZChQ
ZW5kaW5nT3BlbkNhbGw6OmNyZWF0ZShjYWxsYmFja3MsIGRhdGFiYXNlQ2FsbGJhY2tzKSk7Cisg
ICAgICAgIG1fcGVuZGluZ09wZW5DYWxscy5hcHBlbmQoUGVuZGluZ09wZW5DYWxsOjpjcmVhdGUo
Y2FsbGJhY2tzLCBkYXRhYmFzZUNhbGxiYWNrcywgdHJhbnNhY3Rpb25JZCkpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogICAgIGlmIChtX21ldGFkYXRhLmlkID09IEludmFsaWRJZCAmJiAhb3Bl
bkludGVybmFsKCkpIHsKQEAgLTQ2NywxNCArNDkwLDE0IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNr
ZW5kSW1wbDo6b3BlbkNvbm5lY3Rpb24oUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNr
cywKICAgICAgICAgLy8gU3BlYyBzYXlzOiBJZiBubyB2ZXJzaW9uIGlzIHNwZWNpZmllZCBhbmQg
bm8gZGF0YWJhc2UgZXhpc3RzLCBzZXQKICAgICAgICAgLy8gZGF0YWJhc2UgdmVyc2lvbiB0byAx
LiBXZSBpbmZlciB0aGF0IHRoZSBkYXRhYmFzZSBkaWRuJ3QgZXhpc3QgZnJvbQogICAgICAgICAv
LyBpdHMgbGFjayBvZiBlaXRoZXIgdHlwZSBvZiB2ZXJzaW9uLgotICAgICAgICBvcGVuQ29ubmVj
dGlvbldpdGhWZXJzaW9uKGNhbGxiYWNrcywgZGF0YWJhc2VDYWxsYmFja3MsIDEpOworICAgICAg
ICBvcGVuQ29ubmVjdGlvbldpdGhWZXJzaW9uKGNhbGxiYWNrcywgZGF0YWJhc2VDYWxsYmFja3Ms
IHRyYW5zYWN0aW9uSWQsIDEpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIG1fZGF0YWJh
c2VDYWxsYmFja3NTZXQuYWRkKFJlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4oZGF0YWJhc2VD
YWxsYmFja3MpKTsKICAgICBjYWxsYmFja3MtPm9uU3VjY2Vzcyh0aGlzKTsKIH0KIAotdm9pZCBJ
REJEYXRhYmFzZUJhY2tlbmRJbXBsOjpydW5JbnRWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24oaW50
NjRfdCByZXF1ZXN0ZWRWZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJh
Y2tzLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBwcnBEYXRhYmFzZUNhbGxiYWNr
cykKK3ZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6cnVuSW50VmVyc2lvbkNoYW5nZVRyYW5z
YWN0aW9uKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIFBhc3NSZWZQdHI8
SURCRGF0YWJhc2VDYWxsYmFja3M+IHBycERhdGFiYXNlQ2FsbGJhY2tzLCBpbnQ2NF90IHRyYW5z
YWN0aW9uSWQsIGludDY0X3QgcmVxdWVzdGVkVmVyc2lvbikKIHsKICAgICBSZWZQdHI8SURCQ2Fs
bGJhY2tzPiBjYWxsYmFja3MgPSBwcnBDYWxsYmFja3M7CiAgICAgUmVmUHRyPElEQkRhdGFiYXNl
Q2FsbGJhY2tzPiBkYXRhYmFzZUNhbGxiYWNrcyA9IHBycERhdGFiYXNlQ2FsbGJhY2tzOwpAQCAt
NDk1LDI4ICs1MTgsMjcgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpydW5JbnRWZXJz
aW9uQ2hhbmdlVHJhbnNhY3Rpb24oaW50NjRfdCByZXF1ZXN0ZWRWZXIKICAgICAgICAgY2FsbGJh
Y2tzLT5vbkJsb2NrZWQobV9tZXRhZGF0YS5pbnRWZXJzaW9uKTsKICAgICAvLyBGSVhNRTogQWRk
IHRlc3QgZm9yIG1fcnVubmluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbi4KICAgICBpZiAobV9y
dW5uaW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uIHx8IGNvbm5lY3Rpb25Db3VudCgpKSB7Ci0g
ICAgICAgIG1fcGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGxzLmFwcGVuZChQZW5kaW5nT3Blbldp
dGhWZXJzaW9uQ2FsbDo6Y3JlYXRlKGNhbGxiYWNrcywgZGF0YWJhc2VDYWxsYmFja3MsIHJlcXVl
c3RlZFZlcnNpb24pKTsKKyAgICAgICAgbV9wZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbHMuYXBw
ZW5kKFBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsOjpjcmVhdGUoY2FsbGJhY2tzLCBkYXRhYmFz
ZUNhbGxiYWNrcywgdHJhbnNhY3Rpb25JZCwgcmVxdWVzdGVkVmVyc2lvbikpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCiAgICAgVmVjdG9yPGludDY0X3Q+IG9iamVjdFN0b3JlSWRzOwotICAg
IC8vIEZJWE1FOiBUaGUgdHJhbnNhY3Rpb25JZCBuZWVkcyB0byBiZSBwaXBlZCBpbiB0aHJvdWdo
IElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6b3BlbigpLgotICAgIFJlZlB0cjxJREJUcmFu
c2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IHRyYW5zYWN0aW9uSW50ZXJmYWNlID0gY3JlYXRlVHJh
bnNhY3Rpb24oMCwgb2JqZWN0U3RvcmVJZHMsIElEQlRyYW5zYWN0aW9uOjpWRVJTSU9OX0NIQU5H
RSk7CisgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gdHJhbnNhY3Rp
b25JbnRlcmZhY2UgPSBjcmVhdGVUcmFuc2FjdGlvbih0cmFuc2FjdGlvbklkLCBvYmplY3RTdG9y
ZUlkcywgSURCVHJhbnNhY3Rpb246OlZFUlNJT05fQ0hBTkdFKTsKICAgICBSZWZQdHI8SURCVHJh
bnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24gPSBJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bXBsOjpmcm9tKHRyYW5zYWN0aW9uSW50ZXJmYWNlLmdldCgpKTsKIAotICAgIGlmICghdHJhbnNh
Y3Rpb24tPnNjaGVkdWxlVGFzayhWZXJzaW9uQ2hhbmdlT3BlcmF0aW9uOjpjcmVhdGUodGhpcywg
cmVxdWVzdGVkVmVyc2lvbiwgY2FsbGJhY2tzLCBkYXRhYmFzZUNhbGxiYWNrcyksIFZlcnNpb25D
aGFuZ2VBYm9ydE9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIG1fbWV0YWRhdGEudmVyc2lvbiwgbV9t
ZXRhZGF0YS5pbnRWZXJzaW9uKSkpIHsKKyAgICBpZiAoIXRyYW5zYWN0aW9uLT5zY2hlZHVsZVRh
c2soVmVyc2lvbkNoYW5nZU9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIHRyYW5zYWN0aW9uSWQsIHJl
cXVlc3RlZFZlcnNpb24sIGNhbGxiYWNrcywgZGF0YWJhc2VDYWxsYmFja3MpLCBWZXJzaW9uQ2hh
bmdlQWJvcnRPcGVyYXRpb246OmNyZWF0ZSh0aGlzLCBtX21ldGFkYXRhLnZlcnNpb24sIG1fbWV0
YWRhdGEuaW50VmVyc2lvbikpKSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
IH0KICAgICBBU1NFUlQoIW1fcGVuZGluZ1NlY29uZEhhbGZPcGVuV2l0aFZlcnNpb24pOwogICAg
IG1fZGF0YWJhc2VDYWxsYmFja3NTZXQuYWRkKGRhdGFiYXNlQ2FsbGJhY2tzKTsKIH0KIAotdm9p
ZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpvcGVuQ29ubmVjdGlvbldpdGhWZXJzaW9uKFBhc3NS
ZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VD
YWxsYmFja3M+IHBycERhdGFiYXNlQ2FsbGJhY2tzLCBpbnQ2NF90IHZlcnNpb24pCit2b2lkIElE
QkRhdGFiYXNlQmFja2VuZEltcGw6Om9wZW5Db25uZWN0aW9uV2l0aFZlcnNpb24oUGFzc1JlZlB0
cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxi
YWNrcz4gcHJwRGF0YWJhc2VDYWxsYmFja3MsIGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRf
dCB2ZXJzaW9uKQogewogICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcyA9IHBycENh
bGxiYWNrczsKICAgICBSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IGRhdGFiYXNlQ2FsbGJh
Y2tzID0gcHJwRGF0YWJhc2VDYWxsYmFja3M7CiAgICAgaWYgKCFtX3BlbmRpbmdEZWxldGVDYWxs
cy5pc0VtcHR5KCkgfHwgbV9ydW5uaW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKSB7Ci0gICAg
ICAgIG1fcGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGxzLmFwcGVuZChQZW5kaW5nT3BlbldpdGhW
ZXJzaW9uQ2FsbDo6Y3JlYXRlKGNhbGxiYWNrcywgZGF0YWJhc2VDYWxsYmFja3MsIHZlcnNpb24p
KTsKKyAgICAgICAgbV9wZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbHMuYXBwZW5kKFBlbmRpbmdP
cGVuV2l0aFZlcnNpb25DYWxsOjpjcmVhdGUoY2FsbGJhY2tzLCBkYXRhYmFzZUNhbGxiYWNrcywg
dHJhbnNhY3Rpb25JZCwgdmVyc2lvbikpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlm
IChtX21ldGFkYXRhLmlkID09IEludmFsaWRJZCkgewpAQCAtNTI4LDcgKzU1MCw3IEBAIHZvaWQg
SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6b3BlbkNvbm5lY3Rpb25XaXRoVmVyc2lvbihQYXNzUmVm
UHRyPElEQkNhbGxiYWNrcz4KICAgICAgICAgfQogICAgIH0KICAgICBpZiAodmVyc2lvbiA+IG1f
bWV0YWRhdGEuaW50VmVyc2lvbikgewotICAgICAgICBydW5JbnRWZXJzaW9uQ2hhbmdlVHJhbnNh
Y3Rpb24odmVyc2lvbiwgY2FsbGJhY2tzLCBkYXRhYmFzZUNhbGxiYWNrcyk7CisgICAgICAgIHJ1
bkludFZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbihjYWxsYmFja3MsIGRhdGFiYXNlQ2FsbGJhY2tz
LCB0cmFuc2FjdGlvbklkLCB2ZXJzaW9uKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBp
ZiAodmVyc2lvbiA8IG1fbWV0YWRhdGEuaW50VmVyc2lvbikgewpAQCAtNTk3LDggKzYxOSw4IEBA
IHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Y2xvc2UoUGFzc1JlZlB0cjxJREJEYXRhYmFz
ZUNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzCiAKICAgICAvLyBGSVhNRTogQWRkIGEgdGVzdCBmb3Ig
dGhlIG1fcGVuZGluZ09wZW5DYWxscyBhbmQgbV9wZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbHMg
Y2FzZXMgYmVsb3cuCiAgICAgaWYgKCFjb25uZWN0aW9uQ291bnQoKSAmJiAhbV9wZW5kaW5nT3Bl
bkNhbGxzLnNpemUoKSAmJiAhbV9wZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbHMuc2l6ZSgpICYm
ICFtX3BlbmRpbmdEZWxldGVDYWxscy5zaXplKCkpIHsKLSAgICAgICAgVHJhbnNhY3Rpb25TZXQg
dHJhbnNhY3Rpb25zKG1fdHJhbnNhY3Rpb25zKTsKLSAgICAgICAgZm9yIChUcmFuc2FjdGlvblNl
dDo6Y29uc3RfaXRlcmF0b3IgaXQgPSB0cmFuc2FjdGlvbnMuYmVnaW4oKTsgaXQgIT0gdHJhbnNh
Y3Rpb25zLmVuZCgpOyArK2l0KQorICAgICAgICBUcmFuc2FjdGlvbk1hcCB0cmFuc2FjdGlvbnMo
bV90cmFuc2FjdGlvbnMpOworICAgICAgICBmb3IgKFRyYW5zYWN0aW9uTWFwOjpjb25zdF9pdGVy
YXRvcjo6VmFsdWVzIGl0ID0gdHJhbnNhY3Rpb25zLnZhbHVlcygpLmJlZ2luKCksIGVuZCA9IHRy
YW5zYWN0aW9ucy52YWx1ZXMoKS5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KQogICAgICAgICAgICAg
KCppdCktPmFib3J0KCk7CiAKICAgICAgICAgQVNTRVJUKG1fdHJhbnNhY3Rpb25zLmlzRW1wdHko
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRh
YmFzZUJhY2tlbmRJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJE
YXRhYmFzZUJhY2tlbmRJbXBsLmgKaW5kZXggNjMyYWE2YTRmMTQ2OTI4YmY5ZTgwNmIwNWJlN2Uw
YTk0MDRlM2ZlMS4uMDE0ZWJmMjk5NzY0MmJjNGIzMjk0MmE0NjE3YTNmZDQ1YWFlNTRlZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNr
ZW5kSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFi
YXNlQmFja2VuZEltcGwuaApAQCAtNTUsOCArNTUsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNv
bnN0IGludDY0X3QgSW52YWxpZElkID0gMDsKICAgICBpbnQ2NF90IGlkKCkgY29uc3QgeyByZXR1
cm4gbV9tZXRhZGF0YS5pZDsgfQogCi0gICAgdm9pZCBvcGVuQ29ubmVjdGlvbihQYXNzUmVmUHRy
PElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+KTsKLSAgICB2
b2lkIG9wZW5Db25uZWN0aW9uV2l0aFZlcnNpb24oUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQ
YXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiwgaW50NjRfdCB2ZXJzaW9uKTsKKyAgICB2
b2lkIG9wZW5Db25uZWN0aW9uKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxJ
REJEYXRhYmFzZUNhbGxiYWNrcz4sIGludDY0X3QgdHJhbnNhY3Rpb25JZCk7CisgICAgdm9pZCBv
cGVuQ29ubmVjdGlvbldpdGhWZXJzaW9uKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgUGFzc1Jl
ZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4sIGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRf
dCB2ZXJzaW9uKTsKICAgICB2b2lkIGRlbGV0ZURhdGFiYXNlKFBhc3NSZWZQdHI8SURCQ2FsbGJh
Y2tzPik7CiAKICAgICAvLyBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UKQEAgLTY4LDggKzY4
LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVUcmFuc2FjdGlvbihpbnQ2NF90
IHRyYW5zYWN0aW9uSWQsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+LCBjb25zdCBW
ZWN0b3I8aW50NjRfdD4mIG9iamVjdFN0b3JlSWRzLCB1bnNpZ25lZCBzaG9ydCBtb2RlKTsKICAg
ICB2aXJ0dWFsIHZvaWQgY2xvc2UoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4pOwog
Ci0gICAgdmlydHVhbCB2b2lkIGNvbW1pdChpbnQ2NF90IHRyYW5zYWN0aW9uSWQpIHsgQVNTRVJU
X05PVF9SRUFDSEVEKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgYWJvcnQoaW50NjRfdCB0cmFuc2Fj
dGlvbklkKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgdmlydHVhbCB2b2lkIGNvbW1p
dChpbnQ2NF90IHRyYW5zYWN0aW9uSWQpOworICAgIHZpcnR1YWwgdm9pZCBhYm9ydChpbnQ2NF90
IHRyYW5zYWN0aW9uSWQpOwogCiAgICAgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJ
bXBsPiBvYmplY3RTdG9yZShpbnQ2NF90IGlkKTsKICAgICBJREJUcmFuc2FjdGlvbkNvb3JkaW5h
dG9yKiB0cmFuc2FjdGlvbkNvb3JkaW5hdG9yKCkgY29uc3QgeyByZXR1cm4gbV90cmFuc2FjdGlv
bkNvb3JkaW5hdG9yLmdldCgpOyB9CkBAIC04Miw3ICs4Miw3IEBAIHByaXZhdGU6CiAgICAgSURC
RGF0YWJhc2VCYWNrZW5kSW1wbChjb25zdCBTdHJpbmcmIG5hbWUsIElEQkJhY2tpbmdTdG9yZSog
ZGF0YWJhc2UsIElEQkZhY3RvcnlCYWNrZW5kSW1wbCosIGNvbnN0IFN0cmluZyYgdW5pcXVlSWRl
bnRpZmllcik7CiAKICAgICBib29sIG9wZW5JbnRlcm5hbCgpOwotICAgIHZvaWQgcnVuSW50VmVy
c2lvbkNoYW5nZVRyYW5zYWN0aW9uKGludDY0X3QgcmVxdWVzdGVkVmVyc2lvbiwgUGFzc1JlZlB0
cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPik7CisgICAg
dm9pZCBydW5JbnRWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24oUGFzc1JlZlB0cjxJREJDYWxsYmFj
a3M+LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiwgaW50NjRfdCB0cmFuc2FjdGlv
bklkLCBpbnQ2NF90IHJlcXVlc3RlZFZlcnNpb24pOwogICAgIHZvaWQgbG9hZE9iamVjdFN0b3Jl
cygpOwogICAgIHNpemVfdCBjb25uZWN0aW9uQ291bnQoKTsKICAgICB2b2lkIHByb2Nlc3NQZW5k
aW5nQ2FsbHMoKTsKQEAgLTEwOSw4ICsxMDksOCBAQCBwcml2YXRlOgogICAgIE93blB0cjxJREJU
cmFuc2FjdGlvbkNvb3JkaW5hdG9yPiBtX3RyYW5zYWN0aW9uQ29vcmRpbmF0b3I7CiAgICAgUmVm
UHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+IG1fcnVubmluZ1ZlcnNpb25DaGFuZ2VUcmFu
c2FjdGlvbjsKIAotICAgIHR5cGVkZWYgSGFzaFNldDxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBs
Kj4gVHJhbnNhY3Rpb25TZXQ7Ci0gICAgVHJhbnNhY3Rpb25TZXQgbV90cmFuc2FjdGlvbnM7Cisg
ICAgdHlwZWRlZiBIYXNoTWFwPGludDY0X3QsIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqPiBU
cmFuc2FjdGlvbk1hcDsKKyAgICBUcmFuc2FjdGlvbk1hcCBtX3RyYW5zYWN0aW9uczsKIAogICAg
IGNsYXNzIFBlbmRpbmdPcGVuQ2FsbDsKICAgICBEZXF1ZTxPd25QdHI8UGVuZGluZ09wZW5DYWxs
PiA+IG1fcGVuZGluZ09wZW5DYWxsczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCRmFjdG9yeS5jcHAKaW5kZXggM2JjYmM0NDAxMjY2YzNkYTcyNDJkMDRhNWY5NzRj
ZjY3MGY3ZjhjZC4uODQwY2E5OGVkYTMyMzkyODg0YWU1MzAzOWExYzhiMTU0NDIzNDk4ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5jcHAKQEAg
LTEyOSw4ICsxMjksNyBAQCBQYXNzUmVmUHRyPElEQk9wZW5EQlJlcXVlc3Q+IElEQkZhY3Rvcnk6
Om9wZW5JbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjbwogICAgIFJlZlB0cjxJREJE
YXRhYmFzZUNhbGxiYWNrc0ltcGw+IGRhdGFiYXNlQ2FsbGJhY2tzID0gSURCRGF0YWJhc2VDYWxs
YmFja3NJbXBsOjpjcmVhdGUoKTsKICAgICBpbnQ2NF90IHRyYW5zYWN0aW9uSWQgPSBJREJEYXRh
YmFzZTo6bmV4dFRyYW5zYWN0aW9uSWQoKTsKICAgICBSZWZQdHI8SURCT3BlbkRCUmVxdWVzdD4g
cmVxdWVzdCA9IElEQk9wZW5EQlJlcXVlc3Q6OmNyZWF0ZShjb250ZXh0LCBJREJBbnk6OmNyZWF0
ZU51bGwoKSwgZGF0YWJhc2VDYWxsYmFja3MsIHRyYW5zYWN0aW9uSWQsIHZlcnNpb24pOwotICAg
IC8vIEZJWE1FOiBwYXNzIHRoZSB0cmFuc2FjdGlvbklkIGluIGhlcmUgaW4gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzkyMgotICAgIG1fYmFja2VuZC0+b3Blbihu
YW1lLCB2ZXJzaW9uLCByZXF1ZXN0LCBkYXRhYmFzZUNhbGxiYWNrcywgY29udGV4dC0+c2VjdXJp
dHlPcmlnaW4oKSwgY29udGV4dCwgZ2V0SW5kZXhlZERCRGF0YWJhc2VQYXRoKGNvbnRleHQpKTsK
KyAgICBtX2JhY2tlbmQtPm9wZW4obmFtZSwgdmVyc2lvbiwgdHJhbnNhY3Rpb25JZCwgcmVxdWVz
dCwgZGF0YWJhc2VDYWxsYmFja3MsIGNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCksIGNvbnRleHQs
IGdldEluZGV4ZWREQkRhdGFiYXNlUGF0aChjb250ZXh0KSk7CiAgICAgcmV0dXJuIHJlcXVlc3Q7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZh
Y3RvcnlCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJGYWN0b3J5QmFja2VuZEltcGwuY3BwCmluZGV4IGJlMDQ3Mzk4ZDg1ZTk0MWU5NTljMWY1MTc5
ZTZiNDViNDYxNTAwZmIuLjUxYWU4Y2VkMTliODg2M2VjZDFhYzllZDc4OTk5YzEyNDQ1ZTBlNDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlC
YWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
RmFjdG9yeUJhY2tlbmRJbXBsLmNwcApAQCAtMTY2LDkgKzE2Niw5IEBAIHZvaWQgSURCRmFjdG9y
eUJhY2tlbmRJbXBsOjpvcGVuKGNvbnN0IFN0cmluZyYgbmFtZSwgaW50NjRfdCB2ZXJzaW9uLCBp
bnQ2NF90IHRyCiAgICAgICAgIGRhdGFiYXNlQmFja2VuZCA9IGl0LT52YWx1ZTsKIAogICAgIGlm
ICh2ZXJzaW9uID09IElEQkRhdGFiYXNlTWV0YWRhdGE6Ok5vSW50VmVyc2lvbikKLSAgICAgICAg
ZGF0YWJhc2VCYWNrZW5kLT5vcGVuQ29ubmVjdGlvbihjYWxsYmFja3MsIGRhdGFiYXNlQ2FsbGJh
Y2tzKTsKKyAgICAgICAgZGF0YWJhc2VCYWNrZW5kLT5vcGVuQ29ubmVjdGlvbihjYWxsYmFja3Ms
IGRhdGFiYXNlQ2FsbGJhY2tzLCB0cmFuc2FjdGlvbklkKTsKICAgICBlbHNlCi0gICAgICAgIGRh
dGFiYXNlQmFja2VuZC0+b3BlbkNvbm5lY3Rpb25XaXRoVmVyc2lvbihjYWxsYmFja3MsIGRhdGFi
YXNlQ2FsbGJhY2tzLCB2ZXJzaW9uKTsKKyAgICAgICAgZGF0YWJhc2VCYWNrZW5kLT5vcGVuQ29u
bmVjdGlvbldpdGhWZXJzaW9uKGNhbGxiYWNrcywgZGF0YWJhc2VDYWxsYmFja3MsIHRyYW5zYWN0
aW9uSWQsIHZlcnNpb24pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbXBsLmgKaW5kZXggNDM5Yzc1YmVjNjA3NWNjYmZjNmE3OWIxM2Y0YzE1MGZhODkyNDdk
My4uMWUyMmI3MTcwZjI1NTU5NjhjMzc4OTFlYmNkZWVhOWExZWM2YzExMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1w
bC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9u
QmFja2VuZEltcGwuaApAQCAtNTQsNiArNTQsNyBAQCBwdWJsaWM6CiAgICAgLy8gSURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW50ZXJmYWNlCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQk9iamVjdFN0
b3JlQmFja2VuZEludGVyZmFjZT4gb2JqZWN0U3RvcmUoaW50NjRfdCwgRXhjZXB0aW9uQ29kZSYp
OwogICAgIHZpcnR1YWwgdm9pZCBhYm9ydCgpOworICAgIHZvaWQgY29tbWl0KCk7CiAgICAgdmly
dHVhbCB2b2lkIHNldENhbGxiYWNrcyhJREJUcmFuc2FjdGlvbkNhbGxiYWNrcyogY2FsbGJhY2tz
KSB7IG1fY2FsbGJhY2tzID0gY2FsbGJhY2tzOyB9CiAKICAgICBjbGFzcyBPcGVyYXRpb24gewpA
QCAtODcsNyArODgsNiBAQCBwcml2YXRlOgogICAgIH07CiAKICAgICB2b2lkIHN0YXJ0KCk7Ci0g
ICAgdm9pZCBjb21taXQoKTsKIAogICAgIGJvb2wgaXNUYXNrUXVldWVFbXB0eSgpIGNvbnN0Owog
ICAgIGJvb2wgaGFzUGVuZGluZ1Rhc2tzKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0lEQkRhdGFiYXNlQmFja2VuZFRlc3QuY3BwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9JREJEYXRhYmFzZUJhY2tlbmRUZXN0LmNwcAppbmRleCBjMmVm
YzE5ODE5NDNmN2NiMjExYjVhNmVlMGU2NDU5YjA3MWJmNWM4Li4wODQ5MDM0NjU1OGQ2MDk0N2E4
NDgwNzM0NmNiMjU4MWUyNmViMTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0lEQkRhdGFiYXNlQmFja2VuZFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvSURCRGF0YWJhc2VCYWNrZW5kVGVzdC5jcHAKQEAgLTEyNSwxMSArMTI1LDEx
IEBAIFRFU1QoSURCRGF0YWJhc2VCYWNrZW5kVGVzdCwgQ29ubmVjdGlvbkxpZmVjeWNsZSkKIAog
ICAgIFJlZlB0cjxNb2NrSURCQ2FsbGJhY2tzPiByZXF1ZXN0MSA9IE1vY2tJREJDYWxsYmFja3M6
OmNyZWF0ZSgpOwogICAgIFJlZlB0cjxGYWtlSURCRGF0YWJhc2VDYWxsYmFja3M+IGNvbm5lY3Rp
b24xID0gRmFrZUlEQkRhdGFiYXNlQ2FsbGJhY2tzOjpjcmVhdGUoKTsKLSAgICBkYi0+b3BlbkNv
bm5lY3Rpb25XaXRoVmVyc2lvbihyZXF1ZXN0MSwgY29ubmVjdGlvbjEsIElEQkRhdGFiYXNlTWV0
YWRhdGE6Ok5vSW50VmVyc2lvbik7CisgICAgZGItPm9wZW5Db25uZWN0aW9uV2l0aFZlcnNpb24o
cmVxdWVzdDEsIGNvbm5lY3Rpb24xLCAxLCBJREJEYXRhYmFzZU1ldGFkYXRhOjpOb0ludFZlcnNp
b24pOwogCiAgICAgUmVmUHRyPE1vY2tJREJDYWxsYmFja3M+IHJlcXVlc3QyID0gTW9ja0lEQkNh
bGxiYWNrczo6Y3JlYXRlKCk7CiAgICAgUmVmUHRyPEZha2VJREJEYXRhYmFzZUNhbGxiYWNrcz4g
Y29ubmVjdGlvbjIgPSBGYWtlSURCRGF0YWJhc2VDYWxsYmFja3M6OmNyZWF0ZSgpOwotICAgIGRi
LT5vcGVuQ29ubmVjdGlvbldpdGhWZXJzaW9uKHJlcXVlc3QyLCBjb25uZWN0aW9uMiwgSURCRGF0
YWJhc2VNZXRhZGF0YTo6Tm9JbnRWZXJzaW9uKTsKKyAgICBkYi0+b3BlbkNvbm5lY3Rpb25XaXRo
VmVyc2lvbihyZXF1ZXN0MiwgY29ubmVjdGlvbjIsIDIsIElEQkRhdGFiYXNlTWV0YWRhdGE6Ok5v
SW50VmVyc2lvbik7CiAKICAgICBkYi0+Y2xvc2UoY29ubmVjdGlvbjEpOwogICAgIEVYUEVDVF9H
VChiYWNraW5nU3RvcmUtPnJlZkNvdW50KCksIDEpOwpAQCAtMTkyLDcgKzE5Miw3IEBAIFRFU1Qo
SURCRGF0YWJhc2VCYWNrZW5kVGVzdCwgRm9yY2VkQ2xvc2UpCiAKICAgICBSZWZQdHI8TW9ja0lE
QkRhdGFiYXNlQmFja2VuZFByb3h5PiBwcm94eSA9IE1vY2tJREJEYXRhYmFzZUJhY2tlbmRQcm94
eTo6Y3JlYXRlKHdlYkRhdGFiYXNlKTsKICAgICBSZWZQdHI8TW9ja0lEQkNhbGxiYWNrcz4gcmVx
dWVzdCA9IE1vY2tJREJDYWxsYmFja3M6OmNyZWF0ZSgpOwotICAgIGJhY2tlbmQtPm9wZW5Db25u
ZWN0aW9uV2l0aFZlcnNpb24ocmVxdWVzdCwgY29ubmVjdGlvblByb3h5LCBJREJEYXRhYmFzZU1l
dGFkYXRhOjpOb0ludFZlcnNpb24pOworICAgIGJhY2tlbmQtPm9wZW5Db25uZWN0aW9uV2l0aFZl
cnNpb24ocmVxdWVzdCwgY29ubmVjdGlvblByb3h5LCAzLCBJREJEYXRhYmFzZU1ldGFkYXRhOjpO
b0ludFZlcnNpb24pOwogCiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCA9IDA7
CiAgICAgUmVmUHRyPElEQkRhdGFiYXNlPiBpZGJEYXRhYmFzZSA9IElEQkRhdGFiYXNlOjpjcmVh
dGUoY29udGV4dCwgcHJveHksIGNvbm5lY3Rpb24pOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>