<?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>172074</bug_id>
          
          <creation_ts>2017-05-13 13:25:19 -0700</creation_ts>
          <short_desc>Stop using RefPtr::release()</short_desc>
          <delta_ts>2017-05-13 21:04:40 -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>WebCore Misc.</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="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>ggaren</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1308329</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-13 13:25:19 -0700</bug_when>
    <thetext>Stop using RefPtr::release() and use WTFMove() instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308330</commentid>
    <comment_count>1</comment_count>
      <attachid>310027</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-13 13:25:50 -0700</bug_when>
    <thetext>Created attachment 310027
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308339</commentid>
    <comment_count>2</comment_count>
      <attachid>310029</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-13 13:39:05 -0700</bug_when>
    <thetext>Created attachment 310029
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308340</commentid>
    <comment_count>3</comment_count>
      <attachid>310030</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-13 14:04:37 -0700</bug_when>
    <thetext>Created attachment 310030
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308341</commentid>
    <comment_count>4</comment_count>
      <attachid>310031</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-13 14:10:42 -0700</bug_when>
    <thetext>Created attachment 310031
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308342</commentid>
    <comment_count>5</comment_count>
      <attachid>310032</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-13 14:16:54 -0700</bug_when>
    <thetext>Created attachment 310032
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308343</commentid>
    <comment_count>6</comment_count>
      <attachid>310033</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-13 14:22:16 -0700</bug_when>
    <thetext>Created attachment 310033
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308344</commentid>
    <comment_count>7</comment_count>
      <attachid>310034</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-13 14:27:10 -0700</bug_when>
    <thetext>Created attachment 310034
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308345</commentid>
    <comment_count>8</comment_count>
      <attachid>310035</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-13 14:34:11 -0700</bug_when>
    <thetext>Created attachment 310035
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308348</commentid>
    <comment_count>9</comment_count>
      <attachid>310036</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-13 14:41:37 -0700</bug_when>
    <thetext>Created attachment 310036
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308349</commentid>
    <comment_count>10</comment_count>
      <attachid>310037</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-13 14:51:29 -0700</bug_when>
    <thetext>Created attachment 310037
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308351</commentid>
    <comment_count>11</comment_count>
      <attachid>310038</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-13 14:59:53 -0700</bug_when>
    <thetext>Created attachment 310038
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308354</commentid>
    <comment_count>12</comment_count>
      <attachid>310040</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-13 16:52:42 -0700</bug_when>
    <thetext>Created attachment 310040
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308371</commentid>
    <comment_count>13</comment_count>
      <attachid>310046</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-13 18:38:11 -0700</bug_when>
    <thetext>Created attachment 310046
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308387</commentid>
    <comment_count>14</comment_count>
      <attachid>310054</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-13 19:34:07 -0700</bug_when>
    <thetext>Created attachment 310054
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308388</commentid>
    <comment_count>15</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-13 19:35:04 -0700</bug_when>
    <thetext>Note dropping RefPtr::release() yet as other projects still need updating.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308389</commentid>
    <comment_count>16</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-13 19:35:16 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #15)
&gt; Note dropping RefPtr::release() yet as other projects still need updating.

*Not...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308394</commentid>
    <comment_count>17</comment_count>
      <attachid>310054</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2017-05-13 20:31:25 -0700</bug_when>
    <thetext>Comment on attachment 310054
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308399</commentid>
    <comment_count>18</comment_count>
      <attachid>310054</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-05-13 21:04:38 -0700</bug_when>
    <thetext>Comment on attachment 310054
Patch

Clearing flags on attachment: 310054

Committed r216833: &lt;http://trac.webkit.org/changeset/216833&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308400</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-05-13 21:04:40 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>310027</attachid>
            <date>2017-05-13 13:25:50 -0700</date>
            <delta_ts>2017-05-13 13:39:05 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>172074_release_wip.patch</filename>
            <type>text/plain</type>
            <size>4312</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1JlZlB0ci5oIGIvU291cmNlL1dURi93dGYvUmVm
UHRyLmgKaW5kZXggMjc3ZTY3NWRiM2MuLjc4MjEyOWY4Zjk1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9SZWZQdHIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9SZWZQdHIuaApAQCAtNjMsOCAr
NjMsNiBAQCBwdWJsaWM6CiAKICAgICBUKiBnZXQoKSBjb25zdCB7IHJldHVybiBtX3B0cjsgfQog
Ci0gICAgLy8gRklYTUU6IFJlbW92ZSByZWxlYXNlKCkgYW5kIGNoYW5nZSBhbGwgY2FsbCBzaXRl
cyB0byBjYWxsIFdURk1vdmUoKS4KLSAgICBSZWZQdHI8VD4gcmVsZWFzZSgpIHsgUmVmUHRyPFQ+
IHRtcCA9IGFkb3B0UmVmKG1fcHRyKTsgbV9wdHIgPSBudWxscHRyOyByZXR1cm4gdG1wOyB9CiAg
ICAgUmVmPFQ+IHJlbGVhc2VOb25OdWxsKCkgeyBBU1NFUlQobV9wdHIpOyBSZWY8VD4gdG1wKGFk
b3B0UmVmKCptX3B0cikpOyBtX3B0ciA9IG51bGxwdHI7IHJldHVybiB0bXA7IH0KICAgICBSZWY8
Y29uc3QgVD4gcmVsZWFzZUNvbnN0Tm9uTnVsbCgpIHsgQVNTRVJUKG1fcHRyKTsgUmVmPGNvbnN0
IFQ+IHRtcChhZG9wdFJlZigqbV9wdHIpKTsgbV9wdHIgPSBudWxscHRyOyByZXR1cm4gdG1wOyB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJz
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAK
aW5kZXggOTMxMjVmY2UxMzguLmIzOTUwMWMwNWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcApAQCAtNjMwLDcgKzYzMCw3IEBAIHB1Ymxp
YzoKICAgICB7CiAgICAgICAgIGlmICghbV9yZXN1bHQtPmxlbmd0aCgpKQogICAgICAgICAgICAg
cmV0dXJuIENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENT
U1ZhbHVlTm9ybWFsKTsKLSAgICAgICAgcmV0dXJuIG1fcmVzdWx0LnJlbGVhc2UoKTsKKyAgICAg
ICAgcmV0dXJuIFdURk1vdmUobV9yZXN1bHQpOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTgzMiw3
ICs4MzIsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBpZiAoIW1fcmVzdWx0LT5sZW5ndGgo
KSkKICAgICAgICAgICAgIHJldHVybiBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlk
ZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vcm1hbCk7Ci0gICAgICAgIHJldHVybiBtX3Jlc3VsdC5y
ZWxlYXNlKCk7CisgICAgICAgIHJldHVybiBXVEZNb3ZlKG1fcmVzdWx0KTsKICAgICB9CiAKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlckhl
bHBlcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlckhl
bHBlcnMuY3BwCmluZGV4IDRhMzJhNThiYzBiLi4zNDk5OTliOWU3ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcApA
QCAtOTMsNyArOTMsNyBAQCBwdWJsaWM6CiAgICAgICAgIGlmICghbV9jYWxjVmFsdWUpCiAgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgbV9zb3VyY2VSYW5nZSA9IG1fcmFuZ2U7
Ci0gICAgICAgIHJldHVybiBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZVZhbHVlKG1f
Y2FsY1ZhbHVlLnJlbGVhc2UoKSk7CisgICAgICAgIHJldHVybiBDU1NWYWx1ZVBvb2w6OnNpbmds
ZXRvbigpLmNyZWF0ZVZhbHVlKFdURk1vdmUobV9jYWxjVmFsdWUpKTsKICAgICB9CiAgICAgUmVm
UHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjb25zdW1lTnVtYmVyKCkKICAgICB7CmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SZWZQdHIuY3BwIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvUmVmUHRyLmNwcAppbmRleCAxNzJlZmE3NjI3Yy4uOTVmOTdkOGRh
NzkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1JlZlB0ci5jcHAK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUmVmUHRyLmNwcApAQCAtMTA4LDE0
ICsxMDgsNiBAQCBURVNUKFdURl9SZWZQdHIsIEJhc2ljKQogICAgICAgICBBU1NFUlRfRVEobnVs
bHB0ciwgcHRyLmdldCgpKTsKICAgICB9CiAgICAgQVNTRVJUX1NUUkVRKCJyZWYoYSkgZGVyZWYo
YSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwotCi0gICAgewotICAgICAgICBSZWZQdHI8UmVm
TG9nZ2VyPiBwdHIoJmEpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci5nZXQoKSk7Ci0gICAg
ICAgIHB0ci5yZWxlYXNlKCk7Ci0gICAgICAgIEFTU0VSVF9FUShudWxscHRyLCBwdHIuZ2V0KCkp
OwotICAgIH0KLSAgICBBU1NFUlRfU1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3Ry
KCkuY19zdHIoKSk7CiB9CiAKIFRFU1QoV1RGX1JlZlB0ciwgQXNzaWduUGFzc1JlZlRvUmVmUHRy
KQpAQCAtMTI1LDggKzExNyw2IEBAIFRFU1QoV1RGX1JlZlB0ciwgQXNzaWduUGFzc1JlZlRvUmVm
UHRyKQogICAgICAgICBSZWY8UmVmTG9nZ2VyPiBwYXNzUmVmKGEpOwogICAgICAgICBSZWZQdHI8
UmVmTG9nZ2VyPiBwdHIgPSBXVEZNb3ZlKHBhc3NSZWYpOwogICAgICAgICBBU1NFUlRfRVEoJmEs
IHB0ci5nZXQoKSk7Ci0gICAgICAgIHB0ci5yZWxlYXNlKCk7Ci0gICAgICAgIEFTU0VSVF9FUShu
dWxscHRyLCBwdHIuZ2V0KCkpOwogICAgIH0KICAgICBBU1NFUlRfU1RSRVEoInJlZihhKSBkZXJl
ZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiB9CkBAIC0zMzYsNyArMzI2LDcgQEAgVEVT
VChXVEZfUmVmUHRyLCBSZWxlYXNlKQogCiAgICAgewogICAgICAgICBSZWZQdHI8UmVmTG9nZ2Vy
PiBwMSA9ICZhOwotICAgICAgICBSZWZQdHI8UmVmTG9nZ2VyPiBwMiA9IHAxLnJlbGVhc2UoKTsK
KyAgICAgICAgUmVmUHRyPFJlZkxvZ2dlcj4gcDIgPSBXVEZNb3ZlKHAxKTsKICAgICAgICAgQVNT
RVJUX0VRKG51bGxwdHIsIHAxLmdldCgpKTsKICAgICAgICAgQVNTRVJUX0VRKCZhLCBwMi5nZXQo
KSk7CiAgICAgfQpAQCAtMzQ0LDcgKzMzNCw3IEBAIFRFU1QoV1RGX1JlZlB0ciwgUmVsZWFzZSkK
IAogICAgIHsKICAgICAgICAgUmVmUHRyPFJlZkxvZ2dlcj4gcDEgPSAmYTsKLSAgICAgICAgUmVm
UHRyPFJlZkxvZ2dlcj4gcDIocDEucmVsZWFzZSgpKTsKKyAgICAgICAgUmVmUHRyPFJlZkxvZ2dl
cj4gcDIoV1RGTW92ZShwMSkpOwogICAgICAgICBBU1NFUlRfRVEobnVsbHB0ciwgcDEuZ2V0KCkp
OwogICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLmdldCgpKTsKICAgICB9CkBAIC0zNTIsNyArMzQy
LDcgQEAgVEVTVChXVEZfUmVmUHRyLCBSZWxlYXNlKQogCiAgICAgewogICAgICAgICBSZWZQdHI8
RGVyaXZlZFJlZkxvZ2dlcj4gcDEgPSAmYTsKLSAgICAgICAgUmVmUHRyPFJlZkxvZ2dlcj4gcDIg
PSBwMS5yZWxlYXNlKCk7CisgICAgICAgIFJlZlB0cjxSZWZMb2dnZXI+IHAyID0gV1RGTW92ZShw
MSk7CiAgICAgICAgIEFTU0VSVF9FUShudWxscHRyLCBwMS5nZXQoKSk7CiAgICAgICAgIEFTU0VS
VF9FUSgmYSwgcDIuZ2V0KCkpOwogICAgIH0KQEAgLTM2NCw3ICszNTQsNyBAQCBURVNUKFdURl9S
ZWZQdHIsIFJlbGVhc2UpCiAgICAgICAgIEFTU0VSVF9FUSgmYSwgcDEuZ2V0KCkpOwogICAgICAg
ICBBU1NFUlRfRVEoJmIsIHAyLmdldCgpKTsKICAgICAgICAgbG9nKCkgPDwgInwgIjsKLSAgICAg
ICAgcDEgPSBwMi5yZWxlYXNlKCk7CisgICAgICAgIHAxID0gV1RGTW92ZShwMik7CiAgICAgICAg
IEFTU0VSVF9FUSgmYiwgcDEuZ2V0KCkpOwogICAgICAgICBBU1NFUlRfRVEobnVsbHB0ciwgcDIu
Z2V0KCkpOwogICAgICAgICBsb2coKSA8PCAifCAiOwpAQCAtMzc3LDcgKzM2Nyw3IEBAIFRFU1Qo
V1RGX1JlZlB0ciwgUmVsZWFzZSkKICAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS5nZXQoKSk7CiAg
ICAgICAgIEFTU0VSVF9FUSgmYywgcDIuZ2V0KCkpOwogICAgICAgICBsb2coKSA8PCAifCAiOwot
ICAgICAgICBwMSA9IHAyLnJlbGVhc2UoKTsKKyAgICAgICAgcDEgPSBXVEZNb3ZlKHAyKTsKICAg
ICAgICAgQVNTRVJUX0VRKCZjLCBwMS5nZXQoKSk7CiAgICAgICAgIEFTU0VSVF9FUShudWxscHRy
LCBwMi5nZXQoKSk7CiAgICAgICAgIGxvZygpIDw8ICJ8ICI7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>310029</attachid>
            <date>2017-05-13 13:39:05 -0700</date>
            <delta_ts>2017-05-13 14:04:37 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>172074_release_wip.patch</filename>
            <type>text/plain</type>
            <size>6923</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1JlZlB0ci5oIGIvU291cmNlL1dURi93dGYvUmVm
UHRyLmgKaW5kZXggMjc3ZTY3NWRiM2MuLjc4MjEyOWY4Zjk1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9SZWZQdHIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9SZWZQdHIuaApAQCAtNjMsOCAr
NjMsNiBAQCBwdWJsaWM6CiAKICAgICBUKiBnZXQoKSBjb25zdCB7IHJldHVybiBtX3B0cjsgfQog
Ci0gICAgLy8gRklYTUU6IFJlbW92ZSByZWxlYXNlKCkgYW5kIGNoYW5nZSBhbGwgY2FsbCBzaXRl
cyB0byBjYWxsIFdURk1vdmUoKS4KLSAgICBSZWZQdHI8VD4gcmVsZWFzZSgpIHsgUmVmUHRyPFQ+
IHRtcCA9IGFkb3B0UmVmKG1fcHRyKTsgbV9wdHIgPSBudWxscHRyOyByZXR1cm4gdG1wOyB9CiAg
ICAgUmVmPFQ+IHJlbGVhc2VOb25OdWxsKCkgeyBBU1NFUlQobV9wdHIpOyBSZWY8VD4gdG1wKGFk
b3B0UmVmKCptX3B0cikpOyBtX3B0ciA9IG51bGxwdHI7IHJldHVybiB0bXA7IH0KICAgICBSZWY8
Y29uc3QgVD4gcmVsZWFzZUNvbnN0Tm9uTnVsbCgpIHsgQVNTRVJUKG1fcHRyKTsgUmVmPGNvbnN0
IFQ+IHRtcChhZG9wdFJlZigqbV9wdHIpKTsgbV9wdHIgPSBudWxscHRyOyByZXR1cm4gdG1wOyB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJz
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAK
aW5kZXggOTMxMjVmY2UxMzguLmIzOTUwMWMwNWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcApAQCAtNjMwLDcgKzYzMCw3IEBAIHB1Ymxp
YzoKICAgICB7CiAgICAgICAgIGlmICghbV9yZXN1bHQtPmxlbmd0aCgpKQogICAgICAgICAgICAg
cmV0dXJuIENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENT
U1ZhbHVlTm9ybWFsKTsKLSAgICAgICAgcmV0dXJuIG1fcmVzdWx0LnJlbGVhc2UoKTsKKyAgICAg
ICAgcmV0dXJuIFdURk1vdmUobV9yZXN1bHQpOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTgzMiw3
ICs4MzIsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBpZiAoIW1fcmVzdWx0LT5sZW5ndGgo
KSkKICAgICAgICAgICAgIHJldHVybiBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlk
ZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vcm1hbCk7Ci0gICAgICAgIHJldHVybiBtX3Jlc3VsdC5y
ZWxlYXNlKCk7CisgICAgICAgIHJldHVybiBXVEZNb3ZlKG1fcmVzdWx0KTsKICAgICB9CiAKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlckhl
bHBlcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlckhl
bHBlcnMuY3BwCmluZGV4IDRhMzJhNThiYzBiLi4zNDk5OTliOWU3ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcApA
QCAtOTMsNyArOTMsNyBAQCBwdWJsaWM6CiAgICAgICAgIGlmICghbV9jYWxjVmFsdWUpCiAgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgbV9zb3VyY2VSYW5nZSA9IG1fcmFuZ2U7
Ci0gICAgICAgIHJldHVybiBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZVZhbHVlKG1f
Y2FsY1ZhbHVlLnJlbGVhc2UoKSk7CisgICAgICAgIHJldHVybiBDU1NWYWx1ZVBvb2w6OnNpbmds
ZXRvbigpLmNyZWF0ZVZhbHVlKFdURk1vdmUobV9jYWxjVmFsdWUpKTsKICAgICB9CiAgICAgUmVm
UHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjb25zdW1lTnVtYmVyKCkKICAgICB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKaW5kZXgg
ZTFiMTA0Y2UxZGEuLjVhNjBjNjQ4ZmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwCkBAIC02OCw3ICs2OCw3IEBAIFJlZlB0
cjxNSFRNTEFyY2hpdmU+IE1IVE1MUGFyc2VyOjpwYXJzZUFyY2hpdmVXaXRoSGVhZGVyKE1JTUVI
ZWFkZXIqIGhlYWRlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgUmVm
UHRyPE1IVE1MQXJjaGl2ZT4gYXJjaGl2ZSA9IE1IVE1MQXJjaGl2ZTo6Y3JlYXRlKCk7CisgICAg
YXV0byBhcmNoaXZlID0gTUhUTUxBcmNoaXZlOjpjcmVhdGUoKTsKICAgICBpZiAoIWhlYWRlci0+
aXNNdWx0aXBhcnQoKSkgewogICAgICAgICAvLyBXaXRoIElFIGEgcGFnZSB3aXRoIG5vIHJlc291
cmNlIGlzIG5vdCBtdWx0aS1wYXJ0LgogICAgICAgICBib29sIGVuZE9mQXJjaGl2ZVJlYWNoZWQg
PSBmYWxzZTsKQEAgLTc2LDcgKzc2LDcgQEAgUmVmUHRyPE1IVE1MQXJjaGl2ZT4gTUhUTUxQYXJz
ZXI6OnBhcnNlQXJjaGl2ZVdpdGhIZWFkZXIoTUlNRUhlYWRlciogaGVhZGVyKQogICAgICAgICBp
ZiAoIXJlc291cmNlKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIGFyY2hp
dmUtPnNldE1haW5SZXNvdXJjZShyZXNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpKTsKLSAgICAgICAg
cmV0dXJuIGFyY2hpdmU7CisgICAgICAgIHJldHVybiBXVEZNb3ZlKGFyY2hpdmUpOwogICAgIH0K
IAogICAgIC8vIFNraXAgdGhlIG1lc3NhZ2UgY29udGVudCAoaXQncyBhIGdlbmVyaWMgYnJvd3Nl
ciBzcGVjaWZpYyBtZXNzYWdlKS4KQEAgLTExMCwxMCArMTEwLDEwIEBAIFJlZlB0cjxNSFRNTEFy
Y2hpdmU+IE1IVE1MUGFyc2VyOjpwYXJzZUFyY2hpdmVXaXRoSGVhZGVyKE1JTUVIZWFkZXIqIGhl
YWRlcikKICAgICAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIHBhcnNlIE1IVE1MIHBhcnQu
Iik7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQotICAgICAgICBhZGRS
ZXNvdXJjZVRvQXJjaGl2ZShyZXNvdXJjZS5nZXQoKSwgYXJjaGl2ZS5nZXQoKSk7CisgICAgICAg
IGFkZFJlc291cmNlVG9BcmNoaXZlKHJlc291cmNlLmdldCgpLCBhcmNoaXZlLnB0cigpKTsKICAg
ICB9CiAKLSAgICByZXR1cm4gYXJjaGl2ZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIFdURk1vdmUo
YXJjaGl2ZSk7CiB9CiAKIHZvaWQgTUhUTUxQYXJzZXI6OmFkZFJlc291cmNlVG9BcmNoaXZlKEFy
Y2hpdmVSZXNvdXJjZSogcmVzb3VyY2UsIE1IVE1MQXJjaGl2ZSogYXJjaGl2ZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0ZpbGVSZWFkZXJJT1Mu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvRmlsZVJlYWRlcklP
Uy5jcHAKaW5kZXggNTAzZWY0MmQwMjguLjhhN2Y3N2ZhNDBlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9GaWxlUmVhZGVySU9TLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9GaWxlUmVhZGVySU9TLmNwcApA
QCAtMTc3LDcgKzE3Nyw3IEBAIFJlZlB0cjxBdWRpb0J1cz4gQXVkaW9GaWxlUmVhZGVyOjpjcmVh
dGVCdXMoZmxvYXQgc2FtcGxlUmF0ZSwgYm9vbCBtaXhUb01vbm8pCiAgICAgc2l6ZV90IGJ1c0No
YW5uZWxDb3VudCA9IG1peFRvTW9ubyA/IDEgOiBudW1iZXJPZkNoYW5uZWxzOwogCiAgICAgLy8g
Q3JlYXRlIEF1ZGlvQnVzIHdoZXJlIHdlJ2xsIHB1dCB0aGUgUENNIGF1ZGlvIGRhdGEKLSAgICBS
ZWZQdHI8QXVkaW9CdXM+IGF1ZGlvQnVzID0gQXVkaW9CdXM6OmNyZWF0ZShidXNDaGFubmVsQ291
bnQsIG51bWJlck9mRnJhbWVzKTsKKyAgICBhdXRvIGF1ZGlvQnVzID0gQXVkaW9CdXM6OmNyZWF0
ZShidXNDaGFubmVsQ291bnQsIG51bWJlck9mRnJhbWVzKTsKICAgICBhdWRpb0J1cy0+c2V0U2Ft
cGxlUmF0ZShtX2NsaWVudERhdGFGb3JtYXQubVNhbXBsZVJhdGUpOyAvLyBzYXZlIGZvciBsYXRl
cgogCiAgICAgLy8gT25seSBhbGxvY2F0ZWQgaW4gdGhlIG1peFRvTW9ubyBjYXNlOyBkZWFsbG9j
YXRlZCBvbiBkZXN0cnVjdGlvbi4KQEAgLTIyOCw3ICsyMjgsNyBAQCBSZWZQdHI8QXVkaW9CdXM+
IEF1ZGlvRmlsZVJlYWRlcjo6Y3JlYXRlQnVzKGZsb2F0IHNhbXBsZVJhdGUsIGJvb2wgbWl4VG9N
b25vKQogCiAgICAgZGVzdHJveUF1ZGlvQnVmZmVyTGlzdChidWZmZXJMaXN0KTsKIAotICAgIHJl
dHVybiBhdWRpb0J1cy5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGF1ZGlvQnVzOwogfQogCiBSZWZQ
dHI8QXVkaW9CdXM+IGNyZWF0ZUJ1c0Zyb21BdWRpb0ZpbGUoY29uc3QgY2hhciogZmlsZVBhdGgs
IGJvb2wgbWl4VG9Nb25vLCBmbG9hdCBzYW1wbGVSYXRlKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvUmVmUHRyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL1JlZlB0ci5jcHAKaW5kZXggMTcyZWZhNzYyN2MuLjk1Zjk3ZDhkYTc5IDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SZWZQdHIuY3BwCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1JlZlB0ci5jcHAKQEAgLTEwOCwxNCArMTA4LDYgQEAg
VEVTVChXVEZfUmVmUHRyLCBCYXNpYykKICAgICAgICAgQVNTRVJUX0VRKG51bGxwdHIsIHB0ci5n
ZXQoKSk7CiAgICAgfQogICAgIEFTU0VSVF9TVFJFUSgicmVmKGEpIGRlcmVmKGEpICIsIHRha2VM
b2dTdHIoKS5jX3N0cigpKTsKLQotICAgIHsKLSAgICAgICAgUmVmUHRyPFJlZkxvZ2dlcj4gcHRy
KCZhKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIuZ2V0KCkpOwotICAgICAgICBwdHIucmVs
ZWFzZSgpOwotICAgICAgICBBU1NFUlRfRVEobnVsbHB0ciwgcHRyLmdldCgpKTsKLSAgICB9Ci0g
ICAgQVNTRVJUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkp
OwogfQogCiBURVNUKFdURl9SZWZQdHIsIEFzc2lnblBhc3NSZWZUb1JlZlB0cikKQEAgLTEyNSw4
ICsxMTcsNiBAQCBURVNUKFdURl9SZWZQdHIsIEFzc2lnblBhc3NSZWZUb1JlZlB0cikKICAgICAg
ICAgUmVmPFJlZkxvZ2dlcj4gcGFzc1JlZihhKTsKICAgICAgICAgUmVmUHRyPFJlZkxvZ2dlcj4g
cHRyID0gV1RGTW92ZShwYXNzUmVmKTsKICAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIuZ2V0KCkp
OwotICAgICAgICBwdHIucmVsZWFzZSgpOwotICAgICAgICBBU1NFUlRfRVEobnVsbHB0ciwgcHRy
LmdldCgpKTsKICAgICB9CiAgICAgQVNTRVJUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFr
ZUxvZ1N0cigpLmNfc3RyKCkpOwogfQpAQCAtMzM2LDcgKzMyNiw3IEBAIFRFU1QoV1RGX1JlZlB0
ciwgUmVsZWFzZSkKIAogICAgIHsKICAgICAgICAgUmVmUHRyPFJlZkxvZ2dlcj4gcDEgPSAmYTsK
LSAgICAgICAgUmVmUHRyPFJlZkxvZ2dlcj4gcDIgPSBwMS5yZWxlYXNlKCk7CisgICAgICAgIFJl
ZlB0cjxSZWZMb2dnZXI+IHAyID0gV1RGTW92ZShwMSk7CiAgICAgICAgIEFTU0VSVF9FUShudWxs
cHRyLCBwMS5nZXQoKSk7CiAgICAgICAgIEFTU0VSVF9FUSgmYSwgcDIuZ2V0KCkpOwogICAgIH0K
QEAgLTM0NCw3ICszMzQsNyBAQCBURVNUKFdURl9SZWZQdHIsIFJlbGVhc2UpCiAKICAgICB7CiAg
ICAgICAgIFJlZlB0cjxSZWZMb2dnZXI+IHAxID0gJmE7Ci0gICAgICAgIFJlZlB0cjxSZWZMb2dn
ZXI+IHAyKHAxLnJlbGVhc2UoKSk7CisgICAgICAgIFJlZlB0cjxSZWZMb2dnZXI+IHAyKFdURk1v
dmUocDEpKTsKICAgICAgICAgQVNTRVJUX0VRKG51bGxwdHIsIHAxLmdldCgpKTsKICAgICAgICAg
QVNTRVJUX0VRKCZhLCBwMi5nZXQoKSk7CiAgICAgfQpAQCAtMzUyLDcgKzM0Miw3IEBAIFRFU1Qo
V1RGX1JlZlB0ciwgUmVsZWFzZSkKIAogICAgIHsKICAgICAgICAgUmVmUHRyPERlcml2ZWRSZWZM
b2dnZXI+IHAxID0gJmE7Ci0gICAgICAgIFJlZlB0cjxSZWZMb2dnZXI+IHAyID0gcDEucmVsZWFz
ZSgpOworICAgICAgICBSZWZQdHI8UmVmTG9nZ2VyPiBwMiA9IFdURk1vdmUocDEpOwogICAgICAg
ICBBU1NFUlRfRVEobnVsbHB0ciwgcDEuZ2V0KCkpOwogICAgICAgICBBU1NFUlRfRVEoJmEsIHAy
LmdldCgpKTsKICAgICB9CkBAIC0zNjQsNyArMzU0LDcgQEAgVEVTVChXVEZfUmVmUHRyLCBSZWxl
YXNlKQogICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLmdldCgpKTsKICAgICAgICAgQVNTRVJUX0VR
KCZiLCBwMi5nZXQoKSk7CiAgICAgICAgIGxvZygpIDw8ICJ8ICI7Ci0gICAgICAgIHAxID0gcDIu
cmVsZWFzZSgpOworICAgICAgICBwMSA9IFdURk1vdmUocDIpOwogICAgICAgICBBU1NFUlRfRVEo
JmIsIHAxLmdldCgpKTsKICAgICAgICAgQVNTRVJUX0VRKG51bGxwdHIsIHAyLmdldCgpKTsKICAg
ICAgICAgbG9nKCkgPDwgInwgIjsKQEAgLTM3Nyw3ICszNjcsNyBAQCBURVNUKFdURl9SZWZQdHIs
IFJlbGVhc2UpCiAgICAgICAgIEFTU0VSVF9FUSgmYSwgcDEuZ2V0KCkpOwogICAgICAgICBBU1NF
UlRfRVEoJmMsIHAyLmdldCgpKTsKICAgICAgICAgbG9nKCkgPDwgInwgIjsKLSAgICAgICAgcDEg
PSBwMi5yZWxlYXNlKCk7CisgICAgICAgIHAxID0gV1RGTW92ZShwMik7CiAgICAgICAgIEFTU0VS
VF9FUSgmYywgcDEuZ2V0KCkpOwogICAgICAgICBBU1NFUlRfRVEobnVsbHB0ciwgcDIuZ2V0KCkp
OwogICAgICAgICBsb2coKSA8PCAifCAiOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>310030</attachid>
            <date>2017-05-13 14:04:37 -0700</date>
            <delta_ts>2017-05-13 14:10:42 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>172074_release_wip.patch</filename>
            <type>text/plain</type>
            <size>7964</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1JlZlB0ci5oIGIvU291cmNlL1dURi93dGYvUmVm
UHRyLmgKaW5kZXggMjc3ZTY3NWRiM2MuLjc4MjEyOWY4Zjk1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9SZWZQdHIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9SZWZQdHIuaApAQCAtNjMsOCAr
NjMsNiBAQCBwdWJsaWM6CiAKICAgICBUKiBnZXQoKSBjb25zdCB7IHJldHVybiBtX3B0cjsgfQog
Ci0gICAgLy8gRklYTUU6IFJlbW92ZSByZWxlYXNlKCkgYW5kIGNoYW5nZSBhbGwgY2FsbCBzaXRl
cyB0byBjYWxsIFdURk1vdmUoKS4KLSAgICBSZWZQdHI8VD4gcmVsZWFzZSgpIHsgUmVmUHRyPFQ+
IHRtcCA9IGFkb3B0UmVmKG1fcHRyKTsgbV9wdHIgPSBudWxscHRyOyByZXR1cm4gdG1wOyB9CiAg
ICAgUmVmPFQ+IHJlbGVhc2VOb25OdWxsKCkgeyBBU1NFUlQobV9wdHIpOyBSZWY8VD4gdG1wKGFk
b3B0UmVmKCptX3B0cikpOyBtX3B0ciA9IG51bGxwdHI7IHJldHVybiB0bXA7IH0KICAgICBSZWY8
Y29uc3QgVD4gcmVsZWFzZUNvbnN0Tm9uTnVsbCgpIHsgQVNTRVJUKG1fcHRyKTsgUmVmPGNvbnN0
IFQ+IHRtcChhZG9wdFJlZigqbV9wdHIpKTsgbV9wdHIgPSBudWxscHRyOyByZXR1cm4gdG1wOyB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9Xb3JrUXVldWVXaW4uY3BwIGIvU291
cmNlL1dURi93dGYvd2luL1dvcmtRdWV1ZVdpbi5jcHAKaW5kZXggZTgxNTQ3NzM3NDYuLmJiZjAx
MWFlMTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi93aW4vV29ya1F1ZXVlV2luLmNwcAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vV29ya1F1ZXVlV2luLmNwcApAQCAtMTg3LDcgKzE4Nyw3
IEBAIHZvaWQgV29ya1F1ZXVlOjpkaXNwYXRjaEFmdGVyKFNlY29uZHMgZHVyYXRpb24sIEZ1bmN0
aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikKICAgICB9CiAKICAgICAvLyBUaGUgdGltZXIgY2FsbGJh
Y2sgd2lsbCBoYW5kbGUgZGVzdHJveWluZyBjb250ZXh0LgotICAgIGNvbnRleHQucmVsZWFzZSgp
LmxlYWtSZWYoKTsKKyAgICBjb250ZXh0LmxlYWtSZWYoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFy
c2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3Bw
CmluZGV4IDkzMTI1ZmNlMTM4Li5iMzk1MDFjMDVjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKQEAgLTYzMCw3ICs2MzAsNyBAQCBwdWJs
aWM6CiAgICAgewogICAgICAgICBpZiAoIW1fcmVzdWx0LT5sZW5ndGgoKSkKICAgICAgICAgICAg
IHJldHVybiBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShD
U1NWYWx1ZU5vcm1hbCk7Ci0gICAgICAgIHJldHVybiBtX3Jlc3VsdC5yZWxlYXNlKCk7CisgICAg
ICAgIHJldHVybiBXVEZNb3ZlKG1fcmVzdWx0KTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC04MzIs
NyArODMyLDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgaWYgKCFtX3Jlc3VsdC0+bGVuZ3Ro
KCkpCiAgICAgICAgICAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJ
ZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb3JtYWwpOwotICAgICAgICByZXR1cm4gbV9yZXN1bHQu
cmVsZWFzZSgpOworICAgICAgICByZXR1cm4gV1RGTW92ZShtX3Jlc3VsdCk7CiAgICAgfQogCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJI
ZWxwZXJzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJI
ZWxwZXJzLmNwcAppbmRleCA0YTMyYTU4YmMwYi4uMzQ5OTk5YjllN2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VySGVscGVycy5jcHAK
QEAgLTkzLDcgKzkzLDcgQEAgcHVibGljOgogICAgICAgICBpZiAoIW1fY2FsY1ZhbHVlKQogICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIG1fc291cmNlUmFuZ2UgPSBtX3Jhbmdl
OwotICAgICAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVWYWx1ZSht
X2NhbGNWYWx1ZS5yZWxlYXNlKCkpOworICAgICAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5n
bGV0b24oKS5jcmVhdGVWYWx1ZShXVEZNb3ZlKG1fY2FsY1ZhbHVlKSk7CiAgICAgfQogICAgIFJl
ZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZU51bWJlcigpCiAgICAgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwCmluZGV4
IGUxYjEwNGNlMWRhLi41ZmQzOWJlN2JkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcApAQCAtNjgsNyArNjgsNyBAQCBSZWZQ
dHI8TUhUTUxBcmNoaXZlPiBNSFRNTFBhcnNlcjo6cGFyc2VBcmNoaXZlV2l0aEhlYWRlcihNSU1F
SGVhZGVyKiBoZWFkZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIFJl
ZlB0cjxNSFRNTEFyY2hpdmU+IGFyY2hpdmUgPSBNSFRNTEFyY2hpdmU6OmNyZWF0ZSgpOworICAg
IGF1dG8gYXJjaGl2ZSA9IE1IVE1MQXJjaGl2ZTo6Y3JlYXRlKCk7CiAgICAgaWYgKCFoZWFkZXIt
PmlzTXVsdGlwYXJ0KCkpIHsKICAgICAgICAgLy8gV2l0aCBJRSBhIHBhZ2Ugd2l0aCBubyByZXNv
dXJjZSBpcyBub3QgbXVsdGktcGFydC4KICAgICAgICAgYm9vbCBlbmRPZkFyY2hpdmVSZWFjaGVk
ID0gZmFsc2U7CkBAIC03Niw3ICs3Niw3IEBAIFJlZlB0cjxNSFRNTEFyY2hpdmU+IE1IVE1MUGFy
c2VyOjpwYXJzZUFyY2hpdmVXaXRoSGVhZGVyKE1JTUVIZWFkZXIqIGhlYWRlcikKICAgICAgICAg
aWYgKCFyZXNvdXJjZSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICBhcmNo
aXZlLT5zZXRNYWluUmVzb3VyY2UocmVzb3VyY2UucmVsZWFzZU5vbk51bGwoKSk7Ci0gICAgICAg
IHJldHVybiBhcmNoaXZlOworICAgICAgICByZXR1cm4gV1RGTW92ZShhcmNoaXZlKTsKICAgICB9
CiAKICAgICAvLyBTa2lwIHRoZSBtZXNzYWdlIGNvbnRlbnQgKGl0J3MgYSBnZW5lcmljIGJyb3dz
ZXIgc3BlY2lmaWMgbWVzc2FnZSkuCkBAIC0xMDAsNyArMTAwLDcgQEAgUmVmUHRyPE1IVE1MQXJj
aGl2ZT4gTUhUTUxQYXJzZXI6OnBhcnNlQXJjaGl2ZVdpdGhIZWFkZXIoTUlNRUhlYWRlciogaGVh
ZGVyKQogICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChlbmRPZlBhcnRSZWFjaGVkLCBlbmRPZlBh
cnRSZWFjaGVkKTsKICAgICAgICAgICAgIC8vIFRoZSB0b3AtZnJhbWUgaXMgdGhlIGZpcnN0IGZy
YW1lIGZvdW5kLCByZWdhcmRsZXNzIG9mIHRoZSBuZXN0aW5nIGxldmVsLgogICAgICAgICAgICAg
aWYgKHN1YmZyYW1lQXJjaGl2ZS0+bWFpblJlc291cmNlKCkpCi0gICAgICAgICAgICAgICAgYWRk
UmVzb3VyY2VUb0FyY2hpdmUoc3ViZnJhbWVBcmNoaXZlLT5tYWluUmVzb3VyY2UoKSwgYXJjaGl2
ZS5nZXQoKSk7CisgICAgICAgICAgICAgICAgYWRkUmVzb3VyY2VUb0FyY2hpdmUoc3ViZnJhbWVB
cmNoaXZlLT5tYWluUmVzb3VyY2UoKSwgYXJjaGl2ZS5wdHIoKSk7CiAgICAgICAgICAgICBhcmNo
aXZlLT5hZGRTdWJmcmFtZUFyY2hpdmUoc3ViZnJhbWVBcmNoaXZlLnJlbGVhc2VOb25OdWxsKCkp
OwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KQEAgLTExMCwxMCArMTEwLDEwIEBA
IFJlZlB0cjxNSFRNTEFyY2hpdmU+IE1IVE1MUGFyc2VyOjpwYXJzZUFyY2hpdmVXaXRoSGVhZGVy
KE1JTUVIZWFkZXIqIGhlYWRlcikKICAgICAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIHBh
cnNlIE1IVE1MIHBhcnQuIik7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAg
fQotICAgICAgICBhZGRSZXNvdXJjZVRvQXJjaGl2ZShyZXNvdXJjZS5nZXQoKSwgYXJjaGl2ZS5n
ZXQoKSk7CisgICAgICAgIGFkZFJlc291cmNlVG9BcmNoaXZlKHJlc291cmNlLmdldCgpLCBhcmNo
aXZlLnB0cigpKTsKICAgICB9CiAKLSAgICByZXR1cm4gYXJjaGl2ZS5yZWxlYXNlKCk7CisgICAg
cmV0dXJuIFdURk1vdmUoYXJjaGl2ZSk7CiB9CiAKIHZvaWQgTUhUTUxQYXJzZXI6OmFkZFJlc291
cmNlVG9BcmNoaXZlKEFyY2hpdmVSZXNvdXJjZSogcmVzb3VyY2UsIE1IVE1MQXJjaGl2ZSogYXJj
aGl2ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRp
b0ZpbGVSZWFkZXJJT1MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1
ZGlvRmlsZVJlYWRlcklPUy5jcHAKaW5kZXggNTAzZWY0MmQwMjguLjhhN2Y3N2ZhNDBlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9GaWxlUmVhZGVy
SU9TLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9GaWxl
UmVhZGVySU9TLmNwcApAQCAtMTc3LDcgKzE3Nyw3IEBAIFJlZlB0cjxBdWRpb0J1cz4gQXVkaW9G
aWxlUmVhZGVyOjpjcmVhdGVCdXMoZmxvYXQgc2FtcGxlUmF0ZSwgYm9vbCBtaXhUb01vbm8pCiAg
ICAgc2l6ZV90IGJ1c0NoYW5uZWxDb3VudCA9IG1peFRvTW9ubyA/IDEgOiBudW1iZXJPZkNoYW5u
ZWxzOwogCiAgICAgLy8gQ3JlYXRlIEF1ZGlvQnVzIHdoZXJlIHdlJ2xsIHB1dCB0aGUgUENNIGF1
ZGlvIGRhdGEKLSAgICBSZWZQdHI8QXVkaW9CdXM+IGF1ZGlvQnVzID0gQXVkaW9CdXM6OmNyZWF0
ZShidXNDaGFubmVsQ291bnQsIG51bWJlck9mRnJhbWVzKTsKKyAgICBhdXRvIGF1ZGlvQnVzID0g
QXVkaW9CdXM6OmNyZWF0ZShidXNDaGFubmVsQ291bnQsIG51bWJlck9mRnJhbWVzKTsKICAgICBh
dWRpb0J1cy0+c2V0U2FtcGxlUmF0ZShtX2NsaWVudERhdGFGb3JtYXQubVNhbXBsZVJhdGUpOyAv
LyBzYXZlIGZvciBsYXRlcgogCiAgICAgLy8gT25seSBhbGxvY2F0ZWQgaW4gdGhlIG1peFRvTW9u
byBjYXNlOyBkZWFsbG9jYXRlZCBvbiBkZXN0cnVjdGlvbi4KQEAgLTIyOCw3ICsyMjgsNyBAQCBS
ZWZQdHI8QXVkaW9CdXM+IEF1ZGlvRmlsZVJlYWRlcjo6Y3JlYXRlQnVzKGZsb2F0IHNhbXBsZVJh
dGUsIGJvb2wgbWl4VG9Nb25vKQogCiAgICAgZGVzdHJveUF1ZGlvQnVmZmVyTGlzdChidWZmZXJM
aXN0KTsKIAotICAgIHJldHVybiBhdWRpb0J1cy5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGF1ZGlv
QnVzOwogfQogCiBSZWZQdHI8QXVkaW9CdXM+IGNyZWF0ZUJ1c0Zyb21BdWRpb0ZpbGUoY29uc3Qg
Y2hhciogZmlsZVBhdGgsIGJvb2wgbWl4VG9Nb25vLCBmbG9hdCBzYW1wbGVSYXRlKQpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUmVmUHRyLmNwcCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL1JlZlB0ci5jcHAKaW5kZXggMTcyZWZhNzYyN2MuLjk1Zjk3
ZDhkYTc5IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SZWZQdHIu
Y3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1JlZlB0ci5jcHAKQEAgLTEw
OCwxNCArMTA4LDYgQEAgVEVTVChXVEZfUmVmUHRyLCBCYXNpYykKICAgICAgICAgQVNTRVJUX0VR
KG51bGxwdHIsIHB0ci5nZXQoKSk7CiAgICAgfQogICAgIEFTU0VSVF9TVFJFUSgicmVmKGEpIGRl
cmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKLQotICAgIHsKLSAgICAgICAgUmVmUHRy
PFJlZkxvZ2dlcj4gcHRyKCZhKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIuZ2V0KCkpOwot
ICAgICAgICBwdHIucmVsZWFzZSgpOwotICAgICAgICBBU1NFUlRfRVEobnVsbHB0ciwgcHRyLmdl
dCgpKTsKLSAgICB9Ci0gICAgQVNTRVJUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxv
Z1N0cigpLmNfc3RyKCkpOwogfQogCiBURVNUKFdURl9SZWZQdHIsIEFzc2lnblBhc3NSZWZUb1Jl
ZlB0cikKQEAgLTEyNSw4ICsxMTcsNiBAQCBURVNUKFdURl9SZWZQdHIsIEFzc2lnblBhc3NSZWZU
b1JlZlB0cikKICAgICAgICAgUmVmPFJlZkxvZ2dlcj4gcGFzc1JlZihhKTsKICAgICAgICAgUmVm
UHRyPFJlZkxvZ2dlcj4gcHRyID0gV1RGTW92ZShwYXNzUmVmKTsKICAgICAgICAgQVNTRVJUX0VR
KCZhLCBwdHIuZ2V0KCkpOwotICAgICAgICBwdHIucmVsZWFzZSgpOwotICAgICAgICBBU1NFUlRf
RVEobnVsbHB0ciwgcHRyLmdldCgpKTsKICAgICB9CiAgICAgQVNTRVJUX1NUUkVRKCJyZWYoYSkg
ZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogfQpAQCAtMzM2LDcgKzMyNiw3IEBA
IFRFU1QoV1RGX1JlZlB0ciwgUmVsZWFzZSkKIAogICAgIHsKICAgICAgICAgUmVmUHRyPFJlZkxv
Z2dlcj4gcDEgPSAmYTsKLSAgICAgICAgUmVmUHRyPFJlZkxvZ2dlcj4gcDIgPSBwMS5yZWxlYXNl
KCk7CisgICAgICAgIFJlZlB0cjxSZWZMb2dnZXI+IHAyID0gV1RGTW92ZShwMSk7CiAgICAgICAg
IEFTU0VSVF9FUShudWxscHRyLCBwMS5nZXQoKSk7CiAgICAgICAgIEFTU0VSVF9FUSgmYSwgcDIu
Z2V0KCkpOwogICAgIH0KQEAgLTM0NCw3ICszMzQsNyBAQCBURVNUKFdURl9SZWZQdHIsIFJlbGVh
c2UpCiAKICAgICB7CiAgICAgICAgIFJlZlB0cjxSZWZMb2dnZXI+IHAxID0gJmE7Ci0gICAgICAg
IFJlZlB0cjxSZWZMb2dnZXI+IHAyKHAxLnJlbGVhc2UoKSk7CisgICAgICAgIFJlZlB0cjxSZWZM
b2dnZXI+IHAyKFdURk1vdmUocDEpKTsKICAgICAgICAgQVNTRVJUX0VRKG51bGxwdHIsIHAxLmdl
dCgpKTsKICAgICAgICAgQVNTRVJUX0VRKCZhLCBwMi5nZXQoKSk7CiAgICAgfQpAQCAtMzUyLDcg
KzM0Miw3IEBAIFRFU1QoV1RGX1JlZlB0ciwgUmVsZWFzZSkKIAogICAgIHsKICAgICAgICAgUmVm
UHRyPERlcml2ZWRSZWZMb2dnZXI+IHAxID0gJmE7Ci0gICAgICAgIFJlZlB0cjxSZWZMb2dnZXI+
IHAyID0gcDEucmVsZWFzZSgpOworICAgICAgICBSZWZQdHI8UmVmTG9nZ2VyPiBwMiA9IFdURk1v
dmUocDEpOwogICAgICAgICBBU1NFUlRfRVEobnVsbHB0ciwgcDEuZ2V0KCkpOwogICAgICAgICBB
U1NFUlRfRVEoJmEsIHAyLmdldCgpKTsKICAgICB9CkBAIC0zNjQsNyArMzU0LDcgQEAgVEVTVChX
VEZfUmVmUHRyLCBSZWxlYXNlKQogICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLmdldCgpKTsKICAg
ICAgICAgQVNTRVJUX0VRKCZiLCBwMi5nZXQoKSk7CiAgICAgICAgIGxvZygpIDw8ICJ8ICI7Ci0g
ICAgICAgIHAxID0gcDIucmVsZWFzZSgpOworICAgICAgICBwMSA9IFdURk1vdmUocDIpOwogICAg
ICAgICBBU1NFUlRfRVEoJmIsIHAxLmdldCgpKTsKICAgICAgICAgQVNTRVJUX0VRKG51bGxwdHIs
IHAyLmdldCgpKTsKICAgICAgICAgbG9nKCkgPDwgInwgIjsKQEAgLTM3Nyw3ICszNjcsNyBAQCBU
RVNUKFdURl9SZWZQdHIsIFJlbGVhc2UpCiAgICAgICAgIEFTU0VSVF9FUSgmYSwgcDEuZ2V0KCkp
OwogICAgICAgICBBU1NFUlRfRVEoJmMsIHAyLmdldCgpKTsKICAgICAgICAgbG9nKCkgPDwgInwg
IjsKLSAgICAgICAgcDEgPSBwMi5yZWxlYXNlKCk7CisgICAgICAgIHAxID0gV1RGTW92ZShwMik7
CiAgICAgICAgIEFTU0VSVF9FUSgmYywgcDEuZ2V0KCkpOwogICAgICAgICBBU1NFUlRfRVEobnVs
bHB0ciwgcDIuZ2V0KCkpOwogICAgICAgICBsb2coKSA8PCAifCAiOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>310031</attachid>
            <date>2017-05-13 14:10:42 -0700</date>
            <delta_ts>2017-05-13 14:16:54 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>172074_release_wip.patch</filename>
            <type>text/plain</type>
            <size>10948</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1JlZlB0ci5oIGIvU291cmNlL1dURi93dGYvUmVm
UHRyLmgKaW5kZXggMjc3ZTY3NWRiM2MuLjc4MjEyOWY4Zjk1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9SZWZQdHIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9SZWZQdHIuaApAQCAtNjMsOCAr
NjMsNiBAQCBwdWJsaWM6CiAKICAgICBUKiBnZXQoKSBjb25zdCB7IHJldHVybiBtX3B0cjsgfQog
Ci0gICAgLy8gRklYTUU6IFJlbW92ZSByZWxlYXNlKCkgYW5kIGNoYW5nZSBhbGwgY2FsbCBzaXRl
cyB0byBjYWxsIFdURk1vdmUoKS4KLSAgICBSZWZQdHI8VD4gcmVsZWFzZSgpIHsgUmVmUHRyPFQ+
IHRtcCA9IGFkb3B0UmVmKG1fcHRyKTsgbV9wdHIgPSBudWxscHRyOyByZXR1cm4gdG1wOyB9CiAg
ICAgUmVmPFQ+IHJlbGVhc2VOb25OdWxsKCkgeyBBU1NFUlQobV9wdHIpOyBSZWY8VD4gdG1wKGFk
b3B0UmVmKCptX3B0cikpOyBtX3B0ciA9IG51bGxwdHI7IHJldHVybiB0bXA7IH0KICAgICBSZWY8
Y29uc3QgVD4gcmVsZWFzZUNvbnN0Tm9uTnVsbCgpIHsgQVNTRVJUKG1fcHRyKTsgUmVmPGNvbnN0
IFQ+IHRtcChhZG9wdFJlZigqbV9wdHIpKTsgbV9wdHIgPSBudWxscHRyOyByZXR1cm4gdG1wOyB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9Xb3JrUXVldWVXaW4uY3BwIGIvU291
cmNlL1dURi93dGYvd2luL1dvcmtRdWV1ZVdpbi5jcHAKaW5kZXggZTgxNTQ3NzM3NDYuLmJiZjAx
MWFlMTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi93aW4vV29ya1F1ZXVlV2luLmNwcAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vV29ya1F1ZXVlV2luLmNwcApAQCAtMTg3LDcgKzE4Nyw3
IEBAIHZvaWQgV29ya1F1ZXVlOjpkaXNwYXRjaEFmdGVyKFNlY29uZHMgZHVyYXRpb24sIEZ1bmN0
aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikKICAgICB9CiAKICAgICAvLyBUaGUgdGltZXIgY2FsbGJh
Y2sgd2lsbCBoYW5kbGUgZGVzdHJveWluZyBjb250ZXh0LgotICAgIGNvbnRleHQucmVsZWFzZSgp
LmxlYWtSZWYoKTsKKyAgICBjb250ZXh0LmxlYWtSZWYoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFy
c2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3Bw
CmluZGV4IDkzMTI1ZmNlMTM4Li5iMzk1MDFjMDVjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKQEAgLTYzMCw3ICs2MzAsNyBAQCBwdWJs
aWM6CiAgICAgewogICAgICAgICBpZiAoIW1fcmVzdWx0LT5sZW5ndGgoKSkKICAgICAgICAgICAg
IHJldHVybiBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShD
U1NWYWx1ZU5vcm1hbCk7Ci0gICAgICAgIHJldHVybiBtX3Jlc3VsdC5yZWxlYXNlKCk7CisgICAg
ICAgIHJldHVybiBXVEZNb3ZlKG1fcmVzdWx0KTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC04MzIs
NyArODMyLDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgaWYgKCFtX3Jlc3VsdC0+bGVuZ3Ro
KCkpCiAgICAgICAgICAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJ
ZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb3JtYWwpOwotICAgICAgICByZXR1cm4gbV9yZXN1bHQu
cmVsZWFzZSgpOworICAgICAgICByZXR1cm4gV1RGTW92ZShtX3Jlc3VsdCk7CiAgICAgfQogCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJI
ZWxwZXJzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJI
ZWxwZXJzLmNwcAppbmRleCA0YTMyYTU4YmMwYi4uMzQ5OTk5YjllN2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VySGVscGVycy5jcHAK
QEAgLTkzLDcgKzkzLDcgQEAgcHVibGljOgogICAgICAgICBpZiAoIW1fY2FsY1ZhbHVlKQogICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIG1fc291cmNlUmFuZ2UgPSBtX3Jhbmdl
OwotICAgICAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVWYWx1ZSht
X2NhbGNWYWx1ZS5yZWxlYXNlKCkpOworICAgICAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5n
bGV0b24oKS5jcmVhdGVWYWx1ZShXVEZNb3ZlKG1fY2FsY1ZhbHVlKSk7CiAgICAgfQogICAgIFJl
ZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZU51bWJlcigpCiAgICAgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAKaW5k
ZXggMmNhNjdlMjdiZTguLjYxYzYyNmIyOTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAKQEAgLTEzMCw3ICsxMzAsNyBA
QCBSZWZQdHI8TUhUTUxBcmNoaXZlPiBNSFRNTEFyY2hpdmU6OmNyZWF0ZShjb25zdCBVUkwmIHVy
bCwgU2hhcmVkQnVmZmVyJiBkYXRhKQogICAgIHJldHVybiBtYWluQXJjaGl2ZTsKIH0KIAotUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gTUhUTUxBcmNoaXZlOjpnZW5lcmF0ZU1IVE1MRGF0YShQYWdlKiBw
YWdlKQorUmVmPFNoYXJlZEJ1ZmZlcj4gTUhUTUxBcmNoaXZlOjpnZW5lcmF0ZU1IVE1MRGF0YShQ
YWdlKiBwYWdlKQogewogICAgIFZlY3RvcjxQYWdlU2VyaWFsaXplcjo6UmVzb3VyY2U+IHJlc291
cmNlczsKICAgICBQYWdlU2VyaWFsaXplciBwYWdlU2VyaWFsaXplcihyZXNvdXJjZXMpOwpAQCAt
MTYyLDcgKzE2Miw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IE1IVE1MQXJjaGl2ZTo6Z2VuZXJh
dGVNSFRNTERhdGEoUGFnZSogcGFnZSkKICAgICAvLyBXZSB1c2UgdXRmOCgpIGJlbG93IGluc3Rl
YWQgb2YgYXNjaWkoKSBhcyBhc2NpaSgpIHJlcGxhY2VzIENSTEZzIHdpdGggPz8gKHdlIHN0aWxs
IG9ubHkgaGF2ZSBwdXQgQVNDSUkgY2hhcmFjdGVycyBpbiBpdCkuCiAgICAgQVNTRVJUKHN0cmlu
Z0J1aWxkZXIudG9TdHJpbmcoKS5jb250YWluc09ubHlBU0NJSSgpKTsKICAgICBDU3RyaW5nIGFz
Y2lpU3RyaW5nID0gc3RyaW5nQnVpbGRlci50b1N0cmluZygpLnV0ZjgoKTsKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBtaHRtbERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIGF1
dG8gbWh0bWxEYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBtaHRtbERhdGEtPmFw
cGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lpU3RyaW5nLmxlbmd0aCgpKTsKIAogICAgIGZv
ciAoYXV0byYgcmVzb3VyY2UgOiByZXNvdXJjZXMpIHsKQEAgLTIxMyw3ICsyMTMsNyBAQCBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBNSFRNTEFyY2hpdmU6OmdlbmVyYXRlTUhUTUxEYXRhKFBhZ2UqIHBh
Z2UpCiAgICAgYXNjaWlTdHJpbmcgPSBtYWtlU3RyaW5nKCItLSIsIGJvdW5kYXJ5LCAiLS1cclxu
IikudXRmOCgpOwogICAgIG1odG1sRGF0YS0+YXBwZW5kKGFzY2lpU3RyaW5nLmRhdGEoKSwgYXNj
aWlTdHJpbmcubGVuZ3RoKCkpOwogCi0gICAgcmV0dXJuIG1odG1sRGF0YS5yZWxlYXNlKCk7Cisg
ICAgcmV0dXJuIG1odG1sRGF0YTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuaAppbmRleCA4NTI0NjU5YWFiMi4uM2QyZGI3
Yzk2MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01I
VE1MQXJjaGl2ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01I
VE1MQXJjaGl2ZS5oCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPE1I
VE1MQXJjaGl2ZT4gY3JlYXRlKCk7CiAgICAgc3RhdGljIFJlZlB0cjxNSFRNTEFyY2hpdmU+IGNy
ZWF0ZShjb25zdCBVUkwmLCBTaGFyZWRCdWZmZXImKTsKIAotICAgIHN0YXRpYyBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBnZW5lcmF0ZU1IVE1MRGF0YShQYWdlKik7CisgICAgc3RhdGljIFJlZjxTaGFy
ZWRCdWZmZXI+IGdlbmVyYXRlTUhUTUxEYXRhKFBhZ2UqKTsKIAogICAgIHZpcnR1YWwgfk1IVE1M
QXJjaGl2ZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9t
aHRtbC9NSFRNTFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRt
bC9NSFRNTFBhcnNlci5jcHAKaW5kZXggZTFiMTA0Y2UxZGEuLjVmZDM5YmU3YmQxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3Bw
CkBAIC02OCw3ICs2OCw3IEBAIFJlZlB0cjxNSFRNTEFyY2hpdmU+IE1IVE1MUGFyc2VyOjpwYXJz
ZUFyY2hpdmVXaXRoSGVhZGVyKE1JTUVIZWFkZXIqIGhlYWRlcikKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgfQogCi0gICAgUmVmUHRyPE1IVE1MQXJjaGl2ZT4gYXJjaGl2ZSA9IE1IVE1M
QXJjaGl2ZTo6Y3JlYXRlKCk7CisgICAgYXV0byBhcmNoaXZlID0gTUhUTUxBcmNoaXZlOjpjcmVh
dGUoKTsKICAgICBpZiAoIWhlYWRlci0+aXNNdWx0aXBhcnQoKSkgewogICAgICAgICAvLyBXaXRo
IElFIGEgcGFnZSB3aXRoIG5vIHJlc291cmNlIGlzIG5vdCBtdWx0aS1wYXJ0LgogICAgICAgICBi
b29sIGVuZE9mQXJjaGl2ZVJlYWNoZWQgPSBmYWxzZTsKQEAgLTc2LDcgKzc2LDcgQEAgUmVmUHRy
PE1IVE1MQXJjaGl2ZT4gTUhUTUxQYXJzZXI6OnBhcnNlQXJjaGl2ZVdpdGhIZWFkZXIoTUlNRUhl
YWRlciogaGVhZGVyKQogICAgICAgICBpZiAoIXJlc291cmNlKQogICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgICAgIGFyY2hpdmUtPnNldE1haW5SZXNvdXJjZShyZXNvdXJjZS5yZWxl
YXNlTm9uTnVsbCgpKTsKLSAgICAgICAgcmV0dXJuIGFyY2hpdmU7CisgICAgICAgIHJldHVybiBX
VEZNb3ZlKGFyY2hpdmUpOwogICAgIH0KIAogICAgIC8vIFNraXAgdGhlIG1lc3NhZ2UgY29udGVu
dCAoaXQncyBhIGdlbmVyaWMgYnJvd3NlciBzcGVjaWZpYyBtZXNzYWdlKS4KQEAgLTEwMCw3ICsx
MDAsNyBAQCBSZWZQdHI8TUhUTUxBcmNoaXZlPiBNSFRNTFBhcnNlcjo6cGFyc2VBcmNoaXZlV2l0
aEhlYWRlcihNSU1FSGVhZGVyKiBoZWFkZXIpCiAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGVu
ZE9mUGFydFJlYWNoZWQsIGVuZE9mUGFydFJlYWNoZWQpOwogICAgICAgICAgICAgLy8gVGhlIHRv
cC1mcmFtZSBpcyB0aGUgZmlyc3QgZnJhbWUgZm91bmQsIHJlZ2FyZGxlc3Mgb2YgdGhlIG5lc3Rp
bmcgbGV2ZWwuCiAgICAgICAgICAgICBpZiAoc3ViZnJhbWVBcmNoaXZlLT5tYWluUmVzb3VyY2Uo
KSkKLSAgICAgICAgICAgICAgICBhZGRSZXNvdXJjZVRvQXJjaGl2ZShzdWJmcmFtZUFyY2hpdmUt
Pm1haW5SZXNvdXJjZSgpLCBhcmNoaXZlLmdldCgpKTsKKyAgICAgICAgICAgICAgICBhZGRSZXNv
dXJjZVRvQXJjaGl2ZShzdWJmcmFtZUFyY2hpdmUtPm1haW5SZXNvdXJjZSgpLCBhcmNoaXZlLnB0
cigpKTsKICAgICAgICAgICAgIGFyY2hpdmUtPmFkZFN1YmZyYW1lQXJjaGl2ZShzdWJmcmFtZUFy
Y2hpdmUucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
fQpAQCAtMTEwLDEwICsxMTAsMTAgQEAgUmVmUHRyPE1IVE1MQXJjaGl2ZT4gTUhUTUxQYXJzZXI6
OnBhcnNlQXJjaGl2ZVdpdGhIZWFkZXIoTUlNRUhlYWRlciogaGVhZGVyKQogICAgICAgICAgICAg
TE9HX0VSUk9SKCJGYWlsZWQgdG8gcGFyc2UgTUhUTUwgcGFydC4iKTsKICAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgICAgICB9Ci0gICAgICAgIGFkZFJlc291cmNlVG9BcmNoaXZlKHJl
c291cmNlLmdldCgpLCBhcmNoaXZlLmdldCgpKTsKKyAgICAgICAgYWRkUmVzb3VyY2VUb0FyY2hp
dmUocmVzb3VyY2UuZ2V0KCksIGFyY2hpdmUucHRyKCkpOwogICAgIH0KIAotICAgIHJldHVybiBh
cmNoaXZlLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gV1RGTW92ZShhcmNoaXZlKTsKIH0KIAogdm9p
ZCBNSFRNTFBhcnNlcjo6YWRkUmVzb3VyY2VUb0FyY2hpdmUoQXJjaGl2ZVJlc291cmNlKiByZXNv
dXJjZSwgTUhUTUxBcmNoaXZlKiBhcmNoaXZlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvRmlsZVJlYWRlcklPUy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9GaWxlUmVhZGVySU9TLmNwcAppbmRleCA1MDNlZjQy
ZDAyOC4uOGE3Zjc3ZmE0MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL2lvcy9BdWRpb0ZpbGVSZWFkZXJJT1MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL2lvcy9BdWRpb0ZpbGVSZWFkZXJJT1MuY3BwCkBAIC0xNzcsNyArMTc3LDcgQEAg
UmVmUHRyPEF1ZGlvQnVzPiBBdWRpb0ZpbGVSZWFkZXI6OmNyZWF0ZUJ1cyhmbG9hdCBzYW1wbGVS
YXRlLCBib29sIG1peFRvTW9ubykKICAgICBzaXplX3QgYnVzQ2hhbm5lbENvdW50ID0gbWl4VG9N
b25vID8gMSA6IG51bWJlck9mQ2hhbm5lbHM7CiAKICAgICAvLyBDcmVhdGUgQXVkaW9CdXMgd2hl
cmUgd2UnbGwgcHV0IHRoZSBQQ00gYXVkaW8gZGF0YQotICAgIFJlZlB0cjxBdWRpb0J1cz4gYXVk
aW9CdXMgPSBBdWRpb0J1czo6Y3JlYXRlKGJ1c0NoYW5uZWxDb3VudCwgbnVtYmVyT2ZGcmFtZXMp
OworICAgIGF1dG8gYXVkaW9CdXMgPSBBdWRpb0J1czo6Y3JlYXRlKGJ1c0NoYW5uZWxDb3VudCwg
bnVtYmVyT2ZGcmFtZXMpOwogICAgIGF1ZGlvQnVzLT5zZXRTYW1wbGVSYXRlKG1fY2xpZW50RGF0
YUZvcm1hdC5tU2FtcGxlUmF0ZSk7IC8vIHNhdmUgZm9yIGxhdGVyCiAKICAgICAvLyBPbmx5IGFs
bG9jYXRlZCBpbiB0aGUgbWl4VG9Nb25vIGNhc2U7IGRlYWxsb2NhdGVkIG9uIGRlc3RydWN0aW9u
LgpAQCAtMjI4LDcgKzIyOCw3IEBAIFJlZlB0cjxBdWRpb0J1cz4gQXVkaW9GaWxlUmVhZGVyOjpj
cmVhdGVCdXMoZmxvYXQgc2FtcGxlUmF0ZSwgYm9vbCBtaXhUb01vbm8pCiAKICAgICBkZXN0cm95
QXVkaW9CdWZmZXJMaXN0KGJ1ZmZlckxpc3QpOwogCi0gICAgcmV0dXJuIGF1ZGlvQnVzLnJlbGVh
c2UoKTsKKyAgICByZXR1cm4gYXVkaW9CdXM7CiB9CiAKIFJlZlB0cjxBdWRpb0J1cz4gY3JlYXRl
QnVzRnJvbUF1ZGlvRmlsZShjb25zdCBjaGFyKiBmaWxlUGF0aCwgYm9vbCBtaXhUb01vbm8sIGZs
b2F0IHNhbXBsZVJhdGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKaW5kZXggNWM2ZDk5MGQyMzQuLjEwYWIyMWJkYzIxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0yODcwLDEyICsyODcwLDEx
IEBAIHZvaWQgV2ViUGFnZTo6Z2V0Q29udGVudHNBc1N0cmluZyh1aW50NjRfdCBjYWxsYmFja0lE
KQogI2lmIEVOQUJMRShNSFRNTCkKIHZvaWQgV2ViUGFnZTo6Z2V0Q29udGVudHNBc01IVE1MRGF0
YSh1aW50NjRfdCBjYWxsYmFja0lEKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZl
ciA9IE1IVE1MQXJjaGl2ZTo6Z2VuZXJhdGVNSFRNTERhdGEobV9wYWdlLmdldCgpKTsKKyAgICBh
dXRvIGJ1ZmZlciA9IE1IVE1MQXJjaGl2ZTo6Z2VuZXJhdGVNSFRNTERhdGEobV9wYWdlLmdldCgp
KTsKIAogICAgIC8vIEZJWE1FOiBVc2UgU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS4KICAgICBJ
UEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZTsKLSAgICBpZiAoYnVmZmVyKQotICAgICAg
ICBkYXRhUmVmZXJlbmNlID0gSVBDOjpEYXRhUmVmZXJlbmNlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdWludDhfdCo+KGJ1ZmZlci0+ZGF0YSgpKSwgYnVmZmVyLT5zaXplKCkpOworICAgIGRhdGFS
ZWZlcmVuY2UgPSBJUEM6OkRhdGFSZWZlcmVuY2UocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50
OF90Kj4oYnVmZmVyLT5kYXRhKCkpLCBidWZmZXItPnNpemUoKSk7CiAgICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpEYXRhQ2FsbGJhY2soZGF0YVJlZmVyZW5jZSwgY2FsbGJhY2tJRCkp
OwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9S
ZWZQdHIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUmVmUHRyLmNwcAppbmRl
eCAxNzJlZmE3NjI3Yy4uOTVmOTdkOGRhNzkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL1JlZlB0ci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvUmVmUHRyLmNwcApAQCAtMTA4LDE0ICsxMDgsNiBAQCBURVNUKFdURl9SZWZQdHIsIEJhc2lj
KQogICAgICAgICBBU1NFUlRfRVEobnVsbHB0ciwgcHRyLmdldCgpKTsKICAgICB9CiAgICAgQVNT
RVJUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwotCi0g
ICAgewotICAgICAgICBSZWZQdHI8UmVmTG9nZ2VyPiBwdHIoJmEpOwotICAgICAgICBBU1NFUlRf
RVEoJmEsIHB0ci5nZXQoKSk7Ci0gICAgICAgIHB0ci5yZWxlYXNlKCk7Ci0gICAgICAgIEFTU0VS
VF9FUShudWxscHRyLCBwdHIuZ2V0KCkpOwotICAgIH0KLSAgICBBU1NFUlRfU1RSRVEoInJlZihh
KSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiB9CiAKIFRFU1QoV1RGX1JlZlB0
ciwgQXNzaWduUGFzc1JlZlRvUmVmUHRyKQpAQCAtMTI1LDggKzExNyw2IEBAIFRFU1QoV1RGX1Jl
ZlB0ciwgQXNzaWduUGFzc1JlZlRvUmVmUHRyKQogICAgICAgICBSZWY8UmVmTG9nZ2VyPiBwYXNz
UmVmKGEpOwogICAgICAgICBSZWZQdHI8UmVmTG9nZ2VyPiBwdHIgPSBXVEZNb3ZlKHBhc3NSZWYp
OwogICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci5nZXQoKSk7Ci0gICAgICAgIHB0ci5yZWxlYXNl
KCk7Ci0gICAgICAgIEFTU0VSVF9FUShudWxscHRyLCBwdHIuZ2V0KCkpOwogICAgIH0KICAgICBB
U1NFUlRfU1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiB9
CkBAIC0zMzYsNyArMzI2LDcgQEAgVEVTVChXVEZfUmVmUHRyLCBSZWxlYXNlKQogCiAgICAgewog
ICAgICAgICBSZWZQdHI8UmVmTG9nZ2VyPiBwMSA9ICZhOwotICAgICAgICBSZWZQdHI8UmVmTG9n
Z2VyPiBwMiA9IHAxLnJlbGVhc2UoKTsKKyAgICAgICAgUmVmUHRyPFJlZkxvZ2dlcj4gcDIgPSBX
VEZNb3ZlKHAxKTsKICAgICAgICAgQVNTRVJUX0VRKG51bGxwdHIsIHAxLmdldCgpKTsKICAgICAg
ICAgQVNTRVJUX0VRKCZhLCBwMi5nZXQoKSk7CiAgICAgfQpAQCAtMzQ0LDcgKzMzNCw3IEBAIFRF
U1QoV1RGX1JlZlB0ciwgUmVsZWFzZSkKIAogICAgIHsKICAgICAgICAgUmVmUHRyPFJlZkxvZ2dl
cj4gcDEgPSAmYTsKLSAgICAgICAgUmVmUHRyPFJlZkxvZ2dlcj4gcDIocDEucmVsZWFzZSgpKTsK
KyAgICAgICAgUmVmUHRyPFJlZkxvZ2dlcj4gcDIoV1RGTW92ZShwMSkpOwogICAgICAgICBBU1NF
UlRfRVEobnVsbHB0ciwgcDEuZ2V0KCkpOwogICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLmdldCgp
KTsKICAgICB9CkBAIC0zNTIsNyArMzQyLDcgQEAgVEVTVChXVEZfUmVmUHRyLCBSZWxlYXNlKQog
CiAgICAgewogICAgICAgICBSZWZQdHI8RGVyaXZlZFJlZkxvZ2dlcj4gcDEgPSAmYTsKLSAgICAg
ICAgUmVmUHRyPFJlZkxvZ2dlcj4gcDIgPSBwMS5yZWxlYXNlKCk7CisgICAgICAgIFJlZlB0cjxS
ZWZMb2dnZXI+IHAyID0gV1RGTW92ZShwMSk7CiAgICAgICAgIEFTU0VSVF9FUShudWxscHRyLCBw
MS5nZXQoKSk7CiAgICAgICAgIEFTU0VSVF9FUSgmYSwgcDIuZ2V0KCkpOwogICAgIH0KQEAgLTM2
NCw3ICszNTQsNyBAQCBURVNUKFdURl9SZWZQdHIsIFJlbGVhc2UpCiAgICAgICAgIEFTU0VSVF9F
USgmYSwgcDEuZ2V0KCkpOwogICAgICAgICBBU1NFUlRfRVEoJmIsIHAyLmdldCgpKTsKICAgICAg
ICAgbG9nKCkgPDwgInwgIjsKLSAgICAgICAgcDEgPSBwMi5yZWxlYXNlKCk7CisgICAgICAgIHAx
ID0gV1RGTW92ZShwMik7CiAgICAgICAgIEFTU0VSVF9FUSgmYiwgcDEuZ2V0KCkpOwogICAgICAg
ICBBU1NFUlRfRVEobnVsbHB0ciwgcDIuZ2V0KCkpOwogICAgICAgICBsb2coKSA8PCAifCAiOwpA
QCAtMzc3LDcgKzM2Nyw3IEBAIFRFU1QoV1RGX1JlZlB0ciwgUmVsZWFzZSkKICAgICAgICAgQVNT
RVJUX0VRKCZhLCBwMS5nZXQoKSk7CiAgICAgICAgIEFTU0VSVF9FUSgmYywgcDIuZ2V0KCkpOwog
ICAgICAgICBsb2coKSA8PCAifCAiOwotICAgICAgICBwMSA9IHAyLnJlbGVhc2UoKTsKKyAgICAg
ICAgcDEgPSBXVEZNb3ZlKHAyKTsKICAgICAgICAgQVNTRVJUX0VRKCZjLCBwMS5nZXQoKSk7CiAg
ICAgICAgIEFTU0VSVF9FUShudWxscHRyLCBwMi5nZXQoKSk7CiAgICAgICAgIGxvZygpIDw8ICJ8
ICI7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>310032</attachid>
            <date>2017-05-13 14:16:54 -0700</date>
            <delta_ts>2017-05-13 14:22:16 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>172074_release_wip.patch</filename>
            <type>text/plain</type>
            <size>12059</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1JlZlB0ci5oIGIvU291cmNlL1dURi93dGYvUmVm
UHRyLmgKaW5kZXggMjc3ZTY3NWRiM2MuLjc4MjEyOWY4Zjk1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9SZWZQdHIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9SZWZQdHIuaApAQCAtNjMsOCAr
NjMsNiBAQCBwdWJsaWM6CiAKICAgICBUKiBnZXQoKSBjb25zdCB7IHJldHVybiBtX3B0cjsgfQog
Ci0gICAgLy8gRklYTUU6IFJlbW92ZSByZWxlYXNlKCkgYW5kIGNoYW5nZSBhbGwgY2FsbCBzaXRl
cyB0byBjYWxsIFdURk1vdmUoKS4KLSAgICBSZWZQdHI8VD4gcmVsZWFzZSgpIHsgUmVmUHRyPFQ+
IHRtcCA9IGFkb3B0UmVmKG1fcHRyKTsgbV9wdHIgPSBudWxscHRyOyByZXR1cm4gdG1wOyB9CiAg
ICAgUmVmPFQ+IHJlbGVhc2VOb25OdWxsKCkgeyBBU1NFUlQobV9wdHIpOyBSZWY8VD4gdG1wKGFk
b3B0UmVmKCptX3B0cikpOyBtX3B0ciA9IG51bGxwdHI7IHJldHVybiB0bXA7IH0KICAgICBSZWY8
Y29uc3QgVD4gcmVsZWFzZUNvbnN0Tm9uTnVsbCgpIHsgQVNTRVJUKG1fcHRyKTsgUmVmPGNvbnN0
IFQ+IHRtcChhZG9wdFJlZigqbV9wdHIpKTsgbV9wdHIgPSBudWxscHRyOyByZXR1cm4gdG1wOyB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9Xb3JrUXVldWVXaW4uY3BwIGIvU291
cmNlL1dURi93dGYvd2luL1dvcmtRdWV1ZVdpbi5jcHAKaW5kZXggZTgxNTQ3NzM3NDYuLmJiZjAx
MWFlMTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi93aW4vV29ya1F1ZXVlV2luLmNwcAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vV29ya1F1ZXVlV2luLmNwcApAQCAtMTg3LDcgKzE4Nyw3
IEBAIHZvaWQgV29ya1F1ZXVlOjpkaXNwYXRjaEFmdGVyKFNlY29uZHMgZHVyYXRpb24sIEZ1bmN0
aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikKICAgICB9CiAKICAgICAvLyBUaGUgdGltZXIgY2FsbGJh
Y2sgd2lsbCBoYW5kbGUgZGVzdHJveWluZyBjb250ZXh0LgotICAgIGNvbnRleHQucmVsZWFzZSgp
LmxlYWtSZWYoKTsKKyAgICBjb250ZXh0LmxlYWtSZWYoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFy
c2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3Bw
CmluZGV4IDkzMTI1ZmNlMTM4Li5iMzk1MDFjMDVjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKQEAgLTYzMCw3ICs2MzAsNyBAQCBwdWJs
aWM6CiAgICAgewogICAgICAgICBpZiAoIW1fcmVzdWx0LT5sZW5ndGgoKSkKICAgICAgICAgICAg
IHJldHVybiBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShD
U1NWYWx1ZU5vcm1hbCk7Ci0gICAgICAgIHJldHVybiBtX3Jlc3VsdC5yZWxlYXNlKCk7CisgICAg
ICAgIHJldHVybiBXVEZNb3ZlKG1fcmVzdWx0KTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC04MzIs
NyArODMyLDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgaWYgKCFtX3Jlc3VsdC0+bGVuZ3Ro
KCkpCiAgICAgICAgICAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJ
ZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb3JtYWwpOwotICAgICAgICByZXR1cm4gbV9yZXN1bHQu
cmVsZWFzZSgpOworICAgICAgICByZXR1cm4gV1RGTW92ZShtX3Jlc3VsdCk7CiAgICAgfQogCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJI
ZWxwZXJzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJI
ZWxwZXJzLmNwcAppbmRleCA0YTMyYTU4YmMwYi4uMzQ5OTk5YjllN2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VySGVscGVycy5jcHAK
QEAgLTkzLDcgKzkzLDcgQEAgcHVibGljOgogICAgICAgICBpZiAoIW1fY2FsY1ZhbHVlKQogICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIG1fc291cmNlUmFuZ2UgPSBtX3Jhbmdl
OwotICAgICAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVWYWx1ZSht
X2NhbGNWYWx1ZS5yZWxlYXNlKCkpOworICAgICAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5n
bGV0b24oKS5jcmVhdGVWYWx1ZShXVEZNb3ZlKG1fY2FsY1ZhbHVlKSk7CiAgICAgfQogICAgIFJl
ZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZU51bWJlcigpCiAgICAgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAKaW5k
ZXggMmNhNjdlMjdiZTguLjYxYzYyNmIyOTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAKQEAgLTEzMCw3ICsxMzAsNyBA
QCBSZWZQdHI8TUhUTUxBcmNoaXZlPiBNSFRNTEFyY2hpdmU6OmNyZWF0ZShjb25zdCBVUkwmIHVy
bCwgU2hhcmVkQnVmZmVyJiBkYXRhKQogICAgIHJldHVybiBtYWluQXJjaGl2ZTsKIH0KIAotUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gTUhUTUxBcmNoaXZlOjpnZW5lcmF0ZU1IVE1MRGF0YShQYWdlKiBw
YWdlKQorUmVmPFNoYXJlZEJ1ZmZlcj4gTUhUTUxBcmNoaXZlOjpnZW5lcmF0ZU1IVE1MRGF0YShQ
YWdlKiBwYWdlKQogewogICAgIFZlY3RvcjxQYWdlU2VyaWFsaXplcjo6UmVzb3VyY2U+IHJlc291
cmNlczsKICAgICBQYWdlU2VyaWFsaXplciBwYWdlU2VyaWFsaXplcihyZXNvdXJjZXMpOwpAQCAt
MTYyLDcgKzE2Miw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IE1IVE1MQXJjaGl2ZTo6Z2VuZXJh
dGVNSFRNTERhdGEoUGFnZSogcGFnZSkKICAgICAvLyBXZSB1c2UgdXRmOCgpIGJlbG93IGluc3Rl
YWQgb2YgYXNjaWkoKSBhcyBhc2NpaSgpIHJlcGxhY2VzIENSTEZzIHdpdGggPz8gKHdlIHN0aWxs
IG9ubHkgaGF2ZSBwdXQgQVNDSUkgY2hhcmFjdGVycyBpbiBpdCkuCiAgICAgQVNTRVJUKHN0cmlu
Z0J1aWxkZXIudG9TdHJpbmcoKS5jb250YWluc09ubHlBU0NJSSgpKTsKICAgICBDU3RyaW5nIGFz
Y2lpU3RyaW5nID0gc3RyaW5nQnVpbGRlci50b1N0cmluZygpLnV0ZjgoKTsKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBtaHRtbERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIGF1
dG8gbWh0bWxEYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBtaHRtbERhdGEtPmFw
cGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lpU3RyaW5nLmxlbmd0aCgpKTsKIAogICAgIGZv
ciAoYXV0byYgcmVzb3VyY2UgOiByZXNvdXJjZXMpIHsKQEAgLTIxMyw3ICsyMTMsNyBAQCBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBNSFRNTEFyY2hpdmU6OmdlbmVyYXRlTUhUTUxEYXRhKFBhZ2UqIHBh
Z2UpCiAgICAgYXNjaWlTdHJpbmcgPSBtYWtlU3RyaW5nKCItLSIsIGJvdW5kYXJ5LCAiLS1cclxu
IikudXRmOCgpOwogICAgIG1odG1sRGF0YS0+YXBwZW5kKGFzY2lpU3RyaW5nLmRhdGEoKSwgYXNj
aWlTdHJpbmcubGVuZ3RoKCkpOwogCi0gICAgcmV0dXJuIG1odG1sRGF0YS5yZWxlYXNlKCk7Cisg
ICAgcmV0dXJuIG1odG1sRGF0YTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuaAppbmRleCA4NTI0NjU5YWFiMi4uM2QyZGI3
Yzk2MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01I
VE1MQXJjaGl2ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01I
VE1MQXJjaGl2ZS5oCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPE1I
VE1MQXJjaGl2ZT4gY3JlYXRlKCk7CiAgICAgc3RhdGljIFJlZlB0cjxNSFRNTEFyY2hpdmU+IGNy
ZWF0ZShjb25zdCBVUkwmLCBTaGFyZWRCdWZmZXImKTsKIAotICAgIHN0YXRpYyBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBnZW5lcmF0ZU1IVE1MRGF0YShQYWdlKik7CisgICAgc3RhdGljIFJlZjxTaGFy
ZWRCdWZmZXI+IGdlbmVyYXRlTUhUTUxEYXRhKFBhZ2UqKTsKIAogICAgIHZpcnR1YWwgfk1IVE1M
QXJjaGl2ZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9t
aHRtbC9NSFRNTFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRt
bC9NSFRNTFBhcnNlci5jcHAKaW5kZXggZTFiMTA0Y2UxZGEuLjVmZDM5YmU3YmQxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3Bw
CkBAIC02OCw3ICs2OCw3IEBAIFJlZlB0cjxNSFRNTEFyY2hpdmU+IE1IVE1MUGFyc2VyOjpwYXJz
ZUFyY2hpdmVXaXRoSGVhZGVyKE1JTUVIZWFkZXIqIGhlYWRlcikKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgfQogCi0gICAgUmVmUHRyPE1IVE1MQXJjaGl2ZT4gYXJjaGl2ZSA9IE1IVE1M
QXJjaGl2ZTo6Y3JlYXRlKCk7CisgICAgYXV0byBhcmNoaXZlID0gTUhUTUxBcmNoaXZlOjpjcmVh
dGUoKTsKICAgICBpZiAoIWhlYWRlci0+aXNNdWx0aXBhcnQoKSkgewogICAgICAgICAvLyBXaXRo
IElFIGEgcGFnZSB3aXRoIG5vIHJlc291cmNlIGlzIG5vdCBtdWx0aS1wYXJ0LgogICAgICAgICBi
b29sIGVuZE9mQXJjaGl2ZVJlYWNoZWQgPSBmYWxzZTsKQEAgLTc2LDcgKzc2LDcgQEAgUmVmUHRy
PE1IVE1MQXJjaGl2ZT4gTUhUTUxQYXJzZXI6OnBhcnNlQXJjaGl2ZVdpdGhIZWFkZXIoTUlNRUhl
YWRlciogaGVhZGVyKQogICAgICAgICBpZiAoIXJlc291cmNlKQogICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgICAgIGFyY2hpdmUtPnNldE1haW5SZXNvdXJjZShyZXNvdXJjZS5yZWxl
YXNlTm9uTnVsbCgpKTsKLSAgICAgICAgcmV0dXJuIGFyY2hpdmU7CisgICAgICAgIHJldHVybiBX
VEZNb3ZlKGFyY2hpdmUpOwogICAgIH0KIAogICAgIC8vIFNraXAgdGhlIG1lc3NhZ2UgY29udGVu
dCAoaXQncyBhIGdlbmVyaWMgYnJvd3NlciBzcGVjaWZpYyBtZXNzYWdlKS4KQEAgLTEwMCw3ICsx
MDAsNyBAQCBSZWZQdHI8TUhUTUxBcmNoaXZlPiBNSFRNTFBhcnNlcjo6cGFyc2VBcmNoaXZlV2l0
aEhlYWRlcihNSU1FSGVhZGVyKiBoZWFkZXIpCiAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGVu
ZE9mUGFydFJlYWNoZWQsIGVuZE9mUGFydFJlYWNoZWQpOwogICAgICAgICAgICAgLy8gVGhlIHRv
cC1mcmFtZSBpcyB0aGUgZmlyc3QgZnJhbWUgZm91bmQsIHJlZ2FyZGxlc3Mgb2YgdGhlIG5lc3Rp
bmcgbGV2ZWwuCiAgICAgICAgICAgICBpZiAoc3ViZnJhbWVBcmNoaXZlLT5tYWluUmVzb3VyY2Uo
KSkKLSAgICAgICAgICAgICAgICBhZGRSZXNvdXJjZVRvQXJjaGl2ZShzdWJmcmFtZUFyY2hpdmUt
Pm1haW5SZXNvdXJjZSgpLCBhcmNoaXZlLmdldCgpKTsKKyAgICAgICAgICAgICAgICBhZGRSZXNv
dXJjZVRvQXJjaGl2ZShzdWJmcmFtZUFyY2hpdmUtPm1haW5SZXNvdXJjZSgpLCBhcmNoaXZlLnB0
cigpKTsKICAgICAgICAgICAgIGFyY2hpdmUtPmFkZFN1YmZyYW1lQXJjaGl2ZShzdWJmcmFtZUFy
Y2hpdmUucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
fQpAQCAtMTEwLDEwICsxMTAsMTAgQEAgUmVmUHRyPE1IVE1MQXJjaGl2ZT4gTUhUTUxQYXJzZXI6
OnBhcnNlQXJjaGl2ZVdpdGhIZWFkZXIoTUlNRUhlYWRlciogaGVhZGVyKQogICAgICAgICAgICAg
TE9HX0VSUk9SKCJGYWlsZWQgdG8gcGFyc2UgTUhUTUwgcGFydC4iKTsKICAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgICAgICB9Ci0gICAgICAgIGFkZFJlc291cmNlVG9BcmNoaXZlKHJl
c291cmNlLmdldCgpLCBhcmNoaXZlLmdldCgpKTsKKyAgICAgICAgYWRkUmVzb3VyY2VUb0FyY2hp
dmUocmVzb3VyY2UuZ2V0KCksIGFyY2hpdmUucHRyKCkpOwogICAgIH0KIAotICAgIHJldHVybiBh
cmNoaXZlLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gV1RGTW92ZShhcmNoaXZlKTsKIH0KIAogdm9p
ZCBNSFRNTFBhcnNlcjo6YWRkUmVzb3VyY2VUb0FyY2hpdmUoQXJjaGl2ZVJlc291cmNlKiByZXNv
dXJjZSwgTUhUTUxBcmNoaXZlKiBhcmNoaXZlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvRmlsZVJlYWRlcklPUy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9GaWxlUmVhZGVySU9TLmNwcAppbmRleCA1MDNlZjQy
ZDAyOC4uOGE3Zjc3ZmE0MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL2lvcy9BdWRpb0ZpbGVSZWFkZXJJT1MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL2lvcy9BdWRpb0ZpbGVSZWFkZXJJT1MuY3BwCkBAIC0xNzcsNyArMTc3LDcgQEAg
UmVmUHRyPEF1ZGlvQnVzPiBBdWRpb0ZpbGVSZWFkZXI6OmNyZWF0ZUJ1cyhmbG9hdCBzYW1wbGVS
YXRlLCBib29sIG1peFRvTW9ubykKICAgICBzaXplX3QgYnVzQ2hhbm5lbENvdW50ID0gbWl4VG9N
b25vID8gMSA6IG51bWJlck9mQ2hhbm5lbHM7CiAKICAgICAvLyBDcmVhdGUgQXVkaW9CdXMgd2hl
cmUgd2UnbGwgcHV0IHRoZSBQQ00gYXVkaW8gZGF0YQotICAgIFJlZlB0cjxBdWRpb0J1cz4gYXVk
aW9CdXMgPSBBdWRpb0J1czo6Y3JlYXRlKGJ1c0NoYW5uZWxDb3VudCwgbnVtYmVyT2ZGcmFtZXMp
OworICAgIGF1dG8gYXVkaW9CdXMgPSBBdWRpb0J1czo6Y3JlYXRlKGJ1c0NoYW5uZWxDb3VudCwg
bnVtYmVyT2ZGcmFtZXMpOwogICAgIGF1ZGlvQnVzLT5zZXRTYW1wbGVSYXRlKG1fY2xpZW50RGF0
YUZvcm1hdC5tU2FtcGxlUmF0ZSk7IC8vIHNhdmUgZm9yIGxhdGVyCiAKICAgICAvLyBPbmx5IGFs
bG9jYXRlZCBpbiB0aGUgbWl4VG9Nb25vIGNhc2U7IGRlYWxsb2NhdGVkIG9uIGRlc3RydWN0aW9u
LgpAQCAtMjI4LDcgKzIyOCw3IEBAIFJlZlB0cjxBdWRpb0J1cz4gQXVkaW9GaWxlUmVhZGVyOjpj
cmVhdGVCdXMoZmxvYXQgc2FtcGxlUmF0ZSwgYm9vbCBtaXhUb01vbm8pCiAKICAgICBkZXN0cm95
QXVkaW9CdWZmZXJMaXN0KGJ1ZmZlckxpc3QpOwogCi0gICAgcmV0dXJuIGF1ZGlvQnVzLnJlbGVh
c2UoKTsKKyAgICByZXR1cm4gYXVkaW9CdXM7CiB9CiAKIFJlZlB0cjxBdWRpb0J1cz4gY3JlYXRl
QnVzRnJvbUF1ZGlvRmlsZShjb25zdCBjaGFyKiBmaWxlUGF0aCwgYm9vbCBtaXhUb01vbm8sIGZs
b2F0IHNhbXBsZVJhdGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCmluZGV4IGJjN2I0ZGU0M2U2Li5m
ODQ1ZmM1MWNiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKQEAgLTMzMyw3ICszMzMsNyBAQCBS
ZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBjb3B5U3VyZmFjZVRvSW1hZ2VBbmRBZGp1c3RSZWN0KGNh
aXJvX3N1cmZhY2VfdCogc3VyZmFjZQogdGVtcGxhdGUgPE11bHRpcGx5IG11bHRpcGxpZWQ+CiBS
ZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IGdldEltYWdlRGF0YShjb25zdCBJbnRSZWN0JiByZWN0
LCBjb25zdCBJbnRSZWN0JiBsb2dpY2FsUmVjdCwgY29uc3QgSW1hZ2VCdWZmZXJEYXRhJiBkYXRh
LCBjb25zdCBJbnRTaXplJiBzaXplLCBjb25zdCBJbnRTaXplJiBsb2dpY2FsU2l6ZSwgZmxvYXQg
cmVzb2x1dGlvblNjYWxlKQogewotICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gcmVzdWx0
ID0gVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQocmVjdC53aWR0aCgpICog
cmVjdC5oZWlnaHQoKSAqIDQpOworICAgIGF1dG8gcmVzdWx0ID0gVWludDhDbGFtcGVkQXJyYXk6
OmNyZWF0ZVVuaW5pdGlhbGl6ZWQocmVjdC53aWR0aCgpICogcmVjdC5oZWlnaHQoKSAqIDQpOwog
ICAgIGlmICghcmVzdWx0KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtNDEwLDcgKzQx
MCw3IEBAIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gZ2V0SW1hZ2VEYXRhKGNvbnN0IEludFJl
Y3QmIHJlY3QsIGNvbnN0IEludFJlY3QmIGxvZ2ljCiAgICAgICAgIGRlc3RSb3dzICs9IGRlc3RC
eXRlc1BlclJvdzsKICAgICB9CiAKLSAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKKyAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBVbml0PgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDVjNmQ5OTBkMjM0Li4x
MGFiMjFiZGMyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcApAQCAtMjg3MCwxMiArMjg3MCwxMSBAQCB2b2lkIFdlYlBhZ2U6OmdldENvbnRlbnRz
QXNTdHJpbmcodWludDY0X3QgY2FsbGJhY2tJRCkKICNpZiBFTkFCTEUoTUhUTUwpCiB2b2lkIFdl
YlBhZ2U6OmdldENvbnRlbnRzQXNNSFRNTERhdGEodWludDY0X3QgY2FsbGJhY2tJRCkKIHsKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBNSFRNTEFyY2hpdmU6OmdlbmVyYXRlTUhU
TUxEYXRhKG1fcGFnZS5nZXQoKSk7CisgICAgYXV0byBidWZmZXIgPSBNSFRNTEFyY2hpdmU6Omdl
bmVyYXRlTUhUTUxEYXRhKG1fcGFnZS5nZXQoKSk7CiAKICAgICAvLyBGSVhNRTogVXNlIFNoYXJl
ZEJ1ZmZlckRhdGFSZWZlcmVuY2UuCiAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVu
Y2U7Ci0gICAgaWYgKGJ1ZmZlcikKLSAgICAgICAgZGF0YVJlZmVyZW5jZSA9IElQQzo6RGF0YVJl
ZmVyZW5jZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihidWZmZXItPmRhdGEoKSks
IGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICBkYXRhUmVmZXJlbmNlID0gSVBDOjpEYXRhUmVmZXJlbmNl
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGJ1ZmZlci0+ZGF0YSgpKSwgYnVmZmVy
LT5zaXplKCkpOwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGF0YUNhbGxiYWNr
KGRhdGFSZWZlcmVuY2UsIGNhbGxiYWNrSUQpKTsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUmVmUHRyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL1JlZlB0ci5jcHAKaW5kZXggMTcyZWZhNzYyN2MuLjk1Zjk3ZDhkYTc5IDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SZWZQdHIuY3BwCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1JlZlB0ci5jcHAKQEAgLTEwOCwxNCArMTA4
LDYgQEAgVEVTVChXVEZfUmVmUHRyLCBCYXNpYykKICAgICAgICAgQVNTRVJUX0VRKG51bGxwdHIs
IHB0ci5nZXQoKSk7CiAgICAgfQogICAgIEFTU0VSVF9TVFJFUSgicmVmKGEpIGRlcmVmKGEpICIs
IHRha2VMb2dTdHIoKS5jX3N0cigpKTsKLQotICAgIHsKLSAgICAgICAgUmVmUHRyPFJlZkxvZ2dl
cj4gcHRyKCZhKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIuZ2V0KCkpOwotICAgICAgICBw
dHIucmVsZWFzZSgpOwotICAgICAgICBBU1NFUlRfRVEobnVsbHB0ciwgcHRyLmdldCgpKTsKLSAg
ICB9Ci0gICAgQVNTRVJUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNf
c3RyKCkpOwogfQogCiBURVNUKFdURl9SZWZQdHIsIEFzc2lnblBhc3NSZWZUb1JlZlB0cikKQEAg
LTEyNSw4ICsxMTcsNiBAQCBURVNUKFdURl9SZWZQdHIsIEFzc2lnblBhc3NSZWZUb1JlZlB0cikK
ICAgICAgICAgUmVmPFJlZkxvZ2dlcj4gcGFzc1JlZihhKTsKICAgICAgICAgUmVmUHRyPFJlZkxv
Z2dlcj4gcHRyID0gV1RGTW92ZShwYXNzUmVmKTsKICAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIu
Z2V0KCkpOwotICAgICAgICBwdHIucmVsZWFzZSgpOwotICAgICAgICBBU1NFUlRfRVEobnVsbHB0
ciwgcHRyLmdldCgpKTsKICAgICB9CiAgICAgQVNTRVJUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkg
IiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogfQpAQCAtMzM2LDcgKzMyNiw3IEBAIFRFU1QoV1RG
X1JlZlB0ciwgUmVsZWFzZSkKIAogICAgIHsKICAgICAgICAgUmVmUHRyPFJlZkxvZ2dlcj4gcDEg
PSAmYTsKLSAgICAgICAgUmVmUHRyPFJlZkxvZ2dlcj4gcDIgPSBwMS5yZWxlYXNlKCk7CisgICAg
ICAgIFJlZlB0cjxSZWZMb2dnZXI+IHAyID0gV1RGTW92ZShwMSk7CiAgICAgICAgIEFTU0VSVF9F
UShudWxscHRyLCBwMS5nZXQoKSk7CiAgICAgICAgIEFTU0VSVF9FUSgmYSwgcDIuZ2V0KCkpOwog
ICAgIH0KQEAgLTM0NCw3ICszMzQsNyBAQCBURVNUKFdURl9SZWZQdHIsIFJlbGVhc2UpCiAKICAg
ICB7CiAgICAgICAgIFJlZlB0cjxSZWZMb2dnZXI+IHAxID0gJmE7Ci0gICAgICAgIFJlZlB0cjxS
ZWZMb2dnZXI+IHAyKHAxLnJlbGVhc2UoKSk7CisgICAgICAgIFJlZlB0cjxSZWZMb2dnZXI+IHAy
KFdURk1vdmUocDEpKTsKICAgICAgICAgQVNTRVJUX0VRKG51bGxwdHIsIHAxLmdldCgpKTsKICAg
ICAgICAgQVNTRVJUX0VRKCZhLCBwMi5nZXQoKSk7CiAgICAgfQpAQCAtMzUyLDcgKzM0Miw3IEBA
IFRFU1QoV1RGX1JlZlB0ciwgUmVsZWFzZSkKIAogICAgIHsKICAgICAgICAgUmVmUHRyPERlcml2
ZWRSZWZMb2dnZXI+IHAxID0gJmE7Ci0gICAgICAgIFJlZlB0cjxSZWZMb2dnZXI+IHAyID0gcDEu
cmVsZWFzZSgpOworICAgICAgICBSZWZQdHI8UmVmTG9nZ2VyPiBwMiA9IFdURk1vdmUocDEpOwog
ICAgICAgICBBU1NFUlRfRVEobnVsbHB0ciwgcDEuZ2V0KCkpOwogICAgICAgICBBU1NFUlRfRVEo
JmEsIHAyLmdldCgpKTsKICAgICB9CkBAIC0zNjQsNyArMzU0LDcgQEAgVEVTVChXVEZfUmVmUHRy
LCBSZWxlYXNlKQogICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLmdldCgpKTsKICAgICAgICAgQVNT
RVJUX0VRKCZiLCBwMi5nZXQoKSk7CiAgICAgICAgIGxvZygpIDw8ICJ8ICI7Ci0gICAgICAgIHAx
ID0gcDIucmVsZWFzZSgpOworICAgICAgICBwMSA9IFdURk1vdmUocDIpOwogICAgICAgICBBU1NF
UlRfRVEoJmIsIHAxLmdldCgpKTsKICAgICAgICAgQVNTRVJUX0VRKG51bGxwdHIsIHAyLmdldCgp
KTsKICAgICAgICAgbG9nKCkgPDwgInwgIjsKQEAgLTM3Nyw3ICszNjcsNyBAQCBURVNUKFdURl9S
ZWZQdHIsIFJlbGVhc2UpCiAgICAgICAgIEFTU0VSVF9FUSgmYSwgcDEuZ2V0KCkpOwogICAgICAg
ICBBU1NFUlRfRVEoJmMsIHAyLmdldCgpKTsKICAgICAgICAgbG9nKCkgPDwgInwgIjsKLSAgICAg
ICAgcDEgPSBwMi5yZWxlYXNlKCk7CisgICAgICAgIHAxID0gV1RGTW92ZShwMik7CiAgICAgICAg
IEFTU0VSVF9FUSgmYywgcDEuZ2V0KCkpOwogICAgICAgICBBU1NFUlRfRVEobnVsbHB0ciwgcDIu
Z2V0KCkpOwogICAgICAgICBsb2coKSA8PCAifCAiOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>310033</attachid>
            <date>2017-05-13 14:22:16 -0700</date>
            <delta_ts>2017-05-13 14:27:10 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>172074_release_wip.patch</filename>
            <type>text/plain</type>
            <size>13225</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1JlZlB0ci5oIGIvU291cmNlL1dURi93dGYvUmVm
UHRyLmgKaW5kZXggMjc3ZTY3NWRiM2MuLjc4MjEyOWY4Zjk1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9SZWZQdHIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9SZWZQdHIuaApAQCAtNjMsOCAr
NjMsNiBAQCBwdWJsaWM6CiAKICAgICBUKiBnZXQoKSBjb25zdCB7IHJldHVybiBtX3B0cjsgfQog
Ci0gICAgLy8gRklYTUU6IFJlbW92ZSByZWxlYXNlKCkgYW5kIGNoYW5nZSBhbGwgY2FsbCBzaXRl
cyB0byBjYWxsIFdURk1vdmUoKS4KLSAgICBSZWZQdHI8VD4gcmVsZWFzZSgpIHsgUmVmUHRyPFQ+
IHRtcCA9IGFkb3B0UmVmKG1fcHRyKTsgbV9wdHIgPSBudWxscHRyOyByZXR1cm4gdG1wOyB9CiAg
ICAgUmVmPFQ+IHJlbGVhc2VOb25OdWxsKCkgeyBBU1NFUlQobV9wdHIpOyBSZWY8VD4gdG1wKGFk
b3B0UmVmKCptX3B0cikpOyBtX3B0ciA9IG51bGxwdHI7IHJldHVybiB0bXA7IH0KICAgICBSZWY8
Y29uc3QgVD4gcmVsZWFzZUNvbnN0Tm9uTnVsbCgpIHsgQVNTRVJUKG1fcHRyKTsgUmVmPGNvbnN0
IFQ+IHRtcChhZG9wdFJlZigqbV9wdHIpKTsgbV9wdHIgPSBudWxscHRyOyByZXR1cm4gdG1wOyB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9Xb3JrUXVldWVXaW4uY3BwIGIvU291
cmNlL1dURi93dGYvd2luL1dvcmtRdWV1ZVdpbi5jcHAKaW5kZXggZTgxNTQ3NzM3NDYuLmJiZjAx
MWFlMTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi93aW4vV29ya1F1ZXVlV2luLmNwcAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vV29ya1F1ZXVlV2luLmNwcApAQCAtMTg3LDcgKzE4Nyw3
IEBAIHZvaWQgV29ya1F1ZXVlOjpkaXNwYXRjaEFmdGVyKFNlY29uZHMgZHVyYXRpb24sIEZ1bmN0
aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikKICAgICB9CiAKICAgICAvLyBUaGUgdGltZXIgY2FsbGJh
Y2sgd2lsbCBoYW5kbGUgZGVzdHJveWluZyBjb250ZXh0LgotICAgIGNvbnRleHQucmVsZWFzZSgp
LmxlYWtSZWYoKTsKKyAgICBjb250ZXh0LmxlYWtSZWYoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFy
c2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3Bw
CmluZGV4IDkzMTI1ZmNlMTM4Li5iMzk1MDFjMDVjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKQEAgLTYzMCw3ICs2MzAsNyBAQCBwdWJs
aWM6CiAgICAgewogICAgICAgICBpZiAoIW1fcmVzdWx0LT5sZW5ndGgoKSkKICAgICAgICAgICAg
IHJldHVybiBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShD
U1NWYWx1ZU5vcm1hbCk7Ci0gICAgICAgIHJldHVybiBtX3Jlc3VsdC5yZWxlYXNlKCk7CisgICAg
ICAgIHJldHVybiBXVEZNb3ZlKG1fcmVzdWx0KTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC04MzIs
NyArODMyLDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgaWYgKCFtX3Jlc3VsdC0+bGVuZ3Ro
KCkpCiAgICAgICAgICAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJ
ZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb3JtYWwpOwotICAgICAgICByZXR1cm4gbV9yZXN1bHQu
cmVsZWFzZSgpOworICAgICAgICByZXR1cm4gV1RGTW92ZShtX3Jlc3VsdCk7CiAgICAgfQogCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJI
ZWxwZXJzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJI
ZWxwZXJzLmNwcAppbmRleCA0YTMyYTU4YmMwYi4uMzQ5OTk5YjllN2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VySGVscGVycy5jcHAK
QEAgLTkzLDcgKzkzLDcgQEAgcHVibGljOgogICAgICAgICBpZiAoIW1fY2FsY1ZhbHVlKQogICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIG1fc291cmNlUmFuZ2UgPSBtX3Jhbmdl
OwotICAgICAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVWYWx1ZSht
X2NhbGNWYWx1ZS5yZWxlYXNlKCkpOworICAgICAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5n
bGV0b24oKS5jcmVhdGVWYWx1ZShXVEZNb3ZlKG1fY2FsY1ZhbHVlKSk7CiAgICAgfQogICAgIFJl
ZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZU51bWJlcigpCiAgICAgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAKaW5k
ZXggMmNhNjdlMjdiZTguLjYxYzYyNmIyOTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAKQEAgLTEzMCw3ICsxMzAsNyBA
QCBSZWZQdHI8TUhUTUxBcmNoaXZlPiBNSFRNTEFyY2hpdmU6OmNyZWF0ZShjb25zdCBVUkwmIHVy
bCwgU2hhcmVkQnVmZmVyJiBkYXRhKQogICAgIHJldHVybiBtYWluQXJjaGl2ZTsKIH0KIAotUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gTUhUTUxBcmNoaXZlOjpnZW5lcmF0ZU1IVE1MRGF0YShQYWdlKiBw
YWdlKQorUmVmPFNoYXJlZEJ1ZmZlcj4gTUhUTUxBcmNoaXZlOjpnZW5lcmF0ZU1IVE1MRGF0YShQ
YWdlKiBwYWdlKQogewogICAgIFZlY3RvcjxQYWdlU2VyaWFsaXplcjo6UmVzb3VyY2U+IHJlc291
cmNlczsKICAgICBQYWdlU2VyaWFsaXplciBwYWdlU2VyaWFsaXplcihyZXNvdXJjZXMpOwpAQCAt
MTYyLDcgKzE2Miw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IE1IVE1MQXJjaGl2ZTo6Z2VuZXJh
dGVNSFRNTERhdGEoUGFnZSogcGFnZSkKICAgICAvLyBXZSB1c2UgdXRmOCgpIGJlbG93IGluc3Rl
YWQgb2YgYXNjaWkoKSBhcyBhc2NpaSgpIHJlcGxhY2VzIENSTEZzIHdpdGggPz8gKHdlIHN0aWxs
IG9ubHkgaGF2ZSBwdXQgQVNDSUkgY2hhcmFjdGVycyBpbiBpdCkuCiAgICAgQVNTRVJUKHN0cmlu
Z0J1aWxkZXIudG9TdHJpbmcoKS5jb250YWluc09ubHlBU0NJSSgpKTsKICAgICBDU3RyaW5nIGFz
Y2lpU3RyaW5nID0gc3RyaW5nQnVpbGRlci50b1N0cmluZygpLnV0ZjgoKTsKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBtaHRtbERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIGF1
dG8gbWh0bWxEYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBtaHRtbERhdGEtPmFw
cGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lpU3RyaW5nLmxlbmd0aCgpKTsKIAogICAgIGZv
ciAoYXV0byYgcmVzb3VyY2UgOiByZXNvdXJjZXMpIHsKQEAgLTIxMyw3ICsyMTMsNyBAQCBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBNSFRNTEFyY2hpdmU6OmdlbmVyYXRlTUhUTUxEYXRhKFBhZ2UqIHBh
Z2UpCiAgICAgYXNjaWlTdHJpbmcgPSBtYWtlU3RyaW5nKCItLSIsIGJvdW5kYXJ5LCAiLS1cclxu
IikudXRmOCgpOwogICAgIG1odG1sRGF0YS0+YXBwZW5kKGFzY2lpU3RyaW5nLmRhdGEoKSwgYXNj
aWlTdHJpbmcubGVuZ3RoKCkpOwogCi0gICAgcmV0dXJuIG1odG1sRGF0YS5yZWxlYXNlKCk7Cisg
ICAgcmV0dXJuIG1odG1sRGF0YTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuaAppbmRleCA4NTI0NjU5YWFiMi4uM2QyZGI3
Yzk2MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01I
VE1MQXJjaGl2ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01I
VE1MQXJjaGl2ZS5oCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPE1I
VE1MQXJjaGl2ZT4gY3JlYXRlKCk7CiAgICAgc3RhdGljIFJlZlB0cjxNSFRNTEFyY2hpdmU+IGNy
ZWF0ZShjb25zdCBVUkwmLCBTaGFyZWRCdWZmZXImKTsKIAotICAgIHN0YXRpYyBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBnZW5lcmF0ZU1IVE1MRGF0YShQYWdlKik7CisgICAgc3RhdGljIFJlZjxTaGFy
ZWRCdWZmZXI+IGdlbmVyYXRlTUhUTUxEYXRhKFBhZ2UqKTsKIAogICAgIHZpcnR1YWwgfk1IVE1M
QXJjaGl2ZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9t
aHRtbC9NSFRNTFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRt
bC9NSFRNTFBhcnNlci5jcHAKaW5kZXggZTFiMTA0Y2UxZGEuLjVmZDM5YmU3YmQxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3Bw
CkBAIC02OCw3ICs2OCw3IEBAIFJlZlB0cjxNSFRNTEFyY2hpdmU+IE1IVE1MUGFyc2VyOjpwYXJz
ZUFyY2hpdmVXaXRoSGVhZGVyKE1JTUVIZWFkZXIqIGhlYWRlcikKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgfQogCi0gICAgUmVmUHRyPE1IVE1MQXJjaGl2ZT4gYXJjaGl2ZSA9IE1IVE1M
QXJjaGl2ZTo6Y3JlYXRlKCk7CisgICAgYXV0byBhcmNoaXZlID0gTUhUTUxBcmNoaXZlOjpjcmVh
dGUoKTsKICAgICBpZiAoIWhlYWRlci0+aXNNdWx0aXBhcnQoKSkgewogICAgICAgICAvLyBXaXRo
IElFIGEgcGFnZSB3aXRoIG5vIHJlc291cmNlIGlzIG5vdCBtdWx0aS1wYXJ0LgogICAgICAgICBi
b29sIGVuZE9mQXJjaGl2ZVJlYWNoZWQgPSBmYWxzZTsKQEAgLTc2LDcgKzc2LDcgQEAgUmVmUHRy
PE1IVE1MQXJjaGl2ZT4gTUhUTUxQYXJzZXI6OnBhcnNlQXJjaGl2ZVdpdGhIZWFkZXIoTUlNRUhl
YWRlciogaGVhZGVyKQogICAgICAgICBpZiAoIXJlc291cmNlKQogICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgICAgIGFyY2hpdmUtPnNldE1haW5SZXNvdXJjZShyZXNvdXJjZS5yZWxl
YXNlTm9uTnVsbCgpKTsKLSAgICAgICAgcmV0dXJuIGFyY2hpdmU7CisgICAgICAgIHJldHVybiBX
VEZNb3ZlKGFyY2hpdmUpOwogICAgIH0KIAogICAgIC8vIFNraXAgdGhlIG1lc3NhZ2UgY29udGVu
dCAoaXQncyBhIGdlbmVyaWMgYnJvd3NlciBzcGVjaWZpYyBtZXNzYWdlKS4KQEAgLTEwMCw3ICsx
MDAsNyBAQCBSZWZQdHI8TUhUTUxBcmNoaXZlPiBNSFRNTFBhcnNlcjo6cGFyc2VBcmNoaXZlV2l0
aEhlYWRlcihNSU1FSGVhZGVyKiBoZWFkZXIpCiAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGVu
ZE9mUGFydFJlYWNoZWQsIGVuZE9mUGFydFJlYWNoZWQpOwogICAgICAgICAgICAgLy8gVGhlIHRv
cC1mcmFtZSBpcyB0aGUgZmlyc3QgZnJhbWUgZm91bmQsIHJlZ2FyZGxlc3Mgb2YgdGhlIG5lc3Rp
bmcgbGV2ZWwuCiAgICAgICAgICAgICBpZiAoc3ViZnJhbWVBcmNoaXZlLT5tYWluUmVzb3VyY2Uo
KSkKLSAgICAgICAgICAgICAgICBhZGRSZXNvdXJjZVRvQXJjaGl2ZShzdWJmcmFtZUFyY2hpdmUt
Pm1haW5SZXNvdXJjZSgpLCBhcmNoaXZlLmdldCgpKTsKKyAgICAgICAgICAgICAgICBhZGRSZXNv
dXJjZVRvQXJjaGl2ZShzdWJmcmFtZUFyY2hpdmUtPm1haW5SZXNvdXJjZSgpLCBhcmNoaXZlLnB0
cigpKTsKICAgICAgICAgICAgIGFyY2hpdmUtPmFkZFN1YmZyYW1lQXJjaGl2ZShzdWJmcmFtZUFy
Y2hpdmUucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
fQpAQCAtMTEwLDEwICsxMTAsMTAgQEAgUmVmUHRyPE1IVE1MQXJjaGl2ZT4gTUhUTUxQYXJzZXI6
OnBhcnNlQXJjaGl2ZVdpdGhIZWFkZXIoTUlNRUhlYWRlciogaGVhZGVyKQogICAgICAgICAgICAg
TE9HX0VSUk9SKCJGYWlsZWQgdG8gcGFyc2UgTUhUTUwgcGFydC4iKTsKICAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgICAgICB9Ci0gICAgICAgIGFkZFJlc291cmNlVG9BcmNoaXZlKHJl
c291cmNlLmdldCgpLCBhcmNoaXZlLmdldCgpKTsKKyAgICAgICAgYWRkUmVzb3VyY2VUb0FyY2hp
dmUocmVzb3VyY2UuZ2V0KCksIGFyY2hpdmUucHRyKCkpOwogICAgIH0KIAotICAgIHJldHVybiBh
cmNoaXZlLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gV1RGTW92ZShhcmNoaXZlKTsKIH0KIAogdm9p
ZCBNSFRNTFBhcnNlcjo6YWRkUmVzb3VyY2VUb0FyY2hpdmUoQXJjaGl2ZVJlc291cmNlKiByZXNv
dXJjZSwgTUhUTUxBcmNoaXZlKiBhcmNoaXZlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvRmlsZVJlYWRlcklPUy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9GaWxlUmVhZGVySU9TLmNwcAppbmRleCA1MDNlZjQy
ZDAyOC4uOGE3Zjc3ZmE0MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL2lvcy9BdWRpb0ZpbGVSZWFkZXJJT1MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL2lvcy9BdWRpb0ZpbGVSZWFkZXJJT1MuY3BwCkBAIC0xNzcsNyArMTc3LDcgQEAg
UmVmUHRyPEF1ZGlvQnVzPiBBdWRpb0ZpbGVSZWFkZXI6OmNyZWF0ZUJ1cyhmbG9hdCBzYW1wbGVS
YXRlLCBib29sIG1peFRvTW9ubykKICAgICBzaXplX3QgYnVzQ2hhbm5lbENvdW50ID0gbWl4VG9N
b25vID8gMSA6IG51bWJlck9mQ2hhbm5lbHM7CiAKICAgICAvLyBDcmVhdGUgQXVkaW9CdXMgd2hl
cmUgd2UnbGwgcHV0IHRoZSBQQ00gYXVkaW8gZGF0YQotICAgIFJlZlB0cjxBdWRpb0J1cz4gYXVk
aW9CdXMgPSBBdWRpb0J1czo6Y3JlYXRlKGJ1c0NoYW5uZWxDb3VudCwgbnVtYmVyT2ZGcmFtZXMp
OworICAgIGF1dG8gYXVkaW9CdXMgPSBBdWRpb0J1czo6Y3JlYXRlKGJ1c0NoYW5uZWxDb3VudCwg
bnVtYmVyT2ZGcmFtZXMpOwogICAgIGF1ZGlvQnVzLT5zZXRTYW1wbGVSYXRlKG1fY2xpZW50RGF0
YUZvcm1hdC5tU2FtcGxlUmF0ZSk7IC8vIHNhdmUgZm9yIGxhdGVyCiAKICAgICAvLyBPbmx5IGFs
bG9jYXRlZCBpbiB0aGUgbWl4VG9Nb25vIGNhc2U7IGRlYWxsb2NhdGVkIG9uIGRlc3RydWN0aW9u
LgpAQCAtMjI4LDcgKzIyOCw3IEBAIFJlZlB0cjxBdWRpb0J1cz4gQXVkaW9GaWxlUmVhZGVyOjpj
cmVhdGVCdXMoZmxvYXQgc2FtcGxlUmF0ZSwgYm9vbCBtaXhUb01vbm8pCiAKICAgICBkZXN0cm95
QXVkaW9CdWZmZXJMaXN0KGJ1ZmZlckxpc3QpOwogCi0gICAgcmV0dXJuIGF1ZGlvQnVzLnJlbGVh
c2UoKTsKKyAgICByZXR1cm4gYXVkaW9CdXM7CiB9CiAKIFJlZlB0cjxBdWRpb0J1cz4gY3JlYXRl
QnVzRnJvbUF1ZGlvRmlsZShjb25zdCBjaGFyKiBmaWxlUGF0aCwgYm9vbCBtaXhUb01vbm8sIGZs
b2F0IHNhbXBsZVJhdGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGli
L1NoYXJlZEJ1ZmZlckdsaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFy
ZWRCdWZmZXJHbGliLmNwcAppbmRleCBlMTUyMmY2ZmFjMS4uYWQ3MzQ5ZDZmM2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcApAQCAt
MzEsNyArMzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRo
KQogewogICAgIGlmIChmaWxlUGF0aC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiAwOworICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIENTdHJpbmcgZmlsZW5hbWUgPSBmaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24oZmlsZVBhdGgpOwogICAgIEdVbmlxdWVPdXRQdHI8Z2NoYXI+IGNvbnRl
bnRzOwpAQCAtMzksMTIgKzM5LDEwIEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiAgICAgR1Vu
aXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwogICAgIGlmICghZ19maWxlX2dldF9jb250ZW50cyhm
aWxlbmFtZS5kYXRhKCksICZjb250ZW50cy5vdXRQdHIoKSwgJnNpemUsICZlcnJvci5vdXRQdHIo
KSkpIHsKICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gZnVsbHkgcmVhZCBjb250ZW50cyBv
ZiBmaWxlICVzIC0gJXMiLCBmaWxlbmFtZUZvckRpc3BsYXkoZmlsZVBhdGgpLnV0ZjgoKS5kYXRh
KCksIGVycm9yLT5tZXNzYWdlKTsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlc3VsdCA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGNvbnRlbnRzLmdldCgpLCBzaXplKTsKLQotICAgIHJldHVybiByZXN1
bHQucmVsZWFzZSgpOworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShjb250ZW50cy5n
ZXQoKSwgc2l6ZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWly
by5jcHAKaW5kZXggYmM3YjRkZTQzZTYuLmY4NDVmYzUxY2I0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJv
LmNwcApAQCAtMzMzLDcgKzMzMyw3IEBAIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IGNvcHlTdXJm
YWNlVG9JbWFnZUFuZEFkanVzdFJlY3QoY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlCiB0ZW1wbGF0
ZSA8TXVsdGlwbHkgbXVsdGlwbGllZD4KIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gZ2V0SW1h
Z2VEYXRhKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEludFJlY3QmIGxvZ2ljYWxSZWN0LCBj
b25zdCBJbWFnZUJ1ZmZlckRhdGEmIGRhdGEsIGNvbnN0IEludFNpemUmIHNpemUsIGNvbnN0IElu
dFNpemUmIGxvZ2ljYWxTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUpCiB7Ci0gICAgUmVmUHRy
PFVpbnQ4Q2xhbXBlZEFycmF5PiByZXN1bHQgPSBVaW50OENsYW1wZWRBcnJheTo6Y3JlYXRlVW5p
bml0aWFsaXplZChyZWN0LndpZHRoKCkgKiByZWN0LmhlaWdodCgpICogNCk7CisgICAgYXV0byBy
ZXN1bHQgPSBVaW50OENsYW1wZWRBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZChyZWN0LndpZHRo
KCkgKiByZWN0LmhlaWdodCgpICogNCk7CiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCkBAIC00MTAsNyArNDEwLDcgQEAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5
PiBnZXRJbWFnZURhdGEoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW50UmVjdCYgbG9naWMK
ICAgICAgICAgZGVzdFJvd3MgKz0gZGVzdEJ5dGVzUGVyUm93OwogICAgIH0KIAotICAgIHJldHVy
biByZXN1bHQucmVsZWFzZSgpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIFVuaXQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAKaW5kZXggNWM2ZDk5MGQyMzQuLjEwYWIyMWJkYzIxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0yODcwLDEyICsyODcwLDExIEBA
IHZvaWQgV2ViUGFnZTo6Z2V0Q29udGVudHNBc1N0cmluZyh1aW50NjRfdCBjYWxsYmFja0lEKQog
I2lmIEVOQUJMRShNSFRNTCkKIHZvaWQgV2ViUGFnZTo6Z2V0Q29udGVudHNBc01IVE1MRGF0YSh1
aW50NjRfdCBjYWxsYmFja0lEKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9
IE1IVE1MQXJjaGl2ZTo6Z2VuZXJhdGVNSFRNTERhdGEobV9wYWdlLmdldCgpKTsKKyAgICBhdXRv
IGJ1ZmZlciA9IE1IVE1MQXJjaGl2ZTo6Z2VuZXJhdGVNSFRNTERhdGEobV9wYWdlLmdldCgpKTsK
IAogICAgIC8vIEZJWE1FOiBVc2UgU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS4KICAgICBJUEM6
OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZTsKLSAgICBpZiAoYnVmZmVyKQotICAgICAgICBk
YXRhUmVmZXJlbmNlID0gSVBDOjpEYXRhUmVmZXJlbmNlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KGJ1ZmZlci0+ZGF0YSgpKSwgYnVmZmVyLT5zaXplKCkpOworICAgIGRhdGFSZWZl
cmVuY2UgPSBJUEM6OkRhdGFSZWZlcmVuY2UocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90
Kj4oYnVmZmVyLT5kYXRhKCkpLCBidWZmZXItPnNpemUoKSk7CiAgICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpEYXRhQ2FsbGJhY2soZGF0YVJlZmVyZW5jZSwgY2FsbGJhY2tJRCkpOwog
fQogI2VuZGlmCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SZWZQ
dHIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUmVmUHRyLmNwcAppbmRleCAx
NzJlZmE3NjI3Yy4uOTVmOTdkOGRhNzkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL1JlZlB0ci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
UmVmUHRyLmNwcApAQCAtMTA4LDE0ICsxMDgsNiBAQCBURVNUKFdURl9SZWZQdHIsIEJhc2ljKQog
ICAgICAgICBBU1NFUlRfRVEobnVsbHB0ciwgcHRyLmdldCgpKTsKICAgICB9CiAgICAgQVNTRVJU
X1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwotCi0gICAg
ewotICAgICAgICBSZWZQdHI8UmVmTG9nZ2VyPiBwdHIoJmEpOwotICAgICAgICBBU1NFUlRfRVEo
JmEsIHB0ci5nZXQoKSk7Ci0gICAgICAgIHB0ci5yZWxlYXNlKCk7Ci0gICAgICAgIEFTU0VSVF9F
UShudWxscHRyLCBwdHIuZ2V0KCkpOwotICAgIH0KLSAgICBBU1NFUlRfU1RSRVEoInJlZihhKSBk
ZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiB9CiAKIFRFU1QoV1RGX1JlZlB0ciwg
QXNzaWduUGFzc1JlZlRvUmVmUHRyKQpAQCAtMTI1LDggKzExNyw2IEBAIFRFU1QoV1RGX1JlZlB0
ciwgQXNzaWduUGFzc1JlZlRvUmVmUHRyKQogICAgICAgICBSZWY8UmVmTG9nZ2VyPiBwYXNzUmVm
KGEpOwogICAgICAgICBSZWZQdHI8UmVmTG9nZ2VyPiBwdHIgPSBXVEZNb3ZlKHBhc3NSZWYpOwog
ICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci5nZXQoKSk7Ci0gICAgICAgIHB0ci5yZWxlYXNlKCk7
Ci0gICAgICAgIEFTU0VSVF9FUShudWxscHRyLCBwdHIuZ2V0KCkpOwogICAgIH0KICAgICBBU1NF
UlRfU1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiB9CkBA
IC0zMzYsNyArMzI2LDcgQEAgVEVTVChXVEZfUmVmUHRyLCBSZWxlYXNlKQogCiAgICAgewogICAg
ICAgICBSZWZQdHI8UmVmTG9nZ2VyPiBwMSA9ICZhOwotICAgICAgICBSZWZQdHI8UmVmTG9nZ2Vy
PiBwMiA9IHAxLnJlbGVhc2UoKTsKKyAgICAgICAgUmVmUHRyPFJlZkxvZ2dlcj4gcDIgPSBXVEZN
b3ZlKHAxKTsKICAgICAgICAgQVNTRVJUX0VRKG51bGxwdHIsIHAxLmdldCgpKTsKICAgICAgICAg
QVNTRVJUX0VRKCZhLCBwMi5nZXQoKSk7CiAgICAgfQpAQCAtMzQ0LDcgKzMzNCw3IEBAIFRFU1Qo
V1RGX1JlZlB0ciwgUmVsZWFzZSkKIAogICAgIHsKICAgICAgICAgUmVmUHRyPFJlZkxvZ2dlcj4g
cDEgPSAmYTsKLSAgICAgICAgUmVmUHRyPFJlZkxvZ2dlcj4gcDIocDEucmVsZWFzZSgpKTsKKyAg
ICAgICAgUmVmUHRyPFJlZkxvZ2dlcj4gcDIoV1RGTW92ZShwMSkpOwogICAgICAgICBBU1NFUlRf
RVEobnVsbHB0ciwgcDEuZ2V0KCkpOwogICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLmdldCgpKTsK
ICAgICB9CkBAIC0zNTIsNyArMzQyLDcgQEAgVEVTVChXVEZfUmVmUHRyLCBSZWxlYXNlKQogCiAg
ICAgewogICAgICAgICBSZWZQdHI8RGVyaXZlZFJlZkxvZ2dlcj4gcDEgPSAmYTsKLSAgICAgICAg
UmVmUHRyPFJlZkxvZ2dlcj4gcDIgPSBwMS5yZWxlYXNlKCk7CisgICAgICAgIFJlZlB0cjxSZWZM
b2dnZXI+IHAyID0gV1RGTW92ZShwMSk7CiAgICAgICAgIEFTU0VSVF9FUShudWxscHRyLCBwMS5n
ZXQoKSk7CiAgICAgICAgIEFTU0VSVF9FUSgmYSwgcDIuZ2V0KCkpOwogICAgIH0KQEAgLTM2NCw3
ICszNTQsNyBAQCBURVNUKFdURl9SZWZQdHIsIFJlbGVhc2UpCiAgICAgICAgIEFTU0VSVF9FUSgm
YSwgcDEuZ2V0KCkpOwogICAgICAgICBBU1NFUlRfRVEoJmIsIHAyLmdldCgpKTsKICAgICAgICAg
bG9nKCkgPDwgInwgIjsKLSAgICAgICAgcDEgPSBwMi5yZWxlYXNlKCk7CisgICAgICAgIHAxID0g
V1RGTW92ZShwMik7CiAgICAgICAgIEFTU0VSVF9FUSgmYiwgcDEuZ2V0KCkpOwogICAgICAgICBB
U1NFUlRfRVEobnVsbHB0ciwgcDIuZ2V0KCkpOwogICAgICAgICBsb2coKSA8PCAifCAiOwpAQCAt
Mzc3LDcgKzM2Nyw3IEBAIFRFU1QoV1RGX1JlZlB0ciwgUmVsZWFzZSkKICAgICAgICAgQVNTRVJU
X0VRKCZhLCBwMS5nZXQoKSk7CiAgICAgICAgIEFTU0VSVF9FUSgmYywgcDIuZ2V0KCkpOwogICAg
ICAgICBsb2coKSA8PCAifCAiOwotICAgICAgICBwMSA9IHAyLnJlbGVhc2UoKTsKKyAgICAgICAg
cDEgPSBXVEZNb3ZlKHAyKTsKICAgICAgICAgQVNTRVJUX0VRKCZjLCBwMS5nZXQoKSk7CiAgICAg
ICAgIEFTU0VSVF9FUShudWxscHRyLCBwMi5nZXQoKSk7CiAgICAgICAgIGxvZygpIDw8ICJ8ICI7
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>310034</attachid>
            <date>2017-05-13 14:27:10 -0700</date>
            <delta_ts>2017-05-13 14:34:11 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>172074_release_wip.patch</filename>
            <type>text/plain</type>
            <size>13955</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1JlZlB0ci5oIGIvU291cmNlL1dURi93dGYvUmVm
UHRyLmgKaW5kZXggMjc3ZTY3NWRiM2MuLjc4MjEyOWY4Zjk1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9SZWZQdHIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9SZWZQdHIuaApAQCAtNjMsOCAr
NjMsNiBAQCBwdWJsaWM6CiAKICAgICBUKiBnZXQoKSBjb25zdCB7IHJldHVybiBtX3B0cjsgfQog
Ci0gICAgLy8gRklYTUU6IFJlbW92ZSByZWxlYXNlKCkgYW5kIGNoYW5nZSBhbGwgY2FsbCBzaXRl
cyB0byBjYWxsIFdURk1vdmUoKS4KLSAgICBSZWZQdHI8VD4gcmVsZWFzZSgpIHsgUmVmUHRyPFQ+
IHRtcCA9IGFkb3B0UmVmKG1fcHRyKTsgbV9wdHIgPSBudWxscHRyOyByZXR1cm4gdG1wOyB9CiAg
ICAgUmVmPFQ+IHJlbGVhc2VOb25OdWxsKCkgeyBBU1NFUlQobV9wdHIpOyBSZWY8VD4gdG1wKGFk
b3B0UmVmKCptX3B0cikpOyBtX3B0ciA9IG51bGxwdHI7IHJldHVybiB0bXA7IH0KICAgICBSZWY8
Y29uc3QgVD4gcmVsZWFzZUNvbnN0Tm9uTnVsbCgpIHsgQVNTRVJUKG1fcHRyKTsgUmVmPGNvbnN0
IFQ+IHRtcChhZG9wdFJlZigqbV9wdHIpKTsgbV9wdHIgPSBudWxscHRyOyByZXR1cm4gdG1wOyB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9Xb3JrUXVldWVXaW4uY3BwIGIvU291
cmNlL1dURi93dGYvd2luL1dvcmtRdWV1ZVdpbi5jcHAKaW5kZXggZTgxNTQ3NzM3NDYuLmJiZjAx
MWFlMTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi93aW4vV29ya1F1ZXVlV2luLmNwcAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vV29ya1F1ZXVlV2luLmNwcApAQCAtMTg3LDcgKzE4Nyw3
IEBAIHZvaWQgV29ya1F1ZXVlOjpkaXNwYXRjaEFmdGVyKFNlY29uZHMgZHVyYXRpb24sIEZ1bmN0
aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikKICAgICB9CiAKICAgICAvLyBUaGUgdGltZXIgY2FsbGJh
Y2sgd2lsbCBoYW5kbGUgZGVzdHJveWluZyBjb250ZXh0LgotICAgIGNvbnRleHQucmVsZWFzZSgp
LmxlYWtSZWYoKTsKKyAgICBjb250ZXh0LmxlYWtSZWYoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFy
c2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3Bw
CmluZGV4IDkzMTI1ZmNlMTM4Li5iMzk1MDFjMDVjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKQEAgLTYzMCw3ICs2MzAsNyBAQCBwdWJs
aWM6CiAgICAgewogICAgICAgICBpZiAoIW1fcmVzdWx0LT5sZW5ndGgoKSkKICAgICAgICAgICAg
IHJldHVybiBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShD
U1NWYWx1ZU5vcm1hbCk7Ci0gICAgICAgIHJldHVybiBtX3Jlc3VsdC5yZWxlYXNlKCk7CisgICAg
ICAgIHJldHVybiBXVEZNb3ZlKG1fcmVzdWx0KTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC04MzIs
NyArODMyLDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgaWYgKCFtX3Jlc3VsdC0+bGVuZ3Ro
KCkpCiAgICAgICAgICAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJ
ZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb3JtYWwpOwotICAgICAgICByZXR1cm4gbV9yZXN1bHQu
cmVsZWFzZSgpOworICAgICAgICByZXR1cm4gV1RGTW92ZShtX3Jlc3VsdCk7CiAgICAgfQogCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJI
ZWxwZXJzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJI
ZWxwZXJzLmNwcAppbmRleCA0YTMyYTU4YmMwYi4uMzQ5OTk5YjllN2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VySGVscGVycy5jcHAK
QEAgLTkzLDcgKzkzLDcgQEAgcHVibGljOgogICAgICAgICBpZiAoIW1fY2FsY1ZhbHVlKQogICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIG1fc291cmNlUmFuZ2UgPSBtX3Jhbmdl
OwotICAgICAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVWYWx1ZSht
X2NhbGNWYWx1ZS5yZWxlYXNlKCkpOworICAgICAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5n
bGV0b24oKS5jcmVhdGVWYWx1ZShXVEZNb3ZlKG1fY2FsY1ZhbHVlKSk7CiAgICAgfQogICAgIFJl
ZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZU51bWJlcigpCiAgICAgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAKaW5k
ZXggMmNhNjdlMjdiZTguLjYxYzYyNmIyOTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAKQEAgLTEzMCw3ICsxMzAsNyBA
QCBSZWZQdHI8TUhUTUxBcmNoaXZlPiBNSFRNTEFyY2hpdmU6OmNyZWF0ZShjb25zdCBVUkwmIHVy
bCwgU2hhcmVkQnVmZmVyJiBkYXRhKQogICAgIHJldHVybiBtYWluQXJjaGl2ZTsKIH0KIAotUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gTUhUTUxBcmNoaXZlOjpnZW5lcmF0ZU1IVE1MRGF0YShQYWdlKiBw
YWdlKQorUmVmPFNoYXJlZEJ1ZmZlcj4gTUhUTUxBcmNoaXZlOjpnZW5lcmF0ZU1IVE1MRGF0YShQ
YWdlKiBwYWdlKQogewogICAgIFZlY3RvcjxQYWdlU2VyaWFsaXplcjo6UmVzb3VyY2U+IHJlc291
cmNlczsKICAgICBQYWdlU2VyaWFsaXplciBwYWdlU2VyaWFsaXplcihyZXNvdXJjZXMpOwpAQCAt
MTYyLDcgKzE2Miw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IE1IVE1MQXJjaGl2ZTo6Z2VuZXJh
dGVNSFRNTERhdGEoUGFnZSogcGFnZSkKICAgICAvLyBXZSB1c2UgdXRmOCgpIGJlbG93IGluc3Rl
YWQgb2YgYXNjaWkoKSBhcyBhc2NpaSgpIHJlcGxhY2VzIENSTEZzIHdpdGggPz8gKHdlIHN0aWxs
IG9ubHkgaGF2ZSBwdXQgQVNDSUkgY2hhcmFjdGVycyBpbiBpdCkuCiAgICAgQVNTRVJUKHN0cmlu
Z0J1aWxkZXIudG9TdHJpbmcoKS5jb250YWluc09ubHlBU0NJSSgpKTsKICAgICBDU3RyaW5nIGFz
Y2lpU3RyaW5nID0gc3RyaW5nQnVpbGRlci50b1N0cmluZygpLnV0ZjgoKTsKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBtaHRtbERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIGF1
dG8gbWh0bWxEYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBtaHRtbERhdGEtPmFw
cGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lpU3RyaW5nLmxlbmd0aCgpKTsKIAogICAgIGZv
ciAoYXV0byYgcmVzb3VyY2UgOiByZXNvdXJjZXMpIHsKQEAgLTIxMyw3ICsyMTMsNyBAQCBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBNSFRNTEFyY2hpdmU6OmdlbmVyYXRlTUhUTUxEYXRhKFBhZ2UqIHBh
Z2UpCiAgICAgYXNjaWlTdHJpbmcgPSBtYWtlU3RyaW5nKCItLSIsIGJvdW5kYXJ5LCAiLS1cclxu
IikudXRmOCgpOwogICAgIG1odG1sRGF0YS0+YXBwZW5kKGFzY2lpU3RyaW5nLmRhdGEoKSwgYXNj
aWlTdHJpbmcubGVuZ3RoKCkpOwogCi0gICAgcmV0dXJuIG1odG1sRGF0YS5yZWxlYXNlKCk7Cisg
ICAgcmV0dXJuIG1odG1sRGF0YTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuaAppbmRleCA4NTI0NjU5YWFiMi4uM2QyZGI3
Yzk2MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01I
VE1MQXJjaGl2ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01I
VE1MQXJjaGl2ZS5oCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPE1I
VE1MQXJjaGl2ZT4gY3JlYXRlKCk7CiAgICAgc3RhdGljIFJlZlB0cjxNSFRNTEFyY2hpdmU+IGNy
ZWF0ZShjb25zdCBVUkwmLCBTaGFyZWRCdWZmZXImKTsKIAotICAgIHN0YXRpYyBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBnZW5lcmF0ZU1IVE1MRGF0YShQYWdlKik7CisgICAgc3RhdGljIFJlZjxTaGFy
ZWRCdWZmZXI+IGdlbmVyYXRlTUhUTUxEYXRhKFBhZ2UqKTsKIAogICAgIHZpcnR1YWwgfk1IVE1M
QXJjaGl2ZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9t
aHRtbC9NSFRNTFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRt
bC9NSFRNTFBhcnNlci5jcHAKaW5kZXggZTFiMTA0Y2UxZGEuLjVmZDM5YmU3YmQxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3Bw
CkBAIC02OCw3ICs2OCw3IEBAIFJlZlB0cjxNSFRNTEFyY2hpdmU+IE1IVE1MUGFyc2VyOjpwYXJz
ZUFyY2hpdmVXaXRoSGVhZGVyKE1JTUVIZWFkZXIqIGhlYWRlcikKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgfQogCi0gICAgUmVmUHRyPE1IVE1MQXJjaGl2ZT4gYXJjaGl2ZSA9IE1IVE1M
QXJjaGl2ZTo6Y3JlYXRlKCk7CisgICAgYXV0byBhcmNoaXZlID0gTUhUTUxBcmNoaXZlOjpjcmVh
dGUoKTsKICAgICBpZiAoIWhlYWRlci0+aXNNdWx0aXBhcnQoKSkgewogICAgICAgICAvLyBXaXRo
IElFIGEgcGFnZSB3aXRoIG5vIHJlc291cmNlIGlzIG5vdCBtdWx0aS1wYXJ0LgogICAgICAgICBi
b29sIGVuZE9mQXJjaGl2ZVJlYWNoZWQgPSBmYWxzZTsKQEAgLTc2LDcgKzc2LDcgQEAgUmVmUHRy
PE1IVE1MQXJjaGl2ZT4gTUhUTUxQYXJzZXI6OnBhcnNlQXJjaGl2ZVdpdGhIZWFkZXIoTUlNRUhl
YWRlciogaGVhZGVyKQogICAgICAgICBpZiAoIXJlc291cmNlKQogICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgICAgIGFyY2hpdmUtPnNldE1haW5SZXNvdXJjZShyZXNvdXJjZS5yZWxl
YXNlTm9uTnVsbCgpKTsKLSAgICAgICAgcmV0dXJuIGFyY2hpdmU7CisgICAgICAgIHJldHVybiBX
VEZNb3ZlKGFyY2hpdmUpOwogICAgIH0KIAogICAgIC8vIFNraXAgdGhlIG1lc3NhZ2UgY29udGVu
dCAoaXQncyBhIGdlbmVyaWMgYnJvd3NlciBzcGVjaWZpYyBtZXNzYWdlKS4KQEAgLTEwMCw3ICsx
MDAsNyBAQCBSZWZQdHI8TUhUTUxBcmNoaXZlPiBNSFRNTFBhcnNlcjo6cGFyc2VBcmNoaXZlV2l0
aEhlYWRlcihNSU1FSGVhZGVyKiBoZWFkZXIpCiAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGVu
ZE9mUGFydFJlYWNoZWQsIGVuZE9mUGFydFJlYWNoZWQpOwogICAgICAgICAgICAgLy8gVGhlIHRv
cC1mcmFtZSBpcyB0aGUgZmlyc3QgZnJhbWUgZm91bmQsIHJlZ2FyZGxlc3Mgb2YgdGhlIG5lc3Rp
bmcgbGV2ZWwuCiAgICAgICAgICAgICBpZiAoc3ViZnJhbWVBcmNoaXZlLT5tYWluUmVzb3VyY2Uo
KSkKLSAgICAgICAgICAgICAgICBhZGRSZXNvdXJjZVRvQXJjaGl2ZShzdWJmcmFtZUFyY2hpdmUt
Pm1haW5SZXNvdXJjZSgpLCBhcmNoaXZlLmdldCgpKTsKKyAgICAgICAgICAgICAgICBhZGRSZXNv
dXJjZVRvQXJjaGl2ZShzdWJmcmFtZUFyY2hpdmUtPm1haW5SZXNvdXJjZSgpLCBhcmNoaXZlLnB0
cigpKTsKICAgICAgICAgICAgIGFyY2hpdmUtPmFkZFN1YmZyYW1lQXJjaGl2ZShzdWJmcmFtZUFy
Y2hpdmUucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
fQpAQCAtMTEwLDEwICsxMTAsMTAgQEAgUmVmUHRyPE1IVE1MQXJjaGl2ZT4gTUhUTUxQYXJzZXI6
OnBhcnNlQXJjaGl2ZVdpdGhIZWFkZXIoTUlNRUhlYWRlciogaGVhZGVyKQogICAgICAgICAgICAg
TE9HX0VSUk9SKCJGYWlsZWQgdG8gcGFyc2UgTUhUTUwgcGFydC4iKTsKICAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgICAgICB9Ci0gICAgICAgIGFkZFJlc291cmNlVG9BcmNoaXZlKHJl
c291cmNlLmdldCgpLCBhcmNoaXZlLmdldCgpKTsKKyAgICAgICAgYWRkUmVzb3VyY2VUb0FyY2hp
dmUocmVzb3VyY2UuZ2V0KCksIGFyY2hpdmUucHRyKCkpOwogICAgIH0KIAotICAgIHJldHVybiBh
cmNoaXZlLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gV1RGTW92ZShhcmNoaXZlKTsKIH0KIAogdm9p
ZCBNSFRNTFBhcnNlcjo6YWRkUmVzb3VyY2VUb0FyY2hpdmUoQXJjaGl2ZVJlc291cmNlKiByZXNv
dXJjZSwgTUhUTUxBcmNoaXZlKiBhcmNoaXZlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvRmlsZVJlYWRlcklPUy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9GaWxlUmVhZGVySU9TLmNwcAppbmRleCA1MDNlZjQy
ZDAyOC4uOGE3Zjc3ZmE0MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL2lvcy9BdWRpb0ZpbGVSZWFkZXJJT1MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL2lvcy9BdWRpb0ZpbGVSZWFkZXJJT1MuY3BwCkBAIC0xNzcsNyArMTc3LDcgQEAg
UmVmUHRyPEF1ZGlvQnVzPiBBdWRpb0ZpbGVSZWFkZXI6OmNyZWF0ZUJ1cyhmbG9hdCBzYW1wbGVS
YXRlLCBib29sIG1peFRvTW9ubykKICAgICBzaXplX3QgYnVzQ2hhbm5lbENvdW50ID0gbWl4VG9N
b25vID8gMSA6IG51bWJlck9mQ2hhbm5lbHM7CiAKICAgICAvLyBDcmVhdGUgQXVkaW9CdXMgd2hl
cmUgd2UnbGwgcHV0IHRoZSBQQ00gYXVkaW8gZGF0YQotICAgIFJlZlB0cjxBdWRpb0J1cz4gYXVk
aW9CdXMgPSBBdWRpb0J1czo6Y3JlYXRlKGJ1c0NoYW5uZWxDb3VudCwgbnVtYmVyT2ZGcmFtZXMp
OworICAgIGF1dG8gYXVkaW9CdXMgPSBBdWRpb0J1czo6Y3JlYXRlKGJ1c0NoYW5uZWxDb3VudCwg
bnVtYmVyT2ZGcmFtZXMpOwogICAgIGF1ZGlvQnVzLT5zZXRTYW1wbGVSYXRlKG1fY2xpZW50RGF0
YUZvcm1hdC5tU2FtcGxlUmF0ZSk7IC8vIHNhdmUgZm9yIGxhdGVyCiAKICAgICAvLyBPbmx5IGFs
bG9jYXRlZCBpbiB0aGUgbWl4VG9Nb25vIGNhc2U7IGRlYWxsb2NhdGVkIG9uIGRlc3RydWN0aW9u
LgpAQCAtMjI4LDcgKzIyOCw3IEBAIFJlZlB0cjxBdWRpb0J1cz4gQXVkaW9GaWxlUmVhZGVyOjpj
cmVhdGVCdXMoZmxvYXQgc2FtcGxlUmF0ZSwgYm9vbCBtaXhUb01vbm8pCiAKICAgICBkZXN0cm95
QXVkaW9CdWZmZXJMaXN0KGJ1ZmZlckxpc3QpOwogCi0gICAgcmV0dXJuIGF1ZGlvQnVzLnJlbGVh
c2UoKTsKKyAgICByZXR1cm4gYXVkaW9CdXM7CiB9CiAKIFJlZlB0cjxBdWRpb0J1cz4gY3JlYXRl
QnVzRnJvbUF1ZGlvRmlsZShjb25zdCBjaGFyKiBmaWxlUGF0aCwgYm9vbCBtaXhUb01vbm8sIGZs
b2F0IHNhbXBsZVJhdGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGli
L1NoYXJlZEJ1ZmZlckdsaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFy
ZWRCdWZmZXJHbGliLmNwcAppbmRleCBlMTUyMmY2ZmFjMS4uYWQ3MzQ5ZDZmM2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcApAQCAt
MzEsNyArMzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRo
KQogewogICAgIGlmIChmaWxlUGF0aC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiAwOworICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIENTdHJpbmcgZmlsZW5hbWUgPSBmaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24oZmlsZVBhdGgpOwogICAgIEdVbmlxdWVPdXRQdHI8Z2NoYXI+IGNvbnRl
bnRzOwpAQCAtMzksMTIgKzM5LDEwIEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiAgICAgR1Vu
aXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwogICAgIGlmICghZ19maWxlX2dldF9jb250ZW50cyhm
aWxlbmFtZS5kYXRhKCksICZjb250ZW50cy5vdXRQdHIoKSwgJnNpemUsICZlcnJvci5vdXRQdHIo
KSkpIHsKICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gZnVsbHkgcmVhZCBjb250ZW50cyBv
ZiBmaWxlICVzIC0gJXMiLCBmaWxlbmFtZUZvckRpc3BsYXkoZmlsZVBhdGgpLnV0ZjgoKS5kYXRh
KCksIGVycm9yLT5tZXNzYWdlKTsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlc3VsdCA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGNvbnRlbnRzLmdldCgpLCBzaXplKTsKLQotICAgIHJldHVybiByZXN1
bHQucmVsZWFzZSgpOworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShjb250ZW50cy5n
ZXQoKSwgc2l6ZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvVXRpbGl0aWVzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvVXRpbGl0aWVzLmNw
cAppbmRleCA4YTNmZjMzZDAwMy4uOGQ5OTJmNjEwYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvVXRpbGl0aWVzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb1V0aWxpdGllcy5jcHAKQEAg
LTI4Miw3ICsyODIsNyBAQCBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBjb3B5Q2Fpcm9JbWFnZVN1
cmZhY2UoY2Fpcm9fc3VyZmFjZV90KiBvcmlnaW5hbFN1cmZhY2UpCiAgICAgY2Fpcm9fc2V0X3Nv
dXJjZV9zdXJmYWNlKGNyLmdldCgpLCBvcmlnaW5hbFN1cmZhY2UsIDAsIDApOwogICAgIGNhaXJv
X3NldF9vcGVyYXRvcihjci5nZXQoKSwgQ0FJUk9fT1BFUkFUT1JfU09VUkNFKTsKICAgICBjYWly
b19wYWludChjci5nZXQoKSk7Ci0gICAgcmV0dXJuIG5ld1N1cmZhY2UucmVsZWFzZSgpOworICAg
IHJldHVybiBuZXdTdXJmYWNlOwogfQogCiB2b2lkIGNvcHlSZWN0RnJvbUNhaXJvU3VyZmFjZVRv
Q29udGV4dChjYWlyb19zdXJmYWNlX3QqIGZyb20sIGNhaXJvX3QqIHRvLCBjb25zdCBJbnRTaXpl
JiBvZmZzZXQsIGNvbnN0IEludFJlY3QmIHJlY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCmluZGV4
IGJjN2I0ZGU0M2U2Li5mODQ1ZmM1MWNiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKQEAgLTMz
Myw3ICszMzMsNyBAQCBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBjb3B5U3VyZmFjZVRvSW1hZ2VB
bmRBZGp1c3RSZWN0KGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZQogdGVtcGxhdGUgPE11bHRpcGx5
IG11bHRpcGxpZWQ+CiBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IGdldEltYWdlRGF0YShjb25z
dCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbnRSZWN0JiBsb2dpY2FsUmVjdCwgY29uc3QgSW1hZ2VC
dWZmZXJEYXRhJiBkYXRhLCBjb25zdCBJbnRTaXplJiBzaXplLCBjb25zdCBJbnRTaXplJiBsb2dp
Y2FsU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlKQogewotICAgIFJlZlB0cjxVaW50OENsYW1w
ZWRBcnJheT4gcmVzdWx0ID0gVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQo
cmVjdC53aWR0aCgpICogcmVjdC5oZWlnaHQoKSAqIDQpOworICAgIGF1dG8gcmVzdWx0ID0gVWlu
dDhDbGFtcGVkQXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQocmVjdC53aWR0aCgpICogcmVjdC5o
ZWlnaHQoKSAqIDQpOwogICAgIGlmICghcmVzdWx0KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IApAQCAtNDEwLDcgKzQxMCw3IEBAIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gZ2V0SW1hZ2VE
YXRhKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEludFJlY3QmIGxvZ2ljCiAgICAgICAgIGRl
c3RSb3dzICs9IGRlc3RCeXRlc1BlclJvdzsKICAgICB9CiAKLSAgICByZXR1cm4gcmVzdWx0LnJl
bGVhc2UoKTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBVbml0
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4
IDVjNmQ5OTBkMjM0Li4xMGFiMjFiZGMyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMjg3MCwxMiArMjg3MCwxMSBAQCB2b2lkIFdlYlBh
Z2U6OmdldENvbnRlbnRzQXNTdHJpbmcodWludDY0X3QgY2FsbGJhY2tJRCkKICNpZiBFTkFCTEUo
TUhUTUwpCiB2b2lkIFdlYlBhZ2U6OmdldENvbnRlbnRzQXNNSFRNTERhdGEodWludDY0X3QgY2Fs
bGJhY2tJRCkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBNSFRNTEFyY2hp
dmU6OmdlbmVyYXRlTUhUTUxEYXRhKG1fcGFnZS5nZXQoKSk7CisgICAgYXV0byBidWZmZXIgPSBN
SFRNTEFyY2hpdmU6OmdlbmVyYXRlTUhUTUxEYXRhKG1fcGFnZS5nZXQoKSk7CiAKICAgICAvLyBG
SVhNRTogVXNlIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuCiAgICAgSVBDOjpEYXRhUmVmZXJl
bmNlIGRhdGFSZWZlcmVuY2U7Ci0gICAgaWYgKGJ1ZmZlcikKLSAgICAgICAgZGF0YVJlZmVyZW5j
ZSA9IElQQzo6RGF0YVJlZmVyZW5jZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihi
dWZmZXItPmRhdGEoKSksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICBkYXRhUmVmZXJlbmNlID0gSVBD
OjpEYXRhUmVmZXJlbmNlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGJ1ZmZlci0+
ZGF0YSgpKSwgYnVmZmVyLT5zaXplKCkpOwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6RGF0YUNhbGxiYWNrKGRhdGFSZWZlcmVuY2UsIGNhbGxiYWNrSUQpKTsKIH0KICNlbmRpZgpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUmVmUHRyLmNwcCBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1JlZlB0ci5jcHAKaW5kZXggMTcyZWZhNzYyN2Mu
Ljk1Zjk3ZDhkYTc5IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9S
ZWZQdHIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1JlZlB0ci5jcHAK
QEAgLTEwOCwxNCArMTA4LDYgQEAgVEVTVChXVEZfUmVmUHRyLCBCYXNpYykKICAgICAgICAgQVNT
RVJUX0VRKG51bGxwdHIsIHB0ci5nZXQoKSk7CiAgICAgfQogICAgIEFTU0VSVF9TVFJFUSgicmVm
KGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKLQotICAgIHsKLSAgICAgICAg
UmVmUHRyPFJlZkxvZ2dlcj4gcHRyKCZhKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIuZ2V0
KCkpOwotICAgICAgICBwdHIucmVsZWFzZSgpOwotICAgICAgICBBU1NFUlRfRVEobnVsbHB0ciwg
cHRyLmdldCgpKTsKLSAgICB9Ci0gICAgQVNTRVJUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwg
dGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogfQogCiBURVNUKFdURl9SZWZQdHIsIEFzc2lnblBhc3NS
ZWZUb1JlZlB0cikKQEAgLTEyNSw4ICsxMTcsNiBAQCBURVNUKFdURl9SZWZQdHIsIEFzc2lnblBh
c3NSZWZUb1JlZlB0cikKICAgICAgICAgUmVmPFJlZkxvZ2dlcj4gcGFzc1JlZihhKTsKICAgICAg
ICAgUmVmUHRyPFJlZkxvZ2dlcj4gcHRyID0gV1RGTW92ZShwYXNzUmVmKTsKICAgICAgICAgQVNT
RVJUX0VRKCZhLCBwdHIuZ2V0KCkpOwotICAgICAgICBwdHIucmVsZWFzZSgpOwotICAgICAgICBB
U1NFUlRfRVEobnVsbHB0ciwgcHRyLmdldCgpKTsKICAgICB9CiAgICAgQVNTRVJUX1NUUkVRKCJy
ZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogfQpAQCAtMzM2LDcgKzMy
Niw3IEBAIFRFU1QoV1RGX1JlZlB0ciwgUmVsZWFzZSkKIAogICAgIHsKICAgICAgICAgUmVmUHRy
PFJlZkxvZ2dlcj4gcDEgPSAmYTsKLSAgICAgICAgUmVmUHRyPFJlZkxvZ2dlcj4gcDIgPSBwMS5y
ZWxlYXNlKCk7CisgICAgICAgIFJlZlB0cjxSZWZMb2dnZXI+IHAyID0gV1RGTW92ZShwMSk7CiAg
ICAgICAgIEFTU0VSVF9FUShudWxscHRyLCBwMS5nZXQoKSk7CiAgICAgICAgIEFTU0VSVF9FUSgm
YSwgcDIuZ2V0KCkpOwogICAgIH0KQEAgLTM0NCw3ICszMzQsNyBAQCBURVNUKFdURl9SZWZQdHIs
IFJlbGVhc2UpCiAKICAgICB7CiAgICAgICAgIFJlZlB0cjxSZWZMb2dnZXI+IHAxID0gJmE7Ci0g
ICAgICAgIFJlZlB0cjxSZWZMb2dnZXI+IHAyKHAxLnJlbGVhc2UoKSk7CisgICAgICAgIFJlZlB0
cjxSZWZMb2dnZXI+IHAyKFdURk1vdmUocDEpKTsKICAgICAgICAgQVNTRVJUX0VRKG51bGxwdHIs
IHAxLmdldCgpKTsKICAgICAgICAgQVNTRVJUX0VRKCZhLCBwMi5nZXQoKSk7CiAgICAgfQpAQCAt
MzUyLDcgKzM0Miw3IEBAIFRFU1QoV1RGX1JlZlB0ciwgUmVsZWFzZSkKIAogICAgIHsKICAgICAg
ICAgUmVmUHRyPERlcml2ZWRSZWZMb2dnZXI+IHAxID0gJmE7Ci0gICAgICAgIFJlZlB0cjxSZWZM
b2dnZXI+IHAyID0gcDEucmVsZWFzZSgpOworICAgICAgICBSZWZQdHI8UmVmTG9nZ2VyPiBwMiA9
IFdURk1vdmUocDEpOwogICAgICAgICBBU1NFUlRfRVEobnVsbHB0ciwgcDEuZ2V0KCkpOwogICAg
ICAgICBBU1NFUlRfRVEoJmEsIHAyLmdldCgpKTsKICAgICB9CkBAIC0zNjQsNyArMzU0LDcgQEAg
VEVTVChXVEZfUmVmUHRyLCBSZWxlYXNlKQogICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLmdldCgp
KTsKICAgICAgICAgQVNTRVJUX0VRKCZiLCBwMi5nZXQoKSk7CiAgICAgICAgIGxvZygpIDw8ICJ8
ICI7Ci0gICAgICAgIHAxID0gcDIucmVsZWFzZSgpOworICAgICAgICBwMSA9IFdURk1vdmUocDIp
OwogICAgICAgICBBU1NFUlRfRVEoJmIsIHAxLmdldCgpKTsKICAgICAgICAgQVNTRVJUX0VRKG51
bGxwdHIsIHAyLmdldCgpKTsKICAgICAgICAgbG9nKCkgPDwgInwgIjsKQEAgLTM3Nyw3ICszNjcs
NyBAQCBURVNUKFdURl9SZWZQdHIsIFJlbGVhc2UpCiAgICAgICAgIEFTU0VSVF9FUSgmYSwgcDEu
Z2V0KCkpOwogICAgICAgICBBU1NFUlRfRVEoJmMsIHAyLmdldCgpKTsKICAgICAgICAgbG9nKCkg
PDwgInwgIjsKLSAgICAgICAgcDEgPSBwMi5yZWxlYXNlKCk7CisgICAgICAgIHAxID0gV1RGTW92
ZShwMik7CiAgICAgICAgIEFTU0VSVF9FUSgmYywgcDEuZ2V0KCkpOwogICAgICAgICBBU1NFUlRf
RVEobnVsbHB0ciwgcDIuZ2V0KCkpOwogICAgICAgICBsb2coKSA8PCAifCAiOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>310035</attachid>
            <date>2017-05-13 14:34:11 -0700</date>
            <delta_ts>2017-05-13 14:41:37 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>172074_release_wip.patch</filename>
            <type>text/plain</type>
            <size>15165</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1JlZlB0ci5oIGIvU291cmNlL1dURi93dGYvUmVm
UHRyLmgKaW5kZXggMjc3ZTY3NWRiM2MuLjc4MjEyOWY4Zjk1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9SZWZQdHIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9SZWZQdHIuaApAQCAtNjMsOCAr
NjMsNiBAQCBwdWJsaWM6CiAKICAgICBUKiBnZXQoKSBjb25zdCB7IHJldHVybiBtX3B0cjsgfQog
Ci0gICAgLy8gRklYTUU6IFJlbW92ZSByZWxlYXNlKCkgYW5kIGNoYW5nZSBhbGwgY2FsbCBzaXRl
cyB0byBjYWxsIFdURk1vdmUoKS4KLSAgICBSZWZQdHI8VD4gcmVsZWFzZSgpIHsgUmVmUHRyPFQ+
IHRtcCA9IGFkb3B0UmVmKG1fcHRyKTsgbV9wdHIgPSBudWxscHRyOyByZXR1cm4gdG1wOyB9CiAg
ICAgUmVmPFQ+IHJlbGVhc2VOb25OdWxsKCkgeyBBU1NFUlQobV9wdHIpOyBSZWY8VD4gdG1wKGFk
b3B0UmVmKCptX3B0cikpOyBtX3B0ciA9IG51bGxwdHI7IHJldHVybiB0bXA7IH0KICAgICBSZWY8
Y29uc3QgVD4gcmVsZWFzZUNvbnN0Tm9uTnVsbCgpIHsgQVNTRVJUKG1fcHRyKTsgUmVmPGNvbnN0
IFQ+IHRtcChhZG9wdFJlZigqbV9wdHIpKTsgbV9wdHIgPSBudWxscHRyOyByZXR1cm4gdG1wOyB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9Xb3JrUXVldWVXaW4uY3BwIGIvU291
cmNlL1dURi93dGYvd2luL1dvcmtRdWV1ZVdpbi5jcHAKaW5kZXggZTgxNTQ3NzM3NDYuLmJiZjAx
MWFlMTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi93aW4vV29ya1F1ZXVlV2luLmNwcAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vV29ya1F1ZXVlV2luLmNwcApAQCAtMTg3LDcgKzE4Nyw3
IEBAIHZvaWQgV29ya1F1ZXVlOjpkaXNwYXRjaEFmdGVyKFNlY29uZHMgZHVyYXRpb24sIEZ1bmN0
aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikKICAgICB9CiAKICAgICAvLyBUaGUgdGltZXIgY2FsbGJh
Y2sgd2lsbCBoYW5kbGUgZGVzdHJveWluZyBjb250ZXh0LgotICAgIGNvbnRleHQucmVsZWFzZSgp
LmxlYWtSZWYoKTsKKyAgICBjb250ZXh0LmxlYWtSZWYoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFy
c2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3Bw
CmluZGV4IDkzMTI1ZmNlMTM4Li5iMzk1MDFjMDVjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKQEAgLTYzMCw3ICs2MzAsNyBAQCBwdWJs
aWM6CiAgICAgewogICAgICAgICBpZiAoIW1fcmVzdWx0LT5sZW5ndGgoKSkKICAgICAgICAgICAg
IHJldHVybiBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShD
U1NWYWx1ZU5vcm1hbCk7Ci0gICAgICAgIHJldHVybiBtX3Jlc3VsdC5yZWxlYXNlKCk7CisgICAg
ICAgIHJldHVybiBXVEZNb3ZlKG1fcmVzdWx0KTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC04MzIs
NyArODMyLDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgaWYgKCFtX3Jlc3VsdC0+bGVuZ3Ro
KCkpCiAgICAgICAgICAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJ
ZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb3JtYWwpOwotICAgICAgICByZXR1cm4gbV9yZXN1bHQu
cmVsZWFzZSgpOworICAgICAgICByZXR1cm4gV1RGTW92ZShtX3Jlc3VsdCk7CiAgICAgfQogCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJI
ZWxwZXJzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJI
ZWxwZXJzLmNwcAppbmRleCA0YTMyYTU4YmMwYi4uMzQ5OTk5YjllN2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VySGVscGVycy5jcHAK
QEAgLTkzLDcgKzkzLDcgQEAgcHVibGljOgogICAgICAgICBpZiAoIW1fY2FsY1ZhbHVlKQogICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIG1fc291cmNlUmFuZ2UgPSBtX3Jhbmdl
OwotICAgICAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVWYWx1ZSht
X2NhbGNWYWx1ZS5yZWxlYXNlKCkpOworICAgICAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5n
bGV0b24oKS5jcmVhdGVWYWx1ZShXVEZNb3ZlKG1fY2FsY1ZhbHVlKSk7CiAgICAgfQogICAgIFJl
ZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZU51bWJlcigpCiAgICAgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAKaW5k
ZXggMmNhNjdlMjdiZTguLjYxYzYyNmIyOTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAKQEAgLTEzMCw3ICsxMzAsNyBA
QCBSZWZQdHI8TUhUTUxBcmNoaXZlPiBNSFRNTEFyY2hpdmU6OmNyZWF0ZShjb25zdCBVUkwmIHVy
bCwgU2hhcmVkQnVmZmVyJiBkYXRhKQogICAgIHJldHVybiBtYWluQXJjaGl2ZTsKIH0KIAotUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gTUhUTUxBcmNoaXZlOjpnZW5lcmF0ZU1IVE1MRGF0YShQYWdlKiBw
YWdlKQorUmVmPFNoYXJlZEJ1ZmZlcj4gTUhUTUxBcmNoaXZlOjpnZW5lcmF0ZU1IVE1MRGF0YShQ
YWdlKiBwYWdlKQogewogICAgIFZlY3RvcjxQYWdlU2VyaWFsaXplcjo6UmVzb3VyY2U+IHJlc291
cmNlczsKICAgICBQYWdlU2VyaWFsaXplciBwYWdlU2VyaWFsaXplcihyZXNvdXJjZXMpOwpAQCAt
MTYyLDcgKzE2Miw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IE1IVE1MQXJjaGl2ZTo6Z2VuZXJh
dGVNSFRNTERhdGEoUGFnZSogcGFnZSkKICAgICAvLyBXZSB1c2UgdXRmOCgpIGJlbG93IGluc3Rl
YWQgb2YgYXNjaWkoKSBhcyBhc2NpaSgpIHJlcGxhY2VzIENSTEZzIHdpdGggPz8gKHdlIHN0aWxs
IG9ubHkgaGF2ZSBwdXQgQVNDSUkgY2hhcmFjdGVycyBpbiBpdCkuCiAgICAgQVNTRVJUKHN0cmlu
Z0J1aWxkZXIudG9TdHJpbmcoKS5jb250YWluc09ubHlBU0NJSSgpKTsKICAgICBDU3RyaW5nIGFz
Y2lpU3RyaW5nID0gc3RyaW5nQnVpbGRlci50b1N0cmluZygpLnV0ZjgoKTsKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBtaHRtbERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIGF1
dG8gbWh0bWxEYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBtaHRtbERhdGEtPmFw
cGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lpU3RyaW5nLmxlbmd0aCgpKTsKIAogICAgIGZv
ciAoYXV0byYgcmVzb3VyY2UgOiByZXNvdXJjZXMpIHsKQEAgLTIxMyw3ICsyMTMsNyBAQCBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBNSFRNTEFyY2hpdmU6OmdlbmVyYXRlTUhUTUxEYXRhKFBhZ2UqIHBh
Z2UpCiAgICAgYXNjaWlTdHJpbmcgPSBtYWtlU3RyaW5nKCItLSIsIGJvdW5kYXJ5LCAiLS1cclxu
IikudXRmOCgpOwogICAgIG1odG1sRGF0YS0+YXBwZW5kKGFzY2lpU3RyaW5nLmRhdGEoKSwgYXNj
aWlTdHJpbmcubGVuZ3RoKCkpOwogCi0gICAgcmV0dXJuIG1odG1sRGF0YS5yZWxlYXNlKCk7Cisg
ICAgcmV0dXJuIG1odG1sRGF0YTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuaAppbmRleCA4NTI0NjU5YWFiMi4uM2QyZGI3
Yzk2MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01I
VE1MQXJjaGl2ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01I
VE1MQXJjaGl2ZS5oCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPE1I
VE1MQXJjaGl2ZT4gY3JlYXRlKCk7CiAgICAgc3RhdGljIFJlZlB0cjxNSFRNTEFyY2hpdmU+IGNy
ZWF0ZShjb25zdCBVUkwmLCBTaGFyZWRCdWZmZXImKTsKIAotICAgIHN0YXRpYyBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBnZW5lcmF0ZU1IVE1MRGF0YShQYWdlKik7CisgICAgc3RhdGljIFJlZjxTaGFy
ZWRCdWZmZXI+IGdlbmVyYXRlTUhUTUxEYXRhKFBhZ2UqKTsKIAogICAgIHZpcnR1YWwgfk1IVE1M
QXJjaGl2ZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9t
aHRtbC9NSFRNTFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRt
bC9NSFRNTFBhcnNlci5jcHAKaW5kZXggZTFiMTA0Y2UxZGEuLjVmZDM5YmU3YmQxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3Bw
CkBAIC02OCw3ICs2OCw3IEBAIFJlZlB0cjxNSFRNTEFyY2hpdmU+IE1IVE1MUGFyc2VyOjpwYXJz
ZUFyY2hpdmVXaXRoSGVhZGVyKE1JTUVIZWFkZXIqIGhlYWRlcikKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgfQogCi0gICAgUmVmUHRyPE1IVE1MQXJjaGl2ZT4gYXJjaGl2ZSA9IE1IVE1M
QXJjaGl2ZTo6Y3JlYXRlKCk7CisgICAgYXV0byBhcmNoaXZlID0gTUhUTUxBcmNoaXZlOjpjcmVh
dGUoKTsKICAgICBpZiAoIWhlYWRlci0+aXNNdWx0aXBhcnQoKSkgewogICAgICAgICAvLyBXaXRo
IElFIGEgcGFnZSB3aXRoIG5vIHJlc291cmNlIGlzIG5vdCBtdWx0aS1wYXJ0LgogICAgICAgICBi
b29sIGVuZE9mQXJjaGl2ZVJlYWNoZWQgPSBmYWxzZTsKQEAgLTc2LDcgKzc2LDcgQEAgUmVmUHRy
PE1IVE1MQXJjaGl2ZT4gTUhUTUxQYXJzZXI6OnBhcnNlQXJjaGl2ZVdpdGhIZWFkZXIoTUlNRUhl
YWRlciogaGVhZGVyKQogICAgICAgICBpZiAoIXJlc291cmNlKQogICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgICAgIGFyY2hpdmUtPnNldE1haW5SZXNvdXJjZShyZXNvdXJjZS5yZWxl
YXNlTm9uTnVsbCgpKTsKLSAgICAgICAgcmV0dXJuIGFyY2hpdmU7CisgICAgICAgIHJldHVybiBX
VEZNb3ZlKGFyY2hpdmUpOwogICAgIH0KIAogICAgIC8vIFNraXAgdGhlIG1lc3NhZ2UgY29udGVu
dCAoaXQncyBhIGdlbmVyaWMgYnJvd3NlciBzcGVjaWZpYyBtZXNzYWdlKS4KQEAgLTEwMCw3ICsx
MDAsNyBAQCBSZWZQdHI8TUhUTUxBcmNoaXZlPiBNSFRNTFBhcnNlcjo6cGFyc2VBcmNoaXZlV2l0
aEhlYWRlcihNSU1FSGVhZGVyKiBoZWFkZXIpCiAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGVu
ZE9mUGFydFJlYWNoZWQsIGVuZE9mUGFydFJlYWNoZWQpOwogICAgICAgICAgICAgLy8gVGhlIHRv
cC1mcmFtZSBpcyB0aGUgZmlyc3QgZnJhbWUgZm91bmQsIHJlZ2FyZGxlc3Mgb2YgdGhlIG5lc3Rp
bmcgbGV2ZWwuCiAgICAgICAgICAgICBpZiAoc3ViZnJhbWVBcmNoaXZlLT5tYWluUmVzb3VyY2Uo
KSkKLSAgICAgICAgICAgICAgICBhZGRSZXNvdXJjZVRvQXJjaGl2ZShzdWJmcmFtZUFyY2hpdmUt
Pm1haW5SZXNvdXJjZSgpLCBhcmNoaXZlLmdldCgpKTsKKyAgICAgICAgICAgICAgICBhZGRSZXNv
dXJjZVRvQXJjaGl2ZShzdWJmcmFtZUFyY2hpdmUtPm1haW5SZXNvdXJjZSgpLCBhcmNoaXZlLnB0
cigpKTsKICAgICAgICAgICAgIGFyY2hpdmUtPmFkZFN1YmZyYW1lQXJjaGl2ZShzdWJmcmFtZUFy
Y2hpdmUucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
fQpAQCAtMTEwLDEwICsxMTAsMTAgQEAgUmVmUHRyPE1IVE1MQXJjaGl2ZT4gTUhUTUxQYXJzZXI6
OnBhcnNlQXJjaGl2ZVdpdGhIZWFkZXIoTUlNRUhlYWRlciogaGVhZGVyKQogICAgICAgICAgICAg
TE9HX0VSUk9SKCJGYWlsZWQgdG8gcGFyc2UgTUhUTUwgcGFydC4iKTsKICAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgICAgICB9Ci0gICAgICAgIGFkZFJlc291cmNlVG9BcmNoaXZlKHJl
c291cmNlLmdldCgpLCBhcmNoaXZlLmdldCgpKTsKKyAgICAgICAgYWRkUmVzb3VyY2VUb0FyY2hp
dmUocmVzb3VyY2UuZ2V0KCksIGFyY2hpdmUucHRyKCkpOwogICAgIH0KIAotICAgIHJldHVybiBh
cmNoaXZlLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gV1RGTW92ZShhcmNoaXZlKTsKIH0KIAogdm9p
ZCBNSFRNTFBhcnNlcjo6YWRkUmVzb3VyY2VUb0FyY2hpdmUoQXJjaGl2ZVJlc291cmNlKiByZXNv
dXJjZSwgTUhUTUxBcmNoaXZlKiBhcmNoaXZlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvRmlsZVJlYWRlcklPUy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9GaWxlUmVhZGVySU9TLmNwcAppbmRleCA1MDNlZjQy
ZDAyOC4uOGE3Zjc3ZmE0MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL2lvcy9BdWRpb0ZpbGVSZWFkZXJJT1MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL2lvcy9BdWRpb0ZpbGVSZWFkZXJJT1MuY3BwCkBAIC0xNzcsNyArMTc3LDcgQEAg
UmVmUHRyPEF1ZGlvQnVzPiBBdWRpb0ZpbGVSZWFkZXI6OmNyZWF0ZUJ1cyhmbG9hdCBzYW1wbGVS
YXRlLCBib29sIG1peFRvTW9ubykKICAgICBzaXplX3QgYnVzQ2hhbm5lbENvdW50ID0gbWl4VG9N
b25vID8gMSA6IG51bWJlck9mQ2hhbm5lbHM7CiAKICAgICAvLyBDcmVhdGUgQXVkaW9CdXMgd2hl
cmUgd2UnbGwgcHV0IHRoZSBQQ00gYXVkaW8gZGF0YQotICAgIFJlZlB0cjxBdWRpb0J1cz4gYXVk
aW9CdXMgPSBBdWRpb0J1czo6Y3JlYXRlKGJ1c0NoYW5uZWxDb3VudCwgbnVtYmVyT2ZGcmFtZXMp
OworICAgIGF1dG8gYXVkaW9CdXMgPSBBdWRpb0J1czo6Y3JlYXRlKGJ1c0NoYW5uZWxDb3VudCwg
bnVtYmVyT2ZGcmFtZXMpOwogICAgIGF1ZGlvQnVzLT5zZXRTYW1wbGVSYXRlKG1fY2xpZW50RGF0
YUZvcm1hdC5tU2FtcGxlUmF0ZSk7IC8vIHNhdmUgZm9yIGxhdGVyCiAKICAgICAvLyBPbmx5IGFs
bG9jYXRlZCBpbiB0aGUgbWl4VG9Nb25vIGNhc2U7IGRlYWxsb2NhdGVkIG9uIGRlc3RydWN0aW9u
LgpAQCAtMjI4LDcgKzIyOCw3IEBAIFJlZlB0cjxBdWRpb0J1cz4gQXVkaW9GaWxlUmVhZGVyOjpj
cmVhdGVCdXMoZmxvYXQgc2FtcGxlUmF0ZSwgYm9vbCBtaXhUb01vbm8pCiAKICAgICBkZXN0cm95
QXVkaW9CdWZmZXJMaXN0KGJ1ZmZlckxpc3QpOwogCi0gICAgcmV0dXJuIGF1ZGlvQnVzLnJlbGVh
c2UoKTsKKyAgICByZXR1cm4gYXVkaW9CdXM7CiB9CiAKIFJlZlB0cjxBdWRpb0J1cz4gY3JlYXRl
QnVzRnJvbUF1ZGlvRmlsZShjb25zdCBjaGFyKiBmaWxlUGF0aCwgYm9vbCBtaXhUb01vbm8sIGZs
b2F0IHNhbXBsZVJhdGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGli
L1NoYXJlZEJ1ZmZlckdsaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFy
ZWRCdWZmZXJHbGliLmNwcAppbmRleCBlMTUyMmY2ZmFjMS4uYWQ3MzQ5ZDZmM2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcApAQCAt
MzEsNyArMzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRo
KQogewogICAgIGlmIChmaWxlUGF0aC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiAwOworICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIENTdHJpbmcgZmlsZW5hbWUgPSBmaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24oZmlsZVBhdGgpOwogICAgIEdVbmlxdWVPdXRQdHI8Z2NoYXI+IGNvbnRl
bnRzOwpAQCAtMzksMTIgKzM5LDEwIEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiAgICAgR1Vu
aXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwogICAgIGlmICghZ19maWxlX2dldF9jb250ZW50cyhm
aWxlbmFtZS5kYXRhKCksICZjb250ZW50cy5vdXRQdHIoKSwgJnNpemUsICZlcnJvci5vdXRQdHIo
KSkpIHsKICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gZnVsbHkgcmVhZCBjb250ZW50cyBv
ZiBmaWxlICVzIC0gJXMiLCBmaWxlbmFtZUZvckRpc3BsYXkoZmlsZVBhdGgpLnV0ZjgoKS5kYXRh
KCksIGVycm9yLT5tZXNzYWdlKTsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlc3VsdCA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGNvbnRlbnRzLmdldCgpLCBzaXplKTsKLQotICAgIHJldHVybiByZXN1
bHQucmVsZWFzZSgpOworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShjb250ZW50cy5n
ZXQoKSwgc2l6ZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvVXRpbGl0aWVzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvVXRpbGl0aWVzLmNw
cAppbmRleCA4YTNmZjMzZDAwMy4uOGQ5OTJmNjEwYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvVXRpbGl0aWVzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb1V0aWxpdGllcy5jcHAKQEAg
LTI4Miw3ICsyODIsNyBAQCBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBjb3B5Q2Fpcm9JbWFnZVN1
cmZhY2UoY2Fpcm9fc3VyZmFjZV90KiBvcmlnaW5hbFN1cmZhY2UpCiAgICAgY2Fpcm9fc2V0X3Nv
dXJjZV9zdXJmYWNlKGNyLmdldCgpLCBvcmlnaW5hbFN1cmZhY2UsIDAsIDApOwogICAgIGNhaXJv
X3NldF9vcGVyYXRvcihjci5nZXQoKSwgQ0FJUk9fT1BFUkFUT1JfU09VUkNFKTsKICAgICBjYWly
b19wYWludChjci5nZXQoKSk7Ci0gICAgcmV0dXJuIG5ld1N1cmZhY2UucmVsZWFzZSgpOworICAg
IHJldHVybiBuZXdTdXJmYWNlOwogfQogCiB2b2lkIGNvcHlSZWN0RnJvbUNhaXJvU3VyZmFjZVRv
Q29udGV4dChjYWlyb19zdXJmYWNlX3QqIGZyb20sIGNhaXJvX3QqIHRvLCBjb25zdCBJbnRTaXpl
JiBvZmZzZXQsIGNvbnN0IEludFJlY3QmIHJlY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCmluZGV4
IGJjN2I0ZGU0M2U2Li5mODQ1ZmM1MWNiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKQEAgLTMz
Myw3ICszMzMsNyBAQCBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBjb3B5U3VyZmFjZVRvSW1hZ2VB
bmRBZGp1c3RSZWN0KGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZQogdGVtcGxhdGUgPE11bHRpcGx5
IG11bHRpcGxpZWQ+CiBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IGdldEltYWdlRGF0YShjb25z
dCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbnRSZWN0JiBsb2dpY2FsUmVjdCwgY29uc3QgSW1hZ2VC
dWZmZXJEYXRhJiBkYXRhLCBjb25zdCBJbnRTaXplJiBzaXplLCBjb25zdCBJbnRTaXplJiBsb2dp
Y2FsU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlKQogewotICAgIFJlZlB0cjxVaW50OENsYW1w
ZWRBcnJheT4gcmVzdWx0ID0gVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQo
cmVjdC53aWR0aCgpICogcmVjdC5oZWlnaHQoKSAqIDQpOworICAgIGF1dG8gcmVzdWx0ID0gVWlu
dDhDbGFtcGVkQXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQocmVjdC53aWR0aCgpICogcmVjdC5o
ZWlnaHQoKSAqIDQpOwogICAgIGlmICghcmVzdWx0KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IApAQCAtNDEwLDcgKzQxMCw3IEBAIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gZ2V0SW1hZ2VE
YXRhKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEludFJlY3QmIGxvZ2ljCiAgICAgICAgIGRl
c3RSb3dzICs9IGRlc3RCeXRlc1BlclJvdzsKICAgICB9CiAKLSAgICByZXR1cm4gcmVzdWx0LnJl
bGVhc2UoKTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBVbml0
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ljb25H
dGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ljb25HdGsuY3Bw
CmluZGV4IDg4MGM0Yzk3OTRhLi5hZjE4NWE1NGNkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ljb25HdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9JY29uR3RrLmNwcApAQCAtOTMsMTEgKzkzLDExIEBAIHN0
YXRpYyBTdHJpbmcgbG9va3VwSWNvbk5hbWUoU3RyaW5nIE1JTUVUeXBlKQogUmVmUHRyPEljb24+
IEljb246OmNyZWF0ZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVz
KQogewogICAgIGlmIChmaWxlbmFtZXMuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gMDsKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBpZiAoZmlsZW5hbWVzLnNpemUoKSA9PSAxKSB7
CiAgICAgICAgIGlmICghZ19wYXRoX3NraXBfcm9vdChmaWxlbmFtZXNbMF0udXRmOCgpLmRhdGEo
KSkpCi0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwog
CiAgICAgICAgIFN0cmluZyBNSU1FVHlwZSA9IE1JTUVUeXBlUmVnaXN0cnk6OmdldE1JTUVUeXBl
Rm9yUGF0aChmaWxlbmFtZXNbMF0pOwogICAgICAgICBTdHJpbmcgaWNvbk5hbWUgPSBsb29rdXBJ
Y29uTmFtZShNSU1FVHlwZSk7CkBAIC0xMDUsOCArMTA1LDggQEAgUmVmUHRyPEljb24+IEljb246
OmNyZWF0ZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzKQogICAg
ICAgICBSZWZQdHI8SWNvbj4gaWNvbiA9IGFkb3B0UmVmKG5ldyBJY29uKTsKICAgICAgICAgaWNv
bi0+bV9pY29uID0gZ3RrX2ljb25fdGhlbWVfbG9hZF9pY29uKGd0a19pY29uX3RoZW1lX2dldF9k
ZWZhdWx0KCksIGljb25OYW1lLnV0ZjgoKS5kYXRhKCksIDE2LCBHVEtfSUNPTl9MT09LVVBfVVNF
X0JVSUxUSU4sIDApOwogICAgICAgICBpZiAoIWljb24tPm1faWNvbikKLSAgICAgICAgICAgIHJl
dHVybiAwOwotICAgICAgICByZXR1cm4gaWNvbi5yZWxlYXNlKCk7CisgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIGljb247CiAgICAgfQogCiAgICAgLy9GSVhNRTog
SW1wbGVtZW50IHRoaXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcAppbmRleCA1YzZkOTkwZDIzNC4uMTBhYjIxYmRjMjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTI4NzAsMTIgKzI4NzAsMTEg
QEAgdm9pZCBXZWJQYWdlOjpnZXRDb250ZW50c0FzU3RyaW5nKHVpbnQ2NF90IGNhbGxiYWNrSUQp
CiAjaWYgRU5BQkxFKE1IVE1MKQogdm9pZCBXZWJQYWdlOjpnZXRDb250ZW50c0FzTUhUTUxEYXRh
KHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVy
ID0gTUhUTUxBcmNoaXZlOjpnZW5lcmF0ZU1IVE1MRGF0YShtX3BhZ2UuZ2V0KCkpOworICAgIGF1
dG8gYnVmZmVyID0gTUhUTUxBcmNoaXZlOjpnZW5lcmF0ZU1IVE1MRGF0YShtX3BhZ2UuZ2V0KCkp
OwogCiAgICAgLy8gRklYTUU6IFVzZSBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLgogICAgIElQ
Qzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlOwotICAgIGlmIChidWZmZXIpCi0gICAgICAg
IGRhdGFSZWZlcmVuY2UgPSBJUEM6OkRhdGFSZWZlcmVuY2UocmVpbnRlcnByZXRfY2FzdDxjb25z
dCB1aW50OF90Kj4oYnVmZmVyLT5kYXRhKCkpLCBidWZmZXItPnNpemUoKSk7CisgICAgZGF0YVJl
ZmVyZW5jZSA9IElQQzo6RGF0YVJlZmVyZW5jZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4
X3QqPihidWZmZXItPmRhdGEoKSksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkRhdGFDYWxsYmFjayhkYXRhUmVmZXJlbmNlLCBjYWxsYmFja0lEKSk7
CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1Jl
ZlB0ci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SZWZQdHIuY3BwCmluZGV4
IDE3MmVmYTc2MjdjLi45NWY5N2Q4ZGE3OSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvUmVmUHRyLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9SZWZQdHIuY3BwCkBAIC0xMDgsMTQgKzEwOCw2IEBAIFRFU1QoV1RGX1JlZlB0ciwgQmFzaWMp
CiAgICAgICAgIEFTU0VSVF9FUShudWxscHRyLCBwdHIuZ2V0KCkpOwogICAgIH0KICAgICBBU1NF
UlRfU1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7Ci0KLSAg
ICB7Ci0gICAgICAgIFJlZlB0cjxSZWZMb2dnZXI+IHB0cigmYSk7Ci0gICAgICAgIEFTU0VSVF9F
USgmYSwgcHRyLmdldCgpKTsKLSAgICAgICAgcHRyLnJlbGVhc2UoKTsKLSAgICAgICAgQVNTRVJU
X0VRKG51bGxwdHIsIHB0ci5nZXQoKSk7Ci0gICAgfQotICAgIEFTU0VSVF9TVFJFUSgicmVmKGEp
IGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIH0KIAogVEVTVChXVEZfUmVmUHRy
LCBBc3NpZ25QYXNzUmVmVG9SZWZQdHIpCkBAIC0xMjUsOCArMTE3LDYgQEAgVEVTVChXVEZfUmVm
UHRyLCBBc3NpZ25QYXNzUmVmVG9SZWZQdHIpCiAgICAgICAgIFJlZjxSZWZMb2dnZXI+IHBhc3NS
ZWYoYSk7CiAgICAgICAgIFJlZlB0cjxSZWZMb2dnZXI+IHB0ciA9IFdURk1vdmUocGFzc1JlZik7
CiAgICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLmdldCgpKTsKLSAgICAgICAgcHRyLnJlbGVhc2Uo
KTsKLSAgICAgICAgQVNTRVJUX0VRKG51bGxwdHIsIHB0ci5nZXQoKSk7CiAgICAgfQogICAgIEFT
U0VSVF9TVFJFUSgicmVmKGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIH0K
QEAgLTMzNiw3ICszMjYsNyBAQCBURVNUKFdURl9SZWZQdHIsIFJlbGVhc2UpCiAKICAgICB7CiAg
ICAgICAgIFJlZlB0cjxSZWZMb2dnZXI+IHAxID0gJmE7Ci0gICAgICAgIFJlZlB0cjxSZWZMb2dn
ZXI+IHAyID0gcDEucmVsZWFzZSgpOworICAgICAgICBSZWZQdHI8UmVmTG9nZ2VyPiBwMiA9IFdU
Rk1vdmUocDEpOwogICAgICAgICBBU1NFUlRfRVEobnVsbHB0ciwgcDEuZ2V0KCkpOwogICAgICAg
ICBBU1NFUlRfRVEoJmEsIHAyLmdldCgpKTsKICAgICB9CkBAIC0zNDQsNyArMzM0LDcgQEAgVEVT
VChXVEZfUmVmUHRyLCBSZWxlYXNlKQogCiAgICAgewogICAgICAgICBSZWZQdHI8UmVmTG9nZ2Vy
PiBwMSA9ICZhOwotICAgICAgICBSZWZQdHI8UmVmTG9nZ2VyPiBwMihwMS5yZWxlYXNlKCkpOwor
ICAgICAgICBSZWZQdHI8UmVmTG9nZ2VyPiBwMihXVEZNb3ZlKHAxKSk7CiAgICAgICAgIEFTU0VS
VF9FUShudWxscHRyLCBwMS5nZXQoKSk7CiAgICAgICAgIEFTU0VSVF9FUSgmYSwgcDIuZ2V0KCkp
OwogICAgIH0KQEAgLTM1Miw3ICszNDIsNyBAQCBURVNUKFdURl9SZWZQdHIsIFJlbGVhc2UpCiAK
ICAgICB7CiAgICAgICAgIFJlZlB0cjxEZXJpdmVkUmVmTG9nZ2VyPiBwMSA9ICZhOwotICAgICAg
ICBSZWZQdHI8UmVmTG9nZ2VyPiBwMiA9IHAxLnJlbGVhc2UoKTsKKyAgICAgICAgUmVmUHRyPFJl
ZkxvZ2dlcj4gcDIgPSBXVEZNb3ZlKHAxKTsKICAgICAgICAgQVNTRVJUX0VRKG51bGxwdHIsIHAx
LmdldCgpKTsKICAgICAgICAgQVNTRVJUX0VRKCZhLCBwMi5nZXQoKSk7CiAgICAgfQpAQCAtMzY0
LDcgKzM1NCw3IEBAIFRFU1QoV1RGX1JlZlB0ciwgUmVsZWFzZSkKICAgICAgICAgQVNTRVJUX0VR
KCZhLCBwMS5nZXQoKSk7CiAgICAgICAgIEFTU0VSVF9FUSgmYiwgcDIuZ2V0KCkpOwogICAgICAg
ICBsb2coKSA8PCAifCAiOwotICAgICAgICBwMSA9IHAyLnJlbGVhc2UoKTsKKyAgICAgICAgcDEg
PSBXVEZNb3ZlKHAyKTsKICAgICAgICAgQVNTRVJUX0VRKCZiLCBwMS5nZXQoKSk7CiAgICAgICAg
IEFTU0VSVF9FUShudWxscHRyLCBwMi5nZXQoKSk7CiAgICAgICAgIGxvZygpIDw8ICJ8ICI7CkBA
IC0zNzcsNyArMzY3LDcgQEAgVEVTVChXVEZfUmVmUHRyLCBSZWxlYXNlKQogICAgICAgICBBU1NF
UlRfRVEoJmEsIHAxLmdldCgpKTsKICAgICAgICAgQVNTRVJUX0VRKCZjLCBwMi5nZXQoKSk7CiAg
ICAgICAgIGxvZygpIDw8ICJ8ICI7Ci0gICAgICAgIHAxID0gcDIucmVsZWFzZSgpOworICAgICAg
ICBwMSA9IFdURk1vdmUocDIpOwogICAgICAgICBBU1NFUlRfRVEoJmMsIHAxLmdldCgpKTsKICAg
ICAgICAgQVNTRVJUX0VRKG51bGxwdHIsIHAyLmdldCgpKTsKICAgICAgICAgbG9nKCkgPDwgInwg
IjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>310036</attachid>
            <date>2017-05-13 14:41:37 -0700</date>
            <delta_ts>2017-05-13 14:51:29 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>172074_release_wip.patch</filename>
            <type>text/plain</type>
            <size>15821</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1JlZlB0ci5oIGIvU291cmNlL1dURi93dGYvUmVm
UHRyLmgKaW5kZXggMjc3ZTY3NWRiM2MuLjc4MjEyOWY4Zjk1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9SZWZQdHIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9SZWZQdHIuaApAQCAtNjMsOCAr
NjMsNiBAQCBwdWJsaWM6CiAKICAgICBUKiBnZXQoKSBjb25zdCB7IHJldHVybiBtX3B0cjsgfQog
Ci0gICAgLy8gRklYTUU6IFJlbW92ZSByZWxlYXNlKCkgYW5kIGNoYW5nZSBhbGwgY2FsbCBzaXRl
cyB0byBjYWxsIFdURk1vdmUoKS4KLSAgICBSZWZQdHI8VD4gcmVsZWFzZSgpIHsgUmVmUHRyPFQ+
IHRtcCA9IGFkb3B0UmVmKG1fcHRyKTsgbV9wdHIgPSBudWxscHRyOyByZXR1cm4gdG1wOyB9CiAg
ICAgUmVmPFQ+IHJlbGVhc2VOb25OdWxsKCkgeyBBU1NFUlQobV9wdHIpOyBSZWY8VD4gdG1wKGFk
b3B0UmVmKCptX3B0cikpOyBtX3B0ciA9IG51bGxwdHI7IHJldHVybiB0bXA7IH0KICAgICBSZWY8
Y29uc3QgVD4gcmVsZWFzZUNvbnN0Tm9uTnVsbCgpIHsgQVNTRVJUKG1fcHRyKTsgUmVmPGNvbnN0
IFQ+IHRtcChhZG9wdFJlZigqbV9wdHIpKTsgbV9wdHIgPSBudWxscHRyOyByZXR1cm4gdG1wOyB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9Xb3JrUXVldWVXaW4uY3BwIGIvU291
cmNlL1dURi93dGYvd2luL1dvcmtRdWV1ZVdpbi5jcHAKaW5kZXggZTgxNTQ3NzM3NDYuLmJiZjAx
MWFlMTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi93aW4vV29ya1F1ZXVlV2luLmNwcAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vV29ya1F1ZXVlV2luLmNwcApAQCAtMTg3LDcgKzE4Nyw3
IEBAIHZvaWQgV29ya1F1ZXVlOjpkaXNwYXRjaEFmdGVyKFNlY29uZHMgZHVyYXRpb24sIEZ1bmN0
aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikKICAgICB9CiAKICAgICAvLyBUaGUgdGltZXIgY2FsbGJh
Y2sgd2lsbCBoYW5kbGUgZGVzdHJveWluZyBjb250ZXh0LgotICAgIGNvbnRleHQucmVsZWFzZSgp
LmxlYWtSZWYoKTsKKyAgICBjb250ZXh0LmxlYWtSZWYoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFy
c2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3Bw
CmluZGV4IDkzMTI1ZmNlMTM4Li5iMzk1MDFjMDVjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKQEAgLTYzMCw3ICs2MzAsNyBAQCBwdWJs
aWM6CiAgICAgewogICAgICAgICBpZiAoIW1fcmVzdWx0LT5sZW5ndGgoKSkKICAgICAgICAgICAg
IHJldHVybiBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShD
U1NWYWx1ZU5vcm1hbCk7Ci0gICAgICAgIHJldHVybiBtX3Jlc3VsdC5yZWxlYXNlKCk7CisgICAg
ICAgIHJldHVybiBXVEZNb3ZlKG1fcmVzdWx0KTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC04MzIs
NyArODMyLDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgaWYgKCFtX3Jlc3VsdC0+bGVuZ3Ro
KCkpCiAgICAgICAgICAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJ
ZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb3JtYWwpOwotICAgICAgICByZXR1cm4gbV9yZXN1bHQu
cmVsZWFzZSgpOworICAgICAgICByZXR1cm4gV1RGTW92ZShtX3Jlc3VsdCk7CiAgICAgfQogCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJI
ZWxwZXJzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJI
ZWxwZXJzLmNwcAppbmRleCA0YTMyYTU4YmMwYi4uMzQ5OTk5YjllN2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VySGVscGVycy5jcHAK
QEAgLTkzLDcgKzkzLDcgQEAgcHVibGljOgogICAgICAgICBpZiAoIW1fY2FsY1ZhbHVlKQogICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIG1fc291cmNlUmFuZ2UgPSBtX3Jhbmdl
OwotICAgICAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVWYWx1ZSht
X2NhbGNWYWx1ZS5yZWxlYXNlKCkpOworICAgICAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5n
bGV0b24oKS5jcmVhdGVWYWx1ZShXVEZNb3ZlKG1fY2FsY1ZhbHVlKSk7CiAgICAgfQogICAgIFJl
ZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZU51bWJlcigpCiAgICAgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAKaW5k
ZXggMmNhNjdlMjdiZTguLjYxYzYyNmIyOTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAKQEAgLTEzMCw3ICsxMzAsNyBA
QCBSZWZQdHI8TUhUTUxBcmNoaXZlPiBNSFRNTEFyY2hpdmU6OmNyZWF0ZShjb25zdCBVUkwmIHVy
bCwgU2hhcmVkQnVmZmVyJiBkYXRhKQogICAgIHJldHVybiBtYWluQXJjaGl2ZTsKIH0KIAotUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gTUhUTUxBcmNoaXZlOjpnZW5lcmF0ZU1IVE1MRGF0YShQYWdlKiBw
YWdlKQorUmVmPFNoYXJlZEJ1ZmZlcj4gTUhUTUxBcmNoaXZlOjpnZW5lcmF0ZU1IVE1MRGF0YShQ
YWdlKiBwYWdlKQogewogICAgIFZlY3RvcjxQYWdlU2VyaWFsaXplcjo6UmVzb3VyY2U+IHJlc291
cmNlczsKICAgICBQYWdlU2VyaWFsaXplciBwYWdlU2VyaWFsaXplcihyZXNvdXJjZXMpOwpAQCAt
MTYyLDcgKzE2Miw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IE1IVE1MQXJjaGl2ZTo6Z2VuZXJh
dGVNSFRNTERhdGEoUGFnZSogcGFnZSkKICAgICAvLyBXZSB1c2UgdXRmOCgpIGJlbG93IGluc3Rl
YWQgb2YgYXNjaWkoKSBhcyBhc2NpaSgpIHJlcGxhY2VzIENSTEZzIHdpdGggPz8gKHdlIHN0aWxs
IG9ubHkgaGF2ZSBwdXQgQVNDSUkgY2hhcmFjdGVycyBpbiBpdCkuCiAgICAgQVNTRVJUKHN0cmlu
Z0J1aWxkZXIudG9TdHJpbmcoKS5jb250YWluc09ubHlBU0NJSSgpKTsKICAgICBDU3RyaW5nIGFz
Y2lpU3RyaW5nID0gc3RyaW5nQnVpbGRlci50b1N0cmluZygpLnV0ZjgoKTsKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBtaHRtbERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIGF1
dG8gbWh0bWxEYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBtaHRtbERhdGEtPmFw
cGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lpU3RyaW5nLmxlbmd0aCgpKTsKIAogICAgIGZv
ciAoYXV0byYgcmVzb3VyY2UgOiByZXNvdXJjZXMpIHsKQEAgLTIxMyw3ICsyMTMsNyBAQCBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBNSFRNTEFyY2hpdmU6OmdlbmVyYXRlTUhUTUxEYXRhKFBhZ2UqIHBh
Z2UpCiAgICAgYXNjaWlTdHJpbmcgPSBtYWtlU3RyaW5nKCItLSIsIGJvdW5kYXJ5LCAiLS1cclxu
IikudXRmOCgpOwogICAgIG1odG1sRGF0YS0+YXBwZW5kKGFzY2lpU3RyaW5nLmRhdGEoKSwgYXNj
aWlTdHJpbmcubGVuZ3RoKCkpOwogCi0gICAgcmV0dXJuIG1odG1sRGF0YS5yZWxlYXNlKCk7Cisg
ICAgcmV0dXJuIG1odG1sRGF0YTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuaAppbmRleCA4NTI0NjU5YWFiMi4uM2QyZGI3
Yzk2MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01I
VE1MQXJjaGl2ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01I
VE1MQXJjaGl2ZS5oCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPE1I
VE1MQXJjaGl2ZT4gY3JlYXRlKCk7CiAgICAgc3RhdGljIFJlZlB0cjxNSFRNTEFyY2hpdmU+IGNy
ZWF0ZShjb25zdCBVUkwmLCBTaGFyZWRCdWZmZXImKTsKIAotICAgIHN0YXRpYyBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBnZW5lcmF0ZU1IVE1MRGF0YShQYWdlKik7CisgICAgc3RhdGljIFJlZjxTaGFy
ZWRCdWZmZXI+IGdlbmVyYXRlTUhUTUxEYXRhKFBhZ2UqKTsKIAogICAgIHZpcnR1YWwgfk1IVE1M
QXJjaGl2ZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9t
aHRtbC9NSFRNTFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRt
bC9NSFRNTFBhcnNlci5jcHAKaW5kZXggZTFiMTA0Y2UxZGEuLjVmZDM5YmU3YmQxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3Bw
CkBAIC02OCw3ICs2OCw3IEBAIFJlZlB0cjxNSFRNTEFyY2hpdmU+IE1IVE1MUGFyc2VyOjpwYXJz
ZUFyY2hpdmVXaXRoSGVhZGVyKE1JTUVIZWFkZXIqIGhlYWRlcikKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgfQogCi0gICAgUmVmUHRyPE1IVE1MQXJjaGl2ZT4gYXJjaGl2ZSA9IE1IVE1M
QXJjaGl2ZTo6Y3JlYXRlKCk7CisgICAgYXV0byBhcmNoaXZlID0gTUhUTUxBcmNoaXZlOjpjcmVh
dGUoKTsKICAgICBpZiAoIWhlYWRlci0+aXNNdWx0aXBhcnQoKSkgewogICAgICAgICAvLyBXaXRo
IElFIGEgcGFnZSB3aXRoIG5vIHJlc291cmNlIGlzIG5vdCBtdWx0aS1wYXJ0LgogICAgICAgICBi
b29sIGVuZE9mQXJjaGl2ZVJlYWNoZWQgPSBmYWxzZTsKQEAgLTc2LDcgKzc2LDcgQEAgUmVmUHRy
PE1IVE1MQXJjaGl2ZT4gTUhUTUxQYXJzZXI6OnBhcnNlQXJjaGl2ZVdpdGhIZWFkZXIoTUlNRUhl
YWRlciogaGVhZGVyKQogICAgICAgICBpZiAoIXJlc291cmNlKQogICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgICAgIGFyY2hpdmUtPnNldE1haW5SZXNvdXJjZShyZXNvdXJjZS5yZWxl
YXNlTm9uTnVsbCgpKTsKLSAgICAgICAgcmV0dXJuIGFyY2hpdmU7CisgICAgICAgIHJldHVybiBX
VEZNb3ZlKGFyY2hpdmUpOwogICAgIH0KIAogICAgIC8vIFNraXAgdGhlIG1lc3NhZ2UgY29udGVu
dCAoaXQncyBhIGdlbmVyaWMgYnJvd3NlciBzcGVjaWZpYyBtZXNzYWdlKS4KQEAgLTEwMCw3ICsx
MDAsNyBAQCBSZWZQdHI8TUhUTUxBcmNoaXZlPiBNSFRNTFBhcnNlcjo6cGFyc2VBcmNoaXZlV2l0
aEhlYWRlcihNSU1FSGVhZGVyKiBoZWFkZXIpCiAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGVu
ZE9mUGFydFJlYWNoZWQsIGVuZE9mUGFydFJlYWNoZWQpOwogICAgICAgICAgICAgLy8gVGhlIHRv
cC1mcmFtZSBpcyB0aGUgZmlyc3QgZnJhbWUgZm91bmQsIHJlZ2FyZGxlc3Mgb2YgdGhlIG5lc3Rp
bmcgbGV2ZWwuCiAgICAgICAgICAgICBpZiAoc3ViZnJhbWVBcmNoaXZlLT5tYWluUmVzb3VyY2Uo
KSkKLSAgICAgICAgICAgICAgICBhZGRSZXNvdXJjZVRvQXJjaGl2ZShzdWJmcmFtZUFyY2hpdmUt
Pm1haW5SZXNvdXJjZSgpLCBhcmNoaXZlLmdldCgpKTsKKyAgICAgICAgICAgICAgICBhZGRSZXNv
dXJjZVRvQXJjaGl2ZShzdWJmcmFtZUFyY2hpdmUtPm1haW5SZXNvdXJjZSgpLCBhcmNoaXZlLnB0
cigpKTsKICAgICAgICAgICAgIGFyY2hpdmUtPmFkZFN1YmZyYW1lQXJjaGl2ZShzdWJmcmFtZUFy
Y2hpdmUucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
fQpAQCAtMTEwLDEwICsxMTAsMTAgQEAgUmVmUHRyPE1IVE1MQXJjaGl2ZT4gTUhUTUxQYXJzZXI6
OnBhcnNlQXJjaGl2ZVdpdGhIZWFkZXIoTUlNRUhlYWRlciogaGVhZGVyKQogICAgICAgICAgICAg
TE9HX0VSUk9SKCJGYWlsZWQgdG8gcGFyc2UgTUhUTUwgcGFydC4iKTsKICAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgICAgICB9Ci0gICAgICAgIGFkZFJlc291cmNlVG9BcmNoaXZlKHJl
c291cmNlLmdldCgpLCBhcmNoaXZlLmdldCgpKTsKKyAgICAgICAgYWRkUmVzb3VyY2VUb0FyY2hp
dmUocmVzb3VyY2UuZ2V0KCksIGFyY2hpdmUucHRyKCkpOwogICAgIH0KIAotICAgIHJldHVybiBh
cmNoaXZlLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gV1RGTW92ZShhcmNoaXZlKTsKIH0KIAogdm9p
ZCBNSFRNTFBhcnNlcjo6YWRkUmVzb3VyY2VUb0FyY2hpdmUoQXJjaGl2ZVJlc291cmNlKiByZXNv
dXJjZSwgTUhUTUxBcmNoaXZlKiBhcmNoaXZlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvRmlsZVJlYWRlcklPUy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9GaWxlUmVhZGVySU9TLmNwcAppbmRleCA1MDNlZjQy
ZDAyOC4uOGE3Zjc3ZmE0MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL2lvcy9BdWRpb0ZpbGVSZWFkZXJJT1MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL2lvcy9BdWRpb0ZpbGVSZWFkZXJJT1MuY3BwCkBAIC0xNzcsNyArMTc3LDcgQEAg
UmVmUHRyPEF1ZGlvQnVzPiBBdWRpb0ZpbGVSZWFkZXI6OmNyZWF0ZUJ1cyhmbG9hdCBzYW1wbGVS
YXRlLCBib29sIG1peFRvTW9ubykKICAgICBzaXplX3QgYnVzQ2hhbm5lbENvdW50ID0gbWl4VG9N
b25vID8gMSA6IG51bWJlck9mQ2hhbm5lbHM7CiAKICAgICAvLyBDcmVhdGUgQXVkaW9CdXMgd2hl
cmUgd2UnbGwgcHV0IHRoZSBQQ00gYXVkaW8gZGF0YQotICAgIFJlZlB0cjxBdWRpb0J1cz4gYXVk
aW9CdXMgPSBBdWRpb0J1czo6Y3JlYXRlKGJ1c0NoYW5uZWxDb3VudCwgbnVtYmVyT2ZGcmFtZXMp
OworICAgIGF1dG8gYXVkaW9CdXMgPSBBdWRpb0J1czo6Y3JlYXRlKGJ1c0NoYW5uZWxDb3VudCwg
bnVtYmVyT2ZGcmFtZXMpOwogICAgIGF1ZGlvQnVzLT5zZXRTYW1wbGVSYXRlKG1fY2xpZW50RGF0
YUZvcm1hdC5tU2FtcGxlUmF0ZSk7IC8vIHNhdmUgZm9yIGxhdGVyCiAKICAgICAvLyBPbmx5IGFs
bG9jYXRlZCBpbiB0aGUgbWl4VG9Nb25vIGNhc2U7IGRlYWxsb2NhdGVkIG9uIGRlc3RydWN0aW9u
LgpAQCAtMjI4LDcgKzIyOCw3IEBAIFJlZlB0cjxBdWRpb0J1cz4gQXVkaW9GaWxlUmVhZGVyOjpj
cmVhdGVCdXMoZmxvYXQgc2FtcGxlUmF0ZSwgYm9vbCBtaXhUb01vbm8pCiAKICAgICBkZXN0cm95
QXVkaW9CdWZmZXJMaXN0KGJ1ZmZlckxpc3QpOwogCi0gICAgcmV0dXJuIGF1ZGlvQnVzLnJlbGVh
c2UoKTsKKyAgICByZXR1cm4gYXVkaW9CdXM7CiB9CiAKIFJlZlB0cjxBdWRpb0J1cz4gY3JlYXRl
QnVzRnJvbUF1ZGlvRmlsZShjb25zdCBjaGFyKiBmaWxlUGF0aCwgYm9vbCBtaXhUb01vbm8sIGZs
b2F0IHNhbXBsZVJhdGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGli
L1NoYXJlZEJ1ZmZlckdsaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFy
ZWRCdWZmZXJHbGliLmNwcAppbmRleCBlMTUyMmY2ZmFjMS4uYWQ3MzQ5ZDZmM2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcApAQCAt
MzEsNyArMzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRo
KQogewogICAgIGlmIChmaWxlUGF0aC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiAwOworICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIENTdHJpbmcgZmlsZW5hbWUgPSBmaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24oZmlsZVBhdGgpOwogICAgIEdVbmlxdWVPdXRQdHI8Z2NoYXI+IGNvbnRl
bnRzOwpAQCAtMzksMTIgKzM5LDEwIEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiAgICAgR1Vu
aXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwogICAgIGlmICghZ19maWxlX2dldF9jb250ZW50cyhm
aWxlbmFtZS5kYXRhKCksICZjb250ZW50cy5vdXRQdHIoKSwgJnNpemUsICZlcnJvci5vdXRQdHIo
KSkpIHsKICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gZnVsbHkgcmVhZCBjb250ZW50cyBv
ZiBmaWxlICVzIC0gJXMiLCBmaWxlbmFtZUZvckRpc3BsYXkoZmlsZVBhdGgpLnV0ZjgoKS5kYXRh
KCksIGVycm9yLT5tZXNzYWdlKTsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlc3VsdCA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGNvbnRlbnRzLmdldCgpLCBzaXplKTsKLQotICAgIHJldHVybiByZXN1
bHQucmVsZWFzZSgpOworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShjb250ZW50cy5n
ZXQoKSwgc2l6ZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvVXRpbGl0aWVzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvVXRpbGl0aWVzLmNw
cAppbmRleCA4YTNmZjMzZDAwMy4uOGQ5OTJmNjEwYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvVXRpbGl0aWVzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb1V0aWxpdGllcy5jcHAKQEAg
LTI4Miw3ICsyODIsNyBAQCBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBjb3B5Q2Fpcm9JbWFnZVN1
cmZhY2UoY2Fpcm9fc3VyZmFjZV90KiBvcmlnaW5hbFN1cmZhY2UpCiAgICAgY2Fpcm9fc2V0X3Nv
dXJjZV9zdXJmYWNlKGNyLmdldCgpLCBvcmlnaW5hbFN1cmZhY2UsIDAsIDApOwogICAgIGNhaXJv
X3NldF9vcGVyYXRvcihjci5nZXQoKSwgQ0FJUk9fT1BFUkFUT1JfU09VUkNFKTsKICAgICBjYWly
b19wYWludChjci5nZXQoKSk7Ci0gICAgcmV0dXJuIG5ld1N1cmZhY2UucmVsZWFzZSgpOworICAg
IHJldHVybiBuZXdTdXJmYWNlOwogfQogCiB2b2lkIGNvcHlSZWN0RnJvbUNhaXJvU3VyZmFjZVRv
Q29udGV4dChjYWlyb19zdXJmYWNlX3QqIGZyb20sIGNhaXJvX3QqIHRvLCBjb25zdCBJbnRTaXpl
JiBvZmZzZXQsIGNvbnN0IEludFJlY3QmIHJlY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCmluZGV4
IGJjN2I0ZGU0M2U2Li5mODQ1ZmM1MWNiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKQEAgLTMz
Myw3ICszMzMsNyBAQCBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBjb3B5U3VyZmFjZVRvSW1hZ2VB
bmRBZGp1c3RSZWN0KGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZQogdGVtcGxhdGUgPE11bHRpcGx5
IG11bHRpcGxpZWQ+CiBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IGdldEltYWdlRGF0YShjb25z
dCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbnRSZWN0JiBsb2dpY2FsUmVjdCwgY29uc3QgSW1hZ2VC
dWZmZXJEYXRhJiBkYXRhLCBjb25zdCBJbnRTaXplJiBzaXplLCBjb25zdCBJbnRTaXplJiBsb2dp
Y2FsU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlKQogewotICAgIFJlZlB0cjxVaW50OENsYW1w
ZWRBcnJheT4gcmVzdWx0ID0gVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQo
cmVjdC53aWR0aCgpICogcmVjdC5oZWlnaHQoKSAqIDQpOworICAgIGF1dG8gcmVzdWx0ID0gVWlu
dDhDbGFtcGVkQXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQocmVjdC53aWR0aCgpICogcmVjdC5o
ZWlnaHQoKSAqIDQpOwogICAgIGlmICghcmVzdWx0KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IApAQCAtNDEwLDcgKzQxMCw3IEBAIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gZ2V0SW1hZ2VE
YXRhKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEludFJlY3QmIGxvZ2ljCiAgICAgICAgIGRl
c3RSb3dzICs9IGRlc3RCeXRlc1BlclJvdzsKICAgICB9CiAKLSAgICByZXR1cm4gcmVzdWx0LnJl
bGVhc2UoKTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBVbml0
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ljb25H
dGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ljb25HdGsuY3Bw
CmluZGV4IDg4MGM0Yzk3OTRhLi5hZjE4NWE1NGNkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ljb25HdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9JY29uR3RrLmNwcApAQCAtOTMsMTEgKzkzLDExIEBAIHN0
YXRpYyBTdHJpbmcgbG9va3VwSWNvbk5hbWUoU3RyaW5nIE1JTUVUeXBlKQogUmVmUHRyPEljb24+
IEljb246OmNyZWF0ZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVz
KQogewogICAgIGlmIChmaWxlbmFtZXMuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gMDsKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBpZiAoZmlsZW5hbWVzLnNpemUoKSA9PSAxKSB7
CiAgICAgICAgIGlmICghZ19wYXRoX3NraXBfcm9vdChmaWxlbmFtZXNbMF0udXRmOCgpLmRhdGEo
KSkpCi0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwog
CiAgICAgICAgIFN0cmluZyBNSU1FVHlwZSA9IE1JTUVUeXBlUmVnaXN0cnk6OmdldE1JTUVUeXBl
Rm9yUGF0aChmaWxlbmFtZXNbMF0pOwogICAgICAgICBTdHJpbmcgaWNvbk5hbWUgPSBsb29rdXBJ
Y29uTmFtZShNSU1FVHlwZSk7CkBAIC0xMDUsOCArMTA1LDggQEAgUmVmUHRyPEljb24+IEljb246
OmNyZWF0ZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzKQogICAg
ICAgICBSZWZQdHI8SWNvbj4gaWNvbiA9IGFkb3B0UmVmKG5ldyBJY29uKTsKICAgICAgICAgaWNv
bi0+bV9pY29uID0gZ3RrX2ljb25fdGhlbWVfbG9hZF9pY29uKGd0a19pY29uX3RoZW1lX2dldF9k
ZWZhdWx0KCksIGljb25OYW1lLnV0ZjgoKS5kYXRhKCksIDE2LCBHVEtfSUNPTl9MT09LVVBfVVNF
X0JVSUxUSU4sIDApOwogICAgICAgICBpZiAoIWljb24tPm1faWNvbikKLSAgICAgICAgICAgIHJl
dHVybiAwOwotICAgICAgICByZXR1cm4gaWNvbi5yZWxlYXNlKCk7CisgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIGljb247CiAgICAgfQogCiAgICAgLy9GSVhNRTog
SW1wbGVtZW50IHRoaXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9jYWlyby9T
aGFyZWFibGVCaXRtYXBDYWlyby5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvY2Fpcm8vU2hh
cmVhYmxlQml0bWFwQ2Fpcm8uY3BwCmluZGV4IDMxNjgxZTVmZDNlLi4yMjM5Y2VlMzc2OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2NhaXJvL1NoYXJlYWJsZUJpdG1hcENhaXJv
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvY2Fpcm8vU2hhcmVhYmxlQml0bWFwQ2Fp
cm8uY3BwCkBAIC03OSw3ICs3OSw3IEBAIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IFNoYXJlYWJs
ZUJpdG1hcDo6Y3JlYXRlQ2Fpcm9TdXJmYWNlKCkKICAgICByZWYoKTsgLy8gQmFsYW5jZWQgYnkg
ZGVyZWYgaW4gcmVsZWFzZVN1cmZhY2VEYXRhLgogICAgIHN0YXRpYyBjYWlyb191c2VyX2RhdGFf
a2V5X3QgZGF0YUtleTsKICAgICBjYWlyb19zdXJmYWNlX3NldF91c2VyX2RhdGEoaW1hZ2UuZ2V0
KCksICZkYXRhS2V5LCB0aGlzLCByZWxlYXNlU3VyZmFjZURhdGEpOwotICAgIHJldHVybiBpbWFn
ZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGltYWdlOwogfQogCiB2b2lkIFNoYXJlYWJsZUJpdG1h
cDo6cmVsZWFzZVN1cmZhY2VEYXRhKHZvaWQqIHR5cGVsZXNzQml0bWFwKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDVjNmQ5OTBkMjM0Li4x
MGFiMjFiZGMyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcApAQCAtMjg3MCwxMiArMjg3MCwxMSBAQCB2b2lkIFdlYlBhZ2U6OmdldENvbnRlbnRz
QXNTdHJpbmcodWludDY0X3QgY2FsbGJhY2tJRCkKICNpZiBFTkFCTEUoTUhUTUwpCiB2b2lkIFdl
YlBhZ2U6OmdldENvbnRlbnRzQXNNSFRNTERhdGEodWludDY0X3QgY2FsbGJhY2tJRCkKIHsKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBNSFRNTEFyY2hpdmU6OmdlbmVyYXRlTUhU
TUxEYXRhKG1fcGFnZS5nZXQoKSk7CisgICAgYXV0byBidWZmZXIgPSBNSFRNTEFyY2hpdmU6Omdl
bmVyYXRlTUhUTUxEYXRhKG1fcGFnZS5nZXQoKSk7CiAKICAgICAvLyBGSVhNRTogVXNlIFNoYXJl
ZEJ1ZmZlckRhdGFSZWZlcmVuY2UuCiAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVu
Y2U7Ci0gICAgaWYgKGJ1ZmZlcikKLSAgICAgICAgZGF0YVJlZmVyZW5jZSA9IElQQzo6RGF0YVJl
ZmVyZW5jZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihidWZmZXItPmRhdGEoKSks
IGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICBkYXRhUmVmZXJlbmNlID0gSVBDOjpEYXRhUmVmZXJlbmNl
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGJ1ZmZlci0+ZGF0YSgpKSwgYnVmZmVy
LT5zaXplKCkpOwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGF0YUNhbGxiYWNr
KGRhdGFSZWZlcmVuY2UsIGNhbGxiYWNrSUQpKTsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUmVmUHRyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL1JlZlB0ci5jcHAKaW5kZXggMTcyZWZhNzYyN2MuLjk1Zjk3ZDhkYTc5IDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SZWZQdHIuY3BwCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1JlZlB0ci5jcHAKQEAgLTEwOCwxNCArMTA4
LDYgQEAgVEVTVChXVEZfUmVmUHRyLCBCYXNpYykKICAgICAgICAgQVNTRVJUX0VRKG51bGxwdHIs
IHB0ci5nZXQoKSk7CiAgICAgfQogICAgIEFTU0VSVF9TVFJFUSgicmVmKGEpIGRlcmVmKGEpICIs
IHRha2VMb2dTdHIoKS5jX3N0cigpKTsKLQotICAgIHsKLSAgICAgICAgUmVmUHRyPFJlZkxvZ2dl
cj4gcHRyKCZhKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIuZ2V0KCkpOwotICAgICAgICBw
dHIucmVsZWFzZSgpOwotICAgICAgICBBU1NFUlRfRVEobnVsbHB0ciwgcHRyLmdldCgpKTsKLSAg
ICB9Ci0gICAgQVNTRVJUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNf
c3RyKCkpOwogfQogCiBURVNUKFdURl9SZWZQdHIsIEFzc2lnblBhc3NSZWZUb1JlZlB0cikKQEAg
LTEyNSw4ICsxMTcsNiBAQCBURVNUKFdURl9SZWZQdHIsIEFzc2lnblBhc3NSZWZUb1JlZlB0cikK
ICAgICAgICAgUmVmPFJlZkxvZ2dlcj4gcGFzc1JlZihhKTsKICAgICAgICAgUmVmUHRyPFJlZkxv
Z2dlcj4gcHRyID0gV1RGTW92ZShwYXNzUmVmKTsKICAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIu
Z2V0KCkpOwotICAgICAgICBwdHIucmVsZWFzZSgpOwotICAgICAgICBBU1NFUlRfRVEobnVsbHB0
ciwgcHRyLmdldCgpKTsKICAgICB9CiAgICAgQVNTRVJUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkg
IiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogfQpAQCAtMzM2LDcgKzMyNiw3IEBAIFRFU1QoV1RG
X1JlZlB0ciwgUmVsZWFzZSkKIAogICAgIHsKICAgICAgICAgUmVmUHRyPFJlZkxvZ2dlcj4gcDEg
PSAmYTsKLSAgICAgICAgUmVmUHRyPFJlZkxvZ2dlcj4gcDIgPSBwMS5yZWxlYXNlKCk7CisgICAg
ICAgIFJlZlB0cjxSZWZMb2dnZXI+IHAyID0gV1RGTW92ZShwMSk7CiAgICAgICAgIEFTU0VSVF9F
UShudWxscHRyLCBwMS5nZXQoKSk7CiAgICAgICAgIEFTU0VSVF9FUSgmYSwgcDIuZ2V0KCkpOwog
ICAgIH0KQEAgLTM0NCw3ICszMzQsNyBAQCBURVNUKFdURl9SZWZQdHIsIFJlbGVhc2UpCiAKICAg
ICB7CiAgICAgICAgIFJlZlB0cjxSZWZMb2dnZXI+IHAxID0gJmE7Ci0gICAgICAgIFJlZlB0cjxS
ZWZMb2dnZXI+IHAyKHAxLnJlbGVhc2UoKSk7CisgICAgICAgIFJlZlB0cjxSZWZMb2dnZXI+IHAy
KFdURk1vdmUocDEpKTsKICAgICAgICAgQVNTRVJUX0VRKG51bGxwdHIsIHAxLmdldCgpKTsKICAg
ICAgICAgQVNTRVJUX0VRKCZhLCBwMi5nZXQoKSk7CiAgICAgfQpAQCAtMzUyLDcgKzM0Miw3IEBA
IFRFU1QoV1RGX1JlZlB0ciwgUmVsZWFzZSkKIAogICAgIHsKICAgICAgICAgUmVmUHRyPERlcml2
ZWRSZWZMb2dnZXI+IHAxID0gJmE7Ci0gICAgICAgIFJlZlB0cjxSZWZMb2dnZXI+IHAyID0gcDEu
cmVsZWFzZSgpOworICAgICAgICBSZWZQdHI8UmVmTG9nZ2VyPiBwMiA9IFdURk1vdmUocDEpOwog
ICAgICAgICBBU1NFUlRfRVEobnVsbHB0ciwgcDEuZ2V0KCkpOwogICAgICAgICBBU1NFUlRfRVEo
JmEsIHAyLmdldCgpKTsKICAgICB9CkBAIC0zNjQsNyArMzU0LDcgQEAgVEVTVChXVEZfUmVmUHRy
LCBSZWxlYXNlKQogICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLmdldCgpKTsKICAgICAgICAgQVNT
RVJUX0VRKCZiLCBwMi5nZXQoKSk7CiAgICAgICAgIGxvZygpIDw8ICJ8ICI7Ci0gICAgICAgIHAx
ID0gcDIucmVsZWFzZSgpOworICAgICAgICBwMSA9IFdURk1vdmUocDIpOwogICAgICAgICBBU1NF
UlRfRVEoJmIsIHAxLmdldCgpKTsKICAgICAgICAgQVNTRVJUX0VRKG51bGxwdHIsIHAyLmdldCgp
KTsKICAgICAgICAgbG9nKCkgPDwgInwgIjsKQEAgLTM3Nyw3ICszNjcsNyBAQCBURVNUKFdURl9S
ZWZQdHIsIFJlbGVhc2UpCiAgICAgICAgIEFTU0VSVF9FUSgmYSwgcDEuZ2V0KCkpOwogICAgICAg
ICBBU1NFUlRfRVEoJmMsIHAyLmdldCgpKTsKICAgICAgICAgbG9nKCkgPDwgInwgIjsKLSAgICAg
ICAgcDEgPSBwMi5yZWxlYXNlKCk7CisgICAgICAgIHAxID0gV1RGTW92ZShwMik7CiAgICAgICAg
IEFTU0VSVF9FUSgmYywgcDEuZ2V0KCkpOwogICAgICAgICBBU1NFUlRfRVEobnVsbHB0ciwgcDIu
Z2V0KCkpOwogICAgICAgICBsb2coKSA8PCAifCAiOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>310037</attachid>
            <date>2017-05-13 14:51:29 -0700</date>
            <delta_ts>2017-05-13 14:59:53 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>172074_release_wip.patch</filename>
            <type>text/plain</type>
            <size>16753</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1JlZlB0ci5oIGIvU291cmNlL1dURi93dGYvUmVm
UHRyLmgKaW5kZXggMjc3ZTY3NWRiM2MuLjc4MjEyOWY4Zjk1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9SZWZQdHIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9SZWZQdHIuaApAQCAtNjMsOCAr
NjMsNiBAQCBwdWJsaWM6CiAKICAgICBUKiBnZXQoKSBjb25zdCB7IHJldHVybiBtX3B0cjsgfQog
Ci0gICAgLy8gRklYTUU6IFJlbW92ZSByZWxlYXNlKCkgYW5kIGNoYW5nZSBhbGwgY2FsbCBzaXRl
cyB0byBjYWxsIFdURk1vdmUoKS4KLSAgICBSZWZQdHI8VD4gcmVsZWFzZSgpIHsgUmVmUHRyPFQ+
IHRtcCA9IGFkb3B0UmVmKG1fcHRyKTsgbV9wdHIgPSBudWxscHRyOyByZXR1cm4gdG1wOyB9CiAg
ICAgUmVmPFQ+IHJlbGVhc2VOb25OdWxsKCkgeyBBU1NFUlQobV9wdHIpOyBSZWY8VD4gdG1wKGFk
b3B0UmVmKCptX3B0cikpOyBtX3B0ciA9IG51bGxwdHI7IHJldHVybiB0bXA7IH0KICAgICBSZWY8
Y29uc3QgVD4gcmVsZWFzZUNvbnN0Tm9uTnVsbCgpIHsgQVNTRVJUKG1fcHRyKTsgUmVmPGNvbnN0
IFQ+IHRtcChhZG9wdFJlZigqbV9wdHIpKTsgbV9wdHIgPSBudWxscHRyOyByZXR1cm4gdG1wOyB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9Xb3JrUXVldWVXaW4uY3BwIGIvU291
cmNlL1dURi93dGYvd2luL1dvcmtRdWV1ZVdpbi5jcHAKaW5kZXggZTgxNTQ3NzM3NDYuLmJiZjAx
MWFlMTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi93aW4vV29ya1F1ZXVlV2luLmNwcAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vV29ya1F1ZXVlV2luLmNwcApAQCAtMTg3LDcgKzE4Nyw3
IEBAIHZvaWQgV29ya1F1ZXVlOjpkaXNwYXRjaEFmdGVyKFNlY29uZHMgZHVyYXRpb24sIEZ1bmN0
aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikKICAgICB9CiAKICAgICAvLyBUaGUgdGltZXIgY2FsbGJh
Y2sgd2lsbCBoYW5kbGUgZGVzdHJveWluZyBjb250ZXh0LgotICAgIGNvbnRleHQucmVsZWFzZSgp
LmxlYWtSZWYoKTsKKyAgICBjb250ZXh0LmxlYWtSZWYoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFy
c2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3Bw
CmluZGV4IDkzMTI1ZmNlMTM4Li5iMzk1MDFjMDVjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKQEAgLTYzMCw3ICs2MzAsNyBAQCBwdWJs
aWM6CiAgICAgewogICAgICAgICBpZiAoIW1fcmVzdWx0LT5sZW5ndGgoKSkKICAgICAgICAgICAg
IHJldHVybiBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShD
U1NWYWx1ZU5vcm1hbCk7Ci0gICAgICAgIHJldHVybiBtX3Jlc3VsdC5yZWxlYXNlKCk7CisgICAg
ICAgIHJldHVybiBXVEZNb3ZlKG1fcmVzdWx0KTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC04MzIs
NyArODMyLDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgaWYgKCFtX3Jlc3VsdC0+bGVuZ3Ro
KCkpCiAgICAgICAgICAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJ
ZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb3JtYWwpOwotICAgICAgICByZXR1cm4gbV9yZXN1bHQu
cmVsZWFzZSgpOworICAgICAgICByZXR1cm4gV1RGTW92ZShtX3Jlc3VsdCk7CiAgICAgfQogCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJI
ZWxwZXJzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJI
ZWxwZXJzLmNwcAppbmRleCA0YTMyYTU4YmMwYi4uMzQ5OTk5YjllN2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VySGVscGVycy5jcHAK
QEAgLTkzLDcgKzkzLDcgQEAgcHVibGljOgogICAgICAgICBpZiAoIW1fY2FsY1ZhbHVlKQogICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIG1fc291cmNlUmFuZ2UgPSBtX3Jhbmdl
OwotICAgICAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVWYWx1ZSht
X2NhbGNWYWx1ZS5yZWxlYXNlKCkpOworICAgICAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5n
bGV0b24oKS5jcmVhdGVWYWx1ZShXVEZNb3ZlKG1fY2FsY1ZhbHVlKSk7CiAgICAgfQogICAgIFJl
ZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZU51bWJlcigpCiAgICAgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAKaW5k
ZXggMmNhNjdlMjdiZTguLjYxYzYyNmIyOTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAKQEAgLTEzMCw3ICsxMzAsNyBA
QCBSZWZQdHI8TUhUTUxBcmNoaXZlPiBNSFRNTEFyY2hpdmU6OmNyZWF0ZShjb25zdCBVUkwmIHVy
bCwgU2hhcmVkQnVmZmVyJiBkYXRhKQogICAgIHJldHVybiBtYWluQXJjaGl2ZTsKIH0KIAotUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gTUhUTUxBcmNoaXZlOjpnZW5lcmF0ZU1IVE1MRGF0YShQYWdlKiBw
YWdlKQorUmVmPFNoYXJlZEJ1ZmZlcj4gTUhUTUxBcmNoaXZlOjpnZW5lcmF0ZU1IVE1MRGF0YShQ
YWdlKiBwYWdlKQogewogICAgIFZlY3RvcjxQYWdlU2VyaWFsaXplcjo6UmVzb3VyY2U+IHJlc291
cmNlczsKICAgICBQYWdlU2VyaWFsaXplciBwYWdlU2VyaWFsaXplcihyZXNvdXJjZXMpOwpAQCAt
MTYyLDcgKzE2Miw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IE1IVE1MQXJjaGl2ZTo6Z2VuZXJh
dGVNSFRNTERhdGEoUGFnZSogcGFnZSkKICAgICAvLyBXZSB1c2UgdXRmOCgpIGJlbG93IGluc3Rl
YWQgb2YgYXNjaWkoKSBhcyBhc2NpaSgpIHJlcGxhY2VzIENSTEZzIHdpdGggPz8gKHdlIHN0aWxs
IG9ubHkgaGF2ZSBwdXQgQVNDSUkgY2hhcmFjdGVycyBpbiBpdCkuCiAgICAgQVNTRVJUKHN0cmlu
Z0J1aWxkZXIudG9TdHJpbmcoKS5jb250YWluc09ubHlBU0NJSSgpKTsKICAgICBDU3RyaW5nIGFz
Y2lpU3RyaW5nID0gc3RyaW5nQnVpbGRlci50b1N0cmluZygpLnV0ZjgoKTsKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBtaHRtbERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIGF1
dG8gbWh0bWxEYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBtaHRtbERhdGEtPmFw
cGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lpU3RyaW5nLmxlbmd0aCgpKTsKIAogICAgIGZv
ciAoYXV0byYgcmVzb3VyY2UgOiByZXNvdXJjZXMpIHsKQEAgLTIxMyw3ICsyMTMsNyBAQCBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBNSFRNTEFyY2hpdmU6OmdlbmVyYXRlTUhUTUxEYXRhKFBhZ2UqIHBh
Z2UpCiAgICAgYXNjaWlTdHJpbmcgPSBtYWtlU3RyaW5nKCItLSIsIGJvdW5kYXJ5LCAiLS1cclxu
IikudXRmOCgpOwogICAgIG1odG1sRGF0YS0+YXBwZW5kKGFzY2lpU3RyaW5nLmRhdGEoKSwgYXNj
aWlTdHJpbmcubGVuZ3RoKCkpOwogCi0gICAgcmV0dXJuIG1odG1sRGF0YS5yZWxlYXNlKCk7Cisg
ICAgcmV0dXJuIG1odG1sRGF0YTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuaAppbmRleCA4NTI0NjU5YWFiMi4uM2QyZGI3
Yzk2MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01I
VE1MQXJjaGl2ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01I
VE1MQXJjaGl2ZS5oCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPE1I
VE1MQXJjaGl2ZT4gY3JlYXRlKCk7CiAgICAgc3RhdGljIFJlZlB0cjxNSFRNTEFyY2hpdmU+IGNy
ZWF0ZShjb25zdCBVUkwmLCBTaGFyZWRCdWZmZXImKTsKIAotICAgIHN0YXRpYyBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBnZW5lcmF0ZU1IVE1MRGF0YShQYWdlKik7CisgICAgc3RhdGljIFJlZjxTaGFy
ZWRCdWZmZXI+IGdlbmVyYXRlTUhUTUxEYXRhKFBhZ2UqKTsKIAogICAgIHZpcnR1YWwgfk1IVE1M
QXJjaGl2ZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9t
aHRtbC9NSFRNTFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRt
bC9NSFRNTFBhcnNlci5jcHAKaW5kZXggZTFiMTA0Y2UxZGEuLjVmZDM5YmU3YmQxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3Bw
CkBAIC02OCw3ICs2OCw3IEBAIFJlZlB0cjxNSFRNTEFyY2hpdmU+IE1IVE1MUGFyc2VyOjpwYXJz
ZUFyY2hpdmVXaXRoSGVhZGVyKE1JTUVIZWFkZXIqIGhlYWRlcikKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgfQogCi0gICAgUmVmUHRyPE1IVE1MQXJjaGl2ZT4gYXJjaGl2ZSA9IE1IVE1M
QXJjaGl2ZTo6Y3JlYXRlKCk7CisgICAgYXV0byBhcmNoaXZlID0gTUhUTUxBcmNoaXZlOjpjcmVh
dGUoKTsKICAgICBpZiAoIWhlYWRlci0+aXNNdWx0aXBhcnQoKSkgewogICAgICAgICAvLyBXaXRo
IElFIGEgcGFnZSB3aXRoIG5vIHJlc291cmNlIGlzIG5vdCBtdWx0aS1wYXJ0LgogICAgICAgICBi
b29sIGVuZE9mQXJjaGl2ZVJlYWNoZWQgPSBmYWxzZTsKQEAgLTc2LDcgKzc2LDcgQEAgUmVmUHRy
PE1IVE1MQXJjaGl2ZT4gTUhUTUxQYXJzZXI6OnBhcnNlQXJjaGl2ZVdpdGhIZWFkZXIoTUlNRUhl
YWRlciogaGVhZGVyKQogICAgICAgICBpZiAoIXJlc291cmNlKQogICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgICAgIGFyY2hpdmUtPnNldE1haW5SZXNvdXJjZShyZXNvdXJjZS5yZWxl
YXNlTm9uTnVsbCgpKTsKLSAgICAgICAgcmV0dXJuIGFyY2hpdmU7CisgICAgICAgIHJldHVybiBX
VEZNb3ZlKGFyY2hpdmUpOwogICAgIH0KIAogICAgIC8vIFNraXAgdGhlIG1lc3NhZ2UgY29udGVu
dCAoaXQncyBhIGdlbmVyaWMgYnJvd3NlciBzcGVjaWZpYyBtZXNzYWdlKS4KQEAgLTEwMCw3ICsx
MDAsNyBAQCBSZWZQdHI8TUhUTUxBcmNoaXZlPiBNSFRNTFBhcnNlcjo6cGFyc2VBcmNoaXZlV2l0
aEhlYWRlcihNSU1FSGVhZGVyKiBoZWFkZXIpCiAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGVu
ZE9mUGFydFJlYWNoZWQsIGVuZE9mUGFydFJlYWNoZWQpOwogICAgICAgICAgICAgLy8gVGhlIHRv
cC1mcmFtZSBpcyB0aGUgZmlyc3QgZnJhbWUgZm91bmQsIHJlZ2FyZGxlc3Mgb2YgdGhlIG5lc3Rp
bmcgbGV2ZWwuCiAgICAgICAgICAgICBpZiAoc3ViZnJhbWVBcmNoaXZlLT5tYWluUmVzb3VyY2Uo
KSkKLSAgICAgICAgICAgICAgICBhZGRSZXNvdXJjZVRvQXJjaGl2ZShzdWJmcmFtZUFyY2hpdmUt
Pm1haW5SZXNvdXJjZSgpLCBhcmNoaXZlLmdldCgpKTsKKyAgICAgICAgICAgICAgICBhZGRSZXNv
dXJjZVRvQXJjaGl2ZShzdWJmcmFtZUFyY2hpdmUtPm1haW5SZXNvdXJjZSgpLCBhcmNoaXZlLnB0
cigpKTsKICAgICAgICAgICAgIGFyY2hpdmUtPmFkZFN1YmZyYW1lQXJjaGl2ZShzdWJmcmFtZUFy
Y2hpdmUucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
fQpAQCAtMTEwLDEwICsxMTAsMTAgQEAgUmVmUHRyPE1IVE1MQXJjaGl2ZT4gTUhUTUxQYXJzZXI6
OnBhcnNlQXJjaGl2ZVdpdGhIZWFkZXIoTUlNRUhlYWRlciogaGVhZGVyKQogICAgICAgICAgICAg
TE9HX0VSUk9SKCJGYWlsZWQgdG8gcGFyc2UgTUhUTUwgcGFydC4iKTsKICAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgICAgICB9Ci0gICAgICAgIGFkZFJlc291cmNlVG9BcmNoaXZlKHJl
c291cmNlLmdldCgpLCBhcmNoaXZlLmdldCgpKTsKKyAgICAgICAgYWRkUmVzb3VyY2VUb0FyY2hp
dmUocmVzb3VyY2UuZ2V0KCksIGFyY2hpdmUucHRyKCkpOwogICAgIH0KIAotICAgIHJldHVybiBh
cmNoaXZlLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gV1RGTW92ZShhcmNoaXZlKTsKIH0KIAogdm9p
ZCBNSFRNTFBhcnNlcjo6YWRkUmVzb3VyY2VUb0FyY2hpdmUoQXJjaGl2ZVJlc291cmNlKiByZXNv
dXJjZSwgTUhUTUxBcmNoaXZlKiBhcmNoaXZlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvRmlsZVJlYWRlcklPUy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9GaWxlUmVhZGVySU9TLmNwcAppbmRleCA1MDNlZjQy
ZDAyOC4uOGE3Zjc3ZmE0MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL2lvcy9BdWRpb0ZpbGVSZWFkZXJJT1MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL2lvcy9BdWRpb0ZpbGVSZWFkZXJJT1MuY3BwCkBAIC0xNzcsNyArMTc3LDcgQEAg
UmVmUHRyPEF1ZGlvQnVzPiBBdWRpb0ZpbGVSZWFkZXI6OmNyZWF0ZUJ1cyhmbG9hdCBzYW1wbGVS
YXRlLCBib29sIG1peFRvTW9ubykKICAgICBzaXplX3QgYnVzQ2hhbm5lbENvdW50ID0gbWl4VG9N
b25vID8gMSA6IG51bWJlck9mQ2hhbm5lbHM7CiAKICAgICAvLyBDcmVhdGUgQXVkaW9CdXMgd2hl
cmUgd2UnbGwgcHV0IHRoZSBQQ00gYXVkaW8gZGF0YQotICAgIFJlZlB0cjxBdWRpb0J1cz4gYXVk
aW9CdXMgPSBBdWRpb0J1czo6Y3JlYXRlKGJ1c0NoYW5uZWxDb3VudCwgbnVtYmVyT2ZGcmFtZXMp
OworICAgIGF1dG8gYXVkaW9CdXMgPSBBdWRpb0J1czo6Y3JlYXRlKGJ1c0NoYW5uZWxDb3VudCwg
bnVtYmVyT2ZGcmFtZXMpOwogICAgIGF1ZGlvQnVzLT5zZXRTYW1wbGVSYXRlKG1fY2xpZW50RGF0
YUZvcm1hdC5tU2FtcGxlUmF0ZSk7IC8vIHNhdmUgZm9yIGxhdGVyCiAKICAgICAvLyBPbmx5IGFs
bG9jYXRlZCBpbiB0aGUgbWl4VG9Nb25vIGNhc2U7IGRlYWxsb2NhdGVkIG9uIGRlc3RydWN0aW9u
LgpAQCAtMjI4LDcgKzIyOCw3IEBAIFJlZlB0cjxBdWRpb0J1cz4gQXVkaW9GaWxlUmVhZGVyOjpj
cmVhdGVCdXMoZmxvYXQgc2FtcGxlUmF0ZSwgYm9vbCBtaXhUb01vbm8pCiAKICAgICBkZXN0cm95
QXVkaW9CdWZmZXJMaXN0KGJ1ZmZlckxpc3QpOwogCi0gICAgcmV0dXJuIGF1ZGlvQnVzLnJlbGVh
c2UoKTsKKyAgICByZXR1cm4gYXVkaW9CdXM7CiB9CiAKIFJlZlB0cjxBdWRpb0J1cz4gY3JlYXRl
QnVzRnJvbUF1ZGlvRmlsZShjb25zdCBjaGFyKiBmaWxlUGF0aCwgYm9vbCBtaXhUb01vbm8sIGZs
b2F0IHNhbXBsZVJhdGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGli
L1NoYXJlZEJ1ZmZlckdsaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFy
ZWRCdWZmZXJHbGliLmNwcAppbmRleCBlMTUyMmY2ZmFjMS4uYWQ3MzQ5ZDZmM2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcApAQCAt
MzEsNyArMzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRo
KQogewogICAgIGlmIChmaWxlUGF0aC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiAwOworICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIENTdHJpbmcgZmlsZW5hbWUgPSBmaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24oZmlsZVBhdGgpOwogICAgIEdVbmlxdWVPdXRQdHI8Z2NoYXI+IGNvbnRl
bnRzOwpAQCAtMzksMTIgKzM5LDEwIEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiAgICAgR1Vu
aXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwogICAgIGlmICghZ19maWxlX2dldF9jb250ZW50cyhm
aWxlbmFtZS5kYXRhKCksICZjb250ZW50cy5vdXRQdHIoKSwgJnNpemUsICZlcnJvci5vdXRQdHIo
KSkpIHsKICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gZnVsbHkgcmVhZCBjb250ZW50cyBv
ZiBmaWxlICVzIC0gJXMiLCBmaWxlbmFtZUZvckRpc3BsYXkoZmlsZVBhdGgpLnV0ZjgoKS5kYXRh
KCksIGVycm9yLT5tZXNzYWdlKTsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlc3VsdCA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGNvbnRlbnRzLmdldCgpLCBzaXplKTsKLQotICAgIHJldHVybiByZXN1
bHQucmVsZWFzZSgpOworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShjb250ZW50cy5n
ZXQoKSwgc2l6ZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvVXRpbGl0aWVzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvVXRpbGl0aWVzLmNw
cAppbmRleCA4YTNmZjMzZDAwMy4uOGQ5OTJmNjEwYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvVXRpbGl0aWVzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb1V0aWxpdGllcy5jcHAKQEAg
LTI4Miw3ICsyODIsNyBAQCBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBjb3B5Q2Fpcm9JbWFnZVN1
cmZhY2UoY2Fpcm9fc3VyZmFjZV90KiBvcmlnaW5hbFN1cmZhY2UpCiAgICAgY2Fpcm9fc2V0X3Nv
dXJjZV9zdXJmYWNlKGNyLmdldCgpLCBvcmlnaW5hbFN1cmZhY2UsIDAsIDApOwogICAgIGNhaXJv
X3NldF9vcGVyYXRvcihjci5nZXQoKSwgQ0FJUk9fT1BFUkFUT1JfU09VUkNFKTsKICAgICBjYWly
b19wYWludChjci5nZXQoKSk7Ci0gICAgcmV0dXJuIG5ld1N1cmZhY2UucmVsZWFzZSgpOworICAg
IHJldHVybiBuZXdTdXJmYWNlOwogfQogCiB2b2lkIGNvcHlSZWN0RnJvbUNhaXJvU3VyZmFjZVRv
Q29udGV4dChjYWlyb19zdXJmYWNlX3QqIGZyb20sIGNhaXJvX3QqIHRvLCBjb25zdCBJbnRTaXpl
JiBvZmZzZXQsIGNvbnN0IEludFJlY3QmIHJlY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCmluZGV4
IGJjN2I0ZGU0M2U2Li5mODQ1ZmM1MWNiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKQEAgLTMz
Myw3ICszMzMsNyBAQCBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBjb3B5U3VyZmFjZVRvSW1hZ2VB
bmRBZGp1c3RSZWN0KGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZQogdGVtcGxhdGUgPE11bHRpcGx5
IG11bHRpcGxpZWQ+CiBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IGdldEltYWdlRGF0YShjb25z
dCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbnRSZWN0JiBsb2dpY2FsUmVjdCwgY29uc3QgSW1hZ2VC
dWZmZXJEYXRhJiBkYXRhLCBjb25zdCBJbnRTaXplJiBzaXplLCBjb25zdCBJbnRTaXplJiBsb2dp
Y2FsU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlKQogewotICAgIFJlZlB0cjxVaW50OENsYW1w
ZWRBcnJheT4gcmVzdWx0ID0gVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQo
cmVjdC53aWR0aCgpICogcmVjdC5oZWlnaHQoKSAqIDQpOworICAgIGF1dG8gcmVzdWx0ID0gVWlu
dDhDbGFtcGVkQXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQocmVjdC53aWR0aCgpICogcmVjdC5o
ZWlnaHQoKSAqIDQpOwogICAgIGlmICghcmVzdWx0KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IApAQCAtNDEwLDcgKzQxMCw3IEBAIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gZ2V0SW1hZ2VE
YXRhKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEludFJlY3QmIGxvZ2ljCiAgICAgICAgIGRl
c3RSb3dzICs9IGRlc3RCeXRlc1BlclJvdzsKICAgICB9CiAKLSAgICByZXR1cm4gcmVzdWx0LnJl
bGVhc2UoKTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBVbml0
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ljb25H
dGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ljb25HdGsuY3Bw
CmluZGV4IDg4MGM0Yzk3OTRhLi5hZjE4NWE1NGNkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ljb25HdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9JY29uR3RrLmNwcApAQCAtOTMsMTEgKzkzLDExIEBAIHN0
YXRpYyBTdHJpbmcgbG9va3VwSWNvbk5hbWUoU3RyaW5nIE1JTUVUeXBlKQogUmVmUHRyPEljb24+
IEljb246OmNyZWF0ZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVz
KQogewogICAgIGlmIChmaWxlbmFtZXMuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gMDsKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBpZiAoZmlsZW5hbWVzLnNpemUoKSA9PSAxKSB7
CiAgICAgICAgIGlmICghZ19wYXRoX3NraXBfcm9vdChmaWxlbmFtZXNbMF0udXRmOCgpLmRhdGEo
KSkpCi0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwog
CiAgICAgICAgIFN0cmluZyBNSU1FVHlwZSA9IE1JTUVUeXBlUmVnaXN0cnk6OmdldE1JTUVUeXBl
Rm9yUGF0aChmaWxlbmFtZXNbMF0pOwogICAgICAgICBTdHJpbmcgaWNvbk5hbWUgPSBsb29rdXBJ
Y29uTmFtZShNSU1FVHlwZSk7CkBAIC0xMDUsOCArMTA1LDggQEAgUmVmUHRyPEljb24+IEljb246
OmNyZWF0ZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzKQogICAg
ICAgICBSZWZQdHI8SWNvbj4gaWNvbiA9IGFkb3B0UmVmKG5ldyBJY29uKTsKICAgICAgICAgaWNv
bi0+bV9pY29uID0gZ3RrX2ljb25fdGhlbWVfbG9hZF9pY29uKGd0a19pY29uX3RoZW1lX2dldF9k
ZWZhdWx0KCksIGljb25OYW1lLnV0ZjgoKS5kYXRhKCksIDE2LCBHVEtfSUNPTl9MT09LVVBfVVNF
X0JVSUxUSU4sIDApOwogICAgICAgICBpZiAoIWljb24tPm1faWNvbikKLSAgICAgICAgICAgIHJl
dHVybiAwOwotICAgICAgICByZXR1cm4gaWNvbi5yZWxlYXNlKCk7CisgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIGljb247CiAgICAgfQogCiAgICAgLy9GSVhNRTog
SW1wbGVtZW50IHRoaXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGlu
YXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3Bw
CmluZGV4IGNmZWYzZjIwOWIyLi4zNDk2ODYyZDk5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGlu
YXRlZEdyYXBoaWNzU2NlbmUuY3BwCkBAIC00NjMsOCArNDYzLDcgQEAgdm9pZCBDb29yZGluYXRl
ZEdyYXBoaWNzU2NlbmU6OnN5bmNJbWFnZUJhY2tpbmdzKGNvbnN0IENvb3JkaW5hdGVkR3JhcGhp
Y3NTdGF0ZSYKIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpjcmVhdGVJbWFnZUJhY2tp
bmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCBpbWFnZUlEKQogewogICAgIEFTU0VSVCghbV9p
bWFnZUJhY2tpbmdzLmNvbnRhaW5zKGltYWdlSUQpKTsKLSAgICBSZWZQdHI8Q29vcmRpbmF0ZWRC
YWNraW5nU3RvcmU+IGJhY2tpbmdTdG9yZShDb29yZGluYXRlZEJhY2tpbmdTdG9yZTo6Y3JlYXRl
KCkpOwotICAgIG1faW1hZ2VCYWNraW5ncy5hZGQoaW1hZ2VJRCwgYmFja2luZ1N0b3JlLnJlbGVh
c2UoKSk7CisgICAgbV9pbWFnZUJhY2tpbmdzLmFkZChpbWFnZUlELCBDb29yZGluYXRlZEJhY2tp
bmdTdG9yZTo6Y3JlYXRlKCkpOwogfQogCiB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6
dXBkYXRlSW1hZ2VCYWNraW5nKENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQgaW1hZ2VJRCwgUmVm
UHRyPENvb3JkaW5hdGVkU3VyZmFjZT4mJiBzdXJmYWNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL2NhaXJvL1NoYXJlYWJsZUJpdG1hcENhaXJvLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9jYWlyby9TaGFyZWFibGVCaXRtYXBDYWlyby5jcHAKaW5kZXggMzE2ODFlNWZk
M2UuLjIyMzljZWUzNzY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvY2Fpcm8v
U2hhcmVhYmxlQml0bWFwQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9jYWly
by9TaGFyZWFibGVCaXRtYXBDYWlyby5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgUmVmUHRyPGNhaXJv
X3N1cmZhY2VfdD4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVDYWlyb1N1cmZhY2UoKQogICAgIHJl
ZigpOyAvLyBCYWxhbmNlZCBieSBkZXJlZiBpbiByZWxlYXNlU3VyZmFjZURhdGEuCiAgICAgc3Rh
dGljIGNhaXJvX3VzZXJfZGF0YV9rZXlfdCBkYXRhS2V5OwogICAgIGNhaXJvX3N1cmZhY2Vfc2V0
X3VzZXJfZGF0YShpbWFnZS5nZXQoKSwgJmRhdGFLZXksIHRoaXMsIHJlbGVhc2VTdXJmYWNlRGF0
YSk7Ci0gICAgcmV0dXJuIGltYWdlLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gaW1hZ2U7CiB9CiAK
IHZvaWQgU2hhcmVhYmxlQml0bWFwOjpyZWxlYXNlU3VyZmFjZURhdGEodm9pZCogdHlwZWxlc3NC
aXRtYXApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
aW5kZXggNWM2ZDk5MGQyMzQuLjEwYWIyMWJkYzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0yODcwLDEyICsyODcwLDExIEBAIHZvaWQg
V2ViUGFnZTo6Z2V0Q29udGVudHNBc1N0cmluZyh1aW50NjRfdCBjYWxsYmFja0lEKQogI2lmIEVO
QUJMRShNSFRNTCkKIHZvaWQgV2ViUGFnZTo6Z2V0Q29udGVudHNBc01IVE1MRGF0YSh1aW50NjRf
dCBjYWxsYmFja0lEKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IE1IVE1M
QXJjaGl2ZTo6Z2VuZXJhdGVNSFRNTERhdGEobV9wYWdlLmdldCgpKTsKKyAgICBhdXRvIGJ1ZmZl
ciA9IE1IVE1MQXJjaGl2ZTo6Z2VuZXJhdGVNSFRNTERhdGEobV9wYWdlLmdldCgpKTsKIAogICAg
IC8vIEZJWE1FOiBVc2UgU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS4KICAgICBJUEM6OkRhdGFS
ZWZlcmVuY2UgZGF0YVJlZmVyZW5jZTsKLSAgICBpZiAoYnVmZmVyKQotICAgICAgICBkYXRhUmVm
ZXJlbmNlID0gSVBDOjpEYXRhUmVmZXJlbmNlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhf
dCo+KGJ1ZmZlci0+ZGF0YSgpKSwgYnVmZmVyLT5zaXplKCkpOworICAgIGRhdGFSZWZlcmVuY2Ug
PSBJUEM6OkRhdGFSZWZlcmVuY2UocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oYnVm
ZmVyLT5kYXRhKCkpLCBidWZmZXItPnNpemUoKSk7CiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpEYXRhQ2FsbGJhY2soZGF0YVJlZmVyZW5jZSwgY2FsbGJhY2tJRCkpOwogfQogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SZWZQdHIuY3Bw
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUmVmUHRyLmNwcAppbmRleCAxNzJlZmE3
NjI3Yy4uOTVmOTdkOGRhNzkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL1JlZlB0ci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUmVmUHRy
LmNwcApAQCAtMTA4LDE0ICsxMDgsNiBAQCBURVNUKFdURl9SZWZQdHIsIEJhc2ljKQogICAgICAg
ICBBU1NFUlRfRVEobnVsbHB0ciwgcHRyLmdldCgpKTsKICAgICB9CiAgICAgQVNTRVJUX1NUUkVR
KCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwotCi0gICAgewotICAg
ICAgICBSZWZQdHI8UmVmTG9nZ2VyPiBwdHIoJmEpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHB0
ci5nZXQoKSk7Ci0gICAgICAgIHB0ci5yZWxlYXNlKCk7Ci0gICAgICAgIEFTU0VSVF9FUShudWxs
cHRyLCBwdHIuZ2V0KCkpOwotICAgIH0KLSAgICBBU1NFUlRfU1RSRVEoInJlZihhKSBkZXJlZihh
KSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiB9CiAKIFRFU1QoV1RGX1JlZlB0ciwgQXNzaWdu
UGFzc1JlZlRvUmVmUHRyKQpAQCAtMTI1LDggKzExNyw2IEBAIFRFU1QoV1RGX1JlZlB0ciwgQXNz
aWduUGFzc1JlZlRvUmVmUHRyKQogICAgICAgICBSZWY8UmVmTG9nZ2VyPiBwYXNzUmVmKGEpOwog
ICAgICAgICBSZWZQdHI8UmVmTG9nZ2VyPiBwdHIgPSBXVEZNb3ZlKHBhc3NSZWYpOwogICAgICAg
ICBBU1NFUlRfRVEoJmEsIHB0ci5nZXQoKSk7Ci0gICAgICAgIHB0ci5yZWxlYXNlKCk7Ci0gICAg
ICAgIEFTU0VSVF9FUShudWxscHRyLCBwdHIuZ2V0KCkpOwogICAgIH0KICAgICBBU1NFUlRfU1RS
RVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiB9CkBAIC0zMzYs
NyArMzI2LDcgQEAgVEVTVChXVEZfUmVmUHRyLCBSZWxlYXNlKQogCiAgICAgewogICAgICAgICBS
ZWZQdHI8UmVmTG9nZ2VyPiBwMSA9ICZhOwotICAgICAgICBSZWZQdHI8UmVmTG9nZ2VyPiBwMiA9
IHAxLnJlbGVhc2UoKTsKKyAgICAgICAgUmVmUHRyPFJlZkxvZ2dlcj4gcDIgPSBXVEZNb3ZlKHAx
KTsKICAgICAgICAgQVNTRVJUX0VRKG51bGxwdHIsIHAxLmdldCgpKTsKICAgICAgICAgQVNTRVJU
X0VRKCZhLCBwMi5nZXQoKSk7CiAgICAgfQpAQCAtMzQ0LDcgKzMzNCw3IEBAIFRFU1QoV1RGX1Jl
ZlB0ciwgUmVsZWFzZSkKIAogICAgIHsKICAgICAgICAgUmVmUHRyPFJlZkxvZ2dlcj4gcDEgPSAm
YTsKLSAgICAgICAgUmVmUHRyPFJlZkxvZ2dlcj4gcDIocDEucmVsZWFzZSgpKTsKKyAgICAgICAg
UmVmUHRyPFJlZkxvZ2dlcj4gcDIoV1RGTW92ZShwMSkpOwogICAgICAgICBBU1NFUlRfRVEobnVs
bHB0ciwgcDEuZ2V0KCkpOwogICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLmdldCgpKTsKICAgICB9
CkBAIC0zNTIsNyArMzQyLDcgQEAgVEVTVChXVEZfUmVmUHRyLCBSZWxlYXNlKQogCiAgICAgewog
ICAgICAgICBSZWZQdHI8RGVyaXZlZFJlZkxvZ2dlcj4gcDEgPSAmYTsKLSAgICAgICAgUmVmUHRy
PFJlZkxvZ2dlcj4gcDIgPSBwMS5yZWxlYXNlKCk7CisgICAgICAgIFJlZlB0cjxSZWZMb2dnZXI+
IHAyID0gV1RGTW92ZShwMSk7CiAgICAgICAgIEFTU0VSVF9FUShudWxscHRyLCBwMS5nZXQoKSk7
CiAgICAgICAgIEFTU0VSVF9FUSgmYSwgcDIuZ2V0KCkpOwogICAgIH0KQEAgLTM2NCw3ICszNTQs
NyBAQCBURVNUKFdURl9SZWZQdHIsIFJlbGVhc2UpCiAgICAgICAgIEFTU0VSVF9FUSgmYSwgcDEu
Z2V0KCkpOwogICAgICAgICBBU1NFUlRfRVEoJmIsIHAyLmdldCgpKTsKICAgICAgICAgbG9nKCkg
PDwgInwgIjsKLSAgICAgICAgcDEgPSBwMi5yZWxlYXNlKCk7CisgICAgICAgIHAxID0gV1RGTW92
ZShwMik7CiAgICAgICAgIEFTU0VSVF9FUSgmYiwgcDEuZ2V0KCkpOwogICAgICAgICBBU1NFUlRf
RVEobnVsbHB0ciwgcDIuZ2V0KCkpOwogICAgICAgICBsb2coKSA8PCAifCAiOwpAQCAtMzc3LDcg
KzM2Nyw3IEBAIFRFU1QoV1RGX1JlZlB0ciwgUmVsZWFzZSkKICAgICAgICAgQVNTRVJUX0VRKCZh
LCBwMS5nZXQoKSk7CiAgICAgICAgIEFTU0VSVF9FUSgmYywgcDIuZ2V0KCkpOwogICAgICAgICBs
b2coKSA8PCAifCAiOwotICAgICAgICBwMSA9IHAyLnJlbGVhc2UoKTsKKyAgICAgICAgcDEgPSBX
VEZNb3ZlKHAyKTsKICAgICAgICAgQVNTRVJUX0VRKCZjLCBwMS5nZXQoKSk7CiAgICAgICAgIEFT
U0VSVF9FUShudWxscHRyLCBwMi5nZXQoKSk7CiAgICAgICAgIGxvZygpIDw8ICJ8ICI7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>310038</attachid>
            <date>2017-05-13 14:59:53 -0700</date>
            <delta_ts>2017-05-13 16:52:42 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>172074_release_wip.patch</filename>
            <type>text/plain</type>
            <size>18186</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1JlZlB0ci5oIGIvU291cmNlL1dURi93dGYvUmVm
UHRyLmgKaW5kZXggMjc3ZTY3NWRiM2MuLjc4MjEyOWY4Zjk1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9SZWZQdHIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9SZWZQdHIuaApAQCAtNjMsOCAr
NjMsNiBAQCBwdWJsaWM6CiAKICAgICBUKiBnZXQoKSBjb25zdCB7IHJldHVybiBtX3B0cjsgfQog
Ci0gICAgLy8gRklYTUU6IFJlbW92ZSByZWxlYXNlKCkgYW5kIGNoYW5nZSBhbGwgY2FsbCBzaXRl
cyB0byBjYWxsIFdURk1vdmUoKS4KLSAgICBSZWZQdHI8VD4gcmVsZWFzZSgpIHsgUmVmUHRyPFQ+
IHRtcCA9IGFkb3B0UmVmKG1fcHRyKTsgbV9wdHIgPSBudWxscHRyOyByZXR1cm4gdG1wOyB9CiAg
ICAgUmVmPFQ+IHJlbGVhc2VOb25OdWxsKCkgeyBBU1NFUlQobV9wdHIpOyBSZWY8VD4gdG1wKGFk
b3B0UmVmKCptX3B0cikpOyBtX3B0ciA9IG51bGxwdHI7IHJldHVybiB0bXA7IH0KICAgICBSZWY8
Y29uc3QgVD4gcmVsZWFzZUNvbnN0Tm9uTnVsbCgpIHsgQVNTRVJUKG1fcHRyKTsgUmVmPGNvbnN0
IFQ+IHRtcChhZG9wdFJlZigqbV9wdHIpKTsgbV9wdHIgPSBudWxscHRyOyByZXR1cm4gdG1wOyB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9Xb3JrUXVldWVXaW4uY3BwIGIvU291
cmNlL1dURi93dGYvd2luL1dvcmtRdWV1ZVdpbi5jcHAKaW5kZXggZTgxNTQ3NzM3NDYuLmJiZjAx
MWFlMTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi93aW4vV29ya1F1ZXVlV2luLmNwcAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vV29ya1F1ZXVlV2luLmNwcApAQCAtMTg3LDcgKzE4Nyw3
IEBAIHZvaWQgV29ya1F1ZXVlOjpkaXNwYXRjaEFmdGVyKFNlY29uZHMgZHVyYXRpb24sIEZ1bmN0
aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikKICAgICB9CiAKICAgICAvLyBUaGUgdGltZXIgY2FsbGJh
Y2sgd2lsbCBoYW5kbGUgZGVzdHJveWluZyBjb250ZXh0LgotICAgIGNvbnRleHQucmVsZWFzZSgp
LmxlYWtSZWYoKTsKKyAgICBjb250ZXh0LmxlYWtSZWYoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFy
c2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3Bw
CmluZGV4IDkzMTI1ZmNlMTM4Li5iMzk1MDFjMDVjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKQEAgLTYzMCw3ICs2MzAsNyBAQCBwdWJs
aWM6CiAgICAgewogICAgICAgICBpZiAoIW1fcmVzdWx0LT5sZW5ndGgoKSkKICAgICAgICAgICAg
IHJldHVybiBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShD
U1NWYWx1ZU5vcm1hbCk7Ci0gICAgICAgIHJldHVybiBtX3Jlc3VsdC5yZWxlYXNlKCk7CisgICAg
ICAgIHJldHVybiBXVEZNb3ZlKG1fcmVzdWx0KTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC04MzIs
NyArODMyLDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgaWYgKCFtX3Jlc3VsdC0+bGVuZ3Ro
KCkpCiAgICAgICAgICAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJ
ZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb3JtYWwpOwotICAgICAgICByZXR1cm4gbV9yZXN1bHQu
cmVsZWFzZSgpOworICAgICAgICByZXR1cm4gV1RGTW92ZShtX3Jlc3VsdCk7CiAgICAgfQogCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJI
ZWxwZXJzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJI
ZWxwZXJzLmNwcAppbmRleCA0YTMyYTU4YmMwYi4uMzQ5OTk5YjllN2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VySGVscGVycy5jcHAK
QEAgLTkzLDcgKzkzLDcgQEAgcHVibGljOgogICAgICAgICBpZiAoIW1fY2FsY1ZhbHVlKQogICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIG1fc291cmNlUmFuZ2UgPSBtX3Jhbmdl
OwotICAgICAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVWYWx1ZSht
X2NhbGNWYWx1ZS5yZWxlYXNlKCkpOworICAgICAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5n
bGV0b24oKS5jcmVhdGVWYWx1ZShXVEZNb3ZlKG1fY2FsY1ZhbHVlKSk7CiAgICAgfQogICAgIFJl
ZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZU51bWJlcigpCiAgICAgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAKaW5k
ZXggMmNhNjdlMjdiZTguLjYxYzYyNmIyOTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAKQEAgLTEzMCw3ICsxMzAsNyBA
QCBSZWZQdHI8TUhUTUxBcmNoaXZlPiBNSFRNTEFyY2hpdmU6OmNyZWF0ZShjb25zdCBVUkwmIHVy
bCwgU2hhcmVkQnVmZmVyJiBkYXRhKQogICAgIHJldHVybiBtYWluQXJjaGl2ZTsKIH0KIAotUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gTUhUTUxBcmNoaXZlOjpnZW5lcmF0ZU1IVE1MRGF0YShQYWdlKiBw
YWdlKQorUmVmPFNoYXJlZEJ1ZmZlcj4gTUhUTUxBcmNoaXZlOjpnZW5lcmF0ZU1IVE1MRGF0YShQ
YWdlKiBwYWdlKQogewogICAgIFZlY3RvcjxQYWdlU2VyaWFsaXplcjo6UmVzb3VyY2U+IHJlc291
cmNlczsKICAgICBQYWdlU2VyaWFsaXplciBwYWdlU2VyaWFsaXplcihyZXNvdXJjZXMpOwpAQCAt
MTYyLDcgKzE2Miw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IE1IVE1MQXJjaGl2ZTo6Z2VuZXJh
dGVNSFRNTERhdGEoUGFnZSogcGFnZSkKICAgICAvLyBXZSB1c2UgdXRmOCgpIGJlbG93IGluc3Rl
YWQgb2YgYXNjaWkoKSBhcyBhc2NpaSgpIHJlcGxhY2VzIENSTEZzIHdpdGggPz8gKHdlIHN0aWxs
IG9ubHkgaGF2ZSBwdXQgQVNDSUkgY2hhcmFjdGVycyBpbiBpdCkuCiAgICAgQVNTRVJUKHN0cmlu
Z0J1aWxkZXIudG9TdHJpbmcoKS5jb250YWluc09ubHlBU0NJSSgpKTsKICAgICBDU3RyaW5nIGFz
Y2lpU3RyaW5nID0gc3RyaW5nQnVpbGRlci50b1N0cmluZygpLnV0ZjgoKTsKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBtaHRtbERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIGF1
dG8gbWh0bWxEYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBtaHRtbERhdGEtPmFw
cGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lpU3RyaW5nLmxlbmd0aCgpKTsKIAogICAgIGZv
ciAoYXV0byYgcmVzb3VyY2UgOiByZXNvdXJjZXMpIHsKQEAgLTIxMyw3ICsyMTMsNyBAQCBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBNSFRNTEFyY2hpdmU6OmdlbmVyYXRlTUhUTUxEYXRhKFBhZ2UqIHBh
Z2UpCiAgICAgYXNjaWlTdHJpbmcgPSBtYWtlU3RyaW5nKCItLSIsIGJvdW5kYXJ5LCAiLS1cclxu
IikudXRmOCgpOwogICAgIG1odG1sRGF0YS0+YXBwZW5kKGFzY2lpU3RyaW5nLmRhdGEoKSwgYXNj
aWlTdHJpbmcubGVuZ3RoKCkpOwogCi0gICAgcmV0dXJuIG1odG1sRGF0YS5yZWxlYXNlKCk7Cisg
ICAgcmV0dXJuIG1odG1sRGF0YTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuaAppbmRleCA4NTI0NjU5YWFiMi4uM2QyZGI3
Yzk2MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01I
VE1MQXJjaGl2ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01I
VE1MQXJjaGl2ZS5oCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPE1I
VE1MQXJjaGl2ZT4gY3JlYXRlKCk7CiAgICAgc3RhdGljIFJlZlB0cjxNSFRNTEFyY2hpdmU+IGNy
ZWF0ZShjb25zdCBVUkwmLCBTaGFyZWRCdWZmZXImKTsKIAotICAgIHN0YXRpYyBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBnZW5lcmF0ZU1IVE1MRGF0YShQYWdlKik7CisgICAgc3RhdGljIFJlZjxTaGFy
ZWRCdWZmZXI+IGdlbmVyYXRlTUhUTUxEYXRhKFBhZ2UqKTsKIAogICAgIHZpcnR1YWwgfk1IVE1M
QXJjaGl2ZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9t
aHRtbC9NSFRNTFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRt
bC9NSFRNTFBhcnNlci5jcHAKaW5kZXggZTFiMTA0Y2UxZGEuLjVmZDM5YmU3YmQxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3Bw
CkBAIC02OCw3ICs2OCw3IEBAIFJlZlB0cjxNSFRNTEFyY2hpdmU+IE1IVE1MUGFyc2VyOjpwYXJz
ZUFyY2hpdmVXaXRoSGVhZGVyKE1JTUVIZWFkZXIqIGhlYWRlcikKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgfQogCi0gICAgUmVmUHRyPE1IVE1MQXJjaGl2ZT4gYXJjaGl2ZSA9IE1IVE1M
QXJjaGl2ZTo6Y3JlYXRlKCk7CisgICAgYXV0byBhcmNoaXZlID0gTUhUTUxBcmNoaXZlOjpjcmVh
dGUoKTsKICAgICBpZiAoIWhlYWRlci0+aXNNdWx0aXBhcnQoKSkgewogICAgICAgICAvLyBXaXRo
IElFIGEgcGFnZSB3aXRoIG5vIHJlc291cmNlIGlzIG5vdCBtdWx0aS1wYXJ0LgogICAgICAgICBi
b29sIGVuZE9mQXJjaGl2ZVJlYWNoZWQgPSBmYWxzZTsKQEAgLTc2LDcgKzc2LDcgQEAgUmVmUHRy
PE1IVE1MQXJjaGl2ZT4gTUhUTUxQYXJzZXI6OnBhcnNlQXJjaGl2ZVdpdGhIZWFkZXIoTUlNRUhl
YWRlciogaGVhZGVyKQogICAgICAgICBpZiAoIXJlc291cmNlKQogICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgICAgIGFyY2hpdmUtPnNldE1haW5SZXNvdXJjZShyZXNvdXJjZS5yZWxl
YXNlTm9uTnVsbCgpKTsKLSAgICAgICAgcmV0dXJuIGFyY2hpdmU7CisgICAgICAgIHJldHVybiBX
VEZNb3ZlKGFyY2hpdmUpOwogICAgIH0KIAogICAgIC8vIFNraXAgdGhlIG1lc3NhZ2UgY29udGVu
dCAoaXQncyBhIGdlbmVyaWMgYnJvd3NlciBzcGVjaWZpYyBtZXNzYWdlKS4KQEAgLTEwMCw3ICsx
MDAsNyBAQCBSZWZQdHI8TUhUTUxBcmNoaXZlPiBNSFRNTFBhcnNlcjo6cGFyc2VBcmNoaXZlV2l0
aEhlYWRlcihNSU1FSGVhZGVyKiBoZWFkZXIpCiAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGVu
ZE9mUGFydFJlYWNoZWQsIGVuZE9mUGFydFJlYWNoZWQpOwogICAgICAgICAgICAgLy8gVGhlIHRv
cC1mcmFtZSBpcyB0aGUgZmlyc3QgZnJhbWUgZm91bmQsIHJlZ2FyZGxlc3Mgb2YgdGhlIG5lc3Rp
bmcgbGV2ZWwuCiAgICAgICAgICAgICBpZiAoc3ViZnJhbWVBcmNoaXZlLT5tYWluUmVzb3VyY2Uo
KSkKLSAgICAgICAgICAgICAgICBhZGRSZXNvdXJjZVRvQXJjaGl2ZShzdWJmcmFtZUFyY2hpdmUt
Pm1haW5SZXNvdXJjZSgpLCBhcmNoaXZlLmdldCgpKTsKKyAgICAgICAgICAgICAgICBhZGRSZXNv
dXJjZVRvQXJjaGl2ZShzdWJmcmFtZUFyY2hpdmUtPm1haW5SZXNvdXJjZSgpLCBhcmNoaXZlLnB0
cigpKTsKICAgICAgICAgICAgIGFyY2hpdmUtPmFkZFN1YmZyYW1lQXJjaGl2ZShzdWJmcmFtZUFy
Y2hpdmUucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
fQpAQCAtMTEwLDEwICsxMTAsMTAgQEAgUmVmUHRyPE1IVE1MQXJjaGl2ZT4gTUhUTUxQYXJzZXI6
OnBhcnNlQXJjaGl2ZVdpdGhIZWFkZXIoTUlNRUhlYWRlciogaGVhZGVyKQogICAgICAgICAgICAg
TE9HX0VSUk9SKCJGYWlsZWQgdG8gcGFyc2UgTUhUTUwgcGFydC4iKTsKICAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgICAgICB9Ci0gICAgICAgIGFkZFJlc291cmNlVG9BcmNoaXZlKHJl
c291cmNlLmdldCgpLCBhcmNoaXZlLmdldCgpKTsKKyAgICAgICAgYWRkUmVzb3VyY2VUb0FyY2hp
dmUocmVzb3VyY2UuZ2V0KCksIGFyY2hpdmUucHRyKCkpOwogICAgIH0KIAotICAgIHJldHVybiBh
cmNoaXZlLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gV1RGTW92ZShhcmNoaXZlKTsKIH0KIAogdm9p
ZCBNSFRNTFBhcnNlcjo6YWRkUmVzb3VyY2VUb0FyY2hpdmUoQXJjaGl2ZVJlc291cmNlKiByZXNv
dXJjZSwgTUhUTUxBcmNoaXZlKiBhcmNoaXZlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvRmlsZVJlYWRlcklPUy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9GaWxlUmVhZGVySU9TLmNwcAppbmRleCA1MDNlZjQy
ZDAyOC4uOGE3Zjc3ZmE0MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL2lvcy9BdWRpb0ZpbGVSZWFkZXJJT1MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL2lvcy9BdWRpb0ZpbGVSZWFkZXJJT1MuY3BwCkBAIC0xNzcsNyArMTc3LDcgQEAg
UmVmUHRyPEF1ZGlvQnVzPiBBdWRpb0ZpbGVSZWFkZXI6OmNyZWF0ZUJ1cyhmbG9hdCBzYW1wbGVS
YXRlLCBib29sIG1peFRvTW9ubykKICAgICBzaXplX3QgYnVzQ2hhbm5lbENvdW50ID0gbWl4VG9N
b25vID8gMSA6IG51bWJlck9mQ2hhbm5lbHM7CiAKICAgICAvLyBDcmVhdGUgQXVkaW9CdXMgd2hl
cmUgd2UnbGwgcHV0IHRoZSBQQ00gYXVkaW8gZGF0YQotICAgIFJlZlB0cjxBdWRpb0J1cz4gYXVk
aW9CdXMgPSBBdWRpb0J1czo6Y3JlYXRlKGJ1c0NoYW5uZWxDb3VudCwgbnVtYmVyT2ZGcmFtZXMp
OworICAgIGF1dG8gYXVkaW9CdXMgPSBBdWRpb0J1czo6Y3JlYXRlKGJ1c0NoYW5uZWxDb3VudCwg
bnVtYmVyT2ZGcmFtZXMpOwogICAgIGF1ZGlvQnVzLT5zZXRTYW1wbGVSYXRlKG1fY2xpZW50RGF0
YUZvcm1hdC5tU2FtcGxlUmF0ZSk7IC8vIHNhdmUgZm9yIGxhdGVyCiAKICAgICAvLyBPbmx5IGFs
bG9jYXRlZCBpbiB0aGUgbWl4VG9Nb25vIGNhc2U7IGRlYWxsb2NhdGVkIG9uIGRlc3RydWN0aW9u
LgpAQCAtMjI4LDcgKzIyOCw3IEBAIFJlZlB0cjxBdWRpb0J1cz4gQXVkaW9GaWxlUmVhZGVyOjpj
cmVhdGVCdXMoZmxvYXQgc2FtcGxlUmF0ZSwgYm9vbCBtaXhUb01vbm8pCiAKICAgICBkZXN0cm95
QXVkaW9CdWZmZXJMaXN0KGJ1ZmZlckxpc3QpOwogCi0gICAgcmV0dXJuIGF1ZGlvQnVzLnJlbGVh
c2UoKTsKKyAgICByZXR1cm4gYXVkaW9CdXM7CiB9CiAKIFJlZlB0cjxBdWRpb0J1cz4gY3JlYXRl
QnVzRnJvbUF1ZGlvRmlsZShjb25zdCBjaGFyKiBmaWxlUGF0aCwgYm9vbCBtaXhUb01vbm8sIGZs
b2F0IHNhbXBsZVJhdGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGli
L1NoYXJlZEJ1ZmZlckdsaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFy
ZWRCdWZmZXJHbGliLmNwcAppbmRleCBlMTUyMmY2ZmFjMS4uYWQ3MzQ5ZDZmM2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcApAQCAt
MzEsNyArMzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRo
KQogewogICAgIGlmIChmaWxlUGF0aC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiAwOworICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIENTdHJpbmcgZmlsZW5hbWUgPSBmaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24oZmlsZVBhdGgpOwogICAgIEdVbmlxdWVPdXRQdHI8Z2NoYXI+IGNvbnRl
bnRzOwpAQCAtMzksMTIgKzM5LDEwIEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiAgICAgR1Vu
aXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwogICAgIGlmICghZ19maWxlX2dldF9jb250ZW50cyhm
aWxlbmFtZS5kYXRhKCksICZjb250ZW50cy5vdXRQdHIoKSwgJnNpemUsICZlcnJvci5vdXRQdHIo
KSkpIHsKICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gZnVsbHkgcmVhZCBjb250ZW50cyBv
ZiBmaWxlICVzIC0gJXMiLCBmaWxlbmFtZUZvckRpc3BsYXkoZmlsZVBhdGgpLnV0ZjgoKS5kYXRh
KCksIGVycm9yLT5tZXNzYWdlKTsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlc3VsdCA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGNvbnRlbnRzLmdldCgpLCBzaXplKTsKLQotICAgIHJldHVybiByZXN1
bHQucmVsZWFzZSgpOworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShjb250ZW50cy5n
ZXQoKSwgc2l6ZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvVXRpbGl0aWVzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvVXRpbGl0aWVzLmNw
cAppbmRleCA4YTNmZjMzZDAwMy4uOGQ5OTJmNjEwYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvVXRpbGl0aWVzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb1V0aWxpdGllcy5jcHAKQEAg
LTI4Miw3ICsyODIsNyBAQCBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBjb3B5Q2Fpcm9JbWFnZVN1
cmZhY2UoY2Fpcm9fc3VyZmFjZV90KiBvcmlnaW5hbFN1cmZhY2UpCiAgICAgY2Fpcm9fc2V0X3Nv
dXJjZV9zdXJmYWNlKGNyLmdldCgpLCBvcmlnaW5hbFN1cmZhY2UsIDAsIDApOwogICAgIGNhaXJv
X3NldF9vcGVyYXRvcihjci5nZXQoKSwgQ0FJUk9fT1BFUkFUT1JfU09VUkNFKTsKICAgICBjYWly
b19wYWludChjci5nZXQoKSk7Ci0gICAgcmV0dXJuIG5ld1N1cmZhY2UucmVsZWFzZSgpOworICAg
IHJldHVybiBuZXdTdXJmYWNlOwogfQogCiB2b2lkIGNvcHlSZWN0RnJvbUNhaXJvU3VyZmFjZVRv
Q29udGV4dChjYWlyb19zdXJmYWNlX3QqIGZyb20sIGNhaXJvX3QqIHRvLCBjb25zdCBJbnRTaXpl
JiBvZmZzZXQsIGNvbnN0IEludFJlY3QmIHJlY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCmluZGV4
IGJjN2I0ZGU0M2U2Li5mODQ1ZmM1MWNiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKQEAgLTMz
Myw3ICszMzMsNyBAQCBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBjb3B5U3VyZmFjZVRvSW1hZ2VB
bmRBZGp1c3RSZWN0KGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZQogdGVtcGxhdGUgPE11bHRpcGx5
IG11bHRpcGxpZWQ+CiBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IGdldEltYWdlRGF0YShjb25z
dCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbnRSZWN0JiBsb2dpY2FsUmVjdCwgY29uc3QgSW1hZ2VC
dWZmZXJEYXRhJiBkYXRhLCBjb25zdCBJbnRTaXplJiBzaXplLCBjb25zdCBJbnRTaXplJiBsb2dp
Y2FsU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlKQogewotICAgIFJlZlB0cjxVaW50OENsYW1w
ZWRBcnJheT4gcmVzdWx0ID0gVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQo
cmVjdC53aWR0aCgpICogcmVjdC5oZWlnaHQoKSAqIDQpOworICAgIGF1dG8gcmVzdWx0ID0gVWlu
dDhDbGFtcGVkQXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQocmVjdC53aWR0aCgpICogcmVjdC5o
ZWlnaHQoKSAqIDQpOwogICAgIGlmICghcmVzdWx0KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IApAQCAtNDEwLDcgKzQxMCw3IEBAIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gZ2V0SW1hZ2VE
YXRhKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEludFJlY3QmIGxvZ2ljCiAgICAgICAgIGRl
c3RSb3dzICs9IGRlc3RCeXRlc1BlclJvdzsKICAgICB9CiAKLSAgICByZXR1cm4gcmVzdWx0LnJl
bGVhc2UoKTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBVbml0
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ljb25H
dGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ljb25HdGsuY3Bw
CmluZGV4IDg4MGM0Yzk3OTRhLi5hZjE4NWE1NGNkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ljb25HdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9JY29uR3RrLmNwcApAQCAtOTMsMTEgKzkzLDExIEBAIHN0
YXRpYyBTdHJpbmcgbG9va3VwSWNvbk5hbWUoU3RyaW5nIE1JTUVUeXBlKQogUmVmUHRyPEljb24+
IEljb246OmNyZWF0ZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVz
KQogewogICAgIGlmIChmaWxlbmFtZXMuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gMDsKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBpZiAoZmlsZW5hbWVzLnNpemUoKSA9PSAxKSB7
CiAgICAgICAgIGlmICghZ19wYXRoX3NraXBfcm9vdChmaWxlbmFtZXNbMF0udXRmOCgpLmRhdGEo
KSkpCi0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwog
CiAgICAgICAgIFN0cmluZyBNSU1FVHlwZSA9IE1JTUVUeXBlUmVnaXN0cnk6OmdldE1JTUVUeXBl
Rm9yUGF0aChmaWxlbmFtZXNbMF0pOwogICAgICAgICBTdHJpbmcgaWNvbk5hbWUgPSBsb29rdXBJ
Y29uTmFtZShNSU1FVHlwZSk7CkBAIC0xMDUsOCArMTA1LDggQEAgUmVmUHRyPEljb24+IEljb246
OmNyZWF0ZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzKQogICAg
ICAgICBSZWZQdHI8SWNvbj4gaWNvbiA9IGFkb3B0UmVmKG5ldyBJY29uKTsKICAgICAgICAgaWNv
bi0+bV9pY29uID0gZ3RrX2ljb25fdGhlbWVfbG9hZF9pY29uKGd0a19pY29uX3RoZW1lX2dldF9k
ZWZhdWx0KCksIGljb25OYW1lLnV0ZjgoKS5kYXRhKCksIDE2LCBHVEtfSUNPTl9MT09LVVBfVVNF
X0JVSUxUSU4sIDApOwogICAgICAgICBpZiAoIWljb24tPm1faWNvbikKLSAgICAgICAgICAgIHJl
dHVybiAwOwotICAgICAgICByZXR1cm4gaWNvbi5yZWxlYXNlKCk7CisgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIGljb247CiAgICAgfQogCiAgICAgLy9GSVhNRTog
SW1wbGVtZW50IHRoaXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL3VuaXgv
U2hhcmVkTWVtb3J5VW5peC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS91bml4L1NoYXJl
ZE1lbW9yeVVuaXguY3BwCmluZGV4IGMyNDYzMTJmOWI3Li5kYTM1NTYwYTBlMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vdW5peC9TaGFyZWRNZW1vcnlVbml4LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS91bml4L1NoYXJlZE1lbW9yeVVuaXguY3BwCkBAIC0x
MjIsMTQgKzEyMiwxNCBAQCBSZWZQdHI8U2hhcmVkTWVtb3J5PiBTaGFyZWRNZW1vcnk6OmNyZWF0
ZSh2b2lkKiBhZGRyZXNzLCBzaXplX3Qgc2l6ZSwgUHJvdGVjdGlvbgogICAgIH0KICAgICBpZiAo
ZmlsZURlc2NyaXB0b3IgPT0gLTEpIHsKICAgICAgICAgV1RGTG9nQWx3YXlzKCJGYWlsZWQgdG8g
Y3JlYXRlIHNoYXJlZCBtZW1vcnkgZmlsZSAlczogJXMiLCB0ZW1wTmFtZS5kYXRhKCksIHN0cmVy
cm9yKGVycm5vKSk7Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICB9CiAKICAgICB3aGlsZSAoZnRydW5jYXRlKGZpbGVEZXNjcmlwdG9yLCBzaXplKSA9PSAt
MSkgewogICAgICAgICBpZiAoZXJybm8gIT0gRUlOVFIpIHsKICAgICAgICAgICAgIGNsb3NlV2l0
aFJldHJ5KGZpbGVEZXNjcmlwdG9yKTsKICAgICAgICAgICAgIHNobV91bmxpbmsodGVtcE5hbWUu
ZGF0YSgpKTsKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTEzNyw3ICsxMzcsNyBAQCBSZWZQdHI8U2hhcmVk
TWVtb3J5PiBTaGFyZWRNZW1vcnk6OmNyZWF0ZSh2b2lkKiBhZGRyZXNzLCBzaXplX3Qgc2l6ZSwg
UHJvdGVjdGlvbgogICAgIGlmIChkYXRhID09IE1BUF9GQUlMRUQpIHsKICAgICAgICAgY2xvc2VX
aXRoUmV0cnkoZmlsZURlc2NyaXB0b3IpOwogICAgICAgICBzaG1fdW5saW5rKHRlbXBOYW1lLmRh
dGEoKSk7Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9
CiAKICAgICBzaG1fdW5saW5rKHRlbXBOYW1lLmRhdGEoKSk7CkBAIC0xNDYsNyArMTQ2LDcgQEAg
UmVmUHRyPFNoYXJlZE1lbW9yeT4gU2hhcmVkTWVtb3J5OjpjcmVhdGUodm9pZCogYWRkcmVzcywg
c2l6ZV90IHNpemUsIFByb3RlY3Rpb24KICAgICBpbnN0YW5jZS0+bV9kYXRhID0gZGF0YTsKICAg
ICBpbnN0YW5jZS0+bV9maWxlRGVzY3JpcHRvciA9IGZpbGVEZXNjcmlwdG9yOwogICAgIGluc3Rh
bmNlLT5tX3NpemUgPSBzaXplOwotICAgIHJldHVybiBpbnN0YW5jZS5yZWxlYXNlKCk7CisgICAg
cmV0dXJuIGluc3RhbmNlOwogfQogCiBSZWZQdHI8U2hhcmVkTWVtb3J5PiBTaGFyZWRNZW1vcnk6
OmFsbG9jYXRlKHNpemVfdCBzaXplKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NT
Y2VuZS5jcHAKaW5kZXggY2ZlZjNmMjA5YjIuLjM0OTY4NjJkOTkzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNz
U2NlbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNz
L0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAKQEAgLTQ2Myw4ICs0NjMsNyBAQCB2b2lkIENv
b3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6c3luY0ltYWdlQmFja2luZ3MoY29uc3QgQ29vcmRpbmF0
ZWRHcmFwaGljc1N0YXRlJgogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmNyZWF0ZUlt
YWdlQmFja2luZyhDb29yZGluYXRlZEltYWdlQmFja2luZ0lEIGltYWdlSUQpCiB7CiAgICAgQVNT
RVJUKCFtX2ltYWdlQmFja2luZ3MuY29udGFpbnMoaW1hZ2VJRCkpOwotICAgIFJlZlB0cjxDb29y
ZGluYXRlZEJhY2tpbmdTdG9yZT4gYmFja2luZ1N0b3JlKENvb3JkaW5hdGVkQmFja2luZ1N0b3Jl
OjpjcmVhdGUoKSk7Ci0gICAgbV9pbWFnZUJhY2tpbmdzLmFkZChpbWFnZUlELCBiYWNraW5nU3Rv
cmUucmVsZWFzZSgpKTsKKyAgICBtX2ltYWdlQmFja2luZ3MuYWRkKGltYWdlSUQsIENvb3JkaW5h
dGVkQmFja2luZ1N0b3JlOjpjcmVhdGUoKSk7CiB9CiAKIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGlj
c1NjZW5lOjp1cGRhdGVJbWFnZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCBpbWFn
ZUlELCBSZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNlPiYmIHN1cmZhY2UpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvY2Fpcm8vU2hhcmVhYmxlQml0bWFwQ2Fpcm8uY3BwIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL2NhaXJvL1NoYXJlYWJsZUJpdG1hcENhaXJvLmNwcAppbmRleCAz
MTY4MWU1ZmQzZS4uMjIzOWNlZTM3NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9jYWlyby9TaGFyZWFibGVCaXRtYXBDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL2NhaXJvL1NoYXJlYWJsZUJpdG1hcENhaXJvLmNwcApAQCAtNzksNyArNzksNyBAQCBSZWZQ
dHI8Y2Fpcm9fc3VyZmFjZV90PiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUNhaXJvU3VyZmFjZSgp
CiAgICAgcmVmKCk7IC8vIEJhbGFuY2VkIGJ5IGRlcmVmIGluIHJlbGVhc2VTdXJmYWNlRGF0YS4K
ICAgICBzdGF0aWMgY2Fpcm9fdXNlcl9kYXRhX2tleV90IGRhdGFLZXk7CiAgICAgY2Fpcm9fc3Vy
ZmFjZV9zZXRfdXNlcl9kYXRhKGltYWdlLmdldCgpLCAmZGF0YUtleSwgdGhpcywgcmVsZWFzZVN1
cmZhY2VEYXRhKTsKLSAgICByZXR1cm4gaW1hZ2UucmVsZWFzZSgpOworICAgIHJldHVybiBpbWFn
ZTsKIH0KIAogdm9pZCBTaGFyZWFibGVCaXRtYXA6OnJlbGVhc2VTdXJmYWNlRGF0YSh2b2lkKiB0
eXBlbGVzc0JpdG1hcCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcAppbmRleCA1YzZkOTkwZDIzNC4uMTBhYjIxYmRjMjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTI4NzAsMTIgKzI4NzAsMTEg
QEAgdm9pZCBXZWJQYWdlOjpnZXRDb250ZW50c0FzU3RyaW5nKHVpbnQ2NF90IGNhbGxiYWNrSUQp
CiAjaWYgRU5BQkxFKE1IVE1MKQogdm9pZCBXZWJQYWdlOjpnZXRDb250ZW50c0FzTUhUTUxEYXRh
KHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVy
ID0gTUhUTUxBcmNoaXZlOjpnZW5lcmF0ZU1IVE1MRGF0YShtX3BhZ2UuZ2V0KCkpOworICAgIGF1
dG8gYnVmZmVyID0gTUhUTUxBcmNoaXZlOjpnZW5lcmF0ZU1IVE1MRGF0YShtX3BhZ2UuZ2V0KCkp
OwogCiAgICAgLy8gRklYTUU6IFVzZSBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLgogICAgIElQ
Qzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlOwotICAgIGlmIChidWZmZXIpCi0gICAgICAg
IGRhdGFSZWZlcmVuY2UgPSBJUEM6OkRhdGFSZWZlcmVuY2UocmVpbnRlcnByZXRfY2FzdDxjb25z
dCB1aW50OF90Kj4oYnVmZmVyLT5kYXRhKCkpLCBidWZmZXItPnNpemUoKSk7CisgICAgZGF0YVJl
ZmVyZW5jZSA9IElQQzo6RGF0YVJlZmVyZW5jZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4
X3QqPihidWZmZXItPmRhdGEoKSksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkRhdGFDYWxsYmFjayhkYXRhUmVmZXJlbmNlLCBjYWxsYmFja0lEKSk7
CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1Jl
ZlB0ci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SZWZQdHIuY3BwCmluZGV4
IDE3MmVmYTc2MjdjLi45NWY5N2Q4ZGE3OSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvUmVmUHRyLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9SZWZQdHIuY3BwCkBAIC0xMDgsMTQgKzEwOCw2IEBAIFRFU1QoV1RGX1JlZlB0ciwgQmFzaWMp
CiAgICAgICAgIEFTU0VSVF9FUShudWxscHRyLCBwdHIuZ2V0KCkpOwogICAgIH0KICAgICBBU1NF
UlRfU1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7Ci0KLSAg
ICB7Ci0gICAgICAgIFJlZlB0cjxSZWZMb2dnZXI+IHB0cigmYSk7Ci0gICAgICAgIEFTU0VSVF9F
USgmYSwgcHRyLmdldCgpKTsKLSAgICAgICAgcHRyLnJlbGVhc2UoKTsKLSAgICAgICAgQVNTRVJU
X0VRKG51bGxwdHIsIHB0ci5nZXQoKSk7Ci0gICAgfQotICAgIEFTU0VSVF9TVFJFUSgicmVmKGEp
IGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIH0KIAogVEVTVChXVEZfUmVmUHRy
LCBBc3NpZ25QYXNzUmVmVG9SZWZQdHIpCkBAIC0xMjUsOCArMTE3LDYgQEAgVEVTVChXVEZfUmVm
UHRyLCBBc3NpZ25QYXNzUmVmVG9SZWZQdHIpCiAgICAgICAgIFJlZjxSZWZMb2dnZXI+IHBhc3NS
ZWYoYSk7CiAgICAgICAgIFJlZlB0cjxSZWZMb2dnZXI+IHB0ciA9IFdURk1vdmUocGFzc1JlZik7
CiAgICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLmdldCgpKTsKLSAgICAgICAgcHRyLnJlbGVhc2Uo
KTsKLSAgICAgICAgQVNTRVJUX0VRKG51bGxwdHIsIHB0ci5nZXQoKSk7CiAgICAgfQogICAgIEFT
U0VSVF9TVFJFUSgicmVmKGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIH0K
QEAgLTMzNiw3ICszMjYsNyBAQCBURVNUKFdURl9SZWZQdHIsIFJlbGVhc2UpCiAKICAgICB7CiAg
ICAgICAgIFJlZlB0cjxSZWZMb2dnZXI+IHAxID0gJmE7Ci0gICAgICAgIFJlZlB0cjxSZWZMb2dn
ZXI+IHAyID0gcDEucmVsZWFzZSgpOworICAgICAgICBSZWZQdHI8UmVmTG9nZ2VyPiBwMiA9IFdU
Rk1vdmUocDEpOwogICAgICAgICBBU1NFUlRfRVEobnVsbHB0ciwgcDEuZ2V0KCkpOwogICAgICAg
ICBBU1NFUlRfRVEoJmEsIHAyLmdldCgpKTsKICAgICB9CkBAIC0zNDQsNyArMzM0LDcgQEAgVEVT
VChXVEZfUmVmUHRyLCBSZWxlYXNlKQogCiAgICAgewogICAgICAgICBSZWZQdHI8UmVmTG9nZ2Vy
PiBwMSA9ICZhOwotICAgICAgICBSZWZQdHI8UmVmTG9nZ2VyPiBwMihwMS5yZWxlYXNlKCkpOwor
ICAgICAgICBSZWZQdHI8UmVmTG9nZ2VyPiBwMihXVEZNb3ZlKHAxKSk7CiAgICAgICAgIEFTU0VS
VF9FUShudWxscHRyLCBwMS5nZXQoKSk7CiAgICAgICAgIEFTU0VSVF9FUSgmYSwgcDIuZ2V0KCkp
OwogICAgIH0KQEAgLTM1Miw3ICszNDIsNyBAQCBURVNUKFdURl9SZWZQdHIsIFJlbGVhc2UpCiAK
ICAgICB7CiAgICAgICAgIFJlZlB0cjxEZXJpdmVkUmVmTG9nZ2VyPiBwMSA9ICZhOwotICAgICAg
ICBSZWZQdHI8UmVmTG9nZ2VyPiBwMiA9IHAxLnJlbGVhc2UoKTsKKyAgICAgICAgUmVmUHRyPFJl
ZkxvZ2dlcj4gcDIgPSBXVEZNb3ZlKHAxKTsKICAgICAgICAgQVNTRVJUX0VRKG51bGxwdHIsIHAx
LmdldCgpKTsKICAgICAgICAgQVNTRVJUX0VRKCZhLCBwMi5nZXQoKSk7CiAgICAgfQpAQCAtMzY0
LDcgKzM1NCw3IEBAIFRFU1QoV1RGX1JlZlB0ciwgUmVsZWFzZSkKICAgICAgICAgQVNTRVJUX0VR
KCZhLCBwMS5nZXQoKSk7CiAgICAgICAgIEFTU0VSVF9FUSgmYiwgcDIuZ2V0KCkpOwogICAgICAg
ICBsb2coKSA8PCAifCAiOwotICAgICAgICBwMSA9IHAyLnJlbGVhc2UoKTsKKyAgICAgICAgcDEg
PSBXVEZNb3ZlKHAyKTsKICAgICAgICAgQVNTRVJUX0VRKCZiLCBwMS5nZXQoKSk7CiAgICAgICAg
IEFTU0VSVF9FUShudWxscHRyLCBwMi5nZXQoKSk7CiAgICAgICAgIGxvZygpIDw8ICJ8ICI7CkBA
IC0zNzcsNyArMzY3LDcgQEAgVEVTVChXVEZfUmVmUHRyLCBSZWxlYXNlKQogICAgICAgICBBU1NF
UlRfRVEoJmEsIHAxLmdldCgpKTsKICAgICAgICAgQVNTRVJUX0VRKCZjLCBwMi5nZXQoKSk7CiAg
ICAgICAgIGxvZygpIDw8ICJ8ICI7Ci0gICAgICAgIHAxID0gcDIucmVsZWFzZSgpOworICAgICAg
ICBwMSA9IFdURk1vdmUocDIpOwogICAgICAgICBBU1NFUlRfRVEoJmMsIHAxLmdldCgpKTsKICAg
ICAgICAgQVNTRVJUX0VRKG51bGxwdHIsIHAyLmdldCgpKTsKICAgICAgICAgbG9nKCkgPDwgInwg
IjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>310040</attachid>
            <date>2017-05-13 16:52:42 -0700</date>
            <delta_ts>2017-05-13 18:38:11 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>172074_release_wip.patch</filename>
            <type>text/plain</type>
            <size>21997</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1JlZlB0ci5oIGIvU291cmNlL1dURi93dGYvUmVm
UHRyLmgKaW5kZXggMjc3ZTY3NWRiM2MuLjc4MjEyOWY4Zjk1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9SZWZQdHIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9SZWZQdHIuaApAQCAtNjMsOCAr
NjMsNiBAQCBwdWJsaWM6CiAKICAgICBUKiBnZXQoKSBjb25zdCB7IHJldHVybiBtX3B0cjsgfQog
Ci0gICAgLy8gRklYTUU6IFJlbW92ZSByZWxlYXNlKCkgYW5kIGNoYW5nZSBhbGwgY2FsbCBzaXRl
cyB0byBjYWxsIFdURk1vdmUoKS4KLSAgICBSZWZQdHI8VD4gcmVsZWFzZSgpIHsgUmVmUHRyPFQ+
IHRtcCA9IGFkb3B0UmVmKG1fcHRyKTsgbV9wdHIgPSBudWxscHRyOyByZXR1cm4gdG1wOyB9CiAg
ICAgUmVmPFQ+IHJlbGVhc2VOb25OdWxsKCkgeyBBU1NFUlQobV9wdHIpOyBSZWY8VD4gdG1wKGFk
b3B0UmVmKCptX3B0cikpOyBtX3B0ciA9IG51bGxwdHI7IHJldHVybiB0bXA7IH0KICAgICBSZWY8
Y29uc3QgVD4gcmVsZWFzZUNvbnN0Tm9uTnVsbCgpIHsgQVNTRVJUKG1fcHRyKTsgUmVmPGNvbnN0
IFQ+IHRtcChhZG9wdFJlZigqbV9wdHIpKTsgbV9wdHIgPSBudWxscHRyOyByZXR1cm4gdG1wOyB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9Xb3JrUXVldWVXaW4uY3BwIGIvU291
cmNlL1dURi93dGYvd2luL1dvcmtRdWV1ZVdpbi5jcHAKaW5kZXggZTgxNTQ3NzM3NDYuLmJiZjAx
MWFlMTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi93aW4vV29ya1F1ZXVlV2luLmNwcAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vV29ya1F1ZXVlV2luLmNwcApAQCAtMTg3LDcgKzE4Nyw3
IEBAIHZvaWQgV29ya1F1ZXVlOjpkaXNwYXRjaEFmdGVyKFNlY29uZHMgZHVyYXRpb24sIEZ1bmN0
aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikKICAgICB9CiAKICAgICAvLyBUaGUgdGltZXIgY2FsbGJh
Y2sgd2lsbCBoYW5kbGUgZGVzdHJveWluZyBjb250ZXh0LgotICAgIGNvbnRleHQucmVsZWFzZSgp
LmxlYWtSZWYoKTsKKyAgICBjb250ZXh0LmxlYWtSZWYoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFy
c2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3Bw
CmluZGV4IDkzMTI1ZmNlMTM4Li5iMzk1MDFjMDVjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKQEAgLTYzMCw3ICs2MzAsNyBAQCBwdWJs
aWM6CiAgICAgewogICAgICAgICBpZiAoIW1fcmVzdWx0LT5sZW5ndGgoKSkKICAgICAgICAgICAg
IHJldHVybiBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShD
U1NWYWx1ZU5vcm1hbCk7Ci0gICAgICAgIHJldHVybiBtX3Jlc3VsdC5yZWxlYXNlKCk7CisgICAg
ICAgIHJldHVybiBXVEZNb3ZlKG1fcmVzdWx0KTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC04MzIs
NyArODMyLDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgaWYgKCFtX3Jlc3VsdC0+bGVuZ3Ro
KCkpCiAgICAgICAgICAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJ
ZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb3JtYWwpOwotICAgICAgICByZXR1cm4gbV9yZXN1bHQu
cmVsZWFzZSgpOworICAgICAgICByZXR1cm4gV1RGTW92ZShtX3Jlc3VsdCk7CiAgICAgfQogCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJI
ZWxwZXJzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJI
ZWxwZXJzLmNwcAppbmRleCA0YTMyYTU4YmMwYi4uMzQ5OTk5YjllN2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VySGVscGVycy5jcHAK
QEAgLTkzLDcgKzkzLDcgQEAgcHVibGljOgogICAgICAgICBpZiAoIW1fY2FsY1ZhbHVlKQogICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIG1fc291cmNlUmFuZ2UgPSBtX3Jhbmdl
OwotICAgICAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVWYWx1ZSht
X2NhbGNWYWx1ZS5yZWxlYXNlKCkpOworICAgICAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5n
bGV0b24oKS5jcmVhdGVWYWx1ZShXVEZNb3ZlKG1fY2FsY1ZhbHVlKSk7CiAgICAgfQogICAgIFJl
ZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZU51bWJlcigpCiAgICAgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggNzdiMTIxMTE3ZjMuLjg1
N2JkOGI1ZWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VM
b2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5j
cHAKQEAgLTExMSw3ICsxMTEsNyBAQCBSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IFN1YnJlc291
cmNlTG9hZGVyOjpjcmVhdGUoRnJhbWUmIGZyYW1lLCBDYWNoZWRSZXNvdXJjZQogICAgICAgICAv
LyBpcyBkaXNhYmxlZCB0byBhdm9pZCByZS1lbnRlcmluZyBzdHlsZSBzZWxlY3Rpb24gZnJvbSBh
IGRpZmZlcmVudCB0aHJlYWQgKHNlZSA8cmRhcjovL3Byb2JsZW0vOTEyMTcxOT4pLgogICAgICAg
ICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgZml4ZWQgZm9yIGFsbCBwb3J0cyBpbiA8aHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2NjQ3Pi4KICAgICAgICAgc3VibG9h
ZGVyLT5tX2lPU09yaWdpbmFsUmVxdWVzdCA9IHJlcXVlc3Q7Ci0gICAgICAgIHJldHVybiBzdWJs
b2FkZXIucmVsZWFzZSgpOworICAgICAgICByZXR1cm4gc3VibG9hZGVyOwogICAgIH0KICNlbmRp
ZgogICAgIGlmICghc3VibG9hZGVyLT5pbml0KHJlcXVlc3QpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAKaW5kZXggMmNhNjdl
MjdiZTguLjYxYzYyNmIyOTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJj
aGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAKQEAgLTEzMCw3ICsxMzAsNyBAQCBSZWZQdHI8
TUhUTUxBcmNoaXZlPiBNSFRNTEFyY2hpdmU6OmNyZWF0ZShjb25zdCBVUkwmIHVybCwgU2hhcmVk
QnVmZmVyJiBkYXRhKQogICAgIHJldHVybiBtYWluQXJjaGl2ZTsKIH0KIAotUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gTUhUTUxBcmNoaXZlOjpnZW5lcmF0ZU1IVE1MRGF0YShQYWdlKiBwYWdlKQorUmVm
PFNoYXJlZEJ1ZmZlcj4gTUhUTUxBcmNoaXZlOjpnZW5lcmF0ZU1IVE1MRGF0YShQYWdlKiBwYWdl
KQogewogICAgIFZlY3RvcjxQYWdlU2VyaWFsaXplcjo6UmVzb3VyY2U+IHJlc291cmNlczsKICAg
ICBQYWdlU2VyaWFsaXplciBwYWdlU2VyaWFsaXplcihyZXNvdXJjZXMpOwpAQCAtMTYyLDcgKzE2
Miw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IE1IVE1MQXJjaGl2ZTo6Z2VuZXJhdGVNSFRNTERh
dGEoUGFnZSogcGFnZSkKICAgICAvLyBXZSB1c2UgdXRmOCgpIGJlbG93IGluc3RlYWQgb2YgYXNj
aWkoKSBhcyBhc2NpaSgpIHJlcGxhY2VzIENSTEZzIHdpdGggPz8gKHdlIHN0aWxsIG9ubHkgaGF2
ZSBwdXQgQVNDSUkgY2hhcmFjdGVycyBpbiBpdCkuCiAgICAgQVNTRVJUKHN0cmluZ0J1aWxkZXIu
dG9TdHJpbmcoKS5jb250YWluc09ubHlBU0NJSSgpKTsKICAgICBDU3RyaW5nIGFzY2lpU3RyaW5n
ID0gc3RyaW5nQnVpbGRlci50b1N0cmluZygpLnV0ZjgoKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBtaHRtbERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIGF1dG8gbWh0bWxE
YXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBtaHRtbERhdGEtPmFwcGVuZChhc2Np
aVN0cmluZy5kYXRhKCksIGFzY2lpU3RyaW5nLmxlbmd0aCgpKTsKIAogICAgIGZvciAoYXV0byYg
cmVzb3VyY2UgOiByZXNvdXJjZXMpIHsKQEAgLTIxMyw3ICsyMTMsNyBAQCBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBNSFRNTEFyY2hpdmU6OmdlbmVyYXRlTUhUTUxEYXRhKFBhZ2UqIHBhZ2UpCiAgICAg
YXNjaWlTdHJpbmcgPSBtYWtlU3RyaW5nKCItLSIsIGJvdW5kYXJ5LCAiLS1cclxuIikudXRmOCgp
OwogICAgIG1odG1sRGF0YS0+YXBwZW5kKGFzY2lpU3RyaW5nLmRhdGEoKSwgYXNjaWlTdHJpbmcu
bGVuZ3RoKCkpOwogCi0gICAgcmV0dXJuIG1odG1sRGF0YS5yZWxlYXNlKCk7CisgICAgcmV0dXJu
IG1odG1sRGF0YTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fy
Y2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2
ZS9taHRtbC9NSFRNTEFyY2hpdmUuaAppbmRleCA4NTI0NjU5YWFiMi4uM2QyZGI3Yzk2MDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2
ZS5oCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPE1IVE1MQXJjaGl2
ZT4gY3JlYXRlKCk7CiAgICAgc3RhdGljIFJlZlB0cjxNSFRNTEFyY2hpdmU+IGNyZWF0ZShjb25z
dCBVUkwmLCBTaGFyZWRCdWZmZXImKTsKIAotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBnZW5lcmF0ZU1IVE1MRGF0YShQYWdlKik7CisgICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+
IGdlbmVyYXRlTUhUTUxEYXRhKFBhZ2UqKTsKIAogICAgIHZpcnR1YWwgfk1IVE1MQXJjaGl2ZSgp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRN
TFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBh
cnNlci5jcHAKaW5kZXggZTFiMTA0Y2UxZGEuLjVmZDM5YmU3YmQxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwCkBAIC02OCw3
ICs2OCw3IEBAIFJlZlB0cjxNSFRNTEFyY2hpdmU+IE1IVE1MUGFyc2VyOjpwYXJzZUFyY2hpdmVX
aXRoSGVhZGVyKE1JTUVIZWFkZXIqIGhlYWRlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgfQogCi0gICAgUmVmUHRyPE1IVE1MQXJjaGl2ZT4gYXJjaGl2ZSA9IE1IVE1MQXJjaGl2ZTo6
Y3JlYXRlKCk7CisgICAgYXV0byBhcmNoaXZlID0gTUhUTUxBcmNoaXZlOjpjcmVhdGUoKTsKICAg
ICBpZiAoIWhlYWRlci0+aXNNdWx0aXBhcnQoKSkgewogICAgICAgICAvLyBXaXRoIElFIGEgcGFn
ZSB3aXRoIG5vIHJlc291cmNlIGlzIG5vdCBtdWx0aS1wYXJ0LgogICAgICAgICBib29sIGVuZE9m
QXJjaGl2ZVJlYWNoZWQgPSBmYWxzZTsKQEAgLTc2LDcgKzc2LDcgQEAgUmVmUHRyPE1IVE1MQXJj
aGl2ZT4gTUhUTUxQYXJzZXI6OnBhcnNlQXJjaGl2ZVdpdGhIZWFkZXIoTUlNRUhlYWRlciogaGVh
ZGVyKQogICAgICAgICBpZiAoIXJlc291cmNlKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgICAgIGFyY2hpdmUtPnNldE1haW5SZXNvdXJjZShyZXNvdXJjZS5yZWxlYXNlTm9uTnVs
bCgpKTsKLSAgICAgICAgcmV0dXJuIGFyY2hpdmU7CisgICAgICAgIHJldHVybiBXVEZNb3ZlKGFy
Y2hpdmUpOwogICAgIH0KIAogICAgIC8vIFNraXAgdGhlIG1lc3NhZ2UgY29udGVudCAoaXQncyBh
IGdlbmVyaWMgYnJvd3NlciBzcGVjaWZpYyBtZXNzYWdlKS4KQEAgLTEwMCw3ICsxMDAsNyBAQCBS
ZWZQdHI8TUhUTUxBcmNoaXZlPiBNSFRNTFBhcnNlcjo6cGFyc2VBcmNoaXZlV2l0aEhlYWRlcihN
SU1FSGVhZGVyKiBoZWFkZXIpCiAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGVuZE9mUGFydFJl
YWNoZWQsIGVuZE9mUGFydFJlYWNoZWQpOwogICAgICAgICAgICAgLy8gVGhlIHRvcC1mcmFtZSBp
cyB0aGUgZmlyc3QgZnJhbWUgZm91bmQsIHJlZ2FyZGxlc3Mgb2YgdGhlIG5lc3RpbmcgbGV2ZWwu
CiAgICAgICAgICAgICBpZiAoc3ViZnJhbWVBcmNoaXZlLT5tYWluUmVzb3VyY2UoKSkKLSAgICAg
ICAgICAgICAgICBhZGRSZXNvdXJjZVRvQXJjaGl2ZShzdWJmcmFtZUFyY2hpdmUtPm1haW5SZXNv
dXJjZSgpLCBhcmNoaXZlLmdldCgpKTsKKyAgICAgICAgICAgICAgICBhZGRSZXNvdXJjZVRvQXJj
aGl2ZShzdWJmcmFtZUFyY2hpdmUtPm1haW5SZXNvdXJjZSgpLCBhcmNoaXZlLnB0cigpKTsKICAg
ICAgICAgICAgIGFyY2hpdmUtPmFkZFN1YmZyYW1lQXJjaGl2ZShzdWJmcmFtZUFyY2hpdmUucmVs
ZWFzZU5vbk51bGwoKSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQpAQCAtMTEw
LDEwICsxMTAsMTAgQEAgUmVmUHRyPE1IVE1MQXJjaGl2ZT4gTUhUTUxQYXJzZXI6OnBhcnNlQXJj
aGl2ZVdpdGhIZWFkZXIoTUlNRUhlYWRlciogaGVhZGVyKQogICAgICAgICAgICAgTE9HX0VSUk9S
KCJGYWlsZWQgdG8gcGFyc2UgTUhUTUwgcGFydC4iKTsKICAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgICAgICB9Ci0gICAgICAgIGFkZFJlc291cmNlVG9BcmNoaXZlKHJlc291cmNlLmdl
dCgpLCBhcmNoaXZlLmdldCgpKTsKKyAgICAgICAgYWRkUmVzb3VyY2VUb0FyY2hpdmUocmVzb3Vy
Y2UuZ2V0KCksIGFyY2hpdmUucHRyKCkpOwogICAgIH0KIAotICAgIHJldHVybiBhcmNoaXZlLnJl
bGVhc2UoKTsKKyAgICByZXR1cm4gV1RGTW92ZShhcmNoaXZlKTsKIH0KIAogdm9pZCBNSFRNTFBh
cnNlcjo6YWRkUmVzb3VyY2VUb0FyY2hpdmUoQXJjaGl2ZVJlc291cmNlKiByZXNvdXJjZSwgTUhU
TUxBcmNoaXZlKiBhcmNoaXZlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vaW9zL0F1ZGlvRmlsZVJlYWRlcklPUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9pb3MvQXVkaW9GaWxlUmVhZGVySU9TLmNwcAppbmRleCA1MDNlZjQyZDAyOC4uOGE3
Zjc3ZmE0MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9B
dWRpb0ZpbGVSZWFkZXJJT1MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L2lvcy9BdWRpb0ZpbGVSZWFkZXJJT1MuY3BwCkBAIC0xNzcsNyArMTc3LDcgQEAgUmVmUHRyPEF1
ZGlvQnVzPiBBdWRpb0ZpbGVSZWFkZXI6OmNyZWF0ZUJ1cyhmbG9hdCBzYW1wbGVSYXRlLCBib29s
IG1peFRvTW9ubykKICAgICBzaXplX3QgYnVzQ2hhbm5lbENvdW50ID0gbWl4VG9Nb25vID8gMSA6
IG51bWJlck9mQ2hhbm5lbHM7CiAKICAgICAvLyBDcmVhdGUgQXVkaW9CdXMgd2hlcmUgd2UnbGwg
cHV0IHRoZSBQQ00gYXVkaW8gZGF0YQotICAgIFJlZlB0cjxBdWRpb0J1cz4gYXVkaW9CdXMgPSBB
dWRpb0J1czo6Y3JlYXRlKGJ1c0NoYW5uZWxDb3VudCwgbnVtYmVyT2ZGcmFtZXMpOworICAgIGF1
dG8gYXVkaW9CdXMgPSBBdWRpb0J1czo6Y3JlYXRlKGJ1c0NoYW5uZWxDb3VudCwgbnVtYmVyT2ZG
cmFtZXMpOwogICAgIGF1ZGlvQnVzLT5zZXRTYW1wbGVSYXRlKG1fY2xpZW50RGF0YUZvcm1hdC5t
U2FtcGxlUmF0ZSk7IC8vIHNhdmUgZm9yIGxhdGVyCiAKICAgICAvLyBPbmx5IGFsbG9jYXRlZCBp
biB0aGUgbWl4VG9Nb25vIGNhc2U7IGRlYWxsb2NhdGVkIG9uIGRlc3RydWN0aW9uLgpAQCAtMjI4
LDcgKzIyOCw3IEBAIFJlZlB0cjxBdWRpb0J1cz4gQXVkaW9GaWxlUmVhZGVyOjpjcmVhdGVCdXMo
ZmxvYXQgc2FtcGxlUmF0ZSwgYm9vbCBtaXhUb01vbm8pCiAKICAgICBkZXN0cm95QXVkaW9CdWZm
ZXJMaXN0KGJ1ZmZlckxpc3QpOwogCi0gICAgcmV0dXJuIGF1ZGlvQnVzLnJlbGVhc2UoKTsKKyAg
ICByZXR1cm4gYXVkaW9CdXM7CiB9CiAKIFJlZlB0cjxBdWRpb0J1cz4gY3JlYXRlQnVzRnJvbUF1
ZGlvRmlsZShjb25zdCBjaGFyKiBmaWxlUGF0aCwgYm9vbCBtaXhUb01vbm8sIGZsb2F0IHNhbXBs
ZVJhdGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1
ZmZlckdsaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJH
bGliLmNwcAppbmRleCBlMTUyMmY2ZmFjMS4uYWQ3MzQ5ZDZmM2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcApAQCAtMzEsNyArMzEs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogewogICAg
IGlmIChmaWxlUGF0aC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAogICAgIENTdHJpbmcgZmlsZW5hbWUgPSBmaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24oZmlsZVBhdGgpOwogICAgIEdVbmlxdWVPdXRQdHI8Z2NoYXI+IGNvbnRlbnRzOwpAQCAt
MzksMTIgKzM5LDEwIEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
RnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiAgICAgR1VuaXF1ZU91dFB0
cjxHRXJyb3I+IGVycm9yOwogICAgIGlmICghZ19maWxlX2dldF9jb250ZW50cyhmaWxlbmFtZS5k
YXRhKCksICZjb250ZW50cy5vdXRQdHIoKSwgJnNpemUsICZlcnJvci5vdXRQdHIoKSkpIHsKICAg
ICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gZnVsbHkgcmVhZCBjb250ZW50cyBvZiBmaWxlICVz
IC0gJXMiLCBmaWxlbmFtZUZvckRpc3BsYXkoZmlsZVBhdGgpLnV0ZjgoKS5kYXRhKCksIGVycm9y
LT5tZXNzYWdlKTsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlc3VsdCA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGNvbnRlbnRzLmdldCgpLCBzaXplKTsKLQotICAgIHJldHVybiByZXN1bHQucmVsZWFz
ZSgpOworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShjb250ZW50cy5nZXQoKSwgc2l6
ZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vQ0FDRkxheWVyVHJlZUhvc3QuY3Bw
CmluZGV4IDRhOGY1OTcyN2M2Li43MjlmODQzZGY5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vQ0FDRkxheWVyVHJlZUhvc3Qu
Y3BwCkBAIC0xMzEsNyArMTMxLDcgQEAgUmVmUHRyPENBQ0ZMYXllclRyZWVIb3N0PiBDQUNGTGF5
ZXJUcmVlSG9zdDo6Y3JlYXRlKCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogICAg
IGhvc3QtPmluaXRpYWxpemUoKTsKLSAgICByZXR1cm4gaG9zdC5yZWxlYXNlKCk7CisgICAgcmV0
dXJuIGhvc3Q7CiB9CiAKIENBQ0ZMYXllclRyZWVIb3N0OjpDQUNGTGF5ZXJUcmVlSG9zdCgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb1V0
aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWly
b1V0aWxpdGllcy5jcHAKaW5kZXggOGEzZmYzM2QwMDMuLjhkOTkyZjYxMGMwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb1V0aWxpdGllcy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9VdGls
aXRpZXMuY3BwCkBAIC0yODIsNyArMjgyLDcgQEAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gY29w
eUNhaXJvSW1hZ2VTdXJmYWNlKGNhaXJvX3N1cmZhY2VfdCogb3JpZ2luYWxTdXJmYWNlKQogICAg
IGNhaXJvX3NldF9zb3VyY2Vfc3VyZmFjZShjci5nZXQoKSwgb3JpZ2luYWxTdXJmYWNlLCAwLCAw
KTsKICAgICBjYWlyb19zZXRfb3BlcmF0b3IoY3IuZ2V0KCksIENBSVJPX09QRVJBVE9SX1NPVVJD
RSk7CiAgICAgY2Fpcm9fcGFpbnQoY3IuZ2V0KCkpOwotICAgIHJldHVybiBuZXdTdXJmYWNlLnJl
bGVhc2UoKTsKKyAgICByZXR1cm4gbmV3U3VyZmFjZTsKIH0KIAogdm9pZCBjb3B5UmVjdEZyb21D
YWlyb1N1cmZhY2VUb0NvbnRleHQoY2Fpcm9fc3VyZmFjZV90KiBmcm9tLCBjYWlyb190KiB0bywg
Y29uc3QgSW50U2l6ZSYgb2Zmc2V0LCBjb25zdCBJbnRSZWN0JiByZWN0KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNh
aXJvLmNwcAppbmRleCBiYzdiNGRlNDNlNi4uZjg0NWZjNTFjYjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fp
cm8uY3BwCkBAIC0zMzMsNyArMzMzLDcgQEAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gY29weVN1
cmZhY2VUb0ltYWdlQW5kQWRqdXN0UmVjdChjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UKIHRlbXBs
YXRlIDxNdWx0aXBseSBtdWx0aXBsaWVkPgogUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBnZXRJ
bWFnZURhdGEoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW50UmVjdCYgbG9naWNhbFJlY3Qs
IGNvbnN0IEltYWdlQnVmZmVyRGF0YSYgZGF0YSwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgY29uc3Qg
SW50U2l6ZSYgbG9naWNhbFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSkKIHsKLSAgICBSZWZQ
dHI8VWludDhDbGFtcGVkQXJyYXk+IHJlc3VsdCA9IFVpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGVV
bmluaXRpYWxpemVkKHJlY3Qud2lkdGgoKSAqIHJlY3QuaGVpZ2h0KCkgKiA0KTsKKyAgICBhdXRv
IHJlc3VsdCA9IFVpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGVVbmluaXRpYWxpemVkKHJlY3Qud2lk
dGgoKSAqIHJlY3QuaGVpZ2h0KCkgKiA0KTsKICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKQEAgLTQxMCw3ICs0MTAsNyBAQCBSZWZQdHI8VWludDhDbGFtcGVkQXJy
YXk+IGdldEltYWdlRGF0YShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbnRSZWN0JiBsb2dp
YwogICAgICAgICBkZXN0Um93cyArPSBkZXN0Qnl0ZXNQZXJSb3c7CiAgICAgfQogCi0gICAgcmV0
dXJuIHJlc3VsdC5yZWxlYXNlKCk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogdGVtcGxhdGU8
dHlwZW5hbWUgVW5pdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2d0ay9JY29uR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0
ay9JY29uR3RrLmNwcAppbmRleCA4ODBjNGM5Nzk0YS4uYWYxODVhNTRjZGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9JY29uR3RrLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvSWNvbkd0ay5jcHAKQEAgLTkzLDEx
ICs5MywxMSBAQCBzdGF0aWMgU3RyaW5nIGxvb2t1cEljb25OYW1lKFN0cmluZyBNSU1FVHlwZSkK
IFJlZlB0cjxJY29uPiBJY29uOjpjcmVhdGVJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGZpbGVuYW1lcykKIHsKICAgICBpZiAoZmlsZW5hbWVzLmlzRW1wdHkoKSkKLSAgICAgICAg
cmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgaWYgKGZpbGVuYW1lcy5z
aXplKCkgPT0gMSkgewogICAgICAgICBpZiAoIWdfcGF0aF9za2lwX3Jvb3QoZmlsZW5hbWVzWzBd
LnV0ZjgoKS5kYXRhKCkpKQotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAogICAgICAgICBTdHJpbmcgTUlNRVR5cGUgPSBNSU1FVHlwZVJlZ2lzdHJ5
OjpnZXRNSU1FVHlwZUZvclBhdGgoZmlsZW5hbWVzWzBdKTsKICAgICAgICAgU3RyaW5nIGljb25O
YW1lID0gbG9va3VwSWNvbk5hbWUoTUlNRVR5cGUpOwpAQCAtMTA1LDggKzEwNSw4IEBAIFJlZlB0
cjxJY29uPiBJY29uOjpjcmVhdGVJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZp
bGVuYW1lcykKICAgICAgICAgUmVmUHRyPEljb24+IGljb24gPSBhZG9wdFJlZihuZXcgSWNvbik7
CiAgICAgICAgIGljb24tPm1faWNvbiA9IGd0a19pY29uX3RoZW1lX2xvYWRfaWNvbihndGtfaWNv
bl90aGVtZV9nZXRfZGVmYXVsdCgpLCBpY29uTmFtZS51dGY4KCkuZGF0YSgpLCAxNiwgR1RLX0lD
T05fTE9PS1VQX1VTRV9CVUlMVElOLCAwKTsKICAgICAgICAgaWYgKCFpY29uLT5tX2ljb24pCi0g
ICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgcmV0dXJuIGljb24ucmVsZWFzZSgpOworICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBpY29uOwogICAgIH0KIAog
ICAgIC8vRklYTUU6IEltcGxlbWVudCB0aGlzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENhY2hlV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q2FjaGVXaW4uY3BwCmluZGV4IDRkMDM5NmQwZWE5Li4y
MDUzYmY2ZjhkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ZvbnRDYWNoZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ZvbnRDYWNoZVdpbi5jcHAKQEAgLTMxOSw3ICszMTksNyBAQCBSZWZQdHI8Rm9udD4g
Rm9udENhY2hlOjpzeXN0ZW1GYWxsYmFja0ZvckNoYXJhY3RlcnMoY29uc3QgRm9udERlc2NyaXB0
aW9uJiBkZXNjcgogICAgICAgICBEZWxldGVPYmplY3QoaGZvbnQpOwogICAgIH0KIAotICAgIHJl
dHVybiBmb250RGF0YS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGZvbnREYXRhOwogfQogCiBWZWN0
b3I8U3RyaW5nPiBGb250Q2FjaGU6OnN5c3RlbUZvbnRGYW1pbGllcygpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4uY3BwCmluZGV4IGZkNTFkNjNiZjU1
Li40MmVjZTBmODZiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1No
YXJlZEJ1ZmZlcldpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NoYXJl
ZEJ1ZmZlcldpbi5jcHAKQEAgLTM2LDEzICszNiwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShj
b25zdCBTdHJpbmcmIGZpbGVQYXRoKQogewogICAgIGlmIChmaWxlUGF0aC5pc0VtcHR5KCkpCi0g
ICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIFN0cmluZyBu
dWxsaWZpZWRQYXRoID0gZmlsZVBhdGg7CiAgICAgSEFORExFIGZpbGVIYW5kbGUgPSBDcmVhdGVG
aWxlVyhudWxsaWZpZWRQYXRoLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgp
LCBHRU5FUklDX1JFQUQsIEZJTEVfU0hBUkVfUkVBRCwgMCwgT1BFTl9FWElTVElORywgRklMRV9B
VFRSSUJVVEVfTk9STUFMLCAwKTsKICAgICBpZiAoZmlsZUhhbmRsZSA9PSBJTlZBTElEX0hBTkRM
RV9WQUxVRSkgewogICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBvcGVuIGZpbGUgJXMgdG8g
Y3JlYXRlIHNoYXJlZCBidWZmZXIsIEdldExhc3RFcnJvcigpID0gJXUiLCBmaWxlUGF0aC5hc2Np
aSgpLmRhdGEoKSwgR2V0TGFzdEVycm9yKCkpOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgfQogCiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVzdWx0
OwpAQCAtNjAsNyArNjAsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogICAgICAgICBMT0df
RVJST1IoIkZhaWxlZCB0byBnZXQgZmlsZXNpemUgb2YgZmlsZSAlcywgR2V0TGFzdEVycm9yKCkg
PSAldSIsIGZpbGVQYXRoLmFzY2lpKCkuZGF0YSgpLCBsYXN0RXJyb3IpOwogCiAgICAgQ2xvc2VI
YW5kbGUoZmlsZUhhbmRsZSk7Ci0gICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CisgICAgcmV0
dXJuIHJlc3VsdDsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvUGxhdGZvcm0vdW5peC9TaGFyZWRNZW1vcnlVbml4LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtL3VuaXgvU2hhcmVkTWVtb3J5VW5peC5jcHAKaW5kZXggYzI0NjMxMmY5
YjcuLmRhMzU1NjBhMGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS91bml4
L1NoYXJlZE1lbW9yeVVuaXguY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL3VuaXgv
U2hhcmVkTWVtb3J5VW5peC5jcHAKQEAgLTEyMiwxNCArMTIyLDE0IEBAIFJlZlB0cjxTaGFyZWRN
ZW1vcnk+IFNoYXJlZE1lbW9yeTo6Y3JlYXRlKHZvaWQqIGFkZHJlc3MsIHNpemVfdCBzaXplLCBQ
cm90ZWN0aW9uCiAgICAgfQogICAgIGlmIChmaWxlRGVzY3JpcHRvciA9PSAtMSkgewogICAgICAg
ICBXVEZMb2dBbHdheXMoIkZhaWxlZCB0byBjcmVhdGUgc2hhcmVkIG1lbW9yeSBmaWxlICVzOiAl
cyIsIHRlbXBOYW1lLmRhdGEoKSwgc3RyZXJyb3IoZXJybm8pKTsKLSAgICAgICAgcmV0dXJuIDA7
CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAogICAgIHdoaWxlIChmdHJ1bmNhdGUo
ZmlsZURlc2NyaXB0b3IsIHNpemUpID09IC0xKSB7CiAgICAgICAgIGlmIChlcnJubyAhPSBFSU5U
UikgewogICAgICAgICAgICAgY2xvc2VXaXRoUmV0cnkoZmlsZURlc2NyaXB0b3IpOwogICAgICAg
ICAgICAgc2htX3VubGluayh0ZW1wTmFtZS5kYXRhKCkpOwotICAgICAgICAgICAgcmV0dXJuIDA7
CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTM3
LDcgKzEzNyw3IEBAIFJlZlB0cjxTaGFyZWRNZW1vcnk+IFNoYXJlZE1lbW9yeTo6Y3JlYXRlKHZv
aWQqIGFkZHJlc3MsIHNpemVfdCBzaXplLCBQcm90ZWN0aW9uCiAgICAgaWYgKGRhdGEgPT0gTUFQ
X0ZBSUxFRCkgewogICAgICAgICBjbG9zZVdpdGhSZXRyeShmaWxlRGVzY3JpcHRvcik7CiAgICAg
ICAgIHNobV91bmxpbmsodGVtcE5hbWUuZGF0YSgpKTsKLSAgICAgICAgcmV0dXJuIDA7CisgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAogICAgIHNobV91bmxpbmsodGVtcE5hbWUuZGF0
YSgpKTsKQEAgLTE0Niw3ICsxNDYsNyBAQCBSZWZQdHI8U2hhcmVkTWVtb3J5PiBTaGFyZWRNZW1v
cnk6OmNyZWF0ZSh2b2lkKiBhZGRyZXNzLCBzaXplX3Qgc2l6ZSwgUHJvdGVjdGlvbgogICAgIGlu
c3RhbmNlLT5tX2RhdGEgPSBkYXRhOwogICAgIGluc3RhbmNlLT5tX2ZpbGVEZXNjcmlwdG9yID0g
ZmlsZURlc2NyaXB0b3I7CiAgICAgaW5zdGFuY2UtPm1fc2l6ZSA9IHNpemU7Ci0gICAgcmV0dXJu
IGluc3RhbmNlLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gaW5zdGFuY2U7CiB9CiAKIFJlZlB0cjxT
aGFyZWRNZW1vcnk+IFNoYXJlZE1lbW9yeTo6YWxsb2NhdGUoc2l6ZV90IHNpemUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRl
ZEdyYXBoaWNzU2NlbmUuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcAppbmRleCBjZmVmM2YyMDliMi4uMzQ5
Njg2MmQ5OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdy
YXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcApA
QCAtNDYzLDggKzQ2Myw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpzeW5jSW1h
Z2VCYWNraW5ncyhjb25zdCBDb29yZGluYXRlZEdyYXBoaWNzU3RhdGUmCiB2b2lkIENvb3JkaW5h
dGVkR3JhcGhpY3NTY2VuZTo6Y3JlYXRlSW1hZ2VCYWNraW5nKENvb3JkaW5hdGVkSW1hZ2VCYWNr
aW5nSUQgaW1hZ2VJRCkKIHsKICAgICBBU1NFUlQoIW1faW1hZ2VCYWNraW5ncy5jb250YWlucyhp
bWFnZUlEKSk7Ci0gICAgUmVmUHRyPENvb3JkaW5hdGVkQmFja2luZ1N0b3JlPiBiYWNraW5nU3Rv
cmUoQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OmNyZWF0ZSgpKTsKLSAgICBtX2ltYWdlQmFja2lu
Z3MuYWRkKGltYWdlSUQsIGJhY2tpbmdTdG9yZS5yZWxlYXNlKCkpOworICAgIG1faW1hZ2VCYWNr
aW5ncy5hZGQoaW1hZ2VJRCwgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OmNyZWF0ZSgpKTsKIH0K
IAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnVwZGF0ZUltYWdlQmFja2luZyhDb29y
ZGluYXRlZEltYWdlQmFja2luZ0lEIGltYWdlSUQsIFJlZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+
JiYgc3VyZmFjZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9jYWlyby9TaGFy
ZWFibGVCaXRtYXBDYWlyby5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvY2Fpcm8vU2hhcmVh
YmxlQml0bWFwQ2Fpcm8uY3BwCmluZGV4IDMxNjgxZTVmZDNlLi4yMjM5Y2VlMzc2OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2NhaXJvL1NoYXJlYWJsZUJpdG1hcENhaXJvLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvY2Fpcm8vU2hhcmVhYmxlQml0bWFwQ2Fpcm8u
Y3BwCkBAIC03OSw3ICs3OSw3IEBAIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IFNoYXJlYWJsZUJp
dG1hcDo6Y3JlYXRlQ2Fpcm9TdXJmYWNlKCkKICAgICByZWYoKTsgLy8gQmFsYW5jZWQgYnkgZGVy
ZWYgaW4gcmVsZWFzZVN1cmZhY2VEYXRhLgogICAgIHN0YXRpYyBjYWlyb191c2VyX2RhdGFfa2V5
X3QgZGF0YUtleTsKICAgICBjYWlyb19zdXJmYWNlX3NldF91c2VyX2RhdGEoaW1hZ2UuZ2V0KCks
ICZkYXRhS2V5LCB0aGlzLCByZWxlYXNlU3VyZmFjZURhdGEpOwotICAgIHJldHVybiBpbWFnZS5y
ZWxlYXNlKCk7CisgICAgcmV0dXJuIGltYWdlOwogfQogCiB2b2lkIFNoYXJlYWJsZUJpdG1hcDo6
cmVsZWFzZVN1cmZhY2VEYXRhKHZvaWQqIHR5cGVsZXNzQml0bWFwKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRE
T01Ob2RlRmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NTm9kZUZpbHRlci5jcHAKaW5kZXggOGZlNmVjNTVjMzIu
LjMxYzAyZDBmMzFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTU5vZGVGaWx0ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9N
Tm9kZUZpbHRlci5jcHAKQEAgLTc3LDcgKzc3LDcgQEAgUmVmUHRyPFdlYkNvcmU6Ok5vZGVGaWx0
ZXI+IGNvcmUoV2ViS2l0RE9NTm9kZUZpbHRlciogbm9kZUZpbHRlcikKICAgICAgICAgZ19vYmpl
Y3Rfd2Vha19yZWYoR19PQkpFQ1Qobm9kZUZpbHRlciksIG5vZGVGaWx0ZXJPYmplY3REZXN0cm95
ZWRDYWxsYmFjaywgY29yZU5vZGVGaWx0ZXIuZ2V0KCkpOwogICAgICAgICBnX29iamVjdF9zZXRf
ZGF0YShHX09CSkVDVChub2RlRmlsdGVyKSwgIndlYmtpdC1jb3JlLW5vZGUtZmlsdGVyIiwgY29y
ZU5vZGVGaWx0ZXIuZ2V0KCkpOwogICAgIH0KLSAgICByZXR1cm4gY29yZU5vZGVGaWx0ZXIucmVs
ZWFzZSgpOworICAgIHJldHVybiBjb3JlTm9kZUZpbHRlcjsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
aW5kZXggNWM2ZDk5MGQyMzQuLjEwYWIyMWJkYzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0yODcwLDEyICsyODcwLDExIEBAIHZvaWQg
V2ViUGFnZTo6Z2V0Q29udGVudHNBc1N0cmluZyh1aW50NjRfdCBjYWxsYmFja0lEKQogI2lmIEVO
QUJMRShNSFRNTCkKIHZvaWQgV2ViUGFnZTo6Z2V0Q29udGVudHNBc01IVE1MRGF0YSh1aW50NjRf
dCBjYWxsYmFja0lEKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IE1IVE1M
QXJjaGl2ZTo6Z2VuZXJhdGVNSFRNTERhdGEobV9wYWdlLmdldCgpKTsKKyAgICBhdXRvIGJ1ZmZl
ciA9IE1IVE1MQXJjaGl2ZTo6Z2VuZXJhdGVNSFRNTERhdGEobV9wYWdlLmdldCgpKTsKIAogICAg
IC8vIEZJWE1FOiBVc2UgU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS4KICAgICBJUEM6OkRhdGFS
ZWZlcmVuY2UgZGF0YVJlZmVyZW5jZTsKLSAgICBpZiAoYnVmZmVyKQotICAgICAgICBkYXRhUmVm
ZXJlbmNlID0gSVBDOjpEYXRhUmVmZXJlbmNlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhf
dCo+KGJ1ZmZlci0+ZGF0YSgpKSwgYnVmZmVyLT5zaXplKCkpOworICAgIGRhdGFSZWZlcmVuY2Ug
PSBJUEM6OkRhdGFSZWZlcmVuY2UocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oYnVm
ZmVyLT5kYXRhKCkpLCBidWZmZXItPnNpemUoKSk7CiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpEYXRhQ2FsbGJhY2soZGF0YVJlZmVyZW5jZSwgY2FsbGJhY2tJRCkpOwogfQogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SZWZQdHIuY3Bw
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUmVmUHRyLmNwcAppbmRleCAxNzJlZmE3
NjI3Yy4uOTVmOTdkOGRhNzkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL1JlZlB0ci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUmVmUHRy
LmNwcApAQCAtMTA4LDE0ICsxMDgsNiBAQCBURVNUKFdURl9SZWZQdHIsIEJhc2ljKQogICAgICAg
ICBBU1NFUlRfRVEobnVsbHB0ciwgcHRyLmdldCgpKTsKICAgICB9CiAgICAgQVNTRVJUX1NUUkVR
KCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwotCi0gICAgewotICAg
ICAgICBSZWZQdHI8UmVmTG9nZ2VyPiBwdHIoJmEpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHB0
ci5nZXQoKSk7Ci0gICAgICAgIHB0ci5yZWxlYXNlKCk7Ci0gICAgICAgIEFTU0VSVF9FUShudWxs
cHRyLCBwdHIuZ2V0KCkpOwotICAgIH0KLSAgICBBU1NFUlRfU1RSRVEoInJlZihhKSBkZXJlZihh
KSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiB9CiAKIFRFU1QoV1RGX1JlZlB0ciwgQXNzaWdu
UGFzc1JlZlRvUmVmUHRyKQpAQCAtMTI1LDggKzExNyw2IEBAIFRFU1QoV1RGX1JlZlB0ciwgQXNz
aWduUGFzc1JlZlRvUmVmUHRyKQogICAgICAgICBSZWY8UmVmTG9nZ2VyPiBwYXNzUmVmKGEpOwog
ICAgICAgICBSZWZQdHI8UmVmTG9nZ2VyPiBwdHIgPSBXVEZNb3ZlKHBhc3NSZWYpOwogICAgICAg
ICBBU1NFUlRfRVEoJmEsIHB0ci5nZXQoKSk7Ci0gICAgICAgIHB0ci5yZWxlYXNlKCk7Ci0gICAg
ICAgIEFTU0VSVF9FUShudWxscHRyLCBwdHIuZ2V0KCkpOwogICAgIH0KICAgICBBU1NFUlRfU1RS
RVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiB9CkBAIC0zMzYs
NyArMzI2LDcgQEAgVEVTVChXVEZfUmVmUHRyLCBSZWxlYXNlKQogCiAgICAgewogICAgICAgICBS
ZWZQdHI8UmVmTG9nZ2VyPiBwMSA9ICZhOwotICAgICAgICBSZWZQdHI8UmVmTG9nZ2VyPiBwMiA9
IHAxLnJlbGVhc2UoKTsKKyAgICAgICAgUmVmUHRyPFJlZkxvZ2dlcj4gcDIgPSBXVEZNb3ZlKHAx
KTsKICAgICAgICAgQVNTRVJUX0VRKG51bGxwdHIsIHAxLmdldCgpKTsKICAgICAgICAgQVNTRVJU
X0VRKCZhLCBwMi5nZXQoKSk7CiAgICAgfQpAQCAtMzQ0LDcgKzMzNCw3IEBAIFRFU1QoV1RGX1Jl
ZlB0ciwgUmVsZWFzZSkKIAogICAgIHsKICAgICAgICAgUmVmUHRyPFJlZkxvZ2dlcj4gcDEgPSAm
YTsKLSAgICAgICAgUmVmUHRyPFJlZkxvZ2dlcj4gcDIocDEucmVsZWFzZSgpKTsKKyAgICAgICAg
UmVmUHRyPFJlZkxvZ2dlcj4gcDIoV1RGTW92ZShwMSkpOwogICAgICAgICBBU1NFUlRfRVEobnVs
bHB0ciwgcDEuZ2V0KCkpOwogICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLmdldCgpKTsKICAgICB9
CkBAIC0zNTIsNyArMzQyLDcgQEAgVEVTVChXVEZfUmVmUHRyLCBSZWxlYXNlKQogCiAgICAgewog
ICAgICAgICBSZWZQdHI8RGVyaXZlZFJlZkxvZ2dlcj4gcDEgPSAmYTsKLSAgICAgICAgUmVmUHRy
PFJlZkxvZ2dlcj4gcDIgPSBwMS5yZWxlYXNlKCk7CisgICAgICAgIFJlZlB0cjxSZWZMb2dnZXI+
IHAyID0gV1RGTW92ZShwMSk7CiAgICAgICAgIEFTU0VSVF9FUShudWxscHRyLCBwMS5nZXQoKSk7
CiAgICAgICAgIEFTU0VSVF9FUSgmYSwgcDIuZ2V0KCkpOwogICAgIH0KQEAgLTM2NCw3ICszNTQs
NyBAQCBURVNUKFdURl9SZWZQdHIsIFJlbGVhc2UpCiAgICAgICAgIEFTU0VSVF9FUSgmYSwgcDEu
Z2V0KCkpOwogICAgICAgICBBU1NFUlRfRVEoJmIsIHAyLmdldCgpKTsKICAgICAgICAgbG9nKCkg
PDwgInwgIjsKLSAgICAgICAgcDEgPSBwMi5yZWxlYXNlKCk7CisgICAgICAgIHAxID0gV1RGTW92
ZShwMik7CiAgICAgICAgIEFTU0VSVF9FUSgmYiwgcDEuZ2V0KCkpOwogICAgICAgICBBU1NFUlRf
RVEobnVsbHB0ciwgcDIuZ2V0KCkpOwogICAgICAgICBsb2coKSA8PCAifCAiOwpAQCAtMzc3LDcg
KzM2Nyw3IEBAIFRFU1QoV1RGX1JlZlB0ciwgUmVsZWFzZSkKICAgICAgICAgQVNTRVJUX0VRKCZh
LCBwMS5nZXQoKSk7CiAgICAgICAgIEFTU0VSVF9FUSgmYywgcDIuZ2V0KCkpOwogICAgICAgICBs
b2coKSA8PCAifCAiOwotICAgICAgICBwMSA9IHAyLnJlbGVhc2UoKTsKKyAgICAgICAgcDEgPSBX
VEZNb3ZlKHAyKTsKICAgICAgICAgQVNTRVJUX0VRKCZjLCBwMS5nZXQoKSk7CiAgICAgICAgIEFT
U0VSVF9FUShudWxscHRyLCBwMi5nZXQoKSk7CiAgICAgICAgIGxvZygpIDw8ICJ8ICI7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>310046</attachid>
            <date>2017-05-13 18:38:11 -0700</date>
            <delta_ts>2017-05-13 19:34:05 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>172074_release_wip.patch</filename>
            <type>text/plain</type>
            <size>23950</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1JlZlB0ci5oIGIvU291cmNlL1dURi93dGYvUmVm
UHRyLmgKaW5kZXggMjc3ZTY3NWRiM2MuLjc4MjEyOWY4Zjk1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9SZWZQdHIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9SZWZQdHIuaApAQCAtNjMsOCAr
NjMsNiBAQCBwdWJsaWM6CiAKICAgICBUKiBnZXQoKSBjb25zdCB7IHJldHVybiBtX3B0cjsgfQog
Ci0gICAgLy8gRklYTUU6IFJlbW92ZSByZWxlYXNlKCkgYW5kIGNoYW5nZSBhbGwgY2FsbCBzaXRl
cyB0byBjYWxsIFdURk1vdmUoKS4KLSAgICBSZWZQdHI8VD4gcmVsZWFzZSgpIHsgUmVmUHRyPFQ+
IHRtcCA9IGFkb3B0UmVmKG1fcHRyKTsgbV9wdHIgPSBudWxscHRyOyByZXR1cm4gdG1wOyB9CiAg
ICAgUmVmPFQ+IHJlbGVhc2VOb25OdWxsKCkgeyBBU1NFUlQobV9wdHIpOyBSZWY8VD4gdG1wKGFk
b3B0UmVmKCptX3B0cikpOyBtX3B0ciA9IG51bGxwdHI7IHJldHVybiB0bXA7IH0KICAgICBSZWY8
Y29uc3QgVD4gcmVsZWFzZUNvbnN0Tm9uTnVsbCgpIHsgQVNTRVJUKG1fcHRyKTsgUmVmPGNvbnN0
IFQ+IHRtcChhZG9wdFJlZigqbV9wdHIpKTsgbV9wdHIgPSBudWxscHRyOyByZXR1cm4gdG1wOyB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9Xb3JrUXVldWVXaW4uY3BwIGIvU291
cmNlL1dURi93dGYvd2luL1dvcmtRdWV1ZVdpbi5jcHAKaW5kZXggZTgxNTQ3NzM3NDYuLmJiZjAx
MWFlMTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi93aW4vV29ya1F1ZXVlV2luLmNwcAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vV29ya1F1ZXVlV2luLmNwcApAQCAtMTg3LDcgKzE4Nyw3
IEBAIHZvaWQgV29ya1F1ZXVlOjpkaXNwYXRjaEFmdGVyKFNlY29uZHMgZHVyYXRpb24sIEZ1bmN0
aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikKICAgICB9CiAKICAgICAvLyBUaGUgdGltZXIgY2FsbGJh
Y2sgd2lsbCBoYW5kbGUgZGVzdHJveWluZyBjb250ZXh0LgotICAgIGNvbnRleHQucmVsZWFzZSgp
LmxlYWtSZWYoKTsKKyAgICBjb250ZXh0LmxlYWtSZWYoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFy
c2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3Bw
CmluZGV4IDkzMTI1ZmNlMTM4Li5iMzk1MDFjMDVjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKQEAgLTYzMCw3ICs2MzAsNyBAQCBwdWJs
aWM6CiAgICAgewogICAgICAgICBpZiAoIW1fcmVzdWx0LT5sZW5ndGgoKSkKICAgICAgICAgICAg
IHJldHVybiBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShD
U1NWYWx1ZU5vcm1hbCk7Ci0gICAgICAgIHJldHVybiBtX3Jlc3VsdC5yZWxlYXNlKCk7CisgICAg
ICAgIHJldHVybiBXVEZNb3ZlKG1fcmVzdWx0KTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC04MzIs
NyArODMyLDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgaWYgKCFtX3Jlc3VsdC0+bGVuZ3Ro
KCkpCiAgICAgICAgICAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJ
ZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb3JtYWwpOwotICAgICAgICByZXR1cm4gbV9yZXN1bHQu
cmVsZWFzZSgpOworICAgICAgICByZXR1cm4gV1RGTW92ZShtX3Jlc3VsdCk7CiAgICAgfQogCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJI
ZWxwZXJzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJI
ZWxwZXJzLmNwcAppbmRleCA0YTMyYTU4YmMwYi4uMzQ5OTk5YjllN2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VySGVscGVycy5jcHAK
QEAgLTkzLDcgKzkzLDcgQEAgcHVibGljOgogICAgICAgICBpZiAoIW1fY2FsY1ZhbHVlKQogICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIG1fc291cmNlUmFuZ2UgPSBtX3Jhbmdl
OwotICAgICAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVWYWx1ZSht
X2NhbGNWYWx1ZS5yZWxlYXNlKCkpOworICAgICAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5n
bGV0b24oKS5jcmVhdGVWYWx1ZShXVEZNb3ZlKG1fY2FsY1ZhbHVlKSk7CiAgICAgfQogICAgIFJl
ZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZU51bWJlcigpCiAgICAgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggNzdiMTIxMTE3ZjMuLjg1
N2JkOGI1ZWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VM
b2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5j
cHAKQEAgLTExMSw3ICsxMTEsNyBAQCBSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IFN1YnJlc291
cmNlTG9hZGVyOjpjcmVhdGUoRnJhbWUmIGZyYW1lLCBDYWNoZWRSZXNvdXJjZQogICAgICAgICAv
LyBpcyBkaXNhYmxlZCB0byBhdm9pZCByZS1lbnRlcmluZyBzdHlsZSBzZWxlY3Rpb24gZnJvbSBh
IGRpZmZlcmVudCB0aHJlYWQgKHNlZSA8cmRhcjovL3Byb2JsZW0vOTEyMTcxOT4pLgogICAgICAg
ICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgZml4ZWQgZm9yIGFsbCBwb3J0cyBpbiA8aHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2NjQ3Pi4KICAgICAgICAgc3VibG9h
ZGVyLT5tX2lPU09yaWdpbmFsUmVxdWVzdCA9IHJlcXVlc3Q7Ci0gICAgICAgIHJldHVybiBzdWJs
b2FkZXIucmVsZWFzZSgpOworICAgICAgICByZXR1cm4gc3VibG9hZGVyOwogICAgIH0KICNlbmRp
ZgogICAgIGlmICghc3VibG9hZGVyLT5pbml0KHJlcXVlc3QpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAKaW5kZXggMmNhNjdl
MjdiZTguLjYxYzYyNmIyOTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJj
aGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAKQEAgLTEzMCw3ICsxMzAsNyBAQCBSZWZQdHI8
TUhUTUxBcmNoaXZlPiBNSFRNTEFyY2hpdmU6OmNyZWF0ZShjb25zdCBVUkwmIHVybCwgU2hhcmVk
QnVmZmVyJiBkYXRhKQogICAgIHJldHVybiBtYWluQXJjaGl2ZTsKIH0KIAotUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gTUhUTUxBcmNoaXZlOjpnZW5lcmF0ZU1IVE1MRGF0YShQYWdlKiBwYWdlKQorUmVm
PFNoYXJlZEJ1ZmZlcj4gTUhUTUxBcmNoaXZlOjpnZW5lcmF0ZU1IVE1MRGF0YShQYWdlKiBwYWdl
KQogewogICAgIFZlY3RvcjxQYWdlU2VyaWFsaXplcjo6UmVzb3VyY2U+IHJlc291cmNlczsKICAg
ICBQYWdlU2VyaWFsaXplciBwYWdlU2VyaWFsaXplcihyZXNvdXJjZXMpOwpAQCAtMTYyLDcgKzE2
Miw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IE1IVE1MQXJjaGl2ZTo6Z2VuZXJhdGVNSFRNTERh
dGEoUGFnZSogcGFnZSkKICAgICAvLyBXZSB1c2UgdXRmOCgpIGJlbG93IGluc3RlYWQgb2YgYXNj
aWkoKSBhcyBhc2NpaSgpIHJlcGxhY2VzIENSTEZzIHdpdGggPz8gKHdlIHN0aWxsIG9ubHkgaGF2
ZSBwdXQgQVNDSUkgY2hhcmFjdGVycyBpbiBpdCkuCiAgICAgQVNTRVJUKHN0cmluZ0J1aWxkZXIu
dG9TdHJpbmcoKS5jb250YWluc09ubHlBU0NJSSgpKTsKICAgICBDU3RyaW5nIGFzY2lpU3RyaW5n
ID0gc3RyaW5nQnVpbGRlci50b1N0cmluZygpLnV0ZjgoKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBtaHRtbERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIGF1dG8gbWh0bWxE
YXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBtaHRtbERhdGEtPmFwcGVuZChhc2Np
aVN0cmluZy5kYXRhKCksIGFzY2lpU3RyaW5nLmxlbmd0aCgpKTsKIAogICAgIGZvciAoYXV0byYg
cmVzb3VyY2UgOiByZXNvdXJjZXMpIHsKQEAgLTIxMyw3ICsyMTMsNyBAQCBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBNSFRNTEFyY2hpdmU6OmdlbmVyYXRlTUhUTUxEYXRhKFBhZ2UqIHBhZ2UpCiAgICAg
YXNjaWlTdHJpbmcgPSBtYWtlU3RyaW5nKCItLSIsIGJvdW5kYXJ5LCAiLS1cclxuIikudXRmOCgp
OwogICAgIG1odG1sRGF0YS0+YXBwZW5kKGFzY2lpU3RyaW5nLmRhdGEoKSwgYXNjaWlTdHJpbmcu
bGVuZ3RoKCkpOwogCi0gICAgcmV0dXJuIG1odG1sRGF0YS5yZWxlYXNlKCk7CisgICAgcmV0dXJu
IG1odG1sRGF0YTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fy
Y2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2
ZS9taHRtbC9NSFRNTEFyY2hpdmUuaAppbmRleCA4NTI0NjU5YWFiMi4uM2QyZGI3Yzk2MDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2
ZS5oCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPE1IVE1MQXJjaGl2
ZT4gY3JlYXRlKCk7CiAgICAgc3RhdGljIFJlZlB0cjxNSFRNTEFyY2hpdmU+IGNyZWF0ZShjb25z
dCBVUkwmLCBTaGFyZWRCdWZmZXImKTsKIAotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBnZW5lcmF0ZU1IVE1MRGF0YShQYWdlKik7CisgICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+
IGdlbmVyYXRlTUhUTUxEYXRhKFBhZ2UqKTsKIAogICAgIHZpcnR1YWwgfk1IVE1MQXJjaGl2ZSgp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRN
TFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBh
cnNlci5jcHAKaW5kZXggZTFiMTA0Y2UxZGEuLjVmZDM5YmU3YmQxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwCkBAIC02OCw3
ICs2OCw3IEBAIFJlZlB0cjxNSFRNTEFyY2hpdmU+IE1IVE1MUGFyc2VyOjpwYXJzZUFyY2hpdmVX
aXRoSGVhZGVyKE1JTUVIZWFkZXIqIGhlYWRlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgfQogCi0gICAgUmVmUHRyPE1IVE1MQXJjaGl2ZT4gYXJjaGl2ZSA9IE1IVE1MQXJjaGl2ZTo6
Y3JlYXRlKCk7CisgICAgYXV0byBhcmNoaXZlID0gTUhUTUxBcmNoaXZlOjpjcmVhdGUoKTsKICAg
ICBpZiAoIWhlYWRlci0+aXNNdWx0aXBhcnQoKSkgewogICAgICAgICAvLyBXaXRoIElFIGEgcGFn
ZSB3aXRoIG5vIHJlc291cmNlIGlzIG5vdCBtdWx0aS1wYXJ0LgogICAgICAgICBib29sIGVuZE9m
QXJjaGl2ZVJlYWNoZWQgPSBmYWxzZTsKQEAgLTc2LDcgKzc2LDcgQEAgUmVmUHRyPE1IVE1MQXJj
aGl2ZT4gTUhUTUxQYXJzZXI6OnBhcnNlQXJjaGl2ZVdpdGhIZWFkZXIoTUlNRUhlYWRlciogaGVh
ZGVyKQogICAgICAgICBpZiAoIXJlc291cmNlKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgICAgIGFyY2hpdmUtPnNldE1haW5SZXNvdXJjZShyZXNvdXJjZS5yZWxlYXNlTm9uTnVs
bCgpKTsKLSAgICAgICAgcmV0dXJuIGFyY2hpdmU7CisgICAgICAgIHJldHVybiBXVEZNb3ZlKGFy
Y2hpdmUpOwogICAgIH0KIAogICAgIC8vIFNraXAgdGhlIG1lc3NhZ2UgY29udGVudCAoaXQncyBh
IGdlbmVyaWMgYnJvd3NlciBzcGVjaWZpYyBtZXNzYWdlKS4KQEAgLTEwMCw3ICsxMDAsNyBAQCBS
ZWZQdHI8TUhUTUxBcmNoaXZlPiBNSFRNTFBhcnNlcjo6cGFyc2VBcmNoaXZlV2l0aEhlYWRlcihN
SU1FSGVhZGVyKiBoZWFkZXIpCiAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGVuZE9mUGFydFJl
YWNoZWQsIGVuZE9mUGFydFJlYWNoZWQpOwogICAgICAgICAgICAgLy8gVGhlIHRvcC1mcmFtZSBp
cyB0aGUgZmlyc3QgZnJhbWUgZm91bmQsIHJlZ2FyZGxlc3Mgb2YgdGhlIG5lc3RpbmcgbGV2ZWwu
CiAgICAgICAgICAgICBpZiAoc3ViZnJhbWVBcmNoaXZlLT5tYWluUmVzb3VyY2UoKSkKLSAgICAg
ICAgICAgICAgICBhZGRSZXNvdXJjZVRvQXJjaGl2ZShzdWJmcmFtZUFyY2hpdmUtPm1haW5SZXNv
dXJjZSgpLCBhcmNoaXZlLmdldCgpKTsKKyAgICAgICAgICAgICAgICBhZGRSZXNvdXJjZVRvQXJj
aGl2ZShzdWJmcmFtZUFyY2hpdmUtPm1haW5SZXNvdXJjZSgpLCBhcmNoaXZlLnB0cigpKTsKICAg
ICAgICAgICAgIGFyY2hpdmUtPmFkZFN1YmZyYW1lQXJjaGl2ZShzdWJmcmFtZUFyY2hpdmUucmVs
ZWFzZU5vbk51bGwoKSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQpAQCAtMTEw
LDEwICsxMTAsMTAgQEAgUmVmUHRyPE1IVE1MQXJjaGl2ZT4gTUhUTUxQYXJzZXI6OnBhcnNlQXJj
aGl2ZVdpdGhIZWFkZXIoTUlNRUhlYWRlciogaGVhZGVyKQogICAgICAgICAgICAgTE9HX0VSUk9S
KCJGYWlsZWQgdG8gcGFyc2UgTUhUTUwgcGFydC4iKTsKICAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgICAgICB9Ci0gICAgICAgIGFkZFJlc291cmNlVG9BcmNoaXZlKHJlc291cmNlLmdl
dCgpLCBhcmNoaXZlLmdldCgpKTsKKyAgICAgICAgYWRkUmVzb3VyY2VUb0FyY2hpdmUocmVzb3Vy
Y2UuZ2V0KCksIGFyY2hpdmUucHRyKCkpOwogICAgIH0KIAotICAgIHJldHVybiBhcmNoaXZlLnJl
bGVhc2UoKTsKKyAgICByZXR1cm4gV1RGTW92ZShhcmNoaXZlKTsKIH0KIAogdm9pZCBNSFRNTFBh
cnNlcjo6YWRkUmVzb3VyY2VUb0FyY2hpdmUoQXJjaGl2ZVJlc291cmNlKiByZXNvdXJjZSwgTUhU
TUxBcmNoaXZlKiBhcmNoaXZlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vaW9zL0F1ZGlvRmlsZVJlYWRlcklPUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9pb3MvQXVkaW9GaWxlUmVhZGVySU9TLmNwcAppbmRleCA1MDNlZjQyZDAyOC4uOGE3
Zjc3ZmE0MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9B
dWRpb0ZpbGVSZWFkZXJJT1MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L2lvcy9BdWRpb0ZpbGVSZWFkZXJJT1MuY3BwCkBAIC0xNzcsNyArMTc3LDcgQEAgUmVmUHRyPEF1
ZGlvQnVzPiBBdWRpb0ZpbGVSZWFkZXI6OmNyZWF0ZUJ1cyhmbG9hdCBzYW1wbGVSYXRlLCBib29s
IG1peFRvTW9ubykKICAgICBzaXplX3QgYnVzQ2hhbm5lbENvdW50ID0gbWl4VG9Nb25vID8gMSA6
IG51bWJlck9mQ2hhbm5lbHM7CiAKICAgICAvLyBDcmVhdGUgQXVkaW9CdXMgd2hlcmUgd2UnbGwg
cHV0IHRoZSBQQ00gYXVkaW8gZGF0YQotICAgIFJlZlB0cjxBdWRpb0J1cz4gYXVkaW9CdXMgPSBB
dWRpb0J1czo6Y3JlYXRlKGJ1c0NoYW5uZWxDb3VudCwgbnVtYmVyT2ZGcmFtZXMpOworICAgIGF1
dG8gYXVkaW9CdXMgPSBBdWRpb0J1czo6Y3JlYXRlKGJ1c0NoYW5uZWxDb3VudCwgbnVtYmVyT2ZG
cmFtZXMpOwogICAgIGF1ZGlvQnVzLT5zZXRTYW1wbGVSYXRlKG1fY2xpZW50RGF0YUZvcm1hdC5t
U2FtcGxlUmF0ZSk7IC8vIHNhdmUgZm9yIGxhdGVyCiAKICAgICAvLyBPbmx5IGFsbG9jYXRlZCBp
biB0aGUgbWl4VG9Nb25vIGNhc2U7IGRlYWxsb2NhdGVkIG9uIGRlc3RydWN0aW9uLgpAQCAtMjI4
LDcgKzIyOCw3IEBAIFJlZlB0cjxBdWRpb0J1cz4gQXVkaW9GaWxlUmVhZGVyOjpjcmVhdGVCdXMo
ZmxvYXQgc2FtcGxlUmF0ZSwgYm9vbCBtaXhUb01vbm8pCiAKICAgICBkZXN0cm95QXVkaW9CdWZm
ZXJMaXN0KGJ1ZmZlckxpc3QpOwogCi0gICAgcmV0dXJuIGF1ZGlvQnVzLnJlbGVhc2UoKTsKKyAg
ICByZXR1cm4gYXVkaW9CdXM7CiB9CiAKIFJlZlB0cjxBdWRpb0J1cz4gY3JlYXRlQnVzRnJvbUF1
ZGlvRmlsZShjb25zdCBjaGFyKiBmaWxlUGF0aCwgYm9vbCBtaXhUb01vbm8sIGZsb2F0IHNhbXBs
ZVJhdGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1
ZmZlckdsaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJH
bGliLmNwcAppbmRleCBlMTUyMmY2ZmFjMS4uYWQ3MzQ5ZDZmM2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcApAQCAtMzEsNyArMzEs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogewogICAg
IGlmIChmaWxlUGF0aC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAogICAgIENTdHJpbmcgZmlsZW5hbWUgPSBmaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24oZmlsZVBhdGgpOwogICAgIEdVbmlxdWVPdXRQdHI8Z2NoYXI+IGNvbnRlbnRzOwpAQCAt
MzksMTIgKzM5LDEwIEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
RnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiAgICAgR1VuaXF1ZU91dFB0
cjxHRXJyb3I+IGVycm9yOwogICAgIGlmICghZ19maWxlX2dldF9jb250ZW50cyhmaWxlbmFtZS5k
YXRhKCksICZjb250ZW50cy5vdXRQdHIoKSwgJnNpemUsICZlcnJvci5vdXRQdHIoKSkpIHsKICAg
ICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gZnVsbHkgcmVhZCBjb250ZW50cyBvZiBmaWxlICVz
IC0gJXMiLCBmaWxlbmFtZUZvckRpc3BsYXkoZmlsZVBhdGgpLnV0ZjgoKS5kYXRhKCksIGVycm9y
LT5tZXNzYWdlKTsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlc3VsdCA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGNvbnRlbnRzLmdldCgpLCBzaXplKTsKLQotICAgIHJldHVybiByZXN1bHQucmVsZWFz
ZSgpOworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShjb250ZW50cy5nZXQoKSwgc2l6
ZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vQ0FDRkxheWVyVHJlZUhvc3QuY3Bw
CmluZGV4IDRhOGY1OTcyN2M2Li43MjlmODQzZGY5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vQ0FDRkxheWVyVHJlZUhvc3Qu
Y3BwCkBAIC0xMzEsNyArMTMxLDcgQEAgUmVmUHRyPENBQ0ZMYXllclRyZWVIb3N0PiBDQUNGTGF5
ZXJUcmVlSG9zdDo6Y3JlYXRlKCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogICAg
IGhvc3QtPmluaXRpYWxpemUoKTsKLSAgICByZXR1cm4gaG9zdC5yZWxlYXNlKCk7CisgICAgcmV0
dXJuIGhvc3Q7CiB9CiAKIENBQ0ZMYXllclRyZWVIb3N0OjpDQUNGTGF5ZXJUcmVlSG9zdCgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb1V0
aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWly
b1V0aWxpdGllcy5jcHAKaW5kZXggOGEzZmYzM2QwMDMuLjhkOTkyZjYxMGMwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb1V0aWxpdGllcy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9VdGls
aXRpZXMuY3BwCkBAIC0yODIsNyArMjgyLDcgQEAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gY29w
eUNhaXJvSW1hZ2VTdXJmYWNlKGNhaXJvX3N1cmZhY2VfdCogb3JpZ2luYWxTdXJmYWNlKQogICAg
IGNhaXJvX3NldF9zb3VyY2Vfc3VyZmFjZShjci5nZXQoKSwgb3JpZ2luYWxTdXJmYWNlLCAwLCAw
KTsKICAgICBjYWlyb19zZXRfb3BlcmF0b3IoY3IuZ2V0KCksIENBSVJPX09QRVJBVE9SX1NPVVJD
RSk7CiAgICAgY2Fpcm9fcGFpbnQoY3IuZ2V0KCkpOwotICAgIHJldHVybiBuZXdTdXJmYWNlLnJl
bGVhc2UoKTsKKyAgICByZXR1cm4gbmV3U3VyZmFjZTsKIH0KIAogdm9pZCBjb3B5UmVjdEZyb21D
YWlyb1N1cmZhY2VUb0NvbnRleHQoY2Fpcm9fc3VyZmFjZV90KiBmcm9tLCBjYWlyb190KiB0bywg
Y29uc3QgSW50U2l6ZSYgb2Zmc2V0LCBjb25zdCBJbnRSZWN0JiByZWN0KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNh
aXJvLmNwcAppbmRleCBiYzdiNGRlNDNlNi4uZjg0NWZjNTFjYjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fp
cm8uY3BwCkBAIC0zMzMsNyArMzMzLDcgQEAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gY29weVN1
cmZhY2VUb0ltYWdlQW5kQWRqdXN0UmVjdChjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UKIHRlbXBs
YXRlIDxNdWx0aXBseSBtdWx0aXBsaWVkPgogUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBnZXRJ
bWFnZURhdGEoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW50UmVjdCYgbG9naWNhbFJlY3Qs
IGNvbnN0IEltYWdlQnVmZmVyRGF0YSYgZGF0YSwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgY29uc3Qg
SW50U2l6ZSYgbG9naWNhbFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSkKIHsKLSAgICBSZWZQ
dHI8VWludDhDbGFtcGVkQXJyYXk+IHJlc3VsdCA9IFVpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGVV
bmluaXRpYWxpemVkKHJlY3Qud2lkdGgoKSAqIHJlY3QuaGVpZ2h0KCkgKiA0KTsKKyAgICBhdXRv
IHJlc3VsdCA9IFVpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGVVbmluaXRpYWxpemVkKHJlY3Qud2lk
dGgoKSAqIHJlY3QuaGVpZ2h0KCkgKiA0KTsKICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKQEAgLTQxMCw3ICs0MTAsNyBAQCBSZWZQdHI8VWludDhDbGFtcGVkQXJy
YXk+IGdldEltYWdlRGF0YShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbnRSZWN0JiBsb2dp
YwogICAgICAgICBkZXN0Um93cyArPSBkZXN0Qnl0ZXNQZXJSb3c7CiAgICAgfQogCi0gICAgcmV0
dXJuIHJlc3VsdC5yZWxlYXNlKCk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogdGVtcGxhdGU8
dHlwZW5hbWUgVW5pdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2d0ay9JY29uR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0
ay9JY29uR3RrLmNwcAppbmRleCA4ODBjNGM5Nzk0YS4uYWYxODVhNTRjZGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9JY29uR3RrLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvSWNvbkd0ay5jcHAKQEAgLTkzLDEx
ICs5MywxMSBAQCBzdGF0aWMgU3RyaW5nIGxvb2t1cEljb25OYW1lKFN0cmluZyBNSU1FVHlwZSkK
IFJlZlB0cjxJY29uPiBJY29uOjpjcmVhdGVJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGZpbGVuYW1lcykKIHsKICAgICBpZiAoZmlsZW5hbWVzLmlzRW1wdHkoKSkKLSAgICAgICAg
cmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgaWYgKGZpbGVuYW1lcy5z
aXplKCkgPT0gMSkgewogICAgICAgICBpZiAoIWdfcGF0aF9za2lwX3Jvb3QoZmlsZW5hbWVzWzBd
LnV0ZjgoKS5kYXRhKCkpKQotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAogICAgICAgICBTdHJpbmcgTUlNRVR5cGUgPSBNSU1FVHlwZVJlZ2lzdHJ5
OjpnZXRNSU1FVHlwZUZvclBhdGgoZmlsZW5hbWVzWzBdKTsKICAgICAgICAgU3RyaW5nIGljb25O
YW1lID0gbG9va3VwSWNvbk5hbWUoTUlNRVR5cGUpOwpAQCAtMTA1LDggKzEwNSw4IEBAIFJlZlB0
cjxJY29uPiBJY29uOjpjcmVhdGVJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZp
bGVuYW1lcykKICAgICAgICAgUmVmUHRyPEljb24+IGljb24gPSBhZG9wdFJlZihuZXcgSWNvbik7
CiAgICAgICAgIGljb24tPm1faWNvbiA9IGd0a19pY29uX3RoZW1lX2xvYWRfaWNvbihndGtfaWNv
bl90aGVtZV9nZXRfZGVmYXVsdCgpLCBpY29uTmFtZS51dGY4KCkuZGF0YSgpLCAxNiwgR1RLX0lD
T05fTE9PS1VQX1VTRV9CVUlMVElOLCAwKTsKICAgICAgICAgaWYgKCFpY29uLT5tX2ljb24pCi0g
ICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgcmV0dXJuIGljb24ucmVsZWFzZSgpOworICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBpY29uOwogICAgIH0KIAog
ICAgIC8vRklYTUU6IEltcGxlbWVudCB0aGlzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENhY2hlV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q2FjaGVXaW4uY3BwCmluZGV4IDRkMDM5NmQwZWE5Li4y
MDUzYmY2ZjhkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ZvbnRDYWNoZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ZvbnRDYWNoZVdpbi5jcHAKQEAgLTMxOSw3ICszMTksNyBAQCBSZWZQdHI8Rm9udD4g
Rm9udENhY2hlOjpzeXN0ZW1GYWxsYmFja0ZvckNoYXJhY3RlcnMoY29uc3QgRm9udERlc2NyaXB0
aW9uJiBkZXNjcgogICAgICAgICBEZWxldGVPYmplY3QoaGZvbnQpOwogICAgIH0KIAotICAgIHJl
dHVybiBmb250RGF0YS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGZvbnREYXRhOwogfQogCiBWZWN0
b3I8U3RyaW5nPiBGb250Q2FjaGU6OnN5c3RlbUZvbnRGYW1pbGllcygpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4uY3BwCmluZGV4IGZkNTFkNjNiZjU1
Li40MmVjZTBmODZiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1No
YXJlZEJ1ZmZlcldpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NoYXJl
ZEJ1ZmZlcldpbi5jcHAKQEAgLTM2LDEzICszNiwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShj
b25zdCBTdHJpbmcmIGZpbGVQYXRoKQogewogICAgIGlmIChmaWxlUGF0aC5pc0VtcHR5KCkpCi0g
ICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIFN0cmluZyBu
dWxsaWZpZWRQYXRoID0gZmlsZVBhdGg7CiAgICAgSEFORExFIGZpbGVIYW5kbGUgPSBDcmVhdGVG
aWxlVyhudWxsaWZpZWRQYXRoLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgp
LCBHRU5FUklDX1JFQUQsIEZJTEVfU0hBUkVfUkVBRCwgMCwgT1BFTl9FWElTVElORywgRklMRV9B
VFRSSUJVVEVfTk9STUFMLCAwKTsKICAgICBpZiAoZmlsZUhhbmRsZSA9PSBJTlZBTElEX0hBTkRM
RV9WQUxVRSkgewogICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBvcGVuIGZpbGUgJXMgdG8g
Y3JlYXRlIHNoYXJlZCBidWZmZXIsIEdldExhc3RFcnJvcigpID0gJXUiLCBmaWxlUGF0aC5hc2Np
aSgpLmRhdGEoKSwgR2V0TGFzdEVycm9yKCkpOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgfQogCiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVzdWx0
OwpAQCAtNjAsNyArNjAsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogICAgICAgICBMT0df
RVJST1IoIkZhaWxlZCB0byBnZXQgZmlsZXNpemUgb2YgZmlsZSAlcywgR2V0TGFzdEVycm9yKCkg
PSAldSIsIGZpbGVQYXRoLmFzY2lpKCkuZGF0YSgpLCBsYXN0RXJyb3IpOwogCiAgICAgQ2xvc2VI
YW5kbGUoZmlsZUhhbmRsZSk7Ci0gICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CisgICAgcmV0
dXJuIHJlc3VsdDsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUu
Y3BwCmluZGV4IGJjOTBjOTRmZDI2Li4yNzZmNWE0NjgzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC93aW4vV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkZyYW1lLmNw
cApAQCAtNjE0LDcgKzYxNCw3IEBAIEhSRVNVTFQgV2ViRnJhbWU6OmxvYWRQbGFpblRleHRTdHJp
bmcoX0luXyBCU1RSIHBsYWluVGV4dCwgX0luXyBCU1RSIHVybCkKICAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZWludGVycHJldF9j
YXN0PGNoYXIqPihwbGFpblRleHQpLCBzaXplb2YoVUNoYXIpICogU3lzU3RyaW5nTGVuKHBsYWlu
VGV4dCkpOwogICAgIEJTdHJpbmcgcGxhaW5UZXh0TWltZVR5cGUoVEVYVCgidGV4dC9wbGFpbiIp
LCAxMCk7CiAgICAgQlN0cmluZyB1dGYxNkVuY29kaW5nKFRFWFQoInV0Zi0xNiIpLCA2KTsKLSAg
ICBsb2FkRGF0YShzaGFyZWRCdWZmZXIucmVsZWFzZSgpLCBwbGFpblRleHRNaW1lVHlwZSwgdXRm
MTZFbmNvZGluZywgdXJsLCBudWxscHRyKTsKKyAgICBsb2FkRGF0YShXVEZNb3ZlKHNoYXJlZEJ1
ZmZlciksIHBsYWluVGV4dE1pbWVUeXBlLCB1dGYxNkVuY29kaW5nLCB1cmwsIG51bGxwdHIpOwog
ICAgIHJldHVybiBTX09LOwogfQogCkBAIC02MjIsNyArNjIyLDcgQEAgdm9pZCBXZWJGcmFtZTo6
bG9hZEhUTUxTdHJpbmcoX0luXyBCU1RSIGh0bWxTdHJpbmcsIF9Jbl8gQlNUUiBiYXNlVVJMLCBf
SW5fIEJTVFIKIHsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzaGFyZWRCdWZmZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PGNoYXIqPihodG1sU3RyaW5nKSwgc2l6
ZW9mKFVDaGFyKSAqIFN5c1N0cmluZ0xlbihodG1sU3RyaW5nKSk7CiAgICAgQlN0cmluZyB1dGYx
NkVuY29kaW5nKFRFWFQoInV0Zi0xNiIpLCA2KTsKLSAgICBsb2FkRGF0YShzaGFyZWRCdWZmZXIu
cmVsZWFzZSgpLCAwLCB1dGYxNkVuY29kaW5nLCBiYXNlVVJMLCB1bnJlYWNoYWJsZVVSTCk7Cisg
ICAgbG9hZERhdGEoV1RGTW92ZShzaGFyZWRCdWZmZXIpLCAwLCB1dGYxNkVuY29kaW5nLCBiYXNl
VVJMLCB1bnJlYWNoYWJsZVVSTCk7CiB9CiAKIEhSRVNVTFQgV2ViRnJhbWU6OmxvYWRIVE1MU3Ry
aW5nKF9Jbl8gQlNUUiBodG1sU3RyaW5nLCBfSW5fIEJTVFIgYmFzZVVSTCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvd2luL1dlYkZyYW1lUG9saWN5TGlzdGVuZXIuY3BwIGIvU291cmNlL1dl
YktpdC93aW4vV2ViRnJhbWVQb2xpY3lMaXN0ZW5lci5jcHAKaW5kZXggMmQ2ZjY5ZWE0NWMuLjA1
MjcwOTZhODNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZVBvbGljeUxp
c3RlbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZVBvbGljeUxpc3RlbmVy
LmNwcApAQCAtMTIwLDcgKzEyMCw3IEBAIEhSRVNVTFQgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lcjo6
Y29udGludWVTdWJtaXQoKQogLy8gV2ViRnJhbWVQb2xpY3lMaXN0ZW5lciAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiB2b2lk
IFdlYkZyYW1lUG9saWN5TGlzdGVuZXI6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24oUG9saWN5QWN0
aW9uIGFjdGlvbikKIHsKLSAgICBSZWZQdHI8RnJhbWU+IGZyYW1lID0gbV9mcmFtZS5yZWxlYXNl
KCk7CisgICAgUmVmUHRyPEZyYW1lPiBmcmFtZSA9IFdURk1vdmUobV9mcmFtZSk7CiAgICAgaWYg
KGZyYW1lKQogICAgICAgICBzdGF0aWNfY2FzdDxXZWJGcmFtZUxvYWRlckNsaWVudCY+KGZyYW1l
LT5sb2FkZXIoKS5jbGllbnQoKSkucmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihhY3Rpb24pOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vdW5peC9TaGFyZWRNZW1vcnlVbml4
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL3VuaXgvU2hhcmVkTWVtb3J5VW5peC5jcHAK
aW5kZXggYzI0NjMxMmY5YjcuLmRhMzU1NjBhMGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybS91bml4L1NoYXJlZE1lbW9yeVVuaXguY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtL3VuaXgvU2hhcmVkTWVtb3J5VW5peC5jcHAKQEAgLTEyMiwxNCArMTIyLDE0IEBA
IFJlZlB0cjxTaGFyZWRNZW1vcnk+IFNoYXJlZE1lbW9yeTo6Y3JlYXRlKHZvaWQqIGFkZHJlc3Ms
IHNpemVfdCBzaXplLCBQcm90ZWN0aW9uCiAgICAgfQogICAgIGlmIChmaWxlRGVzY3JpcHRvciA9
PSAtMSkgewogICAgICAgICBXVEZMb2dBbHdheXMoIkZhaWxlZCB0byBjcmVhdGUgc2hhcmVkIG1l
bW9yeSBmaWxlICVzOiAlcyIsIHRlbXBOYW1lLmRhdGEoKSwgc3RyZXJyb3IoZXJybm8pKTsKLSAg
ICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAogICAgIHdo
aWxlIChmdHJ1bmNhdGUoZmlsZURlc2NyaXB0b3IsIHNpemUpID09IC0xKSB7CiAgICAgICAgIGlm
IChlcnJubyAhPSBFSU5UUikgewogICAgICAgICAgICAgY2xvc2VXaXRoUmV0cnkoZmlsZURlc2Ny
aXB0b3IpOwogICAgICAgICAgICAgc2htX3VubGluayh0ZW1wTmFtZS5kYXRhKCkpOwotICAgICAg
ICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQog
ICAgIH0KIApAQCAtMTM3LDcgKzEzNyw3IEBAIFJlZlB0cjxTaGFyZWRNZW1vcnk+IFNoYXJlZE1l
bW9yeTo6Y3JlYXRlKHZvaWQqIGFkZHJlc3MsIHNpemVfdCBzaXplLCBQcm90ZWN0aW9uCiAgICAg
aWYgKGRhdGEgPT0gTUFQX0ZBSUxFRCkgewogICAgICAgICBjbG9zZVdpdGhSZXRyeShmaWxlRGVz
Y3JpcHRvcik7CiAgICAgICAgIHNobV91bmxpbmsodGVtcE5hbWUuZGF0YSgpKTsKLSAgICAgICAg
cmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAogICAgIHNobV91bmxp
bmsodGVtcE5hbWUuZGF0YSgpKTsKQEAgLTE0Niw3ICsxNDYsNyBAQCBSZWZQdHI8U2hhcmVkTWVt
b3J5PiBTaGFyZWRNZW1vcnk6OmNyZWF0ZSh2b2lkKiBhZGRyZXNzLCBzaXplX3Qgc2l6ZSwgUHJv
dGVjdGlvbgogICAgIGluc3RhbmNlLT5tX2RhdGEgPSBkYXRhOwogICAgIGluc3RhbmNlLT5tX2Zp
bGVEZXNjcmlwdG9yID0gZmlsZURlc2NyaXB0b3I7CiAgICAgaW5zdGFuY2UtPm1fc2l6ZSA9IHNp
emU7Ci0gICAgcmV0dXJuIGluc3RhbmNlLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gaW5zdGFuY2U7
CiB9CiAKIFJlZlB0cjxTaGFyZWRNZW1vcnk+IFNoYXJlZE1lbW9yeTo6YWxsb2NhdGUoc2l6ZV90
IHNpemUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFw
aGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcAppbmRleCBj
ZmVmM2YyMDliMi4uMzQ5Njg2MmQ5OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFw
aGljc1NjZW5lLmNwcApAQCAtNDYzLDggKzQ2Myw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGlj
c1NjZW5lOjpzeW5jSW1hZ2VCYWNraW5ncyhjb25zdCBDb29yZGluYXRlZEdyYXBoaWNzU3RhdGUm
CiB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6Y3JlYXRlSW1hZ2VCYWNraW5nKENvb3Jk
aW5hdGVkSW1hZ2VCYWNraW5nSUQgaW1hZ2VJRCkKIHsKICAgICBBU1NFUlQoIW1faW1hZ2VCYWNr
aW5ncy5jb250YWlucyhpbWFnZUlEKSk7Ci0gICAgUmVmUHRyPENvb3JkaW5hdGVkQmFja2luZ1N0
b3JlPiBiYWNraW5nU3RvcmUoQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OmNyZWF0ZSgpKTsKLSAg
ICBtX2ltYWdlQmFja2luZ3MuYWRkKGltYWdlSUQsIGJhY2tpbmdTdG9yZS5yZWxlYXNlKCkpOwor
ICAgIG1faW1hZ2VCYWNraW5ncy5hZGQoaW1hZ2VJRCwgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6
OmNyZWF0ZSgpKTsKIH0KIAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnVwZGF0ZUlt
YWdlQmFja2luZyhDb29yZGluYXRlZEltYWdlQmFja2luZ0lEIGltYWdlSUQsIFJlZlB0cjxDb29y
ZGluYXRlZFN1cmZhY2U+JiYgc3VyZmFjZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9jYWlyby9TaGFyZWFibGVCaXRtYXBDYWlyby5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvY2Fpcm8vU2hhcmVhYmxlQml0bWFwQ2Fpcm8uY3BwCmluZGV4IDMxNjgxZTVmZDNlLi4yMjM5
Y2VlMzc2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2NhaXJvL1NoYXJlYWJs
ZUJpdG1hcENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvY2Fpcm8vU2hhcmVh
YmxlQml0bWFwQ2Fpcm8uY3BwCkBAIC03OSw3ICs3OSw3IEBAIFJlZlB0cjxjYWlyb19zdXJmYWNl
X3Q+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlQ2Fpcm9TdXJmYWNlKCkKICAgICByZWYoKTsgLy8g
QmFsYW5jZWQgYnkgZGVyZWYgaW4gcmVsZWFzZVN1cmZhY2VEYXRhLgogICAgIHN0YXRpYyBjYWly
b191c2VyX2RhdGFfa2V5X3QgZGF0YUtleTsKICAgICBjYWlyb19zdXJmYWNlX3NldF91c2VyX2Rh
dGEoaW1hZ2UuZ2V0KCksICZkYXRhS2V5LCB0aGlzLCByZWxlYXNlU3VyZmFjZURhdGEpOwotICAg
IHJldHVybiBpbWFnZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGltYWdlOwogfQogCiB2b2lkIFNo
YXJlYWJsZUJpdG1hcDo6cmVsZWFzZVN1cmZhY2VEYXRhKHZvaWQqIHR5cGVsZXNzQml0bWFwKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Z3RrL0RPTS9XZWJLaXRET01Ob2RlRmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NTm9kZUZpbHRlci5jcHAKaW5k
ZXggOGZlNmVjNTVjMzIuLjMxYzAyZDBmMzFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTU5vZGVGaWx0ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0
ay9ET00vV2ViS2l0RE9NTm9kZUZpbHRlci5jcHAKQEAgLTc3LDcgKzc3LDcgQEAgUmVmUHRyPFdl
YkNvcmU6Ok5vZGVGaWx0ZXI+IGNvcmUoV2ViS2l0RE9NTm9kZUZpbHRlciogbm9kZUZpbHRlcikK
ICAgICAgICAgZ19vYmplY3Rfd2Vha19yZWYoR19PQkpFQ1Qobm9kZUZpbHRlciksIG5vZGVGaWx0
ZXJPYmplY3REZXN0cm95ZWRDYWxsYmFjaywgY29yZU5vZGVGaWx0ZXIuZ2V0KCkpOwogICAgICAg
ICBnX29iamVjdF9zZXRfZGF0YShHX09CSkVDVChub2RlRmlsdGVyKSwgIndlYmtpdC1jb3JlLW5v
ZGUtZmlsdGVyIiwgY29yZU5vZGVGaWx0ZXIuZ2V0KCkpOwogICAgIH0KLSAgICByZXR1cm4gY29y
ZU5vZGVGaWx0ZXIucmVsZWFzZSgpOworICAgIHJldHVybiBjb3JlTm9kZUZpbHRlcjsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKaW5kZXggNWM2ZDk5MGQyMzQuLjEwYWIyMWJkYzIxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0yODcwLDEyICsy
ODcwLDExIEBAIHZvaWQgV2ViUGFnZTo6Z2V0Q29udGVudHNBc1N0cmluZyh1aW50NjRfdCBjYWxs
YmFja0lEKQogI2lmIEVOQUJMRShNSFRNTCkKIHZvaWQgV2ViUGFnZTo6Z2V0Q29udGVudHNBc01I
VE1MRGF0YSh1aW50NjRfdCBjYWxsYmFja0lEKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGJ1ZmZlciA9IE1IVE1MQXJjaGl2ZTo6Z2VuZXJhdGVNSFRNTERhdGEobV9wYWdlLmdldCgpKTsK
KyAgICBhdXRvIGJ1ZmZlciA9IE1IVE1MQXJjaGl2ZTo6Z2VuZXJhdGVNSFRNTERhdGEobV9wYWdl
LmdldCgpKTsKIAogICAgIC8vIEZJWE1FOiBVc2UgU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS4K
ICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZTsKLSAgICBpZiAoYnVmZmVyKQot
ICAgICAgICBkYXRhUmVmZXJlbmNlID0gSVBDOjpEYXRhUmVmZXJlbmNlKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgdWludDhfdCo+KGJ1ZmZlci0+ZGF0YSgpKSwgYnVmZmVyLT5zaXplKCkpOworICAg
IGRhdGFSZWZlcmVuY2UgPSBJUEM6OkRhdGFSZWZlcmVuY2UocmVpbnRlcnByZXRfY2FzdDxjb25z
dCB1aW50OF90Kj4oYnVmZmVyLT5kYXRhKCkpLCBidWZmZXItPnNpemUoKSk7CiAgICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEYXRhQ2FsbGJhY2soZGF0YVJlZmVyZW5jZSwgY2FsbGJh
Y2tJRCkpOwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9SZWZQdHIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUmVmUHRyLmNw
cAppbmRleCAxNzJlZmE3NjI3Yy4uOTVmOTdkOGRhNzkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL1JlZlB0ci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvUmVmUHRyLmNwcApAQCAtMTA4LDE0ICsxMDgsNiBAQCBURVNUKFdURl9SZWZQdHIs
IEJhc2ljKQogICAgICAgICBBU1NFUlRfRVEobnVsbHB0ciwgcHRyLmdldCgpKTsKICAgICB9CiAg
ICAgQVNTRVJUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkp
OwotCi0gICAgewotICAgICAgICBSZWZQdHI8UmVmTG9nZ2VyPiBwdHIoJmEpOwotICAgICAgICBB
U1NFUlRfRVEoJmEsIHB0ci5nZXQoKSk7Ci0gICAgICAgIHB0ci5yZWxlYXNlKCk7Ci0gICAgICAg
IEFTU0VSVF9FUShudWxscHRyLCBwdHIuZ2V0KCkpOwotICAgIH0KLSAgICBBU1NFUlRfU1RSRVEo
InJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiB9CiAKIFRFU1QoV1RG
X1JlZlB0ciwgQXNzaWduUGFzc1JlZlRvUmVmUHRyKQpAQCAtMTI1LDggKzExNyw2IEBAIFRFU1Qo
V1RGX1JlZlB0ciwgQXNzaWduUGFzc1JlZlRvUmVmUHRyKQogICAgICAgICBSZWY8UmVmTG9nZ2Vy
PiBwYXNzUmVmKGEpOwogICAgICAgICBSZWZQdHI8UmVmTG9nZ2VyPiBwdHIgPSBXVEZNb3ZlKHBh
c3NSZWYpOwogICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci5nZXQoKSk7Ci0gICAgICAgIHB0ci5y
ZWxlYXNlKCk7Ci0gICAgICAgIEFTU0VSVF9FUShudWxscHRyLCBwdHIuZ2V0KCkpOwogICAgIH0K
ICAgICBBU1NFUlRfU1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIo
KSk7CiB9CkBAIC0zMzYsNyArMzI2LDcgQEAgVEVTVChXVEZfUmVmUHRyLCBSZWxlYXNlKQogCiAg
ICAgewogICAgICAgICBSZWZQdHI8UmVmTG9nZ2VyPiBwMSA9ICZhOwotICAgICAgICBSZWZQdHI8
UmVmTG9nZ2VyPiBwMiA9IHAxLnJlbGVhc2UoKTsKKyAgICAgICAgUmVmUHRyPFJlZkxvZ2dlcj4g
cDIgPSBXVEZNb3ZlKHAxKTsKICAgICAgICAgQVNTRVJUX0VRKG51bGxwdHIsIHAxLmdldCgpKTsK
ICAgICAgICAgQVNTRVJUX0VRKCZhLCBwMi5nZXQoKSk7CiAgICAgfQpAQCAtMzQ0LDcgKzMzNCw3
IEBAIFRFU1QoV1RGX1JlZlB0ciwgUmVsZWFzZSkKIAogICAgIHsKICAgICAgICAgUmVmUHRyPFJl
ZkxvZ2dlcj4gcDEgPSAmYTsKLSAgICAgICAgUmVmUHRyPFJlZkxvZ2dlcj4gcDIocDEucmVsZWFz
ZSgpKTsKKyAgICAgICAgUmVmUHRyPFJlZkxvZ2dlcj4gcDIoV1RGTW92ZShwMSkpOwogICAgICAg
ICBBU1NFUlRfRVEobnVsbHB0ciwgcDEuZ2V0KCkpOwogICAgICAgICBBU1NFUlRfRVEoJmEsIHAy
LmdldCgpKTsKICAgICB9CkBAIC0zNTIsNyArMzQyLDcgQEAgVEVTVChXVEZfUmVmUHRyLCBSZWxl
YXNlKQogCiAgICAgewogICAgICAgICBSZWZQdHI8RGVyaXZlZFJlZkxvZ2dlcj4gcDEgPSAmYTsK
LSAgICAgICAgUmVmUHRyPFJlZkxvZ2dlcj4gcDIgPSBwMS5yZWxlYXNlKCk7CisgICAgICAgIFJl
ZlB0cjxSZWZMb2dnZXI+IHAyID0gV1RGTW92ZShwMSk7CiAgICAgICAgIEFTU0VSVF9FUShudWxs
cHRyLCBwMS5nZXQoKSk7CiAgICAgICAgIEFTU0VSVF9FUSgmYSwgcDIuZ2V0KCkpOwogICAgIH0K
QEAgLTM2NCw3ICszNTQsNyBAQCBURVNUKFdURl9SZWZQdHIsIFJlbGVhc2UpCiAgICAgICAgIEFT
U0VSVF9FUSgmYSwgcDEuZ2V0KCkpOwogICAgICAgICBBU1NFUlRfRVEoJmIsIHAyLmdldCgpKTsK
ICAgICAgICAgbG9nKCkgPDwgInwgIjsKLSAgICAgICAgcDEgPSBwMi5yZWxlYXNlKCk7CisgICAg
ICAgIHAxID0gV1RGTW92ZShwMik7CiAgICAgICAgIEFTU0VSVF9FUSgmYiwgcDEuZ2V0KCkpOwog
ICAgICAgICBBU1NFUlRfRVEobnVsbHB0ciwgcDIuZ2V0KCkpOwogICAgICAgICBsb2coKSA8PCAi
fCAiOwpAQCAtMzc3LDcgKzM2Nyw3IEBAIFRFU1QoV1RGX1JlZlB0ciwgUmVsZWFzZSkKICAgICAg
ICAgQVNTRVJUX0VRKCZhLCBwMS5nZXQoKSk7CiAgICAgICAgIEFTU0VSVF9FUSgmYywgcDIuZ2V0
KCkpOwogICAgICAgICBsb2coKSA8PCAifCAiOwotICAgICAgICBwMSA9IHAyLnJlbGVhc2UoKTsK
KyAgICAgICAgcDEgPSBXVEZNb3ZlKHAyKTsKICAgICAgICAgQVNTRVJUX0VRKCZjLCBwMS5nZXQo
KSk7CiAgICAgICAgIEFTU0VSVF9FUShudWxscHRyLCBwMi5nZXQoKSk7CiAgICAgICAgIGxvZygp
IDw8ICJ8ICI7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>310054</attachid>
            <date>2017-05-13 19:34:07 -0700</date>
            <delta_ts>2017-05-13 21:04:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-172074-20170513193406.patch</filename>
            <type>text/plain</type>
            <size>29699</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE2ODIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDE2ODUzMTU0YjRkYmJlYWY4ODI4MGVl
OWI4NjhiNTBhOGYyOTQyMjUuLjdmZTBhOWUxMjIyYTdmMWFkMDE1YmQzMThjZjAxNzZmMDg5YzZj
NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTctMDUtMTMgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBTdG9wIHVzaW5nIFJlZlB0cjo6cmVsZWFzZSgpCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzIwNzQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi93aW4vV29y
a1F1ZXVlV2luLmNwcDoKKyAgICAgICAgKFdURjo6V29ya1F1ZXVlOjpkaXNwYXRjaEFmdGVyKToK
KwogMjAxNy0wNS0xMiAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KIAog
ICAgICAgICBVc2UgTWFjaCBleGNlcHRpb25zIGluc3RlYWQgb2Ygc2lnbmFscyB3aGVyZSBwb3Nz
aWJsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IGU0YjM3MDYwOWQ0ZmU5YjQ3ZjBhODk5MzAzYjFjYzRhMDg5YmUz
ODUuLjlhYzU5YjYyMDIwMjU4ZDFiOThkM2ZjNTJhZDU3MjRlMjFmYzdkYTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwzOSBAQAorMjAxNy0wNS0xMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUu
Y29tPgorCisgICAgICAgIFN0b3AgdXNpbmcgUmVmUHRyOjpyZWxlYXNlKCkKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MjA3NAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogY3NzL3BhcnNlci9DU1NQcm9w
ZXJ0eVBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250VmFyaWFudExpZ2F0dXJlc1Bh
cnNlcjo6ZmluYWxpemVWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpGb250VmFyaWFudE51bWVy
aWNQYXJzZXI6OmZpbmFsaXplVmFsdWUpOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUHJvcGVy
dHlQYXJzZXJIZWxwZXJzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2Vy
SGVscGVyczo6Q2FsY1BhcnNlcjo6Y29uc3VtZVZhbHVlKToKKyAgICAgICAgKiBsb2FkZXIvU3Vi
cmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6
OmNyZWF0ZSk6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok1IVE1MQXJjaGl2ZTo6Z2VuZXJhdGVNSFRNTERhdGEpOgor
ICAgICAgICAqIGxvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5oOgorICAgICAgICAq
IGxvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1IVE1MUGFyc2VyOjpwYXJzZUFyY2hpdmVXaXRoSGVhZGVyKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9hdWRpby9pb3MvQXVkaW9GaWxlUmVhZGVySU9TLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvRmlsZVJlYWRlcjo6Y3JlYXRlQnVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9nbGliL1NoYXJl
ZEJ1ZmZlckdsaWIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGVG
cm9tUmVhZGluZ0ZpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNG
TGF5ZXJUcmVlSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQUNGTGF5ZXJUcmVlSG9zdDo6
Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb1V0aWxpdGll
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb3B5Q2Fpcm9JbWFnZVN1cmZhY2UpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Z2V0SW1hZ2VEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
dGsvSWNvbkd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJY29uOjpjcmVhdGVJY29uRm9yRmls
ZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q2FjaGVXaW4uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpzeXN0ZW1GYWxsYmFja0ZvckNoYXJhY3RlcnMp
OgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUpOgorCiAyMDE3LTA1
LTEyICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1dlYklETF0gUmVt
b3ZlIG5lZWQgZm9yIGN1c3RvbSBiaW5kaW5nIGZvciBXb3JrZXIgY29uc3RydWN0b3IKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luL0No
YW5nZUxvZwppbmRleCAzODhmZGQxNmIyZTVhM2MxODQ5N2ZjN2RiYjhmYjUxYmFiMjRkMzBmLi5j
Mjg5NWUyMTkzNTQ3NmQzM2RkYjUxODMzMzY5ODc0ZDFiN2QxOWIyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9n
CkBAIC0xLDUgKzEsMTggQEAKIDIwMTctMDUtMTMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxl
LmNvbT4KIAorICAgICAgICBTdG9wIHVzaW5nIFJlZlB0cjo6cmVsZWFzZSgpCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzIwNzQKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkZyYW1lLmNwcDoKKyAg
ICAgICAgKFdlYkZyYW1lOjpsb2FkUGxhaW5UZXh0U3RyaW5nKToKKyAgICAgICAgKFdlYkZyYW1l
Ojpsb2FkSFRNTFN0cmluZyk6CisgICAgICAgICogV2ViRnJhbWVQb2xpY3lMaXN0ZW5lci5jcHA6
CisgICAgICAgIChXZWJGcmFtZVBvbGljeUxpc3RlbmVyOjpyZWNlaXZlZFBvbGljeURlY2lzaW9u
KToKKworMjAxNy0wNS0xMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCiAgICAg
ICAgIERyb3AgdXNlcyBvZiBQYXNzUmVmUHRyIGluIFdlYktpdC93aW4KICAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MjA2NwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXgg
YjBlOGIwODRiODAwOGQzNTllNjU0ZmE0MzYzODdhMzZjZTEzZTk2OC4uMzUxYmU1NjY3NThmOGFk
NjFmYTI2MzUyOWZlMDM1YzViZTA3NjZiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisy
MDE3LTA1LTEzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgU3Rv
cCB1c2luZyBSZWZQdHI6OnJlbGVhc2UoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTcyMDc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBQbGF0Zm9ybS91bml4L1NoYXJlZE1lbW9yeVVuaXguY3BwOgor
ICAgICAgICAoV2ViS2l0OjpTaGFyZWRNZW1vcnk6OmNyZWF0ZSk6CisgICAgICAgICogU2hhcmVk
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpjcmVhdGVJbWFnZUJhY2tpbmcp
OgorICAgICAgICAqIFNoYXJlZC9jYWlyby9TaGFyZWFibGVCaXRtYXBDYWlyby5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlQ2Fpcm9TdXJmYWNlKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTU5vZGVG
aWx0ZXIuY3BwOgorICAgICAgICAoV2ViS2l0Ojpjb3JlKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldENvbnRl
bnRzQXNNSFRNTERhdGEpOgorCiAyMDE3LTA1LTEyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CiAKICAgICAgICAgRHJvcCByZW1haW5pbmcgdXNlcyBvZiBQYXNzUmVmUHRyIGluIFdl
YktpdDIvV2ViUHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvd2luL1dvcmtRdWV1
ZVdpbi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vV29ya1F1ZXVlV2luLmNwcAppbmRleCBlODE1
NDc3Mzc0NjczNDY2OTZkMDZiNWFjNDA4YWEwZTMwY2MwODZkLi5iYmYwMTFhZTE0MDU5ZWU2MTA1
YmE5NzM0YzZmMTIyNTE3ZGQ3NGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi93aW4vV29y
a1F1ZXVlV2luLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vV29ya1F1ZXVlV2luLmNwcApA
QCAtMTg3LDcgKzE4Nyw3IEBAIHZvaWQgV29ya1F1ZXVlOjpkaXNwYXRjaEFmdGVyKFNlY29uZHMg
ZHVyYXRpb24sIEZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikKICAgICB9CiAKICAgICAvLyBU
aGUgdGltZXIgY2FsbGJhY2sgd2lsbCBoYW5kbGUgZGVzdHJveWluZyBjb250ZXh0LgotICAgIGNv
bnRleHQucmVsZWFzZSgpLmxlYWtSZWYoKTsKKyAgICBjb250ZXh0LmxlYWtSZWYoKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2Vy
L0NTU1Byb3BlcnR5UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJv
cGVydHlQYXJzZXIuY3BwCmluZGV4IDkzMTI1ZmNlMTM4OGUwNTI2NmY0ZmMyNjdhZjhiMmM0MDRk
MGYyMmYuLmIzOTUwMWMwNWMwZWRkNjI4OGEzMTZmZDVjMzEyMzgxMGIxNmY2NTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwCkBAIC02MzAs
NyArNjMwLDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgaWYgKCFtX3Jlc3VsdC0+bGVuZ3Ro
KCkpCiAgICAgICAgICAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJ
ZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb3JtYWwpOwotICAgICAgICByZXR1cm4gbV9yZXN1bHQu
cmVsZWFzZSgpOworICAgICAgICByZXR1cm4gV1RGTW92ZShtX3Jlc3VsdCk7CiAgICAgfQogCiBw
cml2YXRlOgpAQCAtODMyLDcgKzgzMiw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIGlmICgh
bV9yZXN1bHQtPmxlbmd0aCgpKQogICAgICAgICAgICAgcmV0dXJuIENTU1ZhbHVlUG9vbDo6c2lu
Z2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9ybWFsKTsKLSAgICAgICAg
cmV0dXJuIG1fcmVzdWx0LnJlbGVhc2UoKTsKKyAgICAgICAgcmV0dXJuIFdURk1vdmUobV9yZXN1
bHQpOwogICAgIH0KIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NT
U1Byb3BlcnR5UGFyc2VySGVscGVycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NT
U1Byb3BlcnR5UGFyc2VySGVscGVycy5jcHAKaW5kZXggNGEzMmE1OGJjMGI4NjlhNzVlYjYzYjU2
MjQ3ZDAyNjVhNjM2YTViMS4uMzQ5OTk5YjllN2VlNzUxZDE1ZDI2YTAzMjc3MDk1OTBkMjc4NTU1
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNl
ckhlbHBlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQ
YXJzZXJIZWxwZXJzLmNwcApAQCAtOTMsNyArOTMsNyBAQCBwdWJsaWM6CiAgICAgICAgIGlmICgh
bV9jYWxjVmFsdWUpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgbV9zb3Vy
Y2VSYW5nZSA9IG1fcmFuZ2U7Ci0gICAgICAgIHJldHVybiBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRv
bigpLmNyZWF0ZVZhbHVlKG1fY2FsY1ZhbHVlLnJlbGVhc2UoKSk7CisgICAgICAgIHJldHVybiBD
U1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZVZhbHVlKFdURk1vdmUobV9jYWxjVmFsdWUp
KTsKICAgICB9CiAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjb25zdW1lTnVtYmVyKCkK
ICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2Fk
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAppbmRl
eCA3N2IxMjExMTdmMzBkZjVjNjE4OGEzNGViYWUyMGZkOGIzNWJlYjViLi44NTdiZDhiNWVlNmRh
YjAzZDQ2YzkyNDlkMWIyNDBhNDdiMmE1ZjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9T
dWJyZXNvdXJjZUxvYWRlci5jcHAKQEAgLTExMSw3ICsxMTEsNyBAQCBSZWZQdHI8U3VicmVzb3Vy
Y2VMb2FkZXI+IFN1YnJlc291cmNlTG9hZGVyOjpjcmVhdGUoRnJhbWUmIGZyYW1lLCBDYWNoZWRS
ZXNvdXJjZQogICAgICAgICAvLyBpcyBkaXNhYmxlZCB0byBhdm9pZCByZS1lbnRlcmluZyBzdHls
ZSBzZWxlY3Rpb24gZnJvbSBhIGRpZmZlcmVudCB0aHJlYWQgKHNlZSA8cmRhcjovL3Byb2JsZW0v
OTEyMTcxOT4pLgogICAgICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgZml4ZWQgZm9yIGFs
bCBwb3J0cyBpbiA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2NjQ3
Pi4KICAgICAgICAgc3VibG9hZGVyLT5tX2lPU09yaWdpbmFsUmVxdWVzdCA9IHJlcXVlc3Q7Ci0g
ICAgICAgIHJldHVybiBzdWJsb2FkZXIucmVsZWFzZSgpOworICAgICAgICByZXR1cm4gc3VibG9h
ZGVyOwogICAgIH0KICNlbmRpZgogICAgIGlmICghc3VibG9hZGVyLT5pbml0KHJlcXVlc3QpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNo
aXZlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2
ZS5jcHAKaW5kZXggMmNhNjdlMjdiZTg4NDJjYzdhMjE3ZGFhOTI1NWU4MThlZjlhMTkyZi4uNjFj
NjI2YjI5MTIxYmE2YTFmOGQ3NGQ4ZDZiYWY0Yjc4N2JlZjQxYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwCkBAIC0xMzAs
NyArMTMwLDcgQEAgUmVmUHRyPE1IVE1MQXJjaGl2ZT4gTUhUTUxBcmNoaXZlOjpjcmVhdGUoY29u
c3QgVVJMJiB1cmwsIFNoYXJlZEJ1ZmZlciYgZGF0YSkKICAgICByZXR1cm4gbWFpbkFyY2hpdmU7
CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IE1IVE1MQXJjaGl2ZTo6Z2VuZXJhdGVNSFRNTERh
dGEoUGFnZSogcGFnZSkKK1JlZjxTaGFyZWRCdWZmZXI+IE1IVE1MQXJjaGl2ZTo6Z2VuZXJhdGVN
SFRNTERhdGEoUGFnZSogcGFnZSkKIHsKICAgICBWZWN0b3I8UGFnZVNlcmlhbGl6ZXI6OlJlc291
cmNlPiByZXNvdXJjZXM7CiAgICAgUGFnZVNlcmlhbGl6ZXIgcGFnZVNlcmlhbGl6ZXIocmVzb3Vy
Y2VzKTsKQEAgLTE2Miw3ICsxNjIsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBNSFRNTEFyY2hp
dmU6OmdlbmVyYXRlTUhUTUxEYXRhKFBhZ2UqIHBhZ2UpCiAgICAgLy8gV2UgdXNlIHV0ZjgoKSBi
ZWxvdyBpbnN0ZWFkIG9mIGFzY2lpKCkgYXMgYXNjaWkoKSByZXBsYWNlcyBDUkxGcyB3aXRoID8/
ICh3ZSBzdGlsbCBvbmx5IGhhdmUgcHV0IEFTQ0lJIGNoYXJhY3RlcnMgaW4gaXQpLgogICAgIEFT
U0VSVChzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkuY29udGFpbnNPbmx5QVNDSUkoKSk7CiAgICAg
Q1N0cmluZyBhc2NpaVN0cmluZyA9IHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKS51dGY4KCk7Ci0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbWh0bWxEYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
KTsKKyAgICBhdXRvIG1odG1sRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgbWh0
bWxEYXRhLT5hcHBlbmQoYXNjaWlTdHJpbmcuZGF0YSgpLCBhc2NpaVN0cmluZy5sZW5ndGgoKSk7
CiAKICAgICBmb3IgKGF1dG8mIHJlc291cmNlIDogcmVzb3VyY2VzKSB7CkBAIC0yMTMsNyArMjEz
LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gTUhUTUxBcmNoaXZlOjpnZW5lcmF0ZU1IVE1MRGF0
YShQYWdlKiBwYWdlKQogICAgIGFzY2lpU3RyaW5nID0gbWFrZVN0cmluZygiLS0iLCBib3VuZGFy
eSwgIi0tXHJcbiIpLnV0ZjgoKTsKICAgICBtaHRtbERhdGEtPmFwcGVuZChhc2NpaVN0cmluZy5k
YXRhKCksIGFzY2lpU3RyaW5nLmxlbmd0aCgpKTsKIAotICAgIHJldHVybiBtaHRtbERhdGEucmVs
ZWFzZSgpOworICAgIHJldHVybiBtaHRtbERhdGE7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmgKaW5kZXggODUyNDY1OWFh
YjIyMGRlMDc1YzY3N2FiNzBmMTlhY2NjODgxOGRmZi4uM2QyZGI3Yzk2MDAyZWJlNjg0YjJiZWY4
ZjFlYTllMmU5Nzk0YTU4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hp
dmUvbWh0bWwvTUhUTUxBcmNoaXZlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hp
dmUvbWh0bWwvTUhUTUxBcmNoaXZlLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBSZWY8TUhUTUxBcmNoaXZlPiBjcmVhdGUoKTsKICAgICBzdGF0aWMgUmVmUHRyPE1IVE1M
QXJjaGl2ZT4gY3JlYXRlKGNvbnN0IFVSTCYsIFNoYXJlZEJ1ZmZlciYpOwogCi0gICAgc3RhdGlj
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGdlbmVyYXRlTUhUTUxEYXRhKFBhZ2UqKTsKKyAgICBzdGF0
aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZ2VuZXJhdGVNSFRNTERhdGEoUGFnZSopOwogCiAgICAgdmly
dHVhbCB+TUhUTUxBcmNoaXZlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcAppbmRleCBlMWIxMDRjZTFkYTNlZmZjZjNmZGNl
NDFhYWJkNTFmYTcwMzY5OTcxLi41ZmQzOWJlN2JkMTQwYmVlNDJiOTFhMjhhZjg2ZGY3NGE3ZTc0
ZDcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRN
TFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhU
TUxQYXJzZXIuY3BwCkBAIC02OCw3ICs2OCw3IEBAIFJlZlB0cjxNSFRNTEFyY2hpdmU+IE1IVE1M
UGFyc2VyOjpwYXJzZUFyY2hpdmVXaXRoSGVhZGVyKE1JTUVIZWFkZXIqIGhlYWRlcikKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgUmVmUHRyPE1IVE1MQXJjaGl2ZT4gYXJj
aGl2ZSA9IE1IVE1MQXJjaGl2ZTo6Y3JlYXRlKCk7CisgICAgYXV0byBhcmNoaXZlID0gTUhUTUxB
cmNoaXZlOjpjcmVhdGUoKTsKICAgICBpZiAoIWhlYWRlci0+aXNNdWx0aXBhcnQoKSkgewogICAg
ICAgICAvLyBXaXRoIElFIGEgcGFnZSB3aXRoIG5vIHJlc291cmNlIGlzIG5vdCBtdWx0aS1wYXJ0
LgogICAgICAgICBib29sIGVuZE9mQXJjaGl2ZVJlYWNoZWQgPSBmYWxzZTsKQEAgLTc2LDcgKzc2
LDcgQEAgUmVmUHRyPE1IVE1MQXJjaGl2ZT4gTUhUTUxQYXJzZXI6OnBhcnNlQXJjaGl2ZVdpdGhI
ZWFkZXIoTUlNRUhlYWRlciogaGVhZGVyKQogICAgICAgICBpZiAoIXJlc291cmNlKQogICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIGFyY2hpdmUtPnNldE1haW5SZXNvdXJjZShy
ZXNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpKTsKLSAgICAgICAgcmV0dXJuIGFyY2hpdmU7CisgICAg
ICAgIHJldHVybiBXVEZNb3ZlKGFyY2hpdmUpOwogICAgIH0KIAogICAgIC8vIFNraXAgdGhlIG1l
c3NhZ2UgY29udGVudCAoaXQncyBhIGdlbmVyaWMgYnJvd3NlciBzcGVjaWZpYyBtZXNzYWdlKS4K
QEAgLTEwMCw3ICsxMDAsNyBAQCBSZWZQdHI8TUhUTUxBcmNoaXZlPiBNSFRNTFBhcnNlcjo6cGFy
c2VBcmNoaXZlV2l0aEhlYWRlcihNSU1FSGVhZGVyKiBoZWFkZXIpCiAgICAgICAgICAgICBBU1NF
UlRfVU5VU0VEKGVuZE9mUGFydFJlYWNoZWQsIGVuZE9mUGFydFJlYWNoZWQpOwogICAgICAgICAg
ICAgLy8gVGhlIHRvcC1mcmFtZSBpcyB0aGUgZmlyc3QgZnJhbWUgZm91bmQsIHJlZ2FyZGxlc3Mg
b2YgdGhlIG5lc3RpbmcgbGV2ZWwuCiAgICAgICAgICAgICBpZiAoc3ViZnJhbWVBcmNoaXZlLT5t
YWluUmVzb3VyY2UoKSkKLSAgICAgICAgICAgICAgICBhZGRSZXNvdXJjZVRvQXJjaGl2ZShzdWJm
cmFtZUFyY2hpdmUtPm1haW5SZXNvdXJjZSgpLCBhcmNoaXZlLmdldCgpKTsKKyAgICAgICAgICAg
ICAgICBhZGRSZXNvdXJjZVRvQXJjaGl2ZShzdWJmcmFtZUFyY2hpdmUtPm1haW5SZXNvdXJjZSgp
LCBhcmNoaXZlLnB0cigpKTsKICAgICAgICAgICAgIGFyY2hpdmUtPmFkZFN1YmZyYW1lQXJjaGl2
ZShzdWJmcmFtZUFyY2hpdmUucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgfQpAQCAtMTEwLDEwICsxMTAsMTAgQEAgUmVmUHRyPE1IVE1MQXJjaGl2ZT4g
TUhUTUxQYXJzZXI6OnBhcnNlQXJjaGl2ZVdpdGhIZWFkZXIoTUlNRUhlYWRlciogaGVhZGVyKQog
ICAgICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gcGFyc2UgTUhUTUwgcGFydC4iKTsKICAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9Ci0gICAgICAgIGFkZFJlc291cmNl
VG9BcmNoaXZlKHJlc291cmNlLmdldCgpLCBhcmNoaXZlLmdldCgpKTsKKyAgICAgICAgYWRkUmVz
b3VyY2VUb0FyY2hpdmUocmVzb3VyY2UuZ2V0KCksIGFyY2hpdmUucHRyKCkpOwogICAgIH0KIAot
ICAgIHJldHVybiBhcmNoaXZlLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gV1RGTW92ZShhcmNoaXZl
KTsKIH0KIAogdm9pZCBNSFRNTFBhcnNlcjo6YWRkUmVzb3VyY2VUb0FyY2hpdmUoQXJjaGl2ZVJl
c291cmNlKiByZXNvdXJjZSwgTUhUTUxBcmNoaXZlKiBhcmNoaXZlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvRmlsZVJlYWRlcklPUy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9GaWxlUmVhZGVySU9TLmNwcApp
bmRleCA1MDNlZjQyZDAyOGI3NDFkMmQ5YzRlMWQ5OWQ2OGUyMDllODk1ZTEwLi44YTdmNzdmYTQw
ZWE3YzRhYjAwNzNlOGM4NTcyNjIyZWY1NzI5ODUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9GaWxlUmVhZGVySU9TLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9GaWxlUmVhZGVySU9TLmNwcApAQCAtMTc3
LDcgKzE3Nyw3IEBAIFJlZlB0cjxBdWRpb0J1cz4gQXVkaW9GaWxlUmVhZGVyOjpjcmVhdGVCdXMo
ZmxvYXQgc2FtcGxlUmF0ZSwgYm9vbCBtaXhUb01vbm8pCiAgICAgc2l6ZV90IGJ1c0NoYW5uZWxD
b3VudCA9IG1peFRvTW9ubyA/IDEgOiBudW1iZXJPZkNoYW5uZWxzOwogCiAgICAgLy8gQ3JlYXRl
IEF1ZGlvQnVzIHdoZXJlIHdlJ2xsIHB1dCB0aGUgUENNIGF1ZGlvIGRhdGEKLSAgICBSZWZQdHI8
QXVkaW9CdXM+IGF1ZGlvQnVzID0gQXVkaW9CdXM6OmNyZWF0ZShidXNDaGFubmVsQ291bnQsIG51
bWJlck9mRnJhbWVzKTsKKyAgICBhdXRvIGF1ZGlvQnVzID0gQXVkaW9CdXM6OmNyZWF0ZShidXND
aGFubmVsQ291bnQsIG51bWJlck9mRnJhbWVzKTsKICAgICBhdWRpb0J1cy0+c2V0U2FtcGxlUmF0
ZShtX2NsaWVudERhdGFGb3JtYXQubVNhbXBsZVJhdGUpOyAvLyBzYXZlIGZvciBsYXRlcgogCiAg
ICAgLy8gT25seSBhbGxvY2F0ZWQgaW4gdGhlIG1peFRvTW9ubyBjYXNlOyBkZWFsbG9jYXRlZCBv
biBkZXN0cnVjdGlvbi4KQEAgLTIyOCw3ICsyMjgsNyBAQCBSZWZQdHI8QXVkaW9CdXM+IEF1ZGlv
RmlsZVJlYWRlcjo6Y3JlYXRlQnVzKGZsb2F0IHNhbXBsZVJhdGUsIGJvb2wgbWl4VG9Nb25vKQog
CiAgICAgZGVzdHJveUF1ZGlvQnVmZmVyTGlzdChidWZmZXJMaXN0KTsKIAotICAgIHJldHVybiBh
dWRpb0J1cy5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGF1ZGlvQnVzOwogfQogCiBSZWZQdHI8QXVk
aW9CdXM+IGNyZWF0ZUJ1c0Zyb21BdWRpb0ZpbGUoY29uc3QgY2hhciogZmlsZVBhdGgsIGJvb2wg
bWl4VG9Nb25vLCBmbG9hdCBzYW1wbGVSYXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHAKaW5kZXggZTE1MjJmNmZhYzEwOWZhNDk2Mjgx
OWIwMTFhMGY4NzVjOTJjMDg2NS4uYWQ3MzQ5ZDZmM2RhMjBiOGQ5MjBiYmY0NTM0YmVmZmY3NmFj
MWIyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZm
ZXJHbGliLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZl
ckdsaWIuY3BwCkBAIC0zMSw3ICszMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0
cmluZyYgZmlsZVBhdGgpCiB7CiAgICAgaWYgKGZpbGVQYXRoLmlzRW1wdHkoKSkKLSAgICAgICAg
cmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgQ1N0cmluZyBmaWxlbmFt
ZSA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihmaWxlUGF0aCk7CiAgICAgR1VuaXF1ZU91dFB0
cjxnY2hhcj4gY29udGVudHM7CkBAIC0zOSwxMiArMzksMTAgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxl
UGF0aCkKICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgaWYgKCFnX2ZpbGVf
Z2V0X2NvbnRlbnRzKGZpbGVuYW1lLmRhdGEoKSwgJmNvbnRlbnRzLm91dFB0cigpLCAmc2l6ZSwg
JmVycm9yLm91dFB0cigpKSkgewogICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBmdWxseSBy
ZWFkIGNvbnRlbnRzIG9mIGZpbGUgJXMgLSAlcyIsIGZpbGVuYW1lRm9yRGlzcGxheShmaWxlUGF0
aCkudXRmOCgpLmRhdGEoKSwgZXJyb3ItPm1lc3NhZ2UpOwotICAgICAgICByZXR1cm4gMDsKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
cmVzdWx0ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoY29udGVudHMuZ2V0KCksIHNpemUpOwotCi0g
ICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGNvbnRlbnRzLmdldCgpLCBzaXplKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZM
YXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dp
bi9DQUNGTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggNGE4ZjU5NzI3YzY2MTJlM2MxYWM5ZGU1YzMx
Mjk3OWI2ZWJiNmYzMC4uNzI5Zjg0M2RmOTdiZWViY2IwNGFhMmU5NjYxM2EzNTM2ODBlYzdkNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZM
YXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS93aW4vQ0FDRkxheWVyVHJlZUhvc3QuY3BwCkBAIC0xMzEsNyArMTMxLDcgQEAgUmVmUHRyPENB
Q0ZMYXllclRyZWVIb3N0PiBDQUNGTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlKCkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgfQogICAgIGhvc3QtPmluaXRpYWxpemUoKTsKLSAgICByZXR1cm4g
aG9zdC5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGhvc3Q7CiB9CiAKIENBQ0ZMYXllclRyZWVIb3N0
OjpDQUNGTGF5ZXJUcmVlSG9zdCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9DYWlyb1V0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb1V0aWxpdGllcy5jcHAKaW5kZXggOGEzZmYzM2QwMDMw
Y2MxM2M3MjhkNmVmNTY0ZjAzZDFjZGFmMjRhMi4uOGQ5OTJmNjEwYzBlOTg3NjYwNmYyYmEyYTdi
NGUwNzQ2M2E2NzNjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vQ2Fpcm9VdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0NhaXJvVXRpbGl0aWVzLmNwcApAQCAtMjgyLDcgKzI4Miw3IEBAIFJl
ZlB0cjxjYWlyb19zdXJmYWNlX3Q+IGNvcHlDYWlyb0ltYWdlU3VyZmFjZShjYWlyb19zdXJmYWNl
X3QqIG9yaWdpbmFsU3VyZmFjZSkKICAgICBjYWlyb19zZXRfc291cmNlX3N1cmZhY2UoY3IuZ2V0
KCksIG9yaWdpbmFsU3VyZmFjZSwgMCwgMCk7CiAgICAgY2Fpcm9fc2V0X29wZXJhdG9yKGNyLmdl
dCgpLCBDQUlST19PUEVSQVRPUl9TT1VSQ0UpOwogICAgIGNhaXJvX3BhaW50KGNyLmdldCgpKTsK
LSAgICByZXR1cm4gbmV3U3VyZmFjZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIG5ld1N1cmZhY2U7
CiB9CiAKIHZvaWQgY29weVJlY3RGcm9tQ2Fpcm9TdXJmYWNlVG9Db250ZXh0KGNhaXJvX3N1cmZh
Y2VfdCogZnJvbSwgY2Fpcm9fdCogdG8sIGNvbnN0IEludFNpemUmIG9mZnNldCwgY29uc3QgSW50
UmVjdCYgcmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKaW5kZXggYmM3YjRkZTQzZTYxODU1YmU1
MmI2YjhkNmExOTA0OWNlZDc3YmYwMy4uZjg0NWZjNTFjYjQ3ODdiZTY1YmUxNjA1NTdjY2NhZmI1
OWNhNjdiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKQEAgLTMzMyw3ICszMzMsNyBAQCBSZWZQ
dHI8Y2Fpcm9fc3VyZmFjZV90PiBjb3B5U3VyZmFjZVRvSW1hZ2VBbmRBZGp1c3RSZWN0KGNhaXJv
X3N1cmZhY2VfdCogc3VyZmFjZQogdGVtcGxhdGUgPE11bHRpcGx5IG11bHRpcGxpZWQ+CiBSZWZQ
dHI8VWludDhDbGFtcGVkQXJyYXk+IGdldEltYWdlRGF0YShjb25zdCBJbnRSZWN0JiByZWN0LCBj
b25zdCBJbnRSZWN0JiBsb2dpY2FsUmVjdCwgY29uc3QgSW1hZ2VCdWZmZXJEYXRhJiBkYXRhLCBj
b25zdCBJbnRTaXplJiBzaXplLCBjb25zdCBJbnRTaXplJiBsb2dpY2FsU2l6ZSwgZmxvYXQgcmVz
b2x1dGlvblNjYWxlKQogewotICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gcmVzdWx0ID0g
VWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQocmVjdC53aWR0aCgpICogcmVj
dC5oZWlnaHQoKSAqIDQpOworICAgIGF1dG8gcmVzdWx0ID0gVWludDhDbGFtcGVkQXJyYXk6OmNy
ZWF0ZVVuaW5pdGlhbGl6ZWQocmVjdC53aWR0aCgpICogcmVjdC5oZWlnaHQoKSAqIDQpOwogICAg
IGlmICghcmVzdWx0KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtNDEwLDcgKzQxMCw3
IEBAIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gZ2V0SW1hZ2VEYXRhKGNvbnN0IEludFJlY3Qm
IHJlY3QsIGNvbnN0IEludFJlY3QmIGxvZ2ljCiAgICAgICAgIGRlc3RSb3dzICs9IGRlc3RCeXRl
c1BlclJvdzsKICAgICB9CiAKLSAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKKyAgICByZXR1
cm4gcmVzdWx0OwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBVbml0PgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ljb25HdGsuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ljb25HdGsuY3BwCmluZGV4IDg4MGM0Yzk3OTRh
NWVkNmQzYWMyZjhhNjc0N2NjMjEyNjkyZDIxOWMuLmFmMTg1YTU0Y2RkNDlkMjA0Njg2NWU2OTNj
NWE3M2M5NGM1OGIwNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2d0ay9JY29uR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ndGsvSWNvbkd0ay5jcHAKQEAgLTkzLDExICs5MywxMSBAQCBzdGF0aWMgU3RyaW5nIGxvb2t1
cEljb25OYW1lKFN0cmluZyBNSU1FVHlwZSkKIFJlZlB0cjxJY29uPiBJY29uOjpjcmVhdGVJY29u
Rm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcykKIHsKICAgICBpZiAoZmls
ZW5hbWVzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxs
cHRyOwogCiAgICAgaWYgKGZpbGVuYW1lcy5zaXplKCkgPT0gMSkgewogICAgICAgICBpZiAoIWdf
cGF0aF9za2lwX3Jvb3QoZmlsZW5hbWVzWzBdLnV0ZjgoKS5kYXRhKCkpKQotICAgICAgICAgICAg
cmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgICAgICBTdHJpbmcg
TUlNRVR5cGUgPSBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRNSU1FVHlwZUZvclBhdGgoZmlsZW5hbWVz
WzBdKTsKICAgICAgICAgU3RyaW5nIGljb25OYW1lID0gbG9va3VwSWNvbk5hbWUoTUlNRVR5cGUp
OwpAQCAtMTA1LDggKzEwNSw4IEBAIFJlZlB0cjxJY29uPiBJY29uOjpjcmVhdGVJY29uRm9yRmls
ZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcykKICAgICAgICAgUmVmUHRyPEljb24+
IGljb24gPSBhZG9wdFJlZihuZXcgSWNvbik7CiAgICAgICAgIGljb24tPm1faWNvbiA9IGd0a19p
Y29uX3RoZW1lX2xvYWRfaWNvbihndGtfaWNvbl90aGVtZV9nZXRfZGVmYXVsdCgpLCBpY29uTmFt
ZS51dGY4KCkuZGF0YSgpLCAxNiwgR1RLX0lDT05fTE9PS1VQX1VTRV9CVUlMVElOLCAwKTsKICAg
ICAgICAgaWYgKCFpY29uLT5tX2ljb24pCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAg
cmV0dXJuIGljb24ucmVsZWFzZSgpOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
ICAgIHJldHVybiBpY29uOwogICAgIH0KIAogICAgIC8vRklYTUU6IEltcGxlbWVudCB0aGlzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENhY2hl
V2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q2FjaGVX
aW4uY3BwCmluZGV4IDRkMDM5NmQwZWE5M2ZkNTgyMjA1ZWYwNWE0MzQ3OGE2MTYzOGRmMzQuLjIw
NTNiZjZmOGQ4ZTdhMWVhZDFjMmU1ZmJlYzVhYzNhMDEyZDc1MjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q2FjaGVXaW4uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q2FjaGVXaW4uY3BwCkBAIC0z
MTksNyArMzE5LDcgQEAgUmVmUHRyPEZvbnQ+IEZvbnRDYWNoZTo6c3lzdGVtRmFsbGJhY2tGb3JD
aGFyYWN0ZXJzKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZGVzY3IKICAgICAgICAgRGVsZXRlT2Jq
ZWN0KGhmb250KTsKICAgICB9CiAKLSAgICByZXR1cm4gZm9udERhdGEucmVsZWFzZSgpOworICAg
IHJldHVybiBmb250RGF0YTsKIH0KIAogVmVjdG9yPFN0cmluZz4gRm9udENhY2hlOjpzeXN0ZW1G
b250RmFtaWxpZXMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1No
YXJlZEJ1ZmZlcldpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2hhcmVkQnVm
ZmVyV2luLmNwcAppbmRleCBmZDUxZDYzYmY1NTcxNTdhYzljMGRiMDE4YmQ4M2I0YjRkN2NmNjA5
Li40MmVjZTBmODZiMzBiODFlM2U5YmZhOTJmMzFhODg0MTc3NmRiZjhjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcApAQCAtMzYsMTMgKzM2
LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiB7CiAg
ICAgaWYgKGZpbGVQYXRoLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJl
dHVybiBudWxscHRyOwogCiAgICAgU3RyaW5nIG51bGxpZmllZFBhdGggPSBmaWxlUGF0aDsKICAg
ICBIQU5ETEUgZmlsZUhhbmRsZSA9IENyZWF0ZUZpbGVXKG51bGxpZmllZFBhdGguY2hhcmFjdGVy
c1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCksIEdFTkVSSUNfUkVBRCwgRklMRV9TSEFSRV9S
RUFELCAwLCBPUEVOX0VYSVNUSU5HLCBGSUxFX0FUVFJJQlVURV9OT1JNQUwsIDApOwogICAgIGlm
IChmaWxlSGFuZGxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKSB7CiAgICAgICAgIExPR19FUlJP
UigiRmFpbGVkIHRvIG9wZW4gZmlsZSAlcyB0byBjcmVhdGUgc2hhcmVkIGJ1ZmZlciwgR2V0TGFz
dEVycm9yKCkgPSAldSIsIGZpbGVQYXRoLmFzY2lpKCkuZGF0YSgpLCBHZXRMYXN0RXJyb3IoKSk7
Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKICAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZXN1bHQ7CkBAIC02MCw3ICs2MCw3IEBAIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0
cmluZyYgZmlsZVBhdGgpCiAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGdldCBmaWxlc2l6
ZSBvZiBmaWxlICVzLCBHZXRMYXN0RXJyb3IoKSA9ICV1IiwgZmlsZVBhdGguYXNjaWkoKS5kYXRh
KCksIGxhc3RFcnJvcik7CiAKICAgICBDbG9zZUhhbmRsZShmaWxlSGFuZGxlKTsKLSAgICByZXR1
cm4gcmVzdWx0LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAKaW5kZXggYmM5MGM5NGZkMjY5M2MzZGIy
MGM0MGIwNjgzZGUyMzdiZTYxZWViYy4uMjc2ZjVhNDY4MzQ4ZDg1ZTUxNzU5MDZkZTM0MmVkYzc2
OTUwZTZkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvd2luL1dlYkZyYW1lLmNwcApAQCAtNjE0LDcgKzYxNCw3IEBAIEhSRVNV
TFQgV2ViRnJhbWU6OmxvYWRQbGFpblRleHRTdHJpbmcoX0luXyBCU1RSIHBsYWluVGV4dCwgX0lu
XyBCU1RSIHVybCkKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzaGFyZWRCdWZmZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PGNoYXIqPihwbGFpblRleHQpLCBzaXpl
b2YoVUNoYXIpICogU3lzU3RyaW5nTGVuKHBsYWluVGV4dCkpOwogICAgIEJTdHJpbmcgcGxhaW5U
ZXh0TWltZVR5cGUoVEVYVCgidGV4dC9wbGFpbiIpLCAxMCk7CiAgICAgQlN0cmluZyB1dGYxNkVu
Y29kaW5nKFRFWFQoInV0Zi0xNiIpLCA2KTsKLSAgICBsb2FkRGF0YShzaGFyZWRCdWZmZXIucmVs
ZWFzZSgpLCBwbGFpblRleHRNaW1lVHlwZSwgdXRmMTZFbmNvZGluZywgdXJsLCBudWxscHRyKTsK
KyAgICBsb2FkRGF0YShXVEZNb3ZlKHNoYXJlZEJ1ZmZlciksIHBsYWluVGV4dE1pbWVUeXBlLCB1
dGYxNkVuY29kaW5nLCB1cmwsIG51bGxwdHIpOwogICAgIHJldHVybiBTX09LOwogfQogCkBAIC02
MjIsNyArNjIyLDcgQEAgdm9pZCBXZWJGcmFtZTo6bG9hZEhUTUxTdHJpbmcoX0luXyBCU1RSIGh0
bWxTdHJpbmcsIF9Jbl8gQlNUUiBiYXNlVVJMLCBfSW5fIEJTVFIKIHsKICAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZWludGVycHJl
dF9jYXN0PGNoYXIqPihodG1sU3RyaW5nKSwgc2l6ZW9mKFVDaGFyKSAqIFN5c1N0cmluZ0xlbiho
dG1sU3RyaW5nKSk7CiAgICAgQlN0cmluZyB1dGYxNkVuY29kaW5nKFRFWFQoInV0Zi0xNiIpLCA2
KTsKLSAgICBsb2FkRGF0YShzaGFyZWRCdWZmZXIucmVsZWFzZSgpLCAwLCB1dGYxNkVuY29kaW5n
LCBiYXNlVVJMLCB1bnJlYWNoYWJsZVVSTCk7CisgICAgbG9hZERhdGEoV1RGTW92ZShzaGFyZWRC
dWZmZXIpLCAwLCB1dGYxNkVuY29kaW5nLCBiYXNlVVJMLCB1bnJlYWNoYWJsZVVSTCk7CiB9CiAK
IEhSRVNVTFQgV2ViRnJhbWU6OmxvYWRIVE1MU3RyaW5nKF9Jbl8gQlNUUiBodG1sU3RyaW5nLCBf
SW5fIEJTVFIgYmFzZVVSTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkZyYW1l
UG9saWN5TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViRnJhbWVQb2xpY3lMaXN0
ZW5lci5jcHAKaW5kZXggMmQ2ZjY5ZWE0NWM0Y2MyNjc2MzYwNDQ1ODFlMDM0YTczMDU0NzcwZC4u
MDUyNzA5NmE4M2ExMTc3MzdhYmQxZmNlMDZlODQ0YWYwZjExN2U2NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC93aW4vV2ViRnJhbWVQb2xpY3lMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC93aW4vV2ViRnJhbWVQb2xpY3lMaXN0ZW5lci5jcHAKQEAgLTEyMCw3ICsxMjAsNyBAQCBI
UkVTVUxUIFdlYkZyYW1lUG9saWN5TGlzdGVuZXI6OmNvbnRpbnVlU3VibWl0KCkKIC8vIFdlYkZy
YW1lUG9saWN5TGlzdGVuZXIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogdm9pZCBXZWJGcmFtZVBvbGljeUxpc3RlbmVyOjpy
ZWNlaXZlZFBvbGljeURlY2lzaW9uKFBvbGljeUFjdGlvbiBhY3Rpb24pCiB7Ci0gICAgUmVmUHRy
PEZyYW1lPiBmcmFtZSA9IG1fZnJhbWUucmVsZWFzZSgpOworICAgIFJlZlB0cjxGcmFtZT4gZnJh
bWUgPSBXVEZNb3ZlKG1fZnJhbWUpOwogICAgIGlmIChmcmFtZSkKICAgICAgICAgc3RhdGljX2Nh
c3Q8V2ViRnJhbWVMb2FkZXJDbGllbnQmPihmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkpLnJlY2Vp
dmVkUG9saWN5RGVjaXNpb24oYWN0aW9uKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtL3VuaXgvU2hhcmVkTWVtb3J5VW5peC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0
Zm9ybS91bml4L1NoYXJlZE1lbW9yeVVuaXguY3BwCmluZGV4IGMyNDYzMTJmOWI3ZTdjZjc4YzM2
MmE3ZmUyYzE4ZDc2YmYzNTBlZDIuLmRhMzU1NjBhMGUzM2M0Yjk5OTMzYWY5MTJjN2I5NTkyZjkz
ZGM4ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL3VuaXgvU2hhcmVkTWVt
b3J5VW5peC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vdW5peC9TaGFyZWRNZW1v
cnlVbml4LmNwcApAQCAtMTIyLDE0ICsxMjIsMTQgQEAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gU2hh
cmVkTWVtb3J5OjpjcmVhdGUodm9pZCogYWRkcmVzcywgc2l6ZV90IHNpemUsIFByb3RlY3Rpb24K
ICAgICB9CiAgICAgaWYgKGZpbGVEZXNjcmlwdG9yID09IC0xKSB7CiAgICAgICAgIFdURkxvZ0Fs
d2F5cygiRmFpbGVkIHRvIGNyZWF0ZSBzaGFyZWQgbWVtb3J5IGZpbGUgJXM6ICVzIiwgdGVtcE5h
bWUuZGF0YSgpLCBzdHJlcnJvcihlcnJubykpOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgfQogCiAgICAgd2hpbGUgKGZ0cnVuY2F0ZShmaWxlRGVzY3Jp
cHRvciwgc2l6ZSkgPT0gLTEpIHsKICAgICAgICAgaWYgKGVycm5vICE9IEVJTlRSKSB7CiAgICAg
ICAgICAgICBjbG9zZVdpdGhSZXRyeShmaWxlRGVzY3JpcHRvcik7CiAgICAgICAgICAgICBzaG1f
dW5saW5rKHRlbXBOYW1lLmRhdGEoKSk7Ci0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9CiAgICAgfQogCkBAIC0xMzcsNyArMTM3LDcg
QEAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gU2hhcmVkTWVtb3J5OjpjcmVhdGUodm9pZCogYWRkcmVz
cywgc2l6ZV90IHNpemUsIFByb3RlY3Rpb24KICAgICBpZiAoZGF0YSA9PSBNQVBfRkFJTEVEKSB7
CiAgICAgICAgIGNsb3NlV2l0aFJldHJ5KGZpbGVEZXNjcmlwdG9yKTsKICAgICAgICAgc2htX3Vu
bGluayh0ZW1wTmFtZS5kYXRhKCkpOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgfQogCiAgICAgc2htX3VubGluayh0ZW1wTmFtZS5kYXRhKCkpOwpAQCAt
MTQ2LDcgKzE0Niw3IEBAIFJlZlB0cjxTaGFyZWRNZW1vcnk+IFNoYXJlZE1lbW9yeTo6Y3JlYXRl
KHZvaWQqIGFkZHJlc3MsIHNpemVfdCBzaXplLCBQcm90ZWN0aW9uCiAgICAgaW5zdGFuY2UtPm1f
ZGF0YSA9IGRhdGE7CiAgICAgaW5zdGFuY2UtPm1fZmlsZURlc2NyaXB0b3IgPSBmaWxlRGVzY3Jp
cHRvcjsKICAgICBpbnN0YW5jZS0+bV9zaXplID0gc2l6ZTsKLSAgICByZXR1cm4gaW5zdGFuY2Uu
cmVsZWFzZSgpOworICAgIHJldHVybiBpbnN0YW5jZTsKIH0KIAogUmVmUHRyPFNoYXJlZE1lbW9y
eT4gU2hhcmVkTWVtb3J5OjphbGxvY2F0ZShzaXplX3Qgc2l6ZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NT
Y2VuZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29y
ZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwCmluZGV4IGNmZWYzZjIwOWIyZWFhZmY1ZDdjMzQwYjNj
YTM3NGMwZTVmNTlmNWUuLjM0OTY4NjJkOTkzYWVhN2U2YjFkM2U1MDJlMTgxMTk0NWNkMjQyNDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nv
b3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcApAQCAtNDYzLDgg
KzQ2Myw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpzeW5jSW1hZ2VCYWNraW5n
cyhjb25zdCBDb29yZGluYXRlZEdyYXBoaWNzU3RhdGUmCiB2b2lkIENvb3JkaW5hdGVkR3JhcGhp
Y3NTY2VuZTo6Y3JlYXRlSW1hZ2VCYWNraW5nKENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQgaW1h
Z2VJRCkKIHsKICAgICBBU1NFUlQoIW1faW1hZ2VCYWNraW5ncy5jb250YWlucyhpbWFnZUlEKSk7
Ci0gICAgUmVmUHRyPENvb3JkaW5hdGVkQmFja2luZ1N0b3JlPiBiYWNraW5nU3RvcmUoQ29vcmRp
bmF0ZWRCYWNraW5nU3RvcmU6OmNyZWF0ZSgpKTsKLSAgICBtX2ltYWdlQmFja2luZ3MuYWRkKGlt
YWdlSUQsIGJhY2tpbmdTdG9yZS5yZWxlYXNlKCkpOworICAgIG1faW1hZ2VCYWNraW5ncy5hZGQo
aW1hZ2VJRCwgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OmNyZWF0ZSgpKTsKIH0KIAogdm9pZCBD
b29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnVwZGF0ZUltYWdlQmFja2luZyhDb29yZGluYXRlZElt
YWdlQmFja2luZ0lEIGltYWdlSUQsIFJlZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+JiYgc3VyZmFj
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9jYWlyby9TaGFyZWFibGVCaXRt
YXBDYWlyby5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvY2Fpcm8vU2hhcmVhYmxlQml0bWFw
Q2Fpcm8uY3BwCmluZGV4IDMxNjgxZTVmZDNlNDE0ZmMyN2M2ZDdmYThhMWEzYTk0YmMwYzMzYmQu
LjIyMzljZWUzNzY4NTgyNzNhNjc4M2VmN2M4ODQ3OGUyODVkMWY1OGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9jYWlyby9TaGFyZWFibGVCaXRtYXBDYWlyby5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL2NhaXJvL1NoYXJlYWJsZUJpdG1hcENhaXJvLmNwcApAQCAt
NzksNyArNzksNyBAQCBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBTaGFyZWFibGVCaXRtYXA6OmNy
ZWF0ZUNhaXJvU3VyZmFjZSgpCiAgICAgcmVmKCk7IC8vIEJhbGFuY2VkIGJ5IGRlcmVmIGluIHJl
bGVhc2VTdXJmYWNlRGF0YS4KICAgICBzdGF0aWMgY2Fpcm9fdXNlcl9kYXRhX2tleV90IGRhdGFL
ZXk7CiAgICAgY2Fpcm9fc3VyZmFjZV9zZXRfdXNlcl9kYXRhKGltYWdlLmdldCgpLCAmZGF0YUtl
eSwgdGhpcywgcmVsZWFzZVN1cmZhY2VEYXRhKTsKLSAgICByZXR1cm4gaW1hZ2UucmVsZWFzZSgp
OworICAgIHJldHVybiBpbWFnZTsKIH0KIAogdm9pZCBTaGFyZWFibGVCaXRtYXA6OnJlbGVhc2VT
dXJmYWNlRGF0YSh2b2lkKiB0eXBlbGVzc0JpdG1hcCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NTm9kZUZp
bHRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9n
dGsvRE9NL1dlYktpdERPTU5vZGVGaWx0ZXIuY3BwCmluZGV4IDhmZTZlYzU1YzMyOTU3ZjIxZDRj
NjNkZmJkMWExYzk3ZGMxYjhjYzIuLjMxYzAyZDBmMzFiZWI5ZWYwNGU4NDljMjExNTA5NWFiMzJl
MmFkMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NTm9kZUZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01Ob2RlRmls
dGVyLmNwcApAQCAtNzcsNyArNzcsNyBAQCBSZWZQdHI8V2ViQ29yZTo6Tm9kZUZpbHRlcj4gY29y
ZShXZWJLaXRET01Ob2RlRmlsdGVyKiBub2RlRmlsdGVyKQogICAgICAgICBnX29iamVjdF93ZWFr
X3JlZihHX09CSkVDVChub2RlRmlsdGVyKSwgbm9kZUZpbHRlck9iamVjdERlc3Ryb3llZENhbGxi
YWNrLCBjb3JlTm9kZUZpbHRlci5nZXQoKSk7CiAgICAgICAgIGdfb2JqZWN0X3NldF9kYXRhKEdf
T0JKRUNUKG5vZGVGaWx0ZXIpLCAid2Via2l0LWNvcmUtbm9kZS1maWx0ZXIiLCBjb3JlTm9kZUZp
bHRlci5nZXQoKSk7CiAgICAgfQotICAgIHJldHVybiBjb3JlTm9kZUZpbHRlci5yZWxlYXNlKCk7
CisgICAgcmV0dXJuIGNvcmVOb2RlRmlsdGVyOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA1
YzZkOTkwZDIzNDNiMzE2ZGI5YTk5YWJjZjU2NWU5MzUzZmEyMTE2Li4xMGFiMjFiZGMyMThkYjc1
ZTg1NzAxZjA5MTQzYjlkYzEyYzJhNzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0yODcwLDEyICsyODcwLDExIEBAIHZvaWQgV2ViUGFn
ZTo6Z2V0Q29udGVudHNBc1N0cmluZyh1aW50NjRfdCBjYWxsYmFja0lEKQogI2lmIEVOQUJMRShN
SFRNTCkKIHZvaWQgV2ViUGFnZTo6Z2V0Q29udGVudHNBc01IVE1MRGF0YSh1aW50NjRfdCBjYWxs
YmFja0lEKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IE1IVE1MQXJjaGl2
ZTo6Z2VuZXJhdGVNSFRNTERhdGEobV9wYWdlLmdldCgpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IE1I
VE1MQXJjaGl2ZTo6Z2VuZXJhdGVNSFRNTERhdGEobV9wYWdlLmdldCgpKTsKIAogICAgIC8vIEZJ
WE1FOiBVc2UgU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS4KICAgICBJUEM6OkRhdGFSZWZlcmVu
Y2UgZGF0YVJlZmVyZW5jZTsKLSAgICBpZiAoYnVmZmVyKQotICAgICAgICBkYXRhUmVmZXJlbmNl
ID0gSVBDOjpEYXRhUmVmZXJlbmNlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGJ1
ZmZlci0+ZGF0YSgpKSwgYnVmZmVyLT5zaXplKCkpOworICAgIGRhdGFSZWZlcmVuY2UgPSBJUEM6
OkRhdGFSZWZlcmVuY2UocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oYnVmZmVyLT5k
YXRhKCkpLCBidWZmZXItPnNpemUoKSk7CiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpEYXRhQ2FsbGJhY2soZGF0YVJlZmVyZW5jZSwgY2FsbGJhY2tJRCkpOwogfQogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMTBmZWEw
MTA4NWJlNGMwOGVlNmJlOTFjZmRmNTgyYmY2OGE3NTIxYy4uMzAyMGYzZDJjNDAwNWIyYjdhMmZi
YWUyOTcyYjU5ZGQxZWE5NWU3ZiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rv
b2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE3LTA1LTEzICBDaHJpcyBEdW1leiAg
PGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgU3RvcCB1c2luZyBSZWZQdHI6OnJlbGVhc2Uo
KQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcyMDc0
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9SZWZQdHIuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
VEVTVCk6CisKIDIwMTctMDUtMTIgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Vi
a2l0Lm9yZz4KIAogICAgICAgICBSZW5hbWUgV0tDb250ZW50RXh0ZW5zaW9uIHRvIFdLQ29udGVu
dFJ1bGVMaXN0CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SZWZQ
dHIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUmVmUHRyLmNwcAppbmRleCAx
NzJlZmE3NjI3YzZmNTBjMGU5M2VjYzBjNzQ5ZGY3Y2UwNjFmOTFlLi45NWY5N2Q4ZGE3OWRhMWY3
YjJkZjAxMjg1MmUyYzE5MWQ3NzIxMmVhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dURi9SZWZQdHIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L1JlZlB0ci5jcHAKQEAgLTEwOCwxNCArMTA4LDYgQEAgVEVTVChXVEZfUmVmUHRyLCBCYXNpYykK
ICAgICAgICAgQVNTRVJUX0VRKG51bGxwdHIsIHB0ci5nZXQoKSk7CiAgICAgfQogICAgIEFTU0VS
VF9TVFJFUSgicmVmKGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKLQotICAg
IHsKLSAgICAgICAgUmVmUHRyPFJlZkxvZ2dlcj4gcHRyKCZhKTsKLSAgICAgICAgQVNTRVJUX0VR
KCZhLCBwdHIuZ2V0KCkpOwotICAgICAgICBwdHIucmVsZWFzZSgpOwotICAgICAgICBBU1NFUlRf
RVEobnVsbHB0ciwgcHRyLmdldCgpKTsKLSAgICB9Ci0gICAgQVNTRVJUX1NUUkVRKCJyZWYoYSkg
ZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogfQogCiBURVNUKFdURl9SZWZQdHIs
IEFzc2lnblBhc3NSZWZUb1JlZlB0cikKQEAgLTEyNSw4ICsxMTcsNiBAQCBURVNUKFdURl9SZWZQ
dHIsIEFzc2lnblBhc3NSZWZUb1JlZlB0cikKICAgICAgICAgUmVmPFJlZkxvZ2dlcj4gcGFzc1Jl
ZihhKTsKICAgICAgICAgUmVmUHRyPFJlZkxvZ2dlcj4gcHRyID0gV1RGTW92ZShwYXNzUmVmKTsK
ICAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIuZ2V0KCkpOwotICAgICAgICBwdHIucmVsZWFzZSgp
OwotICAgICAgICBBU1NFUlRfRVEobnVsbHB0ciwgcHRyLmdldCgpKTsKICAgICB9CiAgICAgQVNT
RVJUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogfQpA
QCAtMzM2LDcgKzMyNiw3IEBAIFRFU1QoV1RGX1JlZlB0ciwgUmVsZWFzZSkKIAogICAgIHsKICAg
ICAgICAgUmVmUHRyPFJlZkxvZ2dlcj4gcDEgPSAmYTsKLSAgICAgICAgUmVmUHRyPFJlZkxvZ2dl
cj4gcDIgPSBwMS5yZWxlYXNlKCk7CisgICAgICAgIFJlZlB0cjxSZWZMb2dnZXI+IHAyID0gV1RG
TW92ZShwMSk7CiAgICAgICAgIEFTU0VSVF9FUShudWxscHRyLCBwMS5nZXQoKSk7CiAgICAgICAg
IEFTU0VSVF9FUSgmYSwgcDIuZ2V0KCkpOwogICAgIH0KQEAgLTM0NCw3ICszMzQsNyBAQCBURVNU
KFdURl9SZWZQdHIsIFJlbGVhc2UpCiAKICAgICB7CiAgICAgICAgIFJlZlB0cjxSZWZMb2dnZXI+
IHAxID0gJmE7Ci0gICAgICAgIFJlZlB0cjxSZWZMb2dnZXI+IHAyKHAxLnJlbGVhc2UoKSk7Cisg
ICAgICAgIFJlZlB0cjxSZWZMb2dnZXI+IHAyKFdURk1vdmUocDEpKTsKICAgICAgICAgQVNTRVJU
X0VRKG51bGxwdHIsIHAxLmdldCgpKTsKICAgICAgICAgQVNTRVJUX0VRKCZhLCBwMi5nZXQoKSk7
CiAgICAgfQpAQCAtMzUyLDcgKzM0Miw3IEBAIFRFU1QoV1RGX1JlZlB0ciwgUmVsZWFzZSkKIAog
ICAgIHsKICAgICAgICAgUmVmUHRyPERlcml2ZWRSZWZMb2dnZXI+IHAxID0gJmE7Ci0gICAgICAg
IFJlZlB0cjxSZWZMb2dnZXI+IHAyID0gcDEucmVsZWFzZSgpOworICAgICAgICBSZWZQdHI8UmVm
TG9nZ2VyPiBwMiA9IFdURk1vdmUocDEpOwogICAgICAgICBBU1NFUlRfRVEobnVsbHB0ciwgcDEu
Z2V0KCkpOwogICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLmdldCgpKTsKICAgICB9CkBAIC0zNjQs
NyArMzU0LDcgQEAgVEVTVChXVEZfUmVmUHRyLCBSZWxlYXNlKQogICAgICAgICBBU1NFUlRfRVEo
JmEsIHAxLmdldCgpKTsKICAgICAgICAgQVNTRVJUX0VRKCZiLCBwMi5nZXQoKSk7CiAgICAgICAg
IGxvZygpIDw8ICJ8ICI7Ci0gICAgICAgIHAxID0gcDIucmVsZWFzZSgpOworICAgICAgICBwMSA9
IFdURk1vdmUocDIpOwogICAgICAgICBBU1NFUlRfRVEoJmIsIHAxLmdldCgpKTsKICAgICAgICAg
QVNTRVJUX0VRKG51bGxwdHIsIHAyLmdldCgpKTsKICAgICAgICAgbG9nKCkgPDwgInwgIjsKQEAg
LTM3Nyw3ICszNjcsNyBAQCBURVNUKFdURl9SZWZQdHIsIFJlbGVhc2UpCiAgICAgICAgIEFTU0VS
VF9FUSgmYSwgcDEuZ2V0KCkpOwogICAgICAgICBBU1NFUlRfRVEoJmMsIHAyLmdldCgpKTsKICAg
ICAgICAgbG9nKCkgPDwgInwgIjsKLSAgICAgICAgcDEgPSBwMi5yZWxlYXNlKCk7CisgICAgICAg
IHAxID0gV1RGTW92ZShwMik7CiAgICAgICAgIEFTU0VSVF9FUSgmYywgcDEuZ2V0KCkpOwogICAg
ICAgICBBU1NFUlRfRVEobnVsbHB0ciwgcDIuZ2V0KCkpOwogICAgICAgICBsb2coKSA8PCAifCAi
Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>