<?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>175447</bug_id>
          
          <creation_ts>2017-08-10 15:05:33 -0700</creation_ts>
          <short_desc>Implement MacroAssembler::probe support on MIPS.</short_desc>
          <delta_ts>2017-11-29 16:17:56 -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>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>annulen</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>clopez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>guijemont</cc>
    
    <cc>jlewis3</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mips32r2</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>stanislav.ocovaj</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1337623</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-08-10 15:05:33 -0700</bug_when>
    <thetext>This is needed in order to enable the DFG.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337938</commentid>
    <comment_count>1</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-08-11 11:05:48 -0700</bug_when>
    <thetext>What needs to be done:
1. Copy the implementation of ctiMasmProbeTrampoline in MacroAssemblerARM.cpp into a MacroAssemblerMIPS.cpp file.  Alternatively, you may choose from MacroAssemblerARMv7.cpp, MacroAssemblerARM64.cpp, or MacroAssemblerX86Common.cpp if those are easier to work with.
2. Make sure that the COMPILE_ASSERT and static_asserts are in effect.
   This is needed to ensure that the asm code will populate the ProbeContext the way that C++ code expect it to.
3. Change the implementation to MacroAssembler::probe() into the MIPS equivalent.
4. Change the inline asm instructions in ctiMasmProbeTrampoline into the MIPS equivalent.
5. Change the part for calling a C function in ctiMasmProbeTrampoline to follow MIPS calling convention.
6. Run the testmasm test to validate the fix works before committing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1372459</commentid>
    <comment_count>2</comment_count>
    <who name="Guillaume Emont">guijemont</who>
    <bug_when>2017-11-15 14:30:22 -0800</bug_when>
    <thetext>I have started work on an implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1374039</commentid>
    <comment_count>3</comment_count>
      <attachid>327414</attachid>
    <who name="Stanislav Ocovaj">stanislav.ocovaj</who>
    <bug_when>2017-11-21 08:56:24 -0800</bug_when>
    <thetext>Created attachment 327414
MIPS implementation of MacroAssembler::probe()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1374042</commentid>
    <comment_count>4</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2017-11-21 08:58:28 -0800</bug_when>
    <thetext>Attachment 327414 did not pass style-queue:


ERROR: Source/JavaScriptCore/assembler/MacroAssemblerMIPS.cpp:56:  Extra space after (  [whitespace/parens] [2]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerMIPS.cpp:57:  Extra space after (  [whitespace/parens] [2]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerMIPS.cpp:58:  Extra space after (  [whitespace/parens] [2]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerMIPS.cpp:59:  Extra space after (  [whitespace/parens] [2]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerMIPS.cpp:60:  Extra space after (  [whitespace/parens] [2]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerMIPS.cpp:61:  Extra space after (  [whitespace/parens] [2]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerMIPS.cpp:62:  Extra space after (  [whitespace/parens] [2]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerMIPS.cpp:63:  Extra space after (  [whitespace/parens] [2]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerMIPS.cpp:64:  Extra space after (  [whitespace/parens] [2]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerMIPS.cpp:65:  Extra space after (  [whitespace/parens] [2]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerMIPS.cpp:96:  Extra space after (  [whitespace/parens] [2]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerMIPS.cpp:97:  Extra space after (  [whitespace/parens] [2]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerMIPS.cpp:98:  Extra space after (  [whitespace/parens] [2]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerMIPS.cpp:99:  Extra space after (  [whitespace/parens] [2]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerMIPS.cpp:100:  Extra space after (  [whitespace/parens] [2]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerMIPS.cpp:101:  Extra space after (  [whitespace/parens] [2]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerMIPS.cpp:102:  Extra space after (  [whitespace/parens] [2]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerMIPS.cpp:103:  Extra space after (  [whitespace/parens] [2]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerMIPS.cpp:104:  Extra space after (  [whitespace/parens] [2]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerMIPS.cpp:105:  Extra space after (  [whitespace/parens] [2]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerMIPS.cpp:504:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/assembler/testmasm.cpp:395:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/JavaScriptCore/assembler/testmasm.cpp:424:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/JavaScriptCore/assembler/testmasm.cpp:501:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/JavaScriptCore/assembler/testmasm.cpp:538:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/JavaScriptCore/assembler/testmasm.cpp:695:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 26 in 9 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>1374048</commentid>
    <comment_count>5</comment_count>
      <attachid>327416</attachid>
    <who name="Stanislav Ocovaj">stanislav.ocovaj</who>
    <bug_when>2017-11-21 09:14:08 -0800</bug_when>
    <thetext>Created attachment 327416
MIPS implementation of MacroAssembler::probe()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1374051</commentid>
    <comment_count>6</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2017-11-21 09:16:50 -0800</bug_when>
    <thetext>Attachment 327416 did not pass style-queue:


ERROR: Source/JavaScriptCore/assembler/MacroAssemblerMIPS.cpp:504:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 9 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>1374110</commentid>
    <comment_count>7</comment_count>
      <attachid>327416</attachid>
    <who name="Guillaume Emont">guijemont</who>
    <bug_when>2017-11-21 16:11:16 -0800</bug_when>
    <thetext>Comment on attachment 327416
MIPS implementation of MacroAssembler::probe()

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

Thanks for the hard work, I&apos;m happy to see an implementation, though I was hoping to get mine out but you beat me to it ;). I ran testmasm with your patch on a ci20 board and everything seems to pass. Did you run tests with the patch? I just launched them on my board, but results will have to wait until tomorrow. This is an informal review as I am not a reviewer. If the tests don&apos;t show anything broken by the patch, I am personally happy with it provided you address the few changes I suggest and answer the few questions on which I have doubts.

&gt; Source/JavaScriptCore/assembler/MacroAssemblerMIPS.cpp:91
&gt; +#define PROBE_CPU_PC_OFFSET (PROBE_FIRST_SPREG_OFFSET + (32 * GPREG_SIZE))

How about saving FCSR too? It would fit well at PROBE_FIRST_SPREG_OFFSET + (33 * GPREG_SIZE) which is empty.

&gt; Source/JavaScriptCore/assembler/MacroAssemblerMIPS.cpp:95
&gt; +#define FPREG_SIZE 8

Since we save the fp registers as doubles, we indeed need to save 8 bytes per *even* register. Which means all the space reserved for odd registers bellow is wasted. I suggest only saving space for even registers:

#define PROBE_CPU_F0_OFFSET (PROBE_FIRST_FPREG_OFFSET + (0 * FPREG_SIZE))
#define PROBE_CPU_F2_OFFSET (PROBE_FIRST_FPREG_OFFSET + (1 * FPREG_SIZE))
#define PROBE_CPU_F4_OFFSET (PROBE_FIRST_FPREG_OFFSET + (2 * FPREG_SIZE))
etc...

&gt; Source/JavaScriptCore/assembler/MacroAssemblerMIPS.cpp:132
&gt; +#define PROBE_SIZE_PLUS_EXTRAS              (PROBE_SIZE + (2 * PTR_SIZE))

A comment would be welcome exlpaining what the extras are. Looks like it&apos;s SAVED_PROBE_RETURN_PC + something else. What something else? Or is it padding for alignment?

&gt; Source/JavaScriptCore/assembler/MacroAssemblerMIPS.cpp:265
&gt; +static_assert(!(sizeof(RARestorationRecord) &amp; 0x7), &quot;LRRestorationRecord must be 8-byte aligned&quot;);

I&apos;m confused. Why does it need to be 8-byte aligned? IIRC, we need the $sp to point to an 8-aligned address at the time of a function call, but I don&apos;t see why we need the alignment here (though I might be forgetting about something). Also, I think you mean RARestorationRecord not LRRestorationRecord.

&gt; Source/JavaScriptCore/assembler/MacroAssemblerMIPS.cpp:339
&gt; +    &quot;addiu     $ra, $ra, 2*4&quot; &quot;\n&quot; // The PC after the probe is at 2 instructions past the return point.

I think we should use defines here. E.g. &quot;addiu $ra, $ra, PROBE_INSTRUCTIONS_AFTER_CALL * PTR_SIZE&quot;
And maybe also add an assert (or at least a comment) at the end of MacroAssembler::probe() to make sure that PROBE_INSTRUCTIONS_AFTER_CALL is in sync with the number of instructions after the trampoline call.

&gt; Source/JavaScriptCore/assembler/MacroAssemblerMIPS.cpp:410
&gt; +    // out of the Probe::State before returning, except for zero, k0 and k1.

I am wondering: is it safe to restore $at too?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1374177</commentid>
    <comment_count>8</comment_count>
      <attachid>327416</attachid>
    <who name="Stanislav Ocovaj">stanislav.ocovaj</who>
    <bug_when>2017-11-22 06:07:40 -0800</bug_when>
    <thetext>Comment on attachment 327416
MIPS implementation of MacroAssembler::probe()

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

&gt;&gt; Source/JavaScriptCore/assembler/MacroAssemblerMIPS.cpp:91
&gt;&gt; +#define PROBE_CPU_PC_OFFSET (PROBE_FIRST_SPREG_OFFSET + (32 * GPREG_SIZE))
&gt; 
&gt; How about saving FCSR too? It would fit well at PROBE_FIRST_SPREG_OFFSET + (33 * GPREG_SIZE) which is empty.

I will add saving/restoring of FCSR and other control registers

&gt;&gt; Source/JavaScriptCore/assembler/MacroAssemblerMIPS.cpp:95
&gt;&gt; +#define FPREG_SIZE 8
&gt; 
&gt; Since we save the fp registers as doubles, we indeed need to save 8 bytes per *even* register. Which means all the space reserved for odd registers bellow is wasted. I suggest only saving space for even registers:
&gt; 
&gt; #define PROBE_CPU_F0_OFFSET (PROBE_FIRST_FPREG_OFFSET + (0 * FPREG_SIZE))
&gt; #define PROBE_CPU_F2_OFFSET (PROBE_FIRST_FPREG_OFFSET + (1 * FPREG_SIZE))
&gt; #define PROBE_CPU_F4_OFFSET (PROBE_FIRST_FPREG_OFFSET + (2 * FPREG_SIZE))
&gt; etc...

The problem here is that these offsets must match register ID&apos;s defined by the FPRegisterID enum. To save the space in the context we would have to modify those enums, but then they would not match real FPregister ID&apos;s as they are used in MIPS assembly, so I suggest that we leave this as it is.

&gt;&gt; Source/JavaScriptCore/assembler/MacroAssemblerMIPS.cpp:132
&gt;&gt; +#define PROBE_SIZE_PLUS_EXTRAS              (PROBE_SIZE + (2 * PTR_SIZE))
&gt; 
&gt; A comment would be welcome exlpaining what the extras are. Looks like it&apos;s SAVED_PROBE_RETURN_PC + something else. What something else? Or is it padding for alignment?

The extras are SAVED_PROBE_RETURN_PC plus the padding

&gt;&gt; Source/JavaScriptCore/assembler/MacroAssemblerMIPS.cpp:265
&gt;&gt; +static_assert(!(sizeof(RARestorationRecord) &amp; 0x7), &quot;LRRestorationRecord must be 8-byte aligned&quot;);
&gt; 
&gt; I&apos;m confused. Why does it need to be 8-byte aligned? IIRC, we need the $sp to point to an 8-aligned address at the time of a function call, but I don&apos;t see why we need the alignment here (though I might be forgetting about something). Also, I think you mean RARestorationRecord not LRRestorationRecord.

MIPS calling convention requires that the stack is 8-byte aligned at all times, not only at the time of a function call. This is because the code might be interrupted at any time by a signal, and signal handler might need to push a double value to the stack

&gt;&gt; Source/JavaScriptCore/assembler/MacroAssemblerMIPS.cpp:339
&gt;&gt; +    &quot;addiu     $ra, $ra, 2*4&quot; &quot;\n&quot; // The PC after the probe is at 2 instructions past the return point.
&gt; 
&gt; I think we should use defines here. E.g. &quot;addiu $ra, $ra, PROBE_INSTRUCTIONS_AFTER_CALL * PTR_SIZE&quot;
&gt; And maybe also add an assert (or at least a comment) at the end of MacroAssembler::probe() to make sure that PROBE_INSTRUCTIONS_AFTER_CALL is in sync with the number of instructions after the trampoline call.

I will change it to 2 * PTR_SIZE. This is how it&apos;s done on ARM64. I don&apos;t see a simple way to check if this is in sync with the actual number of instructions

&gt;&gt; Source/JavaScriptCore/assembler/MacroAssemblerMIPS.cpp:410
&gt;&gt; +    // out of the Probe::State before returning, except for zero, k0 and k1.
&gt; 
&gt; I am wondering: is it safe to restore $at too?

I don&apos;t see why it wouldn&apos;t be safe, as long as the probe&apos;s user knows what he&apos;s doing. The real question here is whether it is *possible* to save/restore some registers. Zero obviously cannot be set to any value, and k0 and k1 may be modified by the kernel at any time, so that&apos;s the main reason why these registers are excluded.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1374250</commentid>
    <comment_count>9</comment_count>
      <attachid>327416</attachid>
    <who name="Guillaume Emont">guijemont</who>
    <bug_when>2017-11-22 11:36:02 -0800</bug_when>
    <thetext>Comment on attachment 327416
MIPS implementation of MacroAssembler::probe()

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

I ran the tests with your patch, and I only got 1 test failure, which seems to be an out of memory issue, which is a huge progress compared to the ~156 we currently have upstream.

&gt;&gt;&gt; Source/JavaScriptCore/assembler/MacroAssemblerMIPS.cpp:95
&gt;&gt;&gt; +#define FPREG_SIZE 8
&gt;&gt; 
&gt;&gt; Since we save the fp registers as doubles, we indeed need to save 8 bytes per *even* register. Which means all the space reserved for odd registers bellow is wasted. I suggest only saving space for even registers:
&gt;&gt; 
&gt;&gt; #define PROBE_CPU_F0_OFFSET (PROBE_FIRST_FPREG_OFFSET + (0 * FPREG_SIZE))
&gt;&gt; #define PROBE_CPU_F2_OFFSET (PROBE_FIRST_FPREG_OFFSET + (1 * FPREG_SIZE))
&gt;&gt; #define PROBE_CPU_F4_OFFSET (PROBE_FIRST_FPREG_OFFSET + (2 * FPREG_SIZE))
&gt;&gt; etc...
&gt; 
&gt; The problem here is that these offsets must match register ID&apos;s defined by the FPRegisterID enum. To save the space in the context we would have to modify those enums, but then they would not match real FPregister ID&apos;s as they are used in MIPS assembly, so I suggest that we leave this as it is.

What if we define FPREG_SIZE as 4?
Then we should still be able to save/restore with ldc1 on the even registers, which would just be an optimization internal to the probe, but then we would consider the individual single float registers from the outside?

&gt;&gt;&gt; Source/JavaScriptCore/assembler/MacroAssemblerMIPS.cpp:132
&gt;&gt;&gt; +#define PROBE_SIZE_PLUS_EXTRAS              (PROBE_SIZE + (2 * PTR_SIZE))
&gt;&gt; 
&gt;&gt; A comment would be welcome exlpaining what the extras are. Looks like it&apos;s SAVED_PROBE_RETURN_PC + something else. What something else? Or is it padding for alignment?
&gt; 
&gt; The extras are SAVED_PROBE_RETURN_PC plus the padding

I think a comment explaining that would be welcome.

&gt;&gt;&gt; Source/JavaScriptCore/assembler/MacroAssemblerMIPS.cpp:339
&gt;&gt;&gt; +    &quot;addiu     $ra, $ra, 2*4&quot; &quot;\n&quot; // The PC after the probe is at 2 instructions past the return point.
&gt;&gt; 
&gt;&gt; I think we should use defines here. E.g. &quot;addiu $ra, $ra, PROBE_INSTRUCTIONS_AFTER_CALL * PTR_SIZE&quot;
&gt;&gt; And maybe also add an assert (or at least a comment) at the end of MacroAssembler::probe() to make sure that PROBE_INSTRUCTIONS_AFTER_CALL is in sync with the number of instructions after the trampoline call.
&gt; 
&gt; I will change it to 2 * PTR_SIZE. This is how it&apos;s done on ARM64. I don&apos;t see a simple way to check if this is in sync with the actual number of instructions

What I am proposing is something more manual done in ::probe like:

    m_assembler.jalr(s0);
    m_assembler.nop();
    load32(Address(sp, offsetof(RARestorationRecord, ra)), ra);
    add32(TrustedImm32(sizeof(RARestorationRecord)), sp);
    static_assert(PROBE_INSTRUCTIONS_AFTER_CALL == 2); // this needs to be the exact number of instructions after jalr and nop.

Or maybe an assert is overkill and a simple comment would work:
    // if you change this, make sure it&apos;s in sync with the definition of PROBE_INSTRUCTIONS_AFTER_CALL</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1374415</commentid>
    <comment_count>10</comment_count>
      <attachid>327416</attachid>
    <who name="Stanislav Ocovaj">stanislav.ocovaj</who>
    <bug_when>2017-11-23 07:22:02 -0800</bug_when>
    <thetext>Comment on attachment 327416
MIPS implementation of MacroAssembler::probe()

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

&gt;&gt;&gt;&gt; Source/JavaScriptCore/assembler/MacroAssemblerMIPS.cpp:95
&gt;&gt;&gt;&gt; +#define FPREG_SIZE 8
&gt;&gt;&gt; 
&gt;&gt;&gt; Since we save the fp registers as doubles, we indeed need to save 8 bytes per *even* register. Which means all the space reserved for odd registers bellow is wasted. I suggest only saving space for even registers:
&gt;&gt;&gt; 
&gt;&gt;&gt; #define PROBE_CPU_F0_OFFSET (PROBE_FIRST_FPREG_OFFSET + (0 * FPREG_SIZE))
&gt;&gt;&gt; #define PROBE_CPU_F2_OFFSET (PROBE_FIRST_FPREG_OFFSET + (1 * FPREG_SIZE))
&gt;&gt;&gt; #define PROBE_CPU_F4_OFFSET (PROBE_FIRST_FPREG_OFFSET + (2 * FPREG_SIZE))
&gt;&gt;&gt; etc...
&gt;&gt; 
&gt;&gt; The problem here is that these offsets must match register ID&apos;s defined by the FPRegisterID enum. To save the space in the context we would have to modify those enums, but then they would not match real FPregister ID&apos;s as they are used in MIPS assembly, so I suggest that we leave this as it is.
&gt; 
&gt; What if we define FPREG_SIZE as 4?
&gt; Then we should still be able to save/restore with ldc1 on the even registers, which would just be an optimization internal to the probe, but then we would consider the individual single float registers from the outside?

We can&apos;t do that, either, because the Probe::State::cpu.fprs array is declared as double.

&gt;&gt;&gt;&gt; Source/JavaScriptCore/assembler/MacroAssemblerMIPS.cpp:132
&gt;&gt;&gt;&gt; +#define PROBE_SIZE_PLUS_EXTRAS              (PROBE_SIZE + (2 * PTR_SIZE))
&gt;&gt;&gt; 
&gt;&gt;&gt; A comment would be welcome exlpaining what the extras are. Looks like it&apos;s SAVED_PROBE_RETURN_PC + something else. What something else? Or is it padding for alignment?
&gt;&gt; 
&gt;&gt; The extras are SAVED_PROBE_RETURN_PC plus the padding
&gt; 
&gt; I think a comment explaining that would be welcome.

OK, I&apos;ll add a comment

&gt;&gt;&gt;&gt; Source/JavaScriptCore/assembler/MacroAssemblerMIPS.cpp:339
&gt;&gt;&gt;&gt; +    &quot;addiu     $ra, $ra, 2*4&quot; &quot;\n&quot; // The PC after the probe is at 2 instructions past the return point.
&gt;&gt;&gt; 
&gt;&gt;&gt; I think we should use defines here. E.g. &quot;addiu $ra, $ra, PROBE_INSTRUCTIONS_AFTER_CALL * PTR_SIZE&quot;
&gt;&gt;&gt; And maybe also add an assert (or at least a comment) at the end of MacroAssembler::probe() to make sure that PROBE_INSTRUCTIONS_AFTER_CALL is in sync with the number of instructions after the trampoline call.
&gt;&gt; 
&gt;&gt; I will change it to 2 * PTR_SIZE. This is how it&apos;s done on ARM64. I don&apos;t see a simple way to check if this is in sync with the actual number of instructions
&gt; 
&gt; What I am proposing is something more manual done in ::probe like:
&gt; 
&gt;     m_assembler.jalr(s0);
&gt;     m_assembler.nop();
&gt;     load32(Address(sp, offsetof(RARestorationRecord, ra)), ra);
&gt;     add32(TrustedImm32(sizeof(RARestorationRecord)), sp);
&gt;     static_assert(PROBE_INSTRUCTIONS_AFTER_CALL == 2); // this needs to be the exact number of instructions after jalr and nop.
&gt; 
&gt; Or maybe an assert is overkill and a simple comment would work:
&gt;     // if you change this, make sure it&apos;s in sync with the definition of PROBE_INSTRUCTIONS_AFTER_CALL

I&apos;ll add a comment here</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1374421</commentid>
    <comment_count>11</comment_count>
      <attachid>327502</attachid>
    <who name="Stanislav Ocovaj">stanislav.ocovaj</who>
    <bug_when>2017-11-23 07:51:54 -0800</bug_when>
    <thetext>Created attachment 327502
MIPS implementation of MacroAssembler::probe()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1374422</commentid>
    <comment_count>12</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2017-11-23 07:53:29 -0800</bug_when>
    <thetext>Attachment 327502 did not pass style-queue:


ERROR: Source/JavaScriptCore/assembler/MacroAssemblerMIPS.cpp:551:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 9 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>1375096</commentid>
    <comment_count>13</comment_count>
    <who name="Guillaume Emont">guijemont</who>
    <bug_when>2017-11-27 13:33:49 -0800</bug_when>
    <thetext>I&apos;m happy with the shape of the patch. Currently running tests with it which will take a few more hours, but I&apos;m hopeful it won&apos;t introduce regressions as the previous version of the patch did not. Somebody else will have to give an r+ though, as I am not a reviewer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1375224</commentid>
    <comment_count>14</comment_count>
    <who name="Guillaume Emont">guijemont</who>
    <bug_when>2017-11-27 17:04:28 -0800</bug_when>
    <thetext>(In reply to Guillaume Emont from comment #13)
&gt; I&apos;m happy with the shape of the patch. Currently running tests with it which
&gt; will take a few more hours, but I&apos;m hopeful it won&apos;t introduce regressions
&gt; as the previous version of the patch did not. Somebody else will have to
&gt; give an r+ though, as I am not a reviewer.

The tests have run: only 2 failures left when running with a 1200 seconds timeout (compared to about 160 in svn in testbot), and they both seem to be related to the limited amount of memory available. (This is on a ci20 board).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1375869</commentid>
    <comment_count>15</comment_count>
      <attachid>327502</attachid>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2017-11-29 09:32:52 -0800</bug_when>
    <thetext>Comment on attachment 327502
MIPS implementation of MacroAssembler::probe()

r=me based on previous review from Guillaume that has reviewed and tested it</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1375959</commentid>
    <comment_count>16</comment_count>
      <attachid>327502</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-11-29 12:12:36 -0800</bug_when>
    <thetext>Comment on attachment 327502
MIPS implementation of MacroAssembler::probe()

Clearing flags on attachment: 327502

Committed r225286: &lt;https://trac.webkit.org/changeset/225286&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1375960</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-11-29 12:12:37 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1375961</commentid>
    <comment_count>18</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-11-29 12:13:24 -0800</bug_when>
    <thetext>&lt;rdar://problem/35754206&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376007</commentid>
    <comment_count>19</comment_count>
    <who name="Matt Lewis">jlewis3</who>
    <bug_when>2017-11-29 13:42:07 -0800</bug_when>
    <thetext>Reverted r225286 for reason:

The source files within this patch have been marked as executable.

Committed r225293: &lt;https://trac.webkit.org/changeset/225293&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376043</commentid>
    <comment_count>20</comment_count>
    <who name="Guillaume Emont">guijemont</who>
    <bug_when>2017-11-29 14:32:42 -0800</bug_when>
    <thetext>(In reply to Matt Lewis from comment #19)
&gt; Reverted r225286 for reason:
&gt; 
&gt; The source files within this patch have been marked as executable.
&gt; 
&gt; Committed r225293: &lt;https://trac.webkit.org/changeset/225293&gt;

Oh, I missed that.
Stanislav: please provide a new version of the patch that does not change permissions of existing files, and that sets the permissions of assembler/MacroAssemblerMIPS.cpp to the same as the other files (644, no executable bit set).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376087</commentid>
    <comment_count>21</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2017-11-29 16:06:37 -0800</bug_when>
    <thetext>(In reply to Matt Lewis from comment #19)
&gt; Reverted r225286 for reason:
&gt; 
&gt; The source files within this patch have been marked as executable.
&gt; 
&gt; Committed r225293: &lt;https://trac.webkit.org/changeset/225293&gt;

It think it would have been easier to fix the permissions instead of reverting the patch. Also it seems the revert bot is not very smart about this because Source/JavaScriptCore/ChangeLog and Source/WTF/ChangeLog continue to be executable.

I will try to fix this manually</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376093</commentid>
    <comment_count>22</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2017-11-29 16:16:31 -0800</bug_when>
    <thetext>Committed r225301: &lt;https://trac.webkit.org/changeset/225301&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376094</commentid>
    <comment_count>23</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2017-11-29 16:17:56 -0800</bug_when>
    <thetext>(In reply to Carlos Alberto Lopez Perez from comment #22)
&gt; Committed r225301: &lt;https://trac.webkit.org/changeset/225301&gt;

I re-landed it at the same time I fixed the permissions issue.

Thanks for notifying this issue with the permissions.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>327414</attachid>
            <date>2017-11-21 08:56:24 -0800</date>
            <delta_ts>2017-11-23 07:51:54 -0800</delta_ts>
            <desc>MIPS implementation of MacroAssembler::probe()</desc>
            <filename>dfg.patch</filename>
            <type>text/plain</type>
            <size>47891</size>
            <attacher name="Stanislav Ocovaj">stanislav.ocovaj</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5k
ZXggYWUwOTc2Ny4uY2ZmYjE4ZQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAor
MjAxNy0xMS0yMSAgU3RhbmlzbGF2IE9jb3ZhaiAgPHN0YW5pc2xhdi5vY292YWpAcnQtcmsuY29t
PgorCisgICAgICAgIFtNSVBTXVtKU0NdIEltcGxlbWVudCBNYWNyb0Fzc2VtYmxlcjo6cHJvYmUg
c3VwcG9ydCBvbiBNSVBTCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNzU0NDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGlzIHBhdGNoIGFsbG93cyBERkcgSklUIHRvIGJlIGVuYWJsZWQgb24gTUlQUyBw
bGF0Zm9ybXMuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBhc3NlbWJsZXIv
TUlQU0Fzc2VtYmxlci5oOgorICAgICAgICAoSlNDOjpNSVBTQXNzZW1ibGVyOjpsYXN0U1BSZWdp
c3Rlcik6CisgICAgICAgIChKU0M6Ok1JUFNBc3NlbWJsZXI6Om51bWJlck9mU1BSZWdpc3RlcnMp
OgorICAgICAgICAoSlNDOjpNSVBTQXNzZW1ibGVyOjpzcHJOYW1lKToKKyAgICAgICAgKiBhc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6Ok1hY3Jv
QXNzZW1ibGVyOjpwcm9iZSk6CisgICAgICAgICogYXNzZW1ibGVyL1Byb2JlQ29udGV4dC5jcHA6
CisgICAgICAgIChKU0M6OlByb2JlOjpleGVjdXRlUHJvYmUpOgorICAgICAgICAqIGFzc2VtYmxl
ci9Qcm9iZUNvbnRleHQuaDoKKyAgICAgICAgKEpTQzo6UHJvYmU6OkNQVVN0YXRlOjpwYyk6Cisg
ICAgICAgICogYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcDoKKyAgICAgICAgKEpTQzo6aXNTcGVjaWFs
R1BSKToKKyAgICAgICAgKEpTQzo6dGVzdFByb2JlUHJlc2VydmVzR1BSUyk6CisgICAgICAgIChK
U0M6OnRlc3RQcm9iZU1vZGlmaWVzU3RhY2tQb2ludGVyKToKKyAgICAgICAgKEpTQzo6dGVzdFBy
b2JlTW9kaWZpZXNTdGFja1ZhbHVlcyk6CisKIDIwMTctMTEtMjEgIFl1c3VrZSBTdXp1a2kgIDx1
dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgW0RGR11bRlRMXSBTdXBwb3J0IE1hcFNl
dCAvIFNldEFkZCBpbnRyaW5zaWNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
U291cmNlcy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKb2xkIG1vZGUg
MTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCA3MGU0YTMyLi4yMGQ2Y2UyCi0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
U291cmNlcy50eHQKQEAgLTQ3LDYgKzQ3LDcgQEAgYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJN
LmNwcAogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuY3BwCiBhc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJBUk12Ny5jcHAKIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckNvZGVSZWYuY3BwCith
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmNwcAogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
UHJpbnRlci5jcHAKIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5jcHAKIGFzc2Vt
Ymxlci9QcmludGVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NSVBTQXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01J
UFNBc3NlbWJsZXIuaApvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IGY4NmRh
ZjMuLjdhNzQ3YTkKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NSVBTQXNz
ZW1ibGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NSVBTQXNzZW1i
bGVyLmgKQEAgLTExMyw3ICsxMTMsOCBAQCB0eXBlZGVmIGVudW0gewogICAgIGZjY3IgPSAyNSwK
ICAgICBmZXhyID0gMjYsCiAgICAgZmVuciA9IDI4LAotICAgIGZjc3IgPSAzMQorICAgIGZjc3Ig
PSAzMSwKKyAgICBwYwogfSBTUFJlZ2lzdGVySUQ7CiAKIHR5cGVkZWYgZW51bSB7CkBAIC0xNjUs
OCArMTY2LDggQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbnVtYmVy
T2ZSZWdpc3RlcnMoKSB7IHJldHVybiBsYXN0UmVnaXN0ZXIoKSAtIGZpcnN0UmVnaXN0ZXIoKSAr
IDE7IH0KIAogICAgIHN0YXRpYyBjb25zdGV4cHIgU1BSZWdpc3RlcklEIGZpcnN0U1BSZWdpc3Rl
cigpIHsgcmV0dXJuIE1JUFNSZWdpc3RlcnM6OmZpcjsgfQotICAgIHN0YXRpYyBjb25zdGV4cHIg
U1BSZWdpc3RlcklEIGxhc3RTUFJlZ2lzdGVyKCkgeyByZXR1cm4gTUlQU1JlZ2lzdGVyczo6ZmNz
cjsgfQotICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbnVtYmVyT2ZTUFJlZ2lzdGVycygp
IHsgcmV0dXJuIDU7IH0KKyAgICBzdGF0aWMgY29uc3RleHByIFNQUmVnaXN0ZXJJRCBsYXN0U1BS
ZWdpc3RlcigpIHsgcmV0dXJuIE1JUFNSZWdpc3RlcnM6OnBjOyB9CisgICAgc3RhdGljIGNvbnN0
ZXhwciB1bnNpZ25lZCBudW1iZXJPZlNQUmVnaXN0ZXJzKCkgeyByZXR1cm4gbGFzdFNQUmVnaXN0
ZXIoKSAtIGZpcnN0U1BSZWdpc3RlcigpICsgMTsgfQogCiAgICAgc3RhdGljIGNvbnN0ZXhwciBG
UFJlZ2lzdGVySUQgZmlyc3RGUFJlZ2lzdGVyKCkgeyByZXR1cm4gTUlQU1JlZ2lzdGVyczo6ZjA7
IH0KICAgICBzdGF0aWMgY29uc3RleHByIEZQUmVnaXN0ZXJJRCBsYXN0RlBSZWdpc3RlcigpIHsg
cmV0dXJuIE1JUFNSZWdpc3RlcnM6OmYzMTsgfQpAQCAtMTk3LDYgKzE5OCw4IEBAIHB1YmxpYzoK
ICAgICAgICAgICAgIHJldHVybiAiZmVuciI7CiAgICAgICAgIGNhc2UgTUlQU1JlZ2lzdGVyczo6
ZmNzcjoKICAgICAgICAgICAgIHJldHVybiAiZmNzciI7CisgICAgICAgIGNhc2UgTUlQU1JlZ2lz
dGVyczo6cGM6CisgICAgICAgICAgICByZXR1cm4gInBjIjsKICAgICAgICAgZGVmYXVsdDoKICAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBT
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBT
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4zMzQyMTlhCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
ck1JUFMuY3BwCkBAIC0wLDAgKzEsNTI5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUo
QVNTRU1CTEVSKSAmJiBDUFUoTUlQUykKKyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgorCisj
aW5jbHVkZSAiUHJvYmVDb250ZXh0LmgiCisjaW5jbHVkZSA8d3RmL0lubGluZUFTTS5oPgorCitu
YW1lc3BhY2UgSlNDIHsKKworI2lmIEVOQUJMRShNQVNNX1BST0JFKQorCitleHRlcm4gIkMiIHZv
aWQgY3RpTWFzbVByb2JlVHJhbXBvbGluZSgpOworCit1c2luZyBuYW1lc3BhY2UgTUlQU1JlZ2lz
dGVyczsKKworI2lmIENPTVBJTEVSKEdDQ19PUl9DTEFORykKKworLy8gVGhlIGZvbGxvd2luZyBh
cmUgb2Zmc2V0cyBmb3IgUHJvYmU6OlN0YXRlIGZpZWxkcyBhY2Nlc3NlZAorLy8gYnkgdGhlIGN0
aU1hc21Qcm9iZVRyYW1wb2xpbmUgc3R1Yi4KKworI2RlZmluZSBQVFJfU0laRSA0CisjZGVmaW5l
IFBST0JFX1BST0JFX0ZVTkNUSU9OX09GRlNFVCAoMCAqIFBUUl9TSVpFKQorI2RlZmluZSBQUk9C
RV9BUkdfT0ZGU0VUICgxICogUFRSX1NJWkUpCisjZGVmaW5lIFBST0JFX0lOSVRfU1RBQ0tfRlVO
Q1RJT05fT0ZGU0VUICgyICogUFRSX1NJWkUpCisjZGVmaW5lIFBST0JFX0lOSVRfU1RBQ0tfQVJH
X09GRlNFVCAoMyAqIFBUUl9TSVpFKQorCisjZGVmaW5lIFBST0JFX0ZJUlNUX0dQUkVHX09GRlNF
VCAoNCAqIFBUUl9TSVpFKQorCisjZGVmaW5lIEdQUkVHX1NJWkUgNAorI2RlZmluZSBQUk9CRV9D
UFVfWlJfT0ZGU0VUIChQUk9CRV9GSVJTVF9HUFJFR19PRkZTRVQgKyAoIDAgKiBHUFJFR19TSVpF
KSkKKyNkZWZpbmUgUFJPQkVfQ1BVX0FUX09GRlNFVCAoUFJPQkVfRklSU1RfR1BSRUdfT0ZGU0VU
ICsgKCAxICogR1BSRUdfU0laRSkpCisjZGVmaW5lIFBST0JFX0NQVV9WMF9PRkZTRVQgKFBST0JF
X0ZJUlNUX0dQUkVHX09GRlNFVCArICggMiAqIEdQUkVHX1NJWkUpKQorI2RlZmluZSBQUk9CRV9D
UFVfVjFfT0ZGU0VUIChQUk9CRV9GSVJTVF9HUFJFR19PRkZTRVQgKyAoIDMgKiBHUFJFR19TSVpF
KSkKKyNkZWZpbmUgUFJPQkVfQ1BVX0EwX09GRlNFVCAoUFJPQkVfRklSU1RfR1BSRUdfT0ZGU0VU
ICsgKCA0ICogR1BSRUdfU0laRSkpCisjZGVmaW5lIFBST0JFX0NQVV9BMV9PRkZTRVQgKFBST0JF
X0ZJUlNUX0dQUkVHX09GRlNFVCArICggNSAqIEdQUkVHX1NJWkUpKQorI2RlZmluZSBQUk9CRV9D
UFVfQTJfT0ZGU0VUIChQUk9CRV9GSVJTVF9HUFJFR19PRkZTRVQgKyAoIDYgKiBHUFJFR19TSVpF
KSkKKyNkZWZpbmUgUFJPQkVfQ1BVX0EzX09GRlNFVCAoUFJPQkVfRklSU1RfR1BSRUdfT0ZGU0VU
ICsgKCA3ICogR1BSRUdfU0laRSkpCisjZGVmaW5lIFBST0JFX0NQVV9UMF9PRkZTRVQgKFBST0JF
X0ZJUlNUX0dQUkVHX09GRlNFVCArICggOCAqIEdQUkVHX1NJWkUpKQorI2RlZmluZSBQUk9CRV9D
UFVfVDFfT0ZGU0VUIChQUk9CRV9GSVJTVF9HUFJFR19PRkZTRVQgKyAoIDkgKiBHUFJFR19TSVpF
KSkKKyNkZWZpbmUgUFJPQkVfQ1BVX1QyX09GRlNFVCAoUFJPQkVfRklSU1RfR1BSRUdfT0ZGU0VU
ICsgKDEwICogR1BSRUdfU0laRSkpCisjZGVmaW5lIFBST0JFX0NQVV9UM19PRkZTRVQgKFBST0JF
X0ZJUlNUX0dQUkVHX09GRlNFVCArICgxMSAqIEdQUkVHX1NJWkUpKQorI2RlZmluZSBQUk9CRV9D
UFVfVDRfT0ZGU0VUIChQUk9CRV9GSVJTVF9HUFJFR19PRkZTRVQgKyAoMTIgKiBHUFJFR19TSVpF
KSkKKyNkZWZpbmUgUFJPQkVfQ1BVX1Q1X09GRlNFVCAoUFJPQkVfRklSU1RfR1BSRUdfT0ZGU0VU
ICsgKDEzICogR1BSRUdfU0laRSkpCisjZGVmaW5lIFBST0JFX0NQVV9UNl9PRkZTRVQgKFBST0JF
X0ZJUlNUX0dQUkVHX09GRlNFVCArICgxNCAqIEdQUkVHX1NJWkUpKQorI2RlZmluZSBQUk9CRV9D
UFVfVDdfT0ZGU0VUIChQUk9CRV9GSVJTVF9HUFJFR19PRkZTRVQgKyAoMTUgKiBHUFJFR19TSVpF
KSkKKyNkZWZpbmUgUFJPQkVfQ1BVX1MwX09GRlNFVCAoUFJPQkVfRklSU1RfR1BSRUdfT0ZGU0VU
ICsgKDE2ICogR1BSRUdfU0laRSkpCisjZGVmaW5lIFBST0JFX0NQVV9TMV9PRkZTRVQgKFBST0JF
X0ZJUlNUX0dQUkVHX09GRlNFVCArICgxNyAqIEdQUkVHX1NJWkUpKQorI2RlZmluZSBQUk9CRV9D
UFVfUzJfT0ZGU0VUIChQUk9CRV9GSVJTVF9HUFJFR19PRkZTRVQgKyAoMTggKiBHUFJFR19TSVpF
KSkKKyNkZWZpbmUgUFJPQkVfQ1BVX1MzX09GRlNFVCAoUFJPQkVfRklSU1RfR1BSRUdfT0ZGU0VU
ICsgKDE5ICogR1BSRUdfU0laRSkpCisjZGVmaW5lIFBST0JFX0NQVV9TNF9PRkZTRVQgKFBST0JF
X0ZJUlNUX0dQUkVHX09GRlNFVCArICgyMCAqIEdQUkVHX1NJWkUpKQorI2RlZmluZSBQUk9CRV9D
UFVfUzVfT0ZGU0VUIChQUk9CRV9GSVJTVF9HUFJFR19PRkZTRVQgKyAoMjEgKiBHUFJFR19TSVpF
KSkKKyNkZWZpbmUgUFJPQkVfQ1BVX1M2X09GRlNFVCAoUFJPQkVfRklSU1RfR1BSRUdfT0ZGU0VU
ICsgKDIyICogR1BSRUdfU0laRSkpCisjZGVmaW5lIFBST0JFX0NQVV9TN19PRkZTRVQgKFBST0JF
X0ZJUlNUX0dQUkVHX09GRlNFVCArICgyMyAqIEdQUkVHX1NJWkUpKQorI2RlZmluZSBQUk9CRV9D
UFVfVDhfT0ZGU0VUIChQUk9CRV9GSVJTVF9HUFJFR19PRkZTRVQgKyAoMjQgKiBHUFJFR19TSVpF
KSkKKyNkZWZpbmUgUFJPQkVfQ1BVX1Q5X09GRlNFVCAoUFJPQkVfRklSU1RfR1BSRUdfT0ZGU0VU
ICsgKDI1ICogR1BSRUdfU0laRSkpCisjZGVmaW5lIFBST0JFX0NQVV9LMF9PRkZTRVQgKFBST0JF
X0ZJUlNUX0dQUkVHX09GRlNFVCArICgyNiAqIEdQUkVHX1NJWkUpKQorI2RlZmluZSBQUk9CRV9D
UFVfSzFfT0ZGU0VUIChQUk9CRV9GSVJTVF9HUFJFR19PRkZTRVQgKyAoMjcgKiBHUFJFR19TSVpF
KSkKKyNkZWZpbmUgUFJPQkVfQ1BVX0dQX09GRlNFVCAoUFJPQkVfRklSU1RfR1BSRUdfT0ZGU0VU
ICsgKDI4ICogR1BSRUdfU0laRSkpCisjZGVmaW5lIFBST0JFX0NQVV9TUF9PRkZTRVQgKFBST0JF
X0ZJUlNUX0dQUkVHX09GRlNFVCArICgyOSAqIEdQUkVHX1NJWkUpKQorI2RlZmluZSBQUk9CRV9D
UFVfRlBfT0ZGU0VUIChQUk9CRV9GSVJTVF9HUFJFR19PRkZTRVQgKyAoMzAgKiBHUFJFR19TSVpF
KSkKKyNkZWZpbmUgUFJPQkVfQ1BVX1JBX09GRlNFVCAoUFJPQkVfRklSU1RfR1BSRUdfT0ZGU0VU
ICsgKDMxICogR1BSRUdfU0laRSkpCisKKyNkZWZpbmUgUFJPQkVfRklSU1RfU1BSRUdfT0ZGU0VU
IChQUk9CRV9GSVJTVF9HUFJFR19PRkZTRVQgKyAoMzIgKiBHUFJFR19TSVpFKSkKKworI2RlZmlu
ZSBQUk9CRV9DUFVfUENfT0ZGU0VUIChQUk9CRV9GSVJTVF9TUFJFR19PRkZTRVQgKyAoMzIgKiBH
UFJFR19TSVpFKSkKKworI2RlZmluZSBQUk9CRV9GSVJTVF9GUFJFR19PRkZTRVQgKFBST0JFX0ZJ
UlNUX1NQUkVHX09GRlNFVCArICgzNCAqIEdQUkVHX1NJWkUpKQorCisjZGVmaW5lIEZQUkVHX1NJ
WkUgOAorI2RlZmluZSBQUk9CRV9DUFVfRjBfT0ZGU0VUICAoUFJPQkVfRklSU1RfRlBSRUdfT0ZG
U0VUICsgKCAwICogRlBSRUdfU0laRSkpCisjZGVmaW5lIFBST0JFX0NQVV9GMV9PRkZTRVQgIChQ
Uk9CRV9GSVJTVF9GUFJFR19PRkZTRVQgKyAoIDEgKiBGUFJFR19TSVpFKSkKKyNkZWZpbmUgUFJP
QkVfQ1BVX0YyX09GRlNFVCAgKFBST0JFX0ZJUlNUX0ZQUkVHX09GRlNFVCArICggMiAqIEZQUkVH
X1NJWkUpKQorI2RlZmluZSBQUk9CRV9DUFVfRjNfT0ZGU0VUICAoUFJPQkVfRklSU1RfRlBSRUdf
T0ZGU0VUICsgKCAzICogRlBSRUdfU0laRSkpCisjZGVmaW5lIFBST0JFX0NQVV9GNF9PRkZTRVQg
IChQUk9CRV9GSVJTVF9GUFJFR19PRkZTRVQgKyAoIDQgKiBGUFJFR19TSVpFKSkKKyNkZWZpbmUg
UFJPQkVfQ1BVX0Y1X09GRlNFVCAgKFBST0JFX0ZJUlNUX0ZQUkVHX09GRlNFVCArICggNSAqIEZQ
UkVHX1NJWkUpKQorI2RlZmluZSBQUk9CRV9DUFVfRjZfT0ZGU0VUICAoUFJPQkVfRklSU1RfRlBS
RUdfT0ZGU0VUICsgKCA2ICogRlBSRUdfU0laRSkpCisjZGVmaW5lIFBST0JFX0NQVV9GN19PRkZT
RVQgIChQUk9CRV9GSVJTVF9GUFJFR19PRkZTRVQgKyAoIDcgKiBGUFJFR19TSVpFKSkKKyNkZWZp
bmUgUFJPQkVfQ1BVX0Y4X09GRlNFVCAgKFBST0JFX0ZJUlNUX0ZQUkVHX09GRlNFVCArICggOCAq
IEZQUkVHX1NJWkUpKQorI2RlZmluZSBQUk9CRV9DUFVfRjlfT0ZGU0VUICAoUFJPQkVfRklSU1Rf
RlBSRUdfT0ZGU0VUICsgKCA5ICogRlBSRUdfU0laRSkpCisjZGVmaW5lIFBST0JFX0NQVV9GMTBf
T0ZGU0VUIChQUk9CRV9GSVJTVF9GUFJFR19PRkZTRVQgKyAoMTAgKiBGUFJFR19TSVpFKSkKKyNk
ZWZpbmUgUFJPQkVfQ1BVX0YxMV9PRkZTRVQgKFBST0JFX0ZJUlNUX0ZQUkVHX09GRlNFVCArICgx
MSAqIEZQUkVHX1NJWkUpKQorI2RlZmluZSBQUk9CRV9DUFVfRjEyX09GRlNFVCAoUFJPQkVfRklS
U1RfRlBSRUdfT0ZGU0VUICsgKDEyICogRlBSRUdfU0laRSkpCisjZGVmaW5lIFBST0JFX0NQVV9G
MTNfT0ZGU0VUIChQUk9CRV9GSVJTVF9GUFJFR19PRkZTRVQgKyAoMTMgKiBGUFJFR19TSVpFKSkK
KyNkZWZpbmUgUFJPQkVfQ1BVX0YxNF9PRkZTRVQgKFBST0JFX0ZJUlNUX0ZQUkVHX09GRlNFVCAr
ICgxNCAqIEZQUkVHX1NJWkUpKQorI2RlZmluZSBQUk9CRV9DUFVfRjE1X09GRlNFVCAoUFJPQkVf
RklSU1RfRlBSRUdfT0ZGU0VUICsgKDE1ICogRlBSRUdfU0laRSkpCisjZGVmaW5lIFBST0JFX0NQ
VV9GMTZfT0ZGU0VUIChQUk9CRV9GSVJTVF9GUFJFR19PRkZTRVQgKyAoMTYgKiBGUFJFR19TSVpF
KSkKKyNkZWZpbmUgUFJPQkVfQ1BVX0YxN19PRkZTRVQgKFBST0JFX0ZJUlNUX0ZQUkVHX09GRlNF
VCArICgxNyAqIEZQUkVHX1NJWkUpKQorI2RlZmluZSBQUk9CRV9DUFVfRjE4X09GRlNFVCAoUFJP
QkVfRklSU1RfRlBSRUdfT0ZGU0VUICsgKDE4ICogRlBSRUdfU0laRSkpCisjZGVmaW5lIFBST0JF
X0NQVV9GMTlfT0ZGU0VUIChQUk9CRV9GSVJTVF9GUFJFR19PRkZTRVQgKyAoMTkgKiBGUFJFR19T
SVpFKSkKKyNkZWZpbmUgUFJPQkVfQ1BVX0YyMF9PRkZTRVQgKFBST0JFX0ZJUlNUX0ZQUkVHX09G
RlNFVCArICgyMCAqIEZQUkVHX1NJWkUpKQorI2RlZmluZSBQUk9CRV9DUFVfRjIxX09GRlNFVCAo
UFJPQkVfRklSU1RfRlBSRUdfT0ZGU0VUICsgKDIxICogRlBSRUdfU0laRSkpCisjZGVmaW5lIFBS
T0JFX0NQVV9GMjJfT0ZGU0VUIChQUk9CRV9GSVJTVF9GUFJFR19PRkZTRVQgKyAoMjIgKiBGUFJF
R19TSVpFKSkKKyNkZWZpbmUgUFJPQkVfQ1BVX0YyM19PRkZTRVQgKFBST0JFX0ZJUlNUX0ZQUkVH
X09GRlNFVCArICgyMyAqIEZQUkVHX1NJWkUpKQorI2RlZmluZSBQUk9CRV9DUFVfRjI0X09GRlNF
VCAoUFJPQkVfRklSU1RfRlBSRUdfT0ZGU0VUICsgKDI0ICogRlBSRUdfU0laRSkpCisjZGVmaW5l
IFBST0JFX0NQVV9GMjVfT0ZGU0VUIChQUk9CRV9GSVJTVF9GUFJFR19PRkZTRVQgKyAoMjUgKiBG
UFJFR19TSVpFKSkKKyNkZWZpbmUgUFJPQkVfQ1BVX0YyNl9PRkZTRVQgKFBST0JFX0ZJUlNUX0ZQ
UkVHX09GRlNFVCArICgyNiAqIEZQUkVHX1NJWkUpKQorI2RlZmluZSBQUk9CRV9DUFVfRjI3X09G
RlNFVCAoUFJPQkVfRklSU1RfRlBSRUdfT0ZGU0VUICsgKDI3ICogRlBSRUdfU0laRSkpCisjZGVm
aW5lIFBST0JFX0NQVV9GMjhfT0ZGU0VUIChQUk9CRV9GSVJTVF9GUFJFR19PRkZTRVQgKyAoMjgg
KiBGUFJFR19TSVpFKSkKKyNkZWZpbmUgUFJPQkVfQ1BVX0YyOV9PRkZTRVQgKFBST0JFX0ZJUlNU
X0ZQUkVHX09GRlNFVCArICgyOSAqIEZQUkVHX1NJWkUpKQorI2RlZmluZSBQUk9CRV9DUFVfRjMw
X09GRlNFVCAoUFJPQkVfRklSU1RfRlBSRUdfT0ZGU0VUICsgKDMwICogRlBSRUdfU0laRSkpCisj
ZGVmaW5lIFBST0JFX0NQVV9GMzFfT0ZGU0VUIChQUk9CRV9GSVJTVF9GUFJFR19PRkZTRVQgKyAo
MzEgKiBGUFJFR19TSVpFKSkKKworI2RlZmluZSBQUk9CRV9TSVpFIChQUk9CRV9GSVJTVF9GUFJF
R19PRkZTRVQgKyAoMzIgKiBGUFJFR19TSVpFKSkKKworI2RlZmluZSBTQVZFRF9QUk9CRV9SRVRV
Uk5fUENfT0ZGU0VUICAgICAgICAoUFJPQkVfU0laRSArICgwICogUFRSX1NJWkUpKQorI2RlZmlu
ZSBQUk9CRV9TSVpFX1BMVVNfRVhUUkFTICAgICAgICAgICAgICAoUFJPQkVfU0laRSArICgyICog
UFRSX1NJWkUpKQorCisvLyBUaGVzZSBBU1NFUlRzIHJlbWluZCB5b3UgdGhhdCBpZiB5b3UgY2hh
bmdlIHRoZSBsYXlvdXQgb2YgUHJvYmU6OlN0YXRlLAorLy8geW91IG5lZWQgdG8gY2hhbmdlIGN0
aU1hc21Qcm9iZVRyYW1wb2xpbmUgb2Zmc2V0cyBhYm92ZSB0byBtYXRjaC4KKyNkZWZpbmUgUFJP
QkVfT0ZGU0VUT0YoeCkgb2Zmc2V0b2Yoc3RydWN0IFByb2JlOjpTdGF0ZSwgeCkKK3N0YXRpY19h
c3NlcnQoUFJPQkVfT0ZGU0VUT0YocHJvYmVGdW5jdGlvbikgPT0gUFJPQkVfUFJPQkVfRlVOQ1RJ
T05fT0ZGU0VULCAiUHJvYmU6OlN0YXRlOjpwcm9iZUZ1bmN0aW9uJ3Mgb2Zmc2V0IG1hdGNoZXMg
Y3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOworc3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihh
cmcpID09IFBST0JFX0FSR19PRkZTRVQsICJQcm9iZTo6U3RhdGU6OmFyZydzIG9mZnNldCBtYXRj
aGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsKK3N0YXRpY19hc3NlcnQoUFJPQkVfT0ZGU0VU
T0YoaW5pdGlhbGl6ZVN0YWNrRnVuY3Rpb24pID09IFBST0JFX0lOSVRfU1RBQ0tfRlVOQ1RJT05f
T0ZGU0VULCAiUHJvYmU6OlN0YXRlOjppbml0aWFsaXplU3RhY2tGdW5jdGlvbidzIG9mZnNldCBt
YXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsKK3N0YXRpY19hc3NlcnQoUFJPQkVfT0ZG
U0VUT0YoaW5pdGlhbGl6ZVN0YWNrQXJnKSA9PSBQUk9CRV9JTklUX1NUQUNLX0FSR19PRkZTRVQs
ICJQcm9iZTo6U3RhdGU6OmluaXRpYWxpemVTdGFja0FyZydzIG9mZnNldCBtYXRjaGVzIGN0aU1h
c21Qcm9iZVRyYW1wb2xpbmUiKTsKKworc3RhdGljX2Fzc2VydCghKFBST0JFX0NQVV9aUl9PRkZT
RVQgJiAweDMpLCAiUHJvYmU6OlN0YXRlOjpjcHUuZ3Byc1t6ZXJvXSdzIG9mZnNldCBzaG91bGQg
YmUgNCBieXRlIGFsaWduZWQiKTsKKworc3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihjcHUu
Z3Byc1tNSVBTUmVnaXN0ZXJzOjp6ZXJvXSkgPT0gUFJPQkVfQ1BVX1pSX09GRlNFVCwgIlByb2Jl
OjpTdGF0ZTo6Y3B1LmdwcnNbemVyb10ncyBvZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFt
cG9saW5lIik7CitzdGF0aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9GKGNwdS5ncHJzW01JUFNSZWdp
c3RlcnM6OmF0XSkgPT0gUFJPQkVfQ1BVX0FUX09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1Lmdw
cnNbYXRdJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOworc3RhdGlj
X2Fzc2VydChQUk9CRV9PRkZTRVRPRihjcHUuZ3Byc1tNSVBTUmVnaXN0ZXJzOjp2MF0pID09IFBS
T0JFX0NQVV9WMF9PRkZTRVQsICJQcm9iZTo6U3RhdGU6OmNwdS5ncHJzW3YwXSdzIG9mZnNldCBt
YXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsKK3N0YXRpY19hc3NlcnQoUFJPQkVfT0ZG
U0VUT0YoY3B1LmdwcnNbTUlQU1JlZ2lzdGVyczo6djFdKSA9PSBQUk9CRV9DUFVfVjFfT0ZGU0VU
LCAiUHJvYmU6OlN0YXRlOjpjcHUuZ3Byc1t2MV0ncyBvZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJv
YmVUcmFtcG9saW5lIik7CitzdGF0aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9GKGNwdS5ncHJzW01J
UFNSZWdpc3RlcnM6OmEwXSkgPT0gUFJPQkVfQ1BVX0EwX09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6
Y3B1LmdwcnNbYTBdJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOwor
c3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihjcHUuZ3Byc1tNSVBTUmVnaXN0ZXJzOjphMV0p
ID09IFBST0JFX0NQVV9BMV9PRkZTRVQsICJQcm9iZTo6U3RhdGU6OmNwdS5ncHJzW2ExXSdzIG9m
ZnNldCBtYXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsKK3N0YXRpY19hc3NlcnQoUFJP
QkVfT0ZGU0VUT0YoY3B1LmdwcnNbTUlQU1JlZ2lzdGVyczo6YTJdKSA9PSBQUk9CRV9DUFVfQTJf
T0ZGU0VULCAiUHJvYmU6OlN0YXRlOjpjcHUuZ3Byc1thMl0ncyBvZmZzZXQgbWF0Y2hlcyBjdGlN
YXNtUHJvYmVUcmFtcG9saW5lIik7CitzdGF0aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9GKGNwdS5n
cHJzW01JUFNSZWdpc3RlcnM6OmEzXSkgPT0gUFJPQkVfQ1BVX0EzX09GRlNFVCwgIlByb2JlOjpT
dGF0ZTo6Y3B1LmdwcnNbYTNdJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGlu
ZSIpOworc3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihjcHUuZ3Byc1tNSVBTUmVnaXN0ZXJz
Ojp0MF0pID09IFBST0JFX0NQVV9UMF9PRkZTRVQsICJQcm9iZTo6U3RhdGU6OmNwdS5ncHJzW3Qw
XSdzIG9mZnNldCBtYXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsKK3N0YXRpY19hc3Nl
cnQoUFJPQkVfT0ZGU0VUT0YoY3B1LmdwcnNbTUlQU1JlZ2lzdGVyczo6dDFdKSA9PSBQUk9CRV9D
UFVfVDFfT0ZGU0VULCAiUHJvYmU6OlN0YXRlOjpjcHUuZ3Byc1t0MV0ncyBvZmZzZXQgbWF0Y2hl
cyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lIik7CitzdGF0aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9G
KGNwdS5ncHJzW01JUFNSZWdpc3RlcnM6OnQyXSkgPT0gUFJPQkVfQ1BVX1QyX09GRlNFVCwgIlBy
b2JlOjpTdGF0ZTo6Y3B1LmdwcnNbdDJdJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJh
bXBvbGluZSIpOworc3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihjcHUuZ3Byc1tNSVBTUmVn
aXN0ZXJzOjp0M10pID09IFBST0JFX0NQVV9UM19PRkZTRVQsICJQcm9iZTo6U3RhdGU6OmNwdS5n
cHJzW3QzXSdzIG9mZnNldCBtYXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsKK3N0YXRp
Y19hc3NlcnQoUFJPQkVfT0ZGU0VUT0YoY3B1LmdwcnNbTUlQU1JlZ2lzdGVyczo6dDRdKSA9PSBQ
Uk9CRV9DUFVfVDRfT0ZGU0VULCAiUHJvYmU6OlN0YXRlOjpjcHUuZ3Byc1t0NF0ncyBvZmZzZXQg
bWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lIik7CitzdGF0aWNfYXNzZXJ0KFBST0JFX09G
RlNFVE9GKGNwdS5ncHJzW01JUFNSZWdpc3RlcnM6OnQ1XSkgPT0gUFJPQkVfQ1BVX1Q1X09GRlNF
VCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmdwcnNbdDVdJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVBy
b2JlVHJhbXBvbGluZSIpOworc3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihjcHUuZ3Byc1tN
SVBTUmVnaXN0ZXJzOjp0Nl0pID09IFBST0JFX0NQVV9UNl9PRkZTRVQsICJQcm9iZTo6U3RhdGU6
OmNwdS5ncHJzW3Q2XSdzIG9mZnNldCBtYXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsK
K3N0YXRpY19hc3NlcnQoUFJPQkVfT0ZGU0VUT0YoY3B1LmdwcnNbTUlQU1JlZ2lzdGVyczo6dDdd
KSA9PSBQUk9CRV9DUFVfVDdfT0ZGU0VULCAiUHJvYmU6OlN0YXRlOjpjcHUuZ3Byc1t0N10ncyBv
ZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lIik7CitzdGF0aWNfYXNzZXJ0KFBS
T0JFX09GRlNFVE9GKGNwdS5ncHJzW01JUFNSZWdpc3RlcnM6OnMwXSkgPT0gUFJPQkVfQ1BVX1Mw
X09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmdwcnNbczBdJ3Mgb2Zmc2V0IG1hdGNoZXMgY3Rp
TWFzbVByb2JlVHJhbXBvbGluZSIpOworc3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihjcHUu
Z3Byc1tNSVBTUmVnaXN0ZXJzOjpzMV0pID09IFBST0JFX0NQVV9TMV9PRkZTRVQsICJQcm9iZTo6
U3RhdGU6OmNwdS5ncHJzW3MxXSdzIG9mZnNldCBtYXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xp
bmUiKTsKK3N0YXRpY19hc3NlcnQoUFJPQkVfT0ZGU0VUT0YoY3B1LmdwcnNbTUlQU1JlZ2lzdGVy
czo6czJdKSA9PSBQUk9CRV9DUFVfUzJfT0ZGU0VULCAiUHJvYmU6OlN0YXRlOjpjcHUuZ3Byc1tz
Ml0ncyBvZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lIik7CitzdGF0aWNfYXNz
ZXJ0KFBST0JFX09GRlNFVE9GKGNwdS5ncHJzW01JUFNSZWdpc3RlcnM6OnMzXSkgPT0gUFJPQkVf
Q1BVX1MzX09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmdwcnNbczNdJ3Mgb2Zmc2V0IG1hdGNo
ZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOworc3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRP
RihjcHUuZ3Byc1tNSVBTUmVnaXN0ZXJzOjpzNF0pID09IFBST0JFX0NQVV9TNF9PRkZTRVQsICJQ
cm9iZTo6U3RhdGU6OmNwdS5ncHJzW3M0XSdzIG9mZnNldCBtYXRjaGVzIGN0aU1hc21Qcm9iZVRy
YW1wb2xpbmUiKTsKK3N0YXRpY19hc3NlcnQoUFJPQkVfT0ZGU0VUT0YoY3B1LmdwcnNbTUlQU1Jl
Z2lzdGVyczo6czVdKSA9PSBQUk9CRV9DUFVfUzVfT0ZGU0VULCAiUHJvYmU6OlN0YXRlOjpjcHUu
Z3Byc1tzNV0ncyBvZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lIik7CitzdGF0
aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9GKGNwdS5ncHJzW01JUFNSZWdpc3RlcnM6OnM2XSkgPT0g
UFJPQkVfQ1BVX1M2X09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmdwcnNbczZdJ3Mgb2Zmc2V0
IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOworc3RhdGljX2Fzc2VydChQUk9CRV9P
RkZTRVRPRihjcHUuZ3Byc1tNSVBTUmVnaXN0ZXJzOjpzN10pID09IFBST0JFX0NQVV9TN19PRkZT
RVQsICJQcm9iZTo6U3RhdGU6OmNwdS5ncHJzW3M3XSdzIG9mZnNldCBtYXRjaGVzIGN0aU1hc21Q
cm9iZVRyYW1wb2xpbmUiKTsKK3N0YXRpY19hc3NlcnQoUFJPQkVfT0ZGU0VUT0YoY3B1LmdwcnNb
TUlQU1JlZ2lzdGVyczo6dDhdKSA9PSBQUk9CRV9DUFVfVDhfT0ZGU0VULCAiUHJvYmU6OlN0YXRl
OjpjcHUuZ3Byc1t0OF0ncyBvZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lIik7
CitzdGF0aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9GKGNwdS5ncHJzW01JUFNSZWdpc3RlcnM6OnQ5
XSkgPT0gUFJPQkVfQ1BVX1Q5X09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmdwcnNbdDldJ3Mg
b2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOworc3RhdGljX2Fzc2VydChQ
Uk9CRV9PRkZTRVRPRihjcHUuZ3Byc1tNSVBTUmVnaXN0ZXJzOjprMF0pID09IFBST0JFX0NQVV9L
MF9PRkZTRVQsICJQcm9iZTo6U3RhdGU6OmNwdS5ncHJzW2swXSdzIG9mZnNldCBtYXRjaGVzIGN0
aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsKK3N0YXRpY19hc3NlcnQoUFJPQkVfT0ZGU0VUT0YoY3B1
LmdwcnNbTUlQU1JlZ2lzdGVyczo6azFdKSA9PSBQUk9CRV9DUFVfSzFfT0ZGU0VULCAiUHJvYmU6
OlN0YXRlOjpjcHUuZ3Byc1trMV0ncyBvZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFtcG9s
aW5lIik7CitzdGF0aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9GKGNwdS5ncHJzW01JUFNSZWdpc3Rl
cnM6OmdwXSkgPT0gUFJPQkVfQ1BVX0dQX09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmdwcnNb
Z3BdJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOworc3RhdGljX2Fz
c2VydChQUk9CRV9PRkZTRVRPRihjcHUuZ3Byc1tNSVBTUmVnaXN0ZXJzOjpzcF0pID09IFBST0JF
X0NQVV9TUF9PRkZTRVQsICJQcm9iZTo6U3RhdGU6OmNwdS5ncHJzW3NwXSdzIG9mZnNldCBtYXRj
aGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsKK3N0YXRpY19hc3NlcnQoUFJPQkVfT0ZGU0VU
T0YoY3B1LmdwcnNbTUlQU1JlZ2lzdGVyczo6ZnBdKSA9PSBQUk9CRV9DUFVfRlBfT0ZGU0VULCAi
UHJvYmU6OlN0YXRlOjpjcHUuZ3Byc1tmcF0ncyBvZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVU
cmFtcG9saW5lIik7CitzdGF0aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9GKGNwdS5ncHJzW01JUFNS
ZWdpc3RlcnM6OnJhXSkgPT0gUFJPQkVfQ1BVX1JBX09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1
LmdwcnNbcmFdJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOworCitz
dGF0aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9GKGNwdS5zcHJzW01JUFNSZWdpc3RlcnM6OnBjXSkg
PT0gUFJPQkVfQ1BVX1BDX09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LnNwcnNbcGNdJ3Mgb2Zm
c2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOworCitzdGF0aWNfYXNzZXJ0KCEo
UFJPQkVfQ1BVX0YwX09GRlNFVCAmIDB4NyksICJQcm9iZTo6U3RhdGU6OmNwdS5mcHJzW2YwXSdz
IG9mZnNldCBzaG91bGQgYmUgOCBieXRlIGFsaWduZWQiKTsKKworc3RhdGljX2Fzc2VydChQUk9C
RV9PRkZTRVRPRihjcHUuZnByc1tNSVBTUmVnaXN0ZXJzOjpmMF0pICA9PSBQUk9CRV9DUFVfRjBf
T0ZGU0VULCAgIlByb2JlOjpTdGF0ZTo6Y3B1LmZwcnNbZjBdJ3Mgb2Zmc2V0IG1hdGNoZXMgY3Rp
TWFzbVByb2JlVHJhbXBvbGluZSIpOworc3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihjcHUu
ZnByc1tNSVBTUmVnaXN0ZXJzOjpmMV0pICA9PSBQUk9CRV9DUFVfRjFfT0ZGU0VULCAgIlByb2Jl
OjpTdGF0ZTo6Y3B1LmZwcnNbZjFdJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBv
bGluZSIpOworc3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihjcHUuZnByc1tNSVBTUmVnaXN0
ZXJzOjpmMl0pICA9PSBQUk9CRV9DUFVfRjJfT0ZGU0VULCAgIlByb2JlOjpTdGF0ZTo6Y3B1LmZw
cnNbZjJdJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOworc3RhdGlj
X2Fzc2VydChQUk9CRV9PRkZTRVRPRihjcHUuZnByc1tNSVBTUmVnaXN0ZXJzOjpmM10pICA9PSBQ
Uk9CRV9DUFVfRjNfT0ZGU0VULCAgIlByb2JlOjpTdGF0ZTo6Y3B1LmZwcnNbZjNdJ3Mgb2Zmc2V0
IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOworc3RhdGljX2Fzc2VydChQUk9CRV9P
RkZTRVRPRihjcHUuZnByc1tNSVBTUmVnaXN0ZXJzOjpmNF0pICA9PSBQUk9CRV9DUFVfRjRfT0ZG
U0VULCAgIlByb2JlOjpTdGF0ZTo6Y3B1LmZwcnNbZjRdJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFz
bVByb2JlVHJhbXBvbGluZSIpOworc3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihjcHUuZnBy
c1tNSVBTUmVnaXN0ZXJzOjpmNV0pICA9PSBQUk9CRV9DUFVfRjVfT0ZGU0VULCAgIlByb2JlOjpT
dGF0ZTo6Y3B1LmZwcnNbZjVdJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGlu
ZSIpOworc3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihjcHUuZnByc1tNSVBTUmVnaXN0ZXJz
OjpmNl0pICA9PSBQUk9CRV9DUFVfRjZfT0ZGU0VULCAgIlByb2JlOjpTdGF0ZTo6Y3B1LmZwcnNb
ZjZdJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOworc3RhdGljX2Fz
c2VydChQUk9CRV9PRkZTRVRPRihjcHUuZnByc1tNSVBTUmVnaXN0ZXJzOjpmN10pICA9PSBQUk9C
RV9DUFVfRjdfT0ZGU0VULCAgIlByb2JlOjpTdGF0ZTo6Y3B1LmZwcnNbZjddJ3Mgb2Zmc2V0IG1h
dGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOworc3RhdGljX2Fzc2VydChQUk9CRV9PRkZT
RVRPRihjcHUuZnByc1tNSVBTUmVnaXN0ZXJzOjpmOF0pICA9PSBQUk9CRV9DUFVfRjhfT0ZGU0VU
LCAgIlByb2JlOjpTdGF0ZTo6Y3B1LmZwcnNbZjhdJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVBy
b2JlVHJhbXBvbGluZSIpOworc3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihjcHUuZnByc1tN
SVBTUmVnaXN0ZXJzOjpmOV0pICA9PSBQUk9CRV9DUFVfRjlfT0ZGU0VULCAgIlByb2JlOjpTdGF0
ZTo6Y3B1LmZwcnNbZjldJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIp
Oworc3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihjcHUuZnByc1tNSVBTUmVnaXN0ZXJzOjpm
MTBdKSA9PSBQUk9CRV9DUFVfRjEwX09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmZwcnNbZjEw
XSdzIG9mZnNldCBtYXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsKK3N0YXRpY19hc3Nl
cnQoUFJPQkVfT0ZGU0VUT0YoY3B1LmZwcnNbTUlQU1JlZ2lzdGVyczo6ZjExXSkgPT0gUFJPQkVf
Q1BVX0YxMV9PRkZTRVQsICJQcm9iZTo6U3RhdGU6OmNwdS5mcHJzW2YxMV0ncyBvZmZzZXQgbWF0
Y2hlcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lIik7CitzdGF0aWNfYXNzZXJ0KFBST0JFX09GRlNF
VE9GKGNwdS5mcHJzW01JUFNSZWdpc3RlcnM6OmYxMl0pID09IFBST0JFX0NQVV9GMTJfT0ZGU0VU
LCAiUHJvYmU6OlN0YXRlOjpjcHUuZnByc1tmMTJdJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVBy
b2JlVHJhbXBvbGluZSIpOworc3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihjcHUuZnByc1tN
SVBTUmVnaXN0ZXJzOjpmMTNdKSA9PSBQUk9CRV9DUFVfRjEzX09GRlNFVCwgIlByb2JlOjpTdGF0
ZTo6Y3B1LmZwcnNbZjEzXSdzIG9mZnNldCBtYXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUi
KTsKK3N0YXRpY19hc3NlcnQoUFJPQkVfT0ZGU0VUT0YoY3B1LmZwcnNbTUlQU1JlZ2lzdGVyczo6
ZjE0XSkgPT0gUFJPQkVfQ1BVX0YxNF9PRkZTRVQsICJQcm9iZTo6U3RhdGU6OmNwdS5mcHJzW2Yx
NF0ncyBvZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lIik7CitzdGF0aWNfYXNz
ZXJ0KFBST0JFX09GRlNFVE9GKGNwdS5mcHJzW01JUFNSZWdpc3RlcnM6OmYxNV0pID09IFBST0JF
X0NQVV9GMTVfT0ZGU0VULCAiUHJvYmU6OlN0YXRlOjpjcHUuZnByc1tmMTVdJ3Mgb2Zmc2V0IG1h
dGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOworc3RhdGljX2Fzc2VydChQUk9CRV9PRkZT
RVRPRihjcHUuZnByc1tNSVBTUmVnaXN0ZXJzOjpmMTZdKSA9PSBQUk9CRV9DUFVfRjE2X09GRlNF
VCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmZwcnNbZjE2XSdzIG9mZnNldCBtYXRjaGVzIGN0aU1hc21Q
cm9iZVRyYW1wb2xpbmUiKTsKK3N0YXRpY19hc3NlcnQoUFJPQkVfT0ZGU0VUT0YoY3B1LmZwcnNb
TUlQU1JlZ2lzdGVyczo6ZjE3XSkgPT0gUFJPQkVfQ1BVX0YxN19PRkZTRVQsICJQcm9iZTo6U3Rh
dGU6OmNwdS5mcHJzW2YxN10ncyBvZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5l
Iik7CitzdGF0aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9GKGNwdS5mcHJzW01JUFNSZWdpc3RlcnM6
OmYxOF0pID09IFBST0JFX0NQVV9GMThfT0ZGU0VULCAiUHJvYmU6OlN0YXRlOjpjcHUuZnByc1tm
MThdJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOworc3RhdGljX2Fz
c2VydChQUk9CRV9PRkZTRVRPRihjcHUuZnByc1tNSVBTUmVnaXN0ZXJzOjpmMTldKSA9PSBQUk9C
RV9DUFVfRjE5X09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmZwcnNbZjE5XSdzIG9mZnNldCBt
YXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsKK3N0YXRpY19hc3NlcnQoUFJPQkVfT0ZG
U0VUT0YoY3B1LmZwcnNbTUlQU1JlZ2lzdGVyczo6ZjIwXSkgPT0gUFJPQkVfQ1BVX0YyMF9PRkZT
RVQsICJQcm9iZTo6U3RhdGU6OmNwdS5mcHJzW2YyMF0ncyBvZmZzZXQgbWF0Y2hlcyBjdGlNYXNt
UHJvYmVUcmFtcG9saW5lIik7CitzdGF0aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9GKGNwdS5mcHJz
W01JUFNSZWdpc3RlcnM6OmYyMV0pID09IFBST0JFX0NQVV9GMjFfT0ZGU0VULCAiUHJvYmU6OlN0
YXRlOjpjcHUuZnByc1tmMjFdJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGlu
ZSIpOworc3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihjcHUuZnByc1tNSVBTUmVnaXN0ZXJz
OjpmMjJdKSA9PSBQUk9CRV9DUFVfRjIyX09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmZwcnNb
ZjIyXSdzIG9mZnNldCBtYXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsKK3N0YXRpY19h
c3NlcnQoUFJPQkVfT0ZGU0VUT0YoY3B1LmZwcnNbTUlQU1JlZ2lzdGVyczo6ZjIzXSkgPT0gUFJP
QkVfQ1BVX0YyM19PRkZTRVQsICJQcm9iZTo6U3RhdGU6OmNwdS5mcHJzW2YyM10ncyBvZmZzZXQg
bWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lIik7CitzdGF0aWNfYXNzZXJ0KFBST0JFX09G
RlNFVE9GKGNwdS5mcHJzW01JUFNSZWdpc3RlcnM6OmYyNF0pID09IFBST0JFX0NQVV9GMjRfT0ZG
U0VULCAiUHJvYmU6OlN0YXRlOjpjcHUuZnByc1tmMjRdJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFz
bVByb2JlVHJhbXBvbGluZSIpOworc3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihjcHUuZnBy
c1tNSVBTUmVnaXN0ZXJzOjpmMjVdKSA9PSBQUk9CRV9DUFVfRjI1X09GRlNFVCwgIlByb2JlOjpT
dGF0ZTo6Y3B1LmZwcnNbZjI1XSdzIG9mZnNldCBtYXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xp
bmUiKTsKK3N0YXRpY19hc3NlcnQoUFJPQkVfT0ZGU0VUT0YoY3B1LmZwcnNbTUlQU1JlZ2lzdGVy
czo6ZjI2XSkgPT0gUFJPQkVfQ1BVX0YyNl9PRkZTRVQsICJQcm9iZTo6U3RhdGU6OmNwdS5mcHJz
W2YyNl0ncyBvZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lIik7CitzdGF0aWNf
YXNzZXJ0KFBST0JFX09GRlNFVE9GKGNwdS5mcHJzW01JUFNSZWdpc3RlcnM6OmYyN10pID09IFBS
T0JFX0NQVV9GMjdfT0ZGU0VULCAiUHJvYmU6OlN0YXRlOjpjcHUuZnByc1tmMjddJ3Mgb2Zmc2V0
IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOworc3RhdGljX2Fzc2VydChQUk9CRV9P
RkZTRVRPRihjcHUuZnByc1tNSVBTUmVnaXN0ZXJzOjpmMjhdKSA9PSBQUk9CRV9DUFVfRjI4X09G
RlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmZwcnNbZjI4XSdzIG9mZnNldCBtYXRjaGVzIGN0aU1h
c21Qcm9iZVRyYW1wb2xpbmUiKTsKK3N0YXRpY19hc3NlcnQoUFJPQkVfT0ZGU0VUT0YoY3B1LmZw
cnNbTUlQU1JlZ2lzdGVyczo6ZjI5XSkgPT0gUFJPQkVfQ1BVX0YyOV9PRkZTRVQsICJQcm9iZTo6
U3RhdGU6OmNwdS5mcHJzW2YyOV0ncyBvZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFtcG9s
aW5lIik7CitzdGF0aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9GKGNwdS5mcHJzW01JUFNSZWdpc3Rl
cnM6OmYzMF0pID09IFBST0JFX0NQVV9GMzBfT0ZGU0VULCAiUHJvYmU6OlN0YXRlOjpjcHUuZnBy
c1tmMzBdJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOworc3RhdGlj
X2Fzc2VydChQUk9CRV9PRkZTRVRPRihjcHUuZnByc1tNSVBTUmVnaXN0ZXJzOjpmMzFdKSA9PSBQ
Uk9CRV9DUFVfRjMxX09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmZwcnNbZjMxXSdzIG9mZnNl
dCBtYXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsKKworc3RhdGljX2Fzc2VydChzaXpl
b2YoUHJvYmU6OlN0YXRlKSA9PSBQUk9CRV9TSVpFLCAiUHJvYmU6OlN0YXRlJ3Mgc2l6ZSBtYXRj
aGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsKKyN1bmRlZiBQUk9CRV9PRkZTRVRPRgorCitz
dHJ1Y3QgSW5jb21pbmdSZWNvcmQgeworICAgIHVpbnRwdHJfdCBhMDsKKyAgICB1aW50cHRyX3Qg
YTE7CisgICAgdWludHB0cl90IGEyOworICAgIHVpbnRwdHJfdCBzMDsKKyAgICB1aW50cHRyX3Qg
czE7CisgICAgdWludHB0cl90IHJhOworfTsKKworI2RlZmluZSBJTl9BMF9PRkZTRVQgKDAgKiBQ
VFJfU0laRSkKKyNkZWZpbmUgSU5fQTFfT0ZGU0VUICgxICogUFRSX1NJWkUpCisjZGVmaW5lIElO
X0EyX09GRlNFVCAoMiAqIFBUUl9TSVpFKQorI2RlZmluZSBJTl9TMF9PRkZTRVQgKDMgKiBQVFJf
U0laRSkKKyNkZWZpbmUgSU5fUzFfT0ZGU0VUICg0ICogUFRSX1NJWkUpCisjZGVmaW5lIElOX1JB
X09GRlNFVCAoNSAqIFBUUl9TSVpFKQorI2RlZmluZSBJTl9TSVpFICAgICAgKDYgKiBQVFJfU0la
RSkKKworc3RhdGljX2Fzc2VydChJTl9BMF9PRkZTRVQgPT0gb2Zmc2V0b2YoSW5jb21pbmdSZWNv
cmQsIGEwKSwgIklOX0EwX09GRlNFVCBpcyBpbmNvcnJlY3QiKTsKK3N0YXRpY19hc3NlcnQoSU5f
QTFfT0ZGU0VUID09IG9mZnNldG9mKEluY29taW5nUmVjb3JkLCBhMSksICJJTl9BMV9PRkZTRVQg
aXMgaW5jb3JyZWN0Iik7CitzdGF0aWNfYXNzZXJ0KElOX0EyX09GRlNFVCA9PSBvZmZzZXRvZihJ
bmNvbWluZ1JlY29yZCwgYTIpLCAiSU5fQTJfT0ZGU0VUIGlzIGluY29ycmVjdCIpOworc3RhdGlj
X2Fzc2VydChJTl9TMF9PRkZTRVQgPT0gb2Zmc2V0b2YoSW5jb21pbmdSZWNvcmQsIHMwKSwgIklO
X1MwX09GRlNFVCBpcyBpbmNvcnJlY3QiKTsKK3N0YXRpY19hc3NlcnQoSU5fUzFfT0ZGU0VUID09
IG9mZnNldG9mKEluY29taW5nUmVjb3JkLCBzMSksICJJTl9TMV9PRkZTRVQgaXMgaW5jb3JyZWN0
Iik7CitzdGF0aWNfYXNzZXJ0KElOX1JBX09GRlNFVCA9PSBvZmZzZXRvZihJbmNvbWluZ1JlY29y
ZCwgcmEpLCAiSU5fUkFfT0ZGU0VUIGlzIGluY29ycmVjdCIpOworc3RhdGljX2Fzc2VydChJTl9T
SVpFID09IHNpemVvZihJbmNvbWluZ1JlY29yZCksICJJTl9TSVpFIGlzIGluY29ycmVjdCIpOwor
CitzdHJ1Y3QgT3V0Z29pbmdSZWNvcmQgeworICAgIHVpbnRwdHJfdCBmcDsKKyAgICB1aW50cHRy
X3QgcmE7Cit9OworCisjZGVmaW5lIE9VVF9GUF9PRkZTRVQgKDAgKiBQVFJfU0laRSkKKyNkZWZp
bmUgT1VUX1JBX09GRlNFVCAoMSAqIFBUUl9TSVpFKQorI2RlZmluZSBPVVRfU0laRSAgICAgICgy
ICogUFRSX1NJWkUpCisKK3N0YXRpY19hc3NlcnQoT1VUX0ZQX09GRlNFVCA9PSBvZmZzZXRvZihP
dXRnb2luZ1JlY29yZCwgZnApLCAiT1VUX0ZQX09GRlNFVCBpcyBpbmNvcnJlY3QiKTsKK3N0YXRp
Y19hc3NlcnQoT1VUX1JBX09GRlNFVCA9PSBvZmZzZXRvZihPdXRnb2luZ1JlY29yZCwgcmEpLCAi
T1VUX1JBX09GRlNFVCBpcyBpbmNvcnJlY3QiKTsKK3N0YXRpY19hc3NlcnQoT1VUX1NJWkUgPT0g
c2l6ZW9mKE91dGdvaW5nUmVjb3JkKSwgIk9VVF9TSVpFIGlzIGluY29ycmVjdCIpOworCitzdHJ1
Y3QgUkFSZXN0b3JhdGlvblJlY29yZCB7CisgICAgdWludHB0cl90IHJhOworICAgIHVpbnRwdHJf
dCBwYWRkaW5nOworfTsKKworI2RlZmluZSBSQV9SRVNUT1JBVElPTl9SQV9PRkZTRVQgKDAgKiBQ
VFJfU0laRSkKKyNkZWZpbmUgUkFfUkVTVE9SQVRJT05fU0laRSAgICAgICgyICogUFRSX1NJWkUp
CisKK3N0YXRpY19hc3NlcnQoUkFfUkVTVE9SQVRJT05fUkFfT0ZGU0VUID09IG9mZnNldG9mKFJB
UmVzdG9yYXRpb25SZWNvcmQsIHJhKSwgIlJBX1JFU1RPUkFUSU9OX1JBX09GRlNFVCBpcyBpbmNv
cnJlY3QiKTsKK3N0YXRpY19hc3NlcnQoUkFfUkVTVE9SQVRJT05fU0laRSA9PSBzaXplb2YoUkFS
ZXN0b3JhdGlvblJlY29yZCksICJSQV9SRVNUT1JBVElPTl9TSVpFIGlzIGluY29ycmVjdCIpOwor
c3RhdGljX2Fzc2VydCghKHNpemVvZihSQVJlc3RvcmF0aW9uUmVjb3JkKSAmIDB4NyksICJMUlJl
c3RvcmF0aW9uUmVjb3JkIG11c3QgYmUgOC1ieXRlIGFsaWduZWQiKTsKKworYXNtICgKKyAgICAi
LnRleHQiICJcbiIKKyAgICAiLmdsb2JsICIgU1lNQk9MX1NUUklORyhjdGlNYXNtUHJvYmVUcmFt
cG9saW5lKSAiXG4iCisgICAgSElERV9TWU1CT0woY3RpTWFzbVByb2JlVHJhbXBvbGluZSkgIlxu
IgorICAgIFNZTUJPTF9TVFJJTkcoY3RpTWFzbVByb2JlVHJhbXBvbGluZSkgIjoiICJcbiIKKyAg
ICAiLnNldCBwdXNoIiAiXG4iCisgICAgIi5zZXQgbm9yZW9yZGVyIiAiXG4iCisgICAgIi5zZXQg
bm9hdCIgIlxuIgorCisgICAgLy8gTWFjcm9Bc3NlbWJsZXJNSVBTOjpwcm9iZSgpIGhhcyBhbHJl
YWR5IGdlbmVyYXRlZCBjb2RlIHRvIHN0b3JlIHNvbWUgdmFsdWVzIGluIGFuCisgICAgLy8gSW5j
b21pbmdQcm9iZVJlY29yZC4gc3AgcG9pbnRzIHRvIHRoZSBJbmNvbWluZ1Byb2JlUmVjb3JkLgor
ICAgIC8vCisgICAgLy8gSW5jb21pbmcgcmVnaXN0ZXIgdmFsdWVzOgorICAgIC8vICAgICBhMDog
cHJvYmUgZnVuY3Rpb24KKyAgICAvLyAgICAgYTE6IHByb2JlIGFyZworICAgIC8vICAgICBhMjog
UHJvYmU6OmV4ZWN1dGVQcm9iZQorICAgIC8vICAgICBzMDogc2NyYXRjaCwgd2FzIGN0aU1hc21Q
cm9iZVRyYW1wb2xpbmUKKyAgICAvLyAgICAgczE6IHNjcmF0Y2gKKyAgICAvLyAgICAgcmE6IHJl
dHVybiBhZGRyZXNzCisKKyAgICAibW92ZSAgICAgICRzMCwgJHNwIiAiXG4iCisgICAgImFkZGl1
ICAgICAkc3AsICRzcCwgLSIgU1RSSU5HSVpFX1ZBTFVFX09GKChQUk9CRV9TSVpFX1BMVVNfRVhU
UkFTICsgT1VUX1NJWkUpKSAiXG4iIC8vIFNldCB0aGUgc3AgdG8gcHJvdGVjdCB0aGUgUHJvYmU6
OlN0YXRlIGZyb20gaW50ZXJydXB0cyBiZWZvcmUgd2UgaW5pdGlhbGl6ZSBpdC4KKyAgICAibW92
ZSAgICAgICRzMSwgJHNwIiAiXG4iCisKKyAgICAic3cgICAgICAgICRhMCwgIiBTVFJJTkdJWkVf
VkFMVUVfT0YoUFJPQkVfUFJPQkVfRlVOQ1RJT05fT0ZGU0VUKSAiKCRzcCkiICJcbiIgLy8gU3Rv
cmUgdGhlIHByb2JlIGhhbmRsZXIgZnVuY3Rpb24gKHByZWxvYWRlZCBpbnRvIGEwKQorICAgICJz
dyAgICAgICAgJGExLCAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9BUkdfT0ZGU0VUKSAiKCRz
cCkiICJcbiIgICAgICAgICAgICAvLyBTdG9yZSB0aGUgcHJvYmUgaGFuZGxlciBhcmcgKHByZWxv
YWRlZCBpbnRvIGExKQorCisgICAgInN3ICAgICAgICAkYXQsICIgU1RSSU5HSVpFX1ZBTFVFX09G
KFBST0JFX0NQVV9BVF9PRkZTRVQpICIoJHNwKSIgIlxuIgorICAgICJzdyAgICAgICAgJHYwLCAi
IFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfVjBfT0ZGU0VUKSAiKCRzcCkiICJcbiIKKyAg
ICAic3cgICAgICAgICR2MSwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1YxX09GRlNF
VCkgIigkc3ApIiAiXG4iCisKKyAgICAibHcgICAgICAgICR2MCwgIiBTVFJJTkdJWkVfVkFMVUVf
T0YoSU5fQTBfT0ZGU0VUKSAiKCRzMCkiICJcbiIgLy8gTG9hZCBzYXZlZCBhMAorICAgICJsdyAg
ICAgICAgJHYxLCAiIFNUUklOR0laRV9WQUxVRV9PRihJTl9BMV9PRkZTRVQpICIoJHMwKSIgIlxu
IiAvLyBMb2FkIHNhdmVkIGExCisgICAgImx3ICAgICAgICAkYXQsICIgU1RSSU5HSVpFX1ZBTFVF
X09GKElOX0EyX09GRlNFVCkgIigkczApIiAiXG4iIC8vIExvYWQgc2F2ZWQgYTIKKyAgICAic3cg
ICAgICAgICR2MCwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX0EwX09GRlNFVCkgIigk
c3ApIiAiXG4iIC8vIFN0b3JlIHNhdmVkIGEwCisgICAgInN3ICAgICAgICAkdjEsICIgU1RSSU5H
SVpFX1ZBTFVFX09GKFBST0JFX0NQVV9BMV9PRkZTRVQpICIoJHNwKSIgIlxuIiAvLyBTdG9yZSBz
YXZlZCBhMQorICAgICJzdyAgICAgICAgJGF0LCAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9D
UFVfQTJfT0ZGU0VUKSAiKCRzcCkiICJcbiIgLy8gU3RvcmUgc2F2ZWQgYTIKKworICAgICJzdyAg
ICAgICAgJGEzLCAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfQTNfT0ZGU0VUKSAiKCRz
cCkiICJcbiIKKyAgICAic3cgICAgICAgICR0MCwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVf
Q1BVX1QwX09GRlNFVCkgIigkc3ApIiAiXG4iCisgICAgInN3ICAgICAgICAkdDEsICIgU1RSSU5H
SVpFX1ZBTFVFX09GKFBST0JFX0NQVV9UMV9PRkZTRVQpICIoJHNwKSIgIlxuIgorICAgICJzdyAg
ICAgICAgJHQyLCAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfVDJfT0ZGU0VUKSAiKCRz
cCkiICJcbiIKKyAgICAic3cgICAgICAgICR0MywgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVf
Q1BVX1QzX09GRlNFVCkgIigkc3ApIiAiXG4iCisgICAgInN3ICAgICAgICAkdDQsICIgU1RSSU5H
SVpFX1ZBTFVFX09GKFBST0JFX0NQVV9UNF9PRkZTRVQpICIoJHNwKSIgIlxuIgorICAgICJzdyAg
ICAgICAgJHQ1LCAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfVDVfT0ZGU0VUKSAiKCRz
cCkiICJcbiIKKyAgICAic3cgICAgICAgICR0NiwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVf
Q1BVX1Q2X09GRlNFVCkgIigkc3ApIiAiXG4iCisgICAgInN3ICAgICAgICAkdDcsICIgU1RSSU5H
SVpFX1ZBTFVFX09GKFBST0JFX0NQVV9UN19PRkZTRVQpICIoJHNwKSIgIlxuIgorCisgICAgImx3
ICAgICAgICAkdjAsICIgU1RSSU5HSVpFX1ZBTFVFX09GKElOX1MwX09GRlNFVCkgIigkczApIiAi
XG4iIC8vIExvYWQgc2F2ZWQgczAKKyAgICAibHcgICAgICAgICR2MSwgIiBTVFJJTkdJWkVfVkFM
VUVfT0YoSU5fUzFfT0ZGU0VUKSAiKCRzMCkiICJcbiIgLy8gTG9hZCBzYXZlZCBzMQorICAgICJz
dyAgICAgICAgJHYwLCAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfUzBfT0ZGU0VUKSAi
KCRzcCkiICJcbiIgLy8gU3RvcmUgc2F2ZWQgczAKKyAgICAic3cgICAgICAgICR2MSwgIiBTVFJJ
TkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1MxX09GRlNFVCkgIigkc3ApIiAiXG4iIC8vIFN0b3Jl
IHNhdmVkIHMxCisKKyAgICAic3cgICAgICAgICRzMiwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJP
QkVfQ1BVX1MyX09GRlNFVCkgIigkc3ApIiAiXG4iCisgICAgInN3ICAgICAgICAkczMsICIgU1RS
SU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9TM19PRkZTRVQpICIoJHNwKSIgIlxuIgorICAgICJz
dyAgICAgICAgJHM0LCAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfUzRfT0ZGU0VUKSAi
KCRzcCkiICJcbiIKKyAgICAic3cgICAgICAgICRzNSwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJP
QkVfQ1BVX1M1X09GRlNFVCkgIigkc3ApIiAiXG4iCisgICAgInN3ICAgICAgICAkczYsICIgU1RS
SU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9TNl9PRkZTRVQpICIoJHNwKSIgIlxuIgorICAgICJz
dyAgICAgICAgJHM3LCAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfUzdfT0ZGU0VUKSAi
KCRzcCkiICJcbiIKKyAgICAic3cgICAgICAgICR0OCwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJP
QkVfQ1BVX1Q4X09GRlNFVCkgIigkc3ApIiAiXG4iCisgICAgInN3ICAgICAgICAkdDksICIgU1RS
SU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9UOV9PRkZTRVQpICIoJHNwKSIgIlxuIgorICAgICJz
dyAgICAgICAgJGswLCAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfSzBfT0ZGU0VUKSAi
KCRzcCkiICJcbiIKKyAgICAic3cgICAgICAgICRrMSwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJP
QkVfQ1BVX0sxX09GRlNFVCkgIigkc3ApIiAiXG4iCisgICAgInN3ICAgICAgICAkZ3AsICIgU1RS
SU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9HUF9PRkZTRVQpICIoJHNwKSIgIlxuIgorICAgICJz
dyAgICAgICAgJGZwLCAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfRlBfT0ZGU0VUKSAi
KCRzcCkiICJcbiIKKworICAgICJsdyAgICAgICAgJHYwLCAiIFNUUklOR0laRV9WQUxVRV9PRihJ
Tl9SQV9PRkZTRVQpICIoJHMwKSIgIlxuIiAvLyBMb2FkIHNhdmVkIHJhCisgICAgImFkZGl1ICAg
ICAkczAsICRzMCwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoSU5fU0laRSkgIlxuIiAvLyBDb21wdXRl
IHRoZSBzcCBiZWZvcmUgdGhlIHByb2JlCisgICAgInN3ICAgICAgICAkdjAsICIgU1RSSU5HSVpF
X1ZBTFVFX09GKFBST0JFX0NQVV9SQV9PRkZTRVQpICIoJHNwKSIgIlxuIiAvLyBTdG9yZSBzYXZl
ZCByYQorICAgICJzdyAgICAgICAgJHMwLCAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVf
U1BfT0ZGU0VUKSAiKCRzcCkiICJcbiIgLy8gU3RvcmUgb3JpZ2luYWwgc3AgY29tcHV0ZWQgaW50
byBzMAorCisgICAgInN3ICAgICAgICAkcmEsICIgU1RSSU5HSVpFX1ZBTFVFX09GKFNBVkVEX1BS
T0JFX1JFVFVSTl9QQ19PRkZTRVQpICIoJHNwKSIgIlxuIiAvLyBTYXZlIGEgZHVwbGljYXRlIGNv
cHkgb2YgcmV0dXJuIHBjIChpbiByYSkKKyAgICAiYWRkaXUgICAgICRyYSwgJHJhLCAyKjQiICJc
biIgLy8gVGhlIFBDIGFmdGVyIHRoZSBwcm9iZSBpcyBhdCAyIGluc3RydWN0aW9ucyBwYXN0IHRo
ZSByZXR1cm4gcG9pbnQuCisgICAgInN3ICAgICAgICAkcmEsICIgU1RSSU5HSVpFX1ZBTFVFX09G
KFBST0JFX0NQVV9QQ19PRkZTRVQpICIoJHNwKSIgIlxuIgorCisgICAgInNkYzEgICAgICAkZjAs
ICAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfRjBfT0ZGU0VUKSAiKCRzcCkiICJcbiIK
KyAgICAic2RjMSAgICAgICRmMiwgICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9GMl9P
RkZTRVQpICIoJHNwKSIgIlxuIgorICAgICJzZGMxICAgICAgJGY0LCAgIiBTVFJJTkdJWkVfVkFM
VUVfT0YoUFJPQkVfQ1BVX0Y0X09GRlNFVCkgIigkc3ApIiAiXG4iCisgICAgInNkYzEgICAgICAk
ZjYsICAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfRjZfT0ZGU0VUKSAiKCRzcCkiICJc
biIKKyAgICAic2RjMSAgICAgICRmOCwgICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9G
OF9PRkZTRVQpICIoJHNwKSIgIlxuIgorICAgICJzZGMxICAgICAgJGYxMCwgIiBTVFJJTkdJWkVf
VkFMVUVfT0YoUFJPQkVfQ1BVX0YxMF9PRkZTRVQpICIoJHNwKSIgIlxuIgorICAgICJzZGMxICAg
ICAgJGYxMiwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX0YxMl9PRkZTRVQpICIoJHNw
KSIgIlxuIgorICAgICJzZGMxICAgICAgJGYxNCwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVf
Q1BVX0YxNF9PRkZTRVQpICIoJHNwKSIgIlxuIgorICAgICJzZGMxICAgICAgJGYxNiwgIiBTVFJJ
TkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX0YxNl9PRkZTRVQpICIoJHNwKSIgIlxuIgorICAgICJz
ZGMxICAgICAgJGYxOCwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX0YxOF9PRkZTRVQp
ICIoJHNwKSIgIlxuIgorICAgICJzZGMxICAgICAgJGYyMCwgIiBTVFJJTkdJWkVfVkFMVUVfT0Yo
UFJPQkVfQ1BVX0YyMF9PRkZTRVQpICIoJHNwKSIgIlxuIgorICAgICJzZGMxICAgICAgJGYyMiwg
IiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX0YyMl9PRkZTRVQpICIoJHNwKSIgIlxuIgor
ICAgICJzZGMxICAgICAgJGYyNCwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX0YyNF9P
RkZTRVQpICIoJHNwKSIgIlxuIgorICAgICJzZGMxICAgICAgJGYyNiwgIiBTVFJJTkdJWkVfVkFM
VUVfT0YoUFJPQkVfQ1BVX0YyNl9PRkZTRVQpICIoJHNwKSIgIlxuIgorICAgICJzZGMxICAgICAg
JGYyOCwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX0YyOF9PRkZTRVQpICIoJHNwKSIg
IlxuIgorICAgICJzZGMxICAgICAgJGYzMCwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BV
X0YzMF9PRkZTRVQpICIoJHNwKSIgIlxuIgorCisgICAgIm1vdmUgICAgICAkYTAsICRzcCIgIlxu
IiAvLyBTZXQgdGhlIFByb2JlOjpTdGF0ZSogYXJnLgorICAgICJtb3ZlICAgICAgJHQ5LCAkYTIi
ICJcbiIgLy8gUHJvYmU6OmV4ZWN1dGVQcm9iZSgpCisgICAgImphbHIgICAgICAkdDkiICJcbiIg
Ly8gQ2FsbCB0aGUgcHJvYmUgaGFuZGxlci4KKyAgICAibm9wIiAiXG4iCisKKyAgICAvLyBNYWtl
IHN1cmUgdGhlIFByb2JlOjpTdGF0ZSBpcyBlbnRpcmVseSBiZWxvdyB0aGUgcmVzdWx0IHN0YWNr
IHBvaW50ZXIgc28KKyAgICAvLyB0aGF0IHJlZ2lzdGVyIHZhbHVlcyBhcmUgc3RpbGwgcHJlc2Vy
dmVkIHdoZW4gd2UgY2FsbCB0aGUgaW5pdGlhbGl6ZVN0YWNrCisgICAgLy8gZnVuY3Rpb24uCisg
ICAgImx3ICAgICAgICAkdDAsICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9TUF9PRkZT
RVQpICIoJHMxKSIgIlxuIiAvLyBSZXN1bHQgc3AuCisgICAgImFkZGl1ICAgICAkdDEsICRzMSwg
IiBTVFJJTkdJWkVfVkFMVUVfT0YoKFBST0JFX1NJWkVfUExVU19FWFRSQVMgKyBPVVRfU0laRSkp
ICJcbiIgLy8gRW5kIG9mIFByb2JlOjpTdGF0ZSArIGJ1ZmZlci4KKyAgICAic2x0dSAgICAgICR0
MiwgJHQwLCAkdDEiICJcbiIKKyAgICAiYmVxeiAgICAgICR0MiwgIiBMT0NBTF9MQUJFTF9TVFJJ
TkcoY3RpTWFzbVByb2JlVHJhbXBvbGluZVByb2JlU3RhdGVJc1NhZmUpICJcbiIKKyAgICAibm9w
IiAiXG4iCisKKyAgICAvLyBBbGxvY2F0ZSBhIHNhZmUgcGxhY2Ugb24gdGhlIHN0YWNrIGJlbG93
IHRoZSByZXN1bHQgc3RhY2sgcG9pbnRlciB0byBzdGFzaCB0aGUgUHJvYmU6OlN0YXRlLgorICAg
ICJhZGRpdSAgICAgJHNwLCAkdDAsIC0iIFNUUklOR0laRV9WQUxVRV9PRigoUFJPQkVfU0laRV9Q
TFVTX0VYVFJBUyArIE9VVF9TSVpFKSkgIlxuIiAvLyBTZXQgdGhlIG5ldyBzcCB0byBwcm90ZWN0
IHRoYXQgbWVtb3J5IGZyb20gaW50ZXJydXB0cyBiZWZvcmUgd2UgY29weSB0aGUgUHJvYmU6OlN0
YXRlLgorCisgICAgLy8gQ29weSB0aGUgUHJvYmU6OlN0YXRlIHRvIHRoZSBzYWZlIHBsYWNlLgor
ICAgIC8vIE5vdGU6IHdlIGhhdmUgdG8gY29weSBmcm9tIGxvdyBhZGRyZXNzIHRvIGhpZ2hlciBh
ZGRyZXNzIGJlY2F1c2Ugd2UncmUgbW92aW5nIHRoZQorICAgIC8vIFByb2JlOjpTdGF0ZSB0byBh
IGxvd2VyIGFkZHJlc3MuCisgICAgIm1vdmUgICAgICAkdDAsICRzMSIgIlxuIgorICAgICJtb3Zl
ICAgICAgJHQxLCAkc3AiICJcbiIKKyAgICAiYWRkaXUgICAgICR0MiwgJHMxLCAiIFNUUklOR0la
RV9WQUxVRV9PRihQUk9CRV9TSVpFX1BMVVNfRVhUUkFTKSAiXG4iCisKKyAgICBMT0NBTF9MQUJF
TF9TVFJJTkcoY3RpTWFzbVByb2JlVHJhbXBvbGluZUNvcHlMb29wKSAiOiIgIlxuIgorICAgICJs
dyAgICAgICAgJHQzLCAwKCR0MCkiICJcbiIKKyAgICAibHcgICAgICAgICR0NCwgNCgkdDApIiAi
XG4iCisgICAgInN3ICAgICAgICAkdDMsIDAoJHQxKSIgIlxuIgorICAgICJzdyAgICAgICAgJHQ0
LCA0KCR0MSkiICJcbiIKKyAgICAiYWRkaXUgICAgICR0MCwgJHQwLCA4IiAiXG4iCisgICAgImFk
ZGl1ICAgICAkdDEsICR0MSwgOCIgIlxuIgorICAgICJibmUgICAgICAgJHQwLCAkdDIsICIgTE9D
QUxfTEFCRUxfU1RSSU5HKGN0aU1hc21Qcm9iZVRyYW1wb2xpbmVDb3B5TG9vcCkgIlxuIgorICAg
ICJub3AiICJcbiIKKworICAgICJtb3ZlICAgICAgJHMxLCAkc3AiICJcbiIKKworICAgIC8vIENh
bGwgaW5pdGlhbGl6ZVN0YWNrRnVuY3Rpb24gaWYgcHJlc2VudC4KKyAgICBMT0NBTF9MQUJFTF9T
VFJJTkcoY3RpTWFzbVByb2JlVHJhbXBvbGluZVByb2JlU3RhdGVJc1NhZmUpICI6IiAiXG4iCisg
ICAgImx3ICAgICAgICAkdDksICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0lOSVRfU1RBQ0tf
RlVOQ1RJT05fT0ZGU0VUKSAiKCRzMSkiICJcbiIKKyAgICAiYmVxeiAgICAgICR0OSwgIiBMT0NB
TF9MQUJFTF9TVFJJTkcoY3RpTWFzbVByb2JlVHJhbXBvbGluZVJlc3RvcmVSZWdpc3RlcnMpICJc
biIKKyAgICAibm9wIiAiXG4iCisKKyAgICAibW92ZSAgICAgICRhMCwgJHMxIiAiXG4iIC8vIFNl
dCB0aGUgUHJvYmU6OlN0YXRlKiBhcmcuCisgICAgImphbHIgICAgICAkdDkiICJcbiIgLy8gQ2Fs
bCB0aGUgaW5pdGlhbGl6ZVN0YWNrRnVuY3Rpb24gKGxvYWRlZCBpbnRvIHQ5IGFib3ZlKS4KKyAg
ICAibm9wIiAiXG4iCisKKyAgICBMT0NBTF9MQUJFTF9TVFJJTkcoY3RpTWFzbVByb2JlVHJhbXBv
bGluZVJlc3RvcmVSZWdpc3RlcnMpICI6IiAiXG4iCisKKyAgICAibW92ZSAgICAgICRzcCwgJHMx
IiAiXG4iCisKKyAgICAvLyBUbyBlbmFibGUgcHJvYmVzIHRvIG1vZGlmeSByZWdpc3RlciBzdGF0
ZSwgd2UgY29weSBhbGwgcmVnaXN0ZXJzCisgICAgLy8gb3V0IG9mIHRoZSBQcm9iZTo6U3RhdGUg
YmVmb3JlIHJldHVybmluZywgZXhjZXB0IGZvciB6ZXJvLCBrMCBhbmQgazEuCisKKyAgICAibGRj
MSAgICAgICRmMCwgICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9GMF9PRkZTRVQpICIo
JHNwKSIgIlxuIgorICAgICJsZGMxICAgICAgJGYyLCAgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJP
QkVfQ1BVX0YyX09GRlNFVCkgIigkc3ApIiAiXG4iCisgICAgImxkYzEgICAgICAkZjQsICAiIFNU
UklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfRjRfT0ZGU0VUKSAiKCRzcCkiICJcbiIKKyAgICAi
bGRjMSAgICAgICRmNiwgICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9GNl9PRkZTRVQp
ICIoJHNwKSIgIlxuIgorICAgICJsZGMxICAgICAgJGY4LCAgIiBTVFJJTkdJWkVfVkFMVUVfT0Yo
UFJPQkVfQ1BVX0Y4X09GRlNFVCkgIigkc3ApIiAiXG4iCisgICAgImxkYzEgICAgICAkZjEwLCAi
IFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfRjEwX09GRlNFVCkgIigkc3ApIiAiXG4iCisg
ICAgImxkYzEgICAgICAkZjEyLCAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfRjEyX09G
RlNFVCkgIigkc3ApIiAiXG4iCisgICAgImxkYzEgICAgICAkZjE0LCAiIFNUUklOR0laRV9WQUxV
RV9PRihQUk9CRV9DUFVfRjE0X09GRlNFVCkgIigkc3ApIiAiXG4iCisgICAgImxkYzEgICAgICAk
ZjE2LCAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfRjE2X09GRlNFVCkgIigkc3ApIiAi
XG4iCisgICAgImxkYzEgICAgICAkZjE4LCAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVf
RjE4X09GRlNFVCkgIigkc3ApIiAiXG4iCisgICAgImxkYzEgICAgICAkZjIwLCAiIFNUUklOR0la
RV9WQUxVRV9PRihQUk9CRV9DUFVfRjIwX09GRlNFVCkgIigkc3ApIiAiXG4iCisgICAgImxkYzEg
ICAgICAkZjIyLCAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfRjIyX09GRlNFVCkgIigk
c3ApIiAiXG4iCisgICAgImxkYzEgICAgICAkZjI0LCAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9C
RV9DUFVfRjI0X09GRlNFVCkgIigkc3ApIiAiXG4iCisgICAgImxkYzEgICAgICAkZjI2LCAiIFNU
UklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfRjI2X09GRlNFVCkgIigkc3ApIiAiXG4iCisgICAg
ImxkYzEgICAgICAkZjI4LCAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfRjI4X09GRlNF
VCkgIigkc3ApIiAiXG4iCisgICAgImxkYzEgICAgICAkZjMwLCAiIFNUUklOR0laRV9WQUxVRV9P
RihQUk9CRV9DUFVfRjMwX09GRlNFVCkgIigkc3ApIiAiXG4iCisKKyAgICAibHcgICAgICAgICRh
dCwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX0FUX09GRlNFVCkgIigkc3ApIiAiXG4i
CisgICAgImx3ICAgICAgICAkdjAsICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9WMF9P
RkZTRVQpICIoJHNwKSIgIlxuIgorICAgICJsdyAgICAgICAgJHYxLCAiIFNUUklOR0laRV9WQUxV
RV9PRihQUk9CRV9DUFVfVjFfT0ZGU0VUKSAiKCRzcCkiICJcbiIKKyAgICAibHcgICAgICAgICRh
MCwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX0EwX09GRlNFVCkgIigkc3ApIiAiXG4i
CisgICAgImx3ICAgICAgICAkYTEsICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9BMV9P
RkZTRVQpICIoJHNwKSIgIlxuIgorICAgICJsdyAgICAgICAgJGEyLCAiIFNUUklOR0laRV9WQUxV
RV9PRihQUk9CRV9DUFVfQTJfT0ZGU0VUKSAiKCRzcCkiICJcbiIKKyAgICAibHcgICAgICAgICRh
MywgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX0EzX09GRlNFVCkgIigkc3ApIiAiXG4i
CisgICAgImx3ICAgICAgICAkdDIsICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9UMl9P
RkZTRVQpICIoJHNwKSIgIlxuIgorICAgICJsdyAgICAgICAgJHQzLCAiIFNUUklOR0laRV9WQUxV
RV9PRihQUk9CRV9DUFVfVDNfT0ZGU0VUKSAiKCRzcCkiICJcbiIKKyAgICAibHcgICAgICAgICR0
NCwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1Q0X09GRlNFVCkgIigkc3ApIiAiXG4i
CisgICAgImx3ICAgICAgICAkdDUsICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9UNV9P
RkZTRVQpICIoJHNwKSIgIlxuIgorICAgICJsdyAgICAgICAgJHQ2LCAiIFNUUklOR0laRV9WQUxV
RV9PRihQUk9CRV9DUFVfVDZfT0ZGU0VUKSAiKCRzcCkiICJcbiIKKyAgICAibHcgICAgICAgICR0
NywgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1Q3X09GRlNFVCkgIigkc3ApIiAiXG4i
CisgICAgImx3ICAgICAgICAkczAsICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9TMF9P
RkZTRVQpICIoJHNwKSIgIlxuIgorICAgICJsdyAgICAgICAgJHMxLCAiIFNUUklOR0laRV9WQUxV
RV9PRihQUk9CRV9DUFVfUzFfT0ZGU0VUKSAiKCRzcCkiICJcbiIKKyAgICAibHcgICAgICAgICRz
MiwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1MyX09GRlNFVCkgIigkc3ApIiAiXG4i
CisgICAgImx3ICAgICAgICAkczMsICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9TM19P
RkZTRVQpICIoJHNwKSIgIlxuIgorICAgICJsdyAgICAgICAgJHM0LCAiIFNUUklOR0laRV9WQUxV
RV9PRihQUk9CRV9DUFVfUzRfT0ZGU0VUKSAiKCRzcCkiICJcbiIKKyAgICAibHcgICAgICAgICRz
NSwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1M1X09GRlNFVCkgIigkc3ApIiAiXG4i
CisgICAgImx3ICAgICAgICAkczYsICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9TNl9P
RkZTRVQpICIoJHNwKSIgIlxuIgorICAgICJsdyAgICAgICAgJHM3LCAiIFNUUklOR0laRV9WQUxV
RV9PRihQUk9CRV9DUFVfUzdfT0ZGU0VUKSAiKCRzcCkiICJcbiIKKyAgICAibHcgICAgICAgICR0
OCwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1Q4X09GRlNFVCkgIigkc3ApIiAiXG4i
CisgICAgImx3ICAgICAgICAkdDksICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9UOV9P
RkZTRVQpICIoJHNwKSIgIlxuIgorICAgICJsdyAgICAgICAgJGdwLCAiIFNUUklOR0laRV9WQUxV
RV9PRihQUk9CRV9DUFVfR1BfT0ZGU0VUKSAiKCRzcCkiICJcbiIKKworICAgIC8vIFJlbWFpbmlu
ZyByZWdpc3RlcnMgdG8gcmVzdG9yZSBhcmU6IHQwLCB0MSwgZnAsIHJhLCBzcCwgYW5kIHBjLgor
CisgICAgLy8gVGhlIG9ubHkgd2F5IHRvIHNldCB0aGUgcGMgb24gTUlQUyAoZnJvbSB1c2VyIHNw
YWNlKSBpcyB2aWEgYW4gaW5kaXJlY3QgYnJhbmNoCisgICAgLy8gd2hpY2ggbWVhbnMgd2UnbGwg
bmVlZCBhIGZyZWUgcmVnaXN0ZXIgdG8gZG8gc28uIEZvciBvdXIgcHVycG9zZXMsIHJhCisgICAg
Ly8gaGFwcGVucyB0byBiZSBhdmFpbGFibGUgaW4gYXBwbGljYXRpb25zIG9mIHRoZSBwcm9iZSB3
aGVyZSB3ZSBtYXkgd2FudCB0bworICAgIC8vIGNvbnRpbnVlIGV4ZWN1dGluZyBhdCBhIGRpZmZl
cmVudCBsb2NhdGlvbiAoaS5lLiBjaGFuZ2UgdGhlIHBjKSBhZnRlciB0aGUgcHJvYmUKKyAgICAv
LyByZXR1cm5zLiBTbywgdGhlIE1JUFMgcHJvYmUgaW1wbGVtZW50YXRpb24gd2lsbCBhbGxvdyB0
aGUgcHJvYmUgaGFuZGxlciB0bworICAgIC8vIGVpdGhlciBtb2RpZnkgcmEgb3IgcGMsIGJ1dCBu
b3QgYm90aCBpbiB0aGUgc2FtZSBwcm9iZSBpbnZvY2F0aW9uLiBUaGUgcHJvYmUKKyAgICAvLyBt
ZWNoYW5pc20gZW5zdXJlcyB0aGF0IHdlIG5ldmVyIHRyeSB0byBtb2RpZnkgYm90aCByYSBhbmQg
cGMgd2l0aCBhIFJFTEVBU0VfQVNTRVJUCisgICAgLy8gaW4gUHJvYmU6OmV4ZWN1dGVQcm9iZSgp
LgorCisgICAgLy8gRGV0ZXJtaW5lIGlmIHRoZSBwcm9iZSBoYW5kbGVyIGNoYW5nZWQgdGhlIHBj
LgorICAgICJsdyAgICAgICAgJHJhLCAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfU1Bf
T0ZGU0VUKSAiKCRzcCkiICJcbiIgLy8gcHJlbG9hZCB0aGUgdGFyZ2V0IHNwLgorICAgICJsdyAg
ICAgICAgJHQwLCAiIFNUUklOR0laRV9WQUxVRV9PRihTQVZFRF9QUk9CRV9SRVRVUk5fUENfT0ZG
U0VUKSAiKCRzcCkiICJcbiIKKyAgICAibHcgICAgICAgICR0MSwgIiBTVFJJTkdJWkVfVkFMVUVf
T0YoUFJPQkVfQ1BVX1BDX09GRlNFVCkgIigkc3ApIiAiXG4iCisgICAgImFkZGl1ICAgICAkdDAs
ICR0MCwgMio0IiAiXG4iCisgICAgImJuZSAgICAgICAkdDAsICR0MSwgIiBMT0NBTF9MQUJFTF9T
VFJJTkcoY3RpTWFzbVByb2JlVHJhbXBvbGluZUVuZCkgIlxuIgorICAgICJub3AiICJcbiIKKwor
ICAgICAvLyBXZSBkaWRuJ3QgY2hhbmdlIHRoZSBQQy4gU28sIGxldCdzIHByZXBhcmUgZm9yIHNl
dHRpbmcgYSBwb3RlbnRpYWxseSBuZXcgcmEgdmFsdWUuCisKKyAgICAgLy8gMS4gTWFrZSByb29t
IGZvciB0aGUgUkFSZXN0b3JhdGlvblJlY29yZC4gVGhlIHByb2JlIHNpdGUgd2lsbCBwb3AgdGhp
cyBvZmYgbGF0ZXIuCisgICAgImFkZGl1ICAgICAkcmEsICRyYSwgLSIgU1RSSU5HSVpFX1ZBTFVF
X09GKFJBX1JFU1RPUkFUSU9OX1NJWkUpICJcbiIKKyAgICAgLy8gMi4gU3RvcmUgdGhlIGxwIHZh
bHVlIHRvIHJlc3RvcmUgYXQgdGhlIHByb2JlIHJldHVybiBzaXRlLgorICAgICJsdyAgICAgICAg
JHQwLCAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfUkFfT0ZGU0VUKSAiKCRzcCkiICJc
biIKKyAgICAic3cgICAgICAgICR0MCwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUkFfUkVTVE9SQVRJ
T05fUkFfT0ZGU0VUKSAiKCRyYSkiICJcbiIKKyAgICAgLy8gMy4gRm9yY2UgdGhlIHJldHVybiBy
YW1wIHRvIHJldHVybiB0byB0aGUgcHJvYmUgcmV0dXJuIHNpdGUuCisgICAgImx3ICAgICAgICAk
dDAsICIgU1RSSU5HSVpFX1ZBTFVFX09GKFNBVkVEX1BST0JFX1JFVFVSTl9QQ19PRkZTRVQpICIo
JHNwKSIgIlxuIgorICAgICJzdyAgICAgICAgJHQwLCAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9C
RV9DUFVfUENfT0ZGU0VUKSAiKCRzcCkiICJcbiIKKworICAgIExPQ0FMX0xBQkVMX1NUUklORyhj
dGlNYXNtUHJvYmVUcmFtcG9saW5lRW5kKSAiOiIgIlxuIgorCisgICAgLy8gRmlsbCBpbiB0aGUg
T3V0Z29pbmdQcm9iZVJlY29yZC4KKyAgICAiYWRkaXUgICAgICRyYSwgJHJhLCAtIiBTVFJJTkdJ
WkVfVkFMVUVfT0YoT1VUX1NJWkUpICJcbiIKKworICAgICJsdyAgICAgICAgJHQwLCAiIFNUUklO
R0laRV9WQUxVRV9PRihQUk9CRV9DUFVfRlBfT0ZGU0VUKSAiKCRzcCkiICJcbiIKKyAgICAibHcg
ICAgICAgICR0MSwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1BDX09GRlNFVCkgIigk
c3ApIiAiXG4iIC8vIFNldCB1cCB0aGUgb3V0Z29pbmcgcmVjb3JkIHNvIHRoYXQgd2UnbGwganVt
cCB0byB0aGUgbmV3IFBDLgorICAgICJzdyAgICAgICAgJHQwLCAiIFNUUklOR0laRV9WQUxVRV9P
RihPVVRfRlBfT0ZGU0VUKSAiKCRyYSkiICJcbiIKKyAgICAic3cgICAgICAgICR0MSwgIiBTVFJJ
TkdJWkVfVkFMVUVfT0YoT1VUX1JBX09GRlNFVCkgIigkcmEpIiAiXG4iCisgICAgImx3ICAgICAg
ICAkdDAsICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9UMF9PRkZTRVQpICIoJHNwKSIg
IlxuIgorICAgICJsdyAgICAgICAgJHQxLCAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVf
VDFfT0ZGU0VUKSAiKCRzcCkiICJcbiIKKyAgICAibW92ZSAgICAgICRzcCwgJHJhIiAiXG4iCisK
KyAgICAvLyBSZXN0b3JlIHRoZSByZW1haW5pbmcgcmVnaXN0ZXJzLgorICAgICJsdyAgICAgICAg
JGZwLCAiIFNUUklOR0laRV9WQUxVRV9PRihPVVRfRlBfT0ZGU0VUKSAiKCRzcCkiICJcbiIKKyAg
ICAibHcgICAgICAgICRyYSwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoT1VUX1JBX09GRlNFVCkgIigk
c3ApIiAiXG4iCisgICAgImFkZGl1ICAgICAkc3AsICRzcCwgIiBTVFJJTkdJWkVfVkFMVUVfT0Yo
T1VUX1NJWkUpICJcbiIKKyAgICAianIgICAgICAgICRyYSIgIlxuIgorICAgICJub3AiICJcbiIK
KyAgICAiLnNldCBwb3AiICJcbiIKKyk7CisjZW5kaWYgLy8gQ09NUElMRVIoR0NDX09SX0NMQU5H
KQorCit2b2lkIE1hY3JvQXNzZW1ibGVyOjpwcm9iZShQcm9iZTo6RnVuY3Rpb24gZnVuY3Rpb24s
IHZvaWQqIGFyZykKK3sKKyAgICBzdWIzMihUcnVzdGVkSW1tMzIoc2l6ZW9mKEluY29taW5nUmVj
b3JkKSksIHNwKTsKKyAgICBzdG9yZTMyKGEwLCBBZGRyZXNzKHNwLCBvZmZzZXRvZihJbmNvbWlu
Z1JlY29yZCwgYTApKSk7CisgICAgc3RvcmUzMihhMSwgQWRkcmVzcyhzcCwgb2Zmc2V0b2YoSW5j
b21pbmdSZWNvcmQsIGExKSkpOworICAgIHN0b3JlMzIoYTIsIEFkZHJlc3Moc3AsIG9mZnNldG9m
KEluY29taW5nUmVjb3JkLCBhMikpKTsKKyAgICBzdG9yZTMyKHMwLCBBZGRyZXNzKHNwLCBvZmZz
ZXRvZihJbmNvbWluZ1JlY29yZCwgczApKSk7CisgICAgc3RvcmUzMihzMSwgQWRkcmVzcyhzcCwg
b2Zmc2V0b2YoSW5jb21pbmdSZWNvcmQsIHMxKSkpOworICAgIHN0b3JlMzIocmEsIEFkZHJlc3Mo
c3AsIG9mZnNldG9mKEluY29taW5nUmVjb3JkLCByYSkpKTsKKyAgICBtb3ZlKFRydXN0ZWRJbW1Q
dHIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oZnVuY3Rpb24pKSwgYTApOworICAgIG1vdmUoVHJ1
c3RlZEltbVB0cihhcmcpLCBhMSk7CisgICAgbW92ZShUcnVzdGVkSW1tUHRyKHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCo+KFByb2JlOjpleGVjdXRlUHJvYmUpKSwgYTIpOworICAgIG1vdmUoVHJ1c3Rl
ZEltbVB0cihyZWludGVycHJldF9jYXN0PHZvaWQqPihjdGlNYXNtUHJvYmVUcmFtcG9saW5lKSks
IHMwKTsKKyAgICBtX2Fzc2VtYmxlci5qYWxyKHMwKTsKKyAgICBtX2Fzc2VtYmxlci5ub3AoKTsK
KyAgICBsb2FkMzIoQWRkcmVzcyhzcCwgb2Zmc2V0b2YoUkFSZXN0b3JhdGlvblJlY29yZCwgcmEp
KSwgcmEpOworICAgIGFkZDMyKFRydXN0ZWRJbW0zMihzaXplb2YoUkFSZXN0b3JhdGlvblJlY29y
ZCkpLCBzcCk7Cit9CisjZW5kaWYgLy8gRU5BQkxFKE1BU01fUFJPQkUpCisKK30gLy8gbmFtZXNw
YWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKEFTU0VNQkxFUikgJiYgQ1BVKE1JUFMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1Byb2JlQ29udGV4dC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1Byb2JlQ29udGV4dC5jcHAKb2xkIG1v
ZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCA3YjEyZDA1Li4yY2EwODQyCi0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUHJvYmVDb250ZXh0LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1Byb2JlQ29udGV4dC5jcHAKQEAgLTQwLDYgKzQw
LDEwIEBAIHZvaWQgZXhlY3V0ZVByb2JlKFN0YXRlKiBzdGF0ZSkKICAgICBhdXRvJiBjcHUgPSBj
b250ZXh0LmNwdTsKICAgICB2b2lkKiBvcmlnaW5hbExSID0gY3B1Lmdwcjx2b2lkKj4oQVJNNjRS
ZWdpc3RlcnM6OmxyKTsKICAgICB2b2lkKiBvcmlnaW5hbFBDID0gY3B1LnBjKCk7CisjZWxpZiBD
UFUoTUlQUykKKyAgICBhdXRvJiBjcHUgPSBjb250ZXh0LmNwdTsKKyAgICB2b2lkKiBvcmlnaW5h
bFJBID0gY3B1Lmdwcjx2b2lkKj4oTUlQU1JlZ2lzdGVyczo6cmEpOworICAgIHZvaWQqIG9yaWdp
bmFsUEMgPSBjcHUucGMoKTsKICNlbmRpZgogCiAgICAgc3RhdGUtPmluaXRpYWxpemVTdGFja0Z1
bmN0aW9uID0gbnVsbHB0cjsKQEAgLTQ5LDYgKzUzLDkgQEAgdm9pZCBleGVjdXRlUHJvYmUoU3Rh
dGUqIHN0YXRlKQogI2lmIENQVShBUk02NCkKICAgICAvLyBUaGUgQVJNNjQgcHJvYmUgdHJhbXBv
bGluZSBkb2VzIG5vdCBzdXBwb3J0IGNoYW5naW5nIGJvdGggbHIgYW5kIHBjLgogICAgIFJFTEVB
U0VfQVNTRVJUKG9yaWdpbmFsUEMgPT0gY3B1LnBjKCkgfHwgb3JpZ2luYWxMUiA9PSBjcHUuZ3By
PHZvaWQqPihBUk02NFJlZ2lzdGVyczo6bHIpKTsKKyNlbGlmIENQVShNSVBTKQorICAgIC8vIFRo
ZSBNSVBTIHByb2JlIHRyYW1wb2xpbmUgZG9lcyBub3Qgc3VwcG9ydCBjaGFuZ2luZyBib3RoIHJh
IGFuZCBwYy4KKyAgICBSRUxFQVNFX0FTU0VSVChvcmlnaW5hbFBDID09IGNwdS5wYygpIHx8IG9y
aWdpbmFsUkEgPT0gY3B1Lmdwcjx2b2lkKj4oTUlQU1JlZ2lzdGVyczo6cmEpKTsKICNlbmRpZgog
CiAgICAgaWYgKGNvbnRleHQuaGFzV3JpdGVzVG9GbHVzaCgpKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1Byb2JlQ29udGV4dC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9Qcm9iZUNvbnRleHQuaApvbGQgbW9kZSAxMDA2NDQKbmV3IG1v
ZGUgMTAwNzU1CmluZGV4IDBlNTIwMzQuLjM5NDFhODkKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9Qcm9iZUNvbnRleHQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL1Byb2JlQ29udGV4dC5oCkBAIC0xMTUsNyArMTE1LDcgQEAgaW5saW5lIHZvaWQq
JiBDUFVTdGF0ZTo6cGMoKQogI2VsaWYgQ1BVKEFSTV9USFVNQjIpIHx8IENQVShBUk1fVFJBRElU
SU9OQUwpCiAgICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0PHZvaWQqKj4oJmdwcihBUk1SZWdp
c3RlcnM6OnBjKSk7CiAjZWxpZiBDUFUoTUlQUykKLSAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgIHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KCZzcHIoTUlQU1Jl
Z2lzdGVyczo6cGMpKTsKICNlbHNlCiAjZXJyb3IgIlVuc3VwcG9ydGVkIENQVSIKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcApvbGQgbW9kZSAx
MDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IDdkMzRjOWYuLjcyZGIwM2MKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAKQEAgLTEzNSw2ICsxMzUsOSBAQCBib29s
IGlzU3BlY2lhbEdQUihNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRCBpZCkKICNpZiBDUFUoQVJN
NjQpCiAgICAgaWYgKGlkID09IEFSTTY0UmVnaXN0ZXJzOjp4MTgpCiAgICAgICAgIHJldHVybiB0
cnVlOworI2VsaWYgQ1BVKE1JUFMpCisgICAgaWYgKGlkID09IE1JUFNSZWdpc3RlcnM6Onplcm8g
fHwgaWQgPT0gTUlQU1JlZ2lzdGVyczo6azAgfHwgaWQgPT0gTUlQU1JlZ2lzdGVyczo6azEpCisg
ICAgICAgIHJldHVybiB0cnVlOwogI2VuZGlmCiAgICAgcmV0dXJuIGZhbHNlOwogfQpAQCAtMzg4
LDYgKzM5MSw5IEBAIHZvaWQgdGVzdFByb2JlUHJlc2VydmVzR1BSUygpCiAgICAgICAgICAgICAg
ICAgQ0hFQ0tfRVEoY3B1LmdwcihpZCksIHRlc3RXb3JkKGlkKSk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBmb3IgKGF1dG8gaWQgPSBDQ2FsbEhlbHBlcnM6OmZpcnN0RlBSZWdpc3Rlcigp
OyBpZCA8PSBDQ2FsbEhlbHBlcnM6Omxhc3RGUFJlZ2lzdGVyKCk7IGlkID0gbmV4dElEKGlkKSkK
KyNpZiBDUFUoTUlQUykKKyAgICAgICAgICAgICAgICBpZiAoKGlkICYgMSkgPT0gMCkKKyNlbmRp
ZgogICAgICAgICAgICAgICAgIENIRUNLX0VRKGNwdS5mcHI8dWludDY0X3Q+KGlkKSwgdGVzdFdv
cmQ2NChpZCkpOwogICAgICAgICB9KTsKIApAQCAtNDE0LDYgKzQyMCw5IEBAIHZvaWQgdGVzdFBy
b2JlUHJlc2VydmVzR1BSUygpCiAgICAgICAgICAgICAgICAgQ0hFQ0tfRVEoY3B1LmdwcihpZCks
IG9yaWdpbmFsU3RhdGUuZ3ByKGlkKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBmb3Ig
KGF1dG8gaWQgPSBDQ2FsbEhlbHBlcnM6OmZpcnN0RlBSZWdpc3RlcigpOyBpZCA8PSBDQ2FsbEhl
bHBlcnM6Omxhc3RGUFJlZ2lzdGVyKCk7IGlkID0gbmV4dElEKGlkKSkKKyNpZiBDUFUoTUlQUykK
KyAgICAgICAgICAgICAgICBpZiAoKGlkICYgMSkgPT0gMCkKKyNlbmRpZgogICAgICAgICAgICAg
ICAgIENIRUNLX0VRKGNwdS5mcHI8dWludDY0X3Q+KGlkKSwgb3JpZ2luYWxTdGF0ZS5mcHI8dWlu
dDY0X3Q+KGlkKSk7CiAgICAgICAgIH0pOwogCkBAIC00MjksNyArNDM4LDkgQEAgdm9pZCB0ZXN0
UHJvYmVNb2RpZmllc1N0YWNrUG9pbnRlcihXVEY6OkZ1bmN0aW9uPHZvaWQqKFByb2JlOjpDb250
ZXh0Jik+IGNvbXB1dGUKICAgICBDUFVTdGF0ZSBvcmlnaW5hbFN0YXRlOwogICAgIHZvaWQqIG9y
aWdpbmFsU1AgeyBudWxscHRyIH07CiAgICAgdm9pZCogbW9kaWZpZWRTUCB7IG51bGxwdHIgfTsK
KyNpZiAhKENQVShNSVBTKSkKICAgICB1aW50cHRyX3QgbW9kaWZpZWRGbGFncyB7IDAgfTsKKyNl
bmRpZgogICAgIAogI2lmIENQVShYODYpIHx8IENQVShYODZfNjQpCiAgICAgYXV0byBmbGFnc1NQ
UiA9IFg4NlJlZ2lzdGVyczo6ZWZsYWdzOwpAQCAtNDYxLDkgKzQ3MiwxMSBAQCB2b2lkIHRlc3RQ
cm9iZU1vZGlmaWVzU3RhY2tQb2ludGVyKFdURjo6RnVuY3Rpb248dm9pZCooUHJvYmU6OkNvbnRl
eHQmKT4gY29tcHV0ZQogICAgICAgICAgICAgICAgIGNwdS5mcHIoaWQpID0gYml0d2lzZV9jYXN0
PGRvdWJsZT4odGVzdFdvcmQ2NChpZCkpOwogICAgICAgICAgICAgfQogCisjaWYgIShDUFUoTUlQ
UykpCiAgICAgICAgICAgICBvcmlnaW5hbFN0YXRlLnNwcihmbGFnc1NQUikgPSBjcHUuc3ByKGZs
YWdzU1BSKTsKICAgICAgICAgICAgIG1vZGlmaWVkRmxhZ3MgPSBvcmlnaW5hbFN0YXRlLnNwcihm
bGFnc1NQUikgXiBmbGFnc01hc2s7CiAgICAgICAgICAgICBjcHUuc3ByKGZsYWdzU1BSKSA9IG1v
ZGlmaWVkRmxhZ3M7CisjZW5kaWYKIAogICAgICAgICAgICAgb3JpZ2luYWxTUCA9IGNwdS5zcCgp
OwogICAgICAgICAgICAgbW9kaWZpZWRTUCA9IGNvbXB1dGVNb2RpZmllZFN0YWNrUG9pbnRlcihj
b250ZXh0KTsKQEAgLTQ4NCw4ICs0OTcsMTMgQEAgdm9pZCB0ZXN0UHJvYmVNb2RpZmllc1N0YWNr
UG9pbnRlcihXVEY6OkZ1bmN0aW9uPHZvaWQqKFByb2JlOjpDb250ZXh0Jik+IGNvbXB1dGUKICAg
ICAgICAgICAgICAgICBDSEVDS19FUShjcHUuZ3ByKGlkKSwgdGVzdFdvcmQoaWQpKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIGZvciAoYXV0byBpZCA9IENDYWxsSGVscGVyczo6Zmlyc3RG
UFJlZ2lzdGVyKCk7IGlkIDw9IENDYWxsSGVscGVyczo6bGFzdEZQUmVnaXN0ZXIoKTsgaWQgPSBu
ZXh0SUQoaWQpKQorI2lmIENQVShNSVBTKQorICAgICAgICAgICAgICAgIGlmICgoaWQgJiAxKSA9
PSAwKQorI2VuZGlmCiAgICAgICAgICAgICAgICAgQ0hFQ0tfRVEoY3B1LmZwcjx1aW50NjRfdD4o
aWQpLCB0ZXN0V29yZDY0KGlkKSk7CisjaWYgIShDUFUoTUlQUykpCiAgICAgICAgICAgICBDSEVD
S19FUShjcHUuc3ByKGZsYWdzU1BSKSAmIGZsYWdzTWFzaywgbW9kaWZpZWRGbGFncyAmIGZsYWdz
TWFzayk7CisjZW5kaWYKICAgICAgICAgICAgIENIRUNLX0VRKGNwdS5zcCgpLCBtb2RpZmllZFNQ
KTsKICAgICAgICAgfSk7CiAKQEAgLTUwMCw3ICs1MTgsOSBAQCB2b2lkIHRlc3RQcm9iZU1vZGlm
aWVzU3RhY2tQb2ludGVyKFdURjo6RnVuY3Rpb248dm9pZCooUHJvYmU6OkNvbnRleHQmKT4gY29t
cHV0ZQogICAgICAgICAgICAgfQogICAgICAgICAgICAgZm9yIChhdXRvIGlkID0gQ0NhbGxIZWxw
ZXJzOjpmaXJzdEZQUmVnaXN0ZXIoKTsgaWQgPD0gQ0NhbGxIZWxwZXJzOjpsYXN0RlBSZWdpc3Rl
cigpOyBpZCA9IG5leHRJRChpZCkpCiAgICAgICAgICAgICAgICAgY3B1LmZwcihpZCkgPSBvcmln
aW5hbFN0YXRlLmZwcihpZCk7CisjaWYgIShDUFUoTUlQUykpCiAgICAgICAgICAgICBjcHUuc3By
KGZsYWdzU1BSKSA9IG9yaWdpbmFsU3RhdGUuc3ByKGZsYWdzU1BSKTsKKyNlbmRpZgogICAgICAg
ICAgICAgY3B1LnNwKCkgPSBvcmlnaW5hbFNQOwogICAgICAgICB9KTsKIApAQCAtNTE0LDggKzUz
NCwxMyBAQCB2b2lkIHRlc3RQcm9iZU1vZGlmaWVzU3RhY2tQb2ludGVyKFdURjo6RnVuY3Rpb248
dm9pZCooUHJvYmU6OkNvbnRleHQmKT4gY29tcHV0ZQogICAgICAgICAgICAgICAgIENIRUNLX0VR
KGNwdS5ncHIoaWQpLCBvcmlnaW5hbFN0YXRlLmdwcihpZCkpOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgZm9yIChhdXRvIGlkID0gQ0NhbGxIZWxwZXJzOjpmaXJzdEZQUmVnaXN0ZXIoKTsg
aWQgPD0gQ0NhbGxIZWxwZXJzOjpsYXN0RlBSZWdpc3RlcigpOyBpZCA9IG5leHRJRChpZCkpCisj
aWYgQ1BVKE1JUFMpCisgICAgICAgICAgICAgICAgaWYgKChpZCAmIDEpID09IDApCisjZW5kaWYK
ICAgICAgICAgICAgICAgICBDSEVDS19FUShjcHUuZnByPHVpbnQ2NF90PihpZCksIG9yaWdpbmFs
U3RhdGUuZnByPHVpbnQ2NF90PihpZCkpOworI2lmICEoQ1BVKE1JUFMpKQogICAgICAgICAgICAg
Q0hFQ0tfRVEoY3B1LnNwcihmbGFnc1NQUikgJiBmbGFnc01hc2ssIG9yaWdpbmFsU3RhdGUuc3By
KGZsYWdzU1BSKSAmIGZsYWdzTWFzayk7CisjZW5kaWYKICAgICAgICAgICAgIENIRUNLX0VRKGNw
dS5zcCgpLCBvcmlnaW5hbFNQKTsKICAgICAgICAgfSk7CiAKQEAgLTYyOCw5ICs2NTMsMTEgQEAg
dm9pZCB0ZXN0UHJvYmVNb2RpZmllc1N0YWNrVmFsdWVzKCkKICAgICAgICAgICAgICAgICBvcmln
aW5hbFN0YXRlLmZwcihpZCkgPSBjcHUuZnByKGlkKTsKICAgICAgICAgICAgICAgICBjcHUuZnBy
KGlkKSA9IGJpdHdpc2VfY2FzdDxkb3VibGU+KHRlc3RXb3JkNjQoaWQpKTsKICAgICAgICAgICAg
IH0KKyNpZiAhKENQVShNSVBTKSkKICAgICAgICAgICAgIG9yaWdpbmFsU3RhdGUuc3ByKGZsYWdz
U1BSKSA9IGNwdS5zcHIoZmxhZ3NTUFIpOwogICAgICAgICAgICAgbW9kaWZpZWRGbGFncyA9IG9y
aWdpbmFsU3RhdGUuc3ByKGZsYWdzU1BSKSBeIGZsYWdzTWFzazsKICAgICAgICAgICAgIGNwdS5z
cHIoZmxhZ3NTUFIpID0gbW9kaWZpZWRGbGFnczsKKyNlbmRpZgogCiAgICAgICAgICAgICAvLyBF
bnN1cmUgdGhhdCB3ZSdsbCBiZSB3cml0aW5nIG92ZXIgdGhlIHJlZ2lvbnMgb2YgdGhlIHN0YWNr
IHdoZXJlIHRoZSBQcm9iZTo6U3RhdGUgaXMuCiAgICAgICAgICAgICBvcmlnaW5hbFNQID0gY3B1
LnNwKCk7CkBAIC02NjQsOCArNjkxLDEzIEBAIHZvaWQgdGVzdFByb2JlTW9kaWZpZXNTdGFja1Zh
bHVlcygpCiAgICAgICAgICAgICAgICAgQ0hFQ0tfRVEoY3B1LmdwcihpZCksIHRlc3RXb3JkKGlk
KSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBmb3IgKGF1dG8gaWQgPSBDQ2FsbEhlbHBl
cnM6OmZpcnN0RlBSZWdpc3RlcigpOyBpZCA8PSBDQ2FsbEhlbHBlcnM6Omxhc3RGUFJlZ2lzdGVy
KCk7IGlkID0gbmV4dElEKGlkKSkKKyNpZiBDUFUoTUlQUykKKyAgICAgICAgICAgICAgICBpZiAo
KGlkICYgMSkgPT0gMCkKKyNlbmRpZgogICAgICAgICAgICAgICAgIENIRUNLX0VRKGNwdS5mcHI8
dWludDY0X3Q+KGlkKSwgdGVzdFdvcmQ2NChpZCkpOworI2lmICEoQ1BVKE1JUFMpKQogICAgICAg
ICAgICAgQ0hFQ0tfRVEoY3B1LnNwcihmbGFnc1NQUikgJiBmbGFnc01hc2ssIG1vZGlmaWVkRmxh
Z3MgJiBmbGFnc01hc2spOworI2VuZGlmCiAgICAgICAgICAgICBDSEVDS19FUShjcHUuc3AoKSwg
bmV3U1ApOwogCiAgICAgICAgICAgICAvLyBWYWxpZGF0ZSB0aGUgc3RhY2sgdmFsdWVzLgpAQCAt
Njg5LDcgKzcyMSw5IEBAIHZvaWQgdGVzdFByb2JlTW9kaWZpZXNTdGFja1ZhbHVlcygpCiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICBmb3IgKGF1dG8gaWQgPSBDQ2FsbEhlbHBlcnM6OmZpcnN0
RlBSZWdpc3RlcigpOyBpZCA8PSBDQ2FsbEhlbHBlcnM6Omxhc3RGUFJlZ2lzdGVyKCk7IGlkID0g
bmV4dElEKGlkKSkKICAgICAgICAgICAgICAgICBjcHUuZnByKGlkKSA9IG9yaWdpbmFsU3RhdGUu
ZnByKGlkKTsKKyNpZiAhKENQVShNSVBTKSkKICAgICAgICAgICAgIGNwdS5zcHIoZmxhZ3NTUFIp
ID0gb3JpZ2luYWxTdGF0ZS5zcHIoZmxhZ3NTUFIpOworI2VuZGlmCiAgICAgICAgICAgICBjcHUu
c3AoKSA9IG9yaWdpbmFsU1A7CiAgICAgICAgIH0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9k
ZSAxMDA3NTUKaW5kZXggZjE2MTM1NC4uMWVhYTJjNQotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE3LTExLTIx
ICBTdGFuaXNsYXYgT2NvdmFqICA8c3RhbmlzbGF2Lm9jb3ZhakBydC1yay5jb20+CisKKyAgICAg
ICAgRW5hYmxlIERGRyBKSVQgb24gTUlQUy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3NTQ0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogd3RmL1BsYXRmb3JtLmg6CisKIDIwMTctMTEtMTkgIFRpbSBI
b3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHVudXNl
ZCBUT1VDSF9JQ09OX0xPQURJTkcgZmVhdHVyZSBmbGFnCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9QbGF0Zm9ybS5oIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaApvbGQgbW9kZSAxMDA2
NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IDVjZDQzZjIuLjFkODJhZDUKLS0tIGEvU291cmNlL1dU
Ri93dGYvUGxhdGZvcm0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCkBAIC04MDMs
OSArODAzLDEwIEBACiAjaWYgQ1BVKEFSTV9UUkFESVRJT05BTCkKICNkZWZpbmUgRU5BQkxFX0RG
R19KSVQgMQogI2VuZGlmCi0vKiBGSVhNRTogTUlQUyBjYW5ub3QgZW5hYmxlIHRoZSBERkcgdW50
aWwgaXQgaGFzIHN1cHBvcnQgZm9yIE1hY3JvQXNzZW1ibGVyOjpwcm9iZSgpLgotICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTQ0NwotKi8KKy8qIEVuYWJsZSB0
aGUgREZHIEpJVCBvbiBNSVBTLiAqLworI2lmIENQVShNSVBTKQorI2RlZmluZSBFTkFCTEVfREZH
X0pJVCAxCisjZW5kaWYKICNlbmRpZgogCiAvKiBDb25jdXJyZW50IEpTIG9ubHkgd29ya3Mgb24g
NjQtYml0IHBsYXRmb3JtcyBiZWNhdXNlIGl0IHJlcXVpcmVzIHRoYXQKQEAgLTgyNCw3ICs4MjUs
NyBAQAogI2RlZmluZSBFTkFCTEVfRkFTVF9UTFNfSklUIDEKICNlbmRpZgogCi0jaWYgQ1BVKFg4
NikgfHwgQ1BVKFg4Nl82NCkgfHwgQ1BVKEFSTV9USFVNQjIpIHx8IENQVShBUk02NCkgfHwgQ1BV
KEFSTV9UUkFESVRJT05BTCkKKyNpZiBDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KSB8fCBDUFUoQVJN
X1RIVU1CMikgfHwgQ1BVKEFSTTY0KSB8fCBDUFUoQVJNX1RSQURJVElPTkFMKSB8fCBDUFUoTUlQ
UykKICNkZWZpbmUgRU5BQkxFX01BU01fUFJPQkUgMQogI2Vsc2UKICNkZWZpbmUgRU5BQkxFX01B
U01fUFJPQkUgMAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>327416</attachid>
            <date>2017-11-21 09:14:08 -0800</date>
            <delta_ts>2017-11-23 07:51:54 -0800</delta_ts>
            <desc>MIPS implementation of MacroAssembler::probe()</desc>
            <filename>dfg.patch</filename>
            <type>text/plain</type>
            <size>47851</size>
            <attacher name="Stanislav Ocovaj">stanislav.ocovaj</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5k
ZXggYWUwOTc2Ny4uY2ZmYjE4ZQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAor
MjAxNy0xMS0yMSAgU3RhbmlzbGF2IE9jb3ZhaiAgPHN0YW5pc2xhdi5vY292YWpAcnQtcmsuY29t
PgorCisgICAgICAgIFtNSVBTXVtKU0NdIEltcGxlbWVudCBNYWNyb0Fzc2VtYmxlcjo6cHJvYmUg
c3VwcG9ydCBvbiBNSVBTCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNzU0NDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGlzIHBhdGNoIGFsbG93cyBERkcgSklUIHRvIGJlIGVuYWJsZWQgb24gTUlQUyBw
bGF0Zm9ybXMuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBhc3NlbWJsZXIv
TUlQU0Fzc2VtYmxlci5oOgorICAgICAgICAoSlNDOjpNSVBTQXNzZW1ibGVyOjpsYXN0U1BSZWdp
c3Rlcik6CisgICAgICAgIChKU0M6Ok1JUFNBc3NlbWJsZXI6Om51bWJlck9mU1BSZWdpc3RlcnMp
OgorICAgICAgICAoSlNDOjpNSVBTQXNzZW1ibGVyOjpzcHJOYW1lKToKKyAgICAgICAgKiBhc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6Ok1hY3Jv
QXNzZW1ibGVyOjpwcm9iZSk6CisgICAgICAgICogYXNzZW1ibGVyL1Byb2JlQ29udGV4dC5jcHA6
CisgICAgICAgIChKU0M6OlByb2JlOjpleGVjdXRlUHJvYmUpOgorICAgICAgICAqIGFzc2VtYmxl
ci9Qcm9iZUNvbnRleHQuaDoKKyAgICAgICAgKEpTQzo6UHJvYmU6OkNQVVN0YXRlOjpwYyk6Cisg
ICAgICAgICogYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcDoKKyAgICAgICAgKEpTQzo6aXNTcGVjaWFs
R1BSKToKKyAgICAgICAgKEpTQzo6dGVzdFByb2JlUHJlc2VydmVzR1BSUyk6CisgICAgICAgIChK
U0M6OnRlc3RQcm9iZU1vZGlmaWVzU3RhY2tQb2ludGVyKToKKyAgICAgICAgKEpTQzo6dGVzdFBy
b2JlTW9kaWZpZXNTdGFja1ZhbHVlcyk6CisKIDIwMTctMTEtMjEgIFl1c3VrZSBTdXp1a2kgIDx1
dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgW0RGR11bRlRMXSBTdXBwb3J0IE1hcFNl
dCAvIFNldEFkZCBpbnRyaW5zaWNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
U291cmNlcy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKb2xkIG1vZGUg
MTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCA3MGU0YTMyLi4yMGQ2Y2UyCi0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
U291cmNlcy50eHQKQEAgLTQ3LDYgKzQ3LDcgQEAgYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJN
LmNwcAogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuY3BwCiBhc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJBUk12Ny5jcHAKIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckNvZGVSZWYuY3BwCith
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmNwcAogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
UHJpbnRlci5jcHAKIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5jcHAKIGFzc2Vt
Ymxlci9QcmludGVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NSVBTQXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01J
UFNBc3NlbWJsZXIuaApvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IGY4NmRh
ZjMuLjdhNzQ3YTkKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NSVBTQXNz
ZW1ibGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NSVBTQXNzZW1i
bGVyLmgKQEAgLTExMyw3ICsxMTMsOCBAQCB0eXBlZGVmIGVudW0gewogICAgIGZjY3IgPSAyNSwK
ICAgICBmZXhyID0gMjYsCiAgICAgZmVuciA9IDI4LAotICAgIGZjc3IgPSAzMQorICAgIGZjc3Ig
PSAzMSwKKyAgICBwYwogfSBTUFJlZ2lzdGVySUQ7CiAKIHR5cGVkZWYgZW51bSB7CkBAIC0xNjUs
OCArMTY2LDggQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbnVtYmVy
T2ZSZWdpc3RlcnMoKSB7IHJldHVybiBsYXN0UmVnaXN0ZXIoKSAtIGZpcnN0UmVnaXN0ZXIoKSAr
IDE7IH0KIAogICAgIHN0YXRpYyBjb25zdGV4cHIgU1BSZWdpc3RlcklEIGZpcnN0U1BSZWdpc3Rl
cigpIHsgcmV0dXJuIE1JUFNSZWdpc3RlcnM6OmZpcjsgfQotICAgIHN0YXRpYyBjb25zdGV4cHIg
U1BSZWdpc3RlcklEIGxhc3RTUFJlZ2lzdGVyKCkgeyByZXR1cm4gTUlQU1JlZ2lzdGVyczo6ZmNz
cjsgfQotICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbnVtYmVyT2ZTUFJlZ2lzdGVycygp
IHsgcmV0dXJuIDU7IH0KKyAgICBzdGF0aWMgY29uc3RleHByIFNQUmVnaXN0ZXJJRCBsYXN0U1BS
ZWdpc3RlcigpIHsgcmV0dXJuIE1JUFNSZWdpc3RlcnM6OnBjOyB9CisgICAgc3RhdGljIGNvbnN0
ZXhwciB1bnNpZ25lZCBudW1iZXJPZlNQUmVnaXN0ZXJzKCkgeyByZXR1cm4gbGFzdFNQUmVnaXN0
ZXIoKSAtIGZpcnN0U1BSZWdpc3RlcigpICsgMTsgfQogCiAgICAgc3RhdGljIGNvbnN0ZXhwciBG
UFJlZ2lzdGVySUQgZmlyc3RGUFJlZ2lzdGVyKCkgeyByZXR1cm4gTUlQU1JlZ2lzdGVyczo6ZjA7
IH0KICAgICBzdGF0aWMgY29uc3RleHByIEZQUmVnaXN0ZXJJRCBsYXN0RlBSZWdpc3RlcigpIHsg
cmV0dXJuIE1JUFNSZWdpc3RlcnM6OmYzMTsgfQpAQCAtMTk3LDYgKzE5OCw4IEBAIHB1YmxpYzoK
ICAgICAgICAgICAgIHJldHVybiAiZmVuciI7CiAgICAgICAgIGNhc2UgTUlQU1JlZ2lzdGVyczo6
ZmNzcjoKICAgICAgICAgICAgIHJldHVybiAiZmNzciI7CisgICAgICAgIGNhc2UgTUlQU1JlZ2lz
dGVyczo6cGM6CisgICAgICAgICAgICByZXR1cm4gInBjIjsKICAgICAgICAgZGVmYXVsdDoKICAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBT
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBT
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5kZGFmN2Y0Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
ck1JUFMuY3BwCkBAIC0wLDAgKzEsNTI5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUo
QVNTRU1CTEVSKSAmJiBDUFUoTUlQUykKKyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgorCisj
aW5jbHVkZSAiUHJvYmVDb250ZXh0LmgiCisjaW5jbHVkZSA8d3RmL0lubGluZUFTTS5oPgorCitu
YW1lc3BhY2UgSlNDIHsKKworI2lmIEVOQUJMRShNQVNNX1BST0JFKQorCitleHRlcm4gIkMiIHZv
aWQgY3RpTWFzbVByb2JlVHJhbXBvbGluZSgpOworCit1c2luZyBuYW1lc3BhY2UgTUlQU1JlZ2lz
dGVyczsKKworI2lmIENPTVBJTEVSKEdDQ19PUl9DTEFORykKKworLy8gVGhlIGZvbGxvd2luZyBh
cmUgb2Zmc2V0cyBmb3IgUHJvYmU6OlN0YXRlIGZpZWxkcyBhY2Nlc3NlZAorLy8gYnkgdGhlIGN0
aU1hc21Qcm9iZVRyYW1wb2xpbmUgc3R1Yi4KKworI2RlZmluZSBQVFJfU0laRSA0CisjZGVmaW5l
IFBST0JFX1BST0JFX0ZVTkNUSU9OX09GRlNFVCAoMCAqIFBUUl9TSVpFKQorI2RlZmluZSBQUk9C
RV9BUkdfT0ZGU0VUICgxICogUFRSX1NJWkUpCisjZGVmaW5lIFBST0JFX0lOSVRfU1RBQ0tfRlVO
Q1RJT05fT0ZGU0VUICgyICogUFRSX1NJWkUpCisjZGVmaW5lIFBST0JFX0lOSVRfU1RBQ0tfQVJH
X09GRlNFVCAoMyAqIFBUUl9TSVpFKQorCisjZGVmaW5lIFBST0JFX0ZJUlNUX0dQUkVHX09GRlNF
VCAoNCAqIFBUUl9TSVpFKQorCisjZGVmaW5lIEdQUkVHX1NJWkUgNAorI2RlZmluZSBQUk9CRV9D
UFVfWlJfT0ZGU0VUIChQUk9CRV9GSVJTVF9HUFJFR19PRkZTRVQgKyAoMCAqIEdQUkVHX1NJWkUp
KQorI2RlZmluZSBQUk9CRV9DUFVfQVRfT0ZGU0VUIChQUk9CRV9GSVJTVF9HUFJFR19PRkZTRVQg
KyAoMSAqIEdQUkVHX1NJWkUpKQorI2RlZmluZSBQUk9CRV9DUFVfVjBfT0ZGU0VUIChQUk9CRV9G
SVJTVF9HUFJFR19PRkZTRVQgKyAoMiAqIEdQUkVHX1NJWkUpKQorI2RlZmluZSBQUk9CRV9DUFVf
VjFfT0ZGU0VUIChQUk9CRV9GSVJTVF9HUFJFR19PRkZTRVQgKyAoMyAqIEdQUkVHX1NJWkUpKQor
I2RlZmluZSBQUk9CRV9DUFVfQTBfT0ZGU0VUIChQUk9CRV9GSVJTVF9HUFJFR19PRkZTRVQgKyAo
NCAqIEdQUkVHX1NJWkUpKQorI2RlZmluZSBQUk9CRV9DUFVfQTFfT0ZGU0VUIChQUk9CRV9GSVJT
VF9HUFJFR19PRkZTRVQgKyAoNSAqIEdQUkVHX1NJWkUpKQorI2RlZmluZSBQUk9CRV9DUFVfQTJf
T0ZGU0VUIChQUk9CRV9GSVJTVF9HUFJFR19PRkZTRVQgKyAoNiAqIEdQUkVHX1NJWkUpKQorI2Rl
ZmluZSBQUk9CRV9DUFVfQTNfT0ZGU0VUIChQUk9CRV9GSVJTVF9HUFJFR19PRkZTRVQgKyAoNyAq
IEdQUkVHX1NJWkUpKQorI2RlZmluZSBQUk9CRV9DUFVfVDBfT0ZGU0VUIChQUk9CRV9GSVJTVF9H
UFJFR19PRkZTRVQgKyAoOCAqIEdQUkVHX1NJWkUpKQorI2RlZmluZSBQUk9CRV9DUFVfVDFfT0ZG
U0VUIChQUk9CRV9GSVJTVF9HUFJFR19PRkZTRVQgKyAoOSAqIEdQUkVHX1NJWkUpKQorI2RlZmlu
ZSBQUk9CRV9DUFVfVDJfT0ZGU0VUIChQUk9CRV9GSVJTVF9HUFJFR19PRkZTRVQgKyAoMTAgKiBH
UFJFR19TSVpFKSkKKyNkZWZpbmUgUFJPQkVfQ1BVX1QzX09GRlNFVCAoUFJPQkVfRklSU1RfR1BS
RUdfT0ZGU0VUICsgKDExICogR1BSRUdfU0laRSkpCisjZGVmaW5lIFBST0JFX0NQVV9UNF9PRkZT
RVQgKFBST0JFX0ZJUlNUX0dQUkVHX09GRlNFVCArICgxMiAqIEdQUkVHX1NJWkUpKQorI2RlZmlu
ZSBQUk9CRV9DUFVfVDVfT0ZGU0VUIChQUk9CRV9GSVJTVF9HUFJFR19PRkZTRVQgKyAoMTMgKiBH
UFJFR19TSVpFKSkKKyNkZWZpbmUgUFJPQkVfQ1BVX1Q2X09GRlNFVCAoUFJPQkVfRklSU1RfR1BS
RUdfT0ZGU0VUICsgKDE0ICogR1BSRUdfU0laRSkpCisjZGVmaW5lIFBST0JFX0NQVV9UN19PRkZT
RVQgKFBST0JFX0ZJUlNUX0dQUkVHX09GRlNFVCArICgxNSAqIEdQUkVHX1NJWkUpKQorI2RlZmlu
ZSBQUk9CRV9DUFVfUzBfT0ZGU0VUIChQUk9CRV9GSVJTVF9HUFJFR19PRkZTRVQgKyAoMTYgKiBH
UFJFR19TSVpFKSkKKyNkZWZpbmUgUFJPQkVfQ1BVX1MxX09GRlNFVCAoUFJPQkVfRklSU1RfR1BS
RUdfT0ZGU0VUICsgKDE3ICogR1BSRUdfU0laRSkpCisjZGVmaW5lIFBST0JFX0NQVV9TMl9PRkZT
RVQgKFBST0JFX0ZJUlNUX0dQUkVHX09GRlNFVCArICgxOCAqIEdQUkVHX1NJWkUpKQorI2RlZmlu
ZSBQUk9CRV9DUFVfUzNfT0ZGU0VUIChQUk9CRV9GSVJTVF9HUFJFR19PRkZTRVQgKyAoMTkgKiBH
UFJFR19TSVpFKSkKKyNkZWZpbmUgUFJPQkVfQ1BVX1M0X09GRlNFVCAoUFJPQkVfRklSU1RfR1BS
RUdfT0ZGU0VUICsgKDIwICogR1BSRUdfU0laRSkpCisjZGVmaW5lIFBST0JFX0NQVV9TNV9PRkZT
RVQgKFBST0JFX0ZJUlNUX0dQUkVHX09GRlNFVCArICgyMSAqIEdQUkVHX1NJWkUpKQorI2RlZmlu
ZSBQUk9CRV9DUFVfUzZfT0ZGU0VUIChQUk9CRV9GSVJTVF9HUFJFR19PRkZTRVQgKyAoMjIgKiBH
UFJFR19TSVpFKSkKKyNkZWZpbmUgUFJPQkVfQ1BVX1M3X09GRlNFVCAoUFJPQkVfRklSU1RfR1BS
RUdfT0ZGU0VUICsgKDIzICogR1BSRUdfU0laRSkpCisjZGVmaW5lIFBST0JFX0NQVV9UOF9PRkZT
RVQgKFBST0JFX0ZJUlNUX0dQUkVHX09GRlNFVCArICgyNCAqIEdQUkVHX1NJWkUpKQorI2RlZmlu
ZSBQUk9CRV9DUFVfVDlfT0ZGU0VUIChQUk9CRV9GSVJTVF9HUFJFR19PRkZTRVQgKyAoMjUgKiBH
UFJFR19TSVpFKSkKKyNkZWZpbmUgUFJPQkVfQ1BVX0swX09GRlNFVCAoUFJPQkVfRklSU1RfR1BS
RUdfT0ZGU0VUICsgKDI2ICogR1BSRUdfU0laRSkpCisjZGVmaW5lIFBST0JFX0NQVV9LMV9PRkZT
RVQgKFBST0JFX0ZJUlNUX0dQUkVHX09GRlNFVCArICgyNyAqIEdQUkVHX1NJWkUpKQorI2RlZmlu
ZSBQUk9CRV9DUFVfR1BfT0ZGU0VUIChQUk9CRV9GSVJTVF9HUFJFR19PRkZTRVQgKyAoMjggKiBH
UFJFR19TSVpFKSkKKyNkZWZpbmUgUFJPQkVfQ1BVX1NQX09GRlNFVCAoUFJPQkVfRklSU1RfR1BS
RUdfT0ZGU0VUICsgKDI5ICogR1BSRUdfU0laRSkpCisjZGVmaW5lIFBST0JFX0NQVV9GUF9PRkZT
RVQgKFBST0JFX0ZJUlNUX0dQUkVHX09GRlNFVCArICgzMCAqIEdQUkVHX1NJWkUpKQorI2RlZmlu
ZSBQUk9CRV9DUFVfUkFfT0ZGU0VUIChQUk9CRV9GSVJTVF9HUFJFR19PRkZTRVQgKyAoMzEgKiBH
UFJFR19TSVpFKSkKKworI2RlZmluZSBQUk9CRV9GSVJTVF9TUFJFR19PRkZTRVQgKFBST0JFX0ZJ
UlNUX0dQUkVHX09GRlNFVCArICgzMiAqIEdQUkVHX1NJWkUpKQorCisjZGVmaW5lIFBST0JFX0NQ
VV9QQ19PRkZTRVQgKFBST0JFX0ZJUlNUX1NQUkVHX09GRlNFVCArICgzMiAqIEdQUkVHX1NJWkUp
KQorCisjZGVmaW5lIFBST0JFX0ZJUlNUX0ZQUkVHX09GRlNFVCAoUFJPQkVfRklSU1RfU1BSRUdf
T0ZGU0VUICsgKDM0ICogR1BSRUdfU0laRSkpCisKKyNkZWZpbmUgRlBSRUdfU0laRSA4CisjZGVm
aW5lIFBST0JFX0NQVV9GMF9PRkZTRVQgIChQUk9CRV9GSVJTVF9GUFJFR19PRkZTRVQgKyAoMCAq
IEZQUkVHX1NJWkUpKQorI2RlZmluZSBQUk9CRV9DUFVfRjFfT0ZGU0VUICAoUFJPQkVfRklSU1Rf
RlBSRUdfT0ZGU0VUICsgKDEgKiBGUFJFR19TSVpFKSkKKyNkZWZpbmUgUFJPQkVfQ1BVX0YyX09G
RlNFVCAgKFBST0JFX0ZJUlNUX0ZQUkVHX09GRlNFVCArICgyICogRlBSRUdfU0laRSkpCisjZGVm
aW5lIFBST0JFX0NQVV9GM19PRkZTRVQgIChQUk9CRV9GSVJTVF9GUFJFR19PRkZTRVQgKyAoMyAq
IEZQUkVHX1NJWkUpKQorI2RlZmluZSBQUk9CRV9DUFVfRjRfT0ZGU0VUICAoUFJPQkVfRklSU1Rf
RlBSRUdfT0ZGU0VUICsgKDQgKiBGUFJFR19TSVpFKSkKKyNkZWZpbmUgUFJPQkVfQ1BVX0Y1X09G
RlNFVCAgKFBST0JFX0ZJUlNUX0ZQUkVHX09GRlNFVCArICg1ICogRlBSRUdfU0laRSkpCisjZGVm
aW5lIFBST0JFX0NQVV9GNl9PRkZTRVQgIChQUk9CRV9GSVJTVF9GUFJFR19PRkZTRVQgKyAoNiAq
IEZQUkVHX1NJWkUpKQorI2RlZmluZSBQUk9CRV9DUFVfRjdfT0ZGU0VUICAoUFJPQkVfRklSU1Rf
RlBSRUdfT0ZGU0VUICsgKDcgKiBGUFJFR19TSVpFKSkKKyNkZWZpbmUgUFJPQkVfQ1BVX0Y4X09G
RlNFVCAgKFBST0JFX0ZJUlNUX0ZQUkVHX09GRlNFVCArICg4ICogRlBSRUdfU0laRSkpCisjZGVm
aW5lIFBST0JFX0NQVV9GOV9PRkZTRVQgIChQUk9CRV9GSVJTVF9GUFJFR19PRkZTRVQgKyAoOSAq
IEZQUkVHX1NJWkUpKQorI2RlZmluZSBQUk9CRV9DUFVfRjEwX09GRlNFVCAoUFJPQkVfRklSU1Rf
RlBSRUdfT0ZGU0VUICsgKDEwICogRlBSRUdfU0laRSkpCisjZGVmaW5lIFBST0JFX0NQVV9GMTFf
T0ZGU0VUIChQUk9CRV9GSVJTVF9GUFJFR19PRkZTRVQgKyAoMTEgKiBGUFJFR19TSVpFKSkKKyNk
ZWZpbmUgUFJPQkVfQ1BVX0YxMl9PRkZTRVQgKFBST0JFX0ZJUlNUX0ZQUkVHX09GRlNFVCArICgx
MiAqIEZQUkVHX1NJWkUpKQorI2RlZmluZSBQUk9CRV9DUFVfRjEzX09GRlNFVCAoUFJPQkVfRklS
U1RfRlBSRUdfT0ZGU0VUICsgKDEzICogRlBSRUdfU0laRSkpCisjZGVmaW5lIFBST0JFX0NQVV9G
MTRfT0ZGU0VUIChQUk9CRV9GSVJTVF9GUFJFR19PRkZTRVQgKyAoMTQgKiBGUFJFR19TSVpFKSkK
KyNkZWZpbmUgUFJPQkVfQ1BVX0YxNV9PRkZTRVQgKFBST0JFX0ZJUlNUX0ZQUkVHX09GRlNFVCAr
ICgxNSAqIEZQUkVHX1NJWkUpKQorI2RlZmluZSBQUk9CRV9DUFVfRjE2X09GRlNFVCAoUFJPQkVf
RklSU1RfRlBSRUdfT0ZGU0VUICsgKDE2ICogRlBSRUdfU0laRSkpCisjZGVmaW5lIFBST0JFX0NQ
VV9GMTdfT0ZGU0VUIChQUk9CRV9GSVJTVF9GUFJFR19PRkZTRVQgKyAoMTcgKiBGUFJFR19TSVpF
KSkKKyNkZWZpbmUgUFJPQkVfQ1BVX0YxOF9PRkZTRVQgKFBST0JFX0ZJUlNUX0ZQUkVHX09GRlNF
VCArICgxOCAqIEZQUkVHX1NJWkUpKQorI2RlZmluZSBQUk9CRV9DUFVfRjE5X09GRlNFVCAoUFJP
QkVfRklSU1RfRlBSRUdfT0ZGU0VUICsgKDE5ICogRlBSRUdfU0laRSkpCisjZGVmaW5lIFBST0JF
X0NQVV9GMjBfT0ZGU0VUIChQUk9CRV9GSVJTVF9GUFJFR19PRkZTRVQgKyAoMjAgKiBGUFJFR19T
SVpFKSkKKyNkZWZpbmUgUFJPQkVfQ1BVX0YyMV9PRkZTRVQgKFBST0JFX0ZJUlNUX0ZQUkVHX09G
RlNFVCArICgyMSAqIEZQUkVHX1NJWkUpKQorI2RlZmluZSBQUk9CRV9DUFVfRjIyX09GRlNFVCAo
UFJPQkVfRklSU1RfRlBSRUdfT0ZGU0VUICsgKDIyICogRlBSRUdfU0laRSkpCisjZGVmaW5lIFBS
T0JFX0NQVV9GMjNfT0ZGU0VUIChQUk9CRV9GSVJTVF9GUFJFR19PRkZTRVQgKyAoMjMgKiBGUFJF
R19TSVpFKSkKKyNkZWZpbmUgUFJPQkVfQ1BVX0YyNF9PRkZTRVQgKFBST0JFX0ZJUlNUX0ZQUkVH
X09GRlNFVCArICgyNCAqIEZQUkVHX1NJWkUpKQorI2RlZmluZSBQUk9CRV9DUFVfRjI1X09GRlNF
VCAoUFJPQkVfRklSU1RfRlBSRUdfT0ZGU0VUICsgKDI1ICogRlBSRUdfU0laRSkpCisjZGVmaW5l
IFBST0JFX0NQVV9GMjZfT0ZGU0VUIChQUk9CRV9GSVJTVF9GUFJFR19PRkZTRVQgKyAoMjYgKiBG
UFJFR19TSVpFKSkKKyNkZWZpbmUgUFJPQkVfQ1BVX0YyN19PRkZTRVQgKFBST0JFX0ZJUlNUX0ZQ
UkVHX09GRlNFVCArICgyNyAqIEZQUkVHX1NJWkUpKQorI2RlZmluZSBQUk9CRV9DUFVfRjI4X09G
RlNFVCAoUFJPQkVfRklSU1RfRlBSRUdfT0ZGU0VUICsgKDI4ICogRlBSRUdfU0laRSkpCisjZGVm
aW5lIFBST0JFX0NQVV9GMjlfT0ZGU0VUIChQUk9CRV9GSVJTVF9GUFJFR19PRkZTRVQgKyAoMjkg
KiBGUFJFR19TSVpFKSkKKyNkZWZpbmUgUFJPQkVfQ1BVX0YzMF9PRkZTRVQgKFBST0JFX0ZJUlNU
X0ZQUkVHX09GRlNFVCArICgzMCAqIEZQUkVHX1NJWkUpKQorI2RlZmluZSBQUk9CRV9DUFVfRjMx
X09GRlNFVCAoUFJPQkVfRklSU1RfRlBSRUdfT0ZGU0VUICsgKDMxICogRlBSRUdfU0laRSkpCisK
KyNkZWZpbmUgUFJPQkVfU0laRSAoUFJPQkVfRklSU1RfRlBSRUdfT0ZGU0VUICsgKDMyICogRlBS
RUdfU0laRSkpCisKKyNkZWZpbmUgU0FWRURfUFJPQkVfUkVUVVJOX1BDX09GRlNFVCAgICAgICAg
KFBST0JFX1NJWkUgKyAoMCAqIFBUUl9TSVpFKSkKKyNkZWZpbmUgUFJPQkVfU0laRV9QTFVTX0VY
VFJBUyAgICAgICAgICAgICAgKFBST0JFX1NJWkUgKyAoMiAqIFBUUl9TSVpFKSkKKworLy8gVGhl
c2UgQVNTRVJUcyByZW1pbmQgeW91IHRoYXQgaWYgeW91IGNoYW5nZSB0aGUgbGF5b3V0IG9mIFBy
b2JlOjpTdGF0ZSwKKy8vIHlvdSBuZWVkIHRvIGNoYW5nZSBjdGlNYXNtUHJvYmVUcmFtcG9saW5l
IG9mZnNldHMgYWJvdmUgdG8gbWF0Y2guCisjZGVmaW5lIFBST0JFX09GRlNFVE9GKHgpIG9mZnNl
dG9mKHN0cnVjdCBQcm9iZTo6U3RhdGUsIHgpCitzdGF0aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9G
KHByb2JlRnVuY3Rpb24pID09IFBST0JFX1BST0JFX0ZVTkNUSU9OX09GRlNFVCwgIlByb2JlOjpT
dGF0ZTo6cHJvYmVGdW5jdGlvbidzIG9mZnNldCBtYXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xp
bmUiKTsKK3N0YXRpY19hc3NlcnQoUFJPQkVfT0ZGU0VUT0YoYXJnKSA9PSBQUk9CRV9BUkdfT0ZG
U0VULCAiUHJvYmU6OlN0YXRlOjphcmcncyBvZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFt
cG9saW5lIik7CitzdGF0aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9GKGluaXRpYWxpemVTdGFja0Z1
bmN0aW9uKSA9PSBQUk9CRV9JTklUX1NUQUNLX0ZVTkNUSU9OX09GRlNFVCwgIlByb2JlOjpTdGF0
ZTo6aW5pdGlhbGl6ZVN0YWNrRnVuY3Rpb24ncyBvZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVU
cmFtcG9saW5lIik7CitzdGF0aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9GKGluaXRpYWxpemVTdGFj
a0FyZykgPT0gUFJPQkVfSU5JVF9TVEFDS19BUkdfT0ZGU0VULCAiUHJvYmU6OlN0YXRlOjppbml0
aWFsaXplU3RhY2tBcmcncyBvZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lIik7
CisKK3N0YXRpY19hc3NlcnQoIShQUk9CRV9DUFVfWlJfT0ZGU0VUICYgMHgzKSwgIlByb2JlOjpT
dGF0ZTo6Y3B1LmdwcnNbemVyb10ncyBvZmZzZXQgc2hvdWxkIGJlIDQgYnl0ZSBhbGlnbmVkIik7
CisKK3N0YXRpY19hc3NlcnQoUFJPQkVfT0ZGU0VUT0YoY3B1LmdwcnNbTUlQU1JlZ2lzdGVyczo6
emVyb10pID09IFBST0JFX0NQVV9aUl9PRkZTRVQsICJQcm9iZTo6U3RhdGU6OmNwdS5ncHJzW3pl
cm9dJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOworc3RhdGljX2Fz
c2VydChQUk9CRV9PRkZTRVRPRihjcHUuZ3Byc1tNSVBTUmVnaXN0ZXJzOjphdF0pID09IFBST0JF
X0NQVV9BVF9PRkZTRVQsICJQcm9iZTo6U3RhdGU6OmNwdS5ncHJzW2F0XSdzIG9mZnNldCBtYXRj
aGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsKK3N0YXRpY19hc3NlcnQoUFJPQkVfT0ZGU0VU
T0YoY3B1LmdwcnNbTUlQU1JlZ2lzdGVyczo6djBdKSA9PSBQUk9CRV9DUFVfVjBfT0ZGU0VULCAi
UHJvYmU6OlN0YXRlOjpjcHUuZ3Byc1t2MF0ncyBvZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVU
cmFtcG9saW5lIik7CitzdGF0aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9GKGNwdS5ncHJzW01JUFNS
ZWdpc3RlcnM6OnYxXSkgPT0gUFJPQkVfQ1BVX1YxX09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1
LmdwcnNbdjFdJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOworc3Rh
dGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihjcHUuZ3Byc1tNSVBTUmVnaXN0ZXJzOjphMF0pID09
IFBST0JFX0NQVV9BMF9PRkZTRVQsICJQcm9iZTo6U3RhdGU6OmNwdS5ncHJzW2EwXSdzIG9mZnNl
dCBtYXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsKK3N0YXRpY19hc3NlcnQoUFJPQkVf
T0ZGU0VUT0YoY3B1LmdwcnNbTUlQU1JlZ2lzdGVyczo6YTFdKSA9PSBQUk9CRV9DUFVfQTFfT0ZG
U0VULCAiUHJvYmU6OlN0YXRlOjpjcHUuZ3Byc1thMV0ncyBvZmZzZXQgbWF0Y2hlcyBjdGlNYXNt
UHJvYmVUcmFtcG9saW5lIik7CitzdGF0aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9GKGNwdS5ncHJz
W01JUFNSZWdpc3RlcnM6OmEyXSkgPT0gUFJPQkVfQ1BVX0EyX09GRlNFVCwgIlByb2JlOjpTdGF0
ZTo6Y3B1LmdwcnNbYTJdJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIp
Oworc3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihjcHUuZ3Byc1tNSVBTUmVnaXN0ZXJzOjph
M10pID09IFBST0JFX0NQVV9BM19PRkZTRVQsICJQcm9iZTo6U3RhdGU6OmNwdS5ncHJzW2EzXSdz
IG9mZnNldCBtYXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsKK3N0YXRpY19hc3NlcnQo
UFJPQkVfT0ZGU0VUT0YoY3B1LmdwcnNbTUlQU1JlZ2lzdGVyczo6dDBdKSA9PSBQUk9CRV9DUFVf
VDBfT0ZGU0VULCAiUHJvYmU6OlN0YXRlOjpjcHUuZ3Byc1t0MF0ncyBvZmZzZXQgbWF0Y2hlcyBj
dGlNYXNtUHJvYmVUcmFtcG9saW5lIik7CitzdGF0aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9GKGNw
dS5ncHJzW01JUFNSZWdpc3RlcnM6OnQxXSkgPT0gUFJPQkVfQ1BVX1QxX09GRlNFVCwgIlByb2Jl
OjpTdGF0ZTo6Y3B1LmdwcnNbdDFdJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBv
bGluZSIpOworc3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihjcHUuZ3Byc1tNSVBTUmVnaXN0
ZXJzOjp0Ml0pID09IFBST0JFX0NQVV9UMl9PRkZTRVQsICJQcm9iZTo6U3RhdGU6OmNwdS5ncHJz
W3QyXSdzIG9mZnNldCBtYXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsKK3N0YXRpY19h
c3NlcnQoUFJPQkVfT0ZGU0VUT0YoY3B1LmdwcnNbTUlQU1JlZ2lzdGVyczo6dDNdKSA9PSBQUk9C
RV9DUFVfVDNfT0ZGU0VULCAiUHJvYmU6OlN0YXRlOjpjcHUuZ3Byc1t0M10ncyBvZmZzZXQgbWF0
Y2hlcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lIik7CitzdGF0aWNfYXNzZXJ0KFBST0JFX09GRlNF
VE9GKGNwdS5ncHJzW01JUFNSZWdpc3RlcnM6OnQ0XSkgPT0gUFJPQkVfQ1BVX1Q0X09GRlNFVCwg
IlByb2JlOjpTdGF0ZTo6Y3B1LmdwcnNbdDRdJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2Jl
VHJhbXBvbGluZSIpOworc3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihjcHUuZ3Byc1tNSVBT
UmVnaXN0ZXJzOjp0NV0pID09IFBST0JFX0NQVV9UNV9PRkZTRVQsICJQcm9iZTo6U3RhdGU6OmNw
dS5ncHJzW3Q1XSdzIG9mZnNldCBtYXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsKK3N0
YXRpY19hc3NlcnQoUFJPQkVfT0ZGU0VUT0YoY3B1LmdwcnNbTUlQU1JlZ2lzdGVyczo6dDZdKSA9
PSBQUk9CRV9DUFVfVDZfT0ZGU0VULCAiUHJvYmU6OlN0YXRlOjpjcHUuZ3Byc1t0Nl0ncyBvZmZz
ZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lIik7CitzdGF0aWNfYXNzZXJ0KFBST0JF
X09GRlNFVE9GKGNwdS5ncHJzW01JUFNSZWdpc3RlcnM6OnQ3XSkgPT0gUFJPQkVfQ1BVX1Q3X09G
RlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmdwcnNbdDddJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFz
bVByb2JlVHJhbXBvbGluZSIpOworc3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihjcHUuZ3By
c1tNSVBTUmVnaXN0ZXJzOjpzMF0pID09IFBST0JFX0NQVV9TMF9PRkZTRVQsICJQcm9iZTo6U3Rh
dGU6OmNwdS5ncHJzW3MwXSdzIG9mZnNldCBtYXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUi
KTsKK3N0YXRpY19hc3NlcnQoUFJPQkVfT0ZGU0VUT0YoY3B1LmdwcnNbTUlQU1JlZ2lzdGVyczo6
czFdKSA9PSBQUk9CRV9DUFVfUzFfT0ZGU0VULCAiUHJvYmU6OlN0YXRlOjpjcHUuZ3Byc1tzMV0n
cyBvZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lIik7CitzdGF0aWNfYXNzZXJ0
KFBST0JFX09GRlNFVE9GKGNwdS5ncHJzW01JUFNSZWdpc3RlcnM6OnMyXSkgPT0gUFJPQkVfQ1BV
X1MyX09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmdwcnNbczJdJ3Mgb2Zmc2V0IG1hdGNoZXMg
Y3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOworc3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihj
cHUuZ3Byc1tNSVBTUmVnaXN0ZXJzOjpzM10pID09IFBST0JFX0NQVV9TM19PRkZTRVQsICJQcm9i
ZTo6U3RhdGU6OmNwdS5ncHJzW3MzXSdzIG9mZnNldCBtYXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1w
b2xpbmUiKTsKK3N0YXRpY19hc3NlcnQoUFJPQkVfT0ZGU0VUT0YoY3B1LmdwcnNbTUlQU1JlZ2lz
dGVyczo6czRdKSA9PSBQUk9CRV9DUFVfUzRfT0ZGU0VULCAiUHJvYmU6OlN0YXRlOjpjcHUuZ3By
c1tzNF0ncyBvZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lIik7CitzdGF0aWNf
YXNzZXJ0KFBST0JFX09GRlNFVE9GKGNwdS5ncHJzW01JUFNSZWdpc3RlcnM6OnM1XSkgPT0gUFJP
QkVfQ1BVX1M1X09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmdwcnNbczVdJ3Mgb2Zmc2V0IG1h
dGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOworc3RhdGljX2Fzc2VydChQUk9CRV9PRkZT
RVRPRihjcHUuZ3Byc1tNSVBTUmVnaXN0ZXJzOjpzNl0pID09IFBST0JFX0NQVV9TNl9PRkZTRVQs
ICJQcm9iZTo6U3RhdGU6OmNwdS5ncHJzW3M2XSdzIG9mZnNldCBtYXRjaGVzIGN0aU1hc21Qcm9i
ZVRyYW1wb2xpbmUiKTsKK3N0YXRpY19hc3NlcnQoUFJPQkVfT0ZGU0VUT0YoY3B1LmdwcnNbTUlQ
U1JlZ2lzdGVyczo6czddKSA9PSBQUk9CRV9DUFVfUzdfT0ZGU0VULCAiUHJvYmU6OlN0YXRlOjpj
cHUuZ3Byc1tzN10ncyBvZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lIik7Citz
dGF0aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9GKGNwdS5ncHJzW01JUFNSZWdpc3RlcnM6OnQ4XSkg
PT0gUFJPQkVfQ1BVX1Q4X09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmdwcnNbdDhdJ3Mgb2Zm
c2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOworc3RhdGljX2Fzc2VydChQUk9C
RV9PRkZTRVRPRihjcHUuZ3Byc1tNSVBTUmVnaXN0ZXJzOjp0OV0pID09IFBST0JFX0NQVV9UOV9P
RkZTRVQsICJQcm9iZTo6U3RhdGU6OmNwdS5ncHJzW3Q5XSdzIG9mZnNldCBtYXRjaGVzIGN0aU1h
c21Qcm9iZVRyYW1wb2xpbmUiKTsKK3N0YXRpY19hc3NlcnQoUFJPQkVfT0ZGU0VUT0YoY3B1Lmdw
cnNbTUlQU1JlZ2lzdGVyczo6azBdKSA9PSBQUk9CRV9DUFVfSzBfT0ZGU0VULCAiUHJvYmU6OlN0
YXRlOjpjcHUuZ3Byc1trMF0ncyBvZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5l
Iik7CitzdGF0aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9GKGNwdS5ncHJzW01JUFNSZWdpc3RlcnM6
OmsxXSkgPT0gUFJPQkVfQ1BVX0sxX09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmdwcnNbazFd
J3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOworc3RhdGljX2Fzc2Vy
dChQUk9CRV9PRkZTRVRPRihjcHUuZ3Byc1tNSVBTUmVnaXN0ZXJzOjpncF0pID09IFBST0JFX0NQ
VV9HUF9PRkZTRVQsICJQcm9iZTo6U3RhdGU6OmNwdS5ncHJzW2dwXSdzIG9mZnNldCBtYXRjaGVz
IGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsKK3N0YXRpY19hc3NlcnQoUFJPQkVfT0ZGU0VUT0Yo
Y3B1LmdwcnNbTUlQU1JlZ2lzdGVyczo6c3BdKSA9PSBQUk9CRV9DUFVfU1BfT0ZGU0VULCAiUHJv
YmU6OlN0YXRlOjpjcHUuZ3Byc1tzcF0ncyBvZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFt
cG9saW5lIik7CitzdGF0aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9GKGNwdS5ncHJzW01JUFNSZWdp
c3RlcnM6OmZwXSkgPT0gUFJPQkVfQ1BVX0ZQX09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1Lmdw
cnNbZnBdJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOworc3RhdGlj
X2Fzc2VydChQUk9CRV9PRkZTRVRPRihjcHUuZ3Byc1tNSVBTUmVnaXN0ZXJzOjpyYV0pID09IFBS
T0JFX0NQVV9SQV9PRkZTRVQsICJQcm9iZTo6U3RhdGU6OmNwdS5ncHJzW3JhXSdzIG9mZnNldCBt
YXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsKKworc3RhdGljX2Fzc2VydChQUk9CRV9P
RkZTRVRPRihjcHUuc3Byc1tNSVBTUmVnaXN0ZXJzOjpwY10pID09IFBST0JFX0NQVV9QQ19PRkZT
RVQsICJQcm9iZTo6U3RhdGU6OmNwdS5zcHJzW3BjXSdzIG9mZnNldCBtYXRjaGVzIGN0aU1hc21Q
cm9iZVRyYW1wb2xpbmUiKTsKKworc3RhdGljX2Fzc2VydCghKFBST0JFX0NQVV9GMF9PRkZTRVQg
JiAweDcpLCAiUHJvYmU6OlN0YXRlOjpjcHUuZnByc1tmMF0ncyBvZmZzZXQgc2hvdWxkIGJlIDgg
Ynl0ZSBhbGlnbmVkIik7CisKK3N0YXRpY19hc3NlcnQoUFJPQkVfT0ZGU0VUT0YoY3B1LmZwcnNb
TUlQU1JlZ2lzdGVyczo6ZjBdKSAgPT0gUFJPQkVfQ1BVX0YwX09GRlNFVCwgICJQcm9iZTo6U3Rh
dGU6OmNwdS5mcHJzW2YwXSdzIG9mZnNldCBtYXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUi
KTsKK3N0YXRpY19hc3NlcnQoUFJPQkVfT0ZGU0VUT0YoY3B1LmZwcnNbTUlQU1JlZ2lzdGVyczo6
ZjFdKSAgPT0gUFJPQkVfQ1BVX0YxX09GRlNFVCwgICJQcm9iZTo6U3RhdGU6OmNwdS5mcHJzW2Yx
XSdzIG9mZnNldCBtYXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsKK3N0YXRpY19hc3Nl
cnQoUFJPQkVfT0ZGU0VUT0YoY3B1LmZwcnNbTUlQU1JlZ2lzdGVyczo6ZjJdKSAgPT0gUFJPQkVf
Q1BVX0YyX09GRlNFVCwgICJQcm9iZTo6U3RhdGU6OmNwdS5mcHJzW2YyXSdzIG9mZnNldCBtYXRj
aGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsKK3N0YXRpY19hc3NlcnQoUFJPQkVfT0ZGU0VU
T0YoY3B1LmZwcnNbTUlQU1JlZ2lzdGVyczo6ZjNdKSAgPT0gUFJPQkVfQ1BVX0YzX09GRlNFVCwg
ICJQcm9iZTo6U3RhdGU6OmNwdS5mcHJzW2YzXSdzIG9mZnNldCBtYXRjaGVzIGN0aU1hc21Qcm9i
ZVRyYW1wb2xpbmUiKTsKK3N0YXRpY19hc3NlcnQoUFJPQkVfT0ZGU0VUT0YoY3B1LmZwcnNbTUlQ
U1JlZ2lzdGVyczo6ZjRdKSAgPT0gUFJPQkVfQ1BVX0Y0X09GRlNFVCwgICJQcm9iZTo6U3RhdGU6
OmNwdS5mcHJzW2Y0XSdzIG9mZnNldCBtYXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsK
K3N0YXRpY19hc3NlcnQoUFJPQkVfT0ZGU0VUT0YoY3B1LmZwcnNbTUlQU1JlZ2lzdGVyczo6ZjVd
KSAgPT0gUFJPQkVfQ1BVX0Y1X09GRlNFVCwgICJQcm9iZTo6U3RhdGU6OmNwdS5mcHJzW2Y1XSdz
IG9mZnNldCBtYXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsKK3N0YXRpY19hc3NlcnQo
UFJPQkVfT0ZGU0VUT0YoY3B1LmZwcnNbTUlQU1JlZ2lzdGVyczo6ZjZdKSAgPT0gUFJPQkVfQ1BV
X0Y2X09GRlNFVCwgICJQcm9iZTo6U3RhdGU6OmNwdS5mcHJzW2Y2XSdzIG9mZnNldCBtYXRjaGVz
IGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsKK3N0YXRpY19hc3NlcnQoUFJPQkVfT0ZGU0VUT0Yo
Y3B1LmZwcnNbTUlQU1JlZ2lzdGVyczo6ZjddKSAgPT0gUFJPQkVfQ1BVX0Y3X09GRlNFVCwgICJQ
cm9iZTo6U3RhdGU6OmNwdS5mcHJzW2Y3XSdzIG9mZnNldCBtYXRjaGVzIGN0aU1hc21Qcm9iZVRy
YW1wb2xpbmUiKTsKK3N0YXRpY19hc3NlcnQoUFJPQkVfT0ZGU0VUT0YoY3B1LmZwcnNbTUlQU1Jl
Z2lzdGVyczo6ZjhdKSAgPT0gUFJPQkVfQ1BVX0Y4X09GRlNFVCwgICJQcm9iZTo6U3RhdGU6OmNw
dS5mcHJzW2Y4XSdzIG9mZnNldCBtYXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsKK3N0
YXRpY19hc3NlcnQoUFJPQkVfT0ZGU0VUT0YoY3B1LmZwcnNbTUlQU1JlZ2lzdGVyczo6ZjldKSAg
PT0gUFJPQkVfQ1BVX0Y5X09GRlNFVCwgICJQcm9iZTo6U3RhdGU6OmNwdS5mcHJzW2Y5XSdzIG9m
ZnNldCBtYXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsKK3N0YXRpY19hc3NlcnQoUFJP
QkVfT0ZGU0VUT0YoY3B1LmZwcnNbTUlQU1JlZ2lzdGVyczo6ZjEwXSkgPT0gUFJPQkVfQ1BVX0Yx
MF9PRkZTRVQsICJQcm9iZTo6U3RhdGU6OmNwdS5mcHJzW2YxMF0ncyBvZmZzZXQgbWF0Y2hlcyBj
dGlNYXNtUHJvYmVUcmFtcG9saW5lIik7CitzdGF0aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9GKGNw
dS5mcHJzW01JUFNSZWdpc3RlcnM6OmYxMV0pID09IFBST0JFX0NQVV9GMTFfT0ZGU0VULCAiUHJv
YmU6OlN0YXRlOjpjcHUuZnByc1tmMTFdJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJh
bXBvbGluZSIpOworc3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihjcHUuZnByc1tNSVBTUmVn
aXN0ZXJzOjpmMTJdKSA9PSBQUk9CRV9DUFVfRjEyX09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1
LmZwcnNbZjEyXSdzIG9mZnNldCBtYXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsKK3N0
YXRpY19hc3NlcnQoUFJPQkVfT0ZGU0VUT0YoY3B1LmZwcnNbTUlQU1JlZ2lzdGVyczo6ZjEzXSkg
PT0gUFJPQkVfQ1BVX0YxM19PRkZTRVQsICJQcm9iZTo6U3RhdGU6OmNwdS5mcHJzW2YxM10ncyBv
ZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lIik7CitzdGF0aWNfYXNzZXJ0KFBS
T0JFX09GRlNFVE9GKGNwdS5mcHJzW01JUFNSZWdpc3RlcnM6OmYxNF0pID09IFBST0JFX0NQVV9G
MTRfT0ZGU0VULCAiUHJvYmU6OlN0YXRlOjpjcHUuZnByc1tmMTRdJ3Mgb2Zmc2V0IG1hdGNoZXMg
Y3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOworc3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihj
cHUuZnByc1tNSVBTUmVnaXN0ZXJzOjpmMTVdKSA9PSBQUk9CRV9DUFVfRjE1X09GRlNFVCwgIlBy
b2JlOjpTdGF0ZTo6Y3B1LmZwcnNbZjE1XSdzIG9mZnNldCBtYXRjaGVzIGN0aU1hc21Qcm9iZVRy
YW1wb2xpbmUiKTsKK3N0YXRpY19hc3NlcnQoUFJPQkVfT0ZGU0VUT0YoY3B1LmZwcnNbTUlQU1Jl
Z2lzdGVyczo6ZjE2XSkgPT0gUFJPQkVfQ1BVX0YxNl9PRkZTRVQsICJQcm9iZTo6U3RhdGU6OmNw
dS5mcHJzW2YxNl0ncyBvZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lIik7Citz
dGF0aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9GKGNwdS5mcHJzW01JUFNSZWdpc3RlcnM6OmYxN10p
ID09IFBST0JFX0NQVV9GMTdfT0ZGU0VULCAiUHJvYmU6OlN0YXRlOjpjcHUuZnByc1tmMTddJ3Mg
b2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOworc3RhdGljX2Fzc2VydChQ
Uk9CRV9PRkZTRVRPRihjcHUuZnByc1tNSVBTUmVnaXN0ZXJzOjpmMThdKSA9PSBQUk9CRV9DUFVf
RjE4X09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmZwcnNbZjE4XSdzIG9mZnNldCBtYXRjaGVz
IGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsKK3N0YXRpY19hc3NlcnQoUFJPQkVfT0ZGU0VUT0Yo
Y3B1LmZwcnNbTUlQU1JlZ2lzdGVyczo6ZjE5XSkgPT0gUFJPQkVfQ1BVX0YxOV9PRkZTRVQsICJQ
cm9iZTo6U3RhdGU6OmNwdS5mcHJzW2YxOV0ncyBvZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVU
cmFtcG9saW5lIik7CitzdGF0aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9GKGNwdS5mcHJzW01JUFNS
ZWdpc3RlcnM6OmYyMF0pID09IFBST0JFX0NQVV9GMjBfT0ZGU0VULCAiUHJvYmU6OlN0YXRlOjpj
cHUuZnByc1tmMjBdJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOwor
c3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihjcHUuZnByc1tNSVBTUmVnaXN0ZXJzOjpmMjFd
KSA9PSBQUk9CRV9DUFVfRjIxX09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmZwcnNbZjIxXSdz
IG9mZnNldCBtYXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsKK3N0YXRpY19hc3NlcnQo
UFJPQkVfT0ZGU0VUT0YoY3B1LmZwcnNbTUlQU1JlZ2lzdGVyczo6ZjIyXSkgPT0gUFJPQkVfQ1BV
X0YyMl9PRkZTRVQsICJQcm9iZTo6U3RhdGU6OmNwdS5mcHJzW2YyMl0ncyBvZmZzZXQgbWF0Y2hl
cyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lIik7CitzdGF0aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9G
KGNwdS5mcHJzW01JUFNSZWdpc3RlcnM6OmYyM10pID09IFBST0JFX0NQVV9GMjNfT0ZGU0VULCAi
UHJvYmU6OlN0YXRlOjpjcHUuZnByc1tmMjNdJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2Jl
VHJhbXBvbGluZSIpOworc3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihjcHUuZnByc1tNSVBT
UmVnaXN0ZXJzOjpmMjRdKSA9PSBQUk9CRV9DUFVfRjI0X09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6
Y3B1LmZwcnNbZjI0XSdzIG9mZnNldCBtYXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsK
K3N0YXRpY19hc3NlcnQoUFJPQkVfT0ZGU0VUT0YoY3B1LmZwcnNbTUlQU1JlZ2lzdGVyczo6ZjI1
XSkgPT0gUFJPQkVfQ1BVX0YyNV9PRkZTRVQsICJQcm9iZTo6U3RhdGU6OmNwdS5mcHJzW2YyNV0n
cyBvZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lIik7CitzdGF0aWNfYXNzZXJ0
KFBST0JFX09GRlNFVE9GKGNwdS5mcHJzW01JUFNSZWdpc3RlcnM6OmYyNl0pID09IFBST0JFX0NQ
VV9GMjZfT0ZGU0VULCAiUHJvYmU6OlN0YXRlOjpjcHUuZnByc1tmMjZdJ3Mgb2Zmc2V0IG1hdGNo
ZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOworc3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRP
RihjcHUuZnByc1tNSVBTUmVnaXN0ZXJzOjpmMjddKSA9PSBQUk9CRV9DUFVfRjI3X09GRlNFVCwg
IlByb2JlOjpTdGF0ZTo6Y3B1LmZwcnNbZjI3XSdzIG9mZnNldCBtYXRjaGVzIGN0aU1hc21Qcm9i
ZVRyYW1wb2xpbmUiKTsKK3N0YXRpY19hc3NlcnQoUFJPQkVfT0ZGU0VUT0YoY3B1LmZwcnNbTUlQ
U1JlZ2lzdGVyczo6ZjI4XSkgPT0gUFJPQkVfQ1BVX0YyOF9PRkZTRVQsICJQcm9iZTo6U3RhdGU6
OmNwdS5mcHJzW2YyOF0ncyBvZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lIik7
CitzdGF0aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9GKGNwdS5mcHJzW01JUFNSZWdpc3RlcnM6OmYy
OV0pID09IFBST0JFX0NQVV9GMjlfT0ZGU0VULCAiUHJvYmU6OlN0YXRlOjpjcHUuZnByc1tmMjld
J3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOworc3RhdGljX2Fzc2Vy
dChQUk9CRV9PRkZTRVRPRihjcHUuZnByc1tNSVBTUmVnaXN0ZXJzOjpmMzBdKSA9PSBQUk9CRV9D
UFVfRjMwX09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmZwcnNbZjMwXSdzIG9mZnNldCBtYXRj
aGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsKK3N0YXRpY19hc3NlcnQoUFJPQkVfT0ZGU0VU
T0YoY3B1LmZwcnNbTUlQU1JlZ2lzdGVyczo6ZjMxXSkgPT0gUFJPQkVfQ1BVX0YzMV9PRkZTRVQs
ICJQcm9iZTo6U3RhdGU6OmNwdS5mcHJzW2YzMV0ncyBvZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJv
YmVUcmFtcG9saW5lIik7CisKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKFByb2JlOjpTdGF0ZSkgPT0g
UFJPQkVfU0laRSwgIlByb2JlOjpTdGF0ZSdzIHNpemUgbWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFt
cG9saW5lIik7CisjdW5kZWYgUFJPQkVfT0ZGU0VUT0YKKworc3RydWN0IEluY29taW5nUmVjb3Jk
IHsKKyAgICB1aW50cHRyX3QgYTA7CisgICAgdWludHB0cl90IGExOworICAgIHVpbnRwdHJfdCBh
MjsKKyAgICB1aW50cHRyX3QgczA7CisgICAgdWludHB0cl90IHMxOworICAgIHVpbnRwdHJfdCBy
YTsKK307CisKKyNkZWZpbmUgSU5fQTBfT0ZGU0VUICgwICogUFRSX1NJWkUpCisjZGVmaW5lIElO
X0ExX09GRlNFVCAoMSAqIFBUUl9TSVpFKQorI2RlZmluZSBJTl9BMl9PRkZTRVQgKDIgKiBQVFJf
U0laRSkKKyNkZWZpbmUgSU5fUzBfT0ZGU0VUICgzICogUFRSX1NJWkUpCisjZGVmaW5lIElOX1Mx
X09GRlNFVCAoNCAqIFBUUl9TSVpFKQorI2RlZmluZSBJTl9SQV9PRkZTRVQgKDUgKiBQVFJfU0la
RSkKKyNkZWZpbmUgSU5fU0laRSAgICAgICg2ICogUFRSX1NJWkUpCisKK3N0YXRpY19hc3NlcnQo
SU5fQTBfT0ZGU0VUID09IG9mZnNldG9mKEluY29taW5nUmVjb3JkLCBhMCksICJJTl9BMF9PRkZT
RVQgaXMgaW5jb3JyZWN0Iik7CitzdGF0aWNfYXNzZXJ0KElOX0ExX09GRlNFVCA9PSBvZmZzZXRv
ZihJbmNvbWluZ1JlY29yZCwgYTEpLCAiSU5fQTFfT0ZGU0VUIGlzIGluY29ycmVjdCIpOworc3Rh
dGljX2Fzc2VydChJTl9BMl9PRkZTRVQgPT0gb2Zmc2V0b2YoSW5jb21pbmdSZWNvcmQsIGEyKSwg
IklOX0EyX09GRlNFVCBpcyBpbmNvcnJlY3QiKTsKK3N0YXRpY19hc3NlcnQoSU5fUzBfT0ZGU0VU
ID09IG9mZnNldG9mKEluY29taW5nUmVjb3JkLCBzMCksICJJTl9TMF9PRkZTRVQgaXMgaW5jb3Jy
ZWN0Iik7CitzdGF0aWNfYXNzZXJ0KElOX1MxX09GRlNFVCA9PSBvZmZzZXRvZihJbmNvbWluZ1Jl
Y29yZCwgczEpLCAiSU5fUzFfT0ZGU0VUIGlzIGluY29ycmVjdCIpOworc3RhdGljX2Fzc2VydChJ
Tl9SQV9PRkZTRVQgPT0gb2Zmc2V0b2YoSW5jb21pbmdSZWNvcmQsIHJhKSwgIklOX1JBX09GRlNF
VCBpcyBpbmNvcnJlY3QiKTsKK3N0YXRpY19hc3NlcnQoSU5fU0laRSA9PSBzaXplb2YoSW5jb21p
bmdSZWNvcmQpLCAiSU5fU0laRSBpcyBpbmNvcnJlY3QiKTsKKworc3RydWN0IE91dGdvaW5nUmVj
b3JkIHsKKyAgICB1aW50cHRyX3QgZnA7CisgICAgdWludHB0cl90IHJhOworfTsKKworI2RlZmlu
ZSBPVVRfRlBfT0ZGU0VUICgwICogUFRSX1NJWkUpCisjZGVmaW5lIE9VVF9SQV9PRkZTRVQgKDEg
KiBQVFJfU0laRSkKKyNkZWZpbmUgT1VUX1NJWkUgICAgICAoMiAqIFBUUl9TSVpFKQorCitzdGF0
aWNfYXNzZXJ0KE9VVF9GUF9PRkZTRVQgPT0gb2Zmc2V0b2YoT3V0Z29pbmdSZWNvcmQsIGZwKSwg
Ik9VVF9GUF9PRkZTRVQgaXMgaW5jb3JyZWN0Iik7CitzdGF0aWNfYXNzZXJ0KE9VVF9SQV9PRkZT
RVQgPT0gb2Zmc2V0b2YoT3V0Z29pbmdSZWNvcmQsIHJhKSwgIk9VVF9SQV9PRkZTRVQgaXMgaW5j
b3JyZWN0Iik7CitzdGF0aWNfYXNzZXJ0KE9VVF9TSVpFID09IHNpemVvZihPdXRnb2luZ1JlY29y
ZCksICJPVVRfU0laRSBpcyBpbmNvcnJlY3QiKTsKKworc3RydWN0IFJBUmVzdG9yYXRpb25SZWNv
cmQgeworICAgIHVpbnRwdHJfdCByYTsKKyAgICB1aW50cHRyX3QgcGFkZGluZzsKK307CisKKyNk
ZWZpbmUgUkFfUkVTVE9SQVRJT05fUkFfT0ZGU0VUICgwICogUFRSX1NJWkUpCisjZGVmaW5lIFJB
X1JFU1RPUkFUSU9OX1NJWkUgICAgICAoMiAqIFBUUl9TSVpFKQorCitzdGF0aWNfYXNzZXJ0KFJB
X1JFU1RPUkFUSU9OX1JBX09GRlNFVCA9PSBvZmZzZXRvZihSQVJlc3RvcmF0aW9uUmVjb3JkLCBy
YSksICJSQV9SRVNUT1JBVElPTl9SQV9PRkZTRVQgaXMgaW5jb3JyZWN0Iik7CitzdGF0aWNfYXNz
ZXJ0KFJBX1JFU1RPUkFUSU9OX1NJWkUgPT0gc2l6ZW9mKFJBUmVzdG9yYXRpb25SZWNvcmQpLCAi
UkFfUkVTVE9SQVRJT05fU0laRSBpcyBpbmNvcnJlY3QiKTsKK3N0YXRpY19hc3NlcnQoIShzaXpl
b2YoUkFSZXN0b3JhdGlvblJlY29yZCkgJiAweDcpLCAiTFJSZXN0b3JhdGlvblJlY29yZCBtdXN0
IGJlIDgtYnl0ZSBhbGlnbmVkIik7CisKK2FzbSAoCisgICAgIi50ZXh0IiAiXG4iCisgICAgIi5n
bG9ibCAiIFNZTUJPTF9TVFJJTkcoY3RpTWFzbVByb2JlVHJhbXBvbGluZSkgIlxuIgorICAgIEhJ
REVfU1lNQk9MKGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUpICJcbiIKKyAgICBTWU1CT0xfU1RSSU5H
KGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUpICI6IiAiXG4iCisgICAgIi5zZXQgcHVzaCIgIlxuIgor
ICAgICIuc2V0IG5vcmVvcmRlciIgIlxuIgorICAgICIuc2V0IG5vYXQiICJcbiIKKworICAgIC8v
IE1hY3JvQXNzZW1ibGVyTUlQUzo6cHJvYmUoKSBoYXMgYWxyZWFkeSBnZW5lcmF0ZWQgY29kZSB0
byBzdG9yZSBzb21lIHZhbHVlcyBpbiBhbgorICAgIC8vIEluY29taW5nUHJvYmVSZWNvcmQuIHNw
IHBvaW50cyB0byB0aGUgSW5jb21pbmdQcm9iZVJlY29yZC4KKyAgICAvLworICAgIC8vIEluY29t
aW5nIHJlZ2lzdGVyIHZhbHVlczoKKyAgICAvLyAgICAgYTA6IHByb2JlIGZ1bmN0aW9uCisgICAg
Ly8gICAgIGExOiBwcm9iZSBhcmcKKyAgICAvLyAgICAgYTI6IFByb2JlOjpleGVjdXRlUHJvYmUK
KyAgICAvLyAgICAgczA6IHNjcmF0Y2gsIHdhcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lCisgICAg
Ly8gICAgIHMxOiBzY3JhdGNoCisgICAgLy8gICAgIHJhOiByZXR1cm4gYWRkcmVzcworCisgICAg
Im1vdmUgICAgICAkczAsICRzcCIgIlxuIgorICAgICJhZGRpdSAgICAgJHNwLCAkc3AsIC0iIFNU
UklOR0laRV9WQUxVRV9PRigoUFJPQkVfU0laRV9QTFVTX0VYVFJBUyArIE9VVF9TSVpFKSkgIlxu
IiAvLyBTZXQgdGhlIHNwIHRvIHByb3RlY3QgdGhlIFByb2JlOjpTdGF0ZSBmcm9tIGludGVycnVw
dHMgYmVmb3JlIHdlIGluaXRpYWxpemUgaXQuCisgICAgIm1vdmUgICAgICAkczEsICRzcCIgIlxu
IgorCisgICAgInN3ICAgICAgICAkYTAsICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX1BST0JF
X0ZVTkNUSU9OX09GRlNFVCkgIigkc3ApIiAiXG4iIC8vIFN0b3JlIHRoZSBwcm9iZSBoYW5kbGVy
IGZ1bmN0aW9uIChwcmVsb2FkZWQgaW50byBhMCkKKyAgICAic3cgICAgICAgICRhMSwgIiBTVFJJ
TkdJWkVfVkFMVUVfT0YoUFJPQkVfQVJHX09GRlNFVCkgIigkc3ApIiAiXG4iICAgICAgICAgICAg
Ly8gU3RvcmUgdGhlIHByb2JlIGhhbmRsZXIgYXJnIChwcmVsb2FkZWQgaW50byBhMSkKKworICAg
ICJzdyAgICAgICAgJGF0LCAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfQVRfT0ZGU0VU
KSAiKCRzcCkiICJcbiIKKyAgICAic3cgICAgICAgICR2MCwgIiBTVFJJTkdJWkVfVkFMVUVfT0Yo
UFJPQkVfQ1BVX1YwX09GRlNFVCkgIigkc3ApIiAiXG4iCisgICAgInN3ICAgICAgICAkdjEsICIg
U1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9WMV9PRkZTRVQpICIoJHNwKSIgIlxuIgorCisg
ICAgImx3ICAgICAgICAkdjAsICIgU1RSSU5HSVpFX1ZBTFVFX09GKElOX0EwX09GRlNFVCkgIigk
czApIiAiXG4iIC8vIExvYWQgc2F2ZWQgYTAKKyAgICAibHcgICAgICAgICR2MSwgIiBTVFJJTkdJ
WkVfVkFMVUVfT0YoSU5fQTFfT0ZGU0VUKSAiKCRzMCkiICJcbiIgLy8gTG9hZCBzYXZlZCBhMQor
ICAgICJsdyAgICAgICAgJGF0LCAiIFNUUklOR0laRV9WQUxVRV9PRihJTl9BMl9PRkZTRVQpICIo
JHMwKSIgIlxuIiAvLyBMb2FkIHNhdmVkIGEyCisgICAgInN3ICAgICAgICAkdjAsICIgU1RSSU5H
SVpFX1ZBTFVFX09GKFBST0JFX0NQVV9BMF9PRkZTRVQpICIoJHNwKSIgIlxuIiAvLyBTdG9yZSBz
YXZlZCBhMAorICAgICJzdyAgICAgICAgJHYxLCAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9D
UFVfQTFfT0ZGU0VUKSAiKCRzcCkiICJcbiIgLy8gU3RvcmUgc2F2ZWQgYTEKKyAgICAic3cgICAg
ICAgICRhdCwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX0EyX09GRlNFVCkgIigkc3Ap
IiAiXG4iIC8vIFN0b3JlIHNhdmVkIGEyCisKKyAgICAic3cgICAgICAgICRhMywgIiBTVFJJTkdJ
WkVfVkFMVUVfT0YoUFJPQkVfQ1BVX0EzX09GRlNFVCkgIigkc3ApIiAiXG4iCisgICAgInN3ICAg
ICAgICAkdDAsICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9UMF9PRkZTRVQpICIoJHNw
KSIgIlxuIgorICAgICJzdyAgICAgICAgJHQxLCAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9D
UFVfVDFfT0ZGU0VUKSAiKCRzcCkiICJcbiIKKyAgICAic3cgICAgICAgICR0MiwgIiBTVFJJTkdJ
WkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1QyX09GRlNFVCkgIigkc3ApIiAiXG4iCisgICAgInN3ICAg
ICAgICAkdDMsICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9UM19PRkZTRVQpICIoJHNw
KSIgIlxuIgorICAgICJzdyAgICAgICAgJHQ0LCAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9D
UFVfVDRfT0ZGU0VUKSAiKCRzcCkiICJcbiIKKyAgICAic3cgICAgICAgICR0NSwgIiBTVFJJTkdJ
WkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1Q1X09GRlNFVCkgIigkc3ApIiAiXG4iCisgICAgInN3ICAg
ICAgICAkdDYsICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9UNl9PRkZTRVQpICIoJHNw
KSIgIlxuIgorICAgICJzdyAgICAgICAgJHQ3LCAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9D
UFVfVDdfT0ZGU0VUKSAiKCRzcCkiICJcbiIKKworICAgICJsdyAgICAgICAgJHYwLCAiIFNUUklO
R0laRV9WQUxVRV9PRihJTl9TMF9PRkZTRVQpICIoJHMwKSIgIlxuIiAvLyBMb2FkIHNhdmVkIHMw
CisgICAgImx3ICAgICAgICAkdjEsICIgU1RSSU5HSVpFX1ZBTFVFX09GKElOX1MxX09GRlNFVCkg
IigkczApIiAiXG4iIC8vIExvYWQgc2F2ZWQgczEKKyAgICAic3cgICAgICAgICR2MCwgIiBTVFJJ
TkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1MwX09GRlNFVCkgIigkc3ApIiAiXG4iIC8vIFN0b3Jl
IHNhdmVkIHMwCisgICAgInN3ICAgICAgICAkdjEsICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JF
X0NQVV9TMV9PRkZTRVQpICIoJHNwKSIgIlxuIiAvLyBTdG9yZSBzYXZlZCBzMQorCisgICAgInN3
ICAgICAgICAkczIsICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9TMl9PRkZTRVQpICIo
JHNwKSIgIlxuIgorICAgICJzdyAgICAgICAgJHMzLCAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9C
RV9DUFVfUzNfT0ZGU0VUKSAiKCRzcCkiICJcbiIKKyAgICAic3cgICAgICAgICRzNCwgIiBTVFJJ
TkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1M0X09GRlNFVCkgIigkc3ApIiAiXG4iCisgICAgInN3
ICAgICAgICAkczUsICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9TNV9PRkZTRVQpICIo
JHNwKSIgIlxuIgorICAgICJzdyAgICAgICAgJHM2LCAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9C
RV9DUFVfUzZfT0ZGU0VUKSAiKCRzcCkiICJcbiIKKyAgICAic3cgICAgICAgICRzNywgIiBTVFJJ
TkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1M3X09GRlNFVCkgIigkc3ApIiAiXG4iCisgICAgInN3
ICAgICAgICAkdDgsICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9UOF9PRkZTRVQpICIo
JHNwKSIgIlxuIgorICAgICJzdyAgICAgICAgJHQ5LCAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9C
RV9DUFVfVDlfT0ZGU0VUKSAiKCRzcCkiICJcbiIKKyAgICAic3cgICAgICAgICRrMCwgIiBTVFJJ
TkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX0swX09GRlNFVCkgIigkc3ApIiAiXG4iCisgICAgInN3
ICAgICAgICAkazEsICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9LMV9PRkZTRVQpICIo
JHNwKSIgIlxuIgorICAgICJzdyAgICAgICAgJGdwLCAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9C
RV9DUFVfR1BfT0ZGU0VUKSAiKCRzcCkiICJcbiIKKyAgICAic3cgICAgICAgICRmcCwgIiBTVFJJ
TkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX0ZQX09GRlNFVCkgIigkc3ApIiAiXG4iCisKKyAgICAi
bHcgICAgICAgICR2MCwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoSU5fUkFfT0ZGU0VUKSAiKCRzMCki
ICJcbiIgLy8gTG9hZCBzYXZlZCByYQorICAgICJhZGRpdSAgICAgJHMwLCAkczAsICIgU1RSSU5H
SVpFX1ZBTFVFX09GKElOX1NJWkUpICJcbiIgLy8gQ29tcHV0ZSB0aGUgc3AgYmVmb3JlIHRoZSBw
cm9iZQorICAgICJzdyAgICAgICAgJHYwLCAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVf
UkFfT0ZGU0VUKSAiKCRzcCkiICJcbiIgLy8gU3RvcmUgc2F2ZWQgcmEKKyAgICAic3cgICAgICAg
ICRzMCwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1NQX09GRlNFVCkgIigkc3ApIiAi
XG4iIC8vIFN0b3JlIG9yaWdpbmFsIHNwIGNvbXB1dGVkIGludG8gczAKKworICAgICJzdyAgICAg
ICAgJHJhLCAiIFNUUklOR0laRV9WQUxVRV9PRihTQVZFRF9QUk9CRV9SRVRVUk5fUENfT0ZGU0VU
KSAiKCRzcCkiICJcbiIgLy8gU2F2ZSBhIGR1cGxpY2F0ZSBjb3B5IG9mIHJldHVybiBwYyAoaW4g
cmEpCisgICAgImFkZGl1ICAgICAkcmEsICRyYSwgMio0IiAiXG4iIC8vIFRoZSBQQyBhZnRlciB0
aGUgcHJvYmUgaXMgYXQgMiBpbnN0cnVjdGlvbnMgcGFzdCB0aGUgcmV0dXJuIHBvaW50LgorICAg
ICJzdyAgICAgICAgJHJhLCAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfUENfT0ZGU0VU
KSAiKCRzcCkiICJcbiIKKworICAgICJzZGMxICAgICAgJGYwLCAgIiBTVFJJTkdJWkVfVkFMVUVf
T0YoUFJPQkVfQ1BVX0YwX09GRlNFVCkgIigkc3ApIiAiXG4iCisgICAgInNkYzEgICAgICAkZjIs
ICAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfRjJfT0ZGU0VUKSAiKCRzcCkiICJcbiIK
KyAgICAic2RjMSAgICAgICRmNCwgICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9GNF9P
RkZTRVQpICIoJHNwKSIgIlxuIgorICAgICJzZGMxICAgICAgJGY2LCAgIiBTVFJJTkdJWkVfVkFM
VUVfT0YoUFJPQkVfQ1BVX0Y2X09GRlNFVCkgIigkc3ApIiAiXG4iCisgICAgInNkYzEgICAgICAk
ZjgsICAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfRjhfT0ZGU0VUKSAiKCRzcCkiICJc
biIKKyAgICAic2RjMSAgICAgICRmMTAsICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9G
MTBfT0ZGU0VUKSAiKCRzcCkiICJcbiIKKyAgICAic2RjMSAgICAgICRmMTIsICIgU1RSSU5HSVpF
X1ZBTFVFX09GKFBST0JFX0NQVV9GMTJfT0ZGU0VUKSAiKCRzcCkiICJcbiIKKyAgICAic2RjMSAg
ICAgICRmMTQsICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9GMTRfT0ZGU0VUKSAiKCRz
cCkiICJcbiIKKyAgICAic2RjMSAgICAgICRmMTYsICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JF
X0NQVV9GMTZfT0ZGU0VUKSAiKCRzcCkiICJcbiIKKyAgICAic2RjMSAgICAgICRmMTgsICIgU1RS
SU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9GMThfT0ZGU0VUKSAiKCRzcCkiICJcbiIKKyAgICAi
c2RjMSAgICAgICRmMjAsICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9GMjBfT0ZGU0VU
KSAiKCRzcCkiICJcbiIKKyAgICAic2RjMSAgICAgICRmMjIsICIgU1RSSU5HSVpFX1ZBTFVFX09G
KFBST0JFX0NQVV9GMjJfT0ZGU0VUKSAiKCRzcCkiICJcbiIKKyAgICAic2RjMSAgICAgICRmMjQs
ICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9GMjRfT0ZGU0VUKSAiKCRzcCkiICJcbiIK
KyAgICAic2RjMSAgICAgICRmMjYsICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9GMjZf
T0ZGU0VUKSAiKCRzcCkiICJcbiIKKyAgICAic2RjMSAgICAgICRmMjgsICIgU1RSSU5HSVpFX1ZB
TFVFX09GKFBST0JFX0NQVV9GMjhfT0ZGU0VUKSAiKCRzcCkiICJcbiIKKyAgICAic2RjMSAgICAg
ICRmMzAsICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9GMzBfT0ZGU0VUKSAiKCRzcCki
ICJcbiIKKworICAgICJtb3ZlICAgICAgJGEwLCAkc3AiICJcbiIgLy8gU2V0IHRoZSBQcm9iZTo6
U3RhdGUqIGFyZy4KKyAgICAibW92ZSAgICAgICR0OSwgJGEyIiAiXG4iIC8vIFByb2JlOjpleGVj
dXRlUHJvYmUoKQorICAgICJqYWxyICAgICAgJHQ5IiAiXG4iIC8vIENhbGwgdGhlIHByb2JlIGhh
bmRsZXIuCisgICAgIm5vcCIgIlxuIgorCisgICAgLy8gTWFrZSBzdXJlIHRoZSBQcm9iZTo6U3Rh
dGUgaXMgZW50aXJlbHkgYmVsb3cgdGhlIHJlc3VsdCBzdGFjayBwb2ludGVyIHNvCisgICAgLy8g
dGhhdCByZWdpc3RlciB2YWx1ZXMgYXJlIHN0aWxsIHByZXNlcnZlZCB3aGVuIHdlIGNhbGwgdGhl
IGluaXRpYWxpemVTdGFjaworICAgIC8vIGZ1bmN0aW9uLgorICAgICJsdyAgICAgICAgJHQwLCAi
IFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfU1BfT0ZGU0VUKSAiKCRzMSkiICJcbiIgLy8g
UmVzdWx0IHNwLgorICAgICJhZGRpdSAgICAgJHQxLCAkczEsICIgU1RSSU5HSVpFX1ZBTFVFX09G
KChQUk9CRV9TSVpFX1BMVVNfRVhUUkFTICsgT1VUX1NJWkUpKSAiXG4iIC8vIEVuZCBvZiBQcm9i
ZTo6U3RhdGUgKyBidWZmZXIuCisgICAgInNsdHUgICAgICAkdDIsICR0MCwgJHQxIiAiXG4iCisg
ICAgImJlcXogICAgICAkdDIsICIgTE9DQUxfTEFCRUxfU1RSSU5HKGN0aU1hc21Qcm9iZVRyYW1w
b2xpbmVQcm9iZVN0YXRlSXNTYWZlKSAiXG4iCisgICAgIm5vcCIgIlxuIgorCisgICAgLy8gQWxs
b2NhdGUgYSBzYWZlIHBsYWNlIG9uIHRoZSBzdGFjayBiZWxvdyB0aGUgcmVzdWx0IHN0YWNrIHBv
aW50ZXIgdG8gc3Rhc2ggdGhlIFByb2JlOjpTdGF0ZS4KKyAgICAiYWRkaXUgICAgICRzcCwgJHQw
LCAtIiBTVFJJTkdJWkVfVkFMVUVfT0YoKFBST0JFX1NJWkVfUExVU19FWFRSQVMgKyBPVVRfU0la
RSkpICJcbiIgLy8gU2V0IHRoZSBuZXcgc3AgdG8gcHJvdGVjdCB0aGF0IG1lbW9yeSBmcm9tIGlu
dGVycnVwdHMgYmVmb3JlIHdlIGNvcHkgdGhlIFByb2JlOjpTdGF0ZS4KKworICAgIC8vIENvcHkg
dGhlIFByb2JlOjpTdGF0ZSB0byB0aGUgc2FmZSBwbGFjZS4KKyAgICAvLyBOb3RlOiB3ZSBoYXZl
IHRvIGNvcHkgZnJvbSBsb3cgYWRkcmVzcyB0byBoaWdoZXIgYWRkcmVzcyBiZWNhdXNlIHdlJ3Jl
IG1vdmluZyB0aGUKKyAgICAvLyBQcm9iZTo6U3RhdGUgdG8gYSBsb3dlciBhZGRyZXNzLgorICAg
ICJtb3ZlICAgICAgJHQwLCAkczEiICJcbiIKKyAgICAibW92ZSAgICAgICR0MSwgJHNwIiAiXG4i
CisgICAgImFkZGl1ICAgICAkdDIsICRzMSwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfU0la
RV9QTFVTX0VYVFJBUykgIlxuIgorCisgICAgTE9DQUxfTEFCRUxfU1RSSU5HKGN0aU1hc21Qcm9i
ZVRyYW1wb2xpbmVDb3B5TG9vcCkgIjoiICJcbiIKKyAgICAibHcgICAgICAgICR0MywgMCgkdDAp
IiAiXG4iCisgICAgImx3ICAgICAgICAkdDQsIDQoJHQwKSIgIlxuIgorICAgICJzdyAgICAgICAg
JHQzLCAwKCR0MSkiICJcbiIKKyAgICAic3cgICAgICAgICR0NCwgNCgkdDEpIiAiXG4iCisgICAg
ImFkZGl1ICAgICAkdDAsICR0MCwgOCIgIlxuIgorICAgICJhZGRpdSAgICAgJHQxLCAkdDEsIDgi
ICJcbiIKKyAgICAiYm5lICAgICAgICR0MCwgJHQyLCAiIExPQ0FMX0xBQkVMX1NUUklORyhjdGlN
YXNtUHJvYmVUcmFtcG9saW5lQ29weUxvb3ApICJcbiIKKyAgICAibm9wIiAiXG4iCisKKyAgICAi
bW92ZSAgICAgICRzMSwgJHNwIiAiXG4iCisKKyAgICAvLyBDYWxsIGluaXRpYWxpemVTdGFja0Z1
bmN0aW9uIGlmIHByZXNlbnQuCisgICAgTE9DQUxfTEFCRUxfU1RSSU5HKGN0aU1hc21Qcm9iZVRy
YW1wb2xpbmVQcm9iZVN0YXRlSXNTYWZlKSAiOiIgIlxuIgorICAgICJsdyAgICAgICAgJHQ5LCAi
IFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9JTklUX1NUQUNLX0ZVTkNUSU9OX09GRlNFVCkgIigk
czEpIiAiXG4iCisgICAgImJlcXogICAgICAkdDksICIgTE9DQUxfTEFCRUxfU1RSSU5HKGN0aU1h
c21Qcm9iZVRyYW1wb2xpbmVSZXN0b3JlUmVnaXN0ZXJzKSAiXG4iCisgICAgIm5vcCIgIlxuIgor
CisgICAgIm1vdmUgICAgICAkYTAsICRzMSIgIlxuIiAvLyBTZXQgdGhlIFByb2JlOjpTdGF0ZSog
YXJnLgorICAgICJqYWxyICAgICAgJHQ5IiAiXG4iIC8vIENhbGwgdGhlIGluaXRpYWxpemVTdGFj
a0Z1bmN0aW9uIChsb2FkZWQgaW50byB0OSBhYm92ZSkuCisgICAgIm5vcCIgIlxuIgorCisgICAg
TE9DQUxfTEFCRUxfU1RSSU5HKGN0aU1hc21Qcm9iZVRyYW1wb2xpbmVSZXN0b3JlUmVnaXN0ZXJz
KSAiOiIgIlxuIgorCisgICAgIm1vdmUgICAgICAkc3AsICRzMSIgIlxuIgorCisgICAgLy8gVG8g
ZW5hYmxlIHByb2JlcyB0byBtb2RpZnkgcmVnaXN0ZXIgc3RhdGUsIHdlIGNvcHkgYWxsIHJlZ2lz
dGVycworICAgIC8vIG91dCBvZiB0aGUgUHJvYmU6OlN0YXRlIGJlZm9yZSByZXR1cm5pbmcsIGV4
Y2VwdCBmb3IgemVybywgazAgYW5kIGsxLgorCisgICAgImxkYzEgICAgICAkZjAsICAiIFNUUklO
R0laRV9WQUxVRV9PRihQUk9CRV9DUFVfRjBfT0ZGU0VUKSAiKCRzcCkiICJcbiIKKyAgICAibGRj
MSAgICAgICRmMiwgICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9GMl9PRkZTRVQpICIo
JHNwKSIgIlxuIgorICAgICJsZGMxICAgICAgJGY0LCAgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJP
QkVfQ1BVX0Y0X09GRlNFVCkgIigkc3ApIiAiXG4iCisgICAgImxkYzEgICAgICAkZjYsICAiIFNU
UklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfRjZfT0ZGU0VUKSAiKCRzcCkiICJcbiIKKyAgICAi
bGRjMSAgICAgICRmOCwgICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9GOF9PRkZTRVQp
ICIoJHNwKSIgIlxuIgorICAgICJsZGMxICAgICAgJGYxMCwgIiBTVFJJTkdJWkVfVkFMVUVfT0Yo
UFJPQkVfQ1BVX0YxMF9PRkZTRVQpICIoJHNwKSIgIlxuIgorICAgICJsZGMxICAgICAgJGYxMiwg
IiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX0YxMl9PRkZTRVQpICIoJHNwKSIgIlxuIgor
ICAgICJsZGMxICAgICAgJGYxNCwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX0YxNF9P
RkZTRVQpICIoJHNwKSIgIlxuIgorICAgICJsZGMxICAgICAgJGYxNiwgIiBTVFJJTkdJWkVfVkFM
VUVfT0YoUFJPQkVfQ1BVX0YxNl9PRkZTRVQpICIoJHNwKSIgIlxuIgorICAgICJsZGMxICAgICAg
JGYxOCwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX0YxOF9PRkZTRVQpICIoJHNwKSIg
IlxuIgorICAgICJsZGMxICAgICAgJGYyMCwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BV
X0YyMF9PRkZTRVQpICIoJHNwKSIgIlxuIgorICAgICJsZGMxICAgICAgJGYyMiwgIiBTVFJJTkdJ
WkVfVkFMVUVfT0YoUFJPQkVfQ1BVX0YyMl9PRkZTRVQpICIoJHNwKSIgIlxuIgorICAgICJsZGMx
ICAgICAgJGYyNCwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX0YyNF9PRkZTRVQpICIo
JHNwKSIgIlxuIgorICAgICJsZGMxICAgICAgJGYyNiwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJP
QkVfQ1BVX0YyNl9PRkZTRVQpICIoJHNwKSIgIlxuIgorICAgICJsZGMxICAgICAgJGYyOCwgIiBT
VFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX0YyOF9PRkZTRVQpICIoJHNwKSIgIlxuIgorICAg
ICJsZGMxICAgICAgJGYzMCwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX0YzMF9PRkZT
RVQpICIoJHNwKSIgIlxuIgorCisgICAgImx3ICAgICAgICAkYXQsICIgU1RSSU5HSVpFX1ZBTFVF
X09GKFBST0JFX0NQVV9BVF9PRkZTRVQpICIoJHNwKSIgIlxuIgorICAgICJsdyAgICAgICAgJHYw
LCAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfVjBfT0ZGU0VUKSAiKCRzcCkiICJcbiIK
KyAgICAibHcgICAgICAgICR2MSwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1YxX09G
RlNFVCkgIigkc3ApIiAiXG4iCisgICAgImx3ICAgICAgICAkYTAsICIgU1RSSU5HSVpFX1ZBTFVF
X09GKFBST0JFX0NQVV9BMF9PRkZTRVQpICIoJHNwKSIgIlxuIgorICAgICJsdyAgICAgICAgJGEx
LCAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfQTFfT0ZGU0VUKSAiKCRzcCkiICJcbiIK
KyAgICAibHcgICAgICAgICRhMiwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX0EyX09G
RlNFVCkgIigkc3ApIiAiXG4iCisgICAgImx3ICAgICAgICAkYTMsICIgU1RSSU5HSVpFX1ZBTFVF
X09GKFBST0JFX0NQVV9BM19PRkZTRVQpICIoJHNwKSIgIlxuIgorICAgICJsdyAgICAgICAgJHQy
LCAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfVDJfT0ZGU0VUKSAiKCRzcCkiICJcbiIK
KyAgICAibHcgICAgICAgICR0MywgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1QzX09G
RlNFVCkgIigkc3ApIiAiXG4iCisgICAgImx3ICAgICAgICAkdDQsICIgU1RSSU5HSVpFX1ZBTFVF
X09GKFBST0JFX0NQVV9UNF9PRkZTRVQpICIoJHNwKSIgIlxuIgorICAgICJsdyAgICAgICAgJHQ1
LCAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfVDVfT0ZGU0VUKSAiKCRzcCkiICJcbiIK
KyAgICAibHcgICAgICAgICR0NiwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1Q2X09G
RlNFVCkgIigkc3ApIiAiXG4iCisgICAgImx3ICAgICAgICAkdDcsICIgU1RSSU5HSVpFX1ZBTFVF
X09GKFBST0JFX0NQVV9UN19PRkZTRVQpICIoJHNwKSIgIlxuIgorICAgICJsdyAgICAgICAgJHMw
LCAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfUzBfT0ZGU0VUKSAiKCRzcCkiICJcbiIK
KyAgICAibHcgICAgICAgICRzMSwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1MxX09G
RlNFVCkgIigkc3ApIiAiXG4iCisgICAgImx3ICAgICAgICAkczIsICIgU1RSSU5HSVpFX1ZBTFVF
X09GKFBST0JFX0NQVV9TMl9PRkZTRVQpICIoJHNwKSIgIlxuIgorICAgICJsdyAgICAgICAgJHMz
LCAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfUzNfT0ZGU0VUKSAiKCRzcCkiICJcbiIK
KyAgICAibHcgICAgICAgICRzNCwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1M0X09G
RlNFVCkgIigkc3ApIiAiXG4iCisgICAgImx3ICAgICAgICAkczUsICIgU1RSSU5HSVpFX1ZBTFVF
X09GKFBST0JFX0NQVV9TNV9PRkZTRVQpICIoJHNwKSIgIlxuIgorICAgICJsdyAgICAgICAgJHM2
LCAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfUzZfT0ZGU0VUKSAiKCRzcCkiICJcbiIK
KyAgICAibHcgICAgICAgICRzNywgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1M3X09G
RlNFVCkgIigkc3ApIiAiXG4iCisgICAgImx3ICAgICAgICAkdDgsICIgU1RSSU5HSVpFX1ZBTFVF
X09GKFBST0JFX0NQVV9UOF9PRkZTRVQpICIoJHNwKSIgIlxuIgorICAgICJsdyAgICAgICAgJHQ5
LCAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfVDlfT0ZGU0VUKSAiKCRzcCkiICJcbiIK
KyAgICAibHcgICAgICAgICRncCwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX0dQX09G
RlNFVCkgIigkc3ApIiAiXG4iCisKKyAgICAvLyBSZW1haW5pbmcgcmVnaXN0ZXJzIHRvIHJlc3Rv
cmUgYXJlOiB0MCwgdDEsIGZwLCByYSwgc3AsIGFuZCBwYy4KKworICAgIC8vIFRoZSBvbmx5IHdh
eSB0byBzZXQgdGhlIHBjIG9uIE1JUFMgKGZyb20gdXNlciBzcGFjZSkgaXMgdmlhIGFuIGluZGly
ZWN0IGJyYW5jaAorICAgIC8vIHdoaWNoIG1lYW5zIHdlJ2xsIG5lZWQgYSBmcmVlIHJlZ2lzdGVy
IHRvIGRvIHNvLiBGb3Igb3VyIHB1cnBvc2VzLCByYQorICAgIC8vIGhhcHBlbnMgdG8gYmUgYXZh
aWxhYmxlIGluIGFwcGxpY2F0aW9ucyBvZiB0aGUgcHJvYmUgd2hlcmUgd2UgbWF5IHdhbnQgdG8K
KyAgICAvLyBjb250aW51ZSBleGVjdXRpbmcgYXQgYSBkaWZmZXJlbnQgbG9jYXRpb24gKGkuZS4g
Y2hhbmdlIHRoZSBwYykgYWZ0ZXIgdGhlIHByb2JlCisgICAgLy8gcmV0dXJucy4gU28sIHRoZSBN
SVBTIHByb2JlIGltcGxlbWVudGF0aW9uIHdpbGwgYWxsb3cgdGhlIHByb2JlIGhhbmRsZXIgdG8K
KyAgICAvLyBlaXRoZXIgbW9kaWZ5IHJhIG9yIHBjLCBidXQgbm90IGJvdGggaW4gdGhlIHNhbWUg
cHJvYmUgaW52b2NhdGlvbi4gVGhlIHByb2JlCisgICAgLy8gbWVjaGFuaXNtIGVuc3VyZXMgdGhh
dCB3ZSBuZXZlciB0cnkgdG8gbW9kaWZ5IGJvdGggcmEgYW5kIHBjIHdpdGggYSBSRUxFQVNFX0FT
U0VSVAorICAgIC8vIGluIFByb2JlOjpleGVjdXRlUHJvYmUoKS4KKworICAgIC8vIERldGVybWlu
ZSBpZiB0aGUgcHJvYmUgaGFuZGxlciBjaGFuZ2VkIHRoZSBwYy4KKyAgICAibHcgICAgICAgICRy
YSwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1NQX09GRlNFVCkgIigkc3ApIiAiXG4i
IC8vIHByZWxvYWQgdGhlIHRhcmdldCBzcC4KKyAgICAibHcgICAgICAgICR0MCwgIiBTVFJJTkdJ
WkVfVkFMVUVfT0YoU0FWRURfUFJPQkVfUkVUVVJOX1BDX09GRlNFVCkgIigkc3ApIiAiXG4iCisg
ICAgImx3ICAgICAgICAkdDEsICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9QQ19PRkZT
RVQpICIoJHNwKSIgIlxuIgorICAgICJhZGRpdSAgICAgJHQwLCAkdDAsIDIqNCIgIlxuIgorICAg
ICJibmUgICAgICAgJHQwLCAkdDEsICIgTE9DQUxfTEFCRUxfU1RSSU5HKGN0aU1hc21Qcm9iZVRy
YW1wb2xpbmVFbmQpICJcbiIKKyAgICAibm9wIiAiXG4iCisKKyAgICAgLy8gV2UgZGlkbid0IGNo
YW5nZSB0aGUgUEMuIFNvLCBsZXQncyBwcmVwYXJlIGZvciBzZXR0aW5nIGEgcG90ZW50aWFsbHkg
bmV3IHJhIHZhbHVlLgorCisgICAgIC8vIDEuIE1ha2Ugcm9vbSBmb3IgdGhlIFJBUmVzdG9yYXRp
b25SZWNvcmQuIFRoZSBwcm9iZSBzaXRlIHdpbGwgcG9wIHRoaXMgb2ZmIGxhdGVyLgorICAgICJh
ZGRpdSAgICAgJHJhLCAkcmEsIC0iIFNUUklOR0laRV9WQUxVRV9PRihSQV9SRVNUT1JBVElPTl9T
SVpFKSAiXG4iCisgICAgIC8vIDIuIFN0b3JlIHRoZSBscCB2YWx1ZSB0byByZXN0b3JlIGF0IHRo
ZSBwcm9iZSByZXR1cm4gc2l0ZS4KKyAgICAibHcgICAgICAgICR0MCwgIiBTVFJJTkdJWkVfVkFM
VUVfT0YoUFJPQkVfQ1BVX1JBX09GRlNFVCkgIigkc3ApIiAiXG4iCisgICAgInN3ICAgICAgICAk
dDAsICIgU1RSSU5HSVpFX1ZBTFVFX09GKFJBX1JFU1RPUkFUSU9OX1JBX09GRlNFVCkgIigkcmEp
IiAiXG4iCisgICAgIC8vIDMuIEZvcmNlIHRoZSByZXR1cm4gcmFtcCB0byByZXR1cm4gdG8gdGhl
IHByb2JlIHJldHVybiBzaXRlLgorICAgICJsdyAgICAgICAgJHQwLCAiIFNUUklOR0laRV9WQUxV
RV9PRihTQVZFRF9QUk9CRV9SRVRVUk5fUENfT0ZGU0VUKSAiKCRzcCkiICJcbiIKKyAgICAic3cg
ICAgICAgICR0MCwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1BDX09GRlNFVCkgIigk
c3ApIiAiXG4iCisKKyAgICBMT0NBTF9MQUJFTF9TVFJJTkcoY3RpTWFzbVByb2JlVHJhbXBvbGlu
ZUVuZCkgIjoiICJcbiIKKworICAgIC8vIEZpbGwgaW4gdGhlIE91dGdvaW5nUHJvYmVSZWNvcmQu
CisgICAgImFkZGl1ICAgICAkcmEsICRyYSwgLSIgU1RSSU5HSVpFX1ZBTFVFX09GKE9VVF9TSVpF
KSAiXG4iCisKKyAgICAibHcgICAgICAgICR0MCwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVf
Q1BVX0ZQX09GRlNFVCkgIigkc3ApIiAiXG4iCisgICAgImx3ICAgICAgICAkdDEsICIgU1RSSU5H
SVpFX1ZBTFVFX09GKFBST0JFX0NQVV9QQ19PRkZTRVQpICIoJHNwKSIgIlxuIiAvLyBTZXQgdXAg
dGhlIG91dGdvaW5nIHJlY29yZCBzbyB0aGF0IHdlJ2xsIGp1bXAgdG8gdGhlIG5ldyBQQy4KKyAg
ICAic3cgICAgICAgICR0MCwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoT1VUX0ZQX09GRlNFVCkgIigk
cmEpIiAiXG4iCisgICAgInN3ICAgICAgICAkdDEsICIgU1RSSU5HSVpFX1ZBTFVFX09GKE9VVF9S
QV9PRkZTRVQpICIoJHJhKSIgIlxuIgorICAgICJsdyAgICAgICAgJHQwLCAiIFNUUklOR0laRV9W
QUxVRV9PRihQUk9CRV9DUFVfVDBfT0ZGU0VUKSAiKCRzcCkiICJcbiIKKyAgICAibHcgICAgICAg
ICR0MSwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1QxX09GRlNFVCkgIigkc3ApIiAi
XG4iCisgICAgIm1vdmUgICAgICAkc3AsICRyYSIgIlxuIgorCisgICAgLy8gUmVzdG9yZSB0aGUg
cmVtYWluaW5nIHJlZ2lzdGVycy4KKyAgICAibHcgICAgICAgICRmcCwgIiBTVFJJTkdJWkVfVkFM
VUVfT0YoT1VUX0ZQX09GRlNFVCkgIigkc3ApIiAiXG4iCisgICAgImx3ICAgICAgICAkcmEsICIg
U1RSSU5HSVpFX1ZBTFVFX09GKE9VVF9SQV9PRkZTRVQpICIoJHNwKSIgIlxuIgorICAgICJhZGRp
dSAgICAgJHNwLCAkc3AsICIgU1RSSU5HSVpFX1ZBTFVFX09GKE9VVF9TSVpFKSAiXG4iCisgICAg
ImpyICAgICAgICAkcmEiICJcbiIKKyAgICAibm9wIiAiXG4iCisgICAgIi5zZXQgcG9wIiAiXG4i
CispOworI2VuZGlmIC8vIENPTVBJTEVSKEdDQ19PUl9DTEFORykKKwordm9pZCBNYWNyb0Fzc2Vt
Ymxlcjo6cHJvYmUoUHJvYmU6OkZ1bmN0aW9uIGZ1bmN0aW9uLCB2b2lkKiBhcmcpCit7CisgICAg
c3ViMzIoVHJ1c3RlZEltbTMyKHNpemVvZihJbmNvbWluZ1JlY29yZCkpLCBzcCk7CisgICAgc3Rv
cmUzMihhMCwgQWRkcmVzcyhzcCwgb2Zmc2V0b2YoSW5jb21pbmdSZWNvcmQsIGEwKSkpOworICAg
IHN0b3JlMzIoYTEsIEFkZHJlc3Moc3AsIG9mZnNldG9mKEluY29taW5nUmVjb3JkLCBhMSkpKTsK
KyAgICBzdG9yZTMyKGEyLCBBZGRyZXNzKHNwLCBvZmZzZXRvZihJbmNvbWluZ1JlY29yZCwgYTIp
KSk7CisgICAgc3RvcmUzMihzMCwgQWRkcmVzcyhzcCwgb2Zmc2V0b2YoSW5jb21pbmdSZWNvcmQs
IHMwKSkpOworICAgIHN0b3JlMzIoczEsIEFkZHJlc3Moc3AsIG9mZnNldG9mKEluY29taW5nUmVj
b3JkLCBzMSkpKTsKKyAgICBzdG9yZTMyKHJhLCBBZGRyZXNzKHNwLCBvZmZzZXRvZihJbmNvbWlu
Z1JlY29yZCwgcmEpKSk7CisgICAgbW92ZShUcnVzdGVkSW1tUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8
dm9pZCo+KGZ1bmN0aW9uKSksIGEwKTsKKyAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYXJnKSwgYTEp
OworICAgIG1vdmUoVHJ1c3RlZEltbVB0cihyZWludGVycHJldF9jYXN0PHZvaWQqPihQcm9iZTo6
ZXhlY3V0ZVByb2JlKSksIGEyKTsKKyAgICBtb3ZlKFRydXN0ZWRJbW1QdHIocmVpbnRlcnByZXRf
Y2FzdDx2b2lkKj4oY3RpTWFzbVByb2JlVHJhbXBvbGluZSkpLCBzMCk7CisgICAgbV9hc3NlbWJs
ZXIuamFscihzMCk7CisgICAgbV9hc3NlbWJsZXIubm9wKCk7CisgICAgbG9hZDMyKEFkZHJlc3Mo
c3AsIG9mZnNldG9mKFJBUmVzdG9yYXRpb25SZWNvcmQsIHJhKSksIHJhKTsKKyAgICBhZGQzMihU
cnVzdGVkSW1tMzIoc2l6ZW9mKFJBUmVzdG9yYXRpb25SZWNvcmQpKSwgc3ApOworfQorI2VuZGlm
IC8vIEVOQUJMRShNQVNNX1BST0JFKQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8v
IEVOQUJMRShBU1NFTUJMRVIpICYmIENQVShNSVBTKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9Qcm9iZUNvbnRleHQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9Qcm9iZUNvbnRleHQuY3BwCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAx
MDA3NTUKaW5kZXggN2IxMmQwNS4uMmNhMDg0MgotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL1Byb2JlQ29udGV4dC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9Qcm9iZUNvbnRleHQuY3BwCkBAIC00MCw2ICs0MCwxMCBAQCB2b2lkIGV4ZWN1dGVQ
cm9iZShTdGF0ZSogc3RhdGUpCiAgICAgYXV0byYgY3B1ID0gY29udGV4dC5jcHU7CiAgICAgdm9p
ZCogb3JpZ2luYWxMUiA9IGNwdS5ncHI8dm9pZCo+KEFSTTY0UmVnaXN0ZXJzOjpscik7CiAgICAg
dm9pZCogb3JpZ2luYWxQQyA9IGNwdS5wYygpOworI2VsaWYgQ1BVKE1JUFMpCisgICAgYXV0byYg
Y3B1ID0gY29udGV4dC5jcHU7CisgICAgdm9pZCogb3JpZ2luYWxSQSA9IGNwdS5ncHI8dm9pZCo+
KE1JUFNSZWdpc3RlcnM6OnJhKTsKKyAgICB2b2lkKiBvcmlnaW5hbFBDID0gY3B1LnBjKCk7CiAj
ZW5kaWYKIAogICAgIHN0YXRlLT5pbml0aWFsaXplU3RhY2tGdW5jdGlvbiA9IG51bGxwdHI7CkBA
IC00OSw2ICs1Myw5IEBAIHZvaWQgZXhlY3V0ZVByb2JlKFN0YXRlKiBzdGF0ZSkKICNpZiBDUFUo
QVJNNjQpCiAgICAgLy8gVGhlIEFSTTY0IHByb2JlIHRyYW1wb2xpbmUgZG9lcyBub3Qgc3VwcG9y
dCBjaGFuZ2luZyBib3RoIGxyIGFuZCBwYy4KICAgICBSRUxFQVNFX0FTU0VSVChvcmlnaW5hbFBD
ID09IGNwdS5wYygpIHx8IG9yaWdpbmFsTFIgPT0gY3B1Lmdwcjx2b2lkKj4oQVJNNjRSZWdpc3Rl
cnM6OmxyKSk7CisjZWxpZiBDUFUoTUlQUykKKyAgICAvLyBUaGUgTUlQUyBwcm9iZSB0cmFtcG9s
aW5lIGRvZXMgbm90IHN1cHBvcnQgY2hhbmdpbmcgYm90aCByYSBhbmQgcGMuCisgICAgUkVMRUFT
RV9BU1NFUlQob3JpZ2luYWxQQyA9PSBjcHUucGMoKSB8fCBvcmlnaW5hbFJBID09IGNwdS5ncHI8
dm9pZCo+KE1JUFNSZWdpc3RlcnM6OnJhKSk7CiAjZW5kaWYKIAogICAgIGlmIChjb250ZXh0Lmhh
c1dyaXRlc1RvRmx1c2goKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9Qcm9iZUNvbnRleHQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
UHJvYmVDb250ZXh0LmgKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCAwZTUy
MDM0Li4zOTQxYTg5Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUHJvYmVD
b250ZXh0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Qcm9iZUNvbnRl
eHQuaApAQCAtMTE1LDcgKzExNSw3IEBAIGlubGluZSB2b2lkKiYgQ1BVU3RhdGU6OnBjKCkKICNl
bGlmIENQVShBUk1fVEhVTUIyKSB8fCBDUFUoQVJNX1RSQURJVElPTkFMKQogICAgIHJldHVybiAq
cmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KCZncHIoQVJNUmVnaXN0ZXJzOjpwYykpOwogI2VsaWYg
Q1BVKE1JUFMpCi0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4g
KnJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPigmc3ByKE1JUFNSZWdpc3RlcnM6OnBjKSk7CiAjZWxz
ZQogI2Vycm9yICJVbnN1cHBvcnRlZCBDUFUiCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvdGVzdG1hc20uY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1
NQppbmRleCA3ZDM0YzlmLi45MjdmMzZlCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvdGVzdG1hc20uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
dGVzdG1hc20uY3BwCkBAIC0xMzUsNiArMTM1LDkgQEAgYm9vbCBpc1NwZWNpYWxHUFIoTWFjcm9B
c3NlbWJsZXI6OlJlZ2lzdGVySUQgaWQpCiAjaWYgQ1BVKEFSTTY0KQogICAgIGlmIChpZCA9PSBB
Uk02NFJlZ2lzdGVyczo6eDE4KQogICAgICAgICByZXR1cm4gdHJ1ZTsKKyNlbGlmIENQVShNSVBT
KQorICAgIGlmIChpZCA9PSBNSVBTUmVnaXN0ZXJzOjp6ZXJvIHx8IGlkID09IE1JUFNSZWdpc3Rl
cnM6OmswIHx8IGlkID09IE1JUFNSZWdpc3RlcnM6OmsxKQorICAgICAgICByZXR1cm4gdHJ1ZTsK
ICNlbmRpZgogICAgIHJldHVybiBmYWxzZTsKIH0KQEAgLTM4OCw2ICszOTEsOSBAQCB2b2lkIHRl
c3RQcm9iZVByZXNlcnZlc0dQUlMoKQogICAgICAgICAgICAgICAgIENIRUNLX0VRKGNwdS5ncHIo
aWQpLCB0ZXN0V29yZChpZCkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZm9yIChhdXRv
IGlkID0gQ0NhbGxIZWxwZXJzOjpmaXJzdEZQUmVnaXN0ZXIoKTsgaWQgPD0gQ0NhbGxIZWxwZXJz
OjpsYXN0RlBSZWdpc3RlcigpOyBpZCA9IG5leHRJRChpZCkpCisjaWYgQ1BVKE1JUFMpCisgICAg
ICAgICAgICAgICAgaWYgKCEoaWQgJiAxKSkKKyNlbmRpZgogICAgICAgICAgICAgICAgIENIRUNL
X0VRKGNwdS5mcHI8dWludDY0X3Q+KGlkKSwgdGVzdFdvcmQ2NChpZCkpOwogICAgICAgICB9KTsK
IApAQCAtNDE0LDYgKzQyMCw5IEBAIHZvaWQgdGVzdFByb2JlUHJlc2VydmVzR1BSUygpCiAgICAg
ICAgICAgICAgICAgQ0hFQ0tfRVEoY3B1LmdwcihpZCksIG9yaWdpbmFsU3RhdGUuZ3ByKGlkKSk7
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBmb3IgKGF1dG8gaWQgPSBDQ2FsbEhlbHBlcnM6
OmZpcnN0RlBSZWdpc3RlcigpOyBpZCA8PSBDQ2FsbEhlbHBlcnM6Omxhc3RGUFJlZ2lzdGVyKCk7
IGlkID0gbmV4dElEKGlkKSkKKyNpZiBDUFUoTUlQUykKKyAgICAgICAgICAgICAgICBpZiAoIShp
ZCAmIDEpKQorI2VuZGlmCiAgICAgICAgICAgICAgICAgQ0hFQ0tfRVEoY3B1LmZwcjx1aW50NjRf
dD4oaWQpLCBvcmlnaW5hbFN0YXRlLmZwcjx1aW50NjRfdD4oaWQpKTsKICAgICAgICAgfSk7CiAK
QEAgLTQyOSw3ICs0MzgsOSBAQCB2b2lkIHRlc3RQcm9iZU1vZGlmaWVzU3RhY2tQb2ludGVyKFdU
Rjo6RnVuY3Rpb248dm9pZCooUHJvYmU6OkNvbnRleHQmKT4gY29tcHV0ZQogICAgIENQVVN0YXRl
IG9yaWdpbmFsU3RhdGU7CiAgICAgdm9pZCogb3JpZ2luYWxTUCB7IG51bGxwdHIgfTsKICAgICB2
b2lkKiBtb2RpZmllZFNQIHsgbnVsbHB0ciB9OworI2lmICEoQ1BVKE1JUFMpKQogICAgIHVpbnRw
dHJfdCBtb2RpZmllZEZsYWdzIHsgMCB9OworI2VuZGlmCiAgICAgCiAjaWYgQ1BVKFg4NikgfHwg
Q1BVKFg4Nl82NCkKICAgICBhdXRvIGZsYWdzU1BSID0gWDg2UmVnaXN0ZXJzOjplZmxhZ3M7CkBA
IC00NjEsOSArNDcyLDExIEBAIHZvaWQgdGVzdFByb2JlTW9kaWZpZXNTdGFja1BvaW50ZXIoV1RG
OjpGdW5jdGlvbjx2b2lkKihQcm9iZTo6Q29udGV4dCYpPiBjb21wdXRlCiAgICAgICAgICAgICAg
ICAgY3B1LmZwcihpZCkgPSBiaXR3aXNlX2Nhc3Q8ZG91YmxlPih0ZXN0V29yZDY0KGlkKSk7CiAg
ICAgICAgICAgICB9CiAKKyNpZiAhKENQVShNSVBTKSkKICAgICAgICAgICAgIG9yaWdpbmFsU3Rh
dGUuc3ByKGZsYWdzU1BSKSA9IGNwdS5zcHIoZmxhZ3NTUFIpOwogICAgICAgICAgICAgbW9kaWZp
ZWRGbGFncyA9IG9yaWdpbmFsU3RhdGUuc3ByKGZsYWdzU1BSKSBeIGZsYWdzTWFzazsKICAgICAg
ICAgICAgIGNwdS5zcHIoZmxhZ3NTUFIpID0gbW9kaWZpZWRGbGFnczsKKyNlbmRpZgogCiAgICAg
ICAgICAgICBvcmlnaW5hbFNQID0gY3B1LnNwKCk7CiAgICAgICAgICAgICBtb2RpZmllZFNQID0g
Y29tcHV0ZU1vZGlmaWVkU3RhY2tQb2ludGVyKGNvbnRleHQpOwpAQCAtNDg0LDggKzQ5NywxMyBA
QCB2b2lkIHRlc3RQcm9iZU1vZGlmaWVzU3RhY2tQb2ludGVyKFdURjo6RnVuY3Rpb248dm9pZCoo
UHJvYmU6OkNvbnRleHQmKT4gY29tcHV0ZQogICAgICAgICAgICAgICAgIENIRUNLX0VRKGNwdS5n
cHIoaWQpLCB0ZXN0V29yZChpZCkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZm9yIChh
dXRvIGlkID0gQ0NhbGxIZWxwZXJzOjpmaXJzdEZQUmVnaXN0ZXIoKTsgaWQgPD0gQ0NhbGxIZWxw
ZXJzOjpsYXN0RlBSZWdpc3RlcigpOyBpZCA9IG5leHRJRChpZCkpCisjaWYgQ1BVKE1JUFMpCisg
ICAgICAgICAgICAgICAgaWYgKCEoaWQgJiAxKSkKKyNlbmRpZgogICAgICAgICAgICAgICAgIENI
RUNLX0VRKGNwdS5mcHI8dWludDY0X3Q+KGlkKSwgdGVzdFdvcmQ2NChpZCkpOworI2lmICEoQ1BV
KE1JUFMpKQogICAgICAgICAgICAgQ0hFQ0tfRVEoY3B1LnNwcihmbGFnc1NQUikgJiBmbGFnc01h
c2ssIG1vZGlmaWVkRmxhZ3MgJiBmbGFnc01hc2spOworI2VuZGlmCiAgICAgICAgICAgICBDSEVD
S19FUShjcHUuc3AoKSwgbW9kaWZpZWRTUCk7CiAgICAgICAgIH0pOwogCkBAIC01MDAsNyArNTE4
LDkgQEAgdm9pZCB0ZXN0UHJvYmVNb2RpZmllc1N0YWNrUG9pbnRlcihXVEY6OkZ1bmN0aW9uPHZv
aWQqKFByb2JlOjpDb250ZXh0Jik+IGNvbXB1dGUKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IGZvciAoYXV0byBpZCA9IENDYWxsSGVscGVyczo6Zmlyc3RGUFJlZ2lzdGVyKCk7IGlkIDw9IEND
YWxsSGVscGVyczo6bGFzdEZQUmVnaXN0ZXIoKTsgaWQgPSBuZXh0SUQoaWQpKQogICAgICAgICAg
ICAgICAgIGNwdS5mcHIoaWQpID0gb3JpZ2luYWxTdGF0ZS5mcHIoaWQpOworI2lmICEoQ1BVKE1J
UFMpKQogICAgICAgICAgICAgY3B1LnNwcihmbGFnc1NQUikgPSBvcmlnaW5hbFN0YXRlLnNwcihm
bGFnc1NQUik7CisjZW5kaWYKICAgICAgICAgICAgIGNwdS5zcCgpID0gb3JpZ2luYWxTUDsKICAg
ICAgICAgfSk7CiAKQEAgLTUxNCw4ICs1MzQsMTMgQEAgdm9pZCB0ZXN0UHJvYmVNb2RpZmllc1N0
YWNrUG9pbnRlcihXVEY6OkZ1bmN0aW9uPHZvaWQqKFByb2JlOjpDb250ZXh0Jik+IGNvbXB1dGUK
ICAgICAgICAgICAgICAgICBDSEVDS19FUShjcHUuZ3ByKGlkKSwgb3JpZ2luYWxTdGF0ZS5ncHIo
aWQpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGZvciAoYXV0byBpZCA9IENDYWxsSGVs
cGVyczo6Zmlyc3RGUFJlZ2lzdGVyKCk7IGlkIDw9IENDYWxsSGVscGVyczo6bGFzdEZQUmVnaXN0
ZXIoKTsgaWQgPSBuZXh0SUQoaWQpKQorI2lmIENQVShNSVBTKQorICAgICAgICAgICAgICAgIGlm
ICghKGlkICYgMSkpCisjZW5kaWYKICAgICAgICAgICAgICAgICBDSEVDS19FUShjcHUuZnByPHVp
bnQ2NF90PihpZCksIG9yaWdpbmFsU3RhdGUuZnByPHVpbnQ2NF90PihpZCkpOworI2lmICEoQ1BV
KE1JUFMpKQogICAgICAgICAgICAgQ0hFQ0tfRVEoY3B1LnNwcihmbGFnc1NQUikgJiBmbGFnc01h
c2ssIG9yaWdpbmFsU3RhdGUuc3ByKGZsYWdzU1BSKSAmIGZsYWdzTWFzayk7CisjZW5kaWYKICAg
ICAgICAgICAgIENIRUNLX0VRKGNwdS5zcCgpLCBvcmlnaW5hbFNQKTsKICAgICAgICAgfSk7CiAK
QEAgLTYyOCw5ICs2NTMsMTEgQEAgdm9pZCB0ZXN0UHJvYmVNb2RpZmllc1N0YWNrVmFsdWVzKCkK
ICAgICAgICAgICAgICAgICBvcmlnaW5hbFN0YXRlLmZwcihpZCkgPSBjcHUuZnByKGlkKTsKICAg
ICAgICAgICAgICAgICBjcHUuZnByKGlkKSA9IGJpdHdpc2VfY2FzdDxkb3VibGU+KHRlc3RXb3Jk
NjQoaWQpKTsKICAgICAgICAgICAgIH0KKyNpZiAhKENQVShNSVBTKSkKICAgICAgICAgICAgIG9y
aWdpbmFsU3RhdGUuc3ByKGZsYWdzU1BSKSA9IGNwdS5zcHIoZmxhZ3NTUFIpOwogICAgICAgICAg
ICAgbW9kaWZpZWRGbGFncyA9IG9yaWdpbmFsU3RhdGUuc3ByKGZsYWdzU1BSKSBeIGZsYWdzTWFz
azsKICAgICAgICAgICAgIGNwdS5zcHIoZmxhZ3NTUFIpID0gbW9kaWZpZWRGbGFnczsKKyNlbmRp
ZgogCiAgICAgICAgICAgICAvLyBFbnN1cmUgdGhhdCB3ZSdsbCBiZSB3cml0aW5nIG92ZXIgdGhl
IHJlZ2lvbnMgb2YgdGhlIHN0YWNrIHdoZXJlIHRoZSBQcm9iZTo6U3RhdGUgaXMuCiAgICAgICAg
ICAgICBvcmlnaW5hbFNQID0gY3B1LnNwKCk7CkBAIC02NjQsOCArNjkxLDEzIEBAIHZvaWQgdGVz
dFByb2JlTW9kaWZpZXNTdGFja1ZhbHVlcygpCiAgICAgICAgICAgICAgICAgQ0hFQ0tfRVEoY3B1
LmdwcihpZCksIHRlc3RXb3JkKGlkKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBmb3Ig
KGF1dG8gaWQgPSBDQ2FsbEhlbHBlcnM6OmZpcnN0RlBSZWdpc3RlcigpOyBpZCA8PSBDQ2FsbEhl
bHBlcnM6Omxhc3RGUFJlZ2lzdGVyKCk7IGlkID0gbmV4dElEKGlkKSkKKyNpZiBDUFUoTUlQUykK
KyAgICAgICAgICAgICAgICBpZiAoIShpZCAmIDEpKQorI2VuZGlmCiAgICAgICAgICAgICAgICAg
Q0hFQ0tfRVEoY3B1LmZwcjx1aW50NjRfdD4oaWQpLCB0ZXN0V29yZDY0KGlkKSk7CisjaWYgIShD
UFUoTUlQUykpCiAgICAgICAgICAgICBDSEVDS19FUShjcHUuc3ByKGZsYWdzU1BSKSAmIGZsYWdz
TWFzaywgbW9kaWZpZWRGbGFncyAmIGZsYWdzTWFzayk7CisjZW5kaWYKICAgICAgICAgICAgIENI
RUNLX0VRKGNwdS5zcCgpLCBuZXdTUCk7CiAKICAgICAgICAgICAgIC8vIFZhbGlkYXRlIHRoZSBz
dGFjayB2YWx1ZXMuCkBAIC02ODksNyArNzIxLDkgQEAgdm9pZCB0ZXN0UHJvYmVNb2RpZmllc1N0
YWNrVmFsdWVzKCkKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGZvciAoYXV0byBpZCA9IEND
YWxsSGVscGVyczo6Zmlyc3RGUFJlZ2lzdGVyKCk7IGlkIDw9IENDYWxsSGVscGVyczo6bGFzdEZQ
UmVnaXN0ZXIoKTsgaWQgPSBuZXh0SUQoaWQpKQogICAgICAgICAgICAgICAgIGNwdS5mcHIoaWQp
ID0gb3JpZ2luYWxTdGF0ZS5mcHIoaWQpOworI2lmICEoQ1BVKE1JUFMpKQogICAgICAgICAgICAg
Y3B1LnNwcihmbGFnc1NQUikgPSBvcmlnaW5hbFN0YXRlLnNwcihmbGFnc1NQUik7CisjZW5kaWYK
ICAgICAgICAgICAgIGNwdS5zcCgpID0gb3JpZ2luYWxTUDsKICAgICAgICAgfSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKb2xkIG1v
ZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCBmMTYxMzU0Li4xZWFhMmM1Ci0tLSBhL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTIgQEAKKzIwMTctMTEtMjEgIFN0YW5pc2xhdiBPY292YWogIDxzdGFuaXNsYXYub2NvdmFqQHJ0
LXJrLmNvbT4KKworICAgICAgICBFbmFibGUgREZHIEpJVCBvbiBNSVBTLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1NDQ3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKKwog
MjAxNy0xMS0xOSAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZW1vdmUgdW51c2VkIFRPVUNIX0lDT05fTE9BRElORyBmZWF0dXJlIGZsYWcKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9y
bS5oCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggNWNkNDNmMi4uMWQ4MmFk
NQotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1Bs
YXRmb3JtLmgKQEAgLTgwMyw5ICs4MDMsMTAgQEAKICNpZiBDUFUoQVJNX1RSQURJVElPTkFMKQog
I2RlZmluZSBFTkFCTEVfREZHX0pJVCAxCiAjZW5kaWYKLS8qIEZJWE1FOiBNSVBTIGNhbm5vdCBl
bmFibGUgdGhlIERGRyB1bnRpbCBpdCBoYXMgc3VwcG9ydCBmb3IgTWFjcm9Bc3NlbWJsZXI6OnBy
b2JlKCkuCi0gICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1NDQ3
Ci0qLworLyogRW5hYmxlIHRoZSBERkcgSklUIG9uIE1JUFMuICovCisjaWYgQ1BVKE1JUFMpCisj
ZGVmaW5lIEVOQUJMRV9ERkdfSklUIDEKKyNlbmRpZgogI2VuZGlmCiAKIC8qIENvbmN1cnJlbnQg
SlMgb25seSB3b3JrcyBvbiA2NC1iaXQgcGxhdGZvcm1zIGJlY2F1c2UgaXQgcmVxdWlyZXMgdGhh
dApAQCAtODI0LDcgKzgyNSw3IEBACiAjZGVmaW5lIEVOQUJMRV9GQVNUX1RMU19KSVQgMQogI2Vu
ZGlmCiAKLSNpZiBDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KSB8fCBDUFUoQVJNX1RIVU1CMikgfHwg
Q1BVKEFSTTY0KSB8fCBDUFUoQVJNX1RSQURJVElPTkFMKQorI2lmIENQVShYODYpIHx8IENQVShY
ODZfNjQpIHx8IENQVShBUk1fVEhVTUIyKSB8fCBDUFUoQVJNNjQpIHx8IENQVShBUk1fVFJBRElU
SU9OQUwpIHx8IENQVShNSVBTKQogI2RlZmluZSBFTkFCTEVfTUFTTV9QUk9CRSAxCiAjZWxzZQog
I2RlZmluZSBFTkFCTEVfTUFTTV9QUk9CRSAwCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>327502</attachid>
            <date>2017-11-23 07:51:54 -0800</date>
            <delta_ts>2017-11-29 12:12:36 -0800</delta_ts>
            <desc>MIPS implementation of MacroAssembler::probe()</desc>
            <filename>dfg.patch</filename>
            <type>text/plain</type>
            <size>51222</size>
            <attacher name="Stanislav Ocovaj">stanislav.ocovaj</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5k
ZXggYWUwOTc2Ny4uY2ZmYjE4ZQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAor
MjAxNy0xMS0yMSAgU3RhbmlzbGF2IE9jb3ZhaiAgPHN0YW5pc2xhdi5vY292YWpAcnQtcmsuY29t
PgorCisgICAgICAgIFtNSVBTXVtKU0NdIEltcGxlbWVudCBNYWNyb0Fzc2VtYmxlcjo6cHJvYmUg
c3VwcG9ydCBvbiBNSVBTCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNzU0NDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGlzIHBhdGNoIGFsbG93cyBERkcgSklUIHRvIGJlIGVuYWJsZWQgb24gTUlQUyBw
bGF0Zm9ybXMuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBhc3NlbWJsZXIv
TUlQU0Fzc2VtYmxlci5oOgorICAgICAgICAoSlNDOjpNSVBTQXNzZW1ibGVyOjpsYXN0U1BSZWdp
c3Rlcik6CisgICAgICAgIChKU0M6Ok1JUFNBc3NlbWJsZXI6Om51bWJlck9mU1BSZWdpc3RlcnMp
OgorICAgICAgICAoSlNDOjpNSVBTQXNzZW1ibGVyOjpzcHJOYW1lKToKKyAgICAgICAgKiBhc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6Ok1hY3Jv
QXNzZW1ibGVyOjpwcm9iZSk6CisgICAgICAgICogYXNzZW1ibGVyL1Byb2JlQ29udGV4dC5jcHA6
CisgICAgICAgIChKU0M6OlByb2JlOjpleGVjdXRlUHJvYmUpOgorICAgICAgICAqIGFzc2VtYmxl
ci9Qcm9iZUNvbnRleHQuaDoKKyAgICAgICAgKEpTQzo6UHJvYmU6OkNQVVN0YXRlOjpwYyk6Cisg
ICAgICAgICogYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcDoKKyAgICAgICAgKEpTQzo6aXNTcGVjaWFs
R1BSKToKKyAgICAgICAgKEpTQzo6dGVzdFByb2JlUHJlc2VydmVzR1BSUyk6CisgICAgICAgIChK
U0M6OnRlc3RQcm9iZU1vZGlmaWVzU3RhY2tQb2ludGVyKToKKyAgICAgICAgKEpTQzo6dGVzdFBy
b2JlTW9kaWZpZXNTdGFja1ZhbHVlcyk6CisKIDIwMTctMTEtMjEgIFl1c3VrZSBTdXp1a2kgIDx1
dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgW0RGR11bRlRMXSBTdXBwb3J0IE1hcFNl
dCAvIFNldEFkZCBpbnRyaW5zaWNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
U291cmNlcy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKb2xkIG1vZGUg
MTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCA3MGU0YTMyLi4yMGQ2Y2UyCi0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
U291cmNlcy50eHQKQEAgLTQ3LDYgKzQ3LDcgQEAgYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJN
LmNwcAogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuY3BwCiBhc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJBUk12Ny5jcHAKIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckNvZGVSZWYuY3BwCith
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmNwcAogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
UHJpbnRlci5jcHAKIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5jcHAKIGFzc2Vt
Ymxlci9QcmludGVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NSVBTQXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01J
UFNBc3NlbWJsZXIuaApvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IGY4NmRh
ZjMuLjdhNzQ3YTkKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NSVBTQXNz
ZW1ibGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NSVBTQXNzZW1i
bGVyLmgKQEAgLTExMyw3ICsxMTMsOCBAQCB0eXBlZGVmIGVudW0gewogICAgIGZjY3IgPSAyNSwK
ICAgICBmZXhyID0gMjYsCiAgICAgZmVuciA9IDI4LAotICAgIGZjc3IgPSAzMQorICAgIGZjc3Ig
PSAzMSwKKyAgICBwYwogfSBTUFJlZ2lzdGVySUQ7CiAKIHR5cGVkZWYgZW51bSB7CkBAIC0xNjUs
OCArMTY2LDggQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbnVtYmVy
T2ZSZWdpc3RlcnMoKSB7IHJldHVybiBsYXN0UmVnaXN0ZXIoKSAtIGZpcnN0UmVnaXN0ZXIoKSAr
IDE7IH0KIAogICAgIHN0YXRpYyBjb25zdGV4cHIgU1BSZWdpc3RlcklEIGZpcnN0U1BSZWdpc3Rl
cigpIHsgcmV0dXJuIE1JUFNSZWdpc3RlcnM6OmZpcjsgfQotICAgIHN0YXRpYyBjb25zdGV4cHIg
U1BSZWdpc3RlcklEIGxhc3RTUFJlZ2lzdGVyKCkgeyByZXR1cm4gTUlQU1JlZ2lzdGVyczo6ZmNz
cjsgfQotICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbnVtYmVyT2ZTUFJlZ2lzdGVycygp
IHsgcmV0dXJuIDU7IH0KKyAgICBzdGF0aWMgY29uc3RleHByIFNQUmVnaXN0ZXJJRCBsYXN0U1BS
ZWdpc3RlcigpIHsgcmV0dXJuIE1JUFNSZWdpc3RlcnM6OnBjOyB9CisgICAgc3RhdGljIGNvbnN0
ZXhwciB1bnNpZ25lZCBudW1iZXJPZlNQUmVnaXN0ZXJzKCkgeyByZXR1cm4gbGFzdFNQUmVnaXN0
ZXIoKSAtIGZpcnN0U1BSZWdpc3RlcigpICsgMTsgfQogCiAgICAgc3RhdGljIGNvbnN0ZXhwciBG
UFJlZ2lzdGVySUQgZmlyc3RGUFJlZ2lzdGVyKCkgeyByZXR1cm4gTUlQU1JlZ2lzdGVyczo6ZjA7
IH0KICAgICBzdGF0aWMgY29uc3RleHByIEZQUmVnaXN0ZXJJRCBsYXN0RlBSZWdpc3RlcigpIHsg
cmV0dXJuIE1JUFNSZWdpc3RlcnM6OmYzMTsgfQpAQCAtMTk3LDYgKzE5OCw4IEBAIHB1YmxpYzoK
ICAgICAgICAgICAgIHJldHVybiAiZmVuciI7CiAgICAgICAgIGNhc2UgTUlQU1JlZ2lzdGVyczo6
ZmNzcjoKICAgICAgICAgICAgIHJldHVybiAiZmNzciI7CisgICAgICAgIGNhc2UgTUlQU1JlZ2lz
dGVyczo6cGM6CisgICAgICAgICAgICByZXR1cm4gInBjIjsKICAgICAgICAgZGVmYXVsdDoKICAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBT
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBT
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5hZGE2N2Q1Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
ck1JUFMuY3BwCkBAIC0wLDAgKzEsNTc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUo
QVNTRU1CTEVSKSAmJiBDUFUoTUlQUykKKyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgorCisj
aW5jbHVkZSAiUHJvYmVDb250ZXh0LmgiCisjaW5jbHVkZSA8d3RmL0lubGluZUFTTS5oPgorCitu
YW1lc3BhY2UgSlNDIHsKKworI2lmIEVOQUJMRShNQVNNX1BST0JFKQorCitleHRlcm4gIkMiIHZv
aWQgY3RpTWFzbVByb2JlVHJhbXBvbGluZSgpOworCit1c2luZyBuYW1lc3BhY2UgTUlQU1JlZ2lz
dGVyczsKKworI2lmIENPTVBJTEVSKEdDQ19PUl9DTEFORykKKworLy8gVGhlIGZvbGxvd2luZyBh
cmUgb2Zmc2V0cyBmb3IgUHJvYmU6OlN0YXRlIGZpZWxkcyBhY2Nlc3NlZAorLy8gYnkgdGhlIGN0
aU1hc21Qcm9iZVRyYW1wb2xpbmUgc3R1Yi4KKworI2RlZmluZSBQVFJfU0laRSA0CisjZGVmaW5l
IFBST0JFX1BST0JFX0ZVTkNUSU9OX09GRlNFVCAoMCAqIFBUUl9TSVpFKQorI2RlZmluZSBQUk9C
RV9BUkdfT0ZGU0VUICgxICogUFRSX1NJWkUpCisjZGVmaW5lIFBST0JFX0lOSVRfU1RBQ0tfRlVO
Q1RJT05fT0ZGU0VUICgyICogUFRSX1NJWkUpCisjZGVmaW5lIFBST0JFX0lOSVRfU1RBQ0tfQVJH
X09GRlNFVCAoMyAqIFBUUl9TSVpFKQorCisjZGVmaW5lIFBST0JFX0lOU1RSVUNUSU9OU19BRlRF
Ul9DQUxMIDIKKworI2RlZmluZSBQUk9CRV9GSVJTVF9HUFJFR19PRkZTRVQgKDQgKiBQVFJfU0la
RSkKKworI2RlZmluZSBHUFJFR19TSVpFIDQKKyNkZWZpbmUgUFJPQkVfQ1BVX1pSX09GRlNFVCAo
UFJPQkVfRklSU1RfR1BSRUdfT0ZGU0VUICsgKDAgKiBHUFJFR19TSVpFKSkKKyNkZWZpbmUgUFJP
QkVfQ1BVX0FUX09GRlNFVCAoUFJPQkVfRklSU1RfR1BSRUdfT0ZGU0VUICsgKDEgKiBHUFJFR19T
SVpFKSkKKyNkZWZpbmUgUFJPQkVfQ1BVX1YwX09GRlNFVCAoUFJPQkVfRklSU1RfR1BSRUdfT0ZG
U0VUICsgKDIgKiBHUFJFR19TSVpFKSkKKyNkZWZpbmUgUFJPQkVfQ1BVX1YxX09GRlNFVCAoUFJP
QkVfRklSU1RfR1BSRUdfT0ZGU0VUICsgKDMgKiBHUFJFR19TSVpFKSkKKyNkZWZpbmUgUFJPQkVf
Q1BVX0EwX09GRlNFVCAoUFJPQkVfRklSU1RfR1BSRUdfT0ZGU0VUICsgKDQgKiBHUFJFR19TSVpF
KSkKKyNkZWZpbmUgUFJPQkVfQ1BVX0ExX09GRlNFVCAoUFJPQkVfRklSU1RfR1BSRUdfT0ZGU0VU
ICsgKDUgKiBHUFJFR19TSVpFKSkKKyNkZWZpbmUgUFJPQkVfQ1BVX0EyX09GRlNFVCAoUFJPQkVf
RklSU1RfR1BSRUdfT0ZGU0VUICsgKDYgKiBHUFJFR19TSVpFKSkKKyNkZWZpbmUgUFJPQkVfQ1BV
X0EzX09GRlNFVCAoUFJPQkVfRklSU1RfR1BSRUdfT0ZGU0VUICsgKDcgKiBHUFJFR19TSVpFKSkK
KyNkZWZpbmUgUFJPQkVfQ1BVX1QwX09GRlNFVCAoUFJPQkVfRklSU1RfR1BSRUdfT0ZGU0VUICsg
KDggKiBHUFJFR19TSVpFKSkKKyNkZWZpbmUgUFJPQkVfQ1BVX1QxX09GRlNFVCAoUFJPQkVfRklS
U1RfR1BSRUdfT0ZGU0VUICsgKDkgKiBHUFJFR19TSVpFKSkKKyNkZWZpbmUgUFJPQkVfQ1BVX1Qy
X09GRlNFVCAoUFJPQkVfRklSU1RfR1BSRUdfT0ZGU0VUICsgKDEwICogR1BSRUdfU0laRSkpCisj
ZGVmaW5lIFBST0JFX0NQVV9UM19PRkZTRVQgKFBST0JFX0ZJUlNUX0dQUkVHX09GRlNFVCArICgx
MSAqIEdQUkVHX1NJWkUpKQorI2RlZmluZSBQUk9CRV9DUFVfVDRfT0ZGU0VUIChQUk9CRV9GSVJT
VF9HUFJFR19PRkZTRVQgKyAoMTIgKiBHUFJFR19TSVpFKSkKKyNkZWZpbmUgUFJPQkVfQ1BVX1Q1
X09GRlNFVCAoUFJPQkVfRklSU1RfR1BSRUdfT0ZGU0VUICsgKDEzICogR1BSRUdfU0laRSkpCisj
ZGVmaW5lIFBST0JFX0NQVV9UNl9PRkZTRVQgKFBST0JFX0ZJUlNUX0dQUkVHX09GRlNFVCArICgx
NCAqIEdQUkVHX1NJWkUpKQorI2RlZmluZSBQUk9CRV9DUFVfVDdfT0ZGU0VUIChQUk9CRV9GSVJT
VF9HUFJFR19PRkZTRVQgKyAoMTUgKiBHUFJFR19TSVpFKSkKKyNkZWZpbmUgUFJPQkVfQ1BVX1Mw
X09GRlNFVCAoUFJPQkVfRklSU1RfR1BSRUdfT0ZGU0VUICsgKDE2ICogR1BSRUdfU0laRSkpCisj
ZGVmaW5lIFBST0JFX0NQVV9TMV9PRkZTRVQgKFBST0JFX0ZJUlNUX0dQUkVHX09GRlNFVCArICgx
NyAqIEdQUkVHX1NJWkUpKQorI2RlZmluZSBQUk9CRV9DUFVfUzJfT0ZGU0VUIChQUk9CRV9GSVJT
VF9HUFJFR19PRkZTRVQgKyAoMTggKiBHUFJFR19TSVpFKSkKKyNkZWZpbmUgUFJPQkVfQ1BVX1Mz
X09GRlNFVCAoUFJPQkVfRklSU1RfR1BSRUdfT0ZGU0VUICsgKDE5ICogR1BSRUdfU0laRSkpCisj
ZGVmaW5lIFBST0JFX0NQVV9TNF9PRkZTRVQgKFBST0JFX0ZJUlNUX0dQUkVHX09GRlNFVCArICgy
MCAqIEdQUkVHX1NJWkUpKQorI2RlZmluZSBQUk9CRV9DUFVfUzVfT0ZGU0VUIChQUk9CRV9GSVJT
VF9HUFJFR19PRkZTRVQgKyAoMjEgKiBHUFJFR19TSVpFKSkKKyNkZWZpbmUgUFJPQkVfQ1BVX1M2
X09GRlNFVCAoUFJPQkVfRklSU1RfR1BSRUdfT0ZGU0VUICsgKDIyICogR1BSRUdfU0laRSkpCisj
ZGVmaW5lIFBST0JFX0NQVV9TN19PRkZTRVQgKFBST0JFX0ZJUlNUX0dQUkVHX09GRlNFVCArICgy
MyAqIEdQUkVHX1NJWkUpKQorI2RlZmluZSBQUk9CRV9DUFVfVDhfT0ZGU0VUIChQUk9CRV9GSVJT
VF9HUFJFR19PRkZTRVQgKyAoMjQgKiBHUFJFR19TSVpFKSkKKyNkZWZpbmUgUFJPQkVfQ1BVX1Q5
X09GRlNFVCAoUFJPQkVfRklSU1RfR1BSRUdfT0ZGU0VUICsgKDI1ICogR1BSRUdfU0laRSkpCisj
ZGVmaW5lIFBST0JFX0NQVV9LMF9PRkZTRVQgKFBST0JFX0ZJUlNUX0dQUkVHX09GRlNFVCArICgy
NiAqIEdQUkVHX1NJWkUpKQorI2RlZmluZSBQUk9CRV9DUFVfSzFfT0ZGU0VUIChQUk9CRV9GSVJT
VF9HUFJFR19PRkZTRVQgKyAoMjcgKiBHUFJFR19TSVpFKSkKKyNkZWZpbmUgUFJPQkVfQ1BVX0dQ
X09GRlNFVCAoUFJPQkVfRklSU1RfR1BSRUdfT0ZGU0VUICsgKDI4ICogR1BSRUdfU0laRSkpCisj
ZGVmaW5lIFBST0JFX0NQVV9TUF9PRkZTRVQgKFBST0JFX0ZJUlNUX0dQUkVHX09GRlNFVCArICgy
OSAqIEdQUkVHX1NJWkUpKQorI2RlZmluZSBQUk9CRV9DUFVfRlBfT0ZGU0VUIChQUk9CRV9GSVJT
VF9HUFJFR19PRkZTRVQgKyAoMzAgKiBHUFJFR19TSVpFKSkKKyNkZWZpbmUgUFJPQkVfQ1BVX1JB
X09GRlNFVCAoUFJPQkVfRklSU1RfR1BSRUdfT0ZGU0VUICsgKDMxICogR1BSRUdfU0laRSkpCisK
KyNkZWZpbmUgUFJPQkVfRklSU1RfU1BSRUdfT0ZGU0VUIChQUk9CRV9GSVJTVF9HUFJFR19PRkZT
RVQgKyAoMzIgKiBHUFJFR19TSVpFKSkKKworI2RlZmluZSBQUk9CRV9DUFVfRklSX09GRlNFVCAo
UFJPQkVfRklSU1RfU1BSRUdfT0ZGU0VUICsgKDAgKiBHUFJFR19TSVpFKSkKKyNkZWZpbmUgUFJP
QkVfQ1BVX0ZDQ1JfT0ZGU0VUIChQUk9CRV9GSVJTVF9TUFJFR19PRkZTRVQgKyAoMjUgKiBHUFJF
R19TSVpFKSkKKyNkZWZpbmUgUFJPQkVfQ1BVX0ZFWFJfT0ZGU0VUIChQUk9CRV9GSVJTVF9TUFJF
R19PRkZTRVQgKyAoMjYgKiBHUFJFR19TSVpFKSkKKyNkZWZpbmUgUFJPQkVfQ1BVX0ZFTlJfT0ZG
U0VUIChQUk9CRV9GSVJTVF9TUFJFR19PRkZTRVQgKyAoMjggKiBHUFJFR19TSVpFKSkKKyNkZWZp
bmUgUFJPQkVfQ1BVX0ZDU1JfT0ZGU0VUIChQUk9CRV9GSVJTVF9TUFJFR19PRkZTRVQgKyAoMzEg
KiBHUFJFR19TSVpFKSkKKyNkZWZpbmUgUFJPQkVfQ1BVX1BDX09GRlNFVCAoUFJPQkVfRklSU1Rf
U1BSRUdfT0ZGU0VUICsgKDMyICogR1BSRUdfU0laRSkpCisKKyNkZWZpbmUgUFJPQkVfRklSU1Rf
RlBSRUdfT0ZGU0VUIChQUk9CRV9GSVJTVF9TUFJFR19PRkZTRVQgKyAoMzQgKiBHUFJFR19TSVpF
KSkKKworI2RlZmluZSBGUFJFR19TSVpFIDgKKyNkZWZpbmUgUFJPQkVfQ1BVX0YwX09GRlNFVCAg
KFBST0JFX0ZJUlNUX0ZQUkVHX09GRlNFVCArICgwICogRlBSRUdfU0laRSkpCisjZGVmaW5lIFBS
T0JFX0NQVV9GMV9PRkZTRVQgIChQUk9CRV9GSVJTVF9GUFJFR19PRkZTRVQgKyAoMSAqIEZQUkVH
X1NJWkUpKQorI2RlZmluZSBQUk9CRV9DUFVfRjJfT0ZGU0VUICAoUFJPQkVfRklSU1RfRlBSRUdf
T0ZGU0VUICsgKDIgKiBGUFJFR19TSVpFKSkKKyNkZWZpbmUgUFJPQkVfQ1BVX0YzX09GRlNFVCAg
KFBST0JFX0ZJUlNUX0ZQUkVHX09GRlNFVCArICgzICogRlBSRUdfU0laRSkpCisjZGVmaW5lIFBS
T0JFX0NQVV9GNF9PRkZTRVQgIChQUk9CRV9GSVJTVF9GUFJFR19PRkZTRVQgKyAoNCAqIEZQUkVH
X1NJWkUpKQorI2RlZmluZSBQUk9CRV9DUFVfRjVfT0ZGU0VUICAoUFJPQkVfRklSU1RfRlBSRUdf
T0ZGU0VUICsgKDUgKiBGUFJFR19TSVpFKSkKKyNkZWZpbmUgUFJPQkVfQ1BVX0Y2X09GRlNFVCAg
KFBST0JFX0ZJUlNUX0ZQUkVHX09GRlNFVCArICg2ICogRlBSRUdfU0laRSkpCisjZGVmaW5lIFBS
T0JFX0NQVV9GN19PRkZTRVQgIChQUk9CRV9GSVJTVF9GUFJFR19PRkZTRVQgKyAoNyAqIEZQUkVH
X1NJWkUpKQorI2RlZmluZSBQUk9CRV9DUFVfRjhfT0ZGU0VUICAoUFJPQkVfRklSU1RfRlBSRUdf
T0ZGU0VUICsgKDggKiBGUFJFR19TSVpFKSkKKyNkZWZpbmUgUFJPQkVfQ1BVX0Y5X09GRlNFVCAg
KFBST0JFX0ZJUlNUX0ZQUkVHX09GRlNFVCArICg5ICogRlBSRUdfU0laRSkpCisjZGVmaW5lIFBS
T0JFX0NQVV9GMTBfT0ZGU0VUIChQUk9CRV9GSVJTVF9GUFJFR19PRkZTRVQgKyAoMTAgKiBGUFJF
R19TSVpFKSkKKyNkZWZpbmUgUFJPQkVfQ1BVX0YxMV9PRkZTRVQgKFBST0JFX0ZJUlNUX0ZQUkVH
X09GRlNFVCArICgxMSAqIEZQUkVHX1NJWkUpKQorI2RlZmluZSBQUk9CRV9DUFVfRjEyX09GRlNF
VCAoUFJPQkVfRklSU1RfRlBSRUdfT0ZGU0VUICsgKDEyICogRlBSRUdfU0laRSkpCisjZGVmaW5l
IFBST0JFX0NQVV9GMTNfT0ZGU0VUIChQUk9CRV9GSVJTVF9GUFJFR19PRkZTRVQgKyAoMTMgKiBG
UFJFR19TSVpFKSkKKyNkZWZpbmUgUFJPQkVfQ1BVX0YxNF9PRkZTRVQgKFBST0JFX0ZJUlNUX0ZQ
UkVHX09GRlNFVCArICgxNCAqIEZQUkVHX1NJWkUpKQorI2RlZmluZSBQUk9CRV9DUFVfRjE1X09G
RlNFVCAoUFJPQkVfRklSU1RfRlBSRUdfT0ZGU0VUICsgKDE1ICogRlBSRUdfU0laRSkpCisjZGVm
aW5lIFBST0JFX0NQVV9GMTZfT0ZGU0VUIChQUk9CRV9GSVJTVF9GUFJFR19PRkZTRVQgKyAoMTYg
KiBGUFJFR19TSVpFKSkKKyNkZWZpbmUgUFJPQkVfQ1BVX0YxN19PRkZTRVQgKFBST0JFX0ZJUlNU
X0ZQUkVHX09GRlNFVCArICgxNyAqIEZQUkVHX1NJWkUpKQorI2RlZmluZSBQUk9CRV9DUFVfRjE4
X09GRlNFVCAoUFJPQkVfRklSU1RfRlBSRUdfT0ZGU0VUICsgKDE4ICogRlBSRUdfU0laRSkpCisj
ZGVmaW5lIFBST0JFX0NQVV9GMTlfT0ZGU0VUIChQUk9CRV9GSVJTVF9GUFJFR19PRkZTRVQgKyAo
MTkgKiBGUFJFR19TSVpFKSkKKyNkZWZpbmUgUFJPQkVfQ1BVX0YyMF9PRkZTRVQgKFBST0JFX0ZJ
UlNUX0ZQUkVHX09GRlNFVCArICgyMCAqIEZQUkVHX1NJWkUpKQorI2RlZmluZSBQUk9CRV9DUFVf
RjIxX09GRlNFVCAoUFJPQkVfRklSU1RfRlBSRUdfT0ZGU0VUICsgKDIxICogRlBSRUdfU0laRSkp
CisjZGVmaW5lIFBST0JFX0NQVV9GMjJfT0ZGU0VUIChQUk9CRV9GSVJTVF9GUFJFR19PRkZTRVQg
KyAoMjIgKiBGUFJFR19TSVpFKSkKKyNkZWZpbmUgUFJPQkVfQ1BVX0YyM19PRkZTRVQgKFBST0JF
X0ZJUlNUX0ZQUkVHX09GRlNFVCArICgyMyAqIEZQUkVHX1NJWkUpKQorI2RlZmluZSBQUk9CRV9D
UFVfRjI0X09GRlNFVCAoUFJPQkVfRklSU1RfRlBSRUdfT0ZGU0VUICsgKDI0ICogRlBSRUdfU0la
RSkpCisjZGVmaW5lIFBST0JFX0NQVV9GMjVfT0ZGU0VUIChQUk9CRV9GSVJTVF9GUFJFR19PRkZT
RVQgKyAoMjUgKiBGUFJFR19TSVpFKSkKKyNkZWZpbmUgUFJPQkVfQ1BVX0YyNl9PRkZTRVQgKFBS
T0JFX0ZJUlNUX0ZQUkVHX09GRlNFVCArICgyNiAqIEZQUkVHX1NJWkUpKQorI2RlZmluZSBQUk9C
RV9DUFVfRjI3X09GRlNFVCAoUFJPQkVfRklSU1RfRlBSRUdfT0ZGU0VUICsgKDI3ICogRlBSRUdf
U0laRSkpCisjZGVmaW5lIFBST0JFX0NQVV9GMjhfT0ZGU0VUIChQUk9CRV9GSVJTVF9GUFJFR19P
RkZTRVQgKyAoMjggKiBGUFJFR19TSVpFKSkKKyNkZWZpbmUgUFJPQkVfQ1BVX0YyOV9PRkZTRVQg
KFBST0JFX0ZJUlNUX0ZQUkVHX09GRlNFVCArICgyOSAqIEZQUkVHX1NJWkUpKQorI2RlZmluZSBQ
Uk9CRV9DUFVfRjMwX09GRlNFVCAoUFJPQkVfRklSU1RfRlBSRUdfT0ZGU0VUICsgKDMwICogRlBS
RUdfU0laRSkpCisjZGVmaW5lIFBST0JFX0NQVV9GMzFfT0ZGU0VUIChQUk9CRV9GSVJTVF9GUFJF
R19PRkZTRVQgKyAoMzEgKiBGUFJFR19TSVpFKSkKKworI2RlZmluZSBQUk9CRV9TSVpFIChQUk9C
RV9GSVJTVF9GUFJFR19PRkZTRVQgKyAoMzIgKiBGUFJFR19TSVpFKSkKKworI2RlZmluZSBTQVZF
RF9QUk9CRV9SRVRVUk5fUENfT0ZGU0VUICAgICAgICAoUFJPQkVfU0laRSArICgwICogUFRSX1NJ
WkUpKQorI2RlZmluZSBQUk9CRV9TSVpFX1BMVVNfRVhUUkFTICAgICAgICAgICAgICAoUFJPQkVf
U0laRSArICgyICogUFRSX1NJWkUpKQorLy8gUFJPQkVfU0laRV9QTFVTX0VYVFJBUyA9IFBST0JF
X1NJWkUgKyBTQVZFRF9QUk9CRV9SRVRVUk5fUEMgKyBwYWRkaW5nCisKKyNkZWZpbmUgRklSICAg
IDAKKyNkZWZpbmUgRkNDUiAgMjUKKyNkZWZpbmUgRkVYUiAgMjYKKyNkZWZpbmUgRkVOUiAgMjgK
KyNkZWZpbmUgRkNTUiAgMzEKKworLy8gVGhlc2UgQVNTRVJUcyByZW1pbmQgeW91IHRoYXQgaWYg
eW91IGNoYW5nZSB0aGUgbGF5b3V0IG9mIFByb2JlOjpTdGF0ZSwKKy8vIHlvdSBuZWVkIHRvIGNo
YW5nZSBjdGlNYXNtUHJvYmVUcmFtcG9saW5lIG9mZnNldHMgYWJvdmUgdG8gbWF0Y2guCisjZGVm
aW5lIFBST0JFX09GRlNFVE9GKHgpIG9mZnNldG9mKHN0cnVjdCBQcm9iZTo6U3RhdGUsIHgpCitz
dGF0aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9GKHByb2JlRnVuY3Rpb24pID09IFBST0JFX1BST0JF
X0ZVTkNUSU9OX09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6cHJvYmVGdW5jdGlvbidzIG9mZnNldCBt
YXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsKK3N0YXRpY19hc3NlcnQoUFJPQkVfT0ZG
U0VUT0YoYXJnKSA9PSBQUk9CRV9BUkdfT0ZGU0VULCAiUHJvYmU6OlN0YXRlOjphcmcncyBvZmZz
ZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lIik7CitzdGF0aWNfYXNzZXJ0KFBST0JF
X09GRlNFVE9GKGluaXRpYWxpemVTdGFja0Z1bmN0aW9uKSA9PSBQUk9CRV9JTklUX1NUQUNLX0ZV
TkNUSU9OX09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6aW5pdGlhbGl6ZVN0YWNrRnVuY3Rpb24ncyBv
ZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lIik7CitzdGF0aWNfYXNzZXJ0KFBS
T0JFX09GRlNFVE9GKGluaXRpYWxpemVTdGFja0FyZykgPT0gUFJPQkVfSU5JVF9TVEFDS19BUkdf
T0ZGU0VULCAiUHJvYmU6OlN0YXRlOjppbml0aWFsaXplU3RhY2tBcmcncyBvZmZzZXQgbWF0Y2hl
cyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lIik7CisKK3N0YXRpY19hc3NlcnQoIShQUk9CRV9DUFVf
WlJfT0ZGU0VUICYgMHgzKSwgIlByb2JlOjpTdGF0ZTo6Y3B1LmdwcnNbemVyb10ncyBvZmZzZXQg
c2hvdWxkIGJlIDQgYnl0ZSBhbGlnbmVkIik7CisKK3N0YXRpY19hc3NlcnQoUFJPQkVfT0ZGU0VU
T0YoY3B1LmdwcnNbTUlQU1JlZ2lzdGVyczo6emVyb10pID09IFBST0JFX0NQVV9aUl9PRkZTRVQs
ICJQcm9iZTo6U3RhdGU6OmNwdS5ncHJzW3plcm9dJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVBy
b2JlVHJhbXBvbGluZSIpOworc3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihjcHUuZ3Byc1tN
SVBTUmVnaXN0ZXJzOjphdF0pID09IFBST0JFX0NQVV9BVF9PRkZTRVQsICJQcm9iZTo6U3RhdGU6
OmNwdS5ncHJzW2F0XSdzIG9mZnNldCBtYXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsK
K3N0YXRpY19hc3NlcnQoUFJPQkVfT0ZGU0VUT0YoY3B1LmdwcnNbTUlQU1JlZ2lzdGVyczo6djBd
KSA9PSBQUk9CRV9DUFVfVjBfT0ZGU0VULCAiUHJvYmU6OlN0YXRlOjpjcHUuZ3Byc1t2MF0ncyBv
ZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lIik7CitzdGF0aWNfYXNzZXJ0KFBS
T0JFX09GRlNFVE9GKGNwdS5ncHJzW01JUFNSZWdpc3RlcnM6OnYxXSkgPT0gUFJPQkVfQ1BVX1Yx
X09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmdwcnNbdjFdJ3Mgb2Zmc2V0IG1hdGNoZXMgY3Rp
TWFzbVByb2JlVHJhbXBvbGluZSIpOworc3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihjcHUu
Z3Byc1tNSVBTUmVnaXN0ZXJzOjphMF0pID09IFBST0JFX0NQVV9BMF9PRkZTRVQsICJQcm9iZTo6
U3RhdGU6OmNwdS5ncHJzW2EwXSdzIG9mZnNldCBtYXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xp
bmUiKTsKK3N0YXRpY19hc3NlcnQoUFJPQkVfT0ZGU0VUT0YoY3B1LmdwcnNbTUlQU1JlZ2lzdGVy
czo6YTFdKSA9PSBQUk9CRV9DUFVfQTFfT0ZGU0VULCAiUHJvYmU6OlN0YXRlOjpjcHUuZ3Byc1th
MV0ncyBvZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lIik7CitzdGF0aWNfYXNz
ZXJ0KFBST0JFX09GRlNFVE9GKGNwdS5ncHJzW01JUFNSZWdpc3RlcnM6OmEyXSkgPT0gUFJPQkVf
Q1BVX0EyX09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmdwcnNbYTJdJ3Mgb2Zmc2V0IG1hdGNo
ZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOworc3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRP
RihjcHUuZ3Byc1tNSVBTUmVnaXN0ZXJzOjphM10pID09IFBST0JFX0NQVV9BM19PRkZTRVQsICJQ
cm9iZTo6U3RhdGU6OmNwdS5ncHJzW2EzXSdzIG9mZnNldCBtYXRjaGVzIGN0aU1hc21Qcm9iZVRy
YW1wb2xpbmUiKTsKK3N0YXRpY19hc3NlcnQoUFJPQkVfT0ZGU0VUT0YoY3B1LmdwcnNbTUlQU1Jl
Z2lzdGVyczo6dDBdKSA9PSBQUk9CRV9DUFVfVDBfT0ZGU0VULCAiUHJvYmU6OlN0YXRlOjpjcHUu
Z3Byc1t0MF0ncyBvZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lIik7CitzdGF0
aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9GKGNwdS5ncHJzW01JUFNSZWdpc3RlcnM6OnQxXSkgPT0g
UFJPQkVfQ1BVX1QxX09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmdwcnNbdDFdJ3Mgb2Zmc2V0
IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOworc3RhdGljX2Fzc2VydChQUk9CRV9P
RkZTRVRPRihjcHUuZ3Byc1tNSVBTUmVnaXN0ZXJzOjp0Ml0pID09IFBST0JFX0NQVV9UMl9PRkZT
RVQsICJQcm9iZTo6U3RhdGU6OmNwdS5ncHJzW3QyXSdzIG9mZnNldCBtYXRjaGVzIGN0aU1hc21Q
cm9iZVRyYW1wb2xpbmUiKTsKK3N0YXRpY19hc3NlcnQoUFJPQkVfT0ZGU0VUT0YoY3B1LmdwcnNb
TUlQU1JlZ2lzdGVyczo6dDNdKSA9PSBQUk9CRV9DUFVfVDNfT0ZGU0VULCAiUHJvYmU6OlN0YXRl
OjpjcHUuZ3Byc1t0M10ncyBvZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lIik7
CitzdGF0aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9GKGNwdS5ncHJzW01JUFNSZWdpc3RlcnM6OnQ0
XSkgPT0gUFJPQkVfQ1BVX1Q0X09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmdwcnNbdDRdJ3Mg
b2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOworc3RhdGljX2Fzc2VydChQ
Uk9CRV9PRkZTRVRPRihjcHUuZ3Byc1tNSVBTUmVnaXN0ZXJzOjp0NV0pID09IFBST0JFX0NQVV9U
NV9PRkZTRVQsICJQcm9iZTo6U3RhdGU6OmNwdS5ncHJzW3Q1XSdzIG9mZnNldCBtYXRjaGVzIGN0
aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsKK3N0YXRpY19hc3NlcnQoUFJPQkVfT0ZGU0VUT0YoY3B1
LmdwcnNbTUlQU1JlZ2lzdGVyczo6dDZdKSA9PSBQUk9CRV9DUFVfVDZfT0ZGU0VULCAiUHJvYmU6
OlN0YXRlOjpjcHUuZ3Byc1t0Nl0ncyBvZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFtcG9s
aW5lIik7CitzdGF0aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9GKGNwdS5ncHJzW01JUFNSZWdpc3Rl
cnM6OnQ3XSkgPT0gUFJPQkVfQ1BVX1Q3X09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmdwcnNb
dDddJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOworc3RhdGljX2Fz
c2VydChQUk9CRV9PRkZTRVRPRihjcHUuZ3Byc1tNSVBTUmVnaXN0ZXJzOjpzMF0pID09IFBST0JF
X0NQVV9TMF9PRkZTRVQsICJQcm9iZTo6U3RhdGU6OmNwdS5ncHJzW3MwXSdzIG9mZnNldCBtYXRj
aGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsKK3N0YXRpY19hc3NlcnQoUFJPQkVfT0ZGU0VU
T0YoY3B1LmdwcnNbTUlQU1JlZ2lzdGVyczo6czFdKSA9PSBQUk9CRV9DUFVfUzFfT0ZGU0VULCAi
UHJvYmU6OlN0YXRlOjpjcHUuZ3Byc1tzMV0ncyBvZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVU
cmFtcG9saW5lIik7CitzdGF0aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9GKGNwdS5ncHJzW01JUFNS
ZWdpc3RlcnM6OnMyXSkgPT0gUFJPQkVfQ1BVX1MyX09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1
LmdwcnNbczJdJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOworc3Rh
dGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihjcHUuZ3Byc1tNSVBTUmVnaXN0ZXJzOjpzM10pID09
IFBST0JFX0NQVV9TM19PRkZTRVQsICJQcm9iZTo6U3RhdGU6OmNwdS5ncHJzW3MzXSdzIG9mZnNl
dCBtYXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsKK3N0YXRpY19hc3NlcnQoUFJPQkVf
T0ZGU0VUT0YoY3B1LmdwcnNbTUlQU1JlZ2lzdGVyczo6czRdKSA9PSBQUk9CRV9DUFVfUzRfT0ZG
U0VULCAiUHJvYmU6OlN0YXRlOjpjcHUuZ3Byc1tzNF0ncyBvZmZzZXQgbWF0Y2hlcyBjdGlNYXNt
UHJvYmVUcmFtcG9saW5lIik7CitzdGF0aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9GKGNwdS5ncHJz
W01JUFNSZWdpc3RlcnM6OnM1XSkgPT0gUFJPQkVfQ1BVX1M1X09GRlNFVCwgIlByb2JlOjpTdGF0
ZTo6Y3B1LmdwcnNbczVdJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIp
Oworc3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihjcHUuZ3Byc1tNSVBTUmVnaXN0ZXJzOjpz
Nl0pID09IFBST0JFX0NQVV9TNl9PRkZTRVQsICJQcm9iZTo6U3RhdGU6OmNwdS5ncHJzW3M2XSdz
IG9mZnNldCBtYXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsKK3N0YXRpY19hc3NlcnQo
UFJPQkVfT0ZGU0VUT0YoY3B1LmdwcnNbTUlQU1JlZ2lzdGVyczo6czddKSA9PSBQUk9CRV9DUFVf
UzdfT0ZGU0VULCAiUHJvYmU6OlN0YXRlOjpjcHUuZ3Byc1tzN10ncyBvZmZzZXQgbWF0Y2hlcyBj
dGlNYXNtUHJvYmVUcmFtcG9saW5lIik7CitzdGF0aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9GKGNw
dS5ncHJzW01JUFNSZWdpc3RlcnM6OnQ4XSkgPT0gUFJPQkVfQ1BVX1Q4X09GRlNFVCwgIlByb2Jl
OjpTdGF0ZTo6Y3B1LmdwcnNbdDhdJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBv
bGluZSIpOworc3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihjcHUuZ3Byc1tNSVBTUmVnaXN0
ZXJzOjp0OV0pID09IFBST0JFX0NQVV9UOV9PRkZTRVQsICJQcm9iZTo6U3RhdGU6OmNwdS5ncHJz
W3Q5XSdzIG9mZnNldCBtYXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsKK3N0YXRpY19h
c3NlcnQoUFJPQkVfT0ZGU0VUT0YoY3B1LmdwcnNbTUlQU1JlZ2lzdGVyczo6azBdKSA9PSBQUk9C
RV9DUFVfSzBfT0ZGU0VULCAiUHJvYmU6OlN0YXRlOjpjcHUuZ3Byc1trMF0ncyBvZmZzZXQgbWF0
Y2hlcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lIik7CitzdGF0aWNfYXNzZXJ0KFBST0JFX09GRlNF
VE9GKGNwdS5ncHJzW01JUFNSZWdpc3RlcnM6OmsxXSkgPT0gUFJPQkVfQ1BVX0sxX09GRlNFVCwg
IlByb2JlOjpTdGF0ZTo6Y3B1LmdwcnNbazFdJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2Jl
VHJhbXBvbGluZSIpOworc3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihjcHUuZ3Byc1tNSVBT
UmVnaXN0ZXJzOjpncF0pID09IFBST0JFX0NQVV9HUF9PRkZTRVQsICJQcm9iZTo6U3RhdGU6OmNw
dS5ncHJzW2dwXSdzIG9mZnNldCBtYXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsKK3N0
YXRpY19hc3NlcnQoUFJPQkVfT0ZGU0VUT0YoY3B1LmdwcnNbTUlQU1JlZ2lzdGVyczo6c3BdKSA9
PSBQUk9CRV9DUFVfU1BfT0ZGU0VULCAiUHJvYmU6OlN0YXRlOjpjcHUuZ3Byc1tzcF0ncyBvZmZz
ZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lIik7CitzdGF0aWNfYXNzZXJ0KFBST0JF
X09GRlNFVE9GKGNwdS5ncHJzW01JUFNSZWdpc3RlcnM6OmZwXSkgPT0gUFJPQkVfQ1BVX0ZQX09G
RlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmdwcnNbZnBdJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFz
bVByb2JlVHJhbXBvbGluZSIpOworc3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihjcHUuZ3By
c1tNSVBTUmVnaXN0ZXJzOjpyYV0pID09IFBST0JFX0NQVV9SQV9PRkZTRVQsICJQcm9iZTo6U3Rh
dGU6OmNwdS5ncHJzW3JhXSdzIG9mZnNldCBtYXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUi
KTsKKworc3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihjcHUuc3Byc1tNSVBTUmVnaXN0ZXJz
OjpmaXJdKSA9PSBQUk9CRV9DUFVfRklSX09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LnNwcnNb
ZmlyXSdzIG9mZnNldCBtYXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsKK3N0YXRpY19h
c3NlcnQoUFJPQkVfT0ZGU0VUT0YoY3B1LnNwcnNbTUlQU1JlZ2lzdGVyczo6ZmNjcl0pID09IFBS
T0JFX0NQVV9GQ0NSX09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LnNwcnNbZmNjcl0ncyBvZmZz
ZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lIik7CitzdGF0aWNfYXNzZXJ0KFBST0JF
X09GRlNFVE9GKGNwdS5zcHJzW01JUFNSZWdpc3RlcnM6OmZleHJdKSA9PSBQUk9CRV9DUFVfRkVY
Ul9PRkZTRVQsICJQcm9iZTo6U3RhdGU6OmNwdS5zcHJzW2ZleHJdJ3Mgb2Zmc2V0IG1hdGNoZXMg
Y3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOworc3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihj
cHUuc3Byc1tNSVBTUmVnaXN0ZXJzOjpmZW5yXSkgPT0gUFJPQkVfQ1BVX0ZFTlJfT0ZGU0VULCAi
UHJvYmU6OlN0YXRlOjpjcHUuc3Byc1tmZW5yXSdzIG9mZnNldCBtYXRjaGVzIGN0aU1hc21Qcm9i
ZVRyYW1wb2xpbmUiKTsKK3N0YXRpY19hc3NlcnQoUFJPQkVfT0ZGU0VUT0YoY3B1LnNwcnNbTUlQ
U1JlZ2lzdGVyczo6ZmNzcl0pID09IFBST0JFX0NQVV9GQ1NSX09GRlNFVCwgIlByb2JlOjpTdGF0
ZTo6Y3B1LnNwcnNbZmNzcl0ncyBvZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5l
Iik7CitzdGF0aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9GKGNwdS5zcHJzW01JUFNSZWdpc3RlcnM6
OnBjXSkgPT0gUFJPQkVfQ1BVX1BDX09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LnNwcnNbcGNd
J3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOworCitzdGF0aWNfYXNz
ZXJ0KCEoUFJPQkVfQ1BVX0YwX09GRlNFVCAmIDB4NyksICJQcm9iZTo6U3RhdGU6OmNwdS5mcHJz
W2YwXSdzIG9mZnNldCBzaG91bGQgYmUgOCBieXRlIGFsaWduZWQiKTsKKworc3RhdGljX2Fzc2Vy
dChQUk9CRV9PRkZTRVRPRihjcHUuZnByc1tNSVBTUmVnaXN0ZXJzOjpmMF0pICA9PSBQUk9CRV9D
UFVfRjBfT0ZGU0VULCAgIlByb2JlOjpTdGF0ZTo6Y3B1LmZwcnNbZjBdJ3Mgb2Zmc2V0IG1hdGNo
ZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOworc3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRP
RihjcHUuZnByc1tNSVBTUmVnaXN0ZXJzOjpmMV0pICA9PSBQUk9CRV9DUFVfRjFfT0ZGU0VULCAg
IlByb2JlOjpTdGF0ZTo6Y3B1LmZwcnNbZjFdJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2Jl
VHJhbXBvbGluZSIpOworc3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihjcHUuZnByc1tNSVBT
UmVnaXN0ZXJzOjpmMl0pICA9PSBQUk9CRV9DUFVfRjJfT0ZGU0VULCAgIlByb2JlOjpTdGF0ZTo6
Y3B1LmZwcnNbZjJdJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOwor
c3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihjcHUuZnByc1tNSVBTUmVnaXN0ZXJzOjpmM10p
ICA9PSBQUk9CRV9DUFVfRjNfT0ZGU0VULCAgIlByb2JlOjpTdGF0ZTo6Y3B1LmZwcnNbZjNdJ3Mg
b2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOworc3RhdGljX2Fzc2VydChQ
Uk9CRV9PRkZTRVRPRihjcHUuZnByc1tNSVBTUmVnaXN0ZXJzOjpmNF0pICA9PSBQUk9CRV9DUFVf
RjRfT0ZGU0VULCAgIlByb2JlOjpTdGF0ZTo6Y3B1LmZwcnNbZjRdJ3Mgb2Zmc2V0IG1hdGNoZXMg
Y3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOworc3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihj
cHUuZnByc1tNSVBTUmVnaXN0ZXJzOjpmNV0pICA9PSBQUk9CRV9DUFVfRjVfT0ZGU0VULCAgIlBy
b2JlOjpTdGF0ZTo6Y3B1LmZwcnNbZjVdJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJh
bXBvbGluZSIpOworc3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihjcHUuZnByc1tNSVBTUmVn
aXN0ZXJzOjpmNl0pICA9PSBQUk9CRV9DUFVfRjZfT0ZGU0VULCAgIlByb2JlOjpTdGF0ZTo6Y3B1
LmZwcnNbZjZdJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOworc3Rh
dGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihjcHUuZnByc1tNSVBTUmVnaXN0ZXJzOjpmN10pICA9
PSBQUk9CRV9DUFVfRjdfT0ZGU0VULCAgIlByb2JlOjpTdGF0ZTo6Y3B1LmZwcnNbZjddJ3Mgb2Zm
c2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOworc3RhdGljX2Fzc2VydChQUk9C
RV9PRkZTRVRPRihjcHUuZnByc1tNSVBTUmVnaXN0ZXJzOjpmOF0pICA9PSBQUk9CRV9DUFVfRjhf
T0ZGU0VULCAgIlByb2JlOjpTdGF0ZTo6Y3B1LmZwcnNbZjhdJ3Mgb2Zmc2V0IG1hdGNoZXMgY3Rp
TWFzbVByb2JlVHJhbXBvbGluZSIpOworc3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihjcHUu
ZnByc1tNSVBTUmVnaXN0ZXJzOjpmOV0pICA9PSBQUk9CRV9DUFVfRjlfT0ZGU0VULCAgIlByb2Jl
OjpTdGF0ZTo6Y3B1LmZwcnNbZjldJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBv
bGluZSIpOworc3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihjcHUuZnByc1tNSVBTUmVnaXN0
ZXJzOjpmMTBdKSA9PSBQUk9CRV9DUFVfRjEwX09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmZw
cnNbZjEwXSdzIG9mZnNldCBtYXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsKK3N0YXRp
Y19hc3NlcnQoUFJPQkVfT0ZGU0VUT0YoY3B1LmZwcnNbTUlQU1JlZ2lzdGVyczo6ZjExXSkgPT0g
UFJPQkVfQ1BVX0YxMV9PRkZTRVQsICJQcm9iZTo6U3RhdGU6OmNwdS5mcHJzW2YxMV0ncyBvZmZz
ZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lIik7CitzdGF0aWNfYXNzZXJ0KFBST0JF
X09GRlNFVE9GKGNwdS5mcHJzW01JUFNSZWdpc3RlcnM6OmYxMl0pID09IFBST0JFX0NQVV9GMTJf
T0ZGU0VULCAiUHJvYmU6OlN0YXRlOjpjcHUuZnByc1tmMTJdJ3Mgb2Zmc2V0IG1hdGNoZXMgY3Rp
TWFzbVByb2JlVHJhbXBvbGluZSIpOworc3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihjcHUu
ZnByc1tNSVBTUmVnaXN0ZXJzOjpmMTNdKSA9PSBQUk9CRV9DUFVfRjEzX09GRlNFVCwgIlByb2Jl
OjpTdGF0ZTo6Y3B1LmZwcnNbZjEzXSdzIG9mZnNldCBtYXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1w
b2xpbmUiKTsKK3N0YXRpY19hc3NlcnQoUFJPQkVfT0ZGU0VUT0YoY3B1LmZwcnNbTUlQU1JlZ2lz
dGVyczo6ZjE0XSkgPT0gUFJPQkVfQ1BVX0YxNF9PRkZTRVQsICJQcm9iZTo6U3RhdGU6OmNwdS5m
cHJzW2YxNF0ncyBvZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lIik7CitzdGF0
aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9GKGNwdS5mcHJzW01JUFNSZWdpc3RlcnM6OmYxNV0pID09
IFBST0JFX0NQVV9GMTVfT0ZGU0VULCAiUHJvYmU6OlN0YXRlOjpjcHUuZnByc1tmMTVdJ3Mgb2Zm
c2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOworc3RhdGljX2Fzc2VydChQUk9C
RV9PRkZTRVRPRihjcHUuZnByc1tNSVBTUmVnaXN0ZXJzOjpmMTZdKSA9PSBQUk9CRV9DUFVfRjE2
X09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmZwcnNbZjE2XSdzIG9mZnNldCBtYXRjaGVzIGN0
aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsKK3N0YXRpY19hc3NlcnQoUFJPQkVfT0ZGU0VUT0YoY3B1
LmZwcnNbTUlQU1JlZ2lzdGVyczo6ZjE3XSkgPT0gUFJPQkVfQ1BVX0YxN19PRkZTRVQsICJQcm9i
ZTo6U3RhdGU6OmNwdS5mcHJzW2YxN10ncyBvZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFt
cG9saW5lIik7CitzdGF0aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9GKGNwdS5mcHJzW01JUFNSZWdp
c3RlcnM6OmYxOF0pID09IFBST0JFX0NQVV9GMThfT0ZGU0VULCAiUHJvYmU6OlN0YXRlOjpjcHUu
ZnByc1tmMThdJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOworc3Rh
dGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihjcHUuZnByc1tNSVBTUmVnaXN0ZXJzOjpmMTldKSA9
PSBQUk9CRV9DUFVfRjE5X09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmZwcnNbZjE5XSdzIG9m
ZnNldCBtYXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsKK3N0YXRpY19hc3NlcnQoUFJP
QkVfT0ZGU0VUT0YoY3B1LmZwcnNbTUlQU1JlZ2lzdGVyczo6ZjIwXSkgPT0gUFJPQkVfQ1BVX0Yy
MF9PRkZTRVQsICJQcm9iZTo6U3RhdGU6OmNwdS5mcHJzW2YyMF0ncyBvZmZzZXQgbWF0Y2hlcyBj
dGlNYXNtUHJvYmVUcmFtcG9saW5lIik7CitzdGF0aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9GKGNw
dS5mcHJzW01JUFNSZWdpc3RlcnM6OmYyMV0pID09IFBST0JFX0NQVV9GMjFfT0ZGU0VULCAiUHJv
YmU6OlN0YXRlOjpjcHUuZnByc1tmMjFdJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJh
bXBvbGluZSIpOworc3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihjcHUuZnByc1tNSVBTUmVn
aXN0ZXJzOjpmMjJdKSA9PSBQUk9CRV9DUFVfRjIyX09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1
LmZwcnNbZjIyXSdzIG9mZnNldCBtYXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsKK3N0
YXRpY19hc3NlcnQoUFJPQkVfT0ZGU0VUT0YoY3B1LmZwcnNbTUlQU1JlZ2lzdGVyczo6ZjIzXSkg
PT0gUFJPQkVfQ1BVX0YyM19PRkZTRVQsICJQcm9iZTo6U3RhdGU6OmNwdS5mcHJzW2YyM10ncyBv
ZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lIik7CitzdGF0aWNfYXNzZXJ0KFBS
T0JFX09GRlNFVE9GKGNwdS5mcHJzW01JUFNSZWdpc3RlcnM6OmYyNF0pID09IFBST0JFX0NQVV9G
MjRfT0ZGU0VULCAiUHJvYmU6OlN0YXRlOjpjcHUuZnByc1tmMjRdJ3Mgb2Zmc2V0IG1hdGNoZXMg
Y3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOworc3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihj
cHUuZnByc1tNSVBTUmVnaXN0ZXJzOjpmMjVdKSA9PSBQUk9CRV9DUFVfRjI1X09GRlNFVCwgIlBy
b2JlOjpTdGF0ZTo6Y3B1LmZwcnNbZjI1XSdzIG9mZnNldCBtYXRjaGVzIGN0aU1hc21Qcm9iZVRy
YW1wb2xpbmUiKTsKK3N0YXRpY19hc3NlcnQoUFJPQkVfT0ZGU0VUT0YoY3B1LmZwcnNbTUlQU1Jl
Z2lzdGVyczo6ZjI2XSkgPT0gUFJPQkVfQ1BVX0YyNl9PRkZTRVQsICJQcm9iZTo6U3RhdGU6OmNw
dS5mcHJzW2YyNl0ncyBvZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lIik7Citz
dGF0aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9GKGNwdS5mcHJzW01JUFNSZWdpc3RlcnM6OmYyN10p
ID09IFBST0JFX0NQVV9GMjdfT0ZGU0VULCAiUHJvYmU6OlN0YXRlOjpjcHUuZnByc1tmMjddJ3Mg
b2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOworc3RhdGljX2Fzc2VydChQ
Uk9CRV9PRkZTRVRPRihjcHUuZnByc1tNSVBTUmVnaXN0ZXJzOjpmMjhdKSA9PSBQUk9CRV9DUFVf
RjI4X09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmZwcnNbZjI4XSdzIG9mZnNldCBtYXRjaGVz
IGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsKK3N0YXRpY19hc3NlcnQoUFJPQkVfT0ZGU0VUT0Yo
Y3B1LmZwcnNbTUlQU1JlZ2lzdGVyczo6ZjI5XSkgPT0gUFJPQkVfQ1BVX0YyOV9PRkZTRVQsICJQ
cm9iZTo6U3RhdGU6OmNwdS5mcHJzW2YyOV0ncyBvZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVU
cmFtcG9saW5lIik7CitzdGF0aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9GKGNwdS5mcHJzW01JUFNS
ZWdpc3RlcnM6OmYzMF0pID09IFBST0JFX0NQVV9GMzBfT0ZGU0VULCAiUHJvYmU6OlN0YXRlOjpj
cHUuZnByc1tmMzBdJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOwor
c3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihjcHUuZnByc1tNSVBTUmVnaXN0ZXJzOjpmMzFd
KSA9PSBQUk9CRV9DUFVfRjMxX09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmZwcnNbZjMxXSdz
IG9mZnNldCBtYXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsKKworc3RhdGljX2Fzc2Vy
dChzaXplb2YoUHJvYmU6OlN0YXRlKSA9PSBQUk9CRV9TSVpFLCAiUHJvYmU6OlN0YXRlJ3Mgc2l6
ZSBtYXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsKKyN1bmRlZiBQUk9CRV9PRkZTRVRP
RgorCitzdGF0aWNfYXNzZXJ0KE1JUFNSZWdpc3RlcnM6OmZpciA9PSBGSVIsICJGSVIgbWF0Y2hl
cyBNSVBTUmVnaXN0ZXJzOjpmaXIiKTsKK3N0YXRpY19hc3NlcnQoTUlQU1JlZ2lzdGVyczo6ZmNj
ciA9PSBGQ0NSLCAiRkNDUiBtYXRjaGVzIE1JUFNSZWdpc3RlcnM6OmZjY3IiKTsKK3N0YXRpY19h
c3NlcnQoTUlQU1JlZ2lzdGVyczo6ZmV4ciA9PSBGRVhSLCAiRkVYUiBtYXRjaGVzIE1JUFNSZWdp
c3RlcnM6OmZleHIiKTsKK3N0YXRpY19hc3NlcnQoTUlQU1JlZ2lzdGVyczo6ZmVuciA9PSBGRU5S
LCAiRkVOUiBtYXRjaGVzIE1JUFNSZWdpc3RlcnM6OmZlbnIiKTsKK3N0YXRpY19hc3NlcnQoTUlQ
U1JlZ2lzdGVyczo6ZmNzciA9PSBGQ1NSLCAiRkNTUiBtYXRjaGVzIE1JUFNSZWdpc3RlcnM6OmZj
c3IiKTsKKworc3RydWN0IEluY29taW5nUmVjb3JkIHsKKyAgICB1aW50cHRyX3QgYTA7CisgICAg
dWludHB0cl90IGExOworICAgIHVpbnRwdHJfdCBhMjsKKyAgICB1aW50cHRyX3QgczA7CisgICAg
dWludHB0cl90IHMxOworICAgIHVpbnRwdHJfdCByYTsKK307CisKKyNkZWZpbmUgSU5fQTBfT0ZG
U0VUICgwICogUFRSX1NJWkUpCisjZGVmaW5lIElOX0ExX09GRlNFVCAoMSAqIFBUUl9TSVpFKQor
I2RlZmluZSBJTl9BMl9PRkZTRVQgKDIgKiBQVFJfU0laRSkKKyNkZWZpbmUgSU5fUzBfT0ZGU0VU
ICgzICogUFRSX1NJWkUpCisjZGVmaW5lIElOX1MxX09GRlNFVCAoNCAqIFBUUl9TSVpFKQorI2Rl
ZmluZSBJTl9SQV9PRkZTRVQgKDUgKiBQVFJfU0laRSkKKyNkZWZpbmUgSU5fU0laRSAgICAgICg2
ICogUFRSX1NJWkUpCisKK3N0YXRpY19hc3NlcnQoSU5fQTBfT0ZGU0VUID09IG9mZnNldG9mKElu
Y29taW5nUmVjb3JkLCBhMCksICJJTl9BMF9PRkZTRVQgaXMgaW5jb3JyZWN0Iik7CitzdGF0aWNf
YXNzZXJ0KElOX0ExX09GRlNFVCA9PSBvZmZzZXRvZihJbmNvbWluZ1JlY29yZCwgYTEpLCAiSU5f
QTFfT0ZGU0VUIGlzIGluY29ycmVjdCIpOworc3RhdGljX2Fzc2VydChJTl9BMl9PRkZTRVQgPT0g
b2Zmc2V0b2YoSW5jb21pbmdSZWNvcmQsIGEyKSwgIklOX0EyX09GRlNFVCBpcyBpbmNvcnJlY3Qi
KTsKK3N0YXRpY19hc3NlcnQoSU5fUzBfT0ZGU0VUID09IG9mZnNldG9mKEluY29taW5nUmVjb3Jk
LCBzMCksICJJTl9TMF9PRkZTRVQgaXMgaW5jb3JyZWN0Iik7CitzdGF0aWNfYXNzZXJ0KElOX1Mx
X09GRlNFVCA9PSBvZmZzZXRvZihJbmNvbWluZ1JlY29yZCwgczEpLCAiSU5fUzFfT0ZGU0VUIGlz
IGluY29ycmVjdCIpOworc3RhdGljX2Fzc2VydChJTl9SQV9PRkZTRVQgPT0gb2Zmc2V0b2YoSW5j
b21pbmdSZWNvcmQsIHJhKSwgIklOX1JBX09GRlNFVCBpcyBpbmNvcnJlY3QiKTsKK3N0YXRpY19h
c3NlcnQoSU5fU0laRSA9PSBzaXplb2YoSW5jb21pbmdSZWNvcmQpLCAiSU5fU0laRSBpcyBpbmNv
cnJlY3QiKTsKKworc3RydWN0IE91dGdvaW5nUmVjb3JkIHsKKyAgICB1aW50cHRyX3QgZnA7Cisg
ICAgdWludHB0cl90IHJhOworfTsKKworI2RlZmluZSBPVVRfRlBfT0ZGU0VUICgwICogUFRSX1NJ
WkUpCisjZGVmaW5lIE9VVF9SQV9PRkZTRVQgKDEgKiBQVFJfU0laRSkKKyNkZWZpbmUgT1VUX1NJ
WkUgICAgICAoMiAqIFBUUl9TSVpFKQorCitzdGF0aWNfYXNzZXJ0KE9VVF9GUF9PRkZTRVQgPT0g
b2Zmc2V0b2YoT3V0Z29pbmdSZWNvcmQsIGZwKSwgIk9VVF9GUF9PRkZTRVQgaXMgaW5jb3JyZWN0
Iik7CitzdGF0aWNfYXNzZXJ0KE9VVF9SQV9PRkZTRVQgPT0gb2Zmc2V0b2YoT3V0Z29pbmdSZWNv
cmQsIHJhKSwgIk9VVF9SQV9PRkZTRVQgaXMgaW5jb3JyZWN0Iik7CitzdGF0aWNfYXNzZXJ0KE9V
VF9TSVpFID09IHNpemVvZihPdXRnb2luZ1JlY29yZCksICJPVVRfU0laRSBpcyBpbmNvcnJlY3Qi
KTsKKworc3RydWN0IFJBUmVzdG9yYXRpb25SZWNvcmQgeworICAgIHVpbnRwdHJfdCByYTsKKyAg
ICB1aW50cHRyX3QgcGFkZGluZzsKK307CisKKyNkZWZpbmUgUkFfUkVTVE9SQVRJT05fUkFfT0ZG
U0VUICgwICogUFRSX1NJWkUpCisjZGVmaW5lIFJBX1JFU1RPUkFUSU9OX1NJWkUgICAgICAoMiAq
IFBUUl9TSVpFKQorCitzdGF0aWNfYXNzZXJ0KFJBX1JFU1RPUkFUSU9OX1JBX09GRlNFVCA9PSBv
ZmZzZXRvZihSQVJlc3RvcmF0aW9uUmVjb3JkLCByYSksICJSQV9SRVNUT1JBVElPTl9SQV9PRkZT
RVQgaXMgaW5jb3JyZWN0Iik7CitzdGF0aWNfYXNzZXJ0KFJBX1JFU1RPUkFUSU9OX1NJWkUgPT0g
c2l6ZW9mKFJBUmVzdG9yYXRpb25SZWNvcmQpLCAiUkFfUkVTVE9SQVRJT05fU0laRSBpcyBpbmNv
cnJlY3QiKTsKK3N0YXRpY19hc3NlcnQoIShzaXplb2YoUkFSZXN0b3JhdGlvblJlY29yZCkgJiAw
eDcpLCAiUkFSZXN0b3JhdGlvblJlY29yZCBtdXN0IGJlIDgtYnl0ZSBhbGlnbmVkIik7CisKK2Fz
bSAoCisgICAgIi50ZXh0IiAiXG4iCisgICAgIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoY3RpTWFz
bVByb2JlVHJhbXBvbGluZSkgIlxuIgorICAgIEhJREVfU1lNQk9MKGN0aU1hc21Qcm9iZVRyYW1w
b2xpbmUpICJcbiIKKyAgICBTWU1CT0xfU1RSSU5HKGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUpICI6
IiAiXG4iCisgICAgIi5zZXQgcHVzaCIgIlxuIgorICAgICIuc2V0IG5vcmVvcmRlciIgIlxuIgor
ICAgICIuc2V0IG5vYXQiICJcbiIKKworICAgIC8vIE1hY3JvQXNzZW1ibGVyTUlQUzo6cHJvYmUo
KSBoYXMgYWxyZWFkeSBnZW5lcmF0ZWQgY29kZSB0byBzdG9yZSBzb21lIHZhbHVlcyBpbiBhbgor
ICAgIC8vIEluY29taW5nUHJvYmVSZWNvcmQuIHNwIHBvaW50cyB0byB0aGUgSW5jb21pbmdQcm9i
ZVJlY29yZC4KKyAgICAvLworICAgIC8vIEluY29taW5nIHJlZ2lzdGVyIHZhbHVlczoKKyAgICAv
LyAgICAgYTA6IHByb2JlIGZ1bmN0aW9uCisgICAgLy8gICAgIGExOiBwcm9iZSBhcmcKKyAgICAv
LyAgICAgYTI6IFByb2JlOjpleGVjdXRlUHJvYmUKKyAgICAvLyAgICAgczA6IHNjcmF0Y2gsIHdh
cyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lCisgICAgLy8gICAgIHMxOiBzY3JhdGNoCisgICAgLy8g
ICAgIHJhOiByZXR1cm4gYWRkcmVzcworCisgICAgIm1vdmUgICAgICAkczAsICRzcCIgIlxuIgor
ICAgICJhZGRpdSAgICAgJHNwLCAkc3AsIC0iIFNUUklOR0laRV9WQUxVRV9PRigoUFJPQkVfU0la
RV9QTFVTX0VYVFJBUyArIE9VVF9TSVpFKSkgIlxuIiAvLyBTZXQgdGhlIHNwIHRvIHByb3RlY3Qg
dGhlIFByb2JlOjpTdGF0ZSBmcm9tIGludGVycnVwdHMgYmVmb3JlIHdlIGluaXRpYWxpemUgaXQu
CisgICAgIm1vdmUgICAgICAkczEsICRzcCIgIlxuIgorCisgICAgInN3ICAgICAgICAkYTAsICIg
U1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX1BST0JFX0ZVTkNUSU9OX09GRlNFVCkgIigkc3ApIiAi
XG4iIC8vIFN0b3JlIHRoZSBwcm9iZSBoYW5kbGVyIGZ1bmN0aW9uIChwcmVsb2FkZWQgaW50byBh
MCkKKyAgICAic3cgICAgICAgICRhMSwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQVJHX09G
RlNFVCkgIigkc3ApIiAiXG4iICAgICAgICAgICAgLy8gU3RvcmUgdGhlIHByb2JlIGhhbmRsZXIg
YXJnIChwcmVsb2FkZWQgaW50byBhMSkKKworICAgICJzdyAgICAgICAgJGF0LCAiIFNUUklOR0la
RV9WQUxVRV9PRihQUk9CRV9DUFVfQVRfT0ZGU0VUKSAiKCRzcCkiICJcbiIKKyAgICAic3cgICAg
ICAgICR2MCwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1YwX09GRlNFVCkgIigkc3Ap
IiAiXG4iCisgICAgInN3ICAgICAgICAkdjEsICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQ
VV9WMV9PRkZTRVQpICIoJHNwKSIgIlxuIgorCisgICAgImx3ICAgICAgICAkdjAsICIgU1RSSU5H
SVpFX1ZBTFVFX09GKElOX0EwX09GRlNFVCkgIigkczApIiAiXG4iIC8vIExvYWQgc2F2ZWQgYTAK
KyAgICAibHcgICAgICAgICR2MSwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoSU5fQTFfT0ZGU0VUKSAi
KCRzMCkiICJcbiIgLy8gTG9hZCBzYXZlZCBhMQorICAgICJsdyAgICAgICAgJGF0LCAiIFNUUklO
R0laRV9WQUxVRV9PRihJTl9BMl9PRkZTRVQpICIoJHMwKSIgIlxuIiAvLyBMb2FkIHNhdmVkIGEy
CisgICAgInN3ICAgICAgICAkdjAsICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9BMF9P
RkZTRVQpICIoJHNwKSIgIlxuIiAvLyBTdG9yZSBzYXZlZCBhMAorICAgICJzdyAgICAgICAgJHYx
LCAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfQTFfT0ZGU0VUKSAiKCRzcCkiICJcbiIg
Ly8gU3RvcmUgc2F2ZWQgYTEKKyAgICAic3cgICAgICAgICRhdCwgIiBTVFJJTkdJWkVfVkFMVUVf
T0YoUFJPQkVfQ1BVX0EyX09GRlNFVCkgIigkc3ApIiAiXG4iIC8vIFN0b3JlIHNhdmVkIGEyCisK
KyAgICAic3cgICAgICAgICRhMywgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX0EzX09G
RlNFVCkgIigkc3ApIiAiXG4iCisgICAgInN3ICAgICAgICAkdDAsICIgU1RSSU5HSVpFX1ZBTFVF
X09GKFBST0JFX0NQVV9UMF9PRkZTRVQpICIoJHNwKSIgIlxuIgorICAgICJzdyAgICAgICAgJHQx
LCAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfVDFfT0ZGU0VUKSAiKCRzcCkiICJcbiIK
KyAgICAic3cgICAgICAgICR0MiwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1QyX09G
RlNFVCkgIigkc3ApIiAiXG4iCisgICAgInN3ICAgICAgICAkdDMsICIgU1RSSU5HSVpFX1ZBTFVF
X09GKFBST0JFX0NQVV9UM19PRkZTRVQpICIoJHNwKSIgIlxuIgorICAgICJzdyAgICAgICAgJHQ0
LCAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfVDRfT0ZGU0VUKSAiKCRzcCkiICJcbiIK
KyAgICAic3cgICAgICAgICR0NSwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1Q1X09G
RlNFVCkgIigkc3ApIiAiXG4iCisgICAgInN3ICAgICAgICAkdDYsICIgU1RSSU5HSVpFX1ZBTFVF
X09GKFBST0JFX0NQVV9UNl9PRkZTRVQpICIoJHNwKSIgIlxuIgorICAgICJzdyAgICAgICAgJHQ3
LCAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfVDdfT0ZGU0VUKSAiKCRzcCkiICJcbiIK
KworICAgICJsdyAgICAgICAgJHYwLCAiIFNUUklOR0laRV9WQUxVRV9PRihJTl9TMF9PRkZTRVQp
ICIoJHMwKSIgIlxuIiAvLyBMb2FkIHNhdmVkIHMwCisgICAgImx3ICAgICAgICAkdjEsICIgU1RS
SU5HSVpFX1ZBTFVFX09GKElOX1MxX09GRlNFVCkgIigkczApIiAiXG4iIC8vIExvYWQgc2F2ZWQg
czEKKyAgICAic3cgICAgICAgICR2MCwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1Mw
X09GRlNFVCkgIigkc3ApIiAiXG4iIC8vIFN0b3JlIHNhdmVkIHMwCisgICAgInN3ICAgICAgICAk
djEsICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9TMV9PRkZTRVQpICIoJHNwKSIgIlxu
IiAvLyBTdG9yZSBzYXZlZCBzMQorCisgICAgInN3ICAgICAgICAkczIsICIgU1RSSU5HSVpFX1ZB
TFVFX09GKFBST0JFX0NQVV9TMl9PRkZTRVQpICIoJHNwKSIgIlxuIgorICAgICJzdyAgICAgICAg
JHMzLCAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfUzNfT0ZGU0VUKSAiKCRzcCkiICJc
biIKKyAgICAic3cgICAgICAgICRzNCwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1M0
X09GRlNFVCkgIigkc3ApIiAiXG4iCisgICAgInN3ICAgICAgICAkczUsICIgU1RSSU5HSVpFX1ZB
TFVFX09GKFBST0JFX0NQVV9TNV9PRkZTRVQpICIoJHNwKSIgIlxuIgorICAgICJzdyAgICAgICAg
JHM2LCAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfUzZfT0ZGU0VUKSAiKCRzcCkiICJc
biIKKyAgICAic3cgICAgICAgICRzNywgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1M3
X09GRlNFVCkgIigkc3ApIiAiXG4iCisgICAgInN3ICAgICAgICAkdDgsICIgU1RSSU5HSVpFX1ZB
TFVFX09GKFBST0JFX0NQVV9UOF9PRkZTRVQpICIoJHNwKSIgIlxuIgorICAgICJzdyAgICAgICAg
JHQ5LCAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfVDlfT0ZGU0VUKSAiKCRzcCkiICJc
biIKKyAgICAic3cgICAgICAgICRrMCwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX0sw
X09GRlNFVCkgIigkc3ApIiAiXG4iCisgICAgInN3ICAgICAgICAkazEsICIgU1RSSU5HSVpFX1ZB
TFVFX09GKFBST0JFX0NQVV9LMV9PRkZTRVQpICIoJHNwKSIgIlxuIgorICAgICJzdyAgICAgICAg
JGdwLCAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfR1BfT0ZGU0VUKSAiKCRzcCkiICJc
biIKKyAgICAic3cgICAgICAgICRmcCwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX0ZQ
X09GRlNFVCkgIigkc3ApIiAiXG4iCisKKyAgICAibHcgICAgICAgICR2MCwgIiBTVFJJTkdJWkVf
VkFMVUVfT0YoSU5fUkFfT0ZGU0VUKSAiKCRzMCkiICJcbiIgLy8gTG9hZCBzYXZlZCByYQorICAg
ICJhZGRpdSAgICAgJHMwLCAkczAsICIgU1RSSU5HSVpFX1ZBTFVFX09GKElOX1NJWkUpICJcbiIg
Ly8gQ29tcHV0ZSB0aGUgc3AgYmVmb3JlIHRoZSBwcm9iZQorICAgICJzdyAgICAgICAgJHYwLCAi
IFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfUkFfT0ZGU0VUKSAiKCRzcCkiICJcbiIgLy8g
U3RvcmUgc2F2ZWQgcmEKKyAgICAic3cgICAgICAgICRzMCwgIiBTVFJJTkdJWkVfVkFMVUVfT0Yo
UFJPQkVfQ1BVX1NQX09GRlNFVCkgIigkc3ApIiAiXG4iIC8vIFN0b3JlIG9yaWdpbmFsIHNwIGNv
bXB1dGVkIGludG8gczAKKworICAgICJzdyAgICAgICAgJHJhLCAiIFNUUklOR0laRV9WQUxVRV9P
RihTQVZFRF9QUk9CRV9SRVRVUk5fUENfT0ZGU0VUKSAiKCRzcCkiICJcbiIgLy8gU2F2ZSBhIGR1
cGxpY2F0ZSBjb3B5IG9mIHJldHVybiBwYyAoaW4gcmEpCisgICAgImFkZGl1ICAgICAkcmEsICRy
YSwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfSU5TVFJVQ1RJT05TX0FGVEVSX0NBTEwgKiBQ
VFJfU0laRSkgIlxuIiAvLyBUaGUgUEMgYWZ0ZXIgdGhlIHByb2JlIGlzIGF0IDIgaW5zdHJ1Y3Rp
b25zIHBhc3QgdGhlIHJldHVybiBwb2ludC4KKyAgICAic3cgICAgICAgICRyYSwgIiBTVFJJTkdJ
WkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1BDX09GRlNFVCkgIigkc3ApIiAiXG4iCisKKyAgICAiY2Zj
MSAgICAgICR0MCwgICQiIFNUUklOR0laRV9WQUxVRV9PRihGSVIpICJcbiIKKyAgICAic3cgICAg
ICAgICR0MCwgICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9GSVJfT0ZGU0VUKSAiKCRz
cCkiICJcbiIKKyAgICAiY2ZjMSAgICAgICR0MCwgICQiIFNUUklOR0laRV9WQUxVRV9PRihGQ0NS
KSAiXG4iCisgICAgInN3ICAgICAgICAkdDAsICAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9D
UFVfRkNDUl9PRkZTRVQpICIoJHNwKSIgIlxuIgorICAgICJjZmMxICAgICAgJHQwLCAgJCIgU1RS
SU5HSVpFX1ZBTFVFX09GKEZFWFIpICJcbiIKKyAgICAic3cgICAgICAgICR0MCwgICIgU1RSSU5H
SVpFX1ZBTFVFX09GKFBST0JFX0NQVV9GRVhSX09GRlNFVCkgIigkc3ApIiAiXG4iCisgICAgImNm
YzEgICAgICAkdDAsICAkIiBTVFJJTkdJWkVfVkFMVUVfT0YoRkVOUikgIlxuIgorICAgICJzdyAg
ICAgICAgJHQwLCAgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX0ZFTlJfT0ZGU0VUKSAi
KCRzcCkiICJcbiIKKyAgICAiY2ZjMSAgICAgICR0MCwgICQiIFNUUklOR0laRV9WQUxVRV9PRihG
Q1NSKSAiXG4iCisgICAgInN3ICAgICAgICAkdDAsICAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9C
RV9DUFVfRkNTUl9PRkZTRVQpICIoJHNwKSIgIlxuIgorCisgICAgInNkYzEgICAgICAkZjAsICAi
IFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfRjBfT0ZGU0VUKSAiKCRzcCkiICJcbiIKKyAg
ICAic2RjMSAgICAgICRmMiwgICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9GMl9PRkZT
RVQpICIoJHNwKSIgIlxuIgorICAgICJzZGMxICAgICAgJGY0LCAgIiBTVFJJTkdJWkVfVkFMVUVf
T0YoUFJPQkVfQ1BVX0Y0X09GRlNFVCkgIigkc3ApIiAiXG4iCisgICAgInNkYzEgICAgICAkZjYs
ICAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfRjZfT0ZGU0VUKSAiKCRzcCkiICJcbiIK
KyAgICAic2RjMSAgICAgICRmOCwgICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9GOF9P
RkZTRVQpICIoJHNwKSIgIlxuIgorICAgICJzZGMxICAgICAgJGYxMCwgIiBTVFJJTkdJWkVfVkFM
VUVfT0YoUFJPQkVfQ1BVX0YxMF9PRkZTRVQpICIoJHNwKSIgIlxuIgorICAgICJzZGMxICAgICAg
JGYxMiwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX0YxMl9PRkZTRVQpICIoJHNwKSIg
IlxuIgorICAgICJzZGMxICAgICAgJGYxNCwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BV
X0YxNF9PRkZTRVQpICIoJHNwKSIgIlxuIgorICAgICJzZGMxICAgICAgJGYxNiwgIiBTVFJJTkdJ
WkVfVkFMVUVfT0YoUFJPQkVfQ1BVX0YxNl9PRkZTRVQpICIoJHNwKSIgIlxuIgorICAgICJzZGMx
ICAgICAgJGYxOCwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX0YxOF9PRkZTRVQpICIo
JHNwKSIgIlxuIgorICAgICJzZGMxICAgICAgJGYyMCwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJP
QkVfQ1BVX0YyMF9PRkZTRVQpICIoJHNwKSIgIlxuIgorICAgICJzZGMxICAgICAgJGYyMiwgIiBT
VFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX0YyMl9PRkZTRVQpICIoJHNwKSIgIlxuIgorICAg
ICJzZGMxICAgICAgJGYyNCwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX0YyNF9PRkZT
RVQpICIoJHNwKSIgIlxuIgorICAgICJzZGMxICAgICAgJGYyNiwgIiBTVFJJTkdJWkVfVkFMVUVf
T0YoUFJPQkVfQ1BVX0YyNl9PRkZTRVQpICIoJHNwKSIgIlxuIgorICAgICJzZGMxICAgICAgJGYy
OCwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX0YyOF9PRkZTRVQpICIoJHNwKSIgIlxu
IgorICAgICJzZGMxICAgICAgJGYzMCwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX0Yz
MF9PRkZTRVQpICIoJHNwKSIgIlxuIgorCisgICAgIm1vdmUgICAgICAkYTAsICRzcCIgIlxuIiAv
LyBTZXQgdGhlIFByb2JlOjpTdGF0ZSogYXJnLgorICAgICJtb3ZlICAgICAgJHQ5LCAkYTIiICJc
biIgLy8gUHJvYmU6OmV4ZWN1dGVQcm9iZSgpCisgICAgImphbHIgICAgICAkdDkiICJcbiIgLy8g
Q2FsbCB0aGUgcHJvYmUgaGFuZGxlci4KKyAgICAibm9wIiAiXG4iCisKKyAgICAvLyBNYWtlIHN1
cmUgdGhlIFByb2JlOjpTdGF0ZSBpcyBlbnRpcmVseSBiZWxvdyB0aGUgcmVzdWx0IHN0YWNrIHBv
aW50ZXIgc28KKyAgICAvLyB0aGF0IHJlZ2lzdGVyIHZhbHVlcyBhcmUgc3RpbGwgcHJlc2VydmVk
IHdoZW4gd2UgY2FsbCB0aGUgaW5pdGlhbGl6ZVN0YWNrCisgICAgLy8gZnVuY3Rpb24uCisgICAg
Imx3ICAgICAgICAkdDAsICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9TUF9PRkZTRVQp
ICIoJHMxKSIgIlxuIiAvLyBSZXN1bHQgc3AuCisgICAgImFkZGl1ICAgICAkdDEsICRzMSwgIiBT
VFJJTkdJWkVfVkFMVUVfT0YoKFBST0JFX1NJWkVfUExVU19FWFRSQVMgKyBPVVRfU0laRSkpICJc
biIgLy8gRW5kIG9mIFByb2JlOjpTdGF0ZSArIGJ1ZmZlci4KKyAgICAic2x0dSAgICAgICR0Miwg
JHQwLCAkdDEiICJcbiIKKyAgICAiYmVxeiAgICAgICR0MiwgIiBMT0NBTF9MQUJFTF9TVFJJTkco
Y3RpTWFzbVByb2JlVHJhbXBvbGluZVByb2JlU3RhdGVJc1NhZmUpICJcbiIKKyAgICAibm9wIiAi
XG4iCisKKyAgICAvLyBBbGxvY2F0ZSBhIHNhZmUgcGxhY2Ugb24gdGhlIHN0YWNrIGJlbG93IHRo
ZSByZXN1bHQgc3RhY2sgcG9pbnRlciB0byBzdGFzaCB0aGUgUHJvYmU6OlN0YXRlLgorICAgICJh
ZGRpdSAgICAgJHNwLCAkdDAsIC0iIFNUUklOR0laRV9WQUxVRV9PRigoUFJPQkVfU0laRV9QTFVT
X0VYVFJBUyArIE9VVF9TSVpFKSkgIlxuIiAvLyBTZXQgdGhlIG5ldyBzcCB0byBwcm90ZWN0IHRo
YXQgbWVtb3J5IGZyb20gaW50ZXJydXB0cyBiZWZvcmUgd2UgY29weSB0aGUgUHJvYmU6OlN0YXRl
LgorCisgICAgLy8gQ29weSB0aGUgUHJvYmU6OlN0YXRlIHRvIHRoZSBzYWZlIHBsYWNlLgorICAg
IC8vIE5vdGU6IHdlIGhhdmUgdG8gY29weSBmcm9tIGxvdyBhZGRyZXNzIHRvIGhpZ2hlciBhZGRy
ZXNzIGJlY2F1c2Ugd2UncmUgbW92aW5nIHRoZQorICAgIC8vIFByb2JlOjpTdGF0ZSB0byBhIGxv
d2VyIGFkZHJlc3MuCisgICAgIm1vdmUgICAgICAkdDAsICRzMSIgIlxuIgorICAgICJtb3ZlICAg
ICAgJHQxLCAkc3AiICJcbiIKKyAgICAiYWRkaXUgICAgICR0MiwgJHMxLCAiIFNUUklOR0laRV9W
QUxVRV9PRihQUk9CRV9TSVpFX1BMVVNfRVhUUkFTKSAiXG4iCisKKyAgICBMT0NBTF9MQUJFTF9T
VFJJTkcoY3RpTWFzbVByb2JlVHJhbXBvbGluZUNvcHlMb29wKSAiOiIgIlxuIgorICAgICJsdyAg
ICAgICAgJHQzLCAwKCR0MCkiICJcbiIKKyAgICAibHcgICAgICAgICR0NCwgNCgkdDApIiAiXG4i
CisgICAgInN3ICAgICAgICAkdDMsIDAoJHQxKSIgIlxuIgorICAgICJzdyAgICAgICAgJHQ0LCA0
KCR0MSkiICJcbiIKKyAgICAiYWRkaXUgICAgICR0MCwgJHQwLCA4IiAiXG4iCisgICAgImFkZGl1
ICAgICAkdDEsICR0MSwgOCIgIlxuIgorICAgICJibmUgICAgICAgJHQwLCAkdDIsICIgTE9DQUxf
TEFCRUxfU1RSSU5HKGN0aU1hc21Qcm9iZVRyYW1wb2xpbmVDb3B5TG9vcCkgIlxuIgorICAgICJu
b3AiICJcbiIKKworICAgICJtb3ZlICAgICAgJHMxLCAkc3AiICJcbiIKKworICAgIC8vIENhbGwg
aW5pdGlhbGl6ZVN0YWNrRnVuY3Rpb24gaWYgcHJlc2VudC4KKyAgICBMT0NBTF9MQUJFTF9TVFJJ
TkcoY3RpTWFzbVByb2JlVHJhbXBvbGluZVByb2JlU3RhdGVJc1NhZmUpICI6IiAiXG4iCisgICAg
Imx3ICAgICAgICAkdDksICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0lOSVRfU1RBQ0tfRlVO
Q1RJT05fT0ZGU0VUKSAiKCRzMSkiICJcbiIKKyAgICAiYmVxeiAgICAgICR0OSwgIiBMT0NBTF9M
QUJFTF9TVFJJTkcoY3RpTWFzbVByb2JlVHJhbXBvbGluZVJlc3RvcmVSZWdpc3RlcnMpICJcbiIK
KyAgICAibm9wIiAiXG4iCisKKyAgICAibW92ZSAgICAgICRhMCwgJHMxIiAiXG4iIC8vIFNldCB0
aGUgUHJvYmU6OlN0YXRlKiBhcmcuCisgICAgImphbHIgICAgICAkdDkiICJcbiIgLy8gQ2FsbCB0
aGUgaW5pdGlhbGl6ZVN0YWNrRnVuY3Rpb24gKGxvYWRlZCBpbnRvIHQ5IGFib3ZlKS4KKyAgICAi
bm9wIiAiXG4iCisKKyAgICBMT0NBTF9MQUJFTF9TVFJJTkcoY3RpTWFzbVByb2JlVHJhbXBvbGlu
ZVJlc3RvcmVSZWdpc3RlcnMpICI6IiAiXG4iCisKKyAgICAibW92ZSAgICAgICRzcCwgJHMxIiAi
XG4iCisKKyAgICAvLyBUbyBlbmFibGUgcHJvYmVzIHRvIG1vZGlmeSByZWdpc3RlciBzdGF0ZSwg
d2UgY29weSBhbGwgcmVnaXN0ZXJzCisgICAgLy8gb3V0IG9mIHRoZSBQcm9iZTo6U3RhdGUgYmVm
b3JlIHJldHVybmluZywgZXhjZXB0IGZvciB6ZXJvLCBrMCBhbmQgazEuCisKKyAgICAibHcgICAg
ICAgICR0MCwgICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9GSVJfT0ZGU0VUKSAiKCRz
cCkiICJcbiIKKyAgICAiY3RjMSAgICAgICR0MCwgICQiIFNUUklOR0laRV9WQUxVRV9PRihGSVIp
ICJcbiIKKyAgICAibHcgICAgICAgICR0MCwgICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQ
VV9GQ0NSX09GRlNFVCkgIigkc3ApIiAiXG4iCisgICAgImN0YzEgICAgICAkdDAsICAkIiBTVFJJ
TkdJWkVfVkFMVUVfT0YoRkNDUikgIlxuIgorICAgICJsdyAgICAgICAgJHQwLCAgIiBTVFJJTkdJ
WkVfVkFMVUVfT0YoUFJPQkVfQ1BVX0ZFWFJfT0ZGU0VUKSAiKCRzcCkiICJcbiIKKyAgICAiY3Rj
MSAgICAgICR0MCwgICQiIFNUUklOR0laRV9WQUxVRV9PRihGRVhSKSAiXG4iCisgICAgImx3ICAg
ICAgICAkdDAsICAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfRkVOUl9PRkZTRVQpICIo
JHNwKSIgIlxuIgorICAgICJjdGMxICAgICAgJHQwLCAgJCIgU1RSSU5HSVpFX1ZBTFVFX09GKEZF
TlIpICJcbiIKKyAgICAibHcgICAgICAgICR0MCwgICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JF
X0NQVV9GQ1NSX09GRlNFVCkgIigkc3ApIiAiXG4iCisgICAgImN0YzEgICAgICAkdDAsICAkIiBT
VFJJTkdJWkVfVkFMVUVfT0YoRkNTUikgIlxuIgorCisgICAgImxkYzEgICAgICAkZjAsICAiIFNU
UklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfRjBfT0ZGU0VUKSAiKCRzcCkiICJcbiIKKyAgICAi
bGRjMSAgICAgICRmMiwgICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9GMl9PRkZTRVQp
ICIoJHNwKSIgIlxuIgorICAgICJsZGMxICAgICAgJGY0LCAgIiBTVFJJTkdJWkVfVkFMVUVfT0Yo
UFJPQkVfQ1BVX0Y0X09GRlNFVCkgIigkc3ApIiAiXG4iCisgICAgImxkYzEgICAgICAkZjYsICAi
IFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfRjZfT0ZGU0VUKSAiKCRzcCkiICJcbiIKKyAg
ICAibGRjMSAgICAgICRmOCwgICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9GOF9PRkZT
RVQpICIoJHNwKSIgIlxuIgorICAgICJsZGMxICAgICAgJGYxMCwgIiBTVFJJTkdJWkVfVkFMVUVf
T0YoUFJPQkVfQ1BVX0YxMF9PRkZTRVQpICIoJHNwKSIgIlxuIgorICAgICJsZGMxICAgICAgJGYx
MiwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX0YxMl9PRkZTRVQpICIoJHNwKSIgIlxu
IgorICAgICJsZGMxICAgICAgJGYxNCwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX0Yx
NF9PRkZTRVQpICIoJHNwKSIgIlxuIgorICAgICJsZGMxICAgICAgJGYxNiwgIiBTVFJJTkdJWkVf
VkFMVUVfT0YoUFJPQkVfQ1BVX0YxNl9PRkZTRVQpICIoJHNwKSIgIlxuIgorICAgICJsZGMxICAg
ICAgJGYxOCwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX0YxOF9PRkZTRVQpICIoJHNw
KSIgIlxuIgorICAgICJsZGMxICAgICAgJGYyMCwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVf
Q1BVX0YyMF9PRkZTRVQpICIoJHNwKSIgIlxuIgorICAgICJsZGMxICAgICAgJGYyMiwgIiBTVFJJ
TkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX0YyMl9PRkZTRVQpICIoJHNwKSIgIlxuIgorICAgICJs
ZGMxICAgICAgJGYyNCwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX0YyNF9PRkZTRVQp
ICIoJHNwKSIgIlxuIgorICAgICJsZGMxICAgICAgJGYyNiwgIiBTVFJJTkdJWkVfVkFMVUVfT0Yo
UFJPQkVfQ1BVX0YyNl9PRkZTRVQpICIoJHNwKSIgIlxuIgorICAgICJsZGMxICAgICAgJGYyOCwg
IiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX0YyOF9PRkZTRVQpICIoJHNwKSIgIlxuIgor
ICAgICJsZGMxICAgICAgJGYzMCwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX0YzMF9P
RkZTRVQpICIoJHNwKSIgIlxuIgorCisgICAgImx3ICAgICAgICAkYXQsICIgU1RSSU5HSVpFX1ZB
TFVFX09GKFBST0JFX0NQVV9BVF9PRkZTRVQpICIoJHNwKSIgIlxuIgorICAgICJsdyAgICAgICAg
JHYwLCAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfVjBfT0ZGU0VUKSAiKCRzcCkiICJc
biIKKyAgICAibHcgICAgICAgICR2MSwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1Yx
X09GRlNFVCkgIigkc3ApIiAiXG4iCisgICAgImx3ICAgICAgICAkYTAsICIgU1RSSU5HSVpFX1ZB
TFVFX09GKFBST0JFX0NQVV9BMF9PRkZTRVQpICIoJHNwKSIgIlxuIgorICAgICJsdyAgICAgICAg
JGExLCAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfQTFfT0ZGU0VUKSAiKCRzcCkiICJc
biIKKyAgICAibHcgICAgICAgICRhMiwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX0Ey
X09GRlNFVCkgIigkc3ApIiAiXG4iCisgICAgImx3ICAgICAgICAkYTMsICIgU1RSSU5HSVpFX1ZB
TFVFX09GKFBST0JFX0NQVV9BM19PRkZTRVQpICIoJHNwKSIgIlxuIgorICAgICJsdyAgICAgICAg
JHQyLCAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfVDJfT0ZGU0VUKSAiKCRzcCkiICJc
biIKKyAgICAibHcgICAgICAgICR0MywgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1Qz
X09GRlNFVCkgIigkc3ApIiAiXG4iCisgICAgImx3ICAgICAgICAkdDQsICIgU1RSSU5HSVpFX1ZB
TFVFX09GKFBST0JFX0NQVV9UNF9PRkZTRVQpICIoJHNwKSIgIlxuIgorICAgICJsdyAgICAgICAg
JHQ1LCAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfVDVfT0ZGU0VUKSAiKCRzcCkiICJc
biIKKyAgICAibHcgICAgICAgICR0NiwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1Q2
X09GRlNFVCkgIigkc3ApIiAiXG4iCisgICAgImx3ICAgICAgICAkdDcsICIgU1RSSU5HSVpFX1ZB
TFVFX09GKFBST0JFX0NQVV9UN19PRkZTRVQpICIoJHNwKSIgIlxuIgorICAgICJsdyAgICAgICAg
JHMwLCAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfUzBfT0ZGU0VUKSAiKCRzcCkiICJc
biIKKyAgICAibHcgICAgICAgICRzMSwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1Mx
X09GRlNFVCkgIigkc3ApIiAiXG4iCisgICAgImx3ICAgICAgICAkczIsICIgU1RSSU5HSVpFX1ZB
TFVFX09GKFBST0JFX0NQVV9TMl9PRkZTRVQpICIoJHNwKSIgIlxuIgorICAgICJsdyAgICAgICAg
JHMzLCAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfUzNfT0ZGU0VUKSAiKCRzcCkiICJc
biIKKyAgICAibHcgICAgICAgICRzNCwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1M0
X09GRlNFVCkgIigkc3ApIiAiXG4iCisgICAgImx3ICAgICAgICAkczUsICIgU1RSSU5HSVpFX1ZB
TFVFX09GKFBST0JFX0NQVV9TNV9PRkZTRVQpICIoJHNwKSIgIlxuIgorICAgICJsdyAgICAgICAg
JHM2LCAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfUzZfT0ZGU0VUKSAiKCRzcCkiICJc
biIKKyAgICAibHcgICAgICAgICRzNywgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1M3
X09GRlNFVCkgIigkc3ApIiAiXG4iCisgICAgImx3ICAgICAgICAkdDgsICIgU1RSSU5HSVpFX1ZB
TFVFX09GKFBST0JFX0NQVV9UOF9PRkZTRVQpICIoJHNwKSIgIlxuIgorICAgICJsdyAgICAgICAg
JHQ5LCAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfVDlfT0ZGU0VUKSAiKCRzcCkiICJc
biIKKyAgICAibHcgICAgICAgICRncCwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX0dQ
X09GRlNFVCkgIigkc3ApIiAiXG4iCisKKyAgICAvLyBSZW1haW5pbmcgcmVnaXN0ZXJzIHRvIHJl
c3RvcmUgYXJlOiB0MCwgdDEsIGZwLCByYSwgc3AsIGFuZCBwYy4KKworICAgIC8vIFRoZSBvbmx5
IHdheSB0byBzZXQgdGhlIHBjIG9uIE1JUFMgKGZyb20gdXNlciBzcGFjZSkgaXMgdmlhIGFuIGlu
ZGlyZWN0IGJyYW5jaAorICAgIC8vIHdoaWNoIG1lYW5zIHdlJ2xsIG5lZWQgYSBmcmVlIHJlZ2lz
dGVyIHRvIGRvIHNvLiBGb3Igb3VyIHB1cnBvc2VzLCByYQorICAgIC8vIGhhcHBlbnMgdG8gYmUg
YXZhaWxhYmxlIGluIGFwcGxpY2F0aW9ucyBvZiB0aGUgcHJvYmUgd2hlcmUgd2UgbWF5IHdhbnQg
dG8KKyAgICAvLyBjb250aW51ZSBleGVjdXRpbmcgYXQgYSBkaWZmZXJlbnQgbG9jYXRpb24gKGku
ZS4gY2hhbmdlIHRoZSBwYykgYWZ0ZXIgdGhlIHByb2JlCisgICAgLy8gcmV0dXJucy4gU28sIHRo
ZSBNSVBTIHByb2JlIGltcGxlbWVudGF0aW9uIHdpbGwgYWxsb3cgdGhlIHByb2JlIGhhbmRsZXIg
dG8KKyAgICAvLyBlaXRoZXIgbW9kaWZ5IHJhIG9yIHBjLCBidXQgbm90IGJvdGggaW4gdGhlIHNh
bWUgcHJvYmUgaW52b2NhdGlvbi4gVGhlIHByb2JlCisgICAgLy8gbWVjaGFuaXNtIGVuc3VyZXMg
dGhhdCB3ZSBuZXZlciB0cnkgdG8gbW9kaWZ5IGJvdGggcmEgYW5kIHBjIHdpdGggYSBSRUxFQVNF
X0FTU0VSVAorICAgIC8vIGluIFByb2JlOjpleGVjdXRlUHJvYmUoKS4KKworICAgIC8vIERldGVy
bWluZSBpZiB0aGUgcHJvYmUgaGFuZGxlciBjaGFuZ2VkIHRoZSBwYy4KKyAgICAibHcgICAgICAg
ICRyYSwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1NQX09GRlNFVCkgIigkc3ApIiAi
XG4iIC8vIHByZWxvYWQgdGhlIHRhcmdldCBzcC4KKyAgICAibHcgICAgICAgICR0MCwgIiBTVFJJ
TkdJWkVfVkFMVUVfT0YoU0FWRURfUFJPQkVfUkVUVVJOX1BDX09GRlNFVCkgIigkc3ApIiAiXG4i
CisgICAgImx3ICAgICAgICAkdDEsICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9QQ19P
RkZTRVQpICIoJHNwKSIgIlxuIgorICAgICJhZGRpdSAgICAgJHQwLCAkdDAsICIgU1RSSU5HSVpF
X1ZBTFVFX09GKFBST0JFX0lOU1RSVUNUSU9OU19BRlRFUl9DQUxMICogUFRSX1NJWkUpICJcbiIK
KyAgICAiYm5lICAgICAgICR0MCwgJHQxLCAiIExPQ0FMX0xBQkVMX1NUUklORyhjdGlNYXNtUHJv
YmVUcmFtcG9saW5lRW5kKSAiXG4iCisgICAgIm5vcCIgIlxuIgorCisgICAgIC8vIFdlIGRpZG4n
dCBjaGFuZ2UgdGhlIFBDLiBTbywgbGV0J3MgcHJlcGFyZSBmb3Igc2V0dGluZyBhIHBvdGVudGlh
bGx5IG5ldyByYSB2YWx1ZS4KKworICAgICAvLyAxLiBNYWtlIHJvb20gZm9yIHRoZSBSQVJlc3Rv
cmF0aW9uUmVjb3JkLiBUaGUgcHJvYmUgc2l0ZSB3aWxsIHBvcCB0aGlzIG9mZiBsYXRlci4KKyAg
ICAiYWRkaXUgICAgICRyYSwgJHJhLCAtIiBTVFJJTkdJWkVfVkFMVUVfT0YoUkFfUkVTVE9SQVRJ
T05fU0laRSkgIlxuIgorICAgICAvLyAyLiBTdG9yZSB0aGUgbHAgdmFsdWUgdG8gcmVzdG9yZSBh
dCB0aGUgcHJvYmUgcmV0dXJuIHNpdGUuCisgICAgImx3ICAgICAgICAkdDAsICIgU1RSSU5HSVpF
X1ZBTFVFX09GKFBST0JFX0NQVV9SQV9PRkZTRVQpICIoJHNwKSIgIlxuIgorICAgICJzdyAgICAg
ICAgJHQwLCAiIFNUUklOR0laRV9WQUxVRV9PRihSQV9SRVNUT1JBVElPTl9SQV9PRkZTRVQpICIo
JHJhKSIgIlxuIgorICAgICAvLyAzLiBGb3JjZSB0aGUgcmV0dXJuIHJhbXAgdG8gcmV0dXJuIHRv
IHRoZSBwcm9iZSByZXR1cm4gc2l0ZS4KKyAgICAibHcgICAgICAgICR0MCwgIiBTVFJJTkdJWkVf
VkFMVUVfT0YoU0FWRURfUFJPQkVfUkVUVVJOX1BDX09GRlNFVCkgIigkc3ApIiAiXG4iCisgICAg
InN3ICAgICAgICAkdDAsICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9QQ19PRkZTRVQp
ICIoJHNwKSIgIlxuIgorCisgICAgTE9DQUxfTEFCRUxfU1RSSU5HKGN0aU1hc21Qcm9iZVRyYW1w
b2xpbmVFbmQpICI6IiAiXG4iCisKKyAgICAvLyBGaWxsIGluIHRoZSBPdXRnb2luZ1Byb2JlUmVj
b3JkLgorICAgICJhZGRpdSAgICAgJHJhLCAkcmEsIC0iIFNUUklOR0laRV9WQUxVRV9PRihPVVRf
U0laRSkgIlxuIgorCisgICAgImx3ICAgICAgICAkdDAsICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBS
T0JFX0NQVV9GUF9PRkZTRVQpICIoJHNwKSIgIlxuIgorICAgICJsdyAgICAgICAgJHQxLCAiIFNU
UklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfUENfT0ZGU0VUKSAiKCRzcCkiICJcbiIgLy8gU2V0
IHVwIHRoZSBvdXRnb2luZyByZWNvcmQgc28gdGhhdCB3ZSdsbCBqdW1wIHRvIHRoZSBuZXcgUEMu
CisgICAgInN3ICAgICAgICAkdDAsICIgU1RSSU5HSVpFX1ZBTFVFX09GKE9VVF9GUF9PRkZTRVQp
ICIoJHJhKSIgIlxuIgorICAgICJzdyAgICAgICAgJHQxLCAiIFNUUklOR0laRV9WQUxVRV9PRihP
VVRfUkFfT0ZGU0VUKSAiKCRyYSkiICJcbiIKKyAgICAibHcgICAgICAgICR0MCwgIiBTVFJJTkdJ
WkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1QwX09GRlNFVCkgIigkc3ApIiAiXG4iCisgICAgImx3ICAg
ICAgICAkdDEsICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9UMV9PRkZTRVQpICIoJHNw
KSIgIlxuIgorICAgICJtb3ZlICAgICAgJHNwLCAkcmEiICJcbiIKKworICAgIC8vIFJlc3RvcmUg
dGhlIHJlbWFpbmluZyByZWdpc3RlcnMuCisgICAgImx3ICAgICAgICAkZnAsICIgU1RSSU5HSVpF
X1ZBTFVFX09GKE9VVF9GUF9PRkZTRVQpICIoJHNwKSIgIlxuIgorICAgICJsdyAgICAgICAgJHJh
LCAiIFNUUklOR0laRV9WQUxVRV9PRihPVVRfUkFfT0ZGU0VUKSAiKCRzcCkiICJcbiIKKyAgICAi
YWRkaXUgICAgICRzcCwgJHNwLCAiIFNUUklOR0laRV9WQUxVRV9PRihPVVRfU0laRSkgIlxuIgor
ICAgICJqciAgICAgICAgJHJhIiAiXG4iCisgICAgIm5vcCIgIlxuIgorICAgICIuc2V0IHBvcCIg
IlxuIgorKTsKKyNlbmRpZiAvLyBDT01QSUxFUihHQ0NfT1JfQ0xBTkcpCisKK3ZvaWQgTWFjcm9B
c3NlbWJsZXI6OnByb2JlKFByb2JlOjpGdW5jdGlvbiBmdW5jdGlvbiwgdm9pZCogYXJnKQorewor
ICAgIHN1YjMyKFRydXN0ZWRJbW0zMihzaXplb2YoSW5jb21pbmdSZWNvcmQpKSwgc3ApOworICAg
IHN0b3JlMzIoYTAsIEFkZHJlc3Moc3AsIG9mZnNldG9mKEluY29taW5nUmVjb3JkLCBhMCkpKTsK
KyAgICBzdG9yZTMyKGExLCBBZGRyZXNzKHNwLCBvZmZzZXRvZihJbmNvbWluZ1JlY29yZCwgYTEp
KSk7CisgICAgc3RvcmUzMihhMiwgQWRkcmVzcyhzcCwgb2Zmc2V0b2YoSW5jb21pbmdSZWNvcmQs
IGEyKSkpOworICAgIHN0b3JlMzIoczAsIEFkZHJlc3Moc3AsIG9mZnNldG9mKEluY29taW5nUmVj
b3JkLCBzMCkpKTsKKyAgICBzdG9yZTMyKHMxLCBBZGRyZXNzKHNwLCBvZmZzZXRvZihJbmNvbWlu
Z1JlY29yZCwgczEpKSk7CisgICAgc3RvcmUzMihyYSwgQWRkcmVzcyhzcCwgb2Zmc2V0b2YoSW5j
b21pbmdSZWNvcmQsIHJhKSkpOworICAgIG1vdmUoVHJ1c3RlZEltbVB0cihyZWludGVycHJldF9j
YXN0PHZvaWQqPihmdW5jdGlvbikpLCBhMCk7CisgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFyZyks
IGExKTsKKyAgICBtb3ZlKFRydXN0ZWRJbW1QdHIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oUHJv
YmU6OmV4ZWN1dGVQcm9iZSkpLCBhMik7CisgICAgbW92ZShUcnVzdGVkSW1tUHRyKHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCo+KGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUpKSwgczApOworICAgIG1fYXNz
ZW1ibGVyLmphbHIoczApOworICAgIG1fYXNzZW1ibGVyLm5vcCgpOworICAgIC8vIElmIHlvdSBj
aGFuZ2UgdGhlIGZvbGxvd2luZyBpbnN0cnVjdGlvbnMsIGJlIHN1cmUgdG8gdXBkYXRlIFBST0JF
X0lOU1RSVUNUSU9OU19BRlRFUl9DQUxMIGFzIHdlbGwKKyAgICBsb2FkMzIoQWRkcmVzcyhzcCwg
b2Zmc2V0b2YoUkFSZXN0b3JhdGlvblJlY29yZCwgcmEpKSwgcmEpOworICAgIGFkZDMyKFRydXN0
ZWRJbW0zMihzaXplb2YoUkFSZXN0b3JhdGlvblJlY29yZCkpLCBzcCk7Cit9CisjZW5kaWYgLy8g
RU5BQkxFKE1BU01fUFJPQkUpCisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5B
QkxFKEFTU0VNQkxFUikgJiYgQ1BVKE1JUFMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL1Byb2JlQ29udGV4dC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL1Byb2JlQ29udGV4dC5jcHAKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1
NQppbmRleCA3YjEyZDA1Li4yY2EwODQyCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvUHJvYmVDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL1Byb2JlQ29udGV4dC5jcHAKQEAgLTQwLDYgKzQwLDEwIEBAIHZvaWQgZXhlY3V0ZVByb2Jl
KFN0YXRlKiBzdGF0ZSkKICAgICBhdXRvJiBjcHUgPSBjb250ZXh0LmNwdTsKICAgICB2b2lkKiBv
cmlnaW5hbExSID0gY3B1Lmdwcjx2b2lkKj4oQVJNNjRSZWdpc3RlcnM6OmxyKTsKICAgICB2b2lk
KiBvcmlnaW5hbFBDID0gY3B1LnBjKCk7CisjZWxpZiBDUFUoTUlQUykKKyAgICBhdXRvJiBjcHUg
PSBjb250ZXh0LmNwdTsKKyAgICB2b2lkKiBvcmlnaW5hbFJBID0gY3B1Lmdwcjx2b2lkKj4oTUlQ
U1JlZ2lzdGVyczo6cmEpOworICAgIHZvaWQqIG9yaWdpbmFsUEMgPSBjcHUucGMoKTsKICNlbmRp
ZgogCiAgICAgc3RhdGUtPmluaXRpYWxpemVTdGFja0Z1bmN0aW9uID0gbnVsbHB0cjsKQEAgLTQ5
LDYgKzUzLDkgQEAgdm9pZCBleGVjdXRlUHJvYmUoU3RhdGUqIHN0YXRlKQogI2lmIENQVShBUk02
NCkKICAgICAvLyBUaGUgQVJNNjQgcHJvYmUgdHJhbXBvbGluZSBkb2VzIG5vdCBzdXBwb3J0IGNo
YW5naW5nIGJvdGggbHIgYW5kIHBjLgogICAgIFJFTEVBU0VfQVNTRVJUKG9yaWdpbmFsUEMgPT0g
Y3B1LnBjKCkgfHwgb3JpZ2luYWxMUiA9PSBjcHUuZ3ByPHZvaWQqPihBUk02NFJlZ2lzdGVyczo6
bHIpKTsKKyNlbGlmIENQVShNSVBTKQorICAgIC8vIFRoZSBNSVBTIHByb2JlIHRyYW1wb2xpbmUg
ZG9lcyBub3Qgc3VwcG9ydCBjaGFuZ2luZyBib3RoIHJhIGFuZCBwYy4KKyAgICBSRUxFQVNFX0FT
U0VSVChvcmlnaW5hbFBDID09IGNwdS5wYygpIHx8IG9yaWdpbmFsUkEgPT0gY3B1Lmdwcjx2b2lk
Kj4oTUlQU1JlZ2lzdGVyczo6cmEpKTsKICNlbmRpZgogCiAgICAgaWYgKGNvbnRleHQuaGFzV3Jp
dGVzVG9GbHVzaCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL1Byb2JlQ29udGV4dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Qcm9i
ZUNvbnRleHQuaApvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IDBlNTIwMzQu
LjM5NDFhODkKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Qcm9iZUNvbnRl
eHQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1Byb2JlQ29udGV4dC5o
CkBAIC0xMTUsNyArMTE1LDcgQEAgaW5saW5lIHZvaWQqJiBDUFVTdGF0ZTo6cGMoKQogI2VsaWYg
Q1BVKEFSTV9USFVNQjIpIHx8IENQVShBUk1fVFJBRElUSU9OQUwpCiAgICAgcmV0dXJuICpyZWlu
dGVycHJldF9jYXN0PHZvaWQqKj4oJmdwcihBUk1SZWdpc3RlcnM6OnBjKSk7CiAjZWxpZiBDUFUo
TUlQUykKLSAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiAqcmVp
bnRlcnByZXRfY2FzdDx2b2lkKio+KCZzcHIoTUlQU1JlZ2lzdGVyczo6cGMpKTsKICNlbHNlCiAj
ZXJyb3IgIlVuc3VwcG9ydGVkIENQVSIKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL3Rlc3RtYXNtLmNwcApvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1Cmlu
ZGV4IDdkMzRjOWYuLjkyN2YzNmUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci90ZXN0bWFzbS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0
bWFzbS5jcHAKQEAgLTEzNSw2ICsxMzUsOSBAQCBib29sIGlzU3BlY2lhbEdQUihNYWNyb0Fzc2Vt
Ymxlcjo6UmVnaXN0ZXJJRCBpZCkKICNpZiBDUFUoQVJNNjQpCiAgICAgaWYgKGlkID09IEFSTTY0
UmVnaXN0ZXJzOjp4MTgpCiAgICAgICAgIHJldHVybiB0cnVlOworI2VsaWYgQ1BVKE1JUFMpCisg
ICAgaWYgKGlkID09IE1JUFNSZWdpc3RlcnM6Onplcm8gfHwgaWQgPT0gTUlQU1JlZ2lzdGVyczo6
azAgfHwgaWQgPT0gTUlQU1JlZ2lzdGVyczo6azEpCisgICAgICAgIHJldHVybiB0cnVlOwogI2Vu
ZGlmCiAgICAgcmV0dXJuIGZhbHNlOwogfQpAQCAtMzg4LDYgKzM5MSw5IEBAIHZvaWQgdGVzdFBy
b2JlUHJlc2VydmVzR1BSUygpCiAgICAgICAgICAgICAgICAgQ0hFQ0tfRVEoY3B1LmdwcihpZCks
IHRlc3RXb3JkKGlkKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBmb3IgKGF1dG8gaWQg
PSBDQ2FsbEhlbHBlcnM6OmZpcnN0RlBSZWdpc3RlcigpOyBpZCA8PSBDQ2FsbEhlbHBlcnM6Omxh
c3RGUFJlZ2lzdGVyKCk7IGlkID0gbmV4dElEKGlkKSkKKyNpZiBDUFUoTUlQUykKKyAgICAgICAg
ICAgICAgICBpZiAoIShpZCAmIDEpKQorI2VuZGlmCiAgICAgICAgICAgICAgICAgQ0hFQ0tfRVEo
Y3B1LmZwcjx1aW50NjRfdD4oaWQpLCB0ZXN0V29yZDY0KGlkKSk7CiAgICAgICAgIH0pOwogCkBA
IC00MTQsNiArNDIwLDkgQEAgdm9pZCB0ZXN0UHJvYmVQcmVzZXJ2ZXNHUFJTKCkKICAgICAgICAg
ICAgICAgICBDSEVDS19FUShjcHUuZ3ByKGlkKSwgb3JpZ2luYWxTdGF0ZS5ncHIoaWQpKTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIGZvciAoYXV0byBpZCA9IENDYWxsSGVscGVyczo6Zmly
c3RGUFJlZ2lzdGVyKCk7IGlkIDw9IENDYWxsSGVscGVyczo6bGFzdEZQUmVnaXN0ZXIoKTsgaWQg
PSBuZXh0SUQoaWQpKQorI2lmIENQVShNSVBTKQorICAgICAgICAgICAgICAgIGlmICghKGlkICYg
MSkpCisjZW5kaWYKICAgICAgICAgICAgICAgICBDSEVDS19FUShjcHUuZnByPHVpbnQ2NF90Pihp
ZCksIG9yaWdpbmFsU3RhdGUuZnByPHVpbnQ2NF90PihpZCkpOwogICAgICAgICB9KTsKIApAQCAt
NDI5LDcgKzQzOCw5IEBAIHZvaWQgdGVzdFByb2JlTW9kaWZpZXNTdGFja1BvaW50ZXIoV1RGOjpG
dW5jdGlvbjx2b2lkKihQcm9iZTo6Q29udGV4dCYpPiBjb21wdXRlCiAgICAgQ1BVU3RhdGUgb3Jp
Z2luYWxTdGF0ZTsKICAgICB2b2lkKiBvcmlnaW5hbFNQIHsgbnVsbHB0ciB9OwogICAgIHZvaWQq
IG1vZGlmaWVkU1AgeyBudWxscHRyIH07CisjaWYgIShDUFUoTUlQUykpCiAgICAgdWludHB0cl90
IG1vZGlmaWVkRmxhZ3MgeyAwIH07CisjZW5kaWYKICAgICAKICNpZiBDUFUoWDg2KSB8fCBDUFUo
WDg2XzY0KQogICAgIGF1dG8gZmxhZ3NTUFIgPSBYODZSZWdpc3RlcnM6OmVmbGFnczsKQEAgLTQ2
MSw5ICs0NzIsMTEgQEAgdm9pZCB0ZXN0UHJvYmVNb2RpZmllc1N0YWNrUG9pbnRlcihXVEY6OkZ1
bmN0aW9uPHZvaWQqKFByb2JlOjpDb250ZXh0Jik+IGNvbXB1dGUKICAgICAgICAgICAgICAgICBj
cHUuZnByKGlkKSA9IGJpdHdpc2VfY2FzdDxkb3VibGU+KHRlc3RXb3JkNjQoaWQpKTsKICAgICAg
ICAgICAgIH0KIAorI2lmICEoQ1BVKE1JUFMpKQogICAgICAgICAgICAgb3JpZ2luYWxTdGF0ZS5z
cHIoZmxhZ3NTUFIpID0gY3B1LnNwcihmbGFnc1NQUik7CiAgICAgICAgICAgICBtb2RpZmllZEZs
YWdzID0gb3JpZ2luYWxTdGF0ZS5zcHIoZmxhZ3NTUFIpIF4gZmxhZ3NNYXNrOwogICAgICAgICAg
ICAgY3B1LnNwcihmbGFnc1NQUikgPSBtb2RpZmllZEZsYWdzOworI2VuZGlmCiAKICAgICAgICAg
ICAgIG9yaWdpbmFsU1AgPSBjcHUuc3AoKTsKICAgICAgICAgICAgIG1vZGlmaWVkU1AgPSBjb21w
dXRlTW9kaWZpZWRTdGFja1BvaW50ZXIoY29udGV4dCk7CkBAIC00ODQsOCArNDk3LDEzIEBAIHZv
aWQgdGVzdFByb2JlTW9kaWZpZXNTdGFja1BvaW50ZXIoV1RGOjpGdW5jdGlvbjx2b2lkKihQcm9i
ZTo6Q29udGV4dCYpPiBjb21wdXRlCiAgICAgICAgICAgICAgICAgQ0hFQ0tfRVEoY3B1Lmdwcihp
ZCksIHRlc3RXb3JkKGlkKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBmb3IgKGF1dG8g
aWQgPSBDQ2FsbEhlbHBlcnM6OmZpcnN0RlBSZWdpc3RlcigpOyBpZCA8PSBDQ2FsbEhlbHBlcnM6
Omxhc3RGUFJlZ2lzdGVyKCk7IGlkID0gbmV4dElEKGlkKSkKKyNpZiBDUFUoTUlQUykKKyAgICAg
ICAgICAgICAgICBpZiAoIShpZCAmIDEpKQorI2VuZGlmCiAgICAgICAgICAgICAgICAgQ0hFQ0tf
RVEoY3B1LmZwcjx1aW50NjRfdD4oaWQpLCB0ZXN0V29yZDY0KGlkKSk7CisjaWYgIShDUFUoTUlQ
UykpCiAgICAgICAgICAgICBDSEVDS19FUShjcHUuc3ByKGZsYWdzU1BSKSAmIGZsYWdzTWFzaywg
bW9kaWZpZWRGbGFncyAmIGZsYWdzTWFzayk7CisjZW5kaWYKICAgICAgICAgICAgIENIRUNLX0VR
KGNwdS5zcCgpLCBtb2RpZmllZFNQKTsKICAgICAgICAgfSk7CiAKQEAgLTUwMCw3ICs1MTgsOSBA
QCB2b2lkIHRlc3RQcm9iZU1vZGlmaWVzU3RhY2tQb2ludGVyKFdURjo6RnVuY3Rpb248dm9pZCoo
UHJvYmU6OkNvbnRleHQmKT4gY29tcHV0ZQogICAgICAgICAgICAgfQogICAgICAgICAgICAgZm9y
IChhdXRvIGlkID0gQ0NhbGxIZWxwZXJzOjpmaXJzdEZQUmVnaXN0ZXIoKTsgaWQgPD0gQ0NhbGxI
ZWxwZXJzOjpsYXN0RlBSZWdpc3RlcigpOyBpZCA9IG5leHRJRChpZCkpCiAgICAgICAgICAgICAg
ICAgY3B1LmZwcihpZCkgPSBvcmlnaW5hbFN0YXRlLmZwcihpZCk7CisjaWYgIShDUFUoTUlQUykp
CiAgICAgICAgICAgICBjcHUuc3ByKGZsYWdzU1BSKSA9IG9yaWdpbmFsU3RhdGUuc3ByKGZsYWdz
U1BSKTsKKyNlbmRpZgogICAgICAgICAgICAgY3B1LnNwKCkgPSBvcmlnaW5hbFNQOwogICAgICAg
ICB9KTsKIApAQCAtNTE0LDggKzUzNCwxMyBAQCB2b2lkIHRlc3RQcm9iZU1vZGlmaWVzU3RhY2tQ
b2ludGVyKFdURjo6RnVuY3Rpb248dm9pZCooUHJvYmU6OkNvbnRleHQmKT4gY29tcHV0ZQogICAg
ICAgICAgICAgICAgIENIRUNLX0VRKGNwdS5ncHIoaWQpLCBvcmlnaW5hbFN0YXRlLmdwcihpZCkp
OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZm9yIChhdXRvIGlkID0gQ0NhbGxIZWxwZXJz
OjpmaXJzdEZQUmVnaXN0ZXIoKTsgaWQgPD0gQ0NhbGxIZWxwZXJzOjpsYXN0RlBSZWdpc3Rlcigp
OyBpZCA9IG5leHRJRChpZCkpCisjaWYgQ1BVKE1JUFMpCisgICAgICAgICAgICAgICAgaWYgKCEo
aWQgJiAxKSkKKyNlbmRpZgogICAgICAgICAgICAgICAgIENIRUNLX0VRKGNwdS5mcHI8dWludDY0
X3Q+KGlkKSwgb3JpZ2luYWxTdGF0ZS5mcHI8dWludDY0X3Q+KGlkKSk7CisjaWYgIShDUFUoTUlQ
UykpCiAgICAgICAgICAgICBDSEVDS19FUShjcHUuc3ByKGZsYWdzU1BSKSAmIGZsYWdzTWFzaywg
b3JpZ2luYWxTdGF0ZS5zcHIoZmxhZ3NTUFIpICYgZmxhZ3NNYXNrKTsKKyNlbmRpZgogICAgICAg
ICAgICAgQ0hFQ0tfRVEoY3B1LnNwKCksIG9yaWdpbmFsU1ApOwogICAgICAgICB9KTsKIApAQCAt
NjI4LDkgKzY1MywxMSBAQCB2b2lkIHRlc3RQcm9iZU1vZGlmaWVzU3RhY2tWYWx1ZXMoKQogICAg
ICAgICAgICAgICAgIG9yaWdpbmFsU3RhdGUuZnByKGlkKSA9IGNwdS5mcHIoaWQpOwogICAgICAg
ICAgICAgICAgIGNwdS5mcHIoaWQpID0gYml0d2lzZV9jYXN0PGRvdWJsZT4odGVzdFdvcmQ2NChp
ZCkpOwogICAgICAgICAgICAgfQorI2lmICEoQ1BVKE1JUFMpKQogICAgICAgICAgICAgb3JpZ2lu
YWxTdGF0ZS5zcHIoZmxhZ3NTUFIpID0gY3B1LnNwcihmbGFnc1NQUik7CiAgICAgICAgICAgICBt
b2RpZmllZEZsYWdzID0gb3JpZ2luYWxTdGF0ZS5zcHIoZmxhZ3NTUFIpIF4gZmxhZ3NNYXNrOwog
ICAgICAgICAgICAgY3B1LnNwcihmbGFnc1NQUikgPSBtb2RpZmllZEZsYWdzOworI2VuZGlmCiAK
ICAgICAgICAgICAgIC8vIEVuc3VyZSB0aGF0IHdlJ2xsIGJlIHdyaXRpbmcgb3ZlciB0aGUgcmVn
aW9ucyBvZiB0aGUgc3RhY2sgd2hlcmUgdGhlIFByb2JlOjpTdGF0ZSBpcy4KICAgICAgICAgICAg
IG9yaWdpbmFsU1AgPSBjcHUuc3AoKTsKQEAgLTY2NCw4ICs2OTEsMTMgQEAgdm9pZCB0ZXN0UHJv
YmVNb2RpZmllc1N0YWNrVmFsdWVzKCkKICAgICAgICAgICAgICAgICBDSEVDS19FUShjcHUuZ3By
KGlkKSwgdGVzdFdvcmQoaWQpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGZvciAoYXV0
byBpZCA9IENDYWxsSGVscGVyczo6Zmlyc3RGUFJlZ2lzdGVyKCk7IGlkIDw9IENDYWxsSGVscGVy
czo6bGFzdEZQUmVnaXN0ZXIoKTsgaWQgPSBuZXh0SUQoaWQpKQorI2lmIENQVShNSVBTKQorICAg
ICAgICAgICAgICAgIGlmICghKGlkICYgMSkpCisjZW5kaWYKICAgICAgICAgICAgICAgICBDSEVD
S19FUShjcHUuZnByPHVpbnQ2NF90PihpZCksIHRlc3RXb3JkNjQoaWQpKTsKKyNpZiAhKENQVShN
SVBTKSkKICAgICAgICAgICAgIENIRUNLX0VRKGNwdS5zcHIoZmxhZ3NTUFIpICYgZmxhZ3NNYXNr
LCBtb2RpZmllZEZsYWdzICYgZmxhZ3NNYXNrKTsKKyNlbmRpZgogICAgICAgICAgICAgQ0hFQ0tf
RVEoY3B1LnNwKCksIG5ld1NQKTsKIAogICAgICAgICAgICAgLy8gVmFsaWRhdGUgdGhlIHN0YWNr
IHZhbHVlcy4KQEAgLTY4OSw3ICs3MjEsOSBAQCB2b2lkIHRlc3RQcm9iZU1vZGlmaWVzU3RhY2tW
YWx1ZXMoKQogICAgICAgICAgICAgfQogICAgICAgICAgICAgZm9yIChhdXRvIGlkID0gQ0NhbGxI
ZWxwZXJzOjpmaXJzdEZQUmVnaXN0ZXIoKTsgaWQgPD0gQ0NhbGxIZWxwZXJzOjpsYXN0RlBSZWdp
c3RlcigpOyBpZCA9IG5leHRJRChpZCkpCiAgICAgICAgICAgICAgICAgY3B1LmZwcihpZCkgPSBv
cmlnaW5hbFN0YXRlLmZwcihpZCk7CisjaWYgIShDUFUoTUlQUykpCiAgICAgICAgICAgICBjcHUu
c3ByKGZsYWdzU1BSKSA9IG9yaWdpbmFsU3RhdGUuc3ByKGZsYWdzU1BSKTsKKyNlbmRpZgogICAg
ICAgICAgICAgY3B1LnNwKCkgPSBvcmlnaW5hbFNQOwogICAgICAgICB9KTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpvbGQgbW9kZSAx
MDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IGYxNjEzNTQuLjFmNmJkZjAKLS0tIGEvU291cmNl
L1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBA
QAorMjAxNy0xMS0yMSAgU3RhbmlzbGF2IE9jb3ZhaiAgPHN0YW5pc2xhdi5vY292YWpAcnQtcmsu
Y29tPgorCisgICAgICAgIFtERkddW01JUFNdIEVuYWJsZSBERkcgSklUIG9uIE1JUFMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU0NDcKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9y
bS5oOgorCiAyMDE3LTExLTE5ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29t
PgogCiAgICAgICAgIFJlbW92ZSB1bnVzZWQgVE9VQ0hfSUNPTl9MT0FESU5HIGZlYXR1cmUgZmxh
ZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaCBiL1NvdXJjZS9XVEYvd3Rm
L1BsYXRmb3JtLmgKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCA1Y2Q0M2Yy
Li4xZDgyYWQ1Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKKysrIGIvU291cmNlL1dU
Ri93dGYvUGxhdGZvcm0uaApAQCAtODAzLDkgKzgwMywxMCBAQAogI2lmIENQVShBUk1fVFJBRElU
SU9OQUwpCiAjZGVmaW5lIEVOQUJMRV9ERkdfSklUIDEKICNlbmRpZgotLyogRklYTUU6IE1JUFMg
Y2Fubm90IGVuYWJsZSB0aGUgREZHIHVudGlsIGl0IGhhcyBzdXBwb3J0IGZvciBNYWNyb0Fzc2Vt
Ymxlcjo6cHJvYmUoKS4KLSAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzU0NDcKLSovCisvKiBFbmFibGUgdGhlIERGRyBKSVQgb24gTUlQUy4gKi8KKyNpZiBDUFUo
TUlQUykKKyNkZWZpbmUgRU5BQkxFX0RGR19KSVQgMQorI2VuZGlmCiAjZW5kaWYKIAogLyogQ29u
Y3VycmVudCBKUyBvbmx5IHdvcmtzIG9uIDY0LWJpdCBwbGF0Zm9ybXMgYmVjYXVzZSBpdCByZXF1
aXJlcyB0aGF0CkBAIC04MjQsNyArODI1LDcgQEAKICNkZWZpbmUgRU5BQkxFX0ZBU1RfVExTX0pJ
VCAxCiAjZW5kaWYKIAotI2lmIENQVShYODYpIHx8IENQVShYODZfNjQpIHx8IENQVShBUk1fVEhV
TUIyKSB8fCBDUFUoQVJNNjQpIHx8IENQVShBUk1fVFJBRElUSU9OQUwpCisjaWYgQ1BVKFg4Nikg
fHwgQ1BVKFg4Nl82NCkgfHwgQ1BVKEFSTV9USFVNQjIpIHx8IENQVShBUk02NCkgfHwgQ1BVKEFS
TV9UUkFESVRJT05BTCkgfHwgQ1BVKE1JUFMpCiAjZGVmaW5lIEVOQUJMRV9NQVNNX1BST0JFIDEK
ICNlbHNlCiAjZGVmaW5lIEVOQUJMRV9NQVNNX1BST0JFIDAK
</data>

          </attachment>
      

    </bug>

</bugzilla>