<?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>139230</bug_id>
          
          <creation_ts>2014-12-03 11:36:29 -0800</creation_ts>
          <short_desc>The parser should allocate all pieces of the AST</short_desc>
          <delta_ts>2014-12-03 13:54:22 -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>New Bugs</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="Geoffrey Garen">ggaren</reporter>
          <assigned_to name="Geoffrey Garen">ggaren</assigned_to>
          <cc>barraclough</cc>
    
    <cc>oliver</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1052232</commentid>
    <comment_count>0</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-12-03 11:36:29 -0800</bug_when>
    <thetext>The parser should allocate all pieces of the AST</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1052235</commentid>
    <comment_count>1</comment_count>
      <attachid>242509</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-12-03 11:47:57 -0800</bug_when>
    <thetext>Created attachment 242509
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1052247</commentid>
    <comment_count>2</comment_count>
      <attachid>242509</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2014-12-03 12:04:42 -0800</bug_when>
    <thetext>Comment on attachment 242509
Patch

r=me.  There&apos;s so much cruft left over from the old bison parser :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1052250</commentid>
    <comment_count>3</comment_count>
      <attachid>242509</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-12-03 12:19:30 -0800</bug_when>
    <thetext>Comment on attachment 242509
Patch

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

&gt; Source/JavaScriptCore/parser/ASTBuilder.h:322
&gt; +    PropertyNode* createProperty(VM*, double propertyName, ExpressionNode* node, PropertyNode::Type type, bool)

is there a reason this unused VM* arg can&apos;t be removed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1052251</commentid>
    <comment_count>4</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-12-03 12:29:25 -0800</bug_when>
    <thetext>&gt; &gt; Source/JavaScriptCore/parser/ASTBuilder.h:322
&gt; &gt; +    PropertyNode* createProperty(VM*, double propertyName, ExpressionNode* node, PropertyNode::Type type, bool)
&gt; 
&gt; is there a reason this unused VM* arg can&apos;t be removed?

Though ASTBuilder uses its m_vm data member instead of the VM* argument, SyntaxChecker does not have an m_vm data member, and does use the VM* argument.

This is an oddity that could use cleaning up, but I didn&apos;t clean it up in this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1052290</commentid>
    <comment_count>5</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-12-03 13:54:22 -0800</bug_when>
    <thetext>Committed r176754: &lt;http://trac.webkit.org/changeset/176754&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>242509</attachid>
            <date>2014-12-03 11:47:57 -0800</date>
            <delta_ts>2014-12-03 12:04:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-139230-20141203114830.patch</filename>
            <type>text/plain</type>
            <size>24237</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTc2NzMwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDcwIEBA
CisyMDE0LTEyLTAzICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgVGhlIHBhcnNlciBzaG91bGQgYWxsb2NhdGUgYWxsIHBpZWNlcyBvZiB0aGUgQVNUCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzkyMzAKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGlzIGEgc3Rl
cCB0b3dhcmQgYSAxNCUgcGFyc2luZyBzcGVlZHVwLgorCisgICAgICAgIFByZXZpb3VzbHksIGFs
bG9jYXRpb24gd2FzIHNwbGl0IGJldHdlZW4gdGhlIHBhcnNlciBhbmQgY2VydGFpbiBub2RlCisg
ICAgICAgIGNvbnN0cnVjdG9yIGZ1bmN0aW9ucy4gVGhpcyBtYWRlIGZvciBzb21lIGR1cGxpY2F0
ZWQgY29kZSBhbmQgY2lyY3VsYXIKKyAgICAgICAgZGVwZW5kZW5jaWVzLgorCisgICAgICAgICog
cGFyc2VyL0FTVEJ1aWxkZXIuaDoKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlR2V0
dGVyT3JTZXR0ZXJQcm9wZXJ0eSk6IE5vIG5lZWQgdG8gcGFzcyB0aHJvdWdoCisgICAgICAgIHRo
ZSBWTSwgc2luY2Ugb3VyIGNhbGxlZSBubyBsb25nZXIgbmVlZHMgdG8gYWxsb2NhdGUgYW55dGhp
bmcuCisKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlUHJvcGVydHkpOiBBbGxvY2F0
ZSB0aGUgaWRlbnRpZmllciBmb3Igb3VyCisgICAgICAgIGNhbGxlZSwgc2luY2UgdGhhdCBpcyBz
aW1wbGVyIHRoYW4gcmVxdWlyaW5nIG91ciBjYWxsZWUgdG8gbm90aWNlIHRoYXQKKyAgICAgICAg
d2UgZGlkbid0IGRvIHNvLCBhbmQgZG8gaXQgZm9yIHVzLgorCisgICAgICAgIChKU0M6OkFTVEJ1
aWxkZXI6OmNyZWF0ZUZvckluTG9vcCk6IEFsbG9jYXRlIHRoZSBEZWNvbnN0cnVjdGluZ0Fzc2ln
bm1lbnROb2RlCisgICAgICAgIGZvciBvdXIgY2FsbGVlLCBzaW5jZSB0aGF0IGlzIHNpbXBsZXIg
dGhhbiByZXF1aXJpbmcgb3VyIGNhbGxlZSB0byBub3RpY2UKKyAgICAgICAgdGhhdCB3ZSBkaWRu
J3QgZG8gc28sIGFuZCBkbyBpdCBmb3IgdXMuCisKKyAgICAgICAgQWxzbywgcmV1c2Ugc29tZSBj
b2RlIGluc3RlYWQgb2YgZHVwbGljYXRpbmcgaXQuCisKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRl
cjo6Y3JlYXRlRm9yT2ZMb29wKTogRGl0dG8uCisKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6
Y3JlYXRlQXJyYXlQYXR0ZXJuKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlT2Jq
ZWN0UGF0dGVybik6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUJpbmRpbmdMb2Nh
dGlvbik6IE5vIG5lZWQgdG8gcGFzcyB0aHJvdWdoIGEgVk0KKyAgICAgICAgcG9pbnRlciwgc2lu
Y2Ugb3VyIGNhbGxlZSBubyBsb25nZXIgbmVlZHMgdG8gYWxsb2NhdGUgYW55dGhpbmcuCisKKyAg
ICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlQnJlYWtTdGF0ZW1lbnQpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVDb250aW51ZVN0YXRlbWVudCk6IERlbGV0
ZWQuCisKKyAgICAgICAgKiBwYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oOgorICAgICAgICAoSlND
OjpQcm9wZXJ0eU5vZGU6OlByb3BlcnR5Tm9kZSk6CisgICAgICAgIChKU0M6OkRlY29uc3RydWN0
aW9uUGF0dGVybk5vZGU6OkRlY29uc3RydWN0aW9uUGF0dGVybk5vZGUpOgorICAgICAgICAoSlND
OjpBcnJheVBhdHRlcm5Ob2RlOjpBcnJheVBhdHRlcm5Ob2RlKToKKyAgICAgICAgKEpTQzo6QXJy
YXlQYXR0ZXJuTm9kZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6T2JqZWN0UGF0dGVybk5vZGU6
Ok9iamVjdFBhdHRlcm5Ob2RlKToKKyAgICAgICAgKEpTQzo6T2JqZWN0UGF0dGVybk5vZGU6OmNy
ZWF0ZSk6CisgICAgICAgIChKU0M6OkJpbmRpbmdOb2RlOjpjcmVhdGUpOgorICAgICAgICAoSlND
OjpCaW5kaW5nTm9kZTo6QmluZGluZ05vZGUpOgorICAgICAgICAoSlNDOjpDb250aW51ZU5vZGU6
OkNvbnRpbnVlTm9kZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkJyZWFrTm9kZTo6QnJlYWtO
b2RlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RW51bWVyYXRpb25Ob2RlOjpFbnVtZXJhdGlv
bk5vZGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpGb3JJbk5vZGU6OkZvckluTm9kZSk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OkZvck9mTm9kZTo6Rm9yT2ZOb2RlKTogRGVsZXRlZC4gRGVs
ZXRlZCBhIGJ1bmNoIG9mIHNwZWNpYWwgY2FzZXMKKyAgICAgICAgdGhhdCBkb24ndCBleGlzdCBh
bnltb3JlLCBub3cgdGhhdCB0aGUgcGFyc2VyIGFsbG9jYXRlcyBhbGwgcGllY2VzIG9mCisgICAg
ICAgIHRoZSBBU1QgdW5jb25kaXRpb25hbGx5LgorCisgICAgICAgICogcGFyc2VyL05vZGVzLmg6
IERpdHRvLgorCisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAgICAgIChKU0M6OlBh
cnNlcjxMZXhlclR5cGU+OjpwYXJzZUJyZWFrU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6UGFy
c2VyPExleGVyVHlwZT46OnBhcnNlQ29udGludWVTdGF0ZW1lbnQpOiBBbGxvY2F0ZSB0aGUgbnVs
bAorICAgICAgICBpZGVudGlmaWVyIGZvciBvdXIgY2FsbGVlLCBzaW5jZSB0aGF0IGlzIHNpbXBs
ZXIgdGhhbiByZXF1aXJpbmcgb3VyCisgICAgICAgIGNhbGxlZSB0byBub3RpY2UgdGhhdCB3ZSBk
aWRuJ3QgZG8gc28sIGFuZCBkbyBpdCBmb3IgdXMuCisKKyAgICAgICAgKEpTQzo6UGFyc2VyPExl
eGVyVHlwZT46OnBhcnNlUHJvcGVydHkpOgorICAgICAgICAqIHBhcnNlci9TeW50YXhDaGVja2Vy
Lmg6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZVByb3BlcnR5KTogTm8gbmVl
ZCB0byBwYXNzIHRocm91Z2ggYSBWTQorICAgICAgICBwb2ludGVyLCBzaW5jZSBvdXIgY2FsbGVl
IG5vIGxvbmdlciBuZWVkcyB0byBhbGxvY2F0ZSBhbnl0aGluZy4KKwogMjAxNC0xMi0wMyAgWnNv
bHQgQm9yYmVseSAgPHpzYm9yYmVseS51LXN6ZWdlZEBwYXJ0bmVyLnNhbXN1bmcuY29tPgogCiAg
ICAgICAgIFJlbW92ZSB1bnVzZWQgSlNDIHJ1bnRpbWUgb3B0aW9ucwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgJKHJldmlzaW9uIDE3NjczMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yOTksMTMgKzI5OSwxMyBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVChuYW1lKTsKICAgICAg
ICAgYm9keS0+c2V0TG9jKGJvZHlTdGFydExpbmUsIGJvZHlFbmRMaW5lLCBsb2NhdGlvbi5zdGFy
dE9mZnNldCwgbG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0KTsKICAgICAgICAgYm9keS0+c2V0SW5m
ZXJyZWROYW1lKCpuYW1lKTsKLSAgICAgICAgcmV0dXJuIG5ldyAobV92bSkgUHJvcGVydHlOb2Rl
KG1fdm0sICpuYW1lLCBuZXcgKG1fdm0pIEZ1bmNFeHByTm9kZShsb2NhdGlvbiwgbV92bS0+cHJv
cGVydHlOYW1lcy0+bnVsbElkZW50aWZpZXIsIGJvZHksIG1fc291cmNlQ29kZS0+c3ViRXhwcmVz
c2lvbihvcGVuQnJhY2VPZmZzZXQsIGNsb3NlQnJhY2VPZmZzZXQsIGJvZHlTdGFydExpbmUsIGJv
ZHlTdGFydENvbHVtbiksIHBhcmFtcyksIHR5cGUpOworICAgICAgICByZXR1cm4gbmV3IChtX3Zt
KSBQcm9wZXJ0eU5vZGUoKm5hbWUsIG5ldyAobV92bSkgRnVuY0V4cHJOb2RlKGxvY2F0aW9uLCBt
X3ZtLT5wcm9wZXJ0eU5hbWVzLT5udWxsSWRlbnRpZmllciwgYm9keSwgbV9zb3VyY2VDb2RlLT5z
dWJFeHByZXNzaW9uKG9wZW5CcmFjZU9mZnNldCwgY2xvc2VCcmFjZU9mZnNldCwgYm9keVN0YXJ0
TGluZSwgYm9keVN0YXJ0Q29sdW1uKSwgcGFyYW1zKSwgdHlwZSk7CiAgICAgfQogICAgIAogICAg
IE5FVkVSX0lOTElORSBQcm9wZXJ0eU5vZGUqIGNyZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVydHko
Vk0qLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBQcm9wZXJ0eU5vZGU6OlR5cGUg
dHlwZSwgYm9vbCwgZG91YmxlIG5hbWUsIFBhcmFtZXRlck5vZGUqIHBhcmFtcywgRnVuY3Rpb25C
b2R5Tm9kZSogYm9keSwgdW5zaWduZWQgb3BlbkJyYWNlT2Zmc2V0LCB1bnNpZ25lZCBjbG9zZUJy
YWNlT2Zmc2V0LCBpbnQgYm9keVN0YXJ0TGluZSwgaW50IGJvZHlFbmRMaW5lLCB1bnNpZ25lZCBi
b2R5U3RhcnRDb2x1bW4pCiAgICAgewogICAgICAgICBib2R5LT5zZXRMb2MoYm9keVN0YXJ0TGlu
ZSwgYm9keUVuZExpbmUsIGxvY2F0aW9uLnN0YXJ0T2Zmc2V0LCBsb2NhdGlvbi5saW5lU3RhcnRP
ZmZzZXQpOwotICAgICAgICByZXR1cm4gbmV3IChtX3ZtKSBQcm9wZXJ0eU5vZGUobV92bSwgbmFt
ZSwgbmV3IChtX3ZtKSBGdW5jRXhwck5vZGUobG9jYXRpb24sIG1fdm0tPnByb3BlcnR5TmFtZXMt
Pm51bGxJZGVudGlmaWVyLCBib2R5LCBtX3NvdXJjZUNvZGUtPnN1YkV4cHJlc3Npb24ob3BlbkJy
YWNlT2Zmc2V0LCBjbG9zZUJyYWNlT2Zmc2V0LCBib2R5U3RhcnRMaW5lLCBib2R5U3RhcnRDb2x1
bW4pLCBwYXJhbXMpLCB0eXBlKTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV92bSkgUHJvcGVydHlO
b2RlKG1fdm0tPnBhcnNlckFyZW5hLT5pZGVudGlmaWVyQXJlbmEoKS5tYWtlTnVtZXJpY0lkZW50
aWZpZXIobV92bSwgbmFtZSksIG5ldyAobV92bSkgRnVuY0V4cHJOb2RlKGxvY2F0aW9uLCBtX3Zt
LT5wcm9wZXJ0eU5hbWVzLT5udWxsSWRlbnRpZmllciwgYm9keSwgbV9zb3VyY2VDb2RlLT5zdWJF
eHByZXNzaW9uKG9wZW5CcmFjZU9mZnNldCwgY2xvc2VCcmFjZU9mZnNldCwgYm9keVN0YXJ0TGlu
ZSwgYm9keVN0YXJ0Q29sdW1uKSwgcGFyYW1zKSwgdHlwZSk7CiAgICAgfQogCiAgICAgQXJndW1l
bnRzTm9kZSogY3JlYXRlQXJndW1lbnRzKCkgeyByZXR1cm4gbmV3IChtX3ZtKSBBcmd1bWVudHNO
b2RlKCk7IH0KQEAgLTMxNywxMCArMzE3LDEzIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIGlm
IChub2RlLT5pc0Z1bmNFeHByTm9kZSgpKQogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8RnVuY0V4
cHJOb2RlKj4obm9kZSktPmJvZHkoKS0+c2V0SW5mZXJyZWROYW1lKCpwcm9wZXJ0eU5hbWUpOwot
ICAgICAgICByZXR1cm4gbmV3IChtX3ZtKSBQcm9wZXJ0eU5vZGUobV92bSwgKnByb3BlcnR5TmFt
ZSwgbm9kZSwgdHlwZSk7CisgICAgICAgIHJldHVybiBuZXcgKG1fdm0pIFByb3BlcnR5Tm9kZSgq
cHJvcGVydHlOYW1lLCBub2RlLCB0eXBlKTsKICAgICB9Ci0gICAgUHJvcGVydHlOb2RlKiBjcmVh
dGVQcm9wZXJ0eShWTSosIGRvdWJsZSBwcm9wZXJ0eU5hbWUsIEV4cHJlc3Npb25Ob2RlKiBub2Rl
LCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwgYm9vbCkgeyByZXR1cm4gbmV3IChtX3ZtKSBQcm9w
ZXJ0eU5vZGUobV92bSwgcHJvcGVydHlOYW1lLCBub2RlLCB0eXBlKTsgfQotICAgIFByb3BlcnR5
Tm9kZSogY3JlYXRlUHJvcGVydHkoVk0qLCBFeHByZXNzaW9uTm9kZSogcHJvcGVydHlOYW1lLCBF
eHByZXNzaW9uTm9kZSogbm9kZSwgUHJvcGVydHlOb2RlOjpUeXBlIHR5cGUsIGJvb2wpIHsgcmV0
dXJuIG5ldyAobV92bSkgUHJvcGVydHlOb2RlKG1fdm0sIHByb3BlcnR5TmFtZSwgbm9kZSwgdHlw
ZSk7IH0KKyAgICBQcm9wZXJ0eU5vZGUqIGNyZWF0ZVByb3BlcnR5KFZNKiwgZG91YmxlIHByb3Bl
cnR5TmFtZSwgRXhwcmVzc2lvbk5vZGUqIG5vZGUsIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlLCBi
b29sKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG5ldyAobV92bSkgUHJvcGVydHlOb2RlKG1fdm0t
PnBhcnNlckFyZW5hLT5pZGVudGlmaWVyQXJlbmEoKS5tYWtlTnVtZXJpY0lkZW50aWZpZXIobV92
bSwgcHJvcGVydHlOYW1lKSwgbm9kZSwgdHlwZSk7CisgICAgfQorICAgIFByb3BlcnR5Tm9kZSog
Y3JlYXRlUHJvcGVydHkoRXhwcmVzc2lvbk5vZGUqIHByb3BlcnR5TmFtZSwgRXhwcmVzc2lvbk5v
ZGUqIG5vZGUsIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlLCBib29sKSB7IHJldHVybiBuZXcgKG1f
dm0pIFByb3BlcnR5Tm9kZShwcm9wZXJ0eU5hbWUsIG5vZGUsIHR5cGUpOyB9CiAgICAgUHJvcGVy
dHlMaXN0Tm9kZSogY3JlYXRlUHJvcGVydHlMaXN0KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9j
YXRpb24sIFByb3BlcnR5Tm9kZSogcHJvcGVydHkpIHsgcmV0dXJuIG5ldyAobV92bSkgUHJvcGVy
dHlMaXN0Tm9kZShsb2NhdGlvbiwgcHJvcGVydHkpOyB9CiAgICAgUHJvcGVydHlMaXN0Tm9kZSog
Y3JlYXRlUHJvcGVydHlMaXN0KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIFByb3Bl
cnR5Tm9kZSogcHJvcGVydHksIFByb3BlcnR5TGlzdE5vZGUqIHRhaWwpIHsgcmV0dXJuIG5ldyAo
bV92bSkgUHJvcGVydHlMaXN0Tm9kZShsb2NhdGlvbiwgcHJvcGVydHksIHRhaWwpOyB9CiAKQEAg
LTM4NCwxMCArMzg3LDggQEAgcHVibGljOgogICAgIAogICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0
ZUZvckluTG9vcChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBQYXNzUmVmUHRyPERl
Y29uc3RydWN0aW9uUGF0dGVybk5vZGU+IHBhdHRlcm4sIEV4cHJlc3Npb25Ob2RlKiBpdGVyLCBT
dGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnRzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZVN0YXJ0LCBj
b25zdCBKU1RleHRQb3NpdGlvbiYgZURpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZUVuZCwg
aW50IHN0YXJ0LCBpbnQgZW5kKQogICAgIHsKLSAgICAgICAgRm9ySW5Ob2RlKiByZXN1bHQgPSBu
ZXcgKG1fdm0pIEZvckluTm9kZShtX3ZtLCBsb2NhdGlvbiwgcGF0dGVybi5nZXQoKSwgaXRlciwg
c3RhdGVtZW50cyk7Ci0gICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0LCBlbmQsIGxvY2F0aW9u
LnN0YXJ0T2Zmc2V0LCBsb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQpOwotICAgICAgICBzZXRFeGNl
cHRpb25Mb2NhdGlvbihyZXN1bHQsIGVTdGFydCwgZURpdm90LCBlRW5kKTsKLSAgICAgICAgcmV0
dXJuIHJlc3VsdDsKKyAgICAgICAgYXV0byBsZXhwciA9IG5ldyAobV92bSkgRGVjb25zdHJ1Y3Rp
bmdBc3NpZ25tZW50Tm9kZShsb2NhdGlvbiwgcGF0dGVybi5nZXQoKSwgMCk7CisgICAgICAgIHJl
dHVybiBjcmVhdGVGb3JJbkxvb3AobG9jYXRpb24sIGxleHByLCBpdGVyLCBzdGF0ZW1lbnRzLCBl
U3RhcnQsIGVEaXZvdCwgZUVuZCwgc3RhcnQsIGVuZCk7CiAgICAgfQogICAgIAogICAgIFN0YXRl
bWVudE5vZGUqIGNyZWF0ZUZvck9mTG9vcChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9u
LCBFeHByZXNzaW9uTm9kZSogbGhzLCBFeHByZXNzaW9uTm9kZSogaXRlciwgU3RhdGVtZW50Tm9k
ZSogc3RhdGVtZW50cywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGVTdGFydCwgY29uc3QgSlNUZXh0
UG9zaXRpb24mIGVEaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGVFbmQsIGludCBzdGFydCwg
aW50IGVuZCkKQEAgLTQwMCwxMCArNDAxLDggQEAgcHVibGljOgogICAgIAogICAgIFN0YXRlbWVu
dE5vZGUqIGNyZWF0ZUZvck9mTG9vcChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBQ
YXNzUmVmUHRyPERlY29uc3RydWN0aW9uUGF0dGVybk5vZGU+IHBhdHRlcm4sIEV4cHJlc3Npb25O
b2RlKiBpdGVyLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnRzLCBjb25zdCBKU1RleHRQb3NpdGlv
biYgZVN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZURpdm90LCBjb25zdCBKU1RleHRQb3Np
dGlvbiYgZUVuZCwgaW50IHN0YXJ0LCBpbnQgZW5kKQogICAgIHsKLSAgICAgICAgRm9yT2ZOb2Rl
KiByZXN1bHQgPSBuZXcgKG1fdm0pIEZvck9mTm9kZShtX3ZtLCBsb2NhdGlvbiwgcGF0dGVybi5n
ZXQoKSwgaXRlciwgc3RhdGVtZW50cyk7Ci0gICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0LCBl
bmQsIGxvY2F0aW9uLnN0YXJ0T2Zmc2V0LCBsb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQpOwotICAg
ICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihyZXN1bHQsIGVTdGFydCwgZURpdm90LCBlRW5kKTsK
LSAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgYXV0byBsZXhwciA9IG5ldyAobV92bSkg
RGVjb25zdHJ1Y3RpbmdBc3NpZ25tZW50Tm9kZShsb2NhdGlvbiwgcGF0dGVybi5nZXQoKSwgMCk7
CisgICAgICAgIHJldHVybiBjcmVhdGVGb3JPZkxvb3AobG9jYXRpb24sIGxleHByLCBpdGVyLCBz
dGF0ZW1lbnRzLCBlU3RhcnQsIGVEaXZvdCwgZUVuZCwgc3RhcnQsIGVuZCk7CiAgICAgfQogCiAg
ICAgYm9vbCBpc0JpbmRpbmdOb2RlKGNvbnN0IERlY29uc3RydWN0aW9uUGF0dGVybiYgcGF0dGVy
bikKQEAgLTQzNCwxNCArNDMzLDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gcmVzdWx0Owog
ICAgIH0KIAotICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUJyZWFrU3RhdGVtZW50KGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBzdGFydCwgY29u
c3QgSlNUZXh0UG9zaXRpb24mIGVuZCkKLSAgICB7Ci0gICAgICAgIEJyZWFrTm9kZSogcmVzdWx0
ID0gbmV3IChtX3ZtKSBCcmVha05vZGUobV92bSwgbG9jYXRpb24pOwotICAgICAgICBzZXRFeGNl
cHRpb25Mb2NhdGlvbihyZXN1bHQsIHN0YXJ0LCBlbmQsIGVuZCk7Ci0gICAgICAgIHJlc3VsdC0+
c2V0TG9jKHN0YXJ0LmxpbmUsIGVuZC5saW5lLCBzdGFydC5vZmZzZXQsIHN0YXJ0LmxpbmVTdGFy
dE9mZnNldCk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotCiAgICAgU3RhdGVtZW50
Tm9kZSogY3JlYXRlQnJlYWtTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlv
biwgY29uc3QgSWRlbnRpZmllciogaWRlbnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBzdGFydCwg
Y29uc3QgSlNUZXh0UG9zaXRpb24mIGVuZCkKICAgICB7CiAgICAgICAgIEJyZWFrTm9kZSogcmVz
dWx0ID0gbmV3IChtX3ZtKSBCcmVha05vZGUobG9jYXRpb24sICppZGVudCk7CkBAIC00NTAsMTQg
KzQ0MSw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBT
dGF0ZW1lbnROb2RlKiBjcmVhdGVDb250aW51ZVN0YXRlbWVudChjb25zdCBKU1Rva2VuTG9jYXRp
b24mIGxvY2F0aW9uLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgc3RhcnQsIGNvbnN0IEpTVGV4dFBv
c2l0aW9uJiBlbmQpCi0gICAgewotICAgICAgICBDb250aW51ZU5vZGUqIHJlc3VsdCA9IG5ldyAo
bV92bSkgQ29udGludWVOb2RlKG1fdm0sIGxvY2F0aW9uKTsKLSAgICAgICAgc2V0RXhjZXB0aW9u
TG9jYXRpb24ocmVzdWx0LCBzdGFydCwgZW5kLCBlbmQpOwotICAgICAgICByZXN1bHQtPnNldExv
YyhzdGFydC5saW5lLCBlbmQubGluZSwgc3RhcnQub2Zmc2V0LCBzdGFydC5saW5lU3RhcnRPZmZz
ZXQpOwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLQogICAgIFN0YXRlbWVudE5vZGUq
IGNyZWF0ZUNvbnRpbnVlU3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24s
IGNvbnN0IElkZW50aWZpZXIqIGlkZW50LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgc3RhcnQsIGNv
bnN0IEpTVGV4dFBvc2l0aW9uJiBlbmQpCiAgICAgewogICAgICAgICBDb250aW51ZU5vZGUqIHJl
c3VsdCA9IG5ldyAobV92bSkgQ29udGludWVOb2RlKGxvY2F0aW9uLCAqaWRlbnQpOwpAQCAtNjU5
LDcgKzY0Miw3IEBAIHB1YmxpYzoKICAgICAKICAgICBBcnJheVBhdHRlcm4gY3JlYXRlQXJyYXlQ
YXR0ZXJuKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYpCiAgICAgewotICAgICAgICByZXR1cm4gQXJy
YXlQYXR0ZXJuTm9kZTo6Y3JlYXRlKG1fdm0pOworICAgICAgICByZXR1cm4gQXJyYXlQYXR0ZXJu
Tm9kZTo6Y3JlYXRlKCk7CiAgICAgfQogICAgIAogICAgIHZvaWQgYXBwZW5kQXJyYXlQYXR0ZXJu
U2tpcEVudHJ5KEFycmF5UGF0dGVybiBub2RlLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0
aW9uKQpAQCAtNjc0LDcgKzY1Nyw3IEBAIHB1YmxpYzoKICAgICAKICAgICBPYmplY3RQYXR0ZXJu
IGNyZWF0ZU9iamVjdFBhdHRlcm4oY29uc3QgSlNUb2tlbkxvY2F0aW9uJikKICAgICB7Ci0gICAg
ICAgIHJldHVybiBPYmplY3RQYXR0ZXJuTm9kZTo6Y3JlYXRlKG1fdm0pOworICAgICAgICByZXR1
cm4gT2JqZWN0UGF0dGVybk5vZGU6OmNyZWF0ZSgpOwogICAgIH0KICAgICAKICAgICB2b2lkIGFw
cGVuZE9iamVjdFBhdHRlcm5FbnRyeShPYmplY3RQYXR0ZXJuIG5vZGUsIGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYgbG9jYXRpb24sIGJvb2wgd2FzU3RyaW5nLCBjb25zdCBJZGVudGlmaWVyJiBpZGVu
dGlmaWVyLCBEZWNvbnN0cnVjdGlvblBhdHRlcm4gcGF0dGVybikKQEAgLTY4NCw3ICs2NjcsNyBA
QCBwdWJsaWM6CiAgICAgCiAgICAgQmluZGluZ1BhdHRlcm4gY3JlYXRlQmluZGluZ0xvY2F0aW9u
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImIGJvdW5kUHJvcGVydHks
IGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBzdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGVuZCkK
ICAgICB7Ci0gICAgICAgIHJldHVybiBCaW5kaW5nTm9kZTo6Y3JlYXRlKG1fdm0sIGJvdW5kUHJv
cGVydHksIHN0YXJ0LCBlbmQpOworICAgICAgICByZXR1cm4gQmluZGluZ05vZGU6OmNyZWF0ZShi
b3VuZFByb3BlcnR5LCBzdGFydCwgZW5kKTsKICAgICB9CiAKICAgICB2b2lkIHNldEVuZE9mZnNl
dChOb2RlKiBub2RlLCBpbnQgb2Zmc2V0KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9Ob2RlQ29uc3RydWN0b3JzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmgJKHJldmlzaW9uIDE3NjczMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xNDcsMjEgKzE0NywxNCBAQCBpbmxpbmUgUmVzb2x2ZU5vZGU6OlJlc29sdmVOb2RlKGNv
bnN0IEpTCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBQcm9wZXJ0eU5vZGU6OlByb3BlcnR5
Tm9kZShWTSosIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIEV4cHJlc3Npb25Ob2RlKiBhc3NpZ24s
IFR5cGUgdHlwZSkKKyAgICBpbmxpbmUgUHJvcGVydHlOb2RlOjpQcm9wZXJ0eU5vZGUoY29uc3Qg
SWRlbnRpZmllciYgbmFtZSwgRXhwcmVzc2lvbk5vZGUqIGFzc2lnbiwgVHlwZSB0eXBlKQogICAg
ICAgICA6IG1fbmFtZSgmbmFtZSkKICAgICAgICAgLCBtX2Fzc2lnbihhc3NpZ24pCiAgICAgICAg
ICwgbV90eXBlKHR5cGUpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBQcm9wZXJ0eU5vZGU6
OlByb3BlcnR5Tm9kZShWTSogdm0sIGRvdWJsZSBuYW1lLCBFeHByZXNzaW9uTm9kZSogYXNzaWdu
LCBUeXBlIHR5cGUpCi0gICAgICAgIDogbV9uYW1lKCZ2bS0+cGFyc2VyQXJlbmEtPmlkZW50aWZp
ZXJBcmVuYSgpLm1ha2VOdW1lcmljSWRlbnRpZmllcih2bSwgbmFtZSkpCi0gICAgICAgICwgbV9h
c3NpZ24oYXNzaWduKQotICAgICAgICAsIG1fdHlwZSh0eXBlKQotICAgIHsKLSAgICB9Ci0gICAg
Ci0gICAgaW5saW5lIFByb3BlcnR5Tm9kZTo6UHJvcGVydHlOb2RlKFZNKiwgRXhwcmVzc2lvbk5v
ZGUqIG5hbWUsIEV4cHJlc3Npb25Ob2RlKiBhc3NpZ24sIFR5cGUgdHlwZSkKKyAgICBpbmxpbmUg
UHJvcGVydHlOb2RlOjpQcm9wZXJ0eU5vZGUoRXhwcmVzc2lvbk5vZGUqIG5hbWUsIEV4cHJlc3Np
b25Ob2RlKiBhc3NpZ24sIFR5cGUgdHlwZSkKICAgICAgICAgOiBtX25hbWUoMCkKICAgICAgICAg
LCBtX2V4cHJlc3Npb24obmFtZSkKICAgICAgICAgLCBtX2Fzc2lnbihhc3NpZ24pCkBAIC02OTQs
MjQgKzY4NywxMiBAQCBpbmxpbmUgUmVzb2x2ZU5vZGU6OlJlc29sdmVOb2RlKGNvbnN0IEpTCiAg
ICAgICAgIEFTU0VSVChzdGF0ZW1lbnQpOwogICAgIH0KIAotICAgIGlubGluZSBDb250aW51ZU5v
ZGU6OkNvbnRpbnVlTm9kZShWTSogdm0sIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24p
Ci0gICAgICAgIDogU3RhdGVtZW50Tm9kZShsb2NhdGlvbikKLSAgICAgICAgLCBtX2lkZW50KHZt
LT5wcm9wZXJ0eU5hbWVzLT5udWxsSWRlbnRpZmllcikKLSAgICB7Ci0gICAgfQotCiAgICAgaW5s
aW5lIENvbnRpbnVlTm9kZTo6Q29udGludWVOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9j
YXRpb24sIGNvbnN0IElkZW50aWZpZXImIGlkZW50KQogICAgICAgICA6IFN0YXRlbWVudE5vZGUo
bG9jYXRpb24pCiAgICAgICAgICwgbV9pZGVudChpZGVudCkKICAgICB7CiAgICAgfQogICAgIAot
ICAgIGlubGluZSBCcmVha05vZGU6OkJyZWFrTm9kZShWTSogdm0sIGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYgbG9jYXRpb24pCi0gICAgICAgIDogU3RhdGVtZW50Tm9kZShsb2NhdGlvbikKLSAgICAg
ICAgLCBtX2lkZW50KHZtLT5wcm9wZXJ0eU5hbWVzLT5udWxsSWRlbnRpZmllcikKLSAgICB7Ci0g
ICAgfQotCiAgICAgaW5saW5lIEJyZWFrTm9kZTo6QnJlYWtOb2RlKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIGlkZW50KQogICAgICAgICA6IFN0YXRl
bWVudE5vZGUobG9jYXRpb24pCiAgICAgICAgICwgbV9pZGVudChpZGVudCkKQEAgLTg0MSw2NiAr
ODIyLDQ3IEBAIGlubGluZSBSZXNvbHZlTm9kZTo6UmVzb2x2ZU5vZGUoY29uc3QgSlMKICAgICAg
ICAgQVNTRVJUKGwpOwogICAgIH0KICAgICAKLSAgICBpbmxpbmUgRW51bWVyYXRpb25Ob2RlOjpF
bnVtZXJhdGlvbk5vZGUoVk0qIHZtLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBE
ZWNvbnN0cnVjdGlvblBhdHRlcm5Ob2RlKiBwYXR0ZXJuLCBFeHByZXNzaW9uTm9kZSogZXhwciwg
U3RhdGVtZW50Tm9kZSogc3RhdGVtZW50KQotICAgICAgICA6IFN0YXRlbWVudE5vZGUobG9jYXRp
b24pCi0gICAgICAgICwgbV9sZXhwcihuZXcgKHZtKSBEZWNvbnN0cnVjdGluZ0Fzc2lnbm1lbnRO
b2RlKGxvY2F0aW9uLCBwYXR0ZXJuLCAwKSkKLSAgICAgICAgLCBtX2V4cHIoZXhwcikKLSAgICAg
ICAgLCBtX3N0YXRlbWVudChzdGF0ZW1lbnQpCi0gICAgewotICAgICAgICBBU1NFUlQocGF0dGVy
bik7Ci0gICAgfQotICAgIAogICAgIGlubGluZSBGb3JJbk5vZGU6OkZvckluTm9kZShjb25zdCBK
U1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogbCwgRXhwcmVzc2lvbk5v
ZGUqIGV4cHIsIFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudCkKICAgICAgICAgOiBFbnVtZXJhdGlv
bk5vZGUobG9jYXRpb24sIGwsIGV4cHIsIHN0YXRlbWVudCkKICAgICB7CiAgICAgfQogICAgIAot
ICAgIGlubGluZSBGb3JJbk5vZGU6OkZvckluTm9kZShWTSogdm0sIGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYgbG9jYXRpb24sIERlY29uc3RydWN0aW9uUGF0dGVybk5vZGUqIHBhdHRlcm4sIEV4cHJl
c3Npb25Ob2RlKiBleHByLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnQpCi0gICAgICAgIDogRW51
bWVyYXRpb25Ob2RlKHZtLCBsb2NhdGlvbiwgcGF0dGVybiwgZXhwciwgc3RhdGVtZW50KQotICAg
IHsKLSAgICB9Ci0gICAgCiAgICAgaW5saW5lIEZvck9mTm9kZTo6Rm9yT2ZOb2RlKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBsLCBFeHByZXNzaW9uTm9k
ZSogZXhwciwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50KQogICAgICAgICA6IEVudW1lcmF0aW9u
Tm9kZShsb2NhdGlvbiwgbCwgZXhwciwgc3RhdGVtZW50KQogICAgIHsKICAgICB9CiAgICAgCi0g
ICAgaW5saW5lIEZvck9mTm9kZTo6Rm9yT2ZOb2RlKFZNKiB2bSwgY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiBsb2NhdGlvbiwgRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuTm9kZSogcGF0dGVybiwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIsIFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudCkKLSAgICAgICAgOiBFbnVt
ZXJhdGlvbk5vZGUodm0sIGxvY2F0aW9uLCBwYXR0ZXJuLCBleHByLCBzdGF0ZW1lbnQpCi0gICAg
ewotICAgIH0KLSAgICAKLSAgICBpbmxpbmUgRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuTm9kZTo6RGVj
b25zdHJ1Y3Rpb25QYXR0ZXJuTm9kZShWTSopCisgICAgaW5saW5lIERlY29uc3RydWN0aW9uUGF0
dGVybk5vZGU6OkRlY29uc3RydWN0aW9uUGF0dGVybk5vZGUoKQogICAgIHsKICAgICB9CiAKLSAg
ICBpbmxpbmUgQXJyYXlQYXR0ZXJuTm9kZTo6QXJyYXlQYXR0ZXJuTm9kZShWTSogdm0pCi0gICAg
ICAgIDogRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuTm9kZSh2bSkKKyAgICBpbmxpbmUgQXJyYXlQYXR0
ZXJuTm9kZTo6QXJyYXlQYXR0ZXJuTm9kZSgpCisgICAgICAgIDogRGVjb25zdHJ1Y3Rpb25QYXR0
ZXJuTm9kZSgpCiAgICAgewogICAgIH0KICAgICAKLSAgICBpbmxpbmUgUGFzc1JlZlB0cjxBcnJh
eVBhdHRlcm5Ob2RlPiBBcnJheVBhdHRlcm5Ob2RlOjpjcmVhdGUoVk0qIHZtKQorICAgIGlubGlu
ZSBQYXNzUmVmUHRyPEFycmF5UGF0dGVybk5vZGU+IEFycmF5UGF0dGVybk5vZGU6OmNyZWF0ZSgp
CiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEFycmF5UGF0dGVybk5vZGUodm0p
KTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBBcnJheVBhdHRlcm5Ob2RlKTsKICAgICB9
CiAgICAgCi0gICAgaW5saW5lIE9iamVjdFBhdHRlcm5Ob2RlOjpPYmplY3RQYXR0ZXJuTm9kZShW
TSogdm0pCi0gICAgICAgIDogRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuTm9kZSh2bSkKKyAgICBpbmxp
bmUgT2JqZWN0UGF0dGVybk5vZGU6Ok9iamVjdFBhdHRlcm5Ob2RlKCkKKyAgICAgICAgOiBEZWNv
bnN0cnVjdGlvblBhdHRlcm5Ob2RlKCkKICAgICB7CiAgICAgfQogICAgIAotICAgIGlubGluZSBQ
YXNzUmVmUHRyPE9iamVjdFBhdHRlcm5Ob2RlPiBPYmplY3RQYXR0ZXJuTm9kZTo6Y3JlYXRlKFZN
KiB2bSkKKyAgICBpbmxpbmUgUGFzc1JlZlB0cjxPYmplY3RQYXR0ZXJuTm9kZT4gT2JqZWN0UGF0
dGVybk5vZGU6OmNyZWF0ZSgpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE9i
amVjdFBhdHRlcm5Ob2RlKHZtKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgT2JqZWN0
UGF0dGVybk5vZGUpOwogICAgIH0KIAotICAgIGlubGluZSBQYXNzUmVmUHRyPEJpbmRpbmdOb2Rl
PiBCaW5kaW5nTm9kZTo6Y3JlYXRlKFZNKiB2bSwgY29uc3QgSWRlbnRpZmllciYgYm91bmRQcm9w
ZXJ0eSwgY29uc3QgSlNUZXh0UG9zaXRpb24mIHN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYg
ZW5kKQorICAgIGlubGluZSBQYXNzUmVmUHRyPEJpbmRpbmdOb2RlPiBCaW5kaW5nTm9kZTo6Y3Jl
YXRlKGNvbnN0IElkZW50aWZpZXImIGJvdW5kUHJvcGVydHksIGNvbnN0IEpTVGV4dFBvc2l0aW9u
JiBzdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGVuZCkKICAgICB7Ci0gICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgQmluZGluZ05vZGUodm0sIGJvdW5kUHJvcGVydHksIHN0YXJ0LCBlbmQp
KTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBCaW5kaW5nTm9kZShib3VuZFByb3BlcnR5
LCBzdGFydCwgZW5kKSk7CiAgICAgfQogICAgIAotICAgIGlubGluZSBCaW5kaW5nTm9kZTo6Qmlu
ZGluZ05vZGUoVk0qIHZtLCBjb25zdCBJZGVudGlmaWVyJiBib3VuZFByb3BlcnR5LCBjb25zdCBK
U1RleHRQb3NpdGlvbiYgc3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBlbmQpCi0gICAgICAg
IDogRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuTm9kZSh2bSkKKyAgICBpbmxpbmUgQmluZGluZ05vZGU6
OkJpbmRpbmdOb2RlKGNvbnN0IElkZW50aWZpZXImIGJvdW5kUHJvcGVydHksIGNvbnN0IEpTVGV4
dFBvc2l0aW9uJiBzdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGVuZCkKKyAgICAgICAgOiBE
ZWNvbnN0cnVjdGlvblBhdHRlcm5Ob2RlKCkKICAgICAgICAgLCBtX2Rpdm90U3RhcnQoc3RhcnQp
CiAgICAgICAgICwgbV9kaXZvdEVuZChlbmQpCiAgICAgICAgICwgbV9ib3VuZFByb3BlcnR5KGJv
dW5kUHJvcGVydHkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCShyZXZp
c2lvbiAxNzY3MzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTQ4Myw5ICs0ODMsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwdWJs
aWM6CiAgICAgICAgIGVudW0gVHlwZSB7IENvbnN0YW50ID0gMSwgR2V0dGVyID0gMiwgU2V0dGVy
ID0gNCB9OwogCi0gICAgICAgIFByb3BlcnR5Tm9kZShWTSosIGNvbnN0IElkZW50aWZpZXImLCBF
eHByZXNzaW9uTm9kZSosIFR5cGUpOwotICAgICAgICBQcm9wZXJ0eU5vZGUoVk0qLCBkb3VibGUs
IEV4cHJlc3Npb25Ob2RlKiwgVHlwZSk7Ci0gICAgICAgIFByb3BlcnR5Tm9kZShWTSosIEV4cHJl
c3Npb25Ob2RlKiBwcm9wZXJ0eU5hbWUsIEV4cHJlc3Npb25Ob2RlKiwgVHlwZSk7CisgICAgICAg
IFByb3BlcnR5Tm9kZShjb25zdCBJZGVudGlmaWVyJiwgRXhwcmVzc2lvbk5vZGUqLCBUeXBlKTsK
KyAgICAgICAgUHJvcGVydHlOb2RlKEV4cHJlc3Npb25Ob2RlKiBwcm9wZXJ0eU5hbWUsIEV4cHJl
c3Npb25Ob2RlKiwgVHlwZSk7CiAgICAgICAgIAogICAgICAgICBFeHByZXNzaW9uTm9kZSogZXhw
cmVzc2lvbk5hbWUoKSBjb25zdCB7IHJldHVybiBtX2V4cHJlc3Npb247IH0KICAgICAgICAgY29u
c3QgSWRlbnRpZmllciogbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQpAQCAtMTI4MCw3
ICsxMjc5LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgRW51bWVyYXRpb25Ob2RlIDog
cHVibGljIFN0YXRlbWVudE5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAg
ICAgcHVibGljOgogICAgICAgICBFbnVtZXJhdGlvbk5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiwgRXhwcmVzc2lvbk5vZGUqLCBFeHByZXNzaW9uTm9kZSosIFN0YXRlbWVudE5vZGUqKTsKLSAg
ICAgICAgRW51bWVyYXRpb25Ob2RlKFZNKiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRGVjb25z
dHJ1Y3Rpb25QYXR0ZXJuTm9kZSosIEV4cHJlc3Npb25Ob2RlKiwgU3RhdGVtZW50Tm9kZSopOwog
ICAgICAgICAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2xleHBy
OwpAQCAtMTI5MSw3ICsxMjg5LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgRm9ySW5O
b2RlIDogcHVibGljIEVudW1lcmF0aW9uTm9kZSB7CiAgICAgcHVibGljOgogICAgICAgICBGb3JJ
bk5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqLCBFeHByZXNzaW9u
Tm9kZSosIFN0YXRlbWVudE5vZGUqKTsKLSAgICAgICAgRm9ySW5Ob2RlKFZNKiwgY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiwgRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuTm9kZSosIEV4cHJlc3Npb25Ob2Rl
KiwgU3RhdGVtZW50Tm9kZSopOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgUmVnaXN0ZXJJRCog
dHJ5R2V0Qm91bmRMb2NhbChCeXRlY29kZUdlbmVyYXRvciYpOwpAQCAtMTMwNCw3ICsxMzAxLDYg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgRm9yT2ZOb2RlIDogcHVibGljIEVudW1lcmF0
aW9uTm9kZSB7CiAgICAgcHVibGljOgogICAgICAgICBGb3JPZk5vZGUoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqLCBFeHByZXNzaW9uTm9kZSosIFN0YXRlbWVudE5vZGUq
KTsKLSAgICAgICAgRm9yT2ZOb2RlKFZNKiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRGVjb25z
dHJ1Y3Rpb25QYXR0ZXJuTm9kZSosIEV4cHJlc3Npb25Ob2RlKiwgU3RhdGVtZW50Tm9kZSopOwog
ICAgICAgICAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKQEAgLTEzMTIs
NyArMTMwOCw2IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgQ29udGludWVOb2RlIDog
cHVibGljIFN0YXRlbWVudE5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAg
ICAgcHVibGljOgotICAgICAgICBDb250aW51ZU5vZGUoVk0qLCBjb25zdCBKU1Rva2VuTG9jYXRp
b24mKTsKICAgICAgICAgQ29udGludWVOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0
IElkZW50aWZpZXImKTsKICAgICAgICAgTGFiZWwqIHRyaXZpYWxUYXJnZXQoQnl0ZWNvZGVHZW5l
cmF0b3ImKTsKICAgICAgICAgCkBAIC0xMzI1LDcgKzEzMjAsNiBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogICAgIGNsYXNzIEJyZWFrTm9kZSA6IHB1YmxpYyBTdGF0ZW1lbnROb2RlLCBwdWJsaWMgVGhy
b3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgQnJlYWtOb2RlKFZN
KiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJik7CiAgICAgICAgIEJyZWFrTm9kZShjb25zdCBKU1Rv
a2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJik7CiAgICAgICAgIExhYmVsKiB0cml2aWFs
VGFyZ2V0KEJ5dGVjb2RlR2VuZXJhdG9yJik7CiAgICAgICAgIApAQCAtMTYxOCwxOSArMTYxMiwx
OSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdmlydHVhbCB+RGVjb25zdHJ1Y3Rpb25QYXR0
ZXJuTm9kZSgpID0gMDsKICAgICAgICAgCiAgICAgcHJvdGVjdGVkOgotICAgICAgICBEZWNvbnN0
cnVjdGlvblBhdHRlcm5Ob2RlKFZNKik7CisgICAgICAgIERlY29uc3RydWN0aW9uUGF0dGVybk5v
ZGUoKTsKICAgICB9OwogCiAgICAgY2xhc3MgQXJyYXlQYXR0ZXJuTm9kZSA6IHB1YmxpYyBEZWNv
bnN0cnVjdGlvblBhdHRlcm5Ob2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEFycmF5UGF0dGVybk5vZGU+IGNyZWF0ZShWTSopOworICAgICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxBcnJheVBhdHRlcm5Ob2RlPiBjcmVhdGUoKTsKICAgICAgICAgdm9pZCBhcHBlbmRJ
bmRleChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBEZWNvbnN0cnVjdGlvblBhdHRlcm5Ob2RlKiBu
b2RlKQogICAgICAgICB7CiAgICAgICAgICAgICBtX3RhcmdldFBhdHRlcm5zLmFwcGVuZChub2Rl
KTsKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgQXJyYXlQYXR0ZXJuTm9kZShW
TSopOworICAgICAgICBBcnJheVBhdHRlcm5Ob2RlKCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBj
b2xsZWN0Qm91bmRJZGVudGlmaWVycyhWZWN0b3I8SWRlbnRpZmllcj4mKSBjb25zdCBvdmVycmlk
ZTsKICAgICAgICAgdmlydHVhbCB2b2lkIGJpbmRWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYsIFJl
Z2lzdGVySUQqKSBjb25zdCBvdmVycmlkZTsKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBl
bWl0RGlyZWN0QmluZGluZyhCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqIGRzdCwgRXhw
cmVzc2lvbk5vZGUqKSBvdmVycmlkZTsKQEAgLTE2NDEsMTQgKzE2MzUsMTQgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgCiAgICAgY2xhc3MgT2JqZWN0UGF0dGVybk5vZGUgOiBwdWJsaWMgRGVjb25z
dHJ1Y3Rpb25QYXR0ZXJuTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxPYmplY3RQYXR0ZXJuTm9kZT4gY3JlYXRlKFZNKik7CisgICAgICAgIHN0YXRpYyBQYXNz
UmVmUHRyPE9iamVjdFBhdHRlcm5Ob2RlPiBjcmVhdGUoKTsKICAgICAgICAgdm9pZCBhcHBlbmRF
bnRyeShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVy
LCBib29sIHdhc1N0cmluZywgRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuTm9kZSogcGF0dGVybikKICAg
ICAgICAgewogICAgICAgICAgICAgbV90YXJnZXRQYXR0ZXJucy5hcHBlbmQoRW50cnkoaWRlbnRp
Zmllciwgd2FzU3RyaW5nLCBwYXR0ZXJuKSk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgcHJp
dmF0ZToKLSAgICAgICAgT2JqZWN0UGF0dGVybk5vZGUoVk0qKTsKKyAgICAgICAgT2JqZWN0UGF0
dGVybk5vZGUoKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGNvbGxlY3RCb3VuZElkZW50aWZpZXJz
KFZlY3RvcjxJZGVudGlmaWVyPiYpIGNvbnN0IG92ZXJyaWRlOwogICAgICAgICB2aXJ0dWFsIHZv
aWQgYmluZFZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCopIGNvbnN0IG92ZXJy
aWRlOwogICAgICAgICB2aXJ0dWFsIHZvaWQgdG9TdHJpbmcoU3RyaW5nQnVpbGRlciYpIGNvbnN0
IG92ZXJyaWRlOwpAQCAtMTY2OCwxNCArMTY2MiwxNCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAg
IGNsYXNzIEJpbmRpbmdOb2RlIDogcHVibGljIERlY29uc3RydWN0aW9uUGF0dGVybk5vZGUgewog
ICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8QmluZGluZ05vZGU+IGNyZWF0
ZShWTSosIGNvbnN0IElkZW50aWZpZXImIGJvdW5kUHJvcGVydHksIGNvbnN0IEpTVGV4dFBvc2l0
aW9uJiBzdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGVuZCk7CisgICAgICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPEJpbmRpbmdOb2RlPiBjcmVhdGUoY29uc3QgSWRlbnRpZmllciYgYm91bmRQcm9w
ZXJ0eSwgY29uc3QgSlNUZXh0UG9zaXRpb24mIHN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYg
ZW5kKTsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgYm91bmRQcm9wZXJ0eSgpIGNvbnN0IHsg
cmV0dXJuIG1fYm91bmRQcm9wZXJ0eTsgfQogCiAgICAgICAgIGNvbnN0IEpTVGV4dFBvc2l0aW9u
JiBkaXZvdFN0YXJ0KCkgY29uc3QgeyByZXR1cm4gbV9kaXZvdFN0YXJ0OyB9CiAgICAgICAgIGNv
bnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fZGl2b3RFbmQ7
IH0KICAgICAgICAgCiAgICAgcHJpdmF0ZToKLSAgICAgICAgQmluZGluZ05vZGUoVk0qLCBjb25z
dCBJZGVudGlmaWVyJiBib3VuZFByb3BlcnR5LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgc3RhcnQs
IGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBlbmQpOworICAgICAgICBCaW5kaW5nTm9kZShjb25zdCBJ
ZGVudGlmaWVyJiBib3VuZFByb3BlcnR5LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgc3RhcnQsIGNv
bnN0IEpTVGV4dFBvc2l0aW9uJiBlbmQpOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBjb2xsZWN0
Qm91bmRJZGVudGlmaWVycyhWZWN0b3I8SWRlbnRpZmllcj4mKSBjb25zdCBvdmVycmlkZTsKICAg
ICAgICAgdmlydHVhbCB2b2lkIGJpbmRWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVy
SUQqKSBjb25zdCBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlci5jcHAJKHJldmlzaW9uIDE3NjczMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODYzLDcgKzg2Myw3IEBAIHRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWUKICAgICAKICAgICBpZiAoYXV0b1NlbWlD
b2xvbigpKSB7CiAgICAgICAgIHNlbWFudGljRmFpbElmRmFsc2UoYnJlYWtJc1ZhbGlkKCksICIn
YnJlYWsnIGlzIG9ubHkgdmFsaWQgaW5zaWRlIGEgc3dpdGNoIG9yIGxvb3Agc3RhdGVtZW50Iik7
Ci0gICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUJyZWFrU3RhdGVtZW50KGxvY2F0aW9uLCBz
dGFydCwgZW5kKTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlQnJlYWtTdGF0ZW1lbnQo
bG9jYXRpb24sICZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5udWxsSWRlbnRpZmllciwgc3RhcnQsIGVu
ZCk7CiAgICAgfQogICAgIG1hdGNoT3JGYWlsKElERU5ULCAiRXhwZWN0ZWQgYW4gaWRlbnRpZmll
ciBhcyB0aGUgdGFyZ2V0IGZvciBhIGJyZWFrIHN0YXRlbWVudCIpOwogICAgIGNvbnN0IElkZW50
aWZpZXIqIGlkZW50ID0gbV90b2tlbi5tX2RhdGEuaWRlbnQ7CkBAIC04ODUsNyArODg1LDcgQEAg
dGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZQogICAgIAogICAgIGlmIChh
dXRvU2VtaUNvbG9uKCkpIHsKICAgICAgICAgc2VtYW50aWNGYWlsSWZGYWxzZShjb250aW51ZUlz
VmFsaWQoKSwgIidjb250aW51ZScgaXMgb25seSB2YWxpZCBpbnNpZGUgYSBsb29wIHN0YXRlbWVu
dCIpOwotICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVDb250aW51ZVN0YXRlbWVudChsb2Nh
dGlvbiwgc3RhcnQsIGVuZCk7CisgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUNvbnRpbnVl
U3RhdGVtZW50KGxvY2F0aW9uLCAmbV92bS0+cHJvcGVydHlOYW1lcy0+bnVsbElkZW50aWZpZXIs
IHN0YXJ0LCBlbmQpOwogICAgIH0KICAgICBtYXRjaE9yRmFpbChJREVOVCwgIkV4cGVjdGVkIGFu
IGlkZW50aWZpZXIgYXMgdGhlIHRhcmdldCBmb3IgYSBjb250aW51ZSBzdGF0ZW1lbnQiKTsKICAg
ICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9IG1fdG9rZW4ubV9kYXRhLmlkZW50OwpAQCAtMTgy
Nyw3ICsxODI3LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlUHJvcGVydAog
ICAgICAgICBUcmVlRXhwcmVzc2lvbiBub2RlID0gcGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbihj
b250ZXh0KTsKICAgICAgICAgZmFpbElmRmFsc2Uobm9kZSwgIkNhbm5vdCBwYXJzZSBleHByZXNz
aW9uIGZvciBwcm9wZXJ0eSBkZWNsYXJhdGlvbiIpOwogICAgICAgICBjb250ZXh0LnNldEVuZE9m
ZnNldChub2RlLCBtX2xleGVyLT5jdXJyZW50T2Zmc2V0KCkpOwotICAgICAgICByZXR1cm4gY29u
dGV4dC5jcmVhdGVQcm9wZXJ0eShjb25zdF9jYXN0PFZNKj4obV92bSksIHByb3BlcnR5TmFtZSwg
bm9kZSwgUHJvcGVydHlOb2RlOjpDb25zdGFudCwgY29tcGxldGUpOworICAgICAgICByZXR1cm4g
Y29udGV4dC5jcmVhdGVQcm9wZXJ0eShwcm9wZXJ0eU5hbWUsIG5vZGUsIFByb3BlcnR5Tm9kZTo6
Q29uc3RhbnQsIGNvbXBsZXRlKTsKICAgICB9CiAgICAgZGVmYXVsdDoKICAgICAgICAgZmFpbElm
RmFsc2UobV90b2tlbi5tX3R5cGUgJiBLZXl3b3JkVG9rZW5GbGFnLCAiRXhwZWN0ZWQgYSBwcm9w
ZXJ0eSBuYW1lIik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENo
ZWNrZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRh
eENoZWNrZXIuaAkocmV2aXNpb24gMTc2NzMwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9TeW50YXhDaGVja2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTE4MCw3ICsxODAsNyBAQCBw
dWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gUHJvcGVydHkodHlwZSk7CiAgICAgICAgIHJldHVy
biBQcm9wZXJ0eSgmdm0tPnBhcnNlckFyZW5hLT5pZGVudGlmaWVyQXJlbmEoKS5tYWtlTnVtZXJp
Y0lkZW50aWZpZXIodm0sIG5hbWUpLCB0eXBlKTsKICAgICB9Ci0gICAgUHJvcGVydHkgY3JlYXRl
UHJvcGVydHkoVk0qLCBFeHByZXNzaW9uTm9kZSosIGludCwgUHJvcGVydHlOb2RlOjpUeXBlIHR5
cGUsIGJvb2wpCisgICAgUHJvcGVydHkgY3JlYXRlUHJvcGVydHkoaW50LCBpbnQsIFByb3BlcnR5
Tm9kZTo6VHlwZSB0eXBlLCBib29sKQogICAgIHsKICAgICAgICAgcmV0dXJuIFByb3BlcnR5KHR5
cGUpOwogICAgIH0K
</data>
<flag name="review"
          id="267383"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>