<?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>136384</bug_id>
          
          <creation_ts>2014-08-29 12:41:33 -0700</creation_ts>
          <short_desc>Crashes in IPC code under VisitedLinkProvider::pendingVisitedLinksTimerFired</short_desc>
          <delta_ts>2014-08-29 14:41:31 -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>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="Alexey Proskuryakov">ap</assigned_to>
          <cc>andersca</cc>
    
    <cc>beidson</cc>
    
    <cc>commit-queue</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1032224</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-08-29 12:41:33 -0700</bug_when>
    <thetext>rdar://problem/16991213</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1032231</commentid>
    <comment_count>1</comment_count>
      <attachid>237370</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-08-29 13:15:42 -0700</bug_when>
    <thetext>Created attachment 237370
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1032233</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-08-29 13:16:56 -0700</bug_when>
    <thetext>Attachment 237370 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/WebProcessProxy.cpp:39:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1032235</commentid>
    <comment_count>3</comment_count>
      <attachid>237370</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2014-08-29 13:25:15 -0700</bug_when>
    <thetext>Comment on attachment 237370
proposed patch

View in context: https://bugs.webkit.org/attachment.cgi?id=237370&amp;action=review

&gt; Source/WebKit2/UIProcess/VisitedLinkProvider.cpp:54
&gt; +static HashSet&lt;VisitedLinkProvider*&gt;&amp; allVisitedLinkProviders()
&gt; +{
&gt; +    ASSERT(RunLoop::isMain());
&gt; +    static NeverDestroyed&lt;HashSet&lt;VisitedLinkProvider*&gt;&gt; providers;
&gt; +    return providers;

I don&apos;t think these should be globals.  Instead, the WebProcessProxy should store this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1032256</commentid>
    <comment_count>4</comment_count>
      <attachid>237378</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-08-29 14:30:26 -0700</bug_when>
    <thetext>Created attachment 237378
proposed fix

Makes sense.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1032263</commentid>
    <comment_count>5</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-08-29 14:41:31 -0700</bug_when>
    <thetext>Committed &lt;http://trac.webkit.org/changeset/173121&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>237370</attachid>
            <date>2014-08-29 13:15:42 -0700</date>
            <delta_ts>2014-08-29 14:30:26 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>VisitedLinkProvider.txt</filename>
            <type>text/plain</type>
            <size>16195</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3MzExNykKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ4IEBACisyMDE0LTA4LTI5ICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIENyYXNoZXMgaW4gSVBDIGNv
ZGUgdW5kZXIgVmlzaXRlZExpbmtQcm92aWRlcjo6cGVuZGluZ1Zpc2l0ZWRMaW5rc1RpbWVyRmly
ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNjM4
NAorICAgICAgICByZGFyOi8vcHJvYmxlbS8xNjk5MTIxMworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFZpc2l0ZWRMaW5rUHJvdmlkZXIgcHJvY2VzcyB0
cmFja2luZyByZWxpZWQgb24gYSBjb21iaW5hdGlvbiBvZiBXZWJQYWdlUHJveHkgcHJvY2Vzcwor
ICAgICAgICBsaWZlY3ljbGUgbm90aWZpY2F0aW9ucyBhbmQgY2hlY2tpbmcgcHJvY2VzcyBzdGF0
ZS4gQXMgZXZpZGVuY2VkIGJ5IG11bHRpcGxlIEZJWE1FcywKKyAgICAgICAgdGhlc2UgYXJlIG5v
dCB5ZXQgYXMgcmVsaWFibGUgYXMgdGhleSBzaG91bGQgYmUuCisgICAgICAgIAorICAgICAgICBD
aGFuZ2VkIHRvIHVucmVnaXN0ZXIgYSBwcm9jZXNzIHdoZW4gaXQgY2xvc2VzLCBub3Qgd2hlbiBp
dCBubyBsb25nZXIgaGFzIGFueSBwYWdlcworICAgICAgICB1c2luZyB0aGUgcGFydGljdWxhciBW
aXNpdGVkTGlua1Byb3ZpZGVyIG9yIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LiBUaGlz
CisgICAgICAgIGlzIGEgZGVvcHRpbWl6YXRpb24gdGhhdCBzaG91bGQgbm90IG1hdHRlciBpbiBw
cmFjdGljZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OmFsbFdlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3hpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRy
b2xsZXJQcm94eTo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6fldlYlVzZXJDb250ZW50Q29udHJv
bGxlclByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJv
eHk6OnJlbW92ZVByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRy
b2xsZXJQcm94eTo6cHJvY2Vzc0RpZENsb3NlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNv
bnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFVzZXJTY3JpcHQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlQWxsVXNlclNjcmlwdHMpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6YWRkVXNlclN0eWxl
U2hlZXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6
cmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRzKToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRl
bnRDb250cm9sbGVyUHJveHk6OmFkZFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcik6CisgICAgICAg
IChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVVc2VyTWVzc2Fn
ZUhhbmRsZXJGb3JOYW1lKToKKyAgICAgICAgKiBVSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvVmlzaXRlZExp
bmtQcm92aWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OmFsbFZpc2l0ZWRMaW5rUHJvdmlkZXJz
KToKKyAgICAgICAgKFdlYktpdDo6VmlzaXRlZExpbmtQcm92aWRlcjo6flZpc2l0ZWRMaW5rUHJv
dmlkZXIpOgorICAgICAgICAoV2ViS2l0OjpWaXNpdGVkTGlua1Byb3ZpZGVyOjpWaXNpdGVkTGlu
a1Byb3ZpZGVyKToKKyAgICAgICAgKFdlYktpdDo6VmlzaXRlZExpbmtQcm92aWRlcjo6cmVtb3Zl
UHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OlZpc2l0ZWRMaW5rUHJvdmlkZXI6OnByb2Nlc3NE
aWRDbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OlZpc2l0ZWRMaW5rUHJvdmlkZXI6OnJlbW92ZUFs
bCk6CisgICAgICAgIChXZWJLaXQ6OlZpc2l0ZWRMaW5rUHJvdmlkZXI6OnBlbmRpbmdWaXNpdGVk
TGlua3NUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYktpdDo6VmlzaXRlZExpbmtQcm92aWRlcjo6
cmVzaXplVGFibGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9WaXNpdGVkTGlua1Byb3ZpZGVyLmg6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6Y2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJl
c2V0U3RhdGVBZnRlclByb2Nlc3NFeGl0ZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6On5XZWJQcm9j
ZXNzUHJveHkpOgorCiAyMDE0LTA4LTI5ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNv
bT4KIAogICAgICAgICBSZW1vdmUgTmV0d29ya1Jlc291cmNlTG9hZGVyQ2xpZW50IGFuZCBzdWJj
bGFzc2VzLgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Zpc2l0ZWRMaW5rUHJvdmlk
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9WaXNpdGVkTGlu
a1Byb3ZpZGVyLmNwcAkocmV2aXNpb24gMTczMDEyKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1Zpc2l0ZWRMaW5rUHJvdmlkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3
IEBACiAjaW5jbHVkZSAiVmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXJNZXNzYWdlcy5oIgogI2lu
Y2x1ZGUgIldlYkNvbnRleHQuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKKyNp
bmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKQEAgLTQ2LDYgKzQ3LDEzIEBAIHN0YXRpYyB1aW50NjRfdCBnZW5lcmF0ZUlkZW50aWZpZXIo
KQogICAgIHJldHVybiArK2lkZW50aWZpZXI7CiB9CiAKK3N0YXRpYyBIYXNoU2V0PFZpc2l0ZWRM
aW5rUHJvdmlkZXIqPiYgYWxsVmlzaXRlZExpbmtQcm92aWRlcnMoKQoreworICAgIEFTU0VSVChS
dW5Mb29wOjppc01haW4oKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8Vmlz
aXRlZExpbmtQcm92aWRlcio+PiBwcm92aWRlcnM7CisgICAgcmV0dXJuIHByb3ZpZGVyczsKK30K
KwogUGFzc1JlZlB0cjxWaXNpdGVkTGlua1Byb3ZpZGVyPiBWaXNpdGVkTGlua1Byb3ZpZGVyOjpj
cmVhdGUoKQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgVmlzaXRlZExpbmtQcm92aWRlcik7
CkBAIC01NCw2ICs2Miw3IEBAIFBhc3NSZWZQdHI8VmlzaXRlZExpbmtQcm92aWRlcj4gVmlzaXRl
ZEwKIFZpc2l0ZWRMaW5rUHJvdmlkZXI6On5WaXNpdGVkTGlua1Byb3ZpZGVyKCkKIHsKICAgICBB
U1NFUlQobV9wcm9jZXNzZXMuaXNFbXB0eSgpKTsKKyAgICBhbGxWaXNpdGVkTGlua1Byb3ZpZGVy
cygpLnJlbW92ZSh0aGlzKTsKIH0KIAogVmlzaXRlZExpbmtQcm92aWRlcjo6VmlzaXRlZExpbmtQ
cm92aWRlcigpCkBAIC02Miw2ICs3MSw3IEBAIFZpc2l0ZWRMaW5rUHJvdmlkZXI6OlZpc2l0ZWRM
aW5rUHJvdmlkZXIKICAgICAsIG1fdGFibGVTaXplKDApCiAgICAgLCBtX3BlbmRpbmdWaXNpdGVk
TGlua3NUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZWaXNpdGVkTGlua1Byb3ZpZGVyOjpw
ZW5kaW5nVmlzaXRlZExpbmtzVGltZXJGaXJlZCkKIHsKKyAgICBhbGxWaXNpdGVkTGlua1Byb3Zp
ZGVycygpLmFkZCh0aGlzKTsKIH0KIAogdm9pZCBWaXNpdGVkTGlua1Byb3ZpZGVyOjphZGRQcm9j
ZXNzKFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcykKQEAgLTgzLDEyICs5MywxNiBAQCB2b2lkIFZp
c2l0ZWRMaW5rUHJvdmlkZXI6OmFkZFByb2Nlc3MoV2ViCiAKIHZvaWQgVmlzaXRlZExpbmtQcm92
aWRlcjo6cmVtb3ZlUHJvY2VzcyhXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MpCiB7Ci0gICAgQVNT
RVJUKG1fcHJvY2Vzc2VzLmNvbnRhaW5zKCZwcm9jZXNzKSk7Ci0KICAgICBpZiAobV9wcm9jZXNz
ZXMucmVtb3ZlKCZwcm9jZXNzKSkKICAgICAgICAgcHJvY2Vzcy5yZW1vdmVNZXNzYWdlUmVjZWl2
ZXIoTWVzc2FnZXM6OlZpc2l0ZWRMaW5rUHJvdmlkZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwg
bV9pZGVudGlmaWVyKTsKIH0KIAordm9pZCBWaXNpdGVkTGlua1Byb3ZpZGVyOjpwcm9jZXNzRGlk
Q2xvc2UoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzKQoreworICAgIGZvciAoVmlzaXRlZExpbmtQ
cm92aWRlciogcHJvdmlkZXIgOiBhbGxWaXNpdGVkTGlua1Byb3ZpZGVycygpKQorICAgICAgICBw
cm92aWRlci0+cmVtb3ZlUHJvY2Vzcyhwcm9jZXNzKTsKK30KKwogdm9pZCBWaXNpdGVkTGlua1By
b3ZpZGVyOjpyZW1vdmVBbGwoKQogewogICAgIG1fcGVuZGluZ1Zpc2l0ZWRMaW5rc1RpbWVyLnN0
b3AoKTsKQEAgLTk3LDggKzExMSw3IEBAIHZvaWQgVmlzaXRlZExpbmtQcm92aWRlcjo6cmVtb3Zl
QWxsKCkKICAgICBtX3RhYmxlU2l6ZSA9IDA7CiAgICAgbV90YWJsZS5jbGVhcigpOwogCi0gICAg
Zm9yIChhdXRvJiBwcm9jZXNzQW5kQ291bnQgOiBtX3Byb2Nlc3NlcykgewotICAgICAgICBXZWJQ
cm9jZXNzUHJveHkqIHByb2Nlc3MgPSBwcm9jZXNzQW5kQ291bnQua2V5OworICAgIGZvciAoV2Vi
UHJvY2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpIHsKICAgICAgICAgQVNTRVJUKHBy
b2Nlc3MtPmNvbnRleHQoKS5wcm9jZXNzZXMoKS5jb250YWlucyhwcm9jZXNzKSk7CiAgICAgICAg
IHByb2Nlc3MtPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6VmlzaXRlZExpbmtUYWJsZUNv
bnRyb2xsZXI6OlJlbW92ZUFsbFZpc2l0ZWRMaW5rcygpLCBtX2lkZW50aWZpZXIpOwogICAgIH0K
QEAgLTE3Nyw4ICsxOTAsNyBAQCB2b2lkIFZpc2l0ZWRMaW5rUHJvdmlkZXI6OnBlbmRpbmdWaXNp
dGVkCiAgICAgaWYgKGFkZGVkVmlzaXRlZExpbmtzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgZm9yIChhdXRvJiBwcm9jZXNzQW5kQ291bnQgOiBtX3Byb2Nlc3NlcykgewotICAg
ICAgICBXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MgPSBwcm9jZXNzQW5kQ291bnQua2V5OworICAg
IGZvciAoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpIHsKICAgICAgICAg
QVNTRVJUKHByb2Nlc3MtPmNvbnRleHQoKS5wcm9jZXNzZXMoKS5jb250YWlucyhwcm9jZXNzKSk7
CiAKICAgICAgICAgaWYgKGFkZGVkVmlzaXRlZExpbmtzLnNpemUoKSA+IDIwKQpAQCAtMjI5LDgg
KzI0MSw4IEBAIHZvaWQgVmlzaXRlZExpbmtQcm92aWRlcjo6cmVzaXplVGFibGUodW4KICAgICB9
CiAgICAgbV9wZW5kaW5nVmlzaXRlZExpbmtzLmNsZWFyKCk7CiAKLSAgICBmb3IgKGF1dG8mIHBy
b2Nlc3NBbmRDb3VudCA6IG1fcHJvY2Vzc2VzKQotICAgICAgICBzZW5kVGFibGUoKnByb2Nlc3NB
bmRDb3VudC5rZXkpOworICAgIGZvciAoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9j
ZXNzZXMpCisgICAgICAgIHNlbmRUYWJsZSgqcHJvY2Vzcyk7CiB9CiAKIHZvaWQgVmlzaXRlZExp
bmtQcm92aWRlcjo6c2VuZFRhYmxlKFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcykKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9WaXNpdGVkTGlua1Byb3ZpZGVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Zpc2l0ZWRMaW5rUHJvdmlkZXIuaAkocmV2aXNp
b24gMTczMDEyKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Zpc2l0ZWRMaW5rUHJvdmlk
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNiBAQAogI2luY2x1ZGUgIlZpc2l0ZWRM
aW5rVGFibGUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0xpbmtIYXNoLmg+CiAjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaENvdW50ZWRTZXQuaD4KICNpbmNsdWRlIDx3
dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3Rm
L1J1bkxvb3AuaD4KQEAgLTQ5LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIHVpbnQ2NF90IGlkZW50
aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KIAogICAgIHZvaWQgYWRkUHJv
Y2VzcyhXZWJQcm9jZXNzUHJveHkmKTsKLSAgICB2b2lkIHJlbW92ZVByb2Nlc3MoV2ViUHJvY2Vz
c1Byb3h5Jik7CisgICAgc3RhdGljIHZvaWQgcHJvY2Vzc0RpZENsb3NlKFdlYlByb2Nlc3NQcm94
eSYpOwogCiAgICAgdm9pZCBhZGRWaXNpdGVkTGlua0hhc2goV2ViQ29yZTo6TGlua0hhc2gpOwog
ICAgIHZvaWQgcmVtb3ZlQWxsKCk7CkBAIC01Nyw2ICs1Niw4IEBAIHB1YmxpYzoKIHByaXZhdGU6
CiAgICAgVmlzaXRlZExpbmtQcm92aWRlcigpOwogCisgICAgdm9pZCByZW1vdmVQcm9jZXNzKFdl
YlByb2Nlc3NQcm94eSYpOworCiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uKiwgSVBDOjpNZXNzYWdl
RGVjb2RlciYpIG92ZXJyaWRlOwogCkBAIC02Nyw3ICs2OCw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCByZXNpemVUYWJsZSh1bnNpZ25lZCBuZXdUYWJsZVNpemUpOwogICAgIHZvaWQgc2VuZFRhYmxl
KFdlYlByb2Nlc3NQcm94eSYpOwogCi0gICAgSGFzaENvdW50ZWRTZXQ8V2ViUHJvY2Vzc1Byb3h5
Kj4gbV9wcm9jZXNzZXM7CisgICAgSGFzaFNldDxXZWJQcm9jZXNzUHJveHkqPiBtX3Byb2Nlc3Nl
czsKIAogICAgIHVpbnQ2NF90IG1faWRlbnRpZmllcjsKIApJbmRleDogU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDE3MzAxMikKKysrIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NTUs
MTIgKzY1NSw2IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjbG9zZSgpCiAKICAgICBtX2lzQ2xvc2Vk
ID0gdHJ1ZTsKIAotICAgIGlmIChtX3Byb2Nlc3MtPnN0YXRlKCkgPT0gV2ViUHJvY2Vzc1Byb3h5
OjpTdGF0ZTo6UnVubmluZykgewotICAgICAgICBpZiAobV91c2VyQ29udGVudENvbnRyb2xsZXIp
Ci0gICAgICAgICAgICBtX3VzZXJDb250ZW50Q29udHJvbGxlci0+cmVtb3ZlUHJvY2VzcyhtX3By
b2Nlc3MuZ2V0KCkpOwotICAgICAgICBtX3Zpc2l0ZWRMaW5rUHJvdmlkZXItPnJlbW92ZVByb2Nl
c3MobV9wcm9jZXNzLmdldCgpKTsKLSAgICB9Ci0KICAgICBtX2JhY2tGb3J3YXJkTGlzdC0+cGFn
ZUNsb3NlZCgpOwogICAgIG1fcGFnZUNsaWVudC5wYWdlQ2xvc2VkKCk7CiAKQEAgLTQ0NTMsMTIg
KzQ0NDcsNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVzZXRTdGF0ZUFmdGVyUHJvY2VzCiAgICAg
Ly8gRklYTUU6IEl0J3Mgd2VpcmQgdGhhdCByZXNldFN0YXRlQWZ0ZXJQcm9jZXNzRXhpdGVkKCkg
aXMgY2FsbGVkIGV2ZW4gdGhvdWdoIHRoZSBwcm9jZXNzIGlzIGxhdW5jaGluZy4KICAgICBBU1NF
UlQobV9wcm9jZXNzLT5zdGF0ZSgpID09IFdlYlByb2Nlc3NQcm94eTo6U3RhdGU6OkxhdW5jaGlu
ZyB8fCBtX3Byb2Nlc3MtPnN0YXRlKCkgPT0gV2ViUHJvY2Vzc1Byb3h5OjpTdGF0ZTo6VGVybWlu
YXRlZCk7CiAKLSAgICBpZiAobV9wcm9jZXNzLT5zdGF0ZSgpID09IFdlYlByb2Nlc3NQcm94eTo6
U3RhdGU6OlRlcm1pbmF0ZWQpIHsKLSAgICAgICAgaWYgKG1fdXNlckNvbnRlbnRDb250cm9sbGVy
KQotICAgICAgICAgICAgbV91c2VyQ29udGVudENvbnRyb2xsZXItPnJlbW92ZVByb2Nlc3MobV9w
cm9jZXNzLmdldCgpKTsKLSAgICAgICAgbV92aXNpdGVkTGlua1Byb3ZpZGVyLT5yZW1vdmVQcm9j
ZXNzKG1fcHJvY2Vzcy5nZXQoKSk7Ci0gICAgfQotCiAgICAgbV9wcm9jZXNzLT5yZW1vdmVNZXNz
YWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgp
LCBtX3BhZ2VJRCk7CiAKICNpZiBQTEFURk9STShJT1MpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAkocmV2aXNpb24gMTczMDEyKQorKysgU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJUZXh0Q2hlY2tlci5oIgogI2luY2x1ZGUgIlRl
eHRDaGVja2VyU3RhdGUuaCIKICNpbmNsdWRlICJVc2VyRGF0YS5oIgorI2luY2x1ZGUgIldlYlVz
ZXJDb250ZW50Q29udHJvbGxlclByb3h5LmgiCiAjaW5jbHVkZSAiV2ViQmFja0ZvcndhcmRMaXN0
SXRlbS5oIgogI2luY2x1ZGUgIldlYkNvbnRleHQuaCIKICNpbmNsdWRlICJXZWJOYXZpZ2F0aW9u
RGF0YVN0b3JlLmgiCkBAIC0xNjIsNiArMTYzLDkgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRp
c2Nvbm5lY3QoKQogICAgIGlmIChtX2Rvd25sb2FkUHJveHlNYXApCiAgICAgICAgIG1fZG93bmxv
YWRQcm94eU1hcC0+cHJvY2Vzc0RpZENsb3NlKCk7CiAKKyAgICBWaXNpdGVkTGlua1Byb3ZpZGVy
Ojpwcm9jZXNzRGlkQ2xvc2UoKnRoaXMpOworICAgIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclBy
b3h5Ojpwcm9jZXNzRGlkQ2xvc2UoKnRoaXMpOworCiAgICAgbV9jb250ZXh0LT5kaXNjb25uZWN0
UHJvY2Vzcyh0aGlzKTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1VzZXJD
b250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyUHJveHkuY3BwCShyZXZpc2lvbiAxNzMwMTIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eU1l
c3NhZ2VzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaD4KKyNp
bmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAg
LTQyLDYgKzQzLDEzIEBAIHN0YXRpYyB1aW50NjRfdCBnZW5lcmF0ZUlkZW50aWZpZXIoKQogICAg
IHJldHVybiArK2lkZW50aWZpZXI7CiB9CiAKK3N0YXRpYyBIYXNoU2V0PFdlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5Kj4mIGFsbFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3hpZXMoKQor
eworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPEhhc2hTZXQ8V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkqPj4gcHJveGllczsKKyAg
ICByZXR1cm4gcHJveGllczsKK30KKwogUGFzc1JlZlB0cjxXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXJQcm94eT4gV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmNyZWF0ZSgpCiB7CiAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSk7CkBAIC01
MCwxMCArNTgsMTIgQEAgUGFzc1JlZlB0cjxXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eQog
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclBy
b3h5KCkKICAgICA6IG1faWRlbnRpZmllcihnZW5lcmF0ZUlkZW50aWZpZXIoKSkKIHsKKyAgICBh
bGxXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94aWVzKCkuYWRkKHRoaXMpOwogfQogCiBXZWJV
c2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6fldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5
KCkKIHsKKyAgICBhbGxXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94aWVzKCkucmVtb3ZlKHRo
aXMpOwogfQogCiB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjphZGRQcm9jZXNz
KFdlYlByb2Nlc3NQcm94eSYgd2ViUHJvY2Vzc1Byb3h5KQpAQCAtNzYsNDIgKzg2LDQ2IEBAIHZv
aWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFAKIAogdm9pZCBXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlUHJvY2VzcyhXZWJQcm9jZXNzUHJveHkmIHdlYlBy
b2Nlc3NQcm94eSkKIHsKLSAgICBBU1NFUlQobV9wcm9jZXNzZXMuY29udGFpbnMoJndlYlByb2Nl
c3NQcm94eSkpOwotCiAgICAgaWYgKG1fcHJvY2Vzc2VzLnJlbW92ZSgmd2ViUHJvY2Vzc1Byb3h5
KSkKICAgICAgICAgd2ViUHJvY2Vzc1Byb3h5LnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdl
czo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwg
bV9pZGVudGlmaWVyKTsKIH0KIAordm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6
cHJvY2Vzc0RpZENsb3NlKFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcykKK3sKKyAgICBmb3IgKFdl
YlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KiBwcm92aWRlciA6IGFsbFdlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3hpZXMoKSkKKyAgICAgICAgcHJvdmlkZXItPnJlbW92ZVByb2Nlc3MocHJv
Y2Vzcyk7Cit9CisKIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFVzZXJT
Y3JpcHQoV2ViQ29yZTo6VXNlclNjcmlwdCB1c2VyU2NyaXB0KQogewogICAgIG1fdXNlclNjcmlw
dHMuYXBwZW5kKFdURjo6bW92ZSh1c2VyU2NyaXB0KSk7CiAKLSAgICBmb3IgKGF1dG8mIHByb2Nl
c3NBbmRDb3VudCA6IG1fcHJvY2Vzc2VzKQotICAgICAgICBwcm9jZXNzQW5kQ291bnQua2V5LT5j
b25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6QWRk
VXNlclNjcmlwdHMoeyBtX3VzZXJTY3JpcHRzLmxhc3QoKSB9KSwgbV9pZGVudGlmaWVyKTsKKyAg
ICBmb3IgKFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQorICAgICAgICBw
cm9jZXNzLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJv
bGxlcjo6QWRkVXNlclNjcmlwdHMoeyBtX3VzZXJTY3JpcHRzLmxhc3QoKSB9KSwgbV9pZGVudGlm
aWVyKTsKIH0KIAogdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlQWxs
VXNlclNjcmlwdHMoKQogewogICAgIG1fdXNlclNjcmlwdHMuY2xlYXIoKTsKIAotICAgIGZvciAo
YXV0byYgcHJvY2Vzc0FuZENvdW50IDogbV9wcm9jZXNzZXMpCi0gICAgICAgIHByb2Nlc3NBbmRD
b3VudC5rZXktPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250
cm9sbGVyOjpSZW1vdmVBbGxVc2VyU2NyaXB0cygpLCBtX2lkZW50aWZpZXIpOworICAgIGZvciAo
V2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCisgICAgICAgIHByb2Nlc3Mt
PmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpS
ZW1vdmVBbGxVc2VyU2NyaXB0cygpLCBtX2lkZW50aWZpZXIpOwogfQogCiB2b2lkIFdlYlVzZXJD
b250ZW50Q29udHJvbGxlclByb3h5OjphZGRVc2VyU3R5bGVTaGVldChXZWJDb3JlOjpVc2VyU3R5
bGVTaGVldCB1c2VyU3R5bGVTaGVldCkKIHsKICAgICBtX3VzZXJTdHlsZVNoZWV0cy5hcHBlbmQo
V1RGOjptb3ZlKHVzZXJTdHlsZVNoZWV0KSk7CiAKLSAgICBmb3IgKGF1dG8mIHByb2Nlc3NBbmRD
b3VudCA6IG1fcHJvY2Vzc2VzKQotICAgICAgICBwcm9jZXNzQW5kQ291bnQua2V5LT5jb25uZWN0
aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6QWRkVXNlclN0
eWxlU2hlZXRzKHsgbV91c2VyU3R5bGVTaGVldHMubGFzdCgpIH0pLCBtX2lkZW50aWZpZXIpOwor
ICAgIGZvciAoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCisgICAgICAg
IHByb2Nlc3MtPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250
cm9sbGVyOjpBZGRVc2VyU3R5bGVTaGVldHMoeyBtX3VzZXJTdHlsZVNoZWV0cy5sYXN0KCkgfSks
IG1faWRlbnRpZmllcik7CiB9CiAKIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6
OnJlbW92ZUFsbFVzZXJTdHlsZVNoZWV0cygpCiB7CiAgICAgbV91c2VyU3R5bGVTaGVldHMuY2xl
YXIoKTsKIAotICAgIGZvciAoYXV0byYgcHJvY2Vzc0FuZENvdW50IDogbV9wcm9jZXNzZXMpCi0g
ICAgICAgIHByb2Nlc3NBbmRDb3VudC5rZXktPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMoKSwgbV9p
ZGVudGlmaWVyKTsKKyAgICBmb3IgKFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcyA6IG1fcHJvY2Vz
c2VzKQorICAgICAgICBwcm9jZXNzLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlVz
ZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRzKCksIG1faWRlbnRp
Zmllcik7CiB9CiAKIGJvb2wgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFVzZXJT
Y3JpcHRNZXNzYWdlSGFuZGxlcihXZWJTY3JpcHRNZXNzYWdlSGFuZGxlciogaGFuZGxlcikKQEAg
LTEyMyw4ICsxMzcsOCBAQCBib29sIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjphZGRV
CiAKICAgICBtX3NjcmlwdE1lc3NhZ2VIYW5kbGVycy5hZGQoaGFuZGxlci0+aWRlbnRpZmllcigp
LCBoYW5kbGVyKTsKIAotICAgIGZvciAoYXV0byYgcHJvY2Vzc0FuZENvdW50IDogbV9wcm9jZXNz
ZXMpCi0gICAgICAgIHByb2Nlc3NBbmRDb3VudC5rZXktPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNz
YWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpBZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRs
ZXJzKHsgaGFuZGxlci0+aGFuZGxlKCkgfSksIG1faWRlbnRpZmllcik7CisgICAgZm9yIChXZWJQ
cm9jZXNzUHJveHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKKyAgICAgICAgcHJvY2Vzcy0+Y29u
bmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OkFkZFVz
ZXJTY3JpcHRNZXNzYWdlSGFuZGxlcnMoeyBoYW5kbGVyLT5oYW5kbGUoKSB9KSwgbV9pZGVudGlm
aWVyKTsKICAgICAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTEzMyw4ICsxNDcsOCBAQCB2b2lk
IFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vCiB7CiAgICAgZm9yIChhdXRvIGl0
ID0gbV9zY3JpcHRNZXNzYWdlSGFuZGxlcnMuYmVnaW4oKSwgZW5kID0gbV9zY3JpcHRNZXNzYWdl
SGFuZGxlcnMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICBpZiAoaXQtPnZhbHVl
LT5uYW1lKCkgPT0gbmFtZSkgewotICAgICAgICAgICAgZm9yIChhdXRvJiBwcm9jZXNzQW5kQ291
bnQgOiBtX3Byb2Nlc3NlcykKLSAgICAgICAgICAgICAgICBwcm9jZXNzQW5kQ291bnQua2V5LT5j
b25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVt
b3ZlVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVyKGl0LT52YWx1ZS0+aWRlbnRpZmllcigpKSwgbV9p
ZGVudGlmaWVyKTsKKyAgICAgICAgICAgIGZvciAoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzIDog
bV9wcm9jZXNzZXMpCisgICAgICAgICAgICAgICAgcHJvY2Vzcy0+Y29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZVVzZXJTY3JpcHRNZXNz
YWdlSGFuZGxlcihpdC0+dmFsdWUtPmlkZW50aWZpZXIoKSksIG1faWRlbnRpZmllcik7CiAgICAg
ICAgICAgICBtX3NjcmlwdE1lc3NhZ2VIYW5kbGVycy5yZW1vdmUoaXQpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVXNlckNv
bnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
UHJveHkuaAkocmV2aXNpb24gMTczMDEyKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Vz
ZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmgJKHdvcmtpbmcgY29weSkK
QEAgLTI4LDEwICsyOCwxMSBAQAogCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaENvdW50ZWRTZXQuaD4KICNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVk
ZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBEYXRhUmVmZXJlbmNl
OwpAQCAtNTUsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgdWludDY0X3QgaWRlbnRpZmllcigpIGNv
bnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQogCiAgICAgdm9pZCBhZGRQcm9jZXNzKFdlYlBy
b2Nlc3NQcm94eSYpOwotICAgIHZvaWQgcmVtb3ZlUHJvY2VzcyhXZWJQcm9jZXNzUHJveHkmKTsK
KyAgICBzdGF0aWMgdm9pZCBwcm9jZXNzRGlkQ2xvc2UoV2ViUHJvY2Vzc1Byb3h5Jik7CiAKICAg
ICB2b2lkIGFkZFVzZXJTY3JpcHQoV2ViQ29yZTo6VXNlclNjcmlwdCk7CiAgICAgdm9pZCByZW1v
dmVBbGxVc2VyU2NyaXB0cygpOwpAQCAtNzAsMTMgKzcxLDE1IEBAIHB1YmxpYzoKIHByaXZhdGU6
CiAgICAgZXhwbGljaXQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkoKTsKIAorICAgIHZv
aWQgcmVtb3ZlUHJvY2VzcyhXZWJQcm9jZXNzUHJveHkmKTsKKwogICAgIC8vIElQQzo6TWVzc2Fn
ZVJlY2VpdmVyLgogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24qLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRpZFBv
c3RNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiosIHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJh
bWVJRCwgdWludDY0X3QgbWVzc2FnZUhhbmRsZXJJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
Jik7CiAKICAgICB1aW50NjRfdCBtX2lkZW50aWZpZXI7Ci0gICAgSGFzaENvdW50ZWRTZXQ8V2Vi
UHJvY2Vzc1Byb3h5Kj4gbV9wcm9jZXNzZXM7CisgICAgSGFzaFNldDxXZWJQcm9jZXNzUHJveHkq
PiBtX3Byb2Nlc3NlczsKIAogICAgIFZlY3RvcjxXZWJDb3JlOjpVc2VyU2NyaXB0PiBtX3VzZXJT
Y3JpcHRzOwogICAgIFZlY3RvcjxXZWJDb3JlOjpVc2VyU3R5bGVTaGVldD4gbV91c2VyU3R5bGVT
aGVldHM7Cg==
</data>
<flag name="review"
          id="262097"
          type_id="1"
          status="-"
          setter="sam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>237378</attachid>
            <date>2014-08-29 14:30:26 -0700</date>
            <delta_ts>2014-08-29 14:33:56 -0700</delta_ts>
            <desc>proposed fix</desc>
            <filename>VisitedLinkProvider.txt</filename>
            <type>text/plain</type>
            <size>16740</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3MzExOCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ5IEBACisyMDE0LTA4LTI5ICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIENyYXNoZXMgaW4gSVBDIGNv
ZGUgdW5kZXIgVmlzaXRlZExpbmtQcm92aWRlcjo6cGVuZGluZ1Zpc2l0ZWRMaW5rc1RpbWVyRmly
ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNjM4
NAorICAgICAgICByZGFyOi8vcHJvYmxlbS8xNjk5MTIxMworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFZpc2l0ZWRMaW5rUHJvdmlkZXIgcHJvY2VzcyB0
cmFja2luZyByZWxpZWQgb24gYSBjb21iaW5hdGlvbiBvZiBXZWJQYWdlUHJveHkgcHJvY2Vzcwor
ICAgICAgICBsaWZlY3ljbGUgbm90aWZpY2F0aW9ucyBhbmQgY2hlY2tpbmcgcHJvY2VzcyBzdGF0
ZS4gQXMgZXZpZGVuY2VkIGJ5IG11bHRpcGxlIEZJWE1FcywKKyAgICAgICAgdGhlc2UgYXJlIG5v
dCB5ZXQgYXMgcmVsaWFibGUgYXMgdGhleSBzaG91bGQgYmUuCisgICAgICAgIAorICAgICAgICBD
aGFuZ2VkIHRvIHVucmVnaXN0ZXIgYSBwcm9jZXNzIHdoZW4gaXQgY2xvc2VzLCBub3Qgd2hlbiBp
dCBubyBsb25nZXIgaGFzIGFueSBwYWdlcworICAgICAgICB1c2luZyB0aGUgcGFydGljdWxhciBW
aXNpdGVkTGlua1Byb3ZpZGVyIG9yIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LiBUaGlz
CisgICAgICAgIGlzIGEgZGVvcHRpbWl6YXRpb24gdGhhdCBzaG91bGQgbm90IG1hdHRlciBpbiBw
cmFjdGljZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5Ojp+V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkpOgorICAgICAgICAo
V2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlUHJvY2Vzcyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjphZGRVc2VyU2Ny
aXB0KToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJl
bW92ZUFsbFVzZXJTY3JpcHRzKToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250
cm9sbGVyUHJveHk6OmFkZFVzZXJTdHlsZVNoZWV0KToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZUFsbFVzZXJTdHlsZVNoZWV0cyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjphZGRVc2VyU2NyaXB0
TWVzc2FnZUhhbmRsZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXJQcm94eTo6cmVtb3ZlVXNlck1lc3NhZ2VIYW5kbGVyRm9yTmFtZSk6CisgICAgICAgICogVUlQ
cm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL1Zpc2l0ZWRMaW5rUHJvdmlkZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpWaXNpdGVkTGlua1Byb3ZpZGVyOjp+VmlzaXRlZExpbmtQcm92aWRlcik6CisgICAgICAgIChX
ZWJLaXQ6OlZpc2l0ZWRMaW5rUHJvdmlkZXI6OnJlbW92ZVByb2Nlc3MpOgorICAgICAgICAoV2Vi
S2l0OjpWaXNpdGVkTGlua1Byb3ZpZGVyOjpyZW1vdmVBbGwpOgorICAgICAgICAoV2ViS2l0OjpW
aXNpdGVkTGlua1Byb3ZpZGVyOjpwZW5kaW5nVmlzaXRlZExpbmtzVGltZXJGaXJlZCk6CisgICAg
ICAgIChXZWJLaXQ6OlZpc2l0ZWRMaW5rUHJvdmlkZXI6OnJlc2l6ZVRhYmxlKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvVmlzaXRlZExpbmtQcm92aWRlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OldlYlBhZ2VQ
cm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y2xvc2UpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OnByb2Nlc3NEaWRGaW5pc2hMYXVuY2hpbmcpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlc2V0U3RhdGVBZnRlclByb2Nlc3NFeGl0ZWQpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzUHJveHk6OmRpc2Nvbm5lY3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUHJveHk6OmFkZFZpc2l0ZWRMaW5rUHJvdmlkZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzUHJveHk6OmFkZFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KToKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpkaWREZXN0cm95VmlzaXRlZExpbmtQcm92aWRlcik6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZGlkRGVzdHJveVdlYlVzZXJDb250
ZW50Q29udHJvbGxlclByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5
Lmg6CisKIDIwMTQtMDgtMjkgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAK
ICAgICAgICAgV2ViUGFnZVByb3h5OjpjbG9zZSgpIGlzIGEgbm8tb3AgZm9yIHRlcm1pbmF0ZWQg
cHJvY2Vzc2VzCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVmlzaXRlZExpbmtQcm92
aWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Zpc2l0ZWRM
aW5rUHJvdmlkZXIuY3BwCShyZXZpc2lvbiAxNzMwMTIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvVmlzaXRlZExpbmtQcm92aWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUz
LDggQEAgUGFzc1JlZlB0cjxWaXNpdGVkTGlua1Byb3ZpZGVyPiBWaXNpdGVkTAogCiBWaXNpdGVk
TGlua1Byb3ZpZGVyOjp+VmlzaXRlZExpbmtQcm92aWRlcigpCiB7Ci0gICAgQVNTRVJUKG1fcHJv
Y2Vzc2VzLmlzRW1wdHkoKSk7CisgICAgZm9yIChXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MgOiBt
X3Byb2Nlc3NlcykKKyAgICAgICAgcHJvY2Vzcy0+ZGlkRGVzdHJveVZpc2l0ZWRMaW5rUHJvdmlk
ZXIoKnRoaXMpOwogfQogCiBWaXNpdGVkTGlua1Byb3ZpZGVyOjpWaXNpdGVkTGlua1Byb3ZpZGVy
KCkKQEAgLTg1LDggKzg2LDggQEAgdm9pZCBWaXNpdGVkTGlua1Byb3ZpZGVyOjpyZW1vdmVQcm9j
ZXNzKAogewogICAgIEFTU0VSVChtX3Byb2Nlc3Nlcy5jb250YWlucygmcHJvY2VzcykpOwogCi0g
ICAgaWYgKG1fcHJvY2Vzc2VzLnJlbW92ZSgmcHJvY2VzcykpCi0gICAgICAgIHByb2Nlc3MucmVt
b3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpWaXNpdGVkTGlua1Byb3ZpZGVyOjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllcik7CisgICAgbV9wcm9jZXNzZXMucmVtb3ZlKCZw
cm9jZXNzKTsKKyAgICBwcm9jZXNzLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6Vmlz
aXRlZExpbmtQcm92aWRlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2lkZW50aWZpZXIpOwog
fQogCiB2b2lkIFZpc2l0ZWRMaW5rUHJvdmlkZXI6OnJlbW92ZUFsbCgpCkBAIC05Nyw4ICs5OCw3
IEBAIHZvaWQgVmlzaXRlZExpbmtQcm92aWRlcjo6cmVtb3ZlQWxsKCkKICAgICBtX3RhYmxlU2l6
ZSA9IDA7CiAgICAgbV90YWJsZS5jbGVhcigpOwogCi0gICAgZm9yIChhdXRvJiBwcm9jZXNzQW5k
Q291bnQgOiBtX3Byb2Nlc3NlcykgewotICAgICAgICBXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3Mg
PSBwcm9jZXNzQW5kQ291bnQua2V5OworICAgIGZvciAoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNz
IDogbV9wcm9jZXNzZXMpIHsKICAgICAgICAgQVNTRVJUKHByb2Nlc3MtPmNvbnRleHQoKS5wcm9j
ZXNzZXMoKS5jb250YWlucyhwcm9jZXNzKSk7CiAgICAgICAgIHByb2Nlc3MtPmNvbm5lY3Rpb24o
KS0+c2VuZChNZXNzYWdlczo6VmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXI6OlJlbW92ZUFsbFZp
c2l0ZWRMaW5rcygpLCBtX2lkZW50aWZpZXIpOwogICAgIH0KQEAgLTE3Nyw4ICsxNzcsNyBAQCB2
b2lkIFZpc2l0ZWRMaW5rUHJvdmlkZXI6OnBlbmRpbmdWaXNpdGVkCiAgICAgaWYgKGFkZGVkVmlz
aXRlZExpbmtzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZm9yIChhdXRvJiBw
cm9jZXNzQW5kQ291bnQgOiBtX3Byb2Nlc3NlcykgewotICAgICAgICBXZWJQcm9jZXNzUHJveHkq
IHByb2Nlc3MgPSBwcm9jZXNzQW5kQ291bnQua2V5OworICAgIGZvciAoV2ViUHJvY2Vzc1Byb3h5
KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpIHsKICAgICAgICAgQVNTRVJUKHByb2Nlc3MtPmNvbnRl
eHQoKS5wcm9jZXNzZXMoKS5jb250YWlucyhwcm9jZXNzKSk7CiAKICAgICAgICAgaWYgKGFkZGVk
VmlzaXRlZExpbmtzLnNpemUoKSA+IDIwKQpAQCAtMjI5LDggKzIyOCw4IEBAIHZvaWQgVmlzaXRl
ZExpbmtQcm92aWRlcjo6cmVzaXplVGFibGUodW4KICAgICB9CiAgICAgbV9wZW5kaW5nVmlzaXRl
ZExpbmtzLmNsZWFyKCk7CiAKLSAgICBmb3IgKGF1dG8mIHByb2Nlc3NBbmRDb3VudCA6IG1fcHJv
Y2Vzc2VzKQotICAgICAgICBzZW5kVGFibGUoKnByb2Nlc3NBbmRDb3VudC5rZXkpOworICAgIGZv
ciAoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCisgICAgICAgIHNlbmRU
YWJsZSgqcHJvY2Vzcyk7CiB9CiAKIHZvaWQgVmlzaXRlZExpbmtQcm92aWRlcjo6c2VuZFRhYmxl
KFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9WaXNpdGVkTGlua1Byb3ZpZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1Zpc2l0ZWRMaW5rUHJvdmlkZXIuaAkocmV2aXNpb24gMTczMDEyKQorKysgU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1Zpc2l0ZWRMaW5rUHJvdmlkZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtMzAsNyArMzAsNiBAQAogI2luY2x1ZGUgIlZpc2l0ZWRMaW5rVGFibGUuaCIKICNpbmNsdWRl
IDxXZWJDb3JlL0xpbmtIYXNoLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRl
IDx3dGYvSGFzaENvdW50ZWRTZXQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KQEAgLTY3LDcg
KzY2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlc2l6ZVRhYmxlKHVuc2lnbmVkIG5ld1RhYmxl
U2l6ZSk7CiAgICAgdm9pZCBzZW5kVGFibGUoV2ViUHJvY2Vzc1Byb3h5Jik7CiAKLSAgICBIYXNo
Q291bnRlZFNldDxXZWJQcm9jZXNzUHJveHkqPiBtX3Byb2Nlc3NlczsKKyAgICBIYXNoU2V0PFdl
YlByb2Nlc3NQcm94eSo+IG1fcHJvY2Vzc2VzOwogCiAgICAgdWludDY0X3QgbV9pZGVudGlmaWVy
OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2
aXNpb24gMTczMDEyKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM3Myw4ICszNzMsOCBAQCBXZWJQYWdlUHJveHk6OldlYlBh
Z2VQcm94eShQYWdlQ2xpZW50JiBwCiB7CiAgICAgaWYgKG1fcHJvY2Vzcy0+c3RhdGUoKSA9PSBX
ZWJQcm9jZXNzUHJveHk6OlN0YXRlOjpSdW5uaW5nKSB7CiAgICAgICAgIGlmIChtX3VzZXJDb250
ZW50Q29udHJvbGxlcikKLSAgICAgICAgICAgIG1fdXNlckNvbnRlbnRDb250cm9sbGVyLT5hZGRQ
cm9jZXNzKG1fcHJvY2Vzcy5nZXQoKSk7Ci0gICAgICAgIG1fdmlzaXRlZExpbmtQcm92aWRlci0+
YWRkUHJvY2VzcyhtX3Byb2Nlc3MuZ2V0KCkpOworICAgICAgICAgICAgbV9wcm9jZXNzLT5hZGRX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSgqbV91c2VyQ29udGVudENvbnRyb2xsZXIpOwor
ICAgICAgICBtX3Byb2Nlc3MtPmFkZFZpc2l0ZWRMaW5rUHJvdmlkZXIobV92aXNpdGVkTGlua1By
b3ZpZGVyLmdldCgpKTsKICAgICB9CiAKICAgICB1cGRhdGVWaWV3U3RhdGUoKTsKQEAgLTY1NSwx
MiArNjU1LDYgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNsb3NlKCkKIAogICAgIG1faXNDbG9zZWQg
PSB0cnVlOwogCi0gICAgaWYgKG1fcHJvY2Vzcy0+c3RhdGUoKSA9PSBXZWJQcm9jZXNzUHJveHk6
OlN0YXRlOjpSdW5uaW5nKSB7Ci0gICAgICAgIGlmIChtX3VzZXJDb250ZW50Q29udHJvbGxlcikK
LSAgICAgICAgICAgIG1fdXNlckNvbnRlbnRDb250cm9sbGVyLT5yZW1vdmVQcm9jZXNzKG1fcHJv
Y2Vzcy5nZXQoKSk7Ci0gICAgICAgIG1fdmlzaXRlZExpbmtQcm92aWRlci0+cmVtb3ZlUHJvY2Vz
cyhtX3Byb2Nlc3MuZ2V0KCkpOwotICAgIH0KLQogICAgIG1fYmFja0ZvcndhcmRMaXN0LT5wYWdl
Q2xvc2VkKCk7CiAgICAgbV9wYWdlQ2xpZW50LnBhZ2VDbG9zZWQoKTsKIApAQCAtMzEzNCw4ICsz
MTI4LDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNvbm5lY3Rpb25XaWxsQ2xvc2UoSQogdm9pZCBX
ZWJQYWdlUHJveHk6OnByb2Nlc3NEaWRGaW5pc2hMYXVuY2hpbmcoKQogewogICAgIGlmIChtX3Vz
ZXJDb250ZW50Q29udHJvbGxlcikKLSAgICAgICAgbV91c2VyQ29udGVudENvbnRyb2xsZXItPmFk
ZFByb2Nlc3MobV9wcm9jZXNzLmdldCgpKTsKLSAgICBtX3Zpc2l0ZWRMaW5rUHJvdmlkZXItPmFk
ZFByb2Nlc3MobV9wcm9jZXNzLmdldCgpKTsKKyAgICAgICAgbV9wcm9jZXNzLT5hZGRXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJQcm94eSgqbV91c2VyQ29udGVudENvbnRyb2xsZXIpOworICAgIG1f
cHJvY2Vzcy0+YWRkVmlzaXRlZExpbmtQcm92aWRlcihtX3Zpc2l0ZWRMaW5rUHJvdmlkZXIuZ2V0
KCkpOwogfQogCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCkBAIC00NDUzLDEyICs0
NDQ3LDYgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlc2V0U3RhdGVBZnRlclByb2NlcwogICAgIC8v
IEZJWE1FOiBJdCdzIHdlaXJkIHRoYXQgcmVzZXRTdGF0ZUFmdGVyUHJvY2Vzc0V4aXRlZCgpIGlz
IGNhbGxlZCBldmVuIHRob3VnaCB0aGUgcHJvY2VzcyBpcyBsYXVuY2hpbmcuCiAgICAgQVNTRVJU
KG1fcHJvY2Vzcy0+c3RhdGUoKSA9PSBXZWJQcm9jZXNzUHJveHk6OlN0YXRlOjpMYXVuY2hpbmcg
fHwgbV9wcm9jZXNzLT5zdGF0ZSgpID09IFdlYlByb2Nlc3NQcm94eTo6U3RhdGU6OlRlcm1pbmF0
ZWQpOwogCi0gICAgaWYgKG1fcHJvY2Vzcy0+c3RhdGUoKSA9PSBXZWJQcm9jZXNzUHJveHk6OlN0
YXRlOjpUZXJtaW5hdGVkKSB7Ci0gICAgICAgIGlmIChtX3VzZXJDb250ZW50Q29udHJvbGxlcikK
LSAgICAgICAgICAgIG1fdXNlckNvbnRlbnRDb250cm9sbGVyLT5yZW1vdmVQcm9jZXNzKG1fcHJv
Y2Vzcy5nZXQoKSk7Ci0gICAgICAgIG1fdmlzaXRlZExpbmtQcm92aWRlci0+cmVtb3ZlUHJvY2Vz
cyhtX3Byb2Nlc3MuZ2V0KCkpOwotICAgIH0KLQogICAgIG1fcHJvY2Vzcy0+cmVtb3ZlTWVzc2Fn
ZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwg
bV9wYWdlSUQpOwogCiAjaWYgUExBVEZPUk0oSU9TKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAJKHJldmlzaW9uIDE3MzAxMikKKysrIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiVGV4dENoZWNrZXIuaCIKICNpbmNsdWRlICJUZXh0
Q2hlY2tlclN0YXRlLmgiCiAjaW5jbHVkZSAiVXNlckRhdGEuaCIKKyNpbmNsdWRlICJXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJQcm94eS5oIgogI2luY2x1ZGUgIldlYkJhY2tGb3J3YXJkTGlzdEl0
ZW0uaCIKICNpbmNsdWRlICJXZWJDb250ZXh0LmgiCiAjaW5jbHVkZSAiV2ViTmF2aWdhdGlvbkRh
dGFTdG9yZS5oIgpAQCAtMTYyLDYgKzE2MywxNCBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlz
Y29ubmVjdCgpCiAgICAgaWYgKG1fZG93bmxvYWRQcm94eU1hcCkKICAgICAgICAgbV9kb3dubG9h
ZFByb3h5TWFwLT5wcm9jZXNzRGlkQ2xvc2UoKTsKIAorICAgIGZvciAoVmlzaXRlZExpbmtQcm92
aWRlciogdmlzaXRlZExpbmtQcm92aWRlciA6IG1fdmlzaXRlZExpbmtQcm92aWRlcnMpCisgICAg
ICAgIHZpc2l0ZWRMaW5rUHJvdmlkZXItPnJlbW92ZVByb2Nlc3MoKnRoaXMpOworICAgIG1fdmlz
aXRlZExpbmtQcm92aWRlcnMuY2xlYXIoKTsKKworICAgIGZvciAoV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyUHJveHkqIHdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5IDogbV93ZWJVc2VyQ29u
dGVudENvbnRyb2xsZXJQcm94aWVzKQorICAgICAgICB3ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQ
cm94eS0+cmVtb3ZlUHJvY2VzcygqdGhpcyk7CisgICAgbV93ZWJVc2VyQ29udGVudENvbnRyb2xs
ZXJQcm94aWVzLmNsZWFyKCk7CisKICAgICBtX2NvbnRleHQtPmRpc2Nvbm5lY3RQcm9jZXNzKHRo
aXMpOwogfQogCkBAIC0yMzQsNiArMjQzLDMwIEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpyZW1v
dmVXZWJQYWdlKHVpbnQKICAgICBkaXNjb25uZWN0KCk7CiB9CiAKK3ZvaWQgV2ViUHJvY2Vzc1By
b3h5OjphZGRWaXNpdGVkTGlua1Byb3ZpZGVyKFZpc2l0ZWRMaW5rUHJvdmlkZXImIHByb3ZpZGVy
KQoreworICAgIG1fdmlzaXRlZExpbmtQcm92aWRlcnMuYWRkKCZwcm92aWRlcik7CisgICAgcHJv
dmlkZXIuYWRkUHJvY2VzcygqdGhpcyk7Cit9CisKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5OjphZGRX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eShXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94
eSYgcHJveHkpCit7CisgICAgbV93ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94aWVzLmFkZCgm
cHJveHkpOworICAgIHByb3h5LmFkZFByb2Nlc3MoKnRoaXMpOworfQorCit2b2lkIFdlYlByb2Nl
c3NQcm94eTo6ZGlkRGVzdHJveVZpc2l0ZWRMaW5rUHJvdmlkZXIoVmlzaXRlZExpbmtQcm92aWRl
ciYgcHJvdmlkZXIpCit7CisgICAgQVNTRVJUKG1fdmlzaXRlZExpbmtQcm92aWRlcnMuY29udGFp
bnMoJnByb3ZpZGVyKSk7CisgICAgbV92aXNpdGVkTGlua1Byb3ZpZGVycy5yZW1vdmUoJnByb3Zp
ZGVyKTsKK30KKwordm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZERlc3Ryb3lXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eShXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSYgcHJveHkpCit7
CisgICAgQVNTRVJUKG1fd2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveGllcy5jb250YWlucygm
cHJveHkpKTsKKyAgICBtX3dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3hpZXMucmVtb3ZlKCZw
cm94eSk7Cit9CisKIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIFdlYlByb2Nlc3NQcm94eTo6d2Vi
QmFja0ZvcndhcmRJdGVtKHVpbnQ2NF90IGl0ZW1JRCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9i
YWNrRm9yd2FyZExpc3RJdGVtTWFwLmdldChpdGVtSUQpOwpJbmRleDogU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAkocmV2aXNpb24gMTczMDEyKQorKysgU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC05
MCw2ICs5MCwxMSBAQCBwdWJsaWM6CiAgICAgV1RGOjpJdGVyYXRvclJhbmdlPFdlYlBhZ2VQcm94
eU1hcDo6Y29uc3RfaXRlcmF0b3I6OlZhbHVlcz4gcGFnZXMoKSBjb25zdCB7IHJldHVybiBtX3Bh
Z2VNYXAudmFsdWVzKCk7IH0KICAgICB1bnNpZ25lZCBwYWdlQ291bnQoKSBjb25zdCB7IHJldHVy
biBtX3BhZ2VNYXAuc2l6ZSgpOyB9CiAKKyAgICB2b2lkIGFkZFZpc2l0ZWRMaW5rUHJvdmlkZXIo
VmlzaXRlZExpbmtQcm92aWRlciYpOworICAgIHZvaWQgYWRkV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyUHJveHkoV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkmKTsKKyAgICB2b2lkIGRpZERl
c3Ryb3lWaXNpdGVkTGlua1Byb3ZpZGVyKFZpc2l0ZWRMaW5rUHJvdmlkZXImKTsKKyAgICB2b2lk
IGRpZERlc3Ryb3lXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eShXZWJVc2VyQ29udGVudENv
bnRyb2xsZXJQcm94eSYpOworCiAgICAgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogd2ViQmFja0Zv
cndhcmRJdGVtKHVpbnQ2NF90IGl0ZW1JRCkgY29uc3Q7CiAKICAgICBSZXNwb25zaXZlbmVzc1Rp
bWVyKiByZXNwb25zaXZlbmVzc1RpbWVyKCkgeyByZXR1cm4gJm1fcmVzcG9uc2l2ZW5lc3NUaW1l
cjsgfQpAQCAtMjE0LDYgKzIxOSw5IEBAIHByaXZhdGU6CiAgICAgV2ViRnJhbWVQcm94eU1hcCBt
X2ZyYW1lTWFwOwogICAgIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW1NYXAgbV9iYWNrRm9yd2FyZExp
c3RJdGVtTWFwOwogCisgICAgSGFzaFNldDxWaXNpdGVkTGlua1Byb3ZpZGVyKj4gbV92aXNpdGVk
TGlua1Byb3ZpZGVyczsKKyAgICBIYXNoU2V0PFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5
Kj4gbV93ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94aWVzOworCiAgICAgc3RkOjp1bmlxdWVf
cHRyPERvd25sb2FkUHJveHlNYXA+IG1fZG93bmxvYWRQcm94eU1hcDsKIAogI2lmIEVOQUJMRShD
VVNUT01fUFJPVE9DT0xTKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1VzZXJDb250
ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
UHJveHkuY3BwCShyZXZpc2lvbiAxNzMwMTIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
VXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01NCw2ICs1NCw4IEBAIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpXZWJV
c2VyQ28KIAogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6On5XZWJVc2VyQ29udGVudENv
bnRyb2xsZXJQcm94eSgpCiB7CisgICAgZm9yIChXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MgOiBt
X3Byb2Nlc3NlcykKKyAgICAgICAgcHJvY2Vzcy0+ZGlkRGVzdHJveVdlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5KCp0aGlzKTsKIH0KIAogdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQ
cm94eTo6YWRkUHJvY2VzcyhXZWJQcm9jZXNzUHJveHkmIHdlYlByb2Nlc3NQcm94eSkKQEAgLTc4
LDQwICs4MCw0MCBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vCiB7
CiAgICAgQVNTRVJUKG1fcHJvY2Vzc2VzLmNvbnRhaW5zKCZ3ZWJQcm9jZXNzUHJveHkpKTsKIAot
ICAgIGlmIChtX3Byb2Nlc3Nlcy5yZW1vdmUoJndlYlByb2Nlc3NQcm94eSkpCi0gICAgICAgIHdl
YlByb2Nlc3NQcm94eS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlVzZXJDb250
ZW50Q29udHJvbGxlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllcik7
CisgICAgbV9wcm9jZXNzZXMucmVtb3ZlKCZ3ZWJQcm9jZXNzUHJveHkpOworICAgIHdlYlByb2Nl
c3NQcm94eS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllcik7CiB9CiAK
IHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFVzZXJTY3JpcHQoV2ViQ29y
ZTo6VXNlclNjcmlwdCB1c2VyU2NyaXB0KQogewogICAgIG1fdXNlclNjcmlwdHMuYXBwZW5kKFdU
Rjo6bW92ZSh1c2VyU2NyaXB0KSk7CiAKLSAgICBmb3IgKGF1dG8mIHByb2Nlc3NBbmRDb3VudCA6
IG1fcHJvY2Vzc2VzKQotICAgICAgICBwcm9jZXNzQW5kQ291bnQua2V5LT5jb25uZWN0aW9uKCkt
PnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6QWRkVXNlclNjcmlwdHMo
eyBtX3VzZXJTY3JpcHRzLmxhc3QoKSB9KSwgbV9pZGVudGlmaWVyKTsKKyAgICBmb3IgKFdlYlBy
b2Nlc3NQcm94eSogcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQorICAgICAgICBwcm9jZXNzLT5jb25u
ZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6QWRkVXNl
clNjcmlwdHMoeyBtX3VzZXJTY3JpcHRzLmxhc3QoKSB9KSwgbV9pZGVudGlmaWVyKTsKIH0KIAog
dm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlQWxsVXNlclNjcmlwdHMo
KQogewogICAgIG1fdXNlclNjcmlwdHMuY2xlYXIoKTsKIAotICAgIGZvciAoYXV0byYgcHJvY2Vz
c0FuZENvdW50IDogbV9wcm9jZXNzZXMpCi0gICAgICAgIHByb2Nlc3NBbmRDb3VudC5rZXktPmNv
bm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1v
dmVBbGxVc2VyU2NyaXB0cygpLCBtX2lkZW50aWZpZXIpOworICAgIGZvciAoV2ViUHJvY2Vzc1By
b3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCisgICAgICAgIHByb2Nlc3MtPmNvbm5lY3Rpb24o
KS0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVBbGxVc2Vy
U2NyaXB0cygpLCBtX2lkZW50aWZpZXIpOwogfQogCiB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJv
bGxlclByb3h5OjphZGRVc2VyU3R5bGVTaGVldChXZWJDb3JlOjpVc2VyU3R5bGVTaGVldCB1c2Vy
U3R5bGVTaGVldCkKIHsKICAgICBtX3VzZXJTdHlsZVNoZWV0cy5hcHBlbmQoV1RGOjptb3ZlKHVz
ZXJTdHlsZVNoZWV0KSk7CiAKLSAgICBmb3IgKGF1dG8mIHByb2Nlc3NBbmRDb3VudCA6IG1fcHJv
Y2Vzc2VzKQotICAgICAgICBwcm9jZXNzQW5kQ291bnQua2V5LT5jb25uZWN0aW9uKCktPnNlbmQo
TWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6QWRkVXNlclN0eWxlU2hlZXRzKHsg
bV91c2VyU3R5bGVTaGVldHMubGFzdCgpIH0pLCBtX2lkZW50aWZpZXIpOworICAgIGZvciAoV2Vi
UHJvY2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCisgICAgICAgIHByb2Nlc3MtPmNv
bm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpBZGRV
c2VyU3R5bGVTaGVldHMoeyBtX3VzZXJTdHlsZVNoZWV0cy5sYXN0KCkgfSksIG1faWRlbnRpZmll
cik7CiB9CiAKIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZUFsbFVz
ZXJTdHlsZVNoZWV0cygpCiB7CiAgICAgbV91c2VyU3R5bGVTaGVldHMuY2xlYXIoKTsKIAotICAg
IGZvciAoYXV0byYgcHJvY2Vzc0FuZENvdW50IDogbV9wcm9jZXNzZXMpCi0gICAgICAgIHByb2Nl
c3NBbmRDb3VudC5rZXktPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRl
bnRDb250cm9sbGVyOjpSZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMoKSwgbV9pZGVudGlmaWVyKTsK
KyAgICBmb3IgKFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQorICAgICAg
ICBwcm9jZXNzLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29u
dHJvbGxlcjo6UmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRzKCksIG1faWRlbnRpZmllcik7CiB9CiAK
IGJvb2wgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFVzZXJTY3JpcHRNZXNzYWdl
SGFuZGxlcihXZWJTY3JpcHRNZXNzYWdlSGFuZGxlciogaGFuZGxlcikKQEAgLTEyMyw4ICsxMjUs
OCBAQCBib29sIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjphZGRVCiAKICAgICBtX3Nj
cmlwdE1lc3NhZ2VIYW5kbGVycy5hZGQoaGFuZGxlci0+aWRlbnRpZmllcigpLCBoYW5kbGVyKTsK
IAotICAgIGZvciAoYXV0byYgcHJvY2Vzc0FuZENvdW50IDogbV9wcm9jZXNzZXMpCi0gICAgICAg
IHByb2Nlc3NBbmRDb3VudC5rZXktPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyOjpBZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXJzKHsgaGFuZGxl
ci0+aGFuZGxlKCkgfSksIG1faWRlbnRpZmllcik7CisgICAgZm9yIChXZWJQcm9jZXNzUHJveHkq
IHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKKyAgICAgICAgcHJvY2Vzcy0+Y29ubmVjdGlvbigpLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OkFkZFVzZXJTY3JpcHRNZXNz
YWdlSGFuZGxlcnMoeyBoYW5kbGVyLT5oYW5kbGUoKSB9KSwgbV9pZGVudGlmaWVyKTsKICAgICAK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTEzMyw4ICsxMzUsOCBAQCB2b2lkIFdlYlVzZXJDb250
ZW50Q29udHJvbGxlclByb3h5OjpyZW1vCiB7CiAgICAgZm9yIChhdXRvIGl0ID0gbV9zY3JpcHRN
ZXNzYWdlSGFuZGxlcnMuYmVnaW4oKSwgZW5kID0gbV9zY3JpcHRNZXNzYWdlSGFuZGxlcnMuZW5k
KCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICBpZiAoaXQtPnZhbHVlLT5uYW1lKCkgPT0g
bmFtZSkgewotICAgICAgICAgICAgZm9yIChhdXRvJiBwcm9jZXNzQW5kQ291bnQgOiBtX3Byb2Nl
c3NlcykKLSAgICAgICAgICAgICAgICBwcm9jZXNzQW5kQ291bnQua2V5LT5jb25uZWN0aW9uKCkt
PnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlVXNlclNjcmlw
dE1lc3NhZ2VIYW5kbGVyKGl0LT52YWx1ZS0+aWRlbnRpZmllcigpKSwgbV9pZGVudGlmaWVyKTsK
KyAgICAgICAgICAgIGZvciAoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMp
CisgICAgICAgICAgICAgICAgcHJvY2Vzcy0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZVVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcihp
dC0+dmFsdWUtPmlkZW50aWZpZXIoKSksIG1faWRlbnRpZmllcik7CiAgICAgICAgICAgICBtX3Nj
cmlwdE1lc3NhZ2VIYW5kbGVycy5yZW1vdmUoaXQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaAkocmV2
aXNpb24gMTczMDEyKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dl
YlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDEwICsy
OCwxMSBAQAogCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaENvdW50ZWRTZXQuaD4KICNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KIAogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBEYXRhUmVmZXJlbmNlOwpAQCAtNzYsNyAr
NzcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUG9zdE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
KiwgdWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBtZXNzYWdlSGFu
ZGxlcklELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKTsKIAogICAgIHVpbnQ2NF90IG1faWRl
bnRpZmllcjsKLSAgICBIYXNoQ291bnRlZFNldDxXZWJQcm9jZXNzUHJveHkqPiBtX3Byb2Nlc3Nl
czsKKyAgICBIYXNoU2V0PFdlYlByb2Nlc3NQcm94eSo+IG1fcHJvY2Vzc2VzOwogCiAgICAgVmVj
dG9yPFdlYkNvcmU6OlVzZXJTY3JpcHQ+IG1fdXNlclNjcmlwdHM7CiAgICAgVmVjdG9yPFdlYkNv
cmU6OlVzZXJTdHlsZVNoZWV0PiBtX3VzZXJTdHlsZVNoZWV0czsK
</data>
<flag name="review"
          id="262104"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>