<?xml version="1.0" encoding="utf-8"?>
<gpc defaultLocale="zh_CN" version="3" keySequence="159" currentLocale="zh_CN">
  <product appid="PHSP" version="13" name="Photoshop CS6"/>
  <target id="PHSP-13"/>
  <ConfiguratorPanel name="唯一的面板02" width="230" height="480" init="doInit" close="doClose" persistent="true" normalIcon="res/未标题-1.png" darkNormalIcon="res/深色图标.png" extensionId="com.configurator.extension" extensionVersion="1.7.0" menuName="唯一的面板02" flyoutMenuAbout="$$$/Configurator/FlyoutMenu/about">
    <onInit><![CDATA[]]></onInit>
    <aboutBox><![CDATA[制作者唯一01 DESIGN 品牌设计<br />QQ：282178005  <br />E-mail：aavvttd@126.com<br />TEL：15918977866    0754-83221172<br />鸣谢：<br />ノ倾听那首属於自己的歌╮（Confused ）<br/><p>由 <a href='http://www.singlelao.com' target='_blank'>唯一/singlelao</a> 使用 <a href='http://labs.adobe.com/technologies/configurator/' target='_blank'>Configurator</a> 创建</p>]]></aboutBox>
    <extensionDescription><![CDATA[添加了前进后退按钮等，增加了功能菜单搜索框，预览测试可以通过中文搜索，可是实际PS面板里只能英文搜索，只能后期调试了。
1.60 更新了几个从adobe官网上下载来的最实用的几个java脚本，同时也是非常强大
1.7.0 把部分使用外置代码文件的按钮替换为直接运行代码，加快面板速度运行。！
1.8.0  集成flash时钟，提醒时间宝贵]]></extensionDescription>
    <extensionAuthor><![CDATA[唯一/singlelao]]></extensionAuthor>
    <onClose><![CDATA[]]></onClose>
    <eventListeners>
      <function id="doInit" actionType="jsfunction" jsFunctionName="invoke_script">
        <param id="onInit"/>
      </function>
      <function id="doClose" actionType="jsfunction" jsFunctionName="invoke_script">
        <param id="onClose"/>
      </function>
    </eventListeners>
    <ps_command _itemId="Main-Layer-Align-Top_Edges" scriptID="Main-Layer-Align-Top_Edges" toolTip="$$$/Main-Layer-Align-Top_Edges/desc" label="$$$/Main-Layer-Align-Top_Edges/name" click="onClick" cfgVisible="$$$/Configurator/Attribute/visible/value###28" x="10" y="10" width="30" height="50" mouseUpIcon="res/顶01.png" mouseOverIcon="res/顶02.png" mouseDownSkinIcon="res/顶03.png">
      <script><![CDATA[ErrStrs = {}; ErrStrs.USER_CANCELLED=localize("$$$/ScriptingSupport/Error/UserCancelled=User cancelled the operation"); try {var idAlgn = charIDToTypeID( 'Algn' );     var desc889 = new ActionDescriptor();     var idnull = charIDToTypeID( 'null' );         var ref713 = new ActionReference();         var idLyr = charIDToTypeID( 'Lyr ' );         var idOrdn = charIDToTypeID( 'Ordn' );         var idTrgt = charIDToTypeID( 'Trgt' );         ref713.putEnumerated( idLyr, idOrdn, idTrgt );     desc889.putReference( idnull, ref713 );     var idUsng = charIDToTypeID( 'Usng' );     var idADSt = charIDToTypeID( 'ADSt' );     var idAdTp = charIDToTypeID( 'AdTp' );     desc889.putEnumerated( idUsng, idADSt, idAdTp ); executeAction( idAlgn, desc889, DialogModes.ALL ); } catch(e){if (e.toString().indexOf(ErrStrs.USER_CANCELLED)!=-1) {;} else{alert(localize("$$$/ScriptingSupport/Error/CommandNotAvailable=The command is currently not available"));}}]]></script>
      <eventListeners>
        <function id="onClick" actionType="jsfunction" jsFunctionName="ps_invoke_script">
          <param id="script"/>
        </function>
      </eventListeners>
    </ps_command>
    <ps_command _itemId="Main-Layer-Align-Bottom_Edges" scriptID="Main-Layer-Align-Bottom_Edges" toolTip="$$$/Main-Layer-Align-Bottom_Edges/desc" label="$$$/Main-Layer-Align-Bottom_Edges/name" click="onClick" cfgVisible="$$$/Configurator/Attribute/visible/value###29" x="48" y="10" width="30" height="50" mouseUpIcon="res/底01.png" mouseOverIcon="res/底02.png" mouseDownSkinIcon="res/底03.png">
      <script><![CDATA[ErrStrs = {}; ErrStrs.USER_CANCELLED=localize("$$$/ScriptingSupport/Error/UserCancelled=User cancelled the operation"); try {var idAlgn = charIDToTypeID( 'Algn' );     var desc887 = new ActionDescriptor();     var idnull = charIDToTypeID( 'null' );         var ref711 = new ActionReference();         var idLyr = charIDToTypeID( 'Lyr ' );         var idOrdn = charIDToTypeID( 'Ordn' );         var idTrgt = charIDToTypeID( 'Trgt' );         ref711.putEnumerated( idLyr, idOrdn, idTrgt );     desc887.putReference( idnull, ref711 );     var idUsng = charIDToTypeID( 'Usng' );     var idADSt = charIDToTypeID( 'ADSt' );     var idAdBt = charIDToTypeID( 'AdBt' );     desc887.putEnumerated( idUsng, idADSt, idAdBt ); executeAction( idAlgn, desc887, DialogModes.ALL ); } catch(e){if (e.toString().indexOf(ErrStrs.USER_CANCELLED)!=-1) {;} else{alert(localize("$$$/ScriptingSupport/Error/CommandNotAvailable=The command is currently not available"));}}]]></script>
      <eventListeners>
        <function id="onClick" actionType="jsfunction" jsFunctionName="ps_invoke_script">
          <param id="script"/>
        </function>
      </eventListeners>
    </ps_command>
    <ps_command _itemId="Main-Layer-Align-Left_Edges" scriptID="Main-Layer-Align-Left_Edges" toolTip="$$$/Main-Layer-Align-Left_Edges/desc" label="$$$/Main-Layer-Align-Left_Edges/name" click="onClick" cfgVisible="$$$/Configurator/Attribute/visible/value###30" x="86" y="10" width="30" height="50" mouseUpIcon="res/左01.png" mouseOverIcon="res/左02.png" mouseDownSkinIcon="res/左03.png">
      <script><![CDATA[ErrStrs = {}; ErrStrs.USER_CANCELLED=localize("$$$/ScriptingSupport/Error/UserCancelled=User cancelled the operation"); try {var idAlgn = charIDToTypeID( 'Algn' );     var desc886 = new ActionDescriptor();     var idnull = charIDToTypeID( 'null' );         var ref710 = new ActionReference();         var idLyr = charIDToTypeID( 'Lyr ' );         var idOrdn = charIDToTypeID( 'Ordn' );         var idTrgt = charIDToTypeID( 'Trgt' );         ref710.putEnumerated( idLyr, idOrdn, idTrgt );     desc886.putReference( idnull, ref710 );     var idUsng = charIDToTypeID( 'Usng' );     var idADSt = charIDToTypeID( 'ADSt' );     var idAdLf = charIDToTypeID( 'AdLf' );     desc886.putEnumerated( idUsng, idADSt, idAdLf ); executeAction( idAlgn, desc886, DialogModes.ALL ); } catch(e){if (e.toString().indexOf(ErrStrs.USER_CANCELLED)!=-1) {;} else{alert(localize("$$$/ScriptingSupport/Error/CommandNotAvailable=The command is currently not available"));}}]]></script>
      <eventListeners>
        <function id="onClick" actionType="jsfunction" jsFunctionName="ps_invoke_script">
          <param id="script"/>
        </function>
      </eventListeners>
    </ps_command>
    <ps_command _itemId="Main-Layer-Align-Right_Edges" scriptID="Main-Layer-Align-Right_Edges" toolTip="$$$/Main-Layer-Align-Right_Edges/desc" label="$$$/Main-Layer-Align-Right_Edges/name" click="onClick" cfgVisible="$$$/Configurator/Attribute/visible/value###31" x="124" y="10" width="30" height="50" mouseUpIcon="res/res0_右01.png" mouseOverIcon="res/右02.png" mouseDownSkinIcon="res/右03.png">
      <script><![CDATA[ErrStrs = {}; ErrStrs.USER_CANCELLED=localize("$$$/ScriptingSupport/Error/UserCancelled=User cancelled the operation"); try {var idAlgn = charIDToTypeID( 'Algn' );     var desc884 = new ActionDescriptor();     var idnull = charIDToTypeID( 'null' );         var ref708 = new ActionReference();         var idLyr = charIDToTypeID( 'Lyr ' );         var idOrdn = charIDToTypeID( 'Ordn' );         var idTrgt = charIDToTypeID( 'Trgt' );         ref708.putEnumerated( idLyr, idOrdn, idTrgt );     desc884.putReference( idnull, ref708 );     var idUsng = charIDToTypeID( 'Usng' );     var idADSt = charIDToTypeID( 'ADSt' );     var idAdRg = charIDToTypeID( 'AdRg' );     desc884.putEnumerated( idUsng, idADSt, idAdRg ); executeAction( idAlgn, desc884, DialogModes.ALL ); } catch(e){if (e.toString().indexOf(ErrStrs.USER_CANCELLED)!=-1) {;} else{alert(localize("$$$/ScriptingSupport/Error/CommandNotAvailable=The command is currently not available"));}}]]></script>
      <eventListeners>
        <function id="onClick" actionType="jsfunction" jsFunctionName="ps_invoke_script">
          <param id="script"/>
        </function>
      </eventListeners>
    </ps_command>
    <ps_command _itemId="Main-Layer-Align-Horizontal_Centers" scriptID="Main-Layer-Align-Horizontal_Centers" toolTip="$$$/Main-Layer-Align-Horizontal_Centers/desc" label="$$$/Main-Layer-Align-Horizontal_Centers/name" click="onClick" cfgVisible="$$$/Configurator/Attribute/visible/value###32" x="162" y="10" width="58" height="21" mouseUpIcon="res/中01.png" mouseOverIcon="res/中02.png" mouseDownSkinIcon="res/中03.png">
      <script><![CDATA[ErrStrs = {}; ErrStrs.USER_CANCELLED=localize("$$$/ScriptingSupport/Error/UserCancelled=User cancelled the operation"); try {var idAlgn = charIDToTypeID( 'Algn' );     var desc885 = new ActionDescriptor();     var idnull = charIDToTypeID( 'null' );         var ref709 = new ActionReference();         var idLyr = charIDToTypeID( 'Lyr ' );         var idOrdn = charIDToTypeID( 'Ordn' );         var idTrgt = charIDToTypeID( 'Trgt' );         ref709.putEnumerated( idLyr, idOrdn, idTrgt );     desc885.putReference( idnull, ref709 );     var idUsng = charIDToTypeID( 'Usng' );     var idADSt = charIDToTypeID( 'ADSt' );     var idAdCH = charIDToTypeID( 'AdCH' );     desc885.putEnumerated( idUsng, idADSt, idAdCH ); executeAction( idAlgn, desc885, DialogModes.ALL ); } catch(e){if (e.toString().indexOf(ErrStrs.USER_CANCELLED)!=-1) {;} else{alert(localize("$$$/ScriptingSupport/Error/CommandNotAvailable=The command is currently not available"));}}]]></script>
      <eventListeners>
        <function id="onClick" actionType="jsfunction" jsFunctionName="ps_invoke_script">
          <param id="script"/>
        </function>
      </eventListeners>
    </ps_command>
    <ps_command _itemId="Main-Layer-Align-Vertical_Centers" scriptID="Main-Layer-Align-Vertical_Centers" toolTip="$$$/Main-Layer-Align-Vertical_Centers/desc" label="$$$/Main-Layer-Align-Vertical_Centers/name" click="onClick" cfgVisible="$$$/Configurator/Attribute/visible/value###33" x="162" y="39" width="58" height="21" mouseUpIcon="res/中001.png" mouseOverIcon="res/中002.png" mouseDownSkinIcon="res/中003.png">
      <script><![CDATA[ErrStrs = {}; ErrStrs.USER_CANCELLED=localize("$$$/ScriptingSupport/Error/UserCancelled=User cancelled the operation"); try {var idAlgn = charIDToTypeID( 'Algn' );     var desc888 = new ActionDescriptor();     var idnull = charIDToTypeID( 'null' );         var ref712 = new ActionReference();         var idLyr = charIDToTypeID( 'Lyr ' );         var idOrdn = charIDToTypeID( 'Ordn' );         var idTrgt = charIDToTypeID( 'Trgt' );         ref712.putEnumerated( idLyr, idOrdn, idTrgt );     desc888.putReference( idnull, ref712 );     var idUsng = charIDToTypeID( 'Usng' );     var idADSt = charIDToTypeID( 'ADSt' );     var idAdCV = charIDToTypeID( 'AdCV' );     desc888.putEnumerated( idUsng, idADSt, idAdCV ); executeAction( idAlgn, desc888, DialogModes.ALL ); } catch(e){if (e.toString().indexOf(ErrStrs.USER_CANCELLED)!=-1) {;} else{alert(localize("$$$/ScriptingSupport/Error/CommandNotAvailable=The command is currently not available"));}}]]></script>
      <eventListeners>
        <function id="onClick" actionType="jsfunction" jsFunctionName="ps_invoke_script">
          <param id="script"/>
        </function>
      </eventListeners>
    </ps_command>
    <ps_command _itemId="Panel-Layers-Convert_to_Smart_Object" scriptID="Panel-Layers-Convert_to_Smart_Object" toolTip="$$$/Panel-Layers-Convert_to_Smart_Object/desc" label="$$$/Panel-Layers-Convert_to_Smart_Object/name" click="onClick" cfgVisible="$$$/Configurator/Attribute/visible/value###35" x="10" y="112" width="106" height="21">
      <script><![CDATA[ErrStrs = {}; ErrStrs.USER_CANCELLED=localize("$$$/ScriptingSupport/Error/UserCancelled=User cancelled the operation"); try {var idslct = charIDToTypeID( 'slct' );     var desc625 = new ActionDescriptor();     var idnull = charIDToTypeID( 'null' );         var ref487 = new ActionReference();         var idMn = charIDToTypeID( 'Mn  ' );         var idMnIt = charIDToTypeID( 'MnIt' );         var idnewPlacedLayer = stringIDToTypeID( 'newPlacedLayer' );         ref487.putEnumerated( idMn, idMnIt, idnewPlacedLayer );     desc625.putReference( idnull, ref487 ); executeAction( idslct, desc625, DialogModes.ALL ); } catch(e){if (e.toString().indexOf(ErrStrs.USER_CANCELLED)!=-1) {;} else{alert(localize("$$$/ScriptingSupport/Error/CommandNotAvailable=The command is currently not available"));}}]]></script>
      <eventListeners>
        <function id="onClick" actionType="jsfunction" jsFunctionName="ps_invoke_script">
          <param id="script"/>
        </function>
      </eventListeners>
    </ps_command>
    <ps_command _itemId="Main-Layer-Select_Linked_Layers" scriptID="Main-Layer-Select_Linked_Layers" toolTip="$$$/Main-Layer-Select_Linked_Layers/desc" label="$$$/Main-Layer-Select_Linked_Layers/name" click="onClick" cfgVisible="$$$/Configurator/Attribute/visible/value###34" x="10" y="141" width="106" height="21">
      <script><![CDATA[ErrStrs = {}; ErrStrs.USER_CANCELLED=localize("$$$/ScriptingSupport/Error/UserCancelled=User cancelled the operation"); try {var idselectLinkedLayers = stringIDToTypeID( 'selectLinkedLayers' );     var desc875 = new ActionDescriptor();     var idnull = charIDToTypeID( 'null' );         var ref699 = new ActionReference();         var idLyr = charIDToTypeID( 'Lyr ' );         var idOrdn = charIDToTypeID( 'Ordn' );         var idTrgt = charIDToTypeID( 'Trgt' );         ref699.putEnumerated( idLyr, idOrdn, idTrgt );     desc875.putReference( idnull, ref699 ); executeAction( idselectLinkedLayers, desc875, DialogModes.ALL ); } catch(e){if (e.toString().indexOf(ErrStrs.USER_CANCELLED)!=-1) {;} else{alert(localize("$$$/ScriptingSupport/Error/CommandNotAvailable=The command is currently not available"));}}]]></script>
      <eventListeners>
        <function id="onClick" actionType="jsfunction" jsFunctionName="ps_invoke_script">
          <param id="script"/>
        </function>
      </eventListeners>
    </ps_command>
    <ps_command _itemId="Main-Select-All_Layers" scriptID="Main-Select-All_Layers" toolTip="$$$/Main-Select-All_Layers/desc" label="$$$/Main-Select-All_Layers/name" click="onClick" cfgVisible="$$$/Configurator/Attribute/visible/value###36" x="124" y="112" width="96" height="21">
      <script><![CDATA[ErrStrs = {}; ErrStrs.USER_CANCELLED=localize("$$$/ScriptingSupport/Error/UserCancelled=User cancelled the operation"); try {var idselectAllLayers = stringIDToTypeID( 'selectAllLayers' );     var desc834 = new ActionDescriptor();     var idnull = charIDToTypeID( 'null' );         var ref674 = new ActionReference();         var idLyr = charIDToTypeID( 'Lyr ' );         var idOrdn = charIDToTypeID( 'Ordn' );         var idTrgt = charIDToTypeID( 'Trgt' );         ref674.putEnumerated( idLyr, idOrdn, idTrgt );     desc834.putReference( idnull, ref674 ); executeAction( idselectAllLayers, desc834, DialogModes.ALL ); } catch(e){if (e.toString().indexOf(ErrStrs.USER_CANCELLED)!=-1) {;} else{alert(localize("$$$/ScriptingSupport/Error/CommandNotAvailable=The command is currently not available"));}}]]></script>
      <eventListeners>
        <function id="onClick" actionType="jsfunction" jsFunctionName="ps_invoke_script">
          <param id="script"/>
        </function>
      </eventListeners>
    </ps_command>
    <ps_command _itemId="Main-Layer-Merge_Visible" scriptID="Main-Layer-Merge_Visible" toolTip="$$$/Main-Layer-Merge_Visible/desc" label="$$$/Main-Layer-Merge_Visible/name" click="onClick" cfgVisible="$$$/Configurator/Attribute/visible/value###37" x="124" y="141" width="96" height="21">
      <script><![CDATA[ErrStrs = {}; ErrStrs.USER_CANCELLED=localize("$$$/ScriptingSupport/Error/UserCancelled=User cancelled the operation"); try {var idMrgV = charIDToTypeID( 'MrgV' ); executeAction( idMrgV, undefined, DialogModes.ALL ); } catch(e){if (e.toString().indexOf(ErrStrs.USER_CANCELLED)!=-1) {;} else{alert(localize("$$$/ScriptingSupport/Error/CommandNotAvailable=The command is currently not available"));}}]]></script>
      <eventListeners>
        <function id="onClick" actionType="jsfunction" jsFunctionName="ps_invoke_script">
          <param id="script"/>
        </function>
      </eventListeners>
    </ps_command>
    <ps_command _itemId="Main-Image-Image_Size" scriptID="Main-Image-Image_Size" toolTip="$$$/Main-Image-Image_Size/desc" label="$$$/Main-Image-Image_Size/name" click="onClick" cfgVisible="$$$/Configurator/Attribute/visible/value###38" x="10" y="169" width="50" height="44">
      <script><![CDATA[ErrStrs = {}; ErrStrs.USER_CANCELLED=localize("$$$/ScriptingSupport/Error/UserCancelled=User cancelled the operation"); try {var idImgS = charIDToTypeID( 'ImgS' ); executeAction( idImgS, undefined, DialogModes.ALL ); } catch(e){if (e.toString().indexOf(ErrStrs.USER_CANCELLED)!=-1) {;} else{alert(localize("$$$/ScriptingSupport/Error/CommandNotAvailable=The command is currently not available"));}}]]></script>
      <eventListeners>
        <function id="onClick" actionType="jsfunction" jsFunctionName="ps_invoke_script">
          <param id="script"/>
        </function>
      </eventListeners>
    </ps_command>
    <ps_command _itemId="Main-Image-Canvas_Size" scriptID="Main-Image-Canvas_Size" toolTip="$$$/Main-Image-Canvas_Size/desc" label="$$$/Main-Image-Canvas_Size/name" click="onClick" cfgVisible="$$$/Configurator/Attribute/visible/value###39" x="68" y="169" width="50" height="44">
      <script><![CDATA[ErrStrs = {}; ErrStrs.USER_CANCELLED=localize("$$$/ScriptingSupport/Error/UserCancelled=User cancelled the operation"); try {var idCnvS = charIDToTypeID( 'CnvS' ); executeAction( idCnvS, undefined, DialogModes.ALL ); } catch(e){if (e.toString().indexOf(ErrStrs.USER_CANCELLED)!=-1) {;} else{alert(localize("$$$/ScriptingSupport/Error/CommandNotAvailable=The command is currently not available"));}}]]></script>
      <eventListeners>
        <function id="onClick" actionType="jsfunction" jsFunctionName="ps_invoke_script">
          <param id="script"/>
        </function>
      </eventListeners>
    </ps_command>
    <ps_command _itemId="Main-View-Gamut_Warning" scriptID="Main-View-Gamut_Warning" toolTip="$$$/Main-View-Gamut_Warning/desc" label="$$$/Main-View-Gamut_Warning/name" click="onClick" cfgVisible="$$$/Configurator/Attribute/visible/value###42" x="126" y="193">
      <script><![CDATA[ErrStrs = {}; ErrStrs.USER_CANCELLED=localize("$$$/ScriptingSupport/Error/UserCancelled=User cancelled the operation"); try {var idslct = charIDToTypeID( 'slct' );     var desc768 = new ActionDescriptor();     var idnull = charIDToTypeID( 'null' );         var ref621 = new ActionReference();         var idMn = charIDToTypeID( 'Mn  ' );         var idMnIt = charIDToTypeID( 'MnIt' );         var idTglG = charIDToTypeID( 'TglG' );         ref621.putEnumerated( idMn, idMnIt, idTglG );     desc768.putReference( idnull, ref621 ); executeAction( idslct, desc768, DialogModes.ALL ); } catch(e){if (e.toString().indexOf(ErrStrs.USER_CANCELLED)!=-1) {;} else{alert(localize("$$$/ScriptingSupport/Error/CommandNotAvailable=The command is currently not available"));}}]]></script>
      <eventListeners>
        <function id="onClick" actionType="jsfunction" jsFunctionName="ps_invoke_script">
          <param id="script"/>
        </function>
      </eventListeners>
    </ps_command>
    <ps_command _itemId="Main-Edit-Clear" scriptID="Main-Edit-Clear" toolTip="$$$/Main-Edit-Clear/desc" label="$$$/Main-Edit-Clear/name" click="onClick" cfgVisible="$$$/Configurator/Attribute/visible/value###43" x="184" y="169" width="36" height="44">
      <script><![CDATA[ErrStrs = {}; ErrStrs.USER_CANCELLED=localize("$$$/ScriptingSupport/Error/UserCancelled=User cancelled the operation"); try {var idDlt = charIDToTypeID( 'Dlt ' ); executeAction( idDlt, undefined, DialogModes.ALL ); } catch(e){if (e.toString().indexOf(ErrStrs.USER_CANCELLED)!=-1) {;} else{alert(localize("$$$/ScriptingSupport/Error/CommandNotAvailable=The command is currently not available"));}}]]></script>
      <eventListeners>
        <function id="onClick" actionType="jsfunction" jsFunctionName="ps_invoke_script">
          <param id="script"/>
        </function>
      </eventListeners>
    </ps_command>
    <watermark height="17" x="$$$/Configurator/watermark/x" width="$$$/Configurator/watermark/width" bottom="0" right="0" y="283" cfgVisible="True">
      <htmlText><![CDATA[$$$/Configurator/watermark/htmlText]]></htmlText>
    </watermark>
    <ps_command _itemId="Main-Edit-Step_Forward" scriptID="Main-Edit-Step_Forward" toolTip="$$$/Main-Edit-Step_Forward/desc###73" label="$$$/Main-Edit-Step_Forward/name###74" click="onClick" cfgVisible="$$$/Configurator/Attribute/visible/value###75" x="10" y="68" width="43" height="37" mouseUpIcon="res/前进01.png" mouseOverIcon="res/前进02.png" mouseDownSkinIcon="res/res0_前进02.png">
      <script><![CDATA[ErrStrs = {}; ErrStrs.USER_CANCELLED=localize("$$$/ScriptingSupport/Error/UserCancelled=User cancelled the operation"); try {var idNxt = charIDToTypeID( 'Nxt ' );     var desc1074 = new ActionDescriptor();     var idnull = charIDToTypeID( 'null' );         var ref846 = new ActionReference();         var idHstS = charIDToTypeID( 'HstS' );         ref846.putClass( idHstS );     desc1074.putReference( idnull, ref846 ); executeAction( idNxt, desc1074, DialogModes.ALL ); } catch(e){if (e.toString().indexOf(ErrStrs.USER_CANCELLED)!=-1) {;} else{alert(localize("$$$/ScriptingSupport/Error/CommandNotAvailable=The command is currently not available"));}}]]></script>
      <eventListeners>
        <function id="onClick" actionType="jsfunction" jsFunctionName="ps_invoke_script">
          <param id="script"/>
        </function>
      </eventListeners>
    </ps_command>
    <ps_command _itemId="Main-Edit-Step_Backward" scriptID="Main-Edit-Step_Backward" toolTip="$$$/Main-Edit-Step_Backward/desc###70" label="$$$/Main-Edit-Step_Backward/name###71" click="onClick" cfgVisible="$$$/Configurator/Attribute/visible/value###72" x="60" y="68" width="43" height="37" mouseUpIcon="res/后退01.png" mouseOverIcon="res/后退02.png" mouseDownSkinIcon="res/res0_后退02.png">
      <script><![CDATA[ErrStrs = {}; ErrStrs.USER_CANCELLED=localize("$$$/ScriptingSupport/Error/UserCancelled=User cancelled the operation"); try {var idPrvs = charIDToTypeID( 'Prvs' );     var desc1073 = new ActionDescriptor();     var idnull = charIDToTypeID( 'null' );         var ref845 = new ActionReference();         var idHstS = charIDToTypeID( 'HstS' );         ref845.putClass( idHstS );     desc1073.putReference( idnull, ref845 ); executeAction( idPrvs, desc1073, DialogModes.ALL ); } catch(e){if (e.toString().indexOf(ErrStrs.USER_CANCELLED)!=-1) {;} else{alert(localize("$$$/ScriptingSupport/Error/CommandNotAvailable=The command is currently not available"));}}]]></script>
      <eventListeners>
        <function id="onClick" actionType="jsfunction" jsFunctionName="ps_invoke_script">
          <param id="script"/>
        </function>
      </eventListeners>
    </ps_command>
    <ps_command _itemId="Main-File-Export-Paths_to_Illustrator" scriptID="Main-File-Export-Paths_to_Illustrator" toolTip="$$$/Main-File-Export-Paths_to_Illustrator/desc###82" label="$$$/Main-File-Export-Paths_to_Illustrator/name###83" click="onClick" cfgVisible="$$$/Configurator/Attribute/visible/value###84" mouseUpIcon="res/AI line.png" mouseOverIcon="res/AI line02.png" mouseDownSkinIcon="res/res0_AI line02.png" x="169" y="70" width="50" height="34">
      <script><![CDATA[ErrStrs = {}; ErrStrs.USER_CANCELLED=localize("$$$/ScriptingSupport/Error/UserCancelled=User cancelled the operation"); try {var idExpr = charIDToTypeID( 'Expr' );     var desc1088 = new ActionDescriptor();     var idUsng = charIDToTypeID( 'Usng' );     var idIllustratorExport.Thisstringmakesmeunique! = stringIDToTypeID( 'Illustrator Export.  This string makes me unique!' );     desc1088.putClass( idUsng, idIllustratorExport.Thisstringmakesmeunique! ); executeAction( idExpr, desc1088, DialogModes.ALL ); } catch(e){if (e.toString().indexOf(ErrStrs.USER_CANCELLED)!=-1) {;} else{alert(localize("$$$/ScriptingSupport/Error/CommandNotAvailable=The command is currently not available"));}}]]></script>
      <eventListeners>
        <function id="onClick" actionType="jsfunction" jsFunctionName="ps_invoke_script">
          <param id="script"/>
        </function>
      </eventListeners>
    </ps_command>
    <ps_command _itemId="Main-File-Save_for_Web" scriptID="Main-File-Save_for_Web" toolTip="$$$/Main-File-Save_for_Web/desc###85" label="$$$/Main-File-Save_for_Web/name###86" click="onClick" cfgVisible="$$$/Configurator/Attribute/visible/value###87" mouseUpIcon="res/导出为web01.png" mouseOverIcon="res/导出为web02.png" mouseDownSkinIcon="res/res0_导出为web02.png" x="111" y="70" width="50" height="34">
      <script><![CDATA[ErrStrs = {}; ErrStrs.USER_CANCELLED=localize("$$$/ScriptingSupport/Error/UserCancelled=User cancelled the operation"); try {var idslct = charIDToTypeID( 'slct' );     var desc1094 = new ActionDescriptor();     var idnull = charIDToTypeID( 'null' );         var ref852 = new ActionReference();         var idMn = charIDToTypeID( 'Mn  ' );         var idMnIt = charIDToTypeID( 'MnIt' );         var idSvfw = charIDToTypeID( 'Svfw' );         ref852.putEnumerated( idMn, idMnIt, idSvfw );     desc1094.putReference( idnull, ref852 ); executeAction( idslct, desc1094, DialogModes.ALL ); } catch(e){if (e.toString().indexOf(ErrStrs.USER_CANCELLED)!=-1) {;} else{alert(localize("$$$/ScriptingSupport/Error/CommandNotAvailable=The command is currently not available"));}}]]></script>
      <eventListeners>
        <function id="onClick" actionType="jsfunction" jsFunctionName="ps_invoke_script">
          <param id="script"/>
        </function>
      </eventListeners>
    </ps_command>
    <ps_command _itemId="Main-Type-Warp_Text" scriptID="Main-Type-Warp_Text" toolTip="$$$/Main-Type-Warp_Text/desc" label="$$$/Main-Type-Warp_Text/name" click="onClick" cfgVisible="$$$/Configurator/Attribute/visible/value###40" x="126" y="170">
      <script><![CDATA[ErrStrs = {}; ErrStrs.USER_CANCELLED=localize("$$$/ScriptingSupport/Error/UserCancelled=User cancelled the operation"); try {var idslct = charIDToTypeID( 'slct' );     var desc677 = new ActionDescriptor();     var idnull = charIDToTypeID( 'null' );         var ref539 = new ActionReference();         var idMn = charIDToTypeID( 'Mn  ' );         var idMnIt = charIDToTypeID( 'MnIt' );         var idwarp = stringIDToTypeID( 'warp' );         ref539.putEnumerated( idMn, idMnIt, idwarp );     desc677.putReference( idnull, ref539 ); executeAction( idslct, desc677, DialogModes.ALL ); } catch(e){if (e.toString().indexOf(ErrStrs.USER_CANCELLED)!=-1) {;} else{alert(localize("$$$/ScriptingSupport/Error/CommandNotAvailable=The command is currently not available"));}}]]></script>
      <eventListeners>
        <function id="onClick" actionType="jsfunction" jsFunctionName="ps_invoke_script">
          <param id="script"/>
        </function>
      </eventListeners>
    </ps_command>
    <ps_script_file _itemId="ps_actionscript_scriptfile" label="$$$/Configurator/ActionScript/ScriptFile/name###115" toolTip="$$$/Configurator/ActionScript/ScriptFile/desc###116" cfgVisible="$$$/Configurator/Attribute/visible/value###117" fileUrl="$$$/Configurator/key_###118" icon="ps_script_file" overIcon="ps_script_file_r" showIcon="true" x="10" y="279" width="210" height="21"/>
    <ps_script_file _itemId="ps_actionscript_scriptfile" label="$$$/Configurator/ActionScript/ScriptFile/name###123" toolTip="$$$/Configurator/ActionScript/ScriptFile/desc###124" cfgVisible="$$$/Configurator/Attribute/visible/value###125" fileUrl="$$$/Configurator/key_###126" icon="ps_script_file" overIcon="ps_script_file_r" showIcon="true" x="119" y="308" width="101" height="21"/>
    <ps_tool _selectID="typeVerticalCreateMaskTool" _itemId="Tool-Vertical_Type_Mask_Tool" icon="SP_TypeVertMask_Lg_N" overIcon="SP_TypeVertMask_Lg_N_D" toolTip="$$$/Tool-Vertical_Type_Mask_Tool/desc" scriptID="Tool-Vertical_Type_Mask_Tool" click="onClick" cfgVisible="$$$/Configurator/Attribute/visible/value###26" width="29" height="26" x="191" y="393">
      <eventListeners>
        <function id="onClick" actionType="jsfunction" jsFunctionName="ps_invoke_script">
          <param id="scriptID"/>
        </function>
      </eventListeners>
    </ps_tool>
    <ps_tool _selectID="typeVerticalCreateOrEditTool" _itemId="Tool-Vertical_Type_Tool" icon="SP_TypeVert_Lg_N" overIcon="SP_TypeVert_Lg_N_D" toolTip="$$$/Tool-Vertical_Type_Tool/desc" scriptID="Tool-Vertical_Type_Tool" click="onClick" cfgVisible="$$$/Configurator/Attribute/visible/value###25" width="29" height="26" x="158" y="393">
      <eventListeners>
        <function id="onClick" actionType="jsfunction" jsFunctionName="ps_invoke_script">
          <param id="scriptID"/>
        </function>
      </eventListeners>
    </ps_tool>
    <ps_tool _selectID="magicStampTool" _itemId="Tool-Healing_Brush_Tool" icon="SP_Heal_Lg_N" overIcon="SP_Heal_Lg_N_D" toolTip="$$$/Tool-Healing_Brush_Tool/desc" scriptID="Tool-Healing_Brush_Tool" click="onClick" cfgVisible="$$$/Configurator/Attribute/visible/value###24" width="29" height="26" x="121" y="393">
      <eventListeners>
        <function id="onClick" actionType="jsfunction" jsFunctionName="ps_invoke_script">
          <param id="scriptID"/>
        </function>
      </eventListeners>
    </ps_tool>
    <ps_tool _selectID="patchSelection" _itemId="Tool-Patch_Tool" icon="SP_Patch_Lg_N" overIcon="SP_Patch_Lg_N_D" toolTip="$$$/Tool-Patch_Tool/desc" scriptID="Tool-Patch_Tool" click="onClick" cfgVisible="$$$/Configurator/Attribute/visible/value###23" width="29" height="26" x="84" y="393">
      <eventListeners>
        <function id="onClick" actionType="jsfunction" jsFunctionName="ps_invoke_script">
          <param id="scriptID"/>
        </function>
      </eventListeners>
    </ps_tool>
    <ps_tool _selectID="customShapeTool" _itemId="Tool-Custom_Shape_Tool" icon="SP_CustomShape_Lg_N" overIcon="SP_CustomShape_Lg_N_D" toolTip="$$$/Tool-Custom_Shape_Tool/desc" scriptID="Tool-Custom_Shape_Tool" click="onClick" cfgVisible="$$$/Configurator/Attribute/visible/value###20" width="29" height="26" x="47" y="393">
      <eventListeners>
        <function id="onClick" actionType="jsfunction" jsFunctionName="ps_invoke_script">
          <param id="scriptID"/>
        </function>
      </eventListeners>
    </ps_tool>
    <ps_tool _selectID="rotateTool" _itemId="Tool-Rotate_View_Tool" icon="SP_RotateView_Lg_N" overIcon="SP_RotateView_Lg_N_D" toolTip="$$$/Tool-Rotate_View_Tool/desc" scriptID="Tool-Rotate_View_Tool" click="onClick" cfgVisible="$$$/Configurator/Attribute/visible/value###19" width="29" height="26" x="10" y="393">
      <eventListeners>
        <function id="onClick" actionType="jsfunction" jsFunctionName="ps_invoke_script">
          <param id="scriptID"/>
        </function>
      </eventListeners>
    </ps_tool>
    <ps_tool _selectID="perspectiveCropTool" _itemId="Tool-Perspective_Crop_Tool" icon="SP_PersepctiveCrop_Md_N" overIcon="SP_PersepctiveCrop_Md_N_D" toolTip="$$$/Tool-Perspective_Crop_Tool/desc" scriptID="Tool-Perspective_Crop_Tool" click="onClick" cfgVisible="$$$/Configurator/Attribute/visible/value###15" width="29" height="26" x="121" y="365">
      <eventListeners>
        <function id="onClick" actionType="jsfunction" jsFunctionName="ps_invoke_script">
          <param id="scriptID"/>
        </function>
      </eventListeners>
    </ps_tool>
    <ps_tool _selectID="BrTl" _itemId="Tool-Burn_Tool" icon="SP_Burn_Lg_N" overIcon="SP_Burn_Lg_N_D" toolTip="$$$/Tool-Burn_Tool/desc" scriptID="Tool-Burn_Tool" click="onClick" cfgVisible="$$$/Configurator/Attribute/visible/value###17" width="29" height="26" x="158" y="365">
      <eventListeners>
        <function id="onClick" actionType="jsfunction" jsFunctionName="ps_invoke_script">
          <param id="scriptID"/>
        </function>
      </eventListeners>
    </ps_tool>
    <ps_tool _selectID="DdTl" _itemId="Tool-Dodge_Tool" icon="SP_Dodge_Lg_N" overIcon="SP_Dodge_Lg_N_D" toolTip="$$$/Tool-Dodge_Tool/desc" scriptID="Tool-Dodge_Tool" click="onClick" cfgVisible="$$$/Configurator/Attribute/visible/value###18" width="29" height="26" x="191" y="365">
      <eventListeners>
        <function id="onClick" actionType="jsfunction" jsFunctionName="ps_invoke_script">
          <param id="scriptID"/>
        </function>
      </eventListeners>
    </ps_tool>
    <ps_tool _selectID="polySelTool" _itemId="Tool-Polygonal_Lasso_Tool" icon="SP_PolygonSelect_Lg_N" overIcon="SP_PolygonSelect_Lg_N_D" toolTip="$$$/Tool-Polygonal_Lasso_Tool/desc" scriptID="Tool-Polygonal_Lasso_Tool" click="onClick" cfgVisible="$$$/Configurator/Attribute/visible/value###16" width="29" height="26" x="84" y="365">
      <eventListeners>
        <function id="onClick" actionType="jsfunction" jsFunctionName="ps_invoke_script">
          <param id="scriptID"/>
        </function>
      </eventListeners>
    </ps_tool>
    <ps_tool _selectID="lassoTool" _itemId="Tool-Lasso_Tool" icon="SP_RegionSelect_Lg_N" overIcon="SP_RegionSelect_Lg_N_D" toolTip="$$$/Tool-Lasso_Tool/desc" scriptID="Tool-Lasso_Tool" click="onClick" cfgVisible="$$$/Configurator/Attribute/visible/value###13" width="29" height="26" x="47" y="365">
      <eventListeners>
        <function id="onClick" actionType="jsfunction" jsFunctionName="ps_invoke_script">
          <param id="scriptID"/>
        </function>
      </eventListeners>
    </ps_tool>
    <ps_tool _selectID="GrTl" _itemId="Tool-Gradient_Tool" icon="SP_Gradient_Lg_N" overIcon="SP_Gradient_Lg_N_D" toolTip="$$$/Tool-Gradient_Tool/desc" scriptID="Tool-Gradient_Tool" click="onClick" cfgVisible="$$$/Configurator/Attribute/visible/value###11" width="29" height="26" x="10" y="365">
      <eventListeners>
        <function id="onClick" actionType="jsfunction" jsFunctionName="ps_invoke_script">
          <param id="scriptID"/>
        </function>
      </eventListeners>
    </ps_tool>
    <ps_script_file _itemId="ps_actionscript_scriptfile" label="$$$/Configurator/ActionScript/ScriptFile/name###127" toolTip="$$$/Configurator/ActionScript/ScriptFile/desc###128" cfgVisible="$$$/Configurator/Attribute/visible/value###129" fileUrl="$$$/Configurator/key_###130" icon="ps_script_file" overIcon="ps_script_file_r" showIcon="true" x="10" y="337" width="210" height="21"/>
    <ps_script _itemId="ps_actionscript_script" label="$$$/Configurator/ActionScript/Script/name###131" toolTip="$$$/Configurator/ActionScript/Script/desc###132" cfgVisible="$$$/Configurator/Attribute/visible/value###133" click="onClick" icon="ps_script" overIcon="ps_script_r" showIcon="true" x="10" y="221" width="210" height="21">
      <script><![CDATA[#target photoshop
app.bringToFront();

// 带自动判断横竖的统一宽高操作。默认是直接保存关闭，原文件要注意备份！ v2.0 - 2008.3.29
// 原发：bbs.blueidea.com  - Photoshop版

var nowTime=new Date();
var PRESOLUTION = 72; 
var startRulerUnits = app.preferences.rulerUnits;
var startTypeUnits = app.preferences.typeUnits;
app.preferences.rulerUnits = Units.PIXELS;
app.preferences.typeUnits = TypeUnits.PIXELS;
var title="批量尺寸调整 v2.0 - "
		
res ="dialog { \
text:'"+title+"直接保存并关闭',\
        group: Group{orientation: 'column',alignChildren:'left',\
				top:StaticText{text:'默认为直接覆盖保存 - 请注意选择或做好备份'},\
				timeline:Progressbar{bounds:[0,0,300,10] , minvalue:0,maxvalue:100}\
				corrdination: Panel { orientation: 'row', \
                        text: '需要尺寸', \
                                x: Group { orientation: 'row', \
                                        s: StaticText { text:'宽:' }, \
                                        e: EditText { preferredSize: [50, 20] } ,\
                                        p: StaticText { text:'px' }, \
                                        }, \
                                y: Group { orientation: 'row', \
                                        s: StaticText { text:'高:' }, \
                                        e: EditText { preferredSize: [50, 20] }, \
                                        p: StaticText { text:'px' }, \
                                        } ,\
                                }, \
				a:Group{ orientation: 'row', \
								c: Checkbox { text:' 保持原图宽高比，新尺寸仅作外框限定',helpTip:'原图比例不变,调整后宽/高均小于等于输入值'} ,\
								}, \
				b:Group{ orientation: 'row', \
								c: Checkbox { text:' 不判断原图横竖',helpTip:'不根据原图的横竖自动对应尺寸,宽/高均以输入为准'} ,\
								}, \
				now:Group{ orientation: 'row', \
								c: Checkbox { text:' 对文件夹进行操作（否则处理所有目前打开的文档）'} ,\
								}, \
				folderO:Group{ orientation: 'row', \
								b: Button {text:'待处理文件夹', properties:{name:'open'} ,helpTip:'选择您需要处理的文件所在的文件夹'},\
								s: EditText  { text:'', preferredSize: [180, 20] },\
								},\
				shui:Group{ orientation: 'row', \
								c: Checkbox { text:' 为图片添加水印'} ,\
								g: Group {\
										one:RadioButton {text:'单一' ,helpTip:'只添加一个水印图,可控制添加位置'},\
										fill:RadioButton {text:'平铺' ,helpTip:'多个水印图平铺布满画面,可控制间距'},\
									}\
								}, \
				shuiSet: Panel {orientation: 'row', \
                        text: '水印设置', \
									position:Group{ orientation: 'column',alignChildren:'left',\
												po1:Group{ orientation: 'row',\
													c1:Checkbox { helpTip:'以左上角为基准', preferredSize: [14, 14]} ,\
													c2:Checkbox { helpTip:'以上中点为基准', preferredSize: [14, 14]} ,\
													c3:Checkbox { helpTip:'以右上角为基准', preferredSize: [14, 14]} ,\
													}, \
												po2:Group{ orientation: 'row', \
													c4:Checkbox { helpTip:'以左中点为基准', preferredSize: [14, 14]} ,\
													c5:Checkbox { helpTip:'以正中心为基准', preferredSize: [14, 14]} ,\
													c6:Checkbox { helpTip:'以右中点为基准', preferredSize: [14, 14]} ,\
													}, \
												po3:Group{ orientation: 'row', \
													c7:Checkbox { helpTip:'以左下角为基准', preferredSize: [14, 14]} ,\
													c8:Checkbox { helpTip:'以下中点为基准', preferredSize: [14, 14]} ,\
													c9:Checkbox { helpTip:'以右下角为基准', preferredSize: [14, 14]} ,\
													}, \
									},\
									other:Group{ orientation: 'column',alignChildren:'left',\
												dis:Group{ orientation: 'row',\
													s1: StaticText { text:'平距:'}, \
													e1: EditText { preferredSize: [55, 20], helpTip:'距离参照点的水平距离;平铺状态下为间距(单位:像素)' } ,\
													s2: StaticText { text:'垂距:'}, \
													e2: EditText { preferredSize: [55, 20], helpTip:'距离参照点的垂直距离;平铺状态下为间距(单位:像素)' } ,\
												},\
												hun:Group{ orientation: 'row',\
													s: StaticText { text:'混合:'}, \
													d:DropDownList { alignment:'left', itemSize: [50,16] },\
													s2: StaticText { text:'缩放:'}, \
													e:EditText{ preferredSize: [38, 20], text:'1',helpTip:'水印与原始水印文件的缩放比例'},\
												},\
												open:Group{ orientation: 'row', \
													b: Button {text:'选择水印文件', properties:{name:'open'} ,helpTip:'请确保文件为常用图片格式,且非gif动画'},\
													e: EditText  { text:'', preferredSize: [86, 20] },\
												},\
									},\
								},\
				other:Group{ orientation: 'row', \
								c: Checkbox {text:' 启用另存'} ,\
								g: Group {\
										jpeg:RadioButton {text:'JPEG'},\
										gif:RadioButton {text:'GIF'},\
										psd:RadioButton {text:'PSD'},\
										tiff:RadioButton {text:'TIFF'},\
									}\
								}, \
				otherSet: Panel {orientation: 'column',alignChildren:'left',\
                        text: '另存设置', \
						Quality: Group { orientation: 'row',  \
									c: Checkbox { text:'转换 ICC 配置',helpTip:'在储存前将 ICC 配置文件转换为 sRGB'} ,\
									s: StaticText { text:'压缩质量:' }, \
									d: DropDownList { alignment:'left', itemSize: [26,14] },\
									c2:Checkbox {text:'透明',helpTip:'包含基于颜色不透明度的透明性'},\
									}, \
						head: Group { orientation: 'row',  \
									s: StaticText { text:'在文件名前添加字符:' }, \
									e: EditText { preferredSize: [50,20] } ,\
									s2: StaticText { text:'勿含非法字符' , enabled:flase }, \
									}, \
						foot: Group { orientation: 'row',  \
									s: StaticText { text:'在文件名后添加字符:' }, \
									e: EditText { preferredSize: [50, 20] }, \
									s2: StaticText { text:'勿含非法字符' , enabled:flase}, \
									} ,\
						otherF:Group{ orientation: 'row', \
									c: Checkbox { text:' 另存至其他文件夹'} ,\
									}, \
						folderS:Group{ orientation: 'row', \
									b: Button {text:'另存至', properties:{name:'save'} ,helpTip:'选择您处理好的文件要保存至的文件夹'},\
									s: EditText  { text:'', preferredSize: [180, 20] },\
									},\
						icc: Checkbox { text:' 储存时包含 ICC 配置文件',helpTip:'存为 GIF 格式时此选项无效'},\
						},\
				},\
        buttons: Group { orientation: 'row', alignment: 'right',\
                s:StaticText {text:'[ABOUT]'},\
				Btnok: Button { text:'确定', properties:{name:'ok'} }, \
                Btncancel: Button { text:'取消', properties:{name:'cancel'} } \
                }, \
}";
		
win = new Window (res);

win.buttons.Btncancel.onClick = function () { //放弃
	app.preferences.rulerUnits = startRulerUnits;
	app.preferences.typeUnits = startTypeUnits;
	this.parent.parent.close();
}
win.buttons.s.onClick = function () {
alert("首发：bbs.blueidea.com  Photoshop专栏\r\n鸣谢：我爱蓝色、银子、蛋蛋、clz8206、洛辰妃子、Wonton",title+"关于");
}

function lock_b(){  //如果勾选了a,则b被锁定
		if(win.group.a.c.value){
				win.group.b.c.value=true;
		}
	}
win.group.a.c.onClick =function() { lock_b()}; 
win.group.b.c.onClick =function() { lock_b()};

// 打开文件夹的操作
var folderOpen=win.group.folderO
var folderSave=win.group.otherSet.folderS

folderOpen.b.onClick = function() { 
		var defaultFolder = folderOpen.s.text;
		var testFolder = new Folder(defaultFolder);
		if (!testFolder.exists) {
			defaultFolder = "~";
		}
		var selFolder = Folder.selectDialog("选择待处理文件夹", defaultFolder);
		if ( selFolder != null ) {
	        folderOpen.s.text = selFolder.fsName;
			folderOpen.s.helpTip = selFolder.fsName.toString();
	    }
}
folderSave.b.onClick = function() { 
		var defaultFolder = folderSave.s.text;
		var testFolder = new Folder(defaultFolder);
		if (!testFolder.exists) {
			defaultFolder = "~";
		}
		var selFolder = Folder.selectDialog("选择要储存至的文件夹", defaultFolder);
		if ( selFolder != null ) {
	        folderSave.s.text = selFolder.fsName;
			folderSave.s.helpTip = selFolder.fsName.toString();
	    }
}
win.group.shuiSet.other.open.b.onClick= function() //打开水印文件
{
    var selFile = File.saveDialog('选择水印文件');
    if ( selFile != null ) {
       win.group.shuiSet.other.open.e.text = selFile.fsName;
    }
}

// 初始化选项
if (app.documents.length == 0){
	win.group.now.c.value = true;
	win.group.folderO.enabled =true;
}else{
	win.group.folderO.enabled =false;
}
win.group.other.g.enabled =false;
win.group.otherSet.enabled =false;
win.group.other.g.jpeg.value = true; //默认保存为jpg
win.group.otherSet.icc.value =true; //默认保存icc
var saveType = "jpeg";
win.group.otherSet.Quality.c2.hide(); //隐藏第二选框
for (i=0;i<13;i++){ //初始化jpeg质量下拉
	win.group.otherSet.Quality.d.add("item", i );
}
win.group.otherSet.Quality.d.items[7].selected=true;
win.group.otherSet.Quality.d.helpTip ='JPEG 压缩质量 (值越大压缩后质量越高)';

win.group.shuiSet.enabled =false;
win.group.shui.g.enabled =false;
win.group.shui.g.one.value =true; //默认一个水印
win.group.shuiSet.position.po3.c9.value=true; //默认右下角

var jiaShui =false; //默认不添加水印

var sBlend=  new Array();
sBlend[0]= "正常,NORMAL";
sBlend[1]= "溶解,DISSOLVE";
sBlend[2]= "变暗,DARKEN";
sBlend[3]= "正片叠底,MULTIPLY";
sBlend[4]= "颜色加深,COLORBURN";
sBlend[5]= "线性加深,LINEARBURN";
sBlend[6]= "变亮,LIGHTEN";
sBlend[7]= "滤色,SCREEN";
sBlend[8]= "颜色减淡,COLORDODGE";
sBlend[9]= "线性减淡,LINEARDODGE";
sBlend[10]= "叠加,OVERLAY";
sBlend[11]= "柔光,SOFTLIGHT";
sBlend[12]= "强光,HARDLIGHT";
sBlend[13]= "亮光,VIVIDLIGHT";
sBlend[14]= "线性光,LINEARLIGHT";
sBlend[15]= "点光,PINLIGHT";
sBlend[16]= "实色混合,HARDMIX";
sBlend[17]= "差值,DIFFERENCE";
sBlend[18]= "排除,EXCLUSION";
sBlend[19]= "色相,HUE";
sBlend[20]= "饱和度,SATURATION";
sBlend[21]= "颜色,COLORBLEND";
sBlend[22]= "明度,LUMINOSITY";
//sBlend[23]= "深色,DARKERCOLOR";
//sBlend[24]= "浅色,LIGHTERCOLOR";

for (i=0;i<23;i++) {
	win.group.shuiSet.other.hun.d.add("item",sBlend[i].substring(0,sBlend[i].indexOf(",")));
}
win.group.shuiSet.other.hun.d.items[0].selected=true;

//操作文件夹开关
win.group.now.c.onClick =function(){
	if (win.group.folderO.enabled) {
		win.group.folderO.enabled =false;
		}else{
		win.group.folderO.enabled =true;
		}
}
//另存开关
win.group.other.c.onClick =function(){
	if (win.group.otherSet.enabled) {
		win.group.other.g.enabled =false;
		win.group.otherSet.enabled =false;
		win.text=title+'直接保存并关闭';
		}else{
		win.group.other.g.enabled = true;
		win.group.otherSet.enabled =true;
		win.text=title+'另存为并关闭';
		if (!win.group.otherSet.otherF.c.value) {win.group.otherSet.folderS.enabled =false}
		}
}
//另存至文件夹开关
win.group.otherSet.otherF.c.onClick =function(){
	if (win.group.otherSet.folderS.enabled) {
		win.group.otherSet.folderS.enabled =false;		
		}else{
		win.group.otherSet.folderS.enabled =true;		
		}
}
//水印开关
win.group.shui.c.onClick =function(){
	if (win.group.shui.g.enabled) {
		win.group.shui.g.enabled =false;
		win.group.shuiSet.enabled =false;
		}else{
		win.group.shui.g.enabled =true;
		win.group.shuiSet.enabled =true;
		}
}
//定位开关
var allp=win.group.shuiSet.position;
function pointClear(nowP) {			
			allp.po1.c1.value =false;
			allp.po1.c2.value =false;
			allp.po1.c3.value =false;
			allp.po2.c4.value =false;
			allp.po2.c5.value =false;
			allp.po2.c6.value =false;
			allp.po3.c7.value =false;
			allp.po3.c8.value =false;
			allp.po3.c9.value =false;
			nowP.value =true;
	}
allp.po1.c1.onClick =function() {pointClear(this)}
allp.po1.c2.onClick =function() {pointClear(this)}
allp.po1.c3.onClick =function() {pointClear(this)}
allp.po2.c4.onClick =function() {pointClear(this)}
allp.po2.c5.onClick =function() {pointClear(this)}
allp.po2.c6.onClick =function() {pointClear(this)}
allp.po3.c7.onClick =function() {pointClear(this)}
allp.po3.c8.onClick =function() {pointClear(this)}
allp.po3.c9.onClick =function() {pointClear(this)}

//格式选项转换
win.group.other.g.jpeg.onClick =function() {
	changeType("jpeg");}
win.group.other.g.gif.onClick =function() {
	changeType("gif");}
win.group.other.g.psd.onClick =function() {
	changeType("psd");}
win.group.other.g.tiff.onClick =function() {
	changeType("tiff");}

//格式选项控制
function changeType(type){
	saveType=type;
	var don=win.group.otherSet.Quality;
		switch (type) {
		case "jpeg" :			
			don.c.text ='转换 ICC 配置' ;
			don.c.helpTip ='在储存前将 ICC 配置文件转换为 sRGB'
			don.c.value =false;
			don.s.text ='压缩质量:';
			don.d.helpTip ='JPEG 压缩质量 (值越大压缩后质量越高)';
			don.d.removeAll();
			for (i=0;i<13;i++){
				don.d.add("item", i );
			}
			don.d.items[7].selected=true;
			don.s.show();			
			don.d.show();
			don.c2.hide();
			win.text=title+'另存为 JPG 格式';
			break;
		case "gif" :
			don.c.text ='启用扩散仿色' ;
			don.c.helpTip ='储存为 GIF 格式时使用扩散防色算法'
			don.c.value =true;
			don.s.text ='颜色位数:';
			don.d.helpTip ='GIF 颜色位数 (值越大压缩后质量越高)';
			don.d.removeAll();
			for (i=2;i<257;i=i*2){
				don.d.add("item",i);
			}
			don.d.items[7].selected=true;
			don.c2.value =true;		
			don.s.show();
			don.d.show();
			don.c2.show();			
			win.text=title+'另存为 GIF 格式';
			break;
		case "psd" :
			don.c.text  ='最大兼容' ;
			don.c.helpTip ='储存为 PSD 格式是实现最大兼容'
			don.c.value =true;
			don.s.hide();
			don.d.hide();
			don.c2.hide();
			win.text=title+'另存为 PSD 格式';
			break;
		case "tiff" :
			don.c.text  ='LZW压缩' ;
			don.c.helpTip ='用 TIFF 格式储存时使用 LZW 压缩'
			don.c.value =false;
			don.s.hide();
			don.d.hide();
			don.c2.hide();
			win.text=title+'另存为 TIFF 格式';
		} 
	win.reload(); 
}

function fillPattern(name,id,opacity) {  //填充图案
    var desc4 = new ActionDescriptor();
    desc4.putEnumerated( charIDToTypeID( "Usng" ), charIDToTypeID( "FlCn" ), charIDToTypeID( "Ptrn" ) );
        var desc5 = new ActionDescriptor();
        desc5.putString( charIDToTypeID( "Nm  " ), name );
        //desc5.putString(  charIDToTypeID( "Idnt" ), id );
    desc4.putObject( charIDToTypeID( "Ptrn" ), charIDToTypeID( "Ptrn" ), desc5 );
    desc4.putUnitDouble( charIDToTypeID( "Opct" ), charIDToTypeID( "#Prc" ), opacity );
    desc4.putEnumerated( charIDToTypeID( "Md  " ), charIDToTypeID( "BlnM" ), charIDToTypeID( "Nrml" ) );
	executeAction( charIDToTypeID( "Fl  " ), desc4, DialogModes.NO );
};
function setPattern(name) { //定义图案
    var desc13 = new ActionDescriptor();
        var ref7 = new ActionReference();
        ref7.putClass( charIDToTypeID("Ptrn") );
    desc13.putReference( charIDToTypeID("null"), ref7 );
        var ref8 = new ActionReference();
        ref8.putProperty( charIDToTypeID("Prpr"),charIDToTypeID("fsel") );
        ref8.putEnumerated( charIDToTypeID("Dcmn"), charIDToTypeID("Ordn"), charIDToTypeID("Trgt") );
    desc13.putReference( charIDToTypeID("Usng"), ref8 );
    desc13.putString( charIDToTypeID("Nm  "), name );
executeAction( charIDToTypeID("Mk  "), desc13, DialogModes.NO );	
}
function delPattern(){ //删除图案
    var desc92 = new ActionDescriptor();
        var ref53 = new ActionReference();
        ref53.putIndex( charIDToTypeID( "Ptrn" ), 178 );
    desc92.putReference( charIDToTypeID( "null" ), ref53 );
executeAction( charIDToTypeID( "Dlt " ), desc92, DialogModes.NO );
}

// 实际处理开始
function newsize(docRef,a,b,x,y){ //改变图象尺寸函数
			var PW=x;
			var PH=y;	
			if (x<1 || y<1) b=true; //有一个值空缺的时候，不判断横竖			
			if (!b && x<y){  //确保PW>=PH
				PW=y;
				PH=x;
				}	
			
			var dw = docRef.width;
			var dh = docRef.height;

			var fw = PW;
			var fh = PH;
			
			if(!b && dh>dw){
				fw = PH;
				fh = PW;
			}
		
			if (x<1) fw=dw; //尺寸小于1则为 不做改变
			if (y<1) fh=dh;
		
			if(a){
				w1 =dw/fw;
				h1 =dh/fh;					
				if(w1>h1){
					fh =dh/w1;	
				}else{
					fw =dw/h1;
				}			
				if (x<1 && y>=1) {fw=dw/h1;fh=y;} //有1个值不做限定的情况
				if (y<1 && x>=1) {fh =dh/w1;fw=x;}
			}
	docRef.resizeImage(fw, fh, PRESOLUTION, ResampleMethod.BICUBIC);
}

function shui(){ //水印处理函数
	if (!win.group.shuiSet.other.open.e.text) {
		alert("您没有选择水印文件");
	}else{
			var shuiFlie = File(win.group.shuiSet.other.open.e.text);
			docShui= open(shuiFlie);
			docShui.changeMode(ChangeMode.RGB);
			if (docShui.layers.length>1) docShui.mergeVisibleLayers(); //合并可见层
			var shuiLayer = docShui.activeLayer; 
			
			if (parseInt(shuiLayer.bounds.toString().replace(/\D/g,"")) == 0) {
				docShui.close(SaveOptions.DONOTSAVECHANGES);
				if(confirm("水印文件内容为空，继续操作将不会添加任何水印")) go(false);//继续操作，只是不添加水印		
			}else{
				//拷贝水印
				var suo=Number(win.group.shuiSet.other.hun.e.text);
				if (!suo) suo=1; //容错
				if (suo<0) suo=1;
				docShui.resizeImage(docShui.width*suo,docShui.height*suo,PRESOLUTION, ResampleMethod.BICUBIC); //变换水印大小
				var sW=Number(shuiLayer.bounds[2]-shuiLayer.bounds[0]);
				var sH=Number(shuiLayer.bounds[3]-shuiLayer.bounds[1]);
				docShui.selection.selectAll();
				docShui.selection.copy();
				docShui.close(SaveOptions.DONOTSAVECHANGES);				
				//新建文档定义水印为图案
				if (win.group.shui.g.fill.value){
					var newDR = app.documents.add(Number(win.group.shuiSet.other.dis.e1.text)+sW, Number(win.group.shuiSet.other.dis.e2.text)+sH, 72, "ShuiTu", NewDocumentMode.RGB, DocumentFill.TRANSPARENT); 
					newDR.paste();
					newDR.selection.selectAll();
					setPattern("BlueIdea-Script-Watermark-"+nowTime.toString());
					newDR.close(SaveOptions.DONOTSAVECHANGES);					
					newDR= null;
					}
				go(true,sW,sH);
			}
	}
}

function pasteShui(nWidth,nHeight,moveX,moveY,sW,sH,sHun){ //粘贴水印及偏移or 填充
	app.activeDocument.changeMode(ChangeMode.RGB);
	if(win.group.shui.g.one.value){
				switch (true) {
					case (allp.po1.c1.value||allp.po2.c4.value||allp.po3.c7.value):
						NowMX=moveX-nWidth/2+sW/2;
						break;
					case (allp.po1.c2.value||allp.po2.c5.value||allp.po3.c8.value):
						NowMX=moveX;
						break;
					case (allp.po1.c3.value||allp.po2.c6.value||allp.po3.c9.value):
						NowMX=nWidth/2-moveX-sW/2;
						break;
					default :
						NowMX=0;
				}
				switch (true) {
					case (allp.po1.c1.value||allp.po1.c2.value||allp.po1.c3.value):
						NowMY=moveY-nHeight/2+sH/2;
						break;
					case (allp.po2.c4.value||allp.po2.c5.value||allp.po2.c6.value):
						NowMY=moveY;
						break;
					case (allp.po3.c7.value||allp.po3.c8.value||allp.po3.c9.value):
						NowMY=nHeight/2-moveY-sH/2;
						break;
					default :
						NowMY=0;
				} 				
				app.activeDocument.paste();
				app.activeDocument.activeLayer.translate (NowMX,NowMY); 
	}else{
			app.activeDocument.artLayers.add();
			app.activeDocument.selection.selectAll();
			fillPattern("BlueIdea-Script-Watermark-"+nowTime.toString(),"id",100); 
	}
	app.activeDocument.activeLayer.blendMode =eval("BlendMode."+sHun);
}

function save(docRef) {	//储存函数
		if (win.group.other.c.value){ //判断是否另存
			var don=win.group.otherSet.Quality; 
			var inEmbedICC=win.group.otherSet.icc.value;
			var saveOptions;
			switch (saveType) {
				case "jpeg" :
							docRef.flatten() ;//合并图层，以储存jpg							
							docRef.changeMode(ChangeMode.RGB); // 更改为rgb模式，避免其它模式无法储存
							docRef.bitsPerChannel = BitsPerChannelType.EIGHT;
							saveOptions = new JPEGSaveOptions();
							saveOptions.quality = don.d.selection.index; //获取压缩质量
							if (don.c.value) {
								docRef.convertProfile("sRGB IEC61966-2.1", Intent.RELATIVECOLORIMETRIC, true, true);
								}
							saveOptions.embedColorProfile = inEmbedICC;
							var typeName="jpg"; //定义后缀
							break;
				case "gif" :
							if (docRef.artLayers.length>1)docRef.mergeVisibleLayers(); //合并可见层
							docRef.changeMode(ChangeMode.RGB); 
							saveOptions = new GIFSaveOptions();
							saveOptions.colors = Math.pow(2,don.d.selection.index+1); 
							if (don.c.value){
								saveOptions.dither = Dither.DIFFUSION; //扩散仿色		
								}else{
								saveOptions.dither = Dither.NONE;	
								} ;
							if (don.c2.value) {
								saveOptions.transparency=1;
								}else{
								saveOptions.transparency=0;
								};
							//saveOptions.matte = MatteType.NONE; //杂边无，否则为白色
							saveOptions.interlaced = 0; //不交错
							var typeName="gif"; 
							break;
				case "psd" :
							saveOptions = new PhotoshopSaveOptions();
							saveOptions.embedColorProfile = inEmbedICC;							
							var typeName="psd"; 
							break;
				case "tiff" :
							docRef.flatten() ;	
							saveOptions = new TiffSaveOptions();
							saveOptions.embedColorProfile = inEmbedICC;
							if (don.c.value) {
								saveOptions.imageCompression = TIFFEncoding.TIFFLZW;
							} else {
								saveOptions.imageCompression = TIFFEncoding.NONE;
							}
							var typeName="tif";	
							break;
				default :
							alert ("-_-!!! SaveType");
				}
			
				// 获取另存文件夹及前后追加字段
				var headWord = win.group.otherSet.head.e.text;
				var footWord = win.group.otherSet.foot.e.text;	
				
				if (win.group.otherSet.otherF.c.value){ //如果选中另存至文件夹
							if (win.group.otherSet.folderS.s.text){ 
								var saveFolder = win.group.otherSet.folderS.s.text+"/";	
							}else{	
								var saveFolder = docRef.path+"/newsize_";  //容错，避免没有具体选择另存到那个文件夹
							}
				}else{
							if (headWord || footWord){
								var saveFolder = docRef.path+"/";
							}else{
								var saveFolder = docRef.path+"/newsize_"; //容错，避免没有添加前后缀而保存在本文件夹
							}
				}

				if (docRef.name.lastIndexOf('.')==-1){  //根据原文件名有否后缀，判断是否去掉后缀
						var oldname=docRef.name;
					}else{
						var oldname=docRef.name.substring(0,docRef.name.lastIndexOf('.'));
					}
				
			docRef.saveAs(new File(saveFolder + headWord + oldname + footWord + "."+ typeName),saveOptions, true,Extension.LOWERCASE);	//设定输出文件名称			
		}else{
			docRef.save();
		}
		docRef.close(SaveOptions.DONOTSAVECHANGES); //关闭当前文档	
}

function go(shuiOK,sW,sH) { //最后循环处理及关闭
		var x=Number(win.group.corrdination.x.e.text);
		var y=Number(win.group.corrdination.y.e.text);
		var a=win.group.a.c.value;
		var b=win.group.b.c.value; //选中则不颠倒横竖，以输入值为准	
	
		if (saveType=="psd"){ //变更首选项
		var rememberMaximize = app.preferences.maximizeCompatibility; //psd格式最大兼容 原始选项 --记录
		var needMaximize = win.group.otherSet.Quality.c.value? QueryStateType.ALWAYS : QueryStateType.NEVER; 
			if ( app.preferences.maximizeCompatibility != needMaximize ) {
						app.preferences.maximizeCompatibility = needMaximize;
				}
		}		
		
		if (shuiOK){ //获取水印偏移量及混合模式
		var mdis =win.group.shuiSet.other.dis;
		var moveX=Number(mdis.e1.text),moveY=Number(mdis.e2.text);
			for (i=0;i<23;i++) {
				if (win.group.shuiSet.other.hun.d.items[i].selected==true){
					var sHun=sBlend[i].substring(sBlend[i].indexOf(",")+1);
					break;
					}
			}
		}
		
		if (!win.group.now.c.value) {  // 当前活动文档为操作对象	
				var k=100/app.documents.length; //定义每个文件所占进度比例
				while (app.documents.length){ 
						var docRef = app.activeDocument; 
						newsize(docRef,a,b,x,y);
						if(shuiOK) pasteShui(Number(docRef.width),Number(docRef.height),moveX,moveY,sW,sH,sHun);
						save(docRef);
						win.group.timeline.value =win.group.timeline.value+k;
				}
		}else{ // 文件夹为操作对象			
				var openFolder = Folder(win.group.folderO.s.text);				
				var fileList = openFolder.getFiles() //获取open文件夹下所有文件
				var k=100/fileList.length;
				for (i=0;i<fileList.length;i++){
					if (fileList[i] instanceof File && fileList[i].hidden == false){ //不处理隐藏文件
						open(fileList[i]); 
						var docRef = app.activeDocument; 
						newsize(docRef,a,b,x,y);
						if(shuiOK) pasteShui(Number(docRef.width),Number(docRef.height),moveX,moveY,sW,sH,sHun);
						save(docRef);
					}
					win.group.timeline.value =win.group.timeline.value+k;
				}
		}
	
	if ( rememberMaximize != undefined )  app.preferences.maximizeCompatibility = rememberMaximize;  //psd格式最大兼容选项还原 
	app.preferences.rulerUnits = startRulerUnits;
	app.preferences.typeUnits = startTypeUnits;
	if (shuiOK && win.group.shui.g.fill.value) delPattern(); //清除图案定义
	this.parent.parent.close();

}

win.buttons.Btnok.onClick = function () {	
		if (win.group.shui.c.value) {
			shui(); //处理水印及最后完成
		}else{
			go(false);
		}
}

win.center();
win.show();

]]></script>
      <eventListeners>
        <function id="onClick" actionType="jsfunction" jsFunctionName="ps_invoke_script">
          <param id="script"/>
        </function>
      </eventListeners>
    </ps_script>
    <ps_script _itemId="ps_actionscript_script" label="$$$/Configurator/ActionScript/Script/name###134" toolTip="$$$/Configurator/ActionScript/Script/desc###135" cfgVisible="$$$/Configurator/Attribute/visible/value###136" click="onClick" icon="ps_script" overIcon="ps_script_r" showIcon="true" x="10" y="308" width="101" height="21">
      <script><![CDATA[/*
<javascriptresource>
<name>XSHOCK_GenerateDummyText</name>
<about>XSHOCK Photoshop-Script | By Matthias Schuetz | http://blog.xshock.de | http://www.xshock.de</about>
<category>XSHOCK</category>
</javascriptresource>

Lorem Ipsum generater idea based on the code written by Captain Cursor,
aka Taylor (http://www.captaincursor.com/) and later adapted by Travis 
Spencer (http://travisspencer.com/). The web version has been adapted 
from Will Munslow (http://subterrane.com) version specially for Loremipsum.de

This code is public domain. If you use it, please provide credits to to all of the above.
Lorem Ipsum Generator credits for idea and code to Captain Cursor, Travis Spencer and Will Munslow.
*/

var loremString = "latin";

function objectTag()
{
    	var lorem = new Array();

    	switch(loremString)
    	{
    		case "latin":
    		{
				lorem[0] = "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. ";
				lorem[1] = "Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. ";
				lorem[2] = "Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. ";
				lorem[3] = "Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. ";
				lorem[4] = "Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. ";
				lorem[5] = "At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. ";
				lorem[6] = "Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. ";
    			break;
    		}
    	}

        if( "characters" == genType )
        {
        	var outputString = '';
            var numOfChars = dlg.inputText.text;
            numOfChars = parseInt( numOfChars );
            var tempString = lorem.join( "\n\n" );
            while ( outputString.length < numOfChars ) outputString += tempString;
				 dlg.outputText.text = outputString.substring(0, numOfChars );
        }
        else if( "words" == genType )
        {
            var numOfWords = dlg.inputText.text;
            numOfWords = parseInt( numOfWords );

            var list = new Array();
            var wordList = new Array();
            wordList = lorem[ 0 ].split( ' ' );
            var iParagraphCount = 0;
            var iWordCount = 0;

            while( list.length < numOfWords )
            {
            	if( iWordCount > wordList.length )
            	{
            		iWordCount = 0;
            		iParagraphCount++;
            		if( iParagraphCount + 1 > lorem.length ) iParagraphCount = 0;
            		wordList = lorem[ iParagraphCount ].split( ' ' );
            		wordList[ 0 ] = "\n\n" + wordList[ 0 ];
            	}

            	list.push( wordList[ iWordCount ] );

            	iWordCount++;
            }
				 dlg.outputText.text = list.join( ' ' );
        }
        else
        {
            var numOfParagraphs = dlg.inputText.text;
            numOfParagraphs = parseInt( numOfParagraphs );

            var list = new Array();
			var iParagraphCount = 0;

            while( list.length < numOfParagraphs )
            {
            	if( iParagraphCount +1 > lorem.length )
            	{
            		iParagraphCount = 0;
            	}

            	list.push( lorem[ iParagraphCount ] );
            	iParagraphCount++;
            }
				 dlg.outputText.text = list.join( "\n\n" );
        }
}

if (app.documents.length > 0) {
	try {
		var genType = "words";
		var dlg = new Window('dialog', 'Generate dummy text');
		dlg.bounds = {x:0, y:0, width:402, height:410};
		dlg.inputPanel = dlg.add ('panel', [15,10,250,96], 'Settings');
		dlg.descText = dlg.inputPanel.add('statictext', [10,13,55,30], "Number");
		dlg.inputText = dlg.inputPanel.add('edittext', [58,10,100,30], 50, {multiline:false});

		dlg.wordOption = dlg.inputPanel.add('radiobutton', [110,11,220,30], 'Words'); 
		dlg.characterOption = dlg.inputPanel.add('radiobutton', [110,27,220,50], 'Characters'); 
		dlg.paragraphOption = dlg.inputPanel.add('radiobutton', [110,43,220,70], 'Paragraphs');

		dlg.wordOption.value = true;
		
		dlg.outputPanel = dlg.add ('panel', [15,100,387,395], 'Dummy text');
		dlg.outputText = dlg.outputPanel.add('edittext', [10,11,357,275], '', {multiline:true});
		
		dlg.inputText.active = true;
		dlg.okBtn = dlg.add('button', [259,15,387,35], 'Generate', {name:'ok'});
		dlg.canelBtn = dlg.add('button', [259,40,387,60], 'Close', {name:'cancel'});
		
		dlg.wordOption.onClick = function() { genType = "words"; }
		dlg.characterOption.onClick = function() { genType = "characters"; }
		dlg.paragraphOption.onClick = function() { genType = "paragraphs"; }

		dlg.okBtn.onClick = function() {
			objectTag();
		}
	
		dlg.canelBtn.onClick = function() {
			dlg.close();
		}

		dlg.center();
		dlg.show();
	}
	catch (e) { }
}]]></script>
      <eventListeners>
        <function id="onClick" actionType="jsfunction" jsFunctionName="ps_invoke_script">
          <param id="script"/>
        </function>
      </eventListeners>
    </ps_script>
    <ps_script _itemId="ps_actionscript_script" label="$$$/Configurator/ActionScript/Script/name###140" toolTip="$$$/Configurator/ActionScript/Script/desc###141" cfgVisible="$$$/Configurator/Attribute/visible/value###142" click="onClick" icon="ps_script" overIcon="ps_script_r" showIcon="true" x="10" y="250" width="210" height="21">
      <script><![CDATA[#target photoshop
app.bringToFront();

var PRESOLUTION = 72; 
var startRulerUnits = app.preferences.rulerUnits;
var startTypeUnits = app.preferences.typeUnits;
app.preferences.rulerUnits = Units.PIXELS;
app.preferences.typeUnits = TypeUnits.PIXELS;
var myDoc=app.activeDocument;
var samplings=new Array();
var myEnd=false;

res ="dialog { \
text:'图案随机分布',\
        group: Group{orientation: 'column',alignChildren:'left',alignment: 'left',\
				number:Group{ orientation: 'row', \
									s: StaticText { text:'生成数量:' },\
									e: EditText  { text:'100', preferredSize: [50, 18]},\
									},\
				maxSize:Group{ orientation: 'row', \
									s: StaticText { text:'最大半径 (px):' },\
									e: EditText  { text:'100', preferredSize: [50, 18]},\
									},\
				minSize: Group { orientation: 'row',  \
									s: StaticText { text:'最小半径 (px):' },\
									e: EditText  { text:'5', preferredSize: [50, 18]},\
									}, \
				minSpace: Group { orientation: 'row',  \
									s: StaticText { text:'最小间距 (px):' },\
									e: EditText  { text:'5', preferredSize: [50, 18]},\
									}, \
				myType: Group {orientation: 'row',  \
									s: StaticText { text:'生成模式:' },\
									typeA:RadioButton {text:'紧密'},\
									typeB:RadioButton {text:'散乱'},\
									},\
				timeline:Progressbar{bounds:[0,0,200,10] , minvalue:0,maxvalue:100}\
		},\
		origin:Group {orientation: 'row',alignment: 'left',\
				s: StaticText { text:'图案来源:' },\
				originA:RadioButton {text:'剪贴板内容',helpTip:'选择此项时，请确保您的剪贴板中存在图像内容'},\
				originB:RadioButton {text:'文件',helpTip:'选中此项后，请选择图案文件添加至下方的文件列表'},\
		},\
		files:Group{ orientation: 'column',alignChildren:'left',\
				source: Group { orientation: 'row',  \
									s: StaticText { text:'使用:' }, \
									d: DropDownList { alignment:'left', itemSize: [100,14] },\
									}, \
				fileList:ListBox {preferredSize: [200, 100],properties:{multiselect:true}},\
				buttons: Group { orientation: 'row', alignment: 'left',\
						browseB: Button { text:'浏览',preferredSize: [40, 22],helpTip:'添加文件或文件夹内容'},\
						removeB: Button { text:'移去',preferredSize: [40, 22],helpTip:'移除已经存在的列表项'} ,\
						addOpenDocsB: Button { text:'添加打开的文件',preferredSize: [105, 22],helpTip:'添加当前已经打开的文件 (注意目标文件也会被添加)'} ,\
				},\
		},\
		buttons: Group { orientation: 'row', alignment: 'right',\
				Btnok: Button { text:'确定'},\
				Btncancel: Button { text:'取消'} ,\
		},\
}";
		
win = new Window (res);

///////////////////////////////////////////////////////////////////////
	function photoshopFileOpenDialog(){
	result = new Array();
	var nlist = app.openDialog();	
	for (var i = 0; i < nlist.length; i++)
	{
		var s = decodeURI(nlist[i].toString());
		s = s.replace(/^file:\/\//, "");
		if ($.os.match(/^Windows.*/))
			s = s.replace(/^\/(.):\//, "/$1/");
		result.push(s);
	}	
	return result;
}
function winFileSelection( f )
{
	var suffix = f.name.match(/[.](\w+)$/);
	var t;	
	if (suffix && suffix.length == 2)
	{
		suffix = suffix[1].toUpperCase();
		for (t in app.windowsFileTypes)
			if (suffix == app.windowsFileTypes[t])
			{
				if (f.name.slice(0,2) != "._")
					return true;
			}
	}
	return false;
}

function macFileSelection( f )
{
	var t;
	for (t in app.macintoshFileTypes)
		if (f.type == app.macintoshFileTypes[t])
			return true;	
	return winFileSelection( f );	
}

function StackElement( f )
{
	this.file = f;
	this.fName = decodeURI(f.name);
	this.fFullName = this.file.path + "/" + this.file.name;
	this.fAlreadyOpen = false;
	this.fPSDoc = null;
	this.fExposure = 0.0;
	this.fAperture = 0.0;
	this.fLightroomDocID = null;
	this.fLightroomOpenParams = null;
	this.fLightroomSaveParams = null;
	this.fLightroomBridgeTalkID = null;
	this.fISOValue = 0;
	this.fCameraID = "UNKNOWN_CAMERA";

	// Keep track of documents that were already open, so we don't close them
	var i;
	for (i = 0; i < app.documents.length; ++i)
	{
		var curName = null;
		try {
			// This fails if it's not saved.
			curName = app.documents[i].fullName;
		}
		catch (err) {
			continue;
		}
		if ((this.fFullName) == curName)
		{
			// Must also set these here, because silentOpen isn't called.
			this.setDocParams( app.documents[i] );
			this.fAlreadyOpen = true;
			break;
		}
	}
}
StackElement.prototype.setDocParams = function( srcDoc )
{
	this.fPSDoc = srcDoc;
	this.fWidth = this.fPSDoc.width.as("px");	
	this.fHeight= this.fPSDoc.height.as("px");
}

//----------------------

	var mergeFiles = new Array();
	var fileMenuItem = 		localize("$$$/Project/Exposuremerge/Files/Files=Files");
	var folderMenuItem = 	localize("$$$/Project/Exposuremerge/Files/Folder=Folder");
	var openFilesMenuItem = localize("$$$/Project/Exposuremerge/Files/Open=Open Files");

	function enableControls() { //移去按钮有效
		win.files.buttons.removeB.enabled =(mergeFiles.length > 0) && win.files.fileList.selection;
	}
	
	function addFileToList(f)
	{
		var i;
		if (f == null)
			return;
			
		for (i in mergeFiles)
			if (f.toString() == mergeFiles[i].file.toString())	// Already in list?
				return;
				
		// Windows - use filter to skip evil sidecar files
		if ((File.fs == "Windows") && !winFileSelection( f ))
			return;

		var fileList = win.files.fileList;
		fileList.add('item', File.decode(f.name) );
		mergeFiles.push(new StackElement(f));
	}
		
	function removeOnClick() {
		var i, s;
		var selList = win.files.fileList.selection;
		for (s in selList)
		{
			for (i in mergeFiles)
				if (File.decode(mergeFiles[i].file.name) == selList[s].text)
				{
					mergeFiles.splice(i,1);
					break;
				}
			win.files.fileList.remove(selList[s]);
		}
		enableControls();
	}

	function browseOnClick() {
		// Spring back to the "File..." menu item
		var menu = win.files.source.d;
		//menu.items[0].selected = true;
		switch (menu.selection.text)
		{
			case fileMenuItem:
			{
				var i, filenames = photoshopFileOpenDialog();
				if (filenames.length)
				{
					if (File.fs == "Macintosh")	// Mac gratiuitously scrambles them...why?
						filenames.sort();
					for (i in filenames)
						addFileToList( File(filenames[i]) );
				}
				break;
			}
			case folderMenuItem:
			{
				var folder = Folder.selectDialog(localize('$$$/AdobePlugin/Exposuremerge/FolderSelect=Select folder'));
				if (folder)
				{
					fileList = folder.getFiles( $.os.match(/^Macintosh.*/) ? macFileSelection : winFileSelection );
					var f;
					for (f in fileList)
						addFileToList(fileList[f]);
				}
				break;
			}
		}
		enableControls();
		return;
	}
	
	function addOpenDocuments()
	{
		var gaveUnsavedWarning = false;

		// doc.saved is true when a new empty document is created.
		function isReallySaved( doc )
		{
			if (! doc.saved)
				return false;
			try
			{
				var n = doc.fullName;
			}
			catch (err)	// Mainly for err.number == 8103, error.message == "The document has not yet been saved"
			{				// But if anything else goes wrong, we still don't want it.
				return false;
			}
			return true;
		}
		
		var i, haveUnsavedDocuments = false;
		for (i = 0; i < app.documents.length; i++)
			if (isReallySaved(app.documents[i]))
				addFileToList( File( app.documents[i].fullName ) );
			else
				haveUnsavedDocuments = true;
				
		if (haveUnsavedDocuments && !gaveUnsavedWarning)
		{
			alert(localize('$$$/AdobePlugin/Exposuremerge/Mustsave=Documents must be saved before they can be merged'));
			gaveUnsavedWarning = true;
			win.files.source.d.items[0].selected = true;
		}
		enableControls();
	}
	
	function sourceMenuOnChange()
	{
		var menu = win.files.source.d;
		switch (menu.selection.text) 
		{
			case fileMenuItem:		break;		// default
			case folderMenuItem:		break;
			case openFilesMenuItem:
				addOpenDocuments();
				break;
		}
	}

	function listOnChange()
	{
		enableControls();
	}
	
	// 设置来源下拉菜单
	var menu = win.files.source.d;
	menu.add( 'item', fileMenuItem );
	menu.add( 'item', folderMenuItem );
	
	// The "addOpenDocs" button was added at the last moment.  If it's
	// there, then use that in favor of the menu.
	var addOpenDocsButton = win.files.buttons.addOpenDocsB;
	// Really, you want to disable the menu, but that's not possible w/ScriptUI
	if (app.documents.length > 0 && !addOpenDocsButton)
		menu.add( 'item', openFilesMenuItem ); 
	menu.items[0].selected = true;
	
	var fileSelection;
	
	win.files.buttons.browseB.onClick  = browseOnClick;
	win.files.fileList.onChange = listOnChange;
	win.files.buttons.removeB.onClick = removeOnClick;
	win.files.source.d.onChange = sourceMenuOnChange;
	
	if (addOpenDocsButton)	{
		addOpenDocsButton.onClick = addOpenDocuments;
		addOpenDocsButton.enabled = app.documents.length > 0;
	}else{		
		addOpenDocuments();
	}	
///////////////////////////////////////////////////////////////////////
//初始化
win.group.myType.typeA.value=true;
enableControls();
win.origin.originA.value=true;
win.files.enabled=false;

function originOnChange(){
	if (win.origin.originA.value){
		win.files.enabled=false;		
	}else{
		win.files.enabled=true;
	}
}
win.origin.originA.onClick=originOnChange;
win.origin.originB.onClick=originOnChange;
//////

function point(x,y,r,name){ //定义点对象的属性
		this.centerX=x;
		this.centerY=y;
		this.radius=r;
		this.origin=name;
}

function print(x,y,bl){ // Ctrl+t
    var desc9 = new ActionDescriptor();
        var ref6 = new ActionReference();
        ref6.putEnumerated( charIDToTypeID( "Lyr " ), charIDToTypeID( "Ordn" ), charIDToTypeID( "Trgt" ) );
    desc9.putReference( charIDToTypeID( "null" ), ref6 );
    desc9.putEnumerated( charIDToTypeID( "FTcs" ), charIDToTypeID( "QCSt" ), charIDToTypeID( "Qcsa" ));
        var desc10 = new ActionDescriptor();
        desc10.putUnitDouble( charIDToTypeID( "Hrzn" ), charIDToTypeID( "#Pxl" ), x );
        desc10.putUnitDouble( charIDToTypeID( "Vrtc" ), charIDToTypeID( "#Pxl" ), y );
    desc9.putObject( charIDToTypeID( "Ofst" ), charIDToTypeID( "Ofst" ), desc10 );
    desc9.putUnitDouble( charIDToTypeID( "Wdth" ), charIDToTypeID( "#Prc" ), bl );
    desc9.putUnitDouble( charIDToTypeID( "Hght" ), charIDToTypeID( "#Prc" ), bl );
executeAction(charIDToTypeID( "Trnf" ), desc9, DialogModes.NO );	
}

function sampling(on){ //打开样本，获取数据
	var i,vNum=0,kong=0;
	for (i in mergeFiles){
		on[i]=open(mergeFiles[i].file); 
			on[i].changeMode(ChangeMode.RGB);	
			on[i].artLayers.add(); //先增加一个新层，以确保下一条指令正常执行
			on[i].mergeVisibleLayers(); //合并可见层

			on[i].sampWidth=Number(on[i].activeLayer.bounds[2]-on[i].activeLayer.bounds[0]);
			on[i].sampHeight=Number(on[i].activeLayer.bounds[3]-on[i].activeLayer.bounds[1]);
			on[i].ok=true;
			
			if (on[i].sampWidth==0 || on[i].sampHeight==0)	{
				alert(mergeFiles[i].fName+" 文件内容为空，放弃对其采样");
				on[i].ok=false;
				kong++;
			}else{
				on[i].selection.selectAll();
			}
	}
	if (kong==mergeFiles.length) {
		alert("没有有效样本！无法生成");
		myEnd=true;
	}
}	

function samplingCopy(num){ //拷贝样本
	app.activeDocument=samplings[num]; //设定为活动文档否则不能拷贝
	samplings[num].selection.copy(); 
	app.activeDocument=myDoc;
}

win.buttons.Btncancel.onClick = function () { //放弃
	app.preferences.rulerUnits = startRulerUnits;
	app.preferences.typeUnits = startTypeUnits;
	this.parent.parent.close();
}

win.buttons.Btnok.onClick =function(){
	
			if (!win.origin.originA.value) sampling(samplings);	
						
			var myWidth = myDoc.width;
			var myHeight = myDoc.height;
			var myNumber = Number(win.group.number.e.text); //数量
			var minSpace=Number(win.group.minSpace.e.text); // 最小间距；
			var maxRadius=Math.max (Number(win.group.maxSize.e.text),Number(win.group.minSize.e.text)); //最大半径；
			var minRadius=Math.min (Number(win.group.minSize.e.text),Number(win.group.maxSize.e.text)); //最小半径；

			var myPoints=new Array();
			var centerX,centerY;
			
			var myWarning=2000 //定义循环警告限度
			var i=0;go=0;okGo=true;warning=myWarning;
	
			while(i<myNumber && okGo){
					ok=true;
					minDistance=maxRadius;
					centerX=Math.round(Math.random()*myWidth);
					centerY=Math.round(Math.random()*myHeight);
					oFile="";

					for(j=0;j<myPoints.length;j++){
						nowDistance=Math.sqrt (Math.pow(centerX-myPoints[j].centerX,2)+Math.pow(centerY-myPoints[j].centerY,2))-myPoints[j].radius-minSpace;
						minDistance=nowDistance<minDistance?nowDistance:minDistance;
						if (minDistance<minRadius) {
							ok=false;
							break;
						}
					}
					if (ok){
						if (win.group.myType.typeA.value){ //判断随机还是紧密
							sRadius=minDistance;
						}else{
							sRadius=minDistance*(1-Math.random());	
						}
						endRadius=sRadius>minRadius?sRadius:minRadius;
						var d=new point(centerX,centerY,endRadius,oFile);
						myPoints.push(d);
						i++;
						warning=myWarning;
						go=0;
					}
				go++;
				if (go>=warning){
						okGo = confirm("在试图确定第"+(i+1)+"个对象时已经进行了"+go+"次尝试，是否继续？\r\n继续则可能陷入死循环。")
						if (okGo) warning+=myWarning;
				}
			}

			var lineK= 100/myPoints.length;			
		
			if (win.origin.originA.value){
					myDoc.artLayers.add();
					myDoc.paste();
					pSize=Math.max (myDoc.activeLayer.bounds[2]-myDoc.activeLayer.bounds[0], myDoc.activeLayer.bounds[3]-myDoc.activeLayer.bounds[1])
					myDoc.activeLayer.remove();
					if (pSize==0) {
							alert("剪贴板为空！无法生成！")
							myEnd=true;
						}
				}
			
			var nowSamp,preSamp;
			
			app.activeDocument=myDoc;
			if (!myEnd) {
				myDoc.artLayers.add();
				myDoc.artLayers.add();
			}
		
			for(i in myPoints){
				if (myEnd) break;
				if (!win.origin.originA.value){
						nowSamp=Math.round((samplings.length-1)*Math.random());
						while (!samplings[nowSamp].ok){//确保作废的样本不被采用
								nowSamp=Math.round((samplings.length-1)*Math.random());
						}
						if (nowSamp!=preSamp) { //如果这次的样本和上次不一样
								pSize=Math.max (samplings[nowSamp].sampWidth,samplings[nowSamp].sampHeight);
								samplingCopy(nowSamp);							
								preSamp=nowSamp;							
						}
				}
					myDoc.paste();
					print(myPoints[i].centerX-myWidth/2,myPoints[i].centerY-myHeight/2,myPoints[i].radius*200/pSize);
					myDoc.activeLayer.merge();
					win.group.timeline.value =win.group.timeline.value+lineK;
			}

			///////////////////////////////////////////////
				for(i in samplings){ //关闭所有样本
					samplings[i].close(SaveOptions.DONOTSAVECHANGES);	
				}
				
				app.preferences.rulerUnits = startRulerUnits;
				app.preferences.typeUnits = startTypeUnits;
				if (!myEnd) this.parent.parent.close();
}

win.center();
win.show();]]></script>
      <eventListeners>
        <function id="onClick" actionType="jsfunction" jsFunctionName="ps_invoke_script">
          <param id="script"/>
        </function>
      </eventListeners>
    </ps_script>
    <swf _itemId="widget_swf" toolTip="$$$/Configurator/Widget/Swf/desc" noDisplayPrompt="$$$/Configurator/Widget/Swf/noDisplayPrompt" offlinePromptTitle="$$$/Configurator/Widget/HTML/offlinePromptTitle" offlinePromptDetail="$$$/Configurator/Widget/HTML/offlinePromptDetail" netUnAvailablePromptTitle="$$$/Configurator/Widget/HTML/netUnAvailablePromptTitle" netUnAvailablePromptDetail="$$$/Configurator/Widget/HTML/netUnAvailablePromptDetail" reloadText="$$$/Configurator/Widget/HTML/reloadText" reloadLabel="$$$/Configurator/Widget/HTML/reloadLabel" url="$$$/Configurator/key_###158" width="194" height="30" cfgVisible="$$$/Configurator/Attribute/visible/value###159" x="24" y="428"/>
  </ConfiguratorPanel>
  <images>
    <image id="ps_script_file" swf="bundles/PHSP-13/PHSP13Bundle.swf_" className="PHSP13Bundle" varName="ps_script_file"/>
    <image id="ps_script_file_r" swf="bundles/PHSP-13/PHSP13Bundle.swf_" className="PHSP13Bundle" varName="ps_script_file_r"/>
    <image id="ps_script_file" swf="bundles/PHSP-13/PHSP13Bundle.swf_" className="PHSP13Bundle" varName="ps_script_file"/>
    <image id="ps_script_file_r" swf="bundles/PHSP-13/PHSP13Bundle.swf_" className="PHSP13Bundle" varName="ps_script_file_r"/>
    <image id="SP_TypeVertMask_Lg_N" swf="bundles/PHSP-13/PHSP13Bundle.swf_" className="PHSP13Bundle" varName="SP_TypeVertMask_Lg_N"/>
    <image id="SP_TypeVertMask_Lg_N_D" swf="bundles/PHSP-13/PHSP13Bundle.swf_" className="PHSP13Bundle" varName="SP_TypeVertMask_Lg_N_D"/>
    <image id="SP_TypeVert_Lg_N" swf="bundles/PHSP-13/PHSP13Bundle.swf_" className="PHSP13Bundle" varName="SP_TypeVert_Lg_N"/>
    <image id="SP_TypeVert_Lg_N_D" swf="bundles/PHSP-13/PHSP13Bundle.swf_" className="PHSP13Bundle" varName="SP_TypeVert_Lg_N_D"/>
    <image id="SP_Heal_Lg_N" swf="bundles/PHSP-13/PHSP13Bundle.swf_" className="PHSP13Bundle" varName="SP_Heal_Lg_N"/>
    <image id="SP_Heal_Lg_N_D" swf="bundles/PHSP-13/PHSP13Bundle.swf_" className="PHSP13Bundle" varName="SP_Heal_Lg_N_D"/>
    <image id="SP_Patch_Lg_N" swf="bundles/PHSP-13/PHSP13Bundle.swf_" className="PHSP13Bundle" varName="SP_Patch_Lg_N"/>
    <image id="SP_Patch_Lg_N_D" swf="bundles/PHSP-13/PHSP13Bundle.swf_" className="PHSP13Bundle" varName="SP_Patch_Lg_N_D"/>
    <image id="SP_CustomShape_Lg_N" swf="bundles/PHSP-13/PHSP13Bundle.swf_" className="PHSP13Bundle" varName="SP_CustomShape_Lg_N"/>
    <image id="SP_CustomShape_Lg_N_D" swf="bundles/PHSP-13/PHSP13Bundle.swf_" className="PHSP13Bundle" varName="SP_CustomShape_Lg_N_D"/>
    <image id="SP_RotateView_Lg_N" swf="bundles/PHSP-13/PHSP13Bundle.swf_" className="PHSP13Bundle" varName="SP_RotateView_Lg_N"/>
    <image id="SP_RotateView_Lg_N_D" swf="bundles/PHSP-13/PHSP13Bundle.swf_" className="PHSP13Bundle" varName="SP_RotateView_Lg_N_D"/>
    <image id="SP_PersepctiveCrop_Md_N" swf="bundles/PHSP-13/PHSP13Bundle.swf_" className="PHSP13Bundle" varName="SP_PersepctiveCrop_Md_N"/>
    <image id="SP_PersepctiveCrop_Md_N_D" swf="bundles/PHSP-13/PHSP13Bundle.swf_" className="PHSP13Bundle" varName="SP_PersepctiveCrop_Md_N_D"/>
    <image id="SP_Burn_Lg_N" swf="bundles/PHSP-13/PHSP13Bundle.swf_" className="PHSP13Bundle" varName="SP_Burn_Lg_N"/>
    <image id="SP_Burn_Lg_N_D" swf="bundles/PHSP-13/PHSP13Bundle.swf_" className="PHSP13Bundle" varName="SP_Burn_Lg_N_D"/>
    <image id="SP_Dodge_Lg_N" swf="bundles/PHSP-13/PHSP13Bundle.swf_" className="PHSP13Bundle" varName="SP_Dodge_Lg_N"/>
    <image id="SP_Dodge_Lg_N_D" swf="bundles/PHSP-13/PHSP13Bundle.swf_" className="PHSP13Bundle" varName="SP_Dodge_Lg_N_D"/>
    <image id="SP_PolygonSelect_Lg_N" swf="bundles/PHSP-13/PHSP13Bundle.swf_" className="PHSP13Bundle" varName="SP_PolygonSelect_Lg_N"/>
    <image id="SP_PolygonSelect_Lg_N_D" swf="bundles/PHSP-13/PHSP13Bundle.swf_" className="PHSP13Bundle" varName="SP_PolygonSelect_Lg_N_D"/>
    <image id="SP_RegionSelect_Lg_N" swf="bundles/PHSP-13/PHSP13Bundle.swf_" className="PHSP13Bundle" varName="SP_RegionSelect_Lg_N"/>
    <image id="SP_RegionSelect_Lg_N_D" swf="bundles/PHSP-13/PHSP13Bundle.swf_" className="PHSP13Bundle" varName="SP_RegionSelect_Lg_N_D"/>
    <image id="SP_Gradient_Lg_N" swf="bundles/PHSP-13/PHSP13Bundle.swf_" className="PHSP13Bundle" varName="SP_Gradient_Lg_N"/>
    <image id="SP_Gradient_Lg_N_D" swf="bundles/PHSP-13/PHSP13Bundle.swf_" className="PHSP13Bundle" varName="SP_Gradient_Lg_N_D"/>
    <image id="ps_script_file" swf="bundles/PHSP-13/PHSP13Bundle.swf_" className="PHSP13Bundle" varName="ps_script_file"/>
    <image id="ps_script_file_r" swf="bundles/PHSP-13/PHSP13Bundle.swf_" className="PHSP13Bundle" varName="ps_script_file_r"/>
    <image id="ps_script" swf="bundles/PHSP-13/PHSP13Bundle.swf_" className="PHSP13Bundle" varName="ps_script"/>
    <image id="ps_script_r" swf="bundles/PHSP-13/PHSP13Bundle.swf_" className="PHSP13Bundle" varName="ps_script_r"/>
    <image id="ps_script" swf="bundles/PHSP-13/PHSP13Bundle.swf_" className="PHSP13Bundle" varName="ps_script"/>
    <image id="ps_script_r" swf="bundles/PHSP-13/PHSP13Bundle.swf_" className="PHSP13Bundle" varName="ps_script_r"/>
    <image id="ps_script" swf="bundles/PHSP-13/PHSP13Bundle.swf_" className="PHSP13Bundle" varName="ps_script"/>
    <image id="ps_script_r" swf="bundles/PHSP-13/PHSP13Bundle.swf_" className="PHSP13Bundle" varName="ps_script_r"/>
  </images>
  <scripts>
    <script id="Main-Layer-Align-Top_Edges"><![CDATA[ErrStrs = {}; ErrStrs.USER_CANCELLED=localize("$$$/ScriptingSupport/Error/UserCancelled=User cancelled the operation"); try {var idAlgn = charIDToTypeID( 'Algn' );     var desc889 = new ActionDescriptor();     var idnull = charIDToTypeID( 'null' );         var ref713 = new ActionReference();         var idLyr = charIDToTypeID( 'Lyr ' );         var idOrdn = charIDToTypeID( 'Ordn' );         var idTrgt = charIDToTypeID( 'Trgt' );         ref713.putEnumerated( idLyr, idOrdn, idTrgt );     desc889.putReference( idnull, ref713 );     var idUsng = charIDToTypeID( 'Usng' );     var idADSt = charIDToTypeID( 'ADSt' );     var idAdTp = charIDToTypeID( 'AdTp' );     desc889.putEnumerated( idUsng, idADSt, idAdTp ); executeAction( idAlgn, desc889, DialogModes.ALL ); } catch(e){if (e.toString().indexOf(ErrStrs.USER_CANCELLED)!=-1) {;} else{alert(localize("$$$/ScriptingSupport/Error/CommandNotAvailable=The command is currently not available"));}}]]></script>
    <script id="Main-Layer-Align-Bottom_Edges"><![CDATA[ErrStrs = {}; ErrStrs.USER_CANCELLED=localize("$$$/ScriptingSupport/Error/UserCancelled=User cancelled the operation"); try {var idAlgn = charIDToTypeID( 'Algn' );     var desc887 = new ActionDescriptor();     var idnull = charIDToTypeID( 'null' );         var ref711 = new ActionReference();         var idLyr = charIDToTypeID( 'Lyr ' );         var idOrdn = charIDToTypeID( 'Ordn' );         var idTrgt = charIDToTypeID( 'Trgt' );         ref711.putEnumerated( idLyr, idOrdn, idTrgt );     desc887.putReference( idnull, ref711 );     var idUsng = charIDToTypeID( 'Usng' );     var idADSt = charIDToTypeID( 'ADSt' );     var idAdBt = charIDToTypeID( 'AdBt' );     desc887.putEnumerated( idUsng, idADSt, idAdBt ); executeAction( idAlgn, desc887, DialogModes.ALL ); } catch(e){if (e.toString().indexOf(ErrStrs.USER_CANCELLED)!=-1) {;} else{alert(localize("$$$/ScriptingSupport/Error/CommandNotAvailable=The command is currently not available"));}}]]></script>
    <script id="Main-Layer-Align-Left_Edges"><![CDATA[ErrStrs = {}; ErrStrs.USER_CANCELLED=localize("$$$/ScriptingSupport/Error/UserCancelled=User cancelled the operation"); try {var idAlgn = charIDToTypeID( 'Algn' );     var desc886 = new ActionDescriptor();     var idnull = charIDToTypeID( 'null' );         var ref710 = new ActionReference();         var idLyr = charIDToTypeID( 'Lyr ' );         var idOrdn = charIDToTypeID( 'Ordn' );         var idTrgt = charIDToTypeID( 'Trgt' );         ref710.putEnumerated( idLyr, idOrdn, idTrgt );     desc886.putReference( idnull, ref710 );     var idUsng = charIDToTypeID( 'Usng' );     var idADSt = charIDToTypeID( 'ADSt' );     var idAdLf = charIDToTypeID( 'AdLf' );     desc886.putEnumerated( idUsng, idADSt, idAdLf ); executeAction( idAlgn, desc886, DialogModes.ALL ); } catch(e){if (e.toString().indexOf(ErrStrs.USER_CANCELLED)!=-1) {;} else{alert(localize("$$$/ScriptingSupport/Error/CommandNotAvailable=The command is currently not available"));}}]]></script>
    <script id="Main-Layer-Align-Right_Edges"><![CDATA[ErrStrs = {}; ErrStrs.USER_CANCELLED=localize("$$$/ScriptingSupport/Error/UserCancelled=User cancelled the operation"); try {var idAlgn = charIDToTypeID( 'Algn' );     var desc884 = new ActionDescriptor();     var idnull = charIDToTypeID( 'null' );         var ref708 = new ActionReference();         var idLyr = charIDToTypeID( 'Lyr ' );         var idOrdn = charIDToTypeID( 'Ordn' );         var idTrgt = charIDToTypeID( 'Trgt' );         ref708.putEnumerated( idLyr, idOrdn, idTrgt );     desc884.putReference( idnull, ref708 );     var idUsng = charIDToTypeID( 'Usng' );     var idADSt = charIDToTypeID( 'ADSt' );     var idAdRg = charIDToTypeID( 'AdRg' );     desc884.putEnumerated( idUsng, idADSt, idAdRg ); executeAction( idAlgn, desc884, DialogModes.ALL ); } catch(e){if (e.toString().indexOf(ErrStrs.USER_CANCELLED)!=-1) {;} else{alert(localize("$$$/ScriptingSupport/Error/CommandNotAvailable=The command is currently not available"));}}]]></script>
    <script id="Main-Layer-Align-Horizontal_Centers"><![CDATA[ErrStrs = {}; ErrStrs.USER_CANCELLED=localize("$$$/ScriptingSupport/Error/UserCancelled=User cancelled the operation"); try {var idAlgn = charIDToTypeID( 'Algn' );     var desc885 = new ActionDescriptor();     var idnull = charIDToTypeID( 'null' );         var ref709 = new ActionReference();         var idLyr = charIDToTypeID( 'Lyr ' );         var idOrdn = charIDToTypeID( 'Ordn' );         var idTrgt = charIDToTypeID( 'Trgt' );         ref709.putEnumerated( idLyr, idOrdn, idTrgt );     desc885.putReference( idnull, ref709 );     var idUsng = charIDToTypeID( 'Usng' );     var idADSt = charIDToTypeID( 'ADSt' );     var idAdCH = charIDToTypeID( 'AdCH' );     desc885.putEnumerated( idUsng, idADSt, idAdCH ); executeAction( idAlgn, desc885, DialogModes.ALL ); } catch(e){if (e.toString().indexOf(ErrStrs.USER_CANCELLED)!=-1) {;} else{alert(localize("$$$/ScriptingSupport/Error/CommandNotAvailable=The command is currently not available"));}}]]></script>
    <script id="Main-Layer-Align-Vertical_Centers"><![CDATA[ErrStrs = {}; ErrStrs.USER_CANCELLED=localize("$$$/ScriptingSupport/Error/UserCancelled=User cancelled the operation"); try {var idAlgn = charIDToTypeID( 'Algn' );     var desc888 = new ActionDescriptor();     var idnull = charIDToTypeID( 'null' );         var ref712 = new ActionReference();         var idLyr = charIDToTypeID( 'Lyr ' );         var idOrdn = charIDToTypeID( 'Ordn' );         var idTrgt = charIDToTypeID( 'Trgt' );         ref712.putEnumerated( idLyr, idOrdn, idTrgt );     desc888.putReference( idnull, ref712 );     var idUsng = charIDToTypeID( 'Usng' );     var idADSt = charIDToTypeID( 'ADSt' );     var idAdCV = charIDToTypeID( 'AdCV' );     desc888.putEnumerated( idUsng, idADSt, idAdCV ); executeAction( idAlgn, desc888, DialogModes.ALL ); } catch(e){if (e.toString().indexOf(ErrStrs.USER_CANCELLED)!=-1) {;} else{alert(localize("$$$/ScriptingSupport/Error/CommandNotAvailable=The command is currently not available"));}}]]></script>
    <script id="Panel-Layers-Convert_to_Smart_Object"><![CDATA[ErrStrs = {}; ErrStrs.USER_CANCELLED=localize("$$$/ScriptingSupport/Error/UserCancelled=User cancelled the operation"); try {var idslct = charIDToTypeID( 'slct' );     var desc625 = new ActionDescriptor();     var idnull = charIDToTypeID( 'null' );         var ref487 = new ActionReference();         var idMn = charIDToTypeID( 'Mn  ' );         var idMnIt = charIDToTypeID( 'MnIt' );         var idnewPlacedLayer = stringIDToTypeID( 'newPlacedLayer' );         ref487.putEnumerated( idMn, idMnIt, idnewPlacedLayer );     desc625.putReference( idnull, ref487 ); executeAction( idslct, desc625, DialogModes.ALL ); } catch(e){if (e.toString().indexOf(ErrStrs.USER_CANCELLED)!=-1) {;} else{alert(localize("$$$/ScriptingSupport/Error/CommandNotAvailable=The command is currently not available"));}}]]></script>
    <script id="Main-Layer-Select_Linked_Layers"><![CDATA[ErrStrs = {}; ErrStrs.USER_CANCELLED=localize("$$$/ScriptingSupport/Error/UserCancelled=User cancelled the operation"); try {var idselectLinkedLayers = stringIDToTypeID( 'selectLinkedLayers' );     var desc875 = new ActionDescriptor();     var idnull = charIDToTypeID( 'null' );         var ref699 = new ActionReference();         var idLyr = charIDToTypeID( 'Lyr ' );         var idOrdn = charIDToTypeID( 'Ordn' );         var idTrgt = charIDToTypeID( 'Trgt' );         ref699.putEnumerated( idLyr, idOrdn, idTrgt );     desc875.putReference( idnull, ref699 ); executeAction( idselectLinkedLayers, desc875, DialogModes.ALL ); } catch(e){if (e.toString().indexOf(ErrStrs.USER_CANCELLED)!=-1) {;} else{alert(localize("$$$/ScriptingSupport/Error/CommandNotAvailable=The command is currently not available"));}}]]></script>
    <script id="Main-Select-All_Layers"><![CDATA[ErrStrs = {}; ErrStrs.USER_CANCELLED=localize("$$$/ScriptingSupport/Error/UserCancelled=User cancelled the operation"); try {var idselectAllLayers = stringIDToTypeID( 'selectAllLayers' );     var desc834 = new ActionDescriptor();     var idnull = charIDToTypeID( 'null' );         var ref674 = new ActionReference();         var idLyr = charIDToTypeID( 'Lyr ' );         var idOrdn = charIDToTypeID( 'Ordn' );         var idTrgt = charIDToTypeID( 'Trgt' );         ref674.putEnumerated( idLyr, idOrdn, idTrgt );     desc834.putReference( idnull, ref674 ); executeAction( idselectAllLayers, desc834, DialogModes.ALL ); } catch(e){if (e.toString().indexOf(ErrStrs.USER_CANCELLED)!=-1) {;} else{alert(localize("$$$/ScriptingSupport/Error/CommandNotAvailable=The command is currently not available"));}}]]></script>
    <script id="Main-Layer-Merge_Visible"><![CDATA[ErrStrs = {}; ErrStrs.USER_CANCELLED=localize("$$$/ScriptingSupport/Error/UserCancelled=User cancelled the operation"); try {var idMrgV = charIDToTypeID( 'MrgV' ); executeAction( idMrgV, undefined, DialogModes.ALL ); } catch(e){if (e.toString().indexOf(ErrStrs.USER_CANCELLED)!=-1) {;} else{alert(localize("$$$/ScriptingSupport/Error/CommandNotAvailable=The command is currently not available"));}}]]></script>
    <script id="Main-Image-Image_Size"><![CDATA[ErrStrs = {}; ErrStrs.USER_CANCELLED=localize("$$$/ScriptingSupport/Error/UserCancelled=User cancelled the operation"); try {var idImgS = charIDToTypeID( 'ImgS' ); executeAction( idImgS, undefined, DialogModes.ALL ); } catch(e){if (e.toString().indexOf(ErrStrs.USER_CANCELLED)!=-1) {;} else{alert(localize("$$$/ScriptingSupport/Error/CommandNotAvailable=The command is currently not available"));}}]]></script>
    <script id="Main-Image-Canvas_Size"><![CDATA[ErrStrs = {}; ErrStrs.USER_CANCELLED=localize("$$$/ScriptingSupport/Error/UserCancelled=User cancelled the operation"); try {var idCnvS = charIDToTypeID( 'CnvS' ); executeAction( idCnvS, undefined, DialogModes.ALL ); } catch(e){if (e.toString().indexOf(ErrStrs.USER_CANCELLED)!=-1) {;} else{alert(localize("$$$/ScriptingSupport/Error/CommandNotAvailable=The command is currently not available"));}}]]></script>
    <script id="Main-View-Gamut_Warning"><![CDATA[ErrStrs = {}; ErrStrs.USER_CANCELLED=localize("$$$/ScriptingSupport/Error/UserCancelled=User cancelled the operation"); try {var idslct = charIDToTypeID( 'slct' );     var desc768 = new ActionDescriptor();     var idnull = charIDToTypeID( 'null' );         var ref621 = new ActionReference();         var idMn = charIDToTypeID( 'Mn  ' );         var idMnIt = charIDToTypeID( 'MnIt' );         var idTglG = charIDToTypeID( 'TglG' );         ref621.putEnumerated( idMn, idMnIt, idTglG );     desc768.putReference( idnull, ref621 ); executeAction( idslct, desc768, DialogModes.ALL ); } catch(e){if (e.toString().indexOf(ErrStrs.USER_CANCELLED)!=-1) {;} else{alert(localize("$$$/ScriptingSupport/Error/CommandNotAvailable=The command is currently not available"));}}]]></script>
    <script id="Main-Edit-Clear"><![CDATA[ErrStrs = {}; ErrStrs.USER_CANCELLED=localize("$$$/ScriptingSupport/Error/UserCancelled=User cancelled the operation"); try {var idDlt = charIDToTypeID( 'Dlt ' ); executeAction( idDlt, undefined, DialogModes.ALL ); } catch(e){if (e.toString().indexOf(ErrStrs.USER_CANCELLED)!=-1) {;} else{alert(localize("$$$/ScriptingSupport/Error/CommandNotAvailable=The command is currently not available"));}}]]></script>
    <script id="Main-Edit-Step_Forward"><![CDATA[ErrStrs = {}; ErrStrs.USER_CANCELLED=localize("$$$/ScriptingSupport/Error/UserCancelled=User cancelled the operation"); try {var idNxt = charIDToTypeID( 'Nxt ' );     var desc1074 = new ActionDescriptor();     var idnull = charIDToTypeID( 'null' );         var ref846 = new ActionReference();         var idHstS = charIDToTypeID( 'HstS' );         ref846.putClass( idHstS );     desc1074.putReference( idnull, ref846 ); executeAction( idNxt, desc1074, DialogModes.ALL ); } catch(e){if (e.toString().indexOf(ErrStrs.USER_CANCELLED)!=-1) {;} else{alert(localize("$$$/ScriptingSupport/Error/CommandNotAvailable=The command is currently not available"));}}]]></script>
    <script id="Main-Edit-Step_Backward"><![CDATA[ErrStrs = {}; ErrStrs.USER_CANCELLED=localize("$$$/ScriptingSupport/Error/UserCancelled=User cancelled the operation"); try {var idPrvs = charIDToTypeID( 'Prvs' );     var desc1073 = new ActionDescriptor();     var idnull = charIDToTypeID( 'null' );         var ref845 = new ActionReference();         var idHstS = charIDToTypeID( 'HstS' );         ref845.putClass( idHstS );     desc1073.putReference( idnull, ref845 ); executeAction( idPrvs, desc1073, DialogModes.ALL ); } catch(e){if (e.toString().indexOf(ErrStrs.USER_CANCELLED)!=-1) {;} else{alert(localize("$$$/ScriptingSupport/Error/CommandNotAvailable=The command is currently not available"));}}]]></script>
    <script id="Main-File-Export-Paths_to_Illustrator"><![CDATA[ErrStrs = {}; ErrStrs.USER_CANCELLED=localize("$$$/ScriptingSupport/Error/UserCancelled=User cancelled the operation"); try {var idExpr = charIDToTypeID( 'Expr' );     var desc1088 = new ActionDescriptor();     var idUsng = charIDToTypeID( 'Usng' );     var idIllustratorExport.Thisstringmakesmeunique! = stringIDToTypeID( 'Illustrator Export.  This string makes me unique!' );     desc1088.putClass( idUsng, idIllustratorExport.Thisstringmakesmeunique! ); executeAction( idExpr, desc1088, DialogModes.ALL ); } catch(e){if (e.toString().indexOf(ErrStrs.USER_CANCELLED)!=-1) {;} else{alert(localize("$$$/ScriptingSupport/Error/CommandNotAvailable=The command is currently not available"));}}]]></script>
    <script id="Main-File-Save_for_Web"><![CDATA[ErrStrs = {}; ErrStrs.USER_CANCELLED=localize("$$$/ScriptingSupport/Error/UserCancelled=User cancelled the operation"); try {var idslct = charIDToTypeID( 'slct' );     var desc1094 = new ActionDescriptor();     var idnull = charIDToTypeID( 'null' );         var ref852 = new ActionReference();         var idMn = charIDToTypeID( 'Mn  ' );         var idMnIt = charIDToTypeID( 'MnIt' );         var idSvfw = charIDToTypeID( 'Svfw' );         ref852.putEnumerated( idMn, idMnIt, idSvfw );     desc1094.putReference( idnull, ref852 ); executeAction( idslct, desc1094, DialogModes.ALL ); } catch(e){if (e.toString().indexOf(ErrStrs.USER_CANCELLED)!=-1) {;} else{alert(localize("$$$/ScriptingSupport/Error/CommandNotAvailable=The command is currently not available"));}}]]></script>
    <script id="Main-Type-Warp_Text"><![CDATA[ErrStrs = {}; ErrStrs.USER_CANCELLED=localize("$$$/ScriptingSupport/Error/UserCancelled=User cancelled the operation"); try {var idslct = charIDToTypeID( 'slct' );     var desc677 = new ActionDescriptor();     var idnull = charIDToTypeID( 'null' );         var ref539 = new ActionReference();         var idMn = charIDToTypeID( 'Mn  ' );         var idMnIt = charIDToTypeID( 'MnIt' );         var idwarp = stringIDToTypeID( 'warp' );         ref539.putEnumerated( idMn, idMnIt, idwarp );     desc677.putReference( idnull, ref539 ); executeAction( idslct, desc677, DialogModes.ALL ); } catch(e){if (e.toString().indexOf(ErrStrs.USER_CANCELLED)!=-1) {;} else{alert(localize("$$$/ScriptingSupport/Error/CommandNotAvailable=The command is currently not available"));}}]]></script>
    <script id="Tool-Vertical_Type_Mask_Tool"><![CDATA[ErrStrs = {}; ErrStrs.USER_CANCELLED=localize("$$$/ScriptingSupport/Error/UserCancelled=User cancelled the operation"); try {var idslct = charIDToTypeID( 'slct' );     var desc120 = new ActionDescriptor();     var idnull = charIDToTypeID( 'null' );         var ref120 = new ActionReference();         var idtypeVerticalCreateMaskTool = stringIDToTypeID( 'typeVerticalCreateMaskTool' );         ref120.putClass( idtypeVerticalCreateMaskTool );     desc120.putReference( idnull, ref120 ); executeAction( idslct, desc120, DialogModes.ALL ); } catch(e){if (e.toString().indexOf(ErrStrs.USER_CANCELLED)!=-1) {;} else{alert(localize("$$$/ScriptingSupport/Error/CommandNotAvailable=The command is currently not available"));}}]]></script>
    <script id="Tool-Vertical_Type_Tool"><![CDATA[ErrStrs = {}; ErrStrs.USER_CANCELLED=localize("$$$/ScriptingSupport/Error/UserCancelled=User cancelled the operation"); try {var idslct = charIDToTypeID( 'slct' );     var desc118 = new ActionDescriptor();     var idnull = charIDToTypeID( 'null' );         var ref118 = new ActionReference();         var idtypeVerticalCreateOrEditTool = stringIDToTypeID( 'typeVerticalCreateOrEditTool' );         ref118.putClass( idtypeVerticalCreateOrEditTool );     desc118.putReference( idnull, ref118 ); executeAction( idslct, desc118, DialogModes.ALL ); } catch(e){if (e.toString().indexOf(ErrStrs.USER_CANCELLED)!=-1) {;} else{alert(localize("$$$/ScriptingSupport/Error/CommandNotAvailable=The command is currently not available"));}}]]></script>
    <script id="Tool-Healing_Brush_Tool"><![CDATA[ErrStrs = {}; ErrStrs.USER_CANCELLED=localize("$$$/ScriptingSupport/Error/UserCancelled=User cancelled the operation"); try {var idslct = charIDToTypeID( 'slct' );     var desc88 = new ActionDescriptor();     var idnull = charIDToTypeID( 'null' );         var ref88 = new ActionReference();         var idmagicStampTool = stringIDToTypeID( 'magicStampTool' );         ref88.putClass( idmagicStampTool );     desc88.putReference( idnull, ref88 ); executeAction( idslct, desc88, DialogModes.ALL ); } catch(e){if (e.toString().indexOf(ErrStrs.USER_CANCELLED)!=-1) {;} else{alert(localize("$$$/ScriptingSupport/Error/CommandNotAvailable=The command is currently not available"));}}]]></script>
    <script id="Tool-Patch_Tool"><![CDATA[ErrStrs = {}; ErrStrs.USER_CANCELLED=localize("$$$/ScriptingSupport/Error/UserCancelled=User cancelled the operation"); try {var idslct = charIDToTypeID( 'slct' );     var desc89 = new ActionDescriptor();     var idnull = charIDToTypeID( 'null' );         var ref89 = new ActionReference();         var idpatchSelection = stringIDToTypeID( 'patchSelection' );         ref89.putClass( idpatchSelection );     desc89.putReference( idnull, ref89 ); executeAction( idslct, desc89, DialogModes.ALL ); } catch(e){if (e.toString().indexOf(ErrStrs.USER_CANCELLED)!=-1) {;} else{alert(localize("$$$/ScriptingSupport/Error/CommandNotAvailable=The command is currently not available"));}}]]></script>
    <script id="Tool-Custom_Shape_Tool"><![CDATA[ErrStrs = {}; ErrStrs.USER_CANCELLED=localize("$$$/ScriptingSupport/Error/UserCancelled=User cancelled the operation"); try {var idslct = charIDToTypeID( 'slct' );     var desc128 = new ActionDescriptor();     var idnull = charIDToTypeID( 'null' );         var ref128 = new ActionReference();         var idcustomShapeTool = stringIDToTypeID( 'customShapeTool' );         ref128.putClass( idcustomShapeTool );     desc128.putReference( idnull, ref128 ); executeAction( idslct, desc128, DialogModes.ALL ); } catch(e){if (e.toString().indexOf(ErrStrs.USER_CANCELLED)!=-1) {;} else{alert(localize("$$$/ScriptingSupport/Error/CommandNotAvailable=The command is currently not available"));}}]]></script>
    <script id="Tool-Rotate_View_Tool"><![CDATA[ErrStrs = {}; ErrStrs.USER_CANCELLED=localize("$$$/ScriptingSupport/Error/UserCancelled=User cancelled the operation"); try {var idslct = charIDToTypeID( 'slct' );     var desc130 = new ActionDescriptor();     var idnull = charIDToTypeID( 'null' );         var ref130 = new ActionReference();         var idrotateTool = stringIDToTypeID( 'rotateTool' );         ref130.putClass( idrotateTool );     desc130.putReference( idnull, ref130 ); executeAction( idslct, desc130, DialogModes.ALL ); } catch(e){if (e.toString().indexOf(ErrStrs.USER_CANCELLED)!=-1) {;} else{alert(localize("$$$/ScriptingSupport/Error/CommandNotAvailable=The command is currently not available"));}}]]></script>
    <script id="Tool-Perspective_Crop_Tool"><![CDATA[ErrStrs = {}; ErrStrs.USER_CANCELLED=localize("$$$/ScriptingSupport/Error/UserCancelled=User cancelled the operation"); try {var idslct = charIDToTypeID( 'slct' );     var desc78 = new ActionDescriptor();     var idnull = charIDToTypeID( 'null' );         var ref78 = new ActionReference();         var idperspectiveCropTool = stringIDToTypeID( 'perspectiveCropTool' );         ref78.putClass( idperspectiveCropTool );     desc78.putReference( idnull, ref78 ); executeAction( idslct, desc78, DialogModes.ALL ); } catch(e){if (e.toString().indexOf(ErrStrs.USER_CANCELLED)!=-1) {;} else{alert(localize("$$$/ScriptingSupport/Error/CommandNotAvailable=The command is currently not available"));}}]]></script>
    <script id="Tool-Burn_Tool"><![CDATA[ErrStrs = {}; ErrStrs.USER_CANCELLED=localize("$$$/ScriptingSupport/Error/UserCancelled=User cancelled the operation"); try {var idslct = charIDToTypeID( 'slct' );     var desc110 = new ActionDescriptor();     var idnull = charIDToTypeID( 'null' );         var ref110 = new ActionReference();         var idBrTl = charIDToTypeID( 'BrTl' );         ref110.putClass( idBrTl );     desc110.putReference( idnull, ref110 ); executeAction( idslct, desc110, DialogModes.ALL ); } catch(e){if (e.toString().indexOf(ErrStrs.USER_CANCELLED)!=-1) {;} else{alert(localize("$$$/ScriptingSupport/Error/CommandNotAvailable=The command is currently not available"));}}]]></script>
    <script id="Tool-Dodge_Tool"><![CDATA[ErrStrs = {}; ErrStrs.USER_CANCELLED=localize("$$$/ScriptingSupport/Error/UserCancelled=User cancelled the operation"); try {var idslct = charIDToTypeID( 'slct' );     var desc109 = new ActionDescriptor();     var idnull = charIDToTypeID( 'null' );         var ref109 = new ActionReference();         var idDdTl = charIDToTypeID( 'DdTl' );         ref109.putClass( idDdTl );     desc109.putReference( idnull, ref109 ); executeAction( idslct, desc109, DialogModes.ALL ); } catch(e){if (e.toString().indexOf(ErrStrs.USER_CANCELLED)!=-1) {;} else{alert(localize("$$$/ScriptingSupport/Error/CommandNotAvailable=The command is currently not available"));}}]]></script>
    <script id="Tool-Polygonal_Lasso_Tool"><![CDATA[ErrStrs = {}; ErrStrs.USER_CANCELLED=localize("$$$/ScriptingSupport/Error/UserCancelled=User cancelled the operation"); try {var idslct = charIDToTypeID( 'slct' );     var desc73 = new ActionDescriptor();     var idnull = charIDToTypeID( 'null' );         var ref73 = new ActionReference();         var idpolySelTool = stringIDToTypeID( 'polySelTool' );         ref73.putClass( idpolySelTool );     desc73.putReference( idnull, ref73 ); executeAction( idslct, desc73, DialogModes.ALL ); } catch(e){if (e.toString().indexOf(ErrStrs.USER_CANCELLED)!=-1) {;} else{alert(localize("$$$/ScriptingSupport/Error/CommandNotAvailable=The command is currently not available"));}}]]></script>
    <script id="Tool-Lasso_Tool"><![CDATA[ErrStrs = {}; ErrStrs.USER_CANCELLED=localize("$$$/ScriptingSupport/Error/UserCancelled=User cancelled the operation"); try {var idslct = charIDToTypeID( 'slct' );     var desc72 = new ActionDescriptor();     var idnull = charIDToTypeID( 'null' );         var ref72 = new ActionReference();         var idlassoTool = stringIDToTypeID( 'lassoTool' );         ref72.putClass( idlassoTool );     desc72.putReference( idnull, ref72 ); executeAction( idslct, desc72, DialogModes.ALL ); } catch(e){if (e.toString().indexOf(ErrStrs.USER_CANCELLED)!=-1) {;} else{alert(localize("$$$/ScriptingSupport/Error/CommandNotAvailable=The command is currently not available"));}}]]></script>
    <script id="Tool-Gradient_Tool"><![CDATA[ErrStrs = {}; ErrStrs.USER_CANCELLED=localize("$$$/ScriptingSupport/Error/UserCancelled=User cancelled the operation"); try {var idslct = charIDToTypeID( 'slct' );     var desc103 = new ActionDescriptor();     var idnull = charIDToTypeID( 'null' );         var ref103 = new ActionReference();         var idGrTl = charIDToTypeID( 'GrTl' );         ref103.putClass( idGrTl );     desc103.putReference( idnull, ref103 ); executeAction( idslct, desc103, DialogModes.ALL ); } catch(e){if (e.toString().indexOf(ErrStrs.USER_CANCELLED)!=-1) {;} else{alert(localize("$$$/ScriptingSupport/Error/CommandNotAvailable=The command is currently not available"));}}]]></script>
  </scripts>
  <elements>
    <element id="ConfiguratorPanel" classRT="com.adobe.configurator2.component.panel.PanelRuntime">
      <attr id="name" meta="UI_ACCESSOR" translate="y"/>
      <attr id="minWidth" meta="UI_ACCESSOR" translate="y"/>
      <attr id="minHeight" meta="UI_ACCESSOR" translate="y"/>
      <attr id="maxWidth" meta="UI_ACCESSOR" translate="y"/>
      <attr id="maxHeight" meta="UI_ACCESSOR" translate="y"/>
      <attr id="persistent" meta="Other" translate="y"/>
      <attr id="extensionId" meta="Other" translate="y"/>
      <attr id="extensionVersion" meta="Other" translate="y"/>
      <attr id="extensionAuthor" meta="Other" translate="y"/>
      <attr id="extensionDescription" meta="Other" translate="y"/>
      <attr id="menuName" meta="Other" translate="y"/>
      <attr id="init" meta="EVENT" translate="y"/>
      <attr id="close" meta="EVENT" translate="y"/>
      <attr id="onInit" meta="UI_ACCESSOR" translate="y"/>
      <attr id="aboutBox" meta="UI_ACCESSOR" localize="y" translate="y"/>
      <attr id="flyoutMenuAbout" meta="Other" localize="y" translate="y"/>
      <attr id="normalIcon" meta="UI_ACCESSOR" translate="y"/>
      <attr id="rollOverIcon" meta="UI_ACCESSOR" translate="y"/>
      <attr id="darkNormalIcon" meta="UI_ACCESSOR" translate="y"/>
      <attr id="width" meta="UI_ACCESSOR" translate="y"/>
      <attr id="height" meta="UI_ACCESSOR" translate="y"/>
    </element>
    <element id="ps_command" classRT="com.adobe.configurator2.component.CommandButtonRuntime">
      <attr id="label" meta="UI_ACCESSOR" localize="y" translate="y"/>
      <attr id="toolTip" meta="UI_ACCESSOR" localize="y" translate="y"/>
      <attr id="script" meta="OTHER" translate="y"/>
      <attr id="click" meta="EVENT" translate="y"/>
      <attr id="mouseUpIcon" meta="UI_ACCESSOR" translate="y"/>
      <attr id="mouseOverIcon" meta="UI_ACCESSOR" translate="y"/>
      <attr id="mouseDownSkinIcon" meta="UI_ACCESSOR" translate="y"/>
      <attr id="top" meta="UI_STYLE" translate="y"/>
      <attr id="bottom" meta="UI_STYLE" translate="y"/>
      <attr id="left" meta="UI_STYLE" translate="y"/>
      <attr id="right" meta="UI_STYLE" translate="y"/>
      <attr id="horizontalCenter" meta="UI_STYLE" translate="y"/>
      <attr id="verticalCenter" meta="UI_STYLE" translate="y"/>
      <attr id="x" meta="UI_ACCESSOR" translate="y"/>
      <attr id="y" meta="UI_ACCESSOR" translate="y"/>
      <attr id="cfgVisible" meta="UI_ACCESSOR" localize="y"/>
      <attr id="width" meta="UI_ACCESSOR" translate="y"/>
      <attr id="height" meta="UI_ACCESSOR" translate="y"/>
      <attr id="top" meta="UI_STYLE" translate="y"/>
      <attr id="bottom" meta="UI_STYLE" translate="y"/>
      <attr id="left" meta="UI_STYLE" translate="y"/>
      <attr id="right" meta="UI_STYLE" translate="y"/>
      <attr id="horizontalCenter" meta="UI_STYLE" translate="y"/>
      <attr id="verticalCenter" meta="UI_STYLE" translate="y"/>
      <attr id="x" meta="UI_ACCESSOR" translate="y"/>
      <attr id="y" meta="UI_ACCESSOR" translate="y"/>
      <attr id="cfgVisible" meta="UI_ACCESSOR" localize="y"/>
      <attr id="width" meta="UI_ACCESSOR" translate="y"/>
      <attr id="height" meta="UI_ACCESSOR" translate="y"/>
    </element>
    <element id="watermark" classRT="com.adobe.configurator2.component.WatermarkRuntime">
      <attr id="htmlText" meta="UI_ACCESSOR" localize="y" translate="y"/>
      <attr id="styleName" meta="UI_ACCESSOR" translate="y"/>
      <attr id="backgroundAlpha" meta="UI_STYLE" translate="y"/>
      <attr id="width" meta="UI_ACCESSOR" translate="y"/>
      <attr id="height" meta="UI_ACCESSOR" translate="y"/>
      <attr id="x" meta="UI_ACCESSOR" translate="y"/>
      <attr id="y" meta="UI_ACCESSOR" translate="y"/>
      <attr id="bottom" meta="UI_ACCESSOR" translate="y"/>
      <attr id="right" meta="UI_ACCESSOR" translate="y"/>
      <attr id="top" meta="UI_STYLE" translate="y"/>
      <attr id="bottom" meta="UI_STYLE" translate="y"/>
      <attr id="left" meta="UI_STYLE" translate="y"/>
      <attr id="right" meta="UI_STYLE" translate="y"/>
      <attr id="horizontalCenter" meta="UI_STYLE" translate="y"/>
      <attr id="verticalCenter" meta="UI_STYLE" translate="y"/>
      <attr id="x" meta="UI_ACCESSOR" translate="y"/>
      <attr id="y" meta="UI_ACCESSOR" translate="y"/>
      <attr id="cfgVisible" meta="UI_ACCESSOR" localize="y"/>
      <attr id="width" meta="UI_ACCESSOR" translate="y"/>
      <attr id="height" meta="UI_ACCESSOR" translate="y"/>
    </element>
    <element id="ps_script_file" classRT="com.adobe.configurator2.component.ScriptFileButtonRunTime">
      <attr id="fileUrl" meta="UI_ACCESSOR" localize="y" translate="y"/>
      <attr id="icon" meta="UI_STYLE" localize="y" translate="y"/>
      <attr id="label" meta="UI_ACCESSOR" localize="y" translate="y"/>
      <attr id="toolTip" meta="UI_ACCESSOR" localize="y" translate="y"/>
      <attr id="showIcon" meta="UI_ACCESSOR" translate="y"/>
      <attr id="mouseUpIcon" meta="UI_ACCESSOR" translate="y"/>
      <attr id="mouseOverIcon" meta="UI_ACCESSOR" translate="y"/>
      <attr id="mouseDownSkinIcon" meta="UI_ACCESSOR" translate="y"/>
      <attr id="top" meta="UI_STYLE" translate="y"/>
      <attr id="bottom" meta="UI_STYLE" translate="y"/>
      <attr id="left" meta="UI_STYLE" translate="y"/>
      <attr id="right" meta="UI_STYLE" translate="y"/>
      <attr id="horizontalCenter" meta="UI_STYLE" translate="y"/>
      <attr id="verticalCenter" meta="UI_STYLE" translate="y"/>
      <attr id="x" meta="UI_ACCESSOR" translate="y"/>
      <attr id="y" meta="UI_ACCESSOR" translate="y"/>
      <attr id="cfgVisible" meta="UI_ACCESSOR" localize="y"/>
      <attr id="width" meta="UI_ACCESSOR" translate="y"/>
      <attr id="height" meta="UI_ACCESSOR" translate="y"/>
      <attr id="top" meta="UI_STYLE" translate="y"/>
      <attr id="bottom" meta="UI_STYLE" translate="y"/>
      <attr id="left" meta="UI_STYLE" translate="y"/>
      <attr id="right" meta="UI_STYLE" translate="y"/>
      <attr id="horizontalCenter" meta="UI_STYLE" translate="y"/>
      <attr id="verticalCenter" meta="UI_STYLE" translate="y"/>
      <attr id="x" meta="UI_ACCESSOR" translate="y"/>
      <attr id="y" meta="UI_ACCESSOR" translate="y"/>
      <attr id="cfgVisible" meta="UI_ACCESSOR" localize="y"/>
      <attr id="width" meta="UI_ACCESSOR" translate="y"/>
      <attr id="height" meta="UI_ACCESSOR" translate="y"/>
    </element>
    <element id="ps_tool" classRT="com.adobe.configurator2.component.ToolButtonRuntime">
      <attr id="toolTip" meta="UI_ACCESSOR" localize="y" translate="y"/>
      <attr id="overIcon" meta="UI_STYLE" translate="y"/>
      <attr id="icon" meta="UI_STYLE" translate="y"/>
      <attr id="click" meta="EVENT" translate="y"/>
      <attr id="top" meta="UI_STYLE" translate="y"/>
      <attr id="bottom" meta="UI_STYLE" translate="y"/>
      <attr id="left" meta="UI_STYLE" translate="y"/>
      <attr id="right" meta="UI_STYLE" translate="y"/>
      <attr id="horizontalCenter" meta="UI_STYLE" translate="y"/>
      <attr id="verticalCenter" meta="UI_STYLE" translate="y"/>
      <attr id="x" meta="UI_ACCESSOR" translate="y"/>
      <attr id="y" meta="UI_ACCESSOR" translate="y"/>
      <attr id="cfgVisible" meta="UI_ACCESSOR" localize="y"/>
      <attr id="width" meta="UI_ACCESSOR" translate="y"/>
      <attr id="height" meta="UI_ACCESSOR" translate="y"/>
      <attr id="top" meta="UI_STYLE" translate="y"/>
      <attr id="bottom" meta="UI_STYLE" translate="y"/>
      <attr id="left" meta="UI_STYLE" translate="y"/>
      <attr id="right" meta="UI_STYLE" translate="y"/>
      <attr id="horizontalCenter" meta="UI_STYLE" translate="y"/>
      <attr id="verticalCenter" meta="UI_STYLE" translate="y"/>
      <attr id="x" meta="UI_ACCESSOR" translate="y"/>
      <attr id="y" meta="UI_ACCESSOR" translate="y"/>
      <attr id="cfgVisible" meta="UI_ACCESSOR" localize="y"/>
      <attr id="width" meta="UI_ACCESSOR" translate="y"/>
      <attr id="height" meta="UI_ACCESSOR" translate="y"/>
    </element>
    <element id="ps_script" classRT="com.adobe.configurator2.component.CustomButtonRuntime">
      <attr id="script" meta="OTHER" localize="y" translate="y"/>
      <attr id="icon" meta="UI_STYLE" translate="y"/>
      <attr id="label" meta="UI_ACCESSOR" localize="y" translate="y"/>
      <attr id="toolTip" meta="UI_ACCESSOR" localize="y" translate="y"/>
      <attr id="click" meta="EVENT" translate="y"/>
      <attr id="showIcon" meta="UI_ACCESSOR" translate="y"/>
      <attr id="mouseUpIcon" meta="UI_ACCESSOR" translate="y"/>
      <attr id="mouseOverIcon" meta="UI_ACCESSOR" translate="y"/>
      <attr id="mouseDownSkinIcon" meta="UI_ACCESSOR" translate="y"/>
      <attr id="top" meta="UI_STYLE" translate="y"/>
      <attr id="bottom" meta="UI_STYLE" translate="y"/>
      <attr id="left" meta="UI_STYLE" translate="y"/>
      <attr id="right" meta="UI_STYLE" translate="y"/>
      <attr id="horizontalCenter" meta="UI_STYLE" translate="y"/>
      <attr id="verticalCenter" meta="UI_STYLE" translate="y"/>
      <attr id="x" meta="UI_ACCESSOR" translate="y"/>
      <attr id="y" meta="UI_ACCESSOR" translate="y"/>
      <attr id="cfgVisible" meta="UI_ACCESSOR" localize="y"/>
      <attr id="width" meta="UI_ACCESSOR" translate="y"/>
      <attr id="height" meta="UI_ACCESSOR" translate="y"/>
      <attr id="top" meta="UI_STYLE" translate="y"/>
      <attr id="bottom" meta="UI_STYLE" translate="y"/>
      <attr id="left" meta="UI_STYLE" translate="y"/>
      <attr id="right" meta="UI_STYLE" translate="y"/>
      <attr id="horizontalCenter" meta="UI_STYLE" translate="y"/>
      <attr id="verticalCenter" meta="UI_STYLE" translate="y"/>
      <attr id="x" meta="UI_ACCESSOR" translate="y"/>
      <attr id="y" meta="UI_ACCESSOR" translate="y"/>
      <attr id="cfgVisible" meta="UI_ACCESSOR" localize="y"/>
      <attr id="width" meta="UI_ACCESSOR" translate="y"/>
      <attr id="height" meta="UI_ACCESSOR" translate="y"/>
    </element>
    <element id="swf" classRT="com.adobe.configurator2.component.SwfInHTMLRuntime2">
      <attr id="url" meta="UI_ACCESSOR" translate="y"/>
      <attr id="toolTip" meta="UI_ACCESSOR" localize="y" translate="y"/>
      <attr id="noDisplayPrompt" meta="UI_ACCESSOR" translate="y"/>
      <attr id="offlinePromptTitle" meta="UI_ACCESSOR" translate="y"/>
      <attr id="offlinePromptDetail" meta="UI_ACCESSOR" translate="y"/>
      <attr id="netUnAvailablePromptTitle" meta="UI_ACCESSOR" translate="y"/>
      <attr id="netUnAvailablePromptDetail" meta="UI_ACCESSOR" translate="y"/>
      <attr id="reloadText" meta="UI_ACCESSOR" translate="y"/>
      <attr id="reloadLabel" meta="UI_ACCESSOR" translate="y"/>
      <attr id="top" meta="UI_STYLE" translate="y"/>
      <attr id="bottom" meta="UI_STYLE" translate="y"/>
      <attr id="left" meta="UI_STYLE" translate="y"/>
      <attr id="right" meta="UI_STYLE" translate="y"/>
      <attr id="horizontalCenter" meta="UI_STYLE" translate="y"/>
      <attr id="verticalCenter" meta="UI_STYLE" translate="y"/>
      <attr id="x" meta="UI_ACCESSOR" translate="y"/>
      <attr id="y" meta="UI_ACCESSOR" translate="y"/>
      <attr id="cfgVisible" meta="UI_ACCESSOR" localize="y"/>
      <attr id="width" meta="UI_ACCESSOR" translate="y"/>
      <attr id="height" meta="UI_ACCESSOR" translate="y"/>
    </element>
  </elements>
  <properties>
    <property id="LocaleSearchPath2">${HostProductRoot}/Locales/${LocaleID}/Support Files/Panels/${PanelName}/dictionary.xml</property>
    <property id="LocaleSearchPath1">${HostProductRoot}/Locales/${LocaleID}/Support Files/Panels/fsPanels.xml</property>
  </properties>
</gpc>