<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="id">
	<id>https://data.mippedia.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Admin</id>
	<title>Mippedia Data - Kontribusi pengguna [id]</title>
	<link rel="self" type="application/atom+xml" href="https://data.mippedia.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Admin"/>
	<link rel="alternate" type="text/html" href="https://data.mippedia.org/wiki/Istimewa:Kontribusi_pengguna/Admin"/>
	<updated>2026-07-20T04:10:54Z</updated>
	<subtitle>Kontribusi pengguna</subtitle>
	<generator>MediaWiki 1.46.0</generator>
	<entry>
		<id>https://data.mippedia.org/index.php?title=MediaWiki:Sitelinks-Data.json&amp;diff=956</id>
		<title>MediaWiki:Sitelinks-Data.json</title>
		<link rel="alternate" type="text/html" href="https://data.mippedia.org/index.php?title=MediaWiki:Sitelinks-Data.json&amp;diff=956"/>
		<updated>2026-07-18T16:10:47Z</updated>

		<summary type="html">&lt;p&gt;Admin: Sync Metadata: Makhluk_hidup&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{&lt;br /&gt;
	&amp;quot;Rumi_Haitami&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Rumi Haitami&amp;quot;,&lt;br /&gt;
		&amp;quot;en&amp;quot;: &amp;quot;Rumi Haitami&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;Rumi Haitami&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Rumi_Haitami_(_label_rekaman_)&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Rumi Haitami ( label rekaman )&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Vokalis&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Vokalis&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Gitar&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Gitar&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;Gitar&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Mippedia&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Mippedia&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;Mippedia&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Komunitas_Mippedia&amp;quot;: {&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;Komunitas Mippedia&amp;quot;,&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Komunitas Mippedia&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Mippedia_bahasa_Inggris&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Mippedia bahasa Inggris&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;Mippedia bahasa Inggris&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Ensiklopedia_daring&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Ensiklopedia daring&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Musik_rock&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Musik rock&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Pop_Indonesia&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Pop Indonesia&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Diskografi_Rumi_Haitami&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Diskografi Rumi Haitami&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Pemusik&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Pemusik&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;Pemusik&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Penyanyi&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Penyanyi&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Pengusaha&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Pengusaha&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Musik&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Musik&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;Musik&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Nur_Khosiyah&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Nur Khosiyah&amp;quot;,&lt;br /&gt;
		&amp;quot;en&amp;quot;: &amp;quot;Nur Khosiyah&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Mippedia_bahasa_Indonesia&amp;quot;: {&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;Mippedia bahasa Indonesia&amp;quot;,&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Mippedia bahasa Indonesia&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Mippedia_bahasa_Indonesia_ringkas&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Mippedia bahasa Indonesia ringkas&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;Mippedia bahasa Indonesia ringkas&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Alat_musik&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Alat musik&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;Alat musik&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Bahasa_Inggris&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Bahasa Inggris&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Alat_musik_dawai&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Alat musik dawai&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Alat_musik_gesek&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Alat musik gesek&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Alat_musik_tiup&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Alat musik tiup&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Alat_musik_perkusi&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Alat musik perkusi&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Alat_musik_tiup_kayu&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Alat musik tiup kayu&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Nailoong&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Nailoong&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Katimus&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Katimus&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Getuk&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Getuk&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Tanpa_Arah&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Tanpa Arah&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Khianat_Cinta&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Khianat Cinta&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Pengkhianatan&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Pengkhianatan&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Kekasih_Hati_Ku&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Kekasih Hati Ku&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Kenangan_Indah&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Kenangan Indah&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Klarinet&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Klarinet&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Portal_Mippedia&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Portal Mippedia&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;Portal Mippedia&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Biola&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Biola&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Cello&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Cello&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Studio_rekaman&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Studio rekaman&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Wiki&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Wiki&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Situs_web&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Situs web&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Mippedia_Data&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Mippedia Data&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Aktor&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Aktor&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Album_musik&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Album musik&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Album_studio&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Album studio&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Ansambel&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Ansambel&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Bahasa&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Bahasa&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Animasi_komputer&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Animasi komputer&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Akustik&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Akustik&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Akor&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Akor&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Alat_perekam&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Alat perekam&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Animasi&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Animasi&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Film_animasi&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Film animasi&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Figur_publik&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Figur publik&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Film&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Film&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Tanpa_Arah_(album)&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Tanpa Arah (album)&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Bisnis&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Bisnis&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Bahasa_latin&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Bahasa latin&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Hukum&amp;quot;: {&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;Hukum&amp;quot;,&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Hukum&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Individu&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Individu&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Budaya&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Budaya&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;Budaya&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Sejarah&amp;quot;: {&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;Sejarah&amp;quot;,&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Sejarah&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Kenangan_Indah_(_single_)&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Kenangan Indah ( single )&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Kenangan_Indah_(album)&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Kenangan Indah (album)&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Musik_jazz&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Musik jazz&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Harmoni&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Harmoni&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Logo_Mippedia&amp;quot;: {&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;Logo Mippedia&amp;quot;,&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Logo Mippedia&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Tes&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Tes&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Smendes&amp;quot;: {&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;Smendes&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Bahasa_Yunani&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Bahasa Yunani&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Rambut&amp;quot;: {&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;Rambut&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Hewan&amp;quot;: {&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;Hewan&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Makhluk_hidup&amp;quot;: {&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;Makhluk hidup&amp;quot;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://data.mippedia.org/index.php?title=Makhluk_Hidup&amp;diff=955</id>
		<title>Makhluk Hidup</title>
		<link rel="alternate" type="text/html" href="https://data.mippedia.org/index.php?title=Makhluk_Hidup&amp;diff=955"/>
		<updated>2026-07-18T16:10:24Z</updated>

		<summary type="html">&lt;p&gt;Admin: Admin memindahkan halaman Makhluk Hidup ke Makhluk hidup&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#ALIH [[Makhluk hidup]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://data.mippedia.org/index.php?title=Makhluk_hidup&amp;diff=954</id>
		<title>Makhluk hidup</title>
		<link rel="alternate" type="text/html" href="https://data.mippedia.org/index.php?title=Makhluk_hidup&amp;diff=954"/>
		<updated>2026-07-18T16:10:24Z</updated>

		<summary type="html">&lt;p&gt;Admin: Admin memindahkan halaman Makhluk Hidup ke Makhluk hidup&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox umum&lt;br /&gt;
|nama = Makhluk Hidup &lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://data.mippedia.org/index.php?title=Makhluk_hidup&amp;diff=953</id>
		<title>Makhluk hidup</title>
		<link rel="alternate" type="text/html" href="https://data.mippedia.org/index.php?title=Makhluk_hidup&amp;diff=953"/>
		<updated>2026-07-18T16:09:57Z</updated>

		<summary type="html">&lt;p&gt;Admin: ←Membuat halaman berisi &amp;#039;{{Infobox umum |nama = Makhluk Hidup  }}&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox umum&lt;br /&gt;
|nama = Makhluk Hidup &lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://data.mippedia.org/index.php?title=Hukum&amp;diff=952</id>
		<title>Hukum</title>
		<link rel="alternate" type="text/html" href="https://data.mippedia.org/index.php?title=Hukum&amp;diff=952"/>
		<updated>2026-07-18T16:09:31Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox umum&lt;br /&gt;
|nama = Hukum &lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://data.mippedia.org/index.php?title=DNA&amp;diff=951</id>
		<title>DNA</title>
		<link rel="alternate" type="text/html" href="https://data.mippedia.org/index.php?title=DNA&amp;diff=951"/>
		<updated>2026-07-18T16:08:53Z</updated>

		<summary type="html">&lt;p&gt;Admin: ←Membuat halaman berisi &amp;#039;{{Infobox umum |nama = DNA  }}&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox umum&lt;br /&gt;
|nama = DNA &lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://data.mippedia.org/index.php?title=MediaWiki:Sitelinks-Data.json&amp;diff=950</id>
		<title>MediaWiki:Sitelinks-Data.json</title>
		<link rel="alternate" type="text/html" href="https://data.mippedia.org/index.php?title=MediaWiki:Sitelinks-Data.json&amp;diff=950"/>
		<updated>2026-07-18T16:08:01Z</updated>

		<summary type="html">&lt;p&gt;Admin: Sync Metadata: Hewan&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{&lt;br /&gt;
	&amp;quot;Rumi_Haitami&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Rumi Haitami&amp;quot;,&lt;br /&gt;
		&amp;quot;en&amp;quot;: &amp;quot;Rumi Haitami&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;Rumi Haitami&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Rumi_Haitami_(_label_rekaman_)&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Rumi Haitami ( label rekaman )&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Vokalis&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Vokalis&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Gitar&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Gitar&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;Gitar&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Mippedia&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Mippedia&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;Mippedia&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Komunitas_Mippedia&amp;quot;: {&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;Komunitas Mippedia&amp;quot;,&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Komunitas Mippedia&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Mippedia_bahasa_Inggris&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Mippedia bahasa Inggris&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;Mippedia bahasa Inggris&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Ensiklopedia_daring&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Ensiklopedia daring&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Musik_rock&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Musik rock&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Pop_Indonesia&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Pop Indonesia&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Diskografi_Rumi_Haitami&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Diskografi Rumi Haitami&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Pemusik&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Pemusik&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;Pemusik&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Penyanyi&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Penyanyi&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Pengusaha&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Pengusaha&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Musik&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Musik&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;Musik&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Nur_Khosiyah&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Nur Khosiyah&amp;quot;,&lt;br /&gt;
		&amp;quot;en&amp;quot;: &amp;quot;Nur Khosiyah&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Mippedia_bahasa_Indonesia&amp;quot;: {&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;Mippedia bahasa Indonesia&amp;quot;,&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Mippedia bahasa Indonesia&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Mippedia_bahasa_Indonesia_ringkas&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Mippedia bahasa Indonesia ringkas&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;Mippedia bahasa Indonesia ringkas&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Alat_musik&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Alat musik&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;Alat musik&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Bahasa_Inggris&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Bahasa Inggris&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Alat_musik_dawai&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Alat musik dawai&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Alat_musik_gesek&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Alat musik gesek&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Alat_musik_tiup&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Alat musik tiup&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Alat_musik_perkusi&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Alat musik perkusi&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Alat_musik_tiup_kayu&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Alat musik tiup kayu&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Nailoong&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Nailoong&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Katimus&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Katimus&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Getuk&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Getuk&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Tanpa_Arah&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Tanpa Arah&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Khianat_Cinta&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Khianat Cinta&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Pengkhianatan&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Pengkhianatan&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Kekasih_Hati_Ku&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Kekasih Hati Ku&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Kenangan_Indah&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Kenangan Indah&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Klarinet&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Klarinet&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Portal_Mippedia&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Portal Mippedia&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;Portal Mippedia&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Biola&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Biola&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Cello&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Cello&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Studio_rekaman&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Studio rekaman&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Wiki&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Wiki&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Situs_web&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Situs web&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Mippedia_Data&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Mippedia Data&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Aktor&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Aktor&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Album_musik&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Album musik&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Album_studio&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Album studio&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Ansambel&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Ansambel&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Bahasa&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Bahasa&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Animasi_komputer&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Animasi komputer&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Akustik&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Akustik&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Akor&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Akor&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Alat_perekam&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Alat perekam&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Animasi&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Animasi&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Film_animasi&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Film animasi&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Figur_publik&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Figur publik&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Film&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Film&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Tanpa_Arah_(album)&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Tanpa Arah (album)&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Bisnis&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Bisnis&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Bahasa_latin&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Bahasa latin&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Hukum&amp;quot;: {&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;Hukum&amp;quot;,&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Hukum&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Individu&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Individu&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Budaya&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Budaya&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;Budaya&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Sejarah&amp;quot;: {&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;Sejarah&amp;quot;,&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Sejarah&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Kenangan_Indah_(_single_)&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Kenangan Indah ( single )&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Kenangan_Indah_(album)&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Kenangan Indah (album)&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Musik_jazz&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Musik jazz&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Harmoni&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Harmoni&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Logo_Mippedia&amp;quot;: {&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;Logo Mippedia&amp;quot;,&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Logo Mippedia&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Tes&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Tes&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Smendes&amp;quot;: {&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;Smendes&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Bahasa_Yunani&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Bahasa Yunani&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Rambut&amp;quot;: {&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;Rambut&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Hewan&amp;quot;: {&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;Hewan&amp;quot;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://data.mippedia.org/index.php?title=Hewan&amp;diff=949</id>
		<title>Hewan</title>
		<link rel="alternate" type="text/html" href="https://data.mippedia.org/index.php?title=Hewan&amp;diff=949"/>
		<updated>2026-07-18T16:07:48Z</updated>

		<summary type="html">&lt;p&gt;Admin: ←Membuat halaman berisi &amp;#039;{{Infobox umum |nama = Hewan  }}&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox umum&lt;br /&gt;
|nama = Hewan &lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://data.mippedia.org/index.php?title=MediaWiki:Sitelinks-Data.json&amp;diff=948</id>
		<title>MediaWiki:Sitelinks-Data.json</title>
		<link rel="alternate" type="text/html" href="https://data.mippedia.org/index.php?title=MediaWiki:Sitelinks-Data.json&amp;diff=948"/>
		<updated>2026-07-18T16:07:30Z</updated>

		<summary type="html">&lt;p&gt;Admin: Sync Metadata: Rambut&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{&lt;br /&gt;
	&amp;quot;Rumi_Haitami&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Rumi Haitami&amp;quot;,&lt;br /&gt;
		&amp;quot;en&amp;quot;: &amp;quot;Rumi Haitami&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;Rumi Haitami&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Rumi_Haitami_(_label_rekaman_)&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Rumi Haitami ( label rekaman )&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Vokalis&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Vokalis&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Gitar&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Gitar&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;Gitar&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Mippedia&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Mippedia&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;Mippedia&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Komunitas_Mippedia&amp;quot;: {&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;Komunitas Mippedia&amp;quot;,&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Komunitas Mippedia&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Mippedia_bahasa_Inggris&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Mippedia bahasa Inggris&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;Mippedia bahasa Inggris&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Ensiklopedia_daring&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Ensiklopedia daring&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Musik_rock&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Musik rock&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Pop_Indonesia&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Pop Indonesia&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Diskografi_Rumi_Haitami&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Diskografi Rumi Haitami&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Pemusik&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Pemusik&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;Pemusik&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Penyanyi&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Penyanyi&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Pengusaha&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Pengusaha&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Musik&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Musik&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;Musik&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Nur_Khosiyah&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Nur Khosiyah&amp;quot;,&lt;br /&gt;
		&amp;quot;en&amp;quot;: &amp;quot;Nur Khosiyah&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Mippedia_bahasa_Indonesia&amp;quot;: {&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;Mippedia bahasa Indonesia&amp;quot;,&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Mippedia bahasa Indonesia&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Mippedia_bahasa_Indonesia_ringkas&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Mippedia bahasa Indonesia ringkas&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;Mippedia bahasa Indonesia ringkas&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Alat_musik&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Alat musik&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;Alat musik&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Bahasa_Inggris&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Bahasa Inggris&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Alat_musik_dawai&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Alat musik dawai&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Alat_musik_gesek&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Alat musik gesek&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Alat_musik_tiup&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Alat musik tiup&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Alat_musik_perkusi&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Alat musik perkusi&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Alat_musik_tiup_kayu&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Alat musik tiup kayu&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Nailoong&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Nailoong&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Katimus&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Katimus&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Getuk&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Getuk&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Tanpa_Arah&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Tanpa Arah&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Khianat_Cinta&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Khianat Cinta&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Pengkhianatan&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Pengkhianatan&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Kekasih_Hati_Ku&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Kekasih Hati Ku&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Kenangan_Indah&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Kenangan Indah&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Klarinet&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Klarinet&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Portal_Mippedia&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Portal Mippedia&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;Portal Mippedia&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Biola&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Biola&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Cello&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Cello&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Studio_rekaman&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Studio rekaman&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Wiki&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Wiki&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Situs_web&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Situs web&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Mippedia_Data&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Mippedia Data&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Aktor&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Aktor&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Album_musik&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Album musik&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Album_studio&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Album studio&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Ansambel&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Ansambel&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Bahasa&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Bahasa&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Animasi_komputer&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Animasi komputer&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Akustik&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Akustik&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Akor&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Akor&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Alat_perekam&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Alat perekam&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Animasi&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Animasi&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Film_animasi&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Film animasi&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Figur_publik&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Figur publik&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Film&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Film&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Tanpa_Arah_(album)&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Tanpa Arah (album)&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Bisnis&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Bisnis&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Bahasa_latin&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Bahasa latin&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Hukum&amp;quot;: {&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;Hukum&amp;quot;,&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Hukum&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Individu&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Individu&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Budaya&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Budaya&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;Budaya&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Sejarah&amp;quot;: {&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;Sejarah&amp;quot;,&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Sejarah&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Kenangan_Indah_(_single_)&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Kenangan Indah ( single )&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Kenangan_Indah_(album)&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Kenangan Indah (album)&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Musik_jazz&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Musik jazz&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Harmoni&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Harmoni&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Logo_Mippedia&amp;quot;: {&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;Logo Mippedia&amp;quot;,&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Logo Mippedia&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Tes&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Tes&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Smendes&amp;quot;: {&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;Smendes&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Bahasa_Yunani&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Bahasa Yunani&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Rambut&amp;quot;: {&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;Rambut&amp;quot;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://data.mippedia.org/index.php?title=Rambut&amp;diff=947</id>
		<title>Rambut</title>
		<link rel="alternate" type="text/html" href="https://data.mippedia.org/index.php?title=Rambut&amp;diff=947"/>
		<updated>2026-07-18T16:06:48Z</updated>

		<summary type="html">&lt;p&gt;Admin: ←Membuat halaman berisi &amp;#039;{{Infobox umum |nama = Rambut  }}&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox umum&lt;br /&gt;
|nama = Rambut &lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://data.mippedia.org/index.php?title=MediaWiki:Sitelinks-Data.json&amp;diff=946</id>
		<title>MediaWiki:Sitelinks-Data.json</title>
		<link rel="alternate" type="text/html" href="https://data.mippedia.org/index.php?title=MediaWiki:Sitelinks-Data.json&amp;diff=946"/>
		<updated>2026-07-12T20:40:09Z</updated>

		<summary type="html">&lt;p&gt;Admin: Sync Metadata: Bahasa_Yunani&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{&lt;br /&gt;
	&amp;quot;Rumi_Haitami&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Rumi Haitami&amp;quot;,&lt;br /&gt;
		&amp;quot;en&amp;quot;: &amp;quot;Rumi Haitami&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;Rumi Haitami&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Rumi_Haitami_(_label_rekaman_)&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Rumi Haitami ( label rekaman )&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Vokalis&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Vokalis&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Gitar&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Gitar&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;Gitar&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Mippedia&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Mippedia&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;Mippedia&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Komunitas_Mippedia&amp;quot;: {&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;Komunitas Mippedia&amp;quot;,&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Komunitas Mippedia&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Mippedia_bahasa_Inggris&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Mippedia bahasa Inggris&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;Mippedia bahasa Inggris&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Ensiklopedia_daring&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Ensiklopedia daring&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Musik_rock&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Musik rock&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Pop_Indonesia&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Pop Indonesia&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Diskografi_Rumi_Haitami&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Diskografi Rumi Haitami&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Pemusik&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Pemusik&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;Pemusik&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Penyanyi&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Penyanyi&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Pengusaha&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Pengusaha&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Musik&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Musik&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;Musik&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Nur_Khosiyah&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Nur Khosiyah&amp;quot;,&lt;br /&gt;
		&amp;quot;en&amp;quot;: &amp;quot;Nur Khosiyah&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Mippedia_bahasa_Indonesia&amp;quot;: {&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;Mippedia bahasa Indonesia&amp;quot;,&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Mippedia bahasa Indonesia&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Mippedia_bahasa_Indonesia_ringkas&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Mippedia bahasa Indonesia ringkas&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;Mippedia bahasa Indonesia ringkas&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Alat_musik&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Alat musik&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;Alat musik&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Bahasa_Inggris&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Bahasa Inggris&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Alat_musik_dawai&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Alat musik dawai&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Alat_musik_gesek&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Alat musik gesek&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Alat_musik_tiup&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Alat musik tiup&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Alat_musik_perkusi&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Alat musik perkusi&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Alat_musik_tiup_kayu&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Alat musik tiup kayu&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Nailoong&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Nailoong&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Katimus&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Katimus&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Getuk&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Getuk&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Tanpa_Arah&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Tanpa Arah&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Khianat_Cinta&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Khianat Cinta&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Pengkhianatan&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Pengkhianatan&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Kekasih_Hati_Ku&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Kekasih Hati Ku&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Kenangan_Indah&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Kenangan Indah&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Klarinet&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Klarinet&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Portal_Mippedia&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Portal Mippedia&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;Portal Mippedia&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Biola&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Biola&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Cello&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Cello&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Studio_rekaman&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Studio rekaman&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Wiki&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Wiki&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Situs_web&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Situs web&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Mippedia_Data&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Mippedia Data&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Aktor&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Aktor&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Album_musik&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Album musik&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Album_studio&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Album studio&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Ansambel&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Ansambel&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Bahasa&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Bahasa&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Animasi_komputer&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Animasi komputer&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Akustik&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Akustik&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Akor&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Akor&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Alat_perekam&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Alat perekam&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Animasi&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Animasi&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Film_animasi&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Film animasi&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Figur_publik&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Figur publik&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Film&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Film&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Tanpa_Arah_(album)&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Tanpa Arah (album)&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Bisnis&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Bisnis&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Bahasa_latin&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Bahasa latin&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Hukum&amp;quot;: {&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;Hukum&amp;quot;,&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Hukum&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Individu&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Individu&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Budaya&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Budaya&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;Budaya&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Sejarah&amp;quot;: {&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;Sejarah&amp;quot;,&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Sejarah&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Kenangan_Indah_(_single_)&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Kenangan Indah ( single )&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Kenangan_Indah_(album)&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Kenangan Indah (album)&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Musik_jazz&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Musik jazz&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Harmoni&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Harmoni&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Logo_Mippedia&amp;quot;: {&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;Logo Mippedia&amp;quot;,&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Logo Mippedia&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Tes&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Tes&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Smendes&amp;quot;: {&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;Smendes&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Bahasa_Yunani&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Bahasa Yunani&amp;quot;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://data.mippedia.org/index.php?title=MediaWiki:ShortDesc-Data.json&amp;diff=945</id>
		<title>MediaWiki:ShortDesc-Data.json</title>
		<link rel="alternate" type="text/html" href="https://data.mippedia.org/index.php?title=MediaWiki:ShortDesc-Data.json&amp;diff=945"/>
		<updated>2026-07-12T20:39:54Z</updated>

		<summary type="html">&lt;p&gt;Admin: Update Entity Description: Bahasa_Yunani&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{&lt;br /&gt;
	&amp;quot;Alat_musik&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Instrumen yang dibuat atau dimodifikasi untuk menghasilkan suara musikal&amp;quot;,&lt;br /&gt;
		&amp;quot;en&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;Instrumen yang di buat atau di modifikasi untuk menghasilkan musik&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Tanpa_Arah&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Album musik&amp;quot;,&lt;br /&gt;
		&amp;quot;en&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Rumi_Haitami&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Musisi, pendiri ensiklopedia umum multibahasa yang bernama Mippedia dan juga pendiri Mippedia Community, sebuah komunitas daring sukarelawan yang menjalankan semua proyek Mippedia&amp;quot;,&lt;br /&gt;
		&amp;quot;en&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;Musisi, pendiri Mippedia dan Mippedia Community&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Kenangan_Indah&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Album musik&amp;quot;,&lt;br /&gt;
		&amp;quot;en&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Firoh_Syakillah&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Pengusaha asal Indonesia&amp;quot;,&lt;br /&gt;
		&amp;quot;en&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Portal_Mippedia&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Layanan portal pencarian&amp;quot;,&lt;br /&gt;
		&amp;quot;en&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;Portal pencarian&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Komunitas_Mippedia&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Komunitas daring sukarelawan&amp;quot;,&lt;br /&gt;
		&amp;quot;en&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;komunitas daring&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Mippedia&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;ensiklopedia daring umum multibahasa&amp;quot;,&lt;br /&gt;
		&amp;quot;en&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;ensiklopedia daring umum multibahasa&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Mippedia_Data&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Pusat basis data pengetahuan terstruktur dan repositori metadata pengetahuan umum yang di kelola oleh Mippedia Community&amp;quot;,&lt;br /&gt;
		&amp;quot;en&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;Pusat basis data pengetahuan terstruktur dan repositori metadata pengetahuan umum&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Mippedia_bahasa_Indonesia&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;edisi bahasa Indonesia dari Mippedia&amp;quot;,&lt;br /&gt;
		&amp;quot;en&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;edisi bahasa Indonesia dari Mippedia dan lebih lengkap dari Mippedia bahasa Indonesia ringkas&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Mippedia_bahasa_Indonesia_ringkas&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;edisi ensiklopedia umum Mippedia yang lebih sederhana, lebih padat dan lebih ringkas serta lebih pendek dari Mippedia bahasa Indonesia utama&amp;quot;,&lt;br /&gt;
		&amp;quot;en&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;edisi lebih sederhana dari Mippedia bahasa Indonesia utama&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Mippedia_bahasa_Inggris&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;edisi bahasa Inggris dari Mippedia&amp;quot;,&lt;br /&gt;
		&amp;quot;en&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;edisi bahasa Inggris dari Mippedia&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Aktor&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Orang yang memerankan karakter dalam produksi seni pertunjukan, film, atau televisi&amp;quot;,&lt;br /&gt;
		&amp;quot;en&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Alat_musik_dawai&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Keluarga instrumen musik yang menghasilkan suara dari getaran dawai atau senar&amp;quot;,&lt;br /&gt;
		&amp;quot;en&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Alat_musik_gesek&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Subkelompok alat musik dawai yang dibunyikan dengan cara menggesekkan busur pada senar&amp;quot;,&lt;br /&gt;
		&amp;quot;en&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Alat_musik_perkusi&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Keluarga instrumen musik yang menghasilkan suara dengan cara dipukul, dikocok, atau digosok&amp;quot;,&lt;br /&gt;
		&amp;quot;en&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Alat_musik_tiup&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Keluarga instrumen musik yang menghasilkan suara melalui getaran kolom udara di dalam resonator&amp;quot;,&lt;br /&gt;
		&amp;quot;en&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Alat_musik_tiup_kayu&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Keluarga instrumen musik aerofon yang menghasilkan bunyi melalui getaran kolom udara&amp;quot;,&lt;br /&gt;
		&amp;quot;en&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Album_musik&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Kumpulan rekaman musik yang dirilis sebagai satu kesatuan&amp;quot;,&lt;br /&gt;
		&amp;quot;en&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Album_studio&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Album musik yang direkam dalam lingkungan studio&amp;quot;,&lt;br /&gt;
		&amp;quot;en&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Ansambel&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Kelompok musisi atau penampil yang bermain bersama sebagai satu kesatuan&amp;quot;,&lt;br /&gt;
		&amp;quot;en&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Bahasa&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Sistem komunikasi simbolik yang digunakan manusia&amp;quot;,&lt;br /&gt;
		&amp;quot;en&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Nayla_Syakillah&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Figur publik asal Indonesia&amp;quot;,&lt;br /&gt;
		&amp;quot;en&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Nur_Khosiyah&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Figur publik asal Indonesia&amp;quot;,&lt;br /&gt;
		&amp;quot;en&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Rumi_Haitami_(_label_rekaman_)&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Identitas label rekaman mandiri dan penanda resmi hak cipta atas semua karya musik dari Rumi Haitami&amp;quot;,&lt;br /&gt;
		&amp;quot;en&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Diskografi_Rumi_Haitami&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Diskografi lengkap dari karya musik Rumi Haitami&amp;quot;,&lt;br /&gt;
		&amp;quot;en&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Blog&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Situs web yang memuat entri atau tulisan yang disajikan secara kronologis&amp;quot;,&lt;br /&gt;
		&amp;quot;en&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Bunyi&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Getaran yang merambat melalui medium dan dapat didengar&amp;quot;,&lt;br /&gt;
		&amp;quot;en&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Cello&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Instrumen musik dawai gesek berukuran besar dengan suara rendah&amp;quot;,&lt;br /&gt;
		&amp;quot;en&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Distribusi&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Kegiatan penyaluran barang dan jasa dari produsen kepada konsumen&amp;quot;,&lt;br /&gt;
		&amp;quot;en&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Drum&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Alat musik perkusi yang menghasilkan bunyi melalui pemukulan&amp;quot;,&lt;br /&gt;
		&amp;quot;en&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Animasi_komputer&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Teknik animasi yang menggunakan komputer sebagai alat utama dalam pembuatan gambar bergerak&amp;quot;,&lt;br /&gt;
		&amp;quot;en&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Akor&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Kumpulan tiga nada atau lebih yang dimainkan secara bersamaan untuk menghasilkan harmoni&amp;quot;,&lt;br /&gt;
		&amp;quot;en&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Alat_perekam&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Perangkat yang digunakan untuk merekam, menyimpan, dan memutar ulang suara, gambar, atau data lainnya&amp;quot;,&lt;br /&gt;
		&amp;quot;en&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Animasi&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Teknik dan seni menciptakan ilusi gerak melalui rangkaian gambar berurutan&amp;quot;,&lt;br /&gt;
		&amp;quot;en&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Film_animasi&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Film yang menggunakan teknik animasi sebagai metode utama penceritaan visual&amp;quot;,&lt;br /&gt;
		&amp;quot;en&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Figur_publik&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Individu yang dikenal luas dan memiliki pengaruh di ruang publik&amp;quot;,&lt;br /&gt;
		&amp;quot;en&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Film&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Karya seni dan media audiovisual berbentuk gambar bergerak&amp;quot;,&lt;br /&gt;
		&amp;quot;en&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Gitar&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Alat musik dawai yang di mainkan dengan cara di petik&amp;quot;,&lt;br /&gt;
		&amp;quot;en&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;Alat musik dawai&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Pemusik&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Orang yang memainkan, mengubah, atau menciptakan musik&amp;quot;,&lt;br /&gt;
		&amp;quot;en&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;Orang yang memainkan atau yang menciptakan musik&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Tanpa_Arah_(_single_)&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Single oleh Rumi Haitami&amp;quot;,&lt;br /&gt;
		&amp;quot;en&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Tanpa_Arah_(album)&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Album musik oleh Rumi Haitami&amp;quot;,&lt;br /&gt;
		&amp;quot;en&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Penyanyi&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Musisi yang menggunakan suara manusia sebagai instrumen utama&amp;quot;,&lt;br /&gt;
		&amp;quot;en&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Musik&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Seni dan praktik pengorganisasian bunyi dalam waktu&amp;quot;,&lt;br /&gt;
		&amp;quot;en&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;Pengorganisasian bunyi dalam waktu&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Akustik&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Cabang ilmu fisika yang mempelajari bunyi dan getaran&amp;quot;,&lt;br /&gt;
		&amp;quot;en&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Bahasa_Inggris&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Bahasa Jermanik Barat yang berasal dari Inggris&amp;quot;,&lt;br /&gt;
		&amp;quot;en&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Bisnis&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Kegiatan terorganisasi untuk menghasilkan barang atau jasa&amp;quot;,&lt;br /&gt;
		&amp;quot;en&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Vokalis&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Musisi yang berperan sebagai penyanyi utama dalam kelompok musik&amp;quot;,&lt;br /&gt;
		&amp;quot;en&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Bahasa_latin&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Bahasa kuno dari rumpun Indo - Eropa yang berkembang di Italia kuno&amp;quot;,&lt;br /&gt;
		&amp;quot;en&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Hukum&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Sistem aturan yang mengatur perilaku manusia dalam masyarakat&amp;quot;,&lt;br /&gt;
		&amp;quot;en&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;Sistem aturan yang mengatur semua perilaku manusia&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Individu&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Entitas tunggal yang berdiri sendiri dalam konteks biologis, sosial, dan filosofis&amp;quot;,&lt;br /&gt;
		&amp;quot;en&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Budaya&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Keseluruhan sistem gagasan, tindakan, dan hasil karya manusia dalam kehidupan bermasyarakat&amp;quot;,&lt;br /&gt;
		&amp;quot;en&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;Keseluruhan sistem gagasan dalam kehidupan masyarakat&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Sejarah&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Disiplin ilmu yang mempelajari peristiwa masa lalu umat manusia berdasarkan bukti dan sumber&amp;quot;,&lt;br /&gt;
		&amp;quot;en&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;Sebuah praktik kedisplinan ilmu dalam mempelajari peristiwa masa lalu umat manusia&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Kenangan_Indah_(_single_)&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Single oleh Rumi Haitami&amp;quot;,&lt;br /&gt;
		&amp;quot;en&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Kenangan_Indah_(album)&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Album musik oleh Rumi Haitami&amp;quot;,&lt;br /&gt;
		&amp;quot;en&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Musik_rock&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Genre musik populer yang berkembang pada pertengahan abad ke-20&amp;quot;,&lt;br /&gt;
		&amp;quot;en&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Musik_jazz&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Genre musik asal Amerika Serikat yang menekankan improvisasi dan sinkopasi&amp;quot;,&lt;br /&gt;
		&amp;quot;en&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Harmoni&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Hubungan simultan antar nada dalam musik&amp;quot;,&lt;br /&gt;
		&amp;quot;en&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Logo_Mippedia&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Logo situs web&amp;quot;,&lt;br /&gt;
		&amp;quot;en&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;Logo website&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Tes&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Tes&amp;quot;,&lt;br /&gt;
		&amp;quot;en&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Bahasa_Yunani&amp;quot;: {&lt;br /&gt;
		&amp;quot;id&amp;quot;: &amp;quot;Bahasa Indo-Eropa yang digunakan di Yunani dan Siprus&amp;quot;,&lt;br /&gt;
		&amp;quot;en&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
		&amp;quot;concise&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://data.mippedia.org/index.php?title=Bahasa_Yunani&amp;diff=944</id>
		<title>Bahasa Yunani</title>
		<link rel="alternate" type="text/html" href="https://data.mippedia.org/index.php?title=Bahasa_Yunani&amp;diff=944"/>
		<updated>2026-07-12T20:39:24Z</updated>

		<summary type="html">&lt;p&gt;Admin: ←Membuat halaman berisi &amp;#039;{{Infobox umum |nama = Bahasa Yunani }}&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox umum&lt;br /&gt;
|nama = Bahasa Yunani&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://data.mippedia.org/index.php?title=Mippedia_Data:Tentang&amp;diff=943</id>
		<title>Mippedia Data:Tentang</title>
		<link rel="alternate" type="text/html" href="https://data.mippedia.org/index.php?title=Mippedia_Data:Tentang&amp;diff=943"/>
		<updated>2026-07-12T20:38:53Z</updated>

		<summary type="html">&lt;p&gt;Admin: Admin memindahkan halaman Mippedia Data:Tentang ke Mippedia Data:Perihal&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#ALIH [[Mippedia Data:Perihal]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://data.mippedia.org/index.php?title=Mippedia_Data:Perihal&amp;diff=942</id>
		<title>Mippedia Data:Perihal</title>
		<link rel="alternate" type="text/html" href="https://data.mippedia.org/index.php?title=Mippedia_Data:Perihal&amp;diff=942"/>
		<updated>2026-07-12T20:38:53Z</updated>

		<summary type="html">&lt;p&gt;Admin: Admin memindahkan halaman Mippedia Data:Tentang ke Mippedia Data:Perihal&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Hatnote|Halaman ini merupakan sebuah halaman yang berisi tentang pengenalan yang menjelaskan tentang apa itu [[Mippedia Data]], Untuk halaman utama nya, lihat [[Halaman Utama]].}}&lt;br /&gt;
&#039;&#039;&#039;Mippedia Data&#039;&#039;&#039; adalah sub - proyek infrastruktur inti dari ekosistem [[Mippedia]] yang berfungsi sebagai pusat penyimpanan, pengelolaan, dan standarisasi data terstruktur. Mippedia Data di luncurkan pada 15 Januari 2026 oleh [[Komunitas Mippedia|Mippedia Community]] &lt;br /&gt;
&lt;br /&gt;
Mippedia Data bukan tempat menulis sebuah artikel ensiklopedia seperti [[Mippedia bahasa Indonesia]], [[Mippedia bahasa Inggris]] dan [[Mippedia bahasa Indonesia ringkas]], Mippedia Data berfokus pada metadata, dan keterhubungan antar entitas data yang di gunakan oleh seluruh proyek ensiklopedia di bawah naungan Mippedia Community.&lt;br /&gt;
&lt;br /&gt;
== Fungsi Utama ==&lt;br /&gt;
Mippedia Data menjalankan peran krusial dalam ekosistem informasi digital kami:&lt;br /&gt;
&lt;br /&gt;
=== 1. Standarisasi Metadata ===&lt;br /&gt;
Setiap entri dalam Mippedia Data—baik itu musisi, album, instrumen, hingga benda langit—disimpan menggunakan skema data yang konsisten. Hal ini memastikan bahwa atribut seperti &amp;quot;Tahun Rilis&amp;quot;, &amp;quot;Koordinat Lokasi&amp;quot;, atau &amp;quot;Massa Planet&amp;quot; memiliki format yang seragam dan valid secara teknis.&lt;br /&gt;
&lt;br /&gt;
=== 2. Hub Database Terpusat ===&lt;br /&gt;
Mippedia Data bertindak sebagai satu sumber kebenaran (Single Source of Truth). Dengan menggunakan teknologi &#039;&#039;&#039;Data base&#039;&#039;&#039;, data yang diinput di sini dapat dipanggil kembali ke berbagai halaman aplikasi atau situs cabang dalam jaringan Mippedia tanpa perlu menulis ulang informasi secara manual.&lt;br /&gt;
&lt;br /&gt;
=== 3. Optimasi Query &amp;amp; Analisis ===&lt;br /&gt;
Melalui sistem database yang terstruktur, pengguna dan pengembang dapat melakukan pencarian kompleks (query), seperti:&lt;br /&gt;
* Menampilkan semua musisi dengan genre &amp;quot;Pop India&amp;quot; yang rilis di tahun 2025.&lt;br /&gt;
* Memetakan lokasi bangunan ikonik berdasarkan koordinat geografis.&lt;br /&gt;
* Mengklasifikasikan instrumen musik berdasarkan bahan utama dan asal wilayah.&lt;br /&gt;
&lt;br /&gt;
== Arsitektur &amp;amp; Teknologi ==&lt;br /&gt;
Mippedia Data dibangun dengan fokus pada performa tinggi dan skalabilitas:&lt;br /&gt;
* &#039;&#039;&#039;Semantic Storage:&#039;&#039;&#039; Mengoptimalkan tabel SQL untuk query yang cepat dan efisien.&lt;br /&gt;
* &#039;&#039;&#039;Formulir Terpadu:&#039;&#039;&#039; Memfasilitasi input data yang akurat melalui antarmuka formulir yang telah ditentukan.&lt;br /&gt;
* &#039;&#039;&#039;Global Distribution:&#039;&#039;&#039; Data disinkronisasikan melalui infrastruktur CDN untuk memastikan ketersediaan data di seluruh titik akses global.&lt;br /&gt;
&lt;br /&gt;
== Tata Kelola Data ==&lt;br /&gt;
Seluruh data yang tersimpan di Mippedia Data dikelola secara profesional oleh &#039;&#039;&#039;Mippedia Community&#039;&#039;&#039;. Kami memastikan setiap data memiliki atribusi yang jelas dan menjaga integritas informasi sebagai aset digital jangka panjang.&lt;br /&gt;
[[Kategori:Mippedia Data]]&lt;br /&gt;
[[Kategori:Dokumentasi Teknis]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://data.mippedia.org/index.php?title=Mippedia_Data:Perihal&amp;diff=941</id>
		<title>Mippedia Data:Perihal</title>
		<link rel="alternate" type="text/html" href="https://data.mippedia.org/index.php?title=Mippedia_Data:Perihal&amp;diff=941"/>
		<updated>2026-06-10T10:29:51Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* Arsitektur &amp;amp; Teknologi */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Hatnote|Halaman ini merupakan sebuah halaman yang berisi tentang pengenalan yang menjelaskan tentang apa itu [[Mippedia Data]], Untuk halaman utama nya, lihat [[Halaman Utama]].}}&lt;br /&gt;
&#039;&#039;&#039;Mippedia Data&#039;&#039;&#039; adalah sub - proyek infrastruktur inti dari ekosistem [[Mippedia]] yang berfungsi sebagai pusat penyimpanan, pengelolaan, dan standarisasi data terstruktur. Mippedia Data di luncurkan pada 15 Januari 2026 oleh [[Komunitas Mippedia|Mippedia Community]] &lt;br /&gt;
&lt;br /&gt;
Mippedia Data bukan tempat menulis sebuah artikel ensiklopedia seperti [[Mippedia bahasa Indonesia]], [[Mippedia bahasa Inggris]] dan [[Mippedia bahasa Indonesia ringkas]], Mippedia Data berfokus pada metadata, dan keterhubungan antar entitas data yang di gunakan oleh seluruh proyek ensiklopedia di bawah naungan Mippedia Community.&lt;br /&gt;
&lt;br /&gt;
== Fungsi Utama ==&lt;br /&gt;
Mippedia Data menjalankan peran krusial dalam ekosistem informasi digital kami:&lt;br /&gt;
&lt;br /&gt;
=== 1. Standarisasi Metadata ===&lt;br /&gt;
Setiap entri dalam Mippedia Data—baik itu musisi, album, instrumen, hingga benda langit—disimpan menggunakan skema data yang konsisten. Hal ini memastikan bahwa atribut seperti &amp;quot;Tahun Rilis&amp;quot;, &amp;quot;Koordinat Lokasi&amp;quot;, atau &amp;quot;Massa Planet&amp;quot; memiliki format yang seragam dan valid secara teknis.&lt;br /&gt;
&lt;br /&gt;
=== 2. Hub Database Terpusat ===&lt;br /&gt;
Mippedia Data bertindak sebagai satu sumber kebenaran (Single Source of Truth). Dengan menggunakan teknologi &#039;&#039;&#039;Data base&#039;&#039;&#039;, data yang diinput di sini dapat dipanggil kembali ke berbagai halaman aplikasi atau situs cabang dalam jaringan Mippedia tanpa perlu menulis ulang informasi secara manual.&lt;br /&gt;
&lt;br /&gt;
=== 3. Optimasi Query &amp;amp; Analisis ===&lt;br /&gt;
Melalui sistem database yang terstruktur, pengguna dan pengembang dapat melakukan pencarian kompleks (query), seperti:&lt;br /&gt;
* Menampilkan semua musisi dengan genre &amp;quot;Pop India&amp;quot; yang rilis di tahun 2025.&lt;br /&gt;
* Memetakan lokasi bangunan ikonik berdasarkan koordinat geografis.&lt;br /&gt;
* Mengklasifikasikan instrumen musik berdasarkan bahan utama dan asal wilayah.&lt;br /&gt;
&lt;br /&gt;
== Arsitektur &amp;amp; Teknologi ==&lt;br /&gt;
Mippedia Data dibangun dengan fokus pada performa tinggi dan skalabilitas:&lt;br /&gt;
* &#039;&#039;&#039;Semantic Storage:&#039;&#039;&#039; Mengoptimalkan tabel SQL untuk query yang cepat dan efisien.&lt;br /&gt;
* &#039;&#039;&#039;Formulir Terpadu:&#039;&#039;&#039; Memfasilitasi input data yang akurat melalui antarmuka formulir yang telah ditentukan.&lt;br /&gt;
* &#039;&#039;&#039;Global Distribution:&#039;&#039;&#039; Data disinkronisasikan melalui infrastruktur CDN untuk memastikan ketersediaan data di seluruh titik akses global.&lt;br /&gt;
&lt;br /&gt;
== Tata Kelola Data ==&lt;br /&gt;
Seluruh data yang tersimpan di Mippedia Data dikelola secara profesional oleh &#039;&#039;&#039;Mippedia Community&#039;&#039;&#039;. Kami memastikan setiap data memiliki atribusi yang jelas dan menjaga integritas informasi sebagai aset digital jangka panjang.&lt;br /&gt;
[[Kategori:Mippedia Data]]&lt;br /&gt;
[[Kategori:Dokumentasi Teknis]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://data.mippedia.org/index.php?title=Mippedia_Data:Perihal&amp;diff=940</id>
		<title>Mippedia Data:Perihal</title>
		<link rel="alternate" type="text/html" href="https://data.mippedia.org/index.php?title=Mippedia_Data:Perihal&amp;diff=940"/>
		<updated>2026-06-10T10:29:31Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* 2. Hub Database Terpusat */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Hatnote|Halaman ini merupakan sebuah halaman yang berisi tentang pengenalan yang menjelaskan tentang apa itu [[Mippedia Data]], Untuk halaman utama nya, lihat [[Halaman Utama]].}}&lt;br /&gt;
&#039;&#039;&#039;Mippedia Data&#039;&#039;&#039; adalah sub - proyek infrastruktur inti dari ekosistem [[Mippedia]] yang berfungsi sebagai pusat penyimpanan, pengelolaan, dan standarisasi data terstruktur. Mippedia Data di luncurkan pada 15 Januari 2026 oleh [[Komunitas Mippedia|Mippedia Community]] &lt;br /&gt;
&lt;br /&gt;
Mippedia Data bukan tempat menulis sebuah artikel ensiklopedia seperti [[Mippedia bahasa Indonesia]], [[Mippedia bahasa Inggris]] dan [[Mippedia bahasa Indonesia ringkas]], Mippedia Data berfokus pada metadata, dan keterhubungan antar entitas data yang di gunakan oleh seluruh proyek ensiklopedia di bawah naungan Mippedia Community.&lt;br /&gt;
&lt;br /&gt;
== Fungsi Utama ==&lt;br /&gt;
Mippedia Data menjalankan peran krusial dalam ekosistem informasi digital kami:&lt;br /&gt;
&lt;br /&gt;
=== 1. Standarisasi Metadata ===&lt;br /&gt;
Setiap entri dalam Mippedia Data—baik itu musisi, album, instrumen, hingga benda langit—disimpan menggunakan skema data yang konsisten. Hal ini memastikan bahwa atribut seperti &amp;quot;Tahun Rilis&amp;quot;, &amp;quot;Koordinat Lokasi&amp;quot;, atau &amp;quot;Massa Planet&amp;quot; memiliki format yang seragam dan valid secara teknis.&lt;br /&gt;
&lt;br /&gt;
=== 2. Hub Database Terpusat ===&lt;br /&gt;
Mippedia Data bertindak sebagai satu sumber kebenaran (Single Source of Truth). Dengan menggunakan teknologi &#039;&#039;&#039;Data base&#039;&#039;&#039;, data yang diinput di sini dapat dipanggil kembali ke berbagai halaman aplikasi atau situs cabang dalam jaringan Mippedia tanpa perlu menulis ulang informasi secara manual.&lt;br /&gt;
&lt;br /&gt;
=== 3. Optimasi Query &amp;amp; Analisis ===&lt;br /&gt;
Melalui sistem database yang terstruktur, pengguna dan pengembang dapat melakukan pencarian kompleks (query), seperti:&lt;br /&gt;
* Menampilkan semua musisi dengan genre &amp;quot;Pop India&amp;quot; yang rilis di tahun 2025.&lt;br /&gt;
* Memetakan lokasi bangunan ikonik berdasarkan koordinat geografis.&lt;br /&gt;
* Mengklasifikasikan instrumen musik berdasarkan bahan utama dan asal wilayah.&lt;br /&gt;
&lt;br /&gt;
== Arsitektur &amp;amp; Teknologi ==&lt;br /&gt;
Mippedia Data dibangun dengan fokus pada performa tinggi dan skalabilitas:&lt;br /&gt;
* &#039;&#039;&#039;Semantic Storage:&#039;&#039;&#039; Mengoptimalkan tabel SQL untuk query yang cepat dan efisien.&lt;br /&gt;
* &#039;&#039;&#039;Formulir Terpadu:&#039;&#039;&#039; Memfasilitasi input data yang akurat melalui antarmuka formulir yang telah ditentukan (Page Forms).&lt;br /&gt;
* &#039;&#039;&#039;Global Distribution:&#039;&#039;&#039; Data disinkronisasikan melalui infrastruktur CDN untuk memastikan ketersediaan data di seluruh titik akses global.&lt;br /&gt;
&lt;br /&gt;
== Tata Kelola Data ==&lt;br /&gt;
Seluruh data yang tersimpan di Mippedia Data dikelola secara profesional oleh &#039;&#039;&#039;Mippedia Community&#039;&#039;&#039;. Kami memastikan setiap data memiliki atribusi yang jelas dan menjaga integritas informasi sebagai aset digital jangka panjang.&lt;br /&gt;
[[Kategori:Mippedia Data]]&lt;br /&gt;
[[Kategori:Dokumentasi Teknis]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://data.mippedia.org/index.php?title=Mippedia_Data:Perihal&amp;diff=939</id>
		<title>Mippedia Data:Perihal</title>
		<link rel="alternate" type="text/html" href="https://data.mippedia.org/index.php?title=Mippedia_Data:Perihal&amp;diff=939"/>
		<updated>2026-06-10T10:28:25Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Hatnote|Halaman ini merupakan sebuah halaman yang berisi tentang pengenalan yang menjelaskan tentang apa itu [[Mippedia Data]], Untuk halaman utama nya, lihat [[Halaman Utama]].}}&lt;br /&gt;
&#039;&#039;&#039;Mippedia Data&#039;&#039;&#039; adalah sub - proyek infrastruktur inti dari ekosistem [[Mippedia]] yang berfungsi sebagai pusat penyimpanan, pengelolaan, dan standarisasi data terstruktur. Mippedia Data di luncurkan pada 15 Januari 2026 oleh [[Komunitas Mippedia|Mippedia Community]] &lt;br /&gt;
&lt;br /&gt;
Mippedia Data bukan tempat menulis sebuah artikel ensiklopedia seperti [[Mippedia bahasa Indonesia]], [[Mippedia bahasa Inggris]] dan [[Mippedia bahasa Indonesia ringkas]], Mippedia Data berfokus pada metadata, dan keterhubungan antar entitas data yang di gunakan oleh seluruh proyek ensiklopedia di bawah naungan Mippedia Community.&lt;br /&gt;
&lt;br /&gt;
== Fungsi Utama ==&lt;br /&gt;
Mippedia Data menjalankan peran krusial dalam ekosistem informasi digital kami:&lt;br /&gt;
&lt;br /&gt;
=== 1. Standarisasi Metadata ===&lt;br /&gt;
Setiap entri dalam Mippedia Data—baik itu musisi, album, instrumen, hingga benda langit—disimpan menggunakan skema data yang konsisten. Hal ini memastikan bahwa atribut seperti &amp;quot;Tahun Rilis&amp;quot;, &amp;quot;Koordinat Lokasi&amp;quot;, atau &amp;quot;Massa Planet&amp;quot; memiliki format yang seragam dan valid secara teknis.&lt;br /&gt;
&lt;br /&gt;
=== 2. Hub Database Terpusat ===&lt;br /&gt;
Mippedia Data bertindak sebagai satu sumber kebenaran (Single Source of Truth). Dengan menggunakan teknologi &#039;&#039;&#039;Cargo&#039;&#039;&#039;, data yang diinput di sini dapat dipanggil kembali ke berbagai halaman aplikasi atau situs cabang dalam jaringan Mippedia tanpa perlu menulis ulang informasi secara manual.&lt;br /&gt;
&lt;br /&gt;
=== 3. Optimasi Query &amp;amp; Analisis ===&lt;br /&gt;
Melalui sistem database yang terstruktur, pengguna dan pengembang dapat melakukan pencarian kompleks (query), seperti:&lt;br /&gt;
* Menampilkan semua musisi dengan genre &amp;quot;Pop India&amp;quot; yang rilis di tahun 2025.&lt;br /&gt;
* Memetakan lokasi bangunan ikonik berdasarkan koordinat geografis.&lt;br /&gt;
* Mengklasifikasikan instrumen musik berdasarkan bahan utama dan asal wilayah.&lt;br /&gt;
&lt;br /&gt;
== Arsitektur &amp;amp; Teknologi ==&lt;br /&gt;
Mippedia Data dibangun dengan fokus pada performa tinggi dan skalabilitas:&lt;br /&gt;
* &#039;&#039;&#039;Semantic Storage:&#039;&#039;&#039; Mengoptimalkan tabel SQL untuk query yang cepat dan efisien.&lt;br /&gt;
* &#039;&#039;&#039;Formulir Terpadu:&#039;&#039;&#039; Memfasilitasi input data yang akurat melalui antarmuka formulir yang telah ditentukan (Page Forms).&lt;br /&gt;
* &#039;&#039;&#039;Global Distribution:&#039;&#039;&#039; Data disinkronisasikan melalui infrastruktur CDN untuk memastikan ketersediaan data di seluruh titik akses global.&lt;br /&gt;
&lt;br /&gt;
== Tata Kelola Data ==&lt;br /&gt;
Seluruh data yang tersimpan di Mippedia Data dikelola secara profesional oleh &#039;&#039;&#039;Mippedia Community&#039;&#039;&#039;. Kami memastikan setiap data memiliki atribusi yang jelas dan menjaga integritas informasi sebagai aset digital jangka panjang.&lt;br /&gt;
[[Kategori:Mippedia Data]]&lt;br /&gt;
[[Kategori:Dokumentasi Teknis]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://data.mippedia.org/index.php?title=Mippedia_Data:Perihal&amp;diff=938</id>
		<title>Mippedia Data:Perihal</title>
		<link rel="alternate" type="text/html" href="https://data.mippedia.org/index.php?title=Mippedia_Data:Perihal&amp;diff=938"/>
		<updated>2026-06-10T10:28:04Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Hatnote|Halaman ini merupakan sebuah halaman yang berisi tentang pengenalan yang menjelaskan tentang apa itu [[Mippedia Data]], Untuk halaman utama nya, lihat [[Halaman Utama]].}}&lt;br /&gt;
&#039;&#039;&#039;Mippedia Data&#039;&#039;&#039; adalah sub-proyek infrastruktur inti dari ekosistem [[Mippedia]] yang berfungsi sebagai pusat penyimpanan, pengelolaan, dan standarisasi data terstruktur. Mippedia Data di luncurkan pada 15 Januari 2026 oleh [[Komunitas Mippedia|Mippedia Community]] &lt;br /&gt;
&lt;br /&gt;
Mippedia Data bukan tempat menulis sebuah artikel ensiklopedia seperti [[Mippedia bahasa Indonesia]], [[Mippedia bahasa Inggris]] dan [[Mippedia bahasa Indonesia ringkas]], Mippedia Data berfokus pada metadata, dan keterhubungan antar entitas data yang di gunakan oleh seluruh proyek ensiklopedia di bawah naungan Mippedia Community.&lt;br /&gt;
&lt;br /&gt;
== Fungsi Utama ==&lt;br /&gt;
Mippedia Data menjalankan peran krusial dalam ekosistem informasi digital kami:&lt;br /&gt;
&lt;br /&gt;
=== 1. Standarisasi Metadata ===&lt;br /&gt;
Setiap entri dalam Mippedia Data—baik itu musisi, album, instrumen, hingga benda langit—disimpan menggunakan skema data yang konsisten. Hal ini memastikan bahwa atribut seperti &amp;quot;Tahun Rilis&amp;quot;, &amp;quot;Koordinat Lokasi&amp;quot;, atau &amp;quot;Massa Planet&amp;quot; memiliki format yang seragam dan valid secara teknis.&lt;br /&gt;
&lt;br /&gt;
=== 2. Hub Database Terpusat ===&lt;br /&gt;
Mippedia Data bertindak sebagai satu sumber kebenaran (Single Source of Truth). Dengan menggunakan teknologi &#039;&#039;&#039;Cargo&#039;&#039;&#039;, data yang diinput di sini dapat dipanggil kembali ke berbagai halaman aplikasi atau situs cabang dalam jaringan Mippedia tanpa perlu menulis ulang informasi secara manual.&lt;br /&gt;
&lt;br /&gt;
=== 3. Optimasi Query &amp;amp; Analisis ===&lt;br /&gt;
Melalui sistem database yang terstruktur, pengguna dan pengembang dapat melakukan pencarian kompleks (query), seperti:&lt;br /&gt;
* Menampilkan semua musisi dengan genre &amp;quot;Pop India&amp;quot; yang rilis di tahun 2025.&lt;br /&gt;
* Memetakan lokasi bangunan ikonik berdasarkan koordinat geografis.&lt;br /&gt;
* Mengklasifikasikan instrumen musik berdasarkan bahan utama dan asal wilayah.&lt;br /&gt;
&lt;br /&gt;
== Arsitektur &amp;amp; Teknologi ==&lt;br /&gt;
Mippedia Data dibangun dengan fokus pada performa tinggi dan skalabilitas:&lt;br /&gt;
* &#039;&#039;&#039;Semantic Storage:&#039;&#039;&#039; Mengoptimalkan tabel SQL untuk query yang cepat dan efisien.&lt;br /&gt;
* &#039;&#039;&#039;Formulir Terpadu:&#039;&#039;&#039; Memfasilitasi input data yang akurat melalui antarmuka formulir yang telah ditentukan (Page Forms).&lt;br /&gt;
* &#039;&#039;&#039;Global Distribution:&#039;&#039;&#039; Data disinkronisasikan melalui infrastruktur CDN untuk memastikan ketersediaan data di seluruh titik akses global.&lt;br /&gt;
&lt;br /&gt;
== Tata Kelola Data ==&lt;br /&gt;
Seluruh data yang tersimpan di Mippedia Data dikelola secara profesional oleh &#039;&#039;&#039;Mippedia Community&#039;&#039;&#039;. Kami memastikan setiap data memiliki atribusi yang jelas dan menjaga integritas informasi sebagai aset digital jangka panjang.&lt;br /&gt;
[[Kategori:Mippedia Data]]&lt;br /&gt;
[[Kategori:Dokumentasi Teknis]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://data.mippedia.org/index.php?title=Mippedia_Data:Perihal&amp;diff=937</id>
		<title>Mippedia Data:Perihal</title>
		<link rel="alternate" type="text/html" href="https://data.mippedia.org/index.php?title=Mippedia_Data:Perihal&amp;diff=937"/>
		<updated>2026-06-10T10:27:38Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Hatnote|Halaman ini merupakan sebuah halaman yang berisi tentang pengenalan yang menjelaskan tentang apa itu [[Mippedia Data]], Untuk halaman utama nya, lihat [[Halaman Utama]].}}&lt;br /&gt;
&#039;&#039;&#039;Mippedia Data&#039;&#039;&#039; adalah sub-proyek infrastruktur inti dari ekosistem [[Mippedia]] yang berfungsi sebagai pusat penyimpanan, pengelolaan, dan standarisasi data terstruktur. Mippedia Data di luncurkan pada 16 Maret 2026 oleh [[Komunitas Mippedia|Mippedia Community]] &lt;br /&gt;
&lt;br /&gt;
Mippedia Data bukan tempat menulis sebuah artikel ensiklopedia seperti [[Mippedia bahasa Indonesia]], [[Mippedia bahasa Inggris]] dan [[Mippedia bahasa Indonesia ringkas]], Mippedia Data berfokus pada metadata, dan keterhubungan antar entitas data yang di gunakan oleh seluruh proyek ensiklopedia di bawah naungan Mippedia Community.&lt;br /&gt;
&lt;br /&gt;
== Fungsi Utama ==&lt;br /&gt;
Mippedia Data menjalankan peran krusial dalam ekosistem informasi digital kami:&lt;br /&gt;
&lt;br /&gt;
=== 1. Standarisasi Metadata ===&lt;br /&gt;
Setiap entri dalam Mippedia Data—baik itu musisi, album, instrumen, hingga benda langit—disimpan menggunakan skema data yang konsisten. Hal ini memastikan bahwa atribut seperti &amp;quot;Tahun Rilis&amp;quot;, &amp;quot;Koordinat Lokasi&amp;quot;, atau &amp;quot;Massa Planet&amp;quot; memiliki format yang seragam dan valid secara teknis.&lt;br /&gt;
&lt;br /&gt;
=== 2. Hub Database Terpusat ===&lt;br /&gt;
Mippedia Data bertindak sebagai satu sumber kebenaran (Single Source of Truth). Dengan menggunakan teknologi &#039;&#039;&#039;Cargo&#039;&#039;&#039;, data yang diinput di sini dapat dipanggil kembali ke berbagai halaman aplikasi atau situs cabang dalam jaringan Mippedia tanpa perlu menulis ulang informasi secara manual.&lt;br /&gt;
&lt;br /&gt;
=== 3. Optimasi Query &amp;amp; Analisis ===&lt;br /&gt;
Melalui sistem database yang terstruktur, pengguna dan pengembang dapat melakukan pencarian kompleks (query), seperti:&lt;br /&gt;
* Menampilkan semua musisi dengan genre &amp;quot;Pop India&amp;quot; yang rilis di tahun 2025.&lt;br /&gt;
* Memetakan lokasi bangunan ikonik berdasarkan koordinat geografis.&lt;br /&gt;
* Mengklasifikasikan instrumen musik berdasarkan bahan utama dan asal wilayah.&lt;br /&gt;
&lt;br /&gt;
== Arsitektur &amp;amp; Teknologi ==&lt;br /&gt;
Mippedia Data dibangun dengan fokus pada performa tinggi dan skalabilitas:&lt;br /&gt;
* &#039;&#039;&#039;Semantic Storage:&#039;&#039;&#039; Mengoptimalkan tabel SQL untuk query yang cepat dan efisien.&lt;br /&gt;
* &#039;&#039;&#039;Formulir Terpadu:&#039;&#039;&#039; Memfasilitasi input data yang akurat melalui antarmuka formulir yang telah ditentukan (Page Forms).&lt;br /&gt;
* &#039;&#039;&#039;Global Distribution:&#039;&#039;&#039; Data disinkronisasikan melalui infrastruktur CDN untuk memastikan ketersediaan data di seluruh titik akses global.&lt;br /&gt;
&lt;br /&gt;
== Tata Kelola Data ==&lt;br /&gt;
Seluruh data yang tersimpan di Mippedia Data dikelola secara profesional oleh &#039;&#039;&#039;Mippedia Community&#039;&#039;&#039;. Kami memastikan setiap data memiliki atribusi yang jelas dan menjaga integritas informasi sebagai aset digital jangka panjang.&lt;br /&gt;
[[Kategori:Mippedia Data]]&lt;br /&gt;
[[Kategori:Dokumentasi Teknis]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://data.mippedia.org/index.php?title=Mippedia_Data:Perihal&amp;diff=934</id>
		<title>Mippedia Data:Perihal</title>
		<link rel="alternate" type="text/html" href="https://data.mippedia.org/index.php?title=Mippedia_Data:Perihal&amp;diff=934"/>
		<updated>2026-06-10T10:22:53Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Hatnote|Halaman ini merupakan sebuah halaman yang berisi tentang pengenalan yang menjelaskan tentang apa itu [[Mippedia Data]], Untuk halaman utama nya, lihat [[Halaman Utama]].}}&lt;br /&gt;
&#039;&#039;&#039;Mippedia Data&#039;&#039;&#039; adalah sub-proyek infrastruktur inti dari ekosistem [[Mippedia]] yang berfungsi sebagai pusat penyimpanan, pengelolaan, dan standarisasi data terstruktur (Structured Data). Berbeda dengan wiki artikel naratif, Mippedia Data berfokus pada presisi informasi, metadata, dan keterhubungan antar entitas data.&lt;br /&gt;
&lt;br /&gt;
Platform ini merupakan tulang punggung teknis yang memungkinkan informasi di seluruh jaringan Mippedia (Indonesia, English, dan Ringkas) dapat diakses, difilter, dan ditampilkan secara dinamis.&lt;br /&gt;
&lt;br /&gt;
== Fungsi Utama ==&lt;br /&gt;
Mippedia Data menjalankan peran krusial dalam ekosistem informasi digital kami:&lt;br /&gt;
&lt;br /&gt;
=== 1. Standarisasi Metadata ===&lt;br /&gt;
Setiap entri dalam Mippedia Data—baik itu musisi, album, instrumen, hingga benda langit—disimpan menggunakan skema data yang konsisten. Hal ini memastikan bahwa atribut seperti &amp;quot;Tahun Rilis&amp;quot;, &amp;quot;Koordinat Lokasi&amp;quot;, atau &amp;quot;Massa Planet&amp;quot; memiliki format yang seragam dan valid secara teknis.&lt;br /&gt;
&lt;br /&gt;
=== 2. Hub Database Terpusat ===&lt;br /&gt;
Mippedia Data bertindak sebagai satu sumber kebenaran (Single Source of Truth). Dengan menggunakan teknologi &#039;&#039;&#039;Cargo&#039;&#039;&#039;, data yang diinput di sini dapat dipanggil kembali ke berbagai halaman aplikasi atau situs cabang dalam jaringan Mippedia tanpa perlu menulis ulang informasi secara manual.&lt;br /&gt;
&lt;br /&gt;
=== 3. Optimasi Query &amp;amp; Analisis ===&lt;br /&gt;
Melalui sistem database yang terstruktur, pengguna dan pengembang dapat melakukan pencarian kompleks (query), seperti:&lt;br /&gt;
* Menampilkan semua musisi dengan genre &amp;quot;Pop India&amp;quot; yang rilis di tahun 2025.&lt;br /&gt;
* Memetakan lokasi bangunan ikonik berdasarkan koordinat geografis.&lt;br /&gt;
* Mengklasifikasikan instrumen musik berdasarkan bahan utama dan asal wilayah.&lt;br /&gt;
&lt;br /&gt;
== Arsitektur &amp;amp; Teknologi ==&lt;br /&gt;
Mippedia Data dibangun dengan fokus pada performa tinggi dan skalabilitas:&lt;br /&gt;
* &#039;&#039;&#039;Semantic Storage:&#039;&#039;&#039; Mengoptimalkan tabel SQL untuk query yang cepat dan efisien.&lt;br /&gt;
* &#039;&#039;&#039;Formulir Terpadu:&#039;&#039;&#039; Memfasilitasi input data yang akurat melalui antarmuka formulir yang telah ditentukan (Page Forms).&lt;br /&gt;
* &#039;&#039;&#039;Global Distribution:&#039;&#039;&#039; Data disinkronisasikan melalui infrastruktur CDN untuk memastikan ketersediaan data di seluruh titik akses global.&lt;br /&gt;
&lt;br /&gt;
== Tata Kelola Data ==&lt;br /&gt;
Seluruh data yang tersimpan di Mippedia Data dikelola secara profesional oleh &#039;&#039;&#039;Mippedia Community&#039;&#039;&#039;. Kami memastikan setiap data memiliki atribusi yang jelas dan menjaga integritas informasi sebagai aset digital jangka panjang.&lt;br /&gt;
[[Kategori:Mippedia Data]]&lt;br /&gt;
[[Kategori:Dokumentasi Teknis]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://data.mippedia.org/index.php?title=Templat:Hatnote&amp;diff=933</id>
		<title>Templat:Hatnote</title>
		<link rel="alternate" type="text/html" href="https://data.mippedia.org/index.php?title=Templat:Hatnote&amp;diff=933"/>
		<updated>2026-06-10T10:20:32Z</updated>

		<summary type="html">&lt;p&gt;Admin: ←Membuat halaman berisi &amp;#039;&amp;lt;includeonly&amp;gt;&amp;lt;div style=&amp;quot;   border:1px solid #f9f9f9;   background:#f9f9f9;   padding:0.4em;   margin:0.1em auto 1em auto;   max-width:100%;   box-sizing:border-box;   color:#54595d; &amp;quot;&amp;gt; &amp;lt;div style=&amp;quot;padding-left:1.5em;&amp;quot;&amp;gt; &amp;lt;small&amp;gt;&amp;#039;&amp;#039;{{{1}}}&amp;#039;&amp;#039;&amp;lt;/small&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;div style=&amp;quot;&lt;br /&gt;
  border:1px solid #f9f9f9;&lt;br /&gt;
  background:#f9f9f9;&lt;br /&gt;
  padding:0.4em;&lt;br /&gt;
  margin:0.1em auto 1em auto;&lt;br /&gt;
  max-width:100%;&lt;br /&gt;
  box-sizing:border-box;&lt;br /&gt;
  color:#54595d;&lt;br /&gt;
&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding-left:1.5em;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;small&amp;gt;&#039;&#039;{{{1}}}&#039;&#039;&amp;lt;/small&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://data.mippedia.org/index.php?title=Mippedia&amp;diff=932</id>
		<title>Mippedia</title>
		<link rel="alternate" type="text/html" href="https://data.mippedia.org/index.php?title=Mippedia&amp;diff=932"/>
		<updated>2026-06-10T08:42:18Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox website&lt;br /&gt;
| nama           = Mippedia&lt;br /&gt;
| Jenis situs    =[[Ensiklopedia daring]]&lt;br /&gt;
| Pemilik =&lt;br /&gt;
| Dikelola oleh  = [[Komunitas Mippedia|Mippedia Community]]&lt;br /&gt;
| Dibuat oleh   = [[Rumi Haitami]]&lt;br /&gt;
| Tersedia dalam = 2 [[bahasa]]&lt;br /&gt;
| URL            =&lt;br /&gt;
| Pendaftaran = Opsional&lt;br /&gt;
| Bersifat komersial? = Tidak&lt;br /&gt;
| Status = Aktif&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#related: Komunitas Mippedia}}&lt;br /&gt;
{{#related: Mippedia bahasa Indonesia}}&lt;br /&gt;
{{#related: Portal Mippedia}}&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://data.mippedia.org/index.php?title=Rumi_Haitami&amp;diff=931</id>
		<title>Rumi Haitami</title>
		<link rel="alternate" type="text/html" href="https://data.mippedia.org/index.php?title=Rumi_Haitami&amp;diff=931"/>
		<updated>2026-06-10T08:41:43Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox musical artist&lt;br /&gt;
| name = Rumi Haitami &lt;br /&gt;
| birth_name = Muhamad Rumi Haitami Kusuma&lt;br /&gt;
| orther_name = Router Youm&lt;br /&gt;
| birth = 15 April 2003, Lembang, Bandung, Jawa barat, Indonesia&lt;br /&gt;
| place_of_birth = &lt;br /&gt;
| birth_date = 2003-04-15&lt;br /&gt;
| origin = Kota bandung&lt;br /&gt;
| death_date =&lt;br /&gt;
| death_place =&lt;br /&gt;
| nationality = Indonesia&lt;br /&gt;
| genres = [[Musik rock]], [[Pop Indonesia]], [[Pop India]]&lt;br /&gt;
| work = Musisi dan [[penyanyi]]&lt;br /&gt;
| instrument = [[Vokalis]] dan [[gitar]]&lt;br /&gt;
| active_year = 2023&lt;br /&gt;
| label = [[Rumi Haitami ( label rekaman )|Rumi Haitami]]&lt;br /&gt;
| related_artists =&lt;br /&gt;
| karya = [[Diskografi Rumi Haitami|Diskografi]]&lt;br /&gt;
| website = [https://www.rumihaitami.com www.rumihaitami.com]&lt;br /&gt;
| personal_information = yes&lt;br /&gt;
| older_brother = &lt;br /&gt;
| younger_brother = • Firoh Syakillah&amp;lt;br&amp;gt; • Nayla Syakillah&lt;br /&gt;
| partner = [[Nur Khosiyah]]&lt;br /&gt;
| song_excerpt =&lt;br /&gt;
| song =&lt;br /&gt;
| instagram = rumi_haitami&lt;br /&gt;
| tiktok = rumi_haitami&lt;br /&gt;
| youtube = rumi_haitami&lt;br /&gt;
| spotify = 7G4E87t0J7aXU1YokgcqZu&lt;br /&gt;
| apple_music = 1832517902&lt;br /&gt;
| threads = rumi_haitami&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#related: Diskografi Rumi Haitami}}&lt;br /&gt;
{{#related: Rumi Haitami ( label rekaman )}}&lt;br /&gt;
{{#related: Mippedia}}&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://data.mippedia.org/index.php?title=Rumi_Haitami&amp;diff=930</id>
		<title>Rumi Haitami</title>
		<link rel="alternate" type="text/html" href="https://data.mippedia.org/index.php?title=Rumi_Haitami&amp;diff=930"/>
		<updated>2026-06-10T08:41:15Z</updated>

		<summary type="html">&lt;p&gt;Admin: Mippedia Neural Engine V12: NeuralRelated&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox musical artist&lt;br /&gt;
| name = Rumi Haitami &lt;br /&gt;
| birth_name = Muhamad Rumi Haitami Kusuma&lt;br /&gt;
| orther_name = Router Youm&lt;br /&gt;
| birth = 15 April 2003, Lembang, Bandung, Jawa barat, Indonesia&lt;br /&gt;
| place_of_birth = &lt;br /&gt;
| birth_date = 2003-04-15&lt;br /&gt;
| origin = Kota bandung&lt;br /&gt;
| death_date =&lt;br /&gt;
| death_place =&lt;br /&gt;
| nationality = Indonesia&lt;br /&gt;
| genres = [[Musik rock]], [[Pop Indonesia]], [[Pop India]]&lt;br /&gt;
| work = Musisi dan [[penyanyi]]&lt;br /&gt;
| instrument = [[Vokalis]] dan [[gitar]]&lt;br /&gt;
| active_year = 2023&lt;br /&gt;
| label = [[Rumi Haitami ( label rekaman )|Rumi Haitami]]&lt;br /&gt;
| related_artists =&lt;br /&gt;
| karya = [[Diskografi Rumi Haitami|Diskografi]]&lt;br /&gt;
| website = [https://www.rumihaitami.com www.rumihaitami.com]&lt;br /&gt;
| personal_information = yes&lt;br /&gt;
| older_brother = &lt;br /&gt;
| younger_brother = • Firoh Syakillah&amp;lt;br&amp;gt; • Nayla Syakillah&lt;br /&gt;
| partner = [[Nur Khosiyah]]&lt;br /&gt;
| song_excerpt =&lt;br /&gt;
| song =&lt;br /&gt;
| instagram = rumi_haitami&lt;br /&gt;
| tiktok = rumi_haitami&lt;br /&gt;
| youtube = rumi_haitami&lt;br /&gt;
| spotify = 7G4E87t0J7aXU1YokgcqZu&lt;br /&gt;
| apple_music = 1832517902&lt;br /&gt;
| threads = rumi_haitami&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#related: Diskografi Rumi Haitami}}&lt;br /&gt;
{{#related: Rumi Haitami ( label rekaman )}}&lt;br /&gt;
{{#related: Firoh Syakillah}}&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://data.mippedia.org/index.php?title=Rumi_Haitami&amp;diff=929</id>
		<title>Rumi Haitami</title>
		<link rel="alternate" type="text/html" href="https://data.mippedia.org/index.php?title=Rumi_Haitami&amp;diff=929"/>
		<updated>2026-06-10T08:41:07Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox musical artist&lt;br /&gt;
| name = Rumi Haitami &lt;br /&gt;
| birth_name = Muhamad Rumi Haitami Kusuma&lt;br /&gt;
| orther_name = Router Youm&lt;br /&gt;
| birth = 15 April 2003, Lembang, Bandung, Jawa barat, Indonesia&lt;br /&gt;
| place_of_birth = &lt;br /&gt;
| birth_date = 2003-04-15&lt;br /&gt;
| origin = Kota bandung&lt;br /&gt;
| death_date =&lt;br /&gt;
| death_place =&lt;br /&gt;
| nationality = Indonesia&lt;br /&gt;
| genres = [[Musik rock]], [[Pop Indonesia]], [[Pop India]]&lt;br /&gt;
| work = Musisi dan [[penyanyi]]&lt;br /&gt;
| instrument = [[Vokalis]] dan [[gitar]]&lt;br /&gt;
| active_year = 2023&lt;br /&gt;
| label = [[Rumi Haitami ( label rekaman )|Rumi Haitami]]&lt;br /&gt;
| related_artists =&lt;br /&gt;
| karya = [[Diskografi Rumi Haitami|Diskografi]]&lt;br /&gt;
| website = [https://www.rumihaitami.com www.rumihaitami.com]&lt;br /&gt;
| personal_information = yes&lt;br /&gt;
| older_brother = &lt;br /&gt;
| younger_brother = • [[Firoh Syakillah]]&amp;lt;br&amp;gt; • [[Nayla Syakillah]]&lt;br /&gt;
| partner = [[Nur Khosiyah]]&lt;br /&gt;
| song_excerpt =&lt;br /&gt;
| song =&lt;br /&gt;
| instagram = rumi_haitami&lt;br /&gt;
| tiktok = rumi_haitami&lt;br /&gt;
| youtube = rumi_haitami&lt;br /&gt;
| spotify = 7G4E87t0J7aXU1YokgcqZu&lt;br /&gt;
| apple_music = 1832517902&lt;br /&gt;
| threads = rumi_haitami&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#related: Diskografi Rumi Haitami}}&lt;br /&gt;
{{#related: Rumi Haitami ( label rekaman )}}&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://data.mippedia.org/index.php?title=Templat:Infobox_umum&amp;diff=928</id>
		<title>Templat:Infobox umum</title>
		<link rel="alternate" type="text/html" href="https://data.mippedia.org/index.php?title=Templat:Infobox_umum&amp;diff=928"/>
		<updated>2026-06-10T08:37:58Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{SHORTDESC:Metadata entitas repositori}}&amp;lt;table class=&amp;quot;infobox&amp;quot;&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
{{#if: {{{nama|}}}&lt;br /&gt;
| &amp;lt;caption class=&amp;quot;infobox-title&amp;quot; style=&amp;quot;font-size: 65%;&amp;quot;&amp;gt;{{{nama}}}&amp;lt;/caption&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td colspan=&amp;quot;2&amp;quot; style=&amp;quot;padding: 0 10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;mip-desc-section&amp;quot; style=&amp;quot;padding: 10px 0; margin-top: 5px; border: none !important; display: none;&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div style=&amp;quot;font-weight: bold; color: #333; margin-bottom: 8px;&amp;quot;&amp;gt;Ringkasan :&amp;lt;/div&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    &amp;lt;div id=&amp;quot;mip-auto-description&amp;quot; style=&amp;quot;color: #4d5156; line-height: 1.6; font-size: 0.95em; text-align: left;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    &amp;lt;div id=&amp;quot;mip-source-info&amp;quot; style=&amp;quot;margin-top: 10px;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;div id=&amp;quot;mip-project-portal&amp;quot; style=&amp;quot;margin-top: 15px; border-top: 1px solid #eee; padding-top: 10px; display: none;&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;div style=&amp;quot;font-size: 0.85em; color: #999; margin-bottom: 5px;&amp;quot;&amp;gt;Lihat topik ini di :&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div id=&amp;quot;mip-portal-links&amp;quot; style=&amp;quot;font-size: 0.85em;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{:{{FULLPAGENAME}}/doc}}&lt;br /&gt;
[[Kategori:Templat Infobox]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://data.mippedia.org/index.php?title=Templat:Infobox_website&amp;diff=927</id>
		<title>Templat:Infobox website</title>
		<link rel="alternate" type="text/html" href="https://data.mippedia.org/index.php?title=Templat:Infobox_website&amp;diff=927"/>
		<updated>2026-06-10T08:22:33Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{SHORTDESC:Metadata entitas repositori}}&amp;lt;table class=&amp;quot;infobox&amp;quot;&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
{{#if: {{{nama|}}}&lt;br /&gt;
| &amp;lt;caption class=&amp;quot;infobox-title&amp;quot; style=&amp;quot;font-size: 65%;&amp;quot;&amp;gt;{{{nama}}}&amp;lt;/caption&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{logo|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align: center; padding: 10px;&amp;quot;&amp;gt; &lt;br /&gt;
      [[File:{{{logo}}}|250px|center|alt={{{logo_caption|}}}]]&lt;br /&gt;
      {{#if: {{{logo_caption|}}}&lt;br /&gt;
      | &amp;lt;div style=&amp;quot;font-size: 85%; line-height: 1.5em; padding-top: 5px;&amp;quot;&amp;gt;{{{logo_caption}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
      }}&lt;br /&gt;
    &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td colspan=&amp;quot;2&amp;quot; style=&amp;quot;padding: 0 10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;mip-desc-section&amp;quot; style=&amp;quot;padding: 10px 0; margin-top: 5px; border: none !important; display: none;&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div style=&amp;quot;font-weight: bold; color: #333; margin-bottom: 8px;&amp;quot;&amp;gt;Ringkasan :&amp;lt;/div&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    &amp;lt;div id=&amp;quot;mip-auto-description&amp;quot; style=&amp;quot;color: #4d5156; line-height: 1.6; font-size: 0.95em; text-align: left;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    &amp;lt;div id=&amp;quot;mip-source-info&amp;quot; style=&amp;quot;margin-top: 10px;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;div id=&amp;quot;mip-project-portal&amp;quot; style=&amp;quot;margin-top: 15px; border-top: 1px solid #eee; padding-top: 10px; display: none;&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;div style=&amp;quot;font-size: 0.85em; color: #999; margin-bottom: 5px;&amp;quot;&amp;gt;Lihat topik ini di :&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div id=&amp;quot;mip-portal-links&amp;quot; style=&amp;quot;font-size: 0.85em;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{Nama asli|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;th class=&amp;quot;infobox-label&amp;quot;&amp;gt;Nama asli&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;td class=&amp;quot;infobox-data&amp;quot;&amp;gt;{{{Nama asli}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{Nama latin|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;th class=&amp;quot;infobox-label&amp;quot;&amp;gt;Nama latin&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;td class=&amp;quot;infobox-data&amp;quot;&amp;gt;{{{Nama latin}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{Nama sebelum nya|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;th class=&amp;quot;infobox-label&amp;quot;&amp;gt;Nama sebelum nya&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;td class=&amp;quot;infobox-data&amp;quot;&amp;gt;{{{Nama sebelum nya}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{Nama legal|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;th class=&amp;quot;infobox-label&amp;quot;&amp;gt;Nama legal&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;td class=&amp;quot;infobox-data&amp;quot;&amp;gt;{{{Nama legal}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{Jenis perusahaan|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;th class=&amp;quot;infobox-label&amp;quot;&amp;gt;Jenis perusahaan&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;td class=&amp;quot;infobox-data&amp;quot;&amp;gt;{{{Jenis perusahaan}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{Jenis situs|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;th class=&amp;quot;infobox-label&amp;quot;&amp;gt;Jenis situs&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;td class=&amp;quot;infobox-data&amp;quot;&amp;gt;{{{Jenis situs}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{Tersedia dalam|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;th class=&amp;quot;infobox-label&amp;quot;&amp;gt;Tersedia dalam&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;td class=&amp;quot;infobox-data&amp;quot;&amp;gt;{{{Tersedia dalam}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{Kode emiten|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;th class=&amp;quot;infobox-label&amp;quot;&amp;gt;Kode emiten&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;td class=&amp;quot;infobox-data&amp;quot;&amp;gt;{{{Kode emiten}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{Didirikan|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;th class=&amp;quot;infobox-label&amp;quot;&amp;gt;Didirikan&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;td class=&amp;quot;infobox-data&amp;quot;&amp;gt;{{{Didirikan}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{Pembubaran|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;th class=&amp;quot;infobox-label&amp;quot;&amp;gt;Pembubaran&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;td class=&amp;quot;infobox-data&amp;quot;&amp;gt;{{{Pembubaran}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{Pendahulu|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;th class=&amp;quot;infobox-label&amp;quot;&amp;gt;Pendahulu&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;td class=&amp;quot;infobox-data&amp;quot;&amp;gt;{{{Pendahulu}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{Penerus|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;th class=&amp;quot;infobox-label&amp;quot;&amp;gt;Penerus&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;td class=&amp;quot;infobox-data&amp;quot;&amp;gt;{{{Penerus}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{Kantor pusat|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;th class=&amp;quot;infobox-label&amp;quot;&amp;gt;Kantor pusat&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;td class=&amp;quot;infobox-data&amp;quot;&amp;gt;{{{Kantor pusat}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{Negara asal|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;th class=&amp;quot;infobox-label&amp;quot;&amp;gt;Negara asal&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;td class=&amp;quot;infobox-data&amp;quot;&amp;gt;{{{Negara asal}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{Jumlah lokasi|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;th class=&amp;quot;infobox-label&amp;quot;&amp;gt;Jumlah lokasi&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;td class=&amp;quot;infobox-data&amp;quot;&amp;gt;{{{Jumlah lokasi}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{Wilayah layanan|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;th class=&amp;quot;infobox-label&amp;quot;&amp;gt;Wilayah layanan&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;td class=&amp;quot;infobox-data&amp;quot;&amp;gt;{{{Wilayah layanan}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{Pemilik|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;th class=&amp;quot;infobox-label&amp;quot;&amp;gt;Pemilik&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;td class=&amp;quot;infobox-data&amp;quot;&amp;gt;{{{Pemilik}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{Dibuat oleh|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;th class=&amp;quot;infobox-label&amp;quot;&amp;gt;Dibuat oleh&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;td class=&amp;quot;infobox-data&amp;quot;&amp;gt;{{{Dibuat oleh}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{Dikelola oleh|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;th class=&amp;quot;infobox-label&amp;quot;&amp;gt;Dikelola oleh&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;td class=&amp;quot;infobox-data&amp;quot;&amp;gt;{{{Dikelola oleh}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{Pendiri|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;th class=&amp;quot;infobox-label&amp;quot;&amp;gt;Pendiri&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;td class=&amp;quot;infobox-data&amp;quot;&amp;gt;{{{Pendiri}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{Editor|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;th class=&amp;quot;infobox-label&amp;quot;&amp;gt;Editor&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;td class=&amp;quot;infobox-data&amp;quot;&amp;gt;{{{Editor}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{Ketua|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;th class=&amp;quot;infobox-label&amp;quot;&amp;gt;Ketua&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;td class=&amp;quot;infobox-data&amp;quot;&amp;gt;{{{Ketua}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{Presiden|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;th class=&amp;quot;infobox-label&amp;quot;&amp;gt;Presiden&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;td class=&amp;quot;infobox-data&amp;quot;&amp;gt;{{{Presiden}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{CEO|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;th class=&amp;quot;infobox-label&amp;quot;&amp;gt;CEO&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;td class=&amp;quot;infobox-data&amp;quot;&amp;gt;{{{CEO}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{Direktur pelaksana|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;th class=&amp;quot;infobox-label&amp;quot;&amp;gt;Direktur pelaksana&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;td class=&amp;quot;infobox-data&amp;quot;&amp;gt;{{{Direktur pelaksana}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{Manager umum|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;th class=&amp;quot;infobox-label&amp;quot;&amp;gt;Manager umum&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;td class=&amp;quot;infobox-data&amp;quot;&amp;gt;{{{Manager umum}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{Tokoh kunci|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;th class=&amp;quot;infobox-label&amp;quot;&amp;gt;Tokoh kunci&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;td class=&amp;quot;infobox-data&amp;quot;&amp;gt;{{{Tokoh kunci}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{Industri|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;th class=&amp;quot;infobox-label&amp;quot;&amp;gt;Industri&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;td class=&amp;quot;infobox-data&amp;quot;&amp;gt;{{{Industri}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{Produk|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;th class=&amp;quot;infobox-label&amp;quot;&amp;gt;Produk&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;td class=&amp;quot;infobox-data&amp;quot;&amp;gt;{{{Produk}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{Layanan|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;th class=&amp;quot;infobox-label&amp;quot;&amp;gt;Layanan&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;td class=&amp;quot;infobox-data&amp;quot;&amp;gt;{{{Layanan}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{Pendapatan|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;th class=&amp;quot;infobox-label&amp;quot;&amp;gt;Pendapatan&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;td class=&amp;quot;infobox-data&amp;quot;&amp;gt;{{{Pendapatan}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{Pendapatan operasional|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;th class=&amp;quot;infobox-label&amp;quot;&amp;gt;Pendapatan operasional&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;td class=&amp;quot;infobox-data&amp;quot;&amp;gt;{{{Pendapatan operasional}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{Pendapatan bersih|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;th class=&amp;quot;infobox-label&amp;quot;&amp;gt;Pendapatan bersih&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;td class=&amp;quot;infobox-data&amp;quot;&amp;gt;{{{Pendapatan bersih}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{Jumlah aset|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;th class=&amp;quot;infobox-label&amp;quot;&amp;gt;Jumlah aset&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;td class=&amp;quot;infobox-data&amp;quot;&amp;gt;{{{Jumlah aset}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{Ekuitas total|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;th class=&amp;quot;infobox-label&amp;quot;&amp;gt;Ekuitas total&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;td class=&amp;quot;infobox-data&amp;quot;&amp;gt;{{{Ekuitas total}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{Karyawan|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;th class=&amp;quot;infobox-label&amp;quot;&amp;gt;Karyawan&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;td class=&amp;quot;infobox-data&amp;quot;&amp;gt;{{{Karyawan}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{Induk|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;th class=&amp;quot;infobox-label&amp;quot;&amp;gt;Induk&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;td class=&amp;quot;infobox-data&amp;quot;&amp;gt;{{{Induk}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{Divisi|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;th class=&amp;quot;infobox-label&amp;quot;&amp;gt;Divisi&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;td class=&amp;quot;infobox-data&amp;quot;&amp;gt;{{{Divisi}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{Anak perusahaan|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;th class=&amp;quot;infobox-label&amp;quot;&amp;gt;Anak perusahaan&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;td class=&amp;quot;infobox-data&amp;quot;&amp;gt;{{{Anak perusahaan}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{URL|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;th class=&amp;quot;infobox-label&amp;quot;&amp;gt;URL&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;td class=&amp;quot;infobox-data&amp;quot;&amp;gt;{{{URL}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{Dukungan IPv6|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;th class=&amp;quot;infobox-label&amp;quot;&amp;gt;Dukungan IPv6&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;td class=&amp;quot;infobox-data&amp;quot;&amp;gt;{{{Dukungan IPv6}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{Periklanan|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;th class=&amp;quot;infobox-label&amp;quot;&amp;gt;Periklanan&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;td class=&amp;quot;infobox-data&amp;quot;&amp;gt;{{{Periklanan}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{Bersifat komersial?|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;th class=&amp;quot;infobox-label&amp;quot;&amp;gt;Bersifat komersial?&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;td class=&amp;quot;infobox-data&amp;quot;&amp;gt;{{{Bersifat komersial?}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{Pendaftaran|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;th class=&amp;quot;infobox-label&amp;quot;&amp;gt;Pendaftaran&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;td class=&amp;quot;infobox-data&amp;quot;&amp;gt;{{{Pendaftaran}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{Pengguna terdaftar|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;th class=&amp;quot;infobox-label&amp;quot;&amp;gt;Pengguna terdaftar&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;td class=&amp;quot;infobox-data&amp;quot;&amp;gt;{{{Pengguna terdaftar}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{launched|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th class=&amp;quot;infobox-label&amp;quot;&amp;gt;Diluncurkan&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td class=&amp;quot;infobox-data&amp;quot;&amp;gt;{{#time: j F Y | {{{launched}}} }}&amp;lt;br /&amp;gt;&amp;lt;span style=&amp;quot;font-weight:normal; font-size: 85%;&amp;quot;&amp;gt;({{#expr: {{CURRENTYEAR}} - {{#time: Y | {{{launched}}} }} - ({{#time: md | {{CURRENTTIMESTAMP}} }} &amp;lt; {{#time: md | {{{launched}}} }})}} tahun yang lalu)&amp;lt;/span&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{Status|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;th class=&amp;quot;infobox-label&amp;quot;&amp;gt;Status&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;td class=&amp;quot;infobox-data&amp;quot;&amp;gt;{{{Status}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{Klien asli|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;th class=&amp;quot;infobox-label&amp;quot;&amp;gt;Klien asli&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;td class=&amp;quot;infobox-data&amp;quot;&amp;gt;{{{Klien asli}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{Perangkat lunak|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;th class=&amp;quot;infobox-label&amp;quot;&amp;gt;Perangkat lunak&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;td class=&amp;quot;infobox-data&amp;quot;&amp;gt;{{{Perangkat lunak}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{Lisensi konten|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;th class=&amp;quot;infobox-label&amp;quot;&amp;gt;Lisensi konten&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;td class=&amp;quot;infobox-data&amp;quot;&amp;gt;{{{Lisensi konten}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/table&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{:{{FULLPAGENAME}}/doc}}&lt;br /&gt;
[[Kategori:Templat Infobox]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://data.mippedia.org/index.php?title=Templat:Infobox_person&amp;diff=926</id>
		<title>Templat:Infobox person</title>
		<link rel="alternate" type="text/html" href="https://data.mippedia.org/index.php?title=Templat:Infobox_person&amp;diff=926"/>
		<updated>2026-06-10T08:21:57Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{SHORTDESC:Metadata entitas repositori}}&amp;lt;table class=&amp;quot;infobox&amp;quot;&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
{{#if: {{{nama|}}}&lt;br /&gt;
| &amp;lt;caption class=&amp;quot;infobox-title&amp;quot; style=&amp;quot;font-size: 65%;&amp;quot;&amp;gt;{{{nama}}}&amp;lt;/caption&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{image|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align: center; padding: 10px;&amp;quot;&amp;gt; &lt;br /&gt;
      [[File:{{{image}}}|250px|center|alt={{{image_caption|}}}]]&lt;br /&gt;
      {{#if: {{{image_caption|}}}&lt;br /&gt;
      | &amp;lt;div style=&amp;quot;font-size: 85%; line-height: 1.5em; padding-top: 5px;&amp;quot;&amp;gt;{{{image_caption}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
      }}&lt;br /&gt;
    &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{Informasi latar belakang|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;th colspan=&amp;quot;12&amp;quot; class=&amp;quot;infobox-header&amp;quot;&amp;gt;Informasi latar belakang&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td colspan=&amp;quot;2&amp;quot; style=&amp;quot;padding: 0 10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;mip-desc-section&amp;quot; style=&amp;quot;padding: 10px 0; margin-top: 5px; border: none !important; display: none;&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div style=&amp;quot;font-weight: bold; color: #333; margin-bottom: 8px;&amp;quot;&amp;gt;Ringkasan :&amp;lt;/div&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    &amp;lt;div id=&amp;quot;mip-auto-description&amp;quot; style=&amp;quot;color: #4d5156; line-height: 1.6; font-size: 0.95em; text-align: left;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    &amp;lt;div id=&amp;quot;mip-source-info&amp;quot; style=&amp;quot;margin-top: 10px;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;div id=&amp;quot;mip-project-portal&amp;quot; style=&amp;quot;margin-top: 15px; border-top: 1px solid #eee; padding-top: 10px; display: none;&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;div style=&amp;quot;font-size: 0.85em; color: #999; margin-bottom: 5px;&amp;quot;&amp;gt;Lihat topik ini di :&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div id=&amp;quot;mip-portal-links&amp;quot; style=&amp;quot;font-size: 0.85em;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{Nama lahir|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;th class=&amp;quot;infobox-label&amp;quot;&amp;gt;Nama lahir&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;td class=&amp;quot;infobox-data&amp;quot;&amp;gt;{{{Nama lahir}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{Nama panggilan|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;th class=&amp;quot;infobox-label&amp;quot;&amp;gt;Nama panggilan&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;td class=&amp;quot;infobox-data&amp;quot;&amp;gt;{{{Nama panggilan}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{Nama lain|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;th class=&amp;quot;infobox-label&amp;quot;&amp;gt;Nama lain&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;td class=&amp;quot;infobox-data&amp;quot;&amp;gt;{{{Nama lain}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{Lahir|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;th class=&amp;quot;infobox-label&amp;quot;&amp;gt;Lahir&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;td class=&amp;quot;infobox-data&amp;quot;&amp;gt;{{{Lahir}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{Tempat lahir|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;th class=&amp;quot;infobox-label&amp;quot;&amp;gt;Tempat lahir&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;td class=&amp;quot;infobox-data&amp;quot;&amp;gt;{{{Tempat lahir}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{birth_date|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th class=&amp;quot;infobox-label&amp;quot;&amp;gt;Usia&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td class=&amp;quot;infobox-data&amp;quot;&amp;gt;{{#expr:{{CURRENTYEAR}}-{{#time:Y|{{{birth_date}}}}}-({{#time:md|{{CURRENTTIMESTAMP}}}}&amp;lt;{{#time:md|{{{birth_date}}}}})}} tahun&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{Asal|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;th class=&amp;quot;infobox-label&amp;quot;&amp;gt;Asal&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;td class=&amp;quot;infobox-data&amp;quot;&amp;gt;{{{Asal}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{Tanggal meninggal|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;th class=&amp;quot;infobox-label&amp;quot;&amp;gt;Meninggal&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;td class=&amp;quot;infobox-data&amp;quot;&amp;gt;{{{Tanggal meninggal}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{nationality|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;th class=&amp;quot;infobox-label&amp;quot;&amp;gt;Kebangsaan&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;td class=&amp;quot;infobox-data&amp;quot;&amp;gt;&lt;br /&gt;
    {{#switch: {{lc:{{{nationality}}}}}&lt;br /&gt;
    | afghanistan | af = 🇦🇫 Afghanistan | albania | al = 🇦🇱 Albania | aljazair | dz = 🇩🇿 Aljazair | andorra | ad = 🇦🇩 Andorra | angola | ao = 🇦🇴 Angola | antigua | ag = 🇦🇬 Antigua &amp;amp; Barbuda | argentina | ar = 🇦🇷 Argentina | armenia | am = 🇦🇲 Armenia | australia | au = 🇦🇺 Australia | austria | at = 🇦🇹 Austria | azerbaijan | az = 🇦🇿 Azerbaijan&lt;br /&gt;
    | bahama | bs = 🇧🇸 Bahama | bahrain | bh = 🇧🇭 Bahrain | bangladesh | bd = 🇧🇩 Bangladesh | barbados | bb = 🇧🇧 Barbados | belanda | nl | netherlands = 🇳🇱 Belanda | belarus | by = 🇧🇾 Belarus | belgia | be = 🇧🇪 Belgia | belize | bz = 🇧🇿 Belize | benin | bj = 🇧🇯 Benin | bhutan | bt = 🇧🇹 Bhutan | bolivia | bo = 🇧🇴 Bolivia | bosnia | ba = 🇧🇦 Bosnia &amp;amp; Herzegovina | botswana | bw = 🇧🇼 Botswana | brasil | brazil | br = 🇧🇷 Brasil | britania | uk | gb | inggris = 🇬🇧 Britania Raya | brunei | bn = 🇧🇳 Brunei Darussalam | bulgaria | bg = 🇧🇬 Bulgaria | burkina faso | bf = 🇧🇫 Burkina Faso | burundi | bi = 🇧🇮 Burundi&lt;br /&gt;
    | ceko | cz = 🇨🇿 Ceko | chad | td = 🇹🇩 Chad | chile | cl = 🇨🇱 Chile | cina | tiongkok | cn | china = 🇨🇳 Tiongkok | ciprus | cy = 🇨🇾 Ciprus&lt;br /&gt;
    | denmark | dk = 🇩🇰 Denmark | djibouti | dj = 🇩🇯 Djibouti | dominika | dm = 🇩🇲 Dominika&lt;br /&gt;
    | ekuador | ec = 🇪🇨 Ekuador | el salvador | sv = 🇸🇻 El Salvador | eritrea | er = 🇪🇷 Eritrea | estonia | ee = 🇪🇪 Estonia | etiopia | et = 🇪🇹 Etiopia&lt;br /&gt;
    | fiji | fj = 🇫🇯 Fiji | filipina | ph | phil = 🇵🇭 Filipina | finlandia | fi = 🇫🇮 Finlandia | france | prancis | fr = 🇫🇷 Prancis&lt;br /&gt;
    | gabon | ga = 🇬🇦 Gabon | gambia | gm = 🇬🇲 Gambia | georgia | ge = 🇬🇪 Georgia | ghana | gh = 🇬🇭 Ghana | grenada | gd = 🇬🇩 Grenada | guatemala | gt = 🇬🇹 Guatemala | guinea | gn = 🇬🇮 Guinea | guyana | gy = 🇬🇾 Guyana&lt;br /&gt;
    | haiti | ht = 🇭🇹 Haiti | honduras | hn = 🇭🇭 Honduras | hungaria | hu = 🇭🇺 Hungaria&lt;br /&gt;
    | india | in = 🇮🇳 India | indonesia | id | indo = 🇮🇩 Indonesia | irak | iq = 🇮🇶 Irak | iran | ir = 🇮🇷 Iran | irlandia | ie = 🇮🇪 Irlandia | islandia | is = 🇮🇸 Islandia | israel | il = 🇮🇱 Israel | italia | it = 🇮🇹 Italia&lt;br /&gt;
    | jamaika | jm = 🇯🇲 Jamaika | jepang | jp | japan = 🇯🇵 Jepang | jerman | de | germany = 🇩🇪 Jerman | jordan | jo = 🇯🇴 Yordania&lt;br /&gt;
    | kamboja | kh = 🇰🇭 Kamboja | kamerun | cm = 🇨🇲 Kamerun | kanada | ca | canada = 🇨🇦 Kanada | kazakhstan | kz = 🇰🇿 Kazakhstan | kenya | ke = 🇰🇪 Kenya | kirgizstan | kg = 🇰🇬 Kirgizstan | kiribati | ki = 🇰🇮 Kiribati | kolombia | co = 🇨🇴 Kolombia | komoro | km = 🇰🇲 Komoro | kongo | cg = 🇨🇬 Kongo | korsel | kr | korea selatan = 🇰🇷 Korea Selatan | korut | kp | korea utara = 🇰🇵 Korea Utara | kosta rika | cr = 🇨🇷 Kosta Rika | kroasia | hr = 🇭🇷 Kroasia | kuba | cu = 🇨🇺 Kuba | kuwait | kw = 🇰🇼 Kuwait&lt;br /&gt;
    | laos | la = 🇱🇦 Laos | latvia | lv = 🇱🇻 Latvia | lebanon | lb = 🇱🇧 Lebanon | lesotho | ls = 🇱🇸 Lesotho | liberia | lr = 🇱🇮 Liberia | libya | ly = 🇱🇾 Libya | liechtenstein | li = 🇱🇮 Liechtenstein | lituania | lt = 🇱🇹 Lituania | luksemburg | lu = 🇱🇺 Luksemburg&lt;br /&gt;
    | madagaskar | mg = 🇲🇬 Madagaskar | makau | mo = 🇲🇴 Makau | makedonia | mk = 🇲🇰 Makedonia Utara | maladewa | mv = 🇲🇻 Maladewa | malawi | mw = 🇲🇼 Malawi | malaysia | my | malay = 🇲🇾 Malaysia | mali | ml = 🇲🇲 Mali | malta | mt = 🇲🇹 Malta | maroko | ma = 🇲🇦 Maroko | mauritius | mu = 🇲🇺 Mauritius | meksiko | mx = 🇲🇽 Meksiko | mesir | eg | egypt = 🇪🇬 Mesir | mikronesia | fm = 🇫🇲 Mikronesia | moldova | md = 🇲🇩 Moldova | monako | mc = 🇲🇨 Monako | mongolia | mn = 🇲🇳 Mongolia | montenegro | me = 🇲🇪 Montenegro | mozambik | mz = 🇲🇿 Mozambik | myanmar | mm = 🇲🇲 Myanmar&lt;br /&gt;
    | namibia | na = 🇳🇦 Namibia | nauru | nr = 🇳🇷 Nauru | nepal | np = 🇳🇵 Nepal | niger | ne = 🇳🇪 Niger | nigeria | ng = 🇳🇬 Nigeria | nikaragua | ni = 🇳🇮 Nikaragua | norwegia | no = 🇳🇴 Norwegia&lt;br /&gt;
    | oman | om = 🇴🇲 Oman&lt;br /&gt;
    | pakistan | pk = 🇵🇰 Pakistan | palau | pw = 🇵🇼 Palau | palestina | ps = 🇵🇸 Palestina | panama | pa = 🇵🇦 Panama | papua nugini | pg = 🇵🇬 Papua Nugini | paraguay | py = 🇵🇾 Paraguay | peru | pe = 🇵🇪 Peru | polandia | pl = 🇵🇱 Polandia | portugal | pt = 🇵🇹 Portugal&lt;br /&gt;
    | qatar | qa = 🇶🇦 Qatar&lt;br /&gt;
    | romania | ro = 🇷🇴 Romania | rusia | ru = 🇷🇺 Rusia | rwanda | rw = 🇷🇼 Rwanda&lt;br /&gt;
    | saint kitts | kn = 🇰🇳 Saint Kitts &amp;amp; Nevis | samoa | ws = 🇼🇸 Samoa | san marino | sm = 🇸🇲 San Marino | selandia baru | nz = 🇳🇿 Selandia Baru | senegal | sn = 🇸🇳 Senegal | serbia | rs = 🇷🇸 Serbia | seychelles | sc = 🇸🇨 Seychelles | sierra leone | sl = 🇸🇱 Sierra Leone | singapura | sg = 🇸🇬 Singapura | siprus | cy = 🇨🇾 Ciprus | slovenia | si = 🇸🇮 Slovenia | somalia | so = 🇸🇴 Somalia | spanyol | es = 🇪🇸 Spanyol | sri lanka | lk = 🇱🇰 Sri Lanka | sudan | sd = 🇸🇩 Sudan | suriah | sy = 🇸🇾 Suriah | suriname | sr = 🇸🇷 Suriname | swedia | se = 🇸🇪 Swedia | swiss | ch = 🇨🇭 Swiss&lt;br /&gt;
    | taiwan | tw = 🇹🇼 Taiwan | tajikistan | tj = 🇹🇯 Tajikistan | tanjung verde | cv = 🇨🇻 Tanjung Verde | tanzania | tz = 🇹🇿 Tanzania | thailand | th = 🇹🇭 Thailand | timor leste | tl = 🇹🇱 Timor Leste | togo | tg = 🇹🇬 Togo | tonga | to = 🇹🇴 Tonga | tunisia | tn = 🇹🇳 Tunisia | turki | tr = 🇹🇷 Turki | turkmenistan | tm = 🇹🇲 Turkmenistan&lt;br /&gt;
    | uganda | ug = 🇺🇬 Uganda | ukraina | ua = 🇺🇦 Ukraina | uea | uae | emirate = 🇦🇪 Uni Emirat Arab | uruguay | uy = 🇺🇾 Uruguay | usa | us | amerika = 🇺🇸 Amerika Serikat | uzbekistan | uz = 🇺🇿 Uzbekistan&lt;br /&gt;
    | vanuatu | vu = 🇻🇺 Vanuatu | vatikan | va = 🇻🇦 Vatikan | venezuela | ve = 🇻🇪 Venezuela | vietnam | vn = 🇻🇳 Vietnam&lt;br /&gt;
    | yaman | ye = 🇾🇪 Yaman | yunani | gr = 🇬🇷 Yunani&lt;br /&gt;
    | zambia | zm = 🇿🇦 Zambia | zimbabwe | zw = 🇿🇼 Zimbabwe&lt;br /&gt;
    | #default = {{{negara}}}&lt;br /&gt;
    }}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{Pekerjaan|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;th class=&amp;quot;infobox-label&amp;quot;&amp;gt;Pekerjaan&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;td class=&amp;quot;infobox-data&amp;quot;&amp;gt;{{{Pekerjaan}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{Di kenal atas|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;th class=&amp;quot;infobox-label&amp;quot;&amp;gt;Di kenal atas&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;td class=&amp;quot;infobox-data&amp;quot;&amp;gt;{{{Di kenal atas}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{Karya terkenal|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;th class=&amp;quot;infobox-label&amp;quot;&amp;gt;Karya terkenal&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;td class=&amp;quot;infobox-data&amp;quot;&amp;gt;{{{Karya terkenal}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{Tahun aktif|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;th class=&amp;quot;infobox-label&amp;quot;&amp;gt;Tahun aktif&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;td class=&amp;quot;infobox-data&amp;quot;&amp;gt;{{{Tahun aktif}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{Situs web|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;th class=&amp;quot;infobox-label&amp;quot;&amp;gt;Situs web&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;td class=&amp;quot;infobox-data&amp;quot;&amp;gt;{{{Situs web}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{Informasi Pribadi|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;th colspan=&amp;quot;12&amp;quot; class=&amp;quot;infobox-header&amp;quot;&amp;gt;Informasi Pribadi&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{Orang tua|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;th class=&amp;quot;infobox-label&amp;quot;&amp;gt;Orang tua&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;td class=&amp;quot;infobox-data&amp;quot;&amp;gt;{{{Orang tua}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{Anak|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;th class=&amp;quot;infobox-label&amp;quot;&amp;gt;Anak&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;td class=&amp;quot;infobox-data&amp;quot;&amp;gt;{{{Anak}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{Cucu|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;th class=&amp;quot;infobox-label&amp;quot;&amp;gt;Cucu&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;td class=&amp;quot;infobox-data&amp;quot;&amp;gt;{{{Cucu}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{Kakak|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;th class=&amp;quot;infobox-label&amp;quot;&amp;gt;Kakak&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;td class=&amp;quot;infobox-data&amp;quot;&amp;gt;{{{Kakak}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{Adik|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;th class=&amp;quot;infobox-label&amp;quot;&amp;gt;Adik&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;td class=&amp;quot;infobox-data&amp;quot;&amp;gt;{{{Adik}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{Pasangan|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;th class=&amp;quot;infobox-label&amp;quot;&amp;gt;Pasangan&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;td class=&amp;quot;infobox-data&amp;quot;&amp;gt;{{{Pasangan}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/table&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{:{{FULLPAGENAME}}/doc}}&lt;br /&gt;
[[Kategori:Templat Infobox]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://data.mippedia.org/index.php?title=Templat:Infobox_musical_artist&amp;diff=925</id>
		<title>Templat:Infobox musical artist</title>
		<link rel="alternate" type="text/html" href="https://data.mippedia.org/index.php?title=Templat:Infobox_musical_artist&amp;diff=925"/>
		<updated>2026-06-10T08:21:08Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{SHORTDESC:Metadata entitas repositori}}&amp;lt;table class=&amp;quot;infobox&amp;quot; style=&amp;quot;width: 24em; border: 1px solid #a2a9b1; background-color: #f8f9fa; margin-bottom: 0.5em; margin-left: 1em; float: right; clear: right; font-size: 88%; line-height: 1.5em; border-spacing: 2px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{name|}}} |&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;th colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align: center; font-size: 107%; font-weight: bold; padding: 10px; color: #000; background-color: {{#switch: {{lc:{{{work|}}}}}&lt;br /&gt;
      | penyanyi | musisi | band = #fbc2eb&lt;br /&gt;
    }};&amp;quot;&amp;gt;{{{name|}}}&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{image|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align: center; padding: 10px;&amp;quot;&amp;gt; &lt;br /&gt;
      [[File:{{{image}}}|250px|center|alt={{{image_caption|}}}]]&lt;br /&gt;
      {{#if: {{{image_caption|}}}&lt;br /&gt;
      | &amp;lt;div style=&amp;quot;font-size: 85%; line-height: 1.5em; padding-top: 5px;&amp;quot;&amp;gt;{{{image_caption}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
      }}&lt;br /&gt;
    &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{background_information|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;th colspan=&amp;quot;12&amp;quot; class=&amp;quot;infobox-header&amp;quot;&amp;gt;Informasi latar belakang&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td colspan=&amp;quot;2&amp;quot; style=&amp;quot;padding: 0 10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;mip-desc-section&amp;quot; style=&amp;quot;padding: 10px 0; margin-top: 5px; border: none !important; display: none;&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div style=&amp;quot;font-weight: bold; color: #333; margin-bottom: 8px;&amp;quot;&amp;gt;Ringkasan :&amp;lt;/div&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    &amp;lt;div id=&amp;quot;mip-auto-description&amp;quot; style=&amp;quot;color: #4d5156; line-height: 1.6; font-size: 0.95em; text-align: left;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    &amp;lt;div id=&amp;quot;mip-source-info&amp;quot; style=&amp;quot;margin-top: 10px;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;div id=&amp;quot;mip-project-portal&amp;quot; style=&amp;quot;margin-top: 15px; border-top: 1px solid #eee; padding-top: 10px; display: none;&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;div style=&amp;quot;font-size: 0.85em; color: #999; margin-bottom: 5px;&amp;quot;&amp;gt;Lihat topik ini di :&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div id=&amp;quot;mip-portal-links&amp;quot; style=&amp;quot;font-size: 0.85em;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
{{#if: {{{birth_name|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;th class=&amp;quot;infobox-label&amp;quot;&amp;gt;Nama lahir&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;td class=&amp;quot;infobox-data&amp;quot;&amp;gt;{{{birth_name}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{other_name|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;th class=&amp;quot;infobox-label&amp;quot;&amp;gt;Nama lain&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;td class=&amp;quot;infobox-data&amp;quot;&amp;gt;{{{other_name}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{birth|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;th class=&amp;quot;infobox-label&amp;quot;&amp;gt;Lahir&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;td class=&amp;quot;infobox-data&amp;quot;&amp;gt;{{{birth}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{place_of_birth|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;th class=&amp;quot;infobox-label&amp;quot;&amp;gt;Tempat lahir&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;td class=&amp;quot;infobox-data&amp;quot;&amp;gt;{{{place_of_birth}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{birth_date|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th class=&amp;quot;infobox-label&amp;quot;&amp;gt;Usia&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td class=&amp;quot;infobox-data&amp;quot;&amp;gt;{{#expr:{{CURRENTYEAR}}-{{#time:Y|{{{birth_date}}}}}-({{#time:md|{{CURRENTTIMESTAMP}}}}&amp;lt;{{#time:md|{{{birth_date}}}}})}} tahun&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{origin|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;th class=&amp;quot;infobox-label&amp;quot;&amp;gt;Asal&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;td class=&amp;quot;infobox-data&amp;quot;&amp;gt;{{{origin}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{death_date|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th class=&amp;quot;infobox-label&amp;quot;&amp;gt;Meninggal&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td class=&amp;quot;infobox-data&amp;quot;&amp;gt;{{#time: j F Y | {{{death_date}}} }}{{#if: {{{death_place|}}} |, {{{death_place}}} }}&amp;lt;br /&amp;gt;&amp;lt;span style=&amp;quot;font-weight:normal; font-size: 85%;&amp;quot;&amp;gt;({{#expr: {{CURRENTYEAR}} - {{#time: Y | {{{death_date}}} }} - ({{#time: md | {{CURRENTTIMESTAMP}} }} &amp;lt; {{#time: md | {{{death_date}}} }})}} tahun yang lalu)&amp;lt;/span&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{nationality|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;th class=&amp;quot;infobox-label&amp;quot;&amp;gt;Kebangsaan&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;td class=&amp;quot;infobox-data&amp;quot;&amp;gt;&lt;br /&gt;
    {{#switch: {{lc:{{{nationality}}}}}&lt;br /&gt;
    | indonesia | id | indo = 🇮🇩 Indonesia | usa | us | amerika = 🇺🇸 Amerika Serikat | #default = {{{negara}}}&lt;br /&gt;
    }}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{genres|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;th class=&amp;quot;infobox-label&amp;quot;&amp;gt;Genre&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;td class=&amp;quot;infobox-data&amp;quot;&amp;gt;{{{genres}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{karya|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;th class=&amp;quot;infobox-label&amp;quot;&amp;gt;Karya&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;td class=&amp;quot;infobox-data&amp;quot;&amp;gt;{{{karya}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{work|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;th class=&amp;quot;infobox-label&amp;quot;&amp;gt;Pekerjaan&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;td class=&amp;quot;infobox-data&amp;quot;&amp;gt;{{{work}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{instrument|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;th class=&amp;quot;infobox-label&amp;quot;&amp;gt;Instrumen&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;td class=&amp;quot;infobox-data&amp;quot;&amp;gt;{{{instrument}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{active_year|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th class=&amp;quot;infobox-label&amp;quot;&amp;gt;Tahun aktif&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td class=&amp;quot;infobox-data&amp;quot;&amp;gt;{{{active_year}}}–{{#if: {{{active_end|}}} | {{{active_end}}} | {{#if: {{{has_died|}}} | {{#time: Y | {{{has_died}}} }} | sekarang }} }} ({{#expr: ({{#if: {{{active_end|}}} | {{{active_end}}} | {{#if: {{{has_died|}}} | {{#time: Y | {{{has_died}}} }} | {{CURRENTYEAR}} }} }}) - {{{active_year}}} }} tahun)&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{label|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;th class=&amp;quot;infobox-label&amp;quot;&amp;gt;Label&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;td class=&amp;quot;infobox-data&amp;quot;&amp;gt;{{{label}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{related_artists|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;th class=&amp;quot;infobox-label&amp;quot;&amp;gt;Artis terkait&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;td class=&amp;quot;infobox-data&amp;quot;&amp;gt;{{{related_artists}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{website|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;th class=&amp;quot;infobox-label&amp;quot;&amp;gt;Situs web&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;td class=&amp;quot;infobox-data&amp;quot;&amp;gt;{{{website}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{personal_information|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;th colspan=&amp;quot;12&amp;quot; class=&amp;quot;infobox-header&amp;quot;&amp;gt;Informasi Pribadi&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{older_brother|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;th class=&amp;quot;infobox-label&amp;quot;&amp;gt;Kakak&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;td class=&amp;quot;infobox-data&amp;quot;&amp;gt;{{{older_brother}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{younger_brother|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;th class=&amp;quot;infobox-label&amp;quot;&amp;gt;Adik&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;td class=&amp;quot;infobox-data&amp;quot;&amp;gt;{{{younger_brother}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{partner|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;th class=&amp;quot;infobox-label&amp;quot;&amp;gt;Pasangan&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;td class=&amp;quot;infobox-data&amp;quot;&amp;gt;{{{partner}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{song_excerpt|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;th colspan=&amp;quot;12&amp;quot; class=&amp;quot;infobox-header&amp;quot;&amp;gt;Cuplikan Lagu&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{song|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align: center; padding: 70;&amp;quot;&amp;gt; [[File:{{{song}}}]]&lt;br /&gt;
    &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{instagram|}}}{{{twitter|}}}{{{youtube|}}}{{{facebook|}}}{{{tiktok|}}}{{{threads|}}}{{{spotify|}}}{{{apple_music|}}}{{{soundcloud|}}}{{{joox|}}}{{{deezer|}}}{{{imdb|}}}{{{tmdb|}}}{{{rotten_tomatoes|}}}{{{line|}}}{{{telegram|}}}{{{twitch|}}}{{{discord|}}}&lt;br /&gt;
| &amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align: center; padding: 10px; background: #f8f9fa; border-top: 1px solid #a2a9b1;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;plainlinks&amp;quot; style=&amp;quot;display: flex; justify-content: center; flex-wrap: wrap; gap: 5px;&amp;quot;&amp;gt;&lt;br /&gt;
{{#if: {{{instagram|}}} | [https://www.instagram.com/{{{instagram}}} &amp;lt;span style=&amp;quot;display: inline-block; width: 28px; height: 28px; line-height: 26px; border: 1px solid #e1306c; color: #e1306c; border-radius: 4px; background: #fff; font-size: 9px; font-weight: bold; font-family: sans-serif;&amp;quot;&amp;gt;IG&amp;lt;/span&amp;gt;] }}&lt;br /&gt;
{{#if: {{{twitter|}}} | [https://twitter.com/{{{twitter}}} &amp;lt;span style=&amp;quot;display: inline-block; width: 28px; height: 28px; line-height: 26px; border: 1px solid #000; color: #000; border-radius: 4px; background: #fff; font-size: 9px; font-weight: bold; font-family: sans-serif;&amp;quot;&amp;gt;X&amp;lt;/span&amp;gt;] }}&lt;br /&gt;
{{#if: {{{youtube|}}} | [https://www.youtube.com/@{{{youtube}}} &amp;lt;span style=&amp;quot;display: inline-block; width: 28px; height: 28px; line-height: 26px; border: 1px solid #ff0000; color: #ff0000; border-radius: 4px; background: #fff; font-size: 9px; font-weight: bold; font-family: sans-serif;&amp;quot;&amp;gt;YT&amp;lt;/span&amp;gt;] }}&lt;br /&gt;
{{#if: {{{facebook|}}} | [https://www.facebook.com/{{{facebook}}} &amp;lt;span style=&amp;quot;display: inline-block; width: 28px; height: 28px; line-height: 26px; border: 1px solid #1877f2; color: #1877f2; border-radius: 4px; background: #fff; font-size: 9px; font-weight: bold; font-family: sans-serif;&amp;quot;&amp;gt;FB&amp;lt;/span&amp;gt;] }}&lt;br /&gt;
{{#if: {{{tiktok|}}} | [https://www.tiktok.com/@{{{tiktok}}} &amp;lt;span style=&amp;quot;display: inline-block; width: 28px; height: 28px; line-height: 26px; border: 1px solid #000; color: #000; border-radius: 4px; background: #fff; font-size: 9px; font-weight: bold; font-family: sans-serif;&amp;quot;&amp;gt;TK&amp;lt;/span&amp;gt;] }}&lt;br /&gt;
{{#if: {{{threads|}}} | [https://www.threads.net/@{{{threads}}} &amp;lt;span style=&amp;quot;display: inline-block; width: 28px; height: 28px; line-height: 26px; border: 1px solid #000; color: #000; border-radius: 4px; background: #fff; font-size: 9px; font-weight: bold; font-family: sans-serif;&amp;quot;&amp;gt;TH&amp;lt;/span&amp;gt;] }}&lt;br /&gt;
{{#if: {{{spotify|}}} | [https://open.spotify.com/artist/{{{spotify}}} &amp;lt;span style=&amp;quot;display: inline-block; width: 28px; height: 28px; line-height: 26px; border: 1px solid #1DB954; color: #1DB954; border-radius: 4px; background: #fff; font-size: 9px; font-weight: bold; font-family: sans-serif;&amp;quot;&amp;gt;SP&amp;lt;/span&amp;gt;] }}&lt;br /&gt;
{{#if: {{{apple_music|}}} | [https://music.apple.com/artist/{{{apple_music}}} &amp;lt;span style=&amp;quot;display: inline-block; width: 28px; height: 28px; line-height: 26px; border: 1px solid #fa243c; color: #fa243c; border-radius: 4px; background: #fff; font-size: 9px; font-weight: bold; font-family: sans-serif;&amp;quot;&amp;gt;AM&amp;lt;/span&amp;gt;] }}&lt;br /&gt;
{{#if: {{{soundcloud|}}} | [https://soundcloud.com/{{{soundcloud}}} &amp;lt;span style=&amp;quot;display: inline-block; width: 28px; height: 28px; line-height: 26px; border: 1px solid #ff5500; color: #ff5500; border-radius: 4px; background: #fff; font-size: 9px; font-weight: bold; font-family: sans-serif;&amp;quot;&amp;gt;SC&amp;lt;/span&amp;gt;] }}&lt;br /&gt;
{{#if: {{{joox|}}} | [https://www.joox.com/id/artist/{{{joox}}} &amp;lt;span style=&amp;quot;display: inline-block; width: 28px; height: 28px; line-height: 26px; border: 1px solid #00d359; color: #00d359; border-radius: 4px; background: #fff; font-size: 9px; font-weight: bold; font-family: sans-serif;&amp;quot;&amp;gt;JX&amp;lt;/span&amp;gt;] }}&lt;br /&gt;
{{#if: {{{deezer|}}} | [https://www.deezer.com/artist/{{{deezer}}} &amp;lt;span style=&amp;quot;display: inline-block; width: 28px; height: 28px; line-height: 26px; border: 1px solid #ef5464; color: #ef5464; border-radius: 4px; background: #fff; font-size: 9px; font-weight: bold; font-family: sans-serif;&amp;quot;&amp;gt;DZ&amp;lt;/span&amp;gt;] }}&lt;br /&gt;
{{#if: {{{imdb|}}} | [https://www.imdb.com/name/{{{imdb}}} &amp;lt;span style=&amp;quot;display: inline-block; width: 28px; height: 28px; line-height: 26px; border: 1px solid #f5c518; color: #f5c518; border-radius: 4px; background: #fff; font-size: 9px; font-weight: bold; font-family: sans-serif;&amp;quot;&amp;gt;IM&amp;lt;/span&amp;gt;] }}&lt;br /&gt;
{{#if: {{{tmdb|}}} | [https://www.themoviedb.org/person/{{{tmdb}}} &amp;lt;span style=&amp;quot;display: inline-block; width: 28px; height: 28px; line-height: 26px; border: 1px solid #01b4e4; color: #01b4e4; border-radius: 4px; background: #fff; font-size: 9px; font-weight: bold; font-family: sans-serif;&amp;quot;&amp;gt;TM&amp;lt;/span&amp;gt;] }}&lt;br /&gt;
{{#if: {{{rotten_tomatoes|}}} | [https://www.rottentomatoes.com/celebrity/{{{rotten_tomatoes}}} &amp;lt;span style=&amp;quot;display: inline-block; width: 28px; height: 28px; line-height: 26px; border: 1px solid #fa320a; color: #fa320a; border-radius: 4px; background: #fff; font-size: 9px; font-weight: bold; font-family: sans-serif;&amp;quot;&amp;gt;RT&amp;lt;/span&amp;gt;] }}&lt;br /&gt;
{{#if: {{{line|}}} | [https://line.me/ti/p/~{{{line}}} &amp;lt;span style=&amp;quot;display: inline-block; width: 28px; height: 28px; line-height: 26px; border: 1px solid #00b900; color: #00b900; border-radius: 4px; background: #fff; font-size: 9px; font-weight: bold; font-family: sans-serif;&amp;quot;&amp;gt;LN&amp;lt;/span&amp;gt;] }}&lt;br /&gt;
{{#if: {{{telegram|}}} | [https://t.me/{{{telegram}}} &amp;lt;span style=&amp;quot;display: inline-block; width: 28px; height: 28px; line-height: 26px; border: 1px solid #0088cc; color: #0088cc; border-radius: 4px; background: #fff; font-size: 9px; font-weight: bold; font-family: sans-serif;&amp;quot;&amp;gt;TG&amp;lt;/span&amp;gt;] }}&lt;br /&gt;
{{#if: {{{twitch|}}} | [https://www.twitch.tv/{{{twitch}}} &amp;lt;span style=&amp;quot;display: inline-block; width: 28px; height: 28px; line-height: 26px; border: 1px solid #9146ff; color: #9146ff; border-radius: 4px; background: #fff; font-size: 9px; font-weight: bold; font-family: sans-serif;&amp;quot;&amp;gt;TW&amp;lt;/span&amp;gt;] }}&lt;br /&gt;
{{#if: {{{discord|}}} | [https://discord.gg/{{{discord}}} &amp;lt;span style=&amp;quot;display: inline-block; width: 28px; height: 28px; line-height: 26px; border: 1px solid #5865f2; color: #5865f2; border-radius: 4px; background: #fff; font-size: 9px; font-weight: bold; font-family: sans-serif;&amp;quot;&amp;gt;DC&amp;lt;/span&amp;gt;] }}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/table&amp;gt;&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://data.mippedia.org/index.php?title=Templat:Infobox_umum&amp;diff=924</id>
		<title>Templat:Infobox umum</title>
		<link rel="alternate" type="text/html" href="https://data.mippedia.org/index.php?title=Templat:Infobox_umum&amp;diff=924"/>
		<updated>2026-06-09T19:49:19Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{SHORTDESC:Metadata entitas repositori}}&amp;lt;table class=&amp;quot;infobox&amp;quot; style=&amp;quot;width: 24em; border: 1px solid #a2a9b1; background-color: #f8f9fa; margin-bottom: 0.5em; margin-left: 1em; float: right; clear: right; font-size: 88%; line-height: 1.5em; border-spacing: 2px;&amp;quot;&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
{{#if: {{{nama|}}}&lt;br /&gt;
| &amp;lt;caption class=&amp;quot;infobox-title&amp;quot; style=&amp;quot;font-size: 65%;&amp;quot;&amp;gt;{{{nama}}}&amp;lt;/caption&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td colspan=&amp;quot;2&amp;quot; style=&amp;quot;padding: 0 10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;mip-desc-section&amp;quot; style=&amp;quot;padding: 10px 0; margin-top: 5px; border: none !important; display: none;&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div style=&amp;quot;font-weight: bold; color: #333; margin-bottom: 8px;&amp;quot;&amp;gt;Ringkasan :&amp;lt;/div&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    &amp;lt;div id=&amp;quot;mip-auto-description&amp;quot; style=&amp;quot;color: #4d5156; line-height: 1.6; font-size: 0.95em; text-align: left;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    &amp;lt;div id=&amp;quot;mip-source-info&amp;quot; style=&amp;quot;margin-top: 10px;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;div id=&amp;quot;mip-project-portal&amp;quot; style=&amp;quot;margin-top: 15px; border-top: 1px solid #eee; padding-top: 10px; display: none;&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;div style=&amp;quot;font-size: 0.85em; color: #999; margin-bottom: 5px;&amp;quot;&amp;gt;Lihat topik ini di :&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div id=&amp;quot;mip-portal-links&amp;quot; style=&amp;quot;font-size: 0.85em;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{:{{FULLPAGENAME}}/doc}}&lt;br /&gt;
[[Kategori:Templat Infobox]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://data.mippedia.org/index.php?title=Templat:Infobox_umum&amp;diff=923</id>
		<title>Templat:Infobox umum</title>
		<link rel="alternate" type="text/html" href="https://data.mippedia.org/index.php?title=Templat:Infobox_umum&amp;diff=923"/>
		<updated>2026-06-09T19:48:26Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{SHORTDESC:Item data struktur}}&amp;lt;table class=&amp;quot;infobox&amp;quot; style=&amp;quot;width: 24em; border: 1px solid #a2a9b1; background-color: #f8f9fa; margin-bottom: 0.5em; margin-left: 1em; float: right; clear: right; font-size: 88%; line-height: 1.5em; border-spacing: 2px;&amp;quot;&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
{{#if: {{{nama|}}}&lt;br /&gt;
| &amp;lt;caption class=&amp;quot;infobox-title&amp;quot; style=&amp;quot;font-size: 65%;&amp;quot;&amp;gt;{{{nama}}}&amp;lt;/caption&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td colspan=&amp;quot;2&amp;quot; style=&amp;quot;padding: 0 10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;mip-desc-section&amp;quot; style=&amp;quot;padding: 10px 0; margin-top: 5px; border: none !important; display: none;&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div style=&amp;quot;font-weight: bold; color: #333; margin-bottom: 8px;&amp;quot;&amp;gt;Ringkasan :&amp;lt;/div&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    &amp;lt;div id=&amp;quot;mip-auto-description&amp;quot; style=&amp;quot;color: #4d5156; line-height: 1.6; font-size: 0.95em; text-align: left;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    &amp;lt;div id=&amp;quot;mip-source-info&amp;quot; style=&amp;quot;margin-top: 10px;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;div id=&amp;quot;mip-project-portal&amp;quot; style=&amp;quot;margin-top: 15px; border-top: 1px solid #eee; padding-top: 10px; display: none;&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;div style=&amp;quot;font-size: 0.85em; color: #999; margin-bottom: 5px;&amp;quot;&amp;gt;Lihat topik ini di :&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div id=&amp;quot;mip-portal-links&amp;quot; style=&amp;quot;font-size: 0.85em;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{:{{FULLPAGENAME}}/doc}}&lt;br /&gt;
[[Kategori:Templat Infobox]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://data.mippedia.org/index.php?title=Templat:Infobox_umum&amp;diff=922</id>
		<title>Templat:Infobox umum</title>
		<link rel="alternate" type="text/html" href="https://data.mippedia.org/index.php?title=Templat:Infobox_umum&amp;diff=922"/>
		<updated>2026-06-09T19:43:38Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SHORTDESC:Item data struktur}}&amp;lt;includeonly&amp;gt;&amp;lt;table class=&amp;quot;infobox&amp;quot; style=&amp;quot;width: 24em; border: 1px solid #a2a9b1; background-color: #f8f9fa; margin-bottom: 0.5em; margin-left: 1em; float: right; clear: right; font-size: 88%; line-height: 1.5em; border-spacing: 2px;&amp;quot;&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
{{#if: {{{nama|}}}&lt;br /&gt;
| &amp;lt;caption class=&amp;quot;infobox-title&amp;quot; style=&amp;quot;font-size: 65%;&amp;quot;&amp;gt;{{{nama}}}&amp;lt;/caption&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td colspan=&amp;quot;2&amp;quot; style=&amp;quot;padding: 0 10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;mip-desc-section&amp;quot; style=&amp;quot;padding: 10px 0; margin-top: 5px; border: none !important; display: none;&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div style=&amp;quot;font-weight: bold; color: #333; margin-bottom: 8px;&amp;quot;&amp;gt;Ringkasan :&amp;lt;/div&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    &amp;lt;div id=&amp;quot;mip-auto-description&amp;quot; style=&amp;quot;color: #4d5156; line-height: 1.6; font-size: 0.95em; text-align: left;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    &amp;lt;div id=&amp;quot;mip-source-info&amp;quot; style=&amp;quot;margin-top: 10px;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;div id=&amp;quot;mip-project-portal&amp;quot; style=&amp;quot;margin-top: 15px; border-top: 1px solid #eee; padding-top: 10px; display: none;&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;div style=&amp;quot;font-size: 0.85em; color: #999; margin-bottom: 5px;&amp;quot;&amp;gt;Lihat topik ini di :&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div id=&amp;quot;mip-portal-links&amp;quot; style=&amp;quot;font-size: 0.85em;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{:{{FULLPAGENAME}}/doc}}&lt;br /&gt;
[[Kategori:Templat Infobox]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://data.mippedia.org/index.php?title=Templat:Infobox_umum&amp;diff=921</id>
		<title>Templat:Infobox umum</title>
		<link rel="alternate" type="text/html" href="https://data.mippedia.org/index.php?title=Templat:Infobox_umum&amp;diff=921"/>
		<updated>2026-06-09T19:41:57Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Deskripsi}}&amp;lt;includeonly&amp;gt;&amp;lt;table class=&amp;quot;infobox&amp;quot; style=&amp;quot;width: 24em; border: 1px solid #a2a9b1; background-color: #f8f9fa; margin-bottom: 0.5em; margin-left: 1em; float: right; clear: right; font-size: 88%; line-height: 1.5em; border-spacing: 2px;&amp;quot;&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
{{#if: {{{nama|}}}&lt;br /&gt;
| &amp;lt;caption class=&amp;quot;infobox-title&amp;quot; style=&amp;quot;font-size: 65%;&amp;quot;&amp;gt;{{{nama}}}&amp;lt;/caption&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td colspan=&amp;quot;2&amp;quot; style=&amp;quot;padding: 0 10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;mip-desc-section&amp;quot; style=&amp;quot;padding: 10px 0; margin-top: 5px; border: none !important; display: none;&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div style=&amp;quot;font-weight: bold; color: #333; margin-bottom: 8px;&amp;quot;&amp;gt;Ringkasan :&amp;lt;/div&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    &amp;lt;div id=&amp;quot;mip-auto-description&amp;quot; style=&amp;quot;color: #4d5156; line-height: 1.6; font-size: 0.95em; text-align: left;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    &amp;lt;div id=&amp;quot;mip-source-info&amp;quot; style=&amp;quot;margin-top: 10px;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;div id=&amp;quot;mip-project-portal&amp;quot; style=&amp;quot;margin-top: 15px; border-top: 1px solid #eee; padding-top: 10px; display: none;&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;div style=&amp;quot;font-size: 0.85em; color: #999; margin-bottom: 5px;&amp;quot;&amp;gt;Lihat topik ini di :&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div id=&amp;quot;mip-portal-links&amp;quot; style=&amp;quot;font-size: 0.85em;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{:{{FULLPAGENAME}}/doc}}&lt;br /&gt;
[[Kategori:Templat Infobox]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://data.mippedia.org/index.php?title=Templat:Infobox_umum&amp;diff=920</id>
		<title>Templat:Infobox umum</title>
		<link rel="alternate" type="text/html" href="https://data.mippedia.org/index.php?title=Templat:Infobox_umum&amp;diff=920"/>
		<updated>2026-06-09T19:40:02Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{Deskripsi}}&amp;lt;table class=&amp;quot;infobox&amp;quot; style=&amp;quot;width: 24em; border: 1px solid #a2a9b1; background-color: #f8f9fa; margin-bottom: 0.5em; margin-left: 1em; float: right; clear: right; font-size: 88%; line-height: 1.5em; border-spacing: 2px;&amp;quot;&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
{{#if: {{{nama|}}}&lt;br /&gt;
| &amp;lt;caption class=&amp;quot;infobox-title&amp;quot; style=&amp;quot;font-size: 65%;&amp;quot;&amp;gt;{{{nama}}}&amp;lt;/caption&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td colspan=&amp;quot;2&amp;quot; style=&amp;quot;padding: 0 10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;mip-desc-section&amp;quot; style=&amp;quot;padding: 10px 0; margin-top: 5px; border: none !important; display: none;&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div style=&amp;quot;font-weight: bold; color: #333; margin-bottom: 8px;&amp;quot;&amp;gt;Ringkasan :&amp;lt;/div&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    &amp;lt;div id=&amp;quot;mip-auto-description&amp;quot; style=&amp;quot;color: #4d5156; line-height: 1.6; font-size: 0.95em; text-align: left;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    &amp;lt;div id=&amp;quot;mip-source-info&amp;quot; style=&amp;quot;margin-top: 10px;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;div id=&amp;quot;mip-project-portal&amp;quot; style=&amp;quot;margin-top: 15px; border-top: 1px solid #eee; padding-top: 10px; display: none;&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;div style=&amp;quot;font-size: 0.85em; color: #999; margin-bottom: 5px;&amp;quot;&amp;gt;Lihat topik ini di :&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div id=&amp;quot;mip-portal-links&amp;quot; style=&amp;quot;font-size: 0.85em;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{:{{FULLPAGENAME}}/doc}}&lt;br /&gt;
[[Kategori:Templat Infobox]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://data.mippedia.org/index.php?title=Templat:Infobox_umum&amp;diff=917</id>
		<title>Templat:Infobox umum</title>
		<link rel="alternate" type="text/html" href="https://data.mippedia.org/index.php?title=Templat:Infobox_umum&amp;diff=917"/>
		<updated>2026-06-09T19:03:27Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;table class=&amp;quot;infobox&amp;quot; style=&amp;quot;width: 24em; border: 1px solid #a2a9b1; background-color: #f8f9fa; margin-bottom: 0.5em; margin-left: 1em; float: right; clear: right; font-size: 88%; line-height: 1.5em; border-spacing: 2px;&amp;quot;&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
{{#if: {{{nama|}}}&lt;br /&gt;
| &amp;lt;caption class=&amp;quot;infobox-title&amp;quot; style=&amp;quot;font-size: 65%;&amp;quot;&amp;gt;{{{nama}}}&amp;lt;/caption&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td colspan=&amp;quot;2&amp;quot; style=&amp;quot;padding: 0 10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;mip-desc-section&amp;quot; style=&amp;quot;padding: 10px 0; margin-top: 5px; border: none !important; display: none;&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div style=&amp;quot;font-weight: bold; color: #333; margin-bottom: 8px;&amp;quot;&amp;gt;Ringkasan :&amp;lt;/div&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    &amp;lt;div id=&amp;quot;mip-auto-description&amp;quot; style=&amp;quot;color: #4d5156; line-height: 1.6; font-size: 0.95em; text-align: left;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    &amp;lt;div id=&amp;quot;mip-source-info&amp;quot; style=&amp;quot;margin-top: 10px;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;div id=&amp;quot;mip-project-portal&amp;quot; style=&amp;quot;margin-top: 15px; border-top: 1px solid #eee; padding-top: 10px; display: none;&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;div style=&amp;quot;font-size: 0.85em; color: #999; margin-bottom: 5px;&amp;quot;&amp;gt;Lihat topik ini di :&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div id=&amp;quot;mip-portal-links&amp;quot; style=&amp;quot;font-size: 0.85em;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{:{{FULLPAGENAME}}/doc}}&lt;br /&gt;
[[Kategori:Templat Infobox]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://data.mippedia.org/index.php?title=MediaWiki:Common.css&amp;diff=916</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://data.mippedia.org/index.php?title=MediaWiki:Common.css&amp;diff=916"/>
		<updated>2026-06-09T18:55:46Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* --- FIX UKURAN DAN SKALA LOGO (UNTUK SEMUA SKIN) --- */&lt;br /&gt;
&lt;br /&gt;
/* Menargetkan elemen wadah logo */&lt;br /&gt;
#p-logo {&lt;br /&gt;
    /* Memaksa elemen wadah memiliki ukuran standar */&lt;br /&gt;
    width: 135px;&lt;br /&gt;
    height: 135px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Menargetkan elemen link di dalam wadah logo */&lt;br /&gt;
#p-logo a, .mw-wiki-logo {&lt;br /&gt;
    /* Memaksa ukuran area gambar agar sesuai */&lt;br /&gt;
    width: 135px !important;&lt;br /&gt;
    height: 135px !important;&lt;br /&gt;
    &lt;br /&gt;
    /* Memastikan gambar diskala (terutama untuk SVG) */&lt;br /&gt;
    background-size: contain !important;&lt;br /&gt;
    &lt;br /&gt;
    /* Memastikan gambar berada di tengah dan tidak berulang */&lt;br /&gt;
    background-position: center center !important;&lt;br /&gt;
    background-repeat: no-repeat !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- CAPTCHA STYLING ---------- */&lt;br /&gt;
.captcha-code {&lt;br /&gt;
  display: inline-block;&lt;br /&gt;
  padding: 10px 16px;&lt;br /&gt;
  font-size: 1.8em;&lt;br /&gt;
  font-weight: 700;&lt;br /&gt;
  font-family: monospace;&lt;br /&gt;
  border-radius: 10px;&lt;br /&gt;
  letter-spacing: 4px;&lt;br /&gt;
  user-select: none;&lt;br /&gt;
  text-shadow: 1px 1px 2px rgba(0,0,0,0.2);&lt;br /&gt;
  margin: 10px auto;&lt;br /&gt;
  text-align: center;&lt;br /&gt;
  animation: fadeIn 0.4s ease-in-out;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Bikin background captcha punya warna acak */&lt;br /&gt;
.captcha-code {&lt;br /&gt;
  background: linear-gradient(135deg, #f8f8f8, #e8e8e8);&lt;br /&gt;
  border: 1px solid #bbb;&lt;br /&gt;
  color: #2c3e50;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Variasi warna random */&lt;br /&gt;
.captcha-code:nth-child(3n) {&lt;br /&gt;
  background: linear-gradient(135deg, #e3f2fd, #bbdefb);&lt;br /&gt;
  border-color: #90caf9;&lt;br /&gt;
  color: #0d47a1;&lt;br /&gt;
}&lt;br /&gt;
.captcha-code:nth-child(3n+1) {&lt;br /&gt;
  background: linear-gradient(135deg, #f1f8e9, #dcedc8);&lt;br /&gt;
  border-color: #aed581;&lt;br /&gt;
  color: #33691e;&lt;br /&gt;
}&lt;br /&gt;
.captcha-code:nth-child(3n+2) {&lt;br /&gt;
  background: linear-gradient(135deg, #fff3e0, #ffe0b2);&lt;br /&gt;
  border-color: #ffb74d;&lt;br /&gt;
  color: #e65100;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Label agar center di HP */&lt;br /&gt;
.mw-confirmedit-captcha label {&lt;br /&gt;
  display: block;&lt;br /&gt;
  text-align: center;&lt;br /&gt;
  margin: 12px 0;&lt;br /&gt;
  font-size: 1em;&lt;br /&gt;
  font-weight: 500;&lt;br /&gt;
  color: #444;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Responsif untuk seluler */&lt;br /&gt;
@media (max-width: 720px) {&lt;br /&gt;
  .captcha-code { font-size: 2.2em; padding: 12px 18px; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Animasi halus saat muncul */&lt;br /&gt;
@keyframes fadeIn {&lt;br /&gt;
  from { opacity: 0; transform: scale(0.9); }&lt;br /&gt;
  to   { opacity: 1; transform: scale(1); }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* === Hilangkan judul &amp;quot;Halaman Utama&amp;quot; di tampilan MobileFrontend === */&lt;br /&gt;
.page-Halaman_Utama #section_0,&lt;br /&gt;
.page-Halaman_Utama .content-header,&lt;br /&gt;
.page-Halaman_Utama h1.firstHeading,&lt;br /&gt;
.page-Halaman_Utama #firstHeading {&lt;br /&gt;
    display: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Opsional: rapikan jarak setelah header hilang */&lt;br /&gt;
.page-Halaman_Utama .content {&lt;br /&gt;
    margin-top: 0 !important;&lt;br /&gt;
    padding-top: 0.5em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ====== INFOBOX STYLE ====== */&lt;br /&gt;
&lt;br /&gt;
.infobox {&lt;br /&gt;
    border: 1px solid #a2a9b1;&lt;br /&gt;
    border-collapse: collapse;&lt;br /&gt;
    background-color: #f8f9fa;&lt;br /&gt;
    color: #000;&lt;br /&gt;
    margin: 1em 0 1em 1em;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    max-width: 330px; /* biar mobile rapi */&lt;br /&gt;
    float: right;&lt;br /&gt;
    clear: right;&lt;br /&gt;
    font-size: 65%;/* ukuran HP */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* HEADER ATAS (TITLE) */&lt;br /&gt;
/* Warna biru muda + teks rata tengah */&lt;br /&gt;
.infobox-title, .infobox .infobox-above {&lt;br /&gt;
    background: #cedff2;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    font-size: 120%;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    padding: 8px;&lt;br /&gt;
    border-bottom: 1px solid #a2a9b1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ====== GARIS SETIAP BARIS ====== */&lt;br /&gt;
.infobox td, .infobox th {&lt;br /&gt;
    border-top: 1px solid #a2a9b1 !important;&lt;br /&gt;
    padding: 6px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* LABEL KIRI */&lt;br /&gt;
.infobox-label {&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    width: 40%;&lt;br /&gt;
    vertical-align: top;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Data infobox rata tengah */&lt;br /&gt;
.infobox-label {&lt;br /&gt;
    text-align: center !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* DATA KANAN */&lt;br /&gt;
.infobox-data {&lt;br /&gt;
    width: 50%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Data infobox rata tengah */&lt;br /&gt;
.infobox-data {&lt;br /&gt;
    text-align: center !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* BAGIAN HEADING DALAM (seperti “Informasi latar belakang”) */&lt;br /&gt;
.infobox-header, .infobox-subheader {&lt;br /&gt;
    background: #e2e6ea;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    padding: 6px;&lt;br /&gt;
    border-top: 1px solid #a2a9b1;&lt;br /&gt;
    border-bottom: 1px solid #a2a9b1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* GAMBAR */&lt;br /&gt;
.infobox img {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    height: auto;&lt;br /&gt;
    display: block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* MOBILE FIX */&lt;br /&gt;
@media screen and (max-width: 600px) {&lt;br /&gt;
    .infobox {&lt;br /&gt;
        float: none;&lt;br /&gt;
        margin: 0 auto 1em;&lt;br /&gt;
        width: 100%;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ============================================&lt;br /&gt;
   FIX #1 — HEADER BIRU TIDAK RATA TENGAH&lt;br /&gt;
   ============================================ */&lt;br /&gt;
.infobox-title, &lt;br /&gt;
.infobox .infobox-above {&lt;br /&gt;
    text-align: center !important; /* paksa center */&lt;br /&gt;
    font-size: 100% !important;    /* biar besar seperti Wikipedia mobile */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ============================================&lt;br /&gt;
   FIX #2 — INFOBOX TERLALU KECIL DI HP&lt;br /&gt;
   BIKIN LEBARNYA 100% SEPERTI DI WIKIPEDIA MOBILE&lt;br /&gt;
   ============================================ */&lt;br /&gt;
@media screen and (max-width: 600px) {&lt;br /&gt;
    .infobox {&lt;br /&gt;
        width: 100% !important;      /* full width */&lt;br /&gt;
        max-width: 100% !important;  /* hilangin batas 330px */&lt;br /&gt;
        margin: 0 auto 1em !important;&lt;br /&gt;
        float: none !important;      /* biar tidak mengecil ke kanan */&lt;br /&gt;
        font-size: 100% !important;  /* otomatis sesuai layar */&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* gambar jangan mepet kiri-kanan */&lt;br /&gt;
    .infobox img {&lt;br /&gt;
        width: 100% !important;&lt;br /&gt;
        height: auto !important;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ============================================&lt;br /&gt;
   FIX #3 — JARAK ANTAR BORDER TERLALU BESAR&lt;br /&gt;
   ============================================ */&lt;br /&gt;
.infobox td, .infobox th {&lt;br /&gt;
    padding: 8px 10px !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Gaya Tombol Profesional */&lt;br /&gt;
.mw-ui-button {&lt;br /&gt;
    background-color: #007bff;&lt;br /&gt;
    color: white;&lt;br /&gt;
    border-radius: 4px;&lt;br /&gt;
    padding: 6px 12px;&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
}&lt;br /&gt;
.mw-ui-button:hover {&lt;br /&gt;
    background-color: #0056b3;&lt;br /&gt;
    color: white;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#siteSub {&lt;br /&gt;
		display: block;&lt;br /&gt;
	}&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://data.mippedia.org/index.php?title=MediaWiki:Tagline&amp;diff=915</id>
		<title>MediaWiki:Tagline</title>
		<link rel="alternate" type="text/html" href="https://data.mippedia.org/index.php?title=MediaWiki:Tagline&amp;diff=915"/>
		<updated>2026-06-09T18:54:16Z</updated>

		<summary type="html">&lt;p&gt;Admin: ←Membuat halaman berisi &amp;#039;Dari Mippedia Data, basis data terbuka&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Dari Mippedia Data, basis data terbuka&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://data.mippedia.org/index.php?title=MediaWiki:Common.js&amp;diff=914</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://data.mippedia.org/index.php?title=MediaWiki:Common.js&amp;diff=914"/>
		<updated>2026-06-09T18:52:27Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* ==========================================================&lt;br /&gt;
   ⚡ MIPPEDIA SPEED OPTIMIZER - PURE SPEED &amp;amp; STABLE (V1.1)&lt;br /&gt;
   Features: Instant Link Pre-fetching Engine (No Animation/Pure Performance).&lt;br /&gt;
   Optimization: Zero-flicker, scoped lifecycle protection, advanced anti-cache clutter.&lt;br /&gt;
   Target: Built for maximum long-term stability and bulletproof caching.&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
(function() {&lt;br /&gt;
    // Ambil nama host secara dinamis (contoh: data.mippedia.org)&lt;br /&gt;
    var currentHost = window.location.hostname;&lt;br /&gt;
&lt;br /&gt;
    // --- 🗲 ENGINE PRE-FETCH CORES ---&lt;br /&gt;
    function injectPrefetchLink(url) {&lt;br /&gt;
        // Jaring Pengaman 1: Jangan injeksi jika link prefetch untuk URL ini sudah ada di head browser&lt;br /&gt;
        if (document.querySelector(&#039;link[href=&amp;quot;&#039; + url + &#039;&amp;quot;]&#039;)) return;&lt;br /&gt;
&lt;br /&gt;
        var prefetcher = document.createElement(&#039;link&#039;);&lt;br /&gt;
        prefetcher.rel = &#039;prefetch&#039;;&lt;br /&gt;
        prefetcher.href = url;&lt;br /&gt;
        &lt;br /&gt;
        // Jaring Pengaman 2: Failsafe anti-eror cache jika network mendadak sibuk&lt;br /&gt;
        prefetcher.onerror = function() { prefetcher.remove(); };&lt;br /&gt;
        &lt;br /&gt;
        document.head.appendChild(prefetcher);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function initPrefetchDispatch(href) {&lt;br /&gt;
        // Memanfaatkan requestIdleCallback agar proses prefetch hanya berjalan saat browser senggang &lt;br /&gt;
        // sehingga tidak akan membuat scrolling halaman terasa berat/patah-patah&lt;br /&gt;
        if (window.requestIdleCallback) {&lt;br /&gt;
            window.requestIdleCallback(function() { injectPrefetchLink(href); });&lt;br /&gt;
        } else {&lt;br /&gt;
            setTimeout(function() { injectPrefetchLink(href); }, 20);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // --- 🎮 COGNITIVE EVENT LISTENERS (UNIVERSAL HOVER &amp;amp; TOUCH) ---&lt;br /&gt;
    // Mendengarkan area konten utama MediaWiki (Desktop &amp;amp; Tampilan Mobile HP)&lt;br /&gt;
    $(document).on(&#039;mouseenter pointerdown&#039;, &#039;#mw-content-text a, .mw-body-content a, #bodyContent a, .mw-parser-output a&#039;, function() {&lt;br /&gt;
        var $link = $(this);&lt;br /&gt;
        var href = $link.attr(&#039;href&#039;);&lt;br /&gt;
&lt;br /&gt;
        // --- 🛡️ FILTER STRATA TINGGI: ABREVIASI LINK BERGUNA (ANTI CRASH CACHE) ---&lt;br /&gt;
        // 1. Abaikan link kosong, javascript void, atau buka tab baru (_blank)&lt;br /&gt;
        if (!href || href.startsWith(&#039;#&#039;) || href.startsWith(&#039;javascript:&#039;) || $link.attr(&#039;target&#039;) === &#039;_blank&#039;) return;&lt;br /&gt;
        &lt;br /&gt;
        // 2. Abaikan link merah (artikel belum ada), link sunting teks, riwayat versi, dan aksi form MediaWiki&lt;br /&gt;
        if ($link.hasClass(&#039;new&#039;) || href.includes(&#039;action=&#039;) || href.includes(&#039;diff=&#039;) || href.includes(&#039;oldid=&#039;)) return;&lt;br /&gt;
        &lt;br /&gt;
        // 3. Abaikan link perkakas krusial pengurus / sistem otentikasi (hindari prefetch logout tidak sengaja)&lt;br /&gt;
        if (href.includes(&#039;Istimewa:&#039;) || href.includes(&#039;Special:&#039;) || href.includes(&#039;do=logout&#039;)) return;&lt;br /&gt;
&lt;br /&gt;
        // Pastikan hanya mengeksekusi routing internal ekosistem Mippedia&lt;br /&gt;
        var isInternal = href.indexOf(currentHost) !== -1 || href.startsWith(&#039;/&#039;) || !href.includes(&#039;://&#039;);&lt;br /&gt;
        if (isInternal) {&lt;br /&gt;
            initPrefetchDispatch(href);&lt;br /&gt;
        }&lt;br /&gt;
    });&lt;br /&gt;
})();&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================&lt;br /&gt;
   🧠 MIPPEDIA DATA - SMART CONTEXT + AUTO THUMBNAIL (V10.1)&lt;br /&gt;
   Features: Priority Check (ID &amp;gt; EN &amp;gt; CONCISE), Auto-Age, &lt;br /&gt;
             Auto-Bold, Smart Links, Dynamic Context,&lt;br /&gt;
             Targeted Isolation (Safe for Forms), Dynamic Noindex,&lt;br /&gt;
             Aesthetic Centered Empty State + 🚀 Instant Action Hub (3 Buttons)&lt;br /&gt;
   Fixes: Mobile View Visibility &amp;amp; Custom Short URL Route (No /w/)&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
(function() {&lt;br /&gt;
    $(document).ready(function() {&lt;br /&gt;
        var $descSection = $(&#039;#mip-desc-section&#039;), $descBox = $(&#039;#mip-auto-description&#039;),&lt;br /&gt;
            $sourceInfo = $(&#039;#mip-source-info&#039;), $portalLinks = $(&#039;#mip-portal-links&#039;),&lt;br /&gt;
            $projectPortal = $(&#039;#mip-project-portal&#039;), $mainContent = $(&#039;#mw-content-text&#039;);&lt;br /&gt;
        &lt;br /&gt;
        if (!$descBox.length) return;&lt;br /&gt;
&lt;br /&gt;
        var pageTitle = mw.config.get(&#039;wgPageName&#039;).replace(/_/g, &#039; &#039;),&lt;br /&gt;
            cacheKey = &#039;mip_smart_context_thumb_&#039; + pageTitle, now = new Date().getTime(),&lt;br /&gt;
            currentYear = 2026;&lt;br /&gt;
&lt;br /&gt;
        // --- KONFIGURASI PROYEK ---&lt;br /&gt;
        var projects = [&lt;br /&gt;
            { id: &#039;id&#039;, name: &#039;Mippedia bahasa Indonesia&#039;, url: &#039;https://id.mippedia.org/api.php&#039;, base: &#039;https://id.mippedia.org/wiki/&#039;, label: &#039;Mippedia Indonesia&#039; },&lt;br /&gt;
            { id: &#039;en&#039;, name: &#039;Mippedia bahasa Inggris&#039;, url: &#039;https://en.mippedia.org/api.php&#039;, base: &#039;https://en.mippedia.org/wiki/&#039;, label: &#039;Mippedia Inggris&#039; },&lt;br /&gt;
            { id: &#039;concise&#039;, name: &#039;Mippedia bahasa Indonesia ringkas&#039;, url: &#039;https://concise.mippedia.org/api.php&#039;, base: &#039;https://concise.mippedia.org/wiki/&#039;, label: &#039;Mippedia Ringkas&#039; }&lt;br /&gt;
        ];&lt;br /&gt;
&lt;br /&gt;
        // --- 🎨 ANIMASI, HOVER EFFECT &amp;amp; RESPONSIVE STYLE ---&lt;br /&gt;
        if (!$(&#039;#mip-clean-style&#039;).length) {&lt;br /&gt;
            $(&#039;head&#039;).append(&lt;br /&gt;
                &#039;&amp;lt;style id=&amp;quot;mip-clean-style&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                    &#039;@keyframes mipFadeInUp {&#039; +&lt;br /&gt;
                        &#039;from { opacity: 0; transform: translateY(15px); }&#039; +&lt;br /&gt;
                        &#039;to { opacity: 1; transform: translateY(0); }&#039; +&lt;br /&gt;
                    &#039;}&#039; +&lt;br /&gt;
                    &#039;#mip-empty-state-notice {&#039; +&lt;br /&gt;
                        &#039;display: block !important;&#039; + /* Memaksa tampil di seluler/mobile */&lt;br /&gt;
                        &#039;animation: mipFadeInUp 0.6s cubic-bezier(0.16, 1, 0.3, 1) forwards;&#039; +&lt;br /&gt;
                    &#039;}&#039; +&lt;br /&gt;
                    &#039;.mip-btn-container {&#039; +&lt;br /&gt;
                        &#039;display: flex;&#039; +&lt;br /&gt;
                        &#039;flex-wrap: wrap;&#039; + /* Supaya otomatis turun ke bawah kalau di HP */&lt;br /&gt;
                        &#039;justify-content: center;&#039; +&lt;br /&gt;
                        &#039;margin-bottom: 30px;&#039; +&lt;br /&gt;
                        &#039;padding-top: 5px;&#039; +&lt;br /&gt;
                    &#039;}&#039; +&lt;br /&gt;
                    &#039;.mip-action-btn {&#039; +&lt;br /&gt;
                        &#039;display: inline-flex; align-items: center; justify-content: center;&#039; +&lt;br /&gt;
                        &#039;padding: 10px 18px; margin: 6px; font-size: 0.88em; font-weight: 600;&#039; +&lt;br /&gt;
                        &#039;color: #6a5acd !important; background: #ffffff; border: 1.5px solid #6a5acd;&#039; +&lt;br /&gt;
                        &#039;border-radius: 30px; text-decoration: none !important; cursor: pointer;&#039; +&lt;br /&gt;
                        &#039;transition: all 0.25s ease-in-out; box-shadow: 0 2px 5px rgba(106,92,205,0.08);&#039; +&lt;br /&gt;
                        &#039;flex-grow: 1; max-width: 220px; min-width: 150px;&#039; + /* Penyesuaian porsi tombol di HP */&lt;br /&gt;
                    &#039;}&#039; +&lt;br /&gt;
                    &#039;.mip-action-btn:hover {&#039; +&lt;br /&gt;
                        &#039;color: #ffffff !important; background: #6a5acd;&#039; +&lt;br /&gt;
                        &#039;transform: translateY(-2px); box-shadow: 0 4px 12px rgba(106,92,205,0.2);&#039; +&lt;br /&gt;
                    &#039;}&#039; +&lt;br /&gt;
                    &#039;.mip-action-btn:active {&#039; +&lt;br /&gt;
                        &#039;transform: translateY(0);&#039; +&lt;br /&gt;
                    &#039;}&#039; +&lt;br /&gt;
                &#039;&amp;lt;/style&amp;gt;&#039;&lt;br /&gt;
            );&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // --- FUNGSI TOOLS ---&lt;br /&gt;
        function applyAutoBold(text) { return text.replace(new RegExp(&#039;(&#039; + pageTitle + &#039;)&#039;, &#039;gi&#039;), &#039;&amp;lt;strong&amp;gt;$1&amp;lt;/strong&amp;gt;&#039;); }&lt;br /&gt;
        function cleanExtract(text) { return text.replace(/\[\d+\]/g, &#039;&#039;).replace(/\{\{[^}]+\}\}/g, &#039;&#039;).replace(/\(\s*\)/g, &#039;&#039;).replace(/\s\s+/g, &#039; &#039;).trim(); }&lt;br /&gt;
        &lt;br /&gt;
        function applyDynamicContext(text) {&lt;br /&gt;
            var date = new Date();&lt;br /&gt;
            var hari = [&amp;quot;Minggu&amp;quot;, &amp;quot;Senin&amp;quot;, &amp;quot;Selasa&amp;quot;, &amp;quot;Rabu&amp;quot;, &amp;quot;Kamis&amp;quot;, &amp;quot;Jumat&amp;quot;, &amp;quot;Sabtu&amp;quot;];&lt;br /&gt;
            var bulan = [&amp;quot;Januari&amp;quot;, &amp;quot;Februari&amp;quot;, &amp;quot;Maret&amp;quot;, &amp;quot;April&amp;quot;, &amp;quot;Mei&amp;quot;, &amp;quot;Juni&amp;quot;, &amp;quot;Juli&amp;quot;, &amp;quot;Agustus&amp;quot;, &amp;quot;September&amp;quot;, &amp;quot;Oktober&amp;quot;, &amp;quot;November&amp;quot;, &amp;quot;Desember&amp;quot;];&lt;br /&gt;
            var tglSkrg = hari[date.getDay()] + &amp;quot;, &amp;quot; + date.getDate() + &amp;quot; &amp;quot; + bulan[date.getMonth()] + &amp;quot; &amp;quot; + date.getFullYear();&lt;br /&gt;
            return text.replace(/(hari ini|saat ini|sekarang)/gi, &#039;$1 (&#039; + tglSkrg + &#039;)&#039;)&lt;br /&gt;
                .replace(/(\d{1,2}\s(?:Januari|Februari|Maret|April|Mei|Juni|Juli|Agustus|September|Oktober|November|Desember)\s(\d{4}))/gi, function(m, f, y) { &lt;br /&gt;
                    return f + &amp;quot; &amp;lt;span style=&#039;color: #444; font-weight: bold;&#039;&amp;gt;– usia &amp;quot; + (currentYear - parseInt(y)) + &amp;quot; tahun&amp;lt;/span&amp;gt;&amp;quot;; &lt;br /&gt;
                })&lt;br /&gt;
                .replace(/(sejak|tahun)\s(\d{4})/gi, function(m, k, y) {&lt;br /&gt;
                    var gap = currentYear - parseInt(y);&lt;br /&gt;
                    if (gap &amp;gt; 0 &amp;amp;&amp;amp; gap &amp;lt; 100) return k + &amp;quot; &amp;quot; + y + &amp;quot; &amp;lt;small style=&#039;color: #888;&#039;&amp;gt;(&amp;quot; + gap + &amp;quot; thn lalu)&amp;lt;/small&amp;gt;&amp;quot;;&lt;br /&gt;
                    return m;&lt;br /&gt;
                });&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        function applySummary(text) {&lt;br /&gt;
            var limit = 250;&lt;br /&gt;
            if (text.length &amp;lt;= limit) return &#039;&amp;lt;span&amp;gt;&#039; + text + &#039;&amp;lt;/span&amp;gt;&#039;;&lt;br /&gt;
            return &#039;&amp;lt;span&amp;gt;&#039; + text.substring(0, limit) + &#039;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;mip-dots&amp;quot;&amp;gt;... &amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;mip-more&amp;quot; style=&amp;quot;display:none;&amp;quot;&amp;gt;&#039; + text.substring(limit) + &#039;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;mip-read-btn&amp;quot; style=&amp;quot;color: #6a5acd; cursor: pointer; font-weight: bold; margin-left: 5px;&amp;quot;&amp;gt;Baca selengkapnya&amp;lt;/span&amp;gt;&#039;;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // --- SMART LINKS PORTAL ---&lt;br /&gt;
        function buildSmartLinks(currentId, validatedEnTitle) {&lt;br /&gt;
            $portalLinks.empty();&lt;br /&gt;
            var validLinks = [];&lt;br /&gt;
            &lt;br /&gt;
            var checkRequests = projects.filter(p =&amp;gt; p.id !== currentId).map(function(p) {&lt;br /&gt;
                var targetTitle = (p.id === &#039;en&#039; &amp;amp;&amp;amp; validatedEnTitle) ? validatedEnTitle : pageTitle;&lt;br /&gt;
                if (p.id === &#039;en&#039; &amp;amp;&amp;amp; !validatedEnTitle) return $.Deferred().resolve();&lt;br /&gt;
&lt;br /&gt;
                return $.ajax({ url: p.url, data: { action: &#039;query&#039;, titles: targetTitle, format: &#039;json&#039;, origin: &#039;*&#039; }, dataType: &#039;json&#039; })&lt;br /&gt;
                    .then(function(data) { &lt;br /&gt;
                        if (data.query.pages[&amp;quot;-1&amp;quot;] === undefined) { &lt;br /&gt;
                            validLinks.push(&#039;&amp;lt;a href=&amp;quot;&#039; + p.base + encodeURIComponent(targetTitle) + &#039;&amp;quot; target=&amp;quot;_blank&amp;quot; style=&amp;quot;color: #6a5acd; text-decoration: underline; font-weight: bold;&amp;quot;&amp;gt;&#039; + p.label + &#039;&amp;lt;/a&amp;gt;&#039;); &lt;br /&gt;
                        } &lt;br /&gt;
                    });&lt;br /&gt;
            });&lt;br /&gt;
&lt;br /&gt;
            $.when.apply($, checkRequests).done(function() {&lt;br /&gt;
                if (validLinks.length &amp;gt; 0) { $portalLinks.html(validLinks.join(&#039; &amp;lt;span style=&amp;quot;color:#ccc; margin: 0 5px;&amp;quot;&amp;gt;•&amp;lt;/span&amp;gt; &#039;)); $projectPortal.fadeIn(); }&lt;br /&gt;
            });&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // --- 🧠 RENDER EMPTY STATE + INTERACTIVE HUB ---&lt;br /&gt;
        function toggleMippediaLayout(isEmpty) {&lt;br /&gt;
            var $existingNotice = $(&#039;#mip-empty-state-notice&#039;);&lt;br /&gt;
            var userGroups = mw.config.get(&#039;wgUserGroups&#039;) || [];&lt;br /&gt;
            var isSysop = userGroups.indexOf(&#039;sysop&#039;) !== -1;&lt;br /&gt;
&lt;br /&gt;
            var $wikiDataElements = $mainContent.children().not(&#039;#mip-empty-state-notice, #mip-desc-section, script, style, .printfooter&#039;);&lt;br /&gt;
            var $editElements = $(&#039;#ca-edit, .mw-editsection, .wb-editsection, .mip-edit-trigger, [id*=&amp;quot;edit&amp;quot;], [class*=&amp;quot;edit-pencil&amp;quot;]&#039;);&lt;br /&gt;
            var $metaRobots = $(&#039;meta[name=&amp;quot;robots&amp;quot;]&#039;);&lt;br /&gt;
&lt;br /&gt;
            if (isEmpty) {&lt;br /&gt;
                if (!$existingNotice.length) {&lt;br /&gt;
                    // Perbaikan Jalur URL tanpa sub-folder /w/ langsung menembak Short URL root parameter&lt;br /&gt;
                    var createUrlID = &#039;https://id.mippedia.org/index.php?title=&#039; + encodeURIComponent(pageTitle) + &#039;&amp;amp;action=edit&#039;;&lt;br /&gt;
                    var createUrlEN = &#039;https://en.mippedia.org/index.php?title=&#039; + encodeURIComponent(pageTitle) + &#039;&amp;amp;action=edit&#039;;&lt;br /&gt;
                    var createUrlConcise = &#039;https://concise.mippedia.org/index.php?title=&#039; + encodeURIComponent(pageTitle) + &#039;&amp;amp;action=edit&#039;;&lt;br /&gt;
&lt;br /&gt;
                    var noticeHtml = &lt;br /&gt;
                        &#039;&amp;lt;div id=&amp;quot;mip-empty-state-notice&amp;quot; style=&amp;quot;text-align: center; max-width: 600px; margin: 40px auto; padding: 10px; font-family: -apple-system, BlinkMacSystemFont, \&#039;Segoe UI\&#039;, Roboto, sans-serif;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                            &#039;&amp;lt;!-- Ikon Warning Besar --&amp;gt;&#039; +&lt;br /&gt;
                            &#039;&amp;lt;div style=&amp;quot;margin-bottom: 22px; display: inline-block;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                &#039;&amp;lt;svg width=&amp;quot;64&amp;quot; height=&amp;quot;64&amp;quot; viewBox=&amp;quot;0 0 24 24&amp;quot; fill=&amp;quot;none&amp;quot; stroke=&amp;quot;#d9534f&amp;quot; stroke-width=&amp;quot;1.8&amp;quot; stroke-linecap=&amp;quot;round&amp;quot; stroke-linejoin=&amp;quot;round&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                    &#039;&amp;lt;path d=&amp;quot;M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z&amp;quot;&amp;gt;&amp;lt;/path&amp;gt;&#039; +&lt;br /&gt;
                                    &#039;&amp;lt;line x1=&amp;quot;12&amp;quot; y1=&amp;quot;9&amp;quot; x2=&amp;quot;12&amp;quot; y2=&amp;quot;13&amp;quot;&amp;gt;&amp;lt;/line&amp;gt;&#039; +&lt;br /&gt;
                                    &#039;&amp;lt;line x1=&amp;quot;12&amp;quot; y1=&amp;quot;17&amp;quot; x2=&amp;quot;12.01&amp;quot; y2=&amp;quot;17&amp;quot;&amp;gt;&amp;lt;/line&amp;gt;&#039; +&lt;br /&gt;
                                &#039;&amp;lt;/&#039; + &#039;svg&amp;gt;&#039; +&lt;br /&gt;
                            &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
                            &#039;&amp;lt;!-- Judul Utama --&amp;gt;&#039; +&lt;br /&gt;
                            &#039;&amp;lt;h4 style=&amp;quot;color: #2c3e50; margin: 0 0 12px 0; font-size: 1.35em; font-weight: 700; letter-spacing: -0.3px;&amp;quot;&amp;gt;Item Data Struktur Tidak Memiliki Sumber Artikel&amp;lt;/h4&amp;gt;&#039; +&lt;br /&gt;
                            &#039;&amp;lt;!-- Deskripsi Utama --&amp;gt;&#039; +&lt;br /&gt;
                            &#039;&amp;lt;p style=&amp;quot;color: #555; margin: 0 0 25px 0; font-size: 0.98em; line-height: 1.6;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                &#039;Item data ini saat ini &amp;lt;strong&amp;gt;tidak memiliki artikel rujukan satu pun&amp;lt;/strong&amp;gt; di Mippedia Indonesia, Mippedia Inggris, maupun Mippedia Indonesia Ringkas.&#039; +&lt;br /&gt;
                            &#039;&amp;lt;/p&amp;gt;&#039; +&lt;br /&gt;
                            &lt;br /&gt;
                            &#039;&amp;lt;!-- 🚀 INSTANT ACTION HUB (Flexbox-Responsive Mobile &amp;amp; URL No /w/) --&amp;gt;&#039; +&lt;br /&gt;
                            &#039;&amp;lt;div class=&amp;quot;mip-btn-container&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                &#039;&amp;lt;a href=&amp;quot;&#039; + createUrlID + &#039;&amp;quot; target=&amp;quot;_blank&amp;quot; class=&amp;quot;mip-action-btn&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                    &#039;&amp;lt;span style=&amp;quot;margin-right: 6px;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;Buat Artikel ID&#039; +&lt;br /&gt;
                                &#039;&amp;lt;/a&amp;gt;&#039; +&lt;br /&gt;
                                &#039;&amp;lt;a href=&amp;quot;&#039; + createUrlEN + &#039;&amp;quot; target=&amp;quot;_blank&amp;quot; class=&amp;quot;mip-action-btn&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                    &#039;&amp;lt;span style=&amp;quot;margin-right: 6px;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;Buat Artikel EN&#039; +&lt;br /&gt;
                                &#039;&amp;lt;/a&amp;gt;&#039; +&lt;br /&gt;
                                &#039;&amp;lt;a href=&amp;quot;&#039; + createUrlConcise + &#039;&amp;quot; target=&amp;quot;_blank&amp;quot; class=&amp;quot;mip-action-btn&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                    &#039;&amp;lt;span style=&amp;quot;margin-right: 6px;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;Buat Artikel Ringkas&#039; +&lt;br /&gt;
                                &#039;&amp;lt;/a&amp;gt;&#039; +&lt;br /&gt;
                            &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
&lt;br /&gt;
                            &#039;&amp;lt;!-- Catatan Kaki Info Kecil --&amp;gt;&#039; +&lt;br /&gt;
                            &#039;&amp;lt;div style=&amp;quot;font-size: 0.85em; color: #a0a0a0; line-height: 1.5; font-style: italic; border-top: 1px solid #f0f0f0; padding-top: 15px;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                &#039;Informasi: Item data yang tidak terikat dengan artikel ensiklopedia apa pun dalam ekosistem Mippedia akan dihapus secara otomatis oleh pengurus dalam waktu dekat.&#039; +&lt;br /&gt;
                            &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
                        &#039;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
                    $mainContent.prepend(noticeHtml);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                $wikiDataElements.hide();&lt;br /&gt;
                $descSection.hide();&lt;br /&gt;
&lt;br /&gt;
                if (!isSysop) {&lt;br /&gt;
                    $editElements.css({ &#039;pointer-events&#039;: &#039;none&#039;, &#039;opacity&#039;: &#039;0.3&#039;, &#039;cursor&#039;: &#039;not-allowed&#039; }).hide();&lt;br /&gt;
                    $(document).on(&#039;keydown.miplock&#039;, function(e) {&lt;br /&gt;
                        if (e.key.toLowerCase() === &#039;e&#039; &amp;amp;&amp;amp; !$(e.target).is(&#039;input, textarea&#039;)) {&lt;br /&gt;
                            e.preventDefault();&lt;br /&gt;
                            return false;&lt;br /&gt;
                        }&lt;br /&gt;
                    });&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                mw.config.set(&#039;wgRobotsPolicies&#039;, { &#039;index&#039;: &#039;noindex&#039;, &#039;follow&#039;: &#039;nofollow&#039; });&lt;br /&gt;
                if ($metaRobots.length) {&lt;br /&gt;
                    $metaRobots.attr(&#039;content&#039;, &#039;noindex, nofollow&#039;);&lt;br /&gt;
                } else {&lt;br /&gt;
                    $(&#039;head&#039;).append(&#039;&amp;lt;meta name=&amp;quot;robots&amp;quot; content=&amp;quot;noindex, nofollow&amp;quot;&amp;gt;&#039;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
            } else {&lt;br /&gt;
                if ($existingNotice.length) $existingNotice.remove();&lt;br /&gt;
                &lt;br /&gt;
                $wikiDataElements.show();&lt;br /&gt;
                $descSection.show();&lt;br /&gt;
&lt;br /&gt;
                if (!isSysop) {&lt;br /&gt;
                    $(document).off(&#039;keydown.miplock&#039;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                mw.config.set(&#039;wgRobotsPolicies&#039;, { &#039;index&#039;: &#039;index&#039;, &#039;follow&#039;: &#039;follow&#039; });&lt;br /&gt;
                if ($metaRobots.length) {&lt;br /&gt;
                    $metaRobots.attr(&#039;content&#039;, &#039;index, follow&#039;);&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // --- SISTEM PRIORITAS ---&lt;br /&gt;
        var cached = JSON.parse(localStorage.getItem(cacheKey) || &amp;quot;{}&amp;quot;);&lt;br /&gt;
        var globalEnTitle = cached.enTitle || &amp;quot;&amp;quot;; &lt;br /&gt;
&lt;br /&gt;
        function init() {&lt;br /&gt;
            var pPrimary = projects[0]; &lt;br /&gt;
            $.ajax({&lt;br /&gt;
                url: pPrimary.url,&lt;br /&gt;
                data: { action: &#039;query&#039;, prop: &#039;revisions|pageimages|langlinks&#039;, lllang: &#039;en&#039;, rvprop: &#039;timestamp&#039;, piprop: &#039;thumbnail&#039;, pithumbsize: 150, titles: pageTitle, format: &#039;json&#039;, origin: &#039;*&#039; },&lt;br /&gt;
                dataType: &#039;json&#039;,&lt;br /&gt;
                success: function(res) {&lt;br /&gt;
                    var pg = res.query.pages, id = Object.keys(pg)[0];&lt;br /&gt;
                    var latestTS = (id != &amp;quot;-1&amp;quot;) ? pg[id].revisions[0].timestamp : &amp;quot;0&amp;quot;;&lt;br /&gt;
                    var thumbUrl = (id != &amp;quot;-1&amp;quot; &amp;amp;&amp;amp; pg[id].thumbnail) ? pg[id].thumbnail.source : &amp;quot;&amp;quot;;&lt;br /&gt;
                    &lt;br /&gt;
                    if (id != &amp;quot;-1&amp;quot; &amp;amp;&amp;amp; pg[id].langlinks &amp;amp;&amp;amp; pg[id].langlinks[0]) {&lt;br /&gt;
                        globalEnTitle = pg[id].langlinks[0][&#039;*&#039;];&lt;br /&gt;
                    }&lt;br /&gt;
&lt;br /&gt;
                    if (cached.content &amp;amp;&amp;amp; cached.ts === latestTS &amp;amp;&amp;amp; latestTS !== &amp;quot;0&amp;quot; &amp;amp;&amp;amp; !cached.isEmpty) {&lt;br /&gt;
                        toggleMippediaLayout(false);&lt;br /&gt;
                        renderAll(cached.p, cached.content, cached.isTrans, cached.orig, cached.img, cached.customUrl, cached.enTitle);&lt;br /&gt;
                    } else { &lt;br /&gt;
                        fetchPriorityData(0, latestTS, thumbUrl); &lt;br /&gt;
                    }&lt;br /&gt;
                },&lt;br /&gt;
                error: function() { &lt;br /&gt;
                    if (cached.content) {&lt;br /&gt;
                        toggleMippediaLayout(cached.isEmpty || false);&lt;br /&gt;
                        if (!cached.isEmpty) renderAll(cached.p, cached.content, cached.isTrans, cached.orig, cached.img, cached.customUrl, cached.enTitle);&lt;br /&gt;
                    } &lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        function fetchPriorityData(index, newTS, img) {&lt;br /&gt;
            if (index &amp;gt;= projects.length) {&lt;br /&gt;
                localStorage.setItem(cacheKey, JSON.stringify({isEmpty: true, ts: newTS, content: &amp;quot;&amp;quot;}));&lt;br /&gt;
                toggleMippediaLayout(true);&lt;br /&gt;
                return;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            var p = projects[index];&lt;br /&gt;
&lt;br /&gt;
            if (p.id === &#039;en&#039;) {&lt;br /&gt;
                if (!globalEnTitle) {&lt;br /&gt;
                    $.ajax({&lt;br /&gt;
                        url: &#039;https://concise.mippedia.org/api.php&#039;,&lt;br /&gt;
                        data: { action: &#039;query&#039;, prop: &#039;langlinks&#039;, lllang: &#039;en&#039;, titles: pageTitle, format: &#039;json&#039;, origin: &#039;*&#039; },&lt;br /&gt;
                        dataType: &#039;json&#039;,&lt;br /&gt;
                        async: false, &lt;br /&gt;
                        success: function(cRes) {&lt;br /&gt;
                            var cPg = cRes.query.pages, cId = Object.keys(cPg)[0];&lt;br /&gt;
                            if (cId != &amp;quot;-1&amp;quot; &amp;amp;&amp;amp; cPg[cId].langlinks &amp;amp;&amp;amp; cPg[cId].langlinks[0]) {&lt;br /&gt;
                                globalEnTitle = cPg[cId].langlinks[0][&#039;*&#039;];&lt;br /&gt;
                            }&lt;br /&gt;
                        }&lt;br /&gt;
                    });&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                if (globalEnTitle) {&lt;br /&gt;
                    $.ajax({&lt;br /&gt;
                        url: p.url,&lt;br /&gt;
                        data: { action: &#039;query&#039;, prop: &#039;extracts&#039;, exintro: 1, explaintext: 1, titles: globalEnTitle, format: &#039;json&#039;, origin: &#039;*&#039; },&lt;br /&gt;
                        dataType: &#039;json&#039;,&lt;br /&gt;
                        success: function(data) {&lt;br /&gt;
                            var pages = data.query.pages, pageId = Object.keys(pages)[0];&lt;br /&gt;
                            if (pageId != &amp;quot;-1&amp;quot; &amp;amp;&amp;amp; pages[pageId].extract) {&lt;br /&gt;
                                var extract = cleanExtract(pages[pageId].extract);&lt;br /&gt;
                                finalize(p, extract, false, &amp;quot;&amp;quot;, newTS, img, p.base + encodeURIComponent(globalEnTitle), globalEnTitle);&lt;br /&gt;
                            } else {&lt;br /&gt;
                                fetchPriorityData(index + 1, newTS, img);&lt;br /&gt;
                            }&lt;br /&gt;
                        },&lt;br /&gt;
                        error: function() { fetchPriorityData(index + 1, newTS, img); }&lt;br /&gt;
                    });&lt;br /&gt;
                } else {&lt;br /&gt;
                    fetchPriorityData(index + 1, newTS, img);&lt;br /&gt;
                }&lt;br /&gt;
            } else {&lt;br /&gt;
                $.ajax({&lt;br /&gt;
                    url: p.url,&lt;br /&gt;
                    data: { action: &#039;query&#039;, prop: &#039;extracts&#039;, exintro: 1, explaintext: 1, titles: pageTitle, format: &#039;json&#039;, origin: &#039;*&#039; },&lt;br /&gt;
                    dataType: &#039;json&#039;,&lt;br /&gt;
                    success: function(data) {&lt;br /&gt;
                        var pages = data.query.pages, pageId = Object.keys(pages)[0];&lt;br /&gt;
                        if (pageId != &amp;quot;-1&amp;quot; &amp;amp;&amp;amp; pages[pageId].extract) {&lt;br /&gt;
                            var extract = cleanExtract(pages[pageId].extract);&lt;br /&gt;
                            finalize(p, extract, false, &amp;quot;&amp;quot;, newTS, img, p.base + encodeURIComponent(pageTitle), globalEnTitle); &lt;br /&gt;
                        } else {&lt;br /&gt;
                            fetchPriorityData(index + 1, newTS, img);&lt;br /&gt;
                        }&lt;br /&gt;
                    },&lt;br /&gt;
                    error: function() { fetchPriorityData(index + 1, newTS, img); }&lt;br /&gt;
                });&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        function finalize(p, c, t, o, ts, img, customUrl, enTitle) {&lt;br /&gt;
            localStorage.setItem(cacheKey, JSON.stringify({isEmpty: false, p:p, content:c, isTrans:t, orig:o, ts:ts, img:img, customUrl: customUrl, enTitle: enTitle}));&lt;br /&gt;
            toggleMippediaLayout(false); &lt;br /&gt;
            renderAll(p, c, t, o, img, customUrl, enTitle);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        function renderAll(p, currentText, isTranslated, originalText, img, customUrl, enTitle) {&lt;br /&gt;
            var processedText = applyAutoBold(applyDynamicContext(currentText));&lt;br /&gt;
            var thumbHtml = img ? &#039;&amp;lt;div style=&amp;quot;float: right; margin-left: 15px; margin-bottom: 10px; border: 1px solid #ddd; padding: 3px; background: #fff; border-radius: 4px; box-shadow: 0 2px 4px rgba(0,0,0,0.1);&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;&#039;+img+&#039;&amp;quot; style=&amp;quot;max-width: 100px; display: block; height: auto;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039; : &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
            if (!$mainContent.find(&#039;#mip-desc-section&#039;).length) {&lt;br /&gt;
                $mainContent.prepend($descSection);&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            $descSection.show();&lt;br /&gt;
            $descBox.show().html(thumbHtml + applySummary(processedText) + &#039;&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;);&lt;br /&gt;
            &lt;br /&gt;
            var targetLink = customUrl ? customUrl : p.base + encodeURIComponent(pageTitle);&lt;br /&gt;
            var footer = &#039;&amp;lt;div style=&amp;quot;font-size: 0.9em; color: #777;&amp;quot;&amp;gt;Sumber : &amp;lt;a href=&amp;quot;&#039; + targetLink + &#039;&amp;quot; target=&amp;quot;_blank&amp;quot; style=&amp;quot;color: #6a5acd; font-weight: bold; text-decoration: none;&amp;quot;&amp;gt;&#039; + p.name + &#039;.&amp;lt;/a&amp;gt;&#039;;&lt;br /&gt;
            if (isTranslated) { footer += &#039;&amp;lt;br&amp;gt;&amp;lt;span style=&amp;quot;font-size: 0.85em; font-style: italic;&amp;quot;&amp;gt;(Diterjemahkan secara otomatis)&amp;lt;/span&amp;gt; &amp;lt;span id=&amp;quot;mip-toggle-orig&amp;quot; style=&amp;quot;color: #6a5acd; cursor: pointer; text-decoration: underline; margin-left: 5px;&amp;quot;&amp;gt;Tampilkan versi asli&amp;lt;/span&amp;gt;&#039;; }&lt;br /&gt;
            $sourceInfo.show().html(footer);&lt;br /&gt;
            &lt;br /&gt;
            buildSmartLinks(p.id, enTitle);&lt;br /&gt;
            &lt;br /&gt;
            $(document).off(&#039;click&#039;, &#039;.mip-read-btn&#039;).on(&#039;click&#039;, &#039;.mip-read-btn&#039;, function() { $(this).hide(); $(&#039;.mip-dots&#039;).hide(); $(&#039;.mip-more&#039;).fadeIn(); });&lt;br /&gt;
            $(document).off(&#039;click&#039;, &#039;#mip-toggle-orig&#039;).on(&#039;click&#039;, &#039;#mip-toggle-orig&#039;, function() {&lt;br /&gt;
                var isOrig = ($(this).text() === &#039;Tampilkan versi asli&#039;);&lt;br /&gt;
                var textToDisplay = applyAutoBold(applyDynamicContext(isOrig ? originalText : currentText));&lt;br /&gt;
                $descBox.html(thumbHtml + applySummary(textToDisplay) + &#039;&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;);&lt;br /&gt;
                $(this).text(isOrig ? &#039;Tampilkan terjemahan&#039; : &#039;Tampilkan versi asli&#039;);&lt;br /&gt;
            });&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        init();&lt;br /&gt;
    });&lt;br /&gt;
})();&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================&lt;br /&gt;
   🚀 MIPPEDIA DATA - CORE SYSTEM (ULTIMATE BUNDLE)&lt;br /&gt;
   Status: FINAL &amp;amp; REVISED (Visual Fix + Permission Logic)&lt;br /&gt;
   Fix: Mobile Responsive Notification Position&lt;br /&gt;
   ========================================================== */&lt;br /&gt;
&lt;br /&gt;
(function() {&lt;br /&gt;
    $(document).ready(function() {&lt;br /&gt;
        // --- 1. FILTER GLOBAL (Namespace 0 &amp;amp; Bukan Halaman Utama) ---&lt;br /&gt;
        if (mw.config.get(&#039;wgNamespaceNumber&#039;) !== 0 || &lt;br /&gt;
            mw.config.get(&#039;wgIsMainPage&#039;) || &lt;br /&gt;
            mw.config.get(&#039;wgAction&#039;) !== &#039;view&#039;) return;&lt;br /&gt;
&lt;br /&gt;
        var pageTitle = mw.config.get(&#039;wgPageName&#039;);&lt;br /&gt;
        var dataPage = &#039;MediaWiki:Sitelinks-Data.json&#039;;&lt;br /&gt;
        var userGroups = mw.config.get(&#039;wgUserGroups&#039;);&lt;br /&gt;
        var isAdmin = userGroups.includes(&#039;sysop&#039;) || userGroups.includes(&#039;interface-admin&#039;);&lt;br /&gt;
&lt;br /&gt;
        var projects = {&lt;br /&gt;
            &#039;id&#039;: { name: &#039;ID&#039;, url: &#039;https://id.mippedia.org/api.php&#039;, base: &#039;https://id.mippedia.org/wiki/&#039;, color: &#039;#6a5acd&#039; },&lt;br /&gt;
            &#039;en&#039;: { name: &#039;EN&#039;, url: &#039;https://en.mippedia.org/api.php&#039;, base: &#039;https://en.mippedia.org/wiki/&#039;, color: &#039;#4169e1&#039; },&lt;br /&gt;
            &#039;concise&#039;: { name: &#039;Concise&#039;, url: &#039;https://concise.mippedia.org/api.php&#039;, base: &#039;https://concise.mippedia.org/wiki/&#039;, color: &#039;#20b2aa&#039; }&lt;br /&gt;
        };&lt;br /&gt;
&lt;br /&gt;
        // --- 2. KOTAK NOTIFIKASI INFORMASI MODERN (FIXED MOBILE POSITION) ---&lt;br /&gt;
        function showBoxNotif(title, msg, type) {&lt;br /&gt;
            $(&#039;.mip-box-notif&#039;).remove();&lt;br /&gt;
            var theme = type === &#039;success&#039; ? {bg:&#039;#e6fffa&#039;, border:&#039;#38b2ac&#039;, text:&#039;#234e52&#039;, icon:&#039;&#039;} : &lt;br /&gt;
                        {bg:&#039;#fff5f5&#039;, border:&#039;#f56565&#039;, text:&#039;#742a2a&#039;, icon:&#039;&#039;};&lt;br /&gt;
            &lt;br /&gt;
            // Logika CSS Responsif untuk posisi&lt;br /&gt;
            var isMobile = window.innerWidth &amp;lt;= 768;&lt;br /&gt;
            var desktopStyle = &amp;quot;top:25px; right:25px; width:350px;&amp;quot;;&lt;br /&gt;
            var mobileStyle = &amp;quot;top:15px; left:50%; transform:translateX(-50%); width:90%; max-width:400px;&amp;quot;;&lt;br /&gt;
            var finalPos = isMobile ? mobileStyle : desktopStyle;&lt;br /&gt;
&lt;br /&gt;
            var $notif = $(&#039;&amp;lt;div class=&amp;quot;mip-box-notif&amp;quot; style=&amp;quot;position:fixed; &#039; + finalPos + &#039; background:&#039;+theme.bg+&#039;; border-left:6px solid &#039;+theme.border+&#039;; padding:18px; z-index:10001; border-radius:12px; box-shadow:0 15px 35px rgba(0,0,0,0.2); font-family:sans-serif; animation:mipSlideIn 0.4s ease-out;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                &#039;&amp;lt;div style=&amp;quot;display:flex; align-items:center; gap:12px; margin-bottom:8px;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                    &#039;&amp;lt;span style=&amp;quot;font-size:20px;&amp;quot;&amp;gt;&#039;+theme.icon+&#039;&amp;lt;/span&amp;gt;&#039; +&lt;br /&gt;
                    &#039;&amp;lt;strong style=&amp;quot;color:&#039;+theme.text+&#039;; font-size:15px; letter-spacing:-0.3px;&amp;quot;&amp;gt;&#039;+title+&#039;&amp;lt;/strong&amp;gt;&#039; +&lt;br /&gt;
                &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
                &#039;&amp;lt;p style=&amp;quot;margin:0; font-size:13px; color:&#039;+theme.text+&#039;; line-height:1.6; opacity:0.9;&amp;quot;&amp;gt;&#039;+msg+&#039;&amp;lt;/p&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;/div&amp;gt;&#039;).appendTo(&#039;body&#039;);&lt;br /&gt;
&lt;br /&gt;
            setTimeout(function() { $notif.fadeOut(function(){ $(this).remove(); }); }, 5500);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // --- 3. UI GENERATOR (DIPERTEBAL) ---&lt;br /&gt;
&lt;br /&gt;
      // A. Header Pro&lt;br /&gt;
        var headerHtml = &#039;&amp;lt;div id=&amp;quot;mip-header&amp;quot; style=&amp;quot;background:#f8f9fa; border:1px solid #ddd; border-left:6px solid #6a5acd; padding:18px; margin-bottom:25px; border-radius:6px; box-shadow:inset 0 0 10px rgba(0,0,0,0.02);&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;div style=&amp;quot;display:flex; align-items:center; gap:10px; margin-bottom:8px;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;span style=&amp;quot;background:#6a5acd; color:white; padding:3px 10px; border-radius:4px; font-size:11px; font-weight:bold; text-transform:uppercase; letter-spacing:0.5px;&amp;quot;&amp;gt;Basis Data Terstruktur&amp;lt;/span&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;strong style=&amp;quot;color:#111; font-size:16px;&amp;quot;&amp;gt;&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;p style=&amp;quot;margin:0; font-size:13px; color:#444; line-height:1.6;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
            &#039;Halaman ini adalah metadata entitas repositori pusat yang disinkronisasi secara otomatis lintas ekosistem. &#039; +&lt;br /&gt;
            &#039;Informasi di bawah ini bersifat teknis dan bebas digunakan sebagai referensi data terbuka bagi semua orang di seluruh dunia berdasarkan lisensi atribusi yang sesuai.&#039; +&lt;br /&gt;
            &#039;&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
        // B. Connector Box&lt;br /&gt;
        var editBtn = &#039;&amp;lt;span id=&amp;quot;mip-open-editor&amp;quot; style=&amp;quot;cursor:pointer; font-size:20px; color:#6a5acd; opacity:0.8; transition:0.3s;&amp;quot; onmouseover=&amp;quot;this.style.opacity=1&amp;quot; onmouseout=&amp;quot;this.style.opacity=0.8&amp;quot;&amp;gt;✎&amp;lt;/span&amp;gt;&#039;;&lt;br /&gt;
        var connectorHtml = &#039;&amp;lt;div id=&amp;quot;mip-connector&amp;quot; style=&amp;quot;background:#fff; border:1px solid #e2e8f0; border-radius:16px; padding:22px; margin-top:30px; box-shadow:0 10px 25px rgba(0,0,0,0.04);&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;div style=&amp;quot;display:flex; justify-content:space-between; align-items:center; margin-bottom:20px;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;strong style=&amp;quot;font-size:15px; color:#1a202c; display:flex; align-items:center; gap:8px;&amp;quot;&amp;gt;ID situs&amp;lt;/strong&amp;gt;&#039;+editBtn+&#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;div id=&amp;quot;mip-display&amp;quot; style=&amp;quot;display:flex; gap:12px; flex-wrap:wrap;&amp;quot;&amp;gt;&amp;lt;small style=&amp;quot;color:#a0aec0;&amp;quot;&amp;gt;Mensinkronisasi basis data...&amp;lt;/small&amp;gt;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;div id=&amp;quot;mip-editor&amp;quot; style=&amp;quot;display:none; margin-top:20px; border-top:2px solid #f7fafc; padding-top:20px;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                Object.keys(projects).map(p =&amp;gt; &#039;&amp;lt;div style=&amp;quot;margin-bottom:12px; display:flex; gap:10px;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;width:75px; font-size:11px; font-weight:bold; background:#edf2f7; display:flex; align-items:center; justify-content:center; border-radius:8px; color:#4a5568;&amp;quot;&amp;gt;&#039;+projects[p].name+&#039;&amp;lt;/span&amp;gt;&amp;lt;input type=&amp;quot;text&amp;quot; id=&amp;quot;in-&#039;+p+&#039;&amp;quot; placeholder=&amp;quot;Judul artikel di &#039;+projects[p].name+&#039;...&amp;quot; style=&amp;quot;flex:1; padding:10px; font-size:13px; border:1.5px solid #e2e8f0; border-radius:10px; outline:none; transition:0.2s;&amp;quot; onfocus=&amp;quot;this.style.borderColor=\&#039;#6a5acd\&#039;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;).join(&#039;&#039;) +&lt;br /&gt;
                &#039;&amp;lt;button id=&amp;quot;mip-save&amp;quot; style=&amp;quot;width:100%; padding:14px; background:#6a5acd; color:white; border:none; border-radius:12px; font-size:14px; font-weight:bold; cursor:pointer; box-shadow:0 4px 12px rgba(106,90,205,0.3); transition:0.3s;&amp;quot;&amp;gt;Terbitkan&amp;lt;/button&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
        // C. Footer Lisensi Lengkap&lt;br /&gt;
        var footerHtml = &#039;&amp;lt;div id=&amp;quot;mip-footer&amp;quot; style=&amp;quot;background:#fafafa; border:1px solid #eee; border-radius:10px; padding:20px; margin-top:30px; text-align:center;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;div style=&amp;quot;font-size:11px; color:#718096; font-weight:800; text-transform:uppercase; letter-spacing:1px; margin-bottom:10px;&amp;quot;&amp;gt;Lisensi, Atribusi &amp;amp; Penggunaan Data&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;p style=&amp;quot;margin:0 0 10px; font-size:13px; color:#4a5568; line-height:1.6;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
            &#039;Seluruh data terstruktur yang tersaji dalam repositori ini merupakan milik publik dan tersedia di bawah lisensi resmi &#039; +&lt;br /&gt;
            &#039;&amp;lt;a href=&amp;quot;https://creativecommons.org/licenses/by-sa/4.0/&amp;quot; target=&amp;quot;_blank&amp;quot; style=&amp;quot;color:#6a5acd; text-decoration:none; font-weight:700;&amp;quot;&amp;gt;Creative Commons Attribution-ShareAlike 4.0 International&amp;lt;/a&amp;gt;.&#039; +&lt;br /&gt;
            &#039;&amp;lt;/p&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;p style=&amp;quot;margin:0; font-size:12px; color:#a0aec0;&amp;quot;&amp;gt;Akses API dan penggunaan data secara massal wajib mencantumkan atribusi kepada &amp;lt;strong&amp;gt;Mippedia Community&amp;lt;/strong&amp;gt; selaku pengelola proyek.&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
        // Injeksi&lt;br /&gt;
        $(&#039;#mw-content-text&#039;).prepend(headerHtml);&lt;br /&gt;
        $(&#039;#mw-content-text&#039;).append(connectorHtml).append(footerHtml);&lt;br /&gt;
&lt;br /&gt;
        // --- 4. LOGIC ENGINE ---&lt;br /&gt;
        function loadLinks() {&lt;br /&gt;
            new mw.Api().get({ action: &#039;query&#039;, prop: &#039;revisions&#039;, titles: dataPage, rvprop: &#039;content&#039;, formatversion: 2 }).done(function(d) {&lt;br /&gt;
                var json = d.query.pages[0].revisions ? JSON.parse(d.query.pages[0].revisions[0].content) : {};&lt;br /&gt;
                var data = json[pageTitle] || {};&lt;br /&gt;
                var $box = $(&#039;#mip-display&#039;).empty();&lt;br /&gt;
                var found = false;&lt;br /&gt;
                Object.keys(projects).forEach(p =&amp;gt; {&lt;br /&gt;
                    if (data[p]) {&lt;br /&gt;
                        found = true;&lt;br /&gt;
                        $box.append(&#039;&amp;lt;a style=&amp;quot;background:&#039;+projects[p].color+&#039;; color:white; padding:8px 16px; border-radius:10px; font-size:12px; font-weight:bold; text-decoration:none; border-bottom:3px solid rgba(0,0,0,0.15);&amp;quot; href=&amp;quot;&#039;+projects[p].base+encodeURIComponent(data[p])+&#039;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Mippedia &#039;+projects[p].name+&#039;: &#039;+data[p]+&#039;&amp;lt;/a&amp;gt;&#039;);&lt;br /&gt;
                        $(&#039;#in-&#039; + p).val(data[p]);&lt;br /&gt;
                    }&lt;br /&gt;
                });&lt;br /&gt;
                if (!found) $box.html(&#039;&amp;lt;em style=&amp;quot;color:#cbd5e0; font-size:13px;&amp;quot;&amp;gt;Entitas ini belum terhubung ke cabang Mippedia manapun.&amp;lt;/em&amp;gt;&#039;);&lt;br /&gt;
            });&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        $(document).on(&#039;click&#039;, &#039;#mip-save&#039;, function() {&lt;br /&gt;
            // CEK IZIN: Tolak user biasa&lt;br /&gt;
            if (!isAdmin) {&lt;br /&gt;
                showBoxNotif(&#039;Suntingan anda tidak di terbitkan&#039;, &#039;Halaman ini dilindungi. Hanya &amp;lt;b&amp;gt;Pengurus&amp;lt;/b&amp;gt; yang memiliki otoritas untuk memodifikasi metadata ekosistem secara langsung.&#039;, &#039;error&#039;);&lt;br /&gt;
                return;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            var $btn = $(this).text(&#039;Sedang Memvalidasi...&#039;).prop(&#039;disabled&#039;, true);&lt;br /&gt;
            var api = new mw.Api();&lt;br /&gt;
            var newData = {}, promises = [], invalid = [], isDel = true;&lt;br /&gt;
&lt;br /&gt;
            Object.keys(projects).forEach(p =&amp;gt; {&lt;br /&gt;
                var v = $(&#039;#in-&#039; + p).val().trim();&lt;br /&gt;
                if (v) {&lt;br /&gt;
                    isDel = false;&lt;br /&gt;
                    promises.push($.ajax({ url: projects[p].url, data: { action: &#039;query&#039;, titles: v, format: &#039;json&#039;, origin: &#039;*&#039; }, dataType: &#039;json&#039; }).done(function(res){&lt;br /&gt;
                        if (res.query.pages[&amp;quot;-1&amp;quot;]) invalid.push(projects[p].name); else newData[p] = v;&lt;br /&gt;
                    }));&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
&lt;br /&gt;
            $.when.apply($, promises).then(function() {&lt;br /&gt;
                if (invalid.length &amp;gt; 0) {&lt;br /&gt;
                    showBoxNotif(&#039;Suntingan anda tidak di terbitkan&#039;, &#039;Artikel dengan judul tersebut tidak ditemukan di basis data Mippedia cabang: &#039; + invalid.join(&#039;, &#039;) + &#039;. Periksa kembali ejaan dan kapitalisasi.&#039;, &#039;error&#039;);&lt;br /&gt;
                    $btn.text(&#039;Terbitkan&#039;).prop(&#039;disabled&#039;, false); return;&lt;br /&gt;
                }&lt;br /&gt;
                &lt;br /&gt;
                api.get({ action: &#039;query&#039;, prop: &#039;revisions&#039;, titles: dataPage, rvprop: &#039;content&#039;, formatversion: 2 }).done(function(r) {&lt;br /&gt;
                    var full = r.query.pages[0].revisions ? JSON.parse(r.query.pages[0].revisions[0].content) : {};&lt;br /&gt;
                    if (isDel) delete full[pageTitle]; else full[pageTitle] = newData;&lt;br /&gt;
                    &lt;br /&gt;
                    api.postWithEditToken({ action: &#039;edit&#039;, title: dataPage, text: JSON.stringify(full, null, 2), summary: &#039;Sync Metadata: &#039; + pageTitle })&lt;br /&gt;
                    .done(function() {&lt;br /&gt;
                        showBoxNotif(&#039;Suntingan anda berhasil di terbitkan!&#039;, &#039;Metadata entitas berhasil disinkronisasi ke seluruh jaringan ekosistem Mippedia.&#039;, &#039;success&#039;);&lt;br /&gt;
                        setTimeout(function(){ location.reload(); }, 1500);&lt;br /&gt;
                    }).fail(function(c) {&lt;br /&gt;
                        showBoxNotif(&#039;Gagal Menyimpan&#039;, &#039;Terjadi kesalahan pada token API atau koneksi server. Kode: &#039; + c, &#039;error&#039;);&lt;br /&gt;
                        $btn.text(&#039;Simpan &amp;amp; Sinkronkan Data&#039;).prop(&#039;disabled&#039;, false);&lt;br /&gt;
                    });&lt;br /&gt;
                });&lt;br /&gt;
            });&lt;br /&gt;
        });&lt;br /&gt;
&lt;br /&gt;
        $(document).on(&#039;click&#039;, &#039;#mip-open-editor&#039;, function() { $(&#039;#mip-editor&#039;).slideToggle(); });&lt;br /&gt;
        loadLinks();&lt;br /&gt;
    });&lt;br /&gt;
})();&lt;br /&gt;
&lt;br /&gt;
(function() {&lt;br /&gt;
    // Fungsi utama suntik teks&lt;br /&gt;
    function forcePreload() {&lt;br /&gt;
        var ns = mw.config.get(&#039;wgNamespaceNumber&#039;);&lt;br /&gt;
        var pageExists = mw.config.get(&#039;wgArticleId&#039;) &amp;gt; 0;&lt;br /&gt;
        &lt;br /&gt;
        // Cek Namespace Utama &amp;amp; Halaman Baru&lt;br /&gt;
        if (ns === 0 &amp;amp;&amp;amp; !pageExists) {&lt;br /&gt;
            // Cari textarea secara spesifik (Desktop &amp;amp; Mobile punya selector beda)&lt;br /&gt;
            var $textbox = $(&#039;#wpTextbox1, textarea.mw-ui-input, .editor-container textarea&#039;);&lt;br /&gt;
            &lt;br /&gt;
            if ($textbox.length &amp;amp;&amp;amp; $textbox.val().trim() === &amp;quot;&amp;quot;) {&lt;br /&gt;
                var pageName = mw.config.get(&#039;wgTitle&#039;);&lt;br /&gt;
                $textbox.val(&#039;{{Infobox umum\n|nama = &#039; + pageName + &#039;\n}}&#039;);&lt;br /&gt;
                console.log(&amp;quot;Mippedia: Infobox injected!&amp;quot;);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // 1. Jalankan pas halaman beres load&lt;br /&gt;
    $(document).ready(forcePreload);&lt;br /&gt;
&lt;br /&gt;
    // 2. Jalankan tiap ada klik (karena mobile buka editor pake klik tanpa refresh)&lt;br /&gt;
    $(document).on(&#039;click&#039;, function() {&lt;br /&gt;
        setTimeout(forcePreload, 800); // Kasih delay dikit nunggu overlay muncul&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    // 3. Pake MutationObserver buat mantau elemen yang baru muncul secara gaib&lt;br /&gt;
    var observer = new MutationObserver(function() {&lt;br /&gt;
        forcePreload();&lt;br /&gt;
    });&lt;br /&gt;
    observer.observe(document.body, { childList: true, subtree: true });&lt;br /&gt;
})();&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================&lt;br /&gt;
   🚀 MIPPEDIA DATA - CONTENT GUARD (MODIFIED FOR RELATED)&lt;br /&gt;
   ========================================================== */&lt;br /&gt;
(function() {&lt;br /&gt;
    function handleBlock(e) {&lt;br /&gt;
        var ns = mw.config.get(&#039;wgNamespaceNumber&#039;);&lt;br /&gt;
        if (ns !== 0 || mw.config.get(&#039;wgIsMainPage&#039;)) return;&lt;br /&gt;
&lt;br /&gt;
        var $el = $(e.currentTarget);&lt;br /&gt;
        &lt;br /&gt;
        if ($el.closest(&#039;.mw-parser-output&#039;).length &amp;amp;&amp;amp; $el.text().toLowerCase().includes(&#039;buat item&#039;)) {&lt;br /&gt;
            return; &lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        var $textbox = $(&#039;#wpTextbox1, .editor-container textarea, textarea.mw-ui-input&#039;);&lt;br /&gt;
        &lt;br /&gt;
        if ($textbox.length) {&lt;br /&gt;
            var content = $textbox.val() || &amp;quot;&amp;quot;;&lt;br /&gt;
            &lt;br /&gt;
            // Pengecekan: Harus ada {{Infobox ATAU setidaknya ada kode #related&lt;br /&gt;
            var hasInfobox = content.includes(&#039;{{Infobox&#039;);&lt;br /&gt;
            var hasRelated = content.includes(&#039;#related:&#039;);&lt;br /&gt;
&lt;br /&gt;
            if (!hasInfobox &amp;amp;&amp;amp; !hasRelated) {&lt;br /&gt;
                e.preventDefault();&lt;br /&gt;
                e.stopPropagation();&lt;br /&gt;
                e.stopImmediatePropagation();&lt;br /&gt;
&lt;br /&gt;
                window.alert(&amp;quot;SUNTINGAN ANDA TIDAK BISA DI TERBITKAN!\n\nMippedia Data bukan tempat untuk menulis artikel ensiklopedia, Jika anda ingin membuat artikel ensiklopedia bukan di sini tempat nya.\n&amp;quot;);&lt;br /&gt;
                return false;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    $(document).on(&#039;click mousedown touchstart&#039;, &lt;br /&gt;
        &#039;#wpSave, .editor-save, .mw-ui-button.primary, button[type=&amp;quot;submit&amp;quot;], .save-button, .header-action button&#039;, &lt;br /&gt;
        function(e) {&lt;br /&gt;
            handleBlock(e);&lt;br /&gt;
        }&lt;br /&gt;
    );&lt;br /&gt;
&lt;br /&gt;
    window.addEventListener(&#039;submit&#039;, function(e) {&lt;br /&gt;
        handleBlock(e);&lt;br /&gt;
    }, true);&lt;br /&gt;
})();&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================&lt;br /&gt;
   🛡️ MIPPEDIA CORE SYSTEM - NEURAL ENGINE V12&lt;br /&gt;
   Update: Brain Upgrade - Semantic Search &amp;amp; Anti-Duplicate&lt;br /&gt;
   Semua fitur asli (Patroli, Promo, Kategori) tetap UTUH.&lt;br /&gt;
   ========================================================== */&lt;br /&gt;
mw.hook(&#039;postEdit&#039;).add(function() {&lt;br /&gt;
    var rawUser = mw.config.get(&#039;wgUserName&#039;);&lt;br /&gt;
    var userName = rawUser ? rawUser.replace(/_/g, &#039; &#039;) : &#039;Anonim&#039;;&lt;br /&gt;
    var isPatroli = (userName === &#039;Admin&#039;);&lt;br /&gt;
    &lt;br /&gt;
    if (mw.config.get(&#039;wgNamespaceNumber&#039;) !== 0) return;&lt;br /&gt;
&lt;br /&gt;
    var api = new mw.Api();&lt;br /&gt;
    var pageTitle = mw.config.get(&#039;wgPageName&#039;).replace(/_/g, &#039; &#039;);&lt;br /&gt;
&lt;br /&gt;
    api.get({&lt;br /&gt;
        action: &#039;query&#039;,&lt;br /&gt;
        titles: pageTitle,&lt;br /&gt;
        prop: &#039;revisions|categories|links&#039;,&lt;br /&gt;
        rvprop: &#039;content&#039;,&lt;br /&gt;
        clshow: &#039;!hidden&#039;,&lt;br /&gt;
        pllimit: &#039;max&#039;&lt;br /&gt;
    }).done(function(resData) {&lt;br /&gt;
        var page = resData.query.pages[Object.keys(resData.query.pages)[0]];&lt;br /&gt;
        if (!page || !page.revisions) return;&lt;br /&gt;
&lt;br /&gt;
        var rawContent = page.revisions[0][&#039;*&#039;];&lt;br /&gt;
        var content = rawContent;&lt;br /&gt;
        var summaryParts = [];&lt;br /&gt;
&lt;br /&gt;
        // --- 2. SUPER INTELLIGENCE RELATED (UPGRADE OTAK V12) ---&lt;br /&gt;
        // Cek jumlah related saat ini&lt;br /&gt;
        var currentRelatedMatch = content.match(/\{\{#related:.*?\}\}/g) || [];&lt;br /&gt;
        &lt;br /&gt;
        // Jika kurang dari 3, kita jalankan otak pencarian canggih&lt;br /&gt;
        if (currentRelatedMatch.length &amp;lt; 3) {&lt;br /&gt;
            // Hapus yang lama dulu agar tidak ada duplikat atau &amp;quot;pake yang bekas&amp;quot;&lt;br /&gt;
            content = content.replace(/\n*\{\{#related:.*?\}\}/g, &#039;&#039;);&lt;br /&gt;
&lt;br /&gt;
            // Langkah A: Ambil kandidat dari Search Engine (Ranking Skor)&lt;br /&gt;
            api.get({&lt;br /&gt;
                action: &#039;query&#039;,&lt;br /&gt;
                list: &#039;search&#039;,&lt;br /&gt;
                srsearch: pageTitle, // Gunakan judul sebagai basis pencarian semantic&lt;br /&gt;
                srlimit: 15,&lt;br /&gt;
                srprop: &#039;&#039;&lt;br /&gt;
            }).done(function(searchRes) {&lt;br /&gt;
                var candidates = {};&lt;br /&gt;
&lt;br /&gt;
                // Masukkan hasil pencarian ke pool skor&lt;br /&gt;
                if (searchRes.query &amp;amp;&amp;amp; searchRes.query.search) {&lt;br /&gt;
                    searchRes.query.search.forEach(function(item, index) {&lt;br /&gt;
                        if (item.title === pageTitle) return;&lt;br /&gt;
                        candidates[item.title] = (15 - index); // Skor berdasarkan urutan relevansi&lt;br /&gt;
                    });&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                // Langkah B: Tambah skor jika artikel ada di daftar Link Internal&lt;br /&gt;
                if (page.links) {&lt;br /&gt;
                    page.links.forEach(function(link) {&lt;br /&gt;
                        if (link.title === pageTitle) return;&lt;br /&gt;
                        candidates[link.title] = (candidates[link.title] || 0) + 5; // Bonus skor link&lt;br /&gt;
                    });&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                // Langkah C: Urutkan berdasarkan skor tertinggi (yang paling nyambung)&lt;br /&gt;
                var sortedTitles = Object.keys(candidates).sort(function(a, b) {&lt;br /&gt;
                    return candidates[b] - candidates[a];&lt;br /&gt;
                });&lt;br /&gt;
&lt;br /&gt;
                // Ambil TOP 3&lt;br /&gt;
                var finalRelated = sortedTitles.filter(t =&amp;gt; t.indexOf(&#039;:&#039;) === -1).slice(0, 3);&lt;br /&gt;
&lt;br /&gt;
                if (finalRelated.length &amp;gt; 0) {&lt;br /&gt;
                    var relatedTags = &#039;\n\n&#039; + finalRelated.map(t =&amp;gt; &#039;{{#related: &#039; + t + &#039;}}&#039;).join(&#039;\n&#039;);&lt;br /&gt;
                    content += relatedTags;&lt;br /&gt;
                    summaryParts.push(&#039;NeuralRelated&#039;);&lt;br /&gt;
                }&lt;br /&gt;
                &lt;br /&gt;
                runPatroliAndSave();&lt;br /&gt;
            });&lt;br /&gt;
        } else {&lt;br /&gt;
            runPatroliAndSave();&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        function runPatroliAndSave() {&lt;br /&gt;
            // --- 3. PATROLI ENGINE (FITUR ASLI - TETAP BERFUNGSI) ---&lt;br /&gt;
            if (isPatroli) {&lt;br /&gt;
                var placeholders = [];&lt;br /&gt;
                // Lindungi Brankas: Template, Header, Kategori, Ref, dan Kalimat Pembuka&lt;br /&gt;
                content = content.replace(/(\{\{[\s\S]*?\}\}|==+.*?==+|\[\[Kategori:.*?\]\]|&amp;lt;ref[\s\S]*?&amp;lt;\/ref&amp;gt;|^.*?adalah)/gi, function(match) {&lt;br /&gt;
                    placeholders.push(match);&lt;br /&gt;
                    return &#039;___MIP_SKIP_&#039; + (placeholders.length - 1) + &#039;___&#039;;&lt;br /&gt;
                });&lt;br /&gt;
&lt;br /&gt;
                // Proses Auto-Link (Wajib ambil daftar AllPages dulu)&lt;br /&gt;
                api.get({ action: &#039;query&#039;, list: &#039;allpages&#039;, apnamespace: 0, aplimit: &#039;max&#039; }).done(function(apData) {&lt;br /&gt;
                    var allTitles = apData.query.allpages.map(p =&amp;gt; p.title);&lt;br /&gt;
                    var lowerTitles = allTitles.map(t =&amp;gt; t.toLowerCase());&lt;br /&gt;
&lt;br /&gt;
                    var tokens = content.split(/(\s+|\[\[|\]\])/);&lt;br /&gt;
                    var inLink = false;&lt;br /&gt;
                    for (var i = 0; i &amp;lt; tokens.length; i++) {&lt;br /&gt;
                        if (tokens[i] === &#039;[[&#039; ) { inLink = true; continue; }&lt;br /&gt;
                        if (tokens[i] === &#039;]]&#039; ) { inLink = false; continue; }&lt;br /&gt;
                        if (inLink || tokens[i].trim().length &amp;lt; 3 || tokens[i].includes(&#039;___MIP_SKIP_&#039;)) continue;&lt;br /&gt;
&lt;br /&gt;
                        var wordsInToken = tokens[i].match(/\b\w+\b/g);&lt;br /&gt;
                        if (wordsInToken) {&lt;br /&gt;
                            wordsInToken.forEach(function(word) {&lt;br /&gt;
                                var idx = lowerTitles.indexOf(word.toLowerCase());&lt;br /&gt;
                                if (idx !== -1 &amp;amp;&amp;amp; allTitles[idx] !== pageTitle) {&lt;br /&gt;
                                    tokens[i] = tokens[i].replace(new RegExp(&#039;\\b&#039; + word + &#039;\\b&#039;, &#039;g&#039;), &#039;[[&#039; + allTitles[idx] + &#039;|&#039; + word + &#039;]]&#039;);&lt;br /&gt;
                                }&lt;br /&gt;
                            });&lt;br /&gt;
                        }&lt;br /&gt;
                    }&lt;br /&gt;
                    content = tokens.join(&#039;&#039;);&lt;br /&gt;
                    &lt;br /&gt;
                    // Kembalikan dari Brankas&lt;br /&gt;
                    content = content.replace(/___MIP_SKIP_(\d+)___/g, function(match, id) { return placeholders[id]; });&lt;br /&gt;
&lt;br /&gt;
                    // Bersihkan Link Merah&lt;br /&gt;
                    content = content.replace(/\[\[([^|\]:]+)\]\]/g, function(match, p1) {&lt;br /&gt;
                        return lowerTitles.includes(p1.toLowerCase()) ? match : p1;&lt;br /&gt;
                    });&lt;br /&gt;
&lt;br /&gt;
                    saveAction();&lt;br /&gt;
                });&lt;br /&gt;
            } else {&lt;br /&gt;
                saveAction();&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        function saveAction() {&lt;br /&gt;
            // --- 4. EKSEKUSI ---&lt;br /&gt;
            if (content.trim() !== rawContent.trim()) {&lt;br /&gt;
                api.postWithToken(&#039;edit&#039;, {&lt;br /&gt;
                    action: &#039;edit&#039;,&lt;br /&gt;
                    title: pageTitle,&lt;br /&gt;
                    text: content,&lt;br /&gt;
                    summary: &#039;Mippedia Neural Engine V12: &#039; + summaryParts.join(&#039;, &#039;),&lt;br /&gt;
                    bot: true, markasbot: true&lt;br /&gt;
                }).done(function() { location.reload(); });&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    });&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================&lt;br /&gt;
   🌐 MIPPEDIA SHORTDESC - DATA CENTER (PREMIUM UI)&lt;br /&gt;
   Status: INDEPENDENT &amp;amp; REFINED VISUAL&lt;br /&gt;
   Storage: MediaWiki:ShortDesc-Data.json&lt;br /&gt;
   ========================================================== */&lt;br /&gt;
(function($, mw) {&lt;br /&gt;
    &amp;quot;use strict&amp;quot;;&lt;br /&gt;
    $(document).ready(function() {&lt;br /&gt;
        if (mw.config.get(&#039;wgNamespaceNumber&#039;) !== 0 || mw.config.get(&#039;wgIsMainPage&#039;)) return;&lt;br /&gt;
&lt;br /&gt;
        var pageTitle = mw.config.get(&#039;wgPageName&#039;);&lt;br /&gt;
        var storagePage = &#039;MediaWiki:ShortDesc-Data.json&#039;;&lt;br /&gt;
        var isAdmin = mw.config.get(&#039;wgUserGroups&#039;).some(g =&amp;gt; [&#039;sysop&#039;, &#039;interface-admin&#039;].includes(g));&lt;br /&gt;
&lt;br /&gt;
        var langs = {&lt;br /&gt;
            id: { label: &#039;Mippedia bahasa Indonesia&#039;, short: &#039;ID&#039;, color: &#039;#6366f1&#039; },&lt;br /&gt;
            en: { label: &#039;Mippedia bahasa Inggris&#039;, short: &#039;EN&#039;, color: &#039;#3b82f6&#039; },&lt;br /&gt;
            concise: { label: &#039;Mippedia bahasa Indonesia ringkas&#039;, short: &#039;CON&#039;, color: &#039;#14b8a6&#039; }&lt;br /&gt;
        };&lt;br /&gt;
&lt;br /&gt;
        // UI Box dengan Spasi dan Desain Baru&lt;br /&gt;
        var html = `&lt;br /&gt;
            &amp;lt;div id=&amp;quot;desc-manager&amp;quot; style=&amp;quot;background:#ffffff; border:1px solid #f1f5f9; border-left:4px solid #6366f1; border-radius:12px; padding:20px; margin: 20px 0 25px 0; box-shadow:0 4px 12px rgba(0,0,0,0.03); font-family: -apple-system,BlinkMacSystemFont,&#039;Segoe UI&#039;,Roboto,sans-serif;&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;div style=&amp;quot;display:flex; justify-content:space-between; align-items:center; margin-bottom:12px;&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;span style=&amp;quot;font-size:13px; font-weight:700; color:#475569; text-transform:uppercase; letter-spacing:0.5px; display:flex; align-items:center; gap:6px;&amp;quot;&amp;gt;&lt;br /&gt;
                        Label Deskripsi&lt;br /&gt;
                    &amp;lt;/span&amp;gt;&lt;br /&gt;
                    &amp;lt;span id=&amp;quot;desc-open-editor&amp;quot; style=&amp;quot;cursor:pointer; padding:5px; transition:0.2s;&amp;quot; title=&amp;quot;Edit Deskripsi&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;svg width=&amp;quot;16&amp;quot; height=&amp;quot;16&amp;quot; viewBox=&amp;quot;0 0 24 24&amp;quot; fill=&amp;quot;none&amp;quot; stroke=&amp;quot;#94a3b8&amp;quot; stroke-width=&amp;quot;2&amp;quot; stroke-linecap=&amp;quot;round&amp;quot; stroke-linejoin=&amp;quot;round&amp;quot;&amp;gt;&amp;lt;path d=&amp;quot;M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7&amp;quot;&amp;gt;&amp;lt;/path&amp;gt;&amp;lt;path d=&amp;quot;M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z&amp;quot;&amp;gt;&amp;lt;/path&amp;gt;&amp;lt;/svg&amp;gt;&lt;br /&gt;
                    &amp;lt;/span&amp;gt;&lt;br /&gt;
                &amp;lt;/div&amp;gt;&lt;br /&gt;
                &lt;br /&gt;
                &amp;lt;div id=&amp;quot;desc-status-display&amp;quot; style=&amp;quot;display:flex; flex-direction:column; gap:8px;&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;small style=&amp;quot;color:#94a3b8; font-style:italic;&amp;quot;&amp;gt;Sinkronisasi data...&amp;lt;/small&amp;gt;&lt;br /&gt;
                &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;div id=&amp;quot;desc-editor&amp;quot; style=&amp;quot;display:none; margin-top:18px; border-top:1px dashed #e2e8f0; padding-top:18px;&amp;quot;&amp;gt;&lt;br /&gt;
                    ${Object.keys(langs).map(k =&amp;gt; `&lt;br /&gt;
                        &amp;lt;div style=&amp;quot;margin-bottom:12px;&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;label style=&amp;quot;display:block; font-size:11px; font-weight:bold; color:#64748b; margin-bottom:4px;&amp;quot;&amp;gt;${langs[k].label}&amp;lt;/label&amp;gt;&lt;br /&gt;
                            &amp;lt;input type=&amp;quot;text&amp;quot; id=&amp;quot;desc-in-${k}&amp;quot; placeholder=&amp;quot;Tulis deskripsi...&amp;quot; style=&amp;quot;width:100%; padding:10px; font-size:13px; border:1px solid #e2e8f0; border-radius:8px; box-sizing:border-box; outline:none; focus:border-color:#6366f1;&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;/div&amp;gt;&lt;br /&gt;
                    `).join(&#039;&#039;)}&lt;br /&gt;
                    &amp;lt;button id=&amp;quot;desc-save&amp;quot; style=&amp;quot;width:100%; padding:12px; background:#6366f1; color:white; border:none; border-radius:8px; font-size:13px; font-weight:600; cursor:pointer; margin-top:5px;&amp;quot;&amp;gt;Terbitkan&amp;lt;/button&amp;gt;&lt;br /&gt;
                &amp;lt;/div&amp;gt;&lt;br /&gt;
            &amp;lt;/div&amp;gt;`;&lt;br /&gt;
&lt;br /&gt;
        $(&#039;.mw-parser-output&#039;).prepend(html);&lt;br /&gt;
&lt;br /&gt;
        function loadDescStatus() {&lt;br /&gt;
            new mw.Api().get({ action: &#039;query&#039;, prop: &#039;revisions&#039;, titles: storagePage, rvprop: &#039;content&#039;, formatversion: 2 }).done(function(res) {&lt;br /&gt;
                var content = res.query.pages[0].revisions ? res.query.pages[0].revisions[0].content : &amp;quot;{}&amp;quot;;&lt;br /&gt;
                var fullData = JSON.parse(content);&lt;br /&gt;
                var myData = fullData[pageTitle] || {};&lt;br /&gt;
                var $statusBox = $(&#039;#desc-status-display&#039;).empty();&lt;br /&gt;
                var foundAny = false;&lt;br /&gt;
&lt;br /&gt;
                Object.keys(langs).forEach(k =&amp;gt; {&lt;br /&gt;
                    var val = myData[k];&lt;br /&gt;
                    if (val &amp;amp;&amp;amp; val.trim() !== &amp;quot;&amp;quot;) {&lt;br /&gt;
                        foundAny = true;&lt;br /&gt;
                        $statusBox.append(`&lt;br /&gt;
                            &amp;lt;div style=&amp;quot;display:flex; align-items:center; gap:10px;&amp;quot;&amp;gt;&lt;br /&gt;
                                &amp;lt;span style=&amp;quot;background:${langs[k].color}15; color:${langs[k].color}; padding:3px 10px; border-radius:20px; font-size:10px; font-weight:800; border:1px solid ${langs[k].color}30; min-width:35px; text-align:center;&amp;quot;&amp;gt;${langs[k].short}&amp;lt;/span&amp;gt;&lt;br /&gt;
                                &amp;lt;span style=&amp;quot;font-size:13px; color:#334155; line-height:1.4;&amp;quot;&amp;gt;${val}&amp;lt;/span&amp;gt;&lt;br /&gt;
                            &amp;lt;/div&amp;gt;&lt;br /&gt;
                        `);&lt;br /&gt;
                        $(&#039;#desc-in-&#039; + k).val(val);&lt;br /&gt;
                    }&lt;br /&gt;
                });&lt;br /&gt;
&lt;br /&gt;
                if (!foundAny) {&lt;br /&gt;
                    $statusBox.html(&#039;&amp;lt;div style=&amp;quot;color:#cbd5e0; font-size:13px; background:#f8fafc; padding:10px; border-radius:8px; border:1px dashed #e2e8f0;&amp;quot;&amp;gt;Belum ada metadata deskripsi yang dikaitkan dengan entitas ini.&amp;lt;/div&amp;gt;&#039;);&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        $(document).on(&#039;click&#039;, &#039;#desc-open-editor&#039;, function() { $(&#039;#desc-editor&#039;).slideToggle(); });&lt;br /&gt;
&lt;br /&gt;
        $(document).on(&#039;click&#039;, &#039;#desc-save&#039;, function() {&lt;br /&gt;
            if (!isAdmin) { alert(&#039;Akses ditolak. Anda memerlukan izin pengurus.&#039;); return; }&lt;br /&gt;
            var $btn = $(this).text(&#039;Proses Sinkronisasi...&#039;).css(&#039;opacity&#039;,&#039;0.7&#039;);&lt;br /&gt;
            var api = new mw.Api();&lt;br /&gt;
            var newData = { id: $(&#039;#desc-in-id&#039;).val().trim(), en: $(&#039;#desc-in-en&#039;).val().trim(), concise: $(&#039;#desc-in-concise&#039;).val().trim() };&lt;br /&gt;
&lt;br /&gt;
            api.get({ action: &#039;query&#039;, prop: &#039;revisions&#039;, titles: storagePage, rvprop: &#039;content&#039;, formatversion: 2 }).done(function(r) {&lt;br /&gt;
                var json = r.query.pages[0].revisions ? JSON.parse(r.query.pages[0].revisions[0].content) : {};&lt;br /&gt;
                if (!newData.id &amp;amp;&amp;amp; !newData.en &amp;amp;&amp;amp; !newData.concise) { delete json[pageTitle]; } else { json[pageTitle] = newData; }&lt;br /&gt;
&lt;br /&gt;
                api.postWithEditToken({&lt;br /&gt;
                    action: &#039;edit&#039;,&lt;br /&gt;
                    title: storagePage,&lt;br /&gt;
                    text: JSON.stringify(json, null, 2),&lt;br /&gt;
                    summary: &#039;Update Entity Description: &#039; + pageTitle&lt;br /&gt;
                }).done(function() { location.reload(); });&lt;br /&gt;
            });&lt;br /&gt;
        });&lt;br /&gt;
&lt;br /&gt;
        loadDescStatus();&lt;br /&gt;
    });&lt;br /&gt;
})(jQuery, mediaWiki);&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================&lt;br /&gt;
   📍 MIPPEDIA DATA - ULTIMATE TEXT-TO-MAP LOCATOR&lt;br /&gt;
   Fitur: Deteksi lokasi dari teks dengan database label lengkap&lt;br /&gt;
   ========================================================== */&lt;br /&gt;
(function() {&lt;br /&gt;
    $(document).ready(function() {&lt;br /&gt;
        var locationText = &amp;quot;&amp;quot;;&lt;br /&gt;
        &lt;br /&gt;
        // --- DAFTAR LABEL SUPER LENGKAP &amp;amp; MASUK AKAL ---&lt;br /&gt;
        var locationLabels = [&lt;br /&gt;
            // Umum &amp;amp; Geografis&lt;br /&gt;
            &#039;lokasi&#039;, &#039;tempat&#039;, &#039;wilayah&#039;, &#039;daerah&#039;, &#039;koordinat&#039;, &#039;alamat&#039;,&lt;br /&gt;
            // Orang (Biografi)&lt;br /&gt;
            &#039;tempat lahir&#039;, &#039;asal&#039;, &#039;kediaman&#039;, &#039;domisili&#039;, &#039;negara asal&#039;,&lt;br /&gt;
            // Organisasi &amp;amp; Perusahaan&lt;br /&gt;
            &#039;kantor pusat&#039;, &#039;markas&#039;, &#039;cabang utama&#039;, &#039;titik operasi&#039;,&lt;br /&gt;
            // Makanan &amp;amp; Budaya&lt;br /&gt;
            &#039;asal wilayah&#039;, &#039;daerah asal&#039;, &#039;negara sumber&#039;, &#039;kawasan&#039;,&lt;br /&gt;
            // Sejarah &amp;amp; Bangunan&lt;br /&gt;
            &#039;letak&#039;, &#039;posisi&#039;, &#039;titik temu&#039;, &#039;orbit&#039;&lt;br /&gt;
        ];&lt;br /&gt;
&lt;br /&gt;
        // Jalankan pencarian di tabel data (infobox atau wikitable)&lt;br /&gt;
        $(&#039;.wikitable tr, .infobox tr, .mip-data-table tr&#039;).each(function() {&lt;br /&gt;
            var label = $(this).find(&#039;th&#039;).text().toLowerCase().trim();&lt;br /&gt;
            // Hilangkan karakter spesial kayak titik dua biar matching-nya akurat&lt;br /&gt;
            label = label.replace(/[:]/g, &#039;&#039;);&lt;br /&gt;
&lt;br /&gt;
            var isMatch = locationLabels.some(function(target) {&lt;br /&gt;
                return label === target || label.includes(target);&lt;br /&gt;
            });&lt;br /&gt;
&lt;br /&gt;
            if (isMatch) {&lt;br /&gt;
                var rawValue = $(this).find(&#039;td&#039;).text().trim();&lt;br /&gt;
                // Ambil bagian utama sebelum tanda koma, kurung, atau titik koma&lt;br /&gt;
                // Misal: &amp;quot;Bandung, Jawa Barat&amp;quot; -&amp;gt; ambil &amp;quot;Bandung&amp;quot;&lt;br /&gt;
                locationText = rawValue.split(/[,(\[;]/)[0].trim(); &lt;br /&gt;
                &lt;br /&gt;
                if (locationText.length &amp;gt; 2) return false; // Stop jika sudah ketemu yang valid&lt;br /&gt;
            }&lt;br /&gt;
        });&lt;br /&gt;
&lt;br /&gt;
        // Eksekusi Render Peta&lt;br /&gt;
        if (locationText &amp;amp;&amp;amp; locationText.length &amp;gt; 2) {&lt;br /&gt;
            var $mapWrapper = $(&#039;&amp;lt;div&amp;gt;&#039;).css({&lt;br /&gt;
                &#039;margin&#039;: &#039;15px 0&#039;,&lt;br /&gt;
                &#039;padding&#039;: &#039;12px&#039;,&lt;br /&gt;
                &#039;border&#039;: &#039;1px solid #ddd&#039;,&lt;br /&gt;
                &#039;background&#039;: &#039;#ffffff&#039;,&lt;br /&gt;
                &#039;border-radius&#039;: &#039;10px&#039;,&lt;br /&gt;
                &#039;box-shadow&#039;: &#039;0 4px 12px rgba(0,0,0,0.08)&#039;&lt;br /&gt;
            });&lt;br /&gt;
&lt;br /&gt;
            $mapWrapper.append(&#039;&amp;lt;div style=&amp;quot;font-weight:bold; font-size:0.9em; margin-bottom:10px; color:#444; display:flex; align-items:center;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                               &#039;&amp;lt;span style=&amp;quot;margin-right:8px;&amp;quot;&amp;gt;🗺️&amp;lt;/span&amp;gt;Pratinjau Lokasi : &#039; + locationText + &#039;&amp;lt;/div&amp;gt;&#039;);&lt;br /&gt;
&lt;br /&gt;
            // Embed URL dengan pencarian teks (Nominatim)&lt;br /&gt;
            var embedUrl = &amp;quot;https://www.openstreetmap.org/export/embed.html?layer=mapnik&amp;amp;q=&amp;quot; + encodeURIComponent(locationText);&lt;br /&gt;
&lt;br /&gt;
            var $iframe = $(&#039;&amp;lt;iframe&amp;gt;&#039;).attr({&lt;br /&gt;
                &#039;src&#039;: embedUrl,&lt;br /&gt;
                &#039;width&#039;: &#039;100%&#039;,&lt;br /&gt;
                &#039;height&#039;: &#039;280&#039;,&lt;br /&gt;
                &#039;frameborder&#039;: &#039;0&#039;,&lt;br /&gt;
                &#039;style&#039;: &#039;border-radius: 8px; border: 1px solid #eee;&#039;&lt;br /&gt;
            });&lt;br /&gt;
&lt;br /&gt;
            $mapWrapper.append($iframe);&lt;br /&gt;
            &lt;br /&gt;
            // Link eksternal yang lebih rapi&lt;br /&gt;
            var gMapsUrl = &amp;quot;https://www.google.com/maps/search/&amp;quot; + encodeURIComponent(locationText);&lt;br /&gt;
            $mapWrapper.append(&#039;&amp;lt;div style=&amp;quot;text-align:right; margin-top:8px;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                               &#039;&amp;lt;a href=&amp;quot;&#039; + gMapsUrl + &#039;&amp;quot; target=&amp;quot;_blank&amp;quot; style=&amp;quot;font-size:0.75em; color:#6a5acd; font-weight:bold; text-decoration:none; text-transform:uppercase; letter-spacing:0.5px;&amp;quot;&amp;gt;Buka di Google Maps →&amp;lt;/a&amp;gt;&amp;lt;/div&amp;gt;&#039;);&lt;br /&gt;
&lt;br /&gt;
            // Masukkan ke bawah section deskripsi otomatis&lt;br /&gt;
            if ($(&#039;#mip-desc-section&#039;).length) {&lt;br /&gt;
                $(&#039;#mip-desc-section&#039;).after($mapWrapper);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    });&lt;br /&gt;
})();&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://data.mippedia.org/index.php?title=MediaWiki:Common.js&amp;diff=913</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://data.mippedia.org/index.php?title=MediaWiki:Common.js&amp;diff=913"/>
		<updated>2026-06-01T22:27:36Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* ==========================================================&lt;br /&gt;
   ⚡ MIPPEDIA SPEED OPTIMIZER - PURE SPEED &amp;amp; STABLE (V1.1)&lt;br /&gt;
   Features: Instant Link Pre-fetching Engine (No Animation/Pure Performance).&lt;br /&gt;
   Optimization: Zero-flicker, scoped lifecycle protection, advanced anti-cache clutter.&lt;br /&gt;
   Target: Built for maximum long-term stability and bulletproof caching.&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
(function() {&lt;br /&gt;
    // Ambil nama host secara dinamis (contoh: data.mippedia.org)&lt;br /&gt;
    var currentHost = window.location.hostname;&lt;br /&gt;
&lt;br /&gt;
    // --- 🗲 ENGINE PRE-FETCH CORES ---&lt;br /&gt;
    function injectPrefetchLink(url) {&lt;br /&gt;
        // Jaring Pengaman 1: Jangan injeksi jika link prefetch untuk URL ini sudah ada di head browser&lt;br /&gt;
        if (document.querySelector(&#039;link[href=&amp;quot;&#039; + url + &#039;&amp;quot;]&#039;)) return;&lt;br /&gt;
&lt;br /&gt;
        var prefetcher = document.createElement(&#039;link&#039;);&lt;br /&gt;
        prefetcher.rel = &#039;prefetch&#039;;&lt;br /&gt;
        prefetcher.href = url;&lt;br /&gt;
        &lt;br /&gt;
        // Jaring Pengaman 2: Failsafe anti-eror cache jika network mendadak sibuk&lt;br /&gt;
        prefetcher.onerror = function() { prefetcher.remove(); };&lt;br /&gt;
        &lt;br /&gt;
        document.head.appendChild(prefetcher);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function initPrefetchDispatch(href) {&lt;br /&gt;
        // Memanfaatkan requestIdleCallback agar proses prefetch hanya berjalan saat browser senggang &lt;br /&gt;
        // sehingga tidak akan membuat scrolling halaman terasa berat/patah-patah&lt;br /&gt;
        if (window.requestIdleCallback) {&lt;br /&gt;
            window.requestIdleCallback(function() { injectPrefetchLink(href); });&lt;br /&gt;
        } else {&lt;br /&gt;
            setTimeout(function() { injectPrefetchLink(href); }, 20);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // --- 🎮 COGNITIVE EVENT LISTENERS (UNIVERSAL HOVER &amp;amp; TOUCH) ---&lt;br /&gt;
    // Mendengarkan area konten utama MediaWiki (Desktop &amp;amp; Tampilan Mobile HP)&lt;br /&gt;
    $(document).on(&#039;mouseenter pointerdown&#039;, &#039;#mw-content-text a, .mw-body-content a, #bodyContent a, .mw-parser-output a&#039;, function() {&lt;br /&gt;
        var $link = $(this);&lt;br /&gt;
        var href = $link.attr(&#039;href&#039;);&lt;br /&gt;
&lt;br /&gt;
        // --- 🛡️ FILTER STRATA TINGGI: ABREVIASI LINK BERGUNA (ANTI CRASH CACHE) ---&lt;br /&gt;
        // 1. Abaikan link kosong, javascript void, atau buka tab baru (_blank)&lt;br /&gt;
        if (!href || href.startsWith(&#039;#&#039;) || href.startsWith(&#039;javascript:&#039;) || $link.attr(&#039;target&#039;) === &#039;_blank&#039;) return;&lt;br /&gt;
        &lt;br /&gt;
        // 2. Abaikan link merah (artikel belum ada), link sunting teks, riwayat versi, dan aksi form MediaWiki&lt;br /&gt;
        if ($link.hasClass(&#039;new&#039;) || href.includes(&#039;action=&#039;) || href.includes(&#039;diff=&#039;) || href.includes(&#039;oldid=&#039;)) return;&lt;br /&gt;
        &lt;br /&gt;
        // 3. Abaikan link perkakas krusial pengurus / sistem otentikasi (hindari prefetch logout tidak sengaja)&lt;br /&gt;
        if (href.includes(&#039;Istimewa:&#039;) || href.includes(&#039;Special:&#039;) || href.includes(&#039;do=logout&#039;)) return;&lt;br /&gt;
&lt;br /&gt;
        // Pastikan hanya mengeksekusi routing internal ekosistem Mippedia&lt;br /&gt;
        var isInternal = href.indexOf(currentHost) !== -1 || href.startsWith(&#039;/&#039;) || !href.includes(&#039;://&#039;);&lt;br /&gt;
        if (isInternal) {&lt;br /&gt;
            initPrefetchDispatch(href);&lt;br /&gt;
        }&lt;br /&gt;
    });&lt;br /&gt;
})();&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================&lt;br /&gt;
   🌐 MIPPEDIA TAB ROUTER INTEGRATOR - UNIVERSAL TRANSITION (V1.2)&lt;br /&gt;
   Features: Pure Pre-Navigation Routing Simulation on Tab Title.&lt;br /&gt;
   Optimization: Universal trigger for any navigation, 0% page-load flicker.&lt;br /&gt;
   Target: Clean, lightweight, long-term safety.&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
(function() {&lt;br /&gt;
    // Ambil nama host secara dinamis (contoh: data.mippedia.org)&lt;br /&gt;
    var currentHost = window.location.hostname;&lt;br /&gt;
    var routingTimeout = null;&lt;br /&gt;
    var rawOriginalTitle = document.title;&lt;br /&gt;
&lt;br /&gt;
    // --- ENGINE CORE: UBAH JUDUL JADI DOMAIN ---&lt;br /&gt;
    function executeUniversalRouting() {&lt;br /&gt;
        if (routingTimeout) clearTimeout(routingTimeout);&lt;br /&gt;
        &lt;br /&gt;
        // Tangkap judul asli terupdate sebagai jaring pengaman&lt;br /&gt;
        var liveTitle = document.title;&lt;br /&gt;
        if (liveTitle !== currentHost) {&lt;br /&gt;
            rawOriginalTitle = liveTitle;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // SET DOMAIN DI AWAL (Saat aksi diklik / sebelum pindah halaman)&lt;br /&gt;
        document.title = currentHost;&lt;br /&gt;
&lt;br /&gt;
        // Failsafe: Jika dalam 3 detik halaman tidak jadi pindah (batal/koneksi drop),&lt;br /&gt;
        // kembalikan ke judul semula agar tidak tersangkut.&lt;br /&gt;
        routingTimeout = setTimeout(function() {&lt;br /&gt;
            if (document.title === currentHost) {&lt;br /&gt;
                document.title = rawOriginalTitle;&lt;br /&gt;
            }&lt;br /&gt;
        }, 3000);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // --- ⚡ PEMICU 1: UNIVERSAL CLICK CONTROLLER (APAPUN YANG DIKLIK) ---&lt;br /&gt;
    // Menggunakan Vanilla JS Event Listener di tingkat window agar mencakup seluruh elemen tanpa tebang pilih&lt;br /&gt;
    window.addEventListener(&#039;click&#039;, function(e) {&lt;br /&gt;
        // Cari tahu apakah elemen yang diklik berada di dalam tag &amp;lt;a&amp;gt; (Link)&lt;br /&gt;
        var anchor = e.target.closest(&#039;a&#039;);&lt;br /&gt;
        &lt;br /&gt;
        if (anchor) {&lt;br /&gt;
            var href = anchor.getAttribute(&#039;href&#039;);&lt;br /&gt;
            var target = anchor.getAttribute(&#039;target&#039;);&lt;br /&gt;
&lt;br /&gt;
            // Abaikan jika link kosong, link jangkar internal halaman (#), atau buka di tab baru (_blank)&lt;br /&gt;
            if (!href || href.startsWith(&#039;#&#039;) || href.startsWith(&#039;javascript:&#039;) || target === &#039;_blank&#039;) {&lt;br /&gt;
                return;&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
            // Eksekusi jika perpindahan terjadi di domain yang sama (internal routing)&lt;br /&gt;
            var isInternal = href.indexOf(currentHost) !== -1 || href.startsWith(&#039;/&#039;) || !href.includes(&#039;://&#039;);&lt;br /&gt;
            if (isInternal) {&lt;br /&gt;
                executeUniversalRouting();&lt;br /&gt;
            }&lt;br /&gt;
        } else {&lt;br /&gt;
            // JIKA YANG DIKLIK BUKAN LINK (Tapi tombol biasa, widget, atau elemen aksi pemindah halaman lainnya)&lt;br /&gt;
            // Kita cek apakah elemen tersebut memiliki indikasi memicu fungsi perpindahan/loading&lt;br /&gt;
            var elementTag = e.target.tagName.toLowerCase();&lt;br /&gt;
            if (elementTag === &#039;button&#039; || e.target.closest(&#039;button&#039;) || e.target.getAttribute(&#039;role&#039;) === &#039;button&#039;) {&lt;br /&gt;
                executeUniversalRouting();&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }, { passive: true });&lt;br /&gt;
&lt;br /&gt;
    // --- 💾 PEMICU 2: UNIVERSAL SUBMIT CONTROLLER (SIMPAN/FORM) ---&lt;br /&gt;
    // Memicu efek domain saat submit form (Simpan halaman, cari artikel, dll)&lt;br /&gt;
    window.addEventListener(&#039;submit&#039;, function() {&lt;br /&gt;
        executeUniversalRouting();&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    // --- 🛡️ SAFETY GUARDIAN: ANTI STUCK ON TAB BLUR ---&lt;br /&gt;
    // Jika user buru-buru pindah tab sebelum halaman sempat berganti, kembalikan judul asli&lt;br /&gt;
    window.addEventListener(&#039;blur&#039;, function() {&lt;br /&gt;
        if (routingTimeout) clearTimeout(routingTimeout);&lt;br /&gt;
        if (document.title === currentHost) {&lt;br /&gt;
            document.title = rawOriginalTitle;&lt;br /&gt;
        }&lt;br /&gt;
    });&lt;br /&gt;
    window.addEventListener(&#039;pagehide&#039;, function() {&lt;br /&gt;
        if (routingTimeout) clearTimeout(routingTimeout);&lt;br /&gt;
        if (document.title === currentHost) {&lt;br /&gt;
            document.title = rawOriginalTitle;&lt;br /&gt;
        }&lt;br /&gt;
    });&lt;br /&gt;
})();&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================&lt;br /&gt;
   🧠 MIPPEDIA DATA - SMART CONTEXT + AUTO THUMBNAIL (V10.1)&lt;br /&gt;
   Features: Priority Check (ID &amp;gt; EN &amp;gt; CONCISE), Auto-Age, &lt;br /&gt;
             Auto-Bold, Smart Links, Dynamic Context,&lt;br /&gt;
             Targeted Isolation (Safe for Forms), Dynamic Noindex,&lt;br /&gt;
             Aesthetic Centered Empty State + 🚀 Instant Action Hub (3 Buttons)&lt;br /&gt;
   Fixes: Mobile View Visibility &amp;amp; Custom Short URL Route (No /w/)&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
(function() {&lt;br /&gt;
    $(document).ready(function() {&lt;br /&gt;
        var $descSection = $(&#039;#mip-desc-section&#039;), $descBox = $(&#039;#mip-auto-description&#039;),&lt;br /&gt;
            $sourceInfo = $(&#039;#mip-source-info&#039;), $portalLinks = $(&#039;#mip-portal-links&#039;),&lt;br /&gt;
            $projectPortal = $(&#039;#mip-project-portal&#039;), $mainContent = $(&#039;#mw-content-text&#039;);&lt;br /&gt;
        &lt;br /&gt;
        if (!$descBox.length) return;&lt;br /&gt;
&lt;br /&gt;
        var pageTitle = mw.config.get(&#039;wgPageName&#039;).replace(/_/g, &#039; &#039;),&lt;br /&gt;
            cacheKey = &#039;mip_smart_context_thumb_&#039; + pageTitle, now = new Date().getTime(),&lt;br /&gt;
            currentYear = 2026;&lt;br /&gt;
&lt;br /&gt;
        // --- KONFIGURASI PROYEK ---&lt;br /&gt;
        var projects = [&lt;br /&gt;
            { id: &#039;id&#039;, name: &#039;Mippedia bahasa Indonesia&#039;, url: &#039;https://id.mippedia.org/api.php&#039;, base: &#039;https://id.mippedia.org/wiki/&#039;, label: &#039;Mippedia Indonesia&#039; },&lt;br /&gt;
            { id: &#039;en&#039;, name: &#039;Mippedia bahasa Inggris&#039;, url: &#039;https://en.mippedia.org/api.php&#039;, base: &#039;https://en.mippedia.org/wiki/&#039;, label: &#039;Mippedia Inggris&#039; },&lt;br /&gt;
            { id: &#039;concise&#039;, name: &#039;Mippedia bahasa Indonesia ringkas&#039;, url: &#039;https://concise.mippedia.org/api.php&#039;, base: &#039;https://concise.mippedia.org/wiki/&#039;, label: &#039;Mippedia Ringkas&#039; }&lt;br /&gt;
        ];&lt;br /&gt;
&lt;br /&gt;
        // --- 🎨 ANIMASI, HOVER EFFECT &amp;amp; RESPONSIVE STYLE ---&lt;br /&gt;
        if (!$(&#039;#mip-clean-style&#039;).length) {&lt;br /&gt;
            $(&#039;head&#039;).append(&lt;br /&gt;
                &#039;&amp;lt;style id=&amp;quot;mip-clean-style&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                    &#039;@keyframes mipFadeInUp {&#039; +&lt;br /&gt;
                        &#039;from { opacity: 0; transform: translateY(15px); }&#039; +&lt;br /&gt;
                        &#039;to { opacity: 1; transform: translateY(0); }&#039; +&lt;br /&gt;
                    &#039;}&#039; +&lt;br /&gt;
                    &#039;#mip-empty-state-notice {&#039; +&lt;br /&gt;
                        &#039;display: block !important;&#039; + /* Memaksa tampil di seluler/mobile */&lt;br /&gt;
                        &#039;animation: mipFadeInUp 0.6s cubic-bezier(0.16, 1, 0.3, 1) forwards;&#039; +&lt;br /&gt;
                    &#039;}&#039; +&lt;br /&gt;
                    &#039;.mip-btn-container {&#039; +&lt;br /&gt;
                        &#039;display: flex;&#039; +&lt;br /&gt;
                        &#039;flex-wrap: wrap;&#039; + /* Supaya otomatis turun ke bawah kalau di HP */&lt;br /&gt;
                        &#039;justify-content: center;&#039; +&lt;br /&gt;
                        &#039;margin-bottom: 30px;&#039; +&lt;br /&gt;
                        &#039;padding-top: 5px;&#039; +&lt;br /&gt;
                    &#039;}&#039; +&lt;br /&gt;
                    &#039;.mip-action-btn {&#039; +&lt;br /&gt;
                        &#039;display: inline-flex; align-items: center; justify-content: center;&#039; +&lt;br /&gt;
                        &#039;padding: 10px 18px; margin: 6px; font-size: 0.88em; font-weight: 600;&#039; +&lt;br /&gt;
                        &#039;color: #6a5acd !important; background: #ffffff; border: 1.5px solid #6a5acd;&#039; +&lt;br /&gt;
                        &#039;border-radius: 30px; text-decoration: none !important; cursor: pointer;&#039; +&lt;br /&gt;
                        &#039;transition: all 0.25s ease-in-out; box-shadow: 0 2px 5px rgba(106,92,205,0.08);&#039; +&lt;br /&gt;
                        &#039;flex-grow: 1; max-width: 220px; min-width: 150px;&#039; + /* Penyesuaian porsi tombol di HP */&lt;br /&gt;
                    &#039;}&#039; +&lt;br /&gt;
                    &#039;.mip-action-btn:hover {&#039; +&lt;br /&gt;
                        &#039;color: #ffffff !important; background: #6a5acd;&#039; +&lt;br /&gt;
                        &#039;transform: translateY(-2px); box-shadow: 0 4px 12px rgba(106,92,205,0.2);&#039; +&lt;br /&gt;
                    &#039;}&#039; +&lt;br /&gt;
                    &#039;.mip-action-btn:active {&#039; +&lt;br /&gt;
                        &#039;transform: translateY(0);&#039; +&lt;br /&gt;
                    &#039;}&#039; +&lt;br /&gt;
                &#039;&amp;lt;/style&amp;gt;&#039;&lt;br /&gt;
            );&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // --- FUNGSI TOOLS ---&lt;br /&gt;
        function applyAutoBold(text) { return text.replace(new RegExp(&#039;(&#039; + pageTitle + &#039;)&#039;, &#039;gi&#039;), &#039;&amp;lt;strong&amp;gt;$1&amp;lt;/strong&amp;gt;&#039;); }&lt;br /&gt;
        function cleanExtract(text) { return text.replace(/\[\d+\]/g, &#039;&#039;).replace(/\{\{[^}]+\}\}/g, &#039;&#039;).replace(/\(\s*\)/g, &#039;&#039;).replace(/\s\s+/g, &#039; &#039;).trim(); }&lt;br /&gt;
        &lt;br /&gt;
        function applyDynamicContext(text) {&lt;br /&gt;
            var date = new Date();&lt;br /&gt;
            var hari = [&amp;quot;Minggu&amp;quot;, &amp;quot;Senin&amp;quot;, &amp;quot;Selasa&amp;quot;, &amp;quot;Rabu&amp;quot;, &amp;quot;Kamis&amp;quot;, &amp;quot;Jumat&amp;quot;, &amp;quot;Sabtu&amp;quot;];&lt;br /&gt;
            var bulan = [&amp;quot;Januari&amp;quot;, &amp;quot;Februari&amp;quot;, &amp;quot;Maret&amp;quot;, &amp;quot;April&amp;quot;, &amp;quot;Mei&amp;quot;, &amp;quot;Juni&amp;quot;, &amp;quot;Juli&amp;quot;, &amp;quot;Agustus&amp;quot;, &amp;quot;September&amp;quot;, &amp;quot;Oktober&amp;quot;, &amp;quot;November&amp;quot;, &amp;quot;Desember&amp;quot;];&lt;br /&gt;
            var tglSkrg = hari[date.getDay()] + &amp;quot;, &amp;quot; + date.getDate() + &amp;quot; &amp;quot; + bulan[date.getMonth()] + &amp;quot; &amp;quot; + date.getFullYear();&lt;br /&gt;
            return text.replace(/(hari ini|saat ini|sekarang)/gi, &#039;$1 (&#039; + tglSkrg + &#039;)&#039;)&lt;br /&gt;
                .replace(/(\d{1,2}\s(?:Januari|Februari|Maret|April|Mei|Juni|Juli|Agustus|September|Oktober|November|Desember)\s(\d{4}))/gi, function(m, f, y) { &lt;br /&gt;
                    return f + &amp;quot; &amp;lt;span style=&#039;color: #444; font-weight: bold;&#039;&amp;gt;– usia &amp;quot; + (currentYear - parseInt(y)) + &amp;quot; tahun&amp;lt;/span&amp;gt;&amp;quot;; &lt;br /&gt;
                })&lt;br /&gt;
                .replace(/(sejak|tahun)\s(\d{4})/gi, function(m, k, y) {&lt;br /&gt;
                    var gap = currentYear - parseInt(y);&lt;br /&gt;
                    if (gap &amp;gt; 0 &amp;amp;&amp;amp; gap &amp;lt; 100) return k + &amp;quot; &amp;quot; + y + &amp;quot; &amp;lt;small style=&#039;color: #888;&#039;&amp;gt;(&amp;quot; + gap + &amp;quot; thn lalu)&amp;lt;/small&amp;gt;&amp;quot;;&lt;br /&gt;
                    return m;&lt;br /&gt;
                });&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        function applySummary(text) {&lt;br /&gt;
            var limit = 250;&lt;br /&gt;
            if (text.length &amp;lt;= limit) return &#039;&amp;lt;span&amp;gt;&#039; + text + &#039;&amp;lt;/span&amp;gt;&#039;;&lt;br /&gt;
            return &#039;&amp;lt;span&amp;gt;&#039; + text.substring(0, limit) + &#039;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;mip-dots&amp;quot;&amp;gt;... &amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;mip-more&amp;quot; style=&amp;quot;display:none;&amp;quot;&amp;gt;&#039; + text.substring(limit) + &#039;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;mip-read-btn&amp;quot; style=&amp;quot;color: #6a5acd; cursor: pointer; font-weight: bold; margin-left: 5px;&amp;quot;&amp;gt;Baca selengkapnya&amp;lt;/span&amp;gt;&#039;;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // --- SMART LINKS PORTAL ---&lt;br /&gt;
        function buildSmartLinks(currentId, validatedEnTitle) {&lt;br /&gt;
            $portalLinks.empty();&lt;br /&gt;
            var validLinks = [];&lt;br /&gt;
            &lt;br /&gt;
            var checkRequests = projects.filter(p =&amp;gt; p.id !== currentId).map(function(p) {&lt;br /&gt;
                var targetTitle = (p.id === &#039;en&#039; &amp;amp;&amp;amp; validatedEnTitle) ? validatedEnTitle : pageTitle;&lt;br /&gt;
                if (p.id === &#039;en&#039; &amp;amp;&amp;amp; !validatedEnTitle) return $.Deferred().resolve();&lt;br /&gt;
&lt;br /&gt;
                return $.ajax({ url: p.url, data: { action: &#039;query&#039;, titles: targetTitle, format: &#039;json&#039;, origin: &#039;*&#039; }, dataType: &#039;json&#039; })&lt;br /&gt;
                    .then(function(data) { &lt;br /&gt;
                        if (data.query.pages[&amp;quot;-1&amp;quot;] === undefined) { &lt;br /&gt;
                            validLinks.push(&#039;&amp;lt;a href=&amp;quot;&#039; + p.base + encodeURIComponent(targetTitle) + &#039;&amp;quot; target=&amp;quot;_blank&amp;quot; style=&amp;quot;color: #6a5acd; text-decoration: underline; font-weight: bold;&amp;quot;&amp;gt;&#039; + p.label + &#039;&amp;lt;/a&amp;gt;&#039;); &lt;br /&gt;
                        } &lt;br /&gt;
                    });&lt;br /&gt;
            });&lt;br /&gt;
&lt;br /&gt;
            $.when.apply($, checkRequests).done(function() {&lt;br /&gt;
                if (validLinks.length &amp;gt; 0) { $portalLinks.html(validLinks.join(&#039; &amp;lt;span style=&amp;quot;color:#ccc; margin: 0 5px;&amp;quot;&amp;gt;•&amp;lt;/span&amp;gt; &#039;)); $projectPortal.fadeIn(); }&lt;br /&gt;
            });&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // --- 🧠 RENDER EMPTY STATE + INTERACTIVE HUB ---&lt;br /&gt;
        function toggleMippediaLayout(isEmpty) {&lt;br /&gt;
            var $existingNotice = $(&#039;#mip-empty-state-notice&#039;);&lt;br /&gt;
            var userGroups = mw.config.get(&#039;wgUserGroups&#039;) || [];&lt;br /&gt;
            var isSysop = userGroups.indexOf(&#039;sysop&#039;) !== -1;&lt;br /&gt;
&lt;br /&gt;
            var $wikiDataElements = $mainContent.children().not(&#039;#mip-empty-state-notice, #mip-desc-section, script, style, .printfooter&#039;);&lt;br /&gt;
            var $editElements = $(&#039;#ca-edit, .mw-editsection, .wb-editsection, .mip-edit-trigger, [id*=&amp;quot;edit&amp;quot;], [class*=&amp;quot;edit-pencil&amp;quot;]&#039;);&lt;br /&gt;
            var $metaRobots = $(&#039;meta[name=&amp;quot;robots&amp;quot;]&#039;);&lt;br /&gt;
&lt;br /&gt;
            if (isEmpty) {&lt;br /&gt;
                if (!$existingNotice.length) {&lt;br /&gt;
                    // Perbaikan Jalur URL tanpa sub-folder /w/ langsung menembak Short URL root parameter&lt;br /&gt;
                    var createUrlID = &#039;https://id.mippedia.org/index.php?title=&#039; + encodeURIComponent(pageTitle) + &#039;&amp;amp;action=edit&#039;;&lt;br /&gt;
                    var createUrlEN = &#039;https://en.mippedia.org/index.php?title=&#039; + encodeURIComponent(pageTitle) + &#039;&amp;amp;action=edit&#039;;&lt;br /&gt;
                    var createUrlConcise = &#039;https://concise.mippedia.org/index.php?title=&#039; + encodeURIComponent(pageTitle) + &#039;&amp;amp;action=edit&#039;;&lt;br /&gt;
&lt;br /&gt;
                    var noticeHtml = &lt;br /&gt;
                        &#039;&amp;lt;div id=&amp;quot;mip-empty-state-notice&amp;quot; style=&amp;quot;text-align: center; max-width: 600px; margin: 40px auto; padding: 10px; font-family: -apple-system, BlinkMacSystemFont, \&#039;Segoe UI\&#039;, Roboto, sans-serif;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                            &#039;&amp;lt;!-- Ikon Warning Besar --&amp;gt;&#039; +&lt;br /&gt;
                            &#039;&amp;lt;div style=&amp;quot;margin-bottom: 22px; display: inline-block;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                &#039;&amp;lt;svg width=&amp;quot;64&amp;quot; height=&amp;quot;64&amp;quot; viewBox=&amp;quot;0 0 24 24&amp;quot; fill=&amp;quot;none&amp;quot; stroke=&amp;quot;#d9534f&amp;quot; stroke-width=&amp;quot;1.8&amp;quot; stroke-linecap=&amp;quot;round&amp;quot; stroke-linejoin=&amp;quot;round&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                    &#039;&amp;lt;path d=&amp;quot;M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z&amp;quot;&amp;gt;&amp;lt;/path&amp;gt;&#039; +&lt;br /&gt;
                                    &#039;&amp;lt;line x1=&amp;quot;12&amp;quot; y1=&amp;quot;9&amp;quot; x2=&amp;quot;12&amp;quot; y2=&amp;quot;13&amp;quot;&amp;gt;&amp;lt;/line&amp;gt;&#039; +&lt;br /&gt;
                                    &#039;&amp;lt;line x1=&amp;quot;12&amp;quot; y1=&amp;quot;17&amp;quot; x2=&amp;quot;12.01&amp;quot; y2=&amp;quot;17&amp;quot;&amp;gt;&amp;lt;/line&amp;gt;&#039; +&lt;br /&gt;
                                &#039;&amp;lt;/&#039; + &#039;svg&amp;gt;&#039; +&lt;br /&gt;
                            &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
                            &#039;&amp;lt;!-- Judul Utama --&amp;gt;&#039; +&lt;br /&gt;
                            &#039;&amp;lt;h4 style=&amp;quot;color: #2c3e50; margin: 0 0 12px 0; font-size: 1.35em; font-weight: 700; letter-spacing: -0.3px;&amp;quot;&amp;gt;Item Data Struktur Tidak Memiliki Sumber Artikel&amp;lt;/h4&amp;gt;&#039; +&lt;br /&gt;
                            &#039;&amp;lt;!-- Deskripsi Utama --&amp;gt;&#039; +&lt;br /&gt;
                            &#039;&amp;lt;p style=&amp;quot;color: #555; margin: 0 0 25px 0; font-size: 0.98em; line-height: 1.6;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                &#039;Item data ini saat ini &amp;lt;strong&amp;gt;tidak memiliki artikel rujukan satu pun&amp;lt;/strong&amp;gt; di Mippedia Indonesia, Mippedia Inggris, maupun Mippedia Indonesia Ringkas.&#039; +&lt;br /&gt;
                            &#039;&amp;lt;/p&amp;gt;&#039; +&lt;br /&gt;
                            &lt;br /&gt;
                            &#039;&amp;lt;!-- 🚀 INSTANT ACTION HUB (Flexbox-Responsive Mobile &amp;amp; URL No /w/) --&amp;gt;&#039; +&lt;br /&gt;
                            &#039;&amp;lt;div class=&amp;quot;mip-btn-container&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                &#039;&amp;lt;a href=&amp;quot;&#039; + createUrlID + &#039;&amp;quot; target=&amp;quot;_blank&amp;quot; class=&amp;quot;mip-action-btn&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                    &#039;&amp;lt;span style=&amp;quot;margin-right: 6px;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;Buat Artikel ID&#039; +&lt;br /&gt;
                                &#039;&amp;lt;/a&amp;gt;&#039; +&lt;br /&gt;
                                &#039;&amp;lt;a href=&amp;quot;&#039; + createUrlEN + &#039;&amp;quot; target=&amp;quot;_blank&amp;quot; class=&amp;quot;mip-action-btn&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                    &#039;&amp;lt;span style=&amp;quot;margin-right: 6px;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;Buat Artikel EN&#039; +&lt;br /&gt;
                                &#039;&amp;lt;/a&amp;gt;&#039; +&lt;br /&gt;
                                &#039;&amp;lt;a href=&amp;quot;&#039; + createUrlConcise + &#039;&amp;quot; target=&amp;quot;_blank&amp;quot; class=&amp;quot;mip-action-btn&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                    &#039;&amp;lt;span style=&amp;quot;margin-right: 6px;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;Buat Artikel Ringkas&#039; +&lt;br /&gt;
                                &#039;&amp;lt;/a&amp;gt;&#039; +&lt;br /&gt;
                            &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
&lt;br /&gt;
                            &#039;&amp;lt;!-- Catatan Kaki Info Kecil --&amp;gt;&#039; +&lt;br /&gt;
                            &#039;&amp;lt;div style=&amp;quot;font-size: 0.85em; color: #a0a0a0; line-height: 1.5; font-style: italic; border-top: 1px solid #f0f0f0; padding-top: 15px;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                &#039;Informasi: Item data yang tidak terikat dengan artikel ensiklopedia apa pun dalam ekosistem Mippedia akan dihapus secara otomatis oleh pengurus dalam waktu dekat.&#039; +&lt;br /&gt;
                            &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
                        &#039;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
                    $mainContent.prepend(noticeHtml);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                $wikiDataElements.hide();&lt;br /&gt;
                $descSection.hide();&lt;br /&gt;
&lt;br /&gt;
                if (!isSysop) {&lt;br /&gt;
                    $editElements.css({ &#039;pointer-events&#039;: &#039;none&#039;, &#039;opacity&#039;: &#039;0.3&#039;, &#039;cursor&#039;: &#039;not-allowed&#039; }).hide();&lt;br /&gt;
                    $(document).on(&#039;keydown.miplock&#039;, function(e) {&lt;br /&gt;
                        if (e.key.toLowerCase() === &#039;e&#039; &amp;amp;&amp;amp; !$(e.target).is(&#039;input, textarea&#039;)) {&lt;br /&gt;
                            e.preventDefault();&lt;br /&gt;
                            return false;&lt;br /&gt;
                        }&lt;br /&gt;
                    });&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                mw.config.set(&#039;wgRobotsPolicies&#039;, { &#039;index&#039;: &#039;noindex&#039;, &#039;follow&#039;: &#039;nofollow&#039; });&lt;br /&gt;
                if ($metaRobots.length) {&lt;br /&gt;
                    $metaRobots.attr(&#039;content&#039;, &#039;noindex, nofollow&#039;);&lt;br /&gt;
                } else {&lt;br /&gt;
                    $(&#039;head&#039;).append(&#039;&amp;lt;meta name=&amp;quot;robots&amp;quot; content=&amp;quot;noindex, nofollow&amp;quot;&amp;gt;&#039;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
            } else {&lt;br /&gt;
                if ($existingNotice.length) $existingNotice.remove();&lt;br /&gt;
                &lt;br /&gt;
                $wikiDataElements.show();&lt;br /&gt;
                $descSection.show();&lt;br /&gt;
&lt;br /&gt;
                if (!isSysop) {&lt;br /&gt;
                    $(document).off(&#039;keydown.miplock&#039;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                mw.config.set(&#039;wgRobotsPolicies&#039;, { &#039;index&#039;: &#039;index&#039;, &#039;follow&#039;: &#039;follow&#039; });&lt;br /&gt;
                if ($metaRobots.length) {&lt;br /&gt;
                    $metaRobots.attr(&#039;content&#039;, &#039;index, follow&#039;);&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // --- SISTEM PRIORITAS ---&lt;br /&gt;
        var cached = JSON.parse(localStorage.getItem(cacheKey) || &amp;quot;{}&amp;quot;);&lt;br /&gt;
        var globalEnTitle = cached.enTitle || &amp;quot;&amp;quot;; &lt;br /&gt;
&lt;br /&gt;
        function init() {&lt;br /&gt;
            var pPrimary = projects[0]; &lt;br /&gt;
            $.ajax({&lt;br /&gt;
                url: pPrimary.url,&lt;br /&gt;
                data: { action: &#039;query&#039;, prop: &#039;revisions|pageimages|langlinks&#039;, lllang: &#039;en&#039;, rvprop: &#039;timestamp&#039;, piprop: &#039;thumbnail&#039;, pithumbsize: 150, titles: pageTitle, format: &#039;json&#039;, origin: &#039;*&#039; },&lt;br /&gt;
                dataType: &#039;json&#039;,&lt;br /&gt;
                success: function(res) {&lt;br /&gt;
                    var pg = res.query.pages, id = Object.keys(pg)[0];&lt;br /&gt;
                    var latestTS = (id != &amp;quot;-1&amp;quot;) ? pg[id].revisions[0].timestamp : &amp;quot;0&amp;quot;;&lt;br /&gt;
                    var thumbUrl = (id != &amp;quot;-1&amp;quot; &amp;amp;&amp;amp; pg[id].thumbnail) ? pg[id].thumbnail.source : &amp;quot;&amp;quot;;&lt;br /&gt;
                    &lt;br /&gt;
                    if (id != &amp;quot;-1&amp;quot; &amp;amp;&amp;amp; pg[id].langlinks &amp;amp;&amp;amp; pg[id].langlinks[0]) {&lt;br /&gt;
                        globalEnTitle = pg[id].langlinks[0][&#039;*&#039;];&lt;br /&gt;
                    }&lt;br /&gt;
&lt;br /&gt;
                    if (cached.content &amp;amp;&amp;amp; cached.ts === latestTS &amp;amp;&amp;amp; latestTS !== &amp;quot;0&amp;quot; &amp;amp;&amp;amp; !cached.isEmpty) {&lt;br /&gt;
                        toggleMippediaLayout(false);&lt;br /&gt;
                        renderAll(cached.p, cached.content, cached.isTrans, cached.orig, cached.img, cached.customUrl, cached.enTitle);&lt;br /&gt;
                    } else { &lt;br /&gt;
                        fetchPriorityData(0, latestTS, thumbUrl); &lt;br /&gt;
                    }&lt;br /&gt;
                },&lt;br /&gt;
                error: function() { &lt;br /&gt;
                    if (cached.content) {&lt;br /&gt;
                        toggleMippediaLayout(cached.isEmpty || false);&lt;br /&gt;
                        if (!cached.isEmpty) renderAll(cached.p, cached.content, cached.isTrans, cached.orig, cached.img, cached.customUrl, cached.enTitle);&lt;br /&gt;
                    } &lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        function fetchPriorityData(index, newTS, img) {&lt;br /&gt;
            if (index &amp;gt;= projects.length) {&lt;br /&gt;
                localStorage.setItem(cacheKey, JSON.stringify({isEmpty: true, ts: newTS, content: &amp;quot;&amp;quot;}));&lt;br /&gt;
                toggleMippediaLayout(true);&lt;br /&gt;
                return;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            var p = projects[index];&lt;br /&gt;
&lt;br /&gt;
            if (p.id === &#039;en&#039;) {&lt;br /&gt;
                if (!globalEnTitle) {&lt;br /&gt;
                    $.ajax({&lt;br /&gt;
                        url: &#039;https://concise.mippedia.org/api.php&#039;,&lt;br /&gt;
                        data: { action: &#039;query&#039;, prop: &#039;langlinks&#039;, lllang: &#039;en&#039;, titles: pageTitle, format: &#039;json&#039;, origin: &#039;*&#039; },&lt;br /&gt;
                        dataType: &#039;json&#039;,&lt;br /&gt;
                        async: false, &lt;br /&gt;
                        success: function(cRes) {&lt;br /&gt;
                            var cPg = cRes.query.pages, cId = Object.keys(cPg)[0];&lt;br /&gt;
                            if (cId != &amp;quot;-1&amp;quot; &amp;amp;&amp;amp; cPg[cId].langlinks &amp;amp;&amp;amp; cPg[cId].langlinks[0]) {&lt;br /&gt;
                                globalEnTitle = cPg[cId].langlinks[0][&#039;*&#039;];&lt;br /&gt;
                            }&lt;br /&gt;
                        }&lt;br /&gt;
                    });&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                if (globalEnTitle) {&lt;br /&gt;
                    $.ajax({&lt;br /&gt;
                        url: p.url,&lt;br /&gt;
                        data: { action: &#039;query&#039;, prop: &#039;extracts&#039;, exintro: 1, explaintext: 1, titles: globalEnTitle, format: &#039;json&#039;, origin: &#039;*&#039; },&lt;br /&gt;
                        dataType: &#039;json&#039;,&lt;br /&gt;
                        success: function(data) {&lt;br /&gt;
                            var pages = data.query.pages, pageId = Object.keys(pages)[0];&lt;br /&gt;
                            if (pageId != &amp;quot;-1&amp;quot; &amp;amp;&amp;amp; pages[pageId].extract) {&lt;br /&gt;
                                var extract = cleanExtract(pages[pageId].extract);&lt;br /&gt;
                                finalize(p, extract, false, &amp;quot;&amp;quot;, newTS, img, p.base + encodeURIComponent(globalEnTitle), globalEnTitle);&lt;br /&gt;
                            } else {&lt;br /&gt;
                                fetchPriorityData(index + 1, newTS, img);&lt;br /&gt;
                            }&lt;br /&gt;
                        },&lt;br /&gt;
                        error: function() { fetchPriorityData(index + 1, newTS, img); }&lt;br /&gt;
                    });&lt;br /&gt;
                } else {&lt;br /&gt;
                    fetchPriorityData(index + 1, newTS, img);&lt;br /&gt;
                }&lt;br /&gt;
            } else {&lt;br /&gt;
                $.ajax({&lt;br /&gt;
                    url: p.url,&lt;br /&gt;
                    data: { action: &#039;query&#039;, prop: &#039;extracts&#039;, exintro: 1, explaintext: 1, titles: pageTitle, format: &#039;json&#039;, origin: &#039;*&#039; },&lt;br /&gt;
                    dataType: &#039;json&#039;,&lt;br /&gt;
                    success: function(data) {&lt;br /&gt;
                        var pages = data.query.pages, pageId = Object.keys(pages)[0];&lt;br /&gt;
                        if (pageId != &amp;quot;-1&amp;quot; &amp;amp;&amp;amp; pages[pageId].extract) {&lt;br /&gt;
                            var extract = cleanExtract(pages[pageId].extract);&lt;br /&gt;
                            finalize(p, extract, false, &amp;quot;&amp;quot;, newTS, img, p.base + encodeURIComponent(pageTitle), globalEnTitle); &lt;br /&gt;
                        } else {&lt;br /&gt;
                            fetchPriorityData(index + 1, newTS, img);&lt;br /&gt;
                        }&lt;br /&gt;
                    },&lt;br /&gt;
                    error: function() { fetchPriorityData(index + 1, newTS, img); }&lt;br /&gt;
                });&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        function finalize(p, c, t, o, ts, img, customUrl, enTitle) {&lt;br /&gt;
            localStorage.setItem(cacheKey, JSON.stringify({isEmpty: false, p:p, content:c, isTrans:t, orig:o, ts:ts, img:img, customUrl: customUrl, enTitle: enTitle}));&lt;br /&gt;
            toggleMippediaLayout(false); &lt;br /&gt;
            renderAll(p, c, t, o, img, customUrl, enTitle);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        function renderAll(p, currentText, isTranslated, originalText, img, customUrl, enTitle) {&lt;br /&gt;
            var processedText = applyAutoBold(applyDynamicContext(currentText));&lt;br /&gt;
            var thumbHtml = img ? &#039;&amp;lt;div style=&amp;quot;float: right; margin-left: 15px; margin-bottom: 10px; border: 1px solid #ddd; padding: 3px; background: #fff; border-radius: 4px; box-shadow: 0 2px 4px rgba(0,0,0,0.1);&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;&#039;+img+&#039;&amp;quot; style=&amp;quot;max-width: 100px; display: block; height: auto;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039; : &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
            if (!$mainContent.find(&#039;#mip-desc-section&#039;).length) {&lt;br /&gt;
                $mainContent.prepend($descSection);&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            $descSection.show();&lt;br /&gt;
            $descBox.show().html(thumbHtml + applySummary(processedText) + &#039;&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;);&lt;br /&gt;
            &lt;br /&gt;
            var targetLink = customUrl ? customUrl : p.base + encodeURIComponent(pageTitle);&lt;br /&gt;
            var footer = &#039;&amp;lt;div style=&amp;quot;font-size: 0.9em; color: #777;&amp;quot;&amp;gt;Sumber : &amp;lt;a href=&amp;quot;&#039; + targetLink + &#039;&amp;quot; target=&amp;quot;_blank&amp;quot; style=&amp;quot;color: #6a5acd; font-weight: bold; text-decoration: none;&amp;quot;&amp;gt;&#039; + p.name + &#039;.&amp;lt;/a&amp;gt;&#039;;&lt;br /&gt;
            if (isTranslated) { footer += &#039;&amp;lt;br&amp;gt;&amp;lt;span style=&amp;quot;font-size: 0.85em; font-style: italic;&amp;quot;&amp;gt;(Diterjemahkan secara otomatis)&amp;lt;/span&amp;gt; &amp;lt;span id=&amp;quot;mip-toggle-orig&amp;quot; style=&amp;quot;color: #6a5acd; cursor: pointer; text-decoration: underline; margin-left: 5px;&amp;quot;&amp;gt;Tampilkan versi asli&amp;lt;/span&amp;gt;&#039;; }&lt;br /&gt;
            $sourceInfo.show().html(footer);&lt;br /&gt;
            &lt;br /&gt;
            buildSmartLinks(p.id, enTitle);&lt;br /&gt;
            &lt;br /&gt;
            $(document).off(&#039;click&#039;, &#039;.mip-read-btn&#039;).on(&#039;click&#039;, &#039;.mip-read-btn&#039;, function() { $(this).hide(); $(&#039;.mip-dots&#039;).hide(); $(&#039;.mip-more&#039;).fadeIn(); });&lt;br /&gt;
            $(document).off(&#039;click&#039;, &#039;#mip-toggle-orig&#039;).on(&#039;click&#039;, &#039;#mip-toggle-orig&#039;, function() {&lt;br /&gt;
                var isOrig = ($(this).text() === &#039;Tampilkan versi asli&#039;);&lt;br /&gt;
                var textToDisplay = applyAutoBold(applyDynamicContext(isOrig ? originalText : currentText));&lt;br /&gt;
                $descBox.html(thumbHtml + applySummary(textToDisplay) + &#039;&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;);&lt;br /&gt;
                $(this).text(isOrig ? &#039;Tampilkan terjemahan&#039; : &#039;Tampilkan versi asli&#039;);&lt;br /&gt;
            });&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        init();&lt;br /&gt;
    });&lt;br /&gt;
})();&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================&lt;br /&gt;
   🚀 MIPPEDIA DATA - CORE SYSTEM (ULTIMATE BUNDLE)&lt;br /&gt;
   Status: FINAL &amp;amp; REVISED (Visual Fix + Permission Logic)&lt;br /&gt;
   Fix: Mobile Responsive Notification Position&lt;br /&gt;
   ========================================================== */&lt;br /&gt;
&lt;br /&gt;
(function() {&lt;br /&gt;
    $(document).ready(function() {&lt;br /&gt;
        // --- 1. FILTER GLOBAL (Namespace 0 &amp;amp; Bukan Halaman Utama) ---&lt;br /&gt;
        if (mw.config.get(&#039;wgNamespaceNumber&#039;) !== 0 || &lt;br /&gt;
            mw.config.get(&#039;wgIsMainPage&#039;) || &lt;br /&gt;
            mw.config.get(&#039;wgAction&#039;) !== &#039;view&#039;) return;&lt;br /&gt;
&lt;br /&gt;
        var pageTitle = mw.config.get(&#039;wgPageName&#039;);&lt;br /&gt;
        var dataPage = &#039;MediaWiki:Sitelinks-Data.json&#039;;&lt;br /&gt;
        var userGroups = mw.config.get(&#039;wgUserGroups&#039;);&lt;br /&gt;
        var isAdmin = userGroups.includes(&#039;sysop&#039;) || userGroups.includes(&#039;interface-admin&#039;);&lt;br /&gt;
&lt;br /&gt;
        var projects = {&lt;br /&gt;
            &#039;id&#039;: { name: &#039;ID&#039;, url: &#039;https://id.mippedia.org/api.php&#039;, base: &#039;https://id.mippedia.org/wiki/&#039;, color: &#039;#6a5acd&#039; },&lt;br /&gt;
            &#039;en&#039;: { name: &#039;EN&#039;, url: &#039;https://en.mippedia.org/api.php&#039;, base: &#039;https://en.mippedia.org/wiki/&#039;, color: &#039;#4169e1&#039; },&lt;br /&gt;
            &#039;concise&#039;: { name: &#039;Concise&#039;, url: &#039;https://concise.mippedia.org/api.php&#039;, base: &#039;https://concise.mippedia.org/wiki/&#039;, color: &#039;#20b2aa&#039; }&lt;br /&gt;
        };&lt;br /&gt;
&lt;br /&gt;
        // --- 2. KOTAK NOTIFIKASI INFORMASI MODERN (FIXED MOBILE POSITION) ---&lt;br /&gt;
        function showBoxNotif(title, msg, type) {&lt;br /&gt;
            $(&#039;.mip-box-notif&#039;).remove();&lt;br /&gt;
            var theme = type === &#039;success&#039; ? {bg:&#039;#e6fffa&#039;, border:&#039;#38b2ac&#039;, text:&#039;#234e52&#039;, icon:&#039;&#039;} : &lt;br /&gt;
                        {bg:&#039;#fff5f5&#039;, border:&#039;#f56565&#039;, text:&#039;#742a2a&#039;, icon:&#039;&#039;};&lt;br /&gt;
            &lt;br /&gt;
            // Logika CSS Responsif untuk posisi&lt;br /&gt;
            var isMobile = window.innerWidth &amp;lt;= 768;&lt;br /&gt;
            var desktopStyle = &amp;quot;top:25px; right:25px; width:350px;&amp;quot;;&lt;br /&gt;
            var mobileStyle = &amp;quot;top:15px; left:50%; transform:translateX(-50%); width:90%; max-width:400px;&amp;quot;;&lt;br /&gt;
            var finalPos = isMobile ? mobileStyle : desktopStyle;&lt;br /&gt;
&lt;br /&gt;
            var $notif = $(&#039;&amp;lt;div class=&amp;quot;mip-box-notif&amp;quot; style=&amp;quot;position:fixed; &#039; + finalPos + &#039; background:&#039;+theme.bg+&#039;; border-left:6px solid &#039;+theme.border+&#039;; padding:18px; z-index:10001; border-radius:12px; box-shadow:0 15px 35px rgba(0,0,0,0.2); font-family:sans-serif; animation:mipSlideIn 0.4s ease-out;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                &#039;&amp;lt;div style=&amp;quot;display:flex; align-items:center; gap:12px; margin-bottom:8px;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                    &#039;&amp;lt;span style=&amp;quot;font-size:20px;&amp;quot;&amp;gt;&#039;+theme.icon+&#039;&amp;lt;/span&amp;gt;&#039; +&lt;br /&gt;
                    &#039;&amp;lt;strong style=&amp;quot;color:&#039;+theme.text+&#039;; font-size:15px; letter-spacing:-0.3px;&amp;quot;&amp;gt;&#039;+title+&#039;&amp;lt;/strong&amp;gt;&#039; +&lt;br /&gt;
                &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
                &#039;&amp;lt;p style=&amp;quot;margin:0; font-size:13px; color:&#039;+theme.text+&#039;; line-height:1.6; opacity:0.9;&amp;quot;&amp;gt;&#039;+msg+&#039;&amp;lt;/p&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;/div&amp;gt;&#039;).appendTo(&#039;body&#039;);&lt;br /&gt;
&lt;br /&gt;
            setTimeout(function() { $notif.fadeOut(function(){ $(this).remove(); }); }, 5500);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // --- 3. UI GENERATOR (DIPERTEBAL) ---&lt;br /&gt;
&lt;br /&gt;
      // A. Header Pro&lt;br /&gt;
        var headerHtml = &#039;&amp;lt;div id=&amp;quot;mip-header&amp;quot; style=&amp;quot;background:#f8f9fa; border:1px solid #ddd; border-left:6px solid #6a5acd; padding:18px; margin-bottom:25px; border-radius:6px; box-shadow:inset 0 0 10px rgba(0,0,0,0.02);&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;div style=&amp;quot;display:flex; align-items:center; gap:10px; margin-bottom:8px;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;span style=&amp;quot;background:#6a5acd; color:white; padding:3px 10px; border-radius:4px; font-size:11px; font-weight:bold; text-transform:uppercase; letter-spacing:0.5px;&amp;quot;&amp;gt;Basis Data Terstruktur&amp;lt;/span&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;strong style=&amp;quot;color:#111; font-size:16px;&amp;quot;&amp;gt;&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;p style=&amp;quot;margin:0; font-size:13px; color:#444; line-height:1.6;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
            &#039;Halaman ini adalah metadata entitas repositori pusat yang disinkronisasi secara otomatis lintas ekosistem. &#039; +&lt;br /&gt;
            &#039;Informasi di bawah ini bersifat teknis dan bebas digunakan sebagai referensi data terbuka bagi semua orang di seluruh dunia berdasarkan lisensi atribusi yang sesuai.&#039; +&lt;br /&gt;
            &#039;&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
        // B. Connector Box&lt;br /&gt;
        var editBtn = &#039;&amp;lt;span id=&amp;quot;mip-open-editor&amp;quot; style=&amp;quot;cursor:pointer; font-size:20px; color:#6a5acd; opacity:0.8; transition:0.3s;&amp;quot; onmouseover=&amp;quot;this.style.opacity=1&amp;quot; onmouseout=&amp;quot;this.style.opacity=0.8&amp;quot;&amp;gt;✎&amp;lt;/span&amp;gt;&#039;;&lt;br /&gt;
        var connectorHtml = &#039;&amp;lt;div id=&amp;quot;mip-connector&amp;quot; style=&amp;quot;background:#fff; border:1px solid #e2e8f0; border-radius:16px; padding:22px; margin-top:30px; box-shadow:0 10px 25px rgba(0,0,0,0.04);&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;div style=&amp;quot;display:flex; justify-content:space-between; align-items:center; margin-bottom:20px;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;strong style=&amp;quot;font-size:15px; color:#1a202c; display:flex; align-items:center; gap:8px;&amp;quot;&amp;gt;ID situs&amp;lt;/strong&amp;gt;&#039;+editBtn+&#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;div id=&amp;quot;mip-display&amp;quot; style=&amp;quot;display:flex; gap:12px; flex-wrap:wrap;&amp;quot;&amp;gt;&amp;lt;small style=&amp;quot;color:#a0aec0;&amp;quot;&amp;gt;Mensinkronisasi basis data...&amp;lt;/small&amp;gt;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;div id=&amp;quot;mip-editor&amp;quot; style=&amp;quot;display:none; margin-top:20px; border-top:2px solid #f7fafc; padding-top:20px;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                Object.keys(projects).map(p =&amp;gt; &#039;&amp;lt;div style=&amp;quot;margin-bottom:12px; display:flex; gap:10px;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;width:75px; font-size:11px; font-weight:bold; background:#edf2f7; display:flex; align-items:center; justify-content:center; border-radius:8px; color:#4a5568;&amp;quot;&amp;gt;&#039;+projects[p].name+&#039;&amp;lt;/span&amp;gt;&amp;lt;input type=&amp;quot;text&amp;quot; id=&amp;quot;in-&#039;+p+&#039;&amp;quot; placeholder=&amp;quot;Judul artikel di &#039;+projects[p].name+&#039;...&amp;quot; style=&amp;quot;flex:1; padding:10px; font-size:13px; border:1.5px solid #e2e8f0; border-radius:10px; outline:none; transition:0.2s;&amp;quot; onfocus=&amp;quot;this.style.borderColor=\&#039;#6a5acd\&#039;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;).join(&#039;&#039;) +&lt;br /&gt;
                &#039;&amp;lt;button id=&amp;quot;mip-save&amp;quot; style=&amp;quot;width:100%; padding:14px; background:#6a5acd; color:white; border:none; border-radius:12px; font-size:14px; font-weight:bold; cursor:pointer; box-shadow:0 4px 12px rgba(106,90,205,0.3); transition:0.3s;&amp;quot;&amp;gt;Terbitkan&amp;lt;/button&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
        // C. Footer Lisensi Lengkap&lt;br /&gt;
        var footerHtml = &#039;&amp;lt;div id=&amp;quot;mip-footer&amp;quot; style=&amp;quot;background:#fafafa; border:1px solid #eee; border-radius:10px; padding:20px; margin-top:30px; text-align:center;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;div style=&amp;quot;font-size:11px; color:#718096; font-weight:800; text-transform:uppercase; letter-spacing:1px; margin-bottom:10px;&amp;quot;&amp;gt;Lisensi, Atribusi &amp;amp; Penggunaan Data&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;p style=&amp;quot;margin:0 0 10px; font-size:13px; color:#4a5568; line-height:1.6;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
            &#039;Seluruh data terstruktur yang tersaji dalam repositori ini merupakan milik publik dan tersedia di bawah lisensi resmi &#039; +&lt;br /&gt;
            &#039;&amp;lt;a href=&amp;quot;https://creativecommons.org/licenses/by-sa/4.0/&amp;quot; target=&amp;quot;_blank&amp;quot; style=&amp;quot;color:#6a5acd; text-decoration:none; font-weight:700;&amp;quot;&amp;gt;Creative Commons Attribution-ShareAlike 4.0 International&amp;lt;/a&amp;gt;.&#039; +&lt;br /&gt;
            &#039;&amp;lt;/p&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;p style=&amp;quot;margin:0; font-size:12px; color:#a0aec0;&amp;quot;&amp;gt;Akses API dan penggunaan data secara massal wajib mencantumkan atribusi kepada &amp;lt;strong&amp;gt;Mippedia Community&amp;lt;/strong&amp;gt; selaku pengelola proyek.&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
        // Injeksi&lt;br /&gt;
        $(&#039;#mw-content-text&#039;).prepend(headerHtml);&lt;br /&gt;
        $(&#039;#mw-content-text&#039;).append(connectorHtml).append(footerHtml);&lt;br /&gt;
&lt;br /&gt;
        // --- 4. LOGIC ENGINE ---&lt;br /&gt;
        function loadLinks() {&lt;br /&gt;
            new mw.Api().get({ action: &#039;query&#039;, prop: &#039;revisions&#039;, titles: dataPage, rvprop: &#039;content&#039;, formatversion: 2 }).done(function(d) {&lt;br /&gt;
                var json = d.query.pages[0].revisions ? JSON.parse(d.query.pages[0].revisions[0].content) : {};&lt;br /&gt;
                var data = json[pageTitle] || {};&lt;br /&gt;
                var $box = $(&#039;#mip-display&#039;).empty();&lt;br /&gt;
                var found = false;&lt;br /&gt;
                Object.keys(projects).forEach(p =&amp;gt; {&lt;br /&gt;
                    if (data[p]) {&lt;br /&gt;
                        found = true;&lt;br /&gt;
                        $box.append(&#039;&amp;lt;a style=&amp;quot;background:&#039;+projects[p].color+&#039;; color:white; padding:8px 16px; border-radius:10px; font-size:12px; font-weight:bold; text-decoration:none; border-bottom:3px solid rgba(0,0,0,0.15);&amp;quot; href=&amp;quot;&#039;+projects[p].base+encodeURIComponent(data[p])+&#039;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Mippedia &#039;+projects[p].name+&#039;: &#039;+data[p]+&#039;&amp;lt;/a&amp;gt;&#039;);&lt;br /&gt;
                        $(&#039;#in-&#039; + p).val(data[p]);&lt;br /&gt;
                    }&lt;br /&gt;
                });&lt;br /&gt;
                if (!found) $box.html(&#039;&amp;lt;em style=&amp;quot;color:#cbd5e0; font-size:13px;&amp;quot;&amp;gt;Entitas ini belum terhubung ke cabang Mippedia manapun.&amp;lt;/em&amp;gt;&#039;);&lt;br /&gt;
            });&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        $(document).on(&#039;click&#039;, &#039;#mip-save&#039;, function() {&lt;br /&gt;
            // CEK IZIN: Tolak user biasa&lt;br /&gt;
            if (!isAdmin) {&lt;br /&gt;
                showBoxNotif(&#039;Suntingan anda tidak di terbitkan&#039;, &#039;Halaman ini dilindungi. Hanya &amp;lt;b&amp;gt;Pengurus&amp;lt;/b&amp;gt; yang memiliki otoritas untuk memodifikasi metadata ekosistem secara langsung.&#039;, &#039;error&#039;);&lt;br /&gt;
                return;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            var $btn = $(this).text(&#039;Sedang Memvalidasi...&#039;).prop(&#039;disabled&#039;, true);&lt;br /&gt;
            var api = new mw.Api();&lt;br /&gt;
            var newData = {}, promises = [], invalid = [], isDel = true;&lt;br /&gt;
&lt;br /&gt;
            Object.keys(projects).forEach(p =&amp;gt; {&lt;br /&gt;
                var v = $(&#039;#in-&#039; + p).val().trim();&lt;br /&gt;
                if (v) {&lt;br /&gt;
                    isDel = false;&lt;br /&gt;
                    promises.push($.ajax({ url: projects[p].url, data: { action: &#039;query&#039;, titles: v, format: &#039;json&#039;, origin: &#039;*&#039; }, dataType: &#039;json&#039; }).done(function(res){&lt;br /&gt;
                        if (res.query.pages[&amp;quot;-1&amp;quot;]) invalid.push(projects[p].name); else newData[p] = v;&lt;br /&gt;
                    }));&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
&lt;br /&gt;
            $.when.apply($, promises).then(function() {&lt;br /&gt;
                if (invalid.length &amp;gt; 0) {&lt;br /&gt;
                    showBoxNotif(&#039;Suntingan anda tidak di terbitkan&#039;, &#039;Artikel dengan judul tersebut tidak ditemukan di basis data Mippedia cabang: &#039; + invalid.join(&#039;, &#039;) + &#039;. Periksa kembali ejaan dan kapitalisasi.&#039;, &#039;error&#039;);&lt;br /&gt;
                    $btn.text(&#039;Terbitkan&#039;).prop(&#039;disabled&#039;, false); return;&lt;br /&gt;
                }&lt;br /&gt;
                &lt;br /&gt;
                api.get({ action: &#039;query&#039;, prop: &#039;revisions&#039;, titles: dataPage, rvprop: &#039;content&#039;, formatversion: 2 }).done(function(r) {&lt;br /&gt;
                    var full = r.query.pages[0].revisions ? JSON.parse(r.query.pages[0].revisions[0].content) : {};&lt;br /&gt;
                    if (isDel) delete full[pageTitle]; else full[pageTitle] = newData;&lt;br /&gt;
                    &lt;br /&gt;
                    api.postWithEditToken({ action: &#039;edit&#039;, title: dataPage, text: JSON.stringify(full, null, 2), summary: &#039;Sync Metadata: &#039; + pageTitle })&lt;br /&gt;
                    .done(function() {&lt;br /&gt;
                        showBoxNotif(&#039;Suntingan anda berhasil di terbitkan!&#039;, &#039;Metadata entitas berhasil disinkronisasi ke seluruh jaringan ekosistem Mippedia.&#039;, &#039;success&#039;);&lt;br /&gt;
                        setTimeout(function(){ location.reload(); }, 1500);&lt;br /&gt;
                    }).fail(function(c) {&lt;br /&gt;
                        showBoxNotif(&#039;Gagal Menyimpan&#039;, &#039;Terjadi kesalahan pada token API atau koneksi server. Kode: &#039; + c, &#039;error&#039;);&lt;br /&gt;
                        $btn.text(&#039;Simpan &amp;amp; Sinkronkan Data&#039;).prop(&#039;disabled&#039;, false);&lt;br /&gt;
                    });&lt;br /&gt;
                });&lt;br /&gt;
            });&lt;br /&gt;
        });&lt;br /&gt;
&lt;br /&gt;
        $(document).on(&#039;click&#039;, &#039;#mip-open-editor&#039;, function() { $(&#039;#mip-editor&#039;).slideToggle(); });&lt;br /&gt;
        loadLinks();&lt;br /&gt;
    });&lt;br /&gt;
})();&lt;br /&gt;
&lt;br /&gt;
(function() {&lt;br /&gt;
    // Fungsi utama suntik teks&lt;br /&gt;
    function forcePreload() {&lt;br /&gt;
        var ns = mw.config.get(&#039;wgNamespaceNumber&#039;);&lt;br /&gt;
        var pageExists = mw.config.get(&#039;wgArticleId&#039;) &amp;gt; 0;&lt;br /&gt;
        &lt;br /&gt;
        // Cek Namespace Utama &amp;amp; Halaman Baru&lt;br /&gt;
        if (ns === 0 &amp;amp;&amp;amp; !pageExists) {&lt;br /&gt;
            // Cari textarea secara spesifik (Desktop &amp;amp; Mobile punya selector beda)&lt;br /&gt;
            var $textbox = $(&#039;#wpTextbox1, textarea.mw-ui-input, .editor-container textarea&#039;);&lt;br /&gt;
            &lt;br /&gt;
            if ($textbox.length &amp;amp;&amp;amp; $textbox.val().trim() === &amp;quot;&amp;quot;) {&lt;br /&gt;
                var pageName = mw.config.get(&#039;wgTitle&#039;);&lt;br /&gt;
                $textbox.val(&#039;{{Infobox umum\n|nama = &#039; + pageName + &#039;\n}}&#039;);&lt;br /&gt;
                console.log(&amp;quot;Mippedia: Infobox injected!&amp;quot;);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // 1. Jalankan pas halaman beres load&lt;br /&gt;
    $(document).ready(forcePreload);&lt;br /&gt;
&lt;br /&gt;
    // 2. Jalankan tiap ada klik (karena mobile buka editor pake klik tanpa refresh)&lt;br /&gt;
    $(document).on(&#039;click&#039;, function() {&lt;br /&gt;
        setTimeout(forcePreload, 800); // Kasih delay dikit nunggu overlay muncul&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    // 3. Pake MutationObserver buat mantau elemen yang baru muncul secara gaib&lt;br /&gt;
    var observer = new MutationObserver(function() {&lt;br /&gt;
        forcePreload();&lt;br /&gt;
    });&lt;br /&gt;
    observer.observe(document.body, { childList: true, subtree: true });&lt;br /&gt;
})();&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================&lt;br /&gt;
   🚀 MIPPEDIA DATA - CONTENT GUARD (MODIFIED FOR RELATED)&lt;br /&gt;
   ========================================================== */&lt;br /&gt;
(function() {&lt;br /&gt;
    function handleBlock(e) {&lt;br /&gt;
        var ns = mw.config.get(&#039;wgNamespaceNumber&#039;);&lt;br /&gt;
        if (ns !== 0 || mw.config.get(&#039;wgIsMainPage&#039;)) return;&lt;br /&gt;
&lt;br /&gt;
        var $el = $(e.currentTarget);&lt;br /&gt;
        &lt;br /&gt;
        if ($el.closest(&#039;.mw-parser-output&#039;).length &amp;amp;&amp;amp; $el.text().toLowerCase().includes(&#039;buat item&#039;)) {&lt;br /&gt;
            return; &lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        var $textbox = $(&#039;#wpTextbox1, .editor-container textarea, textarea.mw-ui-input&#039;);&lt;br /&gt;
        &lt;br /&gt;
        if ($textbox.length) {&lt;br /&gt;
            var content = $textbox.val() || &amp;quot;&amp;quot;;&lt;br /&gt;
            &lt;br /&gt;
            // Pengecekan: Harus ada {{Infobox ATAU setidaknya ada kode #related&lt;br /&gt;
            var hasInfobox = content.includes(&#039;{{Infobox&#039;);&lt;br /&gt;
            var hasRelated = content.includes(&#039;#related:&#039;);&lt;br /&gt;
&lt;br /&gt;
            if (!hasInfobox &amp;amp;&amp;amp; !hasRelated) {&lt;br /&gt;
                e.preventDefault();&lt;br /&gt;
                e.stopPropagation();&lt;br /&gt;
                e.stopImmediatePropagation();&lt;br /&gt;
&lt;br /&gt;
                window.alert(&amp;quot;SUNTINGAN ANDA TIDAK BISA DI TERBITKAN!\n\nMippedia Data bukan tempat untuk menulis artikel ensiklopedia, Jika anda ingin membuat artikel ensiklopedia bukan di sini tempat nya.\n&amp;quot;);&lt;br /&gt;
                return false;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    $(document).on(&#039;click mousedown touchstart&#039;, &lt;br /&gt;
        &#039;#wpSave, .editor-save, .mw-ui-button.primary, button[type=&amp;quot;submit&amp;quot;], .save-button, .header-action button&#039;, &lt;br /&gt;
        function(e) {&lt;br /&gt;
            handleBlock(e);&lt;br /&gt;
        }&lt;br /&gt;
    );&lt;br /&gt;
&lt;br /&gt;
    window.addEventListener(&#039;submit&#039;, function(e) {&lt;br /&gt;
        handleBlock(e);&lt;br /&gt;
    }, true);&lt;br /&gt;
})();&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================&lt;br /&gt;
   🛡️ MIPPEDIA CORE SYSTEM - NEURAL ENGINE V12&lt;br /&gt;
   Update: Brain Upgrade - Semantic Search &amp;amp; Anti-Duplicate&lt;br /&gt;
   Semua fitur asli (Patroli, Promo, Kategori) tetap UTUH.&lt;br /&gt;
   ========================================================== */&lt;br /&gt;
mw.hook(&#039;postEdit&#039;).add(function() {&lt;br /&gt;
    var rawUser = mw.config.get(&#039;wgUserName&#039;);&lt;br /&gt;
    var userName = rawUser ? rawUser.replace(/_/g, &#039; &#039;) : &#039;Anonim&#039;;&lt;br /&gt;
    var isPatroli = (userName === &#039;Admin&#039;);&lt;br /&gt;
    &lt;br /&gt;
    if (mw.config.get(&#039;wgNamespaceNumber&#039;) !== 0) return;&lt;br /&gt;
&lt;br /&gt;
    var api = new mw.Api();&lt;br /&gt;
    var pageTitle = mw.config.get(&#039;wgPageName&#039;).replace(/_/g, &#039; &#039;);&lt;br /&gt;
&lt;br /&gt;
    api.get({&lt;br /&gt;
        action: &#039;query&#039;,&lt;br /&gt;
        titles: pageTitle,&lt;br /&gt;
        prop: &#039;revisions|categories|links&#039;,&lt;br /&gt;
        rvprop: &#039;content&#039;,&lt;br /&gt;
        clshow: &#039;!hidden&#039;,&lt;br /&gt;
        pllimit: &#039;max&#039;&lt;br /&gt;
    }).done(function(resData) {&lt;br /&gt;
        var page = resData.query.pages[Object.keys(resData.query.pages)[0]];&lt;br /&gt;
        if (!page || !page.revisions) return;&lt;br /&gt;
&lt;br /&gt;
        var rawContent = page.revisions[0][&#039;*&#039;];&lt;br /&gt;
        var content = rawContent;&lt;br /&gt;
        var summaryParts = [];&lt;br /&gt;
&lt;br /&gt;
        // --- 2. SUPER INTELLIGENCE RELATED (UPGRADE OTAK V12) ---&lt;br /&gt;
        // Cek jumlah related saat ini&lt;br /&gt;
        var currentRelatedMatch = content.match(/\{\{#related:.*?\}\}/g) || [];&lt;br /&gt;
        &lt;br /&gt;
        // Jika kurang dari 3, kita jalankan otak pencarian canggih&lt;br /&gt;
        if (currentRelatedMatch.length &amp;lt; 3) {&lt;br /&gt;
            // Hapus yang lama dulu agar tidak ada duplikat atau &amp;quot;pake yang bekas&amp;quot;&lt;br /&gt;
            content = content.replace(/\n*\{\{#related:.*?\}\}/g, &#039;&#039;);&lt;br /&gt;
&lt;br /&gt;
            // Langkah A: Ambil kandidat dari Search Engine (Ranking Skor)&lt;br /&gt;
            api.get({&lt;br /&gt;
                action: &#039;query&#039;,&lt;br /&gt;
                list: &#039;search&#039;,&lt;br /&gt;
                srsearch: pageTitle, // Gunakan judul sebagai basis pencarian semantic&lt;br /&gt;
                srlimit: 15,&lt;br /&gt;
                srprop: &#039;&#039;&lt;br /&gt;
            }).done(function(searchRes) {&lt;br /&gt;
                var candidates = {};&lt;br /&gt;
&lt;br /&gt;
                // Masukkan hasil pencarian ke pool skor&lt;br /&gt;
                if (searchRes.query &amp;amp;&amp;amp; searchRes.query.search) {&lt;br /&gt;
                    searchRes.query.search.forEach(function(item, index) {&lt;br /&gt;
                        if (item.title === pageTitle) return;&lt;br /&gt;
                        candidates[item.title] = (15 - index); // Skor berdasarkan urutan relevansi&lt;br /&gt;
                    });&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                // Langkah B: Tambah skor jika artikel ada di daftar Link Internal&lt;br /&gt;
                if (page.links) {&lt;br /&gt;
                    page.links.forEach(function(link) {&lt;br /&gt;
                        if (link.title === pageTitle) return;&lt;br /&gt;
                        candidates[link.title] = (candidates[link.title] || 0) + 5; // Bonus skor link&lt;br /&gt;
                    });&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                // Langkah C: Urutkan berdasarkan skor tertinggi (yang paling nyambung)&lt;br /&gt;
                var sortedTitles = Object.keys(candidates).sort(function(a, b) {&lt;br /&gt;
                    return candidates[b] - candidates[a];&lt;br /&gt;
                });&lt;br /&gt;
&lt;br /&gt;
                // Ambil TOP 3&lt;br /&gt;
                var finalRelated = sortedTitles.filter(t =&amp;gt; t.indexOf(&#039;:&#039;) === -1).slice(0, 3);&lt;br /&gt;
&lt;br /&gt;
                if (finalRelated.length &amp;gt; 0) {&lt;br /&gt;
                    var relatedTags = &#039;\n\n&#039; + finalRelated.map(t =&amp;gt; &#039;{{#related: &#039; + t + &#039;}}&#039;).join(&#039;\n&#039;);&lt;br /&gt;
                    content += relatedTags;&lt;br /&gt;
                    summaryParts.push(&#039;NeuralRelated&#039;);&lt;br /&gt;
                }&lt;br /&gt;
                &lt;br /&gt;
                runPatroliAndSave();&lt;br /&gt;
            });&lt;br /&gt;
        } else {&lt;br /&gt;
            runPatroliAndSave();&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        function runPatroliAndSave() {&lt;br /&gt;
            // --- 3. PATROLI ENGINE (FITUR ASLI - TETAP BERFUNGSI) ---&lt;br /&gt;
            if (isPatroli) {&lt;br /&gt;
                var placeholders = [];&lt;br /&gt;
                // Lindungi Brankas: Template, Header, Kategori, Ref, dan Kalimat Pembuka&lt;br /&gt;
                content = content.replace(/(\{\{[\s\S]*?\}\}|==+.*?==+|\[\[Kategori:.*?\]\]|&amp;lt;ref[\s\S]*?&amp;lt;\/ref&amp;gt;|^.*?adalah)/gi, function(match) {&lt;br /&gt;
                    placeholders.push(match);&lt;br /&gt;
                    return &#039;___MIP_SKIP_&#039; + (placeholders.length - 1) + &#039;___&#039;;&lt;br /&gt;
                });&lt;br /&gt;
&lt;br /&gt;
                // Proses Auto-Link (Wajib ambil daftar AllPages dulu)&lt;br /&gt;
                api.get({ action: &#039;query&#039;, list: &#039;allpages&#039;, apnamespace: 0, aplimit: &#039;max&#039; }).done(function(apData) {&lt;br /&gt;
                    var allTitles = apData.query.allpages.map(p =&amp;gt; p.title);&lt;br /&gt;
                    var lowerTitles = allTitles.map(t =&amp;gt; t.toLowerCase());&lt;br /&gt;
&lt;br /&gt;
                    var tokens = content.split(/(\s+|\[\[|\]\])/);&lt;br /&gt;
                    var inLink = false;&lt;br /&gt;
                    for (var i = 0; i &amp;lt; tokens.length; i++) {&lt;br /&gt;
                        if (tokens[i] === &#039;[[&#039; ) { inLink = true; continue; }&lt;br /&gt;
                        if (tokens[i] === &#039;]]&#039; ) { inLink = false; continue; }&lt;br /&gt;
                        if (inLink || tokens[i].trim().length &amp;lt; 3 || tokens[i].includes(&#039;___MIP_SKIP_&#039;)) continue;&lt;br /&gt;
&lt;br /&gt;
                        var wordsInToken = tokens[i].match(/\b\w+\b/g);&lt;br /&gt;
                        if (wordsInToken) {&lt;br /&gt;
                            wordsInToken.forEach(function(word) {&lt;br /&gt;
                                var idx = lowerTitles.indexOf(word.toLowerCase());&lt;br /&gt;
                                if (idx !== -1 &amp;amp;&amp;amp; allTitles[idx] !== pageTitle) {&lt;br /&gt;
                                    tokens[i] = tokens[i].replace(new RegExp(&#039;\\b&#039; + word + &#039;\\b&#039;, &#039;g&#039;), &#039;[[&#039; + allTitles[idx] + &#039;|&#039; + word + &#039;]]&#039;);&lt;br /&gt;
                                }&lt;br /&gt;
                            });&lt;br /&gt;
                        }&lt;br /&gt;
                    }&lt;br /&gt;
                    content = tokens.join(&#039;&#039;);&lt;br /&gt;
                    &lt;br /&gt;
                    // Kembalikan dari Brankas&lt;br /&gt;
                    content = content.replace(/___MIP_SKIP_(\d+)___/g, function(match, id) { return placeholders[id]; });&lt;br /&gt;
&lt;br /&gt;
                    // Bersihkan Link Merah&lt;br /&gt;
                    content = content.replace(/\[\[([^|\]:]+)\]\]/g, function(match, p1) {&lt;br /&gt;
                        return lowerTitles.includes(p1.toLowerCase()) ? match : p1;&lt;br /&gt;
                    });&lt;br /&gt;
&lt;br /&gt;
                    saveAction();&lt;br /&gt;
                });&lt;br /&gt;
            } else {&lt;br /&gt;
                saveAction();&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        function saveAction() {&lt;br /&gt;
            // --- 4. EKSEKUSI ---&lt;br /&gt;
            if (content.trim() !== rawContent.trim()) {&lt;br /&gt;
                api.postWithToken(&#039;edit&#039;, {&lt;br /&gt;
                    action: &#039;edit&#039;,&lt;br /&gt;
                    title: pageTitle,&lt;br /&gt;
                    text: content,&lt;br /&gt;
                    summary: &#039;Mippedia Neural Engine V12: &#039; + summaryParts.join(&#039;, &#039;),&lt;br /&gt;
                    bot: true, markasbot: true&lt;br /&gt;
                }).done(function() { location.reload(); });&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    });&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================&lt;br /&gt;
   🌐 MIPPEDIA SHORTDESC - DATA CENTER (PREMIUM UI)&lt;br /&gt;
   Status: INDEPENDENT &amp;amp; REFINED VISUAL&lt;br /&gt;
   Storage: MediaWiki:ShortDesc-Data.json&lt;br /&gt;
   ========================================================== */&lt;br /&gt;
(function($, mw) {&lt;br /&gt;
    &amp;quot;use strict&amp;quot;;&lt;br /&gt;
    $(document).ready(function() {&lt;br /&gt;
        if (mw.config.get(&#039;wgNamespaceNumber&#039;) !== 0 || mw.config.get(&#039;wgIsMainPage&#039;)) return;&lt;br /&gt;
&lt;br /&gt;
        var pageTitle = mw.config.get(&#039;wgPageName&#039;);&lt;br /&gt;
        var storagePage = &#039;MediaWiki:ShortDesc-Data.json&#039;;&lt;br /&gt;
        var isAdmin = mw.config.get(&#039;wgUserGroups&#039;).some(g =&amp;gt; [&#039;sysop&#039;, &#039;interface-admin&#039;].includes(g));&lt;br /&gt;
&lt;br /&gt;
        var langs = {&lt;br /&gt;
            id: { label: &#039;Mippedia bahasa Indonesia&#039;, short: &#039;ID&#039;, color: &#039;#6366f1&#039; },&lt;br /&gt;
            en: { label: &#039;Mippedia bahasa Inggris&#039;, short: &#039;EN&#039;, color: &#039;#3b82f6&#039; },&lt;br /&gt;
            concise: { label: &#039;Mippedia bahasa Indonesia ringkas&#039;, short: &#039;CON&#039;, color: &#039;#14b8a6&#039; }&lt;br /&gt;
        };&lt;br /&gt;
&lt;br /&gt;
        // UI Box dengan Spasi dan Desain Baru&lt;br /&gt;
        var html = `&lt;br /&gt;
            &amp;lt;div id=&amp;quot;desc-manager&amp;quot; style=&amp;quot;background:#ffffff; border:1px solid #f1f5f9; border-left:4px solid #6366f1; border-radius:12px; padding:20px; margin: 20px 0 25px 0; box-shadow:0 4px 12px rgba(0,0,0,0.03); font-family: -apple-system,BlinkMacSystemFont,&#039;Segoe UI&#039;,Roboto,sans-serif;&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;div style=&amp;quot;display:flex; justify-content:space-between; align-items:center; margin-bottom:12px;&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;span style=&amp;quot;font-size:13px; font-weight:700; color:#475569; text-transform:uppercase; letter-spacing:0.5px; display:flex; align-items:center; gap:6px;&amp;quot;&amp;gt;&lt;br /&gt;
                        Label Deskripsi&lt;br /&gt;
                    &amp;lt;/span&amp;gt;&lt;br /&gt;
                    &amp;lt;span id=&amp;quot;desc-open-editor&amp;quot; style=&amp;quot;cursor:pointer; padding:5px; transition:0.2s;&amp;quot; title=&amp;quot;Edit Deskripsi&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;svg width=&amp;quot;16&amp;quot; height=&amp;quot;16&amp;quot; viewBox=&amp;quot;0 0 24 24&amp;quot; fill=&amp;quot;none&amp;quot; stroke=&amp;quot;#94a3b8&amp;quot; stroke-width=&amp;quot;2&amp;quot; stroke-linecap=&amp;quot;round&amp;quot; stroke-linejoin=&amp;quot;round&amp;quot;&amp;gt;&amp;lt;path d=&amp;quot;M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7&amp;quot;&amp;gt;&amp;lt;/path&amp;gt;&amp;lt;path d=&amp;quot;M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z&amp;quot;&amp;gt;&amp;lt;/path&amp;gt;&amp;lt;/svg&amp;gt;&lt;br /&gt;
                    &amp;lt;/span&amp;gt;&lt;br /&gt;
                &amp;lt;/div&amp;gt;&lt;br /&gt;
                &lt;br /&gt;
                &amp;lt;div id=&amp;quot;desc-status-display&amp;quot; style=&amp;quot;display:flex; flex-direction:column; gap:8px;&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;small style=&amp;quot;color:#94a3b8; font-style:italic;&amp;quot;&amp;gt;Sinkronisasi data...&amp;lt;/small&amp;gt;&lt;br /&gt;
                &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;div id=&amp;quot;desc-editor&amp;quot; style=&amp;quot;display:none; margin-top:18px; border-top:1px dashed #e2e8f0; padding-top:18px;&amp;quot;&amp;gt;&lt;br /&gt;
                    ${Object.keys(langs).map(k =&amp;gt; `&lt;br /&gt;
                        &amp;lt;div style=&amp;quot;margin-bottom:12px;&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;label style=&amp;quot;display:block; font-size:11px; font-weight:bold; color:#64748b; margin-bottom:4px;&amp;quot;&amp;gt;${langs[k].label}&amp;lt;/label&amp;gt;&lt;br /&gt;
                            &amp;lt;input type=&amp;quot;text&amp;quot; id=&amp;quot;desc-in-${k}&amp;quot; placeholder=&amp;quot;Tulis deskripsi...&amp;quot; style=&amp;quot;width:100%; padding:10px; font-size:13px; border:1px solid #e2e8f0; border-radius:8px; box-sizing:border-box; outline:none; focus:border-color:#6366f1;&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;/div&amp;gt;&lt;br /&gt;
                    `).join(&#039;&#039;)}&lt;br /&gt;
                    &amp;lt;button id=&amp;quot;desc-save&amp;quot; style=&amp;quot;width:100%; padding:12px; background:#6366f1; color:white; border:none; border-radius:8px; font-size:13px; font-weight:600; cursor:pointer; margin-top:5px;&amp;quot;&amp;gt;Terbitkan&amp;lt;/button&amp;gt;&lt;br /&gt;
                &amp;lt;/div&amp;gt;&lt;br /&gt;
            &amp;lt;/div&amp;gt;`;&lt;br /&gt;
&lt;br /&gt;
        $(&#039;.mw-parser-output&#039;).prepend(html);&lt;br /&gt;
&lt;br /&gt;
        function loadDescStatus() {&lt;br /&gt;
            new mw.Api().get({ action: &#039;query&#039;, prop: &#039;revisions&#039;, titles: storagePage, rvprop: &#039;content&#039;, formatversion: 2 }).done(function(res) {&lt;br /&gt;
                var content = res.query.pages[0].revisions ? res.query.pages[0].revisions[0].content : &amp;quot;{}&amp;quot;;&lt;br /&gt;
                var fullData = JSON.parse(content);&lt;br /&gt;
                var myData = fullData[pageTitle] || {};&lt;br /&gt;
                var $statusBox = $(&#039;#desc-status-display&#039;).empty();&lt;br /&gt;
                var foundAny = false;&lt;br /&gt;
&lt;br /&gt;
                Object.keys(langs).forEach(k =&amp;gt; {&lt;br /&gt;
                    var val = myData[k];&lt;br /&gt;
                    if (val &amp;amp;&amp;amp; val.trim() !== &amp;quot;&amp;quot;) {&lt;br /&gt;
                        foundAny = true;&lt;br /&gt;
                        $statusBox.append(`&lt;br /&gt;
                            &amp;lt;div style=&amp;quot;display:flex; align-items:center; gap:10px;&amp;quot;&amp;gt;&lt;br /&gt;
                                &amp;lt;span style=&amp;quot;background:${langs[k].color}15; color:${langs[k].color}; padding:3px 10px; border-radius:20px; font-size:10px; font-weight:800; border:1px solid ${langs[k].color}30; min-width:35px; text-align:center;&amp;quot;&amp;gt;${langs[k].short}&amp;lt;/span&amp;gt;&lt;br /&gt;
                                &amp;lt;span style=&amp;quot;font-size:13px; color:#334155; line-height:1.4;&amp;quot;&amp;gt;${val}&amp;lt;/span&amp;gt;&lt;br /&gt;
                            &amp;lt;/div&amp;gt;&lt;br /&gt;
                        `);&lt;br /&gt;
                        $(&#039;#desc-in-&#039; + k).val(val);&lt;br /&gt;
                    }&lt;br /&gt;
                });&lt;br /&gt;
&lt;br /&gt;
                if (!foundAny) {&lt;br /&gt;
                    $statusBox.html(&#039;&amp;lt;div style=&amp;quot;color:#cbd5e0; font-size:13px; background:#f8fafc; padding:10px; border-radius:8px; border:1px dashed #e2e8f0;&amp;quot;&amp;gt;Belum ada metadata deskripsi yang dikaitkan dengan entitas ini.&amp;lt;/div&amp;gt;&#039;);&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        $(document).on(&#039;click&#039;, &#039;#desc-open-editor&#039;, function() { $(&#039;#desc-editor&#039;).slideToggle(); });&lt;br /&gt;
&lt;br /&gt;
        $(document).on(&#039;click&#039;, &#039;#desc-save&#039;, function() {&lt;br /&gt;
            if (!isAdmin) { alert(&#039;Akses ditolak. Anda memerlukan izin pengurus.&#039;); return; }&lt;br /&gt;
            var $btn = $(this).text(&#039;Proses Sinkronisasi...&#039;).css(&#039;opacity&#039;,&#039;0.7&#039;);&lt;br /&gt;
            var api = new mw.Api();&lt;br /&gt;
            var newData = { id: $(&#039;#desc-in-id&#039;).val().trim(), en: $(&#039;#desc-in-en&#039;).val().trim(), concise: $(&#039;#desc-in-concise&#039;).val().trim() };&lt;br /&gt;
&lt;br /&gt;
            api.get({ action: &#039;query&#039;, prop: &#039;revisions&#039;, titles: storagePage, rvprop: &#039;content&#039;, formatversion: 2 }).done(function(r) {&lt;br /&gt;
                var json = r.query.pages[0].revisions ? JSON.parse(r.query.pages[0].revisions[0].content) : {};&lt;br /&gt;
                if (!newData.id &amp;amp;&amp;amp; !newData.en &amp;amp;&amp;amp; !newData.concise) { delete json[pageTitle]; } else { json[pageTitle] = newData; }&lt;br /&gt;
&lt;br /&gt;
                api.postWithEditToken({&lt;br /&gt;
                    action: &#039;edit&#039;,&lt;br /&gt;
                    title: storagePage,&lt;br /&gt;
                    text: JSON.stringify(json, null, 2),&lt;br /&gt;
                    summary: &#039;Update Entity Description: &#039; + pageTitle&lt;br /&gt;
                }).done(function() { location.reload(); });&lt;br /&gt;
            });&lt;br /&gt;
        });&lt;br /&gt;
&lt;br /&gt;
        loadDescStatus();&lt;br /&gt;
    });&lt;br /&gt;
})(jQuery, mediaWiki);&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================&lt;br /&gt;
   📍 MIPPEDIA DATA - ULTIMATE TEXT-TO-MAP LOCATOR&lt;br /&gt;
   Fitur: Deteksi lokasi dari teks dengan database label lengkap&lt;br /&gt;
   ========================================================== */&lt;br /&gt;
(function() {&lt;br /&gt;
    $(document).ready(function() {&lt;br /&gt;
        var locationText = &amp;quot;&amp;quot;;&lt;br /&gt;
        &lt;br /&gt;
        // --- DAFTAR LABEL SUPER LENGKAP &amp;amp; MASUK AKAL ---&lt;br /&gt;
        var locationLabels = [&lt;br /&gt;
            // Umum &amp;amp; Geografis&lt;br /&gt;
            &#039;lokasi&#039;, &#039;tempat&#039;, &#039;wilayah&#039;, &#039;daerah&#039;, &#039;koordinat&#039;, &#039;alamat&#039;,&lt;br /&gt;
            // Orang (Biografi)&lt;br /&gt;
            &#039;tempat lahir&#039;, &#039;asal&#039;, &#039;kediaman&#039;, &#039;domisili&#039;, &#039;negara asal&#039;,&lt;br /&gt;
            // Organisasi &amp;amp; Perusahaan&lt;br /&gt;
            &#039;kantor pusat&#039;, &#039;markas&#039;, &#039;cabang utama&#039;, &#039;titik operasi&#039;,&lt;br /&gt;
            // Makanan &amp;amp; Budaya&lt;br /&gt;
            &#039;asal wilayah&#039;, &#039;daerah asal&#039;, &#039;negara sumber&#039;, &#039;kawasan&#039;,&lt;br /&gt;
            // Sejarah &amp;amp; Bangunan&lt;br /&gt;
            &#039;letak&#039;, &#039;posisi&#039;, &#039;titik temu&#039;, &#039;orbit&#039;&lt;br /&gt;
        ];&lt;br /&gt;
&lt;br /&gt;
        // Jalankan pencarian di tabel data (infobox atau wikitable)&lt;br /&gt;
        $(&#039;.wikitable tr, .infobox tr, .mip-data-table tr&#039;).each(function() {&lt;br /&gt;
            var label = $(this).find(&#039;th&#039;).text().toLowerCase().trim();&lt;br /&gt;
            // Hilangkan karakter spesial kayak titik dua biar matching-nya akurat&lt;br /&gt;
            label = label.replace(/[:]/g, &#039;&#039;);&lt;br /&gt;
&lt;br /&gt;
            var isMatch = locationLabels.some(function(target) {&lt;br /&gt;
                return label === target || label.includes(target);&lt;br /&gt;
            });&lt;br /&gt;
&lt;br /&gt;
            if (isMatch) {&lt;br /&gt;
                var rawValue = $(this).find(&#039;td&#039;).text().trim();&lt;br /&gt;
                // Ambil bagian utama sebelum tanda koma, kurung, atau titik koma&lt;br /&gt;
                // Misal: &amp;quot;Bandung, Jawa Barat&amp;quot; -&amp;gt; ambil &amp;quot;Bandung&amp;quot;&lt;br /&gt;
                locationText = rawValue.split(/[,(\[;]/)[0].trim(); &lt;br /&gt;
                &lt;br /&gt;
                if (locationText.length &amp;gt; 2) return false; // Stop jika sudah ketemu yang valid&lt;br /&gt;
            }&lt;br /&gt;
        });&lt;br /&gt;
&lt;br /&gt;
        // Eksekusi Render Peta&lt;br /&gt;
        if (locationText &amp;amp;&amp;amp; locationText.length &amp;gt; 2) {&lt;br /&gt;
            var $mapWrapper = $(&#039;&amp;lt;div&amp;gt;&#039;).css({&lt;br /&gt;
                &#039;margin&#039;: &#039;15px 0&#039;,&lt;br /&gt;
                &#039;padding&#039;: &#039;12px&#039;,&lt;br /&gt;
                &#039;border&#039;: &#039;1px solid #ddd&#039;,&lt;br /&gt;
                &#039;background&#039;: &#039;#ffffff&#039;,&lt;br /&gt;
                &#039;border-radius&#039;: &#039;10px&#039;,&lt;br /&gt;
                &#039;box-shadow&#039;: &#039;0 4px 12px rgba(0,0,0,0.08)&#039;&lt;br /&gt;
            });&lt;br /&gt;
&lt;br /&gt;
            $mapWrapper.append(&#039;&amp;lt;div style=&amp;quot;font-weight:bold; font-size:0.9em; margin-bottom:10px; color:#444; display:flex; align-items:center;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                               &#039;&amp;lt;span style=&amp;quot;margin-right:8px;&amp;quot;&amp;gt;🗺️&amp;lt;/span&amp;gt;Pratinjau Lokasi : &#039; + locationText + &#039;&amp;lt;/div&amp;gt;&#039;);&lt;br /&gt;
&lt;br /&gt;
            // Embed URL dengan pencarian teks (Nominatim)&lt;br /&gt;
            var embedUrl = &amp;quot;https://www.openstreetmap.org/export/embed.html?layer=mapnik&amp;amp;q=&amp;quot; + encodeURIComponent(locationText);&lt;br /&gt;
&lt;br /&gt;
            var $iframe = $(&#039;&amp;lt;iframe&amp;gt;&#039;).attr({&lt;br /&gt;
                &#039;src&#039;: embedUrl,&lt;br /&gt;
                &#039;width&#039;: &#039;100%&#039;,&lt;br /&gt;
                &#039;height&#039;: &#039;280&#039;,&lt;br /&gt;
                &#039;frameborder&#039;: &#039;0&#039;,&lt;br /&gt;
                &#039;style&#039;: &#039;border-radius: 8px; border: 1px solid #eee;&#039;&lt;br /&gt;
            });&lt;br /&gt;
&lt;br /&gt;
            $mapWrapper.append($iframe);&lt;br /&gt;
            &lt;br /&gt;
            // Link eksternal yang lebih rapi&lt;br /&gt;
            var gMapsUrl = &amp;quot;https://www.google.com/maps/search/&amp;quot; + encodeURIComponent(locationText);&lt;br /&gt;
            $mapWrapper.append(&#039;&amp;lt;div style=&amp;quot;text-align:right; margin-top:8px;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                               &#039;&amp;lt;a href=&amp;quot;&#039; + gMapsUrl + &#039;&amp;quot; target=&amp;quot;_blank&amp;quot; style=&amp;quot;font-size:0.75em; color:#6a5acd; font-weight:bold; text-decoration:none; text-transform:uppercase; letter-spacing:0.5px;&amp;quot;&amp;gt;Buka di Google Maps →&amp;lt;/a&amp;gt;&amp;lt;/div&amp;gt;&#039;);&lt;br /&gt;
&lt;br /&gt;
            // Masukkan ke bawah section deskripsi otomatis&lt;br /&gt;
            if ($(&#039;#mip-desc-section&#039;).length) {&lt;br /&gt;
                $(&#039;#mip-desc-section&#039;).after($mapWrapper);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    });&lt;br /&gt;
})();&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://data.mippedia.org/index.php?title=MediaWiki:Common.js&amp;diff=912</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://data.mippedia.org/index.php?title=MediaWiki:Common.js&amp;diff=912"/>
		<updated>2026-06-01T22:21:30Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* ==========================================================&lt;br /&gt;
   ⚡ MIPPEDIA SPEED &amp;amp; TRANSITION OPTIMIZER (STANDALONE V1.0)&lt;br /&gt;
   Features: Instant Link Pre-fetching &amp;amp; Ultra-Smooth Page Transitions.&lt;br /&gt;
   Optimization: Zero-lag navigation feel, seamless fade mechanics.&lt;br /&gt;
   Target: Clean, lightweight execution with no server-side modifications.&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
(function() {&lt;br /&gt;
    var currentHost = window.location.hostname;&lt;br /&gt;
&lt;br /&gt;
    // --- 🎨 LANGKAH 1: SUNTIK CSS UNTUK TRANSISI HALUS (FADE IN/OUT) ---&lt;br /&gt;
    (function() {&lt;br /&gt;
        var style = document.createElement(&#039;style&#039;);&lt;br /&gt;
        style.id = &#039;mip-speed-transition-style&#039;;&lt;br /&gt;
        style.innerHTML = &lt;br /&gt;
            /* Efek fade-in halus saat halaman baru selesai dimuat */&lt;br /&gt;
            &#039;@keyframes mipFadeIn { from { opacity: 0; } to { opacity: 1; } }&#039; +&lt;br /&gt;
            &#039;body { animation: mipFadeIn 0.25s ease-in-out forwards; transition: opacity 0.2s ease-in-out; }&#039; +&lt;br /&gt;
            /* Kelas pembantu saat halaman mulai ditinggalkan */&lt;br /&gt;
            &#039;body.mip-page-leaving { opacity: 0 !important; pointer-events: none; }&#039;;&lt;br /&gt;
        document.head.appendChild(style);&lt;br /&gt;
    })();&lt;br /&gt;
&lt;br /&gt;
    // --- ⚡ LANGKAH 2: ENGINE PRE-FETCHING (CURI START UNDUH DATA) ---&lt;br /&gt;
    // Menggunakan teknik &#039;prefetch&#039; bawaan browser modern untuk mengunduh halaman tujuan lebih awal&lt;br /&gt;
    function prefetchLink(url) {&lt;br /&gt;
        // Cek apakah link ini sudah pernah di-prefetch sebelumnya agar tidak dobel&lt;br /&gt;
        if (document.querySelector(&#039;link[href=&amp;quot;&#039; + url + &#039;&amp;quot;]&#039;)) return;&lt;br /&gt;
&lt;br /&gt;
        var prefetcher = document.createElement(&#039;link&#039;);&lt;br /&gt;
        prefetcher.rel = &#039;prefetch&#039;;&lt;br /&gt;
        prefetcher.href = url;&lt;br /&gt;
        document.head.appendChild(prefetcher);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // Deteksi saat kursor menyentuh link (Desktop) atau sentuhan pertama dimulai (Mobile)&lt;br /&gt;
    $(document).on(&#039;mouseenter touchstart&#039;, &#039;#mw-content-text a, .mw-body-content a, #bodyContent a&#039;, function() {&lt;br /&gt;
        var $link = $(this);&lt;br /&gt;
        var href = $link.attr(&#039;href&#039;);&lt;br /&gt;
&lt;br /&gt;
        // Validasi kelayakan link internal yang aman untuk di-prefetch&lt;br /&gt;
        if (!href || href.startsWith(&#039;#&#039;) || href.startsWith(&#039;javascript:&#039;) || $link.attr(&#039;target&#039;) === &#039;_blank&#039; || $link.hasClass(&#039;new&#039;)) {&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        var isInternal = href.indexOf(currentHost) !== -1 || href.startsWith(&#039;/&#039;) || !href.includes(&#039;://&#039;);&lt;br /&gt;
        if (isInternal) {&lt;br /&gt;
            prefetcherEngine(href);&lt;br /&gt;
        }&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    function prefetcherEngine(url) {&lt;br /&gt;
        // Eksekusi prefetch menggunakan browser scheduler agar tidak mengganggu performa rendering utama&lt;br /&gt;
        if (window.requestIdleCallback) {&lt;br /&gt;
            window.requestIdleCallback(function() { prefetchLink(url); });&lt;br /&gt;
        } else {&lt;br /&gt;
            setTimeout(function() { prefetchLink(url); }, 50);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // --- 🎬 LANGKAH 3: TRANSISI HALUS SAAT MENINGGALKAN HALAMAN (FADE OUT) ---&lt;br /&gt;
    // Mencegah layar berkedip putih kasar saat browser berpindah halaman&lt;br /&gt;
    $(document).on(&#039;click&#039;, &#039;#mw-content-text a, .mw-body-content a, #bodyContent a&#039;, function(e) {&lt;br /&gt;
        var $link = $(this);&lt;br /&gt;
        var href = $link.attr(&#039;href&#039;);&lt;br /&gt;
&lt;br /&gt;
        if (!href || href.startsWith(&#039;#&#039;) || href.startsWith(&#039;javascript:&#039;) || $link.attr(&#039;target&#039;) === &#039;_blank&#039; || $link.hasClass(&#039;new&#039;) || e.ctrlKey || e.metaKey) {&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        var isInternal = href.indexOf(currentHost) !== -1 || href.startsWith(&#039;/&#039;) || !href.includes(&#039;://&#039;);&lt;br /&gt;
        if (isInternal) {&lt;br /&gt;
            // Pasang kelas meninggalkan halaman agar body melakukan efek fade-out mulus&lt;br /&gt;
            $(&#039;body&#039;).addClass(&#039;mip-page-leaving&#039;);&lt;br /&gt;
            &lt;br /&gt;
            // Failsafe: Jika karena alasan tertentu browser lambat berpindah, kembalikan opacity setelah 2 detik&lt;br /&gt;
            setTimeout(function() {&lt;br /&gt;
                $(&#039;body&#039;).removeClass(&#039;mip-page-leaving&#039;);&lt;br /&gt;
            }, 2000);&lt;br /&gt;
        }&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    // Jalankan failsafe tambahan saat tombol back/forward browser ditekan&lt;br /&gt;
    window.addEventListener(&#039;pageshow&#039;, function(event) {&lt;br /&gt;
        if (event.persisted) {&lt;br /&gt;
            $(&#039;body&#039;).removeClass(&#039;mip-page-leaving&#039;);&lt;br /&gt;
        }&lt;br /&gt;
    });&lt;br /&gt;
})();&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================&lt;br /&gt;
   🌐 MIPPEDIA TAB ROUTER INTEGRATOR - UNIVERSAL TRANSITION (V1.2)&lt;br /&gt;
   Features: Pure Pre-Navigation Routing Simulation on Tab Title.&lt;br /&gt;
   Optimization: Universal trigger for any navigation, 0% page-load flicker.&lt;br /&gt;
   Target: Clean, lightweight, long-term safety.&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
(function() {&lt;br /&gt;
    // Ambil nama host secara dinamis (contoh: data.mippedia.org)&lt;br /&gt;
    var currentHost = window.location.hostname;&lt;br /&gt;
    var routingTimeout = null;&lt;br /&gt;
    var rawOriginalTitle = document.title;&lt;br /&gt;
&lt;br /&gt;
    // --- ENGINE CORE: UBAH JUDUL JADI DOMAIN ---&lt;br /&gt;
    function executeUniversalRouting() {&lt;br /&gt;
        if (routingTimeout) clearTimeout(routingTimeout);&lt;br /&gt;
        &lt;br /&gt;
        // Tangkap judul asli terupdate sebagai jaring pengaman&lt;br /&gt;
        var liveTitle = document.title;&lt;br /&gt;
        if (liveTitle !== currentHost) {&lt;br /&gt;
            rawOriginalTitle = liveTitle;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // SET DOMAIN DI AWAL (Saat aksi diklik / sebelum pindah halaman)&lt;br /&gt;
        document.title = currentHost;&lt;br /&gt;
&lt;br /&gt;
        // Failsafe: Jika dalam 3 detik halaman tidak jadi pindah (batal/koneksi drop),&lt;br /&gt;
        // kembalikan ke judul semula agar tidak tersangkut.&lt;br /&gt;
        routingTimeout = setTimeout(function() {&lt;br /&gt;
            if (document.title === currentHost) {&lt;br /&gt;
                document.title = rawOriginalTitle;&lt;br /&gt;
            }&lt;br /&gt;
        }, 3000);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // --- ⚡ PEMICU 1: UNIVERSAL CLICK CONTROLLER (APAPUN YANG DIKLIK) ---&lt;br /&gt;
    // Menggunakan Vanilla JS Event Listener di tingkat window agar mencakup seluruh elemen tanpa tebang pilih&lt;br /&gt;
    window.addEventListener(&#039;click&#039;, function(e) {&lt;br /&gt;
        // Cari tahu apakah elemen yang diklik berada di dalam tag &amp;lt;a&amp;gt; (Link)&lt;br /&gt;
        var anchor = e.target.closest(&#039;a&#039;);&lt;br /&gt;
        &lt;br /&gt;
        if (anchor) {&lt;br /&gt;
            var href = anchor.getAttribute(&#039;href&#039;);&lt;br /&gt;
            var target = anchor.getAttribute(&#039;target&#039;);&lt;br /&gt;
&lt;br /&gt;
            // Abaikan jika link kosong, link jangkar internal halaman (#), atau buka di tab baru (_blank)&lt;br /&gt;
            if (!href || href.startsWith(&#039;#&#039;) || href.startsWith(&#039;javascript:&#039;) || target === &#039;_blank&#039;) {&lt;br /&gt;
                return;&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
            // Eksekusi jika perpindahan terjadi di domain yang sama (internal routing)&lt;br /&gt;
            var isInternal = href.indexOf(currentHost) !== -1 || href.startsWith(&#039;/&#039;) || !href.includes(&#039;://&#039;);&lt;br /&gt;
            if (isInternal) {&lt;br /&gt;
                executeUniversalRouting();&lt;br /&gt;
            }&lt;br /&gt;
        } else {&lt;br /&gt;
            // JIKA YANG DIKLIK BUKAN LINK (Tapi tombol biasa, widget, atau elemen aksi pemindah halaman lainnya)&lt;br /&gt;
            // Kita cek apakah elemen tersebut memiliki indikasi memicu fungsi perpindahan/loading&lt;br /&gt;
            var elementTag = e.target.tagName.toLowerCase();&lt;br /&gt;
            if (elementTag === &#039;button&#039; || e.target.closest(&#039;button&#039;) || e.target.getAttribute(&#039;role&#039;) === &#039;button&#039;) {&lt;br /&gt;
                executeUniversalRouting();&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }, { passive: true });&lt;br /&gt;
&lt;br /&gt;
    // --- 💾 PEMICU 2: UNIVERSAL SUBMIT CONTROLLER (SIMPAN/FORM) ---&lt;br /&gt;
    // Memicu efek domain saat submit form (Simpan halaman, cari artikel, dll)&lt;br /&gt;
    window.addEventListener(&#039;submit&#039;, function() {&lt;br /&gt;
        executeUniversalRouting();&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    // --- 🛡️ SAFETY GUARDIAN: ANTI STUCK ON TAB BLUR ---&lt;br /&gt;
    // Jika user buru-buru pindah tab sebelum halaman sempat berganti, kembalikan judul asli&lt;br /&gt;
    window.addEventListener(&#039;blur&#039;, function() {&lt;br /&gt;
        if (routingTimeout) clearTimeout(routingTimeout);&lt;br /&gt;
        if (document.title === currentHost) {&lt;br /&gt;
            document.title = rawOriginalTitle;&lt;br /&gt;
        }&lt;br /&gt;
    });&lt;br /&gt;
    window.addEventListener(&#039;pagehide&#039;, function() {&lt;br /&gt;
        if (routingTimeout) clearTimeout(routingTimeout);&lt;br /&gt;
        if (document.title === currentHost) {&lt;br /&gt;
            document.title = rawOriginalTitle;&lt;br /&gt;
        }&lt;br /&gt;
    });&lt;br /&gt;
})();&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================&lt;br /&gt;
   🧠 MIPPEDIA DATA - SMART CONTEXT + AUTO THUMBNAIL (V10.1)&lt;br /&gt;
   Features: Priority Check (ID &amp;gt; EN &amp;gt; CONCISE), Auto-Age, &lt;br /&gt;
             Auto-Bold, Smart Links, Dynamic Context,&lt;br /&gt;
             Targeted Isolation (Safe for Forms), Dynamic Noindex,&lt;br /&gt;
             Aesthetic Centered Empty State + 🚀 Instant Action Hub (3 Buttons)&lt;br /&gt;
   Fixes: Mobile View Visibility &amp;amp; Custom Short URL Route (No /w/)&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
(function() {&lt;br /&gt;
    $(document).ready(function() {&lt;br /&gt;
        var $descSection = $(&#039;#mip-desc-section&#039;), $descBox = $(&#039;#mip-auto-description&#039;),&lt;br /&gt;
            $sourceInfo = $(&#039;#mip-source-info&#039;), $portalLinks = $(&#039;#mip-portal-links&#039;),&lt;br /&gt;
            $projectPortal = $(&#039;#mip-project-portal&#039;), $mainContent = $(&#039;#mw-content-text&#039;);&lt;br /&gt;
        &lt;br /&gt;
        if (!$descBox.length) return;&lt;br /&gt;
&lt;br /&gt;
        var pageTitle = mw.config.get(&#039;wgPageName&#039;).replace(/_/g, &#039; &#039;),&lt;br /&gt;
            cacheKey = &#039;mip_smart_context_thumb_&#039; + pageTitle, now = new Date().getTime(),&lt;br /&gt;
            currentYear = 2026;&lt;br /&gt;
&lt;br /&gt;
        // --- KONFIGURASI PROYEK ---&lt;br /&gt;
        var projects = [&lt;br /&gt;
            { id: &#039;id&#039;, name: &#039;Mippedia bahasa Indonesia&#039;, url: &#039;https://id.mippedia.org/api.php&#039;, base: &#039;https://id.mippedia.org/wiki/&#039;, label: &#039;Mippedia Indonesia&#039; },&lt;br /&gt;
            { id: &#039;en&#039;, name: &#039;Mippedia bahasa Inggris&#039;, url: &#039;https://en.mippedia.org/api.php&#039;, base: &#039;https://en.mippedia.org/wiki/&#039;, label: &#039;Mippedia Inggris&#039; },&lt;br /&gt;
            { id: &#039;concise&#039;, name: &#039;Mippedia bahasa Indonesia ringkas&#039;, url: &#039;https://concise.mippedia.org/api.php&#039;, base: &#039;https://concise.mippedia.org/wiki/&#039;, label: &#039;Mippedia Ringkas&#039; }&lt;br /&gt;
        ];&lt;br /&gt;
&lt;br /&gt;
        // --- 🎨 ANIMASI, HOVER EFFECT &amp;amp; RESPONSIVE STYLE ---&lt;br /&gt;
        if (!$(&#039;#mip-clean-style&#039;).length) {&lt;br /&gt;
            $(&#039;head&#039;).append(&lt;br /&gt;
                &#039;&amp;lt;style id=&amp;quot;mip-clean-style&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                    &#039;@keyframes mipFadeInUp {&#039; +&lt;br /&gt;
                        &#039;from { opacity: 0; transform: translateY(15px); }&#039; +&lt;br /&gt;
                        &#039;to { opacity: 1; transform: translateY(0); }&#039; +&lt;br /&gt;
                    &#039;}&#039; +&lt;br /&gt;
                    &#039;#mip-empty-state-notice {&#039; +&lt;br /&gt;
                        &#039;display: block !important;&#039; + /* Memaksa tampil di seluler/mobile */&lt;br /&gt;
                        &#039;animation: mipFadeInUp 0.6s cubic-bezier(0.16, 1, 0.3, 1) forwards;&#039; +&lt;br /&gt;
                    &#039;}&#039; +&lt;br /&gt;
                    &#039;.mip-btn-container {&#039; +&lt;br /&gt;
                        &#039;display: flex;&#039; +&lt;br /&gt;
                        &#039;flex-wrap: wrap;&#039; + /* Supaya otomatis turun ke bawah kalau di HP */&lt;br /&gt;
                        &#039;justify-content: center;&#039; +&lt;br /&gt;
                        &#039;margin-bottom: 30px;&#039; +&lt;br /&gt;
                        &#039;padding-top: 5px;&#039; +&lt;br /&gt;
                    &#039;}&#039; +&lt;br /&gt;
                    &#039;.mip-action-btn {&#039; +&lt;br /&gt;
                        &#039;display: inline-flex; align-items: center; justify-content: center;&#039; +&lt;br /&gt;
                        &#039;padding: 10px 18px; margin: 6px; font-size: 0.88em; font-weight: 600;&#039; +&lt;br /&gt;
                        &#039;color: #6a5acd !important; background: #ffffff; border: 1.5px solid #6a5acd;&#039; +&lt;br /&gt;
                        &#039;border-radius: 30px; text-decoration: none !important; cursor: pointer;&#039; +&lt;br /&gt;
                        &#039;transition: all 0.25s ease-in-out; box-shadow: 0 2px 5px rgba(106,92,205,0.08);&#039; +&lt;br /&gt;
                        &#039;flex-grow: 1; max-width: 220px; min-width: 150px;&#039; + /* Penyesuaian porsi tombol di HP */&lt;br /&gt;
                    &#039;}&#039; +&lt;br /&gt;
                    &#039;.mip-action-btn:hover {&#039; +&lt;br /&gt;
                        &#039;color: #ffffff !important; background: #6a5acd;&#039; +&lt;br /&gt;
                        &#039;transform: translateY(-2px); box-shadow: 0 4px 12px rgba(106,92,205,0.2);&#039; +&lt;br /&gt;
                    &#039;}&#039; +&lt;br /&gt;
                    &#039;.mip-action-btn:active {&#039; +&lt;br /&gt;
                        &#039;transform: translateY(0);&#039; +&lt;br /&gt;
                    &#039;}&#039; +&lt;br /&gt;
                &#039;&amp;lt;/style&amp;gt;&#039;&lt;br /&gt;
            );&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // --- FUNGSI TOOLS ---&lt;br /&gt;
        function applyAutoBold(text) { return text.replace(new RegExp(&#039;(&#039; + pageTitle + &#039;)&#039;, &#039;gi&#039;), &#039;&amp;lt;strong&amp;gt;$1&amp;lt;/strong&amp;gt;&#039;); }&lt;br /&gt;
        function cleanExtract(text) { return text.replace(/\[\d+\]/g, &#039;&#039;).replace(/\{\{[^}]+\}\}/g, &#039;&#039;).replace(/\(\s*\)/g, &#039;&#039;).replace(/\s\s+/g, &#039; &#039;).trim(); }&lt;br /&gt;
        &lt;br /&gt;
        function applyDynamicContext(text) {&lt;br /&gt;
            var date = new Date();&lt;br /&gt;
            var hari = [&amp;quot;Minggu&amp;quot;, &amp;quot;Senin&amp;quot;, &amp;quot;Selasa&amp;quot;, &amp;quot;Rabu&amp;quot;, &amp;quot;Kamis&amp;quot;, &amp;quot;Jumat&amp;quot;, &amp;quot;Sabtu&amp;quot;];&lt;br /&gt;
            var bulan = [&amp;quot;Januari&amp;quot;, &amp;quot;Februari&amp;quot;, &amp;quot;Maret&amp;quot;, &amp;quot;April&amp;quot;, &amp;quot;Mei&amp;quot;, &amp;quot;Juni&amp;quot;, &amp;quot;Juli&amp;quot;, &amp;quot;Agustus&amp;quot;, &amp;quot;September&amp;quot;, &amp;quot;Oktober&amp;quot;, &amp;quot;November&amp;quot;, &amp;quot;Desember&amp;quot;];&lt;br /&gt;
            var tglSkrg = hari[date.getDay()] + &amp;quot;, &amp;quot; + date.getDate() + &amp;quot; &amp;quot; + bulan[date.getMonth()] + &amp;quot; &amp;quot; + date.getFullYear();&lt;br /&gt;
            return text.replace(/(hari ini|saat ini|sekarang)/gi, &#039;$1 (&#039; + tglSkrg + &#039;)&#039;)&lt;br /&gt;
                .replace(/(\d{1,2}\s(?:Januari|Februari|Maret|April|Mei|Juni|Juli|Agustus|September|Oktober|November|Desember)\s(\d{4}))/gi, function(m, f, y) { &lt;br /&gt;
                    return f + &amp;quot; &amp;lt;span style=&#039;color: #444; font-weight: bold;&#039;&amp;gt;– usia &amp;quot; + (currentYear - parseInt(y)) + &amp;quot; tahun&amp;lt;/span&amp;gt;&amp;quot;; &lt;br /&gt;
                })&lt;br /&gt;
                .replace(/(sejak|tahun)\s(\d{4})/gi, function(m, k, y) {&lt;br /&gt;
                    var gap = currentYear - parseInt(y);&lt;br /&gt;
                    if (gap &amp;gt; 0 &amp;amp;&amp;amp; gap &amp;lt; 100) return k + &amp;quot; &amp;quot; + y + &amp;quot; &amp;lt;small style=&#039;color: #888;&#039;&amp;gt;(&amp;quot; + gap + &amp;quot; thn lalu)&amp;lt;/small&amp;gt;&amp;quot;;&lt;br /&gt;
                    return m;&lt;br /&gt;
                });&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        function applySummary(text) {&lt;br /&gt;
            var limit = 250;&lt;br /&gt;
            if (text.length &amp;lt;= limit) return &#039;&amp;lt;span&amp;gt;&#039; + text + &#039;&amp;lt;/span&amp;gt;&#039;;&lt;br /&gt;
            return &#039;&amp;lt;span&amp;gt;&#039; + text.substring(0, limit) + &#039;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;mip-dots&amp;quot;&amp;gt;... &amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;mip-more&amp;quot; style=&amp;quot;display:none;&amp;quot;&amp;gt;&#039; + text.substring(limit) + &#039;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;mip-read-btn&amp;quot; style=&amp;quot;color: #6a5acd; cursor: pointer; font-weight: bold; margin-left: 5px;&amp;quot;&amp;gt;Baca selengkapnya&amp;lt;/span&amp;gt;&#039;;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // --- SMART LINKS PORTAL ---&lt;br /&gt;
        function buildSmartLinks(currentId, validatedEnTitle) {&lt;br /&gt;
            $portalLinks.empty();&lt;br /&gt;
            var validLinks = [];&lt;br /&gt;
            &lt;br /&gt;
            var checkRequests = projects.filter(p =&amp;gt; p.id !== currentId).map(function(p) {&lt;br /&gt;
                var targetTitle = (p.id === &#039;en&#039; &amp;amp;&amp;amp; validatedEnTitle) ? validatedEnTitle : pageTitle;&lt;br /&gt;
                if (p.id === &#039;en&#039; &amp;amp;&amp;amp; !validatedEnTitle) return $.Deferred().resolve();&lt;br /&gt;
&lt;br /&gt;
                return $.ajax({ url: p.url, data: { action: &#039;query&#039;, titles: targetTitle, format: &#039;json&#039;, origin: &#039;*&#039; }, dataType: &#039;json&#039; })&lt;br /&gt;
                    .then(function(data) { &lt;br /&gt;
                        if (data.query.pages[&amp;quot;-1&amp;quot;] === undefined) { &lt;br /&gt;
                            validLinks.push(&#039;&amp;lt;a href=&amp;quot;&#039; + p.base + encodeURIComponent(targetTitle) + &#039;&amp;quot; target=&amp;quot;_blank&amp;quot; style=&amp;quot;color: #6a5acd; text-decoration: underline; font-weight: bold;&amp;quot;&amp;gt;&#039; + p.label + &#039;&amp;lt;/a&amp;gt;&#039;); &lt;br /&gt;
                        } &lt;br /&gt;
                    });&lt;br /&gt;
            });&lt;br /&gt;
&lt;br /&gt;
            $.when.apply($, checkRequests).done(function() {&lt;br /&gt;
                if (validLinks.length &amp;gt; 0) { $portalLinks.html(validLinks.join(&#039; &amp;lt;span style=&amp;quot;color:#ccc; margin: 0 5px;&amp;quot;&amp;gt;•&amp;lt;/span&amp;gt; &#039;)); $projectPortal.fadeIn(); }&lt;br /&gt;
            });&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // --- 🧠 RENDER EMPTY STATE + INTERACTIVE HUB ---&lt;br /&gt;
        function toggleMippediaLayout(isEmpty) {&lt;br /&gt;
            var $existingNotice = $(&#039;#mip-empty-state-notice&#039;);&lt;br /&gt;
            var userGroups = mw.config.get(&#039;wgUserGroups&#039;) || [];&lt;br /&gt;
            var isSysop = userGroups.indexOf(&#039;sysop&#039;) !== -1;&lt;br /&gt;
&lt;br /&gt;
            var $wikiDataElements = $mainContent.children().not(&#039;#mip-empty-state-notice, #mip-desc-section, script, style, .printfooter&#039;);&lt;br /&gt;
            var $editElements = $(&#039;#ca-edit, .mw-editsection, .wb-editsection, .mip-edit-trigger, [id*=&amp;quot;edit&amp;quot;], [class*=&amp;quot;edit-pencil&amp;quot;]&#039;);&lt;br /&gt;
            var $metaRobots = $(&#039;meta[name=&amp;quot;robots&amp;quot;]&#039;);&lt;br /&gt;
&lt;br /&gt;
            if (isEmpty) {&lt;br /&gt;
                if (!$existingNotice.length) {&lt;br /&gt;
                    // Perbaikan Jalur URL tanpa sub-folder /w/ langsung menembak Short URL root parameter&lt;br /&gt;
                    var createUrlID = &#039;https://id.mippedia.org/index.php?title=&#039; + encodeURIComponent(pageTitle) + &#039;&amp;amp;action=edit&#039;;&lt;br /&gt;
                    var createUrlEN = &#039;https://en.mippedia.org/index.php?title=&#039; + encodeURIComponent(pageTitle) + &#039;&amp;amp;action=edit&#039;;&lt;br /&gt;
                    var createUrlConcise = &#039;https://concise.mippedia.org/index.php?title=&#039; + encodeURIComponent(pageTitle) + &#039;&amp;amp;action=edit&#039;;&lt;br /&gt;
&lt;br /&gt;
                    var noticeHtml = &lt;br /&gt;
                        &#039;&amp;lt;div id=&amp;quot;mip-empty-state-notice&amp;quot; style=&amp;quot;text-align: center; max-width: 600px; margin: 40px auto; padding: 10px; font-family: -apple-system, BlinkMacSystemFont, \&#039;Segoe UI\&#039;, Roboto, sans-serif;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                            &#039;&amp;lt;!-- Ikon Warning Besar --&amp;gt;&#039; +&lt;br /&gt;
                            &#039;&amp;lt;div style=&amp;quot;margin-bottom: 22px; display: inline-block;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                &#039;&amp;lt;svg width=&amp;quot;64&amp;quot; height=&amp;quot;64&amp;quot; viewBox=&amp;quot;0 0 24 24&amp;quot; fill=&amp;quot;none&amp;quot; stroke=&amp;quot;#d9534f&amp;quot; stroke-width=&amp;quot;1.8&amp;quot; stroke-linecap=&amp;quot;round&amp;quot; stroke-linejoin=&amp;quot;round&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                    &#039;&amp;lt;path d=&amp;quot;M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z&amp;quot;&amp;gt;&amp;lt;/path&amp;gt;&#039; +&lt;br /&gt;
                                    &#039;&amp;lt;line x1=&amp;quot;12&amp;quot; y1=&amp;quot;9&amp;quot; x2=&amp;quot;12&amp;quot; y2=&amp;quot;13&amp;quot;&amp;gt;&amp;lt;/line&amp;gt;&#039; +&lt;br /&gt;
                                    &#039;&amp;lt;line x1=&amp;quot;12&amp;quot; y1=&amp;quot;17&amp;quot; x2=&amp;quot;12.01&amp;quot; y2=&amp;quot;17&amp;quot;&amp;gt;&amp;lt;/line&amp;gt;&#039; +&lt;br /&gt;
                                &#039;&amp;lt;/&#039; + &#039;svg&amp;gt;&#039; +&lt;br /&gt;
                            &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
                            &#039;&amp;lt;!-- Judul Utama --&amp;gt;&#039; +&lt;br /&gt;
                            &#039;&amp;lt;h4 style=&amp;quot;color: #2c3e50; margin: 0 0 12px 0; font-size: 1.35em; font-weight: 700; letter-spacing: -0.3px;&amp;quot;&amp;gt;Item Data Struktur Tidak Memiliki Sumber Artikel&amp;lt;/h4&amp;gt;&#039; +&lt;br /&gt;
                            &#039;&amp;lt;!-- Deskripsi Utama --&amp;gt;&#039; +&lt;br /&gt;
                            &#039;&amp;lt;p style=&amp;quot;color: #555; margin: 0 0 25px 0; font-size: 0.98em; line-height: 1.6;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                &#039;Item data ini saat ini &amp;lt;strong&amp;gt;tidak memiliki artikel rujukan satu pun&amp;lt;/strong&amp;gt; di Mippedia Indonesia, Mippedia Inggris, maupun Mippedia Indonesia Ringkas.&#039; +&lt;br /&gt;
                            &#039;&amp;lt;/p&amp;gt;&#039; +&lt;br /&gt;
                            &lt;br /&gt;
                            &#039;&amp;lt;!-- 🚀 INSTANT ACTION HUB (Flexbox-Responsive Mobile &amp;amp; URL No /w/) --&amp;gt;&#039; +&lt;br /&gt;
                            &#039;&amp;lt;div class=&amp;quot;mip-btn-container&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                &#039;&amp;lt;a href=&amp;quot;&#039; + createUrlID + &#039;&amp;quot; target=&amp;quot;_blank&amp;quot; class=&amp;quot;mip-action-btn&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                    &#039;&amp;lt;span style=&amp;quot;margin-right: 6px;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;Buat Artikel ID&#039; +&lt;br /&gt;
                                &#039;&amp;lt;/a&amp;gt;&#039; +&lt;br /&gt;
                                &#039;&amp;lt;a href=&amp;quot;&#039; + createUrlEN + &#039;&amp;quot; target=&amp;quot;_blank&amp;quot; class=&amp;quot;mip-action-btn&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                    &#039;&amp;lt;span style=&amp;quot;margin-right: 6px;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;Buat Artikel EN&#039; +&lt;br /&gt;
                                &#039;&amp;lt;/a&amp;gt;&#039; +&lt;br /&gt;
                                &#039;&amp;lt;a href=&amp;quot;&#039; + createUrlConcise + &#039;&amp;quot; target=&amp;quot;_blank&amp;quot; class=&amp;quot;mip-action-btn&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                    &#039;&amp;lt;span style=&amp;quot;margin-right: 6px;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;Buat Artikel Ringkas&#039; +&lt;br /&gt;
                                &#039;&amp;lt;/a&amp;gt;&#039; +&lt;br /&gt;
                            &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
&lt;br /&gt;
                            &#039;&amp;lt;!-- Catatan Kaki Info Kecil --&amp;gt;&#039; +&lt;br /&gt;
                            &#039;&amp;lt;div style=&amp;quot;font-size: 0.85em; color: #a0a0a0; line-height: 1.5; font-style: italic; border-top: 1px solid #f0f0f0; padding-top: 15px;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                &#039;Informasi: Item data yang tidak terikat dengan artikel ensiklopedia apa pun dalam ekosistem Mippedia akan dihapus secara otomatis oleh pengurus dalam waktu dekat.&#039; +&lt;br /&gt;
                            &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
                        &#039;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
                    $mainContent.prepend(noticeHtml);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                $wikiDataElements.hide();&lt;br /&gt;
                $descSection.hide();&lt;br /&gt;
&lt;br /&gt;
                if (!isSysop) {&lt;br /&gt;
                    $editElements.css({ &#039;pointer-events&#039;: &#039;none&#039;, &#039;opacity&#039;: &#039;0.3&#039;, &#039;cursor&#039;: &#039;not-allowed&#039; }).hide();&lt;br /&gt;
                    $(document).on(&#039;keydown.miplock&#039;, function(e) {&lt;br /&gt;
                        if (e.key.toLowerCase() === &#039;e&#039; &amp;amp;&amp;amp; !$(e.target).is(&#039;input, textarea&#039;)) {&lt;br /&gt;
                            e.preventDefault();&lt;br /&gt;
                            return false;&lt;br /&gt;
                        }&lt;br /&gt;
                    });&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                mw.config.set(&#039;wgRobotsPolicies&#039;, { &#039;index&#039;: &#039;noindex&#039;, &#039;follow&#039;: &#039;nofollow&#039; });&lt;br /&gt;
                if ($metaRobots.length) {&lt;br /&gt;
                    $metaRobots.attr(&#039;content&#039;, &#039;noindex, nofollow&#039;);&lt;br /&gt;
                } else {&lt;br /&gt;
                    $(&#039;head&#039;).append(&#039;&amp;lt;meta name=&amp;quot;robots&amp;quot; content=&amp;quot;noindex, nofollow&amp;quot;&amp;gt;&#039;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
            } else {&lt;br /&gt;
                if ($existingNotice.length) $existingNotice.remove();&lt;br /&gt;
                &lt;br /&gt;
                $wikiDataElements.show();&lt;br /&gt;
                $descSection.show();&lt;br /&gt;
&lt;br /&gt;
                if (!isSysop) {&lt;br /&gt;
                    $(document).off(&#039;keydown.miplock&#039;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                mw.config.set(&#039;wgRobotsPolicies&#039;, { &#039;index&#039;: &#039;index&#039;, &#039;follow&#039;: &#039;follow&#039; });&lt;br /&gt;
                if ($metaRobots.length) {&lt;br /&gt;
                    $metaRobots.attr(&#039;content&#039;, &#039;index, follow&#039;);&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // --- SISTEM PRIORITAS ---&lt;br /&gt;
        var cached = JSON.parse(localStorage.getItem(cacheKey) || &amp;quot;{}&amp;quot;);&lt;br /&gt;
        var globalEnTitle = cached.enTitle || &amp;quot;&amp;quot;; &lt;br /&gt;
&lt;br /&gt;
        function init() {&lt;br /&gt;
            var pPrimary = projects[0]; &lt;br /&gt;
            $.ajax({&lt;br /&gt;
                url: pPrimary.url,&lt;br /&gt;
                data: { action: &#039;query&#039;, prop: &#039;revisions|pageimages|langlinks&#039;, lllang: &#039;en&#039;, rvprop: &#039;timestamp&#039;, piprop: &#039;thumbnail&#039;, pithumbsize: 150, titles: pageTitle, format: &#039;json&#039;, origin: &#039;*&#039; },&lt;br /&gt;
                dataType: &#039;json&#039;,&lt;br /&gt;
                success: function(res) {&lt;br /&gt;
                    var pg = res.query.pages, id = Object.keys(pg)[0];&lt;br /&gt;
                    var latestTS = (id != &amp;quot;-1&amp;quot;) ? pg[id].revisions[0].timestamp : &amp;quot;0&amp;quot;;&lt;br /&gt;
                    var thumbUrl = (id != &amp;quot;-1&amp;quot; &amp;amp;&amp;amp; pg[id].thumbnail) ? pg[id].thumbnail.source : &amp;quot;&amp;quot;;&lt;br /&gt;
                    &lt;br /&gt;
                    if (id != &amp;quot;-1&amp;quot; &amp;amp;&amp;amp; pg[id].langlinks &amp;amp;&amp;amp; pg[id].langlinks[0]) {&lt;br /&gt;
                        globalEnTitle = pg[id].langlinks[0][&#039;*&#039;];&lt;br /&gt;
                    }&lt;br /&gt;
&lt;br /&gt;
                    if (cached.content &amp;amp;&amp;amp; cached.ts === latestTS &amp;amp;&amp;amp; latestTS !== &amp;quot;0&amp;quot; &amp;amp;&amp;amp; !cached.isEmpty) {&lt;br /&gt;
                        toggleMippediaLayout(false);&lt;br /&gt;
                        renderAll(cached.p, cached.content, cached.isTrans, cached.orig, cached.img, cached.customUrl, cached.enTitle);&lt;br /&gt;
                    } else { &lt;br /&gt;
                        fetchPriorityData(0, latestTS, thumbUrl); &lt;br /&gt;
                    }&lt;br /&gt;
                },&lt;br /&gt;
                error: function() { &lt;br /&gt;
                    if (cached.content) {&lt;br /&gt;
                        toggleMippediaLayout(cached.isEmpty || false);&lt;br /&gt;
                        if (!cached.isEmpty) renderAll(cached.p, cached.content, cached.isTrans, cached.orig, cached.img, cached.customUrl, cached.enTitle);&lt;br /&gt;
                    } &lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        function fetchPriorityData(index, newTS, img) {&lt;br /&gt;
            if (index &amp;gt;= projects.length) {&lt;br /&gt;
                localStorage.setItem(cacheKey, JSON.stringify({isEmpty: true, ts: newTS, content: &amp;quot;&amp;quot;}));&lt;br /&gt;
                toggleMippediaLayout(true);&lt;br /&gt;
                return;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            var p = projects[index];&lt;br /&gt;
&lt;br /&gt;
            if (p.id === &#039;en&#039;) {&lt;br /&gt;
                if (!globalEnTitle) {&lt;br /&gt;
                    $.ajax({&lt;br /&gt;
                        url: &#039;https://concise.mippedia.org/api.php&#039;,&lt;br /&gt;
                        data: { action: &#039;query&#039;, prop: &#039;langlinks&#039;, lllang: &#039;en&#039;, titles: pageTitle, format: &#039;json&#039;, origin: &#039;*&#039; },&lt;br /&gt;
                        dataType: &#039;json&#039;,&lt;br /&gt;
                        async: false, &lt;br /&gt;
                        success: function(cRes) {&lt;br /&gt;
                            var cPg = cRes.query.pages, cId = Object.keys(cPg)[0];&lt;br /&gt;
                            if (cId != &amp;quot;-1&amp;quot; &amp;amp;&amp;amp; cPg[cId].langlinks &amp;amp;&amp;amp; cPg[cId].langlinks[0]) {&lt;br /&gt;
                                globalEnTitle = cPg[cId].langlinks[0][&#039;*&#039;];&lt;br /&gt;
                            }&lt;br /&gt;
                        }&lt;br /&gt;
                    });&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                if (globalEnTitle) {&lt;br /&gt;
                    $.ajax({&lt;br /&gt;
                        url: p.url,&lt;br /&gt;
                        data: { action: &#039;query&#039;, prop: &#039;extracts&#039;, exintro: 1, explaintext: 1, titles: globalEnTitle, format: &#039;json&#039;, origin: &#039;*&#039; },&lt;br /&gt;
                        dataType: &#039;json&#039;,&lt;br /&gt;
                        success: function(data) {&lt;br /&gt;
                            var pages = data.query.pages, pageId = Object.keys(pages)[0];&lt;br /&gt;
                            if (pageId != &amp;quot;-1&amp;quot; &amp;amp;&amp;amp; pages[pageId].extract) {&lt;br /&gt;
                                var extract = cleanExtract(pages[pageId].extract);&lt;br /&gt;
                                finalize(p, extract, false, &amp;quot;&amp;quot;, newTS, img, p.base + encodeURIComponent(globalEnTitle), globalEnTitle);&lt;br /&gt;
                            } else {&lt;br /&gt;
                                fetchPriorityData(index + 1, newTS, img);&lt;br /&gt;
                            }&lt;br /&gt;
                        },&lt;br /&gt;
                        error: function() { fetchPriorityData(index + 1, newTS, img); }&lt;br /&gt;
                    });&lt;br /&gt;
                } else {&lt;br /&gt;
                    fetchPriorityData(index + 1, newTS, img);&lt;br /&gt;
                }&lt;br /&gt;
            } else {&lt;br /&gt;
                $.ajax({&lt;br /&gt;
                    url: p.url,&lt;br /&gt;
                    data: { action: &#039;query&#039;, prop: &#039;extracts&#039;, exintro: 1, explaintext: 1, titles: pageTitle, format: &#039;json&#039;, origin: &#039;*&#039; },&lt;br /&gt;
                    dataType: &#039;json&#039;,&lt;br /&gt;
                    success: function(data) {&lt;br /&gt;
                        var pages = data.query.pages, pageId = Object.keys(pages)[0];&lt;br /&gt;
                        if (pageId != &amp;quot;-1&amp;quot; &amp;amp;&amp;amp; pages[pageId].extract) {&lt;br /&gt;
                            var extract = cleanExtract(pages[pageId].extract);&lt;br /&gt;
                            finalize(p, extract, false, &amp;quot;&amp;quot;, newTS, img, p.base + encodeURIComponent(pageTitle), globalEnTitle); &lt;br /&gt;
                        } else {&lt;br /&gt;
                            fetchPriorityData(index + 1, newTS, img);&lt;br /&gt;
                        }&lt;br /&gt;
                    },&lt;br /&gt;
                    error: function() { fetchPriorityData(index + 1, newTS, img); }&lt;br /&gt;
                });&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        function finalize(p, c, t, o, ts, img, customUrl, enTitle) {&lt;br /&gt;
            localStorage.setItem(cacheKey, JSON.stringify({isEmpty: false, p:p, content:c, isTrans:t, orig:o, ts:ts, img:img, customUrl: customUrl, enTitle: enTitle}));&lt;br /&gt;
            toggleMippediaLayout(false); &lt;br /&gt;
            renderAll(p, c, t, o, img, customUrl, enTitle);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        function renderAll(p, currentText, isTranslated, originalText, img, customUrl, enTitle) {&lt;br /&gt;
            var processedText = applyAutoBold(applyDynamicContext(currentText));&lt;br /&gt;
            var thumbHtml = img ? &#039;&amp;lt;div style=&amp;quot;float: right; margin-left: 15px; margin-bottom: 10px; border: 1px solid #ddd; padding: 3px; background: #fff; border-radius: 4px; box-shadow: 0 2px 4px rgba(0,0,0,0.1);&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;&#039;+img+&#039;&amp;quot; style=&amp;quot;max-width: 100px; display: block; height: auto;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039; : &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
            if (!$mainContent.find(&#039;#mip-desc-section&#039;).length) {&lt;br /&gt;
                $mainContent.prepend($descSection);&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            $descSection.show();&lt;br /&gt;
            $descBox.show().html(thumbHtml + applySummary(processedText) + &#039;&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;);&lt;br /&gt;
            &lt;br /&gt;
            var targetLink = customUrl ? customUrl : p.base + encodeURIComponent(pageTitle);&lt;br /&gt;
            var footer = &#039;&amp;lt;div style=&amp;quot;font-size: 0.9em; color: #777;&amp;quot;&amp;gt;Sumber : &amp;lt;a href=&amp;quot;&#039; + targetLink + &#039;&amp;quot; target=&amp;quot;_blank&amp;quot; style=&amp;quot;color: #6a5acd; font-weight: bold; text-decoration: none;&amp;quot;&amp;gt;&#039; + p.name + &#039;.&amp;lt;/a&amp;gt;&#039;;&lt;br /&gt;
            if (isTranslated) { footer += &#039;&amp;lt;br&amp;gt;&amp;lt;span style=&amp;quot;font-size: 0.85em; font-style: italic;&amp;quot;&amp;gt;(Diterjemahkan secara otomatis)&amp;lt;/span&amp;gt; &amp;lt;span id=&amp;quot;mip-toggle-orig&amp;quot; style=&amp;quot;color: #6a5acd; cursor: pointer; text-decoration: underline; margin-left: 5px;&amp;quot;&amp;gt;Tampilkan versi asli&amp;lt;/span&amp;gt;&#039;; }&lt;br /&gt;
            $sourceInfo.show().html(footer);&lt;br /&gt;
            &lt;br /&gt;
            buildSmartLinks(p.id, enTitle);&lt;br /&gt;
            &lt;br /&gt;
            $(document).off(&#039;click&#039;, &#039;.mip-read-btn&#039;).on(&#039;click&#039;, &#039;.mip-read-btn&#039;, function() { $(this).hide(); $(&#039;.mip-dots&#039;).hide(); $(&#039;.mip-more&#039;).fadeIn(); });&lt;br /&gt;
            $(document).off(&#039;click&#039;, &#039;#mip-toggle-orig&#039;).on(&#039;click&#039;, &#039;#mip-toggle-orig&#039;, function() {&lt;br /&gt;
                var isOrig = ($(this).text() === &#039;Tampilkan versi asli&#039;);&lt;br /&gt;
                var textToDisplay = applyAutoBold(applyDynamicContext(isOrig ? originalText : currentText));&lt;br /&gt;
                $descBox.html(thumbHtml + applySummary(textToDisplay) + &#039;&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;);&lt;br /&gt;
                $(this).text(isOrig ? &#039;Tampilkan terjemahan&#039; : &#039;Tampilkan versi asli&#039;);&lt;br /&gt;
            });&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        init();&lt;br /&gt;
    });&lt;br /&gt;
})();&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================&lt;br /&gt;
   🚀 MIPPEDIA DATA - CORE SYSTEM (ULTIMATE BUNDLE)&lt;br /&gt;
   Status: FINAL &amp;amp; REVISED (Visual Fix + Permission Logic)&lt;br /&gt;
   Fix: Mobile Responsive Notification Position&lt;br /&gt;
   ========================================================== */&lt;br /&gt;
&lt;br /&gt;
(function() {&lt;br /&gt;
    $(document).ready(function() {&lt;br /&gt;
        // --- 1. FILTER GLOBAL (Namespace 0 &amp;amp; Bukan Halaman Utama) ---&lt;br /&gt;
        if (mw.config.get(&#039;wgNamespaceNumber&#039;) !== 0 || &lt;br /&gt;
            mw.config.get(&#039;wgIsMainPage&#039;) || &lt;br /&gt;
            mw.config.get(&#039;wgAction&#039;) !== &#039;view&#039;) return;&lt;br /&gt;
&lt;br /&gt;
        var pageTitle = mw.config.get(&#039;wgPageName&#039;);&lt;br /&gt;
        var dataPage = &#039;MediaWiki:Sitelinks-Data.json&#039;;&lt;br /&gt;
        var userGroups = mw.config.get(&#039;wgUserGroups&#039;);&lt;br /&gt;
        var isAdmin = userGroups.includes(&#039;sysop&#039;) || userGroups.includes(&#039;interface-admin&#039;);&lt;br /&gt;
&lt;br /&gt;
        var projects = {&lt;br /&gt;
            &#039;id&#039;: { name: &#039;ID&#039;, url: &#039;https://id.mippedia.org/api.php&#039;, base: &#039;https://id.mippedia.org/wiki/&#039;, color: &#039;#6a5acd&#039; },&lt;br /&gt;
            &#039;en&#039;: { name: &#039;EN&#039;, url: &#039;https://en.mippedia.org/api.php&#039;, base: &#039;https://en.mippedia.org/wiki/&#039;, color: &#039;#4169e1&#039; },&lt;br /&gt;
            &#039;concise&#039;: { name: &#039;Concise&#039;, url: &#039;https://concise.mippedia.org/api.php&#039;, base: &#039;https://concise.mippedia.org/wiki/&#039;, color: &#039;#20b2aa&#039; }&lt;br /&gt;
        };&lt;br /&gt;
&lt;br /&gt;
        // --- 2. KOTAK NOTIFIKASI INFORMASI MODERN (FIXED MOBILE POSITION) ---&lt;br /&gt;
        function showBoxNotif(title, msg, type) {&lt;br /&gt;
            $(&#039;.mip-box-notif&#039;).remove();&lt;br /&gt;
            var theme = type === &#039;success&#039; ? {bg:&#039;#e6fffa&#039;, border:&#039;#38b2ac&#039;, text:&#039;#234e52&#039;, icon:&#039;&#039;} : &lt;br /&gt;
                        {bg:&#039;#fff5f5&#039;, border:&#039;#f56565&#039;, text:&#039;#742a2a&#039;, icon:&#039;&#039;};&lt;br /&gt;
            &lt;br /&gt;
            // Logika CSS Responsif untuk posisi&lt;br /&gt;
            var isMobile = window.innerWidth &amp;lt;= 768;&lt;br /&gt;
            var desktopStyle = &amp;quot;top:25px; right:25px; width:350px;&amp;quot;;&lt;br /&gt;
            var mobileStyle = &amp;quot;top:15px; left:50%; transform:translateX(-50%); width:90%; max-width:400px;&amp;quot;;&lt;br /&gt;
            var finalPos = isMobile ? mobileStyle : desktopStyle;&lt;br /&gt;
&lt;br /&gt;
            var $notif = $(&#039;&amp;lt;div class=&amp;quot;mip-box-notif&amp;quot; style=&amp;quot;position:fixed; &#039; + finalPos + &#039; background:&#039;+theme.bg+&#039;; border-left:6px solid &#039;+theme.border+&#039;; padding:18px; z-index:10001; border-radius:12px; box-shadow:0 15px 35px rgba(0,0,0,0.2); font-family:sans-serif; animation:mipSlideIn 0.4s ease-out;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                &#039;&amp;lt;div style=&amp;quot;display:flex; align-items:center; gap:12px; margin-bottom:8px;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                    &#039;&amp;lt;span style=&amp;quot;font-size:20px;&amp;quot;&amp;gt;&#039;+theme.icon+&#039;&amp;lt;/span&amp;gt;&#039; +&lt;br /&gt;
                    &#039;&amp;lt;strong style=&amp;quot;color:&#039;+theme.text+&#039;; font-size:15px; letter-spacing:-0.3px;&amp;quot;&amp;gt;&#039;+title+&#039;&amp;lt;/strong&amp;gt;&#039; +&lt;br /&gt;
                &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
                &#039;&amp;lt;p style=&amp;quot;margin:0; font-size:13px; color:&#039;+theme.text+&#039;; line-height:1.6; opacity:0.9;&amp;quot;&amp;gt;&#039;+msg+&#039;&amp;lt;/p&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;/div&amp;gt;&#039;).appendTo(&#039;body&#039;);&lt;br /&gt;
&lt;br /&gt;
            setTimeout(function() { $notif.fadeOut(function(){ $(this).remove(); }); }, 5500);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // --- 3. UI GENERATOR (DIPERTEBAL) ---&lt;br /&gt;
&lt;br /&gt;
      // A. Header Pro&lt;br /&gt;
        var headerHtml = &#039;&amp;lt;div id=&amp;quot;mip-header&amp;quot; style=&amp;quot;background:#f8f9fa; border:1px solid #ddd; border-left:6px solid #6a5acd; padding:18px; margin-bottom:25px; border-radius:6px; box-shadow:inset 0 0 10px rgba(0,0,0,0.02);&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;div style=&amp;quot;display:flex; align-items:center; gap:10px; margin-bottom:8px;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;span style=&amp;quot;background:#6a5acd; color:white; padding:3px 10px; border-radius:4px; font-size:11px; font-weight:bold; text-transform:uppercase; letter-spacing:0.5px;&amp;quot;&amp;gt;Basis Data Terstruktur&amp;lt;/span&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;strong style=&amp;quot;color:#111; font-size:16px;&amp;quot;&amp;gt;&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;p style=&amp;quot;margin:0; font-size:13px; color:#444; line-height:1.6;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
            &#039;Halaman ini adalah metadata entitas repositori pusat yang disinkronisasi secara otomatis lintas ekosistem. &#039; +&lt;br /&gt;
            &#039;Informasi di bawah ini bersifat teknis dan bebas digunakan sebagai referensi data terbuka bagi semua orang di seluruh dunia berdasarkan lisensi atribusi yang sesuai.&#039; +&lt;br /&gt;
            &#039;&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
        // B. Connector Box&lt;br /&gt;
        var editBtn = &#039;&amp;lt;span id=&amp;quot;mip-open-editor&amp;quot; style=&amp;quot;cursor:pointer; font-size:20px; color:#6a5acd; opacity:0.8; transition:0.3s;&amp;quot; onmouseover=&amp;quot;this.style.opacity=1&amp;quot; onmouseout=&amp;quot;this.style.opacity=0.8&amp;quot;&amp;gt;✎&amp;lt;/span&amp;gt;&#039;;&lt;br /&gt;
        var connectorHtml = &#039;&amp;lt;div id=&amp;quot;mip-connector&amp;quot; style=&amp;quot;background:#fff; border:1px solid #e2e8f0; border-radius:16px; padding:22px; margin-top:30px; box-shadow:0 10px 25px rgba(0,0,0,0.04);&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;div style=&amp;quot;display:flex; justify-content:space-between; align-items:center; margin-bottom:20px;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;strong style=&amp;quot;font-size:15px; color:#1a202c; display:flex; align-items:center; gap:8px;&amp;quot;&amp;gt;ID situs&amp;lt;/strong&amp;gt;&#039;+editBtn+&#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;div id=&amp;quot;mip-display&amp;quot; style=&amp;quot;display:flex; gap:12px; flex-wrap:wrap;&amp;quot;&amp;gt;&amp;lt;small style=&amp;quot;color:#a0aec0;&amp;quot;&amp;gt;Mensinkronisasi basis data...&amp;lt;/small&amp;gt;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;div id=&amp;quot;mip-editor&amp;quot; style=&amp;quot;display:none; margin-top:20px; border-top:2px solid #f7fafc; padding-top:20px;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                Object.keys(projects).map(p =&amp;gt; &#039;&amp;lt;div style=&amp;quot;margin-bottom:12px; display:flex; gap:10px;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;width:75px; font-size:11px; font-weight:bold; background:#edf2f7; display:flex; align-items:center; justify-content:center; border-radius:8px; color:#4a5568;&amp;quot;&amp;gt;&#039;+projects[p].name+&#039;&amp;lt;/span&amp;gt;&amp;lt;input type=&amp;quot;text&amp;quot; id=&amp;quot;in-&#039;+p+&#039;&amp;quot; placeholder=&amp;quot;Judul artikel di &#039;+projects[p].name+&#039;...&amp;quot; style=&amp;quot;flex:1; padding:10px; font-size:13px; border:1.5px solid #e2e8f0; border-radius:10px; outline:none; transition:0.2s;&amp;quot; onfocus=&amp;quot;this.style.borderColor=\&#039;#6a5acd\&#039;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;).join(&#039;&#039;) +&lt;br /&gt;
                &#039;&amp;lt;button id=&amp;quot;mip-save&amp;quot; style=&amp;quot;width:100%; padding:14px; background:#6a5acd; color:white; border:none; border-radius:12px; font-size:14px; font-weight:bold; cursor:pointer; box-shadow:0 4px 12px rgba(106,90,205,0.3); transition:0.3s;&amp;quot;&amp;gt;Terbitkan&amp;lt;/button&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
        // C. Footer Lisensi Lengkap&lt;br /&gt;
        var footerHtml = &#039;&amp;lt;div id=&amp;quot;mip-footer&amp;quot; style=&amp;quot;background:#fafafa; border:1px solid #eee; border-radius:10px; padding:20px; margin-top:30px; text-align:center;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;div style=&amp;quot;font-size:11px; color:#718096; font-weight:800; text-transform:uppercase; letter-spacing:1px; margin-bottom:10px;&amp;quot;&amp;gt;Lisensi, Atribusi &amp;amp; Penggunaan Data&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;p style=&amp;quot;margin:0 0 10px; font-size:13px; color:#4a5568; line-height:1.6;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
            &#039;Seluruh data terstruktur yang tersaji dalam repositori ini merupakan milik publik dan tersedia di bawah lisensi resmi &#039; +&lt;br /&gt;
            &#039;&amp;lt;a href=&amp;quot;https://creativecommons.org/licenses/by-sa/4.0/&amp;quot; target=&amp;quot;_blank&amp;quot; style=&amp;quot;color:#6a5acd; text-decoration:none; font-weight:700;&amp;quot;&amp;gt;Creative Commons Attribution-ShareAlike 4.0 International&amp;lt;/a&amp;gt;.&#039; +&lt;br /&gt;
            &#039;&amp;lt;/p&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;p style=&amp;quot;margin:0; font-size:12px; color:#a0aec0;&amp;quot;&amp;gt;Akses API dan penggunaan data secara massal wajib mencantumkan atribusi kepada &amp;lt;strong&amp;gt;Mippedia Community&amp;lt;/strong&amp;gt; selaku pengelola proyek.&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
        // Injeksi&lt;br /&gt;
        $(&#039;#mw-content-text&#039;).prepend(headerHtml);&lt;br /&gt;
        $(&#039;#mw-content-text&#039;).append(connectorHtml).append(footerHtml);&lt;br /&gt;
&lt;br /&gt;
        // --- 4. LOGIC ENGINE ---&lt;br /&gt;
        function loadLinks() {&lt;br /&gt;
            new mw.Api().get({ action: &#039;query&#039;, prop: &#039;revisions&#039;, titles: dataPage, rvprop: &#039;content&#039;, formatversion: 2 }).done(function(d) {&lt;br /&gt;
                var json = d.query.pages[0].revisions ? JSON.parse(d.query.pages[0].revisions[0].content) : {};&lt;br /&gt;
                var data = json[pageTitle] || {};&lt;br /&gt;
                var $box = $(&#039;#mip-display&#039;).empty();&lt;br /&gt;
                var found = false;&lt;br /&gt;
                Object.keys(projects).forEach(p =&amp;gt; {&lt;br /&gt;
                    if (data[p]) {&lt;br /&gt;
                        found = true;&lt;br /&gt;
                        $box.append(&#039;&amp;lt;a style=&amp;quot;background:&#039;+projects[p].color+&#039;; color:white; padding:8px 16px; border-radius:10px; font-size:12px; font-weight:bold; text-decoration:none; border-bottom:3px solid rgba(0,0,0,0.15);&amp;quot; href=&amp;quot;&#039;+projects[p].base+encodeURIComponent(data[p])+&#039;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Mippedia &#039;+projects[p].name+&#039;: &#039;+data[p]+&#039;&amp;lt;/a&amp;gt;&#039;);&lt;br /&gt;
                        $(&#039;#in-&#039; + p).val(data[p]);&lt;br /&gt;
                    }&lt;br /&gt;
                });&lt;br /&gt;
                if (!found) $box.html(&#039;&amp;lt;em style=&amp;quot;color:#cbd5e0; font-size:13px;&amp;quot;&amp;gt;Entitas ini belum terhubung ke cabang Mippedia manapun.&amp;lt;/em&amp;gt;&#039;);&lt;br /&gt;
            });&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        $(document).on(&#039;click&#039;, &#039;#mip-save&#039;, function() {&lt;br /&gt;
            // CEK IZIN: Tolak user biasa&lt;br /&gt;
            if (!isAdmin) {&lt;br /&gt;
                showBoxNotif(&#039;Suntingan anda tidak di terbitkan&#039;, &#039;Halaman ini dilindungi. Hanya &amp;lt;b&amp;gt;Pengurus&amp;lt;/b&amp;gt; yang memiliki otoritas untuk memodifikasi metadata ekosistem secara langsung.&#039;, &#039;error&#039;);&lt;br /&gt;
                return;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            var $btn = $(this).text(&#039;Sedang Memvalidasi...&#039;).prop(&#039;disabled&#039;, true);&lt;br /&gt;
            var api = new mw.Api();&lt;br /&gt;
            var newData = {}, promises = [], invalid = [], isDel = true;&lt;br /&gt;
&lt;br /&gt;
            Object.keys(projects).forEach(p =&amp;gt; {&lt;br /&gt;
                var v = $(&#039;#in-&#039; + p).val().trim();&lt;br /&gt;
                if (v) {&lt;br /&gt;
                    isDel = false;&lt;br /&gt;
                    promises.push($.ajax({ url: projects[p].url, data: { action: &#039;query&#039;, titles: v, format: &#039;json&#039;, origin: &#039;*&#039; }, dataType: &#039;json&#039; }).done(function(res){&lt;br /&gt;
                        if (res.query.pages[&amp;quot;-1&amp;quot;]) invalid.push(projects[p].name); else newData[p] = v;&lt;br /&gt;
                    }));&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
&lt;br /&gt;
            $.when.apply($, promises).then(function() {&lt;br /&gt;
                if (invalid.length &amp;gt; 0) {&lt;br /&gt;
                    showBoxNotif(&#039;Suntingan anda tidak di terbitkan&#039;, &#039;Artikel dengan judul tersebut tidak ditemukan di basis data Mippedia cabang: &#039; + invalid.join(&#039;, &#039;) + &#039;. Periksa kembali ejaan dan kapitalisasi.&#039;, &#039;error&#039;);&lt;br /&gt;
                    $btn.text(&#039;Terbitkan&#039;).prop(&#039;disabled&#039;, false); return;&lt;br /&gt;
                }&lt;br /&gt;
                &lt;br /&gt;
                api.get({ action: &#039;query&#039;, prop: &#039;revisions&#039;, titles: dataPage, rvprop: &#039;content&#039;, formatversion: 2 }).done(function(r) {&lt;br /&gt;
                    var full = r.query.pages[0].revisions ? JSON.parse(r.query.pages[0].revisions[0].content) : {};&lt;br /&gt;
                    if (isDel) delete full[pageTitle]; else full[pageTitle] = newData;&lt;br /&gt;
                    &lt;br /&gt;
                    api.postWithEditToken({ action: &#039;edit&#039;, title: dataPage, text: JSON.stringify(full, null, 2), summary: &#039;Sync Metadata: &#039; + pageTitle })&lt;br /&gt;
                    .done(function() {&lt;br /&gt;
                        showBoxNotif(&#039;Suntingan anda berhasil di terbitkan!&#039;, &#039;Metadata entitas berhasil disinkronisasi ke seluruh jaringan ekosistem Mippedia.&#039;, &#039;success&#039;);&lt;br /&gt;
                        setTimeout(function(){ location.reload(); }, 1500);&lt;br /&gt;
                    }).fail(function(c) {&lt;br /&gt;
                        showBoxNotif(&#039;Gagal Menyimpan&#039;, &#039;Terjadi kesalahan pada token API atau koneksi server. Kode: &#039; + c, &#039;error&#039;);&lt;br /&gt;
                        $btn.text(&#039;Simpan &amp;amp; Sinkronkan Data&#039;).prop(&#039;disabled&#039;, false);&lt;br /&gt;
                    });&lt;br /&gt;
                });&lt;br /&gt;
            });&lt;br /&gt;
        });&lt;br /&gt;
&lt;br /&gt;
        $(document).on(&#039;click&#039;, &#039;#mip-open-editor&#039;, function() { $(&#039;#mip-editor&#039;).slideToggle(); });&lt;br /&gt;
        loadLinks();&lt;br /&gt;
    });&lt;br /&gt;
})();&lt;br /&gt;
&lt;br /&gt;
(function() {&lt;br /&gt;
    // Fungsi utama suntik teks&lt;br /&gt;
    function forcePreload() {&lt;br /&gt;
        var ns = mw.config.get(&#039;wgNamespaceNumber&#039;);&lt;br /&gt;
        var pageExists = mw.config.get(&#039;wgArticleId&#039;) &amp;gt; 0;&lt;br /&gt;
        &lt;br /&gt;
        // Cek Namespace Utama &amp;amp; Halaman Baru&lt;br /&gt;
        if (ns === 0 &amp;amp;&amp;amp; !pageExists) {&lt;br /&gt;
            // Cari textarea secara spesifik (Desktop &amp;amp; Mobile punya selector beda)&lt;br /&gt;
            var $textbox = $(&#039;#wpTextbox1, textarea.mw-ui-input, .editor-container textarea&#039;);&lt;br /&gt;
            &lt;br /&gt;
            if ($textbox.length &amp;amp;&amp;amp; $textbox.val().trim() === &amp;quot;&amp;quot;) {&lt;br /&gt;
                var pageName = mw.config.get(&#039;wgTitle&#039;);&lt;br /&gt;
                $textbox.val(&#039;{{Infobox umum\n|nama = &#039; + pageName + &#039;\n}}&#039;);&lt;br /&gt;
                console.log(&amp;quot;Mippedia: Infobox injected!&amp;quot;);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // 1. Jalankan pas halaman beres load&lt;br /&gt;
    $(document).ready(forcePreload);&lt;br /&gt;
&lt;br /&gt;
    // 2. Jalankan tiap ada klik (karena mobile buka editor pake klik tanpa refresh)&lt;br /&gt;
    $(document).on(&#039;click&#039;, function() {&lt;br /&gt;
        setTimeout(forcePreload, 800); // Kasih delay dikit nunggu overlay muncul&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    // 3. Pake MutationObserver buat mantau elemen yang baru muncul secara gaib&lt;br /&gt;
    var observer = new MutationObserver(function() {&lt;br /&gt;
        forcePreload();&lt;br /&gt;
    });&lt;br /&gt;
    observer.observe(document.body, { childList: true, subtree: true });&lt;br /&gt;
})();&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================&lt;br /&gt;
   🚀 MIPPEDIA DATA - CONTENT GUARD (MODIFIED FOR RELATED)&lt;br /&gt;
   ========================================================== */&lt;br /&gt;
(function() {&lt;br /&gt;
    function handleBlock(e) {&lt;br /&gt;
        var ns = mw.config.get(&#039;wgNamespaceNumber&#039;);&lt;br /&gt;
        if (ns !== 0 || mw.config.get(&#039;wgIsMainPage&#039;)) return;&lt;br /&gt;
&lt;br /&gt;
        var $el = $(e.currentTarget);&lt;br /&gt;
        &lt;br /&gt;
        if ($el.closest(&#039;.mw-parser-output&#039;).length &amp;amp;&amp;amp; $el.text().toLowerCase().includes(&#039;buat item&#039;)) {&lt;br /&gt;
            return; &lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        var $textbox = $(&#039;#wpTextbox1, .editor-container textarea, textarea.mw-ui-input&#039;);&lt;br /&gt;
        &lt;br /&gt;
        if ($textbox.length) {&lt;br /&gt;
            var content = $textbox.val() || &amp;quot;&amp;quot;;&lt;br /&gt;
            &lt;br /&gt;
            // Pengecekan: Harus ada {{Infobox ATAU setidaknya ada kode #related&lt;br /&gt;
            var hasInfobox = content.includes(&#039;{{Infobox&#039;);&lt;br /&gt;
            var hasRelated = content.includes(&#039;#related:&#039;);&lt;br /&gt;
&lt;br /&gt;
            if (!hasInfobox &amp;amp;&amp;amp; !hasRelated) {&lt;br /&gt;
                e.preventDefault();&lt;br /&gt;
                e.stopPropagation();&lt;br /&gt;
                e.stopImmediatePropagation();&lt;br /&gt;
&lt;br /&gt;
                window.alert(&amp;quot;SUNTINGAN ANDA TIDAK BISA DI TERBITKAN!\n\nMippedia Data bukan tempat untuk menulis artikel ensiklopedia, Jika anda ingin membuat artikel ensiklopedia bukan di sini tempat nya.\n&amp;quot;);&lt;br /&gt;
                return false;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    $(document).on(&#039;click mousedown touchstart&#039;, &lt;br /&gt;
        &#039;#wpSave, .editor-save, .mw-ui-button.primary, button[type=&amp;quot;submit&amp;quot;], .save-button, .header-action button&#039;, &lt;br /&gt;
        function(e) {&lt;br /&gt;
            handleBlock(e);&lt;br /&gt;
        }&lt;br /&gt;
    );&lt;br /&gt;
&lt;br /&gt;
    window.addEventListener(&#039;submit&#039;, function(e) {&lt;br /&gt;
        handleBlock(e);&lt;br /&gt;
    }, true);&lt;br /&gt;
})();&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================&lt;br /&gt;
   🛡️ MIPPEDIA CORE SYSTEM - NEURAL ENGINE V12&lt;br /&gt;
   Update: Brain Upgrade - Semantic Search &amp;amp; Anti-Duplicate&lt;br /&gt;
   Semua fitur asli (Patroli, Promo, Kategori) tetap UTUH.&lt;br /&gt;
   ========================================================== */&lt;br /&gt;
mw.hook(&#039;postEdit&#039;).add(function() {&lt;br /&gt;
    var rawUser = mw.config.get(&#039;wgUserName&#039;);&lt;br /&gt;
    var userName = rawUser ? rawUser.replace(/_/g, &#039; &#039;) : &#039;Anonim&#039;;&lt;br /&gt;
    var isPatroli = (userName === &#039;Admin&#039;);&lt;br /&gt;
    &lt;br /&gt;
    if (mw.config.get(&#039;wgNamespaceNumber&#039;) !== 0) return;&lt;br /&gt;
&lt;br /&gt;
    var api = new mw.Api();&lt;br /&gt;
    var pageTitle = mw.config.get(&#039;wgPageName&#039;).replace(/_/g, &#039; &#039;);&lt;br /&gt;
&lt;br /&gt;
    api.get({&lt;br /&gt;
        action: &#039;query&#039;,&lt;br /&gt;
        titles: pageTitle,&lt;br /&gt;
        prop: &#039;revisions|categories|links&#039;,&lt;br /&gt;
        rvprop: &#039;content&#039;,&lt;br /&gt;
        clshow: &#039;!hidden&#039;,&lt;br /&gt;
        pllimit: &#039;max&#039;&lt;br /&gt;
    }).done(function(resData) {&lt;br /&gt;
        var page = resData.query.pages[Object.keys(resData.query.pages)[0]];&lt;br /&gt;
        if (!page || !page.revisions) return;&lt;br /&gt;
&lt;br /&gt;
        var rawContent = page.revisions[0][&#039;*&#039;];&lt;br /&gt;
        var content = rawContent;&lt;br /&gt;
        var summaryParts = [];&lt;br /&gt;
&lt;br /&gt;
        // --- 2. SUPER INTELLIGENCE RELATED (UPGRADE OTAK V12) ---&lt;br /&gt;
        // Cek jumlah related saat ini&lt;br /&gt;
        var currentRelatedMatch = content.match(/\{\{#related:.*?\}\}/g) || [];&lt;br /&gt;
        &lt;br /&gt;
        // Jika kurang dari 3, kita jalankan otak pencarian canggih&lt;br /&gt;
        if (currentRelatedMatch.length &amp;lt; 3) {&lt;br /&gt;
            // Hapus yang lama dulu agar tidak ada duplikat atau &amp;quot;pake yang bekas&amp;quot;&lt;br /&gt;
            content = content.replace(/\n*\{\{#related:.*?\}\}/g, &#039;&#039;);&lt;br /&gt;
&lt;br /&gt;
            // Langkah A: Ambil kandidat dari Search Engine (Ranking Skor)&lt;br /&gt;
            api.get({&lt;br /&gt;
                action: &#039;query&#039;,&lt;br /&gt;
                list: &#039;search&#039;,&lt;br /&gt;
                srsearch: pageTitle, // Gunakan judul sebagai basis pencarian semantic&lt;br /&gt;
                srlimit: 15,&lt;br /&gt;
                srprop: &#039;&#039;&lt;br /&gt;
            }).done(function(searchRes) {&lt;br /&gt;
                var candidates = {};&lt;br /&gt;
&lt;br /&gt;
                // Masukkan hasil pencarian ke pool skor&lt;br /&gt;
                if (searchRes.query &amp;amp;&amp;amp; searchRes.query.search) {&lt;br /&gt;
                    searchRes.query.search.forEach(function(item, index) {&lt;br /&gt;
                        if (item.title === pageTitle) return;&lt;br /&gt;
                        candidates[item.title] = (15 - index); // Skor berdasarkan urutan relevansi&lt;br /&gt;
                    });&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                // Langkah B: Tambah skor jika artikel ada di daftar Link Internal&lt;br /&gt;
                if (page.links) {&lt;br /&gt;
                    page.links.forEach(function(link) {&lt;br /&gt;
                        if (link.title === pageTitle) return;&lt;br /&gt;
                        candidates[link.title] = (candidates[link.title] || 0) + 5; // Bonus skor link&lt;br /&gt;
                    });&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                // Langkah C: Urutkan berdasarkan skor tertinggi (yang paling nyambung)&lt;br /&gt;
                var sortedTitles = Object.keys(candidates).sort(function(a, b) {&lt;br /&gt;
                    return candidates[b] - candidates[a];&lt;br /&gt;
                });&lt;br /&gt;
&lt;br /&gt;
                // Ambil TOP 3&lt;br /&gt;
                var finalRelated = sortedTitles.filter(t =&amp;gt; t.indexOf(&#039;:&#039;) === -1).slice(0, 3);&lt;br /&gt;
&lt;br /&gt;
                if (finalRelated.length &amp;gt; 0) {&lt;br /&gt;
                    var relatedTags = &#039;\n\n&#039; + finalRelated.map(t =&amp;gt; &#039;{{#related: &#039; + t + &#039;}}&#039;).join(&#039;\n&#039;);&lt;br /&gt;
                    content += relatedTags;&lt;br /&gt;
                    summaryParts.push(&#039;NeuralRelated&#039;);&lt;br /&gt;
                }&lt;br /&gt;
                &lt;br /&gt;
                runPatroliAndSave();&lt;br /&gt;
            });&lt;br /&gt;
        } else {&lt;br /&gt;
            runPatroliAndSave();&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        function runPatroliAndSave() {&lt;br /&gt;
            // --- 3. PATROLI ENGINE (FITUR ASLI - TETAP BERFUNGSI) ---&lt;br /&gt;
            if (isPatroli) {&lt;br /&gt;
                var placeholders = [];&lt;br /&gt;
                // Lindungi Brankas: Template, Header, Kategori, Ref, dan Kalimat Pembuka&lt;br /&gt;
                content = content.replace(/(\{\{[\s\S]*?\}\}|==+.*?==+|\[\[Kategori:.*?\]\]|&amp;lt;ref[\s\S]*?&amp;lt;\/ref&amp;gt;|^.*?adalah)/gi, function(match) {&lt;br /&gt;
                    placeholders.push(match);&lt;br /&gt;
                    return &#039;___MIP_SKIP_&#039; + (placeholders.length - 1) + &#039;___&#039;;&lt;br /&gt;
                });&lt;br /&gt;
&lt;br /&gt;
                // Proses Auto-Link (Wajib ambil daftar AllPages dulu)&lt;br /&gt;
                api.get({ action: &#039;query&#039;, list: &#039;allpages&#039;, apnamespace: 0, aplimit: &#039;max&#039; }).done(function(apData) {&lt;br /&gt;
                    var allTitles = apData.query.allpages.map(p =&amp;gt; p.title);&lt;br /&gt;
                    var lowerTitles = allTitles.map(t =&amp;gt; t.toLowerCase());&lt;br /&gt;
&lt;br /&gt;
                    var tokens = content.split(/(\s+|\[\[|\]\])/);&lt;br /&gt;
                    var inLink = false;&lt;br /&gt;
                    for (var i = 0; i &amp;lt; tokens.length; i++) {&lt;br /&gt;
                        if (tokens[i] === &#039;[[&#039; ) { inLink = true; continue; }&lt;br /&gt;
                        if (tokens[i] === &#039;]]&#039; ) { inLink = false; continue; }&lt;br /&gt;
                        if (inLink || tokens[i].trim().length &amp;lt; 3 || tokens[i].includes(&#039;___MIP_SKIP_&#039;)) continue;&lt;br /&gt;
&lt;br /&gt;
                        var wordsInToken = tokens[i].match(/\b\w+\b/g);&lt;br /&gt;
                        if (wordsInToken) {&lt;br /&gt;
                            wordsInToken.forEach(function(word) {&lt;br /&gt;
                                var idx = lowerTitles.indexOf(word.toLowerCase());&lt;br /&gt;
                                if (idx !== -1 &amp;amp;&amp;amp; allTitles[idx] !== pageTitle) {&lt;br /&gt;
                                    tokens[i] = tokens[i].replace(new RegExp(&#039;\\b&#039; + word + &#039;\\b&#039;, &#039;g&#039;), &#039;[[&#039; + allTitles[idx] + &#039;|&#039; + word + &#039;]]&#039;);&lt;br /&gt;
                                }&lt;br /&gt;
                            });&lt;br /&gt;
                        }&lt;br /&gt;
                    }&lt;br /&gt;
                    content = tokens.join(&#039;&#039;);&lt;br /&gt;
                    &lt;br /&gt;
                    // Kembalikan dari Brankas&lt;br /&gt;
                    content = content.replace(/___MIP_SKIP_(\d+)___/g, function(match, id) { return placeholders[id]; });&lt;br /&gt;
&lt;br /&gt;
                    // Bersihkan Link Merah&lt;br /&gt;
                    content = content.replace(/\[\[([^|\]:]+)\]\]/g, function(match, p1) {&lt;br /&gt;
                        return lowerTitles.includes(p1.toLowerCase()) ? match : p1;&lt;br /&gt;
                    });&lt;br /&gt;
&lt;br /&gt;
                    saveAction();&lt;br /&gt;
                });&lt;br /&gt;
            } else {&lt;br /&gt;
                saveAction();&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        function saveAction() {&lt;br /&gt;
            // --- 4. EKSEKUSI ---&lt;br /&gt;
            if (content.trim() !== rawContent.trim()) {&lt;br /&gt;
                api.postWithToken(&#039;edit&#039;, {&lt;br /&gt;
                    action: &#039;edit&#039;,&lt;br /&gt;
                    title: pageTitle,&lt;br /&gt;
                    text: content,&lt;br /&gt;
                    summary: &#039;Mippedia Neural Engine V12: &#039; + summaryParts.join(&#039;, &#039;),&lt;br /&gt;
                    bot: true, markasbot: true&lt;br /&gt;
                }).done(function() { location.reload(); });&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    });&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================&lt;br /&gt;
   🌐 MIPPEDIA SHORTDESC - DATA CENTER (PREMIUM UI)&lt;br /&gt;
   Status: INDEPENDENT &amp;amp; REFINED VISUAL&lt;br /&gt;
   Storage: MediaWiki:ShortDesc-Data.json&lt;br /&gt;
   ========================================================== */&lt;br /&gt;
(function($, mw) {&lt;br /&gt;
    &amp;quot;use strict&amp;quot;;&lt;br /&gt;
    $(document).ready(function() {&lt;br /&gt;
        if (mw.config.get(&#039;wgNamespaceNumber&#039;) !== 0 || mw.config.get(&#039;wgIsMainPage&#039;)) return;&lt;br /&gt;
&lt;br /&gt;
        var pageTitle = mw.config.get(&#039;wgPageName&#039;);&lt;br /&gt;
        var storagePage = &#039;MediaWiki:ShortDesc-Data.json&#039;;&lt;br /&gt;
        var isAdmin = mw.config.get(&#039;wgUserGroups&#039;).some(g =&amp;gt; [&#039;sysop&#039;, &#039;interface-admin&#039;].includes(g));&lt;br /&gt;
&lt;br /&gt;
        var langs = {&lt;br /&gt;
            id: { label: &#039;Mippedia bahasa Indonesia&#039;, short: &#039;ID&#039;, color: &#039;#6366f1&#039; },&lt;br /&gt;
            en: { label: &#039;Mippedia bahasa Inggris&#039;, short: &#039;EN&#039;, color: &#039;#3b82f6&#039; },&lt;br /&gt;
            concise: { label: &#039;Mippedia bahasa Indonesia ringkas&#039;, short: &#039;CON&#039;, color: &#039;#14b8a6&#039; }&lt;br /&gt;
        };&lt;br /&gt;
&lt;br /&gt;
        // UI Box dengan Spasi dan Desain Baru&lt;br /&gt;
        var html = `&lt;br /&gt;
            &amp;lt;div id=&amp;quot;desc-manager&amp;quot; style=&amp;quot;background:#ffffff; border:1px solid #f1f5f9; border-left:4px solid #6366f1; border-radius:12px; padding:20px; margin: 20px 0 25px 0; box-shadow:0 4px 12px rgba(0,0,0,0.03); font-family: -apple-system,BlinkMacSystemFont,&#039;Segoe UI&#039;,Roboto,sans-serif;&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;div style=&amp;quot;display:flex; justify-content:space-between; align-items:center; margin-bottom:12px;&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;span style=&amp;quot;font-size:13px; font-weight:700; color:#475569; text-transform:uppercase; letter-spacing:0.5px; display:flex; align-items:center; gap:6px;&amp;quot;&amp;gt;&lt;br /&gt;
                        Label Deskripsi&lt;br /&gt;
                    &amp;lt;/span&amp;gt;&lt;br /&gt;
                    &amp;lt;span id=&amp;quot;desc-open-editor&amp;quot; style=&amp;quot;cursor:pointer; padding:5px; transition:0.2s;&amp;quot; title=&amp;quot;Edit Deskripsi&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;svg width=&amp;quot;16&amp;quot; height=&amp;quot;16&amp;quot; viewBox=&amp;quot;0 0 24 24&amp;quot; fill=&amp;quot;none&amp;quot; stroke=&amp;quot;#94a3b8&amp;quot; stroke-width=&amp;quot;2&amp;quot; stroke-linecap=&amp;quot;round&amp;quot; stroke-linejoin=&amp;quot;round&amp;quot;&amp;gt;&amp;lt;path d=&amp;quot;M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7&amp;quot;&amp;gt;&amp;lt;/path&amp;gt;&amp;lt;path d=&amp;quot;M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z&amp;quot;&amp;gt;&amp;lt;/path&amp;gt;&amp;lt;/svg&amp;gt;&lt;br /&gt;
                    &amp;lt;/span&amp;gt;&lt;br /&gt;
                &amp;lt;/div&amp;gt;&lt;br /&gt;
                &lt;br /&gt;
                &amp;lt;div id=&amp;quot;desc-status-display&amp;quot; style=&amp;quot;display:flex; flex-direction:column; gap:8px;&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;small style=&amp;quot;color:#94a3b8; font-style:italic;&amp;quot;&amp;gt;Sinkronisasi data...&amp;lt;/small&amp;gt;&lt;br /&gt;
                &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;div id=&amp;quot;desc-editor&amp;quot; style=&amp;quot;display:none; margin-top:18px; border-top:1px dashed #e2e8f0; padding-top:18px;&amp;quot;&amp;gt;&lt;br /&gt;
                    ${Object.keys(langs).map(k =&amp;gt; `&lt;br /&gt;
                        &amp;lt;div style=&amp;quot;margin-bottom:12px;&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;label style=&amp;quot;display:block; font-size:11px; font-weight:bold; color:#64748b; margin-bottom:4px;&amp;quot;&amp;gt;${langs[k].label}&amp;lt;/label&amp;gt;&lt;br /&gt;
                            &amp;lt;input type=&amp;quot;text&amp;quot; id=&amp;quot;desc-in-${k}&amp;quot; placeholder=&amp;quot;Tulis deskripsi...&amp;quot; style=&amp;quot;width:100%; padding:10px; font-size:13px; border:1px solid #e2e8f0; border-radius:8px; box-sizing:border-box; outline:none; focus:border-color:#6366f1;&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;/div&amp;gt;&lt;br /&gt;
                    `).join(&#039;&#039;)}&lt;br /&gt;
                    &amp;lt;button id=&amp;quot;desc-save&amp;quot; style=&amp;quot;width:100%; padding:12px; background:#6366f1; color:white; border:none; border-radius:8px; font-size:13px; font-weight:600; cursor:pointer; margin-top:5px;&amp;quot;&amp;gt;Terbitkan&amp;lt;/button&amp;gt;&lt;br /&gt;
                &amp;lt;/div&amp;gt;&lt;br /&gt;
            &amp;lt;/div&amp;gt;`;&lt;br /&gt;
&lt;br /&gt;
        $(&#039;.mw-parser-output&#039;).prepend(html);&lt;br /&gt;
&lt;br /&gt;
        function loadDescStatus() {&lt;br /&gt;
            new mw.Api().get({ action: &#039;query&#039;, prop: &#039;revisions&#039;, titles: storagePage, rvprop: &#039;content&#039;, formatversion: 2 }).done(function(res) {&lt;br /&gt;
                var content = res.query.pages[0].revisions ? res.query.pages[0].revisions[0].content : &amp;quot;{}&amp;quot;;&lt;br /&gt;
                var fullData = JSON.parse(content);&lt;br /&gt;
                var myData = fullData[pageTitle] || {};&lt;br /&gt;
                var $statusBox = $(&#039;#desc-status-display&#039;).empty();&lt;br /&gt;
                var foundAny = false;&lt;br /&gt;
&lt;br /&gt;
                Object.keys(langs).forEach(k =&amp;gt; {&lt;br /&gt;
                    var val = myData[k];&lt;br /&gt;
                    if (val &amp;amp;&amp;amp; val.trim() !== &amp;quot;&amp;quot;) {&lt;br /&gt;
                        foundAny = true;&lt;br /&gt;
                        $statusBox.append(`&lt;br /&gt;
                            &amp;lt;div style=&amp;quot;display:flex; align-items:center; gap:10px;&amp;quot;&amp;gt;&lt;br /&gt;
                                &amp;lt;span style=&amp;quot;background:${langs[k].color}15; color:${langs[k].color}; padding:3px 10px; border-radius:20px; font-size:10px; font-weight:800; border:1px solid ${langs[k].color}30; min-width:35px; text-align:center;&amp;quot;&amp;gt;${langs[k].short}&amp;lt;/span&amp;gt;&lt;br /&gt;
                                &amp;lt;span style=&amp;quot;font-size:13px; color:#334155; line-height:1.4;&amp;quot;&amp;gt;${val}&amp;lt;/span&amp;gt;&lt;br /&gt;
                            &amp;lt;/div&amp;gt;&lt;br /&gt;
                        `);&lt;br /&gt;
                        $(&#039;#desc-in-&#039; + k).val(val);&lt;br /&gt;
                    }&lt;br /&gt;
                });&lt;br /&gt;
&lt;br /&gt;
                if (!foundAny) {&lt;br /&gt;
                    $statusBox.html(&#039;&amp;lt;div style=&amp;quot;color:#cbd5e0; font-size:13px; background:#f8fafc; padding:10px; border-radius:8px; border:1px dashed #e2e8f0;&amp;quot;&amp;gt;Belum ada metadata deskripsi yang dikaitkan dengan entitas ini.&amp;lt;/div&amp;gt;&#039;);&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        $(document).on(&#039;click&#039;, &#039;#desc-open-editor&#039;, function() { $(&#039;#desc-editor&#039;).slideToggle(); });&lt;br /&gt;
&lt;br /&gt;
        $(document).on(&#039;click&#039;, &#039;#desc-save&#039;, function() {&lt;br /&gt;
            if (!isAdmin) { alert(&#039;Akses ditolak. Anda memerlukan izin pengurus.&#039;); return; }&lt;br /&gt;
            var $btn = $(this).text(&#039;Proses Sinkronisasi...&#039;).css(&#039;opacity&#039;,&#039;0.7&#039;);&lt;br /&gt;
            var api = new mw.Api();&lt;br /&gt;
            var newData = { id: $(&#039;#desc-in-id&#039;).val().trim(), en: $(&#039;#desc-in-en&#039;).val().trim(), concise: $(&#039;#desc-in-concise&#039;).val().trim() };&lt;br /&gt;
&lt;br /&gt;
            api.get({ action: &#039;query&#039;, prop: &#039;revisions&#039;, titles: storagePage, rvprop: &#039;content&#039;, formatversion: 2 }).done(function(r) {&lt;br /&gt;
                var json = r.query.pages[0].revisions ? JSON.parse(r.query.pages[0].revisions[0].content) : {};&lt;br /&gt;
                if (!newData.id &amp;amp;&amp;amp; !newData.en &amp;amp;&amp;amp; !newData.concise) { delete json[pageTitle]; } else { json[pageTitle] = newData; }&lt;br /&gt;
&lt;br /&gt;
                api.postWithEditToken({&lt;br /&gt;
                    action: &#039;edit&#039;,&lt;br /&gt;
                    title: storagePage,&lt;br /&gt;
                    text: JSON.stringify(json, null, 2),&lt;br /&gt;
                    summary: &#039;Update Entity Description: &#039; + pageTitle&lt;br /&gt;
                }).done(function() { location.reload(); });&lt;br /&gt;
            });&lt;br /&gt;
        });&lt;br /&gt;
&lt;br /&gt;
        loadDescStatus();&lt;br /&gt;
    });&lt;br /&gt;
})(jQuery, mediaWiki);&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================&lt;br /&gt;
   📍 MIPPEDIA DATA - ULTIMATE TEXT-TO-MAP LOCATOR&lt;br /&gt;
   Fitur: Deteksi lokasi dari teks dengan database label lengkap&lt;br /&gt;
   ========================================================== */&lt;br /&gt;
(function() {&lt;br /&gt;
    $(document).ready(function() {&lt;br /&gt;
        var locationText = &amp;quot;&amp;quot;;&lt;br /&gt;
        &lt;br /&gt;
        // --- DAFTAR LABEL SUPER LENGKAP &amp;amp; MASUK AKAL ---&lt;br /&gt;
        var locationLabels = [&lt;br /&gt;
            // Umum &amp;amp; Geografis&lt;br /&gt;
            &#039;lokasi&#039;, &#039;tempat&#039;, &#039;wilayah&#039;, &#039;daerah&#039;, &#039;koordinat&#039;, &#039;alamat&#039;,&lt;br /&gt;
            // Orang (Biografi)&lt;br /&gt;
            &#039;tempat lahir&#039;, &#039;asal&#039;, &#039;kediaman&#039;, &#039;domisili&#039;, &#039;negara asal&#039;,&lt;br /&gt;
            // Organisasi &amp;amp; Perusahaan&lt;br /&gt;
            &#039;kantor pusat&#039;, &#039;markas&#039;, &#039;cabang utama&#039;, &#039;titik operasi&#039;,&lt;br /&gt;
            // Makanan &amp;amp; Budaya&lt;br /&gt;
            &#039;asal wilayah&#039;, &#039;daerah asal&#039;, &#039;negara sumber&#039;, &#039;kawasan&#039;,&lt;br /&gt;
            // Sejarah &amp;amp; Bangunan&lt;br /&gt;
            &#039;letak&#039;, &#039;posisi&#039;, &#039;titik temu&#039;, &#039;orbit&#039;&lt;br /&gt;
        ];&lt;br /&gt;
&lt;br /&gt;
        // Jalankan pencarian di tabel data (infobox atau wikitable)&lt;br /&gt;
        $(&#039;.wikitable tr, .infobox tr, .mip-data-table tr&#039;).each(function() {&lt;br /&gt;
            var label = $(this).find(&#039;th&#039;).text().toLowerCase().trim();&lt;br /&gt;
            // Hilangkan karakter spesial kayak titik dua biar matching-nya akurat&lt;br /&gt;
            label = label.replace(/[:]/g, &#039;&#039;);&lt;br /&gt;
&lt;br /&gt;
            var isMatch = locationLabels.some(function(target) {&lt;br /&gt;
                return label === target || label.includes(target);&lt;br /&gt;
            });&lt;br /&gt;
&lt;br /&gt;
            if (isMatch) {&lt;br /&gt;
                var rawValue = $(this).find(&#039;td&#039;).text().trim();&lt;br /&gt;
                // Ambil bagian utama sebelum tanda koma, kurung, atau titik koma&lt;br /&gt;
                // Misal: &amp;quot;Bandung, Jawa Barat&amp;quot; -&amp;gt; ambil &amp;quot;Bandung&amp;quot;&lt;br /&gt;
                locationText = rawValue.split(/[,(\[;]/)[0].trim(); &lt;br /&gt;
                &lt;br /&gt;
                if (locationText.length &amp;gt; 2) return false; // Stop jika sudah ketemu yang valid&lt;br /&gt;
            }&lt;br /&gt;
        });&lt;br /&gt;
&lt;br /&gt;
        // Eksekusi Render Peta&lt;br /&gt;
        if (locationText &amp;amp;&amp;amp; locationText.length &amp;gt; 2) {&lt;br /&gt;
            var $mapWrapper = $(&#039;&amp;lt;div&amp;gt;&#039;).css({&lt;br /&gt;
                &#039;margin&#039;: &#039;15px 0&#039;,&lt;br /&gt;
                &#039;padding&#039;: &#039;12px&#039;,&lt;br /&gt;
                &#039;border&#039;: &#039;1px solid #ddd&#039;,&lt;br /&gt;
                &#039;background&#039;: &#039;#ffffff&#039;,&lt;br /&gt;
                &#039;border-radius&#039;: &#039;10px&#039;,&lt;br /&gt;
                &#039;box-shadow&#039;: &#039;0 4px 12px rgba(0,0,0,0.08)&#039;&lt;br /&gt;
            });&lt;br /&gt;
&lt;br /&gt;
            $mapWrapper.append(&#039;&amp;lt;div style=&amp;quot;font-weight:bold; font-size:0.9em; margin-bottom:10px; color:#444; display:flex; align-items:center;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                               &#039;&amp;lt;span style=&amp;quot;margin-right:8px;&amp;quot;&amp;gt;🗺️&amp;lt;/span&amp;gt;Pratinjau Lokasi : &#039; + locationText + &#039;&amp;lt;/div&amp;gt;&#039;);&lt;br /&gt;
&lt;br /&gt;
            // Embed URL dengan pencarian teks (Nominatim)&lt;br /&gt;
            var embedUrl = &amp;quot;https://www.openstreetmap.org/export/embed.html?layer=mapnik&amp;amp;q=&amp;quot; + encodeURIComponent(locationText);&lt;br /&gt;
&lt;br /&gt;
            var $iframe = $(&#039;&amp;lt;iframe&amp;gt;&#039;).attr({&lt;br /&gt;
                &#039;src&#039;: embedUrl,&lt;br /&gt;
                &#039;width&#039;: &#039;100%&#039;,&lt;br /&gt;
                &#039;height&#039;: &#039;280&#039;,&lt;br /&gt;
                &#039;frameborder&#039;: &#039;0&#039;,&lt;br /&gt;
                &#039;style&#039;: &#039;border-radius: 8px; border: 1px solid #eee;&#039;&lt;br /&gt;
            });&lt;br /&gt;
&lt;br /&gt;
            $mapWrapper.append($iframe);&lt;br /&gt;
            &lt;br /&gt;
            // Link eksternal yang lebih rapi&lt;br /&gt;
            var gMapsUrl = &amp;quot;https://www.google.com/maps/search/&amp;quot; + encodeURIComponent(locationText);&lt;br /&gt;
            $mapWrapper.append(&#039;&amp;lt;div style=&amp;quot;text-align:right; margin-top:8px;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                               &#039;&amp;lt;a href=&amp;quot;&#039; + gMapsUrl + &#039;&amp;quot; target=&amp;quot;_blank&amp;quot; style=&amp;quot;font-size:0.75em; color:#6a5acd; font-weight:bold; text-decoration:none; text-transform:uppercase; letter-spacing:0.5px;&amp;quot;&amp;gt;Buka di Google Maps →&amp;lt;/a&amp;gt;&amp;lt;/div&amp;gt;&#039;);&lt;br /&gt;
&lt;br /&gt;
            // Masukkan ke bawah section deskripsi otomatis&lt;br /&gt;
            if ($(&#039;#mip-desc-section&#039;).length) {&lt;br /&gt;
                $(&#039;#mip-desc-section&#039;).after($mapWrapper);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    });&lt;br /&gt;
})();&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://data.mippedia.org/index.php?title=MediaWiki:Common.js&amp;diff=910</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://data.mippedia.org/index.php?title=MediaWiki:Common.js&amp;diff=910"/>
		<updated>2026-06-01T22:13:17Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* ==========================================================&lt;br /&gt;
   🌐 MIPPEDIA TAB ROUTER INTEGRATOR - UNIVERSAL TRANSITION (V1.2)&lt;br /&gt;
   Features: Pure Pre-Navigation Routing Simulation on Tab Title.&lt;br /&gt;
   Optimization: Universal trigger for any navigation, 0% page-load flicker.&lt;br /&gt;
   Target: Clean, lightweight, long-term safety.&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
(function() {&lt;br /&gt;
    // Ambil nama host secara dinamis (contoh: data.mippedia.org)&lt;br /&gt;
    var currentHost = window.location.hostname;&lt;br /&gt;
    var routingTimeout = null;&lt;br /&gt;
    var rawOriginalTitle = document.title;&lt;br /&gt;
&lt;br /&gt;
    // --- ENGINE CORE: UBAH JUDUL JADI DOMAIN ---&lt;br /&gt;
    function executeUniversalRouting() {&lt;br /&gt;
        if (routingTimeout) clearTimeout(routingTimeout);&lt;br /&gt;
        &lt;br /&gt;
        // Tangkap judul asli terupdate sebagai jaring pengaman&lt;br /&gt;
        var liveTitle = document.title;&lt;br /&gt;
        if (liveTitle !== currentHost) {&lt;br /&gt;
            rawOriginalTitle = liveTitle;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // SET DOMAIN DI AWAL (Saat aksi diklik / sebelum pindah halaman)&lt;br /&gt;
        document.title = currentHost;&lt;br /&gt;
&lt;br /&gt;
        // Failsafe: Jika dalam 3 detik halaman tidak jadi pindah (batal/koneksi drop),&lt;br /&gt;
        // kembalikan ke judul semula agar tidak tersangkut.&lt;br /&gt;
        routingTimeout = setTimeout(function() {&lt;br /&gt;
            if (document.title === currentHost) {&lt;br /&gt;
                document.title = rawOriginalTitle;&lt;br /&gt;
            }&lt;br /&gt;
        }, 3000);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // --- ⚡ PEMICU 1: UNIVERSAL CLICK CONTROLLER (APAPUN YANG DIKLIK) ---&lt;br /&gt;
    // Menggunakan Vanilla JS Event Listener di tingkat window agar mencakup seluruh elemen tanpa tebang pilih&lt;br /&gt;
    window.addEventListener(&#039;click&#039;, function(e) {&lt;br /&gt;
        // Cari tahu apakah elemen yang diklik berada di dalam tag &amp;lt;a&amp;gt; (Link)&lt;br /&gt;
        var anchor = e.target.closest(&#039;a&#039;);&lt;br /&gt;
        &lt;br /&gt;
        if (anchor) {&lt;br /&gt;
            var href = anchor.getAttribute(&#039;href&#039;);&lt;br /&gt;
            var target = anchor.getAttribute(&#039;target&#039;);&lt;br /&gt;
&lt;br /&gt;
            // Abaikan jika link kosong, link jangkar internal halaman (#), atau buka di tab baru (_blank)&lt;br /&gt;
            if (!href || href.startsWith(&#039;#&#039;) || href.startsWith(&#039;javascript:&#039;) || target === &#039;_blank&#039;) {&lt;br /&gt;
                return;&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
            // Eksekusi jika perpindahan terjadi di domain yang sama (internal routing)&lt;br /&gt;
            var isInternal = href.indexOf(currentHost) !== -1 || href.startsWith(&#039;/&#039;) || !href.includes(&#039;://&#039;);&lt;br /&gt;
            if (isInternal) {&lt;br /&gt;
                executeUniversalRouting();&lt;br /&gt;
            }&lt;br /&gt;
        } else {&lt;br /&gt;
            // JIKA YANG DIKLIK BUKAN LINK (Tapi tombol biasa, widget, atau elemen aksi pemindah halaman lainnya)&lt;br /&gt;
            // Kita cek apakah elemen tersebut memiliki indikasi memicu fungsi perpindahan/loading&lt;br /&gt;
            var elementTag = e.target.tagName.toLowerCase();&lt;br /&gt;
            if (elementTag === &#039;button&#039; || e.target.closest(&#039;button&#039;) || e.target.getAttribute(&#039;role&#039;) === &#039;button&#039;) {&lt;br /&gt;
                executeUniversalRouting();&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }, { passive: true });&lt;br /&gt;
&lt;br /&gt;
    // --- 💾 PEMICU 2: UNIVERSAL SUBMIT CONTROLLER (SIMPAN/FORM) ---&lt;br /&gt;
    // Memicu efek domain saat submit form (Simpan halaman, cari artikel, dll)&lt;br /&gt;
    window.addEventListener(&#039;submit&#039;, function() {&lt;br /&gt;
        executeUniversalRouting();&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    // --- 🛡️ SAFETY GUARDIAN: ANTI STUCK ON TAB BLUR ---&lt;br /&gt;
    // Jika user buru-buru pindah tab sebelum halaman sempat berganti, kembalikan judul asli&lt;br /&gt;
    window.addEventListener(&#039;blur&#039;, function() {&lt;br /&gt;
        if (routingTimeout) clearTimeout(routingTimeout);&lt;br /&gt;
        if (document.title === currentHost) {&lt;br /&gt;
            document.title = rawOriginalTitle;&lt;br /&gt;
        }&lt;br /&gt;
    });&lt;br /&gt;
    window.addEventListener(&#039;pagehide&#039;, function() {&lt;br /&gt;
        if (routingTimeout) clearTimeout(routingTimeout);&lt;br /&gt;
        if (document.title === currentHost) {&lt;br /&gt;
            document.title = rawOriginalTitle;&lt;br /&gt;
        }&lt;br /&gt;
    });&lt;br /&gt;
})();&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================&lt;br /&gt;
   🧠 MIPPEDIA DATA - SMART CONTEXT + AUTO THUMBNAIL (V10.1)&lt;br /&gt;
   Features: Priority Check (ID &amp;gt; EN &amp;gt; CONCISE), Auto-Age, &lt;br /&gt;
             Auto-Bold, Smart Links, Dynamic Context,&lt;br /&gt;
             Targeted Isolation (Safe for Forms), Dynamic Noindex,&lt;br /&gt;
             Aesthetic Centered Empty State + 🚀 Instant Action Hub (3 Buttons)&lt;br /&gt;
   Fixes: Mobile View Visibility &amp;amp; Custom Short URL Route (No /w/)&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
(function() {&lt;br /&gt;
    $(document).ready(function() {&lt;br /&gt;
        var $descSection = $(&#039;#mip-desc-section&#039;), $descBox = $(&#039;#mip-auto-description&#039;),&lt;br /&gt;
            $sourceInfo = $(&#039;#mip-source-info&#039;), $portalLinks = $(&#039;#mip-portal-links&#039;),&lt;br /&gt;
            $projectPortal = $(&#039;#mip-project-portal&#039;), $mainContent = $(&#039;#mw-content-text&#039;);&lt;br /&gt;
        &lt;br /&gt;
        if (!$descBox.length) return;&lt;br /&gt;
&lt;br /&gt;
        var pageTitle = mw.config.get(&#039;wgPageName&#039;).replace(/_/g, &#039; &#039;),&lt;br /&gt;
            cacheKey = &#039;mip_smart_context_thumb_&#039; + pageTitle, now = new Date().getTime(),&lt;br /&gt;
            currentYear = 2026;&lt;br /&gt;
&lt;br /&gt;
        // --- KONFIGURASI PROYEK ---&lt;br /&gt;
        var projects = [&lt;br /&gt;
            { id: &#039;id&#039;, name: &#039;Mippedia bahasa Indonesia&#039;, url: &#039;https://id.mippedia.org/api.php&#039;, base: &#039;https://id.mippedia.org/wiki/&#039;, label: &#039;Mippedia Indonesia&#039; },&lt;br /&gt;
            { id: &#039;en&#039;, name: &#039;Mippedia bahasa Inggris&#039;, url: &#039;https://en.mippedia.org/api.php&#039;, base: &#039;https://en.mippedia.org/wiki/&#039;, label: &#039;Mippedia Inggris&#039; },&lt;br /&gt;
            { id: &#039;concise&#039;, name: &#039;Mippedia bahasa Indonesia ringkas&#039;, url: &#039;https://concise.mippedia.org/api.php&#039;, base: &#039;https://concise.mippedia.org/wiki/&#039;, label: &#039;Mippedia Ringkas&#039; }&lt;br /&gt;
        ];&lt;br /&gt;
&lt;br /&gt;
        // --- 🎨 ANIMASI, HOVER EFFECT &amp;amp; RESPONSIVE STYLE ---&lt;br /&gt;
        if (!$(&#039;#mip-clean-style&#039;).length) {&lt;br /&gt;
            $(&#039;head&#039;).append(&lt;br /&gt;
                &#039;&amp;lt;style id=&amp;quot;mip-clean-style&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                    &#039;@keyframes mipFadeInUp {&#039; +&lt;br /&gt;
                        &#039;from { opacity: 0; transform: translateY(15px); }&#039; +&lt;br /&gt;
                        &#039;to { opacity: 1; transform: translateY(0); }&#039; +&lt;br /&gt;
                    &#039;}&#039; +&lt;br /&gt;
                    &#039;#mip-empty-state-notice {&#039; +&lt;br /&gt;
                        &#039;display: block !important;&#039; + /* Memaksa tampil di seluler/mobile */&lt;br /&gt;
                        &#039;animation: mipFadeInUp 0.6s cubic-bezier(0.16, 1, 0.3, 1) forwards;&#039; +&lt;br /&gt;
                    &#039;}&#039; +&lt;br /&gt;
                    &#039;.mip-btn-container {&#039; +&lt;br /&gt;
                        &#039;display: flex;&#039; +&lt;br /&gt;
                        &#039;flex-wrap: wrap;&#039; + /* Supaya otomatis turun ke bawah kalau di HP */&lt;br /&gt;
                        &#039;justify-content: center;&#039; +&lt;br /&gt;
                        &#039;margin-bottom: 30px;&#039; +&lt;br /&gt;
                        &#039;padding-top: 5px;&#039; +&lt;br /&gt;
                    &#039;}&#039; +&lt;br /&gt;
                    &#039;.mip-action-btn {&#039; +&lt;br /&gt;
                        &#039;display: inline-flex; align-items: center; justify-content: center;&#039; +&lt;br /&gt;
                        &#039;padding: 10px 18px; margin: 6px; font-size: 0.88em; font-weight: 600;&#039; +&lt;br /&gt;
                        &#039;color: #6a5acd !important; background: #ffffff; border: 1.5px solid #6a5acd;&#039; +&lt;br /&gt;
                        &#039;border-radius: 30px; text-decoration: none !important; cursor: pointer;&#039; +&lt;br /&gt;
                        &#039;transition: all 0.25s ease-in-out; box-shadow: 0 2px 5px rgba(106,92,205,0.08);&#039; +&lt;br /&gt;
                        &#039;flex-grow: 1; max-width: 220px; min-width: 150px;&#039; + /* Penyesuaian porsi tombol di HP */&lt;br /&gt;
                    &#039;}&#039; +&lt;br /&gt;
                    &#039;.mip-action-btn:hover {&#039; +&lt;br /&gt;
                        &#039;color: #ffffff !important; background: #6a5acd;&#039; +&lt;br /&gt;
                        &#039;transform: translateY(-2px); box-shadow: 0 4px 12px rgba(106,92,205,0.2);&#039; +&lt;br /&gt;
                    &#039;}&#039; +&lt;br /&gt;
                    &#039;.mip-action-btn:active {&#039; +&lt;br /&gt;
                        &#039;transform: translateY(0);&#039; +&lt;br /&gt;
                    &#039;}&#039; +&lt;br /&gt;
                &#039;&amp;lt;/style&amp;gt;&#039;&lt;br /&gt;
            );&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // --- FUNGSI TOOLS ---&lt;br /&gt;
        function applyAutoBold(text) { return text.replace(new RegExp(&#039;(&#039; + pageTitle + &#039;)&#039;, &#039;gi&#039;), &#039;&amp;lt;strong&amp;gt;$1&amp;lt;/strong&amp;gt;&#039;); }&lt;br /&gt;
        function cleanExtract(text) { return text.replace(/\[\d+\]/g, &#039;&#039;).replace(/\{\{[^}]+\}\}/g, &#039;&#039;).replace(/\(\s*\)/g, &#039;&#039;).replace(/\s\s+/g, &#039; &#039;).trim(); }&lt;br /&gt;
        &lt;br /&gt;
        function applyDynamicContext(text) {&lt;br /&gt;
            var date = new Date();&lt;br /&gt;
            var hari = [&amp;quot;Minggu&amp;quot;, &amp;quot;Senin&amp;quot;, &amp;quot;Selasa&amp;quot;, &amp;quot;Rabu&amp;quot;, &amp;quot;Kamis&amp;quot;, &amp;quot;Jumat&amp;quot;, &amp;quot;Sabtu&amp;quot;];&lt;br /&gt;
            var bulan = [&amp;quot;Januari&amp;quot;, &amp;quot;Februari&amp;quot;, &amp;quot;Maret&amp;quot;, &amp;quot;April&amp;quot;, &amp;quot;Mei&amp;quot;, &amp;quot;Juni&amp;quot;, &amp;quot;Juli&amp;quot;, &amp;quot;Agustus&amp;quot;, &amp;quot;September&amp;quot;, &amp;quot;Oktober&amp;quot;, &amp;quot;November&amp;quot;, &amp;quot;Desember&amp;quot;];&lt;br /&gt;
            var tglSkrg = hari[date.getDay()] + &amp;quot;, &amp;quot; + date.getDate() + &amp;quot; &amp;quot; + bulan[date.getMonth()] + &amp;quot; &amp;quot; + date.getFullYear();&lt;br /&gt;
            return text.replace(/(hari ini|saat ini|sekarang)/gi, &#039;$1 (&#039; + tglSkrg + &#039;)&#039;)&lt;br /&gt;
                .replace(/(\d{1,2}\s(?:Januari|Februari|Maret|April|Mei|Juni|Juli|Agustus|September|Oktober|November|Desember)\s(\d{4}))/gi, function(m, f, y) { &lt;br /&gt;
                    return f + &amp;quot; &amp;lt;span style=&#039;color: #444; font-weight: bold;&#039;&amp;gt;– usia &amp;quot; + (currentYear - parseInt(y)) + &amp;quot; tahun&amp;lt;/span&amp;gt;&amp;quot;; &lt;br /&gt;
                })&lt;br /&gt;
                .replace(/(sejak|tahun)\s(\d{4})/gi, function(m, k, y) {&lt;br /&gt;
                    var gap = currentYear - parseInt(y);&lt;br /&gt;
                    if (gap &amp;gt; 0 &amp;amp;&amp;amp; gap &amp;lt; 100) return k + &amp;quot; &amp;quot; + y + &amp;quot; &amp;lt;small style=&#039;color: #888;&#039;&amp;gt;(&amp;quot; + gap + &amp;quot; thn lalu)&amp;lt;/small&amp;gt;&amp;quot;;&lt;br /&gt;
                    return m;&lt;br /&gt;
                });&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        function applySummary(text) {&lt;br /&gt;
            var limit = 250;&lt;br /&gt;
            if (text.length &amp;lt;= limit) return &#039;&amp;lt;span&amp;gt;&#039; + text + &#039;&amp;lt;/span&amp;gt;&#039;;&lt;br /&gt;
            return &#039;&amp;lt;span&amp;gt;&#039; + text.substring(0, limit) + &#039;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;mip-dots&amp;quot;&amp;gt;... &amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;mip-more&amp;quot; style=&amp;quot;display:none;&amp;quot;&amp;gt;&#039; + text.substring(limit) + &#039;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;mip-read-btn&amp;quot; style=&amp;quot;color: #6a5acd; cursor: pointer; font-weight: bold; margin-left: 5px;&amp;quot;&amp;gt;Baca selengkapnya&amp;lt;/span&amp;gt;&#039;;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // --- SMART LINKS PORTAL ---&lt;br /&gt;
        function buildSmartLinks(currentId, validatedEnTitle) {&lt;br /&gt;
            $portalLinks.empty();&lt;br /&gt;
            var validLinks = [];&lt;br /&gt;
            &lt;br /&gt;
            var checkRequests = projects.filter(p =&amp;gt; p.id !== currentId).map(function(p) {&lt;br /&gt;
                var targetTitle = (p.id === &#039;en&#039; &amp;amp;&amp;amp; validatedEnTitle) ? validatedEnTitle : pageTitle;&lt;br /&gt;
                if (p.id === &#039;en&#039; &amp;amp;&amp;amp; !validatedEnTitle) return $.Deferred().resolve();&lt;br /&gt;
&lt;br /&gt;
                return $.ajax({ url: p.url, data: { action: &#039;query&#039;, titles: targetTitle, format: &#039;json&#039;, origin: &#039;*&#039; }, dataType: &#039;json&#039; })&lt;br /&gt;
                    .then(function(data) { &lt;br /&gt;
                        if (data.query.pages[&amp;quot;-1&amp;quot;] === undefined) { &lt;br /&gt;
                            validLinks.push(&#039;&amp;lt;a href=&amp;quot;&#039; + p.base + encodeURIComponent(targetTitle) + &#039;&amp;quot; target=&amp;quot;_blank&amp;quot; style=&amp;quot;color: #6a5acd; text-decoration: underline; font-weight: bold;&amp;quot;&amp;gt;&#039; + p.label + &#039;&amp;lt;/a&amp;gt;&#039;); &lt;br /&gt;
                        } &lt;br /&gt;
                    });&lt;br /&gt;
            });&lt;br /&gt;
&lt;br /&gt;
            $.when.apply($, checkRequests).done(function() {&lt;br /&gt;
                if (validLinks.length &amp;gt; 0) { $portalLinks.html(validLinks.join(&#039; &amp;lt;span style=&amp;quot;color:#ccc; margin: 0 5px;&amp;quot;&amp;gt;•&amp;lt;/span&amp;gt; &#039;)); $projectPortal.fadeIn(); }&lt;br /&gt;
            });&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // --- 🧠 RENDER EMPTY STATE + INTERACTIVE HUB ---&lt;br /&gt;
        function toggleMippediaLayout(isEmpty) {&lt;br /&gt;
            var $existingNotice = $(&#039;#mip-empty-state-notice&#039;);&lt;br /&gt;
            var userGroups = mw.config.get(&#039;wgUserGroups&#039;) || [];&lt;br /&gt;
            var isSysop = userGroups.indexOf(&#039;sysop&#039;) !== -1;&lt;br /&gt;
&lt;br /&gt;
            var $wikiDataElements = $mainContent.children().not(&#039;#mip-empty-state-notice, #mip-desc-section, script, style, .printfooter&#039;);&lt;br /&gt;
            var $editElements = $(&#039;#ca-edit, .mw-editsection, .wb-editsection, .mip-edit-trigger, [id*=&amp;quot;edit&amp;quot;], [class*=&amp;quot;edit-pencil&amp;quot;]&#039;);&lt;br /&gt;
            var $metaRobots = $(&#039;meta[name=&amp;quot;robots&amp;quot;]&#039;);&lt;br /&gt;
&lt;br /&gt;
            if (isEmpty) {&lt;br /&gt;
                if (!$existingNotice.length) {&lt;br /&gt;
                    // Perbaikan Jalur URL tanpa sub-folder /w/ langsung menembak Short URL root parameter&lt;br /&gt;
                    var createUrlID = &#039;https://id.mippedia.org/index.php?title=&#039; + encodeURIComponent(pageTitle) + &#039;&amp;amp;action=edit&#039;;&lt;br /&gt;
                    var createUrlEN = &#039;https://en.mippedia.org/index.php?title=&#039; + encodeURIComponent(pageTitle) + &#039;&amp;amp;action=edit&#039;;&lt;br /&gt;
                    var createUrlConcise = &#039;https://concise.mippedia.org/index.php?title=&#039; + encodeURIComponent(pageTitle) + &#039;&amp;amp;action=edit&#039;;&lt;br /&gt;
&lt;br /&gt;
                    var noticeHtml = &lt;br /&gt;
                        &#039;&amp;lt;div id=&amp;quot;mip-empty-state-notice&amp;quot; style=&amp;quot;text-align: center; max-width: 600px; margin: 40px auto; padding: 10px; font-family: -apple-system, BlinkMacSystemFont, \&#039;Segoe UI\&#039;, Roboto, sans-serif;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                            &#039;&amp;lt;!-- Ikon Warning Besar --&amp;gt;&#039; +&lt;br /&gt;
                            &#039;&amp;lt;div style=&amp;quot;margin-bottom: 22px; display: inline-block;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                &#039;&amp;lt;svg width=&amp;quot;64&amp;quot; height=&amp;quot;64&amp;quot; viewBox=&amp;quot;0 0 24 24&amp;quot; fill=&amp;quot;none&amp;quot; stroke=&amp;quot;#d9534f&amp;quot; stroke-width=&amp;quot;1.8&amp;quot; stroke-linecap=&amp;quot;round&amp;quot; stroke-linejoin=&amp;quot;round&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                    &#039;&amp;lt;path d=&amp;quot;M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z&amp;quot;&amp;gt;&amp;lt;/path&amp;gt;&#039; +&lt;br /&gt;
                                    &#039;&amp;lt;line x1=&amp;quot;12&amp;quot; y1=&amp;quot;9&amp;quot; x2=&amp;quot;12&amp;quot; y2=&amp;quot;13&amp;quot;&amp;gt;&amp;lt;/line&amp;gt;&#039; +&lt;br /&gt;
                                    &#039;&amp;lt;line x1=&amp;quot;12&amp;quot; y1=&amp;quot;17&amp;quot; x2=&amp;quot;12.01&amp;quot; y2=&amp;quot;17&amp;quot;&amp;gt;&amp;lt;/line&amp;gt;&#039; +&lt;br /&gt;
                                &#039;&amp;lt;/&#039; + &#039;svg&amp;gt;&#039; +&lt;br /&gt;
                            &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
                            &#039;&amp;lt;!-- Judul Utama --&amp;gt;&#039; +&lt;br /&gt;
                            &#039;&amp;lt;h4 style=&amp;quot;color: #2c3e50; margin: 0 0 12px 0; font-size: 1.35em; font-weight: 700; letter-spacing: -0.3px;&amp;quot;&amp;gt;Item Data Struktur Tidak Memiliki Sumber Artikel&amp;lt;/h4&amp;gt;&#039; +&lt;br /&gt;
                            &#039;&amp;lt;!-- Deskripsi Utama --&amp;gt;&#039; +&lt;br /&gt;
                            &#039;&amp;lt;p style=&amp;quot;color: #555; margin: 0 0 25px 0; font-size: 0.98em; line-height: 1.6;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                &#039;Item data ini saat ini &amp;lt;strong&amp;gt;tidak memiliki artikel rujukan satu pun&amp;lt;/strong&amp;gt; di Mippedia Indonesia, Mippedia Inggris, maupun Mippedia Indonesia Ringkas.&#039; +&lt;br /&gt;
                            &#039;&amp;lt;/p&amp;gt;&#039; +&lt;br /&gt;
                            &lt;br /&gt;
                            &#039;&amp;lt;!-- 🚀 INSTANT ACTION HUB (Flexbox-Responsive Mobile &amp;amp; URL No /w/) --&amp;gt;&#039; +&lt;br /&gt;
                            &#039;&amp;lt;div class=&amp;quot;mip-btn-container&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                &#039;&amp;lt;a href=&amp;quot;&#039; + createUrlID + &#039;&amp;quot; target=&amp;quot;_blank&amp;quot; class=&amp;quot;mip-action-btn&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                    &#039;&amp;lt;span style=&amp;quot;margin-right: 6px;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;Buat Artikel ID&#039; +&lt;br /&gt;
                                &#039;&amp;lt;/a&amp;gt;&#039; +&lt;br /&gt;
                                &#039;&amp;lt;a href=&amp;quot;&#039; + createUrlEN + &#039;&amp;quot; target=&amp;quot;_blank&amp;quot; class=&amp;quot;mip-action-btn&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                    &#039;&amp;lt;span style=&amp;quot;margin-right: 6px;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;Buat Artikel EN&#039; +&lt;br /&gt;
                                &#039;&amp;lt;/a&amp;gt;&#039; +&lt;br /&gt;
                                &#039;&amp;lt;a href=&amp;quot;&#039; + createUrlConcise + &#039;&amp;quot; target=&amp;quot;_blank&amp;quot; class=&amp;quot;mip-action-btn&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                    &#039;&amp;lt;span style=&amp;quot;margin-right: 6px;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;Buat Artikel Ringkas&#039; +&lt;br /&gt;
                                &#039;&amp;lt;/a&amp;gt;&#039; +&lt;br /&gt;
                            &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
&lt;br /&gt;
                            &#039;&amp;lt;!-- Catatan Kaki Info Kecil --&amp;gt;&#039; +&lt;br /&gt;
                            &#039;&amp;lt;div style=&amp;quot;font-size: 0.85em; color: #a0a0a0; line-height: 1.5; font-style: italic; border-top: 1px solid #f0f0f0; padding-top: 15px;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                &#039;Informasi: Item data yang tidak terikat dengan artikel ensiklopedia apa pun dalam ekosistem Mippedia akan dihapus secara otomatis oleh pengurus dalam waktu dekat.&#039; +&lt;br /&gt;
                            &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
                        &#039;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
                    $mainContent.prepend(noticeHtml);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                $wikiDataElements.hide();&lt;br /&gt;
                $descSection.hide();&lt;br /&gt;
&lt;br /&gt;
                if (!isSysop) {&lt;br /&gt;
                    $editElements.css({ &#039;pointer-events&#039;: &#039;none&#039;, &#039;opacity&#039;: &#039;0.3&#039;, &#039;cursor&#039;: &#039;not-allowed&#039; }).hide();&lt;br /&gt;
                    $(document).on(&#039;keydown.miplock&#039;, function(e) {&lt;br /&gt;
                        if (e.key.toLowerCase() === &#039;e&#039; &amp;amp;&amp;amp; !$(e.target).is(&#039;input, textarea&#039;)) {&lt;br /&gt;
                            e.preventDefault();&lt;br /&gt;
                            return false;&lt;br /&gt;
                        }&lt;br /&gt;
                    });&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                mw.config.set(&#039;wgRobotsPolicies&#039;, { &#039;index&#039;: &#039;noindex&#039;, &#039;follow&#039;: &#039;nofollow&#039; });&lt;br /&gt;
                if ($metaRobots.length) {&lt;br /&gt;
                    $metaRobots.attr(&#039;content&#039;, &#039;noindex, nofollow&#039;);&lt;br /&gt;
                } else {&lt;br /&gt;
                    $(&#039;head&#039;).append(&#039;&amp;lt;meta name=&amp;quot;robots&amp;quot; content=&amp;quot;noindex, nofollow&amp;quot;&amp;gt;&#039;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
            } else {&lt;br /&gt;
                if ($existingNotice.length) $existingNotice.remove();&lt;br /&gt;
                &lt;br /&gt;
                $wikiDataElements.show();&lt;br /&gt;
                $descSection.show();&lt;br /&gt;
&lt;br /&gt;
                if (!isSysop) {&lt;br /&gt;
                    $(document).off(&#039;keydown.miplock&#039;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                mw.config.set(&#039;wgRobotsPolicies&#039;, { &#039;index&#039;: &#039;index&#039;, &#039;follow&#039;: &#039;follow&#039; });&lt;br /&gt;
                if ($metaRobots.length) {&lt;br /&gt;
                    $metaRobots.attr(&#039;content&#039;, &#039;index, follow&#039;);&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // --- SISTEM PRIORITAS ---&lt;br /&gt;
        var cached = JSON.parse(localStorage.getItem(cacheKey) || &amp;quot;{}&amp;quot;);&lt;br /&gt;
        var globalEnTitle = cached.enTitle || &amp;quot;&amp;quot;; &lt;br /&gt;
&lt;br /&gt;
        function init() {&lt;br /&gt;
            var pPrimary = projects[0]; &lt;br /&gt;
            $.ajax({&lt;br /&gt;
                url: pPrimary.url,&lt;br /&gt;
                data: { action: &#039;query&#039;, prop: &#039;revisions|pageimages|langlinks&#039;, lllang: &#039;en&#039;, rvprop: &#039;timestamp&#039;, piprop: &#039;thumbnail&#039;, pithumbsize: 150, titles: pageTitle, format: &#039;json&#039;, origin: &#039;*&#039; },&lt;br /&gt;
                dataType: &#039;json&#039;,&lt;br /&gt;
                success: function(res) {&lt;br /&gt;
                    var pg = res.query.pages, id = Object.keys(pg)[0];&lt;br /&gt;
                    var latestTS = (id != &amp;quot;-1&amp;quot;) ? pg[id].revisions[0].timestamp : &amp;quot;0&amp;quot;;&lt;br /&gt;
                    var thumbUrl = (id != &amp;quot;-1&amp;quot; &amp;amp;&amp;amp; pg[id].thumbnail) ? pg[id].thumbnail.source : &amp;quot;&amp;quot;;&lt;br /&gt;
                    &lt;br /&gt;
                    if (id != &amp;quot;-1&amp;quot; &amp;amp;&amp;amp; pg[id].langlinks &amp;amp;&amp;amp; pg[id].langlinks[0]) {&lt;br /&gt;
                        globalEnTitle = pg[id].langlinks[0][&#039;*&#039;];&lt;br /&gt;
                    }&lt;br /&gt;
&lt;br /&gt;
                    if (cached.content &amp;amp;&amp;amp; cached.ts === latestTS &amp;amp;&amp;amp; latestTS !== &amp;quot;0&amp;quot; &amp;amp;&amp;amp; !cached.isEmpty) {&lt;br /&gt;
                        toggleMippediaLayout(false);&lt;br /&gt;
                        renderAll(cached.p, cached.content, cached.isTrans, cached.orig, cached.img, cached.customUrl, cached.enTitle);&lt;br /&gt;
                    } else { &lt;br /&gt;
                        fetchPriorityData(0, latestTS, thumbUrl); &lt;br /&gt;
                    }&lt;br /&gt;
                },&lt;br /&gt;
                error: function() { &lt;br /&gt;
                    if (cached.content) {&lt;br /&gt;
                        toggleMippediaLayout(cached.isEmpty || false);&lt;br /&gt;
                        if (!cached.isEmpty) renderAll(cached.p, cached.content, cached.isTrans, cached.orig, cached.img, cached.customUrl, cached.enTitle);&lt;br /&gt;
                    } &lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        function fetchPriorityData(index, newTS, img) {&lt;br /&gt;
            if (index &amp;gt;= projects.length) {&lt;br /&gt;
                localStorage.setItem(cacheKey, JSON.stringify({isEmpty: true, ts: newTS, content: &amp;quot;&amp;quot;}));&lt;br /&gt;
                toggleMippediaLayout(true);&lt;br /&gt;
                return;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            var p = projects[index];&lt;br /&gt;
&lt;br /&gt;
            if (p.id === &#039;en&#039;) {&lt;br /&gt;
                if (!globalEnTitle) {&lt;br /&gt;
                    $.ajax({&lt;br /&gt;
                        url: &#039;https://concise.mippedia.org/api.php&#039;,&lt;br /&gt;
                        data: { action: &#039;query&#039;, prop: &#039;langlinks&#039;, lllang: &#039;en&#039;, titles: pageTitle, format: &#039;json&#039;, origin: &#039;*&#039; },&lt;br /&gt;
                        dataType: &#039;json&#039;,&lt;br /&gt;
                        async: false, &lt;br /&gt;
                        success: function(cRes) {&lt;br /&gt;
                            var cPg = cRes.query.pages, cId = Object.keys(cPg)[0];&lt;br /&gt;
                            if (cId != &amp;quot;-1&amp;quot; &amp;amp;&amp;amp; cPg[cId].langlinks &amp;amp;&amp;amp; cPg[cId].langlinks[0]) {&lt;br /&gt;
                                globalEnTitle = cPg[cId].langlinks[0][&#039;*&#039;];&lt;br /&gt;
                            }&lt;br /&gt;
                        }&lt;br /&gt;
                    });&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                if (globalEnTitle) {&lt;br /&gt;
                    $.ajax({&lt;br /&gt;
                        url: p.url,&lt;br /&gt;
                        data: { action: &#039;query&#039;, prop: &#039;extracts&#039;, exintro: 1, explaintext: 1, titles: globalEnTitle, format: &#039;json&#039;, origin: &#039;*&#039; },&lt;br /&gt;
                        dataType: &#039;json&#039;,&lt;br /&gt;
                        success: function(data) {&lt;br /&gt;
                            var pages = data.query.pages, pageId = Object.keys(pages)[0];&lt;br /&gt;
                            if (pageId != &amp;quot;-1&amp;quot; &amp;amp;&amp;amp; pages[pageId].extract) {&lt;br /&gt;
                                var extract = cleanExtract(pages[pageId].extract);&lt;br /&gt;
                                finalize(p, extract, false, &amp;quot;&amp;quot;, newTS, img, p.base + encodeURIComponent(globalEnTitle), globalEnTitle);&lt;br /&gt;
                            } else {&lt;br /&gt;
                                fetchPriorityData(index + 1, newTS, img);&lt;br /&gt;
                            }&lt;br /&gt;
                        },&lt;br /&gt;
                        error: function() { fetchPriorityData(index + 1, newTS, img); }&lt;br /&gt;
                    });&lt;br /&gt;
                } else {&lt;br /&gt;
                    fetchPriorityData(index + 1, newTS, img);&lt;br /&gt;
                }&lt;br /&gt;
            } else {&lt;br /&gt;
                $.ajax({&lt;br /&gt;
                    url: p.url,&lt;br /&gt;
                    data: { action: &#039;query&#039;, prop: &#039;extracts&#039;, exintro: 1, explaintext: 1, titles: pageTitle, format: &#039;json&#039;, origin: &#039;*&#039; },&lt;br /&gt;
                    dataType: &#039;json&#039;,&lt;br /&gt;
                    success: function(data) {&lt;br /&gt;
                        var pages = data.query.pages, pageId = Object.keys(pages)[0];&lt;br /&gt;
                        if (pageId != &amp;quot;-1&amp;quot; &amp;amp;&amp;amp; pages[pageId].extract) {&lt;br /&gt;
                            var extract = cleanExtract(pages[pageId].extract);&lt;br /&gt;
                            finalize(p, extract, false, &amp;quot;&amp;quot;, newTS, img, p.base + encodeURIComponent(pageTitle), globalEnTitle); &lt;br /&gt;
                        } else {&lt;br /&gt;
                            fetchPriorityData(index + 1, newTS, img);&lt;br /&gt;
                        }&lt;br /&gt;
                    },&lt;br /&gt;
                    error: function() { fetchPriorityData(index + 1, newTS, img); }&lt;br /&gt;
                });&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        function finalize(p, c, t, o, ts, img, customUrl, enTitle) {&lt;br /&gt;
            localStorage.setItem(cacheKey, JSON.stringify({isEmpty: false, p:p, content:c, isTrans:t, orig:o, ts:ts, img:img, customUrl: customUrl, enTitle: enTitle}));&lt;br /&gt;
            toggleMippediaLayout(false); &lt;br /&gt;
            renderAll(p, c, t, o, img, customUrl, enTitle);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        function renderAll(p, currentText, isTranslated, originalText, img, customUrl, enTitle) {&lt;br /&gt;
            var processedText = applyAutoBold(applyDynamicContext(currentText));&lt;br /&gt;
            var thumbHtml = img ? &#039;&amp;lt;div style=&amp;quot;float: right; margin-left: 15px; margin-bottom: 10px; border: 1px solid #ddd; padding: 3px; background: #fff; border-radius: 4px; box-shadow: 0 2px 4px rgba(0,0,0,0.1);&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;&#039;+img+&#039;&amp;quot; style=&amp;quot;max-width: 100px; display: block; height: auto;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039; : &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
            if (!$mainContent.find(&#039;#mip-desc-section&#039;).length) {&lt;br /&gt;
                $mainContent.prepend($descSection);&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            $descSection.show();&lt;br /&gt;
            $descBox.show().html(thumbHtml + applySummary(processedText) + &#039;&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;);&lt;br /&gt;
            &lt;br /&gt;
            var targetLink = customUrl ? customUrl : p.base + encodeURIComponent(pageTitle);&lt;br /&gt;
            var footer = &#039;&amp;lt;div style=&amp;quot;font-size: 0.9em; color: #777;&amp;quot;&amp;gt;Sumber : &amp;lt;a href=&amp;quot;&#039; + targetLink + &#039;&amp;quot; target=&amp;quot;_blank&amp;quot; style=&amp;quot;color: #6a5acd; font-weight: bold; text-decoration: none;&amp;quot;&amp;gt;&#039; + p.name + &#039;.&amp;lt;/a&amp;gt;&#039;;&lt;br /&gt;
            if (isTranslated) { footer += &#039;&amp;lt;br&amp;gt;&amp;lt;span style=&amp;quot;font-size: 0.85em; font-style: italic;&amp;quot;&amp;gt;(Diterjemahkan secara otomatis)&amp;lt;/span&amp;gt; &amp;lt;span id=&amp;quot;mip-toggle-orig&amp;quot; style=&amp;quot;color: #6a5acd; cursor: pointer; text-decoration: underline; margin-left: 5px;&amp;quot;&amp;gt;Tampilkan versi asli&amp;lt;/span&amp;gt;&#039;; }&lt;br /&gt;
            $sourceInfo.show().html(footer);&lt;br /&gt;
            &lt;br /&gt;
            buildSmartLinks(p.id, enTitle);&lt;br /&gt;
            &lt;br /&gt;
            $(document).off(&#039;click&#039;, &#039;.mip-read-btn&#039;).on(&#039;click&#039;, &#039;.mip-read-btn&#039;, function() { $(this).hide(); $(&#039;.mip-dots&#039;).hide(); $(&#039;.mip-more&#039;).fadeIn(); });&lt;br /&gt;
            $(document).off(&#039;click&#039;, &#039;#mip-toggle-orig&#039;).on(&#039;click&#039;, &#039;#mip-toggle-orig&#039;, function() {&lt;br /&gt;
                var isOrig = ($(this).text() === &#039;Tampilkan versi asli&#039;);&lt;br /&gt;
                var textToDisplay = applyAutoBold(applyDynamicContext(isOrig ? originalText : currentText));&lt;br /&gt;
                $descBox.html(thumbHtml + applySummary(textToDisplay) + &#039;&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;);&lt;br /&gt;
                $(this).text(isOrig ? &#039;Tampilkan terjemahan&#039; : &#039;Tampilkan versi asli&#039;);&lt;br /&gt;
            });&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        init();&lt;br /&gt;
    });&lt;br /&gt;
})();&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================&lt;br /&gt;
   🚀 MIPPEDIA DATA - CORE SYSTEM (ULTIMATE BUNDLE)&lt;br /&gt;
   Status: FINAL &amp;amp; REVISED (Visual Fix + Permission Logic)&lt;br /&gt;
   Fix: Mobile Responsive Notification Position&lt;br /&gt;
   ========================================================== */&lt;br /&gt;
&lt;br /&gt;
(function() {&lt;br /&gt;
    $(document).ready(function() {&lt;br /&gt;
        // --- 1. FILTER GLOBAL (Namespace 0 &amp;amp; Bukan Halaman Utama) ---&lt;br /&gt;
        if (mw.config.get(&#039;wgNamespaceNumber&#039;) !== 0 || &lt;br /&gt;
            mw.config.get(&#039;wgIsMainPage&#039;) || &lt;br /&gt;
            mw.config.get(&#039;wgAction&#039;) !== &#039;view&#039;) return;&lt;br /&gt;
&lt;br /&gt;
        var pageTitle = mw.config.get(&#039;wgPageName&#039;);&lt;br /&gt;
        var dataPage = &#039;MediaWiki:Sitelinks-Data.json&#039;;&lt;br /&gt;
        var userGroups = mw.config.get(&#039;wgUserGroups&#039;);&lt;br /&gt;
        var isAdmin = userGroups.includes(&#039;sysop&#039;) || userGroups.includes(&#039;interface-admin&#039;);&lt;br /&gt;
&lt;br /&gt;
        var projects = {&lt;br /&gt;
            &#039;id&#039;: { name: &#039;ID&#039;, url: &#039;https://id.mippedia.org/api.php&#039;, base: &#039;https://id.mippedia.org/wiki/&#039;, color: &#039;#6a5acd&#039; },&lt;br /&gt;
            &#039;en&#039;: { name: &#039;EN&#039;, url: &#039;https://en.mippedia.org/api.php&#039;, base: &#039;https://en.mippedia.org/wiki/&#039;, color: &#039;#4169e1&#039; },&lt;br /&gt;
            &#039;concise&#039;: { name: &#039;Concise&#039;, url: &#039;https://concise.mippedia.org/api.php&#039;, base: &#039;https://concise.mippedia.org/wiki/&#039;, color: &#039;#20b2aa&#039; }&lt;br /&gt;
        };&lt;br /&gt;
&lt;br /&gt;
        // --- 2. KOTAK NOTIFIKASI INFORMASI MODERN (FIXED MOBILE POSITION) ---&lt;br /&gt;
        function showBoxNotif(title, msg, type) {&lt;br /&gt;
            $(&#039;.mip-box-notif&#039;).remove();&lt;br /&gt;
            var theme = type === &#039;success&#039; ? {bg:&#039;#e6fffa&#039;, border:&#039;#38b2ac&#039;, text:&#039;#234e52&#039;, icon:&#039;&#039;} : &lt;br /&gt;
                        {bg:&#039;#fff5f5&#039;, border:&#039;#f56565&#039;, text:&#039;#742a2a&#039;, icon:&#039;&#039;};&lt;br /&gt;
            &lt;br /&gt;
            // Logika CSS Responsif untuk posisi&lt;br /&gt;
            var isMobile = window.innerWidth &amp;lt;= 768;&lt;br /&gt;
            var desktopStyle = &amp;quot;top:25px; right:25px; width:350px;&amp;quot;;&lt;br /&gt;
            var mobileStyle = &amp;quot;top:15px; left:50%; transform:translateX(-50%); width:90%; max-width:400px;&amp;quot;;&lt;br /&gt;
            var finalPos = isMobile ? mobileStyle : desktopStyle;&lt;br /&gt;
&lt;br /&gt;
            var $notif = $(&#039;&amp;lt;div class=&amp;quot;mip-box-notif&amp;quot; style=&amp;quot;position:fixed; &#039; + finalPos + &#039; background:&#039;+theme.bg+&#039;; border-left:6px solid &#039;+theme.border+&#039;; padding:18px; z-index:10001; border-radius:12px; box-shadow:0 15px 35px rgba(0,0,0,0.2); font-family:sans-serif; animation:mipSlideIn 0.4s ease-out;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                &#039;&amp;lt;div style=&amp;quot;display:flex; align-items:center; gap:12px; margin-bottom:8px;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                    &#039;&amp;lt;span style=&amp;quot;font-size:20px;&amp;quot;&amp;gt;&#039;+theme.icon+&#039;&amp;lt;/span&amp;gt;&#039; +&lt;br /&gt;
                    &#039;&amp;lt;strong style=&amp;quot;color:&#039;+theme.text+&#039;; font-size:15px; letter-spacing:-0.3px;&amp;quot;&amp;gt;&#039;+title+&#039;&amp;lt;/strong&amp;gt;&#039; +&lt;br /&gt;
                &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
                &#039;&amp;lt;p style=&amp;quot;margin:0; font-size:13px; color:&#039;+theme.text+&#039;; line-height:1.6; opacity:0.9;&amp;quot;&amp;gt;&#039;+msg+&#039;&amp;lt;/p&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;/div&amp;gt;&#039;).appendTo(&#039;body&#039;);&lt;br /&gt;
&lt;br /&gt;
            setTimeout(function() { $notif.fadeOut(function(){ $(this).remove(); }); }, 5500);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // --- 3. UI GENERATOR (DIPERTEBAL) ---&lt;br /&gt;
&lt;br /&gt;
      // A. Header Pro&lt;br /&gt;
        var headerHtml = &#039;&amp;lt;div id=&amp;quot;mip-header&amp;quot; style=&amp;quot;background:#f8f9fa; border:1px solid #ddd; border-left:6px solid #6a5acd; padding:18px; margin-bottom:25px; border-radius:6px; box-shadow:inset 0 0 10px rgba(0,0,0,0.02);&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;div style=&amp;quot;display:flex; align-items:center; gap:10px; margin-bottom:8px;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;span style=&amp;quot;background:#6a5acd; color:white; padding:3px 10px; border-radius:4px; font-size:11px; font-weight:bold; text-transform:uppercase; letter-spacing:0.5px;&amp;quot;&amp;gt;Basis Data Terstruktur&amp;lt;/span&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;strong style=&amp;quot;color:#111; font-size:16px;&amp;quot;&amp;gt;&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;p style=&amp;quot;margin:0; font-size:13px; color:#444; line-height:1.6;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
            &#039;Halaman ini adalah metadata entitas repositori pusat yang disinkronisasi secara otomatis lintas ekosistem. &#039; +&lt;br /&gt;
            &#039;Informasi di bawah ini bersifat teknis dan bebas digunakan sebagai referensi data terbuka bagi semua orang di seluruh dunia berdasarkan lisensi atribusi yang sesuai.&#039; +&lt;br /&gt;
            &#039;&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
        // B. Connector Box&lt;br /&gt;
        var editBtn = &#039;&amp;lt;span id=&amp;quot;mip-open-editor&amp;quot; style=&amp;quot;cursor:pointer; font-size:20px; color:#6a5acd; opacity:0.8; transition:0.3s;&amp;quot; onmouseover=&amp;quot;this.style.opacity=1&amp;quot; onmouseout=&amp;quot;this.style.opacity=0.8&amp;quot;&amp;gt;✎&amp;lt;/span&amp;gt;&#039;;&lt;br /&gt;
        var connectorHtml = &#039;&amp;lt;div id=&amp;quot;mip-connector&amp;quot; style=&amp;quot;background:#fff; border:1px solid #e2e8f0; border-radius:16px; padding:22px; margin-top:30px; box-shadow:0 10px 25px rgba(0,0,0,0.04);&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;div style=&amp;quot;display:flex; justify-content:space-between; align-items:center; margin-bottom:20px;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;strong style=&amp;quot;font-size:15px; color:#1a202c; display:flex; align-items:center; gap:8px;&amp;quot;&amp;gt;ID situs&amp;lt;/strong&amp;gt;&#039;+editBtn+&#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;div id=&amp;quot;mip-display&amp;quot; style=&amp;quot;display:flex; gap:12px; flex-wrap:wrap;&amp;quot;&amp;gt;&amp;lt;small style=&amp;quot;color:#a0aec0;&amp;quot;&amp;gt;Mensinkronisasi basis data...&amp;lt;/small&amp;gt;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;div id=&amp;quot;mip-editor&amp;quot; style=&amp;quot;display:none; margin-top:20px; border-top:2px solid #f7fafc; padding-top:20px;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                Object.keys(projects).map(p =&amp;gt; &#039;&amp;lt;div style=&amp;quot;margin-bottom:12px; display:flex; gap:10px;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;width:75px; font-size:11px; font-weight:bold; background:#edf2f7; display:flex; align-items:center; justify-content:center; border-radius:8px; color:#4a5568;&amp;quot;&amp;gt;&#039;+projects[p].name+&#039;&amp;lt;/span&amp;gt;&amp;lt;input type=&amp;quot;text&amp;quot; id=&amp;quot;in-&#039;+p+&#039;&amp;quot; placeholder=&amp;quot;Judul artikel di &#039;+projects[p].name+&#039;...&amp;quot; style=&amp;quot;flex:1; padding:10px; font-size:13px; border:1.5px solid #e2e8f0; border-radius:10px; outline:none; transition:0.2s;&amp;quot; onfocus=&amp;quot;this.style.borderColor=\&#039;#6a5acd\&#039;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;).join(&#039;&#039;) +&lt;br /&gt;
                &#039;&amp;lt;button id=&amp;quot;mip-save&amp;quot; style=&amp;quot;width:100%; padding:14px; background:#6a5acd; color:white; border:none; border-radius:12px; font-size:14px; font-weight:bold; cursor:pointer; box-shadow:0 4px 12px rgba(106,90,205,0.3); transition:0.3s;&amp;quot;&amp;gt;Terbitkan&amp;lt;/button&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
        // C. Footer Lisensi Lengkap&lt;br /&gt;
        var footerHtml = &#039;&amp;lt;div id=&amp;quot;mip-footer&amp;quot; style=&amp;quot;background:#fafafa; border:1px solid #eee; border-radius:10px; padding:20px; margin-top:30px; text-align:center;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;div style=&amp;quot;font-size:11px; color:#718096; font-weight:800; text-transform:uppercase; letter-spacing:1px; margin-bottom:10px;&amp;quot;&amp;gt;Lisensi, Atribusi &amp;amp; Penggunaan Data&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;p style=&amp;quot;margin:0 0 10px; font-size:13px; color:#4a5568; line-height:1.6;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
            &#039;Seluruh data terstruktur yang tersaji dalam repositori ini merupakan milik publik dan tersedia di bawah lisensi resmi &#039; +&lt;br /&gt;
            &#039;&amp;lt;a href=&amp;quot;https://creativecommons.org/licenses/by-sa/4.0/&amp;quot; target=&amp;quot;_blank&amp;quot; style=&amp;quot;color:#6a5acd; text-decoration:none; font-weight:700;&amp;quot;&amp;gt;Creative Commons Attribution-ShareAlike 4.0 International&amp;lt;/a&amp;gt;.&#039; +&lt;br /&gt;
            &#039;&amp;lt;/p&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;p style=&amp;quot;margin:0; font-size:12px; color:#a0aec0;&amp;quot;&amp;gt;Akses API dan penggunaan data secara massal wajib mencantumkan atribusi kepada &amp;lt;strong&amp;gt;Mippedia Community&amp;lt;/strong&amp;gt; selaku pengelola proyek.&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
        // Injeksi&lt;br /&gt;
        $(&#039;#mw-content-text&#039;).prepend(headerHtml);&lt;br /&gt;
        $(&#039;#mw-content-text&#039;).append(connectorHtml).append(footerHtml);&lt;br /&gt;
&lt;br /&gt;
        // --- 4. LOGIC ENGINE ---&lt;br /&gt;
        function loadLinks() {&lt;br /&gt;
            new mw.Api().get({ action: &#039;query&#039;, prop: &#039;revisions&#039;, titles: dataPage, rvprop: &#039;content&#039;, formatversion: 2 }).done(function(d) {&lt;br /&gt;
                var json = d.query.pages[0].revisions ? JSON.parse(d.query.pages[0].revisions[0].content) : {};&lt;br /&gt;
                var data = json[pageTitle] || {};&lt;br /&gt;
                var $box = $(&#039;#mip-display&#039;).empty();&lt;br /&gt;
                var found = false;&lt;br /&gt;
                Object.keys(projects).forEach(p =&amp;gt; {&lt;br /&gt;
                    if (data[p]) {&lt;br /&gt;
                        found = true;&lt;br /&gt;
                        $box.append(&#039;&amp;lt;a style=&amp;quot;background:&#039;+projects[p].color+&#039;; color:white; padding:8px 16px; border-radius:10px; font-size:12px; font-weight:bold; text-decoration:none; border-bottom:3px solid rgba(0,0,0,0.15);&amp;quot; href=&amp;quot;&#039;+projects[p].base+encodeURIComponent(data[p])+&#039;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Mippedia &#039;+projects[p].name+&#039;: &#039;+data[p]+&#039;&amp;lt;/a&amp;gt;&#039;);&lt;br /&gt;
                        $(&#039;#in-&#039; + p).val(data[p]);&lt;br /&gt;
                    }&lt;br /&gt;
                });&lt;br /&gt;
                if (!found) $box.html(&#039;&amp;lt;em style=&amp;quot;color:#cbd5e0; font-size:13px;&amp;quot;&amp;gt;Entitas ini belum terhubung ke cabang Mippedia manapun.&amp;lt;/em&amp;gt;&#039;);&lt;br /&gt;
            });&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        $(document).on(&#039;click&#039;, &#039;#mip-save&#039;, function() {&lt;br /&gt;
            // CEK IZIN: Tolak user biasa&lt;br /&gt;
            if (!isAdmin) {&lt;br /&gt;
                showBoxNotif(&#039;Suntingan anda tidak di terbitkan&#039;, &#039;Halaman ini dilindungi. Hanya &amp;lt;b&amp;gt;Pengurus&amp;lt;/b&amp;gt; yang memiliki otoritas untuk memodifikasi metadata ekosistem secara langsung.&#039;, &#039;error&#039;);&lt;br /&gt;
                return;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            var $btn = $(this).text(&#039;Sedang Memvalidasi...&#039;).prop(&#039;disabled&#039;, true);&lt;br /&gt;
            var api = new mw.Api();&lt;br /&gt;
            var newData = {}, promises = [], invalid = [], isDel = true;&lt;br /&gt;
&lt;br /&gt;
            Object.keys(projects).forEach(p =&amp;gt; {&lt;br /&gt;
                var v = $(&#039;#in-&#039; + p).val().trim();&lt;br /&gt;
                if (v) {&lt;br /&gt;
                    isDel = false;&lt;br /&gt;
                    promises.push($.ajax({ url: projects[p].url, data: { action: &#039;query&#039;, titles: v, format: &#039;json&#039;, origin: &#039;*&#039; }, dataType: &#039;json&#039; }).done(function(res){&lt;br /&gt;
                        if (res.query.pages[&amp;quot;-1&amp;quot;]) invalid.push(projects[p].name); else newData[p] = v;&lt;br /&gt;
                    }));&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
&lt;br /&gt;
            $.when.apply($, promises).then(function() {&lt;br /&gt;
                if (invalid.length &amp;gt; 0) {&lt;br /&gt;
                    showBoxNotif(&#039;Suntingan anda tidak di terbitkan&#039;, &#039;Artikel dengan judul tersebut tidak ditemukan di basis data Mippedia cabang: &#039; + invalid.join(&#039;, &#039;) + &#039;. Periksa kembali ejaan dan kapitalisasi.&#039;, &#039;error&#039;);&lt;br /&gt;
                    $btn.text(&#039;Terbitkan&#039;).prop(&#039;disabled&#039;, false); return;&lt;br /&gt;
                }&lt;br /&gt;
                &lt;br /&gt;
                api.get({ action: &#039;query&#039;, prop: &#039;revisions&#039;, titles: dataPage, rvprop: &#039;content&#039;, formatversion: 2 }).done(function(r) {&lt;br /&gt;
                    var full = r.query.pages[0].revisions ? JSON.parse(r.query.pages[0].revisions[0].content) : {};&lt;br /&gt;
                    if (isDel) delete full[pageTitle]; else full[pageTitle] = newData;&lt;br /&gt;
                    &lt;br /&gt;
                    api.postWithEditToken({ action: &#039;edit&#039;, title: dataPage, text: JSON.stringify(full, null, 2), summary: &#039;Sync Metadata: &#039; + pageTitle })&lt;br /&gt;
                    .done(function() {&lt;br /&gt;
                        showBoxNotif(&#039;Suntingan anda berhasil di terbitkan!&#039;, &#039;Metadata entitas berhasil disinkronisasi ke seluruh jaringan ekosistem Mippedia.&#039;, &#039;success&#039;);&lt;br /&gt;
                        setTimeout(function(){ location.reload(); }, 1500);&lt;br /&gt;
                    }).fail(function(c) {&lt;br /&gt;
                        showBoxNotif(&#039;Gagal Menyimpan&#039;, &#039;Terjadi kesalahan pada token API atau koneksi server. Kode: &#039; + c, &#039;error&#039;);&lt;br /&gt;
                        $btn.text(&#039;Simpan &amp;amp; Sinkronkan Data&#039;).prop(&#039;disabled&#039;, false);&lt;br /&gt;
                    });&lt;br /&gt;
                });&lt;br /&gt;
            });&lt;br /&gt;
        });&lt;br /&gt;
&lt;br /&gt;
        $(document).on(&#039;click&#039;, &#039;#mip-open-editor&#039;, function() { $(&#039;#mip-editor&#039;).slideToggle(); });&lt;br /&gt;
        loadLinks();&lt;br /&gt;
    });&lt;br /&gt;
})();&lt;br /&gt;
&lt;br /&gt;
(function() {&lt;br /&gt;
    // Fungsi utama suntik teks&lt;br /&gt;
    function forcePreload() {&lt;br /&gt;
        var ns = mw.config.get(&#039;wgNamespaceNumber&#039;);&lt;br /&gt;
        var pageExists = mw.config.get(&#039;wgArticleId&#039;) &amp;gt; 0;&lt;br /&gt;
        &lt;br /&gt;
        // Cek Namespace Utama &amp;amp; Halaman Baru&lt;br /&gt;
        if (ns === 0 &amp;amp;&amp;amp; !pageExists) {&lt;br /&gt;
            // Cari textarea secara spesifik (Desktop &amp;amp; Mobile punya selector beda)&lt;br /&gt;
            var $textbox = $(&#039;#wpTextbox1, textarea.mw-ui-input, .editor-container textarea&#039;);&lt;br /&gt;
            &lt;br /&gt;
            if ($textbox.length &amp;amp;&amp;amp; $textbox.val().trim() === &amp;quot;&amp;quot;) {&lt;br /&gt;
                var pageName = mw.config.get(&#039;wgTitle&#039;);&lt;br /&gt;
                $textbox.val(&#039;{{Infobox umum\n|nama = &#039; + pageName + &#039;\n}}&#039;);&lt;br /&gt;
                console.log(&amp;quot;Mippedia: Infobox injected!&amp;quot;);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // 1. Jalankan pas halaman beres load&lt;br /&gt;
    $(document).ready(forcePreload);&lt;br /&gt;
&lt;br /&gt;
    // 2. Jalankan tiap ada klik (karena mobile buka editor pake klik tanpa refresh)&lt;br /&gt;
    $(document).on(&#039;click&#039;, function() {&lt;br /&gt;
        setTimeout(forcePreload, 800); // Kasih delay dikit nunggu overlay muncul&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    // 3. Pake MutationObserver buat mantau elemen yang baru muncul secara gaib&lt;br /&gt;
    var observer = new MutationObserver(function() {&lt;br /&gt;
        forcePreload();&lt;br /&gt;
    });&lt;br /&gt;
    observer.observe(document.body, { childList: true, subtree: true });&lt;br /&gt;
})();&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================&lt;br /&gt;
   🚀 MIPPEDIA DATA - CONTENT GUARD (MODIFIED FOR RELATED)&lt;br /&gt;
   ========================================================== */&lt;br /&gt;
(function() {&lt;br /&gt;
    function handleBlock(e) {&lt;br /&gt;
        var ns = mw.config.get(&#039;wgNamespaceNumber&#039;);&lt;br /&gt;
        if (ns !== 0 || mw.config.get(&#039;wgIsMainPage&#039;)) return;&lt;br /&gt;
&lt;br /&gt;
        var $el = $(e.currentTarget);&lt;br /&gt;
        &lt;br /&gt;
        if ($el.closest(&#039;.mw-parser-output&#039;).length &amp;amp;&amp;amp; $el.text().toLowerCase().includes(&#039;buat item&#039;)) {&lt;br /&gt;
            return; &lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        var $textbox = $(&#039;#wpTextbox1, .editor-container textarea, textarea.mw-ui-input&#039;);&lt;br /&gt;
        &lt;br /&gt;
        if ($textbox.length) {&lt;br /&gt;
            var content = $textbox.val() || &amp;quot;&amp;quot;;&lt;br /&gt;
            &lt;br /&gt;
            // Pengecekan: Harus ada {{Infobox ATAU setidaknya ada kode #related&lt;br /&gt;
            var hasInfobox = content.includes(&#039;{{Infobox&#039;);&lt;br /&gt;
            var hasRelated = content.includes(&#039;#related:&#039;);&lt;br /&gt;
&lt;br /&gt;
            if (!hasInfobox &amp;amp;&amp;amp; !hasRelated) {&lt;br /&gt;
                e.preventDefault();&lt;br /&gt;
                e.stopPropagation();&lt;br /&gt;
                e.stopImmediatePropagation();&lt;br /&gt;
&lt;br /&gt;
                window.alert(&amp;quot;SUNTINGAN ANDA TIDAK BISA DI TERBITKAN!\n\nMippedia Data bukan tempat untuk menulis artikel ensiklopedia, Jika anda ingin membuat artikel ensiklopedia bukan di sini tempat nya.\n&amp;quot;);&lt;br /&gt;
                return false;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    $(document).on(&#039;click mousedown touchstart&#039;, &lt;br /&gt;
        &#039;#wpSave, .editor-save, .mw-ui-button.primary, button[type=&amp;quot;submit&amp;quot;], .save-button, .header-action button&#039;, &lt;br /&gt;
        function(e) {&lt;br /&gt;
            handleBlock(e);&lt;br /&gt;
        }&lt;br /&gt;
    );&lt;br /&gt;
&lt;br /&gt;
    window.addEventListener(&#039;submit&#039;, function(e) {&lt;br /&gt;
        handleBlock(e);&lt;br /&gt;
    }, true);&lt;br /&gt;
})();&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================&lt;br /&gt;
   🛡️ MIPPEDIA CORE SYSTEM - NEURAL ENGINE V12&lt;br /&gt;
   Update: Brain Upgrade - Semantic Search &amp;amp; Anti-Duplicate&lt;br /&gt;
   Semua fitur asli (Patroli, Promo, Kategori) tetap UTUH.&lt;br /&gt;
   ========================================================== */&lt;br /&gt;
mw.hook(&#039;postEdit&#039;).add(function() {&lt;br /&gt;
    var rawUser = mw.config.get(&#039;wgUserName&#039;);&lt;br /&gt;
    var userName = rawUser ? rawUser.replace(/_/g, &#039; &#039;) : &#039;Anonim&#039;;&lt;br /&gt;
    var isPatroli = (userName === &#039;Admin&#039;);&lt;br /&gt;
    &lt;br /&gt;
    if (mw.config.get(&#039;wgNamespaceNumber&#039;) !== 0) return;&lt;br /&gt;
&lt;br /&gt;
    var api = new mw.Api();&lt;br /&gt;
    var pageTitle = mw.config.get(&#039;wgPageName&#039;).replace(/_/g, &#039; &#039;);&lt;br /&gt;
&lt;br /&gt;
    api.get({&lt;br /&gt;
        action: &#039;query&#039;,&lt;br /&gt;
        titles: pageTitle,&lt;br /&gt;
        prop: &#039;revisions|categories|links&#039;,&lt;br /&gt;
        rvprop: &#039;content&#039;,&lt;br /&gt;
        clshow: &#039;!hidden&#039;,&lt;br /&gt;
        pllimit: &#039;max&#039;&lt;br /&gt;
    }).done(function(resData) {&lt;br /&gt;
        var page = resData.query.pages[Object.keys(resData.query.pages)[0]];&lt;br /&gt;
        if (!page || !page.revisions) return;&lt;br /&gt;
&lt;br /&gt;
        var rawContent = page.revisions[0][&#039;*&#039;];&lt;br /&gt;
        var content = rawContent;&lt;br /&gt;
        var summaryParts = [];&lt;br /&gt;
&lt;br /&gt;
        // --- 2. SUPER INTELLIGENCE RELATED (UPGRADE OTAK V12) ---&lt;br /&gt;
        // Cek jumlah related saat ini&lt;br /&gt;
        var currentRelatedMatch = content.match(/\{\{#related:.*?\}\}/g) || [];&lt;br /&gt;
        &lt;br /&gt;
        // Jika kurang dari 3, kita jalankan otak pencarian canggih&lt;br /&gt;
        if (currentRelatedMatch.length &amp;lt; 3) {&lt;br /&gt;
            // Hapus yang lama dulu agar tidak ada duplikat atau &amp;quot;pake yang bekas&amp;quot;&lt;br /&gt;
            content = content.replace(/\n*\{\{#related:.*?\}\}/g, &#039;&#039;);&lt;br /&gt;
&lt;br /&gt;
            // Langkah A: Ambil kandidat dari Search Engine (Ranking Skor)&lt;br /&gt;
            api.get({&lt;br /&gt;
                action: &#039;query&#039;,&lt;br /&gt;
                list: &#039;search&#039;,&lt;br /&gt;
                srsearch: pageTitle, // Gunakan judul sebagai basis pencarian semantic&lt;br /&gt;
                srlimit: 15,&lt;br /&gt;
                srprop: &#039;&#039;&lt;br /&gt;
            }).done(function(searchRes) {&lt;br /&gt;
                var candidates = {};&lt;br /&gt;
&lt;br /&gt;
                // Masukkan hasil pencarian ke pool skor&lt;br /&gt;
                if (searchRes.query &amp;amp;&amp;amp; searchRes.query.search) {&lt;br /&gt;
                    searchRes.query.search.forEach(function(item, index) {&lt;br /&gt;
                        if (item.title === pageTitle) return;&lt;br /&gt;
                        candidates[item.title] = (15 - index); // Skor berdasarkan urutan relevansi&lt;br /&gt;
                    });&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                // Langkah B: Tambah skor jika artikel ada di daftar Link Internal&lt;br /&gt;
                if (page.links) {&lt;br /&gt;
                    page.links.forEach(function(link) {&lt;br /&gt;
                        if (link.title === pageTitle) return;&lt;br /&gt;
                        candidates[link.title] = (candidates[link.title] || 0) + 5; // Bonus skor link&lt;br /&gt;
                    });&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                // Langkah C: Urutkan berdasarkan skor tertinggi (yang paling nyambung)&lt;br /&gt;
                var sortedTitles = Object.keys(candidates).sort(function(a, b) {&lt;br /&gt;
                    return candidates[b] - candidates[a];&lt;br /&gt;
                });&lt;br /&gt;
&lt;br /&gt;
                // Ambil TOP 3&lt;br /&gt;
                var finalRelated = sortedTitles.filter(t =&amp;gt; t.indexOf(&#039;:&#039;) === -1).slice(0, 3);&lt;br /&gt;
&lt;br /&gt;
                if (finalRelated.length &amp;gt; 0) {&lt;br /&gt;
                    var relatedTags = &#039;\n\n&#039; + finalRelated.map(t =&amp;gt; &#039;{{#related: &#039; + t + &#039;}}&#039;).join(&#039;\n&#039;);&lt;br /&gt;
                    content += relatedTags;&lt;br /&gt;
                    summaryParts.push(&#039;NeuralRelated&#039;);&lt;br /&gt;
                }&lt;br /&gt;
                &lt;br /&gt;
                runPatroliAndSave();&lt;br /&gt;
            });&lt;br /&gt;
        } else {&lt;br /&gt;
            runPatroliAndSave();&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        function runPatroliAndSave() {&lt;br /&gt;
            // --- 3. PATROLI ENGINE (FITUR ASLI - TETAP BERFUNGSI) ---&lt;br /&gt;
            if (isPatroli) {&lt;br /&gt;
                var placeholders = [];&lt;br /&gt;
                // Lindungi Brankas: Template, Header, Kategori, Ref, dan Kalimat Pembuka&lt;br /&gt;
                content = content.replace(/(\{\{[\s\S]*?\}\}|==+.*?==+|\[\[Kategori:.*?\]\]|&amp;lt;ref[\s\S]*?&amp;lt;\/ref&amp;gt;|^.*?adalah)/gi, function(match) {&lt;br /&gt;
                    placeholders.push(match);&lt;br /&gt;
                    return &#039;___MIP_SKIP_&#039; + (placeholders.length - 1) + &#039;___&#039;;&lt;br /&gt;
                });&lt;br /&gt;
&lt;br /&gt;
                // Proses Auto-Link (Wajib ambil daftar AllPages dulu)&lt;br /&gt;
                api.get({ action: &#039;query&#039;, list: &#039;allpages&#039;, apnamespace: 0, aplimit: &#039;max&#039; }).done(function(apData) {&lt;br /&gt;
                    var allTitles = apData.query.allpages.map(p =&amp;gt; p.title);&lt;br /&gt;
                    var lowerTitles = allTitles.map(t =&amp;gt; t.toLowerCase());&lt;br /&gt;
&lt;br /&gt;
                    var tokens = content.split(/(\s+|\[\[|\]\])/);&lt;br /&gt;
                    var inLink = false;&lt;br /&gt;
                    for (var i = 0; i &amp;lt; tokens.length; i++) {&lt;br /&gt;
                        if (tokens[i] === &#039;[[&#039; ) { inLink = true; continue; }&lt;br /&gt;
                        if (tokens[i] === &#039;]]&#039; ) { inLink = false; continue; }&lt;br /&gt;
                        if (inLink || tokens[i].trim().length &amp;lt; 3 || tokens[i].includes(&#039;___MIP_SKIP_&#039;)) continue;&lt;br /&gt;
&lt;br /&gt;
                        var wordsInToken = tokens[i].match(/\b\w+\b/g);&lt;br /&gt;
                        if (wordsInToken) {&lt;br /&gt;
                            wordsInToken.forEach(function(word) {&lt;br /&gt;
                                var idx = lowerTitles.indexOf(word.toLowerCase());&lt;br /&gt;
                                if (idx !== -1 &amp;amp;&amp;amp; allTitles[idx] !== pageTitle) {&lt;br /&gt;
                                    tokens[i] = tokens[i].replace(new RegExp(&#039;\\b&#039; + word + &#039;\\b&#039;, &#039;g&#039;), &#039;[[&#039; + allTitles[idx] + &#039;|&#039; + word + &#039;]]&#039;);&lt;br /&gt;
                                }&lt;br /&gt;
                            });&lt;br /&gt;
                        }&lt;br /&gt;
                    }&lt;br /&gt;
                    content = tokens.join(&#039;&#039;);&lt;br /&gt;
                    &lt;br /&gt;
                    // Kembalikan dari Brankas&lt;br /&gt;
                    content = content.replace(/___MIP_SKIP_(\d+)___/g, function(match, id) { return placeholders[id]; });&lt;br /&gt;
&lt;br /&gt;
                    // Bersihkan Link Merah&lt;br /&gt;
                    content = content.replace(/\[\[([^|\]:]+)\]\]/g, function(match, p1) {&lt;br /&gt;
                        return lowerTitles.includes(p1.toLowerCase()) ? match : p1;&lt;br /&gt;
                    });&lt;br /&gt;
&lt;br /&gt;
                    saveAction();&lt;br /&gt;
                });&lt;br /&gt;
            } else {&lt;br /&gt;
                saveAction();&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        function saveAction() {&lt;br /&gt;
            // --- 4. EKSEKUSI ---&lt;br /&gt;
            if (content.trim() !== rawContent.trim()) {&lt;br /&gt;
                api.postWithToken(&#039;edit&#039;, {&lt;br /&gt;
                    action: &#039;edit&#039;,&lt;br /&gt;
                    title: pageTitle,&lt;br /&gt;
                    text: content,&lt;br /&gt;
                    summary: &#039;Mippedia Neural Engine V12: &#039; + summaryParts.join(&#039;, &#039;),&lt;br /&gt;
                    bot: true, markasbot: true&lt;br /&gt;
                }).done(function() { location.reload(); });&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    });&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================&lt;br /&gt;
   🌐 MIPPEDIA SHORTDESC - DATA CENTER (PREMIUM UI)&lt;br /&gt;
   Status: INDEPENDENT &amp;amp; REFINED VISUAL&lt;br /&gt;
   Storage: MediaWiki:ShortDesc-Data.json&lt;br /&gt;
   ========================================================== */&lt;br /&gt;
(function($, mw) {&lt;br /&gt;
    &amp;quot;use strict&amp;quot;;&lt;br /&gt;
    $(document).ready(function() {&lt;br /&gt;
        if (mw.config.get(&#039;wgNamespaceNumber&#039;) !== 0 || mw.config.get(&#039;wgIsMainPage&#039;)) return;&lt;br /&gt;
&lt;br /&gt;
        var pageTitle = mw.config.get(&#039;wgPageName&#039;);&lt;br /&gt;
        var storagePage = &#039;MediaWiki:ShortDesc-Data.json&#039;;&lt;br /&gt;
        var isAdmin = mw.config.get(&#039;wgUserGroups&#039;).some(g =&amp;gt; [&#039;sysop&#039;, &#039;interface-admin&#039;].includes(g));&lt;br /&gt;
&lt;br /&gt;
        var langs = {&lt;br /&gt;
            id: { label: &#039;Mippedia bahasa Indonesia&#039;, short: &#039;ID&#039;, color: &#039;#6366f1&#039; },&lt;br /&gt;
            en: { label: &#039;Mippedia bahasa Inggris&#039;, short: &#039;EN&#039;, color: &#039;#3b82f6&#039; },&lt;br /&gt;
            concise: { label: &#039;Mippedia bahasa Indonesia ringkas&#039;, short: &#039;CON&#039;, color: &#039;#14b8a6&#039; }&lt;br /&gt;
        };&lt;br /&gt;
&lt;br /&gt;
        // UI Box dengan Spasi dan Desain Baru&lt;br /&gt;
        var html = `&lt;br /&gt;
            &amp;lt;div id=&amp;quot;desc-manager&amp;quot; style=&amp;quot;background:#ffffff; border:1px solid #f1f5f9; border-left:4px solid #6366f1; border-radius:12px; padding:20px; margin: 20px 0 25px 0; box-shadow:0 4px 12px rgba(0,0,0,0.03); font-family: -apple-system,BlinkMacSystemFont,&#039;Segoe UI&#039;,Roboto,sans-serif;&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;div style=&amp;quot;display:flex; justify-content:space-between; align-items:center; margin-bottom:12px;&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;span style=&amp;quot;font-size:13px; font-weight:700; color:#475569; text-transform:uppercase; letter-spacing:0.5px; display:flex; align-items:center; gap:6px;&amp;quot;&amp;gt;&lt;br /&gt;
                        Label Deskripsi&lt;br /&gt;
                    &amp;lt;/span&amp;gt;&lt;br /&gt;
                    &amp;lt;span id=&amp;quot;desc-open-editor&amp;quot; style=&amp;quot;cursor:pointer; padding:5px; transition:0.2s;&amp;quot; title=&amp;quot;Edit Deskripsi&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;svg width=&amp;quot;16&amp;quot; height=&amp;quot;16&amp;quot; viewBox=&amp;quot;0 0 24 24&amp;quot; fill=&amp;quot;none&amp;quot; stroke=&amp;quot;#94a3b8&amp;quot; stroke-width=&amp;quot;2&amp;quot; stroke-linecap=&amp;quot;round&amp;quot; stroke-linejoin=&amp;quot;round&amp;quot;&amp;gt;&amp;lt;path d=&amp;quot;M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7&amp;quot;&amp;gt;&amp;lt;/path&amp;gt;&amp;lt;path d=&amp;quot;M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z&amp;quot;&amp;gt;&amp;lt;/path&amp;gt;&amp;lt;/svg&amp;gt;&lt;br /&gt;
                    &amp;lt;/span&amp;gt;&lt;br /&gt;
                &amp;lt;/div&amp;gt;&lt;br /&gt;
                &lt;br /&gt;
                &amp;lt;div id=&amp;quot;desc-status-display&amp;quot; style=&amp;quot;display:flex; flex-direction:column; gap:8px;&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;small style=&amp;quot;color:#94a3b8; font-style:italic;&amp;quot;&amp;gt;Sinkronisasi data...&amp;lt;/small&amp;gt;&lt;br /&gt;
                &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;div id=&amp;quot;desc-editor&amp;quot; style=&amp;quot;display:none; margin-top:18px; border-top:1px dashed #e2e8f0; padding-top:18px;&amp;quot;&amp;gt;&lt;br /&gt;
                    ${Object.keys(langs).map(k =&amp;gt; `&lt;br /&gt;
                        &amp;lt;div style=&amp;quot;margin-bottom:12px;&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;label style=&amp;quot;display:block; font-size:11px; font-weight:bold; color:#64748b; margin-bottom:4px;&amp;quot;&amp;gt;${langs[k].label}&amp;lt;/label&amp;gt;&lt;br /&gt;
                            &amp;lt;input type=&amp;quot;text&amp;quot; id=&amp;quot;desc-in-${k}&amp;quot; placeholder=&amp;quot;Tulis deskripsi...&amp;quot; style=&amp;quot;width:100%; padding:10px; font-size:13px; border:1px solid #e2e8f0; border-radius:8px; box-sizing:border-box; outline:none; focus:border-color:#6366f1;&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;/div&amp;gt;&lt;br /&gt;
                    `).join(&#039;&#039;)}&lt;br /&gt;
                    &amp;lt;button id=&amp;quot;desc-save&amp;quot; style=&amp;quot;width:100%; padding:12px; background:#6366f1; color:white; border:none; border-radius:8px; font-size:13px; font-weight:600; cursor:pointer; margin-top:5px;&amp;quot;&amp;gt;Terbitkan&amp;lt;/button&amp;gt;&lt;br /&gt;
                &amp;lt;/div&amp;gt;&lt;br /&gt;
            &amp;lt;/div&amp;gt;`;&lt;br /&gt;
&lt;br /&gt;
        $(&#039;.mw-parser-output&#039;).prepend(html);&lt;br /&gt;
&lt;br /&gt;
        function loadDescStatus() {&lt;br /&gt;
            new mw.Api().get({ action: &#039;query&#039;, prop: &#039;revisions&#039;, titles: storagePage, rvprop: &#039;content&#039;, formatversion: 2 }).done(function(res) {&lt;br /&gt;
                var content = res.query.pages[0].revisions ? res.query.pages[0].revisions[0].content : &amp;quot;{}&amp;quot;;&lt;br /&gt;
                var fullData = JSON.parse(content);&lt;br /&gt;
                var myData = fullData[pageTitle] || {};&lt;br /&gt;
                var $statusBox = $(&#039;#desc-status-display&#039;).empty();&lt;br /&gt;
                var foundAny = false;&lt;br /&gt;
&lt;br /&gt;
                Object.keys(langs).forEach(k =&amp;gt; {&lt;br /&gt;
                    var val = myData[k];&lt;br /&gt;
                    if (val &amp;amp;&amp;amp; val.trim() !== &amp;quot;&amp;quot;) {&lt;br /&gt;
                        foundAny = true;&lt;br /&gt;
                        $statusBox.append(`&lt;br /&gt;
                            &amp;lt;div style=&amp;quot;display:flex; align-items:center; gap:10px;&amp;quot;&amp;gt;&lt;br /&gt;
                                &amp;lt;span style=&amp;quot;background:${langs[k].color}15; color:${langs[k].color}; padding:3px 10px; border-radius:20px; font-size:10px; font-weight:800; border:1px solid ${langs[k].color}30; min-width:35px; text-align:center;&amp;quot;&amp;gt;${langs[k].short}&amp;lt;/span&amp;gt;&lt;br /&gt;
                                &amp;lt;span style=&amp;quot;font-size:13px; color:#334155; line-height:1.4;&amp;quot;&amp;gt;${val}&amp;lt;/span&amp;gt;&lt;br /&gt;
                            &amp;lt;/div&amp;gt;&lt;br /&gt;
                        `);&lt;br /&gt;
                        $(&#039;#desc-in-&#039; + k).val(val);&lt;br /&gt;
                    }&lt;br /&gt;
                });&lt;br /&gt;
&lt;br /&gt;
                if (!foundAny) {&lt;br /&gt;
                    $statusBox.html(&#039;&amp;lt;div style=&amp;quot;color:#cbd5e0; font-size:13px; background:#f8fafc; padding:10px; border-radius:8px; border:1px dashed #e2e8f0;&amp;quot;&amp;gt;Belum ada metadata deskripsi yang dikaitkan dengan entitas ini.&amp;lt;/div&amp;gt;&#039;);&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        $(document).on(&#039;click&#039;, &#039;#desc-open-editor&#039;, function() { $(&#039;#desc-editor&#039;).slideToggle(); });&lt;br /&gt;
&lt;br /&gt;
        $(document).on(&#039;click&#039;, &#039;#desc-save&#039;, function() {&lt;br /&gt;
            if (!isAdmin) { alert(&#039;Akses ditolak. Anda memerlukan izin pengurus.&#039;); return; }&lt;br /&gt;
            var $btn = $(this).text(&#039;Proses Sinkronisasi...&#039;).css(&#039;opacity&#039;,&#039;0.7&#039;);&lt;br /&gt;
            var api = new mw.Api();&lt;br /&gt;
            var newData = { id: $(&#039;#desc-in-id&#039;).val().trim(), en: $(&#039;#desc-in-en&#039;).val().trim(), concise: $(&#039;#desc-in-concise&#039;).val().trim() };&lt;br /&gt;
&lt;br /&gt;
            api.get({ action: &#039;query&#039;, prop: &#039;revisions&#039;, titles: storagePage, rvprop: &#039;content&#039;, formatversion: 2 }).done(function(r) {&lt;br /&gt;
                var json = r.query.pages[0].revisions ? JSON.parse(r.query.pages[0].revisions[0].content) : {};&lt;br /&gt;
                if (!newData.id &amp;amp;&amp;amp; !newData.en &amp;amp;&amp;amp; !newData.concise) { delete json[pageTitle]; } else { json[pageTitle] = newData; }&lt;br /&gt;
&lt;br /&gt;
                api.postWithEditToken({&lt;br /&gt;
                    action: &#039;edit&#039;,&lt;br /&gt;
                    title: storagePage,&lt;br /&gt;
                    text: JSON.stringify(json, null, 2),&lt;br /&gt;
                    summary: &#039;Update Entity Description: &#039; + pageTitle&lt;br /&gt;
                }).done(function() { location.reload(); });&lt;br /&gt;
            });&lt;br /&gt;
        });&lt;br /&gt;
&lt;br /&gt;
        loadDescStatus();&lt;br /&gt;
    });&lt;br /&gt;
})(jQuery, mediaWiki);&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================&lt;br /&gt;
   📍 MIPPEDIA DATA - ULTIMATE TEXT-TO-MAP LOCATOR&lt;br /&gt;
   Fitur: Deteksi lokasi dari teks dengan database label lengkap&lt;br /&gt;
   ========================================================== */&lt;br /&gt;
(function() {&lt;br /&gt;
    $(document).ready(function() {&lt;br /&gt;
        var locationText = &amp;quot;&amp;quot;;&lt;br /&gt;
        &lt;br /&gt;
        // --- DAFTAR LABEL SUPER LENGKAP &amp;amp; MASUK AKAL ---&lt;br /&gt;
        var locationLabels = [&lt;br /&gt;
            // Umum &amp;amp; Geografis&lt;br /&gt;
            &#039;lokasi&#039;, &#039;tempat&#039;, &#039;wilayah&#039;, &#039;daerah&#039;, &#039;koordinat&#039;, &#039;alamat&#039;,&lt;br /&gt;
            // Orang (Biografi)&lt;br /&gt;
            &#039;tempat lahir&#039;, &#039;asal&#039;, &#039;kediaman&#039;, &#039;domisili&#039;, &#039;negara asal&#039;,&lt;br /&gt;
            // Organisasi &amp;amp; Perusahaan&lt;br /&gt;
            &#039;kantor pusat&#039;, &#039;markas&#039;, &#039;cabang utama&#039;, &#039;titik operasi&#039;,&lt;br /&gt;
            // Makanan &amp;amp; Budaya&lt;br /&gt;
            &#039;asal wilayah&#039;, &#039;daerah asal&#039;, &#039;negara sumber&#039;, &#039;kawasan&#039;,&lt;br /&gt;
            // Sejarah &amp;amp; Bangunan&lt;br /&gt;
            &#039;letak&#039;, &#039;posisi&#039;, &#039;titik temu&#039;, &#039;orbit&#039;&lt;br /&gt;
        ];&lt;br /&gt;
&lt;br /&gt;
        // Jalankan pencarian di tabel data (infobox atau wikitable)&lt;br /&gt;
        $(&#039;.wikitable tr, .infobox tr, .mip-data-table tr&#039;).each(function() {&lt;br /&gt;
            var label = $(this).find(&#039;th&#039;).text().toLowerCase().trim();&lt;br /&gt;
            // Hilangkan karakter spesial kayak titik dua biar matching-nya akurat&lt;br /&gt;
            label = label.replace(/[:]/g, &#039;&#039;);&lt;br /&gt;
&lt;br /&gt;
            var isMatch = locationLabels.some(function(target) {&lt;br /&gt;
                return label === target || label.includes(target);&lt;br /&gt;
            });&lt;br /&gt;
&lt;br /&gt;
            if (isMatch) {&lt;br /&gt;
                var rawValue = $(this).find(&#039;td&#039;).text().trim();&lt;br /&gt;
                // Ambil bagian utama sebelum tanda koma, kurung, atau titik koma&lt;br /&gt;
                // Misal: &amp;quot;Bandung, Jawa Barat&amp;quot; -&amp;gt; ambil &amp;quot;Bandung&amp;quot;&lt;br /&gt;
                locationText = rawValue.split(/[,(\[;]/)[0].trim(); &lt;br /&gt;
                &lt;br /&gt;
                if (locationText.length &amp;gt; 2) return false; // Stop jika sudah ketemu yang valid&lt;br /&gt;
            }&lt;br /&gt;
        });&lt;br /&gt;
&lt;br /&gt;
        // Eksekusi Render Peta&lt;br /&gt;
        if (locationText &amp;amp;&amp;amp; locationText.length &amp;gt; 2) {&lt;br /&gt;
            var $mapWrapper = $(&#039;&amp;lt;div&amp;gt;&#039;).css({&lt;br /&gt;
                &#039;margin&#039;: &#039;15px 0&#039;,&lt;br /&gt;
                &#039;padding&#039;: &#039;12px&#039;,&lt;br /&gt;
                &#039;border&#039;: &#039;1px solid #ddd&#039;,&lt;br /&gt;
                &#039;background&#039;: &#039;#ffffff&#039;,&lt;br /&gt;
                &#039;border-radius&#039;: &#039;10px&#039;,&lt;br /&gt;
                &#039;box-shadow&#039;: &#039;0 4px 12px rgba(0,0,0,0.08)&#039;&lt;br /&gt;
            });&lt;br /&gt;
&lt;br /&gt;
            $mapWrapper.append(&#039;&amp;lt;div style=&amp;quot;font-weight:bold; font-size:0.9em; margin-bottom:10px; color:#444; display:flex; align-items:center;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                               &#039;&amp;lt;span style=&amp;quot;margin-right:8px;&amp;quot;&amp;gt;🗺️&amp;lt;/span&amp;gt;Pratinjau Lokasi : &#039; + locationText + &#039;&amp;lt;/div&amp;gt;&#039;);&lt;br /&gt;
&lt;br /&gt;
            // Embed URL dengan pencarian teks (Nominatim)&lt;br /&gt;
            var embedUrl = &amp;quot;https://www.openstreetmap.org/export/embed.html?layer=mapnik&amp;amp;q=&amp;quot; + encodeURIComponent(locationText);&lt;br /&gt;
&lt;br /&gt;
            var $iframe = $(&#039;&amp;lt;iframe&amp;gt;&#039;).attr({&lt;br /&gt;
                &#039;src&#039;: embedUrl,&lt;br /&gt;
                &#039;width&#039;: &#039;100%&#039;,&lt;br /&gt;
                &#039;height&#039;: &#039;280&#039;,&lt;br /&gt;
                &#039;frameborder&#039;: &#039;0&#039;,&lt;br /&gt;
                &#039;style&#039;: &#039;border-radius: 8px; border: 1px solid #eee;&#039;&lt;br /&gt;
            });&lt;br /&gt;
&lt;br /&gt;
            $mapWrapper.append($iframe);&lt;br /&gt;
            &lt;br /&gt;
            // Link eksternal yang lebih rapi&lt;br /&gt;
            var gMapsUrl = &amp;quot;https://www.google.com/maps/search/&amp;quot; + encodeURIComponent(locationText);&lt;br /&gt;
            $mapWrapper.append(&#039;&amp;lt;div style=&amp;quot;text-align:right; margin-top:8px;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                               &#039;&amp;lt;a href=&amp;quot;&#039; + gMapsUrl + &#039;&amp;quot; target=&amp;quot;_blank&amp;quot; style=&amp;quot;font-size:0.75em; color:#6a5acd; font-weight:bold; text-decoration:none; text-transform:uppercase; letter-spacing:0.5px;&amp;quot;&amp;gt;Buka di Google Maps →&amp;lt;/a&amp;gt;&amp;lt;/div&amp;gt;&#039;);&lt;br /&gt;
&lt;br /&gt;
            // Masukkan ke bawah section deskripsi otomatis&lt;br /&gt;
            if ($(&#039;#mip-desc-section&#039;).length) {&lt;br /&gt;
                $(&#039;#mip-desc-section&#039;).after($mapWrapper);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    });&lt;br /&gt;
})();&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://data.mippedia.org/index.php?title=MediaWiki:Common.js&amp;diff=909</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://data.mippedia.org/index.php?title=MediaWiki:Common.js&amp;diff=909"/>
		<updated>2026-06-01T22:06:21Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* ==========================================================&lt;br /&gt;
   🌐 MIPPEDIA TAB ROUTER INTEGRATOR - FAILSAFE LONG-TERM (V1.1)&lt;br /&gt;
   Features: Safe CDN/Server Routing Simulation on Tab Title.&lt;br /&gt;
   Optimization: Zero-conflict design, scoped selectors, anti-stuck engine.&lt;br /&gt;
   Target: Secure for 10-20+ years of MediaWiki core updates.&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
(function() {&lt;br /&gt;
    // Ambil nama host secara dinamis (contoh: data.mippedia.org)&lt;br /&gt;
    var currentHost = window.location.hostname;&lt;br /&gt;
    var routingTimeout = null;&lt;br /&gt;
    var rawOriginalTitle = document.title;&lt;br /&gt;
&lt;br /&gt;
    // --- FUNCTION ENGINE CORE ---&lt;br /&gt;
    function executeTitleRouting(customText) {&lt;br /&gt;
        if (routingTimeout) clearTimeout(routingTimeout);&lt;br /&gt;
        &lt;br /&gt;
        // Ambil judul asli terupdate sebelum diubah&lt;br /&gt;
        var liveTitle = document.title;&lt;br /&gt;
        if (liveTitle !== currentHost) {&lt;br /&gt;
            rawOriginalTitle = liveTitle;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // Terapkan visual simulasi routing CDN&lt;br /&gt;
        document.title = currentHost;&lt;br /&gt;
&lt;br /&gt;
        // Failsafe: Jika dalam 2.5 detik halaman tidak kunjung berpindah (server lemot/batal), &lt;br /&gt;
        // kembalikan judul asli agar tidak tersangkut selamanya.&lt;br /&gt;
        routingTimeout = setTimeout(function() {&lt;br /&gt;
            if (document.title === currentHost) {&lt;br /&gt;
                document.title = rawOriginalTitle;&lt;br /&gt;
            }&lt;br /&gt;
        }, 2500);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // --- ⚡ METODE 1: INTERSEPSI KLIK LINK KONTEN (SCOPED SELECTOR) ---&lt;br /&gt;
    // Hanya membaca klik di area artikel/konten utama. Menghindari eror pada menu UI &amp;amp; Sidebar.&lt;br /&gt;
    $(document).on(&#039;click&#039;, &#039;#mw-content-text a, .mw-body-content a, #bodyContent a&#039;, function(e) {&lt;br /&gt;
        var $link = $(this);&lt;br /&gt;
        var href = $link.attr(&#039;href&#039;);&lt;br /&gt;
        &lt;br /&gt;
        // Abaikan jika: tidak ada href, link jangkar internal (#), buka tab baru, atau tombol aksi sunting&lt;br /&gt;
        if (!href || href.startsWith(&#039;#&#039;) || href.startsWith(&#039;javascript:&#039;) || $link.attr(&#039;target&#039;) || $link.hasClass(&#039;new&#039;) || $link.closest(&#039;.ext-wbbadge&#039;).length) {&lt;br /&gt;
            return; &lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // Pastikan hanya mendeteksi perpindahan halaman internal ekosistem&lt;br /&gt;
        var isInternal = href.indexOf(currentHost) !== -1 || href.startsWith(&#039;/&#039;) || !href.includes(&#039;://&#039;);&lt;br /&gt;
        if (isInternal) {&lt;br /&gt;
            executeTitleRouting();&lt;br /&gt;
        }&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    // --- 💾 METODE 2: HOOK FORMS / AKSES TOMBOL SIMPAN ---&lt;br /&gt;
    // Menggunakan trigger submit bawaan yang aman tanpa merusak fungsi simpan halaman&lt;br /&gt;
    $(document).on(&#039;submit&#039;, &#039;#editform, .mw-htmlform, #searchform&#039;, function() {&lt;br /&gt;
        executeTitleRouting();&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    // --- ⏳ METODE 3: SIMULASI KEDATANGAN KONTEN LINTAS SERVER (PAGE LANDING) ---&lt;br /&gt;
    // Efek halus seolah-olah data baru selesai diantarkan oleh jaringan CDN&lt;br /&gt;
    (function() {&lt;br /&gt;
        var finalPageTitle = document.title;&lt;br /&gt;
        &lt;br /&gt;
        // Tampilkan nama domain terlebih dahulu saat script mulai dibaca di halaman baru&lt;br /&gt;
        document.title = currentHost;&lt;br /&gt;
        &lt;br /&gt;
        // Cepat dan responsif: dalam 450ms langsung eksekusi transisi ke judul artikel asli&lt;br /&gt;
        setTimeout(function() {&lt;br /&gt;
            // Pastikan tidak menimpa jika judul sudah diubah oleh skrip MediaWiki lain&lt;br /&gt;
            if (document.title === currentHost) {&lt;br /&gt;
                document.title = finalPageTitle;&lt;br /&gt;
            }&lt;br /&gt;
        }, 450);&lt;br /&gt;
    })();&lt;br /&gt;
&lt;br /&gt;
    // --- 🛡️ SAFETY GUARDIAN: ANTI STUCK ON BLUR ---&lt;br /&gt;
    // Jika user pindah tab sebelum halaman sempat ke-refresh, kembalikan langsung ke judul asli&lt;br /&gt;
    $(window).on(&#039;blur pagehide beforeunload&#039;, function() {&lt;br /&gt;
        if (routingTimeout) clearTimeout(routingTimeout);&lt;br /&gt;
        if (document.title === currentHost) {&lt;br /&gt;
            document.title = rawOriginalTitle;&lt;br /&gt;
        }&lt;br /&gt;
    });&lt;br /&gt;
})();&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================&lt;br /&gt;
   🧠 MIPPEDIA DATA - SMART CONTEXT + AUTO THUMBNAIL (V10.1)&lt;br /&gt;
   Features: Priority Check (ID &amp;gt; EN &amp;gt; CONCISE), Auto-Age, &lt;br /&gt;
             Auto-Bold, Smart Links, Dynamic Context,&lt;br /&gt;
             Targeted Isolation (Safe for Forms), Dynamic Noindex,&lt;br /&gt;
             Aesthetic Centered Empty State + 🚀 Instant Action Hub (3 Buttons)&lt;br /&gt;
   Fixes: Mobile View Visibility &amp;amp; Custom Short URL Route (No /w/)&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
(function() {&lt;br /&gt;
    $(document).ready(function() {&lt;br /&gt;
        var $descSection = $(&#039;#mip-desc-section&#039;), $descBox = $(&#039;#mip-auto-description&#039;),&lt;br /&gt;
            $sourceInfo = $(&#039;#mip-source-info&#039;), $portalLinks = $(&#039;#mip-portal-links&#039;),&lt;br /&gt;
            $projectPortal = $(&#039;#mip-project-portal&#039;), $mainContent = $(&#039;#mw-content-text&#039;);&lt;br /&gt;
        &lt;br /&gt;
        if (!$descBox.length) return;&lt;br /&gt;
&lt;br /&gt;
        var pageTitle = mw.config.get(&#039;wgPageName&#039;).replace(/_/g, &#039; &#039;),&lt;br /&gt;
            cacheKey = &#039;mip_smart_context_thumb_&#039; + pageTitle, now = new Date().getTime(),&lt;br /&gt;
            currentYear = 2026;&lt;br /&gt;
&lt;br /&gt;
        // --- KONFIGURASI PROYEK ---&lt;br /&gt;
        var projects = [&lt;br /&gt;
            { id: &#039;id&#039;, name: &#039;Mippedia bahasa Indonesia&#039;, url: &#039;https://id.mippedia.org/api.php&#039;, base: &#039;https://id.mippedia.org/wiki/&#039;, label: &#039;Mippedia Indonesia&#039; },&lt;br /&gt;
            { id: &#039;en&#039;, name: &#039;Mippedia bahasa Inggris&#039;, url: &#039;https://en.mippedia.org/api.php&#039;, base: &#039;https://en.mippedia.org/wiki/&#039;, label: &#039;Mippedia Inggris&#039; },&lt;br /&gt;
            { id: &#039;concise&#039;, name: &#039;Mippedia bahasa Indonesia ringkas&#039;, url: &#039;https://concise.mippedia.org/api.php&#039;, base: &#039;https://concise.mippedia.org/wiki/&#039;, label: &#039;Mippedia Ringkas&#039; }&lt;br /&gt;
        ];&lt;br /&gt;
&lt;br /&gt;
        // --- 🎨 ANIMASI, HOVER EFFECT &amp;amp; RESPONSIVE STYLE ---&lt;br /&gt;
        if (!$(&#039;#mip-clean-style&#039;).length) {&lt;br /&gt;
            $(&#039;head&#039;).append(&lt;br /&gt;
                &#039;&amp;lt;style id=&amp;quot;mip-clean-style&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                    &#039;@keyframes mipFadeInUp {&#039; +&lt;br /&gt;
                        &#039;from { opacity: 0; transform: translateY(15px); }&#039; +&lt;br /&gt;
                        &#039;to { opacity: 1; transform: translateY(0); }&#039; +&lt;br /&gt;
                    &#039;}&#039; +&lt;br /&gt;
                    &#039;#mip-empty-state-notice {&#039; +&lt;br /&gt;
                        &#039;display: block !important;&#039; + /* Memaksa tampil di seluler/mobile */&lt;br /&gt;
                        &#039;animation: mipFadeInUp 0.6s cubic-bezier(0.16, 1, 0.3, 1) forwards;&#039; +&lt;br /&gt;
                    &#039;}&#039; +&lt;br /&gt;
                    &#039;.mip-btn-container {&#039; +&lt;br /&gt;
                        &#039;display: flex;&#039; +&lt;br /&gt;
                        &#039;flex-wrap: wrap;&#039; + /* Supaya otomatis turun ke bawah kalau di HP */&lt;br /&gt;
                        &#039;justify-content: center;&#039; +&lt;br /&gt;
                        &#039;margin-bottom: 30px;&#039; +&lt;br /&gt;
                        &#039;padding-top: 5px;&#039; +&lt;br /&gt;
                    &#039;}&#039; +&lt;br /&gt;
                    &#039;.mip-action-btn {&#039; +&lt;br /&gt;
                        &#039;display: inline-flex; align-items: center; justify-content: center;&#039; +&lt;br /&gt;
                        &#039;padding: 10px 18px; margin: 6px; font-size: 0.88em; font-weight: 600;&#039; +&lt;br /&gt;
                        &#039;color: #6a5acd !important; background: #ffffff; border: 1.5px solid #6a5acd;&#039; +&lt;br /&gt;
                        &#039;border-radius: 30px; text-decoration: none !important; cursor: pointer;&#039; +&lt;br /&gt;
                        &#039;transition: all 0.25s ease-in-out; box-shadow: 0 2px 5px rgba(106,92,205,0.08);&#039; +&lt;br /&gt;
                        &#039;flex-grow: 1; max-width: 220px; min-width: 150px;&#039; + /* Penyesuaian porsi tombol di HP */&lt;br /&gt;
                    &#039;}&#039; +&lt;br /&gt;
                    &#039;.mip-action-btn:hover {&#039; +&lt;br /&gt;
                        &#039;color: #ffffff !important; background: #6a5acd;&#039; +&lt;br /&gt;
                        &#039;transform: translateY(-2px); box-shadow: 0 4px 12px rgba(106,92,205,0.2);&#039; +&lt;br /&gt;
                    &#039;}&#039; +&lt;br /&gt;
                    &#039;.mip-action-btn:active {&#039; +&lt;br /&gt;
                        &#039;transform: translateY(0);&#039; +&lt;br /&gt;
                    &#039;}&#039; +&lt;br /&gt;
                &#039;&amp;lt;/style&amp;gt;&#039;&lt;br /&gt;
            );&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // --- FUNGSI TOOLS ---&lt;br /&gt;
        function applyAutoBold(text) { return text.replace(new RegExp(&#039;(&#039; + pageTitle + &#039;)&#039;, &#039;gi&#039;), &#039;&amp;lt;strong&amp;gt;$1&amp;lt;/strong&amp;gt;&#039;); }&lt;br /&gt;
        function cleanExtract(text) { return text.replace(/\[\d+\]/g, &#039;&#039;).replace(/\{\{[^}]+\}\}/g, &#039;&#039;).replace(/\(\s*\)/g, &#039;&#039;).replace(/\s\s+/g, &#039; &#039;).trim(); }&lt;br /&gt;
        &lt;br /&gt;
        function applyDynamicContext(text) {&lt;br /&gt;
            var date = new Date();&lt;br /&gt;
            var hari = [&amp;quot;Minggu&amp;quot;, &amp;quot;Senin&amp;quot;, &amp;quot;Selasa&amp;quot;, &amp;quot;Rabu&amp;quot;, &amp;quot;Kamis&amp;quot;, &amp;quot;Jumat&amp;quot;, &amp;quot;Sabtu&amp;quot;];&lt;br /&gt;
            var bulan = [&amp;quot;Januari&amp;quot;, &amp;quot;Februari&amp;quot;, &amp;quot;Maret&amp;quot;, &amp;quot;April&amp;quot;, &amp;quot;Mei&amp;quot;, &amp;quot;Juni&amp;quot;, &amp;quot;Juli&amp;quot;, &amp;quot;Agustus&amp;quot;, &amp;quot;September&amp;quot;, &amp;quot;Oktober&amp;quot;, &amp;quot;November&amp;quot;, &amp;quot;Desember&amp;quot;];&lt;br /&gt;
            var tglSkrg = hari[date.getDay()] + &amp;quot;, &amp;quot; + date.getDate() + &amp;quot; &amp;quot; + bulan[date.getMonth()] + &amp;quot; &amp;quot; + date.getFullYear();&lt;br /&gt;
            return text.replace(/(hari ini|saat ini|sekarang)/gi, &#039;$1 (&#039; + tglSkrg + &#039;)&#039;)&lt;br /&gt;
                .replace(/(\d{1,2}\s(?:Januari|Februari|Maret|April|Mei|Juni|Juli|Agustus|September|Oktober|November|Desember)\s(\d{4}))/gi, function(m, f, y) { &lt;br /&gt;
                    return f + &amp;quot; &amp;lt;span style=&#039;color: #444; font-weight: bold;&#039;&amp;gt;– usia &amp;quot; + (currentYear - parseInt(y)) + &amp;quot; tahun&amp;lt;/span&amp;gt;&amp;quot;; &lt;br /&gt;
                })&lt;br /&gt;
                .replace(/(sejak|tahun)\s(\d{4})/gi, function(m, k, y) {&lt;br /&gt;
                    var gap = currentYear - parseInt(y);&lt;br /&gt;
                    if (gap &amp;gt; 0 &amp;amp;&amp;amp; gap &amp;lt; 100) return k + &amp;quot; &amp;quot; + y + &amp;quot; &amp;lt;small style=&#039;color: #888;&#039;&amp;gt;(&amp;quot; + gap + &amp;quot; thn lalu)&amp;lt;/small&amp;gt;&amp;quot;;&lt;br /&gt;
                    return m;&lt;br /&gt;
                });&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        function applySummary(text) {&lt;br /&gt;
            var limit = 250;&lt;br /&gt;
            if (text.length &amp;lt;= limit) return &#039;&amp;lt;span&amp;gt;&#039; + text + &#039;&amp;lt;/span&amp;gt;&#039;;&lt;br /&gt;
            return &#039;&amp;lt;span&amp;gt;&#039; + text.substring(0, limit) + &#039;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;mip-dots&amp;quot;&amp;gt;... &amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;mip-more&amp;quot; style=&amp;quot;display:none;&amp;quot;&amp;gt;&#039; + text.substring(limit) + &#039;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;mip-read-btn&amp;quot; style=&amp;quot;color: #6a5acd; cursor: pointer; font-weight: bold; margin-left: 5px;&amp;quot;&amp;gt;Baca selengkapnya&amp;lt;/span&amp;gt;&#039;;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // --- SMART LINKS PORTAL ---&lt;br /&gt;
        function buildSmartLinks(currentId, validatedEnTitle) {&lt;br /&gt;
            $portalLinks.empty();&lt;br /&gt;
            var validLinks = [];&lt;br /&gt;
            &lt;br /&gt;
            var checkRequests = projects.filter(p =&amp;gt; p.id !== currentId).map(function(p) {&lt;br /&gt;
                var targetTitle = (p.id === &#039;en&#039; &amp;amp;&amp;amp; validatedEnTitle) ? validatedEnTitle : pageTitle;&lt;br /&gt;
                if (p.id === &#039;en&#039; &amp;amp;&amp;amp; !validatedEnTitle) return $.Deferred().resolve();&lt;br /&gt;
&lt;br /&gt;
                return $.ajax({ url: p.url, data: { action: &#039;query&#039;, titles: targetTitle, format: &#039;json&#039;, origin: &#039;*&#039; }, dataType: &#039;json&#039; })&lt;br /&gt;
                    .then(function(data) { &lt;br /&gt;
                        if (data.query.pages[&amp;quot;-1&amp;quot;] === undefined) { &lt;br /&gt;
                            validLinks.push(&#039;&amp;lt;a href=&amp;quot;&#039; + p.base + encodeURIComponent(targetTitle) + &#039;&amp;quot; target=&amp;quot;_blank&amp;quot; style=&amp;quot;color: #6a5acd; text-decoration: underline; font-weight: bold;&amp;quot;&amp;gt;&#039; + p.label + &#039;&amp;lt;/a&amp;gt;&#039;); &lt;br /&gt;
                        } &lt;br /&gt;
                    });&lt;br /&gt;
            });&lt;br /&gt;
&lt;br /&gt;
            $.when.apply($, checkRequests).done(function() {&lt;br /&gt;
                if (validLinks.length &amp;gt; 0) { $portalLinks.html(validLinks.join(&#039; &amp;lt;span style=&amp;quot;color:#ccc; margin: 0 5px;&amp;quot;&amp;gt;•&amp;lt;/span&amp;gt; &#039;)); $projectPortal.fadeIn(); }&lt;br /&gt;
            });&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // --- 🧠 RENDER EMPTY STATE + INTERACTIVE HUB ---&lt;br /&gt;
        function toggleMippediaLayout(isEmpty) {&lt;br /&gt;
            var $existingNotice = $(&#039;#mip-empty-state-notice&#039;);&lt;br /&gt;
            var userGroups = mw.config.get(&#039;wgUserGroups&#039;) || [];&lt;br /&gt;
            var isSysop = userGroups.indexOf(&#039;sysop&#039;) !== -1;&lt;br /&gt;
&lt;br /&gt;
            var $wikiDataElements = $mainContent.children().not(&#039;#mip-empty-state-notice, #mip-desc-section, script, style, .printfooter&#039;);&lt;br /&gt;
            var $editElements = $(&#039;#ca-edit, .mw-editsection, .wb-editsection, .mip-edit-trigger, [id*=&amp;quot;edit&amp;quot;], [class*=&amp;quot;edit-pencil&amp;quot;]&#039;);&lt;br /&gt;
            var $metaRobots = $(&#039;meta[name=&amp;quot;robots&amp;quot;]&#039;);&lt;br /&gt;
&lt;br /&gt;
            if (isEmpty) {&lt;br /&gt;
                if (!$existingNotice.length) {&lt;br /&gt;
                    // Perbaikan Jalur URL tanpa sub-folder /w/ langsung menembak Short URL root parameter&lt;br /&gt;
                    var createUrlID = &#039;https://id.mippedia.org/index.php?title=&#039; + encodeURIComponent(pageTitle) + &#039;&amp;amp;action=edit&#039;;&lt;br /&gt;
                    var createUrlEN = &#039;https://en.mippedia.org/index.php?title=&#039; + encodeURIComponent(pageTitle) + &#039;&amp;amp;action=edit&#039;;&lt;br /&gt;
                    var createUrlConcise = &#039;https://concise.mippedia.org/index.php?title=&#039; + encodeURIComponent(pageTitle) + &#039;&amp;amp;action=edit&#039;;&lt;br /&gt;
&lt;br /&gt;
                    var noticeHtml = &lt;br /&gt;
                        &#039;&amp;lt;div id=&amp;quot;mip-empty-state-notice&amp;quot; style=&amp;quot;text-align: center; max-width: 600px; margin: 40px auto; padding: 10px; font-family: -apple-system, BlinkMacSystemFont, \&#039;Segoe UI\&#039;, Roboto, sans-serif;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                            &#039;&amp;lt;!-- Ikon Warning Besar --&amp;gt;&#039; +&lt;br /&gt;
                            &#039;&amp;lt;div style=&amp;quot;margin-bottom: 22px; display: inline-block;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                &#039;&amp;lt;svg width=&amp;quot;64&amp;quot; height=&amp;quot;64&amp;quot; viewBox=&amp;quot;0 0 24 24&amp;quot; fill=&amp;quot;none&amp;quot; stroke=&amp;quot;#d9534f&amp;quot; stroke-width=&amp;quot;1.8&amp;quot; stroke-linecap=&amp;quot;round&amp;quot; stroke-linejoin=&amp;quot;round&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                    &#039;&amp;lt;path d=&amp;quot;M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z&amp;quot;&amp;gt;&amp;lt;/path&amp;gt;&#039; +&lt;br /&gt;
                                    &#039;&amp;lt;line x1=&amp;quot;12&amp;quot; y1=&amp;quot;9&amp;quot; x2=&amp;quot;12&amp;quot; y2=&amp;quot;13&amp;quot;&amp;gt;&amp;lt;/line&amp;gt;&#039; +&lt;br /&gt;
                                    &#039;&amp;lt;line x1=&amp;quot;12&amp;quot; y1=&amp;quot;17&amp;quot; x2=&amp;quot;12.01&amp;quot; y2=&amp;quot;17&amp;quot;&amp;gt;&amp;lt;/line&amp;gt;&#039; +&lt;br /&gt;
                                &#039;&amp;lt;/&#039; + &#039;svg&amp;gt;&#039; +&lt;br /&gt;
                            &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
                            &#039;&amp;lt;!-- Judul Utama --&amp;gt;&#039; +&lt;br /&gt;
                            &#039;&amp;lt;h4 style=&amp;quot;color: #2c3e50; margin: 0 0 12px 0; font-size: 1.35em; font-weight: 700; letter-spacing: -0.3px;&amp;quot;&amp;gt;Item Data Struktur Tidak Memiliki Sumber Artikel&amp;lt;/h4&amp;gt;&#039; +&lt;br /&gt;
                            &#039;&amp;lt;!-- Deskripsi Utama --&amp;gt;&#039; +&lt;br /&gt;
                            &#039;&amp;lt;p style=&amp;quot;color: #555; margin: 0 0 25px 0; font-size: 0.98em; line-height: 1.6;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                &#039;Item data ini saat ini &amp;lt;strong&amp;gt;tidak memiliki artikel rujukan satu pun&amp;lt;/strong&amp;gt; di Mippedia Indonesia, Mippedia Inggris, maupun Mippedia Indonesia Ringkas.&#039; +&lt;br /&gt;
                            &#039;&amp;lt;/p&amp;gt;&#039; +&lt;br /&gt;
                            &lt;br /&gt;
                            &#039;&amp;lt;!-- 🚀 INSTANT ACTION HUB (Flexbox-Responsive Mobile &amp;amp; URL No /w/) --&amp;gt;&#039; +&lt;br /&gt;
                            &#039;&amp;lt;div class=&amp;quot;mip-btn-container&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                &#039;&amp;lt;a href=&amp;quot;&#039; + createUrlID + &#039;&amp;quot; target=&amp;quot;_blank&amp;quot; class=&amp;quot;mip-action-btn&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                    &#039;&amp;lt;span style=&amp;quot;margin-right: 6px;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;Buat Artikel ID&#039; +&lt;br /&gt;
                                &#039;&amp;lt;/a&amp;gt;&#039; +&lt;br /&gt;
                                &#039;&amp;lt;a href=&amp;quot;&#039; + createUrlEN + &#039;&amp;quot; target=&amp;quot;_blank&amp;quot; class=&amp;quot;mip-action-btn&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                    &#039;&amp;lt;span style=&amp;quot;margin-right: 6px;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;Buat Artikel EN&#039; +&lt;br /&gt;
                                &#039;&amp;lt;/a&amp;gt;&#039; +&lt;br /&gt;
                                &#039;&amp;lt;a href=&amp;quot;&#039; + createUrlConcise + &#039;&amp;quot; target=&amp;quot;_blank&amp;quot; class=&amp;quot;mip-action-btn&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                    &#039;&amp;lt;span style=&amp;quot;margin-right: 6px;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;Buat Artikel Ringkas&#039; +&lt;br /&gt;
                                &#039;&amp;lt;/a&amp;gt;&#039; +&lt;br /&gt;
                            &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
&lt;br /&gt;
                            &#039;&amp;lt;!-- Catatan Kaki Info Kecil --&amp;gt;&#039; +&lt;br /&gt;
                            &#039;&amp;lt;div style=&amp;quot;font-size: 0.85em; color: #a0a0a0; line-height: 1.5; font-style: italic; border-top: 1px solid #f0f0f0; padding-top: 15px;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                &#039;Informasi: Item data yang tidak terikat dengan artikel ensiklopedia apa pun dalam ekosistem Mippedia akan dihapus secara otomatis oleh pengurus dalam waktu dekat.&#039; +&lt;br /&gt;
                            &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
                        &#039;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
                    $mainContent.prepend(noticeHtml);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                $wikiDataElements.hide();&lt;br /&gt;
                $descSection.hide();&lt;br /&gt;
&lt;br /&gt;
                if (!isSysop) {&lt;br /&gt;
                    $editElements.css({ &#039;pointer-events&#039;: &#039;none&#039;, &#039;opacity&#039;: &#039;0.3&#039;, &#039;cursor&#039;: &#039;not-allowed&#039; }).hide();&lt;br /&gt;
                    $(document).on(&#039;keydown.miplock&#039;, function(e) {&lt;br /&gt;
                        if (e.key.toLowerCase() === &#039;e&#039; &amp;amp;&amp;amp; !$(e.target).is(&#039;input, textarea&#039;)) {&lt;br /&gt;
                            e.preventDefault();&lt;br /&gt;
                            return false;&lt;br /&gt;
                        }&lt;br /&gt;
                    });&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                mw.config.set(&#039;wgRobotsPolicies&#039;, { &#039;index&#039;: &#039;noindex&#039;, &#039;follow&#039;: &#039;nofollow&#039; });&lt;br /&gt;
                if ($metaRobots.length) {&lt;br /&gt;
                    $metaRobots.attr(&#039;content&#039;, &#039;noindex, nofollow&#039;);&lt;br /&gt;
                } else {&lt;br /&gt;
                    $(&#039;head&#039;).append(&#039;&amp;lt;meta name=&amp;quot;robots&amp;quot; content=&amp;quot;noindex, nofollow&amp;quot;&amp;gt;&#039;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
            } else {&lt;br /&gt;
                if ($existingNotice.length) $existingNotice.remove();&lt;br /&gt;
                &lt;br /&gt;
                $wikiDataElements.show();&lt;br /&gt;
                $descSection.show();&lt;br /&gt;
&lt;br /&gt;
                if (!isSysop) {&lt;br /&gt;
                    $(document).off(&#039;keydown.miplock&#039;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                mw.config.set(&#039;wgRobotsPolicies&#039;, { &#039;index&#039;: &#039;index&#039;, &#039;follow&#039;: &#039;follow&#039; });&lt;br /&gt;
                if ($metaRobots.length) {&lt;br /&gt;
                    $metaRobots.attr(&#039;content&#039;, &#039;index, follow&#039;);&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // --- SISTEM PRIORITAS ---&lt;br /&gt;
        var cached = JSON.parse(localStorage.getItem(cacheKey) || &amp;quot;{}&amp;quot;);&lt;br /&gt;
        var globalEnTitle = cached.enTitle || &amp;quot;&amp;quot;; &lt;br /&gt;
&lt;br /&gt;
        function init() {&lt;br /&gt;
            var pPrimary = projects[0]; &lt;br /&gt;
            $.ajax({&lt;br /&gt;
                url: pPrimary.url,&lt;br /&gt;
                data: { action: &#039;query&#039;, prop: &#039;revisions|pageimages|langlinks&#039;, lllang: &#039;en&#039;, rvprop: &#039;timestamp&#039;, piprop: &#039;thumbnail&#039;, pithumbsize: 150, titles: pageTitle, format: &#039;json&#039;, origin: &#039;*&#039; },&lt;br /&gt;
                dataType: &#039;json&#039;,&lt;br /&gt;
                success: function(res) {&lt;br /&gt;
                    var pg = res.query.pages, id = Object.keys(pg)[0];&lt;br /&gt;
                    var latestTS = (id != &amp;quot;-1&amp;quot;) ? pg[id].revisions[0].timestamp : &amp;quot;0&amp;quot;;&lt;br /&gt;
                    var thumbUrl = (id != &amp;quot;-1&amp;quot; &amp;amp;&amp;amp; pg[id].thumbnail) ? pg[id].thumbnail.source : &amp;quot;&amp;quot;;&lt;br /&gt;
                    &lt;br /&gt;
                    if (id != &amp;quot;-1&amp;quot; &amp;amp;&amp;amp; pg[id].langlinks &amp;amp;&amp;amp; pg[id].langlinks[0]) {&lt;br /&gt;
                        globalEnTitle = pg[id].langlinks[0][&#039;*&#039;];&lt;br /&gt;
                    }&lt;br /&gt;
&lt;br /&gt;
                    if (cached.content &amp;amp;&amp;amp; cached.ts === latestTS &amp;amp;&amp;amp; latestTS !== &amp;quot;0&amp;quot; &amp;amp;&amp;amp; !cached.isEmpty) {&lt;br /&gt;
                        toggleMippediaLayout(false);&lt;br /&gt;
                        renderAll(cached.p, cached.content, cached.isTrans, cached.orig, cached.img, cached.customUrl, cached.enTitle);&lt;br /&gt;
                    } else { &lt;br /&gt;
                        fetchPriorityData(0, latestTS, thumbUrl); &lt;br /&gt;
                    }&lt;br /&gt;
                },&lt;br /&gt;
                error: function() { &lt;br /&gt;
                    if (cached.content) {&lt;br /&gt;
                        toggleMippediaLayout(cached.isEmpty || false);&lt;br /&gt;
                        if (!cached.isEmpty) renderAll(cached.p, cached.content, cached.isTrans, cached.orig, cached.img, cached.customUrl, cached.enTitle);&lt;br /&gt;
                    } &lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        function fetchPriorityData(index, newTS, img) {&lt;br /&gt;
            if (index &amp;gt;= projects.length) {&lt;br /&gt;
                localStorage.setItem(cacheKey, JSON.stringify({isEmpty: true, ts: newTS, content: &amp;quot;&amp;quot;}));&lt;br /&gt;
                toggleMippediaLayout(true);&lt;br /&gt;
                return;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            var p = projects[index];&lt;br /&gt;
&lt;br /&gt;
            if (p.id === &#039;en&#039;) {&lt;br /&gt;
                if (!globalEnTitle) {&lt;br /&gt;
                    $.ajax({&lt;br /&gt;
                        url: &#039;https://concise.mippedia.org/api.php&#039;,&lt;br /&gt;
                        data: { action: &#039;query&#039;, prop: &#039;langlinks&#039;, lllang: &#039;en&#039;, titles: pageTitle, format: &#039;json&#039;, origin: &#039;*&#039; },&lt;br /&gt;
                        dataType: &#039;json&#039;,&lt;br /&gt;
                        async: false, &lt;br /&gt;
                        success: function(cRes) {&lt;br /&gt;
                            var cPg = cRes.query.pages, cId = Object.keys(cPg)[0];&lt;br /&gt;
                            if (cId != &amp;quot;-1&amp;quot; &amp;amp;&amp;amp; cPg[cId].langlinks &amp;amp;&amp;amp; cPg[cId].langlinks[0]) {&lt;br /&gt;
                                globalEnTitle = cPg[cId].langlinks[0][&#039;*&#039;];&lt;br /&gt;
                            }&lt;br /&gt;
                        }&lt;br /&gt;
                    });&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                if (globalEnTitle) {&lt;br /&gt;
                    $.ajax({&lt;br /&gt;
                        url: p.url,&lt;br /&gt;
                        data: { action: &#039;query&#039;, prop: &#039;extracts&#039;, exintro: 1, explaintext: 1, titles: globalEnTitle, format: &#039;json&#039;, origin: &#039;*&#039; },&lt;br /&gt;
                        dataType: &#039;json&#039;,&lt;br /&gt;
                        success: function(data) {&lt;br /&gt;
                            var pages = data.query.pages, pageId = Object.keys(pages)[0];&lt;br /&gt;
                            if (pageId != &amp;quot;-1&amp;quot; &amp;amp;&amp;amp; pages[pageId].extract) {&lt;br /&gt;
                                var extract = cleanExtract(pages[pageId].extract);&lt;br /&gt;
                                finalize(p, extract, false, &amp;quot;&amp;quot;, newTS, img, p.base + encodeURIComponent(globalEnTitle), globalEnTitle);&lt;br /&gt;
                            } else {&lt;br /&gt;
                                fetchPriorityData(index + 1, newTS, img);&lt;br /&gt;
                            }&lt;br /&gt;
                        },&lt;br /&gt;
                        error: function() { fetchPriorityData(index + 1, newTS, img); }&lt;br /&gt;
                    });&lt;br /&gt;
                } else {&lt;br /&gt;
                    fetchPriorityData(index + 1, newTS, img);&lt;br /&gt;
                }&lt;br /&gt;
            } else {&lt;br /&gt;
                $.ajax({&lt;br /&gt;
                    url: p.url,&lt;br /&gt;
                    data: { action: &#039;query&#039;, prop: &#039;extracts&#039;, exintro: 1, explaintext: 1, titles: pageTitle, format: &#039;json&#039;, origin: &#039;*&#039; },&lt;br /&gt;
                    dataType: &#039;json&#039;,&lt;br /&gt;
                    success: function(data) {&lt;br /&gt;
                        var pages = data.query.pages, pageId = Object.keys(pages)[0];&lt;br /&gt;
                        if (pageId != &amp;quot;-1&amp;quot; &amp;amp;&amp;amp; pages[pageId].extract) {&lt;br /&gt;
                            var extract = cleanExtract(pages[pageId].extract);&lt;br /&gt;
                            finalize(p, extract, false, &amp;quot;&amp;quot;, newTS, img, p.base + encodeURIComponent(pageTitle), globalEnTitle); &lt;br /&gt;
                        } else {&lt;br /&gt;
                            fetchPriorityData(index + 1, newTS, img);&lt;br /&gt;
                        }&lt;br /&gt;
                    },&lt;br /&gt;
                    error: function() { fetchPriorityData(index + 1, newTS, img); }&lt;br /&gt;
                });&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        function finalize(p, c, t, o, ts, img, customUrl, enTitle) {&lt;br /&gt;
            localStorage.setItem(cacheKey, JSON.stringify({isEmpty: false, p:p, content:c, isTrans:t, orig:o, ts:ts, img:img, customUrl: customUrl, enTitle: enTitle}));&lt;br /&gt;
            toggleMippediaLayout(false); &lt;br /&gt;
            renderAll(p, c, t, o, img, customUrl, enTitle);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        function renderAll(p, currentText, isTranslated, originalText, img, customUrl, enTitle) {&lt;br /&gt;
            var processedText = applyAutoBold(applyDynamicContext(currentText));&lt;br /&gt;
            var thumbHtml = img ? &#039;&amp;lt;div style=&amp;quot;float: right; margin-left: 15px; margin-bottom: 10px; border: 1px solid #ddd; padding: 3px; background: #fff; border-radius: 4px; box-shadow: 0 2px 4px rgba(0,0,0,0.1);&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;&#039;+img+&#039;&amp;quot; style=&amp;quot;max-width: 100px; display: block; height: auto;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039; : &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
            if (!$mainContent.find(&#039;#mip-desc-section&#039;).length) {&lt;br /&gt;
                $mainContent.prepend($descSection);&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            $descSection.show();&lt;br /&gt;
            $descBox.show().html(thumbHtml + applySummary(processedText) + &#039;&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;);&lt;br /&gt;
            &lt;br /&gt;
            var targetLink = customUrl ? customUrl : p.base + encodeURIComponent(pageTitle);&lt;br /&gt;
            var footer = &#039;&amp;lt;div style=&amp;quot;font-size: 0.9em; color: #777;&amp;quot;&amp;gt;Sumber : &amp;lt;a href=&amp;quot;&#039; + targetLink + &#039;&amp;quot; target=&amp;quot;_blank&amp;quot; style=&amp;quot;color: #6a5acd; font-weight: bold; text-decoration: none;&amp;quot;&amp;gt;&#039; + p.name + &#039;.&amp;lt;/a&amp;gt;&#039;;&lt;br /&gt;
            if (isTranslated) { footer += &#039;&amp;lt;br&amp;gt;&amp;lt;span style=&amp;quot;font-size: 0.85em; font-style: italic;&amp;quot;&amp;gt;(Diterjemahkan secara otomatis)&amp;lt;/span&amp;gt; &amp;lt;span id=&amp;quot;mip-toggle-orig&amp;quot; style=&amp;quot;color: #6a5acd; cursor: pointer; text-decoration: underline; margin-left: 5px;&amp;quot;&amp;gt;Tampilkan versi asli&amp;lt;/span&amp;gt;&#039;; }&lt;br /&gt;
            $sourceInfo.show().html(footer);&lt;br /&gt;
            &lt;br /&gt;
            buildSmartLinks(p.id, enTitle);&lt;br /&gt;
            &lt;br /&gt;
            $(document).off(&#039;click&#039;, &#039;.mip-read-btn&#039;).on(&#039;click&#039;, &#039;.mip-read-btn&#039;, function() { $(this).hide(); $(&#039;.mip-dots&#039;).hide(); $(&#039;.mip-more&#039;).fadeIn(); });&lt;br /&gt;
            $(document).off(&#039;click&#039;, &#039;#mip-toggle-orig&#039;).on(&#039;click&#039;, &#039;#mip-toggle-orig&#039;, function() {&lt;br /&gt;
                var isOrig = ($(this).text() === &#039;Tampilkan versi asli&#039;);&lt;br /&gt;
                var textToDisplay = applyAutoBold(applyDynamicContext(isOrig ? originalText : currentText));&lt;br /&gt;
                $descBox.html(thumbHtml + applySummary(textToDisplay) + &#039;&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;);&lt;br /&gt;
                $(this).text(isOrig ? &#039;Tampilkan terjemahan&#039; : &#039;Tampilkan versi asli&#039;);&lt;br /&gt;
            });&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        init();&lt;br /&gt;
    });&lt;br /&gt;
})();&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================&lt;br /&gt;
   🚀 MIPPEDIA DATA - CORE SYSTEM (ULTIMATE BUNDLE)&lt;br /&gt;
   Status: FINAL &amp;amp; REVISED (Visual Fix + Permission Logic)&lt;br /&gt;
   Fix: Mobile Responsive Notification Position&lt;br /&gt;
   ========================================================== */&lt;br /&gt;
&lt;br /&gt;
(function() {&lt;br /&gt;
    $(document).ready(function() {&lt;br /&gt;
        // --- 1. FILTER GLOBAL (Namespace 0 &amp;amp; Bukan Halaman Utama) ---&lt;br /&gt;
        if (mw.config.get(&#039;wgNamespaceNumber&#039;) !== 0 || &lt;br /&gt;
            mw.config.get(&#039;wgIsMainPage&#039;) || &lt;br /&gt;
            mw.config.get(&#039;wgAction&#039;) !== &#039;view&#039;) return;&lt;br /&gt;
&lt;br /&gt;
        var pageTitle = mw.config.get(&#039;wgPageName&#039;);&lt;br /&gt;
        var dataPage = &#039;MediaWiki:Sitelinks-Data.json&#039;;&lt;br /&gt;
        var userGroups = mw.config.get(&#039;wgUserGroups&#039;);&lt;br /&gt;
        var isAdmin = userGroups.includes(&#039;sysop&#039;) || userGroups.includes(&#039;interface-admin&#039;);&lt;br /&gt;
&lt;br /&gt;
        var projects = {&lt;br /&gt;
            &#039;id&#039;: { name: &#039;ID&#039;, url: &#039;https://id.mippedia.org/api.php&#039;, base: &#039;https://id.mippedia.org/wiki/&#039;, color: &#039;#6a5acd&#039; },&lt;br /&gt;
            &#039;en&#039;: { name: &#039;EN&#039;, url: &#039;https://en.mippedia.org/api.php&#039;, base: &#039;https://en.mippedia.org/wiki/&#039;, color: &#039;#4169e1&#039; },&lt;br /&gt;
            &#039;concise&#039;: { name: &#039;Concise&#039;, url: &#039;https://concise.mippedia.org/api.php&#039;, base: &#039;https://concise.mippedia.org/wiki/&#039;, color: &#039;#20b2aa&#039; }&lt;br /&gt;
        };&lt;br /&gt;
&lt;br /&gt;
        // --- 2. KOTAK NOTIFIKASI INFORMASI MODERN (FIXED MOBILE POSITION) ---&lt;br /&gt;
        function showBoxNotif(title, msg, type) {&lt;br /&gt;
            $(&#039;.mip-box-notif&#039;).remove();&lt;br /&gt;
            var theme = type === &#039;success&#039; ? {bg:&#039;#e6fffa&#039;, border:&#039;#38b2ac&#039;, text:&#039;#234e52&#039;, icon:&#039;&#039;} : &lt;br /&gt;
                        {bg:&#039;#fff5f5&#039;, border:&#039;#f56565&#039;, text:&#039;#742a2a&#039;, icon:&#039;&#039;};&lt;br /&gt;
            &lt;br /&gt;
            // Logika CSS Responsif untuk posisi&lt;br /&gt;
            var isMobile = window.innerWidth &amp;lt;= 768;&lt;br /&gt;
            var desktopStyle = &amp;quot;top:25px; right:25px; width:350px;&amp;quot;;&lt;br /&gt;
            var mobileStyle = &amp;quot;top:15px; left:50%; transform:translateX(-50%); width:90%; max-width:400px;&amp;quot;;&lt;br /&gt;
            var finalPos = isMobile ? mobileStyle : desktopStyle;&lt;br /&gt;
&lt;br /&gt;
            var $notif = $(&#039;&amp;lt;div class=&amp;quot;mip-box-notif&amp;quot; style=&amp;quot;position:fixed; &#039; + finalPos + &#039; background:&#039;+theme.bg+&#039;; border-left:6px solid &#039;+theme.border+&#039;; padding:18px; z-index:10001; border-radius:12px; box-shadow:0 15px 35px rgba(0,0,0,0.2); font-family:sans-serif; animation:mipSlideIn 0.4s ease-out;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                &#039;&amp;lt;div style=&amp;quot;display:flex; align-items:center; gap:12px; margin-bottom:8px;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                    &#039;&amp;lt;span style=&amp;quot;font-size:20px;&amp;quot;&amp;gt;&#039;+theme.icon+&#039;&amp;lt;/span&amp;gt;&#039; +&lt;br /&gt;
                    &#039;&amp;lt;strong style=&amp;quot;color:&#039;+theme.text+&#039;; font-size:15px; letter-spacing:-0.3px;&amp;quot;&amp;gt;&#039;+title+&#039;&amp;lt;/strong&amp;gt;&#039; +&lt;br /&gt;
                &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
                &#039;&amp;lt;p style=&amp;quot;margin:0; font-size:13px; color:&#039;+theme.text+&#039;; line-height:1.6; opacity:0.9;&amp;quot;&amp;gt;&#039;+msg+&#039;&amp;lt;/p&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;/div&amp;gt;&#039;).appendTo(&#039;body&#039;);&lt;br /&gt;
&lt;br /&gt;
            setTimeout(function() { $notif.fadeOut(function(){ $(this).remove(); }); }, 5500);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // --- 3. UI GENERATOR (DIPERTEBAL) ---&lt;br /&gt;
&lt;br /&gt;
      // A. Header Pro&lt;br /&gt;
        var headerHtml = &#039;&amp;lt;div id=&amp;quot;mip-header&amp;quot; style=&amp;quot;background:#f8f9fa; border:1px solid #ddd; border-left:6px solid #6a5acd; padding:18px; margin-bottom:25px; border-radius:6px; box-shadow:inset 0 0 10px rgba(0,0,0,0.02);&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;div style=&amp;quot;display:flex; align-items:center; gap:10px; margin-bottom:8px;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;span style=&amp;quot;background:#6a5acd; color:white; padding:3px 10px; border-radius:4px; font-size:11px; font-weight:bold; text-transform:uppercase; letter-spacing:0.5px;&amp;quot;&amp;gt;Basis Data Terstruktur&amp;lt;/span&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;strong style=&amp;quot;color:#111; font-size:16px;&amp;quot;&amp;gt;&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;p style=&amp;quot;margin:0; font-size:13px; color:#444; line-height:1.6;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
            &#039;Halaman ini adalah metadata entitas repositori pusat yang disinkronisasi secara otomatis lintas ekosistem. &#039; +&lt;br /&gt;
            &#039;Informasi di bawah ini bersifat teknis dan bebas digunakan sebagai referensi data terbuka bagi semua orang di seluruh dunia berdasarkan lisensi atribusi yang sesuai.&#039; +&lt;br /&gt;
            &#039;&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
        // B. Connector Box&lt;br /&gt;
        var editBtn = &#039;&amp;lt;span id=&amp;quot;mip-open-editor&amp;quot; style=&amp;quot;cursor:pointer; font-size:20px; color:#6a5acd; opacity:0.8; transition:0.3s;&amp;quot; onmouseover=&amp;quot;this.style.opacity=1&amp;quot; onmouseout=&amp;quot;this.style.opacity=0.8&amp;quot;&amp;gt;✎&amp;lt;/span&amp;gt;&#039;;&lt;br /&gt;
        var connectorHtml = &#039;&amp;lt;div id=&amp;quot;mip-connector&amp;quot; style=&amp;quot;background:#fff; border:1px solid #e2e8f0; border-radius:16px; padding:22px; margin-top:30px; box-shadow:0 10px 25px rgba(0,0,0,0.04);&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;div style=&amp;quot;display:flex; justify-content:space-between; align-items:center; margin-bottom:20px;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;strong style=&amp;quot;font-size:15px; color:#1a202c; display:flex; align-items:center; gap:8px;&amp;quot;&amp;gt;ID situs&amp;lt;/strong&amp;gt;&#039;+editBtn+&#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;div id=&amp;quot;mip-display&amp;quot; style=&amp;quot;display:flex; gap:12px; flex-wrap:wrap;&amp;quot;&amp;gt;&amp;lt;small style=&amp;quot;color:#a0aec0;&amp;quot;&amp;gt;Mensinkronisasi basis data...&amp;lt;/small&amp;gt;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;div id=&amp;quot;mip-editor&amp;quot; style=&amp;quot;display:none; margin-top:20px; border-top:2px solid #f7fafc; padding-top:20px;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                Object.keys(projects).map(p =&amp;gt; &#039;&amp;lt;div style=&amp;quot;margin-bottom:12px; display:flex; gap:10px;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;width:75px; font-size:11px; font-weight:bold; background:#edf2f7; display:flex; align-items:center; justify-content:center; border-radius:8px; color:#4a5568;&amp;quot;&amp;gt;&#039;+projects[p].name+&#039;&amp;lt;/span&amp;gt;&amp;lt;input type=&amp;quot;text&amp;quot; id=&amp;quot;in-&#039;+p+&#039;&amp;quot; placeholder=&amp;quot;Judul artikel di &#039;+projects[p].name+&#039;...&amp;quot; style=&amp;quot;flex:1; padding:10px; font-size:13px; border:1.5px solid #e2e8f0; border-radius:10px; outline:none; transition:0.2s;&amp;quot; onfocus=&amp;quot;this.style.borderColor=\&#039;#6a5acd\&#039;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;).join(&#039;&#039;) +&lt;br /&gt;
                &#039;&amp;lt;button id=&amp;quot;mip-save&amp;quot; style=&amp;quot;width:100%; padding:14px; background:#6a5acd; color:white; border:none; border-radius:12px; font-size:14px; font-weight:bold; cursor:pointer; box-shadow:0 4px 12px rgba(106,90,205,0.3); transition:0.3s;&amp;quot;&amp;gt;Terbitkan&amp;lt;/button&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
        // C. Footer Lisensi Lengkap&lt;br /&gt;
        var footerHtml = &#039;&amp;lt;div id=&amp;quot;mip-footer&amp;quot; style=&amp;quot;background:#fafafa; border:1px solid #eee; border-radius:10px; padding:20px; margin-top:30px; text-align:center;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;div style=&amp;quot;font-size:11px; color:#718096; font-weight:800; text-transform:uppercase; letter-spacing:1px; margin-bottom:10px;&amp;quot;&amp;gt;Lisensi, Atribusi &amp;amp; Penggunaan Data&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;p style=&amp;quot;margin:0 0 10px; font-size:13px; color:#4a5568; line-height:1.6;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
            &#039;Seluruh data terstruktur yang tersaji dalam repositori ini merupakan milik publik dan tersedia di bawah lisensi resmi &#039; +&lt;br /&gt;
            &#039;&amp;lt;a href=&amp;quot;https://creativecommons.org/licenses/by-sa/4.0/&amp;quot; target=&amp;quot;_blank&amp;quot; style=&amp;quot;color:#6a5acd; text-decoration:none; font-weight:700;&amp;quot;&amp;gt;Creative Commons Attribution-ShareAlike 4.0 International&amp;lt;/a&amp;gt;.&#039; +&lt;br /&gt;
            &#039;&amp;lt;/p&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;p style=&amp;quot;margin:0; font-size:12px; color:#a0aec0;&amp;quot;&amp;gt;Akses API dan penggunaan data secara massal wajib mencantumkan atribusi kepada &amp;lt;strong&amp;gt;Mippedia Community&amp;lt;/strong&amp;gt; selaku pengelola proyek.&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
        // Injeksi&lt;br /&gt;
        $(&#039;#mw-content-text&#039;).prepend(headerHtml);&lt;br /&gt;
        $(&#039;#mw-content-text&#039;).append(connectorHtml).append(footerHtml);&lt;br /&gt;
&lt;br /&gt;
        // --- 4. LOGIC ENGINE ---&lt;br /&gt;
        function loadLinks() {&lt;br /&gt;
            new mw.Api().get({ action: &#039;query&#039;, prop: &#039;revisions&#039;, titles: dataPage, rvprop: &#039;content&#039;, formatversion: 2 }).done(function(d) {&lt;br /&gt;
                var json = d.query.pages[0].revisions ? JSON.parse(d.query.pages[0].revisions[0].content) : {};&lt;br /&gt;
                var data = json[pageTitle] || {};&lt;br /&gt;
                var $box = $(&#039;#mip-display&#039;).empty();&lt;br /&gt;
                var found = false;&lt;br /&gt;
                Object.keys(projects).forEach(p =&amp;gt; {&lt;br /&gt;
                    if (data[p]) {&lt;br /&gt;
                        found = true;&lt;br /&gt;
                        $box.append(&#039;&amp;lt;a style=&amp;quot;background:&#039;+projects[p].color+&#039;; color:white; padding:8px 16px; border-radius:10px; font-size:12px; font-weight:bold; text-decoration:none; border-bottom:3px solid rgba(0,0,0,0.15);&amp;quot; href=&amp;quot;&#039;+projects[p].base+encodeURIComponent(data[p])+&#039;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Mippedia &#039;+projects[p].name+&#039;: &#039;+data[p]+&#039;&amp;lt;/a&amp;gt;&#039;);&lt;br /&gt;
                        $(&#039;#in-&#039; + p).val(data[p]);&lt;br /&gt;
                    }&lt;br /&gt;
                });&lt;br /&gt;
                if (!found) $box.html(&#039;&amp;lt;em style=&amp;quot;color:#cbd5e0; font-size:13px;&amp;quot;&amp;gt;Entitas ini belum terhubung ke cabang Mippedia manapun.&amp;lt;/em&amp;gt;&#039;);&lt;br /&gt;
            });&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        $(document).on(&#039;click&#039;, &#039;#mip-save&#039;, function() {&lt;br /&gt;
            // CEK IZIN: Tolak user biasa&lt;br /&gt;
            if (!isAdmin) {&lt;br /&gt;
                showBoxNotif(&#039;Suntingan anda tidak di terbitkan&#039;, &#039;Halaman ini dilindungi. Hanya &amp;lt;b&amp;gt;Pengurus&amp;lt;/b&amp;gt; yang memiliki otoritas untuk memodifikasi metadata ekosistem secara langsung.&#039;, &#039;error&#039;);&lt;br /&gt;
                return;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            var $btn = $(this).text(&#039;Sedang Memvalidasi...&#039;).prop(&#039;disabled&#039;, true);&lt;br /&gt;
            var api = new mw.Api();&lt;br /&gt;
            var newData = {}, promises = [], invalid = [], isDel = true;&lt;br /&gt;
&lt;br /&gt;
            Object.keys(projects).forEach(p =&amp;gt; {&lt;br /&gt;
                var v = $(&#039;#in-&#039; + p).val().trim();&lt;br /&gt;
                if (v) {&lt;br /&gt;
                    isDel = false;&lt;br /&gt;
                    promises.push($.ajax({ url: projects[p].url, data: { action: &#039;query&#039;, titles: v, format: &#039;json&#039;, origin: &#039;*&#039; }, dataType: &#039;json&#039; }).done(function(res){&lt;br /&gt;
                        if (res.query.pages[&amp;quot;-1&amp;quot;]) invalid.push(projects[p].name); else newData[p] = v;&lt;br /&gt;
                    }));&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
&lt;br /&gt;
            $.when.apply($, promises).then(function() {&lt;br /&gt;
                if (invalid.length &amp;gt; 0) {&lt;br /&gt;
                    showBoxNotif(&#039;Suntingan anda tidak di terbitkan&#039;, &#039;Artikel dengan judul tersebut tidak ditemukan di basis data Mippedia cabang: &#039; + invalid.join(&#039;, &#039;) + &#039;. Periksa kembali ejaan dan kapitalisasi.&#039;, &#039;error&#039;);&lt;br /&gt;
                    $btn.text(&#039;Terbitkan&#039;).prop(&#039;disabled&#039;, false); return;&lt;br /&gt;
                }&lt;br /&gt;
                &lt;br /&gt;
                api.get({ action: &#039;query&#039;, prop: &#039;revisions&#039;, titles: dataPage, rvprop: &#039;content&#039;, formatversion: 2 }).done(function(r) {&lt;br /&gt;
                    var full = r.query.pages[0].revisions ? JSON.parse(r.query.pages[0].revisions[0].content) : {};&lt;br /&gt;
                    if (isDel) delete full[pageTitle]; else full[pageTitle] = newData;&lt;br /&gt;
                    &lt;br /&gt;
                    api.postWithEditToken({ action: &#039;edit&#039;, title: dataPage, text: JSON.stringify(full, null, 2), summary: &#039;Sync Metadata: &#039; + pageTitle })&lt;br /&gt;
                    .done(function() {&lt;br /&gt;
                        showBoxNotif(&#039;Suntingan anda berhasil di terbitkan!&#039;, &#039;Metadata entitas berhasil disinkronisasi ke seluruh jaringan ekosistem Mippedia.&#039;, &#039;success&#039;);&lt;br /&gt;
                        setTimeout(function(){ location.reload(); }, 1500);&lt;br /&gt;
                    }).fail(function(c) {&lt;br /&gt;
                        showBoxNotif(&#039;Gagal Menyimpan&#039;, &#039;Terjadi kesalahan pada token API atau koneksi server. Kode: &#039; + c, &#039;error&#039;);&lt;br /&gt;
                        $btn.text(&#039;Simpan &amp;amp; Sinkronkan Data&#039;).prop(&#039;disabled&#039;, false);&lt;br /&gt;
                    });&lt;br /&gt;
                });&lt;br /&gt;
            });&lt;br /&gt;
        });&lt;br /&gt;
&lt;br /&gt;
        $(document).on(&#039;click&#039;, &#039;#mip-open-editor&#039;, function() { $(&#039;#mip-editor&#039;).slideToggle(); });&lt;br /&gt;
        loadLinks();&lt;br /&gt;
    });&lt;br /&gt;
})();&lt;br /&gt;
&lt;br /&gt;
(function() {&lt;br /&gt;
    // Fungsi utama suntik teks&lt;br /&gt;
    function forcePreload() {&lt;br /&gt;
        var ns = mw.config.get(&#039;wgNamespaceNumber&#039;);&lt;br /&gt;
        var pageExists = mw.config.get(&#039;wgArticleId&#039;) &amp;gt; 0;&lt;br /&gt;
        &lt;br /&gt;
        // Cek Namespace Utama &amp;amp; Halaman Baru&lt;br /&gt;
        if (ns === 0 &amp;amp;&amp;amp; !pageExists) {&lt;br /&gt;
            // Cari textarea secara spesifik (Desktop &amp;amp; Mobile punya selector beda)&lt;br /&gt;
            var $textbox = $(&#039;#wpTextbox1, textarea.mw-ui-input, .editor-container textarea&#039;);&lt;br /&gt;
            &lt;br /&gt;
            if ($textbox.length &amp;amp;&amp;amp; $textbox.val().trim() === &amp;quot;&amp;quot;) {&lt;br /&gt;
                var pageName = mw.config.get(&#039;wgTitle&#039;);&lt;br /&gt;
                $textbox.val(&#039;{{Infobox umum\n|nama = &#039; + pageName + &#039;\n}}&#039;);&lt;br /&gt;
                console.log(&amp;quot;Mippedia: Infobox injected!&amp;quot;);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // 1. Jalankan pas halaman beres load&lt;br /&gt;
    $(document).ready(forcePreload);&lt;br /&gt;
&lt;br /&gt;
    // 2. Jalankan tiap ada klik (karena mobile buka editor pake klik tanpa refresh)&lt;br /&gt;
    $(document).on(&#039;click&#039;, function() {&lt;br /&gt;
        setTimeout(forcePreload, 800); // Kasih delay dikit nunggu overlay muncul&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    // 3. Pake MutationObserver buat mantau elemen yang baru muncul secara gaib&lt;br /&gt;
    var observer = new MutationObserver(function() {&lt;br /&gt;
        forcePreload();&lt;br /&gt;
    });&lt;br /&gt;
    observer.observe(document.body, { childList: true, subtree: true });&lt;br /&gt;
})();&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================&lt;br /&gt;
   🚀 MIPPEDIA DATA - CONTENT GUARD (MODIFIED FOR RELATED)&lt;br /&gt;
   ========================================================== */&lt;br /&gt;
(function() {&lt;br /&gt;
    function handleBlock(e) {&lt;br /&gt;
        var ns = mw.config.get(&#039;wgNamespaceNumber&#039;);&lt;br /&gt;
        if (ns !== 0 || mw.config.get(&#039;wgIsMainPage&#039;)) return;&lt;br /&gt;
&lt;br /&gt;
        var $el = $(e.currentTarget);&lt;br /&gt;
        &lt;br /&gt;
        if ($el.closest(&#039;.mw-parser-output&#039;).length &amp;amp;&amp;amp; $el.text().toLowerCase().includes(&#039;buat item&#039;)) {&lt;br /&gt;
            return; &lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        var $textbox = $(&#039;#wpTextbox1, .editor-container textarea, textarea.mw-ui-input&#039;);&lt;br /&gt;
        &lt;br /&gt;
        if ($textbox.length) {&lt;br /&gt;
            var content = $textbox.val() || &amp;quot;&amp;quot;;&lt;br /&gt;
            &lt;br /&gt;
            // Pengecekan: Harus ada {{Infobox ATAU setidaknya ada kode #related&lt;br /&gt;
            var hasInfobox = content.includes(&#039;{{Infobox&#039;);&lt;br /&gt;
            var hasRelated = content.includes(&#039;#related:&#039;);&lt;br /&gt;
&lt;br /&gt;
            if (!hasInfobox &amp;amp;&amp;amp; !hasRelated) {&lt;br /&gt;
                e.preventDefault();&lt;br /&gt;
                e.stopPropagation();&lt;br /&gt;
                e.stopImmediatePropagation();&lt;br /&gt;
&lt;br /&gt;
                window.alert(&amp;quot;SUNTINGAN ANDA TIDAK BISA DI TERBITKAN!\n\nMippedia Data bukan tempat untuk menulis artikel ensiklopedia, Jika anda ingin membuat artikel ensiklopedia bukan di sini tempat nya.\n&amp;quot;);&lt;br /&gt;
                return false;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    $(document).on(&#039;click mousedown touchstart&#039;, &lt;br /&gt;
        &#039;#wpSave, .editor-save, .mw-ui-button.primary, button[type=&amp;quot;submit&amp;quot;], .save-button, .header-action button&#039;, &lt;br /&gt;
        function(e) {&lt;br /&gt;
            handleBlock(e);&lt;br /&gt;
        }&lt;br /&gt;
    );&lt;br /&gt;
&lt;br /&gt;
    window.addEventListener(&#039;submit&#039;, function(e) {&lt;br /&gt;
        handleBlock(e);&lt;br /&gt;
    }, true);&lt;br /&gt;
})();&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================&lt;br /&gt;
   🛡️ MIPPEDIA CORE SYSTEM - NEURAL ENGINE V12&lt;br /&gt;
   Update: Brain Upgrade - Semantic Search &amp;amp; Anti-Duplicate&lt;br /&gt;
   Semua fitur asli (Patroli, Promo, Kategori) tetap UTUH.&lt;br /&gt;
   ========================================================== */&lt;br /&gt;
mw.hook(&#039;postEdit&#039;).add(function() {&lt;br /&gt;
    var rawUser = mw.config.get(&#039;wgUserName&#039;);&lt;br /&gt;
    var userName = rawUser ? rawUser.replace(/_/g, &#039; &#039;) : &#039;Anonim&#039;;&lt;br /&gt;
    var isPatroli = (userName === &#039;Admin&#039;);&lt;br /&gt;
    &lt;br /&gt;
    if (mw.config.get(&#039;wgNamespaceNumber&#039;) !== 0) return;&lt;br /&gt;
&lt;br /&gt;
    var api = new mw.Api();&lt;br /&gt;
    var pageTitle = mw.config.get(&#039;wgPageName&#039;).replace(/_/g, &#039; &#039;);&lt;br /&gt;
&lt;br /&gt;
    api.get({&lt;br /&gt;
        action: &#039;query&#039;,&lt;br /&gt;
        titles: pageTitle,&lt;br /&gt;
        prop: &#039;revisions|categories|links&#039;,&lt;br /&gt;
        rvprop: &#039;content&#039;,&lt;br /&gt;
        clshow: &#039;!hidden&#039;,&lt;br /&gt;
        pllimit: &#039;max&#039;&lt;br /&gt;
    }).done(function(resData) {&lt;br /&gt;
        var page = resData.query.pages[Object.keys(resData.query.pages)[0]];&lt;br /&gt;
        if (!page || !page.revisions) return;&lt;br /&gt;
&lt;br /&gt;
        var rawContent = page.revisions[0][&#039;*&#039;];&lt;br /&gt;
        var content = rawContent;&lt;br /&gt;
        var summaryParts = [];&lt;br /&gt;
&lt;br /&gt;
        // --- 2. SUPER INTELLIGENCE RELATED (UPGRADE OTAK V12) ---&lt;br /&gt;
        // Cek jumlah related saat ini&lt;br /&gt;
        var currentRelatedMatch = content.match(/\{\{#related:.*?\}\}/g) || [];&lt;br /&gt;
        &lt;br /&gt;
        // Jika kurang dari 3, kita jalankan otak pencarian canggih&lt;br /&gt;
        if (currentRelatedMatch.length &amp;lt; 3) {&lt;br /&gt;
            // Hapus yang lama dulu agar tidak ada duplikat atau &amp;quot;pake yang bekas&amp;quot;&lt;br /&gt;
            content = content.replace(/\n*\{\{#related:.*?\}\}/g, &#039;&#039;);&lt;br /&gt;
&lt;br /&gt;
            // Langkah A: Ambil kandidat dari Search Engine (Ranking Skor)&lt;br /&gt;
            api.get({&lt;br /&gt;
                action: &#039;query&#039;,&lt;br /&gt;
                list: &#039;search&#039;,&lt;br /&gt;
                srsearch: pageTitle, // Gunakan judul sebagai basis pencarian semantic&lt;br /&gt;
                srlimit: 15,&lt;br /&gt;
                srprop: &#039;&#039;&lt;br /&gt;
            }).done(function(searchRes) {&lt;br /&gt;
                var candidates = {};&lt;br /&gt;
&lt;br /&gt;
                // Masukkan hasil pencarian ke pool skor&lt;br /&gt;
                if (searchRes.query &amp;amp;&amp;amp; searchRes.query.search) {&lt;br /&gt;
                    searchRes.query.search.forEach(function(item, index) {&lt;br /&gt;
                        if (item.title === pageTitle) return;&lt;br /&gt;
                        candidates[item.title] = (15 - index); // Skor berdasarkan urutan relevansi&lt;br /&gt;
                    });&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                // Langkah B: Tambah skor jika artikel ada di daftar Link Internal&lt;br /&gt;
                if (page.links) {&lt;br /&gt;
                    page.links.forEach(function(link) {&lt;br /&gt;
                        if (link.title === pageTitle) return;&lt;br /&gt;
                        candidates[link.title] = (candidates[link.title] || 0) + 5; // Bonus skor link&lt;br /&gt;
                    });&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                // Langkah C: Urutkan berdasarkan skor tertinggi (yang paling nyambung)&lt;br /&gt;
                var sortedTitles = Object.keys(candidates).sort(function(a, b) {&lt;br /&gt;
                    return candidates[b] - candidates[a];&lt;br /&gt;
                });&lt;br /&gt;
&lt;br /&gt;
                // Ambil TOP 3&lt;br /&gt;
                var finalRelated = sortedTitles.filter(t =&amp;gt; t.indexOf(&#039;:&#039;) === -1).slice(0, 3);&lt;br /&gt;
&lt;br /&gt;
                if (finalRelated.length &amp;gt; 0) {&lt;br /&gt;
                    var relatedTags = &#039;\n\n&#039; + finalRelated.map(t =&amp;gt; &#039;{{#related: &#039; + t + &#039;}}&#039;).join(&#039;\n&#039;);&lt;br /&gt;
                    content += relatedTags;&lt;br /&gt;
                    summaryParts.push(&#039;NeuralRelated&#039;);&lt;br /&gt;
                }&lt;br /&gt;
                &lt;br /&gt;
                runPatroliAndSave();&lt;br /&gt;
            });&lt;br /&gt;
        } else {&lt;br /&gt;
            runPatroliAndSave();&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        function runPatroliAndSave() {&lt;br /&gt;
            // --- 3. PATROLI ENGINE (FITUR ASLI - TETAP BERFUNGSI) ---&lt;br /&gt;
            if (isPatroli) {&lt;br /&gt;
                var placeholders = [];&lt;br /&gt;
                // Lindungi Brankas: Template, Header, Kategori, Ref, dan Kalimat Pembuka&lt;br /&gt;
                content = content.replace(/(\{\{[\s\S]*?\}\}|==+.*?==+|\[\[Kategori:.*?\]\]|&amp;lt;ref[\s\S]*?&amp;lt;\/ref&amp;gt;|^.*?adalah)/gi, function(match) {&lt;br /&gt;
                    placeholders.push(match);&lt;br /&gt;
                    return &#039;___MIP_SKIP_&#039; + (placeholders.length - 1) + &#039;___&#039;;&lt;br /&gt;
                });&lt;br /&gt;
&lt;br /&gt;
                // Proses Auto-Link (Wajib ambil daftar AllPages dulu)&lt;br /&gt;
                api.get({ action: &#039;query&#039;, list: &#039;allpages&#039;, apnamespace: 0, aplimit: &#039;max&#039; }).done(function(apData) {&lt;br /&gt;
                    var allTitles = apData.query.allpages.map(p =&amp;gt; p.title);&lt;br /&gt;
                    var lowerTitles = allTitles.map(t =&amp;gt; t.toLowerCase());&lt;br /&gt;
&lt;br /&gt;
                    var tokens = content.split(/(\s+|\[\[|\]\])/);&lt;br /&gt;
                    var inLink = false;&lt;br /&gt;
                    for (var i = 0; i &amp;lt; tokens.length; i++) {&lt;br /&gt;
                        if (tokens[i] === &#039;[[&#039; ) { inLink = true; continue; }&lt;br /&gt;
                        if (tokens[i] === &#039;]]&#039; ) { inLink = false; continue; }&lt;br /&gt;
                        if (inLink || tokens[i].trim().length &amp;lt; 3 || tokens[i].includes(&#039;___MIP_SKIP_&#039;)) continue;&lt;br /&gt;
&lt;br /&gt;
                        var wordsInToken = tokens[i].match(/\b\w+\b/g);&lt;br /&gt;
                        if (wordsInToken) {&lt;br /&gt;
                            wordsInToken.forEach(function(word) {&lt;br /&gt;
                                var idx = lowerTitles.indexOf(word.toLowerCase());&lt;br /&gt;
                                if (idx !== -1 &amp;amp;&amp;amp; allTitles[idx] !== pageTitle) {&lt;br /&gt;
                                    tokens[i] = tokens[i].replace(new RegExp(&#039;\\b&#039; + word + &#039;\\b&#039;, &#039;g&#039;), &#039;[[&#039; + allTitles[idx] + &#039;|&#039; + word + &#039;]]&#039;);&lt;br /&gt;
                                }&lt;br /&gt;
                            });&lt;br /&gt;
                        }&lt;br /&gt;
                    }&lt;br /&gt;
                    content = tokens.join(&#039;&#039;);&lt;br /&gt;
                    &lt;br /&gt;
                    // Kembalikan dari Brankas&lt;br /&gt;
                    content = content.replace(/___MIP_SKIP_(\d+)___/g, function(match, id) { return placeholders[id]; });&lt;br /&gt;
&lt;br /&gt;
                    // Bersihkan Link Merah&lt;br /&gt;
                    content = content.replace(/\[\[([^|\]:]+)\]\]/g, function(match, p1) {&lt;br /&gt;
                        return lowerTitles.includes(p1.toLowerCase()) ? match : p1;&lt;br /&gt;
                    });&lt;br /&gt;
&lt;br /&gt;
                    saveAction();&lt;br /&gt;
                });&lt;br /&gt;
            } else {&lt;br /&gt;
                saveAction();&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        function saveAction() {&lt;br /&gt;
            // --- 4. EKSEKUSI ---&lt;br /&gt;
            if (content.trim() !== rawContent.trim()) {&lt;br /&gt;
                api.postWithToken(&#039;edit&#039;, {&lt;br /&gt;
                    action: &#039;edit&#039;,&lt;br /&gt;
                    title: pageTitle,&lt;br /&gt;
                    text: content,&lt;br /&gt;
                    summary: &#039;Mippedia Neural Engine V12: &#039; + summaryParts.join(&#039;, &#039;),&lt;br /&gt;
                    bot: true, markasbot: true&lt;br /&gt;
                }).done(function() { location.reload(); });&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    });&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================&lt;br /&gt;
   🌐 MIPPEDIA SHORTDESC - DATA CENTER (PREMIUM UI)&lt;br /&gt;
   Status: INDEPENDENT &amp;amp; REFINED VISUAL&lt;br /&gt;
   Storage: MediaWiki:ShortDesc-Data.json&lt;br /&gt;
   ========================================================== */&lt;br /&gt;
(function($, mw) {&lt;br /&gt;
    &amp;quot;use strict&amp;quot;;&lt;br /&gt;
    $(document).ready(function() {&lt;br /&gt;
        if (mw.config.get(&#039;wgNamespaceNumber&#039;) !== 0 || mw.config.get(&#039;wgIsMainPage&#039;)) return;&lt;br /&gt;
&lt;br /&gt;
        var pageTitle = mw.config.get(&#039;wgPageName&#039;);&lt;br /&gt;
        var storagePage = &#039;MediaWiki:ShortDesc-Data.json&#039;;&lt;br /&gt;
        var isAdmin = mw.config.get(&#039;wgUserGroups&#039;).some(g =&amp;gt; [&#039;sysop&#039;, &#039;interface-admin&#039;].includes(g));&lt;br /&gt;
&lt;br /&gt;
        var langs = {&lt;br /&gt;
            id: { label: &#039;Mippedia bahasa Indonesia&#039;, short: &#039;ID&#039;, color: &#039;#6366f1&#039; },&lt;br /&gt;
            en: { label: &#039;Mippedia bahasa Inggris&#039;, short: &#039;EN&#039;, color: &#039;#3b82f6&#039; },&lt;br /&gt;
            concise: { label: &#039;Mippedia bahasa Indonesia ringkas&#039;, short: &#039;CON&#039;, color: &#039;#14b8a6&#039; }&lt;br /&gt;
        };&lt;br /&gt;
&lt;br /&gt;
        // UI Box dengan Spasi dan Desain Baru&lt;br /&gt;
        var html = `&lt;br /&gt;
            &amp;lt;div id=&amp;quot;desc-manager&amp;quot; style=&amp;quot;background:#ffffff; border:1px solid #f1f5f9; border-left:4px solid #6366f1; border-radius:12px; padding:20px; margin: 20px 0 25px 0; box-shadow:0 4px 12px rgba(0,0,0,0.03); font-family: -apple-system,BlinkMacSystemFont,&#039;Segoe UI&#039;,Roboto,sans-serif;&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;div style=&amp;quot;display:flex; justify-content:space-between; align-items:center; margin-bottom:12px;&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;span style=&amp;quot;font-size:13px; font-weight:700; color:#475569; text-transform:uppercase; letter-spacing:0.5px; display:flex; align-items:center; gap:6px;&amp;quot;&amp;gt;&lt;br /&gt;
                        Label Deskripsi&lt;br /&gt;
                    &amp;lt;/span&amp;gt;&lt;br /&gt;
                    &amp;lt;span id=&amp;quot;desc-open-editor&amp;quot; style=&amp;quot;cursor:pointer; padding:5px; transition:0.2s;&amp;quot; title=&amp;quot;Edit Deskripsi&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;svg width=&amp;quot;16&amp;quot; height=&amp;quot;16&amp;quot; viewBox=&amp;quot;0 0 24 24&amp;quot; fill=&amp;quot;none&amp;quot; stroke=&amp;quot;#94a3b8&amp;quot; stroke-width=&amp;quot;2&amp;quot; stroke-linecap=&amp;quot;round&amp;quot; stroke-linejoin=&amp;quot;round&amp;quot;&amp;gt;&amp;lt;path d=&amp;quot;M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7&amp;quot;&amp;gt;&amp;lt;/path&amp;gt;&amp;lt;path d=&amp;quot;M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z&amp;quot;&amp;gt;&amp;lt;/path&amp;gt;&amp;lt;/svg&amp;gt;&lt;br /&gt;
                    &amp;lt;/span&amp;gt;&lt;br /&gt;
                &amp;lt;/div&amp;gt;&lt;br /&gt;
                &lt;br /&gt;
                &amp;lt;div id=&amp;quot;desc-status-display&amp;quot; style=&amp;quot;display:flex; flex-direction:column; gap:8px;&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;small style=&amp;quot;color:#94a3b8; font-style:italic;&amp;quot;&amp;gt;Sinkronisasi data...&amp;lt;/small&amp;gt;&lt;br /&gt;
                &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;div id=&amp;quot;desc-editor&amp;quot; style=&amp;quot;display:none; margin-top:18px; border-top:1px dashed #e2e8f0; padding-top:18px;&amp;quot;&amp;gt;&lt;br /&gt;
                    ${Object.keys(langs).map(k =&amp;gt; `&lt;br /&gt;
                        &amp;lt;div style=&amp;quot;margin-bottom:12px;&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;label style=&amp;quot;display:block; font-size:11px; font-weight:bold; color:#64748b; margin-bottom:4px;&amp;quot;&amp;gt;${langs[k].label}&amp;lt;/label&amp;gt;&lt;br /&gt;
                            &amp;lt;input type=&amp;quot;text&amp;quot; id=&amp;quot;desc-in-${k}&amp;quot; placeholder=&amp;quot;Tulis deskripsi...&amp;quot; style=&amp;quot;width:100%; padding:10px; font-size:13px; border:1px solid #e2e8f0; border-radius:8px; box-sizing:border-box; outline:none; focus:border-color:#6366f1;&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;/div&amp;gt;&lt;br /&gt;
                    `).join(&#039;&#039;)}&lt;br /&gt;
                    &amp;lt;button id=&amp;quot;desc-save&amp;quot; style=&amp;quot;width:100%; padding:12px; background:#6366f1; color:white; border:none; border-radius:8px; font-size:13px; font-weight:600; cursor:pointer; margin-top:5px;&amp;quot;&amp;gt;Terbitkan&amp;lt;/button&amp;gt;&lt;br /&gt;
                &amp;lt;/div&amp;gt;&lt;br /&gt;
            &amp;lt;/div&amp;gt;`;&lt;br /&gt;
&lt;br /&gt;
        $(&#039;.mw-parser-output&#039;).prepend(html);&lt;br /&gt;
&lt;br /&gt;
        function loadDescStatus() {&lt;br /&gt;
            new mw.Api().get({ action: &#039;query&#039;, prop: &#039;revisions&#039;, titles: storagePage, rvprop: &#039;content&#039;, formatversion: 2 }).done(function(res) {&lt;br /&gt;
                var content = res.query.pages[0].revisions ? res.query.pages[0].revisions[0].content : &amp;quot;{}&amp;quot;;&lt;br /&gt;
                var fullData = JSON.parse(content);&lt;br /&gt;
                var myData = fullData[pageTitle] || {};&lt;br /&gt;
                var $statusBox = $(&#039;#desc-status-display&#039;).empty();&lt;br /&gt;
                var foundAny = false;&lt;br /&gt;
&lt;br /&gt;
                Object.keys(langs).forEach(k =&amp;gt; {&lt;br /&gt;
                    var val = myData[k];&lt;br /&gt;
                    if (val &amp;amp;&amp;amp; val.trim() !== &amp;quot;&amp;quot;) {&lt;br /&gt;
                        foundAny = true;&lt;br /&gt;
                        $statusBox.append(`&lt;br /&gt;
                            &amp;lt;div style=&amp;quot;display:flex; align-items:center; gap:10px;&amp;quot;&amp;gt;&lt;br /&gt;
                                &amp;lt;span style=&amp;quot;background:${langs[k].color}15; color:${langs[k].color}; padding:3px 10px; border-radius:20px; font-size:10px; font-weight:800; border:1px solid ${langs[k].color}30; min-width:35px; text-align:center;&amp;quot;&amp;gt;${langs[k].short}&amp;lt;/span&amp;gt;&lt;br /&gt;
                                &amp;lt;span style=&amp;quot;font-size:13px; color:#334155; line-height:1.4;&amp;quot;&amp;gt;${val}&amp;lt;/span&amp;gt;&lt;br /&gt;
                            &amp;lt;/div&amp;gt;&lt;br /&gt;
                        `);&lt;br /&gt;
                        $(&#039;#desc-in-&#039; + k).val(val);&lt;br /&gt;
                    }&lt;br /&gt;
                });&lt;br /&gt;
&lt;br /&gt;
                if (!foundAny) {&lt;br /&gt;
                    $statusBox.html(&#039;&amp;lt;div style=&amp;quot;color:#cbd5e0; font-size:13px; background:#f8fafc; padding:10px; border-radius:8px; border:1px dashed #e2e8f0;&amp;quot;&amp;gt;Belum ada metadata deskripsi yang dikaitkan dengan entitas ini.&amp;lt;/div&amp;gt;&#039;);&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        $(document).on(&#039;click&#039;, &#039;#desc-open-editor&#039;, function() { $(&#039;#desc-editor&#039;).slideToggle(); });&lt;br /&gt;
&lt;br /&gt;
        $(document).on(&#039;click&#039;, &#039;#desc-save&#039;, function() {&lt;br /&gt;
            if (!isAdmin) { alert(&#039;Akses ditolak. Anda memerlukan izin pengurus.&#039;); return; }&lt;br /&gt;
            var $btn = $(this).text(&#039;Proses Sinkronisasi...&#039;).css(&#039;opacity&#039;,&#039;0.7&#039;);&lt;br /&gt;
            var api = new mw.Api();&lt;br /&gt;
            var newData = { id: $(&#039;#desc-in-id&#039;).val().trim(), en: $(&#039;#desc-in-en&#039;).val().trim(), concise: $(&#039;#desc-in-concise&#039;).val().trim() };&lt;br /&gt;
&lt;br /&gt;
            api.get({ action: &#039;query&#039;, prop: &#039;revisions&#039;, titles: storagePage, rvprop: &#039;content&#039;, formatversion: 2 }).done(function(r) {&lt;br /&gt;
                var json = r.query.pages[0].revisions ? JSON.parse(r.query.pages[0].revisions[0].content) : {};&lt;br /&gt;
                if (!newData.id &amp;amp;&amp;amp; !newData.en &amp;amp;&amp;amp; !newData.concise) { delete json[pageTitle]; } else { json[pageTitle] = newData; }&lt;br /&gt;
&lt;br /&gt;
                api.postWithEditToken({&lt;br /&gt;
                    action: &#039;edit&#039;,&lt;br /&gt;
                    title: storagePage,&lt;br /&gt;
                    text: JSON.stringify(json, null, 2),&lt;br /&gt;
                    summary: &#039;Update Entity Description: &#039; + pageTitle&lt;br /&gt;
                }).done(function() { location.reload(); });&lt;br /&gt;
            });&lt;br /&gt;
        });&lt;br /&gt;
&lt;br /&gt;
        loadDescStatus();&lt;br /&gt;
    });&lt;br /&gt;
})(jQuery, mediaWiki);&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================&lt;br /&gt;
   📍 MIPPEDIA DATA - ULTIMATE TEXT-TO-MAP LOCATOR&lt;br /&gt;
   Fitur: Deteksi lokasi dari teks dengan database label lengkap&lt;br /&gt;
   ========================================================== */&lt;br /&gt;
(function() {&lt;br /&gt;
    $(document).ready(function() {&lt;br /&gt;
        var locationText = &amp;quot;&amp;quot;;&lt;br /&gt;
        &lt;br /&gt;
        // --- DAFTAR LABEL SUPER LENGKAP &amp;amp; MASUK AKAL ---&lt;br /&gt;
        var locationLabels = [&lt;br /&gt;
            // Umum &amp;amp; Geografis&lt;br /&gt;
            &#039;lokasi&#039;, &#039;tempat&#039;, &#039;wilayah&#039;, &#039;daerah&#039;, &#039;koordinat&#039;, &#039;alamat&#039;,&lt;br /&gt;
            // Orang (Biografi)&lt;br /&gt;
            &#039;tempat lahir&#039;, &#039;asal&#039;, &#039;kediaman&#039;, &#039;domisili&#039;, &#039;negara asal&#039;,&lt;br /&gt;
            // Organisasi &amp;amp; Perusahaan&lt;br /&gt;
            &#039;kantor pusat&#039;, &#039;markas&#039;, &#039;cabang utama&#039;, &#039;titik operasi&#039;,&lt;br /&gt;
            // Makanan &amp;amp; Budaya&lt;br /&gt;
            &#039;asal wilayah&#039;, &#039;daerah asal&#039;, &#039;negara sumber&#039;, &#039;kawasan&#039;,&lt;br /&gt;
            // Sejarah &amp;amp; Bangunan&lt;br /&gt;
            &#039;letak&#039;, &#039;posisi&#039;, &#039;titik temu&#039;, &#039;orbit&#039;&lt;br /&gt;
        ];&lt;br /&gt;
&lt;br /&gt;
        // Jalankan pencarian di tabel data (infobox atau wikitable)&lt;br /&gt;
        $(&#039;.wikitable tr, .infobox tr, .mip-data-table tr&#039;).each(function() {&lt;br /&gt;
            var label = $(this).find(&#039;th&#039;).text().toLowerCase().trim();&lt;br /&gt;
            // Hilangkan karakter spesial kayak titik dua biar matching-nya akurat&lt;br /&gt;
            label = label.replace(/[:]/g, &#039;&#039;);&lt;br /&gt;
&lt;br /&gt;
            var isMatch = locationLabels.some(function(target) {&lt;br /&gt;
                return label === target || label.includes(target);&lt;br /&gt;
            });&lt;br /&gt;
&lt;br /&gt;
            if (isMatch) {&lt;br /&gt;
                var rawValue = $(this).find(&#039;td&#039;).text().trim();&lt;br /&gt;
                // Ambil bagian utama sebelum tanda koma, kurung, atau titik koma&lt;br /&gt;
                // Misal: &amp;quot;Bandung, Jawa Barat&amp;quot; -&amp;gt; ambil &amp;quot;Bandung&amp;quot;&lt;br /&gt;
                locationText = rawValue.split(/[,(\[;]/)[0].trim(); &lt;br /&gt;
                &lt;br /&gt;
                if (locationText.length &amp;gt; 2) return false; // Stop jika sudah ketemu yang valid&lt;br /&gt;
            }&lt;br /&gt;
        });&lt;br /&gt;
&lt;br /&gt;
        // Eksekusi Render Peta&lt;br /&gt;
        if (locationText &amp;amp;&amp;amp; locationText.length &amp;gt; 2) {&lt;br /&gt;
            var $mapWrapper = $(&#039;&amp;lt;div&amp;gt;&#039;).css({&lt;br /&gt;
                &#039;margin&#039;: &#039;15px 0&#039;,&lt;br /&gt;
                &#039;padding&#039;: &#039;12px&#039;,&lt;br /&gt;
                &#039;border&#039;: &#039;1px solid #ddd&#039;,&lt;br /&gt;
                &#039;background&#039;: &#039;#ffffff&#039;,&lt;br /&gt;
                &#039;border-radius&#039;: &#039;10px&#039;,&lt;br /&gt;
                &#039;box-shadow&#039;: &#039;0 4px 12px rgba(0,0,0,0.08)&#039;&lt;br /&gt;
            });&lt;br /&gt;
&lt;br /&gt;
            $mapWrapper.append(&#039;&amp;lt;div style=&amp;quot;font-weight:bold; font-size:0.9em; margin-bottom:10px; color:#444; display:flex; align-items:center;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                               &#039;&amp;lt;span style=&amp;quot;margin-right:8px;&amp;quot;&amp;gt;🗺️&amp;lt;/span&amp;gt;Pratinjau Lokasi : &#039; + locationText + &#039;&amp;lt;/div&amp;gt;&#039;);&lt;br /&gt;
&lt;br /&gt;
            // Embed URL dengan pencarian teks (Nominatim)&lt;br /&gt;
            var embedUrl = &amp;quot;https://www.openstreetmap.org/export/embed.html?layer=mapnik&amp;amp;q=&amp;quot; + encodeURIComponent(locationText);&lt;br /&gt;
&lt;br /&gt;
            var $iframe = $(&#039;&amp;lt;iframe&amp;gt;&#039;).attr({&lt;br /&gt;
                &#039;src&#039;: embedUrl,&lt;br /&gt;
                &#039;width&#039;: &#039;100%&#039;,&lt;br /&gt;
                &#039;height&#039;: &#039;280&#039;,&lt;br /&gt;
                &#039;frameborder&#039;: &#039;0&#039;,&lt;br /&gt;
                &#039;style&#039;: &#039;border-radius: 8px; border: 1px solid #eee;&#039;&lt;br /&gt;
            });&lt;br /&gt;
&lt;br /&gt;
            $mapWrapper.append($iframe);&lt;br /&gt;
            &lt;br /&gt;
            // Link eksternal yang lebih rapi&lt;br /&gt;
            var gMapsUrl = &amp;quot;https://www.google.com/maps/search/&amp;quot; + encodeURIComponent(locationText);&lt;br /&gt;
            $mapWrapper.append(&#039;&amp;lt;div style=&amp;quot;text-align:right; margin-top:8px;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                               &#039;&amp;lt;a href=&amp;quot;&#039; + gMapsUrl + &#039;&amp;quot; target=&amp;quot;_blank&amp;quot; style=&amp;quot;font-size:0.75em; color:#6a5acd; font-weight:bold; text-decoration:none; text-transform:uppercase; letter-spacing:0.5px;&amp;quot;&amp;gt;Buka di Google Maps →&amp;lt;/a&amp;gt;&amp;lt;/div&amp;gt;&#039;);&lt;br /&gt;
&lt;br /&gt;
            // Masukkan ke bawah section deskripsi otomatis&lt;br /&gt;
            if ($(&#039;#mip-desc-section&#039;).length) {&lt;br /&gt;
                $(&#039;#mip-desc-section&#039;).after($mapWrapper);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    });&lt;br /&gt;
})();&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://data.mippedia.org/index.php?title=MediaWiki:Common.js&amp;diff=908</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://data.mippedia.org/index.php?title=MediaWiki:Common.js&amp;diff=908"/>
		<updated>2026-06-01T17:40:35Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* ==========================================================&lt;br /&gt;
   🧠 MIPPEDIA DATA - SMART CONTEXT + AUTO THUMBNAIL (V10.1)&lt;br /&gt;
   Features: Priority Check (ID &amp;gt; EN &amp;gt; CONCISE), Auto-Age, &lt;br /&gt;
             Auto-Bold, Smart Links, Dynamic Context,&lt;br /&gt;
             Targeted Isolation (Safe for Forms), Dynamic Noindex,&lt;br /&gt;
             Aesthetic Centered Empty State + 🚀 Instant Action Hub (3 Buttons)&lt;br /&gt;
   Fixes: Mobile View Visibility &amp;amp; Custom Short URL Route (No /w/)&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
(function() {&lt;br /&gt;
    $(document).ready(function() {&lt;br /&gt;
        var $descSection = $(&#039;#mip-desc-section&#039;), $descBox = $(&#039;#mip-auto-description&#039;),&lt;br /&gt;
            $sourceInfo = $(&#039;#mip-source-info&#039;), $portalLinks = $(&#039;#mip-portal-links&#039;),&lt;br /&gt;
            $projectPortal = $(&#039;#mip-project-portal&#039;), $mainContent = $(&#039;#mw-content-text&#039;);&lt;br /&gt;
        &lt;br /&gt;
        if (!$descBox.length) return;&lt;br /&gt;
&lt;br /&gt;
        var pageTitle = mw.config.get(&#039;wgPageName&#039;).replace(/_/g, &#039; &#039;),&lt;br /&gt;
            cacheKey = &#039;mip_smart_context_thumb_&#039; + pageTitle, now = new Date().getTime(),&lt;br /&gt;
            currentYear = 2026;&lt;br /&gt;
&lt;br /&gt;
        // --- KONFIGURASI PROYEK ---&lt;br /&gt;
        var projects = [&lt;br /&gt;
            { id: &#039;id&#039;, name: &#039;Mippedia bahasa Indonesia&#039;, url: &#039;https://id.mippedia.org/api.php&#039;, base: &#039;https://id.mippedia.org/wiki/&#039;, label: &#039;Mippedia Indonesia&#039; },&lt;br /&gt;
            { id: &#039;en&#039;, name: &#039;Mippedia bahasa Inggris&#039;, url: &#039;https://en.mippedia.org/api.php&#039;, base: &#039;https://en.mippedia.org/wiki/&#039;, label: &#039;Mippedia Inggris&#039; },&lt;br /&gt;
            { id: &#039;concise&#039;, name: &#039;Mippedia bahasa Indonesia ringkas&#039;, url: &#039;https://concise.mippedia.org/api.php&#039;, base: &#039;https://concise.mippedia.org/wiki/&#039;, label: &#039;Mippedia Ringkas&#039; }&lt;br /&gt;
        ];&lt;br /&gt;
&lt;br /&gt;
        // --- 🎨 ANIMASI, HOVER EFFECT &amp;amp; RESPONSIVE STYLE ---&lt;br /&gt;
        if (!$(&#039;#mip-clean-style&#039;).length) {&lt;br /&gt;
            $(&#039;head&#039;).append(&lt;br /&gt;
                &#039;&amp;lt;style id=&amp;quot;mip-clean-style&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                    &#039;@keyframes mipFadeInUp {&#039; +&lt;br /&gt;
                        &#039;from { opacity: 0; transform: translateY(15px); }&#039; +&lt;br /&gt;
                        &#039;to { opacity: 1; transform: translateY(0); }&#039; +&lt;br /&gt;
                    &#039;}&#039; +&lt;br /&gt;
                    &#039;#mip-empty-state-notice {&#039; +&lt;br /&gt;
                        &#039;display: block !important;&#039; + /* Memaksa tampil di seluler/mobile */&lt;br /&gt;
                        &#039;animation: mipFadeInUp 0.6s cubic-bezier(0.16, 1, 0.3, 1) forwards;&#039; +&lt;br /&gt;
                    &#039;}&#039; +&lt;br /&gt;
                    &#039;.mip-btn-container {&#039; +&lt;br /&gt;
                        &#039;display: flex;&#039; +&lt;br /&gt;
                        &#039;flex-wrap: wrap;&#039; + /* Supaya otomatis turun ke bawah kalau di HP */&lt;br /&gt;
                        &#039;justify-content: center;&#039; +&lt;br /&gt;
                        &#039;margin-bottom: 30px;&#039; +&lt;br /&gt;
                        &#039;padding-top: 5px;&#039; +&lt;br /&gt;
                    &#039;}&#039; +&lt;br /&gt;
                    &#039;.mip-action-btn {&#039; +&lt;br /&gt;
                        &#039;display: inline-flex; align-items: center; justify-content: center;&#039; +&lt;br /&gt;
                        &#039;padding: 10px 18px; margin: 6px; font-size: 0.88em; font-weight: 600;&#039; +&lt;br /&gt;
                        &#039;color: #6a5acd !important; background: #ffffff; border: 1.5px solid #6a5acd;&#039; +&lt;br /&gt;
                        &#039;border-radius: 30px; text-decoration: none !important; cursor: pointer;&#039; +&lt;br /&gt;
                        &#039;transition: all 0.25s ease-in-out; box-shadow: 0 2px 5px rgba(106,92,205,0.08);&#039; +&lt;br /&gt;
                        &#039;flex-grow: 1; max-width: 220px; min-width: 150px;&#039; + /* Penyesuaian porsi tombol di HP */&lt;br /&gt;
                    &#039;}&#039; +&lt;br /&gt;
                    &#039;.mip-action-btn:hover {&#039; +&lt;br /&gt;
                        &#039;color: #ffffff !important; background: #6a5acd;&#039; +&lt;br /&gt;
                        &#039;transform: translateY(-2px); box-shadow: 0 4px 12px rgba(106,92,205,0.2);&#039; +&lt;br /&gt;
                    &#039;}&#039; +&lt;br /&gt;
                    &#039;.mip-action-btn:active {&#039; +&lt;br /&gt;
                        &#039;transform: translateY(0);&#039; +&lt;br /&gt;
                    &#039;}&#039; +&lt;br /&gt;
                &#039;&amp;lt;/style&amp;gt;&#039;&lt;br /&gt;
            );&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // --- FUNGSI TOOLS ---&lt;br /&gt;
        function applyAutoBold(text) { return text.replace(new RegExp(&#039;(&#039; + pageTitle + &#039;)&#039;, &#039;gi&#039;), &#039;&amp;lt;strong&amp;gt;$1&amp;lt;/strong&amp;gt;&#039;); }&lt;br /&gt;
        function cleanExtract(text) { return text.replace(/\[\d+\]/g, &#039;&#039;).replace(/\{\{[^}]+\}\}/g, &#039;&#039;).replace(/\(\s*\)/g, &#039;&#039;).replace(/\s\s+/g, &#039; &#039;).trim(); }&lt;br /&gt;
        &lt;br /&gt;
        function applyDynamicContext(text) {&lt;br /&gt;
            var date = new Date();&lt;br /&gt;
            var hari = [&amp;quot;Minggu&amp;quot;, &amp;quot;Senin&amp;quot;, &amp;quot;Selasa&amp;quot;, &amp;quot;Rabu&amp;quot;, &amp;quot;Kamis&amp;quot;, &amp;quot;Jumat&amp;quot;, &amp;quot;Sabtu&amp;quot;];&lt;br /&gt;
            var bulan = [&amp;quot;Januari&amp;quot;, &amp;quot;Februari&amp;quot;, &amp;quot;Maret&amp;quot;, &amp;quot;April&amp;quot;, &amp;quot;Mei&amp;quot;, &amp;quot;Juni&amp;quot;, &amp;quot;Juli&amp;quot;, &amp;quot;Agustus&amp;quot;, &amp;quot;September&amp;quot;, &amp;quot;Oktober&amp;quot;, &amp;quot;November&amp;quot;, &amp;quot;Desember&amp;quot;];&lt;br /&gt;
            var tglSkrg = hari[date.getDay()] + &amp;quot;, &amp;quot; + date.getDate() + &amp;quot; &amp;quot; + bulan[date.getMonth()] + &amp;quot; &amp;quot; + date.getFullYear();&lt;br /&gt;
            return text.replace(/(hari ini|saat ini|sekarang)/gi, &#039;$1 (&#039; + tglSkrg + &#039;)&#039;)&lt;br /&gt;
                .replace(/(\d{1,2}\s(?:Januari|Februari|Maret|April|Mei|Juni|Juli|Agustus|September|Oktober|November|Desember)\s(\d{4}))/gi, function(m, f, y) { &lt;br /&gt;
                    return f + &amp;quot; &amp;lt;span style=&#039;color: #444; font-weight: bold;&#039;&amp;gt;– usia &amp;quot; + (currentYear - parseInt(y)) + &amp;quot; tahun&amp;lt;/span&amp;gt;&amp;quot;; &lt;br /&gt;
                })&lt;br /&gt;
                .replace(/(sejak|tahun)\s(\d{4})/gi, function(m, k, y) {&lt;br /&gt;
                    var gap = currentYear - parseInt(y);&lt;br /&gt;
                    if (gap &amp;gt; 0 &amp;amp;&amp;amp; gap &amp;lt; 100) return k + &amp;quot; &amp;quot; + y + &amp;quot; &amp;lt;small style=&#039;color: #888;&#039;&amp;gt;(&amp;quot; + gap + &amp;quot; thn lalu)&amp;lt;/small&amp;gt;&amp;quot;;&lt;br /&gt;
                    return m;&lt;br /&gt;
                });&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        function applySummary(text) {&lt;br /&gt;
            var limit = 250;&lt;br /&gt;
            if (text.length &amp;lt;= limit) return &#039;&amp;lt;span&amp;gt;&#039; + text + &#039;&amp;lt;/span&amp;gt;&#039;;&lt;br /&gt;
            return &#039;&amp;lt;span&amp;gt;&#039; + text.substring(0, limit) + &#039;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;mip-dots&amp;quot;&amp;gt;... &amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;mip-more&amp;quot; style=&amp;quot;display:none;&amp;quot;&amp;gt;&#039; + text.substring(limit) + &#039;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;mip-read-btn&amp;quot; style=&amp;quot;color: #6a5acd; cursor: pointer; font-weight: bold; margin-left: 5px;&amp;quot;&amp;gt;Baca selengkapnya&amp;lt;/span&amp;gt;&#039;;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // --- SMART LINKS PORTAL ---&lt;br /&gt;
        function buildSmartLinks(currentId, validatedEnTitle) {&lt;br /&gt;
            $portalLinks.empty();&lt;br /&gt;
            var validLinks = [];&lt;br /&gt;
            &lt;br /&gt;
            var checkRequests = projects.filter(p =&amp;gt; p.id !== currentId).map(function(p) {&lt;br /&gt;
                var targetTitle = (p.id === &#039;en&#039; &amp;amp;&amp;amp; validatedEnTitle) ? validatedEnTitle : pageTitle;&lt;br /&gt;
                if (p.id === &#039;en&#039; &amp;amp;&amp;amp; !validatedEnTitle) return $.Deferred().resolve();&lt;br /&gt;
&lt;br /&gt;
                return $.ajax({ url: p.url, data: { action: &#039;query&#039;, titles: targetTitle, format: &#039;json&#039;, origin: &#039;*&#039; }, dataType: &#039;json&#039; })&lt;br /&gt;
                    .then(function(data) { &lt;br /&gt;
                        if (data.query.pages[&amp;quot;-1&amp;quot;] === undefined) { &lt;br /&gt;
                            validLinks.push(&#039;&amp;lt;a href=&amp;quot;&#039; + p.base + encodeURIComponent(targetTitle) + &#039;&amp;quot; target=&amp;quot;_blank&amp;quot; style=&amp;quot;color: #6a5acd; text-decoration: underline; font-weight: bold;&amp;quot;&amp;gt;&#039; + p.label + &#039;&amp;lt;/a&amp;gt;&#039;); &lt;br /&gt;
                        } &lt;br /&gt;
                    });&lt;br /&gt;
            });&lt;br /&gt;
&lt;br /&gt;
            $.when.apply($, checkRequests).done(function() {&lt;br /&gt;
                if (validLinks.length &amp;gt; 0) { $portalLinks.html(validLinks.join(&#039; &amp;lt;span style=&amp;quot;color:#ccc; margin: 0 5px;&amp;quot;&amp;gt;•&amp;lt;/span&amp;gt; &#039;)); $projectPortal.fadeIn(); }&lt;br /&gt;
            });&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // --- 🧠 RENDER EMPTY STATE + INTERACTIVE HUB ---&lt;br /&gt;
        function toggleMippediaLayout(isEmpty) {&lt;br /&gt;
            var $existingNotice = $(&#039;#mip-empty-state-notice&#039;);&lt;br /&gt;
            var userGroups = mw.config.get(&#039;wgUserGroups&#039;) || [];&lt;br /&gt;
            var isSysop = userGroups.indexOf(&#039;sysop&#039;) !== -1;&lt;br /&gt;
&lt;br /&gt;
            var $wikiDataElements = $mainContent.children().not(&#039;#mip-empty-state-notice, #mip-desc-section, script, style, .printfooter&#039;);&lt;br /&gt;
            var $editElements = $(&#039;#ca-edit, .mw-editsection, .wb-editsection, .mip-edit-trigger, [id*=&amp;quot;edit&amp;quot;], [class*=&amp;quot;edit-pencil&amp;quot;]&#039;);&lt;br /&gt;
            var $metaRobots = $(&#039;meta[name=&amp;quot;robots&amp;quot;]&#039;);&lt;br /&gt;
&lt;br /&gt;
            if (isEmpty) {&lt;br /&gt;
                if (!$existingNotice.length) {&lt;br /&gt;
                    // Perbaikan Jalur URL tanpa sub-folder /w/ langsung menembak Short URL root parameter&lt;br /&gt;
                    var createUrlID = &#039;https://id.mippedia.org/index.php?title=&#039; + encodeURIComponent(pageTitle) + &#039;&amp;amp;action=edit&#039;;&lt;br /&gt;
                    var createUrlEN = &#039;https://en.mippedia.org/index.php?title=&#039; + encodeURIComponent(pageTitle) + &#039;&amp;amp;action=edit&#039;;&lt;br /&gt;
                    var createUrlConcise = &#039;https://concise.mippedia.org/index.php?title=&#039; + encodeURIComponent(pageTitle) + &#039;&amp;amp;action=edit&#039;;&lt;br /&gt;
&lt;br /&gt;
                    var noticeHtml = &lt;br /&gt;
                        &#039;&amp;lt;div id=&amp;quot;mip-empty-state-notice&amp;quot; style=&amp;quot;text-align: center; max-width: 600px; margin: 40px auto; padding: 10px; font-family: -apple-system, BlinkMacSystemFont, \&#039;Segoe UI\&#039;, Roboto, sans-serif;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                            &#039;&amp;lt;!-- Ikon Warning Besar --&amp;gt;&#039; +&lt;br /&gt;
                            &#039;&amp;lt;div style=&amp;quot;margin-bottom: 22px; display: inline-block;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                &#039;&amp;lt;svg width=&amp;quot;64&amp;quot; height=&amp;quot;64&amp;quot; viewBox=&amp;quot;0 0 24 24&amp;quot; fill=&amp;quot;none&amp;quot; stroke=&amp;quot;#d9534f&amp;quot; stroke-width=&amp;quot;1.8&amp;quot; stroke-linecap=&amp;quot;round&amp;quot; stroke-linejoin=&amp;quot;round&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                    &#039;&amp;lt;path d=&amp;quot;M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z&amp;quot;&amp;gt;&amp;lt;/path&amp;gt;&#039; +&lt;br /&gt;
                                    &#039;&amp;lt;line x1=&amp;quot;12&amp;quot; y1=&amp;quot;9&amp;quot; x2=&amp;quot;12&amp;quot; y2=&amp;quot;13&amp;quot;&amp;gt;&amp;lt;/line&amp;gt;&#039; +&lt;br /&gt;
                                    &#039;&amp;lt;line x1=&amp;quot;12&amp;quot; y1=&amp;quot;17&amp;quot; x2=&amp;quot;12.01&amp;quot; y2=&amp;quot;17&amp;quot;&amp;gt;&amp;lt;/line&amp;gt;&#039; +&lt;br /&gt;
                                &#039;&amp;lt;/&#039; + &#039;svg&amp;gt;&#039; +&lt;br /&gt;
                            &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
                            &#039;&amp;lt;!-- Judul Utama --&amp;gt;&#039; +&lt;br /&gt;
                            &#039;&amp;lt;h4 style=&amp;quot;color: #2c3e50; margin: 0 0 12px 0; font-size: 1.35em; font-weight: 700; letter-spacing: -0.3px;&amp;quot;&amp;gt;Item Data Struktur Tidak Memiliki Sumber Artikel&amp;lt;/h4&amp;gt;&#039; +&lt;br /&gt;
                            &#039;&amp;lt;!-- Deskripsi Utama --&amp;gt;&#039; +&lt;br /&gt;
                            &#039;&amp;lt;p style=&amp;quot;color: #555; margin: 0 0 25px 0; font-size: 0.98em; line-height: 1.6;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                &#039;Item data ini saat ini &amp;lt;strong&amp;gt;tidak memiliki artikel rujukan satu pun&amp;lt;/strong&amp;gt; di Mippedia Indonesia, Mippedia Inggris, maupun Mippedia Indonesia Ringkas.&#039; +&lt;br /&gt;
                            &#039;&amp;lt;/p&amp;gt;&#039; +&lt;br /&gt;
                            &lt;br /&gt;
                            &#039;&amp;lt;!-- 🚀 INSTANT ACTION HUB (Flexbox-Responsive Mobile &amp;amp; URL No /w/) --&amp;gt;&#039; +&lt;br /&gt;
                            &#039;&amp;lt;div class=&amp;quot;mip-btn-container&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                &#039;&amp;lt;a href=&amp;quot;&#039; + createUrlID + &#039;&amp;quot; target=&amp;quot;_blank&amp;quot; class=&amp;quot;mip-action-btn&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                    &#039;&amp;lt;span style=&amp;quot;margin-right: 6px;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;Buat Artikel ID&#039; +&lt;br /&gt;
                                &#039;&amp;lt;/a&amp;gt;&#039; +&lt;br /&gt;
                                &#039;&amp;lt;a href=&amp;quot;&#039; + createUrlEN + &#039;&amp;quot; target=&amp;quot;_blank&amp;quot; class=&amp;quot;mip-action-btn&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                    &#039;&amp;lt;span style=&amp;quot;margin-right: 6px;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;Buat Artikel EN&#039; +&lt;br /&gt;
                                &#039;&amp;lt;/a&amp;gt;&#039; +&lt;br /&gt;
                                &#039;&amp;lt;a href=&amp;quot;&#039; + createUrlConcise + &#039;&amp;quot; target=&amp;quot;_blank&amp;quot; class=&amp;quot;mip-action-btn&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                    &#039;&amp;lt;span style=&amp;quot;margin-right: 6px;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;Buat Artikel Ringkas&#039; +&lt;br /&gt;
                                &#039;&amp;lt;/a&amp;gt;&#039; +&lt;br /&gt;
                            &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
&lt;br /&gt;
                            &#039;&amp;lt;!-- Catatan Kaki Info Kecil --&amp;gt;&#039; +&lt;br /&gt;
                            &#039;&amp;lt;div style=&amp;quot;font-size: 0.85em; color: #a0a0a0; line-height: 1.5; font-style: italic; border-top: 1px solid #f0f0f0; padding-top: 15px;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                &#039;Informasi: Item data yang tidak terikat dengan artikel ensiklopedia apa pun dalam ekosistem Mippedia akan dihapus secara otomatis oleh pengurus dalam waktu dekat.&#039; +&lt;br /&gt;
                            &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
                        &#039;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
                    $mainContent.prepend(noticeHtml);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                $wikiDataElements.hide();&lt;br /&gt;
                $descSection.hide();&lt;br /&gt;
&lt;br /&gt;
                if (!isSysop) {&lt;br /&gt;
                    $editElements.css({ &#039;pointer-events&#039;: &#039;none&#039;, &#039;opacity&#039;: &#039;0.3&#039;, &#039;cursor&#039;: &#039;not-allowed&#039; }).hide();&lt;br /&gt;
                    $(document).on(&#039;keydown.miplock&#039;, function(e) {&lt;br /&gt;
                        if (e.key.toLowerCase() === &#039;e&#039; &amp;amp;&amp;amp; !$(e.target).is(&#039;input, textarea&#039;)) {&lt;br /&gt;
                            e.preventDefault();&lt;br /&gt;
                            return false;&lt;br /&gt;
                        }&lt;br /&gt;
                    });&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                mw.config.set(&#039;wgRobotsPolicies&#039;, { &#039;index&#039;: &#039;noindex&#039;, &#039;follow&#039;: &#039;nofollow&#039; });&lt;br /&gt;
                if ($metaRobots.length) {&lt;br /&gt;
                    $metaRobots.attr(&#039;content&#039;, &#039;noindex, nofollow&#039;);&lt;br /&gt;
                } else {&lt;br /&gt;
                    $(&#039;head&#039;).append(&#039;&amp;lt;meta name=&amp;quot;robots&amp;quot; content=&amp;quot;noindex, nofollow&amp;quot;&amp;gt;&#039;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
            } else {&lt;br /&gt;
                if ($existingNotice.length) $existingNotice.remove();&lt;br /&gt;
                &lt;br /&gt;
                $wikiDataElements.show();&lt;br /&gt;
                $descSection.show();&lt;br /&gt;
&lt;br /&gt;
                if (!isSysop) {&lt;br /&gt;
                    $(document).off(&#039;keydown.miplock&#039;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                mw.config.set(&#039;wgRobotsPolicies&#039;, { &#039;index&#039;: &#039;index&#039;, &#039;follow&#039;: &#039;follow&#039; });&lt;br /&gt;
                if ($metaRobots.length) {&lt;br /&gt;
                    $metaRobots.attr(&#039;content&#039;, &#039;index, follow&#039;);&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // --- SISTEM PRIORITAS ---&lt;br /&gt;
        var cached = JSON.parse(localStorage.getItem(cacheKey) || &amp;quot;{}&amp;quot;);&lt;br /&gt;
        var globalEnTitle = cached.enTitle || &amp;quot;&amp;quot;; &lt;br /&gt;
&lt;br /&gt;
        function init() {&lt;br /&gt;
            var pPrimary = projects[0]; &lt;br /&gt;
            $.ajax({&lt;br /&gt;
                url: pPrimary.url,&lt;br /&gt;
                data: { action: &#039;query&#039;, prop: &#039;revisions|pageimages|langlinks&#039;, lllang: &#039;en&#039;, rvprop: &#039;timestamp&#039;, piprop: &#039;thumbnail&#039;, pithumbsize: 150, titles: pageTitle, format: &#039;json&#039;, origin: &#039;*&#039; },&lt;br /&gt;
                dataType: &#039;json&#039;,&lt;br /&gt;
                success: function(res) {&lt;br /&gt;
                    var pg = res.query.pages, id = Object.keys(pg)[0];&lt;br /&gt;
                    var latestTS = (id != &amp;quot;-1&amp;quot;) ? pg[id].revisions[0].timestamp : &amp;quot;0&amp;quot;;&lt;br /&gt;
                    var thumbUrl = (id != &amp;quot;-1&amp;quot; &amp;amp;&amp;amp; pg[id].thumbnail) ? pg[id].thumbnail.source : &amp;quot;&amp;quot;;&lt;br /&gt;
                    &lt;br /&gt;
                    if (id != &amp;quot;-1&amp;quot; &amp;amp;&amp;amp; pg[id].langlinks &amp;amp;&amp;amp; pg[id].langlinks[0]) {&lt;br /&gt;
                        globalEnTitle = pg[id].langlinks[0][&#039;*&#039;];&lt;br /&gt;
                    }&lt;br /&gt;
&lt;br /&gt;
                    if (cached.content &amp;amp;&amp;amp; cached.ts === latestTS &amp;amp;&amp;amp; latestTS !== &amp;quot;0&amp;quot; &amp;amp;&amp;amp; !cached.isEmpty) {&lt;br /&gt;
                        toggleMippediaLayout(false);&lt;br /&gt;
                        renderAll(cached.p, cached.content, cached.isTrans, cached.orig, cached.img, cached.customUrl, cached.enTitle);&lt;br /&gt;
                    } else { &lt;br /&gt;
                        fetchPriorityData(0, latestTS, thumbUrl); &lt;br /&gt;
                    }&lt;br /&gt;
                },&lt;br /&gt;
                error: function() { &lt;br /&gt;
                    if (cached.content) {&lt;br /&gt;
                        toggleMippediaLayout(cached.isEmpty || false);&lt;br /&gt;
                        if (!cached.isEmpty) renderAll(cached.p, cached.content, cached.isTrans, cached.orig, cached.img, cached.customUrl, cached.enTitle);&lt;br /&gt;
                    } &lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        function fetchPriorityData(index, newTS, img) {&lt;br /&gt;
            if (index &amp;gt;= projects.length) {&lt;br /&gt;
                localStorage.setItem(cacheKey, JSON.stringify({isEmpty: true, ts: newTS, content: &amp;quot;&amp;quot;}));&lt;br /&gt;
                toggleMippediaLayout(true);&lt;br /&gt;
                return;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            var p = projects[index];&lt;br /&gt;
&lt;br /&gt;
            if (p.id === &#039;en&#039;) {&lt;br /&gt;
                if (!globalEnTitle) {&lt;br /&gt;
                    $.ajax({&lt;br /&gt;
                        url: &#039;https://concise.mippedia.org/api.php&#039;,&lt;br /&gt;
                        data: { action: &#039;query&#039;, prop: &#039;langlinks&#039;, lllang: &#039;en&#039;, titles: pageTitle, format: &#039;json&#039;, origin: &#039;*&#039; },&lt;br /&gt;
                        dataType: &#039;json&#039;,&lt;br /&gt;
                        async: false, &lt;br /&gt;
                        success: function(cRes) {&lt;br /&gt;
                            var cPg = cRes.query.pages, cId = Object.keys(cPg)[0];&lt;br /&gt;
                            if (cId != &amp;quot;-1&amp;quot; &amp;amp;&amp;amp; cPg[cId].langlinks &amp;amp;&amp;amp; cPg[cId].langlinks[0]) {&lt;br /&gt;
                                globalEnTitle = cPg[cId].langlinks[0][&#039;*&#039;];&lt;br /&gt;
                            }&lt;br /&gt;
                        }&lt;br /&gt;
                    });&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                if (globalEnTitle) {&lt;br /&gt;
                    $.ajax({&lt;br /&gt;
                        url: p.url,&lt;br /&gt;
                        data: { action: &#039;query&#039;, prop: &#039;extracts&#039;, exintro: 1, explaintext: 1, titles: globalEnTitle, format: &#039;json&#039;, origin: &#039;*&#039; },&lt;br /&gt;
                        dataType: &#039;json&#039;,&lt;br /&gt;
                        success: function(data) {&lt;br /&gt;
                            var pages = data.query.pages, pageId = Object.keys(pages)[0];&lt;br /&gt;
                            if (pageId != &amp;quot;-1&amp;quot; &amp;amp;&amp;amp; pages[pageId].extract) {&lt;br /&gt;
                                var extract = cleanExtract(pages[pageId].extract);&lt;br /&gt;
                                finalize(p, extract, false, &amp;quot;&amp;quot;, newTS, img, p.base + encodeURIComponent(globalEnTitle), globalEnTitle);&lt;br /&gt;
                            } else {&lt;br /&gt;
                                fetchPriorityData(index + 1, newTS, img);&lt;br /&gt;
                            }&lt;br /&gt;
                        },&lt;br /&gt;
                        error: function() { fetchPriorityData(index + 1, newTS, img); }&lt;br /&gt;
                    });&lt;br /&gt;
                } else {&lt;br /&gt;
                    fetchPriorityData(index + 1, newTS, img);&lt;br /&gt;
                }&lt;br /&gt;
            } else {&lt;br /&gt;
                $.ajax({&lt;br /&gt;
                    url: p.url,&lt;br /&gt;
                    data: { action: &#039;query&#039;, prop: &#039;extracts&#039;, exintro: 1, explaintext: 1, titles: pageTitle, format: &#039;json&#039;, origin: &#039;*&#039; },&lt;br /&gt;
                    dataType: &#039;json&#039;,&lt;br /&gt;
                    success: function(data) {&lt;br /&gt;
                        var pages = data.query.pages, pageId = Object.keys(pages)[0];&lt;br /&gt;
                        if (pageId != &amp;quot;-1&amp;quot; &amp;amp;&amp;amp; pages[pageId].extract) {&lt;br /&gt;
                            var extract = cleanExtract(pages[pageId].extract);&lt;br /&gt;
                            finalize(p, extract, false, &amp;quot;&amp;quot;, newTS, img, p.base + encodeURIComponent(pageTitle), globalEnTitle); &lt;br /&gt;
                        } else {&lt;br /&gt;
                            fetchPriorityData(index + 1, newTS, img);&lt;br /&gt;
                        }&lt;br /&gt;
                    },&lt;br /&gt;
                    error: function() { fetchPriorityData(index + 1, newTS, img); }&lt;br /&gt;
                });&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        function finalize(p, c, t, o, ts, img, customUrl, enTitle) {&lt;br /&gt;
            localStorage.setItem(cacheKey, JSON.stringify({isEmpty: false, p:p, content:c, isTrans:t, orig:o, ts:ts, img:img, customUrl: customUrl, enTitle: enTitle}));&lt;br /&gt;
            toggleMippediaLayout(false); &lt;br /&gt;
            renderAll(p, c, t, o, img, customUrl, enTitle);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        function renderAll(p, currentText, isTranslated, originalText, img, customUrl, enTitle) {&lt;br /&gt;
            var processedText = applyAutoBold(applyDynamicContext(currentText));&lt;br /&gt;
            var thumbHtml = img ? &#039;&amp;lt;div style=&amp;quot;float: right; margin-left: 15px; margin-bottom: 10px; border: 1px solid #ddd; padding: 3px; background: #fff; border-radius: 4px; box-shadow: 0 2px 4px rgba(0,0,0,0.1);&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;&#039;+img+&#039;&amp;quot; style=&amp;quot;max-width: 100px; display: block; height: auto;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039; : &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
            if (!$mainContent.find(&#039;#mip-desc-section&#039;).length) {&lt;br /&gt;
                $mainContent.prepend($descSection);&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            $descSection.show();&lt;br /&gt;
            $descBox.show().html(thumbHtml + applySummary(processedText) + &#039;&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;);&lt;br /&gt;
            &lt;br /&gt;
            var targetLink = customUrl ? customUrl : p.base + encodeURIComponent(pageTitle);&lt;br /&gt;
            var footer = &#039;&amp;lt;div style=&amp;quot;font-size: 0.9em; color: #777;&amp;quot;&amp;gt;Sumber : &amp;lt;a href=&amp;quot;&#039; + targetLink + &#039;&amp;quot; target=&amp;quot;_blank&amp;quot; style=&amp;quot;color: #6a5acd; font-weight: bold; text-decoration: none;&amp;quot;&amp;gt;&#039; + p.name + &#039;.&amp;lt;/a&amp;gt;&#039;;&lt;br /&gt;
            if (isTranslated) { footer += &#039;&amp;lt;br&amp;gt;&amp;lt;span style=&amp;quot;font-size: 0.85em; font-style: italic;&amp;quot;&amp;gt;(Diterjemahkan secara otomatis)&amp;lt;/span&amp;gt; &amp;lt;span id=&amp;quot;mip-toggle-orig&amp;quot; style=&amp;quot;color: #6a5acd; cursor: pointer; text-decoration: underline; margin-left: 5px;&amp;quot;&amp;gt;Tampilkan versi asli&amp;lt;/span&amp;gt;&#039;; }&lt;br /&gt;
            $sourceInfo.show().html(footer);&lt;br /&gt;
            &lt;br /&gt;
            buildSmartLinks(p.id, enTitle);&lt;br /&gt;
            &lt;br /&gt;
            $(document).off(&#039;click&#039;, &#039;.mip-read-btn&#039;).on(&#039;click&#039;, &#039;.mip-read-btn&#039;, function() { $(this).hide(); $(&#039;.mip-dots&#039;).hide(); $(&#039;.mip-more&#039;).fadeIn(); });&lt;br /&gt;
            $(document).off(&#039;click&#039;, &#039;#mip-toggle-orig&#039;).on(&#039;click&#039;, &#039;#mip-toggle-orig&#039;, function() {&lt;br /&gt;
                var isOrig = ($(this).text() === &#039;Tampilkan versi asli&#039;);&lt;br /&gt;
                var textToDisplay = applyAutoBold(applyDynamicContext(isOrig ? originalText : currentText));&lt;br /&gt;
                $descBox.html(thumbHtml + applySummary(textToDisplay) + &#039;&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;);&lt;br /&gt;
                $(this).text(isOrig ? &#039;Tampilkan terjemahan&#039; : &#039;Tampilkan versi asli&#039;);&lt;br /&gt;
            });&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        init();&lt;br /&gt;
    });&lt;br /&gt;
})();&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================&lt;br /&gt;
   🚀 MIPPEDIA DATA - CORE SYSTEM (ULTIMATE BUNDLE)&lt;br /&gt;
   Status: FINAL &amp;amp; REVISED (Visual Fix + Permission Logic)&lt;br /&gt;
   Fix: Mobile Responsive Notification Position&lt;br /&gt;
   ========================================================== */&lt;br /&gt;
&lt;br /&gt;
(function() {&lt;br /&gt;
    $(document).ready(function() {&lt;br /&gt;
        // --- 1. FILTER GLOBAL (Namespace 0 &amp;amp; Bukan Halaman Utama) ---&lt;br /&gt;
        if (mw.config.get(&#039;wgNamespaceNumber&#039;) !== 0 || &lt;br /&gt;
            mw.config.get(&#039;wgIsMainPage&#039;) || &lt;br /&gt;
            mw.config.get(&#039;wgAction&#039;) !== &#039;view&#039;) return;&lt;br /&gt;
&lt;br /&gt;
        var pageTitle = mw.config.get(&#039;wgPageName&#039;);&lt;br /&gt;
        var dataPage = &#039;MediaWiki:Sitelinks-Data.json&#039;;&lt;br /&gt;
        var userGroups = mw.config.get(&#039;wgUserGroups&#039;);&lt;br /&gt;
        var isAdmin = userGroups.includes(&#039;sysop&#039;) || userGroups.includes(&#039;interface-admin&#039;);&lt;br /&gt;
&lt;br /&gt;
        var projects = {&lt;br /&gt;
            &#039;id&#039;: { name: &#039;ID&#039;, url: &#039;https://id.mippedia.org/api.php&#039;, base: &#039;https://id.mippedia.org/wiki/&#039;, color: &#039;#6a5acd&#039; },&lt;br /&gt;
            &#039;en&#039;: { name: &#039;EN&#039;, url: &#039;https://en.mippedia.org/api.php&#039;, base: &#039;https://en.mippedia.org/wiki/&#039;, color: &#039;#4169e1&#039; },&lt;br /&gt;
            &#039;concise&#039;: { name: &#039;Concise&#039;, url: &#039;https://concise.mippedia.org/api.php&#039;, base: &#039;https://concise.mippedia.org/wiki/&#039;, color: &#039;#20b2aa&#039; }&lt;br /&gt;
        };&lt;br /&gt;
&lt;br /&gt;
        // --- 2. KOTAK NOTIFIKASI INFORMASI MODERN (FIXED MOBILE POSITION) ---&lt;br /&gt;
        function showBoxNotif(title, msg, type) {&lt;br /&gt;
            $(&#039;.mip-box-notif&#039;).remove();&lt;br /&gt;
            var theme = type === &#039;success&#039; ? {bg:&#039;#e6fffa&#039;, border:&#039;#38b2ac&#039;, text:&#039;#234e52&#039;, icon:&#039;&#039;} : &lt;br /&gt;
                        {bg:&#039;#fff5f5&#039;, border:&#039;#f56565&#039;, text:&#039;#742a2a&#039;, icon:&#039;&#039;};&lt;br /&gt;
            &lt;br /&gt;
            // Logika CSS Responsif untuk posisi&lt;br /&gt;
            var isMobile = window.innerWidth &amp;lt;= 768;&lt;br /&gt;
            var desktopStyle = &amp;quot;top:25px; right:25px; width:350px;&amp;quot;;&lt;br /&gt;
            var mobileStyle = &amp;quot;top:15px; left:50%; transform:translateX(-50%); width:90%; max-width:400px;&amp;quot;;&lt;br /&gt;
            var finalPos = isMobile ? mobileStyle : desktopStyle;&lt;br /&gt;
&lt;br /&gt;
            var $notif = $(&#039;&amp;lt;div class=&amp;quot;mip-box-notif&amp;quot; style=&amp;quot;position:fixed; &#039; + finalPos + &#039; background:&#039;+theme.bg+&#039;; border-left:6px solid &#039;+theme.border+&#039;; padding:18px; z-index:10001; border-radius:12px; box-shadow:0 15px 35px rgba(0,0,0,0.2); font-family:sans-serif; animation:mipSlideIn 0.4s ease-out;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                &#039;&amp;lt;div style=&amp;quot;display:flex; align-items:center; gap:12px; margin-bottom:8px;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                    &#039;&amp;lt;span style=&amp;quot;font-size:20px;&amp;quot;&amp;gt;&#039;+theme.icon+&#039;&amp;lt;/span&amp;gt;&#039; +&lt;br /&gt;
                    &#039;&amp;lt;strong style=&amp;quot;color:&#039;+theme.text+&#039;; font-size:15px; letter-spacing:-0.3px;&amp;quot;&amp;gt;&#039;+title+&#039;&amp;lt;/strong&amp;gt;&#039; +&lt;br /&gt;
                &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
                &#039;&amp;lt;p style=&amp;quot;margin:0; font-size:13px; color:&#039;+theme.text+&#039;; line-height:1.6; opacity:0.9;&amp;quot;&amp;gt;&#039;+msg+&#039;&amp;lt;/p&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;/div&amp;gt;&#039;).appendTo(&#039;body&#039;);&lt;br /&gt;
&lt;br /&gt;
            setTimeout(function() { $notif.fadeOut(function(){ $(this).remove(); }); }, 5500);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // --- 3. UI GENERATOR (DIPERTEBAL) ---&lt;br /&gt;
&lt;br /&gt;
      // A. Header Pro&lt;br /&gt;
        var headerHtml = &#039;&amp;lt;div id=&amp;quot;mip-header&amp;quot; style=&amp;quot;background:#f8f9fa; border:1px solid #ddd; border-left:6px solid #6a5acd; padding:18px; margin-bottom:25px; border-radius:6px; box-shadow:inset 0 0 10px rgba(0,0,0,0.02);&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;div style=&amp;quot;display:flex; align-items:center; gap:10px; margin-bottom:8px;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;span style=&amp;quot;background:#6a5acd; color:white; padding:3px 10px; border-radius:4px; font-size:11px; font-weight:bold; text-transform:uppercase; letter-spacing:0.5px;&amp;quot;&amp;gt;Basis Data Terstruktur&amp;lt;/span&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;strong style=&amp;quot;color:#111; font-size:16px;&amp;quot;&amp;gt;&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;p style=&amp;quot;margin:0; font-size:13px; color:#444; line-height:1.6;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
            &#039;Halaman ini adalah metadata entitas repositori pusat yang disinkronisasi secara otomatis lintas ekosistem. &#039; +&lt;br /&gt;
            &#039;Informasi di bawah ini bersifat teknis dan bebas digunakan sebagai referensi data terbuka bagi semua orang di seluruh dunia berdasarkan lisensi atribusi yang sesuai.&#039; +&lt;br /&gt;
            &#039;&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
        // B. Connector Box&lt;br /&gt;
        var editBtn = &#039;&amp;lt;span id=&amp;quot;mip-open-editor&amp;quot; style=&amp;quot;cursor:pointer; font-size:20px; color:#6a5acd; opacity:0.8; transition:0.3s;&amp;quot; onmouseover=&amp;quot;this.style.opacity=1&amp;quot; onmouseout=&amp;quot;this.style.opacity=0.8&amp;quot;&amp;gt;✎&amp;lt;/span&amp;gt;&#039;;&lt;br /&gt;
        var connectorHtml = &#039;&amp;lt;div id=&amp;quot;mip-connector&amp;quot; style=&amp;quot;background:#fff; border:1px solid #e2e8f0; border-radius:16px; padding:22px; margin-top:30px; box-shadow:0 10px 25px rgba(0,0,0,0.04);&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;div style=&amp;quot;display:flex; justify-content:space-between; align-items:center; margin-bottom:20px;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;strong style=&amp;quot;font-size:15px; color:#1a202c; display:flex; align-items:center; gap:8px;&amp;quot;&amp;gt;ID situs&amp;lt;/strong&amp;gt;&#039;+editBtn+&#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;div id=&amp;quot;mip-display&amp;quot; style=&amp;quot;display:flex; gap:12px; flex-wrap:wrap;&amp;quot;&amp;gt;&amp;lt;small style=&amp;quot;color:#a0aec0;&amp;quot;&amp;gt;Mensinkronisasi basis data...&amp;lt;/small&amp;gt;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;div id=&amp;quot;mip-editor&amp;quot; style=&amp;quot;display:none; margin-top:20px; border-top:2px solid #f7fafc; padding-top:20px;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                Object.keys(projects).map(p =&amp;gt; &#039;&amp;lt;div style=&amp;quot;margin-bottom:12px; display:flex; gap:10px;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;width:75px; font-size:11px; font-weight:bold; background:#edf2f7; display:flex; align-items:center; justify-content:center; border-radius:8px; color:#4a5568;&amp;quot;&amp;gt;&#039;+projects[p].name+&#039;&amp;lt;/span&amp;gt;&amp;lt;input type=&amp;quot;text&amp;quot; id=&amp;quot;in-&#039;+p+&#039;&amp;quot; placeholder=&amp;quot;Judul artikel di &#039;+projects[p].name+&#039;...&amp;quot; style=&amp;quot;flex:1; padding:10px; font-size:13px; border:1.5px solid #e2e8f0; border-radius:10px; outline:none; transition:0.2s;&amp;quot; onfocus=&amp;quot;this.style.borderColor=\&#039;#6a5acd\&#039;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;).join(&#039;&#039;) +&lt;br /&gt;
                &#039;&amp;lt;button id=&amp;quot;mip-save&amp;quot; style=&amp;quot;width:100%; padding:14px; background:#6a5acd; color:white; border:none; border-radius:12px; font-size:14px; font-weight:bold; cursor:pointer; box-shadow:0 4px 12px rgba(106,90,205,0.3); transition:0.3s;&amp;quot;&amp;gt;Terbitkan&amp;lt;/button&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
        // C. Footer Lisensi Lengkap&lt;br /&gt;
        var footerHtml = &#039;&amp;lt;div id=&amp;quot;mip-footer&amp;quot; style=&amp;quot;background:#fafafa; border:1px solid #eee; border-radius:10px; padding:20px; margin-top:30px; text-align:center;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;div style=&amp;quot;font-size:11px; color:#718096; font-weight:800; text-transform:uppercase; letter-spacing:1px; margin-bottom:10px;&amp;quot;&amp;gt;Lisensi, Atribusi &amp;amp; Penggunaan Data&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;p style=&amp;quot;margin:0 0 10px; font-size:13px; color:#4a5568; line-height:1.6;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
            &#039;Seluruh data terstruktur yang tersaji dalam repositori ini merupakan milik publik dan tersedia di bawah lisensi resmi &#039; +&lt;br /&gt;
            &#039;&amp;lt;a href=&amp;quot;https://creativecommons.org/licenses/by-sa/4.0/&amp;quot; target=&amp;quot;_blank&amp;quot; style=&amp;quot;color:#6a5acd; text-decoration:none; font-weight:700;&amp;quot;&amp;gt;Creative Commons Attribution-ShareAlike 4.0 International&amp;lt;/a&amp;gt;.&#039; +&lt;br /&gt;
            &#039;&amp;lt;/p&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;p style=&amp;quot;margin:0; font-size:12px; color:#a0aec0;&amp;quot;&amp;gt;Akses API dan penggunaan data secara massal wajib mencantumkan atribusi kepada &amp;lt;strong&amp;gt;Mippedia Community&amp;lt;/strong&amp;gt; selaku pengelola proyek.&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
        // Injeksi&lt;br /&gt;
        $(&#039;#mw-content-text&#039;).prepend(headerHtml);&lt;br /&gt;
        $(&#039;#mw-content-text&#039;).append(connectorHtml).append(footerHtml);&lt;br /&gt;
&lt;br /&gt;
        // --- 4. LOGIC ENGINE ---&lt;br /&gt;
        function loadLinks() {&lt;br /&gt;
            new mw.Api().get({ action: &#039;query&#039;, prop: &#039;revisions&#039;, titles: dataPage, rvprop: &#039;content&#039;, formatversion: 2 }).done(function(d) {&lt;br /&gt;
                var json = d.query.pages[0].revisions ? JSON.parse(d.query.pages[0].revisions[0].content) : {};&lt;br /&gt;
                var data = json[pageTitle] || {};&lt;br /&gt;
                var $box = $(&#039;#mip-display&#039;).empty();&lt;br /&gt;
                var found = false;&lt;br /&gt;
                Object.keys(projects).forEach(p =&amp;gt; {&lt;br /&gt;
                    if (data[p]) {&lt;br /&gt;
                        found = true;&lt;br /&gt;
                        $box.append(&#039;&amp;lt;a style=&amp;quot;background:&#039;+projects[p].color+&#039;; color:white; padding:8px 16px; border-radius:10px; font-size:12px; font-weight:bold; text-decoration:none; border-bottom:3px solid rgba(0,0,0,0.15);&amp;quot; href=&amp;quot;&#039;+projects[p].base+encodeURIComponent(data[p])+&#039;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Mippedia &#039;+projects[p].name+&#039;: &#039;+data[p]+&#039;&amp;lt;/a&amp;gt;&#039;);&lt;br /&gt;
                        $(&#039;#in-&#039; + p).val(data[p]);&lt;br /&gt;
                    }&lt;br /&gt;
                });&lt;br /&gt;
                if (!found) $box.html(&#039;&amp;lt;em style=&amp;quot;color:#cbd5e0; font-size:13px;&amp;quot;&amp;gt;Entitas ini belum terhubung ke cabang Mippedia manapun.&amp;lt;/em&amp;gt;&#039;);&lt;br /&gt;
            });&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        $(document).on(&#039;click&#039;, &#039;#mip-save&#039;, function() {&lt;br /&gt;
            // CEK IZIN: Tolak user biasa&lt;br /&gt;
            if (!isAdmin) {&lt;br /&gt;
                showBoxNotif(&#039;Suntingan anda tidak di terbitkan&#039;, &#039;Halaman ini dilindungi. Hanya &amp;lt;b&amp;gt;Pengurus&amp;lt;/b&amp;gt; yang memiliki otoritas untuk memodifikasi metadata ekosistem secara langsung.&#039;, &#039;error&#039;);&lt;br /&gt;
                return;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            var $btn = $(this).text(&#039;Sedang Memvalidasi...&#039;).prop(&#039;disabled&#039;, true);&lt;br /&gt;
            var api = new mw.Api();&lt;br /&gt;
            var newData = {}, promises = [], invalid = [], isDel = true;&lt;br /&gt;
&lt;br /&gt;
            Object.keys(projects).forEach(p =&amp;gt; {&lt;br /&gt;
                var v = $(&#039;#in-&#039; + p).val().trim();&lt;br /&gt;
                if (v) {&lt;br /&gt;
                    isDel = false;&lt;br /&gt;
                    promises.push($.ajax({ url: projects[p].url, data: { action: &#039;query&#039;, titles: v, format: &#039;json&#039;, origin: &#039;*&#039; }, dataType: &#039;json&#039; }).done(function(res){&lt;br /&gt;
                        if (res.query.pages[&amp;quot;-1&amp;quot;]) invalid.push(projects[p].name); else newData[p] = v;&lt;br /&gt;
                    }));&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
&lt;br /&gt;
            $.when.apply($, promises).then(function() {&lt;br /&gt;
                if (invalid.length &amp;gt; 0) {&lt;br /&gt;
                    showBoxNotif(&#039;Suntingan anda tidak di terbitkan&#039;, &#039;Artikel dengan judul tersebut tidak ditemukan di basis data Mippedia cabang: &#039; + invalid.join(&#039;, &#039;) + &#039;. Periksa kembali ejaan dan kapitalisasi.&#039;, &#039;error&#039;);&lt;br /&gt;
                    $btn.text(&#039;Terbitkan&#039;).prop(&#039;disabled&#039;, false); return;&lt;br /&gt;
                }&lt;br /&gt;
                &lt;br /&gt;
                api.get({ action: &#039;query&#039;, prop: &#039;revisions&#039;, titles: dataPage, rvprop: &#039;content&#039;, formatversion: 2 }).done(function(r) {&lt;br /&gt;
                    var full = r.query.pages[0].revisions ? JSON.parse(r.query.pages[0].revisions[0].content) : {};&lt;br /&gt;
                    if (isDel) delete full[pageTitle]; else full[pageTitle] = newData;&lt;br /&gt;
                    &lt;br /&gt;
                    api.postWithEditToken({ action: &#039;edit&#039;, title: dataPage, text: JSON.stringify(full, null, 2), summary: &#039;Sync Metadata: &#039; + pageTitle })&lt;br /&gt;
                    .done(function() {&lt;br /&gt;
                        showBoxNotif(&#039;Suntingan anda berhasil di terbitkan!&#039;, &#039;Metadata entitas berhasil disinkronisasi ke seluruh jaringan ekosistem Mippedia.&#039;, &#039;success&#039;);&lt;br /&gt;
                        setTimeout(function(){ location.reload(); }, 1500);&lt;br /&gt;
                    }).fail(function(c) {&lt;br /&gt;
                        showBoxNotif(&#039;Gagal Menyimpan&#039;, &#039;Terjadi kesalahan pada token API atau koneksi server. Kode: &#039; + c, &#039;error&#039;);&lt;br /&gt;
                        $btn.text(&#039;Simpan &amp;amp; Sinkronkan Data&#039;).prop(&#039;disabled&#039;, false);&lt;br /&gt;
                    });&lt;br /&gt;
                });&lt;br /&gt;
            });&lt;br /&gt;
        });&lt;br /&gt;
&lt;br /&gt;
        $(document).on(&#039;click&#039;, &#039;#mip-open-editor&#039;, function() { $(&#039;#mip-editor&#039;).slideToggle(); });&lt;br /&gt;
        loadLinks();&lt;br /&gt;
    });&lt;br /&gt;
})();&lt;br /&gt;
&lt;br /&gt;
(function() {&lt;br /&gt;
    // Fungsi utama suntik teks&lt;br /&gt;
    function forcePreload() {&lt;br /&gt;
        var ns = mw.config.get(&#039;wgNamespaceNumber&#039;);&lt;br /&gt;
        var pageExists = mw.config.get(&#039;wgArticleId&#039;) &amp;gt; 0;&lt;br /&gt;
        &lt;br /&gt;
        // Cek Namespace Utama &amp;amp; Halaman Baru&lt;br /&gt;
        if (ns === 0 &amp;amp;&amp;amp; !pageExists) {&lt;br /&gt;
            // Cari textarea secara spesifik (Desktop &amp;amp; Mobile punya selector beda)&lt;br /&gt;
            var $textbox = $(&#039;#wpTextbox1, textarea.mw-ui-input, .editor-container textarea&#039;);&lt;br /&gt;
            &lt;br /&gt;
            if ($textbox.length &amp;amp;&amp;amp; $textbox.val().trim() === &amp;quot;&amp;quot;) {&lt;br /&gt;
                var pageName = mw.config.get(&#039;wgTitle&#039;);&lt;br /&gt;
                $textbox.val(&#039;{{Infobox umum\n|nama = &#039; + pageName + &#039;\n}}&#039;);&lt;br /&gt;
                console.log(&amp;quot;Mippedia: Infobox injected!&amp;quot;);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // 1. Jalankan pas halaman beres load&lt;br /&gt;
    $(document).ready(forcePreload);&lt;br /&gt;
&lt;br /&gt;
    // 2. Jalankan tiap ada klik (karena mobile buka editor pake klik tanpa refresh)&lt;br /&gt;
    $(document).on(&#039;click&#039;, function() {&lt;br /&gt;
        setTimeout(forcePreload, 800); // Kasih delay dikit nunggu overlay muncul&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    // 3. Pake MutationObserver buat mantau elemen yang baru muncul secara gaib&lt;br /&gt;
    var observer = new MutationObserver(function() {&lt;br /&gt;
        forcePreload();&lt;br /&gt;
    });&lt;br /&gt;
    observer.observe(document.body, { childList: true, subtree: true });&lt;br /&gt;
})();&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================&lt;br /&gt;
   🚀 MIPPEDIA DATA - CONTENT GUARD (MODIFIED FOR RELATED)&lt;br /&gt;
   ========================================================== */&lt;br /&gt;
(function() {&lt;br /&gt;
    function handleBlock(e) {&lt;br /&gt;
        var ns = mw.config.get(&#039;wgNamespaceNumber&#039;);&lt;br /&gt;
        if (ns !== 0 || mw.config.get(&#039;wgIsMainPage&#039;)) return;&lt;br /&gt;
&lt;br /&gt;
        var $el = $(e.currentTarget);&lt;br /&gt;
        &lt;br /&gt;
        if ($el.closest(&#039;.mw-parser-output&#039;).length &amp;amp;&amp;amp; $el.text().toLowerCase().includes(&#039;buat item&#039;)) {&lt;br /&gt;
            return; &lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        var $textbox = $(&#039;#wpTextbox1, .editor-container textarea, textarea.mw-ui-input&#039;);&lt;br /&gt;
        &lt;br /&gt;
        if ($textbox.length) {&lt;br /&gt;
            var content = $textbox.val() || &amp;quot;&amp;quot;;&lt;br /&gt;
            &lt;br /&gt;
            // Pengecekan: Harus ada {{Infobox ATAU setidaknya ada kode #related&lt;br /&gt;
            var hasInfobox = content.includes(&#039;{{Infobox&#039;);&lt;br /&gt;
            var hasRelated = content.includes(&#039;#related:&#039;);&lt;br /&gt;
&lt;br /&gt;
            if (!hasInfobox &amp;amp;&amp;amp; !hasRelated) {&lt;br /&gt;
                e.preventDefault();&lt;br /&gt;
                e.stopPropagation();&lt;br /&gt;
                e.stopImmediatePropagation();&lt;br /&gt;
&lt;br /&gt;
                window.alert(&amp;quot;SUNTINGAN ANDA TIDAK BISA DI TERBITKAN!\n\nMippedia Data bukan tempat untuk menulis artikel ensiklopedia, Jika anda ingin membuat artikel ensiklopedia bukan di sini tempat nya.\n&amp;quot;);&lt;br /&gt;
                return false;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    $(document).on(&#039;click mousedown touchstart&#039;, &lt;br /&gt;
        &#039;#wpSave, .editor-save, .mw-ui-button.primary, button[type=&amp;quot;submit&amp;quot;], .save-button, .header-action button&#039;, &lt;br /&gt;
        function(e) {&lt;br /&gt;
            handleBlock(e);&lt;br /&gt;
        }&lt;br /&gt;
    );&lt;br /&gt;
&lt;br /&gt;
    window.addEventListener(&#039;submit&#039;, function(e) {&lt;br /&gt;
        handleBlock(e);&lt;br /&gt;
    }, true);&lt;br /&gt;
})();&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================&lt;br /&gt;
   🛡️ MIPPEDIA CORE SYSTEM - NEURAL ENGINE V12&lt;br /&gt;
   Update: Brain Upgrade - Semantic Search &amp;amp; Anti-Duplicate&lt;br /&gt;
   Semua fitur asli (Patroli, Promo, Kategori) tetap UTUH.&lt;br /&gt;
   ========================================================== */&lt;br /&gt;
mw.hook(&#039;postEdit&#039;).add(function() {&lt;br /&gt;
    var rawUser = mw.config.get(&#039;wgUserName&#039;);&lt;br /&gt;
    var userName = rawUser ? rawUser.replace(/_/g, &#039; &#039;) : &#039;Anonim&#039;;&lt;br /&gt;
    var isPatroli = (userName === &#039;Admin&#039;);&lt;br /&gt;
    &lt;br /&gt;
    if (mw.config.get(&#039;wgNamespaceNumber&#039;) !== 0) return;&lt;br /&gt;
&lt;br /&gt;
    var api = new mw.Api();&lt;br /&gt;
    var pageTitle = mw.config.get(&#039;wgPageName&#039;).replace(/_/g, &#039; &#039;);&lt;br /&gt;
&lt;br /&gt;
    api.get({&lt;br /&gt;
        action: &#039;query&#039;,&lt;br /&gt;
        titles: pageTitle,&lt;br /&gt;
        prop: &#039;revisions|categories|links&#039;,&lt;br /&gt;
        rvprop: &#039;content&#039;,&lt;br /&gt;
        clshow: &#039;!hidden&#039;,&lt;br /&gt;
        pllimit: &#039;max&#039;&lt;br /&gt;
    }).done(function(resData) {&lt;br /&gt;
        var page = resData.query.pages[Object.keys(resData.query.pages)[0]];&lt;br /&gt;
        if (!page || !page.revisions) return;&lt;br /&gt;
&lt;br /&gt;
        var rawContent = page.revisions[0][&#039;*&#039;];&lt;br /&gt;
        var content = rawContent;&lt;br /&gt;
        var summaryParts = [];&lt;br /&gt;
&lt;br /&gt;
        // --- 2. SUPER INTELLIGENCE RELATED (UPGRADE OTAK V12) ---&lt;br /&gt;
        // Cek jumlah related saat ini&lt;br /&gt;
        var currentRelatedMatch = content.match(/\{\{#related:.*?\}\}/g) || [];&lt;br /&gt;
        &lt;br /&gt;
        // Jika kurang dari 3, kita jalankan otak pencarian canggih&lt;br /&gt;
        if (currentRelatedMatch.length &amp;lt; 3) {&lt;br /&gt;
            // Hapus yang lama dulu agar tidak ada duplikat atau &amp;quot;pake yang bekas&amp;quot;&lt;br /&gt;
            content = content.replace(/\n*\{\{#related:.*?\}\}/g, &#039;&#039;);&lt;br /&gt;
&lt;br /&gt;
            // Langkah A: Ambil kandidat dari Search Engine (Ranking Skor)&lt;br /&gt;
            api.get({&lt;br /&gt;
                action: &#039;query&#039;,&lt;br /&gt;
                list: &#039;search&#039;,&lt;br /&gt;
                srsearch: pageTitle, // Gunakan judul sebagai basis pencarian semantic&lt;br /&gt;
                srlimit: 15,&lt;br /&gt;
                srprop: &#039;&#039;&lt;br /&gt;
            }).done(function(searchRes) {&lt;br /&gt;
                var candidates = {};&lt;br /&gt;
&lt;br /&gt;
                // Masukkan hasil pencarian ke pool skor&lt;br /&gt;
                if (searchRes.query &amp;amp;&amp;amp; searchRes.query.search) {&lt;br /&gt;
                    searchRes.query.search.forEach(function(item, index) {&lt;br /&gt;
                        if (item.title === pageTitle) return;&lt;br /&gt;
                        candidates[item.title] = (15 - index); // Skor berdasarkan urutan relevansi&lt;br /&gt;
                    });&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                // Langkah B: Tambah skor jika artikel ada di daftar Link Internal&lt;br /&gt;
                if (page.links) {&lt;br /&gt;
                    page.links.forEach(function(link) {&lt;br /&gt;
                        if (link.title === pageTitle) return;&lt;br /&gt;
                        candidates[link.title] = (candidates[link.title] || 0) + 5; // Bonus skor link&lt;br /&gt;
                    });&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                // Langkah C: Urutkan berdasarkan skor tertinggi (yang paling nyambung)&lt;br /&gt;
                var sortedTitles = Object.keys(candidates).sort(function(a, b) {&lt;br /&gt;
                    return candidates[b] - candidates[a];&lt;br /&gt;
                });&lt;br /&gt;
&lt;br /&gt;
                // Ambil TOP 3&lt;br /&gt;
                var finalRelated = sortedTitles.filter(t =&amp;gt; t.indexOf(&#039;:&#039;) === -1).slice(0, 3);&lt;br /&gt;
&lt;br /&gt;
                if (finalRelated.length &amp;gt; 0) {&lt;br /&gt;
                    var relatedTags = &#039;\n\n&#039; + finalRelated.map(t =&amp;gt; &#039;{{#related: &#039; + t + &#039;}}&#039;).join(&#039;\n&#039;);&lt;br /&gt;
                    content += relatedTags;&lt;br /&gt;
                    summaryParts.push(&#039;NeuralRelated&#039;);&lt;br /&gt;
                }&lt;br /&gt;
                &lt;br /&gt;
                runPatroliAndSave();&lt;br /&gt;
            });&lt;br /&gt;
        } else {&lt;br /&gt;
            runPatroliAndSave();&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        function runPatroliAndSave() {&lt;br /&gt;
            // --- 3. PATROLI ENGINE (FITUR ASLI - TETAP BERFUNGSI) ---&lt;br /&gt;
            if (isPatroli) {&lt;br /&gt;
                var placeholders = [];&lt;br /&gt;
                // Lindungi Brankas: Template, Header, Kategori, Ref, dan Kalimat Pembuka&lt;br /&gt;
                content = content.replace(/(\{\{[\s\S]*?\}\}|==+.*?==+|\[\[Kategori:.*?\]\]|&amp;lt;ref[\s\S]*?&amp;lt;\/ref&amp;gt;|^.*?adalah)/gi, function(match) {&lt;br /&gt;
                    placeholders.push(match);&lt;br /&gt;
                    return &#039;___MIP_SKIP_&#039; + (placeholders.length - 1) + &#039;___&#039;;&lt;br /&gt;
                });&lt;br /&gt;
&lt;br /&gt;
                // Proses Auto-Link (Wajib ambil daftar AllPages dulu)&lt;br /&gt;
                api.get({ action: &#039;query&#039;, list: &#039;allpages&#039;, apnamespace: 0, aplimit: &#039;max&#039; }).done(function(apData) {&lt;br /&gt;
                    var allTitles = apData.query.allpages.map(p =&amp;gt; p.title);&lt;br /&gt;
                    var lowerTitles = allTitles.map(t =&amp;gt; t.toLowerCase());&lt;br /&gt;
&lt;br /&gt;
                    var tokens = content.split(/(\s+|\[\[|\]\])/);&lt;br /&gt;
                    var inLink = false;&lt;br /&gt;
                    for (var i = 0; i &amp;lt; tokens.length; i++) {&lt;br /&gt;
                        if (tokens[i] === &#039;[[&#039; ) { inLink = true; continue; }&lt;br /&gt;
                        if (tokens[i] === &#039;]]&#039; ) { inLink = false; continue; }&lt;br /&gt;
                        if (inLink || tokens[i].trim().length &amp;lt; 3 || tokens[i].includes(&#039;___MIP_SKIP_&#039;)) continue;&lt;br /&gt;
&lt;br /&gt;
                        var wordsInToken = tokens[i].match(/\b\w+\b/g);&lt;br /&gt;
                        if (wordsInToken) {&lt;br /&gt;
                            wordsInToken.forEach(function(word) {&lt;br /&gt;
                                var idx = lowerTitles.indexOf(word.toLowerCase());&lt;br /&gt;
                                if (idx !== -1 &amp;amp;&amp;amp; allTitles[idx] !== pageTitle) {&lt;br /&gt;
                                    tokens[i] = tokens[i].replace(new RegExp(&#039;\\b&#039; + word + &#039;\\b&#039;, &#039;g&#039;), &#039;[[&#039; + allTitles[idx] + &#039;|&#039; + word + &#039;]]&#039;);&lt;br /&gt;
                                }&lt;br /&gt;
                            });&lt;br /&gt;
                        }&lt;br /&gt;
                    }&lt;br /&gt;
                    content = tokens.join(&#039;&#039;);&lt;br /&gt;
                    &lt;br /&gt;
                    // Kembalikan dari Brankas&lt;br /&gt;
                    content = content.replace(/___MIP_SKIP_(\d+)___/g, function(match, id) { return placeholders[id]; });&lt;br /&gt;
&lt;br /&gt;
                    // Bersihkan Link Merah&lt;br /&gt;
                    content = content.replace(/\[\[([^|\]:]+)\]\]/g, function(match, p1) {&lt;br /&gt;
                        return lowerTitles.includes(p1.toLowerCase()) ? match : p1;&lt;br /&gt;
                    });&lt;br /&gt;
&lt;br /&gt;
                    saveAction();&lt;br /&gt;
                });&lt;br /&gt;
            } else {&lt;br /&gt;
                saveAction();&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        function saveAction() {&lt;br /&gt;
            // --- 4. EKSEKUSI ---&lt;br /&gt;
            if (content.trim() !== rawContent.trim()) {&lt;br /&gt;
                api.postWithToken(&#039;edit&#039;, {&lt;br /&gt;
                    action: &#039;edit&#039;,&lt;br /&gt;
                    title: pageTitle,&lt;br /&gt;
                    text: content,&lt;br /&gt;
                    summary: &#039;Mippedia Neural Engine V12: &#039; + summaryParts.join(&#039;, &#039;),&lt;br /&gt;
                    bot: true, markasbot: true&lt;br /&gt;
                }).done(function() { location.reload(); });&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    });&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================&lt;br /&gt;
   🌐 MIPPEDIA SHORTDESC - DATA CENTER (PREMIUM UI)&lt;br /&gt;
   Status: INDEPENDENT &amp;amp; REFINED VISUAL&lt;br /&gt;
   Storage: MediaWiki:ShortDesc-Data.json&lt;br /&gt;
   ========================================================== */&lt;br /&gt;
(function($, mw) {&lt;br /&gt;
    &amp;quot;use strict&amp;quot;;&lt;br /&gt;
    $(document).ready(function() {&lt;br /&gt;
        if (mw.config.get(&#039;wgNamespaceNumber&#039;) !== 0 || mw.config.get(&#039;wgIsMainPage&#039;)) return;&lt;br /&gt;
&lt;br /&gt;
        var pageTitle = mw.config.get(&#039;wgPageName&#039;);&lt;br /&gt;
        var storagePage = &#039;MediaWiki:ShortDesc-Data.json&#039;;&lt;br /&gt;
        var isAdmin = mw.config.get(&#039;wgUserGroups&#039;).some(g =&amp;gt; [&#039;sysop&#039;, &#039;interface-admin&#039;].includes(g));&lt;br /&gt;
&lt;br /&gt;
        var langs = {&lt;br /&gt;
            id: { label: &#039;Mippedia bahasa Indonesia&#039;, short: &#039;ID&#039;, color: &#039;#6366f1&#039; },&lt;br /&gt;
            en: { label: &#039;Mippedia bahasa Inggris&#039;, short: &#039;EN&#039;, color: &#039;#3b82f6&#039; },&lt;br /&gt;
            concise: { label: &#039;Mippedia bahasa Indonesia ringkas&#039;, short: &#039;CON&#039;, color: &#039;#14b8a6&#039; }&lt;br /&gt;
        };&lt;br /&gt;
&lt;br /&gt;
        // UI Box dengan Spasi dan Desain Baru&lt;br /&gt;
        var html = `&lt;br /&gt;
            &amp;lt;div id=&amp;quot;desc-manager&amp;quot; style=&amp;quot;background:#ffffff; border:1px solid #f1f5f9; border-left:4px solid #6366f1; border-radius:12px; padding:20px; margin: 20px 0 25px 0; box-shadow:0 4px 12px rgba(0,0,0,0.03); font-family: -apple-system,BlinkMacSystemFont,&#039;Segoe UI&#039;,Roboto,sans-serif;&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;div style=&amp;quot;display:flex; justify-content:space-between; align-items:center; margin-bottom:12px;&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;span style=&amp;quot;font-size:13px; font-weight:700; color:#475569; text-transform:uppercase; letter-spacing:0.5px; display:flex; align-items:center; gap:6px;&amp;quot;&amp;gt;&lt;br /&gt;
                        Label Deskripsi&lt;br /&gt;
                    &amp;lt;/span&amp;gt;&lt;br /&gt;
                    &amp;lt;span id=&amp;quot;desc-open-editor&amp;quot; style=&amp;quot;cursor:pointer; padding:5px; transition:0.2s;&amp;quot; title=&amp;quot;Edit Deskripsi&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;svg width=&amp;quot;16&amp;quot; height=&amp;quot;16&amp;quot; viewBox=&amp;quot;0 0 24 24&amp;quot; fill=&amp;quot;none&amp;quot; stroke=&amp;quot;#94a3b8&amp;quot; stroke-width=&amp;quot;2&amp;quot; stroke-linecap=&amp;quot;round&amp;quot; stroke-linejoin=&amp;quot;round&amp;quot;&amp;gt;&amp;lt;path d=&amp;quot;M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7&amp;quot;&amp;gt;&amp;lt;/path&amp;gt;&amp;lt;path d=&amp;quot;M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z&amp;quot;&amp;gt;&amp;lt;/path&amp;gt;&amp;lt;/svg&amp;gt;&lt;br /&gt;
                    &amp;lt;/span&amp;gt;&lt;br /&gt;
                &amp;lt;/div&amp;gt;&lt;br /&gt;
                &lt;br /&gt;
                &amp;lt;div id=&amp;quot;desc-status-display&amp;quot; style=&amp;quot;display:flex; flex-direction:column; gap:8px;&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;small style=&amp;quot;color:#94a3b8; font-style:italic;&amp;quot;&amp;gt;Sinkronisasi data...&amp;lt;/small&amp;gt;&lt;br /&gt;
                &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;div id=&amp;quot;desc-editor&amp;quot; style=&amp;quot;display:none; margin-top:18px; border-top:1px dashed #e2e8f0; padding-top:18px;&amp;quot;&amp;gt;&lt;br /&gt;
                    ${Object.keys(langs).map(k =&amp;gt; `&lt;br /&gt;
                        &amp;lt;div style=&amp;quot;margin-bottom:12px;&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;label style=&amp;quot;display:block; font-size:11px; font-weight:bold; color:#64748b; margin-bottom:4px;&amp;quot;&amp;gt;${langs[k].label}&amp;lt;/label&amp;gt;&lt;br /&gt;
                            &amp;lt;input type=&amp;quot;text&amp;quot; id=&amp;quot;desc-in-${k}&amp;quot; placeholder=&amp;quot;Tulis deskripsi...&amp;quot; style=&amp;quot;width:100%; padding:10px; font-size:13px; border:1px solid #e2e8f0; border-radius:8px; box-sizing:border-box; outline:none; focus:border-color:#6366f1;&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;/div&amp;gt;&lt;br /&gt;
                    `).join(&#039;&#039;)}&lt;br /&gt;
                    &amp;lt;button id=&amp;quot;desc-save&amp;quot; style=&amp;quot;width:100%; padding:12px; background:#6366f1; color:white; border:none; border-radius:8px; font-size:13px; font-weight:600; cursor:pointer; margin-top:5px;&amp;quot;&amp;gt;Terbitkan&amp;lt;/button&amp;gt;&lt;br /&gt;
                &amp;lt;/div&amp;gt;&lt;br /&gt;
            &amp;lt;/div&amp;gt;`;&lt;br /&gt;
&lt;br /&gt;
        $(&#039;.mw-parser-output&#039;).prepend(html);&lt;br /&gt;
&lt;br /&gt;
        function loadDescStatus() {&lt;br /&gt;
            new mw.Api().get({ action: &#039;query&#039;, prop: &#039;revisions&#039;, titles: storagePage, rvprop: &#039;content&#039;, formatversion: 2 }).done(function(res) {&lt;br /&gt;
                var content = res.query.pages[0].revisions ? res.query.pages[0].revisions[0].content : &amp;quot;{}&amp;quot;;&lt;br /&gt;
                var fullData = JSON.parse(content);&lt;br /&gt;
                var myData = fullData[pageTitle] || {};&lt;br /&gt;
                var $statusBox = $(&#039;#desc-status-display&#039;).empty();&lt;br /&gt;
                var foundAny = false;&lt;br /&gt;
&lt;br /&gt;
                Object.keys(langs).forEach(k =&amp;gt; {&lt;br /&gt;
                    var val = myData[k];&lt;br /&gt;
                    if (val &amp;amp;&amp;amp; val.trim() !== &amp;quot;&amp;quot;) {&lt;br /&gt;
                        foundAny = true;&lt;br /&gt;
                        $statusBox.append(`&lt;br /&gt;
                            &amp;lt;div style=&amp;quot;display:flex; align-items:center; gap:10px;&amp;quot;&amp;gt;&lt;br /&gt;
                                &amp;lt;span style=&amp;quot;background:${langs[k].color}15; color:${langs[k].color}; padding:3px 10px; border-radius:20px; font-size:10px; font-weight:800; border:1px solid ${langs[k].color}30; min-width:35px; text-align:center;&amp;quot;&amp;gt;${langs[k].short}&amp;lt;/span&amp;gt;&lt;br /&gt;
                                &amp;lt;span style=&amp;quot;font-size:13px; color:#334155; line-height:1.4;&amp;quot;&amp;gt;${val}&amp;lt;/span&amp;gt;&lt;br /&gt;
                            &amp;lt;/div&amp;gt;&lt;br /&gt;
                        `);&lt;br /&gt;
                        $(&#039;#desc-in-&#039; + k).val(val);&lt;br /&gt;
                    }&lt;br /&gt;
                });&lt;br /&gt;
&lt;br /&gt;
                if (!foundAny) {&lt;br /&gt;
                    $statusBox.html(&#039;&amp;lt;div style=&amp;quot;color:#cbd5e0; font-size:13px; background:#f8fafc; padding:10px; border-radius:8px; border:1px dashed #e2e8f0;&amp;quot;&amp;gt;Belum ada metadata deskripsi yang dikaitkan dengan entitas ini.&amp;lt;/div&amp;gt;&#039;);&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        $(document).on(&#039;click&#039;, &#039;#desc-open-editor&#039;, function() { $(&#039;#desc-editor&#039;).slideToggle(); });&lt;br /&gt;
&lt;br /&gt;
        $(document).on(&#039;click&#039;, &#039;#desc-save&#039;, function() {&lt;br /&gt;
            if (!isAdmin) { alert(&#039;Akses ditolak. Anda memerlukan izin pengurus.&#039;); return; }&lt;br /&gt;
            var $btn = $(this).text(&#039;Proses Sinkronisasi...&#039;).css(&#039;opacity&#039;,&#039;0.7&#039;);&lt;br /&gt;
            var api = new mw.Api();&lt;br /&gt;
            var newData = { id: $(&#039;#desc-in-id&#039;).val().trim(), en: $(&#039;#desc-in-en&#039;).val().trim(), concise: $(&#039;#desc-in-concise&#039;).val().trim() };&lt;br /&gt;
&lt;br /&gt;
            api.get({ action: &#039;query&#039;, prop: &#039;revisions&#039;, titles: storagePage, rvprop: &#039;content&#039;, formatversion: 2 }).done(function(r) {&lt;br /&gt;
                var json = r.query.pages[0].revisions ? JSON.parse(r.query.pages[0].revisions[0].content) : {};&lt;br /&gt;
                if (!newData.id &amp;amp;&amp;amp; !newData.en &amp;amp;&amp;amp; !newData.concise) { delete json[pageTitle]; } else { json[pageTitle] = newData; }&lt;br /&gt;
&lt;br /&gt;
                api.postWithEditToken({&lt;br /&gt;
                    action: &#039;edit&#039;,&lt;br /&gt;
                    title: storagePage,&lt;br /&gt;
                    text: JSON.stringify(json, null, 2),&lt;br /&gt;
                    summary: &#039;Update Entity Description: &#039; + pageTitle&lt;br /&gt;
                }).done(function() { location.reload(); });&lt;br /&gt;
            });&lt;br /&gt;
        });&lt;br /&gt;
&lt;br /&gt;
        loadDescStatus();&lt;br /&gt;
    });&lt;br /&gt;
})(jQuery, mediaWiki);&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================&lt;br /&gt;
   📍 MIPPEDIA DATA - ULTIMATE TEXT-TO-MAP LOCATOR&lt;br /&gt;
   Fitur: Deteksi lokasi dari teks dengan database label lengkap&lt;br /&gt;
   ========================================================== */&lt;br /&gt;
(function() {&lt;br /&gt;
    $(document).ready(function() {&lt;br /&gt;
        var locationText = &amp;quot;&amp;quot;;&lt;br /&gt;
        &lt;br /&gt;
        // --- DAFTAR LABEL SUPER LENGKAP &amp;amp; MASUK AKAL ---&lt;br /&gt;
        var locationLabels = [&lt;br /&gt;
            // Umum &amp;amp; Geografis&lt;br /&gt;
            &#039;lokasi&#039;, &#039;tempat&#039;, &#039;wilayah&#039;, &#039;daerah&#039;, &#039;koordinat&#039;, &#039;alamat&#039;,&lt;br /&gt;
            // Orang (Biografi)&lt;br /&gt;
            &#039;tempat lahir&#039;, &#039;asal&#039;, &#039;kediaman&#039;, &#039;domisili&#039;, &#039;negara asal&#039;,&lt;br /&gt;
            // Organisasi &amp;amp; Perusahaan&lt;br /&gt;
            &#039;kantor pusat&#039;, &#039;markas&#039;, &#039;cabang utama&#039;, &#039;titik operasi&#039;,&lt;br /&gt;
            // Makanan &amp;amp; Budaya&lt;br /&gt;
            &#039;asal wilayah&#039;, &#039;daerah asal&#039;, &#039;negara sumber&#039;, &#039;kawasan&#039;,&lt;br /&gt;
            // Sejarah &amp;amp; Bangunan&lt;br /&gt;
            &#039;letak&#039;, &#039;posisi&#039;, &#039;titik temu&#039;, &#039;orbit&#039;&lt;br /&gt;
        ];&lt;br /&gt;
&lt;br /&gt;
        // Jalankan pencarian di tabel data (infobox atau wikitable)&lt;br /&gt;
        $(&#039;.wikitable tr, .infobox tr, .mip-data-table tr&#039;).each(function() {&lt;br /&gt;
            var label = $(this).find(&#039;th&#039;).text().toLowerCase().trim();&lt;br /&gt;
            // Hilangkan karakter spesial kayak titik dua biar matching-nya akurat&lt;br /&gt;
            label = label.replace(/[:]/g, &#039;&#039;);&lt;br /&gt;
&lt;br /&gt;
            var isMatch = locationLabels.some(function(target) {&lt;br /&gt;
                return label === target || label.includes(target);&lt;br /&gt;
            });&lt;br /&gt;
&lt;br /&gt;
            if (isMatch) {&lt;br /&gt;
                var rawValue = $(this).find(&#039;td&#039;).text().trim();&lt;br /&gt;
                // Ambil bagian utama sebelum tanda koma, kurung, atau titik koma&lt;br /&gt;
                // Misal: &amp;quot;Bandung, Jawa Barat&amp;quot; -&amp;gt; ambil &amp;quot;Bandung&amp;quot;&lt;br /&gt;
                locationText = rawValue.split(/[,(\[;]/)[0].trim(); &lt;br /&gt;
                &lt;br /&gt;
                if (locationText.length &amp;gt; 2) return false; // Stop jika sudah ketemu yang valid&lt;br /&gt;
            }&lt;br /&gt;
        });&lt;br /&gt;
&lt;br /&gt;
        // Eksekusi Render Peta&lt;br /&gt;
        if (locationText &amp;amp;&amp;amp; locationText.length &amp;gt; 2) {&lt;br /&gt;
            var $mapWrapper = $(&#039;&amp;lt;div&amp;gt;&#039;).css({&lt;br /&gt;
                &#039;margin&#039;: &#039;15px 0&#039;,&lt;br /&gt;
                &#039;padding&#039;: &#039;12px&#039;,&lt;br /&gt;
                &#039;border&#039;: &#039;1px solid #ddd&#039;,&lt;br /&gt;
                &#039;background&#039;: &#039;#ffffff&#039;,&lt;br /&gt;
                &#039;border-radius&#039;: &#039;10px&#039;,&lt;br /&gt;
                &#039;box-shadow&#039;: &#039;0 4px 12px rgba(0,0,0,0.08)&#039;&lt;br /&gt;
            });&lt;br /&gt;
&lt;br /&gt;
            $mapWrapper.append(&#039;&amp;lt;div style=&amp;quot;font-weight:bold; font-size:0.9em; margin-bottom:10px; color:#444; display:flex; align-items:center;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                               &#039;&amp;lt;span style=&amp;quot;margin-right:8px;&amp;quot;&amp;gt;🗺️&amp;lt;/span&amp;gt;Pratinjau Lokasi : &#039; + locationText + &#039;&amp;lt;/div&amp;gt;&#039;);&lt;br /&gt;
&lt;br /&gt;
            // Embed URL dengan pencarian teks (Nominatim)&lt;br /&gt;
            var embedUrl = &amp;quot;https://www.openstreetmap.org/export/embed.html?layer=mapnik&amp;amp;q=&amp;quot; + encodeURIComponent(locationText);&lt;br /&gt;
&lt;br /&gt;
            var $iframe = $(&#039;&amp;lt;iframe&amp;gt;&#039;).attr({&lt;br /&gt;
                &#039;src&#039;: embedUrl,&lt;br /&gt;
                &#039;width&#039;: &#039;100%&#039;,&lt;br /&gt;
                &#039;height&#039;: &#039;280&#039;,&lt;br /&gt;
                &#039;frameborder&#039;: &#039;0&#039;,&lt;br /&gt;
                &#039;style&#039;: &#039;border-radius: 8px; border: 1px solid #eee;&#039;&lt;br /&gt;
            });&lt;br /&gt;
&lt;br /&gt;
            $mapWrapper.append($iframe);&lt;br /&gt;
            &lt;br /&gt;
            // Link eksternal yang lebih rapi&lt;br /&gt;
            var gMapsUrl = &amp;quot;https://www.google.com/maps/search/&amp;quot; + encodeURIComponent(locationText);&lt;br /&gt;
            $mapWrapper.append(&#039;&amp;lt;div style=&amp;quot;text-align:right; margin-top:8px;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                               &#039;&amp;lt;a href=&amp;quot;&#039; + gMapsUrl + &#039;&amp;quot; target=&amp;quot;_blank&amp;quot; style=&amp;quot;font-size:0.75em; color:#6a5acd; font-weight:bold; text-decoration:none; text-transform:uppercase; letter-spacing:0.5px;&amp;quot;&amp;gt;Buka di Google Maps →&amp;lt;/a&amp;gt;&amp;lt;/div&amp;gt;&#039;);&lt;br /&gt;
&lt;br /&gt;
            // Masukkan ke bawah section deskripsi otomatis&lt;br /&gt;
            if ($(&#039;#mip-desc-section&#039;).length) {&lt;br /&gt;
                $(&#039;#mip-desc-section&#039;).after($mapWrapper);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    });&lt;br /&gt;
})();&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://data.mippedia.org/index.php?title=MediaWiki:Common.js&amp;diff=907</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://data.mippedia.org/index.php?title=MediaWiki:Common.js&amp;diff=907"/>
		<updated>2026-06-01T17:31:39Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* ==========================================================&lt;br /&gt;
   🧠 MIPPEDIA DATA - SMART CONTEXT + AUTO THUMBNAIL (V10.1)&lt;br /&gt;
   Features: Priority Check (ID &amp;gt; EN &amp;gt; CONCISE), Auto-Age, &lt;br /&gt;
             Auto-Bold, Smart Links, Dynamic Context,&lt;br /&gt;
             Targeted Isolation (Safe for Forms), Dynamic Noindex,&lt;br /&gt;
             Aesthetic Centered Empty State + 🚀 Instant Action Hub (3 Buttons)&lt;br /&gt;
   Fixes: Mobile View Visibility &amp;amp; Custom Short URL Route (No /w/)&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
(function() {&lt;br /&gt;
    $(document).ready(function() {&lt;br /&gt;
        var $descSection = $(&#039;#mip-desc-section&#039;), $descBox = $(&#039;#mip-auto-description&#039;),&lt;br /&gt;
            $sourceInfo = $(&#039;#mip-source-info&#039;), $portalLinks = $(&#039;#mip-portal-links&#039;),&lt;br /&gt;
            $projectPortal = $(&#039;#mip-project-portal&#039;), $mainContent = $(&#039;#mw-content-text&#039;);&lt;br /&gt;
        &lt;br /&gt;
        if (!$descBox.length) return;&lt;br /&gt;
&lt;br /&gt;
        var pageTitle = mw.config.get(&#039;wgPageName&#039;).replace(/_/g, &#039; &#039;),&lt;br /&gt;
            cacheKey = &#039;mip_smart_context_thumb_&#039; + pageTitle, now = new Date().getTime(),&lt;br /&gt;
            currentYear = 2026;&lt;br /&gt;
&lt;br /&gt;
        // --- KONFIGURASI PROYEK ---&lt;br /&gt;
        var projects = [&lt;br /&gt;
            { id: &#039;id&#039;, name: &#039;Mippedia bahasa Indonesia&#039;, url: &#039;https://id.mippedia.org/api.php&#039;, base: &#039;https://id.mippedia.org/wiki/&#039;, label: &#039;Mippedia Indonesia&#039; },&lt;br /&gt;
            { id: &#039;en&#039;, name: &#039;Mippedia bahasa Inggris&#039;, url: &#039;https://en.mippedia.org/api.php&#039;, base: &#039;https://en.mippedia.org/wiki/&#039;, label: &#039;Mippedia Inggris&#039; },&lt;br /&gt;
            { id: &#039;concise&#039;, name: &#039;Mippedia bahasa Indonesia ringkas&#039;, url: &#039;https://concise.mippedia.org/api.php&#039;, base: &#039;https://concise.mippedia.org/wiki/&#039;, label: &#039;Mippedia Ringkas&#039; }&lt;br /&gt;
        ];&lt;br /&gt;
&lt;br /&gt;
        // --- 🎨 ANIMASI, HOVER EFFECT &amp;amp; RESPONSIVE STYLE ---&lt;br /&gt;
        if (!$(&#039;#mip-clean-style&#039;).length) {&lt;br /&gt;
            $(&#039;head&#039;).append(&lt;br /&gt;
                &#039;&amp;lt;style id=&amp;quot;mip-clean-style&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                    &#039;@keyframes mipFadeInUp {&#039; +&lt;br /&gt;
                        &#039;from { opacity: 0; transform: translateY(15px); }&#039; +&lt;br /&gt;
                        &#039;to { opacity: 1; transform: translateY(0); }&#039; +&lt;br /&gt;
                    &#039;}&#039; +&lt;br /&gt;
                    &#039;#mip-empty-state-notice {&#039; +&lt;br /&gt;
                        &#039;display: block !important;&#039; + /* Memaksa tampil di seluler/mobile */&lt;br /&gt;
                        &#039;animation: mipFadeInUp 0.6s cubic-bezier(0.16, 1, 0.3, 1) forwards;&#039; +&lt;br /&gt;
                    &#039;}&#039; +&lt;br /&gt;
                    &#039;.mip-btn-container {&#039; +&lt;br /&gt;
                        &#039;display: flex;&#039; +&lt;br /&gt;
                        &#039;flex-wrap: wrap;&#039; + /* Supaya otomatis turun ke bawah kalau di HP */&lt;br /&gt;
                        &#039;justify-content: center;&#039; +&lt;br /&gt;
                        &#039;margin-bottom: 30px;&#039; +&lt;br /&gt;
                        &#039;padding-top: 5px;&#039; +&lt;br /&gt;
                    &#039;}&#039; +&lt;br /&gt;
                    &#039;.mip-action-btn {&#039; +&lt;br /&gt;
                        &#039;display: inline-flex; align-items: center; justify-content: center;&#039; +&lt;br /&gt;
                        &#039;padding: 10px 18px; margin: 6px; font-size: 0.88em; font-weight: 600;&#039; +&lt;br /&gt;
                        &#039;color: #6a5acd !important; background: #ffffff; border: 1.5px solid #6a5acd;&#039; +&lt;br /&gt;
                        &#039;border-radius: 30px; text-decoration: none !important; cursor: pointer;&#039; +&lt;br /&gt;
                        &#039;transition: all 0.25s ease-in-out; box-shadow: 0 2px 5px rgba(106,92,205,0.08);&#039; +&lt;br /&gt;
                        &#039;flex-grow: 1; max-width: 220px; min-width: 150px;&#039; + /* Penyesuaian porsi tombol di HP */&lt;br /&gt;
                    &#039;}&#039; +&lt;br /&gt;
                    &#039;.mip-action-btn:hover {&#039; +&lt;br /&gt;
                        &#039;color: #ffffff !important; background: #6a5acd;&#039; +&lt;br /&gt;
                        &#039;transform: translateY(-2px); box-shadow: 0 4px 12px rgba(106,92,205,0.2);&#039; +&lt;br /&gt;
                    &#039;}&#039; +&lt;br /&gt;
                    &#039;.mip-action-btn:active {&#039; +&lt;br /&gt;
                        &#039;transform: translateY(0);&#039; +&lt;br /&gt;
                    &#039;}&#039; +&lt;br /&gt;
                &#039;&amp;lt;/style&amp;gt;&#039;&lt;br /&gt;
            );&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // --- FUNGSI TOOLS ---&lt;br /&gt;
        function applyAutoBold(text) { return text.replace(new RegExp(&#039;(&#039; + pageTitle + &#039;)&#039;, &#039;gi&#039;), &#039;&amp;lt;strong&amp;gt;$1&amp;lt;/strong&amp;gt;&#039;); }&lt;br /&gt;
        function cleanExtract(text) { return text.replace(/\[\d+\]/g, &#039;&#039;).replace(/\{\{[^}]+\}\}/g, &#039;&#039;).replace(/\(\s*\)/g, &#039;&#039;).replace(/\s\s+/g, &#039; &#039;).trim(); }&lt;br /&gt;
        &lt;br /&gt;
        function applyDynamicContext(text) {&lt;br /&gt;
            var date = new Date();&lt;br /&gt;
            var hari = [&amp;quot;Minggu&amp;quot;, &amp;quot;Senin&amp;quot;, &amp;quot;Selasa&amp;quot;, &amp;quot;Rabu&amp;quot;, &amp;quot;Kamis&amp;quot;, &amp;quot;Jumat&amp;quot;, &amp;quot;Sabtu&amp;quot;];&lt;br /&gt;
            var bulan = [&amp;quot;Januari&amp;quot;, &amp;quot;Februari&amp;quot;, &amp;quot;Maret&amp;quot;, &amp;quot;April&amp;quot;, &amp;quot;Mei&amp;quot;, &amp;quot;Juni&amp;quot;, &amp;quot;Juli&amp;quot;, &amp;quot;Agustus&amp;quot;, &amp;quot;September&amp;quot;, &amp;quot;Oktober&amp;quot;, &amp;quot;November&amp;quot;, &amp;quot;Desember&amp;quot;];&lt;br /&gt;
            var tglSkrg = hari[date.getDay()] + &amp;quot;, &amp;quot; + date.getDate() + &amp;quot; &amp;quot; + bulan[date.getMonth()] + &amp;quot; &amp;quot; + date.getFullYear();&lt;br /&gt;
            return text.replace(/(hari ini|saat ini|sekarang)/gi, &#039;$1 (&#039; + tglSkrg + &#039;)&#039;)&lt;br /&gt;
                .replace(/(\d{1,2}\s(?:Januari|Februari|Maret|April|Mei|Juni|Juli|Agustus|September|Oktober|November|Desember)\s(\d{4}))/gi, function(m, f, y) { &lt;br /&gt;
                    return f + &amp;quot; &amp;lt;span style=&#039;color: #444; font-weight: bold;&#039;&amp;gt;– usia &amp;quot; + (currentYear - parseInt(y)) + &amp;quot; tahun&amp;lt;/span&amp;gt;&amp;quot;; &lt;br /&gt;
                })&lt;br /&gt;
                .replace(/(sejak|tahun)\s(\d{4})/gi, function(m, k, y) {&lt;br /&gt;
                    var gap = currentYear - parseInt(y);&lt;br /&gt;
                    if (gap &amp;gt; 0 &amp;amp;&amp;amp; gap &amp;lt; 100) return k + &amp;quot; &amp;quot; + y + &amp;quot; &amp;lt;small style=&#039;color: #888;&#039;&amp;gt;(&amp;quot; + gap + &amp;quot; thn lalu)&amp;lt;/small&amp;gt;&amp;quot;;&lt;br /&gt;
                    return m;&lt;br /&gt;
                });&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        function applySummary(text) {&lt;br /&gt;
            var limit = 250;&lt;br /&gt;
            if (text.length &amp;lt;= limit) return &#039;&amp;lt;span&amp;gt;&#039; + text + &#039;&amp;lt;/span&amp;gt;&#039;;&lt;br /&gt;
            return &#039;&amp;lt;span&amp;gt;&#039; + text.substring(0, limit) + &#039;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;mip-dots&amp;quot;&amp;gt;... &amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;mip-more&amp;quot; style=&amp;quot;display:none;&amp;quot;&amp;gt;&#039; + text.substring(limit) + &#039;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;mip-read-btn&amp;quot; style=&amp;quot;color: #6a5acd; cursor: pointer; font-weight: bold; margin-left: 5px;&amp;quot;&amp;gt;Baca selengkapnya&amp;lt;/span&amp;gt;&#039;;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // --- SMART LINKS PORTAL ---&lt;br /&gt;
        function buildSmartLinks(currentId, validatedEnTitle) {&lt;br /&gt;
            $portalLinks.empty();&lt;br /&gt;
            var validLinks = [];&lt;br /&gt;
            &lt;br /&gt;
            var checkRequests = projects.filter(p =&amp;gt; p.id !== currentId).map(function(p) {&lt;br /&gt;
                var targetTitle = (p.id === &#039;en&#039; &amp;amp;&amp;amp; validatedEnTitle) ? validatedEnTitle : pageTitle;&lt;br /&gt;
                if (p.id === &#039;en&#039; &amp;amp;&amp;amp; !validatedEnTitle) return $.Deferred().resolve();&lt;br /&gt;
&lt;br /&gt;
                return $.ajax({ url: p.url, data: { action: &#039;query&#039;, titles: targetTitle, format: &#039;json&#039;, origin: &#039;*&#039; }, dataType: &#039;json&#039; })&lt;br /&gt;
                    .then(function(data) { &lt;br /&gt;
                        if (data.query.pages[&amp;quot;-1&amp;quot;] === undefined) { &lt;br /&gt;
                            validLinks.push(&#039;&amp;lt;a href=&amp;quot;&#039; + p.base + encodeURIComponent(targetTitle) + &#039;&amp;quot; target=&amp;quot;_blank&amp;quot; style=&amp;quot;color: #6a5acd; text-decoration: underline; font-weight: bold;&amp;quot;&amp;gt;&#039; + p.label + &#039;&amp;lt;/a&amp;gt;&#039;); &lt;br /&gt;
                        } &lt;br /&gt;
                    });&lt;br /&gt;
            });&lt;br /&gt;
&lt;br /&gt;
            $.when.apply($, checkRequests).done(function() {&lt;br /&gt;
                if (validLinks.length &amp;gt; 0) { $portalLinks.html(validLinks.join(&#039; &amp;lt;span style=&amp;quot;color:#ccc; margin: 0 5px;&amp;quot;&amp;gt;•&amp;lt;/span&amp;gt; &#039;)); $projectPortal.fadeIn(); }&lt;br /&gt;
            });&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // --- 🧠 RENDER EMPTY STATE + INTERACTIVE HUB ---&lt;br /&gt;
        function toggleMippediaLayout(isEmpty) {&lt;br /&gt;
            var $existingNotice = $(&#039;#mip-empty-state-notice&#039;);&lt;br /&gt;
            var userGroups = mw.config.get(&#039;wgUserGroups&#039;) || [];&lt;br /&gt;
            var isSysop = userGroups.indexOf(&#039;sysop&#039;) !== -1;&lt;br /&gt;
&lt;br /&gt;
            var $wikiDataElements = $mainContent.children().not(&#039;#mip-empty-state-notice, #mip-desc-section, script, style, .printfooter&#039;);&lt;br /&gt;
            var $editElements = $(&#039;#ca-edit, .mw-editsection, .wb-editsection, .mip-edit-trigger, [id*=&amp;quot;edit&amp;quot;], [class*=&amp;quot;edit-pencil&amp;quot;]&#039;);&lt;br /&gt;
            var $metaRobots = $(&#039;meta[name=&amp;quot;robots&amp;quot;]&#039;);&lt;br /&gt;
&lt;br /&gt;
            if (isEmpty) {&lt;br /&gt;
                if (!$existingNotice.length) {&lt;br /&gt;
                    // Perbaikan Jalur URL tanpa sub-folder /w/ langsung menembak Short URL root parameter&lt;br /&gt;
                    var createUrlID = &#039;https://id.mippedia.org/index.php?title=&#039; + encodeURIComponent(pageTitle) + &#039;&amp;amp;action=edit&#039;;&lt;br /&gt;
                    var createUrlEN = &#039;https://en.mippedia.org/index.php?title=&#039; + encodeURIComponent(pageTitle) + &#039;&amp;amp;action=edit&#039;;&lt;br /&gt;
                    var createUrlConcise = &#039;https://concise.mippedia.org/index.php?title=&#039; + encodeURIComponent(pageTitle) + &#039;&amp;amp;action=edit&#039;;&lt;br /&gt;
&lt;br /&gt;
                    var noticeHtml = &lt;br /&gt;
                        &#039;&amp;lt;div id=&amp;quot;mip-empty-state-notice&amp;quot; style=&amp;quot;text-align: center; max-width: 600px; margin: 40px auto; padding: 10px; font-family: -apple-system, BlinkMacSystemFont, \&#039;Segoe UI\&#039;, Roboto, sans-serif;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                            &#039;&amp;lt;!-- Ikon Warning Besar --&amp;gt;&#039; +&lt;br /&gt;
                            &#039;&amp;lt;div style=&amp;quot;margin-bottom: 22px; display: inline-block;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                &#039;&amp;lt;svg width=&amp;quot;64&amp;quot; height=&amp;quot;64&amp;quot; viewBox=&amp;quot;0 0 24 24&amp;quot; fill=&amp;quot;none&amp;quot; stroke=&amp;quot;#d9534f&amp;quot; stroke-width=&amp;quot;1.8&amp;quot; stroke-linecap=&amp;quot;round&amp;quot; stroke-linejoin=&amp;quot;round&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                    &#039;&amp;lt;path d=&amp;quot;M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z&amp;quot;&amp;gt;&amp;lt;/path&amp;gt;&#039; +&lt;br /&gt;
                                    &#039;&amp;lt;line x1=&amp;quot;12&amp;quot; y1=&amp;quot;9&amp;quot; x2=&amp;quot;12&amp;quot; y2=&amp;quot;13&amp;quot;&amp;gt;&amp;lt;/line&amp;gt;&#039; +&lt;br /&gt;
                                    &#039;&amp;lt;line x1=&amp;quot;12&amp;quot; y1=&amp;quot;17&amp;quot; x2=&amp;quot;12.01&amp;quot; y2=&amp;quot;17&amp;quot;&amp;gt;&amp;lt;/line&amp;gt;&#039; +&lt;br /&gt;
                                &#039;&amp;lt;/&#039; + &#039;svg&amp;gt;&#039; +&lt;br /&gt;
                            &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
                            &#039;&amp;lt;!-- Judul Utama --&amp;gt;&#039; +&lt;br /&gt;
                            &#039;&amp;lt;h4 style=&amp;quot;color: #2c3e50; margin: 0 0 12px 0; font-size: 1.35em; font-weight: 700; letter-spacing: -0.3px;&amp;quot;&amp;gt;Item Data Tidak Memiliki Sumber Artikel&amp;lt;/h4&amp;gt;&#039; +&lt;br /&gt;
                            &#039;&amp;lt;!-- Deskripsi Utama --&amp;gt;&#039; +&lt;br /&gt;
                            &#039;&amp;lt;p style=&amp;quot;color: #555; margin: 0 0 25px 0; font-size: 0.98em; line-height: 1.6;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                &#039;Item data ini saat ini &amp;lt;strong&amp;gt;tidak memiliki artikel rujukan satu pun&amp;lt;/strong&amp;gt; di Mippedia Indonesia, Mippedia Inggris, maupun Mippedia Indonesia Ringkas.&#039; +&lt;br /&gt;
                            &#039;&amp;lt;/p&amp;gt;&#039; +&lt;br /&gt;
                            &lt;br /&gt;
                            &#039;&amp;lt;!-- 🚀 INSTANT ACTION HUB (Flexbox-Responsive Mobile &amp;amp; URL No /w/) --&amp;gt;&#039; +&lt;br /&gt;
                            &#039;&amp;lt;div class=&amp;quot;mip-btn-container&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                &#039;&amp;lt;a href=&amp;quot;&#039; + createUrlID + &#039;&amp;quot; target=&amp;quot;_blank&amp;quot; class=&amp;quot;mip-action-btn&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                    &#039;&amp;lt;span style=&amp;quot;margin-right: 6px;&amp;quot;&amp;gt;✍️&amp;lt;/span&amp;gt; Buat Artikel ID&#039; +&lt;br /&gt;
                                &#039;&amp;lt;/a&amp;gt;&#039; +&lt;br /&gt;
                                &#039;&amp;lt;a href=&amp;quot;&#039; + createUrlEN + &#039;&amp;quot; target=&amp;quot;_blank&amp;quot; class=&amp;quot;mip-action-btn&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                    &#039;&amp;lt;span style=&amp;quot;margin-right: 6px;&amp;quot;&amp;gt;🌐&amp;lt;/span&amp;gt; Buat Artikel EN&#039; +&lt;br /&gt;
                                &#039;&amp;lt;/a&amp;gt;&#039; +&lt;br /&gt;
                                &#039;&amp;lt;a href=&amp;quot;&#039; + createUrlConcise + &#039;&amp;quot; target=&amp;quot;_blank&amp;quot; class=&amp;quot;mip-action-btn&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                    &#039;&amp;lt;span style=&amp;quot;margin-right: 6px;&amp;quot;&amp;gt;📝&amp;lt;/span&amp;gt; Buat Artikel Ringkas&#039; +&lt;br /&gt;
                                &#039;&amp;lt;/a&amp;gt;&#039; +&lt;br /&gt;
                            &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
&lt;br /&gt;
                            &#039;&amp;lt;!-- Catatan Kaki Info Kecil --&amp;gt;&#039; +&lt;br /&gt;
                            &#039;&amp;lt;div style=&amp;quot;font-size: 0.85em; color: #a0a0a0; line-height: 1.5; font-style: italic; border-top: 1px solid #f0f0f0; padding-top: 15px;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                &#039;Informasi: Item data yang tidak terikat dengan artikel ensiklopedia apa pun dalam ekosistem Mippedia akan dihapus secara otomatis oleh pengurus dalam waktu dekat.&#039; +&lt;br /&gt;
                            &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
                        &#039;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
                    $mainContent.prepend(noticeHtml);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                $wikiDataElements.hide();&lt;br /&gt;
                $descSection.hide();&lt;br /&gt;
&lt;br /&gt;
                if (!isSysop) {&lt;br /&gt;
                    $editElements.css({ &#039;pointer-events&#039;: &#039;none&#039;, &#039;opacity&#039;: &#039;0.3&#039;, &#039;cursor&#039;: &#039;not-allowed&#039; }).hide();&lt;br /&gt;
                    $(document).on(&#039;keydown.miplock&#039;, function(e) {&lt;br /&gt;
                        if (e.key.toLowerCase() === &#039;e&#039; &amp;amp;&amp;amp; !$(e.target).is(&#039;input, textarea&#039;)) {&lt;br /&gt;
                            e.preventDefault();&lt;br /&gt;
                            return false;&lt;br /&gt;
                        }&lt;br /&gt;
                    });&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                mw.config.set(&#039;wgRobotsPolicies&#039;, { &#039;index&#039;: &#039;noindex&#039;, &#039;follow&#039;: &#039;nofollow&#039; });&lt;br /&gt;
                if ($metaRobots.length) {&lt;br /&gt;
                    $metaRobots.attr(&#039;content&#039;, &#039;noindex, nofollow&#039;);&lt;br /&gt;
                } else {&lt;br /&gt;
                    $(&#039;head&#039;).append(&#039;&amp;lt;meta name=&amp;quot;robots&amp;quot; content=&amp;quot;noindex, nofollow&amp;quot;&amp;gt;&#039;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
            } else {&lt;br /&gt;
                if ($existingNotice.length) $existingNotice.remove();&lt;br /&gt;
                &lt;br /&gt;
                $wikiDataElements.show();&lt;br /&gt;
                $descSection.show();&lt;br /&gt;
&lt;br /&gt;
                if (!isSysop) {&lt;br /&gt;
                    $(document).off(&#039;keydown.miplock&#039;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                mw.config.set(&#039;wgRobotsPolicies&#039;, { &#039;index&#039;: &#039;index&#039;, &#039;follow&#039;: &#039;follow&#039; });&lt;br /&gt;
                if ($metaRobots.length) {&lt;br /&gt;
                    $metaRobots.attr(&#039;content&#039;, &#039;index, follow&#039;);&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // --- SISTEM PRIORITAS ---&lt;br /&gt;
        var cached = JSON.parse(localStorage.getItem(cacheKey) || &amp;quot;{}&amp;quot;);&lt;br /&gt;
        var globalEnTitle = cached.enTitle || &amp;quot;&amp;quot;; &lt;br /&gt;
&lt;br /&gt;
        function init() {&lt;br /&gt;
            var pPrimary = projects[0]; &lt;br /&gt;
            $.ajax({&lt;br /&gt;
                url: pPrimary.url,&lt;br /&gt;
                data: { action: &#039;query&#039;, prop: &#039;revisions|pageimages|langlinks&#039;, lllang: &#039;en&#039;, rvprop: &#039;timestamp&#039;, piprop: &#039;thumbnail&#039;, pithumbsize: 150, titles: pageTitle, format: &#039;json&#039;, origin: &#039;*&#039; },&lt;br /&gt;
                dataType: &#039;json&#039;,&lt;br /&gt;
                success: function(res) {&lt;br /&gt;
                    var pg = res.query.pages, id = Object.keys(pg)[0];&lt;br /&gt;
                    var latestTS = (id != &amp;quot;-1&amp;quot;) ? pg[id].revisions[0].timestamp : &amp;quot;0&amp;quot;;&lt;br /&gt;
                    var thumbUrl = (id != &amp;quot;-1&amp;quot; &amp;amp;&amp;amp; pg[id].thumbnail) ? pg[id].thumbnail.source : &amp;quot;&amp;quot;;&lt;br /&gt;
                    &lt;br /&gt;
                    if (id != &amp;quot;-1&amp;quot; &amp;amp;&amp;amp; pg[id].langlinks &amp;amp;&amp;amp; pg[id].langlinks[0]) {&lt;br /&gt;
                        globalEnTitle = pg[id].langlinks[0][&#039;*&#039;];&lt;br /&gt;
                    }&lt;br /&gt;
&lt;br /&gt;
                    if (cached.content &amp;amp;&amp;amp; cached.ts === latestTS &amp;amp;&amp;amp; latestTS !== &amp;quot;0&amp;quot; &amp;amp;&amp;amp; !cached.isEmpty) {&lt;br /&gt;
                        toggleMippediaLayout(false);&lt;br /&gt;
                        renderAll(cached.p, cached.content, cached.isTrans, cached.orig, cached.img, cached.customUrl, cached.enTitle);&lt;br /&gt;
                    } else { &lt;br /&gt;
                        fetchPriorityData(0, latestTS, thumbUrl); &lt;br /&gt;
                    }&lt;br /&gt;
                },&lt;br /&gt;
                error: function() { &lt;br /&gt;
                    if (cached.content) {&lt;br /&gt;
                        toggleMippediaLayout(cached.isEmpty || false);&lt;br /&gt;
                        if (!cached.isEmpty) renderAll(cached.p, cached.content, cached.isTrans, cached.orig, cached.img, cached.customUrl, cached.enTitle);&lt;br /&gt;
                    } &lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        function fetchPriorityData(index, newTS, img) {&lt;br /&gt;
            if (index &amp;gt;= projects.length) {&lt;br /&gt;
                localStorage.setItem(cacheKey, JSON.stringify({isEmpty: true, ts: newTS, content: &amp;quot;&amp;quot;}));&lt;br /&gt;
                toggleMippediaLayout(true);&lt;br /&gt;
                return;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            var p = projects[index];&lt;br /&gt;
&lt;br /&gt;
            if (p.id === &#039;en&#039;) {&lt;br /&gt;
                if (!globalEnTitle) {&lt;br /&gt;
                    $.ajax({&lt;br /&gt;
                        url: &#039;https://concise.mippedia.org/api.php&#039;,&lt;br /&gt;
                        data: { action: &#039;query&#039;, prop: &#039;langlinks&#039;, lllang: &#039;en&#039;, titles: pageTitle, format: &#039;json&#039;, origin: &#039;*&#039; },&lt;br /&gt;
                        dataType: &#039;json&#039;,&lt;br /&gt;
                        async: false, &lt;br /&gt;
                        success: function(cRes) {&lt;br /&gt;
                            var cPg = cRes.query.pages, cId = Object.keys(cPg)[0];&lt;br /&gt;
                            if (cId != &amp;quot;-1&amp;quot; &amp;amp;&amp;amp; cPg[cId].langlinks &amp;amp;&amp;amp; cPg[cId].langlinks[0]) {&lt;br /&gt;
                                globalEnTitle = cPg[cId].langlinks[0][&#039;*&#039;];&lt;br /&gt;
                            }&lt;br /&gt;
                        }&lt;br /&gt;
                    });&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                if (globalEnTitle) {&lt;br /&gt;
                    $.ajax({&lt;br /&gt;
                        url: p.url,&lt;br /&gt;
                        data: { action: &#039;query&#039;, prop: &#039;extracts&#039;, exintro: 1, explaintext: 1, titles: globalEnTitle, format: &#039;json&#039;, origin: &#039;*&#039; },&lt;br /&gt;
                        dataType: &#039;json&#039;,&lt;br /&gt;
                        success: function(data) {&lt;br /&gt;
                            var pages = data.query.pages, pageId = Object.keys(pages)[0];&lt;br /&gt;
                            if (pageId != &amp;quot;-1&amp;quot; &amp;amp;&amp;amp; pages[pageId].extract) {&lt;br /&gt;
                                var extract = cleanExtract(pages[pageId].extract);&lt;br /&gt;
                                finalize(p, extract, false, &amp;quot;&amp;quot;, newTS, img, p.base + encodeURIComponent(globalEnTitle), globalEnTitle);&lt;br /&gt;
                            } else {&lt;br /&gt;
                                fetchPriorityData(index + 1, newTS, img);&lt;br /&gt;
                            }&lt;br /&gt;
                        },&lt;br /&gt;
                        error: function() { fetchPriorityData(index + 1, newTS, img); }&lt;br /&gt;
                    });&lt;br /&gt;
                } else {&lt;br /&gt;
                    fetchPriorityData(index + 1, newTS, img);&lt;br /&gt;
                }&lt;br /&gt;
            } else {&lt;br /&gt;
                $.ajax({&lt;br /&gt;
                    url: p.url,&lt;br /&gt;
                    data: { action: &#039;query&#039;, prop: &#039;extracts&#039;, exintro: 1, explaintext: 1, titles: pageTitle, format: &#039;json&#039;, origin: &#039;*&#039; },&lt;br /&gt;
                    dataType: &#039;json&#039;,&lt;br /&gt;
                    success: function(data) {&lt;br /&gt;
                        var pages = data.query.pages, pageId = Object.keys(pages)[0];&lt;br /&gt;
                        if (pageId != &amp;quot;-1&amp;quot; &amp;amp;&amp;amp; pages[pageId].extract) {&lt;br /&gt;
                            var extract = cleanExtract(pages[pageId].extract);&lt;br /&gt;
                            finalize(p, extract, false, &amp;quot;&amp;quot;, newTS, img, p.base + encodeURIComponent(pageTitle), globalEnTitle); &lt;br /&gt;
                        } else {&lt;br /&gt;
                            fetchPriorityData(index + 1, newTS, img);&lt;br /&gt;
                        }&lt;br /&gt;
                    },&lt;br /&gt;
                    error: function() { fetchPriorityData(index + 1, newTS, img); }&lt;br /&gt;
                });&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        function finalize(p, c, t, o, ts, img, customUrl, enTitle) {&lt;br /&gt;
            localStorage.setItem(cacheKey, JSON.stringify({isEmpty: false, p:p, content:c, isTrans:t, orig:o, ts:ts, img:img, customUrl: customUrl, enTitle: enTitle}));&lt;br /&gt;
            toggleMippediaLayout(false); &lt;br /&gt;
            renderAll(p, c, t, o, img, customUrl, enTitle);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        function renderAll(p, currentText, isTranslated, originalText, img, customUrl, enTitle) {&lt;br /&gt;
            var processedText = applyAutoBold(applyDynamicContext(currentText));&lt;br /&gt;
            var thumbHtml = img ? &#039;&amp;lt;div style=&amp;quot;float: right; margin-left: 15px; margin-bottom: 10px; border: 1px solid #ddd; padding: 3px; background: #fff; border-radius: 4px; box-shadow: 0 2px 4px rgba(0,0,0,0.1);&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;&#039;+img+&#039;&amp;quot; style=&amp;quot;max-width: 100px; display: block; height: auto;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039; : &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
            if (!$mainContent.find(&#039;#mip-desc-section&#039;).length) {&lt;br /&gt;
                $mainContent.prepend($descSection);&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            $descSection.show();&lt;br /&gt;
            $descBox.show().html(thumbHtml + applySummary(processedText) + &#039;&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;);&lt;br /&gt;
            &lt;br /&gt;
            var targetLink = customUrl ? customUrl : p.base + encodeURIComponent(pageTitle);&lt;br /&gt;
            var footer = &#039;&amp;lt;div style=&amp;quot;font-size: 0.9em; color: #777;&amp;quot;&amp;gt;Sumber : &amp;lt;a href=&amp;quot;&#039; + targetLink + &#039;&amp;quot; target=&amp;quot;_blank&amp;quot; style=&amp;quot;color: #6a5acd; font-weight: bold; text-decoration: none;&amp;quot;&amp;gt;&#039; + p.name + &#039;.&amp;lt;/a&amp;gt;&#039;;&lt;br /&gt;
            if (isTranslated) { footer += &#039;&amp;lt;br&amp;gt;&amp;lt;span style=&amp;quot;font-size: 0.85em; font-style: italic;&amp;quot;&amp;gt;(Diterjemahkan secara otomatis)&amp;lt;/span&amp;gt; &amp;lt;span id=&amp;quot;mip-toggle-orig&amp;quot; style=&amp;quot;color: #6a5acd; cursor: pointer; text-decoration: underline; margin-left: 5px;&amp;quot;&amp;gt;Tampilkan versi asli&amp;lt;/span&amp;gt;&#039;; }&lt;br /&gt;
            $sourceInfo.show().html(footer);&lt;br /&gt;
            &lt;br /&gt;
            buildSmartLinks(p.id, enTitle);&lt;br /&gt;
            &lt;br /&gt;
            $(document).off(&#039;click&#039;, &#039;.mip-read-btn&#039;).on(&#039;click&#039;, &#039;.mip-read-btn&#039;, function() { $(this).hide(); $(&#039;.mip-dots&#039;).hide(); $(&#039;.mip-more&#039;).fadeIn(); });&lt;br /&gt;
            $(document).off(&#039;click&#039;, &#039;#mip-toggle-orig&#039;).on(&#039;click&#039;, &#039;#mip-toggle-orig&#039;, function() {&lt;br /&gt;
                var isOrig = ($(this).text() === &#039;Tampilkan versi asli&#039;);&lt;br /&gt;
                var textToDisplay = applyAutoBold(applyDynamicContext(isOrig ? originalText : currentText));&lt;br /&gt;
                $descBox.html(thumbHtml + applySummary(textToDisplay) + &#039;&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;);&lt;br /&gt;
                $(this).text(isOrig ? &#039;Tampilkan terjemahan&#039; : &#039;Tampilkan versi asli&#039;);&lt;br /&gt;
            });&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        init();&lt;br /&gt;
    });&lt;br /&gt;
})();&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================&lt;br /&gt;
   🚀 MIPPEDIA DATA - CORE SYSTEM (ULTIMATE BUNDLE)&lt;br /&gt;
   Status: FINAL &amp;amp; REVISED (Visual Fix + Permission Logic)&lt;br /&gt;
   Fix: Mobile Responsive Notification Position&lt;br /&gt;
   ========================================================== */&lt;br /&gt;
&lt;br /&gt;
(function() {&lt;br /&gt;
    $(document).ready(function() {&lt;br /&gt;
        // --- 1. FILTER GLOBAL (Namespace 0 &amp;amp; Bukan Halaman Utama) ---&lt;br /&gt;
        if (mw.config.get(&#039;wgNamespaceNumber&#039;) !== 0 || &lt;br /&gt;
            mw.config.get(&#039;wgIsMainPage&#039;) || &lt;br /&gt;
            mw.config.get(&#039;wgAction&#039;) !== &#039;view&#039;) return;&lt;br /&gt;
&lt;br /&gt;
        var pageTitle = mw.config.get(&#039;wgPageName&#039;);&lt;br /&gt;
        var dataPage = &#039;MediaWiki:Sitelinks-Data.json&#039;;&lt;br /&gt;
        var userGroups = mw.config.get(&#039;wgUserGroups&#039;);&lt;br /&gt;
        var isAdmin = userGroups.includes(&#039;sysop&#039;) || userGroups.includes(&#039;interface-admin&#039;);&lt;br /&gt;
&lt;br /&gt;
        var projects = {&lt;br /&gt;
            &#039;id&#039;: { name: &#039;ID&#039;, url: &#039;https://id.mippedia.org/api.php&#039;, base: &#039;https://id.mippedia.org/wiki/&#039;, color: &#039;#6a5acd&#039; },&lt;br /&gt;
            &#039;en&#039;: { name: &#039;EN&#039;, url: &#039;https://en.mippedia.org/api.php&#039;, base: &#039;https://en.mippedia.org/wiki/&#039;, color: &#039;#4169e1&#039; },&lt;br /&gt;
            &#039;concise&#039;: { name: &#039;Concise&#039;, url: &#039;https://concise.mippedia.org/api.php&#039;, base: &#039;https://concise.mippedia.org/wiki/&#039;, color: &#039;#20b2aa&#039; }&lt;br /&gt;
        };&lt;br /&gt;
&lt;br /&gt;
        // --- 2. KOTAK NOTIFIKASI INFORMASI MODERN (FIXED MOBILE POSITION) ---&lt;br /&gt;
        function showBoxNotif(title, msg, type) {&lt;br /&gt;
            $(&#039;.mip-box-notif&#039;).remove();&lt;br /&gt;
            var theme = type === &#039;success&#039; ? {bg:&#039;#e6fffa&#039;, border:&#039;#38b2ac&#039;, text:&#039;#234e52&#039;, icon:&#039;&#039;} : &lt;br /&gt;
                        {bg:&#039;#fff5f5&#039;, border:&#039;#f56565&#039;, text:&#039;#742a2a&#039;, icon:&#039;&#039;};&lt;br /&gt;
            &lt;br /&gt;
            // Logika CSS Responsif untuk posisi&lt;br /&gt;
            var isMobile = window.innerWidth &amp;lt;= 768;&lt;br /&gt;
            var desktopStyle = &amp;quot;top:25px; right:25px; width:350px;&amp;quot;;&lt;br /&gt;
            var mobileStyle = &amp;quot;top:15px; left:50%; transform:translateX(-50%); width:90%; max-width:400px;&amp;quot;;&lt;br /&gt;
            var finalPos = isMobile ? mobileStyle : desktopStyle;&lt;br /&gt;
&lt;br /&gt;
            var $notif = $(&#039;&amp;lt;div class=&amp;quot;mip-box-notif&amp;quot; style=&amp;quot;position:fixed; &#039; + finalPos + &#039; background:&#039;+theme.bg+&#039;; border-left:6px solid &#039;+theme.border+&#039;; padding:18px; z-index:10001; border-radius:12px; box-shadow:0 15px 35px rgba(0,0,0,0.2); font-family:sans-serif; animation:mipSlideIn 0.4s ease-out;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                &#039;&amp;lt;div style=&amp;quot;display:flex; align-items:center; gap:12px; margin-bottom:8px;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                    &#039;&amp;lt;span style=&amp;quot;font-size:20px;&amp;quot;&amp;gt;&#039;+theme.icon+&#039;&amp;lt;/span&amp;gt;&#039; +&lt;br /&gt;
                    &#039;&amp;lt;strong style=&amp;quot;color:&#039;+theme.text+&#039;; font-size:15px; letter-spacing:-0.3px;&amp;quot;&amp;gt;&#039;+title+&#039;&amp;lt;/strong&amp;gt;&#039; +&lt;br /&gt;
                &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
                &#039;&amp;lt;p style=&amp;quot;margin:0; font-size:13px; color:&#039;+theme.text+&#039;; line-height:1.6; opacity:0.9;&amp;quot;&amp;gt;&#039;+msg+&#039;&amp;lt;/p&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;/div&amp;gt;&#039;).appendTo(&#039;body&#039;);&lt;br /&gt;
&lt;br /&gt;
            setTimeout(function() { $notif.fadeOut(function(){ $(this).remove(); }); }, 5500);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // --- 3. UI GENERATOR (DIPERTEBAL) ---&lt;br /&gt;
&lt;br /&gt;
      // A. Header Pro&lt;br /&gt;
        var headerHtml = &#039;&amp;lt;div id=&amp;quot;mip-header&amp;quot; style=&amp;quot;background:#f8f9fa; border:1px solid #ddd; border-left:6px solid #6a5acd; padding:18px; margin-bottom:25px; border-radius:6px; box-shadow:inset 0 0 10px rgba(0,0,0,0.02);&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;div style=&amp;quot;display:flex; align-items:center; gap:10px; margin-bottom:8px;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;span style=&amp;quot;background:#6a5acd; color:white; padding:3px 10px; border-radius:4px; font-size:11px; font-weight:bold; text-transform:uppercase; letter-spacing:0.5px;&amp;quot;&amp;gt;Basis Data Terstruktur&amp;lt;/span&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;strong style=&amp;quot;color:#111; font-size:16px;&amp;quot;&amp;gt;&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;p style=&amp;quot;margin:0; font-size:13px; color:#444; line-height:1.6;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
            &#039;Halaman ini adalah metadata entitas repositori pusat yang disinkronisasi secara otomatis lintas ekosistem. &#039; +&lt;br /&gt;
            &#039;Informasi di bawah ini bersifat teknis dan bebas digunakan sebagai referensi data terbuka bagi semua orang di seluruh dunia berdasarkan lisensi atribusi yang sesuai.&#039; +&lt;br /&gt;
            &#039;&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
        // B. Connector Box&lt;br /&gt;
        var editBtn = &#039;&amp;lt;span id=&amp;quot;mip-open-editor&amp;quot; style=&amp;quot;cursor:pointer; font-size:20px; color:#6a5acd; opacity:0.8; transition:0.3s;&amp;quot; onmouseover=&amp;quot;this.style.opacity=1&amp;quot; onmouseout=&amp;quot;this.style.opacity=0.8&amp;quot;&amp;gt;✎&amp;lt;/span&amp;gt;&#039;;&lt;br /&gt;
        var connectorHtml = &#039;&amp;lt;div id=&amp;quot;mip-connector&amp;quot; style=&amp;quot;background:#fff; border:1px solid #e2e8f0; border-radius:16px; padding:22px; margin-top:30px; box-shadow:0 10px 25px rgba(0,0,0,0.04);&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;div style=&amp;quot;display:flex; justify-content:space-between; align-items:center; margin-bottom:20px;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;strong style=&amp;quot;font-size:15px; color:#1a202c; display:flex; align-items:center; gap:8px;&amp;quot;&amp;gt;ID situs&amp;lt;/strong&amp;gt;&#039;+editBtn+&#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;div id=&amp;quot;mip-display&amp;quot; style=&amp;quot;display:flex; gap:12px; flex-wrap:wrap;&amp;quot;&amp;gt;&amp;lt;small style=&amp;quot;color:#a0aec0;&amp;quot;&amp;gt;Mensinkronisasi basis data...&amp;lt;/small&amp;gt;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;div id=&amp;quot;mip-editor&amp;quot; style=&amp;quot;display:none; margin-top:20px; border-top:2px solid #f7fafc; padding-top:20px;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                Object.keys(projects).map(p =&amp;gt; &#039;&amp;lt;div style=&amp;quot;margin-bottom:12px; display:flex; gap:10px;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;width:75px; font-size:11px; font-weight:bold; background:#edf2f7; display:flex; align-items:center; justify-content:center; border-radius:8px; color:#4a5568;&amp;quot;&amp;gt;&#039;+projects[p].name+&#039;&amp;lt;/span&amp;gt;&amp;lt;input type=&amp;quot;text&amp;quot; id=&amp;quot;in-&#039;+p+&#039;&amp;quot; placeholder=&amp;quot;Judul artikel di &#039;+projects[p].name+&#039;...&amp;quot; style=&amp;quot;flex:1; padding:10px; font-size:13px; border:1.5px solid #e2e8f0; border-radius:10px; outline:none; transition:0.2s;&amp;quot; onfocus=&amp;quot;this.style.borderColor=\&#039;#6a5acd\&#039;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;).join(&#039;&#039;) +&lt;br /&gt;
                &#039;&amp;lt;button id=&amp;quot;mip-save&amp;quot; style=&amp;quot;width:100%; padding:14px; background:#6a5acd; color:white; border:none; border-radius:12px; font-size:14px; font-weight:bold; cursor:pointer; box-shadow:0 4px 12px rgba(106,90,205,0.3); transition:0.3s;&amp;quot;&amp;gt;Terbitkan&amp;lt;/button&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
        // C. Footer Lisensi Lengkap&lt;br /&gt;
        var footerHtml = &#039;&amp;lt;div id=&amp;quot;mip-footer&amp;quot; style=&amp;quot;background:#fafafa; border:1px solid #eee; border-radius:10px; padding:20px; margin-top:30px; text-align:center;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;div style=&amp;quot;font-size:11px; color:#718096; font-weight:800; text-transform:uppercase; letter-spacing:1px; margin-bottom:10px;&amp;quot;&amp;gt;Lisensi, Atribusi &amp;amp; Penggunaan Data&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;p style=&amp;quot;margin:0 0 10px; font-size:13px; color:#4a5568; line-height:1.6;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
            &#039;Seluruh data terstruktur yang tersaji dalam repositori ini merupakan milik publik dan tersedia di bawah lisensi resmi &#039; +&lt;br /&gt;
            &#039;&amp;lt;a href=&amp;quot;https://creativecommons.org/licenses/by-sa/4.0/&amp;quot; target=&amp;quot;_blank&amp;quot; style=&amp;quot;color:#6a5acd; text-decoration:none; font-weight:700;&amp;quot;&amp;gt;Creative Commons Attribution-ShareAlike 4.0 International&amp;lt;/a&amp;gt;.&#039; +&lt;br /&gt;
            &#039;&amp;lt;/p&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;p style=&amp;quot;margin:0; font-size:12px; color:#a0aec0;&amp;quot;&amp;gt;Akses API dan penggunaan data secara massal wajib mencantumkan atribusi kepada &amp;lt;strong&amp;gt;Mippedia Community&amp;lt;/strong&amp;gt; selaku pengelola proyek.&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
        // Injeksi&lt;br /&gt;
        $(&#039;#mw-content-text&#039;).prepend(headerHtml);&lt;br /&gt;
        $(&#039;#mw-content-text&#039;).append(connectorHtml).append(footerHtml);&lt;br /&gt;
&lt;br /&gt;
        // --- 4. LOGIC ENGINE ---&lt;br /&gt;
        function loadLinks() {&lt;br /&gt;
            new mw.Api().get({ action: &#039;query&#039;, prop: &#039;revisions&#039;, titles: dataPage, rvprop: &#039;content&#039;, formatversion: 2 }).done(function(d) {&lt;br /&gt;
                var json = d.query.pages[0].revisions ? JSON.parse(d.query.pages[0].revisions[0].content) : {};&lt;br /&gt;
                var data = json[pageTitle] || {};&lt;br /&gt;
                var $box = $(&#039;#mip-display&#039;).empty();&lt;br /&gt;
                var found = false;&lt;br /&gt;
                Object.keys(projects).forEach(p =&amp;gt; {&lt;br /&gt;
                    if (data[p]) {&lt;br /&gt;
                        found = true;&lt;br /&gt;
                        $box.append(&#039;&amp;lt;a style=&amp;quot;background:&#039;+projects[p].color+&#039;; color:white; padding:8px 16px; border-radius:10px; font-size:12px; font-weight:bold; text-decoration:none; border-bottom:3px solid rgba(0,0,0,0.15);&amp;quot; href=&amp;quot;&#039;+projects[p].base+encodeURIComponent(data[p])+&#039;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Mippedia &#039;+projects[p].name+&#039;: &#039;+data[p]+&#039;&amp;lt;/a&amp;gt;&#039;);&lt;br /&gt;
                        $(&#039;#in-&#039; + p).val(data[p]);&lt;br /&gt;
                    }&lt;br /&gt;
                });&lt;br /&gt;
                if (!found) $box.html(&#039;&amp;lt;em style=&amp;quot;color:#cbd5e0; font-size:13px;&amp;quot;&amp;gt;Entitas ini belum terhubung ke cabang Mippedia manapun.&amp;lt;/em&amp;gt;&#039;);&lt;br /&gt;
            });&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        $(document).on(&#039;click&#039;, &#039;#mip-save&#039;, function() {&lt;br /&gt;
            // CEK IZIN: Tolak user biasa&lt;br /&gt;
            if (!isAdmin) {&lt;br /&gt;
                showBoxNotif(&#039;Suntingan anda tidak di terbitkan&#039;, &#039;Halaman ini dilindungi. Hanya &amp;lt;b&amp;gt;Pengurus&amp;lt;/b&amp;gt; yang memiliki otoritas untuk memodifikasi metadata ekosistem secara langsung.&#039;, &#039;error&#039;);&lt;br /&gt;
                return;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            var $btn = $(this).text(&#039;Sedang Memvalidasi...&#039;).prop(&#039;disabled&#039;, true);&lt;br /&gt;
            var api = new mw.Api();&lt;br /&gt;
            var newData = {}, promises = [], invalid = [], isDel = true;&lt;br /&gt;
&lt;br /&gt;
            Object.keys(projects).forEach(p =&amp;gt; {&lt;br /&gt;
                var v = $(&#039;#in-&#039; + p).val().trim();&lt;br /&gt;
                if (v) {&lt;br /&gt;
                    isDel = false;&lt;br /&gt;
                    promises.push($.ajax({ url: projects[p].url, data: { action: &#039;query&#039;, titles: v, format: &#039;json&#039;, origin: &#039;*&#039; }, dataType: &#039;json&#039; }).done(function(res){&lt;br /&gt;
                        if (res.query.pages[&amp;quot;-1&amp;quot;]) invalid.push(projects[p].name); else newData[p] = v;&lt;br /&gt;
                    }));&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
&lt;br /&gt;
            $.when.apply($, promises).then(function() {&lt;br /&gt;
                if (invalid.length &amp;gt; 0) {&lt;br /&gt;
                    showBoxNotif(&#039;Suntingan anda tidak di terbitkan&#039;, &#039;Artikel dengan judul tersebut tidak ditemukan di basis data Mippedia cabang: &#039; + invalid.join(&#039;, &#039;) + &#039;. Periksa kembali ejaan dan kapitalisasi.&#039;, &#039;error&#039;);&lt;br /&gt;
                    $btn.text(&#039;Terbitkan&#039;).prop(&#039;disabled&#039;, false); return;&lt;br /&gt;
                }&lt;br /&gt;
                &lt;br /&gt;
                api.get({ action: &#039;query&#039;, prop: &#039;revisions&#039;, titles: dataPage, rvprop: &#039;content&#039;, formatversion: 2 }).done(function(r) {&lt;br /&gt;
                    var full = r.query.pages[0].revisions ? JSON.parse(r.query.pages[0].revisions[0].content) : {};&lt;br /&gt;
                    if (isDel) delete full[pageTitle]; else full[pageTitle] = newData;&lt;br /&gt;
                    &lt;br /&gt;
                    api.postWithEditToken({ action: &#039;edit&#039;, title: dataPage, text: JSON.stringify(full, null, 2), summary: &#039;Sync Metadata: &#039; + pageTitle })&lt;br /&gt;
                    .done(function() {&lt;br /&gt;
                        showBoxNotif(&#039;Suntingan anda berhasil di terbitkan!&#039;, &#039;Metadata entitas berhasil disinkronisasi ke seluruh jaringan ekosistem Mippedia.&#039;, &#039;success&#039;);&lt;br /&gt;
                        setTimeout(function(){ location.reload(); }, 1500);&lt;br /&gt;
                    }).fail(function(c) {&lt;br /&gt;
                        showBoxNotif(&#039;Gagal Menyimpan&#039;, &#039;Terjadi kesalahan pada token API atau koneksi server. Kode: &#039; + c, &#039;error&#039;);&lt;br /&gt;
                        $btn.text(&#039;Simpan &amp;amp; Sinkronkan Data&#039;).prop(&#039;disabled&#039;, false);&lt;br /&gt;
                    });&lt;br /&gt;
                });&lt;br /&gt;
            });&lt;br /&gt;
        });&lt;br /&gt;
&lt;br /&gt;
        $(document).on(&#039;click&#039;, &#039;#mip-open-editor&#039;, function() { $(&#039;#mip-editor&#039;).slideToggle(); });&lt;br /&gt;
        loadLinks();&lt;br /&gt;
    });&lt;br /&gt;
})();&lt;br /&gt;
&lt;br /&gt;
(function() {&lt;br /&gt;
    // Fungsi utama suntik teks&lt;br /&gt;
    function forcePreload() {&lt;br /&gt;
        var ns = mw.config.get(&#039;wgNamespaceNumber&#039;);&lt;br /&gt;
        var pageExists = mw.config.get(&#039;wgArticleId&#039;) &amp;gt; 0;&lt;br /&gt;
        &lt;br /&gt;
        // Cek Namespace Utama &amp;amp; Halaman Baru&lt;br /&gt;
        if (ns === 0 &amp;amp;&amp;amp; !pageExists) {&lt;br /&gt;
            // Cari textarea secara spesifik (Desktop &amp;amp; Mobile punya selector beda)&lt;br /&gt;
            var $textbox = $(&#039;#wpTextbox1, textarea.mw-ui-input, .editor-container textarea&#039;);&lt;br /&gt;
            &lt;br /&gt;
            if ($textbox.length &amp;amp;&amp;amp; $textbox.val().trim() === &amp;quot;&amp;quot;) {&lt;br /&gt;
                var pageName = mw.config.get(&#039;wgTitle&#039;);&lt;br /&gt;
                $textbox.val(&#039;{{Infobox umum\n|nama = &#039; + pageName + &#039;\n}}&#039;);&lt;br /&gt;
                console.log(&amp;quot;Mippedia: Infobox injected!&amp;quot;);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // 1. Jalankan pas halaman beres load&lt;br /&gt;
    $(document).ready(forcePreload);&lt;br /&gt;
&lt;br /&gt;
    // 2. Jalankan tiap ada klik (karena mobile buka editor pake klik tanpa refresh)&lt;br /&gt;
    $(document).on(&#039;click&#039;, function() {&lt;br /&gt;
        setTimeout(forcePreload, 800); // Kasih delay dikit nunggu overlay muncul&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    // 3. Pake MutationObserver buat mantau elemen yang baru muncul secara gaib&lt;br /&gt;
    var observer = new MutationObserver(function() {&lt;br /&gt;
        forcePreload();&lt;br /&gt;
    });&lt;br /&gt;
    observer.observe(document.body, { childList: true, subtree: true });&lt;br /&gt;
})();&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================&lt;br /&gt;
   🚀 MIPPEDIA DATA - CONTENT GUARD (MODIFIED FOR RELATED)&lt;br /&gt;
   ========================================================== */&lt;br /&gt;
(function() {&lt;br /&gt;
    function handleBlock(e) {&lt;br /&gt;
        var ns = mw.config.get(&#039;wgNamespaceNumber&#039;);&lt;br /&gt;
        if (ns !== 0 || mw.config.get(&#039;wgIsMainPage&#039;)) return;&lt;br /&gt;
&lt;br /&gt;
        var $el = $(e.currentTarget);&lt;br /&gt;
        &lt;br /&gt;
        if ($el.closest(&#039;.mw-parser-output&#039;).length &amp;amp;&amp;amp; $el.text().toLowerCase().includes(&#039;buat item&#039;)) {&lt;br /&gt;
            return; &lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        var $textbox = $(&#039;#wpTextbox1, .editor-container textarea, textarea.mw-ui-input&#039;);&lt;br /&gt;
        &lt;br /&gt;
        if ($textbox.length) {&lt;br /&gt;
            var content = $textbox.val() || &amp;quot;&amp;quot;;&lt;br /&gt;
            &lt;br /&gt;
            // Pengecekan: Harus ada {{Infobox ATAU setidaknya ada kode #related&lt;br /&gt;
            var hasInfobox = content.includes(&#039;{{Infobox&#039;);&lt;br /&gt;
            var hasRelated = content.includes(&#039;#related:&#039;);&lt;br /&gt;
&lt;br /&gt;
            if (!hasInfobox &amp;amp;&amp;amp; !hasRelated) {&lt;br /&gt;
                e.preventDefault();&lt;br /&gt;
                e.stopPropagation();&lt;br /&gt;
                e.stopImmediatePropagation();&lt;br /&gt;
&lt;br /&gt;
                window.alert(&amp;quot;SUNTINGAN ANDA TIDAK BISA DI TERBITKAN!\n\nMippedia Data bukan tempat untuk menulis artikel ensiklopedia, Jika anda ingin membuat artikel ensiklopedia bukan di sini tempat nya.\n&amp;quot;);&lt;br /&gt;
                return false;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    $(document).on(&#039;click mousedown touchstart&#039;, &lt;br /&gt;
        &#039;#wpSave, .editor-save, .mw-ui-button.primary, button[type=&amp;quot;submit&amp;quot;], .save-button, .header-action button&#039;, &lt;br /&gt;
        function(e) {&lt;br /&gt;
            handleBlock(e);&lt;br /&gt;
        }&lt;br /&gt;
    );&lt;br /&gt;
&lt;br /&gt;
    window.addEventListener(&#039;submit&#039;, function(e) {&lt;br /&gt;
        handleBlock(e);&lt;br /&gt;
    }, true);&lt;br /&gt;
})();&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================&lt;br /&gt;
   🛡️ MIPPEDIA CORE SYSTEM - NEURAL ENGINE V12&lt;br /&gt;
   Update: Brain Upgrade - Semantic Search &amp;amp; Anti-Duplicate&lt;br /&gt;
   Semua fitur asli (Patroli, Promo, Kategori) tetap UTUH.&lt;br /&gt;
   ========================================================== */&lt;br /&gt;
mw.hook(&#039;postEdit&#039;).add(function() {&lt;br /&gt;
    var rawUser = mw.config.get(&#039;wgUserName&#039;);&lt;br /&gt;
    var userName = rawUser ? rawUser.replace(/_/g, &#039; &#039;) : &#039;Anonim&#039;;&lt;br /&gt;
    var isPatroli = (userName === &#039;Admin&#039;);&lt;br /&gt;
    &lt;br /&gt;
    if (mw.config.get(&#039;wgNamespaceNumber&#039;) !== 0) return;&lt;br /&gt;
&lt;br /&gt;
    var api = new mw.Api();&lt;br /&gt;
    var pageTitle = mw.config.get(&#039;wgPageName&#039;).replace(/_/g, &#039; &#039;);&lt;br /&gt;
&lt;br /&gt;
    api.get({&lt;br /&gt;
        action: &#039;query&#039;,&lt;br /&gt;
        titles: pageTitle,&lt;br /&gt;
        prop: &#039;revisions|categories|links&#039;,&lt;br /&gt;
        rvprop: &#039;content&#039;,&lt;br /&gt;
        clshow: &#039;!hidden&#039;,&lt;br /&gt;
        pllimit: &#039;max&#039;&lt;br /&gt;
    }).done(function(resData) {&lt;br /&gt;
        var page = resData.query.pages[Object.keys(resData.query.pages)[0]];&lt;br /&gt;
        if (!page || !page.revisions) return;&lt;br /&gt;
&lt;br /&gt;
        var rawContent = page.revisions[0][&#039;*&#039;];&lt;br /&gt;
        var content = rawContent;&lt;br /&gt;
        var summaryParts = [];&lt;br /&gt;
&lt;br /&gt;
        // --- 2. SUPER INTELLIGENCE RELATED (UPGRADE OTAK V12) ---&lt;br /&gt;
        // Cek jumlah related saat ini&lt;br /&gt;
        var currentRelatedMatch = content.match(/\{\{#related:.*?\}\}/g) || [];&lt;br /&gt;
        &lt;br /&gt;
        // Jika kurang dari 3, kita jalankan otak pencarian canggih&lt;br /&gt;
        if (currentRelatedMatch.length &amp;lt; 3) {&lt;br /&gt;
            // Hapus yang lama dulu agar tidak ada duplikat atau &amp;quot;pake yang bekas&amp;quot;&lt;br /&gt;
            content = content.replace(/\n*\{\{#related:.*?\}\}/g, &#039;&#039;);&lt;br /&gt;
&lt;br /&gt;
            // Langkah A: Ambil kandidat dari Search Engine (Ranking Skor)&lt;br /&gt;
            api.get({&lt;br /&gt;
                action: &#039;query&#039;,&lt;br /&gt;
                list: &#039;search&#039;,&lt;br /&gt;
                srsearch: pageTitle, // Gunakan judul sebagai basis pencarian semantic&lt;br /&gt;
                srlimit: 15,&lt;br /&gt;
                srprop: &#039;&#039;&lt;br /&gt;
            }).done(function(searchRes) {&lt;br /&gt;
                var candidates = {};&lt;br /&gt;
&lt;br /&gt;
                // Masukkan hasil pencarian ke pool skor&lt;br /&gt;
                if (searchRes.query &amp;amp;&amp;amp; searchRes.query.search) {&lt;br /&gt;
                    searchRes.query.search.forEach(function(item, index) {&lt;br /&gt;
                        if (item.title === pageTitle) return;&lt;br /&gt;
                        candidates[item.title] = (15 - index); // Skor berdasarkan urutan relevansi&lt;br /&gt;
                    });&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                // Langkah B: Tambah skor jika artikel ada di daftar Link Internal&lt;br /&gt;
                if (page.links) {&lt;br /&gt;
                    page.links.forEach(function(link) {&lt;br /&gt;
                        if (link.title === pageTitle) return;&lt;br /&gt;
                        candidates[link.title] = (candidates[link.title] || 0) + 5; // Bonus skor link&lt;br /&gt;
                    });&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                // Langkah C: Urutkan berdasarkan skor tertinggi (yang paling nyambung)&lt;br /&gt;
                var sortedTitles = Object.keys(candidates).sort(function(a, b) {&lt;br /&gt;
                    return candidates[b] - candidates[a];&lt;br /&gt;
                });&lt;br /&gt;
&lt;br /&gt;
                // Ambil TOP 3&lt;br /&gt;
                var finalRelated = sortedTitles.filter(t =&amp;gt; t.indexOf(&#039;:&#039;) === -1).slice(0, 3);&lt;br /&gt;
&lt;br /&gt;
                if (finalRelated.length &amp;gt; 0) {&lt;br /&gt;
                    var relatedTags = &#039;\n\n&#039; + finalRelated.map(t =&amp;gt; &#039;{{#related: &#039; + t + &#039;}}&#039;).join(&#039;\n&#039;);&lt;br /&gt;
                    content += relatedTags;&lt;br /&gt;
                    summaryParts.push(&#039;NeuralRelated&#039;);&lt;br /&gt;
                }&lt;br /&gt;
                &lt;br /&gt;
                runPatroliAndSave();&lt;br /&gt;
            });&lt;br /&gt;
        } else {&lt;br /&gt;
            runPatroliAndSave();&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        function runPatroliAndSave() {&lt;br /&gt;
            // --- 3. PATROLI ENGINE (FITUR ASLI - TETAP BERFUNGSI) ---&lt;br /&gt;
            if (isPatroli) {&lt;br /&gt;
                var placeholders = [];&lt;br /&gt;
                // Lindungi Brankas: Template, Header, Kategori, Ref, dan Kalimat Pembuka&lt;br /&gt;
                content = content.replace(/(\{\{[\s\S]*?\}\}|==+.*?==+|\[\[Kategori:.*?\]\]|&amp;lt;ref[\s\S]*?&amp;lt;\/ref&amp;gt;|^.*?adalah)/gi, function(match) {&lt;br /&gt;
                    placeholders.push(match);&lt;br /&gt;
                    return &#039;___MIP_SKIP_&#039; + (placeholders.length - 1) + &#039;___&#039;;&lt;br /&gt;
                });&lt;br /&gt;
&lt;br /&gt;
                // Proses Auto-Link (Wajib ambil daftar AllPages dulu)&lt;br /&gt;
                api.get({ action: &#039;query&#039;, list: &#039;allpages&#039;, apnamespace: 0, aplimit: &#039;max&#039; }).done(function(apData) {&lt;br /&gt;
                    var allTitles = apData.query.allpages.map(p =&amp;gt; p.title);&lt;br /&gt;
                    var lowerTitles = allTitles.map(t =&amp;gt; t.toLowerCase());&lt;br /&gt;
&lt;br /&gt;
                    var tokens = content.split(/(\s+|\[\[|\]\])/);&lt;br /&gt;
                    var inLink = false;&lt;br /&gt;
                    for (var i = 0; i &amp;lt; tokens.length; i++) {&lt;br /&gt;
                        if (tokens[i] === &#039;[[&#039; ) { inLink = true; continue; }&lt;br /&gt;
                        if (tokens[i] === &#039;]]&#039; ) { inLink = false; continue; }&lt;br /&gt;
                        if (inLink || tokens[i].trim().length &amp;lt; 3 || tokens[i].includes(&#039;___MIP_SKIP_&#039;)) continue;&lt;br /&gt;
&lt;br /&gt;
                        var wordsInToken = tokens[i].match(/\b\w+\b/g);&lt;br /&gt;
                        if (wordsInToken) {&lt;br /&gt;
                            wordsInToken.forEach(function(word) {&lt;br /&gt;
                                var idx = lowerTitles.indexOf(word.toLowerCase());&lt;br /&gt;
                                if (idx !== -1 &amp;amp;&amp;amp; allTitles[idx] !== pageTitle) {&lt;br /&gt;
                                    tokens[i] = tokens[i].replace(new RegExp(&#039;\\b&#039; + word + &#039;\\b&#039;, &#039;g&#039;), &#039;[[&#039; + allTitles[idx] + &#039;|&#039; + word + &#039;]]&#039;);&lt;br /&gt;
                                }&lt;br /&gt;
                            });&lt;br /&gt;
                        }&lt;br /&gt;
                    }&lt;br /&gt;
                    content = tokens.join(&#039;&#039;);&lt;br /&gt;
                    &lt;br /&gt;
                    // Kembalikan dari Brankas&lt;br /&gt;
                    content = content.replace(/___MIP_SKIP_(\d+)___/g, function(match, id) { return placeholders[id]; });&lt;br /&gt;
&lt;br /&gt;
                    // Bersihkan Link Merah&lt;br /&gt;
                    content = content.replace(/\[\[([^|\]:]+)\]\]/g, function(match, p1) {&lt;br /&gt;
                        return lowerTitles.includes(p1.toLowerCase()) ? match : p1;&lt;br /&gt;
                    });&lt;br /&gt;
&lt;br /&gt;
                    saveAction();&lt;br /&gt;
                });&lt;br /&gt;
            } else {&lt;br /&gt;
                saveAction();&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        function saveAction() {&lt;br /&gt;
            // --- 4. EKSEKUSI ---&lt;br /&gt;
            if (content.trim() !== rawContent.trim()) {&lt;br /&gt;
                api.postWithToken(&#039;edit&#039;, {&lt;br /&gt;
                    action: &#039;edit&#039;,&lt;br /&gt;
                    title: pageTitle,&lt;br /&gt;
                    text: content,&lt;br /&gt;
                    summary: &#039;Mippedia Neural Engine V12: &#039; + summaryParts.join(&#039;, &#039;),&lt;br /&gt;
                    bot: true, markasbot: true&lt;br /&gt;
                }).done(function() { location.reload(); });&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    });&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================&lt;br /&gt;
   🌐 MIPPEDIA SHORTDESC - DATA CENTER (PREMIUM UI)&lt;br /&gt;
   Status: INDEPENDENT &amp;amp; REFINED VISUAL&lt;br /&gt;
   Storage: MediaWiki:ShortDesc-Data.json&lt;br /&gt;
   ========================================================== */&lt;br /&gt;
(function($, mw) {&lt;br /&gt;
    &amp;quot;use strict&amp;quot;;&lt;br /&gt;
    $(document).ready(function() {&lt;br /&gt;
        if (mw.config.get(&#039;wgNamespaceNumber&#039;) !== 0 || mw.config.get(&#039;wgIsMainPage&#039;)) return;&lt;br /&gt;
&lt;br /&gt;
        var pageTitle = mw.config.get(&#039;wgPageName&#039;);&lt;br /&gt;
        var storagePage = &#039;MediaWiki:ShortDesc-Data.json&#039;;&lt;br /&gt;
        var isAdmin = mw.config.get(&#039;wgUserGroups&#039;).some(g =&amp;gt; [&#039;sysop&#039;, &#039;interface-admin&#039;].includes(g));&lt;br /&gt;
&lt;br /&gt;
        var langs = {&lt;br /&gt;
            id: { label: &#039;Mippedia bahasa Indonesia&#039;, short: &#039;ID&#039;, color: &#039;#6366f1&#039; },&lt;br /&gt;
            en: { label: &#039;Mippedia bahasa Inggris&#039;, short: &#039;EN&#039;, color: &#039;#3b82f6&#039; },&lt;br /&gt;
            concise: { label: &#039;Mippedia bahasa Indonesia ringkas&#039;, short: &#039;CON&#039;, color: &#039;#14b8a6&#039; }&lt;br /&gt;
        };&lt;br /&gt;
&lt;br /&gt;
        // UI Box dengan Spasi dan Desain Baru&lt;br /&gt;
        var html = `&lt;br /&gt;
            &amp;lt;div id=&amp;quot;desc-manager&amp;quot; style=&amp;quot;background:#ffffff; border:1px solid #f1f5f9; border-left:4px solid #6366f1; border-radius:12px; padding:20px; margin: 20px 0 25px 0; box-shadow:0 4px 12px rgba(0,0,0,0.03); font-family: -apple-system,BlinkMacSystemFont,&#039;Segoe UI&#039;,Roboto,sans-serif;&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;div style=&amp;quot;display:flex; justify-content:space-between; align-items:center; margin-bottom:12px;&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;span style=&amp;quot;font-size:13px; font-weight:700; color:#475569; text-transform:uppercase; letter-spacing:0.5px; display:flex; align-items:center; gap:6px;&amp;quot;&amp;gt;&lt;br /&gt;
                        Label Deskripsi&lt;br /&gt;
                    &amp;lt;/span&amp;gt;&lt;br /&gt;
                    &amp;lt;span id=&amp;quot;desc-open-editor&amp;quot; style=&amp;quot;cursor:pointer; padding:5px; transition:0.2s;&amp;quot; title=&amp;quot;Edit Deskripsi&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;svg width=&amp;quot;16&amp;quot; height=&amp;quot;16&amp;quot; viewBox=&amp;quot;0 0 24 24&amp;quot; fill=&amp;quot;none&amp;quot; stroke=&amp;quot;#94a3b8&amp;quot; stroke-width=&amp;quot;2&amp;quot; stroke-linecap=&amp;quot;round&amp;quot; stroke-linejoin=&amp;quot;round&amp;quot;&amp;gt;&amp;lt;path d=&amp;quot;M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7&amp;quot;&amp;gt;&amp;lt;/path&amp;gt;&amp;lt;path d=&amp;quot;M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z&amp;quot;&amp;gt;&amp;lt;/path&amp;gt;&amp;lt;/svg&amp;gt;&lt;br /&gt;
                    &amp;lt;/span&amp;gt;&lt;br /&gt;
                &amp;lt;/div&amp;gt;&lt;br /&gt;
                &lt;br /&gt;
                &amp;lt;div id=&amp;quot;desc-status-display&amp;quot; style=&amp;quot;display:flex; flex-direction:column; gap:8px;&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;small style=&amp;quot;color:#94a3b8; font-style:italic;&amp;quot;&amp;gt;Sinkronisasi data...&amp;lt;/small&amp;gt;&lt;br /&gt;
                &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;div id=&amp;quot;desc-editor&amp;quot; style=&amp;quot;display:none; margin-top:18px; border-top:1px dashed #e2e8f0; padding-top:18px;&amp;quot;&amp;gt;&lt;br /&gt;
                    ${Object.keys(langs).map(k =&amp;gt; `&lt;br /&gt;
                        &amp;lt;div style=&amp;quot;margin-bottom:12px;&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;label style=&amp;quot;display:block; font-size:11px; font-weight:bold; color:#64748b; margin-bottom:4px;&amp;quot;&amp;gt;${langs[k].label}&amp;lt;/label&amp;gt;&lt;br /&gt;
                            &amp;lt;input type=&amp;quot;text&amp;quot; id=&amp;quot;desc-in-${k}&amp;quot; placeholder=&amp;quot;Tulis deskripsi...&amp;quot; style=&amp;quot;width:100%; padding:10px; font-size:13px; border:1px solid #e2e8f0; border-radius:8px; box-sizing:border-box; outline:none; focus:border-color:#6366f1;&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;/div&amp;gt;&lt;br /&gt;
                    `).join(&#039;&#039;)}&lt;br /&gt;
                    &amp;lt;button id=&amp;quot;desc-save&amp;quot; style=&amp;quot;width:100%; padding:12px; background:#6366f1; color:white; border:none; border-radius:8px; font-size:13px; font-weight:600; cursor:pointer; margin-top:5px;&amp;quot;&amp;gt;Terbitkan&amp;lt;/button&amp;gt;&lt;br /&gt;
                &amp;lt;/div&amp;gt;&lt;br /&gt;
            &amp;lt;/div&amp;gt;`;&lt;br /&gt;
&lt;br /&gt;
        $(&#039;.mw-parser-output&#039;).prepend(html);&lt;br /&gt;
&lt;br /&gt;
        function loadDescStatus() {&lt;br /&gt;
            new mw.Api().get({ action: &#039;query&#039;, prop: &#039;revisions&#039;, titles: storagePage, rvprop: &#039;content&#039;, formatversion: 2 }).done(function(res) {&lt;br /&gt;
                var content = res.query.pages[0].revisions ? res.query.pages[0].revisions[0].content : &amp;quot;{}&amp;quot;;&lt;br /&gt;
                var fullData = JSON.parse(content);&lt;br /&gt;
                var myData = fullData[pageTitle] || {};&lt;br /&gt;
                var $statusBox = $(&#039;#desc-status-display&#039;).empty();&lt;br /&gt;
                var foundAny = false;&lt;br /&gt;
&lt;br /&gt;
                Object.keys(langs).forEach(k =&amp;gt; {&lt;br /&gt;
                    var val = myData[k];&lt;br /&gt;
                    if (val &amp;amp;&amp;amp; val.trim() !== &amp;quot;&amp;quot;) {&lt;br /&gt;
                        foundAny = true;&lt;br /&gt;
                        $statusBox.append(`&lt;br /&gt;
                            &amp;lt;div style=&amp;quot;display:flex; align-items:center; gap:10px;&amp;quot;&amp;gt;&lt;br /&gt;
                                &amp;lt;span style=&amp;quot;background:${langs[k].color}15; color:${langs[k].color}; padding:3px 10px; border-radius:20px; font-size:10px; font-weight:800; border:1px solid ${langs[k].color}30; min-width:35px; text-align:center;&amp;quot;&amp;gt;${langs[k].short}&amp;lt;/span&amp;gt;&lt;br /&gt;
                                &amp;lt;span style=&amp;quot;font-size:13px; color:#334155; line-height:1.4;&amp;quot;&amp;gt;${val}&amp;lt;/span&amp;gt;&lt;br /&gt;
                            &amp;lt;/div&amp;gt;&lt;br /&gt;
                        `);&lt;br /&gt;
                        $(&#039;#desc-in-&#039; + k).val(val);&lt;br /&gt;
                    }&lt;br /&gt;
                });&lt;br /&gt;
&lt;br /&gt;
                if (!foundAny) {&lt;br /&gt;
                    $statusBox.html(&#039;&amp;lt;div style=&amp;quot;color:#cbd5e0; font-size:13px; background:#f8fafc; padding:10px; border-radius:8px; border:1px dashed #e2e8f0;&amp;quot;&amp;gt;Belum ada metadata deskripsi yang dikaitkan dengan entitas ini.&amp;lt;/div&amp;gt;&#039;);&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        $(document).on(&#039;click&#039;, &#039;#desc-open-editor&#039;, function() { $(&#039;#desc-editor&#039;).slideToggle(); });&lt;br /&gt;
&lt;br /&gt;
        $(document).on(&#039;click&#039;, &#039;#desc-save&#039;, function() {&lt;br /&gt;
            if (!isAdmin) { alert(&#039;Akses ditolak. Anda memerlukan izin pengurus.&#039;); return; }&lt;br /&gt;
            var $btn = $(this).text(&#039;Proses Sinkronisasi...&#039;).css(&#039;opacity&#039;,&#039;0.7&#039;);&lt;br /&gt;
            var api = new mw.Api();&lt;br /&gt;
            var newData = { id: $(&#039;#desc-in-id&#039;).val().trim(), en: $(&#039;#desc-in-en&#039;).val().trim(), concise: $(&#039;#desc-in-concise&#039;).val().trim() };&lt;br /&gt;
&lt;br /&gt;
            api.get({ action: &#039;query&#039;, prop: &#039;revisions&#039;, titles: storagePage, rvprop: &#039;content&#039;, formatversion: 2 }).done(function(r) {&lt;br /&gt;
                var json = r.query.pages[0].revisions ? JSON.parse(r.query.pages[0].revisions[0].content) : {};&lt;br /&gt;
                if (!newData.id &amp;amp;&amp;amp; !newData.en &amp;amp;&amp;amp; !newData.concise) { delete json[pageTitle]; } else { json[pageTitle] = newData; }&lt;br /&gt;
&lt;br /&gt;
                api.postWithEditToken({&lt;br /&gt;
                    action: &#039;edit&#039;,&lt;br /&gt;
                    title: storagePage,&lt;br /&gt;
                    text: JSON.stringify(json, null, 2),&lt;br /&gt;
                    summary: &#039;Update Entity Description: &#039; + pageTitle&lt;br /&gt;
                }).done(function() { location.reload(); });&lt;br /&gt;
            });&lt;br /&gt;
        });&lt;br /&gt;
&lt;br /&gt;
        loadDescStatus();&lt;br /&gt;
    });&lt;br /&gt;
})(jQuery, mediaWiki);&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================&lt;br /&gt;
   📍 MIPPEDIA DATA - ULTIMATE TEXT-TO-MAP LOCATOR&lt;br /&gt;
   Fitur: Deteksi lokasi dari teks dengan database label lengkap&lt;br /&gt;
   ========================================================== */&lt;br /&gt;
(function() {&lt;br /&gt;
    $(document).ready(function() {&lt;br /&gt;
        var locationText = &amp;quot;&amp;quot;;&lt;br /&gt;
        &lt;br /&gt;
        // --- DAFTAR LABEL SUPER LENGKAP &amp;amp; MASUK AKAL ---&lt;br /&gt;
        var locationLabels = [&lt;br /&gt;
            // Umum &amp;amp; Geografis&lt;br /&gt;
            &#039;lokasi&#039;, &#039;tempat&#039;, &#039;wilayah&#039;, &#039;daerah&#039;, &#039;koordinat&#039;, &#039;alamat&#039;,&lt;br /&gt;
            // Orang (Biografi)&lt;br /&gt;
            &#039;tempat lahir&#039;, &#039;asal&#039;, &#039;kediaman&#039;, &#039;domisili&#039;, &#039;negara asal&#039;,&lt;br /&gt;
            // Organisasi &amp;amp; Perusahaan&lt;br /&gt;
            &#039;kantor pusat&#039;, &#039;markas&#039;, &#039;cabang utama&#039;, &#039;titik operasi&#039;,&lt;br /&gt;
            // Makanan &amp;amp; Budaya&lt;br /&gt;
            &#039;asal wilayah&#039;, &#039;daerah asal&#039;, &#039;negara sumber&#039;, &#039;kawasan&#039;,&lt;br /&gt;
            // Sejarah &amp;amp; Bangunan&lt;br /&gt;
            &#039;letak&#039;, &#039;posisi&#039;, &#039;titik temu&#039;, &#039;orbit&#039;&lt;br /&gt;
        ];&lt;br /&gt;
&lt;br /&gt;
        // Jalankan pencarian di tabel data (infobox atau wikitable)&lt;br /&gt;
        $(&#039;.wikitable tr, .infobox tr, .mip-data-table tr&#039;).each(function() {&lt;br /&gt;
            var label = $(this).find(&#039;th&#039;).text().toLowerCase().trim();&lt;br /&gt;
            // Hilangkan karakter spesial kayak titik dua biar matching-nya akurat&lt;br /&gt;
            label = label.replace(/[:]/g, &#039;&#039;);&lt;br /&gt;
&lt;br /&gt;
            var isMatch = locationLabels.some(function(target) {&lt;br /&gt;
                return label === target || label.includes(target);&lt;br /&gt;
            });&lt;br /&gt;
&lt;br /&gt;
            if (isMatch) {&lt;br /&gt;
                var rawValue = $(this).find(&#039;td&#039;).text().trim();&lt;br /&gt;
                // Ambil bagian utama sebelum tanda koma, kurung, atau titik koma&lt;br /&gt;
                // Misal: &amp;quot;Bandung, Jawa Barat&amp;quot; -&amp;gt; ambil &amp;quot;Bandung&amp;quot;&lt;br /&gt;
                locationText = rawValue.split(/[,(\[;]/)[0].trim(); &lt;br /&gt;
                &lt;br /&gt;
                if (locationText.length &amp;gt; 2) return false; // Stop jika sudah ketemu yang valid&lt;br /&gt;
            }&lt;br /&gt;
        });&lt;br /&gt;
&lt;br /&gt;
        // Eksekusi Render Peta&lt;br /&gt;
        if (locationText &amp;amp;&amp;amp; locationText.length &amp;gt; 2) {&lt;br /&gt;
            var $mapWrapper = $(&#039;&amp;lt;div&amp;gt;&#039;).css({&lt;br /&gt;
                &#039;margin&#039;: &#039;15px 0&#039;,&lt;br /&gt;
                &#039;padding&#039;: &#039;12px&#039;,&lt;br /&gt;
                &#039;border&#039;: &#039;1px solid #ddd&#039;,&lt;br /&gt;
                &#039;background&#039;: &#039;#ffffff&#039;,&lt;br /&gt;
                &#039;border-radius&#039;: &#039;10px&#039;,&lt;br /&gt;
                &#039;box-shadow&#039;: &#039;0 4px 12px rgba(0,0,0,0.08)&#039;&lt;br /&gt;
            });&lt;br /&gt;
&lt;br /&gt;
            $mapWrapper.append(&#039;&amp;lt;div style=&amp;quot;font-weight:bold; font-size:0.9em; margin-bottom:10px; color:#444; display:flex; align-items:center;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                               &#039;&amp;lt;span style=&amp;quot;margin-right:8px;&amp;quot;&amp;gt;🗺️&amp;lt;/span&amp;gt;Pratinjau Lokasi : &#039; + locationText + &#039;&amp;lt;/div&amp;gt;&#039;);&lt;br /&gt;
&lt;br /&gt;
            // Embed URL dengan pencarian teks (Nominatim)&lt;br /&gt;
            var embedUrl = &amp;quot;https://www.openstreetmap.org/export/embed.html?layer=mapnik&amp;amp;q=&amp;quot; + encodeURIComponent(locationText);&lt;br /&gt;
&lt;br /&gt;
            var $iframe = $(&#039;&amp;lt;iframe&amp;gt;&#039;).attr({&lt;br /&gt;
                &#039;src&#039;: embedUrl,&lt;br /&gt;
                &#039;width&#039;: &#039;100%&#039;,&lt;br /&gt;
                &#039;height&#039;: &#039;280&#039;,&lt;br /&gt;
                &#039;frameborder&#039;: &#039;0&#039;,&lt;br /&gt;
                &#039;style&#039;: &#039;border-radius: 8px; border: 1px solid #eee;&#039;&lt;br /&gt;
            });&lt;br /&gt;
&lt;br /&gt;
            $mapWrapper.append($iframe);&lt;br /&gt;
            &lt;br /&gt;
            // Link eksternal yang lebih rapi&lt;br /&gt;
            var gMapsUrl = &amp;quot;https://www.google.com/maps/search/&amp;quot; + encodeURIComponent(locationText);&lt;br /&gt;
            $mapWrapper.append(&#039;&amp;lt;div style=&amp;quot;text-align:right; margin-top:8px;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                               &#039;&amp;lt;a href=&amp;quot;&#039; + gMapsUrl + &#039;&amp;quot; target=&amp;quot;_blank&amp;quot; style=&amp;quot;font-size:0.75em; color:#6a5acd; font-weight:bold; text-decoration:none; text-transform:uppercase; letter-spacing:0.5px;&amp;quot;&amp;gt;Buka di Google Maps →&amp;lt;/a&amp;gt;&amp;lt;/div&amp;gt;&#039;);&lt;br /&gt;
&lt;br /&gt;
            // Masukkan ke bawah section deskripsi otomatis&lt;br /&gt;
            if ($(&#039;#mip-desc-section&#039;).length) {&lt;br /&gt;
                $(&#039;#mip-desc-section&#039;).after($mapWrapper);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    });&lt;br /&gt;
})();&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://data.mippedia.org/index.php?title=MediaWiki:Common.js&amp;diff=906</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://data.mippedia.org/index.php?title=MediaWiki:Common.js&amp;diff=906"/>
		<updated>2026-06-01T17:30:43Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* ==========================================================&lt;br /&gt;
   🚀 MIPPEDIA DATA - CORE SYSTEM (ULTIMATE BUNDLE)&lt;br /&gt;
   Status: FINAL &amp;amp; REVISED (Visual Fix + Permission Logic)&lt;br /&gt;
   Fix: Mobile Responsive Notification Position&lt;br /&gt;
   ========================================================== */&lt;br /&gt;
&lt;br /&gt;
(function() {&lt;br /&gt;
    $(document).ready(function() {&lt;br /&gt;
        // --- 1. FILTER GLOBAL (Namespace 0 &amp;amp; Bukan Halaman Utama) ---&lt;br /&gt;
        if (mw.config.get(&#039;wgNamespaceNumber&#039;) !== 0 || &lt;br /&gt;
            mw.config.get(&#039;wgIsMainPage&#039;) || &lt;br /&gt;
            mw.config.get(&#039;wgAction&#039;) !== &#039;view&#039;) return;&lt;br /&gt;
&lt;br /&gt;
        var pageTitle = mw.config.get(&#039;wgPageName&#039;);&lt;br /&gt;
        var dataPage = &#039;MediaWiki:Sitelinks-Data.json&#039;;&lt;br /&gt;
        var userGroups = mw.config.get(&#039;wgUserGroups&#039;);&lt;br /&gt;
        var isAdmin = userGroups.includes(&#039;sysop&#039;) || userGroups.includes(&#039;interface-admin&#039;);&lt;br /&gt;
&lt;br /&gt;
        var projects = {&lt;br /&gt;
            &#039;id&#039;: { name: &#039;ID&#039;, url: &#039;https://id.mippedia.org/api.php&#039;, base: &#039;https://id.mippedia.org/wiki/&#039;, color: &#039;#6a5acd&#039; },&lt;br /&gt;
            &#039;en&#039;: { name: &#039;EN&#039;, url: &#039;https://en.mippedia.org/api.php&#039;, base: &#039;https://en.mippedia.org/wiki/&#039;, color: &#039;#4169e1&#039; },&lt;br /&gt;
            &#039;concise&#039;: { name: &#039;Concise&#039;, url: &#039;https://concise.mippedia.org/api.php&#039;, base: &#039;https://concise.mippedia.org/wiki/&#039;, color: &#039;#20b2aa&#039; }&lt;br /&gt;
        };&lt;br /&gt;
&lt;br /&gt;
        // --- 2. KOTAK NOTIFIKASI INFORMASI MODERN (FIXED MOBILE POSITION) ---&lt;br /&gt;
        function showBoxNotif(title, msg, type) {&lt;br /&gt;
            $(&#039;.mip-box-notif&#039;).remove();&lt;br /&gt;
            var theme = type === &#039;success&#039; ? {bg:&#039;#e6fffa&#039;, border:&#039;#38b2ac&#039;, text:&#039;#234e52&#039;, icon:&#039;&#039;} : &lt;br /&gt;
                        {bg:&#039;#fff5f5&#039;, border:&#039;#f56565&#039;, text:&#039;#742a2a&#039;, icon:&#039;&#039;};&lt;br /&gt;
            &lt;br /&gt;
            // Logika CSS Responsif untuk posisi&lt;br /&gt;
            var isMobile = window.innerWidth &amp;lt;= 768;&lt;br /&gt;
            var desktopStyle = &amp;quot;top:25px; right:25px; width:350px;&amp;quot;;&lt;br /&gt;
            var mobileStyle = &amp;quot;top:15px; left:50%; transform:translateX(-50%); width:90%; max-width:400px;&amp;quot;;&lt;br /&gt;
            var finalPos = isMobile ? mobileStyle : desktopStyle;&lt;br /&gt;
&lt;br /&gt;
            var $notif = $(&#039;&amp;lt;div class=&amp;quot;mip-box-notif&amp;quot; style=&amp;quot;position:fixed; &#039; + finalPos + &#039; background:&#039;+theme.bg+&#039;; border-left:6px solid &#039;+theme.border+&#039;; padding:18px; z-index:10001; border-radius:12px; box-shadow:0 15px 35px rgba(0,0,0,0.2); font-family:sans-serif; animation:mipSlideIn 0.4s ease-out;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                &#039;&amp;lt;div style=&amp;quot;display:flex; align-items:center; gap:12px; margin-bottom:8px;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                    &#039;&amp;lt;span style=&amp;quot;font-size:20px;&amp;quot;&amp;gt;&#039;+theme.icon+&#039;&amp;lt;/span&amp;gt;&#039; +&lt;br /&gt;
                    &#039;&amp;lt;strong style=&amp;quot;color:&#039;+theme.text+&#039;; font-size:15px; letter-spacing:-0.3px;&amp;quot;&amp;gt;&#039;+title+&#039;&amp;lt;/strong&amp;gt;&#039; +&lt;br /&gt;
                &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
                &#039;&amp;lt;p style=&amp;quot;margin:0; font-size:13px; color:&#039;+theme.text+&#039;; line-height:1.6; opacity:0.9;&amp;quot;&amp;gt;&#039;+msg+&#039;&amp;lt;/p&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;/div&amp;gt;&#039;).appendTo(&#039;body&#039;);&lt;br /&gt;
&lt;br /&gt;
            setTimeout(function() { $notif.fadeOut(function(){ $(this).remove(); }); }, 5500);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // --- 3. UI GENERATOR (DIPERTEBAL) ---&lt;br /&gt;
&lt;br /&gt;
      // A. Header Pro&lt;br /&gt;
        var headerHtml = &#039;&amp;lt;div id=&amp;quot;mip-header&amp;quot; style=&amp;quot;background:#f8f9fa; border:1px solid #ddd; border-left:6px solid #6a5acd; padding:18px; margin-bottom:25px; border-radius:6px; box-shadow:inset 0 0 10px rgba(0,0,0,0.02);&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;div style=&amp;quot;display:flex; align-items:center; gap:10px; margin-bottom:8px;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;span style=&amp;quot;background:#6a5acd; color:white; padding:3px 10px; border-radius:4px; font-size:11px; font-weight:bold; text-transform:uppercase; letter-spacing:0.5px;&amp;quot;&amp;gt;Basis Data Terstruktur&amp;lt;/span&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;strong style=&amp;quot;color:#111; font-size:16px;&amp;quot;&amp;gt;&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;p style=&amp;quot;margin:0; font-size:13px; color:#444; line-height:1.6;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
            &#039;Halaman ini adalah metadata entitas repositori pusat yang disinkronisasi secara otomatis lintas ekosistem. &#039; +&lt;br /&gt;
            &#039;Informasi di bawah ini bersifat teknis dan bebas digunakan sebagai referensi data terbuka bagi semua orang di seluruh dunia berdasarkan lisensi atribusi yang sesuai.&#039; +&lt;br /&gt;
            &#039;&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
        // B. Connector Box&lt;br /&gt;
        var editBtn = &#039;&amp;lt;span id=&amp;quot;mip-open-editor&amp;quot; style=&amp;quot;cursor:pointer; font-size:20px; color:#6a5acd; opacity:0.8; transition:0.3s;&amp;quot; onmouseover=&amp;quot;this.style.opacity=1&amp;quot; onmouseout=&amp;quot;this.style.opacity=0.8&amp;quot;&amp;gt;✎&amp;lt;/span&amp;gt;&#039;;&lt;br /&gt;
        var connectorHtml = &#039;&amp;lt;div id=&amp;quot;mip-connector&amp;quot; style=&amp;quot;background:#fff; border:1px solid #e2e8f0; border-radius:16px; padding:22px; margin-top:30px; box-shadow:0 10px 25px rgba(0,0,0,0.04);&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;div style=&amp;quot;display:flex; justify-content:space-between; align-items:center; margin-bottom:20px;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;strong style=&amp;quot;font-size:15px; color:#1a202c; display:flex; align-items:center; gap:8px;&amp;quot;&amp;gt;ID situs&amp;lt;/strong&amp;gt;&#039;+editBtn+&#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;div id=&amp;quot;mip-display&amp;quot; style=&amp;quot;display:flex; gap:12px; flex-wrap:wrap;&amp;quot;&amp;gt;&amp;lt;small style=&amp;quot;color:#a0aec0;&amp;quot;&amp;gt;Mensinkronisasi basis data...&amp;lt;/small&amp;gt;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;div id=&amp;quot;mip-editor&amp;quot; style=&amp;quot;display:none; margin-top:20px; border-top:2px solid #f7fafc; padding-top:20px;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                Object.keys(projects).map(p =&amp;gt; &#039;&amp;lt;div style=&amp;quot;margin-bottom:12px; display:flex; gap:10px;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;width:75px; font-size:11px; font-weight:bold; background:#edf2f7; display:flex; align-items:center; justify-content:center; border-radius:8px; color:#4a5568;&amp;quot;&amp;gt;&#039;+projects[p].name+&#039;&amp;lt;/span&amp;gt;&amp;lt;input type=&amp;quot;text&amp;quot; id=&amp;quot;in-&#039;+p+&#039;&amp;quot; placeholder=&amp;quot;Judul artikel di &#039;+projects[p].name+&#039;...&amp;quot; style=&amp;quot;flex:1; padding:10px; font-size:13px; border:1.5px solid #e2e8f0; border-radius:10px; outline:none; transition:0.2s;&amp;quot; onfocus=&amp;quot;this.style.borderColor=\&#039;#6a5acd\&#039;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;).join(&#039;&#039;) +&lt;br /&gt;
                &#039;&amp;lt;button id=&amp;quot;mip-save&amp;quot; style=&amp;quot;width:100%; padding:14px; background:#6a5acd; color:white; border:none; border-radius:12px; font-size:14px; font-weight:bold; cursor:pointer; box-shadow:0 4px 12px rgba(106,90,205,0.3); transition:0.3s;&amp;quot;&amp;gt;Terbitkan&amp;lt;/button&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
        // C. Footer Lisensi Lengkap&lt;br /&gt;
        var footerHtml = &#039;&amp;lt;div id=&amp;quot;mip-footer&amp;quot; style=&amp;quot;background:#fafafa; border:1px solid #eee; border-radius:10px; padding:20px; margin-top:30px; text-align:center;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;div style=&amp;quot;font-size:11px; color:#718096; font-weight:800; text-transform:uppercase; letter-spacing:1px; margin-bottom:10px;&amp;quot;&amp;gt;Lisensi, Atribusi &amp;amp; Penggunaan Data&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;p style=&amp;quot;margin:0 0 10px; font-size:13px; color:#4a5568; line-height:1.6;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
            &#039;Seluruh data terstruktur yang tersaji dalam repositori ini merupakan milik publik dan tersedia di bawah lisensi resmi &#039; +&lt;br /&gt;
            &#039;&amp;lt;a href=&amp;quot;https://creativecommons.org/licenses/by-sa/4.0/&amp;quot; target=&amp;quot;_blank&amp;quot; style=&amp;quot;color:#6a5acd; text-decoration:none; font-weight:700;&amp;quot;&amp;gt;Creative Commons Attribution-ShareAlike 4.0 International&amp;lt;/a&amp;gt;.&#039; +&lt;br /&gt;
            &#039;&amp;lt;/p&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;p style=&amp;quot;margin:0; font-size:12px; color:#a0aec0;&amp;quot;&amp;gt;Akses API dan penggunaan data secara massal wajib mencantumkan atribusi kepada &amp;lt;strong&amp;gt;Mippedia Community&amp;lt;/strong&amp;gt; selaku pengelola proyek.&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
        // Injeksi&lt;br /&gt;
        $(&#039;#mw-content-text&#039;).prepend(headerHtml);&lt;br /&gt;
        $(&#039;#mw-content-text&#039;).append(connectorHtml).append(footerHtml);&lt;br /&gt;
&lt;br /&gt;
        // --- 4. LOGIC ENGINE ---&lt;br /&gt;
        function loadLinks() {&lt;br /&gt;
            new mw.Api().get({ action: &#039;query&#039;, prop: &#039;revisions&#039;, titles: dataPage, rvprop: &#039;content&#039;, formatversion: 2 }).done(function(d) {&lt;br /&gt;
                var json = d.query.pages[0].revisions ? JSON.parse(d.query.pages[0].revisions[0].content) : {};&lt;br /&gt;
                var data = json[pageTitle] || {};&lt;br /&gt;
                var $box = $(&#039;#mip-display&#039;).empty();&lt;br /&gt;
                var found = false;&lt;br /&gt;
                Object.keys(projects).forEach(p =&amp;gt; {&lt;br /&gt;
                    if (data[p]) {&lt;br /&gt;
                        found = true;&lt;br /&gt;
                        $box.append(&#039;&amp;lt;a style=&amp;quot;background:&#039;+projects[p].color+&#039;; color:white; padding:8px 16px; border-radius:10px; font-size:12px; font-weight:bold; text-decoration:none; border-bottom:3px solid rgba(0,0,0,0.15);&amp;quot; href=&amp;quot;&#039;+projects[p].base+encodeURIComponent(data[p])+&#039;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Mippedia &#039;+projects[p].name+&#039;: &#039;+data[p]+&#039;&amp;lt;/a&amp;gt;&#039;);&lt;br /&gt;
                        $(&#039;#in-&#039; + p).val(data[p]);&lt;br /&gt;
                    }&lt;br /&gt;
                });&lt;br /&gt;
                if (!found) $box.html(&#039;&amp;lt;em style=&amp;quot;color:#cbd5e0; font-size:13px;&amp;quot;&amp;gt;Entitas ini belum terhubung ke cabang Mippedia manapun.&amp;lt;/em&amp;gt;&#039;);&lt;br /&gt;
            });&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        $(document).on(&#039;click&#039;, &#039;#mip-save&#039;, function() {&lt;br /&gt;
            // CEK IZIN: Tolak user biasa&lt;br /&gt;
            if (!isAdmin) {&lt;br /&gt;
                showBoxNotif(&#039;Suntingan anda tidak di terbitkan&#039;, &#039;Halaman ini dilindungi. Hanya &amp;lt;b&amp;gt;Pengurus&amp;lt;/b&amp;gt; yang memiliki otoritas untuk memodifikasi metadata ekosistem secara langsung.&#039;, &#039;error&#039;);&lt;br /&gt;
                return;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            var $btn = $(this).text(&#039;Sedang Memvalidasi...&#039;).prop(&#039;disabled&#039;, true);&lt;br /&gt;
            var api = new mw.Api();&lt;br /&gt;
            var newData = {}, promises = [], invalid = [], isDel = true;&lt;br /&gt;
&lt;br /&gt;
            Object.keys(projects).forEach(p =&amp;gt; {&lt;br /&gt;
                var v = $(&#039;#in-&#039; + p).val().trim();&lt;br /&gt;
                if (v) {&lt;br /&gt;
                    isDel = false;&lt;br /&gt;
                    promises.push($.ajax({ url: projects[p].url, data: { action: &#039;query&#039;, titles: v, format: &#039;json&#039;, origin: &#039;*&#039; }, dataType: &#039;json&#039; }).done(function(res){&lt;br /&gt;
                        if (res.query.pages[&amp;quot;-1&amp;quot;]) invalid.push(projects[p].name); else newData[p] = v;&lt;br /&gt;
                    }));&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
&lt;br /&gt;
            $.when.apply($, promises).then(function() {&lt;br /&gt;
                if (invalid.length &amp;gt; 0) {&lt;br /&gt;
                    showBoxNotif(&#039;Suntingan anda tidak di terbitkan&#039;, &#039;Artikel dengan judul tersebut tidak ditemukan di basis data Mippedia cabang: &#039; + invalid.join(&#039;, &#039;) + &#039;. Periksa kembali ejaan dan kapitalisasi.&#039;, &#039;error&#039;);&lt;br /&gt;
                    $btn.text(&#039;Terbitkan&#039;).prop(&#039;disabled&#039;, false); return;&lt;br /&gt;
                }&lt;br /&gt;
                &lt;br /&gt;
                api.get({ action: &#039;query&#039;, prop: &#039;revisions&#039;, titles: dataPage, rvprop: &#039;content&#039;, formatversion: 2 }).done(function(r) {&lt;br /&gt;
                    var full = r.query.pages[0].revisions ? JSON.parse(r.query.pages[0].revisions[0].content) : {};&lt;br /&gt;
                    if (isDel) delete full[pageTitle]; else full[pageTitle] = newData;&lt;br /&gt;
                    &lt;br /&gt;
                    api.postWithEditToken({ action: &#039;edit&#039;, title: dataPage, text: JSON.stringify(full, null, 2), summary: &#039;Sync Metadata: &#039; + pageTitle })&lt;br /&gt;
                    .done(function() {&lt;br /&gt;
                        showBoxNotif(&#039;Suntingan anda berhasil di terbitkan!&#039;, &#039;Metadata entitas berhasil disinkronisasi ke seluruh jaringan ekosistem Mippedia.&#039;, &#039;success&#039;);&lt;br /&gt;
                        setTimeout(function(){ location.reload(); }, 1500);&lt;br /&gt;
                    }).fail(function(c) {&lt;br /&gt;
                        showBoxNotif(&#039;Gagal Menyimpan&#039;, &#039;Terjadi kesalahan pada token API atau koneksi server. Kode: &#039; + c, &#039;error&#039;);&lt;br /&gt;
                        $btn.text(&#039;Simpan &amp;amp; Sinkronkan Data&#039;).prop(&#039;disabled&#039;, false);&lt;br /&gt;
                    });&lt;br /&gt;
                });&lt;br /&gt;
            });&lt;br /&gt;
        });&lt;br /&gt;
&lt;br /&gt;
        $(document).on(&#039;click&#039;, &#039;#mip-open-editor&#039;, function() { $(&#039;#mip-editor&#039;).slideToggle(); });&lt;br /&gt;
        loadLinks();&lt;br /&gt;
    });&lt;br /&gt;
})();&lt;br /&gt;
&lt;br /&gt;
(function() {&lt;br /&gt;
    // Fungsi utama suntik teks&lt;br /&gt;
    function forcePreload() {&lt;br /&gt;
        var ns = mw.config.get(&#039;wgNamespaceNumber&#039;);&lt;br /&gt;
        var pageExists = mw.config.get(&#039;wgArticleId&#039;) &amp;gt; 0;&lt;br /&gt;
        &lt;br /&gt;
        // Cek Namespace Utama &amp;amp; Halaman Baru&lt;br /&gt;
        if (ns === 0 &amp;amp;&amp;amp; !pageExists) {&lt;br /&gt;
            // Cari textarea secara spesifik (Desktop &amp;amp; Mobile punya selector beda)&lt;br /&gt;
            var $textbox = $(&#039;#wpTextbox1, textarea.mw-ui-input, .editor-container textarea&#039;);&lt;br /&gt;
            &lt;br /&gt;
            if ($textbox.length &amp;amp;&amp;amp; $textbox.val().trim() === &amp;quot;&amp;quot;) {&lt;br /&gt;
                var pageName = mw.config.get(&#039;wgTitle&#039;);&lt;br /&gt;
                $textbox.val(&#039;{{Infobox umum\n|nama = &#039; + pageName + &#039;\n}}&#039;);&lt;br /&gt;
                console.log(&amp;quot;Mippedia: Infobox injected!&amp;quot;);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // 1. Jalankan pas halaman beres load&lt;br /&gt;
    $(document).ready(forcePreload);&lt;br /&gt;
&lt;br /&gt;
    // 2. Jalankan tiap ada klik (karena mobile buka editor pake klik tanpa refresh)&lt;br /&gt;
    $(document).on(&#039;click&#039;, function() {&lt;br /&gt;
        setTimeout(forcePreload, 800); // Kasih delay dikit nunggu overlay muncul&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    // 3. Pake MutationObserver buat mantau elemen yang baru muncul secara gaib&lt;br /&gt;
    var observer = new MutationObserver(function() {&lt;br /&gt;
        forcePreload();&lt;br /&gt;
    });&lt;br /&gt;
    observer.observe(document.body, { childList: true, subtree: true });&lt;br /&gt;
})();&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================&lt;br /&gt;
   🚀 MIPPEDIA DATA - CONTENT GUARD (MODIFIED FOR RELATED)&lt;br /&gt;
   ========================================================== */&lt;br /&gt;
(function() {&lt;br /&gt;
    function handleBlock(e) {&lt;br /&gt;
        var ns = mw.config.get(&#039;wgNamespaceNumber&#039;);&lt;br /&gt;
        if (ns !== 0 || mw.config.get(&#039;wgIsMainPage&#039;)) return;&lt;br /&gt;
&lt;br /&gt;
        var $el = $(e.currentTarget);&lt;br /&gt;
        &lt;br /&gt;
        if ($el.closest(&#039;.mw-parser-output&#039;).length &amp;amp;&amp;amp; $el.text().toLowerCase().includes(&#039;buat item&#039;)) {&lt;br /&gt;
            return; &lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        var $textbox = $(&#039;#wpTextbox1, .editor-container textarea, textarea.mw-ui-input&#039;);&lt;br /&gt;
        &lt;br /&gt;
        if ($textbox.length) {&lt;br /&gt;
            var content = $textbox.val() || &amp;quot;&amp;quot;;&lt;br /&gt;
            &lt;br /&gt;
            // Pengecekan: Harus ada {{Infobox ATAU setidaknya ada kode #related&lt;br /&gt;
            var hasInfobox = content.includes(&#039;{{Infobox&#039;);&lt;br /&gt;
            var hasRelated = content.includes(&#039;#related:&#039;);&lt;br /&gt;
&lt;br /&gt;
            if (!hasInfobox &amp;amp;&amp;amp; !hasRelated) {&lt;br /&gt;
                e.preventDefault();&lt;br /&gt;
                e.stopPropagation();&lt;br /&gt;
                e.stopImmediatePropagation();&lt;br /&gt;
&lt;br /&gt;
                window.alert(&amp;quot;SUNTINGAN ANDA TIDAK BISA DI TERBITKAN!\n\nMippedia Data bukan tempat untuk menulis artikel ensiklopedia, Jika anda ingin membuat artikel ensiklopedia bukan di sini tempat nya.\n&amp;quot;);&lt;br /&gt;
                return false;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    $(document).on(&#039;click mousedown touchstart&#039;, &lt;br /&gt;
        &#039;#wpSave, .editor-save, .mw-ui-button.primary, button[type=&amp;quot;submit&amp;quot;], .save-button, .header-action button&#039;, &lt;br /&gt;
        function(e) {&lt;br /&gt;
            handleBlock(e);&lt;br /&gt;
        }&lt;br /&gt;
    );&lt;br /&gt;
&lt;br /&gt;
    window.addEventListener(&#039;submit&#039;, function(e) {&lt;br /&gt;
        handleBlock(e);&lt;br /&gt;
    }, true);&lt;br /&gt;
})();&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================&lt;br /&gt;
   🛡️ MIPPEDIA CORE SYSTEM - NEURAL ENGINE V12&lt;br /&gt;
   Update: Brain Upgrade - Semantic Search &amp;amp; Anti-Duplicate&lt;br /&gt;
   Semua fitur asli (Patroli, Promo, Kategori) tetap UTUH.&lt;br /&gt;
   ========================================================== */&lt;br /&gt;
mw.hook(&#039;postEdit&#039;).add(function() {&lt;br /&gt;
    var rawUser = mw.config.get(&#039;wgUserName&#039;);&lt;br /&gt;
    var userName = rawUser ? rawUser.replace(/_/g, &#039; &#039;) : &#039;Anonim&#039;;&lt;br /&gt;
    var isPatroli = (userName === &#039;Admin&#039;);&lt;br /&gt;
    &lt;br /&gt;
    if (mw.config.get(&#039;wgNamespaceNumber&#039;) !== 0) return;&lt;br /&gt;
&lt;br /&gt;
    var api = new mw.Api();&lt;br /&gt;
    var pageTitle = mw.config.get(&#039;wgPageName&#039;).replace(/_/g, &#039; &#039;);&lt;br /&gt;
&lt;br /&gt;
    api.get({&lt;br /&gt;
        action: &#039;query&#039;,&lt;br /&gt;
        titles: pageTitle,&lt;br /&gt;
        prop: &#039;revisions|categories|links&#039;,&lt;br /&gt;
        rvprop: &#039;content&#039;,&lt;br /&gt;
        clshow: &#039;!hidden&#039;,&lt;br /&gt;
        pllimit: &#039;max&#039;&lt;br /&gt;
    }).done(function(resData) {&lt;br /&gt;
        var page = resData.query.pages[Object.keys(resData.query.pages)[0]];&lt;br /&gt;
        if (!page || !page.revisions) return;&lt;br /&gt;
&lt;br /&gt;
        var rawContent = page.revisions[0][&#039;*&#039;];&lt;br /&gt;
        var content = rawContent;&lt;br /&gt;
        var summaryParts = [];&lt;br /&gt;
&lt;br /&gt;
        // --- 2. SUPER INTELLIGENCE RELATED (UPGRADE OTAK V12) ---&lt;br /&gt;
        // Cek jumlah related saat ini&lt;br /&gt;
        var currentRelatedMatch = content.match(/\{\{#related:.*?\}\}/g) || [];&lt;br /&gt;
        &lt;br /&gt;
        // Jika kurang dari 3, kita jalankan otak pencarian canggih&lt;br /&gt;
        if (currentRelatedMatch.length &amp;lt; 3) {&lt;br /&gt;
            // Hapus yang lama dulu agar tidak ada duplikat atau &amp;quot;pake yang bekas&amp;quot;&lt;br /&gt;
            content = content.replace(/\n*\{\{#related:.*?\}\}/g, &#039;&#039;);&lt;br /&gt;
&lt;br /&gt;
            // Langkah A: Ambil kandidat dari Search Engine (Ranking Skor)&lt;br /&gt;
            api.get({&lt;br /&gt;
                action: &#039;query&#039;,&lt;br /&gt;
                list: &#039;search&#039;,&lt;br /&gt;
                srsearch: pageTitle, // Gunakan judul sebagai basis pencarian semantic&lt;br /&gt;
                srlimit: 15,&lt;br /&gt;
                srprop: &#039;&#039;&lt;br /&gt;
            }).done(function(searchRes) {&lt;br /&gt;
                var candidates = {};&lt;br /&gt;
&lt;br /&gt;
                // Masukkan hasil pencarian ke pool skor&lt;br /&gt;
                if (searchRes.query &amp;amp;&amp;amp; searchRes.query.search) {&lt;br /&gt;
                    searchRes.query.search.forEach(function(item, index) {&lt;br /&gt;
                        if (item.title === pageTitle) return;&lt;br /&gt;
                        candidates[item.title] = (15 - index); // Skor berdasarkan urutan relevansi&lt;br /&gt;
                    });&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                // Langkah B: Tambah skor jika artikel ada di daftar Link Internal&lt;br /&gt;
                if (page.links) {&lt;br /&gt;
                    page.links.forEach(function(link) {&lt;br /&gt;
                        if (link.title === pageTitle) return;&lt;br /&gt;
                        candidates[link.title] = (candidates[link.title] || 0) + 5; // Bonus skor link&lt;br /&gt;
                    });&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                // Langkah C: Urutkan berdasarkan skor tertinggi (yang paling nyambung)&lt;br /&gt;
                var sortedTitles = Object.keys(candidates).sort(function(a, b) {&lt;br /&gt;
                    return candidates[b] - candidates[a];&lt;br /&gt;
                });&lt;br /&gt;
&lt;br /&gt;
                // Ambil TOP 3&lt;br /&gt;
                var finalRelated = sortedTitles.filter(t =&amp;gt; t.indexOf(&#039;:&#039;) === -1).slice(0, 3);&lt;br /&gt;
&lt;br /&gt;
                if (finalRelated.length &amp;gt; 0) {&lt;br /&gt;
                    var relatedTags = &#039;\n\n&#039; + finalRelated.map(t =&amp;gt; &#039;{{#related: &#039; + t + &#039;}}&#039;).join(&#039;\n&#039;);&lt;br /&gt;
                    content += relatedTags;&lt;br /&gt;
                    summaryParts.push(&#039;NeuralRelated&#039;);&lt;br /&gt;
                }&lt;br /&gt;
                &lt;br /&gt;
                runPatroliAndSave();&lt;br /&gt;
            });&lt;br /&gt;
        } else {&lt;br /&gt;
            runPatroliAndSave();&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        function runPatroliAndSave() {&lt;br /&gt;
            // --- 3. PATROLI ENGINE (FITUR ASLI - TETAP BERFUNGSI) ---&lt;br /&gt;
            if (isPatroli) {&lt;br /&gt;
                var placeholders = [];&lt;br /&gt;
                // Lindungi Brankas: Template, Header, Kategori, Ref, dan Kalimat Pembuka&lt;br /&gt;
                content = content.replace(/(\{\{[\s\S]*?\}\}|==+.*?==+|\[\[Kategori:.*?\]\]|&amp;lt;ref[\s\S]*?&amp;lt;\/ref&amp;gt;|^.*?adalah)/gi, function(match) {&lt;br /&gt;
                    placeholders.push(match);&lt;br /&gt;
                    return &#039;___MIP_SKIP_&#039; + (placeholders.length - 1) + &#039;___&#039;;&lt;br /&gt;
                });&lt;br /&gt;
&lt;br /&gt;
                // Proses Auto-Link (Wajib ambil daftar AllPages dulu)&lt;br /&gt;
                api.get({ action: &#039;query&#039;, list: &#039;allpages&#039;, apnamespace: 0, aplimit: &#039;max&#039; }).done(function(apData) {&lt;br /&gt;
                    var allTitles = apData.query.allpages.map(p =&amp;gt; p.title);&lt;br /&gt;
                    var lowerTitles = allTitles.map(t =&amp;gt; t.toLowerCase());&lt;br /&gt;
&lt;br /&gt;
                    var tokens = content.split(/(\s+|\[\[|\]\])/);&lt;br /&gt;
                    var inLink = false;&lt;br /&gt;
                    for (var i = 0; i &amp;lt; tokens.length; i++) {&lt;br /&gt;
                        if (tokens[i] === &#039;[[&#039; ) { inLink = true; continue; }&lt;br /&gt;
                        if (tokens[i] === &#039;]]&#039; ) { inLink = false; continue; }&lt;br /&gt;
                        if (inLink || tokens[i].trim().length &amp;lt; 3 || tokens[i].includes(&#039;___MIP_SKIP_&#039;)) continue;&lt;br /&gt;
&lt;br /&gt;
                        var wordsInToken = tokens[i].match(/\b\w+\b/g);&lt;br /&gt;
                        if (wordsInToken) {&lt;br /&gt;
                            wordsInToken.forEach(function(word) {&lt;br /&gt;
                                var idx = lowerTitles.indexOf(word.toLowerCase());&lt;br /&gt;
                                if (idx !== -1 &amp;amp;&amp;amp; allTitles[idx] !== pageTitle) {&lt;br /&gt;
                                    tokens[i] = tokens[i].replace(new RegExp(&#039;\\b&#039; + word + &#039;\\b&#039;, &#039;g&#039;), &#039;[[&#039; + allTitles[idx] + &#039;|&#039; + word + &#039;]]&#039;);&lt;br /&gt;
                                }&lt;br /&gt;
                            });&lt;br /&gt;
                        }&lt;br /&gt;
                    }&lt;br /&gt;
                    content = tokens.join(&#039;&#039;);&lt;br /&gt;
                    &lt;br /&gt;
                    // Kembalikan dari Brankas&lt;br /&gt;
                    content = content.replace(/___MIP_SKIP_(\d+)___/g, function(match, id) { return placeholders[id]; });&lt;br /&gt;
&lt;br /&gt;
                    // Bersihkan Link Merah&lt;br /&gt;
                    content = content.replace(/\[\[([^|\]:]+)\]\]/g, function(match, p1) {&lt;br /&gt;
                        return lowerTitles.includes(p1.toLowerCase()) ? match : p1;&lt;br /&gt;
                    });&lt;br /&gt;
&lt;br /&gt;
                    saveAction();&lt;br /&gt;
                });&lt;br /&gt;
            } else {&lt;br /&gt;
                saveAction();&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        function saveAction() {&lt;br /&gt;
            // --- 4. EKSEKUSI ---&lt;br /&gt;
            if (content.trim() !== rawContent.trim()) {&lt;br /&gt;
                api.postWithToken(&#039;edit&#039;, {&lt;br /&gt;
                    action: &#039;edit&#039;,&lt;br /&gt;
                    title: pageTitle,&lt;br /&gt;
                    text: content,&lt;br /&gt;
                    summary: &#039;Mippedia Neural Engine V12: &#039; + summaryParts.join(&#039;, &#039;),&lt;br /&gt;
                    bot: true, markasbot: true&lt;br /&gt;
                }).done(function() { location.reload(); });&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    });&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================&lt;br /&gt;
   🌐 MIPPEDIA SHORTDESC - DATA CENTER (PREMIUM UI)&lt;br /&gt;
   Status: INDEPENDENT &amp;amp; REFINED VISUAL&lt;br /&gt;
   Storage: MediaWiki:ShortDesc-Data.json&lt;br /&gt;
   ========================================================== */&lt;br /&gt;
(function($, mw) {&lt;br /&gt;
    &amp;quot;use strict&amp;quot;;&lt;br /&gt;
    $(document).ready(function() {&lt;br /&gt;
        if (mw.config.get(&#039;wgNamespaceNumber&#039;) !== 0 || mw.config.get(&#039;wgIsMainPage&#039;)) return;&lt;br /&gt;
&lt;br /&gt;
        var pageTitle = mw.config.get(&#039;wgPageName&#039;);&lt;br /&gt;
        var storagePage = &#039;MediaWiki:ShortDesc-Data.json&#039;;&lt;br /&gt;
        var isAdmin = mw.config.get(&#039;wgUserGroups&#039;).some(g =&amp;gt; [&#039;sysop&#039;, &#039;interface-admin&#039;].includes(g));&lt;br /&gt;
&lt;br /&gt;
        var langs = {&lt;br /&gt;
            id: { label: &#039;Mippedia bahasa Indonesia&#039;, short: &#039;ID&#039;, color: &#039;#6366f1&#039; },&lt;br /&gt;
            en: { label: &#039;Mippedia bahasa Inggris&#039;, short: &#039;EN&#039;, color: &#039;#3b82f6&#039; },&lt;br /&gt;
            concise: { label: &#039;Mippedia bahasa Indonesia ringkas&#039;, short: &#039;CON&#039;, color: &#039;#14b8a6&#039; }&lt;br /&gt;
        };&lt;br /&gt;
&lt;br /&gt;
        // UI Box dengan Spasi dan Desain Baru&lt;br /&gt;
        var html = `&lt;br /&gt;
            &amp;lt;div id=&amp;quot;desc-manager&amp;quot; style=&amp;quot;background:#ffffff; border:1px solid #f1f5f9; border-left:4px solid #6366f1; border-radius:12px; padding:20px; margin: 20px 0 25px 0; box-shadow:0 4px 12px rgba(0,0,0,0.03); font-family: -apple-system,BlinkMacSystemFont,&#039;Segoe UI&#039;,Roboto,sans-serif;&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;div style=&amp;quot;display:flex; justify-content:space-between; align-items:center; margin-bottom:12px;&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;span style=&amp;quot;font-size:13px; font-weight:700; color:#475569; text-transform:uppercase; letter-spacing:0.5px; display:flex; align-items:center; gap:6px;&amp;quot;&amp;gt;&lt;br /&gt;
                        Label Deskripsi&lt;br /&gt;
                    &amp;lt;/span&amp;gt;&lt;br /&gt;
                    &amp;lt;span id=&amp;quot;desc-open-editor&amp;quot; style=&amp;quot;cursor:pointer; padding:5px; transition:0.2s;&amp;quot; title=&amp;quot;Edit Deskripsi&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;svg width=&amp;quot;16&amp;quot; height=&amp;quot;16&amp;quot; viewBox=&amp;quot;0 0 24 24&amp;quot; fill=&amp;quot;none&amp;quot; stroke=&amp;quot;#94a3b8&amp;quot; stroke-width=&amp;quot;2&amp;quot; stroke-linecap=&amp;quot;round&amp;quot; stroke-linejoin=&amp;quot;round&amp;quot;&amp;gt;&amp;lt;path d=&amp;quot;M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7&amp;quot;&amp;gt;&amp;lt;/path&amp;gt;&amp;lt;path d=&amp;quot;M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z&amp;quot;&amp;gt;&amp;lt;/path&amp;gt;&amp;lt;/svg&amp;gt;&lt;br /&gt;
                    &amp;lt;/span&amp;gt;&lt;br /&gt;
                &amp;lt;/div&amp;gt;&lt;br /&gt;
                &lt;br /&gt;
                &amp;lt;div id=&amp;quot;desc-status-display&amp;quot; style=&amp;quot;display:flex; flex-direction:column; gap:8px;&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;small style=&amp;quot;color:#94a3b8; font-style:italic;&amp;quot;&amp;gt;Sinkronisasi data...&amp;lt;/small&amp;gt;&lt;br /&gt;
                &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;div id=&amp;quot;desc-editor&amp;quot; style=&amp;quot;display:none; margin-top:18px; border-top:1px dashed #e2e8f0; padding-top:18px;&amp;quot;&amp;gt;&lt;br /&gt;
                    ${Object.keys(langs).map(k =&amp;gt; `&lt;br /&gt;
                        &amp;lt;div style=&amp;quot;margin-bottom:12px;&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;label style=&amp;quot;display:block; font-size:11px; font-weight:bold; color:#64748b; margin-bottom:4px;&amp;quot;&amp;gt;${langs[k].label}&amp;lt;/label&amp;gt;&lt;br /&gt;
                            &amp;lt;input type=&amp;quot;text&amp;quot; id=&amp;quot;desc-in-${k}&amp;quot; placeholder=&amp;quot;Tulis deskripsi...&amp;quot; style=&amp;quot;width:100%; padding:10px; font-size:13px; border:1px solid #e2e8f0; border-radius:8px; box-sizing:border-box; outline:none; focus:border-color:#6366f1;&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;/div&amp;gt;&lt;br /&gt;
                    `).join(&#039;&#039;)}&lt;br /&gt;
                    &amp;lt;button id=&amp;quot;desc-save&amp;quot; style=&amp;quot;width:100%; padding:12px; background:#6366f1; color:white; border:none; border-radius:8px; font-size:13px; font-weight:600; cursor:pointer; margin-top:5px;&amp;quot;&amp;gt;Terbitkan&amp;lt;/button&amp;gt;&lt;br /&gt;
                &amp;lt;/div&amp;gt;&lt;br /&gt;
            &amp;lt;/div&amp;gt;`;&lt;br /&gt;
&lt;br /&gt;
        $(&#039;.mw-parser-output&#039;).prepend(html);&lt;br /&gt;
&lt;br /&gt;
        function loadDescStatus() {&lt;br /&gt;
            new mw.Api().get({ action: &#039;query&#039;, prop: &#039;revisions&#039;, titles: storagePage, rvprop: &#039;content&#039;, formatversion: 2 }).done(function(res) {&lt;br /&gt;
                var content = res.query.pages[0].revisions ? res.query.pages[0].revisions[0].content : &amp;quot;{}&amp;quot;;&lt;br /&gt;
                var fullData = JSON.parse(content);&lt;br /&gt;
                var myData = fullData[pageTitle] || {};&lt;br /&gt;
                var $statusBox = $(&#039;#desc-status-display&#039;).empty();&lt;br /&gt;
                var foundAny = false;&lt;br /&gt;
&lt;br /&gt;
                Object.keys(langs).forEach(k =&amp;gt; {&lt;br /&gt;
                    var val = myData[k];&lt;br /&gt;
                    if (val &amp;amp;&amp;amp; val.trim() !== &amp;quot;&amp;quot;) {&lt;br /&gt;
                        foundAny = true;&lt;br /&gt;
                        $statusBox.append(`&lt;br /&gt;
                            &amp;lt;div style=&amp;quot;display:flex; align-items:center; gap:10px;&amp;quot;&amp;gt;&lt;br /&gt;
                                &amp;lt;span style=&amp;quot;background:${langs[k].color}15; color:${langs[k].color}; padding:3px 10px; border-radius:20px; font-size:10px; font-weight:800; border:1px solid ${langs[k].color}30; min-width:35px; text-align:center;&amp;quot;&amp;gt;${langs[k].short}&amp;lt;/span&amp;gt;&lt;br /&gt;
                                &amp;lt;span style=&amp;quot;font-size:13px; color:#334155; line-height:1.4;&amp;quot;&amp;gt;${val}&amp;lt;/span&amp;gt;&lt;br /&gt;
                            &amp;lt;/div&amp;gt;&lt;br /&gt;
                        `);&lt;br /&gt;
                        $(&#039;#desc-in-&#039; + k).val(val);&lt;br /&gt;
                    }&lt;br /&gt;
                });&lt;br /&gt;
&lt;br /&gt;
                if (!foundAny) {&lt;br /&gt;
                    $statusBox.html(&#039;&amp;lt;div style=&amp;quot;color:#cbd5e0; font-size:13px; background:#f8fafc; padding:10px; border-radius:8px; border:1px dashed #e2e8f0;&amp;quot;&amp;gt;Belum ada metadata deskripsi yang dikaitkan dengan entitas ini.&amp;lt;/div&amp;gt;&#039;);&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        $(document).on(&#039;click&#039;, &#039;#desc-open-editor&#039;, function() { $(&#039;#desc-editor&#039;).slideToggle(); });&lt;br /&gt;
&lt;br /&gt;
        $(document).on(&#039;click&#039;, &#039;#desc-save&#039;, function() {&lt;br /&gt;
            if (!isAdmin) { alert(&#039;Akses ditolak. Anda memerlukan izin pengurus.&#039;); return; }&lt;br /&gt;
            var $btn = $(this).text(&#039;Proses Sinkronisasi...&#039;).css(&#039;opacity&#039;,&#039;0.7&#039;);&lt;br /&gt;
            var api = new mw.Api();&lt;br /&gt;
            var newData = { id: $(&#039;#desc-in-id&#039;).val().trim(), en: $(&#039;#desc-in-en&#039;).val().trim(), concise: $(&#039;#desc-in-concise&#039;).val().trim() };&lt;br /&gt;
&lt;br /&gt;
            api.get({ action: &#039;query&#039;, prop: &#039;revisions&#039;, titles: storagePage, rvprop: &#039;content&#039;, formatversion: 2 }).done(function(r) {&lt;br /&gt;
                var json = r.query.pages[0].revisions ? JSON.parse(r.query.pages[0].revisions[0].content) : {};&lt;br /&gt;
                if (!newData.id &amp;amp;&amp;amp; !newData.en &amp;amp;&amp;amp; !newData.concise) { delete json[pageTitle]; } else { json[pageTitle] = newData; }&lt;br /&gt;
&lt;br /&gt;
                api.postWithEditToken({&lt;br /&gt;
                    action: &#039;edit&#039;,&lt;br /&gt;
                    title: storagePage,&lt;br /&gt;
                    text: JSON.stringify(json, null, 2),&lt;br /&gt;
                    summary: &#039;Update Entity Description: &#039; + pageTitle&lt;br /&gt;
                }).done(function() { location.reload(); });&lt;br /&gt;
            });&lt;br /&gt;
        });&lt;br /&gt;
&lt;br /&gt;
        loadDescStatus();&lt;br /&gt;
    });&lt;br /&gt;
})(jQuery, mediaWiki);&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================&lt;br /&gt;
   📍 MIPPEDIA DATA - ULTIMATE TEXT-TO-MAP LOCATOR&lt;br /&gt;
   Fitur: Deteksi lokasi dari teks dengan database label lengkap&lt;br /&gt;
   ========================================================== */&lt;br /&gt;
(function() {&lt;br /&gt;
    $(document).ready(function() {&lt;br /&gt;
        var locationText = &amp;quot;&amp;quot;;&lt;br /&gt;
        &lt;br /&gt;
        // --- DAFTAR LABEL SUPER LENGKAP &amp;amp; MASUK AKAL ---&lt;br /&gt;
        var locationLabels = [&lt;br /&gt;
            // Umum &amp;amp; Geografis&lt;br /&gt;
            &#039;lokasi&#039;, &#039;tempat&#039;, &#039;wilayah&#039;, &#039;daerah&#039;, &#039;koordinat&#039;, &#039;alamat&#039;,&lt;br /&gt;
            // Orang (Biografi)&lt;br /&gt;
            &#039;tempat lahir&#039;, &#039;asal&#039;, &#039;kediaman&#039;, &#039;domisili&#039;, &#039;negara asal&#039;,&lt;br /&gt;
            // Organisasi &amp;amp; Perusahaan&lt;br /&gt;
            &#039;kantor pusat&#039;, &#039;markas&#039;, &#039;cabang utama&#039;, &#039;titik operasi&#039;,&lt;br /&gt;
            // Makanan &amp;amp; Budaya&lt;br /&gt;
            &#039;asal wilayah&#039;, &#039;daerah asal&#039;, &#039;negara sumber&#039;, &#039;kawasan&#039;,&lt;br /&gt;
            // Sejarah &amp;amp; Bangunan&lt;br /&gt;
            &#039;letak&#039;, &#039;posisi&#039;, &#039;titik temu&#039;, &#039;orbit&#039;&lt;br /&gt;
        ];&lt;br /&gt;
&lt;br /&gt;
        // Jalankan pencarian di tabel data (infobox atau wikitable)&lt;br /&gt;
        $(&#039;.wikitable tr, .infobox tr, .mip-data-table tr&#039;).each(function() {&lt;br /&gt;
            var label = $(this).find(&#039;th&#039;).text().toLowerCase().trim();&lt;br /&gt;
            // Hilangkan karakter spesial kayak titik dua biar matching-nya akurat&lt;br /&gt;
            label = label.replace(/[:]/g, &#039;&#039;);&lt;br /&gt;
&lt;br /&gt;
            var isMatch = locationLabels.some(function(target) {&lt;br /&gt;
                return label === target || label.includes(target);&lt;br /&gt;
            });&lt;br /&gt;
&lt;br /&gt;
            if (isMatch) {&lt;br /&gt;
                var rawValue = $(this).find(&#039;td&#039;).text().trim();&lt;br /&gt;
                // Ambil bagian utama sebelum tanda koma, kurung, atau titik koma&lt;br /&gt;
                // Misal: &amp;quot;Bandung, Jawa Barat&amp;quot; -&amp;gt; ambil &amp;quot;Bandung&amp;quot;&lt;br /&gt;
                locationText = rawValue.split(/[,(\[;]/)[0].trim(); &lt;br /&gt;
                &lt;br /&gt;
                if (locationText.length &amp;gt; 2) return false; // Stop jika sudah ketemu yang valid&lt;br /&gt;
            }&lt;br /&gt;
        });&lt;br /&gt;
&lt;br /&gt;
        // Eksekusi Render Peta&lt;br /&gt;
        if (locationText &amp;amp;&amp;amp; locationText.length &amp;gt; 2) {&lt;br /&gt;
            var $mapWrapper = $(&#039;&amp;lt;div&amp;gt;&#039;).css({&lt;br /&gt;
                &#039;margin&#039;: &#039;15px 0&#039;,&lt;br /&gt;
                &#039;padding&#039;: &#039;12px&#039;,&lt;br /&gt;
                &#039;border&#039;: &#039;1px solid #ddd&#039;,&lt;br /&gt;
                &#039;background&#039;: &#039;#ffffff&#039;,&lt;br /&gt;
                &#039;border-radius&#039;: &#039;10px&#039;,&lt;br /&gt;
                &#039;box-shadow&#039;: &#039;0 4px 12px rgba(0,0,0,0.08)&#039;&lt;br /&gt;
            });&lt;br /&gt;
&lt;br /&gt;
            $mapWrapper.append(&#039;&amp;lt;div style=&amp;quot;font-weight:bold; font-size:0.9em; margin-bottom:10px; color:#444; display:flex; align-items:center;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                               &#039;&amp;lt;span style=&amp;quot;margin-right:8px;&amp;quot;&amp;gt;🗺️&amp;lt;/span&amp;gt;Pratinjau Lokasi : &#039; + locationText + &#039;&amp;lt;/div&amp;gt;&#039;);&lt;br /&gt;
&lt;br /&gt;
            // Embed URL dengan pencarian teks (Nominatim)&lt;br /&gt;
            var embedUrl = &amp;quot;https://www.openstreetmap.org/export/embed.html?layer=mapnik&amp;amp;q=&amp;quot; + encodeURIComponent(locationText);&lt;br /&gt;
&lt;br /&gt;
            var $iframe = $(&#039;&amp;lt;iframe&amp;gt;&#039;).attr({&lt;br /&gt;
                &#039;src&#039;: embedUrl,&lt;br /&gt;
                &#039;width&#039;: &#039;100%&#039;,&lt;br /&gt;
                &#039;height&#039;: &#039;280&#039;,&lt;br /&gt;
                &#039;frameborder&#039;: &#039;0&#039;,&lt;br /&gt;
                &#039;style&#039;: &#039;border-radius: 8px; border: 1px solid #eee;&#039;&lt;br /&gt;
            });&lt;br /&gt;
&lt;br /&gt;
            $mapWrapper.append($iframe);&lt;br /&gt;
            &lt;br /&gt;
            // Link eksternal yang lebih rapi&lt;br /&gt;
            var gMapsUrl = &amp;quot;https://www.google.com/maps/search/&amp;quot; + encodeURIComponent(locationText);&lt;br /&gt;
            $mapWrapper.append(&#039;&amp;lt;div style=&amp;quot;text-align:right; margin-top:8px;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                               &#039;&amp;lt;a href=&amp;quot;&#039; + gMapsUrl + &#039;&amp;quot; target=&amp;quot;_blank&amp;quot; style=&amp;quot;font-size:0.75em; color:#6a5acd; font-weight:bold; text-decoration:none; text-transform:uppercase; letter-spacing:0.5px;&amp;quot;&amp;gt;Buka di Google Maps →&amp;lt;/a&amp;gt;&amp;lt;/div&amp;gt;&#039;);&lt;br /&gt;
&lt;br /&gt;
            // Masukkan ke bawah section deskripsi otomatis&lt;br /&gt;
            if ($(&#039;#mip-desc-section&#039;).length) {&lt;br /&gt;
                $(&#039;#mip-desc-section&#039;).after($mapWrapper);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    });&lt;br /&gt;
})();&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://data.mippedia.org/index.php?title=MediaWiki:Common.js&amp;diff=905</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://data.mippedia.org/index.php?title=MediaWiki:Common.js&amp;diff=905"/>
		<updated>2026-06-01T17:15:16Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* ==========================================================&lt;br /&gt;
   🧠 MIPPEDIA DATA - UNIVERSAL DESKTOP &amp;amp; MOBILE INTEGRATION (V11.5)&lt;br /&gt;
   Features: Priority Check (ID &amp;gt; EN &amp;gt; CONCISE), Auto-Age, Auto-Bold.&lt;br /&gt;
   Fixes:&lt;br /&gt;
             - Full Responsive Mobile/HP support (Targeting MobileFrontEnd &amp;amp; Minerva selectors).&lt;br /&gt;
             - Universal HTML/Body injection to prevent visual leaks on slow mobile connections.&lt;br /&gt;
             - Fixed element structural differences between Desktop and Mobile skins.&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
// --- ⚡ LANGKAH 1: ENGINE ISOLASI SINKRONUS UNIVERSAL (DESKTOP &amp;amp; MOBILE) ---&lt;br /&gt;
(function() {&lt;br /&gt;
    var style = document.createElement(&#039;style&#039;);&lt;br /&gt;
    style.id = &#039;mip-universal-isolate-style&#039;;&lt;br /&gt;
    style.innerHTML = &lt;br /&gt;
        /* Menyembunyikan seluruh elemen bawaan data baik di desktop maupun tampilan hp/seluler */&lt;br /&gt;
        &#039;.mip-lock-active #mw-content-text &amp;gt; *:not(#mip-empty-state-notice):not(#mip-desc-section):not(script):not(style), &#039; +&lt;br /&gt;
        &#039;.mip-lock-active .mw-parser-output &amp;gt; *:not(#mip-empty-state-notice):not(#mip-desc-section):not(script):not(style), &#039; +&lt;br /&gt;
        &#039;.mip-lock-active .vertical-navbox, .mip-lock-active .infobox, .mip-lock-active .mobile-infobox, &#039; +&lt;br /&gt;
        &#039;.mip-lock-active #catlinks, .mip-lock-active .data-box, .mip-lock-active .box-Mapelement, &#039; +&lt;br /&gt;
        &#039;.mip-lock-active .wikibase-statementlistview, .mip-lock-active .wikibase-sitelinks, &#039; +&lt;br /&gt;
        &#039;.mip-lock-active .minerva__content-buttons, .mip-lock-active #page-actions { display: none !important; }&#039;;&lt;br /&gt;
    document.head.appendChild(style);&lt;br /&gt;
})();&lt;br /&gt;
&lt;br /&gt;
// --- 🛠️ LANGKAH 2: CORE OPERATIONS &amp;amp; LOGIC ---&lt;br /&gt;
(function() {&lt;br /&gt;
    $(document).ready(function() {&lt;br /&gt;
        var pageTitle = mw.config.get(&#039;wgPageName&#039;).replace(/_/g, &#039; &#039;),&lt;br /&gt;
            cacheKey = &#039;mip_smart_context_thumb_&#039; + pageTitle,&lt;br /&gt;
            currentYear = 2026;&lt;br /&gt;
&lt;br /&gt;
        // Target wrapper kontainer utama (Mendukung struktur Desktop &amp;amp; Mobile Skin)&lt;br /&gt;
        var $targetContainer = $(&#039;#mw-content-text&#039;);&lt;br /&gt;
        if ($targetContainer.find(&#039;.mw-parser-output&#039;).length) {&lt;br /&gt;
            $targetContainer = $targetContainer.find(&#039;.mw-parser-output&#039;).first();&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // Inisialisasi DOM secara dinamis agar kompatibel dengan layout seluler&lt;br /&gt;
        if (!$(&#039;#mip-desc-section&#039;).length) {&lt;br /&gt;
            $targetContainer.prepend(&#039;&amp;lt;div id=&amp;quot;mip-desc-section&amp;quot; style=&amp;quot;display:none; padding: 10px 0;&amp;quot;&amp;gt;&amp;lt;div id=&amp;quot;mip-auto-description&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div id=&amp;quot;mip-source-info&amp;quot; style=&amp;quot;margin-top:8px;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&#039;);&lt;br /&gt;
        }&lt;br /&gt;
        if (!$(&#039;#mip-project-portal&#039;).length) {&lt;br /&gt;
            $targetContainer.append(&#039;&amp;lt;div id=&amp;quot;mip-project-portal&amp;quot; style=&amp;quot;display:none; margin-top:20px; text-align:center; font-size:0.9em; color:#666;&amp;quot;&amp;gt;Halaman ini juga tersedia di: &amp;lt;span id=&amp;quot;mip-portal-links&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&#039;);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        var $descSection = $(&#039;#mip-desc-section&#039;), &lt;br /&gt;
            $descBox = $(&#039;#mip-auto-description&#039;),&lt;br /&gt;
            $sourceInfo = $(&#039;#mip-source-info&#039;), &lt;br /&gt;
            $portalLinks = $(&#039;#mip-portal-links&#039;),&lt;br /&gt;
            $projectPortal = $(&#039;#mip-project-portal&#039;);&lt;br /&gt;
&lt;br /&gt;
        var projects = [&lt;br /&gt;
            { id: &#039;id&#039;, name: &#039;Mippedia bahasa Indonesia&#039;, url: &#039;https://id.mippedia.org/api.php&#039;, base: &#039;https://id.mippedia.org/wiki/&#039;, label: &#039;Mippedia Indonesia&#039; },&lt;br /&gt;
            { id: &#039;en&#039;, name: &#039;Mippedia bahasa Inggris&#039;, url: &#039;https://en.mippedia.org/api.php&#039;, base: &#039;https://en.mippedia.org/wiki/&#039;, label: &#039;Mippedia Inggris&#039; },&lt;br /&gt;
            { id: &#039;concise&#039;, name: &#039;Mippedia bahasa Indonesia ringkas&#039;, url: &#039;https://concise.mippedia.org/api.php&#039;, base: &#039;https://concise.mippedia.org/wiki/&#039;, label: &#039;Mippedia Ringkas&#039; }&lt;br /&gt;
        ];&lt;br /&gt;
&lt;br /&gt;
        // --- 🎨 CSS ANIMATION &amp;amp; BUTTON HUB (RESPONSIVE) ---&lt;br /&gt;
        if (!$(&#039;#mip-clean-style&#039;).length) {&lt;br /&gt;
            $(&#039;head&#039;).append(&lt;br /&gt;
                &#039;&amp;lt;style id=&amp;quot;mip-clean-style&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                    &#039;@keyframes mipFadeInUp { from { opacity: 0; transform: translateY(12px); } to { opacity: 1; transform: translateY(0); } }&#039; +&lt;br /&gt;
                    &#039;@keyframes mipPulse { 0% { transform: scale(1); opacity: 1; } 50% { transform: scale(1.04); opacity: 0.85; } 100% { transform: scale(1); opacity: 1; } }&#039; +&lt;br /&gt;
                    &#039;#mip-empty-state-notice { display: block !important; animation: mipFadeInUp 0.35s cubic-bezier(0.16, 1, 0.3, 1) forwards; box-sizing: border-box; }&#039; +&lt;br /&gt;
                    &#039;.mip-pulse-icon { animation: mipPulse 2s infinite ease-in-out; transform-origin: center; }&#039; +&lt;br /&gt;
                    &#039;.mip-btn-container { display: flex; flex-wrap: wrap; justify-content: center; margin: 25px 0; padding-top: 5px; gap: 10px; }&#039; +&lt;br /&gt;
                    &#039;.mip-action-btn { display: inline-flex; align-items: center; justify-content: center; padding: 12px 20px; font-size: 0.92em; font-weight: 600; color: #6a5acd !important; background: #ffffff; border: 1.5px solid #6a5acd; border-radius: 30px; text-decoration: none !important; cursor: pointer; transition: all 0.25s ease-in-out; box-shadow: 0 2px 5px rgba(106,92,205,0.08); flex: 1 1 calc(33.333% - 10px); min-width: 150px; text-align: center; box-sizing: border-box; }&#039; +&lt;br /&gt;
                    &#039;.mip-action-btn:hover { color: #ffffff !important; background: #6a5acd; transform: translateY(-2px); box-shadow: 0 4px 12px rgba(106,92,205,0.2); }&#039; +&lt;br /&gt;
                    &#039;@media (max-width: 480px) { .mip-action-btn { flex: 1 1 100%; max-width: 100%; } }&#039; + /* Optimalisasi mutlak layar HP */&lt;br /&gt;
                &#039;&amp;lt;/style&amp;gt;&#039;&lt;br /&gt;
            );&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        var cached = JSON.parse(localStorage.getItem(cacheKey) || &amp;quot;{}&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        function applyAutoBold(text) { return text.replace(new RegExp(&#039;(&#039; + pageTitle + &#039;)&#039;, &#039;gi&#039;), &#039;&amp;lt;strong&amp;gt;$1&amp;lt;/strong&amp;gt;&#039;); }&lt;br /&gt;
        function cleanExtract(text) { return text.replace(/\[\d+\]/g, &#039;&#039;).replace(/\{\{[^}]+\}\}/g, &#039;&#039;).replace(/\(\s*\)/g, &#039;&#039;).replace(/\s\s+/g, &#039; &#039;).trim(); }&lt;br /&gt;
        &lt;br /&gt;
        function applyDynamicContext(text) {&lt;br /&gt;
            var date = new Date();&lt;br /&gt;
            var hari = [&amp;quot;Minggu&amp;quot;, &amp;quot;Senin&amp;quot;, &amp;quot;Selasa&amp;quot;, &amp;quot;Rabu&amp;quot;, &amp;quot;Kamis&amp;quot;, &amp;quot;Jumat&amp;quot;, &amp;quot;Sabtu&amp;quot;];&lt;br /&gt;
            var bulan = [&amp;quot;Januari&amp;quot;, &amp;quot;Februari&amp;quot;, &amp;quot;Maret&amp;quot;, &amp;quot;April&amp;quot;, &amp;quot;Mei&amp;quot;, &amp;quot;Juni&amp;quot;, &amp;quot;Juli&amp;quot;, &amp;quot;Agustus&amp;quot;, &amp;quot;September&amp;quot;, &amp;quot;Oktober&amp;quot;, &amp;quot;November&amp;quot;, &amp;quot;Desember&amp;quot;];&lt;br /&gt;
            var tglSkrg = hari[date.getDay()] + &amp;quot;, &amp;quot; + date.getDate() + &amp;quot; &amp;quot; + bulan[date.getMonth()] + &amp;quot; &amp;quot; + date.getFullYear();&lt;br /&gt;
            return text.replace(/(hari ini|saat ini|sekarang)/gi, &#039;$1 (&#039; + tglSkrg + &#039;)&#039;)&lt;br /&gt;
                .replace(/(\d{1,2}\s(?:Januari|Februari|Maret|April|Mei|Juni|Juli|Agustus|September|Oktober|November|Desember)\s(\d{4}))/gi, function(m, f, y) { &lt;br /&gt;
                    return f + &amp;quot; &amp;lt;span style=&#039;color: #444; font-weight: bold;&#039;&amp;gt;– usia &amp;quot; + (currentYear - parseInt(y)) + &amp;quot; tahun&amp;lt;/span&amp;gt;&amp;quot;; &lt;br /&gt;
                })&lt;br /&gt;
                .replace(/(sejak|tahun)\s(\d{4})/gi, function(m, k, y) {&lt;br /&gt;
                    var gap = currentYear - parseInt(y);&lt;br /&gt;
                    if (gap &amp;gt; 0 &amp;amp;&amp;amp; gap &amp;lt; 100) return k + &amp;quot; &amp;quot; + y + &amp;quot; &amp;lt;small style=&#039;color: #888;&#039;&amp;gt;(&amp;quot; + gap + &amp;quot; thn lalu)&amp;lt;/small&amp;gt;&amp;quot;;&lt;br /&gt;
                    return m;&lt;br /&gt;
                });&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        function applySummary(text) {&lt;br /&gt;
            var limit = 250;&lt;br /&gt;
            if (text.length &amp;lt;= limit) return &#039;&amp;lt;span&amp;gt;&#039; + text + &#039;&amp;lt;/span&amp;gt;&#039;;&lt;br /&gt;
            return &#039;&amp;lt;span&amp;gt;&#039; + text.substring(0, limit) + &#039;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;mip-dots&amp;quot;&amp;gt;... &amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;mip-more&amp;quot; style=&amp;quot;display:none;&amp;quot;&amp;gt;&#039; + text.substring(limit) + &#039;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;mip-read-btn&amp;quot; style=&amp;quot;color: #6a5acd; cursor: pointer; font-weight: bold; margin-left: 5px;&amp;quot;&amp;gt;Baca selengkapnya&amp;lt;/span&amp;gt;&#039;;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        function buildSmartLinks(currentId, validatedEnTitle) {&lt;br /&gt;
            $portalLinks.empty();&lt;br /&gt;
            var validLinks = [];&lt;br /&gt;
            var checkRequests = projects.filter(p =&amp;gt; p.id !== currentId).map(function(p) {&lt;br /&gt;
                var targetTitle = (p.id === &#039;en&#039; &amp;amp;&amp;amp; validatedEnTitle) ? validatedEnTitle : pageTitle;&lt;br /&gt;
                if (p.id === &#039;en&#039; &amp;amp;&amp;amp; !validatedEnTitle) return $.Deferred().resolve();&lt;br /&gt;
&lt;br /&gt;
                return $.ajax({ url: p.url, data: { action: &#039;query&#039;, titles: targetTitle, format: &#039;json&#039;, origin: &#039;*&#039; }, dataType: &#039;json&#039; })&lt;br /&gt;
                    .then(function(data) { &lt;br /&gt;
                        if (data.query.pages[&amp;quot;-1&amp;quot;] === undefined) { &lt;br /&gt;
                            validLinks.push(&#039;&amp;lt;a href=&amp;quot;&#039; + p.base + encodeURIComponent(targetTitle) + &#039;&amp;quot; target=&amp;quot;_blank&amp;quot; style=&amp;quot;color: #6a5acd; text-decoration: underline; font-weight: bold;&amp;quot;&amp;gt;&#039; + p.label + &#039;&amp;lt;/a&amp;gt;&#039;); &lt;br /&gt;
                        } &lt;br /&gt;
                    });&lt;br /&gt;
            });&lt;br /&gt;
&lt;br /&gt;
            $.when.apply($, checkRequests).done(function() {&lt;br /&gt;
                if (validLinks.length &amp;gt; 0) { $portalLinks.html(validLinks.join(&#039; &amp;lt;span style=&amp;quot;color:#ccc; margin: 0 5px;&amp;quot;&amp;gt;•&amp;lt;/span&amp;gt; &#039;)); $projectPortal.fadeIn(); }&lt;br /&gt;
            });&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // --- 🧠 LAYOUT MANAGER (DESKTOP &amp;amp; MOBILE READY) ---&lt;br /&gt;
        function toggleMippediaLayout(isEmpty) {&lt;br /&gt;
            var $existingNotice = $(&#039;#mip-empty-state-notice&#039;);&lt;br /&gt;
            var userGroups = mw.config.get(&#039;wgUserGroups&#039;) || [];&lt;br /&gt;
            var isSysop = userGroups.indexOf(&#039;sysop&#039;) !== -1;&lt;br /&gt;
            var $editElements = $(&#039;#ca-edit, .mw-editsection, .wb-editsection, .mip-edit-trigger, [id*=&amp;quot;edit&amp;quot;], [class*=&amp;quot;edit-pencil&amp;quot;], .ca-edit-main, #ca-ve-edit&#039;);&lt;br /&gt;
            var $metaRobots = $(&#039;meta[name=&amp;quot;robots&amp;quot;]&#039;);&lt;br /&gt;
&lt;br /&gt;
            if (isEmpty) {&lt;br /&gt;
                // Pasang di html dan body sekaligus untuk mengunci mutlak tampilan seluler hp&lt;br /&gt;
                $(&#039;html, body&#039;).addClass(&#039;mip-lock-active&#039;); &lt;br /&gt;
                $descSection.hide();&lt;br /&gt;
&lt;br /&gt;
                if (!$existingNotice.length) {&lt;br /&gt;
                    var createUrlID = &#039;https://id.mippedia.org/index.php?title=&#039; + encodeURIComponent(pageTitle) + &#039;&amp;amp;action=edit&#039;;&lt;br /&gt;
                    var createUrlEN = &#039;https://en.mippedia.org/index.php?title=&#039; + encodeURIComponent(pageTitle) + &#039;&amp;amp;action=edit&#039;;&lt;br /&gt;
                    var createUrlConcise = &#039;https://concise.mippedia.org/index.php?title=&#039; + encodeURIComponent(pageTitle) + &#039;&amp;amp;action=edit&#039;;&lt;br /&gt;
&lt;br /&gt;
                    var noticeHtml = &lt;br /&gt;
                        &#039;&amp;lt;div id=&amp;quot;mip-empty-state-notice&amp;quot; style=&amp;quot;max-width: 720px; margin: 15px auto; padding: 15px 10px; font-family: -apple-system, BlinkMacSystemFont, \&#039;Segoe UI\&#039;, Roboto, sans-serif; box-sizing: border-box;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                            &#039;&amp;lt;div style=&amp;quot;text-align: center; margin-bottom: 20px;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                &#039;&amp;lt;div class=&amp;quot;mip-pulse-icon&amp;quot; style=&amp;quot;display: inline-block;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                    &#039;&amp;lt;svg width=&amp;quot;55&amp;quot; height=&amp;quot;55&amp;quot; viewBox=&amp;quot;0 0 24 24&amp;quot; fill=&amp;quot;none&amp;quot; stroke=&amp;quot;#d9534f&amp;quot; stroke-width=&amp;quot;2&amp;quot; stroke-linecap=&amp;quot;round&amp;quot; stroke-linejoin=&amp;quot;round&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                        &#039;&amp;lt;path d=&amp;quot;M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z&amp;quot;&amp;gt;&amp;lt;/path&amp;gt;&#039; +&lt;br /&gt;
                                        &#039;&amp;lt;line x1=&amp;quot;12&amp;quot; y1=&amp;quot;9&amp;quot; x2=&amp;quot;12&amp;quot; y2=&amp;quot;13&amp;quot;&amp;gt;&amp;lt;/line&amp;gt;&#039; +&lt;br /&gt;
                                        &#039;&amp;lt;line x1=&amp;quot;12&amp;quot; y1=&amp;quot;17&amp;quot; x2=&amp;quot;12.01&amp;quot; y2=&amp;quot;17&amp;quot;&amp;gt;&amp;lt;/line&amp;gt;&#039; +&lt;br /&gt;
                                    &#039;&amp;lt;/svg&amp;gt;&#039; +&lt;br /&gt;
                                &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
                                &#039;&amp;lt;h4 style=&amp;quot;color: #2c3e50; margin: 10px 0 0 0; font-size: 1.25em; font-weight: 700; letter-spacing: -0.3px; padding: 0 5px;&amp;quot;&amp;gt;Item Data Terisolasi: Rujukan Artikel Tidak Ditemukan&amp;lt;/h4&amp;gt;&#039; +&lt;br /&gt;
                            &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
                            &lt;br /&gt;
                            &#039;&amp;lt;div style=&amp;quot;text-align: left; color: #4a5568; font-size: 0.92em; line-height: 1.6; padding: 0 8px; box-sizing: border-box;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                &#039;&amp;lt;p style=&amp;quot;margin-bottom: 14px;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                    &#039;&amp;lt;strong&amp;gt;PENGANTAR SISTEM OTOMATIS:&amp;lt;/strong&amp;gt; &#039; +&lt;br /&gt;
                                    &#039;Halaman ini ditampilkan karena sistem deteksi siklus internal mendeteksi bahwa entitas data terstruktur ini berada dalam status terisolasi total atau Yatim (Orphaned Data Item). Berdasarkan arsitektur basis data terintegrasi, sebuah item data wajib terikat dengan minimal satu artikel ensiklopedia aktif sebagai validasi literatur atas eksistensi subjek tersebut. Karena item data ini sama sekali tidak memiliki dokumen rujukan yang valid pada Mippedia bahasa Indonesia (ID), Mippedia bahasa Inggris (EN), maupun Mippedia Indonesia Ringkas (Concise), maka sistem secara otomatis menghentikan visualisasi data bawaan untuk mencegah penyebaran informasi tanpa referensi.&#039; +&lt;br /&gt;
                                &#039;&amp;lt;/p&amp;gt;&#039; +&lt;br /&gt;
                                &#039;&amp;lt;p style=&amp;quot;margin-bottom: 14px;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                    &#039;&amp;lt;strong&amp;gt;KEBIJAKAN PENGUNCIAN DAN PROTEKSI HALAMAN:&amp;lt;/strong&amp;gt; &#039; +&lt;br /&gt;
                                    &#039;Sebagai langkah preventif demi menjaga integritas data dan mematuhi standar privasi serta validitas ekosistem Mippedia Foundation, halaman data yang terisolasi ini telah dialihkan ke dalam mode proteksi penuh dan dikunci secara otomatis oleh sistem keamanan. Pengguna umum, kontributor non-pengurus, maupun mesin pembaca otomatis tidak diizinkan melakukan penyuntingan langsung (*read-only mode*) pada elemen data terstruktur di halaman ini. Kebijakan penguncian ini diterapkan secara ketat untuk menghindari manipulasi data mentah sepihak, meminimalkan risiko vandalisme tak terlihat, serta mencegah terjadinya anomali skrip (*visual script error*) yang berpotensi merusak struktur database repositori secara global.&#039; +&lt;br /&gt;
                                &#039;&amp;lt;/p&amp;gt;&#039; +&lt;br /&gt;
                                &#039;&amp;lt;p style=&amp;quot;margin-bottom: 14px;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                    &#039;&amp;lt;strong&amp;gt;KONSEKUENSI DAN REGULASI PENGAPUSAN PERMANEN:&amp;lt;/strong&amp;gt; &#039; +&lt;br /&gt;
                                    &#039;Sesuai dengan regulasi pemeliharaan ruang penyimpanan server, entitas data tanpa rujukan hanya diklasifikasikan sebagai data konsumsi sementara (*temporary cache entry*). Jika dalam batas waktu evaluasi berkala yang ditentukan item ini tetap dibiarkan kosong tanpa adanya tindakan penyelamatan berupa pembuatan artikel baru, maka skrip pembersihan otomatis (*cron-job cleaner*) bersama Dewan Moderator Mippedia Community akan melakukan tindakan penghapusan permanen secara menyeluruh (*Hard Purge / Delete*). Setelah proses penghapusan dilakukan, seluruh data terkait entitas ini akan dihapus dari server untuk mengoptimalkan ruang alokasi database dan menjaga stabilitas performa jaringan.&#039; +&lt;br /&gt;
                                &#039;&amp;lt;/p&amp;gt;&#039; +&lt;br /&gt;
                                &#039;&amp;lt;p style=&amp;quot;margin-bottom: 0;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                    &#039;&amp;lt;strong&amp;gt;PANDUAN PEMULIHAN BAGI KONTRIBUTOR:&amp;lt;/strong&amp;gt; &#039; +&lt;br /&gt;
                                    &#039;Satu-satunya cara untuk memulihkan status entitas data ini dan membuka kembali akses penyuntingannya adalah dengan membuat dokumen artikel rujukan yang sah pada salah satu pilar ekosistem Mippedia. Anda sangat disarankan untuk segera memulai pembuatan draf artikel baru melalui salah satu tombol akselerasi instan di bawah ini. Pastikan artikel yang Anda buat memuat informasi yang valid, ditulis dengan sudut pandang netral, serta dilengkapi dengan referensi literatur yang kredibel agar sistem sinkronisasi dapat memetakan kembali dan menormalkan halaman data ini secara otomatis.&#039; +&lt;br /&gt;
                                &#039;&amp;lt;/p&amp;gt;&#039; +&lt;br /&gt;
                            &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
                            &lt;br /&gt;
                            &#039;&amp;lt;div class=&amp;quot;mip-btn-container&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                &#039;&amp;lt;a href=&amp;quot;&#039; + createUrlID + &#039;&amp;quot; target=&amp;quot;_blank&amp;quot; class=&amp;quot;mip-action-btn&amp;quot;&amp;gt;Buat Artikel ID&amp;lt;/a&amp;gt;&#039; +&lt;br /&gt;
                                &#039;&amp;lt;a href=&amp;quot;&#039; + createUrlEN + &#039;&amp;quot; target=&amp;quot;_blank&amp;quot; class=&amp;quot;mip-action-btn&amp;quot;&amp;gt;Buat Artikel EN&amp;lt;/a&amp;gt;&#039; +&lt;br /&gt;
                                &#039;&amp;lt;a href=&amp;quot;&#039; + createUrlConcise + &#039;&amp;quot; target=&amp;quot;_blank&amp;quot; class=&amp;quot;mip-action-btn&amp;quot;&amp;gt;Buat Artikel Ringkas&amp;lt;/a&amp;gt;&#039; +&lt;br /&gt;
                            &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
&lt;br /&gt;
                            &#039;&amp;lt;div style=&amp;quot;font-size: 0.8em; color: #a0a0a0; line-height: 1.4; font-style: italic; border-top: 1px solid #f0f0f0; padding-top: 12px; text-align: center;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                &#039;Informasi Sistem: Item data yang tidak terikat dengan artikel ensiklopedia apa pun dalam ekosistem Mippedia akan dihapus secara otomatis oleh pengurus dalam waktu dekat.&#039; +&lt;br /&gt;
                            &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
                        &#039;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
                    $targetContainer.prepend(noticeHtml);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                if (!isSysop) {&lt;br /&gt;
                    $editElements.css({ &#039;pointer-events&#039;: &#039;none&#039;, &#039;opacity&#039;: &#039;0.3&#039;, &#039;cursor&#039;: &#039;not-allowed&#039; }).hide();&lt;br /&gt;
                    $(document).on(&#039;keydown.miplock&#039;, function(e) {&lt;br /&gt;
                        if (e.key.toLowerCase() === &#039;e&#039; &amp;amp;&amp;amp; !$(e.target).is(&#039;input, textarea&#039;)) {&lt;br /&gt;
                            e.preventDefault(); return false;&lt;br /&gt;
                        }&lt;br /&gt;
                    });&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                mw.config.set(&#039;wgRobotsPolicies&#039;, { &#039;index&#039;: &#039;noindex&#039;, &#039;follow&#039;: &#039;nofollow&#039; });&lt;br /&gt;
                if ($metaRobots.length) { $metaRobots.attr(&#039;content&#039;, &#039;noindex, nofollow&#039;); } &lt;br /&gt;
                else { $(&#039;head&#039;).append(&#039;&amp;lt;meta name=&amp;quot;robots&amp;quot; content=&amp;quot;noindex, nofollow&amp;quot;&amp;gt;&#039;); }&lt;br /&gt;
&lt;br /&gt;
            } else {&lt;br /&gt;
                $(&#039;html, body&#039;).removeClass(&#039;mip-lock-active&#039;);&lt;br /&gt;
                if ($existingNotice.length) $existingNotice.remove();&lt;br /&gt;
                $descSection.show();&lt;br /&gt;
&lt;br /&gt;
                if (!isSysop) { $(document).off(&#039;keydown.miplock&#039;); }&lt;br /&gt;
                mw.config.set(&#039;wgRobotsPolicies&#039;, { &#039;index&#039;: &#039;index&#039;, &#039;follow&#039;: &#039;follow&#039; });&lt;br /&gt;
                if ($metaRobots.length) $metaRobots.attr(&#039;content&#039;, &#039;index, follow&#039;);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // --- PRIORITIZED DISPATCHER RUNNER ---&lt;br /&gt;
        var globalEnTitle = cached.enTitle || &amp;quot;&amp;quot;; &lt;br /&gt;
&lt;br /&gt;
        function init() {&lt;br /&gt;
            var pPrimary = projects[0]; &lt;br /&gt;
            $.ajax({&lt;br /&gt;
                url: pPrimary.url,&lt;br /&gt;
                data: { action: &#039;query&#039;, prop: &#039;revisions|pageimages|langlinks&#039;, lllang: &#039;en&#039;, rvprop: &#039;timestamp&#039;, piprop: &#039;thumbnail&#039;, pithumbsize: 150, titles: pageTitle, format: &#039;json&#039;, origin: &#039;*&#039; },&lt;br /&gt;
                dataType: &#039;json&#039;,&lt;br /&gt;
                success: function(res) {&lt;br /&gt;
                    var pg = res.query.pages, id = Object.keys(pg)[0];&lt;br /&gt;
                    var latestTS = (id != &amp;quot;-1&amp;quot;) ? pg[id].revisions[0].timestamp : &amp;quot;0&amp;quot;;&lt;br /&gt;
                    var thumbUrl = (id != &amp;quot;-1&amp;quot; &amp;amp;&amp;amp; pg[id].thumbnail) ? pg[id].thumbnail.source : &amp;quot;&amp;quot;;&lt;br /&gt;
                    &lt;br /&gt;
                    if (id != &amp;quot;-1&amp;quot; &amp;amp;&amp;amp; pg[id].langlinks &amp;amp;&amp;amp; pg[id].langlinks[0]) {&lt;br /&gt;
                        globalEnTitle = pg[id].langlinks[0][&#039;*&#039;];&lt;br /&gt;
                    }&lt;br /&gt;
&lt;br /&gt;
                    if (cached.content &amp;amp;&amp;amp; cached.ts === latestTS &amp;amp;&amp;amp; latestTS !== &amp;quot;0&amp;quot; &amp;amp;&amp;amp; !cached.isEmpty) {&lt;br /&gt;
                        toggleMippediaLayout(false);&lt;br /&gt;
                        renderAll(cached.p, cached.content, cached.isTrans, cached.orig, cached.img, cached.customUrl, cached.enTitle);&lt;br /&gt;
                    } else { &lt;br /&gt;
                        fetchPriorityData(0, latestTS, thumbUrl); &lt;br /&gt;
                    }&lt;br /&gt;
                },&lt;br /&gt;
                error: function() { &lt;br /&gt;
                    if (cached.content &amp;amp;&amp;amp; !cached.isEmpty) {&lt;br /&gt;
                        toggleMippediaLayout(false);&lt;br /&gt;
                        renderAll(cached.p, cached.content, cached.isTrans, cached.orig, cached.img, cached.customUrl, cached.enTitle);&lt;br /&gt;
                    } else {&lt;br /&gt;
                        fetchPriorityData(0, &amp;quot;0&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        function fetchPriorityData(index, newTS, img) {&lt;br /&gt;
            if (index &amp;gt;= projects.length) {&lt;br /&gt;
                localStorage.setItem(cacheKey, JSON.stringify({isEmpty: true, ts: newTS, content: &amp;quot;&amp;quot;}));&lt;br /&gt;
                toggleMippediaLayout(true);&lt;br /&gt;
                return;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            var p = projects[index];&lt;br /&gt;
&lt;br /&gt;
            if (p.id === &#039;en&#039;) {&lt;br /&gt;
                if (!globalEnTitle) {&lt;br /&gt;
                    $.ajax({&lt;br /&gt;
                        url: &#039;https://concise.mippedia.org/api.php&#039;,&lt;br /&gt;
                        data: { action: &#039;query&#039;, prop: &#039;langlinks&#039;, lllang: &#039;en&#039;, titles: pageTitle, format: &#039;json&#039;, origin: &#039;*&#039; },&lt;br /&gt;
                        dataType: &#039;json&#039;,&lt;br /&gt;
                        async: false, &lt;br /&gt;
                        success: function(cRes) {&lt;br /&gt;
                            var cPg = cRes.query.pages, cId = Object.keys(cPg)[0];&lt;br /&gt;
                            if (cId != &amp;quot;-1&amp;quot; &amp;amp;&amp;amp; cPg[cId].langlinks &amp;amp;&amp;amp; cPg[cId].langlinks[0]) {&lt;br /&gt;
                                globalEnTitle = cPg[cId].langlinks[0][&#039;*&#039;];&lt;br /&gt;
                            }&lt;br /&gt;
                        }&lt;br /&gt;
                    });&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                if (globalEnTitle) {&lt;br /&gt;
                    $.ajax({&lt;br /&gt;
                        url: p.url,&lt;br /&gt;
                        data: { action: &#039;query&#039;, prop: &#039;extracts&#039;, exintro: 1, explaintext: 1, titles: globalEnTitle, format: &#039;json&#039;, origin: &#039;*&#039; },&lt;br /&gt;
                        dataType: &#039;json&#039;,&lt;br /&gt;
                        success: function(data) {&lt;br /&gt;
                            var pages = data.query.pages, pageId = Object.keys(pages)[0];&lt;br /&gt;
                            if (pageId != &amp;quot;-1&amp;quot; &amp;amp;&amp;amp; pages[pageId].extract) {&lt;br /&gt;
                                var extract = cleanExtract(pages[pageId].extract);&lt;br /&gt;
                                finalize(p, extract, false, &amp;quot;&amp;quot;, newTS, img, p.base + encodeURIComponent(globalEnTitle), globalEnTitle);&lt;br /&gt;
                            } else {&lt;br /&gt;
                                fetchPriorityData(index + 1, newTS, img);&lt;br /&gt;
                            }&lt;br /&gt;
                        },&lt;br /&gt;
                        error: function() { fetchPriorityData(index + 1, newTS, img); }&lt;br /&gt;
                    });&lt;br /&gt;
                } else {&lt;br /&gt;
                    fetchPriorityData(index + 1, newTS, img);&lt;br /&gt;
                }&lt;br /&gt;
            } else {&lt;br /&gt;
                $.ajax({&lt;br /&gt;
                    url: p.url,&lt;br /&gt;
                    data: { action: &#039;query&#039;, prop: &#039;extracts&#039;, exintro: 1, explaintext: 1, titles: pageTitle, format: &#039;json&#039;, origin: &#039;*&#039; },&lt;br /&gt;
                    dataType: &#039;json&#039;,&lt;br /&gt;
                    success: function(data) {&lt;br /&gt;
                        var pages = data.query.pages, pageId = Object.keys(pages)[0];&lt;br /&gt;
                        if (pageId != &amp;quot;-1&amp;quot; &amp;amp;&amp;amp; pages[pageId].extract) {&lt;br /&gt;
                            var extract = cleanExtract(pages[pageId].extract);&lt;br /&gt;
                            finalize(p, extract, false, &amp;quot;&amp;quot;, newTS, img, p.base + encodeURIComponent(pageTitle), globalEnTitle); &lt;br /&gt;
                        } else {&lt;br /&gt;
                            fetchPriorityData(index + 1, newTS, img);&lt;br /&gt;
                        }&lt;br /&gt;
                    },&lt;br /&gt;
                    error: function() { fetchPriorityData(index + 1, newTS, img); }&lt;br /&gt;
                });&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        function finalize(p, c, t, o, ts, img, customUrl, enTitle) {&lt;br /&gt;
            localStorage.setItem(cacheKey, JSON.stringify({isEmpty: false, p:p, content:c, isTrans:t, orig:o, ts:ts, img:img, customUrl: customUrl, enTitle: enTitle}));&lt;br /&gt;
            toggleMippediaLayout(false); &lt;br /&gt;
            renderAll(p, c, t, o, img, customUrl, enTitle);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        function renderAll(p, currentText, isTranslated, originalText, img, customUrl, enTitle) {&lt;br /&gt;
            var processedText = applyAutoBold(applyDynamicContext(currentText));&lt;br /&gt;
            var thumbHtml = img ? &#039;&amp;lt;div style=&amp;quot;float: right; margin-left: 15px; margin-bottom: 10px; border: 1px solid #ddd; padding: 3px; background: #fff; border-radius: 4px; box-shadow: 0 2px 4px rgba(0,0,0,0.1);&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;&#039;+img+&#039;&amp;quot; style=&amp;quot;max-width: 90px; display: block; height: auto;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039; : &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
            $descSection.show();&lt;br /&gt;
            $descBox.show().html(thumbHtml + applySummary(processedText) + &#039;&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;);&lt;br /&gt;
            &lt;br /&gt;
            var targetLink = customUrl ? customUrl : p.base + encodeURIComponent(pageTitle);&lt;br /&gt;
            var footer = &#039;&amp;lt;div style=&amp;quot;font-size: 0.9em; color: #777;&amp;quot;&amp;gt;Sumber : &amp;lt;a href=&amp;quot;&#039; + targetLink + &#039;&amp;quot; target=&amp;quot;_blank&amp;quot; style=&amp;quot;color: #6a5acd; font-weight: bold; text-decoration: none;&amp;quot;&amp;gt;&#039; + p.name + &#039;.&amp;lt;/a&amp;gt;&#039;;&lt;br /&gt;
            if (isTranslated) { footer += &#039;&amp;lt;br&amp;gt;&amp;lt;span style=&amp;quot;font-size: 0.85em; font-style: italic;&amp;quot;&amp;gt;(Diterjemahkan secara otomatis)&amp;lt;/span&amp;gt; &amp;lt;span id=&amp;quot;mip-toggle-orig&amp;quot; style=&amp;quot;color: #6a5acd; cursor: pointer; text-decoration: underline; margin-left: 5px;&amp;quot;&amp;gt;Tampilkan versi asli&amp;lt;/span&amp;gt;&#039;; }&lt;br /&gt;
            $sourceInfo.show().html(footer);&lt;br /&gt;
            &lt;br /&gt;
            buildSmartLinks(p.id, enTitle);&lt;br /&gt;
            &lt;br /&gt;
            $(document).off(&#039;click&#039;, &#039;.mip-read-btn&#039;).on(&#039;click&#039;, &#039;.mip-read-btn&#039;, function() { $(this).hide(); $(&#039;.mip-dots&#039;).hide(); $(&#039;.mip-more&#039;).fadeIn(); });&lt;br /&gt;
            $(document).off(&#039;click&#039;, &#039;#mip-toggle-orig&#039;).on(&#039;click&#039;, &#039;#mip-toggle-orig&#039;, function() {&lt;br /&gt;
                var isOrig = ($(this).text() === &#039;Tampilkan versi asli&#039;);&lt;br /&gt;
                var textToDisplay = applyAutoBold(applyDynamicContext(isOrig ? originalText : currentText));&lt;br /&gt;
                $descBox.html(thumbHtml + applySummary(textToDisplay) + &#039;&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;);&lt;br /&gt;
                $(this).text(isOrig ? &#039;Tampilkan terjemahan&#039; : &#039;Tampilkan versi asli&#039;);&lt;br /&gt;
            });&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        init();&lt;br /&gt;
    });&lt;br /&gt;
})();&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================&lt;br /&gt;
   🚀 MIPPEDIA DATA - CORE SYSTEM (ULTIMATE BUNDLE)&lt;br /&gt;
   Status: FINAL &amp;amp; REVISED (Visual Fix + Permission Logic)&lt;br /&gt;
   Fix: Mobile Responsive Notification Position&lt;br /&gt;
   ========================================================== */&lt;br /&gt;
&lt;br /&gt;
(function() {&lt;br /&gt;
    $(document).ready(function() {&lt;br /&gt;
        // --- 1. FILTER GLOBAL (Namespace 0 &amp;amp; Bukan Halaman Utama) ---&lt;br /&gt;
        if (mw.config.get(&#039;wgNamespaceNumber&#039;) !== 0 || &lt;br /&gt;
            mw.config.get(&#039;wgIsMainPage&#039;) || &lt;br /&gt;
            mw.config.get(&#039;wgAction&#039;) !== &#039;view&#039;) return;&lt;br /&gt;
&lt;br /&gt;
        var pageTitle = mw.config.get(&#039;wgPageName&#039;);&lt;br /&gt;
        var dataPage = &#039;MediaWiki:Sitelinks-Data.json&#039;;&lt;br /&gt;
        var userGroups = mw.config.get(&#039;wgUserGroups&#039;);&lt;br /&gt;
        var isAdmin = userGroups.includes(&#039;sysop&#039;) || userGroups.includes(&#039;interface-admin&#039;);&lt;br /&gt;
&lt;br /&gt;
        var projects = {&lt;br /&gt;
            &#039;id&#039;: { name: &#039;ID&#039;, url: &#039;https://id.mippedia.org/api.php&#039;, base: &#039;https://id.mippedia.org/wiki/&#039;, color: &#039;#6a5acd&#039; },&lt;br /&gt;
            &#039;en&#039;: { name: &#039;EN&#039;, url: &#039;https://en.mippedia.org/api.php&#039;, base: &#039;https://en.mippedia.org/wiki/&#039;, color: &#039;#4169e1&#039; },&lt;br /&gt;
            &#039;concise&#039;: { name: &#039;Concise&#039;, url: &#039;https://concise.mippedia.org/api.php&#039;, base: &#039;https://concise.mippedia.org/wiki/&#039;, color: &#039;#20b2aa&#039; }&lt;br /&gt;
        };&lt;br /&gt;
&lt;br /&gt;
        // --- 2. KOTAK NOTIFIKASI INFORMASI MODERN (FIXED MOBILE POSITION) ---&lt;br /&gt;
        function showBoxNotif(title, msg, type) {&lt;br /&gt;
            $(&#039;.mip-box-notif&#039;).remove();&lt;br /&gt;
            var theme = type === &#039;success&#039; ? {bg:&#039;#e6fffa&#039;, border:&#039;#38b2ac&#039;, text:&#039;#234e52&#039;, icon:&#039;&#039;} : &lt;br /&gt;
                        {bg:&#039;#fff5f5&#039;, border:&#039;#f56565&#039;, text:&#039;#742a2a&#039;, icon:&#039;&#039;};&lt;br /&gt;
            &lt;br /&gt;
            // Logika CSS Responsif untuk posisi&lt;br /&gt;
            var isMobile = window.innerWidth &amp;lt;= 768;&lt;br /&gt;
            var desktopStyle = &amp;quot;top:25px; right:25px; width:350px;&amp;quot;;&lt;br /&gt;
            var mobileStyle = &amp;quot;top:15px; left:50%; transform:translateX(-50%); width:90%; max-width:400px;&amp;quot;;&lt;br /&gt;
            var finalPos = isMobile ? mobileStyle : desktopStyle;&lt;br /&gt;
&lt;br /&gt;
            var $notif = $(&#039;&amp;lt;div class=&amp;quot;mip-box-notif&amp;quot; style=&amp;quot;position:fixed; &#039; + finalPos + &#039; background:&#039;+theme.bg+&#039;; border-left:6px solid &#039;+theme.border+&#039;; padding:18px; z-index:10001; border-radius:12px; box-shadow:0 15px 35px rgba(0,0,0,0.2); font-family:sans-serif; animation:mipSlideIn 0.4s ease-out;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                &#039;&amp;lt;div style=&amp;quot;display:flex; align-items:center; gap:12px; margin-bottom:8px;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                    &#039;&amp;lt;span style=&amp;quot;font-size:20px;&amp;quot;&amp;gt;&#039;+theme.icon+&#039;&amp;lt;/span&amp;gt;&#039; +&lt;br /&gt;
                    &#039;&amp;lt;strong style=&amp;quot;color:&#039;+theme.text+&#039;; font-size:15px; letter-spacing:-0.3px;&amp;quot;&amp;gt;&#039;+title+&#039;&amp;lt;/strong&amp;gt;&#039; +&lt;br /&gt;
                &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
                &#039;&amp;lt;p style=&amp;quot;margin:0; font-size:13px; color:&#039;+theme.text+&#039;; line-height:1.6; opacity:0.9;&amp;quot;&amp;gt;&#039;+msg+&#039;&amp;lt;/p&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;/div&amp;gt;&#039;).appendTo(&#039;body&#039;);&lt;br /&gt;
&lt;br /&gt;
            setTimeout(function() { $notif.fadeOut(function(){ $(this).remove(); }); }, 5500);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // --- 3. UI GENERATOR (DIPERTEBAL) ---&lt;br /&gt;
&lt;br /&gt;
      // A. Header Pro&lt;br /&gt;
        var headerHtml = &#039;&amp;lt;div id=&amp;quot;mip-header&amp;quot; style=&amp;quot;background:#f8f9fa; border:1px solid #ddd; border-left:6px solid #6a5acd; padding:18px; margin-bottom:25px; border-radius:6px; box-shadow:inset 0 0 10px rgba(0,0,0,0.02);&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;div style=&amp;quot;display:flex; align-items:center; gap:10px; margin-bottom:8px;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;span style=&amp;quot;background:#6a5acd; color:white; padding:3px 10px; border-radius:4px; font-size:11px; font-weight:bold; text-transform:uppercase; letter-spacing:0.5px;&amp;quot;&amp;gt;Basis Data Terstruktur&amp;lt;/span&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;strong style=&amp;quot;color:#111; font-size:16px;&amp;quot;&amp;gt;&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;p style=&amp;quot;margin:0; font-size:13px; color:#444; line-height:1.6;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
            &#039;Halaman ini adalah metadata entitas repositori pusat yang disinkronisasi secara otomatis lintas ekosistem. &#039; +&lt;br /&gt;
            &#039;Informasi di bawah ini bersifat teknis dan bebas digunakan sebagai referensi data terbuka bagi semua orang di seluruh dunia berdasarkan lisensi atribusi yang sesuai.&#039; +&lt;br /&gt;
            &#039;&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
        // B. Connector Box&lt;br /&gt;
        var editBtn = &#039;&amp;lt;span id=&amp;quot;mip-open-editor&amp;quot; style=&amp;quot;cursor:pointer; font-size:20px; color:#6a5acd; opacity:0.8; transition:0.3s;&amp;quot; onmouseover=&amp;quot;this.style.opacity=1&amp;quot; onmouseout=&amp;quot;this.style.opacity=0.8&amp;quot;&amp;gt;✎&amp;lt;/span&amp;gt;&#039;;&lt;br /&gt;
        var connectorHtml = &#039;&amp;lt;div id=&amp;quot;mip-connector&amp;quot; style=&amp;quot;background:#fff; border:1px solid #e2e8f0; border-radius:16px; padding:22px; margin-top:30px; box-shadow:0 10px 25px rgba(0,0,0,0.04);&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;div style=&amp;quot;display:flex; justify-content:space-between; align-items:center; margin-bottom:20px;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;strong style=&amp;quot;font-size:15px; color:#1a202c; display:flex; align-items:center; gap:8px;&amp;quot;&amp;gt;ID situs&amp;lt;/strong&amp;gt;&#039;+editBtn+&#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;div id=&amp;quot;mip-display&amp;quot; style=&amp;quot;display:flex; gap:12px; flex-wrap:wrap;&amp;quot;&amp;gt;&amp;lt;small style=&amp;quot;color:#a0aec0;&amp;quot;&amp;gt;Mensinkronisasi basis data...&amp;lt;/small&amp;gt;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;div id=&amp;quot;mip-editor&amp;quot; style=&amp;quot;display:none; margin-top:20px; border-top:2px solid #f7fafc; padding-top:20px;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                Object.keys(projects).map(p =&amp;gt; &#039;&amp;lt;div style=&amp;quot;margin-bottom:12px; display:flex; gap:10px;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;width:75px; font-size:11px; font-weight:bold; background:#edf2f7; display:flex; align-items:center; justify-content:center; border-radius:8px; color:#4a5568;&amp;quot;&amp;gt;&#039;+projects[p].name+&#039;&amp;lt;/span&amp;gt;&amp;lt;input type=&amp;quot;text&amp;quot; id=&amp;quot;in-&#039;+p+&#039;&amp;quot; placeholder=&amp;quot;Judul artikel di &#039;+projects[p].name+&#039;...&amp;quot; style=&amp;quot;flex:1; padding:10px; font-size:13px; border:1.5px solid #e2e8f0; border-radius:10px; outline:none; transition:0.2s;&amp;quot; onfocus=&amp;quot;this.style.borderColor=\&#039;#6a5acd\&#039;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;).join(&#039;&#039;) +&lt;br /&gt;
                &#039;&amp;lt;button id=&amp;quot;mip-save&amp;quot; style=&amp;quot;width:100%; padding:14px; background:#6a5acd; color:white; border:none; border-radius:12px; font-size:14px; font-weight:bold; cursor:pointer; box-shadow:0 4px 12px rgba(106,90,205,0.3); transition:0.3s;&amp;quot;&amp;gt;Terbitkan&amp;lt;/button&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
        // C. Footer Lisensi Lengkap&lt;br /&gt;
        var footerHtml = &#039;&amp;lt;div id=&amp;quot;mip-footer&amp;quot; style=&amp;quot;background:#fafafa; border:1px solid #eee; border-radius:10px; padding:20px; margin-top:30px; text-align:center;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;div style=&amp;quot;font-size:11px; color:#718096; font-weight:800; text-transform:uppercase; letter-spacing:1px; margin-bottom:10px;&amp;quot;&amp;gt;Lisensi, Atribusi &amp;amp; Penggunaan Data&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;p style=&amp;quot;margin:0 0 10px; font-size:13px; color:#4a5568; line-height:1.6;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
            &#039;Seluruh data terstruktur yang tersaji dalam repositori ini merupakan milik publik dan tersedia di bawah lisensi resmi &#039; +&lt;br /&gt;
            &#039;&amp;lt;a href=&amp;quot;https://creativecommons.org/licenses/by-sa/4.0/&amp;quot; target=&amp;quot;_blank&amp;quot; style=&amp;quot;color:#6a5acd; text-decoration:none; font-weight:700;&amp;quot;&amp;gt;Creative Commons Attribution-ShareAlike 4.0 International&amp;lt;/a&amp;gt;.&#039; +&lt;br /&gt;
            &#039;&amp;lt;/p&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;p style=&amp;quot;margin:0; font-size:12px; color:#a0aec0;&amp;quot;&amp;gt;Akses API dan penggunaan data secara massal wajib mencantumkan atribusi kepada &amp;lt;strong&amp;gt;Mippedia Community&amp;lt;/strong&amp;gt; selaku pengelola proyek.&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
        // Injeksi&lt;br /&gt;
        $(&#039;#mw-content-text&#039;).prepend(headerHtml);&lt;br /&gt;
        $(&#039;#mw-content-text&#039;).append(connectorHtml).append(footerHtml);&lt;br /&gt;
&lt;br /&gt;
        // --- 4. LOGIC ENGINE ---&lt;br /&gt;
        function loadLinks() {&lt;br /&gt;
            new mw.Api().get({ action: &#039;query&#039;, prop: &#039;revisions&#039;, titles: dataPage, rvprop: &#039;content&#039;, formatversion: 2 }).done(function(d) {&lt;br /&gt;
                var json = d.query.pages[0].revisions ? JSON.parse(d.query.pages[0].revisions[0].content) : {};&lt;br /&gt;
                var data = json[pageTitle] || {};&lt;br /&gt;
                var $box = $(&#039;#mip-display&#039;).empty();&lt;br /&gt;
                var found = false;&lt;br /&gt;
                Object.keys(projects).forEach(p =&amp;gt; {&lt;br /&gt;
                    if (data[p]) {&lt;br /&gt;
                        found = true;&lt;br /&gt;
                        $box.append(&#039;&amp;lt;a style=&amp;quot;background:&#039;+projects[p].color+&#039;; color:white; padding:8px 16px; border-radius:10px; font-size:12px; font-weight:bold; text-decoration:none; border-bottom:3px solid rgba(0,0,0,0.15);&amp;quot; href=&amp;quot;&#039;+projects[p].base+encodeURIComponent(data[p])+&#039;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Mippedia &#039;+projects[p].name+&#039;: &#039;+data[p]+&#039;&amp;lt;/a&amp;gt;&#039;);&lt;br /&gt;
                        $(&#039;#in-&#039; + p).val(data[p]);&lt;br /&gt;
                    }&lt;br /&gt;
                });&lt;br /&gt;
                if (!found) $box.html(&#039;&amp;lt;em style=&amp;quot;color:#cbd5e0; font-size:13px;&amp;quot;&amp;gt;Entitas ini belum terhubung ke cabang Mippedia manapun.&amp;lt;/em&amp;gt;&#039;);&lt;br /&gt;
            });&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        $(document).on(&#039;click&#039;, &#039;#mip-save&#039;, function() {&lt;br /&gt;
            // CEK IZIN: Tolak user biasa&lt;br /&gt;
            if (!isAdmin) {&lt;br /&gt;
                showBoxNotif(&#039;Suntingan anda tidak di terbitkan&#039;, &#039;Halaman ini dilindungi. Hanya &amp;lt;b&amp;gt;Pengurus&amp;lt;/b&amp;gt; yang memiliki otoritas untuk memodifikasi metadata ekosistem secara langsung.&#039;, &#039;error&#039;);&lt;br /&gt;
                return;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            var $btn = $(this).text(&#039;Sedang Memvalidasi...&#039;).prop(&#039;disabled&#039;, true);&lt;br /&gt;
            var api = new mw.Api();&lt;br /&gt;
            var newData = {}, promises = [], invalid = [], isDel = true;&lt;br /&gt;
&lt;br /&gt;
            Object.keys(projects).forEach(p =&amp;gt; {&lt;br /&gt;
                var v = $(&#039;#in-&#039; + p).val().trim();&lt;br /&gt;
                if (v) {&lt;br /&gt;
                    isDel = false;&lt;br /&gt;
                    promises.push($.ajax({ url: projects[p].url, data: { action: &#039;query&#039;, titles: v, format: &#039;json&#039;, origin: &#039;*&#039; }, dataType: &#039;json&#039; }).done(function(res){&lt;br /&gt;
                        if (res.query.pages[&amp;quot;-1&amp;quot;]) invalid.push(projects[p].name); else newData[p] = v;&lt;br /&gt;
                    }));&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
&lt;br /&gt;
            $.when.apply($, promises).then(function() {&lt;br /&gt;
                if (invalid.length &amp;gt; 0) {&lt;br /&gt;
                    showBoxNotif(&#039;Suntingan anda tidak di terbitkan&#039;, &#039;Artikel dengan judul tersebut tidak ditemukan di basis data Mippedia cabang: &#039; + invalid.join(&#039;, &#039;) + &#039;. Periksa kembali ejaan dan kapitalisasi.&#039;, &#039;error&#039;);&lt;br /&gt;
                    $btn.text(&#039;Terbitkan&#039;).prop(&#039;disabled&#039;, false); return;&lt;br /&gt;
                }&lt;br /&gt;
                &lt;br /&gt;
                api.get({ action: &#039;query&#039;, prop: &#039;revisions&#039;, titles: dataPage, rvprop: &#039;content&#039;, formatversion: 2 }).done(function(r) {&lt;br /&gt;
                    var full = r.query.pages[0].revisions ? JSON.parse(r.query.pages[0].revisions[0].content) : {};&lt;br /&gt;
                    if (isDel) delete full[pageTitle]; else full[pageTitle] = newData;&lt;br /&gt;
                    &lt;br /&gt;
                    api.postWithEditToken({ action: &#039;edit&#039;, title: dataPage, text: JSON.stringify(full, null, 2), summary: &#039;Sync Metadata: &#039; + pageTitle })&lt;br /&gt;
                    .done(function() {&lt;br /&gt;
                        showBoxNotif(&#039;Suntingan anda berhasil di terbitkan!&#039;, &#039;Metadata entitas berhasil disinkronisasi ke seluruh jaringan ekosistem Mippedia.&#039;, &#039;success&#039;);&lt;br /&gt;
                        setTimeout(function(){ location.reload(); }, 1500);&lt;br /&gt;
                    }).fail(function(c) {&lt;br /&gt;
                        showBoxNotif(&#039;Gagal Menyimpan&#039;, &#039;Terjadi kesalahan pada token API atau koneksi server. Kode: &#039; + c, &#039;error&#039;);&lt;br /&gt;
                        $btn.text(&#039;Simpan &amp;amp; Sinkronkan Data&#039;).prop(&#039;disabled&#039;, false);&lt;br /&gt;
                    });&lt;br /&gt;
                });&lt;br /&gt;
            });&lt;br /&gt;
        });&lt;br /&gt;
&lt;br /&gt;
        $(document).on(&#039;click&#039;, &#039;#mip-open-editor&#039;, function() { $(&#039;#mip-editor&#039;).slideToggle(); });&lt;br /&gt;
        loadLinks();&lt;br /&gt;
    });&lt;br /&gt;
})();&lt;br /&gt;
&lt;br /&gt;
(function() {&lt;br /&gt;
    // Fungsi utama suntik teks&lt;br /&gt;
    function forcePreload() {&lt;br /&gt;
        var ns = mw.config.get(&#039;wgNamespaceNumber&#039;);&lt;br /&gt;
        var pageExists = mw.config.get(&#039;wgArticleId&#039;) &amp;gt; 0;&lt;br /&gt;
        &lt;br /&gt;
        // Cek Namespace Utama &amp;amp; Halaman Baru&lt;br /&gt;
        if (ns === 0 &amp;amp;&amp;amp; !pageExists) {&lt;br /&gt;
            // Cari textarea secara spesifik (Desktop &amp;amp; Mobile punya selector beda)&lt;br /&gt;
            var $textbox = $(&#039;#wpTextbox1, textarea.mw-ui-input, .editor-container textarea&#039;);&lt;br /&gt;
            &lt;br /&gt;
            if ($textbox.length &amp;amp;&amp;amp; $textbox.val().trim() === &amp;quot;&amp;quot;) {&lt;br /&gt;
                var pageName = mw.config.get(&#039;wgTitle&#039;);&lt;br /&gt;
                $textbox.val(&#039;{{Infobox umum\n|nama = &#039; + pageName + &#039;\n}}&#039;);&lt;br /&gt;
                console.log(&amp;quot;Mippedia: Infobox injected!&amp;quot;);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // 1. Jalankan pas halaman beres load&lt;br /&gt;
    $(document).ready(forcePreload);&lt;br /&gt;
&lt;br /&gt;
    // 2. Jalankan tiap ada klik (karena mobile buka editor pake klik tanpa refresh)&lt;br /&gt;
    $(document).on(&#039;click&#039;, function() {&lt;br /&gt;
        setTimeout(forcePreload, 800); // Kasih delay dikit nunggu overlay muncul&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    // 3. Pake MutationObserver buat mantau elemen yang baru muncul secara gaib&lt;br /&gt;
    var observer = new MutationObserver(function() {&lt;br /&gt;
        forcePreload();&lt;br /&gt;
    });&lt;br /&gt;
    observer.observe(document.body, { childList: true, subtree: true });&lt;br /&gt;
})();&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================&lt;br /&gt;
   🚀 MIPPEDIA DATA - CONTENT GUARD (MODIFIED FOR RELATED)&lt;br /&gt;
   ========================================================== */&lt;br /&gt;
(function() {&lt;br /&gt;
    function handleBlock(e) {&lt;br /&gt;
        var ns = mw.config.get(&#039;wgNamespaceNumber&#039;);&lt;br /&gt;
        if (ns !== 0 || mw.config.get(&#039;wgIsMainPage&#039;)) return;&lt;br /&gt;
&lt;br /&gt;
        var $el = $(e.currentTarget);&lt;br /&gt;
        &lt;br /&gt;
        if ($el.closest(&#039;.mw-parser-output&#039;).length &amp;amp;&amp;amp; $el.text().toLowerCase().includes(&#039;buat item&#039;)) {&lt;br /&gt;
            return; &lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        var $textbox = $(&#039;#wpTextbox1, .editor-container textarea, textarea.mw-ui-input&#039;);&lt;br /&gt;
        &lt;br /&gt;
        if ($textbox.length) {&lt;br /&gt;
            var content = $textbox.val() || &amp;quot;&amp;quot;;&lt;br /&gt;
            &lt;br /&gt;
            // Pengecekan: Harus ada {{Infobox ATAU setidaknya ada kode #related&lt;br /&gt;
            var hasInfobox = content.includes(&#039;{{Infobox&#039;);&lt;br /&gt;
            var hasRelated = content.includes(&#039;#related:&#039;);&lt;br /&gt;
&lt;br /&gt;
            if (!hasInfobox &amp;amp;&amp;amp; !hasRelated) {&lt;br /&gt;
                e.preventDefault();&lt;br /&gt;
                e.stopPropagation();&lt;br /&gt;
                e.stopImmediatePropagation();&lt;br /&gt;
&lt;br /&gt;
                window.alert(&amp;quot;SUNTINGAN ANDA TIDAK BISA DI TERBITKAN!\n\nMippedia Data bukan tempat untuk menulis artikel ensiklopedia, Jika anda ingin membuat artikel ensiklopedia bukan di sini tempat nya.\n&amp;quot;);&lt;br /&gt;
                return false;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    $(document).on(&#039;click mousedown touchstart&#039;, &lt;br /&gt;
        &#039;#wpSave, .editor-save, .mw-ui-button.primary, button[type=&amp;quot;submit&amp;quot;], .save-button, .header-action button&#039;, &lt;br /&gt;
        function(e) {&lt;br /&gt;
            handleBlock(e);&lt;br /&gt;
        }&lt;br /&gt;
    );&lt;br /&gt;
&lt;br /&gt;
    window.addEventListener(&#039;submit&#039;, function(e) {&lt;br /&gt;
        handleBlock(e);&lt;br /&gt;
    }, true);&lt;br /&gt;
})();&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================&lt;br /&gt;
   🛡️ MIPPEDIA CORE SYSTEM - NEURAL ENGINE V12&lt;br /&gt;
   Update: Brain Upgrade - Semantic Search &amp;amp; Anti-Duplicate&lt;br /&gt;
   Semua fitur asli (Patroli, Promo, Kategori) tetap UTUH.&lt;br /&gt;
   ========================================================== */&lt;br /&gt;
mw.hook(&#039;postEdit&#039;).add(function() {&lt;br /&gt;
    var rawUser = mw.config.get(&#039;wgUserName&#039;);&lt;br /&gt;
    var userName = rawUser ? rawUser.replace(/_/g, &#039; &#039;) : &#039;Anonim&#039;;&lt;br /&gt;
    var isPatroli = (userName === &#039;Admin&#039;);&lt;br /&gt;
    &lt;br /&gt;
    if (mw.config.get(&#039;wgNamespaceNumber&#039;) !== 0) return;&lt;br /&gt;
&lt;br /&gt;
    var api = new mw.Api();&lt;br /&gt;
    var pageTitle = mw.config.get(&#039;wgPageName&#039;).replace(/_/g, &#039; &#039;);&lt;br /&gt;
&lt;br /&gt;
    api.get({&lt;br /&gt;
        action: &#039;query&#039;,&lt;br /&gt;
        titles: pageTitle,&lt;br /&gt;
        prop: &#039;revisions|categories|links&#039;,&lt;br /&gt;
        rvprop: &#039;content&#039;,&lt;br /&gt;
        clshow: &#039;!hidden&#039;,&lt;br /&gt;
        pllimit: &#039;max&#039;&lt;br /&gt;
    }).done(function(resData) {&lt;br /&gt;
        var page = resData.query.pages[Object.keys(resData.query.pages)[0]];&lt;br /&gt;
        if (!page || !page.revisions) return;&lt;br /&gt;
&lt;br /&gt;
        var rawContent = page.revisions[0][&#039;*&#039;];&lt;br /&gt;
        var content = rawContent;&lt;br /&gt;
        var summaryParts = [];&lt;br /&gt;
&lt;br /&gt;
        // --- 2. SUPER INTELLIGENCE RELATED (UPGRADE OTAK V12) ---&lt;br /&gt;
        // Cek jumlah related saat ini&lt;br /&gt;
        var currentRelatedMatch = content.match(/\{\{#related:.*?\}\}/g) || [];&lt;br /&gt;
        &lt;br /&gt;
        // Jika kurang dari 3, kita jalankan otak pencarian canggih&lt;br /&gt;
        if (currentRelatedMatch.length &amp;lt; 3) {&lt;br /&gt;
            // Hapus yang lama dulu agar tidak ada duplikat atau &amp;quot;pake yang bekas&amp;quot;&lt;br /&gt;
            content = content.replace(/\n*\{\{#related:.*?\}\}/g, &#039;&#039;);&lt;br /&gt;
&lt;br /&gt;
            // Langkah A: Ambil kandidat dari Search Engine (Ranking Skor)&lt;br /&gt;
            api.get({&lt;br /&gt;
                action: &#039;query&#039;,&lt;br /&gt;
                list: &#039;search&#039;,&lt;br /&gt;
                srsearch: pageTitle, // Gunakan judul sebagai basis pencarian semantic&lt;br /&gt;
                srlimit: 15,&lt;br /&gt;
                srprop: &#039;&#039;&lt;br /&gt;
            }).done(function(searchRes) {&lt;br /&gt;
                var candidates = {};&lt;br /&gt;
&lt;br /&gt;
                // Masukkan hasil pencarian ke pool skor&lt;br /&gt;
                if (searchRes.query &amp;amp;&amp;amp; searchRes.query.search) {&lt;br /&gt;
                    searchRes.query.search.forEach(function(item, index) {&lt;br /&gt;
                        if (item.title === pageTitle) return;&lt;br /&gt;
                        candidates[item.title] = (15 - index); // Skor berdasarkan urutan relevansi&lt;br /&gt;
                    });&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                // Langkah B: Tambah skor jika artikel ada di daftar Link Internal&lt;br /&gt;
                if (page.links) {&lt;br /&gt;
                    page.links.forEach(function(link) {&lt;br /&gt;
                        if (link.title === pageTitle) return;&lt;br /&gt;
                        candidates[link.title] = (candidates[link.title] || 0) + 5; // Bonus skor link&lt;br /&gt;
                    });&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                // Langkah C: Urutkan berdasarkan skor tertinggi (yang paling nyambung)&lt;br /&gt;
                var sortedTitles = Object.keys(candidates).sort(function(a, b) {&lt;br /&gt;
                    return candidates[b] - candidates[a];&lt;br /&gt;
                });&lt;br /&gt;
&lt;br /&gt;
                // Ambil TOP 3&lt;br /&gt;
                var finalRelated = sortedTitles.filter(t =&amp;gt; t.indexOf(&#039;:&#039;) === -1).slice(0, 3);&lt;br /&gt;
&lt;br /&gt;
                if (finalRelated.length &amp;gt; 0) {&lt;br /&gt;
                    var relatedTags = &#039;\n\n&#039; + finalRelated.map(t =&amp;gt; &#039;{{#related: &#039; + t + &#039;}}&#039;).join(&#039;\n&#039;);&lt;br /&gt;
                    content += relatedTags;&lt;br /&gt;
                    summaryParts.push(&#039;NeuralRelated&#039;);&lt;br /&gt;
                }&lt;br /&gt;
                &lt;br /&gt;
                runPatroliAndSave();&lt;br /&gt;
            });&lt;br /&gt;
        } else {&lt;br /&gt;
            runPatroliAndSave();&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        function runPatroliAndSave() {&lt;br /&gt;
            // --- 3. PATROLI ENGINE (FITUR ASLI - TETAP BERFUNGSI) ---&lt;br /&gt;
            if (isPatroli) {&lt;br /&gt;
                var placeholders = [];&lt;br /&gt;
                // Lindungi Brankas: Template, Header, Kategori, Ref, dan Kalimat Pembuka&lt;br /&gt;
                content = content.replace(/(\{\{[\s\S]*?\}\}|==+.*?==+|\[\[Kategori:.*?\]\]|&amp;lt;ref[\s\S]*?&amp;lt;\/ref&amp;gt;|^.*?adalah)/gi, function(match) {&lt;br /&gt;
                    placeholders.push(match);&lt;br /&gt;
                    return &#039;___MIP_SKIP_&#039; + (placeholders.length - 1) + &#039;___&#039;;&lt;br /&gt;
                });&lt;br /&gt;
&lt;br /&gt;
                // Proses Auto-Link (Wajib ambil daftar AllPages dulu)&lt;br /&gt;
                api.get({ action: &#039;query&#039;, list: &#039;allpages&#039;, apnamespace: 0, aplimit: &#039;max&#039; }).done(function(apData) {&lt;br /&gt;
                    var allTitles = apData.query.allpages.map(p =&amp;gt; p.title);&lt;br /&gt;
                    var lowerTitles = allTitles.map(t =&amp;gt; t.toLowerCase());&lt;br /&gt;
&lt;br /&gt;
                    var tokens = content.split(/(\s+|\[\[|\]\])/);&lt;br /&gt;
                    var inLink = false;&lt;br /&gt;
                    for (var i = 0; i &amp;lt; tokens.length; i++) {&lt;br /&gt;
                        if (tokens[i] === &#039;[[&#039; ) { inLink = true; continue; }&lt;br /&gt;
                        if (tokens[i] === &#039;]]&#039; ) { inLink = false; continue; }&lt;br /&gt;
                        if (inLink || tokens[i].trim().length &amp;lt; 3 || tokens[i].includes(&#039;___MIP_SKIP_&#039;)) continue;&lt;br /&gt;
&lt;br /&gt;
                        var wordsInToken = tokens[i].match(/\b\w+\b/g);&lt;br /&gt;
                        if (wordsInToken) {&lt;br /&gt;
                            wordsInToken.forEach(function(word) {&lt;br /&gt;
                                var idx = lowerTitles.indexOf(word.toLowerCase());&lt;br /&gt;
                                if (idx !== -1 &amp;amp;&amp;amp; allTitles[idx] !== pageTitle) {&lt;br /&gt;
                                    tokens[i] = tokens[i].replace(new RegExp(&#039;\\b&#039; + word + &#039;\\b&#039;, &#039;g&#039;), &#039;[[&#039; + allTitles[idx] + &#039;|&#039; + word + &#039;]]&#039;);&lt;br /&gt;
                                }&lt;br /&gt;
                            });&lt;br /&gt;
                        }&lt;br /&gt;
                    }&lt;br /&gt;
                    content = tokens.join(&#039;&#039;);&lt;br /&gt;
                    &lt;br /&gt;
                    // Kembalikan dari Brankas&lt;br /&gt;
                    content = content.replace(/___MIP_SKIP_(\d+)___/g, function(match, id) { return placeholders[id]; });&lt;br /&gt;
&lt;br /&gt;
                    // Bersihkan Link Merah&lt;br /&gt;
                    content = content.replace(/\[\[([^|\]:]+)\]\]/g, function(match, p1) {&lt;br /&gt;
                        return lowerTitles.includes(p1.toLowerCase()) ? match : p1;&lt;br /&gt;
                    });&lt;br /&gt;
&lt;br /&gt;
                    saveAction();&lt;br /&gt;
                });&lt;br /&gt;
            } else {&lt;br /&gt;
                saveAction();&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        function saveAction() {&lt;br /&gt;
            // --- 4. EKSEKUSI ---&lt;br /&gt;
            if (content.trim() !== rawContent.trim()) {&lt;br /&gt;
                api.postWithToken(&#039;edit&#039;, {&lt;br /&gt;
                    action: &#039;edit&#039;,&lt;br /&gt;
                    title: pageTitle,&lt;br /&gt;
                    text: content,&lt;br /&gt;
                    summary: &#039;Mippedia Neural Engine V12: &#039; + summaryParts.join(&#039;, &#039;),&lt;br /&gt;
                    bot: true, markasbot: true&lt;br /&gt;
                }).done(function() { location.reload(); });&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    });&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================&lt;br /&gt;
   🌐 MIPPEDIA SHORTDESC - DATA CENTER (PREMIUM UI)&lt;br /&gt;
   Status: INDEPENDENT &amp;amp; REFINED VISUAL&lt;br /&gt;
   Storage: MediaWiki:ShortDesc-Data.json&lt;br /&gt;
   ========================================================== */&lt;br /&gt;
(function($, mw) {&lt;br /&gt;
    &amp;quot;use strict&amp;quot;;&lt;br /&gt;
    $(document).ready(function() {&lt;br /&gt;
        if (mw.config.get(&#039;wgNamespaceNumber&#039;) !== 0 || mw.config.get(&#039;wgIsMainPage&#039;)) return;&lt;br /&gt;
&lt;br /&gt;
        var pageTitle = mw.config.get(&#039;wgPageName&#039;);&lt;br /&gt;
        var storagePage = &#039;MediaWiki:ShortDesc-Data.json&#039;;&lt;br /&gt;
        var isAdmin = mw.config.get(&#039;wgUserGroups&#039;).some(g =&amp;gt; [&#039;sysop&#039;, &#039;interface-admin&#039;].includes(g));&lt;br /&gt;
&lt;br /&gt;
        var langs = {&lt;br /&gt;
            id: { label: &#039;Mippedia bahasa Indonesia&#039;, short: &#039;ID&#039;, color: &#039;#6366f1&#039; },&lt;br /&gt;
            en: { label: &#039;Mippedia bahasa Inggris&#039;, short: &#039;EN&#039;, color: &#039;#3b82f6&#039; },&lt;br /&gt;
            concise: { label: &#039;Mippedia bahasa Indonesia ringkas&#039;, short: &#039;CON&#039;, color: &#039;#14b8a6&#039; }&lt;br /&gt;
        };&lt;br /&gt;
&lt;br /&gt;
        // UI Box dengan Spasi dan Desain Baru&lt;br /&gt;
        var html = `&lt;br /&gt;
            &amp;lt;div id=&amp;quot;desc-manager&amp;quot; style=&amp;quot;background:#ffffff; border:1px solid #f1f5f9; border-left:4px solid #6366f1; border-radius:12px; padding:20px; margin: 20px 0 25px 0; box-shadow:0 4px 12px rgba(0,0,0,0.03); font-family: -apple-system,BlinkMacSystemFont,&#039;Segoe UI&#039;,Roboto,sans-serif;&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;div style=&amp;quot;display:flex; justify-content:space-between; align-items:center; margin-bottom:12px;&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;span style=&amp;quot;font-size:13px; font-weight:700; color:#475569; text-transform:uppercase; letter-spacing:0.5px; display:flex; align-items:center; gap:6px;&amp;quot;&amp;gt;&lt;br /&gt;
                        Label Deskripsi&lt;br /&gt;
                    &amp;lt;/span&amp;gt;&lt;br /&gt;
                    &amp;lt;span id=&amp;quot;desc-open-editor&amp;quot; style=&amp;quot;cursor:pointer; padding:5px; transition:0.2s;&amp;quot; title=&amp;quot;Edit Deskripsi&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;svg width=&amp;quot;16&amp;quot; height=&amp;quot;16&amp;quot; viewBox=&amp;quot;0 0 24 24&amp;quot; fill=&amp;quot;none&amp;quot; stroke=&amp;quot;#94a3b8&amp;quot; stroke-width=&amp;quot;2&amp;quot; stroke-linecap=&amp;quot;round&amp;quot; stroke-linejoin=&amp;quot;round&amp;quot;&amp;gt;&amp;lt;path d=&amp;quot;M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7&amp;quot;&amp;gt;&amp;lt;/path&amp;gt;&amp;lt;path d=&amp;quot;M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z&amp;quot;&amp;gt;&amp;lt;/path&amp;gt;&amp;lt;/svg&amp;gt;&lt;br /&gt;
                    &amp;lt;/span&amp;gt;&lt;br /&gt;
                &amp;lt;/div&amp;gt;&lt;br /&gt;
                &lt;br /&gt;
                &amp;lt;div id=&amp;quot;desc-status-display&amp;quot; style=&amp;quot;display:flex; flex-direction:column; gap:8px;&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;small style=&amp;quot;color:#94a3b8; font-style:italic;&amp;quot;&amp;gt;Sinkronisasi data...&amp;lt;/small&amp;gt;&lt;br /&gt;
                &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;div id=&amp;quot;desc-editor&amp;quot; style=&amp;quot;display:none; margin-top:18px; border-top:1px dashed #e2e8f0; padding-top:18px;&amp;quot;&amp;gt;&lt;br /&gt;
                    ${Object.keys(langs).map(k =&amp;gt; `&lt;br /&gt;
                        &amp;lt;div style=&amp;quot;margin-bottom:12px;&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;label style=&amp;quot;display:block; font-size:11px; font-weight:bold; color:#64748b; margin-bottom:4px;&amp;quot;&amp;gt;${langs[k].label}&amp;lt;/label&amp;gt;&lt;br /&gt;
                            &amp;lt;input type=&amp;quot;text&amp;quot; id=&amp;quot;desc-in-${k}&amp;quot; placeholder=&amp;quot;Tulis deskripsi...&amp;quot; style=&amp;quot;width:100%; padding:10px; font-size:13px; border:1px solid #e2e8f0; border-radius:8px; box-sizing:border-box; outline:none; focus:border-color:#6366f1;&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;/div&amp;gt;&lt;br /&gt;
                    `).join(&#039;&#039;)}&lt;br /&gt;
                    &amp;lt;button id=&amp;quot;desc-save&amp;quot; style=&amp;quot;width:100%; padding:12px; background:#6366f1; color:white; border:none; border-radius:8px; font-size:13px; font-weight:600; cursor:pointer; margin-top:5px;&amp;quot;&amp;gt;Terbitkan&amp;lt;/button&amp;gt;&lt;br /&gt;
                &amp;lt;/div&amp;gt;&lt;br /&gt;
            &amp;lt;/div&amp;gt;`;&lt;br /&gt;
&lt;br /&gt;
        $(&#039;.mw-parser-output&#039;).prepend(html);&lt;br /&gt;
&lt;br /&gt;
        function loadDescStatus() {&lt;br /&gt;
            new mw.Api().get({ action: &#039;query&#039;, prop: &#039;revisions&#039;, titles: storagePage, rvprop: &#039;content&#039;, formatversion: 2 }).done(function(res) {&lt;br /&gt;
                var content = res.query.pages[0].revisions ? res.query.pages[0].revisions[0].content : &amp;quot;{}&amp;quot;;&lt;br /&gt;
                var fullData = JSON.parse(content);&lt;br /&gt;
                var myData = fullData[pageTitle] || {};&lt;br /&gt;
                var $statusBox = $(&#039;#desc-status-display&#039;).empty();&lt;br /&gt;
                var foundAny = false;&lt;br /&gt;
&lt;br /&gt;
                Object.keys(langs).forEach(k =&amp;gt; {&lt;br /&gt;
                    var val = myData[k];&lt;br /&gt;
                    if (val &amp;amp;&amp;amp; val.trim() !== &amp;quot;&amp;quot;) {&lt;br /&gt;
                        foundAny = true;&lt;br /&gt;
                        $statusBox.append(`&lt;br /&gt;
                            &amp;lt;div style=&amp;quot;display:flex; align-items:center; gap:10px;&amp;quot;&amp;gt;&lt;br /&gt;
                                &amp;lt;span style=&amp;quot;background:${langs[k].color}15; color:${langs[k].color}; padding:3px 10px; border-radius:20px; font-size:10px; font-weight:800; border:1px solid ${langs[k].color}30; min-width:35px; text-align:center;&amp;quot;&amp;gt;${langs[k].short}&amp;lt;/span&amp;gt;&lt;br /&gt;
                                &amp;lt;span style=&amp;quot;font-size:13px; color:#334155; line-height:1.4;&amp;quot;&amp;gt;${val}&amp;lt;/span&amp;gt;&lt;br /&gt;
                            &amp;lt;/div&amp;gt;&lt;br /&gt;
                        `);&lt;br /&gt;
                        $(&#039;#desc-in-&#039; + k).val(val);&lt;br /&gt;
                    }&lt;br /&gt;
                });&lt;br /&gt;
&lt;br /&gt;
                if (!foundAny) {&lt;br /&gt;
                    $statusBox.html(&#039;&amp;lt;div style=&amp;quot;color:#cbd5e0; font-size:13px; background:#f8fafc; padding:10px; border-radius:8px; border:1px dashed #e2e8f0;&amp;quot;&amp;gt;Belum ada metadata deskripsi yang dikaitkan dengan entitas ini.&amp;lt;/div&amp;gt;&#039;);&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        $(document).on(&#039;click&#039;, &#039;#desc-open-editor&#039;, function() { $(&#039;#desc-editor&#039;).slideToggle(); });&lt;br /&gt;
&lt;br /&gt;
        $(document).on(&#039;click&#039;, &#039;#desc-save&#039;, function() {&lt;br /&gt;
            if (!isAdmin) { alert(&#039;Akses ditolak. Anda memerlukan izin pengurus.&#039;); return; }&lt;br /&gt;
            var $btn = $(this).text(&#039;Proses Sinkronisasi...&#039;).css(&#039;opacity&#039;,&#039;0.7&#039;);&lt;br /&gt;
            var api = new mw.Api();&lt;br /&gt;
            var newData = { id: $(&#039;#desc-in-id&#039;).val().trim(), en: $(&#039;#desc-in-en&#039;).val().trim(), concise: $(&#039;#desc-in-concise&#039;).val().trim() };&lt;br /&gt;
&lt;br /&gt;
            api.get({ action: &#039;query&#039;, prop: &#039;revisions&#039;, titles: storagePage, rvprop: &#039;content&#039;, formatversion: 2 }).done(function(r) {&lt;br /&gt;
                var json = r.query.pages[0].revisions ? JSON.parse(r.query.pages[0].revisions[0].content) : {};&lt;br /&gt;
                if (!newData.id &amp;amp;&amp;amp; !newData.en &amp;amp;&amp;amp; !newData.concise) { delete json[pageTitle]; } else { json[pageTitle] = newData; }&lt;br /&gt;
&lt;br /&gt;
                api.postWithEditToken({&lt;br /&gt;
                    action: &#039;edit&#039;,&lt;br /&gt;
                    title: storagePage,&lt;br /&gt;
                    text: JSON.stringify(json, null, 2),&lt;br /&gt;
                    summary: &#039;Update Entity Description: &#039; + pageTitle&lt;br /&gt;
                }).done(function() { location.reload(); });&lt;br /&gt;
            });&lt;br /&gt;
        });&lt;br /&gt;
&lt;br /&gt;
        loadDescStatus();&lt;br /&gt;
    });&lt;br /&gt;
})(jQuery, mediaWiki);&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================&lt;br /&gt;
   📍 MIPPEDIA DATA - ULTIMATE TEXT-TO-MAP LOCATOR&lt;br /&gt;
   Fitur: Deteksi lokasi dari teks dengan database label lengkap&lt;br /&gt;
   ========================================================== */&lt;br /&gt;
(function() {&lt;br /&gt;
    $(document).ready(function() {&lt;br /&gt;
        var locationText = &amp;quot;&amp;quot;;&lt;br /&gt;
        &lt;br /&gt;
        // --- DAFTAR LABEL SUPER LENGKAP &amp;amp; MASUK AKAL ---&lt;br /&gt;
        var locationLabels = [&lt;br /&gt;
            // Umum &amp;amp; Geografis&lt;br /&gt;
            &#039;lokasi&#039;, &#039;tempat&#039;, &#039;wilayah&#039;, &#039;daerah&#039;, &#039;koordinat&#039;, &#039;alamat&#039;,&lt;br /&gt;
            // Orang (Biografi)&lt;br /&gt;
            &#039;tempat lahir&#039;, &#039;asal&#039;, &#039;kediaman&#039;, &#039;domisili&#039;, &#039;negara asal&#039;,&lt;br /&gt;
            // Organisasi &amp;amp; Perusahaan&lt;br /&gt;
            &#039;kantor pusat&#039;, &#039;markas&#039;, &#039;cabang utama&#039;, &#039;titik operasi&#039;,&lt;br /&gt;
            // Makanan &amp;amp; Budaya&lt;br /&gt;
            &#039;asal wilayah&#039;, &#039;daerah asal&#039;, &#039;negara sumber&#039;, &#039;kawasan&#039;,&lt;br /&gt;
            // Sejarah &amp;amp; Bangunan&lt;br /&gt;
            &#039;letak&#039;, &#039;posisi&#039;, &#039;titik temu&#039;, &#039;orbit&#039;&lt;br /&gt;
        ];&lt;br /&gt;
&lt;br /&gt;
        // Jalankan pencarian di tabel data (infobox atau wikitable)&lt;br /&gt;
        $(&#039;.wikitable tr, .infobox tr, .mip-data-table tr&#039;).each(function() {&lt;br /&gt;
            var label = $(this).find(&#039;th&#039;).text().toLowerCase().trim();&lt;br /&gt;
            // Hilangkan karakter spesial kayak titik dua biar matching-nya akurat&lt;br /&gt;
            label = label.replace(/[:]/g, &#039;&#039;);&lt;br /&gt;
&lt;br /&gt;
            var isMatch = locationLabels.some(function(target) {&lt;br /&gt;
                return label === target || label.includes(target);&lt;br /&gt;
            });&lt;br /&gt;
&lt;br /&gt;
            if (isMatch) {&lt;br /&gt;
                var rawValue = $(this).find(&#039;td&#039;).text().trim();&lt;br /&gt;
                // Ambil bagian utama sebelum tanda koma, kurung, atau titik koma&lt;br /&gt;
                // Misal: &amp;quot;Bandung, Jawa Barat&amp;quot; -&amp;gt; ambil &amp;quot;Bandung&amp;quot;&lt;br /&gt;
                locationText = rawValue.split(/[,(\[;]/)[0].trim(); &lt;br /&gt;
                &lt;br /&gt;
                if (locationText.length &amp;gt; 2) return false; // Stop jika sudah ketemu yang valid&lt;br /&gt;
            }&lt;br /&gt;
        });&lt;br /&gt;
&lt;br /&gt;
        // Eksekusi Render Peta&lt;br /&gt;
        if (locationText &amp;amp;&amp;amp; locationText.length &amp;gt; 2) {&lt;br /&gt;
            var $mapWrapper = $(&#039;&amp;lt;div&amp;gt;&#039;).css({&lt;br /&gt;
                &#039;margin&#039;: &#039;15px 0&#039;,&lt;br /&gt;
                &#039;padding&#039;: &#039;12px&#039;,&lt;br /&gt;
                &#039;border&#039;: &#039;1px solid #ddd&#039;,&lt;br /&gt;
                &#039;background&#039;: &#039;#ffffff&#039;,&lt;br /&gt;
                &#039;border-radius&#039;: &#039;10px&#039;,&lt;br /&gt;
                &#039;box-shadow&#039;: &#039;0 4px 12px rgba(0,0,0,0.08)&#039;&lt;br /&gt;
            });&lt;br /&gt;
&lt;br /&gt;
            $mapWrapper.append(&#039;&amp;lt;div style=&amp;quot;font-weight:bold; font-size:0.9em; margin-bottom:10px; color:#444; display:flex; align-items:center;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                               &#039;&amp;lt;span style=&amp;quot;margin-right:8px;&amp;quot;&amp;gt;🗺️&amp;lt;/span&amp;gt;Pratinjau Lokasi : &#039; + locationText + &#039;&amp;lt;/div&amp;gt;&#039;);&lt;br /&gt;
&lt;br /&gt;
            // Embed URL dengan pencarian teks (Nominatim)&lt;br /&gt;
            var embedUrl = &amp;quot;https://www.openstreetmap.org/export/embed.html?layer=mapnik&amp;amp;q=&amp;quot; + encodeURIComponent(locationText);&lt;br /&gt;
&lt;br /&gt;
            var $iframe = $(&#039;&amp;lt;iframe&amp;gt;&#039;).attr({&lt;br /&gt;
                &#039;src&#039;: embedUrl,&lt;br /&gt;
                &#039;width&#039;: &#039;100%&#039;,&lt;br /&gt;
                &#039;height&#039;: &#039;280&#039;,&lt;br /&gt;
                &#039;frameborder&#039;: &#039;0&#039;,&lt;br /&gt;
                &#039;style&#039;: &#039;border-radius: 8px; border: 1px solid #eee;&#039;&lt;br /&gt;
            });&lt;br /&gt;
&lt;br /&gt;
            $mapWrapper.append($iframe);&lt;br /&gt;
            &lt;br /&gt;
            // Link eksternal yang lebih rapi&lt;br /&gt;
            var gMapsUrl = &amp;quot;https://www.google.com/maps/search/&amp;quot; + encodeURIComponent(locationText);&lt;br /&gt;
            $mapWrapper.append(&#039;&amp;lt;div style=&amp;quot;text-align:right; margin-top:8px;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                               &#039;&amp;lt;a href=&amp;quot;&#039; + gMapsUrl + &#039;&amp;quot; target=&amp;quot;_blank&amp;quot; style=&amp;quot;font-size:0.75em; color:#6a5acd; font-weight:bold; text-decoration:none; text-transform:uppercase; letter-spacing:0.5px;&amp;quot;&amp;gt;Buka di Google Maps →&amp;lt;/a&amp;gt;&amp;lt;/div&amp;gt;&#039;);&lt;br /&gt;
&lt;br /&gt;
            // Masukkan ke bawah section deskripsi otomatis&lt;br /&gt;
            if ($(&#039;#mip-desc-section&#039;).length) {&lt;br /&gt;
                $(&#039;#mip-desc-section&#039;).after($mapWrapper);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    });&lt;br /&gt;
})();&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://data.mippedia.org/index.php?title=MediaWiki:Common.js&amp;diff=904</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://data.mippedia.org/index.php?title=MediaWiki:Common.js&amp;diff=904"/>
		<updated>2026-06-01T17:08:13Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* ==========================================================&lt;br /&gt;
   🧠 MIPPEDIA DATA - FIX ISOLATION &amp;amp; FAILSAFE RENDERING (V11.4)&lt;br /&gt;
   Features: Priority Check (ID &amp;gt; EN &amp;gt; CONCISE), Auto-Age, Auto-Bold.&lt;br /&gt;
   Fixes:&lt;br /&gt;
             - Fixed crash where script stops completely if #descBox doesn&#039;t exist.&lt;br /&gt;
             - Fixed condition where data is not hidden on first-load empty pages.&lt;br /&gt;
             - Guaranteed instant hide execution for infobox, mapbox, and site links.&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
// --- ⚡ LANGKAH 1: ENGINE ISOLASI SINKRONUS (ANTI-FLICKER GLOBAL CSS) ---&lt;br /&gt;
(function() {&lt;br /&gt;
    var style = document.createElement(&#039;style&#039;);&lt;br /&gt;
    style.id = &#039;mip-core-isolate-style&#039;;&lt;br /&gt;
    style.innerHTML = &lt;br /&gt;
        &#039;body.mip-lock-active #mw-content-text &amp;gt; *:not(#mip-empty-state-notice):not(#mip-desc-section):not(script):not(style), &#039; +&lt;br /&gt;
        &#039;body.mip-lock-active .vertical-navbox, body.mip-lock-active .infobox, &#039; +&lt;br /&gt;
        &#039;body.mip-lock-active #catlinks, body.mip-lock-active .data-box, &#039; +&lt;br /&gt;
        &#039;body.mip-lock-active .wikibase-statementlistview, body.mip-lock-active .wikibase-sitelinks { display: none !important; }&#039;;&lt;br /&gt;
    document.head.appendChild(style);&lt;br /&gt;
})();&lt;br /&gt;
&lt;br /&gt;
// --- 🛠️ LANGKAH 2: CORE OPERATIONS &amp;amp; LOGIC ---&lt;br /&gt;
(function() {&lt;br /&gt;
    $(document).ready(function() {&lt;br /&gt;
        var pageTitle = mw.config.get(&#039;wgPageName&#039;).replace(/_/g, &#039; &#039;),&lt;br /&gt;
            cacheKey = &#039;mip_smart_context_thumb_&#039; + pageTitle,&lt;br /&gt;
            currentYear = 2026;&lt;br /&gt;
&lt;br /&gt;
        // Inisialisasi DOM - Buat dinamis jika elemen penampung belum ada di skin wiki&lt;br /&gt;
        if (!$(&#039;#mip-desc-section&#039;).length) {&lt;br /&gt;
            $(&#039;#mw-content-text&#039;).prepend(&#039;&amp;lt;div id=&amp;quot;mip-desc-section&amp;quot; style=&amp;quot;display:none;&amp;quot;&amp;gt;&amp;lt;div id=&amp;quot;mip-auto-description&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div id=&amp;quot;mip-source-info&amp;quot; style=&amp;quot;margin-top:8px;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&#039;);&lt;br /&gt;
        }&lt;br /&gt;
        if (!$(&#039;#mip-project-portal&#039;).length) {&lt;br /&gt;
            $(&#039;#mw-content-text&#039;).append(&#039;&amp;lt;div id=&amp;quot;mip-project-portal&amp;quot; style=&amp;quot;display:none; margin-top:20px; text-align:center; font-size:0.9em; color:#666;&amp;quot;&amp;gt;Halaman ini juga tersedia di: &amp;lt;span id=&amp;quot;mip-portal-links&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&#039;);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        var $descSection = $(&#039;#mip-desc-section&#039;), &lt;br /&gt;
            $descBox = $(&#039;#mip-auto-description&#039;),&lt;br /&gt;
            $sourceInfo = $(&#039;#mip-source-info&#039;), &lt;br /&gt;
            $portalLinks = $(&#039;#mip-portal-links&#039;),&lt;br /&gt;
            $projectPortal = $(&#039;#mip-project-portal&#039;), &lt;br /&gt;
            $mainContent = $(&#039;#mw-content-text&#039;);&lt;br /&gt;
&lt;br /&gt;
        var projects = [&lt;br /&gt;
            { id: &#039;id&#039;, name: &#039;Mippedia bahasa Indonesia&#039;, url: &#039;https://id.mippedia.org/api.php&#039;, base: &#039;https://id.mippedia.org/wiki/&#039;, label: &#039;Mippedia Indonesia&#039; },&lt;br /&gt;
            { id: &#039;en&#039;, name: &#039;Mippedia bahasa Inggris&#039;, url: &#039;https://en.mippedia.org/api.php&#039;, base: &#039;https://en.mippedia.org/wiki/&#039;, label: &#039;Mippedia Inggris&#039; },&lt;br /&gt;
            { id: &#039;concise&#039;, name: &#039;Mippedia bahasa Indonesia ringkas&#039;, url: &#039;https://concise.mippedia.org/api.php&#039;, base: &#039;https://concise.mippedia.org/wiki/&#039;, label: &#039;Mippedia Ringkas&#039; }&lt;br /&gt;
        ];&lt;br /&gt;
&lt;br /&gt;
        // --- 🎨 CSS ANIMATION &amp;amp; BUTTON HUB ---&lt;br /&gt;
        if (!$(&#039;#mip-clean-style&#039;).length) {&lt;br /&gt;
            $(&#039;head&#039;).append(&lt;br /&gt;
                &#039;&amp;lt;style id=&amp;quot;mip-clean-style&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                    &#039;@keyframes mipFadeInUp { from { opacity: 0; transform: translateY(12px); } to { opacity: 1; transform: translateY(0); } }&#039; +&lt;br /&gt;
                    &#039;@keyframes mipPulse { 0% { transform: scale(1); opacity: 1; } 50% { transform: scale(1.06); opacity: 0.85; } 100% { transform: scale(1); opacity: 1; } }&#039; +&lt;br /&gt;
                    &#039;#mip-empty-state-notice { display: block !important; animation: mipFadeInUp 0.35s cubic-bezier(0.16, 1, 0.3, 1) forwards; }&#039; +&lt;br /&gt;
                    &#039;.mip-pulse-icon { animation: mipPulse 2s infinite ease-in-out; transform-origin: center; }&#039; +&lt;br /&gt;
                    &#039;.mip-btn-container { display: flex; flex-wrap: wrap; justify-content: center; margin: 30px 0 25px 0; padding-top: 5px; }&#039; +&lt;br /&gt;
                    &#039;.mip-action-btn { display: inline-flex; align-items: center; justify-content: center; padding: 11px 22px; margin: 6px; font-size: 0.9em; font-weight: 600; color: #6a5acd !important; background: #ffffff; border: 1.5px solid #6a5acd; border-radius: 30px; text-decoration: none !important; cursor: pointer; transition: all 0.25s ease-in-out; box-shadow: 0 2px 5px rgba(106,92,205,0.08); flex-grow: 1; max-width: 220px; min-width: 160px; }&#039; +&lt;br /&gt;
                    &#039;.mip-action-btn:hover { color: #ffffff !important; background: #6a5acd; transform: translateY(-2px); box-shadow: 0 4px 12px rgba(106,92,205,0.2); }&#039; +&lt;br /&gt;
                &#039;&amp;lt;/style&amp;gt;&#039;&lt;br /&gt;
            );&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        var cached = JSON.parse(localStorage.getItem(cacheKey) || &amp;quot;{}&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        function applyAutoBold(text) { return text.replace(new RegExp(&#039;(&#039; + pageTitle + &#039;)&#039;, &#039;gi&#039;), &#039;&amp;lt;strong&amp;gt;$1&amp;lt;/strong&amp;gt;&#039;); }&lt;br /&gt;
        function cleanExtract(text) { return text.replace(/\[\d+\]/g, &#039;&#039;).replace(/\{\{[^}]+\}\}/g, &#039;&#039;).replace(/\(\s*\)/g, &#039;&#039;).replace(/\s\s+/g, &#039; &#039;).trim(); }&lt;br /&gt;
        &lt;br /&gt;
        function applyDynamicContext(text) {&lt;br /&gt;
            var date = new Date();&lt;br /&gt;
            var hari = [&amp;quot;Minggu&amp;quot;, &amp;quot;Senin&amp;quot;, &amp;quot;Selasa&amp;quot;, &amp;quot;Rabu&amp;quot;, &amp;quot;Kamis&amp;quot;, &amp;quot;Jumat&amp;quot;, &amp;quot;Sabtu&amp;quot;];&lt;br /&gt;
            var bulan = [&amp;quot;Januari&amp;quot;, &amp;quot;Februari&amp;quot;, &amp;quot;Maret&amp;quot;, &amp;quot;April&amp;quot;, &amp;quot;Mei&amp;quot;, &amp;quot;Juni&amp;quot;, &amp;quot;Juli&amp;quot;, &amp;quot;Agustus&amp;quot;, &amp;quot;September&amp;quot;, &amp;quot;Oktober&amp;quot;, &amp;quot;November&amp;quot;, &amp;quot;Desember&amp;quot;];&lt;br /&gt;
            var tglSkrg = hari[date.getDay()] + &amp;quot;, &amp;quot; + date.getDate() + &amp;quot; &amp;quot; + bulan[date.getMonth()] + &amp;quot; &amp;quot; + date.getFullYear();&lt;br /&gt;
            return text.replace(/(hari ini|saat ini|sekarang)/gi, &#039;$1 (&#039; + tglSkrg + &#039;)&#039;)&lt;br /&gt;
                .replace(/(\d{1,2}\s(?:Januari|Februari|Maret|April|Mei|Juni|Juli|Agustus|September|Oktober|November|Desember)\s(\d{4}))/gi, function(m, f, y) { &lt;br /&gt;
                    return f + &amp;quot; &amp;lt;span style=&#039;color: #444; font-weight: bold;&#039;&amp;gt;– usia &amp;quot; + (currentYear - parseInt(y)) + &amp;quot; tahun&amp;lt;/span&amp;gt;&amp;quot;; &lt;br /&gt;
                })&lt;br /&gt;
                .replace(/(sejak|tahun)\s(\d{4})/gi, function(m, k, y) {&lt;br /&gt;
                    var gap = currentYear - parseInt(y);&lt;br /&gt;
                    if (gap &amp;gt; 0 &amp;amp;&amp;amp; gap &amp;lt; 100) return k + &amp;quot; &amp;quot; + y + &amp;quot; &amp;lt;small style=&#039;color: #888;&#039;&amp;gt;(&amp;quot; + gap + &amp;quot; thn lalu)&amp;lt;/small&amp;gt;&amp;quot;;&lt;br /&gt;
                    return m;&lt;br /&gt;
                });&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        function applySummary(text) {&lt;br /&gt;
            var limit = 250;&lt;br /&gt;
            if (text.length &amp;lt;= limit) return &#039;&amp;lt;span&amp;gt;&#039; + text + &#039;&amp;lt;/span&amp;gt;&#039;;&lt;br /&gt;
            return &#039;&amp;lt;span&amp;gt;&#039; + text.substring(0, limit) + &#039;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;mip-dots&amp;quot;&amp;gt;... &amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;mip-more&amp;quot; style=&amp;quot;display:none;&amp;quot;&amp;gt;&#039; + text.substring(limit) + &#039;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;mip-read-btn&amp;quot; style=&amp;quot;color: #6a5acd; cursor: pointer; font-weight: bold; margin-left: 5px;&amp;quot;&amp;gt;Baca selengkapnya&amp;lt;/span&amp;gt;&#039;;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        function buildSmartLinks(currentId, validatedEnTitle) {&lt;br /&gt;
            $portalLinks.empty();&lt;br /&gt;
            var validLinks = [];&lt;br /&gt;
            var checkRequests = projects.filter(p =&amp;gt; p.id !== currentId).map(function(p) {&lt;br /&gt;
                var targetTitle = (p.id === &#039;en&#039; &amp;amp;&amp;amp; validatedEnTitle) ? validatedEnTitle : pageTitle;&lt;br /&gt;
                if (p.id === &#039;en&#039; &amp;amp;&amp;amp; !validatedEnTitle) return $.Deferred().resolve();&lt;br /&gt;
&lt;br /&gt;
                return $.ajax({ url: p.url, data: { action: &#039;query&#039;, titles: targetTitle, format: &#039;json&#039;, origin: &#039;*&#039; }, dataType: &#039;json&#039; })&lt;br /&gt;
                    .then(function(data) { &lt;br /&gt;
                        if (data.query.pages[&amp;quot;-1&amp;quot;] === undefined) { &lt;br /&gt;
                            validLinks.push(&#039;&amp;lt;a href=&amp;quot;&#039; + p.base + encodeURIComponent(targetTitle) + &#039;&amp;quot; target=&amp;quot;_blank&amp;quot; style=&amp;quot;color: #6a5acd; text-decoration: underline; font-weight: bold;&amp;quot;&amp;gt;&#039; + p.label + &#039;&amp;lt;/a&amp;gt;&#039;); &lt;br /&gt;
                        } &lt;br /&gt;
                    });&lt;br /&gt;
            });&lt;br /&gt;
&lt;br /&gt;
            $.when.apply($, checkRequests).done(function() {&lt;br /&gt;
                if (validLinks.length &amp;gt; 0) { $portalLinks.html(validLinks.join(&#039; &amp;lt;span style=&amp;quot;color:#ccc; margin: 0 5px;&amp;quot;&amp;gt;•&amp;lt;/span&amp;gt; &#039;)); $projectPortal.fadeIn(); }&lt;br /&gt;
            });&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // --- 🧠 LAYOUT MANAGER (KUNCI/BUKA HALAMAN) ---&lt;br /&gt;
        function toggleMippediaLayout(isEmpty) {&lt;br /&gt;
            var $existingNotice = $(&#039;#mip-empty-state-notice&#039;);&lt;br /&gt;
            var userGroups = mw.config.get(&#039;wgUserGroups&#039;) || [];&lt;br /&gt;
            var isSysop = userGroups.indexOf(&#039;sysop&#039;) !== -1;&lt;br /&gt;
            var $editElements = $(&#039;#ca-edit, .mw-editsection, .wb-editsection, .mip-edit-trigger, [id*=&amp;quot;edit&amp;quot;], [class*=&amp;quot;edit-pencil&amp;quot;]&#039;);&lt;br /&gt;
            var $metaRobots = $(&#039;meta[name=&amp;quot;robots&amp;quot;]&#039;);&lt;br /&gt;
&lt;br /&gt;
            if (isEmpty) {&lt;br /&gt;
                $(&#039;body&#039;).addClass(&#039;mip-lock-active&#039;); // Eksekusi penyembunyian total&lt;br /&gt;
                $descSection.hide();&lt;br /&gt;
&lt;br /&gt;
                if (!$existingNotice.length) {&lt;br /&gt;
                    var createUrlID = &#039;https://id.mippedia.org/index.php?title=&#039; + encodeURIComponent(pageTitle) + &#039;&amp;amp;action=edit&#039;;&lt;br /&gt;
                    var createUrlEN = &#039;https://en.mippedia.org/index.php?title=&#039; + encodeURIComponent(pageTitle) + &#039;&amp;amp;action=edit&#039;;&lt;br /&gt;
                    var createUrlConcise = &#039;https://concise.mippedia.org/index.php?title=&#039; + encodeURIComponent(pageTitle) + &#039;&amp;amp;action=edit&#039;;&lt;br /&gt;
&lt;br /&gt;
                    var noticeHtml = &lt;br /&gt;
                        &#039;&amp;lt;div id=&amp;quot;mip-empty-state-notice&amp;quot; style=&amp;quot;max-width: 720px; margin: 25px auto; padding: 10px 15px; font-family: -apple-system, BlinkMacSystemFont, \&#039;Segoe UI\&#039;, Roboto, sans-serif;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                            &#039;&amp;lt;div style=&amp;quot;text-align: center; margin-bottom: 22px;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                &#039;&amp;lt;div class=&amp;quot;mip-pulse-icon&amp;quot; style=&amp;quot;display: inline-block;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                    &#039;&amp;lt;svg width=&amp;quot;60&amp;quot; height=&amp;quot;60&amp;quot; viewBox=&amp;quot;0 0 24 24&amp;quot; fill=&amp;quot;none&amp;quot; stroke=&amp;quot;#d9534f&amp;quot; stroke-width=&amp;quot;2&amp;quot; stroke-linecap=&amp;quot;round&amp;quot; stroke-linejoin=&amp;quot;round&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                        &#039;&amp;lt;path d=&amp;quot;M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z&amp;quot;&amp;gt;&amp;lt;/path&amp;gt;&#039; +&lt;br /&gt;
                                        &#039;&amp;lt;line x1=&amp;quot;12&amp;quot; y1=&amp;quot;9&amp;quot; x2=&amp;quot;12&amp;quot; y2=&amp;quot;13&amp;quot;&amp;gt;&amp;lt;/line&amp;gt;&#039; +&lt;br /&gt;
                                        &#039;&amp;lt;line x1=&amp;quot;12&amp;quot; y1=&amp;quot;17&amp;quot; x2=&amp;quot;12.01&amp;quot; y2=&amp;quot;17&amp;quot;&amp;gt;&amp;lt;/line&amp;gt;&#039; +&lt;br /&gt;
                                    &#039;&amp;lt;/svg&amp;gt;&#039; +&lt;br /&gt;
                                &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
                                &#039;&amp;lt;h4 style=&amp;quot;color: #2c3e50; margin: 12px 0 0 0; font-size: 1.35em; font-weight: 700; letter-spacing: -0.3px;&amp;quot;&amp;gt;Item Data Terisolasi: Rujukan Artikel Tidak Ditemukan&amp;lt;/h4&amp;gt;&#039; +&lt;br /&gt;
                            &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
                            &lt;br /&gt;
                            &#039;&amp;lt;div style=&amp;quot;text-align: left; color: #4a5568; font-size: 0.93em; line-height: 1.65;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                &#039;&amp;lt;p style=&amp;quot;margin-bottom: 16px;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                    &#039;&amp;lt;strong&amp;gt;PENGANTAR SISTEM OTOMATIS:&amp;lt;/strong&amp;gt; &#039; +&lt;br /&gt;
                                    &#039;Halaman ini ditampilkan karena sistem deteksi siklus internal mendeteksi bahwa entitas data terstruktur ini berada dalam status terisolasi total atau Yatim (Orphaned Data Item). Berdasarkan arsitektur basis data terintegrasi, sebuah item data wajib terikat dengan minimal satu artikel ensiklopedia aktif sebagai validasi literatur atas eksistensi subjek tersebut. Karena item data ini sama sekali tidak memiliki dokumen rujukan yang valid pada Mippedia bahasa Indonesia (ID), Mippedia bahasa Inggris (EN), maupun Mippedia Indonesia Ringkas (Concise), maka sistem secara otomatis menghentikan visualisasi data bawaan untuk mencegah penyebaran informasi tanpa referensi.&#039; +&lt;br /&gt;
                                &#039;&amp;lt;/p&amp;gt;&#039; +&lt;br /&gt;
                                &#039;&amp;lt;p style=&amp;quot;margin-bottom: 16px;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                    &#039;&amp;lt;strong&amp;gt;KEBIJAKAN PENGUNCIAN DAN PROTEKSI HALAMAN:&amp;lt;/strong&amp;gt; &#039; +&lt;br /&gt;
                                    &#039;Sebagai langkah preventif demi menjaga integritas data dan mematuhi standar privasi serta validitas ekosistem Mippedia Foundation, halaman data yang terisolasi ini telah dialihkan ke dalam mode proteksi penuh dan dikunci secara otomatis oleh sistem keamanan. Pengguna umum, kontributor non-pengurus, maupun mesin pembaca otomatis tidak diizinkan melakukan penyuntingan langsung (*read-only mode*) pada elemen data terstruktur di halaman ini. Kebijakan penguncian ini diterapkan secara ketat untuk menghindari manipulasi data mentah sepihak, meminimalkan risiko vandalisme tak terlihat, serta mencegah terjadinya anomali skrip (*visual script error*) yang berpotensi merusak struktur database repositori secara global.&#039; +&lt;br /&gt;
                                &#039;&amp;lt;/p&amp;gt;&#039; +&lt;br /&gt;
                                &#039;&amp;lt;p style=&amp;quot;margin-bottom: 16px;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                    &#039;&amp;lt;strong&amp;gt;KONSEKUENSI DAN REGULASI PENGAPUSAN PERMANEN:&amp;lt;/strong&amp;gt; &#039; +&lt;br /&gt;
                                    &#039;Sesuai dengan regulasi pemeliharaan ruang penyimpanan server, entitas data tanpa rujukan hanya diklasifikasikan sebagai data konsumsi sementara (*temporary cache entry*). Jika dalam batas waktu evaluasi berkala yang ditentukan item ini tetap dibiarkan kosong tanpa adanya tindakan penyelamatan berupa pembuatan artikel baru, maka skrip pembersihan otomatis (*cron-job cleaner*) bersama Dewan Moderator Mippedia Community akan melakukan tindakan penghapusan permanen secara menyeluruh (*Hard Purge / Delete*). Setelah proses penghapusan dilakukan, seluruh data terkait entitas ini akan dihapus dari server untuk mengoptimalkan ruang alokasi database dan menjaga stabilitas performa jaringan.&#039; +&lt;br /&gt;
                                &#039;&amp;lt;/p&amp;gt;&#039; +&lt;br /&gt;
                                &#039;&amp;lt;p style=&amp;quot;margin-bottom: 0;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                    &#039;&amp;lt;strong&amp;gt;PANDUAN PEMULIHAN BAGI KONTRIBUTOR:&amp;lt;/strong&amp;gt; &#039; +&lt;br /&gt;
                                    &#039;Satu-satunya cara untuk memulihkan status entitas data ini dan membuka kembali akses penyuntingannya adalah dengan membuat dokumen artikel rujukan yang sah pada salah satu pilar ekosistem Mippedia. Anda sangat disarankan untuk segera memulai pembuatan draf artikel baru melalui salah satu tombol akselerasi instan di bawah ini. Pastikan artikel yang Anda buat memuat informasi yang valid, ditulis dengan sudut pandang netral, serta dilengkapi dengan referensi literatur yang kredibel agar sistem sinkronisasi dapat memetakan kembali dan menormalkan halaman data ini secara otomatis.&#039; +&lt;br /&gt;
                                &#039;&amp;lt;/p&amp;gt;&#039; +&lt;br /&gt;
                            &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
                            &lt;br /&gt;
                            &#039;&amp;lt;div class=&amp;quot;mip-btn-container&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                &#039;&amp;lt;a href=&amp;quot;&#039; + createUrlID + &#039;&amp;quot; target=&amp;quot;_blank&amp;quot; class=&amp;quot;mip-action-btn&amp;quot;&amp;gt;Buat Artikel ID&amp;lt;/a&amp;gt;&#039; +&lt;br /&gt;
                                &#039;&amp;lt;a href=&amp;quot;&#039; + createUrlEN + &#039;&amp;quot; target=&amp;quot;_blank&amp;quot; class=&amp;quot;mip-action-btn&amp;quot;&amp;gt;Buat Artikel EN&amp;lt;/a&amp;gt;&#039; +&lt;br /&gt;
                                &#039;&amp;lt;a href=&amp;quot;&#039; + createUrlConcise + &#039;&amp;quot; target=&amp;quot;_blank&amp;quot; class=&amp;quot;mip-action-btn&amp;quot;&amp;gt;Buat Artikel Ringkas&amp;lt;/a&amp;gt;&#039; +&lt;br /&gt;
                            &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
&lt;br /&gt;
                            &#039;&amp;lt;div style=&amp;quot;font-size: 0.82em; color: #a0a0a0; line-height: 1.4; font-style: italic; border-top: 1px solid #f0f0f0; padding-top: 15px; text-align: center;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                &#039;Informasi Sistem: Item data yang tidak terikat dengan artikel ensiklopedia apa pun dalam ekosistem Mippedia akan dihapus secara otomatis oleh pengurus dalam waktu dekat.&#039; +&lt;br /&gt;
                            &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
                        &#039;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
                    $mainContent.prepend(noticeHtml);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                if (!isSysop) {&lt;br /&gt;
                    $editElements.css({ &#039;pointer-events&#039;: &#039;none&#039;, &#039;opacity&#039;: &#039;0.3&#039;, &#039;cursor&#039;: &#039;not-allowed&#039; }).hide();&lt;br /&gt;
                    $(document).on(&#039;keydown.miplock&#039;, function(e) {&lt;br /&gt;
                        if (e.key.toLowerCase() === &#039;e&#039; &amp;amp;&amp;amp; !$(e.target).is(&#039;input, textarea&#039;)) {&lt;br /&gt;
                            e.preventDefault(); return false;&lt;br /&gt;
                        }&lt;br /&gt;
                    });&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                mw.config.set(&#039;wgRobotsPolicies&#039;, { &#039;index&#039;: &#039;noindex&#039;, &#039;follow&#039;: &#039;nofollow&#039; });&lt;br /&gt;
                if ($metaRobots.length) { $metaRobots.attr(&#039;content&#039;, &#039;noindex, nofollow&#039;); } &lt;br /&gt;
                else { $(&#039;head&#039;).append(&#039;&amp;lt;meta name=&amp;quot;robots&amp;quot; content=&amp;quot;noindex, nofollow&amp;quot;&amp;gt;&#039;); }&lt;br /&gt;
&lt;br /&gt;
            } else {&lt;br /&gt;
                // JIKA ADA DATA: Buka proteksi visual skrip&lt;br /&gt;
                $(&#039;body&#039;).removeClass(&#039;mip-lock-active&#039;);&lt;br /&gt;
                if ($existingNotice.length) $existingNotice.remove();&lt;br /&gt;
                $descSection.show();&lt;br /&gt;
&lt;br /&gt;
                if (!isSysop) { $(document).off(&#039;keydown.miplock&#039;); }&lt;br /&gt;
                mw.config.set(&#039;wgRobotsPolicies&#039;, { &#039;index&#039;: &#039;index&#039;, &#039;follow&#039;: &#039;follow&#039; });&lt;br /&gt;
                if ($metaRobots.length) $metaRobots.attr(&#039;content&#039;, &#039;index, follow&#039;);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // --- PRIORITIZED DISPATCHER RUNNER ---&lt;br /&gt;
        var globalEnTitle = cached.enTitle || &amp;quot;&amp;quot;; &lt;br /&gt;
&lt;br /&gt;
        function init() {&lt;br /&gt;
            var pPrimary = projects[0]; &lt;br /&gt;
            $.ajax({&lt;br /&gt;
                url: pPrimary.url,&lt;br /&gt;
                data: { action: &#039;query&#039;, prop: &#039;revisions|pageimages|langlinks&#039;, lllang: &#039;en&#039;, rvprop: &#039;timestamp&#039;, piprop: &#039;thumbnail&#039;, pithumbsize: 150, titles: pageTitle, format: &#039;json&#039;, origin: &#039;*&#039; },&lt;br /&gt;
                dataType: &#039;json&#039;,&lt;br /&gt;
                success: function(res) {&lt;br /&gt;
                    var pg = res.query.pages, id = Object.keys(pg)[0];&lt;br /&gt;
                    var latestTS = (id != &amp;quot;-1&amp;quot;) ? pg[id].revisions[0].timestamp : &amp;quot;0&amp;quot;;&lt;br /&gt;
                    var thumbUrl = (id != &amp;quot;-1&amp;quot; &amp;amp;&amp;amp; pg[id].thumbnail) ? pg[id].thumbnail.source : &amp;quot;&amp;quot;;&lt;br /&gt;
                    &lt;br /&gt;
                    if (id != &amp;quot;-1&amp;quot; &amp;amp;&amp;amp; pg[id].langlinks &amp;amp;&amp;amp; pg[id].langlinks[0]) {&lt;br /&gt;
                        globalEnTitle = pg[id].langlinks[0][&#039;*&#039;];&lt;br /&gt;
                    }&lt;br /&gt;
&lt;br /&gt;
                    if (cached.content &amp;amp;&amp;amp; cached.ts === latestTS &amp;amp;&amp;amp; latestTS !== &amp;quot;0&amp;quot; &amp;amp;&amp;amp; !cached.isEmpty) {&lt;br /&gt;
                        toggleMippediaLayout(false);&lt;br /&gt;
                        renderAll(cached.p, cached.content, cached.isTrans, cached.orig, cached.img, cached.customUrl, cached.enTitle);&lt;br /&gt;
                    } else { &lt;br /&gt;
                        fetchPriorityData(0, latestTS, thumbUrl); &lt;br /&gt;
                    }&lt;br /&gt;
                },&lt;br /&gt;
                error: function() { &lt;br /&gt;
                    if (cached.content &amp;amp;&amp;amp; !cached.isEmpty) {&lt;br /&gt;
                        toggleMippediaLayout(false);&lt;br /&gt;
                        renderAll(cached.p, cached.content, cached.isTrans, cached.orig, cached.img, cached.customUrl, cached.enTitle);&lt;br /&gt;
                    } else {&lt;br /&gt;
                        fetchPriorityData(0, &amp;quot;0&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        function fetchPriorityData(index, newTS, img) {&lt;br /&gt;
            if (index &amp;gt;= projects.length) {&lt;br /&gt;
                localStorage.setItem(cacheKey, JSON.stringify({isEmpty: true, ts: newTS, content: &amp;quot;&amp;quot;}));&lt;br /&gt;
                toggleMippediaLayout(true);&lt;br /&gt;
                return;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            var p = projects[index];&lt;br /&gt;
&lt;br /&gt;
            if (p.id === &#039;en&#039;) {&lt;br /&gt;
                if (!globalEnTitle) {&lt;br /&gt;
                    $.ajax({&lt;br /&gt;
                        url: &#039;https://concise.mippedia.org/api.php&#039;,&lt;br /&gt;
                        data: { action: &#039;query&#039;, prop: &#039;langlinks&#039;, lllang: &#039;en&#039;, titles: pageTitle, format: &#039;json&#039;, origin: &#039;*&#039; },&lt;br /&gt;
                        dataType: &#039;json&#039;,&lt;br /&gt;
                        async: false, &lt;br /&gt;
                        success: function(cRes) {&lt;br /&gt;
                            var cPg = cRes.query.pages, cId = Object.keys(cPg)[0];&lt;br /&gt;
                            if (cId != &amp;quot;-1&amp;quot; &amp;amp;&amp;amp; cPg[cId].langlinks &amp;amp;&amp;amp; cPg[cId].langlinks[0]) {&lt;br /&gt;
                                globalEnTitle = cPg[cId].langlinks[0][&#039;*&#039;];&lt;br /&gt;
                            }&lt;br /&gt;
                        }&lt;br /&gt;
                    });&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                if (globalEnTitle) {&lt;br /&gt;
                    $.ajax({&lt;br /&gt;
                        url: p.url,&lt;br /&gt;
                        data: { action: &#039;query&#039;, prop: &#039;extracts&#039;, exintro: 1, explaintext: 1, titles: globalEnTitle, format: &#039;json&#039;, origin: &#039;*&#039; },&lt;br /&gt;
                        dataType: &#039;json&#039;,&lt;br /&gt;
                        success: function(data) {&lt;br /&gt;
                            var pages = data.query.pages, pageId = Object.keys(pages)[0];&lt;br /&gt;
                            if (pageId != &amp;quot;-1&amp;quot; &amp;amp;&amp;amp; pages[pageId].extract) {&lt;br /&gt;
                                var extract = cleanExtract(pages[pageId].extract);&lt;br /&gt;
                                finalize(p, extract, false, &amp;quot;&amp;quot;, newTS, img, p.base + encodeURIComponent(globalEnTitle), globalEnTitle);&lt;br /&gt;
                            } else {&lt;br /&gt;
                                fetchPriorityData(index + 1, newTS, img);&lt;br /&gt;
                            }&lt;br /&gt;
                        },&lt;br /&gt;
                        error: function() { fetchPriorityData(index + 1, newTS, img); }&lt;br /&gt;
                    });&lt;br /&gt;
                } else {&lt;br /&gt;
                    fetchPriorityData(index + 1, newTS, img);&lt;br /&gt;
                }&lt;br /&gt;
            } else {&lt;br /&gt;
                $.ajax({&lt;br /&gt;
                    url: p.url,&lt;br /&gt;
                    data: { action: &#039;query&#039;, prop: &#039;extracts&#039;, exintro: 1, explaintext: 1, titles: pageTitle, format: &#039;json&#039;, origin: &#039;*&#039; },&lt;br /&gt;
                    dataType: &#039;json&#039;,&lt;br /&gt;
                    success: function(data) {&lt;br /&gt;
                        var pages = data.query.pages, pageId = Object.keys(pages)[0];&lt;br /&gt;
                        if (pageId != &amp;quot;-1&amp;quot; &amp;amp;&amp;amp; pages[pageId].extract) {&lt;br /&gt;
                            var extract = cleanExtract(pages[pageId].extract);&lt;br /&gt;
                            finalize(p, extract, false, &amp;quot;&amp;quot;, newTS, img, p.base + encodeURIComponent(pageTitle), globalEnTitle); &lt;br /&gt;
                        } else {&lt;br /&gt;
                            fetchPriorityData(index + 1, newTS, img);&lt;br /&gt;
                        }&lt;br /&gt;
                    },&lt;br /&gt;
                    error: function() { fetchPriorityData(index + 1, newTS, img); }&lt;br /&gt;
                });&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        function finalize(p, c, t, o, ts, img, customUrl, enTitle) {&lt;br /&gt;
            localStorage.setItem(cacheKey, JSON.stringify({isEmpty: false, p:p, content:c, isTrans:t, orig:o, ts:ts, img:img, customUrl: customUrl, enTitle: enTitle}));&lt;br /&gt;
            toggleMippediaLayout(false); &lt;br /&gt;
            renderAll(p, c, t, o, img, customUrl, enTitle);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        function renderAll(p, currentText, isTranslated, originalText, img, customUrl, enTitle) {&lt;br /&gt;
            var processedText = applyAutoBold(applyDynamicContext(currentText));&lt;br /&gt;
            var thumbHtml = img ? &#039;&amp;lt;div style=&amp;quot;float: right; margin-left: 15px; margin-bottom: 10px; border: 1px solid #ddd; padding: 3px; background: #fff; border-radius: 4px; box-shadow: 0 2px 4px rgba(0,0,0,0.1);&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;&#039;+img+&#039;&amp;quot; style=&amp;quot;max-width: 100px; display: block; height: auto;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039; : &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
            $descSection.show();&lt;br /&gt;
            $descBox.show().html(thumbHtml + applySummary(processedText) + &#039;&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;);&lt;br /&gt;
            &lt;br /&gt;
            var targetLink = customUrl ? customUrl : p.base + encodeURIComponent(pageTitle);&lt;br /&gt;
            var footer = &#039;&amp;lt;div style=&amp;quot;font-size: 0.9em; color: #777;&amp;quot;&amp;gt;Sumber : &amp;lt;a href=&amp;quot;&#039; + targetLink + &#039;&amp;quot; target=&amp;quot;_blank&amp;quot; style=&amp;quot;color: #6a5acd; font-weight: bold; text-decoration: none;&amp;quot;&amp;gt;&#039; + p.name + &#039;.&amp;lt;/a&amp;gt;&#039;;&lt;br /&gt;
            if (isTranslated) { footer += &#039;&amp;lt;br&amp;gt;&amp;lt;span style=&amp;quot;font-size: 0.85em; font-style: italic;&amp;quot;&amp;gt;(Diterjemahkan secara otomatis)&amp;lt;/span&amp;gt; &amp;lt;span id=&amp;quot;mip-toggle-orig&amp;quot; style=&amp;quot;color: #6a5acd; cursor: pointer; text-decoration: underline; margin-left: 5px;&amp;quot;&amp;gt;Tampilkan versi asli&amp;lt;/span&amp;gt;&#039;; }&lt;br /&gt;
            $sourceInfo.show().html(footer);&lt;br /&gt;
            &lt;br /&gt;
            buildSmartLinks(p.id, enTitle);&lt;br /&gt;
            &lt;br /&gt;
            $(document).off(&#039;click&#039;, &#039;.mip-read-btn&#039;).on(&#039;click&#039;, &#039;.mip-read-btn&#039;, function() { $(this).hide(); $(&#039;.mip-dots&#039;).hide(); $(&#039;.mip-more&#039;).fadeIn(); });&lt;br /&gt;
            $(document).off(&#039;click&#039;, &#039;#mip-toggle-orig&#039;).on(&#039;click&#039;, &#039;#mip-toggle-orig&#039;, function() {&lt;br /&gt;
                var isOrig = ($(this).text() === &#039;Tampilkan versi asli&#039;);&lt;br /&gt;
                var textToDisplay = applyAutoBold(applyDynamicContext(isOrig ? originalText : currentText));&lt;br /&gt;
                $descBox.html(thumbHtml + applySummary(textToDisplay) + &#039;&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;);&lt;br /&gt;
                $(this).text(isOrig ? &#039;Tampilkan terjemahan&#039; : &#039;Tampilkan versi asli&#039;);&lt;br /&gt;
            });&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        init();&lt;br /&gt;
    });&lt;br /&gt;
})();&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================&lt;br /&gt;
   🚀 MIPPEDIA DATA - CORE SYSTEM (ULTIMATE BUNDLE)&lt;br /&gt;
   Status: FINAL &amp;amp; REVISED (Visual Fix + Permission Logic)&lt;br /&gt;
   Fix: Mobile Responsive Notification Position&lt;br /&gt;
   ========================================================== */&lt;br /&gt;
&lt;br /&gt;
(function() {&lt;br /&gt;
    $(document).ready(function() {&lt;br /&gt;
        // --- 1. FILTER GLOBAL (Namespace 0 &amp;amp; Bukan Halaman Utama) ---&lt;br /&gt;
        if (mw.config.get(&#039;wgNamespaceNumber&#039;) !== 0 || &lt;br /&gt;
            mw.config.get(&#039;wgIsMainPage&#039;) || &lt;br /&gt;
            mw.config.get(&#039;wgAction&#039;) !== &#039;view&#039;) return;&lt;br /&gt;
&lt;br /&gt;
        var pageTitle = mw.config.get(&#039;wgPageName&#039;);&lt;br /&gt;
        var dataPage = &#039;MediaWiki:Sitelinks-Data.json&#039;;&lt;br /&gt;
        var userGroups = mw.config.get(&#039;wgUserGroups&#039;);&lt;br /&gt;
        var isAdmin = userGroups.includes(&#039;sysop&#039;) || userGroups.includes(&#039;interface-admin&#039;);&lt;br /&gt;
&lt;br /&gt;
        var projects = {&lt;br /&gt;
            &#039;id&#039;: { name: &#039;ID&#039;, url: &#039;https://id.mippedia.org/api.php&#039;, base: &#039;https://id.mippedia.org/wiki/&#039;, color: &#039;#6a5acd&#039; },&lt;br /&gt;
            &#039;en&#039;: { name: &#039;EN&#039;, url: &#039;https://en.mippedia.org/api.php&#039;, base: &#039;https://en.mippedia.org/wiki/&#039;, color: &#039;#4169e1&#039; },&lt;br /&gt;
            &#039;concise&#039;: { name: &#039;Concise&#039;, url: &#039;https://concise.mippedia.org/api.php&#039;, base: &#039;https://concise.mippedia.org/wiki/&#039;, color: &#039;#20b2aa&#039; }&lt;br /&gt;
        };&lt;br /&gt;
&lt;br /&gt;
        // --- 2. KOTAK NOTIFIKASI INFORMASI MODERN (FIXED MOBILE POSITION) ---&lt;br /&gt;
        function showBoxNotif(title, msg, type) {&lt;br /&gt;
            $(&#039;.mip-box-notif&#039;).remove();&lt;br /&gt;
            var theme = type === &#039;success&#039; ? {bg:&#039;#e6fffa&#039;, border:&#039;#38b2ac&#039;, text:&#039;#234e52&#039;, icon:&#039;&#039;} : &lt;br /&gt;
                        {bg:&#039;#fff5f5&#039;, border:&#039;#f56565&#039;, text:&#039;#742a2a&#039;, icon:&#039;&#039;};&lt;br /&gt;
            &lt;br /&gt;
            // Logika CSS Responsif untuk posisi&lt;br /&gt;
            var isMobile = window.innerWidth &amp;lt;= 768;&lt;br /&gt;
            var desktopStyle = &amp;quot;top:25px; right:25px; width:350px;&amp;quot;;&lt;br /&gt;
            var mobileStyle = &amp;quot;top:15px; left:50%; transform:translateX(-50%); width:90%; max-width:400px;&amp;quot;;&lt;br /&gt;
            var finalPos = isMobile ? mobileStyle : desktopStyle;&lt;br /&gt;
&lt;br /&gt;
            var $notif = $(&#039;&amp;lt;div class=&amp;quot;mip-box-notif&amp;quot; style=&amp;quot;position:fixed; &#039; + finalPos + &#039; background:&#039;+theme.bg+&#039;; border-left:6px solid &#039;+theme.border+&#039;; padding:18px; z-index:10001; border-radius:12px; box-shadow:0 15px 35px rgba(0,0,0,0.2); font-family:sans-serif; animation:mipSlideIn 0.4s ease-out;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                &#039;&amp;lt;div style=&amp;quot;display:flex; align-items:center; gap:12px; margin-bottom:8px;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                    &#039;&amp;lt;span style=&amp;quot;font-size:20px;&amp;quot;&amp;gt;&#039;+theme.icon+&#039;&amp;lt;/span&amp;gt;&#039; +&lt;br /&gt;
                    &#039;&amp;lt;strong style=&amp;quot;color:&#039;+theme.text+&#039;; font-size:15px; letter-spacing:-0.3px;&amp;quot;&amp;gt;&#039;+title+&#039;&amp;lt;/strong&amp;gt;&#039; +&lt;br /&gt;
                &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
                &#039;&amp;lt;p style=&amp;quot;margin:0; font-size:13px; color:&#039;+theme.text+&#039;; line-height:1.6; opacity:0.9;&amp;quot;&amp;gt;&#039;+msg+&#039;&amp;lt;/p&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;/div&amp;gt;&#039;).appendTo(&#039;body&#039;);&lt;br /&gt;
&lt;br /&gt;
            setTimeout(function() { $notif.fadeOut(function(){ $(this).remove(); }); }, 5500);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // --- 3. UI GENERATOR (DIPERTEBAL) ---&lt;br /&gt;
&lt;br /&gt;
      // A. Header Pro&lt;br /&gt;
        var headerHtml = &#039;&amp;lt;div id=&amp;quot;mip-header&amp;quot; style=&amp;quot;background:#f8f9fa; border:1px solid #ddd; border-left:6px solid #6a5acd; padding:18px; margin-bottom:25px; border-radius:6px; box-shadow:inset 0 0 10px rgba(0,0,0,0.02);&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;div style=&amp;quot;display:flex; align-items:center; gap:10px; margin-bottom:8px;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;span style=&amp;quot;background:#6a5acd; color:white; padding:3px 10px; border-radius:4px; font-size:11px; font-weight:bold; text-transform:uppercase; letter-spacing:0.5px;&amp;quot;&amp;gt;Basis Data Terstruktur&amp;lt;/span&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;strong style=&amp;quot;color:#111; font-size:16px;&amp;quot;&amp;gt;&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;p style=&amp;quot;margin:0; font-size:13px; color:#444; line-height:1.6;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
            &#039;Halaman ini adalah metadata entitas repositori pusat yang disinkronisasi secara otomatis lintas ekosistem. &#039; +&lt;br /&gt;
            &#039;Informasi di bawah ini bersifat teknis dan bebas digunakan sebagai referensi data terbuka bagi semua orang di seluruh dunia berdasarkan lisensi atribusi yang sesuai.&#039; +&lt;br /&gt;
            &#039;&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
        // B. Connector Box&lt;br /&gt;
        var editBtn = &#039;&amp;lt;span id=&amp;quot;mip-open-editor&amp;quot; style=&amp;quot;cursor:pointer; font-size:20px; color:#6a5acd; opacity:0.8; transition:0.3s;&amp;quot; onmouseover=&amp;quot;this.style.opacity=1&amp;quot; onmouseout=&amp;quot;this.style.opacity=0.8&amp;quot;&amp;gt;✎&amp;lt;/span&amp;gt;&#039;;&lt;br /&gt;
        var connectorHtml = &#039;&amp;lt;div id=&amp;quot;mip-connector&amp;quot; style=&amp;quot;background:#fff; border:1px solid #e2e8f0; border-radius:16px; padding:22px; margin-top:30px; box-shadow:0 10px 25px rgba(0,0,0,0.04);&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;div style=&amp;quot;display:flex; justify-content:space-between; align-items:center; margin-bottom:20px;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;strong style=&amp;quot;font-size:15px; color:#1a202c; display:flex; align-items:center; gap:8px;&amp;quot;&amp;gt;ID situs&amp;lt;/strong&amp;gt;&#039;+editBtn+&#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;div id=&amp;quot;mip-display&amp;quot; style=&amp;quot;display:flex; gap:12px; flex-wrap:wrap;&amp;quot;&amp;gt;&amp;lt;small style=&amp;quot;color:#a0aec0;&amp;quot;&amp;gt;Mensinkronisasi basis data...&amp;lt;/small&amp;gt;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;div id=&amp;quot;mip-editor&amp;quot; style=&amp;quot;display:none; margin-top:20px; border-top:2px solid #f7fafc; padding-top:20px;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                Object.keys(projects).map(p =&amp;gt; &#039;&amp;lt;div style=&amp;quot;margin-bottom:12px; display:flex; gap:10px;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;width:75px; font-size:11px; font-weight:bold; background:#edf2f7; display:flex; align-items:center; justify-content:center; border-radius:8px; color:#4a5568;&amp;quot;&amp;gt;&#039;+projects[p].name+&#039;&amp;lt;/span&amp;gt;&amp;lt;input type=&amp;quot;text&amp;quot; id=&amp;quot;in-&#039;+p+&#039;&amp;quot; placeholder=&amp;quot;Judul artikel di &#039;+projects[p].name+&#039;...&amp;quot; style=&amp;quot;flex:1; padding:10px; font-size:13px; border:1.5px solid #e2e8f0; border-radius:10px; outline:none; transition:0.2s;&amp;quot; onfocus=&amp;quot;this.style.borderColor=\&#039;#6a5acd\&#039;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;).join(&#039;&#039;) +&lt;br /&gt;
                &#039;&amp;lt;button id=&amp;quot;mip-save&amp;quot; style=&amp;quot;width:100%; padding:14px; background:#6a5acd; color:white; border:none; border-radius:12px; font-size:14px; font-weight:bold; cursor:pointer; box-shadow:0 4px 12px rgba(106,90,205,0.3); transition:0.3s;&amp;quot;&amp;gt;Terbitkan&amp;lt;/button&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
        // C. Footer Lisensi Lengkap&lt;br /&gt;
        var footerHtml = &#039;&amp;lt;div id=&amp;quot;mip-footer&amp;quot; style=&amp;quot;background:#fafafa; border:1px solid #eee; border-radius:10px; padding:20px; margin-top:30px; text-align:center;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;div style=&amp;quot;font-size:11px; color:#718096; font-weight:800; text-transform:uppercase; letter-spacing:1px; margin-bottom:10px;&amp;quot;&amp;gt;Lisensi, Atribusi &amp;amp; Penggunaan Data&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;p style=&amp;quot;margin:0 0 10px; font-size:13px; color:#4a5568; line-height:1.6;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
            &#039;Seluruh data terstruktur yang tersaji dalam repositori ini merupakan milik publik dan tersedia di bawah lisensi resmi &#039; +&lt;br /&gt;
            &#039;&amp;lt;a href=&amp;quot;https://creativecommons.org/licenses/by-sa/4.0/&amp;quot; target=&amp;quot;_blank&amp;quot; style=&amp;quot;color:#6a5acd; text-decoration:none; font-weight:700;&amp;quot;&amp;gt;Creative Commons Attribution-ShareAlike 4.0 International&amp;lt;/a&amp;gt;.&#039; +&lt;br /&gt;
            &#039;&amp;lt;/p&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;p style=&amp;quot;margin:0; font-size:12px; color:#a0aec0;&amp;quot;&amp;gt;Akses API dan penggunaan data secara massal wajib mencantumkan atribusi kepada &amp;lt;strong&amp;gt;Mippedia Community&amp;lt;/strong&amp;gt; selaku pengelola proyek.&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
        // Injeksi&lt;br /&gt;
        $(&#039;#mw-content-text&#039;).prepend(headerHtml);&lt;br /&gt;
        $(&#039;#mw-content-text&#039;).append(connectorHtml).append(footerHtml);&lt;br /&gt;
&lt;br /&gt;
        // --- 4. LOGIC ENGINE ---&lt;br /&gt;
        function loadLinks() {&lt;br /&gt;
            new mw.Api().get({ action: &#039;query&#039;, prop: &#039;revisions&#039;, titles: dataPage, rvprop: &#039;content&#039;, formatversion: 2 }).done(function(d) {&lt;br /&gt;
                var json = d.query.pages[0].revisions ? JSON.parse(d.query.pages[0].revisions[0].content) : {};&lt;br /&gt;
                var data = json[pageTitle] || {};&lt;br /&gt;
                var $box = $(&#039;#mip-display&#039;).empty();&lt;br /&gt;
                var found = false;&lt;br /&gt;
                Object.keys(projects).forEach(p =&amp;gt; {&lt;br /&gt;
                    if (data[p]) {&lt;br /&gt;
                        found = true;&lt;br /&gt;
                        $box.append(&#039;&amp;lt;a style=&amp;quot;background:&#039;+projects[p].color+&#039;; color:white; padding:8px 16px; border-radius:10px; font-size:12px; font-weight:bold; text-decoration:none; border-bottom:3px solid rgba(0,0,0,0.15);&amp;quot; href=&amp;quot;&#039;+projects[p].base+encodeURIComponent(data[p])+&#039;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Mippedia &#039;+projects[p].name+&#039;: &#039;+data[p]+&#039;&amp;lt;/a&amp;gt;&#039;);&lt;br /&gt;
                        $(&#039;#in-&#039; + p).val(data[p]);&lt;br /&gt;
                    }&lt;br /&gt;
                });&lt;br /&gt;
                if (!found) $box.html(&#039;&amp;lt;em style=&amp;quot;color:#cbd5e0; font-size:13px;&amp;quot;&amp;gt;Entitas ini belum terhubung ke cabang Mippedia manapun.&amp;lt;/em&amp;gt;&#039;);&lt;br /&gt;
            });&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        $(document).on(&#039;click&#039;, &#039;#mip-save&#039;, function() {&lt;br /&gt;
            // CEK IZIN: Tolak user biasa&lt;br /&gt;
            if (!isAdmin) {&lt;br /&gt;
                showBoxNotif(&#039;Suntingan anda tidak di terbitkan&#039;, &#039;Halaman ini dilindungi. Hanya &amp;lt;b&amp;gt;Pengurus&amp;lt;/b&amp;gt; yang memiliki otoritas untuk memodifikasi metadata ekosistem secara langsung.&#039;, &#039;error&#039;);&lt;br /&gt;
                return;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            var $btn = $(this).text(&#039;Sedang Memvalidasi...&#039;).prop(&#039;disabled&#039;, true);&lt;br /&gt;
            var api = new mw.Api();&lt;br /&gt;
            var newData = {}, promises = [], invalid = [], isDel = true;&lt;br /&gt;
&lt;br /&gt;
            Object.keys(projects).forEach(p =&amp;gt; {&lt;br /&gt;
                var v = $(&#039;#in-&#039; + p).val().trim();&lt;br /&gt;
                if (v) {&lt;br /&gt;
                    isDel = false;&lt;br /&gt;
                    promises.push($.ajax({ url: projects[p].url, data: { action: &#039;query&#039;, titles: v, format: &#039;json&#039;, origin: &#039;*&#039; }, dataType: &#039;json&#039; }).done(function(res){&lt;br /&gt;
                        if (res.query.pages[&amp;quot;-1&amp;quot;]) invalid.push(projects[p].name); else newData[p] = v;&lt;br /&gt;
                    }));&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
&lt;br /&gt;
            $.when.apply($, promises).then(function() {&lt;br /&gt;
                if (invalid.length &amp;gt; 0) {&lt;br /&gt;
                    showBoxNotif(&#039;Suntingan anda tidak di terbitkan&#039;, &#039;Artikel dengan judul tersebut tidak ditemukan di basis data Mippedia cabang: &#039; + invalid.join(&#039;, &#039;) + &#039;. Periksa kembali ejaan dan kapitalisasi.&#039;, &#039;error&#039;);&lt;br /&gt;
                    $btn.text(&#039;Terbitkan&#039;).prop(&#039;disabled&#039;, false); return;&lt;br /&gt;
                }&lt;br /&gt;
                &lt;br /&gt;
                api.get({ action: &#039;query&#039;, prop: &#039;revisions&#039;, titles: dataPage, rvprop: &#039;content&#039;, formatversion: 2 }).done(function(r) {&lt;br /&gt;
                    var full = r.query.pages[0].revisions ? JSON.parse(r.query.pages[0].revisions[0].content) : {};&lt;br /&gt;
                    if (isDel) delete full[pageTitle]; else full[pageTitle] = newData;&lt;br /&gt;
                    &lt;br /&gt;
                    api.postWithEditToken({ action: &#039;edit&#039;, title: dataPage, text: JSON.stringify(full, null, 2), summary: &#039;Sync Metadata: &#039; + pageTitle })&lt;br /&gt;
                    .done(function() {&lt;br /&gt;
                        showBoxNotif(&#039;Suntingan anda berhasil di terbitkan!&#039;, &#039;Metadata entitas berhasil disinkronisasi ke seluruh jaringan ekosistem Mippedia.&#039;, &#039;success&#039;);&lt;br /&gt;
                        setTimeout(function(){ location.reload(); }, 1500);&lt;br /&gt;
                    }).fail(function(c) {&lt;br /&gt;
                        showBoxNotif(&#039;Gagal Menyimpan&#039;, &#039;Terjadi kesalahan pada token API atau koneksi server. Kode: &#039; + c, &#039;error&#039;);&lt;br /&gt;
                        $btn.text(&#039;Simpan &amp;amp; Sinkronkan Data&#039;).prop(&#039;disabled&#039;, false);&lt;br /&gt;
                    });&lt;br /&gt;
                });&lt;br /&gt;
            });&lt;br /&gt;
        });&lt;br /&gt;
&lt;br /&gt;
        $(document).on(&#039;click&#039;, &#039;#mip-open-editor&#039;, function() { $(&#039;#mip-editor&#039;).slideToggle(); });&lt;br /&gt;
        loadLinks();&lt;br /&gt;
    });&lt;br /&gt;
})();&lt;br /&gt;
&lt;br /&gt;
(function() {&lt;br /&gt;
    // Fungsi utama suntik teks&lt;br /&gt;
    function forcePreload() {&lt;br /&gt;
        var ns = mw.config.get(&#039;wgNamespaceNumber&#039;);&lt;br /&gt;
        var pageExists = mw.config.get(&#039;wgArticleId&#039;) &amp;gt; 0;&lt;br /&gt;
        &lt;br /&gt;
        // Cek Namespace Utama &amp;amp; Halaman Baru&lt;br /&gt;
        if (ns === 0 &amp;amp;&amp;amp; !pageExists) {&lt;br /&gt;
            // Cari textarea secara spesifik (Desktop &amp;amp; Mobile punya selector beda)&lt;br /&gt;
            var $textbox = $(&#039;#wpTextbox1, textarea.mw-ui-input, .editor-container textarea&#039;);&lt;br /&gt;
            &lt;br /&gt;
            if ($textbox.length &amp;amp;&amp;amp; $textbox.val().trim() === &amp;quot;&amp;quot;) {&lt;br /&gt;
                var pageName = mw.config.get(&#039;wgTitle&#039;);&lt;br /&gt;
                $textbox.val(&#039;{{Infobox umum\n|nama = &#039; + pageName + &#039;\n}}&#039;);&lt;br /&gt;
                console.log(&amp;quot;Mippedia: Infobox injected!&amp;quot;);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // 1. Jalankan pas halaman beres load&lt;br /&gt;
    $(document).ready(forcePreload);&lt;br /&gt;
&lt;br /&gt;
    // 2. Jalankan tiap ada klik (karena mobile buka editor pake klik tanpa refresh)&lt;br /&gt;
    $(document).on(&#039;click&#039;, function() {&lt;br /&gt;
        setTimeout(forcePreload, 800); // Kasih delay dikit nunggu overlay muncul&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    // 3. Pake MutationObserver buat mantau elemen yang baru muncul secara gaib&lt;br /&gt;
    var observer = new MutationObserver(function() {&lt;br /&gt;
        forcePreload();&lt;br /&gt;
    });&lt;br /&gt;
    observer.observe(document.body, { childList: true, subtree: true });&lt;br /&gt;
})();&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================&lt;br /&gt;
   🚀 MIPPEDIA DATA - CONTENT GUARD (MODIFIED FOR RELATED)&lt;br /&gt;
   ========================================================== */&lt;br /&gt;
(function() {&lt;br /&gt;
    function handleBlock(e) {&lt;br /&gt;
        var ns = mw.config.get(&#039;wgNamespaceNumber&#039;);&lt;br /&gt;
        if (ns !== 0 || mw.config.get(&#039;wgIsMainPage&#039;)) return;&lt;br /&gt;
&lt;br /&gt;
        var $el = $(e.currentTarget);&lt;br /&gt;
        &lt;br /&gt;
        if ($el.closest(&#039;.mw-parser-output&#039;).length &amp;amp;&amp;amp; $el.text().toLowerCase().includes(&#039;buat item&#039;)) {&lt;br /&gt;
            return; &lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        var $textbox = $(&#039;#wpTextbox1, .editor-container textarea, textarea.mw-ui-input&#039;);&lt;br /&gt;
        &lt;br /&gt;
        if ($textbox.length) {&lt;br /&gt;
            var content = $textbox.val() || &amp;quot;&amp;quot;;&lt;br /&gt;
            &lt;br /&gt;
            // Pengecekan: Harus ada {{Infobox ATAU setidaknya ada kode #related&lt;br /&gt;
            var hasInfobox = content.includes(&#039;{{Infobox&#039;);&lt;br /&gt;
            var hasRelated = content.includes(&#039;#related:&#039;);&lt;br /&gt;
&lt;br /&gt;
            if (!hasInfobox &amp;amp;&amp;amp; !hasRelated) {&lt;br /&gt;
                e.preventDefault();&lt;br /&gt;
                e.stopPropagation();&lt;br /&gt;
                e.stopImmediatePropagation();&lt;br /&gt;
&lt;br /&gt;
                window.alert(&amp;quot;SUNTINGAN ANDA TIDAK BISA DI TERBITKAN!\n\nMippedia Data bukan tempat untuk menulis artikel ensiklopedia, Jika anda ingin membuat artikel ensiklopedia bukan di sini tempat nya.\n&amp;quot;);&lt;br /&gt;
                return false;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    $(document).on(&#039;click mousedown touchstart&#039;, &lt;br /&gt;
        &#039;#wpSave, .editor-save, .mw-ui-button.primary, button[type=&amp;quot;submit&amp;quot;], .save-button, .header-action button&#039;, &lt;br /&gt;
        function(e) {&lt;br /&gt;
            handleBlock(e);&lt;br /&gt;
        }&lt;br /&gt;
    );&lt;br /&gt;
&lt;br /&gt;
    window.addEventListener(&#039;submit&#039;, function(e) {&lt;br /&gt;
        handleBlock(e);&lt;br /&gt;
    }, true);&lt;br /&gt;
})();&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================&lt;br /&gt;
   🛡️ MIPPEDIA CORE SYSTEM - NEURAL ENGINE V12&lt;br /&gt;
   Update: Brain Upgrade - Semantic Search &amp;amp; Anti-Duplicate&lt;br /&gt;
   Semua fitur asli (Patroli, Promo, Kategori) tetap UTUH.&lt;br /&gt;
   ========================================================== */&lt;br /&gt;
mw.hook(&#039;postEdit&#039;).add(function() {&lt;br /&gt;
    var rawUser = mw.config.get(&#039;wgUserName&#039;);&lt;br /&gt;
    var userName = rawUser ? rawUser.replace(/_/g, &#039; &#039;) : &#039;Anonim&#039;;&lt;br /&gt;
    var isPatroli = (userName === &#039;Admin&#039;);&lt;br /&gt;
    &lt;br /&gt;
    if (mw.config.get(&#039;wgNamespaceNumber&#039;) !== 0) return;&lt;br /&gt;
&lt;br /&gt;
    var api = new mw.Api();&lt;br /&gt;
    var pageTitle = mw.config.get(&#039;wgPageName&#039;).replace(/_/g, &#039; &#039;);&lt;br /&gt;
&lt;br /&gt;
    api.get({&lt;br /&gt;
        action: &#039;query&#039;,&lt;br /&gt;
        titles: pageTitle,&lt;br /&gt;
        prop: &#039;revisions|categories|links&#039;,&lt;br /&gt;
        rvprop: &#039;content&#039;,&lt;br /&gt;
        clshow: &#039;!hidden&#039;,&lt;br /&gt;
        pllimit: &#039;max&#039;&lt;br /&gt;
    }).done(function(resData) {&lt;br /&gt;
        var page = resData.query.pages[Object.keys(resData.query.pages)[0]];&lt;br /&gt;
        if (!page || !page.revisions) return;&lt;br /&gt;
&lt;br /&gt;
        var rawContent = page.revisions[0][&#039;*&#039;];&lt;br /&gt;
        var content = rawContent;&lt;br /&gt;
        var summaryParts = [];&lt;br /&gt;
&lt;br /&gt;
        // --- 2. SUPER INTELLIGENCE RELATED (UPGRADE OTAK V12) ---&lt;br /&gt;
        // Cek jumlah related saat ini&lt;br /&gt;
        var currentRelatedMatch = content.match(/\{\{#related:.*?\}\}/g) || [];&lt;br /&gt;
        &lt;br /&gt;
        // Jika kurang dari 3, kita jalankan otak pencarian canggih&lt;br /&gt;
        if (currentRelatedMatch.length &amp;lt; 3) {&lt;br /&gt;
            // Hapus yang lama dulu agar tidak ada duplikat atau &amp;quot;pake yang bekas&amp;quot;&lt;br /&gt;
            content = content.replace(/\n*\{\{#related:.*?\}\}/g, &#039;&#039;);&lt;br /&gt;
&lt;br /&gt;
            // Langkah A: Ambil kandidat dari Search Engine (Ranking Skor)&lt;br /&gt;
            api.get({&lt;br /&gt;
                action: &#039;query&#039;,&lt;br /&gt;
                list: &#039;search&#039;,&lt;br /&gt;
                srsearch: pageTitle, // Gunakan judul sebagai basis pencarian semantic&lt;br /&gt;
                srlimit: 15,&lt;br /&gt;
                srprop: &#039;&#039;&lt;br /&gt;
            }).done(function(searchRes) {&lt;br /&gt;
                var candidates = {};&lt;br /&gt;
&lt;br /&gt;
                // Masukkan hasil pencarian ke pool skor&lt;br /&gt;
                if (searchRes.query &amp;amp;&amp;amp; searchRes.query.search) {&lt;br /&gt;
                    searchRes.query.search.forEach(function(item, index) {&lt;br /&gt;
                        if (item.title === pageTitle) return;&lt;br /&gt;
                        candidates[item.title] = (15 - index); // Skor berdasarkan urutan relevansi&lt;br /&gt;
                    });&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                // Langkah B: Tambah skor jika artikel ada di daftar Link Internal&lt;br /&gt;
                if (page.links) {&lt;br /&gt;
                    page.links.forEach(function(link) {&lt;br /&gt;
                        if (link.title === pageTitle) return;&lt;br /&gt;
                        candidates[link.title] = (candidates[link.title] || 0) + 5; // Bonus skor link&lt;br /&gt;
                    });&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                // Langkah C: Urutkan berdasarkan skor tertinggi (yang paling nyambung)&lt;br /&gt;
                var sortedTitles = Object.keys(candidates).sort(function(a, b) {&lt;br /&gt;
                    return candidates[b] - candidates[a];&lt;br /&gt;
                });&lt;br /&gt;
&lt;br /&gt;
                // Ambil TOP 3&lt;br /&gt;
                var finalRelated = sortedTitles.filter(t =&amp;gt; t.indexOf(&#039;:&#039;) === -1).slice(0, 3);&lt;br /&gt;
&lt;br /&gt;
                if (finalRelated.length &amp;gt; 0) {&lt;br /&gt;
                    var relatedTags = &#039;\n\n&#039; + finalRelated.map(t =&amp;gt; &#039;{{#related: &#039; + t + &#039;}}&#039;).join(&#039;\n&#039;);&lt;br /&gt;
                    content += relatedTags;&lt;br /&gt;
                    summaryParts.push(&#039;NeuralRelated&#039;);&lt;br /&gt;
                }&lt;br /&gt;
                &lt;br /&gt;
                runPatroliAndSave();&lt;br /&gt;
            });&lt;br /&gt;
        } else {&lt;br /&gt;
            runPatroliAndSave();&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        function runPatroliAndSave() {&lt;br /&gt;
            // --- 3. PATROLI ENGINE (FITUR ASLI - TETAP BERFUNGSI) ---&lt;br /&gt;
            if (isPatroli) {&lt;br /&gt;
                var placeholders = [];&lt;br /&gt;
                // Lindungi Brankas: Template, Header, Kategori, Ref, dan Kalimat Pembuka&lt;br /&gt;
                content = content.replace(/(\{\{[\s\S]*?\}\}|==+.*?==+|\[\[Kategori:.*?\]\]|&amp;lt;ref[\s\S]*?&amp;lt;\/ref&amp;gt;|^.*?adalah)/gi, function(match) {&lt;br /&gt;
                    placeholders.push(match);&lt;br /&gt;
                    return &#039;___MIP_SKIP_&#039; + (placeholders.length - 1) + &#039;___&#039;;&lt;br /&gt;
                });&lt;br /&gt;
&lt;br /&gt;
                // Proses Auto-Link (Wajib ambil daftar AllPages dulu)&lt;br /&gt;
                api.get({ action: &#039;query&#039;, list: &#039;allpages&#039;, apnamespace: 0, aplimit: &#039;max&#039; }).done(function(apData) {&lt;br /&gt;
                    var allTitles = apData.query.allpages.map(p =&amp;gt; p.title);&lt;br /&gt;
                    var lowerTitles = allTitles.map(t =&amp;gt; t.toLowerCase());&lt;br /&gt;
&lt;br /&gt;
                    var tokens = content.split(/(\s+|\[\[|\]\])/);&lt;br /&gt;
                    var inLink = false;&lt;br /&gt;
                    for (var i = 0; i &amp;lt; tokens.length; i++) {&lt;br /&gt;
                        if (tokens[i] === &#039;[[&#039; ) { inLink = true; continue; }&lt;br /&gt;
                        if (tokens[i] === &#039;]]&#039; ) { inLink = false; continue; }&lt;br /&gt;
                        if (inLink || tokens[i].trim().length &amp;lt; 3 || tokens[i].includes(&#039;___MIP_SKIP_&#039;)) continue;&lt;br /&gt;
&lt;br /&gt;
                        var wordsInToken = tokens[i].match(/\b\w+\b/g);&lt;br /&gt;
                        if (wordsInToken) {&lt;br /&gt;
                            wordsInToken.forEach(function(word) {&lt;br /&gt;
                                var idx = lowerTitles.indexOf(word.toLowerCase());&lt;br /&gt;
                                if (idx !== -1 &amp;amp;&amp;amp; allTitles[idx] !== pageTitle) {&lt;br /&gt;
                                    tokens[i] = tokens[i].replace(new RegExp(&#039;\\b&#039; + word + &#039;\\b&#039;, &#039;g&#039;), &#039;[[&#039; + allTitles[idx] + &#039;|&#039; + word + &#039;]]&#039;);&lt;br /&gt;
                                }&lt;br /&gt;
                            });&lt;br /&gt;
                        }&lt;br /&gt;
                    }&lt;br /&gt;
                    content = tokens.join(&#039;&#039;);&lt;br /&gt;
                    &lt;br /&gt;
                    // Kembalikan dari Brankas&lt;br /&gt;
                    content = content.replace(/___MIP_SKIP_(\d+)___/g, function(match, id) { return placeholders[id]; });&lt;br /&gt;
&lt;br /&gt;
                    // Bersihkan Link Merah&lt;br /&gt;
                    content = content.replace(/\[\[([^|\]:]+)\]\]/g, function(match, p1) {&lt;br /&gt;
                        return lowerTitles.includes(p1.toLowerCase()) ? match : p1;&lt;br /&gt;
                    });&lt;br /&gt;
&lt;br /&gt;
                    saveAction();&lt;br /&gt;
                });&lt;br /&gt;
            } else {&lt;br /&gt;
                saveAction();&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        function saveAction() {&lt;br /&gt;
            // --- 4. EKSEKUSI ---&lt;br /&gt;
            if (content.trim() !== rawContent.trim()) {&lt;br /&gt;
                api.postWithToken(&#039;edit&#039;, {&lt;br /&gt;
                    action: &#039;edit&#039;,&lt;br /&gt;
                    title: pageTitle,&lt;br /&gt;
                    text: content,&lt;br /&gt;
                    summary: &#039;Mippedia Neural Engine V12: &#039; + summaryParts.join(&#039;, &#039;),&lt;br /&gt;
                    bot: true, markasbot: true&lt;br /&gt;
                }).done(function() { location.reload(); });&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    });&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================&lt;br /&gt;
   🌐 MIPPEDIA SHORTDESC - DATA CENTER (PREMIUM UI)&lt;br /&gt;
   Status: INDEPENDENT &amp;amp; REFINED VISUAL&lt;br /&gt;
   Storage: MediaWiki:ShortDesc-Data.json&lt;br /&gt;
   ========================================================== */&lt;br /&gt;
(function($, mw) {&lt;br /&gt;
    &amp;quot;use strict&amp;quot;;&lt;br /&gt;
    $(document).ready(function() {&lt;br /&gt;
        if (mw.config.get(&#039;wgNamespaceNumber&#039;) !== 0 || mw.config.get(&#039;wgIsMainPage&#039;)) return;&lt;br /&gt;
&lt;br /&gt;
        var pageTitle = mw.config.get(&#039;wgPageName&#039;);&lt;br /&gt;
        var storagePage = &#039;MediaWiki:ShortDesc-Data.json&#039;;&lt;br /&gt;
        var isAdmin = mw.config.get(&#039;wgUserGroups&#039;).some(g =&amp;gt; [&#039;sysop&#039;, &#039;interface-admin&#039;].includes(g));&lt;br /&gt;
&lt;br /&gt;
        var langs = {&lt;br /&gt;
            id: { label: &#039;Mippedia bahasa Indonesia&#039;, short: &#039;ID&#039;, color: &#039;#6366f1&#039; },&lt;br /&gt;
            en: { label: &#039;Mippedia bahasa Inggris&#039;, short: &#039;EN&#039;, color: &#039;#3b82f6&#039; },&lt;br /&gt;
            concise: { label: &#039;Mippedia bahasa Indonesia ringkas&#039;, short: &#039;CON&#039;, color: &#039;#14b8a6&#039; }&lt;br /&gt;
        };&lt;br /&gt;
&lt;br /&gt;
        // UI Box dengan Spasi dan Desain Baru&lt;br /&gt;
        var html = `&lt;br /&gt;
            &amp;lt;div id=&amp;quot;desc-manager&amp;quot; style=&amp;quot;background:#ffffff; border:1px solid #f1f5f9; border-left:4px solid #6366f1; border-radius:12px; padding:20px; margin: 20px 0 25px 0; box-shadow:0 4px 12px rgba(0,0,0,0.03); font-family: -apple-system,BlinkMacSystemFont,&#039;Segoe UI&#039;,Roboto,sans-serif;&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;div style=&amp;quot;display:flex; justify-content:space-between; align-items:center; margin-bottom:12px;&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;span style=&amp;quot;font-size:13px; font-weight:700; color:#475569; text-transform:uppercase; letter-spacing:0.5px; display:flex; align-items:center; gap:6px;&amp;quot;&amp;gt;&lt;br /&gt;
                        Label Deskripsi&lt;br /&gt;
                    &amp;lt;/span&amp;gt;&lt;br /&gt;
                    &amp;lt;span id=&amp;quot;desc-open-editor&amp;quot; style=&amp;quot;cursor:pointer; padding:5px; transition:0.2s;&amp;quot; title=&amp;quot;Edit Deskripsi&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;svg width=&amp;quot;16&amp;quot; height=&amp;quot;16&amp;quot; viewBox=&amp;quot;0 0 24 24&amp;quot; fill=&amp;quot;none&amp;quot; stroke=&amp;quot;#94a3b8&amp;quot; stroke-width=&amp;quot;2&amp;quot; stroke-linecap=&amp;quot;round&amp;quot; stroke-linejoin=&amp;quot;round&amp;quot;&amp;gt;&amp;lt;path d=&amp;quot;M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7&amp;quot;&amp;gt;&amp;lt;/path&amp;gt;&amp;lt;path d=&amp;quot;M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z&amp;quot;&amp;gt;&amp;lt;/path&amp;gt;&amp;lt;/svg&amp;gt;&lt;br /&gt;
                    &amp;lt;/span&amp;gt;&lt;br /&gt;
                &amp;lt;/div&amp;gt;&lt;br /&gt;
                &lt;br /&gt;
                &amp;lt;div id=&amp;quot;desc-status-display&amp;quot; style=&amp;quot;display:flex; flex-direction:column; gap:8px;&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;small style=&amp;quot;color:#94a3b8; font-style:italic;&amp;quot;&amp;gt;Sinkronisasi data...&amp;lt;/small&amp;gt;&lt;br /&gt;
                &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;div id=&amp;quot;desc-editor&amp;quot; style=&amp;quot;display:none; margin-top:18px; border-top:1px dashed #e2e8f0; padding-top:18px;&amp;quot;&amp;gt;&lt;br /&gt;
                    ${Object.keys(langs).map(k =&amp;gt; `&lt;br /&gt;
                        &amp;lt;div style=&amp;quot;margin-bottom:12px;&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;label style=&amp;quot;display:block; font-size:11px; font-weight:bold; color:#64748b; margin-bottom:4px;&amp;quot;&amp;gt;${langs[k].label}&amp;lt;/label&amp;gt;&lt;br /&gt;
                            &amp;lt;input type=&amp;quot;text&amp;quot; id=&amp;quot;desc-in-${k}&amp;quot; placeholder=&amp;quot;Tulis deskripsi...&amp;quot; style=&amp;quot;width:100%; padding:10px; font-size:13px; border:1px solid #e2e8f0; border-radius:8px; box-sizing:border-box; outline:none; focus:border-color:#6366f1;&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;/div&amp;gt;&lt;br /&gt;
                    `).join(&#039;&#039;)}&lt;br /&gt;
                    &amp;lt;button id=&amp;quot;desc-save&amp;quot; style=&amp;quot;width:100%; padding:12px; background:#6366f1; color:white; border:none; border-radius:8px; font-size:13px; font-weight:600; cursor:pointer; margin-top:5px;&amp;quot;&amp;gt;Terbitkan&amp;lt;/button&amp;gt;&lt;br /&gt;
                &amp;lt;/div&amp;gt;&lt;br /&gt;
            &amp;lt;/div&amp;gt;`;&lt;br /&gt;
&lt;br /&gt;
        $(&#039;.mw-parser-output&#039;).prepend(html);&lt;br /&gt;
&lt;br /&gt;
        function loadDescStatus() {&lt;br /&gt;
            new mw.Api().get({ action: &#039;query&#039;, prop: &#039;revisions&#039;, titles: storagePage, rvprop: &#039;content&#039;, formatversion: 2 }).done(function(res) {&lt;br /&gt;
                var content = res.query.pages[0].revisions ? res.query.pages[0].revisions[0].content : &amp;quot;{}&amp;quot;;&lt;br /&gt;
                var fullData = JSON.parse(content);&lt;br /&gt;
                var myData = fullData[pageTitle] || {};&lt;br /&gt;
                var $statusBox = $(&#039;#desc-status-display&#039;).empty();&lt;br /&gt;
                var foundAny = false;&lt;br /&gt;
&lt;br /&gt;
                Object.keys(langs).forEach(k =&amp;gt; {&lt;br /&gt;
                    var val = myData[k];&lt;br /&gt;
                    if (val &amp;amp;&amp;amp; val.trim() !== &amp;quot;&amp;quot;) {&lt;br /&gt;
                        foundAny = true;&lt;br /&gt;
                        $statusBox.append(`&lt;br /&gt;
                            &amp;lt;div style=&amp;quot;display:flex; align-items:center; gap:10px;&amp;quot;&amp;gt;&lt;br /&gt;
                                &amp;lt;span style=&amp;quot;background:${langs[k].color}15; color:${langs[k].color}; padding:3px 10px; border-radius:20px; font-size:10px; font-weight:800; border:1px solid ${langs[k].color}30; min-width:35px; text-align:center;&amp;quot;&amp;gt;${langs[k].short}&amp;lt;/span&amp;gt;&lt;br /&gt;
                                &amp;lt;span style=&amp;quot;font-size:13px; color:#334155; line-height:1.4;&amp;quot;&amp;gt;${val}&amp;lt;/span&amp;gt;&lt;br /&gt;
                            &amp;lt;/div&amp;gt;&lt;br /&gt;
                        `);&lt;br /&gt;
                        $(&#039;#desc-in-&#039; + k).val(val);&lt;br /&gt;
                    }&lt;br /&gt;
                });&lt;br /&gt;
&lt;br /&gt;
                if (!foundAny) {&lt;br /&gt;
                    $statusBox.html(&#039;&amp;lt;div style=&amp;quot;color:#cbd5e0; font-size:13px; background:#f8fafc; padding:10px; border-radius:8px; border:1px dashed #e2e8f0;&amp;quot;&amp;gt;Belum ada metadata deskripsi yang dikaitkan dengan entitas ini.&amp;lt;/div&amp;gt;&#039;);&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        $(document).on(&#039;click&#039;, &#039;#desc-open-editor&#039;, function() { $(&#039;#desc-editor&#039;).slideToggle(); });&lt;br /&gt;
&lt;br /&gt;
        $(document).on(&#039;click&#039;, &#039;#desc-save&#039;, function() {&lt;br /&gt;
            if (!isAdmin) { alert(&#039;Akses ditolak. Anda memerlukan izin pengurus.&#039;); return; }&lt;br /&gt;
            var $btn = $(this).text(&#039;Proses Sinkronisasi...&#039;).css(&#039;opacity&#039;,&#039;0.7&#039;);&lt;br /&gt;
            var api = new mw.Api();&lt;br /&gt;
            var newData = { id: $(&#039;#desc-in-id&#039;).val().trim(), en: $(&#039;#desc-in-en&#039;).val().trim(), concise: $(&#039;#desc-in-concise&#039;).val().trim() };&lt;br /&gt;
&lt;br /&gt;
            api.get({ action: &#039;query&#039;, prop: &#039;revisions&#039;, titles: storagePage, rvprop: &#039;content&#039;, formatversion: 2 }).done(function(r) {&lt;br /&gt;
                var json = r.query.pages[0].revisions ? JSON.parse(r.query.pages[0].revisions[0].content) : {};&lt;br /&gt;
                if (!newData.id &amp;amp;&amp;amp; !newData.en &amp;amp;&amp;amp; !newData.concise) { delete json[pageTitle]; } else { json[pageTitle] = newData; }&lt;br /&gt;
&lt;br /&gt;
                api.postWithEditToken({&lt;br /&gt;
                    action: &#039;edit&#039;,&lt;br /&gt;
                    title: storagePage,&lt;br /&gt;
                    text: JSON.stringify(json, null, 2),&lt;br /&gt;
                    summary: &#039;Update Entity Description: &#039; + pageTitle&lt;br /&gt;
                }).done(function() { location.reload(); });&lt;br /&gt;
            });&lt;br /&gt;
        });&lt;br /&gt;
&lt;br /&gt;
        loadDescStatus();&lt;br /&gt;
    });&lt;br /&gt;
})(jQuery, mediaWiki);&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================&lt;br /&gt;
   📍 MIPPEDIA DATA - ULTIMATE TEXT-TO-MAP LOCATOR&lt;br /&gt;
   Fitur: Deteksi lokasi dari teks dengan database label lengkap&lt;br /&gt;
   ========================================================== */&lt;br /&gt;
(function() {&lt;br /&gt;
    $(document).ready(function() {&lt;br /&gt;
        var locationText = &amp;quot;&amp;quot;;&lt;br /&gt;
        &lt;br /&gt;
        // --- DAFTAR LABEL SUPER LENGKAP &amp;amp; MASUK AKAL ---&lt;br /&gt;
        var locationLabels = [&lt;br /&gt;
            // Umum &amp;amp; Geografis&lt;br /&gt;
            &#039;lokasi&#039;, &#039;tempat&#039;, &#039;wilayah&#039;, &#039;daerah&#039;, &#039;koordinat&#039;, &#039;alamat&#039;,&lt;br /&gt;
            // Orang (Biografi)&lt;br /&gt;
            &#039;tempat lahir&#039;, &#039;asal&#039;, &#039;kediaman&#039;, &#039;domisili&#039;, &#039;negara asal&#039;,&lt;br /&gt;
            // Organisasi &amp;amp; Perusahaan&lt;br /&gt;
            &#039;kantor pusat&#039;, &#039;markas&#039;, &#039;cabang utama&#039;, &#039;titik operasi&#039;,&lt;br /&gt;
            // Makanan &amp;amp; Budaya&lt;br /&gt;
            &#039;asal wilayah&#039;, &#039;daerah asal&#039;, &#039;negara sumber&#039;, &#039;kawasan&#039;,&lt;br /&gt;
            // Sejarah &amp;amp; Bangunan&lt;br /&gt;
            &#039;letak&#039;, &#039;posisi&#039;, &#039;titik temu&#039;, &#039;orbit&#039;&lt;br /&gt;
        ];&lt;br /&gt;
&lt;br /&gt;
        // Jalankan pencarian di tabel data (infobox atau wikitable)&lt;br /&gt;
        $(&#039;.wikitable tr, .infobox tr, .mip-data-table tr&#039;).each(function() {&lt;br /&gt;
            var label = $(this).find(&#039;th&#039;).text().toLowerCase().trim();&lt;br /&gt;
            // Hilangkan karakter spesial kayak titik dua biar matching-nya akurat&lt;br /&gt;
            label = label.replace(/[:]/g, &#039;&#039;);&lt;br /&gt;
&lt;br /&gt;
            var isMatch = locationLabels.some(function(target) {&lt;br /&gt;
                return label === target || label.includes(target);&lt;br /&gt;
            });&lt;br /&gt;
&lt;br /&gt;
            if (isMatch) {&lt;br /&gt;
                var rawValue = $(this).find(&#039;td&#039;).text().trim();&lt;br /&gt;
                // Ambil bagian utama sebelum tanda koma, kurung, atau titik koma&lt;br /&gt;
                // Misal: &amp;quot;Bandung, Jawa Barat&amp;quot; -&amp;gt; ambil &amp;quot;Bandung&amp;quot;&lt;br /&gt;
                locationText = rawValue.split(/[,(\[;]/)[0].trim(); &lt;br /&gt;
                &lt;br /&gt;
                if (locationText.length &amp;gt; 2) return false; // Stop jika sudah ketemu yang valid&lt;br /&gt;
            }&lt;br /&gt;
        });&lt;br /&gt;
&lt;br /&gt;
        // Eksekusi Render Peta&lt;br /&gt;
        if (locationText &amp;amp;&amp;amp; locationText.length &amp;gt; 2) {&lt;br /&gt;
            var $mapWrapper = $(&#039;&amp;lt;div&amp;gt;&#039;).css({&lt;br /&gt;
                &#039;margin&#039;: &#039;15px 0&#039;,&lt;br /&gt;
                &#039;padding&#039;: &#039;12px&#039;,&lt;br /&gt;
                &#039;border&#039;: &#039;1px solid #ddd&#039;,&lt;br /&gt;
                &#039;background&#039;: &#039;#ffffff&#039;,&lt;br /&gt;
                &#039;border-radius&#039;: &#039;10px&#039;,&lt;br /&gt;
                &#039;box-shadow&#039;: &#039;0 4px 12px rgba(0,0,0,0.08)&#039;&lt;br /&gt;
            });&lt;br /&gt;
&lt;br /&gt;
            $mapWrapper.append(&#039;&amp;lt;div style=&amp;quot;font-weight:bold; font-size:0.9em; margin-bottom:10px; color:#444; display:flex; align-items:center;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                               &#039;&amp;lt;span style=&amp;quot;margin-right:8px;&amp;quot;&amp;gt;🗺️&amp;lt;/span&amp;gt;Pratinjau Lokasi : &#039; + locationText + &#039;&amp;lt;/div&amp;gt;&#039;);&lt;br /&gt;
&lt;br /&gt;
            // Embed URL dengan pencarian teks (Nominatim)&lt;br /&gt;
            var embedUrl = &amp;quot;https://www.openstreetmap.org/export/embed.html?layer=mapnik&amp;amp;q=&amp;quot; + encodeURIComponent(locationText);&lt;br /&gt;
&lt;br /&gt;
            var $iframe = $(&#039;&amp;lt;iframe&amp;gt;&#039;).attr({&lt;br /&gt;
                &#039;src&#039;: embedUrl,&lt;br /&gt;
                &#039;width&#039;: &#039;100%&#039;,&lt;br /&gt;
                &#039;height&#039;: &#039;280&#039;,&lt;br /&gt;
                &#039;frameborder&#039;: &#039;0&#039;,&lt;br /&gt;
                &#039;style&#039;: &#039;border-radius: 8px; border: 1px solid #eee;&#039;&lt;br /&gt;
            });&lt;br /&gt;
&lt;br /&gt;
            $mapWrapper.append($iframe);&lt;br /&gt;
            &lt;br /&gt;
            // Link eksternal yang lebih rapi&lt;br /&gt;
            var gMapsUrl = &amp;quot;https://www.google.com/maps/search/&amp;quot; + encodeURIComponent(locationText);&lt;br /&gt;
            $mapWrapper.append(&#039;&amp;lt;div style=&amp;quot;text-align:right; margin-top:8px;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                               &#039;&amp;lt;a href=&amp;quot;&#039; + gMapsUrl + &#039;&amp;quot; target=&amp;quot;_blank&amp;quot; style=&amp;quot;font-size:0.75em; color:#6a5acd; font-weight:bold; text-decoration:none; text-transform:uppercase; letter-spacing:0.5px;&amp;quot;&amp;gt;Buka di Google Maps →&amp;lt;/a&amp;gt;&amp;lt;/div&amp;gt;&#039;);&lt;br /&gt;
&lt;br /&gt;
            // Masukkan ke bawah section deskripsi otomatis&lt;br /&gt;
            if ($(&#039;#mip-desc-section&#039;).length) {&lt;br /&gt;
                $(&#039;#mip-desc-section&#039;).after($mapWrapper);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    });&lt;br /&gt;
})();&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://data.mippedia.org/index.php?title=MediaWiki:Common.js&amp;diff=903</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://data.mippedia.org/index.php?title=MediaWiki:Common.js&amp;diff=903"/>
		<updated>2026-06-01T17:00:52Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* ==========================================================&lt;br /&gt;
   🧠 MIPPEDIA DATA - ULTRA-FAST ISOLATION &amp;amp; DETAILED LAYOUT (V11.3)&lt;br /&gt;
   Features: Priority Check (ID &amp;gt; EN &amp;gt; CONCISE), Auto-Age, &lt;br /&gt;
             Auto-Bold, Smart Links, Dynamic Context, Dynamic Noindex.&lt;br /&gt;
   Fixes: &lt;br /&gt;
             - Super Instant isolation hiding for Infobox/Wikidata elements (Pre-DOM execution).&lt;br /&gt;
             - Removed Live Data Integrator Scanner box completely.&lt;br /&gt;
             - Removed emoji icons inside the detailed narrative texts.&lt;br /&gt;
             - Expanded system explanation text to be highly detailed and comprehensive.&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
// --- ⚡ LANGKAH 1: ISOLASI ULTRA-CEPAT (DIJALANKAN INSTAN SEBELUM DOM READY) ---&lt;br /&gt;
(function() {&lt;br /&gt;
    var pageTitle = mw.config.get(&#039;wgPageName&#039;).replace(/_/g, &#039; &#039;);&lt;br /&gt;
    var cacheKey = &#039;mip_smart_context_thumb_&#039; + pageTitle;&lt;br /&gt;
    var cached = JSON.parse(localStorage.getItem(cacheKey) || &amp;quot;{}&amp;quot;);&lt;br /&gt;
    &lt;br /&gt;
    // Jika cache mendeteksi halaman ini kosong, kunci visualnya sekarang juga!&lt;br /&gt;
    if (cached.isEmpty) {&lt;br /&gt;
        var preStyle = document.createElement(&#039;style&#039;);&lt;br /&gt;
        preStyle.id = &#039;mip-instant-isolate-style&#039;;&lt;br /&gt;
        preStyle.innerHTML = &lt;br /&gt;
            &#039;body.mip-isolated-active #mw-content-text &amp;gt; *:not(#mip-empty-state-notice):not(#mip-desc-section):not(script):not(style), &#039; +&lt;br /&gt;
            &#039;body.mip-isolated-active .vertical-navbox, body.mip-isolated-active .infobox, &#039; +&lt;br /&gt;
            &#039;body.mip-isolated-active #catlinks, body.mip-isolated-active .data-box { display: none !important; }&#039;;&lt;br /&gt;
        document.head.appendChild(preStyle);&lt;br /&gt;
        document.body.classList.add(&#039;mip-isolated-active&#039;);&lt;br /&gt;
    }&lt;br /&gt;
})();&lt;br /&gt;
&lt;br /&gt;
// --- 🛠️ LANGKAH 2: OPERASI UTAMA UTK RENDER DAN VALIDASI DATA ---&lt;br /&gt;
(function() {&lt;br /&gt;
    $(document).ready(function() {&lt;br /&gt;
        var $descSection = $(&#039;#mip-desc-section&#039;), $descBox = $(&#039;#mip-auto-description&#039;),&lt;br /&gt;
            $sourceInfo = $(&#039;#mip-source-info&#039;), $portalLinks = $(&#039;#mip-portal-links&#039;),&lt;br /&gt;
            $projectPortal = $(&#039;#mip-project-portal&#039;), $mainContent = $(&#039;#mw-content-text&#039;);&lt;br /&gt;
        &lt;br /&gt;
        if (!$descBox.length) return;&lt;br /&gt;
&lt;br /&gt;
        var pageTitle = mw.config.get(&#039;wgPageName&#039;).replace(/_/g, &#039; &#039;),&lt;br /&gt;
            cacheKey = &#039;mip_smart_context_thumb_&#039; + pageTitle, &lt;br /&gt;
            currentYear = 2026;&lt;br /&gt;
&lt;br /&gt;
        var projects = [&lt;br /&gt;
            { id: &#039;id&#039;, name: &#039;Mippedia bahasa Indonesia&#039;, url: &#039;https://id.mippedia.org/api.php&#039;, base: &#039;https://id.mippedia.org/wiki/&#039;, label: &#039;Mippedia Indonesia&#039; },&lt;br /&gt;
            { id: &#039;en&#039;, name: &#039;Mippedia bahasa Inggris&#039;, url: &#039;https://en.mippedia.org/api.php&#039;, base: &#039;https://en.mippedia.org/wiki/&#039;, label: &#039;Mippedia Inggris&#039; },&lt;br /&gt;
            { id: &#039;concise&#039;, name: &#039;Mippedia bahasa Indonesia ringkas&#039;, url: &#039;https://concise.mippedia.org/api.php&#039;, base: &#039;https://concise.mippedia.org/wiki/&#039;, label: &#039;Mippedia Ringkas&#039; }&lt;br /&gt;
        ];&lt;br /&gt;
&lt;br /&gt;
        // --- 🎨 STYLE INJECTION FOR ANIMATION &amp;amp; HUB ---&lt;br /&gt;
        if (!$(&#039;#mip-clean-style&#039;).length) {&lt;br /&gt;
            $(&#039;head&#039;).append(&lt;br /&gt;
                &#039;&amp;lt;style id=&amp;quot;mip-clean-style&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                    &#039;@keyframes mipFadeInUp {&#039; +&lt;br /&gt;
                        &#039;from { opacity: 0; transform: translateY(12px); }&#039; +&lt;br /&gt;
                        &#039;to { opacity: 1; transform: translateY(0); }&#039; +&lt;br /&gt;
                    &#039;}&#039; +&lt;br /&gt;
                    &#039;@keyframes mipPulse {&#039; +&lt;br /&gt;
                        &#039;0% { transform: scale(1); opacity: 1; }&#039; +&lt;br /&gt;
                        &#039;50% { transform: scale(1.06); opacity: 0.85; filter: drop-shadow(0 0 6px rgba(217,83,79,0.4)); }&#039; +&lt;br /&gt;
                        &#039;100% { transform: scale(1); opacity: 1; }&#039; +&lt;br /&gt;
                    &#039;}&#039; +&lt;br /&gt;
                    &#039;#mip-empty-state-notice {&#039; +&lt;br /&gt;
                        &#039;display: block !important;&#039; +&lt;br /&gt;
                        &#039;animation: mipFadeInUp 0.35s cubic-bezier(0.16, 1, 0.3, 1) forwards;&#039; +&lt;br /&gt;
                    &#039;}&#039; +&lt;br /&gt;
                    &#039;.mip-pulse-icon {&#039; +&lt;br /&gt;
                        &#039;animation: mipPulse 2s infinite ease-in-out;&#039; +&lt;br /&gt;
                        &#039;transform-origin: center;&#039; +&lt;br /&gt;
                    &#039;}&#039; +&lt;br /&gt;
                    &#039;.mip-btn-container {&#039; +&lt;br /&gt;
                        &#039;display: flex; flex-wrap: wrap; justify-content: center; margin: 30px 0 25px 0; padding-top: 5px;&#039; +&lt;br /&gt;
                    &#039;}&#039; +&lt;br /&gt;
                    &#039;.mip-action-btn {&#039; +&lt;br /&gt;
                        &#039;display: inline-flex; align-items: center; justify-content: center;&#039; +&lt;br /&gt;
                        &#039;padding: 11px 22px; margin: 6px; font-size: 0.9em; font-weight: 600;&#039; +&lt;br /&gt;
                        &#039;color: #6a5acd !important; background: #ffffff; border: 1.5px solid #6a5acd;&#039; +&lt;br /&gt;
                        &#039;border-radius: 30px; text-decoration: none !important; cursor: pointer;&#039; +&lt;br /&gt;
                        &#039;transition: all 0.25s ease-in-out; box-shadow: 0 2px 5px rgba(106,92,205,0.08);&#039; +&lt;br /&gt;
                        &#039;flex-grow: 1; max-width: 220px; min-width: 160px;&#039; +&lt;br /&gt;
                    &#039;}&#039; +&lt;br /&gt;
                    &#039;.mip-action-btn:hover {&#039; +&lt;br /&gt;
                        &#039;color: #ffffff !important; background: #6a5acd;&#039; +&lt;br /&gt;
                        &#039;transform: translateY(-2px); box-shadow: 0 4px 12px rgba(106,92,205,0.2);&#039; +&lt;br /&gt;
                    &#039;}&#039; +&lt;br /&gt;
                &#039;&amp;lt;/style&amp;gt;&#039;&lt;br /&gt;
            );&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        function applyAutoBold(text) { return text.replace(new RegExp(&#039;(&#039; + pageTitle + &#039;)&#039;, &#039;gi&#039;), &#039;&amp;lt;strong&amp;gt;$1&amp;lt;/strong&amp;gt;&#039;); }&lt;br /&gt;
        function cleanExtract(text) { return text.replace(/\[\d+\]/g, &#039;&#039;).replace(/\{\{[^}]+\}\}/g, &#039;&#039;).replace(/\(\s*\)/g, &#039;&#039;).replace(/\s\s+/g, &#039; &#039;).trim(); }&lt;br /&gt;
        &lt;br /&gt;
        function applyDynamicContext(text) {&lt;br /&gt;
            var date = new Date();&lt;br /&gt;
            var hari = [&amp;quot;Minggu&amp;quot;, &amp;quot;Senin&amp;quot;, &amp;quot;Selasa&amp;quot;, &amp;quot;Rabu&amp;quot;, &amp;quot;Kamis&amp;quot;, &amp;quot;Jumat&amp;quot;, &amp;quot;Sabtu&amp;quot;];&lt;br /&gt;
            var bulan = [&amp;quot;Januari&amp;quot;, &amp;quot;Februari&amp;quot;, &amp;quot;Maret&amp;quot;, &amp;quot;April&amp;quot;, &amp;quot;Mei&amp;quot;, &amp;quot;Juni&amp;quot;, &amp;quot;Juli&amp;quot;, &amp;quot;Agustus&amp;quot;, &amp;quot;September&amp;quot;, &amp;quot;Oktober&amp;quot;, &amp;quot;November&amp;quot;, &amp;quot;Desember&amp;quot;];&lt;br /&gt;
            var tglSkrg = hari[date.getDay()] + &amp;quot;, &amp;quot; + date.getDate() + &amp;quot; &amp;quot; + bulan[date.getMonth()] + &amp;quot; &amp;quot; + date.getFullYear();&lt;br /&gt;
            return text.replace(/(hari ini|saat ini|sekarang)/gi, &#039;$1 (&#039; + tglSkrg + &#039;)&#039;)&lt;br /&gt;
                .replace(/(\d{1,2}\s(?:Januari|Februari|Maret|April|Mei|Juni|Juli|Agustus|September|Oktober|November|Desember)\s(\d{4}))/gi, function(m, f, y) { &lt;br /&gt;
                    return f + &amp;quot; &amp;lt;span style=&#039;color: #444; font-weight: bold;&#039;&amp;gt;– usia &amp;quot; + (currentYear - parseInt(y)) + &amp;quot; tahun&amp;lt;/span&amp;gt;&amp;quot;; &lt;br /&gt;
                })&lt;br /&gt;
                .replace(/(sejak|tahun)\s(\d{4})/gi, function(m, k, y) {&lt;br /&gt;
                    var gap = currentYear - parseInt(y);&lt;br /&gt;
                    if (gap &amp;gt; 0 &amp;amp;&amp;amp; gap &amp;lt; 100) return k + &amp;quot; &amp;quot; + y + &amp;quot; &amp;lt;small style=&#039;color: #888;&#039;&amp;gt;(&amp;quot; + gap + &amp;quot; thn lalu)&amp;lt;/small&amp;gt;&amp;quot;;&lt;br /&gt;
                    return m;&lt;br /&gt;
                });&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        function applySummary(text) {&lt;br /&gt;
            var limit = 250;&lt;br /&gt;
            if (text.length &amp;lt;= limit) return &#039;&amp;lt;span&amp;gt;&#039; + text + &#039;&amp;lt;/span&amp;gt;&#039;;&lt;br /&gt;
            return &#039;&amp;lt;span&amp;gt;&#039; + text.substring(0, limit) + &#039;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;mip-dots&amp;quot;&amp;gt;... &amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;mip-more&amp;quot; style=&amp;quot;display:none;&amp;quot;&amp;gt;&#039; + text.substring(limit) + &#039;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;mip-read-btn&amp;quot; style=&amp;quot;color: #6a5acd; cursor: pointer; font-weight: bold; margin-left: 5px;&amp;quot;&amp;gt;Baca selengkapnya&amp;lt;/span&amp;gt;&#039;;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        function buildSmartLinks(currentId, validatedEnTitle) {&lt;br /&gt;
            $portalLinks.empty();&lt;br /&gt;
            var validLinks = [];&lt;br /&gt;
            var checkRequests = projects.filter(p =&amp;gt; p.id !== currentId).map(function(p) {&lt;br /&gt;
                var targetTitle = (p.id === &#039;en&#039; &amp;amp;&amp;amp; validatedEnTitle) ? validatedEnTitle : pageTitle;&lt;br /&gt;
                if (p.id === &#039;en&#039; &amp;amp;&amp;amp; !validatedEnTitle) return $.Deferred().resolve();&lt;br /&gt;
&lt;br /&gt;
                return $.ajax({ url: p.url, data: { action: &#039;query&#039;, titles: targetTitle, format: &#039;json&#039;, origin: &#039;*&#039; }, dataType: &#039;json&#039; })&lt;br /&gt;
                    .then(function(data) { &lt;br /&gt;
                        if (data.query.pages[&amp;quot;-1&amp;quot;] === undefined) { &lt;br /&gt;
                            validLinks.push(&#039;&amp;lt;a href=&amp;quot;&#039; + p.base + encodeURIComponent(targetTitle) + &#039;&amp;quot; target=&amp;quot;_blank&amp;quot; style=&amp;quot;color: #6a5acd; text-decoration: underline; font-weight: bold;&amp;quot;&amp;gt;&#039; + p.label + &#039;&amp;lt;/a&amp;gt;&#039;); &lt;br /&gt;
                        } &lt;br /&gt;
                    });&lt;br /&gt;
            });&lt;br /&gt;
&lt;br /&gt;
            $.when.apply($, checkRequests).done(function() {&lt;br /&gt;
                if (validLinks.length &amp;gt; 0) { $portalLinks.html(validLinks.join(&#039; &amp;lt;span style=&amp;quot;color:#ccc; margin: 0 5px;&amp;quot;&amp;gt;•&amp;lt;/span&amp;gt; &#039;)); $projectPortal.fadeIn(); }&lt;br /&gt;
            });&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // --- 🧠 RENDER LAYOUT DETAILED NOTICE (NO ICONS, HIGHLY DETAILED) ---&lt;br /&gt;
        function toggleMippediaLayout(isEmpty) {&lt;br /&gt;
            var $existingNotice = $(&#039;#mip-empty-state-notice&#039;);&lt;br /&gt;
            var userGroups = mw.config.get(&#039;wgUserGroups&#039;) || [];&lt;br /&gt;
            var isSysop = userGroups.indexOf(&#039;sysop&#039;) !== -1;&lt;br /&gt;
            var $editElements = $(&#039;#ca-edit, .mw-editsection, .wb-editsection, .mip-edit-trigger, [id*=&amp;quot;edit&amp;quot;], [class*=&amp;quot;edit-pencil&amp;quot;]&#039;);&lt;br /&gt;
            var $metaRobots = $(&#039;meta[name=&amp;quot;robots&amp;quot;]&#039;);&lt;br /&gt;
&lt;br /&gt;
            if (isEmpty) {&lt;br /&gt;
                if (!$(&#039;#mip-instant-isolate-style&#039;).length) {&lt;br /&gt;
                    $(&#039;head&#039;).append(&#039;&amp;lt;style id=&amp;quot;mip-instant-isolate-style&amp;quot;&amp;gt;body.mip-isolated-active #mw-content-text &amp;gt; *:not(#mip-empty-state-notice):not(#mip-desc-section):not(script):not(style), body.mip-isolated-active .vertical-navbox, body.mip-isolated-active .infobox, body.mip-isolated-active #catlinks, body.mip-isolated-active .data-box { display: none !important; }&amp;lt;/style&amp;gt;&#039;);&lt;br /&gt;
                }&lt;br /&gt;
                $(&#039;body&#039;).addClass(&#039;mip-isolated-active&#039;);&lt;br /&gt;
&lt;br /&gt;
                if (!$existingNotice.length) {&lt;br /&gt;
                    var createUrlID = &#039;https://id.mippedia.org/index.php?title=&#039; + encodeURIComponent(pageTitle) + &#039;&amp;amp;action=edit&#039;;&lt;br /&gt;
                    var createUrlEN = &#039;https://en.mippedia.org/index.php?title=&#039; + encodeURIComponent(pageTitle) + &#039;&amp;amp;action=edit&#039;;&lt;br /&gt;
                    var createUrlConcise = &#039;https://concise.mippedia.org/index.php?title=&#039; + encodeURIComponent(pageTitle) + &#039;&amp;amp;action=edit&#039;;&lt;br /&gt;
&lt;br /&gt;
                    var noticeHtml = &lt;br /&gt;
                        &#039;&amp;lt;div id=&amp;quot;mip-empty-state-notice&amp;quot; style=&amp;quot;max-width: 720px; margin: 25px auto; padding: 10px 15px; font-family: -apple-system, BlinkMacSystemFont, \&#039;Segoe UI\&#039;, Roboto, sans-serif;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                            &lt;br /&gt;
                            &#039;&amp;lt;!-- Ikon Peringatan Segitiga Tetap Dipertahankan (Animasi Aktif) --&amp;gt;&#039; +&lt;br /&gt;
                            &#039;&amp;lt;div style=&amp;quot;text-align: center; margin-bottom: 22px;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                &#039;&amp;lt;div class=&amp;quot;mip-pulse-icon&amp;quot; style=&amp;quot;display: inline-block;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                    &#039;&amp;lt;svg width=&amp;quot;60&amp;quot; height=&amp;quot;60&amp;quot; viewBox=&amp;quot;0 0 24 24&amp;quot; fill=&amp;quot;none&amp;quot; stroke=&amp;quot;#d9534f&amp;quot; stroke-width=&amp;quot;2&amp;quot; stroke-linecap=&amp;quot;round&amp;quot; stroke-linejoin=&amp;quot;round&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                        &#039;&amp;lt;path d=&amp;quot;M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z&amp;quot;&amp;gt;&amp;lt;/path&amp;gt;&#039; +&lt;br /&gt;
                                        &#039;&amp;lt;line x1=&amp;quot;12&amp;quot; y1=&amp;quot;9&amp;quot; x2=&amp;quot;12&amp;quot; y2=&amp;quot;13&amp;quot;&amp;gt;&amp;lt;/line&amp;gt;&#039; +&lt;br /&gt;
                                        &#039;&amp;lt;line x1=&amp;quot;12&amp;quot; y1=&amp;quot;17&amp;quot; x2=&amp;quot;12.01&amp;quot; y2=&amp;quot;17&amp;quot;&amp;gt;&amp;lt;/line&amp;gt;&#039; +&lt;br /&gt;
                                    &#039;&amp;lt;/&#039; + &#039;svg&amp;gt;&#039; +&lt;br /&gt;
                                &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
                                &#039;&amp;lt;h4 style=&amp;quot;color: #2c3e50; margin: 12px 0 0 0; font-size: 1.35em; font-weight: 700; letter-spacing: -0.3px;&amp;quot;&amp;gt;Item Data Terisolasi: Rujukan Artikel Tidak Ditemukan&amp;lt;/h4&amp;gt;&#039; +&lt;br /&gt;
                            &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
                            &lt;br /&gt;
                            &#039;&amp;lt;!-- 📄 INFORMASI DETAIL &amp;amp; FORMAL (Symmetry Left-Aligned, Tanpa Emoji Internal) --&amp;gt;&#039; +&lt;br /&gt;
                            &#039;&amp;lt;div style=&amp;quot;text-align: left; color: #4a5568; font-size: 0.93em; line-height: 1.65;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                &lt;br /&gt;
                                &#039;&amp;lt;p style=&amp;quot;margin-bottom: 16px; text-align: left; letter-spacing: normal; word-spacing: normal;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                    &#039;&amp;lt;strong&amp;gt;PENGANTAR SISTEM OTOMATIS:&amp;lt;/strong&amp;gt; &#039; +&lt;br /&gt;
                                    &#039;Halaman ini ditampilkan karena sistem deteksi siklus internal mendeteksi bahwa entitas data terstruktur ini berada dalam status terisolasi total atau Yatim (Orphaned Data Item). Berdasarkan arsitektur basis data terintegrasi, sebuah item data wajib terikat dengan minimal satu artikel ensiklopedia aktif sebagai validasi literatur atas eksistensi subjek tersebut. Karena item data ini sama sekali tidak memiliki dokumen rujukan yang valid pada Mippedia bahasa Indonesia (ID), Mippedia bahasa Inggris (EN), maupun Mippedia Indonesia Ringkas (Concise), maka sistem secara otomatis menghentikan visualisasi data bawaan untuk mencegah penyebaran informasi tanpa referensi.&#039; +&lt;br /&gt;
                                &#039;&amp;lt;/p&amp;gt;&#039; +&lt;br /&gt;
                                &lt;br /&gt;
                                &#039;&amp;lt;p style=&amp;quot;margin-bottom: 16px; text-align: left; letter-spacing: normal; word-spacing: normal;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                    &#039;&amp;lt;strong&amp;gt;KEBIJAKAN PENGUNCIAN DAN PROTEKSI HALAMAN:&amp;lt;/strong&amp;gt; &#039; +&lt;br /&gt;
                                    &#039;Sebagai langkah preventif demi menjaga integritas data dan mematuhi standar privasi serta validitas ekosistem Mippedia Foundation, halaman data yang terisolasi ini telah dialihkan ke dalam mode proteksi penuh dan dikunci secara otomatis oleh sistem keamanan. Pengguna umum, kontributor non-pengurus, maupun mesin pembaca otomatis tidak diizinkan melakukan penyuntingan langsung (*read-only mode*) pada elemen data terstruktur di halaman ini. Kebijakan penguncian ini diterapkan secara ketat untuk menghindari manipulasi data mentah sepihak, meminimalkan risiko vandalisme tak terlihat, serta mencegah terjadinya anomali skrip (*visual script error*) yang berpotensi merusak struktur database repositori secara global.&#039; +&lt;br /&gt;
                                &#039;&amp;lt;/p&amp;gt;&#039; +&lt;br /&gt;
                                &lt;br /&gt;
                                &#039;&amp;lt;p style=&amp;quot;margin-bottom: 16px; text-align: left; letter-spacing: normal; word-spacing: normal;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                    &#039;&amp;lt;strong&amp;gt;KONSEKUENSI DAN REGULASI PENGAPUSAN PERMANEN:&amp;lt;/strong&amp;gt; &#039; +&lt;br /&gt;
                                    &#039;Sesuai dengan regulasi pemeliharaan ruang penyimpanan server, entitas data tanpa rujukan hanya diklasifikasikan sebagai data konsumsi sementara (*temporary cache entry*). Jika dalam batas waktu evaluasi berkala yang ditentukan item ini tetap dibiarkan kosong tanpa adanya tindakan penyelamatan berupa pembuatan artikel baru, maka skrip pembersihan otomatis (*cron-job cleaner*) bersama Dewan Moderator Mippedia Community akan melakukan tindakan penghapusan permanen secara menyeluruh (*Hard Purge / Delete*). Setelah proses penghapusan dilakukan, seluruh data terkait entitas ini akan dihapus dari server untuk mengoptimalkan ruang alokasi database dan menjaga stabilitas performa jaringan.&#039; +&lt;br /&gt;
                                &#039;&amp;lt;/p&amp;gt;&#039; +&lt;br /&gt;
                                &lt;br /&gt;
                                &#039;&amp;lt;p style=&amp;quot;margin-bottom: 0; text-align: left; letter-spacing: normal; word-spacing: normal;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                    &#039;&amp;lt;strong&amp;gt;PANDUAN PEMULIHAN BAGI KONTRIBUTOR:&amp;lt;/strong&amp;gt; &#039; +&lt;br /&gt;
                                    &#039;Satu-satunya cara untuk memulihkan status entitas data ini dan membuka kembali akses penyuntingannya adalah dengan membuat dokumen artikel rujukan yang sah pada salah satu pilar ekosistem Mippedia. Anda sangat disarankan untuk segera memulai pembuatan draf artikel baru melalui salah satu tombol akselerasi instan di bawah ini. Pastikan artikel yang Anda buat memuat informasi yang valid, ditulis dengan sudut pandang netral, serta dilengkapi dengan referensi literatur yang kredibel agar sistem sinkronisasi dapat memetakan kembali dan menormalkan halaman data ini secara otomatis.&#039; +&lt;br /&gt;
                                &#039;&amp;lt;/p&amp;gt;&#039; +&lt;br /&gt;
                            &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
                            &lt;br /&gt;
                            &#039;&amp;lt;!-- 🚀 INSTANT ACTION HUB (3 TOMBOL AKSES) --&amp;gt;&#039; +&lt;br /&gt;
                            &#039;&amp;lt;div class=&amp;quot;mip-btn-container&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                &#039;&amp;lt;a href=&amp;quot;&#039; + createUrlID + &#039;&amp;quot; target=&amp;quot;_blank&amp;quot; class=&amp;quot;mip-action-btn&amp;quot;&amp;gt;Buat Artikel ID&amp;lt;/a&amp;gt;&#039; +&lt;br /&gt;
                                &#039;&amp;lt;a href=&amp;quot;&#039; + createUrlEN + &#039;&amp;quot; target=&amp;quot;_blank&amp;quot; class=&amp;quot;mip-action-btn&amp;quot;&amp;gt;Buat Artikel EN&amp;lt;/a&amp;gt;&#039; +&lt;br /&gt;
                                &#039;&amp;lt;a href=&amp;quot;&#039; + createUrlConcise + &#039;&amp;quot; target=&amp;quot;_blank&amp;quot; class=&amp;quot;mip-action-btn&amp;quot;&amp;gt;Buat Artikel Ringkas&amp;lt;/a&amp;gt;&#039; +&lt;br /&gt;
                            &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
&lt;br /&gt;
                            &#039;&amp;lt;!-- Catatan Kaki --&amp;gt;&#039; +&lt;br /&gt;
                            &#039;&amp;lt;div style=&amp;quot;font-size: 0.82em; color: #a0a0a0; line-height: 1.4; font-style: italic; border-top: 1px solid #f0f0f0; padding-top: 15px; text-align: center;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                &#039;Informasi Sistem: Item data yang tidak terikat dengan artikel ensiklopedia apa pun dalam ekosistem Mippedia akan dihapus secara otomatis oleh pengurus dalam waktu dekat.&#039; +&lt;br /&gt;
                            &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
                        &#039;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
                    $mainContent.prepend(noticeHtml);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                $descSection.hide();&lt;br /&gt;
&lt;br /&gt;
                if (!isSysop) {&lt;br /&gt;
                    $editElements.css({ &#039;pointer-events&#039;: &#039;none&#039;, &#039;opacity&#039;: &#039;0.3&#039;, &#039;cursor&#039;: &#039;not-allowed&#039; }).hide();&lt;br /&gt;
                    $(document).on(&#039;keydown.miplock&#039;, function(e) {&lt;br /&gt;
                        if (e.key.toLowerCase() === &#039;e&#039; &amp;amp;&amp;amp; !$(e.target).is(&#039;input, textarea&#039;)) {&lt;br /&gt;
                            e.preventDefault();&lt;br /&gt;
                            return false;&lt;br /&gt;
                        }&lt;br /&gt;
                    });&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                mw.config.set(&#039;wgRobotsPolicies&#039;, { &#039;index&#039;: &#039;noindex&#039;, &#039;follow&#039;: &#039;nofollow&#039; });&lt;br /&gt;
                if ($metaRobots.length) {&lt;br /&gt;
                    $metaRobots.attr(&#039;content&#039;, &#039;noindex, nofollow&#039;);&lt;br /&gt;
                } else {&lt;br /&gt;
                    $(&#039;head&#039;).append(&#039;&amp;lt;meta name=&amp;quot;robots&amp;quot; content=&amp;quot;noindex, nofollow&amp;quot;&amp;gt;&#039;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
            } else {&lt;br /&gt;
                $(&#039;body&#039;).removeClass(&#039;mip-isolated-active&#039;);&lt;br /&gt;
                if ($existingNotice.length) $existingNotice.remove();&lt;br /&gt;
                $descSection.show();&lt;br /&gt;
&lt;br /&gt;
                if (!isSysop) {&lt;br /&gt;
                    $(document).off(&#039;keydown.miplock&#039;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                mw.config.set(&#039;wgRobotsPolicies&#039;, { &#039;index&#039;: &#039;index&#039;, &#039;follow&#039;: &#039;follow&#039; });&lt;br /&gt;
                if ($metaRobots.length) $metaRobots.attr(&#039;content&#039;, &#039;index, follow&#039;);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // --- SISTEM PRIORITAS ---&lt;br /&gt;
        var globalEnTitle = cached.enTitle || &amp;quot;&amp;quot;; &lt;br /&gt;
&lt;br /&gt;
        function init() {&lt;br /&gt;
            var pPrimary = projects[0]; &lt;br /&gt;
            $.ajax({&lt;br /&gt;
                url: pPrimary.url,&lt;br /&gt;
                data: { action: &#039;query&#039;, prop: &#039;revisions|pageimages|langlinks&#039;, lllang: &#039;en&#039;, rvprop: &#039;timestamp&#039;, piprop: &#039;thumbnail&#039;, pithumbsize: 150, titles: pageTitle, format: &#039;json&#039;, origin: &#039;*&#039; },&lt;br /&gt;
                dataType: &#039;json&#039;,&lt;br /&gt;
                success: function(res) {&lt;br /&gt;
                    var pg = res.query.pages, id = Object.keys(pg)[0];&lt;br /&gt;
                    var latestTS = (id != &amp;quot;-1&amp;quot;) ? pg[id].revisions[0].timestamp : &amp;quot;0&amp;quot;;&lt;br /&gt;
                    var thumbUrl = (id != &amp;quot;-1&amp;quot; &amp;amp;&amp;amp; pg[id].thumbnail) ? pg[id].thumbnail.source : &amp;quot;&amp;quot;;&lt;br /&gt;
                    &lt;br /&gt;
                    if (id != &amp;quot;-1&amp;quot; &amp;amp;&amp;amp; pg[id].langlinks &amp;amp;&amp;amp; pg[id].langlinks[0]) {&lt;br /&gt;
                        globalEnTitle = pg[id].langlinks[0][&#039;*&#039;];&lt;br /&gt;
                    }&lt;br /&gt;
&lt;br /&gt;
                    if (cached.content &amp;amp;&amp;amp; cached.ts === latestTS &amp;amp;&amp;amp; latestTS !== &amp;quot;0&amp;quot; &amp;amp;&amp;amp; !cached.isEmpty) {&lt;br /&gt;
                        toggleMippediaLayout(false);&lt;br /&gt;
                        renderAll(cached.p, cached.content, cached.isTrans, cached.orig, cached.img, cached.customUrl, cached.enTitle);&lt;br /&gt;
                    } else { &lt;br /&gt;
                        fetchPriorityData(0, latestTS, thumbUrl); &lt;br /&gt;
                    }&lt;br /&gt;
                },&lt;br /&gt;
                error: function() { &lt;br /&gt;
                    if (cached.content) {&lt;br /&gt;
                        toggleMippediaLayout(cached.isEmpty || false);&lt;br /&gt;
                        if (!cached.isEmpty) renderAll(cached.p, cached.content, cached.isTrans, cached.orig, cached.img, cached.customUrl, cached.enTitle);&lt;br /&gt;
                    } &lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        function fetchPriorityData(index, newTS, img) {&lt;br /&gt;
            if (index &amp;gt;= projects.length) {&lt;br /&gt;
                localStorage.setItem(cacheKey, JSON.stringify({isEmpty: true, ts: newTS, content: &amp;quot;&amp;quot;}));&lt;br /&gt;
                toggleMippediaLayout(true);&lt;br /&gt;
                return;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            var p = projects[index];&lt;br /&gt;
&lt;br /&gt;
            if (p.id === &#039;en&#039;) {&lt;br /&gt;
                if (!globalEnTitle) {&lt;br /&gt;
                    $.ajax({&lt;br /&gt;
                        url: &#039;https://concise.mippedia.org/api.php&#039;,&lt;br /&gt;
                        data: { action: &#039;query&#039;, prop: &#039;langlinks&#039;, lllang: &#039;en&#039;, titles: pageTitle, format: &#039;json&#039;, origin: &#039;*&#039; },&lt;br /&gt;
                        dataType: &#039;json&#039;,&lt;br /&gt;
                        async: false, &lt;br /&gt;
                        success: function(cRes) {&lt;br /&gt;
                            var cPg = cRes.query.pages, cId = Object.keys(cPg)[0];&lt;br /&gt;
                            if (cId != &amp;quot;-1&amp;quot; &amp;amp;&amp;amp; cPg[cId].langlinks &amp;amp;&amp;amp; cPg[cId].langlinks[0]) {&lt;br /&gt;
                                globalEnTitle = cPg[cId].langlinks[0][&#039;*&#039;];&lt;br /&gt;
                            }&lt;br /&gt;
                        }&lt;br /&gt;
                    });&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                if (globalEnTitle) {&lt;br /&gt;
                    $.ajax({&lt;br /&gt;
                        url: p.url,&lt;br /&gt;
                        data: { action: &#039;query&#039;, prop: &#039;extracts&#039;, exintro: 1, explaintext: 1, titles: globalEnTitle, format: &#039;json&#039;, origin: &#039;*&#039; },&lt;br /&gt;
                        dataType: &#039;json&#039;,&lt;br /&gt;
                        success: function(data) {&lt;br /&gt;
                            var pages = data.query.pages, pageId = Object.keys(pages)[0];&lt;br /&gt;
                            if (pageId != &amp;quot;-1&amp;quot; &amp;amp;&amp;amp; pages[pageId].extract) {&lt;br /&gt;
                                var extract = cleanExtract(pages[pageId].extract);&lt;br /&gt;
                                finalize(p, extract, false, &amp;quot;&amp;quot;, newTS, img, p.base + encodeURIComponent(globalEnTitle), globalEnTitle);&lt;br /&gt;
                            } else {&lt;br /&gt;
                                fetchPriorityData(index + 1, newTS, img);&lt;br /&gt;
                            }&lt;br /&gt;
                        },&lt;br /&gt;
                        error: function() { fetchPriorityData(index + 1, newTS, img); }&lt;br /&gt;
                    });&lt;br /&gt;
                } else {&lt;br /&gt;
                    fetchPriorityData(index + 1, newTS, img);&lt;br /&gt;
                }&lt;br /&gt;
            } else {&lt;br /&gt;
                $.ajax({&lt;br /&gt;
                    url: p.url,&lt;br /&gt;
                    data: { action: &#039;query&#039;, prop: &#039;extracts&#039;, exintro: 1, explaintext: 1, titles: pageTitle, format: &#039;json&#039;, origin: &#039;*&#039; },&lt;br /&gt;
                    dataType: &#039;json&#039;,&lt;br /&gt;
                    success: function(data) {&lt;br /&gt;
                        var pages = data.query.pages, pageId = Object.keys(pages)[0];&lt;br /&gt;
                        if (pageId != &amp;quot;-1&amp;quot; &amp;amp;&amp;amp; pages[pageId].extract) {&lt;br /&gt;
                            var extract = cleanExtract(pages[pageId].extract);&lt;br /&gt;
                            finalize(p, extract, false, &amp;quot;&amp;quot;, newTS, img, p.base + encodeURIComponent(pageTitle), globalEnTitle); &lt;br /&gt;
                        } else {&lt;br /&gt;
                            fetchPriorityData(index + 1, newTS, img);&lt;br /&gt;
                        }&lt;br /&gt;
                    },&lt;br /&gt;
                    error: function() { fetchPriorityData(index + 1, newTS, img); }&lt;br /&gt;
                });&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        function finalize(p, c, t, o, ts, img, customUrl, enTitle) {&lt;br /&gt;
            localStorage.setItem(cacheKey, JSON.stringify({isEmpty: false, p:p, content:c, isTrans:t, orig:o, ts:ts, img:img, customUrl: customUrl, enTitle: enTitle}));&lt;br /&gt;
            toggleMippediaLayout(false); &lt;br /&gt;
            renderAll(p, c, t, o, img, customUrl, enTitle);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        function renderAll(p, currentText, isTranslated, originalText, img, customUrl, enTitle) {&lt;br /&gt;
            var processedText = applyAutoBold(applyDynamicContext(currentText));&lt;br /&gt;
            var thumbHtml = img ? &#039;&amp;lt;div style=&amp;quot;float: right; margin-left: 15px; margin-bottom: 10px; border: 1px solid #ddd; padding: 3px; background: #fff; border-radius: 4px; box-shadow: 0 2px 4px rgba(0,0,0,0.1);&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;&#039;+img+&#039;&amp;quot; style=&amp;quot;max-width: 100px; display: block; height: auto;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039; : &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
            if (!$mainContent.find(&#039;#mip-desc-section&#039;).length) {&lt;br /&gt;
                $mainContent.prepend($descSection);&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            $descSection.show();&lt;br /&gt;
            $descBox.show().html(thumbHtml + applySummary(processedText) + &#039;&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;);&lt;br /&gt;
            &lt;br /&gt;
            var targetLink = customUrl ? customUrl : p.base + encodeURIComponent(pageTitle);&lt;br /&gt;
            var footer = &#039;&amp;lt;div style=&amp;quot;font-size: 0.9em; color: #777;&amp;quot;&amp;gt;Sumber : &amp;lt;a href=&amp;quot;&#039; + targetLink + &#039;&amp;quot; target=&amp;quot;_blank&amp;quot; style=&amp;quot;color: #6a5acd; font-weight: bold; text-decoration: none;&amp;quot;&amp;gt;&#039; + p.name + &#039;.&amp;lt;/a&amp;gt;&#039;;&lt;br /&gt;
            if (isTranslated) { footer += &#039;&amp;lt;br&amp;gt;&amp;lt;span style=&amp;quot;font-size: 0.85em; font-style: italic;&amp;quot;&amp;gt;(Diterjemahkan secara otomatis)&amp;lt;/span&amp;gt; &amp;lt;span id=&amp;quot;mip-toggle-orig&amp;quot; style=&amp;quot;color: #6a5acd; cursor: pointer; text-decoration: underline; margin-left: 5px;&amp;quot;&amp;gt;Tampilkan versi asli&amp;lt;/span&amp;gt;&#039;; }&lt;br /&gt;
            $sourceInfo.show().html(footer);&lt;br /&gt;
            &lt;br /&gt;
            buildSmartLinks(p.id, enTitle);&lt;br /&gt;
            &lt;br /&gt;
            $(document).off(&#039;click&#039;, &#039;.mip-read-btn&#039;).on(&#039;click&#039;, &#039;.mip-read-btn&#039;, function() { $(this).hide(); $(&#039;.mip-dots&#039;).hide(); $(&#039;.mip-more&#039;).fadeIn(); });&lt;br /&gt;
            $(document).off(&#039;click&#039;, &#039;#mip-toggle-orig&#039;).on(&#039;click&#039;, &#039;#mip-toggle-orig&#039;, function() {&lt;br /&gt;
                var isOrig = ($(this).text() === &#039;Tampilkan versi asli&#039;);&lt;br /&gt;
                var textToDisplay = applyAutoBold(applyDynamicContext(isOrig ? originalText : currentText));&lt;br /&gt;
                $descBox.html(thumbHtml + applySummary(textToDisplay) + &#039;&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;);&lt;br /&gt;
                $(this).text(isOrig ? &#039;Tampilkan terjemahan&#039; : &#039;Tampilkan versi asli&#039;);&lt;br /&gt;
            });&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        init();&lt;br /&gt;
    });&lt;br /&gt;
})();&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================&lt;br /&gt;
   🚀 MIPPEDIA DATA - CORE SYSTEM (ULTIMATE BUNDLE)&lt;br /&gt;
   Status: FINAL &amp;amp; REVISED (Visual Fix + Permission Logic)&lt;br /&gt;
   Fix: Mobile Responsive Notification Position&lt;br /&gt;
   ========================================================== */&lt;br /&gt;
&lt;br /&gt;
(function() {&lt;br /&gt;
    $(document).ready(function() {&lt;br /&gt;
        // --- 1. FILTER GLOBAL (Namespace 0 &amp;amp; Bukan Halaman Utama) ---&lt;br /&gt;
        if (mw.config.get(&#039;wgNamespaceNumber&#039;) !== 0 || &lt;br /&gt;
            mw.config.get(&#039;wgIsMainPage&#039;) || &lt;br /&gt;
            mw.config.get(&#039;wgAction&#039;) !== &#039;view&#039;) return;&lt;br /&gt;
&lt;br /&gt;
        var pageTitle = mw.config.get(&#039;wgPageName&#039;);&lt;br /&gt;
        var dataPage = &#039;MediaWiki:Sitelinks-Data.json&#039;;&lt;br /&gt;
        var userGroups = mw.config.get(&#039;wgUserGroups&#039;);&lt;br /&gt;
        var isAdmin = userGroups.includes(&#039;sysop&#039;) || userGroups.includes(&#039;interface-admin&#039;);&lt;br /&gt;
&lt;br /&gt;
        var projects = {&lt;br /&gt;
            &#039;id&#039;: { name: &#039;ID&#039;, url: &#039;https://id.mippedia.org/api.php&#039;, base: &#039;https://id.mippedia.org/wiki/&#039;, color: &#039;#6a5acd&#039; },&lt;br /&gt;
            &#039;en&#039;: { name: &#039;EN&#039;, url: &#039;https://en.mippedia.org/api.php&#039;, base: &#039;https://en.mippedia.org/wiki/&#039;, color: &#039;#4169e1&#039; },&lt;br /&gt;
            &#039;concise&#039;: { name: &#039;Concise&#039;, url: &#039;https://concise.mippedia.org/api.php&#039;, base: &#039;https://concise.mippedia.org/wiki/&#039;, color: &#039;#20b2aa&#039; }&lt;br /&gt;
        };&lt;br /&gt;
&lt;br /&gt;
        // --- 2. KOTAK NOTIFIKASI INFORMASI MODERN (FIXED MOBILE POSITION) ---&lt;br /&gt;
        function showBoxNotif(title, msg, type) {&lt;br /&gt;
            $(&#039;.mip-box-notif&#039;).remove();&lt;br /&gt;
            var theme = type === &#039;success&#039; ? {bg:&#039;#e6fffa&#039;, border:&#039;#38b2ac&#039;, text:&#039;#234e52&#039;, icon:&#039;&#039;} : &lt;br /&gt;
                        {bg:&#039;#fff5f5&#039;, border:&#039;#f56565&#039;, text:&#039;#742a2a&#039;, icon:&#039;&#039;};&lt;br /&gt;
            &lt;br /&gt;
            // Logika CSS Responsif untuk posisi&lt;br /&gt;
            var isMobile = window.innerWidth &amp;lt;= 768;&lt;br /&gt;
            var desktopStyle = &amp;quot;top:25px; right:25px; width:350px;&amp;quot;;&lt;br /&gt;
            var mobileStyle = &amp;quot;top:15px; left:50%; transform:translateX(-50%); width:90%; max-width:400px;&amp;quot;;&lt;br /&gt;
            var finalPos = isMobile ? mobileStyle : desktopStyle;&lt;br /&gt;
&lt;br /&gt;
            var $notif = $(&#039;&amp;lt;div class=&amp;quot;mip-box-notif&amp;quot; style=&amp;quot;position:fixed; &#039; + finalPos + &#039; background:&#039;+theme.bg+&#039;; border-left:6px solid &#039;+theme.border+&#039;; padding:18px; z-index:10001; border-radius:12px; box-shadow:0 15px 35px rgba(0,0,0,0.2); font-family:sans-serif; animation:mipSlideIn 0.4s ease-out;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                &#039;&amp;lt;div style=&amp;quot;display:flex; align-items:center; gap:12px; margin-bottom:8px;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                    &#039;&amp;lt;span style=&amp;quot;font-size:20px;&amp;quot;&amp;gt;&#039;+theme.icon+&#039;&amp;lt;/span&amp;gt;&#039; +&lt;br /&gt;
                    &#039;&amp;lt;strong style=&amp;quot;color:&#039;+theme.text+&#039;; font-size:15px; letter-spacing:-0.3px;&amp;quot;&amp;gt;&#039;+title+&#039;&amp;lt;/strong&amp;gt;&#039; +&lt;br /&gt;
                &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
                &#039;&amp;lt;p style=&amp;quot;margin:0; font-size:13px; color:&#039;+theme.text+&#039;; line-height:1.6; opacity:0.9;&amp;quot;&amp;gt;&#039;+msg+&#039;&amp;lt;/p&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;/div&amp;gt;&#039;).appendTo(&#039;body&#039;);&lt;br /&gt;
&lt;br /&gt;
            setTimeout(function() { $notif.fadeOut(function(){ $(this).remove(); }); }, 5500);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // --- 3. UI GENERATOR (DIPERTEBAL) ---&lt;br /&gt;
&lt;br /&gt;
      // A. Header Pro&lt;br /&gt;
        var headerHtml = &#039;&amp;lt;div id=&amp;quot;mip-header&amp;quot; style=&amp;quot;background:#f8f9fa; border:1px solid #ddd; border-left:6px solid #6a5acd; padding:18px; margin-bottom:25px; border-radius:6px; box-shadow:inset 0 0 10px rgba(0,0,0,0.02);&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;div style=&amp;quot;display:flex; align-items:center; gap:10px; margin-bottom:8px;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;span style=&amp;quot;background:#6a5acd; color:white; padding:3px 10px; border-radius:4px; font-size:11px; font-weight:bold; text-transform:uppercase; letter-spacing:0.5px;&amp;quot;&amp;gt;Basis Data Terstruktur&amp;lt;/span&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;strong style=&amp;quot;color:#111; font-size:16px;&amp;quot;&amp;gt;&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;p style=&amp;quot;margin:0; font-size:13px; color:#444; line-height:1.6;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
            &#039;Halaman ini adalah metadata entitas repositori pusat yang disinkronisasi secara otomatis lintas ekosistem. &#039; +&lt;br /&gt;
            &#039;Informasi di bawah ini bersifat teknis dan bebas digunakan sebagai referensi data terbuka bagi semua orang di seluruh dunia berdasarkan lisensi atribusi yang sesuai.&#039; +&lt;br /&gt;
            &#039;&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
        // B. Connector Box&lt;br /&gt;
        var editBtn = &#039;&amp;lt;span id=&amp;quot;mip-open-editor&amp;quot; style=&amp;quot;cursor:pointer; font-size:20px; color:#6a5acd; opacity:0.8; transition:0.3s;&amp;quot; onmouseover=&amp;quot;this.style.opacity=1&amp;quot; onmouseout=&amp;quot;this.style.opacity=0.8&amp;quot;&amp;gt;✎&amp;lt;/span&amp;gt;&#039;;&lt;br /&gt;
        var connectorHtml = &#039;&amp;lt;div id=&amp;quot;mip-connector&amp;quot; style=&amp;quot;background:#fff; border:1px solid #e2e8f0; border-radius:16px; padding:22px; margin-top:30px; box-shadow:0 10px 25px rgba(0,0,0,0.04);&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;div style=&amp;quot;display:flex; justify-content:space-between; align-items:center; margin-bottom:20px;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;strong style=&amp;quot;font-size:15px; color:#1a202c; display:flex; align-items:center; gap:8px;&amp;quot;&amp;gt;ID situs&amp;lt;/strong&amp;gt;&#039;+editBtn+&#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;div id=&amp;quot;mip-display&amp;quot; style=&amp;quot;display:flex; gap:12px; flex-wrap:wrap;&amp;quot;&amp;gt;&amp;lt;small style=&amp;quot;color:#a0aec0;&amp;quot;&amp;gt;Mensinkronisasi basis data...&amp;lt;/small&amp;gt;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;div id=&amp;quot;mip-editor&amp;quot; style=&amp;quot;display:none; margin-top:20px; border-top:2px solid #f7fafc; padding-top:20px;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                Object.keys(projects).map(p =&amp;gt; &#039;&amp;lt;div style=&amp;quot;margin-bottom:12px; display:flex; gap:10px;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;width:75px; font-size:11px; font-weight:bold; background:#edf2f7; display:flex; align-items:center; justify-content:center; border-radius:8px; color:#4a5568;&amp;quot;&amp;gt;&#039;+projects[p].name+&#039;&amp;lt;/span&amp;gt;&amp;lt;input type=&amp;quot;text&amp;quot; id=&amp;quot;in-&#039;+p+&#039;&amp;quot; placeholder=&amp;quot;Judul artikel di &#039;+projects[p].name+&#039;...&amp;quot; style=&amp;quot;flex:1; padding:10px; font-size:13px; border:1.5px solid #e2e8f0; border-radius:10px; outline:none; transition:0.2s;&amp;quot; onfocus=&amp;quot;this.style.borderColor=\&#039;#6a5acd\&#039;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;).join(&#039;&#039;) +&lt;br /&gt;
                &#039;&amp;lt;button id=&amp;quot;mip-save&amp;quot; style=&amp;quot;width:100%; padding:14px; background:#6a5acd; color:white; border:none; border-radius:12px; font-size:14px; font-weight:bold; cursor:pointer; box-shadow:0 4px 12px rgba(106,90,205,0.3); transition:0.3s;&amp;quot;&amp;gt;Terbitkan&amp;lt;/button&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
        // C. Footer Lisensi Lengkap&lt;br /&gt;
        var footerHtml = &#039;&amp;lt;div id=&amp;quot;mip-footer&amp;quot; style=&amp;quot;background:#fafafa; border:1px solid #eee; border-radius:10px; padding:20px; margin-top:30px; text-align:center;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;div style=&amp;quot;font-size:11px; color:#718096; font-weight:800; text-transform:uppercase; letter-spacing:1px; margin-bottom:10px;&amp;quot;&amp;gt;Lisensi, Atribusi &amp;amp; Penggunaan Data&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;p style=&amp;quot;margin:0 0 10px; font-size:13px; color:#4a5568; line-height:1.6;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
            &#039;Seluruh data terstruktur yang tersaji dalam repositori ini merupakan milik publik dan tersedia di bawah lisensi resmi &#039; +&lt;br /&gt;
            &#039;&amp;lt;a href=&amp;quot;https://creativecommons.org/licenses/by-sa/4.0/&amp;quot; target=&amp;quot;_blank&amp;quot; style=&amp;quot;color:#6a5acd; text-decoration:none; font-weight:700;&amp;quot;&amp;gt;Creative Commons Attribution-ShareAlike 4.0 International&amp;lt;/a&amp;gt;.&#039; +&lt;br /&gt;
            &#039;&amp;lt;/p&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;p style=&amp;quot;margin:0; font-size:12px; color:#a0aec0;&amp;quot;&amp;gt;Akses API dan penggunaan data secara massal wajib mencantumkan atribusi kepada &amp;lt;strong&amp;gt;Mippedia Community&amp;lt;/strong&amp;gt; selaku pengelola proyek.&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
        // Injeksi&lt;br /&gt;
        $(&#039;#mw-content-text&#039;).prepend(headerHtml);&lt;br /&gt;
        $(&#039;#mw-content-text&#039;).append(connectorHtml).append(footerHtml);&lt;br /&gt;
&lt;br /&gt;
        // --- 4. LOGIC ENGINE ---&lt;br /&gt;
        function loadLinks() {&lt;br /&gt;
            new mw.Api().get({ action: &#039;query&#039;, prop: &#039;revisions&#039;, titles: dataPage, rvprop: &#039;content&#039;, formatversion: 2 }).done(function(d) {&lt;br /&gt;
                var json = d.query.pages[0].revisions ? JSON.parse(d.query.pages[0].revisions[0].content) : {};&lt;br /&gt;
                var data = json[pageTitle] || {};&lt;br /&gt;
                var $box = $(&#039;#mip-display&#039;).empty();&lt;br /&gt;
                var found = false;&lt;br /&gt;
                Object.keys(projects).forEach(p =&amp;gt; {&lt;br /&gt;
                    if (data[p]) {&lt;br /&gt;
                        found = true;&lt;br /&gt;
                        $box.append(&#039;&amp;lt;a style=&amp;quot;background:&#039;+projects[p].color+&#039;; color:white; padding:8px 16px; border-radius:10px; font-size:12px; font-weight:bold; text-decoration:none; border-bottom:3px solid rgba(0,0,0,0.15);&amp;quot; href=&amp;quot;&#039;+projects[p].base+encodeURIComponent(data[p])+&#039;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Mippedia &#039;+projects[p].name+&#039;: &#039;+data[p]+&#039;&amp;lt;/a&amp;gt;&#039;);&lt;br /&gt;
                        $(&#039;#in-&#039; + p).val(data[p]);&lt;br /&gt;
                    }&lt;br /&gt;
                });&lt;br /&gt;
                if (!found) $box.html(&#039;&amp;lt;em style=&amp;quot;color:#cbd5e0; font-size:13px;&amp;quot;&amp;gt;Entitas ini belum terhubung ke cabang Mippedia manapun.&amp;lt;/em&amp;gt;&#039;);&lt;br /&gt;
            });&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        $(document).on(&#039;click&#039;, &#039;#mip-save&#039;, function() {&lt;br /&gt;
            // CEK IZIN: Tolak user biasa&lt;br /&gt;
            if (!isAdmin) {&lt;br /&gt;
                showBoxNotif(&#039;Suntingan anda tidak di terbitkan&#039;, &#039;Halaman ini dilindungi. Hanya &amp;lt;b&amp;gt;Pengurus&amp;lt;/b&amp;gt; yang memiliki otoritas untuk memodifikasi metadata ekosistem secara langsung.&#039;, &#039;error&#039;);&lt;br /&gt;
                return;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            var $btn = $(this).text(&#039;Sedang Memvalidasi...&#039;).prop(&#039;disabled&#039;, true);&lt;br /&gt;
            var api = new mw.Api();&lt;br /&gt;
            var newData = {}, promises = [], invalid = [], isDel = true;&lt;br /&gt;
&lt;br /&gt;
            Object.keys(projects).forEach(p =&amp;gt; {&lt;br /&gt;
                var v = $(&#039;#in-&#039; + p).val().trim();&lt;br /&gt;
                if (v) {&lt;br /&gt;
                    isDel = false;&lt;br /&gt;
                    promises.push($.ajax({ url: projects[p].url, data: { action: &#039;query&#039;, titles: v, format: &#039;json&#039;, origin: &#039;*&#039; }, dataType: &#039;json&#039; }).done(function(res){&lt;br /&gt;
                        if (res.query.pages[&amp;quot;-1&amp;quot;]) invalid.push(projects[p].name); else newData[p] = v;&lt;br /&gt;
                    }));&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
&lt;br /&gt;
            $.when.apply($, promises).then(function() {&lt;br /&gt;
                if (invalid.length &amp;gt; 0) {&lt;br /&gt;
                    showBoxNotif(&#039;Suntingan anda tidak di terbitkan&#039;, &#039;Artikel dengan judul tersebut tidak ditemukan di basis data Mippedia cabang: &#039; + invalid.join(&#039;, &#039;) + &#039;. Periksa kembali ejaan dan kapitalisasi.&#039;, &#039;error&#039;);&lt;br /&gt;
                    $btn.text(&#039;Terbitkan&#039;).prop(&#039;disabled&#039;, false); return;&lt;br /&gt;
                }&lt;br /&gt;
                &lt;br /&gt;
                api.get({ action: &#039;query&#039;, prop: &#039;revisions&#039;, titles: dataPage, rvprop: &#039;content&#039;, formatversion: 2 }).done(function(r) {&lt;br /&gt;
                    var full = r.query.pages[0].revisions ? JSON.parse(r.query.pages[0].revisions[0].content) : {};&lt;br /&gt;
                    if (isDel) delete full[pageTitle]; else full[pageTitle] = newData;&lt;br /&gt;
                    &lt;br /&gt;
                    api.postWithEditToken({ action: &#039;edit&#039;, title: dataPage, text: JSON.stringify(full, null, 2), summary: &#039;Sync Metadata: &#039; + pageTitle })&lt;br /&gt;
                    .done(function() {&lt;br /&gt;
                        showBoxNotif(&#039;Suntingan anda berhasil di terbitkan!&#039;, &#039;Metadata entitas berhasil disinkronisasi ke seluruh jaringan ekosistem Mippedia.&#039;, &#039;success&#039;);&lt;br /&gt;
                        setTimeout(function(){ location.reload(); }, 1500);&lt;br /&gt;
                    }).fail(function(c) {&lt;br /&gt;
                        showBoxNotif(&#039;Gagal Menyimpan&#039;, &#039;Terjadi kesalahan pada token API atau koneksi server. Kode: &#039; + c, &#039;error&#039;);&lt;br /&gt;
                        $btn.text(&#039;Simpan &amp;amp; Sinkronkan Data&#039;).prop(&#039;disabled&#039;, false);&lt;br /&gt;
                    });&lt;br /&gt;
                });&lt;br /&gt;
            });&lt;br /&gt;
        });&lt;br /&gt;
&lt;br /&gt;
        $(document).on(&#039;click&#039;, &#039;#mip-open-editor&#039;, function() { $(&#039;#mip-editor&#039;).slideToggle(); });&lt;br /&gt;
        loadLinks();&lt;br /&gt;
    });&lt;br /&gt;
})();&lt;br /&gt;
&lt;br /&gt;
(function() {&lt;br /&gt;
    // Fungsi utama suntik teks&lt;br /&gt;
    function forcePreload() {&lt;br /&gt;
        var ns = mw.config.get(&#039;wgNamespaceNumber&#039;);&lt;br /&gt;
        var pageExists = mw.config.get(&#039;wgArticleId&#039;) &amp;gt; 0;&lt;br /&gt;
        &lt;br /&gt;
        // Cek Namespace Utama &amp;amp; Halaman Baru&lt;br /&gt;
        if (ns === 0 &amp;amp;&amp;amp; !pageExists) {&lt;br /&gt;
            // Cari textarea secara spesifik (Desktop &amp;amp; Mobile punya selector beda)&lt;br /&gt;
            var $textbox = $(&#039;#wpTextbox1, textarea.mw-ui-input, .editor-container textarea&#039;);&lt;br /&gt;
            &lt;br /&gt;
            if ($textbox.length &amp;amp;&amp;amp; $textbox.val().trim() === &amp;quot;&amp;quot;) {&lt;br /&gt;
                var pageName = mw.config.get(&#039;wgTitle&#039;);&lt;br /&gt;
                $textbox.val(&#039;{{Infobox umum\n|nama = &#039; + pageName + &#039;\n}}&#039;);&lt;br /&gt;
                console.log(&amp;quot;Mippedia: Infobox injected!&amp;quot;);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // 1. Jalankan pas halaman beres load&lt;br /&gt;
    $(document).ready(forcePreload);&lt;br /&gt;
&lt;br /&gt;
    // 2. Jalankan tiap ada klik (karena mobile buka editor pake klik tanpa refresh)&lt;br /&gt;
    $(document).on(&#039;click&#039;, function() {&lt;br /&gt;
        setTimeout(forcePreload, 800); // Kasih delay dikit nunggu overlay muncul&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    // 3. Pake MutationObserver buat mantau elemen yang baru muncul secara gaib&lt;br /&gt;
    var observer = new MutationObserver(function() {&lt;br /&gt;
        forcePreload();&lt;br /&gt;
    });&lt;br /&gt;
    observer.observe(document.body, { childList: true, subtree: true });&lt;br /&gt;
})();&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================&lt;br /&gt;
   🚀 MIPPEDIA DATA - CONTENT GUARD (MODIFIED FOR RELATED)&lt;br /&gt;
   ========================================================== */&lt;br /&gt;
(function() {&lt;br /&gt;
    function handleBlock(e) {&lt;br /&gt;
        var ns = mw.config.get(&#039;wgNamespaceNumber&#039;);&lt;br /&gt;
        if (ns !== 0 || mw.config.get(&#039;wgIsMainPage&#039;)) return;&lt;br /&gt;
&lt;br /&gt;
        var $el = $(e.currentTarget);&lt;br /&gt;
        &lt;br /&gt;
        if ($el.closest(&#039;.mw-parser-output&#039;).length &amp;amp;&amp;amp; $el.text().toLowerCase().includes(&#039;buat item&#039;)) {&lt;br /&gt;
            return; &lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        var $textbox = $(&#039;#wpTextbox1, .editor-container textarea, textarea.mw-ui-input&#039;);&lt;br /&gt;
        &lt;br /&gt;
        if ($textbox.length) {&lt;br /&gt;
            var content = $textbox.val() || &amp;quot;&amp;quot;;&lt;br /&gt;
            &lt;br /&gt;
            // Pengecekan: Harus ada {{Infobox ATAU setidaknya ada kode #related&lt;br /&gt;
            var hasInfobox = content.includes(&#039;{{Infobox&#039;);&lt;br /&gt;
            var hasRelated = content.includes(&#039;#related:&#039;);&lt;br /&gt;
&lt;br /&gt;
            if (!hasInfobox &amp;amp;&amp;amp; !hasRelated) {&lt;br /&gt;
                e.preventDefault();&lt;br /&gt;
                e.stopPropagation();&lt;br /&gt;
                e.stopImmediatePropagation();&lt;br /&gt;
&lt;br /&gt;
                window.alert(&amp;quot;SUNTINGAN ANDA TIDAK BISA DI TERBITKAN!\n\nMippedia Data bukan tempat untuk menulis artikel ensiklopedia, Jika anda ingin membuat artikel ensiklopedia bukan di sini tempat nya.\n&amp;quot;);&lt;br /&gt;
                return false;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    $(document).on(&#039;click mousedown touchstart&#039;, &lt;br /&gt;
        &#039;#wpSave, .editor-save, .mw-ui-button.primary, button[type=&amp;quot;submit&amp;quot;], .save-button, .header-action button&#039;, &lt;br /&gt;
        function(e) {&lt;br /&gt;
            handleBlock(e);&lt;br /&gt;
        }&lt;br /&gt;
    );&lt;br /&gt;
&lt;br /&gt;
    window.addEventListener(&#039;submit&#039;, function(e) {&lt;br /&gt;
        handleBlock(e);&lt;br /&gt;
    }, true);&lt;br /&gt;
})();&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================&lt;br /&gt;
   🛡️ MIPPEDIA CORE SYSTEM - NEURAL ENGINE V12&lt;br /&gt;
   Update: Brain Upgrade - Semantic Search &amp;amp; Anti-Duplicate&lt;br /&gt;
   Semua fitur asli (Patroli, Promo, Kategori) tetap UTUH.&lt;br /&gt;
   ========================================================== */&lt;br /&gt;
mw.hook(&#039;postEdit&#039;).add(function() {&lt;br /&gt;
    var rawUser = mw.config.get(&#039;wgUserName&#039;);&lt;br /&gt;
    var userName = rawUser ? rawUser.replace(/_/g, &#039; &#039;) : &#039;Anonim&#039;;&lt;br /&gt;
    var isPatroli = (userName === &#039;Admin&#039;);&lt;br /&gt;
    &lt;br /&gt;
    if (mw.config.get(&#039;wgNamespaceNumber&#039;) !== 0) return;&lt;br /&gt;
&lt;br /&gt;
    var api = new mw.Api();&lt;br /&gt;
    var pageTitle = mw.config.get(&#039;wgPageName&#039;).replace(/_/g, &#039; &#039;);&lt;br /&gt;
&lt;br /&gt;
    api.get({&lt;br /&gt;
        action: &#039;query&#039;,&lt;br /&gt;
        titles: pageTitle,&lt;br /&gt;
        prop: &#039;revisions|categories|links&#039;,&lt;br /&gt;
        rvprop: &#039;content&#039;,&lt;br /&gt;
        clshow: &#039;!hidden&#039;,&lt;br /&gt;
        pllimit: &#039;max&#039;&lt;br /&gt;
    }).done(function(resData) {&lt;br /&gt;
        var page = resData.query.pages[Object.keys(resData.query.pages)[0]];&lt;br /&gt;
        if (!page || !page.revisions) return;&lt;br /&gt;
&lt;br /&gt;
        var rawContent = page.revisions[0][&#039;*&#039;];&lt;br /&gt;
        var content = rawContent;&lt;br /&gt;
        var summaryParts = [];&lt;br /&gt;
&lt;br /&gt;
        // --- 2. SUPER INTELLIGENCE RELATED (UPGRADE OTAK V12) ---&lt;br /&gt;
        // Cek jumlah related saat ini&lt;br /&gt;
        var currentRelatedMatch = content.match(/\{\{#related:.*?\}\}/g) || [];&lt;br /&gt;
        &lt;br /&gt;
        // Jika kurang dari 3, kita jalankan otak pencarian canggih&lt;br /&gt;
        if (currentRelatedMatch.length &amp;lt; 3) {&lt;br /&gt;
            // Hapus yang lama dulu agar tidak ada duplikat atau &amp;quot;pake yang bekas&amp;quot;&lt;br /&gt;
            content = content.replace(/\n*\{\{#related:.*?\}\}/g, &#039;&#039;);&lt;br /&gt;
&lt;br /&gt;
            // Langkah A: Ambil kandidat dari Search Engine (Ranking Skor)&lt;br /&gt;
            api.get({&lt;br /&gt;
                action: &#039;query&#039;,&lt;br /&gt;
                list: &#039;search&#039;,&lt;br /&gt;
                srsearch: pageTitle, // Gunakan judul sebagai basis pencarian semantic&lt;br /&gt;
                srlimit: 15,&lt;br /&gt;
                srprop: &#039;&#039;&lt;br /&gt;
            }).done(function(searchRes) {&lt;br /&gt;
                var candidates = {};&lt;br /&gt;
&lt;br /&gt;
                // Masukkan hasil pencarian ke pool skor&lt;br /&gt;
                if (searchRes.query &amp;amp;&amp;amp; searchRes.query.search) {&lt;br /&gt;
                    searchRes.query.search.forEach(function(item, index) {&lt;br /&gt;
                        if (item.title === pageTitle) return;&lt;br /&gt;
                        candidates[item.title] = (15 - index); // Skor berdasarkan urutan relevansi&lt;br /&gt;
                    });&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                // Langkah B: Tambah skor jika artikel ada di daftar Link Internal&lt;br /&gt;
                if (page.links) {&lt;br /&gt;
                    page.links.forEach(function(link) {&lt;br /&gt;
                        if (link.title === pageTitle) return;&lt;br /&gt;
                        candidates[link.title] = (candidates[link.title] || 0) + 5; // Bonus skor link&lt;br /&gt;
                    });&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                // Langkah C: Urutkan berdasarkan skor tertinggi (yang paling nyambung)&lt;br /&gt;
                var sortedTitles = Object.keys(candidates).sort(function(a, b) {&lt;br /&gt;
                    return candidates[b] - candidates[a];&lt;br /&gt;
                });&lt;br /&gt;
&lt;br /&gt;
                // Ambil TOP 3&lt;br /&gt;
                var finalRelated = sortedTitles.filter(t =&amp;gt; t.indexOf(&#039;:&#039;) === -1).slice(0, 3);&lt;br /&gt;
&lt;br /&gt;
                if (finalRelated.length &amp;gt; 0) {&lt;br /&gt;
                    var relatedTags = &#039;\n\n&#039; + finalRelated.map(t =&amp;gt; &#039;{{#related: &#039; + t + &#039;}}&#039;).join(&#039;\n&#039;);&lt;br /&gt;
                    content += relatedTags;&lt;br /&gt;
                    summaryParts.push(&#039;NeuralRelated&#039;);&lt;br /&gt;
                }&lt;br /&gt;
                &lt;br /&gt;
                runPatroliAndSave();&lt;br /&gt;
            });&lt;br /&gt;
        } else {&lt;br /&gt;
            runPatroliAndSave();&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        function runPatroliAndSave() {&lt;br /&gt;
            // --- 3. PATROLI ENGINE (FITUR ASLI - TETAP BERFUNGSI) ---&lt;br /&gt;
            if (isPatroli) {&lt;br /&gt;
                var placeholders = [];&lt;br /&gt;
                // Lindungi Brankas: Template, Header, Kategori, Ref, dan Kalimat Pembuka&lt;br /&gt;
                content = content.replace(/(\{\{[\s\S]*?\}\}|==+.*?==+|\[\[Kategori:.*?\]\]|&amp;lt;ref[\s\S]*?&amp;lt;\/ref&amp;gt;|^.*?adalah)/gi, function(match) {&lt;br /&gt;
                    placeholders.push(match);&lt;br /&gt;
                    return &#039;___MIP_SKIP_&#039; + (placeholders.length - 1) + &#039;___&#039;;&lt;br /&gt;
                });&lt;br /&gt;
&lt;br /&gt;
                // Proses Auto-Link (Wajib ambil daftar AllPages dulu)&lt;br /&gt;
                api.get({ action: &#039;query&#039;, list: &#039;allpages&#039;, apnamespace: 0, aplimit: &#039;max&#039; }).done(function(apData) {&lt;br /&gt;
                    var allTitles = apData.query.allpages.map(p =&amp;gt; p.title);&lt;br /&gt;
                    var lowerTitles = allTitles.map(t =&amp;gt; t.toLowerCase());&lt;br /&gt;
&lt;br /&gt;
                    var tokens = content.split(/(\s+|\[\[|\]\])/);&lt;br /&gt;
                    var inLink = false;&lt;br /&gt;
                    for (var i = 0; i &amp;lt; tokens.length; i++) {&lt;br /&gt;
                        if (tokens[i] === &#039;[[&#039; ) { inLink = true; continue; }&lt;br /&gt;
                        if (tokens[i] === &#039;]]&#039; ) { inLink = false; continue; }&lt;br /&gt;
                        if (inLink || tokens[i].trim().length &amp;lt; 3 || tokens[i].includes(&#039;___MIP_SKIP_&#039;)) continue;&lt;br /&gt;
&lt;br /&gt;
                        var wordsInToken = tokens[i].match(/\b\w+\b/g);&lt;br /&gt;
                        if (wordsInToken) {&lt;br /&gt;
                            wordsInToken.forEach(function(word) {&lt;br /&gt;
                                var idx = lowerTitles.indexOf(word.toLowerCase());&lt;br /&gt;
                                if (idx !== -1 &amp;amp;&amp;amp; allTitles[idx] !== pageTitle) {&lt;br /&gt;
                                    tokens[i] = tokens[i].replace(new RegExp(&#039;\\b&#039; + word + &#039;\\b&#039;, &#039;g&#039;), &#039;[[&#039; + allTitles[idx] + &#039;|&#039; + word + &#039;]]&#039;);&lt;br /&gt;
                                }&lt;br /&gt;
                            });&lt;br /&gt;
                        }&lt;br /&gt;
                    }&lt;br /&gt;
                    content = tokens.join(&#039;&#039;);&lt;br /&gt;
                    &lt;br /&gt;
                    // Kembalikan dari Brankas&lt;br /&gt;
                    content = content.replace(/___MIP_SKIP_(\d+)___/g, function(match, id) { return placeholders[id]; });&lt;br /&gt;
&lt;br /&gt;
                    // Bersihkan Link Merah&lt;br /&gt;
                    content = content.replace(/\[\[([^|\]:]+)\]\]/g, function(match, p1) {&lt;br /&gt;
                        return lowerTitles.includes(p1.toLowerCase()) ? match : p1;&lt;br /&gt;
                    });&lt;br /&gt;
&lt;br /&gt;
                    saveAction();&lt;br /&gt;
                });&lt;br /&gt;
            } else {&lt;br /&gt;
                saveAction();&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        function saveAction() {&lt;br /&gt;
            // --- 4. EKSEKUSI ---&lt;br /&gt;
            if (content.trim() !== rawContent.trim()) {&lt;br /&gt;
                api.postWithToken(&#039;edit&#039;, {&lt;br /&gt;
                    action: &#039;edit&#039;,&lt;br /&gt;
                    title: pageTitle,&lt;br /&gt;
                    text: content,&lt;br /&gt;
                    summary: &#039;Mippedia Neural Engine V12: &#039; + summaryParts.join(&#039;, &#039;),&lt;br /&gt;
                    bot: true, markasbot: true&lt;br /&gt;
                }).done(function() { location.reload(); });&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    });&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================&lt;br /&gt;
   🌐 MIPPEDIA SHORTDESC - DATA CENTER (PREMIUM UI)&lt;br /&gt;
   Status: INDEPENDENT &amp;amp; REFINED VISUAL&lt;br /&gt;
   Storage: MediaWiki:ShortDesc-Data.json&lt;br /&gt;
   ========================================================== */&lt;br /&gt;
(function($, mw) {&lt;br /&gt;
    &amp;quot;use strict&amp;quot;;&lt;br /&gt;
    $(document).ready(function() {&lt;br /&gt;
        if (mw.config.get(&#039;wgNamespaceNumber&#039;) !== 0 || mw.config.get(&#039;wgIsMainPage&#039;)) return;&lt;br /&gt;
&lt;br /&gt;
        var pageTitle = mw.config.get(&#039;wgPageName&#039;);&lt;br /&gt;
        var storagePage = &#039;MediaWiki:ShortDesc-Data.json&#039;;&lt;br /&gt;
        var isAdmin = mw.config.get(&#039;wgUserGroups&#039;).some(g =&amp;gt; [&#039;sysop&#039;, &#039;interface-admin&#039;].includes(g));&lt;br /&gt;
&lt;br /&gt;
        var langs = {&lt;br /&gt;
            id: { label: &#039;Mippedia bahasa Indonesia&#039;, short: &#039;ID&#039;, color: &#039;#6366f1&#039; },&lt;br /&gt;
            en: { label: &#039;Mippedia bahasa Inggris&#039;, short: &#039;EN&#039;, color: &#039;#3b82f6&#039; },&lt;br /&gt;
            concise: { label: &#039;Mippedia bahasa Indonesia ringkas&#039;, short: &#039;CON&#039;, color: &#039;#14b8a6&#039; }&lt;br /&gt;
        };&lt;br /&gt;
&lt;br /&gt;
        // UI Box dengan Spasi dan Desain Baru&lt;br /&gt;
        var html = `&lt;br /&gt;
            &amp;lt;div id=&amp;quot;desc-manager&amp;quot; style=&amp;quot;background:#ffffff; border:1px solid #f1f5f9; border-left:4px solid #6366f1; border-radius:12px; padding:20px; margin: 20px 0 25px 0; box-shadow:0 4px 12px rgba(0,0,0,0.03); font-family: -apple-system,BlinkMacSystemFont,&#039;Segoe UI&#039;,Roboto,sans-serif;&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;div style=&amp;quot;display:flex; justify-content:space-between; align-items:center; margin-bottom:12px;&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;span style=&amp;quot;font-size:13px; font-weight:700; color:#475569; text-transform:uppercase; letter-spacing:0.5px; display:flex; align-items:center; gap:6px;&amp;quot;&amp;gt;&lt;br /&gt;
                        Label Deskripsi&lt;br /&gt;
                    &amp;lt;/span&amp;gt;&lt;br /&gt;
                    &amp;lt;span id=&amp;quot;desc-open-editor&amp;quot; style=&amp;quot;cursor:pointer; padding:5px; transition:0.2s;&amp;quot; title=&amp;quot;Edit Deskripsi&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;svg width=&amp;quot;16&amp;quot; height=&amp;quot;16&amp;quot; viewBox=&amp;quot;0 0 24 24&amp;quot; fill=&amp;quot;none&amp;quot; stroke=&amp;quot;#94a3b8&amp;quot; stroke-width=&amp;quot;2&amp;quot; stroke-linecap=&amp;quot;round&amp;quot; stroke-linejoin=&amp;quot;round&amp;quot;&amp;gt;&amp;lt;path d=&amp;quot;M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7&amp;quot;&amp;gt;&amp;lt;/path&amp;gt;&amp;lt;path d=&amp;quot;M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z&amp;quot;&amp;gt;&amp;lt;/path&amp;gt;&amp;lt;/svg&amp;gt;&lt;br /&gt;
                    &amp;lt;/span&amp;gt;&lt;br /&gt;
                &amp;lt;/div&amp;gt;&lt;br /&gt;
                &lt;br /&gt;
                &amp;lt;div id=&amp;quot;desc-status-display&amp;quot; style=&amp;quot;display:flex; flex-direction:column; gap:8px;&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;small style=&amp;quot;color:#94a3b8; font-style:italic;&amp;quot;&amp;gt;Sinkronisasi data...&amp;lt;/small&amp;gt;&lt;br /&gt;
                &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;div id=&amp;quot;desc-editor&amp;quot; style=&amp;quot;display:none; margin-top:18px; border-top:1px dashed #e2e8f0; padding-top:18px;&amp;quot;&amp;gt;&lt;br /&gt;
                    ${Object.keys(langs).map(k =&amp;gt; `&lt;br /&gt;
                        &amp;lt;div style=&amp;quot;margin-bottom:12px;&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;label style=&amp;quot;display:block; font-size:11px; font-weight:bold; color:#64748b; margin-bottom:4px;&amp;quot;&amp;gt;${langs[k].label}&amp;lt;/label&amp;gt;&lt;br /&gt;
                            &amp;lt;input type=&amp;quot;text&amp;quot; id=&amp;quot;desc-in-${k}&amp;quot; placeholder=&amp;quot;Tulis deskripsi...&amp;quot; style=&amp;quot;width:100%; padding:10px; font-size:13px; border:1px solid #e2e8f0; border-radius:8px; box-sizing:border-box; outline:none; focus:border-color:#6366f1;&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;/div&amp;gt;&lt;br /&gt;
                    `).join(&#039;&#039;)}&lt;br /&gt;
                    &amp;lt;button id=&amp;quot;desc-save&amp;quot; style=&amp;quot;width:100%; padding:12px; background:#6366f1; color:white; border:none; border-radius:8px; font-size:13px; font-weight:600; cursor:pointer; margin-top:5px;&amp;quot;&amp;gt;Terbitkan&amp;lt;/button&amp;gt;&lt;br /&gt;
                &amp;lt;/div&amp;gt;&lt;br /&gt;
            &amp;lt;/div&amp;gt;`;&lt;br /&gt;
&lt;br /&gt;
        $(&#039;.mw-parser-output&#039;).prepend(html);&lt;br /&gt;
&lt;br /&gt;
        function loadDescStatus() {&lt;br /&gt;
            new mw.Api().get({ action: &#039;query&#039;, prop: &#039;revisions&#039;, titles: storagePage, rvprop: &#039;content&#039;, formatversion: 2 }).done(function(res) {&lt;br /&gt;
                var content = res.query.pages[0].revisions ? res.query.pages[0].revisions[0].content : &amp;quot;{}&amp;quot;;&lt;br /&gt;
                var fullData = JSON.parse(content);&lt;br /&gt;
                var myData = fullData[pageTitle] || {};&lt;br /&gt;
                var $statusBox = $(&#039;#desc-status-display&#039;).empty();&lt;br /&gt;
                var foundAny = false;&lt;br /&gt;
&lt;br /&gt;
                Object.keys(langs).forEach(k =&amp;gt; {&lt;br /&gt;
                    var val = myData[k];&lt;br /&gt;
                    if (val &amp;amp;&amp;amp; val.trim() !== &amp;quot;&amp;quot;) {&lt;br /&gt;
                        foundAny = true;&lt;br /&gt;
                        $statusBox.append(`&lt;br /&gt;
                            &amp;lt;div style=&amp;quot;display:flex; align-items:center; gap:10px;&amp;quot;&amp;gt;&lt;br /&gt;
                                &amp;lt;span style=&amp;quot;background:${langs[k].color}15; color:${langs[k].color}; padding:3px 10px; border-radius:20px; font-size:10px; font-weight:800; border:1px solid ${langs[k].color}30; min-width:35px; text-align:center;&amp;quot;&amp;gt;${langs[k].short}&amp;lt;/span&amp;gt;&lt;br /&gt;
                                &amp;lt;span style=&amp;quot;font-size:13px; color:#334155; line-height:1.4;&amp;quot;&amp;gt;${val}&amp;lt;/span&amp;gt;&lt;br /&gt;
                            &amp;lt;/div&amp;gt;&lt;br /&gt;
                        `);&lt;br /&gt;
                        $(&#039;#desc-in-&#039; + k).val(val);&lt;br /&gt;
                    }&lt;br /&gt;
                });&lt;br /&gt;
&lt;br /&gt;
                if (!foundAny) {&lt;br /&gt;
                    $statusBox.html(&#039;&amp;lt;div style=&amp;quot;color:#cbd5e0; font-size:13px; background:#f8fafc; padding:10px; border-radius:8px; border:1px dashed #e2e8f0;&amp;quot;&amp;gt;Belum ada metadata deskripsi yang dikaitkan dengan entitas ini.&amp;lt;/div&amp;gt;&#039;);&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        $(document).on(&#039;click&#039;, &#039;#desc-open-editor&#039;, function() { $(&#039;#desc-editor&#039;).slideToggle(); });&lt;br /&gt;
&lt;br /&gt;
        $(document).on(&#039;click&#039;, &#039;#desc-save&#039;, function() {&lt;br /&gt;
            if (!isAdmin) { alert(&#039;Akses ditolak. Anda memerlukan izin pengurus.&#039;); return; }&lt;br /&gt;
            var $btn = $(this).text(&#039;Proses Sinkronisasi...&#039;).css(&#039;opacity&#039;,&#039;0.7&#039;);&lt;br /&gt;
            var api = new mw.Api();&lt;br /&gt;
            var newData = { id: $(&#039;#desc-in-id&#039;).val().trim(), en: $(&#039;#desc-in-en&#039;).val().trim(), concise: $(&#039;#desc-in-concise&#039;).val().trim() };&lt;br /&gt;
&lt;br /&gt;
            api.get({ action: &#039;query&#039;, prop: &#039;revisions&#039;, titles: storagePage, rvprop: &#039;content&#039;, formatversion: 2 }).done(function(r) {&lt;br /&gt;
                var json = r.query.pages[0].revisions ? JSON.parse(r.query.pages[0].revisions[0].content) : {};&lt;br /&gt;
                if (!newData.id &amp;amp;&amp;amp; !newData.en &amp;amp;&amp;amp; !newData.concise) { delete json[pageTitle]; } else { json[pageTitle] = newData; }&lt;br /&gt;
&lt;br /&gt;
                api.postWithEditToken({&lt;br /&gt;
                    action: &#039;edit&#039;,&lt;br /&gt;
                    title: storagePage,&lt;br /&gt;
                    text: JSON.stringify(json, null, 2),&lt;br /&gt;
                    summary: &#039;Update Entity Description: &#039; + pageTitle&lt;br /&gt;
                }).done(function() { location.reload(); });&lt;br /&gt;
            });&lt;br /&gt;
        });&lt;br /&gt;
&lt;br /&gt;
        loadDescStatus();&lt;br /&gt;
    });&lt;br /&gt;
})(jQuery, mediaWiki);&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================&lt;br /&gt;
   📍 MIPPEDIA DATA - ULTIMATE TEXT-TO-MAP LOCATOR&lt;br /&gt;
   Fitur: Deteksi lokasi dari teks dengan database label lengkap&lt;br /&gt;
   ========================================================== */&lt;br /&gt;
(function() {&lt;br /&gt;
    $(document).ready(function() {&lt;br /&gt;
        var locationText = &amp;quot;&amp;quot;;&lt;br /&gt;
        &lt;br /&gt;
        // --- DAFTAR LABEL SUPER LENGKAP &amp;amp; MASUK AKAL ---&lt;br /&gt;
        var locationLabels = [&lt;br /&gt;
            // Umum &amp;amp; Geografis&lt;br /&gt;
            &#039;lokasi&#039;, &#039;tempat&#039;, &#039;wilayah&#039;, &#039;daerah&#039;, &#039;koordinat&#039;, &#039;alamat&#039;,&lt;br /&gt;
            // Orang (Biografi)&lt;br /&gt;
            &#039;tempat lahir&#039;, &#039;asal&#039;, &#039;kediaman&#039;, &#039;domisili&#039;, &#039;negara asal&#039;,&lt;br /&gt;
            // Organisasi &amp;amp; Perusahaan&lt;br /&gt;
            &#039;kantor pusat&#039;, &#039;markas&#039;, &#039;cabang utama&#039;, &#039;titik operasi&#039;,&lt;br /&gt;
            // Makanan &amp;amp; Budaya&lt;br /&gt;
            &#039;asal wilayah&#039;, &#039;daerah asal&#039;, &#039;negara sumber&#039;, &#039;kawasan&#039;,&lt;br /&gt;
            // Sejarah &amp;amp; Bangunan&lt;br /&gt;
            &#039;letak&#039;, &#039;posisi&#039;, &#039;titik temu&#039;, &#039;orbit&#039;&lt;br /&gt;
        ];&lt;br /&gt;
&lt;br /&gt;
        // Jalankan pencarian di tabel data (infobox atau wikitable)&lt;br /&gt;
        $(&#039;.wikitable tr, .infobox tr, .mip-data-table tr&#039;).each(function() {&lt;br /&gt;
            var label = $(this).find(&#039;th&#039;).text().toLowerCase().trim();&lt;br /&gt;
            // Hilangkan karakter spesial kayak titik dua biar matching-nya akurat&lt;br /&gt;
            label = label.replace(/[:]/g, &#039;&#039;);&lt;br /&gt;
&lt;br /&gt;
            var isMatch = locationLabels.some(function(target) {&lt;br /&gt;
                return label === target || label.includes(target);&lt;br /&gt;
            });&lt;br /&gt;
&lt;br /&gt;
            if (isMatch) {&lt;br /&gt;
                var rawValue = $(this).find(&#039;td&#039;).text().trim();&lt;br /&gt;
                // Ambil bagian utama sebelum tanda koma, kurung, atau titik koma&lt;br /&gt;
                // Misal: &amp;quot;Bandung, Jawa Barat&amp;quot; -&amp;gt; ambil &amp;quot;Bandung&amp;quot;&lt;br /&gt;
                locationText = rawValue.split(/[,(\[;]/)[0].trim(); &lt;br /&gt;
                &lt;br /&gt;
                if (locationText.length &amp;gt; 2) return false; // Stop jika sudah ketemu yang valid&lt;br /&gt;
            }&lt;br /&gt;
        });&lt;br /&gt;
&lt;br /&gt;
        // Eksekusi Render Peta&lt;br /&gt;
        if (locationText &amp;amp;&amp;amp; locationText.length &amp;gt; 2) {&lt;br /&gt;
            var $mapWrapper = $(&#039;&amp;lt;div&amp;gt;&#039;).css({&lt;br /&gt;
                &#039;margin&#039;: &#039;15px 0&#039;,&lt;br /&gt;
                &#039;padding&#039;: &#039;12px&#039;,&lt;br /&gt;
                &#039;border&#039;: &#039;1px solid #ddd&#039;,&lt;br /&gt;
                &#039;background&#039;: &#039;#ffffff&#039;,&lt;br /&gt;
                &#039;border-radius&#039;: &#039;10px&#039;,&lt;br /&gt;
                &#039;box-shadow&#039;: &#039;0 4px 12px rgba(0,0,0,0.08)&#039;&lt;br /&gt;
            });&lt;br /&gt;
&lt;br /&gt;
            $mapWrapper.append(&#039;&amp;lt;div style=&amp;quot;font-weight:bold; font-size:0.9em; margin-bottom:10px; color:#444; display:flex; align-items:center;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                               &#039;&amp;lt;span style=&amp;quot;margin-right:8px;&amp;quot;&amp;gt;🗺️&amp;lt;/span&amp;gt;Pratinjau Lokasi : &#039; + locationText + &#039;&amp;lt;/div&amp;gt;&#039;);&lt;br /&gt;
&lt;br /&gt;
            // Embed URL dengan pencarian teks (Nominatim)&lt;br /&gt;
            var embedUrl = &amp;quot;https://www.openstreetmap.org/export/embed.html?layer=mapnik&amp;amp;q=&amp;quot; + encodeURIComponent(locationText);&lt;br /&gt;
&lt;br /&gt;
            var $iframe = $(&#039;&amp;lt;iframe&amp;gt;&#039;).attr({&lt;br /&gt;
                &#039;src&#039;: embedUrl,&lt;br /&gt;
                &#039;width&#039;: &#039;100%&#039;,&lt;br /&gt;
                &#039;height&#039;: &#039;280&#039;,&lt;br /&gt;
                &#039;frameborder&#039;: &#039;0&#039;,&lt;br /&gt;
                &#039;style&#039;: &#039;border-radius: 8px; border: 1px solid #eee;&#039;&lt;br /&gt;
            });&lt;br /&gt;
&lt;br /&gt;
            $mapWrapper.append($iframe);&lt;br /&gt;
            &lt;br /&gt;
            // Link eksternal yang lebih rapi&lt;br /&gt;
            var gMapsUrl = &amp;quot;https://www.google.com/maps/search/&amp;quot; + encodeURIComponent(locationText);&lt;br /&gt;
            $mapWrapper.append(&#039;&amp;lt;div style=&amp;quot;text-align:right; margin-top:8px;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                               &#039;&amp;lt;a href=&amp;quot;&#039; + gMapsUrl + &#039;&amp;quot; target=&amp;quot;_blank&amp;quot; style=&amp;quot;font-size:0.75em; color:#6a5acd; font-weight:bold; text-decoration:none; text-transform:uppercase; letter-spacing:0.5px;&amp;quot;&amp;gt;Buka di Google Maps →&amp;lt;/a&amp;gt;&amp;lt;/div&amp;gt;&#039;);&lt;br /&gt;
&lt;br /&gt;
            // Masukkan ke bawah section deskripsi otomatis&lt;br /&gt;
            if ($(&#039;#mip-desc-section&#039;).length) {&lt;br /&gt;
                $(&#039;#mip-desc-section&#039;).after($mapWrapper);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    });&lt;br /&gt;
})();&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://data.mippedia.org/index.php?title=MediaWiki:Common.js&amp;diff=902</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://data.mippedia.org/index.php?title=MediaWiki:Common.js&amp;diff=902"/>
		<updated>2026-06-01T16:49:56Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* ==========================================================&lt;br /&gt;
   🧠 MIPPEDIA DATA - SMART CONTEXT + AUTO THUMBNAIL (V11.2)&lt;br /&gt;
   Features: Priority Check (ID &amp;gt; EN &amp;gt; CONCISE), Auto-Age, &lt;br /&gt;
             Auto-Bold, Smart Links, Dynamic Context,&lt;br /&gt;
             Dynamic Noindex, Instant Action Hub (3 Buttons).&lt;br /&gt;
   Fixes: &lt;br /&gt;
             - Instant isolation hiding for Infobox/Wikidata elements.&lt;br /&gt;
             - Fixed layout text gaps (Removed forced justify spacing).&lt;br /&gt;
             - Removed ugly red block/box layout.&lt;br /&gt;
             - Re-concepted Server Sync radar to &amp;quot;Live Data Integrator Scanner&amp;quot;.&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
(function() {&lt;br /&gt;
    $(document).ready(function() {&lt;br /&gt;
        var $descSection = $(&#039;#mip-desc-section&#039;), $descBox = $(&#039;#mip-auto-description&#039;),&lt;br /&gt;
            $sourceInfo = $(&#039;#mip-source-info&#039;), $portalLinks = $(&#039;#mip-portal-links&#039;),&lt;br /&gt;
            $projectPortal = $(&#039;#mip-project-portal&#039;), $mainContent = $(&#039;#mw-content-text&#039;);&lt;br /&gt;
        &lt;br /&gt;
        if (!$descBox.length) return;&lt;br /&gt;
&lt;br /&gt;
        var pageTitle = mw.config.get(&#039;wgPageName&#039;).replace(/_/g, &#039; &#039;),&lt;br /&gt;
            cacheKey = &#039;mip_smart_context_thumb_&#039; + pageTitle, &lt;br /&gt;
            currentYear = 2026;&lt;br /&gt;
&lt;br /&gt;
        // --- KONFIGURASI PROYEK ---&lt;br /&gt;
        var projects = [&lt;br /&gt;
            { id: &#039;id&#039;, name: &#039;Mippedia bahasa Indonesia&#039;, url: &#039;https://id.mippedia.org/api.php&#039;, base: &#039;https://id.mippedia.org/wiki/&#039;, label: &#039;Mippedia Indonesia&#039; },&lt;br /&gt;
            { id: &#039;en&#039;, name: &#039;Mippedia bahasa Inggris&#039;, url: &#039;https://en.mippedia.org/api.php&#039;, base: &#039;https://en.mippedia.org/wiki/&#039;, label: &#039;Mippedia Inggris&#039; },&lt;br /&gt;
            { id: &#039;concise&#039;, name: &#039;Mippedia bahasa Indonesia ringkas&#039;, url: &#039;https://concise.mippedia.org/api.php&#039;, base: &#039;https://concise.mippedia.org/wiki/&#039;, label: &#039;Mippedia Ringkas&#039; }&lt;br /&gt;
        ];&lt;br /&gt;
&lt;br /&gt;
        // --- 🎨 CSS INJECTION &amp;amp; REAL-TIME ANIMATION (V11.2 FIX) ---&lt;br /&gt;
        if (!$(&#039;#mip-clean-style&#039;).length) {&lt;br /&gt;
            $(&#039;head&#039;).append(&lt;br /&gt;
                &#039;&amp;lt;style id=&amp;quot;mip-clean-style&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                    &#039;@keyframes mipFadeInUp {&#039; +&lt;br /&gt;
                        &#039;from { opacity: 0; transform: translateY(10px); }&#039; +&lt;br /&gt;
                        &#039;to { opacity: 1; transform: translateY(0); }&#039; +&lt;br /&gt;
                    &#039;}&#039; +&lt;br /&gt;
                    &#039;@keyframes mipPulse {&#039; +&lt;br /&gt;
                        &#039;0% { transform: scale(1); opacity: 1; }&#039; +&lt;br /&gt;
                        &#039;50% { transform: scale(1.06); opacity: 0.85; filter: drop-shadow(0 0 6px rgba(217,83,79,0.5)); }&#039; +&lt;br /&gt;
                        &#039;100% { transform: scale(1); opacity: 1; }&#039; +&lt;br /&gt;
                    &#039;}&#039; +&lt;br /&gt;
                    &#039;@keyframes mipRadarSweep {&#039; +&lt;br /&gt;
                        &#039;0% { transform: translateY(-100%); opacity: 0; }&#039; +&lt;br /&gt;
                        &#039;10% { opacity: 1; }&#039; +&lt;br /&gt;
                        &#039;90% { opacity: 1; }&#039; +&lt;br /&gt;
                        &#039;100% { transform: translateY(100%); opacity: 0; }&#039; +&lt;br /&gt;
                    &#039;}&#039; +&lt;br /&gt;
                    /* Kelas Isolat Instan: Sembunyikan infobox &amp;amp; data mentah secepat kilat */&lt;br /&gt;
                    &#039;.mip-isolated-active #mw-content-text &amp;gt; *:not(#mip-empty-state-notice):not(#mip-desc-section):not(script):not(style) {&#039; +&lt;br /&gt;
                        &#039;display: none !important;&#039; +&lt;br /&gt;
                    &#039;}&#039; +&lt;br /&gt;
                    &#039;#mip-empty-state-notice {&#039; +&lt;br /&gt;
                        &#039;display: block !important;&#039; +&lt;br /&gt;
                        &#039;animation: mipFadeInUp 0.4s cubic-bezier(0.16, 1, 0.3, 1) forwards;&#039; +&lt;br /&gt;
                    &#039;}&#039; +&lt;br /&gt;
                    &#039;.mip-pulse-icon {&#039; +&lt;br /&gt;
                        &#039;animation: mipPulse 2s infinite ease-in-out;&#039; +&lt;br /&gt;
                        &#039;transform-origin: center;&#039; +&lt;br /&gt;
                    &#039;}&#039; +&lt;br /&gt;
                    &#039;.mip-radar-box {&#039; +&lt;br /&gt;
                        &#039;position: relative; background: #fafafa; border: 1px dashed #6a5acd;&#039; +&lt;br /&gt;
                        &#039;border-radius: 8px; padding: 15px; margin: 25px auto; overflow: hidden;&#039; +&lt;br /&gt;
                        &#039;max-width: 500px; text-align: left;&#039; +&lt;br /&gt;
                    &#039;}&#039; +&lt;br /&gt;
                    &#039;.mip-radar-line {&#039; +&lt;br /&gt;
                        &#039;position: absolute; left: 0; top: 0; right: 0; height: 3px;&#039; +&lt;br /&gt;
                        &#039;background: linear-gradient(90deg, transparent, #6a5acd, transparent);&#039; +&lt;br /&gt;
                        &#039;animation: mipRadarSweep 2.5s infinite linear;&#039; +&lt;br /&gt;
                    &#039;}&#039; +&lt;br /&gt;
                    &#039;.mip-btn-container {&#039; +&lt;br /&gt;
                        &#039;display: flex; flex-wrap: wrap; justify-content: center; margin-bottom: 25px; padding-top: 5px;&#039; +&lt;br /&gt;
                    &#039;}&#039; +&lt;br /&gt;
                    &#039;.mip-action-btn {&#039; +&lt;br /&gt;
                        &#039;display: inline-flex; align-items: center; justify-content: center;&#039; +&lt;br /&gt;
                        &#039;padding: 10px 18px; margin: 6px; font-size: 0.88em; font-weight: 600;&#039; +&lt;br /&gt;
                        &#039;color: #6a5acd !important; background: #ffffff; border: 1.5px solid #6a5acd;&#039; +&lt;br /&gt;
                        &#039;border-radius: 30px; text-decoration: none !important; cursor: pointer;&#039; +&lt;br /&gt;
                        &#039;transition: all 0.25s ease-in-out; box-shadow: 0 2px 5px rgba(106,92,205,0.08);&#039; +&lt;br /&gt;
                        &#039;flex-grow: 1; max-width: 220px; min-width: 150px;&#039; +&lt;br /&gt;
                    &#039;}&#039; +&lt;br /&gt;
                    &#039;.mip-action-btn:hover {&#039; +&lt;br /&gt;
                        &#039;color: #ffffff !important; background: #6a5acd;&#039; +&lt;br /&gt;
                        &#039;transform: translateY(-2px); box-shadow: 0 4px 12px rgba(106,92,205,0.2);&#039; +&lt;br /&gt;
                    &#039;}&#039; +&lt;br /&gt;
                &#039;&amp;lt;/style&amp;gt;&#039;&lt;br /&gt;
            );&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // --- PRE-CHECK CACHE (Eksekusi Instan Sebelum Render API) ---&lt;br /&gt;
        var cached = JSON.parse(localStorage.getItem(cacheKey) || &amp;quot;{}&amp;quot;);&lt;br /&gt;
        if (cached.isEmpty) {&lt;br /&gt;
            $(&#039;body&#039;).addClass(&#039;mip-isolated-active&#039;);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        function applyAutoBold(text) { return text.replace(new RegExp(&#039;(&#039; + pageTitle + &#039;)&#039;, &#039;gi&#039;), &#039;&amp;lt;strong&amp;gt;$1&amp;lt;/strong&amp;gt;&#039;); }&lt;br /&gt;
        function cleanExtract(text) { return text.replace(/\[\d+\]/g, &#039;&#039;).replace(/\{\{[^}]+\}\}/g, &#039;&#039;).replace(/\(\s*\)/g, &#039;&#039;).replace(/\s\s+/g, &#039; &#039;).trim(); }&lt;br /&gt;
        &lt;br /&gt;
        function applyDynamicContext(text) {&lt;br /&gt;
            var date = new Date();&lt;br /&gt;
            var hari = [&amp;quot;Minggu&amp;quot;, &amp;quot;Senin&amp;quot;, &amp;quot;Selasa&amp;quot;, &amp;quot;Rabu&amp;quot;, &amp;quot;Kamis&amp;quot;, &amp;quot;Jumat&amp;quot;, &amp;quot;Sabtu&amp;quot;];&lt;br /&gt;
            var bulan = [&amp;quot;Januari&amp;quot;, &amp;quot;Februari&amp;quot;, &amp;quot;Maret&amp;quot;, &amp;quot;April&amp;quot;, &amp;quot;Mei&amp;quot;, &amp;quot;Juni&amp;quot;, &amp;quot;Juli&amp;quot;, &amp;quot;Agustus&amp;quot;, &amp;quot;September&amp;quot;, &amp;quot;Oktober&amp;quot;, &amp;quot;November&amp;quot;, &amp;quot;Desember&amp;quot;];&lt;br /&gt;
            var tglSkrg = hari[date.getDay()] + &amp;quot;, &amp;quot; + date.getDate() + &amp;quot; &amp;quot; + bulan[date.getMonth()] + &amp;quot; &amp;quot; + date.getFullYear();&lt;br /&gt;
            return text.replace(/(hari ini|saat ini|sekarang)/gi, &#039;$1 (&#039; + tglSkrg + &#039;)&#039;)&lt;br /&gt;
                .replace(/(\d{1,2}\s(?:Januari|Februari|Maret|April|Mei|Juni|Juli|Agustus|September|Oktober|November|Desember)\s(\d{4}))/gi, function(m, f, y) { &lt;br /&gt;
                    return f + &amp;quot; &amp;lt;span style=&#039;color: #444; font-weight: bold;&#039;&amp;gt;– usia &amp;quot; + (currentYear - parseInt(y)) + &amp;quot; tahun&amp;lt;/span&amp;gt;&amp;quot;; &lt;br /&gt;
                })&lt;br /&gt;
                .replace(/(sejak|tahun)\s(\d{4})/gi, function(m, k, y) {&lt;br /&gt;
                    var gap = currentYear - parseInt(y);&lt;br /&gt;
                    if (gap &amp;gt; 0 &amp;amp;&amp;amp; gap &amp;lt; 100) return k + &amp;quot; &amp;quot; + y + &amp;quot; &amp;lt;small style=&#039;color: #888;&#039;&amp;gt;(&amp;quot; + gap + &amp;quot; thn lalu)&amp;lt;/small&amp;gt;&amp;quot;;&lt;br /&gt;
                    return m;&lt;br /&gt;
                });&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        function applySummary(text) {&lt;br /&gt;
            var limit = 250;&lt;br /&gt;
            if (text.length &amp;lt;= limit) return &#039;&amp;lt;span&amp;gt;&#039; + text + &#039;&amp;lt;/span&amp;gt;&#039;;&lt;br /&gt;
            return &#039;&amp;lt;span&amp;gt;&#039; + text.substring(0, limit) + &#039;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;mip-dots&amp;quot;&amp;gt;... &amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;mip-more&amp;quot; style=&amp;quot;display:none;&amp;quot;&amp;gt;&#039; + text.substring(limit) + &#039;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;mip-read-btn&amp;quot; style=&amp;quot;color: #6a5acd; cursor: pointer; font-weight: bold; margin-left: 5px;&amp;quot;&amp;gt;Baca selengkapnya&amp;lt;/span&amp;gt;&#039;;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        function buildSmartLinks(currentId, validatedEnTitle) {&lt;br /&gt;
            $portalLinks.empty();&lt;br /&gt;
            var validLinks = [];&lt;br /&gt;
            var checkRequests = projects.filter(p =&amp;gt; p.id !== currentId).map(function(p) {&lt;br /&gt;
                var targetTitle = (p.id === &#039;en&#039; &amp;amp;&amp;amp; validatedEnTitle) ? validatedEnTitle : pageTitle;&lt;br /&gt;
                if (p.id === &#039;en&#039; &amp;amp;&amp;amp; !validatedEnTitle) return $.Deferred().resolve();&lt;br /&gt;
&lt;br /&gt;
                return $.ajax({ url: p.url, data: { action: &#039;query&#039;, titles: targetTitle, format: &#039;json&#039;, origin: &#039;*&#039; }, dataType: &#039;json&#039; })&lt;br /&gt;
                    .then(function(data) { &lt;br /&gt;
                        if (data.query.pages[&amp;quot;-1&amp;quot;] === undefined) { &lt;br /&gt;
                            validLinks.push(&#039;&amp;lt;a href=&amp;quot;&#039; + p.base + encodeURIComponent(targetTitle) + &#039;&amp;quot; target=&amp;quot;_blank&amp;quot; style=&amp;quot;color: #6a5acd; text-decoration: underline; font-weight: bold;&amp;quot;&amp;gt;&#039; + p.label + &#039;&amp;lt;/a&amp;gt;&#039;); &lt;br /&gt;
                        } &lt;br /&gt;
                    });&lt;br /&gt;
            });&lt;br /&gt;
&lt;br /&gt;
            $.when.apply($, checkRequests).done(function() {&lt;br /&gt;
                if (validLinks.length &amp;gt; 0) { $portalLinks.html(validLinks.join(&#039; &amp;lt;span style=&amp;quot;color:#ccc; margin: 0 5px;&amp;quot;&amp;gt;•&amp;lt;/span&amp;gt; &#039;)); $projectPortal.fadeIn(); }&lt;br /&gt;
            });&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // --- 🧠 RENDER EMPTY STATE + INTERACTIVE HUB (V11.2 REFINED) ---&lt;br /&gt;
        function toggleMippediaLayout(isEmpty) {&lt;br /&gt;
            var $existingNotice = $(&#039;#mip-empty-state-notice&#039;);&lt;br /&gt;
            var userGroups = mw.config.get(&#039;wgUserGroups&#039;) || [];&lt;br /&gt;
            var isSysop = userGroups.indexOf(&#039;sysop&#039;) !== -1;&lt;br /&gt;
            var $editElements = $(&#039;#ca-edit, .mw-editsection, .wb-editsection, .mip-edit-trigger, [id*=&amp;quot;edit&amp;quot;], [class*=&amp;quot;edit-pencil&amp;quot;]&#039;);&lt;br /&gt;
            var $metaRobots = $(&#039;meta[name=&amp;quot;robots&amp;quot;]&#039;);&lt;br /&gt;
&lt;br /&gt;
            if (isEmpty) {&lt;br /&gt;
                $(&#039;body&#039;).addClass(&#039;mip-isolated-active&#039;);&lt;br /&gt;
&lt;br /&gt;
                if (!$existingNotice.length) {&lt;br /&gt;
                    var createUrlID = &#039;https://id.mippedia.org/index.php?title=&#039; + encodeURIComponent(pageTitle) + &#039;&amp;amp;action=edit&#039;;&lt;br /&gt;
                    var createUrlEN = &#039;https://en.mippedia.org/index.php?title=&#039; + encodeURIComponent(pageTitle) + &#039;&amp;amp;action=edit&#039;;&lt;br /&gt;
                    var createUrlConcise = &#039;https://concise.mippedia.org/index.php?title=&#039; + encodeURIComponent(pageTitle) + &#039;&amp;amp;action=edit&#039;;&lt;br /&gt;
&lt;br /&gt;
                    var noticeHtml = &lt;br /&gt;
                        &#039;&amp;lt;div id=&amp;quot;mip-empty-state-notice&amp;quot; style=&amp;quot;text-align: center; max-width: 680px; margin: 30px auto; padding: 15px; font-family: -apple-system, BlinkMacSystemFont, \&#039;Segoe UI\&#039;, Roboto, sans-serif;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                            &lt;br /&gt;
                            &#039;&amp;lt;!-- Ikon Warning Dengan Animasi Denyut Real-Time --&amp;gt;&#039; +&lt;br /&gt;
                            &#039;&amp;lt;div class=&amp;quot;mip-pulse-icon&amp;quot; style=&amp;quot;margin-bottom: 20px; display: inline-block;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                &#039;&amp;lt;svg width=&amp;quot;64&amp;quot; height=&amp;quot;64&amp;quot; viewBox=&amp;quot;0 0 24 24&amp;quot; fill=&amp;quot;none&amp;quot; stroke=&amp;quot;#d9534f&amp;quot; stroke-width=&amp;quot;2&amp;quot; stroke-linecap=&amp;quot;round&amp;quot; stroke-linejoin=&amp;quot;round&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                    &#039;&amp;lt;path d=&amp;quot;M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z&amp;quot;&amp;gt;&amp;lt;/path&amp;gt;&#039; +&lt;br /&gt;
                                    &#039;&amp;lt;line x1=&amp;quot;12&amp;quot; y1=&amp;quot;9&amp;quot; x2=&amp;quot;12&amp;quot; y2=&amp;quot;13&amp;quot;&amp;gt;&amp;lt;/line&amp;gt;&#039; +&lt;br /&gt;
                                    &#039;&amp;lt;line x1=&amp;quot;12&amp;quot; y1=&amp;quot;17&amp;quot; x2=&amp;quot;12.01&amp;quot; y2=&amp;quot;17&amp;quot;&amp;gt;&amp;lt;/line&amp;gt;&#039; +&lt;br /&gt;
                                &#039;&amp;lt;/&#039; + &#039;svg&amp;gt;&#039; +&lt;br /&gt;
                            &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
                            &lt;br /&gt;
                            &#039;&amp;lt;!-- Judul Utama --&amp;gt;&#039; +&lt;br /&gt;
                            &#039;&amp;lt;h4 style=&amp;quot;color: #2c3e50; margin: 0 0 18px 0; font-size: 1.4em; font-weight: 700; letter-spacing: -0.4px;&amp;quot;&amp;gt;Item Data Terisolasi: Tidak Ditemukan Sumber Artikel Rujukan&amp;lt;/h4&amp;gt;&#039; +&lt;br /&gt;
                            &lt;br /&gt;
                            &#039;&amp;lt;!-- 📄 NARASI INFORMASI (Symmetry &amp;amp; Text Alignment Refined) --&amp;gt;&#039; +&lt;br /&gt;
                            &#039;&amp;lt;div style=&amp;quot;text-align: left; color: #4a5568; font-size: 0.95em; line-height: 1.6; margin-bottom: 25px; padding: 0 5px;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                &#039;&amp;lt;p style=&amp;quot;margin-bottom: 14px; text-align: left; letter-spacing: normal; word-spacing: normal;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                    &#039;Sistem deteksi otomatis mencatat bahwa item repositori data terstruktur ini berada dalam status &amp;lt;strong&amp;gt;Yatim (Orphaned Data Item)&amp;lt;/strong&amp;gt;. Evaluasi siklus menyeluruh yang dijalankan pada sistem internal mengonfirmasi bahwa halaman data ini sama sekali &amp;lt;strong&amp;gt;tidak memiliki tautan rujukan aktif ataupun dokumen artikel ensiklopedia yang terikat&amp;lt;/strong&amp;gt; di ketiga pilar utama ekosistem kita, yaitu: &amp;lt;em&amp;gt;Mippedia bahasa Indonesia (ID)&amp;lt;/em&amp;gt;, &amp;lt;em&amp;gt;Mippedia bahasa Inggris (EN)&amp;lt;/em&amp;gt;, maupun &amp;lt;em&amp;gt;Mippedia Indonesia Ringkas (Concise)&amp;lt;/em&amp;gt;.&#039; +&lt;br /&gt;
                                &#039;&amp;lt;/p&amp;gt;&#039; +&lt;br /&gt;
                                &lt;br /&gt;
                                &#039;&amp;lt;!-- Perbaikan: Mengubah susunan kotak merah jelek menjadi poin teks yang clean --&amp;gt;&#039; +&lt;br /&gt;
                                &#039;&amp;lt;p style=&amp;quot;margin-bottom: 14px; text-align: left; letter-spacing: normal; word-spacing: normal;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                    &#039;&amp;lt;span style=&amp;quot;color: #d9534f; margin-right: 6px; font-size: 1.1em;&amp;quot;&amp;gt;🔴&amp;lt;/span&amp;gt;&amp;lt;strong&amp;gt;DAMPAK STRUKTURAL SISTEM:&amp;lt;/strong&amp;gt; &#039; +&lt;br /&gt;
                                    &#039;Berdasarkan protokol standardisasi integritas data Mippedia Foundation, setiap entitas data yang tersimpan wajib merepresentasikan objek nyata yang memiliki cakupan artikel rujukan. Ketiadaan rujukan menyebabkan item ini mengalami anomali pengindeksan, memicu galat visual pada mesin pembaca skrip otomatis, serta secara berkala menurunkan skor optimasi SEO (Search Engine Optimization) ekosistem repositori data secara global.&#039; +&lt;br /&gt;
                                &#039;&amp;lt;/p&amp;gt;&#039; +&lt;br /&gt;
                                &lt;br /&gt;
                                &#039;&amp;lt;p style=&amp;quot;margin-bottom: 14px; text-align: left; letter-spacing: normal; word-spacing: normal;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                    &#039;&amp;lt;span style=&amp;quot;color: #f0ad4e; margin-right: 6px; font-size: 1.1em;&amp;quot;&amp;gt;⚖️&amp;lt;/span&amp;gt;&amp;lt;strong&amp;gt;REGULASI PEMELIHARAAN SERVER:&amp;lt;/strong&amp;gt; &#039; +&lt;br /&gt;
                                    &#039;Item data tanpa rujukan artikel diklasifikasikan sebagai data konsumsi sementara (*temporary cache entry*). Jika dalam kurun waktu evaluasi berkala item ini tetap dibiarkan kosong tanpa adanya validasi dari pembuatan artikel baru, maka sistem pembersihan otomatis (*cron-job cleaner*) bersama dengan dewan moderator Mippedia Community akan melakukan tindakan pembersihan permanen (*Hard Purge / Delete*) untuk menghemat ruang alokasi database server.&#039; +&lt;br /&gt;
                                &#039;&amp;lt;/p&amp;gt;&#039; +&lt;br /&gt;
                                &lt;br /&gt;
                                &#039;&amp;lt;p style=&amp;quot;margin-bottom: 0; text-align: left; letter-spacing: normal; word-spacing: normal;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                    &#039;&amp;lt;span style=&amp;quot;color: #5cb85c; margin-right: 6px; font-size: 1.1em;&amp;quot;&amp;gt;💡&amp;lt;/span&amp;gt;&amp;lt;strong&amp;gt;PANDUAN KONTRIBUTOR:&amp;lt;/strong&amp;gt; &#039; +&lt;br /&gt;
                                    &#039;Untuk menyelamatkan entitas data ini, Anda sangat disarankan untuk segera menginisiasi pembuatan draf artikel baru menggunakan tombol modul akselerasi instan di bawah ini. Pastikan Anda memasukkan informasi yang valid, netral, dan menyertakan rujukan literatur yang kredibel saat halaman penyuntingan terbuka.&#039; +&lt;br /&gt;
                                &#039;&amp;lt;/p&amp;gt;&#039; +&lt;br /&gt;
                            &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
&lt;br /&gt;
                            &#039;&amp;lt;!-- 📡 RE-CONCEPT: LIVE DATA INTEGRATOR SCANNER (ANIMASI REAL-TIME) --&amp;gt;&#039; +&lt;br /&gt;
                            &#039;&amp;lt;div class=&amp;quot;mip-radar-box&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                &#039;&amp;lt;div class=&amp;quot;mip-radar-line&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
                                &#039;&amp;lt;div style=&amp;quot;display: flex; align-items: center; justify-content: space-between; font-size: 0.82em; color: #555; font-family: monospace;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                    &#039;&amp;lt;span&amp;gt;🔍 LIVE DATA INTEGRATOR SCANNER:&amp;lt;/span&amp;gt;&#039; +&lt;br /&gt;
                                    &#039;&amp;lt;span style=&amp;quot;color: #6a5acd; font-weight: bold; animation: mipPulse 1.5s infinite;&amp;quot;&amp;gt;MAPPING ACTIVE&amp;lt;/span&amp;gt;&#039; +&lt;br /&gt;
                                &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
                                &#039;&amp;lt;div style=&amp;quot;margin-top: 8px; font-size: 0.8em; color: #666; line-height: 1.5; font-family: monospace;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                    &#039;• ID_MAPPED_ENTITIES   : CEK SELESAI (0 INDEKS COCOK)&amp;lt;br&amp;gt;&#039; +&lt;br /&gt;
                                    &#039;• EN_MAPPED_ENTITIES   : CEK SELESAI (0 INDEKS COCOK)&amp;lt;br&amp;gt;&#039; +&lt;br /&gt;
                                    &#039;• CONCISE_MAPPED_INDEX : CEK SELESAI (0 INDEKS COCOK)&#039; +&lt;br /&gt;
                                &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
                            &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
                            &lt;br /&gt;
                            &#039;&amp;lt;!-- 🚀 INSTANT ACTION HUB (3 TOMBOL AKSES) --&amp;gt;&#039; +&lt;br /&gt;
                            &#039;&amp;lt;div class=&amp;quot;mip-btn-container&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                &#039;&amp;lt;a href=&amp;quot;&#039; + createUrlID + &#039;&amp;quot; target=&amp;quot;_blank&amp;quot; class=&amp;quot;mip-action-btn&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                    &#039;&amp;lt;span style=&amp;quot;margin-right: 6px;&amp;quot;&amp;gt;✍️&amp;lt;/span&amp;gt; Buat Artikel ID&#039; +&lt;br /&gt;
                                &#039;&amp;lt;/a&amp;gt;&#039; +&lt;br /&gt;
                                &#039;&amp;lt;a href=&amp;quot;&#039; + createUrlEN + &#039;&amp;quot; target=&amp;quot;_blank&amp;quot; class=&amp;quot;mip-action-btn&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                    &#039;&amp;lt;span style=&amp;quot;margin-right: 6px;&amp;quot;&amp;gt;🌐&amp;lt;/span&amp;gt; Buat Artikel EN&#039; +&lt;br /&gt;
                                &#039;&amp;lt;/a&amp;gt;&#039; +&lt;br /&gt;
                                &#039;&amp;lt;a href=&amp;quot;&#039; + createUrlConcise + &#039;&amp;quot; target=&amp;quot;_blank&amp;quot; class=&amp;quot;mip-action-btn&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                    &#039;&amp;lt;span style=&amp;quot;margin-right: 6px;&amp;quot;&amp;gt;📝&amp;lt;/span&amp;gt; Buat Artikel Ringkas&#039; +&lt;br /&gt;
                                &#039;&amp;lt;/a&amp;gt;&#039; +&lt;br /&gt;
                            &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
&lt;br /&gt;
                            &#039;&amp;lt;!-- Catatan Kaki --&amp;gt;&#039; +&lt;br /&gt;
                            &#039;&amp;lt;div style=&amp;quot;font-size: 0.82em; color: #a0a0a0; line-height: 1.4; font-style: italic; border-top: 1px solid #f0f0f0; padding-top: 15px; text-align: center;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                                &#039;Informasi Sistem: Item data yang tidak terikat dengan artikel ensiklopedia apa pun dalam ekosistem Mippedia akan dihapus secara otomatis oleh pengurus dalam waktu dekat.&#039; +&lt;br /&gt;
                            &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
                        &#039;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
                    $mainContent.prepend(noticeHtml);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                $descSection.hide();&lt;br /&gt;
&lt;br /&gt;
                if (!isSysop) {&lt;br /&gt;
                    $editElements.css({ &#039;pointer-events&#039;: &#039;none&#039;, &#039;opacity&#039;: &#039;0.3&#039;, &#039;cursor&#039;: &#039;not-allowed&#039; }).hide();&lt;br /&gt;
                    $(document).on(&#039;keydown.miplock&#039;, function(e) {&lt;br /&gt;
                        if (e.key.toLowerCase() === &#039;e&#039; &amp;amp;&amp;amp; !$(e.target).is(&#039;input, textarea&#039;)) {&lt;br /&gt;
                            e.preventDefault();&lt;br /&gt;
                            return false;&lt;br /&gt;
                        }&lt;br /&gt;
                    });&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                mw.config.set(&#039;wgRobotsPolicies&#039;, { &#039;index&#039;: &#039;noindex&#039;, &#039;follow&#039;: &#039;nofollow&#039; });&lt;br /&gt;
                if ($metaRobots.length) {&lt;br /&gt;
                    $metaRobots.attr(&#039;content&#039;, &#039;noindex, nofollow&#039;);&lt;br /&gt;
                } else {&lt;br /&gt;
                    $(&#039;head&#039;).append(&#039;&amp;lt;meta name=&amp;quot;robots&amp;quot; content=&amp;quot;noindex, nofollow&amp;quot;&amp;gt;&#039;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
            } else {&lt;br /&gt;
                $(&#039;body&#039;).removeClass(&#039;mip-isolated-active&#039;);&lt;br /&gt;
                if ($existingNotice.length) $existingNotice.remove();&lt;br /&gt;
                $descSection.show();&lt;br /&gt;
&lt;br /&gt;
                if (!isSysop) {&lt;br /&gt;
                    $(document).off(&#039;keydown.miplock&#039;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                mw.config.set(&#039;wgRobotsPolicies&#039;, { &#039;index&#039;: &#039;index&#039;, &#039;follow&#039;: &#039;follow&#039; });&lt;br /&gt;
                if ($metaRobots.length) $metaRobots.attr(&#039;content&#039;, &#039;index, follow&#039;);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // --- SISTEM PRIORITAS ---&lt;br /&gt;
        var globalEnTitle = cached.enTitle || &amp;quot;&amp;quot;; &lt;br /&gt;
&lt;br /&gt;
        function init() {&lt;br /&gt;
            var pPrimary = projects[0]; &lt;br /&gt;
            $.ajax({&lt;br /&gt;
                url: pPrimary.url,&lt;br /&gt;
                data: { action: &#039;query&#039;, prop: &#039;revisions|pageimages|langlinks&#039;, lllang: &#039;en&#039;, rvprop: &#039;timestamp&#039;, piprop: &#039;thumbnail&#039;, pithumbsize: 150, titles: pageTitle, format: &#039;json&#039;, origin: &#039;*&#039; },&lt;br /&gt;
                dataType: &#039;json&#039;,&lt;br /&gt;
                success: function(res) {&lt;br /&gt;
                    var pg = res.query.pages, id = Object.keys(pg)[0];&lt;br /&gt;
                    var latestTS = (id != &amp;quot;-1&amp;quot;) ? pg[id].revisions[0].timestamp : &amp;quot;0&amp;quot;;&lt;br /&gt;
                    var thumbUrl = (id != &amp;quot;-1&amp;quot; &amp;amp;&amp;amp; pg[id].thumbnail) ? pg[id].thumbnail.source : &amp;quot;&amp;quot;;&lt;br /&gt;
                    &lt;br /&gt;
                    if (id != &amp;quot;-1&amp;quot; &amp;amp;&amp;amp; pg[id].langlinks &amp;amp;&amp;amp; pg[id].langlinks[0]) {&lt;br /&gt;
                        globalEnTitle = pg[id].langlinks[0][&#039;*&#039;];&lt;br /&gt;
                    }&lt;br /&gt;
&lt;br /&gt;
                    if (cached.content &amp;amp;&amp;amp; cached.ts === latestTS &amp;amp;&amp;amp; latestTS !== &amp;quot;0&amp;quot; &amp;amp;&amp;amp; !cached.isEmpty) {&lt;br /&gt;
                        toggleMippediaLayout(false);&lt;br /&gt;
                        renderAll(cached.p, cached.content, cached.isTrans, cached.orig, cached.img, cached.customUrl, cached.enTitle);&lt;br /&gt;
                    } else { &lt;br /&gt;
                        fetchPriorityData(0, latestTS, thumbUrl); &lt;br /&gt;
                    }&lt;br /&gt;
                },&lt;br /&gt;
                error: function() { &lt;br /&gt;
                    if (cached.content) {&lt;br /&gt;
                        toggleMippediaLayout(cached.isEmpty || false);&lt;br /&gt;
                        if (!cached.isEmpty) renderAll(cached.p, cached.content, cached.isTrans, cached.orig, cached.img, cached.customUrl, cached.enTitle);&lt;br /&gt;
                    } &lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        function fetchPriorityData(index, newTS, img) {&lt;br /&gt;
            if (index &amp;gt;= projects.length) {&lt;br /&gt;
                localStorage.setItem(cacheKey, JSON.stringify({isEmpty: true, ts: newTS, content: &amp;quot;&amp;quot;}));&lt;br /&gt;
                toggleMippediaLayout(true);&lt;br /&gt;
                return;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            var p = projects[index];&lt;br /&gt;
&lt;br /&gt;
            if (p.id === &#039;en&#039;) {&lt;br /&gt;
                if (!globalEnTitle) {&lt;br /&gt;
                    $.ajax({&lt;br /&gt;
                        url: &#039;https://concise.mippedia.org/api.php&#039;,&lt;br /&gt;
                        data: { action: &#039;query&#039;, prop: &#039;langlinks&#039;, lllang: &#039;en&#039;, titles: pageTitle, format: &#039;json&#039;, origin: &#039;*&#039; },&lt;br /&gt;
                        dataType: &#039;json&#039;,&lt;br /&gt;
                        async: false, &lt;br /&gt;
                        success: function(cRes) {&lt;br /&gt;
                            var cPg = cRes.query.pages, cId = Object.keys(cPg)[0];&lt;br /&gt;
                            if (cId != &amp;quot;-1&amp;quot; &amp;amp;&amp;amp; cPg[cId].langlinks &amp;amp;&amp;amp; cPg[cId].langlinks[0]) {&lt;br /&gt;
                                globalEnTitle = cPg[cId].langlinks[0][&#039;*&#039;];&lt;br /&gt;
                            }&lt;br /&gt;
                        }&lt;br /&gt;
                    });&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                if (globalEnTitle) {&lt;br /&gt;
                    $.ajax({&lt;br /&gt;
                        url: p.url,&lt;br /&gt;
                        data: { action: &#039;query&#039;, prop: &#039;extracts&#039;, exintro: 1, explaintext: 1, titles: globalEnTitle, format: &#039;json&#039;, origin: &#039;*&#039; },&lt;br /&gt;
                        dataType: &#039;json&#039;,&lt;br /&gt;
                        success: function(data) {&lt;br /&gt;
                            var pages = data.query.pages, pageId = Object.keys(pages)[0];&lt;br /&gt;
                            if (pageId != &amp;quot;-1&amp;quot; &amp;amp;&amp;amp; pages[pageId].extract) {&lt;br /&gt;
                                var extract = cleanExtract(pages[pageId].extract);&lt;br /&gt;
                                finalize(p, extract, false, &amp;quot;&amp;quot;, newTS, img, p.base + encodeURIComponent(globalEnTitle), globalEnTitle);&lt;br /&gt;
                            } else {&lt;br /&gt;
                                fetchPriorityData(index + 1, newTS, img);&lt;br /&gt;
                            }&lt;br /&gt;
                        },&lt;br /&gt;
                        error: function() { fetchPriorityData(index + 1, newTS, img); }&lt;br /&gt;
                    });&lt;br /&gt;
                } else {&lt;br /&gt;
                    fetchPriorityData(index + 1, newTS, img);&lt;br /&gt;
                }&lt;br /&gt;
            } else {&lt;br /&gt;
                $.ajax({&lt;br /&gt;
                    url: p.url,&lt;br /&gt;
                    data: { action: &#039;query&#039;, prop: &#039;extracts&#039;, exintro: 1, explaintext: 1, titles: pageTitle, format: &#039;json&#039;, origin: &#039;*&#039; },&lt;br /&gt;
                    dataType: &#039;json&#039;,&lt;br /&gt;
                    success: function(data) {&lt;br /&gt;
                        var pages = data.query.pages, pageId = Object.keys(pages)[0];&lt;br /&gt;
                        if (pageId != &amp;quot;-1&amp;quot; &amp;amp;&amp;amp; pages[pageId].extract) {&lt;br /&gt;
                            var extract = cleanExtract(pages[pageId].extract);&lt;br /&gt;
                            finalize(p, extract, false, &amp;quot;&amp;quot;, newTS, img, p.base + encodeURIComponent(pageTitle), globalEnTitle); &lt;br /&gt;
                        } else {&lt;br /&gt;
                            fetchPriorityData(index + 1, newTS, img);&lt;br /&gt;
                        }&lt;br /&gt;
                    },&lt;br /&gt;
                    error: function() { fetchPriorityData(index + 1, newTS, img); }&lt;br /&gt;
                });&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        function finalize(p, c, t, o, ts, img, customUrl, enTitle) {&lt;br /&gt;
            localStorage.setItem(cacheKey, JSON.stringify({isEmpty: false, p:p, content:c, isTrans:t, orig:o, ts:ts, img:img, customUrl: customUrl, enTitle: enTitle}));&lt;br /&gt;
            toggleMippediaLayout(false); &lt;br /&gt;
            renderAll(p, c, t, o, img, customUrl, enTitle);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        function renderAll(p, currentText, isTranslated, originalText, img, customUrl, enTitle) {&lt;br /&gt;
            var processedText = applyAutoBold(applyDynamicContext(currentText));&lt;br /&gt;
            var thumbHtml = img ? &#039;&amp;lt;div style=&amp;quot;float: right; margin-left: 15px; margin-bottom: 10px; border: 1px solid #ddd; padding: 3px; background: #fff; border-radius: 4px; box-shadow: 0 2px 4px rgba(0,0,0,0.1);&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;&#039;+img+&#039;&amp;quot; style=&amp;quot;max-width: 100px; display: block; height: auto;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039; : &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
            if (!$mainContent.find(&#039;#mip-desc-section&#039;).length) {&lt;br /&gt;
                $mainContent.prepend($descSection);&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            $descSection.show();&lt;br /&gt;
            $descBox.show().html(thumbHtml + applySummary(processedText) + &#039;&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;);&lt;br /&gt;
            &lt;br /&gt;
            var targetLink = customUrl ? customUrl : p.base + encodeURIComponent(pageTitle);&lt;br /&gt;
            var footer = &#039;&amp;lt;div style=&amp;quot;font-size: 0.9em; color: #777;&amp;quot;&amp;gt;Sumber : &amp;lt;a href=&amp;quot;&#039; + targetLink + &#039;&amp;quot; target=&amp;quot;_blank&amp;quot; style=&amp;quot;color: #6a5acd; font-weight: bold; text-decoration: none;&amp;quot;&amp;gt;&#039; + p.name + &#039;.&amp;lt;/a&amp;gt;&#039;;&lt;br /&gt;
            if (isTranslated) { footer += &#039;&amp;lt;br&amp;gt;&amp;lt;span style=&amp;quot;font-size: 0.85em; font-style: italic;&amp;quot;&amp;gt;(Diterjemahkan secara otomatis)&amp;lt;/span&amp;gt; &amp;lt;span id=&amp;quot;mip-toggle-orig&amp;quot; style=&amp;quot;color: #6a5acd; cursor: pointer; text-decoration: underline; margin-left: 5px;&amp;quot;&amp;gt;Tampilkan versi asli&amp;lt;/span&amp;gt;&#039;; }&lt;br /&gt;
            $sourceInfo.show().html(footer);&lt;br /&gt;
            &lt;br /&gt;
            buildSmartLinks(p.id, enTitle);&lt;br /&gt;
            &lt;br /&gt;
            $(document).off(&#039;click&#039;, &#039;.mip-read-btn&#039;).on(&#039;click&#039;, &#039;.mip-read-btn&#039;, function() { $(this).hide(); $(&#039;.mip-dots&#039;).hide(); $(&#039;.mip-more&#039;).fadeIn(); });&lt;br /&gt;
            $(document).off(&#039;click&#039;, &#039;#mip-toggle-orig&#039;).on(&#039;click&#039;, &#039;#mip-toggle-orig&#039;, function() {&lt;br /&gt;
                var isOrig = ($(this).text() === &#039;Tampilkan versi asli&#039;);&lt;br /&gt;
                var textToDisplay = applyAutoBold(applyDynamicContext(isOrig ? originalText : currentText));&lt;br /&gt;
                $descBox.html(thumbHtml + applySummary(textToDisplay) + &#039;&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;);&lt;br /&gt;
                $(this).text(isOrig ? &#039;Tampilkan terjemahan&#039; : &#039;Tampilkan versi asli&#039;);&lt;br /&gt;
            });&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        init();&lt;br /&gt;
    });&lt;br /&gt;
})();&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================&lt;br /&gt;
   🚀 MIPPEDIA DATA - CORE SYSTEM (ULTIMATE BUNDLE)&lt;br /&gt;
   Status: FINAL &amp;amp; REVISED (Visual Fix + Permission Logic)&lt;br /&gt;
   Fix: Mobile Responsive Notification Position&lt;br /&gt;
   ========================================================== */&lt;br /&gt;
&lt;br /&gt;
(function() {&lt;br /&gt;
    $(document).ready(function() {&lt;br /&gt;
        // --- 1. FILTER GLOBAL (Namespace 0 &amp;amp; Bukan Halaman Utama) ---&lt;br /&gt;
        if (mw.config.get(&#039;wgNamespaceNumber&#039;) !== 0 || &lt;br /&gt;
            mw.config.get(&#039;wgIsMainPage&#039;) || &lt;br /&gt;
            mw.config.get(&#039;wgAction&#039;) !== &#039;view&#039;) return;&lt;br /&gt;
&lt;br /&gt;
        var pageTitle = mw.config.get(&#039;wgPageName&#039;);&lt;br /&gt;
        var dataPage = &#039;MediaWiki:Sitelinks-Data.json&#039;;&lt;br /&gt;
        var userGroups = mw.config.get(&#039;wgUserGroups&#039;);&lt;br /&gt;
        var isAdmin = userGroups.includes(&#039;sysop&#039;) || userGroups.includes(&#039;interface-admin&#039;);&lt;br /&gt;
&lt;br /&gt;
        var projects = {&lt;br /&gt;
            &#039;id&#039;: { name: &#039;ID&#039;, url: &#039;https://id.mippedia.org/api.php&#039;, base: &#039;https://id.mippedia.org/wiki/&#039;, color: &#039;#6a5acd&#039; },&lt;br /&gt;
            &#039;en&#039;: { name: &#039;EN&#039;, url: &#039;https://en.mippedia.org/api.php&#039;, base: &#039;https://en.mippedia.org/wiki/&#039;, color: &#039;#4169e1&#039; },&lt;br /&gt;
            &#039;concise&#039;: { name: &#039;Concise&#039;, url: &#039;https://concise.mippedia.org/api.php&#039;, base: &#039;https://concise.mippedia.org/wiki/&#039;, color: &#039;#20b2aa&#039; }&lt;br /&gt;
        };&lt;br /&gt;
&lt;br /&gt;
        // --- 2. KOTAK NOTIFIKASI INFORMASI MODERN (FIXED MOBILE POSITION) ---&lt;br /&gt;
        function showBoxNotif(title, msg, type) {&lt;br /&gt;
            $(&#039;.mip-box-notif&#039;).remove();&lt;br /&gt;
            var theme = type === &#039;success&#039; ? {bg:&#039;#e6fffa&#039;, border:&#039;#38b2ac&#039;, text:&#039;#234e52&#039;, icon:&#039;&#039;} : &lt;br /&gt;
                        {bg:&#039;#fff5f5&#039;, border:&#039;#f56565&#039;, text:&#039;#742a2a&#039;, icon:&#039;&#039;};&lt;br /&gt;
            &lt;br /&gt;
            // Logika CSS Responsif untuk posisi&lt;br /&gt;
            var isMobile = window.innerWidth &amp;lt;= 768;&lt;br /&gt;
            var desktopStyle = &amp;quot;top:25px; right:25px; width:350px;&amp;quot;;&lt;br /&gt;
            var mobileStyle = &amp;quot;top:15px; left:50%; transform:translateX(-50%); width:90%; max-width:400px;&amp;quot;;&lt;br /&gt;
            var finalPos = isMobile ? mobileStyle : desktopStyle;&lt;br /&gt;
&lt;br /&gt;
            var $notif = $(&#039;&amp;lt;div class=&amp;quot;mip-box-notif&amp;quot; style=&amp;quot;position:fixed; &#039; + finalPos + &#039; background:&#039;+theme.bg+&#039;; border-left:6px solid &#039;+theme.border+&#039;; padding:18px; z-index:10001; border-radius:12px; box-shadow:0 15px 35px rgba(0,0,0,0.2); font-family:sans-serif; animation:mipSlideIn 0.4s ease-out;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                &#039;&amp;lt;div style=&amp;quot;display:flex; align-items:center; gap:12px; margin-bottom:8px;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                    &#039;&amp;lt;span style=&amp;quot;font-size:20px;&amp;quot;&amp;gt;&#039;+theme.icon+&#039;&amp;lt;/span&amp;gt;&#039; +&lt;br /&gt;
                    &#039;&amp;lt;strong style=&amp;quot;color:&#039;+theme.text+&#039;; font-size:15px; letter-spacing:-0.3px;&amp;quot;&amp;gt;&#039;+title+&#039;&amp;lt;/strong&amp;gt;&#039; +&lt;br /&gt;
                &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
                &#039;&amp;lt;p style=&amp;quot;margin:0; font-size:13px; color:&#039;+theme.text+&#039;; line-height:1.6; opacity:0.9;&amp;quot;&amp;gt;&#039;+msg+&#039;&amp;lt;/p&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;/div&amp;gt;&#039;).appendTo(&#039;body&#039;);&lt;br /&gt;
&lt;br /&gt;
            setTimeout(function() { $notif.fadeOut(function(){ $(this).remove(); }); }, 5500);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // --- 3. UI GENERATOR (DIPERTEBAL) ---&lt;br /&gt;
&lt;br /&gt;
      // A. Header Pro&lt;br /&gt;
        var headerHtml = &#039;&amp;lt;div id=&amp;quot;mip-header&amp;quot; style=&amp;quot;background:#f8f9fa; border:1px solid #ddd; border-left:6px solid #6a5acd; padding:18px; margin-bottom:25px; border-radius:6px; box-shadow:inset 0 0 10px rgba(0,0,0,0.02);&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;div style=&amp;quot;display:flex; align-items:center; gap:10px; margin-bottom:8px;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;span style=&amp;quot;background:#6a5acd; color:white; padding:3px 10px; border-radius:4px; font-size:11px; font-weight:bold; text-transform:uppercase; letter-spacing:0.5px;&amp;quot;&amp;gt;Basis Data Terstruktur&amp;lt;/span&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;strong style=&amp;quot;color:#111; font-size:16px;&amp;quot;&amp;gt;&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;p style=&amp;quot;margin:0; font-size:13px; color:#444; line-height:1.6;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
            &#039;Halaman ini adalah metadata entitas repositori pusat yang disinkronisasi secara otomatis lintas ekosistem. &#039; +&lt;br /&gt;
            &#039;Informasi di bawah ini bersifat teknis dan bebas digunakan sebagai referensi data terbuka bagi semua orang di seluruh dunia berdasarkan lisensi atribusi yang sesuai.&#039; +&lt;br /&gt;
            &#039;&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
        // B. Connector Box&lt;br /&gt;
        var editBtn = &#039;&amp;lt;span id=&amp;quot;mip-open-editor&amp;quot; style=&amp;quot;cursor:pointer; font-size:20px; color:#6a5acd; opacity:0.8; transition:0.3s;&amp;quot; onmouseover=&amp;quot;this.style.opacity=1&amp;quot; onmouseout=&amp;quot;this.style.opacity=0.8&amp;quot;&amp;gt;✎&amp;lt;/span&amp;gt;&#039;;&lt;br /&gt;
        var connectorHtml = &#039;&amp;lt;div id=&amp;quot;mip-connector&amp;quot; style=&amp;quot;background:#fff; border:1px solid #e2e8f0; border-radius:16px; padding:22px; margin-top:30px; box-shadow:0 10px 25px rgba(0,0,0,0.04);&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;div style=&amp;quot;display:flex; justify-content:space-between; align-items:center; margin-bottom:20px;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;strong style=&amp;quot;font-size:15px; color:#1a202c; display:flex; align-items:center; gap:8px;&amp;quot;&amp;gt;ID situs&amp;lt;/strong&amp;gt;&#039;+editBtn+&#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;div id=&amp;quot;mip-display&amp;quot; style=&amp;quot;display:flex; gap:12px; flex-wrap:wrap;&amp;quot;&amp;gt;&amp;lt;small style=&amp;quot;color:#a0aec0;&amp;quot;&amp;gt;Mensinkronisasi basis data...&amp;lt;/small&amp;gt;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;div id=&amp;quot;mip-editor&amp;quot; style=&amp;quot;display:none; margin-top:20px; border-top:2px solid #f7fafc; padding-top:20px;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                Object.keys(projects).map(p =&amp;gt; &#039;&amp;lt;div style=&amp;quot;margin-bottom:12px; display:flex; gap:10px;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;width:75px; font-size:11px; font-weight:bold; background:#edf2f7; display:flex; align-items:center; justify-content:center; border-radius:8px; color:#4a5568;&amp;quot;&amp;gt;&#039;+projects[p].name+&#039;&amp;lt;/span&amp;gt;&amp;lt;input type=&amp;quot;text&amp;quot; id=&amp;quot;in-&#039;+p+&#039;&amp;quot; placeholder=&amp;quot;Judul artikel di &#039;+projects[p].name+&#039;...&amp;quot; style=&amp;quot;flex:1; padding:10px; font-size:13px; border:1.5px solid #e2e8f0; border-radius:10px; outline:none; transition:0.2s;&amp;quot; onfocus=&amp;quot;this.style.borderColor=\&#039;#6a5acd\&#039;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;).join(&#039;&#039;) +&lt;br /&gt;
                &#039;&amp;lt;button id=&amp;quot;mip-save&amp;quot; style=&amp;quot;width:100%; padding:14px; background:#6a5acd; color:white; border:none; border-radius:12px; font-size:14px; font-weight:bold; cursor:pointer; box-shadow:0 4px 12px rgba(106,90,205,0.3); transition:0.3s;&amp;quot;&amp;gt;Terbitkan&amp;lt;/button&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
        // C. Footer Lisensi Lengkap&lt;br /&gt;
        var footerHtml = &#039;&amp;lt;div id=&amp;quot;mip-footer&amp;quot; style=&amp;quot;background:#fafafa; border:1px solid #eee; border-radius:10px; padding:20px; margin-top:30px; text-align:center;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;div style=&amp;quot;font-size:11px; color:#718096; font-weight:800; text-transform:uppercase; letter-spacing:1px; margin-bottom:10px;&amp;quot;&amp;gt;Lisensi, Atribusi &amp;amp; Penggunaan Data&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;p style=&amp;quot;margin:0 0 10px; font-size:13px; color:#4a5568; line-height:1.6;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
            &#039;Seluruh data terstruktur yang tersaji dalam repositori ini merupakan milik publik dan tersedia di bawah lisensi resmi &#039; +&lt;br /&gt;
            &#039;&amp;lt;a href=&amp;quot;https://creativecommons.org/licenses/by-sa/4.0/&amp;quot; target=&amp;quot;_blank&amp;quot; style=&amp;quot;color:#6a5acd; text-decoration:none; font-weight:700;&amp;quot;&amp;gt;Creative Commons Attribution-ShareAlike 4.0 International&amp;lt;/a&amp;gt;.&#039; +&lt;br /&gt;
            &#039;&amp;lt;/p&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;p style=&amp;quot;margin:0; font-size:12px; color:#a0aec0;&amp;quot;&amp;gt;Akses API dan penggunaan data secara massal wajib mencantumkan atribusi kepada &amp;lt;strong&amp;gt;Mippedia Community&amp;lt;/strong&amp;gt; selaku pengelola proyek.&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
        // Injeksi&lt;br /&gt;
        $(&#039;#mw-content-text&#039;).prepend(headerHtml);&lt;br /&gt;
        $(&#039;#mw-content-text&#039;).append(connectorHtml).append(footerHtml);&lt;br /&gt;
&lt;br /&gt;
        // --- 4. LOGIC ENGINE ---&lt;br /&gt;
        function loadLinks() {&lt;br /&gt;
            new mw.Api().get({ action: &#039;query&#039;, prop: &#039;revisions&#039;, titles: dataPage, rvprop: &#039;content&#039;, formatversion: 2 }).done(function(d) {&lt;br /&gt;
                var json = d.query.pages[0].revisions ? JSON.parse(d.query.pages[0].revisions[0].content) : {};&lt;br /&gt;
                var data = json[pageTitle] || {};&lt;br /&gt;
                var $box = $(&#039;#mip-display&#039;).empty();&lt;br /&gt;
                var found = false;&lt;br /&gt;
                Object.keys(projects).forEach(p =&amp;gt; {&lt;br /&gt;
                    if (data[p]) {&lt;br /&gt;
                        found = true;&lt;br /&gt;
                        $box.append(&#039;&amp;lt;a style=&amp;quot;background:&#039;+projects[p].color+&#039;; color:white; padding:8px 16px; border-radius:10px; font-size:12px; font-weight:bold; text-decoration:none; border-bottom:3px solid rgba(0,0,0,0.15);&amp;quot; href=&amp;quot;&#039;+projects[p].base+encodeURIComponent(data[p])+&#039;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Mippedia &#039;+projects[p].name+&#039;: &#039;+data[p]+&#039;&amp;lt;/a&amp;gt;&#039;);&lt;br /&gt;
                        $(&#039;#in-&#039; + p).val(data[p]);&lt;br /&gt;
                    }&lt;br /&gt;
                });&lt;br /&gt;
                if (!found) $box.html(&#039;&amp;lt;em style=&amp;quot;color:#cbd5e0; font-size:13px;&amp;quot;&amp;gt;Entitas ini belum terhubung ke cabang Mippedia manapun.&amp;lt;/em&amp;gt;&#039;);&lt;br /&gt;
            });&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        $(document).on(&#039;click&#039;, &#039;#mip-save&#039;, function() {&lt;br /&gt;
            // CEK IZIN: Tolak user biasa&lt;br /&gt;
            if (!isAdmin) {&lt;br /&gt;
                showBoxNotif(&#039;Suntingan anda tidak di terbitkan&#039;, &#039;Halaman ini dilindungi. Hanya &amp;lt;b&amp;gt;Pengurus&amp;lt;/b&amp;gt; yang memiliki otoritas untuk memodifikasi metadata ekosistem secara langsung.&#039;, &#039;error&#039;);&lt;br /&gt;
                return;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            var $btn = $(this).text(&#039;Sedang Memvalidasi...&#039;).prop(&#039;disabled&#039;, true);&lt;br /&gt;
            var api = new mw.Api();&lt;br /&gt;
            var newData = {}, promises = [], invalid = [], isDel = true;&lt;br /&gt;
&lt;br /&gt;
            Object.keys(projects).forEach(p =&amp;gt; {&lt;br /&gt;
                var v = $(&#039;#in-&#039; + p).val().trim();&lt;br /&gt;
                if (v) {&lt;br /&gt;
                    isDel = false;&lt;br /&gt;
                    promises.push($.ajax({ url: projects[p].url, data: { action: &#039;query&#039;, titles: v, format: &#039;json&#039;, origin: &#039;*&#039; }, dataType: &#039;json&#039; }).done(function(res){&lt;br /&gt;
                        if (res.query.pages[&amp;quot;-1&amp;quot;]) invalid.push(projects[p].name); else newData[p] = v;&lt;br /&gt;
                    }));&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
&lt;br /&gt;
            $.when.apply($, promises).then(function() {&lt;br /&gt;
                if (invalid.length &amp;gt; 0) {&lt;br /&gt;
                    showBoxNotif(&#039;Suntingan anda tidak di terbitkan&#039;, &#039;Artikel dengan judul tersebut tidak ditemukan di basis data Mippedia cabang: &#039; + invalid.join(&#039;, &#039;) + &#039;. Periksa kembali ejaan dan kapitalisasi.&#039;, &#039;error&#039;);&lt;br /&gt;
                    $btn.text(&#039;Terbitkan&#039;).prop(&#039;disabled&#039;, false); return;&lt;br /&gt;
                }&lt;br /&gt;
                &lt;br /&gt;
                api.get({ action: &#039;query&#039;, prop: &#039;revisions&#039;, titles: dataPage, rvprop: &#039;content&#039;, formatversion: 2 }).done(function(r) {&lt;br /&gt;
                    var full = r.query.pages[0].revisions ? JSON.parse(r.query.pages[0].revisions[0].content) : {};&lt;br /&gt;
                    if (isDel) delete full[pageTitle]; else full[pageTitle] = newData;&lt;br /&gt;
                    &lt;br /&gt;
                    api.postWithEditToken({ action: &#039;edit&#039;, title: dataPage, text: JSON.stringify(full, null, 2), summary: &#039;Sync Metadata: &#039; + pageTitle })&lt;br /&gt;
                    .done(function() {&lt;br /&gt;
                        showBoxNotif(&#039;Suntingan anda berhasil di terbitkan!&#039;, &#039;Metadata entitas berhasil disinkronisasi ke seluruh jaringan ekosistem Mippedia.&#039;, &#039;success&#039;);&lt;br /&gt;
                        setTimeout(function(){ location.reload(); }, 1500);&lt;br /&gt;
                    }).fail(function(c) {&lt;br /&gt;
                        showBoxNotif(&#039;Gagal Menyimpan&#039;, &#039;Terjadi kesalahan pada token API atau koneksi server. Kode: &#039; + c, &#039;error&#039;);&lt;br /&gt;
                        $btn.text(&#039;Simpan &amp;amp; Sinkronkan Data&#039;).prop(&#039;disabled&#039;, false);&lt;br /&gt;
                    });&lt;br /&gt;
                });&lt;br /&gt;
            });&lt;br /&gt;
        });&lt;br /&gt;
&lt;br /&gt;
        $(document).on(&#039;click&#039;, &#039;#mip-open-editor&#039;, function() { $(&#039;#mip-editor&#039;).slideToggle(); });&lt;br /&gt;
        loadLinks();&lt;br /&gt;
    });&lt;br /&gt;
})();&lt;br /&gt;
&lt;br /&gt;
(function() {&lt;br /&gt;
    // Fungsi utama suntik teks&lt;br /&gt;
    function forcePreload() {&lt;br /&gt;
        var ns = mw.config.get(&#039;wgNamespaceNumber&#039;);&lt;br /&gt;
        var pageExists = mw.config.get(&#039;wgArticleId&#039;) &amp;gt; 0;&lt;br /&gt;
        &lt;br /&gt;
        // Cek Namespace Utama &amp;amp; Halaman Baru&lt;br /&gt;
        if (ns === 0 &amp;amp;&amp;amp; !pageExists) {&lt;br /&gt;
            // Cari textarea secara spesifik (Desktop &amp;amp; Mobile punya selector beda)&lt;br /&gt;
            var $textbox = $(&#039;#wpTextbox1, textarea.mw-ui-input, .editor-container textarea&#039;);&lt;br /&gt;
            &lt;br /&gt;
            if ($textbox.length &amp;amp;&amp;amp; $textbox.val().trim() === &amp;quot;&amp;quot;) {&lt;br /&gt;
                var pageName = mw.config.get(&#039;wgTitle&#039;);&lt;br /&gt;
                $textbox.val(&#039;{{Infobox umum\n|nama = &#039; + pageName + &#039;\n}}&#039;);&lt;br /&gt;
                console.log(&amp;quot;Mippedia: Infobox injected!&amp;quot;);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // 1. Jalankan pas halaman beres load&lt;br /&gt;
    $(document).ready(forcePreload);&lt;br /&gt;
&lt;br /&gt;
    // 2. Jalankan tiap ada klik (karena mobile buka editor pake klik tanpa refresh)&lt;br /&gt;
    $(document).on(&#039;click&#039;, function() {&lt;br /&gt;
        setTimeout(forcePreload, 800); // Kasih delay dikit nunggu overlay muncul&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    // 3. Pake MutationObserver buat mantau elemen yang baru muncul secara gaib&lt;br /&gt;
    var observer = new MutationObserver(function() {&lt;br /&gt;
        forcePreload();&lt;br /&gt;
    });&lt;br /&gt;
    observer.observe(document.body, { childList: true, subtree: true });&lt;br /&gt;
})();&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================&lt;br /&gt;
   🚀 MIPPEDIA DATA - CONTENT GUARD (MODIFIED FOR RELATED)&lt;br /&gt;
   ========================================================== */&lt;br /&gt;
(function() {&lt;br /&gt;
    function handleBlock(e) {&lt;br /&gt;
        var ns = mw.config.get(&#039;wgNamespaceNumber&#039;);&lt;br /&gt;
        if (ns !== 0 || mw.config.get(&#039;wgIsMainPage&#039;)) return;&lt;br /&gt;
&lt;br /&gt;
        var $el = $(e.currentTarget);&lt;br /&gt;
        &lt;br /&gt;
        if ($el.closest(&#039;.mw-parser-output&#039;).length &amp;amp;&amp;amp; $el.text().toLowerCase().includes(&#039;buat item&#039;)) {&lt;br /&gt;
            return; &lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        var $textbox = $(&#039;#wpTextbox1, .editor-container textarea, textarea.mw-ui-input&#039;);&lt;br /&gt;
        &lt;br /&gt;
        if ($textbox.length) {&lt;br /&gt;
            var content = $textbox.val() || &amp;quot;&amp;quot;;&lt;br /&gt;
            &lt;br /&gt;
            // Pengecekan: Harus ada {{Infobox ATAU setidaknya ada kode #related&lt;br /&gt;
            var hasInfobox = content.includes(&#039;{{Infobox&#039;);&lt;br /&gt;
            var hasRelated = content.includes(&#039;#related:&#039;);&lt;br /&gt;
&lt;br /&gt;
            if (!hasInfobox &amp;amp;&amp;amp; !hasRelated) {&lt;br /&gt;
                e.preventDefault();&lt;br /&gt;
                e.stopPropagation();&lt;br /&gt;
                e.stopImmediatePropagation();&lt;br /&gt;
&lt;br /&gt;
                window.alert(&amp;quot;SUNTINGAN ANDA TIDAK BISA DI TERBITKAN!\n\nMippedia Data bukan tempat untuk menulis artikel ensiklopedia, Jika anda ingin membuat artikel ensiklopedia bukan di sini tempat nya.\n&amp;quot;);&lt;br /&gt;
                return false;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    $(document).on(&#039;click mousedown touchstart&#039;, &lt;br /&gt;
        &#039;#wpSave, .editor-save, .mw-ui-button.primary, button[type=&amp;quot;submit&amp;quot;], .save-button, .header-action button&#039;, &lt;br /&gt;
        function(e) {&lt;br /&gt;
            handleBlock(e);&lt;br /&gt;
        }&lt;br /&gt;
    );&lt;br /&gt;
&lt;br /&gt;
    window.addEventListener(&#039;submit&#039;, function(e) {&lt;br /&gt;
        handleBlock(e);&lt;br /&gt;
    }, true);&lt;br /&gt;
})();&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================&lt;br /&gt;
   🛡️ MIPPEDIA CORE SYSTEM - NEURAL ENGINE V12&lt;br /&gt;
   Update: Brain Upgrade - Semantic Search &amp;amp; Anti-Duplicate&lt;br /&gt;
   Semua fitur asli (Patroli, Promo, Kategori) tetap UTUH.&lt;br /&gt;
   ========================================================== */&lt;br /&gt;
mw.hook(&#039;postEdit&#039;).add(function() {&lt;br /&gt;
    var rawUser = mw.config.get(&#039;wgUserName&#039;);&lt;br /&gt;
    var userName = rawUser ? rawUser.replace(/_/g, &#039; &#039;) : &#039;Anonim&#039;;&lt;br /&gt;
    var isPatroli = (userName === &#039;Admin&#039;);&lt;br /&gt;
    &lt;br /&gt;
    if (mw.config.get(&#039;wgNamespaceNumber&#039;) !== 0) return;&lt;br /&gt;
&lt;br /&gt;
    var api = new mw.Api();&lt;br /&gt;
    var pageTitle = mw.config.get(&#039;wgPageName&#039;).replace(/_/g, &#039; &#039;);&lt;br /&gt;
&lt;br /&gt;
    api.get({&lt;br /&gt;
        action: &#039;query&#039;,&lt;br /&gt;
        titles: pageTitle,&lt;br /&gt;
        prop: &#039;revisions|categories|links&#039;,&lt;br /&gt;
        rvprop: &#039;content&#039;,&lt;br /&gt;
        clshow: &#039;!hidden&#039;,&lt;br /&gt;
        pllimit: &#039;max&#039;&lt;br /&gt;
    }).done(function(resData) {&lt;br /&gt;
        var page = resData.query.pages[Object.keys(resData.query.pages)[0]];&lt;br /&gt;
        if (!page || !page.revisions) return;&lt;br /&gt;
&lt;br /&gt;
        var rawContent = page.revisions[0][&#039;*&#039;];&lt;br /&gt;
        var content = rawContent;&lt;br /&gt;
        var summaryParts = [];&lt;br /&gt;
&lt;br /&gt;
        // --- 2. SUPER INTELLIGENCE RELATED (UPGRADE OTAK V12) ---&lt;br /&gt;
        // Cek jumlah related saat ini&lt;br /&gt;
        var currentRelatedMatch = content.match(/\{\{#related:.*?\}\}/g) || [];&lt;br /&gt;
        &lt;br /&gt;
        // Jika kurang dari 3, kita jalankan otak pencarian canggih&lt;br /&gt;
        if (currentRelatedMatch.length &amp;lt; 3) {&lt;br /&gt;
            // Hapus yang lama dulu agar tidak ada duplikat atau &amp;quot;pake yang bekas&amp;quot;&lt;br /&gt;
            content = content.replace(/\n*\{\{#related:.*?\}\}/g, &#039;&#039;);&lt;br /&gt;
&lt;br /&gt;
            // Langkah A: Ambil kandidat dari Search Engine (Ranking Skor)&lt;br /&gt;
            api.get({&lt;br /&gt;
                action: &#039;query&#039;,&lt;br /&gt;
                list: &#039;search&#039;,&lt;br /&gt;
                srsearch: pageTitle, // Gunakan judul sebagai basis pencarian semantic&lt;br /&gt;
                srlimit: 15,&lt;br /&gt;
                srprop: &#039;&#039;&lt;br /&gt;
            }).done(function(searchRes) {&lt;br /&gt;
                var candidates = {};&lt;br /&gt;
&lt;br /&gt;
                // Masukkan hasil pencarian ke pool skor&lt;br /&gt;
                if (searchRes.query &amp;amp;&amp;amp; searchRes.query.search) {&lt;br /&gt;
                    searchRes.query.search.forEach(function(item, index) {&lt;br /&gt;
                        if (item.title === pageTitle) return;&lt;br /&gt;
                        candidates[item.title] = (15 - index); // Skor berdasarkan urutan relevansi&lt;br /&gt;
                    });&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                // Langkah B: Tambah skor jika artikel ada di daftar Link Internal&lt;br /&gt;
                if (page.links) {&lt;br /&gt;
                    page.links.forEach(function(link) {&lt;br /&gt;
                        if (link.title === pageTitle) return;&lt;br /&gt;
                        candidates[link.title] = (candidates[link.title] || 0) + 5; // Bonus skor link&lt;br /&gt;
                    });&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                // Langkah C: Urutkan berdasarkan skor tertinggi (yang paling nyambung)&lt;br /&gt;
                var sortedTitles = Object.keys(candidates).sort(function(a, b) {&lt;br /&gt;
                    return candidates[b] - candidates[a];&lt;br /&gt;
                });&lt;br /&gt;
&lt;br /&gt;
                // Ambil TOP 3&lt;br /&gt;
                var finalRelated = sortedTitles.filter(t =&amp;gt; t.indexOf(&#039;:&#039;) === -1).slice(0, 3);&lt;br /&gt;
&lt;br /&gt;
                if (finalRelated.length &amp;gt; 0) {&lt;br /&gt;
                    var relatedTags = &#039;\n\n&#039; + finalRelated.map(t =&amp;gt; &#039;{{#related: &#039; + t + &#039;}}&#039;).join(&#039;\n&#039;);&lt;br /&gt;
                    content += relatedTags;&lt;br /&gt;
                    summaryParts.push(&#039;NeuralRelated&#039;);&lt;br /&gt;
                }&lt;br /&gt;
                &lt;br /&gt;
                runPatroliAndSave();&lt;br /&gt;
            });&lt;br /&gt;
        } else {&lt;br /&gt;
            runPatroliAndSave();&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        function runPatroliAndSave() {&lt;br /&gt;
            // --- 3. PATROLI ENGINE (FITUR ASLI - TETAP BERFUNGSI) ---&lt;br /&gt;
            if (isPatroli) {&lt;br /&gt;
                var placeholders = [];&lt;br /&gt;
                // Lindungi Brankas: Template, Header, Kategori, Ref, dan Kalimat Pembuka&lt;br /&gt;
                content = content.replace(/(\{\{[\s\S]*?\}\}|==+.*?==+|\[\[Kategori:.*?\]\]|&amp;lt;ref[\s\S]*?&amp;lt;\/ref&amp;gt;|^.*?adalah)/gi, function(match) {&lt;br /&gt;
                    placeholders.push(match);&lt;br /&gt;
                    return &#039;___MIP_SKIP_&#039; + (placeholders.length - 1) + &#039;___&#039;;&lt;br /&gt;
                });&lt;br /&gt;
&lt;br /&gt;
                // Proses Auto-Link (Wajib ambil daftar AllPages dulu)&lt;br /&gt;
                api.get({ action: &#039;query&#039;, list: &#039;allpages&#039;, apnamespace: 0, aplimit: &#039;max&#039; }).done(function(apData) {&lt;br /&gt;
                    var allTitles = apData.query.allpages.map(p =&amp;gt; p.title);&lt;br /&gt;
                    var lowerTitles = allTitles.map(t =&amp;gt; t.toLowerCase());&lt;br /&gt;
&lt;br /&gt;
                    var tokens = content.split(/(\s+|\[\[|\]\])/);&lt;br /&gt;
                    var inLink = false;&lt;br /&gt;
                    for (var i = 0; i &amp;lt; tokens.length; i++) {&lt;br /&gt;
                        if (tokens[i] === &#039;[[&#039; ) { inLink = true; continue; }&lt;br /&gt;
                        if (tokens[i] === &#039;]]&#039; ) { inLink = false; continue; }&lt;br /&gt;
                        if (inLink || tokens[i].trim().length &amp;lt; 3 || tokens[i].includes(&#039;___MIP_SKIP_&#039;)) continue;&lt;br /&gt;
&lt;br /&gt;
                        var wordsInToken = tokens[i].match(/\b\w+\b/g);&lt;br /&gt;
                        if (wordsInToken) {&lt;br /&gt;
                            wordsInToken.forEach(function(word) {&lt;br /&gt;
                                var idx = lowerTitles.indexOf(word.toLowerCase());&lt;br /&gt;
                                if (idx !== -1 &amp;amp;&amp;amp; allTitles[idx] !== pageTitle) {&lt;br /&gt;
                                    tokens[i] = tokens[i].replace(new RegExp(&#039;\\b&#039; + word + &#039;\\b&#039;, &#039;g&#039;), &#039;[[&#039; + allTitles[idx] + &#039;|&#039; + word + &#039;]]&#039;);&lt;br /&gt;
                                }&lt;br /&gt;
                            });&lt;br /&gt;
                        }&lt;br /&gt;
                    }&lt;br /&gt;
                    content = tokens.join(&#039;&#039;);&lt;br /&gt;
                    &lt;br /&gt;
                    // Kembalikan dari Brankas&lt;br /&gt;
                    content = content.replace(/___MIP_SKIP_(\d+)___/g, function(match, id) { return placeholders[id]; });&lt;br /&gt;
&lt;br /&gt;
                    // Bersihkan Link Merah&lt;br /&gt;
                    content = content.replace(/\[\[([^|\]:]+)\]\]/g, function(match, p1) {&lt;br /&gt;
                        return lowerTitles.includes(p1.toLowerCase()) ? match : p1;&lt;br /&gt;
                    });&lt;br /&gt;
&lt;br /&gt;
                    saveAction();&lt;br /&gt;
                });&lt;br /&gt;
            } else {&lt;br /&gt;
                saveAction();&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        function saveAction() {&lt;br /&gt;
            // --- 4. EKSEKUSI ---&lt;br /&gt;
            if (content.trim() !== rawContent.trim()) {&lt;br /&gt;
                api.postWithToken(&#039;edit&#039;, {&lt;br /&gt;
                    action: &#039;edit&#039;,&lt;br /&gt;
                    title: pageTitle,&lt;br /&gt;
                    text: content,&lt;br /&gt;
                    summary: &#039;Mippedia Neural Engine V12: &#039; + summaryParts.join(&#039;, &#039;),&lt;br /&gt;
                    bot: true, markasbot: true&lt;br /&gt;
                }).done(function() { location.reload(); });&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    });&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================&lt;br /&gt;
   🌐 MIPPEDIA SHORTDESC - DATA CENTER (PREMIUM UI)&lt;br /&gt;
   Status: INDEPENDENT &amp;amp; REFINED VISUAL&lt;br /&gt;
   Storage: MediaWiki:ShortDesc-Data.json&lt;br /&gt;
   ========================================================== */&lt;br /&gt;
(function($, mw) {&lt;br /&gt;
    &amp;quot;use strict&amp;quot;;&lt;br /&gt;
    $(document).ready(function() {&lt;br /&gt;
        if (mw.config.get(&#039;wgNamespaceNumber&#039;) !== 0 || mw.config.get(&#039;wgIsMainPage&#039;)) return;&lt;br /&gt;
&lt;br /&gt;
        var pageTitle = mw.config.get(&#039;wgPageName&#039;);&lt;br /&gt;
        var storagePage = &#039;MediaWiki:ShortDesc-Data.json&#039;;&lt;br /&gt;
        var isAdmin = mw.config.get(&#039;wgUserGroups&#039;).some(g =&amp;gt; [&#039;sysop&#039;, &#039;interface-admin&#039;].includes(g));&lt;br /&gt;
&lt;br /&gt;
        var langs = {&lt;br /&gt;
            id: { label: &#039;Mippedia bahasa Indonesia&#039;, short: &#039;ID&#039;, color: &#039;#6366f1&#039; },&lt;br /&gt;
            en: { label: &#039;Mippedia bahasa Inggris&#039;, short: &#039;EN&#039;, color: &#039;#3b82f6&#039; },&lt;br /&gt;
            concise: { label: &#039;Mippedia bahasa Indonesia ringkas&#039;, short: &#039;CON&#039;, color: &#039;#14b8a6&#039; }&lt;br /&gt;
        };&lt;br /&gt;
&lt;br /&gt;
        // UI Box dengan Spasi dan Desain Baru&lt;br /&gt;
        var html = `&lt;br /&gt;
            &amp;lt;div id=&amp;quot;desc-manager&amp;quot; style=&amp;quot;background:#ffffff; border:1px solid #f1f5f9; border-left:4px solid #6366f1; border-radius:12px; padding:20px; margin: 20px 0 25px 0; box-shadow:0 4px 12px rgba(0,0,0,0.03); font-family: -apple-system,BlinkMacSystemFont,&#039;Segoe UI&#039;,Roboto,sans-serif;&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;div style=&amp;quot;display:flex; justify-content:space-between; align-items:center; margin-bottom:12px;&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;span style=&amp;quot;font-size:13px; font-weight:700; color:#475569; text-transform:uppercase; letter-spacing:0.5px; display:flex; align-items:center; gap:6px;&amp;quot;&amp;gt;&lt;br /&gt;
                        Label Deskripsi&lt;br /&gt;
                    &amp;lt;/span&amp;gt;&lt;br /&gt;
                    &amp;lt;span id=&amp;quot;desc-open-editor&amp;quot; style=&amp;quot;cursor:pointer; padding:5px; transition:0.2s;&amp;quot; title=&amp;quot;Edit Deskripsi&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;svg width=&amp;quot;16&amp;quot; height=&amp;quot;16&amp;quot; viewBox=&amp;quot;0 0 24 24&amp;quot; fill=&amp;quot;none&amp;quot; stroke=&amp;quot;#94a3b8&amp;quot; stroke-width=&amp;quot;2&amp;quot; stroke-linecap=&amp;quot;round&amp;quot; stroke-linejoin=&amp;quot;round&amp;quot;&amp;gt;&amp;lt;path d=&amp;quot;M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7&amp;quot;&amp;gt;&amp;lt;/path&amp;gt;&amp;lt;path d=&amp;quot;M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z&amp;quot;&amp;gt;&amp;lt;/path&amp;gt;&amp;lt;/svg&amp;gt;&lt;br /&gt;
                    &amp;lt;/span&amp;gt;&lt;br /&gt;
                &amp;lt;/div&amp;gt;&lt;br /&gt;
                &lt;br /&gt;
                &amp;lt;div id=&amp;quot;desc-status-display&amp;quot; style=&amp;quot;display:flex; flex-direction:column; gap:8px;&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;small style=&amp;quot;color:#94a3b8; font-style:italic;&amp;quot;&amp;gt;Sinkronisasi data...&amp;lt;/small&amp;gt;&lt;br /&gt;
                &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;div id=&amp;quot;desc-editor&amp;quot; style=&amp;quot;display:none; margin-top:18px; border-top:1px dashed #e2e8f0; padding-top:18px;&amp;quot;&amp;gt;&lt;br /&gt;
                    ${Object.keys(langs).map(k =&amp;gt; `&lt;br /&gt;
                        &amp;lt;div style=&amp;quot;margin-bottom:12px;&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;label style=&amp;quot;display:block; font-size:11px; font-weight:bold; color:#64748b; margin-bottom:4px;&amp;quot;&amp;gt;${langs[k].label}&amp;lt;/label&amp;gt;&lt;br /&gt;
                            &amp;lt;input type=&amp;quot;text&amp;quot; id=&amp;quot;desc-in-${k}&amp;quot; placeholder=&amp;quot;Tulis deskripsi...&amp;quot; style=&amp;quot;width:100%; padding:10px; font-size:13px; border:1px solid #e2e8f0; border-radius:8px; box-sizing:border-box; outline:none; focus:border-color:#6366f1;&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;/div&amp;gt;&lt;br /&gt;
                    `).join(&#039;&#039;)}&lt;br /&gt;
                    &amp;lt;button id=&amp;quot;desc-save&amp;quot; style=&amp;quot;width:100%; padding:12px; background:#6366f1; color:white; border:none; border-radius:8px; font-size:13px; font-weight:600; cursor:pointer; margin-top:5px;&amp;quot;&amp;gt;Terbitkan&amp;lt;/button&amp;gt;&lt;br /&gt;
                &amp;lt;/div&amp;gt;&lt;br /&gt;
            &amp;lt;/div&amp;gt;`;&lt;br /&gt;
&lt;br /&gt;
        $(&#039;.mw-parser-output&#039;).prepend(html);&lt;br /&gt;
&lt;br /&gt;
        function loadDescStatus() {&lt;br /&gt;
            new mw.Api().get({ action: &#039;query&#039;, prop: &#039;revisions&#039;, titles: storagePage, rvprop: &#039;content&#039;, formatversion: 2 }).done(function(res) {&lt;br /&gt;
                var content = res.query.pages[0].revisions ? res.query.pages[0].revisions[0].content : &amp;quot;{}&amp;quot;;&lt;br /&gt;
                var fullData = JSON.parse(content);&lt;br /&gt;
                var myData = fullData[pageTitle] || {};&lt;br /&gt;
                var $statusBox = $(&#039;#desc-status-display&#039;).empty();&lt;br /&gt;
                var foundAny = false;&lt;br /&gt;
&lt;br /&gt;
                Object.keys(langs).forEach(k =&amp;gt; {&lt;br /&gt;
                    var val = myData[k];&lt;br /&gt;
                    if (val &amp;amp;&amp;amp; val.trim() !== &amp;quot;&amp;quot;) {&lt;br /&gt;
                        foundAny = true;&lt;br /&gt;
                        $statusBox.append(`&lt;br /&gt;
                            &amp;lt;div style=&amp;quot;display:flex; align-items:center; gap:10px;&amp;quot;&amp;gt;&lt;br /&gt;
                                &amp;lt;span style=&amp;quot;background:${langs[k].color}15; color:${langs[k].color}; padding:3px 10px; border-radius:20px; font-size:10px; font-weight:800; border:1px solid ${langs[k].color}30; min-width:35px; text-align:center;&amp;quot;&amp;gt;${langs[k].short}&amp;lt;/span&amp;gt;&lt;br /&gt;
                                &amp;lt;span style=&amp;quot;font-size:13px; color:#334155; line-height:1.4;&amp;quot;&amp;gt;${val}&amp;lt;/span&amp;gt;&lt;br /&gt;
                            &amp;lt;/div&amp;gt;&lt;br /&gt;
                        `);&lt;br /&gt;
                        $(&#039;#desc-in-&#039; + k).val(val);&lt;br /&gt;
                    }&lt;br /&gt;
                });&lt;br /&gt;
&lt;br /&gt;
                if (!foundAny) {&lt;br /&gt;
                    $statusBox.html(&#039;&amp;lt;div style=&amp;quot;color:#cbd5e0; font-size:13px; background:#f8fafc; padding:10px; border-radius:8px; border:1px dashed #e2e8f0;&amp;quot;&amp;gt;Belum ada metadata deskripsi yang dikaitkan dengan entitas ini.&amp;lt;/div&amp;gt;&#039;);&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        $(document).on(&#039;click&#039;, &#039;#desc-open-editor&#039;, function() { $(&#039;#desc-editor&#039;).slideToggle(); });&lt;br /&gt;
&lt;br /&gt;
        $(document).on(&#039;click&#039;, &#039;#desc-save&#039;, function() {&lt;br /&gt;
            if (!isAdmin) { alert(&#039;Akses ditolak. Anda memerlukan izin pengurus.&#039;); return; }&lt;br /&gt;
            var $btn = $(this).text(&#039;Proses Sinkronisasi...&#039;).css(&#039;opacity&#039;,&#039;0.7&#039;);&lt;br /&gt;
            var api = new mw.Api();&lt;br /&gt;
            var newData = { id: $(&#039;#desc-in-id&#039;).val().trim(), en: $(&#039;#desc-in-en&#039;).val().trim(), concise: $(&#039;#desc-in-concise&#039;).val().trim() };&lt;br /&gt;
&lt;br /&gt;
            api.get({ action: &#039;query&#039;, prop: &#039;revisions&#039;, titles: storagePage, rvprop: &#039;content&#039;, formatversion: 2 }).done(function(r) {&lt;br /&gt;
                var json = r.query.pages[0].revisions ? JSON.parse(r.query.pages[0].revisions[0].content) : {};&lt;br /&gt;
                if (!newData.id &amp;amp;&amp;amp; !newData.en &amp;amp;&amp;amp; !newData.concise) { delete json[pageTitle]; } else { json[pageTitle] = newData; }&lt;br /&gt;
&lt;br /&gt;
                api.postWithEditToken({&lt;br /&gt;
                    action: &#039;edit&#039;,&lt;br /&gt;
                    title: storagePage,&lt;br /&gt;
                    text: JSON.stringify(json, null, 2),&lt;br /&gt;
                    summary: &#039;Update Entity Description: &#039; + pageTitle&lt;br /&gt;
                }).done(function() { location.reload(); });&lt;br /&gt;
            });&lt;br /&gt;
        });&lt;br /&gt;
&lt;br /&gt;
        loadDescStatus();&lt;br /&gt;
    });&lt;br /&gt;
})(jQuery, mediaWiki);&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================&lt;br /&gt;
   📍 MIPPEDIA DATA - ULTIMATE TEXT-TO-MAP LOCATOR&lt;br /&gt;
   Fitur: Deteksi lokasi dari teks dengan database label lengkap&lt;br /&gt;
   ========================================================== */&lt;br /&gt;
(function() {&lt;br /&gt;
    $(document).ready(function() {&lt;br /&gt;
        var locationText = &amp;quot;&amp;quot;;&lt;br /&gt;
        &lt;br /&gt;
        // --- DAFTAR LABEL SUPER LENGKAP &amp;amp; MASUK AKAL ---&lt;br /&gt;
        var locationLabels = [&lt;br /&gt;
            // Umum &amp;amp; Geografis&lt;br /&gt;
            &#039;lokasi&#039;, &#039;tempat&#039;, &#039;wilayah&#039;, &#039;daerah&#039;, &#039;koordinat&#039;, &#039;alamat&#039;,&lt;br /&gt;
            // Orang (Biografi)&lt;br /&gt;
            &#039;tempat lahir&#039;, &#039;asal&#039;, &#039;kediaman&#039;, &#039;domisili&#039;, &#039;negara asal&#039;,&lt;br /&gt;
            // Organisasi &amp;amp; Perusahaan&lt;br /&gt;
            &#039;kantor pusat&#039;, &#039;markas&#039;, &#039;cabang utama&#039;, &#039;titik operasi&#039;,&lt;br /&gt;
            // Makanan &amp;amp; Budaya&lt;br /&gt;
            &#039;asal wilayah&#039;, &#039;daerah asal&#039;, &#039;negara sumber&#039;, &#039;kawasan&#039;,&lt;br /&gt;
            // Sejarah &amp;amp; Bangunan&lt;br /&gt;
            &#039;letak&#039;, &#039;posisi&#039;, &#039;titik temu&#039;, &#039;orbit&#039;&lt;br /&gt;
        ];&lt;br /&gt;
&lt;br /&gt;
        // Jalankan pencarian di tabel data (infobox atau wikitable)&lt;br /&gt;
        $(&#039;.wikitable tr, .infobox tr, .mip-data-table tr&#039;).each(function() {&lt;br /&gt;
            var label = $(this).find(&#039;th&#039;).text().toLowerCase().trim();&lt;br /&gt;
            // Hilangkan karakter spesial kayak titik dua biar matching-nya akurat&lt;br /&gt;
            label = label.replace(/[:]/g, &#039;&#039;);&lt;br /&gt;
&lt;br /&gt;
            var isMatch = locationLabels.some(function(target) {&lt;br /&gt;
                return label === target || label.includes(target);&lt;br /&gt;
            });&lt;br /&gt;
&lt;br /&gt;
            if (isMatch) {&lt;br /&gt;
                var rawValue = $(this).find(&#039;td&#039;).text().trim();&lt;br /&gt;
                // Ambil bagian utama sebelum tanda koma, kurung, atau titik koma&lt;br /&gt;
                // Misal: &amp;quot;Bandung, Jawa Barat&amp;quot; -&amp;gt; ambil &amp;quot;Bandung&amp;quot;&lt;br /&gt;
                locationText = rawValue.split(/[,(\[;]/)[0].trim(); &lt;br /&gt;
                &lt;br /&gt;
                if (locationText.length &amp;gt; 2) return false; // Stop jika sudah ketemu yang valid&lt;br /&gt;
            }&lt;br /&gt;
        });&lt;br /&gt;
&lt;br /&gt;
        // Eksekusi Render Peta&lt;br /&gt;
        if (locationText &amp;amp;&amp;amp; locationText.length &amp;gt; 2) {&lt;br /&gt;
            var $mapWrapper = $(&#039;&amp;lt;div&amp;gt;&#039;).css({&lt;br /&gt;
                &#039;margin&#039;: &#039;15px 0&#039;,&lt;br /&gt;
                &#039;padding&#039;: &#039;12px&#039;,&lt;br /&gt;
                &#039;border&#039;: &#039;1px solid #ddd&#039;,&lt;br /&gt;
                &#039;background&#039;: &#039;#ffffff&#039;,&lt;br /&gt;
                &#039;border-radius&#039;: &#039;10px&#039;,&lt;br /&gt;
                &#039;box-shadow&#039;: &#039;0 4px 12px rgba(0,0,0,0.08)&#039;&lt;br /&gt;
            });&lt;br /&gt;
&lt;br /&gt;
            $mapWrapper.append(&#039;&amp;lt;div style=&amp;quot;font-weight:bold; font-size:0.9em; margin-bottom:10px; color:#444; display:flex; align-items:center;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                               &#039;&amp;lt;span style=&amp;quot;margin-right:8px;&amp;quot;&amp;gt;🗺️&amp;lt;/span&amp;gt;Pratinjau Lokasi : &#039; + locationText + &#039;&amp;lt;/div&amp;gt;&#039;);&lt;br /&gt;
&lt;br /&gt;
            // Embed URL dengan pencarian teks (Nominatim)&lt;br /&gt;
            var embedUrl = &amp;quot;https://www.openstreetmap.org/export/embed.html?layer=mapnik&amp;amp;q=&amp;quot; + encodeURIComponent(locationText);&lt;br /&gt;
&lt;br /&gt;
            var $iframe = $(&#039;&amp;lt;iframe&amp;gt;&#039;).attr({&lt;br /&gt;
                &#039;src&#039;: embedUrl,&lt;br /&gt;
                &#039;width&#039;: &#039;100%&#039;,&lt;br /&gt;
                &#039;height&#039;: &#039;280&#039;,&lt;br /&gt;
                &#039;frameborder&#039;: &#039;0&#039;,&lt;br /&gt;
                &#039;style&#039;: &#039;border-radius: 8px; border: 1px solid #eee;&#039;&lt;br /&gt;
            });&lt;br /&gt;
&lt;br /&gt;
            $mapWrapper.append($iframe);&lt;br /&gt;
            &lt;br /&gt;
            // Link eksternal yang lebih rapi&lt;br /&gt;
            var gMapsUrl = &amp;quot;https://www.google.com/maps/search/&amp;quot; + encodeURIComponent(locationText);&lt;br /&gt;
            $mapWrapper.append(&#039;&amp;lt;div style=&amp;quot;text-align:right; margin-top:8px;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                               &#039;&amp;lt;a href=&amp;quot;&#039; + gMapsUrl + &#039;&amp;quot; target=&amp;quot;_blank&amp;quot; style=&amp;quot;font-size:0.75em; color:#6a5acd; font-weight:bold; text-decoration:none; text-transform:uppercase; letter-spacing:0.5px;&amp;quot;&amp;gt;Buka di Google Maps →&amp;lt;/a&amp;gt;&amp;lt;/div&amp;gt;&#039;);&lt;br /&gt;
&lt;br /&gt;
            // Masukkan ke bawah section deskripsi otomatis&lt;br /&gt;
            if ($(&#039;#mip-desc-section&#039;).length) {&lt;br /&gt;
                $(&#039;#mip-desc-section&#039;).after($mapWrapper);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    });&lt;br /&gt;
})();&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
</feed>