<?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>33158</bug_id>
          
          <creation_ts>2010-01-04 10:48:08 -0800</creation_ts>
          <short_desc>Refactor JSC API entry/exit to use RAII instead of copy/pasting code.</short_desc>
          <delta_ts>2010-01-04 11:21:24 -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>PC</rep_platform>
          <op_sys>OS X 10.5</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="Gavin Barraclough">barraclough</reporter>
          <assigned_to name="Gavin Barraclough">barraclough</assigned_to>
          <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>176746</commentid>
    <comment_count>0</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2010-01-04 10:48:08 -0800</bug_when>
    <thetext>Make it easier to change set of actions taken when passing across the AP boundary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176747</commentid>
    <comment_count>1</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2010-01-04 10:48:30 -0800</bug_when>
    <thetext>s/AP/API/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176749</commentid>
    <comment_count>2</comment_count>
      <attachid>45805</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2010-01-04 10:50:25 -0800</bug_when>
    <thetext>Created attachment 45805
The patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176751</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-04 10:52:45 -0800</bug_when>
    <thetext>Attachment 45805 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
JavaScriptCore/API/APIShims.h:84:  #endif line should be &quot;#endif // APIShims_h&quot;  [build/header_guard] [5]
JavaScriptCore/API/APIShims.h:30:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176760</commentid>
    <comment_count>4</comment_count>
      <attachid>45805</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-01-04 11:04:46 -0800</bug_when>
    <thetext>Comment on attachment 45805
The patch

&gt;      JSObject* jsThisObject = toJS(thisObject);
&gt;  
&gt;      // evaluate sets &quot;this&quot; to the global object if it is NULL
&gt;      JSGlobalObject* globalObject = exec-&gt;dynamicGlobalObject();
&gt;      SourceCode source = makeSource(script-&gt;ustring(), sourceURL-&gt;ustring(), startingLineNumber);
&gt; -    Completion completion = evaluate(globalObject-&gt;globalExec(), globalObject-&gt;globalScopeChain(), source, jsThisObject);
&gt; +    Completion completion = evaluate(exec, globalObject-&gt;globalScopeChain(), source, jsThisObject);

This seems unrelated and should be removed from this patch.

&gt;  JSType JSValueGetType(JSContextRef ctx, JSValueRef value)
&gt;  {
&gt;      JSC::ExecState* exec = toJS(ctx);
&gt; -    exec-&gt;globalData().heap.registerThread();
&gt; -    JSC::JSLock lock(exec);
&gt; +    JSC::APIEntryShim entryShim(exec);

The JSC:: should not be needed here.


r=me if you change these.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176761</commentid>
    <comment_count>5</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2010-01-04 11:09:13 -0800</bug_when>
    <thetext>The boolean parameter to the APIEntryShim constructor is indecipherable at call sites.  An enum would make it much easier to understand what it is doing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176765</commentid>
    <comment_count>6</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2010-01-04 11:18:58 -0800</bug_when>
    <thetext>Committed revision 52751.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176767</commentid>
    <comment_count>7</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2010-01-04 11:21:24 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; The boolean parameter to the APIEntryShim constructor is indecipherable at call
&gt; sites.  An enum would make it much easier to understand what it is doing.

Hrrm, you&apos;re right – but I&apos;ve just landed based on Sam&apos;s r+.

I&apos;d like to remove the parameter altogether – it seems odd to not check the thread is registered in a few infrequently called places, but I didn&apos;t want to introduce any functional change in this patch.  Let me discuss with Geoff, and I&apos;ll follow up with a patch to either change the parameter to an enum, or remove it altogether.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>45805</attachid>
            <date>2010-01-04 10:50:25 -0800</date>
            <delta_ts>2010-01-04 11:04:46 -0800</delta_ts>
            <desc>The patch</desc>
            <filename>patch.APIShim.txt</filename>
            <type>text/plain</type>
            <size>38398</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDUyNzQ2KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsODcgQEAKKzIwMTAtMDEtMDQgIEdhdmluIEJh
cnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0zMzE1OAorICAgICAgICBSZWZhY3RvciBKU0MgQVBJIGVudHJ5L2V4aXQgdG8g
dXNlIFJBSUkgaW5zdGVhZCBvZiBjb3B5L3Bhc3RpbmcgY29kZS4KKyAgICAgICAgTWFrZSBpdCBl
YXNpZXIgdG8gY2hhbmdlIHNldCBvZiBhY3Rpb25zIHRha2VuIHdoZW4gcGFzc2luZyBhY3Jvc3Mg
dGhlIEFQSSBib3VuZGFyeS4KKworICAgICAgICAqIEFQSS9BUElTaGltcy5oOiBBZGRlZC4KKyAg
ICAgICAgKEpTQzo6QVBJRW50cnlTaGltV2l0aG91dExvY2s6OkFQSUVudHJ5U2hpbVdpdGhvdXRM
b2NrKToKKyAgICAgICAgKEpTQzo6QVBJRW50cnlTaGltV2l0aG91dExvY2s6On5BUElFbnRyeVNo
aW1XaXRob3V0TG9jayk6CisgICAgICAgIChKU0M6OkFQSUVudHJ5U2hpbTo6QVBJRW50cnlTaGlt
KToKKyAgICAgICAgKEpTQzo6QVBJQ2FsbGJhY2tTaGltOjpBUElDYWxsYmFja1NoaW0pOgorICAg
ICAgICAoSlNDOjpBUElDYWxsYmFja1NoaW06On5BUElDYWxsYmFja1NoaW0pOgorICAgICAgICAq
IEFQSS9KU0Jhc2UuY3BwOgorICAgICAgICAoSlNFdmFsdWF0ZVNjcmlwdCk6CisgICAgICAgIChK
U0NoZWNrU2NyaXB0U3ludGF4KToKKyAgICAgICAgKEpTR2FyYmFnZUNvbGxlY3QpOgorICAgICAg
ICAoSlNSZXBvcnRFeHRyYU1lbW9yeUNvc3QpOgorICAgICAgICAqIEFQSS9KU0NhbGxiYWNrQ29u
c3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RKU0NhbGxiYWNrKToKKyAgICAg
ICAgKiBBUEkvSlNDYWxsYmFja0Z1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFj
a0Z1bmN0aW9uOjpjYWxsKToKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9u
cy5oOgorICAgICAgICAoSlNDOjo6OmluaXQpOgorICAgICAgICAoSlNDOjo6OmdldE93blByb3Bl
cnR5U2xvdCk6CisgICAgICAgIChKU0M6Ojo6cHV0KToKKyAgICAgICAgKEpTQzo6OjpkZWxldGVQ
cm9wZXJ0eSk6CisgICAgICAgIChKU0M6Ojo6Y29uc3RydWN0KToKKyAgICAgICAgKEpTQzo6Ojpo
YXNJbnN0YW5jZSk6CisgICAgICAgIChKU0M6Ojo6Y2FsbCk6CisgICAgICAgIChKU0M6Ojo6Z2V0
T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgIChKU0M6Ojo6dG9OdW1iZXIpOgorICAgICAgICAo
SlNDOjo6OnRvU3RyaW5nKToKKyAgICAgICAgKEpTQzo6OjpzdGF0aWNWYWx1ZUdldHRlcik6Cisg
ICAgICAgIChKU0M6Ojo6Y2FsbGJhY2tHZXR0ZXIpOgorICAgICAgICAqIEFQSS9KU0NvbnRleHRS
ZWYuY3BwOgorICAgICAgICAqIEFQSS9KU09iamVjdFJlZi5jcHA6CisgICAgICAgIChKU09iamVj
dE1ha2UpOgorICAgICAgICAoSlNPYmplY3RNYWtlRnVuY3Rpb25XaXRoQ2FsbGJhY2spOgorICAg
ICAgICAoSlNPYmplY3RNYWtlQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNPYmplY3RNYWtlRnVu
Y3Rpb24pOgorICAgICAgICAoSlNPYmplY3RNYWtlQXJyYXkpOgorICAgICAgICAoSlNPYmplY3RN
YWtlRGF0ZSk6CisgICAgICAgIChKU09iamVjdE1ha2VFcnJvcik6CisgICAgICAgIChKU09iamVj
dE1ha2VSZWdFeHApOgorICAgICAgICAoSlNPYmplY3RHZXRQcm90b3R5cGUpOgorICAgICAgICAo
SlNPYmplY3RTZXRQcm90b3R5cGUpOgorICAgICAgICAoSlNPYmplY3RIYXNQcm9wZXJ0eSk6Cisg
ICAgICAgIChKU09iamVjdEdldFByb3BlcnR5KToKKyAgICAgICAgKEpTT2JqZWN0U2V0UHJvcGVy
dHkpOgorICAgICAgICAoSlNPYmplY3RHZXRQcm9wZXJ0eUF0SW5kZXgpOgorICAgICAgICAoSlNP
YmplY3RTZXRQcm9wZXJ0eUF0SW5kZXgpOgorICAgICAgICAoSlNPYmplY3REZWxldGVQcm9wZXJ0
eSk6CisgICAgICAgIChKU09iamVjdENhbGxBc0Z1bmN0aW9uKToKKyAgICAgICAgKEpTT2JqZWN0
Q2FsbEFzQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNPYmplY3RDb3B5UHJvcGVydHlOYW1lcyk6
CisgICAgICAgIChKU1Byb3BlcnR5TmFtZUFycmF5UmVsZWFzZSk6CisgICAgICAgIChKU1Byb3Bl
cnR5TmFtZUFjY3VtdWxhdG9yQWRkTmFtZSk6CisgICAgICAgICogQVBJL0pTVmFsdWVSZWYuY3Bw
OgorICAgICAgICAoSlNWYWx1ZUdldFR5cGUpOgorICAgICAgICAoSlNWYWx1ZUlzVW5kZWZpbmVk
KToKKyAgICAgICAgKEpTVmFsdWVJc051bGwpOgorICAgICAgICAoSlNWYWx1ZUlzQm9vbGVhbik6
CisgICAgICAgIChKU1ZhbHVlSXNOdW1iZXIpOgorICAgICAgICAoSlNWYWx1ZUlzU3RyaW5nKToK
KyAgICAgICAgKEpTVmFsdWVJc09iamVjdCk6CisgICAgICAgIChKU1ZhbHVlSXNPYmplY3RPZkNs
YXNzKToKKyAgICAgICAgKEpTVmFsdWVJc0VxdWFsKToKKyAgICAgICAgKEpTVmFsdWVJc1N0cmlj
dEVxdWFsKToKKyAgICAgICAgKEpTVmFsdWVJc0luc3RhbmNlT2ZDb25zdHJ1Y3Rvcik6CisgICAg
ICAgIChKU1ZhbHVlTWFrZVVuZGVmaW5lZCk6CisgICAgICAgIChKU1ZhbHVlTWFrZU51bGwpOgor
ICAgICAgICAoSlNWYWx1ZU1ha2VCb29sZWFuKToKKyAgICAgICAgKEpTVmFsdWVNYWtlTnVtYmVy
KToKKyAgICAgICAgKEpTVmFsdWVNYWtlU3RyaW5nKToKKyAgICAgICAgKEpTVmFsdWVUb0Jvb2xl
YW4pOgorICAgICAgICAoSlNWYWx1ZVRvTnVtYmVyKToKKyAgICAgICAgKEpTVmFsdWVUb1N0cmlu
Z0NvcHkpOgorICAgICAgICAoSlNWYWx1ZVRvT2JqZWN0KToKKyAgICAgICAgKEpTVmFsdWVQcm90
ZWN0KToKKyAgICAgICAgKEpTVmFsdWVVbnByb3RlY3QpOgorICAgICAgICAqIEphdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTAtMDEtMDQgIEFkYW0gUm9iZW4g
IDxhcm9iZW5AYXBwbGUuY29tPgogCiAgICAgICAgIE5vIHJldmlldywgcm9sbGluZyBvdXQgcjUy
NzQxLgpJbmRleDogSmF2YVNjcmlwdENvcmUvQVBJL0FQSVNoaW1zLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
SmF2YVNjcmlwdENvcmUvQVBJL0FQSVNoaW1zLmgJKHJldmlzaW9uIDApCisrKyBKYXZhU2NyaXB0
Q29yZS9BUEkvQVBJU2hpbXMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4NCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKKyNpZm5kZWYgQVBJU2hpbXNfaAorI2RlZmluZSBBUElTaGltc19oCisKKyNpbmNsdWRlICJK
U0xvY2suaCIKKyNpbmNsdWRlICJDYWxsRnJhbWUuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2Ns
YXNzIEFQSUVudHJ5U2hpbVdpdGhvdXRMb2NrIHsKK3Byb3RlY3RlZDoKKyAgICBBUElFbnRyeVNo
aW1XaXRob3V0TG9jayhKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGJvb2wgcmVnaXN0ZXJUaHJl
YWQpCisgICAgeworICAgICAgICBpZiAocmVnaXN0ZXJUaHJlYWQpCisgICAgICAgICAgICBnbG9i
YWxEYXRhLT5oZWFwLnJlZ2lzdGVyVGhyZWFkKCk7CisgICAgfQorCisgICAgfkFQSUVudHJ5U2hp
bVdpdGhvdXRMb2NrKCkKKyAgICB7CisgICAgfQorfTsKKworY2xhc3MgQVBJRW50cnlTaGltIDog
cHVibGljIEFQSUVudHJ5U2hpbVdpdGhvdXRMb2NrIHsKK3B1YmxpYzoKKyAgICAvLyBOb3JtYWwg
QVBJIGVudHJ5CisgICAgQVBJRW50cnlTaGltKEV4ZWNTdGF0ZSogZXhlYywgYm9vbCByZWdpc3Rl
clRocmVhZCA9IHRydWUpCisgICAgICAgIDogQVBJRW50cnlTaGltV2l0aG91dExvY2soJmV4ZWMt
Pmdsb2JhbERhdGEoKSwgcmVnaXN0ZXJUaHJlYWQpCisgICAgICAgICwgbV9sb2NrKGV4ZWMpCisg
ICAgeworICAgIH0KKworICAgIC8vIEpTUHJvcGVydHlOYW1lQWNjdW11bGF0b3Igb25seSBoYXMg
YSBnbG9iYWxEYXRhLgorICAgIEFQSUVudHJ5U2hpbShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEs
IGJvb2wgcmVnaXN0ZXJUaHJlYWQgPSB0cnVlKQorICAgICAgICA6IEFQSUVudHJ5U2hpbVdpdGhv
dXRMb2NrKGdsb2JhbERhdGEsIHJlZ2lzdGVyVGhyZWFkKQorICAgICAgICAsIG1fbG9jayhnbG9i
YWxEYXRhLT5pc1NoYXJlZEluc3RhbmNlID8gTG9ja0ZvclJlYWwgOiBTaWxlbmNlQXNzZXJ0aW9u
c09ubHkpCisgICAgeworICAgIH0KKworcHJpdmF0ZToKKyAgICBKU0xvY2sgbV9sb2NrOworfTsK
KworY2xhc3MgQVBJQ2FsbGJhY2tTaGltIHsKK3B1YmxpYzoKKyAgICBBUElDYWxsYmFja1NoaW0o
RXhlY1N0YXRlKiBleGVjKQorICAgICAgICA6IG1fZHJvcEFsbExvY2tzKGV4ZWMpCisgICAgewor
ICAgIH0KKworICAgIH5BUElDYWxsYmFja1NoaW0oKQorICAgIHsKKyAgICB9CisKK3ByaXZhdGU6
CisgICAgSlNMb2NrOjpEcm9wQWxsTG9ja3MgbV9kcm9wQWxsTG9ja3M7Cit9OworCit9CisKKyNl
bmRpZgpJbmRleDogSmF2YVNjcmlwdENvcmUvQVBJL0pTQmFzZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
SmF2YVNjcmlwdENvcmUvQVBJL0pTQmFzZS5jcHAJKHJldmlzaW9uIDUyNDk4KQorKysgSmF2YVNj
cmlwdENvcmUvQVBJL0pTQmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAK
ICNpbmNsdWRlICJKU0Jhc2VQcml2YXRlLmgiCiAKICNpbmNsdWRlICJBUElDYXN0LmgiCisjaW5j
bHVkZSAiQVBJU2hpbXMuaCIKICNpbmNsdWRlICJDb21wbGV0aW9uLmgiCiAjaW5jbHVkZSAiT3Bh
cXVlSlNTdHJpbmcuaCIKICNpbmNsdWRlICJTb3VyY2VDb2RlLmgiCkBAIC00MywxNSArNDQsMTQg
QEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIEpTVmFsdWVSZWYgSlNFdmFsdWF0ZVNjcmlwdChKU0Nv
bnRleHRSZWYgY3R4LCBKU1N0cmluZ1JlZiBzY3JpcHQsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3Qs
IEpTU3RyaW5nUmVmIHNvdXJjZVVSTCwgaW50IHN0YXJ0aW5nTGluZU51bWJlciwgSlNWYWx1ZVJl
ZiogZXhjZXB0aW9uKQogewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKLSAgICBl
eGVjLT5nbG9iYWxEYXRhKCkuaGVhcC5yZWdpc3RlclRocmVhZCgpOwotICAgIEpTTG9jayBsb2Nr
KGV4ZWMpOworICAgIEFQSUVudHJ5U2hpbSBlbnRyeVNoaW0oZXhlYyk7CiAKICAgICBKU09iamVj
dCoganNUaGlzT2JqZWN0ID0gdG9KUyh0aGlzT2JqZWN0KTsKIAogICAgIC8vIGV2YWx1YXRlIHNl
dHMgInRoaXMiIHRvIHRoZSBnbG9iYWwgb2JqZWN0IGlmIGl0IGlzIE5VTEwKICAgICBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+ZHluYW1pY0dsb2JhbE9iamVjdCgpOwogICAg
IFNvdXJjZUNvZGUgc291cmNlID0gbWFrZVNvdXJjZShzY3JpcHQtPnVzdHJpbmcoKSwgc291cmNl
VVJMLT51c3RyaW5nKCksIHN0YXJ0aW5nTGluZU51bWJlcik7Ci0gICAgQ29tcGxldGlvbiBjb21w
bGV0aW9uID0gZXZhbHVhdGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGdsb2JhbE9iamVj
dC0+Z2xvYmFsU2NvcGVDaGFpbigpLCBzb3VyY2UsIGpzVGhpc09iamVjdCk7CisgICAgQ29tcGxl
dGlvbiBjb21wbGV0aW9uID0gZXZhbHVhdGUoZXhlYywgZ2xvYmFsT2JqZWN0LT5nbG9iYWxTY29w
ZUNoYWluKCksIHNvdXJjZSwganNUaGlzT2JqZWN0KTsKIAogICAgIGlmIChjb21wbGV0aW9uLmNv
bXBsVHlwZSgpID09IFRocm93KSB7CiAgICAgICAgIGlmIChleGNlcHRpb24pCkBAIC02OSw4ICs2
OSw3IEBAIEpTVmFsdWVSZWYgSlNFdmFsdWF0ZVNjcmlwdChKU0NvbnRleHRSZWYKIGJvb2wgSlND
aGVja1NjcmlwdFN5bnRheChKU0NvbnRleHRSZWYgY3R4LCBKU1N0cmluZ1JlZiBzY3JpcHQsIEpT
U3RyaW5nUmVmIHNvdXJjZVVSTCwgaW50IHN0YXJ0aW5nTGluZU51bWJlciwgSlNWYWx1ZVJlZiog
ZXhjZXB0aW9uKQogewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKLSAgICBleGVj
LT5nbG9iYWxEYXRhKCkuaGVhcC5yZWdpc3RlclRocmVhZCgpOwotICAgIEpTTG9jayBsb2NrKGV4
ZWMpOworICAgIEFQSUVudHJ5U2hpbSBlbnRyeVNoaW0oZXhlYyk7CiAKICAgICBTb3VyY2VDb2Rl
IHNvdXJjZSA9IG1ha2VTb3VyY2Uoc2NyaXB0LT51c3RyaW5nKCksIHNvdXJjZVVSTC0+dXN0cmlu
ZygpLCBzdGFydGluZ0xpbmVOdW1iZXIpOwogICAgIENvbXBsZXRpb24gY29tcGxldGlvbiA9IGNo
ZWNrU3ludGF4KGV4ZWMtPmR5bmFtaWNHbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpLCBzb3Vy
Y2UpOwpAQCAtOTQsMTAgKzkzLDkgQEAgdm9pZCBKU0dhcmJhZ2VDb2xsZWN0KEpTQ29udGV4dFJl
ZiBjdHgpCiAgICAgICAgIHJldHVybjsKIAogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4
KTsKLSAgICBKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEgPSBleGVjLT5nbG9iYWxEYXRhKCk7Ci0K
LSAgICBKU0xvY2sgbG9jayhnbG9iYWxEYXRhLmlzU2hhcmVkSW5zdGFuY2UgPyBMb2NrRm9yUmVh
bCA6IFNpbGVuY2VBc3NlcnRpb25zT25seSk7CisgICAgQVBJRW50cnlTaGltIGVudHJ5U2hpbShl
eGVjLCBmYWxzZSk7CiAKKyAgICBKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEgPSBleGVjLT5nbG9i
YWxEYXRhKCk7CiAgICAgaWYgKCFnbG9iYWxEYXRhLmhlYXAuaXNCdXN5KCkpCiAgICAgICAgIGds
b2JhbERhdGEuaGVhcC5jb2xsZWN0QWxsR2FyYmFnZSgpOwogCkBAIC0xMDksOCArMTA3LDYgQEAg
dm9pZCBKU0dhcmJhZ2VDb2xsZWN0KEpTQ29udGV4dFJlZiBjdHgpCiB2b2lkIEpTUmVwb3J0RXh0
cmFNZW1vcnlDb3N0KEpTQ29udGV4dFJlZiBjdHgsIHNpemVfdCBzaXplKQogewogICAgIEV4ZWNT
dGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKLSAgICBleGVjLT5nbG9iYWxEYXRhKCkuaGVhcC5yZWdp
c3RlclRocmVhZCgpOwotICAgIEpTTG9jayBsb2NrKGV4ZWMpOwotCisgICAgQVBJRW50cnlTaGlt
IGVudHJ5U2hpbShleGVjKTsKICAgICBleGVjLT5nbG9iYWxEYXRhKCkuaGVhcC5yZXBvcnRFeHRy
YU1lbW9yeUNvc3Qoc2l6ZSk7CiB9CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFj
a0NvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxs
YmFja0NvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gNTI0OTgpCisrKyBKYXZhU2NyaXB0Q29yZS9B
UEkvSlNDYWxsYmFja0NvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYs
NyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkpTQ2FsbGJhY2tDb25zdHJ1Y3Rv
ci5oIgogCisjaW5jbHVkZSAiQVBJU2hpbXMuaCIKICNpbmNsdWRlICJBUElDYXN0LmgiCiAjaW5j
bHVkZSA8cnVudGltZS9KU0dsb2JhbE9iamVjdC5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNMb2Nr
Lmg+CkBAIC02Niw3ICs2Nyw3IEBAIHN0YXRpYyBKU09iamVjdCogY29uc3RydWN0SlNDYWxsYmFj
ayhFeGUKICAgICAgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSAwOwogICAgICAgICBKU09iamVj
dFJlZiByZXN1bHQ7CiAgICAgICAgIHsKLSAgICAgICAgICAgIEpTTG9jazo6RHJvcEFsbExvY2tz
IGRyb3BBbGxMb2NrcyhleGVjKTsKKyAgICAgICAgICAgIEFQSUNhbGxiYWNrU2hpbSBjYWxsYmFj
a1NoaW0oZXhlYyk7CiAgICAgICAgICAgICByZXN1bHQgPSBjYWxsYmFjayhjdHgsIGNvbnN0cnVj
dG9yUmVmLCBhcmd1bWVudENvdW50LCBhcmd1bWVudHMuZGF0YSgpLCAmZXhjZXB0aW9uKTsKICAg
ICAgICAgfQogICAgICAgICBpZiAoZXhjZXB0aW9uKQpJbmRleDogSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQ2FsbGJhY2tGdW5jdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQ2FsbGJhY2tGdW5jdGlvbi5jcHAJKHJldmlzaW9uIDUyNDk4KQorKysgSmF2YVNjcmlwdENv
cmUvQVBJL0pTQ2FsbGJhY2tGdW5jdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3
LDcgQEAKICNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KICNpbmNsdWRlICJKU0NhbGxiYWNrRnVu
Y3Rpb24uaCIKIAorI2luY2x1ZGUgIkFQSVNoaW1zLmgiCiAjaW5jbHVkZSAiQVBJQ2FzdC5oIgog
I2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKQEAgLTYxLDcg
KzYyLDcgQEAgSlNWYWx1ZSBKU0NhbGxiYWNrRnVuY3Rpb246OmNhbGwoRXhlY1N0YQogICAgIEpT
VmFsdWVSZWYgZXhjZXB0aW9uID0gMDsKICAgICBKU1ZhbHVlUmVmIHJlc3VsdDsKICAgICB7Ci0g
ICAgICAgIEpTTG9jazo6RHJvcEFsbExvY2tzIGRyb3BBbGxMb2NrcyhleGVjKTsKKyAgICAgICAg
QVBJQ2FsbGJhY2tTaGltIGNhbGxiYWNrU2hpbShleGVjKTsKICAgICAgICAgcmVzdWx0ID0gc3Rh
dGljX2Nhc3Q8SlNDYWxsYmFja0Z1bmN0aW9uKj4oZnVuY3Rpb25PYmplY3QpLT5tX2NhbGxiYWNr
KGV4ZWNSZWYsIGZ1bmN0aW9uUmVmLCB0aGlzT2JqUmVmLCBhcmd1bWVudENvdW50LCBhcmd1bWVu
dHMuZGF0YSgpLCAmZXhjZXB0aW9uKTsKICAgICB9CiAgICAgaWYgKGV4Y2VwdGlvbikKSW5kZXg6
IEphdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAkocmV2
aXNpb24gNTI0OTgpCisrKyBKYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0
aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw2ICsyNCw3IEBACiAgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
ICAqLwogCisjaW5jbHVkZSAiQVBJU2hpbXMuaCIKICNpbmNsdWRlICJBUElDYXN0LmgiCiAjaW5j
bHVkZSAiRXJyb3IuaCIKICNpbmNsdWRlICJKU0NhbGxiYWNrRnVuY3Rpb24uaCIKQEAgLTc5LDcg
KzgwLDcgQEAgdm9pZCBKU0NhbGxiYWNrT2JqZWN0PEJhc2U+Ojppbml0KEV4ZWNTdAogICAgIAog
ICAgIC8vIGluaXRpYWxpemUgZnJvbSBiYXNlIHRvIGRlcml2ZWQKICAgICBmb3IgKGludCBpID0g
c3RhdGljX2Nhc3Q8aW50Pihpbml0Um91dGluZXMuc2l6ZSgpKSAtIDE7IGkgPj0gMDsgaS0tKSB7
Ci0gICAgICAgIEpTTG9jazo6RHJvcEFsbExvY2tzIGRyb3BBbGxMb2NrcyhleGVjKTsKKyAgICAg
ICAgQVBJQ2FsbGJhY2tTaGltIGNhbGxiYWNrU2hpbShleGVjKTsKICAgICAgICAgSlNPYmplY3RJ
bml0aWFsaXplQ2FsbGJhY2sgaW5pdGlhbGl6ZSA9IGluaXRSb3V0aW5lc1tpXTsKICAgICAgICAg
aW5pdGlhbGl6ZSh0b1JlZihleGVjKSwgdG9SZWYodGhpcykpOwogICAgIH0KQEAgLTExNyw3ICsx
MTgsNyBAQCBib29sIEpTQ2FsbGJhY2tPYmplY3Q8QmFzZT46OmdldE93blByb3BlCiAgICAgICAg
IGlmIChKU09iamVjdEhhc1Byb3BlcnR5Q2FsbGJhY2sgaGFzUHJvcGVydHkgPSBqc0NsYXNzLT5o
YXNQcm9wZXJ0eSkgewogICAgICAgICAgICAgaWYgKCFwcm9wZXJ0eU5hbWVSZWYpCiAgICAgICAg
ICAgICAgICAgcHJvcGVydHlOYW1lUmVmID0gT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShwcm9wZXJ0
eU5hbWUudXN0cmluZygpKTsKLSAgICAgICAgICAgIEpTTG9jazo6RHJvcEFsbExvY2tzIGRyb3BB
bGxMb2NrcyhleGVjKTsKKyAgICAgICAgICAgIEFQSUNhbGxiYWNrU2hpbSBjYWxsYmFja1NoaW0o
ZXhlYyk7CiAgICAgICAgICAgICBpZiAoaGFzUHJvcGVydHkoY3R4LCB0aGlzUmVmLCBwcm9wZXJ0
eU5hbWVSZWYuZ2V0KCkpKSB7CiAgICAgICAgICAgICAgICAgc2xvdC5zZXRDdXN0b20odGhpcywg
Y2FsbGJhY2tHZXR0ZXIpOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTI4LDcg
KzEyOSw3IEBAIGJvb2wgSlNDYWxsYmFja09iamVjdDxCYXNlPjo6Z2V0T3duUHJvcGUKICAgICAg
ICAgICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gMDsKICAgICAgICAgICAgIEpTVmFsdWVSZWYg
dmFsdWU7CiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgSlNMb2NrOjpEcm9wQWxsTG9j
a3MgZHJvcEFsbExvY2tzKGV4ZWMpOworICAgICAgICAgICAgICAgIEFQSUNhbGxiYWNrU2hpbSBj
YWxsYmFja1NoaW0oZXhlYyk7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBnZXRQcm9wZXJ0eShj
dHgsIHRoaXNSZWYsIHByb3BlcnR5TmFtZVJlZi5nZXQoKSwgJmV4Y2VwdGlvbik7CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICBpZiAoZXhjZXB0aW9uKSB7CkBAIC0xODEsNyArMTgyLDcgQEAg
dm9pZCBKU0NhbGxiYWNrT2JqZWN0PEJhc2U+OjpwdXQoRXhlY1N0YQogICAgICAgICAgICAgSlNW
YWx1ZVJlZiBleGNlcHRpb24gPSAwOwogICAgICAgICAgICAgYm9vbCByZXN1bHQ7CiAgICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgSlNMb2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tz
KGV4ZWMpOworICAgICAgICAgICAgICAgIEFQSUNhbGxiYWNrU2hpbSBjYWxsYmFja1NoaW0oZXhl
Yyk7CiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gc2V0UHJvcGVydHkoY3R4LCB0aGlzUmVmLCBw
cm9wZXJ0eU5hbWVSZWYuZ2V0KCksIHZhbHVlUmVmLCAmZXhjZXB0aW9uKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIGlmIChleGNlcHRpb24pCkBAIC0yMDAsNyArMjAxLDcgQEAgdm9pZCBK
U0NhbGxiYWNrT2JqZWN0PEJhc2U+OjpwdXQoRXhlY1N0YQogICAgICAgICAgICAgICAgICAgICBK
U1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IDA7CiAgICAgICAgICAgICAgICAgICAgIGJvb2wgcmVzdWx0
OwogICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBKU0xvY2s6
OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoZXhlYyk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBBUElDYWxsYmFja1NoaW0gY2FsbGJhY2tTaGltKGV4ZWMpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgcmVzdWx0ID0gc2V0UHJvcGVydHkoY3R4LCB0aGlzUmVmLCBwcm9wZXJ0eU5hbWVSZWYu
Z2V0KCksIHZhbHVlUmVmLCAmZXhjZXB0aW9uKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgICAgICBpZiAoZXhjZXB0aW9uKQpAQCAtMjM5LDcgKzI0MCw3IEBAIGJvb2wg
SlNDYWxsYmFja09iamVjdDxCYXNlPjo6ZGVsZXRlUHJvcGUKICAgICAgICAgICAgIEpTVmFsdWVS
ZWYgZXhjZXB0aW9uID0gMDsKICAgICAgICAgICAgIGJvb2wgcmVzdWx0OwogICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIEpTTG9jazo6RHJvcEFsbExvY2tzIGRyb3BBbGxMb2NrcyhleGVj
KTsKKyAgICAgICAgICAgICAgICBBUElDYWxsYmFja1NoaW0gY2FsbGJhY2tTaGltKGV4ZWMpOwog
ICAgICAgICAgICAgICAgIHJlc3VsdCA9IGRlbGV0ZVByb3BlcnR5KGN0eCwgdGhpc1JlZiwgcHJv
cGVydHlOYW1lUmVmLmdldCgpLCAmZXhjZXB0aW9uKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIGlmIChleGNlcHRpb24pCkBAIC0zMDEsNyArMzAyLDcgQEAgSlNPYmplY3QqIEpTQ2FsbGJh
Y2tPYmplY3Q8QmFzZT46OmNvbnN0cgogICAgICAgICAgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24g
PSAwOwogICAgICAgICAgICAgSlNPYmplY3QqIHJlc3VsdDsKICAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICBKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoZXhlYyk7CisgICAg
ICAgICAgICAgICAgQVBJQ2FsbGJhY2tTaGltIGNhbGxiYWNrU2hpbShleGVjKTsKICAgICAgICAg
ICAgICAgICByZXN1bHQgPSB0b0pTKGNhbGxBc0NvbnN0cnVjdG9yKGV4ZWNSZWYsIGNvbnN0cnVj
dG9yUmVmLCBhcmd1bWVudENvdW50LCBhcmd1bWVudHMuZGF0YSgpLCAmZXhjZXB0aW9uKSk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoZXhjZXB0aW9uKQpAQCAtMzI2LDcgKzMyNyw3
IEBAIGJvb2wgSlNDYWxsYmFja09iamVjdDxCYXNlPjo6aGFzSW5zdGFuY2UKICAgICAgICAgICAg
IEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gMDsKICAgICAgICAgICAgIGJvb2wgcmVzdWx0OwogICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgIEpTTG9jazo6RHJvcEFsbExvY2tzIGRyb3BBbGxM
b2NrcyhleGVjKTsKKyAgICAgICAgICAgICAgICBBUElDYWxsYmFja1NoaW0gY2FsbGJhY2tTaGlt
KGV4ZWMpOwogICAgICAgICAgICAgICAgIHJlc3VsdCA9IGhhc0luc3RhbmNlKGV4ZWNSZWYsIHRo
aXNSZWYsIHZhbHVlUmVmLCAmZXhjZXB0aW9uKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IGlmIChleGNlcHRpb24pCkBAIC0zNjUsNyArMzY2LDcgQEAgSlNWYWx1ZSBKU0NhbGxiYWNrT2Jq
ZWN0PEJhc2U+OjpjYWxsKEV4ZQogICAgICAgICAgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSAw
OwogICAgICAgICAgICAgSlNWYWx1ZSByZXN1bHQ7CiAgICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgSlNMb2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzKGV4ZWMpOworICAgICAgICAg
ICAgICAgIEFQSUNhbGxiYWNrU2hpbSBjYWxsYmFja1NoaW0oZXhlYyk7CiAgICAgICAgICAgICAg
ICAgcmVzdWx0ID0gdG9KUyhleGVjLCBjYWxsQXNGdW5jdGlvbihleGVjUmVmLCBmdW5jdGlvblJl
ZiwgdGhpc09ialJlZiwgYXJndW1lbnRDb3VudCwgYXJndW1lbnRzLmRhdGEoKSwgJmV4Y2VwdGlv
bikpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGV4Y2VwdGlvbikKQEAgLTM4Niw3
ICszODcsNyBAQCB2b2lkIEpTQ2FsbGJhY2tPYmplY3Q8QmFzZT46OmdldE93blByb3BlCiAgICAg
CiAgICAgZm9yIChKU0NsYXNzUmVmIGpzQ2xhc3MgPSBjbGFzc1JlZigpOyBqc0NsYXNzOyBqc0Ns
YXNzID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsKICAgICAgICAgaWYgKEpTT2JqZWN0R2V0UHJv
cGVydHlOYW1lc0NhbGxiYWNrIGdldFByb3BlcnR5TmFtZXMgPSBqc0NsYXNzLT5nZXRQcm9wZXJ0
eU5hbWVzKSB7Ci0gICAgICAgICAgICBKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3Mo
ZXhlYyk7CisgICAgICAgICAgICBBUElDYWxsYmFja1NoaW0gY2FsbGJhY2tTaGltKGV4ZWMpOwog
ICAgICAgICAgICAgZ2V0UHJvcGVydHlOYW1lcyhleGVjUmVmLCB0aGlzUmVmLCB0b1JlZigmcHJv
cGVydHlOYW1lcykpOwogICAgICAgICB9CiAgICAgICAgIApAQCAtNDMyLDcgKzQzMyw3IEBAIGRv
dWJsZSBKU0NhbGxiYWNrT2JqZWN0PEJhc2U+Ojp0b051bWJlcigKICAgICAgICAgICAgIEpTVmFs
dWVSZWYgZXhjZXB0aW9uID0gMDsKICAgICAgICAgICAgIEpTVmFsdWVSZWYgdmFsdWU7CiAgICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgSlNMb2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFsbExv
Y2tzKGV4ZWMpOworICAgICAgICAgICAgICAgIEFQSUNhbGxiYWNrU2hpbSBjYWxsYmFja1NoaW0o
ZXhlYyk7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBjb252ZXJ0VG9UeXBlKGN0eCwgdGhpc1Jl
Ziwga0pTVHlwZU51bWJlciwgJmV4Y2VwdGlvbik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBpZiAoZXhjZXB0aW9uKSB7CkBAIC00NTksNyArNDYwLDcgQEAgVVN0cmluZyBKU0NhbGxiYWNr
T2JqZWN0PEJhc2U+Ojp0b1N0cmluZwogICAgICAgICAgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24g
PSAwOwogICAgICAgICAgICAgSlNWYWx1ZVJlZiB2YWx1ZTsKICAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICBKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoZXhlYyk7CisgICAg
ICAgICAgICAgICAgQVBJQ2FsbGJhY2tTaGltIGNhbGxiYWNrU2hpbShleGVjKTsKICAgICAgICAg
ICAgICAgICB2YWx1ZSA9IGNvbnZlcnRUb1R5cGUoY3R4LCB0aGlzUmVmLCBrSlNUeXBlU3RyaW5n
LCAmZXhjZXB0aW9uKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChleGNlcHRpb24p
IHsKQEAgLTUxMiw3ICs1MTMsNyBAQCBKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8QmFzZT46OnN0
YXRpY1ZhCiAgICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gMDsKICAg
ICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZiB2YWx1ZTsKICAgICAgICAgICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgICAgICAgICAgSlNMb2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFsbExv
Y2tzKGV4ZWMpOworICAgICAgICAgICAgICAgICAgICAgICAgQVBJQ2FsbGJhY2tTaGltIGNhbGxi
YWNrU2hpbShleGVjKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gZ2V0UHJvcGVy
dHkodG9SZWYoZXhlYyksIHRoaXNSZWYsIHByb3BlcnR5TmFtZVJlZi5nZXQoKSwgJmV4Y2VwdGlv
bik7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgaWYgKGV4Y2Vw
dGlvbikgewpAQCAtNTY2LDcgKzU2Nyw3IEBAIEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxCYXNl
Pjo6Y2FsbGJhY2sKICAgICAgICAgICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gMDsKICAgICAg
ICAgICAgIEpTVmFsdWVSZWYgdmFsdWU7CiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
SlNMb2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzKGV4ZWMpOworICAgICAgICAgICAgICAg
IEFQSUNhbGxiYWNrU2hpbSBjYWxsYmFja1NoaW0oZXhlYyk7CiAgICAgICAgICAgICAgICAgdmFs
dWUgPSBnZXRQcm9wZXJ0eSh0b1JlZihleGVjKSwgdGhpc1JlZiwgcHJvcGVydHlOYW1lUmVmLmdl
dCgpLCAmZXhjZXB0aW9uKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChleGNlcHRp
b24pIHsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIEphdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuY3BwCShyZXZpc2lvbiA1MjQ5
OCkKKysrIEphdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC04NCw4ICs4NCw4IEBAIEpTR2xvYmFsQ29udGV4dFJlZiBKU0dsb2JhbENvbnRleHRDcmVh
dGUKICAgICBpbml0aWFsaXplVGhyZWFkaW5nKCk7CiAKICAgICBKU0xvY2sgbG9jayhMb2NrRm9y
UmVhbCk7Ci0KICAgICBSZWZQdHI8SlNHbG9iYWxEYXRhPiBnbG9iYWxEYXRhID0gZ3JvdXAgPyBQ
YXNzUmVmUHRyPEpTR2xvYmFsRGF0YT4odG9KUyhncm91cCkpIDogSlNHbG9iYWxEYXRhOjpjcmVh
dGUoKTsKKyAgICBBUElFbnRyeVNoaW0oZ2xvYmFsRGF0YS5nZXQoKSwgZmFsc2UpOwogCiAjaWYg
RU5BQkxFKEpTQ19NVUxUSVBMRV9USFJFQURTKQogICAgIGdsb2JhbERhdGEtPm1ha2VVc2FibGVG
cm9tTXVsdGlwbGVUaHJlYWRzKCk7CkBAIC0xMDgsMTIgKzEwOCw5IEBAIEpTR2xvYmFsQ29udGV4
dFJlZiBKU0dsb2JhbENvbnRleHRDcmVhdGUKIEpTR2xvYmFsQ29udGV4dFJlZiBKU0dsb2JhbENv
bnRleHRSZXRhaW4oSlNHbG9iYWxDb250ZXh0UmVmIGN0eCkKIHsKICAgICBFeGVjU3RhdGUqIGV4
ZWMgPSB0b0pTKGN0eCk7Ci0gICAgSlNMb2NrIGxvY2soZXhlYyk7CisgICAgQVBJRW50cnlTaGlt
IGVudHJ5U2hpbShleGVjKTsKIAogICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9IGV4ZWMt
Pmdsb2JhbERhdGEoKTsKLQotICAgIGdsb2JhbERhdGEuaGVhcC5yZWdpc3RlclRocmVhZCgpOwot
CiAgICAgZ2NQcm90ZWN0KGV4ZWMtPmR5bmFtaWNHbG9iYWxPYmplY3QoKSk7CiAgICAgZ2xvYmFs
RGF0YS5yZWYoKTsKICAgICByZXR1cm4gY3R4OwpAQCAtMTIyLDcgKzExOSw3IEBAIEpTR2xvYmFs
Q29udGV4dFJlZiBKU0dsb2JhbENvbnRleHRSZXRhaW4KIHZvaWQgSlNHbG9iYWxDb250ZXh0UmVs
ZWFzZShKU0dsb2JhbENvbnRleHRSZWYgY3R4KQogewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRv
SlMoY3R4KTsKLSAgICBKU0xvY2sgbG9jayhleGVjKTsKKyAgICBBUElFbnRyeVNoaW0gZW50cnlT
aGltKGV4ZWMsIGZhbHNlKTsKIAogICAgIGdjVW5wcm90ZWN0KGV4ZWMtPmR5bmFtaWNHbG9iYWxP
YmplY3QoKSk7CiAKQEAgLTE0MSw4ICsxMzgsNyBAQCB2b2lkIEpTR2xvYmFsQ29udGV4dFJlbGVh
c2UoSlNHbG9iYWxDb250CiBKU09iamVjdFJlZiBKU0NvbnRleHRHZXRHbG9iYWxPYmplY3QoSlND
b250ZXh0UmVmIGN0eCkKIHsKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGN0eCk7Ci0gICAg
ZXhlYy0+Z2xvYmFsRGF0YSgpLmhlYXAucmVnaXN0ZXJUaHJlYWQoKTsKLSAgICBKU0xvY2sgbG9j
ayhleGVjKTsKKyAgICBBUElFbnRyeVNoaW0gZW50cnlTaGltKGV4ZWMpOwogCiAgICAgLy8gSXQg
aXMgbmVjZXNzYXJ5IHRvIGNhbGwgdG9UaGlzT2JqZWN0IHRvIGdldCB0aGUgd3JhcHBlciBvYmpl
Y3Qgd2hlbiB1c2VkIHdpdGggV2ViQ29yZS4KICAgICByZXR1cm4gdG9SZWYoZXhlYy0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpLT50b1RoaXNPYmplY3QoZXhlYykpOwpAQCAtMTU3LDggKzE1Myw3IEBA
IEpTQ29udGV4dEdyb3VwUmVmIEpTQ29udGV4dEdldEdyb3VwKEpTQ28KIEpTR2xvYmFsQ29udGV4
dFJlZiBKU0NvbnRleHRHZXRHbG9iYWxDb250ZXh0KEpTQ29udGV4dFJlZiBjdHgpCiB7CiAgICAg
RXhlY1N0YXRlKiBleGVjID0gdG9KUyhjdHgpOwotICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5oZWFw
LnJlZ2lzdGVyVGhyZWFkKCk7Ci0gICAgSlNMb2NrIGxvY2soZXhlYyk7CisgICAgQVBJRW50cnlT
aGltIGVudHJ5U2hpbShleGVjKTsKIAogICAgIHJldHVybiB0b0dsb2JhbFJlZihleGVjLT5sZXhp
Y2FsR2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSk7CiB9CkluZGV4OiBKYXZhU2NyaXB0Q29y
ZS9BUEkvSlNPYmplY3RSZWYuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL0FQSS9K
U09iamVjdFJlZi5jcHAJKHJldmlzaW9uIDUyNDk4KQorKysgSmF2YVNjcmlwdENvcmUvQVBJL0pT
T2JqZWN0UmVmLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzYsOCArNzYsNyBAQCB2b2lkIEpTQ2xh
c3NSZWxlYXNlKEpTQ2xhc3NSZWYganNDbGFzcykKIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZShK
U0NvbnRleHRSZWYgY3R4LCBKU0NsYXNzUmVmIGpzQ2xhc3MsIHZvaWQqIGRhdGEpCiB7CiAgICAg
RXhlY1N0YXRlKiBleGVjID0gdG9KUyhjdHgpOwotICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5oZWFw
LnJlZ2lzdGVyVGhyZWFkKCk7Ci0gICAgSlNMb2NrIGxvY2soZXhlYyk7CisgICAgQVBJRW50cnlT
aGltIGVudHJ5U2hpbShleGVjKTsKIAogICAgIGlmICghanNDbGFzcykKICAgICAgICAgcmV0dXJu
IHRvUmVmKG5ldyAoZXhlYykgSlNPYmplY3QoZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5l
bXB0eU9iamVjdFN0cnVjdHVyZSgpKSk7IC8vIHNsaWdodGx5IG1vcmUgZWZmaWNpZW50CkBAIC05
Miw4ICs5MSw3IEBAIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZShKU0NvbnRleHRSZWYgY3QKIEpT
T2JqZWN0UmVmIEpTT2JqZWN0TWFrZUZ1bmN0aW9uV2l0aENhbGxiYWNrKEpTQ29udGV4dFJlZiBj
dHgsIEpTU3RyaW5nUmVmIG5hbWUsIEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb25DYWxsYmFjayBjYWxs
QXNGdW5jdGlvbikKIHsKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGN0eCk7Ci0gICAgZXhl
Yy0+Z2xvYmFsRGF0YSgpLmhlYXAucmVnaXN0ZXJUaHJlYWQoKTsKLSAgICBKU0xvY2sgbG9jayhl
eGVjKTsKKyAgICBBUElFbnRyeVNoaW0gZW50cnlTaGltKGV4ZWMpOwogCiAgICAgSWRlbnRpZmll
ciBuYW1lSUQgPSBuYW1lID8gbmFtZS0+aWRlbnRpZmllcigmZXhlYy0+Z2xvYmFsRGF0YSgpKSA6
IElkZW50aWZpZXIoZXhlYywgImFub255bW91cyIpOwogICAgIApAQCAtMTAzLDggKzEwMSw3IEBA
IEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZUZ1bmN0aW9uV2l0aENhbGwKIEpTT2JqZWN0UmVmIEpT
T2JqZWN0TWFrZUNvbnN0cnVjdG9yKEpTQ29udGV4dFJlZiBjdHgsIEpTQ2xhc3NSZWYganNDbGFz
cywgSlNPYmplY3RDYWxsQXNDb25zdHJ1Y3RvckNhbGxiYWNrIGNhbGxBc0NvbnN0cnVjdG9yKQog
ewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKLSAgICBleGVjLT5nbG9iYWxEYXRh
KCkuaGVhcC5yZWdpc3RlclRocmVhZCgpOwotICAgIEpTTG9jayBsb2NrKGV4ZWMpOworICAgIEFQ
SUVudHJ5U2hpbSBlbnRyeVNoaW0oZXhlYyk7CiAKICAgICBKU1ZhbHVlIGpzUHJvdG90eXBlID0g
anNDbGFzcyA/IGpzQ2xhc3MtPnByb3RvdHlwZShleGVjKSA6IDA7CiAgICAgaWYgKCFqc1Byb3Rv
dHlwZSkKQEAgLTExOCw4ICsxMTUsNyBAQCBKU09iamVjdFJlZiBKU09iamVjdE1ha2VDb25zdHJ1
Y3RvcihKU0NvCiBKU09iamVjdFJlZiBKU09iamVjdE1ha2VGdW5jdGlvbihKU0NvbnRleHRSZWYg
Y3R4LCBKU1N0cmluZ1JlZiBuYW1lLCB1bnNpZ25lZCBwYXJhbWV0ZXJDb3VudCwgY29uc3QgSlNT
dHJpbmdSZWYgcGFyYW1ldGVyTmFtZXNbXSwgSlNTdHJpbmdSZWYgYm9keSwgSlNTdHJpbmdSZWYg
c291cmNlVVJMLCBpbnQgc3RhcnRpbmdMaW5lTnVtYmVyLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24p
CiB7CiAgICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhjdHgpOwotICAgIGV4ZWMtPmdsb2JhbERh
dGEoKS5oZWFwLnJlZ2lzdGVyVGhyZWFkKCk7Ci0gICAgSlNMb2NrIGxvY2soZXhlYyk7CisgICAg
QVBJRW50cnlTaGltIGVudHJ5U2hpbShleGVjKTsKIAogICAgIElkZW50aWZpZXIgbmFtZUlEID0g
bmFtZSA/IG5hbWUtPmlkZW50aWZpZXIoJmV4ZWMtPmdsb2JhbERhdGEoKSkgOiBJZGVudGlmaWVy
KGV4ZWMsICJhbm9ueW1vdXMiKTsKICAgICAKQEAgLTE0MSw4ICsxMzcsNyBAQCBKU09iamVjdFJl
ZiBKU09iamVjdE1ha2VGdW5jdGlvbihKU0NvbnRlCiBKU09iamVjdFJlZiBKU09iamVjdE1ha2VB
cnJheShKU0NvbnRleHRSZWYgY3R4LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1
ZVJlZiBhcmd1bWVudHNbXSwgIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsKICAgICBFeGVjU3Rh
dGUqIGV4ZWMgPSB0b0pTKGN0eCk7Ci0gICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmhlYXAucmVnaXN0
ZXJUaHJlYWQoKTsKLSAgICBKU0xvY2sgbG9jayhleGVjKTsKKyAgICBBUElFbnRyeVNoaW0gZW50
cnlTaGltKGV4ZWMpOwogCiAgICAgSlNPYmplY3QqIHJlc3VsdDsKICAgICBpZiAoYXJndW1lbnRD
b3VudCkgewpAQCAtMTY3LDggKzE2Miw3IEBAIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZUFycmF5
KEpTQ29udGV4dFIKIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZURhdGUoSlNDb250ZXh0UmVmIGN0
eCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sICBK
U1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7CiAgICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhjdHgp
OwotICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5oZWFwLnJlZ2lzdGVyVGhyZWFkKCk7Ci0gICAgSlNM
b2NrIGxvY2soZXhlYyk7CisgICAgQVBJRW50cnlTaGltIGVudHJ5U2hpbShleGVjKTsKIAogICAg
IE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ0xpc3Q7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBhcmd1bWVudENvdW50OyArK2kpCkBAIC0xODgsOCArMTgyLDcgQEAgSlNPYmplY3RSZWYgSlNP
YmplY3RNYWtlRGF0ZShKU0NvbnRleHRSZQogSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlRXJyb3Io
SlNDb250ZXh0UmVmIGN0eCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYg
YXJndW1lbnRzW10sICBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7CiAgICAgRXhlY1N0YXRlKiBl
eGVjID0gdG9KUyhjdHgpOwotICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5oZWFwLnJlZ2lzdGVyVGhy
ZWFkKCk7Ci0gICAgSlNMb2NrIGxvY2soZXhlYyk7CisgICAgQVBJRW50cnlTaGltIGVudHJ5U2hp
bShleGVjKTsKIAogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ0xpc3Q7CiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBhcmd1bWVudENvdW50OyArK2kpCkBAIC0yMDksOCArMjAyLDcgQEAg
SlNPYmplY3RSZWYgSlNPYmplY3RNYWtlRXJyb3IoSlNDb250ZXh0UgogSlNPYmplY3RSZWYgSlNP
YmplY3RNYWtlUmVnRXhwKEpTQ29udGV4dFJlZiBjdHgsIHNpemVfdCBhcmd1bWVudENvdW50LCBj
b25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCAgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewog
ICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKLSAgICBleGVjLT5nbG9iYWxEYXRhKCku
aGVhcC5yZWdpc3RlclRocmVhZCgpOwotICAgIEpTTG9jayBsb2NrKGV4ZWMpOworICAgIEFQSUVu
dHJ5U2hpbSBlbnRyeVNoaW0oZXhlYyk7CiAKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdM
aXN0OwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJndW1lbnRDb3VudDsgKytpKQpAQCAt
MjMwLDggKzIyMiw3IEBAIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZVJlZ0V4cChKU0NvbnRleHQK
IEpTVmFsdWVSZWYgSlNPYmplY3RHZXRQcm90b3R5cGUoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmpl
Y3RSZWYgb2JqZWN0KQogewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKLSAgICBl
eGVjLT5nbG9iYWxEYXRhKCkuaGVhcC5yZWdpc3RlclRocmVhZCgpOwotICAgIEpTTG9jayBsb2Nr
KGV4ZWMpOworICAgIEFQSUVudHJ5U2hpbSBlbnRyeVNoaW0oZXhlYyk7CiAKICAgICBKU09iamVj
dCoganNPYmplY3QgPSB0b0pTKG9iamVjdCk7CiAgICAgcmV0dXJuIHRvUmVmKGV4ZWMsIGpzT2Jq
ZWN0LT5wcm90b3R5cGUoKSk7CkBAIC0yNDAsOCArMjMxLDcgQEAgSlNWYWx1ZVJlZiBKU09iamVj
dEdldFByb3RvdHlwZShKU0NvbnRleAogdm9pZCBKU09iamVjdFNldFByb3RvdHlwZShKU0NvbnRl
eHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpTVmFsdWVSZWYgdmFsdWUpCiB7CiAgICAg
RXhlY1N0YXRlKiBleGVjID0gdG9KUyhjdHgpOwotICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5oZWFw
LnJlZ2lzdGVyVGhyZWFkKCk7Ci0gICAgSlNMb2NrIGxvY2soZXhlYyk7CisgICAgQVBJRW50cnlT
aGltIGVudHJ5U2hpbShleGVjKTsKIAogICAgIEpTT2JqZWN0KiBqc09iamVjdCA9IHRvSlMob2Jq
ZWN0KTsKICAgICBKU1ZhbHVlIGpzVmFsdWUgPSB0b0pTKGV4ZWMsIHZhbHVlKTsKQEAgLTI1Miw4
ICsyNDIsNyBAQCB2b2lkIEpTT2JqZWN0U2V0UHJvdG90eXBlKEpTQ29udGV4dFJlZiBjCiBib29s
IEpTT2JqZWN0SGFzUHJvcGVydHkoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0
LCBKU1N0cmluZ1JlZiBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgRXhlY1N0YXRlKiBleGVjID0gdG9K
UyhjdHgpOwotICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5oZWFwLnJlZ2lzdGVyVGhyZWFkKCk7Ci0g
ICAgSlNMb2NrIGxvY2soZXhlYyk7CisgICAgQVBJRW50cnlTaGltIGVudHJ5U2hpbShleGVjKTsK
IAogICAgIEpTT2JqZWN0KiBqc09iamVjdCA9IHRvSlMob2JqZWN0KTsKICAgICAKQEAgLTI2Myw4
ICsyNTIsNyBAQCBib29sIEpTT2JqZWN0SGFzUHJvcGVydHkoSlNDb250ZXh0UmVmIGN0CiBKU1Zh
bHVlUmVmIEpTT2JqZWN0R2V0UHJvcGVydHkoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYg
b2JqZWN0LCBKU1N0cmluZ1JlZiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikK
IHsKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGN0eCk7Ci0gICAgZXhlYy0+Z2xvYmFsRGF0
YSgpLmhlYXAucmVnaXN0ZXJUaHJlYWQoKTsKLSAgICBKU0xvY2sgbG9jayhleGVjKTsKKyAgICBB
UElFbnRyeVNoaW0gZW50cnlTaGltKGV4ZWMpOwogCiAgICAgSlNPYmplY3QqIGpzT2JqZWN0ID0g
dG9KUyhvYmplY3QpOwogCkBAIC0yODAsOCArMjY4LDcgQEAgSlNWYWx1ZVJlZiBKU09iamVjdEdl
dFByb3BlcnR5KEpTQ29udGV4dAogdm9pZCBKU09iamVjdFNldFByb3BlcnR5KEpTQ29udGV4dFJl
ZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNTdHJpbmdSZWYgcHJvcGVydHlOYW1lLCBKU1Zh
bHVlUmVmIHZhbHVlLCBKU1Byb3BlcnR5QXR0cmlidXRlcyBhdHRyaWJ1dGVzLCBKU1ZhbHVlUmVm
KiBleGNlcHRpb24pCiB7CiAgICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhjdHgpOwotICAgIGV4
ZWMtPmdsb2JhbERhdGEoKS5oZWFwLnJlZ2lzdGVyVGhyZWFkKCk7Ci0gICAgSlNMb2NrIGxvY2so
ZXhlYyk7CisgICAgQVBJRW50cnlTaGltIGVudHJ5U2hpbShleGVjKTsKIAogICAgIEpTT2JqZWN0
KiBqc09iamVjdCA9IHRvSlMob2JqZWN0KTsKICAgICBJZGVudGlmaWVyIG5hbWUocHJvcGVydHlO
YW1lLT5pZGVudGlmaWVyKCZleGVjLT5nbG9iYWxEYXRhKCkpKTsKQEAgLTMwNCw4ICsyOTEsNyBA
QCB2b2lkIEpTT2JqZWN0U2V0UHJvcGVydHkoSlNDb250ZXh0UmVmIGN0CiBKU1ZhbHVlUmVmIEpT
T2JqZWN0R2V0UHJvcGVydHlBdEluZGV4KEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9i
amVjdCwgdW5zaWduZWQgcHJvcGVydHlJbmRleCwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewog
ICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKLSAgICBleGVjLT5nbG9iYWxEYXRhKCku
aGVhcC5yZWdpc3RlclRocmVhZCgpOwotICAgIEpTTG9jayBsb2NrKGV4ZWMpOworICAgIEFQSUVu
dHJ5U2hpbSBlbnRyeVNoaW0oZXhlYyk7CiAKICAgICBKU09iamVjdCoganNPYmplY3QgPSB0b0pT
KG9iamVjdCk7CiAKQEAgLTMyMiw4ICszMDgsNyBAQCBKU1ZhbHVlUmVmIEpTT2JqZWN0R2V0UHJv
cGVydHlBdEluZGV4KEpTCiB2b2lkIEpTT2JqZWN0U2V0UHJvcGVydHlBdEluZGV4KEpTQ29udGV4
dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgdW5zaWduZWQgcHJvcGVydHlJbmRleCwgSlNW
YWx1ZVJlZiB2YWx1ZSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAgIEV4ZWNTdGF0ZSog
ZXhlYyA9IHRvSlMoY3R4KTsKLSAgICBleGVjLT5nbG9iYWxEYXRhKCkuaGVhcC5yZWdpc3RlclRo
cmVhZCgpOwotICAgIEpTTG9jayBsb2NrKGV4ZWMpOworICAgIEFQSUVudHJ5U2hpbSBlbnRyeVNo
aW0oZXhlYyk7CiAKICAgICBKU09iamVjdCoganNPYmplY3QgPSB0b0pTKG9iamVjdCk7CiAgICAg
SlNWYWx1ZSBqc1ZhbHVlID0gdG9KUyhleGVjLCB2YWx1ZSk7CkBAIC0zMzksOCArMzI0LDcgQEAg
dm9pZCBKU09iamVjdFNldFByb3BlcnR5QXRJbmRleChKU0NvbnRleAogYm9vbCBKU09iamVjdERl
bGV0ZVByb3BlcnR5KEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNTdHJp
bmdSZWYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7CiAgICAgRXhlY1N0
YXRlKiBleGVjID0gdG9KUyhjdHgpOwotICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5oZWFwLnJlZ2lz
dGVyVGhyZWFkKCk7Ci0gICAgSlNMb2NrIGxvY2soZXhlYyk7CisgICAgQVBJRW50cnlTaGltIGVu
dHJ5U2hpbShleGVjKTsKIAogICAgIEpTT2JqZWN0KiBqc09iamVjdCA9IHRvSlMob2JqZWN0KTsK
IApAQCAtMzg5LDggKzM3Myw3IEBAIGJvb2wgSlNPYmplY3RJc0Z1bmN0aW9uKEpTQ29udGV4dFJl
ZiwgSlMKIEpTVmFsdWVSZWYgSlNPYmplY3RDYWxsQXNGdW5jdGlvbihKU0NvbnRleHRSZWYgY3R4
LCBKU09iamVjdFJlZiBvYmplY3QsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1
bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNl
cHRpb24pCiB7CiAgICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhjdHgpOwotICAgIGV4ZWMtPmds
b2JhbERhdGEoKS5oZWFwLnJlZ2lzdGVyVGhyZWFkKCk7Ci0gICAgSlNMb2NrIGxvY2soZXhlYyk7
CisgICAgQVBJRW50cnlTaGltIGVudHJ5U2hpbShleGVjKTsKIAogICAgIEpTT2JqZWN0KiBqc09i
amVjdCA9IHRvSlMob2JqZWN0KTsKICAgICBKU09iamVjdCoganNUaGlzT2JqZWN0ID0gdG9KUyh0
aGlzT2JqZWN0KTsKQEAgLTQyNyw4ICs0MTAsNyBAQCBib29sIEpTT2JqZWN0SXNDb25zdHJ1Y3Rv
cihKU0NvbnRleHRSZWYsCiBKU09iamVjdFJlZiBKU09iamVjdENhbGxBc0NvbnN0cnVjdG9yKEpT
Q29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQs
IGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsK
ICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGN0eCk7Ci0gICAgZXhlYy0+Z2xvYmFsRGF0YSgp
LmhlYXAucmVnaXN0ZXJUaHJlYWQoKTsKLSAgICBKU0xvY2sgbG9jayhleGVjKTsKKyAgICBBUElF
bnRyeVNoaW0gZW50cnlTaGltKGV4ZWMpOwogCiAgICAgSlNPYmplY3QqIGpzT2JqZWN0ID0gdG9K
UyhvYmplY3QpOwogCkBAIC00NjYsOCArNDQ4LDcgQEAgSlNQcm9wZXJ0eU5hbWVBcnJheVJlZiBK
U09iamVjdENvcHlQcm9wZQogewogICAgIEpTT2JqZWN0KiBqc09iamVjdCA9IHRvSlMob2JqZWN0
KTsKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGN0eCk7Ci0gICAgZXhlYy0+Z2xvYmFsRGF0
YSgpLmhlYXAucmVnaXN0ZXJUaHJlYWQoKTsKLSAgICBKU0xvY2sgbG9jayhleGVjKTsKKyAgICBB
UElFbnRyeVNoaW0gZW50cnlTaGltKGV4ZWMpOwogCiAgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxE
YXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKIApAQCAtNDkyLDcgKzQ3Myw3IEBAIEpTUHJvcGVy
dHlOYW1lQXJyYXlSZWYgSlNQcm9wZXJ0eU5hbWVBcnIKIHZvaWQgSlNQcm9wZXJ0eU5hbWVBcnJh
eVJlbGVhc2UoSlNQcm9wZXJ0eU5hbWVBcnJheVJlZiBhcnJheSkKIHsKICAgICBpZiAoLS1hcnJh
eS0+cmVmQ291bnQgPT0gMCkgewotICAgICAgICBKU0xvY2sgbG9jayhhcnJheS0+Z2xvYmFsRGF0
YS0+aXNTaGFyZWRJbnN0YW5jZSA/IExvY2tGb3JSZWFsIDogU2lsZW5jZUFzc2VydGlvbnNPbmx5
KTsKKyAgICAgICAgQVBJRW50cnlTaGltIGVudHJ5U2hpbShhcnJheS0+Z2xvYmFsRGF0YSwgZmFs
c2UpOwogICAgICAgICBkZWxldGUgYXJyYXk7CiAgICAgfQogfQpAQCAtNTEwLDkgKzQ5MSw2IEBA
IEpTU3RyaW5nUmVmIEpTUHJvcGVydHlOYW1lQXJyYXlHZXROYW1lQXQKIHZvaWQgSlNQcm9wZXJ0
eU5hbWVBY2N1bXVsYXRvckFkZE5hbWUoSlNQcm9wZXJ0eU5hbWVBY2N1bXVsYXRvclJlZiBhcnJh
eSwgSlNTdHJpbmdSZWYgcHJvcGVydHlOYW1lKQogewogICAgIFByb3BlcnR5TmFtZUFycmF5KiBw
cm9wZXJ0eU5hbWVzID0gdG9KUyhhcnJheSk7Ci0KLSAgICBwcm9wZXJ0eU5hbWVzLT5nbG9iYWxE
YXRhKCktPmhlYXAucmVnaXN0ZXJUaHJlYWQoKTsKLSAgICBKU0xvY2sgbG9jayhwcm9wZXJ0eU5h
bWVzLT5nbG9iYWxEYXRhKCktPmlzU2hhcmVkSW5zdGFuY2UgPyBMb2NrRm9yUmVhbCA6IFNpbGVu
Y2VBc3NlcnRpb25zT25seSk7Ci0KKyAgICBBUElFbnRyeVNoaW0gZW50cnlTaGltKHByb3BlcnR5
TmFtZXMtPmdsb2JhbERhdGEoKSk7CiAgICAgcHJvcGVydHlOYW1lcy0+YWRkKHByb3BlcnR5TmFt
ZS0+aWRlbnRpZmllcihwcm9wZXJ0eU5hbWVzLT5nbG9iYWxEYXRhKCkpKTsKIH0KSW5kZXg6IEph
dmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9BUEkvSlNWYWx1ZVJlZi5jcHAJKHJldmlzaW9uIDUyNDk4KQorKysgSmF2YVNjcmlwdENv
cmUvQVBJL0pTVmFsdWVSZWYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAK
ICNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KICNpbmNsdWRlICJBUElDYXN0LmgiCisjaW5jbHVk
ZSAiQVBJU2hpbXMuaCIKICNpbmNsdWRlICJKU0NhbGxiYWNrT2JqZWN0LmgiCiAKICNpbmNsdWRl
IDxydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg+CkBAIC00NCw4ICs0NSw3IEBACiBKU1R5cGUgSlNW
YWx1ZUdldFR5cGUoSlNDb250ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiB2YWx1ZSkKIHsKICAgICBK
U0M6OkV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKLSAgICBleGVjLT5nbG9iYWxEYXRhKCku
aGVhcC5yZWdpc3RlclRocmVhZCgpOwotICAgIEpTQzo6SlNMb2NrIGxvY2soZXhlYyk7CisgICAg
SlNDOjpBUElFbnRyeVNoaW0gZW50cnlTaGltKGV4ZWMpOwogCiAgICAgSlNDOjpKU1ZhbHVlIGpz
VmFsdWUgPSB0b0pTKGV4ZWMsIHZhbHVlKTsKIApAQCAtNjgsOCArNjgsNyBAQCB1c2luZyBuYW1l
c3BhY2UgSlNDOyAvLyBwbGFjZWQgaGVyZSB0byBhCiBib29sIEpTVmFsdWVJc1VuZGVmaW5lZChK
U0NvbnRleHRSZWYgY3R4LCBKU1ZhbHVlUmVmIHZhbHVlKQogewogICAgIEV4ZWNTdGF0ZSogZXhl
YyA9IHRvSlMoY3R4KTsKLSAgICBleGVjLT5nbG9iYWxEYXRhKCkuaGVhcC5yZWdpc3RlclRocmVh
ZCgpOwotICAgIEpTTG9jayBsb2NrKGV4ZWMpOworICAgIEFQSUVudHJ5U2hpbSBlbnRyeVNoaW0o
ZXhlYyk7CiAKICAgICBKU1ZhbHVlIGpzVmFsdWUgPSB0b0pTKGV4ZWMsIHZhbHVlKTsKICAgICBy
ZXR1cm4ganNWYWx1ZS5pc1VuZGVmaW5lZCgpOwpAQCAtNzgsOCArNzcsNyBAQCBib29sIEpTVmFs
dWVJc1VuZGVmaW5lZChKU0NvbnRleHRSZWYgY3R4CiBib29sIEpTVmFsdWVJc051bGwoSlNDb250
ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiB2YWx1ZSkKIHsKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0
b0pTKGN0eCk7Ci0gICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmhlYXAucmVnaXN0ZXJUaHJlYWQoKTsK
LSAgICBKU0xvY2sgbG9jayhleGVjKTsKKyAgICBBUElFbnRyeVNoaW0gZW50cnlTaGltKGV4ZWMp
OwogCiAgICAgSlNWYWx1ZSBqc1ZhbHVlID0gdG9KUyhleGVjLCB2YWx1ZSk7CiAgICAgcmV0dXJu
IGpzVmFsdWUuaXNOdWxsKCk7CkBAIC04OCw4ICs4Niw3IEBAIGJvb2wgSlNWYWx1ZUlzTnVsbChK
U0NvbnRleHRSZWYgY3R4LCBKU1YKIGJvb2wgSlNWYWx1ZUlzQm9vbGVhbihKU0NvbnRleHRSZWYg
Y3R4LCBKU1ZhbHVlUmVmIHZhbHVlKQogewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4
KTsKLSAgICBleGVjLT5nbG9iYWxEYXRhKCkuaGVhcC5yZWdpc3RlclRocmVhZCgpOwotICAgIEpT
TG9jayBsb2NrKGV4ZWMpOworICAgIEFQSUVudHJ5U2hpbSBlbnRyeVNoaW0oZXhlYyk7CiAKICAg
ICBKU1ZhbHVlIGpzVmFsdWUgPSB0b0pTKGV4ZWMsIHZhbHVlKTsKICAgICByZXR1cm4ganNWYWx1
ZS5pc0Jvb2xlYW4oKTsKQEAgLTk4LDggKzk1LDcgQEAgYm9vbCBKU1ZhbHVlSXNCb29sZWFuKEpT
Q29udGV4dFJlZiBjdHgsIAogYm9vbCBKU1ZhbHVlSXNOdW1iZXIoSlNDb250ZXh0UmVmIGN0eCwg
SlNWYWx1ZVJlZiB2YWx1ZSkKIHsKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGN0eCk7Ci0g
ICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmhlYXAucmVnaXN0ZXJUaHJlYWQoKTsKLSAgICBKU0xvY2sg
bG9jayhleGVjKTsKKyAgICBBUElFbnRyeVNoaW0gZW50cnlTaGltKGV4ZWMpOwogCiAgICAgSlNW
YWx1ZSBqc1ZhbHVlID0gdG9KUyhleGVjLCB2YWx1ZSk7CiAgICAgcmV0dXJuIGpzVmFsdWUuaXNO
dW1iZXIoKTsKQEAgLTEwOCw4ICsxMDQsNyBAQCBib29sIEpTVmFsdWVJc051bWJlcihKU0NvbnRl
eHRSZWYgY3R4LCBKCiBib29sIEpTVmFsdWVJc1N0cmluZyhKU0NvbnRleHRSZWYgY3R4LCBKU1Zh
bHVlUmVmIHZhbHVlKQogewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKLSAgICBl
eGVjLT5nbG9iYWxEYXRhKCkuaGVhcC5yZWdpc3RlclRocmVhZCgpOwotICAgIEpTTG9jayBsb2Nr
KGV4ZWMpOworICAgIEFQSUVudHJ5U2hpbSBlbnRyeVNoaW0oZXhlYyk7CiAKICAgICBKU1ZhbHVl
IGpzVmFsdWUgPSB0b0pTKGV4ZWMsIHZhbHVlKTsKICAgICByZXR1cm4ganNWYWx1ZS5pc1N0cmlu
ZygpOwpAQCAtMTE4LDggKzExMyw3IEBAIGJvb2wgSlNWYWx1ZUlzU3RyaW5nKEpTQ29udGV4dFJl
ZiBjdHgsIEoKIGJvb2wgSlNWYWx1ZUlzT2JqZWN0KEpTQ29udGV4dFJlZiBjdHgsIEpTVmFsdWVS
ZWYgdmFsdWUpCiB7CiAgICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhjdHgpOwotICAgIGV4ZWMt
Pmdsb2JhbERhdGEoKS5oZWFwLnJlZ2lzdGVyVGhyZWFkKCk7Ci0gICAgSlNMb2NrIGxvY2soZXhl
Yyk7CisgICAgQVBJRW50cnlTaGltIGVudHJ5U2hpbShleGVjKTsKIAogICAgIEpTVmFsdWUganNW
YWx1ZSA9IHRvSlMoZXhlYywgdmFsdWUpOwogICAgIHJldHVybiBqc1ZhbHVlLmlzT2JqZWN0KCk7
CkBAIC0xMjgsOCArMTIyLDcgQEAgYm9vbCBKU1ZhbHVlSXNPYmplY3QoSlNDb250ZXh0UmVmIGN0
eCwgSgogYm9vbCBKU1ZhbHVlSXNPYmplY3RPZkNsYXNzKEpTQ29udGV4dFJlZiBjdHgsIEpTVmFs
dWVSZWYgdmFsdWUsIEpTQ2xhc3NSZWYganNDbGFzcykKIHsKICAgICBFeGVjU3RhdGUqIGV4ZWMg
PSB0b0pTKGN0eCk7Ci0gICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmhlYXAucmVnaXN0ZXJUaHJlYWQo
KTsKLSAgICBKU0xvY2sgbG9jayhleGVjKTsKKyAgICBBUElFbnRyeVNoaW0gZW50cnlTaGltKGV4
ZWMpOwogCiAgICAgSlNWYWx1ZSBqc1ZhbHVlID0gdG9KUyhleGVjLCB2YWx1ZSk7CiAgICAgCkBA
IC0xNDUsOCArMTM4LDcgQEAgYm9vbCBKU1ZhbHVlSXNPYmplY3RPZkNsYXNzKEpTQ29udGV4dFJl
ZgogYm9vbCBKU1ZhbHVlSXNFcXVhbChKU0NvbnRleHRSZWYgY3R4LCBKU1ZhbHVlUmVmIGEsIEpT
VmFsdWVSZWYgYiwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAgIEV4ZWNTdGF0ZSogZXhl
YyA9IHRvSlMoY3R4KTsKLSAgICBleGVjLT5nbG9iYWxEYXRhKCkuaGVhcC5yZWdpc3RlclRocmVh
ZCgpOwotICAgIEpTTG9jayBsb2NrKGV4ZWMpOworICAgIEFQSUVudHJ5U2hpbSBlbnRyeVNoaW0o
ZXhlYyk7CiAKICAgICBKU1ZhbHVlIGpzQSA9IHRvSlMoZXhlYywgYSk7CiAgICAgSlNWYWx1ZSBq
c0IgPSB0b0pTKGV4ZWMsIGIpOwpAQCAtMTYzLDggKzE1NSw3IEBAIGJvb2wgSlNWYWx1ZUlzRXF1
YWwoSlNDb250ZXh0UmVmIGN0eCwgSlMKIGJvb2wgSlNWYWx1ZUlzU3RyaWN0RXF1YWwoSlNDb250
ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiBhLCBKU1ZhbHVlUmVmIGIpCiB7CiAgICAgRXhlY1N0YXRl
KiBleGVjID0gdG9KUyhjdHgpOwotICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5oZWFwLnJlZ2lzdGVy
VGhyZWFkKCk7Ci0gICAgSlNMb2NrIGxvY2soZXhlYyk7CisgICAgQVBJRW50cnlTaGltIGVudHJ5
U2hpbShleGVjKTsKIAogICAgIEpTVmFsdWUganNBID0gdG9KUyhleGVjLCBhKTsKICAgICBKU1Zh
bHVlIGpzQiA9IHRvSlMoZXhlYywgYik7CkBAIC0xNzUsOCArMTY2LDcgQEAgYm9vbCBKU1ZhbHVl
SXNTdHJpY3RFcXVhbChKU0NvbnRleHRSZWYgYwogYm9vbCBKU1ZhbHVlSXNJbnN0YW5jZU9mQ29u
c3RydWN0b3IoSlNDb250ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiB2YWx1ZSwgSlNPYmplY3RSZWYg
Y29uc3RydWN0b3IsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsKICAgICBFeGVjU3RhdGUqIGV4
ZWMgPSB0b0pTKGN0eCk7Ci0gICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmhlYXAucmVnaXN0ZXJUaHJl
YWQoKTsKLSAgICBKU0xvY2sgbG9jayhleGVjKTsKKyAgICBBUElFbnRyeVNoaW0gZW50cnlTaGlt
KGV4ZWMpOwogCiAgICAgSlNWYWx1ZSBqc1ZhbHVlID0gdG9KUyhleGVjLCB2YWx1ZSk7CiAKQEAg
LTE5NSw4ICsxODUsNyBAQCBib29sIEpTVmFsdWVJc0luc3RhbmNlT2ZDb25zdHJ1Y3RvcihKU0Nv
CiBKU1ZhbHVlUmVmIEpTVmFsdWVNYWtlVW5kZWZpbmVkKEpTQ29udGV4dFJlZiBjdHgpCiB7CiAg
ICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhjdHgpOwotICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5o
ZWFwLnJlZ2lzdGVyVGhyZWFkKCk7Ci0gICAgSlNMb2NrIGxvY2soZXhlYyk7CisgICAgQVBJRW50
cnlTaGltIGVudHJ5U2hpbShleGVjKTsKIAogICAgIHJldHVybiB0b1JlZihleGVjLCBqc1VuZGVm
aW5lZCgpKTsKIH0KQEAgLTIwNCw4ICsxOTMsNyBAQCBKU1ZhbHVlUmVmIEpTVmFsdWVNYWtlVW5k
ZWZpbmVkKEpTQ29udGV4CiBKU1ZhbHVlUmVmIEpTVmFsdWVNYWtlTnVsbChKU0NvbnRleHRSZWYg
Y3R4KQogewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKLSAgICBleGVjLT5nbG9i
YWxEYXRhKCkuaGVhcC5yZWdpc3RlclRocmVhZCgpOwotICAgIEpTTG9jayBsb2NrKGV4ZWMpOwor
ICAgIEFQSUVudHJ5U2hpbSBlbnRyeVNoaW0oZXhlYyk7CiAKICAgICByZXR1cm4gdG9SZWYoZXhl
YywganNOdWxsKCkpOwogfQpAQCAtMjEzLDggKzIwMSw3IEBAIEpTVmFsdWVSZWYgSlNWYWx1ZU1h
a2VOdWxsKEpTQ29udGV4dFJlZiAKIEpTVmFsdWVSZWYgSlNWYWx1ZU1ha2VCb29sZWFuKEpTQ29u
dGV4dFJlZiBjdHgsIGJvb2wgdmFsdWUpCiB7CiAgICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhj
dHgpOwotICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5oZWFwLnJlZ2lzdGVyVGhyZWFkKCk7Ci0gICAg
SlNMb2NrIGxvY2soZXhlYyk7CisgICAgQVBJRW50cnlTaGltIGVudHJ5U2hpbShleGVjKTsKIAog
ICAgIHJldHVybiB0b1JlZihleGVjLCBqc0Jvb2xlYW4odmFsdWUpKTsKIH0KQEAgLTIyMiw4ICsy
MDksNyBAQCBKU1ZhbHVlUmVmIEpTVmFsdWVNYWtlQm9vbGVhbihKU0NvbnRleHRSCiBKU1ZhbHVl
UmVmIEpTVmFsdWVNYWtlTnVtYmVyKEpTQ29udGV4dFJlZiBjdHgsIGRvdWJsZSB2YWx1ZSkKIHsK
ICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGN0eCk7Ci0gICAgZXhlYy0+Z2xvYmFsRGF0YSgp
LmhlYXAucmVnaXN0ZXJUaHJlYWQoKTsKLSAgICBKU0xvY2sgbG9jayhleGVjKTsKKyAgICBBUElF
bnRyeVNoaW0gZW50cnlTaGltKGV4ZWMpOwogCiAgICAgcmV0dXJuIHRvUmVmKGV4ZWMsIGpzTnVt
YmVyKGV4ZWMsIHZhbHVlKSk7CiB9CkBAIC0yMzEsOCArMjE3LDcgQEAgSlNWYWx1ZVJlZiBKU1Zh
bHVlTWFrZU51bWJlcihKU0NvbnRleHRSZQogSlNWYWx1ZVJlZiBKU1ZhbHVlTWFrZVN0cmluZyhK
U0NvbnRleHRSZWYgY3R4LCBKU1N0cmluZ1JlZiBzdHJpbmcpCiB7CiAgICAgRXhlY1N0YXRlKiBl
eGVjID0gdG9KUyhjdHgpOwotICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5oZWFwLnJlZ2lzdGVyVGhy
ZWFkKCk7Ci0gICAgSlNMb2NrIGxvY2soZXhlYyk7CisgICAgQVBJRW50cnlTaGltIGVudHJ5U2hp
bShleGVjKTsKIAogICAgIHJldHVybiB0b1JlZihleGVjLCBqc1N0cmluZyhleGVjLCBzdHJpbmct
PnVzdHJpbmcoKSkpOwogfQpAQCAtMjQwLDggKzIyNSw3IEBAIEpTVmFsdWVSZWYgSlNWYWx1ZU1h
a2VTdHJpbmcoSlNDb250ZXh0UmUKIGJvb2wgSlNWYWx1ZVRvQm9vbGVhbihKU0NvbnRleHRSZWYg
Y3R4LCBKU1ZhbHVlUmVmIHZhbHVlKQogewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4
KTsKLSAgICBleGVjLT5nbG9iYWxEYXRhKCkuaGVhcC5yZWdpc3RlclRocmVhZCgpOwotICAgIEpT
TG9jayBsb2NrKGV4ZWMpOworICAgIEFQSUVudHJ5U2hpbSBlbnRyeVNoaW0oZXhlYyk7CiAKICAg
ICBKU1ZhbHVlIGpzVmFsdWUgPSB0b0pTKGV4ZWMsIHZhbHVlKTsKICAgICByZXR1cm4ganNWYWx1
ZS50b0Jvb2xlYW4oZXhlYyk7CkBAIC0yNTAsOCArMjM0LDcgQEAgYm9vbCBKU1ZhbHVlVG9Cb29s
ZWFuKEpTQ29udGV4dFJlZiBjdHgsIAogZG91YmxlIEpTVmFsdWVUb051bWJlcihKU0NvbnRleHRS
ZWYgY3R4LCBKU1ZhbHVlUmVmIHZhbHVlLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7CiAgICAg
RXhlY1N0YXRlKiBleGVjID0gdG9KUyhjdHgpOwotICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5oZWFw
LnJlZ2lzdGVyVGhyZWFkKCk7Ci0gICAgSlNMb2NrIGxvY2soZXhlYyk7CisgICAgQVBJRW50cnlT
aGltIGVudHJ5U2hpbShleGVjKTsKIAogICAgIEpTVmFsdWUganNWYWx1ZSA9IHRvSlMoZXhlYywg
dmFsdWUpOwogCkBAIC0yNjgsOCArMjUxLDcgQEAgZG91YmxlIEpTVmFsdWVUb051bWJlcihKU0Nv
bnRleHRSZWYgY3R4LAogSlNTdHJpbmdSZWYgSlNWYWx1ZVRvU3RyaW5nQ29weShKU0NvbnRleHRS
ZWYgY3R4LCBKU1ZhbHVlUmVmIHZhbHVlLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7CiAgICAg
RXhlY1N0YXRlKiBleGVjID0gdG9KUyhjdHgpOwotICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5oZWFw
LnJlZ2lzdGVyVGhyZWFkKCk7Ci0gICAgSlNMb2NrIGxvY2soZXhlYyk7CisgICAgQVBJRW50cnlT
aGltIGVudHJ5U2hpbShleGVjKTsKIAogICAgIEpTVmFsdWUganNWYWx1ZSA9IHRvSlMoZXhlYywg
dmFsdWUpOwogICAgIApAQCAtMjg2LDggKzI2OCw3IEBAIEpTU3RyaW5nUmVmIEpTVmFsdWVUb1N0
cmluZ0NvcHkoSlNDb250ZXgKIEpTT2JqZWN0UmVmIEpTVmFsdWVUb09iamVjdChKU0NvbnRleHRS
ZWYgY3R4LCBKU1ZhbHVlUmVmIHZhbHVlLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7CiAgICAg
RXhlY1N0YXRlKiBleGVjID0gdG9KUyhjdHgpOwotICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5oZWFw
LnJlZ2lzdGVyVGhyZWFkKCk7Ci0gICAgSlNMb2NrIGxvY2soZXhlYyk7CisgICAgQVBJRW50cnlT
aGltIGVudHJ5U2hpbShleGVjKTsKIAogICAgIEpTVmFsdWUganNWYWx1ZSA9IHRvSlMoZXhlYywg
dmFsdWUpOwogICAgIApAQCAtMzA0LDggKzI4NSw3IEBAIEpTT2JqZWN0UmVmIEpTVmFsdWVUb09i
amVjdChKU0NvbnRleHRSZWYKIHZvaWQgSlNWYWx1ZVByb3RlY3QoSlNDb250ZXh0UmVmIGN0eCwg
SlNWYWx1ZVJlZiB2YWx1ZSkKIHsKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGN0eCk7Ci0g
ICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmhlYXAucmVnaXN0ZXJUaHJlYWQoKTsKLSAgICBKU0xvY2sg
bG9jayhleGVjKTsKKyAgICBBUElFbnRyeVNoaW0gZW50cnlTaGltKGV4ZWMpOwogCiAgICAgSlNW
YWx1ZSBqc1ZhbHVlID0gdG9KU0ZvckdDKGV4ZWMsIHZhbHVlKTsKICAgICBnY1Byb3RlY3QoanNW
YWx1ZSk7CkBAIC0zMTQsOCArMjk0LDcgQEAgdm9pZCBKU1ZhbHVlUHJvdGVjdChKU0NvbnRleHRS
ZWYgY3R4LCBKUwogdm9pZCBKU1ZhbHVlVW5wcm90ZWN0KEpTQ29udGV4dFJlZiBjdHgsIEpTVmFs
dWVSZWYgdmFsdWUpCiB7CiAgICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhjdHgpOwotICAgIGV4
ZWMtPmdsb2JhbERhdGEoKS5oZWFwLnJlZ2lzdGVyVGhyZWFkKCk7Ci0gICAgSlNMb2NrIGxvY2so
ZXhlYyk7CisgICAgQVBJRW50cnlTaGltIGVudHJ5U2hpbShleGVjKTsKIAogICAgIEpTVmFsdWUg
anNWYWx1ZSA9IHRvSlNGb3JHQyhleGVjLCB2YWx1ZSk7CiAgICAgZ2NVbnByb3RlY3QoanNWYWx1
ZSk7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDUyNDk4KQorKysgSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5
KQpAQCAtMjA0LDYgKzIwNCw3IEBACiAJCTg2MDE2MUU1MEYzQTgzQzEwMEY4NDcxMCAvKiBNYWNy
b0Fzc2VtYmxlclg4Nl82NC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODYwMTYxRTEwRjNBODNDMTAwRjg0NzEwIC8qIE1hY3JvQXNzZW1ibGVyWDg2XzY0
LmggKi87IH07CiAJCTg2MDE2MUU2MEYzQTgzQzEwMEY4NDcxMCAvKiBNYWNyb0Fzc2VtYmxlclg4
NkNvbW1vbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODYwMTYxRTIwRjNBODNDMTAwRjg0NzEwIC8qIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmggKi87
IH07CiAJCTg2M0IyM0UwMEZDNjExODkwMDcwM0FBNCAvKiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2M0IyM0RG
MEZDNjBFNjIwMDcwM0FBNCAvKiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4NjVGNDA4ODEwRTdENTYzMDA5
NDczNjEgLyogQVBJU2hpbXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDg2NUY0MDg3MTBFN0Q1NjMwMDk0NzM2MSAvKiBBUElTaGltcy5oICovOyB9Owog
CQk4NjkwODMxNTBFNjUxOEQ3MDAwRDM2RUQgLyogV1JFQy5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjkwODMxMzBFNjUxOEQ3MDAwRDM2RUQgLyog
V1JFQy5jcHAgKi87IH07CiAJCTg2OTA4MzE2MEU2NTE4RDcwMDBEMzZFRCAvKiBXUkVDLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjkwODMxNDBFNjUx
OEQ3MDAwRDM2RUQgLyogV1JFQy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTg2OThCODY5MTBENDREOTQwMEQ4RDAxQiAvKiBTdHJpbmdCdWlsZGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Njk4Qjg2
ODEwRDQ0RDk0MDBEOEQwMUIgLyogU3RyaW5nQnVpbGRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC03MzMsNiArNzM0LDcgQEAKIAkJODYwMTYx
RTEwRjNBODNDMTAwRjg0NzEwIC8qIE1hY3JvQXNzZW1ibGVyWDg2XzY0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hY3JvQXNzZW1ibGVyWDg2XzY0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTg2MDE2MUUyMEYzQTgzQzEwMEY4NDcxMCAvKiBNYWNyb0Fzc2Vt
Ymxlclg4NkNvbW1vbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYWNyb0Fz
c2VtYmxlclg4NkNvbW1vbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NjNCMjNE
RjBGQzYwRTYyMDA3MDNBQTQgLyogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hY3JvQXNzZW1ibGVyQ29kZVJlZi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk4NjVGNDA4NzEwRTdENTYzMDA5NDczNjEgLyogQVBJU2hpbXMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJU2hpbXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODY5MDgzMTMwRTY1MThENzAwMEQzNkVEIC8qIFdSRUMuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV1JFQy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2OTA4MzE0MEU2NTE4RDcwMDBEMzZFRCAvKiBXUkVDLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdSRUMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJODY5OEI4NjgxMEQ0NEQ5NDAwRDhEMDFCIC8qIFN0cmluZ0J1aWxkZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RyaW5nQnVpbGRlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTE4OCw2ICsxMTkwLDcgQEAKIAkJCWlzYSA9IFBC
WEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJMTQ4MkI3OEEwQTQzMDVBQjAwNTE3Q0ZDIC8q
IEFQSUNhc3QuaCAqLywKKwkJCQk4NjVGNDA4NzEwRTdENTYzMDA5NDczNjEgLyogQVBJU2hpbXMu
aCAqLywKIAkJCQkxQ0FBOEI0QTBEMzJDMzlBMDA0MUJDRkYgLyogSmF2YVNjcmlwdC5oICovLAog
CQkJCTFDQUE4QjRCMEQzMkMzOUEwMDQxQkNGRiAvKiBKYXZhU2NyaXB0Q29yZS5oICovLAogCQkJ
CUJDMDg5NEQ1MEZBRkJBMkQwMDAwMTg2NSAvKiBKU0FQSVZhbHVlV3JhcHBlci5jcHAgKi8sCkBA
IC0yMDM1LDYgKzIwMzgsNyBAQAogCQkJCTg2OThCODY5MTBENDREOTQwMEQ4RDAxQiAvKiBTdHJp
bmdCdWlsZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk4Njk4QkIzOTEwRDg2QkFGMDBEOEQwMUIg
LyogVVN0cmluZ0ltcGwuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0MDM1REIxMTBEQkZCMkEwMEZG
RkZFNyAvKiBXZWFrR0NQdHIuaCBpbiBIZWFkZXJzICovLAorCQkJCTg2NUY0MDg4MTBFN0Q1NjMw
MDk0NzM2MSAvKiBBUElTaGltcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZv
ckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07Cg==
</data>
<flag name="review"
          id="27941"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>