<?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>147974</bug_id>
          
          <creation_ts>2015-08-13 02:02:30 -0700</creation_ts>
          <short_desc>Remove all uses of PassRefPtr in WebCore/css</short_desc>
          <delta_ts>2022-04-14 23:43:38 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>157772</dup_id>
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>148432</dependson>
          <blocked>144092</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Gyuyoung Kim">gyuyoung.kim</reporter>
          <assigned_to name="Gyuyoung Kim">gyuyoung.kim</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>mrobinson</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1117207</commentid>
    <comment_count>0</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2015-08-13 02:02:30 -0700</bug_when>
    <thetext>SSIA</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117208</commentid>
    <comment_count>1</comment_count>
      <attachid>258887</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2015-08-13 02:08:01 -0700</bug_when>
    <thetext>Created attachment 258887
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117944</commentid>
    <comment_count>2</comment_count>
      <attachid>259094</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2015-08-15 08:54:49 -0700</bug_when>
    <thetext>Created attachment 259094
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117945</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-15 08:56:34 -0700</bug_when>
    <thetext>Attachment 259094 did not pass style-queue:

ERROR: Source/WebCore/css/CSSSegmentedFontFace.h:50:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSSegmentedFontFace.h:63:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSFontFaceLoadEvent.cpp:42:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSFontFaceLoadEvent.cpp:42:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/Rect.h:37:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/Rect.h:38:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/Rect.h:39:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/Rect.h:40:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/MediaQueryMatcher.cpp:36:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/MediaQueryMatcher.cpp:36:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/MediaQueryMatcher.cpp:115:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/MediaQueryMatcher.cpp:115:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSCrossfadeValue.h:46:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSCrossfadeValue.h:46:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSCrossfadeValue.h:64:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSCrossfadeValue.h:75:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSCrossfadeValue.h:75:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/SVGCSSComputedStyleDeclaration.cpp:96:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSBasicShapes.cpp:51:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSShadowValue.h:34:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSShadowValue.h:35:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSShadowValue.h:36:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSShadowValue.h:37:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSShadowValue.h:38:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSShadowValue.h:39:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSShadowValue.h:56:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSShadowValue.h:57:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSShadowValue.h:58:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSShadowValue.h:59:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSShadowValue.h:60:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSShadowValue.h:61:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSBasicShapes.h:56:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSBasicShapes.h:80:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSBasicShapes.h:81:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSBasicShapes.h:82:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSBasicShapes.h:83:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSBasicShapes.h:108:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSBasicShapes.h:109:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSBasicShapes.h:110:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSBasicShapes.h:111:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSBasicShapes.h:143:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSBasicShapes.h:144:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSBasicShapes.h:145:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSBasicShapes.h:166:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSBasicShapes.h:167:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSBasicShapes.h:168:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSBasicShapes.h:169:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSBasicShapes.h:189:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSBasicShapes.h:189:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSFilterImageValue.h:83:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSFilterImageValue.h:83:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/StyleResolver.h:227:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSParser.h:129:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSParser.h:133:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSParser.h:134:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSParser.h:137:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSParser.h:209:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSParser.h:328:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSParser.h:352:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSParser.h:357:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSParser.h:439:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSParser.h:561:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSAnimationTriggerScrollValue.h:37:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSAnimationTriggerScrollValue.h:37:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSAnimationTriggerScrollValue.h:51:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSAnimationTriggerScrollValue.h:51:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSSelector.h:331:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSSelector.h:347:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSFontFaceSource.h:69:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/StyleRule.h:196:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/StyleRule.h:206:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSKeyframesRule.cpp:56:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSKeyframesRule.cpp:63:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSImageGeneratorValue.cpp:82:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSImageGeneratorValue.cpp:94:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSFontFaceLoadEvent.h:62:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSFontFaceLoadEvent.h:67:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSFontFaceLoadEvent.h:67:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSFontFaceLoadEvent.h:81:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSFontFaceLoadEvent.h:81:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/StyleProperties.cpp:687:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSProperty.h:66:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSComputedStyleDeclaration.h:50:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSComputedStyleDeclaration.h:71:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSComputedStyleDeclaration.h:88:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSComputedStyleDeclaration.h:100:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSCalculationValue.cpp:201:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSCalculationValue.cpp:294:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSCalculationValue.cpp:351:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSCalculationValue.cpp:351:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSCalculationValue.cpp:364:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSCalculationValue.cpp:364:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSCalculationValue.cpp:517:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSCalculationValue.cpp:517:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSReflectValue.h:39:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSReflectValue.h:40:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSReflectValue.h:40:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSReflectValue.h:56:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSReflectValue.h:56:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSReflectValue.h:56:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/StyleSheetContents.h:97:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/StyleSheetContents.h:130:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSBorderImage.cpp:25:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSBorderImage.cpp:25:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSBorderImage.cpp:25:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSBorderImage.cpp:25:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSBorderImage.cpp:25:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/MediaQueryMatcher.h:47:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/MediaQueryMatcher.h:47:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/MediaQueryMatcher.h:59:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/MediaQueryMatcher.h:59:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/MediaQueryList.h:41:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/MediaQueryList.h:41:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/MediaQueryList.h:47:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/MediaQueryList.h:48:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/MediaQueryList.h:53:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/MediaQueryList.h:53:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/StyleSheetContents.cpp:131:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/StyleSh
eetContents.cpp:209:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/BasicShapeFunctions.cpp:182:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSSegmentedFontFace.cpp:87:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSSegmentedFontFace.cpp:156:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSBorderImage.h:29:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSBorderImage.h:29:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSBorderImage.h:29:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSBorderImage.h:29:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSBorderImage.h:29:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/StyleResolver.cpp:365:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/FontLoader.h:63:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/FontLoader.h:93:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSFontFace.h:46:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSFontFace.h:94:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSImageGeneratorValue.h:66:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSImageGeneratorValue.h:76:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/FontLoader.cpp:51:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/FontLoader.cpp:51:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/FontLoader.cpp:75:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/FontLoader.cpp:75:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/FontLoader.cpp:169:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/FontLoader.cpp:231:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSComputedStyleDeclaration.cpp:1275:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSComputedStyleDeclaration.cpp:1283:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSBorderImageSliceValue.h:38:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSBorderImageSliceValue.h:55:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSShadowValue.cpp:29:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSShadowValue.cpp:30:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSShadowValue.cpp:31:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSShadowValue.cpp:32:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSShadowValue.cpp:33:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSShadowValue.cpp:34:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSParser.cpp:1450:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSParser.cpp:1589:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSParser.cpp:1607:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSParser.cpp:1846:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSParser.cpp:5357:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSParser.cpp:6174:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSParser.cpp:7632:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSParser.cpp:7860:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSParser.cpp:7869:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSParser.cpp:7890:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSParser.cpp:7899:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSParser.cpp:7908:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSParser.cpp:7932:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSParser.cpp:8220:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSParser.cpp:10079:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSParser.cpp:12048:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSParser.cpp:12059:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSParser.cpp:12144:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSFunctionValue.h:43:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSFunctionValue.h:56:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSSelector.cpp:782:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSGradientValue.h:67:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSGradientValue.h:68:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSGradientValue.h:69:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSGradientValue.h:70:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSGradientValue.h:142:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSGradientValue.h:185:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSGradientValue.h:186:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSGradientValue.h:188:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSGradientValue.h:189:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSGradientValue.h:191:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSGradientValue.h:192:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/StyleRuleImport.h:39:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/StyleRuleImport.h:73:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSKeyframesRule.h:49:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSKeyframesRule.h:50:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSBorderImageSliceValue.cpp:34:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/StyleRuleImport.cpp:37:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/StyleRuleImport.cpp:42:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/MediaQueryList.cpp:30:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/MediaQueryList.cpp:30:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/MediaQueryList.cpp:35:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/MediaQueryList.cpp:35:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/MediaQueryList.cpp:53:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/MediaQueryList.cpp:61:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/StyleProperties.h:201:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSFunctionValue.cpp:43:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/LengthRepeat.h:39:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/LengthRepeat.h:45:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/LengthRepeat.h:58:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/StyleRule.cpp:332:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSStyleSheet.h:88:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSStyleSheet.cpp:221:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/Counter.h:31:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/Counter.h:31:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/Counter.h:31:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/Counter.h:42:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/Counter.h:43:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/Counter.h:44:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/Counter.h:61:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/Counter.h:61:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/Counter.h:61:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Total errors found: 212 in 71 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>1118005</commentid>
    <comment_count>4</comment_count>
      <attachid>259094</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2015-08-15 19:24:03 -0700</bug_when>
    <thetext>Comment on attachment 259094
Patch

We need to remove the rule regarding PassRefPtr. I would like to do it in new bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1120588</commentid>
    <comment_count>5</comment_count>
      <attachid>259843</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2015-08-25 07:40:16 -0700</bug_when>
    <thetext>Created attachment 259843
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1120589</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-25 07:41:11 -0700</bug_when>
    <thetext>Attachment 259843 did not pass style-queue:

ERROR: Source/WebCore/css/CSSSegmentedFontFace.h:63:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSFontFaceLoadEvent.cpp:42:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSFontFaceLoadEvent.cpp:42:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/Rect.h:37:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/Rect.h:38:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/Rect.h:39:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/Rect.h:40:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/MediaQueryMatcher.cpp:36:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/MediaQueryMatcher.cpp:36:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/MediaQueryMatcher.cpp:115:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/MediaQueryMatcher.cpp:115:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSCrossfadeValue.h:46:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSCrossfadeValue.h:46:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSCrossfadeValue.h:64:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSCrossfadeValue.h:75:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSCrossfadeValue.h:75:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/SVGCSSComputedStyleDeclaration.cpp:96:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSBasicShapes.cpp:51:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSShadowValue.h:34:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSShadowValue.h:35:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSShadowValue.h:36:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSShadowValue.h:37:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSShadowValue.h:38:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSShadowValue.h:39:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSShadowValue.h:56:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSShadowValue.h:57:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSShadowValue.h:58:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSShadowValue.h:59:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSShadowValue.h:60:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSShadowValue.h:61:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSBasicShapes.h:56:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSBasicShapes.h:80:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSBasicShapes.h:81:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSBasicShapes.h:82:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSBasicShapes.h:83:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSBasicShapes.h:108:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSBasicShapes.h:109:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSBasicShapes.h:110:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSBasicShapes.h:111:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSBasicShapes.h:143:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSBasicShapes.h:144:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSBasicShapes.h:145:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSBasicShapes.h:166:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSBasicShapes.h:167:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSBasicShapes.h:168:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSBasicShapes.h:169:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSBasicShapes.h:189:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSBasicShapes.h:189:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSFilterImageValue.h:83:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSFilterImageValue.h:83:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/StyleResolver.h:227:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSParser.h:129:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSParser.h:133:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSParser.h:134:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSParser.h:137:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSParser.h:209:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSParser.h:328:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSParser.h:354:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSParser.h:359:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSParser.h:441:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSParser.h:563:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSAnimationTriggerScrollValue.h:37:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSAnimationTriggerScrollValue.h:37:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSAnimationTriggerScrollValue.h:51:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSAnimationTriggerScrollValue.h:51:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSSelector.h:331:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSSelector.h:347:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSFontFaceSource.h:69:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/StyleRule.h:196:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/StyleRule.h:206:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSKeyframesRule.cpp:56:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSKeyframesRule.cpp:63:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSImageGeneratorValue.cpp:82:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSImageGeneratorValue.cpp:94:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSFontFaceLoadEvent.h:62:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSFontFaceLoadEvent.h:67:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSFontFaceLoadEvent.h:67:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSFontFaceLoadEvent.h:81:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSFontFaceLoadEvent.h:81:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/StyleProperties.cpp:687:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSProperty.h:66:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSComputedStyleDeclaration.h:50:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSComputedStyleDeclaration.h:71:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSComputedStyleDeclaration.h:88:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSComputedStyleDeclaration.h:100:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSCalculationValue.cpp:201:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSCalculationValue.cpp:294:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSCalculationValue.cpp:351:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSCalculationValue.cpp:351:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSCalculationValue.cpp:364:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSCalculationValue.cpp:364:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSCalculationValue.cpp:517:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSCalculationValue.cpp:517:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSReflectValue.h:39:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSReflectValue.h:40:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSReflectValue.h:40:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSReflectValue.h:56:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSReflectValue.h:56:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSReflectValue.h:56:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/StyleSheetContents.h:97:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/StyleSheetContents.h:130:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSBorderImage.cpp:25:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSBorderImage.cpp:25:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSBorderImage.cpp:25:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSBorderImage.cpp:25:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSBorderImage.cpp:25:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/MediaQueryMatcher.h:47:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/MediaQueryMatcher.h:47:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/MediaQueryMatcher.h:59:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/MediaQueryMatcher.h:59:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/MediaQueryList.h:41:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/MediaQueryList.h:41:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/MediaQueryList.h:47:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/MediaQueryList.h:48:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/MediaQueryList.h:53:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/MediaQueryList.h:53:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/StyleSheetContents.cpp:131:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/StyleSheetContents.cpp:209:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/BasicS
hapeFunctions.cpp:182:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSSegmentedFontFace.cpp:154:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSBorderImage.h:29:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSBorderImage.h:29:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSBorderImage.h:29:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSBorderImage.h:29:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSBorderImage.h:29:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/StyleResolver.cpp:365:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/FontLoader.h:63:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/FontLoader.h:93:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSImageGeneratorValue.h:66:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSImageGeneratorValue.h:76:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/FontLoader.cpp:51:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/FontLoader.cpp:51:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/FontLoader.cpp:75:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/FontLoader.cpp:75:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/FontLoader.cpp:169:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/FontLoader.cpp:231:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSComputedStyleDeclaration.cpp:1313:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSComputedStyleDeclaration.cpp:1321:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSBorderImageSliceValue.h:38:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSBorderImageSliceValue.h:55:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSShadowValue.cpp:29:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSShadowValue.cpp:30:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSShadowValue.cpp:31:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSShadowValue.cpp:32:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSShadowValue.cpp:33:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSShadowValue.cpp:34:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSParser.cpp:1452:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSParser.cpp:1591:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSParser.cpp:1609:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSParser.cpp:1848:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSParser.cpp:5373:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSParser.cpp:6190:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSParser.cpp:7654:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSParser.cpp:7882:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSParser.cpp:7891:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSParser.cpp:7912:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSParser.cpp:7921:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSParser.cpp:7930:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSParser.cpp:7954:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSParser.cpp:8242:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSParser.cpp:10102:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSParser.cpp:12124:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSParser.cpp:12135:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSParser.cpp:12220:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSFunctionValue.h:43:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSFunctionValue.h:56:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSSelector.cpp:782:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSGradientValue.h:67:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSGradientValue.h:68:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSGradientValue.h:69:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSGradientValue.h:70:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSGradientValue.h:142:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSGradientValue.h:185:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSGradientValue.h:186:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSGradientValue.h:188:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSGradientValue.h:189:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSGradientValue.h:191:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSGradientValue.h:192:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/StyleRuleImport.h:39:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/StyleRuleImport.h:73:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSKeyframesRule.h:49:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSKeyframesRule.h:50:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSBorderImageSliceValue.cpp:34:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/StyleRuleImport.cpp:37:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/StyleRuleImport.cpp:42:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/MediaQueryList.cpp:30:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/MediaQueryList.cpp:30:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/MediaQueryList.cpp:35:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/MediaQueryList.cpp:35:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/MediaQueryList.cpp:53:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/MediaQueryList.cpp:61:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/StyleProperties.h:201:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSFunctionValue.cpp:43:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/LengthRepeat.h:39:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/LengthRepeat.h:45:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/LengthRepeat.h:58:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/StyleRule.cpp:332:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSStyleSheet.h:89:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/CSSStyleSheet.cpp:223:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/Counter.h:31:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/Counter.h:31:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/Counter.h:31:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/Counter.h:42:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/Counter.h:43:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/Counter.h:44:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/Counter.h:61:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/Counter.h:61:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/css/Counter.h:61:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Total errors found: 208 in 70 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>1120819</commentid>
    <comment_count>7</comment_count>
      <attachid>259916</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2015-08-25 20:05:36 -0700</bug_when>
    <thetext>Created attachment 259916
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1120900</commentid>
    <comment_count>8</comment_count>
      <attachid>259916</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2015-08-26 02:45:40 -0700</bug_when>
    <thetext>Comment on attachment 259916
Patch

Missing to add &amp;&amp; in RefPtr argument.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122144</commentid>
    <comment_count>9</comment_count>
      <attachid>260276</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2015-08-31 03:08:24 -0700</bug_when>
    <thetext>Created attachment 260276
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122577</commentid>
    <comment_count>10</comment_count>
      <attachid>260276</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-09-01 10:42:56 -0700</bug_when>
    <thetext>Comment on attachment 260276
WIP

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

&gt; Source/WebCore/css/CSSAnimationTriggerScrollValue.h:39
&gt;          return adoptRef(*new CSSAnimationTriggerScrollValue(startValue, endValue));

Do we need explicit WTF::move on lines like this one to avoid unnecessary reference count churn, or not? Lets not make lots of global changes until we are sure about that!

&gt; Source/WebCore/css/CSSAnimationTriggerScrollValue.h:54
&gt;          , m_startValue(startValue)
&gt;          , m_endValue(endValue)

Do we need explicit WTF::move on lines like this one to avoid unnecessary reference count churn, or not?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122579</commentid>
    <comment_count>11</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-09-01 10:43:50 -0700</bug_when>
    <thetext>We need to figure out what the principles are before we do huge patches. I am particularly unclear on where we do and don’t need WTF::move to get the full benefit of a &amp;&amp; argument that is intended to be moved in.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1861739</commentid>
    <comment_count>12</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2022-04-14 23:43:38 -0700</bug_when>
    <thetext>PassRefPtr was removed from WebKit in https://trac.webkit.org/changeset/216839/webkit.

*** This bug has been marked as a duplicate of bug 157772 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258887</attachid>
            <date>2015-08-13 02:08:01 -0700</date>
            <delta_ts>2015-08-15 08:54:41 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-147974-20150813180743.patch</filename>
            <type>text/plain</type>
            <size>28910</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4MzcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzkwMDA1ZjkwYWIxOGY2
M2RlMTM3MDgxODkwZTE1ODViNTY3ZDZkMC4uY2E1NDJlZjkzZDEzNjU0NzA3YmYzYTdlYTcxN2Zm
YTY3NTg2Njc4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDE1LTA4LTEzICBHeXV5
b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZW1vdmUgYWxs
IHVzZXMgb2YgUGFzc1JlZlB0ciBpbiBXZWJDb3JlL2NzcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ3OTc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BTISkuCisKKyAgICAg
ICAgKiBjc3MvQmFzaWNTaGFwZUZ1bmN0aW9ucy5oOgorICAgICAgICAqIGNzcy9DU1NGb250RmFj
ZVNyY1ZhbHVlLmg6CisgICAgICAgICogY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDU1NGb250U2VsZWN0b3I6OmZhbGxiYWNrRm9udEF0KToKKyAgICAgICAgKiBj
c3MvQ1NTRm9udFNlbGVjdG9yLmg6CisgICAgICAgICogY3NzL0NTU0ZvbnRWYWx1ZS5oOgorICAg
ICAgICAqIGNzcy9DU1NHcmlkTGluZU5hbWVzVmFsdWUuaDoKKyAgICAgICAgKiBjc3MvQ1NTSW1h
Z2VHZW5lcmF0b3JWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NJbWFnZUdlbmVyYXRv
clZhbHVlOjppbWFnZSk6CisgICAgICAgICogY3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuaDoK
KyAgICAgICAgKiBjc3MvQ1NTSW5oZXJpdGVkVmFsdWUuaDoKKyAgICAgICAgKiBjc3MvQ1NTSW5p
dGlhbFZhbHVlLmg6CisgICAgICAgICogY3NzL0NTU0xpbmVCb3hDb250YWluVmFsdWUuaDoKKyAg
ICAgICAgKiBjc3MvQ1NTTmFtZWRJbWFnZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNT
U05hbWVkSW1hZ2VWYWx1ZTo6aW1hZ2UpOgorICAgICAgICAqIGNzcy9DU1NOYW1lZEltYWdlVmFs
dWUuaDoKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJv
cmRlckltYWdlUGFyc2VDb250ZXh0Ojpjb21taXRXZWJLaXRCb3JkZXJJbWFnZSk6CisgICAgICAg
IChXZWJDb3JlOjp2YWx1ZUZyb21TaWRlS2V5d29yZCk6CisgICAgICAgIChXZWJDb3JlOjpwYXJz
ZUdyYWRpZW50Q29sb3JPcktleXdvcmQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpw
b3BSdWxlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OmNyZWF0ZVZpZXdwb3J0
UnVsZSk6CisgICAgICAgICogY3NzL0NTU1BhcnNlci5oOgorICAgICAgICAqIGNzcy9DU1NQcmlt
aXRpdmVWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6Z2V0
UkdCQ29sb3JWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmg6CisgICAg
ICAgICogY3NzL0NTU1RpbWluZ0Z1bmN0aW9uVmFsdWUuaDoKKyAgICAgICAgKiBjc3MvQ1NTVW5p
Y29kZVJhbmdlVmFsdWUuaDoKKyAgICAgICAgKiBjc3MvQ1NTVmFsdWVMaXN0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1ZhbHVlTGlzdDo6Y29weSk6CisgICAgICAgICogY3NzL0NTU1ZhbHVl
TGlzdC5oOgorICAgICAgICAqIGNzcy9DU1NWYWx1ZVBvb2wuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTVmFsdWVQb29sOjpjcmVhdGVGb250RmFjZVZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NT
VmFsdWVQb29sLmg6CisgICAgICAgICogY3NzL1BhaXIuaDoKKyAgICAgICAgKiBjc3MvU3R5bGVS
ZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpwc2V1ZG9TdHls
ZUZvckVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6c3R5bGVJbWFn
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpjYWNoZWRPclBlbmRpbmdGcm9t
VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6Z2VuZXJhdGVkT3JQZW5k
aW5nRnJvbVZhbHVlKToKKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5oOgorICAgICAgICAq
IGNzcy9TdHlsZVJ1bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSdWxlQmFzZTo6Y3Jl
YXRlQ1NTT01XcmFwcGVyKToKKyAgICAgICAgKiBjc3MvU3R5bGVSdWxlLmg6CisgICAgICAgICog
Y3NzL1N0eWxlU2hlZXRMaXN0Lmg6CisgICAgICAgICogY3NzL1dlYktpdENTU0ZpbHRlclZhbHVl
LmNwcDoKKyAgICAgICAgKiBjc3MvV2ViS2l0Q1NTRmlsdGVyVmFsdWUuaDoKKyAgICAgICAgKiBj
c3MvV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuY3BwOgorICAgICAgICAqIGNzcy9XZWJLaXRDU1NU
cmFuc2Zvcm1WYWx1ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRTZWxlY3Rv
ci5oOgorCiAyMDE1LTA4LTEyICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgog
CiAgICAgICAgIE1vdmUgUmVuZGVyQm94LXNwZWNpZmljIFNjcm9sbCBTbmFwIGNvZGUgZnJvbSBS
ZW5kZXJFbGVtZW50IHRvIFJlbmRlckJveApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0Jhc2ljU2hhcGVGdW5jdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9CYXNpY1NoYXBlRnVu
Y3Rpb25zLmgKaW5kZXggZWMzZTIzZWI0OTAyNTc0ZGU4MjYzMTc3MTFlOWJiZDQxMTk5NmI0YS4u
MDczN2QwM2E1MDZiZjdlM2UwNDJiMjQ1MzMwZWQwMTlmNThhOGEzNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0Jhc2ljU2hhcGVGdW5jdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQmFzaWNTaGFwZUZ1bmN0aW9ucy5oCkBAIC0zMSw3ICszMSw2IEBACiAjZGVmaW5lIEJh
c2ljU2hhcGVGdW5jdGlvbnNfaAogCiAjaW5jbHVkZSAiQmFzaWNTaGFwZXMuaCIKLSNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5oCmluZGV4IGMzODZhZmViOGZmNjUxMjFhMDBlZWY2
NGNiNzZkOWQyZjY3MmE5YTAuLmYzYWFmZjkzYWE2YTM2MWJlYmM1OTI1ZGFkMTZmYzJjY2JkNjEz
YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuaApAQCAtMjgsNyAr
MjgsNiBAQAogCiAjaW5jbHVkZSAiQ1NTVmFsdWUuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJj
ZUhhbmRsZS5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0ZvbnRTZWxlY3Rvci5jcHAKaW5kZXggMjY5ZGRmY2RhN2VlZThjZjU5YzAzYmFhMTFjYjE3MWQ1
ZDQ4ZGI4MS4uY2NhZDY5Y2VkMDAyODgzZDFkNzY1OWI4MjAzZmJlMzcwNjFkMjY2MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAKQEAgLTYxMSw3ICs2MTEsNyBAQCBzaXpl
X3QgQ1NTRm9udFNlbGVjdG9yOjpmYWxsYmFja0ZvbnRDb3VudCgpCiAgICAgcmV0dXJuIDA7CiB9
CiAKLVBhc3NSZWZQdHI8Rm9udD4gQ1NTRm9udFNlbGVjdG9yOjpmYWxsYmFja0ZvbnRBdChjb25z
dCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbiwgc2l6ZV90IGluZGV4KQorUmVmUHRy
PEZvbnQ+IENTU0ZvbnRTZWxlY3Rvcjo6ZmFsbGJhY2tGb250QXQoY29uc3QgRm9udERlc2NyaXB0
aW9uJiBmb250RGVzY3JpcHRpb24sIHNpemVfdCBpbmRleCkKIHsKICAgICBBU1NFUlRfVU5VU0VE
KGluZGV4LCAhaW5kZXgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9u
dFNlbGVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmgKaW5kZXgg
NGJlNzQwODEyOTk2NDU0ZTlmZWIzMGU5N2UwNDVlMDI2ZTVjNzMyYy4uN2M1ZDAyYzk0YjJmNjE1
NDkyYjUwZWQ5M2RmNTJkZDUxNDg3ZDIwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ZvbnRTZWxlY3Rvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0
b3IuaApAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIEZvbnRSYW5nZXMg
Zm9udFJhbmdlc0ZvckZhbWlseShjb25zdCBGb250RGVzY3JpcHRpb24mLCBjb25zdCBBdG9taWNT
dHJpbmcmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHNpemVfdCBmYWxsYmFja0ZvbnRDb3VudCgp
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGb250PiBmYWxsYmFja0ZvbnRBdChj
b25zdCBGb250RGVzY3JpcHRpb24mLCBzaXplX3QpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVm
UHRyPEZvbnQ+IGZhbGxiYWNrRm9udEF0KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIHNpemVfdCkg
b3ZlcnJpZGU7CiAgICAgQ1NTU2VnbWVudGVkRm9udEZhY2UqIGdldEZvbnRGYWNlKGNvbnN0IEZv
bnREZXNjcmlwdGlvbiYsIGNvbnN0IEF0b21pY1N0cmluZyYgZmFtaWx5KTsKIAogICAgIHZpcnR1
YWwgYm9vbCByZXNvbHZlc0ZhbWlseUZvcihjb25zdCBGb250RGVzY3JpcHRpb24mKSBjb25zdCBv
dmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250VmFsdWUuaCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250VmFsdWUuaAppbmRleCA1MjBhNDdmZWY1NTc2NTEy
OGNmNzZhMTNjNDYxYmZjOGU5MTgyYTMyLi5kODM1YTg4ZjMyMzFhZGY3MTgyN2Y3MmZkYmE0YWJh
OThjOTFjZmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFZhbHVlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRWYWx1ZS5oCkBAIC0yMiw3ICsyMiw2IEBA
CiAjZGVmaW5lIENTU0ZvbnRWYWx1ZV9oCiAKICNpbmNsdWRlICJDU1NWYWx1ZS5oIgotI2luY2x1
ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JpZExpbmVO
YW1lc1ZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JpZExpbmVOYW1lc1ZhbHVlLmgK
aW5kZXggMmZkZGJmODk2Yzc4NWNjMTEzNDdiM2Q3YzMwOWQwOGY1OTQ2ZTVlMy4uZjhjNmM5NTFi
MjY3NTRhYTZiMzEwNGQxMTJkZTNhYWNkMDg5OGZhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0dyaWRMaW5lTmFtZXNWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NHcmlkTGluZU5hbWVzVmFsdWUuaApAQCAtMzMsNyArMzMsNiBAQAogCiAjaWYgRU5BQkxFKENT
U19HUklEX0xBWU9VVCkKICNpbmNsdWRlICJDU1NWYWx1ZUxpc3QuaCIKLSNpbmNsdWRlIDx3dGYv
UGFzc1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmNwcAppbmRleCBmZTQwMGMxNmI0OTY3NzczZmJm
YjdlNmJiMzNmN2FhZjJiOTliMGY4Li4wM2VlMGM5ODI4YzI4OTQ1YWM2ODY4ZWJmNGE1Zjk5M2Zj
YzdhYjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0b3JW
YWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUu
Y3BwCkBAIC0xMDYsNyArMTA2LDcgQEAgdm9pZCBDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjpDYWNo
ZWRHZW5lcmF0ZWRJbWFnZTo6ZXZpY3Rpb25UaW1lckZpcmVkKCkKICAgICBtX293bmVyLmV2aWN0
Q2FjaGVkR2VuZXJhdGVkSW1hZ2UobV9zaXplKTsKIH0KIAotUGFzc1JlZlB0cjxJbWFnZT4gQ1NT
SW1hZ2VHZW5lcmF0b3JWYWx1ZTo6aW1hZ2UoUmVuZGVyRWxlbWVudCogcmVuZGVyZXIsIGNvbnN0
IEZsb2F0U2l6ZSYgc2l6ZSkKK1JlZlB0cjxJbWFnZT4gQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6
aW1hZ2UoUmVuZGVyRWxlbWVudCogcmVuZGVyZXIsIGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKIHsK
ICAgICBzd2l0Y2ggKGNsYXNzVHlwZSgpKSB7CiAgICAgY2FzZSBDYW52YXNDbGFzczoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5oCmluZGV4IGM5YjU1NmNkYTA3
YzU3MWVhZDE3ZDkxMDVjMTg3NDg3ODg5NjhkYTEuLjFjODZiZTY1MDJlZDc2YTc4ODkyNTRkZmM4
MjQ5MTg1Mjc1ZGU1N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdl
bmVyYXRvclZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlR2VuZXJhdG9y
VmFsdWUuaApAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRDbGllbnQoUmVu
ZGVyRWxlbWVudCopOwogICAgIHZvaWQgcmVtb3ZlQ2xpZW50KFJlbmRlckVsZW1lbnQqKTsKIAot
ICAgIFBhc3NSZWZQdHI8SW1hZ2U+IGltYWdlKFJlbmRlckVsZW1lbnQqLCBjb25zdCBGbG9hdFNp
emUmKTsKKyAgICBSZWZQdHI8SW1hZ2U+IGltYWdlKFJlbmRlckVsZW1lbnQqLCBjb25zdCBGbG9h
dFNpemUmKTsKIAogICAgIGJvb2wgaXNGaXhlZFNpemUoKSBjb25zdDsKICAgICBGbG9hdFNpemUg
Zml4ZWRTaXplKGNvbnN0IFJlbmRlckVsZW1lbnQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NJbmhlcml0ZWRWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0luaGVy
aXRlZFZhbHVlLmgKaW5kZXggOGE2Mzc2NWI1M2JhNzcyN2Y4ZDU2NmY1MWRjMDRhMTY0NzNmM2E3
OC4uODU3MDQxYmJlNTJkNjBmNmY1Njc1YThiODJjOGEwN2IzNDEzZmVhNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0luaGVyaXRlZFZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0luaGVyaXRlZFZhbHVlLmgKQEAgLTIyLDcgKzIyLDYgQEAKICNkZWZpbmUgQ1NT
SW5oZXJpdGVkVmFsdWVfaAogCiAjaW5jbHVkZSAiQ1NTVmFsdWUuaCIKLSNpbmNsdWRlIDx3dGYv
UGFzc1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NJbml0aWFsVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJ
bml0aWFsVmFsdWUuaAppbmRleCBhNzExYWRmMWZkZmY5MTNiODE4ZmE2OGE0ZTVlNGY5M2IwMzg1
OTI4Li44ZmJhYjlmODU1NDg2NTg1NGI5YzJhOWU4YWEwZWM0NTc1NDFiNTMzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW5pdGlhbFZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0luaXRpYWxWYWx1ZS5oCkBAIC0yMiw3ICsyMiw2IEBACiAjZGVmaW5lIENTU0lu
aXRpYWxWYWx1ZV9oCiAKICNpbmNsdWRlICJDU1NWYWx1ZS5oIgotI2luY2x1ZGUgPHd0Zi9QYXNz
UmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0xpbmVCb3hDb250YWluVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NMaW5lQm94Q29udGFpblZhbHVlLmgKaW5kZXggMTYwMTYyMzI1NGM1ZGIzN2U3ZGI3YTgwNjBl
MmYzZTk0Mjk3Nzg3Ny4uZWM1M2RhMjQ5MmUyMTJkMWI0MTI1N2FjYjU4NDEyNDA2NWQxZGIwZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0xpbmVCb3hDb250YWluVmFsdWUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTGluZUJveENvbnRhaW5WYWx1ZS5oCkBAIC0yNyw3
ICsyNyw2IEBACiAjZGVmaW5lIENTU0xpbmVCb3hDb250YWluVmFsdWVfaAogCiAjaW5jbHVkZSAi
Q1NTVmFsdWUuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU05hbWVkSW1hZ2VWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTmFt
ZWRJbWFnZVZhbHVlLmNwcAppbmRleCAxYWRkNTQ2ZjUzYzczZjVkNWY4ZDMxNDdlMWE0NzY3YWJi
Y2RjNGViLi4wNDY3YmYxOTcxYWI0NzRhZDhmZDE1MzAyYzVkNmFjZDJlOGE2MmMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTmFtZWRJbWFnZVZhbHVlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTTmFtZWRJbWFnZVZhbHVlLmNwcApAQCAtMzYsMTQgKzM2LDE0IEBA
IFN0cmluZyBDU1NOYW1lZEltYWdlVmFsdWU6OmN1c3RvbUNTU1RleHQoKSBjb25zdAogICAgIHJl
dHVybiBtYWtlU3RyaW5nKCItd2Via2l0LW5hbWVkLWltYWdlKCIsIG1fbmFtZSwgJyknKTsKIH0K
IAotUGFzc1JlZlB0cjxJbWFnZT4gQ1NTTmFtZWRJbWFnZVZhbHVlOjppbWFnZShSZW5kZXJFbGVt
ZW50KiwgY29uc3QgRmxvYXRTaXplJiBzaXplKQorUmVmUHRyPEltYWdlPiBDU1NOYW1lZEltYWdl
VmFsdWU6OmltYWdlKFJlbmRlckVsZW1lbnQqLCBjb25zdCBGbG9hdFNpemUmIHNpemUpCiB7CiAg
ICAgaWYgKHNpemUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIG1f
Z2VuZXJhdGVkSW1hZ2UgPSBOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2U6OmNyZWF0ZShtX25hbWUs
IHNpemUpOwogCi0gICAgcmV0dXJuIG1fZ2VuZXJhdGVkSW1hZ2UucmVsZWFzZSgpOworICAgIHJl
dHVybiBtX2dlbmVyYXRlZEltYWdlOwogfQogCiBib29sIENTU05hbWVkSW1hZ2VWYWx1ZTo6ZXF1
YWxzKGNvbnN0IENTU05hbWVkSW1hZ2VWYWx1ZSYgb3RoZXIpIGNvbnN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTTmFtZWRJbWFnZVZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTTmFtZWRJbWFnZVZhbHVlLmgKaW5kZXggZjFjZGFhNjMzODVkYThjNDY2YzJhNjg1Mzcz
NzVmMWZlNzg1NmZiYi4uZjZhMzI3MDUyYjg2YTE2N2MwYjY0MTA5YjBhMjgzYTA1MjZiMjFhOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU05hbWVkSW1hZ2VWYWx1ZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NOYW1lZEltYWdlVmFsdWUuaApAQCAtNDYsNyArNDYsNyBA
QCBwdWJsaWM6CiAgICAgYm9vbCBpc0ZpeGVkU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CiAgICAgYm9vbCBpc1BlbmRpbmcoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgUGFz
c1JlZlB0cjxJbWFnZT4gaW1hZ2UoUmVuZGVyRWxlbWVudCosIGNvbnN0IEZsb2F0U2l6ZSYpOwor
ICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UoUmVuZGVyRWxlbWVudCosIGNvbnN0IEZsb2F0U2l6ZSYp
OwogCiAgICAgYm9vbCBlcXVhbHMoY29uc3QgQ1NTTmFtZWRJbWFnZVZhbHVlJikgY29uc3Q7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKaW5kZXggNGIxZTQ4ZWQzNDE5Zjg5MDMyODYwYjY4Yjhm
ZjMzZmMyNzMzM2U4MS4uODU4NTU4MWJjMDgxMGUzZDhiMDU0N2RhYzRhMzFlOWM3MzE3YzcwNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKQEAgLTc5MTUsNyArNzkxNSw3IEBAIHN0cnVjdCBC
b3JkZXJJbWFnZVBhcnNlQ29udGV4dCB7CiAgICAgICAgIG1fYWxsb3dJbWFnZSA9ICFtX2ltYWdl
OwogICAgIH0KIAotICAgIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IGNvbW1pdFdlYktpdEJvcmRlcklt
YWdlKCkKKyAgICBSZWY8Q1NTVmFsdWU+IGNvbW1pdFdlYktpdEJvcmRlckltYWdlKCkKICAgICB7
CiAgICAgICAgIHJldHVybiBjcmVhdGVCb3JkZXJJbWFnZVZhbHVlKG1faW1hZ2UsIG1faW1hZ2VT
bGljZSwgbV9ib3JkZXJTbGljZSwgbV9vdXRzZXQsIG1fcmVwZWF0KTsKICAgICB9CkBAIC04NjQ5
LDcgKzg2NDksNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VEZXByZWNhdGVkR3JhZGllbnQoQ1NT
UGFyc2VyVmFsdWVMaXN0JiB2YWx1ZUxpc3QsIFJlZlB0cjxDUwogICAgIHJldHVybiB0cnVlOwog
fQogCi1zdGF0aWMgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gdmFsdWVGcm9tU2lkZUtl
eXdvcmQoQ1NTUGFyc2VyVmFsdWUmIHZhbHVlLCBib29sJiBpc0hvcml6b250YWwpCitzdGF0aWMg
UmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiB2YWx1ZUZyb21TaWRlS2V5d29yZChDU1NQYXJzZXJW
YWx1ZSYgdmFsdWUsIGJvb2wmIGlzSG9yaXpvbnRhbCkKIHsKICAgICBpZiAodmFsdWUudW5pdCAh
PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0lERU5UKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
QEAgLTg2NjksNyArODY2OSw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVl
PiB2YWx1ZUZyb21TaWRlS2V5d29yZChDU1NQYXJzZXJWYWx1ZSYgdmFsdWUsCiAgICAgcmV0dXJu
IGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZSh2YWx1ZS5pZCk7CiB9CiAKLXN0
YXRpYyBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBwYXJzZUdyYWRpZW50Q29sb3JPcktl
eXdvcmQoQ1NTUGFyc2VyJiBwYXJzZXIsIENTU1BhcnNlclZhbHVlJiB2YWx1ZSkKK3N0YXRpYyBS
ZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHBhcnNlR3JhZGllbnRDb2xvck9yS2V5d29yZChDU1NQ
YXJzZXImIHBhcnNlciwgQ1NTUGFyc2VyVmFsdWUmIHZhbHVlKQogewogICAgIENTU1ZhbHVlSUQg
aWQgPSB2YWx1ZS5pZDsKICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVXZWJraXRUZXh0IHx8IENTU1Bh
cnNlcjo6aXNWYWxpZFN5c3RlbUNvbG9yVmFsdWUoaWQpIHx8IGlkID09IENTU1ZhbHVlTWVudSB8
fCBpZCA9PSBDU1NWYWx1ZUN1cnJlbnRjb2xvcikKQEAgLTEyMTUyLDcgKzEyMTUyLDcgQEAgdm9p
ZCBDU1NQYXJzZXI6OmFkZE5ld1J1bGVUb1NvdXJjZVRyZWUoUGFzc1JlZlB0cjxDU1NSdWxlU291
cmNlRGF0YT4gcnVsZSkKICAgICAgICAgbV9jdXJyZW50UnVsZURhdGFTdGFjay0+bGFzdCgpLT5j
aGlsZFJ1bGVzLmFwcGVuZChydWxlKTsKIH0KIAotUGFzc1JlZlB0cjxDU1NSdWxlU291cmNlRGF0
YT4gQ1NTUGFyc2VyOjpwb3BSdWxlRGF0YSgpCitSZWZQdHI8Q1NTUnVsZVNvdXJjZURhdGE+IENT
U1BhcnNlcjo6cG9wUnVsZURhdGEoKQogewogICAgIGlmICghbV9ydWxlU291cmNlRGF0YVJlc3Vs
dCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xMjE2MSw3ICsxMjE2MSw3IEBAIFBhc3NS
ZWZQdHI8Q1NTUnVsZVNvdXJjZURhdGE+IENTU1BhcnNlcjo6cG9wUnVsZURhdGEoKQogICAgIG1f
Y3VycmVudFJ1bGVEYXRhID0gbnVsbHB0cjsKICAgICBSZWZQdHI8Q1NTUnVsZVNvdXJjZURhdGE+
IGRhdGEgPSBtX2N1cnJlbnRSdWxlRGF0YVN0YWNrLT5sYXN0KCk7CiAgICAgbV9jdXJyZW50UnVs
ZURhdGFTdGFjay0+cmVtb3ZlTGFzdCgpOwotICAgIHJldHVybiBkYXRhLnJlbGVhc2UoKTsKKyAg
ICByZXR1cm4gZGF0YTsKIH0KIAogdm9pZCBDU1NQYXJzZXI6OnN5bnRheEVycm9yKGNvbnN0IExv
Y2F0aW9uJiBsb2NhdGlvbiwgU3ludGF4RXJyb3JUeXBlIGVycm9yKQpAQCAtMTI2NDMsNyArMTI2
NDMsNyBAQCB2b2lkIENTU1BhcnNlcjo6bWFya1Byb3BlcnR5RW5kKGJvb2wgaXNJbXBvcnRhbnRG
b3VuZCwgYm9vbCBpc1Byb3BlcnR5UGFyc2VkKQogfQogCiAjaWYgRU5BQkxFKENTU19ERVZJQ0Vf
QURBUFRBVElPTikKLVBhc3NSZWZQdHI8U3R5bGVSdWxlQmFzZT4gQ1NTUGFyc2VyOjpjcmVhdGVW
aWV3cG9ydFJ1bGUoKQorUmVmUHRyPFN0eWxlUnVsZUJhc2U+IENTU1BhcnNlcjo6Y3JlYXRlVmll
d3BvcnRSdWxlKCkKIHsKICAgICBtX2FsbG93SW1wb3J0UnVsZXMgPSBtX2FsbG93TmFtZXNwYWNl
RGVjbGFyYXRpb25zID0gZmFsc2U7CiAKQEAgLTEyNjUyLDcgKzEyNjUyLDcgQEAgUGFzc1JlZlB0
cjxTdHlsZVJ1bGVCYXNlPiBDU1NQYXJzZXI6OmNyZWF0ZVZpZXdwb3J0UnVsZSgpCiAKICAgICBw
cm9jZXNzQW5kQWRkTmV3UnVsZVRvU291cmNlVHJlZUlmTmVlZGVkKCk7CiAKLSAgICByZXR1cm4g
cnVsZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIHJ1bGU7CiB9CiAKIGJvb2wgQ1NTUGFyc2VyOjpw
YXJzZVZpZXdwb3J0UHJvcGVydHkoQ1NTUHJvcGVydHlJRCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1BhcnNlci5oCmluZGV4IGM5MThlZjk1N2EzMTEzYTBkZjI1NTViYWE1YjBh
NzJkNWQ5NTNhMmQuLjgzNWY5M2E5MGRmYjI3ZjY4NzNiMWI2YTM2YjM0YjQyODBhMzRlMDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUGFyc2VyLmgKQEAgLTQzNyw3ICs0MzcsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBtYXJrUHJvcGVydHlFbmQoYm9vbCBpc0ltcG9ydGFudEZvdW5kLCBib29sIGlzUHJvcGVydHlQ
YXJzZWQpOwogICAgIHZvaWQgcHJvY2Vzc0FuZEFkZE5ld1J1bGVUb1NvdXJjZVRyZWVJZk5lZWRl
ZCgpOwogICAgIHZvaWQgYWRkTmV3UnVsZVRvU291cmNlVHJlZShQYXNzUmVmUHRyPENTU1J1bGVT
b3VyY2VEYXRhPik7Ci0gICAgUGFzc1JlZlB0cjxDU1NSdWxlU291cmNlRGF0YT4gcG9wUnVsZURh
dGEoKTsKKyAgICBSZWZQdHI8Q1NTUnVsZVNvdXJjZURhdGE+IHBvcFJ1bGVEYXRhKCk7CiAgICAg
dm9pZCByZXNldFByb3BlcnR5UmFuZ2UoKSB7IG1fcHJvcGVydHlSYW5nZS5zdGFydCA9IG1fcHJv
cGVydHlSYW5nZS5lbmQgPSBVSU5UX01BWDsgfQogICAgIGJvb2wgaXNFeHRyYWN0aW5nU291cmNl
RGF0YSgpIGNvbnN0IHsgcmV0dXJuICEhbV9jdXJyZW50UnVsZURhdGFTdGFjazsgfQogICAgIHZv
aWQgc3ludGF4RXJyb3IoY29uc3QgTG9jYXRpb24mLCBTeW50YXhFcnJvclR5cGUgPSBHZW5lcmFs
U3ludGF4RXJyb3IpOwpAQCAtNDQ5LDcgKzQ0OSw3IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoQ1NT
X0RFVklDRV9BREFQVEFUSU9OKQogICAgIHZvaWQgbWFya1ZpZXdwb3J0UnVsZUJvZHlTdGFydCgp
IHsgbV9pblZpZXdwb3J0ID0gdHJ1ZTsgfQogICAgIHZvaWQgbWFya1ZpZXdwb3J0UnVsZUJvZHlF
bmQoKSB7IG1faW5WaWV3cG9ydCA9IGZhbHNlOyB9Ci0gICAgUGFzc1JlZlB0cjxTdHlsZVJ1bGVC
YXNlPiBjcmVhdGVWaWV3cG9ydFJ1bGUoKTsKKyAgICBSZWZQdHI8U3R5bGVSdWxlQmFzZT4gY3Jl
YXRlVmlld3BvcnRSdWxlKCk7CiAjZW5kaWYKIAogICAgIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4g
Y3JlYXRlUHJpbWl0aXZlTnVtZXJpY1ZhbHVlKFZhbHVlV2l0aENhbGN1bGF0aW9uJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAppbmRleCA0YTQ2ZjcxODBiN2UwZWUw
OTU3Y2QyMjkwZjEyNDlkYTM0ZDlmYjA0Li5hZTllZDdkNGE4Njg0YWM0MTE4Y2QzNzE3ZGJiYjY5
YmYxZDI1ZTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFs
dWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKQEAg
LTkzOCwxMiArOTM4LDEyIEBAIExlbmd0aFJlcGVhdCogQ1NTUHJpbWl0aXZlVmFsdWU6OmdldExl
bmd0aFJlcGVhdFZhbHVlKEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAogfQogI2VuZGlmCiAKLVBh
c3NSZWZQdHI8UkdCQ29sb3I+IENTU1ByaW1pdGl2ZVZhbHVlOjpnZXRSR0JDb2xvclZhbHVlKEV4
Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAorUmVmUHRyPFJHQkNvbG9yPiBDU1NQcmltaXRpdmVWYWx1
ZTo6Z2V0UkdCQ29sb3JWYWx1ZShFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKIHsKICAgICBlYyA9
IDA7CiAgICAgaWYgKG1fcHJpbWl0aXZlVW5pdFR5cGUgIT0gQ1NTX1JHQkNPTE9SKSB7CiAgICAg
ICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgfQogCiAgICAgLy8gRklNWEU6IFRoaXMgc2hvdWxkIG5vdCBy
ZXR1cm4gYSBuZXcgb2JqZWN0IGZvciBlYWNoIGludm9jYXRpb24uCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NQcmltaXRpdmVWYWx1ZS5oCmluZGV4IGExNzQzMTY3YjU1ZWQ5NTQzM2IwYjI2M2QyN2RjZGQ0
MWI1NGZjNjUuLjA1OGNmOTU2ZjE5Nzk2MGEwYjZhYzUzOWQzNjdlMTFlYmFmMWNjOTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5oCkBAIC0zMCw3ICszMCw2IEBACiAjaW5j
bHVkZSA8dXRpbGl0eT4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9N
YXRoRXh0cmFzLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCkBAIC0zMzYsNyArMzM1LDcgQEAgcHVibGljOgogICAgIExlbmd0aFJlcGVhdCog
Z2V0TGVuZ3RoUmVwZWF0VmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ByaW1pdGl2ZVVuaXRUeXBl
ICE9IENTU19MRU5HVEhfUkVQRUFUID8gMCA6IG1fdmFsdWUubGVuZ3RoUmVwZWF0OyB9CiAjZW5k
aWYKIAotICAgIFBhc3NSZWZQdHI8UkdCQ29sb3I+IGdldFJHQkNvbG9yVmFsdWUoRXhjZXB0aW9u
Q29kZSYpIGNvbnN0OworICAgIFJlZlB0cjxSR0JDb2xvcj4gZ2V0UkdCQ29sb3JWYWx1ZShFeGNl
cHRpb25Db2RlJikgY29uc3Q7CiAgICAgUkdCQTMyIGdldFJHQkEzMlZhbHVlKCkgY29uc3QgeyBy
ZXR1cm4gbV9wcmltaXRpdmVVbml0VHlwZSAhPSBDU1NfUkdCQ09MT1IgPyAwIDogbV92YWx1ZS5y
Z2Jjb2xvcjsgfQogCiAgICAgUGFpciogZ2V0UGFpclZhbHVlKEV4Y2VwdGlvbkNvZGUmKSBjb25z
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NUaW1pbmdGdW5jdGlvblZhbHVl
LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZS5oCmluZGV4IGRh
Y2I0NzM5ZTYxMDhiOTMzMmIwMTZkYjMwOTU3OTQ0NmE4YjhhOGMuLjJkZjI3OWJkMzczOThlZDM0
YWQ5NDdkOWJiYjE5NDUxNmQ1Yjc2N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NUaW1pbmdGdW5jdGlvblZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1RpbWlu
Z0Z1bmN0aW9uVmFsdWUuaApAQCAtMjcsNyArMjcsNiBAQAogI2RlZmluZSBDU1NUaW1pbmdGdW5j
dGlvblZhbHVlX2gKIAogI2luY2x1ZGUgIkNTU1ZhbHVlLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTVW5pY29kZVJhbmdlVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NV
bmljb2RlUmFuZ2VWYWx1ZS5oCmluZGV4IDI2NDMwODFmOGVjMTQ5NzdmYzJkZTQwY2FhOGI1YWQw
YTQwODkxMjAuLjhiYTlhOGFiYzFmMDRmYjFkMzdlYjA0MTc0NGVjZTczNTE0MjYzZTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NVbmljb2RlUmFuZ2VWYWx1ZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NVbmljb2RlUmFuZ2VWYWx1ZS5oCkBAIC0yNyw3ICsyNyw2IEBA
CiAjZGVmaW5lIENTU1VuaWNvZGVSYW5nZVZhbHVlX2gKIAogI2luY2x1ZGUgIkNTU1ZhbHVlLmgi
Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVMaXN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3QuY3BwCmluZGV4IDM1MTQ1MGNlMGEwZGNjMGM3YzcyNWEw
M2FhYmJmZjRmZWE1OTljOGQuLjliZjkyYTk2MjMzM2ZlY2ZlNTQzMzA0MmNlYzAwYjY3Yjk4OWFk
YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3QuY3BwCkBAIC03NCw3ICs3NCw3IEBAIGJv
b2wgQ1NTVmFsdWVMaXN0OjpoYXNWYWx1ZShDU1NWYWx1ZSogdmFsKSBjb25zdAogICAgIHJldHVy
biBmYWxzZTsKIH0KIAotUGFzc1JlZlB0cjxDU1NWYWx1ZUxpc3Q+IENTU1ZhbHVlTGlzdDo6Y29w
eSgpCitSZWZQdHI8Q1NTVmFsdWVMaXN0PiBDU1NWYWx1ZUxpc3Q6OmNvcHkoKQogewogICAgIFJl
ZlB0cjxDU1NWYWx1ZUxpc3Q+IG5ld0xpc3Q7CiAgICAgc3dpdGNoIChtX3ZhbHVlTGlzdFNlcGFy
YXRvcikgewpAQCAtOTIsNyArOTIsNyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlTGlzdD4gQ1NTVmFs
dWVMaXN0Ojpjb3B5KCkKICAgICB9CiAgICAgZm9yIChhdXRvJiB2YWx1ZSA6IG1fdmFsdWVzKQog
ICAgICAgICBuZXdMaXN0LT5hcHBlbmQodmFsdWUuZ2V0KCkpOwotICAgIHJldHVybiBuZXdMaXN0
LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gbmV3TGlzdDsKIH0KIAogU3RyaW5nIENTU1ZhbHVlTGlz
dDo6Y3VzdG9tQ1NTVGV4dCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTVmFsdWVMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVMaXN0LmgKaW5kZXgg
NGEyMWRmN2RjMzQwOTE3NTZkZTAyYjg3MWJkMzBlNDZjNGNiMjZhMS4uZmI3OGViYjJmYmVkNjE4
ZWZiNmM1Yjc5NGI3YTc2NTUyNTdhNWUwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1ZhbHVlTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3QuaApA
QCAtMjIsNyArMjIsNiBAQAogI2RlZmluZSBDU1NWYWx1ZUxpc3RfaAogCiAjaW5jbHVkZSAiQ1NT
VmFsdWUuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNjYsNyArNjUsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBwcmVwZW5kKFJlZjxDU1NWYWx1ZT4mJik7CiAgICAgYm9vbCByZW1vdmVBbGwoQ1NT
VmFsdWUqKTsKICAgICBib29sIGhhc1ZhbHVlKENTU1ZhbHVlKikgY29uc3Q7Ci0gICAgUGFzc1Jl
ZlB0cjxDU1NWYWx1ZUxpc3Q+IGNvcHkoKTsKKyAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBjb3B5
KCk7CiAKICAgICBTdHJpbmcgY3VzdG9tQ1NTVGV4dCgpIGNvbnN0OwogICAgIGJvb2wgZXF1YWxz
KGNvbnN0IENTU1ZhbHVlTGlzdCYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1ZhbHVlUG9vbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVQb29sLmNw
cAppbmRleCBhZTNlMGZkNGFlYjYwZDZkYzg4NmRjOTFiOWIwMDRjNWY1YzQ5MWRhLi4xMmRlZGUx
NTVjNzgyZjA0ZGUyMTU5YWQ0YWI3MDI1MjBmMTYwYTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTVmFsdWVQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFs
dWVQb29sLmNwcApAQCAtMTMzLDcgKzEzMyw3IEBAIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gQ1NT
VmFsdWVQb29sOjpjcmVhdGVGb250RmFtaWx5VmFsdWUoY29uc3QgU3RyaW5nJiBmYW1pbHlOCiAg
ICAgcmV0dXJuICp2YWx1ZTsKIH0KIAotUGFzc1JlZlB0cjxDU1NWYWx1ZUxpc3Q+IENTU1ZhbHVl
UG9vbDo6Y3JlYXRlRm9udEZhY2VWYWx1ZShjb25zdCBBdG9taWNTdHJpbmcmIHN0cmluZykKK1Jl
ZlB0cjxDU1NWYWx1ZUxpc3Q+IENTU1ZhbHVlUG9vbDo6Y3JlYXRlRm9udEZhY2VWYWx1ZShjb25z
dCBBdG9taWNTdHJpbmcmIHN0cmluZykKIHsKICAgICAvLyBSZW1vdmUgb25lIGVudHJ5IGF0IHJh
bmRvbSBpZiB0aGUgY2FjaGUgZ3Jvd3MgdG9vIGxhcmdlLgogICAgIGNvbnN0IGludCBtYXhpbXVt
Rm9udEZhY2VDYWNoZVNpemUgPSAxMjg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTVmFsdWVQb29sLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVQb29sLmgKaW5kZXgg
MWNlMjkyNTJiNTE1ZmFkM2MwNjI3ZjY3M2NiYzc5MGI3ZDc0ZTg0Mi4uYWEzZjkzMGEyNTUyNmMx
Y2Y1NmQwOTE5MGY4NTUzYzE0NmE0MWU3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1ZhbHVlUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZVBvb2wuaApA
QCAtNDcsNyArNDcsNyBAQCBlbnVtIGNsYXNzIEZyb21TeXN0ZW1Gb250SUQgeyBObywgWWVzIH07
CiBjbGFzcyBDU1NWYWx1ZVBvb2wgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgotICAgIFBhc3NSZWZQdHI8Q1NTVmFsdWVMaXN0PiBjcmVhdGVGb250RmFjZVZhbHVlKGNv
bnN0IEF0b21pY1N0cmluZyYpOworICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGNyZWF0ZUZvbnRG
YWNlVmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJik7CiAgICAgUmVmPENTU1ByaW1pdGl2ZVZhbHVl
PiBjcmVhdGVGb250RmFtaWx5VmFsdWUoY29uc3QgU3RyaW5nJiwgRnJvbVN5c3RlbUZvbnRJRCA9
IEZyb21TeXN0ZW1Gb250SUQ6Ok5vKTsKICAgICBSZWY8Q1NTSW5oZXJpdGVkVmFsdWU+IGNyZWF0
ZUluaGVyaXRlZFZhbHVlKCkgeyByZXR1cm4gbV9pbmhlcml0ZWRWYWx1ZS5jb3B5UmVmKCk7IH0K
ICAgICBSZWY8Q1NTSW5pdGlhbFZhbHVlPiBjcmVhdGVJbXBsaWNpdEluaXRpYWxWYWx1ZSgpIHsg
cmV0dXJuIG1faW1wbGljaXRJbml0aWFsVmFsdWUuY29weVJlZigpOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvUGFpci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1BhaXIuaAppbmRl
eCBlMzZlYmYxMTJlYTU1YmYyNGRiMDQzY2I0YjYyYzcyOTExNzQ1NmE1Li5mZTQwYjQ3OGQzMTJm
YWExY2EyNjc1ZDk1NjhiMWYwODhkNzBmNWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvUGFpci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9QYWlyLmgKQEAgLTIzLDcgKzIzLDYg
QEAKIAogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSAiQ1NTUHJpbWl0aXZl
VmFsdWUuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0J1aWxkZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlUmVzb2x2ZXIuY3BwCmluZGV4IDQ2NzNjODVjNzhhNDFmNmNjNTU0ODgzZjdiZDIwNDU5NDIz
NWZjNzEuLjBmOTk2MTNlNjM5NTVjYTMyMzMzMDE4ZWU2MGJhMDYwZDU0NGRlYTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTk1Myw3ICs5NTMsNyBAQCB2b2lkIFN0eWxl
UmVzb2x2ZXI6OmtleWZyYW1lU3R5bGVzRm9yQW5pbWF0aW9uKEVsZW1lbnQqIGUsIGNvbnN0IFJl
bmRlclN0eWxlKiBlbAogICAgIH0KIH0KIAotUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gU3R5bGVS
ZXNvbHZlcjo6cHNldWRvU3R5bGVGb3JFbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFBz
ZXVkb1N0eWxlUmVxdWVzdCYgcHNldWRvU3R5bGVSZXF1ZXN0LCBSZW5kZXJTdHlsZSogcGFyZW50
U3R5bGUpCitSZWZQdHI8UmVuZGVyU3R5bGU+IFN0eWxlUmVzb2x2ZXI6OnBzZXVkb1N0eWxlRm9y
RWxlbWVudChFbGVtZW50KiBlbGVtZW50LCBjb25zdCBQc2V1ZG9TdHlsZVJlcXVlc3QmIHBzZXVk
b1N0eWxlUmVxdWVzdCwgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlKQogewogICAgIEFTU0VSVChw
YXJlbnRTdHlsZSk7CiAgICAgaWYgKCFlbGVtZW50KQpAQCAtMTkwMiw3ICsxOTAyLDcgQEAgdm9p
ZCBTdHlsZVJlc29sdmVyOjphcHBseVByb3BlcnR5KENTU1Byb3BlcnR5SUQgaWQsIENTU1ZhbHVl
KiB2YWx1ZSkKICAgICBTdHlsZUJ1aWxkZXI6OmFwcGx5UHJvcGVydHkoaWQsICp0aGlzLCAqdmFs
dWUsIGlzSW5pdGlhbCwgaXNJbmhlcml0KTsKIH0KIAotUGFzc1JlZlB0cjxTdHlsZUltYWdlPiBT
dHlsZVJlc29sdmVyOjpzdHlsZUltYWdlKENTU1Byb3BlcnR5SUQgcHJvcGVydHksIENTU1ZhbHVl
JiB2YWx1ZSkKK1JlZlB0cjxTdHlsZUltYWdlPiBTdHlsZVJlc29sdmVyOjpzdHlsZUltYWdlKENT
U1Byb3BlcnR5SUQgcHJvcGVydHksIENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBpZiAoaXM8Q1NT
SW1hZ2VWYWx1ZT4odmFsdWUpKQogICAgICAgICByZXR1cm4gY2FjaGVkT3JQZW5kaW5nRnJvbVZh
bHVlKHByb3BlcnR5LCBkb3duY2FzdDxDU1NJbWFnZVZhbHVlPih2YWx1ZSkpOwpAQCAtMTkyNCwx
NSArMTkyNCwxNSBAQCBQYXNzUmVmUHRyPFN0eWxlSW1hZ2U+IFN0eWxlUmVzb2x2ZXI6OnN0eWxl
SW1hZ2UoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwgQ1NTVmFsdQogICAgIHJldHVybiBudWxscHRy
OwogfQogCi1QYXNzUmVmUHRyPFN0eWxlSW1hZ2U+IFN0eWxlUmVzb2x2ZXI6OmNhY2hlZE9yUGVu
ZGluZ0Zyb21WYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBDU1NJbWFnZVZhbHVlJiB2YWx1
ZSkKK1JlZlB0cjxTdHlsZUltYWdlPiBTdHlsZVJlc29sdmVyOjpjYWNoZWRPclBlbmRpbmdGcm9t
VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwgQ1NTSW1hZ2VWYWx1ZSYgdmFsdWUpCiB7CiAg
ICAgUmVmUHRyPFN0eWxlSW1hZ2U+IGltYWdlID0gdmFsdWUuY2FjaGVkT3JQZW5kaW5nSW1hZ2Uo
KTsKICAgICBpZiAoaW1hZ2UgJiYgaW1hZ2UtPmlzUGVuZGluZ0ltYWdlKCkpCiAgICAgICAgIG1f
c3RhdGUucGVuZGluZ0ltYWdlUHJvcGVydGllcygpLnNldChwcm9wZXJ0eSwgJnZhbHVlKTsKLSAg
ICByZXR1cm4gaW1hZ2UucmVsZWFzZSgpOworICAgIHJldHVybiBpbWFnZTsKIH0KIAotUGFzc1Jl
ZlB0cjxTdHlsZUltYWdlPiBTdHlsZVJlc29sdmVyOjpnZW5lcmF0ZWRPclBlbmRpbmdGcm9tVmFs
dWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwgQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZSYgdmFsdWUp
CitSZWY8U3R5bGVJbWFnZT4gU3R5bGVSZXNvbHZlcjo6Z2VuZXJhdGVkT3JQZW5kaW5nRnJvbVZh
bHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHksIENTU0ltYWdlR2VuZXJhdG9yVmFsdWUmIHZhbHVl
KQogewogICAgIGlmIChpczxDU1NGaWx0ZXJJbWFnZVZhbHVlPih2YWx1ZSkpIHsKICAgICAgICAg
Ly8gRmlsdGVySW1hZ2UgbmVlZHMgdG8gY2FsY3VsYXRlIEZpbHRlck9wZXJhdGlvbnMuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oIGIvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlUmVzb2x2ZXIuaAppbmRleCBhZGQ1NDI1ZDdmZGI1OGQxMTllOTg0NjJiOGUw
NjM3YTlmZGNlZjkxLi42MTMyNTkyNzQ0ODkzOGEzY2NhMDllMmUxYWI4ZmY0NmZmZGYyOTlhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgKQEAgLTE1MCw3ICsxNTAsNyBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIGtleWZyYW1lU3R5bGVzRm9yQW5pbWF0aW9uKEVsZW1lbnQqLCBjb25zdCBS
ZW5kZXJTdHlsZSosIEtleWZyYW1lTGlzdCYpOwogCi0gICAgUGFzc1JlZlB0cjxSZW5kZXJTdHls
ZT4gcHNldWRvU3R5bGVGb3JFbGVtZW50KEVsZW1lbnQqLCBjb25zdCBQc2V1ZG9TdHlsZVJlcXVl
c3QmLCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUpOworICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4g
cHNldWRvU3R5bGVGb3JFbGVtZW50KEVsZW1lbnQqLCBjb25zdCBQc2V1ZG9TdHlsZVJlcXVlc3Qm
LCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUpOwogCiAgICAgUmVmPFJlbmRlclN0eWxlPiBzdHls
ZUZvclBhZ2UoaW50IHBhZ2VJbmRleCk7CiAgICAgUmVmPFJlbmRlclN0eWxlPiBkZWZhdWx0U3R5
bGVGb3JFbGVtZW50KCk7CkBAIC00NDIsOSArNDQyLDkgQEAgcHVibGljOgogCiAgICAgc3RhdGlj
IFJlbmRlclN0eWxlKiBzdHlsZU5vdFlldEF2YWlsYWJsZSgpIHsgcmV0dXJuIHNfc3R5bGVOb3RZ
ZXRBdmFpbGFibGU7IH0KIAotICAgIFBhc3NSZWZQdHI8U3R5bGVJbWFnZT4gc3R5bGVJbWFnZShD
U1NQcm9wZXJ0eUlELCBDU1NWYWx1ZSYpOwotICAgIFBhc3NSZWZQdHI8U3R5bGVJbWFnZT4gY2Fj
aGVkT3JQZW5kaW5nRnJvbVZhbHVlKENTU1Byb3BlcnR5SUQsIENTU0ltYWdlVmFsdWUmKTsKLSAg
ICBQYXNzUmVmUHRyPFN0eWxlSW1hZ2U+IGdlbmVyYXRlZE9yUGVuZGluZ0Zyb21WYWx1ZShDU1NQ
cm9wZXJ0eUlELCBDU1NJbWFnZUdlbmVyYXRvclZhbHVlJik7CisgICAgUmVmUHRyPFN0eWxlSW1h
Z2U+IHN0eWxlSW1hZ2UoQ1NTUHJvcGVydHlJRCwgQ1NTVmFsdWUmKTsKKyAgICBSZWZQdHI8U3R5
bGVJbWFnZT4gY2FjaGVkT3JQZW5kaW5nRnJvbVZhbHVlKENTU1Byb3BlcnR5SUQsIENTU0ltYWdl
VmFsdWUmKTsKKyAgICBSZWY8U3R5bGVJbWFnZT4gZ2VuZXJhdGVkT3JQZW5kaW5nRnJvbVZhbHVl
KENTU1Byb3BlcnR5SUQsIENTU0ltYWdlR2VuZXJhdG9yVmFsdWUmKTsKICNpZiBFTkFCTEUoQ1NT
X0lNQUdFX1NFVCkKICAgICBQYXNzUmVmUHRyPFN0eWxlSW1hZ2U+IHNldE9yUGVuZGluZ0Zyb21W
YWx1ZShDU1NQcm9wZXJ0eUlELCBDU1NJbWFnZVNldFZhbHVlJik7CiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlUnVsZS5jcHAKaW5kZXggYTVmNDljMGZiZmVmMzZmODE0OGJjY2M2MTU3ZjVhOWYwNjM1
NWMzZS4uMDczYzczN2VhMTYxNWMxZGY3OTZmNTIzNDJlNGQ4MDRhZWJiYTQ3ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlUnVsZS5jcHAKQEAgLTQ1LDEyICs0NSwxMiBAQCBzdHJ1Y3QgU2FtZVNpemVBc1N0
eWxlUnVsZUJhc2UgOiBwdWJsaWMgV1RGOjpSZWZDb3VudGVkQmFzZSB7CiAKIENPTVBJTEVfQVNT
RVJUKHNpemVvZihTdHlsZVJ1bGVCYXNlKSA9PSBzaXplb2YoU2FtZVNpemVBc1N0eWxlUnVsZUJh
c2UpLCBTdHlsZVJ1bGVCYXNlX3Nob3VsZF9zdGF5X3NtYWxsKTsKIAotUGFzc1JlZlB0cjxDU1NS
dWxlPiBTdHlsZVJ1bGVCYXNlOjpjcmVhdGVDU1NPTVdyYXBwZXIoQ1NTU3R5bGVTaGVldCogcGFy
ZW50U2hlZXQpIGNvbnN0CitSZWZQdHI8Q1NTUnVsZT4gU3R5bGVSdWxlQmFzZTo6Y3JlYXRlQ1NT
T01XcmFwcGVyKENTU1N0eWxlU2hlZXQqIHBhcmVudFNoZWV0KSBjb25zdAogewogICAgIHJldHVy
biBjcmVhdGVDU1NPTVdyYXBwZXIocGFyZW50U2hlZXQsIDApOwogfQogCi1QYXNzUmVmUHRyPENT
U1J1bGU+IFN0eWxlUnVsZUJhc2U6OmNyZWF0ZUNTU09NV3JhcHBlcihDU1NSdWxlKiBwYXJlbnRS
dWxlKSBjb25zdAorUmVmUHRyPENTU1J1bGU+IFN0eWxlUnVsZUJhc2U6OmNyZWF0ZUNTU09NV3Jh
cHBlcihDU1NSdWxlKiBwYXJlbnRSdWxlKSBjb25zdAogeyAKICAgICByZXR1cm4gY3JlYXRlQ1NT
T01XcmFwcGVyKDAsIHBhcmVudFJ1bGUpOwogfQpAQCAtMTQwLDcgKzE0MCw3IEBAIFJlZjxTdHls
ZVJ1bGVCYXNlPiBTdHlsZVJ1bGVCYXNlOjpjb3B5KCkgY29uc3QKICAgICByZXR1cm4gUmVmPFN0
eWxlUnVsZUJhc2U+KCpzdGF0aWNfY2FzdDxTdHlsZVJ1bGVCYXNlKj4obnVsbHB0cikpOwogfQog
Ci1QYXNzUmVmUHRyPENTU1J1bGU+IFN0eWxlUnVsZUJhc2U6OmNyZWF0ZUNTU09NV3JhcHBlcihD
U1NTdHlsZVNoZWV0KiBwYXJlbnRTaGVldCwgQ1NTUnVsZSogcGFyZW50UnVsZSkgY29uc3QKK1Jl
ZlB0cjxDU1NSdWxlPiBTdHlsZVJ1bGVCYXNlOjpjcmVhdGVDU1NPTVdyYXBwZXIoQ1NTU3R5bGVT
aGVldCogcGFyZW50U2hlZXQsIENTU1J1bGUqIHBhcmVudFJ1bGUpIGNvbnN0CiB7CiAgICAgUmVm
UHRyPENTU1J1bGU+IHJ1bGU7CiAgICAgU3R5bGVSdWxlQmFzZSYgc2VsZiA9IGNvbnN0X2Nhc3Q8
U3R5bGVSdWxlQmFzZSY+KCp0aGlzKTsKQEAgLTE4Nyw3ICsxODcsNyBAQCBQYXNzUmVmUHRyPENT
U1J1bGU+IFN0eWxlUnVsZUJhc2U6OmNyZWF0ZUNTU09NV3JhcHBlcihDU1NTdHlsZVNoZWV0KiBw
YXJlbnRTaGVldAogICAgIH0KICAgICBpZiAocGFyZW50UnVsZSkKICAgICAgICAgcnVsZS0+c2V0
UGFyZW50UnVsZShwYXJlbnRSdWxlKTsKLSAgICByZXR1cm4gcnVsZS5yZWxlYXNlKCk7CisgICAg
cmV0dXJuIHJ1bGU7CiB9CiAKIHVuc2lnbmVkIFN0eWxlUnVsZTo6YXZlcmFnZVNpemVJbkJ5dGVz
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuaAppbmRleCBlOWE2MzY2ZTRlNDVlOTU3ZjJmMTQ2ZjY1NDk3
MmU2ZjcwYmU3NWY5Li42M2RmMDEzMTBiYmYxNmI2MTljYzU5NjE5MGQzYTRjN2JkMWU2MTRkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlUnVsZS5oCkBAIC04Miw4ICs4Miw4IEBAIHB1YmxpYzoKICAgICB9CiAK
ICAgICAvLyBGSVhNRTogVGhlcmUgc2hvdWxkbid0IGJlIGFueSBuZWVkIGZvciB0aGUgbnVsbCBw
YXJlbnQgdmVyc2lvbi4KLSAgICBQYXNzUmVmUHRyPENTU1J1bGU+IGNyZWF0ZUNTU09NV3JhcHBl
cihDU1NTdHlsZVNoZWV0KiBwYXJlbnRTaGVldCA9IDApIGNvbnN0OwotICAgIFBhc3NSZWZQdHI8
Q1NTUnVsZT4gY3JlYXRlQ1NTT01XcmFwcGVyKENTU1J1bGUqIHBhcmVudFJ1bGUpIGNvbnN0Owor
ICAgIFJlZlB0cjxDU1NSdWxlPiBjcmVhdGVDU1NPTVdyYXBwZXIoQ1NTU3R5bGVTaGVldCogcGFy
ZW50U2hlZXQgPSAwKSBjb25zdDsKKyAgICBSZWZQdHI8Q1NTUnVsZT4gY3JlYXRlQ1NTT01XcmFw
cGVyKENTU1J1bGUqIHBhcmVudFJ1bGUpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6CiAgICAgU3R5bGVS
dWxlQmFzZShUeXBlIHR5cGUsIHNpZ25lZCBzb3VyY2VMaW5lID0gMCkgOiBtX3R5cGUodHlwZSks
IG1fc291cmNlTGluZShzb3VyY2VMaW5lKSB7IH0KQEAgLTk0LDcgKzk0LDcgQEAgcHJvdGVjdGVk
OgogcHJpdmF0ZToKICAgICB2b2lkIGRlc3Ryb3koKTsKICAgICAKLSAgICBQYXNzUmVmUHRyPENT
U1J1bGU+IGNyZWF0ZUNTU09NV3JhcHBlcihDU1NTdHlsZVNoZWV0KiBwYXJlbnRTaGVldCwgQ1NT
UnVsZSogcGFyZW50UnVsZSkgY29uc3Q7CisgICAgUmVmUHRyPENTU1J1bGU+IGNyZWF0ZUNTU09N
V3JhcHBlcihDU1NTdHlsZVNoZWV0KiBwYXJlbnRTaGVldCwgQ1NTUnVsZSogcGFyZW50UnVsZSkg
Y29uc3Q7CiAKICAgICB1bnNpZ25lZCBtX3R5cGUgOiA1OwogICAgIHNpZ25lZCBtX3NvdXJjZUxp
bmUgOiAyNzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0TGlzdC5o
IGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRMaXN0LmgKaW5kZXggMTJhN2M0NTlkYmEz
Y2NhM2Y5MzhiOTFmNjQzOThhNTNiZTVlN2YyNS4uNGQ0YjU0MDc1MTg1ZTg5ZDdiNjUyMzRkYmRm
NTJiNjc1MDhhOWVlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRM
aXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRMaXN0LmgKQEAgLTIzLDcg
KzIzLDYgQEAKIAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL1dlYktpdENTU0ZpbHRlclZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRD
U1NGaWx0ZXJWYWx1ZS5jcHAKaW5kZXggNWExNGJiOGIxMjMxYzA5YTc4MDJhY2ExN2I5NmFjMzY2
MmY4MDQzNi4uY2QwY2E3ZDdiZjdiYzQ5ZTU1ZDk4YjU1NWI3ZjNkMGI1NjEyYmMxOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU0ZpbHRlclZhbHVlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTRmlsdGVyVmFsdWUuY3BwCkBAIC0yNyw3ICsyNyw2
IEBACiAjaW5jbHVkZSAiV2ViS2l0Q1NTRmlsdGVyVmFsdWUuaCIKIAogI2luY2x1ZGUgIkNTU1Zh
bHVlTGlzdC5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NGaWx0ZXJWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3Nz
L1dlYktpdENTU0ZpbHRlclZhbHVlLmgKaW5kZXggYTI0OTZkNjcxZTRkYTRkYWUzMjUwYzE0Y2Q3
YWQ0OWY1NWRhNzIzOS4uOWUzYWU2NTM1NWQ0OTJmZTIzZmY4YWIzNTk2MjZiNDFiYzRiNTM2NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU0ZpbHRlclZhbHVlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU0ZpbHRlclZhbHVlLmgKQEAgLTI3LDcgKzI3
LDYgQEAKICNkZWZpbmUgV2ViS2l0Q1NTRmlsdGVyVmFsdWVfaAogCiAjaW5jbHVkZSAiQ1NTVmFs
dWVMaXN0LmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9XZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2Vi
S2l0Q1NTVHJhbnNmb3JtVmFsdWUuY3BwCmluZGV4IDY3NzIxMmU0OGM4NGIzMjllMGQ5OTllMzc4
NDQ2MDhmOWI5YjAxOTEuLmExZGYwY2ZiODhiODVhZjEyMzI2ZWZkODQxYWI3YWE1YTM4ZDgzZjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1RyYW5zZm9ybVZhbHVlLmNwcApA
QCAtMjcsNyArMjcsNiBAQAogI2luY2x1ZGUgIldlYktpdENTU1RyYW5zZm9ybVZhbHVlLmgiCiAK
ICNpbmNsdWRlICJDU1NWYWx1ZUxpc3QuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuaCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5oCmluZGV4IDdjZWMz
NTM0YmIzYmFjMzk5MmVjNjU5YWEyZjVhZmUwZDE4ZDAyZGEuLjJkYjdjNzIwOGM0ZTc3MTJmZTQ3
MGNkM2Y2MzZjMGI3MDE3NmIyY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJL
aXRDU1NUcmFuc2Zvcm1WYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NU
cmFuc2Zvcm1WYWx1ZS5oCkBAIC0yNyw3ICsyNyw2IEBACiAjZGVmaW5lIFdlYktpdENTU1RyYW5z
Zm9ybVZhbHVlX2gKIAogI2luY2x1ZGUgIkNTU1ZhbHVlTGlzdC5oIgotI2luY2x1ZGUgPHd0Zi9Q
YXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250U2Vs
ZWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRTZWxlY3Rvci5o
CmluZGV4IGViY2JmZDNlODAxZjdmYWVhYzM4MWFmOTRmMzM4MDA0MTQ5ODA4ZjcuLjU1YmU0YmIy
OGY4OWZjYmUzNDllMmQwNWI2Y2JiY2YyZDQzNDEyOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRTZWxlY3Rvci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRTZWxlY3Rvci5oCkBAIC00MSw3ICs0MSw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIH5Gb250U2VsZWN0b3IoKSB7IH0KIAogICAgIHZpcnR1YWwgRm9udFJh
bmdlcyBmb250UmFuZ2VzRm9yRmFtaWx5KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGNvbnN0IEF0
b21pY1N0cmluZyYpID0gMDsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Rm9udD4gZmFsbGJhY2tG
b250QXQoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgc2l6ZV90KSA9IDA7CisgICAgdmlydHVhbCBS
ZWZQdHI8Rm9udD4gZmFsbGJhY2tGb250QXQoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgc2l6ZV90
KSA9IDA7CiAKICAgICB2aXJ0dWFsIHNpemVfdCBmYWxsYmFja0ZvbnRDb3VudCgpID0gMDsKICAg
ICB2aXJ0dWFsIGJvb2wgcmVzb2x2ZXNGYW1pbHlGb3IoY29uc3QgRm9udERlc2NyaXB0aW9uJikg
Y29uc3QgPSAwOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259094</attachid>
            <date>2015-08-15 08:54:49 -0700</date>
            <delta_ts>2015-08-25 07:40:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147974-20150816005428.patch</filename>
            <type>text/plain</type>
            <size>124095</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4NTA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDFjMThhZWVhYWFlZjBm
ZWM1OWVlMDI5NWZhMGQ3ZmZkMjFjOTFmNi4uNDYyZWQ0ODliMGRmMzk1MWU3ZTAzZGEyMTc0MmZj
NGVhNTUyNDkwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyNSBAQAorMjAxNS0wOC0xNSAgR3l1
eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIGFs
bCB1c2VzIG9mIFBhc3NSZWZQdHIgaW4gV2ViQ29yZS9jc3MKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0Nzk3NAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENsZWFuIHVwIGFsbCBQYXNzUmVmUHRyIGluIFdl
YkNvcmUvY3NzLgorCisgICAgICAgICogY3NzL0Jhc2ljU2hhcGVGdW5jdGlvbnMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Y3NzVmFsdWVUb0Jhc2ljU2hhcGVSYWRpdXMpOgorICAgICAgICAqIGNz
cy9CYXNpY1NoYXBlRnVuY3Rpb25zLmg6CisgICAgICAgICogY3NzL0NTU0FuaW1hdGlvblRyaWdn
ZXJTY3JvbGxWYWx1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQW5pbWF0aW9uVHJpZ2dlclNj
cm9sbFZhbHVlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQW5pbWF0aW9uVHJpZ2dl
clNjcm9sbFZhbHVlOjpDU1NBbmltYXRpb25UcmlnZ2VyU2Nyb2xsVmFsdWUpOgorICAgICAgICAq
IGNzcy9DU1NCYXNpY1NoYXBlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpidWlsZFNlcmlhbGl6
YWJsZVBvc2l0aW9uT2Zmc2V0KToKKyAgICAgICAgKiBjc3MvQ1NTQmFzaWNTaGFwZXMuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU0Jhc2ljU2hhcGU6OnNldFJlZmVyZW5jZUJveCk6CisgICAgICAg
ICogY3NzL0NTU0JvcmRlckltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUJvcmRl
ckltYWdlVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NCb3JkZXJJbWFnZS5oOgorICAgICAgICAq
IGNzcy9DU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
Qm9yZGVySW1hZ2VTbGljZVZhbHVlOjpDU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUpOgorICAgICAg
ICAqIGNzcy9DU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNT
U0JvcmRlckltYWdlU2xpY2VWYWx1ZTo6Y3JlYXRlKToKKyAgICAgICAgKiBjc3MvQ1NTQ2FsY3Vs
YXRpb25WYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkZXRlcm1pbmVDYXRlZ29yeSk6Cisg
ICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjp2YWx1ZUZvclNoYWRvdyk6CisgICAgICAg
IChXZWJDb3JlOjpDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpDb21wdXRlZFN0eWxlRXh0cmFjdG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Q1NTQ29t
cHV0ZWRTdHlsZURlY2xhcmF0aW9uKToKKyAgICAgICAgKiBjc3MvQ1NTQ29tcHV0ZWRTdHlsZURl
Y2xhcmF0aW9uLmg6CisgICAgICAgICogY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmg6CisgICAgICAg
IChXZWJDb3JlOjpDU1NDcm9zc2ZhZGVWYWx1ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU0Nyb3NzZmFkZVZhbHVlOjpzZXRQZXJjZW50YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U0Nyb3NzZmFkZVZhbHVlOjpDU1NDcm9zc2ZhZGVWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU0Zp
bHRlckltYWdlVmFsdWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlckltYWdlVmFsdWU6
OkNTU0ZpbHRlckltYWdlVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NGb250RmFjZS5oOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NGb250RmFjZTo6Q1NTRm9udEZhY2UpOgorICAgICAgICAqIGNzcy9DU1NGb250RmFjZUxvYWRF
dmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZUxvYWRFdmVudDo6Q1NTRm9u
dEZhY2VMb2FkRXZlbnQpOgorICAgICAgICAqIGNzcy9DU1NGb250RmFjZUxvYWRFdmVudC5oOgor
ICAgICAgICAqIGNzcy9DU1NGb250RmFjZVNvdXJjZS5oOgorICAgICAgICAqIGNzcy9DU1NGb250
RmFjZVNyY1ZhbHVlLmg6CisgICAgICAgICogY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NGb250U2VsZWN0b3I6OmZhbGxiYWNrRm9udEF0KToKKyAgICAgICAg
KiBjc3MvQ1NTRm9udFNlbGVjdG9yLmg6CisgICAgICAgICogY3NzL0NTU0ZvbnRWYWx1ZS5oOgor
ICAgICAgICAqIGNzcy9DU1NGdW5jdGlvblZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNT
U0Z1bmN0aW9uVmFsdWU6OkNTU0Z1bmN0aW9uVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NGdW5j
dGlvblZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NGdW5jdGlvblZhbHVlOjpjcmVhdGUp
OgorICAgICAgICAqIGNzcy9DU1NHcmFkaWVudFZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlOjpD
U1NHcmFkaWVudFZhbHVlOjpzZXRGaXJzdFgpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTR3JhZGll
bnRWYWx1ZTo6c2V0Rmlyc3RZKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0dyYWRpZW50VmFsdWU6
OnNldFNlY29uZFgpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTR3JhZGllbnRWYWx1ZTo6c2V0U2Vj
b25kWSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NMaW5lYXJHcmFkaWVudFZhbHVlOjpzZXRBbmds
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NSYWRpYWxHcmFkaWVudFZhbHVlOjpzZXRGaXJzdFJh
ZGl1cyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NSYWRpYWxHcmFkaWVudFZhbHVlOjpzZXRTZWNv
bmRSYWRpdXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUmFkaWFsR3JhZGllbnRWYWx1ZTo6c2V0
U2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUmFkaWFsR3JhZGllbnRWYWx1ZTo6c2V0U2l6
aW5nQmVoYXZpb3IpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUmFkaWFsR3JhZGllbnRWYWx1ZTo6
c2V0RW5kSG9yaXpvbnRhbFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUmFkaWFsR3JhZGll
bnRWYWx1ZTo6c2V0RW5kVmVydGljYWxTaXplKToKKyAgICAgICAgKiBjc3MvQ1NTR3JpZExpbmVO
YW1lc1ZhbHVlLmg6CisgICAgICAgICogY3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6c2F2ZUNhY2hlZEltYWdl
Rm9yU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjpDYWNo
ZWRHZW5lcmF0ZWRJbWFnZTo6Q2FjaGVkR2VuZXJhdGVkSW1hZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6aW1hZ2UpOgorICAgICAgICAqIGNzcy9DU1NJbWFn
ZUdlbmVyYXRvclZhbHVlLmg6CisgICAgICAgICogY3NzL0NTU0luaGVyaXRlZFZhbHVlLmg6Cisg
ICAgICAgICogY3NzL0NTU0luaXRpYWxWYWx1ZS5oOgorICAgICAgICAqIGNzcy9DU1NLZXlmcmFt
ZXNSdWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUnVsZUtleWZyYW1lczo6cGFyc2Vy
QXBwZW5kS2V5ZnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSdWxlS2V5ZnJhbWVzOjp3
cmFwcGVyQXBwZW5kS2V5ZnJhbWUpOgorICAgICAgICAqIGNzcy9DU1NLZXlmcmFtZXNSdWxlLmg6
CisgICAgICAgICogY3NzL0NTU0xpbmVCb3hDb250YWluVmFsdWUuaDoKKyAgICAgICAgKiBjc3Mv
Q1NTTmFtZWRJbWFnZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU05hbWVkSW1hZ2VW
YWx1ZTo6aW1hZ2UpOgorICAgICAgICAqIGNzcy9DU1NOYW1lZEltYWdlVmFsdWUuaDoKKyAgICAg
ICAgKiBjc3MvQ1NTUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFy
c2VEZWNsYXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OmFkZFByb3BlcnR5
V2l0aFByZWZpeGluZ1ZhcmlhbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjphZGRQ
cm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OmFkZEV4cGFuZGVkUHJvcGVy
dHlGb3JWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlR3JpZFRlbXBs
YXRlUm93c0FuZEFyZWFzKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VJbnNl
dFJvdW5kZWRDb3JuZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1BhcnNlQ29udGV4dDo6
Y29tbWl0Q29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Qm9yZGVySW1hZ2VQYXJzZUNvbnRleHQ6
OmNvbW1pdEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkJvcmRlckltYWdlUGFyc2VDb250ZXh0
Ojpjb21taXRJbWFnZVNsaWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkJvcmRlckltYWdlUGFyc2VD
b250ZXh0Ojpjb21taXRCb3JkZXJXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpCb3JkZXJJbWFn
ZVBhcnNlQ29udGV4dDo6Y29tbWl0Qm9yZGVyT3V0c2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkJv
cmRlckltYWdlUGFyc2VDb250ZXh0Ojpjb21taXRSZXBlYXQpOgorICAgICAgICAoV2ViQ29yZTo6
Qm9yZGVySW1hZ2VQYXJzZUNvbnRleHQ6OmNvbW1pdFdlYktpdEJvcmRlckltYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkJvcmRlckltYWdlUGFyc2VDb250ZXh0Ojpjb21taXRCb3JkZXJJbWFnZVBy
b3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkJvcmRlckltYWdlU2xpY2VQYXJzZUNvbnRleHQ6
OmNvbW1pdEJvcmRlckltYWdlU2xpY2UpOgorICAgICAgICAoV2ViQ29yZTo6Qm9yZGVySW1hZ2VR
dWFkUGFyc2VDb250ZXh0OjpzZXRUb3ApOgorICAgICAgICAoV2ViQ29yZTo6Qm9yZGVySW1hZ2VR
dWFkUGFyc2VDb250ZXh0Ojpjb21taXRCb3JkZXJJbWFnZVF1YWQpOgorICAgICAgICAoV2ViQ29y
ZTo6cGFyc2VEZXByZWNhdGVkR3JhZGllbnRQb2ludCk6CisgICAgICAgIChXZWJDb3JlOjp2YWx1
ZUZyb21TaWRlS2V5d29yZCk6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUdyYWRpZW50Q29sb3JP
cktleXdvcmQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjphZGRUZXh0RGVjb3JhdGlv
blByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6Y3JlYXRlSW1wb3J0UnVs
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OmNyZWF0ZU1lZGlhUnVsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OmFkZE5ld1J1bGVUb1NvdXJjZVRyZWUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwb3BSdWxlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NQYXJzZXI6OmNyZWF0ZVZpZXdwb3J0UnVsZSk6CisgICAgICAgICogY3NzL0NTU1BhcnNlci5o
OgorICAgICAgICAqIGNzcy9DU1NQYXJzZXJWYWx1ZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTUGFyc2VyVmFsdWU6OmNyZWF0ZUNTU1ZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2Vy
VmFsdWVzLmg6CisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpnZXRSR0JDb2xvclZhbHVlKToKKyAgICAgICAg
KiBjc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaDoKKyAgICAgICAgKiBjc3MvQ1NTUHJvcGVydHkuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5OjpDU1NQcm9wZXJ0eSk6CisgICAgICAgICog
Y3NzL0NTU1JlZmxlY3RWYWx1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUmVmbGVjdFZhbHVl
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUmVmbGVjdFZhbHVlOjpDU1NSZWZsZWN0
VmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NSdWxlTGlzdC5oOgorICAgICAgICAqIGNzcy9DU1NT
ZWdtZW50ZWRGb250RmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWdtZW50ZWRGb250
RmFjZTo6YXBwZW5kRm9udEZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VnbWVudGVkRm9u
dEZhY2U6OmxvYWRGb250KToKKyAgICAgICAgKiBjc3MvQ1NTU2VnbWVudGVkRm9udEZhY2UuaDoK
KyAgICAgICAgKiBjc3MvQ1NTU2VsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2Vs
ZWN0b3I6OlJhcmVEYXRhOjpSYXJlRGF0YSk6CisgICAgICAgICogY3NzL0NTU1NlbGVjdG9yLmg6
CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6UmFyZURhdGE6OmNyZWF0ZSk6CisgICAg
ICAgICogY3NzL0NTU1NoYWRvd1ZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NoYWRv
d1ZhbHVlOjpDU1NTaGFkb3dWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU1NoYWRvd1ZhbHVlLmg6
CisgICAgICAgIChXZWJDb3JlOjpDU1NTaGFkb3dWYWx1ZTo6Y3JlYXRlKToKKyAgICAgICAgKiBj
c3MvQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNoZWV0Ojpz
ZXRNZWRpYVF1ZXJpZXMpOgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNoZWV0Lmg6CisgICAgICAg
ICogY3NzL0NTU1RpbWluZ0Z1bmN0aW9uVmFsdWUuaDoKKyAgICAgICAgKiBjc3MvQ1NTVW5pY29k
ZVJhbmdlVmFsdWUuaDoKKyAgICAgICAgKiBjc3MvQ1NTVmFsdWVMaXN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1ZhbHVlTGlzdDo6Y29weSk6CisgICAgICAgICogY3NzL0NTU1ZhbHVlTGlz
dC5oOgorICAgICAgICAqIGNzcy9DU1NWYWx1ZVBvb2wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTVmFsdWVQb29sOjpjcmVhdGVGb250RmFjZVZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTVmFs
dWVQb29sLmg6CisgICAgICAgICogY3NzL0NvdW50ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
dW50ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb3VudGVyOjpzZXRJZGVudGlmaWVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvdW50ZXI6OnNldExpc3RTdHlsZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDb3VudGVyOjpzZXRTZXBhcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q291bnRl
cjo6Q291bnRlcik6CisgICAgICAgICogY3NzL0ZvbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TG9hZEZvbnRDYWxsYmFjazo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkxvYWRG
b250Q2FsbGJhY2s6OmNyZWF0ZUZyb21QYXJhbXMpOgorICAgICAgICAoV2ViQ29yZTo6TG9hZEZv
bnRDYWxsYmFjazo6TG9hZEZvbnRDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpGb250TG9h
ZGVyOjpzY2hlZHVsZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRMb2FkZXI6Om5vdGlm
eVdoZW5Gb250c1JlYWR5KToKKyAgICAgICAgKiBjc3MvRm9udExvYWRlci5oOgorICAgICAgICAq
IGNzcy9MZW5ndGhSZXBlYXQuaDoKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aFJlcGVhdDo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aFJlcGVhdDo6c2V0SW50ZXJ2YWwpOgorICAg
ICAgICAoV2ViQ29yZTo6TGVuZ3RoUmVwZWF0OjpMZW5ndGhSZXBlYXQpOgorICAgICAgICAqIGNz
cy9NZWRpYUxpc3QuaDoKKyAgICAgICAgKiBjc3MvTWVkaWFRdWVyeUxpc3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFRdWVyeUxpc3Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVF1ZXJ5TGlzdDo6TWVkaWFRdWVyeUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFR
dWVyeUxpc3Q6OmFkZExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUXVlcnlMaXN0
OjpyZW1vdmVMaXN0ZW5lcik6CisgICAgICAgICogY3NzL01lZGlhUXVlcnlMaXN0Lmg6CisgICAg
ICAgICogY3NzL01lZGlhUXVlcnlNYXRjaGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UXVlcnlNYXRjaGVyOjpMaXN0ZW5lcjo6TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFRdWVyeU1hdGNoZXI6OmFkZExpc3RlbmVyKToKKyAgICAgICAgKiBjc3MvTWVkaWFRdWVyeU1h
dGNoZXIuaDoKKyAgICAgICAgKiBjc3MvUGFpci5oOgorICAgICAgICAqIGNzcy9SZWN0Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpSZWN0QmFzZTo6c2V0VG9wKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
Y3RCYXNlOjpzZXRSaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpSZWN0QmFzZTo6c2V0Qm90dG9t
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlY3RCYXNlOjpzZXRMZWZ0KToKKyAgICAgICAgKiBjc3Mv
U1ZHQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
bXB1dGVkU3R5bGVFeHRyYWN0b3I6OmFkanVzdFNWR1BhaW50Rm9yQ3VycmVudENvbG9yKToKKyAg
ICAgICAgKiBjc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRTdHlsZUltYWdlKToKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydENsaXBQYXRoKToKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFF1b3Rlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRSZWZsZWN0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFNoYXBlVmFsdWUpOgor
ICAgICAgICAqIGNzcy9TdHlsZVByb3BlcnRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGVQcm9wZXJ0aWVzOjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6Ok11
dGFibGVTdHlsZVByb3BlcnRpZXM6OnNldFByb3BlcnR5KToKKyAgICAgICAgKiBjc3MvU3R5bGVQ
cm9wZXJ0aWVzLmg6CisgICAgICAgICogY3NzL1N0eWxlUmVzb2x2ZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6YWRkS2V5ZnJhbWVTdHlsZSk6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZVJlc29sdmVyOjpwc2V1ZG9TdHlsZUZvckVsZW1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGVSZXNvbHZlcjo6c3R5bGVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZVJlc29sdmVyOjpjYWNoZWRPclBlbmRpbmdGcm9tVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVSZXNvbHZlcjo6Z2VuZXJhdGVkT3JQZW5kaW5nRnJvbVZhbHVlKToKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlUmVzb2x2ZXI6OnNldE9yUGVuZGluZ0Zyb21WYWx1ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpjdXJzb3JPclBlbmRpbmdGcm9tVmFsdWUpOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6bG9hZFBlbmRpbmdJbWFnZSk6CisgICAgICAgICog
Y3NzL1N0eWxlUmVzb2x2ZXIuaDoKKyAgICAgICAgKiBjc3MvU3R5bGVSdWxlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlUnVsZUJhc2U6OmNyZWF0ZUNTU09NV3JhcHBlcik6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZVJ1bGVNZWRpYTo6U3R5bGVSdWxlTWVkaWEpOgorICAgICAgICAqIGNz
cy9TdHlsZVJ1bGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUnVsZU1lZGlhOjpjcmVhdGUp
OgorICAgICAgICAqIGNzcy9TdHlsZVJ1bGVJbXBvcnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVSdWxlSW1wb3J0OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSdWxlSW1w
b3J0OjpTdHlsZVJ1bGVJbXBvcnQpOgorICAgICAgICAqIGNzcy9TdHlsZVJ1bGVJbXBvcnQuaDoK
KyAgICAgICAgKiBjc3MvU3R5bGVTaGVldENvbnRlbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlU2hlZXRDb250ZW50czo6cGFyc2VyQXBwZW5kUnVsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZVNoZWV0Q29udGVudHM6OndyYXBwZXJJbnNlcnRSdWxlKToKKyAgICAgICAgKiBjc3Mv
U3R5bGVTaGVldENvbnRlbnRzLmg6CisgICAgICAgICogY3NzL1N0eWxlU2hlZXRMaXN0Lmg6Cisg
ICAgICAgICogY3NzL1dlYktpdENTU0ZpbHRlclZhbHVlLmNwcDoKKyAgICAgICAgKiBjc3MvV2Vi
S2l0Q1NTRmlsdGVyVmFsdWUuaDoKKyAgICAgICAgKiBjc3MvV2ViS2l0Q1NTVHJhbnNmb3JtVmFs
dWUuY3BwOgorICAgICAgICAqIGNzcy9XZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRTZWxlY3Rvci5oOgorCiAyMDE1LTA4LTE0ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgUmVmYWN0b3IgSFRNTENvbGxl
Y3Rpb24gdG8gYmUgYXMgZmFzdCBhcyBDYWNoZWRMaXZlTm9kZUxpc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9CYXNpY1NoYXBlRnVuY3Rpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9CYXNpY1NoYXBlRnVuY3Rpb25zLmNwcAppbmRleCAwYmEzZjViMTA4OWQzMmU3NjgxMjZj
ZGZlMGJmYTBhOWE4YWM3NmRhLi4xZjhkMzk0YjQ1NDcxZjAxZmNjZTRjNjdjZWYzZTljNTczYjU1
OGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQmFzaWNTaGFwZUZ1bmN0aW9ucy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0Jhc2ljU2hhcGVGdW5jdGlvbnMuY3BwCkBAIC0x
NzksNyArMTc5LDcgQEAgc3RhdGljIEJhc2ljU2hhcGVDZW50ZXJDb29yZGluYXRlIGNvbnZlcnRU
b0NlbnRlckNvb3JkaW5hdGUoY29uc3QgQ1NTVG9MZW5ndGhDb24KICAgICByZXR1cm4gQmFzaWNT
aGFwZUNlbnRlckNvb3JkaW5hdGUoZGlyZWN0aW9uLCBvZmZzZXQpOwogfQogCi1zdGF0aWMgQmFz
aWNTaGFwZVJhZGl1cyBjc3NWYWx1ZVRvQmFzaWNTaGFwZVJhZGl1cyhjb25zdCBDU1NUb0xlbmd0
aENvbnZlcnNpb25EYXRhJiBjb252ZXJzaW9uRGF0YSwgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVW
YWx1ZT4gcmFkaXVzKQorc3RhdGljIEJhc2ljU2hhcGVSYWRpdXMgY3NzVmFsdWVUb0Jhc2ljU2hh
cGVSYWRpdXMoY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYgY29udmVyc2lvbkRhdGEs
IFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcmFkaXVzKQogewogICAgIGlmICghcmFkaXVzKQog
ICAgICAgICByZXR1cm4gQmFzaWNTaGFwZVJhZGl1cyhCYXNpY1NoYXBlUmFkaXVzOjpDbG9zZXN0
U2lkZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQmFzaWNTaGFwZUZ1bmN0aW9u
cy5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0Jhc2ljU2hhcGVGdW5jdGlvbnMuaAppbmRleCBlYzNl
MjNlYjQ5MDI1NzRkZTgyNjMxNzcxMWU5YmJkNDExOTk2YjRhLi4wNzM3ZDAzYTUwNmJmN2UzZTA0
MmIyNDUzMzBlZDAxOWY1OGE4YTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQmFz
aWNTaGFwZUZ1bmN0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9CYXNpY1NoYXBlRnVu
Y3Rpb25zLmgKQEAgLTMxLDcgKzMxLDYgQEAKICNkZWZpbmUgQmFzaWNTaGFwZUZ1bmN0aW9uc19o
CiAKICNpbmNsdWRlICJCYXNpY1NoYXBlcy5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0FuaW1hdGlvblRyaWdnZXJTY3JvbGxWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0FuaW1hdGlvblRyaWdnZXJTY3JvbGxWYWx1ZS5oCmluZGV4IDg2Y2MyZmYzODJkMTdkMjliMTQx
ZGVmNTRjNjUzNzdlMTlkODJiMjUuLjFlOTQzYjBmM2JiNDQ0NjRiZDQzNTA5NDgyYTBkYTM2MDYy
ZjdhZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NBbmltYXRpb25UcmlnZ2Vy
U2Nyb2xsVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQW5pbWF0aW9uVHJpZ2dl
clNjcm9sbFZhbHVlLmgKQEAgLTI5LDEzICsyOSwxMiBAQAogI2lmIEVOQUJMRShDU1NfQU5JTUFU
SU9OU19MRVZFTF8yKQogCiAjaW5jbHVkZSAiQ1NTVmFsdWUuaCIKLSNpbmNsdWRlIDx3dGYvUGFz
c1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENTU0FuaW1hdGlvblRy
aWdnZXJTY3JvbGxWYWx1ZSA6IHB1YmxpYyBDU1NWYWx1ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFJlZjxDU1NBbmltYXRpb25UcmlnZ2VyU2Nyb2xsVmFsdWU+IGNyZWF0ZShQYXNzUmVmUHRyPENT
U1ZhbHVlPiBzdGFydFZhbHVlLCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBlbmRWYWx1ZSA9IG51bGxw
dHIpCisgICAgc3RhdGljIFJlZjxDU1NBbmltYXRpb25UcmlnZ2VyU2Nyb2xsVmFsdWU+IGNyZWF0
ZShSZWZQdHI8Q1NTVmFsdWU+IHN0YXJ0VmFsdWUsIFJlZlB0cjxDU1NWYWx1ZT4gZW5kVmFsdWUg
PSBudWxscHRyKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTQW5pbWF0
aW9uVHJpZ2dlclNjcm9sbFZhbHVlKHN0YXJ0VmFsdWUsIGVuZFZhbHVlKSk7CiAgICAgfQpAQCAt
NDksNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBlcXVhbHMoY29uc3QgQ1NTQW5pbWF0aW9u
VHJpZ2dlclNjcm9sbFZhbHVlJikgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgQ1NTQW5pbWF0aW9u
VHJpZ2dlclNjcm9sbFZhbHVlKFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHN0YXJ0VmFsdWUsIFBhc3NS
ZWZQdHI8Q1NTVmFsdWU+IGVuZFZhbHVlKQorICAgIENTU0FuaW1hdGlvblRyaWdnZXJTY3JvbGxW
YWx1ZShSZWZQdHI8Q1NTVmFsdWU+IHN0YXJ0VmFsdWUsIFJlZlB0cjxDU1NWYWx1ZT4gZW5kVmFs
dWUpCiAgICAgICAgIDogQ1NTVmFsdWUoQW5pbWF0aW9uVHJpZ2dlclNjcm9sbENsYXNzKQogICAg
ICAgICAsIG1fc3RhcnRWYWx1ZShzdGFydFZhbHVlKQogICAgICAgICAsIG1fZW5kVmFsdWUoZW5k
VmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQmFzaWNTaGFwZXMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Jhc2ljU2hhcGVzLmNwcAppbmRleCBiNDQwNGMzMTQ1
NTNlNWNjZTQ1NzMwYTQ1Y2MyOGViMGEwY2IwYmNjLi44Y2YwYjhlODg0ZWJhYTljNDM1ZDA5ZWRl
ODRkMjg5NjIyOGY1NDliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQmFzaWNT
aGFwZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCYXNpY1NoYXBlcy5jcHAKQEAg
LTQ4LDcgKzQ4LDcgQEAgc3RhdGljIFN0cmluZyBzZXJpYWxpemVQb3NpdGlvbk9mZnNldChjb25z
dCBQYWlyJiBvZmZzZXQsIGNvbnN0IFBhaXImIG90aGVyKQogICAgIHJldHVybiBvZmZzZXQuY3Nz
VGV4dCgpOwogfQogCi1zdGF0aWMgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBidWlsZFNlcmlhbGl6
YWJsZVBvc2l0aW9uT2Zmc2V0KFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IG9mZnNldCwg
Q1NTVmFsdWVJRCBkZWZhdWx0U2lkZSkKK3N0YXRpYyBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGJ1
aWxkU2VyaWFsaXphYmxlUG9zaXRpb25PZmZzZXQoUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBv
ZmZzZXQsIENTU1ZhbHVlSUQgZGVmYXVsdFNpZGUpCiB7CiAgICAgQ1NTVmFsdWVJRCBzaWRlID0g
ZGVmYXVsdFNpZGU7CiAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBhbW91bnQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQmFzaWNTaGFwZXMuaCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NCYXNpY1NoYXBlcy5oCmluZGV4IDgxNzMzZDIxZmZkZDlhMmI0MGFiMDI0YWFl
YjE0MDc0MWU5NmJhMmYuLjBkMWUyZjM5NTI3NDkzY2I2NjdmZTEzMTA4NDE0NTkxYjEzZGY5M2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCYXNpY1NoYXBlcy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NCYXNpY1NoYXBlcy5oCkBAIC01Myw3ICs1Myw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIGJvb2wgZXF1YWxzKGNvbnN0IENTU0Jhc2ljU2hhcGUmKSBjb25zdCA9
IDA7CiAKICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcmVmZXJlbmNlQm94KCkgY29uc3QgeyByZXR1
cm4gbV9yZWZlcmVuY2VCb3guZ2V0KCk7IH0KLSAgICB2b2lkIHNldFJlZmVyZW5jZUJveChQYXNz
UmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiByZWZlcmVuY2VCb3gpIHsgbV9yZWZlcmVuY2VCb3gg
PSByZWZlcmVuY2VCb3g7IH0KKyAgICB2b2lkIHNldFJlZmVyZW5jZUJveChSZWZQdHI8Q1NTUHJp
bWl0aXZlVmFsdWU+IHJlZmVyZW5jZUJveCkgeyBtX3JlZmVyZW5jZUJveCA9IHJlZmVyZW5jZUJv
eDsgfQogCiBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q1NTQmFzaWNTaGFwZSgpIHsgfQpAQCAtNzcs
MTAgKzc3LDEwIEBAIHB1YmxpYzoKICAgICBDU1NQcmltaXRpdmVWYWx1ZSogYm90dG9tUmlnaHRS
YWRpdXMoKSBjb25zdCB7IHJldHVybiBtX2JvdHRvbVJpZ2h0UmFkaXVzLmdldCgpOyB9CiAgICAg
Q1NTUHJpbWl0aXZlVmFsdWUqIGJvdHRvbUxlZnRSYWRpdXMoKSBjb25zdCB7IHJldHVybiBtX2Jv
dHRvbUxlZnRSYWRpdXMuZ2V0KCk7IH0KIAotICAgIHZvaWQgc2V0VG9wKFBhc3NSZWZQdHI8Q1NT
UHJpbWl0aXZlVmFsdWU+IHRvcCkgeyBtX3RvcCA9IHRvcDsgfQotICAgIHZvaWQgc2V0UmlnaHQo
UGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcmlnaHQpIHsgbV9yaWdodCA9IHJpZ2h0OyB9
Ci0gICAgdm9pZCBzZXRCb3R0b20oUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gYm90dG9t
KSB7IG1fYm90dG9tID0gYm90dG9tOyB9Ci0gICAgdm9pZCBzZXRMZWZ0KFBhc3NSZWZQdHI8Q1NT
UHJpbWl0aXZlVmFsdWU+IGxlZnQpIHsgbV9sZWZ0ID0gbGVmdDsgfQorICAgIHZvaWQgc2V0VG9w
KFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gdG9wKSB7IG1fdG9wID0gdG9wOyB9CisgICAgdm9p
ZCBzZXRSaWdodChSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHJpZ2h0KSB7IG1fcmlnaHQgPSBy
aWdodDsgfQorICAgIHZvaWQgc2V0Qm90dG9tKFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gYm90
dG9tKSB7IG1fYm90dG9tID0gYm90dG9tOyB9CisgICAgdm9pZCBzZXRMZWZ0KFJlZlB0cjxDU1NQ
cmltaXRpdmVWYWx1ZT4gbGVmdCkgeyBtX2xlZnQgPSBsZWZ0OyB9CiAKICAgICB2b2lkIHVwZGF0
ZVNoYXBlU2l6ZTRWYWx1ZXMoQ1NTUHJpbWl0aXZlVmFsdWUqIHRvcCwgQ1NTUHJpbWl0aXZlVmFs
dWUqIHJpZ2h0LCBDU1NQcmltaXRpdmVWYWx1ZSogYm90dG9tLCBDU1NQcmltaXRpdmVWYWx1ZSog
bGVmdCkKICAgICB7CkBAIC0xMDUsMTAgKzEwNSwxMCBAQCBwdWJsaWM6CiAgICAgICAgIHVwZGF0
ZVNoYXBlU2l6ZTRWYWx1ZXModmFsdWUxLCB2YWx1ZTIsIHZhbHVlMywgdmFsdWUyKTsKICAgICB9
CiAKLSAgICB2b2lkIHNldFRvcExlZnRSYWRpdXMoUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1
ZT4gcmFkaXVzKSB7IG1fdG9wTGVmdFJhZGl1cyA9IHJhZGl1czsgfQotICAgIHZvaWQgc2V0VG9w
UmlnaHRSYWRpdXMoUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcmFkaXVzKSB7IG1fdG9w
UmlnaHRSYWRpdXMgPSByYWRpdXM7IH0KLSAgICB2b2lkIHNldEJvdHRvbVJpZ2h0UmFkaXVzKFBh
c3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHJhZGl1cykgeyBtX2JvdHRvbVJpZ2h0UmFkaXVz
ID0gcmFkaXVzOyB9Ci0gICAgdm9pZCBzZXRCb3R0b21MZWZ0UmFkaXVzKFBhc3NSZWZQdHI8Q1NT
UHJpbWl0aXZlVmFsdWU+IHJhZGl1cykgeyBtX2JvdHRvbUxlZnRSYWRpdXMgPSByYWRpdXM7IH0K
KyAgICB2b2lkIHNldFRvcExlZnRSYWRpdXMoUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiByYWRp
dXMpIHsgbV90b3BMZWZ0UmFkaXVzID0gcmFkaXVzOyB9CisgICAgdm9pZCBzZXRUb3BSaWdodFJh
ZGl1cyhSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHJhZGl1cykgeyBtX3RvcFJpZ2h0UmFkaXVz
ID0gcmFkaXVzOyB9CisgICAgdm9pZCBzZXRCb3R0b21SaWdodFJhZGl1cyhSZWZQdHI8Q1NTUHJp
bWl0aXZlVmFsdWU+IHJhZGl1cykgeyBtX2JvdHRvbVJpZ2h0UmFkaXVzID0gcmFkaXVzOyB9Cisg
ICAgdm9pZCBzZXRCb3R0b21MZWZ0UmFkaXVzKFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcmFk
aXVzKSB7IG1fYm90dG9tTGVmdFJhZGl1cyA9IHJhZGl1czsgfQogCiAgICAgdmlydHVhbCBTdHJp
bmcgY3NzVGV4dCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBlcXVhbHMoY29u
c3QgQ1NTQmFzaWNTaGFwZSYpIGNvbnN0IG92ZXJyaWRlOwpAQCAtMTQwLDkgKzE0MCw5IEBAIHB1
YmxpYzoKICAgICBDU1NQcmltaXRpdmVWYWx1ZSogY2VudGVyWSgpIGNvbnN0IHsgcmV0dXJuIG1f
Y2VudGVyWS5nZXQoKTsgfQogICAgIENTU1ByaW1pdGl2ZVZhbHVlKiByYWRpdXMoKSBjb25zdCB7
IHJldHVybiBtX3JhZGl1cy5nZXQoKTsgfQogCi0gICAgdm9pZCBzZXRDZW50ZXJYKFBhc3NSZWZQ
dHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNlbnRlclgpIHsgbV9jZW50ZXJYID0gY2VudGVyWDsgfQot
ICAgIHZvaWQgc2V0Q2VudGVyWShQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjZW50ZXJZ
KSB7IG1fY2VudGVyWSA9IGNlbnRlclk7IH0KLSAgICB2b2lkIHNldFJhZGl1cyhQYXNzUmVmUHRy
PENTU1ByaW1pdGl2ZVZhbHVlPiByYWRpdXMpIHsgbV9yYWRpdXMgPSByYWRpdXM7IH0KKyAgICB2
b2lkIHNldENlbnRlclgoUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjZW50ZXJYKSB7IG1fY2Vu
dGVyWCA9IGNlbnRlclg7IH0KKyAgICB2b2lkIHNldENlbnRlclkoUmVmUHRyPENTU1ByaW1pdGl2
ZVZhbHVlPiBjZW50ZXJZKSB7IG1fY2VudGVyWSA9IGNlbnRlclk7IH0KKyAgICB2b2lkIHNldFJh
ZGl1cyhSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHJhZGl1cykgeyBtX3JhZGl1cyA9IHJhZGl1
czsgfQogCiBwcml2YXRlOgogICAgIENTU0Jhc2ljU2hhcGVDaXJjbGUoKSB7IH0KQEAgLTE2Mywx
MCArMTYzLDEwIEBAIHB1YmxpYzoKICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcmFkaXVzWCgpIGNv
bnN0IHsgcmV0dXJuIG1fcmFkaXVzWC5nZXQoKTsgfQogICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBy
YWRpdXNZKCkgY29uc3QgeyByZXR1cm4gbV9yYWRpdXNZLmdldCgpOyB9CiAKLSAgICB2b2lkIHNl
dENlbnRlclgoUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY2VudGVyWCkgeyBtX2NlbnRl
clggPSBjZW50ZXJYOyB9Ci0gICAgdm9pZCBzZXRDZW50ZXJZKFBhc3NSZWZQdHI8Q1NTUHJpbWl0
aXZlVmFsdWU+IGNlbnRlclkpIHsgbV9jZW50ZXJZID0gY2VudGVyWTsgfQotICAgIHZvaWQgc2V0
UmFkaXVzWChQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiByYWRpdXNYKSB7IG1fcmFkaXVz
WCA9IHJhZGl1c1g7IH0KLSAgICB2b2lkIHNldFJhZGl1c1koUGFzc1JlZlB0cjxDU1NQcmltaXRp
dmVWYWx1ZT4gcmFkaXVzWSkgeyBtX3JhZGl1c1kgPSByYWRpdXNZOyB9CisgICAgdm9pZCBzZXRD
ZW50ZXJYKFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY2VudGVyWCkgeyBtX2NlbnRlclggPSBj
ZW50ZXJYOyB9CisgICAgdm9pZCBzZXRDZW50ZXJZKFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4g
Y2VudGVyWSkgeyBtX2NlbnRlclkgPSBjZW50ZXJZOyB9CisgICAgdm9pZCBzZXRSYWRpdXNYKFJl
ZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcmFkaXVzWCkgeyBtX3JhZGl1c1ggPSByYWRpdXNYOyB9
CisgICAgdm9pZCBzZXRSYWRpdXNZKFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcmFkaXVzWSkg
eyBtX3JhZGl1c1kgPSByYWRpdXNZOyB9CiAKICAgICB2aXJ0dWFsIFN0cmluZyBjc3NUZXh0KCkg
Y29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIGVxdWFscyhjb25zdCBDU1NCYXNpY1No
YXBlJikgY29uc3Qgb3ZlcnJpZGU7CkBAIC0xODYsNyArMTg2LDcgQEAgY2xhc3MgQ1NTQmFzaWNT
aGFwZVBvbHlnb24gZmluYWwgOiBwdWJsaWMgQ1NTQmFzaWNTaGFwZSB7CiBwdWJsaWM6CiAgICAg
c3RhdGljIFJlZjxDU1NCYXNpY1NoYXBlUG9seWdvbj4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBDU1NCYXNpY1NoYXBlUG9seWdvbik7IH0KIAotICAgIHZvaWQgYXBwZW5kUG9pbnQo
UGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4geCwgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVW
YWx1ZT4geSkKKyAgICB2b2lkIGFwcGVuZFBvaW50KFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4g
eCwgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiB5KQogICAgIHsKICAgICAgICAgbV92YWx1ZXMu
YXBwZW5kKHgpOwogICAgICAgICBtX3ZhbHVlcy5hcHBlbmQoeSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQm9yZGVySW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0JvcmRlckltYWdlLmNwcAppbmRleCBiZTc0MzJjZDhhZWRhMGQ2NzMyYTkzZjg3YTBmMmIwMjM1
OTczN2MzLi4xNjVkOTJiYTNjY2RkNzRlNzQ5NDBkYjkzMDE1ZTgwYzdjYzU1YThhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQm9yZGVySW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NCb3JkZXJJbWFnZS5jcHAKQEAgLTIyLDcgKzIyLDcgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1SZWY8Q1NTVmFsdWVMaXN0PiBjcmVhdGVCb3JkZXJJbWFnZVZhbHVl
KFBhc3NSZWZQdHI8Q1NTVmFsdWU+IGltYWdlLCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBpbWFnZVNs
aWNlLCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBib3JkZXJTbGljZSwgUGFzc1JlZlB0cjxDU1NWYWx1
ZT4gb3V0c2V0LCBQYXNzUmVmUHRyPENTU1ZhbHVlPiByZXBlYXQpCitSZWY8Q1NTVmFsdWVMaXN0
PiBjcmVhdGVCb3JkZXJJbWFnZVZhbHVlKFJlZlB0cjxDU1NWYWx1ZT4gaW1hZ2UsIFJlZlB0cjxD
U1NWYWx1ZT4gaW1hZ2VTbGljZSwgUmVmUHRyPENTU1ZhbHVlPiBib3JkZXJTbGljZSwgUmVmUHRy
PENTU1ZhbHVlPiBvdXRzZXQsIFJlZlB0cjxDU1NWYWx1ZT4gcmVwZWF0KQogewogICAgIGF1dG8g
bGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKICAgICBpZiAoaW1h
Z2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQm9yZGVySW1hZ2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NCb3JkZXJJbWFnZS5oCmluZGV4IGMyYzI1ZGE4ODk3MjY2NTE3
YjA3MDE4Y2RjNDJlNGQ1MGJmM2JjYzEuLjVjNDg2OTNlMjA0MzRkMjJiMmUyYTAyODMwN2RkMDRi
MWFlYjk1MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCb3JkZXJJbWFnZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCb3JkZXJJbWFnZS5oCkBAIC0yMiwxMiArMjIs
MTEgQEAKIAogI2luY2x1ZGUgIkNTU0JvcmRlckltYWdlU2xpY2VWYWx1ZS5oIgogI2luY2x1ZGUg
IkNTU1ZhbHVlTGlzdC5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxDU1NWYWx1ZUxpc3Q+
IGNyZWF0ZUJvcmRlckltYWdlVmFsdWUoUGFzc1JlZlB0cjxDU1NWYWx1ZT4gaW1hZ2UsIFBhc3NS
ZWZQdHI8Q1NTVmFsdWU+IGltYWdlU2xpY2UsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IGJvcmRlclNs
aWNlLCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBvdXRzZXQsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHJl
cGVhdCk7CitSZWY8Q1NTVmFsdWVMaXN0PiBjcmVhdGVCb3JkZXJJbWFnZVZhbHVlKFJlZlB0cjxD
U1NWYWx1ZT4gaW1hZ2UsIFJlZlB0cjxDU1NWYWx1ZT4gaW1hZ2VTbGljZSwgUmVmUHRyPENTU1Zh
bHVlPiBib3JkZXJTbGljZSwgUmVmUHRyPENTU1ZhbHVlPiBvdXRzZXQsIFJlZlB0cjxDU1NWYWx1
ZT4gcmVwZWF0KTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUuY3BwCmluZGV4IDVjYzA3ZmQ0MzdiZmE4
ZTUwYmFlN2Y4NzE0MjQzOGEzZDhkMGVlMzguLjM0YmU0ZTkzNmVlNDhmZTkwMjg1N2I4ZTgxMmNk
NTExYjE4MDI4NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCb3JkZXJJbWFn
ZVNsaWNlVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCb3JkZXJJbWFnZVNs
aWNlVmFsdWUuY3BwCkBAIC0zMSw3ICszMSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Q1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlOjpDU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUoUGFzc1Jl
ZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gc2xpY2VzLCBib29sIGZpbGwpCitDU1NCb3JkZXJJbWFn
ZVNsaWNlVmFsdWU6OkNTU0JvcmRlckltYWdlU2xpY2VWYWx1ZShSZWZQdHI8Q1NTUHJpbWl0aXZl
VmFsdWU+IHNsaWNlcywgYm9vbCBmaWxsKQogICAgIDogQ1NTVmFsdWUoQm9yZGVySW1hZ2VTbGlj
ZUNsYXNzKQogICAgICwgbV9zbGljZXMoc2xpY2VzKQogICAgICwgbV9maWxsKGZpbGwpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlLmggYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlLmgKaW5kZXggYjhiNzU1
MjljNDg1Yjk3Yjk3MWI3NGRmNzA3YzEyOTAzNDg0Mzk5Mi4uZDgwYjQzODcyMDFiMGFkZTg2NzMx
MTNjZjZkMDhmZmZkYTZhNjg0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Jv
cmRlckltYWdlU2xpY2VWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCb3JkZXJJ
bWFnZVNsaWNlVmFsdWUuaApAQCAtMjcsNyArMjcsNiBAQAogI2RlZmluZSBDU1NCb3JkZXJJbWFn
ZVNsaWNlVmFsdWVfaAogCiAjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWUuaCIKLSNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtMzYsNyArMzUsNyBAQCBjbGFzcyBSZWN0OwogCiBjbGFzcyBDU1NCb3Jk
ZXJJbWFnZVNsaWNlVmFsdWUgOiBwdWJsaWMgQ1NTVmFsdWUgewogcHVibGljOgotICAgIHN0YXRp
YyBSZWY8Q1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlPiBjcmVhdGUoUGFzc1JlZlB0cjxDU1NQcmlt
aXRpdmVWYWx1ZT4gc2xpY2VzLCBib29sIGZpbGwpCisgICAgc3RhdGljIFJlZjxDU1NCb3JkZXJJ
bWFnZVNsaWNlVmFsdWU+IGNyZWF0ZShSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHNsaWNlcywg
Ym9vbCBmaWxsKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTQm9yZGVy
SW1hZ2VTbGljZVZhbHVlKHNsaWNlcywgZmlsbCkpOwogICAgIH0KQEAgLTUzLDcgKzUyLDcgQEAg
cHVibGljOgogICAgIGJvb2wgbV9maWxsOwogCiBwcml2YXRlOgotICAgIENTU0JvcmRlckltYWdl
U2xpY2VWYWx1ZShQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBzbGljZXMsIGJvb2wgZmls
bCk7CisgICAgQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlKFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1
ZT4gc2xpY2VzLCBib29sIGZpbGwpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuY3BwCmluZGV4IDM2MTQyZjFiZjBi
YzAyNDgwNzkzYjQwOWFjYzA3YzY5YThjMzc1NTkuLmI1Zjc1ZDlhNGI1MDQyNDIyMTdlOTQ1MGFm
ZDA1NmQ3MzMyZTUwODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxh
dGlvblZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1
ZS5jcHAKQEAgLTE5OCw3ICsxOTgsNyBAQCBkb3VibGUgQ1NTQ2FsY1ZhbHVlOjpjb21wdXRlTGVu
Z3RoUHgoY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYgY29udmVyc2lvbgogY2xhc3Mg
Q1NTQ2FsY1ByaW1pdGl2ZVZhbHVlIGZpbmFsIDogcHVibGljIENTU0NhbGNFeHByZXNzaW9uTm9k
ZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJl
ZjxDU1NDYWxjUHJpbWl0aXZlVmFsdWU+IGNyZWF0ZShQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZh
bHVlPiB2YWx1ZSwgYm9vbCBpc0ludGVnZXIpCisgICAgc3RhdGljIFJlZjxDU1NDYWxjUHJpbWl0
aXZlVmFsdWU+IGNyZWF0ZShSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHZhbHVlLCBib29sIGlz
SW50ZWdlcikKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU0NhbGNQcmlt
aXRpdmVWYWx1ZSh2YWx1ZSwgaXNJbnRlZ2VyKSk7CiAgICAgfQpAQCAtMjkxLDcgKzI5MSw3IEBA
IHByaXZhdGU6CiAgICAgfQogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IENTU0NhbGNQcmltaXRp
dmVWYWx1ZShQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiB2YWx1ZSwgYm9vbCBpc0ludGVn
ZXIpCisgICAgZXhwbGljaXQgQ1NTQ2FsY1ByaW1pdGl2ZVZhbHVlKFJlZlB0cjxDU1NQcmltaXRp
dmVWYWx1ZT4gdmFsdWUsIGJvb2wgaXNJbnRlZ2VyKQogICAgICAgICA6IENTU0NhbGNFeHByZXNz
aW9uTm9kZSh1bml0Q2F0ZWdvcnkoKENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXMpdmFsdWUt
PnByaW1pdGl2ZVR5cGUoKSksIGlzSW50ZWdlcikKICAgICAgICAgLCBtX3ZhbHVlKHZhbHVlKQog
ICAgIHsKQEAgLTM0OCw3ICszNDgsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNJbnRlZ2VyUmVz
dWx0KENhbGNPcGVyYXRvciBvcCwgY29uc3QgQ1NTQ2FsY0V4cHJlc3Npb25Ob2RlJgogY2xhc3Mg
Q1NTQ2FsY0JpbmFyeU9wZXJhdGlvbiBmaW5hbCA6IHB1YmxpYyBDU1NDYWxjRXhwcmVzc2lvbk5v
ZGUgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBS
ZWZQdHI8Q1NTQ2FsY0JpbmFyeU9wZXJhdGlvbj4gY3JlYXRlKENhbGNPcGVyYXRvciBvcCwgUGFz
c1JlZlB0cjxDU1NDYWxjRXhwcmVzc2lvbk5vZGU+IGxlZnRTaWRlLCBQYXNzUmVmUHRyPENTU0Nh
bGNFeHByZXNzaW9uTm9kZT4gcmlnaHRTaWRlKQorICAgIHN0YXRpYyBSZWZQdHI8Q1NTQ2FsY0Jp
bmFyeU9wZXJhdGlvbj4gY3JlYXRlKENhbGNPcGVyYXRvciBvcCwgUmVmUHRyPENTU0NhbGNFeHBy
ZXNzaW9uTm9kZT4gbGVmdFNpZGUsIFJlZlB0cjxDU1NDYWxjRXhwcmVzc2lvbk5vZGU+IHJpZ2h0
U2lkZSkKICAgICB7CiAgICAgICAgIEFTU0VSVChsZWZ0U2lkZS0+Y2F0ZWdvcnkoKSA8IENhbGNP
dGhlcik7CiAgICAgICAgIEFTU0VSVChyaWdodFNpZGUtPmNhdGVnb3J5KCkgPCBDYWxjT3RoZXIp
OwpAQCAtMzYxLDcgKzM2MSw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBDU1NDYWxjQmluYXJ5T3BlcmF0aW9uKG5ld0NhdGVnb3J5LCBvcCwgbGVmdFNpZGUsIHJpZ2h0
U2lkZSkpOwogICAgIH0KIAotICAgIHN0YXRpYyBSZWZQdHI8Q1NTQ2FsY0V4cHJlc3Npb25Ob2Rl
PiBjcmVhdGVTaW1wbGlmaWVkKENhbGNPcGVyYXRvciBvcCwgUGFzc1JlZlB0cjxDU1NDYWxjRXhw
cmVzc2lvbk5vZGU+IGxlZnRTaWRlLCBQYXNzUmVmUHRyPENTU0NhbGNFeHByZXNzaW9uTm9kZT4g
cmlnaHRTaWRlKQorICAgIHN0YXRpYyBSZWZQdHI8Q1NTQ2FsY0V4cHJlc3Npb25Ob2RlPiBjcmVh
dGVTaW1wbGlmaWVkKENhbGNPcGVyYXRvciBvcCwgUmVmUHRyPENTU0NhbGNFeHByZXNzaW9uTm9k
ZT4gbGVmdFNpZGUsIFJlZlB0cjxDU1NDYWxjRXhwcmVzc2lvbk5vZGU+IHJpZ2h0U2lkZSkKICAg
ICB7CiAgICAgICAgIENhbGN1bGF0aW9uQ2F0ZWdvcnkgbGVmdENhdGVnb3J5ID0gbGVmdFNpZGUt
PmNhdGVnb3J5KCk7CiAgICAgICAgIENhbGN1bGF0aW9uQ2F0ZWdvcnkgcmlnaHRDYXRlZ29yeSA9
IHJpZ2h0U2lkZS0+Y2F0ZWdvcnkoKTsKQEAgLTUxNCw3ICs1MTQsNyBAQCBwcml2YXRlOgogICAg
ICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19VTktOT1dOOwogICAgIH0KIAotICAg
IENTU0NhbGNCaW5hcnlPcGVyYXRpb24oQ2FsY3VsYXRpb25DYXRlZ29yeSBjYXRlZ29yeSwgQ2Fs
Y09wZXJhdG9yIG9wLCBQYXNzUmVmUHRyPENTU0NhbGNFeHByZXNzaW9uTm9kZT4gbGVmdFNpZGUs
IFBhc3NSZWZQdHI8Q1NTQ2FsY0V4cHJlc3Npb25Ob2RlPiByaWdodFNpZGUpCisgICAgQ1NTQ2Fs
Y0JpbmFyeU9wZXJhdGlvbihDYWxjdWxhdGlvbkNhdGVnb3J5IGNhdGVnb3J5LCBDYWxjT3BlcmF0
b3Igb3AsIFJlZlB0cjxDU1NDYWxjRXhwcmVzc2lvbk5vZGU+IGxlZnRTaWRlLCBSZWZQdHI8Q1NT
Q2FsY0V4cHJlc3Npb25Ob2RlPiByaWdodFNpZGUpCiAgICAgICAgIDogQ1NTQ2FsY0V4cHJlc3Np
b25Ob2RlKGNhdGVnb3J5LCBpc0ludGVnZXJSZXN1bHQob3AsICpsZWZ0U2lkZSwgKnJpZ2h0U2lk
ZSkpCiAgICAgICAgICwgbV9sZWZ0U2lkZShsZWZ0U2lkZSkKICAgICAgICAgLCBtX3JpZ2h0U2lk
ZShyaWdodFNpZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRT
dHlsZURlY2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxl
RGVjbGFyYXRpb24uY3BwCmluZGV4IDAzOWI4MTg0ZTRkNzU2ZWEyMGRiNTFjYTI2MTNhOTRlNjRh
MmRkM2EuLjdjNDc1OWI4YWVmY2Q0YTJlOTNlMzRjYzc0ZGZkZjRlY2UzMGI5ZmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCkBA
IC04OTUsOCArODk1LDggQEAgUmVmPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjp2
YWx1ZUZvclNoYWRvdyhjb25zdCBTaGFkb3dEYXRhKiBzaGFkb3csIEMKICAgICAgICAgUmVmUHRy
PENTU1ByaW1pdGl2ZVZhbHVlPiB4ID0gYWRqdXN0TGVuZ3RoRm9yWm9vbShjdXJyU2hhZG93RGF0
YS0+eCgpLCBzdHlsZSwgYWRqdXN0KTsKICAgICAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVl
PiB5ID0gYWRqdXN0TGVuZ3RoRm9yWm9vbShjdXJyU2hhZG93RGF0YS0+eSgpLCBzdHlsZSwgYWRq
dXN0KTsKICAgICAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBibHVyID0gYWRqdXN0TGVu
Z3RoRm9yWm9vbShjdXJyU2hhZG93RGF0YS0+cmFkaXVzKCksIHN0eWxlLCBhZGp1c3QpOwotICAg
ICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHNwcmVhZCA9IHByb3BlcnR5SUQgPT0gQ1NT
UHJvcGVydHlUZXh0U2hhZG93ID8gUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4oKSA6IGFk
anVzdExlbmd0aEZvclpvb20oY3VyclNoYWRvd0RhdGEtPnNwcmVhZCgpLCBzdHlsZSwgYWRqdXN0
KTsKLSAgICAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBzdHlsZSA9IHByb3BlcnR5SUQg
PT0gQ1NTUHJvcGVydHlUZXh0U2hhZG93IHx8IGN1cnJTaGFkb3dEYXRhLT5zdHlsZSgpID09IE5v
cm1hbCA/IFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+KCkgOiBjc3NWYWx1ZVBvb2woKS5j
cmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVJbnNldCk7CisgICAgICAgIFJlZlB0cjxDU1NQ
cmltaXRpdmVWYWx1ZT4gc3ByZWFkID0gcHJvcGVydHlJRCA9PSBDU1NQcm9wZXJ0eVRleHRTaGFk
b3cgPyBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+KCkgOiBhZGp1c3RMZW5ndGhGb3Jab29tKGN1
cnJTaGFkb3dEYXRhLT5zcHJlYWQoKSwgc3R5bGUsIGFkanVzdCk7CisgICAgICAgIFJlZlB0cjxD
U1NQcmltaXRpdmVWYWx1ZT4gc3R5bGUgPSBwcm9wZXJ0eUlEID09IENTU1Byb3BlcnR5VGV4dFNo
YWRvdyB8fCBjdXJyU2hhZG93RGF0YS0+c3R5bGUoKSA9PSBOb3JtYWwgPyBSZWZQdHI8Q1NTUHJp
bWl0aXZlVmFsdWU+KCkgOiBjc3NWYWx1ZVBvb2woKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NT
VmFsdWVJbnNldCk7CiAgICAgICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29sb3IgPSBj
c3NWYWx1ZVBvb2woKS5jcmVhdGVDb2xvclZhbHVlKGN1cnJTaGFkb3dEYXRhLT5jb2xvcigpLnJn
YigpKTsKICAgICAgICAgbGlzdC5nZXQoKS5wcmVwZW5kKENTU1NoYWRvd1ZhbHVlOjpjcmVhdGUo
eC5yZWxlYXNlKCksIHkucmVsZWFzZSgpLCBibHVyLnJlbGVhc2UoKSwgc3ByZWFkLnJlbGVhc2Uo
KSwgc3R5bGUucmVsZWFzZSgpLCBjb2xvci5yZWxlYXNlKCkpKTsKICAgICB9CkBAIC0xMjcyLDcg
KzEyNzIsNyBAQCBzdGF0aWMgUmVmPENTU1ZhbHVlPiBjcmVhdGVMaW5lQm94Q29udGFpblZhbHVl
KHVuc2lnbmVkIGxpbmVCb3hDb250YWluKQogICAgIHJldHVybiBDU1NMaW5lQm94Q29udGFpblZh
bHVlOjpjcmVhdGUobGluZUJveENvbnRhaW4pOwogfQogCi1Db21wdXRlZFN0eWxlRXh0cmFjdG9y
OjpDb21wdXRlZFN0eWxlRXh0cmFjdG9yKFBhc3NSZWZQdHI8Tm9kZT4gbm9kZSwgYm9vbCBhbGxv
d1Zpc2l0ZWRTdHlsZSwgUHNldWRvSWQgcHNldWRvRWxlbWVudFNwZWNpZmllcikKK0NvbXB1dGVk
U3R5bGVFeHRyYWN0b3I6OkNvbXB1dGVkU3R5bGVFeHRyYWN0b3IoUmVmUHRyPE5vZGU+IG5vZGUs
IGJvb2wgYWxsb3dWaXNpdGVkU3R5bGUsIFBzZXVkb0lkIHBzZXVkb0VsZW1lbnRTcGVjaWZpZXIp
CiAgICAgOiBtX25vZGUobm9kZSkKICAgICAsIG1fcHNldWRvRWxlbWVudFNwZWNpZmllcihwc2V1
ZG9FbGVtZW50U3BlY2lmaWVyKQogICAgICwgbV9hbGxvd1Zpc2l0ZWRTdHlsZShhbGxvd1Zpc2l0
ZWRTdHlsZSkKQEAgLTEyODAsNyArMTI4MCw3IEBAIENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OkNv
bXB1dGVkU3R5bGVFeHRyYWN0b3IoUGFzc1JlZlB0cjxOb2RlPiBub2RlLCBib29sIGFsbG93CiB9
CiAKIAotQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpDU1NDb21wdXRlZFN0eWxlRGVjbGFy
YXRpb24oUGFzc1JlZlB0cjxOb2RlPiBuLCBib29sIGFsbG93VmlzaXRlZFN0eWxlLCBjb25zdCBT
dHJpbmcmIHBzZXVkb0VsZW1lbnROYW1lKQorQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpD
U1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24oUmVmUHRyPE5vZGU+IG4sIGJvb2wgYWxsb3dWaXNp
dGVkU3R5bGUsIGNvbnN0IFN0cmluZyYgcHNldWRvRWxlbWVudE5hbWUpCiAgICAgOiBtX25vZGUo
bikKICAgICAsIG1fYWxsb3dWaXNpdGVkU3R5bGUoYWxsb3dWaXNpdGVkU3R5bGUpCiAgICAgLCBt
X3JlZkNvdW50KDEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRT
dHlsZURlY2xhcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURl
Y2xhcmF0aW9uLmgKaW5kZXggNmU5MWM5M2RiNDM4MjQ2YWE5MWRhMjFjMTUzZGRmNDAzYWY4NTkz
OC4uZTEzYTM4YTJlZjc4MzBjNTAyZGYyMzY2YTc5NzdjNGRkN2EzNGY1YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaApAQCAtNDcsNyAr
NDcsNyBAQCBlbnVtIEFkanVzdFBpeGVsVmFsdWVzRm9yQ29tcHV0ZWRTdHlsZSB7IEFkanVzdFBp
eGVsVmFsdWVzLCBEb05vdEFkanVzdFBpeGVsVmFsdQogCiBjbGFzcyBDb21wdXRlZFN0eWxlRXh0
cmFjdG9yIHsKIHB1YmxpYzoKLSAgICBDb21wdXRlZFN0eWxlRXh0cmFjdG9yKFBhc3NSZWZQdHI8
Tm9kZT4sIGJvb2wgYWxsb3dWaXNpdGVkU3R5bGUgPSBmYWxzZSwgUHNldWRvSWQgPSBOT1BTRVVE
Tyk7CisgICAgQ29tcHV0ZWRTdHlsZUV4dHJhY3RvcihSZWZQdHI8Tm9kZT4sIGJvb2wgYWxsb3dW
aXNpdGVkU3R5bGUgPSBmYWxzZSwgUHNldWRvSWQgPSBOT1BTRVVETyk7CiAKICAgICBSZWZQdHI8
Q1NTVmFsdWU+IHByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCwgRVVwZGF0ZUxheW91dCA9IFVw
ZGF0ZUxheW91dCkgY29uc3Q7CiAKQEAgLTY4LDcgKzY4LDcgQEAgcHJpdmF0ZToKICAgICBOb2Rl
KiBzdHlsZWROb2RlKCkgY29uc3Q7CiAKICAgICBSZWZQdHI8Q1NTVmFsdWU+IHN2Z1Byb3BlcnR5
VmFsdWUoQ1NTUHJvcGVydHlJRCwgRVVwZGF0ZUxheW91dCkgY29uc3Q7Ci0gICAgUmVmUHRyPFNW
R1BhaW50PiBhZGp1c3RTVkdQYWludEZvckN1cnJlbnRDb2xvcihQYXNzUmVmUHRyPFNWR1BhaW50
PiwgUmVuZGVyU3R5bGUqKSBjb25zdDsKKyAgICBSZWZQdHI8U1ZHUGFpbnQ+IGFkanVzdFNWR1Bh
aW50Rm9yQ3VycmVudENvbG9yKFJlZlB0cjxTVkdQYWludD4sIFJlbmRlclN0eWxlKikgY29uc3Q7
CiAKICAgICBzdGF0aWMgUmVmPENTU1ZhbHVlPiB2YWx1ZUZvclNoYWRvdyhjb25zdCBTaGFkb3dE
YXRhKiwgQ1NTUHJvcGVydHlJRCwgY29uc3QgUmVuZGVyU3R5bGUmLCBBZGp1c3RQaXhlbFZhbHVl
c0ZvckNvbXB1dGVkU3R5bGUgPSBBZGp1c3RQaXhlbFZhbHVlcyk7CiAgICAgUmVmUHRyPENTU1By
aW1pdGl2ZVZhbHVlPiBjdXJyZW50Q29sb3JPclZhbGlkQ29sb3IoUmVuZGVyU3R5bGUqLCBjb25z
dCBDb2xvciYpIGNvbnN0OwpAQCAtODUsNyArODUsNyBAQCBwcml2YXRlOgogCiBjbGFzcyBDU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb24gZmluYWwgOiBwdWJsaWMgQ1NTU3R5bGVEZWNsYXJhdGlv
biB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24+
IGNyZWF0ZShQYXNzUmVmUHRyPE5vZGU+IG5vZGUsIGJvb2wgYWxsb3dWaXNpdGVkU3R5bGUgPSBm
YWxzZSwgY29uc3QgU3RyaW5nJiBwc2V1ZG9FbGVtZW50TmFtZSA9IFN0cmluZygpKQorICAgIHN0
YXRpYyBSZWY8Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uPiBjcmVhdGUoUmVmUHRyPE5vZGU+
IG5vZGUsIGJvb2wgYWxsb3dWaXNpdGVkU3R5bGUgPSBmYWxzZSwgY29uc3QgU3RyaW5nJiBwc2V1
ZG9FbGVtZW50TmFtZSA9IFN0cmluZygpKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uKG5vZGUsIGFsbG93VmlzaXRlZFN0eWxl
LCBwc2V1ZG9FbGVtZW50TmFtZSkpOwogICAgIH0KQEAgLTk3LDcgKzk3LDcgQEAgcHVibGljOgog
ICAgIFN0cmluZyBnZXRQcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQpIGNvbnN0OwogCiBwcml2
YXRlOgotICAgIFdFQkNPUkVfRVhQT1JUIENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbihQYXNz
UmVmUHRyPE5vZGU+LCBib29sIGFsbG93VmlzaXRlZFN0eWxlLCBjb25zdCBTdHJpbmcmKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24oUmVmUHRyPE5vZGU+
LCBib29sIGFsbG93VmlzaXRlZFN0eWxlLCBjb25zdCBTdHJpbmcmKTsKIAogICAgIC8vIENTU09N
IGZ1bmN0aW9ucy4gRG9uJ3QgbWFrZSB0aGVzZSBwdWJsaWMuCiAgICAgdmlydHVhbCBDU1NSdWxl
KiBwYXJlbnRSdWxlKCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2Zh
ZGVWYWx1ZS5oCmluZGV4IGZhMDNiZDk3Njg2ODMxM2FhNjA0MzUxNGQ4YjAxYjJhYmM1OWI5ZTgu
LmFhNmQ3NDIyZWJlMTYxYTZiZjI1OTFjNDgyZDI3MzViZTU5NjVkMjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5oCkBAIC00Myw3ICs0Myw3IEBAIGNsYXNzIERvY3VtZW50
OwogY2xhc3MgQ1NTQ3Jvc3NmYWRlVmFsdWUgOiBwdWJsaWMgQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1
ZSB7CiAgICAgZnJpZW5kIGNsYXNzIENyb3NzZmFkZVN1YmltYWdlT2JzZXJ2ZXJQcm94eTsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmPENTU0Nyb3NzZmFkZVZhbHVlPiBjcmVhdGUoUGFzc1JlZlB0
cjxDU1NWYWx1ZT4gZnJvbVZhbHVlLCBQYXNzUmVmUHRyPENTU1ZhbHVlPiB0b1ZhbHVlKQorICAg
IHN0YXRpYyBSZWY8Q1NTQ3Jvc3NmYWRlVmFsdWU+IGNyZWF0ZShSZWZQdHI8Q1NTVmFsdWU+IGZy
b21WYWx1ZSwgUmVmUHRyPENTU1ZhbHVlPiB0b1ZhbHVlKQogICAgIHsKICAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgQ1NTQ3Jvc3NmYWRlVmFsdWUoZnJvbVZhbHVlLCB0b1ZhbHVlKSk7CiAg
ICAgfQpAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGxvYWRTdWJpbWFnZXMo
Q2FjaGVkUmVzb3VyY2VMb2FkZXImLCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmKTsKIAot
ICAgIHZvaWQgc2V0UGVyY2VudGFnZShQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBwZXJj
ZW50YWdlVmFsdWUpIHsgbV9wZXJjZW50YWdlVmFsdWUgPSBwZXJjZW50YWdlVmFsdWU7IH0KKyAg
ICB2b2lkIHNldFBlcmNlbnRhZ2UoUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBwZXJjZW50YWdl
VmFsdWUpIHsgbV9wZXJjZW50YWdlVmFsdWUgPSBwZXJjZW50YWdlVmFsdWU7IH0KIAogICAgIGJv
b2wgdHJhdmVyc2VTdWJyZXNvdXJjZXMoY29uc3Qgc3RkOjpmdW5jdGlvbjxib29sIChjb25zdCBD
YWNoZWRSZXNvdXJjZSYpPiYgaGFuZGxlcikgY29uc3Q7CiAKQEAgLTcyLDcgKzcyLDcgQEAgcHVi
bGljOgogICAgIGJvb2wgZXF1YWxJbnB1dEltYWdlcyhjb25zdCBDU1NDcm9zc2ZhZGVWYWx1ZSYp
IGNvbnN0OwogCiBwcml2YXRlOgotICAgIENTU0Nyb3NzZmFkZVZhbHVlKFBhc3NSZWZQdHI8Q1NT
VmFsdWU+IGZyb21WYWx1ZSwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gdG9WYWx1ZSkKKyAgICBDU1ND
cm9zc2ZhZGVWYWx1ZShSZWZQdHI8Q1NTVmFsdWU+IGZyb21WYWx1ZSwgUmVmUHRyPENTU1ZhbHVl
PiB0b1ZhbHVlKQogICAgICAgICA6IENTU0ltYWdlR2VuZXJhdG9yVmFsdWUoQ3Jvc3NmYWRlQ2xh
c3MpCiAgICAgICAgICwgbV9mcm9tVmFsdWUoZnJvbVZhbHVlKQogICAgICAgICAsIG1fdG9WYWx1
ZSh0b1ZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdl
VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmgKaW5kZXgg
MTI5NzI0ZmRlMzVlNWRjYWFkNzU3MmI4NTBlYmE0ZTA5MDBhY2EyYi4uYWMwNGQ4ZjFkMTZhYTI0
OTAyYWQwYjBjZjYxZDBlMGU2YjhkYzYyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ZpbHRlckltYWdlVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVy
SW1hZ2VWYWx1ZS5oCkBAIC04MCw3ICs4MCw3IEBAIHB1YmxpYzoKICAgICBDYWNoZWRJbWFnZSog
Y2FjaGVkSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZEltYWdlLmdldCgpOyB9CiAKIHBy
aXZhdGU6Ci0gICAgQ1NTRmlsdGVySW1hZ2VWYWx1ZShQYXNzUmVmUHRyPENTU1ZhbHVlPiBpbWFn
ZVZhbHVlLCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBmaWx0ZXJWYWx1ZSkKKyAgICBDU1NGaWx0ZXJJ
bWFnZVZhbHVlKFJlZlB0cjxDU1NWYWx1ZT4gaW1hZ2VWYWx1ZSwgUmVmUHRyPENTU1ZhbHVlPiBm
aWx0ZXJWYWx1ZSkKICAgICAgICAgOiBDU1NJbWFnZUdlbmVyYXRvclZhbHVlKEZpbHRlckltYWdl
Q2xhc3MpCiAgICAgICAgICwgbV9pbWFnZVZhbHVlKGltYWdlVmFsdWUpCiAgICAgICAgICwgbV9m
aWx0ZXJWYWx1ZShmaWx0ZXJWYWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NGb250RmFjZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlLmgKaW5kZXggZGI2
N2JjNjY0MzNiNWY1MDA4ZWFlZGY1ZDliMTUwYTkwMTZjYmQyNS4uYzIxNDlkZGQzMmVkY2YyZGI3
ZGM1ZDliZTBkODI5ZGViYzVlOGE0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0ZvbnRGYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlLmgKQEAgLTMy
LDcgKzMyLDYgQEAKICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
ICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKQEAg
LTQ0LDcgKzQzLDcgQEAgY2xhc3MgRm9udDsKIAogY2xhc3MgQ1NTRm9udEZhY2UgOiBwdWJsaWMg
UmVmQ291bnRlZDxDU1NGb250RmFjZT4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8Q1NTRm9u
dEZhY2U+IGNyZWF0ZShGb250VHJhaXRzTWFzayB0cmFpdHNNYXNrLCBQYXNzUmVmUHRyPENTU0Zv
bnRGYWNlUnVsZT4gcnVsZSwgYm9vbCBpc0xvY2FsRmFsbGJhY2sgPSBmYWxzZSkgeyByZXR1cm4g
YWRvcHRSZWYoKm5ldyBDU1NGb250RmFjZSh0cmFpdHNNYXNrLCBydWxlLCBpc0xvY2FsRmFsbGJh
Y2spKTsgfQorICAgIHN0YXRpYyBSZWY8Q1NTRm9udEZhY2U+IGNyZWF0ZShGb250VHJhaXRzTWFz
ayB0cmFpdHNNYXNrLCBSZWZQdHI8Q1NTRm9udEZhY2VSdWxlPiBydWxlLCBib29sIGlzTG9jYWxG
YWxsYmFjayA9IGZhbHNlKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IENTU0ZvbnRGYWNlKHRyYWl0
c01hc2ssIHJ1bGUsIGlzTG9jYWxGYWxsYmFjaykpOyB9CiAKICAgICBGb250VHJhaXRzTWFzayB0
cmFpdHNNYXNrKCkgY29uc3QgeyByZXR1cm4gbV90cmFpdHNNYXNrOyB9CiAKQEAgLTkyLDcgKzkx
LDcgQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgQ1NTRm9udEZhY2UoRm9udFRy
YWl0c01hc2sgdHJhaXRzTWFzaywgUGFzc1JlZlB0cjxDU1NGb250RmFjZVJ1bGU+IHJ1bGUsIGJv
b2wgaXNMb2NhbEZhbGxiYWNrKQorICAgIENTU0ZvbnRGYWNlKEZvbnRUcmFpdHNNYXNrIHRyYWl0
c01hc2ssIFJlZlB0cjxDU1NGb250RmFjZVJ1bGU+IHJ1bGUsIGJvb2wgaXNMb2NhbEZhbGxiYWNr
KQogICAgICAgICA6IG1fdHJhaXRzTWFzayh0cmFpdHNNYXNrKQogICAgICAgICAsIG1fYWN0aXZl
U291cmNlKDApCiAgICAgICAgICwgbV9pc0xvY2FsRmFsbGJhY2soaXNMb2NhbEZhbGxiYWNrKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlTG9hZEV2ZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZUxvYWRFdmVudC5jcHAKaW5kZXggYzE4MDFi
ZTgwZjdmNjljNThjMWNmMDcwMDIwOGQ5MWQ2MzE1YzQ1Yy4uYWFmMGRmM2E1MGJkNjQxNGRiZmVh
ZDhmYjE2ZDUwODJiYWM5ZTYwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Zv
bnRGYWNlTG9hZEV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VM
b2FkRXZlbnQuY3BwCkBAIC0zOSw3ICszOSw3IEBAIENTU0ZvbnRGYWNlTG9hZEV2ZW50OjpDU1NG
b250RmFjZUxvYWRFdmVudCgpCiB7CiB9CiAKLUNTU0ZvbnRGYWNlTG9hZEV2ZW50OjpDU1NGb250
RmFjZUxvYWRFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIFBhc3NSZWZQdHI8Q1NTRm9u
dEZhY2VSdWxlPiBmb250ZmFjZSwgUGFzc1JlZlB0cjxET01FcnJvcj4gZXJyb3IpCitDU1NGb250
RmFjZUxvYWRFdmVudDo6Q1NTRm9udEZhY2VMb2FkRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0
eXBlLCBSZWZQdHI8Q1NTRm9udEZhY2VSdWxlPiBmb250ZmFjZSwgUmVmUHRyPERPTUVycm9yPiBl
cnJvcikKICAgICA6IEV2ZW50KHR5cGUsIGZhbHNlLCBmYWxzZSkKICAgICAsIG1fZm9udGZhY2Uo
Zm9udGZhY2UpCiAgICAgLCBtX2Vycm9yKGVycm9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0ZvbnRGYWNlTG9hZEV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9u
dEZhY2VMb2FkRXZlbnQuaAppbmRleCA2OTZiYWM0NDFmN2FiN2NlMjhjYzY1OTQ1MzRhNjE5ZjZl
YmM0OGE4Li40Y2RjNzkxNjQwMDY4ZjY0MWUyZmRkY2ZhNjM0YjMyY2YyNjY4ZGFhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VMb2FkRXZlbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VMb2FkRXZlbnQuaApAQCAtMzgsNyArMzgsNiBAQAog
I2luY2x1ZGUgIkRPTUVycm9yLmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJFdmVu
dE5hbWVzLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTYwLDEyICs1OSwxMiBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiBhZG9wdFJlZjxDU1NGb250RmFjZUxvYWRFdmVudD4oKm5ldyBDU1NG
b250RmFjZUxvYWRFdmVudCh0eXBlLCBpbml0aWFsaXplcikpOwogICAgIH0KIAotICAgIHN0YXRp
YyBSZWY8Q1NTRm9udEZhY2VMb2FkRXZlbnQ+IGNyZWF0ZUZvckZvbnRGYWNlUnVsZShjb25zdCBB
dG9taWNTdHJpbmcmIHR5cGUsIFBhc3NSZWZQdHI8Q1NTRm9udEZhY2VSdWxlPiBydWxlKQorICAg
IHN0YXRpYyBSZWY8Q1NTRm9udEZhY2VMb2FkRXZlbnQ+IGNyZWF0ZUZvckZvbnRGYWNlUnVsZShj
b25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIFJlZlB0cjxDU1NGb250RmFjZVJ1bGU+IHJ1bGUpCiAg
ICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWY8Q1NTRm9udEZhY2VMb2FkRXZlbnQ+KCpuZXcg
Q1NTRm9udEZhY2VMb2FkRXZlbnQodHlwZSwgcnVsZSwgMCkpOwogICAgIH0KIAotICAgIHN0YXRp
YyBSZWY8Q1NTRm9udEZhY2VMb2FkRXZlbnQ+IGNyZWF0ZUZvckVycm9yKFBhc3NSZWZQdHI8Q1NT
Rm9udEZhY2VSdWxlPiBydWxlLCBQYXNzUmVmUHRyPERPTUVycm9yPiBlcnJvcikKKyAgICBzdGF0
aWMgUmVmPENTU0ZvbnRGYWNlTG9hZEV2ZW50PiBjcmVhdGVGb3JFcnJvcihSZWZQdHI8Q1NTRm9u
dEZhY2VSdWxlPiBydWxlLCBSZWZQdHI8RE9NRXJyb3I+IGVycm9yKQogICAgIHsKICAgICAgICAg
cmV0dXJuIGFkb3B0UmVmPENTU0ZvbnRGYWNlTG9hZEV2ZW50PigqbmV3IENTU0ZvbnRGYWNlTG9h
ZEV2ZW50KGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50LCBydWxlLCBlcnJvcikpOwogICAgIH0KQEAg
LTc5LDcgKzc4LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIENTU0ZvbnRGYWNlTG9hZEV2
ZW50KCk7Ci0gICAgQ1NTRm9udEZhY2VMb2FkRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiwgUGFz
c1JlZlB0cjxDU1NGb250RmFjZVJ1bGU+LCBQYXNzUmVmUHRyPERPTUVycm9yPik7CisgICAgQ1NT
Rm9udEZhY2VMb2FkRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiwgUmVmUHRyPENTU0ZvbnRGYWNl
UnVsZT4sIFJlZlB0cjxET01FcnJvcj4pOwogICAgIENTU0ZvbnRGYWNlTG9hZEV2ZW50KGNvbnN0
IEF0b21pY1N0cmluZyYsIGNvbnN0IENTU0ZvbnRGYWNlTG9hZEV2ZW50SW5pdCYpOwogCiAgICAg
UmVmUHRyPENTU0ZvbnRGYWNlUnVsZT4gbV9mb250ZmFjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Zv
bnRGYWNlU291cmNlLmgKaW5kZXggYTI2MDQxMzQ0MzFiNjJlNzE0ZDc0ODdhNWU1MWM1OTdhYWI3
Y2JkZi4uN2I2ZDI4NGNjZTA4MDNhYjMxYjU3NTVmNTQwNTg5Mjc2ZTY4MTJhNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmgKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgog
CiAjaWYgRU5BQkxFKFNWR19GT05UUykKICAgICBTVkdGb250RmFjZUVsZW1lbnQqIHN2Z0ZvbnRG
YWNlRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fc3ZnRm9udEZhY2VFbGVtZW50LmdldCgpOyB9
Ci0gICAgdm9pZCBzZXRTVkdGb250RmFjZUVsZW1lbnQoUGFzc1JlZlB0cjxTVkdGb250RmFjZUVs
ZW1lbnQ+IGVsZW1lbnQpIHsgbV9zdmdGb250RmFjZUVsZW1lbnQgPSBlbGVtZW50OyB9CisgICAg
dm9pZCBzZXRTVkdGb250RmFjZUVsZW1lbnQoUmVmUHRyPFNWR0ZvbnRGYWNlRWxlbWVudD4gZWxl
bWVudCkgeyBtX3N2Z0ZvbnRGYWNlRWxlbWVudCA9IGVsZW1lbnQ7IH0KICAgICBib29sIGlzU1ZH
Rm9udEZhY2VTb3VyY2UoKSBjb25zdCB7IHJldHVybiBtX3N2Z0ZvbnRGYWNlRWxlbWVudCB8fCBt
X2hhc0V4dGVybmFsU1ZHRm9udDsgfQogICAgIHZvaWQgc2V0SGFzRXh0ZXJuYWxTVkdGb250KCkg
eyBtX2hhc0V4dGVybmFsU1ZHRm9udCA9IHRydWU7IH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NGb250RmFjZVNyY1ZhbHVlLmgKaW5kZXggYzM4NmFmZWI4ZmY2NTEyMWEwMGVlZjY0Y2I3
NmQ5ZDJmNjcyYTlhMC4uZjNhYWZmOTNhYTZhMzYxYmViYzU5MjVkYWQxNmZjMmNjYmQ2MTNiMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5oCkBAIC0yOCw3ICsyOCw2
IEBACiAKICNpbmNsdWRlICJDU1NWYWx1ZS5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlSGFu
ZGxlLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9u
dFNlbGVjdG9yLmNwcAppbmRleCAyNjlkZGZjZGE3ZWVlOGNmNTljMDNiYWExMWNiMTcxZDVkNDhk
YjgxLi5jY2FkNjljZWQwMDI4ODNkMWQ3NjU5YjgyMDNmYmUzNzA2MWQyNjYzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcApAQCAtNjExLDcgKzYxMSw3IEBAIHNpemVfdCBD
U1NGb250U2VsZWN0b3I6OmZhbGxiYWNrRm9udENvdW50KCkKICAgICByZXR1cm4gMDsKIH0KIAot
UGFzc1JlZlB0cjxGb250PiBDU1NGb250U2VsZWN0b3I6OmZhbGxiYWNrRm9udEF0KGNvbnN0IEZv
bnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9uLCBzaXplX3QgaW5kZXgpCitSZWZQdHI8Rm9u
dD4gQ1NTRm9udFNlbGVjdG9yOjpmYWxsYmFja0ZvbnRBdChjb25zdCBGb250RGVzY3JpcHRpb24m
IGZvbnREZXNjcmlwdGlvbiwgc2l6ZV90IGluZGV4KQogewogICAgIEFTU0VSVF9VTlVTRUQoaW5k
ZXgsICFpbmRleCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2Vs
ZWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuaAppbmRleCA0YmU3
NDA4MTI5OTY0NTRlOWZlYjMwZTk3ZTA0NWUwMjZlNWM3MzJjLi43YzVkMDJjOTRiMmY2MTU0OTJi
NTBlZDkzZGY1MmRkNTE0ODdkMjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Rm9udFNlbGVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5o
CkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgRm9udFJhbmdlcyBmb250
UmFuZ2VzRm9yRmFtaWx5KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGNvbnN0IEF0b21pY1N0cmlu
ZyYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgc2l6ZV90IGZhbGxiYWNrRm9udENvdW50KCkgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPEZvbnQ+IGZhbGxiYWNrRm9udEF0KGNvbnN0
IEZvbnREZXNjcmlwdGlvbiYsIHNpemVfdCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWZQdHI8
Rm9udD4gZmFsbGJhY2tGb250QXQoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgc2l6ZV90KSBvdmVy
cmlkZTsKICAgICBDU1NTZWdtZW50ZWRGb250RmFjZSogZ2V0Rm9udEZhY2UoY29uc3QgRm9udERl
c2NyaXB0aW9uJiwgY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHkpOwogCiAgICAgdmlydHVhbCBi
b29sIHJlc29sdmVzRmFtaWx5Rm9yKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYpIGNvbnN0IG92ZXJy
aWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRWYWx1ZS5oIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRWYWx1ZS5oCmluZGV4IDUyMGE0N2ZlZjU1NzY1MTI4Y2Y3
NmExM2M0NjFiZmM4ZTkxODJhMzIuLmQ4MzVhODhmMzIzMWFkZjcxODI3ZjcyZmRiYTRhYmE5OGM5
MWNmYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250VmFsdWUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFZhbHVlLmgKQEAgLTIyLDcgKzIyLDYgQEAKICNk
ZWZpbmUgQ1NTRm9udFZhbHVlX2gKIAogI2luY2x1ZGUgIkNTU1ZhbHVlLmgiCi0jaW5jbHVkZSA8
d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGdW5jdGlvblZhbHVl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGdW5jdGlvblZhbHVlLmNwcAppbmRleCBhMmI3
OTAyM2ZiNDQ2YzMzZjg0NDQ4ZTg1ZmE1NjM0Y2U3OWFiNWYyLi5hMDRkZWNlM2RlZGJkM2I1YTlj
MTYwZmZjYWExODZhZmMxMDk0MjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
RnVuY3Rpb25WYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Z1bmN0aW9uVmFs
dWUuY3BwCkBAIC00MCw3ICs0MCw3IEBAIENTU0Z1bmN0aW9uVmFsdWU6OkNTU0Z1bmN0aW9uVmFs
dWUoQ1NTUGFyc2VyRnVuY3Rpb24qIGZ1bmN0aW9uKQogICAgICAgICBtX2FyZ3MgPSBDU1NWYWx1
ZUxpc3Q6OmNyZWF0ZUZyb21QYXJzZXJWYWx1ZUxpc3QoKmZ1bmN0aW9uLT5hcmdzKTsKIH0KIAot
Q1NTRnVuY3Rpb25WYWx1ZTo6Q1NTRnVuY3Rpb25WYWx1ZShjb25zdCBTdHJpbmcmIG5hbWUsIFBh
c3NSZWZQdHI8Q1NTVmFsdWVMaXN0PiBhcmdzKQorQ1NTRnVuY3Rpb25WYWx1ZTo6Q1NTRnVuY3Rp
b25WYWx1ZShjb25zdCBTdHJpbmcmIG5hbWUsIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGFyZ3MpCiAg
ICAgOiBDU1NWYWx1ZShGdW5jdGlvbkNsYXNzKQogICAgICwgbV9uYW1lKG5hbWUpCiAgICAgLCBt
X2FyZ3MoYXJncykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGdW5jdGlvblZh
bHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRnVuY3Rpb25WYWx1ZS5oCmluZGV4IDU3NzRj
NTNiOTUxODdhZTk1ZDcyYmFjOWJkMzVhNjQ0ODhmYjk5MDkuLjE4YmEwMjNjOTIwZTc4MzFlYTQz
NDYzY2ZhNzM1MzVjMmY1OTAxMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NG
dW5jdGlvblZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Z1bmN0aW9uVmFsdWUu
aApAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IENTU0Z1bmN0aW9uVmFsdWUoZnVuY3Rpb24pKTsKICAgICB9CiAKLSAgICBzdGF0aWMgUmVmPENT
U0Z1bmN0aW9uVmFsdWU+IGNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8Q1NT
VmFsdWVMaXN0PiBhcmdzKQorICAgIHN0YXRpYyBSZWY8Q1NTRnVuY3Rpb25WYWx1ZT4gY3JlYXRl
KGNvbnN0IFN0cmluZyYgbmFtZSwgUmVmUHRyPENTU1ZhbHVlTGlzdD4gYXJncykKICAgICB7CiAg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU0Z1bmN0aW9uVmFsdWUobmFtZSwgYXJncykp
OwogICAgIH0KQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGV4cGxp
Y2l0IENTU0Z1bmN0aW9uVmFsdWUoQ1NTUGFyc2VyRnVuY3Rpb24qKTsKLSAgICBDU1NGdW5jdGlv
blZhbHVlKGNvbnN0IFN0cmluZyYsIFBhc3NSZWZQdHI8Q1NTVmFsdWVMaXN0Pik7CisgICAgQ1NT
RnVuY3Rpb25WYWx1ZShjb25zdCBTdHJpbmcmLCBSZWZQdHI8Q1NTVmFsdWVMaXN0Pik7CiAKICAg
ICBTdHJpbmcgbV9uYW1lOwogICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IG1fYXJnczsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5oCmluZGV4IDNhZDcwNjVlM2Q1YTM4NTNmYTIyZTBj
N2JiNWUzMWJjYTQ4NTM5ZmQuLjVjMWMxZmE4ZDAzYjdhMjMzOGVlMTg0N2FjNTQ0MDg4MTdjNDgx
MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuaApAQCAtNjQsMTAgKzY0LDEw
IEBAIGNsYXNzIENTU0dyYWRpZW50VmFsdWUgOiBwdWJsaWMgQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1
ZSB7CiBwdWJsaWM6CiAgICAgUmVmUHRyPEltYWdlPiBpbWFnZShSZW5kZXJFbGVtZW50KiwgY29u
c3QgRmxvYXRTaXplJik7CiAKLSAgICB2b2lkIHNldEZpcnN0WChQYXNzUmVmUHRyPENTU1ByaW1p
dGl2ZVZhbHVlPiB2YWwpIHsgbV9maXJzdFggPSB2YWw7IH0KLSAgICB2b2lkIHNldEZpcnN0WShQ
YXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiB2YWwpIHsgbV9maXJzdFkgPSB2YWw7IH0KLSAg
ICB2b2lkIHNldFNlY29uZFgoUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gdmFsKSB7IG1f
c2Vjb25kWCA9IHZhbDsgfQotICAgIHZvaWQgc2V0U2Vjb25kWShQYXNzUmVmUHRyPENTU1ByaW1p
dGl2ZVZhbHVlPiB2YWwpIHsgbV9zZWNvbmRZID0gdmFsOyB9CisgICAgdm9pZCBzZXRGaXJzdFgo
UmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiB2YWwpIHsgbV9maXJzdFggPSB2YWw7IH0KKyAgICB2
b2lkIHNldEZpcnN0WShSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHZhbCkgeyBtX2ZpcnN0WSA9
IHZhbDsgfQorICAgIHZvaWQgc2V0U2Vjb25kWChSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHZh
bCkgeyBtX3NlY29uZFggPSB2YWw7IH0KKyAgICB2b2lkIHNldFNlY29uZFkoUmVmUHRyPENTU1By
aW1pdGl2ZVZhbHVlPiB2YWwpIHsgbV9zZWNvbmRZID0gdmFsOyB9CiAKICAgICB2b2lkIGFkZFN0
b3AoY29uc3QgQ1NTR3JhZGllbnRDb2xvclN0b3AmIHN0b3ApIHsgbV9zdG9wcy5hcHBlbmQoc3Rv
cCk7IH0KIApAQCAtMTM5LDcgKzEzOSw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgQ1NTTGluZWFyR3JhZGllbnRWYWx1ZShyZXBlYXQsIGdyYWRpZW50VHlwZSkpOwog
ICAgIH0KIAotICAgIHZvaWQgc2V0QW5nbGUoUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4g
dmFsKSB7IG1fYW5nbGUgPSB2YWw7IH0KKyAgICB2b2lkIHNldEFuZ2xlKFJlZlB0cjxDU1NQcmlt
aXRpdmVWYWx1ZT4gdmFsKSB7IG1fYW5nbGUgPSB2YWw7IH0KIAogICAgIFN0cmluZyBjdXN0b21D
U1NUZXh0KCkgY29uc3Q7CiAKQEAgLTE4MiwxNCArMTgyLDE0IEBAIHB1YmxpYzoKIAogICAgIFN0
cmluZyBjdXN0b21DU1NUZXh0KCkgY29uc3Q7CiAKLSAgICB2b2lkIHNldEZpcnN0UmFkaXVzKFBh
c3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHZhbCkgeyBtX2ZpcnN0UmFkaXVzID0gdmFsOyB9
Ci0gICAgdm9pZCBzZXRTZWNvbmRSYWRpdXMoUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4g
dmFsKSB7IG1fc2Vjb25kUmFkaXVzID0gdmFsOyB9CisgICAgdm9pZCBzZXRGaXJzdFJhZGl1cyhS
ZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHZhbCkgeyBtX2ZpcnN0UmFkaXVzID0gdmFsOyB9Cisg
ICAgdm9pZCBzZXRTZWNvbmRSYWRpdXMoUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiB2YWwpIHsg
bV9zZWNvbmRSYWRpdXMgPSB2YWw7IH0KIAotICAgIHZvaWQgc2V0U2hhcGUoUGFzc1JlZlB0cjxD
U1NQcmltaXRpdmVWYWx1ZT4gdmFsKSB7IG1fc2hhcGUgPSB2YWw7IH0KLSAgICB2b2lkIHNldFNp
emluZ0JlaGF2aW9yKFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHZhbCkgeyBtX3Npemlu
Z0JlaGF2aW9yID0gdmFsOyB9CisgICAgdm9pZCBzZXRTaGFwZShSZWZQdHI8Q1NTUHJpbWl0aXZl
VmFsdWU+IHZhbCkgeyBtX3NoYXBlID0gdmFsOyB9CisgICAgdm9pZCBzZXRTaXppbmdCZWhhdmlv
cihSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHZhbCkgeyBtX3NpemluZ0JlaGF2aW9yID0gdmFs
OyB9CiAKLSAgICB2b2lkIHNldEVuZEhvcml6b250YWxTaXplKFBhc3NSZWZQdHI8Q1NTUHJpbWl0
aXZlVmFsdWU+IHZhbCkgeyBtX2VuZEhvcml6b250YWxTaXplID0gdmFsOyB9Ci0gICAgdm9pZCBz
ZXRFbmRWZXJ0aWNhbFNpemUoUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gdmFsKSB7IG1f
ZW5kVmVydGljYWxTaXplID0gdmFsOyB9CisgICAgdm9pZCBzZXRFbmRIb3Jpem9udGFsU2l6ZShS
ZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHZhbCkgeyBtX2VuZEhvcml6b250YWxTaXplID0gdmFs
OyB9CisgICAgdm9pZCBzZXRFbmRWZXJ0aWNhbFNpemUoUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVl
PiB2YWwpIHsgbV9lbmRWZXJ0aWNhbFNpemUgPSB2YWw7IH0KIAogICAgIC8vIENyZWF0ZSB0aGUg
Z3JhZGllbnQgZm9yIGEgZ2l2ZW4gc2l6ZS4KICAgICBSZWY8R3JhZGllbnQ+IGNyZWF0ZUdyYWRp
ZW50KFJlbmRlckVsZW1lbnQmLCBjb25zdCBGbG9hdFNpemUmKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NHcmlkTGluZU5hbWVzVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NHcmlkTGluZU5hbWVzVmFsdWUuaAppbmRleCAyZmRkYmY4OTZjNzg1Y2MxMTM0N2IzZDdj
MzA5ZDA4ZjU5NDZlNWUzLi5mOGM2Yzk1MWIyNjc1NGFhNmIzMTA0ZDExMmRlM2FhY2QwODk4ZmFi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JpZExpbmVOYW1lc1ZhbHVlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyaWRMaW5lTmFtZXNWYWx1ZS5oCkBAIC0zMyw3
ICszMyw2IEBACiAKICNpZiBFTkFCTEUoQ1NTX0dSSURfTEFZT1VUKQogI2luY2x1ZGUgIkNTU1Zh
bHVlTGlzdC5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlR2VuZXJhdG9y
VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuY3Bw
CmluZGV4IGZlNDAwYzE2YjQ5Njc3NzNmYmZiN2U2YmIzM2Y3YWFmMmI5OWIwZjguLjVlODQ0NWZl
YTk0MzZiNjIxNGQwOWM0M2E5Mzc3MWE5MjZkNTNjNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgR2VuZXJhdGVk
SW1hZ2UqIENTU0ltYWdlR2VuZXJhdG9yVmFsdWU6OmNhY2hlZEltYWdlRm9yU2l6ZShGbG9hdFNp
emUgc2l6ZSkKICAgICByZXR1cm4gY2FjaGVkR2VuZXJhdGVkSW1hZ2UtPmltYWdlKCk7CiB9CiAK
LXZvaWQgQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6c2F2ZUNhY2hlZEltYWdlRm9yU2l6ZShGbG9h
dFNpemUgc2l6ZSwgUGFzc1JlZlB0cjxHZW5lcmF0ZWRJbWFnZT4gaW1hZ2UpCit2b2lkIENTU0lt
YWdlR2VuZXJhdG9yVmFsdWU6OnNhdmVDYWNoZWRJbWFnZUZvclNpemUoRmxvYXRTaXplIHNpemUs
IFJlZlB0cjxHZW5lcmF0ZWRJbWFnZT4gaW1hZ2UpCiB7CiAgICAgQVNTRVJUKCFtX2ltYWdlcy5j
b250YWlucyhzaXplKSk7CiAgICAgbV9pbWFnZXMuYWRkKHNpemUsIHN0ZDo6bWFrZV91bmlxdWU8
Q2FjaGVkR2VuZXJhdGVkSW1hZ2U+KCp0aGlzLCBzaXplLCBpbWFnZSkpOwpAQCAtOTEsNyArOTEs
NyBAQCB2b2lkIENTU0ltYWdlR2VuZXJhdG9yVmFsdWU6OmV2aWN0Q2FjaGVkR2VuZXJhdGVkSW1h
Z2UoRmxvYXRTaXplIHNpemUpCiAgICAgbV9pbWFnZXMucmVtb3ZlKHNpemUpOwogfQogCi1DU1NJ
bWFnZUdlbmVyYXRvclZhbHVlOjpDYWNoZWRHZW5lcmF0ZWRJbWFnZTo6Q2FjaGVkR2VuZXJhdGVk
SW1hZ2UoQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZSYgb3duZXIsIEZsb2F0U2l6ZSBzaXplLCBQYXNz
UmVmUHRyPEdlbmVyYXRlZEltYWdlPiBpbWFnZSkKK0NTU0ltYWdlR2VuZXJhdG9yVmFsdWU6OkNh
Y2hlZEdlbmVyYXRlZEltYWdlOjpDYWNoZWRHZW5lcmF0ZWRJbWFnZShDU1NJbWFnZUdlbmVyYXRv
clZhbHVlJiBvd25lciwgRmxvYXRTaXplIHNpemUsIFJlZlB0cjxHZW5lcmF0ZWRJbWFnZT4gaW1h
Z2UpCiAgICAgOiBtX293bmVyKG93bmVyKQogICAgICwgbV9zaXplKHNpemUpCiAgICAgLCBtX2lt
YWdlKGltYWdlKQpAQCAtMTA2LDcgKzEwNiw3IEBAIHZvaWQgQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1
ZTo6Q2FjaGVkR2VuZXJhdGVkSW1hZ2U6OmV2aWN0aW9uVGltZXJGaXJlZCgpCiAgICAgbV9vd25l
ci5ldmljdENhY2hlZEdlbmVyYXRlZEltYWdlKG1fc2l6ZSk7CiB9CiAKLVBhc3NSZWZQdHI8SW1h
Z2U+IENTU0ltYWdlR2VuZXJhdG9yVmFsdWU6OmltYWdlKFJlbmRlckVsZW1lbnQqIHJlbmRlcmVy
LCBjb25zdCBGbG9hdFNpemUmIHNpemUpCitSZWZQdHI8SW1hZ2U+IENTU0ltYWdlR2VuZXJhdG9y
VmFsdWU6OmltYWdlKFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBjb25zdCBGbG9hdFNpemUmIHNp
emUpCiB7CiAgICAgc3dpdGNoIChjbGFzc1R5cGUoKSkgewogICAgIGNhc2UgQ2FudmFzQ2xhc3M6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5o
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuaAppbmRleCBjOWI1
NTZjZGEwN2M1NzFlYWQxN2Q5MTA1YzE4NzQ4Nzg4OTY4ZGExLi5jYWU5MWI0ZDcxMWZjY2ZhMTdh
NTAyZTQ3ZTZhNTY1YzZmZDg5ZTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
SW1hZ2VHZW5lcmF0b3JWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdl
bmVyYXRvclZhbHVlLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAgIHZvaWQgYWRkQ2xp
ZW50KFJlbmRlckVsZW1lbnQqKTsKICAgICB2b2lkIHJlbW92ZUNsaWVudChSZW5kZXJFbGVtZW50
Kik7CiAKLSAgICBQYXNzUmVmUHRyPEltYWdlPiBpbWFnZShSZW5kZXJFbGVtZW50KiwgY29uc3Qg
RmxvYXRTaXplJik7CisgICAgUmVmUHRyPEltYWdlPiBpbWFnZShSZW5kZXJFbGVtZW50KiwgY29u
c3QgRmxvYXRTaXplJik7CiAKICAgICBib29sIGlzRml4ZWRTaXplKCkgY29uc3Q7CiAgICAgRmxv
YXRTaXplIGZpeGVkU2l6ZShjb25zdCBSZW5kZXJFbGVtZW50Kik7CkBAIC02Myw3ICs2Myw3IEBA
IHByb3RlY3RlZDoKICAgICBDU1NJbWFnZUdlbmVyYXRvclZhbHVlKENsYXNzVHlwZSk7CiAKICAg
ICBHZW5lcmF0ZWRJbWFnZSogY2FjaGVkSW1hZ2VGb3JTaXplKEZsb2F0U2l6ZSk7Ci0gICAgdm9p
ZCBzYXZlQ2FjaGVkSW1hZ2VGb3JTaXplKEZsb2F0U2l6ZSwgUGFzc1JlZlB0cjxHZW5lcmF0ZWRJ
bWFnZT4pOworICAgIHZvaWQgc2F2ZUNhY2hlZEltYWdlRm9yU2l6ZShGbG9hdFNpemUsIFJlZlB0
cjxHZW5lcmF0ZWRJbWFnZT4pOwogICAgIGNvbnN0IEhhc2hDb3VudGVkU2V0PFJlbmRlckVsZW1l
bnQqPiYgY2xpZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50czsgfQogCiAgICAgLy8gSGVs
cGVyIGZ1bmN0aW9ucyBmb3IgQ3Jvc3NmYWRlIGFuZCBGaWx0ZXIuCkBAIC03Myw3ICs3Myw3IEBA
IHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgY2xhc3MgQ2FjaGVkR2VuZXJhdGVkSW1hZ2Ugewog
ICAgIHB1YmxpYzoKLSAgICAgICAgQ2FjaGVkR2VuZXJhdGVkSW1hZ2UoQ1NTSW1hZ2VHZW5lcmF0
b3JWYWx1ZSYsIEZsb2F0U2l6ZSwgUGFzc1JlZlB0cjxHZW5lcmF0ZWRJbWFnZT4pOworICAgICAg
ICBDYWNoZWRHZW5lcmF0ZWRJbWFnZShDU1NJbWFnZUdlbmVyYXRvclZhbHVlJiwgRmxvYXRTaXpl
LCBSZWZQdHI8R2VuZXJhdGVkSW1hZ2U+KTsKICAgICAgICAgR2VuZXJhdGVkSW1hZ2UqIGltYWdl
KCkgeyByZXR1cm4gbV9pbWFnZS5nZXQoKTsgfQogICAgICAgICB2b2lkIHB1bnRFdmljdGlvblRp
bWVyKCkgeyBtX2V2aWN0aW9uVGltZXIucmVzdGFydCgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NJbmhlcml0ZWRWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0luaGVyaXRlZFZhbHVlLmgKaW5kZXggOGE2Mzc2NWI1M2JhNzcyN2Y4ZDU2NmY1MWRjMDRhMTY0
NzNmM2E3OC4uODU3MDQxYmJlNTJkNjBmNmY1Njc1YThiODJjOGEwN2IzNDEzZmVhNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0luaGVyaXRlZFZhbHVlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0luaGVyaXRlZFZhbHVlLmgKQEAgLTIyLDcgKzIyLDYgQEAKICNkZWZp
bmUgQ1NTSW5oZXJpdGVkVmFsdWVfaAogCiAjaW5jbHVkZSAiQ1NTVmFsdWUuaCIKLSNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbml0aWFsVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NJbml0aWFsVmFsdWUuaAppbmRleCBhNzExYWRmMWZkZmY5MTNiODE4ZmE2OGE0ZTVlNGY5
M2IwMzg1OTI4Li44ZmJhYjlmODU1NDg2NTg1NGI5YzJhOWU4YWEwZWM0NTc1NDFiNTMzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW5pdGlhbFZhbHVlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0luaXRpYWxWYWx1ZS5oCkBAIC0yMiw3ICsyMiw2IEBACiAjZGVmaW5l
IENTU0luaXRpYWxWYWx1ZV9oCiAKICNpbmNsdWRlICJDU1NWYWx1ZS5oIgotI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0tleWZyYW1lc1J1bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0tleWZyYW1lc1J1bGUuY3BwCmluZGV4IDA5NTIzMjYyMDZhZWFmNjdiYjMyOGJlZWYyMjcw
ZGMyMTIxYjc4Y2QuLjY3NTg5MWFiNTczYWVmMTBjZDMxMWFkNTVmMjBhYTI5MDVjZmJkNzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NLZXlmcmFtZXNSdWxlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTS2V5ZnJhbWVzUnVsZS5jcHAKQEAgLTUzLDE0ICs1MywxNCBA
QCBTdHlsZVJ1bGVLZXlmcmFtZXM6On5TdHlsZVJ1bGVLZXlmcmFtZXMoKQogewogfQogCi12b2lk
IFN0eWxlUnVsZUtleWZyYW1lczo6cGFyc2VyQXBwZW5kS2V5ZnJhbWUoUGFzc1JlZlB0cjxTdHls
ZUtleWZyYW1lPiBrZXlmcmFtZSkKK3ZvaWQgU3R5bGVSdWxlS2V5ZnJhbWVzOjpwYXJzZXJBcHBl
bmRLZXlmcmFtZShSZWZQdHI8U3R5bGVLZXlmcmFtZT4ga2V5ZnJhbWUpCiB7CiAgICAgaWYgKCFr
ZXlmcmFtZSkKICAgICAgICAgcmV0dXJuOwogICAgIG1fa2V5ZnJhbWVzLmFwcGVuZChrZXlmcmFt
ZSk7CiB9CiAKLXZvaWQgU3R5bGVSdWxlS2V5ZnJhbWVzOjp3cmFwcGVyQXBwZW5kS2V5ZnJhbWUo
UGFzc1JlZlB0cjxTdHlsZUtleWZyYW1lPiBrZXlmcmFtZSkKK3ZvaWQgU3R5bGVSdWxlS2V5ZnJh
bWVzOjp3cmFwcGVyQXBwZW5kS2V5ZnJhbWUoUmVmUHRyPFN0eWxlS2V5ZnJhbWU+IGtleWZyYW1l
KQogewogICAgIG1fa2V5ZnJhbWVzLmFwcGVuZChrZXlmcmFtZSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTS2V5ZnJhbWVzUnVsZS5oIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0tleWZyYW1lc1J1bGUuaAppbmRleCA4NjViYmVkMGMzMDE3Mzg3NWY5MzFlMDMyYzcwZmMy
NzA3NzUxZDYwLi5jNzQ4ZWIzZjRmYjVhNmVkYjY1MTgzMjA2NTViMTFjM2E1ZGJiNzRiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTS2V5ZnJhbWVzUnVsZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NLZXlmcmFtZXNSdWxlLmgKQEAgLTQ2LDggKzQ2LDggQEAgcHVibGlj
OgogICAgIAogICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3R5bGVLZXlmcmFtZT4+JiBrZXlmcmFt
ZXMoKSBjb25zdCB7IHJldHVybiBtX2tleWZyYW1lczsgfQogICAgIAotICAgIHZvaWQgcGFyc2Vy
QXBwZW5kS2V5ZnJhbWUoUGFzc1JlZlB0cjxTdHlsZUtleWZyYW1lPik7Ci0gICAgdm9pZCB3cmFw
cGVyQXBwZW5kS2V5ZnJhbWUoUGFzc1JlZlB0cjxTdHlsZUtleWZyYW1lPik7CisgICAgdm9pZCBw
YXJzZXJBcHBlbmRLZXlmcmFtZShSZWZQdHI8U3R5bGVLZXlmcmFtZT4pOworICAgIHZvaWQgd3Jh
cHBlckFwcGVuZEtleWZyYW1lKFJlZlB0cjxTdHlsZUtleWZyYW1lPik7CiAgICAgdm9pZCB3cmFw
cGVyUmVtb3ZlS2V5ZnJhbWUodW5zaWduZWQpOwogCiAgICAgU3RyaW5nIG5hbWUoKSBjb25zdCB7
IHJldHVybiBtX25hbWU7IH0gICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
TGluZUJveENvbnRhaW5WYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0xpbmVCb3hDb250
YWluVmFsdWUuaAppbmRleCAxNjAxNjIzMjU0YzVkYjM3ZTdkYjdhODA2MGUyZjNlOTQyOTc3ODc3
Li5lYzUzZGEyNDkyZTIxMmQxYjQxMjU3YWNiNTg0MTI0MDY1ZDFkYjBmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTTGluZUJveENvbnRhaW5WYWx1ZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NMaW5lQm94Q29udGFpblZhbHVlLmgKQEAgLTI3LDcgKzI3LDYgQEAKICNk
ZWZpbmUgQ1NTTGluZUJveENvbnRhaW5WYWx1ZV9oCiAKICNpbmNsdWRlICJDU1NWYWx1ZS5oIgot
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTmFt
ZWRJbWFnZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NOYW1lZEltYWdlVmFsdWUu
Y3BwCmluZGV4IDFhZGQ1NDZmNTNjNzNmNWQ1ZjhkMzE0N2UxYTQ3NjdhYmJjZGM0ZWIuLjA0Njdi
ZjE5NzFhYjQ3NGFkOGZkMTUzMDJjNWQ2YWNkMmU4YTYyYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NOYW1lZEltYWdlVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NOYW1lZEltYWdlVmFsdWUuY3BwCkBAIC0zNiwxNCArMzYsMTQgQEAgU3RyaW5nIENTU05h
bWVkSW1hZ2VWYWx1ZTo6Y3VzdG9tQ1NTVGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIG1ha2VTdHJp
bmcoIi13ZWJraXQtbmFtZWQtaW1hZ2UoIiwgbV9uYW1lLCAnKScpOwogfQogCi1QYXNzUmVmUHRy
PEltYWdlPiBDU1NOYW1lZEltYWdlVmFsdWU6OmltYWdlKFJlbmRlckVsZW1lbnQqLCBjb25zdCBG
bG9hdFNpemUmIHNpemUpCitSZWZQdHI8SW1hZ2U+IENTU05hbWVkSW1hZ2VWYWx1ZTo6aW1hZ2Uo
UmVuZGVyRWxlbWVudCosIGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKIHsKICAgICBpZiAoc2l6ZS5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgbV9nZW5lcmF0ZWRJbWFn
ZSA9IE5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZTo6Y3JlYXRlKG1fbmFtZSwgc2l6ZSk7CiAKLSAg
ICByZXR1cm4gbV9nZW5lcmF0ZWRJbWFnZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIG1fZ2VuZXJh
dGVkSW1hZ2U7CiB9CiAKIGJvb2wgQ1NTTmFtZWRJbWFnZVZhbHVlOjplcXVhbHMoY29uc3QgQ1NT
TmFtZWRJbWFnZVZhbHVlJiBvdGhlcikgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NOYW1lZEltYWdlVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NOYW1lZElt
YWdlVmFsdWUuaAppbmRleCBmMWNkYWE2MzM4NWRhOGM0NjZjMmE2ODUzNzM3NWYxZmU3ODU2ZmJi
Li5mNmEzMjcwNTJiODZhMTY3YzBiNjQxMDliMGEyODNhMDUyNmIyMWE4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTTmFtZWRJbWFnZVZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU05hbWVkSW1hZ2VWYWx1ZS5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAg
ICBib29sIGlzRml4ZWRTaXplKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIGlz
UGVuZGluZygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICBQYXNzUmVmUHRyPEltYWdl
PiBpbWFnZShSZW5kZXJFbGVtZW50KiwgY29uc3QgRmxvYXRTaXplJik7CisgICAgUmVmUHRyPElt
YWdlPiBpbWFnZShSZW5kZXJFbGVtZW50KiwgY29uc3QgRmxvYXRTaXplJik7CiAKICAgICBib29s
IGVxdWFscyhjb25zdCBDU1NOYW1lZEltYWdlVmFsdWUmKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UGFyc2VyLmNwcAppbmRleCA0YjFlNDhlZDM0MTlmODkwMzI4NjBiNjhiOGZmMzNmYzI3MzMzZTgx
Li5kNDExZDAzNDQyZGMwMTk3MmFkN2I0NWYwOTY3OGY4MGQ1N2RlYmQ3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUGFyc2VyLmNwcApAQCAtMTQ0Nyw3ICsxNDQ3LDcgQEAgUmVmPEltbXV0YWJsZVN0eWxlUHJv
cGVydGllcz4gQ1NTUGFyc2VyOjpwYXJzZURlY2xhcmF0aW9uKGNvbnN0IFN0cmluZyYgc3RyaW5n
LAogfQogCiAKLWJvb2wgQ1NTUGFyc2VyOjpwYXJzZURlY2xhcmF0aW9uKE11dGFibGVTdHlsZVBy
b3BlcnRpZXMqIGRlY2xhcmF0aW9uLCBjb25zdCBTdHJpbmcmIHN0cmluZywgUGFzc1JlZlB0cjxD
U1NSdWxlU291cmNlRGF0YT4gcHJwUnVsZVNvdXJjZURhdGEsIFN0eWxlU2hlZXRDb250ZW50cyog
Y29udGV4dFN0eWxlU2hlZXQpCitib29sIENTU1BhcnNlcjo6cGFyc2VEZWNsYXJhdGlvbihNdXRh
YmxlU3R5bGVQcm9wZXJ0aWVzKiBkZWNsYXJhdGlvbiwgY29uc3QgU3RyaW5nJiBzdHJpbmcsIFJl
ZlB0cjxDU1NSdWxlU291cmNlRGF0YT4gcHJwUnVsZVNvdXJjZURhdGEsIFN0eWxlU2hlZXRDb250
ZW50cyogY29udGV4dFN0eWxlU2hlZXQpCiB7CiAgICAgLy8gTGVuZ3RoIG9mIHRoZSAiQC13ZWJr
aXQtZGVjbHN7IiBwcmVmaXguCiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHByZWZpeExlbmd0
aCA9IDE1OwpAQCAtMTU4Niw3ICsxNTg2LDcgQEAgUmVmPEltbXV0YWJsZVN0eWxlUHJvcGVydGll
cz4gQ1NTUGFyc2VyOjpjcmVhdGVTdHlsZVByb3BlcnRpZXMoKQogICAgIHJldHVybiBJbW11dGFi
bGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZShyZXN1bHRzLmRhdGEoKSwgcmVzdWx0cy5zaXplKCks
IG1fY29udGV4dC5tb2RlKTsKIH0KIAotdm9pZCBDU1NQYXJzZXI6OmFkZFByb3BlcnR5V2l0aFBy
ZWZpeGluZ1ZhcmlhbnQoQ1NTUHJvcGVydHlJRCBwcm9wSWQsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+
IHZhbHVlLCBib29sIGltcG9ydGFudCwgYm9vbCBpbXBsaWNpdCkKK3ZvaWQgQ1NTUGFyc2VyOjph
ZGRQcm9wZXJ0eVdpdGhQcmVmaXhpbmdWYXJpYW50KENTU1Byb3BlcnR5SUQgcHJvcElkLCBSZWZQ
dHI8Q1NTVmFsdWU+IHZhbHVlLCBib29sIGltcG9ydGFudCwgYm9vbCBpbXBsaWNpdCkKIHsKICAg
ICBSZWZQdHI8Q1NTVmFsdWU+IHZhbCA9IHZhbHVlLmdldCgpOwogICAgIGFkZFByb3BlcnR5KHBy
b3BJZCwgdmFsdWUsIGltcG9ydGFudCwgaW1wbGljaXQpOwpAQCAtMTYwNCw3ICsxNjA0LDcgQEAg
dm9pZCBDU1NQYXJzZXI6OmFkZFByb3BlcnR5V2l0aFByZWZpeGluZ1ZhcmlhbnQoQ1NTUHJvcGVy
dHlJRCBwcm9wSWQsIFBhc3NSZWZQdHIKICAgICAgICAgYWRkUHJvcGVydHkocHJlZml4aW5nVmFy
aWFudCwgdmFsLnJlbGVhc2UoKSwgaW1wb3J0YW50LCBpbXBsaWNpdCk7CiB9CiAKLXZvaWQgQ1NT
UGFyc2VyOjphZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIHByb3BJZCwgUGFzc1JlZlB0cjxDU1NW
YWx1ZT4gdmFsdWUsIGJvb2wgaW1wb3J0YW50LCBib29sIGltcGxpY2l0KQordm9pZCBDU1NQYXJz
ZXI6OmFkZFByb3BlcnR5KENTU1Byb3BlcnR5SUQgcHJvcElkLCBSZWZQdHI8Q1NTVmFsdWU+IHZh
bHVlLCBib29sIGltcG9ydGFudCwgYm9vbCBpbXBsaWNpdCkKIHsKICAgICAvLyBUaGlzIHByb3Bl
cnR5IGRvZXNuJ3QgYmVsb25nIHRvIGEgc2hvcnRoYW5kIG9yIGlzIGEgQ1NTIHZhcmlhYmxlICh3
aGljaCB3aWxsIGJlIHJlc29sdmVkIGxhdGVyKS4KICAgICBpZiAoIW1fY3VycmVudFNob3J0aGFu
ZCkgewpAQCAtMTg0Myw3ICsxODQzLDcgQEAgaW5saW5lIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1
ZT4gQ1NTUGFyc2VyOjpwYXJzZVZhbGlkUHJpbWl0aXZlKENTU1ZhbHVlSUQgaWRlbnQKICAgICBy
ZXR1cm4gbnVsbHB0cjsKIH0KIAotdm9pZCBDU1NQYXJzZXI6OmFkZEV4cGFuZGVkUHJvcGVydHlG
b3JWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BJZCwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gcHJwVmFs
dWUsIGJvb2wgaW1wb3J0YW50KQordm9pZCBDU1NQYXJzZXI6OmFkZEV4cGFuZGVkUHJvcGVydHlG
b3JWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BJZCwgUmVmUHRyPENTU1ZhbHVlPiBwcnBWYWx1ZSwg
Ym9vbCBpbXBvcnRhbnQpCiB7CiAgICAgY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgc2hv
cnRoYW5kID0gc2hvcnRoYW5kRm9yUHJvcGVydHkocHJvcElkKTsKICAgICB1bnNpZ25lZCBzaG9y
dGhhbmRMZW5ndGggPSBzaG9ydGhhbmQubGVuZ3RoKCk7CkBAIC01MzU0LDcgKzUzNTQsNyBAQCBi
b29sIENTU1BhcnNlcjo6cGFyc2VHcmlkSXRlbVBvc2l0aW9uU2hvcnRoYW5kKENTU1Byb3BlcnR5
SUQgc2hvcnRoYW5kSWQsIGJvb2wgaQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIENTU1Bh
cnNlcjo6cGFyc2VHcmlkVGVtcGxhdGVSb3dzQW5kQXJlYXMoUGFzc1JlZlB0cjxDU1NWYWx1ZT4g
dGVtcGxhdGVDb2x1bW5zLCBib29sIGltcG9ydGFudCkKK2Jvb2wgQ1NTUGFyc2VyOjpwYXJzZUdy
aWRUZW1wbGF0ZVJvd3NBbmRBcmVhcyhSZWZQdHI8Q1NTVmFsdWU+IHRlbXBsYXRlQ29sdW1ucywg
Ym9vbCBpbXBvcnRhbnQpCiB7CiAgICAgLy8gQXQgbGVhc3QgdGVtcGxhdGUtYXJlYXMgc3RyaW5n
cyBtdXN0IGJlIGRlZmluZWQuCiAgICAgaWYgKCFtX3ZhbHVlTGlzdC0+Y3VycmVudCgpKQpAQCAt
NjE3MSw3ICs2MTcxLDcgQEAgc3RhdGljIHZvaWQgY29tcGxldGVCb3JkZXJSYWRpaShSZWZQdHI8
Q1NTUHJpbWl0aXZlVmFsdWU+IHJhZGlpWzRdKQogCiAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUg
cmVmYWN0b3JlZCB3aXRoIENTU1BhcnNlcjo6cGFyc2VCb3JkZXJSYWRpdXMuCiAvLyBDU1NQYXJz
ZXI6OnBhcnNlQm9yZGVyUmFkaXVzIGNvbnRhaW5zIHN1cHBvcnQgZm9yIHNvbWUgbGVnYWN5IHJh
ZGl1cyBjb25zdHJ1Y3Rpb24uCi1SZWZQdHI8Q1NTQmFzaWNTaGFwZT4gQ1NTUGFyc2VyOjpwYXJz
ZUluc2V0Um91bmRlZENvcm5lcnMoUGFzc1JlZlB0cjxDU1NCYXNpY1NoYXBlSW5zZXQ+IHNoYXBl
LCBDU1NQYXJzZXJWYWx1ZUxpc3QmIGFyZ3MpCitSZWZQdHI8Q1NTQmFzaWNTaGFwZT4gQ1NTUGFy
c2VyOjpwYXJzZUluc2V0Um91bmRlZENvcm5lcnMoUmVmUHRyPENTU0Jhc2ljU2hhcGVJbnNldD4g
c2hhcGUsIENTU1BhcnNlclZhbHVlTGlzdCYgYXJncykKIHsKICAgICBDU1NQYXJzZXJWYWx1ZSog
YXJndW1lbnQgPSBhcmdzLm5leHQoKTsKIApAQCAtNzYyOSw3ICs3NjI5LDcgQEAgc3RydWN0IFNo
YWRvd1BhcnNlQ29udGV4dCB7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICB2b2lkIGNvbW1pdENv
bG9yKFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHZhbCkKKyAgICB2b2lkIGNvbW1pdENv
bG9yKFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gdmFsKQogICAgIHsKICAgICAgICAgY29sb3Ig
PSB2YWw7CiAgICAgICAgIGFsbG93Q29sb3IgPSBmYWxzZTsKQEAgLTc4NTcsNyArNzg1Nyw3IEBA
IHN0cnVjdCBCb3JkZXJJbWFnZVBhcnNlQ29udGV4dCB7CiAgICAgYm9vbCByZXF1aXJlV2lkdGgo
KSBjb25zdCB7IHJldHVybiBtX3JlcXVpcmVXaWR0aDsgfQogICAgIGJvb2wgcmVxdWlyZU91dHNl
dCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWlyZU91dHNldDsgfQogCi0gICAgdm9pZCBjb21taXRJ
bWFnZShQYXNzUmVmUHRyPENTU1ZhbHVlPiBpbWFnZSkKKyAgICB2b2lkIGNvbW1pdEltYWdlKFJl
ZlB0cjxDU1NWYWx1ZT4gaW1hZ2UpCiAgICAgewogICAgICAgICBtX2ltYWdlID0gaW1hZ2U7CiAg
ICAgICAgIG1fY2FuQWR2YW5jZSA9IHRydWU7CkBAIC03ODY2LDcgKzc4NjYsNyBAQCBzdHJ1Y3Qg
Qm9yZGVySW1hZ2VQYXJzZUNvbnRleHQgewogICAgICAgICBtX2FsbG93SW1hZ2VTbGljZSA9ICFt
X2ltYWdlU2xpY2U7CiAgICAgICAgIG1fYWxsb3dSZXBlYXQgPSAhbV9yZXBlYXQ7CiAgICAgfQot
ICAgIHZvaWQgY29tbWl0SW1hZ2VTbGljZShQYXNzUmVmUHRyPENTU0JvcmRlckltYWdlU2xpY2VW
YWx1ZT4gc2xpY2UpCisgICAgdm9pZCBjb21taXRJbWFnZVNsaWNlKFJlZlB0cjxDU1NCb3JkZXJJ
bWFnZVNsaWNlVmFsdWU+IHNsaWNlKQogICAgIHsKICAgICAgICAgbV9pbWFnZVNsaWNlID0gc2xp
Y2U7CiAgICAgICAgIG1fY2FuQWR2YW5jZSA9IHRydWU7CkBAIC03ODg3LDcgKzc4ODcsNyBAQCBz
dHJ1Y3QgQm9yZGVySW1hZ2VQYXJzZUNvbnRleHQgewogICAgICAgICAgICAgbV9yZXF1aXJlV2lk
dGggPSBmYWxzZTsKICAgICAgICAgfQogICAgIH0KLSAgICB2b2lkIGNvbW1pdEJvcmRlcldpZHRo
KFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHNsaWNlKQorICAgIHZvaWQgY29tbWl0Qm9y
ZGVyV2lkdGgoUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBzbGljZSkKICAgICB7CiAgICAgICAg
IG1fYm9yZGVyU2xpY2UgPSBzbGljZTsKICAgICAgICAgbV9jYW5BZHZhbmNlID0gdHJ1ZTsKQEAg
LTc4OTYsNyArNzg5Niw3IEBAIHN0cnVjdCBCb3JkZXJJbWFnZVBhcnNlQ29udGV4dCB7CiAgICAg
ICAgIG1fYWxsb3dJbWFnZSA9ICFtX2ltYWdlOwogICAgICAgICBtX2FsbG93UmVwZWF0ID0gIW1f
cmVwZWF0OwogICAgIH0KLSAgICB2b2lkIGNvbW1pdEJvcmRlck91dHNldChQYXNzUmVmUHRyPENT
U1ByaW1pdGl2ZVZhbHVlPiBvdXRzZXQpCisgICAgdm9pZCBjb21taXRCb3JkZXJPdXRzZXQoUmVm
UHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBvdXRzZXQpCiAgICAgewogICAgICAgICBtX291dHNldCA9
IG91dHNldDsKICAgICAgICAgbV9jYW5BZHZhbmNlID0gdHJ1ZTsKQEAgLTc5MDUsNyArNzkwNSw3
IEBAIHN0cnVjdCBCb3JkZXJJbWFnZVBhcnNlQ29udGV4dCB7CiAgICAgICAgIG1fYWxsb3dJbWFn
ZSA9ICFtX2ltYWdlOwogICAgICAgICBtX2FsbG93UmVwZWF0ID0gIW1fcmVwZWF0OwogICAgIH0K
LSAgICB2b2lkIGNvbW1pdFJlcGVhdChQYXNzUmVmUHRyPENTU1ZhbHVlPiByZXBlYXQpCisgICAg
dm9pZCBjb21taXRSZXBlYXQoUmVmUHRyPENTU1ZhbHVlPiByZXBlYXQpCiAgICAgewogICAgICAg
ICBtX3JlcGVhdCA9IHJlcGVhdDsKICAgICAgICAgbV9jYW5BZHZhbmNlID0gdHJ1ZTsKQEAgLTc5
MTUsNyArNzkxNSw3IEBAIHN0cnVjdCBCb3JkZXJJbWFnZVBhcnNlQ29udGV4dCB7CiAgICAgICAg
IG1fYWxsb3dJbWFnZSA9ICFtX2ltYWdlOwogICAgIH0KIAotICAgIFBhc3NSZWZQdHI8Q1NTVmFs
dWU+IGNvbW1pdFdlYktpdEJvcmRlckltYWdlKCkKKyAgICBSZWY8Q1NTVmFsdWU+IGNvbW1pdFdl
YktpdEJvcmRlckltYWdlKCkKICAgICB7CiAgICAgICAgIHJldHVybiBjcmVhdGVCb3JkZXJJbWFn
ZVZhbHVlKG1faW1hZ2UsIG1faW1hZ2VTbGljZSwgbV9ib3JkZXJTbGljZSwgbV9vdXRzZXQsIG1f
cmVwZWF0KTsKICAgICB9CkBAIC03OTI5LDcgKzc5MjksNyBAQCBzdHJ1Y3QgQm9yZGVySW1hZ2VQ
YXJzZUNvbnRleHQgewogICAgICAgICBjb21taXRCb3JkZXJJbWFnZVByb3BlcnR5KENTU1Byb3Bl
cnR5Qm9yZGVySW1hZ2VSZXBlYXQsIHBhcnNlciwgbV9yZXBlYXQsIGltcG9ydGFudCk7CiAgICAg
fQogCi0gICAgdm9pZCBjb21taXRCb3JkZXJJbWFnZVByb3BlcnR5KENTU1Byb3BlcnR5SUQgcHJv
cElkLCBDU1NQYXJzZXImIHBhcnNlciwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gdmFsdWUsIGJvb2wg
aW1wb3J0YW50KQorICAgIHZvaWQgY29tbWl0Qm9yZGVySW1hZ2VQcm9wZXJ0eShDU1NQcm9wZXJ0
eUlEIHByb3BJZCwgQ1NTUGFyc2VyJiBwYXJzZXIsIFJlZlB0cjxDU1NWYWx1ZT4gdmFsdWUsIGJv
b2wgaW1wb3J0YW50KQogICAgIHsKICAgICAgICAgaWYgKHZhbHVlKQogICAgICAgICAgICAgcGFy
c2VyLmFkZFByb3BlcnR5KHByb3BJZCwgdmFsdWUsIGltcG9ydGFudCk7CkBAIC04MTAxLDcgKzgx
MDEsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNvbW1pdEZpbGwoKSB7IG1fZmlsbCA9IHRydWU7
IG1fYWxsb3dGaWxsID0gZmFsc2U7IG1fYWxsb3dOdW1iZXIgPSAhbV90b3A7IH0KIAotICAgIFBh
c3NSZWZQdHI8Q1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlPiBjb21taXRCb3JkZXJJbWFnZVNsaWNl
KCkKKyAgICBSZWZQdHI8Q1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlPiBjb21taXRCb3JkZXJJbWFn
ZVNsaWNlKCkKICAgICB7CiAgICAgICAgIC8vIFdlIG5lZWQgdG8gY2xvbmUgYW5kIHJlcGVhdCB2
YWx1ZXMgZm9yIGFueSBvbWlzc2lvbnMuCiAgICAgICAgIEFTU0VSVChtX3RvcCk7CkBAIC04MjE3
LDkgKzgyMTcsOSBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgdm9pZCBzZXRBbGxvd0ZpbmFsQ29t
bWl0KCkgeyBtX2FsbG93RmluYWxDb21taXQgPSB0cnVlOyB9Ci0gICAgdm9pZCBzZXRUb3AoUGFz
c1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gdmFsKSB7IG1fdG9wID0gdmFsOyB9CisgICAgdm9p
ZCBzZXRUb3AoUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiB2YWwpIHsgbV90b3AgPSB2YWw7IH0K
IAotICAgIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbW1pdEJvcmRlckltYWdlUXVh
ZCgpCisgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjb21taXRCb3JkZXJJbWFnZVF1YWQo
KQogICAgIHsKICAgICAgICAgLy8gV2UgbmVlZCB0byBjbG9uZSBhbmQgcmVwZWF0IHZhbHVlcyBm
b3IgYW55IG9taXNzaW9ucy4KICAgICAgICAgQVNTRVJUKG1fdG9wKTsKQEAgLTg0MzEsNyArODQz
MSw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUNvdW50ZXIoQ1NTUHJvcGVydHlJRCBwcm9wSWQs
IGludCBkZWZhdWx0VmFsdWUsIGJvb2wgaW1wb3J0CiB9CiAKIC8vIFRoaXMgc2hvdWxkIGdvIGF3
YXkgb25jZSB3ZSBkcm9wIHN1cHBvcnQgZm9yIC13ZWJraXQtZ3JhZGllbnQKLXN0YXRpYyBQYXNz
UmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBwYXJzZURlcHJlY2F0ZWRHcmFkaWVudFBvaW50KENT
U1BhcnNlclZhbHVlJiB2YWx1ZSwgYm9vbCBob3Jpem9udGFsKQorc3RhdGljIFJlZlB0cjxDU1NQ
cmltaXRpdmVWYWx1ZT4gcGFyc2VEZXByZWNhdGVkR3JhZGllbnRQb2ludChDU1NQYXJzZXJWYWx1
ZSYgdmFsdWUsIGJvb2wgaG9yaXpvbnRhbCkKIHsKICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFs
dWU+IHJlc3VsdDsKICAgICBpZiAodmFsdWUudW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X0lERU5UKSB7CkBAIC04NjQ5LDcgKzg2NDksNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VEZXBy
ZWNhdGVkR3JhZGllbnQoQ1NTUGFyc2VyVmFsdWVMaXN0JiB2YWx1ZUxpc3QsIFJlZlB0cjxDUwog
ICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1
ZT4gdmFsdWVGcm9tU2lkZUtleXdvcmQoQ1NTUGFyc2VyVmFsdWUmIHZhbHVlLCBib29sJiBpc0hv
cml6b250YWwpCitzdGF0aWMgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiB2YWx1ZUZyb21TaWRl
S2V5d29yZChDU1NQYXJzZXJWYWx1ZSYgdmFsdWUsIGJvb2wmIGlzSG9yaXpvbnRhbCkKIHsKICAg
ICBpZiAodmFsdWUudW5pdCAhPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0lERU5UKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKQEAgLTg2NjksNyArODY2OSw3IEBAIHN0YXRpYyBQYXNzUmVmUHRy
PENTU1ByaW1pdGl2ZVZhbHVlPiB2YWx1ZUZyb21TaWRlS2V5d29yZChDU1NQYXJzZXJWYWx1ZSYg
dmFsdWUsCiAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZSh2
YWx1ZS5pZCk7CiB9CiAKLXN0YXRpYyBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBwYXJz
ZUdyYWRpZW50Q29sb3JPcktleXdvcmQoQ1NTUGFyc2VyJiBwYXJzZXIsIENTU1BhcnNlclZhbHVl
JiB2YWx1ZSkKK3N0YXRpYyBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHBhcnNlR3JhZGllbnRD
b2xvck9yS2V5d29yZChDU1NQYXJzZXImIHBhcnNlciwgQ1NTUGFyc2VyVmFsdWUmIHZhbHVlKQog
ewogICAgIENTU1ZhbHVlSUQgaWQgPSB2YWx1ZS5pZDsKICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVX
ZWJraXRUZXh0IHx8IENTU1BhcnNlcjo6aXNWYWxpZFN5c3RlbUNvbG9yVmFsdWUoaWQpIHx8IGlk
ID09IENTU1ZhbHVlTWVudSB8fCBpZCA9PSBDU1NWYWx1ZUN1cnJlbnRjb2xvcikKQEAgLTEwMDc2
LDcgKzEwMDc2LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlUGVyc3BlY3RpdmVPcmlnaW4oQ1NT
UHJvcGVydHlJRCBwcm9wSWQsIENTU1Byb3BlcnR5SUQmIHByb3AKICAgICByZXR1cm4gdmFsdWU7
CiB9CiAKLXZvaWQgQ1NTUGFyc2VyOjphZGRUZXh0RGVjb3JhdGlvblByb3BlcnR5KENTU1Byb3Bl
cnR5SUQgcHJvcElkLCBQYXNzUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQp
Cit2b2lkIENTU1BhcnNlcjo6YWRkVGV4dERlY29yYXRpb25Qcm9wZXJ0eShDU1NQcm9wZXJ0eUlE
IHByb3BJZCwgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQpCiB7CiAgICAg
Ly8gVGhlIHRleHQtZGVjb3JhdGlvbi1saW5lIHByb3BlcnR5IHRha2VzIHByaW9yaXR5IG92ZXIg
dGV4dC1kZWNvcmF0aW9uLCB1bmxlc3MgdGhlIGxhdHRlciBoYXMgaW1wb3J0YW50IHByaW9yaXR5
IHNldC4KICAgICBpZiAocHJvcElkID09IENTU1Byb3BlcnR5VGV4dERlY29yYXRpb24gJiYgIWlt
cG9ydGFudCAmJiAhaW5TaG9ydGhhbmQoKSkgewpAQCAtMTIwNDUsNyArMTIwNDUsNyBAQCByZXN0
YXJ0QWZ0ZXJDb21tZW50OgogICAgIHJldHVybiB0b2tlbigpOwogfQogCi1SZWZQdHI8U3R5bGVS
dWxlQmFzZT4gQ1NTUGFyc2VyOjpjcmVhdGVJbXBvcnRSdWxlKGNvbnN0IENTU1BhcnNlclN0cmlu
ZyYgdXJsLCBQYXNzUmVmUHRyPE1lZGlhUXVlcnlTZXQ+IG1lZGlhKQorUmVmUHRyPFN0eWxlUnVs
ZUJhc2U+IENTU1BhcnNlcjo6Y3JlYXRlSW1wb3J0UnVsZShjb25zdCBDU1NQYXJzZXJTdHJpbmcm
IHVybCwgUmVmUHRyPE1lZGlhUXVlcnlTZXQ+IG1lZGlhKQogewogICAgIGlmICghbWVkaWEgfHwg
IW1fYWxsb3dJbXBvcnRSdWxlcykgewogICAgICAgICBwb3BSdWxlRGF0YSgpOwpAQCAtMTIwNTYs
NyArMTIwNTYsNyBAQCBSZWZQdHI8U3R5bGVSdWxlQmFzZT4gQ1NTUGFyc2VyOjpjcmVhdGVJbXBv
cnRSdWxlKGNvbnN0IENTU1BhcnNlclN0cmluZyYgdXJsLCBQYQogICAgIHJldHVybiBydWxlOwog
fQogCi1SZWZQdHI8U3R5bGVSdWxlQmFzZT4gQ1NTUGFyc2VyOjpjcmVhdGVNZWRpYVJ1bGUoUGFz
c1JlZlB0cjxNZWRpYVF1ZXJ5U2V0PiBtZWRpYSwgUnVsZUxpc3QqIHJ1bGVzKQorUmVmUHRyPFN0
eWxlUnVsZUJhc2U+IENTU1BhcnNlcjo6Y3JlYXRlTWVkaWFSdWxlKFJlZlB0cjxNZWRpYVF1ZXJ5
U2V0PiBtZWRpYSwgUnVsZUxpc3QqIHJ1bGVzKQogewogICAgIG1fYWxsb3dJbXBvcnRSdWxlcyA9
IG1fYWxsb3dOYW1lc3BhY2VEZWNsYXJhdGlvbnMgPSBmYWxzZTsKICAgICBSZWZQdHI8U3R5bGVS
dWxlTWVkaWE+IHJ1bGU7CkBAIC0xMjE0MSw3ICsxMjE0MSw3IEBAIHZvaWQgQ1NTUGFyc2VyOjpw
cm9jZXNzQW5kQWRkTmV3UnVsZVRvU291cmNlVHJlZUlmTmVlZGVkKCkKICAgICBhZGROZXdSdWxl
VG9Tb3VyY2VUcmVlKHJ1bGUucmVsZWFzZSgpKTsKIH0KIAotdm9pZCBDU1NQYXJzZXI6OmFkZE5l
d1J1bGVUb1NvdXJjZVRyZWUoUGFzc1JlZlB0cjxDU1NSdWxlU291cmNlRGF0YT4gcnVsZSkKK3Zv
aWQgQ1NTUGFyc2VyOjphZGROZXdSdWxlVG9Tb3VyY2VUcmVlKFJlZlB0cjxDU1NSdWxlU291cmNl
RGF0YT4gcnVsZSkKIHsKICAgICAvLyBQcmVjb25kaXRpb246IChpc0V4dHJhY3RpbmdTb3VyY2VE
YXRhKCkpLgogICAgIGlmICghbV9ydWxlU291cmNlRGF0YVJlc3VsdCkKQEAgLTEyMTUyLDcgKzEy
MTUyLDcgQEAgdm9pZCBDU1NQYXJzZXI6OmFkZE5ld1J1bGVUb1NvdXJjZVRyZWUoUGFzc1JlZlB0
cjxDU1NSdWxlU291cmNlRGF0YT4gcnVsZSkKICAgICAgICAgbV9jdXJyZW50UnVsZURhdGFTdGFj
ay0+bGFzdCgpLT5jaGlsZFJ1bGVzLmFwcGVuZChydWxlKTsKIH0KIAotUGFzc1JlZlB0cjxDU1NS
dWxlU291cmNlRGF0YT4gQ1NTUGFyc2VyOjpwb3BSdWxlRGF0YSgpCitSZWZQdHI8Q1NTUnVsZVNv
dXJjZURhdGE+IENTU1BhcnNlcjo6cG9wUnVsZURhdGEoKQogewogICAgIGlmICghbV9ydWxlU291
cmNlRGF0YVJlc3VsdCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xMjE2MSw3ICsxMjE2
MSw3IEBAIFBhc3NSZWZQdHI8Q1NTUnVsZVNvdXJjZURhdGE+IENTU1BhcnNlcjo6cG9wUnVsZURh
dGEoKQogICAgIG1fY3VycmVudFJ1bGVEYXRhID0gbnVsbHB0cjsKICAgICBSZWZQdHI8Q1NTUnVs
ZVNvdXJjZURhdGE+IGRhdGEgPSBtX2N1cnJlbnRSdWxlRGF0YVN0YWNrLT5sYXN0KCk7CiAgICAg
bV9jdXJyZW50UnVsZURhdGFTdGFjay0+cmVtb3ZlTGFzdCgpOwotICAgIHJldHVybiBkYXRhLnJl
bGVhc2UoKTsKKyAgICByZXR1cm4gZGF0YTsKIH0KIAogdm9pZCBDU1NQYXJzZXI6OnN5bnRheEVy
cm9yKGNvbnN0IExvY2F0aW9uJiBsb2NhdGlvbiwgU3ludGF4RXJyb3JUeXBlIGVycm9yKQpAQCAt
MTI2NDMsNyArMTI2NDMsNyBAQCB2b2lkIENTU1BhcnNlcjo6bWFya1Byb3BlcnR5RW5kKGJvb2wg
aXNJbXBvcnRhbnRGb3VuZCwgYm9vbCBpc1Byb3BlcnR5UGFyc2VkKQogfQogCiAjaWYgRU5BQkxF
KENTU19ERVZJQ0VfQURBUFRBVElPTikKLVBhc3NSZWZQdHI8U3R5bGVSdWxlQmFzZT4gQ1NTUGFy
c2VyOjpjcmVhdGVWaWV3cG9ydFJ1bGUoKQorUmVmUHRyPFN0eWxlUnVsZUJhc2U+IENTU1BhcnNl
cjo6Y3JlYXRlVmlld3BvcnRSdWxlKCkKIHsKICAgICBtX2FsbG93SW1wb3J0UnVsZXMgPSBtX2Fs
bG93TmFtZXNwYWNlRGVjbGFyYXRpb25zID0gZmFsc2U7CiAKQEAgLTEyNjUyLDcgKzEyNjUyLDcg
QEAgUGFzc1JlZlB0cjxTdHlsZVJ1bGVCYXNlPiBDU1NQYXJzZXI6OmNyZWF0ZVZpZXdwb3J0UnVs
ZSgpCiAKICAgICBwcm9jZXNzQW5kQWRkTmV3UnVsZVRvU291cmNlVHJlZUlmTmVlZGVkKCk7CiAK
LSAgICByZXR1cm4gcnVsZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIHJ1bGU7CiB9CiAKIGJvb2wg
Q1NTUGFyc2VyOjpwYXJzZVZpZXdwb3J0UHJvcGVydHkoQ1NTUHJvcGVydHlJRCBwcm9wSWQsIGJv
b2wgaW1wb3J0YW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5o
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCmluZGV4IGM5MThlZjk1N2EzMTEzYTBk
ZjI1NTViYWE1YjBhNzJkNWQ5NTNhMmQuLjg2Mjk3ZDFiOTg4ODFlZTdiNDMyNTNhZWY0Mjk2MTVl
YzI1YTUxODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKQEAgLTEyNiwxNSArMTI2LDE1IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlTGlzdD4gcGFyc2VGb250RmFjZVZhbHVl
KGNvbnN0IEF0b21pY1N0cmluZyYpOwogICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcGFy
c2VWYWxpZFByaW1pdGl2ZShDU1NWYWx1ZUlEIGlkZW50LCBWYWx1ZVdpdGhDYWxjdWxhdGlvbiYp
OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBwYXJzZURlY2xhcmF0aW9uKE11dGFibGVTdHls
ZVByb3BlcnRpZXMqLCBjb25zdCBTdHJpbmcmLCBQYXNzUmVmUHRyPENTU1J1bGVTb3VyY2VEYXRh
PiwgU3R5bGVTaGVldENvbnRlbnRzKiBjb250ZXh0U3R5bGVTaGVldCk7CisgICAgV0VCQ09SRV9F
WFBPUlQgYm9vbCBwYXJzZURlY2xhcmF0aW9uKE11dGFibGVTdHlsZVByb3BlcnRpZXMqLCBjb25z
dCBTdHJpbmcmLCBSZWZQdHI8Q1NTUnVsZVNvdXJjZURhdGE+LCBTdHlsZVNoZWV0Q29udGVudHMq
IGNvbnRleHRTdHlsZVNoZWV0KTsKICAgICBzdGF0aWMgUmVmPEltbXV0YWJsZVN0eWxlUHJvcGVy
dGllcz4gcGFyc2VJbmxpbmVTdHlsZURlY2xhcmF0aW9uKGNvbnN0IFN0cmluZyYsIEVsZW1lbnQq
KTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFRdWVyeT4gcGFyc2VNZWRpYVF1ZXJ5KGNvbnN0
IFN0cmluZyYpOwogCi0gICAgdm9pZCBhZGRQcm9wZXJ0eVdpdGhQcmVmaXhpbmdWYXJpYW50KENT
U1Byb3BlcnR5SUQsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+LCBib29sIGltcG9ydGFudCwgYm9vbCBp
bXBsaWNpdCA9IGZhbHNlKTsKLSAgICB2b2lkIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5SUQsIFBh
c3NSZWZQdHI8Q1NTVmFsdWU+LCBib29sIGltcG9ydGFudCwgYm9vbCBpbXBsaWNpdCA9IGZhbHNl
KTsKKyAgICB2b2lkIGFkZFByb3BlcnR5V2l0aFByZWZpeGluZ1ZhcmlhbnQoQ1NTUHJvcGVydHlJ
RCwgUmVmUHRyPENTU1ZhbHVlPiwgYm9vbCBpbXBvcnRhbnQsIGJvb2wgaW1wbGljaXQgPSBmYWxz
ZSk7CisgICAgdm9pZCBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUlELCBSZWZQdHI8Q1NTVmFsdWU+
LCBib29sIGltcG9ydGFudCwgYm9vbCBpbXBsaWNpdCA9IGZhbHNlKTsKICAgICB2b2lkIHJvbGxi
YWNrTGFzdFByb3BlcnRpZXMoaW50IG51bSk7CiAgICAgYm9vbCBoYXNQcm9wZXJ0aWVzKCkgY29u
c3QgeyByZXR1cm4gIW1fcGFyc2VkUHJvcGVydGllcy5pc0VtcHR5KCk7IH0KLSAgICB2b2lkIGFk
ZEV4cGFuZGVkUHJvcGVydHlGb3JWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BJZCwgUGFzc1JlZlB0
cjxDU1NWYWx1ZT4sIGJvb2wpOworICAgIHZvaWQgYWRkRXhwYW5kZWRQcm9wZXJ0eUZvclZhbHVl
KENTU1Byb3BlcnR5SUQgcHJvcElkLCBSZWZQdHI8Q1NTVmFsdWU+LCBib29sKTsKIAogICAgIGJv
b2wgcGFyc2VWYWx1ZShDU1NQcm9wZXJ0eUlELCBib29sIGltcG9ydGFudCk7CiAgICAgYm9vbCBw
YXJzZVNob3J0aGFuZChDU1NQcm9wZXJ0eUlELCBjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5k
JiwgYm9vbCBpbXBvcnRhbnQpOwpAQCAtMjA2LDcgKzIwNiw3IEBAIHB1YmxpYzoKICNpZiBFTkFC
TEUoQ1NTX0dSSURfTEFZT1VUKQogICAgIFJlZlB0cjxDU1NWYWx1ZT4gcGFyc2VHcmlkUG9zaXRp
b24oKTsKICAgICBib29sIHBhcnNlR3JpZEl0ZW1Qb3NpdGlvblNob3J0aGFuZChDU1NQcm9wZXJ0
eUlELCBib29sIGltcG9ydGFudCk7Ci0gICAgYm9vbCBwYXJzZUdyaWRUZW1wbGF0ZVJvd3NBbmRB
cmVhcyhQYXNzUmVmUHRyPENTU1ZhbHVlPiwgYm9vbCBpbXBvcnRhbnQpOworICAgIGJvb2wgcGFy
c2VHcmlkVGVtcGxhdGVSb3dzQW5kQXJlYXMoUmVmUHRyPENTU1ZhbHVlPiwgYm9vbCBpbXBvcnRh
bnQpOwogICAgIGJvb2wgcGFyc2VHcmlkVGVtcGxhdGVTaG9ydGhhbmQoYm9vbCBpbXBvcnRhbnQp
OwogICAgIGJvb2wgcGFyc2VHcmlkU2hvcnRoYW5kKGJvb2wgaW1wb3J0YW50KTsKICAgICBib29s
IHBhcnNlR3JpZEFyZWFTaG9ydGhhbmQoYm9vbCBpbXBvcnRhbnQpOwpAQCAtMzI1LDcgKzMyNSw3
IEBAIHB1YmxpYzoKICAgICBib29sIHBhcnNlVGV4dEVtcGhhc2lzU3R5bGUoYm9vbCBpbXBvcnRh
bnQpOwogICAgIGJvb2wgcGFyc2VUZXh0RW1waGFzaXNQb3NpdGlvbihib29sIGltcG9ydGFudCk7
CiAKLSAgICB2b2lkIGFkZFRleHREZWNvcmF0aW9uUHJvcGVydHkoQ1NTUHJvcGVydHlJRCwgUGFz
c1JlZlB0cjxDU1NWYWx1ZT4sIGJvb2wgaW1wb3J0YW50KTsKKyAgICB2b2lkIGFkZFRleHREZWNv
cmF0aW9uUHJvcGVydHkoQ1NTUHJvcGVydHlJRCwgUmVmUHRyPENTU1ZhbHVlPiwgYm9vbCBpbXBv
cnRhbnQpOwogICAgIGJvb2wgcGFyc2VUZXh0RGVjb3JhdGlvbihDU1NQcm9wZXJ0eUlEIHByb3BJ
ZCwgYm9vbCBpbXBvcnRhbnQpOwogICAgIGJvb2wgcGFyc2VUZXh0RGVjb3JhdGlvblNraXAoYm9v
bCBpbXBvcnRhbnQpOwogICAgIGJvb2wgcGFyc2VUZXh0VW5kZXJsaW5lUG9zaXRpb24oYm9vbCBp
bXBvcnRhbnQpOwpAQCAtMzQ5LDEyICszNDksMTIgQEAgcHVibGljOgogICAgIHN0ZDo6dW5pcXVl
X3B0cjxWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNlbGVjdG9yPj4+IGNyZWF0ZVNl
bGVjdG9yVmVjdG9yKCk7CiAgICAgdm9pZCByZWN5Y2xlU2VsZWN0b3JWZWN0b3Ioc3RkOjp1bmlx
dWVfcHRyPFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+Pj4pOwogCi0g
ICAgUmVmUHRyPFN0eWxlUnVsZUJhc2U+IGNyZWF0ZUltcG9ydFJ1bGUoY29uc3QgQ1NTUGFyc2Vy
U3RyaW5nJiwgUGFzc1JlZlB0cjxNZWRpYVF1ZXJ5U2V0Pik7CisgICAgUmVmUHRyPFN0eWxlUnVs
ZUJhc2U+IGNyZWF0ZUltcG9ydFJ1bGUoY29uc3QgQ1NTUGFyc2VyU3RyaW5nJiwgUmVmUHRyPE1l
ZGlhUXVlcnlTZXQ+KTsKICAgICBSZWZQdHI8U3R5bGVLZXlmcmFtZT4gY3JlYXRlS2V5ZnJhbWUo
Q1NTUGFyc2VyVmFsdWVMaXN0Jik7CiAgICAgUmVmUHRyPFN0eWxlUnVsZUtleWZyYW1lcz4gY3Jl
YXRlS2V5ZnJhbWVzUnVsZShjb25zdCBTdHJpbmcmLCBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFJl
ZlB0cjxTdHlsZUtleWZyYW1lPj4+KTsKIAogICAgIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxTdHls
ZVJ1bGVCYXNlPj4gUnVsZUxpc3Q7Ci0gICAgUmVmUHRyPFN0eWxlUnVsZUJhc2U+IGNyZWF0ZU1l
ZGlhUnVsZShQYXNzUmVmUHRyPE1lZGlhUXVlcnlTZXQ+LCBSdWxlTGlzdCopOworICAgIFJlZlB0
cjxTdHlsZVJ1bGVCYXNlPiBjcmVhdGVNZWRpYVJ1bGUoUmVmUHRyPE1lZGlhUXVlcnlTZXQ+LCBS
dWxlTGlzdCopOwogICAgIFJlZlB0cjxTdHlsZVJ1bGVCYXNlPiBjcmVhdGVFbXB0eU1lZGlhUnVs
ZShSdWxlTGlzdCopOwogICAgIFJlZlB0cjxTdHlsZVJ1bGVCYXNlPiBjcmVhdGVTdHlsZVJ1bGUo
VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rvcj4+KiBzZWxlY3RvcnMpOwog
ICAgIFJlZlB0cjxTdHlsZVJ1bGVCYXNlPiBjcmVhdGVGb250RmFjZVJ1bGUoKTsKQEAgLTQzNiw4
ICs0MzYsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBtYXJrUHJvcGVydHlTdGFydCgpOwogICAgIHZv
aWQgbWFya1Byb3BlcnR5RW5kKGJvb2wgaXNJbXBvcnRhbnRGb3VuZCwgYm9vbCBpc1Byb3BlcnR5
UGFyc2VkKTsKICAgICB2b2lkIHByb2Nlc3NBbmRBZGROZXdSdWxlVG9Tb3VyY2VUcmVlSWZOZWVk
ZWQoKTsKLSAgICB2b2lkIGFkZE5ld1J1bGVUb1NvdXJjZVRyZWUoUGFzc1JlZlB0cjxDU1NSdWxl
U291cmNlRGF0YT4pOwotICAgIFBhc3NSZWZQdHI8Q1NTUnVsZVNvdXJjZURhdGE+IHBvcFJ1bGVE
YXRhKCk7CisgICAgdm9pZCBhZGROZXdSdWxlVG9Tb3VyY2VUcmVlKFJlZlB0cjxDU1NSdWxlU291
cmNlRGF0YT4pOworICAgIFJlZlB0cjxDU1NSdWxlU291cmNlRGF0YT4gcG9wUnVsZURhdGEoKTsK
ICAgICB2b2lkIHJlc2V0UHJvcGVydHlSYW5nZSgpIHsgbV9wcm9wZXJ0eVJhbmdlLnN0YXJ0ID0g
bV9wcm9wZXJ0eVJhbmdlLmVuZCA9IFVJTlRfTUFYOyB9CiAgICAgYm9vbCBpc0V4dHJhY3RpbmdT
b3VyY2VEYXRhKCkgY29uc3QgeyByZXR1cm4gISFtX2N1cnJlbnRSdWxlRGF0YVN0YWNrOyB9CiAg
ICAgdm9pZCBzeW50YXhFcnJvcihjb25zdCBMb2NhdGlvbiYsIFN5bnRheEVycm9yVHlwZSA9IEdl
bmVyYWxTeW50YXhFcnJvcik7CkBAIC00NDksNyArNDQ5LDcgQEAgcHVibGljOgogI2lmIEVOQUJM
RShDU1NfREVWSUNFX0FEQVBUQVRJT04pCiAgICAgdm9pZCBtYXJrVmlld3BvcnRSdWxlQm9keVN0
YXJ0KCkgeyBtX2luVmlld3BvcnQgPSB0cnVlOyB9CiAgICAgdm9pZCBtYXJrVmlld3BvcnRSdWxl
Qm9keUVuZCgpIHsgbV9pblZpZXdwb3J0ID0gZmFsc2U7IH0KLSAgICBQYXNzUmVmUHRyPFN0eWxl
UnVsZUJhc2U+IGNyZWF0ZVZpZXdwb3J0UnVsZSgpOworICAgIFJlZlB0cjxTdHlsZVJ1bGVCYXNl
PiBjcmVhdGVWaWV3cG9ydFJ1bGUoKTsKICNlbmRpZgogCiAgICAgUmVmPENTU1ByaW1pdGl2ZVZh
bHVlPiBjcmVhdGVQcmltaXRpdmVOdW1lcmljVmFsdWUoVmFsdWVXaXRoQ2FsY3VsYXRpb24mKTsK
QEAgLTU1OCw3ICs1NTgsNyBAQCBwcml2YXRlOgogICAgIFBhcnNlUmVzdWx0IHBhcnNlVmFsdWUo
TXV0YWJsZVN0eWxlUHJvcGVydGllcyosIENTU1Byb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYsIGJv
b2wgaW1wb3J0YW50LCBTdHlsZVNoZWV0Q29udGVudHMqIGNvbnRleHRTdHlsZVNoZWV0KTsKICAg
ICBSZWY8SW1tdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBwYXJzZURlY2xhcmF0aW9uKGNvbnN0IFN0
cmluZyYsIFN0eWxlU2hlZXRDb250ZW50cyogY29udGV4dFN0eWxlU2hlZXQpOwogCi0gICAgUmVm
UHRyPENTU0Jhc2ljU2hhcGU+IHBhcnNlSW5zZXRSb3VuZGVkQ29ybmVycyhQYXNzUmVmUHRyPENT
U0Jhc2ljU2hhcGVJbnNldD4sIENTU1BhcnNlclZhbHVlTGlzdCYpOworICAgIFJlZlB0cjxDU1NC
YXNpY1NoYXBlPiBwYXJzZUluc2V0Um91bmRlZENvcm5lcnMoUmVmUHRyPENTU0Jhc2ljU2hhcGVJ
bnNldD4sIENTU1BhcnNlclZhbHVlTGlzdCYpOwogCiAgICAgZW51bSBTaXplUGFyYW1ldGVyVHlw
ZSB7CiAgICAgICAgIE5vbmUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFy
c2VyVmFsdWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMuY3BwCmlu
ZGV4IGEwNjA5YzM0Yjg3MDU5ZjA5YzdkMmZiYzJmNzQ3YTU0YmRkZGQ0ZDkuLmIzZDZmZmE4MTZl
MzJmZjU3NzNmZDE1NWNlZWE4ZDIxMTYyN2UxMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NQYXJzZXJWYWx1ZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJz
ZXJWYWx1ZXMuY3BwCkBAIC02Niw3ICs2Niw3IEBAIHZvaWQgQ1NTUGFyc2VyVmFsdWVMaXN0Ojpl
eHRlbmQoQ1NTUGFyc2VyVmFsdWVMaXN0JiB2YWx1ZUxpc3QpCiAgICAgICAgIG1fdmFsdWVzLmFw
cGVuZCgqKHZhbHVlTGlzdC52YWx1ZUF0KGkpKSk7CiB9CiAKLVBhc3NSZWZQdHI8Q1NTVmFsdWU+
IENTU1BhcnNlclZhbHVlOjpjcmVhdGVDU1NWYWx1ZSgpCitSZWZQdHI8Q1NTVmFsdWU+IENTU1Bh
cnNlclZhbHVlOjpjcmVhdGVDU1NWYWx1ZSgpCiB7CiAgICAgUmVmUHRyPENTU1ZhbHVlPiBwYXJz
ZWRWYWx1ZTsKICAgICBpZiAoaWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UGFyc2VyVmFsdWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyVmFsdWVzLmgKaW5k
ZXggYzM0YWFhMzg4ZjUwM2VjMGI2MGY1MGRkNTllYjNmYjQ0OGFiYmRlYy4uMDk0ZTNjMjIwMTlk
YjdkODE4ZjA5Mzk0OTEwN2M0MDlkOGUxMmU2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1BhcnNlclZhbHVlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJW
YWx1ZXMuaApAQCAtMTI4LDcgKzEyOCw3IEBAIHN0cnVjdCBDU1NQYXJzZXJWYWx1ZSB7CiAKICAg
ICB2b2lkIHNldEZyb21WYWx1ZUxpc3Qoc3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclZhbHVlTGlz
dD4pOwogCi0gICAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gY3JlYXRlQ1NTVmFsdWUoKTsKKyAgICBS
ZWZQdHI8Q1NTVmFsdWU+IGNyZWF0ZUNTU1ZhbHVlKCk7CiB9OwogCiB2b2lkIGRlc3Ryb3koY29u
c3QgQ1NTUGFyc2VyVmFsdWUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
cmltaXRpdmVWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUu
Y3BwCmluZGV4IDRhNDZmNzE4MGI3ZTBlZTA5NTdjZDIyOTBmMTI0OWRhMzRkOWZiMDQuLmFlOWVk
N2Q0YTg2ODRhYzQxMThjZDM3MTdkYmJiNjliZjFkMjVlNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1ByaW1pdGl2ZVZhbHVlLmNwcApAQCAtOTM4LDEyICs5MzgsMTIgQEAgTGVuZ3RoUmVwZWF0
KiBDU1NQcmltaXRpdmVWYWx1ZTo6Z2V0TGVuZ3RoUmVwZWF0VmFsdWUoRXhjZXB0aW9uQ29kZSYg
ZWMpIGNvbnN0CiB9CiAjZW5kaWYKIAotUGFzc1JlZlB0cjxSR0JDb2xvcj4gQ1NTUHJpbWl0aXZl
VmFsdWU6OmdldFJHQkNvbG9yVmFsdWUoRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CitSZWZQdHI8
UkdCQ29sb3I+IENTU1ByaW1pdGl2ZVZhbHVlOjpnZXRSR0JDb2xvclZhbHVlKEV4Y2VwdGlvbkNv
ZGUmIGVjKSBjb25zdAogewogICAgIGVjID0gMDsKICAgICBpZiAobV9wcmltaXRpdmVVbml0VHlw
ZSAhPSBDU1NfUkdCQ09MT1IpIHsKICAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7Ci0g
ICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKICAgICAv
LyBGSU1YRTogVGhpcyBzaG91bGQgbm90IHJldHVybiBhIG5ldyBvYmplY3QgZm9yIGVhY2ggaW52
b2NhdGlvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1
ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmgKaW5kZXggYTE3NDMx
NjdiNTVlZDk1NDMzYjBiMjYzZDI3ZGNkZDQxYjU0ZmM2NS4uMDU4Y2Y5NTZmMTk3OTYwYTBiNmFj
NTM5ZDM2N2UxMWViYWYxY2M5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1By
aW1pdGl2ZVZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVl
LmgKQEAgLTMwLDcgKzMwLDYgQEAKICNpbmNsdWRlIDx1dGlsaXR5PgogI2luY2x1ZGUgPHd0Zi9G
b3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KLSNpbmNsdWRlIDx3dGYvUGFz
c1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTMzNiw3ICszMzUsNyBAQCBw
dWJsaWM6CiAgICAgTGVuZ3RoUmVwZWF0KiBnZXRMZW5ndGhSZXBlYXRWYWx1ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fcHJpbWl0aXZlVW5pdFR5cGUgIT0gQ1NTX0xFTkdUSF9SRVBFQVQgPyAwIDogbV92
YWx1ZS5sZW5ndGhSZXBlYXQ7IH0KICNlbmRpZgogCi0gICAgUGFzc1JlZlB0cjxSR0JDb2xvcj4g
Z2V0UkdCQ29sb3JWYWx1ZShFeGNlcHRpb25Db2RlJikgY29uc3Q7CisgICAgUmVmUHRyPFJHQkNv
bG9yPiBnZXRSR0JDb2xvclZhbHVlKEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKICAgICBSR0JBMzIg
Z2V0UkdCQTMyVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ByaW1pdGl2ZVVuaXRUeXBlICE9IENT
U19SR0JDT0xPUiA/IDAgOiBtX3ZhbHVlLnJnYmNvbG9yOyB9CiAKICAgICBQYWlyKiBnZXRQYWly
VmFsdWUoRXhjZXB0aW9uQ29kZSYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1Byb3BlcnR5LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHkuaAppbmRl
eCBkNWMzOGEwNzE3ODM0YmI1MzBkOGZjNDEyYjI4M2RjNDZjZjk3YzIzLi5kNDgyNDg2MWU2ODcz
M2I0YTcyOWI2YTUwNjNlMWMwMjIxZWY0NjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUHJvcGVydHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHkuaApA
QCAtMjYsNyArMjYsNiBAQAogI2luY2x1ZGUgIkNTU1ZhbHVlLmgiCiAjaW5jbHVkZSAiUmVuZGVy
U3R5bGVDb25zdGFudHMuaCIKICNpbmNsdWRlICJXcml0aW5nTW9kZS5oIgotI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CkBAIC02NCw3ICs2Myw3IEBAIHN0cnVjdCBTdHlsZVByb3BlcnR5TWV0YWRhdGEgewog
CiBjbGFzcyBDU1NQcm9wZXJ0eSB7CiBwdWJsaWM6Ci0gICAgQ1NTUHJvcGVydHkoQ1NTUHJvcGVy
dHlJRCBwcm9wZXJ0eUlELCBQYXNzUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSwgYm9vbCBpbXBvcnRh
bnQgPSBmYWxzZSwgYm9vbCBpc1NldEZyb21TaG9ydGhhbmQgPSBmYWxzZSwgaW50IGluZGV4SW5T
aG9ydGhhbmRzVmVjdG9yID0gMCwgYm9vbCBpbXBsaWNpdCA9IGZhbHNlKQorICAgIENTU1Byb3Bl
cnR5KENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSwgYm9v
bCBpbXBvcnRhbnQgPSBmYWxzZSwgYm9vbCBpc1NldEZyb21TaG9ydGhhbmQgPSBmYWxzZSwgaW50
IGluZGV4SW5TaG9ydGhhbmRzVmVjdG9yID0gMCwgYm9vbCBpbXBsaWNpdCA9IGZhbHNlKQogICAg
ICAgICA6IG1fbWV0YWRhdGEocHJvcGVydHlJRCwgaXNTZXRGcm9tU2hvcnRoYW5kLCBpbmRleElu
U2hvcnRoYW5kc1ZlY3RvciwgaW1wb3J0YW50LCBpbXBsaWNpdCwgaXNJbmhlcml0ZWRQcm9wZXJ0
eShwcm9wZXJ0eUlEKSkKICAgICAgICAgLCBtX3ZhbHVlKHZhbHVlKQogICAgIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSZWZsZWN0VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NSZWZsZWN0VmFsdWUuaAppbmRleCAwYjU1ZjYwNDEyZDFkYzEzOTEzMDgzM2E5MmUy
ZjRmZjFmMzZkYzY5Li4wOTgxODY2NWFjMTM2NWVhMWIyNWJjOWFiYzE1YmQ4YmZlM2IxODNhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUmVmbGVjdFZhbHVlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1JlZmxlY3RWYWx1ZS5oCkBAIC0yOCw3ICsyOCw2IEBACiAKICNp
bmNsdWRlICJDU1NSZWZsZWN0aW9uRGlyZWN0aW9uLmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWUuaCIK
LSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzcsOCArMzYsOCBAQCBjbGFzcyBDU1NQcmltaXRpdmVW
YWx1ZTsKIAogY2xhc3MgQ1NTUmVmbGVjdFZhbHVlIDogcHVibGljIENTU1ZhbHVlIHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmPENTU1JlZmxlY3RWYWx1ZT4gY3JlYXRlKFBhc3NSZWZQdHI8Q1NT
UHJpbWl0aXZlVmFsdWU+IGRpcmVjdGlvbiwKLSAgICAgICAgUGFzc1JlZlB0cjxDU1NQcmltaXRp
dmVWYWx1ZT4gb2Zmc2V0LCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBtYXNrKQorICAgIHN0YXRpYyBS
ZWY8Q1NTUmVmbGVjdFZhbHVlPiBjcmVhdGUoUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBkaXJl
Y3Rpb24sCisgICAgICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gb2Zmc2V0LCBSZWZQdHI8
Q1NTVmFsdWU+IG1hc2spCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NS
ZWZsZWN0VmFsdWUoZGlyZWN0aW9uLCBvZmZzZXQsIG1hc2spKTsKICAgICB9CkBAIC01NCw3ICs1
Myw3IEBAIHB1YmxpYzoKICAgICBib29sIGVxdWFscyhjb25zdCBDU1NSZWZsZWN0VmFsdWUmKSBj
b25zdDsKIAogcHJpdmF0ZToKLSAgICBDU1NSZWZsZWN0VmFsdWUoUGFzc1JlZlB0cjxDU1NQcmlt
aXRpdmVWYWx1ZT4gZGlyZWN0aW9uLCBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBvZmZz
ZXQsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IG1hc2spCisgICAgQ1NTUmVmbGVjdFZhbHVlKFJlZlB0
cjxDU1NQcmltaXRpdmVWYWx1ZT4gZGlyZWN0aW9uLCBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+
IG9mZnNldCwgUmVmUHRyPENTU1ZhbHVlPiBtYXNrKQogICAgICAgICA6IENTU1ZhbHVlKFJlZmxl
Y3RDbGFzcykKICAgICAgICAgLCBtX2RpcmVjdGlvbihkaXJlY3Rpb24pCiAgICAgICAgICwgbV9v
ZmZzZXQob2Zmc2V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1J1bGVMaXN0
LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUnVsZUxpc3QuaAppbmRleCA1NDhmNTJlZGRmNzc5
MDRlNzY4ODc1MjNhNzM4NDk3ZTI0OTFhZjI3Li5mODJhMWFjN2E0OGZhNTFmNDliZDY3OGY0ZDFm
ZTlhOTUzNjVkY2RhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUnVsZUxpc3Qu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUnVsZUxpc3QuaApAQCAtMjIsNyArMjIsNiBA
QAogI2lmbmRlZiBDU1NSdWxlTGlzdF9oCiAjZGVmaW5lIENTU1J1bGVMaXN0X2gKIAotI2luY2x1
ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1NlZ21lbnRlZEZvbnRGYWNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NTZWdtZW50ZWRGb250RmFjZS5jcHAKaW5kZXggMmYzN2Q2YTBmZDA5NjRhMDk5
NzllNmRmN2U5ZjdmMTgyOTlhMDY3Ny4uNzJmZGViZjllODExMTU3MzVkZmUzZWNhN2JmMjc0Y2Nm
ZGM2OGQ4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlZ21lbnRlZEZvbnRG
YWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VnbWVudGVkRm9udEZhY2UuY3Bw
CkBAIC04NCw3ICs4NCw3IEBAIHZvaWQgQ1NTU2VnbWVudGVkRm9udEZhY2U6OmZvbnRMb2FkZWQo
Q1NTRm9udEZhY2UqKQogI2VuZGlmCiB9CiAKLXZvaWQgQ1NTU2VnbWVudGVkRm9udEZhY2U6OmFw
cGVuZEZvbnRGYWNlKFBhc3NSZWZQdHI8Q1NTRm9udEZhY2U+IGZvbnRGYWNlKQordm9pZCBDU1NT
ZWdtZW50ZWRGb250RmFjZTo6YXBwZW5kRm9udEZhY2UoUmVmUHRyPENTU0ZvbnRGYWNlPiBmb250
RmFjZSkKIHsKICAgICBwcnVuZVRhYmxlKCk7CiAgICAgZm9udEZhY2UtPmFkZGVkVG9TZWdtZW50
ZWRGb250RmFjZSh0aGlzKTsKQEAgLTE1Myw3ICsxNTMsNyBAQCBib29sIENTU1NlZ21lbnRlZEZv
bnRGYWNlOjpjaGVja0ZvbnQoKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIENT
U1NlZ21lbnRlZEZvbnRGYWNlOjpsb2FkRm9udChjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnRE
ZXNjcmlwdGlvbiwgUGFzc1JlZlB0cjxMb2FkRm9udENhbGxiYWNrPiBjYWxsYmFjaykKK3ZvaWQg
Q1NTU2VnbWVudGVkRm9udEZhY2U6OmxvYWRGb250KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9u
dERlc2NyaXB0aW9uLCBSZWZQdHI8TG9hZEZvbnRDYWxsYmFjaz4gY2FsbGJhY2spCiB7CiAgICAg
Zm9udFJhbmdlcyhmb250RGVzY3JpcHRpb24pOyAvLyBLaWNrIG9mZiB0aGUgbG9hZC4KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlZ21lbnRlZEZvbnRGYWNlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTU2VnbWVudGVkRm9udEZhY2UuaAppbmRleCBmODY5ZmY2ZGEwYjdl
ZmEyZTQ1YmYxMjY4NTQ1MzJjNDg2NTU2NTJjLi4xZGE4MzJjOTczN2Q0MTAxNjA0NTI0OWFkNTVi
NTBiMzA5NTBhNTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VnbWVudGVk
Rm9udEZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VnbWVudGVkRm9udEZhY2Uu
aApAQCAtMjksNyArMjksNiBAQAogI2luY2x1ZGUgIkZvbnRDYWNoZS5oIgogI2luY2x1ZGUgIkZv
bnRSYW5nZXMuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9QYXNz
UmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CiAKQEAgLTQ4LDcgKzQ3LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBmb250TG9hZGVk
KENTU0ZvbnRGYWNlKik7CiAKLSAgICB2b2lkIGFwcGVuZEZvbnRGYWNlKFBhc3NSZWZQdHI8Q1NT
Rm9udEZhY2U+KTsKKyAgICB2b2lkIGFwcGVuZEZvbnRGYWNlKFJlZlB0cjxDU1NGb250RmFjZT4p
OwogCiAgICAgRm9udFJhbmdlcyBmb250UmFuZ2VzKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYpOwog
CkBAIC02MSw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICB9OwogCiAgICAgYm9vbCBjaGVja0ZvbnQo
KSBjb25zdDsKLSAgICB2b2lkIGxvYWRGb250KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIFBhc3NS
ZWZQdHI8TG9hZEZvbnRDYWxsYmFjaz4gbG9hZENhbGxiYWNrKTsKKyAgICB2b2lkIGxvYWRGb250
KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIFJlZlB0cjxMb2FkRm9udENhbGxiYWNrPiBsb2FkQ2Fs
bGJhY2spOwogI2VuZGlmCiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTU2VsZWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcApp
bmRleCA0NDBlODljMjZmYzBkODQyNzEwOWMyNDNiNTY5YWY1Mjg4NjZmZWRmLi41ODQ0ODZjNmEx
MTA5NzVjMGNhMGEwNjA0ZDViZDY2OGUzMTg1ZjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rv
ci5jcHAKQEAgLTc3OSw3ICs3NzksNyBAQCBpbnQgQ1NTU2VsZWN0b3I6Om50aEIoKSBjb25zdAog
ICAgIHJldHVybiBtX2RhdGEubV9yYXJlRGF0YS0+bV9iOwogfQogCi1DU1NTZWxlY3Rvcjo6UmFy
ZURhdGE6OlJhcmVEYXRhKFBhc3NSZWZQdHI8QXRvbWljU3RyaW5nSW1wbD4gdmFsdWUpCitDU1NT
ZWxlY3Rvcjo6UmFyZURhdGE6OlJhcmVEYXRhKFJlZlB0cjxBdG9taWNTdHJpbmdJbXBsPiB2YWx1
ZSkKICAgICA6IG1fdmFsdWUodmFsdWUubGVha1JlZigpKQogICAgICwgbV9hKDApCiAgICAgLCBt
X2IoMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5oIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmgKaW5kZXggOTgwOGU3MTU1NmZiMjM0MjY2ZjVl
YzEzZTc2YjQ1NjdiMjA1YjIzZS4uMmMwMjQ3NGVjNmE1ZTA1M2U0MWFiN2NkNDk1ZThhMjNjM2M2
YTU5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmgKQEAgLTMyOCw3ICszMjgsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIENTU1NlbGVjdG9yJiBvcGVyYXRvcj0oY29uc3QgQ1NT
U2VsZWN0b3ImKTsKIAogICAgICAgICBzdHJ1Y3QgUmFyZURhdGEgOiBwdWJsaWMgUmVmQ291bnRl
ZDxSYXJlRGF0YT4gewotICAgICAgICAgICAgc3RhdGljIFJlZjxSYXJlRGF0YT4gY3JlYXRlKFBh
c3NSZWZQdHI8QXRvbWljU3RyaW5nSW1wbD4gdmFsdWUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
UmFyZURhdGEodmFsdWUpKTsgfQorICAgICAgICAgICAgc3RhdGljIFJlZjxSYXJlRGF0YT4gY3Jl
YXRlKFJlZlB0cjxBdG9taWNTdHJpbmdJbXBsPiB2YWx1ZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5l
dyBSYXJlRGF0YSh2YWx1ZSkpOyB9CiAgICAgICAgICAgICB+UmFyZURhdGEoKTsKIAogICAgICAg
ICAgICAgYm9vbCBwYXJzZU50aCgpOwpAQCAtMzQ0LDcgKzM0NCw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxDU1NTZWxlY3Rvckxpc3Q+IG1fc2Vs
ZWN0b3JMaXN0OyAvLyBVc2VkIGZvciA6bWF0Y2hlcygpIGFuZCA6bm90KCkuCiAgICAgICAgIAog
ICAgICAgICBwcml2YXRlOgotICAgICAgICAgICAgUmFyZURhdGEoUGFzc1JlZlB0cjxBdG9taWNT
dHJpbmdJbXBsPiB2YWx1ZSk7CisgICAgICAgICAgICBSYXJlRGF0YShSZWZQdHI8QXRvbWljU3Ry
aW5nSW1wbD4gdmFsdWUpOwogICAgICAgICB9OwogICAgICAgICB2b2lkIGNyZWF0ZVJhcmVEYXRh
KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTaGFkb3dWYWx1ZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2hhZG93VmFsdWUuY3BwCmluZGV4IDkwNGU0NWZmOGFj
OTNkNDJjMWEyNDgxYTVlM2U2YjcyZDIyMjcwMTkuLjQ1ZWZjYTA2OTQ2NGJiYjYyMDc4ZDJiZDA5
YmVjOWNhYmM0ZWM5ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTaGFkb3dW
YWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NoYWRvd1ZhbHVlLmNwcApAQCAt
MjYsMTIgKzI2LDEyIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIFVzZWQgZm9yIHRleHQt
c2hhZG93IGFuZCBib3gtc2hhZG93Ci1DU1NTaGFkb3dWYWx1ZTo6Q1NTU2hhZG93VmFsdWUoUGFz
c1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4geCwKLSAgICBQYXNzUmVmUHRyPENTU1ByaW1pdGl2
ZVZhbHVlPiB5LAotICAgIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGJsdXIsCi0gICAg
UGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gc3ByZWFkLAotICAgIFBhc3NSZWZQdHI8Q1NT
UHJpbWl0aXZlVmFsdWU+IHN0eWxlLAotICAgIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+
IGNvbG9yKQorQ1NTU2hhZG93VmFsdWU6OkNTU1NoYWRvd1ZhbHVlKFJlZlB0cjxDU1NQcmltaXRp
dmVWYWx1ZT4geCwKKyAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHksCisgICAgUmVmUHRy
PENTU1ByaW1pdGl2ZVZhbHVlPiBibHVyLAorICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4g
c3ByZWFkLAorICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gc3R5bGUsCisgICAgUmVmUHRy
PENTU1ByaW1pdGl2ZVZhbHVlPiBjb2xvcikKICAgICA6IENTU1ZhbHVlKFNoYWRvd0NsYXNzKQog
ICAgICwgeCh4KQogICAgICwgeSh5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1NoYWRvd1ZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2hhZG93VmFsdWUuaAppbmRl
eCAzMGQzYjRkMjQ5ODFkOTc0Y2M5ZTBjZGJjYjlmYWUxNDY5Y2Y0ZjM2Li4wNGE2ZjE5NDY2ZmNk
ODc2MmJiNzdhM2JlZDE0NjFkOTExYTM3NzljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTU2hhZG93VmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2hhZG93VmFs
dWUuaApAQCAtMjIsNyArMjIsNiBAQAogI2RlZmluZSBDU1NTaGFkb3dWYWx1ZV9oCiAKICNpbmNs
dWRlICJDU1NWYWx1ZS5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zMiwxMiArMzEsMTIgQEAg
Y2xhc3MgQ1NTUHJpbWl0aXZlVmFsdWU7CiAvLyBVc2VkIGZvciB0ZXh0LXNoYWRvdyBhbmQgYm94
LXNoYWRvdwogY2xhc3MgQ1NTU2hhZG93VmFsdWUgOiBwdWJsaWMgQ1NTVmFsdWUgewogcHVibGlj
OgotICAgIHN0YXRpYyBSZWY8Q1NTU2hhZG93VmFsdWU+IGNyZWF0ZShQYXNzUmVmUHRyPENTU1By
aW1pdGl2ZVZhbHVlPiB4LAotICAgICAgICBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiB5
LAotICAgICAgICBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBibHVyLAotICAgICAgICBQ
YXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBzcHJlYWQsCi0gICAgICAgIFBhc3NSZWZQdHI8
Q1NTUHJpbWl0aXZlVmFsdWU+IHN0eWxlLAotICAgICAgICBQYXNzUmVmUHRyPENTU1ByaW1pdGl2
ZVZhbHVlPiBjb2xvcikKKyAgICBzdGF0aWMgUmVmPENTU1NoYWRvd1ZhbHVlPiBjcmVhdGUoUmVm
UHRyPENTU1ByaW1pdGl2ZVZhbHVlPiB4LAorICAgICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFs
dWU+IHksCisgICAgICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gYmx1ciwKKyAgICAgICAg
UmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBzcHJlYWQsCisgICAgICAgIFJlZlB0cjxDU1NQcmlt
aXRpdmVWYWx1ZT4gc3R5bGUsCisgICAgICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29s
b3IpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NTaGFkb3dWYWx1ZSh4
LCB5LCBibHVyLCBzcHJlYWQsIHN0eWxlLCBjb2xvcikpOwogICAgIH0KQEAgLTU0LDEyICs1Mywx
MiBAQCBwdWJsaWM6CiAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjb2xvcjsKIAogcHJp
dmF0ZToKLSAgICBDU1NTaGFkb3dWYWx1ZShQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiB4
LAotICAgICAgICBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiB5LAotICAgICAgICBQYXNz
UmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBibHVyLAotICAgICAgICBQYXNzUmVmUHRyPENTU1By
aW1pdGl2ZVZhbHVlPiBzcHJlYWQsCi0gICAgICAgIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFs
dWU+IHN0eWxlLAotICAgICAgICBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjb2xvcik7
CisgICAgQ1NTU2hhZG93VmFsdWUoUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiB4LAorICAgICAg
ICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHksCisgICAgICAgIFJlZlB0cjxDU1NQcmltaXRp
dmVWYWx1ZT4gYmx1ciwKKyAgICAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBzcHJlYWQs
CisgICAgICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gc3R5bGUsCisgICAgICAgIFJlZlB0
cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29sb3IpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwCmluZGV4IDBkMmI4MmZkNDFmY2VhOGFl
NTk3YTIwNDA5YjhiNDgxZWM4ODAyNmYuLjc3OWVhNWU2YTAzMzkxNjgyNDY2N2VjNTIxZWYyYTg1
ZDFiN2U2MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAKQEAgLTIxOCw3ICsy
MTgsNyBAQCB2b2lkIENTU1N0eWxlU2hlZXQ6OnNldERpc2FibGVkKGJvb2wgZGlzYWJsZWQpCiAg
ICAgZGlkTXV0YXRlKCk7CiB9CiAKLXZvaWQgQ1NTU3R5bGVTaGVldDo6c2V0TWVkaWFRdWVyaWVz
KFBhc3NSZWZQdHI8TWVkaWFRdWVyeVNldD4gbWVkaWFRdWVyaWVzKQordm9pZCBDU1NTdHlsZVNo
ZWV0OjpzZXRNZWRpYVF1ZXJpZXMoUmVmUHRyPE1lZGlhUXVlcnlTZXQ+IG1lZGlhUXVlcmllcykK
IHsKICAgICBtX21lZGlhUXVlcmllcyA9IG1lZGlhUXVlcmllczsKICAgICBpZiAobV9tZWRpYUNT
U09NV3JhcHBlciAmJiBtX21lZGlhUXVlcmllcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NTdHlsZVNoZWV0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5o
CmluZGV4IDE3NGNkNGM5NTVlNGZlM2Y4NWI0MWVmODg0MDljZTJmNjJjNDkxZmEuLmQ5YjU3Yjg3
NzBmOTBmNzQxMjcwODhiYTdhODMzOTAzNTI2OWVjMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxl
U2hlZXQuaApAQCAtODUsNyArODUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhck93bmVyUnVs
ZSgpIHsgbV9vd25lclJ1bGUgPSAwOyB9CiAgICAgRG9jdW1lbnQqIG93bmVyRG9jdW1lbnQoKSBj
b25zdDsKICAgICBNZWRpYVF1ZXJ5U2V0KiBtZWRpYVF1ZXJpZXMoKSBjb25zdCB7IHJldHVybiBt
X21lZGlhUXVlcmllcy5nZXQoKTsgfQotICAgIHZvaWQgc2V0TWVkaWFRdWVyaWVzKFBhc3NSZWZQ
dHI8TWVkaWFRdWVyeVNldD4pOworICAgIHZvaWQgc2V0TWVkaWFRdWVyaWVzKFJlZlB0cjxNZWRp
YVF1ZXJ5U2V0Pik7CiAgICAgdm9pZCBzZXRUaXRsZShjb25zdCBTdHJpbmcmIHRpdGxlKSB7IG1f
dGl0bGUgPSB0aXRsZTsgfQogCiAgICAgYm9vbCBoYWRSdWxlc011dGF0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9tdXRhdGVkUnVsZXM7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NUaW1pbmdGdW5jdGlvblZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVGltaW5nRnVu
Y3Rpb25WYWx1ZS5oCmluZGV4IGRhY2I0NzM5ZTYxMDhiOTMzMmIwMTZkYjMwOTU3OTQ0NmE4Yjhh
OGMuLjJkZjI3OWJkMzczOThlZDM0YWQ5NDdkOWJiYjE5NDUxNmQ1Yjc2N2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NUaW1pbmdGdW5jdGlvblZhbHVlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1RpbWluZ0Z1bmN0aW9uVmFsdWUuaApAQCAtMjcsNyArMjcsNiBAQAog
I2RlZmluZSBDU1NUaW1pbmdGdW5jdGlvblZhbHVlX2gKIAogI2luY2x1ZGUgIkNTU1ZhbHVlLmgi
Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVW5pY29kZVJhbmdlVmFsdWUuaCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NVbmljb2RlUmFuZ2VWYWx1ZS5oCmluZGV4IDI2NDMwODFmOGVj
MTQ5NzdmYzJkZTQwY2FhOGI1YWQwYTQwODkxMjAuLjhiYTlhOGFiYzFmMDRmYjFkMzdlYjA0MTc0
NGVjZTczNTE0MjYzZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NVbmljb2Rl
UmFuZ2VWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NVbmljb2RlUmFuZ2VWYWx1
ZS5oCkBAIC0yNyw3ICsyNyw2IEBACiAjZGVmaW5lIENTU1VuaWNvZGVSYW5nZVZhbHVlX2gKIAog
I2luY2x1ZGUgIkNTU1ZhbHVlLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFs
dWVMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3QuY3BwCmluZGV4IDM1
MTQ1MGNlMGEwZGNjMGM3YzcyNWEwM2FhYmJmZjRmZWE1OTljOGQuLjliZjkyYTk2MjMzM2ZlY2Zl
NTQzMzA0MmNlYzAwYjY3Yjk4OWFkYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NWYWx1ZUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3QuY3Bw
CkBAIC03NCw3ICs3NCw3IEBAIGJvb2wgQ1NTVmFsdWVMaXN0OjpoYXNWYWx1ZShDU1NWYWx1ZSog
dmFsKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotUGFzc1JlZlB0cjxDU1NWYWx1ZUxp
c3Q+IENTU1ZhbHVlTGlzdDo6Y29weSgpCitSZWZQdHI8Q1NTVmFsdWVMaXN0PiBDU1NWYWx1ZUxp
c3Q6OmNvcHkoKQogewogICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IG5ld0xpc3Q7CiAgICAgc3dp
dGNoIChtX3ZhbHVlTGlzdFNlcGFyYXRvcikgewpAQCAtOTIsNyArOTIsNyBAQCBQYXNzUmVmUHRy
PENTU1ZhbHVlTGlzdD4gQ1NTVmFsdWVMaXN0Ojpjb3B5KCkKICAgICB9CiAgICAgZm9yIChhdXRv
JiB2YWx1ZSA6IG1fdmFsdWVzKQogICAgICAgICBuZXdMaXN0LT5hcHBlbmQodmFsdWUuZ2V0KCkp
OwotICAgIHJldHVybiBuZXdMaXN0LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gbmV3TGlzdDsKIH0K
IAogU3RyaW5nIENTU1ZhbHVlTGlzdDo6Y3VzdG9tQ1NTVGV4dCgpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTVmFsdWVMaXN0LmgKaW5kZXggNGEyMWRmN2RjMzQwOTE3NTZkZTAyYjg3MWJkMzBlNDZjNGNi
MjZhMS4uZmI3OGViYjJmYmVkNjE4ZWZiNmM1Yjc5NGI3YTc2NTUyNTdhNWUwMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NWYWx1ZUxpc3QuaApAQCAtMjIsNyArMjIsNiBAQAogI2RlZmluZSBDU1NWYWx1ZUxp
c3RfaAogCiAjaW5jbHVkZSAiQ1NTVmFsdWUuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5o
PgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNjYs
NyArNjUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBwcmVwZW5kKFJlZjxDU1NWYWx1ZT4mJik7CiAg
ICAgYm9vbCByZW1vdmVBbGwoQ1NTVmFsdWUqKTsKICAgICBib29sIGhhc1ZhbHVlKENTU1ZhbHVl
KikgY29uc3Q7Ci0gICAgUGFzc1JlZlB0cjxDU1NWYWx1ZUxpc3Q+IGNvcHkoKTsKKyAgICBSZWZQ
dHI8Q1NTVmFsdWVMaXN0PiBjb3B5KCk7CiAKICAgICBTdHJpbmcgY3VzdG9tQ1NTVGV4dCgpIGNv
bnN0OwogICAgIGJvb2wgZXF1YWxzKGNvbnN0IENTU1ZhbHVlTGlzdCYpIGNvbnN0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlUG9vbC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTVmFsdWVQb29sLmNwcAppbmRleCBhZTNlMGZkNGFlYjYwZDZkYzg4NmRjOTFiOWIw
MDRjNWY1YzQ5MWRhLi4xMmRlZGUxNTVjNzgyZjA0ZGUyMTU5YWQ0YWI3MDI1MjBmMTYwYTZiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVQb29sLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVQb29sLmNwcApAQCAtMTMzLDcgKzEzMyw3IEBAIFJlZjxD
U1NQcmltaXRpdmVWYWx1ZT4gQ1NTVmFsdWVQb29sOjpjcmVhdGVGb250RmFtaWx5VmFsdWUoY29u
c3QgU3RyaW5nJiBmYW1pbHlOCiAgICAgcmV0dXJuICp2YWx1ZTsKIH0KIAotUGFzc1JlZlB0cjxD
U1NWYWx1ZUxpc3Q+IENTU1ZhbHVlUG9vbDo6Y3JlYXRlRm9udEZhY2VWYWx1ZShjb25zdCBBdG9t
aWNTdHJpbmcmIHN0cmluZykKK1JlZlB0cjxDU1NWYWx1ZUxpc3Q+IENTU1ZhbHVlUG9vbDo6Y3Jl
YXRlRm9udEZhY2VWYWx1ZShjb25zdCBBdG9taWNTdHJpbmcmIHN0cmluZykKIHsKICAgICAvLyBS
ZW1vdmUgb25lIGVudHJ5IGF0IHJhbmRvbSBpZiB0aGUgY2FjaGUgZ3Jvd3MgdG9vIGxhcmdlLgog
ICAgIGNvbnN0IGludCBtYXhpbXVtRm9udEZhY2VDYWNoZVNpemUgPSAxMjg7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVQb29sLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTVmFsdWVQb29sLmgKaW5kZXggMWNlMjkyNTJiNTE1ZmFkM2MwNjI3ZjY3M2NiYzc5MGI3ZDc0
ZTg0Mi4uYWEzZjkzMGEyNTUyNmMxY2Y1NmQwOTE5MGY4NTUzYzE0NmE0MWU3YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NWYWx1ZVBvb2wuaApAQCAtNDcsNyArNDcsNyBAQCBlbnVtIGNsYXNzIEZyb21TeXN0
ZW1Gb250SUQgeyBObywgWWVzIH07CiBjbGFzcyBDU1NWYWx1ZVBvb2wgewogICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFBhc3NSZWZQdHI8Q1NTVmFsdWVMaXN0PiBj
cmVhdGVGb250RmFjZVZhbHVlKGNvbnN0IEF0b21pY1N0cmluZyYpOworICAgIFJlZlB0cjxDU1NW
YWx1ZUxpc3Q+IGNyZWF0ZUZvbnRGYWNlVmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJik7CiAgICAg
UmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBjcmVhdGVGb250RmFtaWx5VmFsdWUoY29uc3QgU3RyaW5n
JiwgRnJvbVN5c3RlbUZvbnRJRCA9IEZyb21TeXN0ZW1Gb250SUQ6Ok5vKTsKICAgICBSZWY8Q1NT
SW5oZXJpdGVkVmFsdWU+IGNyZWF0ZUluaGVyaXRlZFZhbHVlKCkgeyByZXR1cm4gbV9pbmhlcml0
ZWRWYWx1ZS5jb3B5UmVmKCk7IH0KICAgICBSZWY8Q1NTSW5pdGlhbFZhbHVlPiBjcmVhdGVJbXBs
aWNpdEluaXRpYWxWYWx1ZSgpIHsgcmV0dXJuIG1faW1wbGljaXRJbml0aWFsVmFsdWUuY29weVJl
ZigpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ291bnRlci5oIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NvdW50ZXIuaAppbmRleCA5OGE4YWJjZjhhYjgxODY5ZDY4YjQxNTk3NDZh
YTIwZjU3NzU4YTBkLi4wOGVmMmE3NjU0OGVlYmE3OTQxZTUxZDEwOTQ2YTg0MDg3ZTE5Y2M1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ291bnRlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9Db3VudGVyLmgKQEAgLTI4LDcgKzI4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBDb3VudGVyIDogcHVibGljIFJlZkNvdW50ZWQ8Q291bnRlcj4gewogcHVibGljOgot
ICAgIHN0YXRpYyBSZWY8Q291bnRlcj4gY3JlYXRlKFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFs
dWU+IGlkZW50aWZpZXIsIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGxpc3RTdHlsZSwg
UGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gc2VwYXJhdG9yKQorICAgIHN0YXRpYyBSZWY8
Q291bnRlcj4gY3JlYXRlKFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gaWRlbnRpZmllciwgUmVm
UHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBsaXN0U3R5bGUsIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1
ZT4gc2VwYXJhdG9yKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ291bnRl
cihpZGVudGlmaWVyLCBsaXN0U3R5bGUsIHNlcGFyYXRvcikpOwogICAgIH0KQEAgLTM5LDkgKzM5
LDkgQEAgcHVibGljOgogCiAgICAgQ1NTVmFsdWVJRCBsaXN0U3R5bGVJZGVudCgpIGNvbnN0IHsg
cmV0dXJuIG1fbGlzdFN0eWxlID8gbV9saXN0U3R5bGUtPmdldFZhbHVlSUQoKSA6IENTU1ZhbHVl
SW52YWxpZDsgfQogCi0gICAgdm9pZCBzZXRJZGVudGlmaWVyKFBhc3NSZWZQdHI8Q1NTUHJpbWl0
aXZlVmFsdWU+IGlkZW50aWZpZXIpIHsgbV9pZGVudGlmaWVyID0gaWRlbnRpZmllcjsgfQotICAg
IHZvaWQgc2V0TGlzdFN0eWxlKFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGxpc3RTdHls
ZSkgeyBtX2xpc3RTdHlsZSA9IGxpc3RTdHlsZTsgfQotICAgIHZvaWQgc2V0U2VwYXJhdG9yKFBh
c3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHNlcGFyYXRvcikgeyBtX3NlcGFyYXRvciA9IHNl
cGFyYXRvcjsgfQorICAgIHZvaWQgc2V0SWRlbnRpZmllcihSZWZQdHI8Q1NTUHJpbWl0aXZlVmFs
dWU+IGlkZW50aWZpZXIpIHsgbV9pZGVudGlmaWVyID0gaWRlbnRpZmllcjsgfQorICAgIHZvaWQg
c2V0TGlzdFN0eWxlKFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gbGlzdFN0eWxlKSB7IG1fbGlz
dFN0eWxlID0gbGlzdFN0eWxlOyB9CisgICAgdm9pZCBzZXRTZXBhcmF0b3IoUmVmUHRyPENTU1By
aW1pdGl2ZVZhbHVlPiBzZXBhcmF0b3IpIHsgbV9zZXBhcmF0b3IgPSBzZXBhcmF0b3I7IH0KIAog
ICAgIGJvb2wgZXF1YWxzKGNvbnN0IENvdW50ZXImIG90aGVyKSBjb25zdAogICAgIHsKQEAgLTU4
LDcgKzU4LDcgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBDb3VudGVyKFBhc3NS
ZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGlkZW50aWZpZXIsIFBhc3NSZWZQdHI8Q1NTUHJpbWl0
aXZlVmFsdWU+IGxpc3RTdHlsZSwgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gc2VwYXJh
dG9yKQorICAgIENvdW50ZXIoUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBpZGVudGlmaWVyLCBS
ZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGxpc3RTdHlsZSwgUmVmUHRyPENTU1ByaW1pdGl2ZVZh
bHVlPiBzZXBhcmF0b3IpCiAgICAgICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiAgICAg
ICAgICwgbV9saXN0U3R5bGUobGlzdFN0eWxlKQogICAgICAgICAsIG1fc2VwYXJhdG9yKHNlcGFy
YXRvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250TG9hZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9Gb250TG9hZGVyLmNwcAppbmRleCBmZDU1YTllZWI2NTMzMDJkNmFm
OTQ0MzY5YjI2ZjE0YTM1MTQ3NDQxLi40ZGRlMmIwNGU4NDg4Mzg3ODY5MWIyNmFhNmViNDExODc5
NDU1MzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udExvYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRMb2FkZXIuY3BwCkBAIC00OCwxMiArNDgsMTIgQEAg
c3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IGRlZmF1bHRGb250RmFtaWx5ID0gInNhbnMtc2VyaWYi
OwogCiBjbGFzcyBMb2FkRm9udENhbGxiYWNrIDogcHVibGljIENTU1NlZ21lbnRlZEZvbnRGYWNl
OjpMb2FkRm9udENhbGxiYWNrIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPExvYWRGb250Q2Fs
bGJhY2s+IGNyZWF0ZShpbnQgbnVtTG9hZGluZywgRm9udExvYWRlciYgZm9udExvYWRlciwgUGFz
c1JlZlB0cjxWb2lkQ2FsbGJhY2s+IGxvYWRDYWxsYmFjaywgUGFzc1JlZlB0cjxWb2lkQ2FsbGJh
Y2s+IGVycm9yQ2FsbGJhY2spCisgICAgc3RhdGljIFJlZjxMb2FkRm9udENhbGxiYWNrPiBjcmVh
dGUoaW50IG51bUxvYWRpbmcsIEZvbnRMb2FkZXImIGZvbnRMb2FkZXIsIFJlZlB0cjxWb2lkQ2Fs
bGJhY2s+IGxvYWRDYWxsYmFjaywgUmVmUHRyPFZvaWRDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykK
ICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IExvYWRGb250Q2FsbGJhY2sobnVt
TG9hZGluZywgZm9udExvYWRlciwgbG9hZENhbGxiYWNrLCBlcnJvckNhbGxiYWNrKSk7CiAgICAg
fQogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8TG9hZEZvbnRDYWxsYmFjaz4gY3JlYXRlRnJvbVBh
cmFtcyhjb25zdCBEaWN0aW9uYXJ5JiBwYXJhbXMsIEZvbnRMb2FkZXImIGZvbnRMb2FkZXIsIGNv
bnN0IEZvbnRDYXNjYWRlJiBmb250KQorICAgIHN0YXRpYyBSZWZQdHI8TG9hZEZvbnRDYWxsYmFj
az4gY3JlYXRlRnJvbVBhcmFtcyhjb25zdCBEaWN0aW9uYXJ5JiBwYXJhbXMsIEZvbnRMb2FkZXIm
IGZvbnRMb2FkZXIsIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250KQogICAgIHsKICAgICAgICAgUmVm
UHRyPFZvaWRDYWxsYmFjaz4gb25zdWNjZXNzOwogICAgICAgICBSZWZQdHI8Vm9pZENhbGxiYWNr
PiBvbmVycm9yOwpAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgaW50IGZhbWlseUNvdW50
KCkgY29uc3QgeyByZXR1cm4gbV9mYW1pbHlDb3VudDsgfQogCiBwcml2YXRlOgotICAgIExvYWRG
b250Q2FsbGJhY2soaW50IG51bUxvYWRpbmcsIEZvbnRMb2FkZXImIGZvbnRMb2FkZXIsIFBhc3NS
ZWZQdHI8Vm9pZENhbGxiYWNrPiBsb2FkQ2FsbGJhY2ssIFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNr
PiBlcnJvckNhbGxiYWNrKQorICAgIExvYWRGb250Q2FsbGJhY2soaW50IG51bUxvYWRpbmcsIEZv
bnRMb2FkZXImIGZvbnRMb2FkZXIsIFJlZlB0cjxWb2lkQ2FsbGJhY2s+IGxvYWRDYWxsYmFjaywg
UmVmUHRyPFZvaWRDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKICAgICAgICAgOiBtX2ZhbWlseUNv
dW50KG51bUxvYWRpbmcpCiAgICAgICAgICwgbV9udW1Mb2FkaW5nKG51bUxvYWRpbmcpCiAgICAg
ICAgICwgbV9lcnJvck9jY3VyZWQoZmFsc2UpCkBAIC0xNjYsNyArMTY2LDcgQEAgYm9vbCBGb250
TG9hZGVyOjpjYW5TdXNwZW5kRm9yUGFnZUNhY2hlKCkgY29uc3QKICAgICByZXR1cm4gIW1fbnVt
TG9hZGluZ0Zyb21DU1MgJiYgIW1fbnVtTG9hZGluZ0Zyb21KUzsKIH0KIAotdm9pZCBGb250TG9h
ZGVyOjpzY2hlZHVsZUV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQordm9pZCBGb250TG9h
ZGVyOjpzY2hlZHVsZUV2ZW50KFJlZlB0cjxFdmVudD4gZXZlbnQpCiB7CiAgICAgbV9wZW5kaW5n
RXZlbnRzLmFwcGVuZChldmVudCk7CiAgICAgaWYgKCFtX3BlbmRpbmdFdmVudHNUaW1lci5pc0Fj
dGl2ZSgpKQpAQCAtMjI4LDcgKzIyOCw3IEBAIHZvaWQgRm9udExvYWRlcjo6bG9hZEVycm9yKENT
U0ZvbnRGYWNlUnVsZSogcnVsZSwgQ1NTRm9udEZhY2VTb3VyY2UqIHNvdXJjZSkKICAgICAgICAg
bV9sb2FkaW5nRG9uZUV2ZW50ID0gQ1NTRm9udEZhY2VMb2FkRXZlbnQ6OmNyZWF0ZUZvckZvbnRG
YWNlUnVsZShldmVudE5hbWVzKCkubG9hZGluZ2RvbmVFdmVudCwgcnVsZSk7CiB9CiAKLXZvaWQg
Rm9udExvYWRlcjo6bm90aWZ5V2hlbkZvbnRzUmVhZHkoUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+
IGNhbGxiYWNrKQordm9pZCBGb250TG9hZGVyOjpub3RpZnlXaGVuRm9udHNSZWFkeShSZWZQdHI8
Vm9pZENhbGxiYWNrPiBjYWxsYmFjaykKIHsKICAgICBtX2NhbGxiYWNrcy5hcHBlbmQoY2FsbGJh
Y2spOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRMb2FkZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9Gb250TG9hZGVyLmgKaW5kZXggZGZjNTAxYTdlYmVlMDk1ZjIxMjUy
OTg3ZmNiM2M2ZTBkYWM0Y2ZiNi4uN2U3YWQ1OWYyMGNjNmZmNmUwNmI2NGVkMjBlNGY2NmVmOTcx
NjI3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRMb2FkZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvRm9udExvYWRlci5oCkBAIC0zMyw3ICszMyw2IEBACiAjaW5jbHVk
ZSAiRXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgIlZvaWRDYWxs
YmFjay5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKQEAgLTYxLDcgKzYwLDcgQEAgcHVi
bGljOgogICAgIHZvaWQgbG9hZEZvbnQoY29uc3QgRGljdGlvbmFyeSYpOwogICAgIHZvaWQgbG9h
ZEZvbnREb25lKGNvbnN0IExvYWRGb250Q2FsbGJhY2smKTsKIAotICAgIHZvaWQgbm90aWZ5V2hl
bkZvbnRzUmVhZHkoUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+KTsKKyAgICB2b2lkIG5vdGlmeVdo
ZW5Gb250c1JlYWR5KFJlZlB0cjxWb2lkQ2FsbGJhY2s+KTsKIAogICAgIGJvb2wgbG9hZGluZygp
IGNvbnN0IHsgcmV0dXJuIG1fbnVtTG9hZGluZ0Zyb21DU1MgPiAwIHx8IG1fbnVtTG9hZGluZ0Zy
b21KUyA+IDA7IH0KIApAQCAtOTEsNyArOTAsNyBAQCBwcml2YXRlOgogICAgIGNvbnN0IGNoYXIq
IGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGNhblN1c3Bl
bmRGb3JQYWdlQ2FjaGUoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZvaWQgc2NoZWR1bGVFdmVu
dChQYXNzUmVmUHRyPEV2ZW50Pik7CisgICAgdm9pZCBzY2hlZHVsZUV2ZW50KFJlZlB0cjxFdmVu
dD4pOwogICAgIHZvaWQgZmlyZVBlbmRpbmdFdmVudHMoKTsKICAgICBib29sIHJlc29sdmVGb250
U3R5bGUoY29uc3QgU3RyaW5nJiwgRm9udENhc2NhZGUmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL0xlbmd0aFJlcGVhdC5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0xlbmd0aFJl
cGVhdC5oCmluZGV4IGIxMWYwNmIzZWMzYWE1ZmJjNWUxMDAyNTRjOTRkZGY1YTU5ZmYwMTQuLjYx
Mzc1YzQzZmRmMDgzOTZjNDExZDFhODY2NGI4NGNiNmQ5ZTlhNDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9MZW5ndGhSZXBlYXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTGVu
Z3RoUmVwZWF0LmgKQEAgLTM2LDEzICszNiwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIExlbmd0aFJlcGVhdCA6IHB1YmxpYyBSZWZDb3VudGVkPExlbmd0aFJlcGVhdD4gewogcHVi
bGljOgotICAgIHN0YXRpYyBSZWY8TGVuZ3RoUmVwZWF0PiBjcmVhdGUoUGFzc1JlZlB0cjxDU1NW
YWx1ZT4gaW50ZXJ2YWwpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTGVuZ3RoUmVwZWF0KGludGVy
dmFsKSk7IH0KKyAgICBzdGF0aWMgUmVmPExlbmd0aFJlcGVhdD4gY3JlYXRlKFJlZlB0cjxDU1NW
YWx1ZT4gaW50ZXJ2YWwpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTGVuZ3RoUmVwZWF0KGludGVy
dmFsKSk7IH0KIAogICAgIFJlZjxMZW5ndGhSZXBlYXQ+IGNsb25lRm9yQ1NTT00oKSBjb25zdCB7
IHJldHVybiBjcmVhdGUoaW50ZXJ2YWwoKSk7IH0KIAogICAgIENTU1ZhbHVlKiBpbnRlcnZhbCgp
IGNvbnN0IHsgcmV0dXJuIG1faW50ZXJ2YWwuZ2V0KCk7IH0KIAotICAgIHZvaWQgc2V0SW50ZXJ2
YWwoUGFzc1JlZlB0cjxDU1NWYWx1ZT4gaW50ZXJ2YWwpIHsgbV9pbnRlcnZhbCA9IGludGVydmFs
OyB9CisgICAgdm9pZCBzZXRJbnRlcnZhbChSZWZQdHI8Q1NTVmFsdWU+IGludGVydmFsKSB7IG1f
aW50ZXJ2YWwgPSBpbnRlcnZhbDsgfQogCiAgICAgYm9vbCBlcXVhbHMoY29uc3QgTGVuZ3RoUmVw
ZWF0JiBvdGhlcikgY29uc3QKICAgICB7CkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICB9
CiAKIHByaXZhdGU6Ci0gICAgTGVuZ3RoUmVwZWF0KFBhc3NSZWZQdHI8Q1NTVmFsdWU+IGludGVy
dmFsKQorICAgIExlbmd0aFJlcGVhdChSZWZQdHI8Q1NTVmFsdWU+IGludGVydmFsKQogICAgICAg
ICA6IG1faW50ZXJ2YWwoaW50ZXJ2YWwpCiAgICAgewogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9NZWRpYUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYUxpc3Qu
aAppbmRleCA3MzEwMzQwMGI0NjdjYmI0ZWY1YTgwNWU0MmM5MDIyYTBmZTkwNzNhLi4yN2YwYmFl
ZjUzNTJjMzI3YzllMjcxM2I3OWQ5NmMxMDJjYTM1YWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvTWVkaWFMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhTGlzdC5o
CkBAIC0yNCw3ICsyNCw2IEBACiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUg
PG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVm
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvTWVkaWFRdWVyeUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlh
UXVlcnlMaXN0LmNwcAppbmRleCA3YjRmZDAyZGQ1NGI3NGQ0MDE3MmUzMDRiMjBjZGRhYzc5YjBi
ZTdlLi40NWVlZTRkNWE4MWJiODllNzY0NWZiMjFmYzJiZjYzOWUyNTkzNTc3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9NZWRpYVF1ZXJ5TGlzdC5jcHAKQEAgLTI3LDEyICsyNywxMiBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLVJlZjxNZWRpYVF1ZXJ5TGlzdD4gTWVkaWFRdWVyeUxpc3Q6OmNyZWF0
ZShQYXNzUmVmUHRyPE1lZGlhUXVlcnlNYXRjaGVyPiB2ZWN0b3IsIFBhc3NSZWZQdHI8TWVkaWFR
dWVyeVNldD4gbWVkaWEsIGJvb2wgbWF0Y2hlcykKK1JlZjxNZWRpYVF1ZXJ5TGlzdD4gTWVkaWFR
dWVyeUxpc3Q6OmNyZWF0ZShSZWZQdHI8TWVkaWFRdWVyeU1hdGNoZXI+IHZlY3RvciwgUmVmUHRy
PE1lZGlhUXVlcnlTZXQ+IG1lZGlhLCBib29sIG1hdGNoZXMpCiB7CiAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgTWVkaWFRdWVyeUxpc3QodmVjdG9yLCBtZWRpYSwgbWF0Y2hlcykpOwogfQogCi1N
ZWRpYVF1ZXJ5TGlzdDo6TWVkaWFRdWVyeUxpc3QoUGFzc1JlZlB0cjxNZWRpYVF1ZXJ5TWF0Y2hl
cj4gdmVjdG9yLCBQYXNzUmVmUHRyPE1lZGlhUXVlcnlTZXQ+IG1lZGlhLCBib29sIG1hdGNoZXMp
CitNZWRpYVF1ZXJ5TGlzdDo6TWVkaWFRdWVyeUxpc3QoUmVmUHRyPE1lZGlhUXVlcnlNYXRjaGVy
PiB2ZWN0b3IsIFJlZlB0cjxNZWRpYVF1ZXJ5U2V0PiBtZWRpYSwgYm9vbCBtYXRjaGVzKQogICAg
IDogbV9tYXRjaGVyKHZlY3RvcikKICAgICAsIG1fbWVkaWEobWVkaWEpCiAgICAgLCBtX2V2YWx1
YXRpb25Sb3VuZChtX21hdGNoZXItPmV2YWx1YXRpb25Sb3VuZCgpKQpAQCAtNTAsNyArNTAsNyBA
QCBTdHJpbmcgTWVkaWFRdWVyeUxpc3Q6Om1lZGlhKCkgY29uc3QKICAgICByZXR1cm4gbV9tZWRp
YS0+bWVkaWFUZXh0KCk7CiB9CiAKLXZvaWQgTWVkaWFRdWVyeUxpc3Q6OmFkZExpc3RlbmVyKFBh
c3NSZWZQdHI8TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcj4gbGlzdGVuZXIpCit2b2lkIE1lZGlhUXVl
cnlMaXN0OjphZGRMaXN0ZW5lcihSZWZQdHI8TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcj4gbGlzdGVu
ZXIpCiB7CiAgICAgaWYgKCFsaXN0ZW5lcikKICAgICAgICAgcmV0dXJuOwpAQCAtNTgsNyArNTgs
NyBAQCB2b2lkIE1lZGlhUXVlcnlMaXN0OjphZGRMaXN0ZW5lcihQYXNzUmVmUHRyPE1lZGlhUXVl
cnlMaXN0TGlzdGVuZXI+IGxpc3RlbmVyKQogICAgIG1fbWF0Y2hlci0+YWRkTGlzdGVuZXIobGlz
dGVuZXIsIHRoaXMpOwogfQogCi12b2lkIE1lZGlhUXVlcnlMaXN0OjpyZW1vdmVMaXN0ZW5lcihQ
YXNzUmVmUHRyPE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI+IGxpc3RlbmVyKQordm9pZCBNZWRpYVF1
ZXJ5TGlzdDo6cmVtb3ZlTGlzdGVuZXIoUmVmUHRyPE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI+IGxp
c3RlbmVyKQogewogICAgIGlmICghbGlzdGVuZXIpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5TGlzdC5oIGIvU291cmNlL1dlYkNvcmUv
Y3NzL01lZGlhUXVlcnlMaXN0LmgKaW5kZXggNjlhZmE3NmIwZTA2YjAyODQ0NDc5NGNlYzFmMDli
ZTgxNmJhNTY4OS4uOGZjZmM4MzUxMDNhZTMwZWY3NGY1ZTFhNWYzM2VhYmE2NmE1ZTU3NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlMaXN0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL01lZGlhUXVlcnlMaXN0LmgKQEAgLTM4LDE5ICszOCwxOSBAQCBjbGFzcyBN
ZWRpYVF1ZXJ5U2V0OwogCiBjbGFzcyBNZWRpYVF1ZXJ5TGlzdCA6IHB1YmxpYyBSZWZDb3VudGVk
PE1lZGlhUXVlcnlMaXN0PiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxNZWRpYVF1ZXJ5TGlz
dD4gY3JlYXRlKFBhc3NSZWZQdHI8TWVkaWFRdWVyeU1hdGNoZXI+LCBQYXNzUmVmUHRyPE1lZGlh
UXVlcnlTZXQ+LCBib29sKTsKKyAgICBzdGF0aWMgUmVmPE1lZGlhUXVlcnlMaXN0PiBjcmVhdGUo
UmVmUHRyPE1lZGlhUXVlcnlNYXRjaGVyPiwgUmVmUHRyPE1lZGlhUXVlcnlTZXQ+LCBib29sKTsK
ICAgICB+TWVkaWFRdWVyeUxpc3QoKTsKIAogICAgIFN0cmluZyBtZWRpYSgpIGNvbnN0OwogICAg
IGJvb2wgbWF0Y2hlcygpOwogCi0gICAgdm9pZCBhZGRMaXN0ZW5lcihQYXNzUmVmUHRyPE1lZGlh
UXVlcnlMaXN0TGlzdGVuZXI+KTsKLSAgICB2b2lkIHJlbW92ZUxpc3RlbmVyKFBhc3NSZWZQdHI8
TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcj4pOworICAgIHZvaWQgYWRkTGlzdGVuZXIoUmVmUHRyPE1l
ZGlhUXVlcnlMaXN0TGlzdGVuZXI+KTsKKyAgICB2b2lkIHJlbW92ZUxpc3RlbmVyKFJlZlB0cjxN
ZWRpYVF1ZXJ5TGlzdExpc3RlbmVyPik7CiAKICAgICB2b2lkIGV2YWx1YXRlKE1lZGlhUXVlcnlF
dmFsdWF0b3IqLCBib29sJiBub3RpZmljYXRpb25OZWVkZWQpOwogCiBwcml2YXRlOgotICAgIE1l
ZGlhUXVlcnlMaXN0KFBhc3NSZWZQdHI8TWVkaWFRdWVyeU1hdGNoZXI+LCBQYXNzUmVmUHRyPE1l
ZGlhUXVlcnlTZXQ+LCBib29sIG1hdGNoZXMpOworICAgIE1lZGlhUXVlcnlMaXN0KFJlZlB0cjxN
ZWRpYVF1ZXJ5TWF0Y2hlcj4sIFJlZlB0cjxNZWRpYVF1ZXJ5U2V0PiwgYm9vbCBtYXRjaGVzKTsK
ICAgICB2b2lkIHNldE1hdGNoZXMoYm9vbCk7CiAKICAgICBSZWZQdHI8TWVkaWFRdWVyeU1hdGNo
ZXI+IG1fbWF0Y2hlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5
TWF0Y2hlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeU1hdGNoZXIuY3BwCmlu
ZGV4IDRkZTk2MGJmMzAxMDNhY2YwNTdiMWJhNDNiMmM3YjhkZGJmOTQwY2EuLjQ3ZTEwYWMxZWNh
N2IwNzAzYzI1MzRmZWFkODNlOWM0ZjNiNWVjNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9NZWRpYVF1ZXJ5TWF0Y2hlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlh
UXVlcnlNYXRjaGVyLmNwcApAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLU1lZGlhUXVlcnlNYXRjaGVyOjpMaXN0ZW5lcjo6TGlzdGVuZXIoUGFzc1JlZlB0cjxNZWRp
YVF1ZXJ5TGlzdExpc3RlbmVyPiBsaXN0ZW5lciwgUGFzc1JlZlB0cjxNZWRpYVF1ZXJ5TGlzdD4g
cXVlcnkpCitNZWRpYVF1ZXJ5TWF0Y2hlcjo6TGlzdGVuZXI6Okxpc3RlbmVyKFJlZlB0cjxNZWRp
YVF1ZXJ5TGlzdExpc3RlbmVyPiBsaXN0ZW5lciwgUmVmUHRyPE1lZGlhUXVlcnlMaXN0PiBxdWVy
eSkKICAgICA6IG1fbGlzdGVuZXIobGlzdGVuZXIpCiAgICAgLCBtX3F1ZXJ5KHF1ZXJ5KQogewpA
QCAtMTEyLDcgKzExMiw3IEBAIFJlZlB0cjxNZWRpYVF1ZXJ5TGlzdD4gTWVkaWFRdWVyeU1hdGNo
ZXI6Om1hdGNoTWVkaWEoY29uc3QgU3RyaW5nJiBxdWVyeSkKICAgICByZXR1cm4gTWVkaWFRdWVy
eUxpc3Q6OmNyZWF0ZSh0aGlzLCBtZWRpYSwgZXZhbHVhdGUobWVkaWEuZ2V0KCkpKTsKIH0KIAot
dm9pZCBNZWRpYVF1ZXJ5TWF0Y2hlcjo6YWRkTGlzdGVuZXIoUGFzc1JlZlB0cjxNZWRpYVF1ZXJ5
TGlzdExpc3RlbmVyPiBsaXN0ZW5lciwgUGFzc1JlZlB0cjxNZWRpYVF1ZXJ5TGlzdD4gcXVlcnkp
Cit2b2lkIE1lZGlhUXVlcnlNYXRjaGVyOjphZGRMaXN0ZW5lcihSZWZQdHI8TWVkaWFRdWVyeUxp
c3RMaXN0ZW5lcj4gbGlzdGVuZXIsIFJlZlB0cjxNZWRpYVF1ZXJ5TGlzdD4gcXVlcnkpCiB7CiAg
ICAgaWYgKCFtX2RvY3VtZW50KQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvTWVkaWFRdWVyeU1hdGNoZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRp
YVF1ZXJ5TWF0Y2hlci5oCmluZGV4IDhkYWMxNzI2YWVjYjJkNDgxZTNjMTIxNDM0ZDJiZjk2ZTNj
NThhODAuLmMyZmYzY2QyOWNhMGM0ZTM1YzM4ZWE2YzhlOTg2NzdjZTNjMmIyZTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5TWF0Y2hlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5TWF0Y2hlci5oCkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoK
ICAgICB+TWVkaWFRdWVyeU1hdGNoZXIoKTsKICAgICB2b2lkIGRvY3VtZW50RGVzdHJveWVkKCk7
CiAKLSAgICB2b2lkIGFkZExpc3RlbmVyKFBhc3NSZWZQdHI8TWVkaWFRdWVyeUxpc3RMaXN0ZW5l
cj4sIFBhc3NSZWZQdHI8TWVkaWFRdWVyeUxpc3Q+KTsKKyAgICB2b2lkIGFkZExpc3RlbmVyKFJl
ZlB0cjxNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyPiwgUmVmUHRyPE1lZGlhUXVlcnlMaXN0Pik7CiAg
ICAgdm9pZCByZW1vdmVMaXN0ZW5lcihNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKiwgTWVkaWFRdWVy
eUxpc3QqKTsKIAogICAgIFJlZlB0cjxNZWRpYVF1ZXJ5TGlzdD4gbWF0Y2hNZWRpYShjb25zdCBT
dHJpbmcmKTsKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBjbGFzcyBM
aXN0ZW5lciB7CiAgICAgcHVibGljOgotICAgICAgICBMaXN0ZW5lcihQYXNzUmVmUHRyPE1lZGlh
UXVlcnlMaXN0TGlzdGVuZXI+LCBQYXNzUmVmUHRyPE1lZGlhUXVlcnlMaXN0Pik7CisgICAgICAg
IExpc3RlbmVyKFJlZlB0cjxNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyPiwgUmVmUHRyPE1lZGlhUXVl
cnlMaXN0Pik7CiAgICAgICAgIH5MaXN0ZW5lcigpOwogCiAgICAgICAgIHZvaWQgZXZhbHVhdGUo
TWVkaWFRdWVyeUV2YWx1YXRvciopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1Bh
aXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9QYWlyLmgKaW5kZXggZTM2ZWJmMTEyZWE1NWJmMjRk
YjA0M2NiNGI2MmM3MjkxMTc0NTZhNS4uZmU0MGI0NzhkMzEyZmFhMWNhMjY3NWQ5NTY4YjFmMDg4
ZDcwZjVkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1BhaXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvUGFpci5oCkBAIC0yMyw3ICsyMyw2IEBACiAKICNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgogI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlLmgiCi0jaW5jbHVkZSA8
d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9SZWN0
LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUmVjdC5oCmluZGV4IGRkOWNkMDQ1ZGQ2NWU3MGUyNTEz
M2MxMmQ2NTMxOGY2NGY1NDJiYTYuLjMxNzhiZWUzMDNmYWI2NTRjZWFkMDdkMjllNGIzOWNjMzM1
ZTFlMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9SZWN0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL1JlY3QuaApAQCAtMzQsMTAgKzM0LDEwIEBAIHB1YmxpYzoKICAgICBDU1NQ
cmltaXRpdmVWYWx1ZSogYm90dG9tKCkgY29uc3QgeyByZXR1cm4gbV9ib3R0b20uZ2V0KCk7IH0K
ICAgICBDU1NQcmltaXRpdmVWYWx1ZSogbGVmdCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVmdC5nZXQo
KTsgfQogCi0gICAgdm9pZCBzZXRUb3AoUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gdG9w
KSB7IG1fdG9wID0gdG9wOyB9Ci0gICAgdm9pZCBzZXRSaWdodChQYXNzUmVmUHRyPENTU1ByaW1p
dGl2ZVZhbHVlPiByaWdodCkgeyBtX3JpZ2h0ID0gcmlnaHQ7IH0KLSAgICB2b2lkIHNldEJvdHRv
bShQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBib3R0b20pIHsgbV9ib3R0b20gPSBib3R0
b207IH0KLSAgICB2b2lkIHNldExlZnQoUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gbGVm
dCkgeyBtX2xlZnQgPSBsZWZ0OyB9CisgICAgdm9pZCBzZXRUb3AoUmVmUHRyPENTU1ByaW1pdGl2
ZVZhbHVlPiB0b3ApIHsgbV90b3AgPSB0b3A7IH0KKyAgICB2b2lkIHNldFJpZ2h0KFJlZlB0cjxD
U1NQcmltaXRpdmVWYWx1ZT4gcmlnaHQpIHsgbV9yaWdodCA9IHJpZ2h0OyB9CisgICAgdm9pZCBz
ZXRCb3R0b20oUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBib3R0b20pIHsgbV9ib3R0b20gPSBi
b3R0b207IH0KKyAgICB2b2lkIHNldExlZnQoUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBsZWZ0
KSB7IG1fbGVmdCA9IGxlZnQ7IH0KIAogICAgIGJvb2wgZXF1YWxzKGNvbnN0IFJlY3RCYXNlJiBv
dGhlcikgY29uc3QKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NT
Q29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TVkdDU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IGI4MDFkNzBhZmQ2OWJmNWU4NzM3NDVj
NGQxN2U3ZjQwNzRhZGUxODUuLjFjMTlmMjllMDZhZjgzZGViMTM1YmVmOTJhMjE0OTQxNDRiMzAw
NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TVkdDU1NDb21wdXRlZFN0eWxlRGVj
bGFyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TVkdDU1NDb21wdXRlZFN0eWxl
RGVjbGFyYXRpb24uY3BwCkBAIC05Myw3ICs5Myw3IEBAIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+
IHN0cm9rZURhc2hBcnJheVRvQ1NTVmFsdWVMaXN0KGNvbnN0IFZlY3RvcjxTVkdMZW5ndGg+JiBk
CiAgICAgcmV0dXJuIGxpc3Q7CiB9CiAKLVJlZlB0cjxTVkdQYWludD4gQ29tcHV0ZWRTdHlsZUV4
dHJhY3Rvcjo6YWRqdXN0U1ZHUGFpbnRGb3JDdXJyZW50Q29sb3IoUGFzc1JlZlB0cjxTVkdQYWlu
dD4gbmV3UGFpbnQsIFJlbmRlclN0eWxlKiBzdHlsZSkgY29uc3QKK1JlZlB0cjxTVkdQYWludD4g
Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6YWRqdXN0U1ZHUGFpbnRGb3JDdXJyZW50Q29sb3IoUmVm
UHRyPFNWR1BhaW50PiBuZXdQYWludCwgUmVuZGVyU3R5bGUqIHN0eWxlKSBjb25zdAogewogICAg
IFJlZlB0cjxTVkdQYWludD4gcGFpbnQgPSBuZXdQYWludDsKICAgICBpZiAocGFpbnQtPnBhaW50
VHlwZSgpID09IFNWR1BhaW50OjpTVkdfUEFJTlRUWVBFX0NVUlJFTlRDT0xPUiB8fCBwYWludC0+
cGFpbnRUeXBlKCkgPT0gU1ZHUGFpbnQ6OlNWR19QQUlOVFRZUEVfVVJJX0NVUlJFTlRDT0xPUikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaAppbmRleCBlYjAzZmIw
NWRlZDYxZTI4YmI3YmU3YWU3MmZiMTkyYjI2N2IyMDRhLi40ZjdkN2MzYTg1OGQ5NzlmYWMzMDRm
MmUwMjFkZTY3NTU4YzIwZTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVC
dWlsZGVyQ29udmVydGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckNv
bnZlcnRlci5oCkBAIC03MCwyNSArNzAsMjUgQEAgcHVibGljOgogICAgIHN0YXRpYyBzaG9ydCBj
b252ZXJ0V2Via2l0SHlwaGVuYXRlTGltaXRMaW5lcyhTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUm
KTsKICAgICB0ZW1wbGF0ZSA8Q1NTUHJvcGVydHlJRCBwcm9wZXJ0eT4gc3RhdGljIE5pbmVQaWVj
ZUltYWdlIGNvbnZlcnRCb3JkZXJJbWFnZShTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmKTsKICAg
ICB0ZW1wbGF0ZSA8Q1NTUHJvcGVydHlJRCBwcm9wZXJ0eT4gc3RhdGljIE5pbmVQaWVjZUltYWdl
IGNvbnZlcnRCb3JkZXJNYXNrKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYpOwotICAgIHRlbXBs
YXRlIDxDU1NQcm9wZXJ0eUlEIHByb3BlcnR5PiBzdGF0aWMgUGFzc1JlZlB0cjxTdHlsZUltYWdl
PiBjb252ZXJ0U3R5bGVJbWFnZShTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmKTsKKyAgICB0ZW1w
bGF0ZSA8Q1NTUHJvcGVydHlJRCBwcm9wZXJ0eT4gc3RhdGljIFJlZlB0cjxTdHlsZUltYWdlPiBj
b252ZXJ0U3R5bGVJbWFnZShTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmKTsKICAgICBzdGF0aWMg
VHJhbnNmb3JtT3BlcmF0aW9ucyBjb252ZXJ0VHJhbnNmb3JtKFN0eWxlUmVzb2x2ZXImLCBDU1NW
YWx1ZSYpOwogICAgIHN0YXRpYyBTdHJpbmcgY29udmVydFN0cmluZyhTdHlsZVJlc29sdmVyJiwg
Q1NTVmFsdWUmKTsKICAgICBzdGF0aWMgU3RyaW5nIGNvbnZlcnRTdHJpbmdPckF1dG8oU3R5bGVS
ZXNvbHZlciYsIENTU1ZhbHVlJik7CiAgICAgc3RhdGljIFN0cmluZyBjb252ZXJ0U3RyaW5nT3JO
b25lKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYpOwogICAgIHN0YXRpYyBUZXh0RW1waGFzaXNQ
b3NpdGlvbiBjb252ZXJ0VGV4dEVtcGhhc2lzUG9zaXRpb24oU3R5bGVSZXNvbHZlciYsIENTU1Zh
bHVlJik7CiAgICAgc3RhdGljIEVUZXh0QWxpZ24gY29udmVydFRleHRBbGlnbihTdHlsZVJlc29s
dmVyJiwgQ1NTVmFsdWUmKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxDbGlwUGF0aE9wZXJhdGlv
bj4gY29udmVydENsaXBQYXRoKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYpOworICAgIHN0YXRp
YyBSZWZQdHI8Q2xpcFBhdGhPcGVyYXRpb24+IGNvbnZlcnRDbGlwUGF0aChTdHlsZVJlc29sdmVy
JiwgQ1NTVmFsdWUmKTsKICAgICBzdGF0aWMgRVJlc2l6ZSBjb252ZXJ0UmVzaXplKFN0eWxlUmVz
b2x2ZXImLCBDU1NWYWx1ZSYpOwogICAgIHN0YXRpYyBpbnQgY29udmVydE1hcnF1ZWVSZXBldGl0
aW9uKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYpOwogICAgIHN0YXRpYyBpbnQgY29udmVydE1h
cnF1ZWVTcGVlZChTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmKTsKLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxRdW90ZXNEYXRhPiBjb252ZXJ0UXVvdGVzKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYp
OworICAgIHN0YXRpYyBSZWZQdHI8UXVvdGVzRGF0YT4gY29udmVydFF1b3RlcyhTdHlsZVJlc29s
dmVyJiwgQ1NTVmFsdWUmKTsKICAgICBzdGF0aWMgVGV4dFVuZGVybGluZVBvc2l0aW9uIGNvbnZl
cnRUZXh0VW5kZXJsaW5lUG9zaXRpb24oU3R5bGVSZXNvbHZlciYsIENTU1ZhbHVlJik7Ci0gICAg
c3RhdGljIFBhc3NSZWZQdHI8U3R5bGVSZWZsZWN0aW9uPiBjb252ZXJ0UmVmbGVjdGlvbihTdHls
ZVJlc29sdmVyJiwgQ1NTVmFsdWUmKTsKKyAgICBzdGF0aWMgUmVmUHRyPFN0eWxlUmVmbGVjdGlv
bj4gY29udmVydFJlZmxlY3Rpb24oU3R5bGVSZXNvbHZlciYsIENTU1ZhbHVlJik7CiAgICAgc3Rh
dGljIEludFNpemUgY29udmVydEluaXRpYWxMZXR0ZXIoU3R5bGVSZXNvbHZlciYsIENTU1ZhbHVl
Jik7CiAgICAgc3RhdGljIGZsb2F0IGNvbnZlcnRUZXh0U3Ryb2tlV2lkdGgoU3R5bGVSZXNvbHZl
ciYsIENTU1ZhbHVlJik7CiAgICAgc3RhdGljIExpbmVCb3hDb250YWluIGNvbnZlcnRMaW5lQm94
Q29udGFpbihTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmKTsKICAgICBzdGF0aWMgVGV4dERlY29y
YXRpb25Ta2lwIGNvbnZlcnRUZXh0RGVjb3JhdGlvblNraXAoU3R5bGVSZXNvbHZlciYsIENTU1Zh
bHVlJik7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U2hhcGVWYWx1ZT4gY29udmVydFNoYXBlVmFs
dWUoU3R5bGVSZXNvbHZlciYsIENTU1ZhbHVlJik7CisgICAgc3RhdGljIFJlZlB0cjxTaGFwZVZh
bHVlPiBjb252ZXJ0U2hhcGVWYWx1ZShTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmKTsKICNpZiBF
TkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xs
U25hcFBvaW50cz4gY29udmVydFNjcm9sbFNuYXBQb2ludHMoU3R5bGVSZXNvbHZlciYsIENTU1Zh
bHVlJik7CiAgICAgc3RhdGljIExlbmd0aFNpemUgY29udmVydFNuYXBDb29yZGluYXRlUGFpcihT
dHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmLCBzaXplX3Qgb2Zmc2V0ID0gMCk7CkBAIC0zMzMsNyAr
MzMzLDcgQEAgaW5saW5lIE5pbmVQaWVjZUltYWdlIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29u
dmVydEJvcmRlck1hc2soU3R5bGVSZXNvbHZlciYgc3QKIH0KIAogdGVtcGxhdGUgPENTU1Byb3Bl
cnR5SUQgcHJvcGVydHk+Ci1pbmxpbmUgUGFzc1JlZlB0cjxTdHlsZUltYWdlPiBTdHlsZUJ1aWxk
ZXJDb252ZXJ0ZXI6OmNvbnZlcnRTdHlsZUltYWdlKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2
ZXIsIENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBSZWZQdHI8U3R5bGVJbWFnZT4gU3R5bGVCdWls
ZGVyQ29udmVydGVyOjpjb252ZXJ0U3R5bGVJbWFnZShTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29s
dmVyLCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgcmV0dXJuIHN0eWxlUmVzb2x2ZXIuc3R5bGVJ
bWFnZShwcm9wZXJ0eSwgdmFsdWUpOwogfQpAQCAtNDEyLDcgKzQxMiw3IEBAIGlubGluZSBFVGV4
dEFsaWduIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRleHRBbGlnbihTdHlsZVJlc29s
dmVyJiBzdHlsZVJlCiAgICAgcmV0dXJuIHBhcmVudFN0eWxlLT50ZXh0QWxpZ24oKTsKIH0KIAot
aW5saW5lIFBhc3NSZWZQdHI8Q2xpcFBhdGhPcGVyYXRpb24+IFN0eWxlQnVpbGRlckNvbnZlcnRl
cjo6Y29udmVydENsaXBQYXRoKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVl
JiB2YWx1ZSkKK2lubGluZSBSZWZQdHI8Q2xpcFBhdGhPcGVyYXRpb24+IFN0eWxlQnVpbGRlckNv
bnZlcnRlcjo6Y29udmVydENsaXBQYXRoKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIENT
U1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBpZiAoaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSkg
ewogICAgICAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlPih2YWx1ZSk7CkBAIC01MDksNyArNTA5LDcgQEAgaW5saW5lIGludCBTdHlsZUJ1aWxkZXJD
b252ZXJ0ZXI6OmNvbnZlcnRNYXJxdWVlU3BlZWQoU3R5bGVSZXNvbHZlciYsIENTU1ZhbHVlJgog
ICAgIHJldHVybiBzcGVlZDsKIH0KIAotaW5saW5lIFBhc3NSZWZQdHI8UXVvdGVzRGF0YT4gU3R5
bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UXVvdGVzKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1
ZSYgdmFsdWUpCitpbmxpbmUgUmVmUHRyPFF1b3Rlc0RhdGE+IFN0eWxlQnVpbGRlckNvbnZlcnRl
cjo6Y29udmVydFF1b3RlcyhTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmIHZhbHVlKQogewogICAg
IGlmIChpczxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpKSB7CiAgICAgICAgIEFTU0VSVChkb3du
Y2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5v
bmUpOwpAQCAtNTQ2LDcgKzU0Niw3IEBAIGlubGluZSBUZXh0VW5kZXJsaW5lUG9zaXRpb24gU3R5
bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VGV4dFVuZGVybGluZVBvc2l0aW9uCiAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PFRleHRVbmRlcmxpbmVQb3NpdGlvbj4oY29tYmluZWRQb3NpdGlvbik7
CiB9CiAKLWlubGluZSBQYXNzUmVmUHRyPFN0eWxlUmVmbGVjdGlvbj4gU3R5bGVCdWlsZGVyQ29u
dmVydGVyOjpjb252ZXJ0UmVmbGVjdGlvbihTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBD
U1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgUmVmUHRyPFN0eWxlUmVmbGVjdGlvbj4gU3R5bGVCdWls
ZGVyQ29udmVydGVyOjpjb252ZXJ0UmVmbGVjdGlvbihTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29s
dmVyLCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgaWYgKGlzPENTU1ByaW1pdGl2ZVZhbHVlPih2
YWx1ZSkpIHsKICAgICAgICAgQVNTRVJUKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1
ZSkuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVlTm9uZSk7CkBAIC02NjYsNyArNjY2LDcgQEAgc3Rh
dGljIGlubGluZSBib29sIGlzSW1hZ2VTaGFwZShjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiAgICAg
ICAgIHx8IGlzPENTU0ltYWdlR2VuZXJhdG9yVmFsdWU+KHZhbHVlKTsKIH0KIAotaW5saW5lIFBh
c3NSZWZQdHI8U2hhcGVWYWx1ZT4gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0U2hhcGVW
YWx1ZShTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxp
bmUgUmVmUHRyPFNoYXBlVmFsdWU+IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFNoYXBl
VmFsdWUoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgQ1NTVmFsdWUmIHZhbHVlKQogewog
ICAgIGlmIChpczxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpKSB7CiAgICAgICAgIEFTU0VSVChk
b3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1
ZU5vbmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcAppbmRleCBkZWRkMDcw
MDdhZTVlOTVlM2E0ZTQ4ODQyMWU4OGE1YWVkMzdkMzY0Li5kN2Y2NzkxZTdkZDA3MWIxMDU3ZmUx
MDY5ZTlmNTQxY2NmMDQ3OTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQ
cm9wZXJ0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmNw
cApAQCAtNTc5LDcgKzU3OSw3IEBAIFN0cmluZyBTdHlsZVByb3BlcnRpZXM6OmJvcmRlclByb3Bl
cnR5VmFsdWUoQ29tbW9uVmFsdWVNb2RlIHZhbHVlTW9kZSkgY29uc3QKICAgICByZXR1cm4gcmVz
dWx0LmlzRW1wdHkoKSA/IFN0cmluZygpIDogcmVzdWx0LnRvU3RyaW5nKCk7CiB9CiAKLVBhc3NS
ZWZQdHI8Q1NTVmFsdWU+IFN0eWxlUHJvcGVydGllczo6Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQ
cm9wZXJ0eUlEIHByb3BlcnR5SUQpIGNvbnN0CitSZWZQdHI8Q1NTVmFsdWU+IFN0eWxlUHJvcGVy
dGllczo6Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQpIGNvbnN0
CiB7CiAgICAgaW50IGZvdW5kUHJvcGVydHlJbmRleCA9IGZpbmRQcm9wZXJ0eUluZGV4KHByb3Bl
cnR5SUQpOwogICAgIGlmIChmb3VuZFByb3BlcnR5SW5kZXggPT0gLTEpCkBAIC02ODQsNyArNjg0
LDcgQEAgYm9vbCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpzZXRQcm9wZXJ0eShDU1NQcm9wZXJ0
eUlEIHByb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYKICAgICByZXR1cm4gQ1NTUGFyc2VyOjpwYXJz
ZVZhbHVlKHRoaXMsIHByb3BlcnR5SUQsIHZhbHVlLCBpbXBvcnRhbnQsIGNzc1BhcnNlck1vZGUo
KSwgY29udGV4dFN0eWxlU2hlZXQpID09IENTU1BhcnNlcjo6UGFyc2VSZXN1bHQ6OkNoYW5nZWQ7
CiB9CiAKLXZvaWQgTXV0YWJsZVN0eWxlUHJvcGVydGllczo6c2V0UHJvcGVydHkoQ1NTUHJvcGVy
dHlJRCBwcm9wZXJ0eUlELCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBwcnBWYWx1ZSwgYm9vbCBpbXBv
cnRhbnQpCit2b2lkIE11dGFibGVTdHlsZVByb3BlcnRpZXM6OnNldFByb3BlcnR5KENTU1Byb3Bl
cnR5SUQgcHJvcGVydHlJRCwgUmVmUHRyPENTU1ZhbHVlPiBwcnBWYWx1ZSwgYm9vbCBpbXBvcnRh
bnQpCiB7CiAgICAgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCBzaG9ydGhhbmQgPSBzaG9ydGhhbmRG
b3JQcm9wZXJ0eShwcm9wZXJ0eUlEKTsKICAgICBpZiAoIXNob3J0aGFuZC5sZW5ndGgoKSkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5oIGIvU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5oCmluZGV4IDZmMzAyNGM3ZGM4MjgyMWYzZWZm
ZTJlM2U1Mjg2NDgxOGIwNTRiYzEuLmE2NzY2NzI5YWNkZWQxM2ZjNjEwNmYwNDg1YmMxYTVjN2Nl
N2ZlNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmgKQEAgLTg2LDcgKzg2LDcg
QEAgcHVibGljOgogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFwcm9wZXJ0eUNv
dW50KCk7IH0KICAgICBQcm9wZXJ0eVJlZmVyZW5jZSBwcm9wZXJ0eUF0KHVuc2lnbmVkKSBjb25z
dDsKIAotICAgIFdFQkNPUkVfRVhQT1JUIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IGdldFByb3BlcnR5
Q1NTVmFsdWUoQ1NTUHJvcGVydHlJRCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRy
PENTU1ZhbHVlPiBnZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5SUQpIGNvbnN0OwogICAg
IFdFQkNPUkVfRVhQT1JUIFN0cmluZyBnZXRQcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQpIGNv
bnN0OwogICAgIGJvb2wgcHJvcGVydHlJc0ltcG9ydGFudChDU1NQcm9wZXJ0eUlEKSBjb25zdDsK
ICAgICBTdHJpbmcgZ2V0UHJvcGVydHlTaG9ydGhhbmQoQ1NTUHJvcGVydHlJRCkgY29uc3Q7CkBA
IC0xOTgsNyArMTk4LDcgQEAgcHVibGljOgogCiAgICAgLy8gVGhlc2UgZXhwYW5kIHNob3J0aGFu
ZCBwcm9wZXJ0aWVzIGludG8gbXVsdGlwbGUgcHJvcGVydGllcy4KICAgICBib29sIHNldFByb3Bl
cnR5KENTU1Byb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgdmFsdWUsIGJvb2wgaW1wb3J0YW50ID0g
ZmFsc2UsIFN0eWxlU2hlZXRDb250ZW50cyogY29udGV4dFN0eWxlU2hlZXQgPSAwKTsKLSAgICB2
b2lkIHNldFByb3BlcnR5KENTU1Byb3BlcnR5SUQsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+LCBib29s
IGltcG9ydGFudCA9IGZhbHNlKTsKKyAgICB2b2lkIHNldFByb3BlcnR5KENTU1Byb3BlcnR5SUQs
IFJlZlB0cjxDU1NWYWx1ZT4sIGJvb2wgaW1wb3J0YW50ID0gZmFsc2UpOwogCiAgICAgLy8gVGhl
c2UgZG8gbm90LiBGSVhNRTogVGhpcyBpcyB0b28gbWVzc3ksIHdlIGNhbiBkbyBiZXR0ZXIuCiAg
ICAgYm9vbCBzZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUlELCBDU1NWYWx1ZUlEIGlkZW50aWZpZXIs
IGJvb2wgaW1wb3J0YW50ID0gZmFsc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3Bw
CmluZGV4IDQ2NzNjODVjNzhhNDFmNmNjNTU0ODgzZjdiZDIwNDU5NDIzNWZjNzEuLjEyOGQwNzI2
Y2Y5YjU3NDRlOWNiZDA5OWE1MzQ3NWVkNjgyOGVkMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVS
ZXNvbHZlci5jcHAKQEAgLTM2Miw3ICszNjIsNyBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OnBvcFBh
cmVudEVsZW1lbnQoRWxlbWVudCogcGFyZW50KQogfQogCiAvLyBUaGlzIGlzIGEgc2ltcGxpZmll
ZCBzdHlsZSBzZXR0aW5nIGZ1bmN0aW9uIGZvciBrZXlmcmFtZSBzdHlsZXMKLXZvaWQgU3R5bGVS
ZXNvbHZlcjo6YWRkS2V5ZnJhbWVTdHlsZShQYXNzUmVmUHRyPFN0eWxlUnVsZUtleWZyYW1lcz4g
cnVsZSkKK3ZvaWQgU3R5bGVSZXNvbHZlcjo6YWRkS2V5ZnJhbWVTdHlsZShSZWZQdHI8U3R5bGVS
dWxlS2V5ZnJhbWVzPiBydWxlKQogewogICAgIEF0b21pY1N0cmluZyBzKHJ1bGUtPm5hbWUoKSk7
CiAgICAgbV9rZXlmcmFtZXNSdWxlTWFwLnNldChzLmltcGwoKSwgcnVsZSk7CkBAIC05NTMsNyAr
OTUzLDcgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjprZXlmcmFtZVN0eWxlc0ZvckFuaW1hdGlvbihF
bGVtZW50KiBlLCBjb25zdCBSZW5kZXJTdHlsZSogZWwKICAgICB9CiB9CiAKLVBhc3NSZWZQdHI8
UmVuZGVyU3R5bGU+IFN0eWxlUmVzb2x2ZXI6OnBzZXVkb1N0eWxlRm9yRWxlbWVudChFbGVtZW50
KiBlbGVtZW50LCBjb25zdCBQc2V1ZG9TdHlsZVJlcXVlc3QmIHBzZXVkb1N0eWxlUmVxdWVzdCwg
UmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlKQorUmVmUHRyPFJlbmRlclN0eWxlPiBTdHlsZVJlc29s
dmVyOjpwc2V1ZG9TdHlsZUZvckVsZW1lbnQoRWxlbWVudCogZWxlbWVudCwgY29uc3QgUHNldWRv
U3R5bGVSZXF1ZXN0JiBwc2V1ZG9TdHlsZVJlcXVlc3QsIFJlbmRlclN0eWxlKiBwYXJlbnRTdHls
ZSkKIHsKICAgICBBU1NFUlQocGFyZW50U3R5bGUpOwogICAgIGlmICghZWxlbWVudCkKQEAgLTE5
MDIsNyArMTkwMiw3IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlQcm9wZXJ0eShDU1NQcm9w
ZXJ0eUlEIGlkLCBDU1NWYWx1ZSogdmFsdWUpCiAgICAgU3R5bGVCdWlsZGVyOjphcHBseVByb3Bl
cnR5KGlkLCAqdGhpcywgKnZhbHVlLCBpc0luaXRpYWwsIGlzSW5oZXJpdCk7CiB9CiAKLVBhc3NS
ZWZQdHI8U3R5bGVJbWFnZT4gU3R5bGVSZXNvbHZlcjo6c3R5bGVJbWFnZShDU1NQcm9wZXJ0eUlE
IHByb3BlcnR5LCBDU1NWYWx1ZSYgdmFsdWUpCitSZWZQdHI8U3R5bGVJbWFnZT4gU3R5bGVSZXNv
bHZlcjo6c3R5bGVJbWFnZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBDU1NWYWx1ZSYgdmFsdWUp
CiB7CiAgICAgaWYgKGlzPENTU0ltYWdlVmFsdWU+KHZhbHVlKSkKICAgICAgICAgcmV0dXJuIGNh
Y2hlZE9yUGVuZGluZ0Zyb21WYWx1ZShwcm9wZXJ0eSwgZG93bmNhc3Q8Q1NTSW1hZ2VWYWx1ZT4o
dmFsdWUpKTsKQEAgLTE5MjQsMTUgKzE5MjQsMTUgQEAgUGFzc1JlZlB0cjxTdHlsZUltYWdlPiBT
dHlsZVJlc29sdmVyOjpzdHlsZUltYWdlKENTU1Byb3BlcnR5SUQgcHJvcGVydHksIENTU1ZhbHUK
ICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUGFzc1JlZlB0cjxTdHlsZUltYWdlPiBTdHlsZVJl
c29sdmVyOjpjYWNoZWRPclBlbmRpbmdGcm9tVmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwg
Q1NTSW1hZ2VWYWx1ZSYgdmFsdWUpCitSZWZQdHI8U3R5bGVJbWFnZT4gU3R5bGVSZXNvbHZlcjo6
Y2FjaGVkT3JQZW5kaW5nRnJvbVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHksIENTU0ltYWdl
VmFsdWUmIHZhbHVlKQogewogICAgIFJlZlB0cjxTdHlsZUltYWdlPiBpbWFnZSA9IHZhbHVlLmNh
Y2hlZE9yUGVuZGluZ0ltYWdlKCk7CiAgICAgaWYgKGltYWdlICYmIGltYWdlLT5pc1BlbmRpbmdJ
bWFnZSgpKQogICAgICAgICBtX3N0YXRlLnBlbmRpbmdJbWFnZVByb3BlcnRpZXMoKS5zZXQocHJv
cGVydHksICZ2YWx1ZSk7Ci0gICAgcmV0dXJuIGltYWdlLnJlbGVhc2UoKTsKKyAgICByZXR1cm4g
aW1hZ2U7CiB9CiAKLVBhc3NSZWZQdHI8U3R5bGVJbWFnZT4gU3R5bGVSZXNvbHZlcjo6Z2VuZXJh
dGVkT3JQZW5kaW5nRnJvbVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHksIENTU0ltYWdlR2Vu
ZXJhdG9yVmFsdWUmIHZhbHVlKQorUmVmPFN0eWxlSW1hZ2U+IFN0eWxlUmVzb2x2ZXI6OmdlbmVy
YXRlZE9yUGVuZGluZ0Zyb21WYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBDU1NJbWFnZUdl
bmVyYXRvclZhbHVlJiB2YWx1ZSkKIHsKICAgICBpZiAoaXM8Q1NTRmlsdGVySW1hZ2VWYWx1ZT4o
dmFsdWUpKSB7CiAgICAgICAgIC8vIEZpbHRlckltYWdlIG5lZWRzIHRvIGNhbGN1bGF0ZSBGaWx0
ZXJPcGVyYXRpb25zLgpAQCAtMTk0Nyw3ICsxOTQ3LDcgQEAgUGFzc1JlZlB0cjxTdHlsZUltYWdl
PiBTdHlsZVJlc29sdmVyOjpnZW5lcmF0ZWRPclBlbmRpbmdGcm9tVmFsdWUoQ1NTUHJvcGVydHlJ
RAogfQogCiAjaWYgRU5BQkxFKENTU19JTUFHRV9TRVQpCi1QYXNzUmVmUHRyPFN0eWxlSW1hZ2U+
IFN0eWxlUmVzb2x2ZXI6OnNldE9yUGVuZGluZ0Zyb21WYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3Bl
cnR5LCBDU1NJbWFnZVNldFZhbHVlJiB2YWx1ZSkKK1JlZlB0cjxTdHlsZUltYWdlPiBTdHlsZVJl
c29sdmVyOjpzZXRPclBlbmRpbmdGcm9tVmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwgQ1NT
SW1hZ2VTZXRWYWx1ZSYgdmFsdWUpCiB7CiAgICAgUmVmUHRyPFN0eWxlSW1hZ2U+IGltYWdlID0g
dmFsdWUuY2FjaGVkT3JQZW5kaW5nSW1hZ2VTZXQoZG9jdW1lbnQoKSk7CiAgICAgaWYgKGltYWdl
ICYmIGltYWdlLT5pc1BlbmRpbmdJbWFnZSgpKQpAQCAtMTk1Niw3ICsxOTU2LDcgQEAgUGFzc1Jl
ZlB0cjxTdHlsZUltYWdlPiBTdHlsZVJlc29sdmVyOjpzZXRPclBlbmRpbmdGcm9tVmFsdWUoQ1NT
UHJvcGVydHlJRCBwcm9wZXIKIH0KICNlbmRpZgogCi1QYXNzUmVmUHRyPFN0eWxlSW1hZ2U+IFN0
eWxlUmVzb2x2ZXI6OmN1cnNvck9yUGVuZGluZ0Zyb21WYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3Bl
cnR5LCBDU1NDdXJzb3JJbWFnZVZhbHVlJiB2YWx1ZSkKK1JlZlB0cjxTdHlsZUltYWdlPiBTdHls
ZVJlc29sdmVyOjpjdXJzb3JPclBlbmRpbmdGcm9tVmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0
eSwgQ1NTQ3Vyc29ySW1hZ2VWYWx1ZSYgdmFsdWUpCiB7CiAgICAgUmVmUHRyPFN0eWxlSW1hZ2U+
IGltYWdlID0gdmFsdWUuY2FjaGVkT3JQZW5kaW5nSW1hZ2UoZG9jdW1lbnQoKSk7CiAgICAgaWYg
KGltYWdlICYmIGltYWdlLT5pc1BlbmRpbmdJbWFnZSgpKQpAQCAtMjMyMiw3ICsyMzIyLDcgQEAg
Ym9vbCBTdHlsZVJlc29sdmVyOjpjcmVhdGVGaWx0ZXJPcGVyYXRpb25zKENTU1ZhbHVlJiBpblZh
bHVlLCBGaWx0ZXJPcGVyYXRpb25zJgogICAgIHJldHVybiB0cnVlOwogfQogCi1QYXNzUmVmUHRy
PFN0eWxlSW1hZ2U+IFN0eWxlUmVzb2x2ZXI6OmxvYWRQZW5kaW5nSW1hZ2UoY29uc3QgU3R5bGVQ
ZW5kaW5nSW1hZ2UmIHBlbmRpbmdJbWFnZSwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiBv
cHRpb25zKQorUmVmUHRyPFN0eWxlSW1hZ2U+IFN0eWxlUmVzb2x2ZXI6OmxvYWRQZW5kaW5nSW1h
Z2UoY29uc3QgU3R5bGVQZW5kaW5nSW1hZ2UmIHBlbmRpbmdJbWFnZSwgY29uc3QgUmVzb3VyY2VM
b2FkZXJPcHRpb25zJiBvcHRpb25zKQogewogICAgIGlmIChhdXRvIGltYWdlVmFsdWUgPSBwZW5k
aW5nSW1hZ2UuY3NzSW1hZ2VWYWx1ZSgpKQogICAgICAgICByZXR1cm4gaW1hZ2VWYWx1ZS0+Y2Fj
aGVkSW1hZ2UobV9zdGF0ZS5kb2N1bWVudCgpLmNhY2hlZFJlc291cmNlTG9hZGVyKCksIG9wdGlv
bnMpOwpAQCAtMjM0Myw3ICsyMzQzLDcgQEAgUGFzc1JlZlB0cjxTdHlsZUltYWdlPiBTdHlsZVJl
c29sdmVyOjpsb2FkUGVuZGluZ0ltYWdlKGNvbnN0IFN0eWxlUGVuZGluZ0ltYWdlJgogICAgIHJl
dHVybiBudWxscHRyOwogfQogCi1QYXNzUmVmUHRyPFN0eWxlSW1hZ2U+IFN0eWxlUmVzb2x2ZXI6
OmxvYWRQZW5kaW5nSW1hZ2UoY29uc3QgU3R5bGVQZW5kaW5nSW1hZ2UmIHBlbmRpbmdJbWFnZSkK
K1JlZlB0cjxTdHlsZUltYWdlPiBTdHlsZVJlc29sdmVyOjpsb2FkUGVuZGluZ0ltYWdlKGNvbnN0
IFN0eWxlUGVuZGluZ0ltYWdlJiBwZW5kaW5nSW1hZ2UpCiB7CiAgICAgUmVzb3VyY2VMb2FkZXJP
cHRpb25zIG9wdGlvbnMgPSBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6ZGVmYXVsdENhY2hlZFJlc291
cmNlT3B0aW9ucygpOwogICAgIG9wdGlvbnMuc2V0Q29udGVudFNlY3VyaXR5UG9saWN5SW1wb3Np
dGlvbihtX3N0YXRlLmVsZW1lbnQoKSAmJiBtX3N0YXRlLmVsZW1lbnQoKS0+aXNJblVzZXJBZ2Vu
dFNoYWRvd1RyZWUoKSA/IENvbnRlbnRTZWN1cml0eVBvbGljeUltcG9zaXRpb246OlNraXBQb2xp
Y3lDaGVjayA6IENvbnRlbnRTZWN1cml0eVBvbGljeUltcG9zaXRpb246OkRvUG9saWN5Q2hlY2sp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgKaW5kZXggYWRkNTQyNWQ3ZmRiNThkMTE5ZTk4
NDYyYjhlMDYzN2E5ZmRjZWY5MS4uZGQ0Yjg0ZjBiMzJmNzk3ODUwYmYxNGRkMDk5OWYxZTc2Zjg1
NTM5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCkBAIC0xNTAsNyArMTUwLDcgQEAg
cHVibGljOgogCiAgICAgdm9pZCBrZXlmcmFtZVN0eWxlc0ZvckFuaW1hdGlvbihFbGVtZW50Kiwg
Y29uc3QgUmVuZGVyU3R5bGUqLCBLZXlmcmFtZUxpc3QmKTsKIAotICAgIFBhc3NSZWZQdHI8UmVu
ZGVyU3R5bGU+IHBzZXVkb1N0eWxlRm9yRWxlbWVudChFbGVtZW50KiwgY29uc3QgUHNldWRvU3R5
bGVSZXF1ZXN0JiwgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlKTsKKyAgICBSZWZQdHI8UmVuZGVy
U3R5bGU+IHBzZXVkb1N0eWxlRm9yRWxlbWVudChFbGVtZW50KiwgY29uc3QgUHNldWRvU3R5bGVS
ZXF1ZXN0JiwgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlKTsKIAogICAgIFJlZjxSZW5kZXJTdHls
ZT4gc3R5bGVGb3JQYWdlKGludCBwYWdlSW5kZXgpOwogICAgIFJlZjxSZW5kZXJTdHlsZT4gZGVm
YXVsdFN0eWxlRm9yRWxlbWVudCgpOwpAQCAtMjI0LDcgKzIyNCw3IEBAIHB1YmxpYzoKICAgICBi
b29sIGhhc1ZpZXdwb3J0RGVwZW5kZW50TWVkaWFRdWVyaWVzKCkgY29uc3QgeyByZXR1cm4gIW1f
dmlld3BvcnREZXBlbmRlbnRNZWRpYVF1ZXJ5UmVzdWx0cy5pc0VtcHR5KCk7IH0KICAgICBib29s
IGhhc01lZGlhUXVlcmllc0FmZmVjdGVkQnlWaWV3cG9ydENoYW5nZSgpIGNvbnN0OwogCi0gICAg
dm9pZCBhZGRLZXlmcmFtZVN0eWxlKFBhc3NSZWZQdHI8U3R5bGVSdWxlS2V5ZnJhbWVzPik7Cisg
ICAgdm9pZCBhZGRLZXlmcmFtZVN0eWxlKFJlZlB0cjxTdHlsZVJ1bGVLZXlmcmFtZXM+KTsKIAog
ICAgIGJvb2wgY2hlY2tSZWdpb25TdHlsZShFbGVtZW50KiByZWdpb25FbGVtZW50KTsKIApAQCAt
NDQyLDEzICs0NDIsMTMgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFJlbmRlclN0eWxlKiBzdHls
ZU5vdFlldEF2YWlsYWJsZSgpIHsgcmV0dXJuIHNfc3R5bGVOb3RZZXRBdmFpbGFibGU7IH0KIAot
ICAgIFBhc3NSZWZQdHI8U3R5bGVJbWFnZT4gc3R5bGVJbWFnZShDU1NQcm9wZXJ0eUlELCBDU1NW
YWx1ZSYpOwotICAgIFBhc3NSZWZQdHI8U3R5bGVJbWFnZT4gY2FjaGVkT3JQZW5kaW5nRnJvbVZh
bHVlKENTU1Byb3BlcnR5SUQsIENTU0ltYWdlVmFsdWUmKTsKLSAgICBQYXNzUmVmUHRyPFN0eWxl
SW1hZ2U+IGdlbmVyYXRlZE9yUGVuZGluZ0Zyb21WYWx1ZShDU1NQcm9wZXJ0eUlELCBDU1NJbWFn
ZUdlbmVyYXRvclZhbHVlJik7CisgICAgUmVmUHRyPFN0eWxlSW1hZ2U+IHN0eWxlSW1hZ2UoQ1NT
UHJvcGVydHlJRCwgQ1NTVmFsdWUmKTsKKyAgICBSZWZQdHI8U3R5bGVJbWFnZT4gY2FjaGVkT3JQ
ZW5kaW5nRnJvbVZhbHVlKENTU1Byb3BlcnR5SUQsIENTU0ltYWdlVmFsdWUmKTsKKyAgICBSZWY8
U3R5bGVJbWFnZT4gZ2VuZXJhdGVkT3JQZW5kaW5nRnJvbVZhbHVlKENTU1Byb3BlcnR5SUQsIENT
U0ltYWdlR2VuZXJhdG9yVmFsdWUmKTsKICNpZiBFTkFCTEUoQ1NTX0lNQUdFX1NFVCkKLSAgICBQ
YXNzUmVmUHRyPFN0eWxlSW1hZ2U+IHNldE9yUGVuZGluZ0Zyb21WYWx1ZShDU1NQcm9wZXJ0eUlE
LCBDU1NJbWFnZVNldFZhbHVlJik7CisgICAgUmVmUHRyPFN0eWxlSW1hZ2U+IHNldE9yUGVuZGlu
Z0Zyb21WYWx1ZShDU1NQcm9wZXJ0eUlELCBDU1NJbWFnZVNldFZhbHVlJik7CiAjZW5kaWYKLSAg
ICBQYXNzUmVmUHRyPFN0eWxlSW1hZ2U+IGN1cnNvck9yUGVuZGluZ0Zyb21WYWx1ZShDU1NQcm9w
ZXJ0eUlELCBDU1NDdXJzb3JJbWFnZVZhbHVlJik7CisgICAgUmVmUHRyPFN0eWxlSW1hZ2U+IGN1
cnNvck9yUGVuZGluZ0Zyb21WYWx1ZShDU1NQcm9wZXJ0eUlELCBDU1NDdXJzb3JJbWFnZVZhbHVl
Jik7CiAKICAgICBib29sIGFwcGx5UHJvcGVydHlUb1JlZ3VsYXJTdHlsZSgpIGNvbnN0IHsgcmV0
dXJuIG1fc3RhdGUuYXBwbHlQcm9wZXJ0eVRvUmVndWxhclN0eWxlKCk7IH0KICAgICBib29sIGFw
cGx5UHJvcGVydHlUb1Zpc2l0ZWRMaW5rU3R5bGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmFw
cGx5UHJvcGVydHlUb1Zpc2l0ZWRMaW5rU3R5bGUoKTsgfQpAQCAtNDc0LDggKzQ3NCw4IEBAIHBy
aXZhdGU6CiAKICAgICB2b2lkIGFwcGx5U1ZHUHJvcGVydHkoQ1NTUHJvcGVydHlJRCwgQ1NTVmFs
dWUqKTsKIAotICAgIFBhc3NSZWZQdHI8U3R5bGVJbWFnZT4gbG9hZFBlbmRpbmdJbWFnZShjb25z
dCBTdHlsZVBlbmRpbmdJbWFnZSYsIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYpOwotICAg
IFBhc3NSZWZQdHI8U3R5bGVJbWFnZT4gbG9hZFBlbmRpbmdJbWFnZShjb25zdCBTdHlsZVBlbmRp
bmdJbWFnZSYpOworICAgIFJlZlB0cjxTdHlsZUltYWdlPiBsb2FkUGVuZGluZ0ltYWdlKGNvbnN0
IFN0eWxlUGVuZGluZ0ltYWdlJiwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJik7CisgICAg
UmVmUHRyPFN0eWxlSW1hZ2U+IGxvYWRQZW5kaW5nSW1hZ2UoY29uc3QgU3R5bGVQZW5kaW5nSW1h
Z2UmKTsKICAgICB2b2lkIGxvYWRQZW5kaW5nSW1hZ2VzKCk7CiAjaWYgRU5BQkxFKENTU19TSEFQ
RVMpCiAgICAgdm9pZCBsb2FkUGVuZGluZ1NoYXBlSW1hZ2UoU2hhcGVWYWx1ZSopOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvU3R5bGVSdWxlLmNwcAppbmRleCBhNWY0OWMwZmJmZWYzNmY4MTQ4YmNjYzYxNTdmNWE5ZjA2
MzU1YzNlLi40NmM2ZTJmOThkMmMxYWM4OWZhMzVlZjdlNTY3OThmZDMzMjMzZWJmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVSdWxlLmNwcApAQCAtNDUsMTIgKzQ1LDEyIEBAIHN0cnVjdCBTYW1lU2l6ZUFz
U3R5bGVSdWxlQmFzZSA6IHB1YmxpYyBXVEY6OlJlZkNvdW50ZWRCYXNlIHsKIAogQ09NUElMRV9B
U1NFUlQoc2l6ZW9mKFN0eWxlUnVsZUJhc2UpID09IHNpemVvZihTYW1lU2l6ZUFzU3R5bGVSdWxl
QmFzZSksIFN0eWxlUnVsZUJhc2Vfc2hvdWxkX3N0YXlfc21hbGwpOwogCi1QYXNzUmVmUHRyPENT
U1J1bGU+IFN0eWxlUnVsZUJhc2U6OmNyZWF0ZUNTU09NV3JhcHBlcihDU1NTdHlsZVNoZWV0KiBw
YXJlbnRTaGVldCkgY29uc3QKK1JlZlB0cjxDU1NSdWxlPiBTdHlsZVJ1bGVCYXNlOjpjcmVhdGVD
U1NPTVdyYXBwZXIoQ1NTU3R5bGVTaGVldCogcGFyZW50U2hlZXQpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIGNyZWF0ZUNTU09NV3JhcHBlcihwYXJlbnRTaGVldCwgMCk7CiB9CiAKLVBhc3NSZWZQdHI8
Q1NTUnVsZT4gU3R5bGVSdWxlQmFzZTo6Y3JlYXRlQ1NTT01XcmFwcGVyKENTU1J1bGUqIHBhcmVu
dFJ1bGUpIGNvbnN0CitSZWZQdHI8Q1NTUnVsZT4gU3R5bGVSdWxlQmFzZTo6Y3JlYXRlQ1NTT01X
cmFwcGVyKENTU1J1bGUqIHBhcmVudFJ1bGUpIGNvbnN0CiB7IAogICAgIHJldHVybiBjcmVhdGVD
U1NPTVdyYXBwZXIoMCwgcGFyZW50UnVsZSk7CiB9CkBAIC0xNDAsNyArMTQwLDcgQEAgUmVmPFN0
eWxlUnVsZUJhc2U+IFN0eWxlUnVsZUJhc2U6OmNvcHkoKSBjb25zdAogICAgIHJldHVybiBSZWY8
U3R5bGVSdWxlQmFzZT4oKnN0YXRpY19jYXN0PFN0eWxlUnVsZUJhc2UqPihudWxscHRyKSk7CiB9
CiAKLVBhc3NSZWZQdHI8Q1NTUnVsZT4gU3R5bGVSdWxlQmFzZTo6Y3JlYXRlQ1NTT01XcmFwcGVy
KENTU1N0eWxlU2hlZXQqIHBhcmVudFNoZWV0LCBDU1NSdWxlKiBwYXJlbnRSdWxlKSBjb25zdAor
UmVmUHRyPENTU1J1bGU+IFN0eWxlUnVsZUJhc2U6OmNyZWF0ZUNTU09NV3JhcHBlcihDU1NTdHls
ZVNoZWV0KiBwYXJlbnRTaGVldCwgQ1NTUnVsZSogcGFyZW50UnVsZSkgY29uc3QKIHsKICAgICBS
ZWZQdHI8Q1NTUnVsZT4gcnVsZTsKICAgICBTdHlsZVJ1bGVCYXNlJiBzZWxmID0gY29uc3RfY2Fz
dDxTdHlsZVJ1bGVCYXNlJj4oKnRoaXMpOwpAQCAtMTg3LDcgKzE4Nyw3IEBAIFBhc3NSZWZQdHI8
Q1NTUnVsZT4gU3R5bGVSdWxlQmFzZTo6Y3JlYXRlQ1NTT01XcmFwcGVyKENTU1N0eWxlU2hlZXQq
IHBhcmVudFNoZWV0CiAgICAgfQogICAgIGlmIChwYXJlbnRSdWxlKQogICAgICAgICBydWxlLT5z
ZXRQYXJlbnRSdWxlKHBhcmVudFJ1bGUpOwotICAgIHJldHVybiBydWxlLnJlbGVhc2UoKTsKKyAg
ICByZXR1cm4gcnVsZTsKIH0KIAogdW5zaWduZWQgU3R5bGVSdWxlOjphdmVyYWdlU2l6ZUluQnl0
ZXMoKQpAQCAtMzI5LDcgKzMyOSw3IEBAIHZvaWQgU3R5bGVSdWxlR3JvdXA6OndyYXBwZXJSZW1v
dmVSdWxlKHVuc2lnbmVkIGluZGV4KQogfQogCiAKLVN0eWxlUnVsZU1lZGlhOjpTdHlsZVJ1bGVN
ZWRpYShQYXNzUmVmUHRyPE1lZGlhUXVlcnlTZXQ+IG1lZGlhLCBWZWN0b3I8UmVmUHRyPFN0eWxl
UnVsZUJhc2U+PiYgYWRvcHRSdWxlcykKK1N0eWxlUnVsZU1lZGlhOjpTdHlsZVJ1bGVNZWRpYShS
ZWZQdHI8TWVkaWFRdWVyeVNldD4gbWVkaWEsIFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxlQmFzZT4+
JiBhZG9wdFJ1bGVzKQogICAgIDogU3R5bGVSdWxlR3JvdXAoTWVkaWEsIGFkb3B0UnVsZXMpCiAg
ICAgLCBtX21lZGlhUXVlcmllcyhtZWRpYSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZVJ1bGUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuaAppbmRleCBl
OWE2MzY2ZTRlNDVlOTU3ZjJmMTQ2ZjY1NDk3MmU2ZjcwYmU3NWY5Li5kYTZlM2JmYWIwZmYxOTJj
Y2I5ZGU2MzFkMjNlZTk5M2E2MThjNDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVSdWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5oCkBAIC04Miw4
ICs4Miw4IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICAvLyBGSVhNRTogVGhlcmUgc2hvdWxkbid0
IGJlIGFueSBuZWVkIGZvciB0aGUgbnVsbCBwYXJlbnQgdmVyc2lvbi4KLSAgICBQYXNzUmVmUHRy
PENTU1J1bGU+IGNyZWF0ZUNTU09NV3JhcHBlcihDU1NTdHlsZVNoZWV0KiBwYXJlbnRTaGVldCA9
IDApIGNvbnN0OwotICAgIFBhc3NSZWZQdHI8Q1NTUnVsZT4gY3JlYXRlQ1NTT01XcmFwcGVyKENT
U1J1bGUqIHBhcmVudFJ1bGUpIGNvbnN0OworICAgIFJlZlB0cjxDU1NSdWxlPiBjcmVhdGVDU1NP
TVdyYXBwZXIoQ1NTU3R5bGVTaGVldCogcGFyZW50U2hlZXQgPSAwKSBjb25zdDsKKyAgICBSZWZQ
dHI8Q1NTUnVsZT4gY3JlYXRlQ1NTT01XcmFwcGVyKENTU1J1bGUqIHBhcmVudFJ1bGUpIGNvbnN0
OwogCiBwcm90ZWN0ZWQ6CiAgICAgU3R5bGVSdWxlQmFzZShUeXBlIHR5cGUsIHNpZ25lZCBzb3Vy
Y2VMaW5lID0gMCkgOiBtX3R5cGUodHlwZSksIG1fc291cmNlTGluZShzb3VyY2VMaW5lKSB7IH0K
QEAgLTk0LDcgKzk0LDcgQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICB2b2lkIGRlc3Ryb3ko
KTsKICAgICAKLSAgICBQYXNzUmVmUHRyPENTU1J1bGU+IGNyZWF0ZUNTU09NV3JhcHBlcihDU1NT
dHlsZVNoZWV0KiBwYXJlbnRTaGVldCwgQ1NTUnVsZSogcGFyZW50UnVsZSkgY29uc3Q7CisgICAg
UmVmUHRyPENTU1J1bGU+IGNyZWF0ZUNTU09NV3JhcHBlcihDU1NTdHlsZVNoZWV0KiBwYXJlbnRT
aGVldCwgQ1NTUnVsZSogcGFyZW50UnVsZSkgY29uc3Q7CiAKICAgICB1bnNpZ25lZCBtX3R5cGUg
OiA1OwogICAgIHNpZ25lZCBtX3NvdXJjZUxpbmUgOiAyNzsKQEAgLTE5Myw3ICsxOTMsNyBAQCBw
cml2YXRlOgogCiBjbGFzcyBTdHlsZVJ1bGVNZWRpYSA6IHB1YmxpYyBTdHlsZVJ1bGVHcm91cCB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTdHlsZVJ1bGVNZWRpYT4gY3JlYXRlKFBhc3NSZWZQ
dHI8TWVkaWFRdWVyeVNldD4gbWVkaWEsIFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxlQmFzZT4+JiBh
ZG9wdFJ1bGVzKQorICAgIHN0YXRpYyBSZWY8U3R5bGVSdWxlTWVkaWE+IGNyZWF0ZShSZWZQdHI8
TWVkaWFRdWVyeVNldD4gbWVkaWEsIFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxlQmFzZT4+JiBhZG9w
dFJ1bGVzKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVSdWxlTWVk
aWEobWVkaWEsIGFkb3B0UnVsZXMpKTsKICAgICB9CkBAIC0yMDMsNyArMjAzLDcgQEAgcHVibGlj
OgogICAgIFJlZjxTdHlsZVJ1bGVNZWRpYT4gY29weSgpIGNvbnN0IHsgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgU3R5bGVSdWxlTWVkaWEoKnRoaXMpKTsgfQogCiBwcml2YXRlOgotICAgIFN0eWxlUnVs
ZU1lZGlhKFBhc3NSZWZQdHI8TWVkaWFRdWVyeVNldD4sIFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxl
QmFzZT4+JiBhZG9wdFJ1bGVzKTsKKyAgICBTdHlsZVJ1bGVNZWRpYShSZWZQdHI8TWVkaWFRdWVy
eVNldD4sIFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxlQmFzZT4+JiBhZG9wdFJ1bGVzKTsKICAgICBT
dHlsZVJ1bGVNZWRpYShjb25zdCBTdHlsZVJ1bGVNZWRpYSYpOwogCiAgICAgUmVmUHRyPE1lZGlh
UXVlcnlTZXQ+IG1fbWVkaWFRdWVyaWVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlUnVsZUltcG9ydC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlSW1wb3J0
LmNwcAppbmRleCBmNTY3OTU2MDE4MWY5ZWZhZmU1YTlmMTMyYTFiMDkxNDQwZmM1MDEzLi5jNjIy
MWY3YzIyMzE0NjI0NzRmNTE1MGQ3ZDJiM2UwMDdmNWJiY2NiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVSdWxlSW1wb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVSdWxlSW1wb3J0LmNwcApAQCAtMzQsMTIgKzM0LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotUmVmPFN0eWxlUnVsZUltcG9ydD4gU3R5bGVSdWxlSW1wb3J0OjpjcmVhdGUoY29u
c3QgU3RyaW5nJiBocmVmLCBQYXNzUmVmUHRyPE1lZGlhUXVlcnlTZXQ+IG1lZGlhKQorUmVmPFN0
eWxlUnVsZUltcG9ydD4gU3R5bGVSdWxlSW1wb3J0OjpjcmVhdGUoY29uc3QgU3RyaW5nJiBocmVm
LCBSZWZQdHI8TWVkaWFRdWVyeVNldD4gbWVkaWEpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgU3R5bGVSdWxlSW1wb3J0KGhyZWYsIG1lZGlhKSk7CiB9CiAKLVN0eWxlUnVsZUltcG9ydDo6
U3R5bGVSdWxlSW1wb3J0KGNvbnN0IFN0cmluZyYgaHJlZiwgUGFzc1JlZlB0cjxNZWRpYVF1ZXJ5
U2V0PiBtZWRpYSkKK1N0eWxlUnVsZUltcG9ydDo6U3R5bGVSdWxlSW1wb3J0KGNvbnN0IFN0cmlu
ZyYgaHJlZiwgUmVmUHRyPE1lZGlhUXVlcnlTZXQ+IG1lZGlhKQogICAgIDogU3R5bGVSdWxlQmFz
ZShJbXBvcnQsIDApCiAgICAgLCBtX3BhcmVudFN0eWxlU2hlZXQoMCkKICAgICAsIG1fc3R5bGVT
aGVldENsaWVudCh0aGlzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVs
ZUltcG9ydC5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZUltcG9ydC5oCmluZGV4IGJh
MGIyYTczMWU5ZmU1YTU1NWZhNjM3MWE0NzE2NGE3MjA3ZjI2NTYuLjUxYTkxMDc5OTFjNzI5NTNi
ODQwMWU5MTAzZTk3YWI5MGU0ZDE0YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVJ1bGVJbXBvcnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlSW1wb3J0
LmgKQEAgLTM2LDcgKzM2LDcgQEAgY2xhc3MgU3R5bGVTaGVldENvbnRlbnRzOwogY2xhc3MgU3R5
bGVSdWxlSW1wb3J0IDogcHVibGljIFN0eWxlUnVsZUJhc2UgewogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8U3R5bGVSdWxlSW1wb3J0PiBjcmVh
dGUoY29uc3QgU3RyaW5nJiBocmVmLCBQYXNzUmVmUHRyPE1lZGlhUXVlcnlTZXQ+KTsKKyAgICBz
dGF0aWMgUmVmPFN0eWxlUnVsZUltcG9ydD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgaHJlZiwgUmVm
UHRyPE1lZGlhUXVlcnlTZXQ+KTsKIAogICAgIH5TdHlsZVJ1bGVJbXBvcnQoKTsKICAgICAKQEAg
LTcwLDcgKzcwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldENTU1N0eWxlU2hlZXQoY29uc3Qg
U3RyaW5nJiBocmVmLCBjb25zdCBVUkwmIGJhc2VVUkwsIGNvbnN0IFN0cmluZyYgY2hhcnNldCwg
Y29uc3QgQ2FjaGVkQ1NTU3R5bGVTaGVldCopOwogICAgIGZyaWVuZCBjbGFzcyBJbXBvcnRlZFN0
eWxlU2hlZXRDbGllbnQ7CiAKLSAgICBTdHlsZVJ1bGVJbXBvcnQoY29uc3QgU3RyaW5nJiBocmVm
LCBQYXNzUmVmUHRyPE1lZGlhUXVlcnlTZXQ+KTsKKyAgICBTdHlsZVJ1bGVJbXBvcnQoY29uc3Qg
U3RyaW5nJiBocmVmLCBSZWZQdHI8TWVkaWFRdWVyeVNldD4pOwogCiAgICAgU3R5bGVTaGVldENv
bnRlbnRzKiBtX3BhcmVudFN0eWxlU2hlZXQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZVNoZWV0Q29udGVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hl
ZXRDb250ZW50cy5jcHAKaW5kZXggNjBjNWQzOTY2ZWNmN2RhMjNiNDc1M2VlNWIzMDU3NDE1ZDM5
ZWNhZS4uOTZjNTRmOTlmOWY4MjJjMmUxMzNlYTA1NDQ4ZTk0MDFmYmM2MDA1ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRDb250ZW50cy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRDb250ZW50cy5jcHAKQEAgLTEyOCw3ICsxMjgsNyBAQCBi
b29sIFN0eWxlU2hlZXRDb250ZW50czo6aXNDYWNoZWFibGUoKSBjb25zdAogICAgIHJldHVybiB0
cnVlOwogfQogCi12b2lkIFN0eWxlU2hlZXRDb250ZW50czo6cGFyc2VyQXBwZW5kUnVsZShQYXNz
UmVmUHRyPFN0eWxlUnVsZUJhc2U+IHJ1bGUpCit2b2lkIFN0eWxlU2hlZXRDb250ZW50czo6cGFy
c2VyQXBwZW5kUnVsZShSZWZQdHI8U3R5bGVSdWxlQmFzZT4gcnVsZSkKIHsKICAgICBBU1NFUlQo
IXJ1bGUtPmlzQ2hhcnNldFJ1bGUoKSk7CiAgICAgaWYgKGlzPFN0eWxlUnVsZUltcG9ydD4oKnJ1
bGUpKSB7CkBAIC0yMDYsNyArMjA2LDcgQEAgdm9pZCBTdHlsZVNoZWV0Q29udGVudHM6OnBhcnNl
clNldEVuY29kaW5nRnJvbUNoYXJzZXRSdWxlKGNvbnN0IFN0cmluZyYgZW5jb2RpbmcKICAgICBt
X2VuY29kaW5nRnJvbUNoYXJzZXRSdWxlID0gZW5jb2Rpbmc7IAogfQogCi1ib29sIFN0eWxlU2hl
ZXRDb250ZW50czo6d3JhcHBlckluc2VydFJ1bGUoUGFzc1JlZlB0cjxTdHlsZVJ1bGVCYXNlPiBy
dWxlLCB1bnNpZ25lZCBpbmRleCkKK2Jvb2wgU3R5bGVTaGVldENvbnRlbnRzOjp3cmFwcGVySW5z
ZXJ0UnVsZShSZWZQdHI8U3R5bGVSdWxlQmFzZT4gcnVsZSwgdW5zaWduZWQgaW5kZXgpCiB7CiAg
ICAgQVNTRVJUKG1faXNNdXRhYmxlKTsKICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNB
VElPTihpbmRleCA8PSBydWxlQ291bnQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvU3R5bGVTaGVldENvbnRlbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldENv
bnRlbnRzLmgKaW5kZXggZjI1NjYyMTcyMWVlMjQwN2Q5YmNhM2JjMTA1ZWE1YTNmYTRmZDlhYy4u
MjNjNWQ1NzAxZTEwYjg3MWRmZTA4ZGRkZmQ5MDNmNzBhMWNkOTc4OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRDb250ZW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZVNoZWV0Q29udGVudHMuaApAQCAtOTQsNyArOTQsNyBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBoYXNTeW50YWN0aWNhbGx5VmFsaWRDU1NIZWFkZXIoKSBjb25zdCB7IHJldHVybiBtX2hh
c1N5bnRhY3RpY2FsbHlWYWxpZENTU0hlYWRlcjsgfQogCiAgICAgdm9pZCBwYXJzZXJBZGROYW1l
c3BhY2UoY29uc3QgQXRvbWljU3RyaW5nJiBwcmVmaXgsIGNvbnN0IEF0b21pY1N0cmluZyYgdXJp
KTsKLSAgICB2b2lkIHBhcnNlckFwcGVuZFJ1bGUoUGFzc1JlZlB0cjxTdHlsZVJ1bGVCYXNlPik7
CisgICAgdm9pZCBwYXJzZXJBcHBlbmRSdWxlKFJlZlB0cjxTdHlsZVJ1bGVCYXNlPik7CiAgICAg
dm9pZCBwYXJzZXJTZXRFbmNvZGluZ0Zyb21DaGFyc2V0UnVsZShjb25zdCBTdHJpbmcmIGVuY29k
aW5nKTsgCiAgICAgdm9pZCBwYXJzZXJTZXRVc2VzUmVtVW5pdHMoKSB7IG1fdXNlc1JlbVVuaXRz
ID0gdHJ1ZTsgfQogICAgIHZvaWQgcGFyc2VyU2V0VXNlc1N0eWxlQmFzZWRFZGl0YWJpbGl0eSgp
IHsgbV91c2VzU3R5bGVCYXNlZEVkaXRhYmlsaXR5ID0gdHJ1ZTsgfQpAQCAtMTI3LDcgKzEyNyw3
IEBAIHB1YmxpYzoKIAogICAgIHVuc2lnbmVkIGVzdGltYXRlZFNpemVJbkJ5dGVzKCkgY29uc3Q7
CiAgICAgCi0gICAgYm9vbCB3cmFwcGVySW5zZXJ0UnVsZShQYXNzUmVmUHRyPFN0eWxlUnVsZUJh
c2U+LCB1bnNpZ25lZCBpbmRleCk7CisgICAgYm9vbCB3cmFwcGVySW5zZXJ0UnVsZShSZWZQdHI8
U3R5bGVSdWxlQmFzZT4sIHVuc2lnbmVkIGluZGV4KTsKICAgICB2b2lkIHdyYXBwZXJEZWxldGVS
dWxlKHVuc2lnbmVkIGluZGV4KTsKIAogICAgIFJlZjxTdHlsZVNoZWV0Q29udGVudHM+IGNvcHko
KSBjb25zdCB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlU2hlZXRDb250ZW50cygqdGhpcykp
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldExpc3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0TGlzdC5oCmluZGV4IDEyYTdjNDU5ZGJhM2NjYTNm
OTM4YjkxZjY0Mzk4YTUzYmU1ZTdmMjUuLjRkNGI1NDA3NTE4NWU4OWQ3YjY1MjM0ZGJkZjUyYjY3
NTA4YTllZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0TGlzdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0TGlzdC5oCkBAIC0yMyw3ICsyMyw2
IEBACiAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9X
ZWJLaXRDU1NGaWx0ZXJWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTRmls
dGVyVmFsdWUuY3BwCmluZGV4IDVhMTRiYjhiMTIzMWMwOWE3ODAyYWNhMTdiOTZhYzM2NjJmODA0
MzYuLmNkMGNhN2Q3YmY3YmM0OWU1NWQ5OGI1NTViN2YzZDBiNTYxMmJjMTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NGaWx0ZXJWYWx1ZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL1dlYktpdENTU0ZpbHRlclZhbHVlLmNwcApAQCAtMjcsNyArMjcsNiBAQAog
I2luY2x1ZGUgIldlYktpdENTU0ZpbHRlclZhbHVlLmgiCiAKICNpbmNsdWRlICJDU1NWYWx1ZUxp
c3QuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvV2ViS2l0Q1NTRmlsdGVyVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJL
aXRDU1NGaWx0ZXJWYWx1ZS5oCmluZGV4IGEyNDk2ZDY3MWU0ZGE0ZGFlMzI1MGMxNGNkN2FkNDlm
NTVkYTcyMzkuLjllM2FlNjUzNTVkNDkyZmUyM2ZmOGFiMzU5NjI2YjQxYmM0YjUzNjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NGaWx0ZXJWYWx1ZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NGaWx0ZXJWYWx1ZS5oCkBAIC0yNyw3ICsyNyw2IEBA
CiAjZGVmaW5lIFdlYktpdENTU0ZpbHRlclZhbHVlX2gKIAogI2luY2x1ZGUgIkNTU1ZhbHVlTGlz
dC5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
V2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENT
U1RyYW5zZm9ybVZhbHVlLmNwcAppbmRleCA2NzcyMTJlNDhjODRiMzI5ZTBkOTk5ZTM3ODQ0NjA4
ZjliOWIwMTkxLi5hMWRmMGNmYjg4Yjg1YWYxMjMyNmVmZDg0MWFiN2FhNWEzOGQ4M2YxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5jcHAKQEAgLTI3
LDcgKzI3LDYgQEAKICNpbmNsdWRlICJXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5oIgogCiAjaW5j
bHVkZSAiQ1NTVmFsdWVMaXN0LmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1RyYW5zZm9ybVZhbHVlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuaAppbmRleCA3Y2VjMzUzNGJi
M2JhYzM5OTJlYzY1OWFhMmY1YWZlMGQxOGQwMmRhLi4yZGI3YzcyMDhjNGU3NzEyZmU0NzBjZDNm
NjM2YzBiNzAxNzZiMmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NT
VHJhbnNmb3JtVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTVHJhbnNm
b3JtVmFsdWUuaApAQCAtMjcsNyArMjcsNiBAQAogI2RlZmluZSBXZWJLaXRDU1NUcmFuc2Zvcm1W
YWx1ZV9oCiAKICNpbmNsdWRlICJDU1NWYWx1ZUxpc3QuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1Jl
ZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFNlbGVjdG9y
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250U2VsZWN0b3IuaAppbmRl
eCBlYmNiZmQzZTgwMWY3ZmFlYWMzODFhZjk0ZjMzODAwNDE0OTgwOGY3Li41NWJlNGJiMjhmODlm
Y2JlMzQ5ZTJkMDViNmNiYmNmMmQ0MzQxMjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250U2VsZWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250U2VsZWN0b3IuaApAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB+Rm9udFNlbGVjdG9yKCkgeyB9CiAKICAgICB2aXJ0dWFsIEZvbnRSYW5nZXMg
Zm9udFJhbmdlc0ZvckZhbWlseShjb25zdCBGb250RGVzY3JpcHRpb24mLCBjb25zdCBBdG9taWNT
dHJpbmcmKSA9IDA7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPEZvbnQ+IGZhbGxiYWNrRm9udEF0
KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIHNpemVfdCkgPSAwOworICAgIHZpcnR1YWwgUmVmUHRy
PEZvbnQ+IGZhbGxiYWNrRm9udEF0KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIHNpemVfdCkgPSAw
OwogCiAgICAgdmlydHVhbCBzaXplX3QgZmFsbGJhY2tGb250Q291bnQoKSA9IDA7CiAgICAgdmly
dHVhbCBib29sIHJlc29sdmVzRmFtaWx5Rm9yKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYpIGNvbnN0
ID0gMDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259843</attachid>
            <date>2015-08-25 07:40:16 -0700</date>
            <delta_ts>2015-08-25 20:05:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147974-20150825074005.patch</filename>
            <type>text/plain</type>
            <size>122648</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4OTA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjY1ZmFiNWQ1NzAzYzIw
ZTI1ZTIzY2QwOWU3MDk4NTlhZWY5NjNjMS4uOGYwMWFjODcxMWEzMmE3ZWM1NGZiN2YyNTBhYWU0
ODRlYmEwYTU2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyNSBAQAorMjAxNS0wOC0yNSAgR3l1
eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIGFs
bCB1c2VzIG9mIFBhc3NSZWZQdHIgaW4gV2ViQ29yZS9jc3MKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0Nzk3NAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENsZWFuIHVwIGFsbCBQYXNzUmVmUHRyIGluIFdl
YkNvcmUvY3NzLgorCisgICAgICAgICogY3NzL0Jhc2ljU2hhcGVGdW5jdGlvbnMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Y3NzVmFsdWVUb0Jhc2ljU2hhcGVSYWRpdXMpOgorICAgICAgICAqIGNz
cy9CYXNpY1NoYXBlRnVuY3Rpb25zLmg6CisgICAgICAgICogY3NzL0NTU0FuaW1hdGlvblRyaWdn
ZXJTY3JvbGxWYWx1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQW5pbWF0aW9uVHJpZ2dlclNj
cm9sbFZhbHVlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQW5pbWF0aW9uVHJpZ2dl
clNjcm9sbFZhbHVlOjpDU1NBbmltYXRpb25UcmlnZ2VyU2Nyb2xsVmFsdWUpOgorICAgICAgICAq
IGNzcy9DU1NCYXNpY1NoYXBlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpidWlsZFNlcmlhbGl6
YWJsZVBvc2l0aW9uT2Zmc2V0KToKKyAgICAgICAgKiBjc3MvQ1NTQmFzaWNTaGFwZXMuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU0Jhc2ljU2hhcGU6OnNldFJlZmVyZW5jZUJveCk6CisgICAgICAg
ICogY3NzL0NTU0JvcmRlckltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUJvcmRl
ckltYWdlVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NCb3JkZXJJbWFnZS5oOgorICAgICAgICAq
IGNzcy9DU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
Qm9yZGVySW1hZ2VTbGljZVZhbHVlOjpDU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUpOgorICAgICAg
ICAqIGNzcy9DU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNT
U0JvcmRlckltYWdlU2xpY2VWYWx1ZTo6Y3JlYXRlKToKKyAgICAgICAgKiBjc3MvQ1NTQ2FsY3Vs
YXRpb25WYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkZXRlcm1pbmVDYXRlZ29yeSk6Cisg
ICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjp2YWx1ZUZvclNoYWRvdyk6CisgICAgICAg
IChXZWJDb3JlOjpDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpDb21wdXRlZFN0eWxlRXh0cmFjdG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Q1NTQ29t
cHV0ZWRTdHlsZURlY2xhcmF0aW9uKToKKyAgICAgICAgKiBjc3MvQ1NTQ29tcHV0ZWRTdHlsZURl
Y2xhcmF0aW9uLmg6CisgICAgICAgICogY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmg6CisgICAgICAg
IChXZWJDb3JlOjpDU1NDcm9zc2ZhZGVWYWx1ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU0Nyb3NzZmFkZVZhbHVlOjpzZXRQZXJjZW50YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U0Nyb3NzZmFkZVZhbHVlOjpDU1NDcm9zc2ZhZGVWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU0Zp
bHRlckltYWdlVmFsdWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlckltYWdlVmFsdWU6
OkNTU0ZpbHRlckltYWdlVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NGb250RmFjZS5oOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NGb250RmFjZTo6Q1NTRm9udEZhY2UpOgorICAgICAgICAqIGNzcy9DU1NGb250RmFjZUxvYWRF
dmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZUxvYWRFdmVudDo6Q1NTRm9u
dEZhY2VMb2FkRXZlbnQpOgorICAgICAgICAqIGNzcy9DU1NGb250RmFjZUxvYWRFdmVudC5oOgor
ICAgICAgICAqIGNzcy9DU1NGb250RmFjZVNvdXJjZS5oOgorICAgICAgICAqIGNzcy9DU1NGb250
RmFjZVNyY1ZhbHVlLmg6CisgICAgICAgICogY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NGb250U2VsZWN0b3I6OmZhbGxiYWNrRm9udEF0KToKKyAgICAgICAg
KiBjc3MvQ1NTRm9udFNlbGVjdG9yLmg6CisgICAgICAgICogY3NzL0NTU0ZvbnRWYWx1ZS5oOgor
ICAgICAgICAqIGNzcy9DU1NGdW5jdGlvblZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNT
U0Z1bmN0aW9uVmFsdWU6OkNTU0Z1bmN0aW9uVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NGdW5j
dGlvblZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NGdW5jdGlvblZhbHVlOjpjcmVhdGUp
OgorICAgICAgICAqIGNzcy9DU1NHcmFkaWVudFZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlOjpD
U1NHcmFkaWVudFZhbHVlOjpzZXRGaXJzdFgpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTR3JhZGll
bnRWYWx1ZTo6c2V0Rmlyc3RZKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0dyYWRpZW50VmFsdWU6
OnNldFNlY29uZFgpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTR3JhZGllbnRWYWx1ZTo6c2V0U2Vj
b25kWSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NMaW5lYXJHcmFkaWVudFZhbHVlOjpzZXRBbmds
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NSYWRpYWxHcmFkaWVudFZhbHVlOjpzZXRGaXJzdFJh
ZGl1cyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NSYWRpYWxHcmFkaWVudFZhbHVlOjpzZXRTZWNv
bmRSYWRpdXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUmFkaWFsR3JhZGllbnRWYWx1ZTo6c2V0
U2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUmFkaWFsR3JhZGllbnRWYWx1ZTo6c2V0U2l6
aW5nQmVoYXZpb3IpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUmFkaWFsR3JhZGllbnRWYWx1ZTo6
c2V0RW5kSG9yaXpvbnRhbFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUmFkaWFsR3JhZGll
bnRWYWx1ZTo6c2V0RW5kVmVydGljYWxTaXplKToKKyAgICAgICAgKiBjc3MvQ1NTR3JpZExpbmVO
YW1lc1ZhbHVlLmg6CisgICAgICAgICogY3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6c2F2ZUNhY2hlZEltYWdl
Rm9yU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjpDYWNo
ZWRHZW5lcmF0ZWRJbWFnZTo6Q2FjaGVkR2VuZXJhdGVkSW1hZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6aW1hZ2UpOgorICAgICAgICAqIGNzcy9DU1NJbWFn
ZUdlbmVyYXRvclZhbHVlLmg6CisgICAgICAgICogY3NzL0NTU0luaGVyaXRlZFZhbHVlLmg6Cisg
ICAgICAgICogY3NzL0NTU0luaXRpYWxWYWx1ZS5oOgorICAgICAgICAqIGNzcy9DU1NLZXlmcmFt
ZXNSdWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUnVsZUtleWZyYW1lczo6cGFyc2Vy
QXBwZW5kS2V5ZnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSdWxlS2V5ZnJhbWVzOjp3
cmFwcGVyQXBwZW5kS2V5ZnJhbWUpOgorICAgICAgICAqIGNzcy9DU1NLZXlmcmFtZXNSdWxlLmg6
CisgICAgICAgICogY3NzL0NTU0xpbmVCb3hDb250YWluVmFsdWUuaDoKKyAgICAgICAgKiBjc3Mv
Q1NTTmFtZWRJbWFnZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU05hbWVkSW1hZ2VW
YWx1ZTo6aW1hZ2UpOgorICAgICAgICAqIGNzcy9DU1NOYW1lZEltYWdlVmFsdWUuaDoKKyAgICAg
ICAgKiBjc3MvQ1NTUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFy
c2VEZWNsYXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OmFkZFByb3BlcnR5
V2l0aFByZWZpeGluZ1ZhcmlhbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjphZGRQ
cm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OmFkZEV4cGFuZGVkUHJvcGVy
dHlGb3JWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlR3JpZFRlbXBs
YXRlUm93c0FuZEFyZWFzKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VJbnNl
dFJvdW5kZWRDb3JuZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1BhcnNlQ29udGV4dDo6
Y29tbWl0Q29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Qm9yZGVySW1hZ2VQYXJzZUNvbnRleHQ6
OmNvbW1pdEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkJvcmRlckltYWdlUGFyc2VDb250ZXh0
Ojpjb21taXRJbWFnZVNsaWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkJvcmRlckltYWdlUGFyc2VD
b250ZXh0Ojpjb21taXRCb3JkZXJXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpCb3JkZXJJbWFn
ZVBhcnNlQ29udGV4dDo6Y29tbWl0Qm9yZGVyT3V0c2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkJv
cmRlckltYWdlUGFyc2VDb250ZXh0Ojpjb21taXRSZXBlYXQpOgorICAgICAgICAoV2ViQ29yZTo6
Qm9yZGVySW1hZ2VQYXJzZUNvbnRleHQ6OmNvbW1pdFdlYktpdEJvcmRlckltYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkJvcmRlckltYWdlUGFyc2VDb250ZXh0Ojpjb21taXRCb3JkZXJJbWFnZVBy
b3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkJvcmRlckltYWdlU2xpY2VQYXJzZUNvbnRleHQ6
OmNvbW1pdEJvcmRlckltYWdlU2xpY2UpOgorICAgICAgICAoV2ViQ29yZTo6Qm9yZGVySW1hZ2VR
dWFkUGFyc2VDb250ZXh0OjpzZXRUb3ApOgorICAgICAgICAoV2ViQ29yZTo6Qm9yZGVySW1hZ2VR
dWFkUGFyc2VDb250ZXh0Ojpjb21taXRCb3JkZXJJbWFnZVF1YWQpOgorICAgICAgICAoV2ViQ29y
ZTo6cGFyc2VEZXByZWNhdGVkR3JhZGllbnRQb2ludCk6CisgICAgICAgIChXZWJDb3JlOjp2YWx1
ZUZyb21TaWRlS2V5d29yZCk6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUdyYWRpZW50Q29sb3JP
cktleXdvcmQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjphZGRUZXh0RGVjb3JhdGlv
blByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6Y3JlYXRlSW1wb3J0UnVs
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OmNyZWF0ZU1lZGlhUnVsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OmFkZE5ld1J1bGVUb1NvdXJjZVRyZWUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwb3BSdWxlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NQYXJzZXI6OmNyZWF0ZVZpZXdwb3J0UnVsZSk6CisgICAgICAgICogY3NzL0NTU1BhcnNlci5o
OgorICAgICAgICAqIGNzcy9DU1NQYXJzZXJWYWx1ZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTUGFyc2VyVmFsdWU6OmNyZWF0ZUNTU1ZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2Vy
VmFsdWVzLmg6CisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpnZXRSR0JDb2xvclZhbHVlKToKKyAgICAgICAg
KiBjc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaDoKKyAgICAgICAgKiBjc3MvQ1NTUHJvcGVydHkuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5OjpDU1NQcm9wZXJ0eSk6CisgICAgICAgICog
Y3NzL0NTU1JlZmxlY3RWYWx1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUmVmbGVjdFZhbHVl
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUmVmbGVjdFZhbHVlOjpDU1NSZWZsZWN0
VmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NSdWxlTGlzdC5oOgorICAgICAgICAqIGNzcy9DU1NT
ZWdtZW50ZWRGb250RmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWdtZW50ZWRGb250
RmFjZTo6YXBwZW5kRm9udEZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VnbWVudGVkRm9u
dEZhY2U6OmxvYWRGb250KToKKyAgICAgICAgKiBjc3MvQ1NTU2VnbWVudGVkRm9udEZhY2UuaDoK
KyAgICAgICAgKiBjc3MvQ1NTU2VsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2Vs
ZWN0b3I6OlJhcmVEYXRhOjpSYXJlRGF0YSk6CisgICAgICAgICogY3NzL0NTU1NlbGVjdG9yLmg6
CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6UmFyZURhdGE6OmNyZWF0ZSk6CisgICAg
ICAgICogY3NzL0NTU1NoYWRvd1ZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NoYWRv
d1ZhbHVlOjpDU1NTaGFkb3dWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU1NoYWRvd1ZhbHVlLmg6
CisgICAgICAgIChXZWJDb3JlOjpDU1NTaGFkb3dWYWx1ZTo6Y3JlYXRlKToKKyAgICAgICAgKiBj
c3MvQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNoZWV0Ojpz
ZXRNZWRpYVF1ZXJpZXMpOgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNoZWV0Lmg6CisgICAgICAg
ICogY3NzL0NTU1RpbWluZ0Z1bmN0aW9uVmFsdWUuaDoKKyAgICAgICAgKiBjc3MvQ1NTVW5pY29k
ZVJhbmdlVmFsdWUuaDoKKyAgICAgICAgKiBjc3MvQ1NTVmFsdWVMaXN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1ZhbHVlTGlzdDo6Y29weSk6CisgICAgICAgICogY3NzL0NTU1ZhbHVlTGlz
dC5oOgorICAgICAgICAqIGNzcy9DU1NWYWx1ZVBvb2wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTVmFsdWVQb29sOjpjcmVhdGVGb250RmFjZVZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTVmFs
dWVQb29sLmg6CisgICAgICAgICogY3NzL0NvdW50ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
dW50ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb3VudGVyOjpzZXRJZGVudGlmaWVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvdW50ZXI6OnNldExpc3RTdHlsZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDb3VudGVyOjpzZXRTZXBhcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q291bnRl
cjo6Q291bnRlcik6CisgICAgICAgICogY3NzL0ZvbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TG9hZEZvbnRDYWxsYmFjazo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkxvYWRG
b250Q2FsbGJhY2s6OmNyZWF0ZUZyb21QYXJhbXMpOgorICAgICAgICAoV2ViQ29yZTo6TG9hZEZv
bnRDYWxsYmFjazo6TG9hZEZvbnRDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpGb250TG9h
ZGVyOjpzY2hlZHVsZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRMb2FkZXI6Om5vdGlm
eVdoZW5Gb250c1JlYWR5KToKKyAgICAgICAgKiBjc3MvRm9udExvYWRlci5oOgorICAgICAgICAq
IGNzcy9MZW5ndGhSZXBlYXQuaDoKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aFJlcGVhdDo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aFJlcGVhdDo6c2V0SW50ZXJ2YWwpOgorICAg
ICAgICAoV2ViQ29yZTo6TGVuZ3RoUmVwZWF0OjpMZW5ndGhSZXBlYXQpOgorICAgICAgICAqIGNz
cy9NZWRpYUxpc3QuaDoKKyAgICAgICAgKiBjc3MvTWVkaWFRdWVyeUxpc3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFRdWVyeUxpc3Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVF1ZXJ5TGlzdDo6TWVkaWFRdWVyeUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFR
dWVyeUxpc3Q6OmFkZExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUXVlcnlMaXN0
OjpyZW1vdmVMaXN0ZW5lcik6CisgICAgICAgICogY3NzL01lZGlhUXVlcnlMaXN0Lmg6CisgICAg
ICAgICogY3NzL01lZGlhUXVlcnlNYXRjaGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UXVlcnlNYXRjaGVyOjpMaXN0ZW5lcjo6TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFRdWVyeU1hdGNoZXI6OmFkZExpc3RlbmVyKToKKyAgICAgICAgKiBjc3MvTWVkaWFRdWVyeU1h
dGNoZXIuaDoKKyAgICAgICAgKiBjc3MvUGFpci5oOgorICAgICAgICAqIGNzcy9SZWN0Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpSZWN0QmFzZTo6c2V0VG9wKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
Y3RCYXNlOjpzZXRSaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpSZWN0QmFzZTo6c2V0Qm90dG9t
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlY3RCYXNlOjpzZXRMZWZ0KToKKyAgICAgICAgKiBjc3Mv
U1ZHQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
bXB1dGVkU3R5bGVFeHRyYWN0b3I6OmFkanVzdFNWR1BhaW50Rm9yQ3VycmVudENvbG9yKToKKyAg
ICAgICAgKiBjc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRTdHlsZUltYWdlKToKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydENsaXBQYXRoKToKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFF1b3Rlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRSZWZsZWN0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFNoYXBlVmFsdWUpOgor
ICAgICAgICAqIGNzcy9TdHlsZVByb3BlcnRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGVQcm9wZXJ0aWVzOjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6Ok11
dGFibGVTdHlsZVByb3BlcnRpZXM6OnNldFByb3BlcnR5KToKKyAgICAgICAgKiBjc3MvU3R5bGVQ
cm9wZXJ0aWVzLmg6CisgICAgICAgICogY3NzL1N0eWxlUmVzb2x2ZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6YWRkS2V5ZnJhbWVTdHlsZSk6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZVJlc29sdmVyOjpwc2V1ZG9TdHlsZUZvckVsZW1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGVSZXNvbHZlcjo6c3R5bGVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZVJlc29sdmVyOjpjYWNoZWRPclBlbmRpbmdGcm9tVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVSZXNvbHZlcjo6Z2VuZXJhdGVkT3JQZW5kaW5nRnJvbVZhbHVlKToKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlUmVzb2x2ZXI6OnNldE9yUGVuZGluZ0Zyb21WYWx1ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpjdXJzb3JPclBlbmRpbmdGcm9tVmFsdWUpOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6bG9hZFBlbmRpbmdJbWFnZSk6CisgICAgICAgICog
Y3NzL1N0eWxlUmVzb2x2ZXIuaDoKKyAgICAgICAgKiBjc3MvU3R5bGVSdWxlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlUnVsZUJhc2U6OmNyZWF0ZUNTU09NV3JhcHBlcik6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZVJ1bGVNZWRpYTo6U3R5bGVSdWxlTWVkaWEpOgorICAgICAgICAqIGNz
cy9TdHlsZVJ1bGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUnVsZU1lZGlhOjpjcmVhdGUp
OgorICAgICAgICAqIGNzcy9TdHlsZVJ1bGVJbXBvcnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVSdWxlSW1wb3J0OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSdWxlSW1w
b3J0OjpTdHlsZVJ1bGVJbXBvcnQpOgorICAgICAgICAqIGNzcy9TdHlsZVJ1bGVJbXBvcnQuaDoK
KyAgICAgICAgKiBjc3MvU3R5bGVTaGVldENvbnRlbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlU2hlZXRDb250ZW50czo6cGFyc2VyQXBwZW5kUnVsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZVNoZWV0Q29udGVudHM6OndyYXBwZXJJbnNlcnRSdWxlKToKKyAgICAgICAgKiBjc3Mv
U3R5bGVTaGVldENvbnRlbnRzLmg6CisgICAgICAgICogY3NzL1N0eWxlU2hlZXRMaXN0Lmg6Cisg
ICAgICAgICogY3NzL1dlYktpdENTU0ZpbHRlclZhbHVlLmNwcDoKKyAgICAgICAgKiBjc3MvV2Vi
S2l0Q1NTRmlsdGVyVmFsdWUuaDoKKyAgICAgICAgKiBjc3MvV2ViS2l0Q1NTVHJhbnNmb3JtVmFs
dWUuY3BwOgorICAgICAgICAqIGNzcy9XZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRTZWxlY3Rvci5oOgorCiAyMDE1LTA4LTI1ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgR2V0IHJpZCBvZiBjdXN0b20g
YmluZGluZ3MgZm9yIFJlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrLmhhbmRsZUV2ZW50KCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9CYXNpY1NoYXBlRnVuY3Rpb25zLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9CYXNpY1NoYXBlRnVuY3Rpb25zLmNwcAppbmRleCAwNjRmY2Qy
ZWM2OWMxZGNmZDk3ZmQzMTY3NGViNjMwYTgzNjZjZDg4Li5hNDU0NGVlMDc1YjAxZjhlZDNlMTI1
YWU2NWE0YmE0MWQ2NDYyNTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQmFzaWNT
aGFwZUZ1bmN0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0Jhc2ljU2hhcGVGdW5j
dGlvbnMuY3BwCkBAIC0xNzksNyArMTc5LDcgQEAgc3RhdGljIEJhc2ljU2hhcGVDZW50ZXJDb29y
ZGluYXRlIGNvbnZlcnRUb0NlbnRlckNvb3JkaW5hdGUoY29uc3QgQ1NTVG9MZW5ndGhDb24KICAg
ICByZXR1cm4gQmFzaWNTaGFwZUNlbnRlckNvb3JkaW5hdGUoZGlyZWN0aW9uLCBvZmZzZXQpOwog
fQogCi1zdGF0aWMgQmFzaWNTaGFwZVJhZGl1cyBjc3NWYWx1ZVRvQmFzaWNTaGFwZVJhZGl1cyhj
b25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJiBjb252ZXJzaW9uRGF0YSwgUGFzc1JlZlB0
cjxDU1NQcmltaXRpdmVWYWx1ZT4gcmFkaXVzKQorc3RhdGljIEJhc2ljU2hhcGVSYWRpdXMgY3Nz
VmFsdWVUb0Jhc2ljU2hhcGVSYWRpdXMoY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYg
Y29udmVyc2lvbkRhdGEsIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcmFkaXVzKQogewogICAg
IGlmICghcmFkaXVzKQogICAgICAgICByZXR1cm4gQmFzaWNTaGFwZVJhZGl1cyhCYXNpY1NoYXBl
UmFkaXVzOjpDbG9zZXN0U2lkZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQmFz
aWNTaGFwZUZ1bmN0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0Jhc2ljU2hhcGVGdW5jdGlv
bnMuaAppbmRleCBlYzNlMjNlYjQ5MDI1NzRkZTgyNjMxNzcxMWU5YmJkNDExOTk2YjRhLi4wNzM3
ZDAzYTUwNmJmN2UzZTA0MmIyNDUzMzBlZDAxOWY1OGE4YTM0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQmFzaWNTaGFwZUZ1bmN0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9CYXNpY1NoYXBlRnVuY3Rpb25zLmgKQEAgLTMxLDcgKzMxLDYgQEAKICNkZWZpbmUgQmFzaWNT
aGFwZUZ1bmN0aW9uc19oCiAKICNpbmNsdWRlICJCYXNpY1NoYXBlcy5oIgotI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0FuaW1hdGlvblRyaWdnZXJTY3JvbGxWYWx1ZS5oIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0FuaW1hdGlvblRyaWdnZXJTY3JvbGxWYWx1ZS5oCmluZGV4IDg2Y2My
ZmYzODJkMTdkMjliMTQxZGVmNTRjNjUzNzdlMTlkODJiMjUuLjFlOTQzYjBmM2JiNDQ0NjRiZDQz
NTA5NDgyYTBkYTM2MDYyZjdhZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NB
bmltYXRpb25UcmlnZ2VyU2Nyb2xsVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
QW5pbWF0aW9uVHJpZ2dlclNjcm9sbFZhbHVlLmgKQEAgLTI5LDEzICsyOSwxMiBAQAogI2lmIEVO
QUJMRShDU1NfQU5JTUFUSU9OU19MRVZFTF8yKQogCiAjaW5jbHVkZSAiQ1NTVmFsdWUuaCIKLSNp
bmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IENTU0FuaW1hdGlvblRyaWdnZXJTY3JvbGxWYWx1ZSA6IHB1YmxpYyBDU1NWYWx1ZSB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFJlZjxDU1NBbmltYXRpb25UcmlnZ2VyU2Nyb2xsVmFsdWU+IGNyZWF0
ZShQYXNzUmVmUHRyPENTU1ZhbHVlPiBzdGFydFZhbHVlLCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBl
bmRWYWx1ZSA9IG51bGxwdHIpCisgICAgc3RhdGljIFJlZjxDU1NBbmltYXRpb25UcmlnZ2VyU2Ny
b2xsVmFsdWU+IGNyZWF0ZShSZWZQdHI8Q1NTVmFsdWU+IHN0YXJ0VmFsdWUsIFJlZlB0cjxDU1NW
YWx1ZT4gZW5kVmFsdWUgPSBudWxscHRyKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgQ1NTQW5pbWF0aW9uVHJpZ2dlclNjcm9sbFZhbHVlKHN0YXJ0VmFsdWUsIGVuZFZhbHVl
KSk7CiAgICAgfQpAQCAtNDksNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBlcXVhbHMoY29u
c3QgQ1NTQW5pbWF0aW9uVHJpZ2dlclNjcm9sbFZhbHVlJikgY29uc3Q7CiAKIHByaXZhdGU6Ci0g
ICAgQ1NTQW5pbWF0aW9uVHJpZ2dlclNjcm9sbFZhbHVlKFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHN0
YXJ0VmFsdWUsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IGVuZFZhbHVlKQorICAgIENTU0FuaW1hdGlv
blRyaWdnZXJTY3JvbGxWYWx1ZShSZWZQdHI8Q1NTVmFsdWU+IHN0YXJ0VmFsdWUsIFJlZlB0cjxD
U1NWYWx1ZT4gZW5kVmFsdWUpCiAgICAgICAgIDogQ1NTVmFsdWUoQW5pbWF0aW9uVHJpZ2dlclNj
cm9sbENsYXNzKQogICAgICAgICAsIG1fc3RhcnRWYWx1ZShzdGFydFZhbHVlKQogICAgICAgICAs
IG1fZW5kVmFsdWUoZW5kVmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
QmFzaWNTaGFwZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Jhc2ljU2hhcGVzLmNwcApp
bmRleCAyM2FhZWNmMzJlNmFjOTU3YzYyZjNlN2IyY2VmZDAzYTk0MTkwZWUzLi4wNjg0Yjc2OTg2
ODYyMTUzZjBmZjZhNDFhM2M3NDIwMDIwYjI1MmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTQmFzaWNTaGFwZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCYXNp
Y1NoYXBlcy5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgc3RhdGljIFN0cmluZyBzZXJpYWxpemVQb3Np
dGlvbk9mZnNldChjb25zdCBQYWlyJiBvZmZzZXQsIGNvbnN0IFBhaXImIG90aGVyKQogICAgIHJl
dHVybiBvZmZzZXQuY3NzVGV4dCgpOwogfQogCi1zdGF0aWMgUmVmPENTU1ByaW1pdGl2ZVZhbHVl
PiBidWlsZFNlcmlhbGl6YWJsZVBvc2l0aW9uT2Zmc2V0KFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZl
VmFsdWU+IG9mZnNldCwgQ1NTVmFsdWVJRCBkZWZhdWx0U2lkZSkKK3N0YXRpYyBSZWY8Q1NTUHJp
bWl0aXZlVmFsdWU+IGJ1aWxkU2VyaWFsaXphYmxlUG9zaXRpb25PZmZzZXQoUmVmUHRyPENTU1By
aW1pdGl2ZVZhbHVlPiBvZmZzZXQsIENTU1ZhbHVlSUQgZGVmYXVsdFNpZGUpCiB7CiAgICAgQ1NT
VmFsdWVJRCBzaWRlID0gZGVmYXVsdFNpZGU7CiAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVl
PiBhbW91bnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQmFzaWNTaGFwZXMu
aCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCYXNpY1NoYXBlcy5oCmluZGV4IDgxNzMzZDIxZmZk
ZDlhMmI0MGFiMDI0YWFlYjE0MDc0MWU5NmJhMmYuLjBkMWUyZjM5NTI3NDkzY2I2NjdmZTEzMTA4
NDE0NTkxYjEzZGY5M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCYXNpY1No
YXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCYXNpY1NoYXBlcy5oCkBAIC01Myw3
ICs1Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgZXF1YWxzKGNvbnN0IENTU0Jhc2lj
U2hhcGUmKSBjb25zdCA9IDA7CiAKICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcmVmZXJlbmNlQm94
KCkgY29uc3QgeyByZXR1cm4gbV9yZWZlcmVuY2VCb3guZ2V0KCk7IH0KLSAgICB2b2lkIHNldFJl
ZmVyZW5jZUJveChQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiByZWZlcmVuY2VCb3gpIHsg
bV9yZWZlcmVuY2VCb3ggPSByZWZlcmVuY2VCb3g7IH0KKyAgICB2b2lkIHNldFJlZmVyZW5jZUJv
eChSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHJlZmVyZW5jZUJveCkgeyBtX3JlZmVyZW5jZUJv
eCA9IHJlZmVyZW5jZUJveDsgfQogCiBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q1NTQmFzaWNTaGFw
ZSgpIHsgfQpAQCAtNzcsMTAgKzc3LDEwIEBAIHB1YmxpYzoKICAgICBDU1NQcmltaXRpdmVWYWx1
ZSogYm90dG9tUmlnaHRSYWRpdXMoKSBjb25zdCB7IHJldHVybiBtX2JvdHRvbVJpZ2h0UmFkaXVz
LmdldCgpOyB9CiAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGJvdHRvbUxlZnRSYWRpdXMoKSBjb25z
dCB7IHJldHVybiBtX2JvdHRvbUxlZnRSYWRpdXMuZ2V0KCk7IH0KIAotICAgIHZvaWQgc2V0VG9w
KFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHRvcCkgeyBtX3RvcCA9IHRvcDsgfQotICAg
IHZvaWQgc2V0UmlnaHQoUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcmlnaHQpIHsgbV9y
aWdodCA9IHJpZ2h0OyB9Ci0gICAgdm9pZCBzZXRCb3R0b20oUGFzc1JlZlB0cjxDU1NQcmltaXRp
dmVWYWx1ZT4gYm90dG9tKSB7IG1fYm90dG9tID0gYm90dG9tOyB9Ci0gICAgdm9pZCBzZXRMZWZ0
KFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGxlZnQpIHsgbV9sZWZ0ID0gbGVmdDsgfQor
ICAgIHZvaWQgc2V0VG9wKFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gdG9wKSB7IG1fdG9wID0g
dG9wOyB9CisgICAgdm9pZCBzZXRSaWdodChSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHJpZ2h0
KSB7IG1fcmlnaHQgPSByaWdodDsgfQorICAgIHZvaWQgc2V0Qm90dG9tKFJlZlB0cjxDU1NQcmlt
aXRpdmVWYWx1ZT4gYm90dG9tKSB7IG1fYm90dG9tID0gYm90dG9tOyB9CisgICAgdm9pZCBzZXRM
ZWZ0KFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gbGVmdCkgeyBtX2xlZnQgPSBsZWZ0OyB9CiAK
ICAgICB2b2lkIHVwZGF0ZVNoYXBlU2l6ZTRWYWx1ZXMoQ1NTUHJpbWl0aXZlVmFsdWUqIHRvcCwg
Q1NTUHJpbWl0aXZlVmFsdWUqIHJpZ2h0LCBDU1NQcmltaXRpdmVWYWx1ZSogYm90dG9tLCBDU1NQ
cmltaXRpdmVWYWx1ZSogbGVmdCkKICAgICB7CkBAIC0xMDUsMTAgKzEwNSwxMCBAQCBwdWJsaWM6
CiAgICAgICAgIHVwZGF0ZVNoYXBlU2l6ZTRWYWx1ZXModmFsdWUxLCB2YWx1ZTIsIHZhbHVlMywg
dmFsdWUyKTsKICAgICB9CiAKLSAgICB2b2lkIHNldFRvcExlZnRSYWRpdXMoUGFzc1JlZlB0cjxD
U1NQcmltaXRpdmVWYWx1ZT4gcmFkaXVzKSB7IG1fdG9wTGVmdFJhZGl1cyA9IHJhZGl1czsgfQot
ICAgIHZvaWQgc2V0VG9wUmlnaHRSYWRpdXMoUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4g
cmFkaXVzKSB7IG1fdG9wUmlnaHRSYWRpdXMgPSByYWRpdXM7IH0KLSAgICB2b2lkIHNldEJvdHRv
bVJpZ2h0UmFkaXVzKFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHJhZGl1cykgeyBtX2Jv
dHRvbVJpZ2h0UmFkaXVzID0gcmFkaXVzOyB9Ci0gICAgdm9pZCBzZXRCb3R0b21MZWZ0UmFkaXVz
KFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHJhZGl1cykgeyBtX2JvdHRvbUxlZnRSYWRp
dXMgPSByYWRpdXM7IH0KKyAgICB2b2lkIHNldFRvcExlZnRSYWRpdXMoUmVmUHRyPENTU1ByaW1p
dGl2ZVZhbHVlPiByYWRpdXMpIHsgbV90b3BMZWZ0UmFkaXVzID0gcmFkaXVzOyB9CisgICAgdm9p
ZCBzZXRUb3BSaWdodFJhZGl1cyhSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHJhZGl1cykgeyBt
X3RvcFJpZ2h0UmFkaXVzID0gcmFkaXVzOyB9CisgICAgdm9pZCBzZXRCb3R0b21SaWdodFJhZGl1
cyhSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHJhZGl1cykgeyBtX2JvdHRvbVJpZ2h0UmFkaXVz
ID0gcmFkaXVzOyB9CisgICAgdm9pZCBzZXRCb3R0b21MZWZ0UmFkaXVzKFJlZlB0cjxDU1NQcmlt
aXRpdmVWYWx1ZT4gcmFkaXVzKSB7IG1fYm90dG9tTGVmdFJhZGl1cyA9IHJhZGl1czsgfQogCiAg
ICAgdmlydHVhbCBTdHJpbmcgY3NzVGV4dCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwg
Ym9vbCBlcXVhbHMoY29uc3QgQ1NTQmFzaWNTaGFwZSYpIGNvbnN0IG92ZXJyaWRlOwpAQCAtMTQw
LDkgKzE0MCw5IEBAIHB1YmxpYzoKICAgICBDU1NQcmltaXRpdmVWYWx1ZSogY2VudGVyWSgpIGNv
bnN0IHsgcmV0dXJuIG1fY2VudGVyWS5nZXQoKTsgfQogICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBy
YWRpdXMoKSBjb25zdCB7IHJldHVybiBtX3JhZGl1cy5nZXQoKTsgfQogCi0gICAgdm9pZCBzZXRD
ZW50ZXJYKFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNlbnRlclgpIHsgbV9jZW50ZXJY
ID0gY2VudGVyWDsgfQotICAgIHZvaWQgc2V0Q2VudGVyWShQYXNzUmVmUHRyPENTU1ByaW1pdGl2
ZVZhbHVlPiBjZW50ZXJZKSB7IG1fY2VudGVyWSA9IGNlbnRlclk7IH0KLSAgICB2b2lkIHNldFJh
ZGl1cyhQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiByYWRpdXMpIHsgbV9yYWRpdXMgPSBy
YWRpdXM7IH0KKyAgICB2b2lkIHNldENlbnRlclgoUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBj
ZW50ZXJYKSB7IG1fY2VudGVyWCA9IGNlbnRlclg7IH0KKyAgICB2b2lkIHNldENlbnRlclkoUmVm
UHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjZW50ZXJZKSB7IG1fY2VudGVyWSA9IGNlbnRlclk7IH0K
KyAgICB2b2lkIHNldFJhZGl1cyhSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHJhZGl1cykgeyBt
X3JhZGl1cyA9IHJhZGl1czsgfQogCiBwcml2YXRlOgogICAgIENTU0Jhc2ljU2hhcGVDaXJjbGUo
KSB7IH0KQEAgLTE2MywxMCArMTYzLDEwIEBAIHB1YmxpYzoKICAgICBDU1NQcmltaXRpdmVWYWx1
ZSogcmFkaXVzWCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFkaXVzWC5nZXQoKTsgfQogICAgIENTU1By
aW1pdGl2ZVZhbHVlKiByYWRpdXNZKCkgY29uc3QgeyByZXR1cm4gbV9yYWRpdXNZLmdldCgpOyB9
CiAKLSAgICB2b2lkIHNldENlbnRlclgoUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY2Vu
dGVyWCkgeyBtX2NlbnRlclggPSBjZW50ZXJYOyB9Ci0gICAgdm9pZCBzZXRDZW50ZXJZKFBhc3NS
ZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNlbnRlclkpIHsgbV9jZW50ZXJZID0gY2VudGVyWTsg
fQotICAgIHZvaWQgc2V0UmFkaXVzWChQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiByYWRp
dXNYKSB7IG1fcmFkaXVzWCA9IHJhZGl1c1g7IH0KLSAgICB2b2lkIHNldFJhZGl1c1koUGFzc1Jl
ZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcmFkaXVzWSkgeyBtX3JhZGl1c1kgPSByYWRpdXNZOyB9
CisgICAgdm9pZCBzZXRDZW50ZXJYKFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY2VudGVyWCkg
eyBtX2NlbnRlclggPSBjZW50ZXJYOyB9CisgICAgdm9pZCBzZXRDZW50ZXJZKFJlZlB0cjxDU1NQ
cmltaXRpdmVWYWx1ZT4gY2VudGVyWSkgeyBtX2NlbnRlclkgPSBjZW50ZXJZOyB9CisgICAgdm9p
ZCBzZXRSYWRpdXNYKFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcmFkaXVzWCkgeyBtX3JhZGl1
c1ggPSByYWRpdXNYOyB9CisgICAgdm9pZCBzZXRSYWRpdXNZKFJlZlB0cjxDU1NQcmltaXRpdmVW
YWx1ZT4gcmFkaXVzWSkgeyBtX3JhZGl1c1kgPSByYWRpdXNZOyB9CiAKICAgICB2aXJ0dWFsIFN0
cmluZyBjc3NUZXh0KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIGVxdWFscyhj
b25zdCBDU1NCYXNpY1NoYXBlJikgY29uc3Qgb3ZlcnJpZGU7CkBAIC0xODYsNyArMTg2LDcgQEAg
Y2xhc3MgQ1NTQmFzaWNTaGFwZVBvbHlnb24gZmluYWwgOiBwdWJsaWMgQ1NTQmFzaWNTaGFwZSB7
CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxDU1NCYXNpY1NoYXBlUG9seWdvbj4gY3JlYXRlKCkg
eyByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NCYXNpY1NoYXBlUG9seWdvbik7IH0KIAotICAgIHZv
aWQgYXBwZW5kUG9pbnQoUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4geCwgUGFzc1JlZlB0
cjxDU1NQcmltaXRpdmVWYWx1ZT4geSkKKyAgICB2b2lkIGFwcGVuZFBvaW50KFJlZlB0cjxDU1NQ
cmltaXRpdmVWYWx1ZT4geCwgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiB5KQogICAgIHsKICAg
ICAgICAgbV92YWx1ZXMuYXBwZW5kKHgpOwogICAgICAgICBtX3ZhbHVlcy5hcHBlbmQoeSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQm9yZGVySW1hZ2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0JvcmRlckltYWdlLmNwcAppbmRleCBiZTc0MzJjZDhhZWRhMGQ2NzMy
YTkzZjg3YTBmMmIwMjM1OTczN2MzLi4xNjVkOTJiYTNjY2RkNzRlNzQ5NDBkYjkzMDE1ZTgwYzdj
YzU1YThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQm9yZGVySW1hZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCb3JkZXJJbWFnZS5jcHAKQEAgLTIyLDcgKzIy
LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8Q1NTVmFsdWVMaXN0PiBjcmVhdGVC
b3JkZXJJbWFnZVZhbHVlKFBhc3NSZWZQdHI8Q1NTVmFsdWU+IGltYWdlLCBQYXNzUmVmUHRyPENT
U1ZhbHVlPiBpbWFnZVNsaWNlLCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBib3JkZXJTbGljZSwgUGFz
c1JlZlB0cjxDU1NWYWx1ZT4gb3V0c2V0LCBQYXNzUmVmUHRyPENTU1ZhbHVlPiByZXBlYXQpCitS
ZWY8Q1NTVmFsdWVMaXN0PiBjcmVhdGVCb3JkZXJJbWFnZVZhbHVlKFJlZlB0cjxDU1NWYWx1ZT4g
aW1hZ2UsIFJlZlB0cjxDU1NWYWx1ZT4gaW1hZ2VTbGljZSwgUmVmUHRyPENTU1ZhbHVlPiBib3Jk
ZXJTbGljZSwgUmVmUHRyPENTU1ZhbHVlPiBvdXRzZXQsIFJlZlB0cjxDU1NWYWx1ZT4gcmVwZWF0
KQogewogICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQo
KTsKICAgICBpZiAoaW1hZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQm9y
ZGVySW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCb3JkZXJJbWFnZS5oCmluZGV4IGMy
YzI1ZGE4ODk3MjY2NTE3YjA3MDE4Y2RjNDJlNGQ1MGJmM2JjYzEuLjVjNDg2OTNlMjA0MzRkMjJi
MmUyYTAyODMwN2RkMDRiMWFlYjk1MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NCb3JkZXJJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCb3JkZXJJbWFnZS5o
CkBAIC0yMiwxMiArMjIsMTEgQEAKIAogI2luY2x1ZGUgIkNTU0JvcmRlckltYWdlU2xpY2VWYWx1
ZS5oIgogI2luY2x1ZGUgIkNTU1ZhbHVlTGlzdC5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJl
ZjxDU1NWYWx1ZUxpc3Q+IGNyZWF0ZUJvcmRlckltYWdlVmFsdWUoUGFzc1JlZlB0cjxDU1NWYWx1
ZT4gaW1hZ2UsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IGltYWdlU2xpY2UsIFBhc3NSZWZQdHI8Q1NT
VmFsdWU+IGJvcmRlclNsaWNlLCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBvdXRzZXQsIFBhc3NSZWZQ
dHI8Q1NTVmFsdWU+IHJlcGVhdCk7CitSZWY8Q1NTVmFsdWVMaXN0PiBjcmVhdGVCb3JkZXJJbWFn
ZVZhbHVlKFJlZlB0cjxDU1NWYWx1ZT4gaW1hZ2UsIFJlZlB0cjxDU1NWYWx1ZT4gaW1hZ2VTbGlj
ZSwgUmVmUHRyPENTU1ZhbHVlPiBib3JkZXJTbGljZSwgUmVmUHRyPENTU1ZhbHVlPiBvdXRzZXQs
IFJlZlB0cjxDU1NWYWx1ZT4gcmVwZWF0KTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUuY3BwCmluZGV4
IDVjYzA3ZmQ0MzdiZmE4ZTUwYmFlN2Y4NzE0MjQzOGEzZDhkMGVlMzguLjM0YmU0ZTkzNmVlNDhm
ZTkwMjg1N2I4ZTgxMmNkNTExYjE4MDI4NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUuY3BwCkBAIC0zMSw3ICszMSw3IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlOjpDU1NCb3JkZXJJbWFnZVNs
aWNlVmFsdWUoUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gc2xpY2VzLCBib29sIGZpbGwp
CitDU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWU6OkNTU0JvcmRlckltYWdlU2xpY2VWYWx1ZShSZWZQ
dHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHNsaWNlcywgYm9vbCBmaWxsKQogICAgIDogQ1NTVmFsdWUo
Qm9yZGVySW1hZ2VTbGljZUNsYXNzKQogICAgICwgbV9zbGljZXMoc2xpY2VzKQogICAgICwgbV9m
aWxsKGZpbGwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQm9yZGVySW1hZ2VT
bGljZVZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVl
LmgKaW5kZXggYjhiNzU1MjljNDg1Yjk3Yjk3MWI3NGRmNzA3YzEyOTAzNDg0Mzk5Mi4uZDgwYjQz
ODcyMDFiMGFkZTg2NzMxMTNjZjZkMDhmZmZkYTZhNjg0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0JvcmRlckltYWdlU2xpY2VWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUuaApAQCAtMjcsNyArMjcsNiBAQAogI2RlZmlu
ZSBDU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWVfaAogCiAjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFs
dWUuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzYsNyArMzUsNyBAQCBjbGFzcyBSZWN0Owog
CiBjbGFzcyBDU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUgOiBwdWJsaWMgQ1NTVmFsdWUgewogcHVi
bGljOgotICAgIHN0YXRpYyBSZWY8Q1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlPiBjcmVhdGUoUGFz
c1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gc2xpY2VzLCBib29sIGZpbGwpCisgICAgc3RhdGlj
IFJlZjxDU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWU+IGNyZWF0ZShSZWZQdHI8Q1NTUHJpbWl0aXZl
VmFsdWU+IHNsaWNlcywgYm9vbCBmaWxsKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlKHNsaWNlcywgZmlsbCkpOwogICAgIH0KQEAg
LTUzLDcgKzUyLDcgQEAgcHVibGljOgogICAgIGJvb2wgbV9maWxsOwogCiBwcml2YXRlOgotICAg
IENTU0JvcmRlckltYWdlU2xpY2VWYWx1ZShQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBz
bGljZXMsIGJvb2wgZmlsbCk7CisgICAgQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlKFJlZlB0cjxD
U1NQcmltaXRpdmVWYWx1ZT4gc2xpY2VzLCBib29sIGZpbGwpOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9u
VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuY3BwCmlu
ZGV4IDM2MTQyZjFiZjBiYzAyNDgwNzkzYjQwOWFjYzA3YzY5YThjMzc1NTkuLmI1Zjc1ZDlhNGI1
MDQyNDIyMTdlOTQ1MGFmZDA1NmQ3MzMyZTUwODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Q2FsY3VsYXRpb25WYWx1ZS5jcHAKQEAgLTE5OCw3ICsxOTgsNyBAQCBkb3VibGUgQ1NTQ2FsY1Zh
bHVlOjpjb21wdXRlTGVuZ3RoUHgoY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYgY29u
dmVyc2lvbgogY2xhc3MgQ1NTQ2FsY1ByaW1pdGl2ZVZhbHVlIGZpbmFsIDogcHVibGljIENTU0Nh
bGNFeHByZXNzaW9uTm9kZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFJlZjxDU1NDYWxjUHJpbWl0aXZlVmFsdWU+IGNyZWF0ZShQYXNzUmVmUHRy
PENTU1ByaW1pdGl2ZVZhbHVlPiB2YWx1ZSwgYm9vbCBpc0ludGVnZXIpCisgICAgc3RhdGljIFJl
ZjxDU1NDYWxjUHJpbWl0aXZlVmFsdWU+IGNyZWF0ZShSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+
IHZhbHVlLCBib29sIGlzSW50ZWdlcikKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IENTU0NhbGNQcmltaXRpdmVWYWx1ZSh2YWx1ZSwgaXNJbnRlZ2VyKSk7CiAgICAgfQpAQCAt
MjkxLDcgKzI5MSw3IEBAIHByaXZhdGU6CiAgICAgfQogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0
IENTU0NhbGNQcmltaXRpdmVWYWx1ZShQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiB2YWx1
ZSwgYm9vbCBpc0ludGVnZXIpCisgICAgZXhwbGljaXQgQ1NTQ2FsY1ByaW1pdGl2ZVZhbHVlKFJl
ZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gdmFsdWUsIGJvb2wgaXNJbnRlZ2VyKQogICAgICAgICA6
IENTU0NhbGNFeHByZXNzaW9uTm9kZSh1bml0Q2F0ZWdvcnkoKENTU1ByaW1pdGl2ZVZhbHVlOjpV
bml0VHlwZXMpdmFsdWUtPnByaW1pdGl2ZVR5cGUoKSksIGlzSW50ZWdlcikKICAgICAgICAgLCBt
X3ZhbHVlKHZhbHVlKQogICAgIHsKQEAgLTM0OCw3ICszNDgsNyBAQCBzdGF0aWMgaW5saW5lIGJv
b2wgaXNJbnRlZ2VyUmVzdWx0KENhbGNPcGVyYXRvciBvcCwgY29uc3QgQ1NTQ2FsY0V4cHJlc3Np
b25Ob2RlJgogY2xhc3MgQ1NTQ2FsY0JpbmFyeU9wZXJhdGlvbiBmaW5hbCA6IHB1YmxpYyBDU1ND
YWxjRXhwcmVzc2lvbk5vZGUgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgotICAgIHN0YXRpYyBSZWZQdHI8Q1NTQ2FsY0JpbmFyeU9wZXJhdGlvbj4gY3JlYXRlKENhbGNP
cGVyYXRvciBvcCwgUGFzc1JlZlB0cjxDU1NDYWxjRXhwcmVzc2lvbk5vZGU+IGxlZnRTaWRlLCBQ
YXNzUmVmUHRyPENTU0NhbGNFeHByZXNzaW9uTm9kZT4gcmlnaHRTaWRlKQorICAgIHN0YXRpYyBS
ZWZQdHI8Q1NTQ2FsY0JpbmFyeU9wZXJhdGlvbj4gY3JlYXRlKENhbGNPcGVyYXRvciBvcCwgUmVm
UHRyPENTU0NhbGNFeHByZXNzaW9uTm9kZT4gbGVmdFNpZGUsIFJlZlB0cjxDU1NDYWxjRXhwcmVz
c2lvbk5vZGU+IHJpZ2h0U2lkZSkKICAgICB7CiAgICAgICAgIEFTU0VSVChsZWZ0U2lkZS0+Y2F0
ZWdvcnkoKSA8IENhbGNPdGhlcik7CiAgICAgICAgIEFTU0VSVChyaWdodFNpZGUtPmNhdGVnb3J5
KCkgPCBDYWxjT3RoZXIpOwpAQCAtMzYxLDcgKzM2MSw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBDU1NDYWxjQmluYXJ5T3BlcmF0aW9uKG5ld0NhdGVnb3J5LCBvcCwg
bGVmdFNpZGUsIHJpZ2h0U2lkZSkpOwogICAgIH0KIAotICAgIHN0YXRpYyBSZWZQdHI8Q1NTQ2Fs
Y0V4cHJlc3Npb25Ob2RlPiBjcmVhdGVTaW1wbGlmaWVkKENhbGNPcGVyYXRvciBvcCwgUGFzc1Jl
ZlB0cjxDU1NDYWxjRXhwcmVzc2lvbk5vZGU+IGxlZnRTaWRlLCBQYXNzUmVmUHRyPENTU0NhbGNF
eHByZXNzaW9uTm9kZT4gcmlnaHRTaWRlKQorICAgIHN0YXRpYyBSZWZQdHI8Q1NTQ2FsY0V4cHJl
c3Npb25Ob2RlPiBjcmVhdGVTaW1wbGlmaWVkKENhbGNPcGVyYXRvciBvcCwgUmVmUHRyPENTU0Nh
bGNFeHByZXNzaW9uTm9kZT4gbGVmdFNpZGUsIFJlZlB0cjxDU1NDYWxjRXhwcmVzc2lvbk5vZGU+
IHJpZ2h0U2lkZSkKICAgICB7CiAgICAgICAgIENhbGN1bGF0aW9uQ2F0ZWdvcnkgbGVmdENhdGVn
b3J5ID0gbGVmdFNpZGUtPmNhdGVnb3J5KCk7CiAgICAgICAgIENhbGN1bGF0aW9uQ2F0ZWdvcnkg
cmlnaHRDYXRlZ29yeSA9IHJpZ2h0U2lkZS0+Y2F0ZWdvcnkoKTsKQEAgLTUxNCw3ICs1MTQsNyBA
QCBwcml2YXRlOgogICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19VTktOT1dO
OwogICAgIH0KIAotICAgIENTU0NhbGNCaW5hcnlPcGVyYXRpb24oQ2FsY3VsYXRpb25DYXRlZ29y
eSBjYXRlZ29yeSwgQ2FsY09wZXJhdG9yIG9wLCBQYXNzUmVmUHRyPENTU0NhbGNFeHByZXNzaW9u
Tm9kZT4gbGVmdFNpZGUsIFBhc3NSZWZQdHI8Q1NTQ2FsY0V4cHJlc3Npb25Ob2RlPiByaWdodFNp
ZGUpCisgICAgQ1NTQ2FsY0JpbmFyeU9wZXJhdGlvbihDYWxjdWxhdGlvbkNhdGVnb3J5IGNhdGVn
b3J5LCBDYWxjT3BlcmF0b3Igb3AsIFJlZlB0cjxDU1NDYWxjRXhwcmVzc2lvbk5vZGU+IGxlZnRT
aWRlLCBSZWZQdHI8Q1NTQ2FsY0V4cHJlc3Npb25Ob2RlPiByaWdodFNpZGUpCiAgICAgICAgIDog
Q1NTQ2FsY0V4cHJlc3Npb25Ob2RlKGNhdGVnb3J5LCBpc0ludGVnZXJSZXN1bHQob3AsICpsZWZ0
U2lkZSwgKnJpZ2h0U2lkZSkpCiAgICAgICAgICwgbV9sZWZ0U2lkZShsZWZ0U2lkZSkKICAgICAg
ICAgLCBtX3JpZ2h0U2lkZShyaWdodFNpZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IGQ5NWMxYmM5NzczMDE1ZTA4YThi
MWZiZjI1MGY2ZTRmMmE2OGY0ZjIuLjNkY2JlNGI5ZDEyM2Y4ZTU4MmYxMTQ2MGE1NTYyNDM5M2Vl
NmJlMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVj
bGFyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVj
bGFyYXRpb24uY3BwCkBAIC05MDAsOCArOTAwLDggQEAgUmVmPENTU1ZhbHVlPiBDb21wdXRlZFN0
eWxlRXh0cmFjdG9yOjp2YWx1ZUZvclNoYWRvdyhjb25zdCBTaGFkb3dEYXRhKiBzaGFkb3csIEMK
ICAgICAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiB4ID0gYWRqdXN0TGVuZ3RoRm9yWm9v
bShjdXJyU2hhZG93RGF0YS0+eCgpLCBzdHlsZSwgYWRqdXN0KTsKICAgICAgICAgUmVmUHRyPENT
U1ByaW1pdGl2ZVZhbHVlPiB5ID0gYWRqdXN0TGVuZ3RoRm9yWm9vbShjdXJyU2hhZG93RGF0YS0+
eSgpLCBzdHlsZSwgYWRqdXN0KTsKICAgICAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBi
bHVyID0gYWRqdXN0TGVuZ3RoRm9yWm9vbShjdXJyU2hhZG93RGF0YS0+cmFkaXVzKCksIHN0eWxl
LCBhZGp1c3QpOwotICAgICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHNwcmVhZCA9IHBy
b3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlUZXh0U2hhZG93ID8gUGFzc1JlZlB0cjxDU1NQcmltaXRp
dmVWYWx1ZT4oKSA6IGFkanVzdExlbmd0aEZvclpvb20oY3VyclNoYWRvd0RhdGEtPnNwcmVhZCgp
LCBzdHlsZSwgYWRqdXN0KTsKLSAgICAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBzdHls
ZSA9IHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlUZXh0U2hhZG93IHx8IGN1cnJTaGFkb3dEYXRh
LT5zdHlsZSgpID09IE5vcm1hbCA/IFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+KCkgOiBj
c3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlSW5zZXQpOworICAgICAg
ICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHNwcmVhZCA9IHByb3BlcnR5SUQgPT0gQ1NTUHJv
cGVydHlUZXh0U2hhZG93ID8gUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPigpIDogYWRqdXN0TGVu
Z3RoRm9yWm9vbShjdXJyU2hhZG93RGF0YS0+c3ByZWFkKCksIHN0eWxlLCBhZGp1c3QpOworICAg
ICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHN0eWxlID0gcHJvcGVydHlJRCA9PSBDU1NQ
cm9wZXJ0eVRleHRTaGFkb3cgfHwgY3VyclNoYWRvd0RhdGEtPnN0eWxlKCkgPT0gTm9ybWFsID8g
UmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPigpIDogY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZp
ZXJWYWx1ZShDU1NWYWx1ZUluc2V0KTsKICAgICAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVl
PiBjb2xvciA9IGNzc1ZhbHVlUG9vbC5jcmVhdGVDb2xvclZhbHVlKGN1cnJTaGFkb3dEYXRhLT5j
b2xvcigpLnJnYigpKTsKICAgICAgICAgbGlzdC5nZXQoKS5wcmVwZW5kKENTU1NoYWRvd1ZhbHVl
OjpjcmVhdGUoeC5yZWxlYXNlKCksIHkucmVsZWFzZSgpLCBibHVyLnJlbGVhc2UoKSwgc3ByZWFk
LnJlbGVhc2UoKSwgc3R5bGUucmVsZWFzZSgpLCBjb2xvci5yZWxlYXNlKCkpKTsKICAgICB9CkBA
IC0xMzEwLDcgKzEzMTAsNyBAQCBzdGF0aWMgUmVmPENTU1ZhbHVlPiBjcmVhdGVMaW5lQm94Q29u
dGFpblZhbHVlKHVuc2lnbmVkIGxpbmVCb3hDb250YWluKQogICAgIHJldHVybiBDU1NMaW5lQm94
Q29udGFpblZhbHVlOjpjcmVhdGUobGluZUJveENvbnRhaW4pOwogfQogCi1Db21wdXRlZFN0eWxl
RXh0cmFjdG9yOjpDb21wdXRlZFN0eWxlRXh0cmFjdG9yKFBhc3NSZWZQdHI8Tm9kZT4gbm9kZSwg
Ym9vbCBhbGxvd1Zpc2l0ZWRTdHlsZSwgUHNldWRvSWQgcHNldWRvRWxlbWVudFNwZWNpZmllcikK
K0NvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OkNvbXB1dGVkU3R5bGVFeHRyYWN0b3IoUmVmUHRyPE5v
ZGU+IG5vZGUsIGJvb2wgYWxsb3dWaXNpdGVkU3R5bGUsIFBzZXVkb0lkIHBzZXVkb0VsZW1lbnRT
cGVjaWZpZXIpCiAgICAgOiBtX25vZGUobm9kZSkKICAgICAsIG1fcHNldWRvRWxlbWVudFNwZWNp
Zmllcihwc2V1ZG9FbGVtZW50U3BlY2lmaWVyKQogICAgICwgbV9hbGxvd1Zpc2l0ZWRTdHlsZShh
bGxvd1Zpc2l0ZWRTdHlsZSkKQEAgLTEzMTgsNyArMTMxOCw3IEBAIENvbXB1dGVkU3R5bGVFeHRy
YWN0b3I6OkNvbXB1dGVkU3R5bGVFeHRyYWN0b3IoUGFzc1JlZlB0cjxOb2RlPiBub2RlLCBib29s
IGFsbG93CiB9CiAKIAotQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpDU1NDb21wdXRlZFN0
eWxlRGVjbGFyYXRpb24oUGFzc1JlZlB0cjxOb2RlPiBuLCBib29sIGFsbG93VmlzaXRlZFN0eWxl
LCBjb25zdCBTdHJpbmcmIHBzZXVkb0VsZW1lbnROYW1lKQorQ1NTQ29tcHV0ZWRTdHlsZURlY2xh
cmF0aW9uOjpDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24oUmVmUHRyPE5vZGU+IG4sIGJvb2wg
YWxsb3dWaXNpdGVkU3R5bGUsIGNvbnN0IFN0cmluZyYgcHNldWRvRWxlbWVudE5hbWUpCiAgICAg
OiBtX25vZGUobikKICAgICAsIG1fYWxsb3dWaXNpdGVkU3R5bGUoYWxsb3dWaXNpdGVkU3R5bGUp
CiAgICAgLCBtX3JlZkNvdW50KDEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Q29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uLmgKaW5kZXggNmU5MWM5M2RiNDM4MjQ2YWE5MWRhMjFjMTUzZGRm
NDAzYWY4NTkzOC4uZTEzYTM4YTJlZjc4MzBjNTAyZGYyMzY2YTc5NzdjNGRkN2EzNGY1YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaApA
QCAtNDcsNyArNDcsNyBAQCBlbnVtIEFkanVzdFBpeGVsVmFsdWVzRm9yQ29tcHV0ZWRTdHlsZSB7
IEFkanVzdFBpeGVsVmFsdWVzLCBEb05vdEFkanVzdFBpeGVsVmFsdQogCiBjbGFzcyBDb21wdXRl
ZFN0eWxlRXh0cmFjdG9yIHsKIHB1YmxpYzoKLSAgICBDb21wdXRlZFN0eWxlRXh0cmFjdG9yKFBh
c3NSZWZQdHI8Tm9kZT4sIGJvb2wgYWxsb3dWaXNpdGVkU3R5bGUgPSBmYWxzZSwgUHNldWRvSWQg
PSBOT1BTRVVETyk7CisgICAgQ29tcHV0ZWRTdHlsZUV4dHJhY3RvcihSZWZQdHI8Tm9kZT4sIGJv
b2wgYWxsb3dWaXNpdGVkU3R5bGUgPSBmYWxzZSwgUHNldWRvSWQgPSBOT1BTRVVETyk7CiAKICAg
ICBSZWZQdHI8Q1NTVmFsdWU+IHByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCwgRVVwZGF0ZUxh
eW91dCA9IFVwZGF0ZUxheW91dCkgY29uc3Q7CiAKQEAgLTY4LDcgKzY4LDcgQEAgcHJpdmF0ZToK
ICAgICBOb2RlKiBzdHlsZWROb2RlKCkgY29uc3Q7CiAKICAgICBSZWZQdHI8Q1NTVmFsdWU+IHN2
Z1Byb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCwgRVVwZGF0ZUxheW91dCkgY29uc3Q7Ci0gICAg
UmVmUHRyPFNWR1BhaW50PiBhZGp1c3RTVkdQYWludEZvckN1cnJlbnRDb2xvcihQYXNzUmVmUHRy
PFNWR1BhaW50PiwgUmVuZGVyU3R5bGUqKSBjb25zdDsKKyAgICBSZWZQdHI8U1ZHUGFpbnQ+IGFk
anVzdFNWR1BhaW50Rm9yQ3VycmVudENvbG9yKFJlZlB0cjxTVkdQYWludD4sIFJlbmRlclN0eWxl
KikgY29uc3Q7CiAKICAgICBzdGF0aWMgUmVmPENTU1ZhbHVlPiB2YWx1ZUZvclNoYWRvdyhjb25z
dCBTaGFkb3dEYXRhKiwgQ1NTUHJvcGVydHlJRCwgY29uc3QgUmVuZGVyU3R5bGUmLCBBZGp1c3RQ
aXhlbFZhbHVlc0ZvckNvbXB1dGVkU3R5bGUgPSBBZGp1c3RQaXhlbFZhbHVlcyk7CiAgICAgUmVm
UHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjdXJyZW50Q29sb3JPclZhbGlkQ29sb3IoUmVuZGVyU3R5
bGUqLCBjb25zdCBDb2xvciYpIGNvbnN0OwpAQCAtODUsNyArODUsNyBAQCBwcml2YXRlOgogCiBj
bGFzcyBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24gZmluYWwgOiBwdWJsaWMgQ1NTU3R5bGVE
ZWNsYXJhdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxDU1NDb21wdXRlZFN0eWxlRGVj
bGFyYXRpb24+IGNyZWF0ZShQYXNzUmVmUHRyPE5vZGU+IG5vZGUsIGJvb2wgYWxsb3dWaXNpdGVk
U3R5bGUgPSBmYWxzZSwgY29uc3QgU3RyaW5nJiBwc2V1ZG9FbGVtZW50TmFtZSA9IFN0cmluZygp
KQorICAgIHN0YXRpYyBSZWY8Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uPiBjcmVhdGUoUmVm
UHRyPE5vZGU+IG5vZGUsIGJvb2wgYWxsb3dWaXNpdGVkU3R5bGUgPSBmYWxzZSwgY29uc3QgU3Ry
aW5nJiBwc2V1ZG9FbGVtZW50TmFtZSA9IFN0cmluZygpKQogICAgIHsKICAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uKG5vZGUsIGFsbG93Vmlz
aXRlZFN0eWxlLCBwc2V1ZG9FbGVtZW50TmFtZSkpOwogICAgIH0KQEAgLTk3LDcgKzk3LDcgQEAg
cHVibGljOgogICAgIFN0cmluZyBnZXRQcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQpIGNvbnN0
OwogCiBwcml2YXRlOgotICAgIFdFQkNPUkVfRVhQT1JUIENTU0NvbXB1dGVkU3R5bGVEZWNsYXJh
dGlvbihQYXNzUmVmUHRyPE5vZGU+LCBib29sIGFsbG93VmlzaXRlZFN0eWxlLCBjb25zdCBTdHJp
bmcmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24oUmVm
UHRyPE5vZGU+LCBib29sIGFsbG93VmlzaXRlZFN0eWxlLCBjb25zdCBTdHJpbmcmKTsKIAogICAg
IC8vIENTU09NIGZ1bmN0aW9ucy4gRG9uJ3QgbWFrZSB0aGVzZSBwdWJsaWMuCiAgICAgdmlydHVh
bCBDU1NSdWxlKiBwYXJlbnRSdWxlKCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NDcm9zc2ZhZGVWYWx1ZS5oCmluZGV4IGZhMDNiZDk3Njg2ODMxM2FhNjA0MzUxNGQ4YjAxYjJh
YmM1OWI5ZTguLmFhNmQ3NDIyZWJlMTYxYTZiZjI1OTFjNDgyZDI3MzViZTU5NjVkMjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5oCkBAIC00Myw3ICs0Myw3IEBAIGNsYXNz
IERvY3VtZW50OwogY2xhc3MgQ1NTQ3Jvc3NmYWRlVmFsdWUgOiBwdWJsaWMgQ1NTSW1hZ2VHZW5l
cmF0b3JWYWx1ZSB7CiAgICAgZnJpZW5kIGNsYXNzIENyb3NzZmFkZVN1YmltYWdlT2JzZXJ2ZXJQ
cm94eTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPENTU0Nyb3NzZmFkZVZhbHVlPiBjcmVhdGUo
UGFzc1JlZlB0cjxDU1NWYWx1ZT4gZnJvbVZhbHVlLCBQYXNzUmVmUHRyPENTU1ZhbHVlPiB0b1Zh
bHVlKQorICAgIHN0YXRpYyBSZWY8Q1NTQ3Jvc3NmYWRlVmFsdWU+IGNyZWF0ZShSZWZQdHI8Q1NT
VmFsdWU+IGZyb21WYWx1ZSwgUmVmUHRyPENTU1ZhbHVlPiB0b1ZhbHVlKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTQ3Jvc3NmYWRlVmFsdWUoZnJvbVZhbHVlLCB0b1Zh
bHVlKSk7CiAgICAgfQpAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGxvYWRT
dWJpbWFnZXMoQ2FjaGVkUmVzb3VyY2VMb2FkZXImLCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlv
bnMmKTsKIAotICAgIHZvaWQgc2V0UGVyY2VudGFnZShQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZh
bHVlPiBwZXJjZW50YWdlVmFsdWUpIHsgbV9wZXJjZW50YWdlVmFsdWUgPSBwZXJjZW50YWdlVmFs
dWU7IH0KKyAgICB2b2lkIHNldFBlcmNlbnRhZ2UoUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBw
ZXJjZW50YWdlVmFsdWUpIHsgbV9wZXJjZW50YWdlVmFsdWUgPSBwZXJjZW50YWdlVmFsdWU7IH0K
IAogICAgIGJvb2wgdHJhdmVyc2VTdWJyZXNvdXJjZXMoY29uc3Qgc3RkOjpmdW5jdGlvbjxib29s
IChjb25zdCBDYWNoZWRSZXNvdXJjZSYpPiYgaGFuZGxlcikgY29uc3Q7CiAKQEAgLTcyLDcgKzcy
LDcgQEAgcHVibGljOgogICAgIGJvb2wgZXF1YWxJbnB1dEltYWdlcyhjb25zdCBDU1NDcm9zc2Zh
ZGVWYWx1ZSYpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIENTU0Nyb3NzZmFkZVZhbHVlKFBhc3NS
ZWZQdHI8Q1NTVmFsdWU+IGZyb21WYWx1ZSwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gdG9WYWx1ZSkK
KyAgICBDU1NDcm9zc2ZhZGVWYWx1ZShSZWZQdHI8Q1NTVmFsdWU+IGZyb21WYWx1ZSwgUmVmUHRy
PENTU1ZhbHVlPiB0b1ZhbHVlKQogICAgICAgICA6IENTU0ltYWdlR2VuZXJhdG9yVmFsdWUoQ3Jv
c3NmYWRlQ2xhc3MpCiAgICAgICAgICwgbV9mcm9tVmFsdWUoZnJvbVZhbHVlKQogICAgICAgICAs
IG1fdG9WYWx1ZSh0b1ZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Zp
bHRlckltYWdlVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVl
LmgKaW5kZXggMTI5NzI0ZmRlMzVlNWRjYWFkNzU3MmI4NTBlYmE0ZTA5MDBhY2EyYi4uYWMwNGQ4
ZjFkMTZhYTI0OTAyYWQwYjBjZjYxZDBlMGU2YjhkYzYyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTRmlsdGVySW1hZ2VWYWx1ZS5oCkBAIC04MCw3ICs4MCw3IEBAIHB1YmxpYzoKICAgICBDYWNo
ZWRJbWFnZSogY2FjaGVkSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZEltYWdlLmdldCgp
OyB9CiAKIHByaXZhdGU6Ci0gICAgQ1NTRmlsdGVySW1hZ2VWYWx1ZShQYXNzUmVmUHRyPENTU1Zh
bHVlPiBpbWFnZVZhbHVlLCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBmaWx0ZXJWYWx1ZSkKKyAgICBD
U1NGaWx0ZXJJbWFnZVZhbHVlKFJlZlB0cjxDU1NWYWx1ZT4gaW1hZ2VWYWx1ZSwgUmVmUHRyPENT
U1ZhbHVlPiBmaWx0ZXJWYWx1ZSkKICAgICAgICAgOiBDU1NJbWFnZUdlbmVyYXRvclZhbHVlKEZp
bHRlckltYWdlQ2xhc3MpCiAgICAgICAgICwgbV9pbWFnZVZhbHVlKGltYWdlVmFsdWUpCiAgICAg
ICAgICwgbV9maWx0ZXJWYWx1ZShmaWx0ZXJWYWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NGb250RmFjZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlLmgK
aW5kZXggOWViMDIxYTNmMzk2YjgxNDgyNmFkODkyYmYyNGZhOTA5NGQxZjgzZS4uZDA0ZDg3ZDZk
ZTkxYjk1NjA2MTdmOGVjODNhMjVjMzJiZGUwMWE0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0ZvbnRGYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNl
LmgKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVm
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZUxvYWRFdmVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VMb2FkRXZlbnQuY3BwCmluZGV4
IGMxODAxYmU4MGY3ZjY5YzU4YzFjZjA3MDAyMDhkOTFkNjMxNWM0NWMuLmFhZjBkZjNhNTBiZDY0
MTRkYmZlYWQ4ZmIxNmQ1MDgyYmFjOWU2MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NGb250RmFjZUxvYWRFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Zv
bnRGYWNlTG9hZEV2ZW50LmNwcApAQCAtMzksNyArMzksNyBAQCBDU1NGb250RmFjZUxvYWRFdmVu
dDo6Q1NTRm9udEZhY2VMb2FkRXZlbnQoKQogewogfQogCi1DU1NGb250RmFjZUxvYWRFdmVudDo6
Q1NTRm9udEZhY2VMb2FkRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBQYXNzUmVmUHRy
PENTU0ZvbnRGYWNlUnVsZT4gZm9udGZhY2UsIFBhc3NSZWZQdHI8RE9NRXJyb3I+IGVycm9yKQor
Q1NTRm9udEZhY2VMb2FkRXZlbnQ6OkNTU0ZvbnRGYWNlTG9hZEV2ZW50KGNvbnN0IEF0b21pY1N0
cmluZyYgdHlwZSwgUmVmUHRyPENTU0ZvbnRGYWNlUnVsZT4gZm9udGZhY2UsIFJlZlB0cjxET01F
cnJvcj4gZXJyb3IpCiAgICAgOiBFdmVudCh0eXBlLCBmYWxzZSwgZmFsc2UpCiAgICAgLCBtX2Zv
bnRmYWNlKGZvbnRmYWNlKQogICAgICwgbV9lcnJvcihlcnJvcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZUxvYWRFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ZvbnRGYWNlTG9hZEV2ZW50LmgKaW5kZXggNjk2YmFjNDQxZjdhYjdjZTI4Y2M2NTk0NTM0
YTYxOWY2ZWJjNDhhOC4uNGNkYzc5MTY0MDA2OGY2NDFlMmZkZGNmYTYzNGIzMmNmMjY2OGRhYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlTG9hZEV2ZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlTG9hZEV2ZW50LmgKQEAgLTM4LDcgKzM4
LDYgQEAKICNpbmNsdWRlICJET01FcnJvci5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVk
ZSAiRXZlbnROYW1lcy5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02MCwxMiArNTksMTIgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWY8Q1NTRm9udEZhY2VMb2FkRXZlbnQ+KCpu
ZXcgQ1NTRm9udEZhY2VMb2FkRXZlbnQodHlwZSwgaW5pdGlhbGl6ZXIpKTsKICAgICB9CiAKLSAg
ICBzdGF0aWMgUmVmPENTU0ZvbnRGYWNlTG9hZEV2ZW50PiBjcmVhdGVGb3JGb250RmFjZVJ1bGUo
Y29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBQYXNzUmVmUHRyPENTU0ZvbnRGYWNlUnVsZT4gcnVs
ZSkKKyAgICBzdGF0aWMgUmVmPENTU0ZvbnRGYWNlTG9hZEV2ZW50PiBjcmVhdGVGb3JGb250RmFj
ZVJ1bGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBSZWZQdHI8Q1NTRm9udEZhY2VSdWxlPiBy
dWxlKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmPENTU0ZvbnRGYWNlTG9hZEV2ZW50
PigqbmV3IENTU0ZvbnRGYWNlTG9hZEV2ZW50KHR5cGUsIHJ1bGUsIDApKTsKICAgICB9CiAKLSAg
ICBzdGF0aWMgUmVmPENTU0ZvbnRGYWNlTG9hZEV2ZW50PiBjcmVhdGVGb3JFcnJvcihQYXNzUmVm
UHRyPENTU0ZvbnRGYWNlUnVsZT4gcnVsZSwgUGFzc1JlZlB0cjxET01FcnJvcj4gZXJyb3IpCisg
ICAgc3RhdGljIFJlZjxDU1NGb250RmFjZUxvYWRFdmVudD4gY3JlYXRlRm9yRXJyb3IoUmVmUHRy
PENTU0ZvbnRGYWNlUnVsZT4gcnVsZSwgUmVmUHRyPERPTUVycm9yPiBlcnJvcikKICAgICB7CiAg
ICAgICAgIHJldHVybiBhZG9wdFJlZjxDU1NGb250RmFjZUxvYWRFdmVudD4oKm5ldyBDU1NGb250
RmFjZUxvYWRFdmVudChldmVudE5hbWVzKCkuZXJyb3JFdmVudCwgcnVsZSwgZXJyb3IpKTsKICAg
ICB9CkBAIC03OSw3ICs3OCw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBDU1NGb250RmFj
ZUxvYWRFdmVudCgpOwotICAgIENTU0ZvbnRGYWNlTG9hZEV2ZW50KGNvbnN0IEF0b21pY1N0cmlu
ZyYsIFBhc3NSZWZQdHI8Q1NTRm9udEZhY2VSdWxlPiwgUGFzc1JlZlB0cjxET01FcnJvcj4pOwor
ICAgIENTU0ZvbnRGYWNlTG9hZEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYsIFJlZlB0cjxDU1NG
b250RmFjZVJ1bGU+LCBSZWZQdHI8RE9NRXJyb3I+KTsKICAgICBDU1NGb250RmFjZUxvYWRFdmVu
dChjb25zdCBBdG9taWNTdHJpbmcmLCBjb25zdCBDU1NGb250RmFjZUxvYWRFdmVudEluaXQmKTsK
IAogICAgIFJlZlB0cjxDU1NGb250RmFjZVJ1bGU+IG1fZm9udGZhY2U7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NGb250RmFjZVNvdXJjZS5oCmluZGV4IGEyNjA0MTM0NDMxYjYyZTcxNGQ3NDg3YTVlNTFj
NTk3YWFiN2NiZGYuLjdiNmQyODRjY2UwODAzYWIzMWI1NzU1ZjU0MDU4OTI3NmU2ODEyYTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5oCkBAIC02Niw3ICs2Niw3IEBAIHB1
YmxpYzoKIAogI2lmIEVOQUJMRShTVkdfRk9OVFMpCiAgICAgU1ZHRm9udEZhY2VFbGVtZW50KiBz
dmdGb250RmFjZUVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX3N2Z0ZvbnRGYWNlRWxlbWVudC5n
ZXQoKTsgfQotICAgIHZvaWQgc2V0U1ZHRm9udEZhY2VFbGVtZW50KFBhc3NSZWZQdHI8U1ZHRm9u
dEZhY2VFbGVtZW50PiBlbGVtZW50KSB7IG1fc3ZnRm9udEZhY2VFbGVtZW50ID0gZWxlbWVudDsg
fQorICAgIHZvaWQgc2V0U1ZHRm9udEZhY2VFbGVtZW50KFJlZlB0cjxTVkdGb250RmFjZUVsZW1l
bnQ+IGVsZW1lbnQpIHsgbV9zdmdGb250RmFjZUVsZW1lbnQgPSBlbGVtZW50OyB9CiAgICAgYm9v
bCBpc1NWR0ZvbnRGYWNlU291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9zdmdGb250RmFjZUVsZW1l
bnQgfHwgbV9oYXNFeHRlcm5hbFNWR0ZvbnQ7IH0KICAgICB2b2lkIHNldEhhc0V4dGVybmFsU1ZH
Rm9udCgpIHsgbV9oYXNFeHRlcm5hbFNWR0ZvbnQgPSB0cnVlOyB9CiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5oCmluZGV4IGMzODZhZmViOGZmNjUxMjFhMDBl
ZWY2NGNiNzZkOWQyZjY3MmE5YTAuLmYzYWFmZjkzYWE2YTM2MWJlYmM1OTI1ZGFkMTZmYzJjY2Jk
NjEzYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuaApAQCAtMjgs
NyArMjgsNiBAQAogCiAjaW5jbHVkZSAiQ1NTVmFsdWUuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNv
dXJjZUhhbmRsZS5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ZvbnRTZWxlY3Rvci5jcHAKaW5kZXggMjAyY2ZjMDk1YTY3ZThlNmE1MmU1MDc4NTliNzBm
MmM5Mzk5YjhkZi4uMmQwZmRhMjFiNTZmNjUxNGE0NzliMzQ5MTYzYWNhMTUzNmYwNTlhOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAKQEAgLTYxNiw3ICs2MTYsNyBAQCBz
aXplX3QgQ1NTRm9udFNlbGVjdG9yOjpmYWxsYmFja0ZvbnRDb3VudCgpCiAgICAgcmV0dXJuIDA7
CiB9CiAKLVBhc3NSZWZQdHI8Rm9udD4gQ1NTRm9udFNlbGVjdG9yOjpmYWxsYmFja0ZvbnRBdChj
b25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbiwgc2l6ZV90IGluZGV4KQorUmVm
UHRyPEZvbnQ+IENTU0ZvbnRTZWxlY3Rvcjo6ZmFsbGJhY2tGb250QXQoY29uc3QgRm9udERlc2Ny
aXB0aW9uJiBmb250RGVzY3JpcHRpb24sIHNpemVfdCBpbmRleCkKIHsKICAgICBBU1NFUlRfVU5V
U0VEKGluZGV4LCAhaW5kZXgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Rm9udFNlbGVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmgKaW5k
ZXggNDdlYTY0MGNlMTI0ZGZjYjFlYmZlNTJkZTdiZTYxZDMwMWYzMDhiNC4uMjA4M2U3MGZjZjdk
Zjg5NzM0M2VlOGMzODQ0ZGQ2MzZiYTc2ZGNmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0ZvbnRTZWxlY3Rvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2Vs
ZWN0b3IuaApAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIEZvbnRSYW5n
ZXMgZm9udFJhbmdlc0ZvckZhbWlseShjb25zdCBGb250RGVzY3JpcHRpb24mLCBjb25zdCBBdG9t
aWNTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHNpemVfdCBmYWxsYmFja0ZvbnRDb3Vu
dCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGb250PiBmYWxsYmFja0ZvbnRB
dChjb25zdCBGb250RGVzY3JpcHRpb24mLCBzaXplX3QpIG92ZXJyaWRlOworICAgIHZpcnR1YWwg
UmVmUHRyPEZvbnQ+IGZhbGxiYWNrRm9udEF0KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIHNpemVf
dCkgb3ZlcnJpZGU7CiAgICAgQ1NTU2VnbWVudGVkRm9udEZhY2UqIGdldEZvbnRGYWNlKGNvbnN0
IEZvbnREZXNjcmlwdGlvbiYsIGNvbnN0IEF0b21pY1N0cmluZyYgZmFtaWx5KTsKIAogICAgIHZp
cnR1YWwgYm9vbCByZXNvbHZlc0ZhbWlseUZvcihjb25zdCBGb250RGVzY3JpcHRpb24mKSBjb25z
dCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250VmFsdWUu
aCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250VmFsdWUuaAppbmRleCA1MjBhNDdmZWY1NTc2
NTEyOGNmNzZhMTNjNDYxYmZjOGU5MTgyYTMyLi5kODM1YTg4ZjMyMzFhZGY3MTgyN2Y3MmZkYmE0
YWJhOThjOTFjZmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFZhbHVl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRWYWx1ZS5oCkBAIC0yMiw3ICsyMiw2
IEBACiAjZGVmaW5lIENTU0ZvbnRWYWx1ZV9oCiAKICNpbmNsdWRlICJDU1NWYWx1ZS5oIgotI2lu
Y2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRnVuY3Rp
b25WYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRnVuY3Rpb25WYWx1ZS5jcHAKaW5k
ZXggYTJiNzkwMjNmYjQ0NmMzM2Y4NDQ0OGU4NWZhNTYzNGNlNzlhYjVmMi4uYTA0ZGVjZTNkZWRi
ZDNiNWE5YzE2MGZmY2FhMTg2YWZjMTA5NDI0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0Z1bmN0aW9uVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGdW5j
dGlvblZhbHVlLmNwcApAQCAtNDAsNyArNDAsNyBAQCBDU1NGdW5jdGlvblZhbHVlOjpDU1NGdW5j
dGlvblZhbHVlKENTU1BhcnNlckZ1bmN0aW9uKiBmdW5jdGlvbikKICAgICAgICAgbV9hcmdzID0g
Q1NTVmFsdWVMaXN0OjpjcmVhdGVGcm9tUGFyc2VyVmFsdWVMaXN0KCpmdW5jdGlvbi0+YXJncyk7
CiB9CiAKLUNTU0Z1bmN0aW9uVmFsdWU6OkNTU0Z1bmN0aW9uVmFsdWUoY29uc3QgU3RyaW5nJiBu
YW1lLCBQYXNzUmVmUHRyPENTU1ZhbHVlTGlzdD4gYXJncykKK0NTU0Z1bmN0aW9uVmFsdWU6OkNT
U0Z1bmN0aW9uVmFsdWUoY29uc3QgU3RyaW5nJiBuYW1lLCBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBh
cmdzKQogICAgIDogQ1NTVmFsdWUoRnVuY3Rpb25DbGFzcykKICAgICAsIG1fbmFtZShuYW1lKQog
ICAgICwgbV9hcmdzKGFyZ3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRnVu
Y3Rpb25WYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Z1bmN0aW9uVmFsdWUuaAppbmRl
eCA1Nzc0YzUzYjk1MTg3YWU5NWQ3MmJhYzliZDM1YTY0NDg4ZmI5OTA5Li4xOGJhMDIzYzkyMGU3
ODMxZWE0MzQ2M2NmYTczNTM1YzJmNTkwMTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTRnVuY3Rpb25WYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGdW5jdGlv
blZhbHVlLmgKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBDU1NGdW5jdGlvblZhbHVlKGZ1bmN0aW9uKSk7CiAgICAgfQogCi0gICAgc3RhdGlj
IFJlZjxDU1NGdW5jdGlvblZhbHVlPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVm
UHRyPENTU1ZhbHVlTGlzdD4gYXJncykKKyAgICBzdGF0aWMgUmVmPENTU0Z1bmN0aW9uVmFsdWU+
IGNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGFyZ3MpCiAg
ICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NGdW5jdGlvblZhbHVlKG5hbWUs
IGFyZ3MpKTsKICAgICB9CkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAg
ICBleHBsaWNpdCBDU1NGdW5jdGlvblZhbHVlKENTU1BhcnNlckZ1bmN0aW9uKik7Ci0gICAgQ1NT
RnVuY3Rpb25WYWx1ZShjb25zdCBTdHJpbmcmLCBQYXNzUmVmUHRyPENTU1ZhbHVlTGlzdD4pOwor
ICAgIENTU0Z1bmN0aW9uVmFsdWUoY29uc3QgU3RyaW5nJiwgUmVmUHRyPENTU1ZhbHVlTGlzdD4p
OwogCiAgICAgU3RyaW5nIG1fbmFtZTsKICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBtX2FyZ3M7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5oIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuaAppbmRleCAzYWQ3MDY1ZTNkNWEzODUz
ZmEyMmUwYzdiYjVlMzFiY2E0ODUzOWZkLi41YzFjMWZhOGQwM2I3YTIzMzhlZTE4NDdhYzU0NDA4
ODE3YzQ4MTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmgKQEAgLTY0LDEw
ICs2NCwxMCBAQCBjbGFzcyBDU1NHcmFkaWVudFZhbHVlIDogcHVibGljIENTU0ltYWdlR2VuZXJh
dG9yVmFsdWUgewogcHVibGljOgogICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UoUmVuZGVyRWxlbWVu
dCosIGNvbnN0IEZsb2F0U2l6ZSYpOwogCi0gICAgdm9pZCBzZXRGaXJzdFgoUGFzc1JlZlB0cjxD
U1NQcmltaXRpdmVWYWx1ZT4gdmFsKSB7IG1fZmlyc3RYID0gdmFsOyB9Ci0gICAgdm9pZCBzZXRG
aXJzdFkoUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gdmFsKSB7IG1fZmlyc3RZID0gdmFs
OyB9Ci0gICAgdm9pZCBzZXRTZWNvbmRYKFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHZh
bCkgeyBtX3NlY29uZFggPSB2YWw7IH0KLSAgICB2b2lkIHNldFNlY29uZFkoUGFzc1JlZlB0cjxD
U1NQcmltaXRpdmVWYWx1ZT4gdmFsKSB7IG1fc2Vjb25kWSA9IHZhbDsgfQorICAgIHZvaWQgc2V0
Rmlyc3RYKFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gdmFsKSB7IG1fZmlyc3RYID0gdmFsOyB9
CisgICAgdm9pZCBzZXRGaXJzdFkoUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiB2YWwpIHsgbV9m
aXJzdFkgPSB2YWw7IH0KKyAgICB2b2lkIHNldFNlY29uZFgoUmVmUHRyPENTU1ByaW1pdGl2ZVZh
bHVlPiB2YWwpIHsgbV9zZWNvbmRYID0gdmFsOyB9CisgICAgdm9pZCBzZXRTZWNvbmRZKFJlZlB0
cjxDU1NQcmltaXRpdmVWYWx1ZT4gdmFsKSB7IG1fc2Vjb25kWSA9IHZhbDsgfQogCiAgICAgdm9p
ZCBhZGRTdG9wKGNvbnN0IENTU0dyYWRpZW50Q29sb3JTdG9wJiBzdG9wKSB7IG1fc3RvcHMuYXBw
ZW5kKHN0b3ApOyB9CiAKQEAgLTEzOSw3ICsxMzksNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IENTU0xpbmVhckdyYWRpZW50VmFsdWUocmVwZWF0LCBncmFkaWVudFR5
cGUpKTsKICAgICB9CiAKLSAgICB2b2lkIHNldEFuZ2xlKFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZl
VmFsdWU+IHZhbCkgeyBtX2FuZ2xlID0gdmFsOyB9CisgICAgdm9pZCBzZXRBbmdsZShSZWZQdHI8
Q1NTUHJpbWl0aXZlVmFsdWU+IHZhbCkgeyBtX2FuZ2xlID0gdmFsOyB9CiAKICAgICBTdHJpbmcg
Y3VzdG9tQ1NTVGV4dCgpIGNvbnN0OwogCkBAIC0xODIsMTQgKzE4MiwxNCBAQCBwdWJsaWM6CiAK
ICAgICBTdHJpbmcgY3VzdG9tQ1NTVGV4dCgpIGNvbnN0OwogCi0gICAgdm9pZCBzZXRGaXJzdFJh
ZGl1cyhQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiB2YWwpIHsgbV9maXJzdFJhZGl1cyA9
IHZhbDsgfQotICAgIHZvaWQgc2V0U2Vjb25kUmFkaXVzKFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZl
VmFsdWU+IHZhbCkgeyBtX3NlY29uZFJhZGl1cyA9IHZhbDsgfQorICAgIHZvaWQgc2V0Rmlyc3RS
YWRpdXMoUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiB2YWwpIHsgbV9maXJzdFJhZGl1cyA9IHZh
bDsgfQorICAgIHZvaWQgc2V0U2Vjb25kUmFkaXVzKFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4g
dmFsKSB7IG1fc2Vjb25kUmFkaXVzID0gdmFsOyB9CiAKLSAgICB2b2lkIHNldFNoYXBlKFBhc3NS
ZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHZhbCkgeyBtX3NoYXBlID0gdmFsOyB9Ci0gICAgdm9p
ZCBzZXRTaXppbmdCZWhhdmlvcihQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiB2YWwpIHsg
bV9zaXppbmdCZWhhdmlvciA9IHZhbDsgfQorICAgIHZvaWQgc2V0U2hhcGUoUmVmUHRyPENTU1By
aW1pdGl2ZVZhbHVlPiB2YWwpIHsgbV9zaGFwZSA9IHZhbDsgfQorICAgIHZvaWQgc2V0U2l6aW5n
QmVoYXZpb3IoUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiB2YWwpIHsgbV9zaXppbmdCZWhhdmlv
ciA9IHZhbDsgfQogCi0gICAgdm9pZCBzZXRFbmRIb3Jpem9udGFsU2l6ZShQYXNzUmVmUHRyPENT
U1ByaW1pdGl2ZVZhbHVlPiB2YWwpIHsgbV9lbmRIb3Jpem9udGFsU2l6ZSA9IHZhbDsgfQotICAg
IHZvaWQgc2V0RW5kVmVydGljYWxTaXplKFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHZh
bCkgeyBtX2VuZFZlcnRpY2FsU2l6ZSA9IHZhbDsgfQorICAgIHZvaWQgc2V0RW5kSG9yaXpvbnRh
bFNpemUoUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiB2YWwpIHsgbV9lbmRIb3Jpem9udGFsU2l6
ZSA9IHZhbDsgfQorICAgIHZvaWQgc2V0RW5kVmVydGljYWxTaXplKFJlZlB0cjxDU1NQcmltaXRp
dmVWYWx1ZT4gdmFsKSB7IG1fZW5kVmVydGljYWxTaXplID0gdmFsOyB9CiAKICAgICAvLyBDcmVh
dGUgdGhlIGdyYWRpZW50IGZvciBhIGdpdmVuIHNpemUuCiAgICAgUmVmPEdyYWRpZW50PiBjcmVh
dGVHcmFkaWVudChSZW5kZXJFbGVtZW50JiwgY29uc3QgRmxvYXRTaXplJik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JpZExpbmVOYW1lc1ZhbHVlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTR3JpZExpbmVOYW1lc1ZhbHVlLmgKaW5kZXggMmZkZGJmODk2Yzc4NWNjMTEz
NDdiM2Q3YzMwOWQwOGY1OTQ2ZTVlMy4uZjhjNmM5NTFiMjY3NTRhYTZiMzEwNGQxMTJkZTNhYWNk
MDg5OGZhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyaWRMaW5lTmFtZXNW
YWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmlkTGluZU5hbWVzVmFsdWUuaApA
QCAtMzMsNyArMzMsNiBAQAogCiAjaWYgRU5BQkxFKENTU19HUklEX0xBWU9VVCkKICNpbmNsdWRl
ICJDU1NWYWx1ZUxpc3QuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdl
bmVyYXRvclZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZh
bHVlLmNwcAppbmRleCBmZTQwMGMxNmI0OTY3NzczZmJmYjdlNmJiMzNmN2FhZjJiOTliMGY4Li41
ZTg0NDVmZWE5NDM2YjYyMTRkMDljNDNhOTM3NzFhOTI2ZDUzYzRkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuY3BwCkBAIC03OSw3ICs3OSw3IEBAIEdl
bmVyYXRlZEltYWdlKiBDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjpjYWNoZWRJbWFnZUZvclNpemUo
RmxvYXRTaXplIHNpemUpCiAgICAgcmV0dXJuIGNhY2hlZEdlbmVyYXRlZEltYWdlLT5pbWFnZSgp
OwogfQogCi12b2lkIENTU0ltYWdlR2VuZXJhdG9yVmFsdWU6OnNhdmVDYWNoZWRJbWFnZUZvclNp
emUoRmxvYXRTaXplIHNpemUsIFBhc3NSZWZQdHI8R2VuZXJhdGVkSW1hZ2U+IGltYWdlKQordm9p
ZCBDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjpzYXZlQ2FjaGVkSW1hZ2VGb3JTaXplKEZsb2F0U2l6
ZSBzaXplLCBSZWZQdHI8R2VuZXJhdGVkSW1hZ2U+IGltYWdlKQogewogICAgIEFTU0VSVCghbV9p
bWFnZXMuY29udGFpbnMoc2l6ZSkpOwogICAgIG1faW1hZ2VzLmFkZChzaXplLCBzdGQ6Om1ha2Vf
dW5pcXVlPENhY2hlZEdlbmVyYXRlZEltYWdlPigqdGhpcywgc2l6ZSwgaW1hZ2UpKTsKQEAgLTkx
LDcgKzkxLDcgQEAgdm9pZCBDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjpldmljdENhY2hlZEdlbmVy
YXRlZEltYWdlKEZsb2F0U2l6ZSBzaXplKQogICAgIG1faW1hZ2VzLnJlbW92ZShzaXplKTsKIH0K
IAotQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6Q2FjaGVkR2VuZXJhdGVkSW1hZ2U6OkNhY2hlZEdl
bmVyYXRlZEltYWdlKENTU0ltYWdlR2VuZXJhdG9yVmFsdWUmIG93bmVyLCBGbG9hdFNpemUgc2l6
ZSwgUGFzc1JlZlB0cjxHZW5lcmF0ZWRJbWFnZT4gaW1hZ2UpCitDU1NJbWFnZUdlbmVyYXRvclZh
bHVlOjpDYWNoZWRHZW5lcmF0ZWRJbWFnZTo6Q2FjaGVkR2VuZXJhdGVkSW1hZ2UoQ1NTSW1hZ2VH
ZW5lcmF0b3JWYWx1ZSYgb3duZXIsIEZsb2F0U2l6ZSBzaXplLCBSZWZQdHI8R2VuZXJhdGVkSW1h
Z2U+IGltYWdlKQogICAgIDogbV9vd25lcihvd25lcikKICAgICAsIG1fc2l6ZShzaXplKQogICAg
ICwgbV9pbWFnZShpbWFnZSkKQEAgLTEwNiw3ICsxMDYsNyBAQCB2b2lkIENTU0ltYWdlR2VuZXJh
dG9yVmFsdWU6OkNhY2hlZEdlbmVyYXRlZEltYWdlOjpldmljdGlvblRpbWVyRmlyZWQoKQogICAg
IG1fb3duZXIuZXZpY3RDYWNoZWRHZW5lcmF0ZWRJbWFnZShtX3NpemUpOwogfQogCi1QYXNzUmVm
UHRyPEltYWdlPiBDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjppbWFnZShSZW5kZXJFbGVtZW50KiBy
ZW5kZXJlciwgY29uc3QgRmxvYXRTaXplJiBzaXplKQorUmVmUHRyPEltYWdlPiBDU1NJbWFnZUdl
bmVyYXRvclZhbHVlOjppbWFnZShSZW5kZXJFbGVtZW50KiByZW5kZXJlciwgY29uc3QgRmxvYXRT
aXplJiBzaXplKQogewogICAgIHN3aXRjaCAoY2xhc3NUeXBlKCkpIHsKICAgICBjYXNlIENhbnZh
c0NsYXNzOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlR2VuZXJhdG9y
VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmgKaW5k
ZXggYzliNTU2Y2RhMDdjNTcxZWFkMTdkOTEwNWMxODc0ODc4ODk2OGRhMS4uY2FlOTFiNGQ3MTFm
Y2NmYTE3YTUwMmU0N2U2YTU2NWM2ZmQ4OWUxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
SW1hZ2VHZW5lcmF0b3JWYWx1ZS5oCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IGFkZENsaWVudChSZW5kZXJFbGVtZW50Kik7CiAgICAgdm9pZCByZW1vdmVDbGllbnQoUmVuZGVy
RWxlbWVudCopOwogCi0gICAgUGFzc1JlZlB0cjxJbWFnZT4gaW1hZ2UoUmVuZGVyRWxlbWVudCos
IGNvbnN0IEZsb2F0U2l6ZSYpOworICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UoUmVuZGVyRWxlbWVu
dCosIGNvbnN0IEZsb2F0U2l6ZSYpOwogCiAgICAgYm9vbCBpc0ZpeGVkU2l6ZSgpIGNvbnN0Owog
ICAgIEZsb2F0U2l6ZSBmaXhlZFNpemUoY29uc3QgUmVuZGVyRWxlbWVudCopOwpAQCAtNjMsNyAr
NjMsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZShDbGFzc1R5cGUp
OwogCiAgICAgR2VuZXJhdGVkSW1hZ2UqIGNhY2hlZEltYWdlRm9yU2l6ZShGbG9hdFNpemUpOwot
ICAgIHZvaWQgc2F2ZUNhY2hlZEltYWdlRm9yU2l6ZShGbG9hdFNpemUsIFBhc3NSZWZQdHI8R2Vu
ZXJhdGVkSW1hZ2U+KTsKKyAgICB2b2lkIHNhdmVDYWNoZWRJbWFnZUZvclNpemUoRmxvYXRTaXpl
LCBSZWZQdHI8R2VuZXJhdGVkSW1hZ2U+KTsKICAgICBjb25zdCBIYXNoQ291bnRlZFNldDxSZW5k
ZXJFbGVtZW50Kj4mIGNsaWVudHMoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudHM7IH0KIAogICAg
IC8vIEhlbHBlciBmdW5jdGlvbnMgZm9yIENyb3NzZmFkZSBhbmQgRmlsdGVyLgpAQCAtNzMsNyAr
NzMsNyBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIGNsYXNzIENhY2hlZEdlbmVyYXRlZElt
YWdlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIENhY2hlZEdlbmVyYXRlZEltYWdlKENTU0ltYWdl
R2VuZXJhdG9yVmFsdWUmLCBGbG9hdFNpemUsIFBhc3NSZWZQdHI8R2VuZXJhdGVkSW1hZ2U+KTsK
KyAgICAgICAgQ2FjaGVkR2VuZXJhdGVkSW1hZ2UoQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZSYsIEZs
b2F0U2l6ZSwgUmVmUHRyPEdlbmVyYXRlZEltYWdlPik7CiAgICAgICAgIEdlbmVyYXRlZEltYWdl
KiBpbWFnZSgpIHsgcmV0dXJuIG1faW1hZ2UuZ2V0KCk7IH0KICAgICAgICAgdm9pZCBwdW50RXZp
Y3Rpb25UaW1lcigpIHsgbV9ldmljdGlvblRpbWVyLnJlc3RhcnQoKTsgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW5oZXJpdGVkVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NJbmhlcml0ZWRWYWx1ZS5oCmluZGV4IDhhNjM3NjViNTNiYTc3MjdmOGQ1NjZmNTFk
YzA0YTE2NDczZjNhNzguLjg1NzA0MWJiZTUyZDYwZjZmNTY3NWE4YjgyYzhhMDdiMzQxM2ZlYTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbmhlcml0ZWRWYWx1ZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbmhlcml0ZWRWYWx1ZS5oCkBAIC0yMiw3ICsyMiw2IEBA
CiAjZGVmaW5lIENTU0luaGVyaXRlZFZhbHVlX2gKIAogI2luY2x1ZGUgIkNTU1ZhbHVlLmgiCi0j
aW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW5pdGlhbFZhbHVlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTSW5pdGlhbFZhbHVlLmgKaW5kZXggYTcxMWFkZjFmZGZmOTEzYjgxOGZhNjhh
NGU1ZTRmOTNiMDM4NTkyOC4uOGZiYWI5Zjg1NTQ4NjU4NTRiOWMyYTllOGFhMGVjNDU3NTQxYjUz
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0luaXRpYWxWYWx1ZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbml0aWFsVmFsdWUuaApAQCAtMjIsNyArMjIsNiBAQAog
I2RlZmluZSBDU1NJbml0aWFsVmFsdWVfaAogCiAjaW5jbHVkZSAiQ1NTVmFsdWUuaCIKLSNpbmNs
dWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NLZXlmcmFtZXNSdWxlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NLZXlmcmFtZXNSdWxlLmNwcAppbmRleCAwOTUyMzI2MjA2YWVhZjY3YmIzMjhi
ZWVmMjI3MGRjMjEyMWI3OGNkLi42NzU4OTFhYjU3M2FlZjEwY2QzMTFhZDU1ZjIwYWEyOTA1Y2Zi
ZDc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTS2V5ZnJhbWVzUnVsZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0tleWZyYW1lc1J1bGUuY3BwCkBAIC01MywxNCAr
NTMsMTQgQEAgU3R5bGVSdWxlS2V5ZnJhbWVzOjp+U3R5bGVSdWxlS2V5ZnJhbWVzKCkKIHsKIH0K
IAotdm9pZCBTdHlsZVJ1bGVLZXlmcmFtZXM6OnBhcnNlckFwcGVuZEtleWZyYW1lKFBhc3NSZWZQ
dHI8U3R5bGVLZXlmcmFtZT4ga2V5ZnJhbWUpCit2b2lkIFN0eWxlUnVsZUtleWZyYW1lczo6cGFy
c2VyQXBwZW5kS2V5ZnJhbWUoUmVmUHRyPFN0eWxlS2V5ZnJhbWU+IGtleWZyYW1lKQogewogICAg
IGlmICgha2V5ZnJhbWUpCiAgICAgICAgIHJldHVybjsKICAgICBtX2tleWZyYW1lcy5hcHBlbmQo
a2V5ZnJhbWUpOwogfQogCi12b2lkIFN0eWxlUnVsZUtleWZyYW1lczo6d3JhcHBlckFwcGVuZEtl
eWZyYW1lKFBhc3NSZWZQdHI8U3R5bGVLZXlmcmFtZT4ga2V5ZnJhbWUpCit2b2lkIFN0eWxlUnVs
ZUtleWZyYW1lczo6d3JhcHBlckFwcGVuZEtleWZyYW1lKFJlZlB0cjxTdHlsZUtleWZyYW1lPiBr
ZXlmcmFtZSkKIHsKICAgICBtX2tleWZyYW1lcy5hcHBlbmQoa2V5ZnJhbWUpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0tleWZyYW1lc1J1bGUuaCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NLZXlmcmFtZXNSdWxlLmgKaW5kZXggODY1YmJlZDBjMzAxNzM4NzVmOTMxZTAz
MmM3MGZjMjcwNzc1MWQ2MC4uYzc0OGViM2Y0ZmI1YTZlZGI2NTE4MzIwNjU1YjExYzNhNWRiYjc0
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0tleWZyYW1lc1J1bGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTS2V5ZnJhbWVzUnVsZS5oCkBAIC00Niw4ICs0Niw4IEBA
IHB1YmxpYzoKICAgICAKICAgICBjb25zdCBWZWN0b3I8UmVmUHRyPFN0eWxlS2V5ZnJhbWU+PiYg
a2V5ZnJhbWVzKCkgY29uc3QgeyByZXR1cm4gbV9rZXlmcmFtZXM7IH0KICAgICAKLSAgICB2b2lk
IHBhcnNlckFwcGVuZEtleWZyYW1lKFBhc3NSZWZQdHI8U3R5bGVLZXlmcmFtZT4pOwotICAgIHZv
aWQgd3JhcHBlckFwcGVuZEtleWZyYW1lKFBhc3NSZWZQdHI8U3R5bGVLZXlmcmFtZT4pOworICAg
IHZvaWQgcGFyc2VyQXBwZW5kS2V5ZnJhbWUoUmVmUHRyPFN0eWxlS2V5ZnJhbWU+KTsKKyAgICB2
b2lkIHdyYXBwZXJBcHBlbmRLZXlmcmFtZShSZWZQdHI8U3R5bGVLZXlmcmFtZT4pOwogICAgIHZv
aWQgd3JhcHBlclJlbW92ZUtleWZyYW1lKHVuc2lnbmVkKTsKIAogICAgIFN0cmluZyBuYW1lKCkg
Y29uc3QgeyByZXR1cm4gbV9uYW1lOyB9ICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0xpbmVCb3hDb250YWluVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NMaW5l
Qm94Q29udGFpblZhbHVlLmgKaW5kZXggMTYwMTYyMzI1NGM1ZGIzN2U3ZGI3YTgwNjBlMmYzZTk0
Mjk3Nzg3Ny4uZWM1M2RhMjQ5MmUyMTJkMWI0MTI1N2FjYjU4NDEyNDA2NWQxZGIwZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0xpbmVCb3hDb250YWluVmFsdWUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTTGluZUJveENvbnRhaW5WYWx1ZS5oCkBAIC0yNyw3ICsyNyw2
IEBACiAjZGVmaW5lIENTU0xpbmVCb3hDb250YWluVmFsdWVfaAogCiAjaW5jbHVkZSAiQ1NTVmFs
dWUuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU05hbWVkSW1hZ2VWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTmFtZWRJbWFn
ZVZhbHVlLmNwcAppbmRleCAxYWRkNTQ2ZjUzYzczZjVkNWY4ZDMxNDdlMWE0NzY3YWJiY2RjNGVi
Li4wNDY3YmYxOTcxYWI0NzRhZDhmZDE1MzAyYzVkNmFjZDJlOGE2MmMzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTTmFtZWRJbWFnZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTTmFtZWRJbWFnZVZhbHVlLmNwcApAQCAtMzYsMTQgKzM2LDE0IEBAIFN0cmlu
ZyBDU1NOYW1lZEltYWdlVmFsdWU6OmN1c3RvbUNTU1RleHQoKSBjb25zdAogICAgIHJldHVybiBt
YWtlU3RyaW5nKCItd2Via2l0LW5hbWVkLWltYWdlKCIsIG1fbmFtZSwgJyknKTsKIH0KIAotUGFz
c1JlZlB0cjxJbWFnZT4gQ1NTTmFtZWRJbWFnZVZhbHVlOjppbWFnZShSZW5kZXJFbGVtZW50Kiwg
Y29uc3QgRmxvYXRTaXplJiBzaXplKQorUmVmUHRyPEltYWdlPiBDU1NOYW1lZEltYWdlVmFsdWU6
OmltYWdlKFJlbmRlckVsZW1lbnQqLCBjb25zdCBGbG9hdFNpemUmIHNpemUpCiB7CiAgICAgaWYg
KHNpemUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIG1fZ2VuZXJh
dGVkSW1hZ2UgPSBOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2U6OmNyZWF0ZShtX25hbWUsIHNpemUp
OwogCi0gICAgcmV0dXJuIG1fZ2VuZXJhdGVkSW1hZ2UucmVsZWFzZSgpOworICAgIHJldHVybiBt
X2dlbmVyYXRlZEltYWdlOwogfQogCiBib29sIENTU05hbWVkSW1hZ2VWYWx1ZTo6ZXF1YWxzKGNv
bnN0IENTU05hbWVkSW1hZ2VWYWx1ZSYgb3RoZXIpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTTmFtZWRJbWFnZVZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
TmFtZWRJbWFnZVZhbHVlLmgKaW5kZXggZjFjZGFhNjMzODVkYThjNDY2YzJhNjg1MzczNzVmMWZl
Nzg1NmZiYi4uZjZhMzI3MDUyYjg2YTE2N2MwYjY0MTA5YjBhMjgzYTA1MjZiMjFhOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU05hbWVkSW1hZ2VWYWx1ZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NOYW1lZEltYWdlVmFsdWUuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJs
aWM6CiAgICAgYm9vbCBpc0ZpeGVkU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAg
Ym9vbCBpc1BlbmRpbmcoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgUGFzc1JlZlB0
cjxJbWFnZT4gaW1hZ2UoUmVuZGVyRWxlbWVudCosIGNvbnN0IEZsb2F0U2l6ZSYpOworICAgIFJl
ZlB0cjxJbWFnZT4gaW1hZ2UoUmVuZGVyRWxlbWVudCosIGNvbnN0IEZsb2F0U2l6ZSYpOwogCiAg
ICAgYm9vbCBlcXVhbHMoY29uc3QgQ1NTTmFtZWRJbWFnZVZhbHVlJikgY29uc3Q7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1BhcnNlci5jcHAKaW5kZXggNzAyNzFmYzhkMjdjNjU4OTNjNTdiMDE3MjcxNDJlNTJm
OGMyMDYzNC4uMDE2NTk2NWRlZTBkY2Y5YjYyMmVkYWUwZjQxM2ZkZmYwMDhiZWQ5YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1BhcnNlci5jcHAKQEAgLTE0NDksNyArMTQ0OSw3IEBAIFJlZjxJbW11dGFibGVT
dHlsZVByb3BlcnRpZXM+IENTU1BhcnNlcjo6cGFyc2VEZWNsYXJhdGlvbihjb25zdCBTdHJpbmcm
IHN0cmluZywKIH0KIAogCi1ib29sIENTU1BhcnNlcjo6cGFyc2VEZWNsYXJhdGlvbihNdXRhYmxl
U3R5bGVQcm9wZXJ0aWVzKiBkZWNsYXJhdGlvbiwgY29uc3QgU3RyaW5nJiBzdHJpbmcsIFBhc3NS
ZWZQdHI8Q1NTUnVsZVNvdXJjZURhdGE+IHBycFJ1bGVTb3VyY2VEYXRhLCBTdHlsZVNoZWV0Q29u
dGVudHMqIGNvbnRleHRTdHlsZVNoZWV0KQorYm9vbCBDU1NQYXJzZXI6OnBhcnNlRGVjbGFyYXRp
b24oTXV0YWJsZVN0eWxlUHJvcGVydGllcyogZGVjbGFyYXRpb24sIGNvbnN0IFN0cmluZyYgc3Ry
aW5nLCBSZWZQdHI8Q1NTUnVsZVNvdXJjZURhdGE+IHBycFJ1bGVTb3VyY2VEYXRhLCBTdHlsZVNo
ZWV0Q29udGVudHMqIGNvbnRleHRTdHlsZVNoZWV0KQogewogICAgIC8vIExlbmd0aCBvZiB0aGUg
IkAtd2Via2l0LWRlY2xzeyIgcHJlZml4LgogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBwcmVm
aXhMZW5ndGggPSAxNTsKQEAgLTE1ODgsNyArMTU4OCw3IEBAIFJlZjxJbW11dGFibGVTdHlsZVBy
b3BlcnRpZXM+IENTU1BhcnNlcjo6Y3JlYXRlU3R5bGVQcm9wZXJ0aWVzKCkKICAgICByZXR1cm4g
SW1tdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUocmVzdWx0cy5kYXRhKCksIHJlc3VsdHMu
c2l6ZSgpLCBtX2NvbnRleHQubW9kZSk7CiB9CiAKLXZvaWQgQ1NTUGFyc2VyOjphZGRQcm9wZXJ0
eVdpdGhQcmVmaXhpbmdWYXJpYW50KENTU1Byb3BlcnR5SUQgcHJvcElkLCBQYXNzUmVmUHRyPENT
U1ZhbHVlPiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQsIGJvb2wgaW1wbGljaXQpCit2b2lkIENTU1Bh
cnNlcjo6YWRkUHJvcGVydHlXaXRoUHJlZml4aW5nVmFyaWFudChDU1NQcm9wZXJ0eUlEIHByb3BJ
ZCwgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQsIGJvb2wgaW1wbGljaXQp
CiB7CiAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWwgPSB2YWx1ZS5nZXQoKTsKICAgICBhZGRQcm9w
ZXJ0eShwcm9wSWQsIHZhbHVlLCBpbXBvcnRhbnQsIGltcGxpY2l0KTsKQEAgLTE2MDYsNyArMTYw
Niw3IEBAIHZvaWQgQ1NTUGFyc2VyOjphZGRQcm9wZXJ0eVdpdGhQcmVmaXhpbmdWYXJpYW50KENT
U1Byb3BlcnR5SUQgcHJvcElkLCBQYXNzUmVmUHRyCiAgICAgICAgIGFkZFByb3BlcnR5KHByZWZp
eGluZ1ZhcmlhbnQsIHZhbC5yZWxlYXNlKCksIGltcG9ydGFudCwgaW1wbGljaXQpOwogfQogCi12
b2lkIENTU1BhcnNlcjo6YWRkUHJvcGVydHkoQ1NTUHJvcGVydHlJRCBwcm9wSWQsIFBhc3NSZWZQ
dHI8Q1NTVmFsdWU+IHZhbHVlLCBib29sIGltcG9ydGFudCwgYm9vbCBpbXBsaWNpdCkKK3ZvaWQg
Q1NTUGFyc2VyOjphZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIHByb3BJZCwgUmVmUHRyPENTU1Zh
bHVlPiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQsIGJvb2wgaW1wbGljaXQpCiB7CiAgICAgLy8gVGhp
cyBwcm9wZXJ0eSBkb2Vzbid0IGJlbG9uZyB0byBhIHNob3J0aGFuZCBvciBpcyBhIENTUyB2YXJp
YWJsZSAod2hpY2ggd2lsbCBiZSByZXNvbHZlZCBsYXRlcikuCiAgICAgaWYgKCFtX2N1cnJlbnRT
aG9ydGhhbmQpIHsKQEAgLTE4NDUsNyArMTg0NSw3IEBAIGlubGluZSBSZWZQdHI8Q1NTUHJpbWl0
aXZlVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VWYWxpZFByaW1pdGl2ZShDU1NWYWx1ZUlEIGlkZW50
CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXZvaWQgQ1NTUGFyc2VyOjphZGRFeHBhbmRlZFBy
b3BlcnR5Rm9yVmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wSWQsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+
IHBycFZhbHVlLCBib29sIGltcG9ydGFudCkKK3ZvaWQgQ1NTUGFyc2VyOjphZGRFeHBhbmRlZFBy
b3BlcnR5Rm9yVmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wSWQsIFJlZlB0cjxDU1NWYWx1ZT4gcHJw
VmFsdWUsIGJvb2wgaW1wb3J0YW50KQogewogICAgIGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhh
bmQmIHNob3J0aGFuZCA9IHNob3J0aGFuZEZvclByb3BlcnR5KHByb3BJZCk7CiAgICAgdW5zaWdu
ZWQgc2hvcnRoYW5kTGVuZ3RoID0gc2hvcnRoYW5kLmxlbmd0aCgpOwpAQCAtNTM3MCw3ICs1Mzcw
LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlR3JpZEl0ZW1Qb3NpdGlvblNob3J0aGFuZChDU1NQ
cm9wZXJ0eUlEIHNob3J0aGFuZElkLCBib29sIGkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9v
bCBDU1NQYXJzZXI6OnBhcnNlR3JpZFRlbXBsYXRlUm93c0FuZEFyZWFzKFBhc3NSZWZQdHI8Q1NT
VmFsdWU+IHRlbXBsYXRlQ29sdW1ucywgYm9vbCBpbXBvcnRhbnQpCitib29sIENTU1BhcnNlcjo6
cGFyc2VHcmlkVGVtcGxhdGVSb3dzQW5kQXJlYXMoUmVmUHRyPENTU1ZhbHVlPiB0ZW1wbGF0ZUNv
bHVtbnMsIGJvb2wgaW1wb3J0YW50KQogewogICAgIC8vIEF0IGxlYXN0IHRlbXBsYXRlLWFyZWFz
IHN0cmluZ3MgbXVzdCBiZSBkZWZpbmVkLgogICAgIGlmICghbV92YWx1ZUxpc3QtPmN1cnJlbnQo
KSkKQEAgLTYxODcsNyArNjE4Nyw3IEBAIHN0YXRpYyB2b2lkIGNvbXBsZXRlQm9yZGVyUmFkaWko
UmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiByYWRpaVs0XSkKIAogLy8gRklYTUU6IFRoaXMgc2hv
dWxkIGJlIHJlZmFjdG9yZWQgd2l0aCBDU1NQYXJzZXI6OnBhcnNlQm9yZGVyUmFkaXVzLgogLy8g
Q1NTUGFyc2VyOjpwYXJzZUJvcmRlclJhZGl1cyBjb250YWlucyBzdXBwb3J0IGZvciBzb21lIGxl
Z2FjeSByYWRpdXMgY29uc3RydWN0aW9uLgotUmVmUHRyPENTU0Jhc2ljU2hhcGU+IENTU1BhcnNl
cjo6cGFyc2VJbnNldFJvdW5kZWRDb3JuZXJzKFBhc3NSZWZQdHI8Q1NTQmFzaWNTaGFwZUluc2V0
PiBzaGFwZSwgQ1NTUGFyc2VyVmFsdWVMaXN0JiBhcmdzKQorUmVmUHRyPENTU0Jhc2ljU2hhcGU+
IENTU1BhcnNlcjo6cGFyc2VJbnNldFJvdW5kZWRDb3JuZXJzKFJlZlB0cjxDU1NCYXNpY1NoYXBl
SW5zZXQ+IHNoYXBlLCBDU1NQYXJzZXJWYWx1ZUxpc3QmIGFyZ3MpCiB7CiAgICAgQ1NTUGFyc2Vy
VmFsdWUqIGFyZ3VtZW50ID0gYXJncy5uZXh0KCk7CiAKQEAgLTc2NTEsNyArNzY1MSw3IEBAIHN0
cnVjdCBTaGFkb3dQYXJzZUNvbnRleHQgewogICAgICAgICB9CiAgICAgfQogCi0gICAgdm9pZCBj
b21taXRDb2xvcihQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiB2YWwpCisgICAgdm9pZCBj
b21taXRDb2xvcihSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHZhbCkKICAgICB7CiAgICAgICAg
IGNvbG9yID0gdmFsOwogICAgICAgICBhbGxvd0NvbG9yID0gZmFsc2U7CkBAIC03ODc5LDcgKzc4
NzksNyBAQCBzdHJ1Y3QgQm9yZGVySW1hZ2VQYXJzZUNvbnRleHQgewogICAgIGJvb2wgcmVxdWly
ZVdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9yZXF1aXJlV2lkdGg7IH0KICAgICBib29sIHJlcXVp
cmVPdXRzZXQoKSBjb25zdCB7IHJldHVybiBtX3JlcXVpcmVPdXRzZXQ7IH0KIAotICAgIHZvaWQg
Y29tbWl0SW1hZ2UoUGFzc1JlZlB0cjxDU1NWYWx1ZT4gaW1hZ2UpCisgICAgdm9pZCBjb21taXRJ
bWFnZShSZWZQdHI8Q1NTVmFsdWU+IGltYWdlKQogICAgIHsKICAgICAgICAgbV9pbWFnZSA9IGlt
YWdlOwogICAgICAgICBtX2NhbkFkdmFuY2UgPSB0cnVlOwpAQCAtNzg4OCw3ICs3ODg4LDcgQEAg
c3RydWN0IEJvcmRlckltYWdlUGFyc2VDb250ZXh0IHsKICAgICAgICAgbV9hbGxvd0ltYWdlU2xp
Y2UgPSAhbV9pbWFnZVNsaWNlOwogICAgICAgICBtX2FsbG93UmVwZWF0ID0gIW1fcmVwZWF0Owog
ICAgIH0KLSAgICB2b2lkIGNvbW1pdEltYWdlU2xpY2UoUGFzc1JlZlB0cjxDU1NCb3JkZXJJbWFn
ZVNsaWNlVmFsdWU+IHNsaWNlKQorICAgIHZvaWQgY29tbWl0SW1hZ2VTbGljZShSZWZQdHI8Q1NT
Qm9yZGVySW1hZ2VTbGljZVZhbHVlPiBzbGljZSkKICAgICB7CiAgICAgICAgIG1faW1hZ2VTbGlj
ZSA9IHNsaWNlOwogICAgICAgICBtX2NhbkFkdmFuY2UgPSB0cnVlOwpAQCAtNzkwOSw3ICs3OTA5
LDcgQEAgc3RydWN0IEJvcmRlckltYWdlUGFyc2VDb250ZXh0IHsKICAgICAgICAgICAgIG1fcmVx
dWlyZVdpZHRoID0gZmFsc2U7CiAgICAgICAgIH0KICAgICB9Ci0gICAgdm9pZCBjb21taXRCb3Jk
ZXJXaWR0aChQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBzbGljZSkKKyAgICB2b2lkIGNv
bW1pdEJvcmRlcldpZHRoKFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gc2xpY2UpCiAgICAgewog
ICAgICAgICBtX2JvcmRlclNsaWNlID0gc2xpY2U7CiAgICAgICAgIG1fY2FuQWR2YW5jZSA9IHRy
dWU7CkBAIC03OTE4LDcgKzc5MTgsNyBAQCBzdHJ1Y3QgQm9yZGVySW1hZ2VQYXJzZUNvbnRleHQg
ewogICAgICAgICBtX2FsbG93SW1hZ2UgPSAhbV9pbWFnZTsKICAgICAgICAgbV9hbGxvd1JlcGVh
dCA9ICFtX3JlcGVhdDsKICAgICB9Ci0gICAgdm9pZCBjb21taXRCb3JkZXJPdXRzZXQoUGFzc1Jl
ZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gb3V0c2V0KQorICAgIHZvaWQgY29tbWl0Qm9yZGVyT3V0
c2V0KFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gb3V0c2V0KQogICAgIHsKICAgICAgICAgbV9v
dXRzZXQgPSBvdXRzZXQ7CiAgICAgICAgIG1fY2FuQWR2YW5jZSA9IHRydWU7CkBAIC03OTI3LDcg
Kzc5MjcsNyBAQCBzdHJ1Y3QgQm9yZGVySW1hZ2VQYXJzZUNvbnRleHQgewogICAgICAgICBtX2Fs
bG93SW1hZ2UgPSAhbV9pbWFnZTsKICAgICAgICAgbV9hbGxvd1JlcGVhdCA9ICFtX3JlcGVhdDsK
ICAgICB9Ci0gICAgdm9pZCBjb21taXRSZXBlYXQoUGFzc1JlZlB0cjxDU1NWYWx1ZT4gcmVwZWF0
KQorICAgIHZvaWQgY29tbWl0UmVwZWF0KFJlZlB0cjxDU1NWYWx1ZT4gcmVwZWF0KQogICAgIHsK
ICAgICAgICAgbV9yZXBlYXQgPSByZXBlYXQ7CiAgICAgICAgIG1fY2FuQWR2YW5jZSA9IHRydWU7
CkBAIC03OTM3LDcgKzc5MzcsNyBAQCBzdHJ1Y3QgQm9yZGVySW1hZ2VQYXJzZUNvbnRleHQgewog
ICAgICAgICBtX2FsbG93SW1hZ2UgPSAhbV9pbWFnZTsKICAgICB9CiAKLSAgICBQYXNzUmVmUHRy
PENTU1ZhbHVlPiBjb21taXRXZWJLaXRCb3JkZXJJbWFnZSgpCisgICAgUmVmPENTU1ZhbHVlPiBj
b21taXRXZWJLaXRCb3JkZXJJbWFnZSgpCiAgICAgewogICAgICAgICByZXR1cm4gY3JlYXRlQm9y
ZGVySW1hZ2VWYWx1ZShtX2ltYWdlLCBtX2ltYWdlU2xpY2UsIG1fYm9yZGVyU2xpY2UsIG1fb3V0
c2V0LCBtX3JlcGVhdCk7CiAgICAgfQpAQCAtNzk1MSw3ICs3OTUxLDcgQEAgc3RydWN0IEJvcmRl
ckltYWdlUGFyc2VDb250ZXh0IHsKICAgICAgICAgY29tbWl0Qm9yZGVySW1hZ2VQcm9wZXJ0eShD
U1NQcm9wZXJ0eUJvcmRlckltYWdlUmVwZWF0LCBwYXJzZXIsIG1fcmVwZWF0LCBpbXBvcnRhbnQp
OwogICAgIH0KIAotICAgIHZvaWQgY29tbWl0Qm9yZGVySW1hZ2VQcm9wZXJ0eShDU1NQcm9wZXJ0
eUlEIHByb3BJZCwgQ1NTUGFyc2VyJiBwYXJzZXIsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHZhbHVl
LCBib29sIGltcG9ydGFudCkKKyAgICB2b2lkIGNvbW1pdEJvcmRlckltYWdlUHJvcGVydHkoQ1NT
UHJvcGVydHlJRCBwcm9wSWQsIENTU1BhcnNlciYgcGFyc2VyLCBSZWZQdHI8Q1NTVmFsdWU+IHZh
bHVlLCBib29sIGltcG9ydGFudCkKICAgICB7CiAgICAgICAgIGlmICh2YWx1ZSkKICAgICAgICAg
ICAgIHBhcnNlci5hZGRQcm9wZXJ0eShwcm9wSWQsIHZhbHVlLCBpbXBvcnRhbnQpOwpAQCAtODEy
Myw3ICs4MTIzLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBjb21taXRGaWxsKCkgeyBtX2ZpbGwg
PSB0cnVlOyBtX2FsbG93RmlsbCA9IGZhbHNlOyBtX2FsbG93TnVtYmVyID0gIW1fdG9wOyB9CiAK
LSAgICBQYXNzUmVmUHRyPENTU0JvcmRlckltYWdlU2xpY2VWYWx1ZT4gY29tbWl0Qm9yZGVySW1h
Z2VTbGljZSgpCisgICAgUmVmUHRyPENTU0JvcmRlckltYWdlU2xpY2VWYWx1ZT4gY29tbWl0Qm9y
ZGVySW1hZ2VTbGljZSgpCiAgICAgewogICAgICAgICAvLyBXZSBuZWVkIHRvIGNsb25lIGFuZCBy
ZXBlYXQgdmFsdWVzIGZvciBhbnkgb21pc3Npb25zLgogICAgICAgICBBU1NFUlQobV90b3ApOwpA
QCAtODIzOSw5ICs4MjM5LDkgQEAgcHVibGljOgogICAgIH0KIAogICAgIHZvaWQgc2V0QWxsb3dG
aW5hbENvbW1pdCgpIHsgbV9hbGxvd0ZpbmFsQ29tbWl0ID0gdHJ1ZTsgfQotICAgIHZvaWQgc2V0
VG9wKFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHZhbCkgeyBtX3RvcCA9IHZhbDsgfQor
ICAgIHZvaWQgc2V0VG9wKFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gdmFsKSB7IG1fdG9wID0g
dmFsOyB9CiAKLSAgICBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjb21taXRCb3JkZXJJ
bWFnZVF1YWQoKQorICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29tbWl0Qm9yZGVySW1h
Z2VRdWFkKCkKICAgICB7CiAgICAgICAgIC8vIFdlIG5lZWQgdG8gY2xvbmUgYW5kIHJlcGVhdCB2
YWx1ZXMgZm9yIGFueSBvbWlzc2lvbnMuCiAgICAgICAgIEFTU0VSVChtX3RvcCk7CkBAIC04NDUz
LDcgKzg0NTMsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VDb3VudGVyKENTU1Byb3BlcnR5SUQg
cHJvcElkLCBpbnQgZGVmYXVsdFZhbHVlLCBib29sIGltcG9ydAogfQogCiAvLyBUaGlzIHNob3Vs
ZCBnbyBhd2F5IG9uY2Ugd2UgZHJvcCBzdXBwb3J0IGZvciAtd2Via2l0LWdyYWRpZW50Ci1zdGF0
aWMgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcGFyc2VEZXByZWNhdGVkR3JhZGllbnRQ
b2ludChDU1NQYXJzZXJWYWx1ZSYgdmFsdWUsIGJvb2wgaG9yaXpvbnRhbCkKK3N0YXRpYyBSZWZQ
dHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHBhcnNlRGVwcmVjYXRlZEdyYWRpZW50UG9pbnQoQ1NTUGFy
c2VyVmFsdWUmIHZhbHVlLCBib29sIGhvcml6b250YWwpCiB7CiAgICAgUmVmUHRyPENTU1ByaW1p
dGl2ZVZhbHVlPiByZXN1bHQ7CiAgICAgaWYgKHZhbHVlLnVuaXQgPT0gQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU19JREVOVCkgewpAQCAtODY3MSw3ICs4NjcxLDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBh
cnNlRGVwcmVjYXRlZEdyYWRpZW50KENTU1BhcnNlclZhbHVlTGlzdCYgdmFsdWVMaXN0LCBSZWZQ
dHI8Q1MKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIFBhc3NSZWZQdHI8Q1NTUHJpbWl0
aXZlVmFsdWU+IHZhbHVlRnJvbVNpZGVLZXl3b3JkKENTU1BhcnNlclZhbHVlJiB2YWx1ZSwgYm9v
bCYgaXNIb3Jpem9udGFsKQorc3RhdGljIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gdmFsdWVG
cm9tU2lkZUtleXdvcmQoQ1NTUGFyc2VyVmFsdWUmIHZhbHVlLCBib29sJiBpc0hvcml6b250YWwp
CiB7CiAgICAgaWYgKHZhbHVlLnVuaXQgIT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19JREVOVCkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC04NjkxLDcgKzg2OTEsNyBAQCBzdGF0aWMgUGFz
c1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gdmFsdWVGcm9tU2lkZUtleXdvcmQoQ1NTUGFyc2Vy
VmFsdWUmIHZhbHVlLAogICAgIHJldHVybiBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0
ZUlkZW50aWZpZXJWYWx1ZSh2YWx1ZS5pZCk7CiB9CiAKLXN0YXRpYyBQYXNzUmVmUHRyPENTU1By
aW1pdGl2ZVZhbHVlPiBwYXJzZUdyYWRpZW50Q29sb3JPcktleXdvcmQoQ1NTUGFyc2VyJiBwYXJz
ZXIsIENTU1BhcnNlclZhbHVlJiB2YWx1ZSkKK3N0YXRpYyBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFs
dWU+IHBhcnNlR3JhZGllbnRDb2xvck9yS2V5d29yZChDU1NQYXJzZXImIHBhcnNlciwgQ1NTUGFy
c2VyVmFsdWUmIHZhbHVlKQogewogICAgIENTU1ZhbHVlSUQgaWQgPSB2YWx1ZS5pZDsKICAgICBp
ZiAoaWQgPT0gQ1NTVmFsdWVXZWJraXRUZXh0IHx8IENTU1BhcnNlcjo6aXNWYWxpZFN5c3RlbUNv
bG9yVmFsdWUoaWQpIHx8IGlkID09IENTU1ZhbHVlTWVudSB8fCBpZCA9PSBDU1NWYWx1ZUN1cnJl
bnRjb2xvcikKQEAgLTEwMDk5LDcgKzEwMDk5LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlUGVy
c3BlY3RpdmVPcmlnaW4oQ1NTUHJvcGVydHlJRCBwcm9wSWQsIENTU1Byb3BlcnR5SUQmIHByb3AK
ICAgICByZXR1cm4gdmFsdWU7CiB9CiAKLXZvaWQgQ1NTUGFyc2VyOjphZGRUZXh0RGVjb3JhdGlv
blByb3BlcnR5KENTU1Byb3BlcnR5SUQgcHJvcElkLCBQYXNzUmVmUHRyPENTU1ZhbHVlPiB2YWx1
ZSwgYm9vbCBpbXBvcnRhbnQpCit2b2lkIENTU1BhcnNlcjo6YWRkVGV4dERlY29yYXRpb25Qcm9w
ZXJ0eShDU1NQcm9wZXJ0eUlEIHByb3BJZCwgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSwgYm9vbCBp
bXBvcnRhbnQpCiB7CiAgICAgLy8gVGhlIHRleHQtZGVjb3JhdGlvbi1saW5lIHByb3BlcnR5IHRh
a2VzIHByaW9yaXR5IG92ZXIgdGV4dC1kZWNvcmF0aW9uLCB1bmxlc3MgdGhlIGxhdHRlciBoYXMg
aW1wb3J0YW50IHByaW9yaXR5IHNldC4KICAgICBpZiAocHJvcElkID09IENTU1Byb3BlcnR5VGV4
dERlY29yYXRpb24gJiYgIWltcG9ydGFudCAmJiAhaW5TaG9ydGhhbmQoKSkgewpAQCAtMTIxMjEs
NyArMTIxMjEsNyBAQCByZXN0YXJ0QWZ0ZXJDb21tZW50OgogICAgIHJldHVybiB0b2tlbigpOwog
fQogCi1SZWZQdHI8U3R5bGVSdWxlQmFzZT4gQ1NTUGFyc2VyOjpjcmVhdGVJbXBvcnRSdWxlKGNv
bnN0IENTU1BhcnNlclN0cmluZyYgdXJsLCBQYXNzUmVmUHRyPE1lZGlhUXVlcnlTZXQ+IG1lZGlh
KQorUmVmUHRyPFN0eWxlUnVsZUJhc2U+IENTU1BhcnNlcjo6Y3JlYXRlSW1wb3J0UnVsZShjb25z
dCBDU1NQYXJzZXJTdHJpbmcmIHVybCwgUmVmUHRyPE1lZGlhUXVlcnlTZXQ+IG1lZGlhKQogewog
ICAgIGlmICghbWVkaWEgfHwgIW1fYWxsb3dJbXBvcnRSdWxlcykgewogICAgICAgICBwb3BSdWxl
RGF0YSgpOwpAQCAtMTIxMzIsNyArMTIxMzIsNyBAQCBSZWZQdHI8U3R5bGVSdWxlQmFzZT4gQ1NT
UGFyc2VyOjpjcmVhdGVJbXBvcnRSdWxlKGNvbnN0IENTU1BhcnNlclN0cmluZyYgdXJsLCBQYQog
ICAgIHJldHVybiBydWxlOwogfQogCi1SZWZQdHI8U3R5bGVSdWxlQmFzZT4gQ1NTUGFyc2VyOjpj
cmVhdGVNZWRpYVJ1bGUoUGFzc1JlZlB0cjxNZWRpYVF1ZXJ5U2V0PiBtZWRpYSwgUnVsZUxpc3Qq
IHJ1bGVzKQorUmVmUHRyPFN0eWxlUnVsZUJhc2U+IENTU1BhcnNlcjo6Y3JlYXRlTWVkaWFSdWxl
KFJlZlB0cjxNZWRpYVF1ZXJ5U2V0PiBtZWRpYSwgUnVsZUxpc3QqIHJ1bGVzKQogewogICAgIG1f
YWxsb3dJbXBvcnRSdWxlcyA9IG1fYWxsb3dOYW1lc3BhY2VEZWNsYXJhdGlvbnMgPSBmYWxzZTsK
ICAgICBSZWZQdHI8U3R5bGVSdWxlTWVkaWE+IHJ1bGU7CkBAIC0xMjIxNyw3ICsxMjIxNyw3IEBA
IHZvaWQgQ1NTUGFyc2VyOjpwcm9jZXNzQW5kQWRkTmV3UnVsZVRvU291cmNlVHJlZUlmTmVlZGVk
KCkKICAgICBhZGROZXdSdWxlVG9Tb3VyY2VUcmVlKHJ1bGUucmVsZWFzZSgpKTsKIH0KIAotdm9p
ZCBDU1NQYXJzZXI6OmFkZE5ld1J1bGVUb1NvdXJjZVRyZWUoUGFzc1JlZlB0cjxDU1NSdWxlU291
cmNlRGF0YT4gcnVsZSkKK3ZvaWQgQ1NTUGFyc2VyOjphZGROZXdSdWxlVG9Tb3VyY2VUcmVlKFJl
ZlB0cjxDU1NSdWxlU291cmNlRGF0YT4gcnVsZSkKIHsKICAgICAvLyBQcmVjb25kaXRpb246IChp
c0V4dHJhY3RpbmdTb3VyY2VEYXRhKCkpLgogICAgIGlmICghbV9ydWxlU291cmNlRGF0YVJlc3Vs
dCkKQEAgLTEyMjI4LDcgKzEyMjI4LDcgQEAgdm9pZCBDU1NQYXJzZXI6OmFkZE5ld1J1bGVUb1Nv
dXJjZVRyZWUoUGFzc1JlZlB0cjxDU1NSdWxlU291cmNlRGF0YT4gcnVsZSkKICAgICAgICAgbV9j
dXJyZW50UnVsZURhdGFTdGFjay0+bGFzdCgpLT5jaGlsZFJ1bGVzLmFwcGVuZChydWxlKTsKIH0K
IAotUGFzc1JlZlB0cjxDU1NSdWxlU291cmNlRGF0YT4gQ1NTUGFyc2VyOjpwb3BSdWxlRGF0YSgp
CitSZWZQdHI8Q1NTUnVsZVNvdXJjZURhdGE+IENTU1BhcnNlcjo6cG9wUnVsZURhdGEoKQogewog
ICAgIGlmICghbV9ydWxlU291cmNlRGF0YVJlc3VsdCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CkBAIC0xMjIzNyw3ICsxMjIzNyw3IEBAIFBhc3NSZWZQdHI8Q1NTUnVsZVNvdXJjZURhdGE+IENT
U1BhcnNlcjo6cG9wUnVsZURhdGEoKQogICAgIG1fY3VycmVudFJ1bGVEYXRhID0gbnVsbHB0cjsK
ICAgICBSZWZQdHI8Q1NTUnVsZVNvdXJjZURhdGE+IGRhdGEgPSBtX2N1cnJlbnRSdWxlRGF0YVN0
YWNrLT5sYXN0KCk7CiAgICAgbV9jdXJyZW50UnVsZURhdGFTdGFjay0+cmVtb3ZlTGFzdCgpOwot
ICAgIHJldHVybiBkYXRhLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gZGF0YTsKIH0KIAogdm9pZCBD
U1NQYXJzZXI6OnN5bnRheEVycm9yKGNvbnN0IExvY2F0aW9uJiBsb2NhdGlvbiwgU3ludGF4RXJy
b3JUeXBlIGVycm9yKQpAQCAtMTI3MTksNyArMTI3MTksNyBAQCB2b2lkIENTU1BhcnNlcjo6bWFy
a1Byb3BlcnR5RW5kKGJvb2wgaXNJbXBvcnRhbnRGb3VuZCwgYm9vbCBpc1Byb3BlcnR5UGFyc2Vk
KQogfQogCiAjaWYgRU5BQkxFKENTU19ERVZJQ0VfQURBUFRBVElPTikKLVBhc3NSZWZQdHI8U3R5
bGVSdWxlQmFzZT4gQ1NTUGFyc2VyOjpjcmVhdGVWaWV3cG9ydFJ1bGUoKQorUmVmUHRyPFN0eWxl
UnVsZUJhc2U+IENTU1BhcnNlcjo6Y3JlYXRlVmlld3BvcnRSdWxlKCkKIHsKICAgICBtX2FsbG93
SW1wb3J0UnVsZXMgPSBtX2FsbG93TmFtZXNwYWNlRGVjbGFyYXRpb25zID0gZmFsc2U7CiAKQEAg
LTEyNzI4LDcgKzEyNzI4LDcgQEAgUGFzc1JlZlB0cjxTdHlsZVJ1bGVCYXNlPiBDU1NQYXJzZXI6
OmNyZWF0ZVZpZXdwb3J0UnVsZSgpCiAKICAgICBwcm9jZXNzQW5kQWRkTmV3UnVsZVRvU291cmNl
VHJlZUlmTmVlZGVkKCk7CiAKLSAgICByZXR1cm4gcnVsZS5yZWxlYXNlKCk7CisgICAgcmV0dXJu
IHJ1bGU7CiB9CiAKIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZpZXdwb3J0UHJvcGVydHkoQ1NTUHJv
cGVydHlJRCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1BhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCmluZGV4
IDkyYzFiM2VjMDFmMmIwMzZhMTUxZTg0YzIxOTRlMzE0ZGM4OTBlNWUuLmY4NWJhM2M5NzVmYzBj
YWI1MWM3MWVlYWEyMjQwZTc2MzMwZDI1OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKQEAgLTEy
NiwxNSArMTI2LDE1IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlTGlzdD4g
cGFyc2VGb250RmFjZVZhbHVlKGNvbnN0IEF0b21pY1N0cmluZyYpOwogICAgIFJlZlB0cjxDU1NQ
cmltaXRpdmVWYWx1ZT4gcGFyc2VWYWxpZFByaW1pdGl2ZShDU1NWYWx1ZUlEIGlkZW50LCBWYWx1
ZVdpdGhDYWxjdWxhdGlvbiYpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBwYXJzZURlY2xh
cmF0aW9uKE11dGFibGVTdHlsZVByb3BlcnRpZXMqLCBjb25zdCBTdHJpbmcmLCBQYXNzUmVmUHRy
PENTU1J1bGVTb3VyY2VEYXRhPiwgU3R5bGVTaGVldENvbnRlbnRzKiBjb250ZXh0U3R5bGVTaGVl
dCk7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBwYXJzZURlY2xhcmF0aW9uKE11dGFibGVTdHls
ZVByb3BlcnRpZXMqLCBjb25zdCBTdHJpbmcmLCBSZWZQdHI8Q1NTUnVsZVNvdXJjZURhdGE+LCBT
dHlsZVNoZWV0Q29udGVudHMqIGNvbnRleHRTdHlsZVNoZWV0KTsKICAgICBzdGF0aWMgUmVmPElt
bXV0YWJsZVN0eWxlUHJvcGVydGllcz4gcGFyc2VJbmxpbmVTdHlsZURlY2xhcmF0aW9uKGNvbnN0
IFN0cmluZyYsIEVsZW1lbnQqKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFRdWVyeT4gcGFy
c2VNZWRpYVF1ZXJ5KGNvbnN0IFN0cmluZyYpOwogCi0gICAgdm9pZCBhZGRQcm9wZXJ0eVdpdGhQ
cmVmaXhpbmdWYXJpYW50KENTU1Byb3BlcnR5SUQsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+LCBib29s
IGltcG9ydGFudCwgYm9vbCBpbXBsaWNpdCA9IGZhbHNlKTsKLSAgICB2b2lkIGFkZFByb3BlcnR5
KENTU1Byb3BlcnR5SUQsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+LCBib29sIGltcG9ydGFudCwgYm9v
bCBpbXBsaWNpdCA9IGZhbHNlKTsKKyAgICB2b2lkIGFkZFByb3BlcnR5V2l0aFByZWZpeGluZ1Zh
cmlhbnQoQ1NTUHJvcGVydHlJRCwgUmVmUHRyPENTU1ZhbHVlPiwgYm9vbCBpbXBvcnRhbnQsIGJv
b2wgaW1wbGljaXQgPSBmYWxzZSk7CisgICAgdm9pZCBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUlE
LCBSZWZQdHI8Q1NTVmFsdWU+LCBib29sIGltcG9ydGFudCwgYm9vbCBpbXBsaWNpdCA9IGZhbHNl
KTsKICAgICB2b2lkIHJvbGxiYWNrTGFzdFByb3BlcnRpZXMoaW50IG51bSk7CiAgICAgYm9vbCBo
YXNQcm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4gIW1fcGFyc2VkUHJvcGVydGllcy5pc0VtcHR5
KCk7IH0KLSAgICB2b2lkIGFkZEV4cGFuZGVkUHJvcGVydHlGb3JWYWx1ZShDU1NQcm9wZXJ0eUlE
IHByb3BJZCwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4sIGJvb2wpOworICAgIHZvaWQgYWRkRXhwYW5k
ZWRQcm9wZXJ0eUZvclZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcElkLCBSZWZQdHI8Q1NTVmFsdWU+
LCBib29sKTsKIAogICAgIGJvb2wgcGFyc2VWYWx1ZShDU1NQcm9wZXJ0eUlELCBib29sIGltcG9y
dGFudCk7CiAgICAgYm9vbCBwYXJzZVNob3J0aGFuZChDU1NQcm9wZXJ0eUlELCBjb25zdCBTdHls
ZVByb3BlcnR5U2hvcnRoYW5kJiwgYm9vbCBpbXBvcnRhbnQpOwpAQCAtMjA2LDcgKzIwNiw3IEBA
IHB1YmxpYzoKICNpZiBFTkFCTEUoQ1NTX0dSSURfTEFZT1VUKQogICAgIFJlZlB0cjxDU1NWYWx1
ZT4gcGFyc2VHcmlkUG9zaXRpb24oKTsKICAgICBib29sIHBhcnNlR3JpZEl0ZW1Qb3NpdGlvblNo
b3J0aGFuZChDU1NQcm9wZXJ0eUlELCBib29sIGltcG9ydGFudCk7Ci0gICAgYm9vbCBwYXJzZUdy
aWRUZW1wbGF0ZVJvd3NBbmRBcmVhcyhQYXNzUmVmUHRyPENTU1ZhbHVlPiwgYm9vbCBpbXBvcnRh
bnQpOworICAgIGJvb2wgcGFyc2VHcmlkVGVtcGxhdGVSb3dzQW5kQXJlYXMoUmVmUHRyPENTU1Zh
bHVlPiwgYm9vbCBpbXBvcnRhbnQpOwogICAgIGJvb2wgcGFyc2VHcmlkVGVtcGxhdGVTaG9ydGhh
bmQoYm9vbCBpbXBvcnRhbnQpOwogICAgIGJvb2wgcGFyc2VHcmlkU2hvcnRoYW5kKGJvb2wgaW1w
b3J0YW50KTsKICAgICBib29sIHBhcnNlR3JpZEFyZWFTaG9ydGhhbmQoYm9vbCBpbXBvcnRhbnQp
OwpAQCAtMzI1LDcgKzMyNSw3IEBAIHB1YmxpYzoKICAgICBib29sIHBhcnNlVGV4dEVtcGhhc2lz
U3R5bGUoYm9vbCBpbXBvcnRhbnQpOwogICAgIGJvb2wgcGFyc2VUZXh0RW1waGFzaXNQb3NpdGlv
bihib29sIGltcG9ydGFudCk7CiAKLSAgICB2b2lkIGFkZFRleHREZWNvcmF0aW9uUHJvcGVydHko
Q1NTUHJvcGVydHlJRCwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4sIGJvb2wgaW1wb3J0YW50KTsKKyAg
ICB2b2lkIGFkZFRleHREZWNvcmF0aW9uUHJvcGVydHkoQ1NTUHJvcGVydHlJRCwgUmVmUHRyPENT
U1ZhbHVlPiwgYm9vbCBpbXBvcnRhbnQpOwogICAgIGJvb2wgcGFyc2VUZXh0RGVjb3JhdGlvbihD
U1NQcm9wZXJ0eUlEIHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpOwogICAgIGJvb2wgcGFyc2VUZXh0
RGVjb3JhdGlvblNraXAoYm9vbCBpbXBvcnRhbnQpOwogICAgIGJvb2wgcGFyc2VUZXh0VW5kZXJs
aW5lUG9zaXRpb24oYm9vbCBpbXBvcnRhbnQpOwpAQCAtMzUxLDEyICszNTEsMTIgQEAgcHVibGlj
OgogICAgIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNl
bGVjdG9yPj4+IGNyZWF0ZVNlbGVjdG9yVmVjdG9yKCk7CiAgICAgdm9pZCByZWN5Y2xlU2VsZWN0
b3JWZWN0b3Ioc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2Vy
U2VsZWN0b3I+Pj4pOwogCi0gICAgUmVmUHRyPFN0eWxlUnVsZUJhc2U+IGNyZWF0ZUltcG9ydFJ1
bGUoY29uc3QgQ1NTUGFyc2VyU3RyaW5nJiwgUGFzc1JlZlB0cjxNZWRpYVF1ZXJ5U2V0Pik7Cisg
ICAgUmVmUHRyPFN0eWxlUnVsZUJhc2U+IGNyZWF0ZUltcG9ydFJ1bGUoY29uc3QgQ1NTUGFyc2Vy
U3RyaW5nJiwgUmVmUHRyPE1lZGlhUXVlcnlTZXQ+KTsKICAgICBSZWZQdHI8U3R5bGVLZXlmcmFt
ZT4gY3JlYXRlS2V5ZnJhbWUoQ1NTUGFyc2VyVmFsdWVMaXN0Jik7CiAgICAgUmVmUHRyPFN0eWxl
UnVsZUtleWZyYW1lcz4gY3JlYXRlS2V5ZnJhbWVzUnVsZShjb25zdCBTdHJpbmcmLCBzdGQ6OnVu
aXF1ZV9wdHI8VmVjdG9yPFJlZlB0cjxTdHlsZUtleWZyYW1lPj4+KTsKIAogICAgIHR5cGVkZWYg
VmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNlPj4gUnVsZUxpc3Q7Ci0gICAgUmVmUHRyPFN0eWxl
UnVsZUJhc2U+IGNyZWF0ZU1lZGlhUnVsZShQYXNzUmVmUHRyPE1lZGlhUXVlcnlTZXQ+LCBSdWxl
TGlzdCopOworICAgIFJlZlB0cjxTdHlsZVJ1bGVCYXNlPiBjcmVhdGVNZWRpYVJ1bGUoUmVmUHRy
PE1lZGlhUXVlcnlTZXQ+LCBSdWxlTGlzdCopOwogICAgIFJlZlB0cjxTdHlsZVJ1bGVCYXNlPiBj
cmVhdGVFbXB0eU1lZGlhUnVsZShSdWxlTGlzdCopOwogICAgIFJlZlB0cjxTdHlsZVJ1bGVCYXNl
PiBjcmVhdGVTdHlsZVJ1bGUoVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rv
cj4+KiBzZWxlY3RvcnMpOwogICAgIFJlZlB0cjxTdHlsZVJ1bGVCYXNlPiBjcmVhdGVGb250RmFj
ZVJ1bGUoKTsKQEAgLTQzOCw4ICs0MzgsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBtYXJrUHJvcGVy
dHlTdGFydCgpOwogICAgIHZvaWQgbWFya1Byb3BlcnR5RW5kKGJvb2wgaXNJbXBvcnRhbnRGb3Vu
ZCwgYm9vbCBpc1Byb3BlcnR5UGFyc2VkKTsKICAgICB2b2lkIHByb2Nlc3NBbmRBZGROZXdSdWxl
VG9Tb3VyY2VUcmVlSWZOZWVkZWQoKTsKLSAgICB2b2lkIGFkZE5ld1J1bGVUb1NvdXJjZVRyZWUo
UGFzc1JlZlB0cjxDU1NSdWxlU291cmNlRGF0YT4pOwotICAgIFBhc3NSZWZQdHI8Q1NTUnVsZVNv
dXJjZURhdGE+IHBvcFJ1bGVEYXRhKCk7CisgICAgdm9pZCBhZGROZXdSdWxlVG9Tb3VyY2VUcmVl
KFJlZlB0cjxDU1NSdWxlU291cmNlRGF0YT4pOworICAgIFJlZlB0cjxDU1NSdWxlU291cmNlRGF0
YT4gcG9wUnVsZURhdGEoKTsKICAgICB2b2lkIHJlc2V0UHJvcGVydHlSYW5nZSgpIHsgbV9wcm9w
ZXJ0eVJhbmdlLnN0YXJ0ID0gbV9wcm9wZXJ0eVJhbmdlLmVuZCA9IFVJTlRfTUFYOyB9CiAgICAg
Ym9vbCBpc0V4dHJhY3RpbmdTb3VyY2VEYXRhKCkgY29uc3QgeyByZXR1cm4gISFtX2N1cnJlbnRS
dWxlRGF0YVN0YWNrOyB9CiAgICAgdm9pZCBzeW50YXhFcnJvcihjb25zdCBMb2NhdGlvbiYsIFN5
bnRheEVycm9yVHlwZSA9IEdlbmVyYWxTeW50YXhFcnJvcik7CkBAIC00NTEsNyArNDUxLDcgQEAg
cHVibGljOgogI2lmIEVOQUJMRShDU1NfREVWSUNFX0FEQVBUQVRJT04pCiAgICAgdm9pZCBtYXJr
Vmlld3BvcnRSdWxlQm9keVN0YXJ0KCkgeyBtX2luVmlld3BvcnQgPSB0cnVlOyB9CiAgICAgdm9p
ZCBtYXJrVmlld3BvcnRSdWxlQm9keUVuZCgpIHsgbV9pblZpZXdwb3J0ID0gZmFsc2U7IH0KLSAg
ICBQYXNzUmVmUHRyPFN0eWxlUnVsZUJhc2U+IGNyZWF0ZVZpZXdwb3J0UnVsZSgpOworICAgIFJl
ZlB0cjxTdHlsZVJ1bGVCYXNlPiBjcmVhdGVWaWV3cG9ydFJ1bGUoKTsKICNlbmRpZgogCiAgICAg
UmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBjcmVhdGVQcmltaXRpdmVOdW1lcmljVmFsdWUoVmFsdWVX
aXRoQ2FsY3VsYXRpb24mKTsKQEAgLTU2MCw3ICs1NjAsNyBAQCBwcml2YXRlOgogICAgIFBhcnNl
UmVzdWx0IHBhcnNlVmFsdWUoTXV0YWJsZVN0eWxlUHJvcGVydGllcyosIENTU1Byb3BlcnR5SUQs
IGNvbnN0IFN0cmluZyYsIGJvb2wgaW1wb3J0YW50LCBTdHlsZVNoZWV0Q29udGVudHMqIGNvbnRl
eHRTdHlsZVNoZWV0KTsKICAgICBSZWY8SW1tdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBwYXJzZURl
Y2xhcmF0aW9uKGNvbnN0IFN0cmluZyYsIFN0eWxlU2hlZXRDb250ZW50cyogY29udGV4dFN0eWxl
U2hlZXQpOwogCi0gICAgUmVmUHRyPENTU0Jhc2ljU2hhcGU+IHBhcnNlSW5zZXRSb3VuZGVkQ29y
bmVycyhQYXNzUmVmUHRyPENTU0Jhc2ljU2hhcGVJbnNldD4sIENTU1BhcnNlclZhbHVlTGlzdCYp
OworICAgIFJlZlB0cjxDU1NCYXNpY1NoYXBlPiBwYXJzZUluc2V0Um91bmRlZENvcm5lcnMoUmVm
UHRyPENTU0Jhc2ljU2hhcGVJbnNldD4sIENTU1BhcnNlclZhbHVlTGlzdCYpOwogCiAgICAgZW51
bSBTaXplUGFyYW1ldGVyVHlwZSB7CiAgICAgICAgIE5vbmUsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUGFyc2VyVmFsdWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
YXJzZXJWYWx1ZXMuY3BwCmluZGV4IGEwNjA5YzM0Yjg3MDU5ZjA5YzdkMmZiYzJmNzQ3YTU0YmRk
ZGQ0ZDkuLmIzZDZmZmE4MTZlMzJmZjU3NzNmZDE1NWNlZWE4ZDIxMTYyN2UxMGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMuY3BwCkBAIC02Niw3ICs2Niw3IEBAIHZvaWQgQ1NT
UGFyc2VyVmFsdWVMaXN0OjpleHRlbmQoQ1NTUGFyc2VyVmFsdWVMaXN0JiB2YWx1ZUxpc3QpCiAg
ICAgICAgIG1fdmFsdWVzLmFwcGVuZCgqKHZhbHVlTGlzdC52YWx1ZUF0KGkpKSk7CiB9CiAKLVBh
c3NSZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNlclZhbHVlOjpjcmVhdGVDU1NWYWx1ZSgpCitSZWZQ
dHI8Q1NTVmFsdWU+IENTU1BhcnNlclZhbHVlOjpjcmVhdGVDU1NWYWx1ZSgpCiB7CiAgICAgUmVm
UHRyPENTU1ZhbHVlPiBwYXJzZWRWYWx1ZTsKICAgICBpZiAoaWQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyVmFsdWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UGFyc2VyVmFsdWVzLmgKaW5kZXggYzM0YWFhMzg4ZjUwM2VjMGI2MGY1MGRkNTllYjNmYjQ0OGFi
YmRlYy4uMDk0ZTNjMjIwMTlkYjdkODE4ZjA5Mzk0OTEwN2M0MDlkOGUxMmU2NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlclZhbHVlcy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMuaApAQCAtMTI4LDcgKzEyOCw3IEBAIHN0cnVjdCBDU1NQ
YXJzZXJWYWx1ZSB7CiAKICAgICB2b2lkIHNldEZyb21WYWx1ZUxpc3Qoc3RkOjp1bmlxdWVfcHRy
PENTU1BhcnNlclZhbHVlTGlzdD4pOwogCi0gICAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gY3JlYXRl
Q1NTVmFsdWUoKTsKKyAgICBSZWZQdHI8Q1NTVmFsdWU+IGNyZWF0ZUNTU1ZhbHVlKCk7CiB9Owog
CiB2b2lkIGRlc3Ryb3koY29uc3QgQ1NTUGFyc2VyVmFsdWUmKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUHJpbWl0aXZlVmFsdWUuY3BwCmluZGV4IDRhNDZmNzE4MGI3ZTBlZTA5NTdjZDIyOTBmMTI0
OWRhMzRkOWZiMDQuLmFlOWVkN2Q0YTg2ODRhYzQxMThjZDM3MTdkYmJiNjliZjFkMjVlNDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcApAQCAtOTM4LDEyICs5Mzgs
MTIgQEAgTGVuZ3RoUmVwZWF0KiBDU1NQcmltaXRpdmVWYWx1ZTo6Z2V0TGVuZ3RoUmVwZWF0VmFs
dWUoRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CiB9CiAjZW5kaWYKIAotUGFzc1JlZlB0cjxSR0JD
b2xvcj4gQ1NTUHJpbWl0aXZlVmFsdWU6OmdldFJHQkNvbG9yVmFsdWUoRXhjZXB0aW9uQ29kZSYg
ZWMpIGNvbnN0CitSZWZQdHI8UkdCQ29sb3I+IENTU1ByaW1pdGl2ZVZhbHVlOjpnZXRSR0JDb2xv
clZhbHVlKEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAogewogICAgIGVjID0gMDsKICAgICBpZiAo
bV9wcmltaXRpdmVVbml0VHlwZSAhPSBDU1NfUkdCQ09MT1IpIHsKICAgICAgICAgZWMgPSBJTlZB
TElEX0FDQ0VTU19FUlI7Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICB9CiAKICAgICAvLyBGSU1YRTogVGhpcyBzaG91bGQgbm90IHJldHVybiBhIG5ldyBv
YmplY3QgZm9yIGVhY2ggaW52b2NhdGlvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQcmltaXRpdmVWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZh
bHVlLmgKaW5kZXggNmM2M2YxODU5MzM3ZTZjOWZkYzYzNDNkOTljZjVkM2VjZWEwMzE4Zi4uNGQ5
MzgwYjYyYWRmMWFkYTEwMTE4NWI2NjM0NTNkMWM1YTVhYzYwNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1ByaW1pdGl2ZVZhbHVlLmgKQEAgLTMwLDcgKzMwLDYgQEAKICNpbmNsdWRlIDx1dGlsaXR5
PgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4K
LSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAg
LTMzNyw3ICszMzYsNyBAQCBwdWJsaWM6CiAgICAgTGVuZ3RoUmVwZWF0KiBnZXRMZW5ndGhSZXBl
YXRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpbWl0aXZlVW5pdFR5cGUgIT0gQ1NTX0xFTkdU
SF9SRVBFQVQgPyAwIDogbV92YWx1ZS5sZW5ndGhSZXBlYXQ7IH0KICNlbmRpZgogCi0gICAgUGFz
c1JlZlB0cjxSR0JDb2xvcj4gZ2V0UkdCQ29sb3JWYWx1ZShFeGNlcHRpb25Db2RlJikgY29uc3Q7
CisgICAgUmVmUHRyPFJHQkNvbG9yPiBnZXRSR0JDb2xvclZhbHVlKEV4Y2VwdGlvbkNvZGUmKSBj
b25zdDsKICAgICBSR0JBMzIgZ2V0UkdCQTMyVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ByaW1p
dGl2ZVVuaXRUeXBlICE9IENTU19SR0JDT0xPUiA/IDAgOiBtX3ZhbHVlLnJnYmNvbG9yOyB9CiAK
ICAgICBQYWlyKiBnZXRQYWlyVmFsdWUoRXhjZXB0aW9uQ29kZSYpIGNvbnN0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUHJvcGVydHkuaAppbmRleCBkNWMzOGEwNzE3ODM0YmI1MzBkOGZjNDEyYjI4M2RjNDZjZjk3
YzIzLi5kNDgyNDg2MWU2ODczM2I0YTcyOWI2YTUwNjNlMWMwMjIxZWY0NjFjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUHJvcGVydHkuaApAQCAtMjYsNyArMjYsNiBAQAogI2luY2x1ZGUgIkNTU1ZhbHVlLmgi
CiAjaW5jbHVkZSAiUmVuZGVyU3R5bGVDb25zdGFudHMuaCIKICNpbmNsdWRlICJXcml0aW5nTW9k
ZS5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02NCw3ICs2Myw3IEBAIHN0cnVjdCBTdHlsZVBy
b3BlcnR5TWV0YWRhdGEgewogCiBjbGFzcyBDU1NQcm9wZXJ0eSB7CiBwdWJsaWM6Ci0gICAgQ1NT
UHJvcGVydHkoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBQYXNzUmVmUHRyPENTU1ZhbHVlPiB2
YWx1ZSwgYm9vbCBpbXBvcnRhbnQgPSBmYWxzZSwgYm9vbCBpc1NldEZyb21TaG9ydGhhbmQgPSBm
YWxzZSwgaW50IGluZGV4SW5TaG9ydGhhbmRzVmVjdG9yID0gMCwgYm9vbCBpbXBsaWNpdCA9IGZh
bHNlKQorICAgIENTU1Byb3BlcnR5KENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgUmVmUHRyPENT
U1ZhbHVlPiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQgPSBmYWxzZSwgYm9vbCBpc1NldEZyb21TaG9y
dGhhbmQgPSBmYWxzZSwgaW50IGluZGV4SW5TaG9ydGhhbmRzVmVjdG9yID0gMCwgYm9vbCBpbXBs
aWNpdCA9IGZhbHNlKQogICAgICAgICA6IG1fbWV0YWRhdGEocHJvcGVydHlJRCwgaXNTZXRGcm9t
U2hvcnRoYW5kLCBpbmRleEluU2hvcnRoYW5kc1ZlY3RvciwgaW1wb3J0YW50LCBpbXBsaWNpdCwg
aXNJbmhlcml0ZWRQcm9wZXJ0eShwcm9wZXJ0eUlEKSkKICAgICAgICAgLCBtX3ZhbHVlKHZhbHVl
KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSZWZsZWN0VmFsdWUu
aCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSZWZsZWN0VmFsdWUuaAppbmRleCAwYjU1ZjYwNDEy
ZDFkYzEzOTEzMDgzM2E5MmUyZjRmZjFmMzZkYzY5Li4wOTgxODY2NWFjMTM2NWVhMWIyNWJjOWFi
YzE1YmQ4YmZlM2IxODNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUmVmbGVj
dFZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1JlZmxlY3RWYWx1ZS5oCkBAIC0y
OCw3ICsyOCw2IEBACiAKICNpbmNsdWRlICJDU1NSZWZsZWN0aW9uRGlyZWN0aW9uLmgiCiAjaW5j
bHVkZSAiQ1NTVmFsdWUuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzcsOCArMzYsOCBAQCBj
bGFzcyBDU1NQcmltaXRpdmVWYWx1ZTsKIAogY2xhc3MgQ1NTUmVmbGVjdFZhbHVlIDogcHVibGlj
IENTU1ZhbHVlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPENTU1JlZmxlY3RWYWx1ZT4gY3Jl
YXRlKFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGRpcmVjdGlvbiwKLSAgICAgICAgUGFz
c1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gb2Zmc2V0LCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBt
YXNrKQorICAgIHN0YXRpYyBSZWY8Q1NTUmVmbGVjdFZhbHVlPiBjcmVhdGUoUmVmUHRyPENTU1By
aW1pdGl2ZVZhbHVlPiBkaXJlY3Rpb24sCisgICAgICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1
ZT4gb2Zmc2V0LCBSZWZQdHI8Q1NTVmFsdWU+IG1hc2spCiAgICAgewogICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBDU1NSZWZsZWN0VmFsdWUoZGlyZWN0aW9uLCBvZmZzZXQsIG1hc2spKTsK
ICAgICB9CkBAIC01NCw3ICs1Myw3IEBAIHB1YmxpYzoKICAgICBib29sIGVxdWFscyhjb25zdCBD
U1NSZWZsZWN0VmFsdWUmKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBDU1NSZWZsZWN0VmFsdWUo
UGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gZGlyZWN0aW9uLCBQYXNzUmVmUHRyPENTU1By
aW1pdGl2ZVZhbHVlPiBvZmZzZXQsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IG1hc2spCisgICAgQ1NT
UmVmbGVjdFZhbHVlKFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gZGlyZWN0aW9uLCBSZWZQdHI8
Q1NTUHJpbWl0aXZlVmFsdWU+IG9mZnNldCwgUmVmUHRyPENTU1ZhbHVlPiBtYXNrKQogICAgICAg
ICA6IENTU1ZhbHVlKFJlZmxlY3RDbGFzcykKICAgICAgICAgLCBtX2RpcmVjdGlvbihkaXJlY3Rp
b24pCiAgICAgICAgICwgbV9vZmZzZXQob2Zmc2V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1J1bGVMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUnVsZUxpc3QuaApp
bmRleCA1NDhmNTJlZGRmNzc5MDRlNzY4ODc1MjNhNzM4NDk3ZTI0OTFhZjI3Li5mODJhMWFjN2E0
OGZhNTFmNDliZDY3OGY0ZDFmZTlhOTUzNjVkY2RhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUnVsZUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUnVsZUxpc3Qu
aApAQCAtMjIsNyArMjIsNiBAQAogI2lmbmRlZiBDU1NSdWxlTGlzdF9oCiAjZGVmaW5lIENTU1J1
bGVMaXN0X2gKIAotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlZ21lbnRlZEZvbnRGYWNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWdtZW50ZWRGb250RmFjZS5jcHAKaW5kZXgg
NWNiZmNhNGU3YjcyMDEwOTk1YTgxMTJiZGI0NzZiNWRkZWE1ZGRhMi4uOGVjZGRlMjYxMTczYjEy
NGFjYmZjNTFkYzhhYTJhODNlMzVhMmJkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1NlZ21lbnRlZEZvbnRGYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2Vn
bWVudGVkRm9udEZhY2UuY3BwCkBAIC0xNTEsNyArMTUxLDcgQEAgYm9vbCBDU1NTZWdtZW50ZWRG
b250RmFjZTo6Y2hlY2tGb250KCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBD
U1NTZWdtZW50ZWRGb250RmFjZTo6bG9hZEZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250
RGVzY3JpcHRpb24sIFBhc3NSZWZQdHI8TG9hZEZvbnRDYWxsYmFjaz4gY2FsbGJhY2spCit2b2lk
IENTU1NlZ21lbnRlZEZvbnRGYWNlOjpsb2FkRm9udChjb25zdCBGb250RGVzY3JpcHRpb24mIGZv
bnREZXNjcmlwdGlvbiwgUmVmUHRyPExvYWRGb250Q2FsbGJhY2s+IGNhbGxiYWNrKQogewogICAg
IGZvbnRSYW5nZXMoZm9udERlc2NyaXB0aW9uKTsgLy8gS2ljayBvZmYgdGhlIGxvYWQuCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWdtZW50ZWRGb250RmFjZS5oIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1NlZ21lbnRlZEZvbnRGYWNlLmgKaW5kZXggNWZmZWJiMThjYTgw
ZGQ4ZDNjYTkzMmQ2ODA5NDE4YzFkM2U1YmNlZC4uNjEyN2M2ZDQyNjFjMWRjMmY4OGFiYTAzY2E3
NGVhNDdlOTEyYjY5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlZ21lbnRl
ZEZvbnRGYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlZ21lbnRlZEZvbnRGYWNl
LmgKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlICJGb250Q2FjaGUuaCIKICNpbmNsdWRlICJG
b250UmFuZ2VzLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvUGFz
c1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgogCkBAIC02MSw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICB9OwogCiAgICAgYm9vbCBj
aGVja0ZvbnQoKSBjb25zdDsKLSAgICB2b2lkIGxvYWRGb250KGNvbnN0IEZvbnREZXNjcmlwdGlv
biYsIFBhc3NSZWZQdHI8TG9hZEZvbnRDYWxsYmFjaz4gbG9hZENhbGxiYWNrKTsKKyAgICB2b2lk
IGxvYWRGb250KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIFJlZlB0cjxMb2FkRm9udENhbGxiYWNr
PiBsb2FkQ2FsbGJhY2spOwogI2VuZGlmCiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVj
dG9yLmNwcAppbmRleCA0NDBlODljMjZmYzBkODQyNzEwOWMyNDNiNTY5YWY1Mjg4NjZmZWRmLi41
ODQ0ODZjNmExMTA5NzVjMGNhMGEwNjA0ZDViZDY2OGUzMTg1ZjRiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NTZWxlY3Rvci5jcHAKQEAgLTc3OSw3ICs3NzksNyBAQCBpbnQgQ1NTU2VsZWN0b3I6Om50aEIo
KSBjb25zdAogICAgIHJldHVybiBtX2RhdGEubV9yYXJlRGF0YS0+bV9iOwogfQogCi1DU1NTZWxl
Y3Rvcjo6UmFyZURhdGE6OlJhcmVEYXRhKFBhc3NSZWZQdHI8QXRvbWljU3RyaW5nSW1wbD4gdmFs
dWUpCitDU1NTZWxlY3Rvcjo6UmFyZURhdGE6OlJhcmVEYXRhKFJlZlB0cjxBdG9taWNTdHJpbmdJ
bXBsPiB2YWx1ZSkKICAgICA6IG1fdmFsdWUodmFsdWUubGVha1JlZigpKQogICAgICwgbV9hKDAp
CiAgICAgLCBtX2IoMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rv
ci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmgKaW5kZXggOTgwOGU3MTU1NmZi
MjM0MjY2ZjVlYzEzZTc2YjQ1NjdiMjA1YjIzZS4uMmMwMjQ3NGVjNmE1ZTA1M2U0MWFiN2NkNDk1
ZThhMjNjM2M2YTU5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9y
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmgKQEAgLTMyOCw3ICszMjgs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIENTU1NlbGVjdG9yJiBvcGVyYXRvcj0o
Y29uc3QgQ1NTU2VsZWN0b3ImKTsKIAogICAgICAgICBzdHJ1Y3QgUmFyZURhdGEgOiBwdWJsaWMg
UmVmQ291bnRlZDxSYXJlRGF0YT4gewotICAgICAgICAgICAgc3RhdGljIFJlZjxSYXJlRGF0YT4g
Y3JlYXRlKFBhc3NSZWZQdHI8QXRvbWljU3RyaW5nSW1wbD4gdmFsdWUpIHsgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgUmFyZURhdGEodmFsdWUpKTsgfQorICAgICAgICAgICAgc3RhdGljIFJlZjxSYXJl
RGF0YT4gY3JlYXRlKFJlZlB0cjxBdG9taWNTdHJpbmdJbXBsPiB2YWx1ZSkgeyByZXR1cm4gYWRv
cHRSZWYoKm5ldyBSYXJlRGF0YSh2YWx1ZSkpOyB9CiAgICAgICAgICAgICB+UmFyZURhdGEoKTsK
IAogICAgICAgICAgICAgYm9vbCBwYXJzZU50aCgpOwpAQCAtMzQ0LDcgKzM0NCw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxDU1NTZWxlY3Rvckxp
c3Q+IG1fc2VsZWN0b3JMaXN0OyAvLyBVc2VkIGZvciA6bWF0Y2hlcygpIGFuZCA6bm90KCkuCiAg
ICAgICAgIAogICAgICAgICBwcml2YXRlOgotICAgICAgICAgICAgUmFyZURhdGEoUGFzc1JlZlB0
cjxBdG9taWNTdHJpbmdJbXBsPiB2YWx1ZSk7CisgICAgICAgICAgICBSYXJlRGF0YShSZWZQdHI8
QXRvbWljU3RyaW5nSW1wbD4gdmFsdWUpOwogICAgICAgICB9OwogICAgICAgICB2b2lkIGNyZWF0
ZVJhcmVEYXRhKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTaGFkb3dW
YWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2hhZG93VmFsdWUuY3BwCmluZGV4IDkw
NGU0NWZmOGFjOTNkNDJjMWEyNDgxYTVlM2U2YjcyZDIyMjcwMTkuLjQ1ZWZjYTA2OTQ2NGJiYjYy
MDc4ZDJiZDA5YmVjOWNhYmM0ZWM5ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NTaGFkb3dWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NoYWRvd1ZhbHVl
LmNwcApAQCAtMjYsMTIgKzI2LDEyIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIFVzZWQg
Zm9yIHRleHQtc2hhZG93IGFuZCBib3gtc2hhZG93Ci1DU1NTaGFkb3dWYWx1ZTo6Q1NTU2hhZG93
VmFsdWUoUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4geCwKLSAgICBQYXNzUmVmUHRyPENT
U1ByaW1pdGl2ZVZhbHVlPiB5LAotICAgIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGJs
dXIsCi0gICAgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gc3ByZWFkLAotICAgIFBhc3NS
ZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHN0eWxlLAotICAgIFBhc3NSZWZQdHI8Q1NTUHJpbWl0
aXZlVmFsdWU+IGNvbG9yKQorQ1NTU2hhZG93VmFsdWU6OkNTU1NoYWRvd1ZhbHVlKFJlZlB0cjxD
U1NQcmltaXRpdmVWYWx1ZT4geCwKKyAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHksCisg
ICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBibHVyLAorICAgIFJlZlB0cjxDU1NQcmltaXRp
dmVWYWx1ZT4gc3ByZWFkLAorICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gc3R5bGUsCisg
ICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjb2xvcikKICAgICA6IENTU1ZhbHVlKFNoYWRv
d0NsYXNzKQogICAgICwgeCh4KQogICAgICwgeSh5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1NoYWRvd1ZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2hhZG93VmFs
dWUuaAppbmRleCAzMGQzYjRkMjQ5ODFkOTc0Y2M5ZTBjZGJjYjlmYWUxNDY5Y2Y0ZjM2Li4wNGE2
ZjE5NDY2ZmNkODc2MmJiNzdhM2JlZDE0NjFkOTExYTM3NzljIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTU2hhZG93VmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
U2hhZG93VmFsdWUuaApAQCAtMjIsNyArMjIsNiBAQAogI2RlZmluZSBDU1NTaGFkb3dWYWx1ZV9o
CiAKICNpbmNsdWRlICJDU1NWYWx1ZS5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zMiwxMiAr
MzEsMTIgQEAgY2xhc3MgQ1NTUHJpbWl0aXZlVmFsdWU7CiAvLyBVc2VkIGZvciB0ZXh0LXNoYWRv
dyBhbmQgYm94LXNoYWRvdwogY2xhc3MgQ1NTU2hhZG93VmFsdWUgOiBwdWJsaWMgQ1NTVmFsdWUg
ewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8Q1NTU2hhZG93VmFsdWU+IGNyZWF0ZShQYXNzUmVm
UHRyPENTU1ByaW1pdGl2ZVZhbHVlPiB4LAotICAgICAgICBQYXNzUmVmUHRyPENTU1ByaW1pdGl2
ZVZhbHVlPiB5LAotICAgICAgICBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBibHVyLAot
ICAgICAgICBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBzcHJlYWQsCi0gICAgICAgIFBh
c3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHN0eWxlLAotICAgICAgICBQYXNzUmVmUHRyPENT
U1ByaW1pdGl2ZVZhbHVlPiBjb2xvcikKKyAgICBzdGF0aWMgUmVmPENTU1NoYWRvd1ZhbHVlPiBj
cmVhdGUoUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiB4LAorICAgICAgICBSZWZQdHI8Q1NTUHJp
bWl0aXZlVmFsdWU+IHksCisgICAgICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gYmx1ciwK
KyAgICAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBzcHJlYWQsCisgICAgICAgIFJlZlB0
cjxDU1NQcmltaXRpdmVWYWx1ZT4gc3R5bGUsCisgICAgICAgIFJlZlB0cjxDU1NQcmltaXRpdmVW
YWx1ZT4gY29sb3IpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NTaGFk
b3dWYWx1ZSh4LCB5LCBibHVyLCBzcHJlYWQsIHN0eWxlLCBjb2xvcikpOwogICAgIH0KQEAgLTU0
LDEyICs1MywxMiBAQCBwdWJsaWM6CiAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjb2xv
cjsKIAogcHJpdmF0ZToKLSAgICBDU1NTaGFkb3dWYWx1ZShQYXNzUmVmUHRyPENTU1ByaW1pdGl2
ZVZhbHVlPiB4LAotICAgICAgICBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiB5LAotICAg
ICAgICBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBibHVyLAotICAgICAgICBQYXNzUmVm
UHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBzcHJlYWQsCi0gICAgICAgIFBhc3NSZWZQdHI8Q1NTUHJp
bWl0aXZlVmFsdWU+IHN0eWxlLAotICAgICAgICBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVl
PiBjb2xvcik7CisgICAgQ1NTU2hhZG93VmFsdWUoUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiB4
LAorICAgICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHksCisgICAgICAgIFJlZlB0cjxD
U1NQcmltaXRpdmVWYWx1ZT4gYmx1ciwKKyAgICAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVl
PiBzcHJlYWQsCisgICAgICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gc3R5bGUsCisgICAg
ICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29sb3IpOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwCmluZGV4IDVjOTg1Njlj
NThmZjc1ZWVkNmUwZWYyMjY0OTdiZGJmNTM2Y2Q2YTUuLmFkMTViNDNjZjZjYzQyNjFjM2QyYjJk
MGQ2NzJmYzA4ODVjMzRiY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHls
ZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAKQEAg
LTIyMCw3ICsyMjAsNyBAQCB2b2lkIENTU1N0eWxlU2hlZXQ6OnNldERpc2FibGVkKGJvb2wgZGlz
YWJsZWQpCiAgICAgZGlkTXV0YXRlKCk7CiB9CiAKLXZvaWQgQ1NTU3R5bGVTaGVldDo6c2V0TWVk
aWFRdWVyaWVzKFBhc3NSZWZQdHI8TWVkaWFRdWVyeVNldD4gbWVkaWFRdWVyaWVzKQordm9pZCBD
U1NTdHlsZVNoZWV0OjpzZXRNZWRpYVF1ZXJpZXMoUmVmUHRyPE1lZGlhUXVlcnlTZXQ+IG1lZGlh
UXVlcmllcykKIHsKICAgICBtX21lZGlhUXVlcmllcyA9IG1lZGlhUXVlcmllczsKICAgICBpZiAo
bV9tZWRpYUNTU09NV3JhcHBlciAmJiBtX21lZGlhUXVlcmllcykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5
bGVTaGVldC5oCmluZGV4IGZjMTkzZmMwMDU3MzA3ZDU5ZWQ3ZTg2MjA3NmE4ODliOGM2ZTg1MTMu
LjcyMzZiMGUxODg2YTFkOWZkNzJlYjQ3M2M3ODU1NjQyM2M1MTVjYTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1N0eWxlU2hlZXQuaApAQCAtODYsNyArODYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVh
ck93bmVyUnVsZSgpIHsgbV9vd25lclJ1bGUgPSAwOyB9CiAgICAgRG9jdW1lbnQqIG93bmVyRG9j
dW1lbnQoKSBjb25zdDsKICAgICBNZWRpYVF1ZXJ5U2V0KiBtZWRpYVF1ZXJpZXMoKSBjb25zdCB7
IHJldHVybiBtX21lZGlhUXVlcmllcy5nZXQoKTsgfQotICAgIHZvaWQgc2V0TWVkaWFRdWVyaWVz
KFBhc3NSZWZQdHI8TWVkaWFRdWVyeVNldD4pOworICAgIHZvaWQgc2V0TWVkaWFRdWVyaWVzKFJl
ZlB0cjxNZWRpYVF1ZXJ5U2V0Pik7CiAgICAgdm9pZCBzZXRUaXRsZShjb25zdCBTdHJpbmcmIHRp
dGxlKSB7IG1fdGl0bGUgPSB0aXRsZTsgfQogCiAgICAgYm9vbCBoYWRSdWxlc011dGF0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9tdXRhdGVkUnVsZXM7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NUaW1pbmdGdW5jdGlvblZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
VGltaW5nRnVuY3Rpb25WYWx1ZS5oCmluZGV4IGRhY2I0NzM5ZTYxMDhiOTMzMmIwMTZkYjMwOTU3
OTQ0NmE4YjhhOGMuLjJkZjI3OWJkMzczOThlZDM0YWQ5NDdkOWJiYjE5NDUxNmQ1Yjc2N2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NUaW1pbmdGdW5jdGlvblZhbHVlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1RpbWluZ0Z1bmN0aW9uVmFsdWUuaApAQCAtMjcsNyAr
MjcsNiBAQAogI2RlZmluZSBDU1NUaW1pbmdGdW5jdGlvblZhbHVlX2gKIAogI2luY2x1ZGUgIkNT
U1ZhbHVlLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVW5pY29kZVJhbmdlVmFs
dWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NVbmljb2RlUmFuZ2VWYWx1ZS5oCmluZGV4IDI2
NDMwODFmOGVjMTQ5NzdmYzJkZTQwY2FhOGI1YWQwYTQwODkxMjAuLjhiYTlhOGFiYzFmMDRmYjFk
MzdlYjA0MTc0NGVjZTczNTE0MjYzZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NVbmljb2RlUmFuZ2VWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NVbmljb2Rl
UmFuZ2VWYWx1ZS5oCkBAIC0yNyw3ICsyNyw2IEBACiAjZGVmaW5lIENTU1VuaWNvZGVSYW5nZVZh
bHVlX2gKIAogI2luY2x1ZGUgIkNTU1ZhbHVlLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTVmFsdWVMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3QuY3Bw
CmluZGV4IDM1MTQ1MGNlMGEwZGNjMGM3YzcyNWEwM2FhYmJmZjRmZWE1OTljOGQuLjliZjkyYTk2
MjMzM2ZlY2ZlNTQzMzA0MmNlYzAwYjY3Yjk4OWFkYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NWYWx1ZUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1
ZUxpc3QuY3BwCkBAIC03NCw3ICs3NCw3IEBAIGJvb2wgQ1NTVmFsdWVMaXN0OjpoYXNWYWx1ZShD
U1NWYWx1ZSogdmFsKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotUGFzc1JlZlB0cjxD
U1NWYWx1ZUxpc3Q+IENTU1ZhbHVlTGlzdDo6Y29weSgpCitSZWZQdHI8Q1NTVmFsdWVMaXN0PiBD
U1NWYWx1ZUxpc3Q6OmNvcHkoKQogewogICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IG5ld0xpc3Q7
CiAgICAgc3dpdGNoIChtX3ZhbHVlTGlzdFNlcGFyYXRvcikgewpAQCAtOTIsNyArOTIsNyBAQCBQ
YXNzUmVmUHRyPENTU1ZhbHVlTGlzdD4gQ1NTVmFsdWVMaXN0Ojpjb3B5KCkKICAgICB9CiAgICAg
Zm9yIChhdXRvJiB2YWx1ZSA6IG1fdmFsdWVzKQogICAgICAgICBuZXdMaXN0LT5hcHBlbmQodmFs
dWUuZ2V0KCkpOwotICAgIHJldHVybiBuZXdMaXN0LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gbmV3
TGlzdDsKIH0KIAogU3RyaW5nIENTU1ZhbHVlTGlzdDo6Y3VzdG9tQ1NTVGV4dCgpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVMaXN0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTVmFsdWVMaXN0LmgKaW5kZXggNGEyMWRmN2RjMzQwOTE3NTZkZTAyYjg3MWJk
MzBlNDZjNGNiMjZhMS4uZmI3OGViYjJmYmVkNjE4ZWZiNmM1Yjc5NGI3YTc2NTUyNTdhNWUwMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlTGlzdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3QuaApAQCAtMjIsNyArMjIsNiBAQAogI2RlZmluZSBD
U1NWYWx1ZUxpc3RfaAogCiAjaW5jbHVkZSAiQ1NTVmFsdWUuaCIKLSNpbmNsdWRlIDx3dGYvUGFz
c1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpAQCAtNjYsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBwcmVwZW5kKFJlZjxDU1NWYWx1
ZT4mJik7CiAgICAgYm9vbCByZW1vdmVBbGwoQ1NTVmFsdWUqKTsKICAgICBib29sIGhhc1ZhbHVl
KENTU1ZhbHVlKikgY29uc3Q7Ci0gICAgUGFzc1JlZlB0cjxDU1NWYWx1ZUxpc3Q+IGNvcHkoKTsK
KyAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBjb3B5KCk7CiAKICAgICBTdHJpbmcgY3VzdG9tQ1NT
VGV4dCgpIGNvbnN0OwogICAgIGJvb2wgZXF1YWxzKGNvbnN0IENTU1ZhbHVlTGlzdCYpIGNvbnN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlUG9vbC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVQb29sLmNwcAppbmRleCBhYTJhN2Q0MmI5ZjdjYWYwOGZi
YzVhNDEwMWE5MjE3ZDhlNGZiZGM4Li4xZTM2YWJjNjdkZTZjMWMxNzg0M2Y1ODNhYWU2N2Y0M2M1
NTYzNWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVQb29sLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVQb29sLmNwcApAQCAtMTMzLDcgKzEzMyw3
IEBAIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gQ1NTVmFsdWVQb29sOjpjcmVhdGVGb250RmFtaWx5
VmFsdWUoY29uc3QgU3RyaW5nJiBmYW1pbHlOCiAgICAgcmV0dXJuICp2YWx1ZTsKIH0KIAotUGFz
c1JlZlB0cjxDU1NWYWx1ZUxpc3Q+IENTU1ZhbHVlUG9vbDo6Y3JlYXRlRm9udEZhY2VWYWx1ZShj
b25zdCBBdG9taWNTdHJpbmcmIHN0cmluZykKK1JlZlB0cjxDU1NWYWx1ZUxpc3Q+IENTU1ZhbHVl
UG9vbDo6Y3JlYXRlRm9udEZhY2VWYWx1ZShjb25zdCBBdG9taWNTdHJpbmcmIHN0cmluZykKIHsK
ICAgICAvLyBSZW1vdmUgb25lIGVudHJ5IGF0IHJhbmRvbSBpZiB0aGUgY2FjaGUgZ3Jvd3MgdG9v
IGxhcmdlLgogICAgIGNvbnN0IGludCBtYXhpbXVtRm9udEZhY2VDYWNoZVNpemUgPSAxMjg7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVQb29sLmggYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTVmFsdWVQb29sLmgKaW5kZXggYjJhOTAzZWE4ZTM2YmJhMTcxNDVjNWNhMzZk
MWFjMTJkZmYwZTY3ZS4uZmZmYThiOTk3NTJlNTIxYzc3MWM1NTU1YTFkMGIzNzc5NWJiM2U1YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlUG9vbC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZVBvb2wuaApAQCAtNDksNyArNDksNyBAQCBjbGFzcyBDU1NW
YWx1ZVBvb2wgewogcHVibGljOgogICAgIHN0YXRpYyBDU1NWYWx1ZVBvb2wmIHNpbmdsZXRvbigp
OwogCi0gICAgUGFzc1JlZlB0cjxDU1NWYWx1ZUxpc3Q+IGNyZWF0ZUZvbnRGYWNlVmFsdWUoY29u
c3QgQXRvbWljU3RyaW5nJik7CisgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gY3JlYXRlRm9udEZh
Y2VWYWx1ZShjb25zdCBBdG9taWNTdHJpbmcmKTsKICAgICBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+
IGNyZWF0ZUZvbnRGYW1pbHlWYWx1ZShjb25zdCBTdHJpbmcmLCBGcm9tU3lzdGVtRm9udElEID0g
RnJvbVN5c3RlbUZvbnRJRDo6Tm8pOwogICAgIFJlZjxDU1NJbmhlcml0ZWRWYWx1ZT4gY3JlYXRl
SW5oZXJpdGVkVmFsdWUoKSB7IHJldHVybiBtX2luaGVyaXRlZFZhbHVlLmNvcHlSZWYoKTsgfQog
ICAgIFJlZjxDU1NJbml0aWFsVmFsdWU+IGNyZWF0ZUltcGxpY2l0SW5pdGlhbFZhbHVlKCkgeyBy
ZXR1cm4gbV9pbXBsaWNpdEluaXRpYWxWYWx1ZS5jb3B5UmVmKCk7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9Db3VudGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ291bnRlci5o
CmluZGV4IDk4YThhYmNmOGFiODE4NjlkNjhiNDE1OTc0NmFhMjBmNTc3NThhMGQuLjA4ZWYyYTc2
NTQ4ZWViYTc5NDFlNTFkMTA5NDZhODQwODdlMTljYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9Db3VudGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NvdW50ZXIuaApAQCAt
MjgsNyArMjgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvdW50ZXIgOiBwdWJs
aWMgUmVmQ291bnRlZDxDb3VudGVyPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxDb3VudGVy
PiBjcmVhdGUoUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gaWRlbnRpZmllciwgUGFzc1Jl
ZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gbGlzdFN0eWxlLCBQYXNzUmVmUHRyPENTU1ByaW1pdGl2
ZVZhbHVlPiBzZXBhcmF0b3IpCisgICAgc3RhdGljIFJlZjxDb3VudGVyPiBjcmVhdGUoUmVmUHRy
PENTU1ByaW1pdGl2ZVZhbHVlPiBpZGVudGlmaWVyLCBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+
IGxpc3RTdHlsZSwgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBzZXBhcmF0b3IpCiAgICAgewog
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb3VudGVyKGlkZW50aWZpZXIsIGxpc3RTdHls
ZSwgc2VwYXJhdG9yKSk7CiAgICAgfQpAQCAtMzksOSArMzksOSBAQCBwdWJsaWM6CiAKICAgICBD
U1NWYWx1ZUlEIGxpc3RTdHlsZUlkZW50KCkgY29uc3QgeyByZXR1cm4gbV9saXN0U3R5bGUgPyBt
X2xpc3RTdHlsZS0+Z2V0VmFsdWVJRCgpIDogQ1NTVmFsdWVJbnZhbGlkOyB9CiAKLSAgICB2b2lk
IHNldElkZW50aWZpZXIoUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gaWRlbnRpZmllcikg
eyBtX2lkZW50aWZpZXIgPSBpZGVudGlmaWVyOyB9Ci0gICAgdm9pZCBzZXRMaXN0U3R5bGUoUGFz
c1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gbGlzdFN0eWxlKSB7IG1fbGlzdFN0eWxlID0gbGlz
dFN0eWxlOyB9Ci0gICAgdm9pZCBzZXRTZXBhcmF0b3IoUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVW
YWx1ZT4gc2VwYXJhdG9yKSB7IG1fc2VwYXJhdG9yID0gc2VwYXJhdG9yOyB9CisgICAgdm9pZCBz
ZXRJZGVudGlmaWVyKFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gaWRlbnRpZmllcikgeyBtX2lk
ZW50aWZpZXIgPSBpZGVudGlmaWVyOyB9CisgICAgdm9pZCBzZXRMaXN0U3R5bGUoUmVmUHRyPENT
U1ByaW1pdGl2ZVZhbHVlPiBsaXN0U3R5bGUpIHsgbV9saXN0U3R5bGUgPSBsaXN0U3R5bGU7IH0K
KyAgICB2b2lkIHNldFNlcGFyYXRvcihSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHNlcGFyYXRv
cikgeyBtX3NlcGFyYXRvciA9IHNlcGFyYXRvcjsgfQogCiAgICAgYm9vbCBlcXVhbHMoY29uc3Qg
Q291bnRlciYgb3RoZXIpIGNvbnN0CiAgICAgewpAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6CiAg
ICAgfQogCiBwcml2YXRlOgotICAgIENvdW50ZXIoUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1
ZT4gaWRlbnRpZmllciwgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gbGlzdFN0eWxlLCBQ
YXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBzZXBhcmF0b3IpCisgICAgQ291bnRlcihSZWZQ
dHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGlkZW50aWZpZXIsIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1
ZT4gbGlzdFN0eWxlLCBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHNlcGFyYXRvcikKICAgICAg
ICAgOiBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKICAgICAgICAgLCBtX2xpc3RTdHlsZShsaXN0
U3R5bGUpCiAgICAgICAgICwgbV9zZXBhcmF0b3Ioc2VwYXJhdG9yKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0ZvbnRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRM
b2FkZXIuY3BwCmluZGV4IGZkNTVhOWVlYjY1MzMwMmQ2YWY5NDQzNjliMjZmMTRhMzUxNDc0NDEu
LjRkZGUyYjA0ZTg0ODgzODc4NjkxYjI2YWE2ZWI0MTE4Nzk0NTUzOGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9Gb250TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Rm9udExvYWRlci5jcHAKQEAgLTQ4LDEyICs0OCwxMiBAQCBzdGF0aWMgY29uc3QgY2hhciogY29u
c3QgZGVmYXVsdEZvbnRGYW1pbHkgPSAic2Fucy1zZXJpZiI7CiAKIGNsYXNzIExvYWRGb250Q2Fs
bGJhY2sgOiBwdWJsaWMgQ1NTU2VnbWVudGVkRm9udEZhY2U6OkxvYWRGb250Q2FsbGJhY2sgewog
cHVibGljOgotICAgIHN0YXRpYyBSZWY8TG9hZEZvbnRDYWxsYmFjaz4gY3JlYXRlKGludCBudW1M
b2FkaW5nLCBGb250TG9hZGVyJiBmb250TG9hZGVyLCBQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4g
bG9hZENhbGxiYWNrLCBQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKKyAg
ICBzdGF0aWMgUmVmPExvYWRGb250Q2FsbGJhY2s+IGNyZWF0ZShpbnQgbnVtTG9hZGluZywgRm9u
dExvYWRlciYgZm9udExvYWRlciwgUmVmUHRyPFZvaWRDYWxsYmFjaz4gbG9hZENhbGxiYWNrLCBS
ZWZQdHI8Vm9pZENhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQogICAgIHsKICAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgTG9hZEZvbnRDYWxsYmFjayhudW1Mb2FkaW5nLCBmb250TG9hZGVyLCBs
b2FkQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spKTsKICAgICB9CiAKLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxMb2FkRm9udENhbGxiYWNrPiBjcmVhdGVGcm9tUGFyYW1zKGNvbnN0IERpY3Rpb25hcnkm
IHBhcmFtcywgRm9udExvYWRlciYgZm9udExvYWRlciwgY29uc3QgRm9udENhc2NhZGUmIGZvbnQp
CisgICAgc3RhdGljIFJlZlB0cjxMb2FkRm9udENhbGxiYWNrPiBjcmVhdGVGcm9tUGFyYW1zKGNv
bnN0IERpY3Rpb25hcnkmIHBhcmFtcywgRm9udExvYWRlciYgZm9udExvYWRlciwgY29uc3QgRm9u
dENhc2NhZGUmIGZvbnQpCiAgICAgewogICAgICAgICBSZWZQdHI8Vm9pZENhbGxiYWNrPiBvbnN1
Y2Nlc3M7CiAgICAgICAgIFJlZlB0cjxWb2lkQ2FsbGJhY2s+IG9uZXJyb3I7CkBAIC03Miw3ICs3
Miw3IEBAIHB1YmxpYzoKICAgICBpbnQgZmFtaWx5Q291bnQoKSBjb25zdCB7IHJldHVybiBtX2Zh
bWlseUNvdW50OyB9CiAKIHByaXZhdGU6Ci0gICAgTG9hZEZvbnRDYWxsYmFjayhpbnQgbnVtTG9h
ZGluZywgRm9udExvYWRlciYgZm9udExvYWRlciwgUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IGxv
YWRDYWxsYmFjaywgUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCisgICAg
TG9hZEZvbnRDYWxsYmFjayhpbnQgbnVtTG9hZGluZywgRm9udExvYWRlciYgZm9udExvYWRlciwg
UmVmUHRyPFZvaWRDYWxsYmFjaz4gbG9hZENhbGxiYWNrLCBSZWZQdHI8Vm9pZENhbGxiYWNrPiBl
cnJvckNhbGxiYWNrKQogICAgICAgICA6IG1fZmFtaWx5Q291bnQobnVtTG9hZGluZykKICAgICAg
ICAgLCBtX251bUxvYWRpbmcobnVtTG9hZGluZykKICAgICAgICAgLCBtX2Vycm9yT2NjdXJlZChm
YWxzZSkKQEAgLTE2Niw3ICsxNjYsNyBAQCBib29sIEZvbnRMb2FkZXI6OmNhblN1c3BlbmRGb3JQ
YWdlQ2FjaGUoKSBjb25zdAogICAgIHJldHVybiAhbV9udW1Mb2FkaW5nRnJvbUNTUyAmJiAhbV9u
dW1Mb2FkaW5nRnJvbUpTOwogfQogCi12b2lkIEZvbnRMb2FkZXI6OnNjaGVkdWxlRXZlbnQoUGFz
c1JlZlB0cjxFdmVudD4gZXZlbnQpCit2b2lkIEZvbnRMb2FkZXI6OnNjaGVkdWxlRXZlbnQoUmVm
UHRyPEV2ZW50PiBldmVudCkKIHsKICAgICBtX3BlbmRpbmdFdmVudHMuYXBwZW5kKGV2ZW50KTsK
ICAgICBpZiAoIW1fcGVuZGluZ0V2ZW50c1RpbWVyLmlzQWN0aXZlKCkpCkBAIC0yMjgsNyArMjI4
LDcgQEAgdm9pZCBGb250TG9hZGVyOjpsb2FkRXJyb3IoQ1NTRm9udEZhY2VSdWxlKiBydWxlLCBD
U1NGb250RmFjZVNvdXJjZSogc291cmNlKQogICAgICAgICBtX2xvYWRpbmdEb25lRXZlbnQgPSBD
U1NGb250RmFjZUxvYWRFdmVudDo6Y3JlYXRlRm9yRm9udEZhY2VSdWxlKGV2ZW50TmFtZXMoKS5s
b2FkaW5nZG9uZUV2ZW50LCBydWxlKTsKIH0KIAotdm9pZCBGb250TG9hZGVyOjpub3RpZnlXaGVu
Rm9udHNSZWFkeShQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4gY2FsbGJhY2spCit2b2lkIEZvbnRM
b2FkZXI6Om5vdGlmeVdoZW5Gb250c1JlYWR5KFJlZlB0cjxWb2lkQ2FsbGJhY2s+IGNhbGxiYWNr
KQogewogICAgIG1fY2FsbGJhY2tzLmFwcGVuZChjYWxsYmFjayk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvRm9udExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRM
b2FkZXIuaAppbmRleCBkZmM1MDFhN2ViZWUwOTVmMjEyNTI5ODdmY2IzYzZlMGRhYzRjZmI2Li43
ZTdhZDU5ZjIwY2M2ZmY2ZTA2YjY0ZWQyMGU0ZjY2ZWY5NzE2Mjc4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvRm9udExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250
TG9hZGVyLmgKQEAgLTMzLDcgKzMzLDYgQEAKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgogI2lu
Y2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSAiVm9pZENhbGxiYWNrLmgiCi0jaW5jbHVkZSA8d3Rm
L1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KIApAQCAtNjEsNyArNjAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBsb2FkRm9u
dChjb25zdCBEaWN0aW9uYXJ5Jik7CiAgICAgdm9pZCBsb2FkRm9udERvbmUoY29uc3QgTG9hZEZv
bnRDYWxsYmFjayYpOwogCi0gICAgdm9pZCBub3RpZnlXaGVuRm9udHNSZWFkeShQYXNzUmVmUHRy
PFZvaWRDYWxsYmFjaz4pOworICAgIHZvaWQgbm90aWZ5V2hlbkZvbnRzUmVhZHkoUmVmUHRyPFZv
aWRDYWxsYmFjaz4pOwogCiAgICAgYm9vbCBsb2FkaW5nKCkgY29uc3QgeyByZXR1cm4gbV9udW1M
b2FkaW5nRnJvbUNTUyA+IDAgfHwgbV9udW1Mb2FkaW5nRnJvbUpTID4gMDsgfQogCkBAIC05MSw3
ICs5MCw3IEBAIHByaXZhdGU6CiAgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgp
IGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgY2FuU3VzcGVuZEZvclBhZ2VDYWNoZSgpIGNvbnN0
IG92ZXJyaWRlOwogCi0gICAgdm9pZCBzY2hlZHVsZUV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+KTsK
KyAgICB2b2lkIHNjaGVkdWxlRXZlbnQoUmVmUHRyPEV2ZW50Pik7CiAgICAgdm9pZCBmaXJlUGVu
ZGluZ0V2ZW50cygpOwogICAgIGJvb2wgcmVzb2x2ZUZvbnRTdHlsZShjb25zdCBTdHJpbmcmLCBG
b250Q2FzY2FkZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTGVuZ3RoUmVw
ZWF0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTGVuZ3RoUmVwZWF0LmgKaW5kZXggYjExZjA2YjNl
YzNhYTVmYmM1ZTEwMDI1NGM5NGRkZjVhNTlmZjAxNC4uNjEzNzVjNDNmZGYwODM5NmM0MTFkMWE4
NjY0Yjg0Y2I2ZDllOWE0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0xlbmd0aFJl
cGVhdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9MZW5ndGhSZXBlYXQuaApAQCAtMzYsMTMg
KzM2LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTGVuZ3RoUmVwZWF0IDogcHVi
bGljIFJlZkNvdW50ZWQ8TGVuZ3RoUmVwZWF0PiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxM
ZW5ndGhSZXBlYXQ+IGNyZWF0ZShQYXNzUmVmUHRyPENTU1ZhbHVlPiBpbnRlcnZhbCkgeyByZXR1
cm4gYWRvcHRSZWYoKm5ldyBMZW5ndGhSZXBlYXQoaW50ZXJ2YWwpKTsgfQorICAgIHN0YXRpYyBS
ZWY8TGVuZ3RoUmVwZWF0PiBjcmVhdGUoUmVmUHRyPENTU1ZhbHVlPiBpbnRlcnZhbCkgeyByZXR1
cm4gYWRvcHRSZWYoKm5ldyBMZW5ndGhSZXBlYXQoaW50ZXJ2YWwpKTsgfQogCiAgICAgUmVmPExl
bmd0aFJlcGVhdD4gY2xvbmVGb3JDU1NPTSgpIGNvbnN0IHsgcmV0dXJuIGNyZWF0ZShpbnRlcnZh
bCgpKTsgfQogCiAgICAgQ1NTVmFsdWUqIGludGVydmFsKCkgY29uc3QgeyByZXR1cm4gbV9pbnRl
cnZhbC5nZXQoKTsgfQogCi0gICAgdm9pZCBzZXRJbnRlcnZhbChQYXNzUmVmUHRyPENTU1ZhbHVl
PiBpbnRlcnZhbCkgeyBtX2ludGVydmFsID0gaW50ZXJ2YWw7IH0KKyAgICB2b2lkIHNldEludGVy
dmFsKFJlZlB0cjxDU1NWYWx1ZT4gaW50ZXJ2YWwpIHsgbV9pbnRlcnZhbCA9IGludGVydmFsOyB9
CiAKICAgICBib29sIGVxdWFscyhjb25zdCBMZW5ndGhSZXBlYXQmIG90aGVyKSBjb25zdAogICAg
IHsKQEAgLTU1LDcgKzU1LDcgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBMZW5n
dGhSZXBlYXQoUGFzc1JlZlB0cjxDU1NWYWx1ZT4gaW50ZXJ2YWwpCisgICAgTGVuZ3RoUmVwZWF0
KFJlZlB0cjxDU1NWYWx1ZT4gaW50ZXJ2YWwpCiAgICAgICAgIDogbV9pbnRlcnZhbChpbnRlcnZh
bCkKICAgICB7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhTGlz
dC5oIGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhTGlzdC5oCmluZGV4IDczMTAzNDAwYjQ2N2Ni
YjRlZjVhODA1ZTQyYzkwMjJhMGZlOTA3M2EuLjI3ZjBiYWVmNTM1MmMzMjdjOWUyNzEzYjc5ZDk2
YzEwMmNhMzVhZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYUxpc3QuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFMaXN0LmgKQEAgLTI0LDcgKzI0LDYgQEAKICNp
bmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5
TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUxpc3QuY3BwCmluZGV4IDdi
NGZkMDJkZDU0Yjc0ZDQwMTcyZTMwNGIyMGNkZGFjNzliMGJlN2UuLjQ1ZWVlNGQ1YTgxYmI4OWU3
NjQ1ZmIyMWZjMmJmNjM5ZTI1OTM1NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9N
ZWRpYVF1ZXJ5TGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlMaXN0
LmNwcApAQCAtMjcsMTIgKzI3LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPE1l
ZGlhUXVlcnlMaXN0PiBNZWRpYVF1ZXJ5TGlzdDo6Y3JlYXRlKFBhc3NSZWZQdHI8TWVkaWFRdWVy
eU1hdGNoZXI+IHZlY3RvciwgUGFzc1JlZlB0cjxNZWRpYVF1ZXJ5U2V0PiBtZWRpYSwgYm9vbCBt
YXRjaGVzKQorUmVmPE1lZGlhUXVlcnlMaXN0PiBNZWRpYVF1ZXJ5TGlzdDo6Y3JlYXRlKFJlZlB0
cjxNZWRpYVF1ZXJ5TWF0Y2hlcj4gdmVjdG9yLCBSZWZQdHI8TWVkaWFRdWVyeVNldD4gbWVkaWEs
IGJvb2wgbWF0Y2hlcykKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYVF1ZXJ5TGlz
dCh2ZWN0b3IsIG1lZGlhLCBtYXRjaGVzKSk7CiB9CiAKLU1lZGlhUXVlcnlMaXN0OjpNZWRpYVF1
ZXJ5TGlzdChQYXNzUmVmUHRyPE1lZGlhUXVlcnlNYXRjaGVyPiB2ZWN0b3IsIFBhc3NSZWZQdHI8
TWVkaWFRdWVyeVNldD4gbWVkaWEsIGJvb2wgbWF0Y2hlcykKK01lZGlhUXVlcnlMaXN0OjpNZWRp
YVF1ZXJ5TGlzdChSZWZQdHI8TWVkaWFRdWVyeU1hdGNoZXI+IHZlY3RvciwgUmVmUHRyPE1lZGlh
UXVlcnlTZXQ+IG1lZGlhLCBib29sIG1hdGNoZXMpCiAgICAgOiBtX21hdGNoZXIodmVjdG9yKQog
ICAgICwgbV9tZWRpYShtZWRpYSkKICAgICAsIG1fZXZhbHVhdGlvblJvdW5kKG1fbWF0Y2hlci0+
ZXZhbHVhdGlvblJvdW5kKCkpCkBAIC01MCw3ICs1MCw3IEBAIFN0cmluZyBNZWRpYVF1ZXJ5TGlz
dDo6bWVkaWEoKSBjb25zdAogICAgIHJldHVybiBtX21lZGlhLT5tZWRpYVRleHQoKTsKIH0KIAot
dm9pZCBNZWRpYVF1ZXJ5TGlzdDo6YWRkTGlzdGVuZXIoUGFzc1JlZlB0cjxNZWRpYVF1ZXJ5TGlz
dExpc3RlbmVyPiBsaXN0ZW5lcikKK3ZvaWQgTWVkaWFRdWVyeUxpc3Q6OmFkZExpc3RlbmVyKFJl
ZlB0cjxNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyPiBsaXN0ZW5lcikKIHsKICAgICBpZiAoIWxpc3Rl
bmVyKQogICAgICAgICByZXR1cm47CkBAIC01OCw3ICs1OCw3IEBAIHZvaWQgTWVkaWFRdWVyeUxp
c3Q6OmFkZExpc3RlbmVyKFBhc3NSZWZQdHI8TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcj4gbGlzdGVu
ZXIpCiAgICAgbV9tYXRjaGVyLT5hZGRMaXN0ZW5lcihsaXN0ZW5lciwgdGhpcyk7CiB9CiAKLXZv
aWQgTWVkaWFRdWVyeUxpc3Q6OnJlbW92ZUxpc3RlbmVyKFBhc3NSZWZQdHI8TWVkaWFRdWVyeUxp
c3RMaXN0ZW5lcj4gbGlzdGVuZXIpCit2b2lkIE1lZGlhUXVlcnlMaXN0OjpyZW1vdmVMaXN0ZW5l
cihSZWZQdHI8TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcj4gbGlzdGVuZXIpCiB7CiAgICAgaWYgKCFs
aXN0ZW5lcikKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L01lZGlhUXVlcnlMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUxpc3QuaApp
bmRleCA2OWFmYTc2YjBlMDZiMDI4NDQ0Nzk0Y2VjMWYwOWJlODE2YmE1Njg5Li44ZmNmYzgzNTEw
M2FlMzBlZjc0ZjVlMWE1ZjMzZWFiYTY2YTVlNTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvTWVkaWFRdWVyeUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVy
eUxpc3QuaApAQCAtMzgsMTkgKzM4LDE5IEBAIGNsYXNzIE1lZGlhUXVlcnlTZXQ7CiAKIGNsYXNz
IE1lZGlhUXVlcnlMaXN0IDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFRdWVyeUxpc3Q+IHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmPE1lZGlhUXVlcnlMaXN0PiBjcmVhdGUoUGFzc1JlZlB0cjxN
ZWRpYVF1ZXJ5TWF0Y2hlcj4sIFBhc3NSZWZQdHI8TWVkaWFRdWVyeVNldD4sIGJvb2wpOworICAg
IHN0YXRpYyBSZWY8TWVkaWFRdWVyeUxpc3Q+IGNyZWF0ZShSZWZQdHI8TWVkaWFRdWVyeU1hdGNo
ZXI+LCBSZWZQdHI8TWVkaWFRdWVyeVNldD4sIGJvb2wpOwogICAgIH5NZWRpYVF1ZXJ5TGlzdCgp
OwogCiAgICAgU3RyaW5nIG1lZGlhKCkgY29uc3Q7CiAgICAgYm9vbCBtYXRjaGVzKCk7CiAKLSAg
ICB2b2lkIGFkZExpc3RlbmVyKFBhc3NSZWZQdHI8TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcj4pOwot
ICAgIHZvaWQgcmVtb3ZlTGlzdGVuZXIoUGFzc1JlZlB0cjxNZWRpYVF1ZXJ5TGlzdExpc3RlbmVy
Pik7CisgICAgdm9pZCBhZGRMaXN0ZW5lcihSZWZQdHI8TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcj4p
OworICAgIHZvaWQgcmVtb3ZlTGlzdGVuZXIoUmVmUHRyPE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI+
KTsKIAogICAgIHZvaWQgZXZhbHVhdGUoTWVkaWFRdWVyeUV2YWx1YXRvciosIGJvb2wmIG5vdGlm
aWNhdGlvbk5lZWRlZCk7CiAKIHByaXZhdGU6Ci0gICAgTWVkaWFRdWVyeUxpc3QoUGFzc1JlZlB0
cjxNZWRpYVF1ZXJ5TWF0Y2hlcj4sIFBhc3NSZWZQdHI8TWVkaWFRdWVyeVNldD4sIGJvb2wgbWF0
Y2hlcyk7CisgICAgTWVkaWFRdWVyeUxpc3QoUmVmUHRyPE1lZGlhUXVlcnlNYXRjaGVyPiwgUmVm
UHRyPE1lZGlhUXVlcnlTZXQ+LCBib29sIG1hdGNoZXMpOwogICAgIHZvaWQgc2V0TWF0Y2hlcyhi
b29sKTsKIAogICAgIFJlZlB0cjxNZWRpYVF1ZXJ5TWF0Y2hlcj4gbV9tYXRjaGVyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlNYXRjaGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5TWF0Y2hlci5jcHAKaW5kZXggNGRlOTYwYmYzMDEwM2FjZjA1
N2IxYmE0M2IyYzdiOGRkYmY5NDBjYS4uNDdlMTBhYzFlY2E3YjA3MDNjMjUzNGZlYWQ4M2U5YzRm
M2I1ZWM0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlNYXRjaGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeU1hdGNoZXIuY3BwCkBAIC0z
Myw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotTWVkaWFRdWVyeU1hdGNoZXI6
Okxpc3RlbmVyOjpMaXN0ZW5lcihQYXNzUmVmUHRyPE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI+IGxp
c3RlbmVyLCBQYXNzUmVmUHRyPE1lZGlhUXVlcnlMaXN0PiBxdWVyeSkKK01lZGlhUXVlcnlNYXRj
aGVyOjpMaXN0ZW5lcjo6TGlzdGVuZXIoUmVmUHRyPE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI+IGxp
c3RlbmVyLCBSZWZQdHI8TWVkaWFRdWVyeUxpc3Q+IHF1ZXJ5KQogICAgIDogbV9saXN0ZW5lcihs
aXN0ZW5lcikKICAgICAsIG1fcXVlcnkocXVlcnkpCiB7CkBAIC0xMTIsNyArMTEyLDcgQEAgUmVm
UHRyPE1lZGlhUXVlcnlMaXN0PiBNZWRpYVF1ZXJ5TWF0Y2hlcjo6bWF0Y2hNZWRpYShjb25zdCBT
dHJpbmcmIHF1ZXJ5KQogICAgIHJldHVybiBNZWRpYVF1ZXJ5TGlzdDo6Y3JlYXRlKHRoaXMsIG1l
ZGlhLCBldmFsdWF0ZShtZWRpYS5nZXQoKSkpOwogfQogCi12b2lkIE1lZGlhUXVlcnlNYXRjaGVy
OjphZGRMaXN0ZW5lcihQYXNzUmVmUHRyPE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI+IGxpc3RlbmVy
LCBQYXNzUmVmUHRyPE1lZGlhUXVlcnlMaXN0PiBxdWVyeSkKK3ZvaWQgTWVkaWFRdWVyeU1hdGNo
ZXI6OmFkZExpc3RlbmVyKFJlZlB0cjxNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyPiBsaXN0ZW5lciwg
UmVmUHRyPE1lZGlhUXVlcnlMaXN0PiBxdWVyeSkKIHsKICAgICBpZiAoIW1fZG9jdW1lbnQpCiAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5
TWF0Y2hlci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlNYXRjaGVyLmgKaW5kZXgg
OGRhYzE3MjZhZWNiMmQ0ODFlM2MxMjE0MzRkMmJmOTZlM2M1OGE4MC4uYzJmZjNjZDI5Y2EwYzRl
MzVjMzhlYTZjOGU5ODY3N2NlM2MyYjJlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L01lZGlhUXVlcnlNYXRjaGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlN
YXRjaGVyLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogICAgIH5NZWRpYVF1ZXJ5TWF0Y2hl
cigpOwogICAgIHZvaWQgZG9jdW1lbnREZXN0cm95ZWQoKTsKIAotICAgIHZvaWQgYWRkTGlzdGVu
ZXIoUGFzc1JlZlB0cjxNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyPiwgUGFzc1JlZlB0cjxNZWRpYVF1
ZXJ5TGlzdD4pOworICAgIHZvaWQgYWRkTGlzdGVuZXIoUmVmUHRyPE1lZGlhUXVlcnlMaXN0TGlz
dGVuZXI+LCBSZWZQdHI8TWVkaWFRdWVyeUxpc3Q+KTsKICAgICB2b2lkIHJlbW92ZUxpc3RlbmVy
KE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIqLCBNZWRpYVF1ZXJ5TGlzdCopOwogCiAgICAgUmVmUHRy
PE1lZGlhUXVlcnlMaXN0PiBtYXRjaE1lZGlhKGNvbnN0IFN0cmluZyYpOwpAQCAtNTYsNyArNTYs
NyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGNsYXNzIExpc3RlbmVyIHsKICAgICBwdWJsaWM6
Ci0gICAgICAgIExpc3RlbmVyKFBhc3NSZWZQdHI8TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcj4sIFBh
c3NSZWZQdHI8TWVkaWFRdWVyeUxpc3Q+KTsKKyAgICAgICAgTGlzdGVuZXIoUmVmUHRyPE1lZGlh
UXVlcnlMaXN0TGlzdGVuZXI+LCBSZWZQdHI8TWVkaWFRdWVyeUxpc3Q+KTsKICAgICAgICAgfkxp
c3RlbmVyKCk7CiAKICAgICAgICAgdm9pZCBldmFsdWF0ZShNZWRpYVF1ZXJ5RXZhbHVhdG9yKik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUGFpci5oIGIvU291cmNlL1dlYkNvcmUv
Y3NzL1BhaXIuaAppbmRleCBlMzZlYmYxMTJlYTU1YmYyNGRiMDQzY2I0YjYyYzcyOTExNzQ1NmE1
Li5mZTQwYjQ3OGQzMTJmYWExY2EyNjc1ZDk1NjhiMWYwODhkNzBmNWQxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvUGFpci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9QYWlyLmgK
QEAgLTIzLDcgKzIzLDYgQEAKIAogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVk
ZSAiQ1NTUHJpbWl0aXZlVmFsdWUuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1JlY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9SZWN0LmgKaW5kZXggZGQ5Y2QwNDVkZDY1ZTcwZTI1MTMzYzEyZDY1MzE4ZjY0ZjU0MmJhNi4u
MzE3OGJlZTMwM2ZhYjY1NGNlYWQwN2QyOWU0YjM5Y2MzMzVlMWUzNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL1JlY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUmVjdC5oCkBA
IC0zNCwxMCArMzQsMTAgQEAgcHVibGljOgogICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBib3R0b20o
KSBjb25zdCB7IHJldHVybiBtX2JvdHRvbS5nZXQoKTsgfQogICAgIENTU1ByaW1pdGl2ZVZhbHVl
KiBsZWZ0KCkgY29uc3QgeyByZXR1cm4gbV9sZWZ0LmdldCgpOyB9CiAKLSAgICB2b2lkIHNldFRv
cChQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiB0b3ApIHsgbV90b3AgPSB0b3A7IH0KLSAg
ICB2b2lkIHNldFJpZ2h0KFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHJpZ2h0KSB7IG1f
cmlnaHQgPSByaWdodDsgfQotICAgIHZvaWQgc2V0Qm90dG9tKFBhc3NSZWZQdHI8Q1NTUHJpbWl0
aXZlVmFsdWU+IGJvdHRvbSkgeyBtX2JvdHRvbSA9IGJvdHRvbTsgfQotICAgIHZvaWQgc2V0TGVm
dChQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBsZWZ0KSB7IG1fbGVmdCA9IGxlZnQ7IH0K
KyAgICB2b2lkIHNldFRvcChSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHRvcCkgeyBtX3RvcCA9
IHRvcDsgfQorICAgIHZvaWQgc2V0UmlnaHQoUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiByaWdo
dCkgeyBtX3JpZ2h0ID0gcmlnaHQ7IH0KKyAgICB2b2lkIHNldEJvdHRvbShSZWZQdHI8Q1NTUHJp
bWl0aXZlVmFsdWU+IGJvdHRvbSkgeyBtX2JvdHRvbSA9IGJvdHRvbTsgfQorICAgIHZvaWQgc2V0
TGVmdChSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGxlZnQpIHsgbV9sZWZ0ID0gbGVmdDsgfQog
CiAgICAgYm9vbCBlcXVhbHMoY29uc3QgUmVjdEJhc2UmIG90aGVyKSBjb25zdAogICAgIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TVkdDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1NWR0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlv
bi5jcHAKaW5kZXggOGE5MGM4YThmNmNkYzc4ZTE2MDRjMjdiY2U3N2YwZTVkOGY0OWY4ZS4uNzNj
OGUyNWVjODU5ZGQ0YWFhYTliZTY2YWE2MjY3NmI1N2UwMTgzYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL1NWR0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL1NWR0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTkz
LDcgKzkzLDcgQEAgc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gc3Ryb2tlRGFzaEFycmF5VG9DU1NW
YWx1ZUxpc3QoY29uc3QgVmVjdG9yPFNWR0xlbmd0aD4mIGQKICAgICByZXR1cm4gbGlzdDsKIH0K
IAotUmVmUHRyPFNWR1BhaW50PiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjphZGp1c3RTVkdQYWlu
dEZvckN1cnJlbnRDb2xvcihQYXNzUmVmUHRyPFNWR1BhaW50PiBuZXdQYWludCwgUmVuZGVyU3R5
bGUqIHN0eWxlKSBjb25zdAorUmVmUHRyPFNWR1BhaW50PiBDb21wdXRlZFN0eWxlRXh0cmFjdG9y
OjphZGp1c3RTVkdQYWludEZvckN1cnJlbnRDb2xvcihSZWZQdHI8U1ZHUGFpbnQ+IG5ld1BhaW50
LCBSZW5kZXJTdHlsZSogc3R5bGUpIGNvbnN0CiB7CiAgICAgUmVmUHRyPFNWR1BhaW50PiBwYWlu
dCA9IG5ld1BhaW50OwogICAgIGlmIChwYWludC0+cGFpbnRUeXBlKCkgPT0gU1ZHUGFpbnQ6OlNW
R19QQUlOVFRZUEVfQ1VSUkVOVENPTE9SIHx8IHBhaW50LT5wYWludFR5cGUoKSA9PSBTVkdQYWlu
dDo6U1ZHX1BBSU5UVFlQRV9VUklfQ1VSUkVOVENPTE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlQnVpbGRlckNvbnZlcnRlci5oCmluZGV4IGViMDNmYjA1ZGVkNjFlMjhiYjdiZTdhZTcyZmIx
OTJiMjY3YjIwNGEuLjRmN2Q3YzNhODU4ZDk3OWZhYzMwNGYyZTAyMWRlNjc1NThjMjBlN2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgKQEAgLTcwLDI1ICs3
MCwyNSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHNob3J0IGNvbnZlcnRXZWJraXRIeXBoZW5hdGVM
aW1pdExpbmVzKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYpOwogICAgIHRlbXBsYXRlIDxDU1NQ
cm9wZXJ0eUlEIHByb3BlcnR5PiBzdGF0aWMgTmluZVBpZWNlSW1hZ2UgY29udmVydEJvcmRlcklt
YWdlKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYpOwogICAgIHRlbXBsYXRlIDxDU1NQcm9wZXJ0
eUlEIHByb3BlcnR5PiBzdGF0aWMgTmluZVBpZWNlSW1hZ2UgY29udmVydEJvcmRlck1hc2soU3R5
bGVSZXNvbHZlciYsIENTU1ZhbHVlJik7Ci0gICAgdGVtcGxhdGUgPENTU1Byb3BlcnR5SUQgcHJv
cGVydHk+IHN0YXRpYyBQYXNzUmVmUHRyPFN0eWxlSW1hZ2U+IGNvbnZlcnRTdHlsZUltYWdlKFN0
eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYpOworICAgIHRlbXBsYXRlIDxDU1NQcm9wZXJ0eUlEIHBy
b3BlcnR5PiBzdGF0aWMgUmVmUHRyPFN0eWxlSW1hZ2U+IGNvbnZlcnRTdHlsZUltYWdlKFN0eWxl
UmVzb2x2ZXImLCBDU1NWYWx1ZSYpOwogICAgIHN0YXRpYyBUcmFuc2Zvcm1PcGVyYXRpb25zIGNv
bnZlcnRUcmFuc2Zvcm0oU3R5bGVSZXNvbHZlciYsIENTU1ZhbHVlJik7CiAgICAgc3RhdGljIFN0
cmluZyBjb252ZXJ0U3RyaW5nKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYpOwogICAgIHN0YXRp
YyBTdHJpbmcgY29udmVydFN0cmluZ09yQXV0byhTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmKTsK
ICAgICBzdGF0aWMgU3RyaW5nIGNvbnZlcnRTdHJpbmdPck5vbmUoU3R5bGVSZXNvbHZlciYsIENT
U1ZhbHVlJik7CiAgICAgc3RhdGljIFRleHRFbXBoYXNpc1Bvc2l0aW9uIGNvbnZlcnRUZXh0RW1w
aGFzaXNQb3NpdGlvbihTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmKTsKICAgICBzdGF0aWMgRVRl
eHRBbGlnbiBjb252ZXJ0VGV4dEFsaWduKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYpOwotICAg
IHN0YXRpYyBQYXNzUmVmUHRyPENsaXBQYXRoT3BlcmF0aW9uPiBjb252ZXJ0Q2xpcFBhdGgoU3R5
bGVSZXNvbHZlciYsIENTU1ZhbHVlJik7CisgICAgc3RhdGljIFJlZlB0cjxDbGlwUGF0aE9wZXJh
dGlvbj4gY29udmVydENsaXBQYXRoKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYpOwogICAgIHN0
YXRpYyBFUmVzaXplIGNvbnZlcnRSZXNpemUoU3R5bGVSZXNvbHZlciYsIENTU1ZhbHVlJik7CiAg
ICAgc3RhdGljIGludCBjb252ZXJ0TWFycXVlZVJlcGV0aXRpb24oU3R5bGVSZXNvbHZlciYsIENT
U1ZhbHVlJik7CiAgICAgc3RhdGljIGludCBjb252ZXJ0TWFycXVlZVNwZWVkKFN0eWxlUmVzb2x2
ZXImLCBDU1NWYWx1ZSYpOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFF1b3Rlc0RhdGE+IGNvbnZl
cnRRdW90ZXMoU3R5bGVSZXNvbHZlciYsIENTU1ZhbHVlJik7CisgICAgc3RhdGljIFJlZlB0cjxR
dW90ZXNEYXRhPiBjb252ZXJ0UXVvdGVzKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYpOwogICAg
IHN0YXRpYyBUZXh0VW5kZXJsaW5lUG9zaXRpb24gY29udmVydFRleHRVbmRlcmxpbmVQb3NpdGlv
bihTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHls
ZVJlZmxlY3Rpb24+IGNvbnZlcnRSZWZsZWN0aW9uKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYp
OworICAgIHN0YXRpYyBSZWZQdHI8U3R5bGVSZWZsZWN0aW9uPiBjb252ZXJ0UmVmbGVjdGlvbihT
dHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmKTsKICAgICBzdGF0aWMgSW50U2l6ZSBjb252ZXJ0SW5p
dGlhbExldHRlcihTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmKTsKICAgICBzdGF0aWMgZmxvYXQg
Y29udmVydFRleHRTdHJva2VXaWR0aChTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmKTsKICAgICBz
dGF0aWMgTGluZUJveENvbnRhaW4gY29udmVydExpbmVCb3hDb250YWluKFN0eWxlUmVzb2x2ZXIm
LCBDU1NWYWx1ZSYpOwogICAgIHN0YXRpYyBUZXh0RGVjb3JhdGlvblNraXAgY29udmVydFRleHRE
ZWNvcmF0aW9uU2tpcChTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmKTsKLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxTaGFwZVZhbHVlPiBjb252ZXJ0U2hhcGVWYWx1ZShTdHlsZVJlc29sdmVyJiwgQ1NT
VmFsdWUmKTsKKyAgICBzdGF0aWMgUmVmUHRyPFNoYXBlVmFsdWU+IGNvbnZlcnRTaGFwZVZhbHVl
KFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYpOwogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVAp
CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxTbmFwUG9pbnRzPiBjb252ZXJ0U2Ny
b2xsU25hcFBvaW50cyhTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmKTsKICAgICBzdGF0aWMgTGVu
Z3RoU2l6ZSBjb252ZXJ0U25hcENvb3JkaW5hdGVQYWlyKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1
ZSYsIHNpemVfdCBvZmZzZXQgPSAwKTsKQEAgLTMzMyw3ICszMzMsNyBAQCBpbmxpbmUgTmluZVBp
ZWNlSW1hZ2UgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Qm9yZGVyTWFzayhTdHlsZVJl
c29sdmVyJiBzdAogfQogCiB0ZW1wbGF0ZSA8Q1NTUHJvcGVydHlJRCBwcm9wZXJ0eT4KLWlubGlu
ZSBQYXNzUmVmUHRyPFN0eWxlSW1hZ2U+IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFN0
eWxlSW1hZ2UoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgQ1NTVmFsdWUmIHZhbHVlKQor
aW5saW5lIFJlZlB0cjxTdHlsZUltYWdlPiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRT
dHlsZUltYWdlKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVlJiB2YWx1ZSkK
IHsKICAgICByZXR1cm4gc3R5bGVSZXNvbHZlci5zdHlsZUltYWdlKHByb3BlcnR5LCB2YWx1ZSk7
CiB9CkBAIC00MTIsNyArNDEyLDcgQEAgaW5saW5lIEVUZXh0QWxpZ24gU3R5bGVCdWlsZGVyQ29u
dmVydGVyOjpjb252ZXJ0VGV4dEFsaWduKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmUKICAgICByZXR1
cm4gcGFyZW50U3R5bGUtPnRleHRBbGlnbigpOwogfQogCi1pbmxpbmUgUGFzc1JlZlB0cjxDbGlw
UGF0aE9wZXJhdGlvbj4gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Q2xpcFBhdGgoU3R5
bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIFJlZlB0
cjxDbGlwUGF0aE9wZXJhdGlvbj4gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Q2xpcFBh
dGgoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgQ1NTVmFsdWUmIHZhbHVlKQogewogICAg
IGlmIChpczxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpKSB7CiAgICAgICAgIGF1dG8mIHByaW1p
dGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKQEAgLTUwOSw3
ICs1MDksNyBAQCBpbmxpbmUgaW50IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydE1hcnF1
ZWVTcGVlZChTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmCiAgICAgcmV0dXJuIHNwZWVkOwogfQog
Ci1pbmxpbmUgUGFzc1JlZlB0cjxRdW90ZXNEYXRhPiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNv
bnZlcnRRdW90ZXMoU3R5bGVSZXNvbHZlciYsIENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBSZWZQ
dHI8UXVvdGVzRGF0YT4gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UXVvdGVzKFN0eWxl
UmVzb2x2ZXImLCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgaWYgKGlzPENTU1ByaW1pdGl2ZVZh
bHVlPih2YWx1ZSkpIHsKICAgICAgICAgQVNTRVJUKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVl
Pih2YWx1ZSkuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVlTm9uZSk7CkBAIC01NDYsNyArNTQ2LDcg
QEAgaW5saW5lIFRleHRVbmRlcmxpbmVQb3NpdGlvbiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNv
bnZlcnRUZXh0VW5kZXJsaW5lUG9zaXRpb24KICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dFVu
ZGVybGluZVBvc2l0aW9uPihjb21iaW5lZFBvc2l0aW9uKTsKIH0KIAotaW5saW5lIFBhc3NSZWZQ
dHI8U3R5bGVSZWZsZWN0aW9uPiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRSZWZsZWN0
aW9uKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVlJiB2YWx1ZSkKK2lubGlu
ZSBSZWZQdHI8U3R5bGVSZWZsZWN0aW9uPiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRS
ZWZsZWN0aW9uKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVlJiB2YWx1ZSkK
IHsKICAgICBpZiAoaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSkgewogICAgICAgICBBU1NF
UlQoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS5nZXRWYWx1ZUlEKCkgPT0gQ1NT
VmFsdWVOb25lKTsKQEAgLTY2Niw3ICs2NjYsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNJbWFn
ZVNoYXBlKGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKICAgICAgICAgfHwgaXM8Q1NTSW1hZ2VHZW5l
cmF0b3JWYWx1ZT4odmFsdWUpOwogfQogCi1pbmxpbmUgUGFzc1JlZlB0cjxTaGFwZVZhbHVlPiBT
dHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRTaGFwZVZhbHVlKFN0eWxlUmVzb2x2ZXImIHN0
eWxlUmVzb2x2ZXIsIENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBSZWZQdHI8U2hhcGVWYWx1ZT4g
U3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0U2hhcGVWYWx1ZShTdHlsZVJlc29sdmVyJiBz
dHlsZVJlc29sdmVyLCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgaWYgKGlzPENTU1ByaW1pdGl2
ZVZhbHVlPih2YWx1ZSkpIHsKICAgICAgICAgQVNTRVJUKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlPih2YWx1ZSkuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVlTm9uZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZVByb3BlcnRpZXMuY3BwCmluZGV4IDU4NzIzZTFlYTJiOWViNjZmOWQyNjYyMmMxMmMy
YzQ3OGVmNWUzMDUuLjM0YjNlMGE0MGU1ZGYxNTlhZWEyYWYzZmQ3ZjQwZWY1NzFhOWNlNGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuY3BwCkBAIC01NzksNyArNTc5LDcgQEAg
U3RyaW5nIFN0eWxlUHJvcGVydGllczo6Ym9yZGVyUHJvcGVydHlWYWx1ZShDb21tb25WYWx1ZU1v
ZGUgdmFsdWVNb2RlKSBjb25zdAogICAgIHJldHVybiByZXN1bHQuaXNFbXB0eSgpID8gU3RyaW5n
KCkgOiByZXN1bHQudG9TdHJpbmcoKTsKIH0KIAotUGFzc1JlZlB0cjxDU1NWYWx1ZT4gU3R5bGVQ
cm9wZXJ0aWVzOjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCkg
Y29uc3QKK1JlZlB0cjxDU1NWYWx1ZT4gU3R5bGVQcm9wZXJ0aWVzOjpnZXRQcm9wZXJ0eUNTU1Zh
bHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCkgY29uc3QKIHsKICAgICBpbnQgZm91bmRQcm9w
ZXJ0eUluZGV4ID0gZmluZFByb3BlcnR5SW5kZXgocHJvcGVydHlJRCk7CiAgICAgaWYgKGZvdW5k
UHJvcGVydHlJbmRleCA9PSAtMSkKQEAgLTY4NCw3ICs2ODQsNyBAQCBib29sIE11dGFibGVTdHls
ZVByb3BlcnRpZXM6OnNldFByb3BlcnR5KENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgY29uc3Qg
U3RyaW5nJgogICAgIHJldHVybiBDU1NQYXJzZXI6OnBhcnNlVmFsdWUodGhpcywgcHJvcGVydHlJ
RCwgdmFsdWUsIGltcG9ydGFudCwgY3NzUGFyc2VyTW9kZSgpLCBjb250ZXh0U3R5bGVTaGVldCkg
PT0gQ1NTUGFyc2VyOjpQYXJzZVJlc3VsdDo6Q2hhbmdlZDsKIH0KIAotdm9pZCBNdXRhYmxlU3R5
bGVQcm9wZXJ0aWVzOjpzZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIFBhc3NS
ZWZQdHI8Q1NTVmFsdWU+IHBycFZhbHVlLCBib29sIGltcG9ydGFudCkKK3ZvaWQgTXV0YWJsZVN0
eWxlUHJvcGVydGllczo6c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBSZWZQ
dHI8Q1NTVmFsdWU+IHBycFZhbHVlLCBib29sIGltcG9ydGFudCkKIHsKICAgICBTdHlsZVByb3Bl
cnR5U2hvcnRoYW5kIHNob3J0aGFuZCA9IHNob3J0aGFuZEZvclByb3BlcnR5KHByb3BlcnR5SUQp
OwogICAgIGlmICghc2hvcnRoYW5kLmxlbmd0aCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9w
ZXJ0aWVzLmgKaW5kZXggNmYzMDI0YzdkYzgyODIxZjNlZmZlMmUzZTUyODY0ODE4YjA1NGJjMS4u
YTY3NjY3MjlhY2RlZDEzZmM2MTA2ZjA0ODViYzFhNWM3Y2U3ZmU2NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZVByb3BlcnRpZXMuaApAQCAtODYsNyArODYsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBp
c0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIXByb3BlcnR5Q291bnQoKTsgfQogICAgIFByb3BlcnR5
UmVmZXJlbmNlIHByb3BlcnR5QXQodW5zaWduZWQpIGNvbnN0OwogCi0gICAgV0VCQ09SRV9FWFBP
UlQgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gZ2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eUlE
KSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8Q1NTVmFsdWU+IGdldFByb3BlcnR5
Q1NTVmFsdWUoQ1NTUHJvcGVydHlJRCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5n
IGdldFByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCkgY29uc3Q7CiAgICAgYm9vbCBwcm9wZXJ0
eUlzSW1wb3J0YW50KENTU1Byb3BlcnR5SUQpIGNvbnN0OwogICAgIFN0cmluZyBnZXRQcm9wZXJ0
eVNob3J0aGFuZChDU1NQcm9wZXJ0eUlEKSBjb25zdDsKQEAgLTE5OCw3ICsxOTgsNyBAQCBwdWJs
aWM6CiAKICAgICAvLyBUaGVzZSBleHBhbmQgc2hvcnRoYW5kIHByb3BlcnRpZXMgaW50byBtdWx0
aXBsZSBwcm9wZXJ0aWVzLgogICAgIGJvb2wgc2V0UHJvcGVydHkoQ1NTUHJvcGVydHlJRCwgY29u
c3QgU3RyaW5nJiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQgPSBmYWxzZSwgU3R5bGVTaGVldENvbnRl
bnRzKiBjb250ZXh0U3R5bGVTaGVldCA9IDApOwotICAgIHZvaWQgc2V0UHJvcGVydHkoQ1NTUHJv
cGVydHlJRCwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4sIGJvb2wgaW1wb3J0YW50ID0gZmFsc2UpOwor
ICAgIHZvaWQgc2V0UHJvcGVydHkoQ1NTUHJvcGVydHlJRCwgUmVmUHRyPENTU1ZhbHVlPiwgYm9v
bCBpbXBvcnRhbnQgPSBmYWxzZSk7CiAKICAgICAvLyBUaGVzZSBkbyBub3QuIEZJWE1FOiBUaGlz
IGlzIHRvbyBtZXNzeSwgd2UgY2FuIGRvIGJldHRlci4KICAgICBib29sIHNldFByb3BlcnR5KENT
U1Byb3BlcnR5SUQsIENTU1ZhbHVlSUQgaWRlbnRpZmllciwgYm9vbCBpbXBvcnRhbnQgPSBmYWxz
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXggMTM1NmI2ZjM5YWY1YzE0
YzMwM2FlZGI0YzA3ZTY0YzQ3MzM3NGJmZS4uNWI1YWNjNzliMmM2ZGQ0Y2I5YTE0NjJiMzdmZGZl
OWY5M2U1YzYyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcApAQCAtMzYyLDcg
KzM2Miw3IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6cG9wUGFyZW50RWxlbWVudChFbGVtZW50KiBw
YXJlbnQpCiB9CiAKIC8vIFRoaXMgaXMgYSBzaW1wbGlmaWVkIHN0eWxlIHNldHRpbmcgZnVuY3Rp
b24gZm9yIGtleWZyYW1lIHN0eWxlcwotdm9pZCBTdHlsZVJlc29sdmVyOjphZGRLZXlmcmFtZVN0
eWxlKFBhc3NSZWZQdHI8U3R5bGVSdWxlS2V5ZnJhbWVzPiBydWxlKQordm9pZCBTdHlsZVJlc29s
dmVyOjphZGRLZXlmcmFtZVN0eWxlKFJlZlB0cjxTdHlsZVJ1bGVLZXlmcmFtZXM+IHJ1bGUpCiB7
CiAgICAgQXRvbWljU3RyaW5nIHMocnVsZS0+bmFtZSgpKTsKICAgICBtX2tleWZyYW1lc1J1bGVN
YXAuc2V0KHMuaW1wbCgpLCBydWxlKTsKQEAgLTk1Myw3ICs5NTMsNyBAQCB2b2lkIFN0eWxlUmVz
b2x2ZXI6OmtleWZyYW1lU3R5bGVzRm9yQW5pbWF0aW9uKEVsZW1lbnQqIGUsIGNvbnN0IFJlbmRl
clN0eWxlKiBlbAogICAgIH0KIH0KIAotUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gU3R5bGVSZXNv
bHZlcjo6cHNldWRvU3R5bGVGb3JFbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFBzZXVk
b1N0eWxlUmVxdWVzdCYgcHNldWRvU3R5bGVSZXF1ZXN0LCBSZW5kZXJTdHlsZSogcGFyZW50U3R5
bGUpCitSZWZQdHI8UmVuZGVyU3R5bGU+IFN0eWxlUmVzb2x2ZXI6OnBzZXVkb1N0eWxlRm9yRWxl
bWVudChFbGVtZW50KiBlbGVtZW50LCBjb25zdCBQc2V1ZG9TdHlsZVJlcXVlc3QmIHBzZXVkb1N0
eWxlUmVxdWVzdCwgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlKQogewogICAgIEFTU0VSVChwYXJl
bnRTdHlsZSk7CiAgICAgaWYgKCFlbGVtZW50KQpAQCAtMTkwMyw3ICsxOTAzLDcgQEAgdm9pZCBT
dHlsZVJlc29sdmVyOjphcHBseVByb3BlcnR5KENTU1Byb3BlcnR5SUQgaWQsIENTU1ZhbHVlKiB2
YWx1ZSkKICAgICBTdHlsZUJ1aWxkZXI6OmFwcGx5UHJvcGVydHkoaWQsICp0aGlzLCAqdmFsdWUs
IGlzSW5pdGlhbCwgaXNJbmhlcml0KTsKIH0KIAotUGFzc1JlZlB0cjxTdHlsZUltYWdlPiBTdHls
ZVJlc29sdmVyOjpzdHlsZUltYWdlKENTU1Byb3BlcnR5SUQgcHJvcGVydHksIENTU1ZhbHVlJiB2
YWx1ZSkKK1JlZlB0cjxTdHlsZUltYWdlPiBTdHlsZVJlc29sdmVyOjpzdHlsZUltYWdlKENTU1By
b3BlcnR5SUQgcHJvcGVydHksIENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBpZiAoaXM8Q1NTSW1h
Z2VWYWx1ZT4odmFsdWUpKQogICAgICAgICByZXR1cm4gY2FjaGVkT3JQZW5kaW5nRnJvbVZhbHVl
KHByb3BlcnR5LCBkb3duY2FzdDxDU1NJbWFnZVZhbHVlPih2YWx1ZSkpOwpAQCAtMTkyNSwxNSAr
MTkyNSwxNSBAQCBQYXNzUmVmUHRyPFN0eWxlSW1hZ2U+IFN0eWxlUmVzb2x2ZXI6OnN0eWxlSW1h
Z2UoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwgQ1NTVmFsdQogICAgIHJldHVybiBudWxscHRyOwog
fQogCi1QYXNzUmVmUHRyPFN0eWxlSW1hZ2U+IFN0eWxlUmVzb2x2ZXI6OmNhY2hlZE9yUGVuZGlu
Z0Zyb21WYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBDU1NJbWFnZVZhbHVlJiB2YWx1ZSkK
K1JlZlB0cjxTdHlsZUltYWdlPiBTdHlsZVJlc29sdmVyOjpjYWNoZWRPclBlbmRpbmdGcm9tVmFs
dWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwgQ1NTSW1hZ2VWYWx1ZSYgdmFsdWUpCiB7CiAgICAg
UmVmUHRyPFN0eWxlSW1hZ2U+IGltYWdlID0gdmFsdWUuY2FjaGVkT3JQZW5kaW5nSW1hZ2UoKTsK
ICAgICBpZiAoaW1hZ2UgJiYgaW1hZ2UtPmlzUGVuZGluZ0ltYWdlKCkpCiAgICAgICAgIG1fc3Rh
dGUucGVuZGluZ0ltYWdlUHJvcGVydGllcygpLnNldChwcm9wZXJ0eSwgJnZhbHVlKTsKLSAgICBy
ZXR1cm4gaW1hZ2UucmVsZWFzZSgpOworICAgIHJldHVybiBpbWFnZTsKIH0KIAotUGFzc1JlZlB0
cjxTdHlsZUltYWdlPiBTdHlsZVJlc29sdmVyOjpnZW5lcmF0ZWRPclBlbmRpbmdGcm9tVmFsdWUo
Q1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwgQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZSYgdmFsdWUpCitS
ZWY8U3R5bGVJbWFnZT4gU3R5bGVSZXNvbHZlcjo6Z2VuZXJhdGVkT3JQZW5kaW5nRnJvbVZhbHVl
KENTU1Byb3BlcnR5SUQgcHJvcGVydHksIENTU0ltYWdlR2VuZXJhdG9yVmFsdWUmIHZhbHVlKQog
ewogICAgIGlmIChpczxDU1NGaWx0ZXJJbWFnZVZhbHVlPih2YWx1ZSkpIHsKICAgICAgICAgLy8g
RmlsdGVySW1hZ2UgbmVlZHMgdG8gY2FsY3VsYXRlIEZpbHRlck9wZXJhdGlvbnMuCkBAIC0xOTQ4
LDcgKzE5NDgsNyBAQCBQYXNzUmVmUHRyPFN0eWxlSW1hZ2U+IFN0eWxlUmVzb2x2ZXI6OmdlbmVy
YXRlZE9yUGVuZGluZ0Zyb21WYWx1ZShDU1NQcm9wZXJ0eUlECiB9CiAKICNpZiBFTkFCTEUoQ1NT
X0lNQUdFX1NFVCkKLVBhc3NSZWZQdHI8U3R5bGVJbWFnZT4gU3R5bGVSZXNvbHZlcjo6c2V0T3JQ
ZW5kaW5nRnJvbVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHksIENTU0ltYWdlU2V0VmFsdWUm
IHZhbHVlKQorUmVmUHRyPFN0eWxlSW1hZ2U+IFN0eWxlUmVzb2x2ZXI6OnNldE9yUGVuZGluZ0Zy
b21WYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBDU1NJbWFnZVNldFZhbHVlJiB2YWx1ZSkK
IHsKICAgICBSZWZQdHI8U3R5bGVJbWFnZT4gaW1hZ2UgPSB2YWx1ZS5jYWNoZWRPclBlbmRpbmdJ
bWFnZVNldChkb2N1bWVudCgpKTsKICAgICBpZiAoaW1hZ2UgJiYgaW1hZ2UtPmlzUGVuZGluZ0lt
YWdlKCkpCkBAIC0xOTU3LDcgKzE5NTcsNyBAQCBQYXNzUmVmUHRyPFN0eWxlSW1hZ2U+IFN0eWxl
UmVzb2x2ZXI6OnNldE9yUGVuZGluZ0Zyb21WYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcgogfQog
I2VuZGlmCiAKLVBhc3NSZWZQdHI8U3R5bGVJbWFnZT4gU3R5bGVSZXNvbHZlcjo6Y3Vyc29yT3JQ
ZW5kaW5nRnJvbVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHksIENTU0N1cnNvckltYWdlVmFs
dWUmIHZhbHVlKQorUmVmUHRyPFN0eWxlSW1hZ2U+IFN0eWxlUmVzb2x2ZXI6OmN1cnNvck9yUGVu
ZGluZ0Zyb21WYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBDU1NDdXJzb3JJbWFnZVZhbHVl
JiB2YWx1ZSkKIHsKICAgICBSZWZQdHI8U3R5bGVJbWFnZT4gaW1hZ2UgPSB2YWx1ZS5jYWNoZWRP
clBlbmRpbmdJbWFnZShkb2N1bWVudCgpKTsKICAgICBpZiAoaW1hZ2UgJiYgaW1hZ2UtPmlzUGVu
ZGluZ0ltYWdlKCkpCkBAIC0yMzIzLDcgKzIzMjMsNyBAQCBib29sIFN0eWxlUmVzb2x2ZXI6OmNy
ZWF0ZUZpbHRlck9wZXJhdGlvbnMoQ1NTVmFsdWUmIGluVmFsdWUsIEZpbHRlck9wZXJhdGlvbnMm
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVBhc3NSZWZQdHI8U3R5bGVJbWFnZT4gU3R5bGVSZXNv
bHZlcjo6bG9hZFBlbmRpbmdJbWFnZShjb25zdCBTdHlsZVBlbmRpbmdJbWFnZSYgcGVuZGluZ0lt
YWdlLCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMpCitSZWZQdHI8U3R5bGVJ
bWFnZT4gU3R5bGVSZXNvbHZlcjo6bG9hZFBlbmRpbmdJbWFnZShjb25zdCBTdHlsZVBlbmRpbmdJ
bWFnZSYgcGVuZGluZ0ltYWdlLCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMp
CiB7CiAgICAgaWYgKGF1dG8gaW1hZ2VWYWx1ZSA9IHBlbmRpbmdJbWFnZS5jc3NJbWFnZVZhbHVl
KCkpCiAgICAgICAgIHJldHVybiBpbWFnZVZhbHVlLT5jYWNoZWRJbWFnZShtX3N0YXRlLmRvY3Vt
ZW50KCkuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKSwgb3B0aW9ucyk7CkBAIC0yMzQ0LDcgKzIzNDQs
NyBAQCBQYXNzUmVmUHRyPFN0eWxlSW1hZ2U+IFN0eWxlUmVzb2x2ZXI6OmxvYWRQZW5kaW5nSW1h
Z2UoY29uc3QgU3R5bGVQZW5kaW5nSW1hZ2UmCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVBh
c3NSZWZQdHI8U3R5bGVJbWFnZT4gU3R5bGVSZXNvbHZlcjo6bG9hZFBlbmRpbmdJbWFnZShjb25z
dCBTdHlsZVBlbmRpbmdJbWFnZSYgcGVuZGluZ0ltYWdlKQorUmVmUHRyPFN0eWxlSW1hZ2U+IFN0
eWxlUmVzb2x2ZXI6OmxvYWRQZW5kaW5nSW1hZ2UoY29uc3QgU3R5bGVQZW5kaW5nSW1hZ2UmIHBl
bmRpbmdJbWFnZSkKIHsKICAgICBSZXNvdXJjZUxvYWRlck9wdGlvbnMgb3B0aW9ucyA9IENhY2hl
ZFJlc291cmNlTG9hZGVyOjpkZWZhdWx0Q2FjaGVkUmVzb3VyY2VPcHRpb25zKCk7CiAgICAgb3B0
aW9ucy5zZXRDb250ZW50U2VjdXJpdHlQb2xpY3lJbXBvc2l0aW9uKG1fc3RhdGUuZWxlbWVudCgp
ICYmIG1fc3RhdGUuZWxlbWVudCgpLT5pc0luVXNlckFnZW50U2hhZG93VHJlZSgpID8gQ29udGVu
dFNlY3VyaXR5UG9saWN5SW1wb3NpdGlvbjo6U2tpcFBvbGljeUNoZWNrIDogQ29udGVudFNlY3Vy
aXR5UG9saWN5SW1wb3NpdGlvbjo6RG9Qb2xpY3lDaGVjayk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVz
b2x2ZXIuaAppbmRleCBhZGQ1NDI1ZDdmZGI1OGQxMTllOTg0NjJiOGUwNjM3YTlmZGNlZjkxLi5k
ZDRiODRmMGIzMmY3OTc4NTBiZjE0ZGQwOTk5ZjFlNzZmODU1Mzk1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVJlc29sdmVyLmgKQEAgLTE1MCw3ICsxNTAsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGtl
eWZyYW1lU3R5bGVzRm9yQW5pbWF0aW9uKEVsZW1lbnQqLCBjb25zdCBSZW5kZXJTdHlsZSosIEtl
eWZyYW1lTGlzdCYpOwogCi0gICAgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gcHNldWRvU3R5bGVG
b3JFbGVtZW50KEVsZW1lbnQqLCBjb25zdCBQc2V1ZG9TdHlsZVJlcXVlc3QmLCBSZW5kZXJTdHls
ZSogcGFyZW50U3R5bGUpOworICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gcHNldWRvU3R5bGVGb3JF
bGVtZW50KEVsZW1lbnQqLCBjb25zdCBQc2V1ZG9TdHlsZVJlcXVlc3QmLCBSZW5kZXJTdHlsZSog
cGFyZW50U3R5bGUpOwogCiAgICAgUmVmPFJlbmRlclN0eWxlPiBzdHlsZUZvclBhZ2UoaW50IHBh
Z2VJbmRleCk7CiAgICAgUmVmPFJlbmRlclN0eWxlPiBkZWZhdWx0U3R5bGVGb3JFbGVtZW50KCk7
CkBAIC0yMjQsNyArMjI0LDcgQEAgcHVibGljOgogICAgIGJvb2wgaGFzVmlld3BvcnREZXBlbmRl
bnRNZWRpYVF1ZXJpZXMoKSBjb25zdCB7IHJldHVybiAhbV92aWV3cG9ydERlcGVuZGVudE1lZGlh
UXVlcnlSZXN1bHRzLmlzRW1wdHkoKTsgfQogICAgIGJvb2wgaGFzTWVkaWFRdWVyaWVzQWZmZWN0
ZWRCeVZpZXdwb3J0Q2hhbmdlKCkgY29uc3Q7CiAKLSAgICB2b2lkIGFkZEtleWZyYW1lU3R5bGUo
UGFzc1JlZlB0cjxTdHlsZVJ1bGVLZXlmcmFtZXM+KTsKKyAgICB2b2lkIGFkZEtleWZyYW1lU3R5
bGUoUmVmUHRyPFN0eWxlUnVsZUtleWZyYW1lcz4pOwogCiAgICAgYm9vbCBjaGVja1JlZ2lvblN0
eWxlKEVsZW1lbnQqIHJlZ2lvbkVsZW1lbnQpOwogCkBAIC00NDIsMTMgKzQ0MiwxMyBAQCBwdWJs
aWM6CiAKICAgICBzdGF0aWMgUmVuZGVyU3R5bGUqIHN0eWxlTm90WWV0QXZhaWxhYmxlKCkgeyBy
ZXR1cm4gc19zdHlsZU5vdFlldEF2YWlsYWJsZTsgfQogCi0gICAgUGFzc1JlZlB0cjxTdHlsZUlt
YWdlPiBzdHlsZUltYWdlKENTU1Byb3BlcnR5SUQsIENTU1ZhbHVlJik7Ci0gICAgUGFzc1JlZlB0
cjxTdHlsZUltYWdlPiBjYWNoZWRPclBlbmRpbmdGcm9tVmFsdWUoQ1NTUHJvcGVydHlJRCwgQ1NT
SW1hZ2VWYWx1ZSYpOwotICAgIFBhc3NSZWZQdHI8U3R5bGVJbWFnZT4gZ2VuZXJhdGVkT3JQZW5k
aW5nRnJvbVZhbHVlKENTU1Byb3BlcnR5SUQsIENTU0ltYWdlR2VuZXJhdG9yVmFsdWUmKTsKKyAg
ICBSZWZQdHI8U3R5bGVJbWFnZT4gc3R5bGVJbWFnZShDU1NQcm9wZXJ0eUlELCBDU1NWYWx1ZSYp
OworICAgIFJlZlB0cjxTdHlsZUltYWdlPiBjYWNoZWRPclBlbmRpbmdGcm9tVmFsdWUoQ1NTUHJv
cGVydHlJRCwgQ1NTSW1hZ2VWYWx1ZSYpOworICAgIFJlZjxTdHlsZUltYWdlPiBnZW5lcmF0ZWRP
clBlbmRpbmdGcm9tVmFsdWUoQ1NTUHJvcGVydHlJRCwgQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZSYp
OwogI2lmIEVOQUJMRShDU1NfSU1BR0VfU0VUKQotICAgIFBhc3NSZWZQdHI8U3R5bGVJbWFnZT4g
c2V0T3JQZW5kaW5nRnJvbVZhbHVlKENTU1Byb3BlcnR5SUQsIENTU0ltYWdlU2V0VmFsdWUmKTsK
KyAgICBSZWZQdHI8U3R5bGVJbWFnZT4gc2V0T3JQZW5kaW5nRnJvbVZhbHVlKENTU1Byb3BlcnR5
SUQsIENTU0ltYWdlU2V0VmFsdWUmKTsKICNlbmRpZgotICAgIFBhc3NSZWZQdHI8U3R5bGVJbWFn
ZT4gY3Vyc29yT3JQZW5kaW5nRnJvbVZhbHVlKENTU1Byb3BlcnR5SUQsIENTU0N1cnNvckltYWdl
VmFsdWUmKTsKKyAgICBSZWZQdHI8U3R5bGVJbWFnZT4gY3Vyc29yT3JQZW5kaW5nRnJvbVZhbHVl
KENTU1Byb3BlcnR5SUQsIENTU0N1cnNvckltYWdlVmFsdWUmKTsKIAogICAgIGJvb2wgYXBwbHlQ
cm9wZXJ0eVRvUmVndWxhclN0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5hcHBseVByb3Bl
cnR5VG9SZWd1bGFyU3R5bGUoKTsgfQogICAgIGJvb2wgYXBwbHlQcm9wZXJ0eVRvVmlzaXRlZExp
bmtTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuYXBwbHlQcm9wZXJ0eVRvVmlzaXRlZExp
bmtTdHlsZSgpOyB9CkBAIC00NzQsOCArNDc0LDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgYXBw
bHlTVkdQcm9wZXJ0eShDU1NQcm9wZXJ0eUlELCBDU1NWYWx1ZSopOwogCi0gICAgUGFzc1JlZlB0
cjxTdHlsZUltYWdlPiBsb2FkUGVuZGluZ0ltYWdlKGNvbnN0IFN0eWxlUGVuZGluZ0ltYWdlJiwg
Y29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJik7Ci0gICAgUGFzc1JlZlB0cjxTdHlsZUltYWdl
PiBsb2FkUGVuZGluZ0ltYWdlKGNvbnN0IFN0eWxlUGVuZGluZ0ltYWdlJik7CisgICAgUmVmUHRy
PFN0eWxlSW1hZ2U+IGxvYWRQZW5kaW5nSW1hZ2UoY29uc3QgU3R5bGVQZW5kaW5nSW1hZ2UmLCBj
b25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmKTsKKyAgICBSZWZQdHI8U3R5bGVJbWFnZT4gbG9h
ZFBlbmRpbmdJbWFnZShjb25zdCBTdHlsZVBlbmRpbmdJbWFnZSYpOwogICAgIHZvaWQgbG9hZFBl
bmRpbmdJbWFnZXMoKTsKICNpZiBFTkFCTEUoQ1NTX1NIQVBFUykKICAgICB2b2lkIGxvYWRQZW5k
aW5nU2hhcGVJbWFnZShTaGFwZVZhbHVlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvU3R5bGVSdWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuY3BwCmluZGV4
IGE1ZjQ5YzBmYmZlZjM2ZjgxNDhiY2NjNjE1N2Y1YTlmMDYzNTVjM2UuLjQ2YzZlMmY5OGQyYzFh
Yzg5ZmEzNWVmN2U1Njc5OGZkMzMyMzNlYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZVJ1bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuY3BwCkBA
IC00NSwxMiArNDUsMTIgQEAgc3RydWN0IFNhbWVTaXplQXNTdHlsZVJ1bGVCYXNlIDogcHVibGlj
IFdURjo6UmVmQ291bnRlZEJhc2UgewogCiBDT01QSUxFX0FTU0VSVChzaXplb2YoU3R5bGVSdWxl
QmFzZSkgPT0gc2l6ZW9mKFNhbWVTaXplQXNTdHlsZVJ1bGVCYXNlKSwgU3R5bGVSdWxlQmFzZV9z
aG91bGRfc3RheV9zbWFsbCk7CiAKLVBhc3NSZWZQdHI8Q1NTUnVsZT4gU3R5bGVSdWxlQmFzZTo6
Y3JlYXRlQ1NTT01XcmFwcGVyKENTU1N0eWxlU2hlZXQqIHBhcmVudFNoZWV0KSBjb25zdAorUmVm
UHRyPENTU1J1bGU+IFN0eWxlUnVsZUJhc2U6OmNyZWF0ZUNTU09NV3JhcHBlcihDU1NTdHlsZVNo
ZWV0KiBwYXJlbnRTaGVldCkgY29uc3QKIHsKICAgICByZXR1cm4gY3JlYXRlQ1NTT01XcmFwcGVy
KHBhcmVudFNoZWV0LCAwKTsKIH0KIAotUGFzc1JlZlB0cjxDU1NSdWxlPiBTdHlsZVJ1bGVCYXNl
OjpjcmVhdGVDU1NPTVdyYXBwZXIoQ1NTUnVsZSogcGFyZW50UnVsZSkgY29uc3QKK1JlZlB0cjxD
U1NSdWxlPiBTdHlsZVJ1bGVCYXNlOjpjcmVhdGVDU1NPTVdyYXBwZXIoQ1NTUnVsZSogcGFyZW50
UnVsZSkgY29uc3QKIHsgCiAgICAgcmV0dXJuIGNyZWF0ZUNTU09NV3JhcHBlcigwLCBwYXJlbnRS
dWxlKTsKIH0KQEAgLTE0MCw3ICsxNDAsNyBAQCBSZWY8U3R5bGVSdWxlQmFzZT4gU3R5bGVSdWxl
QmFzZTo6Y29weSgpIGNvbnN0CiAgICAgcmV0dXJuIFJlZjxTdHlsZVJ1bGVCYXNlPigqc3RhdGlj
X2Nhc3Q8U3R5bGVSdWxlQmFzZSo+KG51bGxwdHIpKTsKIH0KIAotUGFzc1JlZlB0cjxDU1NSdWxl
PiBTdHlsZVJ1bGVCYXNlOjpjcmVhdGVDU1NPTVdyYXBwZXIoQ1NTU3R5bGVTaGVldCogcGFyZW50
U2hlZXQsIENTU1J1bGUqIHBhcmVudFJ1bGUpIGNvbnN0CitSZWZQdHI8Q1NTUnVsZT4gU3R5bGVS
dWxlQmFzZTo6Y3JlYXRlQ1NTT01XcmFwcGVyKENTU1N0eWxlU2hlZXQqIHBhcmVudFNoZWV0LCBD
U1NSdWxlKiBwYXJlbnRSdWxlKSBjb25zdAogewogICAgIFJlZlB0cjxDU1NSdWxlPiBydWxlOwog
ICAgIFN0eWxlUnVsZUJhc2UmIHNlbGYgPSBjb25zdF9jYXN0PFN0eWxlUnVsZUJhc2UmPigqdGhp
cyk7CkBAIC0xODcsNyArMTg3LDcgQEAgUGFzc1JlZlB0cjxDU1NSdWxlPiBTdHlsZVJ1bGVCYXNl
OjpjcmVhdGVDU1NPTVdyYXBwZXIoQ1NTU3R5bGVTaGVldCogcGFyZW50U2hlZXQKICAgICB9CiAg
ICAgaWYgKHBhcmVudFJ1bGUpCiAgICAgICAgIHJ1bGUtPnNldFBhcmVudFJ1bGUocGFyZW50UnVs
ZSk7Ci0gICAgcmV0dXJuIHJ1bGUucmVsZWFzZSgpOworICAgIHJldHVybiBydWxlOwogfQogCiB1
bnNpZ25lZCBTdHlsZVJ1bGU6OmF2ZXJhZ2VTaXplSW5CeXRlcygpCkBAIC0zMjksNyArMzI5LDcg
QEAgdm9pZCBTdHlsZVJ1bGVHcm91cDo6d3JhcHBlclJlbW92ZVJ1bGUodW5zaWduZWQgaW5kZXgp
CiB9CiAKIAotU3R5bGVSdWxlTWVkaWE6OlN0eWxlUnVsZU1lZGlhKFBhc3NSZWZQdHI8TWVkaWFR
dWVyeVNldD4gbWVkaWEsIFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxlQmFzZT4+JiBhZG9wdFJ1bGVz
KQorU3R5bGVSdWxlTWVkaWE6OlN0eWxlUnVsZU1lZGlhKFJlZlB0cjxNZWRpYVF1ZXJ5U2V0PiBt
ZWRpYSwgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNlPj4mIGFkb3B0UnVsZXMpCiAgICAgOiBT
dHlsZVJ1bGVHcm91cChNZWRpYSwgYWRvcHRSdWxlcykKICAgICAsIG1fbWVkaWFRdWVyaWVzKG1l
ZGlhKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5oIGIvU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5oCmluZGV4IGU5YTYzNjZlNGU0NWU5NTdmMmYxNDZm
NjU0OTcyZTZmNzBiZTc1ZjkuLmRhNmUzYmZhYjBmZjE5MmNjYjlkZTYzMWQyM2VlOTkzYTYxOGM0
NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlLmgKQEAgLTgyLDggKzgyLDggQEAgcHVibGljOgogICAg
IH0KIAogICAgIC8vIEZJWE1FOiBUaGVyZSBzaG91bGRuJ3QgYmUgYW55IG5lZWQgZm9yIHRoZSBu
dWxsIHBhcmVudCB2ZXJzaW9uLgotICAgIFBhc3NSZWZQdHI8Q1NTUnVsZT4gY3JlYXRlQ1NTT01X
cmFwcGVyKENTU1N0eWxlU2hlZXQqIHBhcmVudFNoZWV0ID0gMCkgY29uc3Q7Ci0gICAgUGFzc1Jl
ZlB0cjxDU1NSdWxlPiBjcmVhdGVDU1NPTVdyYXBwZXIoQ1NTUnVsZSogcGFyZW50UnVsZSkgY29u
c3Q7CisgICAgUmVmUHRyPENTU1J1bGU+IGNyZWF0ZUNTU09NV3JhcHBlcihDU1NTdHlsZVNoZWV0
KiBwYXJlbnRTaGVldCA9IDApIGNvbnN0OworICAgIFJlZlB0cjxDU1NSdWxlPiBjcmVhdGVDU1NP
TVdyYXBwZXIoQ1NTUnVsZSogcGFyZW50UnVsZSkgY29uc3Q7CiAKIHByb3RlY3RlZDoKICAgICBT
dHlsZVJ1bGVCYXNlKFR5cGUgdHlwZSwgc2lnbmVkIHNvdXJjZUxpbmUgPSAwKSA6IG1fdHlwZSh0
eXBlKSwgbV9zb3VyY2VMaW5lKHNvdXJjZUxpbmUpIHsgfQpAQCAtOTQsNyArOTQsNyBAQCBwcm90
ZWN0ZWQ6CiBwcml2YXRlOgogICAgIHZvaWQgZGVzdHJveSgpOwogICAgIAotICAgIFBhc3NSZWZQ
dHI8Q1NTUnVsZT4gY3JlYXRlQ1NTT01XcmFwcGVyKENTU1N0eWxlU2hlZXQqIHBhcmVudFNoZWV0
LCBDU1NSdWxlKiBwYXJlbnRSdWxlKSBjb25zdDsKKyAgICBSZWZQdHI8Q1NTUnVsZT4gY3JlYXRl
Q1NTT01XcmFwcGVyKENTU1N0eWxlU2hlZXQqIHBhcmVudFNoZWV0LCBDU1NSdWxlKiBwYXJlbnRS
dWxlKSBjb25zdDsKIAogICAgIHVuc2lnbmVkIG1fdHlwZSA6IDU7CiAgICAgc2lnbmVkIG1fc291
cmNlTGluZSA6IDI3OwpAQCAtMTkzLDcgKzE5Myw3IEBAIHByaXZhdGU6CiAKIGNsYXNzIFN0eWxl
UnVsZU1lZGlhIDogcHVibGljIFN0eWxlUnVsZUdyb3VwIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmPFN0eWxlUnVsZU1lZGlhPiBjcmVhdGUoUGFzc1JlZlB0cjxNZWRpYVF1ZXJ5U2V0PiBtZWRp
YSwgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNlPj4mIGFkb3B0UnVsZXMpCisgICAgc3RhdGlj
IFJlZjxTdHlsZVJ1bGVNZWRpYT4gY3JlYXRlKFJlZlB0cjxNZWRpYVF1ZXJ5U2V0PiBtZWRpYSwg
VmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNlPj4mIGFkb3B0UnVsZXMpCiAgICAgewogICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZVJ1bGVNZWRpYShtZWRpYSwgYWRvcHRSdWxlcykp
OwogICAgIH0KQEAgLTIwMyw3ICsyMDMsNyBAQCBwdWJsaWM6CiAgICAgUmVmPFN0eWxlUnVsZU1l
ZGlhPiBjb3B5KCkgY29uc3QgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZVJ1bGVNZWRpYSgq
dGhpcykpOyB9CiAKIHByaXZhdGU6Ci0gICAgU3R5bGVSdWxlTWVkaWEoUGFzc1JlZlB0cjxNZWRp
YVF1ZXJ5U2V0PiwgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNlPj4mIGFkb3B0UnVsZXMpOwor
ICAgIFN0eWxlUnVsZU1lZGlhKFJlZlB0cjxNZWRpYVF1ZXJ5U2V0PiwgVmVjdG9yPFJlZlB0cjxT
dHlsZVJ1bGVCYXNlPj4mIGFkb3B0UnVsZXMpOwogICAgIFN0eWxlUnVsZU1lZGlhKGNvbnN0IFN0
eWxlUnVsZU1lZGlhJik7CiAKICAgICBSZWZQdHI8TWVkaWFRdWVyeVNldD4gbV9tZWRpYVF1ZXJp
ZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlSW1wb3J0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGVJbXBvcnQuY3BwCmluZGV4IGY1Njc5NTYwMTgx
ZjllZmFmZTVhOWYxMzJhMWIwOTE0NDBmYzUwMTMuLmM2MjIxZjdjMjIzMTQ2MjQ3NGY1MTUwZDdk
MmIzZTAwN2Y1YmJjY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGVJ
bXBvcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGVJbXBvcnQuY3BwCkBA
IC0zNCwxMiArMzQsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8U3R5bGVSdWxl
SW1wb3J0PiBTdHlsZVJ1bGVJbXBvcnQ6OmNyZWF0ZShjb25zdCBTdHJpbmcmIGhyZWYsIFBhc3NS
ZWZQdHI8TWVkaWFRdWVyeVNldD4gbWVkaWEpCitSZWY8U3R5bGVSdWxlSW1wb3J0PiBTdHlsZVJ1
bGVJbXBvcnQ6OmNyZWF0ZShjb25zdCBTdHJpbmcmIGhyZWYsIFJlZlB0cjxNZWRpYVF1ZXJ5U2V0
PiBtZWRpYSkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZVJ1bGVJbXBvcnQoaHJl
ZiwgbWVkaWEpKTsKIH0KIAotU3R5bGVSdWxlSW1wb3J0OjpTdHlsZVJ1bGVJbXBvcnQoY29uc3Qg
U3RyaW5nJiBocmVmLCBQYXNzUmVmUHRyPE1lZGlhUXVlcnlTZXQ+IG1lZGlhKQorU3R5bGVSdWxl
SW1wb3J0OjpTdHlsZVJ1bGVJbXBvcnQoY29uc3QgU3RyaW5nJiBocmVmLCBSZWZQdHI8TWVkaWFR
dWVyeVNldD4gbWVkaWEpCiAgICAgOiBTdHlsZVJ1bGVCYXNlKEltcG9ydCwgMCkKICAgICAsIG1f
cGFyZW50U3R5bGVTaGVldCgwKQogICAgICwgbV9zdHlsZVNoZWV0Q2xpZW50KHRoaXMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlSW1wb3J0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVSdWxlSW1wb3J0LmgKaW5kZXggYmEwYjJhNzMxZTlmZTVhNTU1ZmE2Mzcx
YTQ3MTY0YTcyMDdmMjY1Ni4uNTFhOTEwNzk5MWM3Mjk1M2I4NDAxZTkxMDNlOTdhYjkwZTRkMTRi
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZUltcG9ydC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGVJbXBvcnQuaApAQCAtMzYsNyArMzYsNyBAQCBj
bGFzcyBTdHlsZVNoZWV0Q29udGVudHM7CiBjbGFzcyBTdHlsZVJ1bGVJbXBvcnQgOiBwdWJsaWMg
U3R5bGVSdWxlQmFzZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFJlZjxTdHlsZVJ1bGVJbXBvcnQ+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGhyZWYs
IFBhc3NSZWZQdHI8TWVkaWFRdWVyeVNldD4pOworICAgIHN0YXRpYyBSZWY8U3R5bGVSdWxlSW1w
b3J0PiBjcmVhdGUoY29uc3QgU3RyaW5nJiBocmVmLCBSZWZQdHI8TWVkaWFRdWVyeVNldD4pOwog
CiAgICAgflN0eWxlUnVsZUltcG9ydCgpOwogICAgIApAQCAtNzAsNyArNzAsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgc2V0Q1NTU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIGhyZWYsIGNvbnN0IFVS
TCYgYmFzZVVSTCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0LCBjb25zdCBDYWNoZWRDU1NTdHlsZVNo
ZWV0Kik7CiAgICAgZnJpZW5kIGNsYXNzIEltcG9ydGVkU3R5bGVTaGVldENsaWVudDsKIAotICAg
IFN0eWxlUnVsZUltcG9ydChjb25zdCBTdHJpbmcmIGhyZWYsIFBhc3NSZWZQdHI8TWVkaWFRdWVy
eVNldD4pOworICAgIFN0eWxlUnVsZUltcG9ydChjb25zdCBTdHJpbmcmIGhyZWYsIFJlZlB0cjxN
ZWRpYVF1ZXJ5U2V0Pik7CiAKICAgICBTdHlsZVNoZWV0Q29udGVudHMqIG1fcGFyZW50U3R5bGVT
aGVldDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRDb250ZW50
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldENvbnRlbnRzLmNwcAppbmRleCA2
MGM1ZDM5NjZlY2Y3ZGEyM2I0NzUzZWU1YjMwNTc0MTVkMzllY2FlLi45NmM1NGY5OWY5ZjgyMmMy
ZTEzM2VhMDU0NDhlOTQwMWZiYzYwMDVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVTaGVldENvbnRlbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVl
dENvbnRlbnRzLmNwcApAQCAtMTI4LDcgKzEyOCw3IEBAIGJvb2wgU3R5bGVTaGVldENvbnRlbnRz
Ojppc0NhY2hlYWJsZSgpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgU3R5bGVT
aGVldENvbnRlbnRzOjpwYXJzZXJBcHBlbmRSdWxlKFBhc3NSZWZQdHI8U3R5bGVSdWxlQmFzZT4g
cnVsZSkKK3ZvaWQgU3R5bGVTaGVldENvbnRlbnRzOjpwYXJzZXJBcHBlbmRSdWxlKFJlZlB0cjxT
dHlsZVJ1bGVCYXNlPiBydWxlKQogewogICAgIEFTU0VSVCghcnVsZS0+aXNDaGFyc2V0UnVsZSgp
KTsKICAgICBpZiAoaXM8U3R5bGVSdWxlSW1wb3J0PigqcnVsZSkpIHsKQEAgLTIwNiw3ICsyMDYs
NyBAQCB2b2lkIFN0eWxlU2hlZXRDb250ZW50czo6cGFyc2VyU2V0RW5jb2RpbmdGcm9tQ2hhcnNl
dFJ1bGUoY29uc3QgU3RyaW5nJiBlbmNvZGluZwogICAgIG1fZW5jb2RpbmdGcm9tQ2hhcnNldFJ1
bGUgPSBlbmNvZGluZzsgCiB9CiAKLWJvb2wgU3R5bGVTaGVldENvbnRlbnRzOjp3cmFwcGVySW5z
ZXJ0UnVsZShQYXNzUmVmUHRyPFN0eWxlUnVsZUJhc2U+IHJ1bGUsIHVuc2lnbmVkIGluZGV4KQor
Ym9vbCBTdHlsZVNoZWV0Q29udGVudHM6OndyYXBwZXJJbnNlcnRSdWxlKFJlZlB0cjxTdHlsZVJ1
bGVCYXNlPiBydWxlLCB1bnNpZ25lZCBpbmRleCkKIHsKICAgICBBU1NFUlQobV9pc011dGFibGUp
OwogICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGluZGV4IDw9IHJ1bGVDb3Vu
dCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0Q29udGVudHMu
aCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0Q29udGVudHMuaAppbmRleCBmMjU2NjIx
NzIxZWUyNDA3ZDliY2EzYmMxMDVlYTVhM2ZhNGZkOWFjLi4yM2M1ZDU3MDFlMTBiODcxZGZlMDhk
ZGRmZDkwM2Y3MGExY2Q5Nzg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVT
aGVldENvbnRlbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRDb250ZW50
cy5oCkBAIC05NCw3ICs5NCw3IEBAIHB1YmxpYzoKICAgICBib29sIGhhc1N5bnRhY3RpY2FsbHlW
YWxpZENTU0hlYWRlcigpIGNvbnN0IHsgcmV0dXJuIG1faGFzU3ludGFjdGljYWxseVZhbGlkQ1NT
SGVhZGVyOyB9CiAKICAgICB2b2lkIHBhcnNlckFkZE5hbWVzcGFjZShjb25zdCBBdG9taWNTdHJp
bmcmIHByZWZpeCwgY29uc3QgQXRvbWljU3RyaW5nJiB1cmkpOwotICAgIHZvaWQgcGFyc2VyQXBw
ZW5kUnVsZShQYXNzUmVmUHRyPFN0eWxlUnVsZUJhc2U+KTsKKyAgICB2b2lkIHBhcnNlckFwcGVu
ZFJ1bGUoUmVmUHRyPFN0eWxlUnVsZUJhc2U+KTsKICAgICB2b2lkIHBhcnNlclNldEVuY29kaW5n
RnJvbUNoYXJzZXRSdWxlKGNvbnN0IFN0cmluZyYgZW5jb2RpbmcpOyAKICAgICB2b2lkIHBhcnNl
clNldFVzZXNSZW1Vbml0cygpIHsgbV91c2VzUmVtVW5pdHMgPSB0cnVlOyB9CiAgICAgdm9pZCBw
YXJzZXJTZXRVc2VzU3R5bGVCYXNlZEVkaXRhYmlsaXR5KCkgeyBtX3VzZXNTdHlsZUJhc2VkRWRp
dGFiaWxpdHkgPSB0cnVlOyB9CkBAIC0xMjcsNyArMTI3LDcgQEAgcHVibGljOgogCiAgICAgdW5z
aWduZWQgZXN0aW1hdGVkU2l6ZUluQnl0ZXMoKSBjb25zdDsKICAgICAKLSAgICBib29sIHdyYXBw
ZXJJbnNlcnRSdWxlKFBhc3NSZWZQdHI8U3R5bGVSdWxlQmFzZT4sIHVuc2lnbmVkIGluZGV4KTsK
KyAgICBib29sIHdyYXBwZXJJbnNlcnRSdWxlKFJlZlB0cjxTdHlsZVJ1bGVCYXNlPiwgdW5zaWdu
ZWQgaW5kZXgpOwogICAgIHZvaWQgd3JhcHBlckRlbGV0ZVJ1bGUodW5zaWduZWQgaW5kZXgpOwog
CiAgICAgUmVmPFN0eWxlU2hlZXRDb250ZW50cz4gY29weSgpIGNvbnN0IHsgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgU3R5bGVTaGVldENvbnRlbnRzKCp0aGlzKSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0TGlzdC5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
U2hlZXRMaXN0LmgKaW5kZXggMTJhN2M0NTlkYmEzY2NhM2Y5MzhiOTFmNjQzOThhNTNiZTVlN2Yy
NS4uNGQ0YjU0MDc1MTg1ZTg5ZDdiNjUyMzRkYmRmNTJiNjc1MDhhOWVlMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlU2hlZXRMaXN0LmgKQEAgLTIzLDcgKzIzLDYgQEAKIAogI2luY2x1ZGUgPHd0Zi9G
b3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUGFz
c1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU0ZpbHRlclZhbHVlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NGaWx0ZXJWYWx1ZS5jcHAKaW5kZXggNWEx
NGJiOGIxMjMxYzA5YTc4MDJhY2ExN2I5NmFjMzY2MmY4MDQzNi4uY2QwY2E3ZDdiZjdiYzQ5ZTU1
ZDk4YjU1NWI3ZjNkMGI1NjEyYmMxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1dl
YktpdENTU0ZpbHRlclZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NT
RmlsdGVyVmFsdWUuY3BwCkBAIC0yNyw3ICsyNyw2IEBACiAjaW5jbHVkZSAiV2ViS2l0Q1NTRmls
dGVyVmFsdWUuaCIKIAogI2luY2x1ZGUgIkNTU1ZhbHVlTGlzdC5oIgotI2luY2x1ZGUgPHd0Zi9Q
YXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NGaWx0
ZXJWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU0ZpbHRlclZhbHVlLmgKaW5k
ZXggYTI0OTZkNjcxZTRkYTRkYWUzMjUwYzE0Y2Q3YWQ0OWY1NWRhNzIzOS4uOWUzYWU2NTM1NWQ0
OTJmZTIzZmY4YWIzNTk2MjZiNDFiYzRiNTM2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL1dlYktpdENTU0ZpbHRlclZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktp
dENTU0ZpbHRlclZhbHVlLmgKQEAgLTI3LDcgKzI3LDYgQEAKICNkZWZpbmUgV2ViS2l0Q1NTRmls
dGVyVmFsdWVfaAogCiAjaW5jbHVkZSAiQ1NTVmFsdWVMaXN0LmgiCi0jaW5jbHVkZSA8d3RmL1Bh
c3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NUcmFuc2Zvcm1WYWx1
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuY3BwCmlu
ZGV4IDY3NzIxMmU0OGM4NGIzMjllMGQ5OTllMzc4NDQ2MDhmOWI5YjAxOTEuLmExZGYwY2ZiODhi
ODVhZjEyMzI2ZWZkODQxYWI3YWE1YTM4ZDgzZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9XZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L1dlYktpdENTU1RyYW5zZm9ybVZhbHVlLmNwcApAQCAtMjcsNyArMjcsNiBAQAogI2luY2x1ZGUg
IldlYktpdENTU1RyYW5zZm9ybVZhbHVlLmgiCiAKICNpbmNsdWRlICJDU1NWYWx1ZUxpc3QuaCIK
LSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRD
U1NUcmFuc2Zvcm1WYWx1ZS5oCmluZGV4IDdjZWMzNTM0YmIzYmFjMzk5MmVjNjU5YWEyZjVhZmUw
ZDE4ZDAyZGEuLjJkYjdjNzIwOGM0ZTc3MTJmZTQ3MGNkM2Y2MzZjMGI3MDE3NmIyY2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5oCkBAIC0yNyw3ICsy
Nyw2IEBACiAjZGVmaW5lIFdlYktpdENTU1RyYW5zZm9ybVZhbHVlX2gKIAogI2luY2x1ZGUgIkNT
U1ZhbHVlTGlzdC5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250U2VsZWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRTZWxlY3Rvci5oCmluZGV4IGViY2JmZDNlODAxZjdmYWVhYzM4
MWFmOTRmMzM4MDA0MTQ5ODA4ZjcuLjU1YmU0YmIyOGY4OWZjYmUzNDllMmQwNWI2Y2JiY2YyZDQz
NDEyOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRT
ZWxlY3Rvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRTZWxl
Y3Rvci5oCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5Gb250U2VsZWN0
b3IoKSB7IH0KIAogICAgIHZpcnR1YWwgRm9udFJhbmdlcyBmb250UmFuZ2VzRm9yRmFtaWx5KGNv
bnN0IEZvbnREZXNjcmlwdGlvbiYsIGNvbnN0IEF0b21pY1N0cmluZyYpID0gMDsKLSAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8Rm9udD4gZmFsbGJhY2tGb250QXQoY29uc3QgRm9udERlc2NyaXB0aW9u
Jiwgc2l6ZV90KSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8Rm9udD4gZmFsbGJhY2tGb250QXQo
Y29uc3QgRm9udERlc2NyaXB0aW9uJiwgc2l6ZV90KSA9IDA7CiAKICAgICB2aXJ0dWFsIHNpemVf
dCBmYWxsYmFja0ZvbnRDb3VudCgpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgcmVzb2x2ZXNGYW1p
bHlGb3IoY29uc3QgRm9udERlc2NyaXB0aW9uJikgY29uc3QgPSAwOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259916</attachid>
            <date>2015-08-25 20:05:36 -0700</date>
            <delta_ts>2015-08-31 03:08:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147974-20150826120524.patch</filename>
            <type>text/plain</type>
            <size>122675</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4OTQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWFiNWQxZTNkMzEzYjc2
ZjZmZDhjOGI1OTA0NDExOTFlMjg4OWJlMS4uMzA4MGZkNDRlOGVlMzBjOTVmNjhhNzAzMWU0Mjcw
MzYyZGI4ZmY0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyNSBAQAorMjAxNS0wOC0yNSAgR3l1
eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIGFs
bCB1c2VzIG9mIFBhc3NSZWZQdHIgaW4gV2ViQ29yZS9jc3MKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0Nzk3NAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENsZWFuIHVwIGFsbCBQYXNzUmVmUHRyIGluIFdl
YkNvcmUvY3NzLgorCisgICAgICAgICogY3NzL0Jhc2ljU2hhcGVGdW5jdGlvbnMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Y3NzVmFsdWVUb0Jhc2ljU2hhcGVSYWRpdXMpOgorICAgICAgICAqIGNz
cy9CYXNpY1NoYXBlRnVuY3Rpb25zLmg6CisgICAgICAgICogY3NzL0NTU0FuaW1hdGlvblRyaWdn
ZXJTY3JvbGxWYWx1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQW5pbWF0aW9uVHJpZ2dlclNj
cm9sbFZhbHVlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQW5pbWF0aW9uVHJpZ2dl
clNjcm9sbFZhbHVlOjpDU1NBbmltYXRpb25UcmlnZ2VyU2Nyb2xsVmFsdWUpOgorICAgICAgICAq
IGNzcy9DU1NCYXNpY1NoYXBlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpidWlsZFNlcmlhbGl6
YWJsZVBvc2l0aW9uT2Zmc2V0KToKKyAgICAgICAgKiBjc3MvQ1NTQmFzaWNTaGFwZXMuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU0Jhc2ljU2hhcGU6OnNldFJlZmVyZW5jZUJveCk6CisgICAgICAg
ICogY3NzL0NTU0JvcmRlckltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUJvcmRl
ckltYWdlVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NCb3JkZXJJbWFnZS5oOgorICAgICAgICAq
IGNzcy9DU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
Qm9yZGVySW1hZ2VTbGljZVZhbHVlOjpDU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUpOgorICAgICAg
ICAqIGNzcy9DU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNT
U0JvcmRlckltYWdlU2xpY2VWYWx1ZTo6Y3JlYXRlKToKKyAgICAgICAgKiBjc3MvQ1NTQ2FsY3Vs
YXRpb25WYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkZXRlcm1pbmVDYXRlZ29yeSk6Cisg
ICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjp2YWx1ZUZvclNoYWRvdyk6CisgICAgICAg
IChXZWJDb3JlOjpDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpDb21wdXRlZFN0eWxlRXh0cmFjdG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Q1NTQ29t
cHV0ZWRTdHlsZURlY2xhcmF0aW9uKToKKyAgICAgICAgKiBjc3MvQ1NTQ29tcHV0ZWRTdHlsZURl
Y2xhcmF0aW9uLmg6CisgICAgICAgICogY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmg6CisgICAgICAg
IChXZWJDb3JlOjpDU1NDcm9zc2ZhZGVWYWx1ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU0Nyb3NzZmFkZVZhbHVlOjpzZXRQZXJjZW50YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U0Nyb3NzZmFkZVZhbHVlOjpDU1NDcm9zc2ZhZGVWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU0Zp
bHRlckltYWdlVmFsdWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlckltYWdlVmFsdWU6
OkNTU0ZpbHRlckltYWdlVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NGb250RmFjZS5oOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NGb250RmFjZTo6Q1NTRm9udEZhY2UpOgorICAgICAgICAqIGNzcy9DU1NGb250RmFjZUxvYWRF
dmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZUxvYWRFdmVudDo6Q1NTRm9u
dEZhY2VMb2FkRXZlbnQpOgorICAgICAgICAqIGNzcy9DU1NGb250RmFjZUxvYWRFdmVudC5oOgor
ICAgICAgICAqIGNzcy9DU1NGb250RmFjZVNvdXJjZS5oOgorICAgICAgICAqIGNzcy9DU1NGb250
RmFjZVNyY1ZhbHVlLmg6CisgICAgICAgICogY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NGb250U2VsZWN0b3I6OmZhbGxiYWNrRm9udEF0KToKKyAgICAgICAg
KiBjc3MvQ1NTRm9udFNlbGVjdG9yLmg6CisgICAgICAgICogY3NzL0NTU0ZvbnRWYWx1ZS5oOgor
ICAgICAgICAqIGNzcy9DU1NGdW5jdGlvblZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNT
U0Z1bmN0aW9uVmFsdWU6OkNTU0Z1bmN0aW9uVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NGdW5j
dGlvblZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NGdW5jdGlvblZhbHVlOjpjcmVhdGUp
OgorICAgICAgICAqIGNzcy9DU1NHcmFkaWVudFZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlOjpD
U1NHcmFkaWVudFZhbHVlOjpzZXRGaXJzdFgpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTR3JhZGll
bnRWYWx1ZTo6c2V0Rmlyc3RZKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0dyYWRpZW50VmFsdWU6
OnNldFNlY29uZFgpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTR3JhZGllbnRWYWx1ZTo6c2V0U2Vj
b25kWSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NMaW5lYXJHcmFkaWVudFZhbHVlOjpzZXRBbmds
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NSYWRpYWxHcmFkaWVudFZhbHVlOjpzZXRGaXJzdFJh
ZGl1cyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NSYWRpYWxHcmFkaWVudFZhbHVlOjpzZXRTZWNv
bmRSYWRpdXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUmFkaWFsR3JhZGllbnRWYWx1ZTo6c2V0
U2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUmFkaWFsR3JhZGllbnRWYWx1ZTo6c2V0U2l6
aW5nQmVoYXZpb3IpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUmFkaWFsR3JhZGllbnRWYWx1ZTo6
c2V0RW5kSG9yaXpvbnRhbFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUmFkaWFsR3JhZGll
bnRWYWx1ZTo6c2V0RW5kVmVydGljYWxTaXplKToKKyAgICAgICAgKiBjc3MvQ1NTR3JpZExpbmVO
YW1lc1ZhbHVlLmg6CisgICAgICAgICogY3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6c2F2ZUNhY2hlZEltYWdl
Rm9yU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjpDYWNo
ZWRHZW5lcmF0ZWRJbWFnZTo6Q2FjaGVkR2VuZXJhdGVkSW1hZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6aW1hZ2UpOgorICAgICAgICAqIGNzcy9DU1NJbWFn
ZUdlbmVyYXRvclZhbHVlLmg6CisgICAgICAgICogY3NzL0NTU0luaGVyaXRlZFZhbHVlLmg6Cisg
ICAgICAgICogY3NzL0NTU0luaXRpYWxWYWx1ZS5oOgorICAgICAgICAqIGNzcy9DU1NLZXlmcmFt
ZXNSdWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUnVsZUtleWZyYW1lczo6cGFyc2Vy
QXBwZW5kS2V5ZnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSdWxlS2V5ZnJhbWVzOjp3
cmFwcGVyQXBwZW5kS2V5ZnJhbWUpOgorICAgICAgICAqIGNzcy9DU1NLZXlmcmFtZXNSdWxlLmg6
CisgICAgICAgICogY3NzL0NTU0xpbmVCb3hDb250YWluVmFsdWUuaDoKKyAgICAgICAgKiBjc3Mv
Q1NTTmFtZWRJbWFnZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU05hbWVkSW1hZ2VW
YWx1ZTo6aW1hZ2UpOgorICAgICAgICAqIGNzcy9DU1NOYW1lZEltYWdlVmFsdWUuaDoKKyAgICAg
ICAgKiBjc3MvQ1NTUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFy
c2VEZWNsYXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OmFkZFByb3BlcnR5
V2l0aFByZWZpeGluZ1ZhcmlhbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjphZGRQ
cm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OmFkZEV4cGFuZGVkUHJvcGVy
dHlGb3JWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlR3JpZFRlbXBs
YXRlUm93c0FuZEFyZWFzKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VJbnNl
dFJvdW5kZWRDb3JuZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1BhcnNlQ29udGV4dDo6
Y29tbWl0Q29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Qm9yZGVySW1hZ2VQYXJzZUNvbnRleHQ6
OmNvbW1pdEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkJvcmRlckltYWdlUGFyc2VDb250ZXh0
Ojpjb21taXRJbWFnZVNsaWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkJvcmRlckltYWdlUGFyc2VD
b250ZXh0Ojpjb21taXRCb3JkZXJXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpCb3JkZXJJbWFn
ZVBhcnNlQ29udGV4dDo6Y29tbWl0Qm9yZGVyT3V0c2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkJv
cmRlckltYWdlUGFyc2VDb250ZXh0Ojpjb21taXRSZXBlYXQpOgorICAgICAgICAoV2ViQ29yZTo6
Qm9yZGVySW1hZ2VQYXJzZUNvbnRleHQ6OmNvbW1pdFdlYktpdEJvcmRlckltYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkJvcmRlckltYWdlUGFyc2VDb250ZXh0Ojpjb21taXRCb3JkZXJJbWFnZVBy
b3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkJvcmRlckltYWdlU2xpY2VQYXJzZUNvbnRleHQ6
OmNvbW1pdEJvcmRlckltYWdlU2xpY2UpOgorICAgICAgICAoV2ViQ29yZTo6Qm9yZGVySW1hZ2VR
dWFkUGFyc2VDb250ZXh0OjpzZXRUb3ApOgorICAgICAgICAoV2ViQ29yZTo6Qm9yZGVySW1hZ2VR
dWFkUGFyc2VDb250ZXh0Ojpjb21taXRCb3JkZXJJbWFnZVF1YWQpOgorICAgICAgICAoV2ViQ29y
ZTo6cGFyc2VEZXByZWNhdGVkR3JhZGllbnRQb2ludCk6CisgICAgICAgIChXZWJDb3JlOjp2YWx1
ZUZyb21TaWRlS2V5d29yZCk6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUdyYWRpZW50Q29sb3JP
cktleXdvcmQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjphZGRUZXh0RGVjb3JhdGlv
blByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6Y3JlYXRlSW1wb3J0UnVs
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OmNyZWF0ZU1lZGlhUnVsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OmFkZE5ld1J1bGVUb1NvdXJjZVRyZWUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwb3BSdWxlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NQYXJzZXI6OmNyZWF0ZVZpZXdwb3J0UnVsZSk6CisgICAgICAgICogY3NzL0NTU1BhcnNlci5o
OgorICAgICAgICAqIGNzcy9DU1NQYXJzZXJWYWx1ZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTUGFyc2VyVmFsdWU6OmNyZWF0ZUNTU1ZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2Vy
VmFsdWVzLmg6CisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpnZXRSR0JDb2xvclZhbHVlKToKKyAgICAgICAg
KiBjc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaDoKKyAgICAgICAgKiBjc3MvQ1NTUHJvcGVydHkuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5OjpDU1NQcm9wZXJ0eSk6CisgICAgICAgICog
Y3NzL0NTU1JlZmxlY3RWYWx1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUmVmbGVjdFZhbHVl
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUmVmbGVjdFZhbHVlOjpDU1NSZWZsZWN0
VmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NSdWxlTGlzdC5oOgorICAgICAgICAqIGNzcy9DU1NT
ZWdtZW50ZWRGb250RmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWdtZW50ZWRGb250
RmFjZTo6YXBwZW5kRm9udEZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VnbWVudGVkRm9u
dEZhY2U6OmxvYWRGb250KToKKyAgICAgICAgKiBjc3MvQ1NTU2VnbWVudGVkRm9udEZhY2UuaDoK
KyAgICAgICAgKiBjc3MvQ1NTU2VsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2Vs
ZWN0b3I6OlJhcmVEYXRhOjpSYXJlRGF0YSk6CisgICAgICAgICogY3NzL0NTU1NlbGVjdG9yLmg6
CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6UmFyZURhdGE6OmNyZWF0ZSk6CisgICAg
ICAgICogY3NzL0NTU1NoYWRvd1ZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NoYWRv
d1ZhbHVlOjpDU1NTaGFkb3dWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU1NoYWRvd1ZhbHVlLmg6
CisgICAgICAgIChXZWJDb3JlOjpDU1NTaGFkb3dWYWx1ZTo6Y3JlYXRlKToKKyAgICAgICAgKiBj
c3MvQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNoZWV0Ojpz
ZXRNZWRpYVF1ZXJpZXMpOgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNoZWV0Lmg6CisgICAgICAg
ICogY3NzL0NTU1RpbWluZ0Z1bmN0aW9uVmFsdWUuaDoKKyAgICAgICAgKiBjc3MvQ1NTVW5pY29k
ZVJhbmdlVmFsdWUuaDoKKyAgICAgICAgKiBjc3MvQ1NTVmFsdWVMaXN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1ZhbHVlTGlzdDo6Y29weSk6CisgICAgICAgICogY3NzL0NTU1ZhbHVlTGlz
dC5oOgorICAgICAgICAqIGNzcy9DU1NWYWx1ZVBvb2wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTVmFsdWVQb29sOjpjcmVhdGVGb250RmFjZVZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTVmFs
dWVQb29sLmg6CisgICAgICAgICogY3NzL0NvdW50ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
dW50ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb3VudGVyOjpzZXRJZGVudGlmaWVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvdW50ZXI6OnNldExpc3RTdHlsZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDb3VudGVyOjpzZXRTZXBhcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q291bnRl
cjo6Q291bnRlcik6CisgICAgICAgICogY3NzL0ZvbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TG9hZEZvbnRDYWxsYmFjazo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkxvYWRG
b250Q2FsbGJhY2s6OmNyZWF0ZUZyb21QYXJhbXMpOgorICAgICAgICAoV2ViQ29yZTo6TG9hZEZv
bnRDYWxsYmFjazo6TG9hZEZvbnRDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpGb250TG9h
ZGVyOjpzY2hlZHVsZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRMb2FkZXI6Om5vdGlm
eVdoZW5Gb250c1JlYWR5KToKKyAgICAgICAgKiBjc3MvRm9udExvYWRlci5oOgorICAgICAgICAq
IGNzcy9MZW5ndGhSZXBlYXQuaDoKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aFJlcGVhdDo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aFJlcGVhdDo6c2V0SW50ZXJ2YWwpOgorICAg
ICAgICAoV2ViQ29yZTo6TGVuZ3RoUmVwZWF0OjpMZW5ndGhSZXBlYXQpOgorICAgICAgICAqIGNz
cy9NZWRpYUxpc3QuaDoKKyAgICAgICAgKiBjc3MvTWVkaWFRdWVyeUxpc3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFRdWVyeUxpc3Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVF1ZXJ5TGlzdDo6TWVkaWFRdWVyeUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFR
dWVyeUxpc3Q6OmFkZExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUXVlcnlMaXN0
OjpyZW1vdmVMaXN0ZW5lcik6CisgICAgICAgICogY3NzL01lZGlhUXVlcnlMaXN0Lmg6CisgICAg
ICAgICogY3NzL01lZGlhUXVlcnlNYXRjaGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UXVlcnlNYXRjaGVyOjpMaXN0ZW5lcjo6TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFRdWVyeU1hdGNoZXI6OmFkZExpc3RlbmVyKToKKyAgICAgICAgKiBjc3MvTWVkaWFRdWVyeU1h
dGNoZXIuaDoKKyAgICAgICAgKiBjc3MvUGFpci5oOgorICAgICAgICAqIGNzcy9SZWN0Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpSZWN0QmFzZTo6c2V0VG9wKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
Y3RCYXNlOjpzZXRSaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpSZWN0QmFzZTo6c2V0Qm90dG9t
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlY3RCYXNlOjpzZXRMZWZ0KToKKyAgICAgICAgKiBjc3Mv
U1ZHQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
bXB1dGVkU3R5bGVFeHRyYWN0b3I6OmFkanVzdFNWR1BhaW50Rm9yQ3VycmVudENvbG9yKToKKyAg
ICAgICAgKiBjc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRTdHlsZUltYWdlKToKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydENsaXBQYXRoKToKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFF1b3Rlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRSZWZsZWN0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFNoYXBlVmFsdWUpOgor
ICAgICAgICAqIGNzcy9TdHlsZVByb3BlcnRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGVQcm9wZXJ0aWVzOjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6Ok11
dGFibGVTdHlsZVByb3BlcnRpZXM6OnNldFByb3BlcnR5KToKKyAgICAgICAgKiBjc3MvU3R5bGVQ
cm9wZXJ0aWVzLmg6CisgICAgICAgICogY3NzL1N0eWxlUmVzb2x2ZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6YWRkS2V5ZnJhbWVTdHlsZSk6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZVJlc29sdmVyOjpwc2V1ZG9TdHlsZUZvckVsZW1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGVSZXNvbHZlcjo6c3R5bGVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZVJlc29sdmVyOjpjYWNoZWRPclBlbmRpbmdGcm9tVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVSZXNvbHZlcjo6Z2VuZXJhdGVkT3JQZW5kaW5nRnJvbVZhbHVlKToKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlUmVzb2x2ZXI6OnNldE9yUGVuZGluZ0Zyb21WYWx1ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpjdXJzb3JPclBlbmRpbmdGcm9tVmFsdWUpOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6bG9hZFBlbmRpbmdJbWFnZSk6CisgICAgICAgICog
Y3NzL1N0eWxlUmVzb2x2ZXIuaDoKKyAgICAgICAgKiBjc3MvU3R5bGVSdWxlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlUnVsZUJhc2U6OmNyZWF0ZUNTU09NV3JhcHBlcik6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZVJ1bGVNZWRpYTo6U3R5bGVSdWxlTWVkaWEpOgorICAgICAgICAqIGNz
cy9TdHlsZVJ1bGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUnVsZU1lZGlhOjpjcmVhdGUp
OgorICAgICAgICAqIGNzcy9TdHlsZVJ1bGVJbXBvcnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVSdWxlSW1wb3J0OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSdWxlSW1w
b3J0OjpTdHlsZVJ1bGVJbXBvcnQpOgorICAgICAgICAqIGNzcy9TdHlsZVJ1bGVJbXBvcnQuaDoK
KyAgICAgICAgKiBjc3MvU3R5bGVTaGVldENvbnRlbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlU2hlZXRDb250ZW50czo6cGFyc2VyQXBwZW5kUnVsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZVNoZWV0Q29udGVudHM6OndyYXBwZXJJbnNlcnRSdWxlKToKKyAgICAgICAgKiBjc3Mv
U3R5bGVTaGVldENvbnRlbnRzLmg6CisgICAgICAgICogY3NzL1N0eWxlU2hlZXRMaXN0Lmg6Cisg
ICAgICAgICogY3NzL1dlYktpdENTU0ZpbHRlclZhbHVlLmNwcDoKKyAgICAgICAgKiBjc3MvV2Vi
S2l0Q1NTRmlsdGVyVmFsdWUuaDoKKyAgICAgICAgKiBjc3MvV2ViS2l0Q1NTVHJhbnNmb3JtVmFs
dWUuY3BwOgorICAgICAgICAqIGNzcy9XZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRTZWxlY3Rvci5oOgorCiAyMDE1LTA4LTI1ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgVXNpbmcgdGhlIGZpbHRlciBm
dW5jdGlvbmFsIG5vdGF0aW9uIGZvciBiYWNrZ3JvdW5kIGltYWdlcyByZXN1bHRzIGluIHdyb25n
IGJhY2tncm91bmQtc2l6ZSByZW5kZXJpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9CYXNpY1NoYXBlRnVuY3Rpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9CYXNpY1NoYXBl
RnVuY3Rpb25zLmNwcAppbmRleCAwNjRmY2QyZWM2OWMxZGNmZDk3ZmQzMTY3NGViNjMwYTgzNjZj
ZDg4Li5hNDU0NGVlMDc1YjAxZjhlZDNlMTI1YWU2NWE0YmE0MWQ2NDYyNTFkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQmFzaWNTaGFwZUZ1bmN0aW9ucy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0Jhc2ljU2hhcGVGdW5jdGlvbnMuY3BwCkBAIC0xNzksNyArMTc5LDcgQEAg
c3RhdGljIEJhc2ljU2hhcGVDZW50ZXJDb29yZGluYXRlIGNvbnZlcnRUb0NlbnRlckNvb3JkaW5h
dGUoY29uc3QgQ1NTVG9MZW5ndGhDb24KICAgICByZXR1cm4gQmFzaWNTaGFwZUNlbnRlckNvb3Jk
aW5hdGUoZGlyZWN0aW9uLCBvZmZzZXQpOwogfQogCi1zdGF0aWMgQmFzaWNTaGFwZVJhZGl1cyBj
c3NWYWx1ZVRvQmFzaWNTaGFwZVJhZGl1cyhjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRh
JiBjb252ZXJzaW9uRGF0YSwgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcmFkaXVzKQor
c3RhdGljIEJhc2ljU2hhcGVSYWRpdXMgY3NzVmFsdWVUb0Jhc2ljU2hhcGVSYWRpdXMoY29uc3Qg
Q1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYgY29udmVyc2lvbkRhdGEsIFJlZlB0cjxDU1NQcmlt
aXRpdmVWYWx1ZT4gcmFkaXVzKQogewogICAgIGlmICghcmFkaXVzKQogICAgICAgICByZXR1cm4g
QmFzaWNTaGFwZVJhZGl1cyhCYXNpY1NoYXBlUmFkaXVzOjpDbG9zZXN0U2lkZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQmFzaWNTaGFwZUZ1bmN0aW9ucy5oIGIvU291cmNlL1dl
YkNvcmUvY3NzL0Jhc2ljU2hhcGVGdW5jdGlvbnMuaAppbmRleCBlYzNlMjNlYjQ5MDI1NzRkZTgy
NjMxNzcxMWU5YmJkNDExOTk2YjRhLi4wNzM3ZDAzYTUwNmJmN2UzZTA0MmIyNDUzMzBlZDAxOWY1
OGE4YTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQmFzaWNTaGFwZUZ1bmN0aW9u
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9CYXNpY1NoYXBlRnVuY3Rpb25zLmgKQEAgLTMx
LDcgKzMxLDYgQEAKICNkZWZpbmUgQmFzaWNTaGFwZUZ1bmN0aW9uc19oCiAKICNpbmNsdWRlICJC
YXNpY1NoYXBlcy5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0FuaW1hdGlvblRy
aWdnZXJTY3JvbGxWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0FuaW1hdGlvblRyaWdn
ZXJTY3JvbGxWYWx1ZS5oCmluZGV4IDg2Y2MyZmYzODJkMTdkMjliMTQxZGVmNTRjNjUzNzdlMTlk
ODJiMjUuLjFlOTQzYjBmM2JiNDQ0NjRiZDQzNTA5NDgyYTBkYTM2MDYyZjdhZWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NBbmltYXRpb25UcmlnZ2VyU2Nyb2xsVmFsdWUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQW5pbWF0aW9uVHJpZ2dlclNjcm9sbFZhbHVlLmgK
QEAgLTI5LDEzICsyOSwxMiBAQAogI2lmIEVOQUJMRShDU1NfQU5JTUFUSU9OU19MRVZFTF8yKQog
CiAjaW5jbHVkZSAiQ1NTVmFsdWUuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENTU0FuaW1hdGlvblRyaWdnZXJTY3JvbGxWYWx1
ZSA6IHB1YmxpYyBDU1NWYWx1ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxDU1NBbmltYXRp
b25UcmlnZ2VyU2Nyb2xsVmFsdWU+IGNyZWF0ZShQYXNzUmVmUHRyPENTU1ZhbHVlPiBzdGFydFZh
bHVlLCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBlbmRWYWx1ZSA9IG51bGxwdHIpCisgICAgc3RhdGlj
IFJlZjxDU1NBbmltYXRpb25UcmlnZ2VyU2Nyb2xsVmFsdWU+IGNyZWF0ZShSZWZQdHI8Q1NTVmFs
dWU+IHN0YXJ0VmFsdWUsIFJlZlB0cjxDU1NWYWx1ZT4gZW5kVmFsdWUgPSBudWxscHRyKQogICAg
IHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTQW5pbWF0aW9uVHJpZ2dlclNjcm9s
bFZhbHVlKHN0YXJ0VmFsdWUsIGVuZFZhbHVlKSk7CiAgICAgfQpAQCAtNDksNyArNDgsNyBAQCBw
dWJsaWM6CiAgICAgYm9vbCBlcXVhbHMoY29uc3QgQ1NTQW5pbWF0aW9uVHJpZ2dlclNjcm9sbFZh
bHVlJikgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgQ1NTQW5pbWF0aW9uVHJpZ2dlclNjcm9sbFZh
bHVlKFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHN0YXJ0VmFsdWUsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+
IGVuZFZhbHVlKQorICAgIENTU0FuaW1hdGlvblRyaWdnZXJTY3JvbGxWYWx1ZShSZWZQdHI8Q1NT
VmFsdWU+IHN0YXJ0VmFsdWUsIFJlZlB0cjxDU1NWYWx1ZT4gZW5kVmFsdWUpCiAgICAgICAgIDog
Q1NTVmFsdWUoQW5pbWF0aW9uVHJpZ2dlclNjcm9sbENsYXNzKQogICAgICAgICAsIG1fc3RhcnRW
YWx1ZShzdGFydFZhbHVlKQogICAgICAgICAsIG1fZW5kVmFsdWUoZW5kVmFsdWUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQmFzaWNTaGFwZXMuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0Jhc2ljU2hhcGVzLmNwcAppbmRleCAyM2FhZWNmMzJlNmFjOTU3YzYyZjNlN2Iy
Y2VmZDAzYTk0MTkwZWUzLi4wNjg0Yjc2OTg2ODYyMTUzZjBmZjZhNDFhM2M3NDIwMDIwYjI1MmY5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQmFzaWNTaGFwZXMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCYXNpY1NoYXBlcy5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAg
c3RhdGljIFN0cmluZyBzZXJpYWxpemVQb3NpdGlvbk9mZnNldChjb25zdCBQYWlyJiBvZmZzZXQs
IGNvbnN0IFBhaXImIG90aGVyKQogICAgIHJldHVybiBvZmZzZXQuY3NzVGV4dCgpOwogfQogCi1z
dGF0aWMgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBidWlsZFNlcmlhbGl6YWJsZVBvc2l0aW9uT2Zm
c2V0KFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IG9mZnNldCwgQ1NTVmFsdWVJRCBkZWZh
dWx0U2lkZSkKK3N0YXRpYyBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGJ1aWxkU2VyaWFsaXphYmxl
UG9zaXRpb25PZmZzZXQoUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBvZmZzZXQsIENTU1ZhbHVl
SUQgZGVmYXVsdFNpZGUpCiB7CiAgICAgQ1NTVmFsdWVJRCBzaWRlID0gZGVmYXVsdFNpZGU7CiAg
ICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBhbW91bnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTQmFzaWNTaGFwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCYXNp
Y1NoYXBlcy5oCmluZGV4IDgxNzMzZDIxZmZkZDlhMmI0MGFiMDI0YWFlYjE0MDc0MWU5NmJhMmYu
LjBkMWUyZjM5NTI3NDkzY2I2NjdmZTEzMTA4NDE0NTkxYjEzZGY5M2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NCYXNpY1NoYXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NCYXNpY1NoYXBlcy5oCkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IGJvb2wgZXF1YWxzKGNvbnN0IENTU0Jhc2ljU2hhcGUmKSBjb25zdCA9IDA7CiAKICAgICBDU1NQ
cmltaXRpdmVWYWx1ZSogcmVmZXJlbmNlQm94KCkgY29uc3QgeyByZXR1cm4gbV9yZWZlcmVuY2VC
b3guZ2V0KCk7IH0KLSAgICB2b2lkIHNldFJlZmVyZW5jZUJveChQYXNzUmVmUHRyPENTU1ByaW1p
dGl2ZVZhbHVlPiByZWZlcmVuY2VCb3gpIHsgbV9yZWZlcmVuY2VCb3ggPSByZWZlcmVuY2VCb3g7
IH0KKyAgICB2b2lkIHNldFJlZmVyZW5jZUJveChSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHJl
ZmVyZW5jZUJveCkgeyBtX3JlZmVyZW5jZUJveCA9IHJlZmVyZW5jZUJveDsgfQogCiBwdWJsaWM6
CiAgICAgdmlydHVhbCB+Q1NTQmFzaWNTaGFwZSgpIHsgfQpAQCAtNzcsMTAgKzc3LDEwIEBAIHB1
YmxpYzoKICAgICBDU1NQcmltaXRpdmVWYWx1ZSogYm90dG9tUmlnaHRSYWRpdXMoKSBjb25zdCB7
IHJldHVybiBtX2JvdHRvbVJpZ2h0UmFkaXVzLmdldCgpOyB9CiAgICAgQ1NTUHJpbWl0aXZlVmFs
dWUqIGJvdHRvbUxlZnRSYWRpdXMoKSBjb25zdCB7IHJldHVybiBtX2JvdHRvbUxlZnRSYWRpdXMu
Z2V0KCk7IH0KIAotICAgIHZvaWQgc2V0VG9wKFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+
IHRvcCkgeyBtX3RvcCA9IHRvcDsgfQotICAgIHZvaWQgc2V0UmlnaHQoUGFzc1JlZlB0cjxDU1NQ
cmltaXRpdmVWYWx1ZT4gcmlnaHQpIHsgbV9yaWdodCA9IHJpZ2h0OyB9Ci0gICAgdm9pZCBzZXRC
b3R0b20oUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gYm90dG9tKSB7IG1fYm90dG9tID0g
Ym90dG9tOyB9Ci0gICAgdm9pZCBzZXRMZWZ0KFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+
IGxlZnQpIHsgbV9sZWZ0ID0gbGVmdDsgfQorICAgIHZvaWQgc2V0VG9wKFJlZlB0cjxDU1NQcmlt
aXRpdmVWYWx1ZT4gdG9wKSB7IG1fdG9wID0gdG9wOyB9CisgICAgdm9pZCBzZXRSaWdodChSZWZQ
dHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHJpZ2h0KSB7IG1fcmlnaHQgPSByaWdodDsgfQorICAgIHZv
aWQgc2V0Qm90dG9tKFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gYm90dG9tKSB7IG1fYm90dG9t
ID0gYm90dG9tOyB9CisgICAgdm9pZCBzZXRMZWZ0KFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4g
bGVmdCkgeyBtX2xlZnQgPSBsZWZ0OyB9CiAKICAgICB2b2lkIHVwZGF0ZVNoYXBlU2l6ZTRWYWx1
ZXMoQ1NTUHJpbWl0aXZlVmFsdWUqIHRvcCwgQ1NTUHJpbWl0aXZlVmFsdWUqIHJpZ2h0LCBDU1NQ
cmltaXRpdmVWYWx1ZSogYm90dG9tLCBDU1NQcmltaXRpdmVWYWx1ZSogbGVmdCkKICAgICB7CkBA
IC0xMDUsMTAgKzEwNSwxMCBAQCBwdWJsaWM6CiAgICAgICAgIHVwZGF0ZVNoYXBlU2l6ZTRWYWx1
ZXModmFsdWUxLCB2YWx1ZTIsIHZhbHVlMywgdmFsdWUyKTsKICAgICB9CiAKLSAgICB2b2lkIHNl
dFRvcExlZnRSYWRpdXMoUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcmFkaXVzKSB7IG1f
dG9wTGVmdFJhZGl1cyA9IHJhZGl1czsgfQotICAgIHZvaWQgc2V0VG9wUmlnaHRSYWRpdXMoUGFz
c1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcmFkaXVzKSB7IG1fdG9wUmlnaHRSYWRpdXMgPSBy
YWRpdXM7IH0KLSAgICB2b2lkIHNldEJvdHRvbVJpZ2h0UmFkaXVzKFBhc3NSZWZQdHI8Q1NTUHJp
bWl0aXZlVmFsdWU+IHJhZGl1cykgeyBtX2JvdHRvbVJpZ2h0UmFkaXVzID0gcmFkaXVzOyB9Ci0g
ICAgdm9pZCBzZXRCb3R0b21MZWZ0UmFkaXVzKFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+
IHJhZGl1cykgeyBtX2JvdHRvbUxlZnRSYWRpdXMgPSByYWRpdXM7IH0KKyAgICB2b2lkIHNldFRv
cExlZnRSYWRpdXMoUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiByYWRpdXMpIHsgbV90b3BMZWZ0
UmFkaXVzID0gcmFkaXVzOyB9CisgICAgdm9pZCBzZXRUb3BSaWdodFJhZGl1cyhSZWZQdHI8Q1NT
UHJpbWl0aXZlVmFsdWU+IHJhZGl1cykgeyBtX3RvcFJpZ2h0UmFkaXVzID0gcmFkaXVzOyB9Cisg
ICAgdm9pZCBzZXRCb3R0b21SaWdodFJhZGl1cyhSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHJh
ZGl1cykgeyBtX2JvdHRvbVJpZ2h0UmFkaXVzID0gcmFkaXVzOyB9CisgICAgdm9pZCBzZXRCb3R0
b21MZWZ0UmFkaXVzKFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcmFkaXVzKSB7IG1fYm90dG9t
TGVmdFJhZGl1cyA9IHJhZGl1czsgfQogCiAgICAgdmlydHVhbCBTdHJpbmcgY3NzVGV4dCgpIGNv
bnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBlcXVhbHMoY29uc3QgQ1NTQmFzaWNTaGFw
ZSYpIGNvbnN0IG92ZXJyaWRlOwpAQCAtMTQwLDkgKzE0MCw5IEBAIHB1YmxpYzoKICAgICBDU1NQ
cmltaXRpdmVWYWx1ZSogY2VudGVyWSgpIGNvbnN0IHsgcmV0dXJuIG1fY2VudGVyWS5nZXQoKTsg
fQogICAgIENTU1ByaW1pdGl2ZVZhbHVlKiByYWRpdXMoKSBjb25zdCB7IHJldHVybiBtX3JhZGl1
cy5nZXQoKTsgfQogCi0gICAgdm9pZCBzZXRDZW50ZXJYKFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZl
VmFsdWU+IGNlbnRlclgpIHsgbV9jZW50ZXJYID0gY2VudGVyWDsgfQotICAgIHZvaWQgc2V0Q2Vu
dGVyWShQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjZW50ZXJZKSB7IG1fY2VudGVyWSA9
IGNlbnRlclk7IH0KLSAgICB2b2lkIHNldFJhZGl1cyhQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZh
bHVlPiByYWRpdXMpIHsgbV9yYWRpdXMgPSByYWRpdXM7IH0KKyAgICB2b2lkIHNldENlbnRlclgo
UmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjZW50ZXJYKSB7IG1fY2VudGVyWCA9IGNlbnRlclg7
IH0KKyAgICB2b2lkIHNldENlbnRlclkoUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjZW50ZXJZ
KSB7IG1fY2VudGVyWSA9IGNlbnRlclk7IH0KKyAgICB2b2lkIHNldFJhZGl1cyhSZWZQdHI8Q1NT
UHJpbWl0aXZlVmFsdWU+IHJhZGl1cykgeyBtX3JhZGl1cyA9IHJhZGl1czsgfQogCiBwcml2YXRl
OgogICAgIENTU0Jhc2ljU2hhcGVDaXJjbGUoKSB7IH0KQEAgLTE2MywxMCArMTYzLDEwIEBAIHB1
YmxpYzoKICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcmFkaXVzWCgpIGNvbnN0IHsgcmV0dXJuIG1f
cmFkaXVzWC5nZXQoKTsgfQogICAgIENTU1ByaW1pdGl2ZVZhbHVlKiByYWRpdXNZKCkgY29uc3Qg
eyByZXR1cm4gbV9yYWRpdXNZLmdldCgpOyB9CiAKLSAgICB2b2lkIHNldENlbnRlclgoUGFzc1Jl
ZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY2VudGVyWCkgeyBtX2NlbnRlclggPSBjZW50ZXJYOyB9
Ci0gICAgdm9pZCBzZXRDZW50ZXJZKFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNlbnRl
clkpIHsgbV9jZW50ZXJZID0gY2VudGVyWTsgfQotICAgIHZvaWQgc2V0UmFkaXVzWChQYXNzUmVm
UHRyPENTU1ByaW1pdGl2ZVZhbHVlPiByYWRpdXNYKSB7IG1fcmFkaXVzWCA9IHJhZGl1c1g7IH0K
LSAgICB2b2lkIHNldFJhZGl1c1koUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcmFkaXVz
WSkgeyBtX3JhZGl1c1kgPSByYWRpdXNZOyB9CisgICAgdm9pZCBzZXRDZW50ZXJYKFJlZlB0cjxD
U1NQcmltaXRpdmVWYWx1ZT4gY2VudGVyWCkgeyBtX2NlbnRlclggPSBjZW50ZXJYOyB9CisgICAg
dm9pZCBzZXRDZW50ZXJZKFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY2VudGVyWSkgeyBtX2Nl
bnRlclkgPSBjZW50ZXJZOyB9CisgICAgdm9pZCBzZXRSYWRpdXNYKFJlZlB0cjxDU1NQcmltaXRp
dmVWYWx1ZT4gcmFkaXVzWCkgeyBtX3JhZGl1c1ggPSByYWRpdXNYOyB9CisgICAgdm9pZCBzZXRS
YWRpdXNZKFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcmFkaXVzWSkgeyBtX3JhZGl1c1kgPSBy
YWRpdXNZOyB9CiAKICAgICB2aXJ0dWFsIFN0cmluZyBjc3NUZXh0KCkgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgdmlydHVhbCBib29sIGVxdWFscyhjb25zdCBDU1NCYXNpY1NoYXBlJikgY29uc3Qgb3Zl
cnJpZGU7CkBAIC0xODYsNyArMTg2LDcgQEAgY2xhc3MgQ1NTQmFzaWNTaGFwZVBvbHlnb24gZmlu
YWwgOiBwdWJsaWMgQ1NTQmFzaWNTaGFwZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxDU1NC
YXNpY1NoYXBlUG9seWdvbj4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NCYXNp
Y1NoYXBlUG9seWdvbik7IH0KIAotICAgIHZvaWQgYXBwZW5kUG9pbnQoUGFzc1JlZlB0cjxDU1NQ
cmltaXRpdmVWYWx1ZT4geCwgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4geSkKKyAgICB2
b2lkIGFwcGVuZFBvaW50KFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4geCwgUmVmUHRyPENTU1By
aW1pdGl2ZVZhbHVlPiB5KQogICAgIHsKICAgICAgICAgbV92YWx1ZXMuYXBwZW5kKHgpOwogICAg
ICAgICBtX3ZhbHVlcy5hcHBlbmQoeSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTQm9yZGVySW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0JvcmRlckltYWdlLmNw
cAppbmRleCBiZTc0MzJjZDhhZWRhMGQ2NzMyYTkzZjg3YTBmMmIwMjM1OTczN2MzLi4xNjVkOTJi
YTNjY2RkNzRlNzQ5NDBkYjkzMDE1ZTgwYzdjYzU1YThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTQm9yZGVySW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NC
b3JkZXJJbWFnZS5jcHAKQEAgLTIyLDcgKzIyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1SZWY8Q1NTVmFsdWVMaXN0PiBjcmVhdGVCb3JkZXJJbWFnZVZhbHVlKFBhc3NSZWZQdHI8Q1NT
VmFsdWU+IGltYWdlLCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBpbWFnZVNsaWNlLCBQYXNzUmVmUHRy
PENTU1ZhbHVlPiBib3JkZXJTbGljZSwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gb3V0c2V0LCBQYXNz
UmVmUHRyPENTU1ZhbHVlPiByZXBlYXQpCitSZWY8Q1NTVmFsdWVMaXN0PiBjcmVhdGVCb3JkZXJJ
bWFnZVZhbHVlKFJlZlB0cjxDU1NWYWx1ZT4gaW1hZ2UsIFJlZlB0cjxDU1NWYWx1ZT4gaW1hZ2VT
bGljZSwgUmVmUHRyPENTU1ZhbHVlPiBib3JkZXJTbGljZSwgUmVmUHRyPENTU1ZhbHVlPiBvdXRz
ZXQsIFJlZlB0cjxDU1NWYWx1ZT4gcmVwZWF0KQogewogICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVl
TGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKICAgICBpZiAoaW1hZ2UpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQm9yZGVySW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NCb3JkZXJJbWFnZS5oCmluZGV4IGMyYzI1ZGE4ODk3MjY2NTE3YjA3MDE4Y2RjNDJlNGQ1
MGJmM2JjYzEuLjVjNDg2OTNlMjA0MzRkMjJiMmUyYTAyODMwN2RkMDRiMWFlYjk1MTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCb3JkZXJJbWFnZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NCb3JkZXJJbWFnZS5oCkBAIC0yMiwxMiArMjIsMTEgQEAKIAogI2luY2x1
ZGUgIkNTU0JvcmRlckltYWdlU2xpY2VWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU1ZhbHVlTGlzdC5o
IgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxDU1NWYWx1ZUxpc3Q+IGNyZWF0ZUJvcmRlcklt
YWdlVmFsdWUoUGFzc1JlZlB0cjxDU1NWYWx1ZT4gaW1hZ2UsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+
IGltYWdlU2xpY2UsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IGJvcmRlclNsaWNlLCBQYXNzUmVmUHRy
PENTU1ZhbHVlPiBvdXRzZXQsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHJlcGVhdCk7CitSZWY8Q1NT
VmFsdWVMaXN0PiBjcmVhdGVCb3JkZXJJbWFnZVZhbHVlKFJlZlB0cjxDU1NWYWx1ZT4gaW1hZ2Us
IFJlZlB0cjxDU1NWYWx1ZT4gaW1hZ2VTbGljZSwgUmVmUHRyPENTU1ZhbHVlPiBib3JkZXJTbGlj
ZSwgUmVmUHRyPENTU1ZhbHVlPiBvdXRzZXQsIFJlZlB0cjxDU1NWYWx1ZT4gcmVwZWF0KTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCb3Jk
ZXJJbWFnZVNsaWNlVmFsdWUuY3BwCmluZGV4IDVjYzA3ZmQ0MzdiZmE4ZTUwYmFlN2Y4NzE0MjQz
OGEzZDhkMGVlMzguLjM0YmU0ZTkzNmVlNDhmZTkwMjg1N2I4ZTgxMmNkNTExYjE4MDI4NTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUuY3BwCkBA
IC0zMSw3ICszMSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ1NTQm9yZGVySW1hZ2VT
bGljZVZhbHVlOjpDU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUoUGFzc1JlZlB0cjxDU1NQcmltaXRp
dmVWYWx1ZT4gc2xpY2VzLCBib29sIGZpbGwpCitDU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWU6OkNT
U0JvcmRlckltYWdlU2xpY2VWYWx1ZShSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHNsaWNlcywg
Ym9vbCBmaWxsKQogICAgIDogQ1NTVmFsdWUoQm9yZGVySW1hZ2VTbGljZUNsYXNzKQogICAgICwg
bV9zbGljZXMoc2xpY2VzKQogICAgICwgbV9maWxsKGZpbGwpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlLmgKaW5kZXggYjhiNzU1MjljNDg1Yjk3Yjk3MWI3
NGRmNzA3YzEyOTAzNDg0Mzk5Mi4uZDgwYjQzODcyMDFiMGFkZTg2NzMxMTNjZjZkMDhmZmZkYTZh
Njg0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0JvcmRlckltYWdlU2xpY2VW
YWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUu
aApAQCAtMjcsNyArMjcsNiBAQAogI2RlZmluZSBDU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWVfaAog
CiAjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWUuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAt
MzYsNyArMzUsNyBAQCBjbGFzcyBSZWN0OwogCiBjbGFzcyBDU1NCb3JkZXJJbWFnZVNsaWNlVmFs
dWUgOiBwdWJsaWMgQ1NTVmFsdWUgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8Q1NTQm9yZGVy
SW1hZ2VTbGljZVZhbHVlPiBjcmVhdGUoUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gc2xp
Y2VzLCBib29sIGZpbGwpCisgICAgc3RhdGljIFJlZjxDU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWU+
IGNyZWF0ZShSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHNsaWNlcywgYm9vbCBmaWxsKQogICAg
IHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVl
KHNsaWNlcywgZmlsbCkpOwogICAgIH0KQEAgLTUzLDcgKzUyLDcgQEAgcHVibGljOgogICAgIGJv
b2wgbV9maWxsOwogCiBwcml2YXRlOgotICAgIENTU0JvcmRlckltYWdlU2xpY2VWYWx1ZShQYXNz
UmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBzbGljZXMsIGJvb2wgZmlsbCk7CisgICAgQ1NTQm9y
ZGVySW1hZ2VTbGljZVZhbHVlKFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gc2xpY2VzLCBib29s
IGZpbGwpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0NhbGN1bGF0aW9uVmFsdWUuY3BwCmluZGV4IDM2MTQyZjFiZjBiYzAyNDgwNzkzYjQwOWFj
YzA3YzY5YThjMzc1NTkuLmI1Zjc1ZDlhNGI1MDQyNDIyMTdlOTQ1MGFmZDA1NmQ3MzMyZTUwODAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5jcHAKQEAgLTE5OCw3
ICsxOTgsNyBAQCBkb3VibGUgQ1NTQ2FsY1ZhbHVlOjpjb21wdXRlTGVuZ3RoUHgoY29uc3QgQ1NT
VG9MZW5ndGhDb252ZXJzaW9uRGF0YSYgY29udmVyc2lvbgogY2xhc3MgQ1NTQ2FsY1ByaW1pdGl2
ZVZhbHVlIGZpbmFsIDogcHVibGljIENTU0NhbGNFeHByZXNzaW9uTm9kZSB7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxDU1NDYWxjUHJpbWl0
aXZlVmFsdWU+IGNyZWF0ZShQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiB2YWx1ZSwgYm9v
bCBpc0ludGVnZXIpCisgICAgc3RhdGljIFJlZjxDU1NDYWxjUHJpbWl0aXZlVmFsdWU+IGNyZWF0
ZShSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHZhbHVlLCBib29sIGlzSW50ZWdlcikKICAgICB7
CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU0NhbGNQcmltaXRpdmVWYWx1ZSh2YWx1
ZSwgaXNJbnRlZ2VyKSk7CiAgICAgfQpAQCAtMjkxLDcgKzI5MSw3IEBAIHByaXZhdGU6CiAgICAg
fQogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IENTU0NhbGNQcmltaXRpdmVWYWx1ZShQYXNzUmVm
UHRyPENTU1ByaW1pdGl2ZVZhbHVlPiB2YWx1ZSwgYm9vbCBpc0ludGVnZXIpCisgICAgZXhwbGlj
aXQgQ1NTQ2FsY1ByaW1pdGl2ZVZhbHVlKFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gdmFsdWUs
IGJvb2wgaXNJbnRlZ2VyKQogICAgICAgICA6IENTU0NhbGNFeHByZXNzaW9uTm9kZSh1bml0Q2F0
ZWdvcnkoKENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXMpdmFsdWUtPnByaW1pdGl2ZVR5cGUo
KSksIGlzSW50ZWdlcikKICAgICAgICAgLCBtX3ZhbHVlKHZhbHVlKQogICAgIHsKQEAgLTM0OCw3
ICszNDgsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNJbnRlZ2VyUmVzdWx0KENhbGNPcGVyYXRv
ciBvcCwgY29uc3QgQ1NTQ2FsY0V4cHJlc3Npb25Ob2RlJgogY2xhc3MgQ1NTQ2FsY0JpbmFyeU9w
ZXJhdGlvbiBmaW5hbCA6IHB1YmxpYyBDU1NDYWxjRXhwcmVzc2lvbk5vZGUgewogICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8Q1NTQ2FsY0Jp
bmFyeU9wZXJhdGlvbj4gY3JlYXRlKENhbGNPcGVyYXRvciBvcCwgUGFzc1JlZlB0cjxDU1NDYWxj
RXhwcmVzc2lvbk5vZGU+IGxlZnRTaWRlLCBQYXNzUmVmUHRyPENTU0NhbGNFeHByZXNzaW9uTm9k
ZT4gcmlnaHRTaWRlKQorICAgIHN0YXRpYyBSZWZQdHI8Q1NTQ2FsY0JpbmFyeU9wZXJhdGlvbj4g
Y3JlYXRlKENhbGNPcGVyYXRvciBvcCwgUmVmUHRyPENTU0NhbGNFeHByZXNzaW9uTm9kZT4gbGVm
dFNpZGUsIFJlZlB0cjxDU1NDYWxjRXhwcmVzc2lvbk5vZGU+IHJpZ2h0U2lkZSkKICAgICB7CiAg
ICAgICAgIEFTU0VSVChsZWZ0U2lkZS0+Y2F0ZWdvcnkoKSA8IENhbGNPdGhlcik7CiAgICAgICAg
IEFTU0VSVChyaWdodFNpZGUtPmNhdGVnb3J5KCkgPCBDYWxjT3RoZXIpOwpAQCAtMzYxLDcgKzM2
MSw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDU1NDYWxjQmluYXJ5
T3BlcmF0aW9uKG5ld0NhdGVnb3J5LCBvcCwgbGVmdFNpZGUsIHJpZ2h0U2lkZSkpOwogICAgIH0K
IAotICAgIHN0YXRpYyBSZWZQdHI8Q1NTQ2FsY0V4cHJlc3Npb25Ob2RlPiBjcmVhdGVTaW1wbGlm
aWVkKENhbGNPcGVyYXRvciBvcCwgUGFzc1JlZlB0cjxDU1NDYWxjRXhwcmVzc2lvbk5vZGU+IGxl
ZnRTaWRlLCBQYXNzUmVmUHRyPENTU0NhbGNFeHByZXNzaW9uTm9kZT4gcmlnaHRTaWRlKQorICAg
IHN0YXRpYyBSZWZQdHI8Q1NTQ2FsY0V4cHJlc3Npb25Ob2RlPiBjcmVhdGVTaW1wbGlmaWVkKENh
bGNPcGVyYXRvciBvcCwgUmVmUHRyPENTU0NhbGNFeHByZXNzaW9uTm9kZT4gbGVmdFNpZGUsIFJl
ZlB0cjxDU1NDYWxjRXhwcmVzc2lvbk5vZGU+IHJpZ2h0U2lkZSkKICAgICB7CiAgICAgICAgIENh
bGN1bGF0aW9uQ2F0ZWdvcnkgbGVmdENhdGVnb3J5ID0gbGVmdFNpZGUtPmNhdGVnb3J5KCk7CiAg
ICAgICAgIENhbGN1bGF0aW9uQ2F0ZWdvcnkgcmlnaHRDYXRlZ29yeSA9IHJpZ2h0U2lkZS0+Y2F0
ZWdvcnkoKTsKQEAgLTUxNCw3ICs1MTQsNyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19VTktOT1dOOwogICAgIH0KIAotICAgIENTU0NhbGNCaW5hcnlP
cGVyYXRpb24oQ2FsY3VsYXRpb25DYXRlZ29yeSBjYXRlZ29yeSwgQ2FsY09wZXJhdG9yIG9wLCBQ
YXNzUmVmUHRyPENTU0NhbGNFeHByZXNzaW9uTm9kZT4gbGVmdFNpZGUsIFBhc3NSZWZQdHI8Q1NT
Q2FsY0V4cHJlc3Npb25Ob2RlPiByaWdodFNpZGUpCisgICAgQ1NTQ2FsY0JpbmFyeU9wZXJhdGlv
bihDYWxjdWxhdGlvbkNhdGVnb3J5IGNhdGVnb3J5LCBDYWxjT3BlcmF0b3Igb3AsIFJlZlB0cjxD
U1NDYWxjRXhwcmVzc2lvbk5vZGU+IGxlZnRTaWRlLCBSZWZQdHI8Q1NTQ2FsY0V4cHJlc3Npb25O
b2RlPiByaWdodFNpZGUpCiAgICAgICAgIDogQ1NTQ2FsY0V4cHJlc3Npb25Ob2RlKGNhdGVnb3J5
LCBpc0ludGVnZXJSZXN1bHQob3AsICpsZWZ0U2lkZSwgKnJpZ2h0U2lkZSkpCiAgICAgICAgICwg
bV9sZWZ0U2lkZShsZWZ0U2lkZSkKICAgICAgICAgLCBtX3JpZ2h0U2lkZShyaWdodFNpZGUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3Bw
CmluZGV4IGQ5NWMxYmM5NzczMDE1ZTA4YThiMWZiZjI1MGY2ZTRmMmE2OGY0ZjIuLjNkY2JlNGI5
ZDEyM2Y4ZTU4MmYxMTQ2MGE1NTYyNDM5M2VlNmJlMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCkBAIC05MDAsOCArOTAwLDgg
QEAgUmVmPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjp2YWx1ZUZvclNoYWRvdyhj
b25zdCBTaGFkb3dEYXRhKiBzaGFkb3csIEMKICAgICAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZh
bHVlPiB4ID0gYWRqdXN0TGVuZ3RoRm9yWm9vbShjdXJyU2hhZG93RGF0YS0+eCgpLCBzdHlsZSwg
YWRqdXN0KTsKICAgICAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiB5ID0gYWRqdXN0TGVu
Z3RoRm9yWm9vbShjdXJyU2hhZG93RGF0YS0+eSgpLCBzdHlsZSwgYWRqdXN0KTsKICAgICAgICAg
UmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBibHVyID0gYWRqdXN0TGVuZ3RoRm9yWm9vbShjdXJy
U2hhZG93RGF0YS0+cmFkaXVzKCksIHN0eWxlLCBhZGp1c3QpOwotICAgICAgICBSZWZQdHI8Q1NT
UHJpbWl0aXZlVmFsdWU+IHNwcmVhZCA9IHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlUZXh0U2hh
ZG93ID8gUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4oKSA6IGFkanVzdExlbmd0aEZvclpv
b20oY3VyclNoYWRvd0RhdGEtPnNwcmVhZCgpLCBzdHlsZSwgYWRqdXN0KTsKLSAgICAgICAgUmVm
UHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBzdHlsZSA9IHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlU
ZXh0U2hhZG93IHx8IGN1cnJTaGFkb3dEYXRhLT5zdHlsZSgpID09IE5vcm1hbCA/IFBhc3NSZWZQ
dHI8Q1NTUHJpbWl0aXZlVmFsdWU+KCkgOiBjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZh
bHVlKENTU1ZhbHVlSW5zZXQpOworICAgICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHNw
cmVhZCA9IHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlUZXh0U2hhZG93ID8gUmVmUHRyPENTU1By
aW1pdGl2ZVZhbHVlPigpIDogYWRqdXN0TGVuZ3RoRm9yWm9vbShjdXJyU2hhZG93RGF0YS0+c3By
ZWFkKCksIHN0eWxlLCBhZGp1c3QpOworICAgICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+
IHN0eWxlID0gcHJvcGVydHlJRCA9PSBDU1NQcm9wZXJ0eVRleHRTaGFkb3cgfHwgY3VyclNoYWRv
d0RhdGEtPnN0eWxlKCkgPT0gTm9ybWFsID8gUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPigpIDog
Y3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUluc2V0KTsKICAgICAg
ICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjb2xvciA9IGNzc1ZhbHVlUG9vbC5jcmVhdGVD
b2xvclZhbHVlKGN1cnJTaGFkb3dEYXRhLT5jb2xvcigpLnJnYigpKTsKICAgICAgICAgbGlzdC5n
ZXQoKS5wcmVwZW5kKENTU1NoYWRvd1ZhbHVlOjpjcmVhdGUoeC5yZWxlYXNlKCksIHkucmVsZWFz
ZSgpLCBibHVyLnJlbGVhc2UoKSwgc3ByZWFkLnJlbGVhc2UoKSwgc3R5bGUucmVsZWFzZSgpLCBj
b2xvci5yZWxlYXNlKCkpKTsKICAgICB9CkBAIC0xMzEwLDcgKzEzMTAsNyBAQCBzdGF0aWMgUmVm
PENTU1ZhbHVlPiBjcmVhdGVMaW5lQm94Q29udGFpblZhbHVlKHVuc2lnbmVkIGxpbmVCb3hDb250
YWluKQogICAgIHJldHVybiBDU1NMaW5lQm94Q29udGFpblZhbHVlOjpjcmVhdGUobGluZUJveENv
bnRhaW4pOwogfQogCi1Db21wdXRlZFN0eWxlRXh0cmFjdG9yOjpDb21wdXRlZFN0eWxlRXh0cmFj
dG9yKFBhc3NSZWZQdHI8Tm9kZT4gbm9kZSwgYm9vbCBhbGxvd1Zpc2l0ZWRTdHlsZSwgUHNldWRv
SWQgcHNldWRvRWxlbWVudFNwZWNpZmllcikKK0NvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OkNvbXB1
dGVkU3R5bGVFeHRyYWN0b3IoUmVmUHRyPE5vZGU+IG5vZGUsIGJvb2wgYWxsb3dWaXNpdGVkU3R5
bGUsIFBzZXVkb0lkIHBzZXVkb0VsZW1lbnRTcGVjaWZpZXIpCiAgICAgOiBtX25vZGUobm9kZSkK
ICAgICAsIG1fcHNldWRvRWxlbWVudFNwZWNpZmllcihwc2V1ZG9FbGVtZW50U3BlY2lmaWVyKQog
ICAgICwgbV9hbGxvd1Zpc2l0ZWRTdHlsZShhbGxvd1Zpc2l0ZWRTdHlsZSkKQEAgLTEzMTgsNyAr
MTMxOCw3IEBAIENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OkNvbXB1dGVkU3R5bGVFeHRyYWN0b3Io
UGFzc1JlZlB0cjxOb2RlPiBub2RlLCBib29sIGFsbG93CiB9CiAKIAotQ1NTQ29tcHV0ZWRTdHls
ZURlY2xhcmF0aW9uOjpDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24oUGFzc1JlZlB0cjxOb2Rl
PiBuLCBib29sIGFsbG93VmlzaXRlZFN0eWxlLCBjb25zdCBTdHJpbmcmIHBzZXVkb0VsZW1lbnRO
YW1lKQorQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpDU1NDb21wdXRlZFN0eWxlRGVjbGFy
YXRpb24oUmVmUHRyPE5vZGU+IG4sIGJvb2wgYWxsb3dWaXNpdGVkU3R5bGUsIGNvbnN0IFN0cmlu
ZyYgcHNldWRvRWxlbWVudE5hbWUpCiAgICAgOiBtX25vZGUobikKICAgICAsIG1fYWxsb3dWaXNp
dGVkU3R5bGUoYWxsb3dWaXNpdGVkU3R5bGUpCiAgICAgLCBtX3JlZkNvdW50KDEpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmgKaW5kZXggNmU5
MWM5M2RiNDM4MjQ2YWE5MWRhMjFjMTUzZGRmNDAzYWY4NTkzOC4uZTEzYTM4YTJlZjc4MzBjNTAy
ZGYyMzY2YTc5NzdjNGRkN2EzNGY1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaApAQCAtNDcsNyArNDcsNyBAQCBlbnVtIEFkanVzdFBp
eGVsVmFsdWVzRm9yQ29tcHV0ZWRTdHlsZSB7IEFkanVzdFBpeGVsVmFsdWVzLCBEb05vdEFkanVz
dFBpeGVsVmFsdQogCiBjbGFzcyBDb21wdXRlZFN0eWxlRXh0cmFjdG9yIHsKIHB1YmxpYzoKLSAg
ICBDb21wdXRlZFN0eWxlRXh0cmFjdG9yKFBhc3NSZWZQdHI8Tm9kZT4sIGJvb2wgYWxsb3dWaXNp
dGVkU3R5bGUgPSBmYWxzZSwgUHNldWRvSWQgPSBOT1BTRVVETyk7CisgICAgQ29tcHV0ZWRTdHls
ZUV4dHJhY3RvcihSZWZQdHI8Tm9kZT4sIGJvb2wgYWxsb3dWaXNpdGVkU3R5bGUgPSBmYWxzZSwg
UHNldWRvSWQgPSBOT1BTRVVETyk7CiAKICAgICBSZWZQdHI8Q1NTVmFsdWU+IHByb3BlcnR5VmFs
dWUoQ1NTUHJvcGVydHlJRCwgRVVwZGF0ZUxheW91dCA9IFVwZGF0ZUxheW91dCkgY29uc3Q7CiAK
QEAgLTY4LDcgKzY4LDcgQEAgcHJpdmF0ZToKICAgICBOb2RlKiBzdHlsZWROb2RlKCkgY29uc3Q7
CiAKICAgICBSZWZQdHI8Q1NTVmFsdWU+IHN2Z1Byb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCwg
RVVwZGF0ZUxheW91dCkgY29uc3Q7Ci0gICAgUmVmUHRyPFNWR1BhaW50PiBhZGp1c3RTVkdQYWlu
dEZvckN1cnJlbnRDb2xvcihQYXNzUmVmUHRyPFNWR1BhaW50PiwgUmVuZGVyU3R5bGUqKSBjb25z
dDsKKyAgICBSZWZQdHI8U1ZHUGFpbnQ+IGFkanVzdFNWR1BhaW50Rm9yQ3VycmVudENvbG9yKFJl
ZlB0cjxTVkdQYWludD4sIFJlbmRlclN0eWxlKikgY29uc3Q7CiAKICAgICBzdGF0aWMgUmVmPENT
U1ZhbHVlPiB2YWx1ZUZvclNoYWRvdyhjb25zdCBTaGFkb3dEYXRhKiwgQ1NTUHJvcGVydHlJRCwg
Y29uc3QgUmVuZGVyU3R5bGUmLCBBZGp1c3RQaXhlbFZhbHVlc0ZvckNvbXB1dGVkU3R5bGUgPSBB
ZGp1c3RQaXhlbFZhbHVlcyk7CiAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjdXJyZW50
Q29sb3JPclZhbGlkQ29sb3IoUmVuZGVyU3R5bGUqLCBjb25zdCBDb2xvciYpIGNvbnN0OwpAQCAt
ODUsNyArODUsNyBAQCBwcml2YXRlOgogCiBjbGFzcyBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b24gZmluYWwgOiBwdWJsaWMgQ1NTU3R5bGVEZWNsYXJhdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZjxDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24+IGNyZWF0ZShQYXNzUmVmUHRyPE5v
ZGU+IG5vZGUsIGJvb2wgYWxsb3dWaXNpdGVkU3R5bGUgPSBmYWxzZSwgY29uc3QgU3RyaW5nJiBw
c2V1ZG9FbGVtZW50TmFtZSA9IFN0cmluZygpKQorICAgIHN0YXRpYyBSZWY8Q1NTQ29tcHV0ZWRT
dHlsZURlY2xhcmF0aW9uPiBjcmVhdGUoUmVmUHRyPE5vZGU+IG5vZGUsIGJvb2wgYWxsb3dWaXNp
dGVkU3R5bGUgPSBmYWxzZSwgY29uc3QgU3RyaW5nJiBwc2V1ZG9FbGVtZW50TmFtZSA9IFN0cmlu
ZygpKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTQ29tcHV0ZWRTdHls
ZURlY2xhcmF0aW9uKG5vZGUsIGFsbG93VmlzaXRlZFN0eWxlLCBwc2V1ZG9FbGVtZW50TmFtZSkp
OwogICAgIH0KQEAgLTk3LDcgKzk3LDcgQEAgcHVibGljOgogICAgIFN0cmluZyBnZXRQcm9wZXJ0
eVZhbHVlKENTU1Byb3BlcnR5SUQpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIFdFQkNPUkVfRVhQ
T1JUIENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbihQYXNzUmVmUHRyPE5vZGU+LCBib29sIGFs
bG93VmlzaXRlZFN0eWxlLCBjb25zdCBTdHJpbmcmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBDU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb24oUmVmUHRyPE5vZGU+LCBib29sIGFsbG93VmlzaXRlZFN0
eWxlLCBjb25zdCBTdHJpbmcmKTsKIAogICAgIC8vIENTU09NIGZ1bmN0aW9ucy4gRG9uJ3QgbWFr
ZSB0aGVzZSBwdWJsaWMuCiAgICAgdmlydHVhbCBDU1NSdWxlKiBwYXJlbnRSdWxlKCkgY29uc3Qg
b3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFs
dWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5oCmluZGV4IGZhMDNi
ZDk3Njg2ODMxM2FhNjA0MzUxNGQ4YjAxYjJhYmM1OWI5ZTguLmFhNmQ3NDIyZWJlMTYxYTZiZjI1
OTFjNDgyZDI3MzViZTU5NjVkMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1ND
cm9zc2ZhZGVWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1
ZS5oCkBAIC00Myw3ICs0Myw3IEBAIGNsYXNzIERvY3VtZW50OwogY2xhc3MgQ1NTQ3Jvc3NmYWRl
VmFsdWUgOiBwdWJsaWMgQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZSB7CiAgICAgZnJpZW5kIGNsYXNz
IENyb3NzZmFkZVN1YmltYWdlT2JzZXJ2ZXJQcm94eTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVm
PENTU0Nyb3NzZmFkZVZhbHVlPiBjcmVhdGUoUGFzc1JlZlB0cjxDU1NWYWx1ZT4gZnJvbVZhbHVl
LCBQYXNzUmVmUHRyPENTU1ZhbHVlPiB0b1ZhbHVlKQorICAgIHN0YXRpYyBSZWY8Q1NTQ3Jvc3Nm
YWRlVmFsdWU+IGNyZWF0ZShSZWZQdHI8Q1NTVmFsdWU+IGZyb21WYWx1ZSwgUmVmUHRyPENTU1Zh
bHVlPiB0b1ZhbHVlKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTQ3Jv
c3NmYWRlVmFsdWUoZnJvbVZhbHVlLCB0b1ZhbHVlKSk7CiAgICAgfQpAQCAtNjEsNyArNjEsNyBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIGxvYWRTdWJpbWFnZXMoQ2FjaGVkUmVzb3VyY2VMb2FkZXIm
LCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmKTsKIAotICAgIHZvaWQgc2V0UGVyY2VudGFn
ZShQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBwZXJjZW50YWdlVmFsdWUpIHsgbV9wZXJj
ZW50YWdlVmFsdWUgPSBwZXJjZW50YWdlVmFsdWU7IH0KKyAgICB2b2lkIHNldFBlcmNlbnRhZ2Uo
UmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBwZXJjZW50YWdlVmFsdWUpIHsgbV9wZXJjZW50YWdl
VmFsdWUgPSBwZXJjZW50YWdlVmFsdWU7IH0KIAogICAgIGJvb2wgdHJhdmVyc2VTdWJyZXNvdXJj
ZXMoY29uc3Qgc3RkOjpmdW5jdGlvbjxib29sIChjb25zdCBDYWNoZWRSZXNvdXJjZSYpPiYgaGFu
ZGxlcikgY29uc3Q7CiAKQEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgogICAgIGJvb2wgZXF1YWxJ
bnB1dEltYWdlcyhjb25zdCBDU1NDcm9zc2ZhZGVWYWx1ZSYpIGNvbnN0OwogCiBwcml2YXRlOgot
ICAgIENTU0Nyb3NzZmFkZVZhbHVlKFBhc3NSZWZQdHI8Q1NTVmFsdWU+IGZyb21WYWx1ZSwgUGFz
c1JlZlB0cjxDU1NWYWx1ZT4gdG9WYWx1ZSkKKyAgICBDU1NDcm9zc2ZhZGVWYWx1ZShSZWZQdHI8
Q1NTVmFsdWU+IGZyb21WYWx1ZSwgUmVmUHRyPENTU1ZhbHVlPiB0b1ZhbHVlKQogICAgICAgICA6
IENTU0ltYWdlR2VuZXJhdG9yVmFsdWUoQ3Jvc3NmYWRlQ2xhc3MpCiAgICAgICAgICwgbV9mcm9t
VmFsdWUoZnJvbVZhbHVlKQogICAgICAgICAsIG1fdG9WYWx1ZSh0b1ZhbHVlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuaCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmgKaW5kZXggMTI5NzI0ZmRlMzVlNWRjYWFkNzU3
MmI4NTBlYmE0ZTA5MDBhY2EyYi4uYWMwNGQ4ZjFkMTZhYTI0OTAyYWQwYjBjZjYxZDBlMGU2Yjhk
YzYyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5oCkBAIC04MCw3
ICs4MCw3IEBAIHB1YmxpYzoKICAgICBDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UoKSBjb25zdCB7
IHJldHVybiBtX2NhY2hlZEltYWdlLmdldCgpOyB9CiAKIHByaXZhdGU6Ci0gICAgQ1NTRmlsdGVy
SW1hZ2VWYWx1ZShQYXNzUmVmUHRyPENTU1ZhbHVlPiBpbWFnZVZhbHVlLCBQYXNzUmVmUHRyPENT
U1ZhbHVlPiBmaWx0ZXJWYWx1ZSkKKyAgICBDU1NGaWx0ZXJJbWFnZVZhbHVlKFJlZlB0cjxDU1NW
YWx1ZT4gaW1hZ2VWYWx1ZSwgUmVmUHRyPENTU1ZhbHVlPiBmaWx0ZXJWYWx1ZSkKICAgICAgICAg
OiBDU1NJbWFnZUdlbmVyYXRvclZhbHVlKEZpbHRlckltYWdlQ2xhc3MpCiAgICAgICAgICwgbV9p
bWFnZVZhbHVlKGltYWdlVmFsdWUpCiAgICAgICAgICwgbV9maWx0ZXJWYWx1ZShmaWx0ZXJWYWx1
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5oIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlLmgKaW5kZXggOWViMDIxYTNmMzk2YjgxNDgyNmFkODky
YmYyNGZhOTA5NGQxZjgzZS4uZDA0ZDg3ZDZkZTkxYjk1NjA2MTdmOGVjODNhMjVjMzJiZGUwMWE0
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlLmgKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNsdWRl
IDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNl
dC5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NGb250RmFjZUxvYWRFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Rm9udEZhY2VMb2FkRXZlbnQuY3BwCmluZGV4IGMxODAxYmU4MGY3ZjY5YzU4YzFjZjA3MDAyMDhk
OTFkNjMxNWM0NWMuLmFhZjBkZjNhNTBiZDY0MTRkYmZlYWQ4ZmIxNmQ1MDgyYmFjOWU2MDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZUxvYWRFdmVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlTG9hZEV2ZW50LmNwcApAQCAtMzksNyAr
MzksNyBAQCBDU1NGb250RmFjZUxvYWRFdmVudDo6Q1NTRm9udEZhY2VMb2FkRXZlbnQoKQogewog
fQogCi1DU1NGb250RmFjZUxvYWRFdmVudDo6Q1NTRm9udEZhY2VMb2FkRXZlbnQoY29uc3QgQXRv
bWljU3RyaW5nJiB0eXBlLCBQYXNzUmVmUHRyPENTU0ZvbnRGYWNlUnVsZT4gZm9udGZhY2UsIFBh
c3NSZWZQdHI8RE9NRXJyb3I+IGVycm9yKQorQ1NTRm9udEZhY2VMb2FkRXZlbnQ6OkNTU0ZvbnRG
YWNlTG9hZEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgUmVmUHRyPENTU0ZvbnRGYWNl
UnVsZT4gZm9udGZhY2UsIFJlZlB0cjxET01FcnJvcj4gZXJyb3IpCiAgICAgOiBFdmVudCh0eXBl
LCBmYWxzZSwgZmFsc2UpCiAgICAgLCBtX2ZvbnRmYWNlKGZvbnRmYWNlKQogICAgICwgbV9lcnJv
cihlcnJvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZUxvYWRF
dmVudC5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlTG9hZEV2ZW50LmgKaW5kZXgg
Njk2YmFjNDQxZjdhYjdjZTI4Y2M2NTk0NTM0YTYxOWY2ZWJjNDhhOC4uNGNkYzc5MTY0MDA2OGY2
NDFlMmZkZGNmYTYzNGIzMmNmMjY2OGRhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ZvbnRGYWNlTG9hZEV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRG
YWNlTG9hZEV2ZW50LmgKQEAgLTM4LDcgKzM4LDYgQEAKICNpbmNsdWRlICJET01FcnJvci5oIgog
I2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgotI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CkBAIC02MCwxMiArNTksMTIgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRS
ZWY8Q1NTRm9udEZhY2VMb2FkRXZlbnQ+KCpuZXcgQ1NTRm9udEZhY2VMb2FkRXZlbnQodHlwZSwg
aW5pdGlhbGl6ZXIpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgUmVmPENTU0ZvbnRGYWNlTG9hZEV2
ZW50PiBjcmVhdGVGb3JGb250RmFjZVJ1bGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBQYXNz
UmVmUHRyPENTU0ZvbnRGYWNlUnVsZT4gcnVsZSkKKyAgICBzdGF0aWMgUmVmPENTU0ZvbnRGYWNl
TG9hZEV2ZW50PiBjcmVhdGVGb3JGb250RmFjZVJ1bGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBl
LCBSZWZQdHI8Q1NTRm9udEZhY2VSdWxlPiBydWxlKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFk
b3B0UmVmPENTU0ZvbnRGYWNlTG9hZEV2ZW50PigqbmV3IENTU0ZvbnRGYWNlTG9hZEV2ZW50KHR5
cGUsIHJ1bGUsIDApKTsKICAgICB9CiAKLSAgICBzdGF0aWMgUmVmPENTU0ZvbnRGYWNlTG9hZEV2
ZW50PiBjcmVhdGVGb3JFcnJvcihQYXNzUmVmUHRyPENTU0ZvbnRGYWNlUnVsZT4gcnVsZSwgUGFz
c1JlZlB0cjxET01FcnJvcj4gZXJyb3IpCisgICAgc3RhdGljIFJlZjxDU1NGb250RmFjZUxvYWRF
dmVudD4gY3JlYXRlRm9yRXJyb3IoUmVmUHRyPENTU0ZvbnRGYWNlUnVsZT4gcnVsZSwgUmVmUHRy
PERPTUVycm9yPiBlcnJvcikKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZjxDU1NGb250
RmFjZUxvYWRFdmVudD4oKm5ldyBDU1NGb250RmFjZUxvYWRFdmVudChldmVudE5hbWVzKCkuZXJy
b3JFdmVudCwgcnVsZSwgZXJyb3IpKTsKICAgICB9CkBAIC03OSw3ICs3OCw3IEBAIHB1YmxpYzoK
IAogcHJpdmF0ZToKICAgICBDU1NGb250RmFjZUxvYWRFdmVudCgpOwotICAgIENTU0ZvbnRGYWNl
TG9hZEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYsIFBhc3NSZWZQdHI8Q1NTRm9udEZhY2VSdWxl
PiwgUGFzc1JlZlB0cjxET01FcnJvcj4pOworICAgIENTU0ZvbnRGYWNlTG9hZEV2ZW50KGNvbnN0
IEF0b21pY1N0cmluZyYsIFJlZlB0cjxDU1NGb250RmFjZVJ1bGU+LCBSZWZQdHI8RE9NRXJyb3I+
KTsKICAgICBDU1NGb250RmFjZUxvYWRFdmVudChjb25zdCBBdG9taWNTdHJpbmcmLCBjb25zdCBD
U1NGb250RmFjZUxvYWRFdmVudEluaXQmKTsKIAogICAgIFJlZlB0cjxDU1NGb250RmFjZVJ1bGU+
IG1fZm9udGZhY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VT
b3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5oCmluZGV4IGEy
NjA0MTM0NDMxYjYyZTcxNGQ3NDg3YTVlNTFjNTk3YWFiN2NiZGYuLjdiNmQyODRjY2UwODAzYWIz
MWI1NzU1ZjU0MDU4OTI3NmU2ODEyYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NGb250RmFjZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNv
dXJjZS5oCkBAIC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShTVkdfRk9OVFMp
CiAgICAgU1ZHRm9udEZhY2VFbGVtZW50KiBzdmdGb250RmFjZUVsZW1lbnQoKSBjb25zdCB7IHJl
dHVybiBtX3N2Z0ZvbnRGYWNlRWxlbWVudC5nZXQoKTsgfQotICAgIHZvaWQgc2V0U1ZHRm9udEZh
Y2VFbGVtZW50KFBhc3NSZWZQdHI8U1ZHRm9udEZhY2VFbGVtZW50PiBlbGVtZW50KSB7IG1fc3Zn
Rm9udEZhY2VFbGVtZW50ID0gZWxlbWVudDsgfQorICAgIHZvaWQgc2V0U1ZHRm9udEZhY2VFbGVt
ZW50KFJlZlB0cjxTVkdGb250RmFjZUVsZW1lbnQ+IGVsZW1lbnQpIHsgbV9zdmdGb250RmFjZUVs
ZW1lbnQgPSBlbGVtZW50OyB9CiAgICAgYm9vbCBpc1NWR0ZvbnRGYWNlU291cmNlKCkgY29uc3Qg
eyByZXR1cm4gbV9zdmdGb250RmFjZUVsZW1lbnQgfHwgbV9oYXNFeHRlcm5hbFNWR0ZvbnQ7IH0K
ICAgICB2b2lkIHNldEhhc0V4dGVybmFsU1ZHRm9udCgpIHsgbV9oYXNFeHRlcm5hbFNWR0ZvbnQg
PSB0cnVlOyB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250
RmFjZVNyY1ZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5o
CmluZGV4IGMzODZhZmViOGZmNjUxMjFhMDBlZWY2NGNiNzZkOWQyZjY3MmE5YTAuLmYzYWFmZjkz
YWE2YTM2MWJlYmM1OTI1ZGFkMTZmYzJjY2JkNjEzYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0ZvbnRGYWNlU3JjVmFsdWUuaApAQCAtMjgsNyArMjgsNiBAQAogCiAjaW5jbHVkZSAiQ1NTVmFs
dWUuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5oIgotI2luY2x1ZGUgPHd0Zi9Q
YXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0
b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAKaW5kZXggMjAy
Y2ZjMDk1YTY3ZThlNmE1MmU1MDc4NTliNzBmMmM5Mzk5YjhkZi4uMmQwZmRhMjFiNTZmNjUxNGE0
NzliMzQ5MTYzYWNhMTUzNmYwNTlhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0ZvbnRTZWxlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rv
ci5jcHAKQEAgLTYxNiw3ICs2MTYsNyBAQCBzaXplX3QgQ1NTRm9udFNlbGVjdG9yOjpmYWxsYmFj
a0ZvbnRDb3VudCgpCiAgICAgcmV0dXJuIDA7CiB9CiAKLVBhc3NSZWZQdHI8Rm9udD4gQ1NTRm9u
dFNlbGVjdG9yOjpmYWxsYmFja0ZvbnRBdChjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNj
cmlwdGlvbiwgc2l6ZV90IGluZGV4KQorUmVmUHRyPEZvbnQ+IENTU0ZvbnRTZWxlY3Rvcjo6ZmFs
bGJhY2tGb250QXQoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24sIHNpemVf
dCBpbmRleCkKIHsKICAgICBBU1NFUlRfVU5VU0VEKGluZGV4LCAhaW5kZXgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmggYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmgKaW5kZXggNDdlYTY0MGNlMTI0ZGZjYjFlYmZlNTJkZTdi
ZTYxZDMwMWYzMDhiNC4uMjA4M2U3MGZjZjdkZjg5NzM0M2VlOGMzODQ0ZGQ2MzZiYTc2ZGNmYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuaApAQCAtNjAsNyArNjAsNyBAQCBwdWJs
aWM6CiAKICAgICB2aXJ0dWFsIEZvbnRSYW5nZXMgZm9udFJhbmdlc0ZvckZhbWlseShjb25zdCBG
b250RGVzY3JpcHRpb24mLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2aXJ0
dWFsIHNpemVfdCBmYWxsYmFja0ZvbnRDb3VudCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxGb250PiBmYWxsYmFja0ZvbnRBdChjb25zdCBGb250RGVzY3JpcHRpb24mLCBzaXpl
X3QpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVmUHRyPEZvbnQ+IGZhbGxiYWNrRm9udEF0KGNv
bnN0IEZvbnREZXNjcmlwdGlvbiYsIHNpemVfdCkgb3ZlcnJpZGU7CiAgICAgQ1NTU2VnbWVudGVk
Rm9udEZhY2UqIGdldEZvbnRGYWNlKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGNvbnN0IEF0b21p
Y1N0cmluZyYgZmFtaWx5KTsKIAogICAgIHZpcnR1YWwgYm9vbCByZXNvbHZlc0ZhbWlseUZvcihj
b25zdCBGb250RGVzY3JpcHRpb24mKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NGb250VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250
VmFsdWUuaAppbmRleCA1MjBhNDdmZWY1NTc2NTEyOGNmNzZhMTNjNDYxYmZjOGU5MTgyYTMyLi5k
ODM1YTg4ZjMyMzFhZGY3MTgyN2Y3MmZkYmE0YWJhOThjOTFjZmFhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTRm9udFZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0ZvbnRWYWx1ZS5oCkBAIC0yMiw3ICsyMiw2IEBACiAjZGVmaW5lIENTU0ZvbnRWYWx1ZV9oCiAK
ICNpbmNsdWRlICJDU1NWYWx1ZS5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTRnVuY3Rpb25WYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTRnVuY3Rpb25WYWx1ZS5jcHAKaW5kZXggYTJiNzkwMjNmYjQ0NmMzM2Y4NDQ0OGU4NWZh
NTYzNGNlNzlhYjVmMi4uYTA0ZGVjZTNkZWRiZDNiNWE5YzE2MGZmY2FhMTg2YWZjMTA5NDI0ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Z1bmN0aW9uVmFsdWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGdW5jdGlvblZhbHVlLmNwcApAQCAtNDAsNyArNDAsNyBA
QCBDU1NGdW5jdGlvblZhbHVlOjpDU1NGdW5jdGlvblZhbHVlKENTU1BhcnNlckZ1bmN0aW9uKiBm
dW5jdGlvbikKICAgICAgICAgbV9hcmdzID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVGcm9tUGFyc2Vy
VmFsdWVMaXN0KCpmdW5jdGlvbi0+YXJncyk7CiB9CiAKLUNTU0Z1bmN0aW9uVmFsdWU6OkNTU0Z1
bmN0aW9uVmFsdWUoY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPENTU1ZhbHVlTGlzdD4g
YXJncykKK0NTU0Z1bmN0aW9uVmFsdWU6OkNTU0Z1bmN0aW9uVmFsdWUoY29uc3QgU3RyaW5nJiBu
YW1lLCBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBhcmdzKQogICAgIDogQ1NTVmFsdWUoRnVuY3Rpb25D
bGFzcykKICAgICAsIG1fbmFtZShuYW1lKQogICAgICwgbV9hcmdzKGFyZ3MpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRnVuY3Rpb25WYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0Z1bmN0aW9uVmFsdWUuaAppbmRleCA1Nzc0YzUzYjk1MTg3YWU5NWQ3MmJhYzliZDM1
YTY0NDg4ZmI5OTA5Li4xOGJhMDIzYzkyMGU3ODMxZWE0MzQ2M2NmYTczNTM1YzJmNTkwMTMzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRnVuY3Rpb25WYWx1ZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NGdW5jdGlvblZhbHVlLmgKQEAgLTQwLDcgKzQwLDcgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NGdW5jdGlvblZhbHVlKGZ1bmN0
aW9uKSk7CiAgICAgfQogCi0gICAgc3RhdGljIFJlZjxDU1NGdW5jdGlvblZhbHVlPiBjcmVhdGUo
Y29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPENTU1ZhbHVlTGlzdD4gYXJncykKKyAgICBz
dGF0aWMgUmVmPENTU0Z1bmN0aW9uVmFsdWU+IGNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIFJl
ZlB0cjxDU1NWYWx1ZUxpc3Q+IGFyZ3MpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBDU1NGdW5jdGlvblZhbHVlKG5hbWUsIGFyZ3MpKTsKICAgICB9CkBAIC01Myw3ICs1Myw3
IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBDU1NGdW5jdGlvblZhbHVlKENT
U1BhcnNlckZ1bmN0aW9uKik7Ci0gICAgQ1NTRnVuY3Rpb25WYWx1ZShjb25zdCBTdHJpbmcmLCBQ
YXNzUmVmUHRyPENTU1ZhbHVlTGlzdD4pOworICAgIENTU0Z1bmN0aW9uVmFsdWUoY29uc3QgU3Ry
aW5nJiwgUmVmUHRyPENTU1ZhbHVlTGlzdD4pOwogCiAgICAgU3RyaW5nIG1fbmFtZTsKICAgICBS
ZWZQdHI8Q1NTVmFsdWVMaXN0PiBtX2FyZ3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTR3JhZGllbnRWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFs
dWUuaAppbmRleCAzYWQ3MDY1ZTNkNWEzODUzZmEyMmUwYzdiYjVlMzFiY2E0ODUzOWZkLi41YzFj
MWZhOGQwM2I3YTIzMzhlZTE4NDdhYzU0NDA4ODE3YzQ4MTM5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NHcmFkaWVudFZhbHVlLmgKQEAgLTY0LDEwICs2NCwxMCBAQCBjbGFzcyBDU1NHcmFkaWVudFZh
bHVlIDogcHVibGljIENTU0ltYWdlR2VuZXJhdG9yVmFsdWUgewogcHVibGljOgogICAgIFJlZlB0
cjxJbWFnZT4gaW1hZ2UoUmVuZGVyRWxlbWVudCosIGNvbnN0IEZsb2F0U2l6ZSYpOwogCi0gICAg
dm9pZCBzZXRGaXJzdFgoUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gdmFsKSB7IG1fZmly
c3RYID0gdmFsOyB9Ci0gICAgdm9pZCBzZXRGaXJzdFkoUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVW
YWx1ZT4gdmFsKSB7IG1fZmlyc3RZID0gdmFsOyB9Ci0gICAgdm9pZCBzZXRTZWNvbmRYKFBhc3NS
ZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHZhbCkgeyBtX3NlY29uZFggPSB2YWw7IH0KLSAgICB2
b2lkIHNldFNlY29uZFkoUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gdmFsKSB7IG1fc2Vj
b25kWSA9IHZhbDsgfQorICAgIHZvaWQgc2V0Rmlyc3RYKFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1
ZT4gdmFsKSB7IG1fZmlyc3RYID0gdmFsOyB9CisgICAgdm9pZCBzZXRGaXJzdFkoUmVmUHRyPENT
U1ByaW1pdGl2ZVZhbHVlPiB2YWwpIHsgbV9maXJzdFkgPSB2YWw7IH0KKyAgICB2b2lkIHNldFNl
Y29uZFgoUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiB2YWwpIHsgbV9zZWNvbmRYID0gdmFsOyB9
CisgICAgdm9pZCBzZXRTZWNvbmRZKFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gdmFsKSB7IG1f
c2Vjb25kWSA9IHZhbDsgfQogCiAgICAgdm9pZCBhZGRTdG9wKGNvbnN0IENTU0dyYWRpZW50Q29s
b3JTdG9wJiBzdG9wKSB7IG1fc3RvcHMuYXBwZW5kKHN0b3ApOyB9CiAKQEAgLTEzOSw3ICsxMzks
NyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU0xpbmVhckdyYWRp
ZW50VmFsdWUocmVwZWF0LCBncmFkaWVudFR5cGUpKTsKICAgICB9CiAKLSAgICB2b2lkIHNldEFu
Z2xlKFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHZhbCkgeyBtX2FuZ2xlID0gdmFsOyB9
CisgICAgdm9pZCBzZXRBbmdsZShSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHZhbCkgeyBtX2Fu
Z2xlID0gdmFsOyB9CiAKICAgICBTdHJpbmcgY3VzdG9tQ1NTVGV4dCgpIGNvbnN0OwogCkBAIC0x
ODIsMTQgKzE4MiwxNCBAQCBwdWJsaWM6CiAKICAgICBTdHJpbmcgY3VzdG9tQ1NTVGV4dCgpIGNv
bnN0OwogCi0gICAgdm9pZCBzZXRGaXJzdFJhZGl1cyhQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZh
bHVlPiB2YWwpIHsgbV9maXJzdFJhZGl1cyA9IHZhbDsgfQotICAgIHZvaWQgc2V0U2Vjb25kUmFk
aXVzKFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHZhbCkgeyBtX3NlY29uZFJhZGl1cyA9
IHZhbDsgfQorICAgIHZvaWQgc2V0Rmlyc3RSYWRpdXMoUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVl
PiB2YWwpIHsgbV9maXJzdFJhZGl1cyA9IHZhbDsgfQorICAgIHZvaWQgc2V0U2Vjb25kUmFkaXVz
KFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gdmFsKSB7IG1fc2Vjb25kUmFkaXVzID0gdmFsOyB9
CiAKLSAgICB2b2lkIHNldFNoYXBlKFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHZhbCkg
eyBtX3NoYXBlID0gdmFsOyB9Ci0gICAgdm9pZCBzZXRTaXppbmdCZWhhdmlvcihQYXNzUmVmUHRy
PENTU1ByaW1pdGl2ZVZhbHVlPiB2YWwpIHsgbV9zaXppbmdCZWhhdmlvciA9IHZhbDsgfQorICAg
IHZvaWQgc2V0U2hhcGUoUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiB2YWwpIHsgbV9zaGFwZSA9
IHZhbDsgfQorICAgIHZvaWQgc2V0U2l6aW5nQmVoYXZpb3IoUmVmUHRyPENTU1ByaW1pdGl2ZVZh
bHVlPiB2YWwpIHsgbV9zaXppbmdCZWhhdmlvciA9IHZhbDsgfQogCi0gICAgdm9pZCBzZXRFbmRI
b3Jpem9udGFsU2l6ZShQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiB2YWwpIHsgbV9lbmRI
b3Jpem9udGFsU2l6ZSA9IHZhbDsgfQotICAgIHZvaWQgc2V0RW5kVmVydGljYWxTaXplKFBhc3NS
ZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHZhbCkgeyBtX2VuZFZlcnRpY2FsU2l6ZSA9IHZhbDsg
fQorICAgIHZvaWQgc2V0RW5kSG9yaXpvbnRhbFNpemUoUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVl
PiB2YWwpIHsgbV9lbmRIb3Jpem9udGFsU2l6ZSA9IHZhbDsgfQorICAgIHZvaWQgc2V0RW5kVmVy
dGljYWxTaXplKFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gdmFsKSB7IG1fZW5kVmVydGljYWxT
aXplID0gdmFsOyB9CiAKICAgICAvLyBDcmVhdGUgdGhlIGdyYWRpZW50IGZvciBhIGdpdmVuIHNp
emUuCiAgICAgUmVmPEdyYWRpZW50PiBjcmVhdGVHcmFkaWVudChSZW5kZXJFbGVtZW50JiwgY29u
c3QgRmxvYXRTaXplJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JpZExp
bmVOYW1lc1ZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JpZExpbmVOYW1lc1ZhbHVl
LmgKaW5kZXggMmZkZGJmODk2Yzc4NWNjMTEzNDdiM2Q3YzMwOWQwOGY1OTQ2ZTVlMy4uZjhjNmM5
NTFiMjY3NTRhYTZiMzEwNGQxMTJkZTNhYWNkMDg5OGZhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0dyaWRMaW5lTmFtZXNWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NHcmlkTGluZU5hbWVzVmFsdWUuaApAQCAtMzMsNyArMzMsNiBAQAogCiAjaWYgRU5BQkxF
KENTU19HUklEX0xBWU9VVCkKICNpbmNsdWRlICJDU1NWYWx1ZUxpc3QuaCIKLSNpbmNsdWRlIDx3
dGYvUGFzc1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmNwcAppbmRleCBmZTQwMGMxNmI0OTY3Nzcz
ZmJmYjdlNmJiMzNmN2FhZjJiOTliMGY4Li41ZTg0NDVmZWE5NDM2YjYyMTRkMDljNDNhOTM3NzFh
OTI2ZDUzYzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0
b3JWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFs
dWUuY3BwCkBAIC03OSw3ICs3OSw3IEBAIEdlbmVyYXRlZEltYWdlKiBDU1NJbWFnZUdlbmVyYXRv
clZhbHVlOjpjYWNoZWRJbWFnZUZvclNpemUoRmxvYXRTaXplIHNpemUpCiAgICAgcmV0dXJuIGNh
Y2hlZEdlbmVyYXRlZEltYWdlLT5pbWFnZSgpOwogfQogCi12b2lkIENTU0ltYWdlR2VuZXJhdG9y
VmFsdWU6OnNhdmVDYWNoZWRJbWFnZUZvclNpemUoRmxvYXRTaXplIHNpemUsIFBhc3NSZWZQdHI8
R2VuZXJhdGVkSW1hZ2U+IGltYWdlKQordm9pZCBDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjpzYXZl
Q2FjaGVkSW1hZ2VGb3JTaXplKEZsb2F0U2l6ZSBzaXplLCBSZWZQdHI8R2VuZXJhdGVkSW1hZ2U+
IGltYWdlKQogewogICAgIEFTU0VSVCghbV9pbWFnZXMuY29udGFpbnMoc2l6ZSkpOwogICAgIG1f
aW1hZ2VzLmFkZChzaXplLCBzdGQ6Om1ha2VfdW5pcXVlPENhY2hlZEdlbmVyYXRlZEltYWdlPigq
dGhpcywgc2l6ZSwgaW1hZ2UpKTsKQEAgLTkxLDcgKzkxLDcgQEAgdm9pZCBDU1NJbWFnZUdlbmVy
YXRvclZhbHVlOjpldmljdENhY2hlZEdlbmVyYXRlZEltYWdlKEZsb2F0U2l6ZSBzaXplKQogICAg
IG1faW1hZ2VzLnJlbW92ZShzaXplKTsKIH0KIAotQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6Q2Fj
aGVkR2VuZXJhdGVkSW1hZ2U6OkNhY2hlZEdlbmVyYXRlZEltYWdlKENTU0ltYWdlR2VuZXJhdG9y
VmFsdWUmIG93bmVyLCBGbG9hdFNpemUgc2l6ZSwgUGFzc1JlZlB0cjxHZW5lcmF0ZWRJbWFnZT4g
aW1hZ2UpCitDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjpDYWNoZWRHZW5lcmF0ZWRJbWFnZTo6Q2Fj
aGVkR2VuZXJhdGVkSW1hZ2UoQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZSYgb3duZXIsIEZsb2F0U2l6
ZSBzaXplLCBSZWZQdHI8R2VuZXJhdGVkSW1hZ2U+IGltYWdlKQogICAgIDogbV9vd25lcihvd25l
cikKICAgICAsIG1fc2l6ZShzaXplKQogICAgICwgbV9pbWFnZShpbWFnZSkKQEAgLTEwNiw3ICsx
MDYsNyBAQCB2b2lkIENTU0ltYWdlR2VuZXJhdG9yVmFsdWU6OkNhY2hlZEdlbmVyYXRlZEltYWdl
OjpldmljdGlvblRpbWVyRmlyZWQoKQogICAgIG1fb3duZXIuZXZpY3RDYWNoZWRHZW5lcmF0ZWRJ
bWFnZShtX3NpemUpOwogfQogCi1QYXNzUmVmUHRyPEltYWdlPiBDU1NJbWFnZUdlbmVyYXRvclZh
bHVlOjppbWFnZShSZW5kZXJFbGVtZW50KiByZW5kZXJlciwgY29uc3QgRmxvYXRTaXplJiBzaXpl
KQorUmVmUHRyPEltYWdlPiBDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjppbWFnZShSZW5kZXJFbGVt
ZW50KiByZW5kZXJlciwgY29uc3QgRmxvYXRTaXplJiBzaXplKQogewogICAgIHN3aXRjaCAoY2xh
c3NUeXBlKCkpIHsKICAgICBjYXNlIENhbnZhc0NsYXNzOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NJbWFnZUdlbmVyYXRvclZhbHVlLmgKaW5kZXggYzliNTU2Y2RhMDdjNTcxZWFkMTdkOTEwNWMx
ODc0ODc4ODk2OGRhMS4uY2FlOTFiNGQ3MTFmY2NmYTE3YTUwMmU0N2U2YTU2NWM2ZmQ4OWUxZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5oCkBAIC00OSw3
ICs0OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZENsaWVudChSZW5kZXJFbGVtZW50Kik7CiAg
ICAgdm9pZCByZW1vdmVDbGllbnQoUmVuZGVyRWxlbWVudCopOwogCi0gICAgUGFzc1JlZlB0cjxJ
bWFnZT4gaW1hZ2UoUmVuZGVyRWxlbWVudCosIGNvbnN0IEZsb2F0U2l6ZSYpOworICAgIFJlZlB0
cjxJbWFnZT4gaW1hZ2UoUmVuZGVyRWxlbWVudCosIGNvbnN0IEZsb2F0U2l6ZSYpOwogCiAgICAg
Ym9vbCBpc0ZpeGVkU2l6ZSgpIGNvbnN0OwogICAgIEZsb2F0U2l6ZSBmaXhlZFNpemUoY29uc3Qg
UmVuZGVyRWxlbWVudCopOwpAQCAtNjMsNyArNjMsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgQ1NTSW1h
Z2VHZW5lcmF0b3JWYWx1ZShDbGFzc1R5cGUpOwogCiAgICAgR2VuZXJhdGVkSW1hZ2UqIGNhY2hl
ZEltYWdlRm9yU2l6ZShGbG9hdFNpemUpOwotICAgIHZvaWQgc2F2ZUNhY2hlZEltYWdlRm9yU2l6
ZShGbG9hdFNpemUsIFBhc3NSZWZQdHI8R2VuZXJhdGVkSW1hZ2U+KTsKKyAgICB2b2lkIHNhdmVD
YWNoZWRJbWFnZUZvclNpemUoRmxvYXRTaXplLCBSZWZQdHI8R2VuZXJhdGVkSW1hZ2U+KTsKICAg
ICBjb25zdCBIYXNoQ291bnRlZFNldDxSZW5kZXJFbGVtZW50Kj4mIGNsaWVudHMoKSBjb25zdCB7
IHJldHVybiBtX2NsaWVudHM7IH0KIAogICAgIC8vIEhlbHBlciBmdW5jdGlvbnMgZm9yIENyb3Nz
ZmFkZSBhbmQgRmlsdGVyLgpAQCAtNzMsNyArNzMsNyBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgog
ICAgIGNsYXNzIENhY2hlZEdlbmVyYXRlZEltYWdlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIENh
Y2hlZEdlbmVyYXRlZEltYWdlKENTU0ltYWdlR2VuZXJhdG9yVmFsdWUmLCBGbG9hdFNpemUsIFBh
c3NSZWZQdHI8R2VuZXJhdGVkSW1hZ2U+KTsKKyAgICAgICAgQ2FjaGVkR2VuZXJhdGVkSW1hZ2Uo
Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZSYsIEZsb2F0U2l6ZSwgUmVmUHRyPEdlbmVyYXRlZEltYWdl
Pik7CiAgICAgICAgIEdlbmVyYXRlZEltYWdlKiBpbWFnZSgpIHsgcmV0dXJuIG1faW1hZ2UuZ2V0
KCk7IH0KICAgICAgICAgdm9pZCBwdW50RXZpY3Rpb25UaW1lcigpIHsgbV9ldmljdGlvblRpbWVy
LnJlc3RhcnQoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW5oZXJp
dGVkVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbmhlcml0ZWRWYWx1ZS5oCmluZGV4
IDhhNjM3NjViNTNiYTc3MjdmOGQ1NjZmNTFkYzA0YTE2NDczZjNhNzguLjg1NzA0MWJiZTUyZDYw
ZjZmNTY3NWE4YjgyYzhhMDdiMzQxM2ZlYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NJbmhlcml0ZWRWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbmhlcml0
ZWRWYWx1ZS5oCkBAIC0yMiw3ICsyMiw2IEBACiAjZGVmaW5lIENTU0luaGVyaXRlZFZhbHVlX2gK
IAogI2luY2x1ZGUgIkNTU1ZhbHVlLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
SW5pdGlhbFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW5pdGlhbFZhbHVlLmgKaW5k
ZXggYTcxMWFkZjFmZGZmOTEzYjgxOGZhNjhhNGU1ZTRmOTNiMDM4NTkyOC4uOGZiYWI5Zjg1NTQ4
NjU4NTRiOWMyYTllOGFhMGVjNDU3NTQxYjUzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0luaXRpYWxWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbml0aWFs
VmFsdWUuaApAQCAtMjIsNyArMjIsNiBAQAogI2RlZmluZSBDU1NJbml0aWFsVmFsdWVfaAogCiAj
aW5jbHVkZSAiQ1NTVmFsdWUuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NLZXlm
cmFtZXNSdWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NLZXlmcmFtZXNSdWxlLmNwcApp
bmRleCAwOTUyMzI2MjA2YWVhZjY3YmIzMjhiZWVmMjI3MGRjMjEyMWI3OGNkLi42NzU4OTFhYjU3
M2FlZjEwY2QzMTFhZDU1ZjIwYWEyOTA1Y2ZiZDc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTS2V5ZnJhbWVzUnVsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0tl
eWZyYW1lc1J1bGUuY3BwCkBAIC01MywxNCArNTMsMTQgQEAgU3R5bGVSdWxlS2V5ZnJhbWVzOjp+
U3R5bGVSdWxlS2V5ZnJhbWVzKCkKIHsKIH0KIAotdm9pZCBTdHlsZVJ1bGVLZXlmcmFtZXM6OnBh
cnNlckFwcGVuZEtleWZyYW1lKFBhc3NSZWZQdHI8U3R5bGVLZXlmcmFtZT4ga2V5ZnJhbWUpCit2
b2lkIFN0eWxlUnVsZUtleWZyYW1lczo6cGFyc2VyQXBwZW5kS2V5ZnJhbWUoUmVmUHRyPFN0eWxl
S2V5ZnJhbWU+IGtleWZyYW1lKQogewogICAgIGlmICgha2V5ZnJhbWUpCiAgICAgICAgIHJldHVy
bjsKICAgICBtX2tleWZyYW1lcy5hcHBlbmQoa2V5ZnJhbWUpOwogfQogCi12b2lkIFN0eWxlUnVs
ZUtleWZyYW1lczo6d3JhcHBlckFwcGVuZEtleWZyYW1lKFBhc3NSZWZQdHI8U3R5bGVLZXlmcmFt
ZT4ga2V5ZnJhbWUpCit2b2lkIFN0eWxlUnVsZUtleWZyYW1lczo6d3JhcHBlckFwcGVuZEtleWZy
YW1lKFJlZlB0cjxTdHlsZUtleWZyYW1lPiBrZXlmcmFtZSkKIHsKICAgICBtX2tleWZyYW1lcy5h
cHBlbmQoa2V5ZnJhbWUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0tl
eWZyYW1lc1J1bGUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NLZXlmcmFtZXNSdWxlLmgKaW5k
ZXggODY1YmJlZDBjMzAxNzM4NzVmOTMxZTAzMmM3MGZjMjcwNzc1MWQ2MC4uYzc0OGViM2Y0ZmI1
YTZlZGI2NTE4MzIwNjU1YjExYzNhNWRiYjc0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0tleWZyYW1lc1J1bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTS2V5ZnJh
bWVzUnVsZS5oCkBAIC00Niw4ICs0Niw4IEBAIHB1YmxpYzoKICAgICAKICAgICBjb25zdCBWZWN0
b3I8UmVmUHRyPFN0eWxlS2V5ZnJhbWU+PiYga2V5ZnJhbWVzKCkgY29uc3QgeyByZXR1cm4gbV9r
ZXlmcmFtZXM7IH0KICAgICAKLSAgICB2b2lkIHBhcnNlckFwcGVuZEtleWZyYW1lKFBhc3NSZWZQ
dHI8U3R5bGVLZXlmcmFtZT4pOwotICAgIHZvaWQgd3JhcHBlckFwcGVuZEtleWZyYW1lKFBhc3NS
ZWZQdHI8U3R5bGVLZXlmcmFtZT4pOworICAgIHZvaWQgcGFyc2VyQXBwZW5kS2V5ZnJhbWUoUmVm
UHRyPFN0eWxlS2V5ZnJhbWU+KTsKKyAgICB2b2lkIHdyYXBwZXJBcHBlbmRLZXlmcmFtZShSZWZQ
dHI8U3R5bGVLZXlmcmFtZT4pOwogICAgIHZvaWQgd3JhcHBlclJlbW92ZUtleWZyYW1lKHVuc2ln
bmVkKTsKIAogICAgIFN0cmluZyBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9ICAgIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0xpbmVCb3hDb250YWluVmFsdWUuaCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NMaW5lQm94Q29udGFpblZhbHVlLmgKaW5kZXggMTYwMTYy
MzI1NGM1ZGIzN2U3ZGI3YTgwNjBlMmYzZTk0Mjk3Nzg3Ny4uZWM1M2RhMjQ5MmUyMTJkMWI0MTI1
N2FjYjU4NDEyNDA2NWQxZGIwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0xp
bmVCb3hDb250YWluVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTGluZUJveENv
bnRhaW5WYWx1ZS5oCkBAIC0yNyw3ICsyNyw2IEBACiAjZGVmaW5lIENTU0xpbmVCb3hDb250YWlu
VmFsdWVfaAogCiAjaW5jbHVkZSAiQ1NTVmFsdWUuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU05hbWVkSW1hZ2VWYWx1ZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTTmFtZWRJbWFnZVZhbHVlLmNwcAppbmRleCAxYWRkNTQ2ZjUzYzcz
ZjVkNWY4ZDMxNDdlMWE0NzY3YWJiY2RjNGViLi4wNDY3YmYxOTcxYWI0NzRhZDhmZDE1MzAyYzVk
NmFjZDJlOGE2MmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTmFtZWRJbWFn
ZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTmFtZWRJbWFnZVZhbHVlLmNw
cApAQCAtMzYsMTQgKzM2LDE0IEBAIFN0cmluZyBDU1NOYW1lZEltYWdlVmFsdWU6OmN1c3RvbUNT
U1RleHQoKSBjb25zdAogICAgIHJldHVybiBtYWtlU3RyaW5nKCItd2Via2l0LW5hbWVkLWltYWdl
KCIsIG1fbmFtZSwgJyknKTsKIH0KIAotUGFzc1JlZlB0cjxJbWFnZT4gQ1NTTmFtZWRJbWFnZVZh
bHVlOjppbWFnZShSZW5kZXJFbGVtZW50KiwgY29uc3QgRmxvYXRTaXplJiBzaXplKQorUmVmUHRy
PEltYWdlPiBDU1NOYW1lZEltYWdlVmFsdWU6OmltYWdlKFJlbmRlckVsZW1lbnQqLCBjb25zdCBG
bG9hdFNpemUmIHNpemUpCiB7CiAgICAgaWYgKHNpemUuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAogICAgIG1fZ2VuZXJhdGVkSW1hZ2UgPSBOYW1lZEltYWdlR2VuZXJhdGVk
SW1hZ2U6OmNyZWF0ZShtX25hbWUsIHNpemUpOwogCi0gICAgcmV0dXJuIG1fZ2VuZXJhdGVkSW1h
Z2UucmVsZWFzZSgpOworICAgIHJldHVybiBtX2dlbmVyYXRlZEltYWdlOwogfQogCiBib29sIENT
U05hbWVkSW1hZ2VWYWx1ZTo6ZXF1YWxzKGNvbnN0IENTU05hbWVkSW1hZ2VWYWx1ZSYgb3RoZXIp
IGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTmFtZWRJbWFnZVZhbHVl
LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTmFtZWRJbWFnZVZhbHVlLmgKaW5kZXggZjFjZGFh
NjMzODVkYThjNDY2YzJhNjg1MzczNzVmMWZlNzg1NmZiYi4uZjZhMzI3MDUyYjg2YTE2N2MwYjY0
MTA5YjBhMjgzYTA1MjZiMjFhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU05h
bWVkSW1hZ2VWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NOYW1lZEltYWdlVmFs
dWUuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0ZpeGVkU2l6ZSgpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBpc1BlbmRpbmcoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQogCi0gICAgUGFzc1JlZlB0cjxJbWFnZT4gaW1hZ2UoUmVuZGVyRWxlbWVudCos
IGNvbnN0IEZsb2F0U2l6ZSYpOworICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UoUmVuZGVyRWxlbWVu
dCosIGNvbnN0IEZsb2F0U2l6ZSYpOwogCiAgICAgYm9vbCBlcXVhbHMoY29uc3QgQ1NTTmFtZWRJ
bWFnZVZhbHVlJikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
YXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKaW5kZXggNzAyNzFm
YzhkMjdjNjU4OTNjNTdiMDE3MjcxNDJlNTJmOGMyMDYzNC4uMDE2NTk2NWRlZTBkY2Y5YjYyMmVk
YWUwZjQxM2ZkZmYwMDhiZWQ5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Bh
cnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKQEAgLTE0NDks
NyArMTQ0OSw3IEBAIFJlZjxJbW11dGFibGVTdHlsZVByb3BlcnRpZXM+IENTU1BhcnNlcjo6cGFy
c2VEZWNsYXJhdGlvbihjb25zdCBTdHJpbmcmIHN0cmluZywKIH0KIAogCi1ib29sIENTU1BhcnNl
cjo6cGFyc2VEZWNsYXJhdGlvbihNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzKiBkZWNsYXJhdGlvbiwg
Y29uc3QgU3RyaW5nJiBzdHJpbmcsIFBhc3NSZWZQdHI8Q1NTUnVsZVNvdXJjZURhdGE+IHBycFJ1
bGVTb3VyY2VEYXRhLCBTdHlsZVNoZWV0Q29udGVudHMqIGNvbnRleHRTdHlsZVNoZWV0KQorYm9v
bCBDU1NQYXJzZXI6OnBhcnNlRGVjbGFyYXRpb24oTXV0YWJsZVN0eWxlUHJvcGVydGllcyogZGVj
bGFyYXRpb24sIGNvbnN0IFN0cmluZyYgc3RyaW5nLCBSZWZQdHI8Q1NTUnVsZVNvdXJjZURhdGE+
IHBycFJ1bGVTb3VyY2VEYXRhLCBTdHlsZVNoZWV0Q29udGVudHMqIGNvbnRleHRTdHlsZVNoZWV0
KQogewogICAgIC8vIExlbmd0aCBvZiB0aGUgIkAtd2Via2l0LWRlY2xzeyIgcHJlZml4LgogICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBwcmVmaXhMZW5ndGggPSAxNTsKQEAgLTE1ODgsNyArMTU4
OCw3IEBAIFJlZjxJbW11dGFibGVTdHlsZVByb3BlcnRpZXM+IENTU1BhcnNlcjo6Y3JlYXRlU3R5
bGVQcm9wZXJ0aWVzKCkKICAgICByZXR1cm4gSW1tdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpjcmVh
dGUocmVzdWx0cy5kYXRhKCksIHJlc3VsdHMuc2l6ZSgpLCBtX2NvbnRleHQubW9kZSk7CiB9CiAK
LXZvaWQgQ1NTUGFyc2VyOjphZGRQcm9wZXJ0eVdpdGhQcmVmaXhpbmdWYXJpYW50KENTU1Byb3Bl
cnR5SUQgcHJvcElkLCBQYXNzUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQs
IGJvb2wgaW1wbGljaXQpCit2b2lkIENTU1BhcnNlcjo6YWRkUHJvcGVydHlXaXRoUHJlZml4aW5n
VmFyaWFudChDU1NQcm9wZXJ0eUlEIHByb3BJZCwgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSwgYm9v
bCBpbXBvcnRhbnQsIGJvb2wgaW1wbGljaXQpCiB7CiAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWwg
PSB2YWx1ZS5nZXQoKTsKICAgICBhZGRQcm9wZXJ0eShwcm9wSWQsIHZhbHVlLCBpbXBvcnRhbnQs
IGltcGxpY2l0KTsKQEAgLTE2MDYsNyArMTYwNiw3IEBAIHZvaWQgQ1NTUGFyc2VyOjphZGRQcm9w
ZXJ0eVdpdGhQcmVmaXhpbmdWYXJpYW50KENTU1Byb3BlcnR5SUQgcHJvcElkLCBQYXNzUmVmUHRy
CiAgICAgICAgIGFkZFByb3BlcnR5KHByZWZpeGluZ1ZhcmlhbnQsIHZhbC5yZWxlYXNlKCksIGlt
cG9ydGFudCwgaW1wbGljaXQpOwogfQogCi12b2lkIENTU1BhcnNlcjo6YWRkUHJvcGVydHkoQ1NT
UHJvcGVydHlJRCBwcm9wSWQsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlLCBib29sIGltcG9y
dGFudCwgYm9vbCBpbXBsaWNpdCkKK3ZvaWQgQ1NTUGFyc2VyOjphZGRQcm9wZXJ0eShDU1NQcm9w
ZXJ0eUlEIHByb3BJZCwgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQsIGJv
b2wgaW1wbGljaXQpCiB7CiAgICAgLy8gVGhpcyBwcm9wZXJ0eSBkb2Vzbid0IGJlbG9uZyB0byBh
IHNob3J0aGFuZCBvciBpcyBhIENTUyB2YXJpYWJsZSAod2hpY2ggd2lsbCBiZSByZXNvbHZlZCBs
YXRlcikuCiAgICAgaWYgKCFtX2N1cnJlbnRTaG9ydGhhbmQpIHsKQEAgLTE4NDUsNyArMTg0NSw3
IEBAIGlubGluZSBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VWYWxp
ZFByaW1pdGl2ZShDU1NWYWx1ZUlEIGlkZW50CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXZv
aWQgQ1NTUGFyc2VyOjphZGRFeHBhbmRlZFByb3BlcnR5Rm9yVmFsdWUoQ1NTUHJvcGVydHlJRCBw
cm9wSWQsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHBycFZhbHVlLCBib29sIGltcG9ydGFudCkKK3Zv
aWQgQ1NTUGFyc2VyOjphZGRFeHBhbmRlZFByb3BlcnR5Rm9yVmFsdWUoQ1NTUHJvcGVydHlJRCBw
cm9wSWQsIFJlZlB0cjxDU1NWYWx1ZT4gcHJwVmFsdWUsIGJvb2wgaW1wb3J0YW50KQogewogICAg
IGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIHNob3J0aGFuZCA9IHNob3J0aGFuZEZvclBy
b3BlcnR5KHByb3BJZCk7CiAgICAgdW5zaWduZWQgc2hvcnRoYW5kTGVuZ3RoID0gc2hvcnRoYW5k
Lmxlbmd0aCgpOwpAQCAtNTM3MCw3ICs1MzcwLDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlR3Jp
ZEl0ZW1Qb3NpdGlvblNob3J0aGFuZChDU1NQcm9wZXJ0eUlEIHNob3J0aGFuZElkLCBib29sIGkK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBDU1NQYXJzZXI6OnBhcnNlR3JpZFRlbXBsYXRl
Um93c0FuZEFyZWFzKFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHRlbXBsYXRlQ29sdW1ucywgYm9vbCBp
bXBvcnRhbnQpCitib29sIENTU1BhcnNlcjo6cGFyc2VHcmlkVGVtcGxhdGVSb3dzQW5kQXJlYXMo
UmVmUHRyPENTU1ZhbHVlPiB0ZW1wbGF0ZUNvbHVtbnMsIGJvb2wgaW1wb3J0YW50KQogewogICAg
IC8vIEF0IGxlYXN0IHRlbXBsYXRlLWFyZWFzIHN0cmluZ3MgbXVzdCBiZSBkZWZpbmVkLgogICAg
IGlmICghbV92YWx1ZUxpc3QtPmN1cnJlbnQoKSkKQEAgLTYxODcsNyArNjE4Nyw3IEBAIHN0YXRp
YyB2b2lkIGNvbXBsZXRlQm9yZGVyUmFkaWkoUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiByYWRp
aVs0XSkKIAogLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIHJlZmFjdG9yZWQgd2l0aCBDU1NQYXJz
ZXI6OnBhcnNlQm9yZGVyUmFkaXVzLgogLy8gQ1NTUGFyc2VyOjpwYXJzZUJvcmRlclJhZGl1cyBj
b250YWlucyBzdXBwb3J0IGZvciBzb21lIGxlZ2FjeSByYWRpdXMgY29uc3RydWN0aW9uLgotUmVm
UHRyPENTU0Jhc2ljU2hhcGU+IENTU1BhcnNlcjo6cGFyc2VJbnNldFJvdW5kZWRDb3JuZXJzKFBh
c3NSZWZQdHI8Q1NTQmFzaWNTaGFwZUluc2V0PiBzaGFwZSwgQ1NTUGFyc2VyVmFsdWVMaXN0JiBh
cmdzKQorUmVmUHRyPENTU0Jhc2ljU2hhcGU+IENTU1BhcnNlcjo6cGFyc2VJbnNldFJvdW5kZWRD
b3JuZXJzKFJlZlB0cjxDU1NCYXNpY1NoYXBlSW5zZXQ+IHNoYXBlLCBDU1NQYXJzZXJWYWx1ZUxp
c3QmIGFyZ3MpCiB7CiAgICAgQ1NTUGFyc2VyVmFsdWUqIGFyZ3VtZW50ID0gYXJncy5uZXh0KCk7
CiAKQEAgLTc2NTEsNyArNzY1MSw3IEBAIHN0cnVjdCBTaGFkb3dQYXJzZUNvbnRleHQgewogICAg
ICAgICB9CiAgICAgfQogCi0gICAgdm9pZCBjb21taXRDb2xvcihQYXNzUmVmUHRyPENTU1ByaW1p
dGl2ZVZhbHVlPiB2YWwpCisgICAgdm9pZCBjb21taXRDb2xvcihSZWZQdHI8Q1NTUHJpbWl0aXZl
VmFsdWU+IHZhbCkKICAgICB7CiAgICAgICAgIGNvbG9yID0gdmFsOwogICAgICAgICBhbGxvd0Nv
bG9yID0gZmFsc2U7CkBAIC03ODc5LDcgKzc4NzksNyBAQCBzdHJ1Y3QgQm9yZGVySW1hZ2VQYXJz
ZUNvbnRleHQgewogICAgIGJvb2wgcmVxdWlyZVdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9yZXF1
aXJlV2lkdGg7IH0KICAgICBib29sIHJlcXVpcmVPdXRzZXQoKSBjb25zdCB7IHJldHVybiBtX3Jl
cXVpcmVPdXRzZXQ7IH0KIAotICAgIHZvaWQgY29tbWl0SW1hZ2UoUGFzc1JlZlB0cjxDU1NWYWx1
ZT4gaW1hZ2UpCisgICAgdm9pZCBjb21taXRJbWFnZShSZWZQdHI8Q1NTVmFsdWU+IGltYWdlKQog
ICAgIHsKICAgICAgICAgbV9pbWFnZSA9IGltYWdlOwogICAgICAgICBtX2NhbkFkdmFuY2UgPSB0
cnVlOwpAQCAtNzg4OCw3ICs3ODg4LDcgQEAgc3RydWN0IEJvcmRlckltYWdlUGFyc2VDb250ZXh0
IHsKICAgICAgICAgbV9hbGxvd0ltYWdlU2xpY2UgPSAhbV9pbWFnZVNsaWNlOwogICAgICAgICBt
X2FsbG93UmVwZWF0ID0gIW1fcmVwZWF0OwogICAgIH0KLSAgICB2b2lkIGNvbW1pdEltYWdlU2xp
Y2UoUGFzc1JlZlB0cjxDU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWU+IHNsaWNlKQorICAgIHZvaWQg
Y29tbWl0SW1hZ2VTbGljZShSZWZQdHI8Q1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlPiBzbGljZSkK
ICAgICB7CiAgICAgICAgIG1faW1hZ2VTbGljZSA9IHNsaWNlOwogICAgICAgICBtX2NhbkFkdmFu
Y2UgPSB0cnVlOwpAQCAtNzkwOSw3ICs3OTA5LDcgQEAgc3RydWN0IEJvcmRlckltYWdlUGFyc2VD
b250ZXh0IHsKICAgICAgICAgICAgIG1fcmVxdWlyZVdpZHRoID0gZmFsc2U7CiAgICAgICAgIH0K
ICAgICB9Ci0gICAgdm9pZCBjb21taXRCb3JkZXJXaWR0aChQYXNzUmVmUHRyPENTU1ByaW1pdGl2
ZVZhbHVlPiBzbGljZSkKKyAgICB2b2lkIGNvbW1pdEJvcmRlcldpZHRoKFJlZlB0cjxDU1NQcmlt
aXRpdmVWYWx1ZT4gc2xpY2UpCiAgICAgewogICAgICAgICBtX2JvcmRlclNsaWNlID0gc2xpY2U7
CiAgICAgICAgIG1fY2FuQWR2YW5jZSA9IHRydWU7CkBAIC03OTE4LDcgKzc5MTgsNyBAQCBzdHJ1
Y3QgQm9yZGVySW1hZ2VQYXJzZUNvbnRleHQgewogICAgICAgICBtX2FsbG93SW1hZ2UgPSAhbV9p
bWFnZTsKICAgICAgICAgbV9hbGxvd1JlcGVhdCA9ICFtX3JlcGVhdDsKICAgICB9Ci0gICAgdm9p
ZCBjb21taXRCb3JkZXJPdXRzZXQoUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gb3V0c2V0
KQorICAgIHZvaWQgY29tbWl0Qm9yZGVyT3V0c2V0KFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4g
b3V0c2V0KQogICAgIHsKICAgICAgICAgbV9vdXRzZXQgPSBvdXRzZXQ7CiAgICAgICAgIG1fY2Fu
QWR2YW5jZSA9IHRydWU7CkBAIC03OTI3LDcgKzc5MjcsNyBAQCBzdHJ1Y3QgQm9yZGVySW1hZ2VQ
YXJzZUNvbnRleHQgewogICAgICAgICBtX2FsbG93SW1hZ2UgPSAhbV9pbWFnZTsKICAgICAgICAg
bV9hbGxvd1JlcGVhdCA9ICFtX3JlcGVhdDsKICAgICB9Ci0gICAgdm9pZCBjb21taXRSZXBlYXQo
UGFzc1JlZlB0cjxDU1NWYWx1ZT4gcmVwZWF0KQorICAgIHZvaWQgY29tbWl0UmVwZWF0KFJlZlB0
cjxDU1NWYWx1ZT4gcmVwZWF0KQogICAgIHsKICAgICAgICAgbV9yZXBlYXQgPSByZXBlYXQ7CiAg
ICAgICAgIG1fY2FuQWR2YW5jZSA9IHRydWU7CkBAIC03OTM3LDcgKzc5MzcsNyBAQCBzdHJ1Y3Qg
Qm9yZGVySW1hZ2VQYXJzZUNvbnRleHQgewogICAgICAgICBtX2FsbG93SW1hZ2UgPSAhbV9pbWFn
ZTsKICAgICB9CiAKLSAgICBQYXNzUmVmUHRyPENTU1ZhbHVlPiBjb21taXRXZWJLaXRCb3JkZXJJ
bWFnZSgpCisgICAgUmVmPENTU1ZhbHVlPiBjb21taXRXZWJLaXRCb3JkZXJJbWFnZSgpCiAgICAg
ewogICAgICAgICByZXR1cm4gY3JlYXRlQm9yZGVySW1hZ2VWYWx1ZShtX2ltYWdlLCBtX2ltYWdl
U2xpY2UsIG1fYm9yZGVyU2xpY2UsIG1fb3V0c2V0LCBtX3JlcGVhdCk7CiAgICAgfQpAQCAtNzk1
MSw3ICs3OTUxLDcgQEAgc3RydWN0IEJvcmRlckltYWdlUGFyc2VDb250ZXh0IHsKICAgICAgICAg
Y29tbWl0Qm9yZGVySW1hZ2VQcm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRlckltYWdlUmVwZWF0LCBw
YXJzZXIsIG1fcmVwZWF0LCBpbXBvcnRhbnQpOwogICAgIH0KIAotICAgIHZvaWQgY29tbWl0Qm9y
ZGVySW1hZ2VQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIHByb3BJZCwgQ1NTUGFyc2VyJiBwYXJzZXIs
IFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlLCBib29sIGltcG9ydGFudCkKKyAgICB2b2lkIGNv
bW1pdEJvcmRlckltYWdlUHJvcGVydHkoQ1NTUHJvcGVydHlJRCBwcm9wSWQsIENTU1BhcnNlciYg
cGFyc2VyLCBSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlLCBib29sIGltcG9ydGFudCkKICAgICB7CiAg
ICAgICAgIGlmICh2YWx1ZSkKICAgICAgICAgICAgIHBhcnNlci5hZGRQcm9wZXJ0eShwcm9wSWQs
IHZhbHVlLCBpbXBvcnRhbnQpOwpAQCAtODEyMyw3ICs4MTIzLDcgQEAgcHVibGljOgogCiAgICAg
dm9pZCBjb21taXRGaWxsKCkgeyBtX2ZpbGwgPSB0cnVlOyBtX2FsbG93RmlsbCA9IGZhbHNlOyBt
X2FsbG93TnVtYmVyID0gIW1fdG9wOyB9CiAKLSAgICBQYXNzUmVmUHRyPENTU0JvcmRlckltYWdl
U2xpY2VWYWx1ZT4gY29tbWl0Qm9yZGVySW1hZ2VTbGljZSgpCisgICAgUmVmUHRyPENTU0JvcmRl
ckltYWdlU2xpY2VWYWx1ZT4gY29tbWl0Qm9yZGVySW1hZ2VTbGljZSgpCiAgICAgewogICAgICAg
ICAvLyBXZSBuZWVkIHRvIGNsb25lIGFuZCByZXBlYXQgdmFsdWVzIGZvciBhbnkgb21pc3Npb25z
LgogICAgICAgICBBU1NFUlQobV90b3ApOwpAQCAtODIzOSw5ICs4MjM5LDkgQEAgcHVibGljOgog
ICAgIH0KIAogICAgIHZvaWQgc2V0QWxsb3dGaW5hbENvbW1pdCgpIHsgbV9hbGxvd0ZpbmFsQ29t
bWl0ID0gdHJ1ZTsgfQotICAgIHZvaWQgc2V0VG9wKFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFs
dWU+IHZhbCkgeyBtX3RvcCA9IHZhbDsgfQorICAgIHZvaWQgc2V0VG9wKFJlZlB0cjxDU1NQcmlt
aXRpdmVWYWx1ZT4gdmFsKSB7IG1fdG9wID0gdmFsOyB9CiAKLSAgICBQYXNzUmVmUHRyPENTU1By
aW1pdGl2ZVZhbHVlPiBjb21taXRCb3JkZXJJbWFnZVF1YWQoKQorICAgIFJlZlB0cjxDU1NQcmlt
aXRpdmVWYWx1ZT4gY29tbWl0Qm9yZGVySW1hZ2VRdWFkKCkKICAgICB7CiAgICAgICAgIC8vIFdl
IG5lZWQgdG8gY2xvbmUgYW5kIHJlcGVhdCB2YWx1ZXMgZm9yIGFueSBvbWlzc2lvbnMuCiAgICAg
ICAgIEFTU0VSVChtX3RvcCk7CkBAIC04NDUzLDcgKzg0NTMsNyBAQCBib29sIENTU1BhcnNlcjo6
cGFyc2VDb3VudGVyKENTU1Byb3BlcnR5SUQgcHJvcElkLCBpbnQgZGVmYXVsdFZhbHVlLCBib29s
IGltcG9ydAogfQogCiAvLyBUaGlzIHNob3VsZCBnbyBhd2F5IG9uY2Ugd2UgZHJvcCBzdXBwb3J0
IGZvciAtd2Via2l0LWdyYWRpZW50Ci1zdGF0aWMgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1
ZT4gcGFyc2VEZXByZWNhdGVkR3JhZGllbnRQb2ludChDU1NQYXJzZXJWYWx1ZSYgdmFsdWUsIGJv
b2wgaG9yaXpvbnRhbCkKK3N0YXRpYyBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHBhcnNlRGVw
cmVjYXRlZEdyYWRpZW50UG9pbnQoQ1NTUGFyc2VyVmFsdWUmIHZhbHVlLCBib29sIGhvcml6b250
YWwpCiB7CiAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiByZXN1bHQ7CiAgICAgaWYgKHZh
bHVlLnVuaXQgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19JREVOVCkgewpAQCAtODY3MSw3ICs4
NjcxLDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlRGVwcmVjYXRlZEdyYWRpZW50KENTU1BhcnNl
clZhbHVlTGlzdCYgdmFsdWVMaXN0LCBSZWZQdHI8Q1MKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
c3RhdGljIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHZhbHVlRnJvbVNpZGVLZXl3b3Jk
KENTU1BhcnNlclZhbHVlJiB2YWx1ZSwgYm9vbCYgaXNIb3Jpem9udGFsKQorc3RhdGljIFJlZlB0
cjxDU1NQcmltaXRpdmVWYWx1ZT4gdmFsdWVGcm9tU2lkZUtleXdvcmQoQ1NTUGFyc2VyVmFsdWUm
IHZhbHVlLCBib29sJiBpc0hvcml6b250YWwpCiB7CiAgICAgaWYgKHZhbHVlLnVuaXQgIT0gQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19JREVOVCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC04
NjkxLDcgKzg2OTEsNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gdmFs
dWVGcm9tU2lkZUtleXdvcmQoQ1NTUGFyc2VyVmFsdWUmIHZhbHVlLAogICAgIHJldHVybiBDU1NW
YWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZSh2YWx1ZS5pZCk7CiB9
CiAKLXN0YXRpYyBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBwYXJzZUdyYWRpZW50Q29s
b3JPcktleXdvcmQoQ1NTUGFyc2VyJiBwYXJzZXIsIENTU1BhcnNlclZhbHVlJiB2YWx1ZSkKK3N0
YXRpYyBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHBhcnNlR3JhZGllbnRDb2xvck9yS2V5d29y
ZChDU1NQYXJzZXImIHBhcnNlciwgQ1NTUGFyc2VyVmFsdWUmIHZhbHVlKQogewogICAgIENTU1Zh
bHVlSUQgaWQgPSB2YWx1ZS5pZDsKICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVXZWJraXRUZXh0IHx8
IENTU1BhcnNlcjo6aXNWYWxpZFN5c3RlbUNvbG9yVmFsdWUoaWQpIHx8IGlkID09IENTU1ZhbHVl
TWVudSB8fCBpZCA9PSBDU1NWYWx1ZUN1cnJlbnRjb2xvcikKQEAgLTEwMDk5LDcgKzEwMDk5LDcg
QEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlUGVyc3BlY3RpdmVPcmlnaW4oQ1NTUHJvcGVydHlJRCBw
cm9wSWQsIENTU1Byb3BlcnR5SUQmIHByb3AKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKLXZvaWQg
Q1NTUGFyc2VyOjphZGRUZXh0RGVjb3JhdGlvblByb3BlcnR5KENTU1Byb3BlcnR5SUQgcHJvcElk
LCBQYXNzUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQpCit2b2lkIENTU1Bh
cnNlcjo6YWRkVGV4dERlY29yYXRpb25Qcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIHByb3BJZCwgUmVm
UHRyPENTU1ZhbHVlPiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQpCiB7CiAgICAgLy8gVGhlIHRleHQt
ZGVjb3JhdGlvbi1saW5lIHByb3BlcnR5IHRha2VzIHByaW9yaXR5IG92ZXIgdGV4dC1kZWNvcmF0
aW9uLCB1bmxlc3MgdGhlIGxhdHRlciBoYXMgaW1wb3J0YW50IHByaW9yaXR5IHNldC4KICAgICBp
ZiAocHJvcElkID09IENTU1Byb3BlcnR5VGV4dERlY29yYXRpb24gJiYgIWltcG9ydGFudCAmJiAh
aW5TaG9ydGhhbmQoKSkgewpAQCAtMTIxMjEsNyArMTIxMjEsNyBAQCByZXN0YXJ0QWZ0ZXJDb21t
ZW50OgogICAgIHJldHVybiB0b2tlbigpOwogfQogCi1SZWZQdHI8U3R5bGVSdWxlQmFzZT4gQ1NT
UGFyc2VyOjpjcmVhdGVJbXBvcnRSdWxlKGNvbnN0IENTU1BhcnNlclN0cmluZyYgdXJsLCBQYXNz
UmVmUHRyPE1lZGlhUXVlcnlTZXQ+IG1lZGlhKQorUmVmUHRyPFN0eWxlUnVsZUJhc2U+IENTU1Bh
cnNlcjo6Y3JlYXRlSW1wb3J0UnVsZShjb25zdCBDU1NQYXJzZXJTdHJpbmcmIHVybCwgUmVmUHRy
PE1lZGlhUXVlcnlTZXQ+IG1lZGlhKQogewogICAgIGlmICghbWVkaWEgfHwgIW1fYWxsb3dJbXBv
cnRSdWxlcykgewogICAgICAgICBwb3BSdWxlRGF0YSgpOwpAQCAtMTIxMzIsNyArMTIxMzIsNyBA
QCBSZWZQdHI8U3R5bGVSdWxlQmFzZT4gQ1NTUGFyc2VyOjpjcmVhdGVJbXBvcnRSdWxlKGNvbnN0
IENTU1BhcnNlclN0cmluZyYgdXJsLCBQYQogICAgIHJldHVybiBydWxlOwogfQogCi1SZWZQdHI8
U3R5bGVSdWxlQmFzZT4gQ1NTUGFyc2VyOjpjcmVhdGVNZWRpYVJ1bGUoUGFzc1JlZlB0cjxNZWRp
YVF1ZXJ5U2V0PiBtZWRpYSwgUnVsZUxpc3QqIHJ1bGVzKQorUmVmUHRyPFN0eWxlUnVsZUJhc2U+
IENTU1BhcnNlcjo6Y3JlYXRlTWVkaWFSdWxlKFJlZlB0cjxNZWRpYVF1ZXJ5U2V0PiBtZWRpYSwg
UnVsZUxpc3QqIHJ1bGVzKQogewogICAgIG1fYWxsb3dJbXBvcnRSdWxlcyA9IG1fYWxsb3dOYW1l
c3BhY2VEZWNsYXJhdGlvbnMgPSBmYWxzZTsKICAgICBSZWZQdHI8U3R5bGVSdWxlTWVkaWE+IHJ1
bGU7CkBAIC0xMjIxNyw3ICsxMjIxNyw3IEBAIHZvaWQgQ1NTUGFyc2VyOjpwcm9jZXNzQW5kQWRk
TmV3UnVsZVRvU291cmNlVHJlZUlmTmVlZGVkKCkKICAgICBhZGROZXdSdWxlVG9Tb3VyY2VUcmVl
KHJ1bGUucmVsZWFzZSgpKTsKIH0KIAotdm9pZCBDU1NQYXJzZXI6OmFkZE5ld1J1bGVUb1NvdXJj
ZVRyZWUoUGFzc1JlZlB0cjxDU1NSdWxlU291cmNlRGF0YT4gcnVsZSkKK3ZvaWQgQ1NTUGFyc2Vy
OjphZGROZXdSdWxlVG9Tb3VyY2VUcmVlKFJlZlB0cjxDU1NSdWxlU291cmNlRGF0YT4gcnVsZSkK
IHsKICAgICAvLyBQcmVjb25kaXRpb246IChpc0V4dHJhY3RpbmdTb3VyY2VEYXRhKCkpLgogICAg
IGlmICghbV9ydWxlU291cmNlRGF0YVJlc3VsdCkKQEAgLTEyMjI4LDcgKzEyMjI4LDcgQEAgdm9p
ZCBDU1NQYXJzZXI6OmFkZE5ld1J1bGVUb1NvdXJjZVRyZWUoUGFzc1JlZlB0cjxDU1NSdWxlU291
cmNlRGF0YT4gcnVsZSkKICAgICAgICAgbV9jdXJyZW50UnVsZURhdGFTdGFjay0+bGFzdCgpLT5j
aGlsZFJ1bGVzLmFwcGVuZChydWxlKTsKIH0KIAotUGFzc1JlZlB0cjxDU1NSdWxlU291cmNlRGF0
YT4gQ1NTUGFyc2VyOjpwb3BSdWxlRGF0YSgpCitSZWZQdHI8Q1NTUnVsZVNvdXJjZURhdGE+IENT
U1BhcnNlcjo6cG9wUnVsZURhdGEoKQogewogICAgIGlmICghbV9ydWxlU291cmNlRGF0YVJlc3Vs
dCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xMjIzNyw3ICsxMjIzNyw3IEBAIFBhc3NS
ZWZQdHI8Q1NTUnVsZVNvdXJjZURhdGE+IENTU1BhcnNlcjo6cG9wUnVsZURhdGEoKQogICAgIG1f
Y3VycmVudFJ1bGVEYXRhID0gbnVsbHB0cjsKICAgICBSZWZQdHI8Q1NTUnVsZVNvdXJjZURhdGE+
IGRhdGEgPSBtX2N1cnJlbnRSdWxlRGF0YVN0YWNrLT5sYXN0KCk7CiAgICAgbV9jdXJyZW50UnVs
ZURhdGFTdGFjay0+cmVtb3ZlTGFzdCgpOwotICAgIHJldHVybiBkYXRhLnJlbGVhc2UoKTsKKyAg
ICByZXR1cm4gZGF0YTsKIH0KIAogdm9pZCBDU1NQYXJzZXI6OnN5bnRheEVycm9yKGNvbnN0IExv
Y2F0aW9uJiBsb2NhdGlvbiwgU3ludGF4RXJyb3JUeXBlIGVycm9yKQpAQCAtMTI3MTksNyArMTI3
MTksNyBAQCB2b2lkIENTU1BhcnNlcjo6bWFya1Byb3BlcnR5RW5kKGJvb2wgaXNJbXBvcnRhbnRG
b3VuZCwgYm9vbCBpc1Byb3BlcnR5UGFyc2VkKQogfQogCiAjaWYgRU5BQkxFKENTU19ERVZJQ0Vf
QURBUFRBVElPTikKLVBhc3NSZWZQdHI8U3R5bGVSdWxlQmFzZT4gQ1NTUGFyc2VyOjpjcmVhdGVW
aWV3cG9ydFJ1bGUoKQorUmVmUHRyPFN0eWxlUnVsZUJhc2U+IENTU1BhcnNlcjo6Y3JlYXRlVmll
d3BvcnRSdWxlKCkKIHsKICAgICBtX2FsbG93SW1wb3J0UnVsZXMgPSBtX2FsbG93TmFtZXNwYWNl
RGVjbGFyYXRpb25zID0gZmFsc2U7CiAKQEAgLTEyNzI4LDcgKzEyNzI4LDcgQEAgUGFzc1JlZlB0
cjxTdHlsZVJ1bGVCYXNlPiBDU1NQYXJzZXI6OmNyZWF0ZVZpZXdwb3J0UnVsZSgpCiAKICAgICBw
cm9jZXNzQW5kQWRkTmV3UnVsZVRvU291cmNlVHJlZUlmTmVlZGVkKCk7CiAKLSAgICByZXR1cm4g
cnVsZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIHJ1bGU7CiB9CiAKIGJvb2wgQ1NTUGFyc2VyOjpw
YXJzZVZpZXdwb3J0UHJvcGVydHkoQ1NTUHJvcGVydHlJRCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1BhcnNlci5oCmluZGV4IDkyYzFiM2VjMDFmMmIwMzZhMTUxZTg0YzIxOTRl
MzE0ZGM4OTBlNWUuLmY4NWJhM2M5NzVmYzBjYWI1MWM3MWVlYWEyMjQwZTc2MzMwZDI1OTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUGFyc2VyLmgKQEAgLTEyNiwxNSArMTI2LDE1IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgUmVmUHRyPENTU1ZhbHVlTGlzdD4gcGFyc2VGb250RmFjZVZhbHVlKGNvbnN0IEF0b21p
Y1N0cmluZyYpOwogICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcGFyc2VWYWxpZFByaW1p
dGl2ZShDU1NWYWx1ZUlEIGlkZW50LCBWYWx1ZVdpdGhDYWxjdWxhdGlvbiYpOwogCi0gICAgV0VC
Q09SRV9FWFBPUlQgYm9vbCBwYXJzZURlY2xhcmF0aW9uKE11dGFibGVTdHlsZVByb3BlcnRpZXMq
LCBjb25zdCBTdHJpbmcmLCBQYXNzUmVmUHRyPENTU1J1bGVTb3VyY2VEYXRhPiwgU3R5bGVTaGVl
dENvbnRlbnRzKiBjb250ZXh0U3R5bGVTaGVldCk7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBw
YXJzZURlY2xhcmF0aW9uKE11dGFibGVTdHlsZVByb3BlcnRpZXMqLCBjb25zdCBTdHJpbmcmLCBS
ZWZQdHI8Q1NTUnVsZVNvdXJjZURhdGE+LCBTdHlsZVNoZWV0Q29udGVudHMqIGNvbnRleHRTdHls
ZVNoZWV0KTsKICAgICBzdGF0aWMgUmVmPEltbXV0YWJsZVN0eWxlUHJvcGVydGllcz4gcGFyc2VJ
bmxpbmVTdHlsZURlY2xhcmF0aW9uKGNvbnN0IFN0cmluZyYsIEVsZW1lbnQqKTsKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8TWVkaWFRdWVyeT4gcGFyc2VNZWRpYVF1ZXJ5KGNvbnN0IFN0cmluZyYpOwog
Ci0gICAgdm9pZCBhZGRQcm9wZXJ0eVdpdGhQcmVmaXhpbmdWYXJpYW50KENTU1Byb3BlcnR5SUQs
IFBhc3NSZWZQdHI8Q1NTVmFsdWU+LCBib29sIGltcG9ydGFudCwgYm9vbCBpbXBsaWNpdCA9IGZh
bHNlKTsKLSAgICB2b2lkIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5SUQsIFBhc3NSZWZQdHI8Q1NT
VmFsdWU+LCBib29sIGltcG9ydGFudCwgYm9vbCBpbXBsaWNpdCA9IGZhbHNlKTsKKyAgICB2b2lk
IGFkZFByb3BlcnR5V2l0aFByZWZpeGluZ1ZhcmlhbnQoQ1NTUHJvcGVydHlJRCwgUmVmUHRyPENT
U1ZhbHVlPiwgYm9vbCBpbXBvcnRhbnQsIGJvb2wgaW1wbGljaXQgPSBmYWxzZSk7CisgICAgdm9p
ZCBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUlELCBSZWZQdHI8Q1NTVmFsdWU+LCBib29sIGltcG9y
dGFudCwgYm9vbCBpbXBsaWNpdCA9IGZhbHNlKTsKICAgICB2b2lkIHJvbGxiYWNrTGFzdFByb3Bl
cnRpZXMoaW50IG51bSk7CiAgICAgYm9vbCBoYXNQcm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4g
IW1fcGFyc2VkUHJvcGVydGllcy5pc0VtcHR5KCk7IH0KLSAgICB2b2lkIGFkZEV4cGFuZGVkUHJv
cGVydHlGb3JWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BJZCwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4s
IGJvb2wpOworICAgIHZvaWQgYWRkRXhwYW5kZWRQcm9wZXJ0eUZvclZhbHVlKENTU1Byb3BlcnR5
SUQgcHJvcElkLCBSZWZQdHI8Q1NTVmFsdWU+LCBib29sKTsKIAogICAgIGJvb2wgcGFyc2VWYWx1
ZShDU1NQcm9wZXJ0eUlELCBib29sIGltcG9ydGFudCk7CiAgICAgYm9vbCBwYXJzZVNob3J0aGFu
ZChDU1NQcm9wZXJ0eUlELCBjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiwgYm9vbCBpbXBv
cnRhbnQpOwpAQCAtMjA2LDcgKzIwNiw3IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoQ1NTX0dSSURf
TEFZT1VUKQogICAgIFJlZlB0cjxDU1NWYWx1ZT4gcGFyc2VHcmlkUG9zaXRpb24oKTsKICAgICBi
b29sIHBhcnNlR3JpZEl0ZW1Qb3NpdGlvblNob3J0aGFuZChDU1NQcm9wZXJ0eUlELCBib29sIGlt
cG9ydGFudCk7Ci0gICAgYm9vbCBwYXJzZUdyaWRUZW1wbGF0ZVJvd3NBbmRBcmVhcyhQYXNzUmVm
UHRyPENTU1ZhbHVlPiwgYm9vbCBpbXBvcnRhbnQpOworICAgIGJvb2wgcGFyc2VHcmlkVGVtcGxh
dGVSb3dzQW5kQXJlYXMoUmVmUHRyPENTU1ZhbHVlPiwgYm9vbCBpbXBvcnRhbnQpOwogICAgIGJv
b2wgcGFyc2VHcmlkVGVtcGxhdGVTaG9ydGhhbmQoYm9vbCBpbXBvcnRhbnQpOwogICAgIGJvb2wg
cGFyc2VHcmlkU2hvcnRoYW5kKGJvb2wgaW1wb3J0YW50KTsKICAgICBib29sIHBhcnNlR3JpZEFy
ZWFTaG9ydGhhbmQoYm9vbCBpbXBvcnRhbnQpOwpAQCAtMzI1LDcgKzMyNSw3IEBAIHB1YmxpYzoK
ICAgICBib29sIHBhcnNlVGV4dEVtcGhhc2lzU3R5bGUoYm9vbCBpbXBvcnRhbnQpOwogICAgIGJv
b2wgcGFyc2VUZXh0RW1waGFzaXNQb3NpdGlvbihib29sIGltcG9ydGFudCk7CiAKLSAgICB2b2lk
IGFkZFRleHREZWNvcmF0aW9uUHJvcGVydHkoQ1NTUHJvcGVydHlJRCwgUGFzc1JlZlB0cjxDU1NW
YWx1ZT4sIGJvb2wgaW1wb3J0YW50KTsKKyAgICB2b2lkIGFkZFRleHREZWNvcmF0aW9uUHJvcGVy
dHkoQ1NTUHJvcGVydHlJRCwgUmVmUHRyPENTU1ZhbHVlPiwgYm9vbCBpbXBvcnRhbnQpOwogICAg
IGJvb2wgcGFyc2VUZXh0RGVjb3JhdGlvbihDU1NQcm9wZXJ0eUlEIHByb3BJZCwgYm9vbCBpbXBv
cnRhbnQpOwogICAgIGJvb2wgcGFyc2VUZXh0RGVjb3JhdGlvblNraXAoYm9vbCBpbXBvcnRhbnQp
OwogICAgIGJvb2wgcGFyc2VUZXh0VW5kZXJsaW5lUG9zaXRpb24oYm9vbCBpbXBvcnRhbnQpOwpA
QCAtMzUxLDEyICszNTEsMTIgQEAgcHVibGljOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8
c3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNlbGVjdG9yPj4+IGNyZWF0ZVNlbGVjdG9yVmVjdG9y
KCk7CiAgICAgdm9pZCByZWN5Y2xlU2VsZWN0b3JWZWN0b3Ioc3RkOjp1bmlxdWVfcHRyPFZlY3Rv
cjxzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+Pj4pOwogCi0gICAgUmVmUHRyPFN0
eWxlUnVsZUJhc2U+IGNyZWF0ZUltcG9ydFJ1bGUoY29uc3QgQ1NTUGFyc2VyU3RyaW5nJiwgUGFz
c1JlZlB0cjxNZWRpYVF1ZXJ5U2V0Pik7CisgICAgUmVmUHRyPFN0eWxlUnVsZUJhc2U+IGNyZWF0
ZUltcG9ydFJ1bGUoY29uc3QgQ1NTUGFyc2VyU3RyaW5nJiwgUmVmUHRyPE1lZGlhUXVlcnlTZXQ+
KTsKICAgICBSZWZQdHI8U3R5bGVLZXlmcmFtZT4gY3JlYXRlS2V5ZnJhbWUoQ1NTUGFyc2VyVmFs
dWVMaXN0Jik7CiAgICAgUmVmUHRyPFN0eWxlUnVsZUtleWZyYW1lcz4gY3JlYXRlS2V5ZnJhbWVz
UnVsZShjb25zdCBTdHJpbmcmLCBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFJlZlB0cjxTdHlsZUtl
eWZyYW1lPj4+KTsKIAogICAgIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNlPj4g
UnVsZUxpc3Q7Ci0gICAgUmVmUHRyPFN0eWxlUnVsZUJhc2U+IGNyZWF0ZU1lZGlhUnVsZShQYXNz
UmVmUHRyPE1lZGlhUXVlcnlTZXQ+LCBSdWxlTGlzdCopOworICAgIFJlZlB0cjxTdHlsZVJ1bGVC
YXNlPiBjcmVhdGVNZWRpYVJ1bGUoUmVmUHRyPE1lZGlhUXVlcnlTZXQ+LCBSdWxlTGlzdCopOwog
ICAgIFJlZlB0cjxTdHlsZVJ1bGVCYXNlPiBjcmVhdGVFbXB0eU1lZGlhUnVsZShSdWxlTGlzdCop
OwogICAgIFJlZlB0cjxTdHlsZVJ1bGVCYXNlPiBjcmVhdGVTdHlsZVJ1bGUoVmVjdG9yPHN0ZDo6
dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rvcj4+KiBzZWxlY3RvcnMpOwogICAgIFJlZlB0cjxT
dHlsZVJ1bGVCYXNlPiBjcmVhdGVGb250RmFjZVJ1bGUoKTsKQEAgLTQzOCw4ICs0MzgsOCBAQCBw
dWJsaWM6CiAgICAgdm9pZCBtYXJrUHJvcGVydHlTdGFydCgpOwogICAgIHZvaWQgbWFya1Byb3Bl
cnR5RW5kKGJvb2wgaXNJbXBvcnRhbnRGb3VuZCwgYm9vbCBpc1Byb3BlcnR5UGFyc2VkKTsKICAg
ICB2b2lkIHByb2Nlc3NBbmRBZGROZXdSdWxlVG9Tb3VyY2VUcmVlSWZOZWVkZWQoKTsKLSAgICB2
b2lkIGFkZE5ld1J1bGVUb1NvdXJjZVRyZWUoUGFzc1JlZlB0cjxDU1NSdWxlU291cmNlRGF0YT4p
OwotICAgIFBhc3NSZWZQdHI8Q1NTUnVsZVNvdXJjZURhdGE+IHBvcFJ1bGVEYXRhKCk7CisgICAg
dm9pZCBhZGROZXdSdWxlVG9Tb3VyY2VUcmVlKFJlZlB0cjxDU1NSdWxlU291cmNlRGF0YT4pOwor
ICAgIFJlZlB0cjxDU1NSdWxlU291cmNlRGF0YT4gcG9wUnVsZURhdGEoKTsKICAgICB2b2lkIHJl
c2V0UHJvcGVydHlSYW5nZSgpIHsgbV9wcm9wZXJ0eVJhbmdlLnN0YXJ0ID0gbV9wcm9wZXJ0eVJh
bmdlLmVuZCA9IFVJTlRfTUFYOyB9CiAgICAgYm9vbCBpc0V4dHJhY3RpbmdTb3VyY2VEYXRhKCkg
Y29uc3QgeyByZXR1cm4gISFtX2N1cnJlbnRSdWxlRGF0YVN0YWNrOyB9CiAgICAgdm9pZCBzeW50
YXhFcnJvcihjb25zdCBMb2NhdGlvbiYsIFN5bnRheEVycm9yVHlwZSA9IEdlbmVyYWxTeW50YXhF
cnJvcik7CkBAIC00NTEsNyArNDUxLDcgQEAgcHVibGljOgogI2lmIEVOQUJMRShDU1NfREVWSUNF
X0FEQVBUQVRJT04pCiAgICAgdm9pZCBtYXJrVmlld3BvcnRSdWxlQm9keVN0YXJ0KCkgeyBtX2lu
Vmlld3BvcnQgPSB0cnVlOyB9CiAgICAgdm9pZCBtYXJrVmlld3BvcnRSdWxlQm9keUVuZCgpIHsg
bV9pblZpZXdwb3J0ID0gZmFsc2U7IH0KLSAgICBQYXNzUmVmUHRyPFN0eWxlUnVsZUJhc2U+IGNy
ZWF0ZVZpZXdwb3J0UnVsZSgpOworICAgIFJlZlB0cjxTdHlsZVJ1bGVCYXNlPiBjcmVhdGVWaWV3
cG9ydFJ1bGUoKTsKICNlbmRpZgogCiAgICAgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBjcmVhdGVQ
cmltaXRpdmVOdW1lcmljVmFsdWUoVmFsdWVXaXRoQ2FsY3VsYXRpb24mKTsKQEAgLTU2MCw3ICs1
NjAsNyBAQCBwcml2YXRlOgogICAgIFBhcnNlUmVzdWx0IHBhcnNlVmFsdWUoTXV0YWJsZVN0eWxl
UHJvcGVydGllcyosIENTU1Byb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYsIGJvb2wgaW1wb3J0YW50
LCBTdHlsZVNoZWV0Q29udGVudHMqIGNvbnRleHRTdHlsZVNoZWV0KTsKICAgICBSZWY8SW1tdXRh
YmxlU3R5bGVQcm9wZXJ0aWVzPiBwYXJzZURlY2xhcmF0aW9uKGNvbnN0IFN0cmluZyYsIFN0eWxl
U2hlZXRDb250ZW50cyogY29udGV4dFN0eWxlU2hlZXQpOwogCi0gICAgUmVmUHRyPENTU0Jhc2lj
U2hhcGU+IHBhcnNlSW5zZXRSb3VuZGVkQ29ybmVycyhQYXNzUmVmUHRyPENTU0Jhc2ljU2hhcGVJ
bnNldD4sIENTU1BhcnNlclZhbHVlTGlzdCYpOworICAgIFJlZlB0cjxDU1NCYXNpY1NoYXBlPiBw
YXJzZUluc2V0Um91bmRlZENvcm5lcnMoUmVmUHRyPENTU0Jhc2ljU2hhcGVJbnNldD4sIENTU1Bh
cnNlclZhbHVlTGlzdCYpOwogCiAgICAgZW51bSBTaXplUGFyYW1ldGVyVHlwZSB7CiAgICAgICAg
IE5vbmUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyVmFsdWVzLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMuY3BwCmluZGV4IGEwNjA5YzM0
Yjg3MDU5ZjA5YzdkMmZiYzJmNzQ3YTU0YmRkZGQ0ZDkuLmIzZDZmZmE4MTZlMzJmZjU3NzNmZDE1
NWNlZWE4ZDIxMTYyN2UxMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJz
ZXJWYWx1ZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMuY3Bw
CkBAIC02Niw3ICs2Niw3IEBAIHZvaWQgQ1NTUGFyc2VyVmFsdWVMaXN0OjpleHRlbmQoQ1NTUGFy
c2VyVmFsdWVMaXN0JiB2YWx1ZUxpc3QpCiAgICAgICAgIG1fdmFsdWVzLmFwcGVuZCgqKHZhbHVl
TGlzdC52YWx1ZUF0KGkpKSk7CiB9CiAKLVBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNlclZh
bHVlOjpjcmVhdGVDU1NWYWx1ZSgpCitSZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNlclZhbHVlOjpj
cmVhdGVDU1NWYWx1ZSgpCiB7CiAgICAgUmVmUHRyPENTU1ZhbHVlPiBwYXJzZWRWYWx1ZTsKICAg
ICBpZiAoaWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyVmFsdWVz
LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyVmFsdWVzLmgKaW5kZXggYzM0YWFhMzg4
ZjUwM2VjMGI2MGY1MGRkNTllYjNmYjQ0OGFiYmRlYy4uMDk0ZTNjMjIwMTlkYjdkODE4ZjA5Mzk0
OTEwN2M0MDlkOGUxMmU2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNl
clZhbHVlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMuaApAQCAt
MTI4LDcgKzEyOCw3IEBAIHN0cnVjdCBDU1NQYXJzZXJWYWx1ZSB7CiAKICAgICB2b2lkIHNldEZy
b21WYWx1ZUxpc3Qoc3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclZhbHVlTGlzdD4pOwogCi0gICAg
UGFzc1JlZlB0cjxDU1NWYWx1ZT4gY3JlYXRlQ1NTVmFsdWUoKTsKKyAgICBSZWZQdHI8Q1NTVmFs
dWU+IGNyZWF0ZUNTU1ZhbHVlKCk7CiB9OwogCiB2b2lkIGRlc3Ryb3koY29uc3QgQ1NTUGFyc2Vy
VmFsdWUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCmluZGV4IDRh
NDZmNzE4MGI3ZTBlZTA5NTdjZDIyOTBmMTI0OWRhMzRkOWZiMDQuLmFlOWVkN2Q0YTg2ODRhYzQx
MThjZDM3MTdkYmJiNjliZjFkMjVlNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NQcmltaXRpdmVWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2
ZVZhbHVlLmNwcApAQCAtOTM4LDEyICs5MzgsMTIgQEAgTGVuZ3RoUmVwZWF0KiBDU1NQcmltaXRp
dmVWYWx1ZTo6Z2V0TGVuZ3RoUmVwZWF0VmFsdWUoRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CiB9
CiAjZW5kaWYKIAotUGFzc1JlZlB0cjxSR0JDb2xvcj4gQ1NTUHJpbWl0aXZlVmFsdWU6OmdldFJH
QkNvbG9yVmFsdWUoRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CitSZWZQdHI8UkdCQ29sb3I+IENT
U1ByaW1pdGl2ZVZhbHVlOjpnZXRSR0JDb2xvclZhbHVlKEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25z
dAogewogICAgIGVjID0gMDsKICAgICBpZiAobV9wcmltaXRpdmVVbml0VHlwZSAhPSBDU1NfUkdC
Q09MT1IpIHsKICAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7Ci0gICAgICAgIHJldHVy
biAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKICAgICAvLyBGSU1YRTogVGhp
cyBzaG91bGQgbm90IHJldHVybiBhIG5ldyBvYmplY3QgZm9yIGVhY2ggaW52b2NhdGlvbi4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5oIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmgKaW5kZXggNmM2M2YxODU5MzM3ZTZjOWZk
YzYzNDNkOTljZjVkM2VjZWEwMzE4Zi4uNGQ5MzgwYjYyYWRmMWFkYTEwMTE4NWI2NjM0NTNkMWM1
YTVhYzYwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmgKQEAgLTMwLDcg
KzMwLDYgQEAKICNpbmNsdWRlIDx1dGlsaXR5PgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAj
aW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTMzNyw3ICszMzYsNyBAQCBwdWJsaWM6CiAgICAg
TGVuZ3RoUmVwZWF0KiBnZXRMZW5ndGhSZXBlYXRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJp
bWl0aXZlVW5pdFR5cGUgIT0gQ1NTX0xFTkdUSF9SRVBFQVQgPyAwIDogbV92YWx1ZS5sZW5ndGhS
ZXBlYXQ7IH0KICNlbmRpZgogCi0gICAgUGFzc1JlZlB0cjxSR0JDb2xvcj4gZ2V0UkdCQ29sb3JW
YWx1ZShFeGNlcHRpb25Db2RlJikgY29uc3Q7CisgICAgUmVmUHRyPFJHQkNvbG9yPiBnZXRSR0JD
b2xvclZhbHVlKEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKICAgICBSR0JBMzIgZ2V0UkdCQTMyVmFs
dWUoKSBjb25zdCB7IHJldHVybiBtX3ByaW1pdGl2ZVVuaXRUeXBlICE9IENTU19SR0JDT0xPUiA/
IDAgOiBtX3ZhbHVlLnJnYmNvbG9yOyB9CiAKICAgICBQYWlyKiBnZXRQYWlyVmFsdWUoRXhjZXB0
aW9uQ29kZSYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3Bl
cnR5LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHkuaAppbmRleCBkNWMzOGEwNzE3
ODM0YmI1MzBkOGZjNDEyYjI4M2RjNDZjZjk3YzIzLi5kNDgyNDg2MWU2ODczM2I0YTcyOWI2YTUw
NjNlMWMwMjIxZWY0NjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVy
dHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHkuaApAQCAtMjYsNyArMjYs
NiBAQAogI2luY2x1ZGUgIkNTU1ZhbHVlLmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGVDb25zdGFu
dHMuaCIKICNpbmNsdWRlICJXcml0aW5nTW9kZS5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02
NCw3ICs2Myw3IEBAIHN0cnVjdCBTdHlsZVByb3BlcnR5TWV0YWRhdGEgewogCiBjbGFzcyBDU1NQ
cm9wZXJ0eSB7CiBwdWJsaWM6Ci0gICAgQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0
eUlELCBQYXNzUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQgPSBmYWxzZSwg
Ym9vbCBpc1NldEZyb21TaG9ydGhhbmQgPSBmYWxzZSwgaW50IGluZGV4SW5TaG9ydGhhbmRzVmVj
dG9yID0gMCwgYm9vbCBpbXBsaWNpdCA9IGZhbHNlKQorICAgIENTU1Byb3BlcnR5KENTU1Byb3Bl
cnR5SUQgcHJvcGVydHlJRCwgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQg
PSBmYWxzZSwgYm9vbCBpc1NldEZyb21TaG9ydGhhbmQgPSBmYWxzZSwgaW50IGluZGV4SW5TaG9y
dGhhbmRzVmVjdG9yID0gMCwgYm9vbCBpbXBsaWNpdCA9IGZhbHNlKQogICAgICAgICA6IG1fbWV0
YWRhdGEocHJvcGVydHlJRCwgaXNTZXRGcm9tU2hvcnRoYW5kLCBpbmRleEluU2hvcnRoYW5kc1Zl
Y3RvciwgaW1wb3J0YW50LCBpbXBsaWNpdCwgaXNJbmhlcml0ZWRQcm9wZXJ0eShwcm9wZXJ0eUlE
KSkKICAgICAgICAgLCBtX3ZhbHVlKHZhbHVlKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NSZWZsZWN0VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSZWZs
ZWN0VmFsdWUuaAppbmRleCAwYjU1ZjYwNDEyZDFkYzEzOTEzMDgzM2E5MmUyZjRmZjFmMzZkYzY5
Li4wOTgxODY2NWFjMTM2NWVhMWIyNWJjOWFiYzE1YmQ4YmZlM2IxODNhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUmVmbGVjdFZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1JlZmxlY3RWYWx1ZS5oCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpbmNsdWRlICJDU1NS
ZWZsZWN0aW9uRGlyZWN0aW9uLmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWUuaCIKLSNpbmNsdWRlIDx3
dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtMzcsOCArMzYsOCBAQCBjbGFzcyBDU1NQcmltaXRpdmVWYWx1ZTsKIAogY2xh
c3MgQ1NTUmVmbGVjdFZhbHVlIDogcHVibGljIENTU1ZhbHVlIHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUmVmPENTU1JlZmxlY3RWYWx1ZT4gY3JlYXRlKFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFs
dWU+IGRpcmVjdGlvbiwKLSAgICAgICAgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gb2Zm
c2V0LCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBtYXNrKQorICAgIHN0YXRpYyBSZWY8Q1NTUmVmbGVj
dFZhbHVlPiBjcmVhdGUoUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBkaXJlY3Rpb24sCisgICAg
ICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gb2Zmc2V0LCBSZWZQdHI8Q1NTVmFsdWU+IG1h
c2spCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NSZWZsZWN0VmFsdWUo
ZGlyZWN0aW9uLCBvZmZzZXQsIG1hc2spKTsKICAgICB9CkBAIC01NCw3ICs1Myw3IEBAIHB1Ymxp
YzoKICAgICBib29sIGVxdWFscyhjb25zdCBDU1NSZWZsZWN0VmFsdWUmKSBjb25zdDsKIAogcHJp
dmF0ZToKLSAgICBDU1NSZWZsZWN0VmFsdWUoUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4g
ZGlyZWN0aW9uLCBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBvZmZzZXQsIFBhc3NSZWZQ
dHI8Q1NTVmFsdWU+IG1hc2spCisgICAgQ1NTUmVmbGVjdFZhbHVlKFJlZlB0cjxDU1NQcmltaXRp
dmVWYWx1ZT4gZGlyZWN0aW9uLCBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IG9mZnNldCwgUmVm
UHRyPENTU1ZhbHVlPiBtYXNrKQogICAgICAgICA6IENTU1ZhbHVlKFJlZmxlY3RDbGFzcykKICAg
ICAgICAgLCBtX2RpcmVjdGlvbihkaXJlY3Rpb24pCiAgICAgICAgICwgbV9vZmZzZXQob2Zmc2V0
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1J1bGVMaXN0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUnVsZUxpc3QuaAppbmRleCA1NDhmNTJlZGRmNzc5MDRlNzY4ODc1MjNh
NzM4NDk3ZTI0OTFhZjI3Li5mODJhMWFjN2E0OGZhNTFmNDliZDY3OGY0ZDFmZTlhOTUzNjVkY2Rh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUnVsZUxpc3QuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUnVsZUxpc3QuaApAQCAtMjIsNyArMjIsNiBAQAogI2lmbmRlZiBD
U1NSdWxlTGlzdF9oCiAjZGVmaW5lIENTU1J1bGVMaXN0X2gKIAotI2luY2x1ZGUgPHd0Zi9QYXNz
UmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1NlZ21lbnRlZEZvbnRGYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NT
ZWdtZW50ZWRGb250RmFjZS5jcHAKaW5kZXggNWNiZmNhNGU3YjcyMDEwOTk1YTgxMTJiZGI0NzZi
NWRkZWE1ZGRhMi4uOGVjZGRlMjYxMTczYjEyNGFjYmZjNTFkYzhhYTJhODNlMzVhMmJkNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlZ21lbnRlZEZvbnRGYWNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VnbWVudGVkRm9udEZhY2UuY3BwCkBAIC0xNTEsNyAr
MTUxLDcgQEAgYm9vbCBDU1NTZWdtZW50ZWRGb250RmFjZTo6Y2hlY2tGb250KCkgY29uc3QKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBDU1NTZWdtZW50ZWRGb250RmFjZTo6bG9hZEZvbnQo
Y29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24sIFBhc3NSZWZQdHI8TG9hZEZv
bnRDYWxsYmFjaz4gY2FsbGJhY2spCit2b2lkIENTU1NlZ21lbnRlZEZvbnRGYWNlOjpsb2FkRm9u
dChjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbiwgUmVmUHRyPExvYWRGb250
Q2FsbGJhY2s+IGNhbGxiYWNrKQogewogICAgIGZvbnRSYW5nZXMoZm9udERlc2NyaXB0aW9uKTsg
Ly8gS2ljayBvZmYgdGhlIGxvYWQuCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NTZWdtZW50ZWRGb250RmFjZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlZ21lbnRlZEZv
bnRGYWNlLmgKaW5kZXggNWZmZWJiMThjYTgwZGQ4ZDNjYTkzMmQ2ODA5NDE4YzFkM2U1YmNlZC4u
NjEyN2M2ZDQyNjFjMWRjMmY4OGFiYTAzY2E3NGVhNDdlOTEyYjY5ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1NlZ21lbnRlZEZvbnRGYWNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1NlZ21lbnRlZEZvbnRGYWNlLmgKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRl
ICJGb250Q2FjaGUuaCIKICNpbmNsdWRlICJGb250UmFuZ2VzLmgiCiAjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC02MSw3ICs2MCw3IEBAIHB1
YmxpYzoKICAgICB9OwogCiAgICAgYm9vbCBjaGVja0ZvbnQoKSBjb25zdDsKLSAgICB2b2lkIGxv
YWRGb250KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIFBhc3NSZWZQdHI8TG9hZEZvbnRDYWxsYmFj
az4gbG9hZENhbGxiYWNrKTsKKyAgICB2b2lkIGxvYWRGb250KGNvbnN0IEZvbnREZXNjcmlwdGlv
biYsIFJlZlB0cjxMb2FkRm9udENhbGxiYWNrPiBsb2FkQ2FsbGJhY2spOwogI2VuZGlmCiAKIHBy
aXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcAppbmRleCA0NDBlODljMjZmYzBkODQy
NzEwOWMyNDNiNTY5YWY1Mjg4NjZmZWRmLi41ODQ0ODZjNmExMTA5NzVjMGNhMGEwNjA0ZDViZDY2
OGUzMTg1ZjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAKQEAgLTc3OSw3ICs3Nzks
NyBAQCBpbnQgQ1NTU2VsZWN0b3I6Om50aEIoKSBjb25zdAogICAgIHJldHVybiBtX2RhdGEubV9y
YXJlRGF0YS0+bV9iOwogfQogCi1DU1NTZWxlY3Rvcjo6UmFyZURhdGE6OlJhcmVEYXRhKFBhc3NS
ZWZQdHI8QXRvbWljU3RyaW5nSW1wbD4gdmFsdWUpCitDU1NTZWxlY3Rvcjo6UmFyZURhdGE6OlJh
cmVEYXRhKFJlZlB0cjxBdG9taWNTdHJpbmdJbXBsPiB2YWx1ZSkKICAgICA6IG1fdmFsdWUodmFs
dWUubGVha1JlZigpKQogICAgICwgbV9hKDApCiAgICAgLCBtX2IoMCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Nl
bGVjdG9yLmgKaW5kZXggOTgwOGU3MTU1NmZiMjM0MjY2ZjVlYzEzZTc2YjQ1NjdiMjA1YjIzZS4u
MmMwMjQ3NGVjNmE1ZTA1M2U0MWFiN2NkNDk1ZThhMjNjM2M2YTU5MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1NlbGVjdG9yLmgKQEAgLTMyOCw3ICszMjgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIENTU1NlbGVjdG9yJiBvcGVyYXRvcj0oY29uc3QgQ1NTU2VsZWN0b3ImKTsKIAogICAgICAg
ICBzdHJ1Y3QgUmFyZURhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxSYXJlRGF0YT4gewotICAgICAg
ICAgICAgc3RhdGljIFJlZjxSYXJlRGF0YT4gY3JlYXRlKFBhc3NSZWZQdHI8QXRvbWljU3RyaW5n
SW1wbD4gdmFsdWUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmFyZURhdGEodmFsdWUpKTsgfQor
ICAgICAgICAgICAgc3RhdGljIFJlZjxSYXJlRGF0YT4gY3JlYXRlKFJlZlB0cjxBdG9taWNTdHJp
bmdJbXBsPiB2YWx1ZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBSYXJlRGF0YSh2YWx1ZSkpOyB9
CiAgICAgICAgICAgICB+UmFyZURhdGEoKTsKIAogICAgICAgICAgICAgYm9vbCBwYXJzZU50aCgp
OwpAQCAtMzQ0LDcgKzM0NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIHN0
ZDo6dW5pcXVlX3B0cjxDU1NTZWxlY3Rvckxpc3Q+IG1fc2VsZWN0b3JMaXN0OyAvLyBVc2VkIGZv
ciA6bWF0Y2hlcygpIGFuZCA6bm90KCkuCiAgICAgICAgIAogICAgICAgICBwcml2YXRlOgotICAg
ICAgICAgICAgUmFyZURhdGEoUGFzc1JlZlB0cjxBdG9taWNTdHJpbmdJbXBsPiB2YWx1ZSk7Cisg
ICAgICAgICAgICBSYXJlRGF0YShSZWZQdHI8QXRvbWljU3RyaW5nSW1wbD4gdmFsdWUpOwogICAg
ICAgICB9OwogICAgICAgICB2b2lkIGNyZWF0ZVJhcmVEYXRhKCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NTaGFkb3dWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTU2hhZG93VmFsdWUuY3BwCmluZGV4IDkwNGU0NWZmOGFjOTNkNDJjMWEyNDgxYTVlM2U2Yjcy
ZDIyMjcwMTkuLjQ1ZWZjYTA2OTQ2NGJiYjYyMDc4ZDJiZDA5YmVjOWNhYmM0ZWM5ZWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTaGFkb3dWYWx1ZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1NoYWRvd1ZhbHVlLmNwcApAQCAtMjYsMTIgKzI2LDEyIEBACiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIC8vIFVzZWQgZm9yIHRleHQtc2hhZG93IGFuZCBib3gtc2hhZG93
Ci1DU1NTaGFkb3dWYWx1ZTo6Q1NTU2hhZG93VmFsdWUoUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVW
YWx1ZT4geCwKLSAgICBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiB5LAotICAgIFBhc3NS
ZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGJsdXIsCi0gICAgUGFzc1JlZlB0cjxDU1NQcmltaXRp
dmVWYWx1ZT4gc3ByZWFkLAotICAgIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHN0eWxl
LAotICAgIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbG9yKQorQ1NTU2hhZG93VmFs
dWU6OkNTU1NoYWRvd1ZhbHVlKFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4geCwKKyAgICBSZWZQ
dHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHksCisgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBi
bHVyLAorICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gc3ByZWFkLAorICAgIFJlZlB0cjxD
U1NQcmltaXRpdmVWYWx1ZT4gc3R5bGUsCisgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBj
b2xvcikKICAgICA6IENTU1ZhbHVlKFNoYWRvd0NsYXNzKQogICAgICwgeCh4KQogICAgICwgeSh5
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NoYWRvd1ZhbHVlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTU2hhZG93VmFsdWUuaAppbmRleCAzMGQzYjRkMjQ5ODFkOTc0Y2M5
ZTBjZGJjYjlmYWUxNDY5Y2Y0ZjM2Li4wNGE2ZjE5NDY2ZmNkODc2MmJiNzdhM2JlZDE0NjFkOTEx
YTM3NzljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2hhZG93VmFsdWUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2hhZG93VmFsdWUuaApAQCAtMjIsNyArMjIsNiBA
QAogI2RlZmluZSBDU1NTaGFkb3dWYWx1ZV9oCiAKICNpbmNsdWRlICJDU1NWYWx1ZS5oIgotI2lu
Y2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CkBAIC0zMiwxMiArMzEsMTIgQEAgY2xhc3MgQ1NTUHJpbWl0aXZlVmFs
dWU7CiAvLyBVc2VkIGZvciB0ZXh0LXNoYWRvdyBhbmQgYm94LXNoYWRvdwogY2xhc3MgQ1NTU2hh
ZG93VmFsdWUgOiBwdWJsaWMgQ1NTVmFsdWUgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8Q1NT
U2hhZG93VmFsdWU+IGNyZWF0ZShQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiB4LAotICAg
ICAgICBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiB5LAotICAgICAgICBQYXNzUmVmUHRy
PENTU1ByaW1pdGl2ZVZhbHVlPiBibHVyLAotICAgICAgICBQYXNzUmVmUHRyPENTU1ByaW1pdGl2
ZVZhbHVlPiBzcHJlYWQsCi0gICAgICAgIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHN0
eWxlLAotICAgICAgICBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjb2xvcikKKyAgICBz
dGF0aWMgUmVmPENTU1NoYWRvd1ZhbHVlPiBjcmVhdGUoUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVl
PiB4LAorICAgICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHksCisgICAgICAgIFJlZlB0
cjxDU1NQcmltaXRpdmVWYWx1ZT4gYmx1ciwKKyAgICAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZh
bHVlPiBzcHJlYWQsCisgICAgICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gc3R5bGUsCisg
ICAgICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29sb3IpCiAgICAgewogICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NTaGFkb3dWYWx1ZSh4LCB5LCBibHVyLCBzcHJlYWQsIHN0
eWxlLCBjb2xvcikpOwogICAgIH0KQEAgLTU0LDEyICs1MywxMiBAQCBwdWJsaWM6CiAgICAgUmVm
UHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjb2xvcjsKIAogcHJpdmF0ZToKLSAgICBDU1NTaGFkb3dW
YWx1ZShQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiB4LAotICAgICAgICBQYXNzUmVmUHRy
PENTU1ByaW1pdGl2ZVZhbHVlPiB5LAotICAgICAgICBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZh
bHVlPiBibHVyLAotICAgICAgICBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBzcHJlYWQs
Ci0gICAgICAgIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHN0eWxlLAotICAgICAgICBQ
YXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjb2xvcik7CisgICAgQ1NTU2hhZG93VmFsdWUo
UmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiB4LAorICAgICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZl
VmFsdWU+IHksCisgICAgICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gYmx1ciwKKyAgICAg
ICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBzcHJlYWQsCisgICAgICAgIFJlZlB0cjxDU1NQ
cmltaXRpdmVWYWx1ZT4gc3R5bGUsCisgICAgICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4g
Y29sb3IpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0
eWxlU2hlZXQuY3BwCmluZGV4IDVjOTg1NjljNThmZjc1ZWVkNmUwZWYyMjY0OTdiZGJmNTM2Y2Q2
YTUuLmFkMTViNDNjZjZjYzQyNjFjM2QyYjJkMGQ2NzJmYzA4ODVjMzRiY2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAKQEAgLTIyMCw3ICsyMjAsNyBAQCB2b2lkIENTU1N0eWxl
U2hlZXQ6OnNldERpc2FibGVkKGJvb2wgZGlzYWJsZWQpCiAgICAgZGlkTXV0YXRlKCk7CiB9CiAK
LXZvaWQgQ1NTU3R5bGVTaGVldDo6c2V0TWVkaWFRdWVyaWVzKFBhc3NSZWZQdHI8TWVkaWFRdWVy
eVNldD4gbWVkaWFRdWVyaWVzKQordm9pZCBDU1NTdHlsZVNoZWV0OjpzZXRNZWRpYVF1ZXJpZXMo
UmVmUHRyPE1lZGlhUXVlcnlTZXQ+IG1lZGlhUXVlcmllcykKIHsKICAgICBtX21lZGlhUXVlcmll
cyA9IG1lZGlhUXVlcmllczsKICAgICBpZiAobV9tZWRpYUNTU09NV3JhcHBlciAmJiBtX21lZGlh
UXVlcmllcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5oCmluZGV4IGZjMTkzZmMwMDU3MzA3
ZDU5ZWQ3ZTg2MjA3NmE4ODliOGM2ZTg1MTMuLjcyMzZiMGUxODg2YTFkOWZkNzJlYjQ3M2M3ODU1
NjQyM2M1MTVjYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuaApAQCAtODYsNyArODYs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhck93bmVyUnVsZSgpIHsgbV9vd25lclJ1bGUgPSAw
OyB9CiAgICAgRG9jdW1lbnQqIG93bmVyRG9jdW1lbnQoKSBjb25zdDsKICAgICBNZWRpYVF1ZXJ5
U2V0KiBtZWRpYVF1ZXJpZXMoKSBjb25zdCB7IHJldHVybiBtX21lZGlhUXVlcmllcy5nZXQoKTsg
fQotICAgIHZvaWQgc2V0TWVkaWFRdWVyaWVzKFBhc3NSZWZQdHI8TWVkaWFRdWVyeVNldD4pOwor
ICAgIHZvaWQgc2V0TWVkaWFRdWVyaWVzKFJlZlB0cjxNZWRpYVF1ZXJ5U2V0Pik7CiAgICAgdm9p
ZCBzZXRUaXRsZShjb25zdCBTdHJpbmcmIHRpdGxlKSB7IG1fdGl0bGUgPSB0aXRsZTsgfQogCiAg
ICAgYm9vbCBoYWRSdWxlc011dGF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9tdXRhdGVkUnVsZXM7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NUaW1pbmdGdW5jdGlvblZhbHVl
LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZS5oCmluZGV4IGRh
Y2I0NzM5ZTYxMDhiOTMzMmIwMTZkYjMwOTU3OTQ0NmE4YjhhOGMuLjJkZjI3OWJkMzczOThlZDM0
YWQ5NDdkOWJiYjE5NDUxNmQ1Yjc2N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NUaW1pbmdGdW5jdGlvblZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1RpbWlu
Z0Z1bmN0aW9uVmFsdWUuaApAQCAtMjcsNyArMjcsNiBAQAogI2RlZmluZSBDU1NUaW1pbmdGdW5j
dGlvblZhbHVlX2gKIAogI2luY2x1ZGUgIkNTU1ZhbHVlLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTVW5pY29kZVJhbmdlVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NV
bmljb2RlUmFuZ2VWYWx1ZS5oCmluZGV4IDI2NDMwODFmOGVjMTQ5NzdmYzJkZTQwY2FhOGI1YWQw
YTQwODkxMjAuLjhiYTlhOGFiYzFmMDRmYjFkMzdlYjA0MTc0NGVjZTczNTE0MjYzZTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NVbmljb2RlUmFuZ2VWYWx1ZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NVbmljb2RlUmFuZ2VWYWx1ZS5oCkBAIC0yNyw3ICsyNyw2IEBA
CiAjZGVmaW5lIENTU1VuaWNvZGVSYW5nZVZhbHVlX2gKIAogI2luY2x1ZGUgIkNTU1ZhbHVlLmgi
Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVMaXN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3QuY3BwCmluZGV4IDM1MTQ1MGNlMGEwZGNjMGM3YzcyNWEw
M2FhYmJmZjRmZWE1OTljOGQuLjliZjkyYTk2MjMzM2ZlY2ZlNTQzMzA0MmNlYzAwYjY3Yjk4OWFk
YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3QuY3BwCkBAIC03NCw3ICs3NCw3IEBAIGJv
b2wgQ1NTVmFsdWVMaXN0OjpoYXNWYWx1ZShDU1NWYWx1ZSogdmFsKSBjb25zdAogICAgIHJldHVy
biBmYWxzZTsKIH0KIAotUGFzc1JlZlB0cjxDU1NWYWx1ZUxpc3Q+IENTU1ZhbHVlTGlzdDo6Y29w
eSgpCitSZWZQdHI8Q1NTVmFsdWVMaXN0PiBDU1NWYWx1ZUxpc3Q6OmNvcHkoKQogewogICAgIFJl
ZlB0cjxDU1NWYWx1ZUxpc3Q+IG5ld0xpc3Q7CiAgICAgc3dpdGNoIChtX3ZhbHVlTGlzdFNlcGFy
YXRvcikgewpAQCAtOTIsNyArOTIsNyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlTGlzdD4gQ1NTVmFs
dWVMaXN0Ojpjb3B5KCkKICAgICB9CiAgICAgZm9yIChhdXRvJiB2YWx1ZSA6IG1fdmFsdWVzKQog
ICAgICAgICBuZXdMaXN0LT5hcHBlbmQodmFsdWUuZ2V0KCkpOwotICAgIHJldHVybiBuZXdMaXN0
LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gbmV3TGlzdDsKIH0KIAogU3RyaW5nIENTU1ZhbHVlTGlz
dDo6Y3VzdG9tQ1NTVGV4dCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTVmFsdWVMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVMaXN0LmgKaW5kZXgg
NGEyMWRmN2RjMzQwOTE3NTZkZTAyYjg3MWJkMzBlNDZjNGNiMjZhMS4uZmI3OGViYjJmYmVkNjE4
ZWZiNmM1Yjc5NGI3YTc2NTUyNTdhNWUwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1ZhbHVlTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3QuaApA
QCAtMjIsNyArMjIsNiBAQAogI2RlZmluZSBDU1NWYWx1ZUxpc3RfaAogCiAjaW5jbHVkZSAiQ1NT
VmFsdWUuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNjYsNyArNjUsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBwcmVwZW5kKFJlZjxDU1NWYWx1ZT4mJik7CiAgICAgYm9vbCByZW1vdmVBbGwoQ1NT
VmFsdWUqKTsKICAgICBib29sIGhhc1ZhbHVlKENTU1ZhbHVlKikgY29uc3Q7Ci0gICAgUGFzc1Jl
ZlB0cjxDU1NWYWx1ZUxpc3Q+IGNvcHkoKTsKKyAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBjb3B5
KCk7CiAKICAgICBTdHJpbmcgY3VzdG9tQ1NTVGV4dCgpIGNvbnN0OwogICAgIGJvb2wgZXF1YWxz
KGNvbnN0IENTU1ZhbHVlTGlzdCYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1ZhbHVlUG9vbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVQb29sLmNw
cAppbmRleCBhYTJhN2Q0MmI5ZjdjYWYwOGZiYzVhNDEwMWE5MjE3ZDhlNGZiZGM4Li4xZTM2YWJj
NjdkZTZjMWMxNzg0M2Y1ODNhYWU2N2Y0M2M1NTYzNWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTVmFsdWVQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFs
dWVQb29sLmNwcApAQCAtMTMzLDcgKzEzMyw3IEBAIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gQ1NT
VmFsdWVQb29sOjpjcmVhdGVGb250RmFtaWx5VmFsdWUoY29uc3QgU3RyaW5nJiBmYW1pbHlOCiAg
ICAgcmV0dXJuICp2YWx1ZTsKIH0KIAotUGFzc1JlZlB0cjxDU1NWYWx1ZUxpc3Q+IENTU1ZhbHVl
UG9vbDo6Y3JlYXRlRm9udEZhY2VWYWx1ZShjb25zdCBBdG9taWNTdHJpbmcmIHN0cmluZykKK1Jl
ZlB0cjxDU1NWYWx1ZUxpc3Q+IENTU1ZhbHVlUG9vbDo6Y3JlYXRlRm9udEZhY2VWYWx1ZShjb25z
dCBBdG9taWNTdHJpbmcmIHN0cmluZykKIHsKICAgICAvLyBSZW1vdmUgb25lIGVudHJ5IGF0IHJh
bmRvbSBpZiB0aGUgY2FjaGUgZ3Jvd3MgdG9vIGxhcmdlLgogICAgIGNvbnN0IGludCBtYXhpbXVt
Rm9udEZhY2VDYWNoZVNpemUgPSAxMjg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTVmFsdWVQb29sLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVQb29sLmgKaW5kZXgg
YjJhOTAzZWE4ZTM2YmJhMTcxNDVjNWNhMzZkMWFjMTJkZmYwZTY3ZS4uZmZmYThiOTk3NTJlNTIx
Yzc3MWM1NTU1YTFkMGIzNzc5NWJiM2U1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1ZhbHVlUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZVBvb2wuaApA
QCAtNDksNyArNDksNyBAQCBjbGFzcyBDU1NWYWx1ZVBvb2wgewogcHVibGljOgogICAgIHN0YXRp
YyBDU1NWYWx1ZVBvb2wmIHNpbmdsZXRvbigpOwogCi0gICAgUGFzc1JlZlB0cjxDU1NWYWx1ZUxp
c3Q+IGNyZWF0ZUZvbnRGYWNlVmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJik7CisgICAgUmVmUHRy
PENTU1ZhbHVlTGlzdD4gY3JlYXRlRm9udEZhY2VWYWx1ZShjb25zdCBBdG9taWNTdHJpbmcmKTsK
ICAgICBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGNyZWF0ZUZvbnRGYW1pbHlWYWx1ZShjb25zdCBT
dHJpbmcmLCBGcm9tU3lzdGVtRm9udElEID0gRnJvbVN5c3RlbUZvbnRJRDo6Tm8pOwogICAgIFJl
ZjxDU1NJbmhlcml0ZWRWYWx1ZT4gY3JlYXRlSW5oZXJpdGVkVmFsdWUoKSB7IHJldHVybiBtX2lu
aGVyaXRlZFZhbHVlLmNvcHlSZWYoKTsgfQogICAgIFJlZjxDU1NJbml0aWFsVmFsdWU+IGNyZWF0
ZUltcGxpY2l0SW5pdGlhbFZhbHVlKCkgeyByZXR1cm4gbV9pbXBsaWNpdEluaXRpYWxWYWx1ZS5j
b3B5UmVmKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Db3VudGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ291bnRlci5oCmluZGV4IDk4YThhYmNmOGFiODE4NjlkNjhiNDE1
OTc0NmFhMjBmNTc3NThhMGQuLjA4ZWYyYTc2NTQ4ZWViYTc5NDFlNTFkMTA5NDZhODQwODdlMTlj
YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Db3VudGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NvdW50ZXIuaApAQCAtMjgsNyArMjgsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIENvdW50ZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxDb3VudGVyPiB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFJlZjxDb3VudGVyPiBjcmVhdGUoUGFzc1JlZlB0cjxDU1NQcmltaXRp
dmVWYWx1ZT4gaWRlbnRpZmllciwgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gbGlzdFN0
eWxlLCBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBzZXBhcmF0b3IpCisgICAgc3RhdGlj
IFJlZjxDb3VudGVyPiBjcmVhdGUoUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBpZGVudGlmaWVy
LCBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGxpc3RTdHlsZSwgUmVmUHRyPENTU1ByaW1pdGl2
ZVZhbHVlPiBzZXBhcmF0b3IpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBD
b3VudGVyKGlkZW50aWZpZXIsIGxpc3RTdHlsZSwgc2VwYXJhdG9yKSk7CiAgICAgfQpAQCAtMzks
OSArMzksOSBAQCBwdWJsaWM6CiAKICAgICBDU1NWYWx1ZUlEIGxpc3RTdHlsZUlkZW50KCkgY29u
c3QgeyByZXR1cm4gbV9saXN0U3R5bGUgPyBtX2xpc3RTdHlsZS0+Z2V0VmFsdWVJRCgpIDogQ1NT
VmFsdWVJbnZhbGlkOyB9CiAKLSAgICB2b2lkIHNldElkZW50aWZpZXIoUGFzc1JlZlB0cjxDU1NQ
cmltaXRpdmVWYWx1ZT4gaWRlbnRpZmllcikgeyBtX2lkZW50aWZpZXIgPSBpZGVudGlmaWVyOyB9
Ci0gICAgdm9pZCBzZXRMaXN0U3R5bGUoUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gbGlz
dFN0eWxlKSB7IG1fbGlzdFN0eWxlID0gbGlzdFN0eWxlOyB9Ci0gICAgdm9pZCBzZXRTZXBhcmF0
b3IoUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gc2VwYXJhdG9yKSB7IG1fc2VwYXJhdG9y
ID0gc2VwYXJhdG9yOyB9CisgICAgdm9pZCBzZXRJZGVudGlmaWVyKFJlZlB0cjxDU1NQcmltaXRp
dmVWYWx1ZT4gaWRlbnRpZmllcikgeyBtX2lkZW50aWZpZXIgPSBpZGVudGlmaWVyOyB9CisgICAg
dm9pZCBzZXRMaXN0U3R5bGUoUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBsaXN0U3R5bGUpIHsg
bV9saXN0U3R5bGUgPSBsaXN0U3R5bGU7IH0KKyAgICB2b2lkIHNldFNlcGFyYXRvcihSZWZQdHI8
Q1NTUHJpbWl0aXZlVmFsdWU+IHNlcGFyYXRvcikgeyBtX3NlcGFyYXRvciA9IHNlcGFyYXRvcjsg
fQogCiAgICAgYm9vbCBlcXVhbHMoY29uc3QgQ291bnRlciYgb3RoZXIpIGNvbnN0CiAgICAgewpA
QCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIENvdW50ZXIo
UGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gaWRlbnRpZmllciwgUGFzc1JlZlB0cjxDU1NQ
cmltaXRpdmVWYWx1ZT4gbGlzdFN0eWxlLCBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBz
ZXBhcmF0b3IpCisgICAgQ291bnRlcihSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGlkZW50aWZp
ZXIsIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gbGlzdFN0eWxlLCBSZWZQdHI8Q1NTUHJpbWl0
aXZlVmFsdWU+IHNlcGFyYXRvcikKICAgICAgICAgOiBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikK
ICAgICAgICAgLCBtX2xpc3RTdHlsZShsaXN0U3R5bGUpCiAgICAgICAgICwgbV9zZXBhcmF0b3Io
c2VwYXJhdG9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRMb2FkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRMb2FkZXIuY3BwCmluZGV4IGZkNTVhOWVlYjY1MzMw
MmQ2YWY5NDQzNjliMjZmMTRhMzUxNDc0NDEuLjRkZGUyYjA0ZTg0ODgzODc4NjkxYjI2YWE2ZWI0
MTE4Nzk0NTUzOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250TG9hZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udExvYWRlci5jcHAKQEAgLTQ4LDEyICs0OCwx
MiBAQCBzdGF0aWMgY29uc3QgY2hhciogY29uc3QgZGVmYXVsdEZvbnRGYW1pbHkgPSAic2Fucy1z
ZXJpZiI7CiAKIGNsYXNzIExvYWRGb250Q2FsbGJhY2sgOiBwdWJsaWMgQ1NTU2VnbWVudGVkRm9u
dEZhY2U6OkxvYWRGb250Q2FsbGJhY2sgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8TG9hZEZv
bnRDYWxsYmFjaz4gY3JlYXRlKGludCBudW1Mb2FkaW5nLCBGb250TG9hZGVyJiBmb250TG9hZGVy
LCBQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4gbG9hZENhbGxiYWNrLCBQYXNzUmVmUHRyPFZvaWRD
YWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKKyAgICBzdGF0aWMgUmVmPExvYWRGb250Q2FsbGJhY2s+
IGNyZWF0ZShpbnQgbnVtTG9hZGluZywgRm9udExvYWRlciYgZm9udExvYWRlciwgUmVmUHRyPFZv
aWRDYWxsYmFjaz4gbG9hZENhbGxiYWNrLCBSZWZQdHI8Vm9pZENhbGxiYWNrPiBlcnJvckNhbGxi
YWNrKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTG9hZEZvbnRDYWxsYmFj
ayhudW1Mb2FkaW5nLCBmb250TG9hZGVyLCBsb2FkQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spKTsK
ICAgICB9CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxMb2FkRm9udENhbGxiYWNrPiBjcmVhdGVG
cm9tUGFyYW1zKGNvbnN0IERpY3Rpb25hcnkmIHBhcmFtcywgRm9udExvYWRlciYgZm9udExvYWRl
ciwgY29uc3QgRm9udENhc2NhZGUmIGZvbnQpCisgICAgc3RhdGljIFJlZlB0cjxMb2FkRm9udENh
bGxiYWNrPiBjcmVhdGVGcm9tUGFyYW1zKGNvbnN0IERpY3Rpb25hcnkmIHBhcmFtcywgRm9udExv
YWRlciYgZm9udExvYWRlciwgY29uc3QgRm9udENhc2NhZGUmIGZvbnQpCiAgICAgewogICAgICAg
ICBSZWZQdHI8Vm9pZENhbGxiYWNrPiBvbnN1Y2Nlc3M7CiAgICAgICAgIFJlZlB0cjxWb2lkQ2Fs
bGJhY2s+IG9uZXJyb3I7CkBAIC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICBpbnQgZmFtaWx5
Q291bnQoKSBjb25zdCB7IHJldHVybiBtX2ZhbWlseUNvdW50OyB9CiAKIHByaXZhdGU6Ci0gICAg
TG9hZEZvbnRDYWxsYmFjayhpbnQgbnVtTG9hZGluZywgRm9udExvYWRlciYgZm9udExvYWRlciwg
UGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IGxvYWRDYWxsYmFjaywgUGFzc1JlZlB0cjxWb2lkQ2Fs
bGJhY2s+IGVycm9yQ2FsbGJhY2spCisgICAgTG9hZEZvbnRDYWxsYmFjayhpbnQgbnVtTG9hZGlu
ZywgRm9udExvYWRlciYgZm9udExvYWRlciwgUmVmUHRyPFZvaWRDYWxsYmFjaz4gbG9hZENhbGxi
YWNrLCBSZWZQdHI8Vm9pZENhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQogICAgICAgICA6IG1fZmFt
aWx5Q291bnQobnVtTG9hZGluZykKICAgICAgICAgLCBtX251bUxvYWRpbmcobnVtTG9hZGluZykK
ICAgICAgICAgLCBtX2Vycm9yT2NjdXJlZChmYWxzZSkKQEAgLTE2Niw3ICsxNjYsNyBAQCBib29s
IEZvbnRMb2FkZXI6OmNhblN1c3BlbmRGb3JQYWdlQ2FjaGUoKSBjb25zdAogICAgIHJldHVybiAh
bV9udW1Mb2FkaW5nRnJvbUNTUyAmJiAhbV9udW1Mb2FkaW5nRnJvbUpTOwogfQogCi12b2lkIEZv
bnRMb2FkZXI6OnNjaGVkdWxlRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQpCit2b2lkIEZv
bnRMb2FkZXI6OnNjaGVkdWxlRXZlbnQoUmVmUHRyPEV2ZW50PiBldmVudCkKIHsKICAgICBtX3Bl
bmRpbmdFdmVudHMuYXBwZW5kKGV2ZW50KTsKICAgICBpZiAoIW1fcGVuZGluZ0V2ZW50c1RpbWVy
LmlzQWN0aXZlKCkpCkBAIC0yMjgsNyArMjI4LDcgQEAgdm9pZCBGb250TG9hZGVyOjpsb2FkRXJy
b3IoQ1NTRm9udEZhY2VSdWxlKiBydWxlLCBDU1NGb250RmFjZVNvdXJjZSogc291cmNlKQogICAg
ICAgICBtX2xvYWRpbmdEb25lRXZlbnQgPSBDU1NGb250RmFjZUxvYWRFdmVudDo6Y3JlYXRlRm9y
Rm9udEZhY2VSdWxlKGV2ZW50TmFtZXMoKS5sb2FkaW5nZG9uZUV2ZW50LCBydWxlKTsKIH0KIAot
dm9pZCBGb250TG9hZGVyOjpub3RpZnlXaGVuRm9udHNSZWFkeShQYXNzUmVmUHRyPFZvaWRDYWxs
YmFjaz4gY2FsbGJhY2spCit2b2lkIEZvbnRMb2FkZXI6Om5vdGlmeVdoZW5Gb250c1JlYWR5KFJl
ZlB0cjxWb2lkQ2FsbGJhY2s+IGNhbGxiYWNrKQogewogICAgIG1fY2FsbGJhY2tzLmFwcGVuZChj
YWxsYmFjayk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udExvYWRlci5o
IGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRMb2FkZXIuaAppbmRleCBkZmM1MDFhN2ViZWUwOTVm
MjEyNTI5ODdmY2IzYzZlMGRhYzRjZmI2Li43ZTdhZDU5ZjIwY2M2ZmY2ZTA2YjY0ZWQyMGU0ZjY2
ZWY5NzE2Mjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udExvYWRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250TG9hZGVyLmgKQEAgLTMzLDcgKzMzLDYgQEAKICNp
bmNsdWRlICJFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSAiVm9p
ZENhbGxiYWNrLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIApAQCAtNjEsNyArNjAsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBsb2FkRm9udChjb25zdCBEaWN0aW9uYXJ5Jik7CiAgICAgdm9p
ZCBsb2FkRm9udERvbmUoY29uc3QgTG9hZEZvbnRDYWxsYmFjayYpOwogCi0gICAgdm9pZCBub3Rp
ZnlXaGVuRm9udHNSZWFkeShQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4pOworICAgIHZvaWQgbm90
aWZ5V2hlbkZvbnRzUmVhZHkoUmVmUHRyPFZvaWRDYWxsYmFjaz4pOwogCiAgICAgYm9vbCBsb2Fk
aW5nKCkgY29uc3QgeyByZXR1cm4gbV9udW1Mb2FkaW5nRnJvbUNTUyA+IDAgfHwgbV9udW1Mb2Fk
aW5nRnJvbUpTID4gMDsgfQogCkBAIC05MSw3ICs5MCw3IEBAIHByaXZhdGU6CiAgICAgY29uc3Qg
Y2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgY2Fu
U3VzcGVuZEZvclBhZ2VDYWNoZSgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdm9pZCBzY2hlZHVs
ZUV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+KTsKKyAgICB2b2lkIHNjaGVkdWxlRXZlbnQoUmVmUHRy
PEV2ZW50Pik7CiAgICAgdm9pZCBmaXJlUGVuZGluZ0V2ZW50cygpOwogICAgIGJvb2wgcmVzb2x2
ZUZvbnRTdHlsZShjb25zdCBTdHJpbmcmLCBGb250Q2FzY2FkZSYpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvTGVuZ3RoUmVwZWF0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTGVu
Z3RoUmVwZWF0LmgKaW5kZXggYjExZjA2YjNlYzNhYTVmYmM1ZTEwMDI1NGM5NGRkZjVhNTlmZjAx
NC4uNjEzNzVjNDNmZGYwODM5NmM0MTFkMWE4NjY0Yjg0Y2I2ZDllOWE0MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0xlbmd0aFJlcGVhdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9MZW5ndGhSZXBlYXQuaApAQCAtMzYsMTMgKzM2LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgTGVuZ3RoUmVwZWF0IDogcHVibGljIFJlZkNvdW50ZWQ8TGVuZ3RoUmVwZWF0PiB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxMZW5ndGhSZXBlYXQ+IGNyZWF0ZShQYXNzUmVmUHRy
PENTU1ZhbHVlPiBpbnRlcnZhbCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBMZW5ndGhSZXBlYXQo
aW50ZXJ2YWwpKTsgfQorICAgIHN0YXRpYyBSZWY8TGVuZ3RoUmVwZWF0PiBjcmVhdGUoUmVmUHRy
PENTU1ZhbHVlPiBpbnRlcnZhbCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBMZW5ndGhSZXBlYXQo
aW50ZXJ2YWwpKTsgfQogCiAgICAgUmVmPExlbmd0aFJlcGVhdD4gY2xvbmVGb3JDU1NPTSgpIGNv
bnN0IHsgcmV0dXJuIGNyZWF0ZShpbnRlcnZhbCgpKTsgfQogCiAgICAgQ1NTVmFsdWUqIGludGVy
dmFsKCkgY29uc3QgeyByZXR1cm4gbV9pbnRlcnZhbC5nZXQoKTsgfQogCi0gICAgdm9pZCBzZXRJ
bnRlcnZhbChQYXNzUmVmUHRyPENTU1ZhbHVlPiBpbnRlcnZhbCkgeyBtX2ludGVydmFsID0gaW50
ZXJ2YWw7IH0KKyAgICB2b2lkIHNldEludGVydmFsKFJlZlB0cjxDU1NWYWx1ZT4gaW50ZXJ2YWwp
IHsgbV9pbnRlcnZhbCA9IGludGVydmFsOyB9CiAKICAgICBib29sIGVxdWFscyhjb25zdCBMZW5n
dGhSZXBlYXQmIG90aGVyKSBjb25zdAogICAgIHsKQEAgLTU1LDcgKzU1LDcgQEAgcHVibGljOgog
ICAgIH0KIAogcHJpdmF0ZToKLSAgICBMZW5ndGhSZXBlYXQoUGFzc1JlZlB0cjxDU1NWYWx1ZT4g
aW50ZXJ2YWwpCisgICAgTGVuZ3RoUmVwZWF0KFJlZlB0cjxDU1NWYWx1ZT4gaW50ZXJ2YWwpCiAg
ICAgICAgIDogbV9pbnRlcnZhbChpbnRlcnZhbCkKICAgICB7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL01lZGlhTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlh
TGlzdC5oCmluZGV4IDczMTAzNDAwYjQ2N2NiYjRlZjVhODA1ZTQyYzkwMjJhMGZlOTA3M2EuLjI3
ZjBiYWVmNTM1MmMzMjdjOWUyNzEzYjc5ZDk2YzEwMmNhMzVhZTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9NZWRpYUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFM
aXN0LmgKQEAgLTI0LDcgKzI0LDYgQEAKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5j
bHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL1Bh
c3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
TWVkaWFRdWVyeUxpc3QuY3BwCmluZGV4IDdiNGZkMDJkZDU0Yjc0ZDQwMTcyZTMwNGIyMGNkZGFj
NzliMGJlN2UuLjQ1ZWVlNGQ1YTgxYmI4OWU3NjQ1ZmIyMWZjMmJmNjM5ZTI1OTM1NzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5TGlzdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL01lZGlhUXVlcnlMaXN0LmNwcApAQCAtMjcsMTIgKzI3LDEyIEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPE1lZGlhUXVlcnlMaXN0PiBNZWRpYVF1ZXJ5TGlzdDo6
Y3JlYXRlKFBhc3NSZWZQdHI8TWVkaWFRdWVyeU1hdGNoZXI+IHZlY3RvciwgUGFzc1JlZlB0cjxN
ZWRpYVF1ZXJ5U2V0PiBtZWRpYSwgYm9vbCBtYXRjaGVzKQorUmVmPE1lZGlhUXVlcnlMaXN0PiBN
ZWRpYVF1ZXJ5TGlzdDo6Y3JlYXRlKFJlZlB0cjxNZWRpYVF1ZXJ5TWF0Y2hlcj4gdmVjdG9yLCBS
ZWZQdHI8TWVkaWFRdWVyeVNldD4gbWVkaWEsIGJvb2wgbWF0Y2hlcykKIHsKICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBNZWRpYVF1ZXJ5TGlzdCh2ZWN0b3IsIG1lZGlhLCBtYXRjaGVzKSk7CiB9
CiAKLU1lZGlhUXVlcnlMaXN0OjpNZWRpYVF1ZXJ5TGlzdChQYXNzUmVmUHRyPE1lZGlhUXVlcnlN
YXRjaGVyPiB2ZWN0b3IsIFBhc3NSZWZQdHI8TWVkaWFRdWVyeVNldD4gbWVkaWEsIGJvb2wgbWF0
Y2hlcykKK01lZGlhUXVlcnlMaXN0OjpNZWRpYVF1ZXJ5TGlzdChSZWZQdHI8TWVkaWFRdWVyeU1h
dGNoZXI+IHZlY3RvciwgUmVmUHRyPE1lZGlhUXVlcnlTZXQ+IG1lZGlhLCBib29sIG1hdGNoZXMp
CiAgICAgOiBtX21hdGNoZXIodmVjdG9yKQogICAgICwgbV9tZWRpYShtZWRpYSkKICAgICAsIG1f
ZXZhbHVhdGlvblJvdW5kKG1fbWF0Y2hlci0+ZXZhbHVhdGlvblJvdW5kKCkpCkBAIC01MCw3ICs1
MCw3IEBAIFN0cmluZyBNZWRpYVF1ZXJ5TGlzdDo6bWVkaWEoKSBjb25zdAogICAgIHJldHVybiBt
X21lZGlhLT5tZWRpYVRleHQoKTsKIH0KIAotdm9pZCBNZWRpYVF1ZXJ5TGlzdDo6YWRkTGlzdGVu
ZXIoUGFzc1JlZlB0cjxNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyPiBsaXN0ZW5lcikKK3ZvaWQgTWVk
aWFRdWVyeUxpc3Q6OmFkZExpc3RlbmVyKFJlZlB0cjxNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyPiBs
aXN0ZW5lcikKIHsKICAgICBpZiAoIWxpc3RlbmVyKQogICAgICAgICByZXR1cm47CkBAIC01OCw3
ICs1OCw3IEBAIHZvaWQgTWVkaWFRdWVyeUxpc3Q6OmFkZExpc3RlbmVyKFBhc3NSZWZQdHI8TWVk
aWFRdWVyeUxpc3RMaXN0ZW5lcj4gbGlzdGVuZXIpCiAgICAgbV9tYXRjaGVyLT5hZGRMaXN0ZW5l
cihsaXN0ZW5lciwgdGhpcyk7CiB9CiAKLXZvaWQgTWVkaWFRdWVyeUxpc3Q6OnJlbW92ZUxpc3Rl
bmVyKFBhc3NSZWZQdHI8TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcj4gbGlzdGVuZXIpCit2b2lkIE1l
ZGlhUXVlcnlMaXN0OjpyZW1vdmVMaXN0ZW5lcihSZWZQdHI8TWVkaWFRdWVyeUxpc3RMaXN0ZW5l
cj4gbGlzdGVuZXIpCiB7CiAgICAgaWYgKCFsaXN0ZW5lcikKICAgICAgICAgcmV0dXJuOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlMaXN0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvTWVkaWFRdWVyeUxpc3QuaAppbmRleCA2OWFmYTc2YjBlMDZiMDI4NDQ0Nzk0Y2Vj
MWYwOWJlODE2YmE1Njg5Li44ZmNmYzgzNTEwM2FlMzBlZjc0ZjVlMWE1ZjMzZWFiYTY2YTVlNTc0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUxpc3QuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUxpc3QuaApAQCAtMzgsMTkgKzM4LDE5IEBAIGNs
YXNzIE1lZGlhUXVlcnlTZXQ7CiAKIGNsYXNzIE1lZGlhUXVlcnlMaXN0IDogcHVibGljIFJlZkNv
dW50ZWQ8TWVkaWFRdWVyeUxpc3Q+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPE1lZGlhUXVl
cnlMaXN0PiBjcmVhdGUoUGFzc1JlZlB0cjxNZWRpYVF1ZXJ5TWF0Y2hlcj4sIFBhc3NSZWZQdHI8
TWVkaWFRdWVyeVNldD4sIGJvb2wpOworICAgIHN0YXRpYyBSZWY8TWVkaWFRdWVyeUxpc3Q+IGNy
ZWF0ZShSZWZQdHI8TWVkaWFRdWVyeU1hdGNoZXI+LCBSZWZQdHI8TWVkaWFRdWVyeVNldD4sIGJv
b2wpOwogICAgIH5NZWRpYVF1ZXJ5TGlzdCgpOwogCiAgICAgU3RyaW5nIG1lZGlhKCkgY29uc3Q7
CiAgICAgYm9vbCBtYXRjaGVzKCk7CiAKLSAgICB2b2lkIGFkZExpc3RlbmVyKFBhc3NSZWZQdHI8
TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcj4pOwotICAgIHZvaWQgcmVtb3ZlTGlzdGVuZXIoUGFzc1Jl
ZlB0cjxNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyPik7CisgICAgdm9pZCBhZGRMaXN0ZW5lcihSZWZQ
dHI8TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcj4pOworICAgIHZvaWQgcmVtb3ZlTGlzdGVuZXIoUmVm
UHRyPE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI+KTsKIAogICAgIHZvaWQgZXZhbHVhdGUoTWVkaWFR
dWVyeUV2YWx1YXRvciosIGJvb2wmIG5vdGlmaWNhdGlvbk5lZWRlZCk7CiAKIHByaXZhdGU6Ci0g
ICAgTWVkaWFRdWVyeUxpc3QoUGFzc1JlZlB0cjxNZWRpYVF1ZXJ5TWF0Y2hlcj4sIFBhc3NSZWZQ
dHI8TWVkaWFRdWVyeVNldD4sIGJvb2wgbWF0Y2hlcyk7CisgICAgTWVkaWFRdWVyeUxpc3QoUmVm
UHRyPE1lZGlhUXVlcnlNYXRjaGVyPiwgUmVmUHRyPE1lZGlhUXVlcnlTZXQ+LCBib29sIG1hdGNo
ZXMpOwogICAgIHZvaWQgc2V0TWF0Y2hlcyhib29sKTsKIAogICAgIFJlZlB0cjxNZWRpYVF1ZXJ5
TWF0Y2hlcj4gbV9tYXRjaGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlh
UXVlcnlNYXRjaGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5TWF0Y2hlci5j
cHAKaW5kZXggNGRlOTYwYmYzMDEwM2FjZjA1N2IxYmE0M2IyYzdiOGRkYmY5NDBjYS4uNDdlMTBh
YzFlY2E3YjA3MDNjMjUzNGZlYWQ4M2U5YzRmM2I1ZWM0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL01lZGlhUXVlcnlNYXRjaGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
TWVkaWFRdWVyeU1hdGNoZXIuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotTWVkaWFRdWVyeU1hdGNoZXI6Okxpc3RlbmVyOjpMaXN0ZW5lcihQYXNzUmVmUHRy
PE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI+IGxpc3RlbmVyLCBQYXNzUmVmUHRyPE1lZGlhUXVlcnlM
aXN0PiBxdWVyeSkKK01lZGlhUXVlcnlNYXRjaGVyOjpMaXN0ZW5lcjo6TGlzdGVuZXIoUmVmUHRy
PE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI+IGxpc3RlbmVyLCBSZWZQdHI8TWVkaWFRdWVyeUxpc3Q+
IHF1ZXJ5KQogICAgIDogbV9saXN0ZW5lcihsaXN0ZW5lcikKICAgICAsIG1fcXVlcnkocXVlcnkp
CiB7CkBAIC0xMTIsNyArMTEyLDcgQEAgUmVmUHRyPE1lZGlhUXVlcnlMaXN0PiBNZWRpYVF1ZXJ5
TWF0Y2hlcjo6bWF0Y2hNZWRpYShjb25zdCBTdHJpbmcmIHF1ZXJ5KQogICAgIHJldHVybiBNZWRp
YVF1ZXJ5TGlzdDo6Y3JlYXRlKHRoaXMsIG1lZGlhLCBldmFsdWF0ZShtZWRpYS5nZXQoKSkpOwog
fQogCi12b2lkIE1lZGlhUXVlcnlNYXRjaGVyOjphZGRMaXN0ZW5lcihQYXNzUmVmUHRyPE1lZGlh
UXVlcnlMaXN0TGlzdGVuZXI+IGxpc3RlbmVyLCBQYXNzUmVmUHRyPE1lZGlhUXVlcnlMaXN0PiBx
dWVyeSkKK3ZvaWQgTWVkaWFRdWVyeU1hdGNoZXI6OmFkZExpc3RlbmVyKFJlZlB0cjxNZWRpYVF1
ZXJ5TGlzdExpc3RlbmVyPiBsaXN0ZW5lciwgUmVmUHRyPE1lZGlhUXVlcnlMaXN0PiBxdWVyeSkK
IHsKICAgICBpZiAoIW1fZG9jdW1lbnQpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5TWF0Y2hlci5oIGIvU291cmNlL1dlYkNvcmUvY3Nz
L01lZGlhUXVlcnlNYXRjaGVyLmgKaW5kZXggOGRhYzE3MjZhZWNiMmQ0ODFlM2MxMjE0MzRkMmJm
OTZlM2M1OGE4MC4uYzJmZjNjZDI5Y2EwYzRlMzVjMzhlYTZjOGU5ODY3N2NlM2MyYjJlMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlNYXRjaGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlNYXRjaGVyLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVi
bGljOgogICAgIH5NZWRpYVF1ZXJ5TWF0Y2hlcigpOwogICAgIHZvaWQgZG9jdW1lbnREZXN0cm95
ZWQoKTsKIAotICAgIHZvaWQgYWRkTGlzdGVuZXIoUGFzc1JlZlB0cjxNZWRpYVF1ZXJ5TGlzdExp
c3RlbmVyPiwgUGFzc1JlZlB0cjxNZWRpYVF1ZXJ5TGlzdD4pOworICAgIHZvaWQgYWRkTGlzdGVu
ZXIoUmVmUHRyPE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI+LCBSZWZQdHI8TWVkaWFRdWVyeUxpc3Q+
KTsKICAgICB2b2lkIHJlbW92ZUxpc3RlbmVyKE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIqLCBNZWRp
YVF1ZXJ5TGlzdCopOwogCiAgICAgUmVmUHRyPE1lZGlhUXVlcnlMaXN0PiBtYXRjaE1lZGlhKGNv
bnN0IFN0cmluZyYpOwpAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGNs
YXNzIExpc3RlbmVyIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIExpc3RlbmVyKFBhc3NSZWZQdHI8
TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcj4sIFBhc3NSZWZQdHI8TWVkaWFRdWVyeUxpc3Q+KTsKKyAg
ICAgICAgTGlzdGVuZXIoUmVmUHRyPE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI+LCBSZWZQdHI8TWVk
aWFRdWVyeUxpc3Q+KTsKICAgICAgICAgfkxpc3RlbmVyKCk7CiAKICAgICAgICAgdm9pZCBldmFs
dWF0ZShNZWRpYVF1ZXJ5RXZhbHVhdG9yKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvUGFpci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1BhaXIuaAppbmRleCBlMzZlYmYxMTJlYTU1
YmYyNGRiMDQzY2I0YjYyYzcyOTExNzQ1NmE1Li5mZTQwYjQ3OGQzMTJmYWExY2EyNjc1ZDk1Njhi
MWYwODhkNzBmNWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUGFpci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9QYWlyLmgKQEAgLTIzLDcgKzIzLDYgQEAKIAogI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWUuaCIKLSNpbmNs
dWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L1JlY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9SZWN0LmgKaW5kZXggZGQ5Y2QwNDVkZDY1ZTcw
ZTI1MTMzYzEyZDY1MzE4ZjY0ZjU0MmJhNi4uMzE3OGJlZTMwM2ZhYjY1NGNlYWQwN2QyOWU0YjM5
Y2MzMzVlMWUzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1JlY3QuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvUmVjdC5oCkBAIC0zNCwxMCArMzQsMTAgQEAgcHVibGljOgogICAg
IENTU1ByaW1pdGl2ZVZhbHVlKiBib3R0b20oKSBjb25zdCB7IHJldHVybiBtX2JvdHRvbS5nZXQo
KTsgfQogICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBsZWZ0KCkgY29uc3QgeyByZXR1cm4gbV9sZWZ0
LmdldCgpOyB9CiAKLSAgICB2b2lkIHNldFRvcChQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVl
PiB0b3ApIHsgbV90b3AgPSB0b3A7IH0KLSAgICB2b2lkIHNldFJpZ2h0KFBhc3NSZWZQdHI8Q1NT
UHJpbWl0aXZlVmFsdWU+IHJpZ2h0KSB7IG1fcmlnaHQgPSByaWdodDsgfQotICAgIHZvaWQgc2V0
Qm90dG9tKFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGJvdHRvbSkgeyBtX2JvdHRvbSA9
IGJvdHRvbTsgfQotICAgIHZvaWQgc2V0TGVmdChQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVl
PiBsZWZ0KSB7IG1fbGVmdCA9IGxlZnQ7IH0KKyAgICB2b2lkIHNldFRvcChSZWZQdHI8Q1NTUHJp
bWl0aXZlVmFsdWU+IHRvcCkgeyBtX3RvcCA9IHRvcDsgfQorICAgIHZvaWQgc2V0UmlnaHQoUmVm
UHRyPENTU1ByaW1pdGl2ZVZhbHVlPiByaWdodCkgeyBtX3JpZ2h0ID0gcmlnaHQ7IH0KKyAgICB2
b2lkIHNldEJvdHRvbShSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGJvdHRvbSkgeyBtX2JvdHRv
bSA9IGJvdHRvbTsgfQorICAgIHZvaWQgc2V0TGVmdChSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+
IGxlZnQpIHsgbV9sZWZ0ID0gbGVmdDsgfQogCiAgICAgYm9vbCBlcXVhbHMoY29uc3QgUmVjdEJh
c2UmIG90aGVyKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
VkdDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1NW
R0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKaW5kZXggOGE5MGM4YThmNmNkYzc4ZTE2
MDRjMjdiY2U3N2YwZTVkOGY0OWY4ZS4uNzNjOGUyNWVjODU5ZGQ0YWFhYTliZTY2YWE2MjY3NmI1
N2UwMTgzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1NWR0NTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1NWR0NTU0NvbXB1dGVk
U3R5bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgc3RhdGljIFJlZlB0cjxDU1NW
YWx1ZT4gc3Ryb2tlRGFzaEFycmF5VG9DU1NWYWx1ZUxpc3QoY29uc3QgVmVjdG9yPFNWR0xlbmd0
aD4mIGQKICAgICByZXR1cm4gbGlzdDsKIH0KIAotUmVmUHRyPFNWR1BhaW50PiBDb21wdXRlZFN0
eWxlRXh0cmFjdG9yOjphZGp1c3RTVkdQYWludEZvckN1cnJlbnRDb2xvcihQYXNzUmVmUHRyPFNW
R1BhaW50PiBuZXdQYWludCwgUmVuZGVyU3R5bGUqIHN0eWxlKSBjb25zdAorUmVmUHRyPFNWR1Bh
aW50PiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjphZGp1c3RTVkdQYWludEZvckN1cnJlbnRDb2xv
cihSZWZQdHI8U1ZHUGFpbnQ+IG5ld1BhaW50LCBSZW5kZXJTdHlsZSogc3R5bGUpIGNvbnN0CiB7
CiAgICAgUmVmUHRyPFNWR1BhaW50PiBwYWludCA9IG5ld1BhaW50OwogICAgIGlmIChwYWludC0+
cGFpbnRUeXBlKCkgPT0gU1ZHUGFpbnQ6OlNWR19QQUlOVFRZUEVfQ1VSUkVOVENPTE9SIHx8IHBh
aW50LT5wYWludFR5cGUoKSA9PSBTVkdQYWludDo6U1ZHX1BBSU5UVFlQRV9VUklfQ1VSUkVOVENP
TE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRl
ci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCmluZGV4IGVi
MDNmYjA1ZGVkNjFlMjhiYjdiZTdhZTcyZmIxOTJiMjY3YjIwNGEuLjRmN2Q3YzNhODU4ZDk3OWZh
YzMwNGYyZTAyMWRlNjc1NThjMjBlN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWls
ZGVyQ29udmVydGVyLmgKQEAgLTcwLDI1ICs3MCwyNSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHNo
b3J0IGNvbnZlcnRXZWJraXRIeXBoZW5hdGVMaW1pdExpbmVzKFN0eWxlUmVzb2x2ZXImLCBDU1NW
YWx1ZSYpOwogICAgIHRlbXBsYXRlIDxDU1NQcm9wZXJ0eUlEIHByb3BlcnR5PiBzdGF0aWMgTmlu
ZVBpZWNlSW1hZ2UgY29udmVydEJvcmRlckltYWdlKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYp
OwogICAgIHRlbXBsYXRlIDxDU1NQcm9wZXJ0eUlEIHByb3BlcnR5PiBzdGF0aWMgTmluZVBpZWNl
SW1hZ2UgY29udmVydEJvcmRlck1hc2soU3R5bGVSZXNvbHZlciYsIENTU1ZhbHVlJik7Ci0gICAg
dGVtcGxhdGUgPENTU1Byb3BlcnR5SUQgcHJvcGVydHk+IHN0YXRpYyBQYXNzUmVmUHRyPFN0eWxl
SW1hZ2U+IGNvbnZlcnRTdHlsZUltYWdlKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYpOworICAg
IHRlbXBsYXRlIDxDU1NQcm9wZXJ0eUlEIHByb3BlcnR5PiBzdGF0aWMgUmVmUHRyPFN0eWxlSW1h
Z2U+IGNvbnZlcnRTdHlsZUltYWdlKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYpOwogICAgIHN0
YXRpYyBUcmFuc2Zvcm1PcGVyYXRpb25zIGNvbnZlcnRUcmFuc2Zvcm0oU3R5bGVSZXNvbHZlciYs
IENTU1ZhbHVlJik7CiAgICAgc3RhdGljIFN0cmluZyBjb252ZXJ0U3RyaW5nKFN0eWxlUmVzb2x2
ZXImLCBDU1NWYWx1ZSYpOwogICAgIHN0YXRpYyBTdHJpbmcgY29udmVydFN0cmluZ09yQXV0byhT
dHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmKTsKICAgICBzdGF0aWMgU3RyaW5nIGNvbnZlcnRTdHJp
bmdPck5vbmUoU3R5bGVSZXNvbHZlciYsIENTU1ZhbHVlJik7CiAgICAgc3RhdGljIFRleHRFbXBo
YXNpc1Bvc2l0aW9uIGNvbnZlcnRUZXh0RW1waGFzaXNQb3NpdGlvbihTdHlsZVJlc29sdmVyJiwg
Q1NTVmFsdWUmKTsKICAgICBzdGF0aWMgRVRleHRBbGlnbiBjb252ZXJ0VGV4dEFsaWduKFN0eWxl
UmVzb2x2ZXImLCBDU1NWYWx1ZSYpOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPENsaXBQYXRoT3Bl
cmF0aW9uPiBjb252ZXJ0Q2xpcFBhdGgoU3R5bGVSZXNvbHZlciYsIENTU1ZhbHVlJik7CisgICAg
c3RhdGljIFJlZlB0cjxDbGlwUGF0aE9wZXJhdGlvbj4gY29udmVydENsaXBQYXRoKFN0eWxlUmVz
b2x2ZXImLCBDU1NWYWx1ZSYpOwogICAgIHN0YXRpYyBFUmVzaXplIGNvbnZlcnRSZXNpemUoU3R5
bGVSZXNvbHZlciYsIENTU1ZhbHVlJik7CiAgICAgc3RhdGljIGludCBjb252ZXJ0TWFycXVlZVJl
cGV0aXRpb24oU3R5bGVSZXNvbHZlciYsIENTU1ZhbHVlJik7CiAgICAgc3RhdGljIGludCBjb252
ZXJ0TWFycXVlZVNwZWVkKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYpOwotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFF1b3Rlc0RhdGE+IGNvbnZlcnRRdW90ZXMoU3R5bGVSZXNvbHZlciYsIENTU1Zh
bHVlJik7CisgICAgc3RhdGljIFJlZlB0cjxRdW90ZXNEYXRhPiBjb252ZXJ0UXVvdGVzKFN0eWxl
UmVzb2x2ZXImLCBDU1NWYWx1ZSYpOwogICAgIHN0YXRpYyBUZXh0VW5kZXJsaW5lUG9zaXRpb24g
Y29udmVydFRleHRVbmRlcmxpbmVQb3NpdGlvbihTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmKTsK
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHlsZVJlZmxlY3Rpb24+IGNvbnZlcnRSZWZsZWN0aW9u
KFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYpOworICAgIHN0YXRpYyBSZWZQdHI8U3R5bGVSZWZs
ZWN0aW9uPiBjb252ZXJ0UmVmbGVjdGlvbihTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmKTsKICAg
ICBzdGF0aWMgSW50U2l6ZSBjb252ZXJ0SW5pdGlhbExldHRlcihTdHlsZVJlc29sdmVyJiwgQ1NT
VmFsdWUmKTsKICAgICBzdGF0aWMgZmxvYXQgY29udmVydFRleHRTdHJva2VXaWR0aChTdHlsZVJl
c29sdmVyJiwgQ1NTVmFsdWUmKTsKICAgICBzdGF0aWMgTGluZUJveENvbnRhaW4gY29udmVydExp
bmVCb3hDb250YWluKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYpOwogICAgIHN0YXRpYyBUZXh0
RGVjb3JhdGlvblNraXAgY29udmVydFRleHREZWNvcmF0aW9uU2tpcChTdHlsZVJlc29sdmVyJiwg
Q1NTVmFsdWUmKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTaGFwZVZhbHVlPiBjb252ZXJ0U2hh
cGVWYWx1ZShTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmKTsKKyAgICBzdGF0aWMgUmVmUHRyPFNo
YXBlVmFsdWU+IGNvbnZlcnRTaGFwZVZhbHVlKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYpOwog
I2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxT
Y3JvbGxTbmFwUG9pbnRzPiBjb252ZXJ0U2Nyb2xsU25hcFBvaW50cyhTdHlsZVJlc29sdmVyJiwg
Q1NTVmFsdWUmKTsKICAgICBzdGF0aWMgTGVuZ3RoU2l6ZSBjb252ZXJ0U25hcENvb3JkaW5hdGVQ
YWlyKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYsIHNpemVfdCBvZmZzZXQgPSAwKTsKQEAgLTMz
Myw3ICszMzMsNyBAQCBpbmxpbmUgTmluZVBpZWNlSW1hZ2UgU3R5bGVCdWlsZGVyQ29udmVydGVy
Ojpjb252ZXJ0Qm9yZGVyTWFzayhTdHlsZVJlc29sdmVyJiBzdAogfQogCiB0ZW1wbGF0ZSA8Q1NT
UHJvcGVydHlJRCBwcm9wZXJ0eT4KLWlubGluZSBQYXNzUmVmUHRyPFN0eWxlSW1hZ2U+IFN0eWxl
QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFN0eWxlSW1hZ2UoU3R5bGVSZXNvbHZlciYgc3R5bGVS
ZXNvbHZlciwgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIFJlZlB0cjxTdHlsZUltYWdlPiBTdHls
ZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRTdHlsZUltYWdlKFN0eWxlUmVzb2x2ZXImIHN0eWxl
UmVzb2x2ZXIsIENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICByZXR1cm4gc3R5bGVSZXNvbHZlci5z
dHlsZUltYWdlKHByb3BlcnR5LCB2YWx1ZSk7CiB9CkBAIC00MTIsNyArNDEyLDcgQEAgaW5saW5l
IEVUZXh0QWxpZ24gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VGV4dEFsaWduKFN0eWxl
UmVzb2x2ZXImIHN0eWxlUmUKICAgICByZXR1cm4gcGFyZW50U3R5bGUtPnRleHRBbGlnbigpOwog
fQogCi1pbmxpbmUgUGFzc1JlZlB0cjxDbGlwUGF0aE9wZXJhdGlvbj4gU3R5bGVCdWlsZGVyQ29u
dmVydGVyOjpjb252ZXJ0Q2xpcFBhdGgoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgQ1NT
VmFsdWUmIHZhbHVlKQoraW5saW5lIFJlZlB0cjxDbGlwUGF0aE9wZXJhdGlvbj4gU3R5bGVCdWls
ZGVyQ29udmVydGVyOjpjb252ZXJ0Q2xpcFBhdGgoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZl
ciwgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGlmIChpczxDU1NQcmltaXRpdmVWYWx1ZT4odmFs
dWUpKSB7CiAgICAgICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0
aXZlVmFsdWU+KHZhbHVlKTsKQEAgLTUwOSw3ICs1MDksNyBAQCBpbmxpbmUgaW50IFN0eWxlQnVp
bGRlckNvbnZlcnRlcjo6Y29udmVydE1hcnF1ZWVTcGVlZChTdHlsZVJlc29sdmVyJiwgQ1NTVmFs
dWUmCiAgICAgcmV0dXJuIHNwZWVkOwogfQogCi1pbmxpbmUgUGFzc1JlZlB0cjxRdW90ZXNEYXRh
PiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRRdW90ZXMoU3R5bGVSZXNvbHZlciYsIENT
U1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBSZWZQdHI8UXVvdGVzRGF0YT4gU3R5bGVCdWlsZGVyQ29u
dmVydGVyOjpjb252ZXJ0UXVvdGVzKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYgdmFsdWUpCiB7
CiAgICAgaWYgKGlzPENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkpIHsKICAgICAgICAgQVNTRVJU
KGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkuZ2V0VmFsdWVJRCgpID09IENTU1Zh
bHVlTm9uZSk7CkBAIC01NDYsNyArNTQ2LDcgQEAgaW5saW5lIFRleHRVbmRlcmxpbmVQb3NpdGlv
biBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRUZXh0VW5kZXJsaW5lUG9zaXRpb24KICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dFVuZGVybGluZVBvc2l0aW9uPihjb21iaW5lZFBvc2l0
aW9uKTsKIH0KIAotaW5saW5lIFBhc3NSZWZQdHI8U3R5bGVSZWZsZWN0aW9uPiBTdHlsZUJ1aWxk
ZXJDb252ZXJ0ZXI6OmNvbnZlcnRSZWZsZWN0aW9uKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2
ZXIsIENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBSZWZQdHI8U3R5bGVSZWZsZWN0aW9uPiBTdHls
ZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRSZWZsZWN0aW9uKFN0eWxlUmVzb2x2ZXImIHN0eWxl
UmVzb2x2ZXIsIENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBpZiAoaXM8Q1NTUHJpbWl0aXZlVmFs
dWU+KHZhbHVlKSkgewogICAgICAgICBBU1NFUlQoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+
KHZhbHVlKS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lKTsKQEAgLTY2Niw3ICs2NjYsNyBA
QCBzdGF0aWMgaW5saW5lIGJvb2wgaXNJbWFnZVNoYXBlKGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkK
ICAgICAgICAgfHwgaXM8Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZT4odmFsdWUpOwogfQogCi1pbmxp
bmUgUGFzc1JlZlB0cjxTaGFwZVZhbHVlPiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRT
aGFwZVZhbHVlKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVlJiB2YWx1ZSkK
K2lubGluZSBSZWZQdHI8U2hhcGVWYWx1ZT4gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0
U2hhcGVWYWx1ZShTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBDU1NWYWx1ZSYgdmFsdWUp
CiB7CiAgICAgaWYgKGlzPENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkpIHsKICAgICAgICAgQVNT
RVJUKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkuZ2V0VmFsdWVJRCgpID09IENT
U1ZhbHVlTm9uZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0
aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuY3BwCmluZGV4IDU4
NzIzZTFlYTJiOWViNjZmOWQyNjYyMmMxMmMyYzQ3OGVmNWUzMDUuLjM0YjNlMGE0MGU1ZGYxNTlh
ZWEyYWYzZmQ3ZjQwZWY1NzFhOWNlNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVByb3BlcnRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRp
ZXMuY3BwCkBAIC01NzksNyArNTc5LDcgQEAgU3RyaW5nIFN0eWxlUHJvcGVydGllczo6Ym9yZGVy
UHJvcGVydHlWYWx1ZShDb21tb25WYWx1ZU1vZGUgdmFsdWVNb2RlKSBjb25zdAogICAgIHJldHVy
biByZXN1bHQuaXNFbXB0eSgpID8gU3RyaW5nKCkgOiByZXN1bHQudG9TdHJpbmcoKTsKIH0KIAot
UGFzc1JlZlB0cjxDU1NWYWx1ZT4gU3R5bGVQcm9wZXJ0aWVzOjpnZXRQcm9wZXJ0eUNTU1ZhbHVl
KENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCkgY29uc3QKK1JlZlB0cjxDU1NWYWx1ZT4gU3R5bGVQ
cm9wZXJ0aWVzOjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCkg
Y29uc3QKIHsKICAgICBpbnQgZm91bmRQcm9wZXJ0eUluZGV4ID0gZmluZFByb3BlcnR5SW5kZXgo
cHJvcGVydHlJRCk7CiAgICAgaWYgKGZvdW5kUHJvcGVydHlJbmRleCA9PSAtMSkKQEAgLTY4NCw3
ICs2ODQsNyBAQCBib29sIE11dGFibGVTdHlsZVByb3BlcnRpZXM6OnNldFByb3BlcnR5KENTU1By
b3BlcnR5SUQgcHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJgogICAgIHJldHVybiBDU1NQYXJzZXI6
OnBhcnNlVmFsdWUodGhpcywgcHJvcGVydHlJRCwgdmFsdWUsIGltcG9ydGFudCwgY3NzUGFyc2Vy
TW9kZSgpLCBjb250ZXh0U3R5bGVTaGVldCkgPT0gQ1NTUGFyc2VyOjpQYXJzZVJlc3VsdDo6Q2hh
bmdlZDsKIH0KIAotdm9pZCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpzZXRQcm9wZXJ0eShDU1NQ
cm9wZXJ0eUlEIHByb3BlcnR5SUQsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHBycFZhbHVlLCBib29s
IGltcG9ydGFudCkKK3ZvaWQgTXV0YWJsZVN0eWxlUHJvcGVydGllczo6c2V0UHJvcGVydHkoQ1NT
UHJvcGVydHlJRCBwcm9wZXJ0eUlELCBSZWZQdHI8Q1NTVmFsdWU+IHBycFZhbHVlLCBib29sIGlt
cG9ydGFudCkKIHsKICAgICBTdHlsZVByb3BlcnR5U2hvcnRoYW5kIHNob3J0aGFuZCA9IHNob3J0
aGFuZEZvclByb3BlcnR5KHByb3BlcnR5SUQpOwogICAgIGlmICghc2hvcnRoYW5kLmxlbmd0aCgp
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmggYi9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmgKaW5kZXggNmYzMDI0YzdkYzgyODIx
ZjNlZmZlMmUzZTUyODY0ODE4YjA1NGJjMS4uYTY3NjY3MjlhY2RlZDEzZmM2MTA2ZjA0ODViYzFh
NWM3Y2U3ZmU2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGll
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuaApAQCAtODYsNyAr
ODYsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIXByb3Bl
cnR5Q291bnQoKTsgfQogICAgIFByb3BlcnR5UmVmZXJlbmNlIHByb3BlcnR5QXQodW5zaWduZWQp
IGNvbnN0OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gZ2V0UHJv
cGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eUlEKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBS
ZWZQdHI8Q1NTVmFsdWU+IGdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlJRCkgY29uc3Q7
CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGdldFByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJ
RCkgY29uc3Q7CiAgICAgYm9vbCBwcm9wZXJ0eUlzSW1wb3J0YW50KENTU1Byb3BlcnR5SUQpIGNv
bnN0OwogICAgIFN0cmluZyBnZXRQcm9wZXJ0eVNob3J0aGFuZChDU1NQcm9wZXJ0eUlEKSBjb25z
dDsKQEAgLTE5OCw3ICsxOTgsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBUaGVzZSBleHBhbmQgc2hv
cnRoYW5kIHByb3BlcnRpZXMgaW50byBtdWx0aXBsZSBwcm9wZXJ0aWVzLgogICAgIGJvb2wgc2V0
UHJvcGVydHkoQ1NTUHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgYm9vbCBpbXBvcnRh
bnQgPSBmYWxzZSwgU3R5bGVTaGVldENvbnRlbnRzKiBjb250ZXh0U3R5bGVTaGVldCA9IDApOwot
ICAgIHZvaWQgc2V0UHJvcGVydHkoQ1NTUHJvcGVydHlJRCwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4s
IGJvb2wgaW1wb3J0YW50ID0gZmFsc2UpOworICAgIHZvaWQgc2V0UHJvcGVydHkoQ1NTUHJvcGVy
dHlJRCwgUmVmUHRyPENTU1ZhbHVlPiwgYm9vbCBpbXBvcnRhbnQgPSBmYWxzZSk7CiAKICAgICAv
LyBUaGVzZSBkbyBub3QuIEZJWE1FOiBUaGlzIGlzIHRvbyBtZXNzeSwgd2UgY2FuIGRvIGJldHRl
ci4KICAgICBib29sIHNldFByb3BlcnR5KENTU1Byb3BlcnR5SUQsIENTU1ZhbHVlSUQgaWRlbnRp
ZmllciwgYm9vbCBpbXBvcnRhbnQgPSBmYWxzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZl
ci5jcHAKaW5kZXggMTM1NmI2ZjM5YWY1YzE0YzMwM2FlZGI0YzA3ZTY0YzQ3MzM3NGJmZS4uNWI1
YWNjNzliMmM2ZGQ0Y2I5YTE0NjJiMzdmZGZlOWY5M2U1YzYyYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVJlc29sdmVyLmNwcApAQCAtMzYyLDcgKzM2Miw3IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6
cG9wUGFyZW50RWxlbWVudChFbGVtZW50KiBwYXJlbnQpCiB9CiAKIC8vIFRoaXMgaXMgYSBzaW1w
bGlmaWVkIHN0eWxlIHNldHRpbmcgZnVuY3Rpb24gZm9yIGtleWZyYW1lIHN0eWxlcwotdm9pZCBT
dHlsZVJlc29sdmVyOjphZGRLZXlmcmFtZVN0eWxlKFBhc3NSZWZQdHI8U3R5bGVSdWxlS2V5ZnJh
bWVzPiBydWxlKQordm9pZCBTdHlsZVJlc29sdmVyOjphZGRLZXlmcmFtZVN0eWxlKFJlZlB0cjxT
dHlsZVJ1bGVLZXlmcmFtZXM+IHJ1bGUpCiB7CiAgICAgQXRvbWljU3RyaW5nIHMocnVsZS0+bmFt
ZSgpKTsKICAgICBtX2tleWZyYW1lc1J1bGVNYXAuc2V0KHMuaW1wbCgpLCBydWxlKTsKQEAgLTk1
Myw3ICs5NTMsNyBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmtleWZyYW1lU3R5bGVzRm9yQW5pbWF0
aW9uKEVsZW1lbnQqIGUsIGNvbnN0IFJlbmRlclN0eWxlKiBlbAogICAgIH0KIH0KIAotUGFzc1Jl
ZlB0cjxSZW5kZXJTdHlsZT4gU3R5bGVSZXNvbHZlcjo6cHNldWRvU3R5bGVGb3JFbGVtZW50KEVs
ZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFBzZXVkb1N0eWxlUmVxdWVzdCYgcHNldWRvU3R5bGVSZXF1
ZXN0LCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUpCitSZWZQdHI8UmVuZGVyU3R5bGU+IFN0eWxl
UmVzb2x2ZXI6OnBzZXVkb1N0eWxlRm9yRWxlbWVudChFbGVtZW50KiBlbGVtZW50LCBjb25zdCBQ
c2V1ZG9TdHlsZVJlcXVlc3QmIHBzZXVkb1N0eWxlUmVxdWVzdCwgUmVuZGVyU3R5bGUqIHBhcmVu
dFN0eWxlKQogewogICAgIEFTU0VSVChwYXJlbnRTdHlsZSk7CiAgICAgaWYgKCFlbGVtZW50KQpA
QCAtMTkwMyw3ICsxOTAzLDcgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjphcHBseVByb3BlcnR5KENT
U1Byb3BlcnR5SUQgaWQsIENTU1ZhbHVlKiB2YWx1ZSkKICAgICBTdHlsZUJ1aWxkZXI6OmFwcGx5
UHJvcGVydHkoaWQsICp0aGlzLCAqdmFsdWUsIGlzSW5pdGlhbCwgaXNJbmhlcml0KTsKIH0KIAot
UGFzc1JlZlB0cjxTdHlsZUltYWdlPiBTdHlsZVJlc29sdmVyOjpzdHlsZUltYWdlKENTU1Byb3Bl
cnR5SUQgcHJvcGVydHksIENTU1ZhbHVlJiB2YWx1ZSkKK1JlZlB0cjxTdHlsZUltYWdlPiBTdHls
ZVJlc29sdmVyOjpzdHlsZUltYWdlKENTU1Byb3BlcnR5SUQgcHJvcGVydHksIENTU1ZhbHVlJiB2
YWx1ZSkKIHsKICAgICBpZiAoaXM8Q1NTSW1hZ2VWYWx1ZT4odmFsdWUpKQogICAgICAgICByZXR1
cm4gY2FjaGVkT3JQZW5kaW5nRnJvbVZhbHVlKHByb3BlcnR5LCBkb3duY2FzdDxDU1NJbWFnZVZh
bHVlPih2YWx1ZSkpOwpAQCAtMTkyNSwxNSArMTkyNSwxNSBAQCBQYXNzUmVmUHRyPFN0eWxlSW1h
Z2U+IFN0eWxlUmVzb2x2ZXI6OnN0eWxlSW1hZ2UoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwgQ1NT
VmFsdQogICAgIHJldHVybiBudWxscHRyOwogfQogCi1QYXNzUmVmUHRyPFN0eWxlSW1hZ2U+IFN0
eWxlUmVzb2x2ZXI6OmNhY2hlZE9yUGVuZGluZ0Zyb21WYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3Bl
cnR5LCBDU1NJbWFnZVZhbHVlJiB2YWx1ZSkKK1JlZlB0cjxTdHlsZUltYWdlPiBTdHlsZVJlc29s
dmVyOjpjYWNoZWRPclBlbmRpbmdGcm9tVmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwgQ1NT
SW1hZ2VWYWx1ZSYgdmFsdWUpCiB7CiAgICAgUmVmUHRyPFN0eWxlSW1hZ2U+IGltYWdlID0gdmFs
dWUuY2FjaGVkT3JQZW5kaW5nSW1hZ2UoKTsKICAgICBpZiAoaW1hZ2UgJiYgaW1hZ2UtPmlzUGVu
ZGluZ0ltYWdlKCkpCiAgICAgICAgIG1fc3RhdGUucGVuZGluZ0ltYWdlUHJvcGVydGllcygpLnNl
dChwcm9wZXJ0eSwgJnZhbHVlKTsKLSAgICByZXR1cm4gaW1hZ2UucmVsZWFzZSgpOworICAgIHJl
dHVybiBpbWFnZTsKIH0KIAotUGFzc1JlZlB0cjxTdHlsZUltYWdlPiBTdHlsZVJlc29sdmVyOjpn
ZW5lcmF0ZWRPclBlbmRpbmdGcm9tVmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwgQ1NTSW1h
Z2VHZW5lcmF0b3JWYWx1ZSYgdmFsdWUpCitSZWY8U3R5bGVJbWFnZT4gU3R5bGVSZXNvbHZlcjo6
Z2VuZXJhdGVkT3JQZW5kaW5nRnJvbVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHksIENTU0lt
YWdlR2VuZXJhdG9yVmFsdWUmIHZhbHVlKQogewogICAgIGlmIChpczxDU1NGaWx0ZXJJbWFnZVZh
bHVlPih2YWx1ZSkpIHsKICAgICAgICAgLy8gRmlsdGVySW1hZ2UgbmVlZHMgdG8gY2FsY3VsYXRl
IEZpbHRlck9wZXJhdGlvbnMuCkBAIC0xOTQ4LDcgKzE5NDgsNyBAQCBQYXNzUmVmUHRyPFN0eWxl
SW1hZ2U+IFN0eWxlUmVzb2x2ZXI6OmdlbmVyYXRlZE9yUGVuZGluZ0Zyb21WYWx1ZShDU1NQcm9w
ZXJ0eUlECiB9CiAKICNpZiBFTkFCTEUoQ1NTX0lNQUdFX1NFVCkKLVBhc3NSZWZQdHI8U3R5bGVJ
bWFnZT4gU3R5bGVSZXNvbHZlcjo6c2V0T3JQZW5kaW5nRnJvbVZhbHVlKENTU1Byb3BlcnR5SUQg
cHJvcGVydHksIENTU0ltYWdlU2V0VmFsdWUmIHZhbHVlKQorUmVmUHRyPFN0eWxlSW1hZ2U+IFN0
eWxlUmVzb2x2ZXI6OnNldE9yUGVuZGluZ0Zyb21WYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5
LCBDU1NJbWFnZVNldFZhbHVlJiB2YWx1ZSkKIHsKICAgICBSZWZQdHI8U3R5bGVJbWFnZT4gaW1h
Z2UgPSB2YWx1ZS5jYWNoZWRPclBlbmRpbmdJbWFnZVNldChkb2N1bWVudCgpKTsKICAgICBpZiAo
aW1hZ2UgJiYgaW1hZ2UtPmlzUGVuZGluZ0ltYWdlKCkpCkBAIC0xOTU3LDcgKzE5NTcsNyBAQCBQ
YXNzUmVmUHRyPFN0eWxlSW1hZ2U+IFN0eWxlUmVzb2x2ZXI6OnNldE9yUGVuZGluZ0Zyb21WYWx1
ZShDU1NQcm9wZXJ0eUlEIHByb3BlcgogfQogI2VuZGlmCiAKLVBhc3NSZWZQdHI8U3R5bGVJbWFn
ZT4gU3R5bGVSZXNvbHZlcjo6Y3Vyc29yT3JQZW5kaW5nRnJvbVZhbHVlKENTU1Byb3BlcnR5SUQg
cHJvcGVydHksIENTU0N1cnNvckltYWdlVmFsdWUmIHZhbHVlKQorUmVmUHRyPFN0eWxlSW1hZ2U+
IFN0eWxlUmVzb2x2ZXI6OmN1cnNvck9yUGVuZGluZ0Zyb21WYWx1ZShDU1NQcm9wZXJ0eUlEIHBy
b3BlcnR5LCBDU1NDdXJzb3JJbWFnZVZhbHVlJiB2YWx1ZSkKIHsKICAgICBSZWZQdHI8U3R5bGVJ
bWFnZT4gaW1hZ2UgPSB2YWx1ZS5jYWNoZWRPclBlbmRpbmdJbWFnZShkb2N1bWVudCgpKTsKICAg
ICBpZiAoaW1hZ2UgJiYgaW1hZ2UtPmlzUGVuZGluZ0ltYWdlKCkpCkBAIC0yMzIzLDcgKzIzMjMs
NyBAQCBib29sIFN0eWxlUmVzb2x2ZXI6OmNyZWF0ZUZpbHRlck9wZXJhdGlvbnMoQ1NTVmFsdWUm
IGluVmFsdWUsIEZpbHRlck9wZXJhdGlvbnMmCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVBhc3NS
ZWZQdHI8U3R5bGVJbWFnZT4gU3R5bGVSZXNvbHZlcjo6bG9hZFBlbmRpbmdJbWFnZShjb25zdCBT
dHlsZVBlbmRpbmdJbWFnZSYgcGVuZGluZ0ltYWdlLCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlv
bnMmIG9wdGlvbnMpCitSZWZQdHI8U3R5bGVJbWFnZT4gU3R5bGVSZXNvbHZlcjo6bG9hZFBlbmRp
bmdJbWFnZShjb25zdCBTdHlsZVBlbmRpbmdJbWFnZSYgcGVuZGluZ0ltYWdlLCBjb25zdCBSZXNv
dXJjZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgaWYgKGF1dG8gaW1hZ2VWYWx1ZSA9
IHBlbmRpbmdJbWFnZS5jc3NJbWFnZVZhbHVlKCkpCiAgICAgICAgIHJldHVybiBpbWFnZVZhbHVl
LT5jYWNoZWRJbWFnZShtX3N0YXRlLmRvY3VtZW50KCkuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKSwg
b3B0aW9ucyk7CkBAIC0yMzQ0LDcgKzIzNDQsNyBAQCBQYXNzUmVmUHRyPFN0eWxlSW1hZ2U+IFN0
eWxlUmVzb2x2ZXI6OmxvYWRQZW5kaW5nSW1hZ2UoY29uc3QgU3R5bGVQZW5kaW5nSW1hZ2UmCiAg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVBhc3NSZWZQdHI8U3R5bGVJbWFnZT4gU3R5bGVSZXNv
bHZlcjo6bG9hZFBlbmRpbmdJbWFnZShjb25zdCBTdHlsZVBlbmRpbmdJbWFnZSYgcGVuZGluZ0lt
YWdlKQorUmVmUHRyPFN0eWxlSW1hZ2U+IFN0eWxlUmVzb2x2ZXI6OmxvYWRQZW5kaW5nSW1hZ2Uo
Y29uc3QgU3R5bGVQZW5kaW5nSW1hZ2UmIHBlbmRpbmdJbWFnZSkKIHsKICAgICBSZXNvdXJjZUxv
YWRlck9wdGlvbnMgb3B0aW9ucyA9IENhY2hlZFJlc291cmNlTG9hZGVyOjpkZWZhdWx0Q2FjaGVk
UmVzb3VyY2VPcHRpb25zKCk7CiAgICAgb3B0aW9ucy5zZXRDb250ZW50U2VjdXJpdHlQb2xpY3lJ
bXBvc2l0aW9uKG1fc3RhdGUuZWxlbWVudCgpICYmIG1fc3RhdGUuZWxlbWVudCgpLT5pc0luVXNl
ckFnZW50U2hhZG93VHJlZSgpID8gQ29udGVudFNlY3VyaXR5UG9saWN5SW1wb3NpdGlvbjo6U2tp
cFBvbGljeUNoZWNrIDogQ29udGVudFNlY3VyaXR5UG9saWN5SW1wb3NpdGlvbjo6RG9Qb2xpY3lD
aGVjayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oIGIv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaAppbmRleCBhZGQ1NDI1ZDdmZGI1OGQx
MTllOTg0NjJiOGUwNjM3YTlmZGNlZjkxLi5kZDRiODRmMGIzMmY3OTc4NTBiZjE0ZGQwOTk5ZjFl
NzZmODU1Mzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgKQEAgLTE1MCw3ICsxNTAs
NyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGtleWZyYW1lU3R5bGVzRm9yQW5pbWF0aW9uKEVsZW1l
bnQqLCBjb25zdCBSZW5kZXJTdHlsZSosIEtleWZyYW1lTGlzdCYpOwogCi0gICAgUGFzc1JlZlB0
cjxSZW5kZXJTdHlsZT4gcHNldWRvU3R5bGVGb3JFbGVtZW50KEVsZW1lbnQqLCBjb25zdCBQc2V1
ZG9TdHlsZVJlcXVlc3QmLCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUpOworICAgIFJlZlB0cjxS
ZW5kZXJTdHlsZT4gcHNldWRvU3R5bGVGb3JFbGVtZW50KEVsZW1lbnQqLCBjb25zdCBQc2V1ZG9T
dHlsZVJlcXVlc3QmLCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUpOwogCiAgICAgUmVmPFJlbmRl
clN0eWxlPiBzdHlsZUZvclBhZ2UoaW50IHBhZ2VJbmRleCk7CiAgICAgUmVmPFJlbmRlclN0eWxl
PiBkZWZhdWx0U3R5bGVGb3JFbGVtZW50KCk7CkBAIC0yMjQsNyArMjI0LDcgQEAgcHVibGljOgog
ICAgIGJvb2wgaGFzVmlld3BvcnREZXBlbmRlbnRNZWRpYVF1ZXJpZXMoKSBjb25zdCB7IHJldHVy
biAhbV92aWV3cG9ydERlcGVuZGVudE1lZGlhUXVlcnlSZXN1bHRzLmlzRW1wdHkoKTsgfQogICAg
IGJvb2wgaGFzTWVkaWFRdWVyaWVzQWZmZWN0ZWRCeVZpZXdwb3J0Q2hhbmdlKCkgY29uc3Q7CiAK
LSAgICB2b2lkIGFkZEtleWZyYW1lU3R5bGUoUGFzc1JlZlB0cjxTdHlsZVJ1bGVLZXlmcmFtZXM+
KTsKKyAgICB2b2lkIGFkZEtleWZyYW1lU3R5bGUoUmVmUHRyPFN0eWxlUnVsZUtleWZyYW1lcz4p
OwogCiAgICAgYm9vbCBjaGVja1JlZ2lvblN0eWxlKEVsZW1lbnQqIHJlZ2lvbkVsZW1lbnQpOwog
CkBAIC00NDIsMTMgKzQ0MiwxMyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgUmVuZGVyU3R5bGUq
IHN0eWxlTm90WWV0QXZhaWxhYmxlKCkgeyByZXR1cm4gc19zdHlsZU5vdFlldEF2YWlsYWJsZTsg
fQogCi0gICAgUGFzc1JlZlB0cjxTdHlsZUltYWdlPiBzdHlsZUltYWdlKENTU1Byb3BlcnR5SUQs
IENTU1ZhbHVlJik7Ci0gICAgUGFzc1JlZlB0cjxTdHlsZUltYWdlPiBjYWNoZWRPclBlbmRpbmdG
cm9tVmFsdWUoQ1NTUHJvcGVydHlJRCwgQ1NTSW1hZ2VWYWx1ZSYpOwotICAgIFBhc3NSZWZQdHI8
U3R5bGVJbWFnZT4gZ2VuZXJhdGVkT3JQZW5kaW5nRnJvbVZhbHVlKENTU1Byb3BlcnR5SUQsIENT
U0ltYWdlR2VuZXJhdG9yVmFsdWUmKTsKKyAgICBSZWZQdHI8U3R5bGVJbWFnZT4gc3R5bGVJbWFn
ZShDU1NQcm9wZXJ0eUlELCBDU1NWYWx1ZSYpOworICAgIFJlZlB0cjxTdHlsZUltYWdlPiBjYWNo
ZWRPclBlbmRpbmdGcm9tVmFsdWUoQ1NTUHJvcGVydHlJRCwgQ1NTSW1hZ2VWYWx1ZSYpOworICAg
IFJlZjxTdHlsZUltYWdlPiBnZW5lcmF0ZWRPclBlbmRpbmdGcm9tVmFsdWUoQ1NTUHJvcGVydHlJ
RCwgQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZSYpOwogI2lmIEVOQUJMRShDU1NfSU1BR0VfU0VUKQot
ICAgIFBhc3NSZWZQdHI8U3R5bGVJbWFnZT4gc2V0T3JQZW5kaW5nRnJvbVZhbHVlKENTU1Byb3Bl
cnR5SUQsIENTU0ltYWdlU2V0VmFsdWUmKTsKKyAgICBSZWZQdHI8U3R5bGVJbWFnZT4gc2V0T3JQ
ZW5kaW5nRnJvbVZhbHVlKENTU1Byb3BlcnR5SUQsIENTU0ltYWdlU2V0VmFsdWUmKTsKICNlbmRp
ZgotICAgIFBhc3NSZWZQdHI8U3R5bGVJbWFnZT4gY3Vyc29yT3JQZW5kaW5nRnJvbVZhbHVlKENT
U1Byb3BlcnR5SUQsIENTU0N1cnNvckltYWdlVmFsdWUmKTsKKyAgICBSZWZQdHI8U3R5bGVJbWFn
ZT4gY3Vyc29yT3JQZW5kaW5nRnJvbVZhbHVlKENTU1Byb3BlcnR5SUQsIENTU0N1cnNvckltYWdl
VmFsdWUmKTsKIAogICAgIGJvb2wgYXBwbHlQcm9wZXJ0eVRvUmVndWxhclN0eWxlKCkgY29uc3Qg
eyByZXR1cm4gbV9zdGF0ZS5hcHBseVByb3BlcnR5VG9SZWd1bGFyU3R5bGUoKTsgfQogICAgIGJv
b2wgYXBwbHlQcm9wZXJ0eVRvVmlzaXRlZExpbmtTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3Rh
dGUuYXBwbHlQcm9wZXJ0eVRvVmlzaXRlZExpbmtTdHlsZSgpOyB9CkBAIC00NzQsOCArNDc0LDgg
QEAgcHJpdmF0ZToKIAogICAgIHZvaWQgYXBwbHlTVkdQcm9wZXJ0eShDU1NQcm9wZXJ0eUlELCBD
U1NWYWx1ZSopOwogCi0gICAgUGFzc1JlZlB0cjxTdHlsZUltYWdlPiBsb2FkUGVuZGluZ0ltYWdl
KGNvbnN0IFN0eWxlUGVuZGluZ0ltYWdlJiwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJik7
Ci0gICAgUGFzc1JlZlB0cjxTdHlsZUltYWdlPiBsb2FkUGVuZGluZ0ltYWdlKGNvbnN0IFN0eWxl
UGVuZGluZ0ltYWdlJik7CisgICAgUmVmUHRyPFN0eWxlSW1hZ2U+IGxvYWRQZW5kaW5nSW1hZ2Uo
Y29uc3QgU3R5bGVQZW5kaW5nSW1hZ2UmLCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmKTsK
KyAgICBSZWZQdHI8U3R5bGVJbWFnZT4gbG9hZFBlbmRpbmdJbWFnZShjb25zdCBTdHlsZVBlbmRp
bmdJbWFnZSYpOwogICAgIHZvaWQgbG9hZFBlbmRpbmdJbWFnZXMoKTsKICNpZiBFTkFCTEUoQ1NT
X1NIQVBFUykKICAgICB2b2lkIGxvYWRQZW5kaW5nU2hhcGVJbWFnZShTaGFwZVZhbHVlKik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVJ1bGUuY3BwCmluZGV4IGE1ZjQ5YzBmYmZlZjM2ZjgxNDhiY2NjNjE1N2Y1
YTlmMDYzNTVjM2UuLjQ2YzZlMmY5OGQyYzFhYzg5ZmEzNWVmN2U1Njc5OGZkMzMyMzNlYmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuY3BwCkBAIC00NSwxMiArNDUsMTIgQEAgc3RydWN0IFNhbWVT
aXplQXNTdHlsZVJ1bGVCYXNlIDogcHVibGljIFdURjo6UmVmQ291bnRlZEJhc2UgewogCiBDT01Q
SUxFX0FTU0VSVChzaXplb2YoU3R5bGVSdWxlQmFzZSkgPT0gc2l6ZW9mKFNhbWVTaXplQXNTdHls
ZVJ1bGVCYXNlKSwgU3R5bGVSdWxlQmFzZV9zaG91bGRfc3RheV9zbWFsbCk7CiAKLVBhc3NSZWZQ
dHI8Q1NTUnVsZT4gU3R5bGVSdWxlQmFzZTo6Y3JlYXRlQ1NTT01XcmFwcGVyKENTU1N0eWxlU2hl
ZXQqIHBhcmVudFNoZWV0KSBjb25zdAorUmVmUHRyPENTU1J1bGU+IFN0eWxlUnVsZUJhc2U6OmNy
ZWF0ZUNTU09NV3JhcHBlcihDU1NTdHlsZVNoZWV0KiBwYXJlbnRTaGVldCkgY29uc3QKIHsKICAg
ICByZXR1cm4gY3JlYXRlQ1NTT01XcmFwcGVyKHBhcmVudFNoZWV0LCAwKTsKIH0KIAotUGFzc1Jl
ZlB0cjxDU1NSdWxlPiBTdHlsZVJ1bGVCYXNlOjpjcmVhdGVDU1NPTVdyYXBwZXIoQ1NTUnVsZSog
cGFyZW50UnVsZSkgY29uc3QKK1JlZlB0cjxDU1NSdWxlPiBTdHlsZVJ1bGVCYXNlOjpjcmVhdGVD
U1NPTVdyYXBwZXIoQ1NTUnVsZSogcGFyZW50UnVsZSkgY29uc3QKIHsgCiAgICAgcmV0dXJuIGNy
ZWF0ZUNTU09NV3JhcHBlcigwLCBwYXJlbnRSdWxlKTsKIH0KQEAgLTE0MCw3ICsxNDAsNyBAQCBS
ZWY8U3R5bGVSdWxlQmFzZT4gU3R5bGVSdWxlQmFzZTo6Y29weSgpIGNvbnN0CiAgICAgcmV0dXJu
IFJlZjxTdHlsZVJ1bGVCYXNlPigqc3RhdGljX2Nhc3Q8U3R5bGVSdWxlQmFzZSo+KG51bGxwdHIp
KTsKIH0KIAotUGFzc1JlZlB0cjxDU1NSdWxlPiBTdHlsZVJ1bGVCYXNlOjpjcmVhdGVDU1NPTVdy
YXBwZXIoQ1NTU3R5bGVTaGVldCogcGFyZW50U2hlZXQsIENTU1J1bGUqIHBhcmVudFJ1bGUpIGNv
bnN0CitSZWZQdHI8Q1NTUnVsZT4gU3R5bGVSdWxlQmFzZTo6Y3JlYXRlQ1NTT01XcmFwcGVyKENT
U1N0eWxlU2hlZXQqIHBhcmVudFNoZWV0LCBDU1NSdWxlKiBwYXJlbnRSdWxlKSBjb25zdAogewog
ICAgIFJlZlB0cjxDU1NSdWxlPiBydWxlOwogICAgIFN0eWxlUnVsZUJhc2UmIHNlbGYgPSBjb25z
dF9jYXN0PFN0eWxlUnVsZUJhc2UmPigqdGhpcyk7CkBAIC0xODcsNyArMTg3LDcgQEAgUGFzc1Jl
ZlB0cjxDU1NSdWxlPiBTdHlsZVJ1bGVCYXNlOjpjcmVhdGVDU1NPTVdyYXBwZXIoQ1NTU3R5bGVT
aGVldCogcGFyZW50U2hlZXQKICAgICB9CiAgICAgaWYgKHBhcmVudFJ1bGUpCiAgICAgICAgIHJ1
bGUtPnNldFBhcmVudFJ1bGUocGFyZW50UnVsZSk7Ci0gICAgcmV0dXJuIHJ1bGUucmVsZWFzZSgp
OworICAgIHJldHVybiBydWxlOwogfQogCiB1bnNpZ25lZCBTdHlsZVJ1bGU6OmF2ZXJhZ2VTaXpl
SW5CeXRlcygpCkBAIC0zMjksNyArMzI5LDcgQEAgdm9pZCBTdHlsZVJ1bGVHcm91cDo6d3JhcHBl
clJlbW92ZVJ1bGUodW5zaWduZWQgaW5kZXgpCiB9CiAKIAotU3R5bGVSdWxlTWVkaWE6OlN0eWxl
UnVsZU1lZGlhKFBhc3NSZWZQdHI8TWVkaWFRdWVyeVNldD4gbWVkaWEsIFZlY3RvcjxSZWZQdHI8
U3R5bGVSdWxlQmFzZT4+JiBhZG9wdFJ1bGVzKQorU3R5bGVSdWxlTWVkaWE6OlN0eWxlUnVsZU1l
ZGlhKFJlZlB0cjxNZWRpYVF1ZXJ5U2V0PiBtZWRpYSwgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVC
YXNlPj4mIGFkb3B0UnVsZXMpCiAgICAgOiBTdHlsZVJ1bGVHcm91cChNZWRpYSwgYWRvcHRSdWxl
cykKICAgICAsIG1fbWVkaWFRdWVyaWVzKG1lZGlhKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlUnVsZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5oCmlu
ZGV4IGU5YTYzNjZlNGU0NWU5NTdmMmYxNDZmNjU0OTcyZTZmNzBiZTc1ZjkuLmRhNmUzYmZhYjBm
ZjE5MmNjYjlkZTYzMWQyM2VlOTkzYTYxOGM0NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZVJ1bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlLmgKQEAg
LTgyLDggKzgyLDggQEAgcHVibGljOgogICAgIH0KIAogICAgIC8vIEZJWE1FOiBUaGVyZSBzaG91
bGRuJ3QgYmUgYW55IG5lZWQgZm9yIHRoZSBudWxsIHBhcmVudCB2ZXJzaW9uLgotICAgIFBhc3NS
ZWZQdHI8Q1NTUnVsZT4gY3JlYXRlQ1NTT01XcmFwcGVyKENTU1N0eWxlU2hlZXQqIHBhcmVudFNo
ZWV0ID0gMCkgY29uc3Q7Ci0gICAgUGFzc1JlZlB0cjxDU1NSdWxlPiBjcmVhdGVDU1NPTVdyYXBw
ZXIoQ1NTUnVsZSogcGFyZW50UnVsZSkgY29uc3Q7CisgICAgUmVmUHRyPENTU1J1bGU+IGNyZWF0
ZUNTU09NV3JhcHBlcihDU1NTdHlsZVNoZWV0KiBwYXJlbnRTaGVldCA9IDApIGNvbnN0OworICAg
IFJlZlB0cjxDU1NSdWxlPiBjcmVhdGVDU1NPTVdyYXBwZXIoQ1NTUnVsZSogcGFyZW50UnVsZSkg
Y29uc3Q7CiAKIHByb3RlY3RlZDoKICAgICBTdHlsZVJ1bGVCYXNlKFR5cGUgdHlwZSwgc2lnbmVk
IHNvdXJjZUxpbmUgPSAwKSA6IG1fdHlwZSh0eXBlKSwgbV9zb3VyY2VMaW5lKHNvdXJjZUxpbmUp
IHsgfQpAQCAtOTQsNyArOTQsNyBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIHZvaWQgZGVz
dHJveSgpOwogICAgIAotICAgIFBhc3NSZWZQdHI8Q1NTUnVsZT4gY3JlYXRlQ1NTT01XcmFwcGVy
KENTU1N0eWxlU2hlZXQqIHBhcmVudFNoZWV0LCBDU1NSdWxlKiBwYXJlbnRSdWxlKSBjb25zdDsK
KyAgICBSZWZQdHI8Q1NTUnVsZT4gY3JlYXRlQ1NTT01XcmFwcGVyKENTU1N0eWxlU2hlZXQqIHBh
cmVudFNoZWV0LCBDU1NSdWxlKiBwYXJlbnRSdWxlKSBjb25zdDsKIAogICAgIHVuc2lnbmVkIG1f
dHlwZSA6IDU7CiAgICAgc2lnbmVkIG1fc291cmNlTGluZSA6IDI3OwpAQCAtMTkzLDcgKzE5Myw3
IEBAIHByaXZhdGU6CiAKIGNsYXNzIFN0eWxlUnVsZU1lZGlhIDogcHVibGljIFN0eWxlUnVsZUdy
b3VwIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFN0eWxlUnVsZU1lZGlhPiBjcmVhdGUoUGFz
c1JlZlB0cjxNZWRpYVF1ZXJ5U2V0PiBtZWRpYSwgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNl
Pj4mIGFkb3B0UnVsZXMpCisgICAgc3RhdGljIFJlZjxTdHlsZVJ1bGVNZWRpYT4gY3JlYXRlKFJl
ZlB0cjxNZWRpYVF1ZXJ5U2V0PiBtZWRpYSwgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNlPj4m
IGFkb3B0UnVsZXMpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZVJ1
bGVNZWRpYShtZWRpYSwgYWRvcHRSdWxlcykpOwogICAgIH0KQEAgLTIwMyw3ICsyMDMsNyBAQCBw
dWJsaWM6CiAgICAgUmVmPFN0eWxlUnVsZU1lZGlhPiBjb3B5KCkgY29uc3QgeyByZXR1cm4gYWRv
cHRSZWYoKm5ldyBTdHlsZVJ1bGVNZWRpYSgqdGhpcykpOyB9CiAKIHByaXZhdGU6Ci0gICAgU3R5
bGVSdWxlTWVkaWEoUGFzc1JlZlB0cjxNZWRpYVF1ZXJ5U2V0PiwgVmVjdG9yPFJlZlB0cjxTdHls
ZVJ1bGVCYXNlPj4mIGFkb3B0UnVsZXMpOworICAgIFN0eWxlUnVsZU1lZGlhKFJlZlB0cjxNZWRp
YVF1ZXJ5U2V0PiwgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNlPj4mIGFkb3B0UnVsZXMpOwog
ICAgIFN0eWxlUnVsZU1lZGlhKGNvbnN0IFN0eWxlUnVsZU1lZGlhJik7CiAKICAgICBSZWZQdHI8
TWVkaWFRdWVyeVNldD4gbV9tZWRpYVF1ZXJpZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVSdWxlSW1wb3J0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGVJ
bXBvcnQuY3BwCmluZGV4IGY1Njc5NTYwMTgxZjllZmFmZTVhOWYxMzJhMWIwOTE0NDBmYzUwMTMu
LmM2MjIxZjdjMjIzMTQ2MjQ3NGY1MTUwZDdkMmIzZTAwN2Y1YmJjY2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGVJbXBvcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZVJ1bGVJbXBvcnQuY3BwCkBAIC0zNCwxMiArMzQsMTIgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1SZWY8U3R5bGVSdWxlSW1wb3J0PiBTdHlsZVJ1bGVJbXBvcnQ6OmNyZWF0
ZShjb25zdCBTdHJpbmcmIGhyZWYsIFBhc3NSZWZQdHI8TWVkaWFRdWVyeVNldD4gbWVkaWEpCitS
ZWY8U3R5bGVSdWxlSW1wb3J0PiBTdHlsZVJ1bGVJbXBvcnQ6OmNyZWF0ZShjb25zdCBTdHJpbmcm
IGhyZWYsIFJlZlB0cjxNZWRpYVF1ZXJ5U2V0PiBtZWRpYSkKIHsKICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBTdHlsZVJ1bGVJbXBvcnQoaHJlZiwgbWVkaWEpKTsKIH0KIAotU3R5bGVSdWxlSW1w
b3J0OjpTdHlsZVJ1bGVJbXBvcnQoY29uc3QgU3RyaW5nJiBocmVmLCBQYXNzUmVmUHRyPE1lZGlh
UXVlcnlTZXQ+IG1lZGlhKQorU3R5bGVSdWxlSW1wb3J0OjpTdHlsZVJ1bGVJbXBvcnQoY29uc3Qg
U3RyaW5nJiBocmVmLCBSZWZQdHI8TWVkaWFRdWVyeVNldD4gbWVkaWEpCiAgICAgOiBTdHlsZVJ1
bGVCYXNlKEltcG9ydCwgMCkKICAgICAsIG1fcGFyZW50U3R5bGVTaGVldCgwKQogICAgICwgbV9z
dHlsZVNoZWV0Q2xpZW50KHRoaXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVSdWxlSW1wb3J0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlSW1wb3J0LmgKaW5k
ZXggYmEwYjJhNzMxZTlmZTVhNTU1ZmE2MzcxYTQ3MTY0YTcyMDdmMjY1Ni4uNTFhOTEwNzk5MWM3
Mjk1M2I4NDAxZTkxMDNlOTdhYjkwZTRkMTRiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlUnVsZUltcG9ydC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGVJ
bXBvcnQuaApAQCAtMzYsNyArMzYsNyBAQCBjbGFzcyBTdHlsZVNoZWV0Q29udGVudHM7CiBjbGFz
cyBTdHlsZVJ1bGVJbXBvcnQgOiBwdWJsaWMgU3R5bGVSdWxlQmFzZSB7CiAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTdHlsZVJ1bGVJbXBvcnQ+
IGNyZWF0ZShjb25zdCBTdHJpbmcmIGhyZWYsIFBhc3NSZWZQdHI8TWVkaWFRdWVyeVNldD4pOwor
ICAgIHN0YXRpYyBSZWY8U3R5bGVSdWxlSW1wb3J0PiBjcmVhdGUoY29uc3QgU3RyaW5nJiBocmVm
LCBSZWZQdHI8TWVkaWFRdWVyeVNldD4pOwogCiAgICAgflN0eWxlUnVsZUltcG9ydCgpOwogICAg
IApAQCAtNzAsNyArNzAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0Q1NTU3R5bGVTaGVldChj
b25zdCBTdHJpbmcmIGhyZWYsIGNvbnN0IFVSTCYgYmFzZVVSTCwgY29uc3QgU3RyaW5nJiBjaGFy
c2V0LCBjb25zdCBDYWNoZWRDU1NTdHlsZVNoZWV0Kik7CiAgICAgZnJpZW5kIGNsYXNzIEltcG9y
dGVkU3R5bGVTaGVldENsaWVudDsKIAotICAgIFN0eWxlUnVsZUltcG9ydChjb25zdCBTdHJpbmcm
IGhyZWYsIFBhc3NSZWZQdHI8TWVkaWFRdWVyeVNldD4pOworICAgIFN0eWxlUnVsZUltcG9ydChj
b25zdCBTdHJpbmcmIGhyZWYsIFJlZlB0cjxNZWRpYVF1ZXJ5U2V0Pik7CiAKICAgICBTdHlsZVNo
ZWV0Q29udGVudHMqIG1fcGFyZW50U3R5bGVTaGVldDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlU2hlZXRDb250ZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVTaGVldENvbnRlbnRzLmNwcAppbmRleCA2MGM1ZDM5NjZlY2Y3ZGEyM2I0NzUzZWU1YjMwNTc0
MTVkMzllY2FlLi45NmM1NGY5OWY5ZjgyMmMyZTEzM2VhMDU0NDhlOTQwMWZiYzYwMDVmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldENvbnRlbnRzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldENvbnRlbnRzLmNwcApAQCAtMTI4LDcgKzEyOCw3
IEBAIGJvb2wgU3R5bGVTaGVldENvbnRlbnRzOjppc0NhY2hlYWJsZSgpIGNvbnN0CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLXZvaWQgU3R5bGVTaGVldENvbnRlbnRzOjpwYXJzZXJBcHBlbmRSdWxl
KFBhc3NSZWZQdHI8U3R5bGVSdWxlQmFzZT4gcnVsZSkKK3ZvaWQgU3R5bGVTaGVldENvbnRlbnRz
OjpwYXJzZXJBcHBlbmRSdWxlKFJlZlB0cjxTdHlsZVJ1bGVCYXNlPiBydWxlKQogewogICAgIEFT
U0VSVCghcnVsZS0+aXNDaGFyc2V0UnVsZSgpKTsKICAgICBpZiAoaXM8U3R5bGVSdWxlSW1wb3J0
PigqcnVsZSkpIHsKQEAgLTIwNiw3ICsyMDYsNyBAQCB2b2lkIFN0eWxlU2hlZXRDb250ZW50czo6
cGFyc2VyU2V0RW5jb2RpbmdGcm9tQ2hhcnNldFJ1bGUoY29uc3QgU3RyaW5nJiBlbmNvZGluZwog
ICAgIG1fZW5jb2RpbmdGcm9tQ2hhcnNldFJ1bGUgPSBlbmNvZGluZzsgCiB9CiAKLWJvb2wgU3R5
bGVTaGVldENvbnRlbnRzOjp3cmFwcGVySW5zZXJ0UnVsZShQYXNzUmVmUHRyPFN0eWxlUnVsZUJh
c2U+IHJ1bGUsIHVuc2lnbmVkIGluZGV4KQorYm9vbCBTdHlsZVNoZWV0Q29udGVudHM6OndyYXBw
ZXJJbnNlcnRSdWxlKFJlZlB0cjxTdHlsZVJ1bGVCYXNlPiBydWxlLCB1bnNpZ25lZCBpbmRleCkK
IHsKICAgICBBU1NFUlQobV9pc011dGFibGUpOwogICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lN
UExJQ0FUSU9OKGluZGV4IDw9IHJ1bGVDb3VudCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVNoZWV0Q29udGVudHMuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNo
ZWV0Q29udGVudHMuaAppbmRleCBmMjU2NjIxNzIxZWUyNDA3ZDliY2EzYmMxMDVlYTVhM2ZhNGZk
OWFjLi4yM2M1ZDU3MDFlMTBiODcxZGZlMDhkZGRmZDkwM2Y3MGExY2Q5Nzg4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldENvbnRlbnRzLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlU2hlZXRDb250ZW50cy5oCkBAIC05NCw3ICs5NCw3IEBAIHB1YmxpYzoK
ICAgICBib29sIGhhc1N5bnRhY3RpY2FsbHlWYWxpZENTU0hlYWRlcigpIGNvbnN0IHsgcmV0dXJu
IG1faGFzU3ludGFjdGljYWxseVZhbGlkQ1NTSGVhZGVyOyB9CiAKICAgICB2b2lkIHBhcnNlckFk
ZE5hbWVzcGFjZShjb25zdCBBdG9taWNTdHJpbmcmIHByZWZpeCwgY29uc3QgQXRvbWljU3RyaW5n
JiB1cmkpOwotICAgIHZvaWQgcGFyc2VyQXBwZW5kUnVsZShQYXNzUmVmUHRyPFN0eWxlUnVsZUJh
c2U+KTsKKyAgICB2b2lkIHBhcnNlckFwcGVuZFJ1bGUoUmVmUHRyPFN0eWxlUnVsZUJhc2U+KTsK
ICAgICB2b2lkIHBhcnNlclNldEVuY29kaW5nRnJvbUNoYXJzZXRSdWxlKGNvbnN0IFN0cmluZyYg
ZW5jb2RpbmcpOyAKICAgICB2b2lkIHBhcnNlclNldFVzZXNSZW1Vbml0cygpIHsgbV91c2VzUmVt
VW5pdHMgPSB0cnVlOyB9CiAgICAgdm9pZCBwYXJzZXJTZXRVc2VzU3R5bGVCYXNlZEVkaXRhYmls
aXR5KCkgeyBtX3VzZXNTdHlsZUJhc2VkRWRpdGFiaWxpdHkgPSB0cnVlOyB9CkBAIC0xMjcsNyAr
MTI3LDcgQEAgcHVibGljOgogCiAgICAgdW5zaWduZWQgZXN0aW1hdGVkU2l6ZUluQnl0ZXMoKSBj
b25zdDsKICAgICAKLSAgICBib29sIHdyYXBwZXJJbnNlcnRSdWxlKFBhc3NSZWZQdHI8U3R5bGVS
dWxlQmFzZT4sIHVuc2lnbmVkIGluZGV4KTsKKyAgICBib29sIHdyYXBwZXJJbnNlcnRSdWxlKFJl
ZlB0cjxTdHlsZVJ1bGVCYXNlPiwgdW5zaWduZWQgaW5kZXgpOwogICAgIHZvaWQgd3JhcHBlckRl
bGV0ZVJ1bGUodW5zaWduZWQgaW5kZXgpOwogCiAgICAgUmVmPFN0eWxlU2hlZXRDb250ZW50cz4g
Y29weSgpIGNvbnN0IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVTaGVldENvbnRlbnRzKCp0
aGlzKSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0TGlzdC5o
IGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRMaXN0LmgKaW5kZXggMTJhN2M0NTlkYmEz
Y2NhM2Y5MzhiOTFmNjQzOThhNTNiZTVlN2YyNS4uNGQ0YjU0MDc1MTg1ZTg5ZDdiNjUyMzRkYmRm
NTJiNjc1MDhhOWVlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRM
aXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRMaXN0LmgKQEAgLTIzLDcg
KzIzLDYgQEAKIAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL1dlYktpdENTU0ZpbHRlclZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRD
U1NGaWx0ZXJWYWx1ZS5jcHAKaW5kZXggNWExNGJiOGIxMjMxYzA5YTc4MDJhY2ExN2I5NmFjMzY2
MmY4MDQzNi4uY2QwY2E3ZDdiZjdiYzQ5ZTU1ZDk4YjU1NWI3ZjNkMGI1NjEyYmMxOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU0ZpbHRlclZhbHVlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTRmlsdGVyVmFsdWUuY3BwCkBAIC0yNyw3ICsyNyw2
IEBACiAjaW5jbHVkZSAiV2ViS2l0Q1NTRmlsdGVyVmFsdWUuaCIKIAogI2luY2x1ZGUgIkNTU1Zh
bHVlTGlzdC5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NGaWx0ZXJWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3Nz
L1dlYktpdENTU0ZpbHRlclZhbHVlLmgKaW5kZXggYTI0OTZkNjcxZTRkYTRkYWUzMjUwYzE0Y2Q3
YWQ0OWY1NWRhNzIzOS4uOWUzYWU2NTM1NWQ0OTJmZTIzZmY4YWIzNTk2MjZiNDFiYzRiNTM2NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU0ZpbHRlclZhbHVlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU0ZpbHRlclZhbHVlLmgKQEAgLTI3LDcgKzI3
LDYgQEAKICNkZWZpbmUgV2ViS2l0Q1NTRmlsdGVyVmFsdWVfaAogCiAjaW5jbHVkZSAiQ1NTVmFs
dWVMaXN0LmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9XZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2Vi
S2l0Q1NTVHJhbnNmb3JtVmFsdWUuY3BwCmluZGV4IDY3NzIxMmU0OGM4NGIzMjllMGQ5OTllMzc4
NDQ2MDhmOWI5YjAxOTEuLmExZGYwY2ZiODhiODVhZjEyMzI2ZWZkODQxYWI3YWE1YTM4ZDgzZjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1RyYW5zZm9ybVZhbHVlLmNwcApA
QCAtMjcsNyArMjcsNiBAQAogI2luY2x1ZGUgIldlYktpdENTU1RyYW5zZm9ybVZhbHVlLmgiCiAK
ICNpbmNsdWRlICJDU1NWYWx1ZUxpc3QuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuaCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5oCmluZGV4IDdjZWMz
NTM0YmIzYmFjMzk5MmVjNjU5YWEyZjVhZmUwZDE4ZDAyZGEuLjJkYjdjNzIwOGM0ZTc3MTJmZTQ3
MGNkM2Y2MzZjMGI3MDE3NmIyY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJL
aXRDU1NUcmFuc2Zvcm1WYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NU
cmFuc2Zvcm1WYWx1ZS5oCkBAIC0yNyw3ICsyNyw2IEBACiAjZGVmaW5lIFdlYktpdENTU1RyYW5z
Zm9ybVZhbHVlX2gKIAogI2luY2x1ZGUgIkNTU1ZhbHVlTGlzdC5oIgotI2luY2x1ZGUgPHd0Zi9Q
YXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250U2Vs
ZWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRTZWxlY3Rvci5o
CmluZGV4IGViY2JmZDNlODAxZjdmYWVhYzM4MWFmOTRmMzM4MDA0MTQ5ODA4ZjcuLjU1YmU0YmIy
OGY4OWZjYmUzNDllMmQwNWI2Y2JiY2YyZDQzNDEyOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRTZWxlY3Rvci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRTZWxlY3Rvci5oCkBAIC00MSw3ICs0MSw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIH5Gb250U2VsZWN0b3IoKSB7IH0KIAogICAgIHZpcnR1YWwgRm9udFJh
bmdlcyBmb250UmFuZ2VzRm9yRmFtaWx5KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGNvbnN0IEF0
b21pY1N0cmluZyYpID0gMDsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Rm9udD4gZmFsbGJhY2tG
b250QXQoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgc2l6ZV90KSA9IDA7CisgICAgdmlydHVhbCBS
ZWZQdHI8Rm9udD4gZmFsbGJhY2tGb250QXQoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgc2l6ZV90
KSA9IDA7CiAKICAgICB2aXJ0dWFsIHNpemVfdCBmYWxsYmFja0ZvbnRDb3VudCgpID0gMDsKICAg
ICB2aXJ0dWFsIGJvb2wgcmVzb2x2ZXNGYW1pbHlGb3IoY29uc3QgRm9udERlc2NyaXB0aW9uJikg
Y29uc3QgPSAwOwo=
</data>
<flag name="review"
          id="285139"
          type_id="1"
          status="-"
          setter="gyuyoung.kim"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260276</attachid>
            <date>2015-08-31 03:08:24 -0700</date>
            <delta_ts>2015-08-31 03:08:24 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>122837</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBiNDRhMTgwLi5hZWJkY2ExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjI1
IEBACisyMDE1LTA4LTMwICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ad2Via2l0Lm9yZz4K
KworICAgICAgICBSZW1vdmUgYWxsIHVzZXMgb2YgUGFzc1JlZlB0ciBpbiBXZWJDb3JlL2Nzcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ3OTc0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2xlYW4gdXAg
YWxsIFBhc3NSZWZQdHIgaW4gV2ViQ29yZS9jc3MuCisKKyAgICAgICAgKiBjc3MvQmFzaWNTaGFw
ZUZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjc3NWYWx1ZVRvQmFzaWNTaGFwZVJh
ZGl1cyk6CisgICAgICAgICogY3NzL0Jhc2ljU2hhcGVGdW5jdGlvbnMuaDoKKyAgICAgICAgKiBj
c3MvQ1NTQW5pbWF0aW9uVHJpZ2dlclNjcm9sbFZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlOjpD
U1NBbmltYXRpb25UcmlnZ2VyU2Nyb2xsVmFsdWU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NBbmltYXRpb25UcmlnZ2VyU2Nyb2xsVmFsdWU6OkNTU0FuaW1hdGlvblRyaWdnZXJTY3Jv
bGxWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU0Jhc2ljU2hhcGVzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmJ1aWxkU2VyaWFsaXphYmxlUG9zaXRpb25PZmZzZXQpOgorICAgICAgICAqIGNzcy9D
U1NCYXNpY1NoYXBlcy5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQmFzaWNTaGFwZTo6c2V0UmVm
ZXJlbmNlQm94KToKKyAgICAgICAgKiBjc3MvQ1NTQm9yZGVySW1hZ2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Y3JlYXRlQm9yZGVySW1hZ2VWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU0JvcmRl
ckltYWdlLmg6CisgICAgICAgICogY3NzL0NTU0JvcmRlckltYWdlU2xpY2VWYWx1ZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWU6OkNTU0JvcmRlckltYWdl
U2xpY2VWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU0JvcmRlckltYWdlU2xpY2VWYWx1ZS5oOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlOjpjcmVhdGUpOgorICAg
ICAgICAqIGNzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRl
dGVybWluZUNhdGVnb3J5KToKKyAgICAgICAgKiBjc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnZhbHVl
Rm9yU2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OkNv
bXB1dGVkU3R5bGVFeHRyYWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ29tcHV0ZWRTdHls
ZURlY2xhcmF0aW9uOjpDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24pOgorICAgICAgICAqIGNz
cy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaDoKKyAgICAgICAgKiBjc3MvQ1NTQ3Jvc3Nm
YWRlVmFsdWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Nyb3NzZmFkZVZhbHVlOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ3Jvc3NmYWRlVmFsdWU6OnNldFBlcmNlbnRhZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTQ3Jvc3NmYWRlVmFsdWU6OkNTU0Nyb3NzZmFkZVZhbHVlKToK
KyAgICAgICAgKiBjc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTRmlsdGVySW1hZ2VWYWx1ZTo6Q1NTRmlsdGVySW1hZ2VWYWx1ZSk6CisgICAgICAgICogY3Nz
L0NTU0ZvbnRGYWNlLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZTo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlOjpDU1NGb250RmFjZSk6CisgICAgICAgICog
Y3NzL0NTU0ZvbnRGYWNlTG9hZEV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRG
YWNlTG9hZEV2ZW50OjpDU1NGb250RmFjZUxvYWRFdmVudCk6CisgICAgICAgICogY3NzL0NTU0Zv
bnRGYWNlTG9hZEV2ZW50Lmg6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU291cmNlLmg6Cisg
ICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuaDoKKyAgICAgICAgKiBjc3MvQ1NTRm9u
dFNlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRTZWxlY3Rvcjo6ZmFsbGJh
Y2tGb250QXQpOgorICAgICAgICAqIGNzcy9DU1NGb250U2VsZWN0b3IuaDoKKyAgICAgICAgKiBj
c3MvQ1NTRm9udFZhbHVlLmg6CisgICAgICAgICogY3NzL0NTU0Z1bmN0aW9uVmFsdWUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTRnVuY3Rpb25WYWx1ZTo6Q1NTRnVuY3Rpb25WYWx1ZSk6Cisg
ICAgICAgICogY3NzL0NTU0Z1bmN0aW9uVmFsdWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Z1
bmN0aW9uVmFsdWU6OmNyZWF0ZSk6CisgICAgICAgICogY3NzL0NTU0dyYWRpZW50VmFsdWUuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkNTU0dyYWRpZW50VmFsdWU6OnNldEZpcnN0WCk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NHcmFkaWVudFZhbHVlOjpzZXRGaXJzdFkpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTR3JhZGllbnRWYWx1ZTo6c2V0U2Vjb25kWCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NH
cmFkaWVudFZhbHVlOjpzZXRTZWNvbmRZKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0xpbmVhckdy
YWRpZW50VmFsdWU6OnNldEFuZ2xlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1JhZGlhbEdyYWRp
ZW50VmFsdWU6OnNldEZpcnN0UmFkaXVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1JhZGlhbEdy
YWRpZW50VmFsdWU6OnNldFNlY29uZFJhZGl1cyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NSYWRp
YWxHcmFkaWVudFZhbHVlOjpzZXRTaGFwZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NSYWRpYWxH
cmFkaWVudFZhbHVlOjpzZXRTaXppbmdCZWhhdmlvcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NS
YWRpYWxHcmFkaWVudFZhbHVlOjpzZXRFbmRIb3Jpem9udGFsU2l6ZSk6CisgICAgICAgIChXZWJD
b3JlOjpDU1NSYWRpYWxHcmFkaWVudFZhbHVlOjpzZXRFbmRWZXJ0aWNhbFNpemUpOgorICAgICAg
ICAqIGNzcy9DU1NHcmlkTGluZU5hbWVzVmFsdWUuaDoKKyAgICAgICAgKiBjc3MvQ1NTSW1hZ2VH
ZW5lcmF0b3JWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NJbWFnZUdlbmVyYXRvclZh
bHVlOjpzYXZlQ2FjaGVkSW1hZ2VGb3JTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ltYWdl
R2VuZXJhdG9yVmFsdWU6OkNhY2hlZEdlbmVyYXRlZEltYWdlOjpDYWNoZWRHZW5lcmF0ZWRJbWFn
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjppbWFnZSk6Cisg
ICAgICAgICogY3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuaDoKKyAgICAgICAgKiBjc3MvQ1NT
SW5oZXJpdGVkVmFsdWUuaDoKKyAgICAgICAgKiBjc3MvQ1NTSW5pdGlhbFZhbHVlLmg6CisgICAg
ICAgICogY3NzL0NTU0tleWZyYW1lc1J1bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVS
dWxlS2V5ZnJhbWVzOjpwYXJzZXJBcHBlbmRLZXlmcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZVJ1bGVLZXlmcmFtZXM6OndyYXBwZXJBcHBlbmRLZXlmcmFtZSk6CisgICAgICAgICogY3Nz
L0NTU0tleWZyYW1lc1J1bGUuaDoKKyAgICAgICAgKiBjc3MvQ1NTTGluZUJveENvbnRhaW5WYWx1
ZS5oOgorICAgICAgICAqIGNzcy9DU1NOYW1lZEltYWdlVmFsdWUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTTmFtZWRJbWFnZVZhbHVlOjppbWFnZSk6CisgICAgICAgICogY3NzL0NTU05hbWVk
SW1hZ2VWYWx1ZS5oOgorICAgICAgICAqIGNzcy9DU1NQYXJzZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTUGFyc2VyOjpwYXJzZURlY2xhcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1BhcnNlcjo6YWRkUHJvcGVydHlXaXRoUHJlZml4aW5nVmFyaWFudCk6CisgICAgICAgIChXZWJD
b3JlOjpDU1NQYXJzZXI6OmFkZFByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNl
cjo6YWRkRXhwYW5kZWRQcm9wZXJ0eUZvclZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Bh
cnNlcjo6cGFyc2VHcmlkVGVtcGxhdGVSb3dzQW5kQXJlYXMpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTUGFyc2VyOjpwYXJzZUluc2V0Um91bmRlZENvcm5lcnMpOgorICAgICAgICAoV2ViQ29yZTo6
U2hhZG93UGFyc2VDb250ZXh0Ojpjb21taXRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpCb3Jk
ZXJJbWFnZVBhcnNlQ29udGV4dDo6Y29tbWl0SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Qm9y
ZGVySW1hZ2VQYXJzZUNvbnRleHQ6OmNvbW1pdEltYWdlU2xpY2UpOgorICAgICAgICAoV2ViQ29y
ZTo6Qm9yZGVySW1hZ2VQYXJzZUNvbnRleHQ6OmNvbW1pdEJvcmRlcldpZHRoKToKKyAgICAgICAg
KFdlYkNvcmU6OkJvcmRlckltYWdlUGFyc2VDb250ZXh0Ojpjb21taXRCb3JkZXJPdXRzZXQpOgor
ICAgICAgICAoV2ViQ29yZTo6Qm9yZGVySW1hZ2VQYXJzZUNvbnRleHQ6OmNvbW1pdFJlcGVhdCk6
CisgICAgICAgIChXZWJDb3JlOjpCb3JkZXJJbWFnZVBhcnNlQ29udGV4dDo6Y29tbWl0V2ViS2l0
Qm9yZGVySW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Qm9yZGVySW1hZ2VQYXJzZUNvbnRleHQ6
OmNvbW1pdEJvcmRlckltYWdlUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6Qm9yZGVySW1h
Z2VTbGljZVBhcnNlQ29udGV4dDo6Y29tbWl0Qm9yZGVySW1hZ2VTbGljZSk6CisgICAgICAgIChX
ZWJDb3JlOjpCb3JkZXJJbWFnZVF1YWRQYXJzZUNvbnRleHQ6OnNldFRvcCk6CisgICAgICAgIChX
ZWJDb3JlOjpCb3JkZXJJbWFnZVF1YWRQYXJzZUNvbnRleHQ6OmNvbW1pdEJvcmRlckltYWdlUXVh
ZCk6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZURlcHJlY2F0ZWRHcmFkaWVudFBvaW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OnZhbHVlRnJvbVNpZGVLZXl3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6
OnBhcnNlR3JhZGllbnRDb2xvck9yS2V5d29yZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJz
ZXI6OmFkZFRleHREZWNvcmF0aW9uUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFy
c2VyOjpjcmVhdGVJbXBvcnRSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6Y3Jl
YXRlTWVkaWFSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6YWRkTmV3UnVsZVRv
U291cmNlVHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBvcFJ1bGVEYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6Y3JlYXRlVmlld3BvcnRSdWxlKToKKyAgICAg
ICAgKiBjc3MvQ1NTUGFyc2VyLmg6CisgICAgICAgICogY3NzL0NTU1BhcnNlclZhbHVlcy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJWYWx1ZTo6Y3JlYXRlQ1NTVmFsdWUpOgorICAg
ICAgICAqIGNzcy9DU1NQYXJzZXJWYWx1ZXMuaDoKKyAgICAgICAgKiBjc3MvQ1NTUHJpbWl0aXZl
VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6OmdldFJHQkNv
bG9yVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NQcmltaXRpdmVWYWx1ZS5oOgorICAgICAgICAq
IGNzcy9DU1NQcm9wZXJ0eS5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHk6OkNTU1By
b3BlcnR5KToKKyAgICAgICAgKiBjc3MvQ1NTUmVmbGVjdFZhbHVlLmg6CisgICAgICAgIChXZWJD
b3JlOjpDU1NSZWZsZWN0VmFsdWU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NSZWZs
ZWN0VmFsdWU6OkNTU1JlZmxlY3RWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU1J1bGVMaXN0Lmg6
CisgICAgICAgICogY3NzL0NTU1NlZ21lbnRlZEZvbnRGYWNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1NlZ21lbnRlZEZvbnRGYWNlOjphcHBlbmRGb250RmFjZSk6CisgICAgICAgIChXZWJD
b3JlOjpDU1NTZWdtZW50ZWRGb250RmFjZTo6bG9hZEZvbnQpOgorICAgICAgICAqIGNzcy9DU1NT
ZWdtZW50ZWRGb250RmFjZS5oOgorICAgICAgICAqIGNzcy9DU1NTZWxlY3Rvci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6UmFyZURhdGE6OlJhcmVEYXRhKToKKyAgICAgICAg
KiBjc3MvQ1NTU2VsZWN0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpSYXJl
RGF0YTo6Y3JlYXRlKToKKyAgICAgICAgKiBjc3MvQ1NTU2hhZG93VmFsdWUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTU2hhZG93VmFsdWU6OkNTU1NoYWRvd1ZhbHVlKToKKyAgICAgICAgKiBj
c3MvQ1NTU2hhZG93VmFsdWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NoYWRvd1ZhbHVlOjpj
cmVhdGUpOgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1N0eWxlU2hlZXQ6OnNldE1lZGlhUXVlcmllcyk6CisgICAgICAgICogY3NzL0NTU1N0
eWxlU2hlZXQuaDoKKyAgICAgICAgKiBjc3MvQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZS5oOgorICAg
ICAgICAqIGNzcy9DU1NVbmljb2RlUmFuZ2VWYWx1ZS5oOgorICAgICAgICAqIGNzcy9DU1NWYWx1
ZUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWVMaXN0Ojpjb3B5KToKKyAgICAg
ICAgKiBjc3MvQ1NTVmFsdWVMaXN0Lmg6CisgICAgICAgICogY3NzL0NTU1ZhbHVlUG9vbC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDU1NWYWx1ZVBvb2w6OmNyZWF0ZUZvbnRGYWNlVmFsdWUpOgor
ICAgICAgICAqIGNzcy9DU1NWYWx1ZVBvb2wuaDoKKyAgICAgICAgKiBjc3MvQ291bnRlci5oOgor
ICAgICAgICAoV2ViQ29yZTo6Q291bnRlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
dW50ZXI6OnNldElkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q291bnRlcjo6c2V0TGlz
dFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvdW50ZXI6OnNldFNlcGFyYXRvcik6CisgICAg
ICAgIChXZWJDb3JlOjpDb3VudGVyOjpDb3VudGVyKToKKyAgICAgICAgKiBjc3MvRm9udExvYWRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMb2FkRm9udENhbGxiYWNrOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6TG9hZEZvbnRDYWxsYmFjazo6Y3JlYXRlRnJvbVBhcmFtcyk6CisgICAg
ICAgIChXZWJDb3JlOjpMb2FkRm9udENhbGxiYWNrOjpMb2FkRm9udENhbGxiYWNrKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZvbnRMb2FkZXI6OnNjaGVkdWxlRXZlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6Rm9udExvYWRlcjo6bm90aWZ5V2hlbkZvbnRzUmVhZHkpOgorICAgICAgICAqIGNzcy9Gb250
TG9hZGVyLmg6CisgICAgICAgICogY3NzL0xlbmd0aFJlcGVhdC5oOgorICAgICAgICAoV2ViQ29y
ZTo6TGVuZ3RoUmVwZWF0OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoUmVwZWF0
OjpzZXRJbnRlcnZhbCk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGhSZXBlYXQ6Okxlbmd0aFJl
cGVhdCk6CisgICAgICAgICogY3NzL01lZGlhTGlzdC5oOgorICAgICAgICAqIGNzcy9NZWRpYVF1
ZXJ5TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVF1ZXJ5TGlzdDo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUXVlcnlMaXN0OjpNZWRpYVF1ZXJ5TGlzdCk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVF1ZXJ5TGlzdDo6YWRkTGlzdGVuZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFRdWVyeUxpc3Q6OnJlbW92ZUxpc3RlbmVyKToKKyAgICAgICAgKiBjc3MvTWVk
aWFRdWVyeUxpc3QuaDoKKyAgICAgICAgKiBjc3MvTWVkaWFRdWVyeU1hdGNoZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFRdWVyeU1hdGNoZXI6Okxpc3RlbmVyOjpMaXN0ZW5lcik6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVF1ZXJ5TWF0Y2hlcjo6YWRkTGlzdGVuZXIpOgorICAgICAg
ICAqIGNzcy9NZWRpYVF1ZXJ5TWF0Y2hlci5oOgorICAgICAgICAqIGNzcy9QYWlyLmg6CisgICAg
ICAgICogY3NzL1JlY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlY3RCYXNlOjpzZXRUb3ApOgor
ICAgICAgICAoV2ViQ29yZTo6UmVjdEJhc2U6OnNldFJpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlY3RCYXNlOjpzZXRCb3R0b20pOgorICAgICAgICAoV2ViQ29yZTo6UmVjdEJhc2U6OnNldExl
ZnQpOgorICAgICAgICAqIGNzcy9TVkdDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6YWRqdXN0U1ZHUGFpbnRG
b3JDdXJyZW50Q29sb3IpOgorICAgICAgICAqIGNzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFN0eWxlSW1h
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Q2xp
cFBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0
UXVvdGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVy
dFJlZmxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVyQ29udmVydGVyOjpj
b252ZXJ0U2hhcGVWYWx1ZSk6CisgICAgICAgICogY3NzL1N0eWxlUHJvcGVydGllcy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZVByb3BlcnRpZXM6OmdldFByb3BlcnR5Q1NTVmFsdWUpOgor
ICAgICAgICAoV2ViQ29yZTo6TXV0YWJsZVN0eWxlUHJvcGVydGllczo6c2V0UHJvcGVydHkpOgor
ICAgICAgICAqIGNzcy9TdHlsZVByb3BlcnRpZXMuaDoKKyAgICAgICAgKiBjc3MvU3R5bGVSZXNv
bHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjphZGRLZXlmcmFtZVN0
eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OnBzZXVkb1N0eWxlRm9yRWxl
bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpzdHlsZUltYWdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmNhY2hlZE9yUGVuZGluZ0Zyb21WYWx1ZSk6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpnZW5lcmF0ZWRPclBlbmRpbmdGcm9t
VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6c2V0T3JQZW5kaW5nRnJv
bVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmN1cnNvck9yUGVuZGlu
Z0Zyb21WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpsb2FkUGVuZGlu
Z0ltYWdlKToKKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5oOgorICAgICAgICAqIGNzcy9T
dHlsZVJ1bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSdWxlQmFzZTo6Y3JlYXRlQ1NT
T01XcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUnVsZU1lZGlhOjpTdHlsZVJ1bGVN
ZWRpYSk6CisgICAgICAgICogY3NzL1N0eWxlUnVsZS5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGVSdWxlTWVkaWE6OmNyZWF0ZSk6CisgICAgICAgICogY3NzL1N0eWxlUnVsZUltcG9ydC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJ1bGVJbXBvcnQ6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZVJ1bGVJbXBvcnQ6OlN0eWxlUnVsZUltcG9ydCk6CisgICAgICAgICogY3Nz
L1N0eWxlUnVsZUltcG9ydC5oOgorICAgICAgICAqIGNzcy9TdHlsZVNoZWV0Q29udGVudHMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVTaGVldENvbnRlbnRzOjpwYXJzZXJBcHBlbmRSdWxl
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlU2hlZXRDb250ZW50czo6d3JhcHBlckluc2VydFJ1
bGUpOgorICAgICAgICAqIGNzcy9TdHlsZVNoZWV0Q29udGVudHMuaDoKKyAgICAgICAgKiBjc3Mv
U3R5bGVTaGVldExpc3QuaDoKKyAgICAgICAgKiBjc3MvV2ViS2l0Q1NTRmlsdGVyVmFsdWUuY3Bw
OgorICAgICAgICAqIGNzcy9XZWJLaXRDU1NGaWx0ZXJWYWx1ZS5oOgorICAgICAgICAqIGNzcy9X
ZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5jcHA6CisgICAgICAgICogY3NzL1dlYktpdENTU1RyYW5z
Zm9ybVZhbHVlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFNlbGVjdG9yLmg6
CisKIDIwMTUtMDgtMzAgIFJ5dWFuIENob2kgIDxyeXVhbi5jaG9pQG5hdmVyY29ycC5jb20+CiAK
ICAgICAgICAgW0Nvb3JkaW5hdGVkR3JhcGhpY3NdIFJlbW92ZSB1bm5lY2Vzc2FyeSB0d28gdmly
dHVhbCBtZXRob2RzIGZyb20gVGlsZWRCYWNraW5nU3RvcmVDbGllbnQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9CYXNpY1NoYXBlRnVuY3Rpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9CYXNpY1NoYXBlRnVuY3Rpb25zLmNwcAppbmRleCAwNjRmY2QyLi5kMGQ5ZWQxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQmFzaWNTaGFwZUZ1bmN0aW9ucy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0Jhc2ljU2hhcGVGdW5jdGlvbnMuY3BwCkBAIC0xNzksNyArMTc5
LDcgQEAgc3RhdGljIEJhc2ljU2hhcGVDZW50ZXJDb29yZGluYXRlIGNvbnZlcnRUb0NlbnRlckNv
b3JkaW5hdGUoY29uc3QgQ1NTVG9MZW5ndGhDb24KICAgICByZXR1cm4gQmFzaWNTaGFwZUNlbnRl
ckNvb3JkaW5hdGUoZGlyZWN0aW9uLCBvZmZzZXQpOwogfQogCi1zdGF0aWMgQmFzaWNTaGFwZVJh
ZGl1cyBjc3NWYWx1ZVRvQmFzaWNTaGFwZVJhZGl1cyhjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNp
b25EYXRhJiBjb252ZXJzaW9uRGF0YSwgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcmFk
aXVzKQorc3RhdGljIEJhc2ljU2hhcGVSYWRpdXMgY3NzVmFsdWVUb0Jhc2ljU2hhcGVSYWRpdXMo
Y29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYgY29udmVyc2lvbkRhdGEsIFJlZlB0cjxD
U1NQcmltaXRpdmVWYWx1ZT4mJiByYWRpdXMpCiB7CiAgICAgaWYgKCFyYWRpdXMpCiAgICAgICAg
IHJldHVybiBCYXNpY1NoYXBlUmFkaXVzKEJhc2ljU2hhcGVSYWRpdXM6OkNsb3Nlc3RTaWRlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9CYXNpY1NoYXBlRnVuY3Rpb25zLmggYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQmFzaWNTaGFwZUZ1bmN0aW9ucy5oCmluZGV4IGVjM2UyM2UuLjA3
MzdkMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9CYXNpY1NoYXBlRnVuY3Rpb25z
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0Jhc2ljU2hhcGVGdW5jdGlvbnMuaApAQCAtMzEs
NyArMzEsNiBAQAogI2RlZmluZSBCYXNpY1NoYXBlRnVuY3Rpb25zX2gKIAogI2luY2x1ZGUgIkJh
c2ljU2hhcGVzLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQW5pbWF0aW9uVHJp
Z2dlclNjcm9sbFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQW5pbWF0aW9uVHJpZ2dl
clNjcm9sbFZhbHVlLmgKaW5kZXggODZjYzJmZi4uZTQwZWJkZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0FuaW1hdGlvblRyaWdnZXJTY3JvbGxWYWx1ZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NBbmltYXRpb25UcmlnZ2VyU2Nyb2xsVmFsdWUuaApAQCAtMjksMTMg
KzI5LDEyIEBACiAjaWYgRU5BQkxFKENTU19BTklNQVRJT05TX0xFVkVMXzIpCiAKICNpbmNsdWRl
ICJDU1NWYWx1ZS5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgQ1NTQW5pbWF0aW9uVHJpZ2dlclNjcm9sbFZhbHVlIDogcHVibGlj
IENTU1ZhbHVlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPENTU0FuaW1hdGlvblRyaWdnZXJT
Y3JvbGxWYWx1ZT4gY3JlYXRlKFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHN0YXJ0VmFsdWUsIFBhc3NS
ZWZQdHI8Q1NTVmFsdWU+IGVuZFZhbHVlID0gbnVsbHB0cikKKyAgICBzdGF0aWMgUmVmPENTU0Fu
aW1hdGlvblRyaWdnZXJTY3JvbGxWYWx1ZT4gY3JlYXRlKFJlZlB0cjxDU1NWYWx1ZT4mJiBzdGFy
dFZhbHVlLCBSZWZQdHI8Q1NTVmFsdWU+JiYgZW5kVmFsdWUgPSBudWxscHRyKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTQW5pbWF0aW9uVHJpZ2dlclNjcm9sbFZhbHVl
KHN0YXJ0VmFsdWUsIGVuZFZhbHVlKSk7CiAgICAgfQpAQCAtNDksNyArNDgsNyBAQCBwdWJsaWM6
CiAgICAgYm9vbCBlcXVhbHMoY29uc3QgQ1NTQW5pbWF0aW9uVHJpZ2dlclNjcm9sbFZhbHVlJikg
Y29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgQ1NTQW5pbWF0aW9uVHJpZ2dlclNjcm9sbFZhbHVlKFBh
c3NSZWZQdHI8Q1NTVmFsdWU+IHN0YXJ0VmFsdWUsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IGVuZFZh
bHVlKQorICAgIENTU0FuaW1hdGlvblRyaWdnZXJTY3JvbGxWYWx1ZShSZWZQdHI8Q1NTVmFsdWU+
JiYgc3RhcnRWYWx1ZSwgUmVmUHRyPENTU1ZhbHVlPiYmIGVuZFZhbHVlKQogICAgICAgICA6IENT
U1ZhbHVlKEFuaW1hdGlvblRyaWdnZXJTY3JvbGxDbGFzcykKICAgICAgICAgLCBtX3N0YXJ0VmFs
dWUoc3RhcnRWYWx1ZSkKICAgICAgICAgLCBtX2VuZFZhbHVlKGVuZFZhbHVlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Jhc2ljU2hhcGVzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NCYXNpY1NoYXBlcy5jcHAKaW5kZXggMWRlNzcxNi4uOTdmNDBmMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Jhc2ljU2hhcGVzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTQmFzaWNTaGFwZXMuY3BwCkBAIC00OCw3ICs0OCw3IEBAIHN0YXRpYyBTdHJp
bmcgc2VyaWFsaXplUG9zaXRpb25PZmZzZXQoY29uc3QgUGFpciYgb2Zmc2V0LCBjb25zdCBQYWly
JiBvdGhlcikKICAgICByZXR1cm4gb2Zmc2V0LmNzc1RleHQoKTsKIH0KIAotc3RhdGljIFJlZjxD
U1NQcmltaXRpdmVWYWx1ZT4gYnVpbGRTZXJpYWxpemFibGVQb3NpdGlvbk9mZnNldChQYXNzUmVm
UHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBvZmZzZXQsIENTU1ZhbHVlSUQgZGVmYXVsdFNpZGUpCitz
dGF0aWMgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBidWlsZFNlcmlhbGl6YWJsZVBvc2l0aW9uT2Zm
c2V0KFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4mJiBvZmZzZXQsIENTU1ZhbHVlSUQgZGVmYXVs
dFNpZGUpCiB7CiAgICAgQ1NTVmFsdWVJRCBzaWRlID0gZGVmYXVsdFNpZGU7CiAgICAgUmVmUHRy
PENTU1ByaW1pdGl2ZVZhbHVlPiBhbW91bnQ7CkBAIC0xMDcsOCArMTA3LDggQEAgc3RhdGljIFN0
cmluZyBidWlsZENpcmNsZVN0cmluZyhjb25zdCBTdHJpbmcmIHJhZGl1cywgY29uc3QgU3RyaW5n
JiBjZW50ZXJYLCBjb24KIAogU3RyaW5nIENTU0Jhc2ljU2hhcGVDaXJjbGU6OmNzc1RleHQoKSBj
b25zdAogewotICAgIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gbm9ybWFsaXplZENYID0gYnVpbGRT
ZXJpYWxpemFibGVQb3NpdGlvbk9mZnNldChtX2NlbnRlclgsIENTU1ZhbHVlTGVmdCk7Ci0gICAg
UmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBub3JtYWxpemVkQ1kgPSBidWlsZFNlcmlhbGl6YWJsZVBv
c2l0aW9uT2Zmc2V0KG1fY2VudGVyWSwgQ1NTVmFsdWVUb3ApOworICAgIFJlZjxDU1NQcmltaXRp
dmVWYWx1ZT4gbm9ybWFsaXplZENYID0gYnVpbGRTZXJpYWxpemFibGVQb3NpdGlvbk9mZnNldCht
X2NlbnRlclguY29weVJlZigpLCBDU1NWYWx1ZUxlZnQpOworICAgIFJlZjxDU1NQcmltaXRpdmVW
YWx1ZT4gbm9ybWFsaXplZENZID0gYnVpbGRTZXJpYWxpemFibGVQb3NpdGlvbk9mZnNldChtX2Nl
bnRlclkuY29weVJlZigpLCBDU1NWYWx1ZVRvcCk7CiAKICAgICBTdHJpbmcgcmFkaXVzOwogICAg
IGlmIChtX3JhZGl1cyAmJiBtX3JhZGl1cy0+Z2V0VmFsdWVJRCgpICE9IENTU1ZhbHVlQ2xvc2Vz
dFNpZGUpCkBAIC0xNjQsOCArMTY0LDggQEAgc3RhdGljIFN0cmluZyBidWlsZEVsbGlwc2VTdHJp
bmcoY29uc3QgU3RyaW5nJiByYWRpdXNYLCBjb25zdCBTdHJpbmcmIHJhZGl1c1ksIGMKIAogU3Ry
aW5nIENTU0Jhc2ljU2hhcGVFbGxpcHNlOjpjc3NUZXh0KCkgY29uc3QKIHsKLSAgICBSZWY8Q1NT
UHJpbWl0aXZlVmFsdWU+IG5vcm1hbGl6ZWRDWCA9IGJ1aWxkU2VyaWFsaXphYmxlUG9zaXRpb25P
ZmZzZXQobV9jZW50ZXJYLCBDU1NWYWx1ZUxlZnQpOwotICAgIFJlZjxDU1NQcmltaXRpdmVWYWx1
ZT4gbm9ybWFsaXplZENZID0gYnVpbGRTZXJpYWxpemFibGVQb3NpdGlvbk9mZnNldChtX2NlbnRl
clksIENTU1ZhbHVlVG9wKTsKKyAgICBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IG5vcm1hbGl6ZWRD
WCA9IGJ1aWxkU2VyaWFsaXphYmxlUG9zaXRpb25PZmZzZXQobV9jZW50ZXJYLmNvcHlSZWYoKSwg
Q1NTVmFsdWVMZWZ0KTsKKyAgICBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IG5vcm1hbGl6ZWRDWSA9
IGJ1aWxkU2VyaWFsaXphYmxlUG9zaXRpb25PZmZzZXQobV9jZW50ZXJZLmNvcHlSZWYoKSwgQ1NT
VmFsdWVUb3ApOwogCiAgICAgU3RyaW5nIHJhZGl1c1g7CiAgICAgU3RyaW5nIHJhZGl1c1k7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQmFzaWNTaGFwZXMuaCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NCYXNpY1NoYXBlcy5oCmluZGV4IDRjYzFlMjQuLjlhMTVhNmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCYXNpY1NoYXBlcy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NCYXNpY1NoYXBlcy5oCkBAIC03NCwxMCArNzQsMTAgQEAgcHVibGljOgog
ICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBib3R0b21SaWdodFJhZGl1cygpIGNvbnN0IHsgcmV0dXJu
IG1fYm90dG9tUmlnaHRSYWRpdXMuZ2V0KCk7IH0KICAgICBDU1NQcmltaXRpdmVWYWx1ZSogYm90
dG9tTGVmdFJhZGl1cygpIGNvbnN0IHsgcmV0dXJuIG1fYm90dG9tTGVmdFJhZGl1cy5nZXQoKTsg
fQogCi0gICAgdm9pZCBzZXRUb3AoUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gdG9wKSB7
IG1fdG9wID0gdG9wOyB9Ci0gICAgdm9pZCBzZXRSaWdodChQYXNzUmVmUHRyPENTU1ByaW1pdGl2
ZVZhbHVlPiByaWdodCkgeyBtX3JpZ2h0ID0gcmlnaHQ7IH0KLSAgICB2b2lkIHNldEJvdHRvbShQ
YXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBib3R0b20pIHsgbV9ib3R0b20gPSBib3R0b207
IH0KLSAgICB2b2lkIHNldExlZnQoUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gbGVmdCkg
eyBtX2xlZnQgPSBsZWZ0OyB9CisgICAgdm9pZCBzZXRUb3AoUmVmUHRyPENTU1ByaW1pdGl2ZVZh
bHVlPiYmIHRvcCkgeyBtX3RvcCA9IHRvcDsgfQorICAgIHZvaWQgc2V0UmlnaHQoUmVmUHRyPENT
U1ByaW1pdGl2ZVZhbHVlPiYmIHJpZ2h0KSB7IG1fcmlnaHQgPSByaWdodDsgfQorICAgIHZvaWQg
c2V0Qm90dG9tKFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4mJiBib3R0b20pIHsgbV9ib3R0b20g
PSBib3R0b207IH0KKyAgICB2b2lkIHNldExlZnQoUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiYm
IGxlZnQpIHsgbV9sZWZ0ID0gbGVmdDsgfQogCiAgICAgdm9pZCB1cGRhdGVTaGFwZVNpemU0VmFs
dWVzKENTU1ByaW1pdGl2ZVZhbHVlKiB0b3AsIENTU1ByaW1pdGl2ZVZhbHVlKiByaWdodCwgQ1NT
UHJpbWl0aXZlVmFsdWUqIGJvdHRvbSwgQ1NTUHJpbWl0aXZlVmFsdWUqIGxlZnQpCiAgICAgewpA
QCAtMTAyLDEwICsxMDIsMTAgQEAgcHVibGljOgogICAgICAgICB1cGRhdGVTaGFwZVNpemU0VmFs
dWVzKHZhbHVlMSwgdmFsdWUyLCB2YWx1ZTMsIHZhbHVlMik7CiAgICAgfQogCi0gICAgdm9pZCBz
ZXRUb3BMZWZ0UmFkaXVzKFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHJhZGl1cykgeyBt
X3RvcExlZnRSYWRpdXMgPSByYWRpdXM7IH0KLSAgICB2b2lkIHNldFRvcFJpZ2h0UmFkaXVzKFBh
c3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHJhZGl1cykgeyBtX3RvcFJpZ2h0UmFkaXVzID0g
cmFkaXVzOyB9Ci0gICAgdm9pZCBzZXRCb3R0b21SaWdodFJhZGl1cyhQYXNzUmVmUHRyPENTU1By
aW1pdGl2ZVZhbHVlPiByYWRpdXMpIHsgbV9ib3R0b21SaWdodFJhZGl1cyA9IHJhZGl1czsgfQot
ICAgIHZvaWQgc2V0Qm90dG9tTGVmdFJhZGl1cyhQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVl
PiByYWRpdXMpIHsgbV9ib3R0b21MZWZ0UmFkaXVzID0gcmFkaXVzOyB9CisgICAgdm9pZCBzZXRU
b3BMZWZ0UmFkaXVzKFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4mJiByYWRpdXMpIHsgbV90b3BM
ZWZ0UmFkaXVzID0gcmFkaXVzOyB9CisgICAgdm9pZCBzZXRUb3BSaWdodFJhZGl1cyhSZWZQdHI8
Q1NTUHJpbWl0aXZlVmFsdWU+JiYgcmFkaXVzKSB7IG1fdG9wUmlnaHRSYWRpdXMgPSByYWRpdXM7
IH0KKyAgICB2b2lkIHNldEJvdHRvbVJpZ2h0UmFkaXVzKFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1
ZT4mJiByYWRpdXMpIHsgbV9ib3R0b21SaWdodFJhZGl1cyA9IHJhZGl1czsgfQorICAgIHZvaWQg
c2V0Qm90dG9tTGVmdFJhZGl1cyhSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+JiYgcmFkaXVzKSB7
IG1fYm90dG9tTGVmdFJhZGl1cyA9IHJhZGl1czsgfQogCiAgICAgdmlydHVhbCBTdHJpbmcgY3Nz
VGV4dCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBlcXVhbHMoY29uc3QgQ1NT
QmFzaWNTaGFwZSYpIGNvbnN0IG92ZXJyaWRlOwpAQCAtMTM3LDkgKzEzNyw5IEBAIHB1YmxpYzoK
ICAgICBDU1NQcmltaXRpdmVWYWx1ZSogY2VudGVyWSgpIGNvbnN0IHsgcmV0dXJuIG1fY2VudGVy
WS5nZXQoKTsgfQogICAgIENTU1ByaW1pdGl2ZVZhbHVlKiByYWRpdXMoKSBjb25zdCB7IHJldHVy
biBtX3JhZGl1cy5nZXQoKTsgfQogCi0gICAgdm9pZCBzZXRDZW50ZXJYKFBhc3NSZWZQdHI8Q1NT
UHJpbWl0aXZlVmFsdWU+IGNlbnRlclgpIHsgbV9jZW50ZXJYID0gY2VudGVyWDsgfQotICAgIHZv
aWQgc2V0Q2VudGVyWShQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjZW50ZXJZKSB7IG1f
Y2VudGVyWSA9IGNlbnRlclk7IH0KLSAgICB2b2lkIHNldFJhZGl1cyhQYXNzUmVmUHRyPENTU1By
aW1pdGl2ZVZhbHVlPiByYWRpdXMpIHsgbV9yYWRpdXMgPSByYWRpdXM7IH0KKyAgICB2b2lkIHNl
dENlbnRlclgoUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiYmIGNlbnRlclgpIHsgbV9jZW50ZXJY
ID0gY2VudGVyWDsgfQorICAgIHZvaWQgc2V0Q2VudGVyWShSZWZQdHI8Q1NTUHJpbWl0aXZlVmFs
dWU+JiYgY2VudGVyWSkgeyBtX2NlbnRlclkgPSBjZW50ZXJZOyB9CisgICAgdm9pZCBzZXRSYWRp
dXMoUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiYmIHJhZGl1cykgeyBtX3JhZGl1cyA9IHJhZGl1
czsgfQogCiBwcml2YXRlOgogICAgIENTU0Jhc2ljU2hhcGVDaXJjbGUoKSB7IH0KQEAgLTE2MCwx
MCArMTYwLDEwIEBAIHB1YmxpYzoKICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcmFkaXVzWCgpIGNv
bnN0IHsgcmV0dXJuIG1fcmFkaXVzWC5nZXQoKTsgfQogICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBy
YWRpdXNZKCkgY29uc3QgeyByZXR1cm4gbV9yYWRpdXNZLmdldCgpOyB9CiAKLSAgICB2b2lkIHNl
dENlbnRlclgoUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY2VudGVyWCkgeyBtX2NlbnRl
clggPSBjZW50ZXJYOyB9Ci0gICAgdm9pZCBzZXRDZW50ZXJZKFBhc3NSZWZQdHI8Q1NTUHJpbWl0
aXZlVmFsdWU+IGNlbnRlclkpIHsgbV9jZW50ZXJZID0gY2VudGVyWTsgfQotICAgIHZvaWQgc2V0
UmFkaXVzWChQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiByYWRpdXNYKSB7IG1fcmFkaXVz
WCA9IHJhZGl1c1g7IH0KLSAgICB2b2lkIHNldFJhZGl1c1koUGFzc1JlZlB0cjxDU1NQcmltaXRp
dmVWYWx1ZT4gcmFkaXVzWSkgeyBtX3JhZGl1c1kgPSByYWRpdXNZOyB9CisgICAgdm9pZCBzZXRD
ZW50ZXJYKFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4mJiBjZW50ZXJYKSB7IG1fY2VudGVyWCA9
IGNlbnRlclg7IH0KKyAgICB2b2lkIHNldENlbnRlclkoUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVl
PiYmIGNlbnRlclkpIHsgbV9jZW50ZXJZID0gY2VudGVyWTsgfQorICAgIHZvaWQgc2V0UmFkaXVz
WChSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+JiYgcmFkaXVzWCkgeyBtX3JhZGl1c1ggPSByYWRp
dXNYOyB9CisgICAgdm9pZCBzZXRSYWRpdXNZKFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4mJiBy
YWRpdXNZKSB7IG1fcmFkaXVzWSA9IHJhZGl1c1k7IH0KIAogICAgIHZpcnR1YWwgU3RyaW5nIGNz
c1RleHQoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgZXF1YWxzKGNvbnN0IENT
U0Jhc2ljU2hhcGUmKSBjb25zdCBvdmVycmlkZTsKQEAgLTE4Myw3ICsxODMsNyBAQCBjbGFzcyBD
U1NCYXNpY1NoYXBlUG9seWdvbiBmaW5hbCA6IHB1YmxpYyBDU1NCYXNpY1NoYXBlIHsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgUmVmPENTU0Jhc2ljU2hhcGVQb2x5Z29uPiBjcmVhdGUoKSB7IHJldHVy
biBhZG9wdFJlZigqbmV3IENTU0Jhc2ljU2hhcGVQb2x5Z29uKTsgfQogCi0gICAgdm9pZCBhcHBl
bmRQb2ludChQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiB4LCBQYXNzUmVmUHRyPENTU1By
aW1pdGl2ZVZhbHVlPiB5KQorICAgIHZvaWQgYXBwZW5kUG9pbnQoUmVmUHRyPENTU1ByaW1pdGl2
ZVZhbHVlPiB4LCBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHkpCiAgICAgewogICAgICAgICBt
X3ZhbHVlcy5hcHBlbmQoeCk7CiAgICAgICAgIG1fdmFsdWVzLmFwcGVuZCh5KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCb3JkZXJJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTQm9yZGVySW1hZ2UuY3BwCmluZGV4IGJlNzQzMmMuLjJiNzYyOTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCb3JkZXJJbWFnZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0JvcmRlckltYWdlLmNwcApAQCAtMjIsNyArMjIsNyBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLVJlZjxDU1NWYWx1ZUxpc3Q+IGNyZWF0ZUJvcmRlckltYWdlVmFsdWUo
UGFzc1JlZlB0cjxDU1NWYWx1ZT4gaW1hZ2UsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IGltYWdlU2xp
Y2UsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IGJvcmRlclNsaWNlLCBQYXNzUmVmUHRyPENTU1ZhbHVl
PiBvdXRzZXQsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHJlcGVhdCkKK1JlZjxDU1NWYWx1ZUxpc3Q+
IGNyZWF0ZUJvcmRlckltYWdlVmFsdWUoUmVmUHRyPENTU1ZhbHVlPiYmIGltYWdlLCBSZWZQdHI8
Q1NTVmFsdWU+JiYgaW1hZ2VTbGljZSwgUmVmUHRyPENTU1ZhbHVlPiYmIGJvcmRlclNsaWNlLCBS
ZWZQdHI8Q1NTVmFsdWU+JiYgb3V0c2V0LCBSZWZQdHI8Q1NTVmFsdWU+JiYgcmVwZWF0KQogewog
ICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKICAg
ICBpZiAoaW1hZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQm9yZGVySW1h
Z2UuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCb3JkZXJJbWFnZS5oCmluZGV4IGMyYzI1ZGEu
LjU2ODU3YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCb3JkZXJJbWFnZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCb3JkZXJJbWFnZS5oCkBAIC0yMiwxMiArMjIs
MTEgQEAKIAogI2luY2x1ZGUgIkNTU0JvcmRlckltYWdlU2xpY2VWYWx1ZS5oIgogI2luY2x1ZGUg
IkNTU1ZhbHVlTGlzdC5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxDU1NWYWx1ZUxpc3Q+
IGNyZWF0ZUJvcmRlckltYWdlVmFsdWUoUGFzc1JlZlB0cjxDU1NWYWx1ZT4gaW1hZ2UsIFBhc3NS
ZWZQdHI8Q1NTVmFsdWU+IGltYWdlU2xpY2UsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IGJvcmRlclNs
aWNlLCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBvdXRzZXQsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHJl
cGVhdCk7CitSZWY8Q1NTVmFsdWVMaXN0PiBjcmVhdGVCb3JkZXJJbWFnZVZhbHVlKFJlZlB0cjxD
U1NWYWx1ZT4mJiBpbWFnZSwgUmVmUHRyPENTU1ZhbHVlPiYmIGltYWdlU2xpY2UsIFJlZlB0cjxD
U1NWYWx1ZT4mJiBib3JkZXJTbGljZSwgUmVmUHRyPENTU1ZhbHVlPiYmIG91dHNldCwgUmVmUHRy
PENTU1ZhbHVlPiYmIHJlcGVhdCk7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0JvcmRlckltYWdlU2xpY2VWYWx1ZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlLmNwcAppbmRleCA1Y2Mw
N2ZkLi4yZDRkNDI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQm9yZGVySW1h
Z2VTbGljZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQm9yZGVySW1hZ2VT
bGljZVZhbHVlLmNwcApAQCAtMzEsNyArMzEsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LUNTU0JvcmRlckltYWdlU2xpY2VWYWx1ZTo6Q1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlKFBhc3NS
ZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHNsaWNlcywgYm9vbCBmaWxsKQorQ1NTQm9yZGVySW1h
Z2VTbGljZVZhbHVlOjpDU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUoUmVmUHRyPENTU1ByaW1pdGl2
ZVZhbHVlPiYmIHNsaWNlcywgYm9vbCBmaWxsKQogICAgIDogQ1NTVmFsdWUoQm9yZGVySW1hZ2VT
bGljZUNsYXNzKQogICAgICwgbV9zbGljZXMoc2xpY2VzKQogICAgICwgbV9maWxsKGZpbGwpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlLmgKaW5kZXggYjhi
NzU1Mi4uNjNlNWM2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0JvcmRlcklt
YWdlU2xpY2VWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCb3JkZXJJbWFnZVNs
aWNlVmFsdWUuaApAQCAtMjcsNyArMjcsNiBAQAogI2RlZmluZSBDU1NCb3JkZXJJbWFnZVNsaWNl
VmFsdWVfaAogCiAjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWUuaCIKLSNpbmNsdWRlIDx3dGYv
UGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpAQCAtMzYsOSArMzUsOSBAQCBjbGFzcyBSZWN0OwogCiBjbGFzcyBDU1NCb3JkZXJJbWFn
ZVNsaWNlVmFsdWUgOiBwdWJsaWMgQ1NTVmFsdWUgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8
Q1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlPiBjcmVhdGUoUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVW
YWx1ZT4gc2xpY2VzLCBib29sIGZpbGwpCisgICAgc3RhdGljIFJlZjxDU1NCb3JkZXJJbWFnZVNs
aWNlVmFsdWU+IGNyZWF0ZShSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+JiYgc2xpY2VzLCBib29s
IGZpbGwpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NCb3JkZXJJbWFn
ZVNsaWNlVmFsdWUoc2xpY2VzLCBmaWxsKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IENTU0JvcmRlckltYWdlU2xpY2VWYWx1ZShXVEY6Om1vdmUoc2xpY2VzKSwgZmlsbCkpOwogICAg
IH0KIAogICAgIFN0cmluZyBjdXN0b21DU1NUZXh0KCkgY29uc3Q7CkBAIC01Myw3ICs1Miw3IEBA
IHB1YmxpYzoKICAgICBib29sIG1fZmlsbDsKIAogcHJpdmF0ZToKLSAgICBDU1NCb3JkZXJJbWFn
ZVNsaWNlVmFsdWUoUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gc2xpY2VzLCBib29sIGZp
bGwpOworICAgIENTU0JvcmRlckltYWdlU2xpY2VWYWx1ZShSZWZQdHI8Q1NTUHJpbWl0aXZlVmFs
dWU+JiYgc2xpY2VzLCBib29sIGZpbGwpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuY3BwCmluZGV4IDM2MTQyZjEu
LjJhZjBkY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZh
bHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5jcHAK
QEAgLTE5OCw5ICsxOTgsOSBAQCBkb3VibGUgQ1NTQ2FsY1ZhbHVlOjpjb21wdXRlTGVuZ3RoUHgo
Y29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYgY29udmVyc2lvbgogY2xhc3MgQ1NTQ2Fs
Y1ByaW1pdGl2ZVZhbHVlIGZpbmFsIDogcHVibGljIENTU0NhbGNFeHByZXNzaW9uTm9kZSB7CiAg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxDU1ND
YWxjUHJpbWl0aXZlVmFsdWU+IGNyZWF0ZShQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiB2
YWx1ZSwgYm9vbCBpc0ludGVnZXIpCisgICAgc3RhdGljIFJlZjxDU1NDYWxjUHJpbWl0aXZlVmFs
dWU+IGNyZWF0ZShSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+JiYgdmFsdWUsIGJvb2wgaXNJbnRl
Z2VyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTQ2FsY1ByaW1pdGl2
ZVZhbHVlKHZhbHVlLCBpc0ludGVnZXIpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
Q1NTQ2FsY1ByaW1pdGl2ZVZhbHVlKFdURjo6bW92ZSh2YWx1ZSksIGlzSW50ZWdlcikpOwogICAg
IH0KIAogICAgIHN0YXRpYyBSZWZQdHI8Q1NTQ2FsY1ByaW1pdGl2ZVZhbHVlPiBjcmVhdGUoZG91
YmxlIHZhbHVlLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzIHR5cGUsIGJvb2wgaXNJbnRl
Z2VyKQpAQCAtMjkxLDcgKzI5MSw3IEBAIHByaXZhdGU6CiAgICAgfQogCiBwcml2YXRlOgotICAg
IGV4cGxpY2l0IENTU0NhbGNQcmltaXRpdmVWYWx1ZShQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZh
bHVlPiB2YWx1ZSwgYm9vbCBpc0ludGVnZXIpCisgICAgZXhwbGljaXQgQ1NTQ2FsY1ByaW1pdGl2
ZVZhbHVlKFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4mJiB2YWx1ZSwgYm9vbCBpc0ludGVnZXIp
CiAgICAgICAgIDogQ1NTQ2FsY0V4cHJlc3Npb25Ob2RlKHVuaXRDYXRlZ29yeSgoQ1NTUHJpbWl0
aXZlVmFsdWU6OlVuaXRUeXBlcyl2YWx1ZS0+cHJpbWl0aXZlVHlwZSgpKSwgaXNJbnRlZ2VyKQog
ICAgICAgICAsIG1fdmFsdWUodmFsdWUpCiAgICAgewpAQCAtMzQ4LDcgKzM0OCw3IEBAIHN0YXRp
YyBpbmxpbmUgYm9vbCBpc0ludGVnZXJSZXN1bHQoQ2FsY09wZXJhdG9yIG9wLCBjb25zdCBDU1ND
YWxjRXhwcmVzc2lvbk5vZGUmCiBjbGFzcyBDU1NDYWxjQmluYXJ5T3BlcmF0aW9uIGZpbmFsIDog
cHVibGljIENTU0NhbGNFeHByZXNzaW9uTm9kZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxDU1NDYWxjQmluYXJ5T3BlcmF0aW9uPiBj
cmVhdGUoQ2FsY09wZXJhdG9yIG9wLCBQYXNzUmVmUHRyPENTU0NhbGNFeHByZXNzaW9uTm9kZT4g
bGVmdFNpZGUsIFBhc3NSZWZQdHI8Q1NTQ2FsY0V4cHJlc3Npb25Ob2RlPiByaWdodFNpZGUpCisg
ICAgc3RhdGljIFJlZlB0cjxDU1NDYWxjQmluYXJ5T3BlcmF0aW9uPiBjcmVhdGUoQ2FsY09wZXJh
dG9yIG9wLCBSZWZQdHI8Q1NTQ2FsY0V4cHJlc3Npb25Ob2RlPiYmIGxlZnRTaWRlLCBSZWZQdHI8
Q1NTQ2FsY0V4cHJlc3Npb25Ob2RlPiYmIHJpZ2h0U2lkZSkKICAgICB7CiAgICAgICAgIEFTU0VS
VChsZWZ0U2lkZS0+Y2F0ZWdvcnkoKSA8IENhbGNPdGhlcik7CiAgICAgICAgIEFTU0VSVChyaWdo
dFNpZGUtPmNhdGVnb3J5KCkgPCBDYWxjT3RoZXIpOwpAQCAtMzYxLDcgKzM2MSw3IEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDU1NDYWxjQmluYXJ5T3BlcmF0aW9uKG5l
d0NhdGVnb3J5LCBvcCwgbGVmdFNpZGUsIHJpZ2h0U2lkZSkpOwogICAgIH0KIAotICAgIHN0YXRp
YyBSZWZQdHI8Q1NTQ2FsY0V4cHJlc3Npb25Ob2RlPiBjcmVhdGVTaW1wbGlmaWVkKENhbGNPcGVy
YXRvciBvcCwgUGFzc1JlZlB0cjxDU1NDYWxjRXhwcmVzc2lvbk5vZGU+IGxlZnRTaWRlLCBQYXNz
UmVmUHRyPENTU0NhbGNFeHByZXNzaW9uTm9kZT4gcmlnaHRTaWRlKQorICAgIHN0YXRpYyBSZWZQ
dHI8Q1NTQ2FsY0V4cHJlc3Npb25Ob2RlPiBjcmVhdGVTaW1wbGlmaWVkKENhbGNPcGVyYXRvciBv
cCwgUmVmUHRyPENTU0NhbGNFeHByZXNzaW9uTm9kZT4mJiBsZWZ0U2lkZSwgUmVmUHRyPENTU0Nh
bGNFeHByZXNzaW9uTm9kZT4mJiByaWdodFNpZGUpCiAgICAgewogICAgICAgICBDYWxjdWxhdGlv
bkNhdGVnb3J5IGxlZnRDYXRlZ29yeSA9IGxlZnRTaWRlLT5jYXRlZ29yeSgpOwogICAgICAgICBD
YWxjdWxhdGlvbkNhdGVnb3J5IHJpZ2h0Q2F0ZWdvcnkgPSByaWdodFNpZGUtPmNhdGVnb3J5KCk7
CkBAIC01MTQsNyArNTE0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NfVU5LTk9XTjsKICAgICB9CiAKLSAgICBDU1NDYWxjQmluYXJ5T3BlcmF0aW9u
KENhbGN1bGF0aW9uQ2F0ZWdvcnkgY2F0ZWdvcnksIENhbGNPcGVyYXRvciBvcCwgUGFzc1JlZlB0
cjxDU1NDYWxjRXhwcmVzc2lvbk5vZGU+IGxlZnRTaWRlLCBQYXNzUmVmUHRyPENTU0NhbGNFeHBy
ZXNzaW9uTm9kZT4gcmlnaHRTaWRlKQorICAgIENTU0NhbGNCaW5hcnlPcGVyYXRpb24oQ2FsY3Vs
YXRpb25DYXRlZ29yeSBjYXRlZ29yeSwgQ2FsY09wZXJhdG9yIG9wLCBSZWZQdHI8Q1NTQ2FsY0V4
cHJlc3Npb25Ob2RlPiYmIGxlZnRTaWRlLCBSZWZQdHI8Q1NTQ2FsY0V4cHJlc3Npb25Ob2RlPiYm
IHJpZ2h0U2lkZSkKICAgICAgICAgOiBDU1NDYWxjRXhwcmVzc2lvbk5vZGUoY2F0ZWdvcnksIGlz
SW50ZWdlclJlc3VsdChvcCwgKmxlZnRTaWRlLCAqcmlnaHRTaWRlKSkKICAgICAgICAgLCBtX2xl
ZnRTaWRlKGxlZnRTaWRlKQogICAgICAgICAsIG1fcmlnaHRTaWRlKHJpZ2h0U2lkZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKaW5k
ZXggZDk1YzFiYy4uNGIwZDdiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nv
bXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nv
bXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTU4MywxMCArNTgzLDEwIEBAIHN0YXRpYyBS
ZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IHZhbHVlRm9yTmluZVBpZWNlSW1hZ2VRdWFkKGNvbnN0IExl
bmd0aEJveCYgYm94KQogICAgIH0KIAogICAgIGF1dG8gcXVhZCA9IFF1YWQ6OmNyZWF0ZSgpOwot
ICAgIHF1YWQtPnNldFRvcCh0b3ApOwotICAgIHF1YWQtPnNldFJpZ2h0KHJpZ2h0KTsKLSAgICBx
dWFkLT5zZXRCb3R0b20oYm90dG9tKTsKLSAgICBxdWFkLT5zZXRMZWZ0KGxlZnQpOworICAgIHF1
YWQtPnNldFRvcCh0b3AuY29weVJlZigpKTsKKyAgICBxdWFkLT5zZXRSaWdodChyaWdodC5jb3B5
UmVmKCkpOworICAgIHF1YWQtPnNldEJvdHRvbShib3R0b20uY29weVJlZigpKTsKKyAgICBxdWFk
LT5zZXRMZWZ0KGxlZnQuY29weVJlZigpKTsKIAogICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3Jl
YXRlVmFsdWUoV1RGOjptb3ZlKHF1YWQpKTsKIH0KQEAgLTkwMCw4ICs5MDAsOCBAQCBSZWY8Q1NT
VmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnZhbHVlRm9yU2hhZG93KGNvbnN0IFNoYWRv
d0RhdGEqIHNoYWRvdywgQwogICAgICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHggPSBh
ZGp1c3RMZW5ndGhGb3Jab29tKGN1cnJTaGFkb3dEYXRhLT54KCksIHN0eWxlLCBhZGp1c3QpOwog
ICAgICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHkgPSBhZGp1c3RMZW5ndGhGb3Jab29t
KGN1cnJTaGFkb3dEYXRhLT55KCksIHN0eWxlLCBhZGp1c3QpOwogICAgICAgICBSZWZQdHI8Q1NT
UHJpbWl0aXZlVmFsdWU+IGJsdXIgPSBhZGp1c3RMZW5ndGhGb3Jab29tKGN1cnJTaGFkb3dEYXRh
LT5yYWRpdXMoKSwgc3R5bGUsIGFkanVzdCk7Ci0gICAgICAgIFJlZlB0cjxDU1NQcmltaXRpdmVW
YWx1ZT4gc3ByZWFkID0gcHJvcGVydHlJRCA9PSBDU1NQcm9wZXJ0eVRleHRTaGFkb3cgPyBQYXNz
UmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPigpIDogYWRqdXN0TGVuZ3RoRm9yWm9vbShjdXJyU2hh
ZG93RGF0YS0+c3ByZWFkKCksIHN0eWxlLCBhZGp1c3QpOwotICAgICAgICBSZWZQdHI8Q1NTUHJp
bWl0aXZlVmFsdWU+IHN0eWxlID0gcHJvcGVydHlJRCA9PSBDU1NQcm9wZXJ0eVRleHRTaGFkb3cg
fHwgY3VyclNoYWRvd0RhdGEtPnN0eWxlKCkgPT0gTm9ybWFsID8gUGFzc1JlZlB0cjxDU1NQcmlt
aXRpdmVWYWx1ZT4oKSA6IGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFs
dWVJbnNldCk7CisgICAgICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gc3ByZWFkID0gcHJv
cGVydHlJRCA9PSBDU1NQcm9wZXJ0eVRleHRTaGFkb3cgPyBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFs
dWU+KCkgOiBhZGp1c3RMZW5ndGhGb3Jab29tKGN1cnJTaGFkb3dEYXRhLT5zcHJlYWQoKSwgc3R5
bGUsIGFkanVzdCk7CisgICAgICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gc3R5bGUgPSBw
cm9wZXJ0eUlEID09IENTU1Byb3BlcnR5VGV4dFNoYWRvdyB8fCBjdXJyU2hhZG93RGF0YS0+c3R5
bGUoKSA9PSBOb3JtYWwgPyBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+KCkgOiBjc3NWYWx1ZVBv
b2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlSW5zZXQpOwogICAgICAgICBSZWZQdHI8
Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbG9yID0gY3NzVmFsdWVQb29sLmNyZWF0ZUNvbG9yVmFsdWUo
Y3VyclNoYWRvd0RhdGEtPmNvbG9yKCkucmdiKCkpOwogICAgICAgICBsaXN0LmdldCgpLnByZXBl
bmQoQ1NTU2hhZG93VmFsdWU6OmNyZWF0ZSh4LnJlbGVhc2UoKSwgeS5yZWxlYXNlKCksIGJsdXIu
cmVsZWFzZSgpLCBzcHJlYWQucmVsZWFzZSgpLCBzdHlsZS5yZWxlYXNlKCksIGNvbG9yLnJlbGVh
c2UoKSkpOwogICAgIH0KQEAgLTEzMTAsNyArMTMxMCw3IEBAIHN0YXRpYyBSZWY8Q1NTVmFsdWU+
IGNyZWF0ZUxpbmVCb3hDb250YWluVmFsdWUodW5zaWduZWQgbGluZUJveENvbnRhaW4pCiAgICAg
cmV0dXJuIENTU0xpbmVCb3hDb250YWluVmFsdWU6OmNyZWF0ZShsaW5lQm94Q29udGFpbik7CiB9
CiAKLUNvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OkNvbXB1dGVkU3R5bGVFeHRyYWN0b3IoUGFzc1Jl
ZlB0cjxOb2RlPiBub2RlLCBib29sIGFsbG93VmlzaXRlZFN0eWxlLCBQc2V1ZG9JZCBwc2V1ZG9F
bGVtZW50U3BlY2lmaWVyKQorQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6Q29tcHV0ZWRTdHlsZUV4
dHJhY3RvcihSZWZQdHI8Tm9kZT4mJiBub2RlLCBib29sIGFsbG93VmlzaXRlZFN0eWxlLCBQc2V1
ZG9JZCBwc2V1ZG9FbGVtZW50U3BlY2lmaWVyKQogICAgIDogbV9ub2RlKG5vZGUpCiAgICAgLCBt
X3BzZXVkb0VsZW1lbnRTcGVjaWZpZXIocHNldWRvRWxlbWVudFNwZWNpZmllcikKICAgICAsIG1f
YWxsb3dWaXNpdGVkU3R5bGUoYWxsb3dWaXNpdGVkU3R5bGUpCkBAIC0xMzE4LDcgKzEzMTgsNyBA
QCBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpDb21wdXRlZFN0eWxlRXh0cmFjdG9yKFBhc3NSZWZQ
dHI8Tm9kZT4gbm9kZSwgYm9vbCBhbGxvdwogfQogCiAKLUNTU0NvbXB1dGVkU3R5bGVEZWNsYXJh
dGlvbjo6Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uKFBhc3NSZWZQdHI8Tm9kZT4gbiwgYm9v
bCBhbGxvd1Zpc2l0ZWRTdHlsZSwgY29uc3QgU3RyaW5nJiBwc2V1ZG9FbGVtZW50TmFtZSkKK0NT
U0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uKFJl
ZlB0cjxOb2RlPiYmIG4sIGJvb2wgYWxsb3dWaXNpdGVkU3R5bGUsIGNvbnN0IFN0cmluZyYgcHNl
dWRvRWxlbWVudE5hbWUpCiAgICAgOiBtX25vZGUobikKICAgICAsIG1fYWxsb3dWaXNpdGVkU3R5
bGUoYWxsb3dWaXNpdGVkU3R5bGUpCiAgICAgLCBtX3JlZkNvdW50KDEpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmggYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmgKaW5kZXggNmU5MWM5My4u
ZDhkNDdkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVE
ZWNsYXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVj
bGFyYXRpb24uaApAQCAtNDcsNyArNDcsNyBAQCBlbnVtIEFkanVzdFBpeGVsVmFsdWVzRm9yQ29t
cHV0ZWRTdHlsZSB7IEFkanVzdFBpeGVsVmFsdWVzLCBEb05vdEFkanVzdFBpeGVsVmFsdQogCiBj
bGFzcyBDb21wdXRlZFN0eWxlRXh0cmFjdG9yIHsKIHB1YmxpYzoKLSAgICBDb21wdXRlZFN0eWxl
RXh0cmFjdG9yKFBhc3NSZWZQdHI8Tm9kZT4sIGJvb2wgYWxsb3dWaXNpdGVkU3R5bGUgPSBmYWxz
ZSwgUHNldWRvSWQgPSBOT1BTRVVETyk7CisgICAgQ29tcHV0ZWRTdHlsZUV4dHJhY3RvcihSZWZQ
dHI8Tm9kZT4mJiwgYm9vbCBhbGxvd1Zpc2l0ZWRTdHlsZSA9IGZhbHNlLCBQc2V1ZG9JZCA9IE5P
UFNFVURPKTsKIAogICAgIFJlZlB0cjxDU1NWYWx1ZT4gcHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0
eUlELCBFVXBkYXRlTGF5b3V0ID0gVXBkYXRlTGF5b3V0KSBjb25zdDsKIApAQCAtNjgsNyArNjgs
NyBAQCBwcml2YXRlOgogICAgIE5vZGUqIHN0eWxlZE5vZGUoKSBjb25zdDsKIAogICAgIFJlZlB0
cjxDU1NWYWx1ZT4gc3ZnUHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlELCBFVXBkYXRlTGF5b3V0
KSBjb25zdDsKLSAgICBSZWZQdHI8U1ZHUGFpbnQ+IGFkanVzdFNWR1BhaW50Rm9yQ3VycmVudENv
bG9yKFBhc3NSZWZQdHI8U1ZHUGFpbnQ+LCBSZW5kZXJTdHlsZSopIGNvbnN0OworICAgIFJlZlB0
cjxTVkdQYWludD4gYWRqdXN0U1ZHUGFpbnRGb3JDdXJyZW50Q29sb3IoUmVmUHRyPFNWR1BhaW50
PiYmLCBSZW5kZXJTdHlsZSopIGNvbnN0OwogCiAgICAgc3RhdGljIFJlZjxDU1NWYWx1ZT4gdmFs
dWVGb3JTaGFkb3coY29uc3QgU2hhZG93RGF0YSosIENTU1Byb3BlcnR5SUQsIGNvbnN0IFJlbmRl
clN0eWxlJiwgQWRqdXN0UGl4ZWxWYWx1ZXNGb3JDb21wdXRlZFN0eWxlID0gQWRqdXN0UGl4ZWxW
YWx1ZXMpOwogICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY3VycmVudENvbG9yT3JWYWxp
ZENvbG9yKFJlbmRlclN0eWxlKiwgY29uc3QgQ29sb3ImKSBjb25zdDsKQEAgLTg1LDkgKzg1LDkg
QEAgcHJpdmF0ZToKIAogY2xhc3MgQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uIGZpbmFsIDog
cHVibGljIENTU1N0eWxlRGVjbGFyYXRpb24gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8Q1NT
Q29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uPiBjcmVhdGUoUGFzc1JlZlB0cjxOb2RlPiBub2RlLCBi
b29sIGFsbG93VmlzaXRlZFN0eWxlID0gZmFsc2UsIGNvbnN0IFN0cmluZyYgcHNldWRvRWxlbWVu
dE5hbWUgPSBTdHJpbmcoKSkKKyAgICBzdGF0aWMgUmVmPENTU0NvbXB1dGVkU3R5bGVEZWNsYXJh
dGlvbj4gY3JlYXRlKFJlZlB0cjxOb2RlPiYmIG5vZGUsIGJvb2wgYWxsb3dWaXNpdGVkU3R5bGUg
PSBmYWxzZSwgY29uc3QgU3RyaW5nJiBwc2V1ZG9FbGVtZW50TmFtZSA9IFN0cmluZygpKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0
aW9uKG5vZGUsIGFsbG93VmlzaXRlZFN0eWxlLCBwc2V1ZG9FbGVtZW50TmFtZSkpOworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24oV1RGOjpt
b3ZlKG5vZGUpLCBhbGxvd1Zpc2l0ZWRTdHlsZSwgcHNldWRvRWxlbWVudE5hbWUpKTsKICAgICB9
CiAgICAgdmlydHVhbCB+Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uKCk7CiAKQEAgLTk3LDcg
Kzk3LDcgQEAgcHVibGljOgogICAgIFN0cmluZyBnZXRQcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5
SUQpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIFdFQkNPUkVfRVhQT1JUIENTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbihQYXNzUmVmUHRyPE5vZGU+LCBib29sIGFsbG93VmlzaXRlZFN0eWxlLCBj
b25zdCBTdHJpbmcmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBDU1NDb21wdXRlZFN0eWxlRGVjbGFy
YXRpb24oUmVmUHRyPE5vZGU+JiYsIGJvb2wgYWxsb3dWaXNpdGVkU3R5bGUsIGNvbnN0IFN0cmlu
ZyYpOwogCiAgICAgLy8gQ1NTT00gZnVuY3Rpb25zLiBEb24ndCBtYWtlIHRoZXNlIHB1YmxpYy4K
ICAgICB2aXJ0dWFsIENTU1J1bGUqIHBhcmVudFJ1bGUoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5oIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmgKaW5kZXggZmEwM2JkOS4uOTYwZDhlYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmgKQEAgLTQzLDkgKzQzLDkgQEAgY2xh
c3MgRG9jdW1lbnQ7CiBjbGFzcyBDU1NDcm9zc2ZhZGVWYWx1ZSA6IHB1YmxpYyBDU1NJbWFnZUdl
bmVyYXRvclZhbHVlIHsKICAgICBmcmllbmQgY2xhc3MgQ3Jvc3NmYWRlU3ViaW1hZ2VPYnNlcnZl
clByb3h5OwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8Q1NTQ3Jvc3NmYWRlVmFsdWU+IGNyZWF0
ZShQYXNzUmVmUHRyPENTU1ZhbHVlPiBmcm9tVmFsdWUsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHRv
VmFsdWUpCisgICAgc3RhdGljIFJlZjxDU1NDcm9zc2ZhZGVWYWx1ZT4gY3JlYXRlKFJlZlB0cjxD
U1NWYWx1ZT4mJiBmcm9tVmFsdWUsIFJlZlB0cjxDU1NWYWx1ZT4gdG9WYWx1ZSkKICAgICB7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU0Nyb3NzZmFkZVZhbHVlKGZyb21WYWx1ZSwg
dG9WYWx1ZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NDcm9zc2ZhZGVWYWx1
ZShXVEY6Om1vdmUoZnJvbVZhbHVlKSwgV1RGOjptb3ZlKHRvVmFsdWUpKSk7CiAgICAgfQogCiAg
ICAgfkNTU0Nyb3NzZmFkZVZhbHVlKCk7CkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgbG9hZFN1YmltYWdlcyhDYWNoZWRSZXNvdXJjZUxvYWRlciYsIGNvbnN0IFJlc291cmNl
TG9hZGVyT3B0aW9ucyYpOwogCi0gICAgdm9pZCBzZXRQZXJjZW50YWdlKFBhc3NSZWZQdHI8Q1NT
UHJpbWl0aXZlVmFsdWU+IHBlcmNlbnRhZ2VWYWx1ZSkgeyBtX3BlcmNlbnRhZ2VWYWx1ZSA9IHBl
cmNlbnRhZ2VWYWx1ZTsgfQorICAgIHZvaWQgc2V0UGVyY2VudGFnZShSZWZQdHI8Q1NTUHJpbWl0
aXZlVmFsdWU+JiYgcGVyY2VudGFnZVZhbHVlKSB7IG1fcGVyY2VudGFnZVZhbHVlID0gcGVyY2Vu
dGFnZVZhbHVlOyB9CiAKICAgICBib29sIHRyYXZlcnNlU3VicmVzb3VyY2VzKGNvbnN0IHN0ZDo6
ZnVuY3Rpb248Ym9vbCAoY29uc3QgQ2FjaGVkUmVzb3VyY2UmKT4mIGhhbmRsZXIpIGNvbnN0Owog
CkBAIC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICBib29sIGVxdWFsSW5wdXRJbWFnZXMoY29u
c3QgQ1NTQ3Jvc3NmYWRlVmFsdWUmKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBDU1NDcm9zc2Zh
ZGVWYWx1ZShQYXNzUmVmUHRyPENTU1ZhbHVlPiBmcm9tVmFsdWUsIFBhc3NSZWZQdHI8Q1NTVmFs
dWU+IHRvVmFsdWUpCisgICAgQ1NTQ3Jvc3NmYWRlVmFsdWUoUmVmUHRyPENTU1ZhbHVlPiYmIGZy
b21WYWx1ZSwgUmVmUHRyPENTU1ZhbHVlPiYmIHRvVmFsdWUpCiAgICAgICAgIDogQ1NTSW1hZ2VH
ZW5lcmF0b3JWYWx1ZShDcm9zc2ZhZGVDbGFzcykKICAgICAgICAgLCBtX2Zyb21WYWx1ZShmcm9t
VmFsdWUpCiAgICAgICAgICwgbV90b1ZhbHVlKHRvVmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0ZpbHRlckltYWdlVmFsdWUuaAppbmRleCAxMjk3MjRmLi5hYzA0ZDhmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmgKQEAgLTgwLDcgKzgwLDcgQEAgcHVibGljOgog
ICAgIENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkSW1h
Z2UuZ2V0KCk7IH0KIAogcHJpdmF0ZToKLSAgICBDU1NGaWx0ZXJJbWFnZVZhbHVlKFBhc3NSZWZQ
dHI8Q1NTVmFsdWU+IGltYWdlVmFsdWUsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IGZpbHRlclZhbHVl
KQorICAgIENTU0ZpbHRlckltYWdlVmFsdWUoUmVmUHRyPENTU1ZhbHVlPiBpbWFnZVZhbHVlLCBS
ZWZQdHI8Q1NTVmFsdWU+IGZpbHRlclZhbHVlKQogICAgICAgICA6IENTU0ltYWdlR2VuZXJhdG9y
VmFsdWUoRmlsdGVySW1hZ2VDbGFzcykKICAgICAgICAgLCBtX2ltYWdlVmFsdWUoaW1hZ2VWYWx1
ZSkKICAgICAgICAgLCBtX2ZpbHRlclZhbHVlKGZpbHRlclZhbHVlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9u
dEZhY2UuaAppbmRleCA5ZWIwMjFhLi5kMDRkODdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTRm9udEZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2Uu
aApAQCAtMzIsNyArMzIsNiBAQAogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlTG9hZEV2ZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZUxvYWRFdmVudC5jcHAKaW5kZXgg
YzE4MDFiZS4uM2ZmZWRiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRG
YWNlTG9hZEV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VMb2Fk
RXZlbnQuY3BwCkBAIC0zOSw3ICszOSw3IEBAIENTU0ZvbnRGYWNlTG9hZEV2ZW50OjpDU1NGb250
RmFjZUxvYWRFdmVudCgpCiB7CiB9CiAKLUNTU0ZvbnRGYWNlTG9hZEV2ZW50OjpDU1NGb250RmFj
ZUxvYWRFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIFBhc3NSZWZQdHI8Q1NTRm9udEZh
Y2VSdWxlPiBmb250ZmFjZSwgUGFzc1JlZlB0cjxET01FcnJvcj4gZXJyb3IpCitDU1NGb250RmFj
ZUxvYWRFdmVudDo6Q1NTRm9udEZhY2VMb2FkRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBl
LCBSZWZQdHI8Q1NTRm9udEZhY2VSdWxlPiYmIGZvbnRmYWNlLCBSZWZQdHI8RE9NRXJyb3I+JiYg
ZXJyb3IpCiAgICAgOiBFdmVudCh0eXBlLCBmYWxzZSwgZmFsc2UpCiAgICAgLCBtX2ZvbnRmYWNl
KGZvbnRmYWNlKQogICAgICwgbV9lcnJvcihlcnJvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NGb250RmFjZUxvYWRFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Zv
bnRGYWNlTG9hZEV2ZW50LmgKaW5kZXggNjk2YmFjNDQuLmIwYWNmMDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZUxvYWRFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NGb250RmFjZUxvYWRFdmVudC5oCkBAIC0zOCw3ICszOCw2IEBACiAjaW5jbHVk
ZSAiRE9NRXJyb3IuaCIKICNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMu
aCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNjAsMTIgKzU5LDEyIEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmPENTU0ZvbnRGYWNlTG9hZEV2ZW50PigqbmV3IENTU0ZvbnRGYWNl
TG9hZEV2ZW50KHR5cGUsIGluaXRpYWxpemVyKSk7CiAgICAgfQogCi0gICAgc3RhdGljIFJlZjxD
U1NGb250RmFjZUxvYWRFdmVudD4gY3JlYXRlRm9yRm9udEZhY2VSdWxlKGNvbnN0IEF0b21pY1N0
cmluZyYgdHlwZSwgUGFzc1JlZlB0cjxDU1NGb250RmFjZVJ1bGU+IHJ1bGUpCisgICAgc3RhdGlj
IFJlZjxDU1NGb250RmFjZUxvYWRFdmVudD4gY3JlYXRlRm9yRm9udEZhY2VSdWxlKGNvbnN0IEF0
b21pY1N0cmluZyYgdHlwZSwgUmVmUHRyPENTU0ZvbnRGYWNlUnVsZT4mJiBydWxlKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIGFkb3B0UmVmPENTU0ZvbnRGYWNlTG9hZEV2ZW50PigqbmV3IENTU0Zv
bnRGYWNlTG9hZEV2ZW50KHR5cGUsIHJ1bGUsIDApKTsKICAgICB9CiAKLSAgICBzdGF0aWMgUmVm
PENTU0ZvbnRGYWNlTG9hZEV2ZW50PiBjcmVhdGVGb3JFcnJvcihQYXNzUmVmUHRyPENTU0ZvbnRG
YWNlUnVsZT4gcnVsZSwgUGFzc1JlZlB0cjxET01FcnJvcj4gZXJyb3IpCisgICAgc3RhdGljIFJl
ZjxDU1NGb250RmFjZUxvYWRFdmVudD4gY3JlYXRlRm9yRXJyb3IoUmVmUHRyPENTU0ZvbnRGYWNl
UnVsZT4mJiBydWxlLCBSZWZQdHI8RE9NRXJyb3I+JiYgZXJyb3IpCiAgICAgewogICAgICAgICBy
ZXR1cm4gYWRvcHRSZWY8Q1NTRm9udEZhY2VMb2FkRXZlbnQ+KCpuZXcgQ1NTRm9udEZhY2VMb2Fk
RXZlbnQoZXZlbnROYW1lcygpLmVycm9yRXZlbnQsIHJ1bGUsIGVycm9yKSk7CiAgICAgfQpAQCAt
NzksNyArNzgsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgQ1NTRm9udEZhY2VMb2FkRXZl
bnQoKTsKLSAgICBDU1NGb250RmFjZUxvYWRFdmVudChjb25zdCBBdG9taWNTdHJpbmcmLCBQYXNz
UmVmUHRyPENTU0ZvbnRGYWNlUnVsZT4sIFBhc3NSZWZQdHI8RE9NRXJyb3I+KTsKKyAgICBDU1NG
b250RmFjZUxvYWRFdmVudChjb25zdCBBdG9taWNTdHJpbmcmLCBSZWZQdHI8Q1NTRm9udEZhY2VS
dWxlPiYmLCBSZWZQdHI8RE9NRXJyb3I+JiYpOwogICAgIENTU0ZvbnRGYWNlTG9hZEV2ZW50KGNv
bnN0IEF0b21pY1N0cmluZyYsIGNvbnN0IENTU0ZvbnRGYWNlTG9hZEV2ZW50SW5pdCYpOwogCiAg
ICAgUmVmUHRyPENTU0ZvbnRGYWNlUnVsZT4gbV9mb250ZmFjZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0ZvbnRGYWNlU291cmNlLmgKaW5kZXggYTI2MDQxMy4uMTMzODBmYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0ZvbnRGYWNlU291cmNlLmgKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgogCiAjaWYg
RU5BQkxFKFNWR19GT05UUykKICAgICBTVkdGb250RmFjZUVsZW1lbnQqIHN2Z0ZvbnRGYWNlRWxl
bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fc3ZnRm9udEZhY2VFbGVtZW50LmdldCgpOyB9Ci0gICAg
dm9pZCBzZXRTVkdGb250RmFjZUVsZW1lbnQoUGFzc1JlZlB0cjxTVkdGb250RmFjZUVsZW1lbnQ+
IGVsZW1lbnQpIHsgbV9zdmdGb250RmFjZUVsZW1lbnQgPSBlbGVtZW50OyB9CisgICAgdm9pZCBz
ZXRTVkdGb250RmFjZUVsZW1lbnQoUmVmUHRyPFNWR0ZvbnRGYWNlRWxlbWVudD4mJiBlbGVtZW50
KSB7IG1fc3ZnRm9udEZhY2VFbGVtZW50ID0gZWxlbWVudDsgfQogICAgIGJvb2wgaXNTVkdGb250
RmFjZVNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3ZnRm9udEZhY2VFbGVtZW50IHx8IG1faGFz
RXh0ZXJuYWxTVkdGb250OyB9CiAgICAgdm9pZCBzZXRIYXNFeHRlcm5hbFNWR0ZvbnQoKSB7IG1f
aGFzRXh0ZXJuYWxTVkdGb250ID0gdHJ1ZTsgfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0ZvbnRGYWNlU3JjVmFsdWUuaAppbmRleCBjMzg2YWZlLi5mM2FhZmY5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVlLmgKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2luY2x1
ZGUgIkNTU1ZhbHVlLmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaCIKLSNpbmNs
dWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Rm9udFNlbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuY3Bw
CmluZGV4IDIwMmNmYzAuLjJkMGZkYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NGb250U2VsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0
b3IuY3BwCkBAIC02MTYsNyArNjE2LDcgQEAgc2l6ZV90IENTU0ZvbnRTZWxlY3Rvcjo6ZmFsbGJh
Y2tGb250Q291bnQoKQogICAgIHJldHVybiAwOwogfQogCi1QYXNzUmVmUHRyPEZvbnQ+IENTU0Zv
bnRTZWxlY3Rvcjo6ZmFsbGJhY2tGb250QXQoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250RGVz
Y3JpcHRpb24sIHNpemVfdCBpbmRleCkKK1JlZlB0cjxGb250PiBDU1NGb250U2VsZWN0b3I6OmZh
bGxiYWNrRm9udEF0KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9uLCBzaXpl
X3QgaW5kZXgpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChpbmRleCwgIWluZGV4KTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5oIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5oCmluZGV4IDQ3ZWE2NDAuLjIwODNlNzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmgKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogCiAg
ICAgdmlydHVhbCBGb250UmFuZ2VzIGZvbnRSYW5nZXNGb3JGYW1pbHkoY29uc3QgRm9udERlc2Ny
aXB0aW9uJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBzaXpl
X3QgZmFsbGJhY2tGb250Q291bnQoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
Rm9udD4gZmFsbGJhY2tGb250QXQoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgc2l6ZV90KSBvdmVy
cmlkZTsKKyAgICB2aXJ0dWFsIFJlZlB0cjxGb250PiBmYWxsYmFja0ZvbnRBdChjb25zdCBGb250
RGVzY3JpcHRpb24mLCBzaXplX3QpIG92ZXJyaWRlOwogICAgIENTU1NlZ21lbnRlZEZvbnRGYWNl
KiBnZXRGb250RmFjZShjb25zdCBGb250RGVzY3JpcHRpb24mLCBjb25zdCBBdG9taWNTdHJpbmcm
IGZhbWlseSk7CiAKICAgICB2aXJ0dWFsIGJvb2wgcmVzb2x2ZXNGYW1pbHlGb3IoY29uc3QgRm9u
dERlc2NyaXB0aW9uJikgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTRm9udFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFZhbHVlLmgK
aW5kZXggNTIwYTQ3Zi4uZDgzNWE4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0ZvbnRWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250VmFsdWUuaApAQCAt
MjIsNyArMjIsNiBAQAogI2RlZmluZSBDU1NGb250VmFsdWVfaAogCiAjaW5jbHVkZSAiQ1NTVmFs
dWUuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0Z1bmN0aW9uVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Z1bmN0aW9uVmFs
dWUuY3BwCmluZGV4IGEyYjc5MDIuLjkzNzUwYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NGdW5jdGlvblZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRnVu
Y3Rpb25WYWx1ZS5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgQ1NTRnVuY3Rpb25WYWx1ZTo6Q1NTRnVu
Y3Rpb25WYWx1ZShDU1NQYXJzZXJGdW5jdGlvbiogZnVuY3Rpb24pCiAgICAgICAgIG1fYXJncyA9
IENTU1ZhbHVlTGlzdDo6Y3JlYXRlRnJvbVBhcnNlclZhbHVlTGlzdCgqZnVuY3Rpb24tPmFyZ3Mp
OwogfQogCi1DU1NGdW5jdGlvblZhbHVlOjpDU1NGdW5jdGlvblZhbHVlKGNvbnN0IFN0cmluZyYg
bmFtZSwgUGFzc1JlZlB0cjxDU1NWYWx1ZUxpc3Q+IGFyZ3MpCitDU1NGdW5jdGlvblZhbHVlOjpD
U1NGdW5jdGlvblZhbHVlKGNvbnN0IFN0cmluZyYgbmFtZSwgUmVmUHRyPENTU1ZhbHVlTGlzdD4m
JiBhcmdzKQogICAgIDogQ1NTVmFsdWUoRnVuY3Rpb25DbGFzcykKICAgICAsIG1fbmFtZShuYW1l
KQogICAgICwgbV9hcmdzKGFyZ3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
RnVuY3Rpb25WYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Z1bmN0aW9uVmFsdWUuaApp
bmRleCA1Nzc0YzUzLi40MDQ5OGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
RnVuY3Rpb25WYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGdW5jdGlvblZhbHVl
LmgKQEAgLTQwLDkgKzQwLDkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBDU1NGdW5jdGlvblZhbHVlKGZ1bmN0aW9uKSk7CiAgICAgfQogCi0gICAgc3RhdGljIFJlZjxD
U1NGdW5jdGlvblZhbHVlPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPENT
U1ZhbHVlTGlzdD4gYXJncykKKyAgICBzdGF0aWMgUmVmPENTU0Z1bmN0aW9uVmFsdWU+IGNyZWF0
ZShjb25zdCBTdHJpbmcmIG5hbWUsIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+JiYgYXJncykKICAgICB7
Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU0Z1bmN0aW9uVmFsdWUobmFtZSwgYXJn
cykpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NGdW5jdGlvblZhbHVlKG5hbWUs
IFdURjo6bW92ZShhcmdzKSkpOwogICAgIH0KIAogICAgIFN0cmluZyBjdXN0b21DU1NUZXh0KCkg
Y29uc3Q7CkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBleHBsaWNp
dCBDU1NGdW5jdGlvblZhbHVlKENTU1BhcnNlckZ1bmN0aW9uKik7Ci0gICAgQ1NTRnVuY3Rpb25W
YWx1ZShjb25zdCBTdHJpbmcmLCBQYXNzUmVmUHRyPENTU1ZhbHVlTGlzdD4pOworICAgIENTU0Z1
bmN0aW9uVmFsdWUoY29uc3QgU3RyaW5nJiwgUmVmUHRyPENTU1ZhbHVlTGlzdD4mJik7CiAKICAg
ICBTdHJpbmcgbV9uYW1lOwogICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IG1fYXJnczsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5oCmluZGV4IDNhZDcwNjUuLmEyNzU1ZmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuaApAQCAtNjQsMTAgKzY0LDEwIEBAIGNsYXNz
IENTU0dyYWRpZW50VmFsdWUgOiBwdWJsaWMgQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZSB7CiBwdWJs
aWM6CiAgICAgUmVmUHRyPEltYWdlPiBpbWFnZShSZW5kZXJFbGVtZW50KiwgY29uc3QgRmxvYXRT
aXplJik7CiAKLSAgICB2b2lkIHNldEZpcnN0WChQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVl
PiB2YWwpIHsgbV9maXJzdFggPSB2YWw7IH0KLSAgICB2b2lkIHNldEZpcnN0WShQYXNzUmVmUHRy
PENTU1ByaW1pdGl2ZVZhbHVlPiB2YWwpIHsgbV9maXJzdFkgPSB2YWw7IH0KLSAgICB2b2lkIHNl
dFNlY29uZFgoUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gdmFsKSB7IG1fc2Vjb25kWCA9
IHZhbDsgfQotICAgIHZvaWQgc2V0U2Vjb25kWShQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVl
PiB2YWwpIHsgbV9zZWNvbmRZID0gdmFsOyB9CisgICAgdm9pZCBzZXRGaXJzdFgoUmVmUHRyPENT
U1ByaW1pdGl2ZVZhbHVlPiYmIHZhbCkgeyBtX2ZpcnN0WCA9IHZhbDsgfQorICAgIHZvaWQgc2V0
Rmlyc3RZKFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4mJiB2YWwpIHsgbV9maXJzdFkgPSB2YWw7
IH0KKyAgICB2b2lkIHNldFNlY29uZFgoUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiYmIHZhbCkg
eyBtX3NlY29uZFggPSB2YWw7IH0KKyAgICB2b2lkIHNldFNlY29uZFkoUmVmUHRyPENTU1ByaW1p
dGl2ZVZhbHVlPiYmIHZhbCkgeyBtX3NlY29uZFkgPSB2YWw7IH0KIAogICAgIHZvaWQgYWRkU3Rv
cChjb25zdCBDU1NHcmFkaWVudENvbG9yU3RvcCYgc3RvcCkgeyBtX3N0b3BzLmFwcGVuZChzdG9w
KTsgfQogCkBAIC0xMzksNyArMTM5LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBDU1NMaW5lYXJHcmFkaWVudFZhbHVlKHJlcGVhdCwgZ3JhZGllbnRUeXBlKSk7CiAg
ICAgfQogCi0gICAgdm9pZCBzZXRBbmdsZShQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiB2
YWwpIHsgbV9hbmdsZSA9IHZhbDsgfQorICAgIHZvaWQgc2V0QW5nbGUoUmVmUHRyPENTU1ByaW1p
dGl2ZVZhbHVlPiYmIHZhbCkgeyBtX2FuZ2xlID0gdmFsOyB9CiAKICAgICBTdHJpbmcgY3VzdG9t
Q1NTVGV4dCgpIGNvbnN0OwogCkBAIC0xODIsMTQgKzE4MiwxNCBAQCBwdWJsaWM6CiAKICAgICBT
dHJpbmcgY3VzdG9tQ1NTVGV4dCgpIGNvbnN0OwogCi0gICAgdm9pZCBzZXRGaXJzdFJhZGl1cyhQ
YXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiB2YWwpIHsgbV9maXJzdFJhZGl1cyA9IHZhbDsg
fQotICAgIHZvaWQgc2V0U2Vjb25kUmFkaXVzKFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+
IHZhbCkgeyBtX3NlY29uZFJhZGl1cyA9IHZhbDsgfQorICAgIHZvaWQgc2V0Rmlyc3RSYWRpdXMo
UmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiYmIHZhbCkgeyBtX2ZpcnN0UmFkaXVzID0gdmFsOyB9
CisgICAgdm9pZCBzZXRTZWNvbmRSYWRpdXMoUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiYmIHZh
bCkgeyBtX3NlY29uZFJhZGl1cyA9IHZhbDsgfQogCi0gICAgdm9pZCBzZXRTaGFwZShQYXNzUmVm
UHRyPENTU1ByaW1pdGl2ZVZhbHVlPiB2YWwpIHsgbV9zaGFwZSA9IHZhbDsgfQotICAgIHZvaWQg
c2V0U2l6aW5nQmVoYXZpb3IoUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gdmFsKSB7IG1f
c2l6aW5nQmVoYXZpb3IgPSB2YWw7IH0KKyAgICB2b2lkIHNldFNoYXBlKFJlZlB0cjxDU1NQcmlt
aXRpdmVWYWx1ZT4mJiB2YWwpIHsgbV9zaGFwZSA9IHZhbDsgfQorICAgIHZvaWQgc2V0U2l6aW5n
QmVoYXZpb3IoUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiYmIHZhbCkgeyBtX3NpemluZ0JlaGF2
aW9yID0gdmFsOyB9CiAKLSAgICB2b2lkIHNldEVuZEhvcml6b250YWxTaXplKFBhc3NSZWZQdHI8
Q1NTUHJpbWl0aXZlVmFsdWU+IHZhbCkgeyBtX2VuZEhvcml6b250YWxTaXplID0gdmFsOyB9Ci0g
ICAgdm9pZCBzZXRFbmRWZXJ0aWNhbFNpemUoUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4g
dmFsKSB7IG1fZW5kVmVydGljYWxTaXplID0gdmFsOyB9CisgICAgdm9pZCBzZXRFbmRIb3Jpem9u
dGFsU2l6ZShSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+JiYgdmFsKSB7IG1fZW5kSG9yaXpvbnRh
bFNpemUgPSB2YWw7IH0KKyAgICB2b2lkIHNldEVuZFZlcnRpY2FsU2l6ZShSZWZQdHI8Q1NTUHJp
bWl0aXZlVmFsdWU+JiYgdmFsKSB7IG1fZW5kVmVydGljYWxTaXplID0gdmFsOyB9CiAKICAgICAv
LyBDcmVhdGUgdGhlIGdyYWRpZW50IGZvciBhIGdpdmVuIHNpemUuCiAgICAgUmVmPEdyYWRpZW50
PiBjcmVhdGVHcmFkaWVudChSZW5kZXJFbGVtZW50JiwgY29uc3QgRmxvYXRTaXplJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JpZExpbmVOYW1lc1ZhbHVlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTR3JpZExpbmVOYW1lc1ZhbHVlLmgKaW5kZXggMmZkZGJmOC4uZjhj
NmM5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyaWRMaW5lTmFtZXNWYWx1
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmlkTGluZU5hbWVzVmFsdWUuaApAQCAt
MzMsNyArMzMsNiBAQAogCiAjaWYgRU5BQkxFKENTU19HUklEX0xBWU9VVCkKICNpbmNsdWRlICJD
U1NWYWx1ZUxpc3QuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVy
YXRvclZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVl
LmNwcAppbmRleCBmZTQwMGMxNi4uYTcxZGQ0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NJbWFnZUdlbmVyYXRvclZhbHVlLmNwcApAQCAtNzksMTAgKzc5LDEwIEBAIEdlbmVyYXRlZElt
YWdlKiBDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjpjYWNoZWRJbWFnZUZvclNpemUoRmxvYXRTaXpl
IHNpemUpCiAgICAgcmV0dXJuIGNhY2hlZEdlbmVyYXRlZEltYWdlLT5pbWFnZSgpOwogfQogCi12
b2lkIENTU0ltYWdlR2VuZXJhdG9yVmFsdWU6OnNhdmVDYWNoZWRJbWFnZUZvclNpemUoRmxvYXRT
aXplIHNpemUsIFBhc3NSZWZQdHI8R2VuZXJhdGVkSW1hZ2U+IGltYWdlKQordm9pZCBDU1NJbWFn
ZUdlbmVyYXRvclZhbHVlOjpzYXZlQ2FjaGVkSW1hZ2VGb3JTaXplKEZsb2F0U2l6ZSBzaXplLCBS
ZWZQdHI8R2VuZXJhdGVkSW1hZ2U+JiYgaW1hZ2UpCiB7CiAgICAgQVNTRVJUKCFtX2ltYWdlcy5j
b250YWlucyhzaXplKSk7Ci0gICAgbV9pbWFnZXMuYWRkKHNpemUsIHN0ZDo6bWFrZV91bmlxdWU8
Q2FjaGVkR2VuZXJhdGVkSW1hZ2U+KCp0aGlzLCBzaXplLCBpbWFnZSkpOworICAgIG1faW1hZ2Vz
LmFkZChzaXplLCBzdGQ6Om1ha2VfdW5pcXVlPENhY2hlZEdlbmVyYXRlZEltYWdlPigqdGhpcywg
c2l6ZSwgV1RGOjptb3ZlKGltYWdlKSkpOwogfQogCiB2b2lkIENTU0ltYWdlR2VuZXJhdG9yVmFs
dWU6OmV2aWN0Q2FjaGVkR2VuZXJhdGVkSW1hZ2UoRmxvYXRTaXplIHNpemUpCkBAIC05MSw3ICs5
MSw3IEBAIHZvaWQgQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6ZXZpY3RDYWNoZWRHZW5lcmF0ZWRJ
bWFnZShGbG9hdFNpemUgc2l6ZSkKICAgICBtX2ltYWdlcy5yZW1vdmUoc2l6ZSk7CiB9CiAKLUNT
U0ltYWdlR2VuZXJhdG9yVmFsdWU6OkNhY2hlZEdlbmVyYXRlZEltYWdlOjpDYWNoZWRHZW5lcmF0
ZWRJbWFnZShDU1NJbWFnZUdlbmVyYXRvclZhbHVlJiBvd25lciwgRmxvYXRTaXplIHNpemUsIFBh
c3NSZWZQdHI8R2VuZXJhdGVkSW1hZ2U+IGltYWdlKQorQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6
Q2FjaGVkR2VuZXJhdGVkSW1hZ2U6OkNhY2hlZEdlbmVyYXRlZEltYWdlKENTU0ltYWdlR2VuZXJh
dG9yVmFsdWUmIG93bmVyLCBGbG9hdFNpemUgc2l6ZSwgUmVmUHRyPEdlbmVyYXRlZEltYWdlPiYm
IGltYWdlKQogICAgIDogbV9vd25lcihvd25lcikKICAgICAsIG1fc2l6ZShzaXplKQogICAgICwg
bV9pbWFnZShpbWFnZSkKQEAgLTEwNiw3ICsxMDYsNyBAQCB2b2lkIENTU0ltYWdlR2VuZXJhdG9y
VmFsdWU6OkNhY2hlZEdlbmVyYXRlZEltYWdlOjpldmljdGlvblRpbWVyRmlyZWQoKQogICAgIG1f
b3duZXIuZXZpY3RDYWNoZWRHZW5lcmF0ZWRJbWFnZShtX3NpemUpOwogfQogCi1QYXNzUmVmUHRy
PEltYWdlPiBDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjppbWFnZShSZW5kZXJFbGVtZW50KiByZW5k
ZXJlciwgY29uc3QgRmxvYXRTaXplJiBzaXplKQorUmVmUHRyPEltYWdlPiBDU1NJbWFnZUdlbmVy
YXRvclZhbHVlOjppbWFnZShSZW5kZXJFbGVtZW50KiByZW5kZXJlciwgY29uc3QgRmxvYXRTaXpl
JiBzaXplKQogewogICAgIHN3aXRjaCAoY2xhc3NUeXBlKCkpIHsKICAgICBjYXNlIENhbnZhc0Ns
YXNzOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFs
dWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmgKaW5kZXgg
YzliNTU2Yy4uOGUyNTkxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdl
R2VuZXJhdG9yVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0
b3JWYWx1ZS5oCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZENsaWVudChS
ZW5kZXJFbGVtZW50Kik7CiAgICAgdm9pZCByZW1vdmVDbGllbnQoUmVuZGVyRWxlbWVudCopOwog
Ci0gICAgUGFzc1JlZlB0cjxJbWFnZT4gaW1hZ2UoUmVuZGVyRWxlbWVudCosIGNvbnN0IEZsb2F0
U2l6ZSYpOworICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UoUmVuZGVyRWxlbWVudCosIGNvbnN0IEZs
b2F0U2l6ZSYpOwogCiAgICAgYm9vbCBpc0ZpeGVkU2l6ZSgpIGNvbnN0OwogICAgIEZsb2F0U2l6
ZSBmaXhlZFNpemUoY29uc3QgUmVuZGVyRWxlbWVudCopOwpAQCAtNjMsNyArNjMsNyBAQCBwcm90
ZWN0ZWQ6CiAgICAgQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZShDbGFzc1R5cGUpOwogCiAgICAgR2Vu
ZXJhdGVkSW1hZ2UqIGNhY2hlZEltYWdlRm9yU2l6ZShGbG9hdFNpemUpOwotICAgIHZvaWQgc2F2
ZUNhY2hlZEltYWdlRm9yU2l6ZShGbG9hdFNpemUsIFBhc3NSZWZQdHI8R2VuZXJhdGVkSW1hZ2U+
KTsKKyAgICB2b2lkIHNhdmVDYWNoZWRJbWFnZUZvclNpemUoRmxvYXRTaXplLCBSZWZQdHI8R2Vu
ZXJhdGVkSW1hZ2U+JiYpOwogICAgIGNvbnN0IEhhc2hDb3VudGVkU2V0PFJlbmRlckVsZW1lbnQq
PiYgY2xpZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50czsgfQogCiAgICAgLy8gSGVscGVy
IGZ1bmN0aW9ucyBmb3IgQ3Jvc3NmYWRlIGFuZCBGaWx0ZXIuCkBAIC03Myw3ICs3Myw3IEBAIHBy
b3RlY3RlZDoKIHByaXZhdGU6CiAgICAgY2xhc3MgQ2FjaGVkR2VuZXJhdGVkSW1hZ2UgewogICAg
IHB1YmxpYzoKLSAgICAgICAgQ2FjaGVkR2VuZXJhdGVkSW1hZ2UoQ1NTSW1hZ2VHZW5lcmF0b3JW
YWx1ZSYsIEZsb2F0U2l6ZSwgUGFzc1JlZlB0cjxHZW5lcmF0ZWRJbWFnZT4pOworICAgICAgICBD
YWNoZWRHZW5lcmF0ZWRJbWFnZShDU1NJbWFnZUdlbmVyYXRvclZhbHVlJiwgRmxvYXRTaXplLCBS
ZWZQdHI8R2VuZXJhdGVkSW1hZ2U+JiYpOwogICAgICAgICBHZW5lcmF0ZWRJbWFnZSogaW1hZ2Uo
KSB7IHJldHVybiBtX2ltYWdlLmdldCgpOyB9CiAgICAgICAgIHZvaWQgcHVudEV2aWN0aW9uVGlt
ZXIoKSB7IG1fZXZpY3Rpb25UaW1lci5yZXN0YXJ0KCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0luaGVyaXRlZFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
SW5oZXJpdGVkVmFsdWUuaAppbmRleCA4YTYzNzY1Li44NTcwNDFiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTSW5oZXJpdGVkVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTSW5oZXJpdGVkVmFsdWUuaApAQCAtMjIsNyArMjIsNiBAQAogI2RlZmluZSBDU1NJbmhl
cml0ZWRWYWx1ZV9oCiAKICNpbmNsdWRlICJDU1NWYWx1ZS5oIgotI2luY2x1ZGUgPHd0Zi9QYXNz
UmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0luaXRpYWxWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0luaXRp
YWxWYWx1ZS5oCmluZGV4IGE3MTFhZGYuLjhmYmFiOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NJbml0aWFsVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW5p
dGlhbFZhbHVlLmgKQEAgLTIyLDcgKzIyLDYgQEAKICNkZWZpbmUgQ1NTSW5pdGlhbFZhbHVlX2gK
IAogI2luY2x1ZGUgIkNTU1ZhbHVlLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
S2V5ZnJhbWVzUnVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTS2V5ZnJhbWVzUnVsZS5j
cHAKaW5kZXggMDk1MjMyNi4uYTg5MjAwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0tleWZyYW1lc1J1bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NLZXlmcmFt
ZXNSdWxlLmNwcApAQCAtNTMsMTQgKzUzLDE0IEBAIFN0eWxlUnVsZUtleWZyYW1lczo6flN0eWxl
UnVsZUtleWZyYW1lcygpCiB7CiB9CiAKLXZvaWQgU3R5bGVSdWxlS2V5ZnJhbWVzOjpwYXJzZXJB
cHBlbmRLZXlmcmFtZShQYXNzUmVmUHRyPFN0eWxlS2V5ZnJhbWU+IGtleWZyYW1lKQordm9pZCBT
dHlsZVJ1bGVLZXlmcmFtZXM6OnBhcnNlckFwcGVuZEtleWZyYW1lKFJlZlB0cjxTdHlsZUtleWZy
YW1lPiYmIGtleWZyYW1lKQogewogICAgIGlmICgha2V5ZnJhbWUpCiAgICAgICAgIHJldHVybjsK
ICAgICBtX2tleWZyYW1lcy5hcHBlbmQoa2V5ZnJhbWUpOwogfQogCi12b2lkIFN0eWxlUnVsZUtl
eWZyYW1lczo6d3JhcHBlckFwcGVuZEtleWZyYW1lKFBhc3NSZWZQdHI8U3R5bGVLZXlmcmFtZT4g
a2V5ZnJhbWUpCit2b2lkIFN0eWxlUnVsZUtleWZyYW1lczo6d3JhcHBlckFwcGVuZEtleWZyYW1l
KFJlZlB0cjxTdHlsZUtleWZyYW1lPiYmIGtleWZyYW1lKQogewogICAgIG1fa2V5ZnJhbWVzLmFw
cGVuZChrZXlmcmFtZSk7CiB9CkBAIC0xMjcsNyArMTI3LDcgQEAgdm9pZCBDU1NLZXlmcmFtZXNS
dWxlOjppbnNlcnRSdWxlKGNvbnN0IFN0cmluZyYgcnVsZVRleHQpCiAKICAgICBDU1NTdHlsZVNo
ZWV0OjpSdWxlTXV0YXRpb25TY29wZSBtdXRhdGlvblNjb3BlKHRoaXMpOwogCi0gICAgbV9rZXlm
cmFtZXNSdWxlLT53cmFwcGVyQXBwZW5kS2V5ZnJhbWUoa2V5ZnJhbWUpOworICAgIG1fa2V5ZnJh
bWVzUnVsZS0+d3JhcHBlckFwcGVuZEtleWZyYW1lKGtleWZyYW1lLmNvcHlSZWYoKSk7CiAKICAg
ICBtX2NoaWxkUnVsZUNTU09NV3JhcHBlcnMuZ3JvdyhsZW5ndGgoKSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTS2V5ZnJhbWVzUnVsZS5oIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0tleWZyYW1lc1J1bGUuaAppbmRleCA4NjViYmVkLi41NjE1MDg2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTS2V5ZnJhbWVzUnVsZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NLZXlmcmFtZXNSdWxlLmgKQEAgLTQ2LDggKzQ2LDggQEAgcHVibGljOgogICAg
IAogICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3R5bGVLZXlmcmFtZT4+JiBrZXlmcmFtZXMoKSBj
b25zdCB7IHJldHVybiBtX2tleWZyYW1lczsgfQogICAgIAotICAgIHZvaWQgcGFyc2VyQXBwZW5k
S2V5ZnJhbWUoUGFzc1JlZlB0cjxTdHlsZUtleWZyYW1lPik7Ci0gICAgdm9pZCB3cmFwcGVyQXBw
ZW5kS2V5ZnJhbWUoUGFzc1JlZlB0cjxTdHlsZUtleWZyYW1lPik7CisgICAgdm9pZCBwYXJzZXJB
cHBlbmRLZXlmcmFtZShSZWZQdHI8U3R5bGVLZXlmcmFtZT4mJik7CisgICAgdm9pZCB3cmFwcGVy
QXBwZW5kS2V5ZnJhbWUoUmVmUHRyPFN0eWxlS2V5ZnJhbWU+JiYpOwogICAgIHZvaWQgd3JhcHBl
clJlbW92ZUtleWZyYW1lKHVuc2lnbmVkKTsKIAogICAgIFN0cmluZyBuYW1lKCkgY29uc3QgeyBy
ZXR1cm4gbV9uYW1lOyB9ICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0xp
bmVCb3hDb250YWluVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NMaW5lQm94Q29udGFp
blZhbHVlLmgKaW5kZXggMTYwMTYyMy4uZWM1M2RhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0xpbmVCb3hDb250YWluVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTTGluZUJveENvbnRhaW5WYWx1ZS5oCkBAIC0yNyw3ICsyNyw2IEBACiAjZGVmaW5lIENTU0xp
bmVCb3hDb250YWluVmFsdWVfaAogCiAjaW5jbHVkZSAiQ1NTVmFsdWUuaCIKLSNpbmNsdWRlIDx3
dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU05hbWVkSW1hZ2VWYWx1
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTmFtZWRJbWFnZVZhbHVlLmNwcAppbmRleCAx
YWRkNTQ2Li4wNDY3YmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTmFtZWRJ
bWFnZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTmFtZWRJbWFnZVZhbHVl
LmNwcApAQCAtMzYsMTQgKzM2LDE0IEBAIFN0cmluZyBDU1NOYW1lZEltYWdlVmFsdWU6OmN1c3Rv
bUNTU1RleHQoKSBjb25zdAogICAgIHJldHVybiBtYWtlU3RyaW5nKCItd2Via2l0LW5hbWVkLWlt
YWdlKCIsIG1fbmFtZSwgJyknKTsKIH0KIAotUGFzc1JlZlB0cjxJbWFnZT4gQ1NTTmFtZWRJbWFn
ZVZhbHVlOjppbWFnZShSZW5kZXJFbGVtZW50KiwgY29uc3QgRmxvYXRTaXplJiBzaXplKQorUmVm
UHRyPEltYWdlPiBDU1NOYW1lZEltYWdlVmFsdWU6OmltYWdlKFJlbmRlckVsZW1lbnQqLCBjb25z
dCBGbG9hdFNpemUmIHNpemUpCiB7CiAgICAgaWYgKHNpemUuaXNFbXB0eSgpKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAogICAgIG1fZ2VuZXJhdGVkSW1hZ2UgPSBOYW1lZEltYWdlR2VuZXJh
dGVkSW1hZ2U6OmNyZWF0ZShtX25hbWUsIHNpemUpOwogCi0gICAgcmV0dXJuIG1fZ2VuZXJhdGVk
SW1hZ2UucmVsZWFzZSgpOworICAgIHJldHVybiBtX2dlbmVyYXRlZEltYWdlOwogfQogCiBib29s
IENTU05hbWVkSW1hZ2VWYWx1ZTo6ZXF1YWxzKGNvbnN0IENTU05hbWVkSW1hZ2VWYWx1ZSYgb3Ro
ZXIpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTmFtZWRJbWFnZVZh
bHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTmFtZWRJbWFnZVZhbHVlLmgKaW5kZXggZjFj
ZGFhNi4uZjZhMzI3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU05hbWVkSW1h
Z2VWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NOYW1lZEltYWdlVmFsdWUuaApA
QCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0ZpeGVkU2l6ZSgpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBpc1BlbmRpbmcoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQogCi0gICAgUGFzc1JlZlB0cjxJbWFnZT4gaW1hZ2UoUmVuZGVyRWxlbWVudCosIGNvbnN0
IEZsb2F0U2l6ZSYpOworICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UoUmVuZGVyRWxlbWVudCosIGNv
bnN0IEZsb2F0U2l6ZSYpOwogCiAgICAgYm9vbCBlcXVhbHMoY29uc3QgQ1NTTmFtZWRJbWFnZVZh
bHVlJikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKaW5kZXggNzAyNzFmYy4uNmY2
ZWNjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKQEAgLTE0NDksNyArMTQ0OSw3IEBAIFJl
ZjxJbW11dGFibGVTdHlsZVByb3BlcnRpZXM+IENTU1BhcnNlcjo6cGFyc2VEZWNsYXJhdGlvbihj
b25zdCBTdHJpbmcmIHN0cmluZywKIH0KIAogCi1ib29sIENTU1BhcnNlcjo6cGFyc2VEZWNsYXJh
dGlvbihNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzKiBkZWNsYXJhdGlvbiwgY29uc3QgU3RyaW5nJiBz
dHJpbmcsIFBhc3NSZWZQdHI8Q1NTUnVsZVNvdXJjZURhdGE+IHBycFJ1bGVTb3VyY2VEYXRhLCBT
dHlsZVNoZWV0Q29udGVudHMqIGNvbnRleHRTdHlsZVNoZWV0KQorYm9vbCBDU1NQYXJzZXI6OnBh
cnNlRGVjbGFyYXRpb24oTXV0YWJsZVN0eWxlUHJvcGVydGllcyogZGVjbGFyYXRpb24sIGNvbnN0
IFN0cmluZyYgc3RyaW5nLCBSZWZQdHI8Q1NTUnVsZVNvdXJjZURhdGE+JiYgcHJwUnVsZVNvdXJj
ZURhdGEsIFN0eWxlU2hlZXRDb250ZW50cyogY29udGV4dFN0eWxlU2hlZXQpCiB7CiAgICAgLy8g
TGVuZ3RoIG9mIHRoZSAiQC13ZWJraXQtZGVjbHN7IiBwcmVmaXguCiAgICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIHByZWZpeExlbmd0aCA9IDE1OwpAQCAtMTU4OCw3ICsxNTg4LDcgQEAgUmVmPElt
bXV0YWJsZVN0eWxlUHJvcGVydGllcz4gQ1NTUGFyc2VyOjpjcmVhdGVTdHlsZVByb3BlcnRpZXMo
KQogICAgIHJldHVybiBJbW11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZShyZXN1bHRzLmRh
dGEoKSwgcmVzdWx0cy5zaXplKCksIG1fY29udGV4dC5tb2RlKTsKIH0KIAotdm9pZCBDU1NQYXJz
ZXI6OmFkZFByb3BlcnR5V2l0aFByZWZpeGluZ1ZhcmlhbnQoQ1NTUHJvcGVydHlJRCBwcm9wSWQs
IFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlLCBib29sIGltcG9ydGFudCwgYm9vbCBpbXBsaWNp
dCkKK3ZvaWQgQ1NTUGFyc2VyOjphZGRQcm9wZXJ0eVdpdGhQcmVmaXhpbmdWYXJpYW50KENTU1By
b3BlcnR5SUQgcHJvcElkLCBSZWZQdHI8Q1NTVmFsdWU+JiYgdmFsdWUsIGJvb2wgaW1wb3J0YW50
LCBib29sIGltcGxpY2l0KQogewogICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFsID0gdmFsdWUuZ2V0
KCk7CiAgICAgYWRkUHJvcGVydHkocHJvcElkLCB2YWx1ZSwgaW1wb3J0YW50LCBpbXBsaWNpdCk7
CkBAIC0xNjA2LDE5ICsxNjA2LDE5IEBAIHZvaWQgQ1NTUGFyc2VyOjphZGRQcm9wZXJ0eVdpdGhQ
cmVmaXhpbmdWYXJpYW50KENTU1Byb3BlcnR5SUQgcHJvcElkLCBQYXNzUmVmUHRyCiAgICAgICAg
IGFkZFByb3BlcnR5KHByZWZpeGluZ1ZhcmlhbnQsIHZhbC5yZWxlYXNlKCksIGltcG9ydGFudCwg
aW1wbGljaXQpOwogfQogCi12b2lkIENTU1BhcnNlcjo6YWRkUHJvcGVydHkoQ1NTUHJvcGVydHlJ
RCBwcm9wSWQsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlLCBib29sIGltcG9ydGFudCwgYm9v
bCBpbXBsaWNpdCkKK3ZvaWQgQ1NTUGFyc2VyOjphZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIHBy
b3BJZCwgUmVmUHRyPENTU1ZhbHVlPiYmIHZhbHVlLCBib29sIGltcG9ydGFudCwgYm9vbCBpbXBs
aWNpdCkKIHsKICAgICAvLyBUaGlzIHByb3BlcnR5IGRvZXNuJ3QgYmVsb25nIHRvIGEgc2hvcnRo
YW5kIG9yIGlzIGEgQ1NTIHZhcmlhYmxlICh3aGljaCB3aWxsIGJlIHJlc29sdmVkIGxhdGVyKS4K
ICAgICBpZiAoIW1fY3VycmVudFNob3J0aGFuZCkgewotICAgICAgICBtX3BhcnNlZFByb3BlcnRp
ZXMuYXBwZW5kKENTU1Byb3BlcnR5KHByb3BJZCwgdmFsdWUsIGltcG9ydGFudCwgZmFsc2UsIENT
U1Byb3BlcnR5SW52YWxpZCwgbV9pbXBsaWNpdFNob3J0aGFuZCB8fCBpbXBsaWNpdCkpOworICAg
ICAgICBtX3BhcnNlZFByb3BlcnRpZXMuYXBwZW5kKENTU1Byb3BlcnR5KHByb3BJZCwgdmFsdWUu
Y29weVJlZigpLCBpbXBvcnRhbnQsIGZhbHNlLCBDU1NQcm9wZXJ0eUludmFsaWQsIG1faW1wbGlj
aXRTaG9ydGhhbmQgfHwgaW1wbGljaXQpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAg
IFZlY3RvcjxTdHlsZVByb3BlcnR5U2hvcnRoYW5kPiBzaG9ydGhhbmRzID0gbWF0Y2hpbmdTaG9y
dGhhbmRzRm9yTG9uZ2hhbmQocHJvcElkKTsKICAgICBpZiAoc2hvcnRoYW5kcy5zaXplKCkgPT0g
MSkKLSAgICAgICAgbV9wYXJzZWRQcm9wZXJ0aWVzLmFwcGVuZChDU1NQcm9wZXJ0eShwcm9wSWQs
IHZhbHVlLCBpbXBvcnRhbnQsIHRydWUsIENTU1Byb3BlcnR5SW52YWxpZCwgbV9pbXBsaWNpdFNo
b3J0aGFuZCB8fCBpbXBsaWNpdCkpOworICAgICAgICBtX3BhcnNlZFByb3BlcnRpZXMuYXBwZW5k
KENTU1Byb3BlcnR5KHByb3BJZCwgdmFsdWUuY29weVJlZigpLCBpbXBvcnRhbnQsIHRydWUsIENT
U1Byb3BlcnR5SW52YWxpZCwgbV9pbXBsaWNpdFNob3J0aGFuZCB8fCBpbXBsaWNpdCkpOwogICAg
IGVsc2UKLSAgICAgICAgbV9wYXJzZWRQcm9wZXJ0aWVzLmFwcGVuZChDU1NQcm9wZXJ0eShwcm9w
SWQsIHZhbHVlLCBpbXBvcnRhbnQsIHRydWUsIGluZGV4T2ZTaG9ydGhhbmRGb3JMb25naGFuZCht
X2N1cnJlbnRTaG9ydGhhbmQsIHNob3J0aGFuZHMpLCBtX2ltcGxpY2l0U2hvcnRoYW5kIHx8IGlt
cGxpY2l0KSk7CisgICAgICAgIG1fcGFyc2VkUHJvcGVydGllcy5hcHBlbmQoQ1NTUHJvcGVydHko
cHJvcElkLCB2YWx1ZS5jb3B5UmVmKCksIGltcG9ydGFudCwgdHJ1ZSwgaW5kZXhPZlNob3J0aGFu
ZEZvckxvbmdoYW5kKG1fY3VycmVudFNob3J0aGFuZCwgc2hvcnRoYW5kcyksIG1faW1wbGljaXRT
aG9ydGhhbmQgfHwgaW1wbGljaXQpKTsKIH0KIAogdm9pZCBDU1NQYXJzZXI6OnJvbGxiYWNrTGFz
dFByb3BlcnRpZXMoaW50IG51bSkKQEAgLTE4NDUsNyArMTg0NSw3IEBAIGlubGluZSBSZWZQdHI8
Q1NTUHJpbWl0aXZlVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VWYWxpZFByaW1pdGl2ZShDU1NWYWx1
ZUlEIGlkZW50CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXZvaWQgQ1NTUGFyc2VyOjphZGRF
eHBhbmRlZFByb3BlcnR5Rm9yVmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wSWQsIFBhc3NSZWZQdHI8
Q1NTVmFsdWU+IHBycFZhbHVlLCBib29sIGltcG9ydGFudCkKK3ZvaWQgQ1NTUGFyc2VyOjphZGRF
eHBhbmRlZFByb3BlcnR5Rm9yVmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wSWQsIFJlZlB0cjxDU1NW
YWx1ZT4mJiBwcnBWYWx1ZSwgYm9vbCBpbXBvcnRhbnQpCiB7CiAgICAgY29uc3QgU3R5bGVQcm9w
ZXJ0eVNob3J0aGFuZCYgc2hvcnRoYW5kID0gc2hvcnRoYW5kRm9yUHJvcGVydHkocHJvcElkKTsK
ICAgICB1bnNpZ25lZCBzaG9ydGhhbmRMZW5ndGggPSBzaG9ydGhhbmQubGVuZ3RoKCk7CkBAIC01
MzcwLDcgKzUzNzAsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VHcmlkSXRlbVBvc2l0aW9uU2hv
cnRoYW5kKENTU1Byb3BlcnR5SUQgc2hvcnRoYW5kSWQsIGJvb2wgaQogICAgIHJldHVybiB0cnVl
OwogfQogCi1ib29sIENTU1BhcnNlcjo6cGFyc2VHcmlkVGVtcGxhdGVSb3dzQW5kQXJlYXMoUGFz
c1JlZlB0cjxDU1NWYWx1ZT4gdGVtcGxhdGVDb2x1bW5zLCBib29sIGltcG9ydGFudCkKK2Jvb2wg
Q1NTUGFyc2VyOjpwYXJzZUdyaWRUZW1wbGF0ZVJvd3NBbmRBcmVhcyhSZWZQdHI8Q1NTVmFsdWU+
JiYgdGVtcGxhdGVDb2x1bW5zLCBib29sIGltcG9ydGFudCkKIHsKICAgICAvLyBBdCBsZWFzdCB0
ZW1wbGF0ZS1hcmVhcyBzdHJpbmdzIG11c3QgYmUgZGVmaW5lZC4KICAgICBpZiAoIW1fdmFsdWVM
aXN0LT5jdXJyZW50KCkpCkBAIC02MTg3LDcgKzYxODcsNyBAQCBzdGF0aWMgdm9pZCBjb21wbGV0
ZUJvcmRlclJhZGlpKFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcmFkaWlbNF0pCiAKIC8vIEZJ
WE1FOiBUaGlzIHNob3VsZCBiZSByZWZhY3RvcmVkIHdpdGggQ1NTUGFyc2VyOjpwYXJzZUJvcmRl
clJhZGl1cy4KIC8vIENTU1BhcnNlcjo6cGFyc2VCb3JkZXJSYWRpdXMgY29udGFpbnMgc3VwcG9y
dCBmb3Igc29tZSBsZWdhY3kgcmFkaXVzIGNvbnN0cnVjdGlvbi4KLVJlZlB0cjxDU1NCYXNpY1No
YXBlPiBDU1NQYXJzZXI6OnBhcnNlSW5zZXRSb3VuZGVkQ29ybmVycyhQYXNzUmVmUHRyPENTU0Jh
c2ljU2hhcGVJbnNldD4gc2hhcGUsIENTU1BhcnNlclZhbHVlTGlzdCYgYXJncykKK1JlZlB0cjxD
U1NCYXNpY1NoYXBlPiBDU1NQYXJzZXI6OnBhcnNlSW5zZXRSb3VuZGVkQ29ybmVycyhSZWZQdHI8
Q1NTQmFzaWNTaGFwZUluc2V0PiYmIHNoYXBlLCBDU1NQYXJzZXJWYWx1ZUxpc3QmIGFyZ3MpCiB7
CiAgICAgQ1NTUGFyc2VyVmFsdWUqIGFyZ3VtZW50ID0gYXJncy5uZXh0KCk7CiAKQEAgLTc2NTEs
NyArNzY1MSw3IEBAIHN0cnVjdCBTaGFkb3dQYXJzZUNvbnRleHQgewogICAgICAgICB9CiAgICAg
fQogCi0gICAgdm9pZCBjb21taXRDb2xvcihQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiB2
YWwpCisgICAgdm9pZCBjb21taXRDb2xvcihSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+JiYgdmFs
KQogICAgIHsKICAgICAgICAgY29sb3IgPSB2YWw7CiAgICAgICAgIGFsbG93Q29sb3IgPSBmYWxz
ZTsKQEAgLTc4NzksNyArNzg3OSw3IEBAIHN0cnVjdCBCb3JkZXJJbWFnZVBhcnNlQ29udGV4dCB7
CiAgICAgYm9vbCByZXF1aXJlV2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3JlcXVpcmVXaWR0aDsg
fQogICAgIGJvb2wgcmVxdWlyZU91dHNldCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWlyZU91dHNl
dDsgfQogCi0gICAgdm9pZCBjb21taXRJbWFnZShQYXNzUmVmUHRyPENTU1ZhbHVlPiBpbWFnZSkK
KyAgICB2b2lkIGNvbW1pdEltYWdlKFJlZlB0cjxDU1NWYWx1ZT4mJiBpbWFnZSkKICAgICB7CiAg
ICAgICAgIG1faW1hZ2UgPSBpbWFnZTsKICAgICAgICAgbV9jYW5BZHZhbmNlID0gdHJ1ZTsKQEAg
LTc4ODgsNyArNzg4OCw3IEBAIHN0cnVjdCBCb3JkZXJJbWFnZVBhcnNlQ29udGV4dCB7CiAgICAg
ICAgIG1fYWxsb3dJbWFnZVNsaWNlID0gIW1faW1hZ2VTbGljZTsKICAgICAgICAgbV9hbGxvd1Jl
cGVhdCA9ICFtX3JlcGVhdDsKICAgICB9Ci0gICAgdm9pZCBjb21taXRJbWFnZVNsaWNlKFBhc3NS
ZWZQdHI8Q1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlPiBzbGljZSkKKyAgICB2b2lkIGNvbW1pdElt
YWdlU2xpY2UoUmVmUHRyPENTU0JvcmRlckltYWdlU2xpY2VWYWx1ZT4mJiBzbGljZSkKICAgICB7
CiAgICAgICAgIG1faW1hZ2VTbGljZSA9IHNsaWNlOwogICAgICAgICBtX2NhbkFkdmFuY2UgPSB0
cnVlOwpAQCAtNzkwOSw3ICs3OTA5LDcgQEAgc3RydWN0IEJvcmRlckltYWdlUGFyc2VDb250ZXh0
IHsKICAgICAgICAgICAgIG1fcmVxdWlyZVdpZHRoID0gZmFsc2U7CiAgICAgICAgIH0KICAgICB9
Ci0gICAgdm9pZCBjb21taXRCb3JkZXJXaWR0aChQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVl
PiBzbGljZSkKKyAgICB2b2lkIGNvbW1pdEJvcmRlcldpZHRoKFJlZlB0cjxDU1NQcmltaXRpdmVW
YWx1ZT4mJiBzbGljZSkKICAgICB7CiAgICAgICAgIG1fYm9yZGVyU2xpY2UgPSBzbGljZTsKICAg
ICAgICAgbV9jYW5BZHZhbmNlID0gdHJ1ZTsKQEAgLTc5MTgsNyArNzkxOCw3IEBAIHN0cnVjdCBC
b3JkZXJJbWFnZVBhcnNlQ29udGV4dCB7CiAgICAgICAgIG1fYWxsb3dJbWFnZSA9ICFtX2ltYWdl
OwogICAgICAgICBtX2FsbG93UmVwZWF0ID0gIW1fcmVwZWF0OwogICAgIH0KLSAgICB2b2lkIGNv
bW1pdEJvcmRlck91dHNldChQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBvdXRzZXQpCisg
ICAgdm9pZCBjb21taXRCb3JkZXJPdXRzZXQoUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiYmIG91
dHNldCkKICAgICB7CiAgICAgICAgIG1fb3V0c2V0ID0gb3V0c2V0OwogICAgICAgICBtX2NhbkFk
dmFuY2UgPSB0cnVlOwpAQCAtNzkyNyw3ICs3OTI3LDcgQEAgc3RydWN0IEJvcmRlckltYWdlUGFy
c2VDb250ZXh0IHsKICAgICAgICAgbV9hbGxvd0ltYWdlID0gIW1faW1hZ2U7CiAgICAgICAgIG1f
YWxsb3dSZXBlYXQgPSAhbV9yZXBlYXQ7CiAgICAgfQotICAgIHZvaWQgY29tbWl0UmVwZWF0KFBh
c3NSZWZQdHI8Q1NTVmFsdWU+IHJlcGVhdCkKKyAgICB2b2lkIGNvbW1pdFJlcGVhdChSZWZQdHI8
Q1NTVmFsdWU+JiYgcmVwZWF0KQogICAgIHsKICAgICAgICAgbV9yZXBlYXQgPSByZXBlYXQ7CiAg
ICAgICAgIG1fY2FuQWR2YW5jZSA9IHRydWU7CkBAIC03OTM3LDcgKzc5MzcsNyBAQCBzdHJ1Y3Qg
Qm9yZGVySW1hZ2VQYXJzZUNvbnRleHQgewogICAgICAgICBtX2FsbG93SW1hZ2UgPSAhbV9pbWFn
ZTsKICAgICB9CiAKLSAgICBQYXNzUmVmUHRyPENTU1ZhbHVlPiBjb21taXRXZWJLaXRCb3JkZXJJ
bWFnZSgpCisgICAgUmVmPENTU1ZhbHVlPiBjb21taXRXZWJLaXRCb3JkZXJJbWFnZSgpCiAgICAg
ewogICAgICAgICByZXR1cm4gY3JlYXRlQm9yZGVySW1hZ2VWYWx1ZShtX2ltYWdlLCBtX2ltYWdl
U2xpY2UsIG1fYm9yZGVyU2xpY2UsIG1fb3V0c2V0LCBtX3JlcGVhdCk7CiAgICAgfQpAQCAtNzk1
MSw3ICs3OTUxLDcgQEAgc3RydWN0IEJvcmRlckltYWdlUGFyc2VDb250ZXh0IHsKICAgICAgICAg
Y29tbWl0Qm9yZGVySW1hZ2VQcm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRlckltYWdlUmVwZWF0LCBw
YXJzZXIsIG1fcmVwZWF0LCBpbXBvcnRhbnQpOwogICAgIH0KIAotICAgIHZvaWQgY29tbWl0Qm9y
ZGVySW1hZ2VQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIHByb3BJZCwgQ1NTUGFyc2VyJiBwYXJzZXIs
IFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlLCBib29sIGltcG9ydGFudCkKKyAgICB2b2lkIGNv
bW1pdEJvcmRlckltYWdlUHJvcGVydHkoQ1NTUHJvcGVydHlJRCBwcm9wSWQsIENTU1BhcnNlciYg
cGFyc2VyLCBSZWZQdHI8Q1NTVmFsdWU+JiYgdmFsdWUsIGJvb2wgaW1wb3J0YW50KQogICAgIHsK
ICAgICAgICAgaWYgKHZhbHVlKQogICAgICAgICAgICAgcGFyc2VyLmFkZFByb3BlcnR5KHByb3BJ
ZCwgdmFsdWUsIGltcG9ydGFudCk7CkBAIC04MTIzLDcgKzgxMjMsNyBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIGNvbW1pdEZpbGwoKSB7IG1fZmlsbCA9IHRydWU7IG1fYWxsb3dGaWxsID0gZmFsc2U7
IG1fYWxsb3dOdW1iZXIgPSAhbV90b3A7IH0KIAotICAgIFBhc3NSZWZQdHI8Q1NTQm9yZGVySW1h
Z2VTbGljZVZhbHVlPiBjb21taXRCb3JkZXJJbWFnZVNsaWNlKCkKKyAgICBSZWZQdHI8Q1NTQm9y
ZGVySW1hZ2VTbGljZVZhbHVlPiBjb21taXRCb3JkZXJJbWFnZVNsaWNlKCkKICAgICB7CiAgICAg
ICAgIC8vIFdlIG5lZWQgdG8gY2xvbmUgYW5kIHJlcGVhdCB2YWx1ZXMgZm9yIGFueSBvbWlzc2lv
bnMuCiAgICAgICAgIEFTU0VSVChtX3RvcCk7CkBAIC04MjM5LDkgKzgyMzksOSBAQCBwdWJsaWM6
CiAgICAgfQogCiAgICAgdm9pZCBzZXRBbGxvd0ZpbmFsQ29tbWl0KCkgeyBtX2FsbG93RmluYWxD
b21taXQgPSB0cnVlOyB9Ci0gICAgdm9pZCBzZXRUb3AoUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVW
YWx1ZT4gdmFsKSB7IG1fdG9wID0gdmFsOyB9CisgICAgdm9pZCBzZXRUb3AoUmVmUHRyPENTU1By
aW1pdGl2ZVZhbHVlPiB2YWwpIHsgbV90b3AgPSB2YWw7IH0KIAotICAgIFBhc3NSZWZQdHI8Q1NT
UHJpbWl0aXZlVmFsdWU+IGNvbW1pdEJvcmRlckltYWdlUXVhZCgpCisgICAgUmVmUHRyPENTU1By
aW1pdGl2ZVZhbHVlPiBjb21taXRCb3JkZXJJbWFnZVF1YWQoKQogICAgIHsKICAgICAgICAgLy8g
V2UgbmVlZCB0byBjbG9uZSBhbmQgcmVwZWF0IHZhbHVlcyBmb3IgYW55IG9taXNzaW9ucy4KICAg
ICAgICAgQVNTRVJUKG1fdG9wKTsKQEAgLTg0NTMsNyArODQ1Myw3IEBAIGJvb2wgQ1NTUGFyc2Vy
OjpwYXJzZUNvdW50ZXIoQ1NTUHJvcGVydHlJRCBwcm9wSWQsIGludCBkZWZhdWx0VmFsdWUsIGJv
b2wgaW1wb3J0CiB9CiAKIC8vIFRoaXMgc2hvdWxkIGdvIGF3YXkgb25jZSB3ZSBkcm9wIHN1cHBv
cnQgZm9yIC13ZWJraXQtZ3JhZGllbnQKLXN0YXRpYyBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZh
bHVlPiBwYXJzZURlcHJlY2F0ZWRHcmFkaWVudFBvaW50KENTU1BhcnNlclZhbHVlJiB2YWx1ZSwg
Ym9vbCBob3Jpem9udGFsKQorc3RhdGljIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcGFyc2VE
ZXByZWNhdGVkR3JhZGllbnRQb2ludChDU1NQYXJzZXJWYWx1ZSYgdmFsdWUsIGJvb2wgaG9yaXpv
bnRhbCkKIHsKICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHJlc3VsdDsKICAgICBpZiAo
dmFsdWUudW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0lERU5UKSB7CkBAIC04NjcxLDcg
Kzg2NzEsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VEZXByZWNhdGVkR3JhZGllbnQoQ1NTUGFy
c2VyVmFsdWVMaXN0JiB2YWx1ZUxpc3QsIFJlZlB0cjxDUwogICAgIHJldHVybiB0cnVlOwogfQog
Ci1zdGF0aWMgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gdmFsdWVGcm9tU2lkZUtleXdv
cmQoQ1NTUGFyc2VyVmFsdWUmIHZhbHVlLCBib29sJiBpc0hvcml6b250YWwpCitzdGF0aWMgUmVm
UHRyPENTU1ByaW1pdGl2ZVZhbHVlPiB2YWx1ZUZyb21TaWRlS2V5d29yZChDU1NQYXJzZXJWYWx1
ZSYgdmFsdWUsIGJvb2wmIGlzSG9yaXpvbnRhbCkKIHsKICAgICBpZiAodmFsdWUudW5pdCAhPSBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0lERU5UKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAg
LTg2OTEsNyArODY5MSw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiB2
YWx1ZUZyb21TaWRlS2V5d29yZChDU1NQYXJzZXJWYWx1ZSYgdmFsdWUsCiAgICAgcmV0dXJuIENT
U1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKHZhbHVlLmlkKTsK
IH0KIAotc3RhdGljIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHBhcnNlR3JhZGllbnRD
b2xvck9yS2V5d29yZChDU1NQYXJzZXImIHBhcnNlciwgQ1NTUGFyc2VyVmFsdWUmIHZhbHVlKQor
c3RhdGljIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcGFyc2VHcmFkaWVudENvbG9yT3JLZXl3
b3JkKENTU1BhcnNlciYgcGFyc2VyLCBDU1NQYXJzZXJWYWx1ZSYgdmFsdWUpCiB7CiAgICAgQ1NT
VmFsdWVJRCBpZCA9IHZhbHVlLmlkOwogICAgIGlmIChpZCA9PSBDU1NWYWx1ZVdlYmtpdFRleHQg
fHwgQ1NTUGFyc2VyOjppc1ZhbGlkU3lzdGVtQ29sb3JWYWx1ZShpZCkgfHwgaWQgPT0gQ1NTVmFs
dWVNZW51IHx8IGlkID09IENTU1ZhbHVlQ3VycmVudGNvbG9yKQpAQCAtMTAwOTksNyArMTAwOTks
NyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VQZXJzcGVjdGl2ZU9yaWdpbihDU1NQcm9wZXJ0eUlE
IHByb3BJZCwgQ1NTUHJvcGVydHlJRCYgcHJvcAogICAgIHJldHVybiB2YWx1ZTsKIH0KIAotdm9p
ZCBDU1NQYXJzZXI6OmFkZFRleHREZWNvcmF0aW9uUHJvcGVydHkoQ1NTUHJvcGVydHlJRCBwcm9w
SWQsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlLCBib29sIGltcG9ydGFudCkKK3ZvaWQgQ1NT
UGFyc2VyOjphZGRUZXh0RGVjb3JhdGlvblByb3BlcnR5KENTU1Byb3BlcnR5SUQgcHJvcElkLCBS
ZWZQdHI8Q1NTVmFsdWU+JiYgdmFsdWUsIGJvb2wgaW1wb3J0YW50KQogewogICAgIC8vIFRoZSB0
ZXh0LWRlY29yYXRpb24tbGluZSBwcm9wZXJ0eSB0YWtlcyBwcmlvcml0eSBvdmVyIHRleHQtZGVj
b3JhdGlvbiwgdW5sZXNzIHRoZSBsYXR0ZXIgaGFzIGltcG9ydGFudCBwcmlvcml0eSBzZXQuCiAg
ICAgaWYgKHByb3BJZCA9PSBDU1NQcm9wZXJ0eVRleHREZWNvcmF0aW9uICYmICFpbXBvcnRhbnQg
JiYgIWluU2hvcnRoYW5kKCkpIHsKQEAgLTEyMTIxLDE4ICsxMjEyMSwxOCBAQCByZXN0YXJ0QWZ0
ZXJDb21tZW50OgogICAgIHJldHVybiB0b2tlbigpOwogfQogCi1SZWZQdHI8U3R5bGVSdWxlQmFz
ZT4gQ1NTUGFyc2VyOjpjcmVhdGVJbXBvcnRSdWxlKGNvbnN0IENTU1BhcnNlclN0cmluZyYgdXJs
LCBQYXNzUmVmUHRyPE1lZGlhUXVlcnlTZXQ+IG1lZGlhKQorUmVmUHRyPFN0eWxlUnVsZUJhc2U+
IENTU1BhcnNlcjo6Y3JlYXRlSW1wb3J0UnVsZShjb25zdCBDU1NQYXJzZXJTdHJpbmcmIHVybCwg
UmVmUHRyPE1lZGlhUXVlcnlTZXQ+JiYgbWVkaWEpCiB7CiAgICAgaWYgKCFtZWRpYSB8fCAhbV9h
bGxvd0ltcG9ydFJ1bGVzKSB7CiAgICAgICAgIHBvcFJ1bGVEYXRhKCk7CiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIH0KLSAgICBSZWZQdHI8U3R5bGVSdWxlSW1wb3J0PiBydWxlID0gU3R5
bGVSdWxlSW1wb3J0OjpjcmVhdGUodXJsLCBtZWRpYSk7CisgICAgUmVmUHRyPFN0eWxlUnVsZUlt
cG9ydD4gcnVsZSA9IFN0eWxlUnVsZUltcG9ydDo6Y3JlYXRlKHVybCwgV1RGOjptb3ZlKG1lZGlh
KSk7CiAgICAgcHJvY2Vzc0FuZEFkZE5ld1J1bGVUb1NvdXJjZVRyZWVJZk5lZWRlZCgpOwogICAg
IHJldHVybiBydWxlOwogfQogCi1SZWZQdHI8U3R5bGVSdWxlQmFzZT4gQ1NTUGFyc2VyOjpjcmVh
dGVNZWRpYVJ1bGUoUGFzc1JlZlB0cjxNZWRpYVF1ZXJ5U2V0PiBtZWRpYSwgUnVsZUxpc3QqIHJ1
bGVzKQorUmVmUHRyPFN0eWxlUnVsZUJhc2U+IENTU1BhcnNlcjo6Y3JlYXRlTWVkaWFSdWxlKFJl
ZlB0cjxNZWRpYVF1ZXJ5U2V0PiYmIG1lZGlhLCBSdWxlTGlzdCogcnVsZXMpCiB7CiAgICAgbV9h
bGxvd0ltcG9ydFJ1bGVzID0gbV9hbGxvd05hbWVzcGFjZURlY2xhcmF0aW9ucyA9IGZhbHNlOwog
ICAgIFJlZlB0cjxTdHlsZVJ1bGVNZWRpYT4gcnVsZTsKQEAgLTEyMTQyLDcgKzEyMTQyLDcgQEAg
UmVmUHRyPFN0eWxlUnVsZUJhc2U+IENTU1BhcnNlcjo6Y3JlYXRlTWVkaWFSdWxlKFBhc3NSZWZQ
dHI8TWVkaWFRdWVyeVNldD4gbWVkaWEKICAgICAgICAgLy8gZXZlbiB3aGVuIGl0IGlzIHN5bnRh
Y3RpY2FsbHkgaW5jb3JyZWN0LgogICAgICAgICBydWxlID0gU3R5bGVSdWxlTWVkaWE6OmNyZWF0
ZShNZWRpYVF1ZXJ5U2V0OjpjcmVhdGUoKSwgZW1wdHlSdWxlcyk7CiAgICAgfSBlbHNlCi0gICAg
ICAgIHJ1bGUgPSBTdHlsZVJ1bGVNZWRpYTo6Y3JlYXRlKG1lZGlhLCBydWxlcyA/ICpydWxlcyA6
IGVtcHR5UnVsZXMpOworICAgICAgICBydWxlID0gU3R5bGVSdWxlTWVkaWE6OmNyZWF0ZShXVEY6
Om1vdmUobWVkaWEpLCBydWxlcyA/ICpydWxlcyA6IGVtcHR5UnVsZXMpOwogICAgIHByb2Nlc3NB
bmRBZGROZXdSdWxlVG9Tb3VyY2VUcmVlSWZOZWVkZWQoKTsKICAgICByZXR1cm4gcnVsZTsKIH0K
QEAgLTEyMjE3LDcgKzEyMjE3LDcgQEAgdm9pZCBDU1NQYXJzZXI6OnByb2Nlc3NBbmRBZGROZXdS
dWxlVG9Tb3VyY2VUcmVlSWZOZWVkZWQoKQogICAgIGFkZE5ld1J1bGVUb1NvdXJjZVRyZWUocnVs
ZS5yZWxlYXNlKCkpOwogfQogCi12b2lkIENTU1BhcnNlcjo6YWRkTmV3UnVsZVRvU291cmNlVHJl
ZShQYXNzUmVmUHRyPENTU1J1bGVTb3VyY2VEYXRhPiBydWxlKQordm9pZCBDU1NQYXJzZXI6OmFk
ZE5ld1J1bGVUb1NvdXJjZVRyZWUoUmVmUHRyPENTU1J1bGVTb3VyY2VEYXRhPiYmIHJ1bGUpCiB7
CiAgICAgLy8gUHJlY29uZGl0aW9uOiAoaXNFeHRyYWN0aW5nU291cmNlRGF0YSgpKS4KICAgICBp
ZiAoIW1fcnVsZVNvdXJjZURhdGFSZXN1bHQpCkBAIC0xMjIyOCw3ICsxMjIyOCw3IEBAIHZvaWQg
Q1NTUGFyc2VyOjphZGROZXdSdWxlVG9Tb3VyY2VUcmVlKFBhc3NSZWZQdHI8Q1NTUnVsZVNvdXJj
ZURhdGE+IHJ1bGUpCiAgICAgICAgIG1fY3VycmVudFJ1bGVEYXRhU3RhY2stPmxhc3QoKS0+Y2hp
bGRSdWxlcy5hcHBlbmQocnVsZSk7CiB9CiAKLVBhc3NSZWZQdHI8Q1NTUnVsZVNvdXJjZURhdGE+
IENTU1BhcnNlcjo6cG9wUnVsZURhdGEoKQorUmVmUHRyPENTU1J1bGVTb3VyY2VEYXRhPiBDU1NQ
YXJzZXI6OnBvcFJ1bGVEYXRhKCkKIHsKICAgICBpZiAoIW1fcnVsZVNvdXJjZURhdGFSZXN1bHQp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTIyMzcsNyArMTIyMzcsNyBAQCBQYXNzUmVm
UHRyPENTU1J1bGVTb3VyY2VEYXRhPiBDU1NQYXJzZXI6OnBvcFJ1bGVEYXRhKCkKICAgICBtX2N1
cnJlbnRSdWxlRGF0YSA9IG51bGxwdHI7CiAgICAgUmVmUHRyPENTU1J1bGVTb3VyY2VEYXRhPiBk
YXRhID0gbV9jdXJyZW50UnVsZURhdGFTdGFjay0+bGFzdCgpOwogICAgIG1fY3VycmVudFJ1bGVE
YXRhU3RhY2stPnJlbW92ZUxhc3QoKTsKLSAgICByZXR1cm4gZGF0YS5yZWxlYXNlKCk7CisgICAg
cmV0dXJuIGRhdGE7CiB9CiAKIHZvaWQgQ1NTUGFyc2VyOjpzeW50YXhFcnJvcihjb25zdCBMb2Nh
dGlvbiYgbG9jYXRpb24sIFN5bnRheEVycm9yVHlwZSBlcnJvcikKQEAgLTEyMjgyLDcgKzEyMjgy
LDcgQEAgUmVmUHRyPFN0eWxlUnVsZUtleWZyYW1lcz4gQ1NTUGFyc2VyOjpjcmVhdGVLZXlmcmFt
ZXNSdWxlKGNvbnN0IFN0cmluZyYgbmFtZSwgc3QKICAgICBtX2FsbG93SW1wb3J0UnVsZXMgPSBt
X2FsbG93TmFtZXNwYWNlRGVjbGFyYXRpb25zID0gZmFsc2U7CiAgICAgUmVmUHRyPFN0eWxlUnVs
ZUtleWZyYW1lcz4gcnVsZSA9IFN0eWxlUnVsZUtleWZyYW1lczo6Y3JlYXRlKCk7CiAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBrZXlmcmFtZXMtPnNpemUoKTsgKytpKQotICAgICAgICBydWxl
LT5wYXJzZXJBcHBlbmRLZXlmcmFtZShrZXlmcmFtZXMtPmF0KGkpKTsKKyAgICAgICAgcnVsZS0+
cGFyc2VyQXBwZW5kS2V5ZnJhbWUoa2V5ZnJhbWVzLT5hdChpKS5jb3B5UmVmKCkpOwogICAgIHJ1
bGUtPnNldE5hbWUobmFtZSk7CiAgICAgcHJvY2Vzc0FuZEFkZE5ld1J1bGVUb1NvdXJjZVRyZWVJ
Zk5lZWRlZCgpOwogICAgIHJldHVybiBydWxlOwpAQCAtMTI3MTksNyArMTI3MTksNyBAQCB2b2lk
IENTU1BhcnNlcjo6bWFya1Byb3BlcnR5RW5kKGJvb2wgaXNJbXBvcnRhbnRGb3VuZCwgYm9vbCBp
c1Byb3BlcnR5UGFyc2VkKQogfQogCiAjaWYgRU5BQkxFKENTU19ERVZJQ0VfQURBUFRBVElPTikK
LVBhc3NSZWZQdHI8U3R5bGVSdWxlQmFzZT4gQ1NTUGFyc2VyOjpjcmVhdGVWaWV3cG9ydFJ1bGUo
KQorUmVmUHRyPFN0eWxlUnVsZUJhc2U+IENTU1BhcnNlcjo6Y3JlYXRlVmlld3BvcnRSdWxlKCkK
IHsKICAgICBtX2FsbG93SW1wb3J0UnVsZXMgPSBtX2FsbG93TmFtZXNwYWNlRGVjbGFyYXRpb25z
ID0gZmFsc2U7CiAKQEAgLTEyNzI4LDcgKzEyNzI4LDcgQEAgUGFzc1JlZlB0cjxTdHlsZVJ1bGVC
YXNlPiBDU1NQYXJzZXI6OmNyZWF0ZVZpZXdwb3J0UnVsZSgpCiAKICAgICBwcm9jZXNzQW5kQWRk
TmV3UnVsZVRvU291cmNlVHJlZUlmTmVlZGVkKCk7CiAKLSAgICByZXR1cm4gcnVsZS5yZWxlYXNl
KCk7CisgICAgcmV0dXJuIHJ1bGU7CiB9CiAKIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZpZXdwb3J0
UHJvcGVydHkoQ1NTUHJvcGVydHlJRCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1BhcnNlci5oCmluZGV4IDkyYzFiM2UuLjM4MzllYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgK
QEAgLTEyNiwxNSArMTI2LDE1IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmUHRyPENTU1ZhbHVl
TGlzdD4gcGFyc2VGb250RmFjZVZhbHVlKGNvbnN0IEF0b21pY1N0cmluZyYpOwogICAgIFJlZlB0
cjxDU1NQcmltaXRpdmVWYWx1ZT4gcGFyc2VWYWxpZFByaW1pdGl2ZShDU1NWYWx1ZUlEIGlkZW50
LCBWYWx1ZVdpdGhDYWxjdWxhdGlvbiYpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBwYXJz
ZURlY2xhcmF0aW9uKE11dGFibGVTdHlsZVByb3BlcnRpZXMqLCBjb25zdCBTdHJpbmcmLCBQYXNz
UmVmUHRyPENTU1J1bGVTb3VyY2VEYXRhPiwgU3R5bGVTaGVldENvbnRlbnRzKiBjb250ZXh0U3R5
bGVTaGVldCk7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBwYXJzZURlY2xhcmF0aW9uKE11dGFi
bGVTdHlsZVByb3BlcnRpZXMqLCBjb25zdCBTdHJpbmcmLCBSZWZQdHI8Q1NTUnVsZVNvdXJjZURh
dGE+JiYsIFN0eWxlU2hlZXRDb250ZW50cyogY29udGV4dFN0eWxlU2hlZXQpOwogICAgIHN0YXRp
YyBSZWY8SW1tdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBwYXJzZUlubGluZVN0eWxlRGVjbGFyYXRp
b24oY29uc3QgU3RyaW5nJiwgRWxlbWVudCopOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVF1
ZXJ5PiBwYXJzZU1lZGlhUXVlcnkoY29uc3QgU3RyaW5nJik7CiAKLSAgICB2b2lkIGFkZFByb3Bl
cnR5V2l0aFByZWZpeGluZ1ZhcmlhbnQoQ1NTUHJvcGVydHlJRCwgUGFzc1JlZlB0cjxDU1NWYWx1
ZT4sIGJvb2wgaW1wb3J0YW50LCBib29sIGltcGxpY2l0ID0gZmFsc2UpOwotICAgIHZvaWQgYWRk
UHJvcGVydHkoQ1NTUHJvcGVydHlJRCwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4sIGJvb2wgaW1wb3J0
YW50LCBib29sIGltcGxpY2l0ID0gZmFsc2UpOworICAgIHZvaWQgYWRkUHJvcGVydHlXaXRoUHJl
Zml4aW5nVmFyaWFudChDU1NQcm9wZXJ0eUlELCBSZWZQdHI8Q1NTVmFsdWU+JiYsIGJvb2wgaW1w
b3J0YW50LCBib29sIGltcGxpY2l0ID0gZmFsc2UpOworICAgIHZvaWQgYWRkUHJvcGVydHkoQ1NT
UHJvcGVydHlJRCwgUmVmUHRyPENTU1ZhbHVlPiYmLCBib29sIGltcG9ydGFudCwgYm9vbCBpbXBs
aWNpdCA9IGZhbHNlKTsKICAgICB2b2lkIHJvbGxiYWNrTGFzdFByb3BlcnRpZXMoaW50IG51bSk7
CiAgICAgYm9vbCBoYXNQcm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4gIW1fcGFyc2VkUHJvcGVy
dGllcy5pc0VtcHR5KCk7IH0KLSAgICB2b2lkIGFkZEV4cGFuZGVkUHJvcGVydHlGb3JWYWx1ZShD
U1NQcm9wZXJ0eUlEIHByb3BJZCwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4sIGJvb2wpOworICAgIHZv
aWQgYWRkRXhwYW5kZWRQcm9wZXJ0eUZvclZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcElkLCBSZWZQ
dHI8Q1NTVmFsdWU+JiYsIGJvb2wpOwogCiAgICAgYm9vbCBwYXJzZVZhbHVlKENTU1Byb3BlcnR5
SUQsIGJvb2wgaW1wb3J0YW50KTsKICAgICBib29sIHBhcnNlU2hvcnRoYW5kKENTU1Byb3BlcnR5
SUQsIGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmLCBib29sIGltcG9ydGFudCk7CkBAIC0y
MDYsNyArMjA2LDcgQEAgcHVibGljOgogI2lmIEVOQUJMRShDU1NfR1JJRF9MQVlPVVQpCiAgICAg
UmVmUHRyPENTU1ZhbHVlPiBwYXJzZUdyaWRQb3NpdGlvbigpOwogICAgIGJvb2wgcGFyc2VHcmlk
SXRlbVBvc2l0aW9uU2hvcnRoYW5kKENTU1Byb3BlcnR5SUQsIGJvb2wgaW1wb3J0YW50KTsKLSAg
ICBib29sIHBhcnNlR3JpZFRlbXBsYXRlUm93c0FuZEFyZWFzKFBhc3NSZWZQdHI8Q1NTVmFsdWU+
LCBib29sIGltcG9ydGFudCk7CisgICAgYm9vbCBwYXJzZUdyaWRUZW1wbGF0ZVJvd3NBbmRBcmVh
cyhSZWZQdHI8Q1NTVmFsdWU+JiYsIGJvb2wgaW1wb3J0YW50KTsKICAgICBib29sIHBhcnNlR3Jp
ZFRlbXBsYXRlU2hvcnRoYW5kKGJvb2wgaW1wb3J0YW50KTsKICAgICBib29sIHBhcnNlR3JpZFNo
b3J0aGFuZChib29sIGltcG9ydGFudCk7CiAgICAgYm9vbCBwYXJzZUdyaWRBcmVhU2hvcnRoYW5k
KGJvb2wgaW1wb3J0YW50KTsKQEAgLTMyNSw3ICszMjUsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBw
YXJzZVRleHRFbXBoYXNpc1N0eWxlKGJvb2wgaW1wb3J0YW50KTsKICAgICBib29sIHBhcnNlVGV4
dEVtcGhhc2lzUG9zaXRpb24oYm9vbCBpbXBvcnRhbnQpOwogCi0gICAgdm9pZCBhZGRUZXh0RGVj
b3JhdGlvblByb3BlcnR5KENTU1Byb3BlcnR5SUQsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+LCBib29s
IGltcG9ydGFudCk7CisgICAgdm9pZCBhZGRUZXh0RGVjb3JhdGlvblByb3BlcnR5KENTU1Byb3Bl
cnR5SUQsIFJlZlB0cjxDU1NWYWx1ZT4mJiwgYm9vbCBpbXBvcnRhbnQpOwogICAgIGJvb2wgcGFy
c2VUZXh0RGVjb3JhdGlvbihDU1NQcm9wZXJ0eUlEIHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpOwog
ICAgIGJvb2wgcGFyc2VUZXh0RGVjb3JhdGlvblNraXAoYm9vbCBpbXBvcnRhbnQpOwogICAgIGJv
b2wgcGFyc2VUZXh0VW5kZXJsaW5lUG9zaXRpb24oYm9vbCBpbXBvcnRhbnQpOwpAQCAtMzUxLDEy
ICszNTEsMTIgQEAgcHVibGljOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8c3RkOjp1bmlx
dWVfcHRyPENTU1BhcnNlclNlbGVjdG9yPj4+IGNyZWF0ZVNlbGVjdG9yVmVjdG9yKCk7CiAgICAg
dm9pZCByZWN5Y2xlU2VsZWN0b3JWZWN0b3Ioc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxzdGQ6OnVu
aXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+Pj4pOwogCi0gICAgUmVmUHRyPFN0eWxlUnVsZUJh
c2U+IGNyZWF0ZUltcG9ydFJ1bGUoY29uc3QgQ1NTUGFyc2VyU3RyaW5nJiwgUGFzc1JlZlB0cjxN
ZWRpYVF1ZXJ5U2V0Pik7CisgICAgUmVmUHRyPFN0eWxlUnVsZUJhc2U+IGNyZWF0ZUltcG9ydFJ1
bGUoY29uc3QgQ1NTUGFyc2VyU3RyaW5nJiwgUmVmUHRyPE1lZGlhUXVlcnlTZXQ+JiYpOwogICAg
IFJlZlB0cjxTdHlsZUtleWZyYW1lPiBjcmVhdGVLZXlmcmFtZShDU1NQYXJzZXJWYWx1ZUxpc3Qm
KTsKICAgICBSZWZQdHI8U3R5bGVSdWxlS2V5ZnJhbWVzPiBjcmVhdGVLZXlmcmFtZXNSdWxlKGNv
bnN0IFN0cmluZyYsIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8UmVmUHRyPFN0eWxlS2V5ZnJhbWU+
Pj4pOwogCiAgICAgdHlwZWRlZiBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2U+PiBSdWxlTGlz
dDsKLSAgICBSZWZQdHI8U3R5bGVSdWxlQmFzZT4gY3JlYXRlTWVkaWFSdWxlKFBhc3NSZWZQdHI8
TWVkaWFRdWVyeVNldD4sIFJ1bGVMaXN0Kik7CisgICAgUmVmUHRyPFN0eWxlUnVsZUJhc2U+IGNy
ZWF0ZU1lZGlhUnVsZShSZWZQdHI8TWVkaWFRdWVyeVNldD4mJiwgUnVsZUxpc3QqKTsKICAgICBS
ZWZQdHI8U3R5bGVSdWxlQmFzZT4gY3JlYXRlRW1wdHlNZWRpYVJ1bGUoUnVsZUxpc3QqKTsKICAg
ICBSZWZQdHI8U3R5bGVSdWxlQmFzZT4gY3JlYXRlU3R5bGVSdWxlKFZlY3RvcjxzdGQ6OnVuaXF1
ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+Piogc2VsZWN0b3JzKTsKICAgICBSZWZQdHI8U3R5bGVS
dWxlQmFzZT4gY3JlYXRlRm9udEZhY2VSdWxlKCk7CkBAIC00MzgsOCArNDM4LDggQEAgcHVibGlj
OgogICAgIHZvaWQgbWFya1Byb3BlcnR5U3RhcnQoKTsKICAgICB2b2lkIG1hcmtQcm9wZXJ0eUVu
ZChib29sIGlzSW1wb3J0YW50Rm91bmQsIGJvb2wgaXNQcm9wZXJ0eVBhcnNlZCk7CiAgICAgdm9p
ZCBwcm9jZXNzQW5kQWRkTmV3UnVsZVRvU291cmNlVHJlZUlmTmVlZGVkKCk7Ci0gICAgdm9pZCBh
ZGROZXdSdWxlVG9Tb3VyY2VUcmVlKFBhc3NSZWZQdHI8Q1NTUnVsZVNvdXJjZURhdGE+KTsKLSAg
ICBQYXNzUmVmUHRyPENTU1J1bGVTb3VyY2VEYXRhPiBwb3BSdWxlRGF0YSgpOworICAgIHZvaWQg
YWRkTmV3UnVsZVRvU291cmNlVHJlZShSZWZQdHI8Q1NTUnVsZVNvdXJjZURhdGE+JiYpOworICAg
IFJlZlB0cjxDU1NSdWxlU291cmNlRGF0YT4gcG9wUnVsZURhdGEoKTsKICAgICB2b2lkIHJlc2V0
UHJvcGVydHlSYW5nZSgpIHsgbV9wcm9wZXJ0eVJhbmdlLnN0YXJ0ID0gbV9wcm9wZXJ0eVJhbmdl
LmVuZCA9IFVJTlRfTUFYOyB9CiAgICAgYm9vbCBpc0V4dHJhY3RpbmdTb3VyY2VEYXRhKCkgY29u
c3QgeyByZXR1cm4gISFtX2N1cnJlbnRSdWxlRGF0YVN0YWNrOyB9CiAgICAgdm9pZCBzeW50YXhF
cnJvcihjb25zdCBMb2NhdGlvbiYsIFN5bnRheEVycm9yVHlwZSA9IEdlbmVyYWxTeW50YXhFcnJv
cik7CkBAIC00NTEsNyArNDUxLDcgQEAgcHVibGljOgogI2lmIEVOQUJMRShDU1NfREVWSUNFX0FE
QVBUQVRJT04pCiAgICAgdm9pZCBtYXJrVmlld3BvcnRSdWxlQm9keVN0YXJ0KCkgeyBtX2luVmll
d3BvcnQgPSB0cnVlOyB9CiAgICAgdm9pZCBtYXJrVmlld3BvcnRSdWxlQm9keUVuZCgpIHsgbV9p
blZpZXdwb3J0ID0gZmFsc2U7IH0KLSAgICBQYXNzUmVmUHRyPFN0eWxlUnVsZUJhc2U+IGNyZWF0
ZVZpZXdwb3J0UnVsZSgpOworICAgIFJlZlB0cjxTdHlsZVJ1bGVCYXNlPiBjcmVhdGVWaWV3cG9y
dFJ1bGUoKTsKICNlbmRpZgogCiAgICAgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBjcmVhdGVQcmlt
aXRpdmVOdW1lcmljVmFsdWUoVmFsdWVXaXRoQ2FsY3VsYXRpb24mKTsKQEAgLTU2MCw3ICs1NjAs
NyBAQCBwcml2YXRlOgogICAgIFBhcnNlUmVzdWx0IHBhcnNlVmFsdWUoTXV0YWJsZVN0eWxlUHJv
cGVydGllcyosIENTU1Byb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYsIGJvb2wgaW1wb3J0YW50LCBT
dHlsZVNoZWV0Q29udGVudHMqIGNvbnRleHRTdHlsZVNoZWV0KTsKICAgICBSZWY8SW1tdXRhYmxl
U3R5bGVQcm9wZXJ0aWVzPiBwYXJzZURlY2xhcmF0aW9uKGNvbnN0IFN0cmluZyYsIFN0eWxlU2hl
ZXRDb250ZW50cyogY29udGV4dFN0eWxlU2hlZXQpOwogCi0gICAgUmVmUHRyPENTU0Jhc2ljU2hh
cGU+IHBhcnNlSW5zZXRSb3VuZGVkQ29ybmVycyhQYXNzUmVmUHRyPENTU0Jhc2ljU2hhcGVJbnNl
dD4sIENTU1BhcnNlclZhbHVlTGlzdCYpOworICAgIFJlZlB0cjxDU1NCYXNpY1NoYXBlPiBwYXJz
ZUluc2V0Um91bmRlZENvcm5lcnMoUmVmUHRyPENTU0Jhc2ljU2hhcGVJbnNldD4mJiwgQ1NTUGFy
c2VyVmFsdWVMaXN0Jik7CiAKICAgICBlbnVtIFNpemVQYXJhbWV0ZXJUeXBlIHsKICAgICAgICAg
Tm9uZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlclZhbHVlcy5jcHAKaW5kZXggYTA2MDljMy4u
YjNkNmZmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlclZhbHVlcy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlclZhbHVlcy5jcHAKQEAgLTY2LDcg
KzY2LDcgQEAgdm9pZCBDU1NQYXJzZXJWYWx1ZUxpc3Q6OmV4dGVuZChDU1NQYXJzZXJWYWx1ZUxp
c3QmIHZhbHVlTGlzdCkKICAgICAgICAgbV92YWx1ZXMuYXBwZW5kKCoodmFsdWVMaXN0LnZhbHVl
QXQoaSkpKTsKIH0KIAotUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyVmFsdWU6OmNyZWF0
ZUNTU1ZhbHVlKCkKK1JlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyVmFsdWU6OmNyZWF0ZUNTU1Zh
bHVlKCkKIHsKICAgICBSZWZQdHI8Q1NTVmFsdWU+IHBhcnNlZFZhbHVlOwogICAgIGlmIChpZCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMuaCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMuaAppbmRleCBjMzRhYWEzLi4wOTRlM2MyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyVmFsdWVzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlclZhbHVlcy5oCkBAIC0xMjgsNyArMTI4LDcgQEAgc3Ry
dWN0IENTU1BhcnNlclZhbHVlIHsKIAogICAgIHZvaWQgc2V0RnJvbVZhbHVlTGlzdChzdGQ6OnVu
aXF1ZV9wdHI8Q1NTUGFyc2VyVmFsdWVMaXN0Pik7CiAKLSAgICBQYXNzUmVmUHRyPENTU1ZhbHVl
PiBjcmVhdGVDU1NWYWx1ZSgpOworICAgIFJlZlB0cjxDU1NWYWx1ZT4gY3JlYXRlQ1NTVmFsdWUo
KTsKIH07CiAKIHZvaWQgZGVzdHJveShjb25zdCBDU1NQYXJzZXJWYWx1ZSYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKaW5kZXggNGE0NmY3MS4uYWU5ZWQ3ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCkBAIC05MzgsMTIgKzkzOCwx
MiBAQCBMZW5ndGhSZXBlYXQqIENTU1ByaW1pdGl2ZVZhbHVlOjpnZXRMZW5ndGhSZXBlYXRWYWx1
ZShFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKIH0KICNlbmRpZgogCi1QYXNzUmVmUHRyPFJHQkNv
bG9yPiBDU1NQcmltaXRpdmVWYWx1ZTo6Z2V0UkdCQ29sb3JWYWx1ZShFeGNlcHRpb25Db2RlJiBl
YykgY29uc3QKK1JlZlB0cjxSR0JDb2xvcj4gQ1NTUHJpbWl0aXZlVmFsdWU6OmdldFJHQkNvbG9y
VmFsdWUoRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CiB7CiAgICAgZWMgPSAwOwogICAgIGlmICht
X3ByaW1pdGl2ZVVuaXRUeXBlICE9IENTU19SR0JDT0xPUikgewogICAgICAgICBlYyA9IElOVkFM
SURfQUNDRVNTX0VSUjsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIH0KIAogICAgIC8vIEZJTVhFOiBUaGlzIHNob3VsZCBub3QgcmV0dXJuIGEgbmV3IG9i
amVjdCBmb3IgZWFjaCBpbnZvY2F0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1ByaW1pdGl2ZVZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFs
dWUuaAppbmRleCA2YzYzZjE4Li40ZDkzODBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUHJpbWl0aXZlVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0
aXZlVmFsdWUuaApAQCAtMzAsNyArMzAsNiBAQAogI2luY2x1ZGUgPHV0aWxpdHk+CiAjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgotI2luY2x1ZGUg
PHd0Zi9QYXNzUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMzM3LDcgKzMz
Niw3IEBAIHB1YmxpYzoKICAgICBMZW5ndGhSZXBlYXQqIGdldExlbmd0aFJlcGVhdFZhbHVlKCkg
Y29uc3QgeyByZXR1cm4gbV9wcmltaXRpdmVVbml0VHlwZSAhPSBDU1NfTEVOR1RIX1JFUEVBVCA/
IDAgOiBtX3ZhbHVlLmxlbmd0aFJlcGVhdDsgfQogI2VuZGlmCiAKLSAgICBQYXNzUmVmUHRyPFJH
QkNvbG9yPiBnZXRSR0JDb2xvclZhbHVlKEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKKyAgICBSZWZQ
dHI8UkdCQ29sb3I+IGdldFJHQkNvbG9yVmFsdWUoRXhjZXB0aW9uQ29kZSYpIGNvbnN0OwogICAg
IFJHQkEzMiBnZXRSR0JBMzJWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpbWl0aXZlVW5pdFR5
cGUgIT0gQ1NTX1JHQkNPTE9SID8gMCA6IG1fdmFsdWUucmdiY29sb3I7IH0KIAogICAgIFBhaXIq
IGdldFBhaXJWYWx1ZShFeGNlcHRpb25Db2RlJikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUHJvcGVydHkuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0
eS5oCmluZGV4IGQ1YzM4YTAuLmU5NDlmYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQcm9wZXJ0eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eS5oCkBA
IC0yNiw3ICsyNiw2IEBACiAjaW5jbHVkZSAiQ1NTVmFsdWUuaCIKICNpbmNsdWRlICJSZW5kZXJT
dHlsZUNvbnN0YW50cy5oIgogI2luY2x1ZGUgIldyaXRpbmdNb2RlLmgiCi0jaW5jbHVkZSA8d3Rm
L1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKQEAgLTY0LDcgKzYzLDcgQEAgc3RydWN0IFN0eWxlUHJvcGVydHlNZXRhZGF0YSB7CiAK
IGNsYXNzIENTU1Byb3BlcnR5IHsKIHB1YmxpYzoKLSAgICBDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0
eUlEIHByb3BlcnR5SUQsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlLCBib29sIGltcG9ydGFu
dCA9IGZhbHNlLCBib29sIGlzU2V0RnJvbVNob3J0aGFuZCA9IGZhbHNlLCBpbnQgaW5kZXhJblNo
b3J0aGFuZHNWZWN0b3IgPSAwLCBib29sIGltcGxpY2l0ID0gZmFsc2UpCisgICAgQ1NTUHJvcGVy
dHkoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBSZWZQdHI8Q1NTVmFsdWU+JiYgdmFsdWUsIGJv
b2wgaW1wb3J0YW50ID0gZmFsc2UsIGJvb2wgaXNTZXRGcm9tU2hvcnRoYW5kID0gZmFsc2UsIGlu
dCBpbmRleEluU2hvcnRoYW5kc1ZlY3RvciA9IDAsIGJvb2wgaW1wbGljaXQgPSBmYWxzZSkKICAg
ICAgICAgOiBtX21ldGFkYXRhKHByb3BlcnR5SUQsIGlzU2V0RnJvbVNob3J0aGFuZCwgaW5kZXhJ
blNob3J0aGFuZHNWZWN0b3IsIGltcG9ydGFudCwgaW1wbGljaXQsIGlzSW5oZXJpdGVkUHJvcGVy
dHkocHJvcGVydHlJRCkpCiAgICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKICAgICB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUmVmbGVjdFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUmVmbGVjdFZhbHVlLmgKaW5kZXggMGI1NWY2MC4uNzJiZjc2NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1JlZmxlY3RWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NSZWZsZWN0VmFsdWUuaApAQCAtMjgsNyArMjgsNiBAQAogCiAjaW5jbHVkZSAi
Q1NTUmVmbGVjdGlvbkRpcmVjdGlvbi5oIgogI2luY2x1ZGUgIkNTU1ZhbHVlLmgiCi0jaW5jbHVk
ZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKQEAgLTM3LDEwICszNiwxMCBAQCBjbGFzcyBDU1NQcmltaXRpdmVWYWx1ZTsK
IAogY2xhc3MgQ1NTUmVmbGVjdFZhbHVlIDogcHVibGljIENTU1ZhbHVlIHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUmVmPENTU1JlZmxlY3RWYWx1ZT4gY3JlYXRlKFBhc3NSZWZQdHI8Q1NTUHJpbWl0
aXZlVmFsdWU+IGRpcmVjdGlvbiwKLSAgICAgICAgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1
ZT4gb2Zmc2V0LCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBtYXNrKQorICAgIHN0YXRpYyBSZWY8Q1NT
UmVmbGVjdFZhbHVlPiBjcmVhdGUoUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiYmIGRpcmVjdGlv
biwKKyAgICAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiYmIG9mZnNldCwgUmVmUHRyPENT
U1ZhbHVlPiYmIG1hc2spCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NS
ZWZsZWN0VmFsdWUoZGlyZWN0aW9uLCBvZmZzZXQsIG1hc2spKTsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgQ1NTUmVmbGVjdFZhbHVlKFdURjo6bW92ZShkaXJlY3Rpb24pLCBXVEY6Om1v
dmUob2Zmc2V0KSwgV1RGOjptb3ZlKG1hc2spKSk7CiAgICAgfQogCiAgICAgQ1NTUHJpbWl0aXZl
VmFsdWUqIGRpcmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZGlyZWN0aW9uLmdldCgpOyB9CkBA
IC01NCw3ICs1Myw3IEBAIHB1YmxpYzoKICAgICBib29sIGVxdWFscyhjb25zdCBDU1NSZWZsZWN0
VmFsdWUmKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBDU1NSZWZsZWN0VmFsdWUoUGFzc1JlZlB0
cjxDU1NQcmltaXRpdmVWYWx1ZT4gZGlyZWN0aW9uLCBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZh
bHVlPiBvZmZzZXQsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IG1hc2spCisgICAgQ1NTUmVmbGVjdFZh
bHVlKFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4mJiBkaXJlY3Rpb24sIFJlZlB0cjxDU1NQcmlt
aXRpdmVWYWx1ZT4mJiBvZmZzZXQsIFJlZlB0cjxDU1NWYWx1ZT4mJiBtYXNrKQogICAgICAgICA6
IENTU1ZhbHVlKFJlZmxlY3RDbGFzcykKICAgICAgICAgLCBtX2RpcmVjdGlvbihkaXJlY3Rpb24p
CiAgICAgICAgICwgbV9vZmZzZXQob2Zmc2V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1J1bGVMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUnVsZUxpc3QuaAppbmRl
eCA1NDhmNTJlLi5mODJhMWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUnVs
ZUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUnVsZUxpc3QuaApAQCAtMjIsNyAr
MjIsNiBAQAogI2lmbmRlZiBDU1NSdWxlTGlzdF9oCiAjZGVmaW5lIENTU1J1bGVMaXN0X2gKIAot
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
ICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlZ21lbnRlZEZvbnRGYWNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NTZWdtZW50ZWRGb250RmFjZS5jcHAKaW5kZXggNWNiZmNhNC4uYjVi
M2IyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlZ21lbnRlZEZvbnRGYWNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VnbWVudGVkRm9udEZhY2UuY3BwCkBA
IC0xNTEsNyArMTUxLDcgQEAgYm9vbCBDU1NTZWdtZW50ZWRGb250RmFjZTo6Y2hlY2tGb250KCkg
Y29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBDU1NTZWdtZW50ZWRGb250RmFjZTo6
bG9hZEZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24sIFBhc3NSZWZQ
dHI8TG9hZEZvbnRDYWxsYmFjaz4gY2FsbGJhY2spCit2b2lkIENTU1NlZ21lbnRlZEZvbnRGYWNl
Ojpsb2FkRm9udChjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbiwgUmVmUHRy
PExvYWRGb250Q2FsbGJhY2s+JiYgY2FsbGJhY2spCiB7CiAgICAgZm9udFJhbmdlcyhmb250RGVz
Y3JpcHRpb24pOyAvLyBLaWNrIG9mZiB0aGUgbG9hZC4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1NlZ21lbnRlZEZvbnRGYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
U2VnbWVudGVkRm9udEZhY2UuaAppbmRleCA1ZmZlYmIxLi41ZTllMDhmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VnbWVudGVkRm9udEZhY2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTU2VnbWVudGVkRm9udEZhY2UuaApAQCAtMjksNyArMjksNiBAQAogI2luY2x1
ZGUgIkZvbnRDYWNoZS5oIgogI2luY2x1ZGUgIkZvbnRSYW5nZXMuaCIKICNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKQEAgLTYxLDcgKzYwLDcgQEAg
cHVibGljOgogICAgIH07CiAKICAgICBib29sIGNoZWNrRm9udCgpIGNvbnN0OwotICAgIHZvaWQg
bG9hZEZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgUGFzc1JlZlB0cjxMb2FkRm9udENhbGxi
YWNrPiBsb2FkQ2FsbGJhY2spOworICAgIHZvaWQgbG9hZEZvbnQoY29uc3QgRm9udERlc2NyaXB0
aW9uJiwgUmVmUHRyPExvYWRGb250Q2FsbGJhY2s+JiYgbG9hZENhbGxiYWNrKTsKICNlbmRpZgog
CiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAKaW5kZXggNDQwZTg5Yy4uZTk4
MjQ5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCkBAIC03NzksNyArNzc5LDcgQEAg
aW50IENTU1NlbGVjdG9yOjpudGhCKCkgY29uc3QKICAgICByZXR1cm4gbV9kYXRhLm1fcmFyZURh
dGEtPm1fYjsKIH0KIAotQ1NTU2VsZWN0b3I6OlJhcmVEYXRhOjpSYXJlRGF0YShQYXNzUmVmUHRy
PEF0b21pY1N0cmluZ0ltcGw+IHZhbHVlKQorQ1NTU2VsZWN0b3I6OlJhcmVEYXRhOjpSYXJlRGF0
YShSZWZQdHI8QXRvbWljU3RyaW5nSW1wbD4mJiB2YWx1ZSkKICAgICA6IG1fdmFsdWUodmFsdWUu
bGVha1JlZigpKQogICAgICwgbV9hKDApCiAgICAgLCBtX2IoMCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVj
dG9yLmgKaW5kZXggOTgwOGU3MS4uNTJjZTA3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1NlbGVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmgK
QEAgLTMyOCw3ICszMjgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIENTU1NlbGVj
dG9yJiBvcGVyYXRvcj0oY29uc3QgQ1NTU2VsZWN0b3ImKTsKIAogICAgICAgICBzdHJ1Y3QgUmFy
ZURhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxSYXJlRGF0YT4gewotICAgICAgICAgICAgc3RhdGlj
IFJlZjxSYXJlRGF0YT4gY3JlYXRlKFBhc3NSZWZQdHI8QXRvbWljU3RyaW5nSW1wbD4gdmFsdWUp
IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmFyZURhdGEodmFsdWUpKTsgfQorICAgICAgICAgICAg
c3RhdGljIFJlZjxSYXJlRGF0YT4gY3JlYXRlKFJlZlB0cjxBdG9taWNTdHJpbmdJbXBsPiYmIHZh
bHVlKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFJhcmVEYXRhKFdURjo6bW92ZSh2YWx1ZSkpKTsg
fQogICAgICAgICAgICAgflJhcmVEYXRhKCk7CiAKICAgICAgICAgICAgIGJvb2wgcGFyc2VOdGgo
KTsKQEAgLTM0NCw3ICszNDQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICBz
dGQ6OnVuaXF1ZV9wdHI8Q1NTU2VsZWN0b3JMaXN0PiBtX3NlbGVjdG9yTGlzdDsgLy8gVXNlZCBm
b3IgOm1hdGNoZXMoKSBhbmQgOm5vdCgpLgogICAgICAgICAKICAgICAgICAgcHJpdmF0ZToKLSAg
ICAgICAgICAgIFJhcmVEYXRhKFBhc3NSZWZQdHI8QXRvbWljU3RyaW5nSW1wbD4gdmFsdWUpOwor
ICAgICAgICAgICAgUmFyZURhdGEoUmVmUHRyPEF0b21pY1N0cmluZ0ltcGw+JiYgdmFsdWUpOwog
ICAgICAgICB9OwogICAgICAgICB2b2lkIGNyZWF0ZVJhcmVEYXRhKCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTaGFkb3dWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTU2hhZG93VmFsdWUuY3BwCmluZGV4IDkwNGU0NWYuLjIzYTZhNWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTaGFkb3dWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1NoYWRvd1ZhbHVlLmNwcApAQCAtMjYsMTIgKzI2LDEyIEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIC8vIFVzZWQgZm9yIHRleHQtc2hhZG93IGFuZCBib3gtc2hhZG93Ci1DU1NT
aGFkb3dWYWx1ZTo6Q1NTU2hhZG93VmFsdWUoUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4g
eCwKLSAgICBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiB5LAotICAgIFBhc3NSZWZQdHI8
Q1NTUHJpbWl0aXZlVmFsdWU+IGJsdXIsCi0gICAgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1
ZT4gc3ByZWFkLAotICAgIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHN0eWxlLAotICAg
IFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbG9yKQorQ1NTU2hhZG93VmFsdWU6OkNT
U1NoYWRvd1ZhbHVlKFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4mJiB4LAorICAgIFJlZlB0cjxD
U1NQcmltaXRpdmVWYWx1ZT4mJiB5LAorICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4mJiBi
bHVyLAorICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4mJiBzcHJlYWQsCisgICAgUmVmUHRy
PENTU1ByaW1pdGl2ZVZhbHVlPiYmIHN0eWxlLAorICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1
ZT4mJiBjb2xvcikKICAgICA6IENTU1ZhbHVlKFNoYWRvd0NsYXNzKQogICAgICwgeCh4KQogICAg
ICwgeSh5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NoYWRvd1ZhbHVlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2hhZG93VmFsdWUuaAppbmRleCAzMGQzYjRkLi45N2Q3
YzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2hhZG93VmFsdWUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2hhZG93VmFsdWUuaApAQCAtMjIsNyArMjIsNiBAQAog
I2RlZmluZSBDU1NTaGFkb3dWYWx1ZV9oCiAKICNpbmNsdWRlICJDU1NWYWx1ZS5oIgotI2luY2x1
ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC0zMiwxNCArMzEsMTQgQEAgY2xhc3MgQ1NTUHJpbWl0aXZlVmFsdWU7
CiAvLyBVc2VkIGZvciB0ZXh0LXNoYWRvdyBhbmQgYm94LXNoYWRvdwogY2xhc3MgQ1NTU2hhZG93
VmFsdWUgOiBwdWJsaWMgQ1NTVmFsdWUgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8Q1NTU2hh
ZG93VmFsdWU+IGNyZWF0ZShQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiB4LAotICAgICAg
ICBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiB5LAotICAgICAgICBQYXNzUmVmUHRyPENT
U1ByaW1pdGl2ZVZhbHVlPiBibHVyLAotICAgICAgICBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZh
bHVlPiBzcHJlYWQsCi0gICAgICAgIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHN0eWxl
LAotICAgICAgICBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjb2xvcikKKyAgICBzdGF0
aWMgUmVmPENTU1NoYWRvd1ZhbHVlPiBjcmVhdGUoUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiYm
IHgsCisgICAgICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4mJiB5LAorICAgICAgICBSZWZQ
dHI8Q1NTUHJpbWl0aXZlVmFsdWU+JiYgYmx1ciwKKyAgICAgICAgUmVmUHRyPENTU1ByaW1pdGl2
ZVZhbHVlPiYmIHNwcmVhZCwKKyAgICAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiYmIHN0
eWxlLAorICAgICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+JiYgY29sb3IpCiAgICAgewot
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NTaGFkb3dWYWx1ZSh4LCB5LCBibHVyLCBz
cHJlYWQsIHN0eWxlLCBjb2xvcikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NT
aGFkb3dWYWx1ZShXVEY6Om1vdmUoeCksIFdURjo6bW92ZSh5KSwgV1RGOjptb3ZlKGJsdXIpLCBX
VEY6Om1vdmUoc3ByZWFkKSwgV1RGOjptb3ZlKHN0eWxlKSwgV1RGOjptb3ZlKGNvbG9yKSkpOwog
ICAgIH0KIAogICAgIFN0cmluZyBjdXN0b21DU1NUZXh0KCkgY29uc3Q7CkBAIC01NCwxMiArNTMs
MTIgQEAgcHVibGljOgogICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29sb3I7CiAKIHBy
aXZhdGU6Ci0gICAgQ1NTU2hhZG93VmFsdWUoUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4g
eCwKLSAgICAgICAgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4geSwKLSAgICAgICAgUGFz
c1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gYmx1ciwKLSAgICAgICAgUGFzc1JlZlB0cjxDU1NQ
cmltaXRpdmVWYWx1ZT4gc3ByZWFkLAotICAgICAgICBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZh
bHVlPiBzdHlsZSwKLSAgICAgICAgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29sb3Ip
OworICAgIENTU1NoYWRvd1ZhbHVlKFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4mJiB4LAorICAg
ICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+JiYgeSwKKyAgICAgICAgUmVmUHRyPENTU1By
aW1pdGl2ZVZhbHVlPiYmIGJsdXIsCisgICAgICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4m
JiBzcHJlYWQsCisgICAgICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4mJiBzdHlsZSwKKyAg
ICAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiYmIGNvbG9yKTsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNo
ZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcAppbmRleCA1Yzk4
NTY5Li40NzNjZmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVl
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwCkBAIC0yMjAs
NyArMjIwLDcgQEAgdm9pZCBDU1NTdHlsZVNoZWV0OjpzZXREaXNhYmxlZChib29sIGRpc2FibGVk
KQogICAgIGRpZE11dGF0ZSgpOwogfQogCi12b2lkIENTU1N0eWxlU2hlZXQ6OnNldE1lZGlhUXVl
cmllcyhQYXNzUmVmUHRyPE1lZGlhUXVlcnlTZXQ+IG1lZGlhUXVlcmllcykKK3ZvaWQgQ1NTU3R5
bGVTaGVldDo6c2V0TWVkaWFRdWVyaWVzKFJlZlB0cjxNZWRpYVF1ZXJ5U2V0PiYmIG1lZGlhUXVl
cmllcykKIHsKICAgICBtX21lZGlhUXVlcmllcyA9IG1lZGlhUXVlcmllczsKICAgICBpZiAobV9t
ZWRpYUNTU09NV3JhcHBlciAmJiBtX21lZGlhUXVlcmllcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVT
aGVldC5oCmluZGV4IGZjMTkzZmMuLjU1MzdjOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NTdHlsZVNoZWV0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hl
ZXQuaApAQCAtODYsNyArODYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhck93bmVyUnVsZSgp
IHsgbV9vd25lclJ1bGUgPSAwOyB9CiAgICAgRG9jdW1lbnQqIG93bmVyRG9jdW1lbnQoKSBjb25z
dDsKICAgICBNZWRpYVF1ZXJ5U2V0KiBtZWRpYVF1ZXJpZXMoKSBjb25zdCB7IHJldHVybiBtX21l
ZGlhUXVlcmllcy5nZXQoKTsgfQotICAgIHZvaWQgc2V0TWVkaWFRdWVyaWVzKFBhc3NSZWZQdHI8
TWVkaWFRdWVyeVNldD4pOworICAgIHZvaWQgc2V0TWVkaWFRdWVyaWVzKFJlZlB0cjxNZWRpYVF1
ZXJ5U2V0PiYmKTsKICAgICB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUpIHsgbV90
aXRsZSA9IHRpdGxlOyB9CiAKICAgICBib29sIGhhZFJ1bGVzTXV0YXRpb24oKSBjb25zdCB7IHJl
dHVybiBtX211dGF0ZWRSdWxlczsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1RpbWluZ0Z1bmN0aW9uVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NUaW1pbmdGdW5j
dGlvblZhbHVlLmgKaW5kZXggZGFjYjQ3My4uMmRmMjc5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1RpbWluZ0Z1bmN0aW9uVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZS5oCkBAIC0yNyw3ICsyNyw2IEBACiAjZGVmaW5lIENT
U1RpbWluZ0Z1bmN0aW9uVmFsdWVfaAogCiAjaW5jbHVkZSAiQ1NTVmFsdWUuaCIKLSNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NVbmljb2RlUmFuZ2VWYWx1ZS5oIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1VuaWNvZGVSYW5nZVZhbHVlLmgKaW5kZXggMjY0MzA4MS4uOGJhOWE4YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1VuaWNvZGVSYW5nZVZhbHVlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1VuaWNvZGVSYW5nZVZhbHVlLmgKQEAgLTI3LDcgKzI3LDYg
QEAKICNkZWZpbmUgQ1NTVW5pY29kZVJhbmdlVmFsdWVfaAogCiAjaW5jbHVkZSAiQ1NTVmFsdWUu
aCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1ZhbHVlTGlzdC5jcHAKaW5kZXggMzUxNDUwYy4uOWJmOTJhOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlTGlzdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1ZhbHVlTGlzdC5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgYm9vbCBDU1NW
YWx1ZUxpc3Q6Omhhc1ZhbHVlKENTU1ZhbHVlKiB2YWwpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCi1QYXNzUmVmUHRyPENTU1ZhbHVlTGlzdD4gQ1NTVmFsdWVMaXN0Ojpjb3B5KCkKK1Jl
ZlB0cjxDU1NWYWx1ZUxpc3Q+IENTU1ZhbHVlTGlzdDo6Y29weSgpCiB7CiAgICAgUmVmUHRyPENT
U1ZhbHVlTGlzdD4gbmV3TGlzdDsKICAgICBzd2l0Y2ggKG1fdmFsdWVMaXN0U2VwYXJhdG9yKSB7
CkBAIC05Miw3ICs5Miw3IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWVMaXN0PiBDU1NWYWx1ZUxpc3Q6
OmNvcHkoKQogICAgIH0KICAgICBmb3IgKGF1dG8mIHZhbHVlIDogbV92YWx1ZXMpCiAgICAgICAg
IG5ld0xpc3QtPmFwcGVuZCh2YWx1ZS5nZXQoKSk7Ci0gICAgcmV0dXJuIG5ld0xpc3QucmVsZWFz
ZSgpOworICAgIHJldHVybiBuZXdMaXN0OwogfQogCiBTdHJpbmcgQ1NTVmFsdWVMaXN0OjpjdXN0
b21DU1NUZXh0KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1
ZUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3QuaAppbmRleCA0YTIxZGY3
Li5mYjc4ZWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVMaXN0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlTGlzdC5oCkBAIC0yMiw3ICsyMiw2IEBA
CiAjZGVmaW5lIENTU1ZhbHVlTGlzdF9oCiAKICNpbmNsdWRlICJDU1NWYWx1ZS5oIgotI2luY2x1
ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC02Niw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHByZXBlbmQo
UmVmPENTU1ZhbHVlPiYmKTsKICAgICBib29sIHJlbW92ZUFsbChDU1NWYWx1ZSopOwogICAgIGJv
b2wgaGFzVmFsdWUoQ1NTVmFsdWUqKSBjb25zdDsKLSAgICBQYXNzUmVmUHRyPENTU1ZhbHVlTGlz
dD4gY29weSgpOworICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGNvcHkoKTsKIAogICAgIFN0cmlu
ZyBjdXN0b21DU1NUZXh0KCkgY29uc3Q7CiAgICAgYm9vbCBlcXVhbHMoY29uc3QgQ1NTVmFsdWVM
aXN0JikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVQb29s
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZVBvb2wuY3BwCmluZGV4IGFhMmE3ZDQu
LjFlMzZhYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZVBvb2wuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZVBvb2wuY3BwCkBAIC0xMzMsNyArMTMz
LDcgQEAgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBDU1NWYWx1ZVBvb2w6OmNyZWF0ZUZvbnRGYW1p
bHlWYWx1ZShjb25zdCBTdHJpbmcmIGZhbWlseU4KICAgICByZXR1cm4gKnZhbHVlOwogfQogCi1Q
YXNzUmVmUHRyPENTU1ZhbHVlTGlzdD4gQ1NTVmFsdWVQb29sOjpjcmVhdGVGb250RmFjZVZhbHVl
KGNvbnN0IEF0b21pY1N0cmluZyYgc3RyaW5nKQorUmVmUHRyPENTU1ZhbHVlTGlzdD4gQ1NTVmFs
dWVQb29sOjpjcmVhdGVGb250RmFjZVZhbHVlKGNvbnN0IEF0b21pY1N0cmluZyYgc3RyaW5nKQog
ewogICAgIC8vIFJlbW92ZSBvbmUgZW50cnkgYXQgcmFuZG9tIGlmIHRoZSBjYWNoZSBncm93cyB0
b28gbGFyZ2UuCiAgICAgY29uc3QgaW50IG1heGltdW1Gb250RmFjZUNhY2hlU2l6ZSA9IDEyODsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZVBvb2wuaCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NWYWx1ZVBvb2wuaAppbmRleCBiMmE5MDNlLi5mZmZhOGI5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVQb29sLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1ZhbHVlUG9vbC5oCkBAIC00OSw3ICs0OSw3IEBAIGNsYXNzIENTU1ZhbHVlUG9v
bCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIENTU1ZhbHVlUG9vbCYgc2luZ2xldG9uKCk7CiAKLSAg
ICBQYXNzUmVmUHRyPENTU1ZhbHVlTGlzdD4gY3JlYXRlRm9udEZhY2VWYWx1ZShjb25zdCBBdG9t
aWNTdHJpbmcmKTsKKyAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBjcmVhdGVGb250RmFjZVZhbHVl
KGNvbnN0IEF0b21pY1N0cmluZyYpOwogICAgIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gY3JlYXRl
Rm9udEZhbWlseVZhbHVlKGNvbnN0IFN0cmluZyYsIEZyb21TeXN0ZW1Gb250SUQgPSBGcm9tU3lz
dGVtRm9udElEOjpObyk7CiAgICAgUmVmPENTU0luaGVyaXRlZFZhbHVlPiBjcmVhdGVJbmhlcml0
ZWRWYWx1ZSgpIHsgcmV0dXJuIG1faW5oZXJpdGVkVmFsdWUuY29weVJlZigpOyB9CiAgICAgUmVm
PENTU0luaXRpYWxWYWx1ZT4gY3JlYXRlSW1wbGljaXRJbml0aWFsVmFsdWUoKSB7IHJldHVybiBt
X2ltcGxpY2l0SW5pdGlhbFZhbHVlLmNvcHlSZWYoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0NvdW50ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Db3VudGVyLmgKaW5kZXgg
OThhOGFiYy4uMTU2YTdhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NvdW50ZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ291bnRlci5oCkBAIC0yOCw5ICsyOCw5IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ291bnRlciA6IHB1YmxpYyBSZWZDb3VudGVkPENv
dW50ZXI+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPENvdW50ZXI+IGNyZWF0ZShQYXNzUmVm
UHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBpZGVudGlmaWVyLCBQYXNzUmVmUHRyPENTU1ByaW1pdGl2
ZVZhbHVlPiBsaXN0U3R5bGUsIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHNlcGFyYXRv
cikKKyAgICBzdGF0aWMgUmVmPENvdW50ZXI+IGNyZWF0ZShSZWZQdHI8Q1NTUHJpbWl0aXZlVmFs
dWU+JiYgaWRlbnRpZmllciwgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiYmIGxpc3RTdHlsZSwg
UmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiYmIHNlcGFyYXRvcikKICAgICB7Ci0gICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IENvdW50ZXIoaWRlbnRpZmllciwgbGlzdFN0eWxlLCBzZXBhcmF0
b3IpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ291bnRlcihXVEY6Om1vdmUoaWRl
bnRpZmllciksIFdURjo6bW92ZShsaXN0U3R5bGUpLCBXVEY6Om1vdmUoc2VwYXJhdG9yKSkpOwog
ICAgIH0KIAogICAgIFN0cmluZyBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlm
aWVyID8gbV9pZGVudGlmaWVyLT5nZXRTdHJpbmdWYWx1ZSgpIDogU3RyaW5nKCk7IH0KQEAgLTM5
LDkgKzM5LDkgQEAgcHVibGljOgogCiAgICAgQ1NTVmFsdWVJRCBsaXN0U3R5bGVJZGVudCgpIGNv
bnN0IHsgcmV0dXJuIG1fbGlzdFN0eWxlID8gbV9saXN0U3R5bGUtPmdldFZhbHVlSUQoKSA6IENT
U1ZhbHVlSW52YWxpZDsgfQogCi0gICAgdm9pZCBzZXRJZGVudGlmaWVyKFBhc3NSZWZQdHI8Q1NT
UHJpbWl0aXZlVmFsdWU+IGlkZW50aWZpZXIpIHsgbV9pZGVudGlmaWVyID0gaWRlbnRpZmllcjsg
fQotICAgIHZvaWQgc2V0TGlzdFN0eWxlKFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGxp
c3RTdHlsZSkgeyBtX2xpc3RTdHlsZSA9IGxpc3RTdHlsZTsgfQotICAgIHZvaWQgc2V0U2VwYXJh
dG9yKFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHNlcGFyYXRvcikgeyBtX3NlcGFyYXRv
ciA9IHNlcGFyYXRvcjsgfQorICAgIHZvaWQgc2V0SWRlbnRpZmllcihSZWZQdHI8Q1NTUHJpbWl0
aXZlVmFsdWU+JiYgaWRlbnRpZmllcikgeyBtX2lkZW50aWZpZXIgPSBpZGVudGlmaWVyOyB9Cisg
ICAgdm9pZCBzZXRMaXN0U3R5bGUoUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiYmIGxpc3RTdHls
ZSkgeyBtX2xpc3RTdHlsZSA9IGxpc3RTdHlsZTsgfQorICAgIHZvaWQgc2V0U2VwYXJhdG9yKFJl
ZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4mJiBzZXBhcmF0b3IpIHsgbV9zZXBhcmF0b3IgPSBzZXBh
cmF0b3I7IH0KIAogICAgIGJvb2wgZXF1YWxzKGNvbnN0IENvdW50ZXImIG90aGVyKSBjb25zdAog
ICAgIHsKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBD
b3VudGVyKFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGlkZW50aWZpZXIsIFBhc3NSZWZQ
dHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGxpc3RTdHlsZSwgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVW
YWx1ZT4gc2VwYXJhdG9yKQorICAgIENvdW50ZXIoUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiYm
IGlkZW50aWZpZXIsIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4mJiBsaXN0U3R5bGUsIFJlZlB0
cjxDU1NQcmltaXRpdmVWYWx1ZT4mJiBzZXBhcmF0b3IpCiAgICAgICAgIDogbV9pZGVudGlmaWVy
KGlkZW50aWZpZXIpCiAgICAgICAgICwgbV9saXN0U3R5bGUobGlzdFN0eWxlKQogICAgICAgICAs
IG1fc2VwYXJhdG9yKHNlcGFyYXRvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9G
b250TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250TG9hZGVyLmNwcAppbmRleCBm
ZDU1YTllLi4yNjRiNWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udExvYWRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRMb2FkZXIuY3BwCkBAIC00OCwxMiAr
NDgsMTIgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IGRlZmF1bHRGb250RmFtaWx5ID0gInNh
bnMtc2VyaWYiOwogCiBjbGFzcyBMb2FkRm9udENhbGxiYWNrIDogcHVibGljIENTU1NlZ21lbnRl
ZEZvbnRGYWNlOjpMb2FkRm9udENhbGxiYWNrIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPExv
YWRGb250Q2FsbGJhY2s+IGNyZWF0ZShpbnQgbnVtTG9hZGluZywgRm9udExvYWRlciYgZm9udExv
YWRlciwgUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IGxvYWRDYWxsYmFjaywgUGFzc1JlZlB0cjxW
b2lkQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCisgICAgc3RhdGljIFJlZjxMb2FkRm9udENhbGxi
YWNrPiBjcmVhdGUoaW50IG51bUxvYWRpbmcsIEZvbnRMb2FkZXImIGZvbnRMb2FkZXIsIFJlZlB0
cjxWb2lkQ2FsbGJhY2s+JiYgbG9hZENhbGxiYWNrLCBSZWZQdHI8Vm9pZENhbGxiYWNrPiYmIGVy
cm9yQ2FsbGJhY2spCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBMb2FkRm9u
dENhbGxiYWNrKG51bUxvYWRpbmcsIGZvbnRMb2FkZXIsIGxvYWRDYWxsYmFjaywgZXJyb3JDYWxs
YmFjaykpOwogICAgIH0KIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPExvYWRGb250Q2FsbGJhY2s+
IGNyZWF0ZUZyb21QYXJhbXMoY29uc3QgRGljdGlvbmFyeSYgcGFyYW1zLCBGb250TG9hZGVyJiBm
b250TG9hZGVyLCBjb25zdCBGb250Q2FzY2FkZSYgZm9udCkKKyAgICBzdGF0aWMgUmVmUHRyPExv
YWRGb250Q2FsbGJhY2s+IGNyZWF0ZUZyb21QYXJhbXMoY29uc3QgRGljdGlvbmFyeSYgcGFyYW1z
LCBGb250TG9hZGVyJiBmb250TG9hZGVyLCBjb25zdCBGb250Q2FzY2FkZSYgZm9udCkKICAgICB7
CiAgICAgICAgIFJlZlB0cjxWb2lkQ2FsbGJhY2s+IG9uc3VjY2VzczsKICAgICAgICAgUmVmUHRy
PFZvaWRDYWxsYmFjaz4gb25lcnJvcjsKQEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgogICAgIGlu
dCBmYW1pbHlDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fZmFtaWx5Q291bnQ7IH0KIAogcHJpdmF0
ZToKLSAgICBMb2FkRm9udENhbGxiYWNrKGludCBudW1Mb2FkaW5nLCBGb250TG9hZGVyJiBmb250
TG9hZGVyLCBQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4gbG9hZENhbGxiYWNrLCBQYXNzUmVmUHRy
PFZvaWRDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKKyAgICBMb2FkRm9udENhbGxiYWNrKGludCBu
dW1Mb2FkaW5nLCBGb250TG9hZGVyJiBmb250TG9hZGVyLCBSZWZQdHI8Vm9pZENhbGxiYWNrPiYm
IGxvYWRDYWxsYmFjaywgUmVmUHRyPFZvaWRDYWxsYmFjaz4mJiBlcnJvckNhbGxiYWNrKQogICAg
ICAgICA6IG1fZmFtaWx5Q291bnQobnVtTG9hZGluZykKICAgICAgICAgLCBtX251bUxvYWRpbmco
bnVtTG9hZGluZykKICAgICAgICAgLCBtX2Vycm9yT2NjdXJlZChmYWxzZSkKQEAgLTE2Niw3ICsx
NjYsNyBAQCBib29sIEZvbnRMb2FkZXI6OmNhblN1c3BlbmRGb3JQYWdlQ2FjaGUoKSBjb25zdAog
ICAgIHJldHVybiAhbV9udW1Mb2FkaW5nRnJvbUNTUyAmJiAhbV9udW1Mb2FkaW5nRnJvbUpTOwog
fQogCi12b2lkIEZvbnRMb2FkZXI6OnNjaGVkdWxlRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZl
bnQpCit2b2lkIEZvbnRMb2FkZXI6OnNjaGVkdWxlRXZlbnQoUmVmUHRyPEV2ZW50PiYmIGV2ZW50
KQogewogICAgIG1fcGVuZGluZ0V2ZW50cy5hcHBlbmQoZXZlbnQpOwogICAgIGlmICghbV9wZW5k
aW5nRXZlbnRzVGltZXIuaXNBY3RpdmUoKSkKQEAgLTIyOCw3ICsyMjgsNyBAQCB2b2lkIEZvbnRM
b2FkZXI6OmxvYWRFcnJvcihDU1NGb250RmFjZVJ1bGUqIHJ1bGUsIENTU0ZvbnRGYWNlU291cmNl
KiBzb3VyY2UpCiAgICAgICAgIG1fbG9hZGluZ0RvbmVFdmVudCA9IENTU0ZvbnRGYWNlTG9hZEV2
ZW50OjpjcmVhdGVGb3JGb250RmFjZVJ1bGUoZXZlbnROYW1lcygpLmxvYWRpbmdkb25lRXZlbnQs
IHJ1bGUpOwogfQogCi12b2lkIEZvbnRMb2FkZXI6Om5vdGlmeVdoZW5Gb250c1JlYWR5KFBhc3NS
ZWZQdHI8Vm9pZENhbGxiYWNrPiBjYWxsYmFjaykKK3ZvaWQgRm9udExvYWRlcjo6bm90aWZ5V2hl
bkZvbnRzUmVhZHkoUmVmUHRyPFZvaWRDYWxsYmFjaz4mJiBjYWxsYmFjaykKIHsKICAgICBtX2Nh
bGxiYWNrcy5hcHBlbmQoY2FsbGJhY2spOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0ZvbnRMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250TG9hZGVyLmgKaW5kZXgg
ZGZjNTAxYS4uYWVlNGRhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRMb2Fk
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udExvYWRlci5oCkBAIC0zMyw3ICszMyw2
IEBACiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1
ZGUgIlZvaWRDYWxsYmFjay5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKQEAgLTYxLDcg
KzYwLDcgQEAgcHVibGljOgogICAgIHZvaWQgbG9hZEZvbnQoY29uc3QgRGljdGlvbmFyeSYpOwog
ICAgIHZvaWQgbG9hZEZvbnREb25lKGNvbnN0IExvYWRGb250Q2FsbGJhY2smKTsKIAotICAgIHZv
aWQgbm90aWZ5V2hlbkZvbnRzUmVhZHkoUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+KTsKKyAgICB2
b2lkIG5vdGlmeVdoZW5Gb250c1JlYWR5KFJlZlB0cjxWb2lkQ2FsbGJhY2s+JiYpOwogCiAgICAg
Ym9vbCBsb2FkaW5nKCkgY29uc3QgeyByZXR1cm4gbV9udW1Mb2FkaW5nRnJvbUNTUyA+IDAgfHwg
bV9udW1Mb2FkaW5nRnJvbUpTID4gMDsgfQogCkBAIC05MSw3ICs5MCw3IEBAIHByaXZhdGU6CiAg
ICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IG92ZXJyaWRlOwogICAg
IGJvb2wgY2FuU3VzcGVuZEZvclBhZ2VDYWNoZSgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdm9p
ZCBzY2hlZHVsZUV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+KTsKKyAgICB2b2lkIHNjaGVkdWxlRXZl
bnQoUmVmUHRyPEV2ZW50PiYmKTsKICAgICB2b2lkIGZpcmVQZW5kaW5nRXZlbnRzKCk7CiAgICAg
Ym9vbCByZXNvbHZlRm9udFN0eWxlKGNvbnN0IFN0cmluZyYsIEZvbnRDYXNjYWRlJik7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9MZW5ndGhSZXBlYXQuaCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9MZW5ndGhSZXBlYXQuaAppbmRleCBiMTFmMDZiLi5lYmNhZjUyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvTGVuZ3RoUmVwZWF0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0xlbmd0aFJlcGVhdC5oCkBAIC0zNiwxMyArMzYsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBMZW5ndGhSZXBlYXQgOiBwdWJsaWMgUmVmQ291bnRlZDxMZW5ndGhSZXBlYXQ+
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPExlbmd0aFJlcGVhdD4gY3JlYXRlKFBhc3NSZWZQ
dHI8Q1NTVmFsdWU+IGludGVydmFsKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IExlbmd0aFJlcGVh
dChpbnRlcnZhbCkpOyB9CisgICAgc3RhdGljIFJlZjxMZW5ndGhSZXBlYXQ+IGNyZWF0ZShSZWZQ
dHI8Q1NTVmFsdWU+JiYgaW50ZXJ2YWwpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTGVuZ3RoUmVw
ZWF0KGludGVydmFsKSk7IH0KIAogICAgIFJlZjxMZW5ndGhSZXBlYXQ+IGNsb25lRm9yQ1NTT00o
KSBjb25zdCB7IHJldHVybiBjcmVhdGUoaW50ZXJ2YWwoKSk7IH0KIAogICAgIENTU1ZhbHVlKiBp
bnRlcnZhbCgpIGNvbnN0IHsgcmV0dXJuIG1faW50ZXJ2YWwuZ2V0KCk7IH0KIAotICAgIHZvaWQg
c2V0SW50ZXJ2YWwoUGFzc1JlZlB0cjxDU1NWYWx1ZT4gaW50ZXJ2YWwpIHsgbV9pbnRlcnZhbCA9
IGludGVydmFsOyB9CisgICAgdm9pZCBzZXRJbnRlcnZhbChSZWZQdHI8Q1NTVmFsdWU+JiYgaW50
ZXJ2YWwpIHsgbV9pbnRlcnZhbCA9IGludGVydmFsOyB9CiAKICAgICBib29sIGVxdWFscyhjb25z
dCBMZW5ndGhSZXBlYXQmIG90aGVyKSBjb25zdAogICAgIHsKQEAgLTU1LDcgKzU1LDcgQEAgcHVi
bGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBMZW5ndGhSZXBlYXQoUGFzc1JlZlB0cjxDU1NW
YWx1ZT4gaW50ZXJ2YWwpCisgICAgTGVuZ3RoUmVwZWF0KFJlZlB0cjxDU1NWYWx1ZT4mJiBpbnRl
cnZhbCkKICAgICAgICAgOiBtX2ludGVydmFsKGludGVydmFsKQogICAgIHsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvTWVkaWFMaXN0LmgKaW5kZXggNzMxMDM0MC4uMjdmMGJhZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL01lZGlhTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYUxp
c3QuaApAQCAtMjQsNyArMjQsNiBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNs
dWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvUGFz
c1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9N
ZWRpYVF1ZXJ5TGlzdC5jcHAKaW5kZXggN2I0ZmQwMi4uYzM0NTAzOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvTWVkaWFRdWVyeUxpc3QuY3BwCkBAIC0yNywxMiArMjcsMTIgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1SZWY8TWVkaWFRdWVyeUxpc3Q+IE1lZGlhUXVlcnlMaXN0OjpjcmVhdGUoUGFz
c1JlZlB0cjxNZWRpYVF1ZXJ5TWF0Y2hlcj4gdmVjdG9yLCBQYXNzUmVmUHRyPE1lZGlhUXVlcnlT
ZXQ+IG1lZGlhLCBib29sIG1hdGNoZXMpCitSZWY8TWVkaWFRdWVyeUxpc3Q+IE1lZGlhUXVlcnlM
aXN0OjpjcmVhdGUoUmVmUHRyPE1lZGlhUXVlcnlNYXRjaGVyPiYmIHZlY3RvciwgUmVmUHRyPE1l
ZGlhUXVlcnlTZXQ+JiYgbWVkaWEsIGJvb2wgbWF0Y2hlcykKIHsKLSAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBNZWRpYVF1ZXJ5TGlzdCh2ZWN0b3IsIG1lZGlhLCBtYXRjaGVzKSk7CisgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFRdWVyeUxpc3QoV1RGOjptb3ZlKHZlY3RvciksIFdURjo6
bW92ZShtZWRpYSksIG1hdGNoZXMpKTsKIH0KIAotTWVkaWFRdWVyeUxpc3Q6Ok1lZGlhUXVlcnlM
aXN0KFBhc3NSZWZQdHI8TWVkaWFRdWVyeU1hdGNoZXI+IHZlY3RvciwgUGFzc1JlZlB0cjxNZWRp
YVF1ZXJ5U2V0PiBtZWRpYSwgYm9vbCBtYXRjaGVzKQorTWVkaWFRdWVyeUxpc3Q6Ok1lZGlhUXVl
cnlMaXN0KFJlZlB0cjxNZWRpYVF1ZXJ5TWF0Y2hlcj4mJiB2ZWN0b3IsIFJlZlB0cjxNZWRpYVF1
ZXJ5U2V0PiYmIG1lZGlhLCBib29sIG1hdGNoZXMpCiAgICAgOiBtX21hdGNoZXIodmVjdG9yKQog
ICAgICwgbV9tZWRpYShtZWRpYSkKICAgICAsIG1fZXZhbHVhdGlvblJvdW5kKG1fbWF0Y2hlci0+
ZXZhbHVhdGlvblJvdW5kKCkpCkBAIC01MCw3ICs1MCw3IEBAIFN0cmluZyBNZWRpYVF1ZXJ5TGlz
dDo6bWVkaWEoKSBjb25zdAogICAgIHJldHVybiBtX21lZGlhLT5tZWRpYVRleHQoKTsKIH0KIAot
dm9pZCBNZWRpYVF1ZXJ5TGlzdDo6YWRkTGlzdGVuZXIoUGFzc1JlZlB0cjxNZWRpYVF1ZXJ5TGlz
dExpc3RlbmVyPiBsaXN0ZW5lcikKK3ZvaWQgTWVkaWFRdWVyeUxpc3Q6OmFkZExpc3RlbmVyKFJl
ZlB0cjxNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyPiYmIGxpc3RlbmVyKQogewogICAgIGlmICghbGlz
dGVuZXIpCiAgICAgICAgIHJldHVybjsKQEAgLTU4LDcgKzU4LDcgQEAgdm9pZCBNZWRpYVF1ZXJ5
TGlzdDo6YWRkTGlzdGVuZXIoUGFzc1JlZlB0cjxNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyPiBsaXN0
ZW5lcikKICAgICBtX21hdGNoZXItPmFkZExpc3RlbmVyKGxpc3RlbmVyLCB0aGlzKTsKIH0KIAot
dm9pZCBNZWRpYVF1ZXJ5TGlzdDo6cmVtb3ZlTGlzdGVuZXIoUGFzc1JlZlB0cjxNZWRpYVF1ZXJ5
TGlzdExpc3RlbmVyPiBsaXN0ZW5lcikKK3ZvaWQgTWVkaWFRdWVyeUxpc3Q6OnJlbW92ZUxpc3Rl
bmVyKFJlZlB0cjxNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyPiYmIGxpc3RlbmVyKQogewogICAgIGlm
ICghbGlzdGVuZXIpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9NZWRpYVF1ZXJ5TGlzdC5oIGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlMaXN0
LmgKaW5kZXggNjlhZmE3Ni4uOTU4NmM4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L01lZGlhUXVlcnlMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlMaXN0
LmgKQEAgLTM4LDE5ICszOCwxOSBAQCBjbGFzcyBNZWRpYVF1ZXJ5U2V0OwogCiBjbGFzcyBNZWRp
YVF1ZXJ5TGlzdCA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhUXVlcnlMaXN0PiB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFJlZjxNZWRpYVF1ZXJ5TGlzdD4gY3JlYXRlKFBhc3NSZWZQdHI8TWVkaWFR
dWVyeU1hdGNoZXI+LCBQYXNzUmVmUHRyPE1lZGlhUXVlcnlTZXQ+LCBib29sKTsKKyAgICBzdGF0
aWMgUmVmPE1lZGlhUXVlcnlMaXN0PiBjcmVhdGUoUmVmUHRyPE1lZGlhUXVlcnlNYXRjaGVyPiYm
LCBSZWZQdHI8TWVkaWFRdWVyeVNldD4mJiwgYm9vbCk7CiAgICAgfk1lZGlhUXVlcnlMaXN0KCk7
CiAKICAgICBTdHJpbmcgbWVkaWEoKSBjb25zdDsKICAgICBib29sIG1hdGNoZXMoKTsKIAotICAg
IHZvaWQgYWRkTGlzdGVuZXIoUGFzc1JlZlB0cjxNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyPik7Ci0g
ICAgdm9pZCByZW1vdmVMaXN0ZW5lcihQYXNzUmVmUHRyPE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI+
KTsKKyAgICB2b2lkIGFkZExpc3RlbmVyKFJlZlB0cjxNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyPiYm
KTsKKyAgICB2b2lkIHJlbW92ZUxpc3RlbmVyKFJlZlB0cjxNZWRpYVF1ZXJ5TGlzdExpc3RlbmVy
PiYmKTsKIAogICAgIHZvaWQgZXZhbHVhdGUoTWVkaWFRdWVyeUV2YWx1YXRvciosIGJvb2wmIG5v
dGlmaWNhdGlvbk5lZWRlZCk7CiAKIHByaXZhdGU6Ci0gICAgTWVkaWFRdWVyeUxpc3QoUGFzc1Jl
ZlB0cjxNZWRpYVF1ZXJ5TWF0Y2hlcj4sIFBhc3NSZWZQdHI8TWVkaWFRdWVyeVNldD4sIGJvb2wg
bWF0Y2hlcyk7CisgICAgTWVkaWFRdWVyeUxpc3QoUmVmUHRyPE1lZGlhUXVlcnlNYXRjaGVyPiYm
LCBSZWZQdHI8TWVkaWFRdWVyeVNldD4mJiwgYm9vbCBtYXRjaGVzKTsKICAgICB2b2lkIHNldE1h
dGNoZXMoYm9vbCk7CiAKICAgICBSZWZQdHI8TWVkaWFRdWVyeU1hdGNoZXI+IG1fbWF0Y2hlcjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5TWF0Y2hlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeU1hdGNoZXIuY3BwCmluZGV4IDRkZTk2MGIuLjE1
YTk0NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5TWF0Y2hlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlNYXRjaGVyLmNwcApAQCAtMzMs
NyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLU1lZGlhUXVlcnlNYXRjaGVyOjpM
aXN0ZW5lcjo6TGlzdGVuZXIoUGFzc1JlZlB0cjxNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyPiBsaXN0
ZW5lciwgUGFzc1JlZlB0cjxNZWRpYVF1ZXJ5TGlzdD4gcXVlcnkpCitNZWRpYVF1ZXJ5TWF0Y2hl
cjo6TGlzdGVuZXI6Okxpc3RlbmVyKFJlZlB0cjxNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyPiYmIGxp
c3RlbmVyLCBSZWZQdHI8TWVkaWFRdWVyeUxpc3Q+JiYgcXVlcnkpCiAgICAgOiBtX2xpc3RlbmVy
KGxpc3RlbmVyKQogICAgICwgbV9xdWVyeShxdWVyeSkKIHsKQEAgLTExMiw3ICsxMTIsNyBAQCBS
ZWZQdHI8TWVkaWFRdWVyeUxpc3Q+IE1lZGlhUXVlcnlNYXRjaGVyOjptYXRjaE1lZGlhKGNvbnN0
IFN0cmluZyYgcXVlcnkpCiAgICAgcmV0dXJuIE1lZGlhUXVlcnlMaXN0OjpjcmVhdGUodGhpcywg
bWVkaWEsIGV2YWx1YXRlKG1lZGlhLmdldCgpKSk7CiB9CiAKLXZvaWQgTWVkaWFRdWVyeU1hdGNo
ZXI6OmFkZExpc3RlbmVyKFBhc3NSZWZQdHI8TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcj4gbGlzdGVu
ZXIsIFBhc3NSZWZQdHI8TWVkaWFRdWVyeUxpc3Q+IHF1ZXJ5KQordm9pZCBNZWRpYVF1ZXJ5TWF0
Y2hlcjo6YWRkTGlzdGVuZXIoUmVmUHRyPE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI+JiYgbGlzdGVu
ZXIsIFJlZlB0cjxNZWRpYVF1ZXJ5TGlzdD4mJiBxdWVyeSkKIHsKICAgICBpZiAoIW1fZG9jdW1l
bnQpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRp
YVF1ZXJ5TWF0Y2hlci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlNYXRjaGVyLmgK
aW5kZXggOGRhYzE3Mi4uMWFiYTYyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL01l
ZGlhUXVlcnlNYXRjaGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlNYXRj
aGVyLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogICAgIH5NZWRpYVF1ZXJ5TWF0Y2hlcigp
OwogICAgIHZvaWQgZG9jdW1lbnREZXN0cm95ZWQoKTsKIAotICAgIHZvaWQgYWRkTGlzdGVuZXIo
UGFzc1JlZlB0cjxNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyPiwgUGFzc1JlZlB0cjxNZWRpYVF1ZXJ5
TGlzdD4pOworICAgIHZvaWQgYWRkTGlzdGVuZXIoUmVmUHRyPE1lZGlhUXVlcnlMaXN0TGlzdGVu
ZXI+JiYsIFJlZlB0cjxNZWRpYVF1ZXJ5TGlzdD4mJik7CiAgICAgdm9pZCByZW1vdmVMaXN0ZW5l
cihNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKiwgTWVkaWFRdWVyeUxpc3QqKTsKIAogICAgIFJlZlB0
cjxNZWRpYVF1ZXJ5TGlzdD4gbWF0Y2hNZWRpYShjb25zdCBTdHJpbmcmKTsKQEAgLTU2LDcgKzU2
LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBjbGFzcyBMaXN0ZW5lciB7CiAgICAgcHVibGlj
OgotICAgICAgICBMaXN0ZW5lcihQYXNzUmVmUHRyPE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI+LCBQ
YXNzUmVmUHRyPE1lZGlhUXVlcnlMaXN0Pik7CisgICAgICAgIExpc3RlbmVyKFJlZlB0cjxNZWRp
YVF1ZXJ5TGlzdExpc3RlbmVyPiYmLCBSZWZQdHI8TWVkaWFRdWVyeUxpc3Q+JiYpOwogICAgICAg
ICB+TGlzdGVuZXIoKTsKIAogICAgICAgICB2b2lkIGV2YWx1YXRlKE1lZGlhUXVlcnlFdmFsdWF0
b3IqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9QYWlyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvUGFpci5oCmluZGV4IGUzNmViZjEuLmZlNDBiNDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9QYWlyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1BhaXIuaApAQCAt
MjMsNyArMjMsNiBAQAogCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlICJD
U1NQcmltaXRpdmVWYWx1ZS5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUmVjdC5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1Jl
Y3QuaAppbmRleCBkZDljZDA0Li4xN2U3YTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvUmVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9SZWN0LmgKQEAgLTM0LDEwICszNCwx
MCBAQCBwdWJsaWM6CiAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGJvdHRvbSgpIGNvbnN0IHsgcmV0
dXJuIG1fYm90dG9tLmdldCgpOyB9CiAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGxlZnQoKSBjb25z
dCB7IHJldHVybiBtX2xlZnQuZ2V0KCk7IH0KIAotICAgIHZvaWQgc2V0VG9wKFBhc3NSZWZQdHI8
Q1NTUHJpbWl0aXZlVmFsdWU+IHRvcCkgeyBtX3RvcCA9IHRvcDsgfQotICAgIHZvaWQgc2V0Umln
aHQoUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcmlnaHQpIHsgbV9yaWdodCA9IHJpZ2h0
OyB9Ci0gICAgdm9pZCBzZXRCb3R0b20oUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gYm90
dG9tKSB7IG1fYm90dG9tID0gYm90dG9tOyB9Ci0gICAgdm9pZCBzZXRMZWZ0KFBhc3NSZWZQdHI8
Q1NTUHJpbWl0aXZlVmFsdWU+IGxlZnQpIHsgbV9sZWZ0ID0gbGVmdDsgfQorICAgIHZvaWQgc2V0
VG9wKFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4mJiB0b3ApIHsgbV90b3AgPSB0b3A7IH0KKyAg
ICB2b2lkIHNldFJpZ2h0KFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4mJiByaWdodCkgeyBtX3Jp
Z2h0ID0gcmlnaHQ7IH0KKyAgICB2b2lkIHNldEJvdHRvbShSZWZQdHI8Q1NTUHJpbWl0aXZlVmFs
dWU+JiYgYm90dG9tKSB7IG1fYm90dG9tID0gYm90dG9tOyB9CisgICAgdm9pZCBzZXRMZWZ0KFJl
ZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4mJiBsZWZ0KSB7IG1fbGVmdCA9IGxlZnQ7IH0KIAogICAg
IGJvb2wgZXF1YWxzKGNvbnN0IFJlY3RCYXNlJiBvdGhlcikgY29uc3QKICAgICB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TVkdDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3Bw
CmluZGV4IDhhOTBjOGEuLjdhMDk5YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
VkdDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TVkdDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCkBAIC05Myw3ICs5Myw3IEBAIHN0
YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IHN0cm9rZURhc2hBcnJheVRvQ1NTVmFsdWVMaXN0KGNvbnN0
IFZlY3RvcjxTVkdMZW5ndGg+JiBkCiAgICAgcmV0dXJuIGxpc3Q7CiB9CiAKLVJlZlB0cjxTVkdQ
YWludD4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6YWRqdXN0U1ZHUGFpbnRGb3JDdXJyZW50Q29s
b3IoUGFzc1JlZlB0cjxTVkdQYWludD4gbmV3UGFpbnQsIFJlbmRlclN0eWxlKiBzdHlsZSkgY29u
c3QKK1JlZlB0cjxTVkdQYWludD4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6YWRqdXN0U1ZHUGFp
bnRGb3JDdXJyZW50Q29sb3IoUmVmUHRyPFNWR1BhaW50PiYmIG5ld1BhaW50LCBSZW5kZXJTdHls
ZSogc3R5bGUpIGNvbnN0CiB7CiAgICAgUmVmUHRyPFNWR1BhaW50PiBwYWludCA9IG5ld1BhaW50
OwogICAgIGlmIChwYWludC0+cGFpbnRUeXBlKCkgPT0gU1ZHUGFpbnQ6OlNWR19QQUlOVFRZUEVf
Q1VSUkVOVENPTE9SIHx8IHBhaW50LT5wYWludFR5cGUoKSA9PSBTVkdQYWludDo6U1ZHX1BBSU5U
VFlQRV9VUklfQ1VSUkVOVENPTE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlQnVpbGRlckNvbnZlcnRlci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckNv
bnZlcnRlci5oCmluZGV4IGViMDNmYjAuLjRmN2Q3YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVCdWlsZGVyQ29udmVydGVyLmgKQEAgLTcwLDI1ICs3MCwyNSBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIHNob3J0IGNvbnZlcnRXZWJraXRIeXBoZW5hdGVMaW1pdExpbmVzKFN0eWxlUmVzb2x2
ZXImLCBDU1NWYWx1ZSYpOwogICAgIHRlbXBsYXRlIDxDU1NQcm9wZXJ0eUlEIHByb3BlcnR5PiBz
dGF0aWMgTmluZVBpZWNlSW1hZ2UgY29udmVydEJvcmRlckltYWdlKFN0eWxlUmVzb2x2ZXImLCBD
U1NWYWx1ZSYpOwogICAgIHRlbXBsYXRlIDxDU1NQcm9wZXJ0eUlEIHByb3BlcnR5PiBzdGF0aWMg
TmluZVBpZWNlSW1hZ2UgY29udmVydEJvcmRlck1hc2soU3R5bGVSZXNvbHZlciYsIENTU1ZhbHVl
Jik7Ci0gICAgdGVtcGxhdGUgPENTU1Byb3BlcnR5SUQgcHJvcGVydHk+IHN0YXRpYyBQYXNzUmVm
UHRyPFN0eWxlSW1hZ2U+IGNvbnZlcnRTdHlsZUltYWdlKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1
ZSYpOworICAgIHRlbXBsYXRlIDxDU1NQcm9wZXJ0eUlEIHByb3BlcnR5PiBzdGF0aWMgUmVmUHRy
PFN0eWxlSW1hZ2U+IGNvbnZlcnRTdHlsZUltYWdlKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYp
OwogICAgIHN0YXRpYyBUcmFuc2Zvcm1PcGVyYXRpb25zIGNvbnZlcnRUcmFuc2Zvcm0oU3R5bGVS
ZXNvbHZlciYsIENTU1ZhbHVlJik7CiAgICAgc3RhdGljIFN0cmluZyBjb252ZXJ0U3RyaW5nKFN0
eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYpOwogICAgIHN0YXRpYyBTdHJpbmcgY29udmVydFN0cmlu
Z09yQXV0byhTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmKTsKICAgICBzdGF0aWMgU3RyaW5nIGNv
bnZlcnRTdHJpbmdPck5vbmUoU3R5bGVSZXNvbHZlciYsIENTU1ZhbHVlJik7CiAgICAgc3RhdGlj
IFRleHRFbXBoYXNpc1Bvc2l0aW9uIGNvbnZlcnRUZXh0RW1waGFzaXNQb3NpdGlvbihTdHlsZVJl
c29sdmVyJiwgQ1NTVmFsdWUmKTsKICAgICBzdGF0aWMgRVRleHRBbGlnbiBjb252ZXJ0VGV4dEFs
aWduKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYpOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPENs
aXBQYXRoT3BlcmF0aW9uPiBjb252ZXJ0Q2xpcFBhdGgoU3R5bGVSZXNvbHZlciYsIENTU1ZhbHVl
Jik7CisgICAgc3RhdGljIFJlZlB0cjxDbGlwUGF0aE9wZXJhdGlvbj4gY29udmVydENsaXBQYXRo
KFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYpOwogICAgIHN0YXRpYyBFUmVzaXplIGNvbnZlcnRS
ZXNpemUoU3R5bGVSZXNvbHZlciYsIENTU1ZhbHVlJik7CiAgICAgc3RhdGljIGludCBjb252ZXJ0
TWFycXVlZVJlcGV0aXRpb24oU3R5bGVSZXNvbHZlciYsIENTU1ZhbHVlJik7CiAgICAgc3RhdGlj
IGludCBjb252ZXJ0TWFycXVlZVNwZWVkKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYpOwotICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFF1b3Rlc0RhdGE+IGNvbnZlcnRRdW90ZXMoU3R5bGVSZXNvbHZl
ciYsIENTU1ZhbHVlJik7CisgICAgc3RhdGljIFJlZlB0cjxRdW90ZXNEYXRhPiBjb252ZXJ0UXVv
dGVzKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYpOwogICAgIHN0YXRpYyBUZXh0VW5kZXJsaW5l
UG9zaXRpb24gY29udmVydFRleHRVbmRlcmxpbmVQb3NpdGlvbihTdHlsZVJlc29sdmVyJiwgQ1NT
VmFsdWUmKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHlsZVJlZmxlY3Rpb24+IGNvbnZlcnRS
ZWZsZWN0aW9uKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYpOworICAgIHN0YXRpYyBSZWZQdHI8
U3R5bGVSZWZsZWN0aW9uPiBjb252ZXJ0UmVmbGVjdGlvbihTdHlsZVJlc29sdmVyJiwgQ1NTVmFs
dWUmKTsKICAgICBzdGF0aWMgSW50U2l6ZSBjb252ZXJ0SW5pdGlhbExldHRlcihTdHlsZVJlc29s
dmVyJiwgQ1NTVmFsdWUmKTsKICAgICBzdGF0aWMgZmxvYXQgY29udmVydFRleHRTdHJva2VXaWR0
aChTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmKTsKICAgICBzdGF0aWMgTGluZUJveENvbnRhaW4g
Y29udmVydExpbmVCb3hDb250YWluKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYpOwogICAgIHN0
YXRpYyBUZXh0RGVjb3JhdGlvblNraXAgY29udmVydFRleHREZWNvcmF0aW9uU2tpcChTdHlsZVJl
c29sdmVyJiwgQ1NTVmFsdWUmKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTaGFwZVZhbHVlPiBj
b252ZXJ0U2hhcGVWYWx1ZShTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmKTsKKyAgICBzdGF0aWMg
UmVmUHRyPFNoYXBlVmFsdWU+IGNvbnZlcnRTaGFwZVZhbHVlKFN0eWxlUmVzb2x2ZXImLCBDU1NW
YWx1ZSYpOwogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCiAgICAgc3RhdGljIHN0ZDo6dW5p
cXVlX3B0cjxTY3JvbGxTbmFwUG9pbnRzPiBjb252ZXJ0U2Nyb2xsU25hcFBvaW50cyhTdHlsZVJl
c29sdmVyJiwgQ1NTVmFsdWUmKTsKICAgICBzdGF0aWMgTGVuZ3RoU2l6ZSBjb252ZXJ0U25hcENv
b3JkaW5hdGVQYWlyKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYsIHNpemVfdCBvZmZzZXQgPSAw
KTsKQEAgLTMzMyw3ICszMzMsNyBAQCBpbmxpbmUgTmluZVBpZWNlSW1hZ2UgU3R5bGVCdWlsZGVy
Q29udmVydGVyOjpjb252ZXJ0Qm9yZGVyTWFzayhTdHlsZVJlc29sdmVyJiBzdAogfQogCiB0ZW1w
bGF0ZSA8Q1NTUHJvcGVydHlJRCBwcm9wZXJ0eT4KLWlubGluZSBQYXNzUmVmUHRyPFN0eWxlSW1h
Z2U+IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFN0eWxlSW1hZ2UoU3R5bGVSZXNvbHZl
ciYgc3R5bGVSZXNvbHZlciwgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIFJlZlB0cjxTdHlsZUlt
YWdlPiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRTdHlsZUltYWdlKFN0eWxlUmVzb2x2
ZXImIHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICByZXR1cm4gc3R5bGVS
ZXNvbHZlci5zdHlsZUltYWdlKHByb3BlcnR5LCB2YWx1ZSk7CiB9CkBAIC00MTIsNyArNDEyLDcg
QEAgaW5saW5lIEVUZXh0QWxpZ24gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VGV4dEFs
aWduKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmUKICAgICByZXR1cm4gcGFyZW50U3R5bGUtPnRleHRB
bGlnbigpOwogfQogCi1pbmxpbmUgUGFzc1JlZlB0cjxDbGlwUGF0aE9wZXJhdGlvbj4gU3R5bGVC
dWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Q2xpcFBhdGgoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNv
bHZlciwgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIFJlZlB0cjxDbGlwUGF0aE9wZXJhdGlvbj4g
U3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Q2xpcFBhdGgoU3R5bGVSZXNvbHZlciYgc3R5
bGVSZXNvbHZlciwgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGlmIChpczxDU1NQcmltaXRpdmVW
YWx1ZT4odmFsdWUpKSB7CiAgICAgICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8
Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKQEAgLTUwOSw3ICs1MDksNyBAQCBpbmxpbmUgaW50
IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydE1hcnF1ZWVTcGVlZChTdHlsZVJlc29sdmVy
JiwgQ1NTVmFsdWUmCiAgICAgcmV0dXJuIHNwZWVkOwogfQogCi1pbmxpbmUgUGFzc1JlZlB0cjxR
dW90ZXNEYXRhPiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRRdW90ZXMoU3R5bGVSZXNv
bHZlciYsIENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBSZWZQdHI8UXVvdGVzRGF0YT4gU3R5bGVC
dWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UXVvdGVzKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYg
dmFsdWUpCiB7CiAgICAgaWYgKGlzPENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkpIHsKICAgICAg
ICAgQVNTRVJUKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkuZ2V0VmFsdWVJRCgp
ID09IENTU1ZhbHVlTm9uZSk7CkBAIC01NDYsNyArNTQ2LDcgQEAgaW5saW5lIFRleHRVbmRlcmxp
bmVQb3NpdGlvbiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRUZXh0VW5kZXJsaW5lUG9z
aXRpb24KICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dFVuZGVybGluZVBvc2l0aW9uPihjb21i
aW5lZFBvc2l0aW9uKTsKIH0KIAotaW5saW5lIFBhc3NSZWZQdHI8U3R5bGVSZWZsZWN0aW9uPiBT
dHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRSZWZsZWN0aW9uKFN0eWxlUmVzb2x2ZXImIHN0
eWxlUmVzb2x2ZXIsIENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBSZWZQdHI8U3R5bGVSZWZsZWN0
aW9uPiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRSZWZsZWN0aW9uKFN0eWxlUmVzb2x2
ZXImIHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBpZiAoaXM8Q1NTUHJp
bWl0aXZlVmFsdWU+KHZhbHVlKSkgewogICAgICAgICBBU1NFUlQoZG93bmNhc3Q8Q1NTUHJpbWl0
aXZlVmFsdWU+KHZhbHVlKS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lKTsKQEAgLTY2Niw3
ICs2NjYsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNJbWFnZVNoYXBlKGNvbnN0IENTU1ZhbHVl
JiB2YWx1ZSkKICAgICAgICAgfHwgaXM8Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZT4odmFsdWUpOwog
fQogCi1pbmxpbmUgUGFzc1JlZlB0cjxTaGFwZVZhbHVlPiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6
OmNvbnZlcnRTaGFwZVZhbHVlKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVl
JiB2YWx1ZSkKK2lubGluZSBSZWZQdHI8U2hhcGVWYWx1ZT4gU3R5bGVCdWlsZGVyQ29udmVydGVy
Ojpjb252ZXJ0U2hhcGVWYWx1ZShTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBDU1NWYWx1
ZSYgdmFsdWUpCiB7CiAgICAgaWYgKGlzPENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkpIHsKICAg
ICAgICAgQVNTRVJUKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkuZ2V0VmFsdWVJ
RCgpID09IENTU1ZhbHVlTm9uZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVQcm9wZXJ0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuY3Bw
CmluZGV4IDU4NzIzZTEuLjc2YzI3NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVByb3BlcnRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRp
ZXMuY3BwCkBAIC01NzksNyArNTc5LDcgQEAgU3RyaW5nIFN0eWxlUHJvcGVydGllczo6Ym9yZGVy
UHJvcGVydHlWYWx1ZShDb21tb25WYWx1ZU1vZGUgdmFsdWVNb2RlKSBjb25zdAogICAgIHJldHVy
biByZXN1bHQuaXNFbXB0eSgpID8gU3RyaW5nKCkgOiByZXN1bHQudG9TdHJpbmcoKTsKIH0KIAot
UGFzc1JlZlB0cjxDU1NWYWx1ZT4gU3R5bGVQcm9wZXJ0aWVzOjpnZXRQcm9wZXJ0eUNTU1ZhbHVl
KENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCkgY29uc3QKK1JlZlB0cjxDU1NWYWx1ZT4gU3R5bGVQ
cm9wZXJ0aWVzOjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCkg
Y29uc3QKIHsKICAgICBpbnQgZm91bmRQcm9wZXJ0eUluZGV4ID0gZmluZFByb3BlcnR5SW5kZXgo
cHJvcGVydHlJRCk7CiAgICAgaWYgKGZvdW5kUHJvcGVydHlJbmRleCA9PSAtMSkKQEAgLTY4NCw3
ICs2ODQsNyBAQCBib29sIE11dGFibGVTdHlsZVByb3BlcnRpZXM6OnNldFByb3BlcnR5KENTU1By
b3BlcnR5SUQgcHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJgogICAgIHJldHVybiBDU1NQYXJzZXI6
OnBhcnNlVmFsdWUodGhpcywgcHJvcGVydHlJRCwgdmFsdWUsIGltcG9ydGFudCwgY3NzUGFyc2Vy
TW9kZSgpLCBjb250ZXh0U3R5bGVTaGVldCkgPT0gQ1NTUGFyc2VyOjpQYXJzZVJlc3VsdDo6Q2hh
bmdlZDsKIH0KIAotdm9pZCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpzZXRQcm9wZXJ0eShDU1NQ
cm9wZXJ0eUlEIHByb3BlcnR5SUQsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHBycFZhbHVlLCBib29s
IGltcG9ydGFudCkKK3ZvaWQgTXV0YWJsZVN0eWxlUHJvcGVydGllczo6c2V0UHJvcGVydHkoQ1NT
UHJvcGVydHlJRCBwcm9wZXJ0eUlELCBSZWZQdHI8Q1NTVmFsdWU+JiYgcHJwVmFsdWUsIGJvb2wg
aW1wb3J0YW50KQogewogICAgIFN0eWxlUHJvcGVydHlTaG9ydGhhbmQgc2hvcnRoYW5kID0gc2hv
cnRoYW5kRm9yUHJvcGVydHkocHJvcGVydHlJRCk7CiAgICAgaWYgKCFzaG9ydGhhbmQubGVuZ3Ro
KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuaCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuaAppbmRleCA2ZjMwMjRjLi5hYTgx
MTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5oCkBAIC04Niw3ICs4Niw3IEBA
IHB1YmxpYzoKICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhcHJvcGVydHlDb3Vu
dCgpOyB9CiAgICAgUHJvcGVydHlSZWZlcmVuY2UgcHJvcGVydHlBdCh1bnNpZ25lZCkgY29uc3Q7
CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBnZXRQcm9wZXJ0eUNT
U1ZhbHVlKENTU1Byb3BlcnR5SUQpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxD
U1NWYWx1ZT4gZ2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eUlEKSBjb25zdDsKICAgICBX
RUJDT1JFX0VYUE9SVCBTdHJpbmcgZ2V0UHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlEKSBjb25z
dDsKICAgICBib29sIHByb3BlcnR5SXNJbXBvcnRhbnQoQ1NTUHJvcGVydHlJRCkgY29uc3Q7CiAg
ICAgU3RyaW5nIGdldFByb3BlcnR5U2hvcnRoYW5kKENTU1Byb3BlcnR5SUQpIGNvbnN0OwpAQCAt
MTk4LDcgKzE5OCw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFRoZXNlIGV4cGFuZCBzaG9ydGhhbmQg
cHJvcGVydGllcyBpbnRvIG11bHRpcGxlIHByb3BlcnRpZXMuCiAgICAgYm9vbCBzZXRQcm9wZXJ0
eShDU1NQcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmIHZhbHVlLCBib29sIGltcG9ydGFudCA9IGZh
bHNlLCBTdHlsZVNoZWV0Q29udGVudHMqIGNvbnRleHRTdHlsZVNoZWV0ID0gMCk7Ci0gICAgdm9p
ZCBzZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUlELCBQYXNzUmVmUHRyPENTU1ZhbHVlPiwgYm9vbCBp
bXBvcnRhbnQgPSBmYWxzZSk7CisgICAgdm9pZCBzZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUlELCBS
ZWZQdHI8Q1NTVmFsdWU+JiYsIGJvb2wgaW1wb3J0YW50ID0gZmFsc2UpOwogCiAgICAgLy8gVGhl
c2UgZG8gbm90LiBGSVhNRTogVGhpcyBpcyB0b28gbWVzc3ksIHdlIGNhbiBkbyBiZXR0ZXIuCiAg
ICAgYm9vbCBzZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUlELCBDU1NWYWx1ZUlEIGlkZW50aWZpZXIs
IGJvb2wgaW1wb3J0YW50ID0gZmFsc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3Bw
CmluZGV4IDEzNTZiNmYuLmQ5ZjgyMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5j
cHAKQEAgLTM2Miw3ICszNjIsNyBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OnBvcFBhcmVudEVsZW1l
bnQoRWxlbWVudCogcGFyZW50KQogfQogCiAvLyBUaGlzIGlzIGEgc2ltcGxpZmllZCBzdHlsZSBz
ZXR0aW5nIGZ1bmN0aW9uIGZvciBrZXlmcmFtZSBzdHlsZXMKLXZvaWQgU3R5bGVSZXNvbHZlcjo6
YWRkS2V5ZnJhbWVTdHlsZShQYXNzUmVmUHRyPFN0eWxlUnVsZUtleWZyYW1lcz4gcnVsZSkKK3Zv
aWQgU3R5bGVSZXNvbHZlcjo6YWRkS2V5ZnJhbWVTdHlsZShSZWZQdHI8U3R5bGVSdWxlS2V5ZnJh
bWVzPiYmIHJ1bGUpCiB7CiAgICAgQXRvbWljU3RyaW5nIHMocnVsZS0+bmFtZSgpKTsKICAgICBt
X2tleWZyYW1lc1J1bGVNYXAuc2V0KHMuaW1wbCgpLCBydWxlKTsKQEAgLTk1Myw3ICs5NTMsNyBA
QCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmtleWZyYW1lU3R5bGVzRm9yQW5pbWF0aW9uKEVsZW1lbnQq
IGUsIGNvbnN0IFJlbmRlclN0eWxlKiBlbAogICAgIH0KIH0KIAotUGFzc1JlZlB0cjxSZW5kZXJT
dHlsZT4gU3R5bGVSZXNvbHZlcjo6cHNldWRvU3R5bGVGb3JFbGVtZW50KEVsZW1lbnQqIGVsZW1l
bnQsIGNvbnN0IFBzZXVkb1N0eWxlUmVxdWVzdCYgcHNldWRvU3R5bGVSZXF1ZXN0LCBSZW5kZXJT
dHlsZSogcGFyZW50U3R5bGUpCitSZWZQdHI8UmVuZGVyU3R5bGU+IFN0eWxlUmVzb2x2ZXI6OnBz
ZXVkb1N0eWxlRm9yRWxlbWVudChFbGVtZW50KiBlbGVtZW50LCBjb25zdCBQc2V1ZG9TdHlsZVJl
cXVlc3QmIHBzZXVkb1N0eWxlUmVxdWVzdCwgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlKQogewog
ICAgIEFTU0VSVChwYXJlbnRTdHlsZSk7CiAgICAgaWYgKCFlbGVtZW50KQpAQCAtMTkwMyw3ICsx
OTAzLDcgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjphcHBseVByb3BlcnR5KENTU1Byb3BlcnR5SUQg
aWQsIENTU1ZhbHVlKiB2YWx1ZSkKICAgICBTdHlsZUJ1aWxkZXI6OmFwcGx5UHJvcGVydHkoaWQs
ICp0aGlzLCAqdmFsdWUsIGlzSW5pdGlhbCwgaXNJbmhlcml0KTsKIH0KIAotUGFzc1JlZlB0cjxT
dHlsZUltYWdlPiBTdHlsZVJlc29sdmVyOjpzdHlsZUltYWdlKENTU1Byb3BlcnR5SUQgcHJvcGVy
dHksIENTU1ZhbHVlJiB2YWx1ZSkKK1JlZlB0cjxTdHlsZUltYWdlPiBTdHlsZVJlc29sdmVyOjpz
dHlsZUltYWdlKENTU1Byb3BlcnR5SUQgcHJvcGVydHksIENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAg
ICBpZiAoaXM8Q1NTSW1hZ2VWYWx1ZT4odmFsdWUpKQogICAgICAgICByZXR1cm4gY2FjaGVkT3JQ
ZW5kaW5nRnJvbVZhbHVlKHByb3BlcnR5LCBkb3duY2FzdDxDU1NJbWFnZVZhbHVlPih2YWx1ZSkp
OwpAQCAtMTkyNSwxNSArMTkyNSwxNSBAQCBQYXNzUmVmUHRyPFN0eWxlSW1hZ2U+IFN0eWxlUmVz
b2x2ZXI6OnN0eWxlSW1hZ2UoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwgQ1NTVmFsdQogICAgIHJl
dHVybiBudWxscHRyOwogfQogCi1QYXNzUmVmUHRyPFN0eWxlSW1hZ2U+IFN0eWxlUmVzb2x2ZXI6
OmNhY2hlZE9yUGVuZGluZ0Zyb21WYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBDU1NJbWFn
ZVZhbHVlJiB2YWx1ZSkKK1JlZlB0cjxTdHlsZUltYWdlPiBTdHlsZVJlc29sdmVyOjpjYWNoZWRP
clBlbmRpbmdGcm9tVmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwgQ1NTSW1hZ2VWYWx1ZSYg
dmFsdWUpCiB7CiAgICAgUmVmUHRyPFN0eWxlSW1hZ2U+IGltYWdlID0gdmFsdWUuY2FjaGVkT3JQ
ZW5kaW5nSW1hZ2UoKTsKICAgICBpZiAoaW1hZ2UgJiYgaW1hZ2UtPmlzUGVuZGluZ0ltYWdlKCkp
CiAgICAgICAgIG1fc3RhdGUucGVuZGluZ0ltYWdlUHJvcGVydGllcygpLnNldChwcm9wZXJ0eSwg
JnZhbHVlKTsKLSAgICByZXR1cm4gaW1hZ2UucmVsZWFzZSgpOworICAgIHJldHVybiBpbWFnZTsK
IH0KIAotUGFzc1JlZlB0cjxTdHlsZUltYWdlPiBTdHlsZVJlc29sdmVyOjpnZW5lcmF0ZWRPclBl
bmRpbmdGcm9tVmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwgQ1NTSW1hZ2VHZW5lcmF0b3JW
YWx1ZSYgdmFsdWUpCitSZWY8U3R5bGVJbWFnZT4gU3R5bGVSZXNvbHZlcjo6Z2VuZXJhdGVkT3JQ
ZW5kaW5nRnJvbVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHksIENTU0ltYWdlR2VuZXJhdG9y
VmFsdWUmIHZhbHVlKQogewogICAgIGlmIChpczxDU1NGaWx0ZXJJbWFnZVZhbHVlPih2YWx1ZSkp
IHsKICAgICAgICAgLy8gRmlsdGVySW1hZ2UgbmVlZHMgdG8gY2FsY3VsYXRlIEZpbHRlck9wZXJh
dGlvbnMuCkBAIC0xOTQ4LDcgKzE5NDgsNyBAQCBQYXNzUmVmUHRyPFN0eWxlSW1hZ2U+IFN0eWxl
UmVzb2x2ZXI6OmdlbmVyYXRlZE9yUGVuZGluZ0Zyb21WYWx1ZShDU1NQcm9wZXJ0eUlECiB9CiAK
ICNpZiBFTkFCTEUoQ1NTX0lNQUdFX1NFVCkKLVBhc3NSZWZQdHI8U3R5bGVJbWFnZT4gU3R5bGVS
ZXNvbHZlcjo6c2V0T3JQZW5kaW5nRnJvbVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHksIENT
U0ltYWdlU2V0VmFsdWUmIHZhbHVlKQorUmVmUHRyPFN0eWxlSW1hZ2U+IFN0eWxlUmVzb2x2ZXI6
OnNldE9yUGVuZGluZ0Zyb21WYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBDU1NJbWFnZVNl
dFZhbHVlJiB2YWx1ZSkKIHsKICAgICBSZWZQdHI8U3R5bGVJbWFnZT4gaW1hZ2UgPSB2YWx1ZS5j
YWNoZWRPclBlbmRpbmdJbWFnZVNldChkb2N1bWVudCgpKTsKICAgICBpZiAoaW1hZ2UgJiYgaW1h
Z2UtPmlzUGVuZGluZ0ltYWdlKCkpCkBAIC0xOTU3LDcgKzE5NTcsNyBAQCBQYXNzUmVmUHRyPFN0
eWxlSW1hZ2U+IFN0eWxlUmVzb2x2ZXI6OnNldE9yUGVuZGluZ0Zyb21WYWx1ZShDU1NQcm9wZXJ0
eUlEIHByb3BlcgogfQogI2VuZGlmCiAKLVBhc3NSZWZQdHI8U3R5bGVJbWFnZT4gU3R5bGVSZXNv
bHZlcjo6Y3Vyc29yT3JQZW5kaW5nRnJvbVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHksIENT
U0N1cnNvckltYWdlVmFsdWUmIHZhbHVlKQorUmVmUHRyPFN0eWxlSW1hZ2U+IFN0eWxlUmVzb2x2
ZXI6OmN1cnNvck9yUGVuZGluZ0Zyb21WYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBDU1ND
dXJzb3JJbWFnZVZhbHVlJiB2YWx1ZSkKIHsKICAgICBSZWZQdHI8U3R5bGVJbWFnZT4gaW1hZ2Ug
PSB2YWx1ZS5jYWNoZWRPclBlbmRpbmdJbWFnZShkb2N1bWVudCgpKTsKICAgICBpZiAoaW1hZ2Ug
JiYgaW1hZ2UtPmlzUGVuZGluZ0ltYWdlKCkpCkBAIC0yMzIzLDcgKzIzMjMsNyBAQCBib29sIFN0
eWxlUmVzb2x2ZXI6OmNyZWF0ZUZpbHRlck9wZXJhdGlvbnMoQ1NTVmFsdWUmIGluVmFsdWUsIEZp
bHRlck9wZXJhdGlvbnMmCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVBhc3NSZWZQdHI8U3R5bGVJ
bWFnZT4gU3R5bGVSZXNvbHZlcjo6bG9hZFBlbmRpbmdJbWFnZShjb25zdCBTdHlsZVBlbmRpbmdJ
bWFnZSYgcGVuZGluZ0ltYWdlLCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMp
CitSZWZQdHI8U3R5bGVJbWFnZT4gU3R5bGVSZXNvbHZlcjo6bG9hZFBlbmRpbmdJbWFnZShjb25z
dCBTdHlsZVBlbmRpbmdJbWFnZSYgcGVuZGluZ0ltYWdlLCBjb25zdCBSZXNvdXJjZUxvYWRlck9w
dGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgaWYgKGF1dG8gaW1hZ2VWYWx1ZSA9IHBlbmRpbmdJbWFn
ZS5jc3NJbWFnZVZhbHVlKCkpCiAgICAgICAgIHJldHVybiBpbWFnZVZhbHVlLT5jYWNoZWRJbWFn
ZShtX3N0YXRlLmRvY3VtZW50KCkuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKSwgb3B0aW9ucyk7CkBA
IC0yMzQ0LDcgKzIzNDQsNyBAQCBQYXNzUmVmUHRyPFN0eWxlSW1hZ2U+IFN0eWxlUmVzb2x2ZXI6
OmxvYWRQZW5kaW5nSW1hZ2UoY29uc3QgU3R5bGVQZW5kaW5nSW1hZ2UmCiAgICAgcmV0dXJuIG51
bGxwdHI7CiB9CiAKLVBhc3NSZWZQdHI8U3R5bGVJbWFnZT4gU3R5bGVSZXNvbHZlcjo6bG9hZFBl
bmRpbmdJbWFnZShjb25zdCBTdHlsZVBlbmRpbmdJbWFnZSYgcGVuZGluZ0ltYWdlKQorUmVmUHRy
PFN0eWxlSW1hZ2U+IFN0eWxlUmVzb2x2ZXI6OmxvYWRQZW5kaW5nSW1hZ2UoY29uc3QgU3R5bGVQ
ZW5kaW5nSW1hZ2UmIHBlbmRpbmdJbWFnZSkKIHsKICAgICBSZXNvdXJjZUxvYWRlck9wdGlvbnMg
b3B0aW9ucyA9IENhY2hlZFJlc291cmNlTG9hZGVyOjpkZWZhdWx0Q2FjaGVkUmVzb3VyY2VPcHRp
b25zKCk7CiAgICAgb3B0aW9ucy5zZXRDb250ZW50U2VjdXJpdHlQb2xpY3lJbXBvc2l0aW9uKG1f
c3RhdGUuZWxlbWVudCgpICYmIG1fc3RhdGUuZWxlbWVudCgpLT5pc0luVXNlckFnZW50U2hhZG93
VHJlZSgpID8gQ29udGVudFNlY3VyaXR5UG9saWN5SW1wb3NpdGlvbjo6U2tpcFBvbGljeUNoZWNr
IDogQ29udGVudFNlY3VyaXR5UG9saWN5SW1wb3NpdGlvbjo6RG9Qb2xpY3lDaGVjayk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oIGIvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlUmVzb2x2ZXIuaAppbmRleCBhZGQ1NDI1Li5jOWU3MTBlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZVJlc29sdmVyLmgKQEAgLTE1MCw3ICsxNTAsNyBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIGtleWZyYW1lU3R5bGVzRm9yQW5pbWF0aW9uKEVsZW1lbnQqLCBjb25zdCBSZW5kZXJTdHls
ZSosIEtleWZyYW1lTGlzdCYpOwogCi0gICAgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gcHNldWRv
U3R5bGVGb3JFbGVtZW50KEVsZW1lbnQqLCBjb25zdCBQc2V1ZG9TdHlsZVJlcXVlc3QmLCBSZW5k
ZXJTdHlsZSogcGFyZW50U3R5bGUpOworICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gcHNldWRvU3R5
bGVGb3JFbGVtZW50KEVsZW1lbnQqLCBjb25zdCBQc2V1ZG9TdHlsZVJlcXVlc3QmLCBSZW5kZXJT
dHlsZSogcGFyZW50U3R5bGUpOwogCiAgICAgUmVmPFJlbmRlclN0eWxlPiBzdHlsZUZvclBhZ2Uo
aW50IHBhZ2VJbmRleCk7CiAgICAgUmVmPFJlbmRlclN0eWxlPiBkZWZhdWx0U3R5bGVGb3JFbGVt
ZW50KCk7CkBAIC0yMjQsNyArMjI0LDcgQEAgcHVibGljOgogICAgIGJvb2wgaGFzVmlld3BvcnRE
ZXBlbmRlbnRNZWRpYVF1ZXJpZXMoKSBjb25zdCB7IHJldHVybiAhbV92aWV3cG9ydERlcGVuZGVu
dE1lZGlhUXVlcnlSZXN1bHRzLmlzRW1wdHkoKTsgfQogICAgIGJvb2wgaGFzTWVkaWFRdWVyaWVz
QWZmZWN0ZWRCeVZpZXdwb3J0Q2hhbmdlKCkgY29uc3Q7CiAKLSAgICB2b2lkIGFkZEtleWZyYW1l
U3R5bGUoUGFzc1JlZlB0cjxTdHlsZVJ1bGVLZXlmcmFtZXM+KTsKKyAgICB2b2lkIGFkZEtleWZy
YW1lU3R5bGUoUmVmUHRyPFN0eWxlUnVsZUtleWZyYW1lcz4mJik7CiAKICAgICBib29sIGNoZWNr
UmVnaW9uU3R5bGUoRWxlbWVudCogcmVnaW9uRWxlbWVudCk7CiAKQEAgLTQ0MiwxMyArNDQyLDEz
IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBSZW5kZXJTdHlsZSogc3R5bGVOb3RZZXRBdmFpbGFi
bGUoKSB7IHJldHVybiBzX3N0eWxlTm90WWV0QXZhaWxhYmxlOyB9CiAKLSAgICBQYXNzUmVmUHRy
PFN0eWxlSW1hZ2U+IHN0eWxlSW1hZ2UoQ1NTUHJvcGVydHlJRCwgQ1NTVmFsdWUmKTsKLSAgICBQ
YXNzUmVmUHRyPFN0eWxlSW1hZ2U+IGNhY2hlZE9yUGVuZGluZ0Zyb21WYWx1ZShDU1NQcm9wZXJ0
eUlELCBDU1NJbWFnZVZhbHVlJik7Ci0gICAgUGFzc1JlZlB0cjxTdHlsZUltYWdlPiBnZW5lcmF0
ZWRPclBlbmRpbmdGcm9tVmFsdWUoQ1NTUHJvcGVydHlJRCwgQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1
ZSYpOworICAgIFJlZlB0cjxTdHlsZUltYWdlPiBzdHlsZUltYWdlKENTU1Byb3BlcnR5SUQsIENT
U1ZhbHVlJik7CisgICAgUmVmUHRyPFN0eWxlSW1hZ2U+IGNhY2hlZE9yUGVuZGluZ0Zyb21WYWx1
ZShDU1NQcm9wZXJ0eUlELCBDU1NJbWFnZVZhbHVlJik7CisgICAgUmVmPFN0eWxlSW1hZ2U+IGdl
bmVyYXRlZE9yUGVuZGluZ0Zyb21WYWx1ZShDU1NQcm9wZXJ0eUlELCBDU1NJbWFnZUdlbmVyYXRv
clZhbHVlJik7CiAjaWYgRU5BQkxFKENTU19JTUFHRV9TRVQpCi0gICAgUGFzc1JlZlB0cjxTdHls
ZUltYWdlPiBzZXRPclBlbmRpbmdGcm9tVmFsdWUoQ1NTUHJvcGVydHlJRCwgQ1NTSW1hZ2VTZXRW
YWx1ZSYpOworICAgIFJlZlB0cjxTdHlsZUltYWdlPiBzZXRPclBlbmRpbmdGcm9tVmFsdWUoQ1NT
UHJvcGVydHlJRCwgQ1NTSW1hZ2VTZXRWYWx1ZSYpOwogI2VuZGlmCi0gICAgUGFzc1JlZlB0cjxT
dHlsZUltYWdlPiBjdXJzb3JPclBlbmRpbmdGcm9tVmFsdWUoQ1NTUHJvcGVydHlJRCwgQ1NTQ3Vy
c29ySW1hZ2VWYWx1ZSYpOworICAgIFJlZlB0cjxTdHlsZUltYWdlPiBjdXJzb3JPclBlbmRpbmdG
cm9tVmFsdWUoQ1NTUHJvcGVydHlJRCwgQ1NTQ3Vyc29ySW1hZ2VWYWx1ZSYpOwogCiAgICAgYm9v
bCBhcHBseVByb3BlcnR5VG9SZWd1bGFyU3R5bGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmFw
cGx5UHJvcGVydHlUb1JlZ3VsYXJTdHlsZSgpOyB9CiAgICAgYm9vbCBhcHBseVByb3BlcnR5VG9W
aXNpdGVkTGlua1N0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5hcHBseVByb3BlcnR5VG9W
aXNpdGVkTGlua1N0eWxlKCk7IH0KQEAgLTQ3NCw4ICs0NzQsOCBAQCBwcml2YXRlOgogCiAgICAg
dm9pZCBhcHBseVNWR1Byb3BlcnR5KENTU1Byb3BlcnR5SUQsIENTU1ZhbHVlKik7CiAKLSAgICBQ
YXNzUmVmUHRyPFN0eWxlSW1hZ2U+IGxvYWRQZW5kaW5nSW1hZ2UoY29uc3QgU3R5bGVQZW5kaW5n
SW1hZ2UmLCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmKTsKLSAgICBQYXNzUmVmUHRyPFN0
eWxlSW1hZ2U+IGxvYWRQZW5kaW5nSW1hZ2UoY29uc3QgU3R5bGVQZW5kaW5nSW1hZ2UmKTsKKyAg
ICBSZWZQdHI8U3R5bGVJbWFnZT4gbG9hZFBlbmRpbmdJbWFnZShjb25zdCBTdHlsZVBlbmRpbmdJ
bWFnZSYsIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYpOworICAgIFJlZlB0cjxTdHlsZUlt
YWdlPiBsb2FkUGVuZGluZ0ltYWdlKGNvbnN0IFN0eWxlUGVuZGluZ0ltYWdlJik7CiAgICAgdm9p
ZCBsb2FkUGVuZGluZ0ltYWdlcygpOwogI2lmIEVOQUJMRShDU1NfU0hBUEVTKQogICAgIHZvaWQg
bG9hZFBlbmRpbmdTaGFwZUltYWdlKFNoYXBlVmFsdWUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5j
cHAKaW5kZXggYTVmNDljMC4uNDQyZDFiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlUnVsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5jcHAKQEAg
LTQ1LDEyICs0NSwxMiBAQCBzdHJ1Y3QgU2FtZVNpemVBc1N0eWxlUnVsZUJhc2UgOiBwdWJsaWMg
V1RGOjpSZWZDb3VudGVkQmFzZSB7CiAKIENPTVBJTEVfQVNTRVJUKHNpemVvZihTdHlsZVJ1bGVC
YXNlKSA9PSBzaXplb2YoU2FtZVNpemVBc1N0eWxlUnVsZUJhc2UpLCBTdHlsZVJ1bGVCYXNlX3No
b3VsZF9zdGF5X3NtYWxsKTsKIAotUGFzc1JlZlB0cjxDU1NSdWxlPiBTdHlsZVJ1bGVCYXNlOjpj
cmVhdGVDU1NPTVdyYXBwZXIoQ1NTU3R5bGVTaGVldCogcGFyZW50U2hlZXQpIGNvbnN0CitSZWZQ
dHI8Q1NTUnVsZT4gU3R5bGVSdWxlQmFzZTo6Y3JlYXRlQ1NTT01XcmFwcGVyKENTU1N0eWxlU2hl
ZXQqIHBhcmVudFNoZWV0KSBjb25zdAogewogICAgIHJldHVybiBjcmVhdGVDU1NPTVdyYXBwZXIo
cGFyZW50U2hlZXQsIDApOwogfQogCi1QYXNzUmVmUHRyPENTU1J1bGU+IFN0eWxlUnVsZUJhc2U6
OmNyZWF0ZUNTU09NV3JhcHBlcihDU1NSdWxlKiBwYXJlbnRSdWxlKSBjb25zdAorUmVmUHRyPENT
U1J1bGU+IFN0eWxlUnVsZUJhc2U6OmNyZWF0ZUNTU09NV3JhcHBlcihDU1NSdWxlKiBwYXJlbnRS
dWxlKSBjb25zdAogeyAKICAgICByZXR1cm4gY3JlYXRlQ1NTT01XcmFwcGVyKDAsIHBhcmVudFJ1
bGUpOwogfQpAQCAtMTQwLDcgKzE0MCw3IEBAIFJlZjxTdHlsZVJ1bGVCYXNlPiBTdHlsZVJ1bGVC
YXNlOjpjb3B5KCkgY29uc3QKICAgICByZXR1cm4gUmVmPFN0eWxlUnVsZUJhc2U+KCpzdGF0aWNf
Y2FzdDxTdHlsZVJ1bGVCYXNlKj4obnVsbHB0cikpOwogfQogCi1QYXNzUmVmUHRyPENTU1J1bGU+
IFN0eWxlUnVsZUJhc2U6OmNyZWF0ZUNTU09NV3JhcHBlcihDU1NTdHlsZVNoZWV0KiBwYXJlbnRT
aGVldCwgQ1NTUnVsZSogcGFyZW50UnVsZSkgY29uc3QKK1JlZlB0cjxDU1NSdWxlPiBTdHlsZVJ1
bGVCYXNlOjpjcmVhdGVDU1NPTVdyYXBwZXIoQ1NTU3R5bGVTaGVldCogcGFyZW50U2hlZXQsIENT
U1J1bGUqIHBhcmVudFJ1bGUpIGNvbnN0CiB7CiAgICAgUmVmUHRyPENTU1J1bGU+IHJ1bGU7CiAg
ICAgU3R5bGVSdWxlQmFzZSYgc2VsZiA9IGNvbnN0X2Nhc3Q8U3R5bGVSdWxlQmFzZSY+KCp0aGlz
KTsKQEAgLTE4Nyw3ICsxODcsNyBAQCBQYXNzUmVmUHRyPENTU1J1bGU+IFN0eWxlUnVsZUJhc2U6
OmNyZWF0ZUNTU09NV3JhcHBlcihDU1NTdHlsZVNoZWV0KiBwYXJlbnRTaGVldAogICAgIH0KICAg
ICBpZiAocGFyZW50UnVsZSkKICAgICAgICAgcnVsZS0+c2V0UGFyZW50UnVsZShwYXJlbnRSdWxl
KTsKLSAgICByZXR1cm4gcnVsZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIHJ1bGU7CiB9CiAKIHVu
c2lnbmVkIFN0eWxlUnVsZTo6YXZlcmFnZVNpemVJbkJ5dGVzKCkKQEAgLTMyOSw3ICszMjksNyBA
QCB2b2lkIFN0eWxlUnVsZUdyb3VwOjp3cmFwcGVyUmVtb3ZlUnVsZSh1bnNpZ25lZCBpbmRleCkK
IH0KIAogCi1TdHlsZVJ1bGVNZWRpYTo6U3R5bGVSdWxlTWVkaWEoUGFzc1JlZlB0cjxNZWRpYVF1
ZXJ5U2V0PiBtZWRpYSwgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNlPj4mIGFkb3B0UnVsZXMp
CitTdHlsZVJ1bGVNZWRpYTo6U3R5bGVSdWxlTWVkaWEoUmVmUHRyPE1lZGlhUXVlcnlTZXQ+JiYg
bWVkaWEsIFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxlQmFzZT4+JiBhZG9wdFJ1bGVzKQogICAgIDog
U3R5bGVSdWxlR3JvdXAoTWVkaWEsIGFkb3B0UnVsZXMpCiAgICAgLCBtX21lZGlhUXVlcmllcyht
ZWRpYSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuaAppbmRleCBlOWE2MzY2Li5iZDFhOWI1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlUnVsZS5oCkBAIC04Miw4ICs4Miw4IEBAIHB1YmxpYzoKICAgICB9CiAKICAg
ICAvLyBGSVhNRTogVGhlcmUgc2hvdWxkbid0IGJlIGFueSBuZWVkIGZvciB0aGUgbnVsbCBwYXJl
bnQgdmVyc2lvbi4KLSAgICBQYXNzUmVmUHRyPENTU1J1bGU+IGNyZWF0ZUNTU09NV3JhcHBlcihD
U1NTdHlsZVNoZWV0KiBwYXJlbnRTaGVldCA9IDApIGNvbnN0OwotICAgIFBhc3NSZWZQdHI8Q1NT
UnVsZT4gY3JlYXRlQ1NTT01XcmFwcGVyKENTU1J1bGUqIHBhcmVudFJ1bGUpIGNvbnN0OworICAg
IFJlZlB0cjxDU1NSdWxlPiBjcmVhdGVDU1NPTVdyYXBwZXIoQ1NTU3R5bGVTaGVldCogcGFyZW50
U2hlZXQgPSAwKSBjb25zdDsKKyAgICBSZWZQdHI8Q1NTUnVsZT4gY3JlYXRlQ1NTT01XcmFwcGVy
KENTU1J1bGUqIHBhcmVudFJ1bGUpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6CiAgICAgU3R5bGVSdWxl
QmFzZShUeXBlIHR5cGUsIHNpZ25lZCBzb3VyY2VMaW5lID0gMCkgOiBtX3R5cGUodHlwZSksIG1f
c291cmNlTGluZShzb3VyY2VMaW5lKSB7IH0KQEAgLTk0LDcgKzk0LDcgQEAgcHJvdGVjdGVkOgog
cHJpdmF0ZToKICAgICB2b2lkIGRlc3Ryb3koKTsKICAgICAKLSAgICBQYXNzUmVmUHRyPENTU1J1
bGU+IGNyZWF0ZUNTU09NV3JhcHBlcihDU1NTdHlsZVNoZWV0KiBwYXJlbnRTaGVldCwgQ1NTUnVs
ZSogcGFyZW50UnVsZSkgY29uc3Q7CisgICAgUmVmUHRyPENTU1J1bGU+IGNyZWF0ZUNTU09NV3Jh
cHBlcihDU1NTdHlsZVNoZWV0KiBwYXJlbnRTaGVldCwgQ1NTUnVsZSogcGFyZW50UnVsZSkgY29u
c3Q7CiAKICAgICB1bnNpZ25lZCBtX3R5cGUgOiA1OwogICAgIHNpZ25lZCBtX3NvdXJjZUxpbmUg
OiAyNzsKQEAgLTE5Myw5ICsxOTMsOSBAQCBwcml2YXRlOgogCiBjbGFzcyBTdHlsZVJ1bGVNZWRp
YSA6IHB1YmxpYyBTdHlsZVJ1bGVHcm91cCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTdHls
ZVJ1bGVNZWRpYT4gY3JlYXRlKFBhc3NSZWZQdHI8TWVkaWFRdWVyeVNldD4gbWVkaWEsIFZlY3Rv
cjxSZWZQdHI8U3R5bGVSdWxlQmFzZT4+JiBhZG9wdFJ1bGVzKQorICAgIHN0YXRpYyBSZWY8U3R5
bGVSdWxlTWVkaWE+IGNyZWF0ZShSZWZQdHI8TWVkaWFRdWVyeVNldD4mJiBtZWRpYSwgVmVjdG9y
PFJlZlB0cjxTdHlsZVJ1bGVCYXNlPj4mIGFkb3B0UnVsZXMpCiAgICAgewotICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBTdHlsZVJ1bGVNZWRpYShtZWRpYSwgYWRvcHRSdWxlcykpOworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZVJ1bGVNZWRpYShXVEY6Om1vdmUobWVkaWEp
LCBhZG9wdFJ1bGVzKSk7CiAgICAgfQogCiAgICAgTWVkaWFRdWVyeVNldCogbWVkaWFRdWVyaWVz
KCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYVF1ZXJpZXMuZ2V0KCk7IH0KQEAgLTIwMyw3ICsyMDMs
NyBAQCBwdWJsaWM6CiAgICAgUmVmPFN0eWxlUnVsZU1lZGlhPiBjb3B5KCkgY29uc3QgeyByZXR1
cm4gYWRvcHRSZWYoKm5ldyBTdHlsZVJ1bGVNZWRpYSgqdGhpcykpOyB9CiAKIHByaXZhdGU6Ci0g
ICAgU3R5bGVSdWxlTWVkaWEoUGFzc1JlZlB0cjxNZWRpYVF1ZXJ5U2V0PiwgVmVjdG9yPFJlZlB0
cjxTdHlsZVJ1bGVCYXNlPj4mIGFkb3B0UnVsZXMpOworICAgIFN0eWxlUnVsZU1lZGlhKFJlZlB0
cjxNZWRpYVF1ZXJ5U2V0PiYmLCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2U+PiYgYWRvcHRS
dWxlcyk7CiAgICAgU3R5bGVSdWxlTWVkaWEoY29uc3QgU3R5bGVSdWxlTWVkaWEmKTsKIAogICAg
IFJlZlB0cjxNZWRpYVF1ZXJ5U2V0PiBtX21lZGlhUXVlcmllczsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGVJbXBvcnQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlUnVsZUltcG9ydC5jcHAKaW5kZXggZjU2Nzk1Ni4uYzA3YmExYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZUltcG9ydC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlUnVsZUltcG9ydC5jcHAKQEAgLTM0LDEyICszNCwxMiBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLVJlZjxTdHlsZVJ1bGVJbXBvcnQ+IFN0eWxlUnVsZUltcG9ydDo6Y3JlYXRl
KGNvbnN0IFN0cmluZyYgaHJlZiwgUGFzc1JlZlB0cjxNZWRpYVF1ZXJ5U2V0PiBtZWRpYSkKK1Jl
ZjxTdHlsZVJ1bGVJbXBvcnQ+IFN0eWxlUnVsZUltcG9ydDo6Y3JlYXRlKGNvbnN0IFN0cmluZyYg
aHJlZiwgUmVmUHRyPE1lZGlhUXVlcnlTZXQ+JiYgbWVkaWEpCiB7CiAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgU3R5bGVSdWxlSW1wb3J0KGhyZWYsIG1lZGlhKSk7CiB9CiAKLVN0eWxlUnVsZUlt
cG9ydDo6U3R5bGVSdWxlSW1wb3J0KGNvbnN0IFN0cmluZyYgaHJlZiwgUGFzc1JlZlB0cjxNZWRp
YVF1ZXJ5U2V0PiBtZWRpYSkKK1N0eWxlUnVsZUltcG9ydDo6U3R5bGVSdWxlSW1wb3J0KGNvbnN0
IFN0cmluZyYgaHJlZiwgUmVmUHRyPE1lZGlhUXVlcnlTZXQ+JiYgbWVkaWEpCiAgICAgOiBTdHls
ZVJ1bGVCYXNlKEltcG9ydCwgMCkKICAgICAsIG1fcGFyZW50U3R5bGVTaGVldCgwKQogICAgICwg
bV9zdHlsZVNoZWV0Q2xpZW50KHRoaXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVSdWxlSW1wb3J0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlSW1wb3J0LmgK
aW5kZXggYmEwYjJhNy4uMmJiZmU3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlUnVsZUltcG9ydC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGVJbXBvcnQu
aApAQCAtMzYsNyArMzYsNyBAQCBjbGFzcyBTdHlsZVNoZWV0Q29udGVudHM7CiBjbGFzcyBTdHls
ZVJ1bGVJbXBvcnQgOiBwdWJsaWMgU3R5bGVSdWxlQmFzZSB7CiAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTdHlsZVJ1bGVJbXBvcnQ+IGNyZWF0
ZShjb25zdCBTdHJpbmcmIGhyZWYsIFBhc3NSZWZQdHI8TWVkaWFRdWVyeVNldD4pOworICAgIHN0
YXRpYyBSZWY8U3R5bGVSdWxlSW1wb3J0PiBjcmVhdGUoY29uc3QgU3RyaW5nJiBocmVmLCBSZWZQ
dHI8TWVkaWFRdWVyeVNldD4mJik7CiAKICAgICB+U3R5bGVSdWxlSW1wb3J0KCk7CiAgICAgCkBA
IC03MCw3ICs3MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRDU1NTdHlsZVNoZWV0KGNvbnN0
IFN0cmluZyYgaHJlZiwgY29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQs
IGNvbnN0IENhY2hlZENTU1N0eWxlU2hlZXQqKTsKICAgICBmcmllbmQgY2xhc3MgSW1wb3J0ZWRT
dHlsZVNoZWV0Q2xpZW50OwogCi0gICAgU3R5bGVSdWxlSW1wb3J0KGNvbnN0IFN0cmluZyYgaHJl
ZiwgUGFzc1JlZlB0cjxNZWRpYVF1ZXJ5U2V0Pik7CisgICAgU3R5bGVSdWxlSW1wb3J0KGNvbnN0
IFN0cmluZyYgaHJlZiwgUmVmUHRyPE1lZGlhUXVlcnlTZXQ+JiYpOwogCiAgICAgU3R5bGVTaGVl
dENvbnRlbnRzKiBtX3BhcmVudFN0eWxlU2hlZXQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVNoZWV0Q29udGVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
U2hlZXRDb250ZW50cy5jcHAKaW5kZXggNjBjNWQzOS4uZGNhN2IzZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRDb250ZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlU2hlZXRDb250ZW50cy5jcHAKQEAgLTEyOCw3ICsxMjgsNyBAQCBib29sIFN0
eWxlU2hlZXRDb250ZW50czo6aXNDYWNoZWFibGUoKSBjb25zdAogICAgIHJldHVybiB0cnVlOwog
fQogCi12b2lkIFN0eWxlU2hlZXRDb250ZW50czo6cGFyc2VyQXBwZW5kUnVsZShQYXNzUmVmUHRy
PFN0eWxlUnVsZUJhc2U+IHJ1bGUpCit2b2lkIFN0eWxlU2hlZXRDb250ZW50czo6cGFyc2VyQXBw
ZW5kUnVsZShSZWZQdHI8U3R5bGVSdWxlQmFzZT4mJiBydWxlKQogewogICAgIEFTU0VSVCghcnVs
ZS0+aXNDaGFyc2V0UnVsZSgpKTsKICAgICBpZiAoaXM8U3R5bGVSdWxlSW1wb3J0PigqcnVsZSkp
IHsKQEAgLTIwNiw3ICsyMDYsNyBAQCB2b2lkIFN0eWxlU2hlZXRDb250ZW50czo6cGFyc2VyU2V0
RW5jb2RpbmdGcm9tQ2hhcnNldFJ1bGUoY29uc3QgU3RyaW5nJiBlbmNvZGluZwogICAgIG1fZW5j
b2RpbmdGcm9tQ2hhcnNldFJ1bGUgPSBlbmNvZGluZzsgCiB9CiAKLWJvb2wgU3R5bGVTaGVldENv
bnRlbnRzOjp3cmFwcGVySW5zZXJ0UnVsZShQYXNzUmVmUHRyPFN0eWxlUnVsZUJhc2U+IHJ1bGUs
IHVuc2lnbmVkIGluZGV4KQorYm9vbCBTdHlsZVNoZWV0Q29udGVudHM6OndyYXBwZXJJbnNlcnRS
dWxlKFJlZlB0cjxTdHlsZVJ1bGVCYXNlPiYmIHJ1bGUsIHVuc2lnbmVkIGluZGV4KQogewogICAg
IEFTU0VSVChtX2lzTXV0YWJsZSk7CiAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJ
T04oaW5kZXggPD0gcnVsZUNvdW50KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlU2hlZXRDb250ZW50cy5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRDb250
ZW50cy5oCmluZGV4IGYyNTY2MjEuLmM5YTdlMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZVNoZWV0Q29udGVudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVT
aGVldENvbnRlbnRzLmgKQEAgLTk0LDcgKzk0LDcgQEAgcHVibGljOgogICAgIGJvb2wgaGFzU3lu
dGFjdGljYWxseVZhbGlkQ1NTSGVhZGVyKCkgY29uc3QgeyByZXR1cm4gbV9oYXNTeW50YWN0aWNh
bGx5VmFsaWRDU1NIZWFkZXI7IH0KIAogICAgIHZvaWQgcGFyc2VyQWRkTmFtZXNwYWNlKGNvbnN0
IEF0b21pY1N0cmluZyYgcHJlZml4LCBjb25zdCBBdG9taWNTdHJpbmcmIHVyaSk7Ci0gICAgdm9p
ZCBwYXJzZXJBcHBlbmRSdWxlKFBhc3NSZWZQdHI8U3R5bGVSdWxlQmFzZT4pOworICAgIHZvaWQg
cGFyc2VyQXBwZW5kUnVsZShSZWZQdHI8U3R5bGVSdWxlQmFzZT4mJik7CiAgICAgdm9pZCBwYXJz
ZXJTZXRFbmNvZGluZ0Zyb21DaGFyc2V0UnVsZShjb25zdCBTdHJpbmcmIGVuY29kaW5nKTsgCiAg
ICAgdm9pZCBwYXJzZXJTZXRVc2VzUmVtVW5pdHMoKSB7IG1fdXNlc1JlbVVuaXRzID0gdHJ1ZTsg
fQogICAgIHZvaWQgcGFyc2VyU2V0VXNlc1N0eWxlQmFzZWRFZGl0YWJpbGl0eSgpIHsgbV91c2Vz
U3R5bGVCYXNlZEVkaXRhYmlsaXR5ID0gdHJ1ZTsgfQpAQCAtMTI3LDcgKzEyNyw3IEBAIHB1Ymxp
YzoKIAogICAgIHVuc2lnbmVkIGVzdGltYXRlZFNpemVJbkJ5dGVzKCkgY29uc3Q7CiAgICAgCi0g
ICAgYm9vbCB3cmFwcGVySW5zZXJ0UnVsZShQYXNzUmVmUHRyPFN0eWxlUnVsZUJhc2U+LCB1bnNp
Z25lZCBpbmRleCk7CisgICAgYm9vbCB3cmFwcGVySW5zZXJ0UnVsZShSZWZQdHI8U3R5bGVSdWxl
QmFzZT4mJiwgdW5zaWduZWQgaW5kZXgpOwogICAgIHZvaWQgd3JhcHBlckRlbGV0ZVJ1bGUodW5z
aWduZWQgaW5kZXgpOwogCiAgICAgUmVmPFN0eWxlU2hlZXRDb250ZW50cz4gY29weSgpIGNvbnN0
IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVTaGVldENvbnRlbnRzKCp0aGlzKSk7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0TGlzdC5oIGIvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlU2hlZXRMaXN0LmgKaW5kZXggMTJhN2M0NS4uNGQ0YjU0MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRMaXN0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlU2hlZXRMaXN0LmgKQEAgLTIzLDcgKzIzLDYgQEAKIAogI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3
dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU0ZpbHRlclZh
bHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NGaWx0ZXJWYWx1ZS5jcHAKaW5k
ZXggNWExNGJiOC4uY2QwY2E3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktp
dENTU0ZpbHRlclZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTRmls
dGVyVmFsdWUuY3BwCkBAIC0yNyw3ICsyNyw2IEBACiAjaW5jbHVkZSAiV2ViS2l0Q1NTRmlsdGVy
VmFsdWUuaCIKIAogI2luY2x1ZGUgIkNTU1ZhbHVlTGlzdC5oIgotI2luY2x1ZGUgPHd0Zi9QYXNz
UmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NGaWx0ZXJW
YWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU0ZpbHRlclZhbHVlLmgKaW5kZXgg
YTI0OTZkNi4uOWUzYWU2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENT
U0ZpbHRlclZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU0ZpbHRlclZh
bHVlLmgKQEAgLTI3LDcgKzI3LDYgQEAKICNkZWZpbmUgV2ViS2l0Q1NTRmlsdGVyVmFsdWVfaAog
CiAjaW5jbHVkZSAiQ1NTVmFsdWVMaXN0LmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4K
ICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuY3BwCmluZGV4IDY3NzIxMmUu
LmExZGYwY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NUcmFuc2Zv
cm1WYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1RyYW5zZm9ybVZh
bHVlLmNwcApAQCAtMjcsNyArMjcsNiBAQAogI2luY2x1ZGUgIldlYktpdENTU1RyYW5zZm9ybVZh
bHVlLmgiCiAKICNpbmNsdWRlICJDU1NWYWx1ZUxpc3QuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1Jl
ZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTVHJhbnNmb3Jt
VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5oCmlu
ZGV4IDdjZWMzNTMuLjJkYjdjNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJL
aXRDU1NUcmFuc2Zvcm1WYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NU
cmFuc2Zvcm1WYWx1ZS5oCkBAIC0yNyw3ICsyNyw2IEBACiAjZGVmaW5lIFdlYktpdENTU1RyYW5z
Zm9ybVZhbHVlX2gKIAogI2luY2x1ZGUgIkNTU1ZhbHVlTGlzdC5oIgotI2luY2x1ZGUgPHd0Zi9Q
YXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250U2Vs
ZWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRTZWxlY3Rvci5o
CmluZGV4IGViY2JmZDMuLjU1YmU0YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnRTZWxlY3Rvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnRTZWxlY3Rvci5oCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIH5Gb250U2VsZWN0b3IoKSB7IH0KIAogICAgIHZpcnR1YWwgRm9udFJhbmdlcyBmb250
UmFuZ2VzRm9yRmFtaWx5KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGNvbnN0IEF0b21pY1N0cmlu
ZyYpID0gMDsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Rm9udD4gZmFsbGJhY2tGb250QXQoY29u
c3QgRm9udERlc2NyaXB0aW9uJiwgc2l6ZV90KSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8Rm9u
dD4gZmFsbGJhY2tGb250QXQoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgc2l6ZV90KSA9IDA7CiAK
ICAgICB2aXJ0dWFsIHNpemVfdCBmYWxsYmFja0ZvbnRDb3VudCgpID0gMDsKICAgICB2aXJ0dWFs
IGJvb2wgcmVzb2x2ZXNGYW1pbHlGb3IoY29uc3QgRm9udERlc2NyaXB0aW9uJikgY29uc3QgPSAw
Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>