<?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>77528</bug_id>
          
          <creation_ts>2012-02-01 01:37:37 -0800</creation_ts>
          <short_desc>&lt;style scoped&gt;: Implement scoped selector matching in the slow path</short_desc>
          <delta_ts>2012-02-16 01:31:32 -0800</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>
          <dependson>77525</dependson>
          <blocked>73192</blocked>
    
    <blocked>77527</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Roland Steiner">rolandsteiner</reporter>
          <assigned_to name="Roland Steiner">rolandsteiner</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>koivisto</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>546904</commentid>
    <comment_count>0</comment_count>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2012-02-01 01:37:37 -0800</bug_when>
    <thetext>Implement scoped selector matching, but don&apos;t allow rules from scoped stylesheets to use the fast selector checking path for the time being.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>553953</commentid>
    <comment_count>1</comment_count>
      <attachid>126478</attachid>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2012-02-10 01:58:14 -0800</bug_when>
    <thetext>Created attachment 126478
Patch

Patch, doing the slow path only, incorporating the changes to SelectorChecker compared to the old patches in bug 73192, also somewhat simplifed logic.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>555693</commentid>
    <comment_count>2</comment_count>
      <attachid>126478</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-02-13 15:50:56 -0800</bug_when>
    <thetext>Comment on attachment 126478
Patch

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

r=me, but consider the comments

&gt; Source/WebCore/css/CSSStyleSelector.cpp:176
&gt; +    RuleData(CSSStyleRule*, CSSSelector*, unsigned position, bool canUseFastChecking = true);

Something like canUseFastCheckSelector would be a better name here and elsewhere (so it is clear what is being checked)

&gt; Source/WebCore/css/CSSStyleSelector.h:283
&gt; +#if ENABLE(STYLE_SCOPED)
&gt; +        MatchOptions(bool includeEmptyRules, const Element* scope = 0) : scope(scope), includeEmptyRules(includeEmptyRules) { }
&gt; +        const Element* scope;
&gt; +        bool includeEmptyRules;
&gt; +#else
&gt; +        MatchOptions(bool includeEmptyRules) : includeEmptyRules(includeEmptyRules) { }
&gt; +        bool includeEmptyRules;
&gt; +#endif

I think you can remove #if ENABLE(STYLE_SCOPED) here and just default the scope to null.

&gt; Source/WebCore/css/SelectorChecker.cpp:490
&gt; -        for (; nextContext.element; nextContext.element = nextContext.element-&gt;parentElement()) {
&gt; +        for (;;) {
&gt; +            if (nextContext.element == nextContext.scope)
&gt; +                return SelectorFailsCompletely;
&gt; +            nextContext.element = nextContext.element-&gt;parentElement();
&gt; +            if (!nextContext.element)
&gt; +                return SelectorFailsCompletely;

You can keep the for loop as is if you do the following...

&gt; Source/WebCore/css/SelectorChecker.cpp:498
&gt;      case CSSSelector::Child:
&gt; +        if (nextContext.element == nextContext.scope)
&gt; +            return SelectorFailsCompletely;

This test (current element is the scope) is repeated for all cases except SubSelector. I think it could be moved before the nextContext initialization with a relation != SubSelector test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557983</commentid>
    <comment_count>3</comment_count>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2012-02-16 01:31:32 -0800</bug_when>
    <thetext>Committed r107911: &lt;http://trac.webkit.org/changeset/107911&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126478</attachid>
            <date>2012-02-10 01:58:14 -0800</date>
            <delta_ts>2012-02-13 15:50:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77528-20120210185812.patch</filename>
            <type>text/plain</type>
            <size>32019</size>
            <attacher name="Roland Steiner">rolandsteiner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3MzYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWE1YmQxZDdiMzY1M2Ni
MzU2MzI5OWFiMDUzMmZkNTIyYTE2N2FjYS4uZDMxMDMzZDkyYTAwZmIzMDVjMDMzNGMzYTAxZjcy
ZjQwNjYyNzg3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEyLTAyLTEwICBSb2xh
bmQgU3RlaW5lciAgPHJvbGFuZHN0ZWluZXJAY2hyb21pdW0ub3JnPgorCisgICAgICAgIDxzdHls
ZSBzY29wZWQ+OiBJbXBsZW1lbnQgc2NvcGVkIHNlbGVjdG9yIG1hdGNoaW5nIGluIHRoZSBzbG93
IHBhdGgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3
NTI4CisKKyAgICAgICAgQWRkZWQgc2NvcGUgaW5mb3JtYXRpb24gdG8gU2VsZWN0b3JDaGVja2lu
Z0NvbnRleHQsIFNlbGVjdG9yQ2hlY2tlciBtZXRob2RzIGFuZCBDU1NTdHlsZVNlbGVjdG9yIG1l
dGhvZHMuCisgICAgICAgIEFkZGVkIG1hdGNoT3B0aW9ucyBzdHJ1Y3QgdG8gQ1NTU3R5bGVTZWxl
Y3RvciBzaW1pbGFyIHRvIFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0IGluIFNlbGVjdG9yQ2hlY2tl
ci4KKyAgICAgICAgQWRhcHRlZCB0aGUgY2FsbGluZyBzaXRlcy4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIChleHRlbmRlZCBl
eGlzdGluZyB0ZXN0cykKKworICAgICAgICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcDoKKyAg
ICAgICAgKFJ1bGVEYXRhKToKKyAgICAgICAgKFJ1bGVTZXQpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTU3R5bGVTZWxlY3Rvcjo6ZGV0ZXJtaW5lU2NvcGluZ0VsZW1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6Y29sbGVjdE1hdGNoaW5nUnVsZXMpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6Y29sbGVjdE1hdGNoaW5nUnVsZXNGb3JSZWdpb24p
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6bWF0Y2hTY29wZWRBdXRob3JS
dWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjptYXRjaEF1dGhvclJ1
bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OmNvbGxlY3RNYXRjaGlu
Z1J1bGVzRm9yTGlzdCk6CisgICAgICAgICogY3NzL0NTU1N0eWxlU2VsZWN0b3IuaDoKKyAgICAg
ICAgKENTU1N0eWxlU2VsZWN0b3IpOgorICAgICAgICAoTWF0Y2hPcHRpb25zKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6Ok1hdGNoT3B0aW9uczo6TWF0Y2hPcHRpb25zKToK
KyAgICAgICAgKiBjc3MvU2VsZWN0b3JDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNl
bGVjdG9yQ2hlY2tlcjo6Y2hlY2tTZWxlY3Rvcik6CisgICAgICAgICogY3NzL1NlbGVjdG9yQ2hl
Y2tlci5oOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjpTZWxlY3RvckNoZWNr
aW5nQ29udGV4dDo6U2VsZWN0b3JDaGVja2luZ0NvbnRleHQpOgorICAgICAgICAoU2VsZWN0b3JD
aGVja2luZ0NvbnRleHQpOgorICAgICAgICAoU2VsZWN0b3JDaGVja2VyKToKKwogMjAxMi0wMi0w
OSAgVGltb3RoeSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5jb20+CiAKICAgICAgICAgUHJldmVu
dCBhdHRhY2hpbmcgd2hlbiBpbnNwZWN0aW5nIHRoZSBXZWIgSW5zcGVjdG9yLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCmluZGV4IDU1Njg4MzU0Yjc1ZmQxMmNhM2Y4NGZh
Y2E1YzYzNjhiODk3Mzg4ZjUuLmRjM2FhYjk1MDNjNmFkYzk1ZmFmYjAzZGI3MzNmMzdmYzJlYmZi
YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKQEAgLTE3Myw3ICsx
NzMsNyBAQCBpZiAocHJpbWl0aXZlVmFsdWUpIFwKIAogY2xhc3MgUnVsZURhdGEgewogcHVibGlj
OgotICAgIFJ1bGVEYXRhKENTU1N0eWxlUnVsZSosIENTU1NlbGVjdG9yKiwgdW5zaWduZWQgcG9z
aXRpb24pOworICAgIFJ1bGVEYXRhKENTU1N0eWxlUnVsZSosIENTU1NlbGVjdG9yKiwgdW5zaWdu
ZWQgcG9zaXRpb24sIGJvb2wgY2FuVXNlRmFzdENoZWNraW5nID0gdHJ1ZSk7CiAKICAgICB1bnNp
Z25lZCBwb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb247IH0KICAgICBDU1NTdHls
ZVJ1bGUqIHJ1bGUoKSBjb25zdCB7IHJldHVybiBtX3J1bGU7IH0KQEAgLTIyNSw4ICsyMjUsOCBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIGFkZFJ1bGVzRnJvbVNoZWV0KENTU1N0eWxlU2hlZXQqLCBj
b25zdCBNZWRpYVF1ZXJ5RXZhbHVhdG9yJiwgQ1NTU3R5bGVTZWxlY3RvciogPSAwLCBjb25zdCBF
bGVtZW50KiA9IDApOwogCi0gICAgdm9pZCBhZGRTdHlsZVJ1bGUoQ1NTU3R5bGVSdWxlKik7Ci0g
ICAgdm9pZCBhZGRSdWxlKENTU1N0eWxlUnVsZSosIENTU1NlbGVjdG9yKik7CisgICAgdm9pZCBh
ZGRTdHlsZVJ1bGUoQ1NTU3R5bGVSdWxlKiwgYm9vbCBjYW5Vc2VGYXN0Q2hlY2tpbmcgPSB0cnVl
KTsKKyAgICB2b2lkIGFkZFJ1bGUoQ1NTU3R5bGVSdWxlKiwgQ1NTU2VsZWN0b3IqLCBib29sIGNh
blVzZUZhc3RDaGVja2luZyA9IHRydWUpOwogICAgIHZvaWQgYWRkUGFnZVJ1bGUoQ1NTUGFnZVJ1
bGUqKTsKICAgICB2b2lkIGFkZFRvUnVsZVNldChBdG9taWNTdHJpbmdJbXBsKiBrZXksIEF0b21S
dWxlTWFwJiwgY29uc3QgUnVsZURhdGEmKTsKICAgICB2b2lkIGFkZFJlZ2lvblJ1bGUoV2ViS2l0
Q1NTUmVnaW9uUnVsZSopOwpAQCAtNDQzLDcgKzQ0Myw3IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rv
cjo6Y29sbGVjdEZlYXR1cmVzKCkKIH0KIAogI2lmIEVOQUJMRShTVFlMRV9TQ09QRUQpCi1FbGVt
ZW50KiBDU1NTdHlsZVNlbGVjdG9yOjpkZXRlcm1pbmVTY29waW5nRWxlbWVudChjb25zdCBDU1NT
dHlsZVNoZWV0KiBzaGVldCkKK2NvbnN0IEVsZW1lbnQqIENTU1N0eWxlU2VsZWN0b3I6OmRldGVy
bWluZVNjb3BpbmdFbGVtZW50KGNvbnN0IENTU1N0eWxlU2hlZXQqIHNoZWV0KQogewogICAgIEFT
U0VSVChzaGVldCk7CiAKQEAgLTc1NSw3ICs3NTUsNyBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6
OmFkZE1hdGNoZWREZWNsYXJhdGlvbihTdHlsZVByb3BlcnR5U2V0KiBzdHlsZURlY2xhcmF0aW9u
LAogICAgIG5ld0RlY2xhcmF0aW9uLmxpbmtNYXRjaFR5cGUgPSBsaW5rTWF0Y2hUeXBlOwogfQog
Ci12b2lkIENTU1N0eWxlU2VsZWN0b3I6OmNvbGxlY3RNYXRjaGluZ1J1bGVzKFJ1bGVTZXQqIHJ1
bGVzLCBpbnQmIGZpcnN0UnVsZUluZGV4LCBpbnQmIGxhc3RSdWxlSW5kZXgsIGJvb2wgaW5jbHVk
ZUVtcHR5UnVsZXMpCit2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmNvbGxlY3RNYXRjaGluZ1J1bGVz
KFJ1bGVTZXQqIHJ1bGVzLCBpbnQmIGZpcnN0UnVsZUluZGV4LCBpbnQmIGxhc3RSdWxlSW5kZXgs
IGNvbnN0IE1hdGNoT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBBU1NFUlQocnVsZXMpOwogICAg
IEFTU0VSVChtX2VsZW1lbnQpOwpAQCAtNzYzLDI4ICs3NjMsMjggQEAgdm9pZCBDU1NTdHlsZVNl
bGVjdG9yOjpjb2xsZWN0TWF0Y2hpbmdSdWxlcyhSdWxlU2V0KiBydWxlcywgaW50JiBmaXJzdFJ1
bGVJbmRleCwKICAgICAvLyBXZSBuZWVkIHRvIGNvbGxlY3QgdGhlIHJ1bGVzIGZvciBpZCwgY2xh
c3MsIHRhZywgYW5kIGV2ZXJ5dGhpbmcgZWxzZSBpbnRvIGEgYnVmZmVyIGFuZAogICAgIC8vIHRo
ZW4gc29ydCB0aGUgYnVmZmVyLgogICAgIGlmIChtX2VsZW1lbnQtPmhhc0lEKCkpCi0gICAgICAg
IGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdChydWxlcy0+aWRSdWxlcyhtX2VsZW1lbnQtPmlk
Rm9yU3R5bGVSZXNvbHV0aW9uKCkuaW1wbCgpKSwgZmlyc3RSdWxlSW5kZXgsIGxhc3RSdWxlSW5k
ZXgsIGluY2x1ZGVFbXB0eVJ1bGVzKTsKKyAgICAgICAgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JM
aXN0KHJ1bGVzLT5pZFJ1bGVzKG1fZWxlbWVudC0+aWRGb3JTdHlsZVJlc29sdXRpb24oKS5pbXBs
KCkpLCBmaXJzdFJ1bGVJbmRleCwgbGFzdFJ1bGVJbmRleCwgb3B0aW9ucyk7CiAgICAgaWYgKG1f
ZWxlbWVudC0+aGFzQ2xhc3MoKSkgewogICAgICAgICBBU1NFUlQobV9zdHlsZWRFbGVtZW50KTsK
ICAgICAgICAgY29uc3QgU3BhY2VTcGxpdFN0cmluZyYgY2xhc3NOYW1lcyA9IG1fc3R5bGVkRWxl
bWVudC0+Y2xhc3NOYW1lcygpOwogICAgICAgICBzaXplX3Qgc2l6ZSA9IGNsYXNzTmFtZXMuc2l6
ZSgpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkKLSAgICAgICAg
ICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdChydWxlcy0+Y2xhc3NSdWxlcyhjbGFzc05h
bWVzW2ldLmltcGwoKSksIGZpcnN0UnVsZUluZGV4LCBsYXN0UnVsZUluZGV4LCBpbmNsdWRlRW1w
dHlSdWxlcyk7CisgICAgICAgICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QocnVsZXMt
PmNsYXNzUnVsZXMoY2xhc3NOYW1lc1tpXS5pbXBsKCkpLCBmaXJzdFJ1bGVJbmRleCwgbGFzdFJ1
bGVJbmRleCwgb3B0aW9ucyk7CiAgICAgfQogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgcHNldWRv
SWQgPSBtX2VsZW1lbnQtPnNoYWRvd1BzZXVkb0lkKCk7CiAgICAgaWYgKCFwc2V1ZG9JZC5pc0Vt
cHR5KCkpIHsKICAgICAgICAgQVNTRVJUKG1fc3R5bGVkRWxlbWVudCk7Ci0gICAgICAgIGNvbGxl
Y3RNYXRjaGluZ1J1bGVzRm9yTGlzdChydWxlcy0+c2hhZG93UHNldWRvRWxlbWVudFJ1bGVzKHBz
ZXVkb0lkLmltcGwoKSksIGZpcnN0UnVsZUluZGV4LCBsYXN0UnVsZUluZGV4LCBpbmNsdWRlRW1w
dHlSdWxlcyk7CisgICAgICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdChydWxlcy0+c2hh
ZG93UHNldWRvRWxlbWVudFJ1bGVzKHBzZXVkb0lkLmltcGwoKSksIGZpcnN0UnVsZUluZGV4LCBs
YXN0UnVsZUluZGV4LCBvcHRpb25zKTsKICAgICB9CiAgICAgaWYgKG1fZWxlbWVudC0+aXNMaW5r
KCkpCi0gICAgICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdChydWxlcy0+bGlua1BzZXVk
b0NsYXNzUnVsZXMoKSwgZmlyc3RSdWxlSW5kZXgsIGxhc3RSdWxlSW5kZXgsIGluY2x1ZGVFbXB0
eVJ1bGVzKTsKKyAgICAgICAgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KHJ1bGVzLT5saW5r
UHNldWRvQ2xhc3NSdWxlcygpLCBmaXJzdFJ1bGVJbmRleCwgbGFzdFJ1bGVJbmRleCwgb3B0aW9u
cyk7CiAgICAgaWYgKG1fY2hlY2tlci5tYXRjaGVzRm9jdXNQc2V1ZG9DbGFzcyhtX2VsZW1lbnQp
KQotICAgICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QocnVsZXMtPmZvY3VzUHNldWRv
Q2xhc3NSdWxlcygpLCBmaXJzdFJ1bGVJbmRleCwgbGFzdFJ1bGVJbmRleCwgaW5jbHVkZUVtcHR5
UnVsZXMpOwotICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdChydWxlcy0+dGFnUnVsZXMo
bV9lbGVtZW50LT5sb2NhbE5hbWUoKS5pbXBsKCkpLCBmaXJzdFJ1bGVJbmRleCwgbGFzdFJ1bGVJ
bmRleCwgaW5jbHVkZUVtcHR5UnVsZXMpOwotICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlz
dChydWxlcy0+dW5pdmVyc2FsUnVsZXMoKSwgZmlyc3RSdWxlSW5kZXgsIGxhc3RSdWxlSW5kZXgs
IGluY2x1ZGVFbXB0eVJ1bGVzKTsKKyAgICAgICAgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0
KHJ1bGVzLT5mb2N1c1BzZXVkb0NsYXNzUnVsZXMoKSwgZmlyc3RSdWxlSW5kZXgsIGxhc3RSdWxl
SW5kZXgsIG9wdGlvbnMpOworICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdChydWxlcy0+
dGFnUnVsZXMobV9lbGVtZW50LT5sb2NhbE5hbWUoKS5pbXBsKCkpLCBmaXJzdFJ1bGVJbmRleCwg
bGFzdFJ1bGVJbmRleCwgb3B0aW9ucyk7CisgICAgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0
KHJ1bGVzLT51bml2ZXJzYWxSdWxlcygpLCBmaXJzdFJ1bGVJbmRleCwgbGFzdFJ1bGVJbmRleCwg
b3B0aW9ucyk7CiB9CiAKLXZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6Y29sbGVjdE1hdGNoaW5nUnVs
ZXNGb3JSZWdpb24oUnVsZVNldCogcnVsZXMsIGludCYgZmlyc3RSdWxlSW5kZXgsIGludCYgbGFz
dFJ1bGVJbmRleCwgYm9vbCBpbmNsdWRlRW1wdHlSdWxlcykKK3ZvaWQgQ1NTU3R5bGVTZWxlY3Rv
cjo6Y29sbGVjdE1hdGNoaW5nUnVsZXNGb3JSZWdpb24oUnVsZVNldCogcnVsZXMsIGludCYgZmly
c3RSdWxlSW5kZXgsIGludCYgbGFzdFJ1bGVJbmRleCwgY29uc3QgTWF0Y2hPcHRpb25zJiBvcHRp
b25zKQogewogICAgIGlmICghbV9yZWdpb25Gb3JTdHlsaW5nKQogICAgICAgICByZXR1cm47CkBA
IC03OTUsNyArNzk1LDcgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjpjb2xsZWN0TWF0Y2hpbmdS
dWxlc0ZvclJlZ2lvbihSdWxlU2V0KiBydWxlcywgaW50JiBmaXJzdFIKICAgICAgICAgaWYgKGNo
ZWNrUmVnaW9uU2VsZWN0b3IocmVnaW9uU2VsZWN0b3IsIHN0YXRpY19jYXN0PEVsZW1lbnQqPiht
X3JlZ2lvbkZvclN0eWxpbmctPm5vZGUoKSkpKSB7CiAgICAgICAgICAgICBSdWxlU2V0KiByZWdp
b25SdWxlcyA9IHJ1bGVzLT5tX3JlZ2lvblNlbGVjdG9yc0FuZFJ1bGVTZXRzLmF0KGkpLnJ1bGVT
ZXQuZ2V0KCk7CiAgICAgICAgICAgICBBU1NFUlQocmVnaW9uUnVsZXMpOwotICAgICAgICAgICAg
Y29sbGVjdE1hdGNoaW5nUnVsZXMocmVnaW9uUnVsZXMsIGZpcnN0UnVsZUluZGV4LCBsYXN0UnVs
ZUluZGV4LCBpbmNsdWRlRW1wdHlSdWxlcyk7CisgICAgICAgICAgICBjb2xsZWN0TWF0Y2hpbmdS
dWxlcyhyZWdpb25SdWxlcywgZmlyc3RSdWxlSW5kZXgsIGxhc3RSdWxlSW5kZXgsIG9wdGlvbnMp
OwogICAgICAgICB9CiAgICAgfQogfQpAQCAtODM0LDE5ICs4MzQsMjQgQEAgdm9pZCBDU1NTdHls
ZVNlbGVjdG9yOjptYXRjaFNjb3BlZEF1dGhvclJ1bGVzKGludCYgZmlyc3RSdWxlSW5kZXgsIGlu
dCYgbGFzdFJ1bGUKICAgICBpZiAobV9zY29wZWRBdXRob3JTdHlsZXMuaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm47CiAKKyAgICBNYXRjaE9wdGlvbnMgb3B0aW9ucyhpbmNsdWRlRW1wdHlSdWxl
cyk7CisKICAgICAvLyBNYXRjaCBzY29wZWQgYXV0aG9yIHJ1bGVzIGJ5IHRyYXZlcnNpbmcgdGhl
IHNjb3BlZCBlbGVtZW50IHN0YWNrIChyZWJ1aWxkIGl0IGlmIGl0IGdvdCBpbmNvbnNpc3RlbnQp
LgogICAgIGNvbnN0IEVsZW1lbnQqIHBhcmVudCA9IG1fZWxlbWVudC0+cGFyZW50T3JIb3N0RWxl
bWVudCgpOwogICAgIGlmICghc2NvcGluZ0VsZW1lbnRTdGFja0lzQ29uc2lzdGVudChwYXJlbnQp
KQogICAgICAgICBzZXR1cFNjb3BpbmdFbGVtZW50U3RhY2socGFyZW50KTsKICAgICBmb3IgKHNp
emVfdCBpID0gbV9zY29waW5nRWxlbWVudFN0YWNrLnNpemUoKTsgaTsgLS1pKSB7Ci0gICAgICAg
IGNvbGxlY3RNYXRjaGluZ1J1bGVzKG1fc2NvcGluZ0VsZW1lbnRTdGFja1tpIC0gMV0ubV9ydWxl
U2V0LCBmaXJzdFJ1bGVJbmRleCwgbGFzdFJ1bGVJbmRleCwgaW5jbHVkZUVtcHR5UnVsZXMpOwot
ICAgICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlc0ZvclJlZ2lvbihtX3Njb3BpbmdFbGVtZW50U3Rh
Y2tbaSAtIDFdLm1fcnVsZVNldCwgZmlyc3RSdWxlSW5kZXgsIGxhc3RSdWxlSW5kZXgsIGluY2x1
ZGVFbXB0eVJ1bGVzKTsKKyAgICAgICAgY29uc3QgU2NvcGVTdGFja0ZyYW1lJiBmcmFtZSA9IG1f
c2NvcGluZ0VsZW1lbnRTdGFja1tpIC0gMV07CisgICAgICAgIG9wdGlvbnMuc2NvcGUgPSBmcmFt
ZS5tX2VsZW1lbnQ7CisgICAgICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzKGZyYW1lLm1fcnVsZVNl
dCwgZmlyc3RSdWxlSW5kZXgsIGxhc3RSdWxlSW5kZXgsIG9wdGlvbnMpOworICAgICAgICBjb2xs
ZWN0TWF0Y2hpbmdSdWxlc0ZvclJlZ2lvbihmcmFtZS5tX3J1bGVTZXQsIGZpcnN0UnVsZUluZGV4
LCBsYXN0UnVsZUluZGV4LCBvcHRpb25zKTsKICAgICB9CiAgICAgLy8gQWxzbyBpbmNsdWRlIHRo
ZSBjdXJyZW50IGVsZW1lbnQuCiAgICAgUnVsZVNldCogcnVsZVNldCA9IHNjb3BlZFJ1bGVTZXRG
b3JFbGVtZW50KG1fZWxlbWVudCk7CiAgICAgaWYgKHJ1bGVTZXQpIHsKLSAgICAgICAgY29sbGVj
dE1hdGNoaW5nUnVsZXMocnVsZVNldCwgZmlyc3RSdWxlSW5kZXgsIGxhc3RSdWxlSW5kZXgsIGlu
Y2x1ZGVFbXB0eVJ1bGVzKTsKLSAgICAgICAgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JSZWdpb24o
cnVsZVNldCwgZmlyc3RSdWxlSW5kZXgsIGxhc3RSdWxlSW5kZXgsIGluY2x1ZGVFbXB0eVJ1bGVz
KTsKKyAgICAgICAgb3B0aW9ucy5zY29wZSA9IG1fZWxlbWVudDsKKyAgICAgICAgY29sbGVjdE1h
dGNoaW5nUnVsZXMocnVsZVNldCwgZmlyc3RSdWxlSW5kZXgsIGxhc3RSdWxlSW5kZXgsIG9wdGlv
bnMpOworICAgICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlc0ZvclJlZ2lvbihydWxlU2V0LCBmaXJz
dFJ1bGVJbmRleCwgbGFzdFJ1bGVJbmRleCwgb3B0aW9ucyk7CiAgICAgfQogI2Vsc2UKICAgICBV
TlVTRURfUEFSQU0oZmlyc3RSdWxlSW5kZXgpOwpAQCAtODYzLDggKzg2OCw5IEBAIHZvaWQgQ1NT
U3R5bGVTZWxlY3Rvcjo6bWF0Y2hBdXRob3JSdWxlcyhpbnQmIGZpcnN0UnVsZUluZGV4LCBpbnQm
IGxhc3RSdWxlSW5kZXgsCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIE1hdGNoIGdsb2JhbCBh
dXRob3IgcnVsZXMuCi0gICAgY29sbGVjdE1hdGNoaW5nUnVsZXMobV9hdXRob3JTdHlsZS5nZXQo
KSwgZmlyc3RSdWxlSW5kZXgsIGxhc3RSdWxlSW5kZXgsIGluY2x1ZGVFbXB0eVJ1bGVzKTsKLSAg
ICBjb2xsZWN0TWF0Y2hpbmdSdWxlc0ZvclJlZ2lvbihtX2F1dGhvclN0eWxlLmdldCgpLCBmaXJz
dFJ1bGVJbmRleCwgbGFzdFJ1bGVJbmRleCwgaW5jbHVkZUVtcHR5UnVsZXMpOworICAgIE1hdGNo
T3B0aW9ucyBvcHRpb25zKGluY2x1ZGVFbXB0eVJ1bGVzKTsKKyAgICBjb2xsZWN0TWF0Y2hpbmdS
dWxlcyhtX2F1dGhvclN0eWxlLmdldCgpLCBmaXJzdFJ1bGVJbmRleCwgbGFzdFJ1bGVJbmRleCwg
b3B0aW9ucyk7CisgICAgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JSZWdpb24obV9hdXRob3JTdHls
ZS5nZXQoKSwgZmlyc3RSdWxlSW5kZXgsIGxhc3RSdWxlSW5kZXgsIG9wdGlvbnMpOwogCiAgICAg
bWF0Y2hTY29wZWRBdXRob3JSdWxlcyhmaXJzdFJ1bGVJbmRleCwgbGFzdFJ1bGVJbmRleCwgaW5j
bHVkZUVtcHR5UnVsZXMpOwogCkBAIC05MTMsMTIgKzkxOSw3IEBAIGlubGluZSBib29sIE1hdGNo
aW5nVUFSdWxlc1Njb3BlOjppc01hdGNoaW5nVUFSdWxlcygpCiAKIGJvb2wgTWF0Y2hpbmdVQVJ1
bGVzU2NvcGU6Om1fbWF0Y2hpbmdVQVJ1bGVzID0gZmFsc2U7CiAKLWlubGluZSBzdGF0aWMgYm9v
bCBtYXRjaGVzSW5UcmVlU2NvcGUoVHJlZVNjb3BlKiB0cmVlU2NvcGUsIGJvb2wgcnVsZVJlYWNo
ZXNJbnRvU2hhZG93RE9NKQotewotICAgIHJldHVybiBNYXRjaGluZ1VBUnVsZXNTY29wZTo6aXNN
YXRjaGluZ1VBUnVsZXMoKSB8fCB0cmVlU2NvcGUtPmFwcGx5QXV0aG9yU2hlZXRzKCkgfHwgcnVs
ZVJlYWNoZXNJbnRvU2hhZG93RE9NOwotfQotCi12b2lkIENTU1N0eWxlU2VsZWN0b3I6OmNvbGxl
Y3RNYXRjaGluZ1J1bGVzRm9yTGlzdChjb25zdCBWZWN0b3I8UnVsZURhdGE+KiBydWxlcywgaW50
JiBmaXJzdFJ1bGVJbmRleCwgaW50JiBsYXN0UnVsZUluZGV4LCBib29sIGluY2x1ZGVFbXB0eVJ1
bGVzKQordm9pZCBDU1NTdHlsZVNlbGVjdG9yOjpjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3Qo
Y29uc3QgVmVjdG9yPFJ1bGVEYXRhPiogcnVsZXMsIGludCYgZmlyc3RSdWxlSW5kZXgsIGludCYg
bGFzdFJ1bGVJbmRleCwgY29uc3QgTWF0Y2hPcHRpb25zJiBvcHRpb25zKQogewogICAgIGlmICgh
cnVsZXMpCiAgICAgICAgIHJldHVybjsKQEAgLTkzNCwxNCArOTM1LDMwIEBAIHZvaWQgQ1NTU3R5
bGVTZWxlY3Rvcjo6Y29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KGNvbnN0IFZlY3RvcjxSdWxl
RGF0YT4qIHJ1bGVzCiAKICAgICAgICAgQ1NTU3R5bGVSdWxlKiBydWxlID0gcnVsZURhdGEucnVs
ZSgpOwogICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llID0gSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsTWF0Y2hSdWxlKGRvY3VtZW50KCksIHJ1bGUpOwor
I2lmIEVOQUJMRShTVFlMRV9TQ09QRUQpCisgICAgICAgIGlmIChjaGVja1NlbGVjdG9yKHJ1bGVE
YXRhLCBvcHRpb25zLnNjb3BlKSkgeworI2Vsc2UKICAgICAgICAgaWYgKGNoZWNrU2VsZWN0b3Io
cnVsZURhdGEpKSB7Ci0gICAgICAgICAgICBpZiAoIW1hdGNoZXNJblRyZWVTY29wZShtX2VsZW1l
bnQtPnRyZWVTY29wZSgpLCBtX2NoZWNrZXIuaGFzVW5rbm93blBzZXVkb0VsZW1lbnRzKCkpKSB7
CisjZW5kaWYKKyAgICAgICAgICAgIC8vIENoZWNrIHdoZXRoZXIgdGhlIHJ1bGUgaXMgYXBwbGlj
YWJsZSBpbiB0aGUgY3VycmVudCB0cmVlIHNjb3BlLiBDcml0ZXJpYSBmb3IgdGhpczoKKyAgICAg
ICAgICAgIC8vIGEpIGl0J3MgYSBVQSBydWxlCisgICAgICAgICAgICAvLyBiKSB0aGUgdHJlZSBz
Y29wZSBhbGxvd3MgYXV0aG9yIHJ1bGVzCisgICAgICAgICAgICAvLyBjKSB0aGUgcnVsZXMgY29t
ZXMgZnJvbSBhIHNjb3BlZCBzdHlsZSBzaGVldCB3aXRoaW4gdGhlIHNhbWUgdHJlZSBzY29wZQor
ICAgICAgICAgICAgLy8gZCkgdGhlIHJ1bGUgY29udGFpbnMgc2hhZG93LUlEIHBzZXVkbyBlbGVt
ZW50cworICAgICAgICAgICAgVHJlZVNjb3BlKiB0cmVlU2NvcGUgPSBtX2VsZW1lbnQtPnRyZWVT
Y29wZSgpOworICAgICAgICAgICAgaWYgKCFNYXRjaGluZ1VBUnVsZXNTY29wZTo6aXNNYXRjaGlu
Z1VBUnVsZXMoKQorICAgICAgICAgICAgICAgICYmICF0cmVlU2NvcGUtPmFwcGx5QXV0aG9yU2hl
ZXRzKCkKKyNpZiBFTkFCTEUoU1RZTEVfU0NPUEVEKQorICAgICAgICAgICAgICAgICYmICghb3B0
aW9ucy5zY29wZSB8fCBvcHRpb25zLnNjb3BlLT50cmVlU2NvcGUoKSAhPSB0cmVlU2NvcGUpCisj
ZW5kaWYKKyAgICAgICAgICAgICAgICAmJiAhbV9jaGVja2VyLmhhc1Vua25vd25Qc2V1ZG9FbGVt
ZW50cygpKSB7CisKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZE1hdGNoUnVsZShjb29raWUsIGZhbHNlKTsKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIC8vIElmIHRoZSBydWxlIGhhcyBubyBwcm9wZXJ0aWVz
IHRvIGFwcGx5LCB0aGVuIGlnbm9yZSBpdCBpbiB0aGUgbm9uLWRlYnVnIG1vZGUuCiAgICAgICAg
ICAgICBTdHlsZVByb3BlcnR5U2V0KiBkZWNsID0gcnVsZS0+ZGVjbGFyYXRpb24oKTsKLSAgICAg
ICAgICAgIGlmICghZGVjbCB8fCAoZGVjbC0+aXNFbXB0eSgpICYmICFpbmNsdWRlRW1wdHlSdWxl
cykpIHsKKyAgICAgICAgICAgIGlmICghZGVjbCB8fCAoZGVjbC0+aXNFbXB0eSgpICYmICFvcHRp
b25zLmluY2x1ZGVFbXB0eVJ1bGVzKSkgewogICAgICAgICAgICAgICAgIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkTWF0Y2hSdWxlKGNvb2tpZSwgZmFsc2UpOwogICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICAgICAgfQpAQCAtMjA2OSw3ICsyMDg2LDcgQEAgUGFzc1JlZlB0
cjxDU1NSdWxlTGlzdD4gQ1NTU3R5bGVTZWxlY3Rvcjo6cHNldWRvU3R5bGVSdWxlc0ZvckVsZW1l
bnQoRWxlbWVudCogZSwKICAgICByZXR1cm4gbV9ydWxlTGlzdC5yZWxlYXNlKCk7CiB9CiAKLWlu
bGluZSBib29sIENTU1N0eWxlU2VsZWN0b3I6OmNoZWNrU2VsZWN0b3IoY29uc3QgUnVsZURhdGEm
IHJ1bGVEYXRhKQoraW5saW5lIGJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6Y2hlY2tTZWxlY3Rvcihj
b25zdCBSdWxlRGF0YSYgcnVsZURhdGEsIGNvbnN0IEVsZW1lbnQqIHNjb3BlKQogewogICAgIG1f
ZHluYW1pY1BzZXVkbyA9IE5PUFNFVURPOwogICAgIG1fY2hlY2tlci5jbGVhckhhc1Vua25vd25Q
c2V1ZG9FbGVtZW50cygpOwpAQCAtMjA5Miw3ICsyMTA5LDEwIEBAIGlubGluZSBib29sIENTU1N0
eWxlU2VsZWN0b3I6OmNoZWNrU2VsZWN0b3IoY29uc3QgUnVsZURhdGEmIHJ1bGVEYXRhKQogICAg
IH0KIAogICAgIC8vIFNsb3cgcGF0aC4KLSAgICBTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yQ2hl
Y2tpbmdDb250ZXh0IGNvbnRleHQocnVsZURhdGEuc2VsZWN0b3IoKSwgbV9lbGVtZW50LCBTZWxl
Y3RvckNoZWNrZXI6OlZpc2l0ZWRNYXRjaEVuYWJsZWQsIHN0eWxlKCksIG1fcGFyZW50Tm9kZSA/
IG1fcGFyZW50Tm9kZS0+cmVuZGVyU3R5bGUoKSA6IDApOworICAgIFNlbGVjdG9yQ2hlY2tlcjo6
U2VsZWN0b3JDaGVja2luZ0NvbnRleHQgY29udGV4dChydWxlRGF0YS5zZWxlY3RvcigpLCBtX2Vs
ZW1lbnQsIFNlbGVjdG9yQ2hlY2tlcjo6VmlzaXRlZE1hdGNoRW5hYmxlZCk7CisgICAgY29udGV4
dC5lbGVtZW50U3R5bGUgPSBzdHlsZSgpOworICAgIGNvbnRleHQuZWxlbWVudFBhcmVudFN0eWxl
ID0gbV9wYXJlbnROb2RlID8gbV9wYXJlbnROb2RlLT5yZW5kZXJTdHlsZSgpIDogMDsKKyAgICBj
b250ZXh0LnNjb3BlID0gc2NvcGU7CiAgICAgU2VsZWN0b3JDaGVja2VyOjpTZWxlY3Rvck1hdGNo
IG1hdGNoID0gbV9jaGVja2VyLmNoZWNrU2VsZWN0b3IoY29udGV4dCwgbV9keW5hbWljUHNldWRv
KTsKICAgICBpZiAobWF0Y2ggIT0gU2VsZWN0b3JDaGVja2VyOjpTZWxlY3Rvck1hdGNoZXMpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIxOTksMTIgKzIyMTksMTIgQEAgc3RhdGljIGlubGlu
ZSBib29sIGNvbnRhaW5zVW5jb21tb25BdHRyaWJ1dGVTZWxlY3Rvcihjb25zdCBDU1NTZWxlY3Rv
ciogc2VsZWN0b3IKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVJ1bGVEYXRhOjpSdWxlRGF0YShD
U1NTdHlsZVJ1bGUqIHJ1bGUsIENTU1NlbGVjdG9yKiBzZWxlY3RvciwgdW5zaWduZWQgcG9zaXRp
b24pCitSdWxlRGF0YTo6UnVsZURhdGEoQ1NTU3R5bGVSdWxlKiBydWxlLCBDU1NTZWxlY3Rvciog
c2VsZWN0b3IsIHVuc2lnbmVkIHBvc2l0aW9uLCBib29sIGNhblVzZUZhc3RDaGVja2luZykKICAg
ICA6IG1fcnVsZShydWxlKQogICAgICwgbV9zZWxlY3RvcihzZWxlY3RvcikKICAgICAsIG1fc3Bl
Y2lmaWNpdHkoc2VsZWN0b3ItPnNwZWNpZmljaXR5KCkpCiAgICAgLCBtX3Bvc2l0aW9uKHBvc2l0
aW9uKQotICAgICwgbV9oYXNGYXN0Q2hlY2thYmxlU2VsZWN0b3IoU2VsZWN0b3JDaGVja2VyOjpp
c0Zhc3RDaGVja2FibGVTZWxlY3RvcihzZWxlY3RvcikpCisgICAgLCBtX2hhc0Zhc3RDaGVja2Fi
bGVTZWxlY3RvcihjYW5Vc2VGYXN0Q2hlY2tpbmcgJiYgU2VsZWN0b3JDaGVja2VyOjppc0Zhc3RD
aGVja2FibGVTZWxlY3RvcihzZWxlY3RvcikpCiAgICAgLCBtX2hhc011bHRpcGFydFNlbGVjdG9y
KCEhc2VsZWN0b3ItPnRhZ0hpc3RvcnkoKSkKICAgICAsIG1faGFzUmlnaHRtb3N0U2VsZWN0b3JN
YXRjaGluZ0hUTUxCYXNlZE9uUnVsZUhhc2goaXNTZWxlY3Rvck1hdGNoaW5nSFRNTEJhc2VkT25S
dWxlSGFzaChzZWxlY3RvcikpCiAgICAgLCBtX2NvbnRhaW5zVW5jb21tb25BdHRyaWJ1dGVTZWxl
Y3RvcihXZWJDb3JlOjpjb250YWluc1VuY29tbW9uQXR0cmlidXRlU2VsZWN0b3Ioc2VsZWN0b3Ip
KQpAQCAtMjI3Myw5ICsyMjkzLDkgQEAgdm9pZCBSdWxlU2V0OjphZGRUb1J1bGVTZXQoQXRvbWlj
U3RyaW5nSW1wbCoga2V5LCBBdG9tUnVsZU1hcCYgbWFwLCBjb25zdCBSdWxlRGEKICAgICBydWxl
cy0+YXBwZW5kKHJ1bGVEYXRhKTsKIH0KIAotdm9pZCBSdWxlU2V0OjphZGRSdWxlKENTU1N0eWxl
UnVsZSogcnVsZSwgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yKQordm9pZCBSdWxlU2V0OjphZGRSdWxl
KENTU1N0eWxlUnVsZSogcnVsZSwgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yLCBib29sIGNhblVzZUZh
c3RDaGVja2luZykKIHsKLSAgICBSdWxlRGF0YSBydWxlRGF0YShydWxlLCBzZWxlY3RvciwgbV9y
dWxlQ291bnQrKyk7CisgICAgUnVsZURhdGEgcnVsZURhdGEocnVsZSwgc2VsZWN0b3IsIG1fcnVs
ZUNvdW50KyssIGNhblVzZUZhc3RDaGVja2luZyk7CiAgICAgY29sbGVjdEZlYXR1cmVzRnJvbVJ1
bGVEYXRhKG1fZmVhdHVyZXMsIHJ1bGVEYXRhKTsKIAogICAgIGlmIChzZWxlY3Rvci0+bV9tYXRj
aCA9PSBDU1NTZWxlY3Rvcjo6SWQpIHsKQEAgLTIzNTIsNyArMjM3Miw3IEBAIHZvaWQgUnVsZVNl
dDo6YWRkUnVsZXNGcm9tU2hlZXQoQ1NTU3R5bGVTaGVldCogc2hlZXQsIGNvbnN0IE1lZGlhUXVl
cnlFdmFsdWF0b3ImCiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW47IGkrKykgewogICAgICAg
ICBDU1NSdWxlKiBydWxlID0gc2hlZXQtPml0ZW0oaSk7CiAgICAgICAgIGlmIChydWxlLT5pc1N0
eWxlUnVsZSgpKQotICAgICAgICAgICAgYWRkU3R5bGVSdWxlKHN0YXRpY19jYXN0PENTU1N0eWxl
UnVsZSo+KHJ1bGUpKTsKKyAgICAgICAgICAgIGFkZFN0eWxlUnVsZShzdGF0aWNfY2FzdDxDU1NT
dHlsZVJ1bGUqPihydWxlKSwgIXNjb3BlKTsKICAgICAgICAgZWxzZSBpZiAocnVsZS0+aXNQYWdl
UnVsZSgpKQogICAgICAgICAgICAgYWRkUGFnZVJ1bGUoc3RhdGljX2Nhc3Q8Q1NTUGFnZVJ1bGUq
PihydWxlKSk7CiAgICAgICAgIGVsc2UgaWYgKHJ1bGUtPmlzSW1wb3J0UnVsZSgpKSB7CkBAIC0y
MzY5LDcgKzIzODksNyBAQCB2b2lkIFJ1bGVTZXQ6OmFkZFJ1bGVzRnJvbVNoZWV0KENTU1N0eWxl
U2hlZXQqIHNoZWV0LCBjb25zdCBNZWRpYVF1ZXJ5RXZhbHVhdG9yJgogICAgICAgICAgICAgICAg
IGZvciAodW5zaWduZWQgaiA9IDA7IGogPCBydWxlcy0+bGVuZ3RoKCk7IGorKykgewogICAgICAg
ICAgICAgICAgICAgICBDU1NSdWxlICpjaGlsZEl0ZW0gPSBydWxlcy0+aXRlbShqKTsKICAgICAg
ICAgICAgICAgICAgICAgaWYgKGNoaWxkSXRlbS0+aXNTdHlsZVJ1bGUoKSkKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGFkZFN0eWxlUnVsZShzdGF0aWNfY2FzdDxDU1NTdHlsZVJ1bGUqPihjaGls
ZEl0ZW0pKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFkZFN0eWxlUnVsZShzdGF0aWNfY2Fz
dDxDU1NTdHlsZVJ1bGUqPihjaGlsZEl0ZW0pLCAhc2NvcGUpOwogICAgICAgICAgICAgICAgICAg
ICBlbHNlIGlmIChjaGlsZEl0ZW0tPmlzUGFnZVJ1bGUoKSkKICAgICAgICAgICAgICAgICAgICAg
ICAgIGFkZFBhZ2VSdWxlKHN0YXRpY19jYXN0PENTU1BhZ2VSdWxlKj4oY2hpbGRJdGVtKSk7CiAg
ICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNoaWxkSXRlbS0+aXNGb250RmFjZVJ1bGUoKSAm
JiBzdHlsZVNlbGVjdG9yKSB7CkBAIC0yNDEzLDEwICsyNDMzLDEwIEBAIHZvaWQgUnVsZVNldDo6
YWRkUnVsZXNGcm9tU2hlZXQoQ1NTU3R5bGVTaGVldCogc2hlZXQsIGNvbnN0IE1lZGlhUXVlcnlF
dmFsdWF0b3ImCiAgICAgICAgIHNocmlua1RvRml0KCk7CiB9CiAKLXZvaWQgUnVsZVNldDo6YWRk
U3R5bGVSdWxlKENTU1N0eWxlUnVsZSogcnVsZSkKK3ZvaWQgUnVsZVNldDo6YWRkU3R5bGVSdWxl
KENTU1N0eWxlUnVsZSogcnVsZSwgYm9vbCBjYW5Vc2VGYXN0Q2hlY2tpbmcpCiB7CiAgICAgZm9y
IChDU1NTZWxlY3RvciogcyA9IHJ1bGUtPnNlbGVjdG9yTGlzdCgpLmZpcnN0KCk7IHM7IHMgPSBD
U1NTZWxlY3Rvckxpc3Q6Om5leHQocykpCi0gICAgICAgIGFkZFJ1bGUocnVsZSwgcyk7CisgICAg
ICAgIGFkZFJ1bGUocnVsZSwgcywgY2FuVXNlRmFzdENoZWNraW5nKTsKIH0KIAogc3RhdGljIGlu
bGluZSB2b2lkIHNocmlua01hcFZlY3RvcnNUb0ZpdChSdWxlU2V0OjpBdG9tUnVsZU1hcCYgbWFw
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuaCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmgKaW5kZXggODQ0MjM1YWU2M2JjM2Zk
NjhiNmJlNDZlZjBiNTk1Nzk5OWUyMWVmNi4uNzVmYjA1M2RjYThlZmYxMjA1ZmRhOTNhNWUxMzYx
OTM2NzVhNWIyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0
b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5oCkBAIC0xMDYs
MTAgKzEwNiw2IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgIGJvb2wgc3RyaWN0UGFy
c2luZywgYm9vbCBtYXRjaEF1dGhvckFuZFVzZXJTdHlsZXMpOwogICAgIH5DU1NTdHlsZVNlbGVj
dG9yKCk7CiAKLSNpZiBFTkFCTEUoU1RZTEVfU0NPUEVEKQotICAgIHN0YXRpYyBFbGVtZW50KiBk
ZXRlcm1pbmVTY29waW5nRWxlbWVudChjb25zdCBDU1NTdHlsZVNoZWV0Kik7Ci0jZW5kaWYKLQog
ICAgIC8vIFVzaW5nIHRoZXNlIGR1cmluZyB0cmVlIHdhbGsgd2lsbCBhbGxvdyBzdHlsZSBzZWxl
Y3RvciB0byBvcHRpbWl6ZSBjaGlsZCBhbmQgZGVzY2VuZGFudCBzZWxlY3RvciBsb29rdXBzLgog
ICAgIHZvaWQgcHVzaFBhcmVudChFbGVtZW50KiBwYXJlbnQpOwogICAgIHZvaWQgcG9wUGFyZW50
KEVsZW1lbnQqIHBhcmVudCk7CkBAIC0yNzYsMTkgKzI3MiwyOSBAQCBwcml2YXRlOgogICAgICAg
ICBNYXRjaFJhbmdlcyByYW5nZXM7CiAgICAgICAgIGJvb2wgaXNDYWNoZWFibGU7CiAgICAgfTsK
KyAgICBzdHJ1Y3QgTWF0Y2hPcHRpb25zIHsKKyNpZiBFTkFCTEUoU1RZTEVfU0NPUEVEKQorICAg
ICAgICBNYXRjaE9wdGlvbnMoYm9vbCBpbmNsdWRlRW1wdHlSdWxlcywgY29uc3QgRWxlbWVudCog
c2NvcGUgPSAwKSA6IHNjb3BlKHNjb3BlKSwgaW5jbHVkZUVtcHR5UnVsZXMoaW5jbHVkZUVtcHR5
UnVsZXMpIHsgfQorICAgICAgICBjb25zdCBFbGVtZW50KiBzY29wZTsKKyAgICAgICAgYm9vbCBp
bmNsdWRlRW1wdHlSdWxlczsKKyNlbHNlCisgICAgICAgIE1hdGNoT3B0aW9ucyhib29sIGluY2x1
ZGVFbXB0eVJ1bGVzKSA6IGluY2x1ZGVFbXB0eVJ1bGVzKGluY2x1ZGVFbXB0eVJ1bGVzKSB7IH0K
KyAgICAgICAgYm9vbCBpbmNsdWRlRW1wdHlSdWxlczsKKyNlbmRpZgorICAgIH07CiAgICAgdm9p
ZCBtYXRjaEFsbFJ1bGVzKE1hdGNoUmVzdWx0Jik7CiAgICAgdm9pZCBtYXRjaFVBUnVsZXMoTWF0
Y2hSZXN1bHQmKTsKICAgICB2b2lkIG1hdGNoUnVsZXMoUnVsZVNldCosIGludCYgZmlyc3RSdWxl
SW5kZXgsIGludCYgbGFzdFJ1bGVJbmRleCwgYm9vbCBpbmNsdWRlRW1wdHlSdWxlcyk7CiAgICAg
dm9pZCBtYXRjaEF1dGhvclJ1bGVzKGludCYgZmlyc3RSdWxlSW5kZXgsIGludCYgbGFzdFJ1bGVJ
bmRleCwgYm9vbCBpbmNsdWRlRW1wdHlSdWxlcyk7CiAgICAgdm9pZCBtYXRjaFNjb3BlZEF1dGhv
clJ1bGVzKGludCYgZmlyc3RSdWxlSW5kZXgsIGludCYgbGFzdFJ1bGVJbmRleCwgYm9vbCBpbmNs
dWRlRW1wdHlSdWxlcyk7Ci0gICAgdm9pZCBjb2xsZWN0TWF0Y2hpbmdSdWxlcyhSdWxlU2V0Kiwg
aW50JiBmaXJzdFJ1bGVJbmRleCwgaW50JiBsYXN0UnVsZUluZGV4LCBib29sIGluY2x1ZGVFbXB0
eVJ1bGVzKTsKLSAgICB2b2lkIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yUmVnaW9uKFJ1bGVTZXQq
LCBpbnQmIGZpcnN0UnVsZUluZGV4LCBpbnQmIGxhc3RSdWxlSW5kZXgsIGJvb2wgaW5jbHVkZUVt
cHR5UnVsZXMpOwotICAgIHZvaWQgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KGNvbnN0IFZl
Y3RvcjxSdWxlRGF0YT4qLCBpbnQmIGZpcnN0UnVsZUluZGV4LCBpbnQmIGxhc3RSdWxlSW5kZXgs
IGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMpOworICAgIHZvaWQgY29sbGVjdE1hdGNoaW5nUnVsZXMo
UnVsZVNldCosIGludCYgZmlyc3RSdWxlSW5kZXgsIGludCYgbGFzdFJ1bGVJbmRleCwgY29uc3Qg
TWF0Y2hPcHRpb25zJik7CisgICAgdm9pZCBjb2xsZWN0TWF0Y2hpbmdSdWxlc0ZvclJlZ2lvbihS
dWxlU2V0KiwgaW50JiBmaXJzdFJ1bGVJbmRleCwgaW50JiBsYXN0UnVsZUluZGV4LCBjb25zdCBN
YXRjaE9wdGlvbnMmKTsKKyAgICB2b2lkIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdChjb25z
dCBWZWN0b3I8UnVsZURhdGE+KiwgaW50JiBmaXJzdFJ1bGVJbmRleCwgaW50JiBsYXN0UnVsZUlu
ZGV4LCBjb25zdCBNYXRjaE9wdGlvbnMmKTsKICAgICBib29sIGZhc3RSZWplY3RTZWxlY3Rvcihj
b25zdCBSdWxlRGF0YSYpIGNvbnN0OwogICAgIHZvaWQgc29ydE1hdGNoZWRSdWxlcygpOwogICAg
IHZvaWQgc29ydEFuZFRyYW5zZmVyTWF0Y2hlZFJ1bGVzKCk7CiAKLSAgICBib29sIGNoZWNrU2Vs
ZWN0b3IoY29uc3QgUnVsZURhdGEmKTsKKyAgICBib29sIGNoZWNrU2VsZWN0b3IoY29uc3QgUnVs
ZURhdGEmLCBjb25zdCBFbGVtZW50KiBzY29wZSA9IDApOwogICAgIGJvb2wgY2hlY2tSZWdpb25T
ZWxlY3RvcihDU1NTZWxlY3RvciogcmVnaW9uU2VsZWN0b3IsIEVsZW1lbnQqIHJlZ2lvbkVsZW1l
bnQpOwogICAgIHZvaWQgYXBwbHlNYXRjaGVkRGVjbGFyYXRpb25zKGNvbnN0IE1hdGNoUmVzdWx0
Jik7CiAgICAgdGVtcGxhdGUgPGJvb2wgZmlyc3RQYXNzPgpAQCAtNDQ2LDYgKzQ1Miw4IEBAIHBy
aXZhdGU6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShTVFlMRV9TQ09QRUQpCisgICAgc3RhdGljIGNv
bnN0IEVsZW1lbnQqIGRldGVybWluZVNjb3BpbmdFbGVtZW50KGNvbnN0IENTU1N0eWxlU2hlZXQq
KTsKKwogICAgIHR5cGVkZWYgSGFzaE1hcDxjb25zdCBFbGVtZW50KiwgT3duUHRyPFJ1bGVTZXQ+
ID4gU2NvcGVkUnVsZVNldE1hcDsKIAogICAgIFJ1bGVTZXQqIHNjb3BlZFJ1bGVTZXRGb3JFbGVt
ZW50KGNvbnN0IEVsZW1lbnQqKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TZWxlY3RvckNoZWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tl
ci5jcHAKaW5kZXggZDQ2MzZiNzEwMzU5OGEyNGRlMWQwN2IwMzk0OWRlZTkxOGYwMTVmZS4uODlh
Y2FiYmYyYWI1NTc5OGQ4MDJmMDA5NTgxODJmZjBiNjA2NjgzOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L1NlbGVjdG9yQ2hlY2tlci5jcHAKQEAgLTQ3OSwxOCArNDc5LDIzIEBAIFNlbGVjdG9yQ2hlY2tl
cjo6U2VsZWN0b3JNYXRjaCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrU2VsZWN0b3IoY29uc3QgU2Vs
ZWN0b3JDaGVjCiAKICAgICBzd2l0Y2ggKHJlbGF0aW9uKSB7CiAgICAgY2FzZSBDU1NTZWxlY3Rv
cjo6RGVzY2VuZGFudDoKLSAgICAgICAgbmV4dENvbnRleHQuZWxlbWVudCA9IGNvbnRleHQuZWxl
bWVudC0+cGFyZW50RWxlbWVudCgpOwogICAgICAgICBuZXh0Q29udGV4dC5pc1N1YlNlbGVjdG9y
ID0gZmFsc2U7CiAgICAgICAgIG5leHRDb250ZXh0LmVsZW1lbnRTdHlsZSA9IDA7CiAgICAgICAg
IG5leHRDb250ZXh0LmVsZW1lbnRQYXJlbnRTdHlsZSA9IDA7Ci0gICAgICAgIGZvciAoOyBuZXh0
Q29udGV4dC5lbGVtZW50OyBuZXh0Q29udGV4dC5lbGVtZW50ID0gbmV4dENvbnRleHQuZWxlbWVu
dC0+cGFyZW50RWxlbWVudCgpKSB7CisgICAgICAgIGZvciAoOzspIHsKKyAgICAgICAgICAgIGlm
IChuZXh0Q29udGV4dC5lbGVtZW50ID09IG5leHRDb250ZXh0LnNjb3BlKQorICAgICAgICAgICAg
ICAgIHJldHVybiBTZWxlY3RvckZhaWxzQ29tcGxldGVseTsKKyAgICAgICAgICAgIG5leHRDb250
ZXh0LmVsZW1lbnQgPSBuZXh0Q29udGV4dC5lbGVtZW50LT5wYXJlbnRFbGVtZW50KCk7CisgICAg
ICAgICAgICBpZiAoIW5leHRDb250ZXh0LmVsZW1lbnQpCisgICAgICAgICAgICAgICAgcmV0dXJu
IFNlbGVjdG9yRmFpbHNDb21wbGV0ZWx5OwogICAgICAgICAgICAgU2VsZWN0b3JNYXRjaCBtYXRj
aCA9IGNoZWNrU2VsZWN0b3IobmV4dENvbnRleHQsIGR5bmFtaWNQc2V1ZG8pOwogICAgICAgICAg
ICAgaWYgKG1hdGNoID09IFNlbGVjdG9yTWF0Y2hlcyB8fCBtYXRjaCA9PSBTZWxlY3RvckZhaWxz
Q29tcGxldGVseSkKICAgICAgICAgICAgICAgICByZXR1cm4gbWF0Y2g7CiAgICAgICAgIH0KLSAg
ICAgICAgcmV0dXJuIFNlbGVjdG9yRmFpbHNDb21wbGV0ZWx5OwogCiAgICAgY2FzZSBDU1NTZWxl
Y3Rvcjo6Q2hpbGQ6CisgICAgICAgIGlmIChuZXh0Q29udGV4dC5lbGVtZW50ID09IG5leHRDb250
ZXh0LnNjb3BlKQorICAgICAgICAgICAgcmV0dXJuIFNlbGVjdG9yRmFpbHNDb21wbGV0ZWx5Owog
ICAgICAgICBuZXh0Q29udGV4dC5lbGVtZW50ID0gY29udGV4dC5lbGVtZW50LT5wYXJlbnRFbGVt
ZW50KCk7CiAgICAgICAgIGlmICghbmV4dENvbnRleHQuZWxlbWVudCkKICAgICAgICAgICAgIHJl
dHVybiBTZWxlY3RvckZhaWxzQ29tcGxldGVseTsKQEAgLTUwMCw2ICs1MDUsOCBAQCBTZWxlY3Rv
ckNoZWNrZXI6OlNlbGVjdG9yTWF0Y2ggU2VsZWN0b3JDaGVja2VyOjpjaGVja1NlbGVjdG9yKGNv
bnN0IFNlbGVjdG9yQ2hlYwogICAgICAgICByZXR1cm4gY2hlY2tTZWxlY3RvcihuZXh0Q29udGV4
dCwgZHluYW1pY1BzZXVkbyk7CiAKICAgICBjYXNlIENTU1NlbGVjdG9yOjpEaXJlY3RBZGphY2Vu
dDoKKyAgICAgICAgaWYgKG5leHRDb250ZXh0LmVsZW1lbnQgPT0gbmV4dENvbnRleHQuc2NvcGUp
CisgICAgICAgICAgICByZXR1cm4gU2VsZWN0b3JGYWlsc0NvbXBsZXRlbHk7CiAgICAgICAgIGlm
ICghbV9pc0NvbGxlY3RpbmdSdWxlc09ubHkgJiYgY29udGV4dC5lbGVtZW50LT5wYXJlbnRFbGVt
ZW50KCkpIHsKICAgICAgICAgICAgIFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSA9IGNvbnRleHQu
ZWxlbWVudFN0eWxlID8gY29udGV4dC5lbGVtZW50UGFyZW50U3R5bGUgOiBjb250ZXh0LmVsZW1l
bnQtPnBhcmVudE5vZGUoKS0+cmVuZGVyU3R5bGUoKTsKICAgICAgICAgICAgIGlmIChwYXJlbnRT
dHlsZSkKQEAgLTUxNCw2ICs1MjEsOCBAQCBTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yTWF0Y2gg
U2VsZWN0b3JDaGVja2VyOjpjaGVja1NlbGVjdG9yKGNvbnN0IFNlbGVjdG9yQ2hlYwogICAgICAg
ICByZXR1cm4gY2hlY2tTZWxlY3RvcihuZXh0Q29udGV4dCwgZHluYW1pY1BzZXVkbyk7CiAKICAg
ICBjYXNlIENTU1NlbGVjdG9yOjpJbmRpcmVjdEFkamFjZW50OgorICAgICAgICBpZiAobmV4dENv
bnRleHQuZWxlbWVudCA9PSBuZXh0Q29udGV4dC5zY29wZSkKKyAgICAgICAgICAgIHJldHVybiBT
ZWxlY3RvckZhaWxzQ29tcGxldGVseTsKICAgICAgICAgaWYgKCFtX2lzQ29sbGVjdGluZ1J1bGVz
T25seSAmJiBjb250ZXh0LmVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKSkgewogICAgICAgICAgICAg
UmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlID0gY29udGV4dC5lbGVtZW50U3R5bGUgPyBjb250ZXh0
LmVsZW1lbnRQYXJlbnRTdHlsZSA6IGNvbnRleHQuZWxlbWVudC0+cGFyZW50Tm9kZSgpLT5yZW5k
ZXJTdHlsZSgpOwogICAgICAgICAgICAgaWYgKHBhcmVudFN0eWxlKQpAQCAtNTQyLDYgKzU1MSw5
IEBAIFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JNYXRjaCBTZWxlY3RvckNoZWNrZXI6OmNoZWNr
U2VsZWN0b3IoY29uc3QgU2VsZWN0b3JDaGVjCiAKICAgICBjYXNlIENTU1NlbGVjdG9yOjpTaGFk
b3dEZXNjZW5kYW50OgogICAgICAgICB7CisgICAgICAgICAgICAvLyBJZiB3ZSdyZSBpbiB0aGUg
c2FtZSB0cmVlLXNjb3BlIGFzIHRoZSBzY29waW5nIGVsZW1lbnQsIHRoZW4gZm9sbG93aW5nIGEg
c2hhZG93IGRlc2NlbmRhbnQgY29tYmluYXRvciB3b3VsZCBlc2NhcGUgdGhhdCBhbmQgdGh1cyB0
aGUgc2NvcGUuCisgICAgICAgICAgICBpZiAoY29udGV4dC5zY29wZSAmJiBjb250ZXh0LnNjb3Bl
LT50cmVlU2NvcGUoKSA9PSBjb250ZXh0LmVsZW1lbnQtPnRyZWVTY29wZSgpKQorICAgICAgICAg
ICAgICAgIHJldHVybiBTZWxlY3RvckZhaWxzQ29tcGxldGVseTsKICAgICAgICAgICAgIE5vZGUq
IHNoYWRvd0hvc3ROb2RlID0gY29udGV4dC5lbGVtZW50LT5zaGFkb3dBbmNlc3Rvck5vZGUoKTsK
ICAgICAgICAgICAgIGlmIChzaGFkb3dIb3N0Tm9kZSA9PSBjb250ZXh0LmVsZW1lbnQgfHwgIXNo
YWRvd0hvc3ROb2RlLT5pc0VsZW1lbnROb2RlKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIFNl
bGVjdG9yRmFpbHNDb21wbGV0ZWx5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1Nl
bGVjdG9yQ2hlY2tlci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5oCmlu
ZGV4IDA2YjYxOWQ4N2RjODNlM2EwNDEzNjRjMjFkMDkxZTVhYTU0ZjFlOTkuLjdlODA4MDhkZDNi
NmJkOGJmNGFmNzU0NDYyZGNiMzlhMWJhZTgxMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TZWxlY3RvckNoZWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JD
aGVja2VyLmgKQEAgLTU0LDE3ICs1NCwxOSBAQCBwdWJsaWM6CiAKICAgICBzdHJ1Y3QgU2VsZWN0
b3JDaGVja2luZ0NvbnRleHQgewogICAgICAgICAvLyBJbml0aWFsIHNlbGVjdG9yIGNvbnN0cnVj
dG9yCi0gICAgICAgIFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0KENTU1NlbGVjdG9yKiBzZWxlY3Rv
ciwgRWxlbWVudCogZWxlbWVudCwgVmlzaXRlZE1hdGNoVHlwZSB2aXNpdGVkTWF0Y2hUeXBlLCBS
ZW5kZXJTdHlsZSogZWxlbWVudFN0eWxlID0gMCwgUmVuZGVyU3R5bGUqIGVsZW1lbnRQYXJlbnRT
dHlsZSA9IDApCisgICAgICAgIFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0KENTU1NlbGVjdG9yKiBz
ZWxlY3RvciwgRWxlbWVudCogZWxlbWVudCwgVmlzaXRlZE1hdGNoVHlwZSB2aXNpdGVkTWF0Y2hU
eXBlKQogICAgICAgICAgICAgOiBzZWxlY3RvcihzZWxlY3RvcikKICAgICAgICAgICAgICwgZWxl
bWVudChlbGVtZW50KQorICAgICAgICAgICAgLCBzY29wZSgwKQogICAgICAgICAgICAgLCB2aXNp
dGVkTWF0Y2hUeXBlKHZpc2l0ZWRNYXRjaFR5cGUpCi0gICAgICAgICAgICAsIGVsZW1lbnRTdHls
ZShlbGVtZW50U3R5bGUpCi0gICAgICAgICAgICAsIGVsZW1lbnRQYXJlbnRTdHlsZShlbGVtZW50
UGFyZW50U3R5bGUpCisgICAgICAgICAgICAsIGVsZW1lbnRTdHlsZSgwKQorICAgICAgICAgICAg
LCBlbGVtZW50UGFyZW50U3R5bGUoMCkKICAgICAgICAgICAgICwgaXNTdWJTZWxlY3RvcihmYWxz
ZSkKICAgICAgICAgeyB9CiAKICAgICAgICAgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yOwogICAgICAg
ICBFbGVtZW50KiBlbGVtZW50OworICAgICAgICBjb25zdCBFbGVtZW50KiBzY29wZTsKICAgICAg
ICAgVmlzaXRlZE1hdGNoVHlwZSB2aXNpdGVkTWF0Y2hUeXBlOwogICAgICAgICBSZW5kZXJTdHls
ZSogZWxlbWVudFN0eWxlOwogICAgICAgICBSZW5kZXJTdHlsZSogZWxlbWVudFBhcmVudFN0eWxl
OwpAQCAtMTQzLDcgKzE0NSw3IEBAIHByaXZhdGU6CiAgICAgICAgIFZlY3Rvcjx1bnNpZ25lZCwg
ND4gaWRlbnRpZmllckhhc2hlczsKICAgICB9OwogICAgIFZlY3RvcjxQYXJlbnRTdGFja0ZyYW1l
PiBtX3BhcmVudFN0YWNrOwotICAgIAorCiAgICAgLy8gV2l0aCAxMDAgdW5pcXVlIHN0cmluZ3Mg
aW4gdGhlIGZpbHRlciwgMl4xMiBzbG90IHRhYmxlIGhhcyBmYWxzZSBwb3NpdGl2ZSByYXRlIG9m
IH4wLjIlLgogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBibG9vbUZpbHRlcktleUJpdHMgPSAx
MjsKICAgICBPd25QdHI8Qmxvb21GaWx0ZXI8Ymxvb21GaWx0ZXJLZXlCaXRzPiA+IG1fYW5jZXN0
b3JJZGVudGlmaWVyRmlsdGVyOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGQzODE2YTRmNzYxYmU0MWU4NWMyYWQ1YmI1ZTJl
MmE2ZmYxMmY1OWEuLjZjMzJjNjhiMTFkNDAwOGU3N2RmZTgzYjMyMDE5YTQ2ZWRlZjhhM2EgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMi0wMi0xMCAgUm9sYW5kIFN0ZWluZXIgIDxyb2xhbmRz
dGVpbmVyQGNocm9taXVtLm9yZz4KKworICAgICAgICA8c3R5bGUgc2NvcGVkPjogSW1wbGVtZW50
IHNjb3BlZCBzZWxlY3RvciBtYXRjaGluZyBpbiB0aGUgc2xvdyBwYXRoCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NzUyOAorCisgICAgICAgIEV4dGVu
ZGVkIGV4aXN0aW5nIDxzdHlsZSBzY29wZWQ+IHRlc3RzIHRvIGFsc28gdmVyaWZ5IHRoYXQgc2Vs
ZWN0b3IgbWF0Y2hpbmcgZG9lc24ndCBleGNlZWQgdGhlIHNjb3BpbmcgZWxlbWVudC4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvY3NzL3N0
eWxlLXNjb3BlZC9zdHlsZS1zY29wZWQtYmFzaWMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZh
c3QvY3NzL3N0eWxlLXNjb3BlZC9zdHlsZS1zY29wZWQtYmFzaWMuaHRtbDoKKyAgICAgICAgKiBm
YXN0L2Nzcy9zdHlsZS1zY29wZWQvc3R5bGUtc2NvcGVkLXJlbW92ZS1zY29wZWQtZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIGZhc3QvY3NzL3N0eWxlLXNjb3BlZC9zdHlsZS1zY29wZWQtcmVtb3Zl
LXNjb3BlZC5odG1sOgorICAgICAgICAqIGZhc3QvY3NzL3N0eWxlLXNjb3BlZC9zdHlsZS1zY29w
ZWQtc2V0LXNjb3BlZC1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9jc3Mvc3R5bGUtc2Nv
cGVkL3N0eWxlLXNjb3BlZC1zZXQtc2NvcGVkLmh0bWw6CisKIDIwMTItMDItMDkgIFphbiBEb2Jl
cnNlayAgPHphbmRvYmVyc2VrQGdtYWlsLmNvbT4KIAogICAgICAgICBbR3RrXSBodHRwL3Rlc3Rz
L3dvcmtlcnMvdGVybWluYXRlLWR1cmluZy1zeW5jLW9wZXJhdGlvbi5odG1sIGZhaWxzIGxvY2Fs
bHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlLXNjb3BlZC9zdHlsZS1z
Y29wZWQtYmFzaWMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGUtc2Nv
cGVkL3N0eWxlLXNjb3BlZC1iYXNpYy1leHBlY3RlZC50eHQKaW5kZXggZTkxMmZkYzBmODNlYzE0
OTNhNDJjMjU5YjNmMTgyYmIwZjU2YzcxNS4uYmVmZmQ3NmM4NDRhOWE4Mjg5MzJjOWUzYTUwY2I4
MzIxMDdmZmMzMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGUtc2NvcGVk
L3N0eWxlLXNjb3BlZC1iYXNpYy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9j
c3Mvc3R5bGUtc2NvcGVkL3N0eWxlLXNjb3BlZC1iYXNpYy1leHBlY3RlZC50eHQKQEAgLTExLDYg
KzExLDcgQEAgVGV4dAogVGV4dAogVGV4dAogVGV4dAorVGV4dAogCiBUZXh0CiBUZXh0CkBAIC0y
OCw2ICsyOSw3IEBAIEUxOiByZ2IoMCwgMCwgMCkKIFMyOiByZ2IoMjU1LCAwLCAwKQogUDI6IHJn
YigwLCAxMjgsIDApCiBSMjogcmdiKDAsIDAsIDI1NSkKK0UyOiByZ2IoMjU1LCAwLCAwKQogCiBT
MzogcmdiKDAsIDAsIDApCiBQMzogcmdiKDAsIDAsIDApCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2Nzcy9zdHlsZS1zY29wZWQvc3R5bGUtc2NvcGVkLWJhc2ljLmh0bWwgYi9MYXlvdXRU
ZXN0cy9mYXN0L2Nzcy9zdHlsZS1zY29wZWQvc3R5bGUtc2NvcGVkLWJhc2ljLmh0bWwKaW5kZXgg
ZmU1YjQzMWE5MTZhMzljNjlmYmRmODY2ODY0YWU4ZGZmM2Q2OGNlZS4uYTZkZjBhMThiMzAxOTdk
OTQzZDMyOWI1YzBkYzUxODc3OTJhNWJlNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9j
c3Mvc3R5bGUtc2NvcGVkL3N0eWxlLXNjb3BlZC1iYXNpYy5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvY3NzL3N0eWxlLXNjb3BlZC9zdHlsZS1zY29wZWQtYmFzaWMuaHRtbApAQCAtMjgsNiAr
MjgsNyBAQAogICAgICAgICAgICAgdGVzdCgnUzInKTsKICAgICAgICAgICAgIHRlc3QoJ1AyJyk7
CiAgICAgICAgICAgICB0ZXN0KCdSMicpOworICAgICAgICAgICAgdGVzdCgnRTInKTsKICAgICAg
ICAgICAgIGxvZygnJyk7CiAgICAgICAgICAgICB0ZXN0KCdTMycpOwogICAgICAgICAgICAgdGVz
dCgnUDMnKTsKQEAgLTUxLDI5ICs1MiwzNSBAQAogICAgIDxkaXYgY2xhc3M9ImZvbyI+CiAgICAg
ICAgIDxzcGFuIGlkPSJTMSI+VGV4dDwvc3Bhbj4KICAgICAgICAgPHAgaWQ9IlAxIj5UZXh0PC9w
PgotICAgICAgICA8cHJlIGlkID0gIlIxIiBjbGFzcz0iYmFyIj5UZXh0PC9wcmU+CisgICAgICAg
IDxwcmUgaWQ9IlIxIiBjbGFzcz0iYmFyIj5UZXh0PC9wcmU+CiAgICAgICAgIDxwcmUgaWQ9IkUx
IiBjbGFzcz0iYmF6Ij5UZXh0PC9wcmU+CiAgICAgPC9kaXY+Ci0gICAgPGRpdj4KKyAgICA8ZGl2
IGlkPSJmb28iPgorICAgICAgICA8ZGl2IGlkPSJzaWIiPjwvZGl2PgogICAgICAgICA8ZGl2Pgog
ICAgICAgICAgICAgPHN0eWxlIHR5cGU9InRleHQvY3NzIiBzY29wZWQ+CiAgICAgICAgICAgICAg
ICAgZGl2IHsgY29sb3I6IHJlZDsgfQogICAgICAgICAgICAgICAgIHAgeyBjb2xvcjogZ3JlZW47
IH0KICAgICAgICAgICAgICAgICBkaXYgLmJhciB7IGNvbG9yOiBibHVlOyB9CisgICAgICAgICAg
ICAgICAgI2ZvbyAuYmF6IHsgY29sb3I6IHJnYigxMCwgMTAsIDEwKTsgfSAvKiBzaG91bGQgTk9U
IGFwcGx5ISAqLworICAgICAgICAgICAgICAgIHNpYiArICogeyBjb2xvcjogcmdiKDIwLCAyMCwg
MjApOyB9IC8qIHNob3VsZCBOT1QgYXBwbHkhICovCisgICAgICAgICAgICAgICAgc2liIH4gKiB7
IGNvbG9yOiByZ2IoMzAsIDMwLCAzMCk7IH0gLyogc2hvdWxkIE5PVCBhcHBseSEgKi8KKyAgICAg
ICAgICAgICAgICBkaXYgZGl2IHsgY29sb3I6IHJnYig0MCwgNDAsIDQwKTsgfSAvKiBzaG91bGQg
Tk9UIGFwcGx5ISAqLyAKICAgICAgICAgICAgIDwvc3R5bGU+CiAgICAgICAgICAgICA8c3BhbiBp
ZD0iUzIiPlRleHQ8L3NwYW4+CiAgICAgICAgICAgICA8cCBpZD0iUDIiPlRleHQ8L3A+CiAgICAg
ICAgICAgICA8cHJlIGlkPSJSMiIgY2xhc3M9ImJhciI+VGV4dDwvcHJlPgorICAgICAgICAgICAg
PHByZSBpZD0iRTIiIGNsYXNzPSJiYXoiPlRleHQ8L3ByZT4KICAgICAgICAgPC9kaXY+CiAgICAg
ICAgIDxzcGFuIGlkPSJTMyI+VGV4dDwvc3Bhbj4KICAgICAgICAgPHAgaWQ9IlAzIj5UZXh0PC9w
PgotICAgICAgICA8cHJlIGlkID0gIlIzIiBjbGFzcz0iYmFyIj5UZXh0PC9wcmU+CisgICAgICAg
IDxwcmUgaWQ9IlIzIiBjbGFzcz0iYmFyIj5UZXh0PC9wcmU+CiAgICAgICAgIDxwcmUgaWQ9IkUz
IiBjbGFzcz0iYmF6Ij5UZXh0PC9wcmU+CiAgICAgPC9kaXY+CiAgICAgPGRpdiBjbGFzcz0iZm9v
Ij4KICAgICAgICAgPHNwYW4gaWQ9IlM0Ij5UZXh0PC9zcGFuPgogICAgICAgICA8cCBpZD0iUDQi
PlRleHQ8L3A+Ci0gICAgICAgIDxwcmUgaWQgPSAiUjQiIGNsYXNzPSJiYXIiPlRleHQ8L3ByZT4K
KyAgICAgICAgPHByZSBpZD0iUjQiIGNsYXNzPSJiYXIiPlRleHQ8L3ByZT4KICAgICAgICAgPHBy
ZSBpZD0iRTQiIGNsYXNzPSJiYXoiPlRleHQ8L3ByZT4KICAgICA8L2Rpdj4KICAgICA8cHJlIGlk
PSJjb25zb2xlIj48L3ByZT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxl
LXNjb3BlZC9zdHlsZS1zY29wZWQtcmVtb3ZlLXNjb3BlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9mYXN0L2Nzcy9zdHlsZS1zY29wZWQvc3R5bGUtc2NvcGVkLXJlbW92ZS1zY29wZWQtZXhw
ZWN0ZWQudHh0CmluZGV4IDNhMjA1ODdkZjVhZmZmNjJkYzI3ZjYyYWFlYzQ1MGIzMzc2NWNhYzgu
LmY3NjMwMjExMWNiOWFlN2FkZjMzMTc3ZTUzNGVlZmQzNjVkMDgwZDYgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlLXNjb3BlZC9zdHlsZS1zY29wZWQtcmVtb3ZlLXNjb3Bl
ZC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGUtc2NvcGVkL3N0
eWxlLXNjb3BlZC1yZW1vdmUtc2NvcGVkLWV4cGVjdGVkLnR4dApAQCAtNCwyNCArNCwzOSBAQCBU
ZXh0CiBUZXh0CiAKIFRleHQKKworICAgIAorVGV4dAorVGV4dAorCiBUZXh0CiAKKyAgICAKK1Rl
eHQKIFRleHQKKwogVGV4dAogCisgICAgCiAtLS0gT1JJR0lOQUwgLS0tCiBTMTogcmdiKDAsIDAs
IDApCiBQMTogcmdiKDAsIDAsIDApCitSMTogcmdiKDAsIDAsIDApCiBTMjogcmdiKDI1NSwgMCwg
MCkKIFAyOiByZ2IoMCwgMTI4LCAwKQorUjI6IHJnYigyNTUsIDAsIDApCiBTMzogcmdiKDAsIDAs
IDApCiBQMzogcmdiKDAsIDAsIDApCitSMzogcmdiKDAsIDAsIDApCiAtLS0gQUZURVIgVU4tU0VU
VElORyBAU0NPUEVEIC0tLQogUzE6IHJnYigyNTUsIDAsIDApCiBQMTogcmdiKDAsIDEyOCwgMCkK
K1IxOiByZ2IoMCwgMCwgMjU1KQogUzI6IHJnYigyNTUsIDAsIDApCiBQMjogcmdiKDAsIDEyOCwg
MCkKK1IyOiByZ2IoMCwgMCwgMjU1KQogUzM6IHJnYigyNTUsIDAsIDApCiBQMzogcmdiKDAsIDEy
OCwgMCkKK1IzOiByZ2IoMCwgMCwgMjU1KQogLS0tIEZJTklTSEVEIC0tLQogCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZS1zY29wZWQvc3R5bGUtc2NvcGVkLXJlbW92ZS1z
Y29wZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlLXNjb3BlZC9zdHlsZS1zY29w
ZWQtcmVtb3ZlLXNjb3BlZC5odG1sCmluZGV4IGVhYWYzNzc0Y2FiMmZhNzRmZDcwYzYxMWFlMDMy
YmExMTg0M2Q3ZWQuLjM5ZDVmNzRmZWJjZWEwNjdjYTBiYjIzYTVkYTUwMjAwYzJiZDkxZmQgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlLXNjb3BlZC9zdHlsZS1zY29wZWQt
cmVtb3ZlLXNjb3BlZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlLXNjb3Bl
ZC9zdHlsZS1zY29wZWQtcmVtb3ZlLXNjb3BlZC5odG1sCkBAIC0xNywxMCArMTcsMTMgQEAKICAg
ICAgICAgewogICAgICAgICAgICAgdGVzdCgnUzEnKTsKICAgICAgICAgICAgIHRlc3QoJ1AxJyk7
CisgICAgICAgICAgICB0ZXN0KCdSMScpOwogICAgICAgICAgICAgdGVzdCgnUzInKTsKICAgICAg
ICAgICAgIHRlc3QoJ1AyJyk7CisgICAgICAgICAgICB0ZXN0KCdSMicpOwogICAgICAgICAgICAg
dGVzdCgnUzMnKTsKICAgICAgICAgICAgIHRlc3QoJ1AzJyk7CisgICAgICAgICAgICB0ZXN0KCdS
MycpOwogICAgICAgICB9CiAKICAgICAgICAgZnVuY3Rpb24gcnVuVGVzdHMoKQpAQCAtNTIsMTgg
KzU1LDIyIEBACiAgICAgPGRpdj4KICAgICAgICAgPHNwYW4gaWQ9IlMxIj5UZXh0PC9zcGFuPgog
ICAgICAgICA8cCBpZD0iUDEiPlRleHQ8L3A+CisgICAgICAgIDxwcmUgaWQ9IlIxIj5UZXh0PC9w
PgogICAgIDwvZGl2PgogICAgIDxkaXY+CiAgICAgICAgIDxzdHlsZSBpZD0iU1RZTEUiIHR5cGU9
InRleHQvY3NzIiBzY29wZWQ+CiAgICAgICAgICAgICBkaXYgeyBjb2xvcjogcmVkOyB9CiAgICAg
ICAgICAgICBwIHsgY29sb3I6IGdyZWVuOyB9CisgICAgICAgICAgICBwIH4gZGl2IHByZSB7IGNv
bG9yOiBibHVlOyB9IC8qIHNob3VsZCBOT1QgYXBwbHkgd2hpbGUgc2NvcGVkISAqLwogICAgICAg
ICA8L3N0eWxlPgogICAgICAgICA8c3BhbiBpZD0iUzIiPlRleHQ8L3NwYW4+CiAgICAgICAgIDxw
IGlkPSJQMiI+VGV4dDwvcD4KKyAgICAgICAgPHByZSBpZD0iUjIiPlRleHQ8L3A+CiAgICAgPC9k
aXY+CiAgICAgPGRpdj4KICAgICAgICAgPHNwYW4gaWQ9IlMzIj5UZXh0PC9zcGFuPgogICAgICAg
ICA8cCBpZD0iUDMiPlRleHQ8L3A+CisgICAgICAgIDxwcmUgaWQ9IlIzIj5UZXh0PC9wPgogICAg
IDwvZGl2PgogICAgIDxwcmUgaWQ9ImNvbnNvbGUiPjwvcHJlPgogPC9ib2R5PgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGUtc2NvcGVkL3N0eWxlLXNjb3BlZC1zZXQtc2Nv
cGVkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlLXNjb3BlZC9zdHls
ZS1zY29wZWQtc2V0LXNjb3BlZC1leHBlY3RlZC50eHQKaW5kZXggZmEwYzc5NjNjOTdjNDc4MDFl
MDg0OTY3NTExMzcyMjJjNDY2NWQxYy4uOTBhODdhYTA2ZGY5MmU3ZWUwZmVmZjY0ZGY1N2IyNGIz
ZDc5OWQ3NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGUtc2NvcGVkL3N0
eWxlLXNjb3BlZC1zZXQtc2NvcGVkLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2Nzcy9zdHlsZS1zY29wZWQvc3R5bGUtc2NvcGVkLXNldC1zY29wZWQtZXhwZWN0ZWQudHh0CkBA
IC00LDI0ICs0LDM5IEBAIFRleHQKIFRleHQKIAogVGV4dAorCisgICAgCitUZXh0CitUZXh0CisK
IFRleHQKIAorICAgIAorVGV4dAogVGV4dAorCiBUZXh0CiAKKyAgICAKIC0tLSBPUklHSU5BTCAt
LS0KIFMxOiByZ2IoMjU1LCAwLCAwKQogUDE6IHJnYigwLCAxMjgsIDApCitSMTogcmdiKDAsIDAs
IDI1NSkKIFMyOiByZ2IoMjU1LCAwLCAwKQogUDI6IHJnYigwLCAxMjgsIDApCitSMjogcmdiKDAs
IDAsIDI1NSkKIFMzOiByZ2IoMjU1LCAwLCAwKQogUDM6IHJnYigwLCAxMjgsIDApCitSMzogcmdi
KDAsIDAsIDI1NSkKIC0tLSBBRlRFUiBTRVRUSU5HIEBTQ09QRUQgLS0tCiBTMTogcmdiKDAsIDAs
IDApCiBQMTogcmdiKDAsIDAsIDApCitSMTogcmdiKDAsIDAsIDApCiBTMjogcmdiKDI1NSwgMCwg
MCkKIFAyOiByZ2IoMCwgMTI4LCAwKQorUjI6IHJnYigyNTUsIDAsIDApCiBTMzogcmdiKDAsIDAs
IDApCiBQMzogcmdiKDAsIDAsIDApCitSMzogcmdiKDAsIDAsIDApCiAtLS0gRklOSVNIRUQgLS0t
CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlLXNjb3BlZC9zdHlsZS1z
Y29wZWQtc2V0LXNjb3BlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGUtc2NvcGVk
L3N0eWxlLXNjb3BlZC1zZXQtc2NvcGVkLmh0bWwKaW5kZXggOTkwM2JkNDFlMjk5ZDAzNTAxY2Vm
MTA1NDBmZTE5NTAwYzRlODJlZS4uODBhYTVjYjBlNzc5OWRmNWFmYjY4M2RlMTBhNWYzY2JjNjc3
OTE5NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGUtc2NvcGVkL3N0eWxl
LXNjb3BlZC1zZXQtc2NvcGVkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGUt
c2NvcGVkL3N0eWxlLXNjb3BlZC1zZXQtc2NvcGVkLmh0bWwKQEAgLTE3LDEwICsxNywxMyBAQAog
ICAgICAgICB7CiAgICAgICAgICAgICB0ZXN0KCdTMScpOwogICAgICAgICAgICAgdGVzdCgnUDEn
KTsKKyAgICAgICAgICAgIHRlc3QoJ1IxJyk7CiAgICAgICAgICAgICB0ZXN0KCdTMicpOwogICAg
ICAgICAgICAgdGVzdCgnUDInKTsKKyAgICAgICAgICAgIHRlc3QoJ1IyJyk7CiAgICAgICAgICAg
ICB0ZXN0KCdTMycpOwogICAgICAgICAgICAgdGVzdCgnUDMnKTsKKyAgICAgICAgICAgIHRlc3Qo
J1IzJyk7CiAgICAgICAgIH0KIAogICAgICAgICBmdW5jdGlvbiBydW5UZXN0cygpCkBAIC01Miwx
OCArNTUsMjIgQEAKICAgICA8ZGl2PgogICAgICAgICA8c3BhbiBpZD0iUzEiPlRleHQ8L3NwYW4+
CiAgICAgICAgIDxwIGlkPSJQMSI+VGV4dDwvcD4KKyAgICAgICAgPHByZSBpZD0iUjEiPlRleHQ8
L3A+CiAgICAgPC9kaXY+CiAgICAgPGRpdj4KICAgICAgICAgPHN0eWxlIGlkPSJTVFlMRSIgdHlw
ZT0idGV4dC9jc3MiPgogICAgICAgICAgICAgZGl2IHsgY29sb3I6IHJlZDsgfQogICAgICAgICAg
ICAgcCB7IGNvbG9yOiBncmVlbjsgfQorICAgICAgICAgICAgcCB+IGRpdiBwcmUgeyBjb2xvcjog
Ymx1ZTsgfSAvKiBzaG91bGQgTk9UIGFwcGx5IHdoaWxlIHNjb3BlZCEgKi8KICAgICAgICAgPC9z
dHlsZT4KICAgICAgICAgPHNwYW4gaWQ9IlMyIj5UZXh0PC9zcGFuPgogICAgICAgICA8cCBpZD0i
UDIiPlRleHQ8L3A+CisgICAgICAgIDxwcmUgaWQ9IlIyIj5UZXh0PC9wPgogICAgIDwvZGl2Pgog
ICAgIDxkaXY+CiAgICAgICAgIDxzcGFuIGlkPSJTMyI+VGV4dDwvc3Bhbj4KICAgICAgICAgPHAg
aWQ9IlAzIj5UZXh0PC9wPgorICAgICAgICA8cHJlIGlkPSJSMyI+VGV4dDwvcD4KICAgICA8L2Rp
dj4KICAgICA8cHJlIGlkPSJjb25zb2xlIj48L3ByZT4KIDwvYm9keT4K
</data>
<flag name="review"
          id="128303"
          type_id="1"
          status="+"
          setter="koivisto"
    />
    <flag name="commit-queue"
          id="128304"
          type_id="3"
          status="-"
          setter="koivisto"
    />
          </attachment>
      

    </bug>

</bugzilla>