So after many attempts of trying with arcpy what is straightforward to do with ArcGIS Pro GUI:
share a 3D Scene's Feature Layer (containing 3DObjects or Multipatch) as an AGOL scene layer with associated feature layer (and of course service definition) would like to know what are the current workflows.
In the GUI is simply right click in the contents pane, in the feature layer > share > as web layer (it generates the correspondent feature, scene and service definition)
Have tried this although either with arcpy.mp.ArcGISProject(str_prjflPath).listMaps()[0].getWebLayerSharingDraft and with the deprecated arcpy.mp.CreateWebLayerSDDraft it only publishes Feature Layers (and not the associated scene layer, as the ArcGIS Pro "Share to Web Layer" does):
Basically adapted the last part of the code here: Automate overwrite web layer, feature class with upload of service definition, and the special use case of publishing a feature layer with associated scene layer.
<SPAN class="keyword token">import</SPAN> arcpy
<SPAN class="keyword token">import</SPAN> os<SPAN class="punctuation token">,</SPAN> sys
<SPAN class="comment token">### Start setting variables</SPAN>
<SPAN class="comment token"># Set the path to the project</SPAN>
prjPath <SPAN class="operator token">=</SPAN> r"D<SPAN class="punctuation token">:</SPAN>\testing<SPAN class="comment token">#2\tests2.aprx"</SPAN>
<SPAN class="comment token"># Update the following variables to match:</SPAN>
<SPAN class="comment token"># Feature service/SD name in arcgis.com, user/password of the owner account</SPAN>
sd_fs_name <SPAN class="operator token">=</SPAN> <SPAN class="string token">"MyPublicMap"</SPAN>
portal <SPAN class="operator token">=</SPAN> <SPAN class="string token">"http://www.arcgis.com"</SPAN> <SPAN class="comment token"># Can also reference a local portal</SPAN>
user <SPAN class="operator token">=</SPAN> <SPAN class="string token">"username"</SPAN>
password <SPAN class="operator token">=</SPAN> <SPAN class="string token">"password"</SPAN>
<SPAN class="comment token"># Set sharing options</SPAN>
shrOrg <SPAN class="operator token">=</SPAN> <SPAN class="token boolean">False</SPAN>
shrEveryone <SPAN class="operator token">=</SPAN> <SPAN class="token boolean">False</SPAN>
shrGroups <SPAN class="operator token">=</SPAN> <SPAN class="string token">""</SPAN>
<SPAN class="comment token">### End setting variables</SPAN>
<SPAN class="comment token"># Local paths to create temporary content</SPAN>
relPath <SPAN class="operator token">=</SPAN> os<SPAN class="punctuation token">.</SPAN>path<SPAN class="punctuation token">.</SPAN>dirname<SPAN class="punctuation token">(</SPAN>prjPath<SPAN class="punctuation token">)</SPAN>
sddraft <SPAN class="operator token">=</SPAN> os<SPAN class="punctuation token">.</SPAN>path<SPAN class="punctuation token">.</SPAN>join<SPAN class="punctuation token">(</SPAN>relPath<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"WebUpdate.sddraft"</SPAN><SPAN class="punctuation token">)</SPAN>
sd <SPAN class="operator token">=</SPAN> os<SPAN class="punctuation token">.</SPAN>path<SPAN class="punctuation token">.</SPAN>join<SPAN class="punctuation token">(</SPAN>relPath<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"WebUpdate.sd"</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token"># Create a new SDDraft and stage to SD</SPAN>
<SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">"Creating SD file"</SPAN><SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>env<SPAN class="punctuation token">.</SPAN>overwriteOutput <SPAN class="operator token">=</SPAN> <SPAN class="token boolean">True</SPAN>
prj <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>mp<SPAN class="punctuation token">.</SPAN>ArcGISProject<SPAN class="punctuation token">(</SPAN>prjPath<SPAN class="punctuation token">)</SPAN>
mp <SPAN class="operator token">=</SPAN> prj<SPAN class="punctuation token">.</SPAN>listMaps<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">[</SPAN><SPAN class="number token">1</SPAN><SPAN class="punctuation token">]</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>mp<SPAN class="punctuation token">.</SPAN>CreateWebLayerSDDraft<SPAN class="punctuation token">(</SPAN>mp<SPAN class="punctuation token">,</SPAN> sddraft<SPAN class="punctuation token">,</SPAN> sd_fs_name<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'MY_HOSTED_SERVICES'</SPAN><SPAN class="punctuation token">,</SPAN>
<SPAN class="string token">'FEATURE_ACCESS'</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="string token">''</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="token boolean">True</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="token boolean">True</SPAN><SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>StageService_server<SPAN class="punctuation token">(</SPAN>sddraft<SPAN class="punctuation token">,</SPAN> sd<SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>UploadServiceDefinition_server<SPAN class="punctuation token">(</SPAN>
in_sd_file<SPAN class="operator token">=</SPAN>sd<SPAN class="punctuation token">,</SPAN>
in_server<SPAN class="operator token">=</SPAN><SPAN class="string token">"My Hosted Services"</SPAN><SPAN class="punctuation token">,</SPAN>
<SPAN class="comment token">#in_service_name #already specified in service definition</SPAN>
<SPAN class="comment token">#in_cluster</SPAN>
<SPAN class="comment token">#in_folder_type #already specified in service definition</SPAN>
<SPAN class="comment token">#in_folder #already specified in service definition</SPAN>
in_startupType<SPAN class="operator token">=</SPAN><SPAN class="string token">'STARTED'</SPAN><SPAN class="punctuation token">,</SPAN>
<SPAN class="comment token">#sharing configurations overriding default (only owner level access)</SPAN>
in_override<SPAN class="operator token">=</SPAN><SPAN class="string token">'OVERRIDE_DEFINITION'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="comment token">#default False</SPAN>
in_my_contents<SPAN class="operator token">=</SPAN><SPAN class="string token">'SHARE_ONLINE'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="comment token">#default 'SHARE_ONLINE' make it accessible from All My Content</SPAN>
in_public<SPAN class="operator token">=</SPAN><SPAN class="string token">'PRIVATE'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="comment token">#default PRIVATE do not make it shared with everyone</SPAN>
in_organization<SPAN class="operator token">=</SPAN><SPAN class="string token">'NO_SHARE_ORGANIZATION'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="comment token">#default 'NO_SHARE_ORGANIZATION'</SPAN>
in_groups<SPAN class="operator token">=</SPAN><SPAN class="string token">''</SPAN> <SPAN class="comment token">#default '', for multiple use string list of groups for example</SPAN>
<SPAN class="punctuation token">)</SPAN><SPAN class="line-numbers-rows"><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN></SPAN>
Now using the more recent getWebLayerSharingDraft method of arcgis pro map object.
Functionality:
- Create an ArcGIS Pro map python object with arcpy.mp.ArcGISProject('<str_path_aproject>').
- Create the desired arcgis pro map layers list object using .listMaps() method of arcgis pro project python object, and .listLayers method of arcgispro map python object.
- Arcpy Sign in to either AGOL or ArcGIS Enterprise Portal (access and credentials)
- Create a sharing draft python object and set service properties.
- Create a Service definition draft (.sddraft file) using .exportToSDDraft('<str_filename>). method of sharing draft object.
- Create a service definition (.sd file) with arcpy's .StageService_server() method representing the Stage tool which analyses drafts for suitability and sources of potential performance issues.
- Finally, upload the service definition to AGOL or ArcGIS Enterprise portal as a GIS service with arcpy's .UploadServiceDefinition_server() method representing the Upload Service Definition tool.
Independently of asynchronous tasks like upload service being done which can be made in multiprocessing as recomendation algorithm waits for objects to complete e.g. upload service for continue basics.
If possible use this as reference:
<SPAN class="keyword token">def</SPAN> <SPAN class="token function">share_weblayer</SPAN><SPAN class="punctuation token">(</SPAN>
str_prjflPath<SPAN class="punctuation token">,</SPAN>
str_servicename
<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN>
<SPAN class="comment token">#import libs</SPAN>
<SPAN class="keyword token">import</SPAN> arcpy
<SPAN class="keyword token">import</SPAN> os
<SPAN class="keyword token">import</SPAN> shutil
<SPAN class="keyword token">import</SPAN> sys
<SPAN class="keyword token">from</SPAN> arcgis<SPAN class="punctuation token">.</SPAN>gis <SPAN class="keyword token">import</SPAN> GIS
<SPAN class="comment token">#</SPAN>
<SPAN class="comment token">#variables</SPAN>
str_servicename<SPAN class="operator token">=</SPAN>str_servicename<SPAN class="punctuation token">.</SPAN>replace<SPAN class="punctuation token">(</SPAN><SPAN class="string token">'-'</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="string token">''</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token">#i) Create an ArcGIS Pro map python object with arcpy.mp.ArcGISProject('<str_path_aproject>').</SPAN>
aprj_working <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>mp<SPAN class="punctuation token">.</SPAN>ArcGISProject<SPAN class="punctuation token">(</SPAN>str_prjflPath<SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token">#</SPAN>
<SPAN class="comment token">#ii) Create the desired arcgis pro map layers list object using .listMaps() .listLayers methods repectively of arcgispro project and of map objects.</SPAN>
lst_amaps <SPAN class="operator token">=</SPAN> aprj_working<SPAN class="punctuation token">.</SPAN>listMaps<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN>
amap_working<SPAN class="operator token">=</SPAN>lst_amaps<SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN>
lst_alyrs<SPAN class="operator token">=</SPAN>amap_working<SPAN class="punctuation token">.</SPAN>listLayers<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token">#</SPAN>
<SPAN class="comment token">#iii) Arcpy Sign in to either AGOL or ArcGIS Enterprise Portal (access and credentials) if necessary</SPAN>
str_portal<SPAN class="operator token">=</SPAN><SPAN class="string token">"https://www.arcgis.com"</SPAN>
str_user<SPAN class="operator token">=</SPAN><SPAN class="string token">"user"</SPAN>
str_password<SPAN class="operator token">=</SPAN><SPAN class="string token">"password"</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>SignInToPortal<SPAN class="punctuation token">(</SPAN>str_portal<SPAN class="punctuation token">,</SPAN> str_user<SPAN class="punctuation token">,</SPAN> str_password<SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token">#</SPAN>
<SPAN class="comment token">#iv) Create a sharing draft featuresharingdraft arcpy object </SPAN>
sdraft_working<SPAN class="operator token">=</SPAN>amap_working<SPAN class="punctuation token">.</SPAN>getWebLayerSharingDraft<SPAN class="punctuation token">(</SPAN>
<SPAN class="comment token">#server_type</SPAN>
server_type<SPAN class="operator token">=</SPAN><SPAN class="string token">"HOSTING_SERVER"</SPAN><SPAN class="punctuation token">,</SPAN>
<SPAN class="comment token">#service_type</SPAN>
service_type<SPAN class="operator token">=</SPAN><SPAN class="string token">"FEATURE"</SPAN><SPAN class="punctuation token">,</SPAN>
<SPAN class="comment token">#service_name</SPAN>
service_name<SPAN class="operator token">=</SPAN>str_servicename<SPAN class="punctuation token">,</SPAN>
<SPAN class="comment token">#layers_and_tables=None defaults #filter the Layers and Tables to show</SPAN>
<SPAN class="comment token">#note that only the 'MapView' layers and tables that belong to default geodatabase are available</SPAN>
layers_and_tables<SPAN class="operator token">=</SPAN>lst_alyrs
<SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token">#set properties of FeatureSharingDraft class instance (and also representing a type)</SPAN>
sdraft_working<SPAN class="punctuation token">.</SPAN>allowExporting<SPAN class="operator token">=</SPAN><SPAN class="token boolean">False</SPAN>
sdraft_working<SPAN class="punctuation token">.</SPAN>credits <SPAN class="operator token">=</SPAN> <SPAN class="string token">"user"</SPAN>
sdraft_working<SPAN class="punctuation token">.</SPAN>description <SPAN class="operator token">=</SPAN> <SPAN class="string token">"My Description"</SPAN>
sdraft_working<SPAN class="punctuation token">.</SPAN>offline <SPAN class="operator token">=</SPAN> <SPAN class="token boolean">True</SPAN>
sdraft_working<SPAN class="punctuation token">.</SPAN>overwriteExistingService <SPAN class="operator token">=</SPAN><SPAN class="token boolean">True</SPAN>
sdraft_working<SPAN class="punctuation token">.</SPAN>portalFolder <SPAN class="operator token">=</SPAN> <SPAN class="string token">"example"</SPAN>
sdraft_working<SPAN class="punctuation token">.</SPAN>serverType<SPAN class="operator token">=</SPAN><SPAN class="string token">"HOSTING_SERVER"</SPAN>
sdraft_working<SPAN class="punctuation token">.</SPAN>serviceName<SPAN class="operator token">=</SPAN>str_servicename
sdraft_working<SPAN class="punctuation token">.</SPAN>summary <SPAN class="operator token">=</SPAN> <SPAN class="string token">"My Summary"</SPAN>
sdraft_working<SPAN class="punctuation token">.</SPAN>tags <SPAN class="operator token">=</SPAN> <SPAN class="string token">"My Tags"</SPAN>
sdraft_working<SPAN class="punctuation token">.</SPAN>useLimitations <SPAN class="operator token">=</SPAN> <SPAN class="string token">"My Use Limitations"</SPAN>
<SPAN class="comment token">#</SPAN>
<SPAN class="comment token">#v) Create a Service definition draft (.sddraft file)</SPAN>
str_dir<SPAN class="operator token">=</SPAN>os<SPAN class="punctuation token">.</SPAN>path<SPAN class="punctuation token">.</SPAN>join<SPAN class="punctuation token">(</SPAN>os<SPAN class="punctuation token">.</SPAN>path<SPAN class="punctuation token">.</SPAN>dirname<SPAN class="punctuation token">(</SPAN>str_prjflPath<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="string token">'folder_output'</SPAN><SPAN class="punctuation token">)</SPAN>
str_sddraftflname<SPAN class="operator token">=</SPAN>str_servicename<SPAN class="operator token">+</SPAN><SPAN class="string token">".sddraft"</SPAN>
str_sddraftfullpath<SPAN class="operator token">=</SPAN>os<SPAN class="punctuation token">.</SPAN>path<SPAN class="punctuation token">.</SPAN>join<SPAN class="punctuation token">(</SPAN>str_dir<SPAN class="punctuation token">,</SPAN>str_sddraftflname<SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">if</SPAN> <SPAN class="operator token">not</SPAN> os<SPAN class="punctuation token">.</SPAN>path<SPAN class="punctuation token">.</SPAN>isdir<SPAN class="punctuation token">(</SPAN>str_dir<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN>
os<SPAN class="punctuation token">.</SPAN>makedirs<SPAN class="punctuation token">(</SPAN>str_dir<SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">elif</SPAN> os<SPAN class="punctuation token">.</SPAN>path<SPAN class="punctuation token">.</SPAN>isfile<SPAN class="punctuation token">(</SPAN>str_sddraftfullpath<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN>
os<SPAN class="punctuation token">.</SPAN>remove<SPAN class="punctuation token">(</SPAN>str_sddraftfullpath<SPAN class="punctuation token">)</SPAN>
sdraft_working<SPAN class="punctuation token">.</SPAN>exportToSDDraft<SPAN class="punctuation token">(</SPAN>str_sddraftfullpath<SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token">#</SPAN>
<SPAN class="comment token">#vi) Create a service definition (.sd file)</SPAN>
str_sdflname<SPAN class="operator token">=</SPAN>str_servicename<SPAN class="operator token">+</SPAN><SPAN class="string token">".sd"</SPAN>
str_sdfullpath<SPAN class="operator token">=</SPAN>os<SPAN class="punctuation token">.</SPAN>path<SPAN class="punctuation token">.</SPAN>join<SPAN class="punctuation token">(</SPAN>str_dir<SPAN class="punctuation token">,</SPAN>str_sdflname<SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">if</SPAN> os<SPAN class="punctuation token">.</SPAN>path<SPAN class="punctuation token">.</SPAN>isfile<SPAN class="punctuation token">(</SPAN>str_sdfullpath<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN>
os<SPAN class="punctuation token">.</SPAN>remove<SPAN class="punctuation token">(</SPAN>str_sdfullpath<SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>StageService_server<SPAN class="punctuation token">(</SPAN>str_sddraftfullpath<SPAN class="punctuation token">,</SPAN> str_sdfullpath<SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token">#</SPAN>
<SPAN class="comment token">#vii) Finally, upload the service definition to AGOL or ArcGIS Enterprise portal</SPAN>
<SPAN class="comment token">#report the asynchcronous task (eventually use threads, or even better multiprocessing for this)</SPAN>
display<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"Uploading Service Definition..."</SPAN><SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>UploadServiceDefinition_server<SPAN class="punctuation token">(</SPAN>
in_sd_file<SPAN class="operator token">=</SPAN>str_sdfullpath<SPAN class="punctuation token">,</SPAN>
in_server<SPAN class="operator token">=</SPAN><SPAN class="string token">"My Hosted Services"</SPAN><SPAN class="punctuation token">,</SPAN>
<SPAN class="comment token">#in_service_name #already specified in service definition</SPAN>
<SPAN class="comment token">#in_cluster</SPAN>
<SPAN class="comment token">#in_folder_type #already specified in service definition</SPAN>
<SPAN class="comment token">#in_folder #already specified in service definition</SPAN>
in_startupType<SPAN class="operator token">=</SPAN><SPAN class="string token">'STARTED'</SPAN><SPAN class="punctuation token">,</SPAN>
<SPAN class="comment token">#sharing configurations overriding default (only owner level access)</SPAN>
in_override<SPAN class="operator token">=</SPAN><SPAN class="string token">'OVERRIDE_DEFINITION'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="comment token">#default False</SPAN>
in_my_contents<SPAN class="operator token">=</SPAN><SPAN class="string token">'SHARE_ONLINE'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="comment token">#default 'SHARE_ONLINE' make it accessible from All My Content</SPAN>
in_public<SPAN class="operator token">=</SPAN><SPAN class="string token">'PRIVATE'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="comment token">#default PRIVATE do not make it shared with everyone</SPAN>
in_organization<SPAN class="operator token">=</SPAN><SPAN class="string token">'NO_SHARE_ORGANIZATION'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="comment token">#default 'NO_SHARE_ORGANIZATION'</SPAN>
in_groups<SPAN class="operator token">=</SPAN><SPAN class="string token">''</SPAN> <SPAN class="comment token">#default '', for multiple use string list of groups for example</SPAN>
<SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">"SUCCESS: Uploaded service definition."</SPAN><SPAN class="punctuation token">)</SPAN>
share_weblayer<SPAN class="punctuation token">(</SPAN>
str_prjflPath<SPAN class="operator token">=</SPAN>r<SPAN class="string token">"path_to_aprxfile"</SPAN><SPAN class="punctuation token">,</SPAN>
str_servicename<SPAN class="operator token">=</SPAN>r<SPAN class="string token">'example_service'</SPAN>
<SPAN class="punctuation token">)</SPAN><SPAN class="line-numbers-rows"><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN></SPAN>So if anyone knows how to do it ideas are welcome in advance.