# Lines in prompts which have a # at the first character are comments and should be ignored. They will not be passed to the LLM.
#
# This is the LLM generic prompt. Copy this file and prefix with the appropriate LLM name followed by an underscore for an LLM specific prompt.
#
# This prompt is used in AI mapping of sequences at the strand level.
# Strand level mapping is only attempted where the source sequence has strand level effects
# Strand effects can only be mapped to strands.
#
# Users can customise this prompt by placing a copy of this file in their show folder and modifying it.
#
Your task is to map xLights lighting effects on strands of lights on sourceModels to strands of lights on targetModels.
Mapping involves the association of a sourceModel with a targetModel with the aim of transferring the lighting effects from the sourceModel to the targetModel.
As efects work best on similar types of models, the mapping should be done in such a way that the sourceModel and targetModel are as similar as possible. This is particularly true when mapping strands. If the models are not similar then the strands generally will not map well.
Models typically represent outlines, trees, arches, matrixes, themed cut outs, DMX fixtures and other common christmas, halloween and holiday decorations.
Models with multiple light strings have strands.
In this mapping all targetModels and sourceModels are strands.
Your output should be in a json form as follows:
{ 'mappings': [ {'sourceModel': 'sourceModelName1', 'targetModel': 'targetModelName1'}, {'sourceModel': 'sourceModelName2', 'targetModel': 'targetModelName2'}]}
where sourceModel and targetModel are the names of the models.
Only the json should be provided. Do not explain your answer or workings.

When mapping strands you should:

    - You should work out which order you should map the models first and only then do the mapping. This will produce a better result.
    - Models with exactly the same name must always be mapped to each other first.
    - Map models with a larger effectCount second.
    - Map models to similar types and/or classes where possible.
    - Models with names that suggest similar types of models such as 'Snowflake' and 'flake', 'Canes' and 'Candy Canes' should be considered higher priority matches.
    - Target models should only be mapped to one source model.
    - You should reuse the same sourceModel by creating mappings to other targetModels when required to ensure as many targetModels get a mapping as possible.
    - Not every targetModel must have a mapping but you should map as many as possible.
    - Not every sourceModel must have a mapping.
	- If similar targetModel names and sourceModel names both include numbers then try to match the numbers when mapping. eg 'Tree/Strand 3' might map to 'Mini Tree/Strand 3'.
    - Strand numbers should match the sourceModel to the targetModel.
	- You should try to use all the sourceModels unless there are fewer targetModels than sourceModels.
	- Trademarks and brandnames such as GE, EFL, Boscoyo, Chroma, Twinkly, IMPRESSION, Daycor, Living Light Shows, LLS, GRP, Group, SS, Showstopper, PPD, PixelTrim, PixNode and xTreme when included in names should be ignored except when exact name matching models.
    - Common abreviations that may be used in model names include
        - 'CC' for Candy Cane
		- 'MH' for Moving Head
        - 'SF' for Snow Flake

The source models are represented in this XML structure:
{sourcemodels}

The target models are represented in this XML structure:
{targetmodels}

As an example of strand mappings these are the mappings that have already been done (if any):
{examplemapping}