<?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>101438</bug_id>
          
          <creation_ts>2012-11-07 01:28:39 -0800</creation_ts>
          <short_desc>DFG should not assume that something is a double just because it might be undefined</short_desc>
          <delta_ts>2012-11-08 14:56:21 -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>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>760465</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-11-07 01:28:39 -0800</bug_when>
    <thetext>Currently our arithmetic paths in the DFG have two, or three, versions:

1) Integer path.  This only accepts integers.

2) Double path.  This only accepts doubles or integers.

3) For ValueAdd only, there is a generic path.

For operations that only have (1) or (2), we currently assume that we must use (2) if either operand may not be a number.  This is clearly pointless, as it means that we do an upconversion to double even when we have no evidence that the value is in fact a double.

For ValueAdd, it probably makes no sense to fall off into the generic path just because the value can be undefined.  Undefined data flow arcs may exist if a variable is conditionally assigned, like in:

var x;
if (p)
   x = 42;
... // stuff
if (p)
   y = x + 1; // Currently we&apos;ll use generic ValueAdd here.

We should change the speculation logic to account for the fact that (a) undefined flowing into arithmetic means we&apos;ve probably already lost anyway and (b) speculating double for something that is either integer or not even a number buys nothing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760468</commentid>
    <comment_count>1</comment_count>
      <attachid>172738</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-11-07 01:36:45 -0800</bug_when>
    <thetext>Created attachment 172738
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760470</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-07 01:41:37 -0800</bug_when>
    <thetext>Attachment 172738 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1
Source/JavaScriptCore/dfg/DFGPredictionPropagationPhase.cpp:319:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/JavaScriptCore/dfg/DFGPredictionPropagationPhase.cpp:360:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/JavaScriptCore/dfg/DFGPredictionPropagationPhase.cpp:384:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/JavaScriptCore/dfg/DFGPredictionPropagationPhase.cpp:822:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:2370:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:2407:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/JavaScriptCore/dfg/DFGFixupPhase.cpp:266:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/JavaScriptCore/dfg/DFGFixupPhase.cpp:284:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Total errors found: 8 in 11 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>760478</commentid>
    <comment_count>3</comment_count>
      <attachid>172740</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-11-07 02:00:36 -0800</bug_when>
    <thetext>Created attachment 172740
the patch

Fix style</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>762214</commentid>
    <comment_count>4</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-11-08 14:56:21 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/133956</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172738</attachid>
            <date>2012-11-07 01:36:45 -0800</date>
            <delta_ts>2012-11-07 02:00:36 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>fixspec.patch</filename>
            <type>text/plain</type>
            <size>24472</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTMzNzI5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU5IEBA
CisyMDEyLTExLTA3ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIHNob3VsZCBub3QgYXNzdW1lIHRoYXQgc29tZXRoaW5nIGlzIGEgZG91YmxlIGp1c3QgYmVj
YXVzZSBpdCBtaWdodCBiZSB1bmRlZmluZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwMTQzOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRoaXMgY2hhbmdlcyBhbGwgbm9uLWJpdG9wIGFyaXRobWV0aWMg
dG8gKGEpIHN0YXRpY2FsbHkgZXhwZWN0IHRoYXQgdmFyaWFibGVzIGFyZQorICAgICAgICBkZWZp
bmVkIHByaW9yIHRvIHVzZSBpbiBhcml0aG1ldGljIGFuZCAoYikgbm90IGZhbGwgb2ZmIGludG8g
ZG91YmxlIHBhdGhzIGp1c3QKKyAgICAgICAgYmVjYXVzZSBhIHZhbHVlIG1heSBub3QgYmUgYSBu
dW1iZXIuIFRoaXMgaXMgYWNjb21wbGlzaGVkIHdpdGggdHdvIG5ldyBub3Rpb25zIG9mCisgICAg
ICAgIHNwZWN1bGF0aW9uOgorICAgICAgICAKKyAgICAgICAgc2hvdWxkU3BlY3VsYXRlSW50ZWdl
ckV4cGVjdGluZ0RlZmluZWQ6IFNob3VsZCB3ZSBzcGVjdWxhdGUgdGhhdCB0aGUgdmFsdWUgaXMg
YW4KKyAgICAgICAgaW50ZWdlciBpZiB3ZSBpZ25vcmUgdW5kZWZpbmVkIChpLmUuIFNwZWNPdGhl
cikgcHJlZGljdGlvbnM/CisgICAgICAgIAorICAgICAgICBzaG91bGRTcGVjdWxhdGVJbnRlZ2Vy
Rm9yQXJpdGhtZXRpYzogU2hvdWxkIHdlIHNwZWN1bGF0ZSB0aGF0IHRoZSB2YWx1ZSBpcyBhbgor
ICAgICAgICBpbnRlZ2VyIGlmIHdlIGlnbm9yZSBub24tbnVtZXJpYyBwcmVkaWN0aW9ucz8KKyAg
ICAgICAgCisgICAgICAgIFRoaXMgaXMgYSB+Mnggc3BlZWQtdXAgb24gcHJvZ3JhbXMgdGhhdCBz
ZWVtIHRvIG91ciBwcmVkaWN0aW9uIHByb3BhZ2F0b3IgdG8gaGF2ZQorICAgICAgICBwYXRocyBp
biB3aGljaCBvdGhlcndpc2UgbnVtZXJpYyB2YXJpYWJsZXMgYXJlIHVuZGVmaW5lZC4KKworICAg
ICAgICAqIGJ5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmg6CisgICAgICAgIChKU0M6OmlzSW50MzJT
cGVjdWxhdGlvbkZvckFyaXRobWV0aWMpOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6
aXNJbnQzMlNwZWN1bGF0aW9uRXhwZWN0aW5nRGVmaW5lZCk6CisgICAgICAgIChKU0M6OmlzRG91
YmxlU3BlY3VsYXRpb25Gb3JBcml0aG1ldGljKToKKyAgICAgICAgKEpTQzo6aXNOdW1iZXJTcGVj
dWxhdGlvbkV4cGVjdGluZ0RlZmluZWQpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdFN0YXRl
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFN0YXRlOjpleGVjdXRlKToKKyAgICAg
ICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFz
ZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKiBkZmcvREZHR3JhcGguaDoKKyAgICAgICAgKEpTQzo6
REZHOjpHcmFwaDo6YWRkU2hvdWxkU3BlY3VsYXRlSW50ZWdlcik6CisgICAgICAgIChKU0M6OkRG
Rzo6R3JhcGg6Om11bFNob3VsZFNwZWN1bGF0ZUludGVnZXIpOgorICAgICAgICAoSlNDOjpERkc6
OkdyYXBoOjpuZWdhdGVTaG91bGRTcGVjdWxhdGVJbnRlZ2VyKToKKyAgICAgICAgKEpTQzo6REZH
OjpHcmFwaDo6YWRkSW1tZWRpYXRlU2hvdWxkU3BlY3VsYXRlSW50ZWdlcik6CisgICAgICAgIChK
U0M6OkRGRzo6R3JhcGg6Om11bEltbWVkaWF0ZVNob3VsZFNwZWN1bGF0ZUludGVnZXIpOgorICAg
ICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6c2hvdWxkU3Bl
Y3VsYXRlSW50ZWdlckZvckFyaXRobWV0aWMpOgorICAgICAgICAoTm9kZSk6CisgICAgICAgIChK
U0M6OkRGRzo6Tm9kZTo6c2hvdWxkU3BlY3VsYXRlSW50ZWdlckV4cGVjdGluZ0RlZmluZWQpOgor
ICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OnNob3VsZFNwZWN1bGF0ZURvdWJsZUZvckFyaXRobWV0
aWMpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OnNob3VsZFNwZWN1bGF0ZU51bWJlckV4cGVj
dGluZ0RlZmluZWQpOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFz
ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2U6OnBy
b3BhZ2F0ZSk6CisgICAgICAgIChKU0M6OkRGRzo6UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2U6
OmRvUm91bmRPZkRvdWJsZVZvdGluZyk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFkZCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aE1vZCk6CisgICAg
ICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVK
SVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgor
ICAgICAgICAqIGppdC9KSVRBcml0aG1ldGljLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX2Rpdik6CisKIDIwMTItMTEtMDYgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4K
IAogICAgICAgICBSZWR1Y2UgcGFyc2VyIG92ZXJoZWFkIGluIEpTQwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgJKHJldmlzaW9uIDEz
MzY4NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yMjgsNiArMjI4LDE2IEBAIGlubGluZSBib29sIGlzSW50MzJT
cGVjdWxhdGlvbihTcGVjdWxhdGUKICAgICByZXR1cm4gdmFsdWUgPT0gU3BlY0ludDMyOwogfQog
CitpbmxpbmUgYm9vbCBpc0ludDMyU3BlY3VsYXRpb25Gb3JBcml0aG1ldGljKFNwZWN1bGF0ZWRU
eXBlIHZhbHVlKQoreworICAgIHJldHVybiAhKHZhbHVlICYgU3BlY0RvdWJsZSk7Cit9CisKK2lu
bGluZSBib29sIGlzSW50MzJTcGVjdWxhdGlvbkV4cGVjdGluZ0RlZmluZWQoU3BlY3VsYXRlZFR5
cGUgdmFsdWUpCit7CisgICAgcmV0dXJuIGlzSW50MzJTcGVjdWxhdGlvbih2YWx1ZSAmIH5TcGVj
T3RoZXIpOworfQorCiBpbmxpbmUgYm9vbCBpc0RvdWJsZVJlYWxTcGVjdWxhdGlvbihTcGVjdWxh
dGVkVHlwZSB2YWx1ZSkKIHsKICAgICByZXR1cm4gdmFsdWUgPT0gU3BlY0RvdWJsZVJlYWw7CkBA
IC0yMzgsMTEgKzI0OCwyMSBAQCBpbmxpbmUgYm9vbCBpc0RvdWJsZVNwZWN1bGF0aW9uKFNwZWN1
bGF0CiAgICAgcmV0dXJuICEhdmFsdWUgJiYgKHZhbHVlICYgU3BlY0RvdWJsZSkgPT0gdmFsdWU7
CiB9CiAKK2lubGluZSBib29sIGlzRG91YmxlU3BlY3VsYXRpb25Gb3JBcml0aG1ldGljKFNwZWN1
bGF0ZWRUeXBlIHZhbHVlKQoreworICAgIHJldHVybiAhISh2YWx1ZSAmIFNwZWNEb3VibGUpOwor
fQorCiBpbmxpbmUgYm9vbCBpc051bWJlclNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVl
KQogewogICAgIHJldHVybiAhISh2YWx1ZSAmIFNwZWNOdW1iZXIpICYmICEodmFsdWUgJiB+U3Bl
Y051bWJlcik7CiB9CiAKK2lubGluZSBib29sIGlzTnVtYmVyU3BlY3VsYXRpb25FeHBlY3RpbmdE
ZWZpbmVkKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQoreworICAgIHJldHVybiBpc051bWJlclNwZWN1
bGF0aW9uKHZhbHVlICYgflNwZWNPdGhlcik7Cit9CisKIGlubGluZSBib29sIGlzQm9vbGVhblNw
ZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQogewogICAgIHJldHVybiB2YWx1ZSA9PSBT
cGVjQm9vbGVhbjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RT
dGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0
cmFjdFN0YXRlLmNwcAkocmV2aXNpb24gMTMzNjg1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQ4LDcgKzQ0OCw3
IEBAIGJvb2wgQWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZSh1bnNpZ25lZCBpbmQKICAgICAgICAgICAg
IGZvck5vZGUobm9kZUluZGV4KS5zZXQoU3BlY0ludDMyKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9Ci0gICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVOdW1iZXIobV9ncmFw
aFtub2RlLmNoaWxkMSgpXSwgbV9ncmFwaFtub2RlLmNoaWxkMigpXSkpIHsKKyAgICAgICAgaWYg
KE5vZGU6OnNob3VsZFNwZWN1bGF0ZU51bWJlckV4cGVjdGluZ0RlZmluZWQobV9ncmFwaFtub2Rl
LmNoaWxkMSgpXSwgbV9ncmFwaFtub2RlLmNoaWxkMigpXSkpIHsKICAgICAgICAgICAgIHNwZWN1
bGF0ZU51bWJlckJpbmFyeShub2RlKTsKICAgICAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5z
ZXQoU3BlY0RvdWJsZSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTU2MCw3ICs1NjAsNyBAQCBi
b29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGUodW5zaWduZWQgaW5kCiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgaWYgKE5vZGU6OnNob3Vs
ZFNwZWN1bGF0ZUludGVnZXIoCisgICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVJbnRl
Z2VyRm9yQXJpdGhtZXRpYygKICAgICAgICAgICAgICAgICBtX2dyYXBoW25vZGUuY2hpbGQxKCld
LCBtX2dyYXBoW25vZGUuY2hpbGQyKCldKQogICAgICAgICAgICAgJiYgbm9kZS5jYW5TcGVjdWxh
dGVJbnRlZ2VyKCkpIHsKICAgICAgICAgICAgIHNwZWN1bGF0ZUludDMyQmluYXJ5KG5vZGUsIHRy
dWUpOyAvLyBmb3JjaW5nIGNhbi1leGl0LCB3aGljaCBpcyBhIGJpdCBvbiB0aGUgY29uc2VydmF0
aXZlIHNpZGUuCkBAIC01ODAsNyArNTgwLDcgQEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpleGVjdXRl
KHVuc2lnbmVkIGluZAogICAgICAgICAgICAgbm9kZS5zZXRDYW5FeGl0KGZhbHNlKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGlmIChtX2dyYXBoW25vZGUuY2hpbGQx
KCldLnNob3VsZFNwZWN1bGF0ZUludGVnZXIoKQorICAgICAgICBpZiAobV9ncmFwaFtub2RlLmNo
aWxkMSgpXS5zaG91bGRTcGVjdWxhdGVJbnRlZ2VyRm9yQXJpdGhtZXRpYygpCiAgICAgICAgICAg
ICAmJiBub2RlLmNhblNwZWN1bGF0ZUludGVnZXIoKSkgewogICAgICAgICAgICAgc3BlY3VsYXRl
SW50MzJVbmFyeShub2RlLCB0cnVlKTsKICAgICAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5z
ZXQoU3BlY0ludDMyKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQ
aGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1
cFBoYXNlLmNwcAkocmV2aXNpb24gMTMzNjg1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdGaXh1cFBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM2LDcgKzIzNiw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIGNhc2UgVmFsdWVBZGQ6IHsKICAgICAgICAgICAgIGlmIChtX2dyYXBo
LmFkZFNob3VsZFNwZWN1bGF0ZUludGVnZXIobm9kZSkpCiAgICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICBpZiAoIU5vZGU6OnNob3VsZFNwZWN1bGF0ZU51bWJlcihtX2dyYXBoW25v
ZGUuY2hpbGQxKCldLCBtX2dyYXBoW25vZGUuY2hpbGQyKCldKSkKKyAgICAgICAgICAgIGlmICgh
Tm9kZTo6c2hvdWxkU3BlY3VsYXRlTnVtYmVyRXhwZWN0aW5nRGVmaW5lZChtX2dyYXBoW25vZGUu
Y2hpbGQxKCldLCBtX2dyYXBoW25vZGUuY2hpbGQyKCldKSkKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIGZpeERvdWJsZUVkZ2UoMCk7CiAgICAgICAgICAgICBmaXhEb3VibGVF
ZGdlKDEpOwpAQCAtMjYyLDcgKzI2Miw4IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgQXJpdGhN
aW46CiAgICAgICAgIGNhc2UgQXJpdGhNYXg6CiAgICAgICAgIGNhc2UgQXJpdGhNb2Q6IHsKLSAg
ICAgICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVJbnRlZ2VyKG1fZ3JhcGhbbm9kZS5j
aGlsZDEoKV0sIG1fZ3JhcGhbbm9kZS5jaGlsZDIoKV0pCisgICAgICAgICAgICBpZiAoTm9kZTo6
c2hvdWxkU3BlY3VsYXRlSW50ZWdlckZvckFyaXRobWV0aWMoCisgICAgICAgICAgICAgICAgICAg
IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0sIG1fZ3JhcGhbbm9kZS5jaGlsZDIoKV0pCiAgICAgICAg
ICAgICAgICAgJiYgbm9kZS5jYW5TcGVjdWxhdGVJbnRlZ2VyKCkpCiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICBmaXhEb3VibGVFZGdlKDApOwpAQCAtMjc5LDcgKzI4MCw4IEBA
IHByaXZhdGU6CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIEFyaXRoRGl2OiB7Ci0gICAgICAg
ICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlSW50ZWdlcihtX2dyYXBoW25vZGUuY2hpbGQx
KCldLCBtX2dyYXBoW25vZGUuY2hpbGQyKCldKQorICAgICAgICAgICAgaWYgKE5vZGU6OnNob3Vs
ZFNwZWN1bGF0ZUludGVnZXJGb3JBcml0aG1ldGljKAorICAgICAgICAgICAgICAgICAgICBtX2dy
YXBoW25vZGUuY2hpbGQxKCldLCBtX2dyYXBoW25vZGUuY2hpbGQyKCldKQogICAgICAgICAgICAg
ICAgICYmIG5vZGUuY2FuU3BlY3VsYXRlSW50ZWdlcigpKSB7CiAgICAgICAgICAgICAgICAgaWYg
KGlzWDg2KCkpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMzA3LDcgKzMwOSw3IEBA
IHByaXZhdGU6CiAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNlIEFyaXRoQWJz
OiB7Ci0gICAgICAgICAgICBpZiAobV9ncmFwaFtub2RlLmNoaWxkMSgpXS5zaG91bGRTcGVjdWxh
dGVJbnRlZ2VyKCkKKyAgICAgICAgICAgIGlmIChtX2dyYXBoW25vZGUuY2hpbGQxKCldLnNob3Vs
ZFNwZWN1bGF0ZUludGVnZXJGb3JBcml0aG1ldGljKCkKICAgICAgICAgICAgICAgICAmJiBub2Rl
LmNhblNwZWN1bGF0ZUludGVnZXIoKSkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIGZpeERvdWJsZUVkZ2UoMCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0dyYXBoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFw
aC5oCShyZXZpc2lvbiAxMzM2ODUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dy
YXBoLmgJKHdvcmtpbmcgY29weSkKQEAgLTIyMCw3ICsyMjAsNyBAQCBwdWJsaWM6CiAgICAgICAg
IGlmIChyaWdodC5oYXNDb25zdGFudCgpKQogICAgICAgICAgICAgcmV0dXJuIGFkZEltbWVkaWF0
ZVNob3VsZFNwZWN1bGF0ZUludGVnZXIoYWRkLCBsZWZ0LCByaWdodCk7CiAgICAgICAgIAotICAg
ICAgICByZXR1cm4gTm9kZTo6c2hvdWxkU3BlY3VsYXRlSW50ZWdlcihsZWZ0LCByaWdodCkgJiYg
YWRkLmNhblNwZWN1bGF0ZUludGVnZXIoKTsKKyAgICAgICAgcmV0dXJuIE5vZGU6OnNob3VsZFNw
ZWN1bGF0ZUludGVnZXJFeHBlY3RpbmdEZWZpbmVkKGxlZnQsIHJpZ2h0KSAmJiBhZGQuY2FuU3Bl
Y3VsYXRlSW50ZWdlcigpOwogICAgIH0KICAgICAKICAgICBib29sIG11bFNob3VsZFNwZWN1bGF0
ZUludGVnZXIoTm9kZSYgbXVsKQpAQCAtMjM1LDEzICsyMzUsMTMgQEAgcHVibGljOgogICAgICAg
ICBpZiAocmlnaHQuaGFzQ29uc3RhbnQoKSkKICAgICAgICAgICAgIHJldHVybiBtdWxJbW1lZGlh
dGVTaG91bGRTcGVjdWxhdGVJbnRlZ2VyKG11bCwgbGVmdCwgcmlnaHQpOwogICAgICAgICAKLSAg
ICAgICAgcmV0dXJuIE5vZGU6OnNob3VsZFNwZWN1bGF0ZUludGVnZXIobGVmdCwgcmlnaHQpICYm
IG11bC5jYW5TcGVjdWxhdGVJbnRlZ2VyKCkgJiYgIW5vZGVNYXlPdmVyZmxvdyhtdWwuYXJpdGhO
b2RlRmxhZ3MoKSk7CisgICAgICAgIHJldHVybiBOb2RlOjpzaG91bGRTcGVjdWxhdGVJbnRlZ2Vy
Rm9yQXJpdGhtZXRpYyhsZWZ0LCByaWdodCkgJiYgbXVsLmNhblNwZWN1bGF0ZUludGVnZXIoKSAm
JiAhbm9kZU1heU92ZXJmbG93KG11bC5hcml0aE5vZGVGbGFncygpKTsKICAgICB9CiAgICAgCiAg
ICAgYm9vbCBuZWdhdGVTaG91bGRTcGVjdWxhdGVJbnRlZ2VyKE5vZGUmIG5lZ2F0ZSkKICAgICB7
CiAgICAgICAgIEFTU0VSVChuZWdhdGUub3AoKSA9PSBBcml0aE5lZ2F0ZSk7Ci0gICAgICAgIHJl
dHVybiBhdChuZWdhdGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1bGF0ZUludGVnZXIoKSAmJiBuZWdh
dGUuY2FuU3BlY3VsYXRlSW50ZWdlcigpOworICAgICAgICByZXR1cm4gYXQobmVnYXRlLmNoaWxk
MSgpKS5zaG91bGRTcGVjdWxhdGVJbnRlZ2VyRm9yQXJpdGhtZXRpYygpICYmIG5lZ2F0ZS5jYW5T
cGVjdWxhdGVJbnRlZ2VyKCk7CiAgICAgfQogICAgIAogICAgIGJvb2wgYWRkU2hvdWxkU3BlY3Vs
YXRlSW50ZWdlcihOb2RlSW5kZXggbm9kZUluZGV4KQpAQCAtNzEyLDcgKzcxMiw3IEBAIHByaXZh
dGU6CiAgICAgICAgIGlmICghaW1tZWRpYXRlVmFsdWUuaXNOdW1iZXIoKSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgCi0gICAgICAgIGlmICghdmFyaWFibGUuc2hvdWxkU3Bl
Y3VsYXRlSW50ZWdlcigpKQorICAgICAgICBpZiAoIXZhcmlhYmxlLnNob3VsZFNwZWN1bGF0ZUlu
dGVnZXJFeHBlY3RpbmdEZWZpbmVkKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgIAogICAgICAgICBpZiAoaW1tZWRpYXRlVmFsdWUuaXNJbnQzMigpKQpAQCAtNzM0LDcgKzcz
NCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGlmICghaW1tZWRpYXRlVmFsdWUuaXNJbnQzMigpKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAKLSAgICAgICAgaWYgKCF2YXJpYWJs
ZS5zaG91bGRTcGVjdWxhdGVJbnRlZ2VyKCkpCisgICAgICAgIGlmICghdmFyaWFibGUuc2hvdWxk
U3BlY3VsYXRlSW50ZWdlckZvckFyaXRobWV0aWMoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgCiAgICAgICAgIGludDMyX3QgaW50SW1tZWRpYXRlID0gaW1tZWRpYXRlVmFs
dWUuYXNJbnQzMigpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHJldmlz
aW9uIDEzMzY4NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC05MjIsMTYgKzkyMiwzNiBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgICAgIHJl
dHVybiBpc0ludDMyU3BlY3VsYXRpb24ocHJlZGljdGlvbigpKTsKICAgICB9CiAgICAgCisgICAg
Ym9vbCBzaG91bGRTcGVjdWxhdGVJbnRlZ2VyRm9yQXJpdGhtZXRpYygpCisgICAgeworICAgICAg
ICByZXR1cm4gaXNJbnQzMlNwZWN1bGF0aW9uRm9yQXJpdGhtZXRpYyhwcmVkaWN0aW9uKCkpOwor
ICAgIH0KKyAgICAKKyAgICBib29sIHNob3VsZFNwZWN1bGF0ZUludGVnZXJFeHBlY3RpbmdEZWZp
bmVkKCkKKyAgICB7CisgICAgICAgIHJldHVybiBpc0ludDMyU3BlY3VsYXRpb25FeHBlY3RpbmdE
ZWZpbmVkKHByZWRpY3Rpb24oKSk7CisgICAgfQorICAgIAogICAgIGJvb2wgc2hvdWxkU3BlY3Vs
YXRlRG91YmxlKCkKICAgICB7CiAgICAgICAgIHJldHVybiBpc0RvdWJsZVNwZWN1bGF0aW9uKHBy
ZWRpY3Rpb24oKSk7CiAgICAgfQogICAgIAorICAgIGJvb2wgc2hvdWxkU3BlY3VsYXRlRG91Ymxl
Rm9yQXJpdGhtZXRpYygpCisgICAgeworICAgICAgICByZXR1cm4gaXNEb3VibGVTcGVjdWxhdGlv
bkZvckFyaXRobWV0aWMocHJlZGljdGlvbigpKTsKKyAgICB9CisgICAgCiAgICAgYm9vbCBzaG91
bGRTcGVjdWxhdGVOdW1iZXIoKQogICAgIHsKICAgICAgICAgcmV0dXJuIGlzTnVtYmVyU3BlY3Vs
YXRpb24ocHJlZGljdGlvbigpKTsKICAgICB9CiAgICAgCisgICAgYm9vbCBzaG91bGRTcGVjdWxh
dGVOdW1iZXJFeHBlY3RpbmdEZWZpbmVkKCkKKyAgICB7CisgICAgICAgIHJldHVybiBpc051bWJl
clNwZWN1bGF0aW9uRXhwZWN0aW5nRGVmaW5lZChwcmVkaWN0aW9uKCkpOworICAgIH0KKyAgICAK
ICAgICBib29sIHNob3VsZFNwZWN1bGF0ZUJvb2xlYW4oKQogICAgIHsKICAgICAgICAgcmV0dXJu
IGlzQm9vbGVhblNwZWN1bGF0aW9uKHByZWRpY3Rpb24oKSk7CkBAIC0xMDM3LDExICsxMDU3LDMx
IEBAIHN0cnVjdCBOb2RlIHsKICAgICAgICAgcmV0dXJuIG9wMS5zaG91bGRTcGVjdWxhdGVJbnRl
Z2VyKCkgJiYgb3AyLnNob3VsZFNwZWN1bGF0ZUludGVnZXIoKTsKICAgICB9CiAgICAgCisgICAg
c3RhdGljIGJvb2wgc2hvdWxkU3BlY3VsYXRlSW50ZWdlckZvckFyaXRobWV0aWMoTm9kZSYgb3Ax
LCBOb2RlJiBvcDIpCisgICAgeworICAgICAgICByZXR1cm4gb3AxLnNob3VsZFNwZWN1bGF0ZUlu
dGVnZXJGb3JBcml0aG1ldGljKCkgJiYgb3AyLnNob3VsZFNwZWN1bGF0ZUludGVnZXJGb3JBcml0
aG1ldGljKCk7CisgICAgfQorICAgIAorICAgIHN0YXRpYyBib29sIHNob3VsZFNwZWN1bGF0ZUlu
dGVnZXJFeHBlY3RpbmdEZWZpbmVkKE5vZGUmIG9wMSwgTm9kZSYgb3AyKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIG9wMS5zaG91bGRTcGVjdWxhdGVJbnRlZ2VyRXhwZWN0aW5nRGVmaW5lZCgpICYm
IG9wMi5zaG91bGRTcGVjdWxhdGVJbnRlZ2VyRXhwZWN0aW5nRGVmaW5lZCgpOworICAgIH0KKyAg
ICAKKyAgICBzdGF0aWMgYm9vbCBzaG91bGRTcGVjdWxhdGVEb3VibGVGb3JBcml0aG1ldGljKE5v
ZGUmIG9wMSwgTm9kZSYgb3AyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG9wMS5zaG91bGRTcGVj
dWxhdGVEb3VibGVGb3JBcml0aG1ldGljKCkgJiYgb3AyLnNob3VsZFNwZWN1bGF0ZURvdWJsZUZv
ckFyaXRobWV0aWMoKTsKKyAgICB9CisgICAgCiAgICAgc3RhdGljIGJvb2wgc2hvdWxkU3BlY3Vs
YXRlTnVtYmVyKE5vZGUmIG9wMSwgTm9kZSYgb3AyKQogICAgIHsKICAgICAgICAgcmV0dXJuIG9w
MS5zaG91bGRTcGVjdWxhdGVOdW1iZXIoKSAmJiBvcDIuc2hvdWxkU3BlY3VsYXRlTnVtYmVyKCk7
CiAgICAgfQogICAgIAorICAgIHN0YXRpYyBib29sIHNob3VsZFNwZWN1bGF0ZU51bWJlckV4cGVj
dGluZ0RlZmluZWQoTm9kZSYgb3AxLCBOb2RlJiBvcDIpCisgICAgeworICAgICAgICByZXR1cm4g
b3AxLnNob3VsZFNwZWN1bGF0ZU51bWJlckV4cGVjdGluZ0RlZmluZWQoKSAmJiBvcDIuc2hvdWxk
U3BlY3VsYXRlTnVtYmVyRXhwZWN0aW5nRGVmaW5lZCgpOworICAgIH0KKyAgICAKICAgICBzdGF0
aWMgYm9vbCBzaG91bGRTcGVjdWxhdGVGaW5hbE9iamVjdChOb2RlJiBvcDEsIE5vZGUmIG9wMikK
ICAgICB7CiAgICAgICAgIHJldHVybiBvcDEuc2hvdWxkU3BlY3VsYXRlRmluYWxPYmplY3QoKSAm
JiBvcDIuc2hvdWxkU3BlY3VsYXRlRmluYWxPYmplY3QoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhh
c2UuY3BwCShyZXZpc2lvbiAxMzM2ODUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjI1LDI0
ICsyMjUsNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAg
ICAgICBjYXNlIEFyaXRoTW9kOiB7Ci0gICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSBsZWZ0ID0g
bV9ncmFwaFtub2RlLmNoaWxkMSgpXS5wcmVkaWN0aW9uKCk7Ci0gICAgICAgICAgICBTcGVjdWxh
dGVkVHlwZSByaWdodCA9IG1fZ3JhcGhbbm9kZS5jaGlsZDIoKV0ucHJlZGljdGlvbigpOwotICAg
ICAgICAgICAgCi0gICAgICAgICAgICBpZiAobGVmdCAmJiByaWdodCkgewotICAgICAgICAgICAg
ICAgIGlmIChpc0ludDMyU3BlY3VsYXRpb24obWVyZ2VTcGVjdWxhdGlvbnMobGVmdCwgcmlnaHQp
KQotICAgICAgICAgICAgICAgICAgICAmJiBub2RlQ2FuU3BlY3VsYXRlSW50ZWdlcihub2RlLmFy
aXRoTm9kZUZsYWdzKCkpKQotICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJl
ZGljdGlvbihTcGVjSW50MzIpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAg
ICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY0RvdWJsZSk7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGZsYWdzIHw9IE5vZGVVc2VkQXNWYWx1ZTsK
LSAgICAgICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFtub2RlLmNoaWxkMSgpXS5tZXJnZUZsYWdz
KGZsYWdzKTsKLSAgICAgICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFtub2RlLmNoaWxkMigpXS5t
ZXJnZUZsYWdzKGZsYWdzKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAg
ICAgICAKICAgICAgICAgY2FzZSBVSW50MzJUb051bWJlcjogewogICAgICAgICAgICAgaWYgKG5v
ZGVDYW5TcGVjdWxhdGVJbnRlZ2VyKG5vZGUuYXJpdGhOb2RlRmxhZ3MoKSkpCiAgICAgICAgICAg
ICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY0ludDMyKTsKQEAgLTI1OCw3ICsy
NDAsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcmlnaHQgPSBtX2dy
YXBoW25vZGUuY2hpbGQyKCldLnByZWRpY3Rpb24oKTsKICAgICAgICAgICAgIAogICAgICAgICAg
ICAgaWYgKGxlZnQgJiYgcmlnaHQpIHsKLSAgICAgICAgICAgICAgICBpZiAoaXNOdW1iZXJTcGVj
dWxhdGlvbihsZWZ0KSAmJiBpc051bWJlclNwZWN1bGF0aW9uKHJpZ2h0KSkgeworICAgICAgICAg
ICAgICAgIGlmIChpc051bWJlclNwZWN1bGF0aW9uRXhwZWN0aW5nRGVmaW5lZChsZWZ0KSAmJiBp
c051bWJlclNwZWN1bGF0aW9uRXhwZWN0aW5nRGVmaW5lZChyaWdodCkpIHsKICAgICAgICAgICAg
ICAgICAgICAgaWYgKG1fZ3JhcGguYWRkU2hvdWxkU3BlY3VsYXRlSW50ZWdlcihub2RlKSkKICAg
ICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNJbnQz
Mik7CiAgICAgICAgICAgICAgICAgICAgIGVsc2UKQEAgLTMzMyw3ICszMTUsOCBAQCBwcml2YXRl
OgogICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcmlnaHQgPSBtX2dyYXBoW25vZGUuY2hpbGQy
KCldLnByZWRpY3Rpb24oKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKGxlZnQgJiYg
cmlnaHQpIHsKLSAgICAgICAgICAgICAgICBpZiAoaXNJbnQzMlNwZWN1bGF0aW9uKG1lcmdlU3Bl
Y3VsYXRpb25zKGxlZnQsIHJpZ2h0KSkKKyAgICAgICAgICAgICAgICBpZiAoTm9kZTo6c2hvdWxk
U3BlY3VsYXRlSW50ZWdlckZvckFyaXRobWV0aWMoCisgICAgICAgICAgICAgICAgICAgICAgICBt
X2dyYXBoW25vZGUuY2hpbGQxKCldLCBtX2dyYXBoW25vZGUuY2hpbGQyKCldKQogICAgICAgICAg
ICAgICAgICAgICAmJiBub2RlQ2FuU3BlY3VsYXRlSW50ZWdlcihub2RlLmFyaXRoTm9kZUZsYWdz
KCkpKQogICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVj
SW50MzIpOwogICAgICAgICAgICAgICAgIGVsc2UKQEAgLTM3Myw3ICszNTYsOCBAQCBwcml2YXRl
OgogICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcmlnaHQgPSBtX2dyYXBoW25vZGUuY2hpbGQy
KCldLnByZWRpY3Rpb24oKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKGxlZnQgJiYg
cmlnaHQpIHsKLSAgICAgICAgICAgICAgICBpZiAoaXNJbnQzMlNwZWN1bGF0aW9uKG1lcmdlU3Bl
Y3VsYXRpb25zKGxlZnQsIHJpZ2h0KSkKKyAgICAgICAgICAgICAgICBpZiAoTm9kZTo6c2hvdWxk
U3BlY3VsYXRlSW50ZWdlckZvckFyaXRobWV0aWMoCisgICAgICAgICAgICAgICAgICAgICAgICBt
X2dyYXBoW25vZGUuY2hpbGQxKCldLCBtX2dyYXBoW25vZGUuY2hpbGQyKCldKQogICAgICAgICAg
ICAgICAgICAgICAmJiBub2RlQ2FuU3BlY3VsYXRlSW50ZWdlcihub2RlLmFyaXRoTm9kZUZsYWdz
KCkpKQogICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVj
SW50MzIpOwogICAgICAgICAgICAgICAgIGVsc2UKQEAgLTM4Miw3ICszNjYsNyBAQCBwcml2YXRl
OgogCiAgICAgICAgICAgICAvLyBBcyBzb29uIGFzIGEgbXVsdGlwbHkgaGFwcGVucywgd2UgY2Fu
IGVhc2lseSBlbmQgdXAgaW4gdGhlIHBhcnQKICAgICAgICAgICAgIC8vIG9mIHRoZSBkb3VibGUg
ZG9tYWluIHdoZXJlIHRoZSBwb2ludCBhdCB3aGljaCB5b3UgZG8gdHJ1bmNhdGlvbgotICAgICAg
ICAgICAgLy8gY2FuIGNoYW5nZSB0aGUgb3V0Y29tZS4gU28sIEFyaXRoTXVsIGFsd2F5cyBjaGVj
a3MgZm9yIG92ZXJmbG93CisgICAgICAgICAgICAvLyBjYW4gY2hhbmdlIHRoZSBvdXRjb21lLiBT
bywgQXJpdGhEaXYgYWx3YXlzIGNoZWNrcyBmb3Igb3ZlcmZsb3cKICAgICAgICAgICAgIC8vIG5v
IG1hdHRlciB3aGF0LCBhbmQgYWx3YXlzIGZvcmNlcyBpdHMgaW5wdXRzIHRvIGNoZWNrIGFzIHdl
bGwuCiAgICAgICAgICAgICAKICAgICAgICAgICAgIGZsYWdzIHw9IE5vZGVVc2VkQXNOdW1iZXIg
fCBOb2RlTmVlZHNOZWdaZXJvOwpAQCAtMzkxLDYgKzM3NSwyNSBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIAorICAgICAgICBjYXNlIEFyaXRo
TW9kOiB7CisgICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSBsZWZ0ID0gbV9ncmFwaFtub2RlLmNo
aWxkMSgpXS5wcmVkaWN0aW9uKCk7CisgICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSByaWdodCA9
IG1fZ3JhcGhbbm9kZS5jaGlsZDIoKV0ucHJlZGljdGlvbigpOworICAgICAgICAgICAgCisgICAg
ICAgICAgICBpZiAobGVmdCAmJiByaWdodCkgeworICAgICAgICAgICAgICAgIGlmIChOb2RlOjpz
aG91bGRTcGVjdWxhdGVJbnRlZ2VyRm9yQXJpdGhtZXRpYygKKyAgICAgICAgICAgICAgICAgICAg
ICAgIG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0sIG1fZ3JhcGhbbm9kZS5jaGlsZDIoKV0pCisgICAg
ICAgICAgICAgICAgICAgICYmIG5vZGVDYW5TcGVjdWxhdGVJbnRlZ2VyKG5vZGUuYXJpdGhOb2Rl
RmxhZ3MoKSkpCisgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9u
KFNwZWNJbnQzMik7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBj
aGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjRG91YmxlKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIAorICAgICAgICAgICAgZmxhZ3MgfD0gTm9kZVVzZWRBc1ZhbHVlOworICAgICAg
ICAgICAgY2hhbmdlZCB8PSBtX2dyYXBoW25vZGUuY2hpbGQxKCldLm1lcmdlRmxhZ3MoZmxhZ3Mp
OworICAgICAgICAgICAgY2hhbmdlZCB8PSBtX2dyYXBoW25vZGUuY2hpbGQyKCldLm1lcmdlRmxh
Z3MoZmxhZ3MpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgICAgIAog
ICAgICAgICBjYXNlIEFyaXRoU3FydDogewogICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVk
aWN0aW9uKFNwZWNEb3VibGUpOwogICAgICAgICAgICAgY2hhbmdlZCB8PSBtX2dyYXBoW25vZGUu
Y2hpbGQxKCldLm1lcmdlRmxhZ3MoZmxhZ3MgfCBOb2RlVXNlZEFzVmFsdWUpOwpAQCAtMzk5LDEw
ICs0MDIsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIAogICAgICAgICBjYXNlIEFyaXRoQWJz
OiB7CiAgICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSBjaGlsZCA9IG1fZ3JhcGhbbm9kZS5jaGls
ZDEoKV0ucHJlZGljdGlvbigpOwotICAgICAgICAgICAgaWYgKG5vZGVDYW5TcGVjdWxhdGVJbnRl
Z2VyKG5vZGUuYXJpdGhOb2RlRmxhZ3MoKSkpCi0gICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBt
ZXJnZVByZWRpY3Rpb24oY2hpbGQpOworICAgICAgICAgICAgaWYgKGlzSW50MzJTcGVjdWxhdGlv
bkZvckFyaXRobWV0aWMoY2hpbGQpCisgICAgICAgICAgICAgICAgJiYgbm9kZUNhblNwZWN1bGF0
ZUludGVnZXIobm9kZS5hcml0aE5vZGVGbGFncygpKSkKKyAgICAgICAgICAgICAgICBjaGFuZ2Vk
IHw9IG1lcmdlUHJlZGljdGlvbihTcGVjSW50MzIpOwogICAgICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgICAgIGNoYW5nZWQgfD0gc2V0UHJlZGljdGlvbihzcGVjdWxhdGVkRG91YmxlVHlwZUZv
clByZWRpY3Rpb24oY2hpbGQpKTsKKyAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJl
ZGljdGlvbihzcGVjdWxhdGVkRG91YmxlVHlwZUZvclByZWRpY3Rpb24oY2hpbGQpKTsKIAogICAg
ICAgICAgICAgZmxhZ3MgJj0gfk5vZGVOZWVkc05lZ1plcm87CiAgICAgICAgICAgICBjaGFuZ2Vk
IHw9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ubWVyZ2VGbGFncyhmbGFncyk7CkBAIC03NzYsNyAr
NzgwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBEb3Vi
bGVCYWxsb3QgYmFsbG90OwogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGlmIChp
c051bWJlclNwZWN1bGF0aW9uKGxlZnQpICYmIGlzTnVtYmVyU3BlY3VsYXRpb24ocmlnaHQpCisg
ICAgICAgICAgICAgICAgaWYgKGlzTnVtYmVyU3BlY3VsYXRpb25FeHBlY3RpbmdEZWZpbmVkKGxl
ZnQpICYmIGlzTnVtYmVyU3BlY3VsYXRpb25FeHBlY3RpbmdEZWZpbmVkKHJpZ2h0KQogICAgICAg
ICAgICAgICAgICAgICAmJiAhbV9ncmFwaC5hZGRTaG91bGRTcGVjdWxhdGVJbnRlZ2VyKG5vZGUp
KQogICAgICAgICAgICAgICAgICAgICBiYWxsb3QgPSBWb3RlRG91YmxlOwogICAgICAgICAgICAg
ICAgIGVsc2UKQEAgLTgxNCw3ICs4MTgsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIERv
dWJsZUJhbGxvdCBiYWxsb3Q7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgaWYg
KGlzTnVtYmVyU3BlY3VsYXRpb24obGVmdCkgJiYgaXNOdW1iZXJTcGVjdWxhdGlvbihyaWdodCkK
LSAgICAgICAgICAgICAgICAgICAgJiYgIShOb2RlOjpzaG91bGRTcGVjdWxhdGVJbnRlZ2VyKG1f
Z3JhcGhbbm9kZS5jaGlsZDEoKV0sIG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0pCisgICAgICAgICAg
ICAgICAgICAgICYmICEoTm9kZTo6c2hvdWxkU3BlY3VsYXRlSW50ZWdlckZvckFyaXRobWV0aWMo
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0sIG1f
Z3JhcGhbbm9kZS5jaGlsZDEoKV0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgbm9kZS5j
YW5TcGVjdWxhdGVJbnRlZ2VyKCkpKQogICAgICAgICAgICAgICAgICAgICBiYWxsb3QgPSBWb3Rl
RG91YmxlOwogICAgICAgICAgICAgICAgIGVsc2UKQEAgLTgyNyw3ICs4MzIsNyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgY2FzZSBBcml0aEFiczoKICAgICAgICAg
ICAgICAgICBEb3VibGVCYWxsb3QgYmFsbG90OwotICAgICAgICAgICAgICAgIGlmICghKG1fZ3Jh
cGhbbm9kZS5jaGlsZDEoKV0uc2hvdWxkU3BlY3VsYXRlSW50ZWdlcigpCisgICAgICAgICAgICAg
ICAgaWYgKCEobV9ncmFwaFtub2RlLmNoaWxkMSgpXS5zaG91bGRTcGVjdWxhdGVJbnRlZ2VyRm9y
QXJpdGhtZXRpYygpCiAgICAgICAgICAgICAgICAgICAgICAgJiYgbm9kZS5jYW5TcGVjdWxhdGVJ
bnRlZ2VyKCkpKQogICAgICAgICAgICAgICAgICAgICBiYWxsb3QgPSBWb3RlRG91YmxlOwogICAg
ICAgICAgICAgICAgIGVsc2UKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkocmV2aXNpb24gMTMzNjg1KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjM2Niw3ICsyMzY2LDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZShOb2RlJiBub2RlKQogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgQXJpdGhEaXY6IHsKLSAg
ICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZUludGVnZXIoYXQobm9kZS5jaGlsZDEoKSks
IGF0KG5vZGUuY2hpbGQyKCkpKSAmJiBub2RlLmNhblNwZWN1bGF0ZUludGVnZXIoKSkgeworICAg
ICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlSW50ZWdlckZvckFyaXRobWV0aWMoCisgICAg
ICAgICAgICAgICAgYXQobm9kZS5jaGlsZDEoKSksIGF0KG5vZGUuY2hpbGQyKCkpKQorICAgICAg
ICAgICAgJiYgbm9kZS5jYW5TcGVjdWxhdGVJbnRlZ2VyKCkpIHsKICNpZiBDUFUoWDg2KQogICAg
ICAgICAgICAgY29tcGlsZUludGVnZXJBcml0aERpdkZvclg4Nihub2RlKTsKICNlbHNlIC8vIENQ
VShYODYpIC0+IHNvIG5vbi1YODYgY29kZSBmb2xsb3dzCkBAIC0yMzkzLDcgKzIzOTUsOCBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgfQogCiAgICAgY2Fz
ZSBBcml0aEFiczogewotICAgICAgICBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3Vs
YXRlSW50ZWdlcigpICYmIG5vZGUuY2FuU3BlY3VsYXRlSW50ZWdlcigpKSB7CisgICAgICAgIGlm
IChhdChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxhdGVJbnRlZ2VyRm9yQXJpdGhtZXRpYygp
CisgICAgICAgICAgICAmJiBub2RlLmNhblNwZWN1bGF0ZUludGVnZXIoKSkgewogICAgICAgICAg
ICAgU3BlY3VsYXRlSW50ZWdlck9wZXJhbmQgb3AxKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwogICAg
ICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBvcDEpOwogICAgICAgICAgICAgR1BS
VGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CkBAIC0yNDE3LDcgKzI0MjAsOCBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIAogICAgIGNhc2UgQXJpdGhN
aW46CiAgICAgY2FzZSBBcml0aE1heDogewotICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3Vs
YXRlSW50ZWdlcihhdChub2RlLmNoaWxkMSgpKSwgYXQobm9kZS5jaGlsZDIoKSkpICYmIG5vZGUu
Y2FuU3BlY3VsYXRlSW50ZWdlcigpKSB7CisgICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxh
dGVJbnRlZ2VyRm9yQXJpdGhtZXRpYyhhdChub2RlLmNoaWxkMSgpKSwgYXQobm9kZS5jaGlsZDIo
KSkpCisgICAgICAgICAgICAmJiBub2RlLmNhblNwZWN1bGF0ZUludGVnZXIoKSkgewogICAgICAg
ICAgICAgU3BlY3VsYXRlU3RyaWN0SW50MzJPcGVyYW5kIG9wMSh0aGlzLCBub2RlLmNoaWxkMSgp
KTsKICAgICAgICAgICAgIFNwZWN1bGF0ZVN0cmljdEludDMyT3BlcmFuZCBvcDIodGhpcywgbm9k
ZS5jaGlsZDIoKSk7CiAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIG9wMSk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQ2NC5jcHAJKHJldmlzaW9uIDEzMzY4NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0MDMsNyArMjQwMyw5
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgYnJl
YWs7CiAKICAgICBjYXNlIEFyaXRoRGl2OiB7Ci0gICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVj
dWxhdGVJbnRlZ2VyKGF0KG5vZGUuY2hpbGQxKCkpLCBhdChub2RlLmNoaWxkMigpKSkgJiYgbm9k
ZS5jYW5TcGVjdWxhdGVJbnRlZ2VyKCkpIHsKKyAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1
bGF0ZUludGVnZXJGb3JBcml0aG1ldGljKAorICAgICAgICAgICAgICAgIGF0KG5vZGUuY2hpbGQx
KCkpLCBhdChub2RlLmNoaWxkMigpKSkKKyAgICAgICAgICAgICYmIG5vZGUuY2FuU3BlY3VsYXRl
SW50ZWdlcigpKSB7CiAgICAgICAgICAgICBjb21waWxlSW50ZWdlckFyaXRoRGl2Rm9yWDg2KG5v
ZGUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTI0MjYsNyArMjQyOCw4IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICB9CiAKICAgICBj
YXNlIEFyaXRoQWJzOiB7Ci0gICAgICAgIGlmIChhdChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVj
dWxhdGVJbnRlZ2VyKCkgJiYgbm9kZS5jYW5TcGVjdWxhdGVJbnRlZ2VyKCkpIHsKKyAgICAgICAg
aWYgKGF0KG5vZGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1bGF0ZUludGVnZXJGb3JBcml0aG1ldGlj
KCkKKyAgICAgICAgICAgICYmIG5vZGUuY2FuU3BlY3VsYXRlSW50ZWdlcigpKSB7CiAgICAgICAg
ICAgICBTcGVjdWxhdGVJbnRlZ2VyT3BlcmFuZCBvcDEodGhpcywgbm9kZS5jaGlsZDEoKSk7CiAg
ICAgICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwogICAgICAgICAgICAgR1BSVGVt
cG9yYXJ5IHNjcmF0Y2godGhpcyk7CkBAIC0yNDUwLDcgKzI0NTMsOCBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIAogICAgIGNhc2UgQXJpdGhNaW46
CiAgICAgY2FzZSBBcml0aE1heDogewotICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRl
SW50ZWdlcihhdChub2RlLmNoaWxkMSgpKSwgYXQobm9kZS5jaGlsZDIoKSkpICYmIG5vZGUuY2Fu
U3BlY3VsYXRlSW50ZWdlcigpKSB7CisgICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVJ
bnRlZ2VyRm9yQXJpdGhtZXRpYyhhdChub2RlLmNoaWxkMSgpKSwgYXQobm9kZS5jaGlsZDIoKSkp
CisgICAgICAgICAgICAmJiBub2RlLmNhblNwZWN1bGF0ZUludGVnZXIoKSkgewogICAgICAgICAg
ICAgU3BlY3VsYXRlU3RyaWN0SW50MzJPcGVyYW5kIG9wMSh0aGlzLCBub2RlLmNoaWxkMSgpKTsK
ICAgICAgICAgICAgIFNwZWN1bGF0ZVN0cmljdEludDMyT3BlcmFuZCBvcDIodGhpcywgbm9kZS5j
aGlsZDIoKSk7CiAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIG9wMSk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cAkocmV2aXNpb24gMTMzNjg1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3NjMsNyArMjc2Myw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBZGQoTm9kZSYgbm8KICAgICAgICAgcmV0dXJuOwogICAg
IH0KICAgICAgICAgCi0gICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZU51bWJlcihhdChub2Rl
LmNoaWxkMSgpKSwgYXQobm9kZS5jaGlsZDIoKSkpKSB7CisgICAgaWYgKE5vZGU6OnNob3VsZFNw
ZWN1bGF0ZU51bWJlckV4cGVjdGluZ0RlZmluZWQoYXQobm9kZS5jaGlsZDEoKSksIGF0KG5vZGUu
Y2hpbGQyKCkpKSkgewogICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIG9wMSh0aGlzLCBu
b2RlLmNoaWxkMSgpKTsKICAgICAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCBvcDIodGhpcywg
bm9kZS5jaGlsZDIoKSk7CiAgICAgICAgIEZQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgb3AxLCBv
cDIpOwpAQCAtMzAwMSw3ICszMDAxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUlu
dGVnZXJBcml0aAogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJpdGhNb2QoTm9kZSYg
bm9kZSkKIHsKLSAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlSW50ZWdlcihhdChub2RlLmNo
aWxkMSgpKSwgYXQobm9kZS5jaGlsZDIoKSkpCisgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0
ZUludGVnZXJGb3JBcml0aG1ldGljKGF0KG5vZGUuY2hpbGQxKCkpLCBhdChub2RlLmNoaWxkMigp
KSkKICAgICAgICAgJiYgbm9kZS5jYW5TcGVjdWxhdGVJbnRlZ2VyKCkpIHsKICAgICAgICAgY29t
cGlsZVNvZnRNb2R1bG8obm9kZSk7CiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcAkocmV2aXNpb24gMTMzNjg1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTA5MCwxOCArMTA5MCwyMCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9kaXYoSW5zdHJ1Y3Rp
b24qIGN1cnJlCiAgICAgLy8gYWNjZXNzKS4gU28gaWYgd2UgYXJlIERGRyBjb21waWxpbmcgYW55
dGhpbmcgaW4gdGhlIHByb2dyYW0sIHdlIHdhbnQgdGhpcyBjb2RlIHRvCiAgICAgLy8gZW5zdXJl
IHRoYXQgaXQgcHJvZHVjZXMgaW50ZWdlcnMgd2hlbmV2ZXIgcG9zc2libGUuCiAgICAgCi0gICAg
Ly8gRklYTUU6IFRoaXMgd2lsbCBmYWlsIHRvIGNvbnZlcnQgdG8gaW50ZWdlciBpZiB0aGUgcmVz
dWx0IGlzIHplcm8uIFdlIHNob3VsZAotICAgIC8vIGRpc3Rpbmd1aXNoIGJldHdlZW4gcG9zaXRp
dmUgemVybyBhbmQgbmVnYXRpdmUgemVybyBoZXJlLgotICAgIAogICAgIEp1bXBMaXN0IG5vdElu
dGVnZXI7CiAgICAgYnJhbmNoQ29udmVydERvdWJsZVRvSW50MzIoZnBSZWdUMCwgcmVnVDAsIG5v
dEludGVnZXIsIGZwUmVnVDEpOwogICAgIC8vIElmIHdlJ3ZlIGdvdCBhbiBpbnRlZ2VyLCB3ZSBt
aWdodCBhcyB3ZWxsIG1ha2UgdGhhdCB0aGUgcmVzdWx0IG9mIHRoZSBkaXZpc2lvbi4KICAgICBl
bWl0RmFzdEFyaXRoUmVUYWdJbW1lZGlhdGUocmVnVDAsIHJlZ1QwKTsKICAgICBKdW1wIGlzSW50
ZWdlciA9IGp1bXAoKTsKICAgICBub3RJbnRlZ2VyLmxpbmsodGhpcyk7Ci0gICAgYWRkMzIoVHJ1
c3RlZEltbTMyKDEpLCBBYnNvbHV0ZUFkZHJlc3MoJm1fY29kZUJsb2NrLT5hZGRTcGVjaWFsRmFz
dENhc2VQcm9maWxlKG1fYnl0ZWNvZGVPZmZzZXQpLT5tX2NvdW50ZXIpKTsKICAgICBtb3ZlRG91
YmxlVG82NChmcFJlZ1QwLCByZWdUMCk7CisgICAgSnVtcCBkb3VibGVaZXJvID0gYnJhbmNoVGVz
dDY0KFplcm8sIHJlZ1QwKTsKKyAgICBhZGQzMihUcnVzdGVkSW1tMzIoMSksIEFic29sdXRlQWRk
cmVzcygmbV9jb2RlQmxvY2stPmFkZFNwZWNpYWxGYXN0Q2FzZVByb2ZpbGUobV9ieXRlY29kZU9m
ZnNldCktPm1fY291bnRlcikpOwogICAgIHN1YjY0KHRhZ1R5cGVOdW1iZXJSZWdpc3RlciwgcmVn
VDApOworICAgIEp1bXAgdHJ1ZURvdWJsZSA9IGp1bXAoKTsKKyAgICBkb3VibGVaZXJvLmxpbmso
dGhpcyk7CisgICAgbW92ZSh0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIHJlZ1QwKTsKKyAgICB0cnVl
RG91YmxlLmxpbmsodGhpcyk7CiAgICAgaXNJbnRlZ2VyLmxpbmsodGhpcyk7CiAjZWxzZQogICAg
IC8vIERvdWJsZSByZXN1bHQuCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172740</attachid>
            <date>2012-11-07 02:00:36 -0800</date>
            <delta_ts>2012-11-07 13:02:31 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>fixspec.patch</filename>
            <type>text/plain</type>
            <size>24283</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTMzNzI5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU5IEBA
CisyMDEyLTExLTA3ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIHNob3VsZCBub3QgYXNzdW1lIHRoYXQgc29tZXRoaW5nIGlzIGEgZG91YmxlIGp1c3QgYmVj
YXVzZSBpdCBtaWdodCBiZSB1bmRlZmluZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwMTQzOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRoaXMgY2hhbmdlcyBhbGwgbm9uLWJpdG9wIGFyaXRobWV0aWMg
dG8gKGEpIHN0YXRpY2FsbHkgZXhwZWN0IHRoYXQgdmFyaWFibGVzIGFyZQorICAgICAgICBkZWZp
bmVkIHByaW9yIHRvIHVzZSBpbiBhcml0aG1ldGljIGFuZCAoYikgbm90IGZhbGwgb2ZmIGludG8g
ZG91YmxlIHBhdGhzIGp1c3QKKyAgICAgICAgYmVjYXVzZSBhIHZhbHVlIG1heSBub3QgYmUgYSBu
dW1iZXIuIFRoaXMgaXMgYWNjb21wbGlzaGVkIHdpdGggdHdvIG5ldyBub3Rpb25zIG9mCisgICAg
ICAgIHNwZWN1bGF0aW9uOgorICAgICAgICAKKyAgICAgICAgc2hvdWxkU3BlY3VsYXRlSW50ZWdl
ckV4cGVjdGluZ0RlZmluZWQ6IFNob3VsZCB3ZSBzcGVjdWxhdGUgdGhhdCB0aGUgdmFsdWUgaXMg
YW4KKyAgICAgICAgaW50ZWdlciBpZiB3ZSBpZ25vcmUgdW5kZWZpbmVkIChpLmUuIFNwZWNPdGhl
cikgcHJlZGljdGlvbnM/CisgICAgICAgIAorICAgICAgICBzaG91bGRTcGVjdWxhdGVJbnRlZ2Vy
Rm9yQXJpdGhtZXRpYzogU2hvdWxkIHdlIHNwZWN1bGF0ZSB0aGF0IHRoZSB2YWx1ZSBpcyBhbgor
ICAgICAgICBpbnRlZ2VyIGlmIHdlIGlnbm9yZSBub24tbnVtZXJpYyBwcmVkaWN0aW9ucz8KKyAg
ICAgICAgCisgICAgICAgIFRoaXMgaXMgYSB+Mnggc3BlZWQtdXAgb24gcHJvZ3JhbXMgdGhhdCBz
ZWVtIHRvIG91ciBwcmVkaWN0aW9uIHByb3BhZ2F0b3IgdG8gaGF2ZQorICAgICAgICBwYXRocyBp
biB3aGljaCBvdGhlcndpc2UgbnVtZXJpYyB2YXJpYWJsZXMgYXJlIHVuZGVmaW5lZC4KKworICAg
ICAgICAqIGJ5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmg6CisgICAgICAgIChKU0M6OmlzSW50MzJT
cGVjdWxhdGlvbkZvckFyaXRobWV0aWMpOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6
aXNJbnQzMlNwZWN1bGF0aW9uRXhwZWN0aW5nRGVmaW5lZCk6CisgICAgICAgIChKU0M6OmlzRG91
YmxlU3BlY3VsYXRpb25Gb3JBcml0aG1ldGljKToKKyAgICAgICAgKEpTQzo6aXNOdW1iZXJTcGVj
dWxhdGlvbkV4cGVjdGluZ0RlZmluZWQpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdFN0YXRl
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFN0YXRlOjpleGVjdXRlKToKKyAgICAg
ICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFz
ZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKiBkZmcvREZHR3JhcGguaDoKKyAgICAgICAgKEpTQzo6
REZHOjpHcmFwaDo6YWRkU2hvdWxkU3BlY3VsYXRlSW50ZWdlcik6CisgICAgICAgIChKU0M6OkRG
Rzo6R3JhcGg6Om11bFNob3VsZFNwZWN1bGF0ZUludGVnZXIpOgorICAgICAgICAoSlNDOjpERkc6
OkdyYXBoOjpuZWdhdGVTaG91bGRTcGVjdWxhdGVJbnRlZ2VyKToKKyAgICAgICAgKEpTQzo6REZH
OjpHcmFwaDo6YWRkSW1tZWRpYXRlU2hvdWxkU3BlY3VsYXRlSW50ZWdlcik6CisgICAgICAgIChK
U0M6OkRGRzo6R3JhcGg6Om11bEltbWVkaWF0ZVNob3VsZFNwZWN1bGF0ZUludGVnZXIpOgorICAg
ICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6c2hvdWxkU3Bl
Y3VsYXRlSW50ZWdlckZvckFyaXRobWV0aWMpOgorICAgICAgICAoTm9kZSk6CisgICAgICAgIChK
U0M6OkRGRzo6Tm9kZTo6c2hvdWxkU3BlY3VsYXRlSW50ZWdlckV4cGVjdGluZ0RlZmluZWQpOgor
ICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OnNob3VsZFNwZWN1bGF0ZURvdWJsZUZvckFyaXRobWV0
aWMpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OnNob3VsZFNwZWN1bGF0ZU51bWJlckV4cGVj
dGluZ0RlZmluZWQpOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFz
ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2U6OnBy
b3BhZ2F0ZSk6CisgICAgICAgIChKU0M6OkRGRzo6UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2U6
OmRvUm91bmRPZkRvdWJsZVZvdGluZyk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFkZCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aE1vZCk6CisgICAg
ICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVK
SVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgor
ICAgICAgICAqIGppdC9KSVRBcml0aG1ldGljLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX2Rpdik6CisKIDIwMTItMTEtMDYgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4K
IAogICAgICAgICBSZWR1Y2UgcGFyc2VyIG92ZXJoZWFkIGluIEpTQwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgJKHJldmlzaW9uIDEz
MzY4NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yMjgsNiArMjI4LDE2IEBAIGlubGluZSBib29sIGlzSW50MzJT
cGVjdWxhdGlvbihTcGVjdWxhdGUKICAgICByZXR1cm4gdmFsdWUgPT0gU3BlY0ludDMyOwogfQog
CitpbmxpbmUgYm9vbCBpc0ludDMyU3BlY3VsYXRpb25Gb3JBcml0aG1ldGljKFNwZWN1bGF0ZWRU
eXBlIHZhbHVlKQoreworICAgIHJldHVybiAhKHZhbHVlICYgU3BlY0RvdWJsZSk7Cit9CisKK2lu
bGluZSBib29sIGlzSW50MzJTcGVjdWxhdGlvbkV4cGVjdGluZ0RlZmluZWQoU3BlY3VsYXRlZFR5
cGUgdmFsdWUpCit7CisgICAgcmV0dXJuIGlzSW50MzJTcGVjdWxhdGlvbih2YWx1ZSAmIH5TcGVj
T3RoZXIpOworfQorCiBpbmxpbmUgYm9vbCBpc0RvdWJsZVJlYWxTcGVjdWxhdGlvbihTcGVjdWxh
dGVkVHlwZSB2YWx1ZSkKIHsKICAgICByZXR1cm4gdmFsdWUgPT0gU3BlY0RvdWJsZVJlYWw7CkBA
IC0yMzgsMTEgKzI0OCwyMSBAQCBpbmxpbmUgYm9vbCBpc0RvdWJsZVNwZWN1bGF0aW9uKFNwZWN1
bGF0CiAgICAgcmV0dXJuICEhdmFsdWUgJiYgKHZhbHVlICYgU3BlY0RvdWJsZSkgPT0gdmFsdWU7
CiB9CiAKK2lubGluZSBib29sIGlzRG91YmxlU3BlY3VsYXRpb25Gb3JBcml0aG1ldGljKFNwZWN1
bGF0ZWRUeXBlIHZhbHVlKQoreworICAgIHJldHVybiAhISh2YWx1ZSAmIFNwZWNEb3VibGUpOwor
fQorCiBpbmxpbmUgYm9vbCBpc051bWJlclNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVl
KQogewogICAgIHJldHVybiAhISh2YWx1ZSAmIFNwZWNOdW1iZXIpICYmICEodmFsdWUgJiB+U3Bl
Y051bWJlcik7CiB9CiAKK2lubGluZSBib29sIGlzTnVtYmVyU3BlY3VsYXRpb25FeHBlY3RpbmdE
ZWZpbmVkKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQoreworICAgIHJldHVybiBpc051bWJlclNwZWN1
bGF0aW9uKHZhbHVlICYgflNwZWNPdGhlcik7Cit9CisKIGlubGluZSBib29sIGlzQm9vbGVhblNw
ZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQogewogICAgIHJldHVybiB2YWx1ZSA9PSBT
cGVjQm9vbGVhbjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RT
dGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0
cmFjdFN0YXRlLmNwcAkocmV2aXNpb24gMTMzNjg1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQ4LDcgKzQ0OCw3
IEBAIGJvb2wgQWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZSh1bnNpZ25lZCBpbmQKICAgICAgICAgICAg
IGZvck5vZGUobm9kZUluZGV4KS5zZXQoU3BlY0ludDMyKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9Ci0gICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVOdW1iZXIobV9ncmFw
aFtub2RlLmNoaWxkMSgpXSwgbV9ncmFwaFtub2RlLmNoaWxkMigpXSkpIHsKKyAgICAgICAgaWYg
KE5vZGU6OnNob3VsZFNwZWN1bGF0ZU51bWJlckV4cGVjdGluZ0RlZmluZWQobV9ncmFwaFtub2Rl
LmNoaWxkMSgpXSwgbV9ncmFwaFtub2RlLmNoaWxkMigpXSkpIHsKICAgICAgICAgICAgIHNwZWN1
bGF0ZU51bWJlckJpbmFyeShub2RlKTsKICAgICAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5z
ZXQoU3BlY0RvdWJsZSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTU2MCw3ICs1NjAsNyBAQCBi
b29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGUodW5zaWduZWQgaW5kCiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgaWYgKE5vZGU6OnNob3Vs
ZFNwZWN1bGF0ZUludGVnZXIoCisgICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVJbnRl
Z2VyRm9yQXJpdGhtZXRpYygKICAgICAgICAgICAgICAgICBtX2dyYXBoW25vZGUuY2hpbGQxKCld
LCBtX2dyYXBoW25vZGUuY2hpbGQyKCldKQogICAgICAgICAgICAgJiYgbm9kZS5jYW5TcGVjdWxh
dGVJbnRlZ2VyKCkpIHsKICAgICAgICAgICAgIHNwZWN1bGF0ZUludDMyQmluYXJ5KG5vZGUsIHRy
dWUpOyAvLyBmb3JjaW5nIGNhbi1leGl0LCB3aGljaCBpcyBhIGJpdCBvbiB0aGUgY29uc2VydmF0
aXZlIHNpZGUuCkBAIC01ODAsNyArNTgwLDcgQEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpleGVjdXRl
KHVuc2lnbmVkIGluZAogICAgICAgICAgICAgbm9kZS5zZXRDYW5FeGl0KGZhbHNlKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGlmIChtX2dyYXBoW25vZGUuY2hpbGQx
KCldLnNob3VsZFNwZWN1bGF0ZUludGVnZXIoKQorICAgICAgICBpZiAobV9ncmFwaFtub2RlLmNo
aWxkMSgpXS5zaG91bGRTcGVjdWxhdGVJbnRlZ2VyRm9yQXJpdGhtZXRpYygpCiAgICAgICAgICAg
ICAmJiBub2RlLmNhblNwZWN1bGF0ZUludGVnZXIoKSkgewogICAgICAgICAgICAgc3BlY3VsYXRl
SW50MzJVbmFyeShub2RlLCB0cnVlKTsKICAgICAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5z
ZXQoU3BlY0ludDMyKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQ
aGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1
cFBoYXNlLmNwcAkocmV2aXNpb24gMTMzNjg1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdGaXh1cFBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM2LDcgKzIzNiw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIGNhc2UgVmFsdWVBZGQ6IHsKICAgICAgICAgICAgIGlmIChtX2dyYXBo
LmFkZFNob3VsZFNwZWN1bGF0ZUludGVnZXIobm9kZSkpCiAgICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICBpZiAoIU5vZGU6OnNob3VsZFNwZWN1bGF0ZU51bWJlcihtX2dyYXBoW25v
ZGUuY2hpbGQxKCldLCBtX2dyYXBoW25vZGUuY2hpbGQyKCldKSkKKyAgICAgICAgICAgIGlmICgh
Tm9kZTo6c2hvdWxkU3BlY3VsYXRlTnVtYmVyRXhwZWN0aW5nRGVmaW5lZChtX2dyYXBoW25vZGUu
Y2hpbGQxKCldLCBtX2dyYXBoW25vZGUuY2hpbGQyKCldKSkKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIGZpeERvdWJsZUVkZ2UoMCk7CiAgICAgICAgICAgICBmaXhEb3VibGVF
ZGdlKDEpOwpAQCAtMjYyLDcgKzI2Miw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgQXJpdGhN
aW46CiAgICAgICAgIGNhc2UgQXJpdGhNYXg6CiAgICAgICAgIGNhc2UgQXJpdGhNb2Q6IHsKLSAg
ICAgICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVJbnRlZ2VyKG1fZ3JhcGhbbm9kZS5j
aGlsZDEoKV0sIG1fZ3JhcGhbbm9kZS5jaGlsZDIoKV0pCisgICAgICAgICAgICBpZiAoTm9kZTo6
c2hvdWxkU3BlY3VsYXRlSW50ZWdlckZvckFyaXRobWV0aWMobV9ncmFwaFtub2RlLmNoaWxkMSgp
XSwgbV9ncmFwaFtub2RlLmNoaWxkMigpXSkKICAgICAgICAgICAgICAgICAmJiBub2RlLmNhblNw
ZWN1bGF0ZUludGVnZXIoKSkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGZp
eERvdWJsZUVkZ2UoMCk7CkBAIC0yNzksNyArMjc5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgfQog
CiAgICAgICAgIGNhc2UgQXJpdGhEaXY6IHsKLSAgICAgICAgICAgIGlmIChOb2RlOjpzaG91bGRT
cGVjdWxhdGVJbnRlZ2VyKG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0sIG1fZ3JhcGhbbm9kZS5jaGls
ZDIoKV0pCisgICAgICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlSW50ZWdlckZvckFy
aXRobWV0aWMobV9ncmFwaFtub2RlLmNoaWxkMSgpXSwgbV9ncmFwaFtub2RlLmNoaWxkMigpXSkK
ICAgICAgICAgICAgICAgICAmJiBub2RlLmNhblNwZWN1bGF0ZUludGVnZXIoKSkgewogICAgICAg
ICAgICAgICAgIGlmIChpc1g4NigpKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTMw
Nyw3ICszMDcsNyBAQCBwcml2YXRlOgogICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAg
Y2FzZSBBcml0aEFiczogewotICAgICAgICAgICAgaWYgKG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0u
c2hvdWxkU3BlY3VsYXRlSW50ZWdlcigpCisgICAgICAgICAgICBpZiAobV9ncmFwaFtub2RlLmNo
aWxkMSgpXS5zaG91bGRTcGVjdWxhdGVJbnRlZ2VyRm9yQXJpdGhtZXRpYygpCiAgICAgICAgICAg
ICAgICAgJiYgbm9kZS5jYW5TcGVjdWxhdGVJbnRlZ2VyKCkpCiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICBmaXhEb3VibGVFZGdlKDApOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdHcmFwaC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHR3JhcGguaAkocmV2aXNpb24gMTMzNjg1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdHcmFwaC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMjAsNyArMjIwLDcgQEAgcHVi
bGljOgogICAgICAgICBpZiAocmlnaHQuaGFzQ29uc3RhbnQoKSkKICAgICAgICAgICAgIHJldHVy
biBhZGRJbW1lZGlhdGVTaG91bGRTcGVjdWxhdGVJbnRlZ2VyKGFkZCwgbGVmdCwgcmlnaHQpOwog
ICAgICAgICAKLSAgICAgICAgcmV0dXJuIE5vZGU6OnNob3VsZFNwZWN1bGF0ZUludGVnZXIobGVm
dCwgcmlnaHQpICYmIGFkZC5jYW5TcGVjdWxhdGVJbnRlZ2VyKCk7CisgICAgICAgIHJldHVybiBO
b2RlOjpzaG91bGRTcGVjdWxhdGVJbnRlZ2VyRXhwZWN0aW5nRGVmaW5lZChsZWZ0LCByaWdodCkg
JiYgYWRkLmNhblNwZWN1bGF0ZUludGVnZXIoKTsKICAgICB9CiAgICAgCiAgICAgYm9vbCBtdWxT
aG91bGRTcGVjdWxhdGVJbnRlZ2VyKE5vZGUmIG11bCkKQEAgLTIzNSwxMyArMjM1LDEzIEBAIHB1
YmxpYzoKICAgICAgICAgaWYgKHJpZ2h0Lmhhc0NvbnN0YW50KCkpCiAgICAgICAgICAgICByZXR1
cm4gbXVsSW1tZWRpYXRlU2hvdWxkU3BlY3VsYXRlSW50ZWdlcihtdWwsIGxlZnQsIHJpZ2h0KTsK
ICAgICAgICAgCi0gICAgICAgIHJldHVybiBOb2RlOjpzaG91bGRTcGVjdWxhdGVJbnRlZ2VyKGxl
ZnQsIHJpZ2h0KSAmJiBtdWwuY2FuU3BlY3VsYXRlSW50ZWdlcigpICYmICFub2RlTWF5T3ZlcmZs
b3cobXVsLmFyaXRoTm9kZUZsYWdzKCkpOworICAgICAgICByZXR1cm4gTm9kZTo6c2hvdWxkU3Bl
Y3VsYXRlSW50ZWdlckZvckFyaXRobWV0aWMobGVmdCwgcmlnaHQpICYmIG11bC5jYW5TcGVjdWxh
dGVJbnRlZ2VyKCkgJiYgIW5vZGVNYXlPdmVyZmxvdyhtdWwuYXJpdGhOb2RlRmxhZ3MoKSk7CiAg
ICAgfQogICAgIAogICAgIGJvb2wgbmVnYXRlU2hvdWxkU3BlY3VsYXRlSW50ZWdlcihOb2RlJiBu
ZWdhdGUpCiAgICAgewogICAgICAgICBBU1NFUlQobmVnYXRlLm9wKCkgPT0gQXJpdGhOZWdhdGUp
OwotICAgICAgICByZXR1cm4gYXQobmVnYXRlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxhdGVJbnRl
Z2VyKCkgJiYgbmVnYXRlLmNhblNwZWN1bGF0ZUludGVnZXIoKTsKKyAgICAgICAgcmV0dXJuIGF0
KG5lZ2F0ZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRlSW50ZWdlckZvckFyaXRobWV0aWMoKSAm
JiBuZWdhdGUuY2FuU3BlY3VsYXRlSW50ZWdlcigpOwogICAgIH0KICAgICAKICAgICBib29sIGFk
ZFNob3VsZFNwZWN1bGF0ZUludGVnZXIoTm9kZUluZGV4IG5vZGVJbmRleCkKQEAgLTcxMiw3ICs3
MTIsNyBAQCBwcml2YXRlOgogICAgICAgICBpZiAoIWltbWVkaWF0ZVZhbHVlLmlzTnVtYmVyKCkp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIAotICAgICAgICBpZiAoIXZhcmlh
YmxlLnNob3VsZFNwZWN1bGF0ZUludGVnZXIoKSkKKyAgICAgICAgaWYgKCF2YXJpYWJsZS5zaG91
bGRTcGVjdWxhdGVJbnRlZ2VyRXhwZWN0aW5nRGVmaW5lZCgpKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICAKICAgICAgICAgaWYgKGltbWVkaWF0ZVZhbHVlLmlzSW50MzIoKSkK
QEAgLTczNCw3ICs3MzQsNyBAQCBwcml2YXRlOgogICAgICAgICBpZiAoIWltbWVkaWF0ZVZhbHVl
LmlzSW50MzIoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCi0gICAgICAg
IGlmICghdmFyaWFibGUuc2hvdWxkU3BlY3VsYXRlSW50ZWdlcigpKQorICAgICAgICBpZiAoIXZh
cmlhYmxlLnNob3VsZFNwZWN1bGF0ZUludGVnZXJGb3JBcml0aG1ldGljKCkpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIAogICAgICAgICBpbnQzMl90IGludEltbWVkaWF0ZSA9
IGltbWVkaWF0ZVZhbHVlLmFzSW50MzIoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZS5oCShyZXZpc2lvbiAxMzM2ODUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtOTIyLDE2ICs5MjIsMzYgQEAgc3RydWN0IE5vZGUg
ewogICAgICAgICByZXR1cm4gaXNJbnQzMlNwZWN1bGF0aW9uKHByZWRpY3Rpb24oKSk7CiAgICAg
fQogICAgIAorICAgIGJvb2wgc2hvdWxkU3BlY3VsYXRlSW50ZWdlckZvckFyaXRobWV0aWMoKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGlzSW50MzJTcGVjdWxhdGlvbkZvckFyaXRobWV0aWMocHJl
ZGljdGlvbigpKTsKKyAgICB9CisgICAgCisgICAgYm9vbCBzaG91bGRTcGVjdWxhdGVJbnRlZ2Vy
RXhwZWN0aW5nRGVmaW5lZCgpCisgICAgeworICAgICAgICByZXR1cm4gaXNJbnQzMlNwZWN1bGF0
aW9uRXhwZWN0aW5nRGVmaW5lZChwcmVkaWN0aW9uKCkpOworICAgIH0KKyAgICAKICAgICBib29s
IHNob3VsZFNwZWN1bGF0ZURvdWJsZSgpCiAgICAgewogICAgICAgICByZXR1cm4gaXNEb3VibGVT
cGVjdWxhdGlvbihwcmVkaWN0aW9uKCkpOwogICAgIH0KICAgICAKKyAgICBib29sIHNob3VsZFNw
ZWN1bGF0ZURvdWJsZUZvckFyaXRobWV0aWMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGlzRG91
YmxlU3BlY3VsYXRpb25Gb3JBcml0aG1ldGljKHByZWRpY3Rpb24oKSk7CisgICAgfQorICAgIAog
ICAgIGJvb2wgc2hvdWxkU3BlY3VsYXRlTnVtYmVyKCkKICAgICB7CiAgICAgICAgIHJldHVybiBp
c051bWJlclNwZWN1bGF0aW9uKHByZWRpY3Rpb24oKSk7CiAgICAgfQogICAgIAorICAgIGJvb2wg
c2hvdWxkU3BlY3VsYXRlTnVtYmVyRXhwZWN0aW5nRGVmaW5lZCgpCisgICAgeworICAgICAgICBy
ZXR1cm4gaXNOdW1iZXJTcGVjdWxhdGlvbkV4cGVjdGluZ0RlZmluZWQocHJlZGljdGlvbigpKTsK
KyAgICB9CisgICAgCiAgICAgYm9vbCBzaG91bGRTcGVjdWxhdGVCb29sZWFuKCkKICAgICB7CiAg
ICAgICAgIHJldHVybiBpc0Jvb2xlYW5TcGVjdWxhdGlvbihwcmVkaWN0aW9uKCkpOwpAQCAtMTAz
NywxMSArMTA1NywzMSBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgICAgIHJldHVybiBvcDEuc2hvdWxk
U3BlY3VsYXRlSW50ZWdlcigpICYmIG9wMi5zaG91bGRTcGVjdWxhdGVJbnRlZ2VyKCk7CiAgICAg
fQogICAgIAorICAgIHN0YXRpYyBib29sIHNob3VsZFNwZWN1bGF0ZUludGVnZXJGb3JBcml0aG1l
dGljKE5vZGUmIG9wMSwgTm9kZSYgb3AyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG9wMS5zaG91
bGRTcGVjdWxhdGVJbnRlZ2VyRm9yQXJpdGhtZXRpYygpICYmIG9wMi5zaG91bGRTcGVjdWxhdGVJ
bnRlZ2VyRm9yQXJpdGhtZXRpYygpOworICAgIH0KKyAgICAKKyAgICBzdGF0aWMgYm9vbCBzaG91
bGRTcGVjdWxhdGVJbnRlZ2VyRXhwZWN0aW5nRGVmaW5lZChOb2RlJiBvcDEsIE5vZGUmIG9wMikK
KyAgICB7CisgICAgICAgIHJldHVybiBvcDEuc2hvdWxkU3BlY3VsYXRlSW50ZWdlckV4cGVjdGlu
Z0RlZmluZWQoKSAmJiBvcDIuc2hvdWxkU3BlY3VsYXRlSW50ZWdlckV4cGVjdGluZ0RlZmluZWQo
KTsKKyAgICB9CisgICAgCisgICAgc3RhdGljIGJvb2wgc2hvdWxkU3BlY3VsYXRlRG91YmxlRm9y
QXJpdGhtZXRpYyhOb2RlJiBvcDEsIE5vZGUmIG9wMikKKyAgICB7CisgICAgICAgIHJldHVybiBv
cDEuc2hvdWxkU3BlY3VsYXRlRG91YmxlRm9yQXJpdGhtZXRpYygpICYmIG9wMi5zaG91bGRTcGVj
dWxhdGVEb3VibGVGb3JBcml0aG1ldGljKCk7CisgICAgfQorICAgIAogICAgIHN0YXRpYyBib29s
IHNob3VsZFNwZWN1bGF0ZU51bWJlcihOb2RlJiBvcDEsIE5vZGUmIG9wMikKICAgICB7CiAgICAg
ICAgIHJldHVybiBvcDEuc2hvdWxkU3BlY3VsYXRlTnVtYmVyKCkgJiYgb3AyLnNob3VsZFNwZWN1
bGF0ZU51bWJlcigpOwogICAgIH0KICAgICAKKyAgICBzdGF0aWMgYm9vbCBzaG91bGRTcGVjdWxh
dGVOdW1iZXJFeHBlY3RpbmdEZWZpbmVkKE5vZGUmIG9wMSwgTm9kZSYgb3AyKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIG9wMS5zaG91bGRTcGVjdWxhdGVOdW1iZXJFeHBlY3RpbmdEZWZpbmVkKCkg
JiYgb3AyLnNob3VsZFNwZWN1bGF0ZU51bWJlckV4cGVjdGluZ0RlZmluZWQoKTsKKyAgICB9Cisg
ICAgCiAgICAgc3RhdGljIGJvb2wgc2hvdWxkU3BlY3VsYXRlRmluYWxPYmplY3QoTm9kZSYgb3Ax
LCBOb2RlJiBvcDIpCiAgICAgewogICAgICAgICByZXR1cm4gb3AxLnNob3VsZFNwZWN1bGF0ZUZp
bmFsT2JqZWN0KCkgJiYgb3AyLnNob3VsZFNwZWN1bGF0ZUZpbmFsT2JqZWN0KCk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTMzNjg1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTIyNSwyNCArMjI1LDYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAKLSAgICAgICAgY2FzZSBBcml0aE1vZDogewotICAgICAgICAgICAgU3BlY3VsYXRl
ZFR5cGUgbGVmdCA9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ucHJlZGljdGlvbigpOwotICAgICAg
ICAgICAgU3BlY3VsYXRlZFR5cGUgcmlnaHQgPSBtX2dyYXBoW25vZGUuY2hpbGQyKCldLnByZWRp
Y3Rpb24oKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKGxlZnQgJiYgcmlnaHQpIHsK
LSAgICAgICAgICAgICAgICBpZiAoaXNJbnQzMlNwZWN1bGF0aW9uKG1lcmdlU3BlY3VsYXRpb25z
KGxlZnQsIHJpZ2h0KSkKLSAgICAgICAgICAgICAgICAgICAgJiYgbm9kZUNhblNwZWN1bGF0ZUlu
dGVnZXIobm9kZS5hcml0aE5vZGVGbGFncygpKSkKLSAgICAgICAgICAgICAgICAgICAgY2hhbmdl
ZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY0ludDMyKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNEb3VibGUp
OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICBmbGFncyB8PSBOb2Rl
VXNlZEFzVmFsdWU7Ci0gICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGhbbm9kZS5jaGlsZDEo
KV0ubWVyZ2VGbGFncyhmbGFncyk7Ci0gICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGhbbm9k
ZS5jaGlsZDIoKV0ubWVyZ2VGbGFncyhmbGFncyk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgfQotICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgVUludDMyVG9OdW1iZXI6IHsKICAgICAg
ICAgICAgIGlmIChub2RlQ2FuU3BlY3VsYXRlSW50ZWdlcihub2RlLmFyaXRoTm9kZUZsYWdzKCkp
KQogICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNJbnQzMik7
CkBAIC0yNTgsNyArMjQwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBl
IHJpZ2h0ID0gbV9ncmFwaFtub2RlLmNoaWxkMigpXS5wcmVkaWN0aW9uKCk7CiAgICAgICAgICAg
ICAKICAgICAgICAgICAgIGlmIChsZWZ0ICYmIHJpZ2h0KSB7Ci0gICAgICAgICAgICAgICAgaWYg
KGlzTnVtYmVyU3BlY3VsYXRpb24obGVmdCkgJiYgaXNOdW1iZXJTcGVjdWxhdGlvbihyaWdodCkp
IHsKKyAgICAgICAgICAgICAgICBpZiAoaXNOdW1iZXJTcGVjdWxhdGlvbkV4cGVjdGluZ0RlZmlu
ZWQobGVmdCkgJiYgaXNOdW1iZXJTcGVjdWxhdGlvbkV4cGVjdGluZ0RlZmluZWQocmlnaHQpKSB7
CiAgICAgICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLmFkZFNob3VsZFNwZWN1bGF0ZUludGVn
ZXIobm9kZSkpCiAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGlj
dGlvbihTcGVjSW50MzIpOwogICAgICAgICAgICAgICAgICAgICBlbHNlCkBAIC0zMzMsNyArMzE1
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHJpZ2h0ID0gbV9ncmFw
aFtub2RlLmNoaWxkMigpXS5wcmVkaWN0aW9uKCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAg
IGlmIChsZWZ0ICYmIHJpZ2h0KSB7Ci0gICAgICAgICAgICAgICAgaWYgKGlzSW50MzJTcGVjdWxh
dGlvbihtZXJnZVNwZWN1bGF0aW9ucyhsZWZ0LCByaWdodCkpCisgICAgICAgICAgICAgICAgaWYg
KE5vZGU6OnNob3VsZFNwZWN1bGF0ZUludGVnZXJGb3JBcml0aG1ldGljKG1fZ3JhcGhbbm9kZS5j
aGlsZDEoKV0sIG1fZ3JhcGhbbm9kZS5jaGlsZDIoKV0pCiAgICAgICAgICAgICAgICAgICAgICYm
IG5vZGVDYW5TcGVjdWxhdGVJbnRlZ2VyKG5vZGUuYXJpdGhOb2RlRmxhZ3MoKSkpCiAgICAgICAg
ICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNJbnQzMik7CiAgICAg
ICAgICAgICAgICAgZWxzZQpAQCAtMzczLDcgKzM1NSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICBTcGVjdWxhdGVkVHlwZSByaWdodCA9IG1fZ3JhcGhbbm9kZS5jaGlsZDIoKV0ucHJlZGljdGlv
bigpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAobGVmdCAmJiByaWdodCkgewotICAg
ICAgICAgICAgICAgIGlmIChpc0ludDMyU3BlY3VsYXRpb24obWVyZ2VTcGVjdWxhdGlvbnMobGVm
dCwgcmlnaHQpKQorICAgICAgICAgICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVJbnRl
Z2VyRm9yQXJpdGhtZXRpYyhtX2dyYXBoW25vZGUuY2hpbGQxKCldLCBtX2dyYXBoW25vZGUuY2hp
bGQyKCldKQogICAgICAgICAgICAgICAgICAgICAmJiBub2RlQ2FuU3BlY3VsYXRlSW50ZWdlcihu
b2RlLmFyaXRoTm9kZUZsYWdzKCkpKQogICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1l
cmdlUHJlZGljdGlvbihTcGVjSW50MzIpOwogICAgICAgICAgICAgICAgIGVsc2UKQEAgLTM4Miw3
ICszNjQsNyBAQCBwcml2YXRlOgogCiAgICAgICAgICAgICAvLyBBcyBzb29uIGFzIGEgbXVsdGlw
bHkgaGFwcGVucywgd2UgY2FuIGVhc2lseSBlbmQgdXAgaW4gdGhlIHBhcnQKICAgICAgICAgICAg
IC8vIG9mIHRoZSBkb3VibGUgZG9tYWluIHdoZXJlIHRoZSBwb2ludCBhdCB3aGljaCB5b3UgZG8g
dHJ1bmNhdGlvbgotICAgICAgICAgICAgLy8gY2FuIGNoYW5nZSB0aGUgb3V0Y29tZS4gU28sIEFy
aXRoTXVsIGFsd2F5cyBjaGVja3MgZm9yIG92ZXJmbG93CisgICAgICAgICAgICAvLyBjYW4gY2hh
bmdlIHRoZSBvdXRjb21lLiBTbywgQXJpdGhEaXYgYWx3YXlzIGNoZWNrcyBmb3Igb3ZlcmZsb3cK
ICAgICAgICAgICAgIC8vIG5vIG1hdHRlciB3aGF0LCBhbmQgYWx3YXlzIGZvcmNlcyBpdHMgaW5w
dXRzIHRvIGNoZWNrIGFzIHdlbGwuCiAgICAgICAgICAgICAKICAgICAgICAgICAgIGZsYWdzIHw9
IE5vZGVVc2VkQXNOdW1iZXIgfCBOb2RlTmVlZHNOZWdaZXJvOwpAQCAtMzkxLDYgKzM3MywyNCBA
QCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIAor
ICAgICAgICBjYXNlIEFyaXRoTW9kOiB7CisgICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSBsZWZ0
ID0gbV9ncmFwaFtub2RlLmNoaWxkMSgpXS5wcmVkaWN0aW9uKCk7CisgICAgICAgICAgICBTcGVj
dWxhdGVkVHlwZSByaWdodCA9IG1fZ3JhcGhbbm9kZS5jaGlsZDIoKV0ucHJlZGljdGlvbigpOwor
ICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAobGVmdCAmJiByaWdodCkgeworICAgICAgICAg
ICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVJbnRlZ2VyRm9yQXJpdGhtZXRpYyhtX2dy
YXBoW25vZGUuY2hpbGQxKCldLCBtX2dyYXBoW25vZGUuY2hpbGQyKCldKQorICAgICAgICAgICAg
ICAgICAgICAmJiBub2RlQ2FuU3BlY3VsYXRlSW50ZWdlcihub2RlLmFyaXRoTm9kZUZsYWdzKCkp
KQorICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjSW50
MzIpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8
PSBtZXJnZVByZWRpY3Rpb24oU3BlY0RvdWJsZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICAKKyAgICAgICAgICAgIGZsYWdzIHw9IE5vZGVVc2VkQXNWYWx1ZTsKKyAgICAgICAgICAgIGNo
YW5nZWQgfD0gbV9ncmFwaFtub2RlLmNoaWxkMSgpXS5tZXJnZUZsYWdzKGZsYWdzKTsKKyAgICAg
ICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFtub2RlLmNoaWxkMigpXS5tZXJnZUZsYWdzKGZsYWdz
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgICAgICAKICAgICAgICAg
Y2FzZSBBcml0aFNxcnQ6IHsKICAgICAgICAgICAgIGNoYW5nZWQgfD0gc2V0UHJlZGljdGlvbihT
cGVjRG91YmxlKTsKICAgICAgICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFtub2RlLmNoaWxkMSgp
XS5tZXJnZUZsYWdzKGZsYWdzIHwgTm9kZVVzZWRBc1ZhbHVlKTsKQEAgLTM5OSwxMCArMzk5LDEx
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBBcml0aEFiczogewogICAg
ICAgICAgICAgU3BlY3VsYXRlZFR5cGUgY2hpbGQgPSBtX2dyYXBoW25vZGUuY2hpbGQxKCldLnBy
ZWRpY3Rpb24oKTsKLSAgICAgICAgICAgIGlmIChub2RlQ2FuU3BlY3VsYXRlSW50ZWdlcihub2Rl
LmFyaXRoTm9kZUZsYWdzKCkpKQotICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVk
aWN0aW9uKGNoaWxkKTsKKyAgICAgICAgICAgIGlmIChpc0ludDMyU3BlY3VsYXRpb25Gb3JBcml0
aG1ldGljKGNoaWxkKQorICAgICAgICAgICAgICAgICYmIG5vZGVDYW5TcGVjdWxhdGVJbnRlZ2Vy
KG5vZGUuYXJpdGhOb2RlRmxhZ3MoKSkpCisgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJn
ZVByZWRpY3Rpb24oU3BlY0ludDMyKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAg
ICBjaGFuZ2VkIHw9IHNldFByZWRpY3Rpb24oc3BlY3VsYXRlZERvdWJsZVR5cGVGb3JQcmVkaWN0
aW9uKGNoaWxkKSk7CisgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24o
c3BlY3VsYXRlZERvdWJsZVR5cGVGb3JQcmVkaWN0aW9uKGNoaWxkKSk7CiAKICAgICAgICAgICAg
IGZsYWdzICY9IH5Ob2RlTmVlZHNOZWdaZXJvOwogICAgICAgICAgICAgY2hhbmdlZCB8PSBtX2dy
YXBoW25vZGUuY2hpbGQxKCldLm1lcmdlRmxhZ3MoZmxhZ3MpOwpAQCAtNzc2LDcgKzc3Nyw3IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgRG91YmxlQmFsbG90
IGJhbGxvdDsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBpZiAoaXNOdW1iZXJT
cGVjdWxhdGlvbihsZWZ0KSAmJiBpc051bWJlclNwZWN1bGF0aW9uKHJpZ2h0KQorICAgICAgICAg
ICAgICAgIGlmIChpc051bWJlclNwZWN1bGF0aW9uRXhwZWN0aW5nRGVmaW5lZChsZWZ0KSAmJiBp
c051bWJlclNwZWN1bGF0aW9uRXhwZWN0aW5nRGVmaW5lZChyaWdodCkKICAgICAgICAgICAgICAg
ICAgICAgJiYgIW1fZ3JhcGguYWRkU2hvdWxkU3BlY3VsYXRlSW50ZWdlcihub2RlKSkKICAgICAg
ICAgICAgICAgICAgICAgYmFsbG90ID0gVm90ZURvdWJsZTsKICAgICAgICAgICAgICAgICBlbHNl
CkBAIC04MTQsNyArODE1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBEb3VibGVCYWxs
b3QgYmFsbG90OwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGlmIChpc051bWJl
clNwZWN1bGF0aW9uKGxlZnQpICYmIGlzTnVtYmVyU3BlY3VsYXRpb24ocmlnaHQpCi0gICAgICAg
ICAgICAgICAgICAgICYmICEoTm9kZTo6c2hvdWxkU3BlY3VsYXRlSW50ZWdlcihtX2dyYXBoW25v
ZGUuY2hpbGQxKCldLCBtX2dyYXBoW25vZGUuY2hpbGQxKCldKQorICAgICAgICAgICAgICAgICAg
ICAmJiAhKE5vZGU6OnNob3VsZFNwZWN1bGF0ZUludGVnZXJGb3JBcml0aG1ldGljKG1fZ3JhcGhb
bm9kZS5jaGlsZDEoKV0sIG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0pCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgJiYgbm9kZS5jYW5TcGVjdWxhdGVJbnRlZ2VyKCkpKQogICAgICAgICAgICAgICAg
ICAgICBiYWxsb3QgPSBWb3RlRG91YmxlOwogICAgICAgICAgICAgICAgIGVsc2UKQEAgLTgyNyw3
ICs4MjgsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgY2FzZSBB
cml0aEFiczoKICAgICAgICAgICAgICAgICBEb3VibGVCYWxsb3QgYmFsbG90OwotICAgICAgICAg
ICAgICAgIGlmICghKG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0uc2hvdWxkU3BlY3VsYXRlSW50ZWdl
cigpCisgICAgICAgICAgICAgICAgaWYgKCEobV9ncmFwaFtub2RlLmNoaWxkMSgpXS5zaG91bGRT
cGVjdWxhdGVJbnRlZ2VyRm9yQXJpdGhtZXRpYygpCiAgICAgICAgICAgICAgICAgICAgICAgJiYg
bm9kZS5jYW5TcGVjdWxhdGVJbnRlZ2VyKCkpKQogICAgICAgICAgICAgICAgICAgICBiYWxsb3Qg
PSBWb3RlRG91YmxlOwogICAgICAgICAgICAgICAgIGVsc2UKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkocmV2aXNp
b24gMTMzNjg1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM2Niw3ICsyMzY2LDggQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICBicmVhazsKIAogICAgIGNh
c2UgQXJpdGhEaXY6IHsKLSAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZUludGVnZXIo
YXQobm9kZS5jaGlsZDEoKSksIGF0KG5vZGUuY2hpbGQyKCkpKSAmJiBub2RlLmNhblNwZWN1bGF0
ZUludGVnZXIoKSkgeworICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlSW50ZWdlckZv
ckFyaXRobWV0aWMoYXQobm9kZS5jaGlsZDEoKSksIGF0KG5vZGUuY2hpbGQyKCkpKQorICAgICAg
ICAgICAgJiYgbm9kZS5jYW5TcGVjdWxhdGVJbnRlZ2VyKCkpIHsKICNpZiBDUFUoWDg2KQogICAg
ICAgICAgICAgY29tcGlsZUludGVnZXJBcml0aERpdkZvclg4Nihub2RlKTsKICNlbHNlIC8vIENQ
VShYODYpIC0+IHNvIG5vbi1YODYgY29kZSBmb2xsb3dzCkBAIC0yMzkzLDcgKzIzOTQsOCBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgfQogCiAgICAgY2Fz
ZSBBcml0aEFiczogewotICAgICAgICBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3Vs
YXRlSW50ZWdlcigpICYmIG5vZGUuY2FuU3BlY3VsYXRlSW50ZWdlcigpKSB7CisgICAgICAgIGlm
IChhdChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxhdGVJbnRlZ2VyRm9yQXJpdGhtZXRpYygp
CisgICAgICAgICAgICAmJiBub2RlLmNhblNwZWN1bGF0ZUludGVnZXIoKSkgewogICAgICAgICAg
ICAgU3BlY3VsYXRlSW50ZWdlck9wZXJhbmQgb3AxKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwogICAg
ICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBvcDEpOwogICAgICAgICAgICAgR1BS
VGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CkBAIC0yNDE3LDcgKzI0MTksOCBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIAogICAgIGNhc2UgQXJpdGhN
aW46CiAgICAgY2FzZSBBcml0aE1heDogewotICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3Vs
YXRlSW50ZWdlcihhdChub2RlLmNoaWxkMSgpKSwgYXQobm9kZS5jaGlsZDIoKSkpICYmIG5vZGUu
Y2FuU3BlY3VsYXRlSW50ZWdlcigpKSB7CisgICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxh
dGVJbnRlZ2VyRm9yQXJpdGhtZXRpYyhhdChub2RlLmNoaWxkMSgpKSwgYXQobm9kZS5jaGlsZDIo
KSkpCisgICAgICAgICAgICAmJiBub2RlLmNhblNwZWN1bGF0ZUludGVnZXIoKSkgewogICAgICAg
ICAgICAgU3BlY3VsYXRlU3RyaWN0SW50MzJPcGVyYW5kIG9wMSh0aGlzLCBub2RlLmNoaWxkMSgp
KTsKICAgICAgICAgICAgIFNwZWN1bGF0ZVN0cmljdEludDMyT3BlcmFuZCBvcDIodGhpcywgbm9k
ZS5jaGlsZDIoKSk7CiAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIG9wMSk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQ2NC5jcHAJKHJldmlzaW9uIDEzMzY4NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0MDMsNyArMjQwMyw4
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgYnJl
YWs7CiAKICAgICBjYXNlIEFyaXRoRGl2OiB7Ci0gICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVj
dWxhdGVJbnRlZ2VyKGF0KG5vZGUuY2hpbGQxKCkpLCBhdChub2RlLmNoaWxkMigpKSkgJiYgbm9k
ZS5jYW5TcGVjdWxhdGVJbnRlZ2VyKCkpIHsKKyAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1
bGF0ZUludGVnZXJGb3JBcml0aG1ldGljKGF0KG5vZGUuY2hpbGQxKCkpLCBhdChub2RlLmNoaWxk
MigpKSkKKyAgICAgICAgICAgICYmIG5vZGUuY2FuU3BlY3VsYXRlSW50ZWdlcigpKSB7CiAgICAg
ICAgICAgICBjb21waWxlSW50ZWdlckFyaXRoRGl2Rm9yWDg2KG5vZGUpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KQEAgLTI0MjYsNyArMjQyNyw4IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICB9CiAKICAgICBjYXNlIEFyaXRoQWJzOiB7Ci0g
ICAgICAgIGlmIChhdChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxhdGVJbnRlZ2VyKCkgJiYg
bm9kZS5jYW5TcGVjdWxhdGVJbnRlZ2VyKCkpIHsKKyAgICAgICAgaWYgKGF0KG5vZGUuY2hpbGQx
KCkpLnNob3VsZFNwZWN1bGF0ZUludGVnZXJGb3JBcml0aG1ldGljKCkKKyAgICAgICAgICAgICYm
IG5vZGUuY2FuU3BlY3VsYXRlSW50ZWdlcigpKSB7CiAgICAgICAgICAgICBTcGVjdWxhdGVJbnRl
Z2VyT3BlcmFuZCBvcDEodGhpcywgbm9kZS5jaGlsZDEoKSk7CiAgICAgICAgICAgICBHUFJUZW1w
b3JhcnkgcmVzdWx0KHRoaXMpOwogICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhp
cyk7CkBAIC0yNDUwLDcgKzI0NTIsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5v
ZGUmIG5vZGUpCiAgICAgICAgIAogICAgIGNhc2UgQXJpdGhNaW46CiAgICAgY2FzZSBBcml0aE1h
eDogewotICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlSW50ZWdlcihhdChub2RlLmNo
aWxkMSgpKSwgYXQobm9kZS5jaGlsZDIoKSkpICYmIG5vZGUuY2FuU3BlY3VsYXRlSW50ZWdlcigp
KSB7CisgICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVJbnRlZ2VyRm9yQXJpdGhtZXRp
YyhhdChub2RlLmNoaWxkMSgpKSwgYXQobm9kZS5jaGlsZDIoKSkpCisgICAgICAgICAgICAmJiBu
b2RlLmNhblNwZWN1bGF0ZUludGVnZXIoKSkgewogICAgICAgICAgICAgU3BlY3VsYXRlU3RyaWN0
SW50MzJPcGVyYW5kIG9wMSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKICAgICAgICAgICAgIFNwZWN1
bGF0ZVN0cmljdEludDMyT3BlcmFuZCBvcDIodGhpcywgbm9kZS5jaGlsZDIoKSk7CiAgICAgICAg
ICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIG9wMSk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24gMTMzNjg1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI3NjMsNyArMjc2Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVBZGQoTm9kZSYgbm8KICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAgICAgCi0gICAg
aWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZU51bWJlcihhdChub2RlLmNoaWxkMSgpKSwgYXQobm9k
ZS5jaGlsZDIoKSkpKSB7CisgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZU51bWJlckV4cGVj
dGluZ0RlZmluZWQoYXQobm9kZS5jaGlsZDEoKSksIGF0KG5vZGUuY2hpbGQyKCkpKSkgewogICAg
ICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIG9wMSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKICAg
ICAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCBvcDIodGhpcywgbm9kZS5jaGlsZDIoKSk7CiAg
ICAgICAgIEZQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgb3AxLCBvcDIpOwpAQCAtMzAwMSw3ICsz
MDAxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUludGVnZXJBcml0aAogCiB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJpdGhNb2QoTm9kZSYgbm9kZSkKIHsKLSAgICBpZiAo
Tm9kZTo6c2hvdWxkU3BlY3VsYXRlSW50ZWdlcihhdChub2RlLmNoaWxkMSgpKSwgYXQobm9kZS5j
aGlsZDIoKSkpCisgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZUludGVnZXJGb3JBcml0aG1l
dGljKGF0KG5vZGUuY2hpbGQxKCkpLCBhdChub2RlLmNoaWxkMigpKSkKICAgICAgICAgJiYgbm9k
ZS5jYW5TcGVjdWxhdGVJbnRlZ2VyKCkpIHsKICAgICAgICAgY29tcGlsZVNvZnRNb2R1bG8obm9k
ZSk7CiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
QXJpdGhtZXRpYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRBcml0aG1ldGljLmNwcAkocmV2aXNpb24gMTMzNjg1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA5MCwxOCArMTA5
MCwyMCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9kaXYoSW5zdHJ1Y3Rpb24qIGN1cnJlCiAgICAgLy8g
YWNjZXNzKS4gU28gaWYgd2UgYXJlIERGRyBjb21waWxpbmcgYW55dGhpbmcgaW4gdGhlIHByb2dy
YW0sIHdlIHdhbnQgdGhpcyBjb2RlIHRvCiAgICAgLy8gZW5zdXJlIHRoYXQgaXQgcHJvZHVjZXMg
aW50ZWdlcnMgd2hlbmV2ZXIgcG9zc2libGUuCiAgICAgCi0gICAgLy8gRklYTUU6IFRoaXMgd2ls
bCBmYWlsIHRvIGNvbnZlcnQgdG8gaW50ZWdlciBpZiB0aGUgcmVzdWx0IGlzIHplcm8uIFdlIHNo
b3VsZAotICAgIC8vIGRpc3Rpbmd1aXNoIGJldHdlZW4gcG9zaXRpdmUgemVybyBhbmQgbmVnYXRp
dmUgemVybyBoZXJlLgotICAgIAogICAgIEp1bXBMaXN0IG5vdEludGVnZXI7CiAgICAgYnJhbmNo
Q29udmVydERvdWJsZVRvSW50MzIoZnBSZWdUMCwgcmVnVDAsIG5vdEludGVnZXIsIGZwUmVnVDEp
OwogICAgIC8vIElmIHdlJ3ZlIGdvdCBhbiBpbnRlZ2VyLCB3ZSBtaWdodCBhcyB3ZWxsIG1ha2Ug
dGhhdCB0aGUgcmVzdWx0IG9mIHRoZSBkaXZpc2lvbi4KICAgICBlbWl0RmFzdEFyaXRoUmVUYWdJ
bW1lZGlhdGUocmVnVDAsIHJlZ1QwKTsKICAgICBKdW1wIGlzSW50ZWdlciA9IGp1bXAoKTsKICAg
ICBub3RJbnRlZ2VyLmxpbmsodGhpcyk7Ci0gICAgYWRkMzIoVHJ1c3RlZEltbTMyKDEpLCBBYnNv
bHV0ZUFkZHJlc3MoJm1fY29kZUJsb2NrLT5hZGRTcGVjaWFsRmFzdENhc2VQcm9maWxlKG1fYnl0
ZWNvZGVPZmZzZXQpLT5tX2NvdW50ZXIpKTsKICAgICBtb3ZlRG91YmxlVG82NChmcFJlZ1QwLCBy
ZWdUMCk7CisgICAgSnVtcCBkb3VibGVaZXJvID0gYnJhbmNoVGVzdDY0KFplcm8sIHJlZ1QwKTsK
KyAgICBhZGQzMihUcnVzdGVkSW1tMzIoMSksIEFic29sdXRlQWRkcmVzcygmbV9jb2RlQmxvY2st
PmFkZFNwZWNpYWxGYXN0Q2FzZVByb2ZpbGUobV9ieXRlY29kZU9mZnNldCktPm1fY291bnRlcikp
OwogICAgIHN1YjY0KHRhZ1R5cGVOdW1iZXJSZWdpc3RlciwgcmVnVDApOworICAgIEp1bXAgdHJ1
ZURvdWJsZSA9IGp1bXAoKTsKKyAgICBkb3VibGVaZXJvLmxpbmsodGhpcyk7CisgICAgbW92ZSh0
YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIHJlZ1QwKTsKKyAgICB0cnVlRG91YmxlLmxpbmsodGhpcyk7
CiAgICAgaXNJbnRlZ2VyLmxpbmsodGhpcyk7CiAjZWxzZQogICAgIC8vIERvdWJsZSByZXN1bHQu
Cg==
</data>
<flag name="review"
          id="187169"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>