<?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>45058</bug_id>
          
          <creation_ts>2010-09-01 13:43:09 -0700</creation_ts>
          <short_desc>Move updateWidget implementations into the DOM</short_desc>
          <delta_ts>2010-09-02 21:28:44 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>45049</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Eric Seidel (no email)">eric</assigned_to>
          <cc>abarth</cc>
    
    <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>272982</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-09-01 13:43:09 -0700</bug_when>
    <thetext>Move updateWidget implementations into the DOM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272986</commentid>
    <comment_count>1</comment_count>
      <attachid>66259</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-09-01 13:47:16 -0700</bug_when>
    <thetext>Created attachment 66259
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272992</commentid>
    <comment_count>2</comment_count>
      <attachid>66259</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-09-01 13:54:43 -0700</bug_when>
    <thetext>Comment on attachment 66259
Patch

I approve.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>273344</commentid>
    <comment_count>3</comment_count>
      <attachid>66357</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-09-02 04:48:29 -0700</bug_when>
    <thetext>Created attachment 66357
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>273778</commentid>
    <comment_count>4</comment_count>
      <attachid>66357</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-09-02 21:28:39 -0700</bug_when>
    <thetext>Comment on attachment 66357
Patch for landing

Clearing flags on attachment: 66357

Committed r66710: &lt;http://trac.webkit.org/changeset/66710&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>273779</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-09-02 21:28:44 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>66259</attachid>
            <date>2010-09-01 13:47:16 -0700</date>
            <delta_ts>2010-09-02 04:48:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-45058-20100901134715.patch</filename>
            <type>text/plain</type>
            <size>18933</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NTljZTMzYjMzYzlkNGZlZGZlM2FkZjYwNWRmOGQwNTY0MGM1NWFjNi4uMzU4M2NiYjNjZmNjMmUx
MTZhMzdkYWM4NGYzNmIyYzdkNTJhYTI0YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTIsNiArMiw1MCBAQAogCiAgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgogCisgICAgICAgIE1vdmUgdXBkYXRlV2lkZ2V0IGltcGxl
bWVudGF0aW9ucyBpbnRvIHRoZSBET00KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTQ1MDU4CisKKyAgICAgICAgVW5mb3J0dW5hdGVseSBpdCdzIG5vdCB5
ZXQgcG9zc2libGUgdG8gc2hhcmUgYW4gdXBkYXRlV2lkZ2V0CisgICAgICAgIGltcGxlbWVudGF0
aW9uIGJldHdlZW4gPGVtYmVkPiBhbmQgPG9iamVjdD4uICBUaGF0IHdvdWxkIGFtb3VudCB0bwor
ICAgICAgICAocG9zaXRpdmUpIGZ1bmN0aW9uYWwgY2hhbmdlcyBmb3IgPGVtYmVkPiB3aGljaCBJ
J2Qgd2lsbCBzZXBhcmF0ZQorICAgICAgICBpbnRvIGEgbGF0ZXIgcGF0Y2guICBJIHdpbGwgYWxz
byBoYXZlIHRvIHVudGFuZ2xlIDxvYmplY3Q+J3MgPHBhcmFtPgorICAgICAgICB3YWxrIGZyb20g
aXRzIHVybC9zZXJ2aWNlVHlwZSBjYWxjdWxhdGlvbnMuCisKKyAgICAgICAgSG93ZXZlciBhZnRl
ciB0aGlzIHBhdGNoIGl0J3Mgc2xhcC15b3UtYWNyb3NzLXRoZS1mYWNlIG9idmlvdXMgdGhhdAor
ICAgICAgICBSZW5kZXJFbWJlZGRlZE9iamVjdDo6dXBkYXRlV2lkZ2V0IHdhcyB0aGUgd3Jvbmcg
cGxhY2UgZm9yIHRoaXMgY29kZS4KKyAgICAgICAgUmVuZGVyRW1iZWRkZWRPYmplY3Q6OnVwZGF0
ZVdpZGdldCBzdGlsbCBleGlzdHMsIGJ1dCBvbmx5IGFzIGEKKyAgICAgICAgcHNldWRvLXZpcnR1
YWwtbWV0aG9kIGRpc3BhdGNoZXIuICBVbmxlc3Mgd2UgYWRkIHVwZGF0ZVdpZGdldCgpIHRvCisg
ICAgICAgIEhUTUxFbGVtZW50LCB3ZSB3b24ndCBiZSBhYmxlIHRvIHVzZSByZWFsIHZpcnR1YWwg
ZGlzcGF0Y2guCisKKyAgICAgICAgSSBtYXkgbmVlZCB0byBjb25zaWRlciBtYWtpbmcgImhhdmlu
ZyBhIHdpZGdldCIgYSBoYXMtYSByZWxhdGlvbnNoaXAKKyAgICAgICAgd2l0aCBzb21lIHNvcnQg
b2YgV2lkZ2V0Q29udGFpbmVyIG9iamVjdCB3aGljaCBNZWRpYSBhbmQgUGx1Z2luIGNhbgorICAg
ICAgICBzaGFyZS4gIE9yIGl0cyBhbHNvIHBvc3NpYmxlIHRoYXQgTWVkaWEncyB1c2Ugb2YgdGhl
IHdpZGdldCBjb2RlIGhlcmUKKyAgICAgICAgaXMganVzdCB3cm9uZy4gIENlcnRhaW5seSBub3cg
dGhhdCB1cGRhdGVXaWRnZXQgd2FzIG1vdmVkIGludG8gSFRNTE1lZGlhRWxlbWVudAorICAgICAg
ICBpdCBiZWNvbWVzIG9idmlvdXMgdGhhdCBIVE1MTWVkaWFFbGVtZW50IGhhcyBkdXBsaWNhdGUg
Y29kZSBmb3IgdXBkYXRpbmcgd2lkZ2V0cy4KKworICAgICAgICBObyBmdW5jdGlvbmFsIGNoYW5n
ZXMsIHRodXMgbm8gdGVzdHMuCisKKyAgICAgICAgKiBodG1sL0hUTUxFbWJlZEVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVtYmVkRWxlbWVudDo6dXBkYXRlV2lkZ2V0KToKKyAg
ICAgICAgKiBodG1sL0hUTUxFbWJlZEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRp
YUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dXBkYXRl
V2lkZ2V0KToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKiBo
dG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxPYmplY3RF
bGVtZW50Ojp1cGRhdGVXaWRnZXQpOgorICAgICAgICAqIGh0bWwvSFRNTE9iamVjdEVsZW1lbnQu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxPYmplY3RFbGVtZW50Ojp1c2VGYWxsYmFja0NvbnRl
bnQpOgorICAgICAgICAqIGh0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFBsdWdJbkltYWdlRWxlbWVudDo6bmVlZHNXaWRnZXRVcGRhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbkltYWdlRWxlbWVudDo6c2V0TmVlZHNXaWRnZXRVcGRh
dGUpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVt
YmVkZGVkT2JqZWN0Ojp1cGRhdGVXaWRnZXQpOgorCisyMDEwLTA5LTAxICBFcmljIFNlaWRlbCAg
PGVyaWNAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KwogICAgICAgICBNb3ZlIG1vcmUgY29kZSBmcm9tIFJlbmRlckVtYmVkZGVkT2JqZWN0IGludG8g
dGhlIERPTQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NDUwNTUKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwIGIv
V2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwCmluZGV4IDlhNTIwNmY4MWVmMWQ0YTUz
N2I3Y2ZiNjA0YjRhOTlhNmVlZDdlMDMuLjlmNzIyNWQzNzc2MTU0ZmViMjI3MmIxYTk3NmFkMzZk
MmFlNDcyNGMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcAor
KysgYi9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHAKQEAgLTEzMyw2ICsxMzMsMzgg
QEAgdm9pZCBIVE1MRW1iZWRFbGVtZW50OjpwYXJhbWV0ZXJzRm9yUGx1Z2luKFZlY3RvcjxTdHJp
bmc+JiBwYXJhbU5hbWVzLCBWZWN0b3I8U3QKICAgICB9CiB9CiAKKy8vIEZJWE1FOiBUaGlzIHNo
b3VsZCBiZSB1bmlmaWVkIHdpdGggSFRNTE9iamVjdEVsZW1lbnQ6OnVwZGF0ZVdpZGdldCBhbmQK
Ky8vIG1vdmVkIGRvd24gaW50byBIVE1MUGx1Z2luSW1hZ2VFbGVtZW50LmNwcAordm9pZCBIVE1M
RW1iZWRFbGVtZW50Ojp1cGRhdGVXaWRnZXQoYm9vbCBvbmx5Q3JlYXRlTm9uTmV0c2NhcGVQbHVn
aW5zKQoreworICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgQVNTRVJUKG5lZWRzV2lkZ2V0VXBkYXRl
KCkpLCBidXQgY3VycmVudGx5CisgICAgLy8gRnJhbWVWaWV3Ojp1cGRhdGVXaWRnZXQoKSBjYWxs
cyB1cGRhdGVXaWRnZXQoZmFsc2UpIHdpdGhvdXQgY2hlY2tpbmcgaWYKKyAgICAvLyB0aGUgd2lk
Z2V0IGFjdHVhbGx5IG5lZWRzIHVwZGF0aW5nIQorICAgIHNldE5lZWRzV2lkZ2V0VXBkYXRlKGZh
bHNlKTsKKworICAgIGlmIChtX3VybC5pc0VtcHR5KCkgJiYgbV9zZXJ2aWNlVHlwZS5pc0VtcHR5
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIE5vdGUgdGhlc2UgcGFzcyBtX3VybCBhbmQg
bV9zZXJ2aWNlVHlwZSB0byBhbGxvdyBiZXR0ZXIgY29kZSBzaGFyaW5nIHdpdGgKKyAgICAvLyA8
b2JqZWN0PiB3aGljaCBtb2RpZmllcyB1cmwgYW5kIHNlcnZpY2VUeXBlIGJlZm9yZSBjYWxsaW5n
IHRoZXNlLgorICAgIGlmICghYWxsb3dlZFRvTG9hZEZyYW1lVVJMKG1fdXJsKSkKKyAgICAgICAg
cmV0dXJuOworICAgIGlmIChvbmx5Q3JlYXRlTm9uTmV0c2NhcGVQbHVnaW5zICYmIHdvdWxkTG9h
ZEFzTmV0c2NhcGVQbHVnaW4obV91cmwsIG1fc2VydmljZVR5cGUpKQorICAgICAgICByZXR1cm47
CisKKyAgICAvLyBGSVhNRTogVGhlc2Ugc2hvdWxkIGJlIGpvaW5lZCBpbnRvIGEgUGx1Z2luUGFy
YW1ldGVycyBjbGFzcy4KKyAgICBWZWN0b3I8U3RyaW5nPiBwYXJhbU5hbWVzOworICAgIFZlY3Rv
cjxTdHJpbmc+IHBhcmFtVmFsdWVzOworICAgIHBhcmFtZXRlcnNGb3JQbHVnaW4ocGFyYW1OYW1l
cywgcGFyYW1WYWx1ZXMpOworCisgICAgaWYgKCFkaXNwYXRjaEJlZm9yZUxvYWRFdmVudChtX3Vy
bCkpCisgICAgICAgIHJldHVybjsKKworICAgIFN1YmZyYW1lTG9hZGVyKiBsb2FkZXIgPSBkb2N1
bWVudCgpLT5mcmFtZSgpLT5sb2FkZXIoKS0+c3ViZnJhbWVMb2FkZXIoKTsKKyAgICAvLyBGSVhN
RTogYmVmb3JlTG9hZCBjb3VsZCBoYXZlIGRldGFjaGVkIHRoZSByZW5kZXJlciEgIEp1c3QgbGlr
ZSBpbiB0aGUgPG9iamVjdD4gY2FzZSBhYm92ZS4KKyAgICBsb2FkZXItPnJlcXVlc3RPYmplY3Qo
dGhpcywgbV91cmwsIGdldEF0dHJpYnV0ZShuYW1lQXR0ciksIG1fc2VydmljZVR5cGUsIHBhcmFt
TmFtZXMsIHBhcmFtVmFsdWVzKTsKK30KKwogYm9vbCBIVE1MRW1iZWRFbGVtZW50OjpyZW5kZXJl
cklzTmVlZGVkKFJlbmRlclN0eWxlKiBzdHlsZSkKIHsKICAgICBpZiAoaXNJbWFnZVR5cGUoKSkK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmggYi9XZWJDb3JlL2h0
bWwvSFRNTEVtYmVkRWxlbWVudC5oCmluZGV4IGQ0YTRkN2ZhN2ZmN2ZiYzNhNmZlMzA5NzBmMjE0
YjM5ZGQwNmJlN2QuLjBmYjdmNTAxNGFiYzI3N2RiZWVkMGVlMGMyMjA2OGU0N2Q0Nzk5YWQgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmgKKysrIGIvV2ViQ29yZS9o
dG1sL0hUTUxFbWJlZEVsZW1lbnQuaApAQCAtMzEsNyArMzEsNyBAQCBjbGFzcyBIVE1MRW1iZWRF
bGVtZW50IDogcHVibGljIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQgewogcHVibGljOgogICAgIHN0
YXRpYyBQYXNzUmVmUHRyPEhUTUxFbWJlZEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiwgRG9jdW1lbnQqLCBib29sIGNyZWF0ZWRCeVBhcnNlcik7CiAKLSAgICB2b2lkIHBhcmFt
ZXRlcnNGb3JQbHVnaW4oVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIFZlY3RvcjxTdHJpbmc+
JiBwYXJhbVZhbHVlcyk7CisgICAgdm9pZCB1cGRhdGVXaWRnZXQoYm9vbCBvbmx5Q3JlYXRlTm9u
TmV0c2NhcGVQbHVnaW5zKTsKIAogcHJpdmF0ZToKICAgICBIVE1MRW1iZWRFbGVtZW50KGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCosIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKTsKQEAgLTUw
LDYgKzUwLDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFJlbmRlcldpZGdldCogcmVuZGVyV2lk
Z2V0Rm9ySlNCaW5kaW5ncygpIGNvbnN0OwogCiAgICAgdmlydHVhbCB2b2lkIGFkZFN1YnJlc291
cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYpIGNvbnN0OworCisgICAgdm9pZCBw
YXJhbWV0ZXJzRm9yUGx1Z2luKFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBWZWN0b3I8U3Ry
aW5nPiYgcGFyYW1WYWx1ZXMpOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmlu
ZGV4IDhjODU4YzUzYThjMzNmNGZlYWNlMjdkMmZhZGE3ZjJhODhlMmYyOTQuLjQ2MjEwOTY3ZjIw
ZGVkOWFkMDM0YjNkZGMzMTc2YjA0M2MxNWM4ZjAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5j
cHAKQEAgLTIwMTAsNiArMjAxMCwyMCBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNyZWF0ZU1l
ZGlhUGxheWVyUHJveHkoKQogICAgIGlmIChtX3Byb3h5V2lkZ2V0KQogICAgICAgICBtX25lZWRX
aWRnZXRVcGRhdGUgPSBmYWxzZTsKIH0KKwordm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVX
aWRnZXQoYm9vbCkKK3sKKyAgICBtZWRpYUVsZW1lbnQtPnNldE5lZWRXaWRnZXRVcGRhdGUoZmFs
c2UpOworCisgICAgVmVjdG9yPFN0cmluZz4gcGFyYW1OYW1lczsKKyAgICBWZWN0b3I8U3RyaW5n
PiBwYXJhbVZhbHVlczsKKyAgICBLVVJMIGt1cmw7CisgICAgCisgICAgbWVkaWFFbGVtZW50LT5n
ZXRQbHVnaW5Qcm94eVBhcmFtcyhrdXJsLCBwYXJhbU5hbWVzLCBwYXJhbVZhbHVlcyk7CisgICAg
U3ViZnJhbWVMb2FkZXIqIGxvYWRlciA9IGRvY3VtZW50KCktPmZyYW1lKCktPmxvYWRlcigpLT5z
dWJmcmFtZUxvYWRlcigpOworICAgIGxvYWRlci0+bG9hZE1lZGlhUGxheWVyUHJveHlQbHVnaW4o
bWVkaWFFbGVtZW50LCBrdXJsLCBwYXJhbU5hbWVzLCBwYXJhbVZhbHVlcyk7Cit9CisKICNlbmRp
ZiAvLyBFTkFCTEUoUExVR0lOX1BST1hZX0ZPUl9WSURFTykKIAogdm9pZCBIVE1MTWVkaWFFbGVt
ZW50OjplbnRlckZ1bGxzY3JlZW4oKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuaCBiL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXggMzg5NWZl
MzFjZDJkY2QwNDdiMzZjMWNhMDA0NDlhNTEwM2UwNTJiNy4uYjU5NTYwNGRiMjE3YWRhMDU3Njll
NWFkNDRmZTQ4YTZjNjk2NWRlYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuaAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBAIC0xNTMsNiAr
MTUzLDcgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0UGx1Z2luUHJveHlQYXJhbXMoS1VSTCYgdXJs
LCBWZWN0b3I8U3RyaW5nPiYgbmFtZXMsIFZlY3RvcjxTdHJpbmc+JiB2YWx1ZXMpOwogICAgIHZp
cnR1YWwgdm9pZCBmaW5pc2hQYXJzaW5nQ2hpbGRyZW4oKTsKICAgICB2b2lkIGNyZWF0ZU1lZGlh
UGxheWVyUHJveHkoKTsKKyAgICB2b2lkIHVwZGF0ZVdpZGdldChib29sIG9ubHlDcmVhdGVOb25O
ZXRzY2FwZVBsdWdpbnMpOwogI2VuZGlmCiAKICAgICBib29sIGhhc1NpbmdsZVNlY3VyaXR5T3Jp
Z2luKCkgY29uc3QgeyByZXR1cm4gIW1fcGxheWVyIHx8IG1fcGxheWVyLT5oYXNTaW5nbGVTZWN1
cml0eU9yaWdpbigpOyB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1l
bnQuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcAppbmRleCBjZTQ2YmRj
MTI5M2RkM2QzY2I2NWExZmZmZGE1MjI4ZDVhOGUwMTlhLi5mMzM0ZjFiZDZlNWEyYTViYjZhZDVl
NjViOGI4OTI0NjI4YmUxNmQ0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVs
ZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAKQEAgLTIz
Niw2ICsyMzYsNTIgQEAgYm9vbCBIVE1MT2JqZWN0RWxlbWVudDo6aGFzRmFsbGJhY2tDb250ZW50
KCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKKy8vIEZJWE1FOiBUaGlzIHNob3VsZCBi
ZSB1bmlmaWVkIHdpdGggSFRNTEVtYmVkRWxlbWVudDo6dXBkYXRlV2lkZ2V0IGFuZAorLy8gbW92
ZWQgZG93biBpbnRvIEhUTUxQbHVnaW5JbWFnZUVsZW1lbnQuY3BwCit2b2lkIEhUTUxPYmplY3RF
bGVtZW50Ojp1cGRhdGVXaWRnZXQoYm9vbCBvbmx5Q3JlYXRlTm9uTmV0c2NhcGVQbHVnaW5zKQor
eworICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgQVNTRVJUKG5lZWRzV2lkZ2V0VXBkYXRlKCkpLCBi
dXQgY3VycmVudGx5CisgICAgLy8gRnJhbWVWaWV3Ojp1cGRhdGVXaWRnZXQoKSBjYWxscyB1cGRh
dGVXaWRnZXQoZmFsc2UpIHdpdGhvdXQgY2hlY2tpbmcgaWYKKyAgICAvLyB0aGUgd2lkZ2V0IGFj
dHVhbGx5IG5lZWRzIHVwZGF0aW5nIQorICAgIHNldE5lZWRzV2lkZ2V0VXBkYXRlKGZhbHNlKTsK
KyAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgQVNTRVJUIGlzRmluaXNoZWRQYXJzaW5nQ2hpbGRy
ZW4oKSBpbnN0ZWFkLgorICAgIGlmICghaXNGaW5pc2hlZFBhcnNpbmdDaGlsZHJlbigpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBTdHJpbmcgdXJsID0gdGhpcy0+dXJsKCk7CisgICAgU3RyaW5n
IHNlcnZpY2VUeXBlID0gdGhpcy0+c2VydmljZVR5cGUoKTsKKworICAgIC8vIEZJWE1FOiBUaGVz
ZSBzaG91bGQgYmUgam9pbmVkIGludG8gYSBQbHVnaW5QYXJhbWV0ZXJzIGNsYXNzLgorICAgIFZl
Y3RvcjxTdHJpbmc+IHBhcmFtTmFtZXM7CisgICAgVmVjdG9yPFN0cmluZz4gcGFyYW1WYWx1ZXM7
CisgICAgcGFyYW1ldGVyc0ZvclBsdWdpbihwYXJhbU5hbWVzLCBwYXJhbVZhbHVlcywgdXJsLCBz
ZXJ2aWNlVHlwZSk7CisKKyAgICAvLyBOb3RlOiB1cmwgaXMgbW9kaWZpZWQgYWJvdmUgYnkgcGFy
YW1ldGVyc0ZvclBsdWdpbi4KKyAgICBpZiAoIWFsbG93ZWRUb0xvYWRGcmFtZVVSTCh1cmwpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBib29sIGZhbGxiYWNrQ29udGVudCA9IGhhc0ZhbGxiYWNr
Q29udGVudCgpOworICAgIHJlbmRlckVtYmVkZGVkT2JqZWN0KCktPnNldEhhc0ZhbGxiYWNrQ29u
dGVudChmYWxsYmFja0NvbnRlbnQpOworCisgICAgaWYgKG9ubHlDcmVhdGVOb25OZXRzY2FwZVBs
dWdpbnMgJiYgd291bGRMb2FkQXNOZXRzY2FwZVBsdWdpbih1cmwsIHNlcnZpY2VUeXBlKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgYm9vbCBiZWZvcmVMb2FkQWxsb3dlZExvYWQgPSBkaXNwYXRj
aEJlZm9yZUxvYWRFdmVudCh1cmwpOworCisgICAgLy8gYmVmb3JlbG9hZCBldmVudHMgY2FuIG1v
ZGlmeSB0aGUgRE9NLCBwb3RlbnRpYWxseSBjYXVzaW5nCisgICAgLy8gUmVuZGVyV2lkZ2V0Ojpk
ZXN0cm95KCkgdG8gYmUgY2FsbGVkLiAgRW5zdXJlIHdlIGhhdmVuJ3QgYmVlbgorICAgIC8vIGRl
c3Ryb3llZCBiZWZvcmUgY29udGludWluZy4KKyAgICAvLyBGSVhNRTogU2hvdWxkIHRoaXMgcmVu
ZGVyIGZhbGxiYWNrIGNvbnRlbnQ/CisgICAgaWYgKCFyZW5kZXJlcigpKQorICAgICAgICByZXR1
cm47CisKKyAgICBTdWJmcmFtZUxvYWRlciogbG9hZGVyID0gZG9jdW1lbnQoKS0+ZnJhbWUoKS0+
bG9hZGVyKCktPnN1YmZyYW1lTG9hZGVyKCk7CisgICAgYm9vbCBzdWNjZXNzID0gYmVmb3JlTG9h
ZEFsbG93ZWRMb2FkICYmIGxvYWRlci0+cmVxdWVzdE9iamVjdCh0aGlzLCB1cmwsIGdldEF0dHJp
YnV0ZShuYW1lQXR0ciksIHNlcnZpY2VUeXBlLCBwYXJhbU5hbWVzLCBwYXJhbVZhbHVlcyk7CisK
KyAgICBpZiAoIXN1Y2Nlc3MgJiYgZmFsbGJhY2tDb250ZW50KQorICAgICAgICByZW5kZXJGYWxs
YmFja0NvbnRlbnQoKTsKK30KKwogYm9vbCBIVE1MT2JqZWN0RWxlbWVudDo6cmVuZGVyZXJJc05l
ZWRlZChSZW5kZXJTdHlsZSogc3R5bGUpCiB7CiAgICAgLy8gRklYTUU6IFRoaXMgY2hlY2sgc2hv
dWxkIG5vdCBiZSBuZWVkZWQsIGRldGFjaGVkIGRvY3VtZW50cyBuZXZlciByZW5kZXIhCmRpZmYg
LS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuaCBiL1dlYkNvcmUvaHRtbC9I
VE1MT2JqZWN0RWxlbWVudC5oCmluZGV4IGIxNDJlYzE5M2E2MzMzM2I0ZWQ0NDcxZjQ5YTdjMGQz
MDc5MTg4ZmQuLjY0MDRlYmIzNzIwNWJhZTQ4YWY5NmFkYmM2NTZiNzIyOTQ0MDc3YzggMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5oCisrKyBiL1dlYkNvcmUvaHRt
bC9IVE1MT2JqZWN0RWxlbWVudC5oCkBAIC0zMSwyMCArMzEsMTYgQEAgY2xhc3MgSFRNTE9iamVj
dEVsZW1lbnQgOiBwdWJsaWMgSFRNTFBsdWdJbkltYWdlRWxlbWVudCB7CiBwdWJsaWM6CiAgICAg
c3RhdGljIFBhc3NSZWZQdHI8SFRNTE9iamVjdEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiwgRG9jdW1lbnQqLCBib29sIGNyZWF0ZWRCeVBhcnNlcik7CiAKLSAgICB2b2lkIHJl
bmRlckZhbGxiYWNrQ29udGVudCgpOwotCiAgICAgYm9vbCBpc0RvY05hbWVkSXRlbSgpIGNvbnN0
IHsgcmV0dXJuIG1fZG9jTmFtZWRJdGVtOyB9CiAKICAgICBjb25zdCBTdHJpbmcmIGNsYXNzSWQo
KSBjb25zdCB7IHJldHVybiBtX2NsYXNzSWQ7IH0KIAogICAgIGJvb2wgY29udGFpbnNKYXZhQXBw
bGV0KCkgY29uc3Q7CiAKLSAgICBib29sIGhhc0ZhbGxiYWNrQ29udGVudCgpIGNvbnN0OwotICAg
IHZpcnR1YWwgYm9vbCB1c2VGYWxsYmFja0NvbnRlbnQoKSBjb25zdCB7IHJldHVybiBtX3VzZUZh
bGxiYWNrQ29udGVudDsgfQorICAgIHZvaWQgdXBkYXRlV2lkZ2V0KGJvb2wgb25seUNyZWF0ZU5v
bk5ldHNjYXBlUGx1Z2lucyk7CiAKLSAgICAvLyBGSVhNRTogVGhpcyBmdW5jdGlvbiBzaG91bGQg
bm90IGRlYWwgd2l0aCB1cmwgb3Igc2VydmljZVR5cGUKLSAgICAvLyBzbyB0aGF0IHdlIGNhbiBi
ZXR0ZXIgc2hhcmUgY29kZSBiZXR3ZWVuIDxvYmplY3Q+IGFuZCA8ZW1iZWQ+LgotICAgIHZvaWQg
cGFyYW1ldGVyc0ZvclBsdWdpbihWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgVmVjdG9yPFN0
cmluZz4mIHBhcmFtVmFsdWVzLCBTdHJpbmcmIHVybCwgU3RyaW5nJiBzZXJ2aWNlVHlwZSk7Cisg
ICAgdmlydHVhbCBib29sIHVzZUZhbGxiYWNrQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNl
RmFsbGJhY2tDb250ZW50OyB9CisgICAgdm9pZCByZW5kZXJGYWxsYmFja0NvbnRlbnQoKTsKIAog
cHJpdmF0ZToKICAgICBIVE1MT2JqZWN0RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9j
dW1lbnQqLCBib29sIGNyZWF0ZWRCeVBhcnNlcik7CkBAIC02Niw3ICs2MiwxMyBAQCBwcml2YXRl
OgogICAgIHZpcnR1YWwgdm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hT
ZXQ8S1VSTD4mKSBjb25zdDsKIAogICAgIHZvaWQgdXBkYXRlRG9jTmFtZWRJdGVtKCk7CisKKyAg
ICBib29sIGhhc0ZhbGxiYWNrQ29udGVudCgpIGNvbnN0OwogICAgIAorICAgIC8vIEZJWE1FOiBU
aGlzIGZ1bmN0aW9uIHNob3VsZCBub3QgZGVhbCB3aXRoIHVybCBvciBzZXJ2aWNlVHlwZQorICAg
IC8vIHNvIHRoYXQgd2UgY2FuIGJldHRlciBzaGFyZSBjb2RlIGJldHdlZW4gPG9iamVjdD4gYW5k
IDxlbWJlZD4uCisgICAgdm9pZCBwYXJhbWV0ZXJzRm9yUGx1Z2luKFZlY3RvcjxTdHJpbmc+JiBw
YXJhbU5hbWVzLCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMsIFN0cmluZyYgdXJsLCBTdHJp
bmcmIHNlcnZpY2VUeXBlKTsKKwogICAgIEF0b21pY1N0cmluZyBtX2lkOwogICAgIFN0cmluZyBt
X2NsYXNzSWQ7CiAgICAgYm9vbCBtX2RvY05hbWVkSXRlbSA6IDE7CmRpZmYgLS1naXQgYS9XZWJD
b3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oIGIvV2ViQ29yZS9odG1sL0hUTUxQbHVn
SW5JbWFnZUVsZW1lbnQuaAppbmRleCBiY2JlODUwM2NkNmE4N2NmZGE0OWY4N2UwZjhkNGY5MWZj
MDU1NDE3Li42YjAwODg5NDQxZTIyODdhMWM0OTBjNGY1MDFjMjE0MDYyZDAyYjg5IDEwMDY0NAot
LS0gYS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oCisrKyBiL1dlYkNvcmUv
aHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmgKQEAgLTM1LDE1ICszNSw4IEBAIHB1YmxpYzoK
ICAgICBjb25zdCBTdHJpbmcmIHNlcnZpY2VUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2aWNl
VHlwZTsgfQogICAgIGNvbnN0IFN0cmluZyYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0K
IAotCiAgICAgUmVuZGVyRW1iZWRkZWRPYmplY3QqIHJlbmRlckVtYmVkZGVkT2JqZWN0KCkgY29u
c3Q7CiAKLSAgICAvLyBUaGVzZSBjYW4gYWxsIG1vdmUgdG8gYmUgcHJvdGVjdGVkIG9uY2UgdXBk
YXRlV2lkZ2V0IGlzIG1vdmVkIG91dCBvZiBSZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAKLSAgICBi
b29sIG5lZWRzV2lkZ2V0VXBkYXRlKCkgY29uc3QgeyByZXR1cm4gbV9uZWVkc1dpZGdldFVwZGF0
ZTsgfQotICAgIHZvaWQgc2V0TmVlZHNXaWRnZXRVcGRhdGUoYm9vbCBuZWVkc1dpZGdldFVwZGF0
ZSkgeyBtX25lZWRzV2lkZ2V0VXBkYXRlID0gbmVlZHNXaWRnZXRVcGRhdGU7IH0KLSAgICBib29s
IGFsbG93ZWRUb0xvYWRGcmFtZVVSTChjb25zdCBTdHJpbmcmIHVybCk7Ci0gICAgYm9vbCB3b3Vs
ZExvYWRBc05ldHNjYXBlUGx1Z2luKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHNl
cnZpY2VUeXBlKTsKLQogcHJvdGVjdGVkOgogICAgIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqLCBib29sIGNyZWF0ZWRCeVBhcnNl
cik7CiAKQEAgLTU3LDYgKzUwLDEyIEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgYXR0
YWNoKCk7CiAgICAgdmlydHVhbCB2b2lkIGRldGFjaCgpOwogCisgICAgYm9vbCBuZWVkc1dpZGdl
dFVwZGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmVlZHNXaWRnZXRVcGRhdGU7IH0KKyAgICB2b2lk
IHNldE5lZWRzV2lkZ2V0VXBkYXRlKGJvb2wgbmVlZHNXaWRnZXRVcGRhdGUpIHsgbV9uZWVkc1dp
ZGdldFVwZGF0ZSA9IG5lZWRzV2lkZ2V0VXBkYXRlOyB9CisKKyAgICBib29sIGFsbG93ZWRUb0xv
YWRGcmFtZVVSTChjb25zdCBTdHJpbmcmIHVybCk7CisgICAgYm9vbCB3b3VsZExvYWRBc05ldHNj
YXBlUGx1Z2luKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHNlcnZpY2VUeXBlKTsK
KwogcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgY2FuTGF6eUF0dGFjaCgpIHsgcmV0dXJuIGZh
bHNlOyB9CiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFy
ZW5hKiwgUmVuZGVyU3R5bGUqKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcCBiL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRleCBiNDdhZTVhZjQ4
OTA2MzU1NTI4ZDhiYWE1ZGZlNzgyYWI2NGM1YmFkLi42YWU0ZjgxZmU5NzRhYTBjOTZlOWRlZGQy
ZjJiZmIyMzg3ZGI1M2MwIDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5j
cHAKKysrIGIvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC0xMDQyLDYgKzEwNDIs
NyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpzZXRPcGVuZXIoRnJhbWUqIG9wZW5lcikKICAgICB9CiB9
CiAKKy8vIEZJWE1FOiBUaGlzIGRvZXMgbm90IGJlbG9uZyBpbiBGcmFtZUxvYWRlciEKIHZvaWQg
RnJhbWVMb2FkZXI6OmhhbmRsZUZhbGxiYWNrQ29udGVudCgpCiB7CiAgICAgSFRNTEZyYW1lT3du
ZXJFbGVtZW50KiBvd25lciA9IG1fZnJhbWUtPm93bmVyRWxlbWVudCgpOwpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwIGIvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwCmluZGV4IDlmOGFjZmQwNzA4MGI5ODdjNWNl
MWFlMThhNmI3YTNjNjU1NWRmMWYuLjQzYzhkMjJhNDdhNjBlMTY1MTU3MzM5ZTYwOGZkZjgyZGM3
N2RhNjggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0
LmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAKQEAg
LTEwMSw5NSArMTAxLDggQEAgYm9vbCBSZW5kZXJFbWJlZGRlZE9iamVjdDo6YWxsb3dzQWNjZWxl
cmF0ZWRDb21wb3NpdGluZygpIGNvbnN0CiAgICAgcmV0dXJuIHdpZGdldCgpICYmIHdpZGdldCgp
LT5pc1BsdWdpblZpZXdCYXNlKCkgJiYgc3RhdGljX2Nhc3Q8UGx1Z2luVmlld0Jhc2UqPih3aWRn
ZXQoKSktPnBsYXRmb3JtTGF5ZXIoKTsKIH0KICNlbmRpZgotICAgIAotLy8gRklYTUU6IFRoaXMg
YmVsb25ncyBvbiBIVE1MT2JqZWN0RWxlbWVudCwgSFRNTFBsdWdpbkVsZW1lbnQgb3IgSFRNTEZy
YW1lT3duZXJFbGVtZW50Lgotc3RhdGljIHZvaWQgdXBkYXRlV2lkZ2V0Rm9yT2JqZWN0RWxlbWVu
dChIVE1MT2JqZWN0RWxlbWVudCogb2JqZWN0RWxlbWVudCwgYm9vbCBvbmx5Q3JlYXRlTm9uTmV0
c2NhcGVQbHVnaW5zKQotewotICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgQVNTRVJUKG9iamVjdEVs
ZW1lbnQtPm5lZWRzV2lkZ2V0VXBkYXRlKCkpLCBidXQgY3VycmVudGx5Ci0gICAgLy8gRnJhbWVW
aWV3Ojp1cGRhdGVXaWRnZXQoKSBjYWxscyB1cGRhdGVXaWRnZXQoZmFsc2UpIHdpdGhvdXQgY2hl
Y2tpbmcgaWYKLSAgICAvLyB0aGUgd2lkZ2V0IGFjdHVhbGx5IG5lZWRzIHVwZGF0aW5nIQotICAg
IG9iamVjdEVsZW1lbnQtPnNldE5lZWRzV2lkZ2V0VXBkYXRlKGZhbHNlKTsKLSAgICAvLyBGSVhN
RTogVGhpcyBzaG91bGQgQVNTRVJUIGlzRmluaXNoZWRQYXJzaW5nQ2hpbGRyZW4oKSBpbnN0ZWFk
LgotICAgIGlmICghb2JqZWN0RWxlbWVudC0+aXNGaW5pc2hlZFBhcnNpbmdDaGlsZHJlbigpKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBTdHJpbmcgdXJsID0gb2JqZWN0RWxlbWVudC0+dXJsKCk7
Ci0gICAgU3RyaW5nIHNlcnZpY2VUeXBlID0gb2JqZWN0RWxlbWVudC0+c2VydmljZVR5cGUoKTsK
LQotICAgIFZlY3RvcjxTdHJpbmc+IHBhcmFtTmFtZXM7Ci0gICAgVmVjdG9yPFN0cmluZz4gcGFy
YW1WYWx1ZXM7Ci0gICAgb2JqZWN0RWxlbWVudC0+cGFyYW1ldGVyc0ZvclBsdWdpbihwYXJhbU5h
bWVzLCBwYXJhbVZhbHVlcywgdXJsLCBzZXJ2aWNlVHlwZSk7Ci0KLSAgICAvLyBOb3RlOiB1cmwg
aXMgbW9kaWZpZWQgYWJvdmUgYnkgcGFyYW1ldGVyc0ZvclBsdWdpbi4KLSAgICBpZiAoIW9iamVj
dEVsZW1lbnQtPmFsbG93ZWRUb0xvYWRGcmFtZVVSTCh1cmwpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBib29sIGZhbGxiYWNrQ29udGVudCA9IG9iamVjdEVsZW1lbnQtPmhhc0ZhbGxiYWNrQ29u
dGVudCgpOwotICAgIG9iamVjdEVsZW1lbnQtPnJlbmRlckVtYmVkZGVkT2JqZWN0KCktPnNldEhh
c0ZhbGxiYWNrQ29udGVudChmYWxsYmFja0NvbnRlbnQpOwotCi0gICAgaWYgKG9ubHlDcmVhdGVO
b25OZXRzY2FwZVBsdWdpbnMgJiYgb2JqZWN0RWxlbWVudC0+d291bGRMb2FkQXNOZXRzY2FwZVBs
dWdpbih1cmwsIHNlcnZpY2VUeXBlKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYm9vbCBiZWZv
cmVMb2FkQWxsb3dlZExvYWQgPSBvYmplY3RFbGVtZW50LT5kaXNwYXRjaEJlZm9yZUxvYWRFdmVu
dCh1cmwpOwotCi0gICAgLy8gYmVmb3JlbG9hZCBldmVudHMgY2FuIG1vZGlmeSB0aGUgRE9NLCBw
b3RlbnRpYWxseSBjYXVzaW5nCi0gICAgLy8gUmVuZGVyV2lkZ2V0OjpkZXN0cm95KCkgdG8gYmUg
Y2FsbGVkLiAgRW5zdXJlIHdlIGhhdmVuJ3QgYmVlbgotICAgIC8vIGRlc3Ryb3llZCBiZWZvcmUg
Y29udGludWluZy4KLSAgICAvLyBGSVhNRTogU2hvdWxkIHRoaXMgcmVuZGVyIGZhbGxiYWNrIGNv
bnRlbnQ/Ci0gICAgaWYgKCFvYmplY3RFbGVtZW50LT5yZW5kZXJlcigpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBTdWJmcmFtZUxvYWRlciogbG9hZGVyID0gb2JqZWN0RWxlbWVudC0+ZG9jdW1l
bnQoKS0+ZnJhbWUoKS0+bG9hZGVyKCktPnN1YmZyYW1lTG9hZGVyKCk7Ci0gICAgYm9vbCBzdWNj
ZXNzID0gYmVmb3JlTG9hZEFsbG93ZWRMb2FkICYmIGxvYWRlci0+cmVxdWVzdE9iamVjdChvYmpl
Y3RFbGVtZW50LCB1cmwsIG9iamVjdEVsZW1lbnQtPmdldEF0dHJpYnV0ZShuYW1lQXR0ciksIHNl
cnZpY2VUeXBlLCBwYXJhbU5hbWVzLCBwYXJhbVZhbHVlcyk7Ci0KLSAgICBpZiAoIXN1Y2Nlc3Mg
JiYgZmFsbGJhY2tDb250ZW50KQotICAgICAgICBvYmplY3RFbGVtZW50LT5yZW5kZXJGYWxsYmFj
a0NvbnRlbnQoKTsKLX0KLQotLy8gRklYTUU6IFRoaXMgYmVsb25ncyBvbiBIVE1MRW1iZWRFbGVt
ZW50LCBIVE1MUGx1Z2luRWxlbWVudCBvciBIVE1MRnJhbWVPd25lckVsZW1lbnQuCi1zdGF0aWMg
dm9pZCB1cGRhdGVXaWRnZXRGb3JFbWJlZEVsZW1lbnQoSFRNTEVtYmVkRWxlbWVudCogZW1iZWRF
bGVtZW50LCBib29sIG9ubHlDcmVhdGVOb25OZXRzY2FwZVBsdWdpbnMpCi17Ci0gICAgLy8gRklY
TUU6IFdlIHNob3VsZCBBU1NFUlQoZW1iZWRFbGVtZW50LT5uZWVkc1dpZGdldFVwZGF0ZSgpKSwg
YnV0IGN1cnJlbnRseQotICAgIC8vIEZyYW1lVmlldzo6dXBkYXRlV2lkZ2V0KCkgY2FsbHMgdXBk
YXRlV2lkZ2V0KGZhbHNlKSB3aXRob3V0IGNoZWNraW5nIGlmCi0gICAgLy8gdGhlIHdpZGdldCBh
Y3R1YWxseSBuZWVkcyB1cGRhdGluZyEKLSAgICBlbWJlZEVsZW1lbnQtPnNldE5lZWRzV2lkZ2V0
VXBkYXRlKGZhbHNlKTsKLQotICAgIFN0cmluZyB1cmwgPSBlbWJlZEVsZW1lbnQtPnVybCgpOwot
ICAgIFN0cmluZyBzZXJ2aWNlVHlwZSA9IGVtYmVkRWxlbWVudC0+c2VydmljZVR5cGUoKTsKLSAg
ICBpZiAodXJsLmlzRW1wdHkoKSAmJiBzZXJ2aWNlVHlwZS5pc0VtcHR5KCkpCi0gICAgICAgIHJl
dHVybjsKLSAgICBpZiAoIWVtYmVkRWxlbWVudC0+YWxsb3dlZFRvTG9hZEZyYW1lVVJMKHVybCkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChvbmx5Q3JlYXRlTm9uTmV0c2NhcGVQbHVnaW5z
ICYmIGVtYmVkRWxlbWVudC0+d291bGRMb2FkQXNOZXRzY2FwZVBsdWdpbih1cmwsIHNlcnZpY2VU
eXBlKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgVmVjdG9yPFN0cmluZz4gcGFyYW1OYW1lczsK
LSAgICBWZWN0b3I8U3RyaW5nPiBwYXJhbVZhbHVlczsKLSAgICBlbWJlZEVsZW1lbnQtPnBhcmFt
ZXRlcnNGb3JQbHVnaW4ocGFyYW1OYW1lcywgcGFyYW1WYWx1ZXMpOwotCi0gICAgaWYgKCFlbWJl
ZEVsZW1lbnQtPmRpc3BhdGNoQmVmb3JlTG9hZEV2ZW50KHVybCkpCi0gICAgICAgIHJldHVybjsK
LQotICAgIFN1YmZyYW1lTG9hZGVyKiBsb2FkZXIgPSBlbWJlZEVsZW1lbnQtPmRvY3VtZW50KCkt
PmZyYW1lKCktPmxvYWRlcigpLT5zdWJmcmFtZUxvYWRlcigpOwotICAgIC8vIEZJWE1FOiBiZWZv
cmVMb2FkIGNvdWxkIGhhdmUgZGV0YWNoZWQgdGhlIHJlbmRlcmVyISAgSnVzdCBsaWtlIGluIHRo
ZSA8b2JqZWN0PiBjYXNlIGFib3ZlLgotICAgIGxvYWRlci0+cmVxdWVzdE9iamVjdChlbWJlZEVs
ZW1lbnQsIHVybCwgZW1iZWRFbGVtZW50LT5nZXRBdHRyaWJ1dGUobmFtZUF0dHIpLCBzZXJ2aWNl
VHlwZSwgcGFyYW1OYW1lcywgcGFyYW1WYWx1ZXMpOwotfQotCi0jaWYgRU5BQkxFKFBMVUdJTl9Q
Uk9YWV9GT1JfVklERU8pCi0vLyBGSVhNRTogVGhpcyBiZWxvbmdzIG9uIEhUTUxNZWRpYUVsZW1l
bnQuCi1zdGF0aWMgdm9pZCB1cGRhdGVXaWRnZXRGb3JNZWRpYUVsZW1lbnQoSFRNTE1lZGlhRWxl
bWVudCogbWVkaWFFbGVtZW50LCBib29sIGlnbm9yZWQpCi17Ci0gICAgVmVjdG9yPFN0cmluZz4g
cGFyYW1OYW1lczsKLSAgICBWZWN0b3I8U3RyaW5nPiBwYXJhbVZhbHVlczsKLSAgICBLVVJMIGt1
cmw7Ci0KLSAgICBtZWRpYUVsZW1lbnQtPmdldFBsdWdpblByb3h5UGFyYW1zKGt1cmwsIHBhcmFt
TmFtZXMsIHBhcmFtVmFsdWVzKTsKLSAgICBtZWRpYUVsZW1lbnQtPnNldE5lZWRXaWRnZXRVcGRh
dGUoZmFsc2UpOwotICAgIGZyYW1lLT5sb2FkZXIoKS0+c3ViZnJhbWVMb2FkZXIoKS0+bG9hZE1l
ZGlhUGxheWVyUHJveHlQbHVnaW4obWVkaWFFbGVtZW50LCBrdXJsLCBwYXJhbU5hbWVzLCBwYXJh
bVZhbHVlcyk7Ci19Ci0jZW5kaWYKIAorLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIG1vdmVkIGlu
dG8gRnJhbWVWaWV3ICh0aGUgb25seSBjYWxsZXIpCiB2b2lkIFJlbmRlckVtYmVkZGVkT2JqZWN0
Ojp1cGRhdGVXaWRnZXQoYm9vbCBvbmx5Q3JlYXRlTm9uTmV0c2NhcGVQbHVnaW5zKQogewogICAg
IGlmICghbV9yZXBsYWNlbWVudFRleHQuaXNOdWxsKCkgfHwgIW5vZGUoKSkgLy8gQ2hlY2sgdGhl
IG5vZGUgaW4gY2FzZSBkZXN0cm95KCkgaGFzIGJlZW4gY2FsbGVkLgpAQCAtMjAxLDE4ICsxMTQs
MTMgQEAgdm9pZCBSZW5kZXJFbWJlZGRlZE9iamVjdDo6dXBkYXRlV2lkZ2V0KGJvb2wgb25seUNy
ZWF0ZU5vbk5ldHNjYXBlUGx1Z2lucykKICAgICAvLyBhcnRpZmljYWxseSB0byBlbnN1cmUgdGhh
dCB3ZSByZW1haW4gYWxpdmUgZm9yIHRoZSBkdXJhdGlvbiBvZiBwbHVnLWluIGluaXRpYWxpemF0
aW9uLgogICAgIFJlbmRlcldpZGdldFByb3RlY3RvciBwcm90ZWN0b3IodGhpcyk7CiAKLSAgICBp
ZiAobm9kZSgpLT5oYXNUYWdOYW1lKG9iamVjdFRhZykpIHsKLSAgICAgICAgSFRNTE9iamVjdEVs
ZW1lbnQqIG9iamVjdEVsZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MT2JqZWN0RWxlbWVudCo+KG5v
ZGUoKSk7Ci0gICAgICAgIHVwZGF0ZVdpZGdldEZvck9iamVjdEVsZW1lbnQob2JqZWN0RWxlbWVu
dCwgb25seUNyZWF0ZU5vbk5ldHNjYXBlUGx1Z2lucyk7Ci0gICAgfSBlbHNlIGlmIChub2RlKCkt
Pmhhc1RhZ05hbWUoZW1iZWRUYWcpKSB7Ci0gICAgICAgIEhUTUxFbWJlZEVsZW1lbnQqIGVtYmVk
RWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxFbWJlZEVsZW1lbnQqPihub2RlKCkpOwotICAgICAg
ICB1cGRhdGVXaWRnZXRGb3JFbWJlZEVsZW1lbnQoZW1iZWRFbGVtZW50LCBvbmx5Q3JlYXRlTm9u
TmV0c2NhcGVQbHVnaW5zKTsKLSAgICB9CisgICAgaWYgKG5vZGUoKS0+aGFzVGFnTmFtZShvYmpl
Y3RUYWcpKQorICAgICAgICBzdGF0aWNfY2FzdDxIVE1MT2JqZWN0RWxlbWVudCo+KG5vZGUoKSkt
PnVwZGF0ZVdpZGdldChvbmx5Q3JlYXRlTm9uTmV0c2NhcGVQbHVnaW5zKTsKKyAgICBlbHNlIGlm
IChub2RlKCktPmhhc1RhZ05hbWUoZW1iZWRUYWcpKQorICAgICAgICBzdGF0aWNfY2FzdDxIVE1M
RW1iZWRFbGVtZW50Kj4obm9kZSgpKS0+dXBkYXRlV2lkZ2V0KG9ubHlDcmVhdGVOb25OZXRzY2Fw
ZVBsdWdpbnMpOwogI2lmIEVOQUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJREVPKSAgICAgICAgCi0g
ICAgZWxzZSBpZiAobm9kZSgpLT5oYXNUYWdOYW1lKHZpZGVvVGFnKSB8fCBub2RlKCktPmhhc1Rh
Z05hbWUoYXVkaW9UYWcpKSB7Ci0gICAgICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVu
dCA9IHN0YXRpY19jYXN0PEhUTUxNZWRpYUVsZW1lbnQqPihub2RlKCkpOwotICAgICAgICB1cGRh
dGVXaWRnZXRGb3JNZWRpYUVsZW1lbnQobWVkaWFFbGVtZW50LCBvbmx5Q3JlYXRlTm9uTmV0c2Nh
cGVQbHVnaW5zKTsKLSAgICB9CisgICAgZWxzZSBpZiAobm9kZSgpLT5oYXNUYWdOYW1lKHZpZGVv
VGFnKSB8fCBub2RlKCktPmhhc1RhZ05hbWUoYXVkaW9UYWcpKQorICAgICAgICBzdGF0aWNfY2Fz
dDxIVE1MTWVkaWFFbGVtZW50Kj4obm9kZSgpKS0+dXBkYXRlV2lkZ2V0KG9ubHlDcmVhdGVOb25O
ZXRzY2FwZVBsdWdpbnMpOwogI2VuZGlmCiAgICAgZWxzZQogICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>66357</attachid>
            <date>2010-09-02 04:48:29 -0700</date>
            <delta_ts>2010-09-02 21:28:39 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-45058-20100902044828.patch</filename>
            <type>text/plain</type>
            <size>18766</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MzdkMDYzNzUxNzIzYjllZGY0YTUyNDM1ZTEzYTNkZDZjMTJlNjY2OS4uODRlNGQyYWViNmRjNzAw
NDc1NzY2ZGM1MjY5ZmNhMGZhZDhkYjc4ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTIsNiArMiw1MCBAQAogCiAgICAgICAgIFJldmll
d2VkIGJ5IERpbWl0cmkgR2xhemtvdi4KIAorICAgICAgICBNb3ZlIHVwZGF0ZVdpZGdldCBpbXBs
ZW1lbnRhdGlvbnMgaW50byB0aGUgRE9NCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD00NTA1OAorCisgICAgICAgIFVuZm9ydHVuYXRlbHkgaXQncyBub3Qg
eWV0IHBvc3NpYmxlIHRvIHNoYXJlIGFuIHVwZGF0ZVdpZGdldAorICAgICAgICBpbXBsZW1lbnRh
dGlvbiBiZXR3ZWVuIDxlbWJlZD4gYW5kIDxvYmplY3Q+LiAgVGhhdCB3b3VsZCBhbW91bnQgdG8K
KyAgICAgICAgKHBvc2l0aXZlKSBmdW5jdGlvbmFsIGNoYW5nZXMgZm9yIDxlbWJlZD4gd2hpY2gg
SSdkIHdpbGwgc2VwYXJhdGUKKyAgICAgICAgaW50byBhIGxhdGVyIHBhdGNoLiAgSSB3aWxsIGFs
c28gaGF2ZSB0byB1bnRhbmdsZSA8b2JqZWN0PidzIDxwYXJhbT4KKyAgICAgICAgd2FsayBmcm9t
IGl0cyB1cmwvc2VydmljZVR5cGUgY2FsY3VsYXRpb25zLgorCisgICAgICAgIEhvd2V2ZXIgYWZ0
ZXIgdGhpcyBwYXRjaCBpdCdzIHNsYXAteW91LWFjcm9zcy10aGUtZmFjZSBvYnZpb3VzIHRoYXQK
KyAgICAgICAgUmVuZGVyRW1iZWRkZWRPYmplY3Q6OnVwZGF0ZVdpZGdldCB3YXMgdGhlIHdyb25n
IHBsYWNlIGZvciB0aGlzIGNvZGUuCisgICAgICAgIFJlbmRlckVtYmVkZGVkT2JqZWN0Ojp1cGRh
dGVXaWRnZXQgc3RpbGwgZXhpc3RzLCBidXQgb25seSBhcyBhCisgICAgICAgIHBzZXVkby12aXJ0
dWFsLW1ldGhvZCBkaXNwYXRjaGVyLiAgVW5sZXNzIHdlIGFkZCB1cGRhdGVXaWRnZXQoKSB0bwor
ICAgICAgICBIVE1MRWxlbWVudCwgd2Ugd29uJ3QgYmUgYWJsZSB0byB1c2UgcmVhbCB2aXJ0dWFs
IGRpc3BhdGNoLgorCisgICAgICAgIEkgbWF5IG5lZWQgdG8gY29uc2lkZXIgbWFraW5nICJoYXZp
bmcgYSB3aWRnZXQiIGEgaGFzLWEgcmVsYXRpb25zaGlwCisgICAgICAgIHdpdGggc29tZSBzb3J0
IG9mIFdpZGdldENvbnRhaW5lciBvYmplY3Qgd2hpY2ggTWVkaWEgYW5kIFBsdWdpbiBjYW4KKyAg
ICAgICAgc2hhcmUuICBPciBpdHMgYWxzbyBwb3NzaWJsZSB0aGF0IE1lZGlhJ3MgdXNlIG9mIHRo
ZSB3aWRnZXQgY29kZSBoZXJlCisgICAgICAgIGlzIGp1c3Qgd3JvbmcuICBDZXJ0YWlubHkgbm93
IHRoYXQgdXBkYXRlV2lkZ2V0IHdhcyBtb3ZlZCBpbnRvIEhUTUxNZWRpYUVsZW1lbnQKKyAgICAg
ICAgaXQgYmVjb21lcyBvYnZpb3VzIHRoYXQgSFRNTE1lZGlhRWxlbWVudCBoYXMgZHVwbGljYXRl
IGNvZGUgZm9yIHVwZGF0aW5nIHdpZGdldHMuCisKKyAgICAgICAgTm8gZnVuY3Rpb25hbCBjaGFu
Z2VzLCB0aHVzIG5vIHRlc3RzLgorCisgICAgICAgICogaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbWJlZEVsZW1lbnQ6OnVwZGF0ZVdpZGdldCk6Cisg
ICAgICAgICogaHRtbC9IVE1MRW1iZWRFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0
ZVdpZGdldCk6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAgICAgICog
aHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MT2JqZWN0
RWxlbWVudDo6dXBkYXRlV2lkZ2V0KToKKyAgICAgICAgKiBodG1sL0hUTUxPYmplY3RFbGVtZW50
Lmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MT2JqZWN0RWxlbWVudDo6dXNlRmFsbGJhY2tDb250
ZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6Om5lZWRzV2lkZ2V0VXBkYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnNldE5lZWRzV2lkZ2V0VXBk
YXRlKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJF
bWJlZGRlZE9iamVjdDo6dXBkYXRlV2lkZ2V0KToKKworMjAxMC0wOS0wMSAgRXJpYyBTZWlkZWwg
IDxlcmljQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292
LgorCiAgICAgICAgIE1vdmUgbW9yZSBjb2RlIGZyb20gUmVuZGVyRW1iZWRkZWRPYmplY3QgaW50
byB0aGUgRE9NCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD00NTA1NQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHAg
Yi9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHAKaW5kZXggNzRiOTcxNWNjYzA0Mzky
NzNmNGNkMDE2Yzc4ODJjYmNkZjYyNGYxMC4uMGFiMDBlY2M2YmE2ZmRkMWU2OGYxMmE5MGE3MGEw
MGNkNmQyYWUwMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuY3Bw
CisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcApAQCAtMTMzLDYgKzEzMywz
OCBAQCB2b2lkIEhUTUxFbWJlZEVsZW1lbnQ6OnBhcmFtZXRlcnNGb3JQbHVnaW4oVmVjdG9yPFN0
cmluZz4mIHBhcmFtTmFtZXMsIFZlY3RvcjxTdAogICAgIH0KIH0KIAorLy8gRklYTUU6IFRoaXMg
c2hvdWxkIGJlIHVuaWZpZWQgd2l0aCBIVE1MT2JqZWN0RWxlbWVudDo6dXBkYXRlV2lkZ2V0IGFu
ZAorLy8gbW92ZWQgZG93biBpbnRvIEhUTUxQbHVnaW5JbWFnZUVsZW1lbnQuY3BwCit2b2lkIEhU
TUxFbWJlZEVsZW1lbnQ6OnVwZGF0ZVdpZGdldChib29sIG9ubHlDcmVhdGVOb25OZXRzY2FwZVBs
dWdpbnMpCit7CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBBU1NFUlQobmVlZHNXaWRnZXRVcGRh
dGUoKSksIGJ1dCBjdXJyZW50bHkKKyAgICAvLyBGcmFtZVZpZXc6OnVwZGF0ZVdpZGdldCgpIGNh
bGxzIHVwZGF0ZVdpZGdldChmYWxzZSkgd2l0aG91dCBjaGVja2luZyBpZgorICAgIC8vIHRoZSB3
aWRnZXQgYWN0dWFsbHkgbmVlZHMgdXBkYXRpbmchCisgICAgc2V0TmVlZHNXaWRnZXRVcGRhdGUo
ZmFsc2UpOworCisgICAgaWYgKG1fdXJsLmlzRW1wdHkoKSAmJiBtX3NlcnZpY2VUeXBlLmlzRW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gTm90ZSB0aGVzZSBwYXNzIG1fdXJsIGFu
ZCBtX3NlcnZpY2VUeXBlIHRvIGFsbG93IGJldHRlciBjb2RlIHNoYXJpbmcgd2l0aAorICAgIC8v
IDxvYmplY3Q+IHdoaWNoIG1vZGlmaWVzIHVybCBhbmQgc2VydmljZVR5cGUgYmVmb3JlIGNhbGxp
bmcgdGhlc2UuCisgICAgaWYgKCFhbGxvd2VkVG9Mb2FkRnJhbWVVUkwobV91cmwpKQorICAgICAg
ICByZXR1cm47CisgICAgaWYgKG9ubHlDcmVhdGVOb25OZXRzY2FwZVBsdWdpbnMgJiYgd291bGRM
b2FkQXNOZXRzY2FwZVBsdWdpbihtX3VybCwgbV9zZXJ2aWNlVHlwZSkpCisgICAgICAgIHJldHVy
bjsKKworICAgIC8vIEZJWE1FOiBUaGVzZSBzaG91bGQgYmUgam9pbmVkIGludG8gYSBQbHVnaW5Q
YXJhbWV0ZXJzIGNsYXNzLgorICAgIFZlY3RvcjxTdHJpbmc+IHBhcmFtTmFtZXM7CisgICAgVmVj
dG9yPFN0cmluZz4gcGFyYW1WYWx1ZXM7CisgICAgcGFyYW1ldGVyc0ZvclBsdWdpbihwYXJhbU5h
bWVzLCBwYXJhbVZhbHVlcyk7CisKKyAgICBpZiAoIWRpc3BhdGNoQmVmb3JlTG9hZEV2ZW50KG1f
dXJsKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgU3ViZnJhbWVMb2FkZXIqIGxvYWRlciA9IGRv
Y3VtZW50KCktPmZyYW1lKCktPmxvYWRlcigpLT5zdWJmcmFtZUxvYWRlcigpOworICAgIC8vIEZJ
WE1FOiBiZWZvcmVMb2FkIGNvdWxkIGhhdmUgZGV0YWNoZWQgdGhlIHJlbmRlcmVyISAgSnVzdCBs
aWtlIGluIHRoZSA8b2JqZWN0PiBjYXNlIGFib3ZlLgorICAgIGxvYWRlci0+cmVxdWVzdE9iamVj
dCh0aGlzLCBtX3VybCwgZ2V0QXR0cmlidXRlKG5hbWVBdHRyKSwgbV9zZXJ2aWNlVHlwZSwgcGFy
YW1OYW1lcywgcGFyYW1WYWx1ZXMpOworfQorCiBib29sIEhUTUxFbWJlZEVsZW1lbnQ6OnJlbmRl
cmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqIHN0eWxlKQogewogICAgIGlmIChpc0ltYWdlVHlwZSgp
KQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuaCBiL1dlYkNvcmUv
aHRtbC9IVE1MRW1iZWRFbGVtZW50LmgKaW5kZXggZDRhNGQ3ZmE3ZmY3ZmJjM2E2ZmUzMDk3MGYy
MTRiMzlkZDA2YmU3ZC4uMGZiN2Y1MDE0YWJjMjc3ZGJlZWQwZWUwYzIyMDY4ZTQ3ZDQ3OTlhZCAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuaAorKysgYi9XZWJDb3Jl
L2h0bWwvSFRNTEVtYmVkRWxlbWVudC5oCkBAIC0zMSw3ICszMSw3IEBAIGNsYXNzIEhUTUxFbWJl
ZEVsZW1lbnQgOiBwdWJsaWMgSFRNTFBsdWdJbkltYWdlRWxlbWVudCB7CiBwdWJsaWM6CiAgICAg
c3RhdGljIFBhc3NSZWZQdHI8SFRNTEVtYmVkRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmLCBEb2N1bWVudCosIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKTsKIAotICAgIHZvaWQgcGFy
YW1ldGVyc0ZvclBsdWdpbihWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgVmVjdG9yPFN0cmlu
Zz4mIHBhcmFtVmFsdWVzKTsKKyAgICB2b2lkIHVwZGF0ZVdpZGdldChib29sIG9ubHlDcmVhdGVO
b25OZXRzY2FwZVBsdWdpbnMpOwogCiBwcml2YXRlOgogICAgIEhUTUxFbWJlZEVsZW1lbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50KiwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpOwpAQCAt
NTAsNiArNTAsOCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgUmVuZGVyV2lkZ2V0KiByZW5kZXJX
aWRnZXRGb3JKU0JpbmRpbmdzKCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIHZvaWQgYWRkU3VicmVz
b3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JikgY29uc3Q7CisKKyAgICB2b2lk
IHBhcmFtZXRlcnNGb3JQbHVnaW4oVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIFZlY3RvcjxT
dHJpbmc+JiBwYXJhbVZhbHVlcyk7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAK
aW5kZXggOGM4NThjNTNhOGMzM2Y0ZmVhY2UyN2QyZmFkYTdmMmE4OGUyZjI5NC4uNDYyMTA5Njdm
MjBkZWQ5YWQwMzRiM2RkYzMxNzZiMDQzYzE1YzhmMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmNwcApAQCAtMjAxMCw2ICsyMDEwLDIwIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Y3JlYXRl
TWVkaWFQbGF5ZXJQcm94eSgpCiAgICAgaWYgKG1fcHJveHlXaWRnZXQpCiAgICAgICAgIG1fbmVl
ZFdpZGdldFVwZGF0ZSA9IGZhbHNlOwogfQorCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0
ZVdpZGdldChib29sKQoreworICAgIG1lZGlhRWxlbWVudC0+c2V0TmVlZFdpZGdldFVwZGF0ZShm
YWxzZSk7CisKKyAgICBWZWN0b3I8U3RyaW5nPiBwYXJhbU5hbWVzOworICAgIFZlY3RvcjxTdHJp
bmc+IHBhcmFtVmFsdWVzOworICAgIEtVUkwga3VybDsKKyAgICAKKyAgICBtZWRpYUVsZW1lbnQt
PmdldFBsdWdpblByb3h5UGFyYW1zKGt1cmwsIHBhcmFtTmFtZXMsIHBhcmFtVmFsdWVzKTsKKyAg
ICBTdWJmcmFtZUxvYWRlciogbG9hZGVyID0gZG9jdW1lbnQoKS0+ZnJhbWUoKS0+bG9hZGVyKCkt
PnN1YmZyYW1lTG9hZGVyKCk7CisgICAgbG9hZGVyLT5sb2FkTWVkaWFQbGF5ZXJQcm94eVBsdWdp
bihtZWRpYUVsZW1lbnQsIGt1cmwsIHBhcmFtTmFtZXMsIHBhcmFtVmFsdWVzKTsKK30KKwogI2Vu
ZGlmIC8vIEVOQUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJREVPKQogCiB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OmVudGVyRnVsbHNjcmVlbigpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5oIGIvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAppbmRleCAzODk1
ZmUzMWNkMmRjZDA0N2IzNmMxY2EwMDQ0OWE1MTAzZTA1MmI3Li5iNTk1NjA0ZGIyMTdhZGEwNTc2
OWU1YWQ0NGZlNDhhNmM2OTY1ZGViIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5oCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKQEAgLTE1Myw2
ICsxNTMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXRQbHVnaW5Qcm94eVBhcmFtcyhLVVJMJiB1
cmwsIFZlY3RvcjxTdHJpbmc+JiBuYW1lcywgVmVjdG9yPFN0cmluZz4mIHZhbHVlcyk7CiAgICAg
dmlydHVhbCB2b2lkIGZpbmlzaFBhcnNpbmdDaGlsZHJlbigpOwogICAgIHZvaWQgY3JlYXRlTWVk
aWFQbGF5ZXJQcm94eSgpOworICAgIHZvaWQgdXBkYXRlV2lkZ2V0KGJvb2wgb25seUNyZWF0ZU5v
bk5ldHNjYXBlUGx1Z2lucyk7CiAjZW5kaWYKIAogICAgIGJvb2wgaGFzU2luZ2xlU2VjdXJpdHlP
cmlnaW4oKSBjb25zdCB7IHJldHVybiAhbV9wbGF5ZXIgfHwgbV9wbGF5ZXItPmhhc1NpbmdsZVNl
Y3VyaXR5T3JpZ2luKCk7IH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxl
bWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCmluZGV4IDJiODc5
YmEzMmZiZTFhODQ4MmE1YzA1YzYzMzNjOTI3YTZlZTc2ZDYuLmM5NzAyOTM5OTk4NzhlNzZkYzAy
MmIyNWM4MTg2Njk5ODgwMWNhYjEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0
RWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcApAQCAt
MjM2LDYgKzIzNiw1MiBAQCBib29sIEhUTUxPYmplY3RFbGVtZW50OjpoYXNGYWxsYmFja0NvbnRl
bnQoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAorLy8gRklYTUU6IFRoaXMgc2hvdWxk
IGJlIHVuaWZpZWQgd2l0aCBIVE1MRW1iZWRFbGVtZW50Ojp1cGRhdGVXaWRnZXQgYW5kCisvLyBt
b3ZlZCBkb3duIGludG8gSFRNTFBsdWdpbkltYWdlRWxlbWVudC5jcHAKK3ZvaWQgSFRNTE9iamVj
dEVsZW1lbnQ6OnVwZGF0ZVdpZGdldChib29sIG9ubHlDcmVhdGVOb25OZXRzY2FwZVBsdWdpbnMp
Cit7CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBBU1NFUlQobmVlZHNXaWRnZXRVcGRhdGUoKSks
IGJ1dCBjdXJyZW50bHkKKyAgICAvLyBGcmFtZVZpZXc6OnVwZGF0ZVdpZGdldCgpIGNhbGxzIHVw
ZGF0ZVdpZGdldChmYWxzZSkgd2l0aG91dCBjaGVja2luZyBpZgorICAgIC8vIHRoZSB3aWRnZXQg
YWN0dWFsbHkgbmVlZHMgdXBkYXRpbmchCisgICAgc2V0TmVlZHNXaWRnZXRVcGRhdGUoZmFsc2Up
OworICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBBU1NFUlQgaXNGaW5pc2hlZFBhcnNpbmdDaGls
ZHJlbigpIGluc3RlYWQuCisgICAgaWYgKCFpc0ZpbmlzaGVkUGFyc2luZ0NoaWxkcmVuKCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIFN0cmluZyB1cmwgPSB0aGlzLT51cmwoKTsKKyAgICBTdHJp
bmcgc2VydmljZVR5cGUgPSB0aGlzLT5zZXJ2aWNlVHlwZSgpOworCisgICAgLy8gRklYTUU6IFRo
ZXNlIHNob3VsZCBiZSBqb2luZWQgaW50byBhIFBsdWdpblBhcmFtZXRlcnMgY2xhc3MuCisgICAg
VmVjdG9yPFN0cmluZz4gcGFyYW1OYW1lczsKKyAgICBWZWN0b3I8U3RyaW5nPiBwYXJhbVZhbHVl
czsKKyAgICBwYXJhbWV0ZXJzRm9yUGx1Z2luKHBhcmFtTmFtZXMsIHBhcmFtVmFsdWVzLCB1cmws
IHNlcnZpY2VUeXBlKTsKKworICAgIC8vIE5vdGU6IHVybCBpcyBtb2RpZmllZCBhYm92ZSBieSBw
YXJhbWV0ZXJzRm9yUGx1Z2luLgorICAgIGlmICghYWxsb3dlZFRvTG9hZEZyYW1lVVJMKHVybCkp
CisgICAgICAgIHJldHVybjsKKworICAgIGJvb2wgZmFsbGJhY2tDb250ZW50ID0gaGFzRmFsbGJh
Y2tDb250ZW50KCk7CisgICAgcmVuZGVyRW1iZWRkZWRPYmplY3QoKS0+c2V0SGFzRmFsbGJhY2tD
b250ZW50KGZhbGxiYWNrQ29udGVudCk7CisKKyAgICBpZiAob25seUNyZWF0ZU5vbk5ldHNjYXBl
UGx1Z2lucyAmJiB3b3VsZExvYWRBc05ldHNjYXBlUGx1Z2luKHVybCwgc2VydmljZVR5cGUpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBib29sIGJlZm9yZUxvYWRBbGxvd2VkTG9hZCA9IGRpc3Bh
dGNoQmVmb3JlTG9hZEV2ZW50KHVybCk7CisKKyAgICAvLyBiZWZvcmVsb2FkIGV2ZW50cyBjYW4g
bW9kaWZ5IHRoZSBET00sIHBvdGVudGlhbGx5IGNhdXNpbmcKKyAgICAvLyBSZW5kZXJXaWRnZXQ6
OmRlc3Ryb3koKSB0byBiZSBjYWxsZWQuICBFbnN1cmUgd2UgaGF2ZW4ndCBiZWVuCisgICAgLy8g
ZGVzdHJveWVkIGJlZm9yZSBjb250aW51aW5nLgorICAgIC8vIEZJWE1FOiBTaG91bGQgdGhpcyBy
ZW5kZXIgZmFsbGJhY2sgY29udGVudD8KKyAgICBpZiAoIXJlbmRlcmVyKCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIFN1YmZyYW1lTG9hZGVyKiBsb2FkZXIgPSBkb2N1bWVudCgpLT5mcmFtZSgp
LT5sb2FkZXIoKS0+c3ViZnJhbWVMb2FkZXIoKTsKKyAgICBib29sIHN1Y2Nlc3MgPSBiZWZvcmVM
b2FkQWxsb3dlZExvYWQgJiYgbG9hZGVyLT5yZXF1ZXN0T2JqZWN0KHRoaXMsIHVybCwgZ2V0QXR0
cmlidXRlKG5hbWVBdHRyKSwgc2VydmljZVR5cGUsIHBhcmFtTmFtZXMsIHBhcmFtVmFsdWVzKTsK
KworICAgIGlmICghc3VjY2VzcyAmJiBmYWxsYmFja0NvbnRlbnQpCisgICAgICAgIHJlbmRlckZh
bGxiYWNrQ29udGVudCgpOworfQorCiBib29sIEhUTUxPYmplY3RFbGVtZW50OjpyZW5kZXJlcklz
TmVlZGVkKFJlbmRlclN0eWxlKiBzdHlsZSkKIHsKICAgICAvLyBGSVhNRTogVGhpcyBjaGVjayBz
aG91bGQgbm90IGJlIG5lZWRlZCwgZGV0YWNoZWQgZG9jdW1lbnRzIG5ldmVyIHJlbmRlciEKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5oIGIvV2ViQ29yZS9odG1s
L0hUTUxPYmplY3RFbGVtZW50LmgKaW5kZXggM2ZmOTIxOGEzNmY4MjhmMzBhN2RiMmU1MjljYjc3
NGJiYTI0MDYwMC4uMzZjM2M0YjgxNDAwZjUwMWYyMGRiMTA3M2Q0NDE1ZWYxYzVmNzI2YyAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmgKKysrIGIvV2ViQ29yZS9o
dG1sL0hUTUxPYmplY3RFbGVtZW50LmgKQEAgLTMxLDIwICszMSwxNiBAQCBjbGFzcyBIVE1MT2Jq
ZWN0RWxlbWVudCA6IHB1YmxpYyBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50IHsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MT2JqZWN0RWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmLCBEb2N1bWVudCosIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKTsKIAotICAgIHZvaWQg
cmVuZGVyRmFsbGJhY2tDb250ZW50KCk7Ci0KICAgICBib29sIGlzRG9jTmFtZWRJdGVtKCkgY29u
c3QgeyByZXR1cm4gbV9kb2NOYW1lZEl0ZW07IH0KIAogICAgIGNvbnN0IFN0cmluZyYgY2xhc3NJ
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NJZDsgfQogCiAgICAgYm9vbCBjb250YWluc0phdmFB
cHBsZXQoKSBjb25zdDsKIAotICAgIGJvb2wgaGFzRmFsbGJhY2tDb250ZW50KCkgY29uc3Q7Ci0g
ICAgdmlydHVhbCBib29sIHVzZUZhbGxiYWNrQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNl
RmFsbGJhY2tDb250ZW50OyB9CisgICAgdm9pZCB1cGRhdGVXaWRnZXQoYm9vbCBvbmx5Q3JlYXRl
Tm9uTmV0c2NhcGVQbHVnaW5zKTsKIAotICAgIC8vIEZJWE1FOiBUaGlzIGZ1bmN0aW9uIHNob3Vs
ZCBub3QgZGVhbCB3aXRoIHVybCBvciBzZXJ2aWNlVHlwZQotICAgIC8vIHNvIHRoYXQgd2UgY2Fu
IGJldHRlciBzaGFyZSBjb2RlIGJldHdlZW4gPG9iamVjdD4gYW5kIDxlbWJlZD4uCi0gICAgdm9p
ZCBwYXJhbWV0ZXJzRm9yUGx1Z2luKFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBWZWN0b3I8
U3RyaW5nPiYgcGFyYW1WYWx1ZXMsIFN0cmluZyYgdXJsLCBTdHJpbmcmIHNlcnZpY2VUeXBlKTsK
KyAgICB2aXJ0dWFsIGJvb2wgdXNlRmFsbGJhY2tDb250ZW50KCkgY29uc3QgeyByZXR1cm4gbV91
c2VGYWxsYmFja0NvbnRlbnQ7IH0KKyAgICB2b2lkIHJlbmRlckZhbGxiYWNrQ29udGVudCgpOwog
CiBwcml2YXRlOgogICAgIEhUTUxPYmplY3RFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBE
b2N1bWVudCosIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKTsKQEAgLTY2LDYgKzYyLDEyIEBAIHByaXZh
dGU6CiAKICAgICB2b2lkIHVwZGF0ZURvY05hbWVkSXRlbSgpOwogCisgICAgYm9vbCBoYXNGYWxs
YmFja0NvbnRlbnQoKSBjb25zdDsKKyAgICAKKyAgICAvLyBGSVhNRTogVGhpcyBmdW5jdGlvbiBz
aG91bGQgbm90IGRlYWwgd2l0aCB1cmwgb3Igc2VydmljZVR5cGUKKyAgICAvLyBzbyB0aGF0IHdl
IGNhbiBiZXR0ZXIgc2hhcmUgY29kZSBiZXR3ZWVuIDxvYmplY3Q+IGFuZCA8ZW1iZWQ+LgorICAg
IHZvaWQgcGFyYW1ldGVyc0ZvclBsdWdpbihWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgVmVj
dG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzLCBTdHJpbmcmIHVybCwgU3RyaW5nJiBzZXJ2aWNlVHlw
ZSk7CisKICAgICBBdG9taWNTdHJpbmcgbV9pZDsKICAgICBTdHJpbmcgbV9jbGFzc0lkOwogICAg
IGJvb2wgbV9kb2NOYW1lZEl0ZW0gOiAxOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxQ
bHVnSW5JbWFnZUVsZW1lbnQuaCBiL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50
LmgKaW5kZXggODE0YWFmMDY5NjJhYWU2YzI2MWVhN2IzOTZlNGYzZjRkOTE5Y2ZkOC4uNzhiZGVi
M2VmY2NmYmM4MjhkZGYwOGJiYzUyYjUwZWEwYzVlOGNjMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9o
dG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJ
bkltYWdlRWxlbWVudC5oCkBAIC0zNSwxMiArMzUsNiBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3Ry
aW5nJiBzZXJ2aWNlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2VydmljZVR5cGU7IH0KICAgICBj
b25zdCBTdHJpbmcmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CiAKLSAgICAvLyBUaGVz
ZSBjYW4gYWxsIG1vdmUgdG8gYmUgcHJvdGVjdGVkIG9uY2UgdXBkYXRlV2lkZ2V0IGlzIG1vdmVk
IG91dCBvZiBSZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAKLSAgICBib29sIG5lZWRzV2lkZ2V0VXBk
YXRlKCkgY29uc3QgeyByZXR1cm4gbV9uZWVkc1dpZGdldFVwZGF0ZTsgfQotICAgIHZvaWQgc2V0
TmVlZHNXaWRnZXRVcGRhdGUoYm9vbCBuZWVkc1dpZGdldFVwZGF0ZSkgeyBtX25lZWRzV2lkZ2V0
VXBkYXRlID0gbmVlZHNXaWRnZXRVcGRhdGU7IH0KLSAgICBib29sIGFsbG93ZWRUb0xvYWRGcmFt
ZVVSTChjb25zdCBTdHJpbmcmIHVybCk7Ci0gICAgYm9vbCB3b3VsZExvYWRBc05ldHNjYXBlUGx1
Z2luKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHNlcnZpY2VUeXBlKTsKLQogICAg
IFJlbmRlckVtYmVkZGVkT2JqZWN0KiByZW5kZXJFbWJlZGRlZE9iamVjdCgpIGNvbnN0OwogCiBw
cm90ZWN0ZWQ6CkBAIC01Niw2ICs1MCwxMiBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lk
IGF0dGFjaCgpOwogICAgIHZpcnR1YWwgdm9pZCBkZXRhY2goKTsKIAorICAgIGJvb2wgbmVlZHNX
aWRnZXRVcGRhdGUoKSBjb25zdCB7IHJldHVybiBtX25lZWRzV2lkZ2V0VXBkYXRlOyB9CisgICAg
dm9pZCBzZXROZWVkc1dpZGdldFVwZGF0ZShib29sIG5lZWRzV2lkZ2V0VXBkYXRlKSB7IG1fbmVl
ZHNXaWRnZXRVcGRhdGUgPSBuZWVkc1dpZGdldFVwZGF0ZTsgfQorCisgICAgYm9vbCBhbGxvd2Vk
VG9Mb2FkRnJhbWVVUkwoY29uc3QgU3RyaW5nJiB1cmwpOworICAgIGJvb2wgd291bGRMb2FkQXNO
ZXRzY2FwZVBsdWdpbihjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBzZXJ2aWNlVHlw
ZSk7CisKIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGNhbkxhenlBdHRhY2goKSB7IHJldHVy
biBmYWxzZTsgfQogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5k
ZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlci5jcHAgYi9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggY2NiY2Nj
OWI4Y2JlNzhlOTM4YjdlNDVjNzc4MjA2ZDhhZjNjZGJjNi4uZWViNTI4M2M1MmU3OTQ2MTc4Nzg3
OTE3N2IzNjliNTc5ZTIyMmYwOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXIuY3BwCisrKyBiL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMTA0Miw2ICsx
MDQyLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6c2V0T3BlbmVyKEZyYW1lKiBvcGVuZXIpCiAgICAg
fQogfQogCisvLyBGSVhNRTogVGhpcyBkb2VzIG5vdCBiZWxvbmcgaW4gRnJhbWVMb2FkZXIhCiB2
b2lkIEZyYW1lTG9hZGVyOjpoYW5kbGVGYWxsYmFja0NvbnRlbnQoKQogewogICAgIEhUTUxGcmFt
ZU93bmVyRWxlbWVudCogb3duZXIgPSBtX2ZyYW1lLT5vd25lckVsZW1lbnQoKTsKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcCBiL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcAppbmRleCA5ZjhhY2ZkMDcwODBiOTg3
YzVjZTFhZTE4YTZiN2EzYzY1NTVkZjFmLi40M2M4ZDIyYTQ3YTYwZTE2NTE1NzMzOWU2MDhmZGY4
MmRjNzdkYTY4IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9i
amVjdC5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3Bw
CkBAIC0xMDEsOTUgKzEwMSw4IEBAIGJvb2wgUmVuZGVyRW1iZWRkZWRPYmplY3Q6OmFsbG93c0Fj
Y2VsZXJhdGVkQ29tcG9zaXRpbmcoKSBjb25zdAogICAgIHJldHVybiB3aWRnZXQoKSAmJiB3aWRn
ZXQoKS0+aXNQbHVnaW5WaWV3QmFzZSgpICYmIHN0YXRpY19jYXN0PFBsdWdpblZpZXdCYXNlKj4o
d2lkZ2V0KCkpLT5wbGF0Zm9ybUxheWVyKCk7CiB9CiAjZW5kaWYKLSAgICAKLS8vIEZJWE1FOiBU
aGlzIGJlbG9uZ3Mgb24gSFRNTE9iamVjdEVsZW1lbnQsIEhUTUxQbHVnaW5FbGVtZW50IG9yIEhU
TUxGcmFtZU93bmVyRWxlbWVudC4KLXN0YXRpYyB2b2lkIHVwZGF0ZVdpZGdldEZvck9iamVjdEVs
ZW1lbnQoSFRNTE9iamVjdEVsZW1lbnQqIG9iamVjdEVsZW1lbnQsIGJvb2wgb25seUNyZWF0ZU5v
bk5ldHNjYXBlUGx1Z2lucykKLXsKLSAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIEFTU0VSVChvYmpl
Y3RFbGVtZW50LT5uZWVkc1dpZGdldFVwZGF0ZSgpKSwgYnV0IGN1cnJlbnRseQotICAgIC8vIEZy
YW1lVmlldzo6dXBkYXRlV2lkZ2V0KCkgY2FsbHMgdXBkYXRlV2lkZ2V0KGZhbHNlKSB3aXRob3V0
IGNoZWNraW5nIGlmCi0gICAgLy8gdGhlIHdpZGdldCBhY3R1YWxseSBuZWVkcyB1cGRhdGluZyEK
LSAgICBvYmplY3RFbGVtZW50LT5zZXROZWVkc1dpZGdldFVwZGF0ZShmYWxzZSk7Ci0gICAgLy8g
RklYTUU6IFRoaXMgc2hvdWxkIEFTU0VSVCBpc0ZpbmlzaGVkUGFyc2luZ0NoaWxkcmVuKCkgaW5z
dGVhZC4KLSAgICBpZiAoIW9iamVjdEVsZW1lbnQtPmlzRmluaXNoZWRQYXJzaW5nQ2hpbGRyZW4o
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgU3RyaW5nIHVybCA9IG9iamVjdEVsZW1lbnQtPnVy
bCgpOwotICAgIFN0cmluZyBzZXJ2aWNlVHlwZSA9IG9iamVjdEVsZW1lbnQtPnNlcnZpY2VUeXBl
KCk7Ci0KLSAgICBWZWN0b3I8U3RyaW5nPiBwYXJhbU5hbWVzOwotICAgIFZlY3RvcjxTdHJpbmc+
IHBhcmFtVmFsdWVzOwotICAgIG9iamVjdEVsZW1lbnQtPnBhcmFtZXRlcnNGb3JQbHVnaW4ocGFy
YW1OYW1lcywgcGFyYW1WYWx1ZXMsIHVybCwgc2VydmljZVR5cGUpOwotCi0gICAgLy8gTm90ZTog
dXJsIGlzIG1vZGlmaWVkIGFib3ZlIGJ5IHBhcmFtZXRlcnNGb3JQbHVnaW4uCi0gICAgaWYgKCFv
YmplY3RFbGVtZW50LT5hbGxvd2VkVG9Mb2FkRnJhbWVVUkwodXJsKSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgYm9vbCBmYWxsYmFja0NvbnRlbnQgPSBvYmplY3RFbGVtZW50LT5oYXNGYWxsYmFj
a0NvbnRlbnQoKTsKLSAgICBvYmplY3RFbGVtZW50LT5yZW5kZXJFbWJlZGRlZE9iamVjdCgpLT5z
ZXRIYXNGYWxsYmFja0NvbnRlbnQoZmFsbGJhY2tDb250ZW50KTsKLQotICAgIGlmIChvbmx5Q3Jl
YXRlTm9uTmV0c2NhcGVQbHVnaW5zICYmIG9iamVjdEVsZW1lbnQtPndvdWxkTG9hZEFzTmV0c2Nh
cGVQbHVnaW4odXJsLCBzZXJ2aWNlVHlwZSkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGJvb2wg
YmVmb3JlTG9hZEFsbG93ZWRMb2FkID0gb2JqZWN0RWxlbWVudC0+ZGlzcGF0Y2hCZWZvcmVMb2Fk
RXZlbnQodXJsKTsKLQotICAgIC8vIGJlZm9yZWxvYWQgZXZlbnRzIGNhbiBtb2RpZnkgdGhlIERP
TSwgcG90ZW50aWFsbHkgY2F1c2luZwotICAgIC8vIFJlbmRlcldpZGdldDo6ZGVzdHJveSgpIHRv
IGJlIGNhbGxlZC4gIEVuc3VyZSB3ZSBoYXZlbid0IGJlZW4KLSAgICAvLyBkZXN0cm95ZWQgYmVm
b3JlIGNvbnRpbnVpbmcuCi0gICAgLy8gRklYTUU6IFNob3VsZCB0aGlzIHJlbmRlciBmYWxsYmFj
ayBjb250ZW50PwotICAgIGlmICghb2JqZWN0RWxlbWVudC0+cmVuZGVyZXIoKSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgU3ViZnJhbWVMb2FkZXIqIGxvYWRlciA9IG9iamVjdEVsZW1lbnQtPmRv
Y3VtZW50KCktPmZyYW1lKCktPmxvYWRlcigpLT5zdWJmcmFtZUxvYWRlcigpOwotICAgIGJvb2wg
c3VjY2VzcyA9IGJlZm9yZUxvYWRBbGxvd2VkTG9hZCAmJiBsb2FkZXItPnJlcXVlc3RPYmplY3Qo
b2JqZWN0RWxlbWVudCwgdXJsLCBvYmplY3RFbGVtZW50LT5nZXRBdHRyaWJ1dGUobmFtZUF0dHIp
LCBzZXJ2aWNlVHlwZSwgcGFyYW1OYW1lcywgcGFyYW1WYWx1ZXMpOwotCi0gICAgaWYgKCFzdWNj
ZXNzICYmIGZhbGxiYWNrQ29udGVudCkKLSAgICAgICAgb2JqZWN0RWxlbWVudC0+cmVuZGVyRmFs
bGJhY2tDb250ZW50KCk7Ci19Ci0KLS8vIEZJWE1FOiBUaGlzIGJlbG9uZ3Mgb24gSFRNTEVtYmVk
RWxlbWVudCwgSFRNTFBsdWdpbkVsZW1lbnQgb3IgSFRNTEZyYW1lT3duZXJFbGVtZW50Lgotc3Rh
dGljIHZvaWQgdXBkYXRlV2lkZ2V0Rm9yRW1iZWRFbGVtZW50KEhUTUxFbWJlZEVsZW1lbnQqIGVt
YmVkRWxlbWVudCwgYm9vbCBvbmx5Q3JlYXRlTm9uTmV0c2NhcGVQbHVnaW5zKQotewotICAgIC8v
IEZJWE1FOiBXZSBzaG91bGQgQVNTRVJUKGVtYmVkRWxlbWVudC0+bmVlZHNXaWRnZXRVcGRhdGUo
KSksIGJ1dCBjdXJyZW50bHkKLSAgICAvLyBGcmFtZVZpZXc6OnVwZGF0ZVdpZGdldCgpIGNhbGxz
IHVwZGF0ZVdpZGdldChmYWxzZSkgd2l0aG91dCBjaGVja2luZyBpZgotICAgIC8vIHRoZSB3aWRn
ZXQgYWN0dWFsbHkgbmVlZHMgdXBkYXRpbmchCi0gICAgZW1iZWRFbGVtZW50LT5zZXROZWVkc1dp
ZGdldFVwZGF0ZShmYWxzZSk7Ci0KLSAgICBTdHJpbmcgdXJsID0gZW1iZWRFbGVtZW50LT51cmwo
KTsKLSAgICBTdHJpbmcgc2VydmljZVR5cGUgPSBlbWJlZEVsZW1lbnQtPnNlcnZpY2VUeXBlKCk7
Ci0gICAgaWYgKHVybC5pc0VtcHR5KCkgJiYgc2VydmljZVR5cGUuaXNFbXB0eSgpKQotICAgICAg
ICByZXR1cm47Ci0gICAgaWYgKCFlbWJlZEVsZW1lbnQtPmFsbG93ZWRUb0xvYWRGcmFtZVVSTCh1
cmwpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAob25seUNyZWF0ZU5vbk5ldHNjYXBlUGx1
Z2lucyAmJiBlbWJlZEVsZW1lbnQtPndvdWxkTG9hZEFzTmV0c2NhcGVQbHVnaW4odXJsLCBzZXJ2
aWNlVHlwZSkpCi0gICAgICAgIHJldHVybjsKLQotICAgIFZlY3RvcjxTdHJpbmc+IHBhcmFtTmFt
ZXM7Ci0gICAgVmVjdG9yPFN0cmluZz4gcGFyYW1WYWx1ZXM7Ci0gICAgZW1iZWRFbGVtZW50LT5w
YXJhbWV0ZXJzRm9yUGx1Z2luKHBhcmFtTmFtZXMsIHBhcmFtVmFsdWVzKTsKLQotICAgIGlmICgh
ZW1iZWRFbGVtZW50LT5kaXNwYXRjaEJlZm9yZUxvYWRFdmVudCh1cmwpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBTdWJmcmFtZUxvYWRlciogbG9hZGVyID0gZW1iZWRFbGVtZW50LT5kb2N1bWVu
dCgpLT5mcmFtZSgpLT5sb2FkZXIoKS0+c3ViZnJhbWVMb2FkZXIoKTsKLSAgICAvLyBGSVhNRTog
YmVmb3JlTG9hZCBjb3VsZCBoYXZlIGRldGFjaGVkIHRoZSByZW5kZXJlciEgIEp1c3QgbGlrZSBp
biB0aGUgPG9iamVjdD4gY2FzZSBhYm92ZS4KLSAgICBsb2FkZXItPnJlcXVlc3RPYmplY3QoZW1i
ZWRFbGVtZW50LCB1cmwsIGVtYmVkRWxlbWVudC0+Z2V0QXR0cmlidXRlKG5hbWVBdHRyKSwgc2Vy
dmljZVR5cGUsIHBhcmFtTmFtZXMsIHBhcmFtVmFsdWVzKTsKLX0KLQotI2lmIEVOQUJMRShQTFVH
SU5fUFJPWFlfRk9SX1ZJREVPKQotLy8gRklYTUU6IFRoaXMgYmVsb25ncyBvbiBIVE1MTWVkaWFF
bGVtZW50Lgotc3RhdGljIHZvaWQgdXBkYXRlV2lkZ2V0Rm9yTWVkaWFFbGVtZW50KEhUTUxNZWRp
YUVsZW1lbnQqIG1lZGlhRWxlbWVudCwgYm9vbCBpZ25vcmVkKQotewotICAgIFZlY3RvcjxTdHJp
bmc+IHBhcmFtTmFtZXM7Ci0gICAgVmVjdG9yPFN0cmluZz4gcGFyYW1WYWx1ZXM7Ci0gICAgS1VS
TCBrdXJsOwotCi0gICAgbWVkaWFFbGVtZW50LT5nZXRQbHVnaW5Qcm94eVBhcmFtcyhrdXJsLCBw
YXJhbU5hbWVzLCBwYXJhbVZhbHVlcyk7Ci0gICAgbWVkaWFFbGVtZW50LT5zZXROZWVkV2lkZ2V0
VXBkYXRlKGZhbHNlKTsKLSAgICBmcmFtZS0+bG9hZGVyKCktPnN1YmZyYW1lTG9hZGVyKCktPmxv
YWRNZWRpYVBsYXllclByb3h5UGx1Z2luKG1lZGlhRWxlbWVudCwga3VybCwgcGFyYW1OYW1lcywg
cGFyYW1WYWx1ZXMpOwotfQotI2VuZGlmCiAKKy8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBtb3Zl
ZCBpbnRvIEZyYW1lVmlldyAodGhlIG9ubHkgY2FsbGVyKQogdm9pZCBSZW5kZXJFbWJlZGRlZE9i
amVjdDo6dXBkYXRlV2lkZ2V0KGJvb2wgb25seUNyZWF0ZU5vbk5ldHNjYXBlUGx1Z2lucykKIHsK
ICAgICBpZiAoIW1fcmVwbGFjZW1lbnRUZXh0LmlzTnVsbCgpIHx8ICFub2RlKCkpIC8vIENoZWNr
IHRoZSBub2RlIGluIGNhc2UgZGVzdHJveSgpIGhhcyBiZWVuIGNhbGxlZC4KQEAgLTIwMSwxOCAr
MTE0LDEzIEBAIHZvaWQgUmVuZGVyRW1iZWRkZWRPYmplY3Q6OnVwZGF0ZVdpZGdldChib29sIG9u
bHlDcmVhdGVOb25OZXRzY2FwZVBsdWdpbnMpCiAgICAgLy8gYXJ0aWZpY2FsbHkgdG8gZW5zdXJl
IHRoYXQgd2UgcmVtYWluIGFsaXZlIGZvciB0aGUgZHVyYXRpb24gb2YgcGx1Zy1pbiBpbml0aWFs
aXphdGlvbi4KICAgICBSZW5kZXJXaWRnZXRQcm90ZWN0b3IgcHJvdGVjdG9yKHRoaXMpOwogCi0g
ICAgaWYgKG5vZGUoKS0+aGFzVGFnTmFtZShvYmplY3RUYWcpKSB7Ci0gICAgICAgIEhUTUxPYmpl
Y3RFbGVtZW50KiBvYmplY3RFbGVtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTE9iamVjdEVsZW1lbnQq
Pihub2RlKCkpOwotICAgICAgICB1cGRhdGVXaWRnZXRGb3JPYmplY3RFbGVtZW50KG9iamVjdEVs
ZW1lbnQsIG9ubHlDcmVhdGVOb25OZXRzY2FwZVBsdWdpbnMpOwotICAgIH0gZWxzZSBpZiAobm9k
ZSgpLT5oYXNUYWdOYW1lKGVtYmVkVGFnKSkgewotICAgICAgICBIVE1MRW1iZWRFbGVtZW50KiBl
bWJlZEVsZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MRW1iZWRFbGVtZW50Kj4obm9kZSgpKTsKLSAg
ICAgICAgdXBkYXRlV2lkZ2V0Rm9yRW1iZWRFbGVtZW50KGVtYmVkRWxlbWVudCwgb25seUNyZWF0
ZU5vbk5ldHNjYXBlUGx1Z2lucyk7Ci0gICAgfQorICAgIGlmIChub2RlKCktPmhhc1RhZ05hbWUo
b2JqZWN0VGFnKSkKKyAgICAgICAgc3RhdGljX2Nhc3Q8SFRNTE9iamVjdEVsZW1lbnQqPihub2Rl
KCkpLT51cGRhdGVXaWRnZXQob25seUNyZWF0ZU5vbk5ldHNjYXBlUGx1Z2lucyk7CisgICAgZWxz
ZSBpZiAobm9kZSgpLT5oYXNUYWdOYW1lKGVtYmVkVGFnKSkKKyAgICAgICAgc3RhdGljX2Nhc3Q8
SFRNTEVtYmVkRWxlbWVudCo+KG5vZGUoKSktPnVwZGF0ZVdpZGdldChvbmx5Q3JlYXRlTm9uTmV0
c2NhcGVQbHVnaW5zKTsKICNpZiBFTkFCTEUoUExVR0lOX1BST1hZX0ZPUl9WSURFTykgICAgICAg
IAotICAgIGVsc2UgaWYgKG5vZGUoKS0+aGFzVGFnTmFtZSh2aWRlb1RhZykgfHwgbm9kZSgpLT5o
YXNUYWdOYW1lKGF1ZGlvVGFnKSkgewotICAgICAgICBIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVs
ZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MTWVkaWFFbGVtZW50Kj4obm9kZSgpKTsKLSAgICAgICAg
dXBkYXRlV2lkZ2V0Rm9yTWVkaWFFbGVtZW50KG1lZGlhRWxlbWVudCwgb25seUNyZWF0ZU5vbk5l
dHNjYXBlUGx1Z2lucyk7Ci0gICAgfQorICAgIGVsc2UgaWYgKG5vZGUoKS0+aGFzVGFnTmFtZSh2
aWRlb1RhZykgfHwgbm9kZSgpLT5oYXNUYWdOYW1lKGF1ZGlvVGFnKSkKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8SFRNTE1lZGlhRWxlbWVudCo+KG5vZGUoKSktPnVwZGF0ZVdpZGdldChvbmx5Q3JlYXRl
Tm9uTmV0c2NhcGVQbHVnaW5zKTsKICNlbmRpZgogICAgIGVsc2UKICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>