<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

<!--
%QUERY%:		The original query before applying the rule without question mark, if the original query ends with a question mark
%FILE_i%:		File number i (i in [1, n]) from the original query
%FEATURE_i%:	Feature number i (i in [1, n]) from the original query
%FEATURES%:		All features from the original query
-->

<rules>
	<rule name="FeaturesRule">
		<priority>1</priority>
		<inputQuery>*1* IN App(%FILE_1%) ?</inputQuery>
		<outputQuery>
			*1* IN App(%FILE_1%) FEATURES { Arguments IN App(%FILE_1%) . } ?
		</outputQuery>
	</rule>

	<rule name="InterAppRule">
		<priority>1</priority>
		<inputQuery>Flows FROM App(%FILE_1%) TO App(%FILE_2%) *3*</inputQuery>
		<outputQuery>
			CONNECT [
				Flows IN App(%FILE_1%) *3*,
				Flows IN App(%FILE_2%) *3*,
				UNIFY [
					IntentSinks IN App(%FILE_1%) *3*,
					CONNECT [
						IntentFilters IN App(%FILE_2%) *3*,
						IntentSources IN App(%FILE_2%) *3*
					] ?
				] ?
			] ?
		</outputQuery>
	</rule>
	
	<rule name="NativeRule">
		<priority>0</priority>
		<priority feature="Native">1</priority>
		<inputQuery>Flows IN App(%FILE_1%) *1* ?</inputQuery>
		<outputQuery>
			UNIFY [
				Flows IN App(%FILE_1%) WITH 'SourcesAndSinks' = {
					TOFD [
						UNIFY [
							Sources IN App(%FILE_1%) FEATURING 'Final' ?,
							Sources IN App(%FILE_1%) USING 'NOAH' ?,
							Sinks IN App(%FILE_1%) FEATURING 'Final' ?,
							Sinks IN App(%FILE_1%) USING 'NOAH' ?
						] ?
					] !
				} ?,
				Flows IN App(%FILE_1%) USING 'NOAH' ?
			] ?
		</outputQuery>
	</rule>
	
	<rule name="ReflectionRule">
		<priority>0</priority>
		<priority feature="Reflection">1</priority>
		<inputQuery>*1* IN App(%FILE_1%) *2*</inputQuery>
		<outputQuery>*1* IN App(%FILE_1% | 'RESOLVE') FEATURING 'Final' ?</outputQuery>
	</rule>
</rules>