<?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>160747</bug_id>
          
          <creation_ts>2016-08-10 14:02:54 -0700</creation_ts>
          <short_desc>Begin moving member functions from SQLTransactionBackend to SQLTransaction</short_desc>
          <delta_ts>2016-08-10 14:32:44 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Anders Carlsson">andersca</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1219118</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2016-08-10 14:02:54 -0700</bug_when>
    <thetext>Begin moving member functions from SQLTransactionBackend to SQLTransaction</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1219119</commentid>
    <comment_count>1</comment_count>
      <attachid>285757</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2016-08-10 14:03:35 -0700</bug_when>
    <thetext>Created attachment 285757
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1219139</commentid>
    <comment_count>2</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2016-08-10 14:32:44 -0700</bug_when>
    <thetext>Committed r204356: &lt;http://trac.webkit.org/changeset/204356&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>285757</attachid>
            <date>2016-08-10 14:03:35 -0700</date>
            <delta_ts>2016-08-10 14:29:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-160747-20160810140159.patch</filename>
            <type>text/plain</type>
            <size>29926</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0MzQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDc2MDI5ZDgxYmNjNzk3
ZjkyMWUzOWE0ZWJiZGNhODY2ZjRjYjY3My4uNzlmZmI1NTBkYWY5NTcxM2ExZmY3OTU0MzEzZDE0
ZjI3YzVkOThiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDU0IEBACiAyMDE2LTA4LTEwICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKKyAgICAgICAgQmVnaW4gbW92aW5n
IG1lbWJlciBmdW5jdGlvbnMgZnJvbSBTUUxUcmFuc2FjdGlvbkJhY2tlbmQgdG8gU1FMVHJhbnNh
Y3Rpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
MDc0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRh
YmFzZTo6cGVyZm9ybUNsb3NlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFi
YXNlVGFzay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYW5zYWN0aW9uVGFzazo6
fkRhdGFiYXNlVHJhbnNhY3Rpb25UYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJh
bnNhY3Rpb25UYXNrOjpkb1BlcmZvcm1UYXNrKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFi
YXNlL1NRTFRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9u
OjpleGVjdXRlU1FMKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpsb2NrQWNx
dWlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb246OnBlcmZvcm1OZXh0U3Rl
cCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFuc2FjdGlvbjo6cGVyZm9ybVBlbmRpbmdDYWxs
YmFjayk6CisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFuc2FjdGlvbjo6bm90aWZ5RGF0YWJhc2VU
aHJlYWRJc1NodXR0aW5nRG93bik6CisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFuc2FjdGlvbjo6
ZW5xdWV1ZVN0YXRlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFuc2FjdGlvbjo6Z2V0
TmV4dFN0YXRlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFuc2FjdGlvbjo6cnVuQ3Vy
cmVudFN0YXRlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFuc2FjdGlvbjo6aGFuZGxl
Q3VycmVudFN0YXRlbWVudEVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9u
OjpoYW5kbGVUcmFuc2FjdGlvbkVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0
aW9uOjpwb3N0ZmxpZ2h0QW5kQ29tbWl0KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0
aW9uOjphY3F1aXJlT3JpZ2luTG9jayk6CisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFuc2FjdGlv
bjo6cmVsZWFzZU9yaWdpbkxvY2tJZk5lZWRlZCk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRh
YmFzZS9TUUxUcmFuc2FjdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb246
OmJhY2tlbmQpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJh
bnNhY3Rpb25CYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uQmFj
a2VuZDo6ZG9DbGVhbnVwKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uQmFja2Vu
ZDo6b3BlblRyYW5zYWN0aW9uQW5kUHJlZmxpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRy
YW5zYWN0aW9uQmFja2VuZDo6cnVuU3RhdGVtZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpTUUxU
cmFuc2FjdGlvbkJhY2tlbmQ6OmNsZWFudXBBZnRlclRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjayk6
CisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFuc2FjdGlvbkJhY2tlbmQ6OmVucXVldWVTdGF0ZW1l
bnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb25CYWNrZW5kOjpw
ZXJmb3JtTmV4dFN0ZXApOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rp
b25CYWNrZW5kOjpleGVjdXRlU1FMKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNRTFRy
YW5zYWN0aW9uQmFja2VuZDo6bG9ja0FjcXVpcmVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlNRTFRyYW5zYWN0aW9uQmFja2VuZDo6Z2V0TmV4dFN0YXRlbWVudCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpTUUxUcmFuc2FjdGlvbkJhY2tlbmQ6OnJ1bkN1cnJlbnRTdGF0ZW1l
bnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb25CYWNrZW5kOjpo
YW5kbGVDdXJyZW50U3RhdGVtZW50RXJyb3IpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
U1FMVHJhbnNhY3Rpb25CYWNrZW5kOjpoYW5kbGVUcmFuc2FjdGlvbkVycm9yKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uQmFja2VuZDo6cG9zdGZsaWdodEFuZENv
bW1pdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFuc2FjdGlvbkJhY2tlbmQ6
OmFjcXVpcmVPcmlnaW5Mb2NrKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5z
YWN0aW9uQmFja2VuZDo6cmVsZWFzZU9yaWdpbkxvY2tJZk5lZWRlZCk6IERlbGV0ZWQuCisgICAg
ICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkJhY2tlbmQuaDoKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb25Db29yZGluYXRvcjo6cHJvY2Vzc1BlbmRp
bmdUcmFuc2FjdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb25Db29yZGlu
YXRvcjo6c2h1dGRvd24pOgorCisyMDE2LTA4LTEwICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNj
YUBhcHBsZS5jb20+CisKICAgICAgICAgTW92ZSBhbGwgU1FMVHJhbnNhY3Rpb25CYWNrZW5kIG1l
bWJlciB2YXJpYWJsZXMgdG8gU1FMVHJhbnNhY3Rpb24KICAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDc0NQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwCmluZGV4IGI3N2M5YmEwMjQ1MTYzNmJlZjBl
ZjhmMTc4OWYxZDFlZDYwOWQ1OGQuLjNhMTAwZjEzMDBkYmNjMDllNTg4OGQ0MzE2YmZhZjQ5MDUz
ZTQ1MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0
YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJh
c2UuY3BwCkBAIC0zMTQsNyArMzE0LDcgQEAgdm9pZCBEYXRhYmFzZTo6cGVyZm9ybUNsb3NlKCkK
ICAgICAgICAgLy8gdHJhbnNhY3Rpb24gaXMgaW50ZXJydXB0ZWQ/IiBhdCB0aGUgdG9wIG9mIFNR
TFRyYW5zYWN0aW9uQmFja2VuZC5jcHAuCiAgICAgICAgIHdoaWxlICghbV90cmFuc2FjdGlvblF1
ZXVlLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgYXV0byB0cmFuc2FjdGlvbiA9IG1fdHJhbnNh
Y3Rpb25RdWV1ZS50YWtlRmlyc3QoKTsKLSAgICAgICAgICAgIHRyYW5zYWN0aW9uLT5iYWNrZW5k
KCkubm90aWZ5RGF0YWJhc2VUaHJlYWRJc1NodXR0aW5nRG93bigpOworICAgICAgICAgICAgdHJh
bnNhY3Rpb24tPm5vdGlmeURhdGFiYXNlVGhyZWFkSXNTaHV0dGluZ0Rvd24oKTsKICAgICAgICAg
fQogCiAgICAgICAgIG1faXNUcmFuc2FjdGlvblF1ZXVlRW5hYmxlZCA9IGZhbHNlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRhc2suY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRhc2suY3BwCmlu
ZGV4IDc0MTQ3NGQ3OTE2N2VjZTQ3YjVlMDk3N2Q0OGU0NzI0OTBmN2MzOWQuLjAxM2QwZjRhNmUw
YmM2OTViN2ZmMmRlOTFhMTkyZmRhYTZmM2U3MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGFzay5jcHAKQEAgLTE2MywxMiArMTYzLDEy
IEBAIERhdGFiYXNlVHJhbnNhY3Rpb25UYXNrOjp+RGF0YWJhc2VUcmFuc2FjdGlvblRhc2soKQog
ICAgIC8vIHRyYW5zYWN0aW9uIGlzIGludGVycnVwdGVkPyIgYXQgdGhlIHRvcCBvZiBTUUxUcmFu
c2FjdGlvbkJhY2tlbmQuY3BwLgogCiAgICAgaWYgKCFtX2RpZFBlcmZvcm1UYXNrKQotICAgICAg
ICBtX3RyYW5zYWN0aW9uLT5iYWNrZW5kKCkubm90aWZ5RGF0YWJhc2VUaHJlYWRJc1NodXR0aW5n
RG93bigpOworICAgICAgICBtX3RyYW5zYWN0aW9uLT5ub3RpZnlEYXRhYmFzZVRocmVhZElzU2h1
dHRpbmdEb3duKCk7CiB9CiAKIHZvaWQgRGF0YWJhc2VUcmFuc2FjdGlvblRhc2s6OmRvUGVyZm9y
bVRhc2soKQogewotICAgIG1fdHJhbnNhY3Rpb24tPmJhY2tlbmQoKS5wZXJmb3JtTmV4dFN0ZXAo
KTsKKyAgICBtX3RyYW5zYWN0aW9uLT5wZXJmb3JtTmV4dFN0ZXAoKTsKICAgICBtX2RpZFBlcmZv
cm1UYXNrID0gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmNwcAppbmRleCBmNDEwODI0MGU2ZjM0ZGJiNDE5ZjVm
NDcxODE2Y2MzMWJlNjNjOGJjLi5hYjNlMDA0ZTJhYjYxOWNhNmIwMmQ2OTk2YzIxZTQ1Njk4Nzll
MTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRy
YW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NR
TFRyYW5zYWN0aW9uLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkRhdGFiYXNlLmgi
CiAjaW5jbHVkZSAiRGF0YWJhc2VBdXRob3JpemVyLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VDb250
ZXh0LmgiCisjaW5jbHVkZSAiRGF0YWJhc2VUcmFja2VyLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9u
Q29kZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJPcmlnaW5Mb2NrLmgiCkBA
IC03NSw2ICs3Niw1OCBAQCBTUUxUcmFuc2FjdGlvbjo6flNRTFRyYW5zYWN0aW9uKCkKIHsKIH0K
IAordm9pZCBTUUxUcmFuc2FjdGlvbjo6ZXhlY3V0ZVNRTChjb25zdCBTdHJpbmcmIHNxbFN0YXRl
bWVudCwgY29uc3QgVmVjdG9yPFNRTFZhbHVlPiYgYXJndW1lbnRzLCBSZWZQdHI8U1FMU3RhdGVt
ZW50Q2FsbGJhY2s+JiYgY2FsbGJhY2ssIFJlZlB0cjxTUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNr
PiYmIGNhbGxiYWNrRXJyb3IsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmICghbV9leGVj
dXRlU3FsQWxsb3dlZCB8fCAhbV9kYXRhYmFzZS0+b3BlbmVkKCkpIHsKKyAgICAgICAgZWMgPSBJ
TlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGludCBwZXJt
aXNzaW9ucyA9IERhdGFiYXNlQXV0aG9yaXplcjo6UmVhZFdyaXRlTWFzazsKKyAgICBpZiAoIW1f
ZGF0YWJhc2UtPmRhdGFiYXNlQ29udGV4dCgpLT5hbGxvd0RhdGFiYXNlQWNjZXNzKCkpCisgICAg
ICAgIHBlcm1pc3Npb25zIHw9IERhdGFiYXNlQXV0aG9yaXplcjo6Tm9BY2Nlc3NNYXNrOworICAg
IGVsc2UgaWYgKG1fcmVhZE9ubHkpCisgICAgICAgIHBlcm1pc3Npb25zIHw9IERhdGFiYXNlQXV0
aG9yaXplcjo6UmVhZE9ubHlNYXNrOworCisgICAgYXV0byBzdGF0ZW1lbnQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFNRTFN0YXRlbWVudD4obV9kYXRhYmFzZSwgc3FsU3RhdGVtZW50LCBhcmd1bWVudHMs
IFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3ZlKGNhbGxiYWNrRXJyb3IpLCBwZXJtaXNzaW9ucyk7
CisKKyAgICBpZiAobV9kYXRhYmFzZS0+ZGVsZXRlZCgpKQorICAgICAgICBzdGF0ZW1lbnQtPnNl
dERhdGFiYXNlRGVsZXRlZEVycm9yKCk7CisKKyAgICBlbnF1ZXVlU3RhdGVtZW50KFdURk1vdmUo
c3RhdGVtZW50KSk7Cit9CisKK3ZvaWQgU1FMVHJhbnNhY3Rpb246OmxvY2tBY3F1aXJlZCgpCit7
CisgICAgbV9sb2NrQWNxdWlyZWQgPSB0cnVlOworCisgICAgbV9iYWNrZW5kLm1fcmVxdWVzdGVk
U3RhdGUgPSBTUUxUcmFuc2FjdGlvblN0YXRlOjpPcGVuVHJhbnNhY3Rpb25BbmRQcmVmbGlnaHQ7
CisgICAgbV9kYXRhYmFzZS0+c2NoZWR1bGVUcmFuc2FjdGlvblN0ZXAoKnRoaXMpOworfQorCit2
b2lkIFNRTFRyYW5zYWN0aW9uOjpwZXJmb3JtTmV4dFN0ZXAoKQoreworICAgIG1fYmFja2VuZC5j
b21wdXRlTmV4dFN0YXRlQW5kQ2xlYW51cElmTmVlZGVkKCk7CisgICAgbV9iYWNrZW5kLnJ1blN0
YXRlTWFjaGluZSgpOworfQorCit2b2lkIFNRTFRyYW5zYWN0aW9uOjpwZXJmb3JtUGVuZGluZ0Nh
bGxiYWNrKCkKK3sKKyAgICBjb21wdXRlTmV4dFN0YXRlQW5kQ2xlYW51cElmTmVlZGVkKCk7Cisg
ICAgcnVuU3RhdGVNYWNoaW5lKCk7Cit9CisKK3ZvaWQgU1FMVHJhbnNhY3Rpb246Om5vdGlmeURh
dGFiYXNlVGhyZWFkSXNTaHV0dGluZ0Rvd24oKQoreworICAgIG1fYmFja2VuZC5ub3RpZnlEYXRh
YmFzZVRocmVhZElzU2h1dHRpbmdEb3duKCk7Cit9CisKK3ZvaWQgU1FMVHJhbnNhY3Rpb246OmVu
cXVldWVTdGF0ZW1lbnQoc3RkOjp1bmlxdWVfcHRyPFNRTFN0YXRlbWVudD4gc3RhdGVtZW50KQor
eworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc3RhdGVtZW50TXV0ZXgpOworICAgIG1fc3RhdGVt
ZW50UXVldWUuYXBwZW5kKFdURk1vdmUoc3RhdGVtZW50KSk7Cit9CisKIFNRTFRyYW5zYWN0aW9u
OjpTdGF0ZUZ1bmN0aW9uIFNRTFRyYW5zYWN0aW9uOjpzdGF0ZUZ1bmN0aW9uRm9yKFNRTFRyYW5z
YWN0aW9uU3RhdGUgc3RhdGUpCiB7CiAgICAgc3RhdGljIGNvbnN0IFN0YXRlRnVuY3Rpb24gc3Rh
dGVGdW5jdGlvbnNbXSA9IHsKQEAgLTIwMywyOSArMjU2LDYgQEAgdm9pZCBTUUxUcmFuc2FjdGlv
bjo6dW5yZWFjaGFibGVTdGF0ZSgpCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZv
aWQgU1FMVHJhbnNhY3Rpb246OnBlcmZvcm1QZW5kaW5nQ2FsbGJhY2soKQotewotICAgIGNvbXB1
dGVOZXh0U3RhdGVBbmRDbGVhbnVwSWZOZWVkZWQoKTsKLSAgICBydW5TdGF0ZU1hY2hpbmUoKTsK
LX0KLQotdm9pZCBTUUxUcmFuc2FjdGlvbjo6ZXhlY3V0ZVNRTChjb25zdCBTdHJpbmcmIHNxbFN0
YXRlbWVudCwgY29uc3QgVmVjdG9yPFNRTFZhbHVlPiYgYXJndW1lbnRzLCBSZWZQdHI8U1FMU3Rh
dGVtZW50Q2FsbGJhY2s+JiYgY2FsbGJhY2ssIFJlZlB0cjxTUUxTdGF0ZW1lbnRFcnJvckNhbGxi
YWNrPiYmIGNhbGxiYWNrRXJyb3IsIEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIGlmICghbV9l
eGVjdXRlU3FsQWxsb3dlZCB8fCAhbV9kYXRhYmFzZS0+b3BlbmVkKCkpIHsKLSAgICAgICAgZWMg
PSBJTlZBTElEX1NUQVRFX0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGludCBw
ZXJtaXNzaW9ucyA9IERhdGFiYXNlQXV0aG9yaXplcjo6UmVhZFdyaXRlTWFzazsKLSAgICBpZiAo
IW1fZGF0YWJhc2UtPmRhdGFiYXNlQ29udGV4dCgpLT5hbGxvd0RhdGFiYXNlQWNjZXNzKCkpCi0g
ICAgICAgIHBlcm1pc3Npb25zIHw9IERhdGFiYXNlQXV0aG9yaXplcjo6Tm9BY2Nlc3NNYXNrOwot
ICAgIGVsc2UgaWYgKG1fcmVhZE9ubHkpCi0gICAgICAgIHBlcm1pc3Npb25zIHw9IERhdGFiYXNl
QXV0aG9yaXplcjo6UmVhZE9ubHlNYXNrOwotCi0gICAgYXV0byBzdGF0ZW1lbnQgPSBzdGQ6Om1h
a2VfdW5pcXVlPFNRTFN0YXRlbWVudD4obV9kYXRhYmFzZSwgc3FsU3RhdGVtZW50LCBhcmd1bWVu
dHMsIFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3ZlKGNhbGxiYWNrRXJyb3IpLCBwZXJtaXNzaW9u
cyk7Ci0gICAgbV9iYWNrZW5kLmV4ZWN1dGVTUUwoV1RGTW92ZShzdGF0ZW1lbnQpKTsKLX0KLQog
dm9pZCBTUUxUcmFuc2FjdGlvbjo6Y29tcHV0ZU5leHRTdGF0ZUFuZENsZWFudXBJZk5lZWRlZCgp
CiB7CiAgICAgLy8gT25seSBob25vciB0aGUgcmVxdWVzdGVkIHN0YXRlIHRyYW5zaXRpb24gaWYg
d2UncmUgbm90IHN1cHBvc2VkIHRvIGJlCkBAIC0yNTUsNCArMjg1LDEzOSBAQCB2b2lkIFNRTFRy
YW5zYWN0aW9uOjpjbGVhckNhbGxiYWNrV3JhcHBlcnMoKQogICAgIG1fZXJyb3JDYWxsYmFja1dy
YXBwZXIuY2xlYXIoKTsKIH0KIAordm9pZCBTUUxUcmFuc2FjdGlvbjo6Z2V0TmV4dFN0YXRlbWVu
dCgpCit7CisgICAgbV9jdXJyZW50U3RhdGVtZW50ID0gbnVsbHB0cjsKKworICAgIExvY2tIb2xk
ZXIgbG9ja2VyKG1fc3RhdGVtZW50TXV0ZXgpOworICAgIGlmICghbV9zdGF0ZW1lbnRRdWV1ZS5p
c0VtcHR5KCkpCisgICAgICAgIG1fY3VycmVudFN0YXRlbWVudCA9IG1fc3RhdGVtZW50UXVldWUu
dGFrZUZpcnN0KCk7Cit9CisKK2Jvb2wgU1FMVHJhbnNhY3Rpb246OnJ1bkN1cnJlbnRTdGF0ZW1l
bnQoKQoreworICAgIGlmICghbV9jdXJyZW50U3RhdGVtZW50KSB7CisgICAgICAgIC8vIE5vIG1v
cmUgc3RhdGVtZW50cyB0byBydW4uIFNvIG1vdmUgb24gdG8gdGhlIG5leHQgc3RhdGUuCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBtX2RhdGFiYXNlLT5yZXNldEF1dGhvcml6
ZXIoKTsKKworICAgIGlmIChtX2hhc1ZlcnNpb25NaXNtYXRjaCkKKyAgICAgICAgbV9jdXJyZW50
U3RhdGVtZW50LT5zZXRWZXJzaW9uTWlzbWF0Y2hlZEVycm9yKCk7CisKKyAgICBpZiAobV9jdXJy
ZW50U3RhdGVtZW50LT5leGVjdXRlKG1fZGF0YWJhc2UpKSB7CisgICAgICAgIGlmIChtX2RhdGFi
YXNlLT5sYXN0QWN0aW9uQ2hhbmdlZERhdGFiYXNlKCkpIHsKKyAgICAgICAgICAgIC8vIEZsYWcg
dGhpcyB0cmFuc2FjdGlvbiBhcyBoYXZpbmcgY2hhbmdlZCB0aGUgZGF0YWJhc2UgZm9yIGxhdGVy
IGRlbGVnYXRlIG5vdGlmaWNhdGlvbgorICAgICAgICAgICAgbV9tb2RpZmllZERhdGFiYXNlID0g
dHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChtX2N1cnJlbnRTdGF0ZW1lbnQtPmhhc1N0
YXRlbWVudENhbGxiYWNrKCkpIHsKKyAgICAgICAgICAgIHJlcXVlc3RUcmFuc2l0VG9TdGF0ZShT
UUxUcmFuc2FjdGlvblN0YXRlOjpEZWxpdmVyU3RhdGVtZW50Q2FsbGJhY2spOworICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgLy8gSWYgd2UgZ2V0IGhlcmUs
IHRoZW4gdGhlIHN0YXRlbWVudCBkb2Vzbid0IGhhdmUgYSBjYWxsYmFjayB0byBpbnZva2UuCisg
ICAgICAgIC8vIFdlIGNhbiBtb3ZlIG9uIHRvIHRoZSBuZXh0IHN0YXRlbWVudC4gSGVuY2UsIHN0
YXkgaW4gdGhpcyBzdGF0ZS4KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgaWYg
KG1fY3VycmVudFN0YXRlbWVudC0+bGFzdEV4ZWN1dGlvbkZhaWxlZER1ZVRvUXVvdGEoKSkgewor
ICAgICAgICByZXF1ZXN0VHJhbnNpdFRvU3RhdGUoU1FMVHJhbnNhY3Rpb25TdGF0ZTo6RGVsaXZl
clF1b3RhSW5jcmVhc2VDYWxsYmFjayk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisK
KyAgICBoYW5kbGVDdXJyZW50U3RhdGVtZW50RXJyb3IoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK3ZvaWQgU1FMVHJhbnNhY3Rpb246OmhhbmRsZUN1cnJlbnRTdGF0ZW1lbnRFcnJvcigpCit7
CisgICAgLy8gU3BlYyA0LjMuMi42LjY6IGVycm9yIC0gQ2FsbCB0aGUgc3RhdGVtZW50J3MgZXJy
b3IgY2FsbGJhY2ssIGJ1dCBpZiB0aGVyZSB3YXMgbm8gZXJyb3IgY2FsbGJhY2ssCisgICAgLy8g
b3IgdGhlIHRyYW5zYWN0aW9uIHdhcyByb2xsZWQgYmFjaywganVtcCB0byB0aGUgdHJhbnNhY3Rp
b24gZXJyb3IgY2FsbGJhY2sKKyAgICBpZiAobV9jdXJyZW50U3RhdGVtZW50LT5oYXNTdGF0ZW1l
bnRFcnJvckNhbGxiYWNrKCkgJiYgIW1fc3FsaXRlVHJhbnNhY3Rpb24tPndhc1JvbGxlZEJhY2tC
eVNxbGl0ZSgpKSB7CisgICAgICAgIHJlcXVlc3RUcmFuc2l0VG9TdGF0ZShTUUxUcmFuc2FjdGlv
blN0YXRlOjpEZWxpdmVyU3RhdGVtZW50Q2FsbGJhY2spOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgbV90cmFuc2FjdGlvbkVycm9yID0gbV9jdXJyZW50U3RhdGVtZW50LT5zcWxFcnJv
cigpOworICAgIGlmICghbV90cmFuc2FjdGlvbkVycm9yKQorICAgICAgICBtX3RyYW5zYWN0aW9u
RXJyb3IgPSBTUUxFcnJvcjo6Y3JlYXRlKFNRTEVycm9yOjpEQVRBQkFTRV9FUlIsICJ0aGUgc3Rh
dGVtZW50IGZhaWxlZCB0byBleGVjdXRlIik7CisKKyAgICBoYW5kbGVUcmFuc2FjdGlvbkVycm9y
KCk7Cit9CisKK3ZvaWQgU1FMVHJhbnNhY3Rpb246OmhhbmRsZVRyYW5zYWN0aW9uRXJyb3IoKQor
eworICAgIEFTU0VSVChtX3RyYW5zYWN0aW9uRXJyb3IpOworICAgIGlmIChtX2Vycm9yQ2FsbGJh
Y2tXcmFwcGVyLmhhc0NhbGxiYWNrKCkpIHsKKyAgICAgICAgcmVxdWVzdFRyYW5zaXRUb1N0YXRl
KFNRTFRyYW5zYWN0aW9uU3RhdGU6OkRlbGl2ZXJUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2spOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gTm8gZXJyb3IgY2FsbGJhY2ssIHNvIGZh
c3QtZm9yd2FyZCB0byB0aGUgbmV4dCBzdGF0ZSBhbmQgcm9sbGJhY2sgdGhlCisgICAgLy8gdHJh
bnNhY3Rpb24uCisgICAgbV9iYWNrZW5kLmNsZWFudXBBZnRlclRyYW5zYWN0aW9uRXJyb3JDYWxs
YmFjaygpOworfQorCit2b2lkIFNRTFRyYW5zYWN0aW9uOjpwb3N0ZmxpZ2h0QW5kQ29tbWl0KCkK
K3sKKyAgICBBU1NFUlQobV9sb2NrQWNxdWlyZWQpOworCisgICAgLy8gU3BlYyA0LjMuMi43OiBQ
ZXJmb3JtIHBvc3RmbGlnaHQgc3RlcHMsIGp1bXBpbmcgdG8gdGhlIGVycm9yIGNhbGxiYWNrIGlm
IHRoZXkgZmFpbC4KKyAgICBpZiAobV93cmFwcGVyICYmICFtX3dyYXBwZXItPnBlcmZvcm1Qb3N0
ZmxpZ2h0KCp0aGlzKSkgeworICAgICAgICBtX3RyYW5zYWN0aW9uRXJyb3IgPSBtX3dyYXBwZXIt
PnNxbEVycm9yKCk7CisgICAgICAgIGlmICghbV90cmFuc2FjdGlvbkVycm9yKQorICAgICAgICAg
ICAgbV90cmFuc2FjdGlvbkVycm9yID0gU1FMRXJyb3I6OmNyZWF0ZShTUUxFcnJvcjo6VU5LTk9X
Tl9FUlIsICJ1bmtub3duIGVycm9yIG9jY3VycmVkIGR1cmluZyB0cmFuc2FjdGlvbiBwb3N0Zmxp
Z2h0Iik7CisKKyAgICAgICAgaGFuZGxlVHJhbnNhY3Rpb25FcnJvcigpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgLy8gU3BlYyA0LjMuMi43OiBDb21taXQgdGhlIHRyYW5zYWN0aW9u
LCBqdW1waW5nIHRvIHRoZSBlcnJvciBjYWxsYmFjayBpZiB0aGF0IGZhaWxzLgorICAgIEFTU0VS
VChtX3NxbGl0ZVRyYW5zYWN0aW9uKTsKKworICAgIG1fZGF0YWJhc2UtPmRpc2FibGVBdXRob3Jp
emVyKCk7CisgICAgbV9zcWxpdGVUcmFuc2FjdGlvbi0+Y29tbWl0KCk7CisgICAgbV9kYXRhYmFz
ZS0+ZW5hYmxlQXV0aG9yaXplcigpOworCisgICAgcmVsZWFzZU9yaWdpbkxvY2tJZk5lZWRlZCgp
OworCisgICAgLy8gSWYgdGhlIGNvbW1pdCBmYWlsZWQsIHRoZSB0cmFuc2FjdGlvbiB3aWxsIHN0
aWxsIGJlIG1hcmtlZCBhcyAiaW4gcHJvZ3Jlc3MiCisgICAgaWYgKG1fc3FsaXRlVHJhbnNhY3Rp
b24tPmluUHJvZ3Jlc3MoKSkgeworICAgICAgICBpZiAobV93cmFwcGVyKQorICAgICAgICAgICAg
bV93cmFwcGVyLT5oYW5kbGVDb21taXRGYWlsZWRBZnRlclBvc3RmbGlnaHQoKnRoaXMpOworICAg
ICAgICBtX3RyYW5zYWN0aW9uRXJyb3IgPSBTUUxFcnJvcjo6Y3JlYXRlKFNRTEVycm9yOjpEQVRB
QkFTRV9FUlIsICJ1bmFibGUgdG8gY29tbWl0IHRyYW5zYWN0aW9uIiwgbV9kYXRhYmFzZS0+c3Fs
aXRlRGF0YWJhc2UoKS5sYXN0RXJyb3IoKSwgbV9kYXRhYmFzZS0+c3FsaXRlRGF0YWJhc2UoKS5s
YXN0RXJyb3JNc2coKSk7CisKKyAgICAgICAgaGFuZGxlVHJhbnNhY3Rpb25FcnJvcigpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gVmFjdXVtIHRoZSBkYXRhYmFzZSBpZiBhbnl0
aGluZyB3YXMgZGVsZXRlZC4KKyAgICBpZiAobV9kYXRhYmFzZS0+aGFkRGVsZXRlcygpKQorICAg
ICAgICBtX2RhdGFiYXNlLT5pbmNyZW1lbnRhbFZhY3V1bUlmTmVlZGVkKCk7CisKKyAgICAvLyBU
aGUgY29tbWl0IHdhcyBzdWNjZXNzZnVsLiBJZiB0aGUgdHJhbnNhY3Rpb24gbW9kaWZpZWQgdGhp
cyBkYXRhYmFzZSwgbm90aWZ5IHRoZSBkZWxlZ2F0ZXMuCisgICAgaWYgKG1fbW9kaWZpZWREYXRh
YmFzZSkKKyAgICAgICAgbV9kYXRhYmFzZS0+dHJhbnNhY3Rpb25DbGllbnQoKS0+ZGlkQ29tbWl0
V3JpdGVUcmFuc2FjdGlvbihtX2RhdGFiYXNlLnB0cigpKTsKKworICAgIC8vIFNwZWMgNC4zLjIu
ODogRGVsaXZlciBzdWNjZXNzIGNhbGxiYWNrLCBpZiB0aGVyZSBpcyBvbmUuCisgICAgcmVxdWVz
dFRyYW5zaXRUb1N0YXRlKFNRTFRyYW5zYWN0aW9uU3RhdGU6OkRlbGl2ZXJTdWNjZXNzQ2FsbGJh
Y2spOworfQorCit2b2lkIFNRTFRyYW5zYWN0aW9uOjphY3F1aXJlT3JpZ2luTG9jaygpCit7Cisg
ICAgQVNTRVJUKCFtX29yaWdpbkxvY2spOworICAgIG1fb3JpZ2luTG9jayA9IERhdGFiYXNlVHJh
Y2tlcjo6dHJhY2tlcigpLm9yaWdpbkxvY2tGb3IobV9kYXRhYmFzZS0+c2VjdXJpdHlPcmlnaW4o
KSk7CisgICAgbV9vcmlnaW5Mb2NrLT5sb2NrKCk7Cit9CisKK3ZvaWQgU1FMVHJhbnNhY3Rpb246
OnJlbGVhc2VPcmlnaW5Mb2NrSWZOZWVkZWQoKQoreworICAgIGlmIChtX29yaWdpbkxvY2spIHsK
KyAgICAgICAgbV9vcmlnaW5Mb2NrLT51bmxvY2soKTsKKyAgICAgICAgbV9vcmlnaW5Mb2NrID0g
bnVsbHB0cjsKKyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24uaAppbmRleCA0
MGRlOGMxNDMzYTk0MmYwZjU2NDI1MGUzMDZiMGEyYjY4MWE0ZWFkLi5mZmFlYzI3MzkwNmI0YTEx
MzJmNjQ4NzgxYjcxODNjYTkzY2ZmYmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5oCkBAIC02NCwxMSArNjQsMTMgQEAgcHVi
bGljOgogCiAgICAgdm9pZCBleGVjdXRlU1FMKGNvbnN0IFN0cmluZyYgc3FsU3RhdGVtZW50LCBj
b25zdCBWZWN0b3I8U1FMVmFsdWU+JiBhcmd1bWVudHMsIFJlZlB0cjxTUUxTdGF0ZW1lbnRDYWxs
YmFjaz4mJiwgUmVmUHRyPFNRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2s+JiYsIEV4Y2VwdGlvbkNv
ZGUmKTsKIAorICAgIHZvaWQgbG9ja0FjcXVpcmVkKCk7CisgICAgdm9pZCBwZXJmb3JtTmV4dFN0
ZXAoKTsKICAgICB2b2lkIHBlcmZvcm1QZW5kaW5nQ2FsbGJhY2soKTsKIAogICAgIERhdGFiYXNl
JiBkYXRhYmFzZSgpIHsgcmV0dXJuIG1fZGF0YWJhc2U7IH0KICAgICBib29sIGlzUmVhZE9ubHko
KSBjb25zdCB7IHJldHVybiBtX3JlYWRPbmx5OyB9Ci0gICAgU1FMVHJhbnNhY3Rpb25CYWNrZW5k
JiBiYWNrZW5kKCkgeyByZXR1cm4gbV9iYWNrZW5kOyB9CisgICAgdm9pZCBub3RpZnlEYXRhYmFz
ZVRocmVhZElzU2h1dHRpbmdEb3duKCk7CiAKICAgICAvLyBBUElzIGNhbGxlZCBmcm9tIHRoZSBi
YWNrZW5kIHB1Ymxpc2hlZCB2aWEgU1FMVHJhbnNhY3Rpb246CiAgICAgdm9pZCByZXF1ZXN0VHJh
bnNpdFRvU3RhdGUoU1FMVHJhbnNhY3Rpb25TdGF0ZSk7CkBAIC03OCw2ICs4MCw4IEBAIHByaXZh
dGU6CiAKICAgICBTUUxUcmFuc2FjdGlvbihSZWY8RGF0YWJhc2U+JiYsIFJlZlB0cjxTUUxUcmFu
c2FjdGlvbkNhbGxiYWNrPiYmLCBSZWZQdHI8Vm9pZENhbGxiYWNrPiYmIHN1Y2Nlc3NDYWxsYmFj
aywgUmVmUHRyPFNRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjaz4mJiwgUmVmUHRyPFNRTFRyYW5z
YWN0aW9uV3JhcHBlcj4mJiwgYm9vbCByZWFkT25seSk7CiAKKyAgICB2b2lkIGVucXVldWVTdGF0
ZW1lbnQoc3RkOjp1bmlxdWVfcHRyPFNRTFN0YXRlbWVudD4pOworCiAgICAgdm9pZCBjbGVhckNh
bGxiYWNrV3JhcHBlcnMoKTsKIAogICAgIC8vIFN0YXRlIE1hY2hpbmUgZnVuY3Rpb25zOgpAQCAt
OTMsNiArOTcsMTUgQEAgcHJpdmF0ZToKIAogICAgIE5PX1JFVFVSTl9EVUVfVE9fQVNTRVJUIHZv
aWQgdW5yZWFjaGFibGVTdGF0ZSgpOwogCisgICAgdm9pZCBnZXROZXh0U3RhdGVtZW50KCk7Cisg
ICAgYm9vbCBydW5DdXJyZW50U3RhdGVtZW50KCk7CisgICAgdm9pZCBoYW5kbGVDdXJyZW50U3Rh
dGVtZW50RXJyb3IoKTsKKyAgICB2b2lkIGhhbmRsZVRyYW5zYWN0aW9uRXJyb3IoKTsKKyAgICB2
b2lkIHBvc3RmbGlnaHRBbmRDb21taXQoKTsKKworICAgIHZvaWQgYWNxdWlyZU9yaWdpbkxvY2so
KTsKKyAgICB2b2lkIHJlbGVhc2VPcmlnaW5Mb2NrSWZOZWVkZWQoKTsKKwogICAgIFJlZjxEYXRh
YmFzZT4gbV9kYXRhYmFzZTsKICAgICBTUUxDYWxsYmFja1dyYXBwZXI8U1FMVHJhbnNhY3Rpb25D
YWxsYmFjaz4gbV9jYWxsYmFja1dyYXBwZXI7CiAgICAgU1FMQ2FsbGJhY2tXcmFwcGVyPFZvaWRD
YWxsYmFjaz4gbV9zdWNjZXNzQ2FsbGJhY2tXcmFwcGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkJhY2tlbmQuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkJhY2tlbmQuY3Bw
CmluZGV4IDVjNTEyZDVlMTJiYjA2MzRlMmRmMmMyZDJhYjNkZjdhYzBmOWRjMDguLjBhNGY3ZTI2
Yjg0MTc5NTVmZTk2MzYwYjUyMDM1ZjAxM2MxNzc1NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25CYWNrZW5kLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uQmFja2VuZC5j
cHAKQEAgLTM1OCw3ICszNTgsNyBAQCB2b2lkIFNRTFRyYW5zYWN0aW9uQmFja2VuZDo6ZG9DbGVh
bnVwKCkKIHsKICAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZnJvbnRlbmQuZGF0YWJh
c2UoKS5kYXRhYmFzZUNvbnRleHQoKS0+ZGF0YWJhc2VUaHJlYWQoKS0+Z2V0VGhyZWFkSUQoKSk7
CiAKLSAgICByZWxlYXNlT3JpZ2luTG9ja0lmTmVlZGVkKCk7CisgICAgbV9mcm9udGVuZC5yZWxl
YXNlT3JpZ2luTG9ja0lmTmVlZGVkKCk7CiAKICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2Zyb250
ZW5kLm1fc3RhdGVtZW50TXV0ZXgpOwogICAgIG1fZnJvbnRlbmQubV9zdGF0ZW1lbnRRdWV1ZS5j
bGVhcigpOwpAQCAtNDI2LDEyICs0MjYsNiBAQCBTUUxUcmFuc2FjdGlvbkJhY2tlbmQ6OlN0YXRl
RnVuY3Rpb24gU1FMVHJhbnNhY3Rpb25CYWNrZW5kOjpzdGF0ZUZ1bmN0aW9uRm9yKFNRTAogICAg
IHJldHVybiBzdGF0ZUZ1bmN0aW9uc1tzdGF0aWNfY2FzdDxpbnQ+KHN0YXRlKV07CiB9CiAKLXZv
aWQgU1FMVHJhbnNhY3Rpb25CYWNrZW5kOjplbnF1ZXVlU3RhdGVtZW50KHN0ZDo6dW5pcXVlX3B0
cjxTUUxTdGF0ZW1lbnQ+IHN0YXRlbWVudCkKLXsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2Zy
b250ZW5kLm1fc3RhdGVtZW50TXV0ZXgpOwotICAgIG1fZnJvbnRlbmQubV9zdGF0ZW1lbnRRdWV1
ZS5hcHBlbmQoV1RGTW92ZShzdGF0ZW1lbnQpKTsKLX0KLQogdm9pZCBTUUxUcmFuc2FjdGlvbkJh
Y2tlbmQ6OmNvbXB1dGVOZXh0U3RhdGVBbmRDbGVhbnVwSWZOZWVkZWQoKQogewogICAgIC8vIE9u
bHkgaG9ub3IgdGhlIHJlcXVlc3RlZCBzdGF0ZSB0cmFuc2l0aW9uIGlmIHdlJ3JlIG5vdCBzdXBw
b3NlZCB0byBiZQpAQCAtNDcyLDIwICs0NjYsNiBAQCB2b2lkIFNRTFRyYW5zYWN0aW9uQmFja2Vu
ZDo6Y29tcHV0ZU5leHRTdGF0ZUFuZENsZWFudXBJZk5lZWRlZCgpCiAgICAgZG9DbGVhbnVwKCk7
CiB9CiAKLXZvaWQgU1FMVHJhbnNhY3Rpb25CYWNrZW5kOjpwZXJmb3JtTmV4dFN0ZXAoKQotewot
ICAgIGNvbXB1dGVOZXh0U3RhdGVBbmRDbGVhbnVwSWZOZWVkZWQoKTsKLSAgICBydW5TdGF0ZU1h
Y2hpbmUoKTsKLX0KLQotdm9pZCBTUUxUcmFuc2FjdGlvbkJhY2tlbmQ6OmV4ZWN1dGVTUUwoc3Rk
Ojp1bmlxdWVfcHRyPFNRTFN0YXRlbWVudD4gc3RhdGVtZW50KQotewotICAgIGlmIChtX2Zyb250
ZW5kLm1fZGF0YWJhc2UtPmRlbGV0ZWQoKSkKLSAgICAgICAgc3RhdGVtZW50LT5zZXREYXRhYmFz
ZURlbGV0ZWRFcnJvcigpOwotCi0gICAgZW5xdWV1ZVN0YXRlbWVudChXVEZNb3ZlKHN0YXRlbWVu
dCkpOwotfQotCiB2b2lkIFNRTFRyYW5zYWN0aW9uQmFja2VuZDo6bm90aWZ5RGF0YWJhc2VUaHJl
YWRJc1NodXR0aW5nRG93bigpCiB7CiAgICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2Zy
b250ZW5kLm1fZGF0YWJhc2UtPmRhdGFiYXNlQ29udGV4dCgpLT5kYXRhYmFzZVRocmVhZCgpLT5n
ZXRUaHJlYWRJRCgpKTsKQEAgLTUwMywxNSArNDgzLDYgQEAgdm9pZCBTUUxUcmFuc2FjdGlvbkJh
Y2tlbmQ6OmFjcXVpcmVMb2NrKCkKICAgICBtX2Zyb250ZW5kLm1fZGF0YWJhc2UtPnRyYW5zYWN0
aW9uQ29vcmRpbmF0b3IoKS0+YWNxdWlyZUxvY2sobV9mcm9udGVuZCk7CiB9CiAKLXZvaWQgU1FM
VHJhbnNhY3Rpb25CYWNrZW5kOjpsb2NrQWNxdWlyZWQoKQotewotICAgIG1fZnJvbnRlbmQubV9s
b2NrQWNxdWlyZWQgPSB0cnVlOwotCi0gICAgbV9yZXF1ZXN0ZWRTdGF0ZSA9IFNRTFRyYW5zYWN0
aW9uU3RhdGU6Ok9wZW5UcmFuc2FjdGlvbkFuZFByZWZsaWdodDsKLSAgICBBU1NFUlQobV9yZXF1
ZXN0ZWRTdGF0ZSAhPSBTUUxUcmFuc2FjdGlvblN0YXRlOjpFbmQpOwotICAgIG1fZnJvbnRlbmQu
bV9kYXRhYmFzZS0+c2NoZWR1bGVUcmFuc2FjdGlvblN0ZXAobV9mcm9udGVuZCk7Ci19Ci0KIHZv
aWQgU1FMVHJhbnNhY3Rpb25CYWNrZW5kOjpvcGVuVHJhbnNhY3Rpb25BbmRQcmVmbGlnaHQoKQog
ewogICAgIEFTU0VSVCghbV9mcm9udGVuZC5tX2RhdGFiYXNlLT5zcWxpdGVEYXRhYmFzZSgpLnRy
YW5zYWN0aW9uSW5Qcm9ncmVzcygpKTsKQEAgLTUyMywxMyArNDk0LDEzIEBAIHZvaWQgU1FMVHJh
bnNhY3Rpb25CYWNrZW5kOjpvcGVuVHJhbnNhY3Rpb25BbmRQcmVmbGlnaHQoKQogICAgIGlmICht
X2Zyb250ZW5kLm1fZGF0YWJhc2UtPmRlbGV0ZWQoKSkgewogICAgICAgICBtX2Zyb250ZW5kLm1f
dHJhbnNhY3Rpb25FcnJvciA9IFNRTEVycm9yOjpjcmVhdGUoU1FMRXJyb3I6OlVOS05PV05fRVJS
LCAidW5hYmxlIHRvIG9wZW4gYSB0cmFuc2FjdGlvbiwgYmVjYXVzZSB0aGUgdXNlciBkZWxldGVk
IHRoZSBkYXRhYmFzZSIpOwogCi0gICAgICAgIGhhbmRsZVRyYW5zYWN0aW9uRXJyb3IoKTsKKyAg
ICAgICAgbV9mcm9udGVuZC5oYW5kbGVUcmFuc2FjdGlvbkVycm9yKCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKICAgICAvLyBTZXQgdGhlIG1heGltdW0gdXNhZ2UgZm9yIHRoaXMgdHJhbnNh
Y3Rpb24gaWYgdGhpcyB0cmFuc2FjdGlvbnMgaXMgbm90IHJlYWQtb25seQogICAgIGlmICghbV9m
cm9udGVuZC5tX3JlYWRPbmx5KSB7Ci0gICAgICAgIGFjcXVpcmVPcmlnaW5Mb2NrKCk7CisgICAg
ICAgIG1fZnJvbnRlbmQuYWNxdWlyZU9yaWdpbkxvY2soKTsKICAgICAgICAgbV9mcm9udGVuZC5t
X2RhdGFiYXNlLT5zcWxpdGVEYXRhYmFzZSgpLnNldE1heGltdW1TaXplKG1fZnJvbnRlbmQubV9k
YXRhYmFzZS0+bWF4aW11bVNpemUoKSk7CiAgICAgfQogCkBAIC01NDcsNyArNTE4LDcgQEAgdm9p
ZCBTUUxUcmFuc2FjdGlvbkJhY2tlbmQ6Om9wZW5UcmFuc2FjdGlvbkFuZFByZWZsaWdodCgpCiAg
ICAgICAgIG1fZnJvbnRlbmQubV90cmFuc2FjdGlvbkVycm9yID0gU1FMRXJyb3I6OmNyZWF0ZShT
UUxFcnJvcjo6REFUQUJBU0VfRVJSLCAidW5hYmxlIHRvIGJlZ2luIHRyYW5zYWN0aW9uIiwgbV9m
cm9udGVuZC5tX2RhdGFiYXNlLT5zcWxpdGVEYXRhYmFzZSgpLmxhc3RFcnJvcigpLCBtX2Zyb250
ZW5kLm1fZGF0YWJhc2UtPnNxbGl0ZURhdGFiYXNlKCkubGFzdEVycm9yTXNnKCkpOwogICAgICAg
ICBtX2Zyb250ZW5kLm1fc3FsaXRlVHJhbnNhY3Rpb24gPSBudWxscHRyOwogCi0gICAgICAgIGhh
bmRsZVRyYW5zYWN0aW9uRXJyb3IoKTsKKyAgICAgICAgbV9mcm9udGVuZC5oYW5kbGVUcmFuc2Fj
dGlvbkVycm9yKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTU2MSw3ICs1MzIsNyBA
QCB2b2lkIFNRTFRyYW5zYWN0aW9uQmFja2VuZDo6b3BlblRyYW5zYWN0aW9uQW5kUHJlZmxpZ2h0
KCkKICAgICAgICAgbV9mcm9udGVuZC5tX3NxbGl0ZVRyYW5zYWN0aW9uID0gbnVsbHB0cjsKICAg
ICAgICAgbV9mcm9udGVuZC5tX2RhdGFiYXNlLT5lbmFibGVBdXRob3JpemVyKCk7CiAKLSAgICAg
ICAgaGFuZGxlVHJhbnNhY3Rpb25FcnJvcigpOworICAgICAgICBtX2Zyb250ZW5kLmhhbmRsZVRy
YW5zYWN0aW9uRXJyb3IoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNTc2LDcgKzU0
Nyw3IEBAIHZvaWQgU1FMVHJhbnNhY3Rpb25CYWNrZW5kOjpvcGVuVHJhbnNhY3Rpb25BbmRQcmVm
bGlnaHQoKQogICAgICAgICBpZiAoIW1fZnJvbnRlbmQubV90cmFuc2FjdGlvbkVycm9yKQogICAg
ICAgICAgICAgbV9mcm9udGVuZC5tX3RyYW5zYWN0aW9uRXJyb3IgPSBTUUxFcnJvcjo6Y3JlYXRl
KFNRTEVycm9yOjpVTktOT1dOX0VSUiwgInVua25vd24gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIHRy
YW5zYWN0aW9uIHByZWZsaWdodCIpOwogCi0gICAgICAgIGhhbmRsZVRyYW5zYWN0aW9uRXJyb3Io
KTsKKyAgICAgICAgbV9mcm9udGVuZC5oYW5kbGVUcmFuc2FjdGlvbkVycm9yKCk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKQEAgLTYxMSwxNDAgKzU4MiwyMCBAQCB2b2lkIFNRTFRyYW5zYWN0
aW9uQmFja2VuZDo6cnVuU3RhdGVtZW50cygpCiAgICAgICAgICAgICAvLyBJZiB0aGUgY3VycmVu
dCBzdGF0ZW1lbnQgaGFzIGFscmVhZHkgYmVlbiBydW4sIGZhaWxlZCBkdWUgdG8gcXVvdGEgY29u
c3RyYWludHMsIGFuZCB3ZSdyZSBub3QgcmV0cnlpbmcgaXQsCiAgICAgICAgICAgICAvLyB0aGF0
IG1lYW5zIGl0IGVuZGVkIGluIGFuIGVycm9yLiBIYW5kbGUgaXQgbm93CiAgICAgICAgICAgICBp
ZiAobV9mcm9udGVuZC5tX2N1cnJlbnRTdGF0ZW1lbnQgJiYgbV9mcm9udGVuZC5tX2N1cnJlbnRT
dGF0ZW1lbnQtPmxhc3RFeGVjdXRpb25GYWlsZWREdWVUb1F1b3RhKCkpIHsKLSAgICAgICAgICAg
ICAgICBoYW5kbGVDdXJyZW50U3RhdGVtZW50RXJyb3IoKTsKKyAgICAgICAgICAgICAgICBtX2Zy
b250ZW5kLmhhbmRsZUN1cnJlbnRTdGF0ZW1lbnRFcnJvcigpOwogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAvLyBPdGhlcndpc2UsIGFkdmFuY2Ug
dG8gdGhlIG5leHQgc3RhdGVtZW50Ci0gICAgICAgICAgICBnZXROZXh0U3RhdGVtZW50KCk7Cisg
ICAgICAgICAgICBtX2Zyb250ZW5kLmdldE5leHRTdGF0ZW1lbnQoKTsKICAgICAgICAgfQotICAg
IH0gd2hpbGUgKHJ1bkN1cnJlbnRTdGF0ZW1lbnQoKSk7CisgICAgfSB3aGlsZSAobV9mcm9udGVu
ZC5ydW5DdXJyZW50U3RhdGVtZW50KCkpOwogCiAgICAgLy8gSWYgcnVuQ3VycmVudFN0YXRlbWVu
dCgpIHJldHVybmVkIGZhbHNlLCB0aGF0IG1lYW5zIGVpdGhlciB0aGVyZSB3YXMgbm8gY3VycmVu
dCBzdGF0ZW1lbnQgdG8gcnVuLAogICAgIC8vIG9yIHRoZSBjdXJyZW50IHN0YXRlbWVudCByZXF1
aXJlcyBhIGNhbGxiYWNrIHRvIGNvbXBsZXRlLiBJbiB0aGUgbGF0ZXIgY2FzZSwgaXQgYWxzbyBz
Y2hlZHVsZWQKICAgICAvLyB0aGUgY2FsbGJhY2sgb3IgcGVyZm9ybWVkIGFueSBvdGhlciBhZGRp
dGlvbmFsIHdvcmsgc28gd2UgY2FuIHJldHVybi4KICAgICBpZiAoIW1fZnJvbnRlbmQubV9jdXJy
ZW50U3RhdGVtZW50KQotICAgICAgICBwb3N0ZmxpZ2h0QW5kQ29tbWl0KCk7Ci19Ci0KLXZvaWQg
U1FMVHJhbnNhY3Rpb25CYWNrZW5kOjpnZXROZXh0U3RhdGVtZW50KCkKLXsKLSAgICBtX2Zyb250
ZW5kLm1fY3VycmVudFN0YXRlbWVudCA9IG51bGxwdHI7Ci0KLSAgICBMb2NrSG9sZGVyIGxvY2tl
cihtX2Zyb250ZW5kLm1fc3RhdGVtZW50TXV0ZXgpOwotICAgIGlmICghbV9mcm9udGVuZC5tX3N0
YXRlbWVudFF1ZXVlLmlzRW1wdHkoKSkKLSAgICAgICAgbV9mcm9udGVuZC5tX2N1cnJlbnRTdGF0
ZW1lbnQgPSBtX2Zyb250ZW5kLm1fc3RhdGVtZW50UXVldWUudGFrZUZpcnN0KCk7Ci19Ci0KLWJv
b2wgU1FMVHJhbnNhY3Rpb25CYWNrZW5kOjpydW5DdXJyZW50U3RhdGVtZW50KCkKLXsKLSAgICBp
ZiAoIW1fZnJvbnRlbmQubV9jdXJyZW50U3RhdGVtZW50KSB7Ci0gICAgICAgIC8vIE5vIG1vcmUg
c3RhdGVtZW50cyB0byBydW4uIFNvIG1vdmUgb24gdG8gdGhlIG5leHQgc3RhdGUuCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBtX2Zyb250ZW5kLm1fZGF0YWJhc2UtPnJlc2V0
QXV0aG9yaXplcigpOwotCi0gICAgaWYgKG1fZnJvbnRlbmQubV9oYXNWZXJzaW9uTWlzbWF0Y2gp
Ci0gICAgICAgIG1fZnJvbnRlbmQubV9jdXJyZW50U3RhdGVtZW50LT5zZXRWZXJzaW9uTWlzbWF0
Y2hlZEVycm9yKCk7Ci0KLSAgICBpZiAobV9mcm9udGVuZC5tX2N1cnJlbnRTdGF0ZW1lbnQtPmV4
ZWN1dGUobV9mcm9udGVuZC5tX2RhdGFiYXNlKSkgewotICAgICAgICBpZiAobV9mcm9udGVuZC5t
X2RhdGFiYXNlLT5sYXN0QWN0aW9uQ2hhbmdlZERhdGFiYXNlKCkpIHsKLSAgICAgICAgICAgIC8v
IEZsYWcgdGhpcyB0cmFuc2FjdGlvbiBhcyBoYXZpbmcgY2hhbmdlZCB0aGUgZGF0YWJhc2UgZm9y
IGxhdGVyIGRlbGVnYXRlIG5vdGlmaWNhdGlvbgotICAgICAgICAgICAgbV9mcm9udGVuZC5tX21v
ZGlmaWVkRGF0YWJhc2UgPSB0cnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKG1fZnJvbnRl
bmQubV9jdXJyZW50U3RhdGVtZW50LT5oYXNTdGF0ZW1lbnRDYWxsYmFjaygpKSB7Ci0gICAgICAg
ICAgICBtX2Zyb250ZW5kLnJlcXVlc3RUcmFuc2l0VG9TdGF0ZShTUUxUcmFuc2FjdGlvblN0YXRl
OjpEZWxpdmVyU3RhdGVtZW50Q2FsbGJhY2spOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICB9Ci0KLSAgICAgICAgLy8gSWYgd2UgZ2V0IGhlcmUsIHRoZW4gdGhlIHN0YXRlbWVu
dCBkb2Vzbid0IGhhdmUgYSBjYWxsYmFjayB0byBpbnZva2UuCi0gICAgICAgIC8vIFdlIGNhbiBt
b3ZlIG9uIHRvIHRoZSBuZXh0IHN0YXRlbWVudC4gSGVuY2UsIHN0YXkgaW4gdGhpcyBzdGF0ZS4K
LSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgaWYgKG1fZnJvbnRlbmQubV9jdXJy
ZW50U3RhdGVtZW50LT5sYXN0RXhlY3V0aW9uRmFpbGVkRHVlVG9RdW90YSgpKSB7Ci0gICAgICAg
IG1fZnJvbnRlbmQucmVxdWVzdFRyYW5zaXRUb1N0YXRlKFNRTFRyYW5zYWN0aW9uU3RhdGU6OkRl
bGl2ZXJRdW90YUluY3JlYXNlQ2FsbGJhY2spOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
fQotCi0gICAgaGFuZGxlQ3VycmVudFN0YXRlbWVudEVycm9yKCk7Ci0gICAgcmV0dXJuIGZhbHNl
OwotfQotCi12b2lkIFNRTFRyYW5zYWN0aW9uQmFja2VuZDo6aGFuZGxlQ3VycmVudFN0YXRlbWVu
dEVycm9yKCkKLXsKLSAgICAvLyBTcGVjIDQuMy4yLjYuNjogZXJyb3IgLSBDYWxsIHRoZSBzdGF0
ZW1lbnQncyBlcnJvciBjYWxsYmFjaywgYnV0IGlmIHRoZXJlIHdhcyBubyBlcnJvciBjYWxsYmFj
aywKLSAgICAvLyBvciB0aGUgdHJhbnNhY3Rpb24gd2FzIHJvbGxlZCBiYWNrLCBqdW1wIHRvIHRo
ZSB0cmFuc2FjdGlvbiBlcnJvciBjYWxsYmFjawotICAgIGlmIChtX2Zyb250ZW5kLm1fY3VycmVu
dFN0YXRlbWVudC0+aGFzU3RhdGVtZW50RXJyb3JDYWxsYmFjaygpICYmICFtX2Zyb250ZW5kLm1f
c3FsaXRlVHJhbnNhY3Rpb24tPndhc1JvbGxlZEJhY2tCeVNxbGl0ZSgpKSB7Ci0gICAgICAgIG1f
ZnJvbnRlbmQucmVxdWVzdFRyYW5zaXRUb1N0YXRlKFNRTFRyYW5zYWN0aW9uU3RhdGU6OkRlbGl2
ZXJTdGF0ZW1lbnRDYWxsYmFjayk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBtX2Zy
b250ZW5kLm1fdHJhbnNhY3Rpb25FcnJvciA9IG1fZnJvbnRlbmQubV9jdXJyZW50U3RhdGVtZW50
LT5zcWxFcnJvcigpOwotICAgIGlmICghbV9mcm9udGVuZC5tX3RyYW5zYWN0aW9uRXJyb3IpCi0g
ICAgICAgIG1fZnJvbnRlbmQubV90cmFuc2FjdGlvbkVycm9yID0gU1FMRXJyb3I6OmNyZWF0ZShT
UUxFcnJvcjo6REFUQUJBU0VfRVJSLCAidGhlIHN0YXRlbWVudCBmYWlsZWQgdG8gZXhlY3V0ZSIp
OwotCi0gICAgaGFuZGxlVHJhbnNhY3Rpb25FcnJvcigpOwotfQotCi12b2lkIFNRTFRyYW5zYWN0
aW9uQmFja2VuZDo6aGFuZGxlVHJhbnNhY3Rpb25FcnJvcigpCi17Ci0gICAgQVNTRVJUKG1fZnJv
bnRlbmQubV90cmFuc2FjdGlvbkVycm9yKTsKLSAgICBpZiAobV9mcm9udGVuZC5tX2Vycm9yQ2Fs
bGJhY2tXcmFwcGVyLmhhc0NhbGxiYWNrKCkpIHsKLSAgICAgICAgbV9mcm9udGVuZC5yZXF1ZXN0
VHJhbnNpdFRvU3RhdGUoU1FMVHJhbnNhY3Rpb25TdGF0ZTo6RGVsaXZlclRyYW5zYWN0aW9uRXJy
b3JDYWxsYmFjayk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBObyBlcnJvciBj
YWxsYmFjaywgc28gZmFzdC1mb3J3YXJkIHRvIHRoZSBuZXh0IHN0YXRlIGFuZCByb2xsYmFjayB0
aGUKLSAgICAvLyB0cmFuc2FjdGlvbi4KLSAgICBjbGVhbnVwQWZ0ZXJUcmFuc2FjdGlvbkVycm9y
Q2FsbGJhY2soKTsKLX0KLQotdm9pZCBTUUxUcmFuc2FjdGlvbkJhY2tlbmQ6OnBvc3RmbGlnaHRB
bmRDb21taXQoKQotewotICAgIEFTU0VSVChtX2Zyb250ZW5kLm1fbG9ja0FjcXVpcmVkKTsKLQot
ICAgIC8vIFNwZWMgNC4zLjIuNzogUGVyZm9ybSBwb3N0ZmxpZ2h0IHN0ZXBzLCBqdW1waW5nIHRv
IHRoZSBlcnJvciBjYWxsYmFjayBpZiB0aGV5IGZhaWwuCi0gICAgaWYgKG1fZnJvbnRlbmQubV93
cmFwcGVyICYmICFtX2Zyb250ZW5kLm1fd3JhcHBlci0+cGVyZm9ybVBvc3RmbGlnaHQobV9mcm9u
dGVuZCkpIHsKLSAgICAgICAgbV9mcm9udGVuZC5tX3RyYW5zYWN0aW9uRXJyb3IgPSBtX2Zyb250
ZW5kLm1fd3JhcHBlci0+c3FsRXJyb3IoKTsKLSAgICAgICAgaWYgKCFtX2Zyb250ZW5kLm1fdHJh
bnNhY3Rpb25FcnJvcikKLSAgICAgICAgICAgIG1fZnJvbnRlbmQubV90cmFuc2FjdGlvbkVycm9y
ID0gU1FMRXJyb3I6OmNyZWF0ZShTUUxFcnJvcjo6VU5LTk9XTl9FUlIsICJ1bmtub3duIGVycm9y
IG9jY3VycmVkIGR1cmluZyB0cmFuc2FjdGlvbiBwb3N0ZmxpZ2h0Iik7Ci0KLSAgICAgICAgaGFu
ZGxlVHJhbnNhY3Rpb25FcnJvcigpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8g
U3BlYyA0LjMuMi43OiBDb21taXQgdGhlIHRyYW5zYWN0aW9uLCBqdW1waW5nIHRvIHRoZSBlcnJv
ciBjYWxsYmFjayBpZiB0aGF0IGZhaWxzLgotICAgIEFTU0VSVChtX2Zyb250ZW5kLm1fc3FsaXRl
VHJhbnNhY3Rpb24pOwotCi0gICAgbV9mcm9udGVuZC5tX2RhdGFiYXNlLT5kaXNhYmxlQXV0aG9y
aXplcigpOwotICAgIG1fZnJvbnRlbmQubV9zcWxpdGVUcmFuc2FjdGlvbi0+Y29tbWl0KCk7Ci0g
ICAgbV9mcm9udGVuZC5tX2RhdGFiYXNlLT5lbmFibGVBdXRob3JpemVyKCk7Ci0KLSAgICByZWxl
YXNlT3JpZ2luTG9ja0lmTmVlZGVkKCk7Ci0KLSAgICAvLyBJZiB0aGUgY29tbWl0IGZhaWxlZCwg
dGhlIHRyYW5zYWN0aW9uIHdpbGwgc3RpbGwgYmUgbWFya2VkIGFzICJpbiBwcm9ncmVzcyIKLSAg
ICBpZiAobV9mcm9udGVuZC5tX3NxbGl0ZVRyYW5zYWN0aW9uLT5pblByb2dyZXNzKCkpIHsKLSAg
ICAgICAgaWYgKG1fZnJvbnRlbmQubV93cmFwcGVyKQotICAgICAgICAgICAgbV9mcm9udGVuZC5t
X3dyYXBwZXItPmhhbmRsZUNvbW1pdEZhaWxlZEFmdGVyUG9zdGZsaWdodChtX2Zyb250ZW5kKTsK
LSAgICAgICAgbV9mcm9udGVuZC5tX3RyYW5zYWN0aW9uRXJyb3IgPSBTUUxFcnJvcjo6Y3JlYXRl
KFNRTEVycm9yOjpEQVRBQkFTRV9FUlIsICJ1bmFibGUgdG8gY29tbWl0IHRyYW5zYWN0aW9uIiwg
bV9mcm9udGVuZC5tX2RhdGFiYXNlLT5zcWxpdGVEYXRhYmFzZSgpLmxhc3RFcnJvcigpLCBtX2Zy
b250ZW5kLm1fZGF0YWJhc2UtPnNxbGl0ZURhdGFiYXNlKCkubGFzdEVycm9yTXNnKCkpOwotCi0g
ICAgICAgIGhhbmRsZVRyYW5zYWN0aW9uRXJyb3IoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIC8vIFZhY3V1bSB0aGUgZGF0YWJhc2UgaWYgYW55dGhpbmcgd2FzIGRlbGV0ZWQuCi0g
ICAgaWYgKG1fZnJvbnRlbmQubV9kYXRhYmFzZS0+aGFkRGVsZXRlcygpKQotICAgICAgICBtX2Zy
b250ZW5kLm1fZGF0YWJhc2UtPmluY3JlbWVudGFsVmFjdXVtSWZOZWVkZWQoKTsKLQotICAgIC8v
IFRoZSBjb21taXQgd2FzIHN1Y2Nlc3NmdWwuIElmIHRoZSB0cmFuc2FjdGlvbiBtb2RpZmllZCB0
aGlzIGRhdGFiYXNlLCBub3RpZnkgdGhlIGRlbGVnYXRlcy4KLSAgICBpZiAobV9mcm9udGVuZC5t
X21vZGlmaWVkRGF0YWJhc2UpCi0gICAgICAgIG1fZnJvbnRlbmQubV9kYXRhYmFzZS0+dHJhbnNh
Y3Rpb25DbGllbnQoKS0+ZGlkQ29tbWl0V3JpdGVUcmFuc2FjdGlvbihtX2Zyb250ZW5kLm1fZGF0
YWJhc2UucHRyKCkpOwotCi0gICAgLy8gU3BlYyA0LjMuMi44OiBEZWxpdmVyIHN1Y2Nlc3MgY2Fs
bGJhY2ssIGlmIHRoZXJlIGlzIG9uZS4KLSAgICBtX2Zyb250ZW5kLnJlcXVlc3RUcmFuc2l0VG9T
dGF0ZShTUUxUcmFuc2FjdGlvblN0YXRlOjpEZWxpdmVyU3VjY2Vzc0NhbGxiYWNrKTsKKyAgICAg
ICAgbV9mcm9udGVuZC5wb3N0ZmxpZ2h0QW5kQ29tbWl0KCk7CiB9CiAKIHZvaWQgU1FMVHJhbnNh
Y3Rpb25CYWNrZW5kOjpjbGVhbnVwQW5kVGVybWluYXRlKCkKQEAgLTc3NSw3ICs2MjYsNyBAQCB2
b2lkIFNRTFRyYW5zYWN0aW9uQmFja2VuZDo6Y2xlYW51cEFmdGVyVHJhbnNhY3Rpb25FcnJvckNh
bGxiYWNrKCkKICAgICB9CiAgICAgbV9mcm9udGVuZC5tX2RhdGFiYXNlLT5lbmFibGVBdXRob3Jp
emVyKCk7CiAKLSAgICByZWxlYXNlT3JpZ2luTG9ja0lmTmVlZGVkKCk7CisgICAgbV9mcm9udGVu
ZC5yZWxlYXNlT3JpZ2luTG9ja0lmTmVlZGVkKCk7CiAKICAgICBBU1NFUlQoIW1fZnJvbnRlbmQu
bV9kYXRhYmFzZS0+c3FsaXRlRGF0YWJhc2UoKS50cmFuc2FjdGlvbkluUHJvZ3Jlc3MoKSk7CiAK
QEAgLTgwMSwxOSArNjUyLDQgQEAgdm9pZCBTUUxUcmFuc2FjdGlvbkJhY2tlbmQ6OnVucmVhY2hh
YmxlU3RhdGUoKQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIFNRTFRyYW5z
YWN0aW9uQmFja2VuZDo6YWNxdWlyZU9yaWdpbkxvY2soKQotewotICAgIEFTU0VSVCghbV9mcm9u
dGVuZC5tX29yaWdpbkxvY2spOwotICAgIG1fZnJvbnRlbmQubV9vcmlnaW5Mb2NrID0gRGF0YWJh
c2VUcmFja2VyOjp0cmFja2VyKCkub3JpZ2luTG9ja0ZvcihtX2Zyb250ZW5kLm1fZGF0YWJhc2Ut
PnNlY3VyaXR5T3JpZ2luKCkpOwotICAgIG1fZnJvbnRlbmQubV9vcmlnaW5Mb2NrLT5sb2NrKCk7
Ci19Ci0KLXZvaWQgU1FMVHJhbnNhY3Rpb25CYWNrZW5kOjpyZWxlYXNlT3JpZ2luTG9ja0lmTmVl
ZGVkKCkKLXsKLSAgICBpZiAobV9mcm9udGVuZC5tX29yaWdpbkxvY2spIHsKLSAgICAgICAgbV9m
cm9udGVuZC5tX29yaWdpbkxvY2stPnVubG9jaygpOwotICAgICAgICBtX2Zyb250ZW5kLm1fb3Jp
Z2luTG9jayA9IG51bGxwdHI7Ci0gICAgfQotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0
aW9uQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFu
c2FjdGlvbkJhY2tlbmQuaAppbmRleCBhYTBhZmUzMjFlMzk0NmVhNmE1ZGE2YjZlNjI4MGMyNjRl
Y2Y0MDg4Li4yYzNmODdiYTJmZDAyY2U2NTk5Nzk4MDdkNWJkZmVkN2I4YTNhY2E5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uQmFj
a2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNh
Y3Rpb25CYWNrZW5kLmgKQEAgLTUyLDIxICs1MiwxNiBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQg
U1FMVHJhbnNhY3Rpb25CYWNrZW5kKFNRTFRyYW5zYWN0aW9uJik7CiAgICAgflNRTFRyYW5zYWN0
aW9uQmFja2VuZCgpOwogCi0gICAgdm9pZCBsb2NrQWNxdWlyZWQoKTsKLSAgICB2b2lkIHBlcmZv
cm1OZXh0U3RlcCgpOwotCiAgICAgdm9pZCBub3RpZnlEYXRhYmFzZVRocmVhZElzU2h1dHRpbmdE
b3duKCk7CiAKLSAgICAvLyBBUElzIGNhbGxlZCBmcm9tIHRoZSBmcm9udGVuZCBwdWJsaXNoZWQg
dmlhIFNRTFRyYW5zYWN0aW9uQmFja2VuZDoKKyAgICAvLyBBUEkgY2FsbGVkIGZyb20gdGhlIGZy
b250ZW5kIHB1Ymxpc2hlZCB2aWEgU1FMVHJhbnNhY3Rpb25CYWNrZW5kOgogICAgIHZvaWQgcmVx
dWVzdFRyYW5zaXRUb1N0YXRlKFNRTFRyYW5zYWN0aW9uU3RhdGUpOwotICAgIHZvaWQgZXhlY3V0
ZVNRTChzdGQ6OnVuaXF1ZV9wdHI8U1FMU3RhdGVtZW50Pik7Ci0gICAgCisKIHByaXZhdGU6Cisg
ICAgZnJpZW5kIGNsYXNzIFNRTFRyYW5zYWN0aW9uOwogCiAgICAgdm9pZCBkb0NsZWFudXAoKTsK
IAotICAgIHZvaWQgZW5xdWV1ZVN0YXRlbWVudChzdGQ6OnVuaXF1ZV9wdHI8U1FMU3RhdGVtZW50
Pik7Ci0KICAgICAvLyBTdGF0ZSBNYWNoaW5lIGZ1bmN0aW9uczoKICAgICBTdGF0ZUZ1bmN0aW9u
IHN0YXRlRnVuY3Rpb25Gb3IoU1FMVHJhbnNhY3Rpb25TdGF0ZSkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBjb21wdXRlTmV4dFN0YXRlQW5kQ2xlYW51cElmTmVlZGVkKCk7CkBAIC04MCwxNSArNzUsNiBA
QCBwcml2YXRlOgogCiAgICAgTk9fUkVUVVJOX0RVRV9UT19BU1NFUlQgdm9pZCB1bnJlYWNoYWJs
ZVN0YXRlKCk7CiAKLSAgICB2b2lkIGdldE5leHRTdGF0ZW1lbnQoKTsKLSAgICBib29sIHJ1bkN1
cnJlbnRTdGF0ZW1lbnQoKTsKLSAgICB2b2lkIGhhbmRsZUN1cnJlbnRTdGF0ZW1lbnRFcnJvcigp
OwotICAgIHZvaWQgaGFuZGxlVHJhbnNhY3Rpb25FcnJvcigpOwotICAgIHZvaWQgcG9zdGZsaWdo
dEFuZENvbW1pdCgpOwotCi0gICAgdm9pZCBhY3F1aXJlT3JpZ2luTG9jaygpOwotICAgIHZvaWQg
cmVsZWFzZU9yaWdpbkxvY2tJZk5lZWRlZCgpOwotCiAgICAgU1FMVHJhbnNhY3Rpb24mIG1fZnJv
bnRlbmQ7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL1NRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmNwcAppbmRleCA2YjUxMjBj
MmY2MmJhYWUyZDZkOGQxODI5ZjQ4NjE4NTI0NmQyMWI2Li5mNWJlOGE3YjQ2N2YzZDI2MzY0MTc2
MjA5Mzg3ZjY3MjY3NDViMWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25Db29yZGluYXRvci5jcHAKQEAg
LTYyLDEyICs2MiwxMiBAQCB2b2lkIFNRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3I6OnByb2Nlc3NQ
ZW5kaW5nVHJhbnNhY3Rpb25zKENvb3JkaW5hdGlvbkluZm8mIGluZgogICAgICAgICBkbyB7CiAg
ICAgICAgICAgICBmaXJzdFBlbmRpbmdUcmFuc2FjdGlvbiA9IGluZm8ucGVuZGluZ1RyYW5zYWN0
aW9ucy50YWtlRmlyc3QoKTsKICAgICAgICAgICAgIGluZm8uYWN0aXZlUmVhZFRyYW5zYWN0aW9u
cy5hZGQoZmlyc3RQZW5kaW5nVHJhbnNhY3Rpb24pOwotICAgICAgICAgICAgZmlyc3RQZW5kaW5n
VHJhbnNhY3Rpb24tPmJhY2tlbmQoKS5sb2NrQWNxdWlyZWQoKTsKKyAgICAgICAgICAgIGZpcnN0
UGVuZGluZ1RyYW5zYWN0aW9uLT5sb2NrQWNxdWlyZWQoKTsKICAgICAgICAgfSB3aGlsZSAoIWlu
Zm8ucGVuZGluZ1RyYW5zYWN0aW9ucy5pc0VtcHR5KCkgJiYgaW5mby5wZW5kaW5nVHJhbnNhY3Rp
b25zLmZpcnN0KCktPmlzUmVhZE9ubHkoKSk7CiAgICAgfSBlbHNlIGlmIChpbmZvLmFjdGl2ZVJl
YWRUcmFuc2FjdGlvbnMuaXNFbXB0eSgpKSB7CiAgICAgICAgIGluZm8ucGVuZGluZ1RyYW5zYWN0
aW9ucy5yZW1vdmVGaXJzdCgpOwogICAgICAgICBpbmZvLmFjdGl2ZVdyaXRlVHJhbnNhY3Rpb24g
PSBmaXJzdFBlbmRpbmdUcmFuc2FjdGlvbjsKLSAgICAgICAgZmlyc3RQZW5kaW5nVHJhbnNhY3Rp
b24tPmJhY2tlbmQoKS5sb2NrQWNxdWlyZWQoKTsKKyAgICAgICAgZmlyc3RQZW5kaW5nVHJhbnNh
Y3Rpb24tPmxvY2tBY3F1aXJlZCgpOwogICAgIH0KIH0KIApAQCAtMTIyLDE2ICsxMjIsMTYgQEAg
dm9pZCBTUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yOjpzaHV0ZG93bigpCiAgICAgICAgIC8vIFRy
YW5zYWN0aW9uIHBoYXNlIDQgY2xlYW51cC4gU2VlIGNvbW1lbnQgb24gIldoYXQgaGFwcGVucyBp
ZiBhCiAgICAgICAgIC8vIHRyYW5zYWN0aW9uIGlzIGludGVycnVwdGVkPyIgYXQgdGhlIHRvcCBv
ZiBTUUxUcmFuc2FjdGlvbkJhY2tlbmQuY3BwLgogICAgICAgICBpZiAoaW5mby5hY3RpdmVXcml0
ZVRyYW5zYWN0aW9uKQotICAgICAgICAgICAgaW5mby5hY3RpdmVXcml0ZVRyYW5zYWN0aW9uLT5i
YWNrZW5kKCkubm90aWZ5RGF0YWJhc2VUaHJlYWRJc1NodXR0aW5nRG93bigpOworICAgICAgICAg
ICAgaW5mby5hY3RpdmVXcml0ZVRyYW5zYWN0aW9uLT5ub3RpZnlEYXRhYmFzZVRocmVhZElzU2h1
dHRpbmdEb3duKCk7CiAgICAgICAgIGZvciAoYXV0byYgdHJhbnNhY3Rpb24gOiBpbmZvLmFjdGl2
ZVJlYWRUcmFuc2FjdGlvbnMpCi0gICAgICAgICAgICB0cmFuc2FjdGlvbi0+YmFja2VuZCgpLm5v
dGlmeURhdGFiYXNlVGhyZWFkSXNTaHV0dGluZ0Rvd24oKTsKKyAgICAgICAgICAgIHRyYW5zYWN0
aW9uLT5ub3RpZnlEYXRhYmFzZVRocmVhZElzU2h1dHRpbmdEb3duKCk7CiAKICAgICAgICAgLy8g
Q2xlYW4gdXAgdHJhbnNhY3Rpb25zIHRoYXQgaGF2ZSBOT1QgcmVhY2hlZCAibG9ja0FjcXVpcmVk
IjoKICAgICAgICAgLy8gVHJhbnNhY3Rpb24gcGhhc2UgMyBjbGVhbnVwLiBTZWUgY29tbWVudCBv
biAiV2hhdCBoYXBwZW5zIGlmIGEKICAgICAgICAgLy8gdHJhbnNhY3Rpb24gaXMgaW50ZXJydXB0
ZWQ/IiBhdCB0aGUgdG9wIG9mIFNRTFRyYW5zYWN0aW9uQmFja2VuZC5jcHAuCiAgICAgICAgIHdo
aWxlICghaW5mby5wZW5kaW5nVHJhbnNhY3Rpb25zLmlzRW1wdHkoKSkgewogICAgICAgICAgICAg
UmVmUHRyPFNRTFRyYW5zYWN0aW9uPiB0cmFuc2FjdGlvbiA9IGluZm8ucGVuZGluZ1RyYW5zYWN0
aW9ucy5maXJzdCgpOwotICAgICAgICAgICAgdHJhbnNhY3Rpb24tPmJhY2tlbmQoKS5ub3RpZnlE
YXRhYmFzZVRocmVhZElzU2h1dHRpbmdEb3duKCk7CisgICAgICAgICAgICB0cmFuc2FjdGlvbi0+
bm90aWZ5RGF0YWJhc2VUaHJlYWRJc1NodXR0aW5nRG93bigpOwogICAgICAgICB9CiAgICAgfQog
Cg==
</data>
<flag name="review"
          id="309362"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
      

    </bug>

</bugzilla>