<?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>68025</bug_id>
          
          <creation_ts>2011-09-13 14:20:37 -0700</creation_ts>
          <short_desc>Move identifier filter from CSSStyleSelector to SelectorChecker</short_desc>
          <delta_ts>2011-09-13 15:38:36 -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>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></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>hyatt</cc>
    
    <cc>rolandsteiner</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>466522</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2011-09-13 14:20:37 -0700</bug_when>
    <thetext>This is a more logical place for this code (and also makes CSSStyleSelector slightly less bloated). It will make it possible to use fastRejectSelector for querySelectoAll in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>466540</commentid>
    <comment_count>1</comment_count>
      <attachid>107230</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2011-09-13 14:34:00 -0700</bug_when>
    <thetext>Created attachment 107230
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>466545</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-13 14:36:29 -0700</bug_when>
    <thetext>Attachment 107230 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebCore/css/SelectorChecker.h:63:  The parameter name &quot;selector&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/css/SelectorChecker.cpp:186:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
Total errors found: 2 in 5 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>466615</commentid>
    <comment_count>3</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2011-09-13 15:38:36 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/95052</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>107230</attachid>
            <date>2011-09-13 14:34:00 -0700</date>
            <delta_ts>2011-09-13 15:29:15 -0700</delta_ts>
            <desc>patch</desc>
            <filename>move-identifier-filter.patch</filename>
            <type>text/plain</type>
            <size>21264</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk1MDQ0KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTEtMDktMTMgIEFudHRpIEtv
aXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgaWRlbnRpZmllciBmaWx0
ZXIgZnJvbSBDU1NTdHlsZVNlbGVjdG9yIHRvIFNlbGVjdG9yQ2hlY2tlcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjgwMjUKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGlzIGEgbW9yZSBsb2dpY2Fs
IHBsYWNlIGZvciB0aGlzIGNvZGUuIEl0IGFsc28gbWFrZXMgQ1NTU3R5bGVTZWxlY3RvciBzbGln
aHRseSBsZXNzIGJsb2F0ZWQuIAorICAgICAgICBJdCB3aWxsIG1ha2UgaXQgcG9zc2libGUgdG8g
dXNlIGZhc3RSZWplY3RTZWxlY3RvciBmb3IgcXVlcnlTZWxlY3RvQWxsIGluIHRoZSBmdXR1cmUu
CisKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojpsb2FkVmlld1NvdXJjZVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0
b3I6Om1hdGNoUnVsZXNGb3JMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bGVEYXRhOjpSdWxl
RGF0YSk6CisgICAgICAgICogY3NzL0NTU1N0eWxlU2VsZWN0b3IuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1N0eWxlU2VsZWN0b3I6OnB1c2hQYXJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
U3R5bGVTZWxlY3Rvcjo6cG9wUGFyZW50KToKKyAgICAgICAgKiBjc3MvU2VsZWN0b3JDaGVja2Vy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbGxlY3RFbGVtZW50SWRlbnRpZmllckhhc2hlcyk6
CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNoZWNrZXI6OnB1c2hQYXJlbnRTdGFja0ZyYW1l
KToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ2hlY2tlcjo6cG9wUGFyZW50U3RhY2tGcmFt
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNoZWNrZXI6OnB1c2hQYXJlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjpwb3BQYXJlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6Y29sbGVjdERlc2NlbmRhbnRTZWxlY3RvcklkZW50aWZpZXJIYXNoZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjpjb2xsZWN0SWRlbnRpZmllckhhc2hlcyk6Cisg
ICAgICAgICogY3NzL1NlbGVjdG9yQ2hlY2tlci5oOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0
b3JDaGVja2VyOjpwYXJlbnRTdGFja0lzQ29uc2lzdGVudCk6CisgICAgICAgIChXZWJDb3JlOjpT
ZWxlY3RvckNoZWNrZXI6OlBhcmVudFN0YWNrRnJhbWU6OlBhcmVudFN0YWNrRnJhbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjpmYXN0UmVqZWN0U2VsZWN0b3IpOgorCiAy
MDExLTA5LTEzICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZW1v
dmUgRU5BQkxFX1NWR19GT1JFSUdOX09CSkVDVCBhcyBpdCBpcyBhIHJlcXVpcmVkIHBhcnQgb2Yg
SFRNTDUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAJKHJldmlz
aW9uIDk1MDM5KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xOTUsMTAgKzE5NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgbWF4aW11bUlkZW50aWZpZXJDb3VudCA9IDQ7CiAgICAgY29uc3QgdW5zaWdu
ZWQqIGRlc2NlbmRhbnRTZWxlY3RvcklkZW50aWZpZXJIYXNoZXMoKSBjb25zdCB7IHJldHVybiBt
X2Rlc2NlbmRhbnRTZWxlY3RvcklkZW50aWZpZXJIYXNoZXM7IH0KIAotcHJpdmF0ZToKLSAgICB2
b2lkIGNvbGxlY3REZXNjZW5kYW50U2VsZWN0b3JJZGVudGlmaWVySGFzaGVzKCk7Ci0gICAgdm9p
ZCBjb2xsZWN0SWRlbnRpZmllckhhc2hlcyhjb25zdCBDU1NTZWxlY3RvciosIHVuc2lnbmVkJiBp
ZGVudGlmaWVyQ291bnQpOwotICAgIAorcHJpdmF0ZTogICAgCiAgICAgQ1NTU3R5bGVSdWxlKiBt
X3J1bGU7CiAgICAgQ1NTU2VsZWN0b3IqIG1fc2VsZWN0b3I7CiAgICAgdW5zaWduZWQgbV9zcGVj
aWZpY2l0eTsKQEAgLTUwNyw4OCArNTA0LDYgQEAgc3RhdGljIHZvaWQgbG9hZFZpZXdTb3VyY2VT
dHlsZSgpCiAgICAgZGVmYXVsdFZpZXdTb3VyY2VTdHlsZSA9IG5ldyBSdWxlU2V0OwogICAgIGRl
ZmF1bHRWaWV3U291cmNlU3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KHBhcnNlVUFTaGVldChzb3Vy
Y2VVc2VyQWdlbnRTdHlsZVNoZWV0LCBzaXplb2Yoc291cmNlVXNlckFnZW50U3R5bGVTaGVldCkp
LCBzY3JlZW5FdmFsKCkpOwogfQotICAgIAotc3RhdGljIGlubGluZSB2b2lkIGNvbGxlY3RFbGVt
ZW50SWRlbnRpZmllckhhc2hlcyhjb25zdCBFbGVtZW50KiBlbGVtZW50LCBWZWN0b3I8dW5zaWdu
ZWQsIDQ+JiBpZGVudGlmaWVySGFzaGVzKQotewotICAgIGlkZW50aWZpZXJIYXNoZXMuYXBwZW5k
KGVsZW1lbnQtPmxvY2FsTmFtZSgpLmltcGwoKS0+ZXhpc3RpbmdIYXNoKCkpOwotICAgIGlmIChl
bGVtZW50LT5oYXNJRCgpKQotICAgICAgICBpZGVudGlmaWVySGFzaGVzLmFwcGVuZChlbGVtZW50
LT5pZEZvclN0eWxlUmVzb2x1dGlvbigpLmltcGwoKS0+ZXhpc3RpbmdIYXNoKCkpOwotICAgIGNv
bnN0IFN0eWxlZEVsZW1lbnQqIHN0eWxlZEVsZW1lbnQgPSBlbGVtZW50LT5pc1N0eWxlZEVsZW1l
bnQoKSA/IHN0YXRpY19jYXN0PGNvbnN0IFN0eWxlZEVsZW1lbnQqPihlbGVtZW50KSA6IDA7Ci0g
ICAgaWYgKHN0eWxlZEVsZW1lbnQgJiYgc3R5bGVkRWxlbWVudC0+aGFzQ2xhc3MoKSkgewotICAg
ICAgICBjb25zdCBTcGFjZVNwbGl0U3RyaW5nJiBjbGFzc05hbWVzID0gc3R5bGVkRWxlbWVudC0+
Y2xhc3NOYW1lcygpOwotICAgICAgICBzaXplX3QgY291bnQgPSBjbGFzc05hbWVzLnNpemUoKTsK
LSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb3VudDsgKytpKQotICAgICAgICAgICAg
aWRlbnRpZmllckhhc2hlcy5hcHBlbmQoY2xhc3NOYW1lc1tpXS5pbXBsKCktPmV4aXN0aW5nSGFz
aCgpKTsKLSAgICB9Ci19Ci0KLXZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6cHVzaFBhcmVudFN0YWNr
RnJhbWUoRWxlbWVudCogcGFyZW50KQotewotICAgIEFTU0VSVChtX2FuY2VzdG9ySWRlbnRpZmll
ckZpbHRlcik7Ci0gICAgQVNTRVJUKG1fcGFyZW50U3RhY2suaXNFbXB0eSgpIHx8IG1fcGFyZW50
U3RhY2subGFzdCgpLmVsZW1lbnQgPT0gcGFyZW50LT5wYXJlbnRPckhvc3RFbGVtZW50KCkpOwot
ICAgIEFTU0VSVCghbV9wYXJlbnRTdGFjay5pc0VtcHR5KCkgfHwgIXBhcmVudC0+cGFyZW50T3JI
b3N0RWxlbWVudCgpKTsKLSAgICBtX3BhcmVudFN0YWNrLmFwcGVuZChQYXJlbnRTdGFja0ZyYW1l
KHBhcmVudCkpOwotICAgIFBhcmVudFN0YWNrRnJhbWUmIHBhcmVudEZyYW1lID0gbV9wYXJlbnRT
dGFjay5sYXN0KCk7Ci0gICAgLy8gTWl4IHRhZ3MsIGNsYXNzIG5hbWVzIGFuZCBpZHMgaW50byBz
b21lIHNvcnQgb2Ygd2VpcmQgYm91aWxsYWJhaXNzZS4KLSAgICAvLyBUaGUgZmlsdGVyIGlzIHVz
ZWQgZm9yIGZhc3QgcmVqZWN0aW9uIG9mIGNoaWxkIGFuZCBkZXNjZW5kYW50IHNlbGVjdG9ycy4K
LSAgICBjb2xsZWN0RWxlbWVudElkZW50aWZpZXJIYXNoZXMocGFyZW50LCBwYXJlbnRGcmFtZS5p
ZGVudGlmaWVySGFzaGVzKTsKLSAgICBzaXplX3QgY291bnQgPSBwYXJlbnRGcmFtZS5pZGVudGlm
aWVySGFzaGVzLnNpemUoKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50OyArK2kp
Ci0gICAgICAgIG1fYW5jZXN0b3JJZGVudGlmaWVyRmlsdGVyLT5hZGQocGFyZW50RnJhbWUuaWRl
bnRpZmllckhhc2hlc1tpXSk7Ci19Ci0KLXZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6cG9wUGFyZW50
U3RhY2tGcmFtZSgpCi17Ci0gICAgQVNTRVJUKCFtX3BhcmVudFN0YWNrLmlzRW1wdHkoKSk7Ci0g
ICAgQVNTRVJUKG1fYW5jZXN0b3JJZGVudGlmaWVyRmlsdGVyKTsKLSAgICBjb25zdCBQYXJlbnRT
dGFja0ZyYW1lJiBwYXJlbnRGcmFtZSA9IG1fcGFyZW50U3RhY2subGFzdCgpOwotICAgIHNpemVf
dCBjb3VudCA9IHBhcmVudEZyYW1lLmlkZW50aWZpZXJIYXNoZXMuc2l6ZSgpOwotICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkKLSAgICAgICAgbV9hbmNlc3RvcklkZW50aWZp
ZXJGaWx0ZXItPnJlbW92ZShwYXJlbnRGcmFtZS5pZGVudGlmaWVySGFzaGVzW2ldKTsKLSAgICBt
X3BhcmVudFN0YWNrLnJlbW92ZUxhc3QoKTsKLSAgICBpZiAobV9wYXJlbnRTdGFjay5pc0VtcHR5
KCkpIHsKLSAgICAgICAgQVNTRVJUKG1fYW5jZXN0b3JJZGVudGlmaWVyRmlsdGVyLT5saWtlbHlF
bXB0eSgpKTsKLSAgICAgICAgbV9hbmNlc3RvcklkZW50aWZpZXJGaWx0ZXIuY2xlYXIoKTsKLSAg
ICB9Ci19Ci0KLXZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6cHVzaFBhcmVudChFbGVtZW50KiBwYXJl
bnQpCi17Ci0gICAgaWYgKG1fcGFyZW50U3RhY2suaXNFbXB0eSgpKSB7Ci0gICAgICAgIEFTU0VS
VCghbV9hbmNlc3RvcklkZW50aWZpZXJGaWx0ZXIpOwotICAgICAgICBtX2FuY2VzdG9ySWRlbnRp
ZmllckZpbHRlciA9IGFkb3B0UHRyKG5ldyBCbG9vbUZpbHRlcjxibG9vbUZpbHRlcktleUJpdHM+
KTsKLSAgICAgICAgLy8gSWYgdGhlIGVsZW1lbnQgaXMgbm90IHRoZSByb290IGl0c2VsZiwgYnVp
bGQgdGhlIHN0YWNrIHN0YXJ0aW5nIGZyb20gdGhlIHJvb3QuCi0gICAgICAgIGlmIChwYXJlbnQt
PnBhcmVudE9ySG9zdE5vZGUoKSkgewotICAgICAgICAgICAgVmVjdG9yPEVsZW1lbnQqLCAzMD4g
YW5jZXN0b3JzOwotICAgICAgICAgICAgZm9yIChFbGVtZW50KiBhbmNlc3RvciA9IHBhcmVudDsg
YW5jZXN0b3I7IGFuY2VzdG9yID0gYW5jZXN0b3ItPnBhcmVudE9ySG9zdEVsZW1lbnQoKSkKLSAg
ICAgICAgICAgICAgICBhbmNlc3RvcnMuYXBwZW5kKGFuY2VzdG9yKTsKLSAgICAgICAgICAgIGlu
dCBjb3VudCA9IGFuY2VzdG9ycy5zaXplKCk7Ci0gICAgICAgICAgICBmb3IgKGludCBuID0gY291
bnQgLSAxOyBuID49IDA7IC0tbikKLSAgICAgICAgICAgICAgICBwdXNoUGFyZW50U3RhY2tGcmFt
ZShhbmNlc3RvcnNbbl0pOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfSBl
bHNlIGlmICghcGFyZW50LT5wYXJlbnRPckhvc3RFbGVtZW50KCkpIHsKLSAgICAgICAgLy8gV2Ug
YXJlIG5vdCBhbHdheXMgaW52b2tlZCBjb25zaXN0ZW50bHkuIEZvciBleGFtcGxlLCBzY3JpcHQg
ZXhlY3V0aW9uIGNhbiBjYXVzZSB1cyB0byBlbnRlcgotICAgICAgICAvLyBzdHlsZSByZWNhbGMg
aW4gdGhlIG1pZGRsZSBvZiB0cmVlIGJ1aWxkaW5nLiBSZXNldCB0aGUgc3RhY2sgaWYgd2Ugc2Vl
IGEgbmV3IHJvb3QgZWxlbWVudC4KLSAgICAgICAgQVNTRVJUKG1fYW5jZXN0b3JJZGVudGlmaWVy
RmlsdGVyKTsKLSAgICAgICAgbV9hbmNlc3RvcklkZW50aWZpZXJGaWx0ZXItPmNsZWFyKCk7Ci0g
ICAgICAgIG1fcGFyZW50U3RhY2sucmVzaXplKDApOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIEFT
U0VSVChtX2FuY2VzdG9ySWRlbnRpZmllckZpbHRlcik7Ci0gICAgICAgIC8vIFdlIG1heSBnZXQg
aW52b2tlZCBmb3Igc29tZSByYW5kb20gZWxlbWVudHMgaW4gc29tZSB3YWNreSBjYXNlcyBkdXJp
bmcgc3R5bGUgcmVzb2x2ZS4KLSAgICAgICAgLy8gUGF1c2UgbWFpbnRhaW5pbmcgdGhlIHN0YWNr
IGluIHRoaXMgY2FzZS4KLSAgICAgICAgaWYgKG1fcGFyZW50U3RhY2subGFzdCgpLmVsZW1lbnQg
IT0gcGFyZW50LT5wYXJlbnRPckhvc3RFbGVtZW50KCkpCi0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgfQotICAgIHB1c2hQYXJlbnRTdGFja0ZyYW1lKHBhcmVudCk7Ci19Ci0KLXZvaWQgQ1NTU3R5
bGVTZWxlY3Rvcjo6cG9wUGFyZW50KEVsZW1lbnQqIHBhcmVudCkKLXsKLSAgICBpZiAobV9wYXJl
bnRTdGFjay5pc0VtcHR5KCkgfHwgbV9wYXJlbnRTdGFjay5sYXN0KCkuZWxlbWVudCAhPSBwYXJl
bnQpCi0gICAgICAgIHJldHVybjsKLSAgICBwb3BQYXJlbnRTdGFja0ZyYW1lKCk7Ci19CiAKIHZv
aWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YWRkTWF0Y2hlZERlY2xhcmF0aW9uKENTU011dGFibGVTdHls
ZURlY2xhcmF0aW9uKiBkZWNsKQogewpAQCAtNjQxLDE3ICs1NTYsNiBAQCB2b2lkIENTU1N0eWxl
U2VsZWN0b3I6Om1hdGNoUnVsZXMoUnVsZVNlCiAgICAgfQogfQogCi1pbmxpbmUgYm9vbCBDU1NT
dHlsZVNlbGVjdG9yOjpmYXN0UmVqZWN0U2VsZWN0b3IoY29uc3QgUnVsZURhdGEmIHJ1bGVEYXRh
KSBjb25zdAotewotICAgIEFTU0VSVChtX2FuY2VzdG9ySWRlbnRpZmllckZpbHRlcik7Ci0gICAg
Y29uc3QgdW5zaWduZWQqIGRlc2NlbmRhbnRTZWxlY3RvcklkZW50aWZpZXJIYXNoZXMgPSBydWxl
RGF0YS5kZXNjZW5kYW50U2VsZWN0b3JJZGVudGlmaWVySGFzaGVzKCk7Ci0gICAgZm9yICh1bnNp
Z25lZCBuID0gMDsgbiA8IFJ1bGVEYXRhOjptYXhpbXVtSWRlbnRpZmllckNvdW50ICYmIGRlc2Nl
bmRhbnRTZWxlY3RvcklkZW50aWZpZXJIYXNoZXNbbl07ICsrbikgewotICAgICAgICBpZiAoIW1f
YW5jZXN0b3JJZGVudGlmaWVyRmlsdGVyLT5tYXlDb250YWluKGRlc2NlbmRhbnRTZWxlY3Rvcklk
ZW50aWZpZXJIYXNoZXNbbl0pKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAg
IHJldHVybiBmYWxzZTsKLX0KLQogY2xhc3MgTWF0Y2hpbmdVQVJ1bGVzU2NvcGUgewogcHVibGlj
OgogICAgIE1hdGNoaW5nVUFSdWxlc1Njb3BlKCk7CkBAIC02OTIsMTIgKzU5NiwxMiBAQCB2b2lk
IENTU1N0eWxlU2VsZWN0b3I6Om1hdGNoUnVsZXNGb3JMaXN0CiAgICAgICAgIHJldHVybjsKICAg
ICAvLyBJbiBzb21lIGNhc2VzIHdlIG1heSBlbmQgdXAgbG9va2luZyB1cCBzdHlsZSBmb3IgcmFu
ZG9tIGVsZW1lbnRzIGluIHRoZSBtaWRkbGUgb2YgYSByZWN1cnNpdmUgdHJlZSByZXNvbHZlLgog
ICAgIC8vIEFuY2VzdG9yIGlkZW50aWZpZXIgZmlsdGVyIHdvbid0IGJlIHVwLXRvLWRhdGUgaW4g
dGhhdCBjYXNlIGFuZCB3ZSBjYW4ndCB1c2UgdGhlIGZhc3QgcGF0aC4KLSAgICBib29sIGNhblVz
ZUZhc3RSZWplY3QgPSAhbV9wYXJlbnRTdGFjay5pc0VtcHR5KCkgJiYgbV9wYXJlbnRTdGFjay5s
YXN0KCkuZWxlbWVudCA9PSBtX3BhcmVudE5vZGU7CisgICAgYm9vbCBjYW5Vc2VGYXN0UmVqZWN0
ID0gbV9jaGVja2VyLnBhcmVudFN0YWNrSXNDb25zaXN0ZW50KG1fcGFyZW50Tm9kZSk7CiAKICAg
ICB1bnNpZ25lZCBzaXplID0gcnVsZXMtPnNpemUoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgc2l6ZTsgKytpKSB7CiAgICAgICAgIGNvbnN0IFJ1bGVEYXRhJiBydWxlRGF0YSA9IHJ1
bGVzLT5hdChpKTsKLSAgICAgICAgaWYgKGNhblVzZUZhc3RSZWplY3QgJiYgZmFzdFJlamVjdFNl
bGVjdG9yKHJ1bGVEYXRhKSkKKyAgICAgICAgaWYgKGNhblVzZUZhc3RSZWplY3QgJiYgbV9jaGVj
a2VyLmZhc3RSZWplY3RTZWxlY3RvcjxSdWxlRGF0YTo6bWF4aW11bUlkZW50aWZpZXJDb3VudD4o
cnVsZURhdGEuZGVzY2VuZGFudFNlbGVjdG9ySWRlbnRpZmllckhhc2hlcygpKSkKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICBpZiAoY2hlY2tTZWxlY3RvcihydWxlRGF0YSkpIHsKICAg
ICAgICAgICAgIGlmICghbWF0Y2hlc0luVHJlZVNjb3BlKG1fZWxlbWVudC0+dHJlZVNjb3BlKCks
IG1fY2hlY2tlci5oYXNVbmtub3duUHNldWRvRWxlbWVudHMoKSkpCkBAIC0xOTI0LDUwICsxODI4
LDcgQEAgUnVsZURhdGE6OlJ1bGVEYXRhKENTU1N0eWxlUnVsZSogcnVsZSwgQwogICAgICwgbV9o
YXNNdWx0aXBhcnRTZWxlY3RvcihzZWxlY3Rvci0+dGFnSGlzdG9yeSgpKQogICAgICwgbV9oYXNU
b3BTZWxlY3Rvck1hdGNoaW5nSFRNTEJhc2VkT25SdWxlSGFzaChpc1NlbGVjdG9yTWF0Y2hpbmdI
VE1MQmFzZWRPblJ1bGVIYXNoKHNlbGVjdG9yKSkKIHsKLSAgICBjb2xsZWN0RGVzY2VuZGFudFNl
bGVjdG9ySWRlbnRpZmllckhhc2hlcygpOwotfQotCi1pbmxpbmUgdm9pZCBSdWxlRGF0YTo6Y29s
bGVjdElkZW50aWZpZXJIYXNoZXMoY29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yLCB1bnNpZ25l
ZCYgaWRlbnRpZmllckNvdW50KQotewotICAgIGlmICgoc2VsZWN0b3ItPm1fbWF0Y2ggPT0gQ1NT
U2VsZWN0b3I6OklkIHx8IHNlbGVjdG9yLT5tX21hdGNoID09IENTU1NlbGVjdG9yOjpDbGFzcykg
JiYgIXNlbGVjdG9yLT52YWx1ZSgpLmlzRW1wdHkoKSkKLSAgICAgICAgbV9kZXNjZW5kYW50U2Vs
ZWN0b3JJZGVudGlmaWVySGFzaGVzW2lkZW50aWZpZXJDb3VudCsrXSA9IHNlbGVjdG9yLT52YWx1
ZSgpLmltcGwoKS0+ZXhpc3RpbmdIYXNoKCk7Ci0gICAgaWYgKGlkZW50aWZpZXJDb3VudCA9PSBt
YXhpbXVtSWRlbnRpZmllckNvdW50KQotICAgICAgICByZXR1cm47Ci0gICAgY29uc3QgQXRvbWlj
U3RyaW5nJiBsb2NhbE5hbWUgPSBzZWxlY3Rvci0+dGFnKCkubG9jYWxOYW1lKCk7Ci0gICAgaWYg
KGxvY2FsTmFtZSAhPSBzdGFyQXRvbSkKLSAgICAgICAgbV9kZXNjZW5kYW50U2VsZWN0b3JJZGVu
dGlmaWVySGFzaGVzW2lkZW50aWZpZXJDb3VudCsrXSA9IGxvY2FsTmFtZS5pbXBsKCktPmV4aXN0
aW5nSGFzaCgpOwotfQotCi1pbmxpbmUgdm9pZCBSdWxlRGF0YTo6Y29sbGVjdERlc2NlbmRhbnRT
ZWxlY3RvcklkZW50aWZpZXJIYXNoZXMoKQotewotICAgIHVuc2lnbmVkIGlkZW50aWZpZXJDb3Vu
dCA9IDA7Ci0gICAgQ1NTU2VsZWN0b3I6OlJlbGF0aW9uIHJlbGF0aW9uID0gbV9zZWxlY3Rvci0+
cmVsYXRpb24oKTsKLSAgICAKLSAgICAvLyBTa2lwIHRoZSB0b3Btb3N0IHNlbGVjdG9yLiBJdCBp
cyBoYW5kbGVkIHF1aWNrbHkgYnkgdGhlIHJ1bGUgaGFzaGVzLiAgICAKLSAgICBib29sIHNraXBP
dmVyU3Vic2VsZWN0b3JzID0gdHJ1ZTsKLSAgICBmb3IgKGNvbnN0IENTU1NlbGVjdG9yKiBzZWxl
Y3RvciA9IG1fc2VsZWN0b3ItPnRhZ0hpc3RvcnkoKTsgc2VsZWN0b3I7IHNlbGVjdG9yID0gc2Vs
ZWN0b3ItPnRhZ0hpc3RvcnkoKSkgewotICAgICAgICAvLyBPbmx5IGNvbGxlY3QgaWRlbnRpZmll
cnMgdGhhdCBtYXRjaCBhbmNlc3RvcnMuCi0gICAgICAgIHN3aXRjaCAocmVsYXRpb24pIHsKLSAg
ICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6U3ViU2VsZWN0b3I6Ci0gICAgICAgICAgICBpZiAoIXNr
aXBPdmVyU3Vic2VsZWN0b3JzKQotICAgICAgICAgICAgICAgIGNvbGxlY3RJZGVudGlmaWVySGFz
aGVzKHNlbGVjdG9yLCBpZGVudGlmaWVyQ291bnQpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGNhc2UgQ1NTU2VsZWN0b3I6OkRpcmVjdEFkamFjZW50OgotICAgICAgICBjYXNlIENTU1Nl
bGVjdG9yOjpJbmRpcmVjdEFkamFjZW50OgotICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpTaGFk
b3dEZXNjZW5kYW50OgotICAgICAgICAgICAgc2tpcE92ZXJTdWJzZWxlY3RvcnMgPSB0cnVlOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OkRlc2NlbmRhbnQ6
Ci0gICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OkNoaWxkOgotICAgICAgICAgICAgc2tpcE92ZXJT
dWJzZWxlY3RvcnMgPSBmYWxzZTsKLSAgICAgICAgICAgIGNvbGxlY3RJZGVudGlmaWVySGFzaGVz
KHNlbGVjdG9yLCBpZGVudGlmaWVyQ291bnQpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IH0KLSAgICAgICAgaWYgKGlkZW50aWZpZXJDb3VudCA9PSBtYXhpbXVtSWRlbnRpZmllckNvdW50
KQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICByZWxhdGlvbiA9IHNlbGVjdG9yLT5yZWxh
dGlvbigpOwotICAgIH0KLSAgICBtX2Rlc2NlbmRhbnRTZWxlY3RvcklkZW50aWZpZXJIYXNoZXNb
aWRlbnRpZmllckNvdW50XSA9IDA7CisgICAgU2VsZWN0b3JDaGVja2VyOjpjb2xsZWN0SWRlbnRp
Zmllckhhc2hlcyhtX3NlbGVjdG9yLCBtX2Rlc2NlbmRhbnRTZWxlY3RvcklkZW50aWZpZXJIYXNo
ZXMsIG1heGltdW1JZGVudGlmaWVyQ291bnQpOwogfQogCiBSdWxlU2V0OjpSdWxlU2V0KCkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuaAkocmV2aXNpb24gOTUwMzkpCisr
KyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yNyw3ICsyNyw2IEBACiAjaW5jbHVkZSAiTWVkaWFRdWVyeUV4cC5oIgogI2luY2x1ZGUgIlJl
bmRlclN0eWxlLmgiCiAjaW5jbHVkZSAiU2VsZWN0b3JDaGVja2VyLmgiCi0jaW5jbHVkZSA8d3Rm
L0Jsb29tRmlsdGVyLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYv
SGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTk1LDkgKzk0LDggQEAgcHVi
bGljOgogICAgIH5DU1NTdHlsZVNlbGVjdG9yKCk7CiAgICAgCiAgICAgLy8gVXNpbmcgdGhlc2Ug
ZHVyaW5nIHRyZWUgd2FsayB3aWxsIGFsbG93IHN0eWxlIHNlbGVjdG9yIHRvIG9wdGltaXplIGNo
aWxkIGFuZCBkZXNjZW5kYW50IHNlbGVjdG9yIGxvb2t1cHMuCi0gICAgdm9pZCBwdXNoUGFyZW50
KEVsZW1lbnQqIHBhcmVudCk7Ci0gICAgdm9pZCBwb3BQYXJlbnQoRWxlbWVudCogcGFyZW50KTsK
LQorICAgIHZvaWQgcHVzaFBhcmVudChFbGVtZW50KiBwYXJlbnQpIHsgbV9jaGVja2VyLnB1c2hQ
YXJlbnQocGFyZW50KTsgfQorICAgIHZvaWQgcG9wUGFyZW50KEVsZW1lbnQqIHBhcmVudCkgeyBt
X2NoZWNrZXIucG9wUGFyZW50KHBhcmVudCk7IH0KIAogICAgIFBhc3NSZWZQdHI8UmVuZGVyU3R5
bGU+IHN0eWxlRm9yRWxlbWVudChFbGVtZW50KiwgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlID0g
MCwgYm9vbCBhbGxvd1NoYXJpbmcgPSB0cnVlLCBib29sIHJlc29sdmVGb3JSb290RGVmYXVsdCA9
IGZhbHNlLCBib29sIG1hdGNoVmlzaXRlZFBzZXVkb0NsYXNzID0gZmFsc2UpOwogICAgIApAQCAt
MTI4LDkgKzEyNiw2IEBAIHByaXZhdGU6CiAgICAgTm9kZSogbG9jYXRlQ291c2luTGlzdChFbGVt
ZW50KiBwYXJlbnQsIHVuc2lnbmVkJiB2aXNpdGVkTm9kZUNvdW50KSBjb25zdDsKICAgICBOb2Rl
KiBmaW5kU2libGluZ0ZvclN0eWxlU2hhcmluZyhOb2RlKiwgdW5zaWduZWQmIGNvdW50KSBjb25z
dDsKICAgICBib29sIGNhblNoYXJlU3R5bGVXaXRoRWxlbWVudChOb2RlKikgY29uc3Q7Ci0gICAg
Ci0gICAgdm9pZCBwdXNoUGFyZW50U3RhY2tGcmFtZShFbGVtZW50KiBwYXJlbnQpOwotICAgIHZv
aWQgcG9wUGFyZW50U3RhY2tGcmFtZSgpOwogCiAgICAgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4g
c3R5bGVGb3JLZXlmcmFtZShjb25zdCBSZW5kZXJTdHlsZSosIGNvbnN0IFdlYktpdENTU0tleWZy
YW1lUnVsZSosIEtleWZyYW1lVmFsdWUmKTsKIApAQCAtMjQ1LDE4ICsyNDAsNiBAQCBwcml2YXRl
OgogCiAgICAgRmVhdHVyZXMgbV9mZWF0dXJlczsKIAotICAgIHN0cnVjdCBQYXJlbnRTdGFja0Zy
YW1lIHsKLSAgICAgICAgUGFyZW50U3RhY2tGcmFtZSgpIHsgfQotICAgICAgICBQYXJlbnRTdGFj
a0ZyYW1lKEVsZW1lbnQqIGVsZW1lbnQpIDogZWxlbWVudChlbGVtZW50KSB7IH0KLSAgICAgICAg
RWxlbWVudCogZWxlbWVudDsKLSAgICAgICAgVmVjdG9yPHVuc2lnbmVkLCA0PiBpZGVudGlmaWVy
SGFzaGVzOwotICAgIH07Ci0gICAgVmVjdG9yPFBhcmVudFN0YWNrRnJhbWU+IG1fcGFyZW50U3Rh
Y2s7Ci0gICAgCi0gICAgLy8gV2l0aCAxMDAgdW5pcXVlIHN0cmluZ3MgaW4gdGhlIGZpbHRlciwg
Ml4xMiBzbG90IHRhYmxlIGhhcyBmYWxzZSBwb3NpdGl2ZSByYXRlIG9mIH4wLjIlLgotICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBibG9vbUZpbHRlcktleUJpdHMgPSAxMjsKLSAgICBPd25QdHI8
Qmxvb21GaWx0ZXI8Ymxvb21GaWx0ZXJLZXlCaXRzPiA+IG1fYW5jZXN0b3JJZGVudGlmaWVyRmls
dGVyOwotCiAgICAgYm9vbCBtX2hhc1VBQXBwZWFyYW5jZTsKICAgICBCb3JkZXJEYXRhIG1fYm9y
ZGVyRGF0YTsKICAgICBGaWxsTGF5ZXIgbV9iYWNrZ3JvdW5kRGF0YTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCShyZXZpc2lvbiA5NTAzOSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OSw2ICs3
OSwxMzIgQEAgU2VsZWN0b3JDaGVja2VyOjpTZWxlY3RvckNoZWNrZXIoRG9jdW1lbgogewogfQog
CitzdGF0aWMgaW5saW5lIHZvaWQgY29sbGVjdEVsZW1lbnRJZGVudGlmaWVySGFzaGVzKGNvbnN0
IEVsZW1lbnQqIGVsZW1lbnQsIFZlY3Rvcjx1bnNpZ25lZCwgND4mIGlkZW50aWZpZXJIYXNoZXMp
Cit7CisgICAgaWRlbnRpZmllckhhc2hlcy5hcHBlbmQoZWxlbWVudC0+bG9jYWxOYW1lKCkuaW1w
bCgpLT5leGlzdGluZ0hhc2goKSk7CisgICAgaWYgKGVsZW1lbnQtPmhhc0lEKCkpCisgICAgICAg
IGlkZW50aWZpZXJIYXNoZXMuYXBwZW5kKGVsZW1lbnQtPmlkRm9yU3R5bGVSZXNvbHV0aW9uKCku
aW1wbCgpLT5leGlzdGluZ0hhc2goKSk7CisgICAgY29uc3QgU3R5bGVkRWxlbWVudCogc3R5bGVk
RWxlbWVudCA9IGVsZW1lbnQtPmlzU3R5bGVkRWxlbWVudCgpID8gc3RhdGljX2Nhc3Q8Y29uc3Qg
U3R5bGVkRWxlbWVudCo+KGVsZW1lbnQpIDogMDsKKyAgICBpZiAoc3R5bGVkRWxlbWVudCAmJiBz
dHlsZWRFbGVtZW50LT5oYXNDbGFzcygpKSB7CisgICAgICAgIGNvbnN0IFNwYWNlU3BsaXRTdHJp
bmcmIGNsYXNzTmFtZXMgPSBzdHlsZWRFbGVtZW50LT5jbGFzc05hbWVzKCk7CisgICAgICAgIHNp
emVfdCBjb3VudCA9IGNsYXNzTmFtZXMuc2l6ZSgpOworICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGNvdW50OyArK2kpCisgICAgICAgICAgICBpZGVudGlmaWVySGFzaGVzLmFwcGVuZChj
bGFzc05hbWVzW2ldLmltcGwoKS0+ZXhpc3RpbmdIYXNoKCkpOworICAgIH0KK30KKwordm9pZCBT
ZWxlY3RvckNoZWNrZXI6OnB1c2hQYXJlbnRTdGFja0ZyYW1lKEVsZW1lbnQqIHBhcmVudCkKK3sK
KyAgICBBU1NFUlQobV9hbmNlc3RvcklkZW50aWZpZXJGaWx0ZXIpOworICAgIEFTU0VSVChtX3Bh
cmVudFN0YWNrLmlzRW1wdHkoKSB8fCBtX3BhcmVudFN0YWNrLmxhc3QoKS5lbGVtZW50ID09IHBh
cmVudC0+cGFyZW50T3JIb3N0RWxlbWVudCgpKTsKKyAgICBBU1NFUlQoIW1fcGFyZW50U3RhY2su
aXNFbXB0eSgpIHx8ICFwYXJlbnQtPnBhcmVudE9ySG9zdEVsZW1lbnQoKSk7CisgICAgbV9wYXJl
bnRTdGFjay5hcHBlbmQoUGFyZW50U3RhY2tGcmFtZShwYXJlbnQpKTsKKyAgICBQYXJlbnRTdGFj
a0ZyYW1lJiBwYXJlbnRGcmFtZSA9IG1fcGFyZW50U3RhY2subGFzdCgpOworICAgIC8vIE1peCB0
YWdzLCBjbGFzcyBuYW1lcyBhbmQgaWRzIGludG8gc29tZSBzb3J0IG9mIHdlaXJkIGJvdWlsbGFi
YWlzc2UuCisgICAgLy8gVGhlIGZpbHRlciBpcyB1c2VkIGZvciBmYXN0IHJlamVjdGlvbiBvZiBj
aGlsZCBhbmQgZGVzY2VuZGFudCBzZWxlY3RvcnMuCisgICAgY29sbGVjdEVsZW1lbnRJZGVudGlm
aWVySGFzaGVzKHBhcmVudCwgcGFyZW50RnJhbWUuaWRlbnRpZmllckhhc2hlcyk7CisgICAgc2l6
ZV90IGNvdW50ID0gcGFyZW50RnJhbWUuaWRlbnRpZmllckhhc2hlcy5zaXplKCk7CisgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBjb3VudDsgKytpKQorICAgICAgICBtX2FuY2VzdG9ySWRlbnRp
ZmllckZpbHRlci0+YWRkKHBhcmVudEZyYW1lLmlkZW50aWZpZXJIYXNoZXNbaV0pOworfQorCit2
b2lkIFNlbGVjdG9yQ2hlY2tlcjo6cG9wUGFyZW50U3RhY2tGcmFtZSgpCit7CisgICAgQVNTRVJU
KCFtX3BhcmVudFN0YWNrLmlzRW1wdHkoKSk7CisgICAgQVNTRVJUKG1fYW5jZXN0b3JJZGVudGlm
aWVyRmlsdGVyKTsKKyAgICBjb25zdCBQYXJlbnRTdGFja0ZyYW1lJiBwYXJlbnRGcmFtZSA9IG1f
cGFyZW50U3RhY2subGFzdCgpOworICAgIHNpemVfdCBjb3VudCA9IHBhcmVudEZyYW1lLmlkZW50
aWZpZXJIYXNoZXMuc2l6ZSgpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7ICsr
aSkKKyAgICAgICAgbV9hbmNlc3RvcklkZW50aWZpZXJGaWx0ZXItPnJlbW92ZShwYXJlbnRGcmFt
ZS5pZGVudGlmaWVySGFzaGVzW2ldKTsKKyAgICBtX3BhcmVudFN0YWNrLnJlbW92ZUxhc3QoKTsK
KyAgICBpZiAobV9wYXJlbnRTdGFjay5pc0VtcHR5KCkpIHsKKyAgICAgICAgQVNTRVJUKG1fYW5j
ZXN0b3JJZGVudGlmaWVyRmlsdGVyLT5saWtlbHlFbXB0eSgpKTsKKyAgICAgICAgbV9hbmNlc3Rv
cklkZW50aWZpZXJGaWx0ZXIuY2xlYXIoKTsKKyAgICB9Cit9CisKK3ZvaWQgU2VsZWN0b3JDaGVj
a2VyOjpwdXNoUGFyZW50KEVsZW1lbnQqIHBhcmVudCkKK3sKKyAgICBpZiAobV9wYXJlbnRTdGFj
ay5pc0VtcHR5KCkpIHsKKyAgICAgICAgQVNTRVJUKCFtX2FuY2VzdG9ySWRlbnRpZmllckZpbHRl
cik7CisgICAgICAgIG1fYW5jZXN0b3JJZGVudGlmaWVyRmlsdGVyID0gYWRvcHRQdHIobmV3IEJs
b29tRmlsdGVyPGJsb29tRmlsdGVyS2V5Qml0cz4pOworICAgICAgICAvLyBJZiB0aGUgZWxlbWVu
dCBpcyBub3QgdGhlIHJvb3QgaXRzZWxmLCBidWlsZCB0aGUgc3RhY2sgc3RhcnRpbmcgZnJvbSB0
aGUgcm9vdC4KKyAgICAgICAgaWYgKHBhcmVudC0+cGFyZW50T3JIb3N0Tm9kZSgpKSB7CisgICAg
ICAgICAgICBWZWN0b3I8RWxlbWVudCosIDMwPiBhbmNlc3RvcnM7CisgICAgICAgICAgICBmb3Ig
KEVsZW1lbnQqIGFuY2VzdG9yID0gcGFyZW50OyBhbmNlc3RvcjsgYW5jZXN0b3IgPSBhbmNlc3Rv
ci0+cGFyZW50T3JIb3N0RWxlbWVudCgpKQorICAgICAgICAgICAgICAgIGFuY2VzdG9ycy5hcHBl
bmQoYW5jZXN0b3IpOworICAgICAgICAgICAgaW50IGNvdW50ID0gYW5jZXN0b3JzLnNpemUoKTsK
KyAgICAgICAgICAgIGZvciAoaW50IG4gPSBjb3VudCAtIDE7IG4gPj0gMDsgLS1uKQorICAgICAg
ICAgICAgICAgIHB1c2hQYXJlbnRTdGFja0ZyYW1lKGFuY2VzdG9yc1tuXSk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKCFwYXJlbnQtPnBhcmVudE9ySG9z
dEVsZW1lbnQoKSkgeworICAgICAgICAvLyBXZSBhcmUgbm90IGFsd2F5cyBpbnZva2VkIGNvbnNp
c3RlbnRseS4gRm9yIGV4YW1wbGUsIHNjcmlwdCBleGVjdXRpb24gY2FuIGNhdXNlIHVzIHRvIGVu
dGVyCisgICAgICAgIC8vIHN0eWxlIHJlY2FsYyBpbiB0aGUgbWlkZGxlIG9mIHRyZWUgYnVpbGRp
bmcuIFJlc2V0IHRoZSBzdGFjayBpZiB3ZSBzZWUgYSBuZXcgcm9vdCBlbGVtZW50LgorICAgICAg
ICBBU1NFUlQobV9hbmNlc3RvcklkZW50aWZpZXJGaWx0ZXIpOworICAgICAgICBtX2FuY2VzdG9y
SWRlbnRpZmllckZpbHRlci0+Y2xlYXIoKTsKKyAgICAgICAgbV9wYXJlbnRTdGFjay5yZXNpemUo
MCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgQVNTRVJUKG1fYW5jZXN0b3JJZGVudGlmaWVyRmls
dGVyKTsKKyAgICAgICAgLy8gV2UgbWF5IGdldCBpbnZva2VkIGZvciBzb21lIHJhbmRvbSBlbGVt
ZW50cyBpbiBzb21lIHdhY2t5IGNhc2VzIGR1cmluZyBzdHlsZSByZXNvbHZlLgorICAgICAgICAv
LyBQYXVzZSBtYWludGFpbmluZyB0aGUgc3RhY2sgaW4gdGhpcyBjYXNlLgorICAgICAgICBpZiAo
bV9wYXJlbnRTdGFjay5sYXN0KCkuZWxlbWVudCAhPSBwYXJlbnQtPnBhcmVudE9ySG9zdEVsZW1l
bnQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgcHVzaFBhcmVudFN0YWNrRnJh
bWUocGFyZW50KTsKK30KKwordm9pZCBTZWxlY3RvckNoZWNrZXI6OnBvcFBhcmVudChFbGVtZW50
KiBwYXJlbnQpCit7CisgICAgaWYgKG1fcGFyZW50U3RhY2suaXNFbXB0eSgpIHx8IG1fcGFyZW50
U3RhY2subGFzdCgpLmVsZW1lbnQgIT0gcGFyZW50KQorICAgICAgICByZXR1cm47CisgICAgcG9w
UGFyZW50U3RhY2tGcmFtZSgpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgY29sbGVjdERlc2Nl
bmRhbnRTZWxlY3RvcklkZW50aWZpZXJIYXNoZXMoY29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVjdG9y
LCB1bnNpZ25lZCogaGFzaCwgY29uc3QgdW5zaWduZWQqIGVuZCkKK3sKKyAgICBpZiAoKHNlbGVj
dG9yLT5tX21hdGNoID09IENTU1NlbGVjdG9yOjpJZCB8fCBzZWxlY3Rvci0+bV9tYXRjaCA9PSBD
U1NTZWxlY3Rvcjo6Q2xhc3MpICYmICFzZWxlY3Rvci0+dmFsdWUoKS5pc0VtcHR5KCkpCisgICAg
ICAgICgqaGFzaCsrKSA9IHNlbGVjdG9yLT52YWx1ZSgpLmltcGwoKS0+ZXhpc3RpbmdIYXNoKCk7
CisgICAgaWYgKGhhc2ggPT0gZW5kKQorICAgICAgICByZXR1cm47CisgICAgY29uc3QgQXRvbWlj
U3RyaW5nJiBsb2NhbE5hbWUgPSBzZWxlY3Rvci0+dGFnKCkubG9jYWxOYW1lKCk7CisgICAgaWYg
KGxvY2FsTmFtZSAhPSBzdGFyQXRvbSkKKyAgICAgICAgKCpoYXNoKyspID0gbG9jYWxOYW1lLmlt
cGwoKS0+ZXhpc3RpbmdIYXNoKCk7Cit9CisKK3ZvaWQgU2VsZWN0b3JDaGVja2VyOjpjb2xsZWN0
SWRlbnRpZmllckhhc2hlcyhjb25zdCBDU1NTZWxlY3Rvciogc2VsZWN0b3IsIHVuc2lnbmVkKiBp
ZGVudGlmaWVySGFzaGVzLCB1bnNpZ25lZCBtYXhpbXVtSWRlbnRpZmllckNvdW50KQoreworICAg
IHVuc2lnbmVkKiBoYXNoID0gaWRlbnRpZmllckhhc2hlczsKKyAgICB1bnNpZ25lZCogZW5kID0g
aWRlbnRpZmllckhhc2hlcyArIG1heGltdW1JZGVudGlmaWVyQ291bnQ7CisgICAgQ1NTU2VsZWN0
b3I6OlJlbGF0aW9uIHJlbGF0aW9uID0gc2VsZWN0b3ItPnJlbGF0aW9uKCk7CisgICAgCisgICAg
Ly8gU2tpcCB0aGUgdG9wbW9zdCBzZWxlY3Rvci4gSXQgaXMgaGFuZGxlZCBxdWlja2x5IGJ5IHRo
ZSBydWxlIGhhc2hlcy4gICAgCisgICAgYm9vbCBza2lwT3ZlclN1YnNlbGVjdG9ycyA9IHRydWU7
CisgICAgZm9yIChzZWxlY3RvciA9IHNlbGVjdG9yLT50YWdIaXN0b3J5KCk7IHNlbGVjdG9yOyBz
ZWxlY3RvciA9IHNlbGVjdG9yLT50YWdIaXN0b3J5KCkpIHsKKyAgICAgICAgLy8gT25seSBjb2xs
ZWN0IGlkZW50aWZpZXJzIHRoYXQgbWF0Y2ggYW5jZXN0b3JzLgorICAgICAgICBzd2l0Y2ggKHJl
bGF0aW9uKSB7CisgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpTdWJTZWxlY3RvcjoKKyAg
ICAgICAgICAgICAgICBpZiAoIXNraXBPdmVyU3Vic2VsZWN0b3JzKQorICAgICAgICAgICAgICAg
ICAgICBjb2xsZWN0RGVzY2VuZGFudFNlbGVjdG9ySWRlbnRpZmllckhhc2hlcyhzZWxlY3Rvciwg
aGFzaCwgZW5kKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ1NT
U2VsZWN0b3I6OkRpcmVjdEFkamFjZW50OgorICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6
SW5kaXJlY3RBZGphY2VudDoKKyAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlNoYWRvd0Rl
c2NlbmRhbnQ6CisgICAgICAgICAgICAgICAgc2tpcE92ZXJTdWJzZWxlY3RvcnMgPSB0cnVlOwor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6RGVz
Y2VuZGFudDoKKyAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OkNoaWxkOgorICAgICAgICAg
ICAgICAgIHNraXBPdmVyU3Vic2VsZWN0b3JzID0gZmFsc2U7CisgICAgICAgICAgICAgICAgY29s
bGVjdERlc2NlbmRhbnRTZWxlY3RvcklkZW50aWZpZXJIYXNoZXMoc2VsZWN0b3IsIGhhc2gsIGVu
ZCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGhhc2gg
PT0gZW5kKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICByZWxhdGlvbiA9IHNlbGVjdG9y
LT5yZWxhdGlvbigpOworICAgIH0KKyAgICAqaGFzaCA9IDA7Cit9CisKIHN0YXRpYyBpbmxpbmUg
Y29uc3QgQXRvbWljU3RyaW5nKiBsaW5rQXR0cmlidXRlKE5vZGUqIG5vZGUpCiB7CiAgICAgaWYg
KCFub2RlLT5pc0xpbmsoKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNr
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmgJ
KHJldmlzaW9uIDk1MDM5KQorKysgU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiRWxlbWVudC5oIgog
I2luY2x1ZGUgIkxpbmtIYXNoLmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGVDb25zdGFudHMuaCIK
KyNpbmNsdWRlIDx3dGYvQmxvb21GaWx0ZXIuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgog
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIApAQCAtNTIsNiArNTMsMTUgQEAgcHVibGljOgogICAg
IHN0YXRpYyBib29sIGlzRmFzdENoZWNrYWJsZVNlbGVjdG9yKGNvbnN0IENTU1NlbGVjdG9yKik7
CiAgICAgc3RhdGljIGJvb2wgZmFzdENoZWNrU2VsZWN0b3IoY29uc3QgQ1NTU2VsZWN0b3IqLCBj
b25zdCBFbGVtZW50Kik7CiAKKyAgICB0ZW1wbGF0ZSA8dW5zaWduZWQgbWF4aW11bUlkZW50aWZp
ZXJDb3VudD4KKyAgICBpbmxpbmUgYm9vbCBmYXN0UmVqZWN0U2VsZWN0b3IoY29uc3QgdW5zaWdu
ZWQqIGlkZW50aWZpZXJIYXNoZXMpIGNvbnN0OworCisgICAgdm9pZCBwdXNoUGFyZW50KEVsZW1l
bnQqIHBhcmVudCk7CisgICAgdm9pZCBwb3BQYXJlbnQoRWxlbWVudCogcGFyZW50KTsKKyAgICBi
b29sIHBhcmVudFN0YWNrSXNDb25zaXN0ZW50KENvbnRhaW5lck5vZGUqIHBhcmVudE5vZGUpIGNv
bnN0IHsgcmV0dXJuICFtX3BhcmVudFN0YWNrLmlzRW1wdHkoKSAmJiBtX3BhcmVudFN0YWNrLmxh
c3QoKS5lbGVtZW50ID09IHBhcmVudE5vZGU7IH0KKworICAgIHN0YXRpYyB2b2lkIGNvbGxlY3RJ
ZGVudGlmaWVySGFzaGVzKGNvbnN0IENTU1NlbGVjdG9yKiBzZWxlY3RvciwgdW5zaWduZWQqIGlk
ZW50aWZpZXJIYXNoZXMsIHVuc2lnbmVkIG1heGltdW1JZGVudGlmaWVyQ291bnQpOworCiAgICAg
RUluc2lkZUxpbmsgZGV0ZXJtaW5lTGlua1N0YXRlKEVsZW1lbnQqKSBjb25zdDsKICAgICB2b2lk
IGFsbFZpc2l0ZWRTdGF0ZUNoYW5nZWQoKTsKICAgICB2b2lkIHZpc2l0ZWRTdGF0ZUNoYW5nZWQo
TGlua0hhc2ggdmlzaXRlZEhhc2gpOwpAQCAtNzcsNiArODcsOSBAQCBwcml2YXRlOgogCiAgICAg
RUluc2lkZUxpbmsgZGV0ZXJtaW5lTGlua1N0YXRlU2xvd0Nhc2UoRWxlbWVudCopIGNvbnN0Owog
CisgICAgdm9pZCBwdXNoUGFyZW50U3RhY2tGcmFtZShFbGVtZW50KiBwYXJlbnQpOworICAgIHZv
aWQgcG9wUGFyZW50U3RhY2tGcmFtZSgpOworCiAgICAgRG9jdW1lbnQqIG1fZG9jdW1lbnQ7CiAg
ICAgYm9vbCBtX3N0cmljdFBhcnNpbmc7CiAgICAgYm9vbCBtX2RvY3VtZW50SXNIVE1MOwpAQCAt
ODUsNiArOTgsMTggQEAgcHJpdmF0ZToKICAgICBtdXRhYmxlIGJvb2wgbV9oYXNVbmtub3duUHNl
dWRvRWxlbWVudHM7CiAgICAgbXV0YWJsZSBib29sIG1faXNNYXRjaGluZ1Zpc2l0ZWRQc2V1ZG9D
bGFzczsKICAgICBtdXRhYmxlIEhhc2hTZXQ8TGlua0hhc2gsIExpbmtIYXNoSGFzaD4gbV9saW5r
c0NoZWNrZWRGb3JWaXNpdGVkU3RhdGU7CisKKyAgICBzdHJ1Y3QgUGFyZW50U3RhY2tGcmFtZSB7
CisgICAgICAgIFBhcmVudFN0YWNrRnJhbWUoKSB7IH0KKyAgICAgICAgUGFyZW50U3RhY2tGcmFt
ZShFbGVtZW50KiBlbGVtZW50KSA6IGVsZW1lbnQoZWxlbWVudCkgeyB9CisgICAgICAgIEVsZW1l
bnQqIGVsZW1lbnQ7CisgICAgICAgIFZlY3Rvcjx1bnNpZ25lZCwgND4gaWRlbnRpZmllckhhc2hl
czsKKyAgICB9OworICAgIFZlY3RvcjxQYXJlbnRTdGFja0ZyYW1lPiBtX3BhcmVudFN0YWNrOwor
CisgICAgLy8gV2l0aCAxMDAgdW5pcXVlIHN0cmluZ3MgaW4gdGhlIGZpbHRlciwgMl4xMiBzbG90
IHRhYmxlIGhhcyBmYWxzZSBwb3NpdGl2ZSByYXRlIG9mIH4wLjIlLgorICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBibG9vbUZpbHRlcktleUJpdHMgPSAxMjsKKyAgICBPd25QdHI8Qmxvb21GaWx0
ZXI8Ymxvb21GaWx0ZXJLZXlCaXRzPiA+IG1fYW5jZXN0b3JJZGVudGlmaWVyRmlsdGVyOwogfTsK
IAogaW5saW5lIEVJbnNpZGVMaW5rIFNlbGVjdG9yQ2hlY2tlcjo6ZGV0ZXJtaW5lTGlua1N0YXRl
KEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0CkBAIC05Myw2ICsxMTgsMTcgQEAgaW5saW5lIEVJbnNp
ZGVMaW5rIFNlbGVjdG9yQ2hlY2tlcjo6ZGV0ZQogICAgICAgICByZXR1cm4gTm90SW5zaWRlTGlu
azsKICAgICByZXR1cm4gZGV0ZXJtaW5lTGlua1N0YXRlU2xvd0Nhc2UoZWxlbWVudCk7CiB9Cisg
ICAgCit0ZW1wbGF0ZSA8dW5zaWduZWQgbWF4aW11bUlkZW50aWZpZXJDb3VudD4KK2lubGluZSBi
b29sIFNlbGVjdG9yQ2hlY2tlcjo6ZmFzdFJlamVjdFNlbGVjdG9yKGNvbnN0IHVuc2lnbmVkKiBp
ZGVudGlmaWVySGFzaGVzKSBjb25zdAoreworICAgIEFTU0VSVChtX2FuY2VzdG9ySWRlbnRpZmll
ckZpbHRlcik7CisgICAgZm9yICh1bnNpZ25lZCBuID0gMDsgbiA8IG1heGltdW1JZGVudGlmaWVy
Q291bnQgJiYgaWRlbnRpZmllckhhc2hlc1tuXTsgKytuKSB7CisgICAgICAgIGlmICghbV9hbmNl
c3RvcklkZW50aWZpZXJGaWx0ZXItPm1heUNvbnRhaW4oaWRlbnRpZmllckhhc2hlc1tuXSkpCisg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQogCiB9
CiAK
</data>
<flag name="review"
          id="103870"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>