1(function()
2{
3	// Adds MSCAE shapes
4	Sidebar.prototype.addMSCAEPalette = function()
5	{
6		var gn = 'mxgraph.mscae';
7		var r = 100;
8		var sb = this;
9		var s = 'sketch=0;aspect=fixed;html=1;points=[];align=center;image;fontSize=12;image=img/lib/mscae/';
10
11		this.setCurrentSearchEntryLibrary('mscae', 'mscaeCompanies');
12		this.addMSCAECompaniesPalette(gn, r, sb, s);
13		this.setCurrentSearchEntryLibrary('mscae', 'mscaeEnterpriseFlat');
14		this.addMSCAEEnterpriseFlatPalette(gn, r, sb);
15		this.setCurrentSearchEntryLibrary('mscae', 'mscaeIntuneFlat');
16		this.addMSCAEIntuneFlatPalette(gn, r, sb);
17		this.setCurrentSearchEntryLibrary('mscae', 'mscaeOMSFlat');
18		this.addMSCAEOMSFlatPalette(gn, r, sb);
19		this.setCurrentSearchEntryLibrary('mscae', 'mscaeSystem CenterFlat');
20		this.addMSCAESystemCenterFlatPalette(gn, r, sb);
21		this.setCurrentSearchEntryLibrary('mscae', 'mscaeAI and ML Service');
22		this.addMSCAEAIandMLServicePalette(gn, r, sb, s);
23		this.setCurrentSearchEntryLibrary('mscae', 'mscaeAnalytics Service');
24		this.addMSCAEAnalyticsServicePalette(gn, r, sb, s);
25		this.setCurrentSearchEntryLibrary('mscae', 'mscaeCompute Service');
26		this.addMSCAEComputeServicePalette(gn, r, sb, s);
27		this.setCurrentSearchEntryLibrary('mscae', 'mscaeCompute Service VM');
28		this.addMSCAEComputeServiceVMPalette(gn, r, sb, s);
29		this.setCurrentSearchEntryLibrary('mscae', 'mscaeContainer Service');
30		this.addMSCAEContainerServiceVMPalette(gn, r, sb, s);
31		this.setCurrentSearchEntryLibrary('mscae', 'mscaeDatabases Service');
32		this.addMSCAEDatabasesServicePalette(gn, r, sb, s);
33		this.setCurrentSearchEntryLibrary('mscae', 'mscaeDevOps Service');
34		this.addMSCAEDevOpsServicePalette(gn, r, sb, s);
35		this.setCurrentSearchEntryLibrary('mscae', 'mscaeGeneral Service');
36		this.addMSCAEGeneralServicePalette(gn, r, sb, s);
37		this.setCurrentSearchEntryLibrary('mscae', 'mscaeIdentity Service');
38		this.addMSCAEIdentityServicePalette(gn, r, sb, s);
39		this.setCurrentSearchEntryLibrary('mscae', 'mscaeIntegration Service');
40		this.addMSCAEIntegrationServicePalette(gn, r, sb, s);
41		this.setCurrentSearchEntryLibrary('mscae', 'mscaeInternet of Things Service');
42		this.addMSCAEInternetOfThingsServicePalette(gn, r, sb, s);
43		this.setCurrentSearchEntryLibrary('mscae', 'mscaeIntune Service');
44		this.addMSCAEIntuneServicePalette(gn, r, sb, s);
45		this.setCurrentSearchEntryLibrary('mscae', 'mscaeManagement and Governance Service');
46		this.addMSCAEManagementGovernanceServicePalette(gn, r, sb, s);
47		this.setCurrentSearchEntryLibrary('mscae', 'mscaeManagement and Governance Service Media');
48		this.addMSCAEManagementGovernanceMediaServicePalette(gn, r, sb, s);
49		this.setCurrentSearchEntryLibrary('mscae', 'mscaeMigrate Service');
50		this.addMSCAEMigrateServicePalette(gn, r, sb, s);
51		this.setCurrentSearchEntryLibrary('mscae', 'mscaeMixed Reality Service');
52		this.addMSCAEMixedRealityServicePalette(gn, r, sb, s);
53		this.setCurrentSearchEntryLibrary('mscae', 'mscaeMobile Service');
54		this.addMSCAEMobileServicePalette(gn, r, sb, s);
55		this.setCurrentSearchEntryLibrary('mscae', 'mscaeNetworking Service');
56		this.addMSCAENetworkingServicePalette(gn, r, sb, s);
57		this.setCurrentSearchEntryLibrary('mscae', 'mscaeOther Category Service');
58		this.addMSCAEOtherCategoryServicePalette(gn, r, sb, s);
59		this.setCurrentSearchEntryLibrary('mscae', 'mscaeSecurity Service');
60		this.addMSCAESecurityServicePalette(gn, r, sb, s);
61		this.setCurrentSearchEntryLibrary('mscae', 'mscaeStorage Service');
62		this.addMSCAEStorageServicePalette(gn, r, sb, s);
63		this.setCurrentSearchEntryLibrary('mscae', 'mscaeWeb Service');
64		this.addMSCAEWebServicePalette(gn, r, sb, s);
65		this.setCurrentSearchEntryLibrary();
66	};
67
68	Sidebar.prototype.addMSCAECompaniesPalette = function(gn, r, sb, s)
69	{
70		var dt = 'ms microsoft cloud enterprise company companies';
71
72		var fns =
73		[
74			this.createVertexTemplateEntry(s + 'Cache_Redis_Product.svg;',
75					r * 0.5, r * 0.42, '', 'Cache Redis Product Icon', null, null, this.getTagsForStencil(gn, 'azure cache redis product icon', dt).join(' ')),
76			this.createVertexTemplateEntry(s + 'Databricks.svg;',
77					r * 0.5, r * 0.48, '', 'Databricks', null, null, this.getTagsForStencil(gn, 'azure databricks', dt).join(' ')),
78			this.createVertexTemplateEntry(s + 'HDInsight.svg;',
79					r * 0.5, r * 0.48, '', 'HDInsight', null, null, this.getTagsForStencil(gn, 'azure hdinsight', dt).join(' ')),
80			this.createVertexTemplateEntry('sketch=0;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.mscae.cloud.hockeyapp;fillColor=#0079D6;pointerEvents=1;',
81					r * 0.5, r * 0.38, '', 'HockeyApp', null, null, this.getTagsForStencil(gn, 'azure hockey app hockeyapp', dt).join(' ')),
82			this.createVertexTemplateEntry(s + 'OpenShift.svg;',
83					r * 0.5, r * 0.46, '', 'OpenShift', null, null, this.getTagsForStencil(gn, 'azure open shift openshift', dt).join(' ')),
84			this.createVertexTemplateEntry(s + 'Cloud_Cycle.svg;',
85					r * 0.5, r * 0.46, '', 'Cloud Cycle', null, null, this.getTagsForStencil(gn, 'cloud cycle', dt).join(' ')),
86			this.createVertexTemplateEntry(s + 'Kubernetes.svg;',
87					r * 0.5, r * 0.48, '', 'Kubernetes', null, null, this.getTagsForStencil(gn, 'kubernetes', dt).join(' ')),
88			this.createVertexTemplateEntry(s + 'PluralSight_mono.svg;',
89					r * 0.5, r * 0.5, '', 'PluralSight Mono', null, null, this.getTagsForStencil(gn, 'pluralsight mono', dt).join(' ')),
90			this.createVertexTemplateEntry(s + 'DC_OS.svg;',
91					r * 0.4, r * 0.5, '', 'DC OS', null, null, this.getTagsForStencil(gn, 'dc os', dt).join(' ')),
92			this.createVertexTemplateEntry(s + 'Docker.svg;',
93					r * 0.5, r * 0.41, '', 'Docker', null, null, this.getTagsForStencil(gn, 'docker', dt).join(' ')),
94			this.createVertexTemplateEntry(s + 'StackOverflow.svg;',
95					r * 0.4, r * 0.5, '', 'StackOverflow', null, null, this.getTagsForStencil(gn, 'stack overflow stackoverflow so', dt).join(' ')),
96			this.createVertexTemplateEntry(s + 'WebAppUmbraco.svg;',
97					r * 0.49, r * 0.5, '', 'WebAppUmbraco', null, null, this.getTagsForStencil(gn, 'webappumbraco webapp umbraco', dt).join(' ')),
98			this.createVertexTemplateEntry(s + 'WebAppWordPress.svg;',
99					r * 0.49, r * 0.5, '', 'WebAppWordPress', null, null, this.getTagsForStencil(gn, 'webappwordpress webapp wordpress', dt).join(' '))
100		];
101
102		this.addPalette('mscaeCompanies', 'CAE / Companies', false, mxUtils.bind(this, function(content)
103				{
104					for (var i = 0; i < fns.length; i++)
105					{
106						content.appendChild(fns[i](content));
107					}
108		}));
109	};
110
111	Sidebar.prototype.addMSCAEEnterpriseFlatPalette = function(gn, r, sb)
112	{
113		var s = 'sketch=0;aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;fillColor=#00188D;shape=mxgraph.';
114		var s2 = 'sketch=0;aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.';
115		var dt = 'ms microsoft cloud enterprise flat';
116
117		var fns =
118		[
119			this.createVertexTemplateEntry(
120					s + 'mscae.enterprise.d',
121					r * 0.4, r * 0.5, '', 'Federation Services Proxy', null, null, this.getTagsForStencil(gn, 'active directory ad fs federation services proxy', dt).join(' ')),
122			this.createVertexTemplateEntry(
123					s + 'mscae.enterprise.ad_fs',
124					r * 0.4, r * 0.5, '', 'Federation Services', null, null, this.getTagsForStencil(gn, 'active directory ad fs federation services', dt).join(' ')),
125			this.createVertexTemplateEntry(
126					s + 'mscae.enterprise.android_phone',
127					r * 0.3, r * 0.5, '', 'Android Phone', null, null, this.getTagsForStencil(gn, 'android phone', dt).join(' ')),
128			this.createVertexTemplateEntry(
129					s + 'mscae.enterprise.application',
130					r * 0.5, r * 0.34, '', 'Application', null, null, this.getTagsForStencil(gn, 'application', dt).join(' ')),
131			this.createVertexTemplateEntry(
132					s + 'mscae.enterprise.application_blank',
133					r * 0.5, r * 0.43, '', 'Application (blank)', null, null, this.getTagsForStencil(gn, 'application blank', dt).join(' ')),
134			this.createVertexTemplateEntry(
135					s + 'mscae.enterprise.app_generic',
136					r * 0.5, r * 0.39, '', 'Application (generic)', null, null, this.getTagsForStencil(gn, 'application generic', dt).join(' ')),
137			this.createVertexTemplateEntry(
138					s + 'mscae.enterprise.application_server',
139					r * 0.43, r * 0.5, '', 'Application Server', null, null, this.getTagsForStencil(gn, 'application server', dt).join(' ')),
140			this.createVertexTemplateEntry(
141					s + 'mscae.enterprise.application_server2',
142					r * 0.43, r * 0.5, '', 'Application Server', null, null, this.getTagsForStencil(gn, 'application server', dt).join(' ')),
143			this.createVertexTemplateEntry(
144					s + 'mscae.enterprise.pack',
145					r * 0.5, r * 0.45, '', 'Pack', null, null, this.getTagsForStencil(gn, 'pack', dt).join(' ')),
146			this.createVertexTemplateEntry(
147					s + 'mscae.enterprise.backup_local',
148					r * 0.49, r * 0.5, '', 'Backup (local)', null, null, this.getTagsForStencil(gn, 'backup local', dt).join(' ')),
149			this.createVertexTemplateEntry(
150					s + 'mscae.enterprise.backup_online',
151					r * 0.5, r * 0.4, '', 'Backup (local)', null, null, this.getTagsForStencil(gn, 'backup local', dt).join(' ')),
152			this.createVertexTemplateEntry(
153					s + 'mscae.enterprise.calendar',
154					r * 0.5, r * 0.41, '', 'Calendar', null, null, this.getTagsForStencil(gn, 'calendar', dt).join(' ')),
155			this.createVertexTemplateEntry(
156					s + 'azure.certificate',
157					r * 0.5, r * 0.4, '', 'Certificate', null, null, this.getTagsForStencil(gn, 'certificate', dt).join(' ')),
158			this.createVertexTemplateEntry(
159					s + 'mscae.enterprise.client_application',
160					r * 0.5, r * 0.32, '', 'Client Application', null, null, this.getTagsForStencil(gn, 'client application', dt).join(' ')),
161			this.createVertexTemplateEntry(
162					s + 'azure.cloud',
163					r * 0.5, r * 0.32, '', 'Cloud', null, null, this.getTagsForStencil(gn, 'cloud', dt).join(' ')),
164			this.createVertexTemplateEntry(
165					s + 'mscae.enterprise.internet',
166					r * 0.5, r * 0.31, '', 'Cloud', null, null, this.getTagsForStencil(gn, 'cloud', dt).join(' ')),
167			this.createVertexTemplateEntry(
168					s + 'mscae.enterprise.cluster_server',
169					r * 0.4, r * 0.5, '', 'Cluster Server', null, null, this.getTagsForStencil(gn, 'cluster server', dt).join(' ')),
170			this.createVertexTemplateEntry(
171					s + 'mscae.enterprise.code_file',
172					r * 0.49, r * 0.5, '', 'Code File', null, null, this.getTagsForStencil(gn, 'code file', dt).join(' ')),
173			this.createVertexTemplateEntry(
174					s + 'mscae.enterprise.connectors',
175					r * 0.5, r * 0.34, '', 'Connectors', null, null, this.getTagsForStencil(gn, 'connectors', dt).join(' ')),
176			this.createVertexTemplateEntry(
177					s + 'mscae.enterprise.database_generic',
178					r * 0.37, r * 0.5, '', 'Database (generic)', null, null, this.getTagsForStencil(gn, 'database generic', dt).join(' ')),
179			this.createVertexTemplateEntry(
180					s + 'mscae.enterprise.database_server',
181					r * 0.38, r * 0.5, '', 'Database (server)', null, null, this.getTagsForStencil(gn, 'database server', dt).join(' ')),
182			this.createVertexTemplateEntry(
183					s + 'mscae.enterprise.database_synchronization',
184					r * 0.39, r * 0.5, '', 'Database (synchronization)', null, null, this.getTagsForStencil(gn, 'database synchronization', dt).join(' ')),
185			this.createVertexTemplateEntry(
186					s + 'mscae.enterprise.device',
187					r * 0.5, r * 0.26, '', 'Device', null, null, this.getTagsForStencil(gn, 'device', dt).join(' ')),
188			this.createVertexTemplateEntry(
189					s + 'mscae.enterprise.direct_access_feature',
190					r * 0.5, r * 0.44, '', 'Direct Access (feature)', null, null, this.getTagsForStencil(gn, 'direct access feature', dt).join(' ')),
191			this.createVertexTemplateEntry(
192					s + 'azure.code_file',
193					r * 0.47, r * 0.5, '', 'Document DB file', null, null, this.getTagsForStencil(gn, 'documentdb document db database file', dt).join(' ')),
194			this.createVertexTemplateEntry(
195					s + 'mscae.enterprise.document',
196					r * 0.4, r * 0.5, '', 'Document', null, null, this.getTagsForStencil(gn, 'document', dt).join(' ')),
197			this.createVertexTemplateEntry(
198					s + 'mscae.enterprise.domain_controller',
199					r * 0.36, r * 0.5, '', 'Domain Controller', null, null, this.getTagsForStencil(gn, 'domain controller', dt).join(' ')),
200			this.createVertexTemplateEntry(
201					s + 'azure.enterprise',
202					r * 0.3, r * 0.5, '', 'Enterprise Building', null, null, this.getTagsForStencil(gn, 'enterprise building', dt).join(' ')),
203			this.createVertexTemplateEntry(
204					s + 'azure.file',
205					r * 0.47, r * 0.5, '', 'File (general)', null, null, this.getTagsForStencil(gn, 'file', dt).join(' ')),
206			this.createVertexTemplateEntry(
207					s + 'mscae.enterprise.filter',
208					r * 0.5, r * 0.45, '', 'Filter', null, null, this.getTagsForStencil(gn, 'filter', dt).join(' ')),
209			this.createVertexTemplateEntry(
210					s + 'mscae.enterprise.firewall',
211					r * 0.5, r * 0.44, '', 'Firewall', null, null, this.getTagsForStencil(gn, 'firewall', dt).join(' ')),
212			this.createVertexTemplateEntry(
213					s + 'mscae.enterprise.folder',
214					r * 0.5, r * 0.43, '', 'Folder', null, null, this.getTagsForStencil(gn, 'folder', dt).join(' ')),
215			this.createVertexTemplateEntry(
216					s + 'mscae.enterprise.gateway',
217					r * 0.5, r * 0.5, '', 'Gateway', null, null, this.getTagsForStencil(gn, 'gateway', dt).join(' ')),
218			this.createVertexTemplateEntry(
219					s + 'mscae.general.graph',
220					r * 0.5, r * 0.5, '', 'Graph', null, null, this.getTagsForStencil(gn, 'graph', dt).join(' ')),
221			this.createVertexTemplateEntry(
222					s + 'azure.health_monitoring',
223					r * 0.5, r * 0.42, '', 'Health Monitoring', null, null, this.getTagsForStencil(gn, 'health monitoring', dt).join(' ')),
224			this.createVertexTemplateEntry(
225					s + 'azure.healthy',
226					r * 0.5, r * 0.45, '', 'Healthy', null, null, this.getTagsForStencil(gn, 'healthy', dt).join(' ')),
227			this.createVertexTemplateEntry(
228					s + 'mscae.enterprise.import_generic',
229					r * 0.4, r * 0.5, '', 'Import (generic)', null, null, this.getTagsForStencil(gn, 'import generic', dt).join(' ')),
230			this.createVertexTemplateEntry(
231					s + 'mscae.enterprise.internet_hollow',
232					r * 0.5, r * 0.31, '', 'Internet (hollow)', null, null, this.getTagsForStencil(gn, 'internet hollow', dt).join(' ')),
233			this.createVertexTemplateEntry(
234					s + 'mscae.enterprise.internet',
235					r * 0.5, r * 0.31, '', 'Internet', null, null, this.getTagsForStencil(gn, 'internet', dt).join(' ')),
236			this.createVertexTemplateEntry(
237					s + 'mscae.enterprise.key_permissions',
238					r * 0.26, r * 0.5, '', 'Key, Permissions', null, null, this.getTagsForStencil(gn, 'key permissions', dt).join(' ')),
239			this.createVertexTemplateEntry(
240					s + 'mscae.enterprise.keyboard',
241					r * 0.5, r * 0.3, '', 'Keyboard', null, null, this.getTagsForStencil(gn, 'keyboard', dt).join(' ')),
242			this.createVertexTemplateEntry(
243					s + 'azure.laptop',
244					r * 0.5, r * 0.3, '', 'Laptop', null, null, this.getTagsForStencil(gn, 'laptop', dt).join(' ')),
245			this.createVertexTemplateEntry(
246					s + 'azure.load_balancer_generic',
247					r * 0.37, r * 0.5, '', 'Load Balancer (generic)', null, null, this.getTagsForStencil(gn, 'load balancer generic', dt).join(' ')),
248			this.createVertexTemplateEntry(
249					s + 'mscae.enterprise.load_testing',
250					r * 0.48, r * 0.5, '', 'Load Testing', null, null, this.getTagsForStencil(gn, 'load testing', dt).join(' ')),
251			this.createVertexTemplateEntry(
252					s + 'mscae.enterprise.lock_unlocked',
253					r * 0.37, r * 0.5, '', 'Lock (unlocked)', null, null, this.getTagsForStencil(gn, 'lock unlocked unprotected accessible', dt).join(' ')),
254			this.createVertexTemplateEntry(
255					s + 'mscae.enterprise.lock',
256					r * 0.39, r * 0.5, '', 'Lock, protected', null, null, this.getTagsForStencil(gn, 'lock protected', dt).join(' ')),
257			this.createVertexTemplateEntry(
258					s + 'mscae.enterprise.maintenance',
259					r * 0.39, r * 0.5, '', 'Maintenance', null, null, this.getTagsForStencil(gn, 'maintenance', dt).join(' ')),
260			this.createVertexTemplateEntry(
261					s + 'mscae.enterprise.management_console;',
262					r * 0.5, r * 0.34, '', 'Management Console', null, null, this.getTagsForStencil(gn, 'management console', dt).join(' ')),
263			this.createVertexTemplateEntry(
264					s + 'azure.message2;',
265					r * 0.5, r * 0.37, '', 'Message', null, null, this.getTagsForStencil(gn, 'message', dt).join(' ')),
266			this.createVertexTemplateEntry(
267					s + 'mscae.enterprise.monitor_running_apps',
268					r * 0.5, r * 0.39, '', 'Monitor Running Apps', null, null, this.getTagsForStencil(gn, 'monitor running apps', dt).join(' ')),
269			this.createVertexTemplateEntry(
270					s + 'azure.computer',
271					r * 0.5, r * 0.45, '', 'Monitor', null, null, this.getTagsForStencil(gn, 'monitor computer', dt).join(' ')),
272			this.createVertexTemplateEntry(
273					s + 'mscae.enterprise.mouse',
274					r * 0.3, r * 0.5, '', 'Mouse', null, null, this.getTagsForStencil(gn, 'mouse', dt).join(' ')),
275			this.createVertexTemplateEntry(
276					s + 'mscae.enterprise.network_card',
277					r * 0.5, r * 0.35, '', 'Network Card', null, null, this.getTagsForStencil(gn, 'network card', dt).join(' ')),
278			this.createVertexTemplateEntry(
279					s2 + 'mscae.enterprise.not_allowed;fillColor=#EA1C24;',
280					r * 0.5, r * 0.5, '', 'Not Allowed', null, null, this.getTagsForStencil(gn, 'not allowed', dt).join(' ')),
281			this.createVertexTemplateEntry(
282					s + 'mscae.enterprise.performance_monitor',
283					r * 0.5, r * 0.36, '', 'Performance Monitor', null, null, this.getTagsForStencil(gn, 'performance monitor', dt).join(' ')),
284			this.createVertexTemplateEntry(
285					s + 'mscae.enterprise.performance',
286					r * 0.5, r * 0.5, '', 'Performance', null, null, this.getTagsForStencil(gn, 'performance', dt).join(' ')),
287			this.createVertexTemplateEntry(
288					s + 'azure.mobile',
289					r * 0.35, r * 0.5, '', 'Mobile', null, null, this.getTagsForStencil(gn, 'mobile', dt).join(' ')),
290			this.createVertexTemplateEntry(
291					s + 'mscae.enterprise.plug_and_play',
292					r * 0.4, r * 0.5, '', 'Plug and Play', null, null, this.getTagsForStencil(gn, 'plug and play', dt).join(' ')),
293			this.createVertexTemplateEntry(
294					s2 + 'mscae.other.powerpoint;fillColor=#DE5D24;',
295					r * 0.5, r * 0.5, '', 'PowerPoint', null, null, this.getTagsForStencil(gn, 'powerpoint', dt).join(' ')),
296			this.createVertexTemplateEntry(
297					s + 'azure.powershell_file',
298					r * 0.47, r * 0.5, '', 'PowerShell file', null, null, this.getTagsForStencil(gn, 'powershell file', dt).join(' ')),
299			this.createVertexTemplateEntry(
300					s + 'mscae.enterprise.protocol_stack',
301					r * 0.5, r * 0.34, '', 'Protocol Stack', null, null, this.getTagsForStencil(gn, 'protocol stack', dt).join(' ')),
302			this.createVertexTemplateEntry(
303					s + 'azure.queue_generic',
304					r * 0.5, r * 0.15, '', 'Queue Generic', null, null, this.getTagsForStencil(gn, 'queue generic', dt).join(' ')),
305			this.createVertexTemplateEntry(
306					s + 'mscae.enterprise.rms_connector',
307					r * 0.38, r * 0.5, '', 'RMS Connector', null, null, this.getTagsForStencil(gn, 'rms connector', dt).join(' ')),
308			this.createVertexTemplateEntry(
309					s + 'mscae.enterprise.router',
310					r * 0.5, r * 0.39, '', 'Router', null, null, this.getTagsForStencil(gn, 'router', dt).join(' ')),
311			this.createVertexTemplateEntry(
312					s + 'mscae.enterprise.router',
313					r * 0.5, r * 0.39, '', 'Router', null, null, this.getTagsForStencil(gn, 'router', dt).join(' ')),
314			this.createVertexTemplateEntry(
315					s2 + 'azure.rdp_remoting_file;fillColor=#0078D7;',
316					r * 0.48, r * 0.5, '', 'RPD Remoting file', null, null, this.getTagsForStencil(gn, 'rpd remoting file', dt).join(' ')),
317			this.createVertexTemplateEntry(
318					s + 'azure.script_file',
319					r * 0.47, r * 0.5, '', 'Script file', null, null, this.getTagsForStencil(gn, 'script file', dt).join(' ')),
320			this.createVertexTemplateEntry(
321					s + 'mscae.enterprise.secure_virtual_machine',
322					r * 0.5, r * 0.38, '', 'Secure Virtual Machine', null, null, this.getTagsForStencil(gn, 'secure virtual machine', dt).join(' ')),
323			this.createVertexTemplateEntry(
324					s + 'azure.server',
325					r * 0.5, r * 0.15, '', 'Server (blade)', null, null, this.getTagsForStencil(gn, 'server', dt).join(' ')),
326			this.createVertexTemplateEntry(
327					s + 'mscae.enterprise.server_generic',
328					r * 0.24, r * 0.5, '', 'Server (generic)', null, null, this.getTagsForStencil(gn, 'server generic', dt).join(' ')),
329			this.createVertexTemplateEntry(
330					s + 'mscae.enterprise.server_directory',
331					r * 0.36, r * 0.5, '', 'Server Directory', null, null, this.getTagsForStencil(gn, 'server directory', dt).join(' ')),
332			this.createVertexTemplateEntry(
333					s + 'mscae.enterprise.server_farm',
334					r * 0.5, r * 0.32, '', 'Server Farm', null, null, this.getTagsForStencil(gn, 'server farm', dt).join(' ')),
335			this.createVertexTemplateEntry(
336					s + 'azure.server_rack',
337					r * 0.5, r * 0.5, '', 'Server Rack', null, null, this.getTagsForStencil(gn, 'server rack', dt).join(' ')),
338			this.createVertexTemplateEntry(
339					s + 'mscae.enterprise.settings',
340					r * 0.5, r * 0.5, '', 'Settings', null, null, this.getTagsForStencil(gn, 'settings', dt).join(' ')),
341			this.createVertexTemplateEntry(
342					s + 'mscae.enterprise.shared_folder',
343					r * 0.43, r * 0.5, '', 'Shared Folder', null, null, this.getTagsForStencil(gn, 'shared folder', dt).join(' ')),
344			this.createVertexTemplateEntry(
345					s + 'mscae.enterprise.smartcard',
346					r * 0.5, r * 0.32, '', 'Smartcard', null, null, this.getTagsForStencil(gn, 'smartcard', dt).join(' ')),
347			this.createVertexTemplateEntry(
348					s2 + 'azure.startup_task;fillColor=#0078D7;',
349					r * 0.48, r * 0.5, '', 'Startup Task', null, null, this.getTagsForStencil(gn, 'startup task', dt).join(' ')),
350			this.createVertexTemplateEntry(
351					s + 'mscae.enterprise.storage',
352					r * 0.5, r * 0.41, '', 'Storage', null, null, this.getTagsForStencil(gn, 'storage', dt).join(' ')),
353			this.createVertexTemplateEntry(
354					s + 'mscae.enterprise.table',
355					r * 0.5, r * 0.5, '', 'Table', null, null, this.getTagsForStencil(gn, 'table', dt).join(' ')),
356			this.createVertexTemplateEntry(
357					s + 'azure.tablet;',
358					r * 0.5, r * 0.37, '', 'Tablet', null, null, this.getTagsForStencil(gn, 'tablet', dt).join(' ')),
359			this.createVertexTemplateEntry(
360					s + 'mscae.enterprise.tool;',
361					r * 0.5, r * 0.45, '', 'Tool', null, null, this.getTagsForStencil(gn, 'tool', dt).join(' ')),
362			this.createVertexTemplateEntry(
363					s2 + 'mscae.enterprise.triggers;fillColor=#0078D7;',
364					r * 0.47, r * 0.5, '', 'Triggers', null, null, this.getTagsForStencil(gn, 'triggers', dt).join(' ')),
365			this.createVertexTemplateEntry(
366					s + 'mscae.general.tunnel',
367					r * 0.5, r * 0.09, '', 'Tunnel', null, null, this.getTagsForStencil(gn, 'tunnel', dt).join(' ')),
368			this.createVertexTemplateEntry(
369					s2 + 'mscae.enterprise.udf_function;fillColor=#0078D7;',
370					r * 0.47, r * 0.5, '', 'UDF Function', null, null, this.getTagsForStencil(gn, 'udf function', dt).join(' ')),
371			this.createVertexTemplateEntry(
372					s2 + 'mscae.enterprise.unhealthy;fillColor=#0078D7;',
373					r * 0.5, r * 0.41, '', 'Unhealthy', null, null, this.getTagsForStencil(gn, 'unhealthy', dt).join(' ')),
374			this.createVertexTemplateEntry(
375					s + 'mscae.enterprise.unhealthy',
376					r * 0.5, r * 0.41, '', 'Unhealthy', null, null, this.getTagsForStencil(gn, 'unhealthy', dt).join(' ')),
377			this.createVertexTemplateEntry(
378					s + 'mscae.enterprise.usb',
379					r * 0.5, r * 0.23, '', 'USB', null, null, this.getTagsForStencil(gn, 'usb', dt).join(' ')),
380			this.createVertexTemplateEntry(
381					s + 'azure.user',
382					r * 0.47, r * 0.5, '', 'User (enterprise)', null, null, this.getTagsForStencil(gn, 'user', dt).join(' ')),
383			this.createVertexTemplateEntry(
384					s2 + 'mscae.enterprise.user_permissions;fillColor=#0078D7;',
385					r * 0.47, r * 0.5, '', 'User permissions', null, null, this.getTagsForStencil(gn, 'user permissions', dt).join(' ')),
386			this.createVertexTemplateEntry(
387					s + 'mscae.general.video',
388					r * 0.49, r * 0.5, '', 'Video', null, null, this.getTagsForStencil(gn, 'video', dt).join(' ')),
389			this.createVertexTemplateEntry(
390					s + 'azure.virtual_machine_feature',
391					r * 0.5, r * 0.45, '', 'Virtual Machine', null, null, this.getTagsForStencil(gn, 'virtual machine', dt).join(' ')),
392			this.createVertexTemplateEntry(
393					s + 'mscae.enterprise.web_server',
394					r * 0.38, r * 0.5, '', 'Web Server', null, null, this.getTagsForStencil(gn, 'web server', dt).join(' ')),
395			this.createVertexTemplateEntry(
396					s2 + 'mscae.enterprise.website_generic;fillColor=#7D7D7D;',
397					r * 0.5, r * 0.44, '', 'Website (generic)', null, null, this.getTagsForStencil(gn, 'website generic', dt).join(' ')),
398			this.createVertexTemplateEntry(
399					s + 'mscae.enterprise.windows_server',
400					r * 0.39, r * 0.5, '', 'Windows Server', null, null, this.getTagsForStencil(gn, 'windows server', dt).join(' ')),
401			this.createVertexTemplateEntry(
402					s + 'mscae.enterprise.wireless_connection',
403					r * 0.42, r * 0.5, '', 'Wireless Connection', null, null, this.getTagsForStencil(gn, 'wireless connection', dt).join(' ')),
404			this.createVertexTemplateEntry(
405					s + 'mscae.enterprise.workstation_client',
406					r * 0.5, r * 0.5, '', 'Workstation Client', null, null, this.getTagsForStencil(gn, 'workstation client', dt).join(' ')),
407			this.createVertexTemplateEntry(
408					s + 'mscae.enterprise.xml_web_service',
409					r * 0.5, r * 0.5, '', 'XML Web Service', null, null, this.getTagsForStencil(gn, 'xml web service', dt).join(' '))
410		];
411
412		this.addPalette('mscaeEnterpriseFlat', 'CAE / Enterprise (flat)', false, mxUtils.bind(this, function(content)
413				{
414					for (var i = 0; i < fns.length; i++)
415					{
416						content.appendChild(fns[i](content));
417					}
418		}));
419	};
420
421	Sidebar.prototype.addMSCAEIntuneFlatPalette = function(gn, r, sb)
422	{
423		var s = 'sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;fillColor=#505050;shape=mxgraph.mscae.intune.';
424		var s2 = 'sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;fillColor=#505050;shape=mxgraph.mscae.';
425		var dt = 'ms microsoft cloud enterprise intune';
426
427		var fns =
428		[
429			this.createVertexTemplateEntry(s + 'account_portal',
430					r * 0.43, r * 0.5, '', 'Account Portal', null, null, this.getTagsForStencil(gn, 'account portal', dt).join(' ')),
431			this.createVertexTemplateEntry(s + 'administration',
432					r * 0.3, r * 0.5, '', 'Administration', null, null, this.getTagsForStencil(gn, 'administration', dt).join(' ')),
433			this.createVertexTemplateEntry(s + 'alerts',
434					r * 0.5, r * 0.5, '', 'Alerts', null, null, this.getTagsForStencil(gn, 'alerts', dt).join(' ')),
435			this.createVertexTemplateEntry(s + 'apps',
436					r * 0.5, r * 0.5, '', 'Apps', null, null, this.getTagsForStencil(gn, 'apps', dt).join(' ')),
437			this.createVertexTemplateEntry(s + 'certificate',
438					r * 0.5, r * 0.49, '', 'Certificate (Compliance)', null, null, this.getTagsForStencil(gn, 'certificate compliance', dt).join(' ')),
439			this.createVertexTemplateEntry(s + 'client_software',
440					r * 0.5, r * 0.45, '', 'Client Software Deployment Wizard', null, null, this.getTagsForStencil(gn, 'client software deployment wizard', dt).join(' ')),
441			this.createVertexTemplateEntry(s + 'company_portal',
442					r * 0.5, r * 0.38, '', 'Company Portal', null, null, this.getTagsForStencil(gn, 'company portal', dt).join(' ')),
443			this.createVertexTemplateEntry(s + 'computer_inventory',
444					r * 0.5, r * 0.45, '', 'Computer Inventory', null, null, this.getTagsForStencil(gn, 'computer inventory', dt).join(' ')),
445			this.createVertexTemplateEntry(s + 'conditional_access_exchange',
446					r * 0.49, r * 0.5, '', 'Conditional Access (Exchange)', null, null, this.getTagsForStencil(gn, 'conditional access exchange', dt).join(' ')),
447			this.createVertexTemplateEntry(s + 'conditional_access_sharepoint',
448					r * 0.44, r * 0.5, '', 'Conditional Access (Sharepoint)', null, null, this.getTagsForStencil(gn, 'conditional access sharepoint', dt).join(' ')),
449			this.createVertexTemplateEntry(s + 'connector',
450					r * 0.5, r * 0.17, '', 'Connector', null, null, this.getTagsForStencil(gn, 'connector', dt).join(' ')),
451			this.createVertexTemplateEntry(s + 'dashboard',
452					r * 0.5, r * 0.4, '', 'Dashboard', null, null, this.getTagsForStencil(gn, 'dashboard', dt).join(' ')),
453			this.createVertexTemplateEntry(s + 'data_migration_wizard',
454					r * 0.5, r * 0.48, '', 'Data Migration Wizard', null, null, this.getTagsForStencil(gn, 'data migration wizard', dt).join(' ')),
455			this.createVertexTemplateEntry(s + 'detected_software',
456					r * 0.5, r * 0.5, '', 'Detected Software', null, null, this.getTagsForStencil(gn, 'detected software', dt).join(' ')),
457			this.createVertexTemplateEntry(s + 'device_group',
458					r * 0.5, r * 0.5, '', 'Device Group', null, null, this.getTagsForStencil(gn, 'device group', dt).join(' ')),
459			this.createVertexTemplateEntry(s + 'device_health',
460					r * 0.5, r * 0.31, '', 'Device Health', null, null, this.getTagsForStencil(gn, 'device_health', dt).join(' ')),
461			this.createVertexTemplateEntry(s + 'device_history',
462					r * 0.45, r * 0.5, '', 'Device History', null, null, this.getTagsForStencil(gn, 'device history', dt).join(' ')),
463			this.createVertexTemplateEntry(s + 'device_os',
464					r * 0.49, r * 0.5, '', 'Device OS', null, null, this.getTagsForStencil(gn, 'device os operating system', dt).join(' ')),
465			this.createVertexTemplateEntry(s + 'end_protection',
466					r * 0.48, r * 0.5, '', 'End Protection', null, null, this.getTagsForStencil(gn, 'end protection', dt).join(' ')),
467			this.createVertexTemplateEntry(s + 'exchange_connector',
468					r * 0.5, r * 0.49, '', 'Exchange Connector', null, null, this.getTagsForStencil(gn, 'exchange connector', dt).join(' ')),
469			this.createVertexTemplateEntry(s + 'groups',
470					r * 0.5, r * 0.48, '', 'Groups', null, null, this.getTagsForStencil(gn, 'groups', dt).join(' ')),
471			this.createVertexTemplateEntry(s + 'hybrid',
472					r * 0.5, r * 0.39, '', 'Hybrid', null, null, this.getTagsForStencil(gn, 'hybrid', dt).join(' ')),
473			this.createVertexTemplateEntry(s + 'intune_certificate_profiles',
474					r * 0.4, r * 0.5, '', 'Intune Certificate Profiles', null, null, this.getTagsForStencil(gn, 'certificate profiles', dt).join(' ')),
475			this.createVertexTemplateEntry(s + 'intune_connector',
476					r * 0.82, r * 0.59, '', 'Intune Connector', null, null, this.getTagsForStencil(gn, 'intune connector', dt).join(' ')),
477			this.createVertexTemplateEntry(s + 'intune_email_profiles',
478					r * 0.5, r * 0.5, '', 'Intune Email Profiles', null, null, this.getTagsForStencil(gn, 'email profiles', dt).join(' ')),
479			this.createVertexTemplateEntry(s + 'intune_managed_app',
480					r * 0.5, r * 0.38, '', 'Intune Managed App', null, null, this.getTagsForStencil(gn, 'managed app application', dt).join(' ')),
481			this.createVertexTemplateEntry(s + 'intune_mobile_application_management',
482					r * 0.49, r * 0.5, '', 'Intune Mobile Application Management', null, null, this.getTagsForStencil(gn, 'mobile app aplication management', dt).join(' ')),
483			this.createVertexTemplateEntry(s + 'intune_vpn_profiles',
484					r * 0.42, r * 0.5, '', 'Intune VPN Profiles', null, null, this.getTagsForStencil(gn, 'vpn virtual private network profiles', dt).join(' ')),
485			this.createVertexTemplateEntry(s + 'intune_wifi_profiles',
486					r * 0.43, r * 0.5, '', 'Intune WiFi Profiles', null, null, this.getTagsForStencil(gn, 'wifi profiles', dt).join(' ')),
487			this.createVertexTemplateEntry(s + 'inventory_license',
488					r * 0.5, r * 0.48, '', 'Inventory License', null, null, this.getTagsForStencil(gn, 'inventory license', dt).join(' ')),
489			this.createVertexTemplateEntry(s + 'inventory_software',
490					r * 0.5, r * 0.49, '', 'Inventory Software', null, null, this.getTagsForStencil(gn, 'inventory software', dt).join(' ')),
491			this.createVertexTemplateEntry(s + 'license_group',
492					r * 0.5, r * 0.49, '', 'License Group', null, null, this.getTagsForStencil(gn, 'license group', dt).join(' ')),
493			this.createVertexTemplateEntry(s + 'license_installation',
494					r * 0.5, r * 0.43, '', 'License Installation', null, null, this.getTagsForStencil(gn, 'license installation', dt).join(' ')),
495			this.createVertexTemplateEntry(s + 'microsoft_intune',
496					r * 0.5, r * 0.4, '', 'MS Intune', null, null, this.getTagsForStencil(gn, 'microsoft', dt).join(' ')),
497			this.createVertexTemplateEntry(s + 'mobile_inventory',
498					r * 0.44, r * 0.5, '', 'Mobile Inventory', null, null, this.getTagsForStencil(gn, 'mobile inventory', dt).join(' ')),
499			this.createVertexTemplateEntry(s + 'noncompliant_apps',
500					r * 0.46, r * 0.5, '', 'Noncompliant Apps', null, null, this.getTagsForStencil(gn, 'noncompliant apps applications', dt).join(' ')),
501			this.createVertexTemplateEntry(s + 'policy',
502					r * 0.5, r * 0.5, '', 'Policy', null, null, this.getTagsForStencil(gn, 'policy', dt).join(' ')),
503			this.createVertexTemplateEntry(s + 'protection',
504					r * 0.48, r * 0.5, '', 'Protection', null, null, this.getTagsForStencil(gn, 'protection', dt).join(' ')),
505			this.createVertexTemplateEntry(s + 'reports',
506					r * 0.46, r * 0.5, '', 'Reports', null, null, this.getTagsForStencil(gn, 'reports', dt).join(' ')),
507			this.createVertexTemplateEntry(s2 + 'enterprise.settings',
508					r * 0.5, r * 0.5, '', 'Settings', null, null, this.getTagsForStencil(gn, 'settings', dt).join(' ')),
509			this.createVertexTemplateEntry(s + 'subscription_portal',
510					r * 0.5, r * 0.5, '', 'Subscription Portal', null, null, this.getTagsForStencil(gn, 'subscription portal', dt).join(' ')),
511			this.createVertexTemplateEntry(s + 'terms_and_conditions',
512					r * 0.37, r * 0.5, '', 'Terms and Conditions', null, null, this.getTagsForStencil(gn, 'terms and conditions', dt).join(' ')),
513			this.createVertexTemplateEntry(s + 'update',
514					r * 0.48, r * 0.5, '', 'Update', null, null, this.getTagsForStencil(gn, 'update', dt).join(' ')),
515			this.createVertexTemplateEntry(s + 'user_group',
516					r * 0.5, r * 0.37, '', 'User Group', null, null, this.getTagsForStencil(gn, 'user group', dt).join(' ')),
517			this.createVertexTemplateEntry(s + 'user_management',
518					r * 0.5, r * 0.46, '', 'User Management', null, null, this.getTagsForStencil(gn, 'user management', dt).join(' '))
519		];
520
521		this.addPalette('mscaeIntuneFlat', 'CAE / Intune (flat)', false, mxUtils.bind(this, function(content)
522				{
523					for (var i = 0; i < fns.length; i++)
524					{
525						content.appendChild(fns[i](content));
526					}
527		}));
528	};
529
530	Sidebar.prototype.addMSCAEOMSFlatPalette = function(gn, r, sb)
531	{
532		var s = 'sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;fillColor=#505050;shape=mxgraph.mscae.oms.';
533		var dt = 'ms microsoft cloud enterprise oms';
534
535		var fns =
536		[
537			this.createVertexTemplateEntry(s + 'alerts',
538					r * 0.41, r * 0.5, '', 'Alerts', null, null, this.getTagsForStencil(gn, 'alerts', dt).join(' ')),
539			this.createVertexTemplateEntry(s + 'app_with_changes',
540					r * 0.5, r * 0.32, '', 'App With Changes', null, null, this.getTagsForStencil(gn, 'app with changes', dt).join(' ')),
541			this.createVertexTemplateEntry(s + 'assessments',
542					r * 0.47, r * 0.5, '', 'Assessments', null, null, this.getTagsForStencil(gn, 'assessments', dt).join(' ')),
543			this.createVertexTemplateEntry(s + 'capacity',
544					r * 0.41, r * 0.5, '', 'Capacity', null, null, this.getTagsForStencil(gn, 'capacity', dt).join(' ')),
545			this.createVertexTemplateEntry(s + 'config_assessment',
546					r * 0.5, r * 0.45, '', 'Config Assessment', null, null, this.getTagsForStencil(gn, 'config assessment', dt).join(' ')),
547			this.createVertexTemplateEntry(s + 'dashboard',
548					r * 0.5, r * 0.41, '', 'Dashboard', null, null, this.getTagsForStencil(gn, 'dashboard', dt).join(' ')),
549			this.createVertexTemplateEntry(s + 'dependency_monitor',
550					r * 0.5, r * 0.49, '', 'Dependency Monitor', null, null, this.getTagsForStencil(gn, 'dependency monitor', dt).join(' ')),
551			this.createVertexTemplateEntry(s + 'diagnostics',
552					r * 0.5, r * 0.34, '', 'Diagnostics', null, null, this.getTagsForStencil(gn, 'diagnostics', dt).join(' ')),
553			this.createVertexTemplateEntry(s + 'jobs',
554					r * 0.5, r * 0.5, '', 'Jobs', null, null, this.getTagsForStencil(gn, 'jobs', dt).join(' ')),
555			this.createVertexTemplateEntry(s + 'log_management',
556					r * 0.41, r * 0.5, '', 'Log Management', null, null, this.getTagsForStencil(gn, 'log management', dt).join(' ')),
557			this.createVertexTemplateEntry(s + 'log_search',
558					r * 0.5, r * 0.5, '', 'Log Search', null, null, this.getTagsForStencil(gn, 'log search', dt).join(' ')),
559			this.createVertexTemplateEntry(s + 'malware_assessment',
560					r * 0.49, r * 0.5, '', 'Malware Assessment', null, null, this.getTagsForStencil(gn, 'malware assessment', dt).join(' ')),
561			this.createVertexTemplateEntry(s + 'overview',
562					r * 0.5, r * 0.41, '', 'Overview', null, null, this.getTagsForStencil(gn, 'overview', dt).join(' ')),
563			this.createVertexTemplateEntry(s + 'security',
564					r * 0.5, r * 0.5, '', 'Security', null, null, this.getTagsForStencil(gn, 'security', dt).join(' ')),
565			this.createVertexTemplateEntry(s + 'server_width_changes',
566					r * 0.47, r * 0.5, '', 'Server Width Changes', null, null, this.getTagsForStencil(gn, 'server width changes', dt).join(' ')),
567			this.createVertexTemplateEntry(s + 'services',
568					r * 0.49, r * 0.5, '', 'Services', null, null, this.getTagsForStencil(gn, 'services', dt).join(' ')),
569			this.createVertexTemplateEntry(s + 'solutions',
570					r * 0.5, r * 0.49, '', 'Solutions', null, null, this.getTagsForStencil(gn, 'solutions', dt).join(' ')),
571			this.createVertexTemplateEntry(s + 'system_update',
572					r * 0.5, r * 0.5, '', 'System Update', null, null, this.getTagsForStencil(gn, 'system update', dt).join(' ')),
573			this.createVertexTemplateEntry(s + 'track_changes',
574					r * 0.42, r * 0.5, '', 'Track Changes', null, null, this.getTagsForStencil(gn, 'track changes', dt).join(' ')),
575			this.createVertexTemplateEntry(s + 'wire_data',
576					r * 0.5, r * 0.5, '', 'Wire Data', null, null, this.getTagsForStencil(gn, 'wire data', dt).join(' '))
577		];
578
579		this.addPalette('mscaeOMSFlat', 'CAE / OMS (flat)', false, mxUtils.bind(this, function(content)
580				{
581					for (var i = 0; i < fns.length; i++)
582					{
583						content.appendChild(fns[i](content));
584					}
585		}));
586	};
587
588	Sidebar.prototype.addMSCAESystemCenterFlatPalette = function(gn, r, sb)
589	{
590		var s = 'sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;fillColor=#515151;shape=mxgraph.mscae.system_center.';
591		var s2 = 'sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;fillColor=#515151;shape=mxgraph.mscae.';
592		var dt = 'ms microsoft cloud enterprise system center';
593
594		var fns =
595		[
596			this.createVertexTemplateEntry(s + 'admin_console',
597					r * 0.5, r * 0.36, '', 'Admin Console', null, null, this.getTagsForStencil(gn, 'admin console', dt).join(' ')),
598			this.createVertexTemplateEntry(s2 + 'enterprise.database_server',
599					r * 0.38, r * 0.5, '', 'Central Administration Site', null, null, this.getTagsForStencil(gn, 'central administration site', dt).join(' ')),
600			this.createVertexTemplateEntry(s + 'central_administration_site_sql',
601					r * 0.38, r * 0.5, '', 'Central Administration Site SQL', null, null, this.getTagsForStencil(gn, 'central administration site sql', dt).join(' ')),
602			this.createVertexTemplateEntry(s + 'cloud_distribution_point',
603					r * 0.46, r * 0.5, '', 'Cloud Distribution Point', null, null, this.getTagsForStencil(gn, 'cloud distribution point', dt).join(' ')),
604			this.createVertexTemplateEntry(s + 'distribution_point',
605					r * 0.44, r * 0.5, '', 'Distribution Point', null, null, this.getTagsForStencil(gn, 'distribution point', dt).join(' ')),
606			this.createVertexTemplateEntry(s + 'management_point',
607					r * 0.48, r * 0.5, '', 'Management Point', null, null, this.getTagsForStencil(gn, 'management point', dt).join(' ')),
608			this.createVertexTemplateEntry(s + 'primary_site',
609					r * 0.38, r * 0.5, '', 'Primary Site', null, null, this.getTagsForStencil(gn, 'primary site', dt).join(' ')),
610			this.createVertexTemplateEntry(s + 'roles',
611					r * 0.42, r * 0.5, '', 'Roles', null, null, this.getTagsForStencil(gn, 'roles', dt).join(' ')),
612			this.createVertexTemplateEntry(s + 'secondary_site',
613					r * 0.41, r * 0.5, '', 'Secondary Site', null, null, this.getTagsForStencil(gn, 'secondary site', dt).join(' ')),
614			this.createVertexTemplateEntry(s + 'software_update_point',
615					r * 0.5, r * 0.43, '', 'Software Update Point', null, null, this.getTagsForStencil(gn, 'software update point', dt).join(' '))
616		];
617
618		this.addPalette('mscaeSystem CenterFlat', 'CAE / System Center (flat)', false, mxUtils.bind(this, function(content)
619				{
620					for (var i = 0; i < fns.length; i++)
621					{
622						content.appendChild(fns[i](content));
623					}
624		}));
625	};
626
627	Sidebar.prototype.addMSCAEAIandMLServicePalette = function(gn, r, sb, s)
628	{
629		var dt = 'ms microsoft cloud enterprise ai ml service';
630
631		var fns =
632		[
633			this.createVertexTemplateEntry(s + 'Batch_AI.svg;',
634					r * 0.36, r * 0.5, '', 'Batch AI', null, null, this.getTagsForStencil(gn, 'batch ai', dt).join(' ')),
635			this.createVertexTemplateEntry(s + 'Bot_Services.svg;',
636					r * 0.5, r * 0.5, '', 'Bot Services', null, null, this.getTagsForStencil(gn, 'bot services', dt).join(' ')),
637			this.createVertexTemplateEntry(s + 'Cognitive_Services.svg;',
638					r * 0.5, r * 0.3, '', 'Cognitive Services', null, null, this.getTagsForStencil(gn, 'cognitive services', dt).join(' ')),
639			this.createVertexTemplateEntry(s + 'Genomics_Accounts.svg;',
640					r * 0.26, r * 0.5, '', 'Genomics Accounts', null, null, this.getTagsForStencil(gn, 'genomics accounts', dt).join(' ')),
641			this.createVertexTemplateEntry(s + 'Machine_Learning_Service_Workspaces.svg;',
642					r * 0.46, r * 0.5, '', 'Machine Learning Service Workspaces', null, null, this.getTagsForStencil(gn, 'machine learning service workspaces', dt).join(' ')),
643			this.createVertexTemplateEntry(s + 'Machine_Learning_Studio_Web_Service_Plans.svg;',
644					r * 0.5, r * 0.5, '', 'Machine Learning Studio Web Service Plans', null, null, this.getTagsForStencil(gn, 'machine learning studio web service plans', dt).join(' ')),
645			this.createVertexTemplateEntry(s + 'Machine_Learning_Studio_Web_Services.svg;',
646					r * 0.5, r * 0.5, '', 'Machine Learning Studio Web Services', null, null, this.getTagsForStencil(gn, 'machine learning studio web services', dt).join(' ')),
647			this.createVertexTemplateEntry(s + 'Machine_Learning_Studio_Workspaces.svg;',
648					r * 0.5, r * 0.5, '', 'Machine Learning Studio Workspaces', null, null, this.getTagsForStencil(gn, 'machine learning studio workspaces', dt).join(' '))
649		];
650
651		this.addPalette('mscaeAI and ML Service', 'CAE / AI and ML Service', false, mxUtils.bind(this, function(content)
652				{
653					for (var i = 0; i < fns.length; i++)
654					{
655						content.appendChild(fns[i](content));
656					}
657		}));
658	};
659
660	Sidebar.prototype.addMSCAEAnalyticsServicePalette = function(gn, r, sb, s)
661	{
662		var dt = 'ms microsoft cloud enterprise analytics service';
663
664		var fns =
665		[
666			this.createVertexTemplateEntry(s + 'Analysis_Services.svg;',
667					r * 0.5, r * 0.39, '', 'Analysis Services', null, null, this.getTagsForStencil(gn, 'analysis services', dt).join(' ')),
668			this.createVertexTemplateEntry(s + 'Azure_Data_Explorer_Clusters.svg;',
669					r * 0.5, r * 0.5, '', 'Azure Data Explorer Clusters', null, null, this.getTagsForStencil(gn, 'azure data explorer clusters', dt).join(' ')),
670			this.createVertexTemplateEntry(s + 'Databricks.svg;',
671					r * 0.5, r * 0.48, '', 'Databricks', null, null, this.getTagsForStencil(gn, 'azure databricks', dt).join(' ')),
672			this.createVertexTemplateEntry(s + 'Data_Factory.svg;',
673					r * 0.5, r * 0.5, '', 'Data Factories', null, null, this.getTagsForStencil(gn, 'data factory factories', dt).join(' ')),
674			this.createVertexTemplateEntry(s + 'Data_Lake_Analytics.svg;',
675					r * 0.5, r * 0.5, '', 'Data Lake Analytics', null, null, this.getTagsForStencil(gn, 'data lake analytics', dt).join(' ')),
676			this.createVertexTemplateEntry(s + 'Data_Lake_Store.svg;',
677					r * 0.5, r * 0.39, '', 'Data Lake Store', null, null, this.getTagsForStencil(gn, 'data lake store', dt).join(' ')),
678			this.createVertexTemplateEntry(s + 'Event_Hub_Clusters.svg;',
679					r * 0.5, r * 0.48, '', 'Event Hub Clusters', null, null, this.getTagsForStencil(gn, 'event hub clusters', dt).join(' ')),
680			this.createVertexTemplateEntry(s + 'Event_Hubs.svg;',
681					r * 0.48, r * 0.5, '', 'Event Hubs', null, null, this.getTagsForStencil(gn, 'event hubs', dt).join(' ')),
682			this.createVertexTemplateEntry(s + 'HDInsightClusters.svg;',
683					r * 0.5, r * 0.49, '', 'HDInsight Clusters', null, null, this.getTagsForStencil(gn, 'hdinsight clusters', dt).join(' ')),
684			this.createVertexTemplateEntry(s + 'Log_Analytics_Workspaces.svg;',
685					r * 0.5, r * 0.5, '', 'Log Analytics Workspaces', null, null, this.getTagsForStencil(gn, 'log analytics workspaces', dt).join(' ')),
686			this.createVertexTemplateEntry(s + 'Stream_Analytics.svg;',
687					r * 0.5, r * 0.39, '', 'Stream Analytics', null, null, this.getTagsForStencil(gn, 'stream analytics', dt).join(' '))
688		];
689
690		this.addPalette('mscaeAnalytics Service', 'CAE / Analytics Service', false, mxUtils.bind(this, function(content)
691				{
692					for (var i = 0; i < fns.length; i++)
693					{
694						content.appendChild(fns[i](content));
695					}
696		}));
697	};
698
699	Sidebar.prototype.addMSCAEComputeServicePalette = function(gn, r, sb, s)
700	{
701		var dt = 'ms microsoft cloud enterprise compute service';
702
703		var fns =
704		[
705			this.createVertexTemplateEntry(s + 'Batch_Accounts.svg;',
706					r * 0.5, r * 0.48, '', 'Batch Accounts', null, null, this.getTagsForStencil(gn, 'batch accounts', dt).join(' ')),
707			this.createVertexTemplateEntry(s + 'Citrix_Virtual_Desktops_Essentials.svg;',
708					r * 0.5, r * 0.5, '', 'Citrix Virtual Desktops Essentials', null, null, this.getTagsForStencil(gn, 'citrix virtual desktops essentials', dt).join(' ')),
709			this.createVertexTemplateEntry(s + 'Cloud_Services_Classic.svg;',
710					r * 0.5, r * 0.42, '', 'Cloud Services (classic)', null, null, this.getTagsForStencil(gn, 'cloud services classic', dt).join(' ')),
711			this.createVertexTemplateEntry(s + 'Cloud_Service.svg;',
712					r * 0.5, r * 0.42, '', 'Cloud Services', null, null, this.getTagsForStencil(gn, 'cloud services', dt).join(' ')),
713			this.createVertexTemplateEntry(s + 'CloudSimple_Virtual_Machines.svg;',
714					r * 0.5, r * 0.32, '', 'CloudSimple Virtual Machines', null, null, this.getTagsForStencil(gn, 'cloudsimple virtual machines', dt).join(' ')),
715			this.createVertexTemplateEntry(s + 'MD_snapshot.svg;',
716					r * 0.5, r * 0.42, '', 'Disk Snapshots', null, null, this.getTagsForStencil(gn, 'disk snapshots', dt).join(' ')),
717			this.createVertexTemplateEntry(s + 'Discs.svg;',
718					r * 0.5, r * 0.42, '', 'Disks', null, null, this.getTagsForStencil(gn, 'disks', dt).join(' ')),
719			this.createVertexTemplateEntry(s + 'Functions.svg;',
720					r * 0.5, r * 0.46, '', 'Function Apps', null, null, this.getTagsForStencil(gn, 'function apps', dt).join(' ')),
721			this.createVertexTemplateEntry(s + 'SAP_HANA_on_Azure.svg;',
722					r * 0.5, r * 0.25, '', 'SAP HANA on Azure', null, null, this.getTagsForStencil(gn, 'sap hana on azure', dt).join(' ')),
723			this.createVertexTemplateEntry(s + 'Service_Fabric.svg;',
724					r * 0.5, r * 0.5, '', 'Service Fabric', null, null, this.getTagsForStencil(gn, 'service fabric', dt).join(' ')),
725			this.createVertexTemplateEntry(s + 'VM_Images.svg;',
726					r * 0.5, r * 0.46, '', 'VM Images', null, null, this.getTagsForStencil(gn, 'vm virtual machine images', dt).join(' '))
727		];
728
729		this.addPalette('mscaeCompute Service', 'CAE / Compute Service', false, mxUtils.bind(this, function(content)
730				{
731					for (var i = 0; i < fns.length; i++)
732					{
733						content.appendChild(fns[i](content));
734					}
735		}));
736	};
737
738	Sidebar.prototype.addMSCAEComputeServiceVMPalette = function(gn, r, sb, s)
739	{
740		var dt = 'ms microsoft cloud enterprise compute service vm virtual machine';
741
742		var fns =
743		[
744			this.createVertexTemplateEntry(s + 'Virtual_Machines_Availability_Set.svg;',
745					r * 0.5, r * 0.5, '', 'Availability Sets', null, null, this.getTagsForStencil(gn, 'availability sets', dt).join(' ')),
746			this.createVertexTemplateEntry(s + 'Non_Azure_Machine.svg;',
747					r * 0.31, r * 0.5, '', 'Non-Azure Machine', null, null, this.getTagsForStencil(gn, 'non azure machine', dt).join(' ')),
748			this.createVertexTemplateEntry(s + 'OS_Images_Classic.svg;',
749					r * 0.5, r * 0.46, '', 'OS Images (classic)', null, null, this.getTagsForStencil(gn, 'os images classic', dt).join(' ')),
750			this.createVertexTemplateEntry(s + 'Virtual_Machine_2.svg;',
751					r * 0.5, r * 0.46, '', 'VM', null, null, this.getTagsForStencil(gn, '', dt).join(' ')),
752			this.createVertexTemplateEntry(s + 'VM_Scale_Set.svg;',
753					r * 0.5, r * 0.5, '', 'VM Scale Sets', null, null, this.getTagsForStencil(gn, 'scale sets', dt).join(' ')),
754			this.createVertexTemplateEntry(s + 'Virtual_Machine.svg;',
755					r * 0.5, r * 0.46, '', 'VM', null, null, this.getTagsForStencil(gn, '', dt).join(' ')),
756			this.createVertexTemplateEntry(s + 'VM_Linux.svg;',
757					r * 0.5, r * 0.46, '', 'VM (Linux)', null, null, this.getTagsForStencil(gn, 'linux', dt).join(' ')),
758			this.createVertexTemplateEntry(s + 'VM_Linux_Non_Azure.svg;',
759					r * 0.5, r * 0.46, '', 'VM (Linux, Non-Azure)', null, null, this.getTagsForStencil(gn, 'linux non azure', dt).join(' ')),
760			this.createVertexTemplateEntry(s + 'VirtualMachineWindows.svg;',
761					r * 0.5, r * 0.46, '', 'VM (Windows)', null, null, this.getTagsForStencil(gn, 'windows', dt).join(' ')),
762			this.createVertexTemplateEntry(s + 'VM_Windows_Non_Azure.svg;',
763					r * 0.5, r * 0.46, '', 'VM (Windows, Non-Azure)', null, null, this.getTagsForStencil(gn, 'windows non azure', dt).join(' '))
764		];
765
766		this.addPalette('mscaeCompute Service VM', 'CAE / Compute Service VM', false, mxUtils.bind(this, function(content)
767				{
768					for (var i = 0; i < fns.length; i++)
769					{
770						content.appendChild(fns[i](content));
771					}
772		}));
773	};
774
775	Sidebar.prototype.addMSCAEContainerServiceVMPalette = function(gn, r, sb, s)
776	{
777		var dt = 'ms microsoft cloud enterprise container service';
778
779		var fns =
780		[
781			this.createVertexTemplateEntry(s + 'Container_Instances.svg;',
782					r * 0.5, r * 0.5, '', 'Container Instances', null, null, this.getTagsForStencil(gn, 'container instances', dt).join(' ')),
783			this.createVertexTemplateEntry(s + 'Container_Registries.svg;',
784					r * 0.5, r * 0.43, '', 'Container Registries', null, null, this.getTagsForStencil(gn, 'container registries', dt).join(' ')),
785			this.createVertexTemplateEntry(s + 'Kubernetes_Services.svg;',
786					r * 0.5, r * 0.37, '', 'Kubernetes Services', null, null, this.getTagsForStencil(gn, 'kubernetes services', dt).join(' '))
787		];
788
789		this.addPalette('mscaeContainer Service', 'CAE / Container Service', false, mxUtils.bind(this, function(content)
790				{
791					for (var i = 0; i < fns.length; i++)
792					{
793						content.appendChild(fns[i](content));
794					}
795		}));
796	};
797
798	Sidebar.prototype.addMSCAEDatabasesServicePalette = function(gn, r, sb, s)
799	{
800		var dt = 'ms microsoft cloud enterprise database databases db service';
801
802		var fns =
803		[
804			this.createVertexTemplateEntry(s + 'Azure_Cache_for_Redis.svg;',
805					r * 0.5, r * 0.5, '', 'Azure Cache for Redis', null, null, this.getTagsForStencil(gn, 'azure cache for redis', dt).join(' ')),
806			this.createVertexTemplateEntry(s + 'Cache_including_Redis.svg;',
807					r * 0.5, r * 0.5, '', 'Cache plus Redis', null, null, this.getTagsForStencil(gn, 'cache including plus redis', dt).join(' ')),
808			this.createVertexTemplateEntry(s + 'CosmosDB.svg;',
809					r * 0.5, r * 0.5, '', 'CosmosDB', null, null, this.getTagsForStencil(gn, 'cosmosdb db database', dt).join(' ')),
810			this.createVertexTemplateEntry(s + 'Database_General.svg;',
811					r * 0.38, r * 0.5, '', 'Database (generic)', null, null, this.getTagsForStencil(gn, 'database generic', dt).join(' ')),
812			this.createVertexTemplateEntry(s + 'aspect=fixed;html=1;perimeter=none;align=center;shadow=0;dashed=0;image;fontSize=12;image=img/lib/mscae/Azure_Database_for_MariaDB_servers.svg;',
813					r * 0.38, r * 0.5, '', 'Azure Database for MariaDB servers', null, null, this.getTagsForStencil(gn, 'azure database for mariadb servers', dt).join(' ')),
814			this.createVertexTemplateEntry(s + 'Azure_Database_for_MySQL_servers.svg;',
815					r * 0.38, r * 0.5, '', 'Azure Database for MySQL servers', null, null, this.getTagsForStencil(gn, 'azure database db for mysql servers', dt).join(' ')),
816			this.createVertexTemplateEntry(s + 'Azure_Database_for_PostgreSQL_servers.svg;',
817					r * 0.38, r * 0.5, '', 'Azure Database for PostgreSQL servers', null, null, this.getTagsForStencil(gn, 'azure database db for postgresql servers', dt).join(' ')),
818			this.createVertexTemplateEntry(s + 'SQL_DataWarehouse.svg;',
819					r * 0.5, r * 0.48, '', 'Azure SQL DataWarehouse', null, null, this.getTagsForStencil(gn, 'azure sql datawarehouse', dt).join(' ')),
820			this.createVertexTemplateEntry(s + 'BlobBlock.svg;',
821					r * 0.5, r * 0.42, '', 'Blob Storage', null, null, this.getTagsForStencil(gn, 'blob storage', dt).join(' ')),
822			this.createVertexTemplateEntry(s + 'Data_Lake.svg;',
823					r * 0.38, r * 0.5, '', 'Data Lake', null, null, this.getTagsForStencil(gn, 'data lake', dt).join(' ')),
824			this.createVertexTemplateEntry(s + 'Elastic_Database_Pools.svg;',
825					r * 0.5, r * 0.5, '', 'Elastic Database Pools', null, null, this.getTagsForStencil(gn, 'elastic database pools', dt).join(' ')),
826			this.createVertexTemplateEntry(s + 'Elastic_Job_Agents.svg;',
827					r * 0.42, r * 0.5, '', 'Elastic Job Agents', null, null, this.getTagsForStencil(gn, 'elastic job agents', dt).join(' ')),
828			this.createVertexTemplateEntry(s + 'Managed_Databases.svg;',
829					r * 0.47, r * 0.5, '', 'Managed Databases', null, null, this.getTagsForStencil(gn, 'managed databases', dt).join(' ')),
830			this.createVertexTemplateEntry(s + 'SQL_Database_generic.svg;',
831					r * 0.38, r * 0.5, '', 'SQL Databases', null, null, this.getTagsForStencil(gn, 'sql databases', dt).join(' ')),
832			this.createVertexTemplateEntry(s + 'SQL_Managed_Instances.svg;',
833					r * 0.38, r * 0.5, '', 'SQL Managed Instances', null, null, this.getTagsForStencil(gn, 'sql managed instances', dt).join(' ')),
834			this.createVertexTemplateEntry(s + 'dep/SQL_Server_Stretch_DB.svg;',
835					r * 0.5, r * 0.5, '', 'SQL Server Stretch DB', null, null, this.getTagsForStencil(gn, 'sql server stretch db database', dt).join(' ')),
836			this.createVertexTemplateEntry(s + 'SQL_Servers.svg;',
837					r * 0.5, r * 0.5, '', 'SQL Servers', null, null, this.getTagsForStencil(gn, 'sql servers', dt).join(' ')),
838			this.createVertexTemplateEntry(s + 'Virtual_Clusters.svg;',
839					r * 0.5, r * 0.48, '', 'Virtual Clusters', null, null, this.getTagsForStencil(gn, 'virtual clusters', dt).join(' ')),
840			this.createVertexTemplateEntry(s + 'Virtual_Datacenter.svg;',
841					r * 0.5, r * 0.5, '', 'Virtual Datacenter', null, null, this.getTagsForStencil(gn, 'virtual datacenter', dt).join(' '))
842		];
843
844		this.addPalette('mscaeDatabases Service', 'CAE / Databases Service', false, mxUtils.bind(this, function(content)
845				{
846					for (var i = 0; i < fns.length; i++)
847					{
848						content.appendChild(fns[i](content));
849					}
850		}));
851	};
852
853	Sidebar.prototype.addMSCAEDevOpsServicePalette = function(gn, r, sb, s)
854	{
855		var dt = 'ms microsoft cloud enterprise devops service';
856
857		var fns =
858		[
859			this.createVertexTemplateEntry(s + 'Application_Insights.svg;',
860					r * 0.32, r * 0.5, '', 'Application Insights', null, null, this.getTagsForStencil(gn, 'application insights', dt).join(' ')),
861			this.createVertexTemplateEntry(s + 'Azure_Artifacts.svg;',
862					r * 0.5, r * 0.5, '', 'Azure Artifacts', null, null, this.getTagsForStencil(gn, 'azure artifacts', dt).join(' ')),
863			this.createVertexTemplateEntry(s + 'Azure_Boards.svg;',
864					r * 0.5, r * 0.5, '', 'Azure Boards', null, null, this.getTagsForStencil(gn, 'azure boards', dt).join(' ')),
865			this.createVertexTemplateEntry(s + 'Azure_DevOps.svg;',
866					r * 0.5, r * 0.5, '', 'Azure DevOps', null, null, this.getTagsForStencil(gn, 'azure devops', dt).join(' ')),
867			this.createVertexTemplateEntry(s + 'DevTest_Labs.svg;',
868					r * 0.5, r * 0.5, '', 'Azure DevTest Labs', null, null, this.getTagsForStencil(gn, 'azure devtest labs', dt).join(' ')),
869			this.createVertexTemplateEntry(s + 'Azure_Pipelines.svg;',
870					r * 0.5, r * 0.5, '', 'Azure Pipelines', null, null, this.getTagsForStencil(gn, 'azure pipelines', dt).join(' ')),
871			this.createVertexTemplateEntry(s + 'Azure_Repos.svg;',
872					r * 0.45, r * 0.5, '', 'Azure Repos', null, null, this.getTagsForStencil(gn, 'azure repos', dt).join(' ')),
873			this.createVertexTemplateEntry(s + 'Azure_Test_Plans.svg;',
874					r * 0.45, r * 0.5, '', 'Azure Test Plans', null, null, this.getTagsForStencil(gn, 'azure test plans', dt).join(' '))
875		];
876
877		this.addPalette('mscaeDevOps Service', 'CAE / DevOps Service', false, mxUtils.bind(this, function(content)
878				{
879					for (var i = 0; i < fns.length; i++)
880					{
881						content.appendChild(fns[i](content));
882					}
883		}));
884	};
885
886	Sidebar.prototype.addMSCAEGeneralServicePalette = function(gn, r, sb, s)
887	{
888		var dt = 'ms microsoft cloud enterprise general service';
889
890		var fns =
891		[
892			this.createVertexTemplateEntry(s + 'Grid3x3.svg;',
893					r * 0.5, r * 0.5, '', 'All Resources', null, null, this.getTagsForStencil(gn, 'all resources', dt).join(' ')),
894			this.createVertexTemplateEntry(s + 'Azure_Home.svg;',
895					r * 0.5, r * 0.4, '', 'Azure Home', null, null, this.getTagsForStencil(gn, 'azure home', dt).join(' ')),
896			this.createVertexTemplateEntry(s + 'Developer_Tools.svg;',
897					r * 0.47, r * 0.5, '', 'Developer Tools', null, null, this.getTagsForStencil(gn, 'developer tools', dt).join(' ')),
898			this.createVertexTemplateEntry(s + 'Support_2.svg;',
899					r * 0.32, r * 0.5, '', 'Help, Support', null, null, this.getTagsForStencil(gn, 'help support', dt).join(' ')),
900			this.createVertexTemplateEntry(s + 'Info_2.svg;',
901					r * 0.5, r * 0.5, '', 'Information', null, null, this.getTagsForStencil(gn, 'info information', dt).join(' ')),
902			this.createVertexTemplateEntry(s + 'Management_Groups.svg;',
903					r * 0.5, r * 0.4, '', 'Management Groups', null, null, this.getTagsForStencil(gn, 'management groups', dt).join(' ')),
904			this.createVertexTemplateEntry(s + 'Store_Marketplace.svg;',
905					r * 0.44, r * 0.5, '', 'Marketplace', null, null, this.getTagsForStencil(gn, 'marketplace store', dt).join(' ')),
906			this.createVertexTemplateEntry(s + 'Store_Marketplace.svg;',
907					r * 0.44, r * 0.5, '', 'Marketplace', null, null, this.getTagsForStencil(gn, 'marketplace store', dt).join(' ')),
908			this.createVertexTemplateEntry(s + 'Quick_Start_Center.svg;',
909					r * 0.5, r * 0.5, '', 'Quick Start Center', null, null, this.getTagsForStencil(gn, 'quick start center', dt).join(' ')),
910			this.createVertexTemplateEntry(s + 'Clock.svg;',
911					r * 0.5, r * 0.5, '', 'Recent', null, null, this.getTagsForStencil(gn, 'clock recent', dt).join(' ')),
912			this.createVertexTemplateEntry(s + 'Reservations.svg;',
913					r * 0.5, r * 0.5, '', 'Reservations', null, null, this.getTagsForStencil(gn, 'reservations', dt).join(' ')),
914			this.createVertexTemplateEntry(s + 'ResourceGroup.svg;',
915					r * 0.5, r * 0.4, '', 'Resource Groups', null, null, this.getTagsForStencil(gn, 'resource group groups', dt).join(' ')),
916			this.createVertexTemplateEntry(s + 'ServiceHealth.svg;',
917					r * 0.5, r * 0.44, '', 'Service Health', null, null, this.getTagsForStencil(gn, 'service health', dt).join(' ')),
918			this.createVertexTemplateEntry(s + 'Shared_Dashboard.svg;',
919					r * 0.5, r * 0.41, '', 'Shared Dashboard', null, null, this.getTagsForStencil(gn, 'shared dashboard', dt).join(' ')),
920			this.createVertexTemplateEntry(s + 'Key.svg;',
921					r * 0.31, r * 0.5, '', 'Subscriptions', null, null, this.getTagsForStencil(gn, 'subscriptions key', dt).join(' ')),
922			this.createVertexTemplateEntry(s + 'Support_Requests.svg;',
923					r * 0.5, r * 0.46, '', 'Support Requests', null, null, this.getTagsForStencil(gn, 'support requests', dt).join(' ')),
924			this.createVertexTemplateEntry(s + 'Tag.svg;',
925					r * 0.5, r * 0.5, '', 'Tag', null, null, this.getTagsForStencil(gn, 'tag', dt).join(' ')),
926			this.createVertexTemplateEntry(s + 'Tags.svg;',
927					r * 0.42, r * 0.5, '', 'Tags', null, null, this.getTagsForStencil(gn, 'tags', dt).join(' ')),
928			this.createVertexTemplateEntry(s + 'Templates.svg;',
929					r * 0.44, r * 0.5, '', 'Templates', null, null, this.getTagsForStencil(gn, 'templates', dt).join(' ')),
930			this.createVertexTemplateEntry(s + 'Two_User_Icon.svg;',
931					r * 0.5, r * 0.5, '', 'Two User Icon', null, null, this.getTagsForStencil(gn, 'two user icon', dt).join(' ')),
932			this.createVertexTemplateEntry(s + 'User_Health_Icon.svg;',
933					r * 0.46, r * 0.5, '', 'User Health Icon', null, null, this.getTagsForStencil(gn, 'user health icon', dt).join(' ')),
934			this.createVertexTemplateEntry(s + 'Person.svg;',
935					r * 0.37, r * 0.5, '', 'User', null, null, this.getTagsForStencil(gn, 'user person', dt).join(' ')),
936			this.createVertexTemplateEntry(s + 'User_Privacy.svg;',
937					r * 0.36, r * 0.5, '', 'User Privacy', null, null, this.getTagsForStencil(gn, 'user privacy', dt).join(' ')),
938			this.createVertexTemplateEntry(s + 'User_Resource.svg;',
939					r * 0.48, r * 0.5, '', 'User Resource', null, null, this.getTagsForStencil(gn, 'user resource', dt).join(' ')),
940			this.createVertexTemplateEntry(s + 'Info.svg;',
941					r * 0.5, r * 0.5, '', 'What\'s New', null, null, this.getTagsForStencil(gn, 'info whats new', dt).join(' '))
942		];
943
944		this.addPalette('mscaeGeneral Service', 'CAE / General Service', false, mxUtils.bind(this, function(content)
945				{
946					for (var i = 0; i < fns.length; i++)
947					{
948						content.appendChild(fns[i](content));
949					}
950		}));
951	};
952
953	Sidebar.prototype.addMSCAEIdentityServicePalette = function(gn, r, sb, s)
954	{
955		var dt = 'ms microsoft cloud enterprise identity service';
956
957		var fns =
958		[
959			this.createVertexTemplateEntry(s + 'Access_Review.svg;',
960					r * 0.5, r * 0.5, '', 'Access Review', null, null, this.getTagsForStencil(gn, 'access review', dt).join(' ')),
961			this.createVertexTemplateEntry(s + 'Active_Directory_Health_Monitoring.svg;',
962					r * 0.5, r * 0.5, '', 'Active Directory Connect Health', null, null, this.getTagsForStencil(gn, 'active directory connect health', dt).join(' ')),
963			this.createVertexTemplateEntry(s + 'Active_Directory.svg;',
964					r * 0.5, r * 0.5, '', 'Active Directory', null, null, this.getTagsForStencil(gn, 'active directory', dt).join(' ')),
965			this.createVertexTemplateEntry(s + 'App_Registrations.svg;',
966					r * 0.5, r * 0.5, '', 'App Registrations', null, null, this.getTagsForStencil(gn, 'app registrations', dt).join(' ')),
967			this.createVertexTemplateEntry(s + 'Azure_AD_B2C.svg;',
968					r * 0.5, r * 0.46, '', 'Azure AD B2C', null, null, this.getTagsForStencil(gn, 'azure ad b2c', dt).join(' ')),
969			this.createVertexTemplateEntry(s + 'Azure_AD_Domain_Services.svg;',
970					r * 0.5, r * 0.5, '', 'Azure AD Domain Services', null, null, this.getTagsForStencil(gn, 'azure ad domain services', dt).join(' ')),
971			this.createVertexTemplateEntry(s + 'Azure_AD_Identity_Protection.svg;',
972					r * 0.5, r * 0.5, '', 'Azure AD Identity Protection', null, null, this.getTagsForStencil(gn, 'azure ad identity protection', dt).join(' ')),
973			this.createVertexTemplateEntry(s + 'Azure_AD_Privileged_Identity_Management.svg;',
974					r * 0.5, r * 0.5, '', 'Azure AD Privileged Identity Management', null, null, this.getTagsForStencil(gn, 'azure ad privileged identity management', dt).join(' ')),
975			this.createVertexTemplateEntry('sketch=0;aspect=fixed;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.mscae.cloud.azure_rights_management_rms;fillColor=#58B4D9;',
976					r * 0.42, r * 0.5, '', 'Azure Information Protection', null, null, this.getTagsForStencil(gn, 'azure information protection', dt).join(' ')),
977			this.createVertexTemplateEntry(s + 'Security_Center.svg;',
978					r * 0.36, r * 0.5, '', 'Conditional Access', null, null, this.getTagsForStencil(gn, 'conditional access security center', dt).join(' ')),
979			this.createVertexTemplateEntry(s + 'Enterprise_Applications.svg;',
980					r * 0.49, r * 0.5, '', 'Enterprise Applications', null, null, this.getTagsForStencil(gn, 'enterprise applications', dt).join(' ')),
981			this.createVertexTemplateEntry(s + 'Identity_Governance.svg;',
982					r * 0.5, r * 0.5, '', 'Identity Governance', null, null, this.getTagsForStencil(gn, 'identity governance', dt).join(' ')),
983			this.createVertexTemplateEntry(s + 'Managed_Identities.svg;',
984					r * 0.38, r * 0.5, '', 'Managed Identitties', null, null, this.getTagsForStencil(gn, 'managed identities', dt).join(' '))
985		];
986
987		this.addPalette('mscaeIdentity Service', 'CAE / Identity Service', false, mxUtils.bind(this, function(content)
988				{
989					for (var i = 0; i < fns.length; i++)
990					{
991						content.appendChild(fns[i](content));
992					}
993		}));
994	};
995
996	Sidebar.prototype.addMSCAEIntegrationServicePalette = function(gn, r, sb, s)
997	{
998		var dt = 'ms microsoft cloud enterprise integration service';
999
1000		var fns =
1001		[
1002			this.createVertexTemplateEntry(s + 'API_Management.svg;',
1003					r * 0.5, r * 0.42, '', 'API Management Service', null, null, this.getTagsForStencil(gn, 'api application programming interface management service', dt).join(' ')),
1004			this.createVertexTemplateEntry(s + 'App_Configuration.svg;',
1005					r * 0.5, r * 0.49, '', 'App Configuration', null, null, this.getTagsForStencil(gn, 'app configuration', dt).join(' ')),
1006			this.createVertexTemplateEntry(s + 'Azure_API_for_FHIR.svg;',
1007					r * 0.5, r * 0.5, '', 'Azure API for FHIR', null, null, this.getTagsForStencil(gn, 'azure api application programming interface for fhir', dt).join(' ')),
1008			this.createVertexTemplateEntry(s + 'Data_Catalog.svg;',
1009					r * 0.47, r * 0.5, '', 'Azure Data Catalog', null, null, this.getTagsForStencil(gn, 'azure data catalog', dt).join(' ')),
1010			this.createVertexTemplateEntry(s + 'Service_Bus_Relay.svg;',
1011					r * 0.5, r * 0.5, '', 'Azure Service Bus Relays', null, null, this.getTagsForStencil(gn, 'azure service bus relay relays', dt).join(' ')),
1012			this.createVertexTemplateEntry(s + 'Service_Bus_Relay.svg;',
1013					r * 0.5, r * 0.5, '', 'Azure Service Bus Relays', null, null, this.getTagsForStencil(gn, 'azure service bus relay relays', dt).join(' ')),
1014			this.createVertexTemplateEntry(s + 'Service_Bus.svg;',
1015					r * 0.5, r * 0.5, '', 'Azure Service Bus', null, null, this.getTagsForStencil(gn, 'azure service bus', dt).join(' ')),
1016			this.createVertexTemplateEntry(s + 'StorSimple.svg;',
1017					r * 0.5, r * 0.45, '', 'Azure StorSimple Device Managers', null, null, this.getTagsForStencil(gn, 'azure storsimple device managers', dt).join(' ')),
1018			this.createVertexTemplateEntry(s + 'Event_Grid.svg;',
1019					r * 0.5, r * 0.5, '', 'Event Grid Domains and Subscriptions', null, null, this.getTagsForStencil(gn, 'event grid domains subscriptions', dt).join(' ')),
1020			this.createVertexTemplateEntry(s + 'Event_Grid_Topics.svg;',
1021					r * 0.5, r * 0.5, '', 'Event Grid Topics', null, null, this.getTagsForStencil(gn, 'event grid topics', dt).join(' ')),
1022			this.createVertexTemplateEntry(s + 'Event_Grid_Topics.svg;',
1023					r * 0.5, r * 0.5, '', 'Event Grid Topics', null, null, this.getTagsForStencil(gn, 'event grid topics', dt).join(' ')),
1024			this.createVertexTemplateEntry(s + 'Integration_Accounts.svg;',
1025					r * 0.5, r * 0.5, '', 'Integration Accounts', null, null, this.getTagsForStencil(gn, 'integration accounts', dt).join(' ')),
1026			this.createVertexTemplateEntry(s + 'Integration_Service_Environments.svg;',
1027					r * 0.5, r * 0.5, '', 'Integration Service Environments', null, null, this.getTagsForStencil(gn, 'integration service environments', dt).join(' ')),
1028			this.createVertexTemplateEntry(s + 'Logic_Apps_Custom_Connector.svg;',
1029					r * 0.5, r * 0.5, '', 'Logic Apps Custom Connector', null, null, this.getTagsForStencil(gn, 'logic apps custom connector', dt).join(' ')),
1030			this.createVertexTemplateEntry(s + 'Logic_Apps.svg;',
1031					r * 0.5, r * 0.39, '', 'Logic Apps', null, null, this.getTagsForStencil(gn, 'logic apps', dt).join(' ')),
1032			this.createVertexTemplateEntry(s + 'SendGrid_Accounts.svg;',
1033					r * 0.5, r * 0.5, '', 'SendGrid Accounts', null, null, this.getTagsForStencil(gn, 'sendgrid accounts', dt).join(' ')),
1034			this.createVertexTemplateEntry(s + 'Service_Catalog_Managed_Application_Definitions.svg;',
1035					r * 0.47, r * 0.5, '', 'Service Catalog Managed Application Definitions', null, null, this.getTagsForStencil(gn, 'service catalog managed application definitions', dt).join(' ')),
1036			this.createVertexTemplateEntry(s + 'Software_as_a_Service.svg;',
1037					r * 0.5, r * 0.5, '', 'Software as a Service (SaaS)', null, null, this.getTagsForStencil(gn, 'software service saas', dt).join(' '))
1038		];
1039
1040		this.addPalette('mscaeIntegration Service', 'CAE / Integration Service', false, mxUtils.bind(this, function(content)
1041				{
1042					for (var i = 0; i < fns.length; i++)
1043					{
1044						content.appendChild(fns[i](content));
1045					}
1046		}));
1047	};
1048
1049	Sidebar.prototype.addMSCAEInternetOfThingsServicePalette = function(gn, r, sb, s)
1050	{
1051		var dt = 'ms microsoft cloud enterprise iot internet of things';
1052
1053		var fns =
1054		[
1055			this.createVertexTemplateEntry(s + 'Azure_Digital_Twins.svg;',
1056					r * 0.45, r * 0.5, '', 'Azure Digital Twins', null, null, this.getTagsForStencil(gn, 'azure digital twins', dt).join(' ')),
1057			this.createVertexTemplateEntry(s + 'Azure_IoT_Hub_Security.svg;',
1058					r * 0.37, r * 0.5, '', 'Azure IoT Hub Security', null, null, this.getTagsForStencil(gn, 'azure hub security', dt).join(' ')),
1059			this.createVertexTemplateEntry(s + 'Azure_IoT_Hub.svg;',
1060					r * 0.5, r * 0.5, '', 'Azure IoT Hub', null, null, this.getTagsForStencil(gn, 'azure hub', dt).join(' ')),
1061			this.createVertexTemplateEntry(s + 'Azure_Maps.svg;',
1062					r * 0.39, r * 0.5, '', 'Azure Maps', null, null, this.getTagsForStencil(gn, 'azure maps', dt).join(' ')),
1063			this.createVertexTemplateEntry(s + 'Azure_Sphere.svg;',
1064					r * 0.48, r * 0.5, '', 'Azure Sphere', null, null, this.getTagsForStencil(gn, 'azure sphere', dt).join(' ')),
1065			this.createVertexTemplateEntry(s + 'Device_Provisioning_Services.svg;',
1066					r * 0.48, r * 0.5, '', 'Device Provisioning Services', null, null, this.getTagsForStencil(gn, 'device provisioning services', dt).join(' ')),
1067			this.createVertexTemplateEntry('aspect=fixed;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.mscae.cloud.central;fillColor=#0079D6;pointerEvents=1;',
1068					r * 0.44, r * 0.5, '', 'IoT Central Applications', null, null, this.getTagsForStencil(gn, 'central applications', dt).join(' ')),
1069			this.createVertexTemplateEntry(s + 'Time_Series_Insights_environments.svg;',
1070					r * 0.49, r * 0.5, '', 'Time Series Insights environments', null, null, this.getTagsForStencil(gn, 'time series insights environments', dt).join(' ')),
1071			this.createVertexTemplateEntry(s + 'Input.svg;',
1072					r * 0.5, r * 0.45, '', 'Time Series Insights Events Sources', null, null, this.getTagsForStencil(gn, 'time series insights events sources input', dt).join(' ')),
1073			this.createVertexTemplateEntry(s + 'Windows_10_IoT_Core_Services.svg;',
1074					r * 0.5, r * 0.5, '', 'Windows 10 IoT Core Services', null, null, this.getTagsForStencil(gn, 'windows 10 core services', dt).join(' '))
1075		];
1076
1077		this.addPalette('mscaeInternet of Things Service', 'CAE / Internet of Things Service', false, mxUtils.bind(this, function(content)
1078				{
1079					for (var i = 0; i < fns.length; i++)
1080					{
1081						content.appendChild(fns[i](content));
1082					}
1083		}));
1084	};
1085
1086	Sidebar.prototype.addMSCAEIntuneServicePalette = function(gn, r, sb, s)
1087	{
1088		var dt = 'ms microsoft cloud enterprise intune service';
1089
1090		var fns =
1091		[
1092			this.createVertexTemplateEntry(s + 'Client_Apps.svg;',
1093					r * 0.5, r * 0.5, '', 'Client Apps', null, null, this.getTagsForStencil(gn, 'client apps', dt).join(' ')),
1094			this.createVertexTemplateEntry(s + 'Dedicated_Event_Hub.svg;',
1095					r * 0.5, r * 0.48, '', 'Dedicated Event Hub', null, null, this.getTagsForStencil(gn, 'dedicated event hub', dt).join(' ')),
1096			this.createVertexTemplateEntry(s + 'Device_Compliance.svg;',
1097					r * 0.41, r * 0.5, '', 'Device Compliance', null, null, this.getTagsForStencil(gn, 'device compliance', dt).join(' ')),
1098			this.createVertexTemplateEntry(s + 'Device_Config.svg;',
1099					r * 0.44, r * 0.5, '', 'Device Config', null, null, this.getTagsForStencil(gn, 'device config', dt).join(' ')),
1100			this.createVertexTemplateEntry(s + 'Devices_Groups.svg;',
1101					r * 0.5, r * 0.5, '', 'Devices Groups', null, null, this.getTagsForStencil(gn, 'devices groups', dt).join(' ')),
1102			this.createVertexTemplateEntry(s + 'eBooks.svg;',
1103					r * 0.5, r * 0.41, '', 'eBooks', null, null, this.getTagsForStencil(gn, 'ebooks', dt).join(' ')),
1104			this.createVertexTemplateEntry(s + 'Enrollment.svg;',
1105					r * 0.5, r * 0.5, '', 'Enrollment', null, null, this.getTagsForStencil(gn, 'enrollment', dt).join(' ')),
1106			this.createVertexTemplateEntry(s + 'Exchange_On_premises_Access.svg;',
1107					r * 0.29, r * 0.5, '', 'Exchange On-premises Access', null, null, this.getTagsForStencil(gn, 'exchange on premises access', dt).join(' ')),
1108			this.createVertexTemplateEntry(s + 'Intune_App_Protection.svg;',
1109					r * 0.5, r * 0.4, '', 'Intune App Protection', null, null, this.getTagsForStencil(gn, 'intune app protection', dt).join(' ')),
1110			this.createVertexTemplateEntry(s + 'Managed_Desktop.svg;',
1111					r * 0.5, r * 0.36, '', 'Managed Desktop', null, null, this.getTagsForStencil(gn, 'managed desktop', dt).join(' ')),
1112			this.createVertexTemplateEntry(s + 'Security_Baselines.svg;',
1113					r * 0.44, r * 0.5, '', 'Security Baselines', null, null, this.getTagsForStencil(gn, 'security baselines', dt).join(' ')),
1114			this.createVertexTemplateEntry(s + 'Software_Update.svg;',
1115					r * 0.5, r * 0.45, '', 'Software Update', null, null, this.getTagsForStencil(gn, 'software update', dt).join(' ')),
1116			this.createVertexTemplateEntry(s + 'Tools.svg;',
1117					r * 0.47, r * 0.5, '', 'Tools', null, null, this.getTagsForStencil(gn, 'tools', dt).join(' '))
1118		];
1119
1120		this.addPalette('mscaeIntune Service', 'CAE / Intune Service', false, mxUtils.bind(this, function(content)
1121				{
1122					for (var i = 0; i < fns.length; i++)
1123					{
1124						content.appendChild(fns[i](content));
1125					}
1126		}));
1127	};
1128
1129	Sidebar.prototype.addMSCAEManagementGovernanceServicePalette = function(gn, r, sb, s)
1130	{
1131		var dt = 'ms microsoft cloud enterprise management and governance service';
1132
1133		var fns =
1134		[
1135			this.createVertexTemplateEntry(s + 'Log.svg;',
1136					r * 0.45, r * 0.5, '', 'Activity Log', null, null, this.getTagsForStencil(gn, 'activity log', dt).join(' ')),
1137			this.createVertexTemplateEntry(s + 'Advisor.svg;',
1138					r * 0.5, r * 0.5, '', 'Advisor', null, null, this.getTagsForStencil(gn, 'advisor', dt).join(' ')),
1139			this.createVertexTemplateEntry(s + 'Notification.svg;',
1140					r * 0.5, r * 0.5, '', 'Alerts', null, null, this.getTagsForStencil(gn, 'notification alert alerts', dt).join(' ')),
1141			this.createVertexTemplateEntry(s + 'Automation.svg;',
1142					r * 0.5, r * 0.5, '', 'Automation Accounts', null, null, this.getTagsForStencil(gn, 'automation accounts', dt).join(' ')),
1143			this.createVertexTemplateEntry(s + 'Blueprints.svg;',
1144					r * 0.5, r * 0.48, '', 'Blueprints', null, null, this.getTagsForStencil(gn, 'blueprints', dt).join(' ')),
1145			this.createVertexTemplateEntry(s + 'BillingHub.svg;',
1146					r * 0.5, r * 0.5, '', 'BillingHub', null, null, this.getTagsForStencil(gn, 'billinghub', dt).join(' ')),
1147			this.createVertexTemplateEntry(s + 'LogDiagnostics.svg;',
1148					r * 0.45, r * 0.5, '', 'Diagnostic Settings', null, null, this.getTagsForStencil(gn, 'diagnostic settings log', dt).join(' ')),
1149			this.createVertexTemplateEntry(s + 'Free_Services.svg;',
1150					r * 0.5, r * 0.46, '', 'Free Services', null, null, this.getTagsForStencil(gn, 'free services', dt).join(' ')),
1151			this.createVertexTemplateEntry(s + 'Guest_Assignments.svg;',
1152					r * 0.44, r * 0.5, '', 'Guest Assignments', null, null, this.getTagsForStencil(gn, 'guest assignments', dt).join(' ')),
1153			this.createVertexTemplateEntry(s + 'Managed_Applications.svg;',
1154					r * 0.47, r * 0.5, '', 'Managed Applications', null, null, this.getTagsForStencil(gn, 'managed applications', dt).join(' ')),
1155			this.createVertexTemplateEntry(s + 'Chart.svg;',
1156					r * 0.5, r * 0.48, '', 'Metrics', null, null, this.getTagsForStencil(gn, 'metrics chart', dt).join(' ')),
1157			this.createVertexTemplateEntry(s + 'Monitor.svg;',
1158					r * 0.5, r * 0.5, '', 'Monitor', null, null, this.getTagsForStencil(gn, 'monitor', dt).join(' ')),
1159			this.createVertexTemplateEntry(s + 'Network_watcher.svg;',
1160					r * 0.5, r * 0.5, '', 'Network Watcher', null, null, this.getTagsForStencil(gn, 'network watcher', dt).join(' ')),
1161			this.createVertexTemplateEntry(s + 'Policy.svg;',
1162					r * 0.45, r * 0.5, '', 'Policy', null, null, this.getTagsForStencil(gn, 'policy', dt).join(' ')),
1163			this.createVertexTemplateEntry(s + 'Backup.svg;',
1164					r * 0.5, r * 0.42, '', 'Recovery Services Vault', null, null, this.getTagsForStencil(gn, 'recovery services vault backup', dt).join(' ')),
1165			this.createVertexTemplateEntry(s + 'Resource_Graph_Explorer.svg;',
1166					r * 0.49, r * 0.5, '', 'Resource Graph Explorer', null, null, this.getTagsForStencil(gn, 'resource graph explorer', dt).join(' ')),
1167			this.createVertexTemplateEntry(s + 'SchedulerJobCollection.svg;',
1168					r * 0.5, r * 0.43, '', 'Scheduler Job Collections', null, null, this.getTagsForStencil(gn, 'scheduler job collection collections', dt).join(' ')),
1169			this.createVertexTemplateEntry(s + 'Solutions.svg;',
1170					r * 0.5, r * 0.5, '', 'Solutions', null, null, this.getTagsForStencil(gn, 'solutions', dt).join(' '))
1171		];
1172
1173		this.addPalette('mscaeManagement and Governance Service', 'CAE / Management and Governance Service', false, mxUtils.bind(this, function(content)
1174				{
1175					for (var i = 0; i < fns.length; i++)
1176					{
1177						content.appendChild(fns[i](content));
1178					}
1179		}));
1180	};
1181
1182	Sidebar.prototype.addMSCAEManagementGovernanceMediaServicePalette = function(gn, r, sb, s)
1183	{
1184		var dt = 'ms microsoft cloud enterprise management and governance service media';
1185
1186		var fns =
1187		[
1188			this.createVertexTemplateEntry(s + 'Azure_Media_Player.svg;',
1189					r * 0.45, r * 0.5, '', 'Azure Media Player', null, null, this.getTagsForStencil(gn, 'azure media player', dt).join(' ')),
1190			this.createVertexTemplateEntry(s + 'Content_Protection.svg;',
1191					r * 0.45, r * 0.5, '', 'Content Protection', null, null, this.getTagsForStencil(gn, 'content protection', dt).join(' ')),
1192			this.createVertexTemplateEntry(s + 'Media_Encoding.svg;',
1193					r * 0.43, r * 0.5, '', 'Media Encoding', null, null, this.getTagsForStencil(gn, 'media encoding', dt).join(' ')),
1194			this.createVertexTemplateEntry(s + 'Media_On_Demand.svg;',
1195					r * 0.5, r * 0.5, '', 'Media On Demand', null, null, this.getTagsForStencil(gn, 'media_on_demand', dt).join(' '))
1196		];
1197
1198		this.addPalette('mscaeManagement and Governance Service Media', 'CAE / Management and Governance Service - Media', false, mxUtils.bind(this, function(content)
1199				{
1200					for (var i = 0; i < fns.length; i++)
1201					{
1202						content.appendChild(fns[i](content));
1203					}
1204		}));
1205	};
1206
1207	Sidebar.prototype.addMSCAEMigrateServicePalette = function(gn, r, sb, s)
1208	{
1209		var dt = 'ms microsoft cloud enterprise migrate service';
1210
1211		var fns =
1212		[
1213			this.createVertexTemplateEntry(s + 'Azure_Database_Migration_Services.svg;',
1214					r * 0.5, r * 0.5, '', 'Azure Database Migration Services', null, null, this.getTagsForStencil(gn, 'azure database migration services', dt).join(' ')),
1215			this.createVertexTemplateEntry(s + 'Migration_Projects.svg;',
1216					r * 0.5, r * 0.32, '', 'Migration Projects', null, null, this.getTagsForStencil(gn, 'migration projects', dt).join(' ')),
1217			this.createVertexTemplateEntry(s + 'Backup.svg;',
1218					r * 0.5, r * 0.42, '', 'Recovery Services Vaults', null, null, this.getTagsForStencil(gn, 'recovery services vaults vault', dt).join(' '))
1219		];
1220
1221		this.addPalette('mscaeMigrate Service', 'CAE / Migrate Service', false, mxUtils.bind(this, function(content)
1222				{
1223					for (var i = 0; i < fns.length; i++)
1224					{
1225						content.appendChild(fns[i](content));
1226					}
1227		}));
1228	};
1229
1230	Sidebar.prototype.addMSCAEMixedRealityServicePalette = function(gn, r, sb, s)
1231	{
1232		var dt = 'ms microsoft cloud enterprise mixed reality service';
1233
1234		var fns =
1235		[
1236			this.createVertexTemplateEntry(s + 'Spatial_Anchor.svg;',
1237					r * 0.48, r * 0.5, '', 'Spatial Anchor', null, null, this.getTagsForStencil(gn, 'spatial anchor', dt).join(' '))
1238		];
1239
1240		this.addPalette('mscaeMixed Reality Service', 'CAE / Mixed Reality Service', false, mxUtils.bind(this, function(content)
1241				{
1242					for (var i = 0; i < fns.length; i++)
1243					{
1244						content.appendChild(fns[i](content));
1245					}
1246		}));
1247	};
1248
1249	Sidebar.prototype.addMSCAEMobileServicePalette = function(gn, r, sb, s)
1250	{
1251		var dt = 'ms microsoft cloud enterprise mobile service';
1252
1253		var fns =
1254		[
1255			this.createVertexTemplateEntry(s + 'App_Service_Mobile_App.svg;',
1256					r * 0.34, r * 0.5, '', 'Azure App Service - Mobile', null, null, this.getTagsForStencil(gn, 'azure app service mobile', dt).join(' ')),
1257			this.createVertexTemplateEntry(s + 'Mobile_Engagement.svg;',
1258					r * 0.34, r * 0.5, '', 'Azure Mobile Engagement', null, null, this.getTagsForStencil(gn, 'azure mobile engagement', dt).join(' ')),
1259			this.createVertexTemplateEntry(s + 'Notification_Hubs.svg;',
1260					r * 0.5, r * 0.5, '', 'Notification_Hubs', null, null, this.getTagsForStencil(gn, 'notification hubs', dt).join(' '))
1261		];
1262
1263		this.addPalette('mscaeMobile Service', 'CAE / Mobile Service', false, mxUtils.bind(this, function(content)
1264				{
1265					for (var i = 0; i < fns.length; i++)
1266					{
1267						content.appendChild(fns[i](content));
1268					}
1269		}));
1270	};
1271
1272	Sidebar.prototype.addMSCAENetworkingServicePalette = function(gn, r, sb, s)
1273	{
1274		var dt = 'ms microsoft cloud enterprise networking service';
1275
1276		var fns =
1277		[
1278			this.createVertexTemplateEntry(s + 'Application_Gateway.svg;',
1279					r * 0.5, r * 0.5, '', 'Application Gateway', null, null, this.getTagsForStencil(gn, 'application gateway', dt).join(' ')),
1280			this.createVertexTemplateEntry(s + 'Application_Security_Groups.svg;',
1281					r * 0.37, r * 0.5, '', 'Application Security Groups', null, null, this.getTagsForStencil(gn, 'application security groups', dt).join(' ')),
1282			this.createVertexTemplateEntry(s + 'Azure_Firewall.svg;',
1283					r * 0.5, r * 0.5, '', 'Azure Firewall', null, null, this.getTagsForStencil(gn, 'azure firewall', dt).join(' ')),
1284			this.createVertexTemplateEntry(s + 'Content_Delivery_Network.svg;',
1285					r * 0.5, r * 0.23, '', 'CDN Profiles', null, null, this.getTagsForStencil(gn, 'cdn profiles content delivery network', dt).join(' ')),
1286			this.createVertexTemplateEntry(s + 'Connections.svg;',
1287					r * 0.5, r * 0.5, '', 'Connections', null, null, this.getTagsForStencil(gn, 'connections', dt).join(' ')),
1288			this.createVertexTemplateEntry(s + 'Connections.svg;',
1289					r * 0.5, r * 0.5, '', 'Connections', null, null, this.getTagsForStencil(gn, 'connections', dt).join(' ')),
1290			this.createVertexTemplateEntry(s + 'DDOS_Protection_Plans.svg;',
1291					r * 0.37, r * 0.5, '', 'DDOS Protection Plans', null, null, this.getTagsForStencil(gn, 'ddos protection plans', dt).join(' ')),
1292			this.createVertexTemplateEntry(s + 'DNS_Private_Zones.svg;',
1293					r * 0.5, r * 0.5, '', 'DNS Private Zones', null, null, this.getTagsForStencil(gn, 'dns domain name server private zones', dt).join(' ')),
1294			this.createVertexTemplateEntry(s + 'DNS.svg;',
1295					r * 0.5, r * 0.5, '', 'DNS Zones', null, null, this.getTagsForStencil(gn, 'dns domain name server zones', dt).join(' ')),
1296			this.createVertexTemplateEntry(s + 'Express_Route.svg;',
1297					r * 0.5, r * 0.3, '', 'Express Route Circuits', null, null, this.getTagsForStencil(gn, 'express route circuits', dt).join(' ')),
1298			this.createVertexTemplateEntry(s + 'Front_Doors.svg;',
1299					r * 0.5, r * 0.44, '', 'Front Doors', null, null, this.getTagsForStencil(gn, 'front doors', dt).join(' ')),
1300			this.createVertexTemplateEntry(s + 'Load_Balancer_feature.svg;',
1301					r * 0.5, r * 0.5, '', 'Load Balancers', null, null, this.getTagsForStencil(gn, 'load balancer balancers', dt).join(' ')),
1302			this.createVertexTemplateEntry(s + 'Local_Network_Gateways.svg;',
1303					r * 0.5, r * 0.5, '', 'Local Network Gateways', null, null, this.getTagsForStencil(gn, 'local network gateways', dt).join(' ')),
1304			this.createVertexTemplateEntry(s + 'NetworkInterfaceCard.svg;',
1305					r * 0.44, r * 0.5, '', 'Network Interface Card', null, null, this.getTagsForStencil(gn, 'network interface card', dt).join(' ')),
1306			this.createVertexTemplateEntry(s + 'Network_Security_Groups_Classic.svg;',
1307					r * 0.37, r * 0.5, '', 'Network Security Groups (Classic)', null, null, this.getTagsForStencil(gn, 'network security group classic', dt).join(' ')),
1308			this.createVertexTemplateEntry(s + 'Network_watcher.svg;',
1309					r * 0.5, r * 0.5, '', 'Network Watcher', null, null, this.getTagsForStencil(gn, 'network watcher', dt).join(' ')),
1310			this.createVertexTemplateEntry(s + 'On_Premises_Data_Gateways.svg;',
1311					r * 0.5, r * 0.5, '', 'On-Premises Data Gateways', null, null, this.getTagsForStencil(gn, 'on premises data gateways', dt).join(' ')),
1312			this.createVertexTemplateEntry(s + 'App_Service_IPAddress.svg;',
1313					r * 0.5, r * 0.42, '', 'Public IP Addresses', null, null, this.getTagsForStencil(gn, 'app service ip internet protocol address addresses', dt).join(' ')),
1314			this.createVertexTemplateEntry(s + 'ClassicIPAddress.svg;',
1315					r * 0.5, r * 0.42, '', 'Reserved IP Addresses (Classic)', null, null, this.getTagsForStencil(gn, 'classic ip internet protocol address adresses', dt).join(' ')),
1316			this.createVertexTemplateEntry(s + 'Route_Filter.svg;',
1317					r * 0.5, r * 0.42, '', 'Route Filters', null, null, this.getTagsForStencil(gn, 'route filters', dt).join(' ')),
1318			this.createVertexTemplateEntry(s + 'UserDefinedRoute.svg;',
1319					r * 0.5, r * 0.5, '', 'Route Tables', null, null, this.getTagsForStencil(gn, 'route tables', dt).join(' ')),
1320			this.createVertexTemplateEntry(s + 'Service_Endpoint_Policies.svg;',
1321					r * 0.49, r * 0.5, '', 'Service Endpoint Policies', null, null, this.getTagsForStencil(gn, 'service endpoint policies', dt).join(' ')),
1322			this.createVertexTemplateEntry(s + 'Traffic_Manager.svg;',
1323					r * 0.5, r * 0.5, '', 'Traffic Manager Profiles', null, null, this.getTagsForStencil(gn, 'traffic manager profiles', dt).join(' ')),
1324			this.createVertexTemplateEntry(s + 'Virtual_Network_Classic.svg;',
1325					r * 0.5, r * 0.28, '', 'Virtual Network (Classic)', null, null, this.getTagsForStencil(gn, 'virtual network classic', dt).join(' ')),
1326			this.createVertexTemplateEntry(s + 'VPN_Gateway.svg;',
1327					r * 0.45, r * 0.5, '', 'Virtual Network Gateways', null, null, this.getTagsForStencil(gn, 'vpn gateway gateways virtual private network', dt).join(' ')),
1328			this.createVertexTemplateEntry(s + 'Virtual_Network.svg;',
1329					r * 0.5, r * 0.28, '', 'Virtual Networks', null, null, this.getTagsForStencil(gn, 'virtual network networks', dt).join(' ')),
1330			this.createVertexTemplateEntry(s + 'Virtual_WANs.svg;',
1331					r * 0.5, r * 0.5, '', 'Virtual WANs', null, null, this.getTagsForStencil(gn, 'virtual wans wan wide area network networks', dt).join(' '))
1332		];
1333
1334		this.addPalette('mscaeNetworking Service', 'CAE / Networking Service', false, mxUtils.bind(this, function(content)
1335				{
1336					for (var i = 0; i < fns.length; i++)
1337					{
1338						content.appendChild(fns[i](content));
1339					}
1340		}));
1341	};
1342
1343	Sidebar.prototype.addMSCAEOtherCategoryServicePalette = function(gn, r, sb, s)
1344	{
1345		var dt = 'ms microsoft cloud enterprise other category service';
1346
1347		var fns =
1348		[
1349			this.createVertexTemplateEntry(s + 'CloudSimple_Nodes.svg;',
1350					r * 0.49, r * 0.5, '', 'CloudSimple Nodes', null, null, this.getTagsForStencil(gn, 'cloudsimple nodes', dt).join(' ')),
1351			this.createVertexTemplateEntry(s + 'CloudSimple_Services.svg;',
1352					r * 0.5, r * 0.5, '', 'CloudSimple Services', null, null, this.getTagsForStencil(gn, 'cloudsimple services', dt).join(' ')),
1353			this.createVertexTemplateEntry(s + 'CloudSimple_Virtual_Machines.svg;',
1354					r * 0.5, r * 0.32, '', 'CloudSimple Virtual Machines', null, null, this.getTagsForStencil(gn, 'cloudsimple virtual machines', dt).join(' ')),
1355			this.createVertexTemplateEntry(s + 'Controllers.svg;',
1356					r * 0.5, r * 0.44, '', 'Controllers', null, null, this.getTagsForStencil(gn, 'controllers', dt).join(' ')),
1357			this.createVertexTemplateEntry(s + 'Customer_Lockbox.svg;',
1358					r * 0.47, r * 0.5, '', 'Customer Lockbox', null, null, this.getTagsForStencil(gn, 'customer lockbox', dt).join(' ')),
1359			this.createVertexTemplateEntry(s + 'Education.svg;',
1360					r * 0.5, r * 0.39, '', 'Education', null, null, this.getTagsForStencil(gn, 'education', dt).join(' ')),
1361			this.createVertexTemplateEntry(s + 'Image_Definitions.svg;',
1362					r * 0.5, r * 0.39, '', 'Image Definitions', null, null, this.getTagsForStencil(gn, 'image definitions', dt).join(' ')),
1363			this.createVertexTemplateEntry(s + 'Image_Versions.svg;',
1364					r * 0.5, r * 0.48, '', 'Image Versions', null, null, this.getTagsForStencil(gn, 'image versions', dt).join(' ')),
1365			this.createVertexTemplateEntry(s + 'Resource_Explorer.svg;',
1366					r * 0.5, r * 0.46, '', 'Resource Explorer', null, null, this.getTagsForStencil(gn, 'resource explorer', dt).join(' ')),
1367			this.createVertexTemplateEntry(s + 'Shared_Image_Galleries.svg;',
1368					r * 0.5, r * 0.5, '', 'Shared Image Galleries', null, null, this.getTagsForStencil(gn, 'shared image galleries', dt).join(' ')),
1369			this.createVertexTemplateEntry(s + 'Tenant_Status.svg;',
1370				r * 0.46, r * 0.5, '', 'Tenant Status', null, null, this.getTagsForStencil(gn, 'tenant status', dt).join(' ')),
1371			this.createVertexTemplateEntry(s + 'Web_App_Firewall.svg;',
1372					r * 0.5, r * 0.5, '', 'Web App Firewall', null, null, this.getTagsForStencil(gn, 'web app firewall', dt).join(' '))
1373		];
1374
1375		this.addPalette('mscaeOther Category Service', 'CAE / Other Category Service', false, mxUtils.bind(this, function(content)
1376				{
1377					for (var i = 0; i < fns.length; i++)
1378					{
1379						content.appendChild(fns[i](content));
1380					}
1381		}));
1382	};
1383
1384	Sidebar.prototype.addMSCAESecurityServicePalette = function(gn, r, sb, s)
1385	{
1386		var dt = 'ms microsoft cloud enterprise security service';
1387
1388		var fns =
1389		[
1390			this.createVertexTemplateEntry(s + 'Azure_Sentinel.svg;',
1391					r * 0.44, r * 0.5, '', 'Azure Sentinel', null, null, this.getTagsForStencil(gn, 'azure sentinel', dt).join(' ')),
1392			this.createVertexTemplateEntry(s + 'Key_Vaults.svg;',
1393					r * 0.48, r * 0.5, '', 'Key Vaults', null, null, this.getTagsForStencil(gn, 'key vaults', dt).join(' ')),
1394			this.createVertexTemplateEntry(s + 'Security_Center.svg;',
1395					r * 0.36, r * 0.5, '', 'Security Center', null, null, this.getTagsForStencil(gn, 'security center', dt).join(' '))
1396		];
1397
1398		this.addPalette('mscaeSecurity Service', 'CAE / Security Service', false, mxUtils.bind(this, function(content)
1399				{
1400					for (var i = 0; i < fns.length; i++)
1401					{
1402						content.appendChild(fns[i](content));
1403					}
1404		}));
1405	};
1406
1407	Sidebar.prototype.addMSCAEStorageServicePalette = function(gn, r, sb, s)
1408	{
1409		var dt = 'ms microsoft cloud enterprise storage service';
1410
1411		var fns =
1412		[
1413			this.createVertexTemplateEntry(s + 'Archive_Storage.svg;',
1414					r * 0.5, r * 0.48, '', 'Archive Storage', null, null, this.getTagsForStencil(gn, 'archive storage', dt).join(' ')),
1415			this.createVertexTemplateEntry(s + 'Azure_NetApp_files.svg;',
1416					r * 0.5, r * 0.42, '', 'Azure NetApp files', null, null, this.getTagsForStencil(gn, 'azure netapp files', dt).join(' ')),
1417			this.createVertexTemplateEntry(s + 'StorSimple.svg;',
1418					r * 0.5, r * 0.45, '', 'StorSimple', null, null, this.getTagsForStencil(gn, 'storsimple', dt).join(' ')),
1419			this.createVertexTemplateEntry(s + 'AzureFXTEdgeFiler.svg;',
1420					r * 0.5, r * 0.5, '', 'AzureFXTEdgeFiler', null, null, this.getTagsForStencil(gn, 'azurefxtedgefiler', dt).join(' ')),
1421			this.createVertexTemplateEntry(s + 'Blog_Storage.svg;',
1422					r * 0.5, r * 0.46, '', 'Blob Storage', null, null, this.getTagsForStencil(gn, 'blob storage', dt).join(' ')),
1423			this.createVertexTemplateEntry(s + 'Data_Box_Edge_Data_Box_Gateway.svg;',
1424					r * 0.5, r * 0.32, '', 'Data Box Edge - Data Box Gateway', null, null, this.getTagsForStencil(gn, 'data box edge data gateway', dt).join(' ')),
1425			this.createVertexTemplateEntry(s + 'Data_Box.svg;',
1426					r * 0.5, r * 0.47, '', 'Data Box / Import Export Storage', null, null, this.getTagsForStencil(gn, 'data box', dt).join(' ')),
1427			this.createVertexTemplateEntry(s + 'Data_Lake_Storage.svg;',
1428					r * 0.5, r * 0.46, '', 'Data Lake Storage', null, null, this.getTagsForStencil(gn, 'data lake storage', dt).join(' ')),
1429			this.createVertexTemplateEntry(s + 'General_Storage.svg;',
1430					r * 0.5, r * 0.5, '', 'General Storage', null, null, this.getTagsForStencil(gn, 'general storage', dt).join(' ')),
1431			this.createVertexTemplateEntry(s + 'Queues_Storage.svg;',
1432					r * 0.5, r * 0.44, '', 'Queues Storage', null, null, this.getTagsForStencil(gn, 'queues storage', dt).join(' ')),
1433			this.createVertexTemplateEntry(s + 'ClassicStorage.svg;',
1434					r * 0.5, r * 0.43, '', 'Classic Storage', null, null, this.getTagsForStencil(gn, 'classic storage', dt).join(' ')),
1435			this.createVertexTemplateEntry(s + 'Storage_Accounts.svg;',
1436					r * 0.5, r * 0.45, '', 'Storage Accounts', null, null, this.getTagsForStencil(gn, 'storage accounts', dt).join(' ')),
1437			this.createVertexTemplateEntry(s + 'Storage_Explorer.svg;',
1438					r * 0.5, r * 0.5, '', 'Storage Explorer', null, null, this.getTagsForStencil(gn, 'storage explorer', dt).join(' ')),
1439			this.createVertexTemplateEntry(s + 'Storage_sync_service.svg;',
1440					r * 0.5, r * 0.5, '', 'Storage Sync Services', null, null, this.getTagsForStencil(gn, 'storage sync services', dt).join(' ')),
1441			this.createVertexTemplateEntry(s + 'StorSimple_Data_Managers.svg;',
1442					r * 0.37, r * 0.5, '', 'StorSimple Data Managers', null, null, this.getTagsForStencil(gn, 'storsimple data managers', dt).join(' ')),
1443			this.createVertexTemplateEntry('aspect=fixed;verticalLabelPosition=bottom;html=1;verticalAlign=top;align=center;strokeColor=none;fillColor=#00BEF2;shape=mxgraph.azure.storsimple;',
1444					r * 0.5, r * 0.45, '', 'StorSimple Device Managers', null, null, this.getTagsForStencil(gn, 'storsimple device managers', dt).join(' ')),
1445			this.createVertexTemplateEntry(s + 'StorSimple_Data_Managers.svg;',
1446					r * 0.37, r * 0.5, '', 'StorSimple Data Managers', null, null, this.getTagsForStencil(gn, 'storsimple data managers', dt).join(' ')),
1447			this.createVertexTemplateEntry(s + 'Table_Storage.svg;',
1448					r * 0.5, r * 0.48, '', 'Table Storage', null, null, this.getTagsForStencil(gn, 'table storage', dt).join(' '))
1449		];
1450
1451		this.addPalette('mscaeStorage Service', 'CAE / Storage Service', false, mxUtils.bind(this, function(content)
1452				{
1453					for (var i = 0; i < fns.length; i++)
1454					{
1455						content.appendChild(fns[i](content));
1456					}
1457		}));
1458	};
1459
1460	Sidebar.prototype.addMSCAEWebServicePalette = function(gn, r, sb, s)
1461	{
1462		var dt = 'ms microsoft cloud enterprise web service';
1463
1464		var fns =
1465		[
1466			this.createVertexTemplateEntry(s + 'Connection.svg;',
1467					r * 0.5, r * 0.31, '', 'Connection', null, null, this.getTagsForStencil(gn, 'connection', dt).join(' ')),
1468			this.createVertexTemplateEntry(s + 'Certificate.svg;',
1469					r * 0.5, r * 0.42, '', 'App Service Certificates', null, null, this.getTagsForStencil(gn, 'app application certificates certificate', dt).join(' ')),
1470			this.createVertexTemplateEntry(s + 'CustomDomain.svg;',
1471					r * 0.5, r * 0.42, '', 'App Service Domains', null, null, this.getTagsForStencil(gn, 'app service domain domains', dt).join(' ')),
1472			this.createVertexTemplateEntry(s + 'App_Service.svg;',
1473					r * 0.5, r * 0.5, '', 'App Service Environments', null, null, this.getTagsForStencil(gn, 'app service environments', dt).join(' ')),
1474			this.createVertexTemplateEntry(s + 'WebHosting.svg;',
1475					r * 0.5, r * 0.5, '', 'App Service Plans', null, null, this.getTagsForStencil(gn, 'app plans web hosting', dt).join(' ')),
1476			this.createVertexTemplateEntry(s + 'App_Services.svg;',
1477					r * 0.5, r * 0.5, '', 'App Services', null, null, this.getTagsForStencil(gn, 'app services', dt).join(' ')),
1478			this.createVertexTemplateEntry(s + 'Media_Services.svg;',
1479					r * 0.44, r * 0.5, '', 'Azure Media Services', null, null, this.getTagsForStencil(gn, 'azure media services', dt).join(' ')),
1480			this.createVertexTemplateEntry(s + 'Search.svg;',
1481					r * 0.5, r * 0.5, '', 'Azure Search', null, null, this.getTagsForStencil(gn, 'azure search', dt).join(' ')),
1482			this.createVertexTemplateEntry(s + 'Notification_Hubs.svg;',
1483					r * 0.5, r * 0.5, '', 'Notification Hub Namespaces', null, null, this.getTagsForStencil(gn, 'notification hub namespace namespaces', dt).join(' ')),
1484			this.createVertexTemplateEntry(s + 'SignalR.svg;',
1485					r * 0.5, r * 0.5, '', 'SignalR', null, null, this.getTagsForStencil(gn, 'signalr', dt).join(' '))
1486		];
1487
1488		this.addPalette('mscaeWeb Service', 'CAE / Web Service', false, mxUtils.bind(this, function(content)
1489				{
1490					for (var i = 0; i < fns.length; i++)
1491					{
1492						content.appendChild(fns[i](content));
1493					}
1494		}));
1495	}
1496})();
1497