<?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>163148</bug_id>
          
          <creation_ts>2016-10-07 15:38:29 -0700</creation_ts>
          <short_desc>Move StyleResolver ownership from Document/ShadowRoot to Style::Scope</short_desc>
          <delta_ts>2016-10-08 01:44:38 -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>CSS</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1237821</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2016-10-07 15:38:29 -0700</bug_when>
    <thetext>Reduce duplication between Document and ShadowRoot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1237827</commentid>
    <comment_count>1</comment_count>
      <attachid>290978</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2016-10-07 15:54:49 -0700</bug_when>
    <thetext>Created attachment 290978
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1237949</commentid>
    <comment_count>2</comment_count>
      <attachid>290978</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-08 01:44:35 -0700</bug_when>
    <thetext>Comment on attachment 290978
patch

Clearing flags on attachment: 290978

Committed r206951: &lt;http://trac.webkit.org/changeset/206951&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1237950</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-08 01:44:38 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>290978</attachid>
            <date>2016-10-07 15:54:49 -0700</date>
            <delta_ts>2016-10-08 01:44:35 -0700</delta_ts>
            <desc>patch</desc>
            <filename>styleresolver-move-to-scope-4.patch</filename>
            <type>text/plain</type>
            <size>32501</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNjk0MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc5IEBACisyMDE2LTEwLTA3ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIFN0eWxlUmVzb2x2ZXIg
b3duZXJzaGlwIGZyb20gRG9jdW1lbnQvU2hhZG93Um9vdCB0byBTdHlsZTo6U2NvcGUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzE0OAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlZHVjZSBkdXBsaWNh
dGlvbiBiZXR3ZWVuIERvY3VtZW50IGFuZCBTaGFkb3dSb290LgorCisgICAgICAgICogY3NzL0NT
U0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb21wdXRl
ZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVT
aGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNoZWV0OjpkaWRNdXRhdGVSdWxl
cyk6CisgICAgICAgICogY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkVsZW1lbnRSdWxlQ29sbGVjdG9yOjptYXRjaEhvc3RQc2V1ZG9DbGFzc1J1bGVzKToK
KyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSdWxlQ29sbGVjdG9yOjptYXRjaFNsb3R0ZWRQc2V1
ZG9FbGVtZW50UnVsZXMpOgorICAgICAgICAqIGNzcy9NZWRpYVF1ZXJ5TWF0Y2hlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVF1ZXJ5TWF0Y2hlcjo6ZG9jdW1lbnRFbGVtZW50VXNlckFn
ZW50U3R5bGUpOgorICAgICAgICAqIGNzcy9TdHlsZU1lZGlhLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlTWVkaWE6Om1hdGNoTWVkaXVtKToKKyAgICAgICAgKiBjc3MvcGFyc2VyL1NpemVz
QXR0cmlidXRlUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNpemVzQXR0cmlidXRlUGFy
c2VyOjptZWRpYUNvbmRpdGlvbk1hdGNoZXMpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6fkRvY3VtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50OjpjaGlsZHJlbkNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnQ6OmlzUGFnZUJveFZpc2libGUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnBhZ2VT
aXplQW5kTWFyZ2luc0luUGl4ZWxzKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp1c2Vy
QWdlbnRTaGFkb3dUcmVlU3R5bGVSZXNvbHZlcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6Zm9udHNOZWVkVXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpkaWRDbGVh
clN0eWxlUmVzb2x2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnVwZGF0ZVZpZXdw
b3J0VW5pdHNPblJlc2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Y3JlYXRlU3R5
bGVSZXNvbHZlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Y2xlYXJT
dHlsZVJlc29sdmVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzdHlsZVJlc29sdmVySWZFeGlzdHMpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmVuc3VyZVN0eWxlUmVzb2x2ZXIpOiBEZWxldGVk
LgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6
OnN0eWxlUmVzb2x2ZXIpOgorICAgICAgICAqIGRvbS9TaGFkb3dSb290LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNoYWRvd1Jvb3Q6OnN0eWxlUmVzb2x2ZXIpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6U2hhZG93Um9vdDo6c3R5bGVSZXNvbHZlcklmRXhpc3RzKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6OnJlc2V0U3R5bGVSZXNvbHZlcik6IERlbGV0ZWQu
CisgICAgICAgICogZG9tL1NoYWRvd1Jvb3QuaDoKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OmdldE1hdGNoZWRDU1NSdWxlcyk6Cisg
ICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3
OjpsYXlvdXQpOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
YWdlOjp1cGRhdGVTdHlsZUZvckFsbFBhZ2VzQWZ0ZXJHbG9iYWxDaGFuZ2VJbkVudmlyb25tZW50
KToKKyAgICAgICAgKiBwYWdlL1ByaW50Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
cmludENvbnRleHQ6OnBhZ2VQcm9wZXJ0eSk6CisgICAgICAgICogcGxhdGZvcm0vTWVtb3J5UHJl
c3N1cmVIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeVByZXNzdXJlSGFuZGxl
cjo6cmVsZWFzZUNyaXRpY2FsTWVtb3J5KToKKyAgICAgICAgKiBzdHlsZS9BdHRyaWJ1dGVDaGFu
Z2VJbnZhbGlkYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6Om1heUJlQWZmZWN0
ZWRCeUhvc3RTdHlsZSk6CisgICAgICAgICogc3R5bGUvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6Om1heUJlQWZmZWN0ZWRCeUhvc3RTdHlsZSk6
CisgICAgICAgICogc3R5bGUvSWRDaGFuZ2VJbnZhbGlkYXRpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGU6Om1heUJlQWZmZWN0ZWRCeUhvc3RTdHlsZSk6CisgICAgICAgICogc3R5bGUv
U3R5bGVTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6U2NvcGU6OnJlc29sdmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpTY29wZTo6cmVzb2x2ZXJJZkV4aXN0cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZTo6U2NvcGU6OmNsZWFyUmVzb2x2ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGU6OlNjb3BlOjphbmFseXplU3R5bGVTaGVldENoYW5nZSk6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZTo6U2NvcGU6OnVwZGF0ZUFjdGl2ZVN0eWxlU2hlZXRzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlOjpTY29wZTo6dXBkYXRlU3R5bGVSZXNvbHZlcik6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZTo6U2NvcGU6OnN0eWxlUmVzb2x2ZXIpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGU6OlNjb3BlOjpzdHlsZVJlc29sdmVySWZFeGlzdHMpOiBEZWxldGVk
LgorICAgICAgICAqIHN0eWxlL1N0eWxlU2NvcGUuaDoKKyAgICAgICAgKiBzdHlsZS9TdHlsZVNo
YXJpbmdSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6U2hhcmluZ1Jlc29s
dmVyOjpyZXNvbHZlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpTaGFyaW5nUmVzb2x2ZXI6
OmNhblNoYXJlU3R5bGVXaXRoRWxlbWVudCk6CisgICAgICAgICogc3R5bGUvU3R5bGVUcmVlUmVz
b2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlRyZWVSZXNvbHZlcjo6U2NvcGU6
OlNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpUcmVlUmVzb2x2ZXI6OnJlc29sdmUp
OgorCiAyMDE2LTEwLTA3ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAg
ICAgUmVncmVzc2lvbihyMjAxOTcwKTogcHJvZHVjdFN1YiAvIHZlbmRvciAvIHZlbmRvclN1YiBz
aG91bGQgbm90IGJlIGV4cG9zZWQgb24gV29ya2VyTmF2aWdhdG9yCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAkocmV2aXNp
b24gMjA2OTE4KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJh
dGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcwLDYgKzcwLDcgQEAKICNpbmNsdWRlICJTdHls
ZVByb3BlcnR5U2hvcnRoYW5kLmgiCiAjaW5jbHVkZSAiU3R5bGVQcm9wZXJ0eVNob3J0aGFuZEZ1
bmN0aW9ucy5oIgogI2luY2x1ZGUgIlN0eWxlUmVzb2x2ZXIuaCIKKyNpbmNsdWRlICJTdHlsZVNj
b3BlLmgiCiAjaW5jbHVkZSAiV2ViS2l0Q1NTRmlsdGVyVmFsdWUuaCIKICNpbmNsdWRlICJXZWJL
aXRDU1NUcmFuc2Zvcm1WYWx1ZS5oIgogI2luY2x1ZGUgIldlYktpdEZvbnRGYW1pbHlOYW1lcy5o
IgpAQCAtMjQ5NCw3ICsyNDk1LDcgQEAgUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0
cmFjdG9yOgogICAgICAgICAvLyBGSVhNRTogU29tZSBvZiB0aGVzZSBjYXNlcyBjb3VsZCBiZSBu
YXJyb3dlZCBkb3duIG9yIG9wdGltaXplZCBiZXR0ZXIuCiAgICAgICAgIGZvcmNlRnVsbExheW91
dCA9IGlzTGF5b3V0RGVwZW5kZW50KHByb3BlcnR5SUQsIHN0eWxlLCByZW5kZXJlcikKICAgICAg
ICAgICAgIHx8IHN0eWxlZE5vZGUtPmlzSW5TaGFkb3dUcmVlKCkKLSAgICAgICAgICAgIHx8IChk
b2N1bWVudC5zdHlsZVJlc29sdmVySWZFeGlzdHMoKSAmJiBkb2N1bWVudC5zdHlsZVJlc29sdmVy
SWZFeGlzdHMoKS0+aGFzVmlld3BvcnREZXBlbmRlbnRNZWRpYVF1ZXJpZXMoKSAmJiBkb2N1bWVu
dC5vd25lckVsZW1lbnQoKSk7CisgICAgICAgICAgICB8fCAoZG9jdW1lbnQuc3R5bGVTY29wZSgp
LnJlc29sdmVySWZFeGlzdHMoKSAmJiBkb2N1bWVudC5zdHlsZVNjb3BlKCkucmVzb2x2ZXJJZkV4
aXN0cygpLT5oYXNWaWV3cG9ydERlcGVuZGVudE1lZGlhUXVlcmllcygpICYmIGRvY3VtZW50Lm93
bmVyRWxlbWVudCgpKTsKIAogICAgICAgICBpZiAoZm9yY2VGdWxsTGF5b3V0KSB7CiAgICAgICAg
ICAgICBkb2N1bWVudC51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAJKHJldmlzaW9uIDIwNjkxOCkKKysr
IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTc3LDcgKzE3Nyw3IEBAIHZvaWQgQ1NTU3R5bGVTaGVldDo6ZGlkTXV0YXRlUnVsZXMoUnVsZU0K
IAogICAgIGlmIChtdXRhdGlvblR5cGUgPT0gUnVsZUluc2VydGlvbiAmJiAhY29udGVudHNXZXJl
Q2xvbmVkRm9yTXV0YXRpb24gJiYgIXNjb3BlLT5hY3RpdmVTdHlsZVNoZWV0c0NvbnRhaW5zKHRo
aXMpKSB7CiAgICAgICAgIGlmIChpbnNlcnRlZEtleWZyYW1lc1J1bGUpIHsKLSAgICAgICAgICAg
IGlmIChhdXRvKiByZXNvbHZlciA9IHNjb3BlLT5zdHlsZVJlc29sdmVySWZFeGlzdHMoKSkKKyAg
ICAgICAgICAgIGlmIChhdXRvKiByZXNvbHZlciA9IHNjb3BlLT5yZXNvbHZlcklmRXhpc3RzKCkp
CiAgICAgICAgICAgICAgICAgcmVzb2x2ZXItPmFkZEtleWZyYW1lU3R5bGUoKmluc2VydGVkS2V5
ZnJhbWVzUnVsZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2Nzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcAkocmV2aXNpb24gMjA2OTE4
KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgIlNlbGVjdG9yRmlsdGVyLmgiCiAj
aW5jbHVkZSAiU2hhZG93Um9vdC5oIgogI2luY2x1ZGUgIlN0eWxlUHJvcGVydGllcy5oIgorI2lu
Y2x1ZGUgIlN0eWxlU2NvcGUuaCIKICNpbmNsdWRlICJTdHlsZWRFbGVtZW50LmgiCiAKICNpbmNs
dWRlIDx3dGYvVGVtcG9yYXJ5Q2hhbmdlLmg+CkBAIC0yMzQsNyArMjM1LDcgQEAgdm9pZCBFbGVt
ZW50UnVsZUNvbGxlY3Rvcjo6bWF0Y2hIb3N0UHNldQogCiAgICAgbWF0Y2hSZXF1ZXN0LnRyZWVD
b250ZXh0T3JkaW5hbCsrOwogCi0gICAgYXV0byYgc2hhZG93QXV0aG9yU3R5bGUgPSBtX2VsZW1l
bnQuc2hhZG93Um9vdCgpLT5zdHlsZVJlc29sdmVyKCkucnVsZVNldHMoKS5hdXRob3JTdHlsZSgp
OworICAgIGF1dG8mIHNoYWRvd0F1dGhvclN0eWxlID0gbV9lbGVtZW50LnNoYWRvd1Jvb3QoKS0+
c3R5bGVTY29wZSgpLnJlc29sdmVyKCkucnVsZVNldHMoKS5hdXRob3JTdHlsZSgpOwogICAgIGF1
dG8mIHNoYWRvd0hvc3RSdWxlcyA9IHNoYWRvd0F1dGhvclN0eWxlLmhvc3RQc2V1ZG9DbGFzc1J1
bGVzKCk7CiAgICAgaWYgKHNoYWRvd0hvc3RSdWxlcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
bjsKQEAgLTI2NSwxMSArMjY2LDExIEBAIHZvaWQgRWxlbWVudFJ1bGVDb2xsZWN0b3I6Om1hdGNo
U2xvdHRlZFAKIAogICAgICAgICAvLyBJbiBuZXN0ZWQgY2FzZSB0aGUgc2xvdCBtYXkgaXRzZWxm
IGJlIGFzc2lnbmVkIHRvIGEgc2xvdC4gQ29sbGVjdCA6OnNsb3R0ZWQgcnVsZXMgZnJvbSBhbGwg
dGhlIG5lc3RlZCB0cmVlcy4KICAgICAgICAgbWF5YmVTbG90dGVkID0gc2xvdDsKLSAgICAgICAg
aWYgKCFob3N0U2hhZG93Um9vdC0+c3R5bGVSZXNvbHZlcigpLnJ1bGVTZXRzKCkuaXNBdXRob3JT
dHlsZURlZmluZWQoKSkKKyAgICAgICAgaWYgKCFob3N0U2hhZG93Um9vdC0+c3R5bGVTY29wZSgp
LnJlc29sdmVyKCkucnVsZVNldHMoKS5pc0F1dGhvclN0eWxlRGVmaW5lZCgpKQogICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgIC8vIEZpbmQgb3V0IGlmIHRoZXJlIGFyZSBhbnkgOjpzbG90
dGVkIHJ1bGVzIGluIHRoZSBzaGFkb3cgdHJlZSBtYXRjaGluZyB0aGUgY3VycmVudCBzbG90Lgog
ICAgICAgICAvLyBGSVhNRTogVGhpcyBpcyByZWFsbHkgcGFydCBvZiB0aGUgc2xvdCBzdHlsZSBh
bmQgY291bGQgYmUgY2FjaGVkIHdoZW4gcmVzb2x2aW5nIGl0LgotICAgICAgICBFbGVtZW50UnVs
ZUNvbGxlY3RvciBjb2xsZWN0b3IoKnNsb3QsIGhvc3RTaGFkb3dSb290LT5zdHlsZVJlc29sdmVy
KCkucnVsZVNldHMoKS5hdXRob3JTdHlsZSgpLCBudWxscHRyKTsKKyAgICAgICAgRWxlbWVudFJ1
bGVDb2xsZWN0b3IgY29sbGVjdG9yKCpzbG90LCBob3N0U2hhZG93Um9vdC0+c3R5bGVTY29wZSgp
LnJlc29sdmVyKCkucnVsZVNldHMoKS5hdXRob3JTdHlsZSgpLCBudWxscHRyKTsKICAgICAgICAg
YXV0byBzbG90dGVkUHNldWRvRWxlbWVudFJ1bGVzID0gY29sbGVjdG9yLmNvbGxlY3RTbG90dGVk
UHNldWRvRWxlbWVudFJ1bGVzRm9yU2xvdChtYXRjaFJlcXVlc3QuaW5jbHVkZUVtcHR5UnVsZXMp
OwogICAgICAgICBpZiAoIXNsb3R0ZWRQc2V1ZG9FbGVtZW50UnVsZXMpCiAgICAgICAgICAgICBj
b250aW51ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5TWF0Y2hlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlNYXRjaGVyLmNwcAko
cmV2aXNpb24gMjA2OTE4KQorKysgU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlNYXRjaGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIk5vZGVSZW5k
ZXJTdHlsZS5oIgogI2luY2x1ZGUgIlJlbmRlckVsZW1lbnQuaCIKICNpbmNsdWRlICJTdHlsZVJl
c29sdmVyLmgiCisjaW5jbHVkZSAiU3R5bGVTY29wZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKQEAgLTY1LDcgKzY2LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBNZWRpYVF1
ZXJ5TQogICAgIGlmICghZG9jdW1lbnRFbGVtZW50KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAotICAgIHJldHVybiBtX2RvY3VtZW50LT5lbnN1cmVTdHlsZVJlc29sdmVyKCkuc3R5bGVGb3JF
bGVtZW50KCpkb2N1bWVudEVsZW1lbnQsIG1fZG9jdW1lbnQtPnJlbmRlclN0eWxlKCksIE1hdGNo
T25seVVzZXJBZ2VudFJ1bGVzKS5yZW5kZXJTdHlsZTsKKyAgICByZXR1cm4gbV9kb2N1bWVudC0+
c3R5bGVTY29wZSgpLnJlc29sdmVyKCkuc3R5bGVGb3JFbGVtZW50KCpkb2N1bWVudEVsZW1lbnQs
IG1fZG9jdW1lbnQtPnJlbmRlclN0eWxlKCksIE1hdGNoT25seVVzZXJBZ2VudFJ1bGVzKS5yZW5k
ZXJTdHlsZTsKIH0KIAogYm9vbCBNZWRpYVF1ZXJ5TWF0Y2hlcjo6ZXZhbHVhdGUoY29uc3QgTWVk
aWFRdWVyeVNldCYgbWVkaWEpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVNZWRpYS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlTWVkaWEuY3BwCShyZXZp
c2lvbiAyMDY5MTgpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVNZWRpYS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJOb2RlUmVuZGVyU3R5bGUuaCIK
ICNpbmNsdWRlICJSZW5kZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiU3R5bGVSZXNvbHZlci5oIgor
I2luY2x1ZGUgIlN0eWxlU2NvcGUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC02Miw3
ICs2Myw3IEBAIGJvb2wgU3R5bGVNZWRpYTo6bWF0Y2hNZWRpdW0oY29uc3QgU3RyaW4KICAgICBp
ZiAoIWRvY3VtZW50RWxlbWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYXV0byBy
b290U3R5bGUgPSBkb2N1bWVudC0+ZW5zdXJlU3R5bGVSZXNvbHZlcigpLnN0eWxlRm9yRWxlbWVu
dCgqZG9jdW1lbnRFbGVtZW50LCBkb2N1bWVudC0+cmVuZGVyU3R5bGUoKSwgTWF0Y2hPbmx5VXNl
ckFnZW50UnVsZXMpLnJlbmRlclN0eWxlOworICAgIGF1dG8gcm9vdFN0eWxlID0gZG9jdW1lbnQt
PnN0eWxlU2NvcGUoKS5yZXNvbHZlcigpLnN0eWxlRm9yRWxlbWVudCgqZG9jdW1lbnRFbGVtZW50
LCBkb2N1bWVudC0+cmVuZGVyU3R5bGUoKSwgTWF0Y2hPbmx5VXNlckFnZW50UnVsZXMpLnJlbmRl
clN0eWxlOwogCiAgICAgYXV0byBtZWRpYSA9IE1lZGlhUXVlcnlTZXQ6OmNyZWF0ZSgpOwogICAg
IGlmICghbWVkaWEtPnBhcnNlKHF1ZXJ5KSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJz
ZXIvU2l6ZXNBdHRyaWJ1dGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2Nzcy9wYXJzZXIvU2l6ZXNBdHRyaWJ1dGVQYXJzZXIuY3BwCShyZXZpc2lvbiAyMDY5MTgpCisr
KyBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL1NpemVzQXR0cmlidXRlUGFyc2VyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIk1lZGlhUXVlcnlFdmFsdWF0
b3IuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiU2l6ZXNDYWxjUGFyc2Vy
LmgiCisjaW5jbHVkZSAiU3R5bGVTY29wZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAg
LTExMCw3ICsxMTEsNyBAQCBib29sIFNpemVzQXR0cmlidXRlUGFyc2VyOjptZWRpYUNvbmRpdGlv
CiAgICAgaWYgKCFyZW5kZXJlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGF1dG8mIHN0
eWxlID0gcmVuZGVyZXItPnN0eWxlKCk7Ci0gICAgcmV0dXJuIE1lZGlhUXVlcnlFdmFsdWF0b3Ig
eyAic2NyZWVuIiwgbV9kb2N1bWVudCwgJnN0eWxlIH0uZXZhbHVhdGUobWVkaWFDb25kaXRpb24s
IG1fZG9jdW1lbnQuc3R5bGVSZXNvbHZlcklmRXhpc3RzKCkpOworICAgIHJldHVybiBNZWRpYVF1
ZXJ5RXZhbHVhdG9yIHsgInNjcmVlbiIsIG1fZG9jdW1lbnQsICZzdHlsZSB9LmV2YWx1YXRlKG1l
ZGlhQ29uZGl0aW9uLCBjb25zdF9jYXN0PFN0eWxlOjpTY29wZSY+KG1fZG9jdW1lbnQuc3R5bGVT
Y29wZSgpKS5yZXNvbHZlcklmRXhpc3RzKCkpOwogfQogCiBib29sIFNpemVzQXR0cmlidXRlUGFy
c2VyOjpwYXJzZShDU1NQYXJzZXJUb2tlblJhbmdlIHJhbmdlKQpJbmRleDogU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwCShyZXZpc2lvbiAyMDY5MjcpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MzEsNyArNjMxLDcgQEAgRG9jdW1lbnQ6On5Eb2N1
bWVudCgpCiAKICAgICBleHRlbnNpb25TdHlsZVNoZWV0cygpLmRldGFjaEZyb21Eb2N1bWVudCgp
OwogCi0gICAgY2xlYXJTdHlsZVJlc29sdmVyKCk7IC8vIFdlIG5lZWQgdG8gZGVzdHJveSBDU1NG
b250U2VsZWN0b3IgYmVmb3JlIGRlc3Ryb3lpbmcgbV9jYWNoZWRSZXNvdXJjZUxvYWRlci4KKyAg
ICBzdHlsZVNjb3BlKCkuY2xlYXJSZXNvbHZlcigpOyAvLyBXZSBuZWVkIHRvIGRlc3Ryb3kgQ1NT
Rm9udFNlbGVjdG9yIGJlZm9yZSBkZXN0cm95aW5nIG1fY2FjaGVkUmVzb3VyY2VMb2FkZXIuCiAg
ICAgbV9mb250U2VsZWN0b3ItPmNsZWFyRG9jdW1lbnQoKTsKICAgICBtX2ZvbnRTZWxlY3Rvci0+
dW5yZWdpc3RlckZvckludmFsaWRhdGlvbkNhbGxiYWNrcygqdGhpcyk7CiAKQEAgLTg2Myw3ICs4
NjMsNyBAQCB2b2lkIERvY3VtZW50OjpjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpCiAgICAgICAg
IHJldHVybjsKICAgICBtX2RvY3VtZW50RWxlbWVudCA9IG5ld0RvY3VtZW50RWxlbWVudDsKICAg
ICAvLyBUaGUgcm9vdCBzdHlsZSB1c2VkIGZvciBtZWRpYSBxdWVyeSBtYXRjaGluZyBkZXBlbmRz
IG9uIHRoZSBkb2N1bWVudCBlbGVtZW50LgotICAgIGNsZWFyU3R5bGVSZXNvbHZlcigpOworICAg
IHN0eWxlU2NvcGUoKS5jbGVhclJlc29sdmVyKCk7CiB9CiAKICNpZiBFTkFCTEUoQ1VTVE9NX0VM
RU1FTlRTKQpAQCAtMjA5NywxMyArMjA5NywxMyBAQCBib29sIERvY3VtZW50Ojp1cGRhdGVMYXlv
dXRJZkRpbWVuc2lvbnNPCiAKIGJvb2wgRG9jdW1lbnQ6OmlzUGFnZUJveFZpc2libGUoaW50IHBh
Z2VJbmRleCkKIHsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHBhZ2VTdHlsZShl
bnN1cmVTdHlsZVJlc29sdmVyKCkuc3R5bGVGb3JQYWdlKHBhZ2VJbmRleCkpOworICAgIHN0ZDo6
dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gcGFnZVN0eWxlKHN0eWxlU2NvcGUoKS5yZXNvbHZlcigp
LnN0eWxlRm9yUGFnZShwYWdlSW5kZXgpKTsKICAgICByZXR1cm4gcGFnZVN0eWxlLT52aXNpYmls
aXR5KCkgIT0gSElEREVOOyAvLyBkaXNwbGF5IHByb3BlcnR5IGRvZXNuJ3QgYXBwbHkgdG8gQHBh
Z2UuCiB9CiAKIHZvaWQgRG9jdW1lbnQ6OnBhZ2VTaXplQW5kTWFyZ2luc0luUGl4ZWxzKGludCBw
YWdlSW5kZXgsIEludFNpemUmIHBhZ2VTaXplLCBpbnQmIG1hcmdpblRvcCwgaW50JiBtYXJnaW5S
aWdodCwgaW50JiBtYXJnaW5Cb3R0b20sIGludCYgbWFyZ2luTGVmdCkKIHsKLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlID0gZW5zdXJlU3R5bGVSZXNvbHZlcigpLnN0eWxl
Rm9yUGFnZShwYWdlSW5kZXgpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5
bGUgPSBzdHlsZVNjb3BlKCkucmVzb2x2ZXIoKS5zdHlsZUZvclBhZ2UocGFnZUluZGV4KTsKIAog
ICAgIGludCB3aWR0aCA9IHBhZ2VTaXplLndpZHRoKCk7CiAgICAgaW50IGhlaWdodCA9IHBhZ2VT
aXplLmhlaWdodCgpOwpAQCAtMjEzOSwxOSArMjEzOSwxMyBAQCB2b2lkIERvY3VtZW50OjpwYWdl
U2l6ZUFuZE1hcmdpbnNJblBpeGVsCiAgICAgbWFyZ2luTGVmdCA9IHN0eWxlLT5tYXJnaW5MZWZ0
KCkuaXNBdXRvKCkgPyBtYXJnaW5MZWZ0IDogaW50VmFsdWVGb3JMZW5ndGgoc3R5bGUtPm1hcmdp
bkxlZnQoKSwgd2lkdGgpOwogfQogCi12b2lkIERvY3VtZW50OjpjcmVhdGVTdHlsZVJlc29sdmVy
KCkKLXsKLSAgICBtX3N0eWxlUmVzb2x2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFN0eWxlUmVzb2x2
ZXI+KCp0aGlzKTsKLSAgICBtX3N0eWxlUmVzb2x2ZXItPmFwcGVuZEF1dGhvclN0eWxlU2hlZXRz
KHN0eWxlU2NvcGUoKS5hY3RpdmVTdHlsZVNoZWV0cygpKTsKLX0KLQogU3R5bGVSZXNvbHZlciYg
RG9jdW1lbnQ6OnVzZXJBZ2VudFNoYWRvd1RyZWVTdHlsZVJlc29sdmVyKCkKIHsKICAgICBpZiAo
IW1fdXNlckFnZW50U2hhZG93VHJlZVN0eWxlUmVzb2x2ZXIpIHsKICAgICAgICAgbV91c2VyQWdl
bnRTaGFkb3dUcmVlU3R5bGVSZXNvbHZlciA9IHN0ZDo6bWFrZV91bmlxdWU8U3R5bGVSZXNvbHZl
cj4oKnRoaXMpOwogCiAgICAgICAgIC8vIEZJWE1FOiBGaWx0ZXIgb3V0IHNoYWRvdyBwc2V1ZG8g
ZWxlbWVudHMgd2UgZG9uJ3Qgd2FudCB0byBleHBvc2UgdG8gYXV0aG9ycy4KLSAgICAgICAgYXV0
byYgZG9jdW1lbnRBdXRob3JTdHlsZSA9IGVuc3VyZVN0eWxlUmVzb2x2ZXIoKS5ydWxlU2V0cygp
LmF1dGhvclN0eWxlKCk7CisgICAgICAgIGF1dG8mIGRvY3VtZW50QXV0aG9yU3R5bGUgPSBzdHls
ZVNjb3BlKCkucmVzb2x2ZXIoKS5ydWxlU2V0cygpLmF1dGhvclN0eWxlKCk7CiAgICAgICAgIGlm
IChkb2N1bWVudEF1dGhvclN0eWxlLmhhc1NoYWRvd1BzZXVkb0VsZW1lbnRSdWxlcygpKQogICAg
ICAgICAgICAgbV91c2VyQWdlbnRTaGFkb3dUcmVlU3R5bGVSZXNvbHZlci0+cnVsZVNldHMoKS5h
dXRob3JTdHlsZSgpLmNvcHlTaGFkb3dQc2V1ZG9FbGVtZW50UnVsZXNGcm9tKGRvY3VtZW50QXV0
aG9yU3R5bGUpOwogICAgIH0KQEAgLTIxNjEsMTYgKzIxNTUsMTUgQEAgU3R5bGVSZXNvbHZlciYg
RG9jdW1lbnQ6OnVzZXJBZ2VudFNoYWRvdwogCiB2b2lkIERvY3VtZW50Ojpmb250c05lZWRVcGRh
dGUoRm9udFNlbGVjdG9yJikKIHsKLSAgICBpZiAobV9zdHlsZVJlc29sdmVyKQotICAgICAgICBt
X3N0eWxlUmVzb2x2ZXItPmludmFsaWRhdGVNYXRjaGVkUHJvcGVydGllc0NhY2hlKCk7CisgICAg
aWYgKGF1dG8qIHJlc29sdmVyID0gc3R5bGVTY29wZSgpLnJlc29sdmVySWZFeGlzdHMoKSkKKyAg
ICAgICAgcmVzb2x2ZXItPmludmFsaWRhdGVNYXRjaGVkUHJvcGVydGllc0NhY2hlKCk7CiAgICAg
aWYgKHBhZ2VDYWNoZVN0YXRlKCkgIT0gTm90SW5QYWdlQ2FjaGUgfHwgIXJlbmRlclZpZXcoKSkK
ICAgICAgICAgcmV0dXJuOwogICAgIHNjaGVkdWxlRm9yY2VkU3R5bGVSZWNhbGMoKTsKIH0KIAot
dm9pZCBEb2N1bWVudDo6Y2xlYXJTdHlsZVJlc29sdmVyKCkKK3ZvaWQgRG9jdW1lbnQ6OmRpZENs
ZWFyU3R5bGVSZXNvbHZlcigpCiB7Ci0gICAgbV9zdHlsZVJlc29sdmVyID0gbnVsbHB0cjsKICAg
ICBtX3VzZXJBZ2VudFNoYWRvd1RyZWVTdHlsZVJlc29sdmVyID0gbnVsbHB0cjsKIAogICAgIG1f
Zm9udFNlbGVjdG9yLT5idWlsZFN0YXJ0ZWQoKTsKQEAgLTM0OTEsNyArMzQ4NCw3IEBAIHZvaWQg
RG9jdW1lbnQ6OnVwZGF0ZVZpZXdwb3J0VW5pdHNPblJlc2kKICAgICBpZiAoIWhhc1N0eWxlV2l0
aFZpZXdwb3J0VW5pdHMoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZW5zdXJlU3R5bGVSZXNv
bHZlcigpLmNsZWFyQ2FjaGVkUHJvcGVydGllc0FmZmVjdGVkQnlWaWV3cG9ydFVuaXRzKCk7Cisg
ICAgc3R5bGVTY29wZSgpLnJlc29sdmVyKCkuY2xlYXJDYWNoZWRQcm9wZXJ0aWVzQWZmZWN0ZWRC
eVZpZXdwb3J0VW5pdHMoKTsKIAogICAgIC8vIEZJWE1FOiBJZGVhbGx5LCB3ZSBzaG91bGQgc2F2
ZSB0aGUgbGlzdCBvZiBlbGVtZW50cyB0aGF0IGhhdmUgdmlld3BvcnQgdW5pdHMgYW5kIG9ubHkg
aXRlcmF0ZSBvdmVyIHRob3NlLgogICAgIGZvciAoRWxlbWVudCogZWxlbWVudCA9IEVsZW1lbnRU
cmF2ZXJzYWw6OmZpcnN0V2l0aGluKHJvb3ROb2RlKCkpOyBlbGVtZW50OyBlbGVtZW50ID0gRWxl
bWVudFRyYXZlcnNhbDo6bmV4dEluY2x1ZGluZ1BzZXVkbygqZWxlbWVudCkpIHsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oCShyZXZpc2lvbiAyMDY5MjcpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDg3LDE2ICs0ODcsOCBAQCBwdWJsaWM6CiAK
ICAgICBib29sIGlzU3JjZG9jRG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2lzU3JjZG9jRG9j
dW1lbnQ7IH0KIAotICAgIFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXJJZkV4aXN0cygpIGNv
bnN0IHsgcmV0dXJuIG1fc3R5bGVSZXNvbHZlci5nZXQoKTsgfQotCiAgICAgYm9vbCBzYXdFbGVt
ZW50c0luS25vd25OYW1lc3BhY2VzKCkgY29uc3QgeyByZXR1cm4gbV9zYXdFbGVtZW50c0luS25v
d25OYW1lc3BhY2VzOyB9CiAKLSAgICBTdHlsZVJlc29sdmVyJiBlbnN1cmVTdHlsZVJlc29sdmVy
KCkKLSAgICB7IAotICAgICAgICBpZiAoIW1fc3R5bGVSZXNvbHZlcikKLSAgICAgICAgICAgIGNy
ZWF0ZVN0eWxlUmVzb2x2ZXIoKTsKLSAgICAgICAgcmV0dXJuICptX3N0eWxlUmVzb2x2ZXI7Ci0g
ICAgfQogICAgIFN0eWxlUmVzb2x2ZXImIHVzZXJBZ2VudFNoYWRvd1RyZWVTdHlsZVJlc29sdmVy
KCk7CiAKICAgICBDU1NGb250U2VsZWN0b3ImIGZvbnRTZWxlY3RvcigpIHsgcmV0dXJuIG1fZm9u
dFNlbGVjdG9yOyB9CkBAIC0xMjMwLDcgKzEyMjIsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGRp
ZFJlbW92ZUFsbFBlbmRpbmdTdHlsZXNoZWV0KCk7CiAgICAgdm9pZCBzZXROZWVkc05vdGlmeVJl
bW92ZUFsbFBlbmRpbmdTdHlsZXNoZWV0KCkgeyBtX25lZWRzTm90aWZ5UmVtb3ZlQWxsUGVuZGlu
Z1N0eWxlc2hlZXQgPSB0cnVlOyB9Ci0gICAgdm9pZCBjbGVhclN0eWxlUmVzb2x2ZXIoKTsKKyAg
ICB2b2lkIGRpZENsZWFyU3R5bGVSZXNvbHZlcigpOwogCiAgICAgYm9vbCBpblN0eWxlUmVjYWxj
KCkgY29uc3QgeyByZXR1cm4gbV9pblN0eWxlUmVjYWxjOyB9CiAgICAgYm9vbCBpblJlbmRlclRy
ZWVVcGRhdGUoKSBjb25zdCB7IHJldHVybiBtX2luUmVuZGVyVHJlZVVwZGF0ZTsgfQpAQCAtMTM1
Miw4ICsxMzQ0LDYgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgYnVpbGRBY2Nlc3NLZXlNYXAoVHJl
ZVNjb3BlKiByb290KTsKIAotICAgIHZvaWQgY3JlYXRlU3R5bGVSZXNvbHZlcigpOwotCiAgICAg
dm9pZCBsb2FkRXZlbnREZWxheVRpbWVyRmlyZWQoKTsKIAogICAgIHZvaWQgcGVuZGluZ1Rhc2tz
VGltZXJGaXJlZCgpOwpAQCAtMTM5Nyw3ICsxMzg3LDYgQEAgcHJpdmF0ZToKIAogICAgIHVuc2ln
bmVkIG1fcmVmZXJlbmNpbmdOb2RlQ291bnQ7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8U3R5bGVS
ZXNvbHZlcj4gbV9zdHlsZVJlc29sdmVyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxTdHlsZVJlc29s
dmVyPiBtX3VzZXJBZ2VudFNoYWRvd1RyZWVTdHlsZVJlc29sdmVyOwogICAgIGJvb2wgbV9oYXNO
b2Rlc1dpdGhQbGFjZWhvbGRlclN0eWxlOwogICAgIGJvb2wgbV9uZWVkc05vdGlmeVJlbW92ZUFs
bFBlbmRpbmdTdHlsZXNoZWV0OwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAkocmV2aXNpb24g
MjA2OTI3KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC05Nyw2ICs5Nyw3IEBACiAjaW5jbHVkZSAiU2xvdEFzc2lnbm1lbnQuaCIKICNpbmNsdWRl
ICJTdHlsZVByb3BlcnRpZXMuaCIKICNpbmNsdWRlICJTdHlsZVJlc29sdmVyLmgiCisjaW5jbHVk
ZSAiU3R5bGVTY29wZS5oIgogI2luY2x1ZGUgIlN0eWxlVHJlZVJlc29sdmVyLmgiCiAjaW5jbHVk
ZSAiVGV4dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiVm9pZENhbGxiYWNrLmgiCkBAIC0xNDI5LDkg
KzE0MzAsOSBAQCBib29sIEVsZW1lbnQ6OmFsbG93c0RvdWJsZVRhcEdlc3R1cmUoKSBjCiBTdHls
ZVJlc29sdmVyJiBFbGVtZW50OjpzdHlsZVJlc29sdmVyKCkKIHsKICAgICBpZiAoYXV0byogc2hh
ZG93Um9vdCA9IGNvbnRhaW5pbmdTaGFkb3dSb290KCkpCi0gICAgICAgIHJldHVybiBzaGFkb3dS
b290LT5zdHlsZVJlc29sdmVyKCk7CisgICAgICAgIHJldHVybiBzaGFkb3dSb290LT5zdHlsZVNj
b3BlKCkucmVzb2x2ZXIoKTsKIAotICAgIHJldHVybiBkb2N1bWVudCgpLmVuc3VyZVN0eWxlUmVz
b2x2ZXIoKTsKKyAgICByZXR1cm4gZG9jdW1lbnQoKS5zdHlsZVNjb3BlKCkucmVzb2x2ZXIoKTsK
IH0KIAogRWxlbWVudFN0eWxlIEVsZW1lbnQ6OnJlc29sdmVTdHlsZShjb25zdCBSZW5kZXJTdHls
ZSogcGFyZW50U3R5bGUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCShyZXZpc2lv
biAyMDY5MjcpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQxLDcgKzQxLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgU2Ft
ZVNpemVBc1NoYWRvd1Jvb3QgOiBwdWJsaWMgRG9jdW1lbnRGcmFnbWVudCwgcHVibGljIFRyZWVT
Y29wZSB7CiAgICAgdW5zaWduZWQgY291bnRlcnNBbmRGbGFnc1sxXTsKLSAgICB2b2lkKiBzdHls
ZVJlc29sdmVyOwogICAgIHZvaWQqIHN0eWxlU2NvcGU7CiAgICAgdm9pZCogaG9zdDsKICAgICB2
b2lkKiBzbG90QXNzaWdubWVudDsKQEAgLTgwLDMzICs3OSw2IEBAIFNoYWRvd1Jvb3Q6On5TaGFk
b3dSb290KCkKICAgICByZW1vdmVEZXRhY2hlZENoaWxkcmVuKCk7CiB9CiAKLVN0eWxlUmVzb2x2
ZXImIFNoYWRvd1Jvb3Q6OnN0eWxlUmVzb2x2ZXIoKQotewotICAgIGlmIChtX3R5cGUgPT0gTW9k
ZTo6VXNlckFnZW50KQotICAgICAgICByZXR1cm4gZG9jdW1lbnQoKS51c2VyQWdlbnRTaGFkb3dU
cmVlU3R5bGVSZXNvbHZlcigpOwotCi0gICAgaWYgKCFtX3N0eWxlUmVzb2x2ZXIpIHsKLSAgICAg
ICAgLy8gRklYTUU6IFdlIGNvdWxkIHNoYXJlIHN0eWxlIHJlc29sdmVyIHdpdGggc2hhZG93IHJv
b3RzIHRoYXQgaGF2ZSBpZGVudGljYWwgc3R5bGUuCi0gICAgICAgIG1fc3R5bGVSZXNvbHZlciA9
IHN0ZDo6bWFrZV91bmlxdWU8U3R5bGVSZXNvbHZlcj4oZG9jdW1lbnQoKSk7Ci0gICAgICAgIGlm
IChtX3N0eWxlU2NvcGUpCi0gICAgICAgICAgICBtX3N0eWxlUmVzb2x2ZXItPmFwcGVuZEF1dGhv
clN0eWxlU2hlZXRzKG1fc3R5bGVTY29wZS0+YWN0aXZlU3R5bGVTaGVldHMoKSk7Ci0gICAgfQot
ICAgIHJldHVybiAqbV9zdHlsZVJlc29sdmVyOwotfQotCi1TdHlsZVJlc29sdmVyKiBTaGFkb3dS
b290OjpzdHlsZVJlc29sdmVySWZFeGlzdHMoKQotewotICAgIGlmIChtX3R5cGUgPT0gTW9kZTo6
VXNlckFnZW50KQotICAgICAgICByZXR1cm4gJmRvY3VtZW50KCkudXNlckFnZW50U2hhZG93VHJl
ZVN0eWxlUmVzb2x2ZXIoKTsKLQotICAgIHJldHVybiBtX3N0eWxlUmVzb2x2ZXIuZ2V0KCk7Ci19
Ci0KLXZvaWQgU2hhZG93Um9vdDo6cmVzZXRTdHlsZVJlc29sdmVyKCkKLXsKLSAgICBtX3N0eWxl
UmVzb2x2ZXIgPSBudWxscHRyOwotfQotCiBTdHlsZTo6U2NvcGUmIFNoYWRvd1Jvb3Q6OnN0eWxl
U2NvcGUoKQogewogICAgIGlmICghbV9zdHlsZVNjb3BlKQpAQCAtMTE0LDE0ICs4Niw2IEBAIFN0
eWxlOjpTY29wZSYgU2hhZG93Um9vdDo6c3R5bGVTY29wZSgpCiAgICAgcmV0dXJuICptX3N0eWxl
U2NvcGU7CiB9CiAKLXZvaWQgU2hhZG93Um9vdDo6dXBkYXRlU3R5bGUoKQotewotICAgIGlmICgh
bV9zdHlsZVNjb3BlKQotICAgICAgICByZXR1cm47Ci0gICAgLy8gRklYTUU6IE1ha2Ugb3B0aW1p
emVkIHVwZGF0ZWQgd29yay4KLSAgICBtX3N0eWxlU2NvcGUtPmRpZENoYW5nZUNvbnRlbnRzT3JJ
bnRlcnByZXRhdGlvbigpOwotfQotCiBTdHJpbmcgU2hhZG93Um9vdDo6aW5uZXJIVE1MKCkgY29u
c3QKIHsKICAgICByZXR1cm4gY3JlYXRlTWFya3VwKCp0aGlzLCBDaGlsZHJlbk9ubHkpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCShyZXZpc2lvbiAyMDY5MjcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9kb20vU2hhZG93Um9vdC5oCSh3b3JraW5nIGNvcHkpCkBAIC02MSwxMyArNjEsOCBAQCBw
dWJsaWM6CiAKICAgICB1c2luZyBUcmVlU2NvcGU6OnJvb3ROb2RlOwogCi0gICAgU3R5bGVSZXNv
bHZlciYgc3R5bGVSZXNvbHZlcigpOwotICAgIFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXJJ
ZkV4aXN0cygpOwogICAgIFN0eWxlOjpTY29wZSYgc3R5bGVTY29wZSgpOwogCi0gICAgdm9pZCB1
cGRhdGVTdHlsZSgpOwotICAgIHZvaWQgcmVzZXRTdHlsZVJlc29sdmVyKCk7Ci0KICAgICBib29s
IHJlc2V0U3R5bGVJbmhlcml0YW5jZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzZXRTdHlsZUluaGVy
aXRhbmNlOyB9CiAgICAgdm9pZCBzZXRSZXNldFN0eWxlSW5oZXJpdGFuY2UoYm9vbCk7CiAKQEAg
LTExNCw3ICsxMDksNiBAQCBwcml2YXRlOgogCiAgICAgRWxlbWVudCogbV9ob3N0IHsgbnVsbHB0
ciB9OwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPFN0eWxlUmVzb2x2ZXI+IG1fc3R5bGVSZXNvbHZl
cjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U3R5bGU6OlNjb3BlPiBtX3N0eWxlU2NvcGU7CiAKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8U2xvdEFzc2lnbm1lbnQ+IG1fc2xvdEFzc2lnbm1lbnQ7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCShyZXZpc2lvbiAyMDY5MTgpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0NDIsNyArMTQ0
Miw3IEBAIFJlZlB0cjxDU1NSdWxlTGlzdD4gRE9NV2luZG93OjpnZXRNYXRjaGUKIAogICAgIFBz
ZXVkb0lkIHBzZXVkb0lkID0gQ1NTU2VsZWN0b3I6OnBzZXVkb0lkKHBzZXVkb1R5cGUpOwogCi0g
ICAgYXV0byBtYXRjaGVkUnVsZXMgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5lbnN1cmVTdHlsZVJl
c29sdmVyKCkucHNldWRvU3R5bGVSdWxlc0ZvckVsZW1lbnQoZWxlbWVudCwgcHNldWRvSWQsIHJ1
bGVzVG9JbmNsdWRlKTsKKyAgICBhdXRvIG1hdGNoZWRSdWxlcyA9IG1fZnJhbWUtPmRvY3VtZW50
KCktPnN0eWxlU2NvcGUoKS5yZXNvbHZlcigpLnBzZXVkb1N0eWxlUnVsZXNGb3JFbGVtZW50KGVs
ZW1lbnQsIHBzZXVkb0lkLCBydWxlc1RvSW5jbHVkZSk7CiAgICAgaWYgKG1hdGNoZWRSdWxlcy5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZVZpZXcuY3BwCShyZXZpc2lvbiAyMDY5MTgpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMzIsNyArMTMzMiw3IEBAIHZvaWQgRnJh
bWVWaWV3OjpsYXlvdXQoYm9vbCBhbGxvd1N1YnRyZWUKICAgICAgICAgbV9sYXlvdXRQaGFzZSA9
IEluUHJlTGF5b3V0U3R5bGVVcGRhdGU7CiAKICAgICAgICAgLy8gVmlld3BvcnQtZGVwZW5kZW50
IG1lZGlhIHF1ZXJpZXMgbWF5IGNhdXNlIHVzIHRvIG5lZWQgY29tcGxldGVseSBkaWZmZXJlbnQg
c3R5bGUgaW5mb3JtYXRpb24uCi0gICAgICAgIFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIg
PSBkb2N1bWVudC5zdHlsZVJlc29sdmVySWZFeGlzdHMoKTsKKyAgICAgICAgYXV0byogc3R5bGVS
ZXNvbHZlciA9IGRvY3VtZW50LnN0eWxlU2NvcGUoKS5yZXNvbHZlcklmRXhpc3RzKCk7CiAgICAg
ICAgIGlmICghc3R5bGVSZXNvbHZlciB8fCBzdHlsZVJlc29sdmVyLT5oYXNNZWRpYVF1ZXJpZXNB
ZmZlY3RlZEJ5Vmlld3BvcnRDaGFuZ2UoKSkgewogICAgICAgICAgICAgTE9HKExheW91dCwgIiAg
aGFzTWVkaWFRdWVyaWVzQWZmZWN0ZWRCeVZpZXdwb3J0Q2hhbmdlLCBlbnF1ZXVlaW5nIHN0eWxl
IHJlY2FsYyIpOwogICAgICAgICAgICAgZG9jdW1lbnQuc3R5bGVTY29wZSgpLmRpZENoYW5nZUNv
bnRlbnRzT3JJbnRlcnByZXRhdGlvbigpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCShyZXZpc2lv
biAyMDY5MTgpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00OTEsNyArNDkxLDcgQEAgdm9pZCBQYWdlOjp1cGRhdGVTdHlsZUZvckFsbFBhZ2VzQWZ0
ZXJHbAogICAgICAgICAgICAgLy8gdGhlIHByb3BlcnRpZXMgY2FjaGUuCiAgICAgICAgICAgICBp
ZiAoIWZyYW1lLT5kb2N1bWVudCgpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICAgICAgaWYgKFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIgPSBmcmFtZS0+ZG9jdW1lbnQo
KS0+c3R5bGVSZXNvbHZlcklmRXhpc3RzKCkpCisgICAgICAgICAgICBpZiAoU3R5bGVSZXNvbHZl
ciogc3R5bGVSZXNvbHZlciA9IGZyYW1lLT5kb2N1bWVudCgpLT5zdHlsZVNjb3BlKCkucmVzb2x2
ZXJJZkV4aXN0cygpKQogICAgICAgICAgICAgICAgIHN0eWxlUmVzb2x2ZXItPmludmFsaWRhdGVN
YXRjaGVkUHJvcGVydGllc0NhY2hlKCk7CiAgICAgICAgICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+
c2NoZWR1bGVGb3JjZWRTdHlsZVJlY2FsYygpOwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wYWdlL1ByaW50Q29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGFnZS9QcmludENvbnRleHQuY3BwCShyZXZpc2lvbiAyMDY5MTgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wYWdlL1ByaW50Q29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAK
ICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiU3R5bGVJbmhlcml0ZWREYXRhLmgi
CiAjaW5jbHVkZSAiU3R5bGVSZXNvbHZlci5oIgorI2luY2x1ZGUgIlN0eWxlU2NvcGUuaCIKICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAt
MjUxLDcgKzI1Miw3IEBAIFN0cmluZyBQcmludENvbnRleHQ6OnBhZ2VQcm9wZXJ0eShGcmFtZSoK
ICAgICBQcmludENvbnRleHQgcHJpbnRDb250ZXh0KGZyYW1lKTsKICAgICBwcmludENvbnRleHQu
YmVnaW4oODAwKTsgLy8gQW55IHdpZHRoIGlzIE9LIGhlcmUuCiAgICAgZG9jdW1lbnQtPnVwZGF0
ZUxheW91dCgpOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUgPSBkb2N1
bWVudC0+ZW5zdXJlU3R5bGVSZXNvbHZlcigpLnN0eWxlRm9yUGFnZShwYWdlTnVtYmVyKTsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlID0gZG9jdW1lbnQtPnN0eWxlU2Nv
cGUoKS5yZXNvbHZlcigpLnN0eWxlRm9yUGFnZShwYWdlTnVtYmVyKTsKIAogICAgIC8vIEltcGxl
bWVudCBmb3JtYXR0ZXJzIGZvciBwcm9wZXJ0aWVzIHdlIGNhcmUgYWJvdXQuCiAgICAgaWYgKCFz
dHJjbXAocHJvcGVydHlOYW1lLCAibWFyZ2luLWxlZnQiKSkgewpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwCShyZXZpc2lvbiAy
MDY5MTgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiUGFnZS5oIgog
I2luY2x1ZGUgIlBhZ2VDYWNoZS5oIgogI2luY2x1ZGUgIlNjcm9sbGluZ1RocmVhZC5oIgorI2lu
Y2x1ZGUgIlN0eWxlU2NvcGUuaCIKICNpbmNsdWRlICJTdHlsZWRFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiV29ya2VyVGhyZWFkLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5jcmVtZW50YWxT
d2VlcGVyLmg+CkBAIC0xMjgsNyArMTI5LDcgQEAgdm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6
OnJlbGVhc2VDcml0aQogICAgICAgICBWZWN0b3I8UmVmUHRyPERvY3VtZW50Pj4gZG9jdW1lbnRz
OwogICAgICAgICBjb3B5VG9WZWN0b3IoRG9jdW1lbnQ6OmFsbERvY3VtZW50cygpLCBkb2N1bWVu
dHMpOwogICAgICAgICBmb3IgKGF1dG8mIGRvY3VtZW50IDogZG9jdW1lbnRzKQotICAgICAgICAg
ICAgZG9jdW1lbnQtPmNsZWFyU3R5bGVSZXNvbHZlcigpOworICAgICAgICAgICAgZG9jdW1lbnQt
PnN0eWxlU2NvcGUoKS5jbGVhclJlc29sdmVyKCk7CiAgICAgfQogCiAgICAgewpJbmRleDogU291
cmNlL1dlYkNvcmUvc3R5bGUvQXR0cmlidXRlQ2hhbmdlSW52YWxpZGF0aW9uLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdHlsZS9BdHRyaWJ1dGVDaGFuZ2VJbnZhbGlkYXRpb24u
Y3BwCShyZXZpc2lvbiAyMDY5MTgpCisrKyBTb3VyY2UvV2ViQ29yZS9zdHlsZS9BdHRyaWJ1dGVD
aGFuZ2VJbnZhbGlkYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwxMyArMzEsMTQgQEAK
ICNpbmNsdWRlICJTaGFkb3dSb290LmgiCiAjaW5jbHVkZSAiU3R5bGVJbnZhbGlkYXRpb25BbmFs
eXNpcy5oIgogI2luY2x1ZGUgIlN0eWxlUmVzb2x2ZXIuaCIKKyNpbmNsdWRlICJTdHlsZVNjb3Bl
LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBTdHlsZSB7CiAKIHN0YXRpYyBi
b29sIG1heUJlQWZmZWN0ZWRCeUhvc3RTdHlsZShTaGFkb3dSb290JiBzaGFkb3dSb290LCBib29s
IGlzSFRNTCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKIHsKLSAgICBhdXRv
JiBzaGFkb3dSdWxlU2V0cyA9IHNoYWRvd1Jvb3Quc3R5bGVSZXNvbHZlcigpLnJ1bGVTZXRzKCk7
CisgICAgYXV0byYgc2hhZG93UnVsZVNldHMgPSBzaGFkb3dSb290LnN0eWxlU2NvcGUoKS5yZXNv
bHZlcigpLnJ1bGVTZXRzKCk7CiAgICAgaWYgKHNoYWRvd1J1bGVTZXRzLmF1dGhvclN0eWxlKCku
aG9zdFBzZXVkb0NsYXNzUnVsZXMoKS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IApJbmRleDogU291cmNlL1dlYkNvcmUvc3R5bGUvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N0eWxlL0NsYXNzQ2hhbmdlSW52YWxpZGF0
aW9uLmNwcAkocmV2aXNpb24gMjA2OTE4KQorKysgU291cmNlL1dlYkNvcmUvc3R5bGUvQ2xhc3ND
aGFuZ2VJbnZhbGlkYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAj
aW5jbHVkZSAiU3BhY2VTcGxpdFN0cmluZy5oIgogI2luY2x1ZGUgIlN0eWxlSW52YWxpZGF0aW9u
QW5hbHlzaXMuaCIKICNpbmNsdWRlICJTdHlsZVJlc29sdmVyLmgiCisjaW5jbHVkZSAiU3R5bGVT
Y29wZS5oIgogI2luY2x1ZGUgPHd0Zi9CaXRWZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpAQCAtODcsNyArODgsNyBAQCBzdGF0aWMgQ2xhc3NDaGFuZ2VWZWN0b3IgY29tcHV0ZUNsYXNz
Q2hhCiAKIHN0YXRpYyBib29sIG1heUJlQWZmZWN0ZWRCeUhvc3RTdHlsZShTaGFkb3dSb290JiBz
aGFkb3dSb290LCBBdG9taWNTdHJpbmdJbXBsKiBjaGFuZ2VkQ2xhc3MpCiB7Ci0gICAgYXV0byYg
c2hhZG93UnVsZVNldHMgPSBzaGFkb3dSb290LnN0eWxlUmVzb2x2ZXIoKS5ydWxlU2V0cygpOwor
ICAgIGF1dG8mIHNoYWRvd1J1bGVTZXRzID0gc2hhZG93Um9vdC5zdHlsZVNjb3BlKCkucmVzb2x2
ZXIoKS5ydWxlU2V0cygpOwogICAgIGlmIChzaGFkb3dSdWxlU2V0cy5hdXRob3JTdHlsZSgpLmhv
c3RQc2V1ZG9DbGFzc1J1bGVzKCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgcmV0dXJuIHNoYWRvd1J1bGVTZXRzLmZlYXR1cmVzKCkuY2xhc3Nlc0luUnVsZXMuY29udGFp
bnMoY2hhbmdlZENsYXNzKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0eWxlL0lkQ2hhbmdlSW52
YWxpZGF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdHlsZS9JZENoYW5n
ZUludmFsaWRhdGlvbi5jcHAJKHJldmlzaW9uIDIwNjkxOCkKKysrIFNvdXJjZS9XZWJDb3JlL3N0
eWxlL0lkQ2hhbmdlSW52YWxpZGF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsMTMgKzMw
LDE0IEBACiAjaW5jbHVkZSAiRWxlbWVudENoaWxkSXRlcmF0b3IuaCIKICNpbmNsdWRlICJTaGFk
b3dSb290LmgiCiAjaW5jbHVkZSAiU3R5bGVSZXNvbHZlci5oIgorI2luY2x1ZGUgIlN0eWxlU2Nv
cGUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIFN0eWxlIHsKIAogc3RhdGlj
IGJvb2wgbWF5QmVBZmZlY3RlZEJ5SG9zdFN0eWxlKFNoYWRvd1Jvb3QmIHNoYWRvd1Jvb3QsIGNv
bnN0IEF0b21pY1N0cmluZyYgY2hhbmdlZElkKQogewotICAgIGF1dG8mIHNoYWRvd1J1bGVTZXRz
ID0gc2hhZG93Um9vdC5zdHlsZVJlc29sdmVyKCkucnVsZVNldHMoKTsKKyAgICBhdXRvJiBzaGFk
b3dSdWxlU2V0cyA9IHNoYWRvd1Jvb3Quc3R5bGVTY29wZSgpLnJlc29sdmVyKCkucnVsZVNldHMo
KTsKICAgICBpZiAoc2hhZG93UnVsZVNldHMuYXV0aG9yU3R5bGUoKS5ob3N0UHNldWRvQ2xhc3NS
dWxlcygpLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9zdHlsZS9TdHlsZVNjb3BlLmNwcAkocmV2aXNpb24gMjA2OTI3KQorKysgU291cmNlL1dlYkNv
cmUvc3R5bGUvU3R5bGVTY29wZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcxLDIwICs3MSwzMiBA
QCBTY29wZTo6U2NvcGUoU2hhZG93Um9vdCYgc2hhZG93Um9vdCkKIHsKIH0KIAotU3R5bGVSZXNv
bHZlciYgU2NvcGU6OnN0eWxlUmVzb2x2ZXIoKQorU3R5bGVSZXNvbHZlciYgU2NvcGU6OnJlc29s
dmVyKCkKIHsKLSAgICBpZiAobV9zaGFkb3dSb290KQotICAgICAgICByZXR1cm4gbV9zaGFkb3dS
b290LT5zdHlsZVJlc29sdmVyKCk7CisgICAgaWYgKG1fc2hhZG93Um9vdCAmJiBtX3NoYWRvd1Jv
b3QtPm1vZGUoKSA9PSBTaGFkb3dSb290OjpNb2RlOjpVc2VyQWdlbnQpCisgICAgICAgIHJldHVy
biBtX2RvY3VtZW50LnVzZXJBZ2VudFNoYWRvd1RyZWVTdHlsZVJlc29sdmVyKCk7CiAKLSAgICBy
ZXR1cm4gbV9kb2N1bWVudC5lbnN1cmVTdHlsZVJlc29sdmVyKCk7CisgICAgaWYgKCFtX3Jlc29s
dmVyKSB7CisgICAgICAgIG1fcmVzb2x2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFN0eWxlUmVzb2x2
ZXI+KG1fZG9jdW1lbnQpOworICAgICAgICBtX3Jlc29sdmVyLT5hcHBlbmRBdXRob3JTdHlsZVNo
ZWV0cyhtX2FjdGl2ZVN0eWxlU2hlZXRzKTsKKyAgICB9CisgICAgcmV0dXJuICptX3Jlc29sdmVy
OwogfQogCi1TdHlsZVJlc29sdmVyKiBTY29wZTo6c3R5bGVSZXNvbHZlcklmRXhpc3RzKCkKK1N0
eWxlUmVzb2x2ZXIqIFNjb3BlOjpyZXNvbHZlcklmRXhpc3RzKCkKIHsKLSAgICBpZiAobV9zaGFk
b3dSb290KQotICAgICAgICByZXR1cm4gbV9zaGFkb3dSb290LT5zdHlsZVJlc29sdmVySWZFeGlz
dHMoKTsKKyAgICBpZiAobV9zaGFkb3dSb290ICYmIG1fc2hhZG93Um9vdC0+bW9kZSgpID09IFNo
YWRvd1Jvb3Q6Ok1vZGU6OlVzZXJBZ2VudCkKKyAgICAgICAgcmV0dXJuICZtX2RvY3VtZW50LnVz
ZXJBZ2VudFNoYWRvd1RyZWVTdHlsZVJlc29sdmVyKCk7CisKKyAgICByZXR1cm4gbV9yZXNvbHZl
ci5nZXQoKTsKK30KKwordm9pZCBTY29wZTo6Y2xlYXJSZXNvbHZlcigpCit7CisgICAgbV9yZXNv
bHZlciA9IG51bGxwdHI7CiAKLSAgICByZXR1cm4gbV9kb2N1bWVudC5zdHlsZVJlc29sdmVySWZF
eGlzdHMoKTsKKyAgICBpZiAoIW1fc2hhZG93Um9vdCkKKyAgICAgICAgbV9kb2N1bWVudC5kaWRD
bGVhclN0eWxlUmVzb2x2ZXIoKTsKIH0KIAogU2NvcGUmIFNjb3BlOjpmb3JOb2RlKE5vZGUmIG5v
ZGUpCkBAIC0xMTgsNyArMTMwLDggQEAgdm9pZCBTY29wZTo6cmVtb3ZlUGVuZGluZ1NoZWV0KFJl
bW92ZVBlbgogICAgIH0KIAogICAgIGlmIChtX3NoYWRvd1Jvb3QpIHsKLSAgICAgICAgbV9zaGFk
b3dSb290LT51cGRhdGVTdHlsZSgpOworICAgICAgICAvLyBGSVhNRTogTWFrZSBvcHRpbWl6ZWQg
dXBkYXRlcyB3b3JrLgorICAgICAgICBkaWRDaGFuZ2VDb250ZW50c09ySW50ZXJwcmV0YXRpb24o
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjQ4LDEwICsyNjEsMTAgQEAgU2NvcGU6
OlN0eWxlUmVzb2x2ZXJVcGRhdGVUeXBlIFNjb3BlOjphbgogICAgIAogICAgIHVuc2lnbmVkIG5l
d1N0eWxlc2hlZXRDb3VudCA9IG5ld1N0eWxlc2hlZXRzLnNpemUoKTsKIAotICAgIGlmICghc3R5
bGVSZXNvbHZlcklmRXhpc3RzKCkpCisgICAgaWYgKCFyZXNvbHZlcklmRXhpc3RzKCkpCiAgICAg
ICAgIHJldHVybiBSZWNvbnN0cnVjdDsKIAotICAgIFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2
ZXIgPSAqc3R5bGVSZXNvbHZlcklmRXhpc3RzKCk7CisgICAgYXV0byYgc3R5bGVSZXNvbHZlciA9
ICpyZXNvbHZlcklmRXhpc3RzKCk7CiAKICAgICAvLyBGaW5kIG91dCB3aGljaCBzdHlsZXNoZWV0
cyBhcmUgbmV3LgogICAgIHVuc2lnbmVkIG9sZFN0eWxlc2hlZXRDb3VudCA9IG1fYWN0aXZlU3R5
bGVTaGVldHMuc2l6ZSgpOwpAQCAtMzIzLDE0ICszMzYsMTQgQEAgdm9pZCBTY29wZTo6dXBkYXRl
QWN0aXZlU3R5bGVTaGVldHMoVXBkYQogICAgIH0KIAogICAgIGlmICghbV9kb2N1bWVudC5oYXNM
aXZpbmdSZW5kZXJUcmVlKCkpIHsKLSAgICAgICAgbV9kb2N1bWVudC5jbGVhclN0eWxlUmVzb2x2
ZXIoKTsKKyAgICAgICAgY2xlYXJSZXNvbHZlcigpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CiAgICAgLy8gRG9uJ3QgYm90aGVyIHVwZGF0aW5nLCBzaW5jZSB3ZSBoYXZlbid0IGxvYWRlZCBh
bGwgb3VyIHN0eWxlIGluZm8geWV0CiAgICAgLy8gYW5kIGhhdmVuJ3QgY2FsY3VsYXRlZCB0aGUg
c3R5bGUgcmVzb2x2ZXIgZm9yIHRoZSBmaXJzdCB0aW1lLgogICAgIGlmICghbV9zaGFkb3dSb290
ICYmICFtX2RpZFVwZGF0ZUFjdGl2ZVN0eWxlU2hlZXRzICYmIG1fcGVuZGluZ1N0eWxlU2hlZXRD
b3VudCkgewotICAgICAgICBtX2RvY3VtZW50LmNsZWFyU3R5bGVSZXNvbHZlcigpOworICAgICAg
ICBjbGVhclJlc29sdmVyKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTM3OCwxMyAr
MzkxLDEwIEBAIHZvaWQgU2NvcGU6OnVwZGF0ZUFjdGl2ZVN0eWxlU2hlZXRzKFVwZGEKIHZvaWQg
U2NvcGU6OnVwZGF0ZVN0eWxlUmVzb2x2ZXIoVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0Pj4m
IGFjdGl2ZVN0eWxlU2hlZXRzLCBTdHlsZVJlc29sdmVyVXBkYXRlVHlwZSB1cGRhdGVUeXBlKQog
ewogICAgIGlmICh1cGRhdGVUeXBlID09IFJlY29uc3RydWN0KSB7Ci0gICAgICAgIGlmIChtX3No
YWRvd1Jvb3QpCi0gICAgICAgICAgICBtX3NoYWRvd1Jvb3QtPnJlc2V0U3R5bGVSZXNvbHZlcigp
OwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2RvY3VtZW50LmNsZWFyU3R5bGVSZXNvbHZl
cigpOworICAgICAgICBjbGVhclJlc29sdmVyKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0g
ICAgYXV0byYgc3R5bGVSZXNvbHZlciA9IHRoaXMtPnN0eWxlUmVzb2x2ZXIoKTsKKyAgICBhdXRv
JiBzdHlsZVJlc29sdmVyID0gcmVzb2x2ZXIoKTsKIAogICAgIGlmICh1cGRhdGVUeXBlID09IFJl
c2V0KSB7CiAgICAgICAgIHN0eWxlUmVzb2x2ZXIucnVsZVNldHMoKS5yZXNldEF1dGhvclN0eWxl
KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZS5oCShyZXZpc2lvbiAyMDY5MjcpCisr
KyBTb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlLmgJKHdvcmtpbmcgY29weSkKQEAgLTg5
LDggKzg5LDkgQEAgcHVibGljOgogICAgIGJvb2wgaGFzUGVuZGluZ1VwZGF0ZSgpIGNvbnN0IHsg
cmV0dXJuICEhbV9wZW5kaW5nVXBkYXRlVHlwZTsgfQogICAgIHZvaWQgZmx1c2hQZW5kaW5nVXBk
YXRlKCk7CiAKLSAgICBTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyKCk7Ci0gICAgU3R5bGVS
ZXNvbHZlciogc3R5bGVSZXNvbHZlcklmRXhpc3RzKCk7CisgICAgU3R5bGVSZXNvbHZlciYgcmVz
b2x2ZXIoKTsKKyAgICBTdHlsZVJlc29sdmVyKiByZXNvbHZlcklmRXhpc3RzKCk7CisgICAgdm9p
ZCBjbGVhclJlc29sdmVyKCk7CiAKICAgICBzdGF0aWMgU2NvcGUmIGZvck5vZGUoTm9kZSYpOwog
CkBAIC0xMTQsNiArMTE1LDggQEAgcHJpdmF0ZToKICAgICBEb2N1bWVudCYgbV9kb2N1bWVudDsK
ICAgICBTaGFkb3dSb290KiBtX3NoYWRvd1Jvb3QgeyBudWxscHRyIH07CiAKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8U3R5bGVSZXNvbHZlcj4gbV9yZXNvbHZlcjsKKwogICAgIFZlY3RvcjxSZWZQdHI8
U3R5bGVTaGVldD4+IG1fc3R5bGVTaGVldHNGb3JTdHlsZVNoZWV0TGlzdDsKICAgICBWZWN0b3I8
UmVmUHRyPENTU1N0eWxlU2hlZXQ+PiBtX2FjdGl2ZVN0eWxlU2hlZXRzOwogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNoYXJpbmdSZXNvbHZlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTaGFyaW5nUmVzb2x2ZXIuY3BwCShyZXZpc2lvbiAy
MDY5MTgpCisrKyBTb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNoYXJpbmdSZXNvbHZlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJSZW5kZXJTdHlsZS5o
IgogI2luY2x1ZGUgIlNWR0VsZW1lbnQuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCisjaW5j
bHVkZSAiU3R5bGVTY29wZS5oIgogI2luY2x1ZGUgIlN0eWxlVXBkYXRlLmgiCiAjaW5jbHVkZSAi
U3R5bGVkRWxlbWVudC5oIgogI2luY2x1ZGUgIlZpc2l0ZWRMaW5rU3RhdGUuaCIKQEAgLTk3LDcg
Kzk4LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBTaGFyaW5nUmVzbwogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICBpZiAoZWxlbWVudEhhc0RpcmVjdGlvbkF1dG8oZWxlbWVu
dCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGlmIChlbGVtZW50LnNoYWRvd1Jvb3Qo
KSAmJiAhZWxlbWVudC5zaGFkb3dSb290KCktPnN0eWxlUmVzb2x2ZXIoKS5ydWxlU2V0cygpLmF1
dGhvclN0eWxlKCkuaG9zdFBzZXVkb0NsYXNzUnVsZXMoKS5pc0VtcHR5KCkpCisgICAgaWYgKGVs
ZW1lbnQuc2hhZG93Um9vdCgpICYmICFlbGVtZW50LnNoYWRvd1Jvb3QoKS0+c3R5bGVTY29wZSgp
LnJlc29sdmVyKCkucnVsZVNldHMoKS5hdXRob3JTdHlsZSgpLmhvc3RQc2V1ZG9DbGFzc1J1bGVz
KCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIENvbnRleHQgY29u
dGV4dCB7CkBAIC0yODcsNyArMjg4LDcgQEAgYm9vbCBTaGFyaW5nUmVzb2x2ZXI6OmNhblNoYXJl
U3R5bGVXaXRoRQogICAgIGlmIChjYW5kaWRhdGVFbGVtZW50Lm1hdGNoZXNEZWZhdWx0UHNldWRv
Q2xhc3MoKSAhPSBlbGVtZW50Lm1hdGNoZXNEZWZhdWx0UHNldWRvQ2xhc3MoKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKGVsZW1lbnQuc2hhZG93Um9vdCgpICYmICFlbGVtZW50
LnNoYWRvd1Jvb3QoKS0+c3R5bGVSZXNvbHZlcigpLnJ1bGVTZXRzKCkuYXV0aG9yU3R5bGUoKS5o
b3N0UHNldWRvQ2xhc3NSdWxlcygpLmlzRW1wdHkoKSkKKyAgICBpZiAoZWxlbWVudC5zaGFkb3dS
b290KCkgJiYgIWVsZW1lbnQuc2hhZG93Um9vdCgpLT5zdHlsZVNjb3BlKCkucmVzb2x2ZXIoKS5y
dWxlU2V0cygpLmF1dGhvclN0eWxlKCkuaG9zdFBzZXVkb0NsYXNzUnVsZXMoKS5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAJKHJldmlzaW9u
IDIwNjkxOCkKKysrIFNvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtODMsMTMgKzgzLDEzIEBAIFRyZWVSZXNvbHZlcjo6flRyZWVSZXNv
bHZlcigpCiB9CiAKIFRyZWVSZXNvbHZlcjo6U2NvcGU6OlNjb3BlKERvY3VtZW50JiBkb2N1bWVu
dCkKLSAgICA6IHN0eWxlUmVzb2x2ZXIoZG9jdW1lbnQuZW5zdXJlU3R5bGVSZXNvbHZlcigpKQor
ICAgIDogc3R5bGVSZXNvbHZlcihkb2N1bWVudC5zdHlsZVNjb3BlKCkucmVzb2x2ZXIoKSkKICAg
ICAsIHNoYXJpbmdSZXNvbHZlcihkb2N1bWVudCwgc3R5bGVSZXNvbHZlci5ydWxlU2V0cygpLCBz
ZWxlY3RvckZpbHRlcikKIHsKIH0KIAogVHJlZVJlc29sdmVyOjpTY29wZTo6U2NvcGUoU2hhZG93
Um9vdCYgc2hhZG93Um9vdCwgU2NvcGUmIGVuY2xvc2luZ1Njb3BlKQotICAgIDogc3R5bGVSZXNv
bHZlcihzaGFkb3dSb290LnN0eWxlUmVzb2x2ZXIoKSkKKyAgICA6IHN0eWxlUmVzb2x2ZXIoc2hh
ZG93Um9vdC5zdHlsZVNjb3BlKCkucmVzb2x2ZXIoKSkKICAgICAsIHNoYXJpbmdSZXNvbHZlcihz
aGFkb3dSb290LmRvY3VtZW50U2NvcGUoKSwgc3R5bGVSZXNvbHZlci5ydWxlU2V0cygpLCBzZWxl
Y3RvckZpbHRlcikKICAgICAsIHNoYWRvd1Jvb3QoJnNoYWRvd1Jvb3QpCiAgICAgLCBlbmNsb3Np
bmdTY29wZSgmZW5jbG9zaW5nU2NvcGUpCkBAIC00NDAsNyArNDQwLDcgQEAgc3RkOjp1bmlxdWVf
cHRyPFVwZGF0ZT4gVHJlZVJlc29sdmVyOjpyZQogCiAgICAgRWxlbWVudCogZG9jdW1lbnRFbGVt
ZW50ID0gbV9kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQoKTsKICAgICBpZiAoIWRvY3VtZW50RWxl
bWVudCkgewotICAgICAgICBtX2RvY3VtZW50LmVuc3VyZVN0eWxlUmVzb2x2ZXIoKTsKKyAgICAg
ICAgbV9kb2N1bWVudC5zdHlsZVNjb3BlKCkucmVzb2x2ZXIoKTsKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgfQogICAgIGlmIChjaGFuZ2UgIT0gRm9yY2UgJiYgIWRvY3VtZW50RWxlbWVu
dC0+Y2hpbGROZWVkc1N0eWxlUmVjYWxjKCkgJiYgIWRvY3VtZW50RWxlbWVudC0+bmVlZHNTdHls
ZVJlY2FsYygpKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>